(57)【要約】【課題】配列に対するアクセスパターンに応じて、データメモリにおける配列のデータのバンク配置を制御可能にする。【解決手段】複数のバンクを有するデータメモリとデータメモリへのアクセスを行うプロセッサとを有し、プロセッサに入力されたアクセス命令が、配列のデータを配置するバンクの振り分けを指定する指定情報を含むアクセス命令である場合には、プロセッサが、指定情報により指定されるバンクの振り分けに応じて、アクセス命令で指定される配列のインデックスを変換し、変換したインデックスに基づいてバンクの選択を行い、配列に係るデータメモリへのアクセスを行うようにして、配列のデータのバンク配置をアクセスパターンに応じた配置にする。【選択図】図３
2014241107.tif 000002
【特許請求の範囲】
【請求項１】
複数のバンクを有するデータメモリと、
前記データメモリへのアクセス命令に応じてアクセスを行うプロセッサとを有し、
前記プロセッサは、
入力された前記アクセス命令が、配列のデータを配置する前記データメモリのバンクの振り分けを指定する指定情報を含むアクセス命令である場合には、前記指定情報により指定されるバンクの振り分けに従って前記バンクの選択を行い、前記配列に係る前記データメモリへのアクセスを行うことを特徴とする半導体装置。
【請求項２】
前記プロセッサは、
入力された前記アクセス命令で指定される配列のインデックスを、前記指定情報により指定されるバンクの振り分けに応じて変換するインデックス変換部を有し、
前記アクセス命令が前記指定情報を含むアクセス命令である場合には、変換したインデックスに基づいて前記バンクの選択を行い、前記配列に係る前記データメモリへのアクセスを行うことを特徴とする請求項１記載の半導体装置。
【請求項３】
前記インデックス変換部は、
配列のインデックスと前記配列のデータを配置する前記バンクとの対応関係を示すテーブルと、
前記指定情報に応じて選択した前記テーブルを参照して、前記アクセス命令で指定される配列のインデックスを変換する変換部とを有することを特徴とする請求項２記載の半導体装置。
【請求項４】
前記インデックス変換部が有する前記テーブルには、配列のインデックスの下位ビットの値と前記配列のデータを配置する前記バンクとが一意に対応するテーブルを含むことを特徴とする請求項３記載の半導体装置。
【請求項５】
前記プロセッサは、
前記アクセス命令が、前記指定情報を含むアクセス命令である場合には、変換したインデックスを選択し、前記指定情報を含むアクセス命令でない場合には、前記アクセス命令で指定される配列のインデックスを選択する選択部を有し、
前記選択部により選択したインデックスに基づいて前記バンクの選択を行い、前記配列に係る前記データメモリへのアクセスを行うことを特徴とする請求項２記載の半導体装置。
【請求項６】
複数のバンクを有するデータメモリと、前記データメモリへのアクセス命令に応じてアクセスを行うプロセッサとを有する半導体装置の制御方法であって、
入力された前記アクセス命令が、配列のデータを配置する前記データメモリのバンクの振り分けを指定する指定情報を含むアクセス命令である場合に、前記指定情報により指定されるバンクの振り分けに応じて、前記アクセス命令で指定される配列のインデックスを変換する工程と、
変換したインデックスに基づいて前記バンクの選択を行い、前記配列に係る前記データメモリへのアクセスを行う工程とを有することを特徴とする半導体装置の制御方法。
【請求項７】
前記配列のインデックスを変換する工程は、
前記指定情報に応じて、配列のインデックスと前記配列のデータを配置する前記バンクとの対応関係を示すテーブルを選択する工程と、
選択した前記テーブルを参照して、前記アクセス命令で指定される配列のインデックスを変換する工程とを有することを特徴とする請求項６記載の半導体装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、半導体装置及び半導体装置の制御方法に関する。
【背景技術】
【０００２】
プロセッサのデータメモリの実装方法の１つに、バンクインターリーブ方式がある。バンクインターリーブ方式では、一般には２の累乗個の複数のバンク（メモリバンク）に対応するデータメモリがプロセッサに接続される。バンクインターリーブ方式において、アドレスは、図８（Ａ）に示すように各バンクの深さ方向に連続するように割り振るのではなく、図８（Ｂ）に示すようにバンクをまたいで横方向に連続するように割り振る。バンクインターリーブ方式では、例えば、アドレスの下位ビット（４バンクであれば下位２ビット、８バンクであれば下位３ビット）で、アドレスに対応するバンクが一意に決まる。
【０００３】
図８（Ａ）及び図８（Ｂ）は、データメモリの実装方法の例を示す図である。図８（Ａ）及び図８（Ｂ）には、４つのバンクを有する例を示しており、８１０はプロセッサであり、８２０−ｐはデータメモリ（バンクｐ）（ｐ＝０、１、２、３）である。プロセッサ８１０は、データメモリ（バンクｐ）８２０−ｐとの間でデータを入出力するためのレジスタ等を含むインタフェース８１１−ｐを、データメモリ（バンクｐ）８２０−ｐの各々に対応して有しており、データメモリ（バンクｐ）８２０−ｐ毎に独立してアクセスすることが可能である。
【０００４】
バンクインターリーブ方式は、配列等の連続に並んだデータに順にアクセスする連続アクセス（シーケンシャルアクセス）が速いという利点がある。例えば、図８（Ｃ）に示すように、連続したアドレスの領域に記憶された配列ｄａｔａのデータ（要素）を、ｄａｔａ［０］、ｄａｔａ［１］、ｄａｔａ［２］、・・・、ｄａｔａ［１５］というように順に読み出して加算し、総和ｓｕｍを求める処理を行うとする。
【０００５】
図８（Ａ）に示したデータメモリの実装方式では、例えばｄａｔａ［０］とｄａｔａ［１］とは同じデータメモリ（バンク０）８２０−０上に存在しているため、同時に読み出すことができない。つまり、図８（Ａ）に示したデータメモリの実装方式では、図８（Ｃ）に示した処理のほとんどで１サイクルに１つのデータを読み出すことしかできないため、ｄａｔａ［０］〜ｄａｔａ［１５］のすべての読み出しに１３サイクルを要する。
【０００６】
それに対して、図８（Ｂ）に示したバンクインターリーブ方式では、例えばｄａｔａ［０］、ｄａｔａ［１］、ｄａｔａ［２］、及びｄａｔａ［３］は、異なるデータメモリ（バンクｐ）８２０−ｐ上に存在しているため、同時に読み出すことができる。つまり、図８（Ｂ）に示したバンクインターリーブ方式では、図８（Ｃ）に示した処理を行う際に１サイクルに４つのデータを読み出すことが可能であるため、ｄａｔａ［０］〜ｄａｔａ［１５］のすべての読み出しに４サイクルしか要しない。
【０００７】
また、例えば配列のデータを順に書き込むシーケンシャルアクセスにおいても、図８（Ａ）に示した実装方式では１サイクルに１つのデータを書き込むことしかできない。それに対して、図８（Ｂ）に示したバンクインターリーブ方式では、１サイクルに４つのデータを書き込むことが可能である。
【０００８】
複数のプロセッサと共有メモリとを有し、メモリへのアクセス命令におけるアクセスアドレスを基に、そのアクセス命令を行うプロセッサがアクセスするメモリ領域を、アクセスアドレスに局所性がある場合にはスタック式に割り当て、アクセスアドレスに局所性がない場合にはインターリーブ式に割り当てるようにした装置が提案されている（例えば、特許文献１参照）。また、インターリーブされたアドレスを備えたメモリのバンクを複数有するマルチバンクメモリ型のメモリシステムが提案されている（例えば、特許文献２、３参照）。メモリシステムにおける並行性を向上させるために、複数のメモリアクセス要求を再順序付けする技術が提案されている（例えば、特許文献３参照）。
【先行技術文献】
【特許文献】
【０００９】
【特許文献１】特開２００８−２３４１５６号公報
【特許文献２】特表２００３−５２０３６８号公報
【特許文献３】特開平１０−２２８４１７号公報
【発明の概要】
【発明が解決しようとする課題】
【００１０】
前述したようにバンクインターリーブ方式は、配列のデータに順にアクセスするシーケンシャルアクセスが速いという利点がある。しかし、アプリケーションによっては、配列に対して、シーケンシャルアクセスだけでなく、連続しない順序でアクセスすることもある。例えば、無線通信の信号処理アプリケーションや暗号化アプリケーションでは、シーケンシャルアクセスだけでなく、特殊な順序のアクセスパターンでアクセスすることがある。シーケンシャルアクセスではない特殊な順序でのアクセスでは、バンクインターリーブ方式の利点が活かせないことがあり、１サイクルあたり１つのデータしかデータメモリに対する読み出しや書き込みが行えなくなってしまうことも考えられる。
【００１１】
本発明は、配列に対するアクセスパターンに応じて、データメモリにおける配列のデータのバンク配置を制御できるようにすることを目的とする。
【課題を解決するための手段】
【００１２】
半導体装置の一態様は、複数のバンクを有するデータメモリと、データメモリへのアクセス命令に応じてアクセスを行うプロセッサとを有する。プロセッサは、入力されたアクセス命令が、配列のデータを配置するデータメモリのバンクの振り分けを指定する指定情報を含むアクセス命令である場合には、指定情報により指定されるバンクの振り分けに従ってバンクの選択を行い、配列に係るデータメモリへのアクセスを行う。
【発明の効果】
【００１３】
開示の半導体装置は、指定されるバンクの振り分けに従って配列のデータを配置するバンクの選択を行うことで、配列に対するアクセスパターンに応じた配列のデータのバンク配置が可能になり、アプリケーションを修正することなく適切なメモリアクセスが実現でき、性能向上を図ることができる。
【図面の簡単な説明】
【００１４】
【図１】本発明の実施形態における半導体装置の構成例を示す概略図である。
【図２】本実施形態におけるメモリマップの例を示す図である。
【図３】本実施形態における半導体装置の構成例を示す図である。
【図４】本実施形態におけるインデックス変換器の構成例を示す図である。
【図５】本実施形態におけるセレクタ設定表の例を示す図である。
【図６】本実施形態におけるソースコード及びアクセス命令の一例を示す図である。
【図７】本実施形態におけるメモリアクセスの例を示す図である。
【図８】データメモリの実装方法を説明するための図である。
【発明を実施するための形態】
【００１５】
以下、本発明の実施形態を図面に基づいて説明する。
【００１６】
図１は、本発明の一実施形態における半導体装置の構成例を示す概略図である。本実施形態における半導体装置は、プロセッサ１０及びデータメモリ（バンクｐ）２０−ｐを有する。なお、ｐは添え字であり、ｐ＝０、１、２、３である（以下についても同様）。図１には、４つのバンクを有する例を示しているが、バンクの数は複数であれば任意であり、２の累乗個であることが好ましい。
【００１７】
プロセッサ１０は、データメモリ（バンクｐ）２０−ｐの各々に対応して、データメモリ（バンクｐ）２０−ｐとの間でデータを入出力するためのインタフェース１１−ｐを有する。プロセッサ１０は、各インタフェース１１−ｐにより、データメモリ（バンクｐ）２０−ｐ毎に独立してアクセスすることが可能である。インタフェース１１−ｐは、データメモリ（バンクｐ）２０−ｐに対する入出力データを保持するレジスタ等を有する。
【００１８】
本実施形態における半導体装置は、配列に対するデータメモリのバンクの割り振り、すなわちデータメモリにおいて配列のデータ（要素）をどのバンクに配置するかを制御可能である。例えば、データに特殊な順序でアクセスを行いたい配列は、図２の領域２０１に示すように、ユーザが指定するバンクパターンで配列のデータを各バンクに配置する。また、例えば、データに順にアクセスするシーケンシャルアクセスを行いたい配列は、図２の領域２０２に示すように、通常のバンクパターンで配列のデータを各バンクに配置する。ここで、通常のバンクパターンとは、アドレス（配列のインデックス）の下位ビットの値によりバンクが一意に決定するバンクインターリーブ方式のバンクパターンであり、例えば図８（Ｂ）に示したような配置となる一定の規則を有するパターンである。
【００１９】
図２は、本実施形態におけるメモリマップの例を示す図である。図２において、塗りつぶしのパターンが、データメモリにおけるバンクの違いを示している。例えば、右下がり斜線と左下がり斜線とが交差しているブロックがデータメモリのバンク０に対応し、ドット塗りつぶしのブロックがデータメモリのバンク１に対応し、右下がり斜線のブロックがデータメモリのバンク２に対応し、左下がり斜線のブロックがデータメモリのバンク３に対応する。図２に示す例では、領域２０１では、アドレス方向に対して任意にバンクが割り当てられ、領域２０２では、アドレス方向に対して順に（規則的に）バンクが割り当てられている。
【００２０】
また、図２において、ＢＡＤ１は領域２０１のベースアドレスであり、ＢＡＤ２は領域２０２のベースアドレスである。なお、ユーザが指定するバンクパターンで配列のデータを配置する場合でも、その領域のサイズは、通常のバンクパターンで配置する際の領域のサイズと同じである。すなわち、配列のデータを配置する領域は、配列のデータを格納するのに過不足のないサイズの領域である。
【００２１】
このように本実施形態では、配列のデータ（要素）のデータメモリにおけるバンク配置をユーザ指定可能にして制御することで、配列に対するアプリケーションのデータアクセスパターンに応じた配列のデータの配置が可能になる。したがって、特殊な順序で配列のデータにアクセスするアプリケーションであっても、アプリケーションを修正（変更）することなく、アプリケーションに応じたデータ配置を行うことで適切なメモリアクセスを実現することができ、性能向上を図ることができる。
【００２２】
図３は、本実施形態における半導体装置の構成例を示す図である。図３において、図１に示した構成要素と同一の構成要素には同一の符号を付している。なお、図３には、本実施形態の半導体装置におけるデータメモリへのアクセス制御に係る構成を示したが、プロセッサ１０は、データメモリに対するデータ入出力に係る構成や、一般的なプロセッサが有する、図示しない演算処理等の他の処理に係る構成も有している。
【００２３】
プロセッサ１０は、命令制御部１２、インデックス変換器１３、セレクタ１４、加算器１５、アドレス保持部１６、及びバンク選択用デコーダ１７を有する。命令制御部１２は、図示しない命令メモリから読み出された命令ｉｎｓが入力され、命令ｉｎｓをデコードして、デコード結果に応じた処理を行う。例えば、命令制御部１２は、命令ｉｎｓがデータメモリ（バンクｐ）２０−ｐへのアクセス命令である場合には、データメモリ（バンクｐ）２０−ｐに対するアクセスを行う。
【００２４】
命令制御部１２は、命令ｉｎｓが配列に係るデータメモリ（バンクｐ）２０−ｐへのアクセス命令である場合には、アクセス命令で指定されたベースアドレスｂａｓｅ及びインデックスｉｎｄｅｘ１を出力する。ここで、アクセス命令で指定されるベースアドレスは、アクセスする配列に係るメモリ領域のベースアドレスであり、アクセス命令で指定されるインデックスは、アクセスする配列のデータを識別するためのインデックスである。
【００２５】
また、命令制御部１２は、命令ｉｎｓが配列に係るデータメモリ（バンクｐ）２０−ｐへのアクセス命令であり、さらに配列のデータのデータメモリにおけるバンクの振り分け（バンク配置）を示すバンクパターンを指定する指定情報を含むアクセス命令である場合には、その指定情報ｂａｎｋｐｔを出力する。また、命令制御部１２は、命令ｉｎｓがバンクの振り分けを指定するバンクパターンの指定情報を含むアクセス命令であるか否かを示す信号Ｓ１を出力する。
【００２６】
インデックス変換器１３は、命令制御部１２から出力されたインデックスｉｎｄｅｘ１及びバンクパターンの指定情報ｂａｎｋｐｔが入力され、インデックスｉｎｄｅｘ２を出力する。インデックス変換器１３は、指定情報ｂａｎｋｐｔにより指定されるバンクの振り分け（バンクパターン）に基づいて、入力されるインデックスｉｎｄｅｘ１をインデックスｉｎｄｅｘ２に変換して出力する。
【００２７】
セレクタ１４は、命令制御部１２から出力された信号Ｓ１に基づいて、命令制御部１２から出力されたインデックスｉｎｄｅｘ１又はインデックス変換器１３から出力されたインデックスｉｎｄｅｘ２の一方を選択してインデックスｉｎｄｅｘ３として出力する。セレクタ１４は、命令ｉｎｓがバンクパターンの指定情報を含むアクセス命令であることを信号Ｓ１が示した場合には、インデックスｉｎｄｅｘ１をインデックスｉｎｄｅｘ３として出力する。一方、セレクタ１４は、命令ｉｎｓがバンクパターンの指定情報を含むアクセス命令ではないことを信号Ｓ１が示した場合には、インデックスｉｎｄｅｘ２をインデックスｉｎｄｅｘ３として出力する。
【００２８】
加算器１５は、命令制御部１２から出力されたベースアドレスｂａｓｅに、セレクタ１４から出力されたインデックスｉｎｄｅｘ３を加算して、データメモリ（バンクｐ）２０−ｐにアクセスするためのメモリアドレスを生成する。加算器１５により生成されたメモリアドレスは、アドレス保持部１６に保持される。バンク選択用デコーダ１７は、アドレス保持部１６に保持されたメモリアドレスをデコードし、デコード結果に基づいてバンクを選択してアクセスを行う。すなわち、バンク選択用デコーダ１７は、セレクタ１４から出力されたインデックスｉｎｄｅｘ３に応じたバンクの選択を行う。
【００２９】
データメモリ（バンクｐ）２０−ｐには、例えば、配列ｄａｔＡのデータｄａｔＡ［０］〜ｄａｔＡ［３１］を、図５に例示するセレクタ設定表での設定０のバンクパターンのテーブルに従ったバンク配置で配置する場合、領域２１に示すように配置される。図５に例示するセレクタ設定表については、後述する。また、例えば、配列ｄａｔＢのデータｄａｔＢ［０］〜ｄａｔＢ［３１］を、通常のバンクパターンに応じたバンク配置で配置する場合、領域２２に示すように配置される。
【００３０】
図４は、インデックス変換器１３の構成例を示す図である。インデックス変換器１３は、図４に示すように、セレクタ３１、セレクタ設定表３２、及びレジスタ３３、３４を有する。レジスタ３３は、入力されるインデックスｉｎｄｅｘ１を保持するレジスタであり、レジスタ３４は、セレクタ３１の出力であるインデックスｉｎｄｅｘ２を保持するレジスタである。なお、図４においては、インデックスｉｎｄｅｘ１、ｉｎｄｅｘ２が６ビットである場合を一例として示しているが、インデックスｉｎｄｅｘ１、ｉｎｄｅｘ２のビット数は、これに限定されるものではない。
【００３１】
セレクタ３１は、セレクタ設定表３２が有するテーブルの内からバンクパターンの指定情報ｂａｎｋｐｔに応じて選択されたバンクパターンのテーブルを参照して、インデックスｉｎｄｅｘ１をインデックスｉｎｄｅｘ２に変換し出力する。セレクタ設定表３２は、図５に一例を示すような、配列のインデックスと配列のデータを配置するバンクとの対応関係（バンクパターン）を示すテーブルを有し、バンクパターンの指定情報ｂａｎｋｐｔに応じて１つのテーブルが選択される。
【００３２】
図５は、セレクタ設定表３２の例を示す図である。セレクタ設定表は、配列のインデックスに対して、配列のデータを配置するバンクを振り分けるテーブルを有している。バンクパターンの指定情報ｂａｎｋｐｔに応じて１つのテーブルが選択され、インデックスに応じた配列のデータが、選択されたテーブルにより指定されたバンクに配置される。図５においては、ハードウェア（ＨＷ）により固定の値が設定されている設定０及び設定１のテーブルと、ソフトウェア（ＳＷ）により任意の値を設定可能な設定２のテーブルを有する例を示している。
【００３３】
ここで、セレクタ設定表は、すべてのテーブルをハードウェアで実現しても良いし、すべてのテーブルをソフトウェアで実現しても良い。また、セレクタ設定表の一部のテーブルをハードウェアで実現し、残りのテーブルをソフトウェアで実現しても良い。セレクタ設定表のテーブルをハードウェアにより実現する場合には、テーブルをアプリケーションに合わせて後から変更することはできないが、アプリケーションの開発者が、既存のテーブルの内からシミュレーション等でアクセス効率が高くなるようなテーブルを選択するだけで適切なメモリアクセスを実現できるアプリケーションの開発が可能になる。また、セレクタ設定表のテーブルをソフトウェアにより実現する場合には、アプリケーションの開発者がテーブルを入力しなくてはいけないが、アプリケーションに合わせたテーブルを自由に設定することができる。
【００３４】
図６（Ａ）は、本実施形態における半導体装置で動作させるアプリケーションのソースコードの例を示す図である。コード６０１は、配列ｐｒｏｐｏｓａｌのデータをバンクパターン３に従って各バンクに配置することを指示するコードであり、コード６０２、６０３は、配列ｐｒｏｐｏｓａｌ、ｎｏｒｍａｌをそれぞれ定義するコードである。なお、配列ｎｏｒｍａｌは、アドレス（配列のインデックス）の下位ビットの値によりバンクが一意に決定する通常のバンクパターンで配列のデータを配置する配列である。
【００３５】
コード６０４は、配列ｐｒｏｐｏｓａｌにおけるインデックス値０のデータｐｒｏｐｏｓａｌ［０］を、データメモリから読み出して変数ａに代入するコードである。また、コード６０５は、配列ｐｒｏｐｏｓａｌにおけるインデックス値４のデータｐｒｏｐｏｓａｌ［４］を、データメモリから読み出して変数ｂに代入するコードである。同様に、コード６０６は、配列ｎｏｒｍａｌにおけるインデックス値０のデータｎｏｒｍａｌ［０］を、データメモリから読み出して変数ｘに代入するコードである。また、コード６０７は、配列ｎｏｒｍａｌにおけるインデックス値４のデータｎｏｒｍａｌ［４］を、データメモリから読み出して変数ｙに代入するコードである。
【００３６】
バンクパターン３で配置するバンクを振り分ける配列ｐｒｏｐｏｓａｌに係るデータメモリへのアクセスには、通常の命令とは異なる特別な命令を利用することになる。例えば、コンパイラは、変数の型に基づいて、通常の命令を使用するか、特別な命令を使用するかを判別して、ソースコードをコンパイルする。
【００３７】
図６（Ｂ）に、バンクパターンに従って、配置するバンクを振り分ける配列ｐｒｏｐｏｓａｌのデータを読み出すためのロード命令の例を示す。配列ｐｒｏｐｏｓａｌのデータをデータメモリから読み出す命令ｌｏａｄＰｒｏｐｏｓａｌにおいて、Ｒｅｇｉｓｔｅｒは読み出したデータを格納するレジスタを示し、ｂａｓｅは配列のベースアドレスを示し、ｉｎｄｅｘは配列におけるインデックスを示している。また、ｂａｎｋＰａｔｔｅｒｎは、配列のバンク配置を示すバンクパターンを指定する指定情報である。
【００３８】
図３に示した命令制御部１２は、入力された命令ｉｎｓが命令ｌｏａｄＰｒｏｐｏｓａｌである場合には、命令ｌｏａｄＰｒｏｐｏｓａｌにおけるｂａｓｅ及びｉｎｄｅｘを、ベースアドレスｂａｓｅ及びインデックスｉｎｄｅｘ１として出力する。また、命令制御部１２は、命令ｌｏａｄＰｒｏｐｏｓａｌにおけるｂａｎｋＰａｔｔｅｒｎを、バンクパターンの指定情報ｂａｎｋｐｔとして出力するとともに、入力された命令ｉｎｓがバンクパターンの指定情報を含むアクセス命令であることを信号Ｓ１により示す。
【００３９】
また、図６（Ｃ）に、通常のバンクパターンで配置するバンクを振り分ける配列ｎｏｒｍａｌのデータを読み出すためのロード命令の例を示す。配列ｎｏｒｍａｌのデータをデータメモリから読み出す命令ｌｏａｄにおいて、Ｒｅｇｉｓｔｅｒは読み出したデータを格納するレジスタを示し、ｂａｓｅは配列のベースアドレスを示し、ｉｎｄｅｘは配列におけるインデックスを示している。
【００４０】
図３に示した命令制御部１２は、入力された命令ｉｎｓが命令ｌｏａｄである場合には、命令ｌｏａｄにおけるｂａｓｅ及びｉｎｄｅｘを、ベースアドレスｂａｓｅ及びインデックスｉｎｄｅｘ１として出力する。また、命令制御部１２は、入力された命令ｉｎｓがバンクパターンの指定情報を含むアクセス命令ではないことを信号Ｓ１により示す。
【００４１】
本実施形態によれば、配列に対するデータメモリのバンクの任意な割り振りを可能にし、指定されるバンクの振り分けに従ってバンクの選択を行うことで、アプリケーションの配列に対するアクセスパターンに応じて、配列のデータのデータメモリにおけるバンク配置を制御することができる。したがって、特殊な順序で配列のデータにアクセスするアプリケーションであっても、アプリケーションを修正（変更）することなく、アプリケーションに応じたデータ配置を行うことで適切なメモリアクセスを実現することができ、性能向上を図ることができる。
【００４２】
例えば、インデックスが０〜３１の３２個のデータ（要素）を有する配列について、インデックスが０、１、２、・・・、３１というように１ずつ増加させて順にデータの書き込みを行うとする。その後、インデックスが０、４、８、１２、１６、２０、２４、２８、１、５、９、１３、１７、２１、２５、２９、２、６、１０、１４、１８、２２、２６、３０、３、７、１１、１５、１９、２３、２７、３１という順にデータの読み出しを行うとする。
【００４３】
アドレス（配列のインデックス）の下位ビットによりバンクが一意に決定するバンクインターリーブ方式の通常のバンクパターン（アドレスの下位ビットによりバンクが一意に決定するバンクインターリーブ方式のバンクパターン）で配列のデータを各バンクに配置する場合には、図７（Ａ）に示すように、データの書き込みに８サイクルを要し、データの読み出しに２９サイクルを要し、全体で３７サイクルを要する。それに対して、図５に示したセレクタ設定表での設定０のバンクパターンで配列のデータを各バンクに配置する場合には、図７（Ｂ）に示すように、データの書き込みに１５サイクルを要し、データの読み出しに１３サイクルを要し、全体で２８サイクルを要する。このように、本実施形態では、配列のデータアクセスパターンに応じて、配列のデータのバンク配置を制御することで、適切なメモリアクセスを実現することができ、メモリアクセスに要するサイクル数を低減することができる。
【００４４】
なお、前述した実施形態では、通常のバンクパターンでバンク配置する配列については通常のアクセス命令を用い、セレクタ設定表が有するテーブルのバンクパターンでバンク配置する配列については特別なアクセス命令を用いるようにして区別している。本実施形態はこれに限定されるものではなく、例えば、セレクタ設定表に、アドレス（配列のインデックス）の下位ビットの値とデータを配置するバンクとが一意に対応するバンクインターリーブ方式の通常のバンクパターンのテーブルを備え、常にバンクパターンを指定するようにして１種類のアクセス命令でメモリアクセスを実現するようにしても良い。
【００４５】
なお、前記実施形態は、何れも本発明を実施するにあたっての具体化のほんの一例を示したものに過ぎず、これらによって本発明の技術的範囲が限定的に解釈されてはならないものである。すなわち、本発明はその技術思想、またはその主要な特徴から逸脱することなく、様々な形で実施することができる。
【符号の説明】
【００４６】
１０  プロセッサ
１１−０〜１１−３  インタフェース
２０−０〜２０−４  データメモリ
１２  命令制御部
１３  インデックス変換器
１４  セレクタ
１５  加算器
１６  アドレス保持部
１７  バンク選択用デコーダ
３１  セレクタ
３２  セレクタ設定表
３３、３４  レジスタ
【図１】
2014241107.tif 000003
【図２】
2014241107.tif 000004
【図３】
2014241107.tif 000005
【図４】
2014241107.tif 000006
【図５】
2014241107.tif 000007
【図６】
2014241107.tif 000008
【図７】
2014241107.tif 000009
【図８】
2014241107.tif 000010