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