(57)【要約】【課題】  複数のプロセッサコアを有する装置において、少ない消費電力で、柔軟かつ効率的に処理を行うこと。【解決手段】  情報処理装置１は、ローカルメモリをそれぞれ備えたプロセッサコアが直列に接続され、各プロセッサコア間では、ＳＩレジスタおよびＳＯレジスタによってデータの入出力を行う。そのため、複数のプロセッサコア間で共有されるメモリへのアクセス待ちとなる状態を回避することができる。また、各プロセッサコアにおいては、実行するソフトウェアにより、柔軟に処理を変更することが可能である。この結果、複数のプロセッサコア間でメモリを共有する装置において同様の処理を実行する場合に比べ、処理効率および処理速度を向上させることが可能である。即ち、本発明によれば、複数のプロセッサコアを有する装置において、少ない消費電力で、柔軟かつ効率的に処理を行うことが可能となる。【選択図】  図１
2006285719.tif 000002
【特許請求の範囲】
【請求項１】
複数のプロセッサコアを備える情報処理装置であって、
前記プロセッサコアは、
入力された処理対象データを格納する入力データ格納手段と、
該プロセッサコアによる処理結果のデータを格納する出力データ格納手段と、
を備え、
一の前記プロセッサコアにおける前記出力データ格納手段と、他の前記プロセッサコアにおける前記入力データ格納手段とが接続されることにより、前記複数のプロセッサコアが、直列に接続されていることを特徴とする情報処理装置。
【請求項２】
前記複数のプロセッサコアは、処理を行う際に使用するローカルメモリをそれぞれ備えていることを特徴とする請求項１記載の情報処理装置。
【請求項３】
前記入力データ格納手段は、入力されたデータを記憶する入力データ用レジスタと、該レジスタに対するデータの読み出しあるいは書き込みを制御する入力通信制御手段とを備え、
前記入力通信制御手段は、該プロセッサコアが前記入力データ用レジスタの読み出しを行った際に、データが記憶されていない場合には、該プロセッサコアにおける演算処理を待機状態とさせることを特徴とする請求項１または２記載の情報処理装置。
【請求項４】
前記出力データ格納手段は、処理結果のデータを記憶する出力データ用レジスタと、該レジスタに対するデータの読み出しあるいは書き込みを制御する出力通信制御手段とを備え、
前記出力通信制御手段は、前記出力データ用レジスタに記憶されたデータを読み出して外部に出力している場合には、該プロセッサコアにおける演算処理を待機状態とさせることを特徴とする請求項１から３のいずれか１項に記載の情報処理装置。
【請求項５】
複数のプロセッサコアを備える情報処理装置における情報処理方法であって、
前記複数のプロセッサコアそれぞれに、接続された各プロセッサコア間においてデータを直接入出力するためのデータ入出力手段と、各プロセッサコアが専用に使用するメモリとを備えておき、前記複数のプロセッサコアを直列に接続し、各プロセッサコアに、パイプライン処理可能な所定処理を行わせて、前記データ入出力手段によってデータを後段のプロセッサコアに順次転送することにより、一連の前記所定処理を行うことを特徴とする情報処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のプロセッサコアを有するマルチプロセッサを備えた情報処理装置および情報処理方法に関する。
【背景技術】
【０００２】
近年、いわゆる情報家電を始めとして、複雑なデジタル処理を要求する機器が多数利用されつつあり、このような機器においては、コストと性能・消費電力を両立することが求められている。
また、このような機器においては、多様なデジタル処理（例えば、画像処理、映像処理、音声処理あるいはデータ圧縮・復号処理等）を行うことが要求されるが、その規格は頻繁に変更される状況にある。
【０００３】
そのため、高性能化のために専用のハードウェアを実装してデジタル処理を行うと、規格の変更に対応させる場合に多大なコストを要することとなる。
ところで、近年、ＬＳＩ製造技術の進歩により、１つのＡＳＩＣ（Application Specific Integrated Circuit）に複数のプロセッサコアや小容量のメモリを搭載することが可能となっている。
【０００４】
そのため、従来、単一のプロセッサコアで行っていた処理を複数のプロセッサコアによって行うことにより、性能を向上させることが期待される。
このように、プロセッサの性能向上により上記デジタル処理を高速化する場合には、ソフトウェアの変更により規格の変更に対して柔軟に対応することができ、上記デジタル処理を行うために適した装置を実現することができる。
【０００５】
なお、複数のプロセッサコアを備えることにより、専用のハードウェアを用いることなく、ソフトウェアによって処理を行う技術は、例えば、特許文献１〜３等に記載されている。
【特許文献１】特開平５−２１０６４０号公報
【特許文献２】特開平８−１０１８１０号公報
【特許文献３】特開平１１−１８４８２４号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかしながら、特許文献１〜３に記載された技術を含め、従来提案されているような、複数のプロセッサコアによって処理を行う技術においては、専用のハードウェアを、プロセッサとメモリとによって置き換え、ソフトウェアによりデジタル処理を行うものとしているが、複数のプロセッサコアが１つのメモリを共有し、その共有メモリを介してデータの受け渡しを行う構成とされている。
【０００７】
そのため、複数のプロセッサコア間でメモリアクセスの調停が行われることから、プロセッサコアにおける処理が待機状態となる期間が発生し、期待される性能が実現できないものとなっていた。
なお、特許文献１〜３に記載された技術においては、このような不具合を軽減するために各種手法を採用しているが、複数のプロセッサコアがメモリを共有する構成は維持されているため、抜本的な改善策であるとはいえなかった。また、改善のための回路や制御手順が大掛かりなものとなるため、特に消費電力の削減が求められている情報家電においては、消費電力の増加が課題となった。
【０００８】
本発明の課題は、複数のプロセッサコアを有する装置において、少ない消費電力で、柔軟かつ効率的に処理を行うことである。
【課題を解決するための手段】
【０００９】
以上の課題を解決するため、本発明は、
複数のプロセッサコアを備える情報処理装置であって、前記プロセッサコアは、入力された処理対象データを格納する入力データ格納手段（例えば、図２のＳＩ通信回路２１ｂおよびＳＩレジスタ２２ｂ−１）と、該プロセッサコアによる処理結果のデータを格納する出力データ格納手段（例えば、図２のＳＯレジスタ２２ｂ−２およびＳＯ通信回路２８ｂ）とを備え、一の前記プロセッサコアにおける前記出力データ格納手段と、他の前記プロセッサコアにおける前記入力データ格納手段とが接続されることにより、前記複数のプロセッサコアが、直列に接続されていることを特徴としている。
【００１０】
このような構成により、複数のプロセッサコア間でメモリを共有した場合に、プロセッサコア間でデータを受け渡すために、共有されるメモリへのアクセス待ちとなる状態を回避することができ、各プロセッサコアにおいては、実行するソフトウェアにより、柔軟に処理を変更することが可能となる。
そのため、複数のプロセッサコアを備える装置において、処理効率および処理速度を向上させることが可能である。
【００１１】
即ち、本発明によれば、複数のプロセッサコアを有する装置において、少ない消費電力で、柔軟かつ効率的に処理を行うことが可能となる。
また、前記複数のプロセッサコアは、処理を行う際に使用するローカルメモリ（例えば、図１のローカルメモリ３０ａ〜３０ｄ）をそれぞれ備えていることを特徴としている。
このような構成により、処理を行う際に使用するメモリを他のプロセッサコアと共有しないことから、処理を行うためにメモリへのアクセスを待つ必要がなく、処理速度を向上させることができる。
【００１２】
また、前記入力データ格納手段は、入力されたデータを記憶する入力データ用レジスタ（例えば、図２のＳＩレジスタ２２ｂ−１）と、該レジスタに対するデータの読み出しあるいは書き込みを制御する入力通信制御手段（例えば、図２のＳＩ通信回路２１ｂ）とを備え、前記入力通信制御手段は、該プロセッサコアが前記入力データ用レジスタの読み出しを行った際に、データが記憶されていない場合には、該プロセッサコアにおける演算処理を待機状態とさせることを特徴としている。
【００１３】
このような構成により、入力データが取得できない場合に、プロセッサコアがデータの取得状態をポーリングすることなく、入力通信制御手段によって自動的に待機状態とされるため、消費電力を低減することが可能となる。
また、前記出力データ格納手段は、処理結果のデータを記憶する出力データ用レジスタ（例えば、図２のＳＯレジスタ２２ｂ−２）と、該レジスタに対するデータの読み出しあるいは書き込みを制御する出力通信制御手段（例えば、図２のＳＯ通信回路２８ｂ）とを備え、前記出力通信制御手段は、前記出力データ用レジスタに記憶されたデータを読み出して外部に出力している場合には、該プロセッサコアにおける演算処理を待機状態とさせることを特徴としている。
【００１４】
このような構成により、出力データを出力している場合に、プロセッサコアがデータの出力状態をポーリングすることなく、出力通信制御手段によって自動的に待機状態とされるため、消費電力を低減することが可能となる。
また、本発明は、
複数のプロセッサコアを備える情報処理装置における情報処理方法であって、前記複数のプロセッサコアそれぞれに、接続された各プロセッサコア間においてデータを直接入出力するためのデータ入出力手段と、各プロセッサコアが専用に使用するメモリとを備えておき、前記複数のプロセッサコアを直列に接続し、各プロセッサコアに、パイプライン処理可能な所定処理を行わせて、前記データ入出力手段によってデータを後段のプロセッサコアに順次転送することにより、一連の前記所定処理を行うことを特徴としている。
【００１５】
これにより、複数のプロセッサコアによって、ソフトウェアによるパイプライン処理を行うことができる。
このように、本発明によれば、複数のプロセッサコアを有する装置において、少ない消費電力で、柔軟かつ効率的に処理を行うことが可能となる。
【発明を実施するための最良の形態】
【００１６】
以下、図を参照して本発明に係る情報処理装置の実施の形態を説明する。
まず、構成を説明する。
図１は、本発明に係る情報処理装置１の機能構成を示すブロック図である。
図１において、情報処理装置１は、データインターフェース１０と、プロセッサコア２０ａ〜２０ｄと、ローカルメモリ３０ａ〜３０ｄとを含んで構成され、データインターフェース１０を介して、不図示のＣＰＵ（Central Processing Unit）、ＲＯＭ（Read Only Memory）、ＲＡＭ（Random Access Memory）、入出力装置（Ｉ／Ｏ）等と接続されている。
【００１７】
データインターフェース１０は、情報処理装置１がデータの入出力を行うためのインターフェース回路であり、情報処理装置１と接続されたＣＰＵ、ＲＯＭあるいはＲＡＭ等から入力されたデータをプロセッサコア２０ａに入力すると共に、プロセッサコア２０ｄから出力されたデータをＣＰＵあるいはＲＡＭ等に出力する。
プロセッサコア２０ａ〜２０ｄは、処理対象データの入力を受け付けるためのＳＩレジスタと、処理結果のデータを出力するためのＳＯレジスタとを備えており、それぞれのプロセッサコアは、初期設定あるいはＣＰＵからの命令によって設定された所定の処理を行う。
【００１８】
メモリ３０ａ〜３０ｄは、プロセッサコア２０ａ〜２０ｄそれぞれに備えられたローカルメモリであり、プロセッサコア２０ａ〜２０ｄにおいて処理が実行される際にワークエリアを形成する。
ここで、プロセッサコア２０ａ〜２０ｄの内部構成について説明する。
なお、プロセッサコア２０ａ〜２０ｄの内部構成は同様であるため、代表としてプロセッサコア２０ｂを例に挙げて説明する。
【００１９】
図２は、プロセッサコア２０ｂの内部構成を示すブロック図である。
図２において、プロセッサコア２０ｂは、ＳＩ通信回路２１ｂと、レジスタファイル２２ｂと、演算回路２３ｂと、周辺回路２４ｂと、メモリコントローラ２５ｂと、キャッシュ２６ｂと、プログラム制御回路２７ｂと、ＳＯ通信回路２８ｂとを含んで構成される。
ＳＩ通信回路２１ｂは、プロセッサコア２０ｂにデータを入力するための入力端子からデータの入力を受け付け、通信制御を行って、後述するＳＩレジスタ２２ｂ−１にデータを書き込む。
【００２０】
また、ＳＩ通信回路２１ｂは、演算回路２３ｂによってＳＩレジスタの読み出しが行われた際に、ＳＩレジスタにデータが格納されていない状態である場合、プログラム制御回路２７ｂに対し、動作を一時的に停止させるためのウェイト信号を出力する。
レジスタファイル２２ｂは、プロセッサコア２０ｂに入力されたデータを書き込むためのＳＩレジスタ２２ｂ−１と、プロセッサコア２０ｂから出力するデータを書き込むためのＳＯレジスタ２２ｂ−２と、プロセッサコア２０ｂにおいて演算を行う際の演算対象あるいは演算結果のデータを書き込むための汎用レジスタ２２ｂ−３とを含んで構成される。
【００２１】
演算回路２３ｂは、プログラム制御回路２７ｂの制御の下、レジスタファイル２２ｂに記憶された処理対象のデータに対し、加算、乗算等の数値演算や、各種論理演算を施し、処理結果をレジスタファイル２２ｂに書き戻す。
周辺回路２４ｂは、コプロセッサ等、必要に応じて備えられる各種回路である。
メモリコントローラ２５ｂは、ローカルメモリ３０ｂに対するアクセス、即ち、データの読み出しや書き込みを制御する。例えば、メモリコントローラ２５ｂは、演算回路２３ｂによって指定されたローカルメモリ３０ｂのアドレスからデータを読み出したり、ローカルメモリ３０ｂから読み出されたデータをレジスタファイル２２ｂに出力したりする。
【００２２】
キャッシュ２６ｂは、ローカルメモリ３０ｂとの間で入出力されるデータを一時的にキャッシュしておくためのキャッシュメモリである。
プログラム制御回路２７ｂは、プロセッサコア２０ｂ全体を制御するものであり、例えば、実行する命令の管理やステータスの変更等、プロセッサコア２０ｂにおける動作状態の管理等を行う。
【００２３】
また、プログラム制御回路２７ｂは、ＳＩ通信回路２１ｂあるいはＳＯ通信回路２８ｂからウェイト信号が入力されると、プロセッサコア２０ｂの動作を待機状態とし、ウェイト信号が解除された場合に動作を再開させる。
ＳＯ通信回路２８ｂは、プロセッサコア２０ｂからデータを出力するための出力端子に対し、通信制御を行って、ＳＯレジスタ２２ｂ−２に書き込まれたデータを出力する。
【００２４】
また、ＳＯ通信回路２８ｂは、演算回路２３ｂによってＳＯレジスタにデータが書き込まれた状態である場合、プログラム制御回路２７ｂに対し、動作を一時的に停止させるためのウェイト信号を出力する。
次に、動作を説明する。
上述の構成を有するプロセッサコア２０ａ〜２０ｂは、それぞれのＳＩ通信回路およびＳＩレジスタと、ＳＯ通信回路およびＳＯレジスタとによって、互いに接続された隣接するプロセッサコアとデータの入出力を行い、複数のプロセッサコアを用いて、ソフトウェアによるパイプライン処理を実現する。
【００２５】
即ち、プロセッサコア２０ａ〜２０ｄは、隣接する上流側のプロセッサコアから入力されたデータに対し、それぞれ設定された所定処理を行い、下流側のプロセッサコアに順次データを引き渡す。
図３は、ＳＩ通信回路とＳＯ通信回路とにおけるデータの入出力を示すタイミングチャートである。
【００２６】
図３において、データ出力側のＳＯ通信回路とデータ入力側のＳＩ通信回路とは、データを転送するためのデータ信号線、データ転送の有効・無効の状態を示すＶａｌｉｄ信号線、データ転送結果の確認を示すＡｃｋ信号線によって接続されている。
データ入力側のプロセッサコアは、データの処理が可能な状態になると、まず、ＳＩレジスタからデータの読み出しを試みる。
【００２７】
このとき、ＳＩレジスタにデータが格納されていない場合には、処理を進行できないことから、プログラム制御回路２７ｂに対し、ウェイト信号を出力する。
そして、データ出力側のプロセッサコアがデータを出力できる状態になると、まず、ＳＯレジスタにデータを格納する。
次いで、データ出力側のプロセッサコアは、データ信号線にＳＯレジスタのデータを示す信号を出力すると共に、Ｖａｌｉｄ信号線をハイレベルの状態（データ転送が有効である状態）とする。このとき、ＳＯ通信回路は、プログラム制御回路に対し、ウェイト信号を出力する（図３における状態（１））。
【００２８】
受信側のＳＩ通信回路は、Ｖａｌｉｄ信号線がハイレベルの状態であることを検出すると、データ信号線からデータを取り込み、ＳＩレジスタに格納すると共に、Ａｃｋ信号線をハイレベルの状態（データ転送に成功したことを示す状態）として、送信側のＳＯ通信回路にデータ転送の成功を通知する。また、受信側のＳＩ通信回路は、ここでウェイト信号を解除し、受信側のプロセッサコアにおける動作を再開させる（図３における状態（２））。
【００２９】
続いて、送信側のＳＯ通信回路が、Ａｃｋ信号線がハイレベルの状態であることを検出すると、Ｖａｌｉｄ信号線をローレベルの状態（データ転送が無効であることを示す状態）に戻し、ウェイト信号を解除して、送信側のプロセッサコアにおける動作を再開させる（図３における状態（３））。
さらに、受信側のＳＩ通信回路は、Ｖａｌｉｄ信号線がローレベルの状態であることを検出すると、Ａｃｋ信号線をローレベルの状態に戻し、データ転送が終了する（図３における状態（４））。
【００３０】
このように、プロセッサコア２０ａ〜２０ｄは、ソフトウェアによりＳＩレジスタへのデータ入力あるいはＳＯレジスタからのデータ出力の有無をポーリングすることなく、ＳＩ通信回路あるいはＳＯ通信回路の通信制御によって、自動的に動作の停止、再開が行われる。
続いて、情報処理装置１における各プロセッサコアの動作について説明する。
【００３１】
図４は、各プロセッサコアが実行する処理を示すフローチャートである。
各プロセッサコアは、初期設定あるいはＣＰＵからの命令によって設定された所定の処理を、上流のプロセッサコア等から入力されたデータに順次施し、下流のプロセッサコア等に出力する。
ここで、各プロセッサコアが実行する処理は、例えば、情報処理装置１がフォントの描画を行う装置であれば、制御点の座標計算、レンダリング、ラスタライズ、ＶＲＡＭへの書き込みといった処理であり、各プロセッサがこれらの処理を専用に行うことにより、ソフトウェアによるパイプライン処理が実現される。
【００３２】
図４において、処理の実行が指示されると、プロセッサコアは、ループの初期化（パラメータのリセット等）を実行し（ステップＳ１）、ＳＩレジスタから処理対象のデータを読み出す（ステップＳ２）。
次いで、プロセッサコアは、ローカルメモリにアクセスしつつ、読み出したデータに対し、設定されている所定処理を施し（ステップＳ３）、処理結果をＳＯレジスタに書き込む（ステップＳ４）。
【００３３】
そして、プロセッサコアは、ループの終了であるか否か、即ち、処理の終了が指示されたか否かの判定を行い（ステップＳ５）、ループの終了でないと判定した場合には、ステップＳ２の処理に移行し、ループの終了であると判定した場合には、処理を終了する。
このように、各プロセッサコアにおいて、ポーリング等を行うことなく、単純に処理を繰り返す動作とすることができる。
【００３４】
以上のように、本実施の形態に係る情報処理装置１は、ローカルメモリをそれぞれ備えたプロセッサコアが直列に接続され、各プロセッサコア間では、ＳＩレジスタおよびＳＯレジスタによってデータの入出力を行う。
そのため、複数のプロセッサコア間で共有されるメモリへのアクセス待ちとなる状態を回避することができる。
【００３５】
また、各プロセッサコアにおいては、実行するソフトウェアにより、柔軟に処理を変更することが可能である。
この結果、複数のプロセッサコア間でメモリを共有する装置において同様の処理を実行する場合に比べ、処理効率および処理速度を向上させることが可能である。また、メモリの調停を行うための信号制御やプロセッサコアの待ち時間が無くなるため、消費電力を減らすことが可能となる。
【００３６】
図５は、複数のプロセッサコア間でメモリを共有する装置における場合と、本発明に係る情報処理装置１における場合との処理時間を比較する概念図である。
図５において、複数のプロセッサコア間でメモリを共有する装置の場合、前段の処理結果が、共有メモリを介して後段のプロセッサコアに渡されるため、共有メモリに対して、前段のプロセッサコアが処理結果を書き込む動作と、後段のプロセッサコアが処理対象データを読み出す動作とを並列に行うことができない。
【００３７】
そのため、各処理はシリアルに実行されることとなり、図５に示す動作全体として、３６サイクルを要している。
一方、本発明に係る情報処理装置１の場合、前段の処理結果がＳＯレジスタおよびＳＩレジスタを介して後段のプロセッサコアに渡されるため、前段のプロセッサコアが処理結果を出力する動作と、後段のプロセッサコアが処理対象データを受け取る動作とを並列に実行することができる。
【００３８】
そのため、各処理は、並列的にパイプライン処理されることとなり、図５に示す動作全体として、１５サイクルとなる。また、ＳＯレジスタおよびＳＩレジスタを介してデータを送受信する処理は、共有メモリに対するデータの書き込みあるいは読み出しよりも短期間であるため、処理時間をより短いものとすることが可能である。
このように、本発明によれば、複数のプロセッサコアを有する装置において、少ない消費電力で、柔軟かつ効率的に処理を行うことが可能となる。
【図面の簡単な説明】
【００３９】
【図１】本発明に係る情報処理装置１の機能構成を示すブロック図である。
【図２】プロセッサコア２０ｂの内部構成を示すブロック図である。
【図３】ＳＩ通信回路とＳＯ通信回路とにおけるデータの入出力を示すタイミングチャートである。
【図４】各プロセッサコアが実行する処理を示すフローチャートである。
【図５】複数のプロセッサコア間でメモリを共有する装置における場合と、本発明に係る情報処理装置１における場合との処理時間を比較する概念図である。
【符号の説明】
【００４０】
１  情報処理装置、１０  データインターフェース、２０ａ〜２０ｄ  プロセッサコア、３０ａ〜３０ｄ  ローカルメモリ、２１ａ〜２１ｄ  ＳＩ通信回路、  ２２ａ〜２２ｄ  レジスタファイル、２２ａ−１〜２２ｄ−１  ＳＩレジスタ、２２ａ−２〜２２ｄ−２  ＳＯレジスタ、２３ａ−１〜２３ｄ−１  汎用レジスタ、２３ａ〜２３ｄ  演算回路、２４ａ〜２４ｄ  周辺回路、２５ａ〜２５ｄ  メモリコントローラ、２６ａ〜２６ｄ  キャッシュ、２７ａ〜２７ｄ  プログラム制御回路
【図１】
2006285719.tif 000003
【図２】
2006285719.tif 000004
【図３】
2006285719.tif 000005
【図４】
2006285719.tif 000006
【図５】
2006285719.tif 000007