(57)【特許請求の範囲】
【請求項１】
読出しアドレスの入力に応答して複数の要素データを有する第１の要素データ列がそれぞれ読み出される複数のバンクを有するメモリから、前記第１の要素データ列を読み出すためのバンクごとの前記読出しアドレスを生成する第１の生成部と、
前記複数のバンクから読み出された複数の前記第１の要素データ列を結合した第２の要素データ列における選択すべき複数の要素データの位置を示す位置信号と、前記選択すべき複数の要素データをレジスタに格納する前記要素データごとの格納順序を示す順序信号とを生成する第２の生成部と、
前記レジスタが格納する要素データの数と同じ数の、前記順序信号に対応するセレクタであって、それぞれ、前記第２の要素データ列における全ての要素データから前記位置信号に基づいて要素データを選択し前記レジスタに格納する複数の前記セレクタを有するセレクタ部とを有し、
前記レジスタに格納された複数の要素データは、前記格納順序でベクトルプロセッサに処理される、メモリ制御装置。
【請求項２】
複数の要素データを有する第１の要素データ列が、入力された書込みアドレスにそれぞれ書き込まれる複数のバンクを有するメモリに、前記第１の要素データ列を書き込むためのバンクごとの書込みアドレスを生成する第１の生成部と、
ベクトルプロセッサによる処理順序でレジスタに格納された、前記メモリに書き込むべき複数の要素データの当該レジスタにおける前記要素データごとの格納順序を示す順序信号と、前記複数のバンクにそれぞれ書き込まれる前記第１の要素データ列を結合した第２の要素データ列に前記書き込むべき複数の要素データを挿入する位置を示す位置信号とを生成する第２の生成部と、
前記第２の要素データ列における要素データの数と同じ数の、前記位置信号に対応するセレクタであって、それぞれ、前記順序信号が前記レジスタにおけるいずれかの要素データを示す場合に、前記レジスタにおける複数の要素データから前記順序信号に基づいて要素データを選択し、前記第２の要素データ列に挿入する複数の前記セレクタを有するセレクタ部とを有し、
前記書き込むべき要素データが格納された前記第１の要素データ列が、前記バンクごとの書込みアドレスに書き込まれる、メモリ制御装置。
【請求項３】
請求項１において、
前記第１の生成部は、前記読出しアドレスの有効性を示すイネーブル信号をさらに生成し、前記イネーブル信号が生成されたバンクから前記第１の要素データ列が読み出され、前記イネーブル信号が生成されないバンクからは前記第１の要素データ列は読み出されず、
前記セレクタ部は、前記イネーブル信号が生成されたバンクから読み出される前記第１の要素データ列から前記選択すべき要素データを選択するメモリ制御装置。
【請求項４】
請求項２において、
前記第１の生成部は、前記書込みアドレスの有効性を示すイネーブル信号をさらに生成し、前記イネーブル信号が生成されたバンクに前記第１の要素データ列が書き込まれ、前記イネーブル信号が生成されないバンクには前記第１の要素データ列は書き込まれず、
前記セレクタ部は、前記イネーブル信号が生成されたバンクに書き込まれる前記第１の要素データ列に前記書き込むべき要素データを挿入し、前記イネーブル信号が生成されないバンクに対応する前記第１の要素データ列に前記書き込むべき要素データを挿入しないメモリ制御装置。
【請求項５】
請求項２または４において、
前記セレクタ部は、前記書き込むべき複数の要素データの書込みの許可・不許可を示すマスク信号に基づいて、前記書込みが許可された書き込むべき要素データを前記複数のバンクに書き込まれる第２の要素データ列に挿入し、前記書込みが不許可の書き込むべき要素データを前記複数のバンクに書き込まれる第２の要素データ列に挿入しない、メモリ制御装置。
【請求項６】
読出しアドレスの入力に応答して複数の要素データを有する第１の要素データ列がそれぞれ読み出される複数のバンクを有するメモリから、前記第１の要素データ列を読み出すためのバンクごとの前記読出しアドレスを生成し、
前記複数のバンクから読み出された複数の前記第１の要素データ列を結合した第２の要素データ列における選択すべき複数の要素データの位置を示す位置信号と、前記選択すべき複数の要素データをレジスタに格納する前記要素データごとの格納順序を示す順序信号とを生成し、
前記レジスタが格納する要素データの数と同じ数の前記順序信号それぞれについて、前記第２の要素データ列における全ての要素データから前記位置信号に基づいて要素データを選択し、前記順序信号が示す格納順序に前記レジスタに格納し、
前記レジスタに格納された複数の要素データは、前記格納順序に対応する単位でベクトルプロセッサに処理される、
メモリ制御方法。
【請求項７】
複数の要素データを有する第１の要素データ列が、入力された書込みアドレスにそれぞれ書き込まれる複数のバンクを有するメモリに、前記第１の要素データ列を書き込むためのバンクごとの書込みアドレスを生成し、
ベクトルプロセッサによる処理単位に対応する順序でレジスタに格納された、前記メモリに書き込むべき複数の要素データの当該レジスタにおける前記要素データごとの格納順序を示す順序信号と、前記複数のバンクにそれぞれ書き込まれる前記第１の要素データを結合した第２の要素データ列に前記書き込むべき複数の要素データを挿入する位置を示す位置信号とを生成し、
前記第２の要素データ列における要素データの数と同じ数の前記位置信号それぞれについて、前記順序信号が前記レジスタにおけるいずれかの要素データを示す場合に、前記レジスタにおける複数の要素データから前記順序信号に基づいて要素データを選択し、前記第２の要素データ列における前記位置信号の位置に挿入し、
前記書き込むべき要素データが格納された前記第１の要素データ列が、前記バンクごとの書込みアドレスに書き込まれる、
メモリ制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メモリに対するデータの読み書きを制御するメモリ制御装置等に関する。
【背景技術】
【０００２】
配列をなす大量の要素データに対し一定の演算を繰り返すベクトル処理において、ベクトルプロセッサが用いられる（たとえば、特許文献１）。ベクトルプロセッサによれば、一命令により配列の要素データを連続的に処理することで、高い演算スループットを得ることができる。ベクトルプロセッサは、たとえば、ロード・ストア用、演算用のパイプラインを有する。ロード・ストアパイプラインは、要素データをデータメモリから読み出して、演算パイプラインによる処理順序でレジスタ（以下、ベクトルレジスタという）に格納する。演算パイプラインは、演算命令のフェッチ、デコードを一回的に行い、ベクトルレジスタから要素データを順次連続して読み出し、算術演算などの演算を実行する。そして、演算パイプラインは、演算結果を示す要素データを処理順序でベクトルレジスタに格納する。そして、ロード・ストアパイプラインは、演算結果を示す要素データをレジスタから読み出し、処理順序でデータメモリに格納する。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】米国特許第５８０９５５２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
たとえばＤＲＡＭ（Dynamic Random Access Memory）などの大容量のデータメモリにおいて、入力用の要素データが不連続なアドレスに格納されている場合がある。あるいは、演算結果を示す要素データを、データメモリの不連続なアドレスに格納する場合がある。すると、ロード・ストアパイプラインが要素データをデータメモリからベクトルレジスタに読み出すとき、またはベクトルレジスタからデータメモリに書き込むときに、広範なメモリ領域へのアクセスが発生する。このことはレイテンシを増大させ、スループットを圧迫する要因となる。また、たとえば、データメモリとベクトルレジスタの間にＳＲＡＭ（Static Random Access Memory）などの高速のキャッシュメモリを設けてパイプライン化し、これによりレイテンシを緩和しようとした場合、回路規模の増大や高コスト化を招くおそれがある。
【０００５】
本発明の目的は、データメモリの不連続なアドレスにアクセスして要素データを読み書きする場合であっても、最小限の回路構成により良好なスループットを得ることができるメモリ制御装置、及びメモリ制御方法を提供することにある。
【課題を解決するための手段】
【０００６】
上記の目的を達成するために、第１の側面におけるメモリ制御装置は、読出しアドレスの入力に応答して複数の要素データを有する要素データ列が読み出される複数のバンクを有するメモリから、前記要素データ列を読み出すためのバンクごとの前記読出しアドレスを生成する第１の生成部と、前記要素データ列における選択すべき要素データの位置を示す位置信号と、前記選択すべき要素データをレジスタに格納する格納順序を示す順序信号とを生成する第２の生成部と、前記複数のバンクからそれぞれ読み出された前記要素データ列から前記位置信号に基づいて前記選択すべき要素データを選択し、当該選択した要素データを前記順序信号が示す格納順序で前記レジスタに格納するセレクタ部とを有し、前記レジスタに格納された要素データは、前記格納順序でベクトルプロセッサに処理される。
【０００７】
また、第２の側面におけるメモリ制御装置は、複数の要素データを有する要素データ列が、入力された書込みアドレスに書き込まれる複数のバンクを有するメモリに、前記要素データ列を書き込むためのバンクごとの書込みアドレスを生成する第１の生成部と、ベクトルプロセッサによる処理順序でレジスタに格納された、前記メモリに書き込むべき要素データの当該レジスタにおける格納順序を示す順序信号と、前記複数のバンクにそれぞれ書き込まれる要素データ列に前記書き込むべき要素データを挿入する位置を示す位置信号とを生成する第２の生成部と、前記複数のバンクに書き込まれる要素データ列における前記位置信号が示す位置に、前記順序信号が示す順序で前記書き込むべき要素データを挿入するセレクタ部とを有し、前記書き込むべき要素データ列が格納された要素データ列が、前記バンクごとの書込みアドレスに書き込まれる。
【発明の効果】
【０００８】
以下で説明する実施形態によれば、データメモリの不連続なアドレスにアクセスして要素データを読み書きする場合であっても、最小限の回路構成により良好なスループットを得ることができる。
【図面の簡単な説明】
【０００９】
【図１】本実施形態が適用されるベクトルプロセッサの構成を説明する図である。
【図２】ベクトルパイプライン１２＿１〜４の処理シーケンスを説明する図である。
【図３】演算パイプライン１２＿３、１２＿４の動作について説明する図である。
【図４】要素データの転送の態様を模式的に示す図である。
【図５】データメモリ６における要素データの読み書きについて説明する図である。
【図６】ベクトルレジスタ８について説明する図である。
【図７】メモリ制御装置の構成を示す図である。
【図８】順序・位置信号生成部３２の詳細な動作を説明するための図である。
【図９】バンクイネーブル信号ＢＥが生成されない例を示す図である。
【図１０】メモリ制御装置の構成を示す図である。
【図１１】順序・位置所信号生成部３２の詳細な動作を説明するための図である。
【図１２】バンクイネーブル信号ＢＥが生成されない例を示す図である。
【発明を実施するための形態】
【００１０】
以下、図面にしたがって実施の形態について説明する。但し、適用される技術的範囲はこれらの実施の形態に限定されず、特許請求の範囲に記載された事項とその均等物まで及ぶものである。
【００１１】
図１は、本実施形態が適用されるベクトルプロセッサの構成を説明する図である。
【００１２】
ベクトルプロセッサ１は、命令メモリ２に格納された命令に従って、ベクトルパイプライン１２がデータメモリ６に格納される要素データを読み出して演算を行い、演算結果を示す要素データをデータメモリ６に書き込む。ベクトルプロセッサ１は、命令メモリ２、ベクトルパイプライン１２、データメモリ６のほかに、命令デコーダ４、ベクトルレジスタ８、スカラレジスタ１０、及びマルチプレクサ１４を有する。ベクトルプロセッサ１は、たとえば、信号処理用ＬＳＩ（Large Scale Integrated circuit）である。
【００１３】
命令メモリ２は、ベクトルパイプライン１２に対する制御命令や演算命令を格納する。命令メモリ２は、たとえばＳＲＡＭである。命令デコーダ４は、命令メモリ２から命令を読み出してデコードし、ベクトルパイプライン１２に入力する。
【００１４】
ベクトルパイプライン１２は、ロード・ストア処理用のロード・ストアパイプライン１２＿１、１２＿２と、各種演算用の演算パイプライン１２＿３、１２＿４を有する。ロード・ストアパイプライン１２＿１、１２＿２と、演算パイプライン１２＿３、１２＿４は、それぞれ入力される制御命令や演算命令に従って動作する。ロード・ストアパイプライン１２＿１、１２＿２は、データメモリ６にアクセスして、データメモリ６とベクトルレジスタ８の間で要素データの転送を行う。このとき、ロード・ストアパイプライン１２＿１、１２＿２は、マルチプレクサ１４を制御して、転送される要素データの選別を行う。演算パイプライン１２＿３、１２＿４は、ベクトルレジスタ８に格納された要素データを読み出し、加減算、乗算といった算術演算や、論理演算などの演算を実行する。演算パイプライン１２＿３、１２＿４は、たとえば、それぞれ一または複数の演算器を有する。演算パイプライン１２＿３、１２＿４に含まれる演算器は、一命令で、配列をなす要素データに対し連続して演算を行う。
【００１５】
データメモリ６は、配列をなす要素データを格納する。データメモリ６は、たとえば、ＳＲＡＭである。要素データは、演算パイプライン１２＿３、１２＿４による演算用のデータである。また、要素データは、演算パイプライン１２＿３、１２＿４による演算結果を示すデータである。データメモリ６は、複数のバンク６＿１、６＿２、６＿３、及び６＿４を有する。バンク６＿１〜６＿４は、それぞれデータ読み書き用のアクセスポートを有する。バンク６＿１〜６＿４は、インターリーブ方式によりそれぞれのアドレスにアクセスされる。
【００１６】
ベクトルレジスタ８は、データメモリ６から読み出されて演算パイプライン１２＿３、１２＿４に入力される要素データを格納する。また、ベクトルレジスタ８は、演算パイプライン１２＿３、１２＿４から出力されてデータメモリ６に書き込まれる要素データを格納する。なお、スカラレジスタ８には、ベクトルパイプライン１２に入出力される、ベクトル処理以外の各種データが格納される。
【００１７】
図２は、ベクトルパイプライン１２＿１〜４の処理シーケンスを説明する図である。図２（Ａ）はロード・ストアパイプライン１２＿１、１２＿２の処理シーケンスを示し、図２（Ｂ）は演算パイプライン１２＿３、１２＿４の処理シーケンスを示す。図２（Ａ）、（Ｂ）において、縦軸は処理ステージを示し、横軸は時間（処理サイクル）を示す。ここでは、６４個の要素データを順次処理する場合が示される。各マス目の中の数字は、処理される要素データの配列番号（０〜６３）を示す。
【００１８】
まず、図２（Ａ）に示すように、ロード・ストアパイプライン１２＿１、１２＿２は、命令のフェッチ「fetch」、命令のデコード「decode」、レジスタからの命令読み出し「reg．read」、命令の実行「execute」、メモリアクセス「mem.access」、及び実行結果のレジスタ書込み「writeback」の６ステージを順次、並行して実行する。各ステージは、それぞれ１処理サイクルで実行される。このとき、「fetch」と「decode」は、一回的に実行される。そして、「execute」〜「writeback」の各ステージでは、１処理サイクルで、８個の要素データが連続して処理される。このようなパイプライン処理により、６４個の要素データに対する６ステージの処理が、１３処理サイクルで実行される。
【００１９】
また、図２（Ｂ）に示すように、演算パイプライン１２＿３、１２＿４は、「fetch」、「decode」、「reg．read」、「execute」、及び「writeback」の５ステージを順次、並行して実行する。このとき、「fetch」と「decode」は、一回的に実行される。そして、「execute」〜「writeback」の各ステージでは、１処理サイクルで、８個の要素データが連続して処理される。このようなパイプライン処理により、６４個の要素データに対する５ステージの処理が、１２処理サイクルで実行される。
【００２０】
図３は、演算パイプライン１２＿３、１２＿４の命令の実行（「execute」）ステージでの動作について説明する図である。図３（Ａ）は、演算パイプライン１２＿３、１２＿４が、それぞれ、たとえば１つの演算器３０を有する場合を示す。演算器３０は、たとえば１６ビット演算器である。ここでは、演算器３０が、８組の要素データを配列番号順に処理する例が示される。各要素データは、たとえば１６ビット長のデータである。演算器３０は、１処理サイクルで８組の要素データを処理する。演算器３０は、たとえば配列番号をｉとして、配列番号ｉ＝０〜７の要素データＩｎ＿１[ｉ]、Ｉｎ＿２[ｉ]に対する算術演算を配列番号ｉの順序で連続して行い、それぞれの演算結果を示す要素データＯｕｔ[ｉ]を出力する。
【００２１】
図３（Ｂ）は、演算パイプライン１２＿３、１２＿４のそれぞれが、たとえば８個の演算器３０＿１〜８を有する場合を示す。演算器３０＿１〜８は、たとえば、それぞれ１６ビット演算器である。ここでは、演算器３０＿１〜８が、８組の１６ビット長の要素データを並行して処理する例が示される。演算器３０＿１〜８は、たとえば、１回目の演算実行時に、それぞれ配列番号ｉ＝０〜７の要素データＩｎ＿１[ｉ]、Ｉｎ＿２[ｉ]の演算を行い、演算結果を示す要素データＯｕｔ[ｉ]を出力する。次いで、２回目の演算実行時に、演算器３０＿１〜８は、それぞれ配列番号ｉ＝８〜１５の要素データを同様に処理する。次いで３回目の演算実行時に、演算器３０＿１〜８は、それぞれ配列番号ｉ＝１６〜２３の要素データを同様にして処理する。このようにして、演算実行ごとに８個の要素データが処理される。そして、８回目の演算実行時には、演算器３０＿１〜８は、それぞれ配列番号ｉ＝５６〜６３の要素データを同様にして処理する。こうして、演算器３０＿１〜８は、１処理サイクルで８組の要素データの演算を８回連続して行い、６４組の要素データを処理する。
【００２２】
上述のように、演算パイプライン１２＿３、１２＿４は、演算命令のフェッチとデコードを一回的に行い、要素データを順次連続して処理する。そうすることで、命令のフェッチやデコードの時間を節減して高いスループットを得る。また、演算パイプライン１２＿３、１２＿４は、複数の演算器を備えることで、その並列動作によりさらに高いスループットを可能にする。
【００２３】
一方で、ロード・ストアパイプライン１２＿１、１２＿２は、データメモリ６とベクトルレジスタ８との要素データの転送を行う。図４（Ａ）〜（Ｃ）は、要素データの転送の態様を模式的に示す。図４（Ａ）〜（Ｃ）において、データメモリ６とベクトルレジスタ８の各マス目は、それぞれ１個の要素データが格納されるアドレスを示す。また、各マス目の中の符号は、要素データを示す。
【００２４】
図４（Ａ）は、データメモリ６の連続したアドレスに対し要素データの読み書きが行われる場合を示す。かかる場合を、シーケンシャルアクセスという。シーケンシャルアクセスでは、ロード・ストアパイプライン１２＿１、１２＿２は、データメモリ６の連続したアドレスからたとえば要素データ「Ａ１」〜「Ａ８」、「Ｂ１」〜「Ｂ８」を読み出して、ベクトルレジスタ８に演算パイプライン１２＿３、１２＿４の処理順序で格納する。また、ロード・ストアパイプライン１２＿１、１２＿２は、要素データ「Ｃ１」〜「Ｃ８」をベクトルレジスタ８から読み出して、データメモリ６の連続したアドレスに書き込む。
【００２５】
図４（Ｂ）は、データメモリ６における間欠的なアドレスに対し要素データの読み書きが行われる場合を示す。かかる場合を、ストライドアクセスという。ストライドアクセスは、たとえば、所定の間隔で並んだ要素データを抽出して処理する場合に行われる。たとえば、偶数の配列番号の要素データのみの処理を行う場合や、所定間隔ごとの配列番号の要素データのみの処理を行う場合などである。ストライドアクセスでは、ロード・ストアパイプライン１２＿１、１２＿２は、データメモリ６の間欠的なアドレスから、たとえば要素データ「Ａ１」〜「Ａ８」、「Ｂ１」〜「Ｂ８」を読み出して、ベクトルレジスタ８に処理順序で格納する。また、ロード・ストアパイプライン１２＿１、１２＿２は、要素データ「Ｃ１」〜「Ｃ８」をベクトルレジスタ８から読み出して、データメモリ６の間欠的なアドレスに書き込む。
【００２６】
図４（Ｃ）は、データメモリ６における離散的なアドレスに対し要素データの読み書きが行われる場合を示す。かかる場合を、インダイレクトアクセスという。インダイレクトアクセスは、たとえば点在する要素データに対し処理を行う場合に実行される。インダイレクトアドレスでは、ロード・ストアパイプライン１２＿１、１２＿２は、データメモリ６の離散したアドレスから、たとえば要素データ「Ａ１」〜「Ａ８」、「Ｂ１」〜「Ｂ８」を読み出して、ベクトルレジスタ８に処理順序で格納する。また、ロード・ストアパイプライン１２＿１、１２＿２は、要素データ「Ｃ１」〜「Ｃ８」をベクトルレジスタ８から読み出して、データメモリ６の離散的なアドレスに書き込む。
【００２７】
上記の態様において、シーケンシャルアクセス、ストライドアクセス、インダイレクトアクセスの順で、アクセスすべきアドレスが広範になる。それに伴ってアクセス回数が増加し、メモリレイテンシが増大する蓋然性が高くなる。そこで、本実施形態では、次のようにして、メモリレイテンシを抑制し、良好なスループットを得る。
【００２８】
図５は、データメモリ６における要素データの読み書きについて説明する図である。データメモリ６は、インターリーブ方式でアクセスされる複数のバンク、たとえばバンク６＿１〜６＿４を有する。バンク６＿１〜６＿４は、たとえば、それぞれ１２８ビットのバンク幅を有する。各マス目は１６ビット長の格納領域を示し、マス目の中の数字は要素データを示す。よって、１バンク幅に８個の１６ビット長の要素データが格納される。
【００２９】
バンク６＿１〜６＿４からは、読出しアドレスの入力に応答して、たとえば８個の要素データを有する要素データ列が読み出される。あるいは、バンク６＿１〜６＿４は、たとえば８個の要素データを有する要素データ列が、書込みアドレスに書き込まれる。たとえば、バンク６＿１では、１回のアクセスで、アドレスＡＤＤ１に対し、要素データ「０」〜「７」を有する要素データ列Ｒ１が読み書きされる。また、バンク６＿２では、１回のアクセスで、アドレスＡＤＤ２に、要素データ「４０」〜「４７」有する要素データ列Ｒ２が読み書きされる。また、バンク６＿３では、１回のアクセスで、アドレスＡＤＤ３に、要素データ「８０」〜「８７」を有する要素データ列Ｒ３が読み書きされる。さらに、バンク６＿４では、１回のアクセスで、アドレスＡＤＤ４に、要素データ「１２０」〜「１２７」を有する要素データ列Ｒ４が読み書きされる。このように、データメモリ６全体としては、１回のアクセスで、３２個の要素データを有する要素データ列Ｒ１〜Ｒ４が読み書きされる。
【００３０】
図６は、ベクトルレジスタ８について説明する図である。ベクトルレジスタ８には、演算パイプライン１２＿１、１２＿２による処理順序で、演算のための要素データ、または演算結果を示す要素データが格納される。ベクトルレジスタ８は、たとえば、１２８ビットの幅を有し、１つの行アドレスに８個の１６ビット長の要素データが格納される。ここでは、各マス目は１６ビット長の格納領域を示し、マス目の中の数字は格納される要素データの配列番号を示す。
【００３１】
たとえば、図３（Ａ）で示したように、演算パイプライン１２＿１、１２＿２の１つの演算器で１処理サイクルに８組の要素データを処理する場合、ベクトルレジスタ８には次のように要素データが格納される。たとえば、２つの行アドレスには演算器に順次入力される要素データの組が処理順序で格納され、別の１つの行アドレスに演算結果を示す要素データが処理順序に格納される。
【００３２】
上述のように、バンク６＿１〜６＿４は、インターリーブ方式により、全体として３２個の要素データを含む要素データ列Ｒ１〜Ｒ４が１回のアクセスで読み書きされる。これにより、レイテンシが抑制される。一方、ベクトルレジスタ８は、１つの行アドレスにつき８個の演算ための、または演算結果を示す要素データが格納される（なお、以下では、ベクトルレジスタ８に格納される要素データを演算要素データと称し、データメモリ６に格納されるその他の要素データと区別する）。よって、本実施形態では、次のようにして、バンク６＿１〜６＿４から読み出される要素データ列Ｒ１〜Ｒ４の３２個の要素データから、ベクトルレジスタ８に格納すべき８個の演算要素データが選択される。また、ベクトルレジスタ８に格納された８個の演算要素データが、バンク６＿１〜６＿４に１アクセスで書き込まれる要素データ列Ｒ１〜Ｒ４に挿入され、データメモリ６に書き込まれる。
【００３３】
以下では、本実施形態のメモリ制御装置について、データメモリ６から演算要素データを読み出してベクトルレジスタ８に格納する場合と、ベクトルレジスタ８から演算要素データを読み出してデータメモリ６に書き込む場合とに場合分けして説明する。
【００３４】
[データメモリ６から演算要素データを読み出してベクトルレジスタ８に格納する場合]
図７は、データメモリ６から演算要素データを読み出してベクトルレジスタ８に格納するためのメモリ制御装置の構成を示す。メモリ制御装置は、データメモリ６から要素データ列Ｒ１〜Ｒ４を読み出すためのバンク６＿１〜６＿４ごとの読出しアドレスｒＡＤＤを生成するアドレス生成部３０を有する。アドレス生成部３０は、たとえばロード・ストアパイプライン１２＿１、１２＿２内のモジュールである。アドレス生成部３０は、命令デコーダ４から入力されるアドレス生成用データ４ａに基づいて、読出しアドレスｒＡＤＤを生成する。アドレス生成部３０は、たとえば、シーケンシャルアクセスの場合の読出しアドレスを生成するシーケンシャルアドレス生成部３０＿１、インダイレクトアクセスの場合の読出しアドレスを生成するインダイレクトアドレス生成部３０＿２、及びストライドアクセスの場合の読出しアドレスを生成するストライドアドレス生成部３０＿３を有する。アドレス生成部３０が生成したバンク６＿１〜６＿４ごとの読出しアドレスｒＡＤＤは、データメモリ６のバンク６＿１〜６＿４にそれぞれ入力される。その一方、アドレス生成部３０では、たとえば、シーケンシャルアドレス生成部３０＿１、インダイレクトアドレス生成部３０＿２、及びストライドアドレス生成部３０＿３により、各種処理信号ＰＳが生成される。そして、バンク６＿１〜６＿４ごとの読出しアドレスｒＡＤＤと各種処理信号ＰＳは、レジスタ３１に格納される。
【００３５】
メモリ制御装置は、要素データ列Ｒ１〜Ｒ４における演算要素データの位置を示す位置信号Ｓ４と、演算要素データをレジスタに格納する格納順序を示す順序信号Ｓ６とを生成する順序・位置信号生成部３２を有する。順序・位置信号生成部３２は、たとえば、マルチプレクサ１４内のモジュールである。順序・位置信号生成部３２は、レジスタ３１に格納された読出しアドレスｒＡＤＤと各種処理信号ＰＳとを読み出し、これらに基づいて位置信号Ｓ４と順序信号Ｓ６とを生成する。その詳細については後述する。
【００３６】
また、メモリ制御装置は、複数のバンク６＿１〜６＿４からそれぞれ読み出された要素データ列Ｒ１〜Ｒ４から位置信号Ｓ４に基づいて演算要素データを選択し、選択した演算要素データを順序信号Ｓ６が示す格納順序でベクトルレジスタ８に格納するセレクタ部３４を有する。セレクタ部３４は、たとえば、マルチプレクサ１４に含まれる。セレクタ部３４は、たとえば、ベクトルレジスタ８の８個の格納位置ごとのセレクタ３４＿１〜３４＿８を有する。セレクタ３４＿１〜３４＿８には、それぞれ、要素データ列Ｒ１〜Ｒ４の３２個の要素データが入力される。そして、セレクタ３４＿１〜３４＿８は、位置信号Ｓ４と順序信号Ｓ６とに基づいて、３２個の要素データから自らが対応する格納位置に格納すべき演算要素データを選択し、ベクトルレジスタ８に格納する。
【００３７】
図８は、順序・位置信号生成部３２の詳細な動作を説明するための図である。ここでは、演算要素データ「Ａ」、「Ｂ」、「Ｃ」、「Ｄ」、「Ｅ」、「Ｆ」、「Ｇ」、「Ｈ」の順に、ベクトルレジスタ８に格納する場合が示される。図８（Ａ）には、バンク６＿１〜６＿４に分散して８個の演算要素データ「Ａ」〜「Ｈ」が格納される例が示される。また、図８（Ａ）には、演算要素データ「Ａ」〜「Ｈ」を含む要素データ列Ｒ１〜Ｒ４の読み出しアドレスが示される。ここでは、図面の右から左へ、かつ、上から下へアドレスが昇順に変化する。バンク６＿１〜６＿４ごとの読出しアドレスの順序は、読み出される要素データ列Ｒ１〜Ｒ４に含まれる演算要素データ「Ａ」〜「Ｈ」のベクトルレジスタ８における格納順序、つまり、演算パイプライン１２＿３、１２＿４による処理順序に対応する。たとえば、アドレス順に示すと、バンク６＿４には、アドレス「0x30」に、演算要素データ「Ａ」を含む要素データ列Ｒ４が格納される。また、バンク６＿１には、アドレス「0x40」に、演算要素データ「Ｂ」及び「Ｃ」を含む要素データ列Ｒ１が格納される。また、バンク６＿２には、アドレス「0x50」に、演算要素データ「Ｄ」、「Ｅ」、及び「Ｆ」を含む要素データ列Ｒ２が格納される。そして、バンク６＿３には、アドレス「0x60」に、演算要素データ「Ｇ」及び「Ｈ」を含む要素データ列Ｒ３が格納される。
【００３８】
図８（Ｂ）には、アドレス生成部３０が生成するバンク６＿１〜６＿４ごとの読み出しアドレスｒＡＤＤが示される。たとえば、バンク６＿１については、読出しアドレス「0x40」が生成される。また、バンク６＿２については、読出しアドレス「0x50」が生成される。また、バンク６＿３については、読出しアドレス「0x60」が生成される。そして、バンク６＿４については、読出しアドレス「0x30」が生成される。
【００３９】
また、図８（Ｂ）には、アドレス生成部３０が生成する各種処理信号ＰＳが示される。各種処理信号ＰＳは、バンクイネーブル信号ＢＥ、要素イネーブル信号ＥＥ、バンクオフセット信号ＢＯである。バンクイネーブル信号ＢＥ、要素イネーブル信号ＥＥ、バンクオフセット信号ＢＯは、読出しアドレスｒＡＤＤに基づいて生成される。
【００４０】
バンクイネーブル信号ＢＥは、バンク６＿１〜６＿４ごとの読出しアドレスｒＡＤＤの有効性を示す。バンクイネーブル信号ＢＥは、たとえば１ビットの信号である。読出しアドレスｒＡＤＤが生成された場合には、バンクイネーブル信号ＢＥは有効性を示す値「１」となる。一方、読出しアドレスｒＡＤＤが生成されない場合には、バンクイネーブル信号ＢＥは値「０」となる。ここでは、バンク６＿１〜６＿４のすべてにおいて読出しアドレスｒＡＤＤが生成されている。よって、バンク６＿１〜６＿４のすべてについて、読出しアドレスｒＡＤＤの有効性を示す値「１」を有するバンクイネーブル信号ＢＥが生成される。
【００４１】
要素イネーブル信号ＥＥは、要素データ列Ｒ１〜Ｒ４における選択すべき演算要素データの位置を示す。要素データ列Ｒ１〜Ｒ４は、それぞれ８個の要素データを含む。よって、要素イネーブル信号は、各要素データ列Ｒ１〜Ｒ４について、たとえば８ビットの信号である。ここで、図面の右側から左側に列をカウントすると、たとえば、要素データ列Ｒ１には、１列目と２列目にそれぞれ演算要素データ「Ｂ」、「Ｃ」が含まれる。よって要素データ列Ｒ１に対応する要素イネーブル信号ＥＥの値は、１列目から８列目まで順に、「１、１、０、０、０、０、０、０」となる。また、要素データ列Ｒ２には、２列目から４列目に演算要素データ「Ｄ」、「Ｅ」、及び「Ｆ」が含まれる。よって要素データ列Ｒ２に対応する要素イネーブル信号ＥＥの値は、１列目から８列目まで順に、「０、１、１、１、０、０、０、０」となる。また、要素データ列Ｒ３には、４列目及び５列目に演算要素データ「Ｇ」及び「Ｈ」が含まれる。よって要素データ列Ｒ３に対応する要素イネーブル信号の値は、１列目から８列目まで順に、「０、０、０、１、１、０、０、０」となる。そして、要素データ列Ｒ４には、８列目に演算要素データ「Ａ」が含まれる。よって要素データ列Ｒ４に対応する要素イネーブル信号ＥＥの値は、１列目から８列目まで、順に「０、０、０、０、０、０、０、１」となる。
【００４２】
バンクオフセット信号ＢＯは、要素データ列Ｒ１〜Ｒ４に含まれる演算要素データの処理順序に対応する、バンク６＿１〜６＿４の順序を示す。バンクオフセット信号ＯＳの値は、各バンク６＿１〜６＿４の読出しアドレスｒＡＤＤの順序と、要素イネーブル信号ＥＥの積算値から、次のように求められる。
【００４３】
まず、バンク６＿１〜６＿４ごとの読出しアドレスｒＡＤＤの順序は、小さい方から次のような順序になる。
＜１番目＞バンク６＿４の読出しアドレスｒＡＤＤ（「0x30」）
＜２番目＞バンク６＿１の読出しアドレスｒＡＤＤ（「0x40」）
＜３番目＞バンク６＿２の読出しアドレスｒＡＤＤ（「0x50」）
＜４番目＞バンク６＿３の読出しアドレスｒＡＤＤ（「0x60」）
また、上記順序の各バンクの要素イネーブル信号ＥＥの積算値は、次のようになる。
＜１番目＞バンク６＿４の要素イネーブル信号ＥＥの積算値「１」
＜２番目＞バンク６＿１の要素イネーブル信号ＥＥの積算値「２」
＜３番目＞バンク６＿２の要素イネーブル信号ＥＥの積算値「３」
＜４番目＞バンク６＿３の要素イネーブル信号ＥＥの積算値「２」
そして、各バンクのバンクオフセット信号ＢＯの値は、１つ前の順番のバンクの、バンクオフセット信号ＢＯの値とイネーブル信号ＥＥの積算値の和として求められる。たとえば、次のとおりである。
＜１番目＞バンク６＿４のバンクオフセット信号ＢＯ＝「０」
＜２番目＞バンク６＿１のバンクオフセット信号ＢＯ
＝バンク６＿４のバンクオフセット信号ＢＯ「０」＋
バンク６＿４の要素イネーブル信号ＥＥの積算値「１」
＝「１」
＜３番目＞バンク６＿２のバンクオフセット信号ＢＯ
＝バンク６＿１のバンクオフセット信号ＢＯ「１」＋
バンク６＿１の要素イネーブル信号ＥＥの積算値「２」
＝「３」
＜４番目＞バンク６＿３のバンクオフセット信号ＢＯ
＝バンク６＿２のバンクオフセット信号ＢＯ「３」＋
バンク６＿２の要素イネーブル信号ＥＥの積算値「３」
＝「６」
図８（Ｃ）には、順序・位置信号生成部３２が生成する、バンク６＿１〜６＿４ごとの要素オフセット信号ＥＯ、順序信号Ｓ６、位置信号Ｓ４が示される。
【００４４】
要素オフセット信号ＥＯは、要素データ列Ｒ１〜Ｒ４ごとの、選択すべき演算要素データの順序を示す。要素オフセット信号ＥＯの値は、バンク６＿１〜６＿４ごとの要素イネーブル信号ＥＥの値を、アドレス順に積算して求められる。具体的には、次のとおりである。
＜バンク６＿１＞
演算要素データ「Ｂ」の要素オフセット信号ＥＯ
＝演算要素データ「Ｂ」の要素イネーブル信号ＥＥ「１」
演算要素データ「Ｃ」の要素オフセット信号ＥＯ
＝演算要素データ「Ｂ」の要素オフセット信号ＥＯ「１」
＋演算要素データ「Ｃ」の要素イネーブル信号ＥＥ「１」
＝「２」
＜バンク６＿２＞
演算要素データ「Ｄ」の要素オフセット信号ＥＯ
＝演算要素データ「Ｄ」の要素イネーブル信号ＥＥ「１」
演算要素データ「Ｅ」の要素オフセット信号ＥＯ
＝演算要素データ「Ｄ」の要素オフセット信号ＥＯ「１」
＋演算要素データ「Ｅ」の要素イネーブル信号ＥＥ「１」
＝「２」
演算要素データ「Ｆ」の要素オフセット信号ＥＯ
＝演算要素データ「Ｅ」の要素オフセット信号ＥＯ「２」
＋演算要素データ「Ｆ」の要素イネーブル信号ＥＥ「１」
＝「３」
＜バンク６＿３＞
演算要素データ「Ｇ」の要素オフセット信号ＥＯ
＝演算要素データ「Ｇ」の要素イネーブル信号ＥＥ「１」
演算要素データ「Ｈ」の要素オフセット信号ＥＯ
＝演算要素データ「Ｇ」の要素オフセット信号ＥＯ「１」
＋演算要素データ「Ｈ」の要素イネーブル信号ＥＥ「１」
＝「２」
＜バンク６＿４＞
演算要素データ「Ａ」の要素オフセット信号ＥＯ
＝演算要素データ「Ａ」の要素イネーブル信号ＥＥ「１」
次に、順序信号Ｓ６は、ベクトルレジスタ８における演算要素データの格納位置を示す。順序信号Ｓ６の値は、演算要素データが対応するバンクのバンクオフセット信号ＢＯの値と、演算要素データの要素オフセット信号ＥＯの値の和として求められる。具体的には、次のとおりである。
＜バンク６＿１＞
演算要素データ「Ｂ」の順序信号Ｓ６
＝バンク６＿１のバンクオフセット信号ＢＯ「１」
＋演算要素データ「Ｂ」の要素オフセット信号ＥＯ「１」
＝「２」
演算要素データ「Ｃ」の順序信号Ｓ６
＝バンク６＿１のバンクオフセット信号ＢＯ「１」
＋演算要素データ「Ｃ」の要素オフセット信号ＥＯ「２」
＝「３」
＜バンク６＿２＞
演算要素データ「Ｄ」の順序信号Ｓ６
＝バンク６＿２のバンクオフセット信号ＢＯ「３」
＋演算要素データ「Ｄ」の要素オフセット信号ＥＯ「１」
＝「４」
演算要素データ「Ｅ」の順序信号Ｓ６
＝バンク６＿２のバンクオフセット信号ＢＯ「３」
＋演算要素データ「Ｅ」の要素オフセット信号ＥＯ「２」
＝「５」
演算要素データ「Ｆ」の順序信号Ｓ６
＝バンク６＿２のバンクオフセット信号ＢＯ「３」
＋演算要素データ「Ｄ」の要素オフセット信号ＥＯ「３」
＝「６」
＜バンク６＿３＞
演算要素データ「Ｇ」の順序信号Ｓ６
＝バンク６＿３のバンクオフセット信号ＢＯ「６」
＋演算要素データ「Ｄ」の要素オフセット信号ＥＯ「１」
＝「７」
演算要素データ「Ｈ」の順序信号Ｓ６
＝バンク６＿２のバンクオフセット信号ＢＯ「６」
＋演算要素データ「Ｅ」の要素オフセット信号ＥＯ「２」
＝「８」
＜バンク６＿４＞
演算要素データ「Ａ」の順序信号Ｓ６
＝バンク６＿３のバンクオフセット信号ＢＯ「０」
＋演算要素データ「Ｄ」の要素オフセット信号ＥＯ「１」
＝「１」
ここにおいて、演算要素データ「Ａ」、「Ｂ」、「Ｃ」、「Ｄ」、「Ｅ」、「Ｆ」、「Ｇ」、「Ｈ」に、ベクトルレジスタ８に格納される順序「１」、「２」、「３」、「４」、「５」、「６」、「７」、「８」がそれぞれ対応付けられる。
【００４５】
位置信号Ｓ４は、データ要素列Ｒ１〜Ｒ４に含まれる３２個の要素データにおける、演算要素データ「Ａ」〜「Ｈ」の位置を示す。たとえば、３２個の要素データが要素データ列Ｒ１、Ｒ２、Ｒ３、Ｒ４の順にアドレス順に並べられたとして、「０」〜「３１」の値が昇順に割り当てられる。そして、順序信号Ｓ６が割り当てられた演算要素データ「Ａ」〜「Ｈ」に対し、対応する位置信号Ｓ４「１」〜「３２」のいずれかが割り当てられる。たとえば、次のとおりである。
＜要素データ列Ｒ１＞
演算要素データ「Ｂ」：順序信号「２」、位置信号「０」
演算要素データ「Ｃ」：順序信号「３」、位置信号「１」
＜要素データ列Ｒ２＞
演算要素データ「Ｄ」：順序信号「４」、位置信号「９」
演算要素データ「Ｅ」：順序信号「５」、位置信号「１０」
演算要素データ「Ｆ」：順序信号「６」、位置信号「１１」
＜要素データ列Ｒ３＞
演算要素データ「Ｇ」：順序信号「７」、位置信号「１９」
演算要素データ「Ｈ」：順序信号「８」、位置信号「２０」
＜要素データ列Ｒ４＞
演算要素データ「Ａ」：順序信号「１」、位置信号「３１」
ここにおいて、演算要素データ「Ａ」、「Ｂ」、「Ｃ」、「Ｄ」、「Ｅ」、「Ｆ」、「Ｇ」、「Ｈ」に、ベクトルレジスタ８に格納される順序「１」、「２」、「３」、「４」、「５」、「６」、「７」、「８」と、要素データＲ１、Ｒ２、Ｒ３、及びＲ４における位置とがそれぞれ対応付けられる。
【００４６】
次に、図７、図８を参照して、セレクタ部３４の動作について説明する。セレクタ部３４は、要素データ列Ｒ１〜Ｒ４から位置信号Ｓ４に基づいて演算要素データを選択し、選択した要素データを順序信号Ｓ６が示す格納順序でベクトルレジスタ８に格納する。具体的には、次のとおりである。セレクタ３４＿１〜３４＿８には、それぞれベクトルレジスタ８の格納順序「１」〜「８」の格納位置に対応する。そして、セレクタ３４＿１〜３４＿８は、それぞれ要素データ列Ｒ１〜Ｒ４の３２個の要素データが入力される。そして、セレクタ３４＿１〜３４＿８は、位置信号Ｓ４と順序信号Ｓ６とに基づいて、３２個の要素データから自らが対応する格納位置に格納すべき演算要素データを選択し、ベクトルレジスタ８に格納する。たとえば、セレクタ３４＿１〜３４＿８が対応する格納順序、順序信号Ｓ６の値、位置信号Ｓ４の値、及び格納する要素データの対応は、次のとおりである。
セレクタ３４＿１：格納順序「１」、順序信号「１」、位置信号「３１」、演算要素データ「Ａ」
セレクタ３４＿２：格納順序「２」、順序信号「２」、位置信号「０」、演算要素データ「Ｂ」
セレクタ３４＿３：格納順序「３」、順序信号「３」、位置信号「１」、演算要素データ「Ｃ」
セレクタ３４＿４：格納順序「４」、順序信号「４」、位置信号「９」、演算要素データ「Ｄ」
セレクタ３４＿５：格納順序「５」、順序信号「５」、位置信号「１０」、演算要素データ「Ｅ」
セレクタ３４＿６：格納順序「６」、順序信号「６」、位置信号「１１」、演算要素データ「Ｆ」
セレクタ３４＿７：格納順序「７」、順序信号「７」、位置信号「１９」、演算要素データ「Ｇ」
セレクタ３４＿８：格納順序「８」、順序信号「８」、位置信号「２０」、演算要素データ「Ｈ」
このようにして、バンク６＿１〜６＿４から読み出された要素データ列Ｒ１〜Ｒ４から、演算要素データ「Ａ」〜「Ｈ」が選択される。そして、図８（Ｄ）に示すように、演算要素データ「Ａ」〜「Ｈ」がベクトルレジスタ８に格納順序に従って格納される。
【００４７】
本実施形態によれば、バンク６＿１〜６＿４からは、３２個の要素データを含む要素データ列Ｒ１〜Ｒ４が１回のアクセスで読み出されるので、レイテンシが抑制される。一方で、上述のような方法により、要素データ列Ｒ１〜Ｒ４の３２個の要素データから、ベクトルレジスタ８に格納すべき８個の演算要素データが選択されて、処理順序でベクトルレジスタに格納される。よって、演算パイプライン１２＿３、１２＿４では、連続して要素データを処理できるので、良好なスループットを得ることができる。
【００４８】
なお、順序・位置信号生成部３２は、アドレス生成部３０から送られるバンクイネーブル信号ＢＥをセレクタ部３４に転送することが可能である。そうすることで、セレクタ部３４は、バンクイネーブル信号ＢＥが生成されたバンクから要素データ列が読み出されると、読み出された要素データ列から演算要素データを選択する。その一方、バンクイネーブル信号ＢＥが生成されないバンクからは要素データ列が読み出されないので、要素データ列から演算要素データを選択する動作を実行しないようにする。
【００４９】
図９は、読出しアドレスの有効性を示すバンクイネーブル信号ＢＥが生成されない例を示す。図９（Ａ）〜（Ｃ）では、図８（Ａ）〜（Ｃ）で示した各種信号が示される。
【００５０】
この例では、図９（Ａ）に示すように、バンク６＿２〜６＿４に分散して８個の演算要素データ「Ａ」〜「Ｈ」が格納される。たとえば、アドレス順に示すと、バンク６＿３には、アドレス「0x60」に、演算要素データ「Ａ」及び「Ｂ」を含む要素データ列Ｒ３が格納される。また、バンク６＿４には、アドレス「0x70」に、演算要素データ「Ｃ」、「Ｄ」、及び「Ｅ」を含む要素データ列Ｒ４が格納される。また、バンク６＿２には、アドレス「0x90」に、演算要素データ「Ｆ」、「Ｇ」、及び「Ｈ」を含む要素データ列Ｒ２が格納される。そして、ここでは、バンク６＿１には、演算要素データが格納されない。
【００５１】
よって、図９（Ｂ）に示すように、アドレス生成部３０により、バンク６＿３については、読出しアドレス「0x60」が生成される。また、バンク６＿４については、読出しアドレス「0x70」が生成される。また、バンク６＿２については、読出しアドレス「0x90」が生成される。そして、バンク６＿１については、読出しアドレスが生成されない。よって、バンク６＿２〜６＿４からは要素データ列Ｒ２〜Ｒ４が読み出され、バンク６＿１からは要素データ列Ｒ１が読み出されない。
【００５２】
ここで、読出しアドレスｒＡＤＤが生成されるバンク６＿２〜４についてのバンクイネーブル信号ＢＥは、有効を示す値「１」を有する。しかし一方で、読出しアドレスｒＡＤＤが生成されないバンク６＿１についてのバンクイネーブル信号ＢＥは、無効を示す値「０」となる。つまり、読出しアドレスｒＡＤＤの有効性を示すバンクイネーブル信号ＢＥが生成されない。このようなバンクイネーブル信号ＢＥが転送されることにより、セレクタ部３４は次のように動作する。なお、図９（Ｂ）の要素イネーブル信号ＥＥ、バンクオフセット信号ＢＯは、図８（Ｂ）で示した方法と同様にして求められ、図９（Ｃ）の要素オフセット信号ＥＯ、順序信号Ｓ６、及び位置信号Ｓ４は、図８（Ｃ）で示した方法と同様にして求められる。
【００５３】
セレクタ部３４のセレクタ３４＿１〜３４＿８は、それぞれ要素データ列Ｒ２〜Ｒ４の２４個の要素データが入力されたとき、バンクイネーブル信号ＢＥが生成されたバンク６＿２〜４に対応する要素データ列Ｒ２〜３に対し、要素データを選択する処理を行う。その一方、セレクタ部３４のセレクタ３４＿１〜３４＿８は、バンクイネーブル信号ＢＥが生成されないバンク６＿１に対応する要素データ列Ｒ１が入力されないので、要素データ列Ｒ１に対して行うはずであった演算要素データを選択する処理を行わない。そうすることで、電力の無駄な消費や処理負荷を軽減することができる。
【００５４】
そして、上記の処理の結果、図９（Ｄ）に示すように、演算要素データ「Ａ」〜「Ｈ」がベクトルレジスタ８に格納順序に従って格納される。
【００５５】
[ベクトルレジスタ８から演算要素データを読み出してデータメモリ６に書き込む場合]
図１０は、ベクトルレジスタ８から演算要素データを読み出してデータメモリ６に書き込むためのメモリ制御装置の構成を示す。メモリ制御装置は、要素データ列Ｒ１〜Ｒ４を書き込むためのバンク６＿１〜６＿４ごとの書込みアドレスｗＡＤＤを生成するアドレス生成部３０を有する。アドレス生成部３０は、たとえばロード・ストアパイプライン１２＿１、１２＿２内のモジュールである。アドレス生成部３０は、命令デコーダ４から入力されるアドレス生成用データ４ａに基づいて、書込みアドレスｗＡＤＤを生成する。アドレス生成部３０は、たとえば、シーケンシャルアクセスの場合の書込みアドレスｗＡＤＤを生成するシーケンシャルアドレス生成部３０＿１、インダイレクトアクセスの場合の書込みアドレスｗＡＤＤを生成するインダイレクトアドレス生成部３０＿２、及びストライドアクセスの場合の書込みアドレスｗＡＤＤを生成するストライドアドレス生成部３０＿３を有する。アドレス生成部３０が生成したバンク６＿１〜６＿４ごとの書込みアドレスｗＡＤＤは、たとえばレジスタ４０に一旦格納されてから、データメモリ６のバンク６＿１〜６＿４にそれぞれ入力される。その一方、アドレス生成部３０では、たとえば、シーケンシャルアドレス生成部３０＿１、インダイレクトアドレス生成部３０＿２、及びストライドアドレス生成部３０＿３により、各種処理信号ＰＳが生成される。そして、バンク６＿１〜６＿４ごとの書込みアドレスｗＡＤＤと各種処理信号ＰＳは、レジスタ３１に格納される。
【００５６】
メモリ制御装置は、演算パイプライン１２＿３、１２＿４による処理順序でベクトルレジスタ８に格納された、データメモリ６に書き込むべき演算要素データのベクトルレジスタ８における格納順序を示す順序信号Ｓ５と、バンク６＿１〜６＿４にそれぞれ書き込まれる要素データ列Ｒ１〜Ｒ４に書き込むべき要素データを挿入する位置を示す位置信号Ｓ７とを生成する順序・位置信号生成部３２を有する。順序・位置信号生成部３２は、たとえば、マルチプレクサ１４内のモジュールである。順序・位置信号生成部３２は、レジスタ３１に格納された書込みアドレスｗＡＤＤと各種処理信号ＰＳとを読み出し、これらに基づいて位置信号Ｓ７と順序信号Ｓ５とを生成する。その詳細については後述する。
【００５７】
また、メモリ制御装置は、バンク６＿１〜６＿４に書き込まれる要素データ列Ｒ１〜Ｒ４における位置信号Ｓ７が示す位置に、順序信号Ｓ５が示す順序で書き込むべき要素データを挿入するセレクタ部３５を有する。セレクタ部３５は、たとえば、マルチプレクサ１４に含まれる。セレクタ部３５は、たとえば、要素データ列Ｒ１〜Ｒ４に含まれる３２個の要素データごとのセレクタ３５＿１〜３５＿３２を有する。セレクタ３５＿１〜３５＿３２には、それぞれ、ベクトルレジスタ８から読み出される８個の演算要素データ８ａが入力される。演算要素データ８ａは、たとえばレジスタ４４に一旦格納されてから、セレクタ３５＿１〜３５＿３２に入力される。そして、セレクタ３５＿１〜３５＿３２は、位置信号Ｓ７と順序信号Ｓ５とに基づいて、８個の演算要素データ８ａから自らが対応する位置に挿入すべき演算要素データを選択し、要素データ列Ｒ１〜Ｒ４に挿入する。
【００５８】
さらに、セレクタ部３５は、たとえば命令デコーダ４からデータマスク信号ＤＭが入力される。データマスク信号ＤＭは、演算要素データのデータメモリ６への書込みの許可・不許可を示す。データマスク信号ＤＭは、たとえば８ビットの信号である。各ビットは、８個の要素データ８ａの書込み許可・不許可を示す。データマスク信号ＤＭは、たとえばレジスタ４２に一旦格納されてから、セレクタ部３５に入力される。
【００５９】
セレクタ部３５は、データマスク信号ＤＭに基づいて、３２ビットのデータマスク信号ＤＭ２を生成する。データマスク信号ＤＭ２は、バンク６＿１〜６＿４に、要素データ列Ｒ１〜Ｒ４の書き込みの許可・不許可を指示するための信号である。各ビットは、要素データ列Ｒ１〜Ｒ４に含まれる３２個の要素データに対応する。セレクタ部３５は、データマスク信号ＤＭ２を生成する３２個のセレクタ３６＿１〜３６＿３２を有する。セレクタ３６＿１〜３６＿３２は、それぞれ要素データ列Ｒ１〜Ｒ４に含まれる３２個の要素データに対応する。セレクタ３６＿１〜３６＿３２には、それぞれ８ビットのデータマスク信号ＤＭが入力される。そして、セレクタ３６＿１〜３６＿３２は、位置信号Ｓ７と順序信号Ｓ５とに基づいて、自らが対応する位置への要素データの挿入許可・不許可を示す値（「１」または「０」）を生成する。このようにして８ビットのデータマスク信号ＤＭ２が生成される。データマスク信号ＤＭ２は、バンク６＿１〜６＿４に入力される。
【００６０】
データメモリ６では、バンク６＿１〜６＿４が、それぞれ要素データ列Ｒ１〜Ｒ４を書込みアドレスｗＡＤＤに書き込む。その際、データマスク信号ＤＭ２により許可された要素データのみが書き込まれる。データマスク信号ＤＭ２を用いることで、データメモリ６においてデータが破壊されたり不整合が生じたりすることを防止できる。
【００６１】
図１１は、順序・位置所信号生成部３２の詳細な動作を説明するための図である。図１１（Ａ）には、アドレス生成部３０が生成するバンク６＿１〜６＿４ごとの書込みアドレスｗＡＤＤが示される。たとえば、バンク６＿１については、書込みアドレス「0x40」が生成される。また、バンク６＿２については、書込みアドレス「0x50」が生成される。また、バンク６＿３については、書込みアドレス「0x60」が生成される。そして、バンク６＿４については、書込みアドレス「0x30」が生成される。
【００６２】
上記書込みアドレスｗＡＤＤは、バンク６＿１〜６＿４に、図１１（Ｅ）に示すように要素データ列Ｒ１〜Ｒ４を書き込むための書込みアドレスｗＡＤＤである。要素データ列Ｒ１〜Ｒ４には、８個の演算要素データ「Ａ」、「Ｂ」、「Ｃ」、「Ｄ」、「Ｅ」、「Ｆ」、「Ｇ」、「Ｈ」が含まれる。ここでは、図面の右から左へ、かつ、上から下へアドレスが昇順に変化する。バンク６＿１〜６＿４に書き込まれる演算要素データ「Ａ」〜「Ｈ」のアドレス順は、ベクトルレジスタ８における格納順、つまり、演算パイプライン１２＿３、１２＿４による処理順序に対応する。
【００６３】
また、図１１（Ａ）には、アドレス生成部３０が生成する各種処理信号ＰＳが示される。各種処理信号ＰＳは、バンクイネーブル信号ＢＥ、要素イネーブル信号ＥＥ、バンクオフセット信号ＢＯである。バンクイネーブル信号ＢＥ、要素イネーブル信号ＥＥ、バンクオフセット信号ＢＯは、書込みアドレスｗＡＤＤに基づいて生成される。
【００６４】
バンクイネーブル信号ＢＥは、バンク６＿１〜６＿４ごとの書込みアドレスｗＡＤＤの有効性を示す。バンクイネーブル信号ＢＥは、たとえば１ビットの信号である。書込みアドレスｗＡＤＤが生成された場合には、バンクイネーブル信号ＢＥは有効性を示す値「１」となる。一方、書込みアドレスｒＡＤＤが生成されない場合には、バンクイネーブル信号ＢＥは値「０」となる。ここでは、バンク６＿１〜６＿４のすべてにおいて書込みアドレスｗＡＤＤが生成されている。よって、バンク６＿１〜６＿４のすべてについて、書込みアドレスｗＡＤＤの有効性を示す値「１」を有するバンクイネーブル信号ＢＥが生成される。
【００６５】
要素イネーブル信号ＥＥは、要素データ列Ｒ１〜Ｒ４に挿入すべき演算要素データの位置を示す。たとえば、図１１（Ｄ）に示すように、要素データ列Ｒ１には、１列目と２列目にそれぞれ演算要素データ「Ｂ」、「Ｃ」が挿入される。よって、要素イネーブル信号ＥＥの値は、１列目から８列目まで順に、「１、１、０、０、０、０、０、０」となる。また、要素データ列Ｒ２には、２列目から４列目に演算要素データ「Ｄ」、「Ｅ」、及び「Ｆ」が挿入される。よって要素データ列Ｒ２に対応する要素イネーブル信号ＥＥの値は、１列目から８列目まで順に、「０、１、１、１、０、０、０、０」となる。また、要素データ列Ｒ３には、４列目及び５列目に演算要素データ「Ｇ」及び「Ｈ」が挿入される。よって要素データ列Ｒ３に対応する要素イネーブル信号の値は、１列目から８列目まで順に、「０、０、０、１、１、０、０、０」となる。そして、要素データ列Ｒ４には、８列目に演算要素データ「Ａ」が挿入される。よって要素データ列Ｒ４に対応する要素イネーブル信号ＥＥの値は、１列目から８列目まで、順に「０、０、０、０、０、０、０、１」となる。
【００６６】
バンクオフセット信号ＢＯは、要素データ列Ｒ１〜Ｒ４に挿入すべき演算要素データの順序に対応する、バンク６＿１〜６＿４の順序を示す。バンクオフセット信号ＢＯの値は、各バンク６＿１〜６＿４の読出しアドレスｗＡＤＤの順序と、要素イネーブル信号ＥＥの積算値から求められる。具体的な方法は、図８（Ｂ）で示したとおりである。
【００６７】
図１１（Ｂ）には、順序・位置信号生成部３２が生成する、バンク６＿１〜６＿４ごとの要素オフセット信号ＥＯ、順序信号Ｓ５、位置信号Ｓ７が示される。要素オフセット信号ＥＯは、要素データ列Ｒ１〜Ｒ４ごとの、挿入すべき演算要素データの順序を示す。要素オフセット信号ＥＯの値は、バンク６＿１〜６＿４ごとの要素イネーブル信号ＥＥの値を、アドレス順に積算して求められる。具体的な方法は、図８（Ｃ）に示したとおりである。
【００６８】
順序信号Ｓ５は、ベクトルレジスタ８における演算要素データの格納位置を示す。ベクトルレジスタ８における格納順序「１」〜「８」と演算要素データ「Ａ」〜「Ｈ」の対応が、図１１（Ｃ）に示される。なお、図１１（Ｃ）には、各演算要素データの書込みの許可・不許可を規定するデータマスク信号ＤＭが示される。順序信号Ｓ５の値は、演算要素データが対応するバンクのバンクオフセット信号ＢＯの値と、演算要素データの要素オフセット信号ＥＯの値の和として求められる。具体的な方法は、図８（Ｃ）で示したとおりである。
【００６９】
ここにおいて、演算要素データ「Ａ」、「Ｂ」、「Ｃ」、「Ｄ」、「Ｅ」、「Ｆ」、「Ｇ」、「Ｈ」に、ベクトルレジスタ８に格納された順序「１」、「２」、「３」、「４」、「５」、「６」、「７」、「８」がそれぞれ対応付けられる。
【００７０】
位置信号Ｓ７は、データ要素列Ｒ１〜Ｒ４の３２個の要素データにおける、演算要素データ「Ａ」〜「Ｈ」を挿入すべき挿入位置を示す。たとえば、３２個の要素データが要素データ列Ｒ１、Ｒ２、Ｒ３、Ｒ４の順にアドレス順に並べられ、「０」〜「３１」の値が昇順に割り当てられる。そして、順序信号Ｓ５が割り当てられた演算要素データ「Ａ」〜「Ｈ」に対し、対応する位置信号「１」〜「３２」のいずれかが割り当てられる。たとえば、次のとおりである。
＜要素データ列Ｒ１＞
挿入すべき演算要素データ「Ｂ」：順序信号「２」、位置信号「０」
挿入すべき演算要素データ「Ｃ」：順序信号「３」、位置信号「１」
＜要素データ列Ｒ２＞
挿入すべき演算要素データ「Ｄ」：順序信号「４」、位置信号「９」
挿入すべき演算要素データ「Ｅ」：順序信号「５」、位置信号「１０」
挿入すべき演算要素データ「Ｆ」：順序信号「６」、位置信号「１１」
＜要素データ列Ｒ３＞
挿入すべき演算要素データ「Ｇ」：順序信号「７」、位置信号「１９」
挿入すべき演算要素データ「Ｈ」：順序信号「８」、位置信号「２０」
＜要素データ列Ｒ４＞
挿入すべき演算要素データ「Ａ」：順序信号「１」、位置信号「３１」
ここにおいて、演算要素データ「Ａ」、「Ｂ」、「Ｃ」、「Ｄ」、「Ｅ」、「Ｆ」、「Ｇ」、「Ｈ」と、ベクトルレジスタ８に格納された順序「１」、「２」、「３」、「４」、「５」、「６」、「７」、「８」と、要素データＲ１、Ｒ２、Ｒ３、及びＲ４における挿入位置とがそれぞれ対応付けられる。
【００７１】
次に、図１０、図１１を参照して、セレクタ部３５の動作について説明する。セレクタ部３５は、複数のバンク６＿１〜６＿４に書き込まれる要素データ列Ｒ１〜Ｒ４における位置信号Ｓ５が示す位置に、順序信号Ｓ５が示す順序で書き込むべき要素データを挿入する。具体的には、次のとおりである。
【００７２】
セレクタ３５＿１〜３５＿３２は、それぞれ要素データ列Ｒ１〜Ｒ４における３２個の要素データの位置「０」〜「３１」に対応する。セレクタ３５＿１〜３５＿３２は、ベクトルレジスタ８から読み出された８個の演算要素データ８ａ、つまり「Ａ」〜「Ｈ」が入力される。そして、セレクタ３５＿１〜３５＿３２は、位置信号Ｓ７と順序信号Ｓ５とに基づいて、８個の演算要素データ８ａから自らが対応する挿入位置に挿入すべき演算要素データを選択し、要素データ列Ｒ１〜Ｒ４に挿入する。たとえば、セレクタ３５＿１〜３５＿３２のうち、演算要素データ「Ａ」〜「Ｈ」を挿入するセレクタの順序信号Ｓ５の値、位置信号Ｓ７の値、及び挿入する要素データの対応は、次のとおりである。
＜セレクタ３５＿２＞  順序信号「２」、位置信号「０」、演算要素データ「Ｂ」
＜セレクタ３５＿３＞  順序信号「３」、位置信号「１」、演算要素データ「Ｃ」
＜セレクタ３５＿９＞  順序信号「４」、位置信号「９」、演算要素データ「Ｄ」
＜セレクタ３５＿１０＞  順序信号「５」、位置信号「１０」、演算要素データ「Ｅ」
＜セレクタ３５＿１１＞  順序信号「６」、位置信号「１１」、演算要素データ「Ｆ」
＜セレクタ３５＿１９＞  順序信号「７」、位置信号「１９」、演算要素データ「Ｇ」
＜セレクタ３５＿２０＞  順序信号「８」、位置信号「２０」、演算要素データ「Ｈ」
＜セレクタ３５＿３１＞  順序信号「１」、位置信号「３１」、演算要素データ「Ａ」
なお、上記以外のセレクタ３５＿１、３５＿４〜８、３５＿１２〜１８、３５＿２１〜３０は、順序信号「０」が対応し、したがって挿入すべき演算要素データが対応しないので、挿入を行わない。このようにして、ベクトルレジスタ８から読み出された演算要素データ「Ａ」〜「Ｈ」が、要素データ列Ｒ１〜Ｒ４に挿入される。
【００７３】
図１１（Ｄ）には、演算要素データ「Ａ」〜「Ｈ」が挿入されたデータ列Ｒ１〜Ｒ４が示される。また、図１１（Ｄ）には、図１１（Ｃ）のデータマスク信号ＤＭから生成されたデータマスク信号ＤＭ２が示される。データマスク信号ＤＭ２は、３２ビットの信号である。書込みが許可されるデータ要素に対応するビットの値が「０」、書込みが許可されないデータ要素に対応するビットの値が「１」である。ここでは、データ要素「Ｂ」、「Ｄ」、「Ｆ」の書込みが不許可の場合が示される。
【００７４】
上記のようにして演算要素データ「Ａ」〜「Ｈ」が挿入された要素データ列Ｒ１〜Ｒ４が、図１１（Ｅ）に示すように、バンク６＿１〜６＿４に１回のアクセスで書き込まれる。よって、レイテンシが抑制される。また、その際、要素データの書込みを許可・不許可できるので、データメモリ６のデータを保護できる。なお、図１１（Ｅ）では、書込み不許可の演算要素データは「×」印が付されている。また、一方で、演算パイプライン１２＿３、１２＿４は、連続して要素データを処理して演算結果を出力できるので、パイプラインストールを低減できる。よって、良好なスループットを得ることができる。
【００７５】
なお、順序・位置信号生成部３２は、アドレス生成部３０から送られるバンクイネーブル信号ＢＥをセレクタ部３５に転送することが可能である。セレクタ部３５は、バンクイネーブル信号ＢＥが生成されたバンクに書き込まれる要素データ列に、演算要素データを挿入する。その一方、セレクタ部３５は、バンクイネーブル信号ＢＥが生成されないバンクには要素データ列が書き込まれないので、演算要素データを挿入する処理を行わないようにする。
【００７６】
図１２は、書込みアドレスの有効性を示すバンクイネーブル信号ＢＥが生成されない例を示す。図１２（Ａ）〜（Ｅ）では、図１１（Ａ）〜（Ｅ）で示した各種信号が示される。
【００７７】
この例では、図１２（Ｅ）に示すように、バンク６＿２〜４に分散して８個の演算要素データ「Ａ」〜「Ｈ」が書き込まれる。たとえば、アドレス順に示すと、バンク６＿３には、アドレス「0x60」に、演算要素データ「Ａ」及び「Ｂ」を含む要素データ列Ｒ３が書き込まれる。また、バンク６＿４には、アドレス「0x70」に、演算要素データ「Ｃ」、「Ｄ」、及び「Ｅ」を含む要素データ列Ｒ４が書き込まれる。また、また、バンク６＿２には、アドレス「0x90」に、演算要素データ「Ｆ」、「Ｇ」、及び「Ｈ」を含む要素データ列Ｒ２が書き込まれる。そして、バンク６＿１には、要素データが書き込まれない。
【００７８】
よって、図１２（Ａ）に示すように、アドレス生成部３０により、バンク６＿２、６＿３、及び６＿４については、それぞれ書込みアドレス「0x90」、「0x60」、及び「0x70」が生成される。そして、バンク６＿１については、書込みアドレスが生成されない。すると、書込みアドレスｗＡＤＤが生成されるバンク６＿２〜４についてのバンクイネーブル信号ＢＥは、有効を示す値「１」を有する。しかし一方で、書込みアドレスｗＡＤＤが生成されないバンク６＿１についてのバンクイネーブル信号ＢＥは、無効を示す値「０」となる。つまり、書込みアドレスｗＡＤＤの有効性を示すバンクイネーブル信号ＢＥが生成されない。
【００７９】
このようなバンクイネーブル信号ＢＥが転送されることにより、セレクタ部３５は次のように動作する。なお、図１２（Ａ）の要素イネーブル信号ＥＥ、バンクオフセット信号ＢＯは、図１１（Ａ）で示した方法と同様にして求められ、図１２（Ｂ）の要素オフセット信号ＥＯ、順序信号Ｓ５、及び位置信号Ｓ７は、図１１（Ｂ）で示した方法と同様にして求められる。
【００８０】
セレクタ部３５のセレクタ３５＿１〜３５＿３２は、それぞれ８個の演算要素データ「Ａ」〜「Ｈ」が入力されたとき、バンクイネーブル信号ＢＥが生成されたバンク６＿２〜４に対応する要素データ列Ｒ２〜３に対しては、図１２（Ｂ）に示す順序信号Ｓ５と位置信号Ｓ７とに基づいて要素データを挿入する処理を行う。しかしその一方、セレクタ３５＿１〜３２は、バンクイネーブル信号ＢＥが生成されないバンク６＿１に対応する要素データ列Ｒ１に対しては要素データを挿入する処理を行わない。そうすることで、電力の無駄な消費や処理負荷を軽減することができる。
【００８１】
上記の結果、図１２（Ｃ）で示すようにベクトルレジスタ８に格納された演算要素データが、図１２（Ｅ）で示すようにデータメモリ６の各バンクに書き込まれる。また、その際、図１２（Ｃ）で示すマスクデータ信号ＤＭにより演算要素データの書き込みが許可または不許可される。
【００８２】
上述したベクトルプロセッサ１は、たとえば、携帯通信端末に搭載され、ベースバンド信号を要素データとしてＦＦＴ（Fast Fourier Transforms）処理などを行う信号処理装置に適用される。あるいは、これに限定されず、たとえば画素データを要素データとして画像処理を行う画像処理装置などにも適用することができる。本実施形態によれば、データメモリの不連続なアドレスにアクセスして要素データを読み書きする場合であっても、最小限の回路構成により良好なスループットを得ることができる。
【００８３】
以上の実施の形態をまとめると、次の付記のとおりである。
【００８４】
（付記１）  
読出しアドレスの入力に応答して複数の要素データを有する要素データ列が読み出される複数のバンクを有するメモリから、前記要素データ列を読み出すためのバンクごとの前記読出しアドレスを生成する第１の生成部と、
前記要素データ列における選択すべき要素データの位置を示す位置信号と、前記選択すべき要素データをレジスタに格納する格納順序を示す順序信号とを生成する第２の生成部と、
前記複数のバンクからそれぞれ読み出された前記要素データ列から前記位置信号に基づいて前記選択すべき要素データを選択し、当該選択した要素データを前記順序信号が示す格納順序で前記レジスタに格納するセレクタ部とを有し、
前記レジスタに格納された要素データは、前記格納順序でベクトルプロセッサに処理される、メモリ制御装置。
【００８５】
（付記２）  
付記１において、
前記読出しアドレスの有効性を示すイネーブル信号をさらに生成し、
前記セレクタ部は、前記イネーブル信号が生成されたバンクから読み出される前記要素データ列から前記選択すべき要素データを選択し、前記イネーブル信号が生成されないバンクから読み出される前記要素データ列から前記選択すべき要素データを選択しないメモリ制御装置。
【００８６】
（付記３）  
付記１または２において、
前記バンクごとの読出しアドレスの順序は、当該読出しアドレスにより読み出される前記要素データ列に含まれる前記選択すべき要素データの前記格納順に対応し、
前記第２の生成部は、前記バンクごとの読出しアドレスに基づいて生成される、前記複数のバンクから読み出される要素データ列の順序を示す第１のオフセット信号と、前記複数のバンクから読み出される要素データ列ごとの前記選択すべき要素データの順序を示す第２のオフセット信号とに基づいて前記順序信号を生成するメモリ制御装置。
【００８７】
（付記４）
複数の要素データを有する要素データ列が、入力された書込みアドレスに書き込まれる複数のバンクを有するメモリに、前記要素データ列を書き込むためのバンクごとの書込みアドレスを生成する第１の生成部と、
ベクトルプロセッサによる処理順序でレジスタに格納された、前記メモリに書き込むべき要素データの当該レジスタにおける格納順序を示す順序信号と、前記複数のバンクにそれぞれ書き込まれる要素データ列に前記書き込むべき要素データを挿入する位置を示す位置信号とを生成する第２の生成部と、
前記複数のバンクに書き込まれる要素データ列における前記位置信号が示す位置に、前記順序信号が示す順序で前記書き込むべき要素データを挿入するセレクタ部とを有し、
前記書き込むべき要素データ列が格納された要素データ列が、前記バンクごとの書込みアドレスに書き込まれる、メモリ制御装置。
【００８８】
（付記５）  
付記４において、
前記第１の生成部は、前記書込みアドレスの有効性を示すイネーブル信号をさらに生成し、
前記セレクタ部は、前記イネーブル信号が生成されたバンクに書き込まれる前記要素データ列に前記書き込むべき要素データを挿入し、前記イネーブル信号が生成されないバンクに書き込まれる前記要素データ列に前記書き込むべき要素データを挿入しないメモリ制御装置。
【００８９】
（付記６）  
付記４または５において、
前記セレクタ部は、前記書き込むべき要素データの書込みの許可・不許可を示すマスク信号に基づいて、前記書込みが許可された前記書き込むべき要素データを前記複数のバンクに書き込まれる要素データ列に挿入し、前記書込みが不許可の前記書込むべき要素データを前記複数のバンクに書き込まれる要素データ列に挿入しない、メモリ制御装置。
【００９０】
（付記７）  
付記４乃至６のいずれかにおいて、
前記バンクごとの書込みアドレスの順序は、当該書込みアドレスに書き込まれる前記要素データ列に含まれる前記書き込むべき要素データの前記格納順に対応し、
前記第２の生成部は、前記バンクごとの書込みアドレスに基づいて生成される、前記複数のバンクに書き込まれる要素データ列の順序を示す第１のオフセット信号と、前記複数のバンクに書き込まれる要素データ列ごとの前記書き込むべき要素データの順序を示す第２のオフセット信号とに基づいて前記順序信号を生成する、メモリ制御装置。
【００９１】
（付記８）  
読出しアドレスの入力に応答して複数の要素データを有する要素データ列が読み出される複数のバンクを有するメモリから、前記要素データ列を読み出すためのバンクごとの前記読出しアドレスを生成し、
前記要素データ列における選択すべき要素データの位置を示す位置信号と、前記選択すべき要素データをレジスタに格納する格納順序を示す順序信号とを生成し、
前記複数のバンクからそれぞれ読み出された前記要素データ列から前記位置信号に基づいて前記選択すべき要素データを選択し、当該選択した要素データを前記順序信号が示す格納順序で前記レジスタに格納し、
前記レジスタに格納された要素データは、前記格納順序に対応する単位でベクトルプロセッサに処理される、  
メモリ制御方法。
【００９２】
（付記９）
複数の要素データを有する要素データ列が、入力された書込みアドレスに書き込まれる複数のバンクを有するメモリに、前記要素データ列を書き込むためのバンクごとの書込みアドレスを生成し、
ベクトルプロセッサによる処理単位に対応する順序でレジスタに格納された、前記メモリに書き込むべき要素データの当該レジスタにおける格納理順序を示す順序信号と、前記複数のバンクにそれぞれ書き込まれる要素データ列に前記書き込むべき要素データを挿入する位置を示す位置信号とを生成し、
前記複数のバンクに書き込まれる要素データ列における前記位置信号が示す位置に、前記順序信号が示す順序で前記書き込むべき要素データを挿入し、
前記書き込むべき要素データ列が格納された要素データ列が、前記バンクごとの書込みアドレスに書き込まれる、  
メモリ制御方法。
【符号の説明】
【００９３】
１：ベクトルプロセッサ、  ６：データメモリ、  ６＿１〜６＿４：バンク、
８：ベクトルレジスタ、  １２：ベクトルパイプライン、  ３０：アドレス生成部、
３２：順序・位置信号生成部、  ３４、３５：セレクタ部
【図１】
0005658556.tif 000002
【図２】
0005658556.tif 000003
【図３】
0005658556.tif 000004
【図４】
0005658556.tif 000005
【図５】
0005658556.tif 000006
【図６】
0005658556.tif 000007
【図７】
0005658556.tif 000008
【図８】
0005658556.tif 000009
【図９】
0005658556.tif 000010
【図１０】
0005658556.tif 000011
【図１１】
0005658556.tif 000012
【図１２】
0005658556.tif 000013