(57)【要約】【課題】複数のプロセッサを含むＬＳＩチップ積層システムにおいて、チップ間の多数の信号線を好適に利用することを可能とするＬＳＩチップ積層システムを提供する。【解決手段】ＬＳＩチップ積層システム１００は、画像データに対するプロセスを実行可能な１以上のプロセッサ１４０が搭載された複数のプロセッサチップ１１０と、プロセッサ１４０が入力及び出力する画像データを記憶することのできるメモリを含むメモリチップ１２０と、互いに積層された複数のプロセッサチップ１１０及びメモリチップ１２０の間を、通信可能に接続する複数の信号線を含む超並列貫通バス１３０とを含む。複数のプロセッサチップ１１０は、超並列貫通バス１３０を介して、メモリチップ１２０に記憶された画像データを同時に読み込み、複数のプロセッサチップ１１０上のプロセッサ１４０で実行される各プロセスは、それぞれ画像データを処理する。【選択図】図９
2015176435.tif 000002
【特許請求の範囲】
【請求項１】
画像データに対するプロセスを実行可能な１以上のプロセッサが搭載された複数のプロセッサチップと、
前記プロセッサが入力及び出力する画像データを記憶することのできるメモリを含むメモリチップと、
互いに積層された複数の前記プロセッサチップ及び前記メモリチップの間を、通信可能に接続する複数の信号線を含む貫通バスと
を含むＬＳＩチップ積層システムであって、
複数の前記プロセッサチップは、前記貫通バスを介して、前記メモリチップに記憶された画像データを同時に読み込み、
複数の前記プロセッサチップ上の前記プロセッサで実行される各プロセスは、
それぞれ画像データを処理する、
ＬＳＩチップ積層システム。
【請求項２】
前記貫通バスは、複数の物理的通信チャネルに分けられており、また、各物理的通信チャネルは、更に複数の論理的通信チャネルに分けられる、
請求項１記載のＬＳＩチップ積層システム。
【請求項３】
前記複数の論理的通信チャネルは、通信に使用するタイムスロットにより定義される、請求項２記載のＬＳＩチップ積層システム。
【請求項４】
前記プロセッサで実行される各プロセスは、制御プロセスとの間で制御メッセージを通信し、
前記制御プロセスは、前記プロセッサで実行される各プロセスの同期を取る、
請求項１乃至請求項３のいずれか１項記載のＬＳＩチップ積層システム。
【請求項５】
前記プロセッサで実行される各プロセスに対する制御メッセージの通信に対して、前記画像データの通信に用いられる論理的チャネルとは別の論理的通信チャネルが割り当てられる、
請求項１乃至請求項４のいずれか１項記載のＬＳＩチップ積層システム。
【請求項６】
複数の前記プロセッサチップ上の前記プロセッサで実行される各プロセスはそれぞれ、異なる倍率により画像データを変換し、これにより複数のサイズの画像データが生成される、
請求項１乃至請求項５のいずれか１項記載のＬＳＩチップ積層システム。
【請求項７】
前記プロセッサチップはチップ内メモリを有し、
前記画像データが記憶されるバッファを、前記メモリチップに割り当てるか、前記メモリ内チップに割り当てるかを選択する、
請求項１乃至請求項６のいずれか１項記載のＬＳＩチップ積層システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明に係るいくつかの態様は、ＬＳＩチップ積層システムに関する。
【背景技術】
【０００２】
接続仕様を標準化したＬＳＩチップを必要に応じて積層してシステムを構築する手法では、要求にあったシステムを容易に低コストで実現可能である。また、チップ積層によりシステムをコンパクトに実装すると、チップ間の信号の伝送容量や遅延、消費電力などをチップ内の値に近づけることが可能となるため、結果としてシステム全体の動作速度を向上させ、また消費電力を低減させることが可能となる。また、積層チップ間の接続を貫通バスで行うことにより、例えば１０００本以上の信号線でＬＳＩ間を接続することができる。
【０００３】
このような１０００本以上の多数の信号線を有効に活用してチップ間の通信を行うアプリケーションとしては、例えば画像データを複数のチップのプロセッサ間に対して受け渡して、それぞれのプロセッサで分散して並列処理することが考えられる。しかしながら、処理の全ての段階で全ての信号線を使用した通信が必要となることは稀である。
【０００４】
また、複数の処理のそれぞれを複数のプロセッサが分担する場合、各処理の稼働状況及び通信状況は、一般的にはアプリケーションの入力データに依存する。そのため、システム実行時には、処理量や通信量に不均衡が生じる。より具体的には、例えば、一部の通信量が増加してアプリケーションに要求される通信時間制約を満たせなくなる一方で、別の場所では通信に余裕があるという状況が起こり得る。
【０００５】
そのため、ＬＳＩチップ積層システムの処理対象アプリケーションにおいて、処理に応じて必要な通信路を割り当て、多数の信号線を有効に活用する方法が求められている。
【０００６】
チップ積層システムに関する先行技術としては、例えば特許文献１に開示されたものがある。特許文献１に記載されている技術は、チップ積層システムのチップ間のバス信号線とスイッチとの接続方法に関するものであって、論理的に複数の通信を同時に行うシステムについての技術である。
【０００７】
また、並列システムを実行する方法は、例えば特許文献２に開示されている。特許文献２に記載された技術は、ヘテロジニアス・マルチコアプロセッサにおけるソフトウェアの並列実行方式に関するものであって、ソフトウェアを実行するプロセッサの割り当てに関するものである。
【０００８】
並列システムを設計する際のプログラミングの方法としては、例えば非特許文献１及び非特許文献２において原理的なプログラミングモデルが示された、ＫＰＮ（Ｋａｈｎ  Ｐｒｏｃｅｓｓ  Ｎｅｔｗｏｒｋ）モデルを用いた設計が考えられている。
非特許文献３においては、データフロー型プロセスネットワークの総説がなされており、それらの中でＫＰＮの位置づけが示されている。
【０００９】
非特許文献４では、システム設計者がＫＰＮを用いて容易にプロセスネットワークを設計し、実行可能なソフトウェアを出力することができる設計ツールについて述べられており、その設計手法はＣｏｍｐａａｎ／Ｌａｕｒａのアプローチと名付けられている。このツールでは、Ｃ言語によるＹＡＰＩというプログラミングインタフェースを用いたプロセスネットワークの設計が可能であり、各プロセスの実装にはＣ言語のソフトウェアもしくはＦＰＧＡ上のハードウェアを用いることが想定されている。更に、ＪＰＥＧ画像圧縮方式のアルゴリズムのＫＰＮをＦＰＧＡにマッピングする事例も非特許文献４には開示されている。
【００１０】
非特許文献５では、車載用画像認識アプリケーションのＫＰＮをＦＰＧＡ上にマッピングして、高性能な画像認識処理を行う事例が示されている。当該非特許文献５では、各プロセスは固定的なデータフローのＫＰＮだけではなく、制御のためのメッセージを伝えるためのＣｏｎｔｒｏｌ  ＢＵＳを持つことで、状況に応じたシステムのパラメータ調整が可能であることも示されている。
【００１１】
非特許文献６においては、ＫＰＮをＮｏＣ（ネットワークオンチップ）プラットフォームにマッピングする手法が示されており、ここでは４ステップでのマッピングが提案されている。当該マッピング手法では、１つ目のステップにおいて各プロセスの機能（入力に応じて出力を計算する）を実装し、２つ目のステップにおいて、通信路の論理的若しくは物理的な割り当てを行う。３つ目のステップにおいてＮｏＣのトポロジ（各プロセッサの接続状況）を決定し、４つ目のステップにおいて、プロセス間通信用ＦＩＦＯバッファの割り当てを行う。ただし、このアプローチは、アプリケーションのＫＰＮに応じてＮｏＣを設計するものである。また、ステップ２の通信路の割り当てや、ステップ４のＦＩＦＯバッファの割り当てについての具体的な手法は示されていない。
【先行技術文献】
【特許文献】
【００１２】
【特許文献１】特開２０１１−１１３５１６号公報
【特許文献２】特開２０１１−０２８７０５号公報
【非特許文献１】G. Kahn、 "The semantics of a simple language for parallel programming、" Proc. of the IFIP Congress 74. North-Holland Publishing Co.、 1974
【非特許文献２】Kahn、 Gilles、 and David MacQueen. "Coroutines and networks of parallel processes." (1976).
【非特許文献３】Lee、 Edward A.、 and Thomas M. Parks. "Dataflow process networks." Proceedings of the IEEE 83.5 (1995): 773-801.
【非特許文献４】Stefanov、 Todor、 et al. "System design using Khan process networks: the Compaan/Laura approach." Design、 Automation and Test in Europe Conference and Exhibition、 2004. Proceedings. Vol. 1. IEEE、 2004.
【非特許文献５】Nikolov、 Hristo、 Todor Stefanov、 and Ed Deprettere. "Modeling and FPGA implementation of applications using parameterized process networks with non-static parameters." Field-Programmable Custom Computing Machines、 2005. FCCM 2005. 13th Annual IEEE Symposium on. IEEE、 2005.
【非特許文献６】Nejad、 Ashkan Beyranvand、 et al. "Mapping kpn models of streaming applications on a network-on-chip platform." ProRISC 2009: Proceedings of the Workshop on Signal Processing、 Integrated Systems and Circuits. 2009.
【発明の概要】
【発明が解決しようとする課題】
【００１３】
しかしながら、ＬＳＩチップ積層システムは、複数のプロセッサとチップ間をつなぐ通信路を含んでいるが、通信路をどのように使用するかについて、従来は具体的な検討が十分になされていなかった。そのため、複数のチップに配置されたプロセッサ間の通信における、データ通信容量の保証や通信データの到達最大遅延時間の保証が難しく、大容量のデータ通信を行いながらもリアルタイム性が要求されるシステムの設計が困難であるという課題があった。
【００１４】
本発明のいくつかの態様は前述の課題に鑑みてなされたものであり、複数のプロセッサを含むＬＳＩチップ積層システムにおいて、チップ間の多数の信号線を好適に利用することを可能とするＬＳＩチップ積層システムを提供することを目的の１つとする。
【課題を解決するための手段】
【００１５】
本発明に係るＬＳＩチップ積層システムは、画像データに対するプロセスを実行可能な１以上のプロセッサが搭載された複数のプロセッサチップと、前記プロセッサが入力及び出力する画像データを記憶することのできるメモリを含むメモリチップと、互いに積層された複数の前記プロセッサチップ及び前記メモリチップの間を、通信可能に接続する複数の信号線を含む貫通バスとを含むＬＳＩチップ積層システムであって、複数の前記プロセッサチップは、前記貫通バスを介して前記メモリチップに記憶された画像データを同時に読み込み、複数の前記プロセッサチップ上の前記プロセッサで実行される各プロセスは、それぞれ前記画像データを処理する。
【００１６】
なお、本発明において、「部」や「手段」、「装置」、「システム」とは、単に物理的手段を意味するものではなく、その「部」や「手段」、「装置」、「システム」が有する機能をソフトウェアによって実現する場合も含む。また、１つの「部」や「手段」、「装置」、「システム」が有する機能が２つ以上の物理的手段や装置により実現されても、２つ以上の「部」や「手段」、「装置」、「システム」の機能が１つの物理的手段や装置により実現されても良い。
【図面の簡単な説明】
【００１７】
【図１】本発明の実施形態に係る画像認識処理のプロセスネットワークの構成例を示す図である。
【図２】縮小画像の倍率と解像度の具体例を示す図である。
【図３】逐次反復による縮小処理のプロセスネットワークの構成例を示す図である。
【図４】個別倍率による縮小処理のプロセスネットワークの構成例を示す図である。
【図５】逐次反復による縮小処理のプロセスネットワークにおける通信量の例を示す図である。
【図６】個別倍率による縮小処理のプロセスネットワークにおける通信量の例を示す図である。
【図７】従来システムにおける縮小処理の各プロセスの処理時間の測定結果を示す図である。
【図８】従来システムにおけるデータの入出力の構成例を示す図である。
【図９】本実施形態に係るＬＳＩチップ積層システムの概略構成の具体例を示す図である。
【図１０】逐次反復による縮小処理を図９に示すＬＳＩチップ積層システムにマッピングした例を示す図である。
【図１１】画像データの読み取り順について説明するための図である。
【図１２】超並列貫通バスへの画像通信の割当て例を示す図である。
【図１３】仮想通信チャネルの時分割による割当て例を示す図である。
【図１４】個別倍率による縮小処理を図９に示すＬＳＩチップ積層システムにマッピングした例を示す図である。
【図１５】個別倍率による縮小処理に係る超並列貫通バスへの画像通信の割当て例を示す図である。
【図１６】個別倍率及びブロードキャストによる縮小処理のプロセスネットワークにおける通信量の例を示す図である。
【図１７】個別倍率及びブロードキャストに係る超並列貫通バスへの画像通信の割当て例を示す図である。
【図１８】各プロセスネットワークのＬＳＩチップ積層システムへのマッピングにおける通信量の比較を示す図である。
【図１９】各プロセスネットワークのＬＳＩチップ積層システムへのマッピングにおける通信量の比較を示す図である。
【図２０】同期処理を含む縮小処理のプロセスネットワークの具体例を示す図である。
【図２１】各プロセスネットワークをＬＳＩチップ積層システムへマッピングした際の消費電力の試算の比較を示す図である。
【発明を実施するための形態】
【００１８】
以下に本発明の実施形態を説明する。以下の説明及び参照する図面の記載において、同一又は類似の構成には、それぞれ同一又は類似の符号が付されている。
【００１９】
ここで説明する一実施形態は、１以上のプロセッサが搭載されたプロセッサチップが複数積層されたＬＳＩチップ積層システムに係る。ＬＳＩチップ積層システムに含まれる各プロセッサチップは、各プロセッサチップ間を貫通する数千に及ぶビア（信号線）を介して高速に通信できる。以下では、これら貫通ビアからなる信号線の束を超並列貫通バスとも呼ぶ。
【００２０】
ＬＳＩチップ積層システムは、各層のプロセッサにより並列処理を行うとともに、各層のプロセッサ間で高速にデータを送受信することができることから、様々な用途に用いることができる。例えば、ＬＳＩチップ積層システムを用いれば、複数の静止画像の組み合わせにより構成される動画像に対する画像処理を、各層に含まれる各プロセッサを用いた並列処理により高速に、且つ超並列貫通バスの一特徴でもある低消費電力で、実行できる。当該画像処理においては、例えばＫＰＮ（Ｋａｈｎ  Ｐｒｏｃｅｓｓ  Ｎｅｔｗｏｒｋ）モデルを用いて、各プロセッサで独立して動作可能なプロセスの組み合わせが設計される。
【００２１】
画像処理の具体例としては、例えば画像認識処理がある。画像認識処理により、例えば自動車走行時に車載カメラの画像をもとに道路、歩行者、他車等を認識することができるようになるので、安全性を向上させることができる。また、動画像から特定の事象を検出するビデオマイニング処理、防犯カメラにおける異常事態の検知や、独居老人の見守りなどに、画像認識処理を用いることもできる。
【００２２】
画像認識処理にＫＰＮモデルを用いる場合には、画像認識処理全体としては、図１に示すようなＫＰＮ構成が考えられる。図１において、丸で示されている処理Ｐ１乃至Ｐ６は、それぞれ独立して動作可能なプロセスに相当し、例えばプログラミングモジュールとしてＬＳＩチップ積層システムに実装することができる。
【００２３】
この画像認識処理システムは、入力画像に対して前処理（Ｐ１）を行った後、様々なサイズの画像を生成する縮小画像生成（Ｐ２）を行う。その後、画像認識処理システムは、生成された様々なサイズの縮小画像から、例えば線の曲がり角等の画像中の特徴点の抽出（Ｐ３）を行い、それぞれの特徴点についてどのような特徴を持つかを示す特徴量を計算する（Ｐ４）。その結果得られた特徴量について、データベースとのマッチングや機械学習（Ｐ５）を行い、最終的な画像認識結果を出力する（Ｐ６）。それぞれのプロセスは、コントローラプロセス２０から制御される。
【００２４】
コントローラプロセス２０は、画像認識処理システムを構成する複数のプロセスの処理及びプロセス間の通信手順を記述することによりシステムの動作を記述する。また、コントローラプロセス２０は、実行時に、ＬＳＩチップ積層システムに含まれる各プロセッサに対して各プロセスを割り当て、また、プロセス間の論理的な通信をＬＳＩチップ積層システム内の物理的な通信チャネルに割り当てる。
【００２５】
プロセスＰ５における特徴量としては、例えば、スマートフォンにおけるＡＲ（Ａｕｇｍｅｎｔｅｄ  Ｒｅａｌｉｔｙ：拡張現実）アプリケーションで用いられることの多いＯＲＢ特徴量を用いることができる。ＯＲＢ特徴量の計算においては、入力画像中の物体のサイズが違っても同じ物体であることを認識するために、画像認識処理システムは、入力画像を様々な倍率で縮小した画像を用意して特徴量を計算する。画像認識処理全体のうち、縮小画像生成は図１のプロセスＰ２に示されるようにＫＰＮ全体構成の一部にすぎない。動画像を対象とする画像認識処理では逐次画像が入力されるため、画像認識処理のうち一部に過ぎない縮小画像の生成処理（Ｐ２）では、超並列貫通バスの通信容量の全体を使用することはできない。よって、性能要求を満たすことが可能であれば、画像縮小処理にかかる通信量を節約すべきことが分かる。
【００２６】
そこで、本実施形態におけるＬＳＩチップ積層システムの設計及びアプリケーションＫＰＮのマッピングにおける目標は、性能、消費エネルギー、瞬時消費電力、ハードウェアコストといったパラメータを、要求にあわせて最適化することである。最終的には、図１に示すような対象アプリケーション（画像認識処理システム）の、ＫＰＮ全体に対するトレードオフを見つけることが目標である。以下の議論では、上記の画像認識処理のうちＰ２の画像縮小処理の内部についての設計について検討する。
【００２７】
オープンソースのコンピュータビジョン向けライブラリＯｐｅｎＣＶにはＯＲＢ特徴量を計算する実装が含まれる。本実施形態における実装においては、画像認識処理システムは、８種類のサイズの縮小画像を作成する。すなわち元画像のサイズを１として、１．２倍ずつ繰り返し画像を縮小することで、計８つの縮小倍率の画像を作成する。作成した画像は、以降のＯＲＢ特徴量の計算における入力データとして用いることができる。
【００２８】
なお、本実施形態では、画像を７段階に渡って縮小処理を行う場合を例に説明を行うが、これに限られるものではない。例えば、画像の変換処理は７段階に限られるものではなく、６以下若しくは８以上の段階で変換処理を行っても良い。また、変換処理は縮小処理に限られるものではなく、拡大処理を行っても良い。
【００２９】
図２は、ＯＲＢ特徴量の計算に用いる８種類の縮小画像の倍率と解像度（幅（Ｗｉｄｔｈ）及び高さ（Ｈｅｉｇｈｔ））、並びにデータ量の具体例を示している。各画像サイズは縮小倍率１．２で等比的に並べたものとなっている。この例では、入力画像のサイズは幅４０９６画素、高さ２３０４画素としている。画像は８ビットのグレイスケールであることを想定し、データ量は１画素あたり１Ｂｙｔｅとして計算している。画像サイズは入力画像が約９．４ＭＢとなり、最も小さい画像で約０．７ＭＢとなる。以下、必要に応じて元画像を１／１．２倍した画像を生成する処理を処理Ａ（プロセスＡ）、１／１．２倍した画像の更に１／１．２倍した画像（元画像を１／１．４４倍した画像）を生成する処理を処理Ｂ（プロセスＢ）とし、これを、元の画像の約１／３．５８倍した画像を生成する処理Ｇ（プロセスＧ）まで同様とする。
【００３０】
このように８つの縮小倍率の縮小画像を生成する処理を行うプロセスネットワークの設計事例を以下に説明する。図３は、基本の処理単位として入力画像を１／１．２倍に縮小する「縮小変換 １／１．２」というプロセスＡ乃至Ｇを７つ繋ぎ、各段階で１／１．２倍の縮小を繰り返すことで、８種類の倍率の縮小画像を作成するプロセスネットワーク（以下、逐次反復によるプロセスネットワークとも呼ぶ。）を示している。プロセスネットワークを構成するプロセスＡ乃至Ｇの７つのプロセスは、画像データを入力し・縮小変換し・出力する処理を互いに独立して行う。
【００３１】
一方、図４は、７種類の縮小倍率のプロセスを繋ぎ、元画像から８種類の倍率の縮小画像を作成するプロセスネットワーク（以下、個別倍率によるプロセスネットワークとも呼ぶ。）を示している。当該プロセスネットワークはプロセスＡ乃至Ｇの７つのプロセスにより構成される。各プロセスは、画像データを入力し・縮小変換し・出力する処理を独立して行う。
【００３２】
図３及び図４の各プロセスネットワークにおいて、各プロセス間のＦＩＦＯは、メモリ要素として使用されるバッファである。各プロセスは入力バッファに処理対象の入力データがあれば処理を行い、出力バッファにデータを出力する。各プロセスは他のプロセスの状態には直接依存することはなく、バッファの状態のみに応じて処理を行う。そのため、適切なバッファ量（幅及び深さ）を選択することにより、各プロセスの並列動作可能性を向上させることが可能となる。
【００３３】
なお、画像データは数ＭＢのサイズがあるため、プロセス間のＦＩＦＯは一般的にはプロセッサチップの外部チップ上メモリに配置することが多い。但し、画像を適切に分割し処理することによりプロセッサチップ上のメモリに格納することも可能である。本実施形態においては、ＦＩＦＯは、プロセスチップ上のメモリと、ＬＳＩチップ積層システム内の別チップ上のメモリに割り当てることができる。
【００３４】
図５は、図３の構成の逐次反復による縮小処理のプロセスネットワークにおける、各プロセスの通信量を示したものである。この例では認識処理として要求される毎秒１０フレームの処理を行うことを想定している。例えばプロセスＡでは１秒間に９．４ＭＢの画像を１０枚読み込み、６．５ＭＢの画像を１０枚書き出すため、読込み速度（Ｒｅａｄ）９４ＭＢ／ｓ、書込み速度（Ｗｒｉｔｅ）６５ＭＢ／ｓという通信量となっている。他のプロセスも同様である。
【００３５】
図６は、図４の構成の個別倍率の縮小処理によるプロセスネットワークにおける、各プロセスの通信量を示したものである。この例においても毎秒１０フレームの処理を行うことを前提としている。図５との違いは、各プロセス読込み（Ｒｅａｄ）のデータ量が全て９４ＭＢ／ｓとなっていることである。各倍率の縮小画像を後の処理で用いるため、書込み（Ｗｒｉｔｅ）のデータ量は、図５と同じである。
【００３６】
図５及び図６の通信量の比較から、プロセッサチップと外部チップメモリをプリント配線基板上で接続する形の従来のコンピュータシステムにおいては、図５に示す逐次反復による縮小処理のプロセスネットワーク型の処理の方が用いられることが好ましい。実際に、ＯｐｅｎＣＶ２．４．６．１のＯＲＢ特徴量計算における画像縮小の処理においては、逐次反復による縮小処理が行われている。
【００３７】
解像度：４０９６×２３８０の入力画像を用い、従来型のコンピュータシステム（ＣＰＵ：ＡＭＤ  Ｐｈｅｎｏｍ  II  ９０５ｅ（２．５ＧＨｚ））上でライブラリＯｐｅｎＣ
Ｖ  ｖｅｒ２．４．６．１を用いた逐次反復による縮小処理と、個別倍率による縮小処理の、プロセス毎の処理時間を個別に計測した結果を、図７に示す。縮小アルゴリズムは線形補間法である。いずれも小さい画像を出力するプロセスほど処理時間が短縮されていることが分かる。但し、全ての場合において逐次反復による縮小処理の方が、個別倍率による縮小処理よりも短時間で処理が完了している。これは、逐次反復による縮小処理において、入力画像の通信量が少ないためだと考えられる。
【００３８】
ＫＰＮを用いない従来型の画像処理システムにおいては、一般的にメモリから画像データを画素単位で読み出し、演算処理（ここでは縮小処理）を行い、メモリに処理結果の画像データを画素単位で書き込む、というプログラミング方法が取られることが一般的である。図８に示すように、プロセッサとメモリの間のバスに、入力データと出力データが交互に転送される。
【００３９】
ただし、通信量を削減して処理時間を短縮したいという要求から、画素単位でプロセッサチップとメモリチップの間の通信は削減するようなキャッシュ機構が設けられることが一般的である。すなわち、プロセッサチップ上のキャッシュメモリ上で画像データの読み書きを行って処理をして、メモリチップとキャッシュメモリの間の通信は適切なタイミングで、なるべくまとめて行う、という戦略の機構が搭載されていることが多い。しかしながら、プログラマからはキャッシュを制御することは難しいため、メモリアクセスに起因する遅延時間を削減して性能を向上するためには、様々なノウハウを駆使する必要があった。
【００４０】
一方、ＫＰＮを用いて画像処理を行う際には、プロセスの内部の処理はプロセッサチップ内で行われることが想定される。そしてプロセス間のＦＩＦＯをメモリチップにマッピングした場合には、プロセスの外部に処理結果を書きだす際に、メモリチップへの転送が行われる、と整理して考えることで、メモリアクセスのためのチップ間通信を意識しながら制御することが可能となる。一方、プロセス間のＦＩＦＯをプロセッサチップ内のチップ内メモリにマッピングした場合には、チップ間通信は発生しない。
【００４１】
ここまで説明した画像縮小処理のプロセスネットワークを、複数のＬＳＩチップを含むＬＳＩチップ積層システムにマッピングする方法を以下に述べる。マッピングにおいて最適化すべきパラメータは、性能、消費エネルギー、瞬時消費電力、ハードウェアコスト等である。
【００４２】
以下、図９を参照しながら、本実施形態におけるＬＳＩチップ積層システムの概略構成の具体例を示す。図９は、本実施形態におけるＬＳＩチップ積層システム１００の概略構成を示す図である。図９の例において、ＬＳＩチップ積層システム１００は、大きく分けて、プロセッサチップ１１０Ａ乃至１１０Ｇ（プロセッサチップ１１０Ａ乃至１１０Ｇを総称して、以下プロセッサチップ１１０とも呼ぶ。）と、メモリチップ１２０と、超並列貫通バス１３０Ａ乃至１３０Ｄ（以下、超並列貫通バス１３０Ａ乃至１３０Ｄを総称して超並列貫通バス１３０とも呼ぶ。）とを含む。
【００４３】
プロセッサチップ１１０は、プロセッサ１４０Ａ乃至１４０Ｄ（以下、総称してプロセッサ１４０とも呼ぶ。）により各種演算処理を行うＬＳＩである。プロセッサ１４０Ａ乃至１４０Ｄは、それぞれチップ内メモリ１５０Ａ乃至１５０Ｄ（以下、総称してチップ内メモリ１５０とも呼ぶ。）を一時記憶媒体として使用しながら演算処理を行うことができる。なお、各プロセッサチップ１１０に搭載されるプロセッサ１４０及びチップ内メモリ１５０の数は４つに限られるものではなく、３以下（単数でも良い）、あるいは５以上であっても良い。
【００４４】
また、本実施形態におけるＬＳＩチップ積層システム１００では、複数のプロセッサチップ１１０が積層し、超並列貫通バス１３０を介してそれぞれメモリチップ１２０と通信可能である。本実施形態において、プロセッサチップ１１０は７層積層しているがこれに限られるものではなく、６層以下であっても８層以上であっても良い。
【００４５】
メモリチップ１２０は、プロセッサチップ１１０がデータの入出力の際に使用することのできるメモリである。特に本実施形態においては、例えばあるプロセッサチップ１１０で実行されるプロセス（プログラムモジュール）との間でデータの入出力を行うバッファ（ＦＩＦＯ）は、例えばメモリチップ１２０上に確保することができる。各プロセッサチップ１１０のプロセッサ１４０は、メモリチップ１２０上に確保されるバッファ（ＦＩＦＯ）にデータが存在すればプロセスの実行を開始し、当該プロセスにより生成されたデータを、同じくメモリチップ１２０上に確保される別のバッファにデータを出力することができる。
【００４６】
超並列貫通バス１３０は、各プロセッサチップ１１０を貫通して設けられ、各プロセッサチップ１１０及びメモリチップ１２０を相互に通信可能とする。本実施形態に係るＬＳＩチップ積層システム１００において、超並列貫通バス１３０には千を超える多数の信号線が含まれる。更にＬＳＩチップ積層システム１００では、これらの信号線を４つの束に分け、それぞれを超並列貫通バス１３０Ａ乃至１３０Ｄとして、物理的に異なるチャネルとして使用するようにしている。なお、超並列貫通バス１３０の物理的な分割数は４つに限られるものではなく、３以下や５以上であっても良い。
【００４７】
図１０に、逐次反復による縮小アルゴリズムをＬＳＩチップ積層システム１００にマッピングした例を示す。図１０におけるマッピングの特徴は、７つのプロセッサチップ１１０を使用すること、各プロセッサチップ１１０が完全に独立に動作可能であり各縮小変換プロセスの同期は不要であることである。
【００４８】
図１０の例において、各プロセッサチップ１１０には、前述のとおり４つのプロセッサ１４０及び４つのチップ内メモリ１５０が搭載されている。各縮小処理プロセスは、各プロセッサチップ１１０に含まれるプロセッサ１４０を４つ使用しても１つだけ使用しても構わない。また、プロセッサ１４０は、画像処理のための専用ハードウェアであっても良い。
【００４９】
図１０の構成において、各ＦＩＦＯバッファは、メモリチップ１２０上に割り当てられる。ＦＩＦＯがメモリチップ１２０上に割り当てられているので、ＦＩＦＯから読み出す際にはメモリチップ１２０からプロセッサチップ１１０へのチップ間通信を、超並列貫通バス１３０を通じて行う必要がある。また、ＦＩＦＯに書き込む際には、プロセッサチップ１１０からメモリチップ１２０への通信を、超並列貫通バス１３０を通じて行う必要がある。プロセッサチップ１１０間の通信量は図５と同等になる。
【００５０】
図１０では、通信する画像データの量が示されている。最初の入力画像を入力とする縮小変換プロセスＡにおいては、１枚当たりのデータ量は９．４ＭＢとなる。現在の半導体ＬＳＩ技術において、プロセッサチップ上に９．４ＭＢ以上のメモリ（特に高速なＳＲＡＭ）を搭載するコストは極めて高い。これはＤＲＡＭやフラッシュメモリに特化したメモリチップ１２０において数ＧＢのメモリを集積可能であることとは対照的である。そのため、プロセッサチップ１１０上に９．４ＭＢを格納可能なメモリを搭載するのではなく、また処理対象の画像は一斉に読み出すのではなく、細分化して画像の一部のみをメモリチップ１２０からプロセッサチップ１１０に転送及び処理し、結果をメモリチップ１２０に転送することが望ましい。画像の細分化の方法は、処理の内容、すなわちどの画素を入力として出力画素を計算するかに依存する。画像縮小処理において画像を上から下に向かってスキャンして処理することを想定すると（図１１参照）、細分化の単位としては水平方向の１ライン分すなわち４０９６（４ＫＢ）もしくは数ライン分が考えられる。
【００５１】
図１２に、超並列貫通バス１３０を通じてチップ間通信を行う場合の、超並列貫通バス１３０への画像通信の割当て例を示す。プロセッサチップ１１０上で実行される各プロセスは、メモリチップ１２０上のＦＩＦＯにデータがあるかどうかを判断し、データがある場合には超並列貫通バス１３０を通じてデータをメモリチップ１２０上にあるＦＩＦＯから読み出す。プロセッサチップ１１０上の各プロセスは、ＦＩＦＯから読み出したデータを処理し、処理結果は超並列貫通バス１３０を通じてメモリチップ１２０上にあるＦＩＦＯに書き込む。
【００５２】
この際、メモリチップ１２０上のＦＩＦＯにデータがあるかどうかの判断には、メモリチップ１２０上にＦＩＦＯ集中管理テーブルを持たせて使用する方法、もしくは、各プロセッサチップ１１０上のチップ内メモリ１５０にＦＩＦＯ管理テーブルを分散して持たせる方法が考えられる。
【００５３】
図１２の超並列貫通バス１３０への画像通信の割当て例では、超並列貫通バス１３０を通じてチップ間通信を行う際に、８つの仮想通信チャネルを用いて、各プロセスが同時に通信を行えるように構成している。プログラムの書き方は、ＫＰＮに従って書くことで、各プロセスが独立に動作、並びに、必要なデータの入力、処理、及び出力を行えるようにする。これにより、各プロセスは逐次処理で独立に書くのでプログラムの書き方が分かりやすく、ＦＩＦＯからの読み出し及びＦＩＦＯへの書き込みがメモリチップ１２０との通信に相当することから、メモリチップ１２０との通信を制御することが可能である。一方、図１２に示されるように、各プロセスの入出力量にばらつきがある場合に待ち時間が生じるという問題点がある。
【００５４】
図９に示したような、４つの物理通信チャンネルを持つＬＳＩチップ積層システム１００において、８つの仮想通信チャンネルは、時分割多重方式により実現できる。図１３に、時分割多重方式による割り当ての一例を示す。ＬＳＩチップ積層システム１００では、４つの物理通信チャンネルに対して、第１の時間帯（タイムスロット＃１）には仮想チャンネル１から４を、第２の時間帯（タイムスロット＃２）には仮想チャンネル５から８を割り当てるとともに、それぞれの物理通信チャネルにおいて、適切な周期でタイムスロットを切り替える。これにより、８つの仮想通信チャンネルを実現することができる。
【００５５】
次に、図１４を参照しながら、個別倍率による縮小アルゴリズムをＬＳＩチップ積層システム１００にマッピングした場合の処理の具体例について説明する。図１４は、個別倍率による縮小アルゴリズムをＬＳＩチップ積層システム１００にマッピングした場合の具体例を示す図である。
【００５６】
図１４の例では、共通の入力画像に対して、それぞれのプロセッサチップ１１０で異なる倍率（個別倍率）で縮小変換処理を行う。各プロセッサチップ１１０は同じ入力画像を読み出すため、チップ間をつなぐ超並列貫通バス１３０を用いて各プロセッサチップ１１０に入力画像のデータをブロードキャストすることも可能である。そのため、読み出しに必要なメモリ帯域を大幅に削減可能である。
【００５７】
図１５に、個別倍率による縮小アルゴリズムを用いる際の超並列貫通バス１３０への画像通信の割当て例を示す。図１５の例では、図１２の場合と同様に、８つの仮想チャネルを用いて、各プロセスが独立に通信できるように構成している。入力画像は、各プロセスがそれぞれメモリチップ１２０から読み出す。図５及び図６の比較から分かるように、逐次反復による画像縮小の場合は段々と画像データサイズが小さくなるのに対し、個別倍率による画像縮小の場合には、入力画像の読み込みのためのデータ通信量が大きいことが分かる。
【００５８】
ここで、超並列貫通バス１３０は、データ通信の際にメモリチップ１２０から読みだしたデータを、各プロセッサチップ１１０に対して一斉配信（ブロードキャスト）することが可能であることから、ブロードキャストを活かした各プロセッサチップ１１０への画像データ配信が可能である。
【００５９】
図１６は、個別倍率による縮小アルゴリズムを用い、かつ入力画像の読み込みにブロードキャストを用いる際のチップ間通信量を示す図である。図１６において、ブロードキャスト時の通信量は、プロセスＡの項目に代表して示している。本手法の各プロセスの通信量を他の手法（図５、図６参照）と比較すると、入力画像の通信量が大幅に減少している。図５や図６の手法において入力画像の通信量は全体の通信量に占める割合は最も大きいため、本手法では入力画像をブロードキャストすることにより、全体として大幅な通信量の削減を図ることができている。
【００６０】
図１７に、ブロードキャストを活かした各プロセッサチップ１１０への画像データ通信の割当て例を示す。図１７の例では仮想チャネル（論理的通信チャネル）＃１乃至＃７で画像データのプロセッサチップ１１０からメモリチップ１２０への出力を行い、仮想チャネル＃８で同期のための制御メッセージ（制御信号）の通信を行っている。また、図１６以降説明しているブロードキャストを用いる際には、超並列貫通バス１３０の多数の信号線を活用して全ての仮想チャネル（複数の論理的通信チャネル）を使用することにより、入力画像データを各プロセッサチップ１１０へ短時間で配信することが可能である。
【００６１】
ただし、ブロードキャストにより縮小画像処理を各プロセッサチップ１１０上で並列かつ一斉に行う場合には、各プロセッサチップ１１０上で実行される各画像縮小プロセスが入力画像データを待って同期して処理を行う必要がある。そのため、同期のための待ち時間のため、処理性能がある程度低下する場合がある。
【００６２】
各プロセスがメモリチップ１２０から個々に入力画像を読み出す場合には、各画像縮小プロセス間の同期は必要ない。但し、図６に示すデータ通信容量が必要となる。すなわち、７つのプロセスがそれぞれ９４ＭＢ／ｓの通信帯域を必要とするため、合計で６５８ＭＢ／ｓの通信容量を必要とすることになる。これは、ブロードキャストする場合には、チップ間通信容量を削減することができるが、処理時間としては長くなるというトレードオフを選択することが可能であることを示している。
【００６３】
図１８、図１９に、各ＫＰＮのＬＳＩチップ積層システム１００へのマッピングにおける通信量の比較を示す。メモリチップ１２０への書込みのための転送量は変わらないが、読み出しのための転送量は各マッピング方法により大きく異なり、個別倍率縮小（一斉配信）の場合に最小の読み出し量９４ＭＢとなる。
【００６４】
各プロセスが待ち合わせを行うための同期制御を含むＫＰＮの例を図２０に示す。この構成においては、コントローラプロセス２０と各プロセスとが同期制御メッセージをやりとりすることで処理の待ち合わせを行い、前処理済み画像（入力画像）を全ての縮小変換プロセスに一斉配信することを可能とする。一斉配信は、以下の手順で行う。
（１）各縮小変換処理プロセスは、前処理済画像から縮小画像を作成して出力し、コントローラプロセス２０に終了を通知する。
（２）コントローラプロセス２０は、全ての縮小変換処理プロセスの終了通知を待って前処理プロセスに出力開始を指示する。
（３）前処理プロセスは、コントローラの開始指示を待ってＦＩＦＯに前処理済み画像を出力する。
【００６５】
以上の手順により、前処理済み画像を各縮小変換プロセスに一斉配信することが可能となる。なお、コントローラプロセス２０は、他のプロセスと同様に、各プロセッサチップ１１０のうちいずれかのプロセッサチップ１１０のプロセッサ１４０で実行することができる。或いは、ＬＳＩチップ積層システム１００外の外部のプロセッサ上で実行することも考えられる。
【００６６】
図２１には、これまで示した各ＫＰＮをＬＳＩチップ積層システム１００にマッピングした際の、消費電力を試算した結果を示す。ＴＳＶ１つあたりの電気容量を０．３ｐＦ、信号電圧１．０Ｖとすると、１ビットの転送には０．３ｐＪ必要である。１０ｆｐｓの動画像に対する処理を想定すると、消費電力は通信量に比例するため、個別倍率縮小・一斉配信のマッピングにおいては、最小の消費エネルギーである６９１．２μＷの消費電力（１フレームあたり６９．１２μＪの消費エネルギー）となる。
以上説明したように、本実施形態によれば、図３や図４等の様々な形態のＫＰＮをＬＳＩチップ積層システム１００にマッピングすることが可能となる。
【００６７】
特に、ＫＰＮにおけるプロセス間の通信用ＦＩＦＯバッファをメモリチップ１２０に割り当てる場合には、超並列貫通バス１３０を経由した通信が必要となる。当該通信にリアルタイム性が必要な場合には時分割多重の通信方式を用いることで、専用の論理的な通信路（論理的通信チャネル）を確保できるようになるため、他の通信の影響を受けずに遅延時間が保証された通信が可能となる。
【００６８】
また本実施形態によれば、処理負荷の状況（例えばプロセッサ稼働率、通信チャネル利用率等）や、画像認識処理における処理の段階に応じて、プロセッサチップ１１０の使用構成を随時組み合わせることが可能となる。当該組み合わせには、各プロセスをどのプロセッサチップ１１０に割り当てるか、プロセッサチップ１１０上のどのプロセッサ１４０に割り当てるか、プロセス間のＦＩＦＯバッファをどのメモリ（メモリチップ１２０及びチップ内メモリ１５０を含む）に割り当てるか、という選択を含む。
【００６９】
また、本実施形態におけるＬＳＩチップ積層システム１００が有する超並列貫通バス１３０は１０００本以上の信号線を持つことから、例えば１００ＭＨｚ程度の通信周波数であっても、１０２４本の信号線を用いることで、１クロックで１２８バイトのデータ転送が可能であり、１２．８ＧＢｙｔｅｓ／ｓの通信容量を持つ。当該通信容量は、画像認識のための画像縮小処理に必要な通信容量（最大６５８ＭＢ／ｓ）を十分にカバーすることができる。
【００７０】
加えて、図２０で示したようなコントローラプロセス２０からの制御メッセージにより制御可能なプロセスを用いることで、ＫＰＮの制御性を向上することができる。
【００７１】
また、制御メッセージを分散オブジェクトの標準的なプロトコルに準拠させることで、設計生産性と再利用性を大幅に向上させることが可能となる。より具体的には、ＣＯＲＢＡやＰｒｏｔｏｃｏｌ  Ｂｕｆｆｅｒｓといった通信ミドルウェアを使用することで、設計生産性及び再利用性の向上を図ることができる。
【００７２】
また、特に一斉配信（ブロードキャスト）による個別倍率縮小処理を用いると、画像縮小処理にかかる消費電力等を他の手法に比べて大幅に低減させることが可能となる。通常のメモリ及びプロセッサ間では、たとえマルチコアプロセッサであったとしても、それぞれ独立に読込み及び書込み処理を行うため、図５及び図６で示したような通信量を必要とする。これに対して本実施形態に係るＬＳＩチップ積層システム１００では、一斉配信（ブロードキャスト）を行うことにより、データ量を大幅に削減させ、ひいては消費電力をも大幅に低減させることができる。すなわち、本実施形態に係るＬＳＩチップ積層システム１００は、プロセッサチップ１１０間の多数の信号線を好適に利用することが可能である。
【００７３】
なお、前述の実施形態の構成は、組み合わせたり或いは一部の構成部分を入れ替えたりしてもよい。また、本発明の構成は前述の実施形態のみに限定されるものではなく、発明の要旨を逸脱しない範囲内において種々変更を加えてもよい。更に、本発明の用途は、画像認識処理に限定されるものではなく、スマートフォン等におけるタッチスクリーンにおけるＧＵＩ（グラフィカル・ユーザ・インターフェイス）実現のための画像拡大／縮小処理や、映像編集における画像拡大／縮小処理などにも用いることが可能である。
【符号の説明】
【００７４】
２０        ：コントローラプロセス
１００      ：ＬＳＩチップ積層システム
１１０      ：プロセッサチップ
１２０      ：メモリチップ
１３０      ：超並列貫通バス
１４０      ：プロセッサ
１５０      ：チップ内メモリ
【図１】
2015176435.tif 000003
【図２】
2015176435.tif 000004
【図３】
2015176435.tif 000005
【図４】
2015176435.tif 000006
【図５】
2015176435.tif 000007
【図６】
2015176435.tif 000008
【図７】
2015176435.tif 000009
【図８】
2015176435.tif 000010
【図９】
2015176435.tif 000011
【図１０】
2015176435.tif 000012
【図１１】
2015176435.tif 000013
【図１２】
2015176435.tif 000014
【図１３】
2015176435.tif 000015
【図１４】
2015176435.tif 000016
【図１５】
2015176435.tif 000017
【図１６】
2015176435.tif 000018
【図１７】
2015176435.tif 000019
【図１８】
2015176435.tif 000020
【図１９】
2015176435.tif 000021
【図２０】
2015176435.tif 000022
【図２１】
2015176435.tif 000023