(57)【要約】【課題】  データ処理に使用するデータを保持する記憶装置のアクセス効率を向上する。【解決手段】  情報処理装置において、複数の記憶装置のアクセスを制御するメモリ制御装置は、複数の記憶装置のそれぞれに対応して設けられる複数のメモリ制御部と、演算処理装置からのメモリアクセス要求と設定変更要求とを複数のメモリ制御部のいずれかに出力する要求分配部とを有する。各メモリ制御部のアドレス変換制御部は、設定変更要求に基づいて変更したビットの割り当てに基づいて、メモリアクセス要求に含まれるアドレスのビットを入れ替える。各メモリ制御部のアクセス制御部は、自メモリ制御部のアドレス変換制御部により、アドレスのビットが入れ替えられたメモリアクセス要求に基づいて、複数の記憶装置のうち、自メモリ制御部に対応する記憶装置にアクセスする。【選択図】    図１
2018194939.tif 000002
【特許請求の範囲】
【請求項１】
演算処理を実行する演算処理装置と、互いに異なるアドレスが割り当てられた複数の記憶装置と、前記演算処理装置からのメモリアクセス要求に基づいて、前記複数の記憶装置のアクセスを制御するメモリ制御装置とを有する情報処理装置において、
前記メモリ制御装置は、
前記複数の記憶装置のそれぞれに対応して設けられる複数のメモリ制御部と、
前記メモリアクセス要求と前記演算処理装置からの設定変更要求とを前記複数のメモリ制御部のいずれかに出力する要求分配部を有し、
前記複数のメモリ制御部の各々は、
前記設定変更要求に基づいて変更したビットの割り当てに基づいて、前記メモリアクセス要求に含まれるアドレスのビットを入れ替えるアドレス変換制御部と、
自メモリ制御部のアドレス変換制御部により、アドレスのビットが入れ替えられたメモリアクセス要求に基づいて、前記複数の記憶装置のうち、自メモリ制御部に対応する記憶装置にアクセスするアクセス制御部を有することを特徴とする情報処理装置。
【請求項２】
前記アドレス変換制御部は、
アドレスのビットの割り当てをそれぞれ示す複数の割り当て情報を保持する情報保持部と、
前記設定変更要求に基づいて、前記情報保持部が保持する前記複数の割り当て情報のいずれかを選択する選択部と、
前記メモリアクセス要求に含まれるアドレスのビットを、前記選択部が選択した割り当て情報に基づいて入れ替えるアドレス変換部を有することを特徴とする請求項１記載の情報処理装置。
【請求項３】
前記複数のメモリ制御部の各々は、さらに、
前記演算処理装置からの前記設定変更要求または他の装置からの設定変更要求のいずれかを前記選択部に供給する切替部を有することを特徴とする請求項２記載の情報処理装置。
【請求項４】
前記複数のメモリ制御部の各々は、さらに、
フラグ値を保持するとともに、前記演算処理装置から前記設定変更要求を受信する毎に、保持するフラグ値を更新するフラグ保持部と、
前記アドレス変換制御部によりビットが入れ替えられたアドレスを含む前記メモリアクセス要求が、前記フラグ保持部が保持するフラグ値とともにそれぞれ格納される複数のエントリを有する要求保持部と、
同一のフラグ値を保持する複数のエントリにそれぞれ保持された複数の前記メモリアクセス要求の前記アクセス制御部への出力順の入れ替えを許可し、異なるフラグ値を保持する複数のエントリにそれぞれ保持された複数の前記メモリアクセス要求の前記アクセス制御部への出力順の入れ替えを禁止する要求出力制御部を有することを特徴とする請求項１ないし請求項３のいずれか１項記載の情報処理装置。
【請求項５】
前記要求分配部は、
前記メモリアクセス要求を受信した場合、前記複数のメモリ制御部のうち、前記メモリアクセス要求に含まれるアドレスが割り当てられた記憶装置に対応するメモリ制御部に、受信したメモリアクセス要求を出力し、
前記設定変更要求を受信した場合、前記複数のメモリ制御部のうち、前記設定変更要求に含まれる変更先情報が示すメモリ制御部に、受信した設定変更要求を出力することを特徴とする請求項１ないし請求項４のいずれか１項記載の情報処理装置。
【請求項６】
前記メモリアクセス要求に含まれるアドレスは、前記複数の記憶装置の各々が有する複数のバンクのうち、アクセスするバンクを選択するバンクアドレスと、前記複数のバンクの各々が有する複数の記憶領域のうち、アクセスする記憶領域を選択する内部アドレスを含み、
前記アドレス変換制御部は、前記設定変更要求に基づいて、前記メモリアクセス要求に含まれるバンクアドレスに割り当てるビットの位置を変更することを特徴とする請求項１ないし請求項５のいずれか１項記載の情報処理装置。
【請求項７】
演算処理を実行する演算処理装置からのメモリアクセス要求に基づいて、互いに異なるアドレスが割り当てられた複数の記憶装置のアクセスを制御するメモリ制御装置において、
前記複数の記憶装置のそれぞれに対応して設けられる複数のメモリ制御部と、
前記メモリアクセス要求と前記演算処理装置からの設定変更要求とを前記複数のメモリ制御部のいずれかに出力する要求分配部を有し、
前記複数のメモリ制御部の各々は、
前記設定変更要求に基づいて変更したビットの割り当てに基づいて、前記メモリアクセス要求に含まれるアドレスのビットを入れ替えるアドレス変換制御部と、
自メモリ制御部のアドレス変換制御部により、アドレスのビットが入れ替えられたメモリアクセス要求に基づいて、前記複数の記憶装置のうち、自メモリ制御部に対応する記憶装置にアクセスするアクセス制御部を有することを特徴とするメモリ制御装置。
【請求項８】
演算処理を実行する演算処理装置と、互いに異なるアドレスが割り当てられた複数の記憶装置と、前記演算処理装置からのメモリアクセス要求に基づいて、前記複数の記憶装置のアクセスを制御するメモリ制御装置とを有する情報処理装置の制御方法において、
前記メモリ制御装置が有する要求分配部が、前記メモリアクセス要求と前記演算処理装置からの設定変更要求とを、前記メモリ制御装置が有し、前記複数の記憶装置のそれぞれに対応して設けられる複数のメモリ制御部のいずれかに出力し、
前記複数のメモリ制御部の各々が有するアドレス変換制御部が、前記設定変更要求に基づいて変更したビットの割り当てに基づいて、前記メモリアクセス要求に含まれるアドレスのビットを入れ替え、
前記複数のメモリ制御部の各々が有するアクセス制御部が、自メモリ制御部のアドレス変換制御部により、アドレスのビットが入れ替えられたメモリアクセス要求に基づいて、前記複数の記憶装置のうち、自メモリ制御部に対応する記憶装置にアクセスすることを特徴とする情報処理装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、メモリ制御装置および情報処理装置の制御方法に関する。
【背景技術】
【０００２】
メモリ領域を獲得または開放する記述をプログラムに追加することで、プログラムに使用するメモリ領域のサイズは、動的に変更することが可能になるが、当該記述の追加前よりもプログラムは複雑になる。そこで、使用するメモリ領域のサイズと任意の番号を指定してライブラリ関数をプログラムから呼び出し、呼び出したライブラリ関数にメモリ領域を確保させることで、プログラムの記述を簡易にする手法が提案されている（例えば、特許文献１参照）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開平９−２２３０６４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ところで、ニューラルネットワークを使用するディープラーニング等の処理は、例えば、情報処理装置に含まれる演算処理装置が実行するプログラムにより実行される。この種の情報処理装置において、記憶装置のアクセスを制御するメモリ制御装置は、演算処理装置が出力するメモリアクセス要求に含まれるアドレスにしたがって、記憶装置にデータを格納し、あるいは、記憶装置からデータを読み出す。ニューラルネットワークの各レイヤで使用するデータは、データサイズによっては記憶装置の複数の記憶領域に分散して保持される場合がある。処理に使用するデータが複数の記憶領域に分散して保持される場合、データのアドレスが連続する等、１つの記憶領域にまとまってデータが保持される場合に比べて、記憶装置のアクセス効率は低下する。
１つの側面では、本発明は、データ処理に使用するデータを保持する記憶装置のアクセス効率を向上することを目的とする。
【課題を解決するための手段】
【０００５】
一つの実施態様では、演算処理を実行する演算処理装置と、互いに異なるアドレスが割り当てられた複数の記憶装置と、演算処理装置からのメモリアクセス要求に基づいて、複数の記憶装置のアクセスを制御するメモリ制御装置とを有する情報処理装置において、メモリ制御装置は、複数の記憶装置のそれぞれに対応して設けられる複数のメモリ制御部と、メモリアクセス要求と演算処理装置からの設定変更要求とを複数のメモリ制御部のいずれかに出力する要求分配部を有し、複数のメモリ制御部の各々は、設定変更要求に基づいて変更したビットの割り当てに基づいて、メモリアクセス要求に含まれるアドレスのビットを入れ替えるアドレス変換制御部と、自メモリ制御部のアドレス変換制御部により、アドレスのビットが入れ替えられたメモリアクセス要求に基づいて、複数の記憶装置のうち、自メモリ制御部に対応する記憶装置にアクセスするアクセス制御部を有する。
【発明の効果】
【０００６】
１つの側面では、本発明は、データ処理に使用するデータを保持する記憶装置のアクセス効率を向上することができる。
【図面の簡単な説明】
【０００７】
【図１】情報処理装置、メモリ制御装置および情報処理装置の制御方法の一実施形態を示す図である。
【図２】図１に示すメモリ制御部による記憶装置のアクセスの一例を示す図である。
【図３】図１に示す情報処理装置の動作の一例を示す図である。
【図４】情報処理装置、メモリ制御装置および情報処理装置の制御方法の別の実施形態を示す図である。
【図５】図４に示すキュー制御部の一例を示す図である。
【図６】図４に示す要求生成部および要求デコーダの動作の一例を示す図である。
【図７】図４に示す情報処理装置の動作の一例を示す図である。
【図８】図４に示す情報処理装置が実行する処理の一例を示す図である。
【図９】図８に示す各メモリに入出力されるデータの粒度毎のアドレスのビットの割り当ての一例を示す図である。
【図１０】図９に示す複数のデータの粒度のそれぞれでのメモリのアクセスの一例を示す図である。
【図１１】図８に示す処理の流れの一例を示す図である。
【図１２】図１１に示す処理を実行するプログラムの一例を示す図である。
【図１３】図５に示すキュー制御部による要求キューの制御の概要を示す図である。
【図１４】情報処理装置、メモリ制御装置および情報処理装置の制御方法の別の実施形態を示す図である。
【図１５】情報処理装置、メモリ制御装置および情報処理装置の制御方法の別の実施形態におけるプロセッサコアが実行するプログラムの一例を示す図である。
【図１６】図１５に示すプログラムを実行する情報処理装置の要求生成部および要求デコーダの動作の一例を示す図である。
【発明を実施するための形態】
【０００８】
以下、図面を用いて実施形態を説明する。
【０００９】
図１は、情報処理装置、メモリ制御装置および情報処理装置の制御方法の一実施形態を示す。図１に示す情報処理装置１００は、例えば、サーバであり、演算処理装置１、メモリ制御装置２および互いに異なるアドレスＡＤが割り当てられた複数の記憶装置３（３ａ、３ｂ）を有する。
【００１０】
演算処理装置１は、例えば、図示しない他の記憶装置に格納されたプログラムに記述された演算命令を実行することで、演算処理を実行する。また、演算処理装置１は、プログラムに記述されたメモリアクセス命令（ロード命令またはストア命令）のフェッチに基づいて、データ等の情報を記憶装置３に対して読み書きするメモリアクセス要求ＭＲＥＱをメモリ制御装置２に出力する。さらに、演算処理装置１は、プログラムに記述された設定変更命令のフェッチに基づいて、メモリ制御装置２の設定を変更する設定変更要求ＳＲＥＱをメモリ制御装置２に出力する。
【００１１】
メモリ制御装置２は、要求分配部４と、複数の記憶装置３ａ、３ｂのそれぞれに対応して設けられる複数のメモリ制御部５（５ａ、５ｂ）とを有する。なお、情報処理装置１００は、３以上の記憶装置３を有してもよく、この場合、メモリ制御装置２は、記憶装置３にそれぞれ対応する３以上のメモリ制御部５を有する。
【００１２】
要求分配部４は、演算処理装置１から受信するメモリアクセス要求ＭＲＥＱと設定変更要求ＳＲＥＱとを、メモリ制御部５ａ、５ｂのいずれかに出力する。設定変更要求ＳＲＥＱは、後述するアドレスのビットの割り当てを変更するメモリ制御部５を示す変更先情報と、変更するビットの割り当てを示す割り当て情報とを含む。例えば、要求分配部４は、演算処理装置１からのメモリアクセス要求ＭＲＥＱに含まれるアドレスＡＤが割り当てられた記憶装置３に対応するメモリ制御部５にメモリアクセス要求ＭＲＥＱを出力する。要求分配部４は、演算処理装置１からの設定変更要求ＳＲＥＱに含まれる変更先情報が示すメモリ制御部５に設定変更要求ＳＲＥＱを出力する。
【００１３】
各メモリ制御部５ａ、５ｂは、アドレス変換制御部６およびアクセス制御部７をそれぞれ有する。アドレス変換制御部６は、要求分配部４から設定変更要求ＳＲＥＱを受信した場合、設定変更要求ＳＲＥＱに基づいて、メモリアクセス要求ＭＲＥＱに含まれるアドレスＡＤのビットの割り当てを変更する。また、アドレス変換制御部６は、要求分配部４からメモリアクセス要求ＭＲＥＱを受信した場合、メモリアクセス要求ＭＲＥＱに含まれるアドレスＡＤのビットを、変更した割り当てに応じて入れ替え、ビットを入れ替えたアドレスＡＤをアクセス制御部７に出力する。
【００１４】
アクセス制御部７は、アドレス変換制御部６によりビットが入れ替えられたアドレスＡＤを含むメモリアクセス要求ＭＲＥＱに基づいて、自メモリ制御部５に対応する記憶装置３にアクセスし、記憶装置３に対する読み出し動作または書き込み動作を実行する。なお、演算処理装置１とメモリ制御装置２との間、およびメモリ制御装置２と記憶装置３との間で転送されるデータの経路は省略される。
【００１５】
図２は、図１に示すメモリ制御部５による記憶装置３のアクセスの一例を示す。例えば、記憶装置３は、データを保持する４つのバンクＢＫ（ＢＫ０−ＢＫ３）を有する。記憶装置３は、メモリ制御装置２から受信したアドレスＡＤのうち、２ビットのバンクアドレスＢＡに基づいて、バンクＢＫ０−ＢＫ３のいずれかを選択し、選択したバンクＢＫにデータＤを書き込み、あるいは、選択したバンクＢＫからデータＤを読み出す。
【００１６】
例えば、図１に示すアドレス変換制御部６は、メモリアクセス要求ＭＲＥＱに含まれるアドレスＡＤのいずれかの２ビットを、設定変更要求ＳＲＥＱに基づいて変更されたアドレスのビットの割り当てに応じてバンクアドレスＢＡに割り当てる。バンクアドレスＢＡがアドレスＡＤのビット［１：０］に割り当てられる場合、アドレスＡＤが”０”から”１”、”２”、”３”と増加する毎に、バンクＢＫ０、ＢＫ１、ＢＫ２、ＢＫ３、ＢＫ０、...が順次選択される。このため、データＤ（Ｄ１−Ｄ９）は、アドレスＡＤが増加する毎に、異なるバンクＢＫから１つずつ読み出され、あるいは、異なるバンクＢＫに１つずつ書き込まれる（図２（Ａ））。
【００１７】
バンクアドレスＢＡがアドレスＡＤのビット［２：１］に割り当てられる場合、アドレスＡＤが”０”から”１”、”２”、”３”と増加する毎に、バンクＢＫ０、ＢＫ０、ＢＫ１、ＢＫ１、ＢＫ２、ＢＫ２、ＢＫ３、ＢＫ３、ＢＫ０、ＢＫ０、...が順次選択される。このため、データＤ（Ｄ１−Ｄ９）は、アドレスＡＤが増加する毎に、異なるバンクＢＫから２つずつ読み出され、あるいは、異なるバンクＢＫに２つずつ書き込まれる（図２（Ｂ））。バンクアドレスＢＡがアドレスＡＤのビット［３：２］に割り当てられる場合、アドレスＡＤが”０”から”１”、”２”、”３”と増加する毎に、バンクＢＫ０、ＢＫ０、ＢＫ０、ＢＫ０、ＢＫ１、ＢＫ１、ＢＫ１、ＢＫ１、ＢＫ２、ＢＫ２、...が順次選択される。このため、データＤ（Ｄ１−Ｄ９）は、アドレスＡＤが増加する毎に、異なるバンクＢＫから４つずつ読み出され、あるいは、異なるバンクＢＫに４つずつ書き込まれる（図２（Ｃ））。
【００１８】
なお、各記憶装置３ａ、３ｂのアドレス端子は、最上位の２ビットにバンクアドレスＢＡが割り当てられている。このため、例えば、演算処理装置１がアドレスＡＤを順次増加して出力し、メモリ制御部５がビットを入れ替えずにアドレスＡＤを各記憶装置３ａ、３ｂに出力した場合、特定のバンクＢＫが集中してアクセスされる。
【００１９】
メモリアクセス要求ＭＲＥＱ毎にアクセス制御部７が連続して生成する複数のアドレスＡＤ（増加または減少）に基づいて、各バンクＢＫから連続して読み出されるデータＤの数は、データの粒度と称される。すなわち、データの粒度は、１回のメモリアクセス要求ＭＲＥＱに基づいて各バンクＢＫに入出力されるデータのサイズに対応している。プログラムを実行する演算処理装置１は、データ処理で扱うデータのサイズが変わる場合、設定変更要求ＳＲＥＱをメモリ制御装置２に出力し、アドレスのビットの割り当てを変更することで、データの粒度を変更する。
【００２０】
図２（Ａ）は、データの粒度＝”１”で記憶装置３にアクセスする場合のバンクアドレスＢＡの割り当てを示し、図２（Ｂ）は、データの粒度＝”２”で記憶装置３にアクセスする場合のバンクアドレスＢＡの割り当てを示す。図２（Ｃ）は、データの粒度＝”４”で記憶装置３にアクセスする場合のバンクアドレスＢＡの割り当てを示す。
【００２１】
例えば、異なるバンクＢＫを順次アクセスする、いわゆるインタリーブ動作を実行することで、各バンクＢＫをアクセス可能なアクティブ状態に設定するアクティブ動作を、他のバンクＢＫのアクセス動作の裏で実行することができる。このため、同じバンクＢＫを連続してアクセスし、アクセスの途中でアクティブ動作が挿入される場合に比べて、インタリーブ動作はアクセス効率を向上することができる。
【００２２】
一方、記憶装置３へのアクセスは、演算処理装置１が実行するデータ処理で扱うサイズを単位として実行されることが、記憶装置３のアクセス効率を向上するために望ましい。例えば、データ処理が２つのデータＤ１−Ｄ２、Ｄ３−Ｄ４、...を１単位として実行される場合、データの粒度を”２”に設定して記憶装置３にアクセスし、インタリーブ動作を実行することが望ましい。また、データ処理が４つのデータＤ１−Ｄ４、Ｄ５−Ｄ８、...を１単位として実行される場合、データの粒度を”４”に設定して記憶装置３にアクセスし、インタリーブ動作を実行することが望ましい。
【００２３】
これに対して、例えば、データ処理が４つのデータＤ１−Ｄ４、Ｄ５−Ｄ８、...を１単位として実行される場合に、４つのデータＤ１−Ｄ４を４つのバンクＢＫ０−ＢＫ３に分散して保持する場合、各データ処理で４つのバンクＢＫがアクティブ状態に設定される。この場合、図２（Ｃ）に示す動作に比べて、アクティブ動作の実行頻度が高くなり、アクティブ動作を隠すことでアクセス効率を向上するインタリーブ動作の特徴が失われてしまう。
【００２４】
なお、例えば、データの粒度を”４”に設定して記憶装置３に書き込んだデータＤ１−Ｄ４を、データの粒度を”１”に設定して記憶装置３から読み出す場合、データＤ１、Ｄ２、Ｄ３は、データＤ１、Ｄ５、Ｄ９として読み出される。すなわち、演算処理装置１は、誤ったデータＤを読み出す。誤ったデータＤにより誤ったデータ処理が実行されることを抑止するため、記憶装置３へのデータの書き込みと、記憶装置３からのデータの読み出しは、データの粒度を揃えて実行される。
【００２５】
図３は、図１に示す情報処理装置１００の動作の一例を示す。すなわち、図３は、情報処理装置１００の制御方法の一例を示す。図３に示す例では、情報処理装置１００は、演算処理装置１にプログラムを実行させることで、データ処理を実行する。データ処理に使用するデータは、記憶装置３ａ、３ｂのいずれかから読み出され、データ処理により得られた結果データは、記憶装置３ａ、３ｂのいずれかに書き込まれる。
【００２６】
図３に示す例では、演算処理装置１が実行するプログラムにより、処理１と処理２が実行される。例えば、情報処理装置１００が、ディープラーニングを実行する場合、処理１および処理２のそれぞれは、ニューラルネットワークのレイヤによる処理である。処理１によるデータ処理で扱うデータの粒度は”４”であり、処理１によるデータ処理により得られる結果データの粒度は”１”である。一方、処理２によるデータ処理で扱うデータの粒度は”１”であり、処理１によるデータ処理により得られる結果データの粒度は”２”である。
【００２７】
処理１で使用するデータが格納される記憶装置３ａのデータの粒度は、予め”４”に設定され、データ処理で使用するデータが記憶装置３ａに格納される。また、処理１を開始する前に、データ処理の結果データを格納する記憶装置３ｂのデータの粒度が”１”に設定される。記憶装置３ａ、３ｂのデータの粒度は、データの粒度の設定情報を含む設定変更命令を記述したプログラムを演算処理装置１が実行して、演算処理装置１がメモリ制御装置２に設定変更要求ＳＲＥＱを出力することで設定される。
【００２８】
まず、演算処理装置１は、記憶装置３ａからデータを粒度＝”４”で読み出す（図３（ａ））。次に、演算処理装置１は、記憶装置３ａからデータを読み出した順に処理１によるデータ処理を実行する（図３（ｂ））。次に、演算処理装置１は、データ処理により得られた結果データを、得られた順に粒度＝”１”で記憶装置３ｂに書き込む（図３（ｃ））。
【００２９】
データ処理で使用するデータの粒度とデータ処理の結果データの粒度とは、互いに異なる。データの粒度を、複数の記憶装置３ａ、３ｂのそれぞれに独立に設定可能にし、データの粒度毎に記憶装置３ａ、３ｂを使い分けることで、記憶装置３ａ、３ｂのそれぞれに対するアクセス効率を最適にすることができる。さらに、プログラムによりデータの並び順を入れ替える等の処理を実行することなく、データ処理を実行しやすい順に記憶装置３ａからデータを読み出し、次のデータ処理（例えば、処理２）を実行しやすい順に記憶装置３ｂにデータを書き込むことができる。
【００３０】
記憶装置３ｂに書き込まれた処理１の結果データは、処理２で使用される。また、処理２のデータ処理により得られる結果データの粒度は”２”である。このため、処理２において、演算処理装置１は、記憶装置３ａのデータの粒度を”４”から”２”に変更する（図３（ｄ）、（ｅ））。なお、記憶装置３ｂのデータの粒度は、変更されない。
【００３１】
次に、演算処理装置１は、記憶装置３ｂからデータを粒度＝”１”で読み出す（図３（ｆ））。次に、演算処理装置１は、記憶装置３ｂからデータを読み出した順に処理２によるデータ処理を実行する（図３（ｇ））。次に、演算処理装置１は、データ処理により得られた結果データを、得られた順に粒度＝”２”で記憶装置３ａに書き込む（図３（ｈ））。
【００３２】
一方、メモリ制御装置２が、アドレス変換制御部６を持たない場合、演算処理装置１から出力されるアドレスＡＤは、ビットを入れ替えずにアクセス制御部７を介して記憶装置３ａ（または３ｂ）に供給される。この場合、図２で説明したように、順次増加するアドレスＡＤにより記憶装置３ａ（または３ｂ）がアクセスされるため、特定のバンクＢＫが集中してアクセスされる。
【００３３】
このため、各記憶装置３ａ、３ｂから読み出したデータは、各データ処理に使用するためにプログラムにより並べ替えられ、データ処理により得られた結果データは、各記憶装置３ａ、３ｂに書き込まれる前にプログラムにより並べ替えられる。あるいは、バンクＢＫ０−ＢＫ３に分散して保持された処理対象のデータは、プログラムにより、バンクＢＫ０−ＢＫ３に個別にアクセスすることで読み出される。結果データは、プログラムによりバンクＢＫ０−ＢＫ３に個別にアクセスすることで、バンクＢＫ０−ＢＫ３に分散して書き込まれる。この結果、アドレス変換制御部６を使用する場合に比べて、記憶装置３ａ、３ｂへのアクセス効率が低下する。
【００３４】
換言すれば、アドレス変換制御部６を使用する場合、各記憶装置３ａ、３ｂから読み出したデータを並べ替えることなくデータ処理を実行することができ、データ処理の結果データを並べ替えることなく各記憶装置３ａ、３ｂに書き込むことができる。すなわち、データを並べ替える処理を実行させるための命令群をプログラムに記述することなく、処理対象のデータを各記憶装置３ａ、３ｂから読み出し、結果データを各記憶装置３ａ、３ｂに書き込むことができる。この結果、アクセス効率を最適にして、処理１および処理２を実行することができ、アドレスＡＤのビットを入れ替えない場合に比べて、情報処理装置１００の処理性能を向上することができる。
【００３５】
以上、図１から図３に示す実施形態では、演算処理装置１が実行するプログラムの処理に合わせて、記憶装置３ａ、３ｂに入出力するデータの粒度を、記憶装置３ａ、３ｂ毎に動的に変更することができる。この結果、データの粒度を変更しない場合に比べて、記憶装置３ａ、３ｂに対するアクセス効率を向上することができ、情報処理装置１００の処理性能を向上することができる。
【００３６】
図４は、情報処理装置、メモリ制御装置および情報処理装置の制御方法の別の実施形態を示す。図１と同一または同様の要素については、同一の符号を付し、これ等については、詳細な説明は省略する。
【００３７】
図４に示す情報処理装置１００Ａは、例えば、サーバ等であり、プロセッサ１０と、メモリコントローラ２０と、互いに異なるアドレスが割り当てられた８つのメモリ３１（３１（０）−３１（７））を含むメモリモジュール３０とを有する。なお、メモリモジュール３０に含まれるメモリ３１の数は、８つに限定されない。プロセッサ１０は、例えば、ディープラーニングの処理を実行するＡＩ（Artificial Intelligence）プロセッサ等であり、プロセッサコア１２と要求生成部１４とを有する。なお、プロセッサ１０は、図示しないキャッシュメモリおよび通信インタフェース等を有する。また、プロセッサ１０は、複数のプロセッサコア１２を有してもよい。
【００３８】
プロセッサ１０は、演算処理を実行する演算処理装置の一例であり、メモリコントローラ２０は、メモリ制御装置の一例であり、メモリ３１は、記憶装置の一例である。なお、プロセッサ１０とメモリコントローラ２０との間、およびメモリコントローラ２０とメモリモジュール３０との間で転送されるデータの経路は省略される。
【００３９】
プロセッサコア１２は、図示しない命令デコーダ、浮動小数点積和演算器等の各種演算器、複数のレジスタ等を有する。プロセッサコア１２は、メモリモジュール３０に格納されたプログラムに記述された演算命令を実行することで演算処理を実行する。また、プログラムに記述された命令がメモリモジュール３０へのアクセスを示す場合、または、メモリコントローラ２０の設定の変更を示す場合、プロセッサコア１２は、命令に含まれるオペコードおよびオペランドの情報を要求生成部１４に出力する。
【００４０】
以下では、メモリモジュール３０へのアクセスを示す命令は、メモリアクセス命令と称され、メモリコントローラ２０の設定の変更を示す命令は、設定変更命令と称される。例えば、設定変更命令は、メモリアクセス要求ＭＲＥＱに含まれるアドレスＡＤのビットの割り当てをメモリコントローラ２０に変更させる命令である。要求生成部１４は、プロセッサコア１２からメモリアクセス命令を示す情報を受信した場合、メモリアクセス要求ＭＲＥＱを生成してメモリコントローラ２０に出力する。メモリアクセス要求ＭＲＥＱは、メモリモジュール３０の各メモリ３１に対してリードアクセスまたはライトアクセスする場合に発行される。また、要求生成部１４は、プロセッサコア１２から設定変更命令を示す情報を受信した場合、設定変更要求ＳＲＥＱを生成してメモリコントローラ２０に出力する。
【００４１】
メモリコントローラ２０は、要求デコーダ４０と、メモリ３１（０）−３１（７）にそれぞれ対応して設けられる８つのメモリ制御部５０とを有する。
【００４２】
要求デコーダ４０は、メモリアクセス要求ＭＲＥＱをデコードした場合、リードライト種別Ｒ／Ｗ、アドレスＡＤ（物理アドレス）およびアクセスするデータのデータ長ＬＥＮを、メモリアクセス要求ＭＲＥＱとしてメモリ制御部５０のいずれかに出力する。要求デコーダ４０は、メモリアクセス要求ＭＲＥＱに含まれるアドレスＡＤが割り当てられたメモリ３１に対応するメモリ制御部５０にメモリアクセス要求ＭＲＥＱを出力する。リードライト種別Ｒ／Ｗは、図６で説明するリードコマンドＲＤまたはライトコマンドＷＲである。メモリコントローラ２０に要求デコーダ４０を設けることで、メモリコントローラ２０が複数のメモリ制御部５０を有する場合にも、メモリアクセス要求ＭＲＥＱをアクセス対象のメモリ３１に対応するメモリ制御部５０に出力することができる。
【００４３】
また、要求デコーダ４０は、メモリコントローラ２０の設定を変更する設定変更要求ＳＲＥＱをデコードした場合、設定変更要求ＳＲＥＱをメモリ制御部５０のいずれかに出力する。要求デコーダ４０は、設定変更要求ＳＲＥＱに含まれる変更先情報が示すメモリ制御部５０に設定変更要求ＳＲＥＱを出力する。メモリコントローラ２０に要求デコーダ４０を設けることで、メモリコントローラ２０が複数のメモリ制御部５０を有する場合にも、設定変更要求ＳＲＥＱを後述するマップ情報ＭＡＰの変更対象のメモリ制御部５０に出力することができる。要求生成部１４および要求デコーダ４０の動作の例は、図６に示される。要求デコーダ４０は、要求分配部の一例である。
【００４４】
メモリ制御部５０は、互いに同じ回路構成を有するため、以下では、メモリ３１（０）に接続されるメモリ制御部５０の構成が説明される。また、以下では、メモリ３１（０）−３１（７）に接続されるメモリ制御部５０は、それぞれチャネルＣＨ０−ＣＨ７とも称される。各メモリ３１に接続されるチャネルＣＨの番号は、メモリ３１の括弧内の数値に等しい。特に限定されないが、各メモリ制御部５０と各メモリ３１とを接続するデータ線は、例えば、１２８ビット（１６バイト）である。
【００４５】
メモリ制御部５０は、アドレス変換制御部６０、キュー制御部７０およびアクセス制御部８０を有する。アドレス変換制御部６０は、マップ情報保持部６２、セレクタ６４およびアドレス変換部６６を有する。マップ情報保持部６２は、メモリモジュール３０へのメモリアクセスのデータの粒度を示す複数のマップ情報ＭＡＰ（ＭＡＰ３２、ＭＡＰ６４、ＭＡＰ１２８、ＭＡＰ２５６）を保持し、保持するマップ情報ＭＡＰをセレクタ６４に出力する。マップ情報ＭＡＰ３２は、データの粒度＝”３２Ｂ（バイト）”に対応し、マップ情報ＭＡＰ６４は、データの粒度＝”６４Ｂ”に対応する。マップ情報ＭＡＰ１２８は、データの粒度＝”１２８Ｂ”に対応し、マップ情報ＭＡＰ２５６は、データの粒度＝”２５６Ｂ”に対応する。
【００４６】
セレクタ６４は、要求デコーダ４０からの設定変更要求ＳＲＥＱに含まれるデータの粒度を示す情報に基づいて、マップ情報ＭＡＰのいずれかを選択し、選択したマップ情報ＭＡＰをアドレス変換部６６に出力する。なお、セレクタ６４は、選択したマップ情報ＭＡＰを保持する機能を有し、選択したマップ情報ＭＡＰをアドレス変換部６６に出力し続ける。マップ情報保持部６２は、情報保持部の一例であり、セレクタ６４は、選択部の一例であり、マップ情報ＭＡＰは、メモリアクセス要求ＭＲＥＱに含まれるアドレスのビットの割り当てを示す割り当て情報の一例である。
【００４７】
アドレス変換部６６は、セレクタ６４からのマップ情報ＭＡＰに基づいて、メモリアクセス要求ＭＲＥＱに含まれるアドレスＡＤのビットの割り当てを変更する。そして、アドレス変換部６６は、メモリアクセス要求ＭＲＥＱに含まれるアドレスＡＤを受信した場合、変更したビットの割り当てに基づいてアドレスＡＤのビットを入れ替え、ビットを入れ替えたアドレスＡＤをキュー制御部７０に出力する。アドレス変換部６６によるアドレスＡＤのビットの割り当てを変更する例は、図９に示される。
【００４８】
設定変更要求ＳＲＥＱに基づいてマップ情報保持部６２に予め保持されたマップ情報ＭＡＰのいずれかを選択することで、設定変更要求ＳＲＥＱに基づいてマップ情報ＭＡＰを生成する場合に比べて、アドレスＡＤのビットの割り当てを容易に変更することができる。また、設定変更要求ＳＲＥＱに基づいてマップ情報ＭＡＰを生成する場合に比べて、マップ情報ＭＡＰをアドレス変換部６６に早く出力することができる。
【００４９】
キュー制御部７０は、フラグ保持部７２および要求キュー７４を有する。フラグ保持部７２は、要求デコーダ４０から設定変更要求ＳＲＥＱを受ける毎にカウンタ値を更新するカウンタ７３を有する。フラグ保持部７２は、カウンタ７３のカウンタ値をグループフラグＧＦとして要求キュー７４に出力する。グループフラグＧＦの値は、フラグ値の一例である。
【００５０】
要求キュー７４は、メモリアクセス要求ＭＲＥＱをフラグ保持部７２からのグループフラグＧＦの値とともにそれぞれ保持する複数のエントリＥＮＴを有する。なお、メモリアクセス要求ＭＲＥＱのうち、リードライト種別Ｒ／Ｗとデータ長ＬＥＮとは、要求デコーダ４０から供給され、アドレスＡＤは、アドレス変換部６６から供給される。要求キュー７４は、アクセス制御部８０からの要求に基づいて、エントリＥＮＴに保持されたメモリアクセス要求のいずれかを選択し、選択したメモリアクセス要求ＭＲＥＱをアクセス制御部８０に出力する。キュー制御部７０の例は、図５に示される。要求キュー７４は、要求保持部の一例である。
【００５１】
アクセス制御部８０は、キュー制御部７０からのメモリアクセス要求ＭＲＥＱに基づいて、メモリ３１（０）にアクセスするアクセスコマンドＣＭＤを生成し、生成したアクセスコマンドＣＭＤをメモリ３１（０）に出力する。アクセスコマンドＣＭＤは、読み出しコマンド、書き込みコマンドまたはメモリ３１（０）をアクセス可能なアクティブ状態に設定するアクティブコマンド等を含む。
【００５２】
メモリモジュール３０に含まれるメモリ３１（０）−３１（７）の各々は、例えば、所定数のＳＤＲＡＭ（Synchronous Dynamic Random Access Memory）を含み、対応するチャネルＣＨからのアクセスコマンドＣＭＤに基づいて、互いに独立に動作する。
【００５３】
図５は、図４に示すキュー制御部７０の一例を示す。キュー制御部７０は、図４に示すフラグ保持部７２および要求キュー７４に加えて、ライトポインタ７６、リードポインタ７８および要求出力制御部７９を有する。要求キュー７４の各エントリＥＮＴは、メモリアクセス要求ＭＲＥＱを格納する領域と、エントリＥＮＴに有効なメモリアクセス要求ＭＲＥＱが格納されている場合にセットされるバリッドフラグＶと、グループフラグＧＦを格納する領域とを有する。
【００５４】
ライトポインタ７６は、メモリアクセス要求ＭＲＥＱを格納するエントリＥＮＴを示すポインタ情報を要求キュー７４に出力する。リードポインタ７８は、メモリアクセス要求ＭＲＥＱを取り出すエントリＥＮＴを示すポインタ情報を要求キュー７４に出力する。例えば、ライトポインタ７６は、メモリアクセス要求ＭＲＥＱが最も新しく格納されたエントリＥＮＴを示し、リードポインタ７８は、メモリアクセス要求ＭＲＥＱが最も古く格納されたエントリＥＮＴを示す。
【００５５】
要求出力制御部７９は、要求キュー７４の複数のエントリＥＮＴがそれぞれ保持するグループフラグＧＦの値に基づいて、複数のエントリＥＮＴがそれぞれ保持する複数のメモリアクセス要求ＭＲＥＱのアクセス制御部８０への出力順の入れ替えを制御する。すなわち、要求出力制御部７９は、互いに同じ値のグループフラグＧＦを保持する複数のエントリＥＮＴがそれぞれ保持する複数のメモリアクセス要求ＭＲＥＱのアクセス制御部８０への出力順の入れ替えを許可する。また、要求出力制御部７９は、互いに異なる値のグループフラグＧＦを保持する複数のエントリＥＮＴがそれぞれ保持する複数のメモリアクセス要求ＭＲＥＱのアクセス制御部８０への出力順の入れ替えを禁止する。
【００５６】
例えば、図５において、グループフラグＧＦが”０”のメモリアクセス要求ＭＲＥＱ０、ＭＲＥＱ１は、アクセス制御部８０への出力順の入れ替えが可能である。グループフラグＧＦが”１”のメモリアクセス要求ＭＲＥＱ２−ＭＲＥＱ４は、アクセス制御部８０への出力順の入れ替えが可能である。一方、グループフラグＧＦの値が互いに異なるメモリアクセス要求ＭＲＥＱ０、ＭＲＥＱ１と、メモリアクセス要求ＭＲＥＱ２−ＭＲＥＱ４との間での出力順の入れ替えは禁止される。
【００５７】
例えば、フラグ保持部７２は、要求デコーダ４０から設定変更要求ＳＲＥＱに基づいてアドレス変換部６６がアドレスＡＤのビットの割り当てを変更する毎に、グループフラグＧＦの値を”１”増加する。このため、図５に示す例では、３種類のグループフラグＧＦを保持する要求キュー７４は、３つのマップ情報ＭＡＰのいずれかによりアドレスＡＤが変換された６つのメモリアクセス要求ＭＲＥＱを保持する。
【００５８】
図５に示す要求キュー７４の状態は、最初の設定変更命令が実行された後、２つのメモリアクセス命令が実行され、メモリアクセス要求ＭＲＥＱ０、ＭＲＥＱ１がエントリＥＮＴに格納されたことを示す（ＧＦ＝”０”）。また、次の設定変更命令が実行された後、３つのメモリアクセス命令が実行され、メモリアクセス要求ＭＲＥＱ２、ＭＲＥＱ３、ＭＲＥＱ４がエントリＥＮＴに格納されたことを示す（ＧＦ＝”１”）。さらに、次の設定変更命令が実行された後、１つのメモリアクセス命令が実行され、メモリアクセス要求ＭＲＥＱ５がエントリＥＮＴに格納されたことを示す（ＧＦ＝”２”）。
【００５９】
換言すれば、メモリアクセス要求ＭＲＥＱ０、ＭＲＥＱ１と、メモリアクセス要求ＭＲＥＱ２、ＭＲＥＱ３、ＭＲＥＱ４と、メモリアクセス要求ＭＲＥＱ５とは、アドレスＡＤが変換されたマップ情報ＭＡＰが互いに異なる。例えば、メモリアクセス要求ＭＲＥＱ０、ＭＲＥＱ１は、マップ情報ＭＡＰ２５６によりビット位置が変換されたアドレスＡＤを含み、メモリ３１は、データの粒度＝”２５６Ｂ”でアクセスされる。
【００６０】
メモリアクセス要求ＭＲＥＱ２、ＭＲＥＱ３、ＭＲＥＱ４は、マップ情報ＭＡＰ６４によりビット位置が変換されたアドレスＡＤを含み、メモリ３１は、データの粒度＝”６４Ｂ”でアクセスされる。メモリアクセス要求ＭＲＥＱ５は、マップ情報ＭＡＰ１２８によりビット位置が変換されたアドレスＡＤを含み、メモリ３１は、データの粒度＝”１２８Ｂ”でアクセスされる。フラグ保持部７２による要求キュー７４の制御の概要は、図１３に示される。
【００６１】
図６は、図４に示す要求生成部１４および要求デコーダ４０の動作の一例を示す。要求生成部１４は、メモリアクセス命令（ロード命令またはストア命令）を示す情報、またはアドレス変換制御部６０によるアドレスＡＤのビットの割り当てを変更する設定変更命令を示す情報を、プロセッサコア１２（図４）から受信したことに基づいて動作する。
【００６２】
図６では、要求生成部１４がプロセッサコア１２から受信する情報は、ロード命令、ストア命令および設定変更命令で示される。ロード命令は、ロード命令を識別する命令コードｌｄ、データを読み出す記憶領域の先頭アドレスｓａｄｒｓ、読み出したデータを格納するレジスタ番号ｄｒｅｇおよび読み出すデータのサイズｌｅｎｇｔｈを含む。ストア命令は、ストア命令を識別する命令コードｓｔ、書き込むデータが格納された先頭レジスタ番号ソースｓｒｅｇ、データを書き込む記憶領域の先頭アドレスｄａｄｒｓおよび書き込むデータのサイズｌｅｎｇｔｈを含む。設定変更命令は、設定変更命令を識別する命令コードｍｃｏｎｆ、アドレスＡＤのビットの割り当てを示す割り当て情報ｍａｐおよびアドレスＡＤのビットの割り当てを変更するチャネルＣＨを示すチャネル情報ｃｈを含む。例えば、要求生成部１４は、各命令を要求デコーダ４０に出力するためのパケットを生成する。ストア命令では、書き込みデータがパケットのペイロードの領域に格納される。
【００６３】
要求生成部１４は、ロード命令のコードｌｄを受信した場合、ロード命令を示すオペコード”００”、先頭アドレスｓａｄｒｓおよびデータサイズｌｅｎｇｔｈを要求デコーダ４０に出力する。要求生成部１４は、ストア命令のコードｓｔを受信した場合、ストア命令を示すオペコード”０１”、先頭アドレスｄａｄｒｓおよびデータサイズｌｅｎｇｔｈを要求デコーダ４０に出力する。要求生成部１４は、設定変更命令のコードｍｃｏｎｆを受信した場合、設定変更命令を示すオペコード”１１”、チャネル情報ｃｈおよび割り当て情報ｍａｐを要求デコーダ４０に出力する。なお、設定変更命令は、割り当て情報ｍａｐおよびチャネル情報ｃｈの代わりに、割り当て情報ｍａｐおよびチャネル情報ｃｈを保持するレジスタを示すレジスタ番号を含んでもよい。
【００６４】
要求デコーダ４０は、要求生成部１４から受信するオペコードをデコードすることで、プロセッサ１０が発行した要求を検出する。要求デコーダ４０は、ロード命令を検出した場合、先頭アドレスｓａｄｒｓが割り当てられたメモリ３１に対応するチャネルＣＨに、リードコマンドＲＤ、アドレスＡＤおよびデータ長ＬＥＮを出力する。アドレスＡＤは、要求生成部１４から受信した先頭アドレスｓａｄｒｓであり、データ長ＬＥＮは、要求生成部１４から受信したデータのサイズｌｅｎｇｔｈである。
【００６５】
要求デコーダ４０は、ストア命令を検出した場合、先頭アドレスｄａｄｒｓが割り当てられたメモリ３１に対応するチャネルＣＨに、ライトコマンドＷＲ、アドレスＡＤおよびデータ長ＬＥＮを出力する。アドレスＡＤは、要求生成部１４から受信した先頭アドレスｄａｄｒｓであり、データ長ＬＥＮは、要求生成部１４から受信したデータのサイズｌｅｎｇｔｈである。
【００６６】
要求デコーダ４０は、設定変更命令を検出した場合、チャネル情報ｃｈが示すチャネルＣＨに、要求生成部１４から受信した割り当て情報ｍａｐを含む設定変更要求ＳＲＥＱを出力する。そして、割り当て情報ｍａｐを受信したチャネルＣＨが、アドレスＡＤのビットの割り当てを変更することで、メモリ３１に対して入出力するデータの粒度が変更される。以下の説明では、ロード命令は、ロード命令ｌｄとも称され、ストア命令は、ストア命令ｓｔとも称され、設定変更命令は、設定変更命令ｍｃｏｎｆとも称される。
【００６７】
図７は、図４に示す情報処理装置１００Ａの動作の一例を示す。すなわち、図７は、情報処理装置１００Ａの制御方法の一例を示す。図７に示す動作は、プロセッサコア１２が命令をフェッチしたことに基づいて開始される。
【００６８】
まず、ステップＳ１０において、プロセッサコア１２は、フェッチした命令をデコードする。次に、ステップＳ１２において、プロセッサコア１２は、デコードした命令が演算命令の場合、動作をステップＳ３２に移行し、デコードした命令が演算命令でない場合（すなわち、メモリアクセス命令または設定変更命令）、動作をステップＳ１４に移行する。
【００６９】
ステップＳ１４において、要求生成部１４は、プロセッサコア１２からの情報に基づいてオペコードを含む要求を生成し、生成した要求をメモリコントローラ２０に出力する。次に、ステップＳ１６において、要求デコーダ４０は、要求生成部１４から受信した要求に含まれるオペコードをデコードする。要求デコーダ４０は、オペコードが”１１”の場合、動作をステップＳ１８に移行し、オペコードが”１１”以外の場合、すなわち、メモリアクセス要求の場合、動作をステップＳ２４に移行する。
【００７０】
ステップＳ１８において、要求デコーダ４０は、要求生成部１４から受信した設定変更要求ＳＲＥＱに含まれる変更先情報が示すチャネルＣＨに、設定変更要求ＳＲＥＱに含まれる割り当て情報ｍａｐを出力する。ここで、変更先情報が示すチャネルＣＨは、アドレスＡＤのビットの割り当てを変更するチャネルＣＨである。
【００７１】
次に、ステップＳ２０において、要求デコーダ４０から設定変更要求ＳＲＥＱを受信したチャネルＣＨのアドレス変換制御部６０は、割り当て情報ｍａｐが示すマップ情報ＭＡＰを選択する。そして、アドレス変換制御部６０は、選択したマップ情報ＭＡＰにしたがって、アドレス変換部６６に、アドレスＡＤのビットを入れ替えるためにビットの割り当てを変更させる。すなわち、アドレス変換部６６に、メモリ３１に対して入出力するデータの粒度を変更させる。次に、ステップＳ２２において、要求デコーダ４０から設定変更要求ＳＲＥＱを受信したチャネルＣＨのキュー制御部７０は、受信した設定変更要求ＳＲＥＱに基づいて、カウンタ７３（図５）のカウンタ値（グループフラグＧＦ）を更新し、動作を終了する。
【００７２】
一方、メモリアクセス要求をデコードした場合、ステップＳ２４において、要求デコーダ４０は、アクセス対象のメモリ３１に対応するチャネルＣＨにメモリアクセス要求ＭＲＥＱを出力する。次に、ステップＳ２６において、メモリアクセス要求ＭＲＥＱを受信したチャネルＣＨのアドレス変換部６６は、メモリアクセス要求ＭＲＥＱに含まれるアドレスＡＤのビットを、マップ情報ＭＡＰに応じて入れ替える。そして、アドレス変換部６６は、ビットを入れ替えたアドレスＡＤをリードライト種別Ｒ／Ｗおよびデータ長ＬＥＮとともに要求キュー７４に格納する。
【００７３】
ステップＳ２８において、キュー制御部７０は、アクセス制御部８０からの要求に基づいて、要求キュー７４に保持されたメモリアクセス要求ＭＲＥＱのいずれかを取り出し、取り出したメモリアクセス要求ＭＲＥＱをアクセス制御部８０に出力する。なお、ステップＳ２８に示す動作は、プロセッサコア１２が実行する命令のフェッチタイミングと関係なく、メモリ３１がアクセス可能な場合で、要求キュー７４にメモリアクセス要求ＭＲＥＱが保持されている場合に実行される。
【００７４】
次に、ステップＳ３０において、アクセス制御部８０は、キュー制御部７０から転送されたメモリアクセス要求ＭＲＥＱに基づいて、アクセスコマンドＣＭＤを生成し、生成したアクセスコマンドＣＭＤをメモリ３１に出力する。そして、メモリ３１に対するリード動作またはライト動作が実行され、動作が終了する。一方、ステップＳ３２において、プロセッサコア１２は、演算命令を実行し、動作を終了する。
【００７５】
図８は、図４に示す情報処理装置１００Ａが実行する処理の一例を示す。情報処理装置１００Ａは、プロセッサ１０にプログラムを実行させることで、例えば、ニューラルネットワークにおけるレイヤ１の処理とレイヤ２の処理とを順次実行する。
【００７６】
レイヤ１の処理では、プログラムおよびワークデータ等を保持する共通領域が、チャネルＣＨ０に対応するメモリ３１（０）に割り当てられる。レイヤ１の処理の結果データを保持する結果データ領域が、チャネルＣＨ１−ＣＨ２に対応するメモリ３１（１）−３１（２）に割り当てられる。レイヤ１の処理の途中で得られる中間データを保持する中間データ領域が、チャネルＣＨ３−ＣＨ４に対応するメモリ３１（３）−３１（４）に割り当てられる。レイヤ１の処理で使用する入力データを保持する入力データ領域が、チャネルＣＨ５−ＣＨ７に対応するメモリ３１（５）−３１（７）に割り当てられる。
【００７７】
各メモリ３１（０）−３（７）に入出力されるデータの粒度は、データの特性に合わせた最適な粒度に設定される。すなわち、メモリ３１（０）−３１（４）に入出力されるデータの粒度は６４Ｂに設定され、メモリ３１（５）−３１（７）に入出力されるデータの粒度は２５６Ｂに設定される。レイヤ１の処理では、メモリ３１（５）−３１（７）のいずれかに保持されたデータを使用してデータ処理が実行され、データ処理により得られる中間データがメモリ３１（３）−３１（４）に格納される。また、メモリ３１（３）−３１（４）に格納された中間データを使用して次のデータ処理が実行され、データ処理により得られる結果データがメモリ３１（１）−３１（２）に格納される。
【００７８】
レイヤ２の処理では、プログラムおよびワークデータ等を保持する共通領域が、チャネルＣＨ０に対応するメモリ３１（０）に割り当てられる。レイヤ２の処理で使用する入力データを保持する入力データ領域が、チャネルＣＨ１−ＣＨ２に対応するメモリ３１（１）−３１（２）に割り当てられる。なお、レイヤ２の処理では、レイヤ１の処理により得られた結果データを入力データとして使用する。
【００７９】
また、レイヤ２の処理では、レイヤ２の処理の途中で得られる中間データを保持する中間データ領域が、チャネルＣＨ３−ＣＨ４に対応するメモリ３１（３）−３１（４）に割り当てられる。レイヤ３の処理により得られる結果データを保持する結果データ領域が、チャネルＣＨ５−ＣＨ７に対応するメモリ３１（５）−３１（７）に割り当てられる。
【００８０】
レイヤ２の処理では、メモリ３１（１）−３１（２）に保持されたレイヤ１の処理での結果データを使用してデータ処理が実行され、データ処理により得られる中間データがメモリ３１（３）−３１（４）に格納される。また、メモリ３１（３）−３１（４）に格納された中間データを使用して次のデータ処理が実行され、データ処理により得られる結果データがメモリ３１（５）−３１（７）のいずれかに格納される。
【００８１】
レイヤ２の処理においても、各メモリ３１（０）−３（７）に入出力されるデータの粒度は、データの特性に合わせた最適な粒度に設定される。すなわち、メモリ３１（０）−３１（２）に入出力されるデータの粒度は６４Ｂに設定され、メモリ３１（３）−３１（４）に入出力されるデータの粒度は３２Ｂに設定され、メモリ３１（５）−３１（７）に入出力されるデータの粒度は１２８Ｂに設定される。レイヤ２の処理では、メモリ３１（１）−３１（２）に保持されたデータを使用してデータ処理が実行され、データ処理により得られる中間データがメモリ３１（３）−３１（４）に格納される。また、メモリ３１（３）−３１（４）に格納された中間データを使用してデータ処理が実行され、データ処理により得られる結果データがメモリ３１（５）−３１（７）に格納される。
【００８２】
図９は、図８に示す各メモリ３１に入出力されるデータの粒度毎のアドレスＡＤのビットの割り当ての一例を示す。例えば、メモリアクセス要求ＭＲＥＱには、２５ビットのアドレスＡＤ［２９：５］が含まれる。アドレスＡＤのうち、１４ビットはロウアドレスＲＡ［１３：０］に使用され、５ビットはカラムアドレスＣＡ［４：０］に使用され、５ビットはバンクアドレスＢＡ［４：０］に使用され、１ビットはハーフアドレスＨＡ［０］に使用される。ロウアドレスＲＡ、カラムアドレスＣＡおよびハーフアドレスＨＡは、内部アドレスの一例である。
【００８３】
各メモリ３１では、３２個のバンクのいずれかがバンクアドレスＢＡに応じて選択され、選択されたバンク中の１６３８４個のロウ領域（記憶領域）のいずれかがロウアドレスＲＡに応じて選択される。さらに、選択されたロウ領域中の３２個のカラム領域（記憶領域）のいずれかがカラムアドレスＣＡに応じて選択される。バンク、ロウ領域およびカラム領域は、図１０で説明される。
【００８４】
そして、読み出し動作では、カラムアドレスＣＡにより選択されたカラム領域に保持されたデータがメモリ３１から読み出され、書き込み動作では、カラムアドレスＣＡにより選択されたカラム領域にデータが書き込まれる。なお、データの粒度が３２Ｂの場合、カラムアドレスＣＡにより選択されるカラム領域に対応するデータのうち、上半分のデータまたは下半分のデータがハーフアドレスＨＡにより選択される。
【００８５】
アドレスＡＤ［２９：１６］は、データの粒度に拘わりなく、ロウアドレスＲＡ［１３：０］に割り当てられる。データの粒度が６４Ｂ、１２８Ｂまたは２５６Ｂの場合、アドレスＡＤ［５］は、ハーフアドレスＨＡ［０］に割り当てられるが、ハーフアドレスＨＡ［０］は、メモリ３１のアクセスには使用されない。
【００８６】
データの粒度が３２Ｂの場合、アドレスＡＤ［１５：１１］がカラムアドレスＣＡ［４：０］に割り当てられ、アドレスＡＤ［１０］がハーフアドレスＨＡ［０］に割り当てられ、アドレスＡＤ［９：５］がバンクアドレスＢＡ［４：０］に割り当てられる。そして、メモリアクセス要求ＭＲＥＱ毎に、３２Ｂのデータがメモリ３１に対して入出力される。
【００８７】
データの粒度が６４Ｂの場合、アドレスＡＤ［１５：１１］がカラムアドレスＣＡ［４：０］に割り当てられ、アドレスＡＤ［１０：６］がバンクアドレスＢＡ［４：０］に割り当てられる。そして、メモリアクセス要求ＭＲＥＱ毎に、６４Ｂのデータがメモリ３１に対して入出力される。
【００８８】
データの粒度が１２８Ｂの場合、アドレスＡＤ［１５：１２］、ＡＤ［６］がカラムアドレスＣＡ［４：１］、ＣＡ［０］に割り当てられ、アドレスＡＤ［１１：７］がバンクアドレスＢＡ［４：０］に割り当てられる。そして、メモリアクセス要求ＭＲＥＱ毎に、１２８Ｂのデータがメモリ３１に対して入出力される。
【００８９】
データの粒度が２５６Ｂの場合、アドレスＡＤ［１５：１３］、ＡＤ［７：６］がカラムアドレスＣＡ［４：２］、ＣＡ［１：０］に割り当てられ、アドレスＡＤ［１２：８］がバンクアドレスＢＡ［４：０］に割り当てられる。そして、メモリアクセス要求ＭＲＥＱ毎に、２５６Ｂのデータがメモリ３１に対して入出力される。
【００９０】
データの粒度は、１回のメモリアクセス要求ＭＲＥＱに基づいて、１つのバンクＢＫに連続して入力または出力されるデータのバイト数に対応しており、バンクアドレスＢＡ［４：０］が割り当てられるアドレスＡＤのビット位置により決定される。バンクアドレスＢＡ［４：０］がアドレスＡＤの上位に割り当てられるほど、データの粒度は大きくなる。換言すれば、図４に示すアドレス変換制御部６０は、設定変更要求ＳＲＥＱに基づいて、バンクアドレス（ＢＡ）に割り当てるアドレスＡＤのビットを変更する。
【００９１】
なお、例えば、各アクセス制御部８０と各メモリ３１とは、１２８ビット（１６バイト）のデータ線で接続されているため、アクセス制御部８０は、メモリ３１に対して１２８ビット単位でデータを入出力する。このため、データの粒度が３２Ｂの場合、アクセス制御部８０は、メモリアクセス要求ＭＲＥＱに基づいて、２回連続でメモリ３１にアクセスする（バースト長＝”２”）。データの粒度が６４Ｂの場合、アクセス制御部８０は、メモリアクセス要求ＭＲＥＱに基づいて、４回連続でメモリ３１にアクセスする（バースト長＝”４”）。データの粒度が１２８Ｂの場合、アクセス制御部８０は、メモリアクセス要求ＭＲＥＱに基づいて、８回連続でメモリ３１にアクセスする（バースト長＝”８”）。データの粒度が２５６Ｂの場合、アクセス制御部８０は、メモリアクセス要求ＭＲＥＱに基づいて、８回連続でのメモリ３１へのアクセスを２回繰り返す（バースト長＝”８”のアクセスを２回）。
【００９２】
図１０は、図９に示す複数のデータの粒度のそれぞれでのメモリ３１のアクセスの一例を示す。各バンクＢＫ０−ＢＫ３１は、ロウアドレスＲＡにより識別される１６３８４個のロウ領域を有し（図１０の縦方向に並ぶ）、各ロウ領域は、さらにカラムアドレスＣＡにより識別される３２個のカラム領域を有する（図１０の横方向に並ぶ）。図１０において、バンクＢＫ０−ＢＫ３１内に示す数字を付けた矩形は、メモリ３１に対して入力または出力されるデータを示し、数字は、アドレスＡＤが順次増加する場合に入力または出力される順序を示す。
【００９３】
データの粒度が３２Ｂの場合、バンクアドレスＢＡは、図９に示したようにアドレスＡＤの最下位に割り当てられるため、アドレスＡＤの値が増加する毎に、隣のバンクＢＫが順次アクセスされ、バンクＢＫ毎に３２Ｂのデータが入力または出力される。データの粒度が６４Ｂの場合、バンクアドレスＢＡは、図９に示したように、アクセスに使用しないハーフアドレスＨＡを除きアドレスＡＤの最下位に割り当てられる。このため、アドレスＡＤの値が増加する毎に、隣のバンクＢＫが順次アクセスされ、バンクＢＫ毎に６４Ｂのデータが入力または出力される。
【００９４】
データの粒度が１２８Ｂの場合、バンクアドレスＢＡは、図９に示したようにアクセスに使用しないハーフアドレスＨＡを除き、アドレスＡＤの最下位ビットより１ビット上位に割り当てられる。このため、アドレスＡＤの値が２つ増加する毎に、隣のバンクＢＫが順次アクセスされ、バンクＢＫ毎に１２８Ｂのデータが入力または出力される。データの粒度が２５６Ｂの場合、バンクアドレスＢＡは、図９に示したようにアクセスに使用しないハーフアドレスＨＡを除き、アドレスＡＤの最下位ビットより２ビット上位に割り当てられる。このため、アドレスＡＤの値が４つ増加する毎に、隣のバンクＢＫが順次アクセスされ、バンクＢＫ毎に２５６Ｂのデータが入力または出力される。
【００９５】
設定変更要求ＳＲＥＱに基づいて、バンクアドレス（ＢＡ）に割り当てるアドレスＡＤのビットを変更することで、図１０に示すように、各粒度のデータのアクセスを、１つのバンクＢＫ内で実行することができる。したがって、複数のバンクＢＫをアクティブ状態に設定することなく、各粒度のデータをアクセスすることができ、複数のバンクＢＫをアクティブ状態に設定する場合に比べて、アクセス効率を向上することができる。
【００９６】
図１１は、図８に示す処理の流れの一例を示す。図１１に示す処理の流れは、プロセッサコア１２がプログラムを実行することで実現される。図１１に示す処理を開始する前、各チャネルＣＨ０−ＣＨ７において、データの粒度＝”６４Ｂ”に対応するマップ情報ＭＡＰ６４が、アドレスＡＤのビットの割り当てとして設定される。なお、図１１では、説明を分かりやすくするために、最小限のメモリアクセスを示すが、実際の処理では、入力データ、中間データおよび結果データのそれぞれは、例えば、数ＭＢ（メガバイト）を有する。
【００９７】
まず、プロセッサ１０は、チャネルＣＨ５−ＣＨ７のアドレスＡＤのビットの割り当てをマップ情報ＭＡＰ６４からマップ情報ＭＡＰ２５６に切り替える（図１１（ａ））。次に、プロセッサ１０は、チャネルＣＨ６に接続されたメモリ３１（６）から２５６Ｂのデータ（入力データ）を読み出すメモリアクセス要求ＭＲＥＱを発行する。メモリコントローラ２０は、粒度＝”２５６Ｂ”でメモリ３１（６）にアクセスし、読み出したデータをプロセッサ１０に出力する（図１１（ｂ））。プロセッサ１０は、メモリ３１（６）から読み出したデータを使用してレイヤ１のデータ処理を実行し、データ処理により６４Ｂの中間データを生成する（図１１（ｃ））。
【００９８】
プロセッサ１０は、チャネルＣＨ３に接続されたメモリ３１（３）に６４Ｂの中間データを書き込むメモリアクセス要求ＭＲＥＱを発行する。メモリコントローラ２０は、プロセッサコア１２から転送される６４Ｂの中間データを粒度＝”６４Ｂ”でメモリ３１（３）に格納する（図１１（ｄ））。この後、図１１（ｂ）−図１１（ｄ）と同様の処理が繰り返し実行される。さらに、チャネルＣＨ７、ＣＨ４を使用して、メモリ３１（７）からの２５６Ｂのデータの読み出し、読み出したデータの処理、処理により生成された６４Ｂの中間データのメモリ３１（４）への書き込みが実行される（図１１（ｅ））。
【００９９】
次に、プロセッサ１０は、メモリ３１（３）から６４Ｂの中間データを読み出すメモリアクセス要求ＭＲＥＱを発行する。メモリコントローラ２０は、粒度＝”６４Ｂ”でメモリ３１（３）にアクセスし、読み出したデータをプロセッサ１０に出力する（図１１（ｆ））。プロセッサ１０は、メモリ３１（３）から読み出した中間データを使用してデータ処理を実行し、データ処理により６４Ｂの結果データを生成する（図１１（ｇ））。
【０１００】
プロセッサ１０は、チャネルＣＨ１に接続されたメモリ３１（１）に６４Ｂの結果データを書き込むメモリアクセス要求ＭＲＥＱを発行する。メモリコントローラ２０は、プロセッサコア１２から転送される６４Ｂの結果データを粒度＝”６４Ｂ”でメモリ３１（１）に格納する（図１１（ｈ））。この後、図１１（ｆ）−図１１（ｈ）と同様の処理が繰り返し実行される。さらに、チャネルＣＨ４、ＣＨ２を使用して、メモリ３１（４）からの６４Ｂの中間データの読み出し、読み出した中間データの処理、処理により生成された６４Ｂの結果データのメモリ３１（２）への書き込みが実行される（図１１（ｉ））。そして、レイヤ１の処理が完了する。
【０１０１】
次に、プロセッサ１０は、チャネルＣＨ５−ＣＨ７のアドレスＡＤのビットの割り当てをマップ情報ＭＡＰ２５６からマップ情報ＭＡＰ１２８に切り替え、チャネルＣＨ３、ＣＨ４のアドレスＡＤのビットの割り当てをマップ情報ＭＡＰ６４からマップ情報ＭＡＰ３２に切り替える（図１１（ｊ））。次に、プロセッサ１０は、チャネルＣＨ１、ＣＨ３を使用して、メモリ３１（１）からの６４Ｂのデータの読み出し、読み出したデータの処理、処理により生成された３２Ｂの中間データのメモリ３１（３）への書き込みを実行する（図１１（ｋ））。また、プロセッサ１０は、チャネルＣＨ２、ＣＨ４を使用して、メモリ３１（２）からの６４Ｂのデータの読み出し、読み出したデータの処理、処理により生成された３２Ｂの中間データのメモリ３１（４）への書き込みを実行する（図１１（ｌ））。メモリコントローラ２０は、粒度＝”６４Ｂ”でメモリ３１（１）、３１（２）にアクセスし、粒度＝”３２Ｂ”でメモリ３１（３）、３１（４）にアクセスする。
【０１０２】
この後、プロセッサ１０は、チャネルＣＨ３、ＣＨ６を使用して、メモリ３１（３）からの６４Ｂの中間データの読み出し、読み出した中間データの処理、処理により生成された１２８Ｂの結果データのメモリ３１（６）への書き込みを実行する（図１１（ｍ））。また、プロセッサ１０は、チャネルＣＨ４、ＣＨ７を使用して、メモリ３１（４）からの６４Ｂの中間データの読み出し、読み出した中間データの処理、処理により生成された１２８Ｂの結果データのメモリ３１（７）への書き込みを実行する（図１１（ｎ））。メモリコントローラ２０は、粒度＝”３２Ｂ”でメモリ３１（３）、３１（６）にアクセスし、粒度＝”１２８Ｂ”でメモリ３１（６）、３１（７）にアクセスする。そして、レイヤ２の処理が完了する。
【０１０３】
図１２は、図１１に示す処理を実行するプログラムの一例を示す。図１２に示すプログラムは、プロセッサコア１２により実行される。プログラムの左側に付した数字は、説明のための行番号を示す。プログラム中に示す符号（ａ）−（ｌ）は、図１１に付した符号に対応しており、プログラムの記述ではない。命令コードｍｃｏｎｆを含む行には、図６で説明したように、アドレスＡＤのビットの割り当てを変更する設定変更命令が記述される。なお、図１２においても、説明を分かりやすくするために、最小限の命令を示すが、実際のプログラムでは、多数のロード命令と多数のストア命令が記述される。
【０１０４】
まず、レイヤ１の処理において、１行目から３行目には、チャネルＣＨ５−ＣＨ７のアドレスＡＤのビットの割り当てをマップ情報ＭＡＰ２５６に切り替える設定変更命令が記述される（図１２（ａ））。４行目から７行目では、ロード命令ｌｄによりメモリ３１からデータを読み出し、読み出したデータを処理し、処理により得られた中間データをストア命令ｓｔによりメモリ３１に書き込む処理が繰り返し実行される（図１２（ｂ）、（ｃ））。なお、図１２では省略するが、データを処理する複数の演算命令が、４行目と５行目の間、および６行目と７行目の間に記述される。例えば、処理するデータは、メモリ３１（６）（または３１（７））からレジスタに２５６Ｂ単位で読み出され、中間データは、レジスタからメモリ３１（３）（または３１（４））に６４Ｂ単位で書き込まれる。
【０１０５】
８行目から１１行目では、ロード命令ｌｄによりメモリ３１から中間データを読み出し、読み出した中間データを処理し、処理により得られた結果データをストア命令ｓｔによりメモリ３１に書き込む処理が繰り返し実行される（図１２（ｄ）、（ｅ））。例えば、処理する中間データは、メモリ３１（３）（または３１（４））からレジスタに６４Ｂ単位で読み出され、結果データは、レジスタからメモリ３１（１）（または３１（２））に６４Ｂ単位で書き込まれる。なお、図１２では省略するが、データを処理する複数の演算命令が、８行目と９行目の間、および１０行目と１１行目の間に記述される。
【０１０６】
次に、レイヤ２の処理では、まず、１２行目から１３行目に、チャネルＣＨ３−ＣＨ４のアドレスＡＤのビットの割り当てをマップ情報ＭＡＰ３２に切り替える設定変更命令が記述される。また、１４行目から１６行目には、チャネルＣＨ５−ＣＨ７のアドレスＡＤのビットの割り当てをマップ情報ＭＡＰ１２８に切り替える設定変更命令が記述される（図１２（ｆ））。
【０１０７】
１７行目から２０行目では、ロード命令ｌｄによりメモリ３１からデータを読み出し、読み出したデータを処理し、処理により得られた中間データをストア命令ｓｔによりメモリ３１に書き込む処理が繰り返し実行される（図１２（ｇ）、（ｈ））。例えば、処理するデータとして、レイヤ１での処理の結果データが、メモリ３１（１）（または３１（２））からレジスタに６４Ｂ単位で読み出される。レイヤ２での処理により生成される中間データは、レジスタからメモリ３１（３）（または３１（４））に３２Ｂ単位で書き込まれる。
【０１０８】
２１行目から２４行目では、ロード命令ｌｄによりメモリ３１から中間データを読み出し、読み出した中間データを処理し、処理により得られた結果データをストア命令ｓｔによりメモリ３１に書き込む処理が繰り返し実行される（図１２（ｉ）、（ｊ））。例えば、処理する中間データは、メモリ３１（３）（または３１（４））からレジスタに３２Ｂ単位で読み出され、結果データは、レジスタからメモリ３１（６）（または３１（７））に１２８Ｂ単位で書き込まれる。なお、図１２では省略するが、データを処理する複数の演算命令が、１７行目と１８行目の間、１９行目と２０行目の間、２１行目と２２行目の間、および２３行目と２４行目の間に記述される。
【０１０９】
図１３は、図５に示すキュー制御部７０による要求キュー７４の制御の概要を示す。図１３において、要求キュー７４に示す矩形はエントリＥＮＴを示し、各エントリＥＮＴの上に付した数字は、エントリＥＮＴに格納された順序を示す。
【０１１０】
図１３（Ａ）は、マップ情報ＭＡＰを切り替えない場合、すなわち、データの粒度が変更されず、常に一定の場合の要求キュー７４の制御の例を示す。図５に示す要求出力制御部７９は、例えば、アクセスするバンクＢＫが互いに同じメモリアクセス要求ＭＲＥＱを要求キュー７４が保持する場合、各バンクＢＫに対するメモリアクセスが連続するように、要求キュー７４からメモリアクセス要求ＭＲＥＱを取り出す。
【０１１１】
例えば、要求キュー７４に５番目に格納されたメモリアクセス要求ＭＲＥＱ（ＷＲ、ＢＡ１）は、２番目から４番目に格納されたメモリアクセス要求ＭＲＥＱを追い抜いて、１番目のメモリアクセス要求ＭＲＥＱ（ＷＲ、ＢＡ１）に続いて処理される。これにより、バンクＢＫをアクティブにする回数（アクティブコマンドの発行回数）を最小限にでき、メモリアクセス要求ＭＲＥＱの追い抜き処理をしない場合に比べて、メモリバスの使用効率を向上することができる。
【０１１２】
図１３（Ｂ）は、マップ情報ＭＡＰを切り替えてデータの粒度を変更する場合で、グループフラグＧＦを使用せずに要求キュー７４の制御を行う例を示す。例えば、４番目のメモリアクセス要求ＭＲＥＱが要求キュー７４に格納された後、マップ情報ＭＡＰが切り替えられ、メモリ３１に入出力するデータの粒度が変更される。１番目から４番目までのメモリアクセス要求ＭＲＥＱは、データの粒度＝”２５６”でアクセスされ、５番目および６番目のメモリアクセス要求ＭＲＥＱは、データの粒度＝”６４”でアクセスされる。
【０１１３】
図１３（Ｂ）においても、要求出力制御部７９は、各バンクＢＫに対するメモリアクセスが連続するように、例えば、要求キュー７４に５番目に格納されたメモリアクセス要求ＭＲＥＱ（ＷＲ、ＢＡ２）を、３番目に処理する。ここで、要求キュー７４に３番目に格納されたメモリアクセス要求ＭＲＥＱ（ＲＤ、ＢＡ２）と、要求キュー７４に５番目に格納されたメモリアクセス要求ＭＲＥＱ（ＷＲ、ＢＡ２）とは、メモリ３１の同じ記憶領域を参照するとする。３番目に処理されるライトアクセスと４番目に処理されるリードアクセスとは、データの粒度が異なる。このため、４番目の処理されるリードアクセスは、３番目に処理されるライトアクセスにより不正な位置に書き込まれたデータを読み出すおそれがある。すなわち、グループフラグＧＦを使用せずに要求キュー７４の制御を行う場合、メモリコントローラ２０は、誤動作するおそれがある。
【０１１４】
図１３（Ｃ）は、マップ情報ＭＡＰを切り替えてデータの粒度を変更する場合で、グループフラグＧＦを使用して要求キュー７４の制御を行う例を示す。要求キュー７４に格納されたメモリアクセス要求ＭＲＥＱの内容と、マップ情報ＭＡＰを切り替えるタイミングと、切り替えられるマップ情報ＭＡＰとは、図１３（Ｂ）と同じである。
【０１１５】
図１３（Ｃ）においても、要求出力制御部７９は、各バンクＢＫに対するメモリアクセスが連続するように、例えば、要求キュー７４に格納されたメモリアクセス要求ＭＲＥＱの追い抜き処理を試みる。しかしながら、要求出力制御部７９は、グループフラグＧＦの値が異なるメモリアクセス要求ＭＲＥＱの追い抜き処理を禁止する。換言すれば、メモリアクセス要求ＭＲＥＱの追い抜き処理は、グループフラグＧＦの値が同じメモリアクセス要求ＭＲＥＱの間で実行される。したがって、要求キュー７４に５番目に格納されたメモリアクセス要求ＭＲＥＱ（ＷＲ、ＢＡ２）が、要求キュー７４に３番目に格納されたメモリアクセス要求ＭＲＥＱ（ＲＤ、ＢＡ２）より前に処理されることはない。すなわち、グループフラグＧＦを使用して、メモリアクセス要求ＭＲＥＱの追い抜き処理を制御することで、図１３（Ｂ）に示したメモリコントローラ２０の誤動作を抑止することができる。
【０１１６】
以上、図４から図１３に示す実施形態においても、図１に示す実施形態と同様に、プロセッサ１０が実行するプログラムの処理に合わせて、メモリ３１に入出力するデータの粒度を、メモリ３１毎に動的に変更することができる。この結果、データの粒度を変更しない場合に比べて、メモリ３１に対するアクセス効率を向上することができ、情報処理装置１００Ａの処理性能を向上することができる。
【０１１７】
さらに、図４から図１３に示す実施形態では、以下に示す効果を得ることができる。すなわち、設定変更要求ＳＲＥＱに基づいてマップ情報ＭＡＰのいずれかを選択することで、設定変更要求ＳＲＥＱに基づいてマップ情報ＭＡＰを生成する場合に比べて、アドレスＡＤのビットの割り当て（すなわち、データの粒度）を容易に変更することができる。また、設定変更要求ＳＲＥＱに基づいてマップ情報ＭＡＰを生成する場合に比べて、マップ情報ＭＡＰをアドレス変換部６６に早く出力することができる。
【０１１８】
グループフラグＧＦの値が異なるメモリアクセス要求ＭＲＥＱ間において、メモリアクセス要求ＭＲＥＱのアクセス制御部８０への出力順の入れ替え（追い抜き）を禁止することで、メモリコントローラ２０の誤動作を抑止することができる。要求デコーダ４０を設けることで、メモリコントローラ２０が複数のメモリ制御部５０を有する場合にも、メモリアクセス要求ＭＲＥＱをアクセス対象のメモリ３１に対応するメモリ制御部５０に出力することができる。また、要求デコーダ４０を設けることで、メモリコントローラ２０が複数のメモリ制御部５０を有する場合にも、設定変更要求ＳＲＥＱをマップ情報ＭＡＰの変更対象のメモリ制御部５０に出力することができる。さらに、最小限のバンクＢＫをアクティブ状態に設定することで各粒度のデータをアクセスすることができ、複数のバンクＢＫをアクティブ状態に設定する場合に比べて、アクセス効率を向上することができる。
【０１１９】
図１４は、情報処理装置、メモリ制御装置および情報処理装置の制御方法の別の実施形態を示す。図４と同一または同様の要素については、同一の符号を付し、これ等については、詳細な説明は省略する。
【０１２０】
図１４に示す情報処理装置１００Ｂは、図４に示す各メモリ制御部５０に切替部９０を追加している。また、情報処理装置１００Ｂは、情報処理装置１００Ｂの動作を管理するシステム管理部９２を有する。システム管理部９２は、他の装置の一例である。なお、システム管理部９２は、情報処理装置１００Ｂの外部に設けられてもよい。情報処理装置１００Ｂのその他の構成は、図４に示す情報処理装置１００Ａと同様である。
【０１２１】
切替部９０は、システム管理部９２から出力される切替情報ＳＷに応じて、要求デコーダ４０が出力する設定変更要求ＳＲＥＱまたはシステム管理部９２が出力する設定変更要求ＳＲＥＱ２のいずれかを選択してセレクタ６４に出力する。システム管理部９２は、アドレス変換部６６にアドレスＡＤのビットの割り当てを変更させる場合、切替情報ＳＷを切替部９０に出力し、設定変更要求ＳＲＥＱ２の伝達経路とセレクタ６４とを切替部９０を介して接続する。そして、システム管理部９２は、設定変更要求ＳＲＥＱ２をセレクタ６４に出力し、アドレス変換部６６にアドレスＡＤのビットの割り当てを変更させる。なお、システム管理部９２は、複数のメモリ制御部５０のそれぞれに切替情報ＳＷと設定変更要求ＳＲＥＱ２とを互いに独立に出力可能であり、メモリ制御部５０のアドレス変換部６６にアドレスＡＤのビットの割り当てを個別に変更させることが可能である。
【０１２２】
システム管理部９２によりアドレスＡＤのビットの割り当てを変更することで、例えば、情報処理装置１００Ｂのイニシャライズ処理等において、各メモリ制御部５０に所定のマップ情報ＭＡＰを設定することができる。あるいは、テストモード等において、各メモリ制御部５０に所定のマップ情報ＭＡＰを設定することができる。すなわち、プログラムを実行することなく、各メモリ制御部５０に所定のマップ情報ＭＡＰを設定することができる。
【０１２３】
以上、図１４に示す実施形態においても、図１から図１３に示す実施形態と同様の効果を得ることができる。例えば、プロセッサ１０が実行するプログラムにより、メモリ３１に入出力するデータの粒度をメモリ３１毎に動的に変更することで、メモリ３１に対するアクセス効率を向上することができ、情報処理装置１００Ｂの処理性能を向上することができる。さらに、図１４に示す実施形態では、設定変更要求ＳＲＥＱ、ＳＲＥＱ２を選択的にセレクタ６４に供給する切替部９０を各メモリ制御部５０に設けることで、各メモリ制御部５０のマップ情報ＭＡＰをプログラムを実行することなく切り替えることができる。
【０１２４】
図１５は、情報処理装置、メモリ制御装置および情報処理装置の制御方法の別の実施形態におけるプロセッサコアが実行するプログラムの一例を示す。図１から図１４に示す実施形態で説明した要素と同一または同様の要素については、同一の符号を付し、これ等については、詳細な説明は省略する。
【０１２５】
図１５では、図１２に示したプログラムの１行目から３行目のｍｃｏｎｆ命令の代わりに１つのｍｃｏｎｆ命令（ｍｃｏｎｆ  ｃｏｄｅ）が記述される（図１５（ａ））。また、図１２に示したプログラムの１２行目から１６行目のｍｃｏｎｆ命令の代わりに１つのｍｃｏｎｆ命令（ｍｃｏｎｆ  ｃｏｄｅ）が記述される（図１５（ｂ））。プログラムのその他の記述は、図１２と同じである。
【０１２６】
図１５に示すプログラムは、図４または図１４に示すプロセッサ１０により実行される。また、図１５を示すプログラムを実行する情報処理装置は、要求生成部１４と要求デコーダ４０が異なることを除き、図４に示す情報処理装置１００Ａまたは図１４に示す情報処理装置１００Ｂと同様である。
【０１２７】
図１６は、図１５に示すプログラムを実行する情報処理装置の要求生成部１４Ｃおよび要求デコーダ４０Ｃの動作の一例を示す。要求生成部１４Ｃは、設定変更命令”ｍｃｏｎｆ  ｃｏｄｅ”を受信した場合、設定変更命令を示すオペコード”１１”と”ｃｏｄｅ”とを要求デコーダ４０に出力する。”ｃｏｄｅ”は、チャネルＣＨ０−ＣＨ７毎に、アドレスＡＤのビットの割り当ての変更の有無を示す情報（８ビット）と、割り当て情報ｍａｐ（１６ビット）とを含む。すなわち、図１６では、１つの設定変更命令”ｍｃｏｎｆ”により、全てのメモリ制御部５０のアドレスＡＤのビットの割り当て（すなわち、データの粒度）を変更することができる。割り当て情報ｍａｐは、２進数で”００”の場合に粒度”３２Ｂ”を示し、２進数で”０１”の場合に粒度”６４Ｂ”を示し、２進数で”１０”の場合に粒度”１２８Ｂ”を示し、２進数で”１１”の場合に粒度”２５６Ｂ”を示す。コードｌｄ、ｓｔを受信した場合の要求生成部１４Ｃの動作は、図６に示す要求生成部１４の動作と同じである。
【０１２８】
要求デコーダ４０Ｃは、要求生成部１４Ｃからオペコード”１１”と”ｃｏｄｅ”とを受信した場合、”ｃｏｄｅ”に含まれる情報に基づいて、アドレスＡＤのビットの割り当てを変更するチャネルＣＨに、割り当て情報ｍａｐを示す情報を含む設定変更要求ＳＲＥＱを出力する。ロード命令またはストア命令を検出した場合の要求デコーダ４０Ｃの動作は、図６に示す要求デコーダ４０の動作と同じである。
【０１２９】
以上、図１５および図１６に示す実施形態においても、図１から図１４に示す実施形態と同様の効果を得ることができる。さらに、図１５および図１６に示す実施形態では、以下に示す効果を得ることができる。すなわち、１つの設定変更命令”ｍｃｏｎｆ”により、全てのメモリ制御部５０においてアドレスＡＤのビットの割り当てを変更することができ、プログラムに記述される設定変更命令”ｍｃｏｎｆ”の数を図６に比べて少なくすることができる。この結果、アドレスＡＤのビットの割り当て（すなわち、データの粒度）の変更に掛かる時間を図６に比べて短縮することができ、情報処理装置の処理性能を向上することができる。
【０１３０】
以上の詳細な説明により、実施形態の特徴点および利点は明らかになるであろう。これは、特許請求の範囲がその精神および権利範囲を逸脱しない範囲で前述のような実施形態の特徴点および利点にまで及ぶことを意図するものである。また、当該技術分野において通常の知識を有する者であれば、あらゆる改良および変更に容易に想到できるはずである。したがって、発明性を有する実施形態の範囲を前述したものに限定する意図はなく、実施形態に開示された範囲に含まれる適当な改良物および均等物に拠ることも可能である。
【符号の説明】
【０１３１】
１…演算処理装置；３（３ａ、３ｂ）…メモリ制御装置；２…記憶装置；４…要求分配部；５（５ａ、５ｂ）…メモリ制御部；６…アドレス変換制御部；７…アクセス制御部；１０…プロセッサ；１２…プロセッサコア；１４、１４Ｃ…要求生成部；２０…メモリコントローラ；３０…メモリモジュール；３１（３１（０）−３１（７））…メモリ；４０、４０Ｃ…要求デコーダ；５０…メモリ制御部；６０…アドレス変換制御部；６２…マップ情報保持部；６４…セレクタ；６６…アドレス変換部；７０…キュー制御部；７２…フラグ保持部；７３…カウンタ；７４…要求キュー；７６…ライトポインタ；７８…リードポインタ；７９…要求出力制御部；８０…アクセス制御部；９０…切替部；９２…システム管理部；１００、１００Ａ、１００Ｂ…情報処理装置；ＡＤ…アドレス；ＢＡ…バンクアドレス；ＢＫ（ＢＫ０−ＢＫ３）…バンク；ＣＨ…チャネル；ＥＮＴ…エントリ；ＧＦ…グループフラグ；ＬＥＮ…データ長；ＭＡＰ（ＭＡＰ３２、ＭＡＰ６４、ＭＡＰ１２８、ＭＡＰ２５６）…マップ情報；ＭＲＥＱ…メモリアクセス要求；ＲＤ…リードコマンド；Ｒ／Ｗ…リードライト種別；ＳＲＥＱ…設定変更要求；ＷＲ…ライトコマンド
【図１】
2018194939.tif 000003
【図２】
2018194939.tif 000004
【図３】
2018194939.tif 000005
【図４】
2018194939.tif 000006
【図５】
2018194939.tif 000007
【図６】
2018194939.tif 000008
【図７】
2018194939.tif 000009
【図８】
2018194939.tif 000010
【図９】
2018194939.tif 000011
【図１０】
2018194939.tif 000012
【図１１】
2018194939.tif 000013
【図１２】
2018194939.tif 000014
【図１３】
2018194939.tif 000015
【図１４】
2018194939.tif 000016
【図１５】
2018194939.tif 000017
【図１６】
2018194939.tif 000018