JP6961997B2 - 情報処理装置、メモリ制御装置および情報処理装置の制御方法 - Google Patents

情報処理装置、メモリ制御装置および情報処理装置の制御方法 Download PDF

Info

Publication number
JP6961997B2
JP6961997B2 JP2017096342A JP2017096342A JP6961997B2 JP 6961997 B2 JP6961997 B2 JP 6961997B2 JP 2017096342 A JP2017096342 A JP 2017096342A JP 2017096342 A JP2017096342 A JP 2017096342A JP 6961997 B2 JP6961997 B2 JP 6961997B2
Authority
JP
Japan
Prior art keywords
memory
request
address
control unit
unit
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2017096342A
Other languages
English (en)
Other versions
JP2018194939A (ja
Inventor
和也 高久
文武 菅野
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2017096342A priority Critical patent/JP6961997B2/ja
Priority to US15/975,247 priority patent/US10599586B2/en
Publication of JP2018194939A publication Critical patent/JP2018194939A/ja
Application granted granted Critical
Publication of JP6961997B2 publication Critical patent/JP6961997B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30047Prefetch instructions; cache control instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/70Details relating to dynamic memory management

Description

本発明は、情報処理装置、メモリ制御装置および情報処理装置の制御方法に関する。
メモリ領域を獲得または開放する記述をプログラムに追加することで、プログラムに使用するメモリ領域のサイズは、動的に変更することが可能になるが、当該記述の追加前よりもプログラムは複雑になる。そこで、使用するメモリ領域のサイズと任意の番号を指定してライブラリ関数をプログラムから呼び出し、呼び出したライブラリ関数にメモリ領域を確保させることで、プログラムの記述を簡易にする手法が提案されている(例えば、特許文献1参照)。
特開平9−223064号公報
ところで、ニューラルネットワークを使用するディープラーニング等の処理は、例えば、情報処理装置に含まれる演算処理装置が実行するプログラムにより実行される。この種の情報処理装置において、記憶装置のアクセスを制御するメモリ制御装置は、演算処理装置が出力するメモリアクセス要求に含まれるアドレスにしたがって、記憶装置にデータを格納し、あるいは、記憶装置からデータを読み出す。ニューラルネットワークの各レイヤで使用するデータは、データサイズによっては記憶装置の複数の記憶領域に分散して保持される場合がある。処理に使用するデータが複数の記憶領域に分散して保持される場合、データのアドレスが連続する等、1つの記憶領域にまとまってデータが保持される場合に比べて、記憶装置のアクセス効率は低下する。
1つの側面では、本発明は、データ処理に使用するデータを保持する記憶装置のアクセス効率を向上することを目的とする。
一つの実施態様では、演算処理を実行する演算処理装置と、互いに異なるアドレスが割り当てられた複数の記憶装置と、演算処理装置からのメモリアクセス要求に基づいて、複数の記憶装置のアクセスを制御するメモリ制御装置とを有する情報処理装置において、メモリ制御装置は、複数の記憶装置のそれぞれに対応して設けられる複数のメモリ制御部と、メモリアクセス要求と演算処理装置からの設定変更要求とを複数のメモリ制御部のいずれかに出力する要求分配部を有し、複数のメモリ制御部の各々は、設定変更要求に基づいて変更したビットの割り当てに基づいて、メモリアクセス要求に含まれるアドレスのビットを入れ替えるアドレス変換制御部と、自メモリ制御部のアドレス変換制御部により、アドレスのビットが入れ替えられたメモリアクセス要求に基づいて、複数の記憶装置のうち、自メモリ制御部に対応する記憶装置にアクセスするアクセス制御部と、フラグ値を保持するとともに、前記演算処理装置から前記設定変更要求を受信する毎に、保持するフラグ値を更新するフラグ保持部と、前記アドレス変換制御部によりビットが入れ替えられたアドレスを含む前記メモリアクセス要求が、前記フラグ保持部が保持するフラグ値とともにそれぞれ格納される複数のエントリを有する要求保持部と、同一のフラグ値を保持する複数のエントリにそれぞれ保持された複数の前記メモリアクセス要求の前記アクセス制御部への出力順の入れ替えを許可し、異なるフラグ値を保持する複数のエントリにそれぞれ保持された複数の前記メモリアクセス要求の前記アクセス制御部への出力順の入れ替えを禁止する要求出力制御部を有する。
1つの側面では、本発明は、データ処理に使用するデータを保持する記憶装置のアクセス効率を向上することができる。
情報処理装置、メモリ制御装置および情報処理装置の制御方法の一実施形態を示す図である。 図1に示すメモリ制御部による記憶装置のアクセスの一例を示す図である。 図1に示す情報処理装置の動作の一例を示す図である。 情報処理装置、メモリ制御装置および情報処理装置の制御方法の別の実施形態を示す図である。 図4に示すキュー制御部の一例を示す図である。 図4に示す要求生成部および要求デコーダの動作の一例を示す図である。 図4に示す情報処理装置の動作の一例を示す図である。 図4に示す情報処理装置が実行する処理の一例を示す図である。 図8に示す各メモリに入出力されるデータの粒度毎のアドレスのビットの割り当ての一例を示す図である。 図9に示す複数のデータの粒度のそれぞれでのメモリのアクセスの一例を示す図である。 図8に示す処理の流れの一例を示す図である。 図11に示す処理を実行するプログラムの一例を示す図である。 図5に示すキュー制御部による要求キューの制御の概要を示す図である。 情報処理装置、メモリ制御装置および情報処理装置の制御方法の別の実施形態を示す図である。 情報処理装置、メモリ制御装置および情報処理装置の制御方法の別の実施形態におけるプロセッサコアが実行するプログラムの一例を示す図である。 図15に示すプログラムを実行する情報処理装置の要求生成部および要求デコーダの動作の一例を示す図である。
以下、図面を用いて実施形態を説明する。
図1は、情報処理装置、メモリ制御装置および情報処理装置の制御方法の一実施形態を示す。図1に示す情報処理装置100は、例えば、サーバであり、演算処理装置1、メモリ制御装置2および互いに異なるアドレスADが割り当てられた複数の記憶装置3(3a、3b)を有する。
演算処理装置1は、例えば、図示しない他の記憶装置に格納されたプログラムに記述された演算命令を実行することで、演算処理を実行する。また、演算処理装置1は、プログラムに記述されたメモリアクセス命令(ロード命令またはストア命令)のフェッチに基づいて、データ等の情報を記憶装置3に対して読み書きするメモリアクセス要求MREQをメモリ制御装置2に出力する。さらに、演算処理装置1は、プログラムに記述された設定変更命令のフェッチに基づいて、メモリ制御装置2の設定を変更する設定変更要求SREQをメモリ制御装置2に出力する。
メモリ制御装置2は、要求分配部4と、複数の記憶装置3a、3bのそれぞれに対応して設けられる複数のメモリ制御部5(5a、5b)とを有する。なお、情報処理装置100は、3以上の記憶装置3を有してもよく、この場合、メモリ制御装置2は、記憶装置3にそれぞれ対応する3以上のメモリ制御部5を有する。
要求分配部4は、演算処理装置1から受信するメモリアクセス要求MREQと設定変更要求SREQとを、メモリ制御部5a、5bのいずれかに出力する。設定変更要求SREQは、後述するアドレスのビットの割り当てを変更するメモリ制御部5を示す変更先情報と、変更するビットの割り当てを示す割り当て情報とを含む。例えば、要求分配部4は、演算処理装置1からのメモリアクセス要求MREQに含まれるアドレスADが割り当てられた記憶装置3に対応するメモリ制御部5にメモリアクセス要求MREQを出力する。要求分配部4は、演算処理装置1からの設定変更要求SREQに含まれる変更先情報が示すメモリ制御部5に設定変更要求SREQを出力する。
各メモリ制御部5a、5bは、アドレス変換制御部6およびアクセス制御部7をそれぞれ有する。アドレス変換制御部6は、要求分配部4から設定変更要求SREQを受信した場合、設定変更要求SREQに基づいて、メモリアクセス要求MREQに含まれるアドレスADのビットの割り当てを変更する。また、アドレス変換制御部6は、要求分配部4からメモリアクセス要求MREQを受信した場合、メモリアクセス要求MREQに含まれるアドレスADのビットを、変更した割り当てに応じて入れ替え、ビットを入れ替えたアドレスADをアクセス制御部7に出力する。
アクセス制御部7は、アドレス変換制御部6によりビットが入れ替えられたアドレスADを含むメモリアクセス要求MREQに基づいて、自メモリ制御部5に対応する記憶装置3にアクセスし、記憶装置3に対する読み出し動作または書き込み動作を実行する。なお、演算処理装置1とメモリ制御装置2との間、およびメモリ制御装置2と記憶装置3との間で転送されるデータの経路は省略される。
図2は、図1に示すメモリ制御部5による記憶装置3のアクセスの一例を示す。例えば、記憶装置3は、データを保持する4つのバンクBK(BK0−BK3)を有する。記憶装置3は、メモリ制御装置2から受信したアドレスADのうち、2ビットのバンクアドレスBAに基づいて、バンクBK0−BK3のいずれかを選択し、選択したバンクBKにデータDを書き込み、あるいは、選択したバンクBKからデータDを読み出す。
例えば、図1に示すアドレス変換制御部6は、メモリアクセス要求MREQに含まれるアドレスADのいずれかの2ビットを、設定変更要求SREQに基づいて変更されたアドレスのビットの割り当てに応じてバンクアドレスBAに割り当てる。バンクアドレスBAがアドレスADのビット[1:0]に割り当てられる場合、アドレスADが”0”から”1”、”2”、”3”と増加する毎に、バンクBK0、BK1、BK2、BK3、BK0、...が順次選択される。このため、データD(D1−D9)は、アドレスADが増加する毎に、異なるバンクBKから1つずつ読み出され、あるいは、異なるバンクBKに1つずつ書き込まれる(図2(A))。
バンクアドレスBAがアドレスADのビット[2:1]に割り当てられる場合、アドレスADが”0”から”1”、”2”、”3”と増加する毎に、バンクBK0、BK0、BK1、BK1、BK2、BK2、BK3、BK3、BK0、BK0、...が順次選択される。このため、データD(D1−D9)は、アドレスADが増加する毎に、異なるバンクBKから2つずつ読み出され、あるいは、異なるバンクBKに2つずつ書き込まれる(図2(B))。バンクアドレスBAがアドレスADのビット[3:2]に割り当てられる場合、アドレスADが”0”から”1”、”2”、”3”と増加する毎に、バンクBK0、BK0、BK0、BK0、BK1、BK1、BK1、BK1、BK2、BK2、...が順次選択される。このため、データD(D1−D9)は、アドレスADが増加する毎に、異なるバンクBKから4つずつ読み出され、あるいは、異なるバンクBKに4つずつ書き込まれる(図2(C))。
なお、各記憶装置3a、3bのアドレス端子は、最上位の2ビットにバンクアドレスBAが割り当てられている。このため、例えば、演算処理装置1がアドレスADを順次増加して出力し、メモリ制御部5がビットを入れ替えずにアドレスADを各記憶装置3a、3bに出力した場合、特定のバンクBKが集中してアクセスされる。
メモリアクセス要求MREQ毎にアクセス制御部7が連続して生成する複数のアドレスAD(増加または減少)に基づいて、各バンクBKから連続して読み出されるデータDの数は、データの粒度と称される。すなわち、データの粒度は、1回のメモリアクセス要求MREQに基づいて各バンクBKに入出力されるデータのサイズに対応している。プログラムを実行する演算処理装置1は、データ処理で扱うデータのサイズが変わる場合、設定変更要求SREQをメモリ制御装置2に出力し、アドレスのビットの割り当てを変更することで、データの粒度を変更する。
図2(A)は、データの粒度=”1”で記憶装置3にアクセスする場合のバンクアドレスBAの割り当てを示し、図2(B)は、データの粒度=”2”で記憶装置3にアクセスする場合のバンクアドレスBAの割り当てを示す。図2(C)は、データの粒度=”4”で記憶装置3にアクセスする場合のバンクアドレスBAの割り当てを示す。
例えば、異なるバンクBKを順次アクセスする、いわゆるインタリーブ動作を実行することで、各バンクBKをアクセス可能なアクティブ状態に設定するアクティブ動作を、他のバンクBKのアクセス動作の裏で実行することができる。このため、同じバンクBKを連続してアクセスし、アクセスの途中でアクティブ動作が挿入される場合に比べて、インタリーブ動作はアクセス効率を向上することができる。
一方、記憶装置3へのアクセスは、演算処理装置1が実行するデータ処理で扱うサイズを単位として実行されることが、記憶装置3のアクセス効率を向上するために望ましい。例えば、データ処理が2つのデータD1−D2、D3−D4、...を1単位として実行される場合、データの粒度を”2”に設定して記憶装置3にアクセスし、インタリーブ動作を実行することが望ましい。また、データ処理が4つのデータD1−D4、D5−D8、...を1単位として実行される場合、データの粒度を”4”に設定して記憶装置3にアクセスし、インタリーブ動作を実行することが望ましい。
これに対して、例えば、データ処理が4つのデータD1−D4、D5−D8、...を1単位として実行される場合に、4つのデータD1−D4を4つのバンクBK0−BK3に分散して保持する場合、各データ処理で4つのバンクBKがアクティブ状態に設定される。この場合、図2(C)に示す動作に比べて、アクティブ動作の実行頻度が高くなり、アクティブ動作を隠すことでアクセス効率を向上するインタリーブ動作の特徴が失われてしまう。
なお、例えば、データの粒度を”4”に設定して記憶装置3に書き込んだデータD1−D4を、データの粒度を”1”に設定して記憶装置3から読み出す場合、データD1、D2、D3は、データD1、D5、D9として読み出される。すなわち、演算処理装置1は、誤ったデータDを読み出す。誤ったデータDにより誤ったデータ処理が実行されることを抑止するため、記憶装置3へのデータの書き込みと、記憶装置3からのデータの読み出しは、データの粒度を揃えて実行される。
図3は、図1に示す情報処理装置100の動作の一例を示す。すなわち、図3は、情報処理装置100の制御方法の一例を示す。図3に示す例では、情報処理装置100は、演算処理装置1にプログラムを実行させることで、データ処理を実行する。データ処理に使用するデータは、記憶装置3a、3bのいずれかから読み出され、データ処理により得られた結果データは、記憶装置3a、3bのいずれかに書き込まれる。
図3に示す例では、演算処理装置1が実行するプログラムにより、処理1と処理2が実行される。例えば、情報処理装置100が、ディープラーニングを実行する場合、処理1および処理2のそれぞれは、ニューラルネットワークのレイヤによる処理である。処理1によるデータ処理で扱うデータの粒度は”4”であり、処理1によるデータ処理により得られる結果データの粒度は”1”である。一方、処理2によるデータ処理で扱うデータの粒度は”1”であり、処理1によるデータ処理により得られる結果データの粒度は”2”である。
処理1で使用するデータが格納される記憶装置3aのデータの粒度は、予め”4”に設定され、データ処理で使用するデータが記憶装置3aに格納される。また、処理1を開始する前に、データ処理の結果データを格納する記憶装置3bのデータの粒度が”1”に設定される。記憶装置3a、3bのデータの粒度は、データの粒度の設定情報を含む設定変更命令を記述したプログラムを演算処理装置1が実行して、演算処理装置1がメモリ制御装置2に設定変更要求SREQを出力することで設定される。
まず、演算処理装置1は、記憶装置3aからデータを粒度=”4”で読み出す(図3(a))。次に、演算処理装置1は、記憶装置3aからデータを読み出した順に処理1によるデータ処理を実行する(図3(b))。次に、演算処理装置1は、データ処理により得られた結果データを、得られた順に粒度=”1”で記憶装置3bに書き込む(図3(c))。
データ処理で使用するデータの粒度とデータ処理の結果データの粒度とは、互いに異なる。データの粒度を、複数の記憶装置3a、3bのそれぞれに独立に設定可能にし、データの粒度毎に記憶装置3a、3bを使い分けることで、記憶装置3a、3bのそれぞれに対するアクセス効率を最適にすることができる。さらに、プログラムによりデータの並び順を入れ替える等の処理を実行することなく、データ処理を実行しやすい順に記憶装置3aからデータを読み出し、次のデータ処理(例えば、処理2)を実行しやすい順に記憶装置3bにデータを書き込むことができる。
記憶装置3bに書き込まれた処理1の結果データは、処理2で使用される。また、処理2のデータ処理により得られる結果データの粒度は”2”である。このため、処理2において、演算処理装置1は、記憶装置3aのデータの粒度を”4”から”2”に変更する(図3(d)、(e))。なお、記憶装置3bのデータの粒度は、変更されない。
次に、演算処理装置1は、記憶装置3bからデータを粒度=”1”で読み出す(図3(f))。次に、演算処理装置1は、記憶装置3bからデータを読み出した順に処理2によるデータ処理を実行する(図3(g))。次に、演算処理装置1は、データ処理により得られた結果データを、得られた順に粒度=”2”で記憶装置3aに書き込む(図3(h))。
一方、メモリ制御装置2が、アドレス変換制御部6を持たない場合、演算処理装置1から出力されるアドレスADは、ビットを入れ替えずにアクセス制御部7を介して記憶装置3a(または3b)に供給される。この場合、図2で説明したように、順次増加するアドレスADにより記憶装置3a(または3b)がアクセスされるため、特定のバンクBKが集中してアクセスされる。
このため、各記憶装置3a、3bから読み出したデータは、各データ処理に使用するためにプログラムにより並べ替えられ、データ処理により得られた結果データは、各記憶装置3a、3bに書き込まれる前にプログラムにより並べ替えられる。あるいは、バンクBK0−BK3に分散して保持された処理対象のデータは、プログラムにより、バンクBK0−BK3に個別にアクセスすることで読み出される。結果データは、プログラムによりバンクBK0−BK3に個別にアクセスすることで、バンクBK0−BK3に分散して書き込まれる。この結果、アドレス変換制御部6を使用する場合に比べて、記憶装置3a、3bへのアクセス効率が低下する。
換言すれば、アドレス変換制御部6を使用する場合、各記憶装置3a、3bから読み出したデータを並べ替えることなくデータ処理を実行することができ、データ処理の結果データを並べ替えることなく各記憶装置3a、3bに書き込むことができる。すなわち、データを並べ替える処理を実行させるための命令群をプログラムに記述することなく、処理対象のデータを各記憶装置3a、3bから読み出し、結果データを各記憶装置3a、3bに書き込むことができる。この結果、アクセス効率を最適にして、処理1および処理2を実行することができ、アドレスADのビットを入れ替えない場合に比べて、情報処理装置100の処理性能を向上することができる。
以上、図1から図3に示す実施形態では、演算処理装置1が実行するプログラムの処理に合わせて、記憶装置3a、3bに入出力するデータの粒度を、記憶装置3a、3b毎に動的に変更することができる。この結果、データの粒度を変更しない場合に比べて、記憶装置3a、3bに対するアクセス効率を向上することができ、情報処理装置100の処理性能を向上することができる。
図4は、情報処理装置、メモリ制御装置および情報処理装置の制御方法の別の実施形態を示す。図1と同一または同様の要素については、同一の符号を付し、これ等については、詳細な説明は省略する。
図4に示す情報処理装置100Aは、例えば、サーバ等であり、プロセッサ10と、メモリコントローラ20と、互いに異なるアドレスが割り当てられた8つのメモリ31(31(0)−31(7))を含むメモリモジュール30とを有する。なお、メモリモジュール30に含まれるメモリ31の数は、8つに限定されない。プロセッサ10は、例えば、ディープラーニングの処理を実行するAI(Artificial Intelligence)プロセッサ等であり、プロセッサコア12と要求生成部14とを有する。なお、プロセッサ10は、図示しないキャッシュメモリおよび通信インタフェース等を有する。また、プロセッサ10は、複数のプロセッサコア12を有してもよい。
プロセッサ10は、演算処理を実行する演算処理装置の一例であり、メモリコントローラ20は、メモリ制御装置の一例であり、メモリ31は、記憶装置の一例である。なお、プロセッサ10とメモリコントローラ20との間、およびメモリコントローラ20とメモリモジュール30との間で転送されるデータの経路は省略される。
プロセッサコア12は、図示しない命令デコーダ、浮動小数点積和演算器等の各種演算器、複数のレジスタ等を有する。プロセッサコア12は、メモリモジュール30に格納されたプログラムに記述された演算命令を実行することで演算処理を実行する。また、プログラムに記述された命令がメモリモジュール30へのアクセスを示す場合、または、メモリコントローラ20の設定の変更を示す場合、プロセッサコア12は、命令に含まれるオペコードおよびオペランドの情報を要求生成部14に出力する。
以下では、メモリモジュール30へのアクセスを示す命令は、メモリアクセス命令と称され、メモリコントローラ20の設定の変更を示す命令は、設定変更命令と称される。例えば、設定変更命令は、メモリアクセス要求MREQに含まれるアドレスADのビットの割り当てをメモリコントローラ20に変更させる命令である。要求生成部14は、プロセッサコア12からメモリアクセス命令を示す情報を受信した場合、メモリアクセス要求MREQを生成してメモリコントローラ20に出力する。メモリアクセス要求MREQは、メモリモジュール30の各メモリ31に対してリードアクセスまたはライトアクセスする場合に発行される。また、要求生成部14は、プロセッサコア12から設定変更命令を示す情報を受信した場合、設定変更要求SREQを生成してメモリコントローラ20に出力する。
メモリコントローラ20は、要求デコーダ40と、メモリ31(0)−31(7)にそれぞれ対応して設けられる8つのメモリ制御部50とを有する。
要求デコーダ40は、メモリアクセス要求MREQをデコードした場合、リードライト種別R/W、アドレスAD(物理アドレス)およびアクセスするデータのデータ長LENを、メモリアクセス要求MREQとしてメモリ制御部50のいずれかに出力する。要求デコーダ40は、メモリアクセス要求MREQに含まれるアドレスADが割り当てられたメモリ31に対応するメモリ制御部50にメモリアクセス要求MREQを出力する。リードライト種別R/Wは、図6で説明するリードコマンドRDまたはライトコマンドWRである。メモリコントローラ20に要求デコーダ40を設けることで、メモリコントローラ20が複数のメモリ制御部50を有する場合にも、メモリアクセス要求MREQをアクセス対象のメモリ31に対応するメモリ制御部50に出力することができる。
また、要求デコーダ40は、メモリコントローラ20の設定を変更する設定変更要求SREQをデコードした場合、設定変更要求SREQをメモリ制御部50のいずれかに出力する。要求デコーダ40は、設定変更要求SREQに含まれる変更先情報が示すメモリ制御部50に設定変更要求SREQを出力する。メモリコントローラ20に要求デコーダ40を設けることで、メモリコントローラ20が複数のメモリ制御部50を有する場合にも、設定変更要求SREQを後述するマップ情報MAPの変更対象のメモリ制御部50に出力することができる。要求生成部14および要求デコーダ40の動作の例は、図6に示される。要求デコーダ40は、要求分配部の一例である。
メモリ制御部50は、互いに同じ回路構成を有するため、以下では、メモリ31(0)に接続されるメモリ制御部50の構成が説明される。また、以下では、メモリ31(0)−31(7)に接続されるメモリ制御部50は、それぞれチャネルCH0−CH7とも称される。各メモリ31に接続されるチャネルCHの番号は、メモリ31の括弧内の数値に等しい。特に限定されないが、各メモリ制御部50と各メモリ31とを接続するデータ線は、例えば、128ビット(16バイト)である。
メモリ制御部50は、アドレス変換制御部60、キュー制御部70およびアクセス制御部80を有する。アドレス変換制御部60は、マップ情報保持部62、セレクタ64およびアドレス変換部66を有する。マップ情報保持部62は、メモリモジュール30へのメモリアクセスのデータの粒度を示す複数のマップ情報MAP(MAP32、MAP64、MAP128、MAP256)を保持し、保持するマップ情報MAPをセレクタ64に出力する。マップ情報MAP32は、データの粒度=”32B(バイト)”に対応し、マップ情報MAP64は、データの粒度=”64B”に対応する。マップ情報MAP128は、データの粒度=”128B”に対応し、マップ情報MAP256は、データの粒度=”256B”に対応する。
セレクタ64は、要求デコーダ40からの設定変更要求SREQに含まれるデータの粒度を示す情報に基づいて、マップ情報MAPのいずれかを選択し、選択したマップ情報MAPをアドレス変換部66に出力する。なお、セレクタ64は、選択したマップ情報MAPを保持する機能を有し、選択したマップ情報MAPをアドレス変換部66に出力し続ける。マップ情報保持部62は、情報保持部の一例であり、セレクタ64は、選択部の一例であり、マップ情報MAPは、メモリアクセス要求MREQに含まれるアドレスのビットの割り当てを示す割り当て情報の一例である。
アドレス変換部66は、セレクタ64からのマップ情報MAPに基づいて、メモリアクセス要求MREQに含まれるアドレスADのビットの割り当てを変更する。そして、アドレス変換部66は、メモリアクセス要求MREQに含まれるアドレスADを受信した場合、変更したビットの割り当てに基づいてアドレスADのビットを入れ替え、ビットを入れ替えたアドレスADをキュー制御部70に出力する。アドレス変換部66によるアドレスADのビットの割り当てを変更する例は、図9に示される。
設定変更要求SREQに基づいてマップ情報保持部62に予め保持されたマップ情報MAPのいずれかを選択することで、設定変更要求SREQに基づいてマップ情報MAPを生成する場合に比べて、アドレスADのビットの割り当てを容易に変更することができる。また、設定変更要求SREQに基づいてマップ情報MAPを生成する場合に比べて、マップ情報MAPをアドレス変換部66に早く出力することができる。
キュー制御部70は、フラグ保持部72および要求キュー74を有する。フラグ保持部72は、要求デコーダ40から設定変更要求SREQを受ける毎にカウンタ値を更新するカウンタ73を有する。フラグ保持部72は、カウンタ73のカウンタ値をグループフラグGFとして要求キュー74に出力する。グループフラグGFの値は、フラグ値の一例である。
要求キュー74は、メモリアクセス要求MREQをフラグ保持部72からのグループフラグGFの値とともにそれぞれ保持する複数のエントリENTを有する。なお、メモリアクセス要求MREQのうち、リードライト種別R/Wとデータ長LENとは、要求デコーダ40から供給され、アドレスADは、アドレス変換部66から供給される。要求キュー74は、アクセス制御部80からの要求に基づいて、エントリENTに保持されたメモリアクセス要求のいずれかを選択し、選択したメモリアクセス要求MREQをアクセス制御部80に出力する。キュー制御部70の例は、図5に示される。要求キュー74は、要求保持部の一例である。
アクセス制御部80は、キュー制御部70からのメモリアクセス要求MREQに基づいて、メモリ31(0)にアクセスするアクセスコマンドCMDを生成し、生成したアクセスコマンドCMDをメモリ31(0)に出力する。アクセスコマンドCMDは、読み出しコマンド、書き込みコマンドまたはメモリ31(0)をアクセス可能なアクティブ状態に設定するアクティブコマンド等を含む。
メモリモジュール30に含まれるメモリ31(0)−31(7)の各々は、例えば、所定数のSDRAM(Synchronous Dynamic Random Access Memory)を含み、対応するチャネルCHからのアクセスコマンドCMDに基づいて、互いに独立に動作する。
図5は、図4に示すキュー制御部70の一例を示す。キュー制御部70は、図4に示すフラグ保持部72および要求キュー74に加えて、ライトポインタ76、リードポインタ78および要求出力制御部79を有する。要求キュー74の各エントリENTは、メモリアクセス要求MREQを格納する領域と、エントリENTに有効なメモリアクセス要求MREQが格納されている場合にセットされるバリッドフラグVと、グループフラグGFを格納する領域とを有する。
ライトポインタ76は、メモリアクセス要求MREQを格納するエントリENTを示すポインタ情報を要求キュー74に出力する。リードポインタ78は、メモリアクセス要求MREQを取り出すエントリENTを示すポインタ情報を要求キュー74に出力する。例えば、ライトポインタ76は、メモリアクセス要求MREQが最も新しく格納されたエントリENTを示し、リードポインタ78は、メモリアクセス要求MREQが最も古く格納されたエントリENTを示す。
要求出力制御部79は、要求キュー74の複数のエントリENTがそれぞれ保持するグループフラグGFの値に基づいて、複数のエントリENTがそれぞれ保持する複数のメモリアクセス要求MREQのアクセス制御部80への出力順の入れ替えを制御する。すなわち、要求出力制御部79は、互いに同じ値のグループフラグGFを保持する複数のエントリENTがそれぞれ保持する複数のメモリアクセス要求MREQのアクセス制御部80への出力順の入れ替えを許可する。また、要求出力制御部79は、互いに異なる値のグループフラグGFを保持する複数のエントリENTがそれぞれ保持する複数のメモリアクセス要求MREQのアクセス制御部80への出力順の入れ替えを禁止する。
例えば、図5において、グループフラグGFが”0”のメモリアクセス要求MREQ0、MREQ1は、アクセス制御部80への出力順の入れ替えが可能である。グループフラグGFが”1”のメモリアクセス要求MREQ2−MREQ4は、アクセス制御部80への出力順の入れ替えが可能である。一方、グループフラグGFの値が互いに異なるメモリアクセス要求MREQ0、MREQ1と、メモリアクセス要求MREQ2−MREQ4との間での出力順の入れ替えは禁止される。
例えば、フラグ保持部72は、要求デコーダ40から設定変更要求SREQに基づいてアドレス変換部66がアドレスADのビットの割り当てを変更する毎に、グループフラグGFの値を”1”増加する。このため、図5に示す例では、3種類のグループフラグGFを保持する要求キュー74は、3つのマップ情報MAPのいずれかによりアドレスADが変換された6つのメモリアクセス要求MREQを保持する。
図5に示す要求キュー74の状態は、最初の設定変更命令が実行された後、2つのメモリアクセス命令が実行され、メモリアクセス要求MREQ0、MREQ1がエントリENTに格納されたことを示す(GF=”0”)。また、次の設定変更命令が実行された後、3つのメモリアクセス命令が実行され、メモリアクセス要求MREQ2、MREQ3、MREQ4がエントリENTに格納されたことを示す(GF=”1”)。さらに、次の設定変更命令が実行された後、1つのメモリアクセス命令が実行され、メモリアクセス要求MREQ5がエントリENTに格納されたことを示す(GF=”2”)。
換言すれば、メモリアクセス要求MREQ0、MREQ1と、メモリアクセス要求MREQ2、MREQ3、MREQ4と、メモリアクセス要求MREQ5とは、アドレスADが変換されたマップ情報MAPが互いに異なる。例えば、メモリアクセス要求MREQ0、MREQ1は、マップ情報MAP256によりビット位置が変換されたアドレスADを含み、メモリ31は、データの粒度=”256B”でアクセスされる。
メモリアクセス要求MREQ2、MREQ3、MREQ4は、マップ情報MAP64によりビット位置が変換されたアドレスADを含み、メモリ31は、データの粒度=”64B”でアクセスされる。メモリアクセス要求MREQ5は、マップ情報MAP128によりビット位置が変換されたアドレスADを含み、メモリ31は、データの粒度=”128B”でアクセスされる。フラグ保持部72による要求キュー74の制御の概要は、図13に示される。
図6は、図4に示す要求生成部14および要求デコーダ40の動作の一例を示す。要求生成部14は、メモリアクセス命令(ロード命令またはストア命令)を示す情報、またはアドレス変換制御部60によるアドレスADのビットの割り当てを変更する設定変更命令を示す情報を、プロセッサコア12(図4)から受信したことに基づいて動作する。
図6では、要求生成部14がプロセッサコア12から受信する情報は、ロード命令、ストア命令および設定変更命令で示される。ロード命令は、ロード命令を識別する命令コードld、データを読み出す記憶領域の先頭アドレスsadrs、読み出したデータを格納するレジスタ番号dregおよび読み出すデータのサイズlengthを含む。ストア命令は、ストア命令を識別する命令コードst、書き込むデータが格納された先頭レジスタ番号ソースsreg、データを書き込む記憶領域の先頭アドレスdadrsおよび書き込むデータのサイズlengthを含む。設定変更命令は、設定変更命令を識別する命令コードmconf、アドレスADのビットの割り当てを示す割り当て情報mapおよびアドレスADのビットの割り当てを変更するチャネルCHを示すチャネル情報chを含む。例えば、要求生成部14は、各命令を要求デコーダ40に出力するためのパケットを生成する。ストア命令では、書き込みデータがパケットのペイロードの領域に格納される。
要求生成部14は、ロード命令のコードldを受信した場合、ロード命令を示すオペコード”00”、先頭アドレスsadrsおよびデータサイズlengthを要求デコーダ40に出力する。要求生成部14は、ストア命令のコードstを受信した場合、ストア命令を示すオペコード”01”、先頭アドレスdadrsおよびデータサイズlengthを要求デコーダ40に出力する。要求生成部14は、設定変更命令のコードmconfを受信した場合、設定変更命令を示すオペコード”11”、チャネル情報chおよび割り当て情報mapを要求デコーダ40に出力する。なお、設定変更命令は、割り当て情報mapおよびチャネル情報chの代わりに、割り当て情報mapおよびチャネル情報chを保持するレジスタを示すレジスタ番号を含んでもよい。
要求デコーダ40は、要求生成部14から受信するオペコードをデコードすることで、プロセッサ10が発行した要求を検出する。要求デコーダ40は、ロード命令を検出した場合、先頭アドレスsadrsが割り当てられたメモリ31に対応するチャネルCHに、リードコマンドRD、アドレスADおよびデータ長LENを出力する。アドレスADは、要求生成部14から受信した先頭アドレスsadrsであり、データ長LENは、要求生成部14から受信したデータのサイズlengthである。
要求デコーダ40は、ストア命令を検出した場合、先頭アドレスdadrsが割り当てられたメモリ31に対応するチャネルCHに、ライトコマンドWR、アドレスADおよびデータ長LENを出力する。アドレスADは、要求生成部14から受信した先頭アドレスdadrsであり、データ長LENは、要求生成部14から受信したデータのサイズlengthである。
要求デコーダ40は、設定変更命令を検出した場合、チャネル情報chが示すチャネルCHに、要求生成部14から受信した割り当て情報mapを含む設定変更要求SREQを出力する。そして、割り当て情報mapを受信したチャネルCHが、アドレスADのビットの割り当てを変更することで、メモリ31に対して入出力するデータの粒度が変更される。以下の説明では、ロード命令は、ロード命令ldとも称され、ストア命令は、ストア命令stとも称され、設定変更命令は、設定変更命令mconfとも称される。
図7は、図4に示す情報処理装置100Aの動作の一例を示す。すなわち、図7は、情報処理装置100Aの制御方法の一例を示す。図7に示す動作は、プロセッサコア12が命令をフェッチしたことに基づいて開始される。
まず、ステップS10において、プロセッサコア12は、フェッチした命令をデコードする。次に、ステップS12において、プロセッサコア12は、デコードした命令が演算命令の場合、動作をステップS32に移行し、デコードした命令が演算命令でない場合(すなわち、メモリアクセス命令または設定変更命令)、動作をステップS14に移行する。
ステップS14において、要求生成部14は、プロセッサコア12からの情報に基づいてオペコードを含む要求を生成し、生成した要求をメモリコントローラ20に出力する。次に、ステップS16において、要求デコーダ40は、要求生成部14から受信した要求に含まれるオペコードをデコードする。要求デコーダ40は、オペコードが”11”の場合、動作をステップS18に移行し、オペコードが”11”以外の場合、すなわち、メモリアクセス要求の場合、動作をステップS24に移行する。
ステップS18において、要求デコーダ40は、要求生成部14から受信した設定変更要求SREQに含まれる変更先情報が示すチャネルCHに、設定変更要求SREQに含まれる割り当て情報mapを出力する。ここで、変更先情報が示すチャネルCHは、アドレスADのビットの割り当てを変更するチャネルCHである。
次に、ステップS20において、要求デコーダ40から設定変更要求SREQを受信したチャネルCHのアドレス変換制御部60は、割り当て情報mapが示すマップ情報MAPを選択する。そして、アドレス変換制御部60は、選択したマップ情報MAPにしたがって、アドレス変換部66に、アドレスADのビットを入れ替えるためにビットの割り当てを変更させる。すなわち、アドレス変換部66に、メモリ31に対して入出力するデータの粒度を変更させる。次に、ステップS22において、要求デコーダ40から設定変更要求SREQを受信したチャネルCHのキュー制御部70は、受信した設定変更要求SREQに基づいて、カウンタ73(図5)のカウンタ値(グループフラグGF)を更新し、動作を終了する。
一方、メモリアクセス要求をデコードした場合、ステップS24において、要求デコーダ40は、アクセス対象のメモリ31に対応するチャネルCHにメモリアクセス要求MREQを出力する。次に、ステップS26において、メモリアクセス要求MREQを受信したチャネルCHのアドレス変換部66は、メモリアクセス要求MREQに含まれるアドレスADのビットを、マップ情報MAPに応じて入れ替える。そして、アドレス変換部66は、ビットを入れ替えたアドレスADをリードライト種別R/Wおよびデータ長LENとともに要求キュー74に格納する。
ステップS28において、キュー制御部70は、アクセス制御部80からの要求に基づいて、要求キュー74に保持されたメモリアクセス要求MREQのいずれかを取り出し、取り出したメモリアクセス要求MREQをアクセス制御部80に出力する。なお、ステップS28に示す動作は、プロセッサコア12が実行する命令のフェッチタイミングと関係なく、メモリ31がアクセス可能な場合で、要求キュー74にメモリアクセス要求MREQが保持されている場合に実行される。
次に、ステップS30において、アクセス制御部80は、キュー制御部70から転送されたメモリアクセス要求MREQに基づいて、アクセスコマンドCMDを生成し、生成したアクセスコマンドCMDをメモリ31に出力する。そして、メモリ31に対するリード動作またはライト動作が実行され、動作が終了する。一方、ステップS32において、プロセッサコア12は、演算命令を実行し、動作を終了する。
図8は、図4に示す情報処理装置100Aが実行する処理の一例を示す。情報処理装置100Aは、プロセッサ10にプログラムを実行させることで、例えば、ニューラルネットワークにおけるレイヤ1の処理とレイヤ2の処理とを順次実行する。
レイヤ1の処理では、プログラムおよびワークデータ等を保持する共通領域が、チャネルCH0に対応するメモリ31(0)に割り当てられる。レイヤ1の処理の結果データを保持する結果データ領域が、チャネルCH1−CH2に対応するメモリ31(1)−31(2)に割り当てられる。レイヤ1の処理の途中で得られる中間データを保持する中間データ領域が、チャネルCH3−CH4に対応するメモリ31(3)−31(4)に割り当てられる。レイヤ1の処理で使用する入力データを保持する入力データ領域が、チャネルCH5−CH7に対応するメモリ31(5)−31(7)に割り当てられる。
各メモリ31(0)−3(7)に入出力されるデータの粒度は、データの特性に合わせた最適な粒度に設定される。すなわち、メモリ31(0)−31(4)に入出力されるデータの粒度は64Bに設定され、メモリ31(5)−31(7)に入出力されるデータの粒度は256Bに設定される。レイヤ1の処理では、メモリ31(5)−31(7)のいずれかに保持されたデータを使用してデータ処理が実行され、データ処理により得られる中間データがメモリ31(3)−31(4)に格納される。また、メモリ31(3)−31(4)に格納された中間データを使用して次のデータ処理が実行され、データ処理により得られる結果データがメモリ31(1)−31(2)に格納される。
レイヤ2の処理では、プログラムおよびワークデータ等を保持する共通領域が、チャネルCH0に対応するメモリ31(0)に割り当てられる。レイヤ2の処理で使用する入力データを保持する入力データ領域が、チャネルCH1−CH2に対応するメモリ31(1)−31(2)に割り当てられる。なお、レイヤ2の処理では、レイヤ1の処理により得られた結果データを入力データとして使用する。
また、レイヤ2の処理では、レイヤ2の処理の途中で得られる中間データを保持する中間データ領域が、チャネルCH3−CH4に対応するメモリ31(3)−31(4)に割り当てられる。レイヤ3の処理により得られる結果データを保持する結果データ領域が、チャネルCH5−CH7に対応するメモリ31(5)−31(7)に割り当てられる。
レイヤ2の処理では、メモリ31(1)−31(2)に保持されたレイヤ1の処理での結果データを使用してデータ処理が実行され、データ処理により得られる中間データがメモリ31(3)−31(4)に格納される。また、メモリ31(3)−31(4)に格納された中間データを使用して次のデータ処理が実行され、データ処理により得られる結果データがメモリ31(5)−31(7)のいずれかに格納される。
レイヤ2の処理においても、各メモリ31(0)−3(7)に入出力されるデータの粒度は、データの特性に合わせた最適な粒度に設定される。すなわち、メモリ31(0)−31(2)に入出力されるデータの粒度は64Bに設定され、メモリ31(3)−31(4)に入出力されるデータの粒度は32Bに設定され、メモリ31(5)−31(7)に入出力されるデータの粒度は128Bに設定される。レイヤ2の処理では、メモリ31(1)−31(2)に保持されたデータを使用してデータ処理が実行され、データ処理により得られる中間データがメモリ31(3)−31(4)に格納される。また、メモリ31(3)−31(4)に格納された中間データを使用してデータ処理が実行され、データ処理により得られる結果データがメモリ31(5)−31(7)に格納される。
図9は、図8に示す各メモリ31に入出力されるデータの粒度毎のアドレスADのビットの割り当ての一例を示す。例えば、メモリアクセス要求MREQには、25ビットのアドレスAD[29:5]が含まれる。アドレスADのうち、14ビットはロウアドレスRA[13:0]に使用され、5ビットはカラムアドレスCA[4:0]に使用され、5ビットはバンクアドレスBA[4:0]に使用され、1ビットはハーフアドレスHA[0]に使用される。ロウアドレスRA、カラムアドレスCAおよびハーフアドレスHAは、内部アドレスの一例である。
各メモリ31では、32個のバンクのいずれかがバンクアドレスBAに応じて選択され、選択されたバンク中の16384個のロウ領域(記憶領域)のいずれかがロウアドレスRAに応じて選択される。さらに、選択されたロウ領域中の32個のカラム領域(記憶領域)のいずれかがカラムアドレスCAに応じて選択される。バンク、ロウ領域およびカラム領域は、図10で説明される。
そして、読み出し動作では、カラムアドレスCAにより選択されたカラム領域に保持されたデータがメモリ31から読み出され、書き込み動作では、カラムアドレスCAにより選択されたカラム領域にデータが書き込まれる。なお、データの粒度が32Bの場合、カラムアドレスCAにより選択されるカラム領域に対応するデータのうち、上半分のデータまたは下半分のデータがハーフアドレスHAにより選択される。
アドレスAD[29:16]は、データの粒度に拘わりなく、ロウアドレスRA[13:0]に割り当てられる。データの粒度が64B、128Bまたは256Bの場合、アドレスAD[5]は、ハーフアドレスHA[0]に割り当てられるが、ハーフアドレスHA[0]は、メモリ31のアクセスには使用されない。
データの粒度が32Bの場合、アドレスAD[15:11]がカラムアドレスCA[4:0]に割り当てられ、アドレスAD[10]がハーフアドレスHA[0]に割り当てられ、アドレスAD[9:5]がバンクアドレスBA[4:0]に割り当てられる。そして、メモリアクセス要求MREQ毎に、32Bのデータがメモリ31に対して入出力される。
データの粒度が64Bの場合、アドレスAD[15:11]がカラムアドレスCA[4:0]に割り当てられ、アドレスAD[10:6]がバンクアドレスBA[4:0]に割り当てられる。そして、メモリアクセス要求MREQ毎に、64Bのデータがメモリ31に対して入出力される。
データの粒度が128Bの場合、アドレスAD[15:12]、AD[6]がカラムアドレスCA[4:1]、CA[0]に割り当てられ、アドレスAD[11:7]がバンクアドレスBA[4:0]に割り当てられる。そして、メモリアクセス要求MREQ毎に、128Bのデータがメモリ31に対して入出力される。
データの粒度が256Bの場合、アドレスAD[15:13]、AD[7:6]がカラムアドレスCA[4:2]、CA[1:0]に割り当てられ、アドレスAD[12:8]がバンクアドレスBA[4:0]に割り当てられる。そして、メモリアクセス要求MREQ毎に、256Bのデータがメモリ31に対して入出力される。
データの粒度は、1回のメモリアクセス要求MREQに基づいて、1つのバンクBKに連続して入力または出力されるデータのバイト数に対応しており、バンクアドレスBA[4:0]が割り当てられるアドレスADのビット位置により決定される。バンクアドレスBA[4:0]がアドレスADの上位に割り当てられるほど、データの粒度は大きくなる。換言すれば、図4に示すアドレス変換制御部60は、設定変更要求SREQに基づいて、バンクアドレス(BA)に割り当てるアドレスADのビットを変更する。
なお、例えば、各アクセス制御部80と各メモリ31とは、128ビット(16バイト)のデータ線で接続されているため、アクセス制御部80は、メモリ31に対して128ビット単位でデータを入出力する。このため、データの粒度が32Bの場合、アクセス制御部80は、メモリアクセス要求MREQに基づいて、2回連続でメモリ31にアクセスする(バースト長=”2”)。データの粒度が64Bの場合、アクセス制御部80は、メモリアクセス要求MREQに基づいて、4回連続でメモリ31にアクセスする(バースト長=”4”)。データの粒度が128Bの場合、アクセス制御部80は、メモリアクセス要求MREQに基づいて、8回連続でメモリ31にアクセスする(バースト長=”8”)。データの粒度が256Bの場合、アクセス制御部80は、メモリアクセス要求MREQに基づいて、8回連続でのメモリ31へのアクセスを2回繰り返す(バースト長=”8”のアクセスを2回)。
図10は、図9に示す複数のデータの粒度のそれぞれでのメモリ31のアクセスの一例を示す。各バンクBK0−BK31は、ロウアドレスRAにより識別される16384個のロウ領域を有し(図10の縦方向に並ぶ)、各ロウ領域は、さらにカラムアドレスCAにより識別される32個のカラム領域を有する(図10の横方向に並ぶ)。図10において、バンクBK0−BK31内に示す数字を付けた矩形は、メモリ31に対して入力または出力されるデータを示し、数字は、アドレスADが順次増加する場合に入力または出力される順序を示す。
データの粒度が32Bの場合、バンクアドレスBAは、図9に示したようにアドレスADの最下位に割り当てられるため、アドレスADの値が増加する毎に、隣のバンクBKが順次アクセスされ、バンクBK毎に32Bのデータが入力または出力される。データの粒度が64Bの場合、バンクアドレスBAは、図9に示したように、アクセスに使用しないハーフアドレスHAを除きアドレスADの最下位に割り当てられる。このため、アドレスADの値が増加する毎に、隣のバンクBKが順次アクセスされ、バンクBK毎に64Bのデータが入力または出力される。
データの粒度が128Bの場合、バンクアドレスBAは、図9に示したようにアクセスに使用しないハーフアドレスHAを除き、アドレスADの最下位ビットより1ビット上位に割り当てられる。このため、アドレスADの値が2つ増加する毎に、隣のバンクBKが順次アクセスされ、バンクBK毎に128Bのデータが入力または出力される。データの粒度が256Bの場合、バンクアドレスBAは、図9に示したようにアクセスに使用しないハーフアドレスHAを除き、アドレスADの最下位ビットより2ビット上位に割り当てられる。このため、アドレスADの値が4つ増加する毎に、隣のバンクBKが順次アクセスされ、バンクBK毎に256Bのデータが入力または出力される。
設定変更要求SREQに基づいて、バンクアドレス(BA)に割り当てるアドレスADのビットを変更することで、図10に示すように、各粒度のデータのアクセスを、1つのバンクBK内で実行することができる。したがって、複数のバンクBKをアクティブ状態に設定することなく、各粒度のデータをアクセスすることができ、複数のバンクBKをアクティブ状態に設定する場合に比べて、アクセス効率を向上することができる。
図11は、図8に示す処理の流れの一例を示す。図11に示す処理の流れは、プロセッサコア12がプログラムを実行することで実現される。図11に示す処理を開始する前、各チャネルCH0−CH7において、データの粒度=”64B”に対応するマップ情報MAP64が、アドレスADのビットの割り当てとして設定される。なお、図11では、説明を分かりやすくするために、最小限のメモリアクセスを示すが、実際の処理では、入力データ、中間データおよび結果データのそれぞれは、例えば、数MB(メガバイト)を有する。
まず、プロセッサ10は、チャネルCH5−CH7のアドレスADのビットの割り当てをマップ情報MAP64からマップ情報MAP256に切り替える(図11(a))。次に、プロセッサ10は、チャネルCH6に接続されたメモリ31(6)から256Bのデータ(入力データ)を読み出すメモリアクセス要求MREQを発行する。メモリコントローラ20は、粒度=”256B”でメモリ31(6)にアクセスし、読み出したデータをプロセッサ10に出力する(図11(b))。プロセッサ10は、メモリ31(6)から読み出したデータを使用してレイヤ1のデータ処理を実行し、データ処理により64Bの中間データを生成する(図11(c))。
プロセッサ10は、チャネルCH3に接続されたメモリ31(3)に64Bの中間データを書き込むメモリアクセス要求MREQを発行する。メモリコントローラ20は、プロセッサコア12から転送される64Bの中間データを粒度=”64B”でメモリ31(3)に格納する(図11(d))。この後、図11(b)−図11(d)と同様の処理が繰り返し実行される。さらに、チャネルCH7、CH4を使用して、メモリ31(7)からの256Bのデータの読み出し、読み出したデータの処理、処理により生成された64Bの中間データのメモリ31(4)への書き込みが実行される(図11(e))。
次に、プロセッサ10は、メモリ31(3)から64Bの中間データを読み出すメモリアクセス要求MREQを発行する。メモリコントローラ20は、粒度=”64B”でメモリ31(3)にアクセスし、読み出したデータをプロセッサ10に出力する(図11(f))。プロセッサ10は、メモリ31(3)から読み出した中間データを使用してデータ処理を実行し、データ処理により64Bの結果データを生成する(図11(g))。
プロセッサ10は、チャネルCH1に接続されたメモリ31(1)に64Bの結果データを書き込むメモリアクセス要求MREQを発行する。メモリコントローラ20は、プロセッサコア12から転送される64Bの結果データを粒度=”64B”でメモリ31(1)に格納する(図11(h))。この後、図11(f)−図11(h)と同様の処理が繰り返し実行される。さらに、チャネルCH4、CH2を使用して、メモリ31(4)からの64Bの中間データの読み出し、読み出した中間データの処理、処理により生成された64Bの結果データのメモリ31(2)への書き込みが実行される(図11(i))。そして、レイヤ1の処理が完了する。
次に、プロセッサ10は、チャネルCH5−CH7のアドレスADのビットの割り当てをマップ情報MAP256からマップ情報MAP128に切り替え、チャネルCH3、CH4のアドレスADのビットの割り当てをマップ情報MAP64からマップ情報MAP32に切り替える(図11(j))。次に、プロセッサ10は、チャネルCH1、CH3を使用して、メモリ31(1)からの64Bのデータの読み出し、読み出したデータの処理、処理により生成された32Bの中間データのメモリ31(3)への書き込みを実行する(図11(k))。また、プロセッサ10は、チャネルCH2、CH4を使用して、メモリ31(2)からの64Bのデータの読み出し、読み出したデータの処理、処理により生成された32Bの中間データのメモリ31(4)への書き込みを実行する(図11(l))。メモリコントローラ20は、粒度=”64B”でメモリ31(1)、31(2)にアクセスし、粒度=”32B”でメモリ31(3)、31(4)にアクセスする。
この後、プロセッサ10は、チャネルCH3、CH6を使用して、メモリ31(3)からの64Bの中間データの読み出し、読み出した中間データの処理、処理により生成された128Bの結果データのメモリ31(6)への書き込みを実行する(図11(m))。また、プロセッサ10は、チャネルCH4、CH7を使用して、メモリ31(4)からの64Bの中間データの読み出し、読み出した中間データの処理、処理により生成された128Bの結果データのメモリ31(7)への書き込みを実行する(図11(n))。メモリコントローラ20は、粒度=”32B”でメモリ31(3)、31(6)にアクセスし、粒度=”128B”でメモリ31(6)、31(7)にアクセスする。そして、レイヤ2の処理が完了する。
図12は、図11に示す処理を実行するプログラムの一例を示す。図12に示すプログラムは、プロセッサコア12により実行される。プログラムの左側に付した数字は、説明のための行番号を示す。プログラム中に示す符号(a)−(l)は、図11に付した符号に対応しており、プログラムの記述ではない。命令コードmconfを含む行には、図6で説明したように、アドレスADのビットの割り当てを変更する設定変更命令が記述される。なお、図12においても、説明を分かりやすくするために、最小限の命令を示すが、実際のプログラムでは、多数のロード命令と多数のストア命令が記述される。
まず、レイヤ1の処理において、1行目から3行目には、チャネルCH5−CH7のアドレスADのビットの割り当てをマップ情報MAP256に切り替える設定変更命令が記述される(図12(a))。4行目から7行目では、ロード命令ldによりメモリ31からデータを読み出し、読み出したデータを処理し、処理により得られた中間データをストア命令stによりメモリ31に書き込む処理が繰り返し実行される(図12(b)、(c))。なお、図12では省略するが、データを処理する複数の演算命令が、4行目と5行目の間、および6行目と7行目の間に記述される。例えば、処理するデータは、メモリ31(6)(または31(7))からレジスタに256B単位で読み出され、中間データは、レジスタからメモリ31(3)(または31(4))に64B単位で書き込まれる。
8行目から11行目では、ロード命令ldによりメモリ31から中間データを読み出し、読み出した中間データを処理し、処理により得られた結果データをストア命令stによりメモリ31に書き込む処理が繰り返し実行される(図12(d)、(e))。例えば、処理する中間データは、メモリ31(3)(または31(4))からレジスタに64B単位で読み出され、結果データは、レジスタからメモリ31(1)(または31(2))に64B単位で書き込まれる。なお、図12では省略するが、データを処理する複数の演算命令が、8行目と9行目の間、および10行目と11行目の間に記述される。
次に、レイヤ2の処理では、まず、12行目から13行目に、チャネルCH3−CH4のアドレスADのビットの割り当てをマップ情報MAP32に切り替える設定変更命令が記述される。また、14行目から16行目には、チャネルCH5−CH7のアドレスADのビットの割り当てをマップ情報MAP128に切り替える設定変更命令が記述される(図12(f))。
17行目から20行目では、ロード命令ldによりメモリ31からデータを読み出し、読み出したデータを処理し、処理により得られた中間データをストア命令stによりメモリ31に書き込む処理が繰り返し実行される(図12(g)、(h))。例えば、処理するデータとして、レイヤ1での処理の結果データが、メモリ31(1)(または31(2))からレジスタに64B単位で読み出される。レイヤ2での処理により生成される中間データは、レジスタからメモリ31(3)(または31(4))に32B単位で書き込まれる。
21行目から24行目では、ロード命令ldによりメモリ31から中間データを読み出し、読み出した中間データを処理し、処理により得られた結果データをストア命令stによりメモリ31に書き込む処理が繰り返し実行される(図12(i)、(j))。例えば、処理する中間データは、メモリ31(3)(または31(4))からレジスタに32B単位で読み出され、結果データは、レジスタからメモリ31(6)(または31(7))に128B単位で書き込まれる。なお、図12では省略するが、データを処理する複数の演算命令が、17行目と18行目の間、19行目と20行目の間、21行目と22行目の間、および23行目と24行目の間に記述される。
図13は、図5に示すキュー制御部70による要求キュー74の制御の概要を示す。図13において、要求キュー74に示す矩形はエントリENTを示し、各エントリENTの上に付した数字は、エントリENTに格納された順序を示す。
図13(A)は、マップ情報MAPを切り替えない場合、すなわち、データの粒度が変更されず、常に一定の場合の要求キュー74の制御の例を示す。図5に示す要求出力制御部79は、例えば、アクセスするバンクBKが互いに同じメモリアクセス要求MREQを要求キュー74が保持する場合、各バンクBKに対するメモリアクセスが連続するように、要求キュー74からメモリアクセス要求MREQを取り出す。
例えば、要求キュー74に5番目に格納されたメモリアクセス要求MREQ(WR、BA1)は、2番目から4番目に格納されたメモリアクセス要求MREQを追い抜いて、1番目のメモリアクセス要求MREQ(WR、BA1)に続いて処理される。これにより、バンクBKをアクティブにする回数(アクティブコマンドの発行回数)を最小限にでき、メモリアクセス要求MREQの追い抜き処理をしない場合に比べて、メモリバスの使用効率を向上することができる。
図13(B)は、マップ情報MAPを切り替えてデータの粒度を変更する場合で、グループフラグGFを使用せずに要求キュー74の制御を行う例を示す。例えば、4番目のメモリアクセス要求MREQが要求キュー74に格納された後、マップ情報MAPが切り替えられ、メモリ31に入出力するデータの粒度が変更される。1番目から4番目までのメモリアクセス要求MREQは、データの粒度=”256”でアクセスされ、5番目および6番目のメモリアクセス要求MREQは、データの粒度=”64”でアクセスされる。
図13(B)においても、要求出力制御部79は、各バンクBKに対するメモリアクセスが連続するように、例えば、要求キュー74に5番目に格納されたメモリアクセス要求MREQ(WR、BA2)を、3番目に処理する。ここで、要求キュー74に3番目に格納されたメモリアクセス要求MREQ(RD、BA2)と、要求キュー74に5番目に格納されたメモリアクセス要求MREQ(WR、BA2)とは、メモリ31の同じ記憶領域を参照するとする。3番目に処理されるライトアクセスと4番目に処理されるリードアクセスとは、データの粒度が異なる。このため、4番目の処理されるリードアクセスは、3番目に処理されるライトアクセスにより不正な位置に書き込まれたデータを読み出すおそれがある。すなわち、グループフラグGFを使用せずに要求キュー74の制御を行う場合、メモリコントローラ20は、誤動作するおそれがある。
図13(C)は、マップ情報MAPを切り替えてデータの粒度を変更する場合で、グループフラグGFを使用して要求キュー74の制御を行う例を示す。要求キュー74に格納されたメモリアクセス要求MREQの内容と、マップ情報MAPを切り替えるタイミングと、切り替えられるマップ情報MAPとは、図13(B)と同じである。
図13(C)においても、要求出力制御部79は、各バンクBKに対するメモリアクセスが連続するように、例えば、要求キュー74に格納されたメモリアクセス要求MREQの追い抜き処理を試みる。しかしながら、要求出力制御部79は、グループフラグGFの値が異なるメモリアクセス要求MREQの追い抜き処理を禁止する。換言すれば、メモリアクセス要求MREQの追い抜き処理は、グループフラグGFの値が同じメモリアクセス要求MREQの間で実行される。したがって、要求キュー74に5番目に格納されたメモリアクセス要求MREQ(WR、BA2)が、要求キュー74に3番目に格納されたメモリアクセス要求MREQ(RD、BA2)より前に処理されることはない。すなわち、グループフラグGFを使用して、メモリアクセス要求MREQの追い抜き処理を制御することで、図13(B)に示したメモリコントローラ20の誤動作を抑止することができる。
以上、図4から図13に示す実施形態においても、図1に示す実施形態と同様に、プロセッサ10が実行するプログラムの処理に合わせて、メモリ31に入出力するデータの粒度を、メモリ31毎に動的に変更することができる。この結果、データの粒度を変更しない場合に比べて、メモリ31に対するアクセス効率を向上することができ、情報処理装置100Aの処理性能を向上することができる。
さらに、図4から図13に示す実施形態では、以下に示す効果を得ることができる。すなわち、設定変更要求SREQに基づいてマップ情報MAPのいずれかを選択することで、設定変更要求SREQに基づいてマップ情報MAPを生成する場合に比べて、アドレスADのビットの割り当て(すなわち、データの粒度)を容易に変更することができる。また、設定変更要求SREQに基づいてマップ情報MAPを生成する場合に比べて、マップ情報MAPをアドレス変換部66に早く出力することができる。
グループフラグGFの値が異なるメモリアクセス要求MREQ間において、メモリアクセス要求MREQのアクセス制御部80への出力順の入れ替え(追い抜き)を禁止することで、メモリコントローラ20の誤動作を抑止することができる。要求デコーダ40を設けることで、メモリコントローラ20が複数のメモリ制御部50を有する場合にも、メモリアクセス要求MREQをアクセス対象のメモリ31に対応するメモリ制御部50に出力することができる。また、要求デコーダ40を設けることで、メモリコントローラ20が複数のメモリ制御部50を有する場合にも、設定変更要求SREQをマップ情報MAPの変更対象のメモリ制御部50に出力することができる。さらに、最小限のバンクBKをアクティブ状態に設定することで各粒度のデータをアクセスすることができ、複数のバンクBKをアクティブ状態に設定する場合に比べて、アクセス効率を向上することができる。
図14は、情報処理装置、メモリ制御装置および情報処理装置の制御方法の別の実施形態を示す。図4と同一または同様の要素については、同一の符号を付し、これ等については、詳細な説明は省略する。
図14に示す情報処理装置100Bは、図4に示す各メモリ制御部50に切替部90を追加している。また、情報処理装置100Bは、情報処理装置100Bの動作を管理するシステム管理部92を有する。システム管理部92は、他の装置の一例である。なお、システム管理部92は、情報処理装置100Bの外部に設けられてもよい。情報処理装置100Bのその他の構成は、図4に示す情報処理装置100Aと同様である。
切替部90は、システム管理部92から出力される切替情報SWに応じて、要求デコーダ40が出力する設定変更要求SREQまたはシステム管理部92が出力する設定変更要求SREQ2のいずれかを選択してセレクタ64に出力する。システム管理部92は、アドレス変換部66にアドレスADのビットの割り当てを変更させる場合、切替情報SWを切替部90に出力し、設定変更要求SREQ2の伝達経路とセレクタ64とを切替部90を介して接続する。そして、システム管理部92は、設定変更要求SREQ2をセレクタ64に出力し、アドレス変換部66にアドレスADのビットの割り当てを変更させる。なお、システム管理部92は、複数のメモリ制御部50のそれぞれに切替情報SWと設定変更要求SREQ2とを互いに独立に出力可能であり、メモリ制御部50のアドレス変換部66にアドレスADのビットの割り当てを個別に変更させることが可能である。
システム管理部92によりアドレスADのビットの割り当てを変更することで、例えば、情報処理装置100Bのイニシャライズ処理等において、各メモリ制御部50に所定のマップ情報MAPを設定することができる。あるいは、テストモード等において、各メモリ制御部50に所定のマップ情報MAPを設定することができる。すなわち、プログラムを実行することなく、各メモリ制御部50に所定のマップ情報MAPを設定することができる。
以上、図14に示す実施形態においても、図1から図13に示す実施形態と同様の効果を得ることができる。例えば、プロセッサ10が実行するプログラムにより、メモリ31に入出力するデータの粒度をメモリ31毎に動的に変更することで、メモリ31に対するアクセス効率を向上することができ、情報処理装置100Bの処理性能を向上することができる。さらに、図14に示す実施形態では、設定変更要求SREQ、SREQ2を選択的にセレクタ64に供給する切替部90を各メモリ制御部50に設けることで、各メモリ制御部50のマップ情報MAPをプログラムを実行することなく切り替えることができる。
図15は、情報処理装置、メモリ制御装置および情報処理装置の制御方法の別の実施形態におけるプロセッサコアが実行するプログラムの一例を示す。図1から図14に示す実施形態で説明した要素と同一または同様の要素については、同一の符号を付し、これ等については、詳細な説明は省略する。
図15では、図12に示したプログラムの1行目から3行目のmconf命令の代わりに1つのmconf命令(mconf code)が記述される(図15(a))。また、図12に示したプログラムの12行目から16行目のmconf命令の代わりに1つのmconf命令(mconf code)が記述される(図15(b))。プログラムのその他の記述は、図12と同じである。
図15に示すプログラムは、図4または図14に示すプロセッサ10により実行される。また、図15を示すプログラムを実行する情報処理装置は、要求生成部14と要求デコーダ40が異なることを除き、図4に示す情報処理装置100Aまたは図14に示す情報処理装置100Bと同様である。
図16は、図15に示すプログラムを実行する情報処理装置の要求生成部14Cおよび要求デコーダ40Cの動作の一例を示す。要求生成部14Cは、設定変更命令”mconf code”を受信した場合、設定変更命令を示すオペコード”11”と”code”とを要求デコーダ40に出力する。”code”は、チャネルCH0−CH7毎に、アドレスADのビットの割り当ての変更の有無を示す情報(8ビット)と、割り当て情報map(16ビット)とを含む。すなわち、図16では、1つの設定変更命令”mconf”により、全てのメモリ制御部50のアドレスADのビットの割り当て(すなわち、データの粒度)を変更することができる。割り当て情報mapは、2進数で”00”の場合に粒度”32B”を示し、2進数で”01”の場合に粒度”64B”を示し、2進数で”10”の場合に粒度”128B”を示し、2進数で”11”の場合に粒度”256B”を示す。コードld、stを受信した場合の要求生成部14Cの動作は、図6に示す要求生成部14の動作と同じである。
要求デコーダ40Cは、要求生成部14Cからオペコード”11”と”code”とを受信した場合、”code”に含まれる情報に基づいて、アドレスADのビットの割り当てを変更するチャネルCHに、割り当て情報mapを示す情報を含む設定変更要求SREQを出力する。ロード命令またはストア命令を検出した場合の要求デコーダ40Cの動作は、図6に示す要求デコーダ40の動作と同じである。
以上、図15および図16に示す実施形態においても、図1から図14に示す実施形態と同様の効果を得ることができる。さらに、図15および図16に示す実施形態では、以下に示す効果を得ることができる。すなわち、1つの設定変更命令”mconf”により、全てのメモリ制御部50においてアドレスADのビットの割り当てを変更することができ、プログラムに記述される設定変更命令”mconf”の数を図6に比べて少なくすることができる。この結果、アドレスADのビットの割り当て(すなわち、データの粒度)の変更に掛かる時間を図6に比べて短縮することができ、情報処理装置の処理性能を向上することができる。
以上の詳細な説明により、実施形態の特徴点および利点は明らかになるであろう。これは、特許請求の範囲がその精神および権利範囲を逸脱しない範囲で前述のような実施形態の特徴点および利点にまで及ぶことを意図するものである。また、当該技術分野において通常の知識を有する者であれば、あらゆる改良および変更に容易に想到できるはずである。したがって、発明性を有する実施形態の範囲を前述したものに限定する意図はなく、実施形態に開示された範囲に含まれる適当な改良物および均等物に拠ることも可能である。
1…演算処理装置;3(3a、3b)…メモリ制御装置;2…記憶装置;4…要求分配部;5(5a、5b)…メモリ制御部;6…アドレス変換制御部;7…アクセス制御部;10…プロセッサ;12…プロセッサコア;14、14C…要求生成部;20…メモリコントローラ;30…メモリモジュール;31(31(0)−31(7))…メモリ;40、40C…要求デコーダ;50…メモリ制御部;60…アドレス変換制御部;62…マップ情報保持部;64…セレクタ;66…アドレス変換部;70…キュー制御部;72…フラグ保持部;73…カウンタ;74…要求キュー;76…ライトポインタ;78…リードポインタ;79…要求出力制御部;80…アクセス制御部;90…切替部;92…システム管理部;100、100A、100B…情報処理装置;AD…アドレス;BA…バンクアドレス;BK(BK0−BK3)…バンク;CH…チャネル;ENT…エントリ;GF…グループフラグ;LEN…データ長;MAP(MAP32、MAP64、MAP128、MAP256)…マップ情報;MREQ…メモリアクセス要求;RD…リードコマンド;R/W…リードライト種別;SREQ…設定変更要求;WR…ライトコマンド

Claims (7)

  1. 演算処理を実行する演算処理装置と、互いに異なるアドレスが割り当てられた複数の記憶装置と、前記演算処理装置からのメモリアクセス要求に基づいて、前記複数の記憶装置のアクセスを制御するメモリ制御装置とを有する情報処理装置において、
    前記メモリ制御装置は、
    前記複数の記憶装置のそれぞれに対応して設けられる複数のメモリ制御部と、
    前記メモリアクセス要求と前記演算処理装置からの設定変更要求とを前記複数のメモリ制御部のいずれかに出力する要求分配部を有し、
    前記複数のメモリ制御部の各々は、
    前記設定変更要求に基づいて変更したビットの割り当てに基づいて、前記メモリアクセス要求に含まれるアドレスのビットを入れ替えるアドレス変換制御部と、
    自メモリ制御部のアドレス変換制御部により、アドレスのビットが入れ替えられたメモリアクセス要求に基づいて、前記複数の記憶装置のうち、自メモリ制御部に対応する記憶装置にアクセスするアクセス制御部と、
    フラグ値を保持するとともに、前記演算処理装置から前記設定変更要求を受信する毎に、保持するフラグ値を更新するフラグ保持部と、
    前記アドレス変換制御部によりビットが入れ替えられたアドレスを含む前記メモリアクセス要求が、前記フラグ保持部が保持するフラグ値とともにそれぞれ格納される複数のエントリを有する要求保持部と、
    同一のフラグ値を保持する複数のエントリにそれぞれ保持された複数の前記メモリアクセス要求の前記アクセス制御部への出力順の入れ替えを許可し、異なるフラグ値を保持する複数のエントリにそれぞれ保持された複数の前記メモリアクセス要求の前記アクセス制御部への出力順の入れ替えを禁止する要求出力制御部を有することを特徴とする情報処理装置。
  2. 前記アドレス変換制御部は、
    アドレスのビットの割り当てをそれぞれ示す複数の割り当て情報を保持する情報保持部と、
    前記設定変更要求に基づいて、前記情報保持部が保持する前記複数の割り当て情報のいずれかを選択する選択部と、
    前記メモリアクセス要求に含まれるアドレスのビットを、前記選択部が選択した割り当て情報に基づいて入れ替えるアドレス変換部を有することを特徴とする請求項1記載の情報処理装置。
  3. 前記複数のメモリ制御部の各々は、さらに、
    前記演算処理装置からの前記設定変更要求または他の装置からの設定変更要求のいずれかを前記選択部に供給する切替部を有することを特徴とする請求項2記載の情報処理装置。
  4. 前記要求分配部は、
    前記メモリアクセス要求を受信した場合、前記複数のメモリ制御部のうち、前記メモリアクセス要求に含まれるアドレスが割り当てられた記憶装置に対応するメモリ制御部に、受信したメモリアクセス要求を出力し、
    前記設定変更要求を受信した場合、前記複数のメモリ制御部のうち、前記設定変更要求に含まれる変更先情報が示すメモリ制御部に、受信した設定変更要求を出力することを特徴とする請求項1ないし請求項3のいずれか1項記載の情報処理装置。
  5. 前記メモリアクセス要求に含まれるアドレスは、前記複数の記憶装置の各々が有する複数のバンクのうち、アクセスするバンクを選択するバンクアドレスと、前記複数のバンクの各々が有する複数の記憶領域のうち、アクセスする記憶領域を選択する内部アドレスを含み、
    前記アドレス変換制御部は、前記設定変更要求に基づいて、前記メモリアクセス要求に含まれるバンクアドレスに割り当てるビットの位置を変更することを特徴とする請求項1ないし請求項4のいずれか1項記載の情報処理装置。
  6. 演算処理を実行する演算処理装置からのメモリアクセス要求に基づいて、互いに異なるアドレスが割り当てられた複数の記憶装置のアクセスを制御するメモリ制御装置において、
    前記複数の記憶装置のそれぞれに対応して設けられる複数のメモリ制御部と、
    前記メモリアクセス要求と前記演算処理装置からの設定変更要求とを前記複数のメモリ制御部のいずれかに出力する要求分配部を有し、
    前記複数のメモリ制御部の各々は、
    前記設定変更要求に基づいて変更したビットの割り当てに基づいて、前記メモリアクセス要求に含まれるアドレスのビットを入れ替えるアドレス変換制御部と、
    自メモリ制御部のアドレス変換制御部により、アドレスのビットが入れ替えられたメモリアクセス要求に基づいて、前記複数の記憶装置のうち、自メモリ制御部に対応する記憶装置にアクセスするアクセス制御部と、
    フラグ値を保持するとともに、前記演算処理装置から前記設定変更要求を受信する毎に、保持するフラグ値を更新するフラグ保持部と、
    前記アドレス変換制御部によりビットが入れ替えられたアドレスを含む前記メモリアクセス要求が、前記フラグ保持部が保持するフラグ値とともにそれぞれ格納される複数のエントリを有する要求保持部と、
    同一のフラグ値を保持する複数のエントリにそれぞれ保持された複数の前記メモリアクセス要求の前記アクセス制御部への出力順の入れ替えを許可し、異なるフラグ値を保持する複数のエントリにそれぞれ保持された複数の前記メモリアクセス要求の前記アクセス制御部への出力順の入れ替えを禁止する要求出力制御部を有することを特徴とするメモリ制御装置。
  7. 演算処理を実行する演算処理装置と、互いに異なるアドレスが割り当てられた複数の記憶装置と、前記演算処理装置からのメモリアクセス要求に基づいて、前記複数の記憶装置のアクセスを制御するメモリ制御装置とを有する情報処理装置の制御方法において、
    前記メモリ制御装置が有する要求分配部が、前記メモリアクセス要求と前記演算処理装置からの設定変更要求とを、前記メモリ制御装置が有し、前記複数の記憶装置のそれぞれに対応して設けられる複数のメモリ制御部のいずれかに出力し、
    前記複数のメモリ制御部の各々が有するアドレス変換制御部が、前記設定変更要求に基づいて変更したビットの割り当てに基づいて、前記メモリアクセス要求に含まれるアドレスのビットを入れ替え、
    前記複数のメモリ制御部の各々が有するアクセス制御部が、自メモリ制御部のアドレス変換制御部により、アドレスのビットが入れ替えられたメモリアクセス要求に基づいて、前記複数の記憶装置のうち、自メモリ制御部に対応する記憶装置にアクセスし、
    前記複数のメモリ制御部の各々が有するフラグ保持部が、フラグ値を保持するとともに、前記演算処理装置から前記設定変更要求を受信する毎に、保持するフラグ値を更新し、
    前記複数のメモリ制御部の各々が有する、複数のエントリを有する要求保持部が、前記アドレス変換制御部によりビットが入れ替えられたアドレスを含む前記メモリアクセス要求を、前記フラグ保持部が保持するフラグ値とともに前記エントリに保持し、
    前記複数のメモリ制御部の各々が有する要求出力制御部が、同一のフラグ値を保持する複数のエントリにそれぞれ保持された複数の前記メモリアクセス要求の前記アクセス制御部への出力順の入れ替えを許可し、異なるフラグ値を保持する複数のエントリにそれぞれ保持された複数の前記メモリアクセス要求の前記アクセス制御部への出力順の入れ替えを禁止することを特徴とする情報処理装置の制御方法。
JP2017096342A 2017-05-15 2017-05-15 情報処理装置、メモリ制御装置および情報処理装置の制御方法 Active JP6961997B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2017096342A JP6961997B2 (ja) 2017-05-15 2017-05-15 情報処理装置、メモリ制御装置および情報処理装置の制御方法
US15/975,247 US10599586B2 (en) 2017-05-15 2018-05-09 Information processing apparatus, memory control circuitry, and control method of information processing apparatus

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2017096342A JP6961997B2 (ja) 2017-05-15 2017-05-15 情報処理装置、メモリ制御装置および情報処理装置の制御方法

Publications (2)

Publication Number Publication Date
JP2018194939A JP2018194939A (ja) 2018-12-06
JP6961997B2 true JP6961997B2 (ja) 2021-11-05

Family

ID=64097209

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017096342A Active JP6961997B2 (ja) 2017-05-15 2017-05-15 情報処理装置、メモリ制御装置および情報処理装置の制御方法

Country Status (2)

Country Link
US (1) US10599586B2 (ja)
JP (1) JP6961997B2 (ja)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111240581B (zh) 2018-11-29 2023-08-08 北京地平线机器人技术研发有限公司 存储器访问控制方法、装置和电子设备
CN111679785A (zh) * 2019-03-11 2020-09-18 三星电子株式会社 用于处理操作的存储器装置及其操作方法、数据处理系统
JP7346883B2 (ja) 2019-04-10 2023-09-20 日本電気株式会社 ベクトルプロセッサ装置及び生成方法
US11972140B2 (en) 2021-04-26 2024-04-30 Apple Inc. Hashing with soft memory folding
US11693585B2 (en) 2021-04-26 2023-07-04 Apple Inc. Address hashing in a multiple memory controller system

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09223064A (ja) 1996-02-15 1997-08-26 Fuji Facom Corp メモリ領域の管理方法
US10324852B2 (en) * 2016-12-09 2019-06-18 Intel Corporation System and method to increase availability in a multi-level memory configuration

Also Published As

Publication number Publication date
JP2018194939A (ja) 2018-12-06
US10599586B2 (en) 2020-03-24
US20180329832A1 (en) 2018-11-15

Similar Documents

Publication Publication Date Title
JP6961997B2 (ja) 情報処理装置、メモリ制御装置および情報処理装置の制御方法
JP6373336B2 (ja) サニタイズ認識dramコントローラ
KR910001448B1 (ko) 메모리 액세스 제어시스템
US6185654B1 (en) Phantom resource memory address mapping system
KR20200129843A (ko) 연산 회로를 포함하는 메모리 장치, 이를 제어하는 메모리 컨트롤러 및 이를 포함하는 메모리 시스템
US20120291037A1 (en) Method and apparatus for prioritizing processor scheduler queue operations
JP2004157593A (ja) 多ポート統合キャッシュ
JP2002373115A (ja) 共有キャッシュメモリのリプレイスメント制御方法及びその装置
JP2004164641A (ja) メモリバンクへのアドレスのマッピングをするメモリコントローラ
CN114942831A (zh) 处理器、芯片、电子设备及数据处理方法
US11797201B2 (en) Hardware-software collaborative address mapping scheme for efficient processing-in-memory systems
US20220237041A1 (en) Parallel processing system performing in-memory processing
US7882327B2 (en) Communicating between partitions in a statically partitioned multiprocessing system
WO2019133258A1 (en) Look up table with data element promotion
US6038642A (en) Method and system for assigning cache memory utilization within a symmetric multiprocessor data-processing system
US5893163A (en) Method and system for allocating data among cache memories within a symmetric multiprocessor data-processing system
KR19990037572A (ko) 뱅크 어드레스 값을 공급하는 다중 소스를 구비하는 프로세서구조 설계 및 그 설계방법
US6973540B2 (en) Method and apparatus for selecting cache ways available for replacement
JP2009288977A (ja) キャッシュメモリ制御装置、半導体集積回路、およびキャッシュメモリ制御方法
JP2006099770A (ja) シングルポートメモリを使用した命令キャッシュ
KR20010032199A (ko) 캐쉬 라인 교차 액세스를 위한 영 사이클 페널티 달성방법 및 시스템
WO2016188392A1 (zh) 一种数据地址产生系统和方法
JP2012008747A (ja) 集積装置、メモリ割り当て方法、および、プログラム
CN114116533B (zh) 利用共享存储器存储数据的方法
US8452920B1 (en) System and method for controlling a dynamic random access memory

Legal Events

Date Code Title Description
RD01 Notification of change of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7426

Effective date: 20170803

RD03 Notification of appointment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7423

Effective date: 20170803

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20170804

RD03 Notification of appointment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7423

Effective date: 20180214

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20180219

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20180219

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20200213

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20201225

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20210216

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210405

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20210914

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20210927

R150 Certificate of patent or registration of utility model

Ref document number: 6961997

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150