(57)【要約】      （修正有）【課題】性能を向上させる情報処理システム、情報処理方法、および、プログラムを提供する。【解決手段】情報処理システム９００はアドレス生成部０１０を含み、アドレス生成部０１０はローカルメモリ０３０と、複数のコプロ命令バッファ０５０／０５ｒと、ローカルメモリ０３０へのアクセスの調停を行う転送制御部０４０と、ローカルメモリ０３０から転送制御部０４０を介してコプロ命令列を読み出し、コプロ命令バッファ０５０／０５ｒに格納し、制御指示情報を出力するアドレス生成用プロセッサ０２０と、制御指示情報にしたがって、対応するコプロ命令バッファ０５０／０５ｒからコプロ命令列を読み出し、実行し、アレイメモリアドレスを生成し、出力するコプロセッサである複数のコプロ部０６０／０６ｒと、アレイメモリアドレスを格納し、出力するアドレスバッファ０７０と、を備える。【選択図】図１
2016018320.tif 000002
【特許請求の範囲】
【請求項１】
ローカルメモリと、
複数のコプロ命令バッファと、
前記ローカルメモリへのアクセスの調停を行う転送制御部と、
前記ローカルメモリから前記転送制御部を介してコプロ命令列を読み出し、前記コプロ命令バッファに格納し、制御指示情報を出力するアドレス生成用プロセッサと、
前記制御指示情報にしたがって、対応する前記コプロ命令バッファから前記コプロ命令列を読み出し、実行し、アレイメモリアドレスを生成し、出力するコプロセッサである複数のコプロ部と、
前記アレイメモリアドレスを格納し、出力するアドレスバッファと、
を備えるアドレス生成部を含むことを特徴とする情報処理システム。
【請求項２】
前記アドレス生成部の前記アドレスバッファは、前記アレイメモリアドレスを前記コプロ部ごとに格納し、前記コプロ部ごとにまとめて出力することを特徴とする請求項１の情報処理システム。
【請求項３】
前記アドレス生成部の前記アドレス生成用プロセッサは、前記制御指示情報である処理開始指示と共に、処理繰り返し数を出力し、
前記アドレス生成部の前記コプロ部は、前記処理開始指示を受け取ると、前記処理繰り返し数を含む計算式に基づいてループ数を算出し、対応する前記コプロ命令バッファに格納されている前記コプロ命令列を前記ループ数分繰り返し実行することを特徴とする請求項１、または、２の情報処理システム。
【請求項４】
前記アドレス生成部の前記コプロ部は、それぞれ、前記処理繰り返し数、および、前記コプロ部の総数、および、前記コプロ部の番号を含む前記計算式に基づいて前記ループ数を算出することを特徴とする請求項３の情報処理システム。
【請求項５】
前記アドレス生成部の前記アドレス生成用プロセッサは、前記ローカルメモリを内蔵し、
前記アドレス生成部の前記転送制御部は、前記アドレス生成用プロセッサを介して、前記ローカルメモリにアクセスことを特徴とする請求項１、２、３、または、４の情報処理システム。
【請求項６】
前記アドレス生成部の前記アドレス生成用プロセッサは、前記アレイメモリアドレスを生成、出力し、
前記アドレス生成部の前記アドレスバッファは、前記アドレス生成用プロセッサからの前記アレイメモリアドレスを格納し、出力することを特徴とする請求項１、２、３、４、または、５の情報処理システム。
【請求項７】
アレイメモリと、
アドレス演算装置と、
前記アドレス生成部の前記アドレスバッファからのアレイメモリアドレスを、前記アレイメモリを実際にアクセする実アレイメモリアドレスに変換し、前記アレイメモリに出力するアドレス変換回路と、
を含むことを特徴とする請求項１、２、３、４、５、または、６の情報処理システム。
【請求項８】
アドレス生成用プロセッサが、ローカルメモリから転送制御部を介してコプロ命令列を読み出し、コプロ命令バッファに格納し、制御指示情報を出力し、
複数のコプロ部が、前記制御指示情報にしたがって、対応する前記コプロ命令バッファから前記コプロ命令列を読み出し、実行し、アレイメモリアドレスを生成し、アドレスバッファに出力することを特徴とする情報処理方法。
【請求項９】
前記アドレスバッファが、前記アレイメモリアドレスを前記コプロ部ごとに格納し、前記コプロ部ごとにまとめて出力することを特徴とする請求項８の情報処理方法。
【請求項１０】
複数のコプロ部が制御指示情報にしたがって、対応するコプロ命令バッファからコプロ命令列を読み出し、実行し、アレイメモリアドレスを生成し、アドレスバッファに出力するように、前記コプロ命令列をローカルメモリから転送制御部を介して読み出し、前記コプロ命令バッファに格納し、前記制御指示情報を出力する処理を、
コンピュータに実行させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理システム、情報処理方法、および、プログラムに関する。
【背景技術】
【０００２】
無線通信等に使われる信号処理には、通常、高速性が求められ、専用回路による実現が一般的であった。しかし昨今では、コスト的な観点から、さまざまな信号処理をソフトウェアで実現し、プロセッサにより処理を行うことが求められるようになっている。そのため、信号処理用プロセッサの開発が行われている。
【０００３】
この分野の例として、特許文献１記載の技術がある。この技術は、アレイ演算装置に接続されたアドレス変換回路へのアドレスの生成、出力を、信号処理用プロセッサであるアドレス生成用プロセッサを複数、並列に動作させて実現するものである。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】再特ＷＯ２００９／０７２６０５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
特許文献１の技術では、アドレス生成用プロセッサのアドレス生成、出力の性能が、アレイ演算装置が要求するデータ転送速度より劣る場合があり、全体の性能が低下するという問題がある。特に、アドレス生成用プロセッサで実行されるアドレス生成のためのプログラムが複雑である場合にこの現象は顕著となる。
【０００６】
本発明の目的は、上記問題点を解決した情報処理システム、情報処理方法、および、プログラムを提供することである。
【課題を解決するための手段】
【０００７】
本発明の情報処理システムは、ローカルメモリと、複数のコプロ命令バッファと、前記ローカルメモリへのアクセスの調停を行う転送制御部と、前記ローカルメモリから前記転送制御部を介してコプロ命令列を読み出し、前記コプロ命令バッファに格納し、制御指示情報を出力するアドレス生成用プロセッサと、前記制御指示情報にしたがって、対応する前記コプロ命令バッファから前記コプロ命令列を読み出し、実行し、アレイメモリアドレスを生成し、出力するコプロセッサである複数のコプロ部と、前記アレイメモリアドレスを格納し、出力するアドレスバッファと、を備えるアドレス生成部を含む。
【０００８】
本発明の情報処理方法は、アドレス生成用プロセッサが、ローカルメモリから転送制御部を介してコプロ命令列を読み出し、コプロ命令バッファに格納し、制御指示情報を出力し、複数のコプロ部が、前記制御指示情報にしたがって、対応する前記コプロ命令バッファから前記コプロ命令列を読み出し、実行し、アレイメモリアドレスを生成し、アドレスバッファに出力する。
【０００９】
本発明のプログラムは、複数のコプロ部が制御指示情報にしたがって、対応するコプロ命令バッファからコプロ命令列を読み出し、実行し、アレイメモリアドレスを生成し、アドレスバッファに出力するように、前記コプロ命令列をローカルメモリから転送制御部を介して読み出し、前記コプロ命令バッファに格納し、前記制御指示情報を出力する処理を、コンピュータに実行させる。
【発明の効果】
【００１０】
本発明は、性能が向上するという効果を持つ。
【図面の簡単な説明】
【００１１】
【図１】本発明の第１の実施の形態の構成を示すブロック図である。
【図２】本発明の第１の実施の形態の動作を示す動作説明図である。
【図３】本発明の第２の実施の形態の構成を示すブロック図である。
【図４】アドレス生成用プロセッサで実行される特殊命令の書式を示す説明図である。
【図５】コプロ命令バッファの構成を示すブロック図である。
【図６】コプロ部の構成を示すブロック図である。
【図７】コプロ命令の書式を示す説明図である。
【図８】ローカルメモリに格納されるデータの一例を示す説明図である。
【図９】コプロ部により実行されるコプロ命令列の一例を示す説明図である。
【図１０】アドレス生成用プロセッサにより実行される命令列の一例を示す説明図である。
【図１１】コプロ部、および、アドレスバッファの動作を示すタイムチャートである。
【図１２】アドレス生成部により実行されるコプロ命令列の一例を示す説明図である。
【図１３】本発明の第３の実施の形態の構成を示すブロック図である。
【図１４】コプロ命令バースト転送命令の書式を示す説明図である。
【図１５】アドレス生成用プロセッサにより実行される命令列の一例を示す説明図である。
【図１６】本発明の第５の実施の形態の構成を示すブロック図である。
【図１７】読み出しアドレス生成命令の書式を示す説明図である。
【図１８】アドレス生成用プロセッサで実行される命令列の一例を示す説明図である。
【図１９】本発明の第５の実施の形態の動作を示すタイムチャートである。
【発明を実施するための形態】
【００１２】
［第１の実施の形態］
次に、本発明の第１の実施の形態について図面を参照して詳細に説明する。
【００１３】
図１は、第１の実施の形態の構成を示すブロック図である。図１を参照すると、第１の実施の形態の情報処理システム９００は、アドレス生成部０１０を含む。アドレス生成部０１０は、アドレス生成用プロセッサ０２０、ローカルメモリ０３０、転送制御部０４０、コプロ命令バッファ０５０〜コプロ命令バッファ０５ｒ、コプロ部０６０〜コプロ部０６ｒ（コプロセッサ）、および、アドレスバッファ０７０を含む。ここで、ｒは整数である。
【００１４】
アドレス生成部０１０は、たとえば、アレイ演算装置によって使用されるアレイメモリへのアレイメモリアドレスを生成し、出力する構成を持つ。
【００１５】
コプロ部０６０〜０６ｒは、アドレス生成用プロセッサ０２０の制御にしたがってコプロ命令を実行し、アレイメモリアドレスを生成する。アドレスバッファ０７０は、コプロ部０６０〜０６ｒにより生成されたアレイメモリアドレスを格納し、出力する。
【００１６】
ローカルメモリ０３０は、コプロ用データ、および、コプロ部０６０〜０６ｒにおいて実行されるコプロ命令等を格納する。
【００１７】
転送制御部０４０は、アドレス生成用プロセッサ０２０、コプロ部０６０〜０６ｒからのローカルメモリ０３０へのアクセスの調停制御の機能を持つ。たとえば、転送制御部０４０は、アービタの機能を持つ。また、転送制御部０４０は、ＤＭＡ（Direct Memory Access）の機能を持つことも可能である。
【００１８】
また、図１には、アドレス生成部０１０のみ記載してあるが、情報処理システム９００は、任意の個数のアドレス生成部を含むことが可能である。
【００１９】
次に、第１の実施の形態の動作について図面を参照して説明する。
【００２０】
アドレス生成部０１０を代表として説明する。図２は、第１の実施の形態の動作を示す動作説明図である。アドレス生成用プロセッサ０２０は、コプロ部０６０〜０６ｒをリセットするリセット指示を出力する（ステップＳ１）。コプロ部０６０〜０６ｒは、リセット指示にしたがい、一部の初期化（リセット）を行う（ステップＳ２）。
【００２１】
次に、アドレス生成用プロセッサ０２０は、ローカルメモリ０３０からコプロ用データを読み出し、内部に格納する（ステップＳ３）。次に、アドレス生成用プロセッサ０２０は、内部に格納したコプロ用データ、および、データ格納指示をコプロ部０６０〜０６ｒに出力する（ステップＳ４）。
【００２２】
データ格納指示に該当するコプロ部０６０〜０６ｒは、内部のレジスタ等に、コプロ用データを格納する（ステップＳ５）。
【００２３】
次に、アドレス生成用プロセッサ０２０は、ローカルメモリ０３０からコプロ命令を読み出し、内部に格納する（ステップＳ６）。次に、アドレス生成用プロセッサ０２０は、内部に格納したコプロ命令を対応するコプロ命令バッファ０５０〜０５ｒに順次格納する（ステップＳ７）。
【００２４】
次に、アドレス生成用プロセッサ０２０は、コプロ部０６０〜０６ｒに対して、処理開始指示を出力する（ステップＳ８）。コプロ部０６０〜０６ｒは、処理開始指示にしたがって、それぞれ対応するコプロ命令バッファ０５０〜０５ｒからコプロ命令を読み出し、実行し、アレイメモリアドレスを生成し、出力する（ステップＳ９）。このアレイメモリアドレスの生成には、コプロ用データが使用される。
【００２５】
次に、アドレスバッファ０７０は、コプロ部０６０〜０６ｒからのアレイメモリアドレスを内部に格納し、出力する（ステップＳ９）。
【００２６】
ここで、アドレス生成用プロセッサ０２０が、処理開始指示とともに、処理繰り返し数を出力する構成が可能である。この場合、コプロ部０６０〜０６ｒは、それぞれ、処理繰り返し数に基づいてループ数を算出し、それぞれ対応するコプロ命令バッファ０５０〜０５０ｒに格納されているコプロ命令をループ数の回数分繰り返し実行する。
【００２７】
上記リセット指示、データ格納指示、および、処理開始指示等を総称して、制御指示情報と呼ぶ。
【００２８】
また、アドレスバッファ０７０は、コプロ部０６０〜０６ｒごとにアレイメモリアドレスを格納し、１つのコプロ部０６０〜０６ｒごとにまとめてアレイメモリアドレスを出力する構成が可能である。たとえば、まず、コプロ部０６０により生成されたアレイメモリアドレスをまとめて出力し、順次出力する構成が可能である。
【００２９】
また、コプロ用データ、コプロ命令をアドレス生成用プロセッサ０２０に格納せず、ローカルメモリ０３０から、直接、それぞれ、コプロ部０６０〜０６０ｒ、コプロ命令バッファ０５０〜０５ｒに格納する構成が可能である。
【００３０】
また、ステップＳ６〜Ｓ７を、ステップＳ３〜Ｓ５より先に処理する構成が可能である。
【００３１】
また、アドレス生成用プロセッサ０２０（たとえば、コンピュータ）に、上記の機能を実現させるプログラムが実現可能である。また、このプログラムは、記録媒体に格納可能である。
【００３２】
次に、第１の実施の形態の効果について説明する。
【００３３】
第１の実施の形態は、アドレス生成部０１０のコプロ部０６０〜０６ｒが、並列にアレイメモリアドレスの生成、出力を行う構成である。よって、第１の実施の形態は、アドレス生成部０１０内でアレイメモリアドレスの生成をアドレス生成用プロセッサ０２０のみが行う構成（たとえば、特許文献１）に比べて、アレイメモリアドレスを高速に生成、出力でき、性能が向上するという効果を持つ。
【００３４】
［第２の実施の形態］
次に、本発明の第２の実施の形態について図面を参照して詳細に説明する。
【００３５】
第２の実施の形態は、第１の実施の形態の一例である。図３は、第２の実施の形態の構成を示すブロック図である。図３を参照すると、第２の実施の形態の情報処理システム９００は、アドレス生成部０１０、アドレス生成部１１０、アドレス相互接続網２００、タイミング制御ユニット３００、アレイメモリ４００、および、アレイ演算装置５００を含む。
【００３６】
アドレス生成部０１０の構成は、第１の実施の形態のアドレス生成部０１０の構成（図１）と同一である。ただし、ｒ＝１であり、コプロ命令バッファ０５０、コプロ命令バッファ０５１、コプロ部０６０、および、コプロ部０６１が含まれる。
【００３７】
アドレス生成部１１０は、アドレス生成部０１０と同一構成である。アドレス生成部１１０は、アドレス生成用プロセッサ１２０、ローカルメモリ１３０、転送制御部１４０、コプロ命令バッファ１５０、コプロ命令バッファ１５１、コプロ部１６０、コプロ部１６１、および、アドレスバッファ１７０を含む。アドレス生成部１１０は、アドレス生成部０１０と同一の機能を持つ。
【００３８】
第２の実施の形態では、以降の記述において、一般的に記述されたｒは、実際には、ｒ＝１である。
【００３９】
アドレス相互接続網２００は、アドレス変換回路２１０を含む。アレイメモリ４００は、メモリバンク（＃０）４１０〜メモリバンク（＃ｊ）４１ｊ（ｊは整数、したがって、総数は、ｊ＋１）を含む。
【００４０】
アドレス相互接続網２００、タイミング制御ユニット３００、メモリバンク（＃０）４１０〜メモリバンク（＃ｊ）４１ｊ、および、アレイ演算装置５００は、特許文献１の対応するものと、同一の機能を持つ構成が可能である。以下、これらは、特許文献１の対応するものと、同一の機能を持つとして説明する。
【００４１】
アドレス生成部０１０、１１０で生成されたアレイメモリアドレスは、アドレス相互接続網２００のアドレス変換回路２１０で受け取られ、アレイメモリ４００を実際にアクセスするアレイメモリアドレス（実アレイメモリアドレスと呼ぶ）へと変換される。実アレイメモリアドレスは、タイミング制御ユニット３００の制御にしたがい、アレイメモリ４００に出力される。
【００４２】
読み出し制御の場合、アレイメモリ４００は、実アレイメモリアドレスで指定された番地からデータを読み出し、アレイ演算装置５００に出力する。また、書き込み制御の場合、アレイメモリ４００は、アレイ演算装置５００からのデータを実アレイメモリアドレスで指定された番地に書き込む。
【００４３】
次に、アドレス生成部０１０のアドレス生成用プロセッサ０２０について詳細に説明する。アドレス生成用プロセッサ０２０は、たとえば、３２ビットのＲＩＳＣ（Reduced Instruction Set Computer）プロセッサであり、特許文献１に示されたようなアドレス生成機能を備えることが可能である。
【００４４】
なお、命令メモリ、データメモリのサイズ等についてはここでは本質ではないので、省略する。また、アドレス生成用プロセッサ０２０は、一般的なＲＩＳＣプロセッサが備える命令セット、すなわち、即値、および、レジスタを用いた四則演算命令、メモリアクセス命令、論理演算命令、ＮＯＰ等、および、図４に示す特殊命令を実行する。
【００４５】
図４は、アドレス生成用プロセッサ０２０で実行される特殊命令の書式を示す説明図である。図４を参照すると、特殊命令はＭＳＢから４ビットに、当該命令であることを示す命令コードを持ち、それ以降に、命令に応じたデータを収めた形式となっている。また、命令コードは２進で示されている。なお、各命令名の下に（）内で示したコマンドは、以降の説明で当該命令を参照する際に使用するフォーマットであり、命令名（パラメータ）の形式で示している。
【００４６】
なお、これらの命令処理は全て１サイクルで実行されることが可能である。
【００４７】
まず、コプロリセット命令（命令コード＝０１００）は、命令コード以外は、‘０’である。アドレス生成用プロセッサ０２０は、この命令を実行すると、コプロ部０６０〜０６ｒにリセット指示を出力する。コプロ部０６０〜０６ｒは、リセット指示にしたがい、それぞれ、コプロ命令バッファ０５０等に対応する命令書き込みポインタ０５Ｗ０、命令読み出しポインタ０５Ｒ０等（後述の図５参照）を‘０’にリセットする。
【００４８】
コプロ処理開始命令（命令コード＝０１０１）は、２０［ビット］の‘０’、８［ビット］の即値である処理繰り返し数を含む。アドレス生成用プロセッサ０２０は、この命令を実行すると、処理開始指示、および、処理繰り返し数＝ｋをコプロ部０６０〜０６ｒに出力する。コプロ部０６０〜０６ｒは、処理開始指示にしたがい、まず、ループ数（回数）を次の計算式（式１）により算出し、内部に格納する。
【００４９】
└ｋ／Ｎ┘＋Ａ  ただし、Ａ＝１（ｔ＜ｋ  ｍｏｄ（Ｎ）の場合）、
【００５０】
Ａ＝０（ｔ≧ｋ  ｍｏｄ（Ｎ）の場合）………（式１）。
【００５１】
ここで、└ｋ／Ｎ┘は、ｋ／Ｎを超えない最大の整数を意味する。ｔは、コプロ部０６０〜０６ｒのコプロ番号である。たとえば、コプロ部０６０に関してはｔ＝０あり、コプロ部０６ｒに関しては、ｔ＝ｒである。また、Ｎは、コプロ部０６０〜０６ｒの総数（＝ｒ＋１）である。
【００５２】
たとえば、Ｎ＝２、ｋ＝５であると、ｋ  ｍｏｄ（２）＝１である。したがって、コプロ部０６０に関しては、ｔ（＝０）＜１であり、Ａ＝１となる。また、コプロ部０６１に関しては、ｔ（＝１）≧１であり、Ａ＝０となる。したがって、コプロ部０６０に関しては、ループ数は、└ｋ／Ｎ┘＋Ａ＝└５／２┘＋１＝２＋１＝３である。コプロ部０６１に関しては、ループ数は、└ｋ／Ｎ┘＋Ａ＝└５／２┘＋０＝２＋０＝２である。
【００５３】
次に、コプロ部０６０〜０６ｒは、それぞれ、対応するコプロ命令バッファ０５０〜０５ｒからコプロ命令を読み出して実行する。たとえば、１０番地までコプロ命令が格納されていると、０番地〜１０番地の命令を順次実行する。そして、コプロ部０６０〜０６ｒは、それぞれ、この実行をループ数の回数分繰り返す。
【００５４】
コプロレジスタ転送命令（命令コード＝０１１０）は、４［ビット］の‘０’、４［ビット］の転送先レジスタ番号、４［ビット］のコプロ番号、および、１６［ビット］のメモリアドレスを含む。アドレス生成用プロセッサ０２０は、この命令を実行すると、ローカルメモリ０３０のメモリアドレスに示される番地からコプロデータを読み出し、内部に格納する。
【００５５】
そして、アドレス生成用プロセッサ０２０は、このコプロデータ、転送先レジスタ番号、コプロ番号を、データ格納指示と共にコプロ部０６０〜０６ｒに出力する。コプロ番号に該当するコプロ部０６０〜０６ｒは、アドレス生成用プロセッサ０２０からのコプロデータを内部の転送先レジスタ番号で指定されたレジスタに格納する。
【００５６】
なお、コプロ番号が、最終コプロ番号（ｒ）＋１の場合には、すべてのコプロ部０６０〜０６ｒの同じ転送先レジスタ番号に対し、コプロデータが格納される構成が可能である。
【００５７】
コプロ命令転送命令（命令コード＝０１１１）は、１２［ビット］の‘０’、および、１６［ビット］のメモリアドレスを含む。アドレス生成用プロセッサ０２０は、ローカルメモリ０３０のメモリアドレスに示される番地からコプロ命令を読み出し、内部に格納する。そして、アドレス生成用プロセッサ０２０は、このコプロ命令をすべてのコプロ命令バッファ０５０〜０５ｒに格納する。
【００５８】
アドレス生成用プロセッサ０２０が出力するリセット指示、処理開始指示、データ格納指示は、制御信号であるが、図４の対応する特殊命令の命令コードを制御信号として利用する構成が可能である。
【００５９】
次に、コプロ命令バッファ０５０〜０５ｒについて詳細に説明する。代表してコプロ命令バッファ０５０について説明する。図５は、コプロ命令バッファ０５０の構成を示すブロック図である。コプロ命令バッファ０５０は、たとえば、０〜６３番地にコプロ命令を格納可能である。図５を参照すると、コプロ命令バッファ０５０は、命令書き込みポインタ０５Ｗ０、命令読み出しポインタ０５Ｒ０によりそれぞれ書き込みアドレス、読み出しアドレスが指定される。
【００６０】
コプロ命令バッファ０５０は、コプロ部０６０によって実行されるコプロ命令を、命令書き込みポインタ０５Ｗ０で指定されたアドレスに格納し、命令読み出しポインタ０５Ｒ０で指定されたアドレスから読み出す。また、命令書き込みポインタ０５Ｗ０、命令読み出しポインタ０５Ｒ０は、アドレス生成用プロセッサ０２０、および／または、コプロ部０６０により制御される。
【００６１】
命令書き込みポインタ０５Ｗ０は、コプロ命令が格納されるとインクリメント（＋１）される（アドレス生成用プロセッサ０２０がコプロ命令転送命令の実行により実施）。命令読み出しポインタ０５Ｒ０は、コプロ命令が読み出されるとインクリメント（＋１）される（コプロ部０６０が処理開始指示にしたがい実施）。
【００６２】
図５においては、命令書き込みポインタ０５Ｗ０の値は、‘ｐ＋１’であり、０〜ｐ番地まで、コプロ命令が格納されている。また、命令読み出しポインタ０５Ｒ０の値は、‘２’であり、０〜１番地までのコプロ命令が読み出されている。
【００６３】
次に、コプロ部０６０〜０６ｒについて詳細に説明する。すべてのコプロ部０６０〜０６ｒは、同一の機能を持つので、代表してコプロ部０６０について説明する。図６は、コプロ部０６０の構成を示すブロック図である。
【００６４】
図６を参照すると、コプロ部０６０は、アドレス生成用プロセッサ０２０、転送制御部０４０、コプロ命令バッファ０５０、および、アドレスバッファ０７０と接続される。コプロ部０６０は、ローカルメモリ０３０へのアクセスを転送制御部０４０を介して行う。説明をわかりやすくするため、以下の記述においては、転送制御部０４０の動作を記述しない場合がある。
【００６５】
ローカルメモリ０３０は、十分な容量を持ち、図示しない外部装置からのコプロ用データ、コプロ命令を格納している。ローカルメモリ０３０は、転送制御部０４０の制御にしたがい動作する。
【００６６】
コプロ部０６０は、アドレス生成処理部０８１、コプロ制御部０８２を含む。アドレス生成処理部０８１は、レジスタファイル０８３（たとえば、０〜１５番地でアドレスされる１６ビットのレジスタを１６個）を含む。また、コプロ制御部０８２は、ループレジスタ０８４（ループ数を格納）を含む。
【００６７】
アドレス生成処理部０８１は、コプロ命令バッファ０５０からのコプロ命令の実行、即値、または、レジスタを使った四則演算、ローカルメモリ０３０からのデータの読み出し、アドレスバッファ０７０に格納するアレイメモリアドレスの生成等を行う。
【００６８】
コプロ制御部０８２は、アドレス生成用プロセッサ０２０から、リセット指示、コプロ用データ、データ格納指示、および、処理開始指示を受け取り、それらに対応する処理を行う。たとえば、コプロ制御部０８２は、データ格納指示を受け取ると、アドレス生成処理部０８１に指示し、受け取ったコプロ用データをレジスタファイル０８３の当該レジスタに格納させる。
【００６９】
主なコプロ命令について図面を参照して説明する。
【００７０】
図７は、コプロ命令の書式を示す説明図である。図７は、あくまでも、一例であって、この書式に限定されるものではない。なお、各命令名の下に（）内で示したコマンドは、以降の説明で当該命令を参照する際に使用されるフォーマットであり、命令名（パラメータ）の形式で示されている。
【００７１】
まず、レジスタ加算命令（命令コード＝０００１）は、レジスタファイル０８３のソースレジスタ１の内容とソースレジスタ２の内容とを加算し、加算結果をデスティネーションレジスタに格納する命令である。
【００７２】
データロード命令（命令コード＝００１０）は、レジスタファイル０８３のソースレジスタに格納されているアドレスで、ローカルメモリ０３０をアクセスし、データを読み出し、デスティネーションレジスタに格納する命令である。
【００７３】
なお、本命令の実行では、転送制御部０４０を介してデータが読み出されるが、状況によっては、転送制御部０４０からデータが返されない場合がある。その場合には、転送制御部０４０からストール信号が送信される。
【００７４】
ストール信号は、該アクセスが完了してデータが返されるまで送信が続けられ、この信号をコプロ制御部０８２が受け取っているうちは、コプロ制御部０８２はコプロデータの読み出し信号を発生しない。すなわち、命令の実行が中断され、コプロ部０６０はストールする。
【００７５】
書き込みアドレス生成命令（命令コード＝０１００）は、レジスタファイル０８３のソースレジスタに格納されたアレイメモリアドレス（書き込みアドレス）をアドレスバッファ０７０に出力する。
【００７６】
読み出しアドレス生成命令（命令コード＝０１０１）は、レジスタファイル０８３のソースレジスタに格納されたアレイメモリアドレス（読み出しアドレス）をアドレスバッファ０７０に出力する。
【００７７】
コプロ制御部０８２は、アドレス生成用プロセッサ０２０から処理開始指示、および、処理繰り返し数＝ｋを受け取ると、処理を開始する。このとき、コプロ制御部０８２は、上述の（式１）によりループ数を算出し、ループレジスタ０８４に格納する。
【００７８】
コプロ制御部０８２は、このループレジスタ０８４内のループ数、コプロ命令バッファ０５０の命令書き込みポインタ０５Ｗ０の値、命令読み出しポインタ０５Ｒ０の値を参照して、制御を行う。
【００７９】
すなわち、コプロ制御部０８２は、コプロ命令バッファ０５０からコプロ命令を読み出すごとに、命令読み出しポインタ０５Ｒ０をインクリメント（＋１）する。命令読み出しポインタ０５Ｒ０の値＝命令書き込みポインタ０５Ｗ０の値であると、コプロ制御部０８２は、ループレジスタ０８４をインクリメント（−１）し、命令読み出しポインタ０５Ｒ０の値を‘０’にする。コプロ制御部０８２は、ループレジスタ０８４の値が‘０’になると、コプロ命令バッファ０５０からのコプロ命令の読み出しを終了する。
【００８０】
また、コプロ制御部０８２は、１ループ終了ごとに、単ループ終了情報をアドレスバッファ０７０に出力する。
【００８１】
次に、転送制御部０４０について詳細に説明する。
【００８２】
転送制御部０４０は、アドレス生成用プロセッサ０２０、コプロ部０６０〜０６０ｒから、書き込みアクセス（または、読み出しアクセス）、アドレス、データ（書き込みの場合）を受け取ると、調停を実施する。転送制御部０４０は、調停結果で処理可能であれば、そのアクセスの処理を行い、書き込みアクセスの場合、ローカルメモリ０３０のアドレスで指定された番地にデータを書き込む。転送制御部０４０は、読み出しアクセスの場合、ローカルメモリ０３０のアドレスで指定された番地からデータを読み出し、アクセス元のアドレス生成用プロセッサ０２０、コプロ部０６０〜０６０ｒに出力する。
【００８３】
転送制御部０４０は、競合により調停結果で処理不可能であれば、アドレス生成用プロセッサ０２０、コプロ部０６０〜０６０ｒを待たせる。
【００８４】
この場合、アドレス生成用プロセッサ０２０、コプロ部０６０〜０６０ｒは、待ち状態になり、一旦、処理を停止する。転送制御部０４０が、調停結果で処理可能になると、アドレス生成用プロセッサ０２０、コプロ部０６０〜０６０ｒは、処理を再開する。
【００８５】
転送制御部０４０は、競合に際し、事前に設定されたアドレス生成用プロセッサ０２０、各コプロ部０６０〜０６ｒの優先度に基づいて調停を行う。また、処理実施後、転送制御部０４０は、処理を実施したアクセス元の優先度を下げる、または、待たせたアクセス元の優先度を上げる等の制御を行うことが可能である。
【００８６】
次に、アドレスバッファ０７０について詳細に説明する。
【００８７】
アドレスバッファ０７０は、コプロ部０６０〜０６０ｒ対応のサブバッファを含む。アドレスバッファ０７０は、コプロ部０６０〜０６０ｒにより出力されたアレイメモリアドレスを一旦格納し、タイミング制御ユニット３００により指示されるタイミングで出力する。
【００８８】
また、アドレスバッファ０７０は、バッファ内部のアレイメモリアドレスの数が予め設定された閾値を超えた場合、コプロ部０６０〜０６ｒに対し、割り込み信号を出力する。この割り込み信号を受け取ると、コプロ部０６０〜０６０ｒは処理を中断する。
【００８９】
アドレスバッファ０７０は、アドレス相互接続網２００にアレイメモリアドレスを出力し、内部のアレイメモリアドレスの数が閾値を下回ると、再度割り込み信号を出力し、コプロ部０６０〜０６ｒに対して処理の再開を指示する。
【００９０】
また、アドレスバッファ０７０は、各コプロ部０６０〜０６ｒからのアレイメモリアドレスの列を調停し、コプロ部０６０〜０６ｒごとにまとめて出力するアドレス調停機能を持つ。これは、各コプロ部０６０〜０６ｒにより出力される単ループ終了情報にしたがって次のように行われる。
【００９１】
まず、アドレスバッファ０７０は、各コプロ部０６０〜０６ｒからのアドレスを、各コプロ部０６０〜０６ｒに対応したバッファに一旦格納する。次に、アドレスバッファ０７０は、出力処理の開始時に、あるコプロ部０６０〜０６ｒに対応するバッファのアレイメモリアドレスの列を読み出して出力処理を行う。
【００９２】
アドレスバッファ０７０は、この出力処理を続け、単ループ終了情報を検出すると、別のコプロ部０６０〜０６ｒに対応するバッファからアレイメモリアドレスの列を読み出して出力処理を行う。アドレスバッファ０７０は、この処理を繰り返すことによって、コプロ部０６０〜０６ｒが行ったループ処理ごとにアレイメモリアドレスをまとめて出力することができる。
【００９３】
アドレスバッファ０７０は、コプロ部０６０に対応するサブバッファ０、サブ読み出しポインタ０、サブ書き込みポインタ０、ループ終了ポインタ０、および、ループ終了フラグ０を持つ。また、アドレスバッファ０７０は、コプロ部０６１に対応するサブバッファ１、サブ読み出しポインタ１、サブ書き込みポインタ１、ループ終了ポインタ１、ループ終了フラグ１を持つ。
【００９４】
また、アドレスバッファ０７０は、現在読み出しているサブバッファ０〜１の番号を保持する読み出し先バッファ番号レジスタを内部に備える。
【００９５】
コプロ部０６０〜０６１からのアレイメモリアドレスは、それぞれ、サブバッファ０〜１に格納され、直後、サブ書き込みポインタ０〜１がインクリメント（＋１）される。なお、サブ書き込みポインタ０〜１がバッファサイズと同じになった場合、サブ書き込みポインタ０〜１は、‘０’に更新される。
【００９６】
次に、コプロ部０６０〜０６１が、単ループ終了情報を出力すると、アドレスバッファ０７０は、その時点の対応するサブ書き込みポインタの０〜１の値を、それぞれ、ループ終了ポインタ０〜１に格納する。また、アドレスバッファ０７０は、同時に、対応するループ終了フラグを‘１’にする。
【００９７】
アドレスバッファ０７０は、サブ読み出しポインタ０、サブ読み出しポインタ１が、それぞれ、サブバッファ０、サブバッファ１の容量を超えると、これらを‘０’にする。
【００９８】
次に、第２の実施の形態の動作について図面を参照して説明する。
【００９９】
図８は、アドレス生成部０１０のローカルメモリ０３０に格納されるデータの一例を示す説明図である。図８を参照すると、６ワードのデータが格納されている。また、この６ワードの先頭をａｄｄｒｅｓｓ０、３ワード目をａｄｄｒｅｓｓｓ１とする。また、あるアドレスから次のアドレスに遷移するために加算すべき値をｏｆｆｓｅｔ（変数）とする。
【０１００】
図９は、コプロ部０６０〜０６１により実行されるコプロ命令列（プログラム）の一例を示す説明図である。図９を参照すると、コプロ部０６０〜０６１により実行される命令は５つである。なお、本例は、図６に示す命令名を使って記述されており、（）内の数字は全てレジスタ番号を示すものである。
【０１０１】
ＬＤ（３，１）は、レジスタ１番内のアドレスでローカルメモリ０３０からデータを読み出し、レジスタ３番に格納する。ＡＤＤ（４，３，２）は、レジスタ３番内のデータと、レジスタ２番内のデータとを加算し、加算結果をレジスタ４番に格納する。ＲＤ（３）は、レジスタ３番内のデータを出力する（この場合、アドレスバッファ０７０に）。ＲＤ（４）は、レジスタ４番内のデータを出力する（この場合、アドレスバッファ０７０に）。ＡＤＤ（１，１，５）は、レジスタ１番内のデータ（アドレス）とレジスタ５番内のデータとを加算し、加算結果をレジスタ１番に格納する。
【０１０２】
図９の右記は、図９の左記の命令を、図７に示した書式にしたがってバイナリ変換し、これを配列データにまとめたものである。
【０１０３】
図１０は、アドレス生成用プロセッサ０２０により実行される命令列（プログラム）の一例を示す説明図である。図１０を参照すると、たとえば、命令列は、Ｃ言語の疑似ソースコードとして記述可能である。先頭から７行目までには、図９の右記に示される変換後の配列データが記載されている。
【０１０４】
９行目には、処理関数が定義されている。この関数は引数を３つとり、これら引数は、図８に示されるａｄｄｒｅｓｓ０、ａｄｄｒｅｓｓ１、ｏｆｆｓｅｔである。１１行目には、処理繰り返し数（ここでは、‘４’）が定義されている。
【０１０５】
１３行目には、Ｃ＿Ｒｅｓｅｔ命令（コプロ部０６０〜０６１のリセット）が記述されている。アドレス生成用プロセッサ０２０は、この命令を実行すると、コプロ部０６０〜０６１にリセット指示を出力する。
【０１０６】
これにより、全コプロ部０６０〜０６１は、それぞれ、対応するコプロ命令バッファ０５０〜０５１の現在の命令書き込みポインタ０５Ｗ０、および、命令読み出しポインタ０５Ｒ０等の値を‘０’にリセットする。
【０１０７】
１５行目から１９行目までには、Ｃ＿Ｓｅｎｄ命令が記述されている。なお本来は、図４に示す通り、同命令にはメモリアドレスを書くが、本例では簡略化のため、変数名や即値が直接記載されている。アドレス生成用プロセッサ０２０は、この命令を実行すると、コプロ用データ、コプロ番号、転送先レジスタ番号、および、データ格納指示をコプロ部０６０〜０６１に出力する。
【０１０８】
そして、先頭の命令では、ａｄｄｒｅｓｓ０が、コプロ部０６０の１番レジスタに格納される。次の命令では、ａｄｄｒｅｓｓ１が、コプロ部０６１の１番レジスタに格納される。３番目の命令では、即値‘１’が、コプロ部０６０〜０６１の両方のレジスタ２番に格納される。最後の命令では、ｏｆｆｓｅｔが、コプロ部０６０〜０６１の両方のレジスタ５番に格納される。
【０１０９】
２２行目から２６行目までには、Ｃ＿Ｉｎｓｔ命令が記述されている。ここでも、本例では簡略化のため、変数名や即値が直接記載されている。アドレス生成用プロセッサ０２０は、この命令を実行すると、ローカルメモリ０３０に格納されたコプロ命令である配列データ（ｃｏｎｖｄ＿ｉｎｓｔ）を内部のレジスタに格納し、次に、内部のレジスタからコプロ命令バッファ０５０〜０５１に格納する。
【０１１０】
また、この命令実行により、コプロ命令バッファ０５０〜０５１の命令書き込みポインタ０５Ｗ０等が、順次、‘０’から‘１’、…‘５’にインクリメントされる。
【０１１１】
２９行目には、Ｃ＿Ｒｕｎ命令が記述されている。この命令は、処理繰り返し数である引数のｌｏｏｐｎｕｍ（＝４）を持つ。アドレス生成用プロセッサ０２０は、この命令を実行すると、コプロ部０６０〜０６１に、処理開始指示、および、処理繰り返し数を出力する。
【０１１２】
次に、コプロ部０６０〜０６１が処理開始指示および、処理繰り返し数（＝４）を受け取り、ループレジスタ０８４等にループ数を格納した後、図９に示す命令列を実行する場合の動作について説明する。コプロ部０６０〜０６１におけるループ数は、上述の（式１）により、両方、‘２’である。なお、アドレス変換回路２１０からアドレスバッファ０７０へのアドレス出力アクセスは、常に出力されており、アドレスバッファ０７０は、すぐに、アレイメモリアドレスを出力する場合について説明する。
【０１１３】
図１１は、コプロ部０６０〜０６１、および、アドレスバッファ０７０の動作を示すタイムチャートである。ＬＤ、ＲＤの直後の数字は、それぞれ、転送制御部０４０、アドレスバッファ０７０により処理される順番を示している。また、各サイクルにおける処理の結果は、各サイクルの最後（＝次サイクルの開始時）に確定するものとする。
【０１１４】
［サイクル０］においては、コプロ部０６０〜０６１が、それぞれ、コプロ命令バッファ０５０〜０５１から命令ＬＤ１、ＬＤ２を取り出し、実行する。
【０１１５】
命令ＬＤ１、命令ＬＤ２の実行では、コプロ部０６０〜０６１は、転送制御部０４０を介してローカルメモリ０３０にアクセス（読み出し）する。
【０１１６】
転送制御部０４０は、優先度（ここでは、コプロ部０６０の優先度＞コプロ部０６１の優先度とする）にしたがい、調停を行う。したがって、転送制御部０４０は、命令ＬＤ１のアクセスを処理し、命令ＬＤ２のアクセスを待たせる。
【０１１７】
すなわち、転送制御部０４０は、ローカルメモリ０３０から命令ＬＤ１に対応するデータを読み出し、コプロ部０６０に出力し、コプロ部０６１にストール信号を出力する。コプロ部０６１は、処理を中断する。そして、転送制御部０４０は、コプロ部０６０の優先度＜コプロ部０６１にする。そして、コプロ部０６０は、転送制御部０４０からのデータを内部のレジスタ３番に格納する。
【０１１８】
［サイクル１］においては、コプロ部０６０は、命令ＡＤＤを実行する。転送制御部０４０は、ストール信号をオフにし、ローカルメモリ０３０から命令ＬＤ２に対応するデータを読み出し、コプロ部０６１に出力する。そして、コプロ部０６１は、転送制御部０４０からのデータを受け取り、内部のレジスタ３番に格納する。また、転送制御部０４０は、優先度を元に戻す。
【０１１９】
［サイクル２］においては、コプロ部０６０は、命令ＲＤ１を実行する。すなわち、コプロ部０６０は、アドレスバッファ０７０にレジスタ３番内のデータ（アレイメモリアドレス）を出力する。そして、アドレスバッファ０７０は、サブバッファ０に、コプロ部０６０からのデータ（ＲＤ１のアレイメモリアドレス）を格納し、サブ書き込みポインタ０をインクリメントし、‘１’にする。また、コプロ部０６１は、命令ＡＤＤを実行する。
【０１２０】
［サイクル３］においては、アドレスバッファ０７０は、読み出し先バッファ番号（‘０’）に対応するサブバッファ０から書き込んだデータ（ＲＤ１のアレイメモリアドレス）を、アドレス変換回路２１０に出力する。そして、アドレスバッファ０７０は、サブ読み出しポインタ０をインクリメントし、‘１’にする。
【０１２１】
また、コプロ部０６０は、命令ＲＤ２を実行する。すなわち、コプロ部０６０は、アドレスバッファ０７０にレジスタ４番内のデータ（アレイメモリアドレス）を出力する。そして、アドレスバッファ０７０は、サブバッファ０に、コプロ部０６０からのデータ（ＲＤ２のアレイメモリアドレス）を格納し、サブ書き込みポインタ０をインクリメントし、‘２’にする。また、コプロ部０６１は、命令ＲＤ３を実行する。すなわち、コプロ部０６１は、アドレスバッファ０７０にレジスタ３番内のデータ（アレイメモリアドレス）を出力する。そして、アドレスバッファ０７０は、サブバッファ１に、コプロ部０６１からのデータ（ＲＤ３のアレイメモリアドレス）を格納し、サブ書き込みポインタ１をインクリメントし、‘１’にする。
【０１２２】
［サイクル４］においては、アドレスバッファ０７０は、サブバッファ０に書き込んだデータ（ＲＤ２のアレイメモリアドレス）を、アドレス変換回路２１０に出力し、サブ読み出しポインタ０をインクリメントし、‘２’にする。
【０１２３】
また、コプロ部０６０は、命令ＡＤＤを実行し、単ループ終了情報をアドレスバッファ０７０に出する。そして、アドレスバッファ０７０は、この単ループ終了情報にしたがって、サブ書き込みポインタ０の値（‘２’）をループ終了ポンタに格納し、ループ終了フラグ０を‘１’にする。
【０１２４】
また、コプロ部０６１は、命令ＲＤ４を実行し、アドレスバッファ０７０にレジスタ４番内のデータ（アレイメモリアドレス）を出力する。アドレスバッファ０７０は、サブバッファ１に、コプロ部０６１からのデータ（ＲＤ４アレイメモリアドレス）を格納し、サブ書き込みポインタ１をインクリメントし、‘２’にする。
【０１２５】
［サイクル５］においては、ループ終了フラグ０の値＝‘１’、かつ、サブ読み出しポインタ０の値（‘２’）＝ループ終了ポインタの値（‘２’）である。したがって、アドレスバッファ０７０は、ループ終了フラグ０を‘０’にし、読み出し先バッファ番号をインクリメントし、‘１’にする。
【０１２６】
コプロ部０６０は、命令ＬＤ３を実行する。また、コプロ部０６１は、命令ＡＤＤを実行し、単ループ終了情報をアドレスバッファ０７０に出力する。そして、アドレスバッファ０７０は、コプロ部０６１からの単ループ終了情報にしたがって、書き込みポインタ１の値（‘２’）をループ終了ポンタに格納し、ループ終了フラグ１を‘１’にする。
【０１２７】
［サイクル６］においては、アドレスバッファ０７０は、読み出し先バッファ番号（‘１’）に対応するサブバッファ１からデータ（ＲＤ３のアレイメモリアドレス）を、アドレス変換回路２１０に出力する。そして、アドレスバッファ０７０は、サブ読み出しポインタ１をインクリメントし、‘１’にする。
【０１２８】
また、コプロ部０６０は、命令ＡＤＤを実行する。また、コプロ部０６１は、ＬＤ４命令を実行する。
【０１２９】
［サイクル７］においては、アドレスバッファ０７０は、サブバッファ１からデータ（ＲＤ４のアレイメモリアドレス）を、アドレス変換回路２１０に出力し、サブ読み出しポインタ１をインクリメントし、‘２’にする。
【０１３０】
また、コプロ部０６０は、命令ＲＤ５を実行し、アドレスバッファ０７０にレジスタ３番内のデータ（アレイメモリアドレス）を出力する。そして、アドレスバッファ０７０は、サブバッファ０に、コプロ部０６０からのデータ（ＲＤ５のアレイメモリアドレス）を格納し、サブ書き込みポインタ０をインクリメントし、‘３’にする。
【０１３１】
また、コプロ部０６１は、命令ＡＤＤを実行する。
［サイクル８］においては、ループ終了フラグ１の値＝‘１’、かつ、サブ読み出しポインタ１の値（‘２’）＝ループ終了ポインタの値（‘２’）である。したがって、アドレスバッファ０７０は、ループ終了フラグ１を‘０’にし、読み出し先バッファ番号を最初の値である‘０’にする。
【０１３２】
また、コプロ部０６０は、命令ＲＤ６を実行し、アドレスバッファ０７０にレジスタ４番内のデータ（アレイメモリアドレス）を出力する。そして、アドレスバッファ０７０は、サブバッファ０に、コプロ部０６０からのデータ（ＲＤ６のアレイメモリアドレス）を格納し、サブ書き込みポインタ０をインクリメントし、‘４’にする。
【０１３３】
また、コプロ部０６１は、命令ＲＤ７を実行し、アドレスバッファ０７０にレジスタ３番内のデータ（アレイメモリアドレス）を出力する。そして、アドレスバッファ０７０は、サブバッファ１に、コプロ部０６１からのデータ（ＲＤ７のアレイメモリアドレス）を格納し、サブ書き込みポインタ０をインクリメントし、‘３’にする。
【０１３４】
［サイクル９］においては、アドレスバッファ０７０は、読み出し先バッファ番号（‘０’）に対応するサブバッファ０からデータ（ＲＤ５のアレイメモリアドレス）を、アドレス変換回路２１０に出力する。そして、アドレスバッファ０７０は、サブ読み出しポインタ０をインクリメントし、‘３’にする。
【０１３５】
また、コプロ部０６０は、命令ＡＤＤを実行し、単ループ終了情報をアドレスバッファ０７０に出力する。そして、アドレスバッファ０７０は、この単ループ終了情報にしたがって、サブ書き込みポインタ０の値（‘４’）をループ終了ポンタに格納し、ループ終了フラグ０を‘１’にする。
【０１３６】
また、コプロ部０６１は、命令ＲＤ８を実行し、アドレスバッファ０７０にレジスタ４番内のデータ（アレイメモリアドレス）を出力する。そして、アドレスバッファ０７０は、サブバッファ１に、コプロ部０６１からのデータ（ＲＤ８アレイメモリアドレス）を格納し、サブ書き込みポインタ１をインクリメントし、‘４’にする。
【０１３７】
［サイクル１０］においては、アドレスバッファ０７０は、サブバッファ０からデータ（ＲＤ６のアレイメモリアドレス）を、アドレス変換回路２１０に出力し、サブ読み出しポインタ０をインクリメントし、‘４’にする。
【０１３８】
また、コプロ部０６１は、命令ＡＤＤを実行し、単ループ終了情報をアドレスバッファ０７０に出力する。そして、アドレスバッファ０７０は、コプロ部０６１からの単ループ終了情報にしたがって、書き込みポインタ１の値（‘４’）をループ終了ポンタに格納し、ループ終了フラグ１を‘１’にする。
【０１３９】
［サイクル１１］においては、ループ終了フラグ０の値＝‘１’、かつ、サブ読み出しポインタ０の値（‘４’）＝ループ終了ポインタの値（‘４’）である。したがって、アドレスバッファ０７０は、ループ終了フラグ０を‘０’にし、読み出し先バッファ番号をインクリメントし、‘１’にする。
【０１４０】
［サイクル１２］においては、アドレスバッファ０７０は、読み出し先バッファ番号（‘１’）に対応するサブバッファ１からデータ（ＲＤ７のアレイメモリアドレス）を、アドレス変換回路２１０に出力する。そして、アドレスバッファ０７０は、サブ読み出しポインタ１をインクリメントし、‘３’にする。
【０１４１】
［サイクル１３］においては、アドレスバッファ０７０は、サブバッファ１からデータ（ＲＤ８のアレイメモリアドレス）を、アドレス変換回路２１０に出力し、サブ読み出しポインタ１をインクリメントし、‘４’にする。
【０１４２】
［サイクル１４］においては、ループ終了フラグ１の値＝‘１’、かつ、サブ読み出しポインタ１の値（‘４’）＝ループ終了ポインタの値（‘４’）である。したがって、アドレスバッファ０７０は、ループ終了フラグ１を‘０’にし、読み出し先バッファ番号を最初の値である‘０’にする。
【０１４３】
次に、アドレス生成部１１０の動作について説明する。アドレス生成部１１０の動作は、基本的にアドレス生成部０１０の動作と同等である。しかし、アドレス生成部１１０によって実行されるコプロ命令列（プログラム）は、アドレス生成部０１０で実行されるコプロ命令列（プログラム）と同一である必要はない。
【０１４４】
図１２は、アドレス生成部１１０により実行されるコプロ命令列（プログラム）の一例を示す説明図である。図１２を参照すると、アドレス生成部０１０されるコプロ命令列（図９）との違いは、ＲＤ命令が、ＷＲ命令になっている点である。
【０１４５】
アドレス変換回路２１０は、タイミング制御ユニット３００の制御にしたがって、アドレス生成部０１０〜１１０から、アレイメモリアドレスを順次受け取り、たとえば、引用文献１と同様な処理を行う。
【０１４６】
次に、第２の実施の形態の効果について説明する。
【０１４７】
第２の実施の形態は、第１の実施の形態の一例である。したがって、第２の実施の形態は、第１の実施の形態と同一の効果を持つ。
【０１４８】
［第３の実施の形態］
次に、本発明の第３の実施の形態について図面を参照して詳細に説明する。
【０１４９】
図１３は、第３の実施の形態の構成を示すブロック図である。図１３を参照すると、第３の実施の形態のアドレス生成部０１０は、ローカルメモリ０３０を、アドレス生成用プロセッサ０２０の内部に含む（内蔵する）構成である。したがって、コプロ部０６０〜０６ｒからローカルメモリ０３０へのアクセスに関して、転送制御部０４０は、アドレス生成用プロセッサ０２０を介して、ローカルメモリ０３０にアクセスする。
【０１５０】
ローカルメモリ０３０には、アドレス生成用プロセッサ０２０により実行される命令列（図１０）、および、コプロ部０６０〜０６ｒで実行される命令列（図９等）、コプロ用データが格納可能である。ローカルメモリ０３０は、たとえば、デュアルポートのメモリで構成可能である。
【０１５１】
第３の実施の形態の動作は、第１の実施の形態（詳細には、第２の実施の形態）と基本的に同一である。
【０１５２】
次に、第３の実施の形態の効果について説明する。
【０１５３】
第３の実施の形態は、アドレス生成用プロセッサ０２０により実行される命令列、コプロ部０６０〜０６ｒで実行される命令列、および、コプロ用データが、ローカルメモリ０３０に格納される構成である。したがって、第１、第２の実施の形態より、プログラムの配置が簡単になり、使い勝手が向上するという効果を持つ。
【０１５４】
［第４の実施の形態］
次に、本発明の第４の実施の形態について図面を参照して詳細に説明する。
【０１５５】
第４の実施の形態においては、アドレス生成用プロセッサ０２０は、新たな特殊命令であるコプロ命令バースト転送命令を実行可能である。図１４は、コプロ命令バースト転送命令（Ｃ＿Ｉｎｓｔ＿Ｂｕｒｓｔ）の書式を示す説明図である。図１４を参照すると、この命令は、メモリアドレス（１６［ビット］）、および、転送サイズ（１２［ビット］）を含む。
【０１５６】
アドレス生成用プロセッサ０２０は、本命令を実行すると、ローカルメモリ０３０からメモリアドレスを起点として、転送サイズ分のコプロ命令を読み出し、コプロ命令バッファ０５０〜０５ｒに格納する。また、図１５は、アドレス生成用プロセッサ０２０により実行される命令列（プログラム）の一例を示す説明図である。図１５を参照すると、コプロ命令バースト転送命令の使用により、コプロ命令の転送のための５命令が１命令で、コーディング可能となる。
【０１５７】
次に、第４の実施の形態の効果について説明する。
【０１５８】
第４の実施の形態は、コプロ命令の転送のためにコプロ命令バースト転送命令を使用可能であり、アドレス生成用プロセッサ０２０で実行される命令列（プログラム）のプログラム容量が減少する構成である。したがって、第４の実施の形態は、第２〜第３の実施の形態に比べて、コーディング量が減少し、かつ、コーディングが容易であるという効果を持つ。
【０１５９】
［第５の実施の形態］
次に、本発明の第５の実施の形態について図面を参照して詳細に説明する。
【０１６０】
図１６は、第５の実施の形態の構成を示すブロック図である。図１６を参照すると、アドレス生成用プロセッサ０２０が、コプロ部０６０〜０６ｒと同様、アレイメモリアドレスの生成、出力を行う機能を持つ。また、アドレスバッファ０７０は、アドレス生成用プロセッサ０２０用のサブバッファＡを備える。
【０１６１】
なお、アドレス生成用プロセッサ０２０とコプロ部０６０〜０６ｒのアドレス生成、出力の優先度に関しては、種々可能である。たとえば、アドレス生成用プロセッサ０２０にコプロ部０６０〜０６ｒと同様に番号を割り当て、これを用いて優先度が決定されてもよい。また、コプロ部０６０〜０６ｒの動作中においては、アドレスバッファ０７０は、アドレス生成用プロセッサ０２０からのアレイメモリアドレスをアドレス変換回路２１０に出力しない構成が可能である。そして、この場合、アドレスバッファ０７０は、コプロ部０６０〜０６ｒからのアレイメモリアドレスの出力後に、アドレス生成用プロセッサ０２０からのアレイメモリアドレスを出力する。
【０１６２】
また、第５の実施の形態では、アドレス生成用プロセッサ０２０は、新たな特殊命令である読み出しアドレス生成命令を実行可能である。図１７は、読み出しアドレス生成命令（ＲＤＡ）の書式を示す説明図である。図１７を参照すると、この命令は、ソースレジスタ番号（４［ビット］）を含む。
【０１６３】
アドレス生成用プロセッサ０２０は、本命令を実行すると、ソースレジスタからアレイメモリアドレスを読み出し、アドレスバッファ０７０に出力する。また、図１８は、アドレス生成用プロセッサ０２０で実行される命令列（プログラム）の一例を示す説明図である。図１８を参照すると、このプログラムは、第４の実施の形態のプログラム（図１５）と基本的に同一であるが、２８行目に読み出しアドレス生成命令（ＲＤＡ）を含んでいる。
【０１６４】
次に、第５の実施の形態の動作について図面を参照して説明する。
【０１６５】
図１９は、第５の実施の形態の動作を示すタイムチャートである。図１９の動作は、図１１の動作と基本的に同一である。
【０１６６】
［サイクル２］においては、アドレス生成用プロセッサ０２０は、ＲＤＡ命令を実行し、アレイメモリアドレスを出力し、アドレスバッファ０７０は、サブバッファＡに、そのアレイメモリアドレスを格納する。
【０１６７】
［サイクル１５］においては、アドレスバッファ０７０は、コプロ部０６０〜０６１からのアレイメモリアドレスの出力が終了したので、サブバッファＡに格納したアドレス生成用プロセッサ０２０からのアレイメモリアドレスを出力する。
【０１６８】
次に、第５の実施の形態の効果について説明する。
【０１６９】
第５の実施の形態は、アドレス生成用プロセッサ０２０、コプロ部０６０〜０６ｒが両方とも、アレイメモリアドレスを生成する構成である。したがって、第５の実施の形態は、より高速に処理を実施できるという効果を持つ。
【０１７０】
［第６の実施の形態］
次に、本発明の第６の実施の形態について説明する。
【０１７１】
第６の実施の形態においては、コプロ部０６０〜０６ｒが、アレイメモリアドレスをアドレスバッファ０７０に出力する時に、ループレジスタ０８４等の値を付加情報として出力する。アドレスバッファ０７０は、この付加情報を利用し、制御を実施する。アドレスバッファ０７０は、付加情報内のループレジスタ０８４等の値が、前回受け取った付加情報内のループレジスタ０８４等の値と同一であれば、同じコプロ部０６０〜０６ｒに対する処理を行う。同一でなければ、アドレスバッファ０７０は、別のコプロ部０６０〜０６ｒに対する処理を行う。
【０１７２】
次に、第６の実施の形態の効果について説明する。
【０１７３】
第６の実施の形態は、アレイメモリアドレスに付随する不可情報を使用する構成である。したがって、第６の実施の形態は、アドレスバッファ０７０の構成が簡単になるという効果を持つ。
【０１７４】
また、以上の実施の形態を任意に組み合わせる構成が可能である。
【０１７５】
上記の実施の形態の一部、または、全部は、以下の付記のようにも記載されうるが、以下には限られない。
【０１７６】
［付記１］
ローカルメモリと、
複数のコプロ命令バッファと、
前記ローカルメモリへのアクセスの調停を行う転送制御部と、
前記ローカルメモリから前記転送制御部を介してコプロ命令列を読み出し、前記コプロ命令バッファに格納し、制御指示情報を出力するアドレス生成用プロセッサと、
前記制御指示情報にしたがって、対応する前記コプロ命令バッファから前記コプロ命令列を読み出し、実行し、アレイメモリアドレスを生成し、出力するコプロセッサである複数のコプロ部と、
前記アレイメモリアドレスを格納し、出力するアドレスバッファと、
を備えるアドレス生成部を含むことを特徴とする情報処理システム。
【０１７７】
［付記２］
前記アドレス生成部の前記アドレスバッファは、前記アレイメモリアドレスを前記コプロ部ごとに格納し、前記コプロ部ごとにまとめて出力することを特徴とする付記１の情報処理システム。
【０１７８】
［付記３］
前記アドレス生成部の前記アドレス生成用プロセッサは、前記制御指示情報である処理開始指示と共に、処理繰り返し数を出力し、
前記アドレス生成部の前記コプロ部は、前記処理開始指示を受け取ると、前記処理繰り返し数を含む計算式に基づいてループ数を算出し、対応する前記コプロ命令バッファに格納されている前記コプロ命令列を前記ループ数分繰り返し実行することを特徴とする付記１、または、２の情報処理システム。
【０１７９】
［付記４］
前記アドレス生成部の前記コプロ部は、それぞれ、前記処理繰り返し数、および、前記コプロ部の総数、および、前記コプロ部の番号を含む前記計算式に基づいて前記ループ数を算出することを特徴とする付記３の情報処理システム。
【０１８０】
［付記５］
前記アドレス生成部の前記アドレス生成用プロセッサは、前記ローカルメモリを内蔵し、
前記アドレス生成部の前記転送制御部は、前記アドレス生成用プロセッサを介して、前記ローカルメモリにアクセスことを特徴とする付記１、２、３、または、４の情報処理システム。
【０１８１】
［付記６］
前記アドレス生成部の前記アドレス生成用プロセッサは、前記アレイメモリアドレスを生成、出力し、
前記アドレス生成部の前記アドレスバッファは、前記アドレス生成用プロセッサからの前記アレイメモリアドレスを格納し、出力することを特徴とする付記１、２、３、４、または、５の情報処理システム。
【０１８２】
［付記７］
アレイメモリと、
アドレス演算装置と、
前記アドレス生成部の前記アドレスバッファからのアレイメモリアドレスを、前記アレイメモリを実際にアクセする実アレイメモリアドレスに変換し、前記アレイメモリに出力するアドレス変換回路と、
を含むことを特徴とする付記１、２、３、４、５、または、６の情報処理システム。
【０１８３】
［付記８］
アドレス生成用プロセッサは、ローカルメモリから転送制御部を介してコプロ命令列を読み出し、コプロ命令バッファに格納し、制御指示情報を出力し、
複数のコプロ部は、前記制御指示情報にしたがって、対応する前記コプロ命令バッファから前記コプロ命令列を読み出し、実行し、アレイメモリアドレスを生成し、アドレスバッファに出力することを特徴とする情報処理方法。
【０１８４】
［付記９］
前記アドレスバッファは、前記アレイメモリアドレスを前記コプロ部ごとに格納し、前記コプロ部ごとにまとめて出力することを特徴とする付記８の情報処理方法。
【０１８５】
［付記１０］
前記アドレス生成用プロセッサは、前記制御指示情報である処理開始指示と共に、処理繰り返し数を出力し、
前記アドレス生成部の前記コプロ部は、前記処理開始指示を受け取ると、前記処理繰り返し数を含む計算式に基づいてループ数を算出し、対応する前記コプロ命令バッファに格納されている前記コプロ命令列を前記ループ数分繰り返し実行することを特徴とする付記８、または、９の情報処理方法。
【０１８６】
［付記１１］
前記アドレス生成部の前記コプロ部は、それぞれ、前記処理繰り返し数、および、前記コプロ部の総数、および、前記コプロ部の番号を含む前記計算式に基づいて前記ループ数を算出することを特徴とする付記１０の情報処理方法。
【０１８７】
［付記１２］
前記アドレス生成用プロセッサは、前記ローカルメモリを内蔵し、
前記転送制御部は、前記アドレス生成用プロセッサを介して、前記ローカルメモリにアクセスことを特徴とする付記８、９、１０、または、１１の情報処理方法。
【０１８８】
［付記１３］
前記アドレス生成部の前記アドレス生成用プロセッサは、前記アレイメモリアドレスを生成、出力し、
前記アドレス生成部の前記アドレスバッファは、前記アドレス生成用プロセッサからの前記アレイメモリアドレスを格納し、出力することを特徴とする付記８、９、１０、１１、または、１２の情報処理方法。
【０１８９】
［付記１４］
複数のコプロ部が制御指示情報にしたがって、対応するコプロ命令バッファからコプロ命令列を読み出し、実行し、アレイメモリアドレスを生成し、アドレスバッファに出力するように、前記コプロ命令列をローカルメモリから転送制御部を介して読み出し、前記コプロ命令バッファに格納し、前記制御指示情報を出力する処理を、
コンピュータに実行させることを特徴とするプログラム。
【０１９０】
［付記１５］
前記コプロ部が前記処理開始指示を受け取ると、前記処理繰り返し数を含む計算式に基づいてループ数を算出し、対応する前記コプロ命令バッファに格納されている前記コプロ命令列を前記ループ数分繰り返し実行するように、前記制御指示情報である処理開始指示と共に、処理繰り返し数を出力する処理を、
コンピュータに実行させることを特徴とする付記１４のプログラム。
【０１９１】
［付記１６］
前記コプロ部が、それぞれ、前記処理繰り返し数、および、前記コプロ部の総数、および、前記コプロ部の番号を含む前記計算式に基づいて前記ループ数を算出するように、前記処理繰り返し数を出力する処理を、
コンピュータに実行させることを特徴とする付記１５のプログラム。
【０１９２】
［付記１７］
前記アドレスバッファに格納し、出力するための前記アレイメモリアドレスを生成、出力する処理を、
コンピュータに実行させることを特徴とする特徴とする付記１４、１５、または、１６のプログラム。
【符号の説明】
【０１９３】
０１０    アドレス生成部
０２０    アドレス生成用プロセッサ
０３０    ローカルメモリ
０４０    転送制御部
０５０    コプロ命令バッファ
０５１    コプロ命令バッファ
０５ｒ    コプロ命令バッファ
０５Ｗ０    命令書き込みポインタ
０５Ｒ０    命令読み出しポインタ
０６０    コプロ部
０６１    コプロ部
０６ｒ    コプロ部
０７０    アドレスバッファ
０８１    アドレス生成処理部
０８２    コプロ制御部
０８３    レジスタファイル
０８４    ループレジスタ
１１０    アドレス生成部
１２０    アドレス生成用プロセッサ
１３０    ローカルメモリ
１４０    転送制御部
１５０    コプロ命令バッファ
１５１    コプロ命令バッファ
１６０    コプロ部
１６１    コプロ部
１７０    アドレスバッファ
２００    アドレス相互接続網
２１０    アドレス変換回路
３００    タイミング制御ユニット
４００    アレイメモリ
４１０    メモリバンク（＃０）
４１ｊ    メモリバンク（＃ｊ）
５００    アレイ演算装置
９００    情報処理システム
【図１】
2016018320.tif 000003
【図２】
2016018320.tif 000004
【図３】
2016018320.tif 000005
【図４】
2016018320.tif 000006
【図５】
2016018320.tif 000007
【図６】
2016018320.tif 000008
【図７】
2016018320.tif 000009
【図８】
2016018320.tif 000010
【図９】
2016018320.tif 000011
【図１０】
2016018320.tif 000012
【図１１】
2016018320.tif 000013
【図１２】
2016018320.tif 000014
【図１３】
2016018320.tif 000015
【図１４】
2016018320.tif 000016
【図１５】
2016018320.tif 000017
【図１６】
2016018320.tif 000018
【図１７】
2016018320.tif 000019
【図１８】
2016018320.tif 000020
【図１９】
2016018320.tif 000021