(57)【要約】【課題】従来の半導体装置は、プロセッサエレメント間のデータ転送を高速化できなかった。【解決手段】本発明の半導体装置は、一方向に連続するデータを複数のデータ群に分割して処理するプロセッサエレメントＰＥ１〜ＰＥｎと、データシフト命令ＳＦＴを発行するプロセッサエレメント制御部１０と、隣り合うプロセッサエレメント間のデータ転送を行うデータ転送網１００と、を有し、プロセッサエレメントＰＥ１〜ＰＥｎは、それぞれ、複数のデータ群の１つを格納するデータ格納部と、１つのデータ群の先頭データと末尾データとの一方をデータシフト命令ＳＦＴに応じて選択した転送データをデータ転送網１００に出力するデータ選択器と、データ群を格納する位置をデータシフト命令ＳＦＴに応じて右側又は左側にシフトするデータ置換器と、シフトされたデータ群と、データ転送網１００を介して得られた転送データと、を結合するデータ結合器と、を有する。【選択図】図１
2014035578.tif 000002
【特許請求の範囲】
【請求項１】
行列データとして定義される複数のデータのうち一方向に連続するデータを複数のデータ群に分割して処理する複数のプロセッサエレメントと、
前記複数のプロセッサエレメントに対してデータシフト命令を発行するプロセッサエレメント制御部と、
前記データシフト命令で示されたデータシフト方向に隣り合うプロセッサエレメント間のデータ転送を行うデータ転送網と、を有し、
前記複数のプロセッサエレメントは、それぞれ、
前記複数のデータ群の１つを１つのワード線アドレスで定義される領域に格納し、前記ワード線アドレス単位で一括して入出力するデータ格納部と、
前記データ群のうち先頭ビット線アドレスに位置するデータと、末尾ビット線アドレスに位置するデータと、のいずれか一方を前記データシフト命令に応じて選択し、選択したデータを転送データとして前記データ転送網に出力するデータ選択器と、
一の前記ワード線アドレスに格納される前記データ群に対して、前記データ群を格納するビット線アドレスを前記データシフト命令に応じて右側又は左側にシフトするデータ置換器と、
前記データ置換器によりシフトされた前記データ群と、前記データ転送網を介して得られた前記転送データと、を結合して前記データ格納部に格納するデータ結合器と、
を有する半導体装置。
【請求項２】
前記データ転送網は、
前記複数のプロセッサエレメントに対応して設けられ、対応するプロセッサエレメントの両側に位置するプロセッサエレメントから出力される前記転送データを前記対応するプロセッサエレメントに出力する複数のセレクタを有し、
前記複数のセレクタは、前記データシフト命令で示されるデータシフト方向に位置するプロセッサエレメントから出力される前記転送データを選択して、前記対応するプロセッサエレメントに出力する請求項１に記載の半導体装置。
【請求項３】
前記データ転送網は、
前記複数のプロセッサエレメントのうち一方の端部に位置する先頭プロセッサエレメントが出力する前記転送データを保持する第１の一時保持部と、
前記複数のプロセッサエレメントのうち他方の端部に位置する末尾プロセッサエレメントが出力する前記転送データを保持する第２の一時保持部と、を有し、
前記複数のセレクタのうち前記先頭プロセッサエレメントに対応して設けられる先頭セレクタは、前記第２の一時保持部が保持する前記転送データと、前記先頭プロセッサエレメントの右側に位置するプロセッサエレメントからの出力とのいずれか一方を前記データシフト命令に応じて選択して出力し、
前記複数のセレクタのうち前記末尾プロセッサエレメントに対応して設けられる末尾セレクタは、前記第１の一時保持部が保持する前記転送データと、前記末尾プロセッサエレメントの左側に位置するプロセッサエレメントからの出力とのいずれか一方を前記データシフト命令に応じて選択して出力する請求項２に記載の半導体装置。
【請求項４】
命令コードを格納する命令メモリを有し、
前記プロセッサエレメント制御部は、前記命令コードをデコードして、前記データシフト命令を含む演算命令を発行し、
前記複数のプロセッサエレメントは、前記演算命令に応じて自プロセッサエレメントの前記データ格納部に格納されている前記データ群に対して演算を行う演算部を有する請求項１乃至３のいずれか１項に記載の半導体装置。
【請求項５】
前記データ格納部は、
前記演算部が処理する前記データ群を格納するレジスタファイルと、
前記レジスタファイルに読み出される前記データ群を格納するメモリと、を有し、
前記データ選択器は、
前記データシフト命令とともに出力される出力元選択信号に基づき前記レジスタファイルと前記メモリとのいずれか一方から前記データ群を選択する請求項４に記載の半導体装置。
【請求項６】
行列データとして定義される複数のデータのうち一方向に連続するデータを複数のデータ群に分割して処理する複数のプロセッサエレメントと、
前記複数のプロセッサエレメントに対してデータシフト命令を発行するプロセッサエレメント制御部と、
前記データシフト命令で示されたデータシフト方向に隣り合うプロセッサエレメント間のデータ転送を行うデータ転送網と、を有し、
前記複数のプロセッサエレメントは、１サイクル中に、
前記複数のデータ群の１つを選択し、
選択したデータ群の先頭データと、末尾データと、のいずれか一方を前記データシフト命令に応じて選択し、選択したデータを転送データとして前記データ転送網に出力し、
前記選択したデータ群に対して、前記データ群を格納するビット線アドレスを前記データシフト命令に応じて右側又は左側にシフト処理し、
前記シフト処理されたデータ群と、前記データ転送網を介して得られた前記転送データと、を結合して自プロセッサエレメント内のデータ格納部に格納する半導体装置。
【請求項７】
前記データ転送網は、
前記複数のプロセッサエレメントに対応して設けられ、対応するプロセッサエレメントの両側に位置するプロセッサエレメントから出力される前記転送データを前記対応するプロセッサエレメントに出力する複数のセレクタを有し、
前記複数のセレクタは、前記データシフト命令で示されるデータシフト方向に位置するプロセッサエレメントから出力される前記転送データを選択して、前記対応するプロセッサエレメントに出力する請求項６に記載の半導体装置。
【請求項８】
前記データ転送網は、
前記複数のプロセッサエレメントのうち一方の端部に位置する先頭プロセッサエレメントが現サイクルにおいて出力する前記転送データを次サイクルのサンプリングタイミングまで保持する第１の一時保持部と、
前記複数のプロセッサエレメントのうち他方の端部に位置する末尾プロセッサエレメントが現サイクルにおいて出力する前記転送データを次サイクルのサンプリングタイミングまで保持する第２の一時保持部と、を有し、
前記複数のセレクタのうち前記先頭プロセッサエレメントに対応して設けられる先頭セレクタは、前記第２の一時保持部が保持する前記転送データと、前記先頭プロセッサエレメントの右側に位置するプロセッサエレメントからの出力とのいずれか一方を前記データシフト命令に応じて選択して出力し、
前記複数のセレクタのうち前記末尾プロセッサエレメントに対応して設けられる末尾セレクタは、前記第１の一時保持部が保持する前記転送データと、前記末尾プロセッサエレメントの左側に位置するプロセッサエレメントからの出力とのいずれか一方を前記データシフト命令に応じて選択して出力する請求項７に記載の半導体装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は半導体装置に関し、特に、データに対して演算を行う複数のプロセッサエレメントを用いて複数のデータに対して並列して演算を行う半導体装置に関する。
【背景技術】
【０００２】
近年、プロセッサ等の半導体装置では、複数のプロセッサエレメントを実装し、複数のプロセッサエレメントにおいて並列してデータ処理を行うことで処理性能を向上させることが行われている。特に、複数のプロセッサエレメントを備えるプロセッサのうち、複数のデータに対して１つの演算命令による演算を実行するプロセッサをＳＩＭＤ（Single Instruction Multi Data）型プロセッサと称する。このようなＳＩＭＤ型プロセッサは、複数の画素データに対して同じ演算を施す画像処理に利用することで演算を高速に行うことができるため有用である。
【０００３】
このようなプロセッサの例が特許文献１〜３及び非特許文献１に開示されている。特許文献１〜３及び非特許文献１では、複数のプロセッサエレメントにより並列データ処理を行う。このとき、特許文献１〜３及び非特許文献１では、プロセッサエレメントの間でデータ転送を行うデータ転送網を有する。そして、特許文献１〜３及び非特許文献１では、データ転送網を有することで、プロセッサエレメント間のデータ転送の速度を向上させることができる。画像処理では、画像の上下左右方向の移動処理、画像の回転処理、フィルタ処理等において、画素情報をプロセッサエレメントの間で転送する必要がある処理が多くデータ転送網を有することによる処理能力の向上の効果は大きい。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開平４−２９５９５３号公報
【特許文献２】特開２００９−１２３０７４号公報
【特許文献３】特開２００７−７３０１０号公報
【非特許文献】
【０００５】
【非特許文献１】"An integrated memory array processor architecture for embedded image recognition systems", ISCA2005, kyo.S
【発明の概要】
【発明が解決しようとする課題】
【０００６】
特許文献１〜３及び非特許文献１では、プロセッサの処理能力がデータ転送網の転送能力により制限される。ここで、データ転送網の処理能力を向上させるためには、プロセッサエレメント間を結ぶ配線数を増やす、セレクタの数を増やす等の回路構成の改良を行う必要がある。しかし、レイアウト上の制約、回路面積の制約から上記のような回路構成の改良を十分に行うことができない場合、十分にデータ転送網の処理能力を向上させることができない問題ある。
【課題を解決するための手段】
【０００７】
本発明にかかる半導体装置の一態様は、行列データとして定義される複数のデータのうち一方向に連続するデータを複数のデータ群に分割して処理する複数のプロセッサエレメントと、前記複数のプロセッサエレメントに対してデータシフト命令を発行するプロセッサエレメント制御部と、前記データシフト命令で示されたデータシフト方向に隣り合うプロセッサエレメント間のデータ転送を行うデータ転送網と、を有し、前記複数のプロセッサエレメントは、それぞれ、前記複数のデータ群の１つを１つのワード線アドレスで定義される領域に格納し、前記ワード線アドレス単位で一括して入出力するデータ格納部と、前記データ群のうち先頭ビット線アドレスに位置するデータと、末尾ビット線アドレスに位置するデータと、のいずれか一方を前記データシフト命令に応じて選択し、選択したデータを転送データとして前記データ転送網に出力するデータ選択器と、一の前記ワード線アドレスに格納される前記データ群に対して、前記データ群を格納するビット線アドレスを前記データシフト命令に応じて右側又は左側にシフトするデータ置換器と、前記データ置換器によりシフトされた前記データ群と、前記データ転送網を介して得られた前記転送データと、を結合して前記データ格納部に格納するデータ結合器と、を有する。
【０００８】
本発明にかかる半導体装置の別の態様は、行列データとして定義される複数のデータのうち一方向に連続するデータを複数のデータ群に分割して処理する複数のプロセッサエレメントと、前記複数のプロセッサエレメントに対してデータシフト命令を発行するプロセッサエレメント制御部と、前記データシフト命令で示されたデータシフト方向に隣り合うプロセッサエレメント間のデータ転送を行うデータ転送網と、を有し、前記複数のプロセッサエレメントは、１サイクル中に、前記複数のデータ群の１つを選択し、選択したデータ群の先頭データと、末尾データと、のいずれか一方を前記データシフト命令に応じて選択し、選択したデータを転送データとして前記データ転送網に出力し、前記選択したデータ群に対して、前記データ群を格納するビット線アドレスを前記データシフト命令に応じて右側又は左側にシフト処理し、前記シフト処理されたデータ群と、前記データ転送網を介して得られた前記転送データと、を結合して自プロセッサエレメント内のデータ格納部に格納する。
【０００９】
本発明にかかる半導体装置では、それぞれのプロセッサエレメントが有するデータ群に対してデータシフト処理を行う場合に、シフト方向に応じてデータ群の端のデータを転送データとして選択し、データ転送網を介して転送データを隣接するプロセッサに転送する。また、本発明にかかる半導体装置では、隣接するプロセッサエレメントから与えられた転送データと、自プロセッサエレメントで保持するデータ群のうち転送データを除いたデータ群と、を結合して新たなデータ群を生成し、当該新たなデータ群を保持する。これにより、本発明にかかる半導体装置では、データ転送網を複雑化することなく、プロセッサエレメント間のデータ転送能力を含めた処理能力を高めることができる。
【発明の効果】
【００１０】
本発明にかかる半導体装置によれば、複数のプロセッサエレメントを有する半導体装置の処理能力を向上させることができる。
【図面の簡単な説明】
【００１１】
【図１】実施の形態１にかかる半導体装置のブロック図である。
【図２】実施の形態１にかかるレジスタファイルの概略図である。
【図３】実施の形態１にかかるメモリの概略図である。
【図４】実施の形態１にかかるデータ選択器のブロック図である。
【図５】実施の形態１にかかるデータ置換器のブロック図である。
【図６】実施の形態１にかかるデータ結合器のブロック図である。
【図７】実施の形態１にかかるデータ転送網のブロック図である。
【図８】実施の形態１にかかる半導体装置のメモリへのデータ群の読み出し動作を説明するための図である。
【図９】実施の形態１にかかる半導体装置のデータ選択器の動作を説明するための図である。
【図１０】実施の形態１にかかる半導体装置のデータ置換器の動作を説明するための図である。
【図１１】実施の形態１にかかる半導体装置のデータ転送網の動作を説明するための図である。
【図１２】実施の形態１にかかる半導体装置のデータ置換器の動作を説明するための図である。
【図１３】実施の形態１にかかる半導体装置のメモリから共通データメモリへのデータ群書き出し動作を説明するための図である。
【図１４】実施の形態２にかかる半導体装置のブロック図である。
【図１５】実施の形態２にかかるデータ転送網のブロック図である。
【図１６】実施の形態２にかかる半導体装置のメモリへのデータ群の読み出し動作を説明するための図である。
【図１７】実施の形態２にかかる半導体装置における１サイクル目の動作が終了した時点でのデータ転送網の状態を説明するための図である。
【図１８】実施の形態２にかかる半導体装置における２サイクル目のデータ選択器の動作を説明するための図である。
【図１９】実施の形態２にかかる半導体装置における２サイクル目のデータ置換器の動作を説明するための図である。
【図２０】実施の形態２にかかる半導体装置における２サイクル目のデータ転送網の動作を説明するための図である。
【図２１】実施の形態２にかかる半導体装置における２サイクル目のデータ置換器の動作を説明するための図である。
【図２２】実施の形態２にかかる半導体装置におけるサイクル毎のメモリの状態遷移を説明するための図である。
【図２３】実施の形態２にかかる半導体装置のメモリから共通データメモリへのデータ群書き出し動作を説明するための図である。
【発明を実施するための形態】
【００１２】
実施の形態１
本発明について、以下、図面を参照して説明する。図１に本発明の実施の形態１にかかる半導体装置１のブロック図を示す。図１に示すように、半導体装置１は、プロセッサエレメント制御部１０、命令メモリ１１、共通データメモリ１２、複数のプロセッサエレメント（例えば、プロセッサエレメントＰＥ１〜ＰＥｎ、ｎはプロセッサエレメントの個数を示す整数であって、以下同様に用いる）、データ転送網１００を有する。なお、図１では、半導体装置１のうち本発明に大きく関わるプロセッサコアについてのみ示したが、半導体装置１は、図１に示したブロック以外の回路を有する。
【００１３】
本発明では、行列データとして定義される複数のデータのうち一方向に連続するデータを複数のデータ群に分割し、分割後のデータ群をそれぞれ複数のプロセッサエレメントを利用して処理する。本発明では、行列データのうち列方向に連続するデータを、右側又は左側にシフト処理する際の処理方法に特徴の１つを有する。
【００１４】
プロセッサエレメント制御部１０は、命令デコーダとしての機能を有する。また、命令メモリ１１には、プロセッサエレメント制御部１０によりデコードされる命令コードが格納される。この命令コードは、図示しないフェッチ回路等が、図示しない二次キャッシュメモリ、メインメモリ等から読み出すものである。そして、プロセッサエレメント制御部１０は、命令メモリ１１から読み出した命令コードがデータシフト演算命令コードであった場合、プロセッサエレメントＰＥ１〜ＰＥｎに対してデータシフト命令ＳＦＴを発行する。また、プロセッサエレメント制御部１０は、命令メモリ１１から読み出した命令コードがデータシフト演算命令コード以外の命令コードであった場合、プロセッサエレメントＰＥ１〜ＰＥｎに対して読み出した命令コードに応じた演算命令を発行する。
【００１５】
共通データメモリ１２は、プロセッサエレメントＰＥ１〜ＰＥｎで処理されるデータが格納される。プロセッサエレメントＰＥ１〜ＰＥｎは、共通データメモリ１２から処理すべきデータを読み出す。また、プロセッサエレメントＰＥ１〜ＰＥｎは、共通データメモリ１２に処理後のデータを書き戻す。
【００１６】
プロセッサエレメントＰＥ１〜ＰＥｎは、行列データとして定義される複数のデータのうち一方向に連続するデータを複数のデータ群に分割して処理する。特に、プロセッサエレメントＰＥ１〜ＰＥｎは、プロセッサエレメント制御部１０が発行した命令がデータシフト命令ＳＦＴであった場合、隣接するプロセッサエレメントに渡すデータを出力するとともに、別の隣接するプロセッサエレメントから転送されたデータを自プロセッサエレメントが保持するデータ群に含めて格納する。データ転送網１００は、データシフト命令ＳＦＴで示されたデータシフト方向に隣り合うプロセッサエレメント間のデータ転送を行う。
【００１７】
ここで、プロセッサエレメントＰＥ１〜ＰＥｎについて詳細に説明する。図１に示すように、プロセッサエレメントＰＥ１〜ＰＥｎは、それぞれ、演算部、レジスタファイル、メモリ、データ選択器、データ結合器、データ置換器を有する。図１に示した例では、プロセッサエレメント内の各ブロックに付した符号のうち上の２桁によりブロックの種別を示すとともに、下の１桁によりプロセッサエレメントの番号を示した。プロセッサエレメントＰＥ１〜ＰＥｎは、それぞれ同じ構成であるため、以下では、プロセッサエレメントを代表してプロセッサエレメントＰＥ１について説明する。
【００１８】
プロセッサエレメントＰＥ１は、演算部１０１、レジスタファイル１１１、メモリ１２１、データ選択器１３１、データ置換器１４１、データ結合器１５１を有する。なお、図１では、プロセッサエレメント内のデータ格納部としてレジスタファイル１１１とメモリ１２１を示したが、これらは１つの回路ブロックとして形成することもできる。
【００１９】
演算部１０１は、プロセッサエレメントが発行した演算命令に応じて自プロセッサエレメントのデータ格納部に格納されているデータ群に対して演算を行う。本実施の形態では、メモリ１２１からレジスタファイル１１１にロードされたデータ群に対して演算部１０１が演算を行う。
【００２０】
データ格納部は、レジスタファイル１１１とメモリ１２１により構成される。レジスタファイル１１１及びメモリ１２１は、ともに、複数のデータ群の１つを１つのワード線アドレスで定義される領域に格納し、ワード線アドレス単位で一括して入出力する。なお、レジスタファイル１１１及びメモリ１２１は、１つのビット線アドレスに対して１のデータを格納する。そして、ワード線アドレスとビット線アドレスとによりデータ群内の１つのデータを特定する。レジスタファイル１１１及びメモリ１２１の詳細は、後述する。
【００２１】
データ選択器１３１は、レジスタファイル１１１又はメモリ１２１に格納されているデータ群のうち先頭ビット線アドレスに位置するデータと、末尾ビット線アドレスに位置するデータと、のいずれか一方をデータシフト命令ＳＦＴに応じて選択し、選択したデータを転送データとしてデータ転送網１００に出力する。このデータ選択器１３１の詳細は後述する。
【００２２】
データ置換器１４１は、１のワード線アドレスに格納されるデータ群に対して、データ群を格納するビット線アドレスをデータシフト命令に応じて右側又は左側にシフトする。データ置換器１４１の詳細は後述する。
【００２３】
データ結合器１５１は、データ置換器によりシフトされたデータ群と、データ転送網を介して得られた転送データと、を結合してデータ格納部に格納する。つまり、データ結合器１５１が出力するデータ群は、レジスタファイル１１１又はメモリ１２１に格納されたデータ群を右側又は左側にシフトしたものとなる。このデータ結合器の詳細は後述する。
【００２４】
ここで、レジスタファイル１１１、メモリ１２１、データ選択器１３１、データ置換器１４１、及び、データ結合器１５１の詳細について説明する。
【００２５】
図２に、レジスタファイル１１１の概略図を示す。図２に示すように、レジスタファイル１１１は、ビット線方向とワード線方向とにそれぞれアドレスを有する。図２に示す例では、ビット線アドレスとしてＢ１〜Ｂｍ（ｍはビット線アドレスの数を示す整数）を有する。また、図２に示す例ではワード線アドレスとしてＷ１〜Ｗｋ（ｋはワード線アドレスの数を示す整数）を有する。そして、レジスタファイル１１１は、１つのデータ群を一のワード線アドレスで定義される領域に格納する。また、レジスタファイル１１１は、ワード線単位でデータ群の読み出し及び書き込みを行う。図２に示す例では、レジスタファイル１１１が入出力するデータ群を構成するデータにＲ１〜Ｒｍの符号を付した。なお、ワード線アドレスの指定及びビット線アドレスの指定は、演算部１０１がプロセッサエレメント制御部１０から与えられる演算命令に応じて行う。例えば、演算命令が加算命令であった場合、演算部１０１は、加算対象のデータが格納される領域に対応するワード線アドレス及びビット線アドレスを出力する。また、演算命令がデータシフト命令ＳＦＴであった場合、演算部１０１は、データシフト処理の対象となるデータ群が格納されているワード線アドレスを出力する。
【００２６】
図３に、メモリ１２１の概略図を示す。図３に示すように、メモリ１２１は、ビット線方向とワード線方向とにそれぞれアドレスを有する。図３に示す例では、ビット線アドレスとしてＢ１〜Ｂｍを有する。また、図３に示す例ではワード線アドレスとしてＷ１〜Ｗｋを有する。そして、メモリ１２１は、１つのデータ群を１のワード線アドレスで定義される領域に格納する。また、メモリ１２１は、ワード線単位でデータ群の読み出し及び書き込みを行う。図３に示す例では、メモリ１２１が入出力するデータ群を構成するデータにＭ１〜Ｍｍの符号を付した。なお、ワード線アドレスの指定及びビット線アドレスの指定は、演算部１０１がプロセッサエレメント制御部１０から与えられる演算命令に応じて行う。例えば、演算命令が加算命令であった場合、演算部１０１は、加算対象のデータが格納される領域に対応するワード線アドレス及びビット線アドレスを出力する。また、演算命令がデータシフト命令ＳＦＴであった場合、演算部１０１は、データシフト処理の対象となるデータ群が格納されているワード線アドレスを出力する。
【００２７】
図４に、データ選択器１３１のブロック図を示す。図４に示すように、データ選択器１３１は、セレクタ２０１〜２０ｍ及びセレクタ２０を有する。セレクタ２０１〜２０ｍは、レジスタファイル１１１から出力されるデータＲ１〜Ｒｍと、メモリ１２１から出力されるデータＭ１〜Ｍｍと、のいずれか一方を出力元選択信号ＭＲＳＥＬに応じて選択して出力する。このセレクタ２０１〜２０ｍが出力するデータは、データＳ０〜Ｓｍとしてデータ置換器１４１に出力される。なお、出力元選択信号ＭＲＳＥＬは、プロセッサエレメント制御部１０が命令コードをデコードした結果に応じて出力されるものである。図４に示す例では、セレクタ２０１〜２０ｍは、出力元選択信号ＭＲＳＥＬが０を示す場合、メモリ１２１から出力されるデータＭ１〜ＭｍをデータＳ０〜Ｓｍとして出力する。また、セレクタ２０１〜２０ｍは、出力元選択信号ＭＲＳＥＬが１を示す場合、レジスタファイル１１１から出力されるデータＲ１〜ＲｍをデータＳ０〜Ｓｍとして出力する。
【００２８】
また、セレクタ２０は、セレクタ２０１が出力するデータと、セレクタ２０ｍが出力するデータとのいずれか一方をデータシフト命令ＳＦＴで示されるデータシフト方向に応じて選択して、選択したデータを転送データＤｘとして出力する。なお、セレクタ２０１は、データ群のうち先頭ビット線アドレスに位置するデータに対応して設けられるものであり、セレクタ２０ｍは、データ群のうち末尾ビット線アドレスに位置するデータに対応して設けられるものである。つまり、セレクタ２０は、データ群のうち先頭ビット線アドレスに位置するデータと、末尾ビット線アドレスに位置するデータと、のいずれか一方をデータシフト命令に応じて選択し、選択したデータを転送データＤｘとしてデータ転送網１００に出力する。
【００２９】
図５に、データ置換器１４１のブロック図を示す、図５に示すように、データ置換器１４１は、セレクタ３０１〜３０ｍを有する。セレクタ３０１〜３０ｍは、ビット線アドレスＢ１〜Ｂｍに対応して設けられる。そして、セレクタ３０１〜３０ｍは、データシフト命令に応じて、自セレクタが対応するビット線アドレスの１つ右側のビット線アドレスから出力されたデータと、自セレクタが対応するビット線アドレスの１つ左側のビット線アドレスから出力されたデータと、のいずれか一方を選択して、選択したデータをデータ結合器１５１に出力する。
【００３０】
より具体的には、セレクタ３０１〜３０ｍは、データシフト命令ＳＦＴが右側シフトを指示する場合は、ビット線アドレスＢ１に対応するデータＤ１をデータなしとし、ビット線アドレスＢ２〜Ｂｍに対応するデータＤ２〜ＤｍとしてデータＳ１〜Ｓｍ−１を出力する。一方、セレクタ３０１〜３０ｍは、データシフト命令ＳＦＴが左側シフトを指示する場合は、ビット線アドレスＢ１〜Ｂｍ−１に対応するデータＤ１〜Ｄｍ−１としてデータＳ２〜Ｓｍを出力し、ビット線アドレスＢｍに対応するデータＤｍをデータなしとする。
【００３１】
図６に、データ結合器１５１のブロック図を示す。図６に示すように、データ結合器１５１は、セレクタ４０１、４０ｍを有する。セレクタ４０１は、データシフト命令ＳＦＴが右側シフトを指定する場合にはデータ転送網を介して得られたデータＤｘをデータＰ１として出力する。また、セレクタ４０１は、データシフト命令ＳＦＴが左側シフトを指定する場合にはデータ置換器１４１が出力したデータＤ１をデータＰ１として出力する。セレクタ４０ｍは、データシフト命令ＳＦＴが右側シフトを指定する場合にはデータ置換器１４１が出力したデータＤｍをデータＰｍとして出力する。また、セレクタ４０１は、データシフト命令ＳＦＴが左側シフトを指定する場合にはデータ転送網を介して得られたデータＤｘをデータＰｍとして出力する。また、データ結合器１５１は、データ置換器１４１が出力するデータＤ２〜Ｄｍ−１をデータＰ２〜Ｄｍ−１として出力する。
【００３２】
図７に、データ転送網１００のブロック図を示す。図７に示すように、データ転送網１００は、セレクタ５０１〜５０ｎを有する。セレクタ５０１〜５０ｎは、プロセッサエレメントＰＥ１〜ＰＥｎに対応して設けられ、対応するプロセッサエレメントの両側に位置するプロセッサエレメントから出力される転送データＤｘを対応するプロセッサエレメントに出力する。そして、セレクタ５０１〜５０ｎは、データシフト命令ＳＦＴで示されるデータシフト方向に位置するプロセッサエレメントから出力される転送データＤｘを選択して、対応するプロセッサエレメントに出力する。
【００３３】
例えば、データシフト命令で示されるデータシフト方向が右側である場合、セレクタ５０２〜５０ｎは、プロセッサエレメントＰＥ１〜ＰＥｎ−１が出力する転送データＤｘを選択して、選択したデータをプロセッサエレメントＰＥ２〜ＰＥｎに転送する。なお、データシフト命令で示されるデータシフト方向が右側である場合、セレクタ５０１は、転送するデータがないため、データなしの状態をプロセッサエレメントＰＥ１与える。また、データシフト命令で示されるデータシフト方向が左側である場合、セレクタ５０１〜５０ｎ−１は、プロセッサエレメントＰＥ２〜ＰＥｎが出力する転送データＤｘを選択して、選択したデータをプロセッサエレメントＰＥ１〜ＰＥｎ−１に転送する。なお、データシフト命令で示されるデータシフト方向が左側である場合、セレクタ５０ｎは、転送するデータがないため、データなしの状態をプロセッサエレメントＰＥｎ与える。
【００３４】
続いて、実施の形態１にかかる半導体装置１の動作について説明する。半導体装置１では、行列データのうち同一方向（例えば、列方向）に連続する複数のデータに対してデータシフト処理を行う処理に特徴の１つを有する。そこで、以下の説明では、半導体装置１の動作としてデータの右側にシフトするデータシフト処理を説明する。また、以下に説明する動作例では、４つのプロセッサを用いて、１行１６列のデータを扱うものとする。
【００３５】
また、半導体装置１では、各プロセッサエレメントが同じ回路構成であり、データシフト処理では同じ動作を行う。そこで、以下の説明では、プロセッサエレメントＰＥ１のブロック図を利用してプロセッサエレメントＰＥ１〜ＰＥ４の動作を説明する。
【００３６】
実施の形態１にかかる半導体装置１では、プロセッサエレメントにおいて具体的な処理を行う前に、共通データメモリ１２からプロセッサエレメントＰＥ１〜ＰＥ４のメモリ１２１〜１２４にデータを読み出す。そこで、図８に実施の形態１にかかる半導体装置１のメモリ１２１〜１２４へのデータ群の読み出し動作を説明するための図を示す。図８に示す例では、処理対象のデータは、ある行列データのうち０行目に属するデータ［０，０］〜［ｆ，０］である。このデータ［０，０］〜［ｆ，０］は、共通データメモリ１２の１のワード線アドレスで指定される領域に格納されているものとする。そして、半導体装置１では、プロセッサエレメントＰＥ１のメモリ１２１にデータ［０，０］〜［３，０］、プロセッサエレメントＰＥ２のメモリ１２２にデータ［４，０］〜［７，０］、プロセッサエレメントＰＥ３のメモリ１２３にデータ［８，０］〜［ｂ，０］、プロセッサエレメントＰＥ４のメモリ１２４にデータ［ｃ，０］〜［ｆ，０］を格納する。つまり、図８に示す例では、各プロセッサエレメントのメモリに格納される４つのデータがそれぞれプロセッサエレメントにおける処理単位を示すデータ群に該当する。
【００３７】
続いて、図８で共通データメモリ１２から読み出したデータ群に対するデータシフト命令ＳＦＴの実行について説明する。まず、データシフト命令ＳＦＴに応じたデータ選択器１３１〜１３４の動作について説明する。図９に半導体装置１におけるデータ選択器の動作を説明するための図を示す。図９に示す例では、出力元選択信号ＭＲＳＥＬとして０が入力されることに応じて、セレクタ２０１〜２０４がメモリ１２１から出力されるデータを選択する。図９に示す例では、プロセッサエレメントＰＥ１ではデータ［０，０］〜［３，０］がデータ選択器からデータ置換器に与えられ、プロセッサエレメントＰＥ２ではデータ［４，０］〜［７，０］がデータ選択器からデータ置換器に与えられ、プロセッサエレメントＰＥ３ではデータ［８，０］〜［ｂ，０］がデータ選択器からデータ置換器に与えられ、プロセッサエレメントＰＥ４ではデータ［ｃ，０］〜［ｆ，０］がデータ選択器からデータ置換器に与えられる。
【００３８】
また、動作例では、データシフト命令がデータシフト方向として右側を示すため、セレクタ２０は、データ群のうち末尾ビット線アドレスに位置するデータを転送データＤｘとして出力する。図９に示す例では、プロセッサエレメントＰＥ１が転送データＤｘとしてデータ［３，０］を出力し、プロセッサエレメントＰＥ２が転送データＤｘとしてデータ［７，０］を出力し、プロセッサエレメントＰＥ３が転送データＤｘとしてデータ［ｂ，０］を出力し、プロセッサエレメントＰＥ４が転送データＤｘとしてデータ［ｆ，０］を出力する。
【００３９】
続いて、データ置換器の動作について説明する。図１０に実施の形態１にかかる半導体装置１のデータ置換器の動作を説明するための図を示す。動作例では、データシフト命令がデータシフト方向として右側を示すため、複数のセレクタは、それぞれ入力されるデータに対応するビット線アドレスを１つ増加させるようデータ群をシフトする。これにより、プロセッサエレメントＰＥ１ではデータＤ２〜Ｄ４として、データ［０，０］〜［２，０］を出力し、プロセッサエレメントＰＥ２ではデータＤ２〜Ｄ４として、データ［４，０］〜［６，０］を出力し、プロセッサエレメントＰＥ３ではデータＤ２〜Ｄ４として、データ［８，０］〜［ａ，０］を出力し、プロセッサエレメントＰＥ４ではデータＤ２〜Ｄ４として、データ［ｃ，０］〜［ｅ，０］を出力する。また、プロセッサエレメントＰＥ１〜ＰＥ４では、データＤ１としてデータなしの状態を出力する。
【００４０】
続いて、データ転送網１００の動作について説明する。図１１に実施の形態１にかかる半導体装置１のデータ転送網１００の動作を説明するための図を示す。図１１に示すように、この動作例では、データシフト命令がデータシフト方向として右側を示すため、セレクタ５０１〜５０４は、自セレクタの出力先のプロセッサエレメントの右側に位置するプロセッサエレメントＰＥが出力した転送データＤｘを選択する。そして、セレクタ５０１〜５０４は、それぞれ選択した転送データを自セレクタに対応するプロセッサエレメントに出力する。
【００４１】
図１１に示す例では、プロセッサエレメントＰＥ１が出力したデータ［３，０］がプロセッサエレメントＰＥ２に転送され、プロセッサエレメントＰＥ２が出力したデータ［７，０］がプロセッサエレメントＰＥ３に転送され、プロセッサエレメントＰＥ３が出力したデータ［ｂ，０］がプロセッサエレメントＰＥ４に転送される。なお、プロセッサエレメントＰＥ１は、プロセッサエレメント内での並び順が最も右側になるため、転送されるデータがない。そのため、データ転送網１００は、プロセッサエレメントＰＥ１にはデータなしの状態を与える。
【００４２】
続いて、データ結合器の動作について説明する。図１２に実施の形態１にかかる半導体装置１のデータ結合器の動作を説明するための図を示す。図１２に示すように、この動作例では、データシフト命令がデータシフト方向として右側を示すため、セレクタは、Ｒの符号が示される入力端子に入力されるデータを出力する。つまり、セレクタ４０１は、隣接プロセッサエレメントから出力されるデータを出力する。一方、セレクタ４０４は、データ置換器が出力するデータＤ４を出力する。
【００４３】
これにより、プロセッサエレメントＰＥ１のデータ結合器はメモリ１２１にデータＰ１としてデータなしの状態を出力し、データＰ２〜Ｐ４としてデータ［０，０］〜［２，０］を出力する。また、プロセッサエレメントＰＥ２のデータ結合器はメモリ１２２にデータＰ１〜Ｐ４としてデータ［３，０］〜［６，０］を出力し、プロセッサエレメントＰＥ３のデータ結合器はメモリ１２３にデータＰ１〜Ｐ４としてデータ［７，０］〜［ａ，０］を出力し、プロセッサエレメントＰＥ４のデータ結合器はメモリ１２４にデータＰ１〜Ｐ４としてデータ［８，０］〜［ｅ，０］を出力する。
【００４４】
続いて、実施の形態１にかかる半導体装置１では、プロセッサエレメントＰＥ１〜ＰＥ４を用いてデータシフト処理したデータ群を共通データメモリ１２に書き戻す。そこで、プロセッサエレメントのメモリから共通データメモリ１２へのデータ群書き出し動作を説明するための図を図１３に示す。図１３に示すように、書き戻し後のデータは、データシフト処理前のデータを右側の１つシフトしたものになる。
【００４５】
上記説明より、実施の形態１にかかる半導体装置１では、プロセッサエレメント内にデータの転送経路を隣接するプロセッサエレメントに転送する転送データを抽出するデータ選択器と、プロセッサエレメント内でデータの格納位置をシフトさせるデータ置換器と、隣接するプロセッサエレメントからデータ転送網を介して得られる転送データとデータ置換器においてシフト処理されたデータ群とを結合するデータ結合器と、隣接するプロセッサエレメント間で転送データを転送するデータ転送網を有する。
【００４６】
つまり、実施の形態１にかかる半導体装置１は、行列データとして定義される複数のデータのうち一方向に連続するデータを複数のデータ群に分割して処理するプロセッサエレメントＰＥ１〜ＰＥｎと、プロセッサエレメントＰＥ１〜ＰＥｎに対してデータシフト命令ＳＦＴを発行するプロセッサエレメント制御部１０と、データシフト命令ＳＦＴで示されたデータシフト方向に隣り合うプロセッサエレメント間のデータ転送を行うデータ転送網１００と、を有する。そして、プロセッサエレメントＰＥ１〜ＰＥｎは、１サイクル中に、複数のデータ群の１つを選択し、選択したデータ群の先頭データと、末尾データと、のいずれか一方をデータシフト命令ＳＦＴに応じて選択し、選択したデータを転送データとしてデータ転送網１００に出力し、選択したデータ群に対して、データ群を格納するビット線アドレスをデータシフト命令ＳＦＴに応じて右側又は左側にシフト処理し、シフト処理されたデータ群と、データ転送網を介して得られた転送データと、を結合して自プロセッサエレメント内のデータ格納部に格納する。
【００４７】
これにより、実施の形態１にかかる半導体装置では、複数のデータから構成されるデータ群を有している場合であっても、複雑な演算を行うことなく、同一行に属するデータ群のシフト処理を高速に行うことができる。また、実施の形態１にかかるプロセッサエレメントでは、データ選択器、データ置換器、データ結合器、データ転送網を非同期で動作するセレクタにより構成することでシフト処理を１サイクルで実行することができる。
【００４８】
一方、従来の半導体装置において、プロセッサエレメントが複数のデータから構成されるデータ群を有している場合に、プロセッサエレメント間を跨ぐデータシフト処理を行う場合複雑な演算が必要になる。例えば、１つのプロセッサエレメントが４つのデータから構成されるデータ群を保持し、隣接するプロセッサエレメント間でデータシフト処理を行う場合、５サイクルの処理が必要になる。より具体的には、データシフト処理の処理となるデータ群のデータのうち隣接するプロセッサエレメントに渡す第１のデータを一時格納領域に格納する第１サイクルと、第１のデータに隣接する第２のデータを第１のデータが格納されていた領域に移動する第２サイクルと、第２のデータに隣接する第３のデータを第２のデータが格納されていた領域に移動する第３サイクルと、第３のデータに隣接する第４のデータを第３のデータが格納されていた領域に移動する第４サイクルと、隣接するプロセッサエレメントから得られた第１のデータを第４のデータが格納されていた領域に格納する第５サイクルと、が必要になる。このように従来の半導体装置では、プロセッサエレメント内に保持するデータ群を構成するデータ数が多いほど処理に多くのサイクル数を必要とする。これに対して、実施の形態１にかかる半導体装置では、データ群を構成するデータ数にかかわらずシフト処理を１サイクルで完了できるため、高速化の効果は、データ群を構成するデータ数が多くなるほど大きくなる。
【００４９】
このような、データシフト処理は、例えば、異なるタイミング、あるいは、異なる角度で撮影された２枚の画像の一致、不一致を判定する場合に非常に多用される処理である。このように撮影された異なる画像に対して一致・不一致判定を行うことで、撮影対象の変化を検出することができる。そのため、データシフト処理を高速に行うことで、撮影対象の変化をより高速に検出することが可能になる。
【００５０】
また、実施の形態１にかかる半導体装置１では、データ転送網１００の構成が非常に簡略化しながら高速なデータ転送を実現できる。特許文献３あるいは非特許文献１で示される例では、データ転送網中のセレクタが、２以上の入力を有しており、配線が実施の形態１にかかるデータ転送網よりも複雑になっている。一方、実施の形態１にかかるデータ転送網１００では、セレクタは、２入力１出力の構成となっており、セレクタに関する配線が少ない。このように、少ない配線数でデータ転送網１００を構成することで半導体装置１のチップ面積を削減することができる。
【００５１】
また、実施の形態１にかかる半導体装置では、１つのプロセッサエレメントが処理するデータとして複数のデータから構成されるデータ群として与える。このように、１つのプロセッサエレメント内に複数のデータを有することで、データ転送網１００を介したデータ転送の回数を削減し、半導体装置１の処理能力を高めることができる。例えば、１つのプロセッサエレメントに１つのデータを与えてフィルタ処理を行う場合、フィルタ処理範囲の大きさに比例してデータ転送回数が多くなる。より具体的には、５×５画素の画像の平均値を算出する場合、複数のプロセッサエレメントのそれぞれが行方向の５つの画素のデータの加算結果を算出する。その後、左側の２個のプロセッサエレメントからそれぞれ加算結果を取得し、かつ、右側の２個のプロセッサエレメントからそれぞれ加算結果を取得した上で、取得した加算結果と自プロセッサエレメントで算出した加算結果とを加算する必要がある。一方、実施の形態１にかかるプロセッサエレメントによれば、１つのプロセッサエレメント内において５×４の画素の加算結果を算出し、残りの１列の加算結果を隣接するプロセッサエレメントから得れば５×５の画素の加算結果を算出することができる。
【００５２】
実施の形態２
実施の形態２にかかる半導体装置２のブロック図を図１４に示す。図１４に示すように、半導体装置２は、実施の形態１にかかる半導体装置１のデータ転送網１００に代えてデータ転送網２００を有する。データ転送網２００は、データ転送網１００の別の形態を示すものである。
【００５３】
データ転送網２００は、隣接するプロセッサエレメント間のデータの転送を行う。このとき、データ転送網２００は、複数のプロセッサエレメントのうち一方の端部（例えば、左端）に位置する先頭プロセッサエレメント（例えば、プロセッサエレメントＰＥ１）と、他方の端部（例えば、右端）に位置する末尾プロセッサエレメント（例えば、プロセッサエレメントＰＥｎ）と、の間でデータの転送を行う場合、処理サイクルを跨いでデータの転送を行う。
【００５４】
ここで、データ転送網２００のブロック図を図１５に示す。図１５に示すように、データ転送網２００は、セレクタ５０１〜５０ｎ、第１の一時保持部（例えば、フリップフロップ５１）、第２の一時保持部（例えば、フリップフロップ５２）を有する。セレクタ５０２〜５０ｎ−１は、プロセッサエレメントＰＥ２〜ＰＥｎ−１に対応して設けられ、対応するプロセッサエレメントの両側に位置するプロセッサエレメントから出力される転送データを対応するプロセッサエレメントに出力する。また、セレクタ５０２〜５０ｎ−１は、データシフト命令で示されるデータシフト方向に位置するプロセッサエレメントから出力される転送データを選択して、対応するプロセッサエレメントに出力する。
【００５５】
フリップフロップ５１は、プロセッサエレメントＰＥ１〜ＰＥｎのうち一方の端部に位置するプロセッサエレメントＰＥ１が出力する転送データを保持する。フリップフロップ５２は、複数のプロセッサエレメントのうち他方の端部に位置するプロセッサエレメントＰＥｎが出力する転送データを保持する。
【００５６】
セレクタ５０１は、プロセッサエレメントＰＥ１に対応して設けられる先頭セレクタに該当する。そして、セレクタ５０１は、フリップフロップ５２が保持する転送データと、プロセッサエレメントＰＥ１の右側に位置するプロセッサエレメントＰＥ２からの出力とのいずれか一方をデータシフト命令に応じて選択して出力する。
【００５７】
セレクタ５０ｎは、プロセッサエレメントＰＥｎに対応して設けられる末尾セレクタに該当する。セレクタ５０ｎは、フリップフロップ５１が保持する転送データと、プロセッサエレメントＰＥｎの左側に位置するプロセッサエレメントＰＥｎ−１からの出力とのいずれか一方をデータシフト命令に応じて選択して出力する。
【００５８】
このように、データ転送網２００では、フリップフロップを介して両端部に位置するプロセッサエレメント間のデータ転送を行うことで、現サイクルにおいて両端部に位置するプロセッサエレメントの一方が出力したデータを、次サイクルにおいて両端部に位置するプロセッサエレメントの他方に転送することができる。このような処理を行うことで、例えば、行列データの異なる行に属するデータ群を跨ぐデータシフト処理が可能になる。
【００５９】
続いて、実施の形態２にかかる半導体装置２の動作について説明する。実施の形態２にかかる半導体装置２は、異なる行に属するデータ群との間でデータシフト処理を行う場合に特徴の１つを有する。そこで、以下の説明では、１行で表現される４８個のデータを３行１６列の行列データに分割して保存した場合に、当該４８個のデータを右側にデータシフト処理する例について説明を行う。
【００６０】
実施の形態２にかかる半導体装置２においても、プロセッサエレメントにおいて具体的な処理を行う前に、共通データメモリ１２からプロセッサエレメントＰＥ１〜ＰＥ４のメモリ１２１〜１２４にデータを読み出す。そこで、図１６に実施の形態２にかかる半導体装置２のメモリ１２１〜１２４へのデータ群の読み出し動作を説明するための図を示す。図１６に示すように、この動作例では、データシフト処理の対象となるデータが共通データメモリ１２の３つのワード線アドレスに跨がって格納されている。そして、半導体装置１では、プロセッサエレメントＰＥ１のメモリ１２１のワード線アドレスＷ１の領域にデータ［０，０］〜［３，０］、ワード線アドレスＷ２の領域にデータ［０，１］〜［３，１］、ワード線アドレスＷ３の領域にデータ［０，２］〜［３，２］を格納する。また、プロセッサエレメントＰＥ２のメモリ１２２のワード線アドレスＷ１の領域にデータ［４，０］〜［７，０］、ワード線アドレスＷ２の領域にデータ［４，１］〜［７，１］、ワード線アドレスＷ３の領域にデータ［４，２］〜［７，２］を格納する。また、プロセッサエレメントＰＥ３のメモリ１２３のワード線アドレスＷ１の領域にデータ［８，０］〜［ｂ，０］、ワード線アドレスＷ２の領域にデータ［８，１］〜［ｂ，１］、ワード線アドレスＷ３の領域にデータ［８，２］〜［ｂ，２］を格納する。また、プロセッサエレメントＰＥ４のメモリ１２４のワード線アドレスＷ１の領域にデータ［ｃ，０］〜［ｆ，０］、ワード線アドレスＷ２の領域にデータ［ｃ，１］〜［ｆ，１］、ワード線アドレスＷ３の領域にデータ［ｃ，２］〜［ｆ，２］を格納する。つまり、図１６に示す例では、各プロセッサエレメントのメモリに４つのデータから構成されるデータ群が３つ格納される。なお、格納され３つのデータのうちの１つがそれぞれプロセッサエレメントにおける処理単位を示すデータ群に該当する。
続いて、実施の形態２にかかる半導体装置２では、メモリ１２１〜１２４に格納されているデータ群のうちワード線アドレスＷ１で示される領域に格納されたデータ（つまり、データ［０，０］〜［ｆ，０］）に対してデータを右側にシフトさせるデータシフト処理を行う。このワード線アドレスＷ１で示される領域に格納されたデータに対するデータシフト処理は、図９〜図１２で説明したデータシフト処理と同じであるためここでは説明を省略する。
なお、以下の説明では、メモリ１２１〜１２４のワード線アドレスＷ１で示される領域に格納されるデータに対するデータシフト処理は、ここで説明する動作例の１サイクル目のデータシフト処理であり、ワード線アドレスＷ２で示される領域に格納されるデータに対するデータシフト処理は、ここで説明する動作例の２サイクル目のデータシフト処理であり、ワード線アドレスＷ３で示される領域に格納されるデータに対するデータシフト処理は、ここで説明する動作例の３サイクル目のデータシフト処理である。
続いて、実施の形態２にかかる半導体装置２における１サイクル目の動作が終了した時点におけるデータ転送網２００の状態を図１７に示す。図１７に示すように、１サイクル目の処理が終了した時点では、フリップフロップ５１にはプロセッサエレメントＰＥ１が出力したデータ［３，０］が入力され、フリップフロップ５２にはプロセッサエレメントＰＥ４が出力したデータ［ｆ，０］が入力される。フリップフロップ５１、５２は、２サイクル目の処理が開始される前に入力されたデータを取り込む。
【００６１】
続いて、メモリ１２１〜１２４のワード線アドレスＷ２で示される領域に格納されたデータ群に対するデータシフト命令ＳＦＴの実行について説明する。まず、データシフト命令ＳＦＴに応じたデータ選択器１３１〜１３４の動作について説明する。図１８に半導体装置２の２サイクル目のデータ選択器の動作を説明するための図を示す。図１８に示す例では、出力元選択信号ＭＲＳＥＬとして０が入力されることに応じて、セレクタ２０１〜２０４がメモリ１２１から出力されるデータを選択する。図１８に示す例では、プロセッサエレメントＰＥ１ではデータ［０，１］〜［３，１］がデータ選択器からデータ置換器に与えられ、プロセッサエレメントＰＥ２ではデータ［４，１］〜［７，１］がデータ選択器からデータ置換器に与えられ、プロセッサエレメントＰＥ３ではデータ［８，１］〜［ｂ，１］がデータ選択器からデータ置換器に与えられ、プロセッサエレメントＰＥ４ではデータ［ｃ，１］〜［ｆ，１］がデータ選択器からデータ置換器に与えられる。
【００６２】
また、動作例では、データシフト命令がデータシフト方向として右側を示すため、セレクタ２０は、データ群のうち末尾ビット線アドレスに位置するデータを転送データＤｘとして出力する。図１８に示す例では、プロセッサエレメントＰＥ１が転送データＤｘとしてデータ［３，１］を出力し、プロセッサエレメントＰＥ２が転送データＤｘとしてデータ［７，１］を出力し、プロセッサエレメントＰＥ３が転送データＤｘとしてデータ［ｂ，１］を出力し、プロセッサエレメントＰＥ４が転送データＤｘとしてデータ［ｆ，１］を出力する。
【００６３】
続いて、２サイクル目のデータ置換器の動作について説明する。図１９に半導体装置２の２サイクル目のデータ置換器の動作を説明するための図を示す。動作例では、データシフト命令がデータシフト方向として右側を示すため、複数のセレクタは、それぞれ入力されるデータに対応するビット線アドレスを１つ増加させるようデータ群をシフトする。これにより、プロセッサエレメントＰＥ１ではデータＤ２〜Ｄ４として、データ［０，１］〜［２，１］を出力し、プロセッサエレメントＰＥ２ではデータＤ２〜Ｄ４として、データ［４，１］〜［６，１］を出力し、プロセッサエレメントＰＥ３ではデータＤ２〜Ｄ４として、データ［８，１］〜［ａ，１］を出力し、プロセッサエレメントＰＥ４ではデータＤ２〜Ｄ４として、データ［ｃ，１］〜［ｅ，１］を出力する。また、プロセッサエレメントＰＥ１〜ＰＥ４では、データＤ１としてデータなしの状態を出力する。
【００６４】
続いて、２サイクル目のデータ転送網２００の動作について説明する。図２０に半導体装置２のデータ転送網２００の動作を説明するための図を示す。図２０に示すように、この動作例では、データシフト命令がデータシフト方向として右側を示すため、セレクタ５０１〜５０４は、自セレクタの出力先のプロセッサエレメントの右側に位置するプロセッサエレメントＰＥが出力した転送データＤｘを選択する。このとき、データ転送網２００では、プロセッサエレメントＰＥ１の右側に位置するプロセッサエレメントには、プロセッサエレメントＰＥ４が該当する。また、２サイクル目の動作において、セレクタ５０１の端子Ｒに入力されるデータは、１サイクル目の動作でプロセッサエレメントＰＥ４が出力したデータである。そして、セレクタ５０１〜５０４は、それぞれ選択した転送データを自セレクタに対応するプロセッサエレメントに出力する。
【００６５】
より具体的には、図２０に示す例では、プロセッサエレメントＰＥ１が出力したデータ［３，１］がプロセッサエレメントＰＥ２に転送され、プロセッサエレメントＰＥ２が出力したデータ［７，１］がプロセッサエレメントＰＥ３に転送され、プロセッサエレメントＰＥ３が出力したデータ［ｂ，１］がプロセッサエレメントＰＥ４に転送され、プロセッサエレメントＰＥ４が１サイクル目の動作で出力したデータ［ｆ，０］がプロセッサエレメントＰＥ１に転送される。
【００６６】
続いて、２サイクル目のデータ結合器の動作について説明する。図２１に半導体装置２のデータ結合器の動作を説明するための図を示す。図２１に示すように、この動作例では、データシフト命令がデータシフト方向として右側を示すため、セレクタは、Ｒの符号が示される入力端子に入力されるデータを出力する。つまり、セレクタ４０１は、隣接プロセッサエレメントから出力されるデータを出力する。一方、セレクタ４０４は、データ置換器が出力するデータＤ４を出力する。
【００６７】
これにより、プロセッサエレメントＰＥ１のデータ結合器はメモリ１２１にデータＰ１〜Ｐ４としてデータ［ｆ，０］［０，１］〜［２，１］を出力する。また、プロセッサエレメントＰＥ２のデータ結合器はメモリ１２２にデータＰ１〜Ｐ４としてデータ［３，１］〜［６，１］を出力し、プロセッサエレメントＰＥ３のデータ結合器はメモリ１２３にデータＰ１〜Ｐ４としてデータ［７，１］〜［ａ，１］を出力し、プロセッサエレメントＰＥ４のデータ結合器はメモリ１２４にデータＰ１〜Ｐ４としてデータ［８，１］〜［ｅ，１］を出力する。
【００６８】
そして、図１７〜図２１で説明した動作を３サイクル目においても行うことで３行目のデータ群に対してもデータシフト処理を行うことができる。ここで、サイクル毎のメモリ１２１〜１２４の記憶状態の遷移を示す図を図２２に示す。図２２に示すように、実施の形態２にかかる半導体装置２は、１サイクル目においてワード線アドレスＷ１で示される領域に格納されるデータ群に対してデータシフト処理を行う。また、実施の形態２にかかる半導体装置２は、２サイクル目においてワード線アドレスＷ２で示される領域に格納されるデータ群に対してデータシフト処理を行うとともに、当該データ群の先頭にワード線アドレスＷ１で示される領域に格納されていた末尾データをワード線アドレスＷ２で示される領域の先頭データとする。また、実施の形態２にかかる半導体装置２は、３サイクル目においてワード線アドレスＷ３で示される領域に格納されるデータ群に対してデータシフト処理を行うとともに、当該データ群の先頭にワード線アドレスＷ２で示される領域に格納されていた末尾データをワード線アドレスＷ３で示される領域の先頭データとする。
【００６９】
続いて、実施の形態２にかかる半導体装置２では、プロセッサエレメントＰＥ１〜ＰＥ４を用いてデータシフト処理したデータ群を共通データメモリ１２に書き戻す。そこで、プロセッサエレメントのメモリから共通データメモリ１２へのデータ群書き出し動作を説明するための図を図２３に示す。図２３に示すように、書き戻し後のデータは、３行に分割して格納されるデータ群を一行のデータ群とした場合に、当該データ群を１つ右側にデータシフトしたものになる。
【００７０】
上記説明より、実施の形態２にかかる半導体装置２では、データ転送網２００が、両端に位置するプロセッサエレメントの間のデータ転送を、処理サイクルを跨いで行う。これにより半導体装置２では、移動するデータを別途一時保存領域に保持する等の複雑な演算を行うことなく、異なる行に属するデータ群の間でデータシフト処理を行うことができる。このような処理は、例えば、複数のプロセッサエレメントの１サイクルの処理では扱うことができない大きさの画像を扱う場合に有効である。
【００７１】
なお、本発明は上記実施の形態に限られたものではなく、趣旨を逸脱しない範囲で適宜変更することが可能である。
【符号の説明】
【００７２】
１、２    半導体装置
１０    プロセッサエレメント制御部
１１    命令メモリ
１２    共通データメモリ
２０、２０１〜２０ｍ、２０４    セレクタ
４０１〜４０ｍ、４０４    セレクタ
３０１-３０ｍ    セレクタ
５０１〜５０ｎ、５０４    セレクタ
５１、５２    フリップフロップ
１００、２００    データ転送網
１０１〜１０ｎ    演算部
１１１〜１１ｎ    レジスタファイル
１２１〜１２ｍ    メモリ
１３１    データ選択器
１４１    データ置換器
１５１    データ置換器
ＭＲＳＥＬ    出力元選択信号
ＰＥ１〜ＰＥｎ、ＰＥ４    プロセッサエレメント
ＳＦＴ    データシフト命令
【図１】
2014035578.tif 000003
【図２】
2014035578.tif 000004
【図３】
2014035578.tif 000005
【図４】
2014035578.tif 000006
【図５】
2014035578.tif 000007
【図６】
2014035578.tif 000008
【図７】
2014035578.tif 000009
【図８】
2014035578.tif 000010
【図９】
2014035578.tif 000011
【図１０】
2014035578.tif 000012
【図１１】
2014035578.tif 000013
【図１２】
2014035578.tif 000014
【図１３】
2014035578.tif 000015
【図１４】
2014035578.tif 000016
【図１５】
2014035578.tif 000017
【図１６】
2014035578.tif 000018
【図１７】
2014035578.tif 000019
【図１８】
2014035578.tif 000020
【図１９】
2014035578.tif 000021
【図２０】
2014035578.tif 000022
【図２１】
2014035578.tif 000023
【図２２】
2014035578.tif 000024
【図２３】
2014035578.tif 000025