(57)【特許請求の範囲】
【請求項１】
状態遷移を定める単位コードから構成されるプログラムコードを記憶する第１の記憶部と、
前記単位コードと関連付けて第１ベースアドレス情報を記憶する第２の記憶部と、
前記第１の記憶部に記憶された前記プログラムコードを前記単位コードごとに逐次読み出し、読み出した前記単位コードを実行して状態遷移するコントローラと、
前記コントローラから受信するデータに対して、内蔵する第３の記憶部上の回路情報で定められる演算処理を行う第１の演算装置と、
前記第１の演算装置の演算処理の結果に対して、内蔵する第４の記憶部上の回路情報で定められる演算処理を行う第２の演算装置と、
前記データを記憶する第５の記憶部と、
前記第５の記憶部から読み出すデータを指定するアドレスを生成するための第１オフセット情報と、前記第３および第４の記憶部上の前記回路情報を指定するポインタとを、前記コントローラが状態遷移する状態ごとに関連付けて記憶する第６の記憶部とを備え、
前記コントローラは、前記第２の記憶部から実行中の前記単位コードと関連付けられた前記第１ベースアドレス情報を読み出し、前記第６の記憶部から現在の状態と関連付けられた前記第１オフセット情報と前記ポインタとを読み出して、読み出した前記第１ベースアドレス情報と前記オフセット情報とを演算することによって第１アドレスを算出し、算出した前記第１アドレスで指定される前記第５の記憶部上のデータと、読み出した前記ポインタとを前記第１の演算装置へ送信し、
前記第１の演算装置は、前記ポインタで指定される前記第３の記憶部上の前記回路情報を読み出して、その前記回路情報で定められる演算処理を前記データに対して行い、
前記第２の演算装置は、前記第１の演算装置から受信した前記ポインタで指定される前記第４の記憶部上の前記回路情報を読み出して、その前記回路情報で定められる演算処理を、前記第１の演算装置の演算処理の結果に対して行うことを特徴とする半導体装置。
【請求項２】
前記第６の記憶部が、前記コントローラが状態遷移する状態ごとに１つの前記ポインタを記憶し、
前記１つのポインタは、前記第１の演算装置によって前記第３の記憶部上の前記回路情報が読み出される際と、前記第２の演算装置によって前記第４の記憶部上の前記回路情報が読み出される際の双方で使用されることを特徴とする請求項１に記載の半導体装置。
【請求項３】
前記第２の記憶部は、第２ベースアドレス情報を、前記単位コードと前記第１ベースアドレス情報と関連付けて記憶し、
前記第６の記憶部は、前記第５の記憶部へデータを書き込む領域を指定するアドレスを生成するための第２オフセット情報を、前記第１オフセット情報と前記ポインタと関連付けて記憶し、
前記コントローラは、前記第２の記憶部から実行中の前記単位コードと関連付けられた前記第２ベースアドレス情報を読み出し、前記第６の記憶部から現在の状態と関連付けられた前記第２オフセット情報とを読み出して、読み出した前記第２ベースアドレス情報と前記第２オフセット情報とを演算することによって第２アドレスを算出し、前記第２の演算装置の演算処理の結果を、算出した前記第２アドレスで指定される前記第５の記憶部の領域へ書き込むことを特徴とする請求項１に記載の半導体装置。
【請求項４】
前記コントローラは、異なる前記単位コードを実行したときに同一の状態へ状態遷移することはなく、
前記コントローラは、前記単位コードの実行が終了した後、実行済みの前記単位コードによって使用された前記第１オフセット情報と前記ポインタとが記憶されている前記第６の記憶部上の記憶領域に、新たな第１オフセット情報とポインタとを上書きすることを特徴とする請求項１に記載の半導体装置。
【請求項５】
前記プログラムコードを構成する前記単位コードは、１つ以上の状態の繰り返しグループと、その繰り返しグループの繰り返し回数とが関連付けられた情報を有することを特徴とする請求項１に記載の半導体装置。
【請求項６】
状態遷移を定める単位コードから構成されるプログラムコードを記憶する第１の記憶部と、
前記第１の記憶部に記憶された前記プログラムコードを前記単位コードごとに逐次読み出し、読み出した前記単位コードを実行して状態遷移するコントローラと、
サイクルごとに、内蔵する記憶部上の回路情報で定められる演算処理を行う第１および第２の演算装置と、
前記第１および第２の演算装置に内蔵される記憶部上の回路情報を指定するポインタを、前記コントローラが状態遷移する状態ごとに関連付けて記憶する第２の記憶部とを備え、
前記コントローラは、前記サイクルごとに、現在の状態と関連付けられた前記ポインタを前記第２の記憶部から読み出して前記第１の演算装置へ送信し、
前記第１の演算装置は、前記サイクルごとに、前記ポインタで指定される回路情報を、内蔵する記憶部から読み出して、その回路情報で定められる演算処理を行うとともに、前記ポインタを前記第２の演算装置へ送信し、
前記第２の演算装置は、前記サイクルごとに、前記ポインタで指定される回路情報を、内蔵する記憶部から読み出して、その前記回路情報で定められる演算処理を行うことを特徴とする半導体装置。
【請求項７】
状態遷移を定める単位コードから構成されるプログラムコードを記憶する第１の記憶部と、
前記第１の記憶部に記憶された前記プログラムコードを前記単位コードごとに逐次読み出し、読み出した前記単位コードを実行して状態遷移するコントローラと、
サイクルごとに、第１回路情報で定められるデータ処理を行う入力クロスバースイッチと、
前記サイクルごとに、内蔵する記憶部上の回路情報で定められる演算処理を行う第１の演算装置と、
前記第１回路情報と、前記第１の演算装置に内蔵される記憶部上の回路情報を指定するポインタとを記憶する第２の記憶部とを備え、
前記第１回路情報は、前記コントローラが状態遷移する状態と関連付けられており、
前記ポインタは、前記コントローラが状態遷移する状態と関連付けられており、
前記コントローラは、前記サイクルごとに、現在の状態と関連付けられた前記第１回路情報と前記ポインタとを前記第２の記憶部から読み出して、前記第１回路情報を前記入力クロスバースイッチへ送信するとともに、前記ポインタを前記第１の演算装置へ送信し、
前記第１の演算装置は、前記サイクルごとに、前記ポインタで指定される回路情報を、内蔵する記憶部から読み出して、その前記回路情報で定められる演算処理を行うことを特徴とする半導体装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、半導体装置に関するものである。
【背景技術】
【０００２】
近年、携帯機器などコスト低減や低消費電力が求められる機器において、機能の複雑化、多様化が進み、高い処理速度が必要とされている。高い処理性能と低消費電力とを両立させるためには、専用ハードウェアの製造・開発は避けられない。しかしながら、機能の複雑化・多様化に伴い専用ハードウェアの製造・開発費は年々増大している。
【０００３】
製造・開発費を削減するものとして、動的リコンフィギュラブル回路技術を用いた半導体装置が注目されている（例えば、非特許文献１。）。
【０００４】
この非特許文献１に開示された半導体装置では、演算処理を行う基本要素であるＰＥ（Ｐｒｏｃｅｓｓｉｎｇ  Ｅｌｅｍｅｎｔ）が２次元アレイ状に並べられ、その中央にコントローラが配置される。各ＰＥは、その回路の構成を動的に変更することができる演算装置である。また、この半導体装置が備える命令メモリには、各ＰＥで行われる演算の種類やＰＥ間の接続関係を定める回路情報が記憶されている。各ＰＥは、命令メモリに記憶された回路情報に従ってその回路構成が動的に変更されながら、互いにデータの送受信を行い、演算処理を行う。
【非特許文献１】末吉敏則他著「リコンフィギャラブルシステム」オーム社  平成１７年８月２５日発行  １８９〜２０８頁
【発明の開示】
【発明が解決しようとする課題】
【０００５】
このような半導体装置では、命令メモリの記憶容量が小さくても、その処理性能が高いことが望ましい。しかしながら、非特許文献１に開示されているような、動的リコンフィギュラブル回路技術を用いた半導体装置では、命令メモリの記憶容量とその処理性能とはトレードオフの関係にある。
【０００６】
例えば、各ＰＥで行われる演算処理が変更されるとともに各ＰＥの回路構成が動的に変更される場合、命令メモリの記憶容量が十分に大きく実行中の回路情報とこれから実行される回路情報の双方を記憶できれば、命令メモリに対して新たに回路情報を書き込むことなく、各ＰＥは命令メモリに記憶された回路情報に従って演算処理を行うことができる。このとき、各ＰＥが演算処理を変更するのに要する時間は短くなるため、その処理性能は高い。
【０００７】
一方、命令メモリの記憶容量が小さく変更前の回路情報しか記憶できなければ、各ＰＥで行われる演算処理が変更される際に、変更後の回路情報を命令メモリへ書き込む必要がある。そのため、変更後の回路情報を命令メモリへ書き込む間、各ＰＥは演算処理を行うことができず、その処理性能は劣化する。
【０００８】
本発明は、上記に鑑みてなされたものであって、処理性能の劣化を抑制しながら、命令メモリの容量を小さくすることができる半導体装置を提供することを目的とする。
【課題を解決するための手段】
【０００９】
上記目的を達成するために、本発明の実施形態に係る半導体装置は、状態遷移を定める単位コードから構成されるプログラムコードを記憶する第１の記憶部と、単位コードと関連付けてベースアドレス情報を記憶する第２の記憶部と、第１の記憶部に記憶されたプログラムコードを単位コードごとに逐次読み出し、読み出した単位コードを実行して状態遷移するコントローラと、コントローラから受信するデータに対して、コントローラから受信する回路情報で定められる演算処理を行う第１の演算装置と、第１の演算装置の演算処理の結果に対して、コントローラから受信する回路情報で定められる演算処理を行う第２の演算装置と、データを記憶する第３の記憶部と、第１および第２の演算装置で行われる演算処理を定める回路情報を記憶する第４の記憶部と、第３の記憶部から読み出すデータを指定するアドレスを生成するためのオフセット情報と、第４の記憶部上の回路情報を指定するポインタとを、コントローラが状態遷移する状態ごとに関連付けて記憶する第５の記憶部とを備え、コントローラは、第２の記憶部から実行中の単位コードと関連付けられたベースアドレス情報を読み出し、第５の記憶部から現在の状態と関連付けられたオフセット情報とポインタとを読み出して、読み出したベースアドレス情報とオフセット情報とを演算することによってアドレスを算出し、算出したアドレスで指定される第３の記憶部上のデータを第１の演算装置へ送信するとともに、読み出したポインタで指定される第４の記憶部上の回路情報を第１および第２の演算装置へ送信することを特徴とする。
また、本発明の実施形態に係る半導体装置は、状態遷移を定める単位コードから構成されるプログラムコードを記憶する第１の記憶部と、第１の記憶部に記憶されたプログラムコードを単位コードごとに逐次読み出し、読み出した単位コードを実行して状態遷移するコントローラと、サイクルごとに、第１回路情報で定められるデータ処理を行う入力クロスバースイッチと、サイクルごとに、内蔵する記憶部上の回路情報で定められる演算処理を行う第１の演算装置と、第１回路情報と、第１の演算装置に内蔵される記憶部上の回路情報を指定するポインタとを記憶する第２の記憶部とを備え、第１回路情報は、コントローラが状態遷移する状態と関連付けられており、ポインタは、コントローラが状態遷移する状態と関連付けられており、コントローラは、サイクルごとに、現在の状態と関連付けられた第１回路情報とポインタとを第２の記憶部から読み出して、第１回路情報を入力クロスバースイッチへ送信するとともに、ポインタを第１の演算装置へ送信し、第１の演算装置は、サイクルごとに、ポインタで指定される回路情報を、内蔵する記憶部から読み出して、その回路情報で定められる演算処理を行うことを特徴とする。
【発明の効果】
【００１０】
本発明によれば、処理性能の劣化を抑制しながら、命令メモリの容量を小さくすることができる。
【発明を実施するための最良の形態】
【００１１】
以下、本発明の実施形態について説明する。
【００１２】
図１は、本実施形態に係る半導体装置１の構成を示すブロック図である。  
本実施形態に係る半導体装置１は、演算ユニット１０Ａ〜１０Ｅと、コントローラ１１と、データ入出力バッファ１２と、コードバッファ１３と、コード転送要求記憶部１４と、コード転送制御部１５とを備える。
【００１３】
コントローラ１１は、データ入出力バッファ１２とコードバッファ１３とコード転送制御部１５と接続される。コード転送制御部１５は、コントローラ１１とコードバッファ１３とコード転送要求記憶部１４と接続される。演算ユニット１０Ａは、コントローラ１１と演算ユニット１０Ｂと接続される。演算ユニット１０Ｂは、演算ユニット１０Ａと演算ユニット１０Ｃと接続される。演算ユニット１０Ｃは、演算ユニット１０Ｂと演算ユニット１０Ｄと接続される。演算ユニット１０Ｄは、演算ユニット１０Ｃと演算ユニット１０Ｅと接続される。演算ユニット１０Ｅは、演算ユニット１０Ｄとコントローラ１１と接続される。
【００１４】
外部プロセッサ２は、システムメモリ３へアクセスし、システムメモリ３に記憶されたプログラムに従って動作する。外部プロセッサ２は、半導体装置１へデータやプログラムコードを送信し、データ処理を指示する。外部プロセッサ２は、データ入出力バッファ１２とコードバッファ１３とコード転送要求記憶部１４とに対して直接アクセスする。
【００１５】
演算ユニット１０Ａ〜１０Ｅは、演算器の回路構成を指定する回路情報を受信する。演算ユニット１０Ａ〜１０Ｅは、それぞれ、複数の回路情報を記憶する。
【００１６】
演算ユニット１０Ａ〜１０Ｅは、データ処理時に、演算処理の対象となるデータと、記憶する複数の回路情報のうちいずれの回路情報に従って演算処理を行うかを決定する回路情報ポインタとを受信する。演算ユニット１０Ａ〜１０Ｅは、受信した回路情報ポインタで指定される回路情報に従って、受信したデータに対して演算処理を行う。そして、演算ユニット１０Ａ〜１０Ｅは、演算結果であるデータと回路情報ポインタとを送信する。
【００１７】
演算ユニット１０Ａ〜１０Ｅでは、データと回路情報ポインタとが演算ユニット間を１サイクルに１回伝搬され、演算ユニット１０Ａから１０Ｅまで５サイクルかけて伝搬される。例えば、あるサイクルでコントローラ１１から演算ユニット１０Ａへ送信されたデータと回路情報ポインタは、次のサイクルで演算ユニット１０Ａから演算ユニット１０Ｂへ送信される。さらにその次のサイクルでは、演算ユニット１０Ａから演算ユニット１０Ｂへ送信されたデータと回路情報ポインタは、演算ユニット１０Ｂから演算ユニット１０Ｃへ送信される。
【００１８】
以下、演算ユニット１０Ｃから１０Ｅまで、同様に、データと回路情報ポインタとが伝播していき、それぞれの演算ユニットで演算処理が行われる。演算ユニット１０Ｅがデータをコントローラ１１へ送信して、演算ユニット１０Ａ〜１０Ｅによるデータ処理が終了する。
【００１９】
なお、サイクルとは、同期式回路において記憶素子部の値が変化してから、次に記憶素子部の値が変化するまでの最小時間単位である。
【００２０】
データ入出力バッファ１２は、演算ユニット１０Ａ〜１０Ｅが演算に使用するデータやその演算結果を一時的に記憶する。データ入出力バッファ１２には、演算ユニット１０Ａ〜１０Ｅによる演算処理が開始される前に、データが、外部プロセッサ２によって書き込まれる。演算ユニット１０Ａ〜１０Ｅはそのデータを使用して演算処理を行う。その演算結果は、データ入出力バッファ１２に書き込まれる。データ入出力バッファ１２に書き込まれた演算結果は、外部プロセッサ２によって読み出される。
【００２１】
コードバッファ１３は、コントローラ１１の動作を指定するプログラムコードと、データ入出力バッファ１２に対するデータ読み出し、データ書き込みの位置を指定するデータパス回路情報と、演算ユニット１０Ａ〜１０Ｅの演算処理に使用される演算ユニット回路情報とを記憶する。コードバッファ１３には、演算ユニット１０Ａ〜１０Ｅによる演算処理が開始される前に、外部プロセッサ２によってプログラムコードとデータパス回路情報と演算ユニット回路情報とが書き込まれる。
【００２２】
コントローラ１１は、コードバッファ１３から転送されたプログラムコードに従って、回路情報ポインタを演算ユニット１０Ａ〜１０Ｅへ送信して、演算処理を制御する。コントローラ１１は、コードバッファ１３に記憶されたデータパス回路情報に従って、データ入出力バッファ１２に対するデータアクセスを制御する。
【００２３】
コード転送要求記憶部１４は、コードバッファ１３に記憶されたプログラムコードやデータパス回路情報、演算ユニット回路情報のうち、いずれをコントローラ１１や演算ユニット１０Ａ〜１０Ｅへ送信するかを指定するためのコード転送要求情報を記憶する。
【００２４】
コード転送要求記憶部１４には、外部プロセッサ２によってコード転送要求情報が順に記憶される。コード転送要求記憶部１４は、ＦＩＦＯ（Ｆｉｒｓｔ  Ｉｎ  Ｆｉｒｓｔ  Ｏｕｔ）である。コード転送要求記憶部１４は、コード転送要求情報をコード転送制御部１５へ送信する。コード転送制御部１５へ送信されたコード転送要求情報が記憶されていた記憶領域には、外部プロセッサ２によって新たにコード転送要求情報が書き込まれる。
【００２５】
なお、コード転送要求記憶部１４は、コード転送要求情報を記憶するための空き容量がない場合には、コード転送要求情報を受け付けられない旨を外部プロセッサ２へ通知する。
【００２６】
コード転送制御部１５は、コード転送要求記憶部１４から受信したコード転送要求情報に従って、コードバッファ１３に記憶されたプログラムコードとデータパス回路情報と演算ユニット回路情報とをコントローラ１１へ送信する。なお、演算ユニット回路情報は、コントローラ１３を経由して、演算ユニット１０Ａ〜１０Ｅへ送信される。
【００２７】
コード転送制御部１５は、コード転送要求記憶部１４から読み出したコード転送要求情報に指定されるすべてのプログラムコードとデータパス回路情報と演算ユニット回路情報の送信を完了した後、コントローラ１１に演算処理を開始させるためのデータ処理開始通知を送信し、コード転送要求記憶部１４に新たなコード転送要求情報を送信させるためのコード転送要求完了通知を送信する。
【００２８】
次に、本実施形態に係る半導体装置１の処理の概要を説明する。なお、半導体装置１の処理を、プログラムコードとデータパス回路情報とがコントローラ１１に記憶され演算ユニット回路情報が演算ユニット１０Ａ〜１０Ｅに記憶されるまでの初期化処理と、コントローラ１１がプログラムコードに従い演算ユニット１０Ａ〜１０Ｅに演算処理を行わせるデータ処理と、の２つに大別して、以下では説明する。なお、半導体装置１では、初期化処理とデータ処理とが同時に実行される。
【００２９】
［初期化処理］
まず、外部プロセッサ２は、データをデータ入出力バッファ１２へ書き込み、プログラムコードと回路情報をコードバッファ１３へ書き込む。
【００３０】
次に、外部プロセッサ２は、コード転送要求情報をコード転送要求記憶部１４へ書き込む。コード転送要求情報は、プログラムコードとデータパス回路情報と演算ユニット回路情報とがコードバッファ１３のどの位置に記憶されているかを示すアドレス情報と、プログラムコードとデータパス回路情報と演算ユニット回路情報の大きさを示すサイズ情報とを有する。
【００３１】
次に、コード転送制御部１５は、コード転送要求記憶部１４に一番古く記憶されたコード転送要求情報を読み出す。
【００３２】
次に、コード転送制御部１５は、そのコード転送要求情報に従って、コードバッファ１３からプログラムコードとデータパス回路情報と演算ユニット回路情報をコントローラ１１へ転送する。なお、演算ユニット回路情報は、コントローラ１１を経由して、演算ユニット１０Ａ〜１０Ｅに受信される。
【００３３】
プログラムコードとデータパス回路情報と演算ユニット回路情報の転送が完了した後に、コード転送制御部１５は、コントローラ１１へデータ処理を開始させるためのデータ処理開始通知を送信する。コントローラ１１は、データ処理開始通知を受け、データ処理を開始する。また、コード転送制御部１５は、コード転送要求記憶部１４に新たなコード転送要求情報を送信させるためのコード転送要求完了通知を送信する。
【００３４】
以後、コード転送制御部１５は、コード転送要求記憶部１４に記憶されたコード転送要求情報のうち次に古く記憶されたコード転送要求情報に従って、プログラムコードとデータパス回路情報と演算ユニット回路情報とをコードバッファ１３からコントローラ１１へ転送する。
【００３５】
次のデータ処理に必要なプログラムコードとデータパス回路情報と演算ユニット回路情報とをすべて転送し終えたら、コード転送制御部１５は、コントローラ１１へ次のデータ処理開始通知を送信する。そして、コントローラ１１は、データ処理開始通知を受信したのち、次のデータ処理を行う。
【００３６】
なお、コード転送制御部１５は、コントローラ１１から受信するデータ処理の進捗状況に応じて、コードバッファ１３に記憶されたプログラムコードとデータパス回路情報と演算ユニット回路情報のうちいずれをコントローラ１１へ転送することができるかをサイクルごとに判断する。コード転送制御部１５は、転送可能と判断されたものをコントローラ１１へ転送する。
【００３７】
以上が、初期化処理の説明である。次に、データ処理開始通知がなされた後に、コントローラ１１が行うデータ処理について説明する。
【００３８】
［データ処理］
まず、コントローラ１１は、コード転送制御部１５からデータ処理開始通知を受信すると、コード転送制御部１５から送信されたプログラムコードをサイクルごとに実行する。
【００３９】
即ち、コントローラ１１は、データ入出力バッファ１２からのデータの読み出し、およびデータ入出力バッファ１２へのデータの書き込みを行う。そして、コントローラ１１は、データ入出力バッファ１２から読み出したデータとコードバッファ１３から転送された回路情報ポインタとを、演算ユニット１０Ａへ送信する。また、コントローラ１１は、演算ユニット１０Ｅから受信した演算結果をデータ入出力バッファ１２へ書き込む。さらに、コントローラ１１は、データ処理の進捗状況を、コード転送制御部１５に通知する。
【００４０】
次に、演算ユニット１０Ａは、データと回路情報ポインタとをコントローラ１１から受信し、演算処理を行う。
【００４１】
即ち、演算ユニット１０Ａは、受信した回路情報ポインタで指定される回路情報を内蔵する記憶部から読み出し、その回路情報に従って内蔵する演算器の構成を変更する。そして、演算ユニット１０Ａは、受信したデータを入力として、演算器によって演算処理を行う。演算処理が終了した後、演算ユニット１０Ａは、その演算結果と回路情報ポインタとを演算ユニット１０Ｂへ送信する。なお、演算ユニット１０Ａが演算ユニット１０Ｂへ送信する回路情報ポインタは、演算ユニット１０Ａがコントローラ１１から受信した回路情報ポインタと同一である。以後、同一の回路情報ポインタが、演算ユニット１０Ｂ〜１０Ｅへ次々と転送される。
【００４２】
次に、演算ユニット１０Ｂは、データと回路情報ポインタを演算ユニット１０Ａから受信し、演算ユニット１０Ａと同様に演算処理を行う。演算ユニット１０Ｂは、演算処理が終了した後、演算結果と回路情報ポインタとを演算ユニット１０Ｃへ送信する。
【００４３】
なお、演算ユニット１０Ｃ〜１０Ｅにおいても、演算ユニット１０Ａと同様に演算処理が行われる。ただし、演算ユニット１０Ｅの演算結果は、コントローラ１１へ送信される。
【００４４】
以上のようにして、コントローラ１１は、データ処理をサイクルごとに実行する。
【００４５】
なお、演算ユニット１０Ａから１０Ｅまでのデータ処理は計５サイクルを要するため、いわゆるパイプラインのように、５つのデータ処理が並列して実行されることとなる。
【００４６】
次に、コントローラ１１は、すべてのプログラムコードを実行した時点で、外部プロセッサ２へデータ処理が完了した旨を通知し、データ処理を終了する。外部プロセッサ２は、データ処理が完了した旨の通知を受けてから所定サイクル経過した後に、データ入出力バッファ１２に記憶されたデータ処理の結果を読み出す。ここで、所定サイクルは、演算ユニットの数と、データ入出力バッファ１２へのデータ書き込みに要するサイクル数とを加算したサイクル数となる。
【００４７】
以上が、データ処理の説明である。次に、本実施形態に係る半導体装置１の内部構成について詳細に説明する。
【００４８】
図２は、コード転送要求記憶部１４の構成を示すブロック図である。  
コード転送要求記憶部１４は、コード転送要求ラッチ１４０Ａ〜１４０Ｄと、Ｖａｌｉｄラッチ１４１Ａ〜１４１Ｄと、カウンタ１４２１、１４２２と、デコーダ１４３１〜１４３２と、論理積演算器１４４Ａ〜１４４Ｄ、１４６Ａ〜１４６Ｄと、論理和演算器１４５Ａ〜１４５Ｄと、セレクタ１４７１〜１４７３とを備える。
【００４９】
コード転送要求記憶部１４には、外部プロセッサ２からコード転送要求情報とコード転送要求有効信号が入力され、コード転送制御部１５からコード転送要求完了通知が入力される。
【００５０】
まず、外部プロセッサ２からコード転送要求情報とコード転送要求有効信号が入力された際のコード転送要求記憶部１４の処理について説明する。  
コード転送要求情報は、プログラムコードとデータパス回路情報と演算ユニット回路情報のコードバッファ１３上のアドレスと、それぞれのサイズを示す情報である。コード転送要求有効信号は、外部プロセッサ２からコード転送要求記憶部１４へコード転送要求情報を書き込む際に“１”となり、それ以外では“０”となる信号である。
【００５１】
カウンタ１４２１は、外部プロセッサ２からコード転送要求有効信号が入力される。カウンタ１４２１は、コード転送要求有効信号が入力されるたびに、その値が「＋１」ずつインクリメントされる飽和カウンタであって、その最大値は“３”である。そのため、カウンタ１４２１の出力は、“０”、“１”、“２”、“３”、“０”、“１”・・・と変化する。カウンタ１４２１の出力が取り得る値の種類数は４つであり、コード転送要求情報をＦＩＦＯによって記憶できる最大数、即ちコード転送要求ラッチ１４０Ａ〜１４０Ｄの数と等しい。なお、カウンタ１４２１とカウンタ１４２２の初期値は同じ値が設定される。
【００５２】
デコーダ１４３１は、カウンタ１４２１の値が入力され、その値ごとに４つの出力のうちのいずれか１つの出力を“１”とし、他の出力を“０”とする。
【００５３】
論理積演算器１４４Ａ〜１４４Ｄは、それぞれ、デコーダ１４３１の出力を一方の入力とし、外部プロセッサ２から入力されるコード転送要求有効信号を他方の入力とし、論理積演算を行う。論理積演算器１４４Ａ〜１４４Ｄの出力は、コード転送要求ラッチ１４０Ａ〜１４０Ｄのトリガ、Ｖａｌｉｄラッチ１４１Ａ〜１４１Ｄの入力とトリガに入力される。例えば、論理積演算器１４４Ａの出力が“１”である場合、コード転送要求ラッチ１４０Ａには外部プロセッサ２から入力されるコード転送要求情報が記憶され、Ｖａｌｉｄラッチ１４１Ａには“１”が記憶される。
【００５４】
セレクタ１４７１は、カウンタ１４２１の値に応じて、Ｖａｌｉｄラッチ１４１Ａ〜１４１Ｄの出力のうちいずれか１つを選択して、コード転送ビジー信号として、外部プロセッサ２へ送信する。即ち、セレクタ１４７１は、コード転送要求情報が次に書き込まれるコード転送要求ラッチ１４０Ａ〜１４０Ｄと対応するＶａｌｉｄラッチ１４１Ａ〜１４１Ｄの出力を選択して、外部プロセッサ２へ送信する。
【００５５】
Ｖａｌｉｄラッチ１４１Ａ〜１４１Ｄの値“１”は、対応するコード転送要求ラッチ１４０Ａ〜１４０Ｄに有効なコード転送要求情報が記憶されていることを示す。そのため、コード転送ビジー信号が“１”の場合には、外部プロセッサ２はコード転送要求記憶部１４にコード転送要求情報を書き込むことはできない。
【００５６】
次に、コード転送制御部１５からコード転送要求完了通知が入力された際のコード転送要求記憶部１４の処理について説明する。  
コード転送要求完了通知は、コード転送制御部１５がコード転送要求記憶部１４から読み出したコード転送要求情報に従って、コードバッファ１３からプログラムコードと回路情報とをコントローラ１１へ転送する処理が完了した際に“１”となり、それ以外では“０”となる信号である。
【００５７】
カウンタ１４２２は、コード転送制御部１５からコード転送要求完了通知が入力される。カウンタ１４２２は、コード転送要求完了通知が入力されるたびに、その値が「＋１」ずつインクリメントされる飽和カウンタであり、カウンタ１４３１と同様、“０”、“１”、“２”、“３”、“０”、“１”・・・とその値が変化する。
【００５８】
デコーダ１４３２は、カウンタ１４２２の値に応じて、４つの出力のうちのいずれか１つの出力を“１”とし、他の出力を“０”とする。なお、デコーダ１４３２とデコーダ１４３１との入出力関係を定めるデコード規則は、同一に設定される。
【００５９】
論理積演算器１４６Ａ〜１４６Ｄは、それぞれ、デコーダ１４３２の出力を一方の入力とし、コード転送制御部１５から入力されたコード転送要求完了通知を他方の入力とし、論理積演算を行う。論理積演算器１４６Ａ〜１４６Ｄの出力は、Ｖａｌｉｄラッチ１４１Ａ〜１４１Ｄのトリガへ入力される。
【００６０】
ここで、論理積演算器１４４Ａ〜１４４Ｄの出力、即ちＶａｌｉｄラッチ１４１Ａ〜１４１Ｄの入力は“０”である。そのため、論理積演算器１４６Ａ〜１４６Ｄのいずれかの出力が“１”となり、その出力“１”がＶａｌｉｄラッチ１４１Ａ〜１４１Ｄのいずれかのトリガに入力された場合、そのＶａｌｉｄラッチの値は“０”となる。例えば、論理積演算器１４６Ａの出力が“１”となった場合、Ｖａｌｉｄラッチ１４１Ａの値は“０”となる。これによって、Ｖａｌｉｄラッチ１４１Ａに対応するコード転送要求ラッチ１４０Ａへ、新たなコード転送要求情報の書き込みが許可される。
【００６１】
セレクタ１４７２は、カウンタ１４２２の値に応じて、コード転送要求ラッチ１４０Ａ〜１４０Ｄの出力のうちいずれか１つを選択して、コード転送制御部１５へ送信する。即ち、セレクタ１４７２は、コード転送要求完了通知が“１”とされた場合に、次に処理されるコード転送要求が記憶されるコード転送要求ラッチの出力を選択して、コード転送制御部１５へ送信する。
【００６２】
セレクタ１４７３は、カウンタ１４２２の値に応じて、Ｖａｌｉｄラッチ１４１Ａ〜１４１Ｄの出力のうちいずれか１つを選択して、コード転送制御部１５へ送信する。即ち、セレクタ１４７３は、セレクタ１４７２によって選択されたコード転送要求ラッチに対応するＶａｌｉｄラッチの出力を選択して、コード転送制御部１５へ送信する。なお、セレクタ１４７３の出力は、Ｖａｌｉｄ信号として、そのコード転送要求情報が有効であることを確認するために使用される。
【００６３】
図３は、コード転送制御部１５の構成を示すブロック図である。  
コード転送制御部１５は、ラッチ１５０Ａ〜１５０Ｈと、カウンタ１５１Ａ〜１５１Ｄと、加算器１５２Ａ〜１５２Ｃと、比較器１５３Ａ〜１５３Ｅ、１５４と、セレクタ１５５Ａ、１５５Ｂと、デコーダ１５６と、論理積演算器１５７Ａ〜１５７Ｆと、論理和演算器１５８Ａ〜１５８Ｄとを備える。
【００６４】
コード転送制御部１５には、コード転送要求記憶部１４からコード転送要求情報とＶａｌｉｄ信号が入力される。コード転送要求情報は、コードバッファ１３における、プログラムコードの先頭アドレスとそのサイズ、データパス回路情報の先頭アドレスとそのサイズ、演算ユニット回路情報の先頭アドレスとそのサイズとから構成される。
【００６５】
なお、プログラムコードは、データ処理時のコントローラ１１の動作を指定する。データパス回路情報は、データ処理時のコントローラ１１によるデータ入出力バッファ１２へのデータアクセスを指定する。演算ユニット回路情報は、演算ユニット１０Ａ〜１０Ｅの演算器の回路構成を指定する。
【００６６】
コード転送制御部１５は、ラッチ１５０Ｇが“１”のサイクルに、コード転送要求記憶部１４からコード転送要求情報とＶａｌｉｄ信号“１”が入力されると、コード転送要求情報をラッチ１５０Ａ〜１５０Ｇに記憶する。
【００６７】
ラッチ１５０Ａがプログラムコードの先頭アドレスを記憶する。ラッチ１５０Ｂがプログラムコードのサイズを記憶する。ラッチ１５０Ｃがデータパス回路情報の先頭アドレスを記憶する。ラッチ１５０Ｄがデータパス回路情報のサイズを記憶する。ラッチ１５０Ｅが演算ユニット回路情報の先頭アドレスを記憶する。ラッチ１５０Ｆが演算ユニット回路情報のサイズを記憶する。
【００６８】
なお、ラッチ１５０Ｇはコード転送制御部１５のラッチ１５０Ａ〜１５０Ｆに対する書き込みの可否を制御する。ラッチ１５０Ｇが“１”の場合、コード転送要求記憶部１４から送信されたＶａｌｉｄなコード転送要求情報はラッチ１５０Ａ〜１５０Ｆに書き込まれ、ラッチ１５０Ｇの値は“０”に更新される。一方、ラッチ１５０Ｇが“０”の場合、コード転送要求記憶部１４からＶａｌｉｄなコード転送要求情報を受信したとしても、ラッチ１５０Ａ〜１５０Ｆに記憶されているコード転送要求情報は更新されない。ラッチ１５０Ａ〜１５０Ｆに記憶されているコード転送要求情報に従って、すべてのプログラムコードおよびデータパス回路情報、演算ユニット回路情報がコントローラ１１に転送された時点で、ラッチ１５０Ｇの値は“１”に戻る。
【００６９】
また、コード転送要求記憶部１４からコード転送要求情報とともに送信されるＶａｌｉｄ信号が“１”のとき、そのコード転送要求情報が有効であることを示し、“０”のときコード転送要求情報が無効であることを示す。そのため、Ｖａｌｉｄ信号が“０”の場合は、コード転送制御部１５は、コード転送要求記憶部１４から入力されたコード転送要求情報をラッチ１５０Ａ〜１５０Ｇに記憶しない。
【００７０】
ラッチ１５０Ａ〜１５０Ｇにコード転送要求情報が記憶されると、ラッチ１５０Ｇが“０”に設定され、カウンタ１５１Ａ〜１５１Ｄの値が“０”に初期化される。ここで、カウンタ１５１Ａ〜１５１Ｄの値は、アドレスの差分値として用いられる。
【００７１】
一例として、コード転送制御部１５がプログラムコードをコードバッファ１３からコントローラ１１へ転送する際の動作を説明する。
【００７２】
ラッチ１５０Ａは、プログラムコードの先頭アドレスを記憶している。加算器１５２Ａは、そのプログラムコードの先頭アドレスとカウンタ１５１Ａの値とを加算する。ここでは、カウンタ１５１Ａの値は“０”に初期化されているため、加算器１５２Ａの出力はプログラムコードの先頭アドレスと等しい。即ち、セレクタ１５５Ａの３つの入力のうち１つは、プログラムコードの先頭アドレスである。同様に、セレクタ１５５Ａの残り２つの入力は、データパス回路情報の先頭アドレスと演算ユニット回路情報の先頭アドレスになる。
【００７３】
セレクタ１５５Ａは、デコーダ１５６の出力に応じて、３つの入力からいずれか１つを選択し出力する。ここで、デコーダ１５６は、プログラムコードのアドレスを示す加算器１５２Ａの出力を１番、データパス回路情報のアドレスを示す加算器１５２Ｂの出力を２番、演算ユニット回路情報のアドレスを示す加算器１５２Ａの出力を３番、とする優先度順で、コードバッファ１３へ送信されるように、セレクタ１５５Ａへ信号を送信する。
【００７４】
ここで、デコーダ１５６からの出力に応じてセレクタ１５５Ａが加算器１５２Ａの出力を選択しコードバッファ１３へ送信したものとすると、コードバッファ１３はコード転送制御部１５から受信したアドレスに指定されるプログラムコードをコントローラ１１へ送信する。
【００７５】
デコーダ１５６からセレクタ１５５Ａへの出力は、カウンタ１５１Ａとセレクタ１５５Ｂにも入力される。  
カウンタ１５１Ａは、デコーダ１５６からの出力を受け、その値が“＋１”加算される。ここでは、カウンタ１５１Ａの値は初期値“０”から“１”となり、加算器１５１Ａは「プログラムコードの先頭アドレス＋１」を出力することとなる。なお、この後、デコーダ１５６からの出力に応じて、セレクタ１５５Ａが加算器１５１Ａの出力を選択するたびに、「プログラムコードの先頭アドレス＋１」、「プログラムコードの先頭アドレス＋２」、・・・がコードバッファ１３へ順次送信される。
【００７６】
セレクタ１５５Ｂは、デコーダ１５６からの出力を受け、カウンタ１５１Ａの出力、カウンタ１５１Ｂの出力、カウンタ１５１Ｄの出力とラッチ１５０Ｈの出力が結合されたビット列のうち、いずれかを選択して出力する。
【００７７】
セレクタ１５５Ａが加算器１５２Ａの出力を選択した場合は、セレクタ１５５Ｂはカウンタ１５１Ａの出力を選択する。以下同様に、セレクタ１５５Ａが加算器１５２Ｂの出力を選択した場合は、セレクタ１５５Ｂはカウンタ１５１Ｂの出力を選択する。セレクタ１５５Ａが加算器１５２Ｃの出力を選択した場合は、セレクタ１５５Ｂはカウンタ１５１Ｄの出力とラッチ１５０Ｈの値が結合されたビット列を選択する。
【００７８】
また、セレクタ１５５Ａが加算器１５２Ａの出力を選択した場合は、論理積演算器１５７Ｆの一方の入力が“１”となる。同様に、セレクタ１５５Ａが加算器１５２Ｂの出力を選択した場合は、論理積演算器１５７Ｅの一方の入力が“１”となる。
【００７９】
論理積演算器１５７Ｅ、１５７Ｆは、デコーダ１５６の出力と、コントローラ１１から入力されるデータ処理ビジー信号“０”との論理積演算を行う。なお、データ処理ビジー信号が“１”のときは、プログラムコードとデータパス回路情報の転送は許可されず、“０”のときは、プログラムコードとデータパス回路情報の転送は許可される。
【００８０】
比較器１５３Ｄは、コントローラ１１から入力されるプログラムコード進捗状況と、プログラムコードの差分アドレスを示すカウンタ１５１Ａの値とを比較し、不一致のとき“１”、一致のとき“０”を出力する。
【００８１】
比較器１５３Ｅは、コントローラ１１から入力されるデータパス回路情報進捗状況と、データパス回路情報の差分アドレスを示すカウンタ１５１Ｂの値とを比較し、不一致のとき“１”、一致のとき“０”を出力する。
【００８２】
論理和演算器１５８Ａ、１５８Ｂは、それぞれ、比較器１５３Ｄ、１５３Ｅの出力と、論理積演算器１５７Ｆ、１５７Ｅの出力とを論理和演算を行い、その出力をコートタグ１、コードタグ２としてコントローラ１１へ出力する。カウンタ１５１Ｃの値は、コードタグ３、４、５としてコントローラ１１へ出力される。なお、計５ビットのコードタグ１〜５は、それぞれ１ビットの出力であり、コードバッファ１３からコントローラ１１へ転送された情報の種類を示す。
【００８３】
比較器１５３Ａ〜１５３Ｃは、それぞれ、カウンタ１５１Ａ、１５１Ｂ、１５１Ｄの値と、ラッチ１５０Ｂ、１５０Ｄ、１５０Ｆに記憶された値と、が不一致のとき“１”を出力し、一致のとき“０”を出力する。
【００８４】
なお、カウンタ１５１Ｃは、“０”、“１”、“２”、“３”、“４”、“０”、“１”・・・を繰り返す飽和カウンタである。セレクタ１５５Ａによって加算器１５２Ｃの出力が５回選択されカウンタ１５１Ｃの値が“４”となった場合に、比較器１５４の出力が“１”となり、カウンタ１５１Ｄの値が“１”加算される。これは、５つの演算ユニット１０Ａ〜１０Ｅのそれぞれに対して演算ユニット回路情報を転送することを考慮したものである。
【００８５】
例えば、比較器１５３Ａは、カウンタ１５１Ａの値とラッチ１５０Ｂに記憶された値とを比較する。カウンタ１５１Ａの値は、プログラムコードの先頭アドレスを基準として、コードバッファ１３上のどの領域に記憶されたデータ（プログラムコード）をコントローラ１１へ転送したかを示す差分アドレスである。ラッチ１５０Ｂに記憶された値は、プログラムコードのサイズである。そのため、カウンタ１５１Ａの値とラッチ１５０Ｂに記憶された値とが等しい場合とは、コードバッファ１３に記憶されたプログラムコードのコントローラ１１への転送が終了したことを意味する。
【００８６】
比較器１５３Ａは、プログラムコードの転送が終了したとき“０”を出力し、プログラムコードの転送がまだ終わっていないとき “１”を出力する。同様に、比較器１５３Ｂは、データパス回路情報の転送が終了したとき“０”を出力し、データパス回路情報の転送まだ終わっていないとき“１”を出力する。比較器１５３Ｃは、演算ユニット回路情報の転送が終了したとき“０”を出力し、演算ユニット回路情報の転送まだ終わっていないとき“１”を出力する。
【００８７】
比較器１５３Ａ〜１５３Ｃの出力は、論理積演算器１５７Ａ、１５７Ｂを介してデコーダ１５６へ入力される。デコーダ１５６は、プログラムコード、データパス回路情報、および演算ユニット回路情報の転送が終了したか否かの情報に基づき、セレクタ１５５Ａでの選択、即ちコードバッファ１３へ送信する差分アドレスの選択を制御する。
【００８８】
プログラムコード、データパス回路情報、および演算ユニット回路情報のすべての転送が終了し、比較器１５３Ａ〜１５３Ｃの出力がすべて“０”となった場合、論理和演算器１５８Ｃの出力は“１”となる。
【００８９】
論理和演算器１５８Ｃの出力が“１”となり、かつ、Ｖａｌｉｄ信号が有効“１”である場合、論理積演算器１５７Ｃは“１”を出力する。論理積演算器１５７Ｃの出力“１”は、有効なデータ転送要求情報に基づいて、プログラムコード、データパス回路情報、および演算ユニット回路情報のすべてをコントローラ１１へ転送したことを示す。
【００９０】
論理積演算器１５７Ｃの出力は、データ処理開始通知としてコントローラ１１へ送信され、コード転送要求完了通知としてコード転送要求記憶部１４へ送信される。
【００９１】
論理積演算器１５７Ｃの出力“１”は、“１”と“０”とを繰り返すラッチ１５０Ｈの出力を反転させる。このラッチ１５０Ｈの値は、演算ユニット回路情報の差分アドレスの最上位ビットとして用いられる。論理積演算器１５７Ｃの出力“１”は、ラッチ１５０Ｇの値を反転させる。ラッチ１５０Ｇの値は、無効化信号としてコントローラ１１へ送信される。
【００９２】
図４は、コントローラ１１の構成を示すブロック図である。  
コントローラ１１は、プログラムコードメモリ１１０と、データパス回路情報メモリ１１１と、入力クロスバースイッチ１１２Ａ、１１２Ｂと、出力クロスバースイッチ１１３と、回路情報アドレス生成部１１４と、データアドレス生成部１１５と、ラッチ１１６、１１６Ａ〜１１６Ｉと、カウンタ１１７と、論理積演算器１１８Ａ、１１８Ｂと、論理和演算器１１９とを備える。
【００９３】
コントローラ１１は、データ入出力バッファ１２からデータを読み出し、そのデータを演算ユニット１０Ａへ出力する。コントローラ１１は、演算ユニット１０Ｅから受信したデータをデータ入出力バッファ１２に書き込む。コントローラ１１は、データ入出力バッファ１２に対するデータ読み出し、データ書き込みのためのアドレスを、データ入出力バッファ１２へ送信する。
【００９４】
コントローラ１１は、コード転送制御部１５から、データ処理開始通知と、無効化信号と、コードタグ１〜５と、差分アドレスとを受信する。コントローラ１１は、コード転送制御部１５によって転送されたプログラムコード、データパス回路情報、あるいは演算ユニット回路情報をコードバッファ１３から受信する。
【００９５】
プログラムメモリ１１０は、書き込みデータが入力されるＤＩＮ（Ｄａｔａ  Ｉｎ）と、ＤＩＮから入力されたデータの書き込みの可否が入力されるＷＥ（Ｗｒｉｔｅ  Ｅｎａｂｌｅ）と、ＤＩＮから入力されたデータを書き込むアドレスが入力されるＡＤＲＩＮ（Ａｄｄｒｅｓｓ  Ｉｎ）と、読み出しデータが出力されるＤＯＵＴ（Ｄａｔａ  Ｏｕｔ）と、ＤＯＵＴから出力されるデータのアドレスが入力されるＡＤＲＯＵＴ（Ａｄｄｒｅｓｓ  Ｏｕｔ）とを有する。
【００９６】
データパス回路情報メモリ１１１は、書き込みデータが入力されるＤＩＮ（Ｄａｔａ  Ｉｎ）と、ＤＩＮから入力されたデータの書き込みの可否が入力されるＷＥ（Ｗｒｉｔｅ  Ｅｎａｂｌｅ）と、ＤＩＮから入力されたデータを書き込むアドレスが入力されるＡＤＲＩＮ（Ａｄｄｒｅｓｓ  Ｉｎ）と、読み出しデータが出力されるＤＯＵＴ（Ｄａｔａ  Ｏｕｔ）と、ＤＯＵＴから出力されるデータのアドレスが入力されるＡＤＲＯＵＴ（Ａｄｄｒｅｓｓ  Ｏｕｔ）とを有する。
【００９７】
［初期化処理］
第１番目に、コード転送要求制御部１５からプログラムコードが転送された場合のコントローラ１１の処理を説明する。  
コントローラ１１は、無効化信号とコードタグと差分アドレスとをコード転送制御部１５から受信し、コードバッファ１３からプログラムコードを受信する。無効化信号は“０”であり、コントローラ１１へ転送されるプログラムコードが有効であることを示す。コードタグ１は“１”であり、コントローラ１１へプログラムコードが転送されていることを示す。差分アドレスは、コントローラ１１へ転送されるプログラムコードのコードバッファ１３におけるアドレスが、プログラムコードの先頭アドレスを基準として、どの程度ずれているかを示す差分値である。
【００９８】
コードタグ１が“１”であり、無効化信号が“０”であるため、論理積演算器１１８Ａの出力が“１”となり、論理積演算器１１８Ｂの出力が“０”となる。そのため、プログラムコードメモリ１１０のＷＥが“１”となり、書き込み可能となる。
【００９９】
コード転送制御部１５から受信した差分アドレスは、プログラムコードメモリ１１０のＡＤＲＩＮに入力される。コードバッファ１３から受信したプログラムコードは、プログラムコードメモリ１１０のＤＩＮに入力される。
【０１００】
そのため、プログラムコードメモリ１１０には、コード転送制御部１５から受信した差分アドレスに指定される領域に、コードバッファ１３から受信したプログラムコードが記憶される。
【０１０１】
第２番目に、コード転送要求制御部１５からデータパス回路情報が転送された場合のコントローラ１１の処理を説明する。  
コントローラ１１は、無効化信号とコードタグと差分アドレスとをコード転送制御部１５から受信し、コードバッファ１３からデータパス回路情報を受信する。無効化信号は“０”であり、コントローラ１１へ転送されるデータパス回路情報が有効であることを示す。コードタグ１が“０”、コードタグ２が“１”であり、コントローラ１１へデータパス回路情報が転送されていることを示す。差分アドレスは、コントローラ１１へ転送されるデータパス回路情報のコードバッファ１３におけるアドレスが、データパス回路情報の先頭アドレスを基準として、どの程度ずれているかを示す差分値である。
【０１０２】
コードタグ１が“０”、コードタグ２が“１”であり、無効化信号が“０”であるため、論理積演算器１１８Ａの出力が“０”となり、論理積演算器１１８Ｂの出力が“１”となる。そのため、データパス回路情報メモリ１１１のＷＥが“１”となり、書き込み可能となる。
【０１０３】
コード転送制御部１５から受信した差分アドレスは、データパス回路情報メモリ１１１のＡＤＲＩＮに入力される。コードバッファ１３から受信したデータパス回路情報は、データパス回路情報メモリ１１１のＤＩＮに入力される。
【０１０４】
そのため、データパス回路情報メモリ１１１には、コード転送制御部１５から受信した差分アドレスに指定される領域に、コードバッファ１３から受信したデータパス回路情報が記憶される。
【０１０５】
第３番目に、コード転送要求制御部１５から演算ユニット回路情報が転送された場合のコントローラ１１の処理を説明する。  
コントローラ１１は、無効化信号とコードタグと差分アドレスとをコード転送制御部１５から受信し、コードバッファ１３から演算ユニット回路情報を受信する。無効化信号は“０”であり、コントローラ１１へ転送される演算ユニット回路情報が有効であることを示す。コードタグ１が“０”、コードタグ２が“０”であり、コントローラ１１へ演算ユニット回路情報が転送されていることを示す。差分アドレスは、コントローラ１１へ転送される演算ユニット回路情報のコードバッファ１３におけるアドレスが、演算ユニット回路情報の先頭アドレスを基準として、どの程度ずれているかを示す差分値である。
【０１０６】
コードタグ１が“０”、コードタグ２が“０”であり、無効化信号が“０”であるため、論理積演算器１１８Ａ、１１８Ｂの出力は“０”となる。そのため、プログラムコードメモリ１１０とデータパス回路情報メモリ１１１のＷＥは“０”となり、書き込みは行われない。
【０１０７】
コードバッファ１３から受信した演算ユニット回路情報は、ラッチ１１６Ａを介して演算ユニット１０Ａへ送信される。コード転送制御部１５から受信した差分アドレスは、ラッチ１１６Ｃを介して演算ユニット１０Ａへ送信される。コード転送制御部１５から受信したコードタグ３〜５は、ラッチ１１６Ｂを介して演算ユニット１０Ａへ送信される。
【０１０８】
コード転送制御部１５からデータ処理開始通知を受信するたびに“０”から“１”へ、“１”から“０”へ値が反転されるラッチ１１６の出力は、演算ユニット１０Ａへ送信される。
【０１０９】
ラッチ１１６の出力は、演算ユニット用コードタグの最上位ビットとされる。ラッチ１１６Ｂの出力であるコードタグ３〜５は、演算ユニット用コードタグの２〜４ビットとされる。ラッチ１１６Ｃの出力である差分アドレスは、演算ユニット用コードタグの５〜６ビットとされる。
【０１１０】
この演算ユニット回路情報と演算ユニット用コードタグ（ラッチ１１６の出力とコードタグ３〜５と差分アドレス）は、演算ユニット１０Ｂ〜１０Ｅへ順次転送される。そして、各演算ユニット１０Ａ〜１０Ｅは、受信した６ビットの演算ユニット用コードタグによって指定される領域に、同時に受信した演算ユニット回路情報を記憶する。
【０１１１】
［データ処理］
次に、プログラムコードメモリ１１０に記憶されたプログラムコード、およびデータパス回路情報メモリ１１１に記憶されたデータパス回路情報にしたがって、コントローラ１１がデータ処理を行う際の動作を説明する。
【０１１２】
まず、カウンタ１１７が“０”に初期化される。カウンタ１１７の値“０”は、プログラムコードメモリ１１０のＡＤＲＯＵＴに入力される。プログラムコードメモリ１１０のＤＯＵＴは、アドレス０番の領域に記憶されたプログラムコードに従って、繰り返し範囲と繰り返し回数とを回路情報アドレス生成部１１４へ、アドレスをデータアドレス生成部１１５へ出力する。
【０１１３】
図５は、プログラムコードメモリ１１０に記憶されるプログラムコードの一例を示す図である。プログラムコードメモリ１１０は、アドレス番地ごとに、プログラムコードと３つのベースアドレス情報とを記憶する。
【０１１４】
プログラムコードは、アドレス０番から順に読み出される。プログラムコードは、コントローラ１１の状態遷移を定める。プログラムコードは、状態を遷移する際の繰り返し範囲と繰り返し回数とを有する単位コードから構成される。なお、単位コードは、少なくとも１つ以上のコントローラ１１の状態遷移を定めるものであればよい。
【０１１５】
プログラムコードメモリ１１０の各アドレス番地には、１つの単位コードが記憶される。プログラムコードは、コントローラ１１によって単位コードごとに順に読み出され実行される。
【０１１６】
例えば、図５に示すプログラムコードメモリ１１０のアドレス０番に記憶された単位コード「繰り返し範囲：２」、「繰り返し回数：３」を実行することによって、コントローラ１１は、「１番目：状態０」、「２番目：状態１」、「３番目：状態０」、「４番目：状態１」、「５番目：状態０」、「６番目：状態１」のように状態遷移を行う。
【０１１７】
続いて、プログラムコードメモリ１１０のアドレス１番に記憶された単位コード「繰り返し範囲：２」、「繰り返し回数：２」を実行することによって、コントローラ１１は、「７番目：状態２」、「８番目：状態３」、「９番目：状態２」、「１０番目：状態３」のように状態遷移を行う。
【０１１８】
このように、コントローラ１１は、プログラムコードに従った状態遷移を、プログラムコードの終端まで続ける。プログラムコードの終端の「繰り返し回数」は“０”が設定される。
【０１１９】
ベースアドレス情報は、データ入出力バッファ１２のアドレスを生成するために使用される情報であって、プログラムコードの単位コードと関連付けて記憶される情報である。
【０１２０】
プログラムコードメモリ１１０のアドレス番地ごとに記憶された３つのベースアドレス情報は、それぞれ、各演算ユニット１０Ａ〜１０Ｅの演算処理に使用するデータ（読み出しデータ）をデータ入出力バッファ１２から読み出す際に使用する２つのアドレスと、各演算ユニット１０Ａ〜１０Ｅ演算処理の結果（書き込みデータ）をデータ入出力バッファ１２へ書き込む際に使用する１つのアドレスとを、生成するために使用される。
【０１２１】
なお、単位コードと関連付けてプログラムコードメモリ１１０に記憶された３つのベースアドレス情報は、その単位コードを実行することによってコントローラ１１が状態遷移をしている間にデータ入出力バッファ１２のアドレス（書き込みデータのアドレス、読み出しデータのアドレス）を生成する際に、使用される。また、ベースアドレス情報は、プログラムコードメモリ１１０に記憶されていなくても良く、他の記憶装置に、プログラムコードの単位コードと関連付けて記憶されていても良い。
【０１２２】
次に、データアドレス生成部１１５は、プログラムコードメモリ１１０から新たな単位コードが読み出されたサイクルには、プログラムコードメモリ１１０から入力されるベースアドレス情報と、データパス回路情報メモリ１１から入力されるオフセット情報とを加算してデータ入出力バッファアドレスを生成する。
【０１２３】
データアドレス生成部１１５は、プログラムコードメモリ１１０から新たな単位コードが読み出されないサイクルには、前のサイクルに生成されたデータ入出力バッファアドレスと、データパス回路情報メモリ１１から入力されるオフセット情報とを加算してデータ入出力バッファアドレスを生成する。なお、生成されたデータ入出力バッファ用アドレスは、データ入出力バッファ１２のデータ読み出し、データ書き込みに使用される。
【０１２４】
データドレス生成部１１５は、論理和演算器１１９の出力が“１”であるとき、即ち、コード転送要求制御部１５から受信するデータ処理開始通知が“１”であるか、回路情報アドレス生成部１１４によってカウンタ１１７の値が“＋１”加算されるときに、新たな単位コードが読み出されたと判定する。
【０１２５】
回路情報アドレス生成部１１４は、プログラムコードメモリ１１０のＡＤＲＯＵＴから出力された繰り返し範囲と繰り返し回数から導かれる状態番号に応じてデータパス回路情報アドレスを順次生成し、その生成したデータパス回路情報アドレスをデータパス回路情報メモリ１１１のＡＤＲＯＵＴへ順次出力する。
【０１２６】
回路情報アドレス生成部１１４は、プログラムコードメモリ１１０のアドレス０番の繰り返し範囲と繰り返し回数によって定まる状態番号をすべて出力した後、カウンタ１１７の値を“＋１”加算する。このカウンタ１１７の値“1”は、プログラムコードメモリ１１０のＡＤＲＯＵＴに入力される。そして、プログラムコードメモリ１１０のアドレス１番の繰り返し範囲と繰り返し回数が回路情報アドレス生成部１１４に新たに入力され、処理が継続される。
【０１２７】
次に、回路情報アドレス生成部１１４からデータパス回路情報アドレスがデータパス回路情報メモリ１１１のＡＤＲＯＵＴに入力された後、データパス回路情報メモリ１１１のＤＯＵＴは、そのデータパス回路情報アドレスに指定される領域に記憶されたデータパス回路情報を出力する。
【０１２８】
図６は、データパス回路情報メモリ１１１に記憶されるデータパス回路情報の一例を示す図である。  
データパス回路情報は、アドレス番地ごとに、３つのクロスバースイッチ回路情報と、３つのオフセット情報と、回路情報ポインタとを有する。
【０１２９】
クロスバースイッチ回路情報は、入力クロスバースイッチ１１２Ａ、１１２Ｂおよび出力クロスバースイッチ１１３において入力されたビット列の並びの変更の仕方を示す。
【０１３０】
３つオフセット情報は、それぞれ、データ入出力バッファ１３に対するデータ読み出しを行う際の読み出しアドレスおよびデータ書き込みを行う際の書き込みアドレス（データ入出力バッファ用アドレス）を生成する際に使用される。
【０１３１】
３つのオフセット情報は、それぞれ、読み出しアドレスおよび書き込みアドレスとベースアドレス情報との差分値である。それぞれのオフセット情報とベースアドレス情報とが加算されることによって、読み出しアドレスおよび書き込みアドレスが生成される。なお、オフセット情報は、ベースアドレス情報と演算されることによって、読み出しアドレスおよび書き込みアドレスを生成できる情報であれば良い。
【０１３２】
読み出しアドレスとは、コントローラ１１がデータ入出力バッファ１３からデータを読み出す際に用いるアドレスである。読み出しアドレスに指定されるデータ入出力バッファ１３上のデータは、入力クロスバースイッチ１１２Ａへ入力される。書き込みアドレスとは、コントローラ１１がデータ入出力バッファ１３へデータを書き込む際に用いるアドレスである。出力クロスバースイッチ１１３から出力されたデータは、書き込みアドレスに指定される記憶領域へ書き込まれる。
【０１３３】
回路情報ポインタは、演算ユニット１０Ａ〜１０Ｅに内蔵される記憶部上の演算ユニット回路情報のうち演算時にいずれを使用するかを示す。
【０１３４】
次に、データパス回路情報メモリ１１１は、データパス回路情報アドレスに応じて、データパス回路情報を出力する。即ち、データパス回路情報メモリ１１１のＤＯＵＴは、オフセット情報をデータアドレス生成部１１５へ出力する。データパス回路情報メモリ１１１のＤＯＵＴは、クロスバースイッチ回路情報を入力クロスバースイッチ１１２Ａ、１１２Ｂおよび出力クロスバースイッチ１１３へ出力する。なお、クロスバースイッチ回路情報は、ラッチ１１６Ｄ〜１１６Ｉを経由することによって、入力クロスバースイッチ１１２Ａ、１１２Ｂおよび出力クロスバースイッチ１１３に入力されるタイミングが調整される。データパス回路情報メモリ１１１のＤＯＵＴは、回路情報ポインタを演算ユニット１０Ａへ出力する。回路情報ポインタは、データ処理時に、データとともに順次演算ユニット１０Ｂ〜１０Ｅへ転送される。
【０１３５】
次に、入力クロスバースイッチ１１２Ａ、１１２Ｂは、データアドレス生成部１１５によって生成されたデータ入出力バッファ用アドレスに指定される読み出しデータを受信し、入力されたクロスバースイッチ回路情報に従ってそのデータのビット列の並びを変更し、演算ユニット１０Ａへ送信する。
【０１３６】
出力クロスバースイッチ１１３は、演算ユニット１０Ｅから受信したデータを、入力されたクロスバースイッチ回路情報に従ってそのデータのビット列の並びを変更し、データアドレス生成部１１５によって生成されたデータ入出力バッファ用アドレスに指定される領域に書き込みデータとして書き込む。
【０１３７】
以上の処理によって、例えば、図５に示すアドレス０番の「繰り返し範囲：２」、「繰り返し回数：３」の動作において、１回目の状態遷移「１番目：状態０」で行われる処理が終了する。次に、回路情報アドレス１１４は、「２番目：状態１」で行われる処理を開始するため、状態番号“１”に応じたデータパス回路情報アドレスを生成し、その生成したデータパス回路情報アドレスをデータパス回路情報メモリ１１１のＡＤＲＯＵＴへ出力する。以下、同様に上記の処理が行われる。
【０１３８】
以後、「３番目：状態０」、「４番目：状態１」、「５番目：状態０」、「６番目：状態１」のように状態遷移と、それに伴う処理がなされる。
【０１３９】
次に、回路情報アドレス生成部１１４は、カウンタ１１７の値を“＋１”加算する。このカウンタ１１７の値“1”は、プログラムコードメモリ１１０のＡＤＲＯＵＴに入力される。そして、以下、同様に、プログラムコードメモリ１１０のアドレス１番の領域に記憶されたプログラムコードに従って処理が継続される。
【０１４０】
なお、カウンタ１１７は、プログラムコード進捗状況として、カウンタ１１７のカウント値をコード転送要求制御部１５へ送信する。回路情報生成アドレス部１１４は、データパス回路情報メモリ１１１のＡＤＲＯＵＴに出力するのと同じアドレスを、データパス回路情報進捗状況として、コード転送要求制御部１５へ送信する。また、回路情報生成アドレス部１１４は、プログラムコードメモリ１１０から入力された繰り返し回数が“０”のときに“０”となり、プログラムコードメモリ１１０から入力された繰り返し回数が“０”以外のときに“１”となる信号を、データ処理ビジー信号としてコード転送要求制御部１５へ送信する。
【０１４１】
図７は、演算ユニット１０Ａの構成を示すブロック図である。なお、演算ユニット１０Ｂ〜１０Ｅについても同様である。  
演算ユニット１０Ａは、演算器１００と、演算ユニット回路情報ラッチ１０１Ａ〜１０１Ｈと、回路情報更新信号生成部１０２と、データパイプラインレジスタ１０３と、制御パイプラインレジスタ１０４と、コードパイプラインレジスタ１０５とを備える。
【０１４２】
演算ユニット１０Ａは、２つのデータと回路情報ポインタと演算ユニット回路情報と演算ユニット用コードタグとを、コントローラ１１から受信する。
【０１４３】
［初期化処理］
演算ユニット１０Ａは、コントローラ１１から転送された演算ユニット回路情報を、内蔵する記憶部に記憶するための初期化処理を行う。初期化処理では、演算ユニット１０Ａは、演算ユニット回路情報と演算ユニット用コードタグとをコントローラ１１から受信する。
【０１４４】
演算ユニット用コードタグは、回路情報更新信号生成部１０２に入力される。回路情報更新信号生成部１０２は、入力された演算ユニット用コードタグに応じて、すべての出力を“０”に保持するか、あるいは、いずれか１つの演算ユニット回路情報ラッチ１０１Ａ〜１０１Ｈのトリガに“１”を出力する。演算ユニット回路情報は、演算ユニット回路情報ラッチ１０１Ａ〜１０１Ｈのそれぞれに入力されているため、回路情報更新信号生成部１０２によってそのトリガに“１”が入力された演算ユニット回路情報ラッチに、演算ユニット回路情報が記憶される。
【０１４５】
図８は、演算ユニット用コードタグの値と演算ユニット回路情報が記憶される演算ユニット回路情報ラッチとの対応関係を示す図である。演算ユニット用コードタグが「０１００００」、「０１０００１」、「０１００１０」、「０１００１１」である場合、それぞれ、演算ユニット１０Ａの演算ユニット回路情報ラッチ１０１Ａ、１０１Ｂ、１０１Ｃ、１０１Ｄに、演算ユニット回路情報が記憶される。また、演算ユニット用コードタグが「１１００００」、「１１０００１」、「１１００１０」、「１１００１１」である場合、それぞれ、演算ユニット１０Ａの演算ユニット回路情報ラッチ１０１Ｅ、１０１Ｆ、１０１Ｇ、１０１Ｈに、演算ユニット回路情報が記憶される。一方、演算ユニット用コードタグが、「０１００００」〜「０１００１１」、「１１００００」〜「１１００１１」のいずれでもない場合、演算ユニット１０Ａの演算ユニット回路情報ラッチ１０１Ａ〜１０１Ｈには、演算ユニット回路情報は記憶されない。
【０１４６】
演算ユニット１０Ａが受信した演算ユニット回路情報と演算ユニット用コードタグとは、コードパイプラインレジスタ１０５に記憶され、次のサイクルで、次段の演算ユニット１０Ｂへ送信される。
【０１４７】
以下、同様の処理が、演算ユニット１０Ｂ〜１０Ｅでなされる。なお、演算ユニット１０Ｅは、コードパイプラインレジスタ１０５を有していなくとも良い。
【０１４８】
［データ処理］
演算ユニット１０Ａは、２つのデータと回路情報ポインタとをコントローラ１１から受信する。２つのデータは演算器１００に入力され、回路情報ポインタはセレクタ１０６に入力される。
【０１４９】
セレクタ１０６は、入力された回路情報ポインタに従って、演算ユニット回路情報ラッチ１０１Ａ〜１０１Ｈに記憶された演算ユニット回路情報のうちいずれかを演算器１００へ出力する。演算器１００は、入力された演算ユニット回路情報に従って、演算処理を行う。
【０１５０】
図９は、演算器１００の構成の一例を示す図である。  
演算器１００は、セレクタ１００１Ａ〜１００１Ｄ、１００４Ａ〜１００４Ｄと、ＡＬＵ（Ａｒｉｔｈｍｅｔｉｃ  Ｌｏｇｉｃ  Ｕｎｉｔ）１００２Ａ〜１００２Ｄと、シフタ１００３Ａ〜１００３Ｄとを備える。
【０１５１】
演算器１００には、３２ビットのデータが２つ入力される。以下の説明では、一方のデータを右入力データ、他方のデータを左入力データと呼ぶ。
【０１５２】
演算器１００には、６４ビットの演算ユニット回路情報が入力される。６４ビットの演算ユニット回路情報は、４ビットの入力モードと、３２ビットの直値入力データと、８ビットのＡＬＵ設定と、１２ビットのシフト値と、８ビットのクロスバー設定とを有する。
【０１５３】
セレクタ１００１Ａ〜１００１Ｄには、一方に右入力データが入力され、他方に演算ユニット回路情報の一部である直値入力データが入力される。セレクタ１００１Ａ〜１００１Ｄのそれぞれには、４ビットの入力モードのうちの１ビットが入力される。セレクタ１００１Ａ〜１００１Ｄは、入力モードが“１”のとき右入力データを選択出力し、入力モードが“０”のとき直値入力データを選択出力する
ＡＬＵ１００２Ａ〜１００２Ｄには、一方に左入力データが入力され、他方にセレクタ１００１Ａ〜１００１Ｄの出力がそれぞれ入力される。ＡＬＵ１００２Ａ〜１００２Ｄのそれぞれには、８ビットのＡＬＵ設定のうちの２ビットが入力される。ＡＬＵ１００２Ａ〜１００２Ｄは、入力される２ビットのＡＬＵ設定に応じて、２つのデータに対して演算処理を行う。
【０１５４】
シフタ１００３Ａ〜１００３Ｄには、ＡＬＵ１００２Ａ〜１００２Ｄの出力がそれぞれ入力される。シフタ１００３Ａ〜１００３Ｄのそれぞれには、１２ビットのシフト値のうちの３ビットが入力される。シフタ１００３Ａ〜１００３Ｄは、入力される３ビットのシフト値だけ、一定方向にビット・ローテーションする。シフタ１００３Ａ〜１００３Ｄの出力は結合されて、演算器１００の左出力データとして出力される。
【０１５５】
セレクタ１００４Ａには、シフタ１００３Ｂ、１００３Ｃ、および１００３Ｄの出力が入力される。セレクタ１００４Ｂには、シフタ１００３Ａ、１００３Ｃ、および１００３Ｄの出力が入力される。セレクタ１００４Ｃには、シフタ１００３Ａ、１００３Ｂ、および１００３Ｄの出力が入力される。セレクタ１００４Ｄには、シフタ１００３Ａ、１００３Ｂ、および１００３Ｃの出力が入力される。
【０１５６】
セレクタ１００４Ａ〜１００４Ｄのそれぞれには、８ビットのクロスバー設定のうちの２ビットが入力される。セレクタ１００４Ａ〜１００４Ｄは、入力された２ビットのクロスバー設定の値に応じて、３つの入力のうちのいずれかを選択出力する。セレクタ１００４Ａ〜１００４Ｄの出力は結合されて、演算器１００の右出力データとして出力される。
【０１５７】
データパイプラインレジスタ１０３は、演算器１００の左出力データと右出力データとを記憶し、次のサイクルで、次段の演算ユニット１０Ｂへ送信する。また、同じサイクルで、制御パイプラインレジスタ１０４は、コントローラ１１から受信した回路情報ポインタを記憶し、次のサイクルで、次段の演算ユニット１０Ｂへ送信する。
【０１５８】
以下、同様の処理が、演算ユニット１０Ｂ〜１０Ｅでなされる。なお、演算ユニット１０Ｅは、制御パイプラインレジスタ１０４を有していなくとも良い。
【０１５９】
図１０は、プログラムコードメモリ１１０が記憶するプログラムコードの一例を示す。図１１は、コード転送制御部１５で処理されるコード転送要求情報の一例を示す。
【０１６０】
図１２は、図１０に示すプログラムコードと図１１に示すコード転送要求情報に従って、コントローラ１１と演算ユニット１０Ａ〜１０Ｅとコード転送制御部１５との動作の流れを示す図である。なお、データ入出力バッファ１２とコードバッファ１３は、読み出し要求を受け取ったそのサイクルに、読み出しデータを出力するものとする。
【０１６１】
以下では、演算ユニット用コードタグの最上位ビットが“１”に設定されているものとする。このとき、演算ユニット１０Ａ〜１０Ｅは、それぞれの演算回路情報ラッチ１０１Ａ〜１０１Ｄに記憶されている演算回路情報のみを用いて演算処理を行う。また、演算ユニット１０Ａ〜１０Ｅは、それぞれの演算回路情報ラッチ１０１Ｅ〜１０１Ｈに、コントローラ１１から順次転送された演算回路情報を書き込む。
【０１６２】
なお、演算ユニット用コードタグの最上位ビットが“０”に設定されているときは、演算ユニット１０Ａ〜１０Ｅは、それぞれの演算回路情報ラッチ１０１Ｅ〜１０１Ｈに記憶されている演算回路情報のみを用いて演算処理を行う。また、演算ユニット１０Ａ〜１０Ｅは、それぞれの演算回路情報ラッチ１０１Ａ〜１０１Ｄに、コントローラ１１から順次転送された演算回路情報を書き込む。
【０１６３】
［サイクル０］
まず、コントローラ１１は、プログラムコードメモリ１１０のアドレス０番地に記憶されたプログラムコードを読み出す。その読み出したプログラムコードは、繰り返し範囲が“２”、繰り返し回数が“１”と記載されている。
【０１６４】
次に、繰り返し範囲“２”、繰り返し回数“１”であるため、コントローラ１１は、データパス回路情報メモリ１１１のアドレス０番地を読み出す。なお、コントローラ１１は、サイクル１で、アドレス１番地を読み出す。コントローラ１１は、読み出したデータパス回路情報に応じて、演算ユニット１０Ａへデータと回路情報ポインタ“０”とを送信して、第１番目のデータ処理を開始する。
【０１６５】
コントローラ１１は、データ処理を行っている最中であるためコード転送制御部１５へデータ処理ビジー信号“１”を送信し、また同時にプログラムコード進捗状況“０”とデータパス回路情報進捗状況“０”とを送信する。コード転送制御部１５は、データ処理ビジー信号“１”であって、プログラムコード進捗状況とデータパス回路情報進捗状況とが“０”であるため、プログラムコードおよびデータパス回路情報の転送が禁止され、演算ユニット回路情報の転送しか行えない。
【０１６６】
コード転送制御部１５は、演算ユニット回路情報を演算ユニット１０Ｅの演算ユニット回路情報ラッチ１０１Ｅに記憶させるため、コードバッファ１３から演算ユニット回路情報を転送させ、コードタグ“０００００”をコントローラ１１へ送信する。コードタグ１が“０”、コードタグ２が“０”であるため、プログラムコードメモリ１１０とデータパス回路情報メモリ１１１に演算ユニット回路情報が記憶されることはない。コードタグ３が“０”、コードタグ４が“０”、コードタグ５が“０”であるため、演算ユニット１０Ｅに演算ユニット回路情報が記憶される。なお、演算ユニット回路情報は、５サイクル後に、演算回路ユニット１０Ｅに入力され、演算ユニット回路情報ラッチ１０１Ｅに記憶される。
【０１６７】
［サイクル１］
コントローラ１１は、サイクル０で読み出したプログラムコード（繰り返し範囲“２”、繰り返し回数“１”）の実行を継続する。コントローラ１１は、データパス回路情報メモリ１１１のアドレス１番地を読み出す。コントローラ１１は、読み出したデータパス回路情報に応じて、演算ユニット１０Ａへデータと回路情報ポインタ“３”とを送信して、第２番目のデータ処理を開始する。
【０１６８】
コントローラ１１は、データ処理を行っている最中であるためコード転送制御部１５へデータ処理ビジー信号“１”を送信し、また同時にプログラムコード進捗状況“０”とデータパス回路情報進捗状況“０”とを送信する。コード転送制御部１５は、データ処理ビジー信号“１”であって、プログラムコード進捗状況とデータパス回路情報進捗状況とが“０”であるため、プログラムコードおよびデータパス回路情報の転送が禁止され、演算ユニット回路情報の転送しか行えない。
【０１６９】
コード転送制御部１５は、演算ユニット回路情報を演算ユニット１０Ｄの演算ユニット回路情報ラッチ１０１Ｅに記憶させるため、コードバッファ１３から演算ユニット回路情報を転送させ、コードタグ“００００１”をコントローラ１１へ送信する。コードタグ１、２が“０”であるため、プログラムコードメモリ１１０とデータパス回路情報メモリ１１１に演算ユニット回路情報が記憶されることはない。コードタグ３が“０”、コードタグ４が“０”、コードタグ５が“１”であるため、演算ユニット１０Ｄに演算ユニット回路情報が記憶される。なお、演算ユニット回路情報は、４サイクル後に、演算回路ユニット１０Ｄに入力され、演算ユニット回路情報ラッチ１０１Ｅに記憶される。
【０１７０】
演算ユニット１０Ａは、コントローラ１１から受信した回路情報ポインタ“０”指定される演算ユニット回路情報ラッチ１０１Ａから演算ユニット回路情報を読み出し、その演算ユニット回路情報を演算器１００へ入力する。演算器１００は、入力された演算ユニット回路情報に応じて、コントローラ１１から受信したデータに対して演算処理を行う。
【０１７１】
［サイクル２］
コントローラ１１は、プログラムコードメモリ１１０のアドレス１番地に記憶されたプログラムコードを読み出す。その読み出したプログラムコードは、繰り返し範囲が“２”、繰り返し回数が“２”と記載されている。
【０１７２】
次に、繰り返し範囲“２”、繰り返し回数“２”であるため、コントローラ１１は、データパス回路情報メモリ１１１のアドレス２番地を読み出す。なお、コントローラ１１は、サイクル３でアドレス３番地を読み出し、サイクル４でアドレス２番地を読み出し、サイクル５でアドレス３番地を読み出す。コントローラ１１は、読み出したデータパス回路情報に応じて、演算ユニット１０Ａへデータと回路情報ポインタ“１”とを送信して、第３番目のデータ処理を開始する。
【０１７３】
コントローラ１１はデータ処理ビジー信号“１”を送信し続け、また同時にプログラムコード進捗状況“１”とデータパス回路情報進捗状況“２”とを送信する。コード転送制御部１５は、データ処理ビジー信号“１”、プログラムコード進捗状況“１”、データパス回路情報進捗状況“２”によって、プログラムコードおよびデータパス回路情報の転送が一部許可される。
【０１７４】
コード転送制御部１５が転送するプログラムコードやデータパス回路情報は、実行済みのプログラムコードが記憶されていたプログラムコードメモリ１１０上の記憶領域（アドレス０番）と、使用済みのデータパス回路情報が記憶されていたデータパス回路情報メモリ１１１上の記憶領域（アドレス０番、１番）とに記憶される。
【０１７５】
なお、演算ユニット回路情報の転送も可能であり、コード転送制御部１５は、プログラムコード、データパス回路情報、演算ユニット回路情報の優先度順に、転送を行う。
【０１７６】
コード転送制御部１５は、プログラムコードをプログラムコードメモリ１１０に記憶させるため、コードバッファ１３へプログラムコードの先頭アドレス“００”を送信しプログラムコードを転送させ、コードタグ“１００００”をコントローラ１１へ送信する。コードタグ１が“１”であるため、プログラムコードメモリ１１０にプログラムコードが記憶される。
【０１７７】
なお、このプログラムコードは、サイクル０、１で実行済みのプログラムコードが記憶されていた記憶領域、プログラムコードメモリ１１０のアドレス０番地に記憶される。
【０１７８】
演算ユニット１０Ａは、コントローラ１１から受信した回路情報ポインタ“３”に指定される演算ユニット回路情報ラッチ１０１Ｄから演算ユニット回路情報を読み出し、その演算ユニット回路情報に応じて、コントローラ１１から受信したデータに対して演算処理を行う。
【０１７９】
演算ユニット１０Ｂは、演算ユニット１０Ａから受信した回路情報ポインタ“０”に指定される演算ユニット回路情報ラッチ１０１Ａから演算ユニット回路情報を読み出し、その演算ユニット回路情報に応じて、演算ユニット１０Ａから受信したデータに対して演算処理を行う。
【０１８０】
［サイクル３］
コントローラ１１は、サイクル１で読み出したプログラムコード（繰り返し範囲“２”、繰り返し回数“２”）の実行を継続する。コントローラ１１は、データパス回路情報メモリ１１１のアドレス３番地を読み出す。コントローラ１１は、読み出したデータパス回路情報に応じて、演算ユニット１０Ａへデータと回路情報ポインタ“２”とを送信して、第４番目のデータ処理を開始する。
【０１８１】
コントローラ１１からコード転送制御部１５へ、データ処理ビジー信号“１”、プログラムコード進捗状況“１”、データパス回路情報進捗状況“２”が送信される。コード転送制御部１５は、データ処理ビジー信号“１”、プログラムコード進捗状況“１”、データパス回路情報進捗状況“２”によって、プログラムコードおよびデータパス回路情報の転送が一部許可される。なお、演算ユニット回路情報の転送も可能であり、コード転送制御部１５は、プログラムコード、データパス回路情報、演算ユニット回路情報の優先度順に、転送を行う。
【０１８２】
プログラムコードのサイズは“１”であるため、コード転送制御部１５はサイクル２でプログラムコードの転送を完了している。
【０１８３】
コード転送制御部１５は、データパス回路情報をデータパス回路情報メモリ１１１に記憶させるため、コードバッファ１３からデータパス回路情報を転送させ、コードタグ“０１０００”をコントローラ１１へ送信する。コードタグ１が“０”、コードタグ２が“１”であるため、データパス回路情報メモリ１１１にデータパス回路情報が記憶される。
【０１８４】
なお、このデータパス回路情報は、サイクル０で実行済みのデータパス回路情報が記憶されていた記憶領域、データパス回路情報メモリ１１１のアドレス０番地に記憶される。
【０１８５】
演算ユニット１０Ａは、コントローラ１１から受信した回路情報ポインタ“１”に指定される演算ユニット回路情報ラッチ１０１Ｂから演算ユニット回路情報を読み出し、その演算ユニット回路情報に応じて、コントローラ１１から受信したデータに対して演算処理を行う。
【０１８６】
演算ユニット１０Ｂは、演算ユニット１０Ａから受信した回路情報ポインタ“３”に指定される演算ユニット回路情報ラッチ１０１Ｄから演算ユニット回路情報を読み出し、その演算ユニット回路情報に応じて、演算ユニット１０Ａから受信したデータに対して演算処理を行う。
【０１８７】
演算ユニット１０Ｃは、演算ユニット１０Ｂから受信した回路情報ポインタ“０”に指定される演算ユニット回路情報ラッチ１０１Ａから演算ユニット回路情報を読み出し、その演算ユニット回路情報に応じて、演算ユニット１０Ｂから受信したデータに対して演算処理を行う。
【０１８８】
［サイクル４］
コントローラ１１は、サイクル１で読み出したプログラムコード（繰り返し範囲“２”、繰り返し回数“２”）の実行を継続する。コントローラ１１は、データパス回路情報メモリ１１１のアドレス２番地を読み出す。コントローラ１１は、読み出したデータパス回路情報に応じて、演算ユニット１０Ａへデータと回路情報ポインタ“１”とを送信して、第５番目のデータ処理を開始する。
【０１８９】
コントローラ１１からコード転送制御部１５へ、データ処理ビジー信号“１”、プログラムコード進捗状況“１”、データパス回路情報進捗状況“２”が送信される。コード転送制御部１５は、データ処理ビジー信号“１”、プログラムコード進捗状況“１”、データパス回路情報進捗状況“２”によって、プログラムコードおよびデータパス回路情報の転送が一部許可される。なお、演算ユニット回路情報の転送も可能であり、コード転送制御部１５は、プログラムコード、データパス回路情報、演算ユニット回路情報の優先度順に、転送を行う。
【０１９０】
プログラムコードのサイズは“１”であるため、コード転送制御部１５はサイクル２でプログラムコードの転送を完了している。データパス回路情報のサイズは“２”であるため、コード転送制御部１５はまだデータパス回路情報の転送を完了していない。
【０１９１】
コード転送制御部１５は、データパス回路情報をデータパス回路情報メモリ１１１に記憶させるため、コードバッファ１３からデータパス回路情報を転送させ、コードタグ“０１００１”をコントローラ１１へ送信する。コードタグ１が“０”、コードタグ２が“１”であるため、データパス回路情報メモリ１１１にデータパス回路情報が記憶される。
【０１９２】
なお、このデータパス回路情報は、サイクル１で実行済みのデータパス回路情報が記憶されていた記憶領域、データパス回路情報メモリ１１１のアドレス１番地に記憶される。
【０１９３】
演算ユニット１０Ａは、コントローラ１１から受信した回路情報ポインタ“２”に指定される演算ユニット回路情報ラッチ１０１Ｃから演算ユニット回路情報を読み出し、その演算ユニット回路情報に応じて、コントローラ１１から受信したデータに対して演算処理を行う。
【０１９４】
演算ユニット１０Ｂは、演算ユニット１０Ａから受信した回路情報ポインタ“１”に指定される演算ユニット回路情報ラッチ１０１Ｂから演算ユニット回路情報を読み出し、その演算ユニット回路情報に応じて、演算ユニット１０Ａから受信したデータに対して演算処理を行う。
【０１９５】
演算ユニット１０Ｃは、演算ユニット１０Ｂから受信した回路情報ポインタ“３”に指定される演算ユニット回路情報ラッチ１０１Ｄから演算ユニット回路情報を読み出し、その演算ユニット回路情報に応じて、演算ユニット１０Ｂから受信したデータに対して演算処理を行う。
【０１９６】
演算ユニット１０Ｄは、演算ユニット１０Ｃから受信した回路情報ポインタ“０”に指定される演算ユニット回路情報ラッチ１０１Ａから演算ユニット回路情報を読み出し、その演算ユニット回路情報に応じて、演算ユニット１０Ｃから受信したデータに対して演算処理を行う。
【０１９７】
［サイクル５］
コントローラ１１は、サイクル１で読み出したプログラムコード（繰り返し範囲“２”、繰り返し回数“２”）の実行を継続する。コントローラ１１は、データパス回路情報メモリ１１１のアドレス３番地を読み出す。コントローラ１１は、読み出したデータパス回路情報に応じて、演算ユニット１０Ａへデータと回路情報ポインタ“２”とを送信して、第６番目のデータ処理を開始する。
【０１９８】
コントローラ１１からコード転送制御部１５へ、データ処理ビジー信号“１”、プログラムコード進捗状況“１”、データパス回路情報進捗状況“２”が送信される。コード転送制御部１５は、データ処理ビジー信号“１”、プログラムコード進捗状況“１”、データパス回路情報進捗状況“２”によって、プログラムコードおよびデータパス回路情報の転送が一部許可される。しかし、実行済みのプログラムコードが記憶されていたプログラムコードメモリ１１０上の記憶領域（アドレス０番）と、使用済みのデータパス回路情報が記憶されていたデータパス回路情報メモリ１１１上の記憶領域（アドレス０番、１番）とは、すでに新たなプログラムコードとデータパス回路情報とが記憶されている。そのため、コード転送制御部１５は、プログラムコードおよびデータパス回路情報の転送を行えない。以後、コード転送制御部１５は、演算ユニット回路情報の転送を行う。
【０１９９】
コード転送制御部１５は、演算ユニット回路情報を演算ユニット１０Ｃに記憶させるため、コードバッファ１３から演算ユニット回路情報を転送させ、コードタグ“０００１０”をコントローラ１１へ送信する。コードタグ１、２が“０”であるため、プログラムコードメモリ１１０、データパス回路情報メモリ１１１に演算ユニット回路情報は記憶されない。コードタグ３が“０”、コードタグ４が“１”、コードタグ５が“０”であるため、演算ユニット１０Ｃに演算ユニット回路情報が記憶される。なお、演算ユニット回路情報は、３サイクル後に、演算ユニット１０Ｃに入力され、演算ユニット回路情報ラッチ１０１Ｅに記憶される。
【０２００】
演算ユニット１０Ｅは、サイクル０でコード転送制御部１５によって転送された演算ユニット回路情報とコードタグ“０００００”とを受信し、その演算ユニット回路情報を演算ユニット回路情報ラッチ１０１Ｅに記憶する。演算ユニット１０Ｄは、サイクル１でコード転送制御部１５によって転送された演算ユニット回路情報とコードタグ“００００１”とを受信し、その演算ユニット回路情報を演算ユニット回路情報ラッチ１０１Ｅに記憶する。
【０２０１】
演算ユニット１０Ａは、回路情報ポインタ“１”に指定される演算ユニット回路情報に応じて、演算処理を行う。演算ユニット１０Ｂは、回路情報ポインタ“２”に指定される演算ユニット回路情報に応じて、演算処理を行う。演算ユニット１０Ｃは、回路情報ポインタ“１”に指定される演算ユニット回路情報に応じて、演算処理を行う。演算ユニット１０Ｄは、回路情報ポインタ“３”に指定される演算ユニット回路情報に応じて、演算処理を行う。演算ユニット１０Ｅは、回路情報ポインタ“０”に指定される演算ユニット回路情報に応じて、演算処理を行う。
【０２０２】
［サイクル６］
コントローラ１１は、プログラムコードメモリ１１０のアドレス２番地に記憶されたプログラムコードを読み出す。このプログラムコードの繰り返し範囲と繰り返し回数とが共に“０”なので、コントローラ１１は、待機状態となる。ここでは、説明の簡単のため、コントローラ１１が待機状態となるものとしたが、コントローラ１１は、プログラムコードメモリ１１０に記憶されたその他のプログラムコードやプログラムコードメモリ１１０にサイクル２で書き込まれたプログラムコードを実行することができる。
【０２０３】
コード転送制御部１５は、演算ユニット回路情報を演算ユニット１０Ｂに記憶させるため、コードバッファ１３から演算ユニット回路情報を転送させ、コードタグ“０００１１”をコントローラ１１へ送信する。この演算ユニット回路情報は、２サイクル後に、演算回路ユニット１０Ｂに入力され、演算ユニット回路情報ラッチ１０１Ｅに記憶される。
【０２０４】
演算ユニット１０Ａは、回路情報ポインタ“２”に指定される演算ユニット回路情報に応じて、演算処理を行う。演算ユニット１０Ｂは、回路情報ポインタ“１”に指定される演算ユニット回路情報に応じて、演算処理を行う。演算ユニット１０Ｃは、回路情報ポインタ“２”に指定される演算ユニット回路情報に応じて、演算処理を行う。演算ユニット１０Ｄは、回路情報ポインタ“１”に指定される演算ユニット回路情報に応じて、演算処理を行う。演算ユニット１０Ｅは、回路情報ポインタ“３”に指定される演算ユニット回路情報に応じて、演算処理を行う。
【０２０５】
［サイクル７］
コード転送制御部１５は、演算ユニット回路情報を演算ユニット１０Ａに記憶させるため、コードバッファ１３から演算ユニット回路情報を転送させ、コードタグ“００１００”をコントローラ１１へ送信する。この演算ユニット回路情報は、１サイクル後に、演算回路ユニット１０Ａに入力され、演算ユニット回路情報ラッチ１０１Ｅに記憶される。
【０２０６】
演算ユニット１０Ｂは、回路情報ポインタ“２”に指定される演算ユニット回路情報に応じて、演算処理を行う。演算ユニット１０Ｃは、回路情報ポインタ“１”に指定される演算ユニット回路情報に応じて、演算処理を行う。演算ユニット１０Ｄは、回路情報ポインタ“２”に指定される演算ユニット回路情報に応じて、演算処理を行う。演算ユニット１０Ｅは、回路情報ポインタ“１”に指定される演算ユニット回路情報に応じて、演算処理を行う。
【０２０７】
［サイクル８］
演算ユニット１０Ｃは、回路情報ポインタ“２”に指定される演算ユニット回路情報に応じて、演算処理を行う。演算ユニット１０Ｄは、回路情報ポインタ“１”に指定される演算ユニット回路情報に応じて、演算処理を行う。演算ユニット１０Ｅは、回路情報ポインタ“２”に指定される演算ユニット回路情報に応じて、演算処理を行う。
【０２０８】
演算ユニット１０Ｃは、サイクル５でコード転送制御部１５によって転送された演算ユニット回路情報とコードタグ“０００１０”とを受信し、その演算ユニット回路情報を演算ユニット回路情報ラッチ１０１Ｅに記憶する。
【０２０９】
演算ユニット１０Ｂは、サイクル６でコード転送制御部１５によって転送された演算ユニット回路情報とコードタグ“０００１１”とを受信し、その演算ユニット回路情報を演算ユニット回路情報ラッチ１０１Ｅに記憶する。
【０２１０】
演算ユニット１０Ａは、サイクル７でコード転送制御部１５によって転送された演算ユニット回路情報とコードタグ“００１００”とを受信し、その演算ユニット回路情報を演算ユニット回路情報ラッチ１０１Ｅに記憶する。
【０２１１】
［サイクル９］
演算ユニット１０Ｄは、回路情報ポインタ“２”に指定される演算ユニット回路情報に応じて、演算処理を行う。演算ユニット１０Ｅは、回路情報ポインタ“１”に指定される演算ユニット回路情報に応じて、演算処理を行う。
【０２１２】
［サイクル１０］
演算ユニット１０Ｅは、回路情報ポインタ“２”に指定される演算ユニット回路情報に応じて、演算処理を行う。
【０２１３】
このように、本実施形態に係る半導体装置１によれば、データパス回路情報メモリ１１１に記憶された回路情報ポインタに従って、各演算ユニット１０Ａ〜１０Ｅの演算ユニット回路情報ラッチ１０１Ａ〜１０１Ｈに記憶された演算ユニット回路情報が読み出される。各演算ユニット１０Ａ〜１０Ｅは、読み出した演算ユニット回路情報で指定される演算処理を行う。
【０２１４】
演算ユニット回路情報ラッチ１０１Ａ〜１０１Ｈからは、サイクルごとに演算の種類に応じて、様々なアドレス上の演算ユニット回路情報が読み出される。プログラムコードメモリ１１０からは数サイクルごとにプログラムコードがアドレス順に逐次読み出される。データパス回路情報メモリ１１１からは、プログラムコードメモリ１１０から読み出されたプログラムコードに応じてサイクルごとにデータパス回路情報が逐次読み出される。
【０２１５】
プログラムコードはアドレス順に読み出されるため、実行済みのプログラムコードが記憶されている記憶領域に、データ処理中に、新たにプログラムコードを書き込むことができる。
【０２１６】
データパス回路情報はプログラムコードに応じて読み出されるが、同一のデータパス回路情報が複数のプログラムコードによって読み出されることはない。即ち、１つのプログラムコードの実行が終了したあと、そのプログラムコードによって使用されたデータパス回路情報は、他のプログラムコードによって使用されることはない。そのため、実行済みのプログラムコードで使用されたデータパス回路情報が記憶されている記憶領域に、データ処理中に、新たにプログラムコードやデータパス回路情報を書き込むことができる。
【０２１７】
そのため、次のデータ処理に移行する際にプログラムコードやデータパス回路情報の書き込みは必要なく、演算ユニット１０Ａ〜１０Ｈの待機時間を短縮することができ、半導体装置１の処理速度を向上させることができる。
【０２１８】
また、実行済みのプログラムコードや使用済みのデータパス回路情報が記憶されている記憶領域を有効に活用するため、プログラムコードメモリ１１０とデータパス回路情報メモリ１１１との記憶容量を小さく設計することができる。
【０２１９】
演算ユニット回路情報はサイクルごとに様々なアドレスから読み出されるため、未使用の演算ユニット回路情報と使用済みの演算ユニット回路情報とを判定することが困難である。そのため、演算ユニット回路情報ラッチ１０１Ａ〜１０１Ｈは、１回のデータ処理に使用される演算ユニット回路情報の容量の２倍の記憶容量を有するように設計される。
【０２２０】
第１番目のデータ処理を行っている際には、演算ユニット回路情報ラッチ１０１Ａ〜１０１Ｄに記憶された演算ユニット回路情報が使用される。そして、第１番目のデータ処理中に、第２番目のデータ処理で使用される演算ユニット回路情報が演算ユニット回路情報ラッチ１０１Ｅ〜１０１Ｈに記憶される。そのため、次のデータ処理に移行する前に、次のデータ処理で使用される演算ユニット回路情報を、演算ユニット回路情報ラッチに書き込むことができるため、次のデータ処理に移行する際に演算ユニット回路情報の書き込みは必要なく、演算ユニット１０Ａ〜１０Ｈの待機時間を短縮することができ、半導体装置１の処理速度を向上させることができる。
【０２２１】
また、演算の種類に応じてサイクルごとに様々なアドレス上から読み出される演算ユニット回路情報を記憶するための演算ユニット回路情報ラッチのみが、２回分のデータ処理に使用される演算ユニット回路情報を記憶するための記憶容量を備える。そのため、プログラムコードメモリ１１０、演算ユニット回路情報メモリ１１１、および演算ユニット回路情報ラッチ１０１Ａ〜１０１Ｈの全体の記憶容量を小さく設計することができる。
【０２２２】
なお、本発明は上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。
【図面の簡単な説明】
【０２２３】
【図１】本発明の本実施形態に係る半導体装置の構成を示すブロック図。
【図２】本発明の本実施形態に係るコード転送要求記憶部の構成を示すブロック図。
【図３】本発明の本実施形態に係るコード転送制御部の構成を示すブロック図。
【図４】本発明の本実施形態に係るコントローラの構成を示すブロック図。
【図５】プログラムコードメモリに記憶されるプログラムコードの一例を示す図。
【図６】データパス回路情報メモリに記憶されるデータパス回路情報の構成を示す図。
【図７】本発明の本実施形態に係る演算ユニットの構成を示すブロック図。
【図８】演算ユニット用コードタグと演算ユニット回路情報が記憶される記憶部との関係を示す図。
【図９】本発明の本実施形態に係る演算器の構成を示すブロック図。
【図１０】プログラムコードメモリに記憶されるプログラムコードの一例を示す図。
【図１１】コード転送制御部で処理されるコード転送要求の一例を示す図。
【図１２】コントローラ、各演算ユニットのサイクルごとの動作を示す図。
【符号の説明】
【０２２４】
１・・・半導体装置
２・・・外部プロセッサ
３・・・システムメモリ
１０Ａ〜１０Ｅ・・・演算ユニット
１００・・・演算器
１００１Ａ〜１００１Ｄ、１００４Ａ〜１００４Ｄ・・・セレクタ
１００２Ａ〜１００２Ｄ・・・ＡＬＵ
１００３Ａ〜１００３Ｄ・・・シフタ
１０１Ａ〜１０１Ｈ・・・演算ユニット回路情報ラッチ
１０２・・・回路情報更新信号生成部
１０３・・・データパイプラインレジスタ
１０４・・・制御パイプラインレジスタ
１０５・・・コードパイプラインレジスタ
１０６・・・セレクタ
１１・・・コントローラ
１１０・・・プログラムコードメモリ
１１１・・・データパス回路情報メモリ
１１２Ａ、１１２Ｂ・・・入力クロスバースイッチ
１１３・・・出力クロスバースイッチ
１１４・・・回路情報アドレス生成部
１１５・・・データアドレス生成部
１１６Ａ〜１１６Ｉ・・・ラッチ
１１７・・・カウンタ
１１８Ａ、１１８Ｂ・・・論理積演算器
１１９・・・論理和演算器
１２・・・データ入出力バッファ
１３・・・コードバッファ
１４・・・コード転送要求記憶部
１４０Ａ〜１４０Ｄ・・・コード転送要求ラッチ
１４１Ａ〜１４１Ｄ・・・Ｖａｌｉｄラッチ
１４２１、１４２２・・・カウンタ
１４３１、１４３２・・・デコーダ
１４４Ａ〜１４４Ｄ・・・論理積演算器
１４５Ａ〜１４５Ｄ・・・論理和演算器
１４６Ａ〜１４６Ｄ・・・論理積演算器
１４７１、１４７２、１４７３・・・セレクタ
１５・・・コード転送制御部
１５０Ａ〜１５０Ｇ・・・ラッチ
１５１Ａ〜１５１Ｄ・・・カウンタ
１５２Ａ〜１５２Ｃ・・・加算器
１５３Ａ〜１５３Ｅ、１５４・・・比較器
１５５Ａ、１５５Ｂ・・・セレクタ
１５６・・・デコーダ
１５７Ａ〜１５７Ｆ・・・論理積演算器
１５８Ａ〜１５８Ｄ・・・論理和演算器
【図１】
0004950796.tif 000002
【図２】
0004950796.tif 000003
【図３】
0004950796.tif 000004
【図４】
0004950796.tif 000005
【図５】
0004950796.tif 000006
【図６】
0004950796.tif 000007
【図７】
0004950796.tif 000008
【図８】
0004950796.tif 000009
【図９】
0004950796.tif 000010
【図１０】
0004950796.tif 000011
【図１１】
0004950796.tif 000012
【図１２】
0004950796.tif 000013