"第1から第MMは2以上の任意の自然数のメモリそれぞれに同時に書き込む複数の入力データの組の配列を指定する入力データ配列と前記第1から第Mのメモリから同時に読み出す複数の出力データの組の配列を指定する出力データ配列とに基づいて生成された、ベースアドレスとアドレスの増分値であるステップ数と前記ベースアドレスに対して前記ステップ数を順次加算してアドレスを生成する回数とを含むループ構造を1つ以上含む、汎用アドレス生成器制御情報GAG制御情報に基づいて、第1から第Mのメモリそれぞれに対応する、書き込みアドレスを出力する、書込アドレス生成手段と、前記GAG制御情報に基づいて、前記第1から第Mのメモリそれぞれに対応する、読み出しアドレスを出力する、読出アドレス生成手段と、前記GAG制御情報に基づいて、前記第1から第Mのメモリそれぞれに書き込む前記入力データの組を排他的に指定する入力データ選択手段用制御情報を出力する、入力データ選択制御手段と、前記GAG制御情報に基づいて、前記第1から第Mのメモリから読み出した複数のデータの組の内の各データの組を排他的に指定する、出力データ選択手段用制御情報を出力する、出力データ選択制御手段と、前記入力データ選択手段用制御情報に基づいて、前記入力データ配列の前記入力データの組の内の各データの組を排他的に選択し、出力する入力データ選択手段と、前記読み出しアドレスに対応して前記第1から第Mのメモリそれぞれから同時に読み出された複数のデータの組を受け取り、前記出力データ選択手段用制御情報に基づいて、前記受け取った複数のデータの組の内の各データの組を排他的に選択し、前記出力データ配列の前記出力データを出力する出力データ選択手段と、を含むメモリ制御装置。前記入力データ配列及び前記出力データ配列に基づいて、前記入力データ配列の各要素が前記出力データ配列の先頭から何行目に配置されているかを示す出力タイミング配列を生成する出力タイミング配列生成手段と、前記入力データ配列及び前記出力タイミング配列に基づいて、前記入力データ配列の各要素を前記第1から第Mのメモリに格納した状態を示すメモリ内データ配列を生成するメモリ配置方法決定手段と、前記入力データ配列及び前記メモリ内データ配列に基づいて、前記入力データ配列の各要素毎の前記入力データ選択手段用制御情報及び前記書き込みアドレスを含む、書き込みアドレス配列を生成する書き込みアドレス配列生成手段と、前記書き込みアドレス配列に基づいて、前記GAG制御情報を生成する書き込み側GAG制御情報生成手段と、を含むGAG制御情報自動生成手段を更に含む請求項1記載のメモリ制御装置。前記GAG制御情報自動生成手段は、前記メモリ内データ配列及び前記出力データ配列に基づいて、前記メモリ内データ配列の各要素毎の前記読み出しアドレス及び前記出力データ選択手段用制御情報を含む、読み出しアドレス配列を生成する読み出しアドレス配列生成手段と、前記読み出しアドレス配列に基づいて、前記GAG制御情報を生成する読み出し側GAG制御情報生成手段と、を更に含む請求項2記載のメモリ制御装置。命令記憶手段を更に含む請求項2記載のメモリ制御装置。前記出力データ配列は、前記第1から第Mのメモリからの読み出しを開始するタイミングが異なる出力データ配列であって、前記GAG制御情報自動生成手段は、前記出力データ配列に基づいて、前記出力データ配列の行の要素を再配置した出力タイミング情報を生成する出力タイミング情報生成手段を更に含み、前記出力タイミング情報生成手段は、前記出力データ配列の列の内の読み出しを開始するタイミングが最も早い前記列である最早列における前記第1から第Mのメモリからのデータの読み出しが行われる前記出力データ配列の行の要素に対応する、前記出力データ配列の各列における前記第1から第Mのメモリからのデータの読み出しが行われない前記出力データ配列の行の要素に、前記最早列における読み出しの終了以後の前記出力データ配列の行の要素に対応する、前記出力データ配列の各列における前記第1から第Mのメモリからのデータの読み出しが行われる前記出力データ配列の行の要素を、再配置した出力タイミング情報を生成し、前記出力タイミング配列生成手段は、前記入力データ配列及び前記出力タイミング情報に基づいて、出力タイミング配列を生成する請求項2または3に記載のメモリ制御装置。前記書込アドレス生成手段、前記読出アドレス生成手段、前記入力データ選択制御手段及び前記出力データ選択制御手段のそれぞれに対応する前記GAG制御情報を保持する命令記憶手段を更に含む請求項1乃至4のいずれかに記載のメモリ制御装置前記第1から第Mのメモリを更に含む請求項1乃至5のいずれかに記載のメモリ制御装置。メモリ制御装置が、第1から第MMは2以上の任意の自然数のメモリそれぞれに同時に書き込む複数の入力データの組の配列を指定する入力データ配列と前記第1から第Mのメモリから同時に読み出す複数の出力データの組の配列を指定する出力データ配列とに基づいて生成された、ベースアドレスとアドレスの増分値であるステップ数と前記ベースアドレスに対して前記ステップ数を順次加算してアドレスを生成する回数とを含むループ構造を1つ以上含む、汎用アドレス生成器制御情報GAG制御情報に基づいて、第1から第Mのメモリそれぞれに対応する、書き込みアドレスを出力し、前記GAG制御情報に基づいて、前記第1から第Mのメモリそれぞれに対応する、読み出しアドレスを出力し、前記GAG制御情報に基づいて、前記第1から第Mのメモリそれぞれに書き込む前記入力データの組を排他的に指定する入力データ選択手段用制御情報を出力し、前記GAG制御情報に基づいて、前記第1から第Mのメモリから読み出した複数のデータの組の内の各データの組を排他的に指定する、出力データ選択手段用制御情報を出力し、前記入力データ選択手段用制御情報に基づいて、前記入力データ配列の前記入力データの組の内の各データの組を排他的に選択し、出力し、前記読み出しアドレスに対応して前記第1から第Mのメモリそれぞれから同時に読み出された複数のデータの組を受け取り、前記出力データ選択手段用制御情報に基づいて、前記受け取った複数のデータの組の内の各データの組を排他的に選択し、前記出力データ配列の前記出力データを出力するメモリ制御方法。GAG制御情報自動生成手段が、前記入力データ配列及び前記出力データ配列に基づいて、前記入力データ配列の各要素が前記出力データ配列の先頭から何行目に配置されているかを示す出力タイミング配列を生成し、前記入力データ配列及び前記出力タイミング配列に基づいて、前記入力データ配列の各要素を前記第1から第Mのメモリに格納した状態を示すメモリ内データ配列を生成し、前記入力データ配列及び前記メモリ内データ配列に基づいて、前記入力データ配列の各要素毎の前記入力データ選択手段用制御情報及び前記書き込みアドレスを含む、書き込みアドレス配列を生成し、前記書き込みアドレス配列に基づいて、前記GAG制御情報を生成する請求項7記載のメモリ制御方法。前記GAG制御情報自動生成手段は、前記メモリ内データ配列及び前記出力データ配列に基づいて、前記メモリ内データ配列の各要素毎の前記読み出しアドレス及び前記出力データ選択手段用制御情報を含む、読み出しアドレス配列を生成し、前記読み出しアドレス配列に基づいて、前記GAG制御情報を生成する請求項8記載のメモリ制御方法。第1から第MMは2以上の任意の自然数のメモリそれぞれに同時に書き込む複数の入力データの組の配列を指定する入力データ配列と前記第1から第Mのメモリから同時に読み出す複数の出力データの組の配列を指定する出力データ配列とに基づいて、前記入力データ配列の各要素が前記出力データ配列の先頭から何行目に配置されているかを示す出力タイミング配列を生成する処理と、前記入力データ配列及び前記出力タイミング配列に基づいて、前記入力データ配列の各要素を前記第1から第Mのメモリに格納した状態を示すメモリ内データ配列を生成する処理と、前記入力データ配列及び前記メモリ内データ配列に基づいて、前記入力データ配列の各要素毎の、前記第1から第Mのメモリそれぞれに書き込む前記入力データの組を排他的に指定する入力データ選択手段用制御情報及び前記第1から第Mのメモリそれぞれに対応する書き込みアドレスを含む、書き込みアドレス配列を生成する処理と、前記書き込みアドレス配列に基づいて、ベースアドレスとアドレスの増分値であるステップ数と前記ベースアドレスに対して前記ステップ数を順次加算してアドレスを生成する回数とを含むループ構造を1つ以上含む、汎用アドレス生成器制御情報GAG制御情報を生成する処理と、をコンピュータに実行させるメモリ制御情報生成プログラム。しかしながら、上述した技術文献に記載された技術は、マルチバンク構成のメモリの制御において、入力メモリへの書き込み時と出力メモリからの読み出し時とでデータ配列が異なる場合、対応可能なデータ配列の組み合わせが非常に限定されている、という問題点を有する。その理由は、上述の技術文献に記載された技術は、入力時と出力時とで異なるデータ配列の組み合わせに、汎用的に対応することができないためである。このことを、以下に、具体的に説明する。特許文献1に開示されたデータ配列変換システムは、特定の変換のみを可能としている。その特定の変換は、入力のデータフォーマットが2のN乗行と2のN乗列とからなる2次元データ配列であり、かつ出力のデータフォーマットが入力データフォーマットの行と列とを入れ替えた配列である、変換である。特許文献2に開示された計算機における作業配列の作成の技術は、入力出力のデータフォーマットが規定されたデータ配列の変換に適したものではない。非特許文献1に示されるGAGは、複数組のデータ群を格納しているメモリから、メモリに格納されて配列とは異なる配列で、一度に一組のデータを順次読み出す場合の読み出しアドレスを生成することができる。また、このGAGは、保持している複数組のデータ群を、保持している配列とは異なる配列で、一度に一組のデータを順次メモリに書き込む場合の書き込みアドレスを生成することができる。一方、高度に最適化された信号処理用回路において、一度に複数組のデータを並列に読み出すこと、及び一度に複数組のデータを書き込むことが必要とされる場合がある。このような場合、メモリの構成は、通常マルチバンク構成である。更に、マルチバンク構成のメモリ制御は、メモリアクセスのスループット低下を防止するため、同時に読み出される複数組のデータの配列を考慮して、一度に書き込む複数組のデータを格納するバンクを決定する機能を有していることが望ましい。即ち、マルチバンク構成のメモリ制御は、どのポートから入力された一組のデータをどのメモリバンクに書き込むかを選択する機能を有していることが望ましい。更に、マルチバンク構成のメモリ制御は、どのバンクから読み出した一組のデータをどのポートに出力するかを選択する機能を有していることが望ましい。しかし、非特許文献1に示されるGAGは、そのような機能は有していない。即ち、マルチバンク構成のメモリの制御において、上述の技術文献に記載された技術により対応可能な、入力時と出力時とで異なるデータフォーマットの組み合わせは、2次元データ配列の行と列とを入れ替えたデータフォーマットの組み合わせのみ、であるためである。本発明の目的は、上述した問題点を解決できるメモリ制御装置、及びメモリ制御方法を提供することにある。本発明のメモリ制御装置は、第1から第MMは2以上の任意の自然数のメモリそれぞれに同時に書き込む複数の入力データの組の配列を指定する入力データ配列と前記第1から第Mのメモリから同時に読み出す複数の出力データの組の配列を指定する出力データ配列とに基づいて生成された、ベースアドレスとアドレスの増分値であるステップ数と前記ベースアドレスに対して前記ステップ数を順次加算してアドレスを生成する回数とを含むループ構造を1つ以上含む、汎用アドレス生成器制御情報GAG制御情報に基づいて、第1から第Mのメモリそれぞれに対応する、書き込みアドレスを出力する、書込アドレス生成手段と、前記GAG制御情報に基づいて、前記第1から第Mのメモリそれぞれに対応する、読み出しアドレスを出力する、読出アドレス生成手段と、前記GAG制御情報に基づいて、前記第1から第Mのメモリそれぞれに書き込む前記入力データの組を指定する入力データ選択手段用制御情報を出力する、入力データ選択制御手段と、前記GAG制御情報に基づいて、前記第1から第Mのメモリから読み出した複数のデータの組の内の各データの組を排他的に指定する、出力データ選択手段用制御情報を出力する、出力データ選択制御手段と、前記入力データ選択手段用制御情報に基づいて、前記入力データ配列の前記入力データの組の内の各データの組を排他的に選択し、出力する入力データ選択手段と、前記読み出しアドレスに対応して前記第1から第Mのメモリそれぞれから同時に読み出された複数のデータの組を受け取り、前記出力データ選択手段用制御情報に基づいて、前記受け取った複数のデータの組の内の各データの組を排他的に選択し、前記出力データ配列の前記出力データを出力する出力データ選択手段と、を含む。本発明のメモリ制御方法は、メモリ制御装置が、第1から第MMは2以上の任意の自然数のメモリそれぞれに同時に書き込む複数の入力データの組の配列を指定する入力データ配列と前記第1から第Mのメモリから同時に読み出す複数の出力データの組の配列を指定する出力データ配列とに基づいて生成された、ベースアドレスとアドレスの増分値であるステップ数と前記ベースアドレスに対して前記ステップ数を順次加算してアドレスを生成する回数とを含むループ構造を1つ以上含む、汎用アドレス生成器制御情報GAG制御情報に基づいて、第1から第Mのメモリそれぞれに対応する、書き込みアドレスを出力し、前記GAG制御情報に基づいて、前記第1から第Mのメモリそれぞれに対応する、読み出しアドレスを出力し、前記GAG制御情報に基づいて、前記第1から第Mのメモリそれぞれに書き込む前記入力データの組を排他的に指定する入力データ選択手段用制御情報を出力し、前記GAG制御情報に基づいて、前記第1から第Mのメモリから読み出した複数のデータの組の内の各データの組を排他的に指定する、出力データ選択手段用制御情報を出力し、前記入力データ選択手段用制御情報に基づいて、前記入力データ配列の前記入力データの組の内の各データの組を排他的に選択し、出力し、前記読み出しアドレスに対応して前記第1から第Mのメモリそれぞれから同時に読み出された複数のデータの組を受け取り、前記出力データ選択手段用制御情報に基づいて、前記受け取った複数のデータの組の内の各データの組を排他的に選択し、前記出力データ配列の前記出力データを出力する。本発明のメモリ制御情報生成プログラムは、第1から第MMは2以上の任意の自然数のメモリそれぞれに同時に書き込む複数の入力データの組の配列を指定する入力データ配列と前記第1から第Mのメモリから同時に読み出す複数の出力データの組の配列を指定する出力データ配列とに基づいて、前記入力データ配列の各要素が前記出力データ配列の先頭から何行目に配置されているかを示す出力タイミング配列を生成する処理と、前記入力データ配列及び前記出力タイミング配列に基づいて、前記入力データ配列の各要素を前記第1から第Mのメモリに格納した状態を示すメモリ内データ配列を生成する処理と、前記入力データ配列及び前記メモリ内データ配列に基づいて、前記入力データ配列の各要素毎の、前記第1から第Mのメモリそれぞれに書き込む前記入力データの組を排他的に指定する入力データ選択手段用制御情報及び前記第1から第Mのメモリそれぞれに対応する書き込みアドレスを含む、書き込みアドレス配列を生成する処理と、前記書き込みアドレス配列に基づいて、ベースアドレスとアドレスの増分値であるステップ数と前記ベースアドレスに対して前記ステップ数を順次加算してアドレスを生成する回数とを含むループ構造を1つ以上含む、GAG制御情報を生成する処理と、をコンピュータに実行させる。本発明は、マルチバンク構成のメモリの制御において、入力時と出力時とで異なるデータ配列の組み合わせに汎用的に対応することを可能にするという効果がある。次に、本発明の実施形態について図面を参照して詳細に説明する。以下の説明において、複数の同一モジュールを区別して説明する必要がある場合、符号に続けて識別番号の形式でサフィックスを付加して表記する。例えば、制御回路999というモジュールが2つあり、これを区別して説明する場合、制御回路9991、制御回路9992と表記する。複数の同一モジュールを区別しないで説明する場合例えば、全ての制御回路900について説明する場合、サフィックスを付加しないで単に制御回路999と表記する。また、例えば、制御回路9990~制御回路999M-1を、制御回路9990~M-1とも表記する。但し、Mは2以上の自然数とする。[第1の実施の形態]図1は、本発明の第1の実施形態の構成を示すブロック図である。図1を参照すると、本実施形態に係るデータ保持出力回路100は、Write2-DGAG書込2次元汎用アドレス生成器210、リード2-DGAG読出2次元汎用アドレス生成器220、シャッフル回路3001~2及びメモリ4000~M-1を含む。メモリ400は、例えば、マルチバンク構造のメモリの各バンクである。メモリ400は、例えば、ワードアドレスで示される番地に、ワード単位のデータデータの組、入力データの組及び出力データの組とも呼ばれるを記憶する。次に、シャッフル回路300について、図2を用いて説明する。図2は、シャッフル回路300の構造を示すブロック図である。シャッフル回路300は、M個の入力ポート311、M個の入力に対し1つを選択するM個のM:1セレクタM対1セレクタ310及びM個の出力ポート312を含む。シャッフル回路300は、M個の入力ポート311に、M個のシャッフル前データBS0~M-1を受け取る。また、シャッフル回路300のM個のM:1セレクタ3100~M-1は、M個のシャッフル回路用制御情報BA0~M-1を受け取る。シャッフル前データBS0~M-1は、シャッフル回路3001の場合、外部からシャッフル回路300に入力される入力データID0~M-1である。シャッフル前データBS0~M-1は、シャッフル回路3002の場合、メモリ4000~M-1から出力されるメモリ出力データMO0~M-1である。シャッフル回路用制御情報BA0~M-1は、0~M-1の値のいずれかを、それぞれ排他的に持つ。シャッフル回路300は、受け取ったシャッフル前データBS0~M-1をそれぞれM分岐し、各M:1セレクタ3100~M-1にシャッフル前データBS0~M-1を入力する。また、シャッフル回路300は、M:1セレクタ3100~M-1それぞれに、受け取ったシャッフル回路用制御情報BA0~M-1をそれぞれ入力する。各M:1セレクタ3100~M-1は、シャッフル回路用制御情報BA0~M-1に基づいて、シャッフル前データBS0~M-1の内のいずれか1つを、それぞれ選択する。尚、シャッフル回路3001に入力されるシャッフル回路用制御情報BAは、入力データ選択部用制御情報とも呼ばれる。また、シャッフル回路3001に入力されるシャッフル回路用制御情報BAは、出力データ選択部用制御情報とも呼ばれる。そして、各M:1セレクタ3100~M-1は、選択した1つのシャッフル前データBS0~M-1を、それぞれシャッフル後データAS0~M-1として、各出力ポート312から出力する。シャッフル後データAS0~M-1は、シャッフル回路3001の場合、メモリ4000~M-1に出力するメモリ入力データMI0~M-1である。シャッフル後データAS0~M-1は、シャッフル回路3002の場合、シャッフル回路300から外部へ出力する出力データOD0~M-1である。次に、ライト2-DGAG210及びリード2-DGAG220について、図3を用いて説明する。以後、ライト2-DGAG210及びリード2-DGAG220を総称して2-DGAG200とも呼ぶ。図3は、2-DGAG200の構造を示すブロック図である。2-DGAG200は、シャッフル回路用制御情報生成器201及びメモリ用ワードアドレス生成器202を含む。シャッフル回路用制御情報生成器201及びメモリ用ワードアドレス生成器202は、それぞれ、M個の命令メモリGAG用命令メモリ203と、M個のGAG204とを含む。各命令メモリ203は、GAG制御情報205を保持する。命令メモリ203とGAG204との組み合わせは、各々、背景技術において図37及び図38を用いて説明したアドレス生成器900と同様の動作を行う。GAG制御情報205は、例えば、関連技術として説明した図37に示すようなGAG制御情報931と同様の情報である。GAG制御情報205は、例えば、図4に示すような入力データ配列702と図5に示すような出力データ配列に基づいて、生成された情報である。GAG制御情報205は、ループ構造を1つ以上含む。そのループ構造は、例えば、ベースアドレスとアドレスの増分値であるステップ数とそのベースアドレスに対してそのステップ数を順次加算してアドレスを生成する回数とを含むループ構造である。図4は、入力データ配列702の例を示す図である。図4に示すように、入力データ配列702は、例えば、それぞれA~Pのインデックスが割り当てられた配列である。入力データ配列702は、例えば、メモリ4000~M-1それぞれに、同時に書き込む複数ワードの入力データの配列を指定する。図5は、出力データ配列703の例を示す図である。図5に示すように、出力データ配列703は、例えば、それぞれA~Pのインデックスが割り当てられた配列である。出力データ配列703は、例えば、メモリ4000~M-1から同時に読み出す複数ワードのデータを出力する際の、出力データの配列を指定する。ライト2-DGAG210のシャッフル回路用制御情報生成器201は、対応するGAG制御情報205に基づいて、シャッフル回路用制御情報BA0~M-1をシャッフル回路3001に出力する。また、メモリ用ワードアドレス生成器202は、対応するGAG制御情報205に基づいて、メモリ用ワードアドレスWA0~M-1を、出力する。図1に示すように、メモリ用ワードアドレス生成器202は、メモリ用ワードアドレスWA0~M-1それぞれをメモリ入力用ワードアドレスIWA0~M-1として、M個のメモリ4000~M-1にそれぞれ出力する。尚、メモリ4000~M-1は、これらメモリ入力用ワードアドレスIWA0~M-1が示す番地に、シャッフル回路3001から出力されたメモリ入力データMI0~M-1を書き込む。リード2-DGAG220のシャッフル回路用制御情報生成器201は、対応するGAG制御情報205に基づいて、シャッフル回路用制御情報BA0~M-1をシャッフル回路3002に出力する。また、メモリ用ワードアドレス生成器202は、対応するGAG制御情報205に基づいて、メモリ用ワードアドレスWA0~M-1を、出力する。図1に示すように、メモリ用ワードアドレス生成器202は、メモリ用ワードアドレスWA0~M-1それぞれをメモリ出力用ワードアドレスOWA0~M-1として、M個のメモリ4000~M-1にそれぞれ出力する。尚、メモリ4000~M-1は、これらメモリ出力用ワードアドレスOWA0~M-1が示す番地からデータを読み出し、メモリ出力データMO0-M-1として、シャッフル回路3002に出力する。次に、本実施形態の動作について、図2~図8を参照して詳細に説明する。尚、本実施形態の動作の説明において、前提を以下の例のとおりであると仮定する。データ保持出力回路100は、例えば、4つのメモリ4000~3を含む。即ち、図4のデータ保持出力回路100は、図1に示すデータ保持出力回路100において、M=4とした場合のデータ保持出力回路100である。データ配列の変換対象の入力データは、例えば、行方向に4の、列方向に4の、行列の要素に対応し、16個である。出力データも同様である。ここで、行方向は、メモリ400の数に対応し、同じタイミングでデータが入力される。また、列方向は、メモリ400のワードアドレスに対応する。命令メモリ203、及びメモリ400は、制御情報及びデータを格納するために必要十分な領域を有している。命令メモリ203は、例えば、GAG制御情報205を、GAG204が動作する際に使用する順番で、命令メモリ203の先頭から順に保持している。また、ライト2-DGAG200のシャッフル回路用制御情報生成器201のGAG204は、例えば、データ保持出力回路100に入力データが入力されるタイミングと同じタイミングで、シャッフル回路用制御情報BA0~3を出力する。更に、ライト2-DGAG200のメモリ用ワードアドレス生成器202のGAG204は、例えば、シャッフル回路用制御情報BA0~3の出力を開始した次のサイクルから、メモリ入力用ワードアドレスIWA0~3を出力する。また、リード2-DGAG220のメモリ用ワードアドレス生成器202のGAG204は、例えば、メモリ4000~3に全データが溜まった次のサイクルから、メモリ出力用ワードアドレスOWA0~3を出力する。更に、リード2-DGAG220のシャッフル回路用制御情報生成器201のGAG204は、例えば、メモリ出力用ワードアドレスOWA0~3の出力が開始された次のサイクルから、シャッフル回路用制御情報BA0~3を出力する。また、シャッフル回路用制御情報BA0~3は、例えば、1~4の整数である。そして、各M:1セレクタ310は、入力されたシャッフル前データBS0~3の内、その識別番号の後の数字が、シャッフル回路用制御情報BAから1減算した値と一致する、シャッフル前データBSを選択し出力する。更に、各メモリ4000~3のアドレスは、例えば、先頭番地を1として、ワード単位で1ずつ増加する値である。メモリ400は、例えば、メモリ入力用ワードアドレスIWAに対応する番地に、入力されたデータを格納する。更に、メモリ400は、例えば、メモリ出力用ワードアドレスOWAを受け取った次のサイクルに、そのメモリ出力用ワードアドレスOWAに対応する番地に格納されているデータを読み出し、出力する。以上を前提として、本実施形態の動作を説明する。図6は、上述の前提に基づく、本実施形態の具体的な構成の例を示すブロック図である。上述の前提に基づいて、各情報及びデータ線は4組である。尚、以下の説明において、メモリ400に入力するデータをメモリ入力データMI、メモリ400から出力するデータをメモリ出力データと呼ぶ。まず、データ入力側の動作を説明する。図7は、データ入力側ライト2-DGAG210及びシャッフル回路3001の動作を示すタイムチャートである。図7を参照すると、最上部の数字はクロックの番号を示し、その下の信号はクロック信号を示し、それ以下の信号は各信号線から出力されるデータ及び制御情報を示す。まず、クロック0~3において、入力データID0~3シャッフル前データBS0~3が入力される。これに応じて、ライト2-DGAG210は、シャッフル回路用制御情報BA0~3を出力する。このシャッフル回路用制御情報BA0~3は、前述のとおり、各M:1セレクタ3100~M-1がシャッフル回路3001に入力されたシャッフル前データBS0~3の内のどれを選択するかを指示する。シャッフル回路300は、シャッフル回路用制御情報BA0~3に基づいて、メモリ入力データMI0~3シャッフル後データAS0~3を出力する。次に、ライト2-DGAG210は、メモリ入力用ワードアドレスIWA0~3をメモリ4000~3に出力する。このメモリ入力用ワードアドレスIWA0~3は、前述のとおり、シャッフル後データAS0~3をメモリ4000~3のどのワードに格納するかを指示する。メモリ4000~3は、メモリ入力用ワードアドレスIWA0~3に基づいて、シャッフル後データAS0~3を格納する。次に、データ出力側の動作を説明する。図8は、データ出力側リード2-DGAG220、シャッフル回路3002及びメモリ4000~3の動作を示すタイムチャートである。図8を参照すると、最上部の数字はクロックの番号を示し、その下の信号はクロック信号を示し、それ以下の信号は各信号線から出力されるデータ及び制御情報を示す。まず、上述の入力側の動作によって、16個の全ての入力データがメモリに書き込まれると、リード2-DGAG220は、メモリ出力用ワードアドレスOWA0~3を出力する。このメモリ出力用ワードアドレスOWA0~3は前述のとおり、シャッフル前データBS0~3をメモリ4000~3のどのワードから読み出すかを指示する。メモリ4000~3は、メモリ出力用ワードアドレスOWA0~3に基づいて、シャッフル前データBS0~3MO0~3を出力する次に、リード2-DGAG220は、シャッフル回路用制御情報BA0~3を出力する。これらに基づいて、シャッフル回路3002は、上述のシャッフル回路3001と同様に動作し、出力データOD0~3シャッフル後データAS0~3を出力する。尚、本実施形態においては前述のような前提であると仮定したが、本実施形態で示す機能と同等のものが実現できる場合、これに限る必要はない。例えば、GAG204は、GAG用の命令メモリ203に対して、GAG制御情報205を読み出す位置を示す情報を入力し、動作開始時にその位置からGAG制御情報205を読み出すようにしてもよい。上述した本実施形態における効果は、マルチバンク構成のメモリの制御において、入力時と出力時とで異なるデータ配列の組み合わせに汎用的に対応することを可能にする点である。その理由は、以下のような構成を含むからである。即ち、第1に、データ入力時において、ライト2-DGAG210及びシャッフル回路3001が、同時に入力された入力パターン配列の複数ワードの入力データそれぞれを、GAG制御情報に基づいて排他的に選択し、複数のメモリ400に格納する。第2に、データ出力時において、リード2-DGAG220及びシャッフル回路3002が、複数のメモリ400から同時に出力する複数の出力データそれぞれを、GAG制御情報に基づいて排他的に選択し、出力ポートに出力パターン配列の出力データを出力する。[第2の実施の形態]次に、本発明の第2の実施形態について、図面を参照して詳細に説明する。以下、本実施形態の説明が不明確にならない範囲で、前述の説明と重複する内容については省略する。図9は、本発明の第2の実施形態の構成を示すブロック図である。第2の実施形態は、第1の実施形態の要素に加えて、GAG制御情報205を生成するGAG制御情報自動生成部500を有する。尚、データ保持出力回路100とGAG制御情報自動生成部500とは、併せてメモリ制御装置とも呼ばれる。GAG制御情報自動生成部500は、データ保持出力回路100のスループットを最大にするGAG制御情報205を生成する。このデータ保持出力回路100のスループットは、全てのメモリ400が常に出力データを出力している状態の時に最大である。同時に読み出す出力データが全て別々のメモリ400に格納されている場合に、全てのメモリ400は、常に出力データを出力する。従って、ライト2-DGAG210は、シャッフル回路用制御情報BAを生成する。そのシャッフル回路用制御情報BAは、出力時に同時にメモリ400から出力する出力データODとなる、入力データIDを別々のメモリ400に分散させるように、シャッフル回路3001を動作させる。同時に、ライト2-DGAG210は、更にメモリ400に書き込むためのメモリ入力用ワードアドレスを生成する。また、リード2-DGAG220は、同時に出力する出力データOD0~M-1を、適切なメモリ400から読み出すためのメモリ出力用ワードアドレスを生成する。同時に、リード2-DGAG220は、読み出した出力データOD0~M-1を並べ替えるシャッフル回路3002へのシャッフル回路用制御情報BAを生成する。GAG制御情報自動生成部500は、上述のようなライト2-DGAG210及びリード2-DGAG220用の、GAG制御情報205を自動生成する。GAG制御情報自動生成部500は、各要素に一意な値を割り当てられた入力データ配列700と出力データの各要素の配列を示す出力データ配列701とを入力として、ライト2-DGAG制御情報205を自動生成する。入力データ配列700は、行を時間サイクル、列をポートとして入力データの配列を示す。出力データ配列701は、入力データ配列700を上述のデータ保持出力回路100によって並び替えた後の出力データの各要素の配列を示す。次に、実施形態1において図1を用いて説明したデータ保持出力回路100内のライト2-DGAG210用に、GAG制御情報205を生成するGAG制御情報自動生成部500の動作の概要を説明する。GAG制御情報自動生成部500は、図10に示すような入力データ配列700と図11に示すような出力データ配列701とに基づいて、ライト2-DGAG210用の命令メモリの内容を生成する。図10は、入力データ配列の例を示す図である。図11は、出力データ配列の例を示す図である。図10及び図11を参照すると、入力データ配列700及び出力データ配列701は、それぞれN行M列の配列であり、それぞれサイズN×Mの行列で表される。但し、Nは、自然数である。入力データ配列700及び出力データ配列701は、データ保持出力回路100に同時に入力及び同時に出力されるデータを列方向に持つ。入力データ配列700及び出力データ配列701のM列は、シャッフル回路3001の入力ID0~M-1に対応しており、同時刻にデータ保持出力回路100へ入力される入力データを示している。一方、入力データ配列700及び出力データ配列701のN行は、データ保持出力回路100へ入力されるデータの入力時刻サイクルを表しており、0、1、2、、N-1はそれぞれ、1サイクル目入力、2サイクル目入力、3サイクル目入力、、Nサイクル目入力を示している。また、入力データ配列700の配列内要素は、それぞれ一意のデータが割り振られる。例えば、図10に示す入力データ配列700は、0~N×M-1の自然数が要素内に格納される様子を示している。また、図11に示す出力データ配列701の配列内各要素にも、それぞれ一意のデータが割り振られ、更に、それぞれの要素は、入力データ配列700の要素と一対一に対応する。次に、第2の実施形態の動作について、図を参照して説明する。図12は、本実施形態のGAG制御情報自動生成部500の動作を示すフローチャートである。図12を参照すると、GAG制御情報自動生成部500は、出力タイミング配列生成ステップS610、メモリ配置方法決定ステップS620、書き込みアドレス生成ステップS631、書き込み側GAG制御情報生成ステップS632、読み出しアドレス配列生成ステップS640、読み出し側GAG制御情報生成ステップS650を順次実行する。出力タイミング配列生成ステップS610について、図13、図14を用いて説明する。出力タイミング配列生成ステップS610において、GAG制御情報自動生成部500は、入力データ配列700と出力データ配列701を走査することにより、入力データ配列700の各要素が出力データ配列701の先頭から何行目で出力されるかを分析する。そして、GAG制御情報自動生成部500は、その分析結果をN行M列の出力タイミング配列timingsに記録する。図13は、出力タイミング配列生成ステップS610の動作を示す擬似コードmake_timingsのリストである。図13に示す擬似コードにおいて、出力タイミング配列生成ステップS610の入力である入力データ配列700をdata_inで、同じく出力データ配列701をdata_outで示す。また、図13に示す擬似コードにおいて、出力タイミング配列生成ステップS610の出力である出力タイミング配列を、timingsで示す。まず、GAG制御情報自動生成部500は、図13の6行目で示すように、入力データのN行について、7行目~14行目までの処理を繰り返す。更に、GAG制御情報自動生成部500は、7行目で示すように、入力データのrow行目M列について、8行目~13行目までの処理を適用する。次に、GAG制御情報自動生成部500は、9行目に示すように、入力データ配列700の要素を1つ取得する。続けて、GAG制御情報自動生成部500は、10行目に示すように、calc_delay関数を呼び出し、取得した要素が出力データ配列701の何行目にあるかを取得する。次に、GAG制御情報自動生成部500は、この結果を、出力タイミング配列timingsのrow行目col列目に設定する。図14は、図13の10行目のcalc_delay関数の動作を示す擬似コードのリストである。このcalc_delay関数は、入力データ配列700の1つの要素SRCと出力データ配列701data_outとを引数とし、入力データ配列700の要素が出力データ配列701の何行目に存在するかを調べ、その行数を返す関数である。まず、GAG制御情報自動生成部500は、図14の3行目で示すように、引数で与えられた出力データ配列701のN行において、4行目~10行目までの処理を行う。更に、GAG制御情報自動生成部500は、4行目に示すように、出力データ配列701のrow行目のM列それぞれに対し、5行目~9行目までの処理を行う。次に、GAG制御情報自動生成部500は、5行目に示すように、引数で与えられた要素srcと、data_out出力データ配列701のrow行目col列目を比較する。そして、これらが一致していた場合、GAG制御情報自動生成部500は、一時変数resultに行番号rowを格納する。一致しなかった場合、GAG制御情報自動生成部500は、何も処理を行わない。最後に、GAG制御情報自動生成部500は、一時変数resultを返し、処理を終了する。メモリ配置方法決定ステップS620について、図15、図16、図17、図18を用いて説明する。本ステップにおいて、入力は、入力データ配列700data_in及び出力タイミング配列timingsである。また、出力は、メモリ内データ配列data_memである。メモリ内データ配列data_memは、N行M列の2次元配列であり、入力データをメモリ400に格納した状態を示す。メモリ内データ配列data_memのN行はメモリ400の先頭から数えたワードアドレスを示し、M列はM個のメモリ400の内のどのメモリ400に書き込まれたかを示す。図15は、メモリ配置方法決定ステップS620の動作を示す擬似コードshuffle_timingsのリストである。まず、GAG制御情報自動生成部500は、5行目に示すように、initialize_data関数を実行させて、メモリ内データ配列data_memを初期化する。ここで、initialize_data関数の処理内容を説明する。図16は、initialize_data関数の動作を示す擬似コードのリストである。図16に示すように、GAG制御情報自動生成部500は、data_memの全要素に無効データINVを設定する。ここで、無効データINVは、入力データ配列700、出力データ配列701、及び出力タイミング配列においては使用されない値である。すなわち、無効データINVが格納されている要素は、有効なデータがまだ何も格納されていない要素であることを意味する。initialize_data関数実行後、GAG制御情報自動生成部500は、do_shuffle関数を実行する。ここで、do_shuffle関数の処理内容を説明する。図17は、do_shuffle関数の動作を示す擬似コードのリストである。do_shuffle関数は、引数として、入力データdata_in、出力タイミング配列timings、及びメモリ内データ配列data_memを持つ。まず、GAG制御情報自動生成部500は、図17の4行目に示すように、M列の要素を持つuse_b配列を用意する。尚、use_b配列の各要素の初期状態は、無効データINVである。GAG制御情報自動生成部500は、本use_b配列を、あるタイミング、すなわちtimings配列のある要素で指定されるサイクル数目、に出力されるデータをどのメモリに書き込むかを調べる際、既にどの列が使用されているかを示す配列として用いる。次に、GAG制御情報自動生成部500は、図17の5行目~14行目に示すように、出力の各サイクルにおいて、出力されるデータのメモリ書き込み方法を調査、決定する。GAG制御情報自動生成部500は、図17の6行目~13行目に示すように、全行全列を走査し、現在調査しているtimings配列の要素と一致するデータが見つかった場合にsearch_vec_col関数を呼ぶことによって、この調査、決定の処理を行う。ここで、search_vec_col関数の処理内容を説明する。図18は、search_vec_col関数の動作を示す擬似コードのリストである。search_vec_col関数は引数として、現在調査中のタイミングを示すiと、このタイミングiに一致するデータの位置row及びcolと、use_b配列と、入力データ配列700data_in入力データ配列700と、メモリ内データ配列data_memとを持つ。まず、GAG制御情報自動生成部500は、5行目~12行目に示すように、配置可能な列が見つかるまで、use_b配列とメモリ内データ配列data_memの走査を行う。この走査中に、メモリ内データ配列data_memに有効なデータがなく、更に、use_b配列の該当列に有効なデータが配置されていない場合、GAG制御情報自動生成部500は、その場所に現在のデータを配置する。具体的には、GAG制御情報自動生成部500は、入力データ配列700のrow行目col列目の要素を、メモリ内データ配列data_memのrow行目及び見つかった配置可能な列の位置に格納する。また、GAG制御情報自動生成部500は、use_b配列の該当列に1を格納し、その位置に有効なデータが格納されたことを記録する。次に、書き込みアドレス配列生成ステップS631及び書き込み側GAG制御情報生成ステップS632について、図19~図24を用いて説明する。本ステップにおいて、入力は、入力データ配列700data_in及びメモリ内データ配列data_memである。GAG制御情報205のBase値について、出力は、シャッフル回路用制御情報生成GAG用のb_addr_c、及びメモリ用ワードアドレス生成GAG用のb_addr_rである。更に、GAG制御情報205のInnerLoopStepについて、出力は、シャッフル回路用制御情報生成GAG用のilp_c、及びメモリ用ワードアドレス生成GAG用のilp_rである。また更に、GAG制御情報205のOuterLoopStepについて、出力は、シャッフル回路用制御情報生成GAG用のolp_c、及びメモリ用ワードアドレス生成GAG用のolp_rである。また更に、Inner及びOuterLoopのLimit値として、出力は、それぞれilp_n及びolp_nである。尚、各出力は、2次元の配列で表される。この配列の1次元目は、ループ構造のインデクスを示しており、2次元目はGAG0~M-1のインデクスを示している。例えば、InnerLoopLimitilp_nについて、ilp_n[2][1]は、GAG1の2番ループ構造のLimit値であることを示す。図19は、書き込みアドレス配列生成ステップS631及び書き込み側GAG制御情報生成ステップS632の動作を示す擬似コードgen_gag_addのリストである。図19に示すように、GAG制御情報自動生成部500は、gen_gag_addrにおいて、2つの関数を実行する。1つ目の関数は、mk_addr_map関数である。2つ目の関数は、loop_analyzer関数である。まず、mk_addr_map関数の処理内容について説明する。mk_addr_map関数は、GAG制御情報自動生成部500において、書き込みアドレス配列生成ステップS631を実現する関数である。mk_addr_map関数は、入力データ配列700とメモリ内データ配列721とを分析し、入力データ配列700に対応するように、GAG204が出力するシャッフル回路用制御情報マップとメモリ用ワードアドレスマップとを生成する。図20は、mk_addr_map関数の動作を示す擬似コードのリストである。mk_addr_map関数の入力は、入力データ配列700data_in及びメモリ内データ配列data_memであり、出力はメモリ用ワードアドレスマップr_addr_map及びシャッフル回路用制御情報マップc_addr_mapである。以後、メモリ用ワードアドレスマップr_addr_map及びシャッフル回路用制御情報マップc_addr_mapを併せて、アドレス配列とも呼ぶ。ここで、これらの出力はN行M列の2次元配列である。そして、それらの2次元配列の各要素は、入力データ配列700の各要素にそれぞれ対応しており、入力データ配列700の各要素が入力された際に出力するシャッフル回路用制御情報、及びメモリ用ワードアドレスである。図20に示すように、GAG制御情報自動生成部500は、data_inの全要素に対し、mk_addr_map_subをコールする。図21は、mk_addr_map_sub関数の動作を示す擬似コードのリストである。図21に示すように、GAG制御情報自動生成部500は、指定された行row、列colのdata_memの要素に対し、data_inの位置を検索する。そして、GAG制御情報自動生成部500は、検出した位置をr_addr_mapとc_addr_mapの行row、列colに記録する。以上により、GAG制御情報自動生成部500は、メモリ用ワードアドレスマップr_addr_map及びシャッフル回路用制御情報マップc_addr_mapを生成する。次に、loop_analyzer関数の処理内容について説明する。loop_analyzer関数は、GAG制御情報自動生成部500において、書き込み側GAG制御情報生成ステップS632を実現する関数である。loop_analyzer関数は、mk_addr_map関数が生成したシャッフル回路用制御情報マップc_addr_mapとメモリ用ワードアドレスマップr_addr_mapとを分析し、GAG制御情報205を生成する。図22は、loop_analyzer関数の擬似コードのリストである。loop_analyzer関数の入力は、r_addr_map及びc_addr_mapである。また、loop_analyzer関数の出力は、まず、メモリ用ワードアドレス生成器202及びシャッフル回路用制御情報生成器201のBaseであるb_addr_r及びb_addr_cを含む。更に、loop_analyzer関数の出力は、InnerLoopStepのilp_r及びilp_cと、OuterLoopStepのolp_r及びolp_cとを含む。更に、loop_analyzer関数の出力は、InnerLoop及びOuterLoopのLimit値であるilp_n及びolp_nを含む。尚、これらの各出力は2次元の配列で表される。これらの配列の1次元目はループ構造のインデクスを示しており、2次元目はGAG0~M-1のインデクスを示している。例えば、InnerLoopLimitilp_nについて、ilp_n[2][1]は、GAG1の2番ループ構造のLimit値であることを示す。loop_analyzer関数は、主に3つの処理を含む。1番目の処理は、図22の7~10行目に示される、Base値、Limit値、Step値を初期化する初期化ステップである。2番目の処理は、図22の13、14行目に示されるInnerLoop分析iloop_analyzeである。3番目の処理は、図22の15、16行目に示されるOuterLoop分析oloop_analyzeである。まず、初期化ステップにおいて、GAG制御情報自動生成部500は、0番ループ構造のbase値、Limit値、Step値に対し、base値をアドレスマップの先頭アドレスで初期化する。更に、GAG制御情報自動生成部500は、InnerLoopLimit値及びStep値をそれぞれ0及び0で、OuterLoopLimit値及びStep値をそれぞれ1及び0で初期化する。初期化が終わると、GAG制御情報自動生成部500は、InnerLoop分析、OuterLoop分析の処理を開始する。具体的には、GAG制御情報自動生成部500は、アドレスマップの先頭から順にまずInnerLoopの分析を開始する。InnerLoopの分析中に、InnerLoopのStep値で表せない要素を検出した場合、GAG制御情報自動生成部500は、次にOuterLoopの分析を行う。その後、OuterLoopで表せない要素を検出した場合、GAG制御情報自動生成部500は、該当ループ構造の分析を終了し、次のループ構造に移り、アドレスマップを引き続き分析する。InnerLoopの分析処理iloop_analyzeについて、図23を用いて説明する。図23は、iloop_analyze関数の動作を示す擬似コードのリストである。本処理においてGAG制御情報自動生成部500は、あるループ構造分析で初めて本処理を実行する場合、InnerLoopStepであるilp_r、ilp_cのそのループ構造の対応するGAGユニット番号のオフセット値を登録する。これは、アドレスマップ上の、現在分析を行っている行rowと、その前の行row-1の要素の差分をとることにより求めることができる。ここで、差分が負の値だった場合、GAG制御情報自動生成部500は、メモリ用ワードアドレスならばNを、シャッフル回路用制御情報ならばMを加算することによって正の値に修正する。尚、本処理は、図23の7~11行目に対応している。また、10行目のmodify_negative_val関数は、第5引数及び第6引数で与えられた配列の、第1引数及び第2引数で与えられた位置の要素が負の値である場合、それぞれ第3引数、第4引数の値を加算する関数である。例として10行目の場合、ilp_r[lp_n][col]の要素が負の値である場合、ilp_r[lp_n][col]=ilp_r[lp_n][col]Nとする。また、ilp_c[lp_n][col]の要素が負の値である場合、ilp_c[lp_n][col]=ilp_c[lp_n][col]Mとする。次に、本処理の2回目以降において、GAG制御情報自動生成部500は、求めたStepとアドレスマップの現在分析を行っている行の前の行row-1で、アドレスマップの現在分析を行っているrowを表すことができるか否かを分析する。具体的には、GAG制御情報自動生成部500は、アドレスマップの現在分析を行っているrowとアドレスマップの現在分析を行っている行の前の行row-1の差分をとり、それがStep値と一致するか否かを分析する。一致した場合、GAG制御情報自動生成部500は、InnerLoopのLimit値であるilp_nを1インクリメントする。一致しなかった場合、GAG制御情報自動生成部500は、fin_flag=1とし、InnerLoop分析を終了する。尚、以上の処理は、図23の13~18行目に対応している。OuterLoopの分析処理oloop_analyzeについて、図24を用いて説明する。図24は、loop_analyzer内のoloop_analyze関数の動作を示す擬似コードのリストである。まず、あるループ構造分析で初めて本oloop_analyzを実行する場合、GAG制御情報自動生成部500は、OuterLoopStepであるolp_r、olp_cの該当ループ構造の該当GAGユニット番号に、オフセット値を登録する。GAG制御情報自動生成部500は、アドレスマップの現在分析を行っているrowの要素と、このループ構造のベースアドレス値の差分をとることにより、オフセット値を求める。尚、差分が負の値であった場合、GAG制御情報自動生成部500は、上述のiloop_analyzeの説明で示した方法と同様の方法で正の値に修正する。また、GAG制御情報自動生成部500は、現在分析を行っている行を一時保存領域buf_posに保存する。これは、OuterLoop構造が成り立たないことが判明した場合、分析を開始した行に戻って、次のループ構造の分析を開始するためである。尚、以上の処理は図24の7行から12行に対応している。以上の処理を終了したら、GAG制御情報自動生成部500は、st_flag=1とし、OuterLoop構造が成り立つか否かの分析に移る。次に、OuterLoop構造が成り立つか否かの分析方法について説明する。GAG制御情報自動生成部500は、OuterLoop構造が成り立つか否かの分析を、既に分析したInnerLoop構造が現在分析を行っているアドレスマップの区間に適用できるか否かを分析することにより行う。具体的には、GAG制御情報自動生成部500は、アドレスマップの現在分析を行っている行rowの要素とアドレスマップの現在分析を行っている行の前の行row-1の要素との差分を求め、その結果が既に求めたInnerLoopのStep値と一致するか否かを分析する。尚、差分結果が負の値であった場合、GAG制御情報自動生成部500は、上述のiloop_analyzeの説明で示した方法と同様の方法で正の値に修正する。一致した場合、GAG制御情報自動生成部500は、一時変数tmp_lpを1インクリメントする。次に、tmp_lpがInnerLoop構造のLimit値と同値になった場合、GAG制御情報自動生成部500は、OuterLoop構造が成立したと判断し、OuterLoopのLimit値olp_nを1インクリメントする。更に、GAG制御情報自動生成部500は、st_flag=2とし、その先もOuterLoop構造が成り立つか否かの分析に移行する。一方、tmp_lpがInnerLoopのLimit値と同値になる前に、Step値と一致しないアドレスマップの構造が出現した場合には、GAG制御情報自動生成部500は、OuterLoopが成り立たなかったと判定し、OuterLoop構造の分析を終了し、次のループ構造の分析に移行する。ここで、GAG制御情報自動生成部500は、アドレスマップの分析位置rowをOuterLoop構造分析開始時点で一時保存していたbuf_posの値で更新する。尚、以上の処理は、図24の25行から37行に対応している。OuterLoop構造が成り立ち、次のOuterLoop構造が成り立つか否かの分析を開始する際、すなわち、st_flag=2の際には、GAG制御情報自動生成部500は、新規OuterLoop構造のオフセット値が既に求めたolp_r、olp_cに一致するか否かを分析する。具体的には、GAG制御情報自動生成部500は、現在の行とベースアドレスの差分を求める。次に、GAG制御情報自動生成部500は、その差分を求めた結果が、既に求めたOuterLoopStepであるolp_r、olp_cに、OuterLoop構造数olp_nをかけた値と等しいか否かを分析する。尚、差分結果が負の値であった場合、GAG制御情報自動生成部500は、上述のiloop_analyzeの説明で示した方法と同様の方法で正に修正する。等しい場合、GAG制御情報自動生成部500は、新しいOuterLoop構造の分析が可能であると判断し、st_flag=1とし、そのOuterLoop構造が成り立つか否かの分析を開始する。一方、等しくなかった場合、GAG制御情報自動生成部500は、OuterLoop構造の分析を終了する。尚、以上の処理は、図24の14行から25行に対応している。上述の処理により、GAG制御情報自動生成部500は、メモリ用ワードアドレス生成器202、及びシャッフル回路用制御情報生成器201のGAG制御情報205を生成する。命令メモリ203は、これらの生成された各GAG204に対応するGAG制御情報205を格納する。そして、各GAG204は、命令メモリ203に格納されたGAG制御情報205に基づいて動作し、入力データに対して、適切なアドレスを生成する。次に、読み出しアドレス配列生成ステップS640について、図25を用いて説明する。図25は、読み出しアドレス配列生成ステップS640の動作を示す擬似コードmake_rd_addrのリストである。読み出しアドレス配列生成ステップS640は、メモリ内データ配列721data_mem及び出力データ配列701data_outを入力とする。また、読み出しアドレス配列生成ステップS640は、メモリ用ワードアドレスを示す読み出しアドレス配列read_r_addr及びシャッフル回路用制御情報を示す読み出しアドレス配列read_c_addrを出力とする。GAG制御情報自動生成部500は、まず、6行から14行に示すように、read_r_addrの生成を行う。具体的には、GAG制御情報自動生成部500は、data_out出力データ配列701の各行、各列について、各要素のデータをそれぞれ、data_memメモリ内データ配列721から検索する。GAG制御情報自動生成部500は、検索を、9行目のfind_data関数で行う。このfind_data関数は第1引数で与えられたデータを、第2引数で与えられた2次元配列から検索し、見つかった行、列の位置をそれぞれ第3、第4引数で与えられた変数に格納して返す関数である。次に、GAG制御情報自動生成部500は、検索して得られた行、列f_row、f_colについて、11行目に示すようにアドレスを格納する。また、GAG制御情報自動生成部500は、ここで本アドレスによって読み出されるデータを12行目に示すように、mem_out_arrayに一時的に保存する。次に、GAG制御情報自動生成部500は、17行から24行に示すように、シャッフル回路用制御情報を示す読み出しアドレス配列read_c_addrを生成する。具体的には、GAG制御情報自動生成部500は、data_out出力データ配列701の各行において、メモリ400から出力されたデータの内どのメモリ400から出力された値を取得すればよいかをfind_data関数で検索する。そして、GAG制御情報自動生成部500は、その検索した結果f_colを22行目に示すように保存する。これによって、GAG制御情報自動生成部500は、シャッフル回路用制御情報を示す読み出しアドレス配列read_c_addrを生成する。次に、読み出し側GAG制御情報生成ステップS650について説明する。読み出し側GAG制御情報生成ステップS650において、GAG制御情報自動生成部500は、ステップS640で生成された読み出しアドレス配列に基づいて、リード2-DGAG用のGAG制御情報205を生成する。具体的には、GAG制御情報自動生成部500は、読み出しアドレス配列を用いて、前述した書き込み側GAG制御情報生成ステップS632と同様の処理を実行する。読み出し側GAG制御情報生成ステップS650の処理は、書き込み側GAG制御情報生成ステップS632と同等であるため、説明を省略する。次に、入力データ内に、出力データとして出力されない、不要なデータが存在する場合について説明する。例えば、GAG制御情報自動生成部500は、メモリ配置方法決定ステップS620において、一旦その不要なデータの配置を保留する。そして、GAG制御情報自動生成部500は、他のデータの配置を決定した後で、その不要なデータをメモリ内の空いている場所に保存するようにして出力しないようにする。また、GAG制御情報自動生成部500は、不要なデータの位置である、行row、列colと同じインデクスを持つメモリの位置に無効データであることを示すデータを格納しておくようにしてもよい。この場合、GAG制御情報自動生成部500は、書き込み側GAG制御情報生成時に、InnerLoopやOuterLoopが成り立ちやすいアドレスを挿入するようにしてもよい。尚、本実施形態において、シャッフル回路用制御情報とメモリ用ワードアドレスとにおけるInnerLoop及びOuterLoopのLimit値は同じであるものとして説明した。しかし、シャッフル回路用制御情報及びメモリ用ワードアドレスにおいて、Limit値が異なるような場合がある。この場合、シャッフル回路用制御情報及びメモリ用ワードアドレスの内のどちらか一方だけにおいて、InnerLoop或いはOuterLoopが成り立たない状態が発生する。上述の説明において、GAG制御情報自動生成部500は、そのような状態が発生した場合、そのループ構造の分析を終了し、新たなループ構造の分析に移る。ここで、例えば、GAG制御情報自動生成部500は、シャッフル回路用制御情報及びメモリ用ワードアドレスについてそれぞれ別次元として扱うようにし、個別にループ構造の分析を実行するようにしてもよい。次に、本実施形態における動作について、図26~図31を参照し、具体的な値を示して更に詳細に説明する。説明の簡略化のために、前提として、メモリ内データ配列721の行数メモリ400のワードアドレスNを4であるとする。また、メモリ内データ配列721の列数メモリ400の数Mを、図6に示すメモリ4000~3に基づいて、4であるとする。まず、図26を参照して、出力タイミング配列711生成ステップS610の具体的な動作について説明する。図26は、入力データ配列702及び出力データ配列703と出力タイミング配列711との関係の例を示した図である。図26を参照すると、入力データ配列702の各要素に対し、出力データ配列703の先頭から何サイクル目で出力されるか、すなわち、何行目に位置しているか、が出力タイミング配列711に示されていることが分かる。例えば、四角及び矢印で示した要素Aは、出力データの1行目に位置しているので、出力タイミング配列711に1と記録する。また例えば、四角及び矢印で示した要素Bは、出力データの2行目に位置しているので、出力タイミング配列711に2と記録する。次に、図27を参照して、メモリ配置方法決定ステップS620の具体的な動作について説明する。図27は、メモリ配置方法決定ステップS620が、メモリ内データ配列721を生成するプロセスの一部を示す図である。図27に示すように、GAG制御情報自動生成部500は、入力データ配列702と出力データ配列703とから生成した出力タイミング配列711を用い、メモリ内データ配列721を生成する。尚、メモリ配置後タイミング配列722は、メモリ内データ配列721の各要素が出力データ配列703の先頭から何サイクル目で出力されるか、即ち、出力データ配列703の何行目に位置しているか、を示す。このメモリ配置後タイミング配列722は、メモリ内データ配列721の生成に伴って決定されて行く。処理を開始すると、GAG制御情報自動生成部500は、図27のプロセスP621において、まず、出力タイミング配列711の1列目について分析を開始する。すると、GAG制御情報自動生成部500は、1列目に記録された要素は全て1なので、全要素を互いに排他的に、異なる列に配置する必要があることを検出する。そこで、GAG制御情報自動生成部500は、1行目は1列目に、2行目は2列目に、3行目は3列目、4行目は4列目というように、各要素をずらして配置する。こうして、GAG制御情報自動生成部500は、図27のプロセスP622に示すような配置が決定する。次に、GAG制御情報自動生成部500は、プロセスP622において、出力タイミング配列711の2列目の分析を行う。すると、ここでもGAG制御情報自動生成部500は、全要素が2であり同じタイミングで出力することが要求されるため、全要素を互いに排他的に、異なる列に配置する必要があることを検出する。そこで、GAG制御情報自動生成部500は、1行目は2列目に配置し、2行目は3列目に、というように、各要素をずらして配置する。GAG制御情報自動生成部500は、同様の処理を繰り返し、最終的に図27のプロセスP623に示すように、メモリ内データ配列721を生成する。次に、図28~図30を参照して、書き込みアドレス配列生成ステップS631及び書き込み側GAG制御情報生成ステップS632の具体的な動作について説明する。まず、図28を参照して、GAG制御情報自動生成部500が、メモリ用ワードアドレスマップ及びシャッフル回路用制御情報マップ書き込みアドレス配列を生成する、書き込みアドレス配列生成ステップ631の具体例について説明する。図28は、入力データ配列702及びメモリ内データ配列721と、書き込みアドレス配列731との関係の例を示す図である。図28において、書き込みアドレス配列731は、メモリ用ワードアドレスマップ及びシャッフル回路用制御情報マップの対応する各要素をメモリ用ワードアドレス、シャッフル回路用制御情報という形式で持つ。書き込みアドレス配列731のメモリ用ワードアドレス及びシャッフル回路用制御情報は、入力データ配列702の各要素が入力された際にライト2-DGAG210のGAG204が生成する、メモリ入力用ワードアドレス及びシャッフル回路用制御情報である。図28に示す書き込みアドレス配列731において、例えば入力データ配列702の要素Aが入力された場合、メモリ用ワードアドレスはAを1行目に書き込むことを示し、シャッフル回路用制御情報は1列目のAをそのまま選択することを示す。また例えば、図28に示すように、入力データ配列702の要素Fの位置と同位置のメモリ内データ配列721の位置には、要素Eが書き込まれる。そこで、入力データ配列702の要素Fの位置と同位置の書き込みアドレス配列731の位置の、メモリ用ワードアドレスは、入力データ配列702のEが先頭から2行目なので2である。また、シャッフル回路用制御情報は、Eが1列目なので1である。従って、GAG制御情報自動生成部500は、入力データ配列702の要素Fの位置と同位置の書き込みアドレス配列731の位置の要素2,1を生成する。このようにして、GAG制御情報自動生成部500は、入力データ配列702の全要素を分析し、図28に示す書き込みアドレス配列731を生成する。次に、図29を参照して、書き込み側GAG制御情報生成ステップS632のループ構造分析の具体例について説明する。図29は、本実施形態におけるループ構造分析のプロセスの一部を示した図である。図29は、図28に示すように生成されたメモリ用ワードアドレス及びシャッフル回路用制御情報に対し、どのようにBase、InnerLoopのLimit値、Step値が生成されるかを示す。尚、以下の説明は、1列目についての説明である。まず、図29のプロセスP631において、GAG制御情報自動生成部500は、1行目の分析にて、base値を設定する。ここでは、GAG制御情報自動生成部500は、1列目、1行目の要素1,1に基づいて、baseを1,1と設定する。また、図には示していないが、GAG制御情報自動生成部500は、InnerLoopのLimit値及びStep値と、OuterLoopのLimit値及びStep値を、ここで初期化する。次に、図29のプロセスP632は、2行目の分析の様子を示している。ここでは、GAG制御情報自動生成部500は、現在の行と前の行との差分をInnerLoopのStep値として算出する。尚、差分が負の値になった場合は、列数本例では、4を加算する。プロセスP632で、算出されるStep値は、1,3である。次に、図29のプロセスP633に示すように、GAG制御情報自動生成部500は、3行目の分析に移る。3行目の分析では、GAG制御情報自動生成部500は、現在の行を、前の行とInnerLoopのStep値とを用いて表すことができるか否かを分析する。具体的には、GAG制御情報自動生成部500は、現在の行と前の行との差分がStep値と一致するか否かを判定する。3行目と2行目との差分は1,-1であり、負の値には列の最大数である4を加算するので、プロセスP633において算出される差分結果は、1,3である。従って、Step値と差分結果とが同値であるため、GAG制御情報自動生成部500は、InnerLoopのLimit値を1インクリメントする。最後に、図29のプロセスP634に示すように、GAG制御情報自動生成部500は、4行目の分析を行う。4行目においても3行目と同様に、現在の行と前の行との差分結果がStep値と一致するため、GAG制御情報自動生成部500は、Limit値を1加算する。結果として、本例において、GAG制御情報自動生成部500は、Base=1,1、InnerLoopLimit=3、InnerLoopStep=1,3、OuterLoopLimit=0及びOuterLoopStep=0,0を生成する。次に、図30を参照して、書き込み側GAG制御情報生成ステップS632のループ構造分析の他の具体例について説明する。図30は、本実施形態におけるループ構造分析の他のプロセスの例の一部を示した図である。図30は、GAG制御情報自動生成部500がOuterLoopを分析する場合の例を示す。尚、図30も図29と同様に、1列目を例として説明を行う。まず、プロセスP641に示すように、GAG制御情報自動生成部500は、Base値を1,1と設定する。次にプロセスP642に示すように、GAG制御情報自動生成部500は、2行目を分析してInnerLoopのStep値を1,3と設定する。次に、プロセスP643に示すように、GAG制御情報自動生成部500は、3行目を分析して、現在の行と前の行との差分結果として、4,2を算出する。この差分結果は、InnerLoopのStep値とは一致しない。そこで、GAG制御情報自動生成部500は、現在の行と最初にInnerLoopを開始した行との差分5,1を算出し、OuterLoopのStep値を5,1と設定する。続けて、GAG制御情報自動生成部500は、OuterLoopの分析を開始する。すると、プロセスP644に示すように、GAG制御情報自動生成部500は、4行目を分析して、現在の行と前の行との差分結果1,3を算出する。この差分結果は、先に求めたInnerLoopのStep値と一致する。更に、OuterLoopのStep値からのInnerLoopの構造は、先に求めたInnerLoopの構造と一致する。従って、GAG制御情報自動生成部500は、OuterLoopが成り立つと判定し、OuterLoopLimitを1インクリメントする。結果として、本例においてGAG制御情報自動生成部500は、Base=1,1、InnerLoopLimit=1、InnerLoopStep=1,3、OuterLoopLimit=2及びOuterLoopStep=5,1を生成する。次に、図31を参照して、読み出しアドレス配列生成ステップS640を具体的に説明する。図31は、メモリ内データ配列721及び出力データ配列703と、リード2-DGAG用の読み出しアドレス配列741との関係の例を示す図である。図31において、読み出しアドレス配列741は、メモリ用ワードアドレスマップ及びシャッフル回路用制御情報マップの対応する各要素を、1オリジンで、メモリ用ワードアドレス、シャッフル回路用制御情報の形式で持つ。読み出しアドレス配列741のメモリ用ワードアドレス及びシャッフル回路用制御情報は、出力データ配列703の各要素を出力する際に、リード2-DGAG220のGAG204が生成する、メモリ出力用ワードアドレス及びシャッフル回路用制御情報である。まず、GAG制御情報自動生成部500は、出力データ配列703を行毎に分析し、該当行の出力データと一致するデータをメモリ内データ配列721から探す。次に、GAG制御情報自動生成部500は、一致するデータを検出した行位置を、読み出しアドレス配列741の出力データ配列703と対応した行に、メモリワード用アドレスとして記録する。更に、GAG制御情報自動生成部500は、そのアドレスを用いて読み出されるデータと、出力データ配列703を比較し、同様の並びとなるように、シャッフル回路用制御情報を生成する。例えば、GAG制御情報自動生成部500は、読み出しアドレス配列741の2行目の要素を以下のように生成する。出力データ配列703の2行目に存在するデータは、B、F、J、Nである。GAG制御情報自動生成部500は、これらのデータを、メモリ内データ配列721の1、2、3、4列目のそれぞれ4、1、2、3行目に検出する。このとき、メモリ内データ配列721の1、2、3、4列目のデータは、それぞれN、B、F、Jである。そこで、GAG制御情報自動生成部500は、シャッフル回路300用に、これらのデータを出力データ配列703にあるように並べ替える制御情報を生成する。具体的には、GAG制御情報自動生成部500は、シャッフル回路3002が、OD0,1,2,3にB、F、J、Nというデータを出力するように、制御情報を生成する。すなわち、GAG制御情報自動生成部500は、リード2-DGAG220がシャッフル回路用制御情報BA0~3に、それぞれ2、3、4、1を出力するように、制御情報を生成する。GAG制御情報自動生成部500は、この値を、読み出しアドレス配列741のシャッフル回路用制御情報に記録する。尚、読み出し側GAG制御情報生成ステップS650の具体的な動作については、書き込み側GAG制御情報生成ステップS632と同様であるため、説明を省略する。尚、本実施形態においては、ループ数をInnerLoopとOuterLoopの2つとしたが、これに限る必要はなく、例えば、1つであってもよいし、3つ以上であってもよい。上述した本実施形態における効果は、第1の実施例の効果に加えて、2次元GAGを制御するGAG制御情報205を、自動的に生成することを可能にする点である。その理由は、GAG制御情報自動生成部500が、入力データ配列700と出力データ配列701とを分析してメモリ内データ配列721を生成し、更に入力データ配列700と出力データ配列701とメモリ内データ配列721とに基づいてGAG制御情報205を生成するようにしたからである。[第3の実施の形態]次に、本発明の第3の実施形態について図面を参照して詳細に説明する。以下、本実施形態の説明が不明確にならない範囲で、前述の説明と重複する内容については省略する。前述の第1の実施形態のデータ保持出力回路100は、メモリワード用アドレスに基づいてメモリ400から読み出されたメモリ出力データを、シャッフル回路用制御情報に基づいてシャッフル回路3002が、どの出力ポート312に出力するかを決定するものであった。これに対し、本実施形態のデータ保持出力回路は、メモリ用ワードアドレスをシャッフル回路用制御情報が示すメモリ400に入力してメモリ出力データを読み出す。そして、本実施形態のデータ保持出力回路は、読み出したメモリ出力データをそのメモリ出力データのメモリ用ワードアドレスを生成したGAG204に対応するサッフィクスが同じ出力ポート312に出力する。図32は、本発明の第3の実施形態の構成を示すブロック図である。図32を参照すると、本発明の第3の実施形態に係るデータ保持出力回路130は、第1の実施形態のデータ保持出力回路100に比べて、ワードシャッフル機構330及びデータシャッフル機構340を含む。また、本実施形態のリード2-DGAG220は、メモリ出力用ワードアドレスOWA0~3に替えて、TWA0~3を出力する。TWA0~3は、各TWA0~3を出力するGAG204に対応するサッフィクスが同じ出力ポート312に出力するデータのアドレスである。ワードシャッフル機構330は、各メモリ4000~3に、TWA0~3をシャッフル回路用制御情報BA0~3に基づいて並べ替えた、メモリ出力用ワードアドレスOWA0~3を、出力する。データシャッフル機構340は、メモリ出力データMO0~3をシャッフル回路用制御情報BA0~3に基づいて、その各メモリ出力データ0~3のメモリ用ワードアドレスを生成したGAG204に対応するサッフィクスが同じ出力ポート312に出力する。本実施形態の動作について、図32~図34を参照して詳細に説明する。図33は、本実施形態における、メモリ内データ配列721及び出力データ配列703と、読み出しアドレス配列651との関係の例を示す図である。図34は、本実施形態におけるデータ出力側の動作を示すタイムチャートである。図34を参照すると、最上部の数字はクロックの番号を示し、その下の信号はクロック信号を示し、それ以下の信号は各信号線から出力されるデータ及び制御情報を示す。尚、本実施形態においては、メモリ出力用ワードアドレスOWA0~3は、TWA0~3及びシャッフル回路用制御情報BA0~3がワードシャッフル機構330に入力されてから1サイクル後に出力されるものとする。また、出力データOD0~3は、メモリ出力データMO0~3がデータシャッフル機構340に入力されてから、1サイクル後に出力されるものとする。また、シャッフル回路用制御情報BA0~3は、データシャッフル機構340に入力された後遅延され、MO0~3からの出力1サイクル毎に、シャッフル回路用制御情報BA0~3が入力された順に内部で使用されるものと仮定した。本実施例においては、まず、リード2-DGAG220より生成されたTWA0~3は、同じくリード2-DGAG220から出力されたシャッフル回路用制御情報BA0~3によって並べなおされる。例として、2サイクル目を見ると、TWA0~3は1、2、3、4と入力され、シャッフル回路用制御情報BA0~3は2、3、4、1と入力される。この結果、3サイクル目のメモリ出力用ワードアドレスOWA0~3へのアドレスが示すように、TWA0~3はメモリ4000~3へはそれぞれ、3、4、1、2と入力されるように並べなおされる。これは、各TWAを同番号のシャッフル回路用制御情報BAが示す番号に遷移させることにより実現される。出力データMO0~3は、リード2-DGAG220が生成したシャッフル回路用制御情報BA0~3をデータシャッフル機構340内部で遅延させた信号によって再度並びなおされて出力される。例として、4サイクル目にメモリ4000~3から出力されたK、O、C、Gデータ列について説明する。このデータ列は、先頭データが入力されてから2サイクル後に入力されたデータであるので、本データに適用されるシャッフル回路用制御情報BA0~3は先頭から2サイクル後に入力される制御情報であり、具体的にはシャッフル回路用制御情報BA0~3はそれぞれ3、4、1、2となっているものである。ここで、メモリ4000~3から出力されたメモリ出力データMO0~3は、シャッフル回路用制御情報BA0~3それぞれが示すポートへと遷移される。よって出力データOD0~3の並びは、C、G、K、Oとなり、これらがデータ保持出力回路130から出力される。上述した本実施形態における効果は、第1の実施形態と同様に、マルチバンク構成のメモリの制御において、入力時と出力時とで異なるデータ配列の組み合わせに汎用的に対応することを可能にする点である。その理由は、以下のような構成を含むからである。即ち、第1に、データ入力時において、ライト2-DGAG210及びシャッフル回路3001が、同時に入力された入力パターン配列の複数ワードの入力データそれぞれを、GAG制御情報に基づいて排他的に選択し、複数のメモリ400に格納する。第2に、データ出力時において、リード2-DGAG220、ワードシャッフル機構330お呼びデータシャッフル機構340が、複数のメモリ400から同時に出力する複数の出力データそれぞれを、GAG制御情報に基づいて排他的に選択し、出力ポートに出力パターン配列の出力データを出力する。[第4の実施形態]次に、本発明の第4の実施形態について図面を参照して詳細に説明する。以下、本実施形態の説明が不明確にならない範囲で、前述の説明と重複する内容については省略する。図35は、本発明の第4の実施形態の構成を示すブロック図である。図35を参照すると、本実施形態に係るメモリ制御装置140は、書込アドレス生成部2124、読出アドレス生成部2224、入力データ選択制御部2114、出力データ選択制御部2214、入力データ選択部3101及び出力データ選択部3102とを含む。メモリ制御装置140は、複数のメモリ図示しないへのデータの書き込み、及び複数のメモリからのデータの読み出し、を制御する。書込アドレス生成部2124は、GAG制御情報205に基づいて、前述の複数のメモリそれぞれに対応する書き込みアドレスを出力する。書込アドレス生成部2124は、第1の実施形態のライト2-DGAG210のメモリ用ワードアドレス生成器202のGAG204と同等の構成要素である。GAG制御情報205は、例えば、図37に示すGAG制御情報931のように、ベースアドレスと、アドレスの増分値であるステップ数と、ベースアドレスに対してステップ数を順次加算してアドレスを生成する回数とを含むループ構造を、1つ以上含む。GAG制御情報205は、入力データ配列と出力データ配列とに基づいて生成された情報である。ここで、入力データ配列は、前述の複数のメモリへ同時に書き込む複数ワードの入力データの配列を指定する配列である。また、出力データ配列は、前述の複数のメモリから同時に読み出す複数ワードの出力データの配列を指定する配列である。読出アドレス生成部2224は、GAG制御情報205に基づいて、前述の複数のメモリそれぞれに対応する読み出しアドレスを出力する。読出アドレス生成部2224は、第1の実施形態のリード2-DGAG220のメモリ用ワードアドレス生成器202のGAG204と同等の構成要素である。入力データ選択制御部2114は、GAG制御情報205に基づいて、入力データ選択部用制御情報ライト側シャッフル回路用制御情報に対応を出力する。ここで、入力データ選択部用制御情報は、前述の複数のメモリそれぞれに書き込む入力データのワードを指定する情報である。入力データ選択制御部2114は、第1の実施形態のライト2-DGAG210のシャッフル回路用制御情報生成器201のGAG204と同等の構成要素である。出力データ選択制御部2214は、GAG制御情報205に基づいて、出力データ選択部用制御情報リード側シャッフル回路用制御情報に対応を出力する。ここで、出力データ選択部用制御情報は、前述の複数のメモリから読み出した複数ワードのデータの内の各ワードを排他的に指定する。出力データ選択制御部2214は、第1の実施形態のリード2-DGAG220のシャッフル回路用制御情報生成器201のGAG204と同等の構成要素である。入力データ選択部3101は、入力データ選択制御部2114が出力する入力データ選択部用制御情報に基づいて、前述の入力データ配列の入力データの内の各ワードを排他的に選択し、出力する。入力データ選択部3101は、第1の実施形態のシャッフル回路3001と同等の構成要素である。尚、入力データ選択部用制御情報は、入力データ選択部3101に、出力データ選択部3102が同時に読み出す複数ワードのデータのそれぞれのワードを、前述の複数のメモリに排他的に格納するように、選択させる情報である。出力データ選択部3102は、前述の読み出しアドレスに対応して前述の複数のメモリそれぞれから同時に読み出された複数ワードのデータを受け取る。そして、出力データ選択部3102は、前述の出力データ選択部用制御情報に基づいて、受け取った複数ワードのデータの内の各ワードを排他的に選択し、前述の出力データ配列の複数ワードの出力データを出力する。出力データ選択部3102は、第1の実施形態のシャッフル回路3002と同等の構成要素である。上述した本実施形態における効果は、マルチバンク構成のメモリの制御において、入力時と出力時とで異なるデータ配列の組み合わせに汎用的に対応することを可能にする点である。その理由は、以下のような構成を含むからである。即ち、第1に、データ入力時において、書込アドレス生成部2124、入力データ選択制御部2114及び入力データ選択部3101が、入力パターン配列の入力データそれぞれを、GAG制御情報に基づいて排他的に選択し、複数のメモリ400に格納する。第2に、データ出力時において、読出アドレス生成部2224、出力データ選択制御部2214及び出力データ選択部3102が、複数のメモリから同時に読み出したデータそれぞれを、GAG制御情報に基づいて排他的に選択し、出力ポートに出力パターン配列の出力データを出力する。[第5の実施の形態]次に、本発明の第5の実施形態について、図面を参照して詳細に説明する。以下、本実施形態の説明が不明確にならない範囲で、前述の説明と重複する内容については省略する。既に説明したように、図6に示すリード2-DGAG220は、全てのメモリ400から同時にデータを読み出して全ての出力ポート312から同時に出力を開始するように、メモリ出力用ワードアドレスOWA0~3及びシャッフル回路用制御情報BA0~3を出力する。しかし、実際の使用においては、メモリ400からのデータの読み出しを開始するタイミング、即ち出力ポート312から出力データOD0~3それぞれの出力を開始するサイクル、が異なる場合がある。図39は、メモリ400毎に出力を開始するタイミングが異なる出力データ配列763の例を示す図である。図39に示すように、出力データ配列の各列は出力ポート3120~3に対応し、出力データ配列の各行はサイクル0~6に対応する。図39に示すように、出力データ配列763は、サイクル0において、出力ポート3120から、Aのインデックスが割り当てられた出力データOD0が出力されることを示す。尚、出力ポート3120は、出力データOD0を出力する出力ポート312である。以下の、出力ポート3121~3についても同様である。また、出力データ配列763は、サイクル0において、出力ポート3121~3から、出力データOD1~3が出力されないことを示す。尚、出力データ配列763において、出力データOD1~3が出力されない要素は、Zで示している。また、出力データ配列763は、サイクル1において、出力ポート3120及び1それぞれから、B及びEのインデックスそれぞれが割り当てられた出力データOD0及び1それぞれが出力されることを示す。また、出力データ配列763は、サイクル1において、出力ポート3122及び3それぞれから、出力データOD2及び3が出力されないことを示す。以後も同様であり、例えば、出力データ配列763は、サイクル6において、出力ポート3120~2からは、既に並べ替えられたデータの出力が完了しているために、出力データOD~2が出力されないことを示す。また、出力データ配列763は、サイクル6において、出力ポート3123から、Pのインデックスが割り当てられた出力データOD3が出力されることを示す。例えば、複数の図4に示す入力データ配列702から出力データ配列763へのデータの並べ替えを連続して実行する場合が考えられる。このような場合、先行する並べ替え処理においてメモリ400からのデータの出力が完了していない時点で、次の並べ替え処理が開始される。このような場合、先行の並べ替え処理を終了していない出力データODを記憶するメモリ400と、それに続く後続の並べ替え処理を開始している出力データODを記憶するメモリ400とが、同一サイクルにおいて、同一メモリ400にならないような制御が求められる。本実施形態は、以上説明したような、メモリ400からの読み出し開始タイミングが異なるような場合に対応する、GAG制御情報自動生成部とデータ保持出力回路との実施形態を示す。図40は、本実施形態の構成を示すブロック図である。図40に示すように、第5の実施形態は、第2の実施形態に比べて、GAG制御情報自動生成部550に替えてGAG制御情報自動生成部560を、データ保持出力回路100に替えてデータ保持出力回路160を有する点が異なる。まず、データ保持出力回路160について説明する。図41は、本実施形態のデータ保持出力回路160の構成を示すブロック図である。図41に示すようにデータ保持出力回路160は、図6に示すデータ保持出力回路100に比べて、タイミング生成部260を更に含む点が異なる。また、データ保持出力回路160は、図6に示すデータ保持出力回路100に比べて、リード2-DGAG220に替えて、リード2-DGAG270を含む点が異なる。また、命令メモリ203は、GAG制御情報205に替えて、GAG制御情報275を格納する点が異なる。図42は、リード2-DGAG270の構成を示すブロック図である。リード2-DGAG270は、図3に示す2-DGAG200に比べて、シャッフル回路用制御情報生成器201に替えてシャッフル回路用制御情報生成器271を含む点が異なる。また、リード2-DGAG270は、2-DGAG200に比べて、メモリ用ワードアドレス生成器202に替えてメモリ用ワードアドレス生成器272を含む点が異なる。シャッフル回路用制御情報生成器271は、図3に示すシャッフル回路用制御情報生成器201に比べて、GAG204に替えてGAG274を含む点が異なる。メモリ用ワードアドレス生成器272は、図3に示すメモリ用ワードアドレス生成器202に比べて、GAG204に替えてGAG274を含む点が異なる。また、シャッフル回路用制御情報生成器271及びメモリ用ワードアドレス生成器272の命令メモリ203は、GAG制御情報205に替えて、GAG制御情報275を記憶する点が、第1及び第2の実施形態と異なる。GAG制御情報275の詳細は後述する。タイミング生成部260は、各メモリ400からのデータ読出の開始タイミングが異なる出力データ配列763で、データ保持出力回路160がデータを出力するようにリード2-DGAG220を制御する。タイミング生成部260は、リード2-DGAG270のシャッフル回路用制御情報生成器271のGAG2740~3に対し、出力データ配列763に対応する、制御情報の生成開始を指示するリードサイクルスタート信号RSS0~3を出力する。また、タイミング生成部260は、メモリ用ワードアドレス生成器272のGAG2740~3に対しても、同じくリードサイクルスタート信号RSS0~3を出力する。尚、タイミング生成部260は、例えば、ある入力データと出力データとの組の並べ替え処理毎に、予め定められたタイミング生成条件に基づいてリードサイクルスタート信号RSS0~3生成する。タイミング生成条件は、出力データOD0~3それぞれに対して、リードサイクルスタート信号RSS0~3を出力するタイミング決定する情報である。尚、タイミング生成部260は、例えば、内部に配置した記憶手段図示しないにタイミング生成条件を保持し、並べ替え処理の開始時にその並べ替えに対応したタイミング生成条件をメモリから読み出して出力する。また、タイミング生成部260は、例えば、外部の手段図示しないから指定されたタイミング生成条件に基づいて、リードサイクルスタート信号RSS0~3を生成するようにしてもよい。GAG2740~3は、GAG制御情報275に基づいて、リードサイクルスタート信号RSS0~3の入力に対応する、シャッフル回路用制御情報BA0~3及びメモリ出力用ワードアドレスOWA0~3を生成し、出力する。以上で、データ保持出力回路160についての説明を終了する。次に、本実施形態の、GAG制御情報自動生成部560について説明する。GAG制御情報自動生成部560は、第2の実施形態のGAG制御情報自動生成部500に比べて、以下のように動作する構成を含む点が異なる。まず、GAG制御情報自動生成部560は、例えば出力データ配列763のような出力データOD0~3それぞれの出力を開始するタイミングが異なる出力データ配列から出力タイミング情報を生成する。次に、GAG制御情報自動生成部560は、出力データ配列703に替えて、生成した出力タイミング情報を利用して、GAG制御情報275を自動生成する。即ち、GAG制御情報275は、GAG制御情報205に比べて、出力タイミング情報を利用して生成される点が異なる。次に、本実施形態の動作について、図を参照して説明する。図43は、本実施形態のGAG制御情報自動生成部560の動作を示すフローチャートである。図43に示すように、GAG制御情報自動生成部560は、出力タイミング情報生成ステップS660、出力タイミング配列生成ステップS616、メモリ配置方法決定ステップS620、書き込みアドレス生成ステップS631、書き込み側GAG制御情報生成ステップS632、読み出しアドレス配列生成ステップS646、読み出し側GAG制御情報生成ステップS650を順次実行する。まず、GAG制御情報自動生成部560は、出力データ配列763に基づいて、出力タイミング情報768を生成するS660。具体的には、GAG制御情報自動生成部560は、図示しないメモリに保持されているloop_cycle及びoutput_data[x][y]を入力データとして、retimed_data[x][y]を生成する。ここで、loop_cycleは、入力データの入力が開始されてから、全入力データが装置へ入力されるまでの時間を示す。output_data[x][y]は、出力データ配列763であり、xはサイクル、yは出力ポート312の番号を示す。retimed_data[x][y]は、出力タイミング情報768であり、xはサイクル、yは出力ポート312の番号を示す。図44は、出力タイミング情報生成ステップS660の詳細な動作を示すフローチャートである。最初に、GAG制御情報自動生成部560は、output_dataをコピーし、ベースとなるretimed_dataを作成するS661。次に、GAG制御情報自動生成部560は、全出力ポート312の内で最も開始タイミングが早い出力ポート312最早列に対応の、開始サイクルを取得する。続けて、GAG制御情報自動生成部560は、取得した開始サイクルの値を、min_delayとして図示しない記憶手段に記憶するS662。次に、GAG制御情報自動生成部560は、各出力ポート312の開始サイクル数とmin_delayとの差分を算出する。続けて、GAG制御情報自動生成部560は、算出した差分を、diff_delayとして図示しない記憶手段に記憶するS663。次に、GAG制御情報自動生成部560は、loop_cycle及びdiff_delayに基づいて、前部有効領域、後部有効領域を算出するS664。次に、GAG制御情報自動生成部560は、前部有効領域及び後部有効領域に基づいてリタイミングデータを生成する。続けて、GAG制御情報自動生成部560は、生成したリタイミングデータ及びloop_cycleに基づいて出力タイミング情報768を生成するS665。図45は、前部有効領域及び後部有効領域を算出するステップS664の詳細な動作を示すフローチャートである。前部有効領域及び後部有効領域を算出する処理は、2つのループ処理で構成される。最初に、1つ目のループにおいて、GAG制御情報自動生成部560は、出力ポート312の数だけステップS6642を繰り返す処理を行うS6641。GAG制御情報自動生成部560は、出力ポート312の前部有効領域f_v_areaとして、対応する出力ポート312のdiff_delayを図示しない記憶手段に記憶するS6642。次に、2つ目のループにおいて、GAG制御情報自動生成部560は、出力ポート312の数だけステップS6345を繰り返す処理を行うS6644。GAG制御情報自動生成部560は、出力ポート312の後部有効領域l_v_areaとして、対応するf_v_areaにloop_cycleを、加算した値を図示しない記憶手段に記憶するS6645。図46は、出力タイミング情報768を生成するステップS665の詳細な動作を示すフローチャートである。出力タイミング情報768を生成する処理は、外側ループと内側ループとの2重ループで構成される。外側ループにおいて、GAG制御情報自動生成部560は、出力ポート312tt=0~3について順次、ステップS6652~ステップS6656の処理を行うS6651。外側ループの中の処理において、まず、GAG制御情報自動生成部560は、offset内側ループで使用する変数に1を設定するS6652。次に、内側ループにおいて、GAG制御情報自動生成部560は、1つの出力ポート312tについて、リタイミングデータを生成するS6653。具体的には、GAG制御情報自動生成部560は、f_v_area[t]-1のサイクルから0先頭のサイクルまでのリタイミングデータの要素を配置する処理を繰り返す。内側ループの中の処理において、まず、GAG制御情報自動生成部560は、f_v_area[t]からoffsetを減算した値l_posを算出するS6654。次に、GAG制御情報自動生成部560は、l_posに存在するoutput_data[l_pos][t]の要素をretimed_data[r][t]にコピーするS6655。これはすなわち、最も開始タイミングが早いメモリ400の出力が終了するサイクルを基点として、その他のメモリ400について、前記サイクル以降に出力されるデータを折り返して配置する処理に等しい。次に、GAG制御情報自動生成部560は、Offsetに1加算する。S6656。外側ループの処理が終了した後に、GAG制御情報自動生成部560は、retimed_dataを、先頭から数えて、loop_cycleと同じ長さになるように調整し、出力タイミング情報768を生成するS6657。次に、上述の動作について、具体的な値を示して詳細に説明する。尚、前提として、入力データ配列702は図4に示す入力データ配列702、及び出力データ配列763は図39に示す出力データ配列763、であるとする。従って、loop_cycleは、4であるとする。まず、GAG制御情報自動生成部560は、出力データ配列763output_dataをコピーし、ベースとなるリタイミングデータretimed_dataを作成するS661。図47は、ベースとなるリタイミングデータ764を示す図である。次に、GAG制御情報自動生成部560は、min_deleyを取得するS662。図39に示す出力データ配列763を参照すると、最も早いデータ出力の開始タイミングはサイクル0であるため、min_delayは、0である。次に、GAG制御情報自動生成部560は、各出力ポート312のdiff_delayを算出するS663。出力データ配列763の場合、出力ポート3120のdiff_delayは0、出力ポート3121のdiff_delayは1、出力ポート3122のdiff_delayは2、出力ポート3123のdiff_delayは3である。次に、GAG制御情報自動生成部560は、各出力ポート312に対応するf_v_area前部有効領域を算出する。出力データ配列763の場合、出力ポート3120のf_v_areaは0、出力ポート3121のf_v_areaは1、出力ポート3122のf_v_areaは2、出力ポート3123のf_v_areaは3であるS6641、S6642。次に、GAG制御情報自動生成部560は、各出力ポート312に対応するl_v_area後部有効領域を算出する。出力データ配列763の場合、出力ポート3120のl_v_areaは4、出力ポート3121のl_v_areaは5、出力ポート3122のl_v_areaは6、出力ポート3123のl_v_areaは7であるS6644、S6645。次に、GAG制御情報自動生成部560は、出力ポート3120について、出力タイミング情報768の要素を決定する外側ループを実行するS6651。次に、出力データ配列763の場合、出力ポート3120のf_v_areaは[0]であるため、GAG制御情報自動生成部560は、内側ループは1度も実行しないと判断しS6653、リタイミングデータ764を変更しない。具体的には、ステップS6653で、forr=-1;r>=0;r--となり、内側ループを実行しない。次に、GAG制御情報自動生成部560は、出力ポート3120について、出力タイミング情報768の要素を生成するS6651。次に、GAG制御情報自動生成部560は、出力ポート3121について、出力タイミング情報768の要素を生成する外側ループを実行するS6651。次に、出力データ配列763の場合、出力ポート3120のf_v_areaは[1]であるため、GAG制御情報自動生成部560は、0サイクル目のリタイミングデータの要素を決定する内側ループを実行するS6653。具体的には、ステップS6653で、forr=0;r>=0;r--となり、サイクル0分のみ内側ループを実行する。次に、出力データ配列763の場合、GAG制御情報自動生成部560は、l_pos=l_v_area[1]-offset=5-1=4を算出するS6654。次に、GAG制御情報自動生成部560は、retimed_data[0][1]にoutput_data[4][1]のHを格納するS6655。図48は、出力ポート1の0サイクル目の位置にHが格納された、リタイミングデータ765を示す図である。GAG制御情報自動生成部560は、出力ポート2についても同様にして、内側ループの1回目において、l_pos=l_v_area[2]-offset=6-1=5を算出するS6654。次に、GAG制御情報自動生成部560は、retimed_data[1][2]にoutput_data[5][2]のLを格納するS6655。次に、GAG制御情報自動生成部560は、内側ループの2回目において、l_pos=l_v_area[2]-offset=6-2=4を算出するS6654。次に、GAG制御情報自動生成部560は、retimed_data[0][2]にoutput_data[4][2]のKを格納するS6655。図49は、出力ポート2の0サイクル目及び1サイクル目の位置それぞれに、K及びLそれぞれが、格納された、リタイミングデータ766を示す図である。GAG制御情報自動生成部560は、出力ポート3についても同様にして、出力タイミング情報768の要素を決定し、格納する。図50は、出力ポート3の0サイクル目、1サイクル目及び2サイクル目の位置それぞれに、N、O及びPが、格納された、リタイミングデータ767を示す図である。最後に、リタイミングデータ767をloop_cycleで調整し、出力タイミング情報768を生成する。図51は、出力タイミング情報768の例を示す図である。以上をまとめると、出力タイミング情報生成ステップS660は、出力データ配列763に基づいて、第1の要素に対応する第2の要素に、第3の要素に対応する第4の要素を、再配置した出力タイミング情報を生成する。ここで、第1の要素は、出力データ配列763の列出力ポート312に対応の内の読み出しを開始するタイミングが最も早い列である最早列における、各メモリ400からの読み出しが行われる出力データ配列763の行サイクルに対応の要素である。第2の要素は、出力データ配列763の各列における、各メモリ400からの読み出しが行われない出力データ配列763の行の要素である。第3の要素は、最早列における、読み出しの終了以後の出力データ配列763の行の要素である。第4の要素は、出力データ配列763の各列における、各メモリ400からの読み出しが行われる出力データ配列763の行の要素である。以上が、図43の出力タイミング情報生成手段ステップS660の説明である。次に、GAG制御情報自動生成部560は、出力タイミング配列生成ステップS616を実行する。出力タイミング配列生成ステップS616は、第2の実施形態において説明した出力タイミング配列S610と比べて、出力データ配列703に替えて出力タイミング情報768retimed_dataを入力とする点が異なる。出力タイミング配列生成ステップS616は、retimed_dataを入力とする点を除いて、出力タイミング配列S610と同じである。次に、GAG制御情報自動生成部560は、メモリ配置方法決定ステップS620、書き込みアドレス生成ステップS631及び書き込み側GAG制御情報生成ステップS632を順次実行する。メモリ配置方法決定ステップS620、書き込みアドレス生成ステップS631及び書き込み側GAG制御情報生成ステップS632の動作は、第2の実施形態と同じである。次に、GAG制御情報自動生成部560は、読み出しアドレス配列生成ステップS646を実行する。読み出しアドレス配列生成ステップS646は、第2の実施形態において説明した読み出しアドレス配列生成ステップS640と比べて、出力データ配列703に替えて、retimed_dataを入力とする点が異なる。読み出しアドレス配列生成ステップS646は、出力タイミング情報768retimed_dataを入力とする点を除いて、読み出しアドレス配列生成ステップS640と同じである。次に、GAG制御情報自動生成部560は、読み出し側GAG制御情報生成ステップS650を実行する。読み出し側GAG制御情報生成ステップS650の動作は、第2の実施形態と同じである。上述した本実施形態における効果は、各メモリ400からのデータ読出の開始タイミングが異なる場合において、連続した並べ替え処理に汎用的に対応することを可能にする点である。具体的には、先行の並べ替え処理を終了していない出力データODを記憶するメモリ400と、それに続く後続の並べ替え処理を開始している出力データODを記憶するメモリ400とが、同一サイクルにおいて、同一メモリ400にならないように制御することが可能になる。その理由は、以下のような構成を含むからである。即ち、第1に、GAG制御情報自動生成部560が、出力データ配列763に基づいて出力タイミング情報768を生成する。第2にGAG制御情報自動生成部560が、出力データ配列763に替えて出力タイミング情報768を利用して、GAG制御情報275を生成する。第3にデータ保持出力回路160のリード2-DGAG270が、この生成されたGAG制御情報205に基づいて、タイミング生成部260のRSS0~3に対応するOWA0~3及びBA0~3を出力する。[第6の実施形態]次に、本発明の第6の実施形態について図面を参照して詳細に説明する。以下、本実施形態の説明が不明確にならない範囲で、前述の説明と重複する内容については省略する。第6の実施形態は、プログラムにより所定の処理をコンピュータに実行させる実施形態である。第5の実施形態は、プログラムをコンピュータの記録媒体に記録して実行することにより、GAG制御情報205を生成する。図36は、本実施形態の構成を示すブロック図である。図36は、本実施形態に係る、コンピュータ150の構成を示すブロック図である。図36を参照すると、コンピュータ150は、プロセッサ部540、記憶媒体550及び記憶部530を含む。記憶媒体550は、例えば、ディスク装置である。プロセッサ部540は、記憶媒体550に格納されたメモリ制御情報生成プログラムを、例えば記憶部530に展開し、展開したメモリ制御情報生成プログラムに基づいて所定の処理を実行する。記憶媒体550は、上述の各実施形態における情報処理端末の処理の一部をコンピュータに実行させるプログラムを記憶する。記憶媒体550に格納されたメモリ制御情報生成プログラムは、例えば、実施形態2で説明した図12のフローチャートで示されるプログラムである。記憶部530は、展開されたそのメモリ制御情報生成プログラム及びそのメモリ制御情報生成プログラムの作業情報例えば、入力データ配列を記憶する。上述した本実施形態における効果は、2次元GAGを制御するGAG制御情報205を、自動的に生成することが可能になる点である。その理由は、記憶媒体550に格納された制御情報自動生成のためのプログラムに基づいて、プロセッサ部540がGAG制御情報205を生成するようにしたからである。以上の各実施形態で説明した各構成要素は、必ずしも個々に独立した存在である必要はない。例えば、各構成要素は、複数の構成要素が1個のモジュールとして実現されたり、一つの構成要素が複数のモジュールで実現されたりしてもよい。また、各構成要素は、ある構成要素が他の構成要素の一部であったり、ある構成要素の一部と他の構成要素の一部とが重複していたり、といったような構成であってもよい。また、以上説明した各実施形態では、複数の動作をフローチャートの形式で順番に記載してあるが、その記載の順番は複数の動作を実行する順番を限定するものではない。このため、各実施形態を実施するときには、その複数の動作の順番は内容的に支障しない範囲で変更することができる。更に、以上説明した各実施形態では、複数の動作は個々に相違するタイミングで実行されることに限定されない。例えば、ある動作の実行中に他の動作が発生したり、ある動作と他の動作との実行タイミングが部分的に乃至全部において重複していたりしていてもよい。更に、以上説明した各実施形態では、ある動作が他の動作の契機になるように記載しているが、その記載はある動作と他の動作の全ての関係を限定するものではない。このため、各実施形態を実施するときには、その複数の動作の関係は内容的に支障のない範囲で変更することができる。また各構成要素の各動作の具体的な記載は、各構成要素の各動作を限定するものではない。このため、各構成要素の具体的な各動作は、各実施形態を実施する上で機能的、性能的、その他の特性に対して支障をきたさない範囲内で変更されて良い。尚、以上説明した各実施形態における各構成要素は、必要に応じ可能であれば、ハードウェアで実現されても良いし、ソフトウェアで実現されても良いし、ハードウェアとソフトウェアの混在により実現されても良い。また、各構成要素の物理的な構成は、以上の実施形態の記載に限定されることはなく、独立して存在しても良いし、組み合わされて存在しても良いしまたは分離して構成されても良い。上記の実施形態の一部または全部は、以下の付記のようにも記載されうるが、以下には限られない。付記1第1から第MMは2以上の任意の自然数のメモリそれぞれに同時に書き込む複数の入力データの組の配列を指定する入力データ配列と前記第1から第Mのメモリから同時に読み出す複数の出力データの組の配列を指定する出力データ配列とに基づいて生成された、ベースアドレスとアドレスの増分値であるステップ数と前記ベースアドレスに対して前記ステップ数を順次加算してアドレスを生成する回数とを含むループ構造を1つ以上含む、汎用アドレス生成器制御情報GAG制御情報に基づいて、第1から第Mのメモリそれぞれに対応する、書き込みアドレスを出力する、書込アドレス生成手段と、前記GAG制御情報に基づいて、前記第1から第Mのメモリそれぞれに対応する、読み出しアドレスを出力する、読出アドレス生成手段と、前記GAG制御情報に基づいて、前記第1から第Mのメモリそれぞれに書き込む前記入力データの組を排他的に指定する入力データ選択手段用制御情報を出力する、入力データ選択制御手段と、前記GAG制御情報に基づいて、前記第1から第Mのメモリから読み出した複数のデータの組の内の各データの組を排他的に指定する、出力データ選択手段用制御情報を出力する、出力データ選択制御手段と、前記入力データ選択手段用制御情報に基づいて、前記入力データ配列の前記入力データの組の内の各データの組を排他的に選択し、出力する入力データ選択手段と、前記読み出しアドレスに対応して前記第1から第Mのメモリそれぞれから同時に読み出された複数のデータの組を受け取り、前記出力データ選択手段用制御情報に基づいて、前記受け取った複数のデータの組の内の各データの組を排他的に選択し、前記出力データ配列の前記出力データを出力する出力データ選択手段と、を含むメモリ制御装置。付記2前記入力データ配列及び前記出力データ配列に基づいて、前記入力データ配列の各要素が前記出力データ配列の先頭から何行目に配置されているかを示す出力タイミング配列を生成する出力タイミング配列生成手段と、前記入力データ配列及び前記出力タイミング配列に基づいて、前記入力データ配列の各要素を前記第1から第Mのメモリに格納した状態を示すメモリ内データ配列を生成するメモリ配置方法決定手段と、前記入力データ配列及び前記メモリ内データ配列に基づいて、前記入力データ配列の各要素毎の前記入力データ選択手段用制御情報及び前記書き込みアドレスを含む、書き込みアドレス配列を生成する書き込みアドレス配列生成手段と、前記書き込みアドレス配列に基づいて、前記GAG制御情報を生成する書き込み側GAG制御情報生成手段と、を含むGAG制御情報自動生成手段を更に含む付記1記載のメモリ制御装置。付記3前記GAG制御情報自動生成手段は、前記メモリ内データ配列及び前記出力データ配列に基づいて、前記メモリ内データ配列の各要素毎の前記読み出しアドレス及び前記出力データ選択手段用制御情報を含む読み出しアドレス配列を生成する読み出しアドレス配列生成手段と、前記読み出しアドレス配列に基づいて、前記GAG制御情報を生成する読み出し側GAG制御情報生成手段と、を更に含む付記2記載のメモリ制御装置。付記4前記出力データ配列は、前記第1から第Mのメモリからの読み出しを開始するタイミングが異なる出力データ配列であって、前記GAG制御情報自動生成手段は、前記出力データ配列に基づいて、前記出力データ配列の行の要素を再配置した出力タイミング情報を生成する出力タイミング情報生成手段を更に含み、前記出力タイミング情報生成手段は、前記出力データ配列の列の内の読み出しを開始するタイミングが最も早い前記列である最早列における前記第1から第Mのメモリからのデータの読み出しが行われる前記出力データ配列の行の要素に対応する、前記出力データ配列の各列における前記第1から第Mのメモリからのデータの読み出しが行われない前記出力データ配列の行の要素に、前記最早列における読み出しの終了以後の前記出力データ配列の行の要素に対応する、前記出力データ配列の各列における前記第1から第Mのメモリからのデータの読み出しが行われる前記出力データ配列の行の要素を、再配置した出力タイミング情報を生成し、前記出力タイミング配列生成手段は、前記入力データ配列及び前記出力タイミング情報に基づいて、出力タイミング配列を生成する付記2または3に記載のメモリ制御装置。付記5前記出力タイミング情報生成手段は、前記第1から第Mのメモリそれぞれの読み出しを開始するタイミングに基づいて、前部有効領域及び後部有効領域を算出し、前記第1から第Mのメモリの中で出力を開始するタイミングが最も早い前記第1から第Mのメモリ以外の前記第1から第Mのメモリの前記出力データ配列の要素において、後部有効領域の要素をコピーして、前部有効領域に再配置して出力タイミング情報を生成する付記4記載のメモリ制御装置。付記6前記出力タイミング情報生成手段は、前記第1から第Mのメモリの中で出力を開始するタイミングが最も早い前記第1から第Mのメモリが出力を開始する時刻と、それ以外の前記第1から第Mのメモリが出力を開始する時刻との差分に対応する値を前記前部有効領域として算出する付記5記載のメモリ制御装置。付記7前記出力タイミング情報生成手段は、前記前部有効領域に、入力データ配列がデータ並べ替え機構への入力を開始してから入力が終了するまでの時刻との差分に対応する値を、加算して前記後部有効領域として算出する付記8前記書込アドレス生成手段、前記読出アドレス生成手段、前記入力データ選択制御手段及び前記出力データ選択制御手段のそれぞれに対応する前記GAG制御情報を保持する命令記憶手段を更に含む付記1乃至7のいずれかに記載のメモリ制御装置。付記9前記第1から第Mのメモリを更に含む付記1乃至8のいずれかに記載のメモリ制御装置。付記10メモリ制御装置が、第1から第MMは2以上の任意の自然数のメモリそれぞれに同時に書き込む複数の入力データの組の配列を指定する入力データ配列と前記第1から第Mのメモリから同時に読み出す複数の出力データの組の配列を指定する出力データ配列とに基づいて生成された、ベースアドレスとアドレスの増分値であるステップ数と前記ベースアドレスに対して前記ステップ数を順次加算してアドレスを生成する回数とを含むループ構造を1つ以上含む、汎用アドレス生成器制御情報GAG制御情報に基づいて、第1から第Mのメモリそれぞれに対応する、書き込みアドレスを出力し、前記GAG制御情報に基づいて、前記第1から第Mのメモリそれぞれに対応する、読み出しアドレスを出力し、前記GAG制御情報に基づいて、前記第1から第Mのメモリそれぞれに書き込む前記入力データの組を排他的に指定する入力データ選択手段用制御情報を出力し、前記GAG制御情報に基づいて、前記第1から第Mのメモリから読み出した複数のデータの組の内の各データの組を排他的に指定する、出力データ選択手段用制御情報を出力し、前記入力データ選択手段用制御情報に基づいて、前記入力データ配列の前記入力データの組の内の各データの組を排他的に選択し、出力し、前記読み出しアドレスに対応して前記第1から第Mのメモリそれぞれから同時に読み出された複数のデータの組を受け取り、前記出力データ選択手段用制御情報に基づいて、前記受け取った複数のデータの組の内の各データの組を排他的に選択し、前記出力データ配列の前記出力データを出力するメモリ制御方法。付記11GAG制御情報自動生成手段が、前記入力データ配列及び前記出力データ配列に基づいて、前記入力データ配列の各要素が前記出力データ配列の先頭から何行目に配置されているかを示す出力タイミング配列を生成し、前記入力データ配列及び前記出力タイミング配列に基づいて、前記入力データ配列の各要素を前記第1から第Mのメモリに格納した状態を示すメモリ内データ配列を生成し、前記入力データ配列及び前記メモリ内データ配列に基づいて、前記入力データ配列の各要素毎の前記入力データ選択手段用制御情報及び前記書き込みアドレスを含む、書き込みアドレス配列を生成し、前記書き込みアドレス配列に基づいて、前記GAG制御情報を生成する付記10記載のメモリ制御方法。付記12前記GAG制御情報自動生成手段は、前記メモリ内データ配列及び前記出力データ配列に基づいて、前記メモリ内データ配列の各要素毎の前記読み出しアドレス及び前記出力データ選択手段用制御情報を含む、読み出しアドレス配列を生成し、前記読み出しアドレス配列に基づいて、前記GAG制御情報を生成する付記11記載のメモリ制御方法。付記13第1から第MMは2以上の任意の自然数のメモリそれぞれに同時に書き込む複数の入力データの組の配列を指定する入力データ配列と前記第1から第Mのメモリから同時に読み出す複数の出力データの組の配列を指定する出力データ配列とに基づいて、前記入力データ配列の各要素が前記出力データ配列の先頭から何行目に配置されているかを示す出力タイミング配列を生成する処理と、前記入力データ配列及び前記出力タイミング配列に基づいて、前記入力データ配列の各要素を前記第1から第Mのメモリに格納した状態を示すメモリ内データ配列を生成する処理と、前記入力データ配列及び前記メモリ内データ配列に基づいて、前記入力データ配列の各要素毎の、前記第1から第Mのメモリそれぞれに書き込む前記入力データの組を排他的に指定する入力データ選択手段用制御情報及び前記第1から第Mのメモリそれぞれに対応する書き込みアドレスを含む、書き込みアドレス配列を生成する処理と、前記書き込みアドレス配列に基づいて、ベースアドレスとアドレスの増分値であるステップ数と前記ベースアドレスに対して前記ステップ数を順次加算してアドレスを生成する回数とを含むループ構造を1つ以上含む、汎用アドレス生成器制御情報GAG制御情報を生成する処理と、をコンピュータに実行させるメモリ制御情報生成プログラム。付記14前記メモリ内データ配列及び前記出力データ配列に基づいて、前記メモリ内データ配列の各要素毎の前記第1から第Mのメモリそれぞれに対応する読み出しアドレス及び前記第1から第Mのメモリから読み出した複数のデータの組の内の各データの組を排他的に指定する、出力データ選択手段用制御情報を含む、読み出しアドレス配列を生成する処理と、前記読み出しアドレス配列に基づいて、前記GAG制御情報を生成する処理と、をコンピュータに実行させる付記13記載のメモリ制御情報生成プログラム。付記15第1から第MMは2以上の任意の自然数のメモリそれぞれに同時に書き込む複数の入力データの組の配列を指定する入力データ配列と前記第1から第Mのメモリから同時に読み出す複数の出力データの組の配列を指定する出力データ配列とに基づいて、前記入力データ配列の各要素が前記出力データ配列の先頭から何行目に配置されているかを示す出力タイミング配列を生成し、前記入力データ配列及び前記出力タイミング配列に基づいて、前記入力データ配列の各要素を前記第1から第Mのメモリに格納した状態を示すメモリ内データ配列を生成し、前記入力データ配列及び前記メモリ内データ配列に基づいて、前記入力データ配列の各要素毎の、前記第1から第Mのメモリそれぞれに書き込む前記入力データの組を排他的に指定する入力データ選択手段用制御情報及び前記第1から第Mのメモリそれぞれに対応する書き込みアドレスを含む、書き込みアドレス配列を生成し、前記書き込みアドレス配列に基づいて、ベースアドレスとアドレスの増分値であるステップ数と前記ベースアドレスに対して前記ステップ数を順次加算してアドレスを生成する回数とを含むループ構造を1つ以上含む、汎用アドレス生成器制御情報GAG制御情報を生成するメモリ制御方法。付記16前記メモリ内データ配列及び前記出力データ配列に基づいて、前記メモリ内データ配列の各要素毎の前記第1から第Mのメモリそれぞれに対応する読み出しアドレス及び前記第1から第Mのメモリから読み出した複数のデータの組の内の各データの組を排他的に指定する、出力データ選択手段用制御情報を含む読み出しアドレス配列を生成し、前記読み出しアドレス配列に基づいて、前記GAG制御情報を生成する付記15記載のメモリ制御方法。付記17第1から第MMは2以上の任意の自然数のメモリそれぞれに同時に書き込む複数の入力データの組の配列を指定する入力データ配列と前記第1から第Mのメモリから同時に読み出す複数の出力データの組の配列を指定する出力データ配列とに基づいて、前記入力データ配列の各要素が前記出力データ配列の先頭から何行目に配置されているかを示す出力タイミング配列を生成する出力タイミング配列生成手段と、前記入力データ配列及び前記出力タイミング配列に基づいて、前記入力データ配列の各要素を前記第1から第Mのメモリに格納した状態を示すメモリ内データ配列を生成するメモリ配置方法決定手段と、前記入力データ配列及び前記メモリ内データ配列に基づいて、前記入力データ配列の各要素毎の、前記第1から第Mのメモリそれぞれに書き込む前記入力データの組を排他的に指定する入力データ選択手段用制御情報及び前記第1から第Mのメモリそれぞれに対応する書き込みアドレスを含む、書き込みアドレス配列を生成する書き込みアドレス配列生成手段と、前記書き込みアドレス配列に基づいて、ベースアドレスとアドレスの増分値であるステップ数と前記ベースアドレスに対して前記ステップ数を順次加算してアドレスを生成する回数とを含むループ構造を1つ以上含む、汎用アドレス生成器制御情報GAG制御情報を生成する書き込み側GAG制御情報生成手段と、を含むメモリ制御装置。付記18前記メモリ内データ配列及び前記出力データ配列に基づいて、前記メモリ内データ配列の各要素毎の前記第1から第Mのメモリそれぞれに対応する読み出しアドレス及び前記第1から第Mのメモリから読み出した複数のデータの組の内の各データの組を排他的に指定する、出力データ選択手段用制御情報を含む、読み出しアドレス配列を生成する読み出しアドレス配列生成手段と、前記読み出しアドレス配列に基づいて、前記GAG制御情報を生成する読み出し側GAG制御情報生成手段と、を更に含む付記17記載のメモリ制御装置。以上、実施形態を参照して本願発明を説明したが、本願発明は上記実施形態に限定されものではない。本願発明の構成や詳細には、本願発明のスコープ内で当業者が理解し得る様々な変更をすることができる。この出願は、2010年11月24日に出願された日本出願特願2010-260790及び2011年5月24日に出願された日本出願特願2011-115484を基礎とする優先権を主張し、その開示の全てをここに取り込む。"