JP7177948B2 - 情報処理装置、及び情報処理方法 - Google Patents
情報処理装置、及び情報処理方法 Download PDFInfo
- Publication number
- JP7177948B2 JP7177948B2 JP2021552093A JP2021552093A JP7177948B2 JP 7177948 B2 JP7177948 B2 JP 7177948B2 JP 2021552093 A JP2021552093 A JP 2021552093A JP 2021552093 A JP2021552093 A JP 2021552093A JP 7177948 B2 JP7177948 B2 JP 7177948B2
- Authority
- JP
- Japan
- Prior art keywords
- data
- write
- read
- memory
- processing
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1048—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using arrangements adapted for a specific error detection or correction feature
- G06F11/1056—Updating check bits on partial write, i.e. read/modify/write
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/87—Monitoring of transactions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/25—Using a specific main memory architecture
- G06F2212/251—Local memory within processor subsystem
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Memory System (AREA)
Description
本発明は、情報処理装置、及び情報処理方法に関する。
近年、DRAMなどの半導体メモリにおける、メモリセルの微細化および転送ビットレート高速化にともない、意図しないデータ改変(データ化けエラー)の可能性が高まっている。
従来より、意図しないデータ改変に対処する技術として、誤り訂正符号(ECC)が使われている。まず所定のデータサイズに対して、誤り訂正符号(ECC)値を計算生成し、元のデータに付加してメモリへ保存しておく。メモリ読み出しにおいては、データとともにECC値を取り出し、取得したデータに誤りがないか計算し、誤りが検出された場合は可能な範囲で復元を行う。
従来は、このECC値の生成・計算と誤り復元(以下ECC処理という)は、システムに要求されるデータ信頼性に基づき、必要に応じて、DRAMの外にあるSOCチップなどが内蔵するメモリコントローラ側で行われることが多かった。しかし、メモリセルの微細化が進み、DRAMチップ内にECC処理を行う回路を内蔵し、常時エラー補正する必要性が高まっている。
ECC処理に要する時間は、ECC処理単位である所定のデータ長(バースト長)でDRAMにアクセスする場合は、パイプライン処理によって、メモリセルへのアクセスとECC処理とDRAMチップ内外の転送を並行実行することで、多くの場合、隠蔽することができる。
しかし、前記所定のデータ長と異なる小さなサイズのデータをDRAMへ書き込む場合は、ECC処理時間が顕在化してしまう。これはたとえば、次のように処理する必要があるためである。まず、書き込み対象の当該領域から前記所定のデータ長でデータを読み出し、次に、小さなサイズのデータを、読み出した所定のサイズのデータの一部へ上書きしてからECC値を再計算し、最後に、その所定のサイズのデータを、新しいECCs値と共に当該領域に書き戻す(以下リード・モディファイ・ライトと呼ぶ)。
なお、ECC処理がない場合は、一般にマスクライト(masked write)と呼ぶ手法で、前記所定のデータ長よりも小さなサイズのデータを直接DRAMのメモリアレイへ書き込むことができる。これはリード・モディファイ・ライトを行う場合に比べて処理時間が短い。
マスクライトでは、シリアルレジスタからメモリアレイへの新しいデータを転送する際に、書き込み転送をライトマスクで制御する。このマスクは、データビットに対応する、ストレージアレイの、一つまたはそれ以上のデータビットプレーンに、新しいデータを選択的に書き込むことを可能にする(例えば図3のJESD21-C, 1/97の説明を参照)。
本発明は上記実情に鑑みて為されたもので、ECC処理が必要なDRAMを用いながら、ECC処理単位より小さなサイズのデータのDRAM書き込み性能を、ECC処理が不要なDRAMと同等もしくはより向上させる情報処理装置及び情報処理方法を提供することを、その目的の一つとする。
上記従来例の問題点を解決する本発明の一態様は、メモリと、当該メモリへのデータの書き込み指示を受けて、データを書き込むメモリコントローラとを備えた情報処理装置であって、前記メモリは、所定のデータ長のデータごとに誤り訂正処理を実行するメモリであり、前記メモリコントローラは、書き込み指示に係るデータのデータ長が、前記所定のデータ長より短い場合に、リードモディファイライトの処理を、前記メモリに代わって行うメモリコントローラであることとしたものである。
本発明によると、ECC処理が必要なDRAMを用いながら、ECC処理単位より小さなサイズのデータのDRAM書き込み性能を、ECC処理が不要なDRAMと同等もしくはより向上させることができる。
本発明の実施の形態について図面を参照しながら、図1の構成に従って説明する。本発明の実施の形態に係る情報処理装置1は、家庭用ゲーム機等であり、図2,3に例示する背景に基づき、図4に例示する特徴事項の少なくとも一つを備え、図5に例示するように、制御部11,記憶部12,操作制御部13,表示制御部14及び通信部15を含んで構成される。
制御部11は、CPU等のプログラム制御デバイスであり、記憶部12に格納されたゲームアプリケーション等のプログラムに従って動作する。
記憶部12は、SoCオンチップインターコネクト等の配線を介して制御部11に接続され、制御部11によって実行されるプログラムや、制御部11の処理において必要となる種々の情報を保持する。本実施の形態では、この記憶部12は、記憶制御部21と、メモリ22とを含んで構成される。ここでメモリ22はECC処理機能つきのDRAMであるものとする。
記憶制御部21は、メモリコントローラ(Memory Controller)であり、制御部11から入力される指示に従い、メモリ22に対してデータを記録し、あるいはメモリ22からデータを読み出す制御を行うものであり、この詳しい動作については後に述べる。
操作制御部13は、ゲームコントローラ等に接続され、ユーザの指示操作の内容を受け入れて、制御部11に出力している。表示制御部14は、ディスプレイ等に接続されており、制御部11から入力される指示に従って情報を表示出力するよう制御する。
通信部15は、ネットワークインタフェース等であり、制御部11から入力される指示に従って、ネットワークを介して接続されるサーバ等の間で情報を授受し、この情報処理装置1宛てにネットワークを介して送信された情報を受信して、制御部11に出力している。
本実施の形態においてメモリコントローラである記憶制御部21は、図18に例示するように、リードキュー201と、RMW(リードモディファイライト)キュー202と、ライトキュー203と、DRAMアクセス制御部204とを含んで構成されている。
ここでリードキュー201は、複数のエントリ(記憶領域)を備え、各エントリは、メモリ22に対する読み出し/書き込みデータサイズである所定のデータ長のデータを保持するバッファ(リードデータキュー201d)と、バッファと対となるアドレス(リードアドレスキュー201a)とを含む。
RMWキュー202もまた、複数のエントリ(記憶領域)を備え、各エントリは、メモリ22に対する読み出し/書き込みデータサイズである所定のデータ長のデータを保持するバッファ(RMWデータキュー202d)と、バッファと対となるアドレス(RMWアドレスキュー202a)とを含む。このRMWキュー202のエントリのそれぞれは、メモリ22のあるアドレスに格納されたデータに対するリードモディファイライトの処理に利用できる。
なお、RMWキュー202のエントリの数は、次のパラメータP0乃至P4等を用いて定めればよい。すなわち、
P0:上記所定のデータ長未満の小さなサイズの書き込みが連続実行された場合に達成すべき帯域(単位サイズあたりのデータの書き込み・読み出しに要する時間)。例えば、利用するメモリ22と同様の性能を有するが、ECC処理が不要であるDRAMを用いた場合に、上記小さいサイズの書き込み要求が連続して実行されたときに達成可能な帯域をP0としてもよい。
P1:P0の帯域を達成するために必要な単位時間あたりのRMWライト処理数。つまり、P1=P0/(書き込みデータのデータ長)
P2:上記所定のデータ長未満の小さなサイズの書き込み要求が、単位時間あたり何個発生する見込みであるかを、ユースケースに基づき見積もった数
P3:DRAMアクセス制御部204の制御において、RMWデータキュー202dに所定のデータ長未満の小さなサイズの書き込みデータが滞留する時間の最大値(メモリコントローラである記憶制御部21がリードモディファイライトに要する処理時間の最大値)。ここでデータが滞留する時間には、データの書き込み完了後に保持する時間を含めても、含めなくてもよい。
P4:DRAMアクセス制御部204の制御において、リードモディファイライトが他処理と同等優先度であったとき、上記所定のデータ長未満の小さなサイズの書き込みデータが滞留する時間の最小値。
P0:上記所定のデータ長未満の小さなサイズの書き込みが連続実行された場合に達成すべき帯域(単位サイズあたりのデータの書き込み・読み出しに要する時間)。例えば、利用するメモリ22と同様の性能を有するが、ECC処理が不要であるDRAMを用いた場合に、上記小さいサイズの書き込み要求が連続して実行されたときに達成可能な帯域をP0としてもよい。
P1:P0の帯域を達成するために必要な単位時間あたりのRMWライト処理数。つまり、P1=P0/(書き込みデータのデータ長)
P2:上記所定のデータ長未満の小さなサイズの書き込み要求が、単位時間あたり何個発生する見込みであるかを、ユースケースに基づき見積もった数
P3:DRAMアクセス制御部204の制御において、RMWデータキュー202dに所定のデータ長未満の小さなサイズの書き込みデータが滞留する時間の最大値(メモリコントローラである記憶制御部21がリードモディファイライトに要する処理時間の最大値)。ここでデータが滞留する時間には、データの書き込み完了後に保持する時間を含めても、含めなくてもよい。
P4:DRAMアクセス制御部204の制御において、リードモディファイライトが他処理と同等優先度であったとき、上記所定のデータ長未満の小さなサイズの書き込みデータが滞留する時間の最小値。
これらのパラメータを用い、RMWキュー202のエントリ数は、例えば、最も悪い条件(ワースト条件)を考慮した場合、N1 = P1×P3/P0とする。また、別の例として最低数だけ用意することを考慮する場合(ミニマムエントリ数とする場合)、N2 = P2×P4/P0とする。
さらに、ライトキュー203も、複数のエントリ(記憶領域)を備え、各エントリは、上記所定長のデータを保持するバッファ(ライトデータキュー203d)と、バッファと対となるアドレス(ライトアドレスキュー203a)とを含む。
DRAMアクセス制御部204は、アクセススケジューラ214を有する。このアクセススケジューラ214は、メモリ22へのデータの書き込みや、メモリ22からのデータの読み出しの申請を受け入れて当該申請の内容を表す情報を蓄積し、当該蓄積した情報が表す申請を、所定の規則で判断した順序で処理する。
アクセススケジューラ214は、メモリ22との間で所定のアクセスビットレートで信号を授受し、申請に基づいて、メモリ22に対してライトキュー201あるいはRMWキュー202に格納されたデータの書き込み処理を実行する。またこのアクセススケジューラ214は、申請に基づいて、メモリ22からデータを読み出して、リードキュー203あるいはRMWキュー202へ書き込む。
なお、このメモリコントローラである記憶制御部21とメモリ22との間のアクセスビットレートは、同じ仕様でデータの書き込み/読み出しを行う場合の、ECC処理を行わないメモリに対するアクセスビットレートよりも高めに設定してもよい。例えばECC処理を行わないメモリに対するアクセスビットレートが14Gbpsである場合、ここでのアクセスビットレートは16.5Gbpsとする。
DRAMアクセス制御部204は、制御部11からメモリ22へのデータの書き込みの要求(メモリ書き込み要求)や、メモリ22からのデータの読み出し(メモリ読み出し要求)の要求を受け入れる。そしてDRAMアクセス制御部204は、これらの要求に応答して以下のように動作する。
[データの書き込み]
本実施の形態では、DRAMアクセス制御部204は、メモリ書き込み要求を、当該要求に係るデータ(メモリ22へ書き込むべきデータ)とその書き込み先アドレスとともに受け入れる。
本実施の形態では、DRAMアクセス制御部204は、メモリ書き込み要求を、当該要求に係るデータ(メモリ22へ書き込むべきデータ)とその書き込み先アドレスとともに受け入れる。
当該要求に係るデータのデータ長を調べる。DRAMアクセス制御部204は、このデータ長が、予め定めた処理単位より短い(処理単位未満である)場合、記憶制御部21自身が、リードモディファイライトの動作を行う。なお、この処理単位は例えばメモリ22に対する読み出し/書き込みデータサイズ(ECC処理単位またはパイプライン処理単位)としておく。
一方、DRAMアクセス制御部204は、このデータ長が、予め定めた処理単位である場合、DRAMアクセス制御部204は、受け入れた書き込み先アドレスとデータとをライトキューに格納し、アクセススケジューラ214に対して適時に、メモリ22に対して書き込みするよう申請する。この動作は、一般的なメモリコントローラの動作と同様であるので、ここでの詳細な説明は省略する。
DRAMアクセス制御部204は、リードモディファイライトの動作を行う場合、受け入れた書き込み先アドレスとデータとをRMWキュー202に格納する(ステップ1)。このときRMWアドレスキュー202aのうちに、受け入れた書き込み先アドレスに一致するアドレスが格納されたエントリがない場合は、空となっているエントリのRMWアドレスキュー202aに当該書き込み先アドレスを蓄積し、当該エントリのRMWデータキュー202dに、受け入れたデータを蓄積する。
またRMWアドレスキュー202aのうちに、受け入れた書き込み先アドレスに一致するアドレスが格納されたエントリがあれば、受け入れたデータを、当該エントリのRMWデータキュー202dに格納する。この処理は後述する(後述のステップ1a)。
ここではデータ長がメモリ22に対する読み出し/書き込みデータサイズである所定のデータ長未満であるので、受け入れたデータは、書き込み先アドレスで特定される当該所定データ長のデータの一部を書き換えるものとなる。そこでDRAMアクセス制御部204は、RMWデータキュー202dの所定のデータ長のバッファのうち、対応する位置に受け入れたデータを記録しておく(他の部分は例えば「0」等予め定めた値を表すものとしておく。あるいは、既に以前の読み出し、あるいは書き込み要求によって記録されたデータがある場合は、当該データをそのままにする)。図10等においてRMWデータキュー(RMW Data queue)の一部が着色された状態にあるのは、このようにデータが記録されていることを示している。
制御部11は、メモリ22への遅延書き込みを行う場合、この時点でデータの書き込みが完了したものとして、後続の処理を実行することとなる。
DRAMアクセス制御部204は、アクセススケジューラ214に対して受け入れた書き込み先アドレスのアドレスに現在書き込まれているデータの読み出しを申請する(ステップ2)。
アクセススケジューラ214は、申請に応じて、書き込み先アドレスのアドレスに現在書き込まれているデータを、メモリ22から読み出す(ステップ3)。なお、アクセススケジューラ214は、申請されているメモリ22へのアクセスのうち、他に優先するべきアクセスがあれば、当該アクセスを優先して処理してもよい。この場合、ステップ2とステップ3とは必ずしも時間的に連続して行われることとはならない。
DRAMアクセス制御部204は、アクセススケジューラ214が読み出したデータと、ステップ1で格納したデータとを、RMWデータキュー202d上で合成(マージ)する(ステップ4)。つまり、読み出したデータのうち、書き込み要求に係るデータに対応する部分を、当該書き込み要求に係るデータで上書きした状態としてRMWデータキュー202dの対応するエントリに蓄積する。
この後、ステップ7が完了するまでに、書き込みアドレスに対応するアドレスに格納されたデータの読み出し要求が制御部11からあったときには、DRAMアクセス制御部204は、当該アドレスが格納されたRMWアドレスキュー202aに対応するRMWデータキュー202dからデータを読み出して制御部11に対して出力する(ステップ5)。このステップ5は、必ずしも実行されない。
DRAMアクセス制御部204は、ステップ4の処理が完了したRMWデータキュー202d内のデータを、メモリ22の対応するアドレスに書き込むよう、アクセススケジューラ214に対して申請する(ステップ6)。
アクセススケジューラ214は、ステップ6の申請に応じて、ステップ4の処理が完了したRMWデータキュー202d内のデータを、メモリ22の、対応するRMWアドレスキュー202aのエントリ内に保持されたアドレスに対して書き込む(ステップ7:メモリコミット)。
次に、ステップ2から6の処理(以下、区別のため実行中処理と呼ぶ)の実行中、制御部11から新たにメモリ書き込み要求を受け入れると、DRAMアクセス制御部204は、当該要求に係るデータのデータ長を調べる。そしてDRAMアクセス制御部204は、このデータ長が、予め定めた処理単位を下回る場合、RMWアドレスキュー202aのうちに、メモリ書き込み要求とともに受け入れた書き込み先アドレスに一致するアドレスが格納されたエントリがあるか否かを判断する。
ここで、上記受け入れた書き込み先アドレスに一致するアドレスが格納されたエントリがRMWアドレスキュー202aのうちにあれば、受け入れたデータと、当該エントリ(対応エントリと呼ぶ)のRMWデータキュー202dに既に格納されているデータとをマージして、当該エントリのRMWデータキュー202dに格納する(ステップ1a)。
つまり、受け入れた書き込み先アドレスで特定されるメモリ22内の記憶領域(所定データ長の領域)のうち、対応エントリのRMWデータキュー202dの当該記憶領域の先頭からA1sからA1eに既にデータ(以下、区別のためデータ1と呼ぶ)が格納されているとき、新たに受け入れたデータ(区別のためデータ2と呼ぶ)が当該記憶領域の先頭からA2sからA2eに記録されるもの(この記憶領域内の範囲は書き込み先アドレスの情報と、受け入れたデータのデータ長とにより特定できる)であるとすると、マージの結果は次のようになる。
(1)A1sからA1eの範囲と、A2sからA2eの範囲とが重なり合わない場合:この場合は、マージ後の対応エントリのRMWデータキュー202dは、A1sからA1eの範囲にデータ1が格納され、A2sからA2eの範囲に新たに受け入れたデータ2が格納された状態となる。
(2)A1s<A2s<A1s<A2eの場合など、部分的に重なりあう場合:この場合は、対応エントリのRMWデータキュー202dに既に格納されているデータ1のうち、新たに受け入れたデータ2が重なりあう部分は、データ2で上書きされる。上述のA1s<A2s<A1s<A2eの場合は、マージ後の対応エントリのRMWデータキュー202dには、そのA1sから(A2s-1)まではデータ1の対応する部分が格納され、A2sからA2eまではデータ2が格納された状態となる。
(3)A1s=A2sかつ、A1s=A2eの場合:この場合も重なり合う部分が新たに受け入れたデータ2で上書きされることとなり、マージ処理後の対応エントリのRMWデータキュー202dには、A1s(A2sと等しい)からA1e(A2eと等しい)までにデータ2が格納された状態となる。
(1)A1sからA1eの範囲と、A2sからA2eの範囲とが重なり合わない場合:この場合は、マージ後の対応エントリのRMWデータキュー202dは、A1sからA1eの範囲にデータ1が格納され、A2sからA2eの範囲に新たに受け入れたデータ2が格納された状態となる。
(2)A1s<A2s<A1s<A2eの場合など、部分的に重なりあう場合:この場合は、対応エントリのRMWデータキュー202dに既に格納されているデータ1のうち、新たに受け入れたデータ2が重なりあう部分は、データ2で上書きされる。上述のA1s<A2s<A1s<A2eの場合は、マージ後の対応エントリのRMWデータキュー202dには、そのA1sから(A2s-1)まではデータ1の対応する部分が格納され、A2sからA2eまではデータ2が格納された状態となる。
(3)A1s=A2sかつ、A1s=A2eの場合:この場合も重なり合う部分が新たに受け入れたデータ2で上書きされることとなり、マージ処理後の対応エントリのRMWデータキュー202dには、A1s(A2sと等しい)からA1e(A2eと等しい)までにデータ2が格納された状態となる。
DRAMアクセス制御部204は、ステップ1aの処理の後は、実行中処理を継続する。
なお、DRAMアクセス制御部204は、上記ステップ1からステップ7までの処理中に、制御部11から新たにメモリ書き込み要求を受け入れ、当該要求に係るデータのデータ長が、予め定めた処理単位を下回る場合であって、RMWアドレスキュー202aのうちに、メモリ書き込み要求とともに受け入れた書き込み先アドレスに一致するアドレスが格納されたエントリがない場合は、既に述べたように、空となっているエントリのRMWアドレスキュー202aに当該書き込み先アドレスを蓄積し、当該エントリのRMWデータキュー202dに、受け入れたデータを蓄積して(ステップ1b)、別途、当該エントリに関するステップ2以下の処理の実行を開始する。
またこのステップ1bの処理の過程で、空となっているエントリのRMWアドレスキュー202aがなければ、DRAMアクセス制御部204は、受け入れた書き込み先アドレスとデータとをライトキュー203に記録し、アクセススケジューラ214に対して書き込みを申請して、メモリ22への書き込みを行わせる。
本実施の形態では、このように、DRAMアクセス制御部204がリードモディファイライトの処理に利用可能な記憶領域であるエントリを複数備え、エントリの数だけリードモディファイライトの処理を並列的に実行する。これにより、リードモディファイライトの処理時間が外見的に隠蔽される。
また本実施の形態では、上述のように、DRAMアクセス制御部204があるアドレスに対応する所定処理単位未満のデータについて、当該データをメモリ22へ書き込むまでの間(リードモディファイライトの処理中)に、制御部11から当該アドレスに対応する、別の、所定処理単位未満のデータの書き込み要求があったときには、これらデータ書き込み要求の内容をマージして、メモリ22へのデータの書き込みを実行(リードモディファイライトの処理を継続)する。
なお、DRAMアクセス制御部204は、ある書き込み先アドレスに対応するデータについてリードモディファイライトの処理を行っている間に、当該書き込み先アドレスに対して所定の処理単位のデータ長のデータの書き込み指示を制御部11から受けると、DRAMアクセス制御部204は、それまでの間に当該アドレスに対する読み出しの要求がなければ、当該書き込み先アドレスに対応するRMWキュー202のエントリの内容を削除し、当該書き込み先アドレスに対応するリードモディファイライトの処理を中断することとしてもよい。そして、制御部11から受け入れた書き込み指示に係る書き込み先アドレスと、所定の処理単位のデータ長のデータとをライトキュー203に記録し、アクセススケジューラ214に対して書き込みを申請して、メモリ22への書き込みを行わせる。
[データの読み出し]
また、DRAMアクセス制御部204は、制御部11から、読み出し元アドレスとともにデータの読み出し要求を受け入れる。DRAMアクセス制御部204は、RMWアドレスキュー202aのエントリのうちに、受け入れた読み出し元アドレスに一致するアドレスが格納されているエントリがあるか否かを調べる。
また、DRAMアクセス制御部204は、制御部11から、読み出し元アドレスとともにデータの読み出し要求を受け入れる。DRAMアクセス制御部204は、RMWアドレスキュー202aのエントリのうちに、受け入れた読み出し元アドレスに一致するアドレスが格納されているエントリがあるか否かを調べる。
ここでRMWアドレスキュー202aのエントリのうちに、受け入れた読み出し元アドレスに一致するアドレスが格納されているエントリがなければ、DRAMアクセス制御部204は、メモリ22の当該読み出し元アドレスを、リードキュー201に記録して、当該アドレスに格納されているデータを読み出すよう、アクセススケジューラ214に対して申請する。
アクセススケジューラ214は、予め定められた、データのメモリ22からの読み出しの優先順位に従い、申請されたデータの読み出しをスケジューリングする。その後、データを読み出したアクセススケジューラ214は、当該読み出したデータを、リードキュー201の対応するアドレスに関連付けて格納し、適時に制御部11に出力する。この場合の処理は、一般的なメモリ22からのデータの読み出しと同様の動作になるので、ここでの詳しい説明は省略する。
またDRAMアクセス制御部204は、読み出し元アドレスとともにデータの読み出し要求を受け入れた際、RMWアドレスキュー202aのエントリのうちに、受け入れた読み出し元アドレスに一致するアドレスが格納されているエントリがあれば、次の処理を行う。
DRAMアクセス制御部204は、当該エントリに対応する書き込みの処理が上記ステップ1から7までのどの段階にあるかを判断する。そして当該処理の段階がステップ3以前である場合(メモリ22内のデータとマージされていない段階にある場合)は、マージされるまで待機する。
DRAMアクセス制御部204は、当該エントリに対応する書き込みの処理がステップ4以降となっているとき(メモリコミット後であってもよい)、あるいは上記待機中ステップ4の実行を完了したときには、RMWデータキュー202dの当該エントリのデータを読み出して、要求されたデータとして制御部11に出力する。
なお、上記待機をする際には、DRAMアクセス制御部204のアクセススケジューラ214は対応するデータの読み出しの申請の処理(メモリ22からRMWキュー202への読み出し;上記のステップ3の処理)の優先順位を高めるよう制御してもよい。例えば現在のメモリ22へのアクセス完了後、他の申請に基づくアクセスの前に処理されるように制御してもよい。
すなわち、アクセススケジューラ214は、リードキュー201、RMWキュー202、及びライトキュー203に保持されているアドレスを参照し、各エントリに保持されているアクセス要求の処理順序を制御するものであるが、このとき、メモリ22へのアクセス効率を最大化するため、次のように処理の優先順を決定する。
すなわちアクセススケジューラ214は、メモリ22のバンク・ページ構成、リード・ライトの連続性、リード・ライトのデータ長、バスマスタの要求優先度を考慮し、処理順序を制御する。このとき、同じバスマスタからのアクセス要求において、同じアドレス領域に対するライトとリード順序の逆転が起きないように制御する。これにより、データ一貫性(data consistency, data coherency)を維持する。
従ってアクセススケジューラ214は、あるアドレスに対応するリードモディファイライトの処理における、メモリ22からRMWキュー202への読み出しの処理(ステップ3の処理)を優先する場合、同じアドレスに対するライトまたはリードの順を変更しない範囲で処理順序を入れ替えて、上記範囲で優先された順序で処理を行うよう制御する。
[メモリコミット後の処理]
DRAMアクセス制御部204は、RMWキュー202のいずれかのエントリのRMWアドレスキュー202aに格納されたアドレスに対するリードモディファイライトの処理において、ステップ7(メモリコミット)の処理が完了したときには、当該エントリに格納されているアドレスの情報とデータとを削除して、エントリを空きエントリとしてもよい。
DRAMアクセス制御部204は、RMWキュー202のいずれかのエントリのRMWアドレスキュー202aに格納されたアドレスに対するリードモディファイライトの処理において、ステップ7(メモリコミット)の処理が完了したときには、当該エントリに格納されているアドレスの情報とデータとを削除して、エントリを空きエントリとしてもよい。
もっとも本実施の形態はこの例に限られず、DRAMアクセス制御部204は、当該メモリコミットの処理が完了したデータに係るRMWキュー202のエントリ(以下、処理後エントリと呼ぶ)について、当該エントリに格納されているアドレスの情報とデータとをそのまま保持してもよい。
この場合、DRAMアクセス制御部204は、処理後エントリに係るアドレスからの読み出し要求が制御部11から入力されると、当該要求に応答して、処理後エントリに格納されているデータ(メモリ22にも格納されているがメモリ22にはアクセスせずにRMWキュー202の処理後エントリに格納されているデータ)を読み出して制御部11に出力する。
またDRAMアクセス制御部204は、処理後エントリに係るアドレスへのデータの書き込み要求が制御部11から入力されると、当該書き込み要求に係るデータを、処理後エントリのRMWデータキュー202dに書き込む。この際、当該書き込み要求に係るデータがRMWデータキュー202のデータ長(バースト長など)未満のデータであったときには、対応するRMWデータキュー202dに格納されているデータとマージする。つまり、RMWデータキュー202dに格納されているデータのうち、書き込み要求に係るデータに対応する部分を、書き込み要求に係るデータで部分的に上書きする。このときDRAMアクセス制御部204は、このエントリを処理後エントリから取り除いて、改めて、ステップ6,7の処理(このエントリのデータをメモリ22に書き込む申請を行う処理)を実行する。
またこの例では、RMWキュー202のエントリに空きがない状態で、RMWキュー202のどのエントリにも格納されていないアドレスへの書き込み要求が制御部11から受け入れられると、DRAMアクセス制御部204は次の処理を実行する。
すなわちこの例ではDRAMアクセス制御部204は、処理後エントリのうち一つを選択して、制御部11から新たに受け入れた要求に係るアドレスとデータとを当該処理後エントリのRMWアドレスキュー202aとRMWデータキュー202dとに上書きする。そしてDRAMアクセス制御部204は、当該エントリを処理後エントリから取り除く。
ここで処理後エントリの一つを選択する方法はランダムであってもよいし、いわゆるLRU(Least Recently Used)方式を用いた選択を行ってもよい。LRU方式を用いた選択の処理については広く知られた方法を採用できるので、ここでの詳しい説明は省略する。
[RMWキューの空き]
なお、本実施の形態のある例では、ステップ4の処理が完了したRMWデータキュー202d内のデータを、メモリ22の対応するアドレスに書き込むよう、アクセススケジューラ214に対して申請するステップ6の処理の後、RMWキュー202の空きエントリ(使用されていないか、あるいはステップ7の処理が完了しているRMWキュー202のエントリ)の数が所定のしきい値を下回った場合に、アクセススケジューラ214は、次のように各処理の処理順序を変更してもよい。
なお、本実施の形態のある例では、ステップ4の処理が完了したRMWデータキュー202d内のデータを、メモリ22の対応するアドレスに書き込むよう、アクセススケジューラ214に対して申請するステップ6の処理の後、RMWキュー202の空きエントリ(使用されていないか、あるいはステップ7の処理が完了しているRMWキュー202のエントリ)の数が所定のしきい値を下回った場合に、アクセススケジューラ214は、次のように各処理の処理順序を変更してもよい。
すなわちアクセススケジューラ214は、申請されているステップ6に係る処理を優先的に処理するよう、順序を変更する。この例でも、アクセススケジューラ214は、同じアドレス領域に対するライトとリード順序の逆転が起きない範囲で、ステップ6に係る処理の順序を繰り上げる。この目的のため、DRAMアクセス制御部204は、上記ステップ6の処理におけるアクセススケジューラ214への申請の際、ステップ6の処理であることを示す情報とともに申請を行う。そしてアクセススケジューラ214は、申請されて待ち行列にある処理のうち、いずれかのリードモディファイライトの処理におけるステップ6の処理に係る処理についてはその旨を表す情報を関連付けて記録しておくこととしてもよい。
[実施形態の動作]
このように、本実施の形態によると、RMWキューに複数のエントリを設けて、複数のRMW処理を並列的(時分割的)に実行することで、一つのRMWの処理を一度に実行するのではなく、積極的に遅延させて実行し、全体的にメモリ22へのアクセスが連続することとなるようアクセススケジューリングを行うことでメモリ22の利用効率を向上する。
このように、本実施の形態によると、RMWキューに複数のエントリを設けて、複数のRMW処理を並列的(時分割的)に実行することで、一つのRMWの処理を一度に実行するのではなく、積極的に遅延させて実行し、全体的にメモリ22へのアクセスが連続することとなるようアクセススケジューリングを行うことでメモリ22の利用効率を向上する。
またメモリ22のあるアドレスに格納されたデータに対するRMW処理においてメモリ22へのコミット以前に、当該アドレスに対して所定データ長(バースト長)未満のデータ書き込み要求が発生したときには、上記RMWキューのエントリ上の当該アドレスに係るデータとのマージを行う。
同様に、メモリ22のあるアドレスに格納されたデータに対するRMW処理においてメモリ22へのコミット以前に、当該アドレスからのデータ読み出し要求が発生したときには、メモリ22の当該アドレスに格納されたデータと、RMWキューの対応するエントリ内のデータとのマージを行ったうえで、当該RMWキューに格納されたデータを読み出し結果として出力する。
さらに、メモリ22へのコミットが完了しても、RMWキューが不足しない限り、データを保持しておき、その後の対応するアドレスからの読み出し要求に対して、RMWキューに格納されたデータを出力することとしてもよい。この例では、RMWキュー等に利用される、メモリコントローラに持たせるバッファは従来のものに比べ、増大させておくこととするのも好ましい。
本実施の形態によると、メモリコントローラに内蔵するRMWキュー等の待ち行列(Queue)のエントリ数および、エントリ内容の滞留時間を調整することで、リードモディファイライト処理性能を調整できる。
[実施形態の動作の別の説明]
本実施の形態の情報処理装置1の動作は、また、次のように説明することもできる。
本実施の形態の情報処理装置1の動作は、また、次のように説明することもできる。
所定のデータ長未満のデータのメモリ書き込み要求があった場合、メモリコントローラ自身が、リードモディファイライトをおこなう。すなわち、該当アクセスをメモリへそのまま発行せず、メモリコントローラ自身が、所定データ長の読み出し、所定データ長未満のデータとの統合、統合結果の所定データ単位にてのメモリ書き込みをおこなう。
ここで具体的には、ECC処理単位サイズ未満の書き込み要求があった場合、メモリコントローラ自身が、リードモディファイライトをおこなう。
また、ここでメモリのパイプライン処理単位(バースト長)未満の書き込み要求があった場合、メモリコントローラが、リードモディファイライトをおこなう。
メモリコントローラは、アクセス要求を一時的に保持し、リードモディファイライト処理をおこなう待ち行列(Queue)をもつ。
メモリコントローラは、リードモディファイライト処理をおこなう待ち行列(Queue)に複数のエントリをもち、複数のリードモディファイライト処理を並列に実行することで、リードモディファイライトの処理時間を隠蔽する。
アクセス要求元は、メモリコントローラ(Memory Controller)が所定のデータ長未満のメモリ書き込み要求を受け取った時点で該当アクセスが処理完了したものとみなし、後続処理を実行することができるメモリコントローラ(Memory Controller)。
メモリコントローラは、メモリアクセス要求の到着順序と実行順序を必ずしも一致させずに処理するが、データ一貫性は維持する。
メモリコントローラは、複数の所定のデータ長未満のメモリ書き込み要求を統合のうえ、一括してリードモディファイライトをおこなう。
メモリコントローラは、リードモディファイライト処理の結果をメモリへ遅延書込みする。
メモリコントローラは、リードモディファイライト中のメモリアレイとメモリアクセス用データバスへのアクセス頻度を低下させ、リードモディファイライト処理の優先度を引き下げて遅延させることで、他のアクセスも含めた総合メモリアクセス性能が向上するように、メモリアクセス順序をスケジューリングする。
メモリコントローラは、リードモディファイライトのうち、所定データ長の読み出しを遅延させているときに、該当アドレスに対するリード要求があった場合、メモリアクセス順序のスケジューリングを変更し、該当読み出しを優先させる。
メモリコントローラは、リードモディファイライト結果をメモリに書き込み完了する前に、当該領域のリード要求があった場合、該当待ち行列(Queue)エントリからデータを供給する。
メモリコントローラは、リードモディファイライトのうち、統合結果の所定データ単位にてのメモリ書き込みを遅延させているときに、待ち行列(Queue)の空きエントリが減少してきたときは、メモリアクセス順序のスケジューリングを変更し、該当書き込みの優先度をひきあげる。
メモリコントローラは、リードモディファイライト終了後も該当待ち行列(Queue)エントリを破棄せず、必要に応じて、該当アドレスに対する読み出し要求に対してのデータ供給や、該当アドレスに対する書き込みの統合に利用する。
メモリコントローラに内蔵する待ち行列(Queue)のエントリ数および、エントリ内容の滞留時間を調整することで、リードモディファイライト処理性能を調整できる。
図6は、本実施の形態のメモリコントローラの構成例を表す説明図である。本実施の形態では、SoCオンチップインターコネクトを介して、CPU/GPU/DSPなどのプロセッサ、DMAエンジン、Video Enc/Decエンジン、Displayエンジン、Peripheral I/Oなどが接続され、これらがバスマスタ(イニシエータ)となり、DRAMアクセス要求を発行する。
そして、複数のDRAMアクセス要求は各待ち行列(Queue)に保持され、DRAMアクセススケジューラ(DRAM access scheduler)の制御する順序でDRAMに発行され、データ入出力をおこなう。DRAMアクセス要求がメモリコントローラへ到着した順序と、DRAMに発行される順序は必ずしも一致しない。DRAM利用効率やアクセス要求の優先度に基づいて順序入れ替えがある。
メモリコントローラは、SOCオンチップインターコネクトから、アドレスやデータとあわせて、図示しないコマンド線を介して、リード要求・ライト要求などのコマンドを受け取る。
メモリコントローラとDRAMと間のデータバス(Data bus)は図6においては一方向の(unidirectional)信号であるが、双方向(bidirectional)信号であってもよい。
アドレス・キュー(Address queue)やデータ・キュー(Data queue)は本図においては、リード(Read),ライト(Write),リードモディファイライト(RMW:Read Modify Write)用に分割されているが、これらは統合されていてもよい。
統合されている場合は、各エントリがリード、ライト、RMWのいずれに対応するかを示すデータが関連付けられていてもよい。
SOC物理アドレス(SOC Physical address)は図示しない変換器を介してDRAMコマンド及びアドレス(DRAM CommandとAddress)に変換される。
本図はECC処理回路がDRAMに内蔵されている場合を示しているが、本実施の形態はこれに限られず、メモリコントローラ側の出力側(点線箱部)にECC処理回路があるケースも考えられる。
図7に示すように、リードキュー、ライトキュー、RMWキュー(Queue)は、複数のエントリをもち、所定のデータ長のデータを保持できるバッファ(Data n)と対になるアドレス(Adr n)、および、アドレスとデータとのそれぞれを保持しているか否かを個別に示す図示しない有効(Valid)ビット計2ビットをペアとして、1エントリを構成してよい。また、アクセス要求の到達順序は、各エントリ利用順序に制約を設ける、もしくは、図示しないナンバリング保持ビットを各エントリに設けることにより保持する。
RMW用のデータバッファは、1エントリ内において、複数の小さなデータを同時に保持できるように有効(Valid)ビットを複数備えてもよい。図7においては、所定のデータ長を保持できる1エントリあたり、小さなデータを最大8個保持でき(Dn1~Dn8)、有効(Valid)ビットも同数備える。よって、1エントリあたり有効(Valid)ビットはアドレス用1ビット、データ用8ビットとなる。
リードキュー、ライトキューにおいては、同様の構成をとってもよいし、図7のように、1エントリが所定のデータ長以下ならば、データ長に関わらず、1データのみ保持できる構成でもよい。
DRAMアクセススケジューラ(DRAM access scheduler)は、リードキュー、ライトキュー、RMWキューに保持されている有効なアドレスを参照し、各エントリに保持されているアクセス要求の処理順序を制御する。このとき、DRAMアクセス効率を最大化するために、主に、DRAMのバンク・ページ構成、リード・ライトの連続性、リード・ライトのデータ長、バスマスタの要求優先度を考慮し、処理順序を制御するが、この時、データ一貫性(data consistency, data coherency)も、バスマスタからの要求に基づいて、必要に応じて保持する。すなわち、必要な場合は、同じバスマスタからのアクセス要求において、同じアドレス領域に対するライトとリード順序の逆転は起きないように制御する。
RMW address queue, RMW data queueの必要エントリ数について:
・RMW address queue, RMW data queueのエントリ数は、下記パラメータを判断材料として決めてもよい。
P0:所定のデータ長未満の小さなサイズの書き込みが連続実行された場合に達成すべき帯域。例えば、ECC処理不要なDRAM(他諸性能同一)において、小さいサイズの書き込み要求が連続して実行されたときに達成可能な帯域をP0としてもよい。
P1:P0達成に必要な単位時間あたりのリードモディファイライト処理数、P1=P0/(書き込みのデータ長)
P2:所定のデータ長未満の小さなサイズの書き込み要求が、単位時間あたり何個発生する見込みであるかユースケースに基づき見積もった数
P3:DRAM access schedulerの制御において、RMW data queueに所定のデータ長未満の小さなサイズの書き込みデータが滞留する時間の最大値(Memory Controllerがリードモディファイライトに要する処理時間の最大値)。後述7aの保持時間を含める場合と含めない場合があってよい。
P4:DRAM access schedulerの制御において、リードモディファイライトが他処理と同等優先度であったとき、所定のデータ長未満の小さなサイズの書き込みデータが滞留する時間の最小値。
・RMW address queue, RMW data queueのエントリ数は、下記パラメータを判断材料として決めてもよい。
P0:所定のデータ長未満の小さなサイズの書き込みが連続実行された場合に達成すべき帯域。例えば、ECC処理不要なDRAM(他諸性能同一)において、小さいサイズの書き込み要求が連続して実行されたときに達成可能な帯域をP0としてもよい。
P1:P0達成に必要な単位時間あたりのリードモディファイライト処理数、P1=P0/(書き込みのデータ長)
P2:所定のデータ長未満の小さなサイズの書き込み要求が、単位時間あたり何個発生する見込みであるかユースケースに基づき見積もった数
P3:DRAM access schedulerの制御において、RMW data queueに所定のデータ長未満の小さなサイズの書き込みデータが滞留する時間の最大値(Memory Controllerがリードモディファイライトに要する処理時間の最大値)。後述7aの保持時間を含める場合と含めない場合があってよい。
P4:DRAM access schedulerの制御において、リードモディファイライトが他処理と同等優先度であったとき、所定のデータ長未満の小さなサイズの書き込みデータが滞留する時間の最小値。
エントリ数(すなわち本処理の最大並列処理可能数)は、たとえば、下記いずれかから算出する。
・ワースト条件考慮エントリ数N1 = P1×P3/P0単位時間
・ミニマムエントリ数N2 = P2×P4/P0単位時間
・ワースト条件考慮エントリ数N1 = P1×P3/P0単位時間
・ミニマムエントリ数N2 = P2×P4/P0単位時間
計算例を次に示す:
・N1 = P1×P3/P1単位時間 =((1GB/s)/(4B))×(2us)/(1s) = 512
つまり、ワースト条件を考慮した場合のエントリ数の例は512となる。
・N2 = P2×P4/P2単位時間 =(32M/s)×(1us)/(1s) = 32
つまり、最小のエントリ数の例は32となる。
・N1 = P1×P3/P1単位時間 =((1GB/s)/(4B))×(2us)/(1s) = 512
つまり、ワースト条件を考慮した場合のエントリ数の例は512となる。
・N2 = P2×P4/P2単位時間 =(32M/s)×(1us)/(1s) = 32
つまり、最小のエントリ数の例は32となる。
図9は、比較のため、従来のDRAMアクセス処理方法を説明する図である。図9に例示するように、通常のDRAM読み出し処理では、SOCインターコネクトから受け取ったアドレスはリードアドレスキューに一時保持され、DRAMアクセススケジューラ(DRAM access scheduler)の制御する順序でDRAMへ出力され、DRAMから読み出したデータはリードデータキューに一時書き込みされ、SOCインターコネクトとの調停後にSOC内へ出力される。
また通常のDRAM書き込み処理では、SOCインターコネクトから受け取ったアドレスとデータは、それぞれライトアドレスキューとライトデータキューに一時保持され、DRAMアクセススケジューラ(DRAM access scheduler)の制御する順序でDRAMへ出力され、DRAMにデータ書き込みがなされる。
なお、書込みデータサイズが所定データ長(バースト(Burst)長)の場合は、DRAM内のECC処理はパイプライン処理によって効率的に行われ、ECC処理遅延は隠蔽することもできる。
一方、書込みデータサイズが上記所定データ長より小さい場合は、DRAM内部回路は、次の処理ステップ1から6の処理をおこなう。
ステップ1)メモリコントローラ(Memory Controller)より受け取った小さなサイズのデータを、メモリアレイに書き込まず、一時的なデータ置き場へ保存、
ステップ2)書き込み対象の当該領域メモリアレイから前記所定のデータ長でデータを読み出し、
ステップ3)ステップ2)のデータについてECC計算と誤り訂正、
ステップ4)ステップ1)のデータを、ステップ2)のデータの一部へ上書き、
ステップ5)ステップ4)のデータについてECC値を再計算、
ステップ6)ステップ5)の新しいECC値とデータを共に当該領域メモリアレイに書き戻す。
ステップ1)メモリコントローラ(Memory Controller)より受け取った小さなサイズのデータを、メモリアレイに書き込まず、一時的なデータ置き場へ保存、
ステップ2)書き込み対象の当該領域メモリアレイから前記所定のデータ長でデータを読み出し、
ステップ3)ステップ2)のデータについてECC計算と誤り訂正、
ステップ4)ステップ1)のデータを、ステップ2)のデータの一部へ上書き、
ステップ5)ステップ4)のデータについてECC値を再計算、
ステップ6)ステップ5)の新しいECC値とデータを共に当該領域メモリアレイに書き戻す。
従来の課題として、書込みデータサイズが所定データ長より小さい場合、ECC処理が不要なDRAMにおいてmasked writeで処理する場合に比べて処理時間は長くなっていた。加えて当該処理中は他のアクセスを当該DRAMバンクは処理できず、Write data queueやDRAMの利用効率、および、他アクセス含めた総合的なDRAM平均転送データレートが低下していた。
図10から図16は、本発明の実施の形態のDRAMアクセス処理方法を説明する図である。なお、書込みデータサイズが所定データ長(バースト長)の場合は、従来と同様であるので、繰り返しての説明は省略する。
一方、書込みデータサイズが所定のデータ長より小さい場合、メモリコントローラ(Memory Controller)は、次の処理ステップ1から7の処理をおこなう。この処理は、並列的、かつ、リエントラントに行われる。
ステップ1.該当書き込み要求をRMWアドレスキュー(address queue)、及びRMWデータ・キュー(data queue)に格納する。要求がポステッド・ライト(Posted write)であった場合、バスマスタやオンチップインターコネクトは、この時点で、本データの書き込み完了とみなし、後続処理をおこなえる。
ステップ2.書き込み対象の当該領域から所定データ長でデータを読み出す要求をDRAMアクセススケジューラ(DRAM access scheduler)へ申請する。このとき、DRAMアクセススケジューラ(DRAM access scheduler)の制御において、より優先度が高い通常のリード要求や、その他のライト要求が優先されてDRAMに発行されてもよい。
ステップ3.DRAMから所定のデータ長でデータを読み出す。
ここまでの説明で、DRAMへの書き込みは、通常はポステッド・ライト(Posted write)、すなわち書込みの遅延が許容され、DRAMへの書き込みが行われたことをバスマスタにレスポンスする必要はないアクセスである。ステップ1が完了した時点で、メモリコントローラ(Memory Controller)は次のDRAMアクセスを処理し始めることができる。また本方式においては、ライトデータ・キュー(Write data queue)が、ECC処理をDRAM内でおこなうあいだの時間スタックされることもない。そのため、小さなサイズのデータのDRAMへの書き込み完了(以下のステップ7までの処理)は、DRAMアクセススケジューラ(DRAM access scheduler)において低優先度としてよい。
ここまでの説明で、DRAMへの書き込みは、通常はポステッド・ライト(Posted write)、すなわち書込みの遅延が許容され、DRAMへの書き込みが行われたことをバスマスタにレスポンスする必要はないアクセスである。ステップ1が完了した時点で、メモリコントローラ(Memory Controller)は次のDRAMアクセスを処理し始めることができる。また本方式においては、ライトデータ・キュー(Write data queue)が、ECC処理をDRAM内でおこなうあいだの時間スタックされることもない。そのため、小さなサイズのデータのDRAMへの書き込み完了(以下のステップ7までの処理)は、DRAMアクセススケジューラ(DRAM access scheduler)において低優先度としてよい。
ただし、オンチップインターコネクトから受け取った書き込み要求がノン・ポステッド・ライト(non-posted write)であった場合は、その限りではない。他アクセスの効率が落ちても、ノン・ポステッド・ライト(non-posted write)を速やかに処理するようにDRAMアクセススケジューラ(DRAM access scheduler)が制御する必要がある。
ステップ1a.もし、ステップ2から6の実行中に、所定のデータ長の同じ当該領域へ新たな小さいサイズの書き込みがあった場合、同じRMWデータ・キュー(data queue)エントリに保存する。上書きもする。
ステップ1b.もし、ステップ1から7の実行中に、別の領域へ新たな小さいサイズの書き込みがあった場合、異なるRMWデータ・キュー(data queue)エントリに保存する。
ステップ1c.もし、新たな小さいサイズの書き込み要求がオンチップインターコネクトから到着したが、RMWデータ・キュー(data queue)に空きエントリがない場合、当該アクセスはライト・データ・キュー(Write data queue)を介してDRAMに直接発行する。
バスマスタの特性に依存しているが、小さなサイズのデータ書き込みは、近傍アドレスに対して時間的局所性をもって発生する場合がある。このようなときに、同じRMWデータ・キュー(data queue)エントリにてマージする。
その結果、後続の処理ステップ4から7は、マージされた複数の小さなデータのアクセスについて1回実行するだけでよく、処理効率があがる。
処理ステップ1bのように、ほかのRMWデータ・キュー(data queue)において処理が進行中であっても、複数のエントリがあるので、並列に小さなデータの書き込み処理は実行できる。
またステップ1bのデータについての処理ステップ2(当該領域から所定データ長でデータを読み出す要求を申請)の実行は、任意の時刻に並列に行うことができる。よって、DRAMアクセススケジューラ(DRAM access scheduler)は他アクセスを含めて、最適な順序でDRAMに対してアクセス要求を発行し、データバス利用効率を最大化できる。
ステップ1d.もし、ステップ2から4の実行中に、SOCオンチップインターコネクトから、当該領域のリード要求があった場合は、必要に応じて、DRAMアクセススケジューラ(DRAM access scheduler)は、ステップ2の要求を速やかに実行するように処理順序を制御する。
リード要求の対象が、RMWデータ・キュー(data queue)が保持している小さなデータの範囲であった場合は、RMWデータ・キュー(data queue)からデータを供給する。
所定のデータ長のライト要求がライト・データ・キュー(Write data queue)に保持されている状態において、該当エントリのデータがDRAMへ書き込まれる前に、SOCオンチップインターコネクトから、当該領域のリード要求があった場合は、下記いずれかの方法で処理してよい。
・A)メモリコントローラ(Memory Controller)は、リード・アドレス・キュー(Read address queue)に該当リード要求のアドレスを保存し、DRAMアクセススケジューラ(DRAM access scheduler)は、必要に応じて、ライト・データ・キュー(Write data queue)に保持されている同一アドレスに対するライト要求を速やかに実行するように処理順序を制御する。そして、その後で、該当リード要求をDRAMに発行する。
・B)メモリコントローラ(Memory Controller)は、ライト・データ・キュー(Write data queue)からSOCオンチップインターコネクトへデータを出力できる図示しない信号線を持ち、この信号線を用いて、ライト・データ・キュー(Write data queue)からデータを供給する。
RMW data queueにおいてA)と同様の処理を行ってもよい。ただしRMWデータ・キュー(data queue)は、意図的に小さなサイズの書き込み要求を比較的長い時間滞留させることで、ステップ1aのようなアクセスの統合や、他DRAMアクセスとのスケジューリングをより最適化でき、総合的なDRAM平均データレートが最大化できることを特徴とする。
ステップ4.DRAMから読み出した所定のデータ長のデータと、RMWデータ・キュー(data queue)に保持している小さな書き込みデータをマージする。このとき、小さな書き込みデータによって、DRAMから読み出した当該アドレスのデータを上書きする。
ステップ5.もし、DRAMへの書き込み完了前に、SOCオンチップインターコネクトから、当該領域のリード要求があった場合は、RMWデータ・キュー(data queue)からデータを供給する。
ステップ6.書き込み対象の当該領域から所定のデータ長でデータを書き込む要求をDRAMアクセススケジューラ(DRAM access scheduler)へ申請する。このとき、DRAMアクセススケジューラ(DRAM access scheduler)の制御において、より優先度が高い通常のリード要求や、その他のライト要求が優先されてDRAMに発行されてもよい。
ステップ7.DRAMへ所定のデータ長でデータを書き込む。
また、ステップ6a.ステップ6の処理中に、RMWデータ・キュー(data queue)の空きエントリが減少してきたときは、必要に応じて、DRAMアクセススケジューラ(DRAM access scheduler)は、ステップ6の要求の優先度ひきあげる。必ずしも最優先とはしなくてもよい。空きエントリの割合に応じて、段階的に優先度をひきあげる、または、ひきさげる処理をおこなってもよい。
また、ステップ6a.ステップ6の処理中に、RMWデータ・キュー(data queue)の空きエントリが減少してきたときは、必要に応じて、DRAMアクセススケジューラ(DRAM access scheduler)は、ステップ6の要求の優先度ひきあげる。必ずしも最優先とはしなくてもよい。空きエントリの割合に応じて、段階的に優先度をひきあげる、または、ひきさげる処理をおこなってもよい。
ステップ7a.ステップ7の処理によりDRAMへのデータ書き込みが完了した後、利用していたRMWアドレス・キュー(address queue)とRMWデータ・キュー(data queue)のエントリ内のデータは、そのまま保持してもよい。
以降に、もしSOCオンチップインターコネクトから、当該領域のリード要求があった場合は、DRAMへアクセスせず、RMWデータ・キュー(data queue)からデータを供給する。
以降に、もしSOCオンチップインターコネクトから、当該領域へ新たな小さいサイズの書き込みがあった場合、同じRMWデータ・キュー(data queue)エントリに部分的な上書きをする。そして、新たに、ステップ2から7を実行する。
ステップ7aにて保持を継続したエントリの破棄は、同じアドレス領域に対して所定のデータ長で新たな書き込み要求があったとき、もしくは、RMWデータ・キュー(data queue)に空きがない状態で、異なる領域へ新たな小さなデータの書き込み要求があったときとしてよい。このようなDRAMに書き込み済みのRMW データ・キュー(data queue)が複数保持されているときは、LRU(Least Recently Used)方式を用いて破棄対象を決定してもよい。
前述のとおり、バスマスタの特性に依存しているが、小さなサイズのデータアクセスは、近傍アドレスに対して時間的局所性をもって発生する場合がある。特に、ポーリングなど同期処理が行われている場合、繰り返し同じアドレスに対するアクセスが発生する場合が考えられる。
ステップ7aの処理をおこなうことで、同じ領域に対するリードが多数発生した時に他のDRAMアクセスを阻害しないことで、総合的なDRAMアクセス性能全体を向上させる。同様の制御はリード・データ・キュー(Read data queue)において行ってもよい。
本実施の形態の対象は、図17に例示するように、
・ECC処理が必要となるメモリ:すなわち、誤り訂正符号処理が、所定のデータ長ごとに必要となり、それよりも小さなデータ長のアクセスが行われるメモリ全般
・アクセスデータ長に制約があるメモリ:所定のデータ長よりも小さなデータ長のアクセスには対応していないメモリ全般、所定のデータ長においてはパイプライン処理などを用いて処理遅延を隠蔽できるが、それよりも小さなデータ長のアクセスにおいては処理遅延やスループットが悪化するメモリ全般
・その他、
・ECC処理が必要となるメモリ:すなわち、誤り訂正符号処理が、所定のデータ長ごとに必要となり、それよりも小さなデータ長のアクセスが行われるメモリ全般
・アクセスデータ長に制約があるメモリ:所定のデータ長よりも小さなデータ長のアクセスには対応していないメモリ全般、所定のデータ長においてはパイプライン処理などを用いて処理遅延を隠蔽できるが、それよりも小さなデータ長のアクセスにおいては処理遅延やスループットが悪化するメモリ全般
・その他、
ここまでの説明ではDRAMについて主に述べているが、同様な処理が必要となるMRAM、ReRAM(RRAM)、FeRAM(FRAM)、Xpoint、NAND Flash、SRAMなどでも同様な処理を行うことができる。また、DRAMにおいては、GDDR6、DDR5、LPDDR5などに適用できる。
実施形態における、所定のデータ長、小さなサイズのデータ長は、例えば以下のようなサイズである。
・所定のデータ長 : 32byte
・小さなサイズのデータ長 : 4byte, 8byte
・所定のデータ長 : 32byte
・小さなサイズのデータ長 : 4byte, 8byte
また本実施の形態の情報処理装置におけるメモリ22へのデータの書き込みのタイミング及びメモリ22からのデータの読み出しのタイミングについて、図19を参照して説明する。
図19では、従来例のメモリアクセス方式において、ECC処理を行わないメモリにアクセスする場合のタイミング例(a)と、ECC処理を行うメモリに対して、所定のデータ長(バースト長)でデータの書き込みを行う場合のタイミング例(b)と、本実施の形態の例において、メモリコントローラがリードモディファイライトの処理を実行した場合のタイミング例(c),(d)とを示す。
図19に例示するように、従来例でメモリに2回のデータ書き込みを行う際には、最初の書き込み(図中「他アクセス」として示す)と、今回の書き込み(図中「該当アクセス」としてブロック背景を網かけして示す、ECC処理を行う場合、ECC処理単位であるバースト長未満のデータ長のデータの書き込み要求であるとする)とが行われるタイミングは、次のようになる。
まず、ECC処理を行わないメモリに対しては、それぞれの書き込み要求が行われるまでの2クロックサイクルと、データの書き込みが開始されるまでの7クロックサイクルの合計9クロックサイクルを要する。
一方、ECC処理を行う場合、今回の書き込み要求を受け入れるとともに、前回の書き込み要求に係るデータの転送を並行して行ったとしても、初のデータ書き込み要求を受け入れてからデータ転送が開始されるまでの8クロックサイクルと、今回の書き込み要求に係るデータの転送を開始するまでに必要な8クロックサイクルとの合計16クロックサイクルを要する。
つまり、ECC処理を行うか否かにより、実質的に2倍弱の時間差が生じてしまう。
これに対して本実施の形態の方法でデータを書き込む場合、RMW処理が別途行われているため、データの読み出しには、要求を受け入れる2クロックサイクル+読み出しの処理のための25クロックサイクルの合計27クロックサイクルを要するものの、この読み出しによりリードモディファイライトの処理が完了する(図19(c))。
すなわち本実施の形態では、DRAMアクセス制御部204は、必要となるリードモディファイライト(RMW)の処理を、そのまま一体的なリードモディファイライトの処理として、つまり、リード、マージ、ライトの順でシーケンシャルに順次処理しない。
本実施の形態では、DRAMアクセス制御部204は、必要となるリードモディファイライトの処理を、リードの処理と、マージの処理と、ライトの処理とに分割して実行する。そして本実施の形態のDRAMアクセス制御部204は、随時発生してDRAMアクセス制御部204に到着する複数のDRAMアクセスのうちから、同時処理(連続的に実行)すると効率が向上する(つまり、必要クロックサイクル数が短くなる)アクセスを連続的に実行する。
具体的に、本実施の形態の例では、DRAMアクセス制御部204は、リードモディファイライトの処理のうち、リードの処理のアクセス(該当アクセス)については、他のリードの処理のアクセス(他のリードモディファイライトのリード処理とは限らない。以下、他アクセスと呼ぶ)と連続して実行する(図19(c))。
ECC処理が必要なメモリにおいて、データの読み出し(リードモディファイライトにおけるリード処理のアクセス(該当アクセス))には、要求を受け入れる2クロックサイクル+読み出しの処理のための25クロックサイクルの合計27クロックサイクルを要するものの、他アクセスと連続して実行させることで、実際にリードモディファイライト処理のためのリード処理のアクセスを追加したことにより費やされている追加クロックサイクル数は2のみである。つまり単独でリードモディファイライト処理のリードの処理を発行した場合に比べて25クロックサイクル短い時間で処理できる。
また、DRAMアクセス制御部204は、リードモディファイライトの処理のうち、マージの処理については、リードしたデータが到着次第RMWキュー202上で処理する。
そしてDRAMアクセス制御部204は、リードモディファイライトの処理のうち、ライト処理のアクセス(該当アクセス)についても、リードの処理と同様に、他のライト処理のアクセス(他のリードモディファイライトのライト処理とは限らない他アクセス)と連続実行させる(図19(d))。
ECC処理が必要なメモリにおいて、データの書き込みには、要求を受け入れる2クロックサイクル+書き込みの処理のための8クロックサイクルの合計10クロックサイクルを要するものの、他アクセスと連続して実行させることで、実際にリードモディファイライト処理用のライトアクセスを追加したことにより費やされている追加クロックサイクル数は2のみである。つまり単独でリードモディファイライト処理のライトを発行した場合に比べて8クロックサイクル短い時間で処理できる。
なお、ECC処理が不要なメモリにおいても、ライト処理のアクセス(該当アクセス)を、他のライト処理でのアクセス(他のリードモディファイライトのライト処理とは限らない他アクセス)と連続的に実行させることはできる(図19(a))。このときには要求を受け入れる2クロックサイクル+書き込みの処理のための7クロックサイクルの合計9クロックサイクルを要するものの、他アクセスと連続して実行させることで、実際にリードモディファイライト処理用のライトアクセスを追加したことにより費やされている追加クロックサイクル数は2のみである。
よって、ECC処理単位であるバースト長未満のデータ長のデータの書き込み要求があったとき、アクセスの連続的な実行により、必要クロックサイクル数の削減をおこなった場合、ECC処理が必要なメモリにおいては、リードで2クロックサイクル、ライトで1クロックサイクル、合計3クロックサイクルを追加で要する。これは図19(b)に示したように、ECC処理が必要なメモリにおいて、通常のECC処理を行った場合に9クロックサイクル追加で要することに比べて短い。
ここで、メモリ22(DRAM)が、複数のアクセスを連続的に処理するにあたり、当該複数のアクセスの対象が同じバンクやページであることを求める構成であった場合、DRAMアクセス制御部204は、各アクセスの対象を参照し、同じバンクやページへのアクセスが連続的に処理されるようスケジューリングする。
またこのとき、メモリ22(DRAM)の構成が、同じバンクやページであれば、リード処理とライト処理とを混在させた連続実行であっても、単独アクセスに比べて短いクロックサイクル数で処理できるものである場合は、DRAMアクセス制御部204は、スケジューリングにおいて当該事項を考慮する。
リード処理とライト処理とを混在させた連続実行であっても、単独アクセスに比べて短いクロックサイクル数で処理できるメモリ22(DRAM)の構成は、例えば、DRAMのメモリセルへのアクセスがバッファを介して行われる構成となっており、バッファにアクセスの対象となるページのデータが保持されている場合が相当する(図20:同一ページアクセスが高速なDRAMの構造)。
具体的にDRAMアクセス制御部204は、図20に例示するように、同一のページに対するライト処理とリード処理とがキューにある場合には、その順序を変えずに、当該ライト処理とリード処理とを連続して実行するよう制御する(WR→RD高速ケース)。これにより、互いに異なるページ(不同ページ)へのアクセスが続く場合(WR→RD通常ケース)に比べ、書き込み、読み出しの処理を、より短いクロックサイクル数で処理できることとなる。つまり、DRAMアクセス制御部204は、リード処理とライト処理とが混在した連続的な処理も行うこととしてよい。
本実施の形態では、DRAMアクセス制御部204が、このような複数のアクセスの連続的な実行を積極的に行い、必要クロックサイクル数を削減する。このためにDRAMアクセス制御部204は、リードモディファイライトの要求をRMWキュー202に保持したまま、リードモディファイライトの処理の実行を、要求を受けて直ちに行わずに、遅延させてよい。リードモディファイライトの処理を積極的に遅延させることで、1つのリードモディファイライトの処理に含まれるリード処理やライト処理を、他のアクセスと連続して実行させるマッチング(スケジューリング)が容易となる。
またこれにより、ECC処理が必要なメモリ22において、本実施の形態の上記の処理により追加で要する3クロックサイクルを、次の2つの方法で隠蔽することができる。
その方法の一つは、RMWキュー202のエントリ数を比較的多数設け、単位時間あたりに並列保持可能なリードモディファイライトの処理のためのデータの数を増大させることである。
既に述べたように、RMWキュー202のエントリ数は、必要なリードモディファイライトの処理の数に基づいて決めればよい。十分な時間かつ並列度で、複数のアクセスをスケジューリングさせることで、メモリアクセスの非効率化を避け、メモリアクセスにアイドル時間があった場合には、この時間も利用してリードモディファイライトの処理に必要なリード処理やライト処理を実行できるようになる。
また、もう一つの方法は、1クロックサイクルを短くする、すなわちアクセスビットレートを引き上げることである。この方法によっても、単位時間あたりの、リードモディファイライトの処理のスループットを、ECC処理が不要なメモリと同等とすることが可能となる。
例えばDRAMへのアクセスにおいて、ECC処理単位であるバースト長未満のデータアクセスのみが発生し続けるワースト条件においては、従来9クロックサイクルを要したところ、追加で3クロックサイクル更に要するので、(9+3)/9=1.333倍にクロック周波数を引き上げればよい。すなわちECC処理単位であるバースト長未満のデータアクセスの発生頻度が50%である条件においては、その半分のクロックレート引き上げ率である1.166倍にクロック周波数を引き上げればよい。たとえば、ECC処理が不要なメモリにおいて、アクセスビットレートが14Gbpsであった場合、16.5Gbpsにすれば、本条件を満たすこととなる。
また本実施の形態の情報処理装置では、制御部11は、アクセスビットレートを、各アプリケーションのECC処理単位であるバースト長未満のデータアクセスの発生量に基づいて随時変更してよい。ここで当該バースト長未満のデータアクセスの発生量を把握する方法としては次の2つの方法が考えられる。
第1の方法は、実行しようとするアプリケーションをあらかじめ(試験的に)実行し、ECC処理単位であるバースト長未満のデータアクセスが発生する頻度と量、すなわち既に説明したP2に相当する値P2′を測定により得て、ECC処理が不要なメモリを使ったシステムと同等性能を発揮するために必要なアクセスビットレートをプロファイルデータとして、各アプリケーションの識別子と共にデータベース化する方法である。ここで該当アプリケーションをECC処理が必要なメモリを使ったシステムで実行するときは、識別子にもとづいてデータベースを参照し、必要なアクセスビットレートを設定する。
具体的には、測定して得たP2′および、本システムのアクセススケジューラが規定するリードモディファイライトの処理の最長滞留時間P3に基づき、本システムのRMWキュー202のエントリ数が十分であるか計算できる。たとえば、
P2'=18M/s、
P3=2us
であるとすると、必要なRMWキュー202のエントリ数は、
(18M/s) × (2us) / (1s) = 36
である。
P2'=18M/s、
P3=2us
であるとすると、必要なRMWキュー202のエントリ数は、
(18M/s) × (2us) / (1s) = 36
である。
一方、本システムが搭載するRMWキュー202のエントリ数Nが32であった場合、アクセスビットレートを引き上げないとRMWキュー202がフルとなり、ECC処理が不要なメモリと同等の処理性能を維持できないこととなる。そしてこの場合、必要なアクセスビットレートの引き上げ率は、36/32=1.125倍となる。
発生量を把握する第2の方法は、ECC処理が必要なメモリを使ったシステムで各アプリケーションを実行するときに、DRAMアクセス制御部204が、動的にRMWキュー202の利用状況を観測し、P2′を測定する方法である。
この例では、一定時間あたりにおいて、あらかじめ定めた閾値を上回るリードモディファイライト処理の発生が確認されたら、動的にアクセスビットレートを引き上げる。この閾値は多段階あってもよい。閾値に基づいて、逆方向のアクセスビットレート引き下げの制御が必要に応じて動的に行われてもよい。アクセスビットレートの決定方法は、前述の第1の方法と同様であるので繰り返しての説明は省略する。
11 制御部、12 記憶部、13 操作制御部、14 表示制御部、15 通信部、21 記憶制御部、22 メモリ。
Claims (14)
- メモリと、当該メモリへのデータの書き込み指示を受けて、データを書き込むメモリコントローラとを備えた情報処理装置であって、
前記メモリは、所定のデータ長のデータごとに誤り訂正処理を実行するメモリであり、
前記メモリコントローラは、書き込み指示に係るデータのデータ長が、前記所定のデータ長より短い場合に、リードモディファイライトの処理を、前記メモリに代わって行うメモリコントローラである、情報処理装置。 - 請求項1に記載の情報処理装置であって、
前記メモリコントローラは、リードモディファイライトの処理に利用可能な記憶領域を複数備え、リードモディファイライトの処理を並列的に実行する情報処理装置。 - 請求項1または2に記載の情報処理装置であって、
前記メモリコントローラへデータの書き込み指示を行う制御部をさらに有し、
当該制御部は、メモリコントローラへデータの書き込み指示を出力した時点で、前記メモリへの書き込みが完了したものとして、後続処理を実行する情報処理装置。 - 請求項1から3のいずれか一項に記載の情報処理装置であって、
前記メモリコントローラは、前記リードモディファイライトの処理中に、当該リードモディファイライトの処理を行っているデータの書き込み先と同じ書き込み先のアドレスに対する前記所定のデータ長より短いデータの書き込み要求を新たに受けたときには、前記リードモディファイライトの処理を行っているデータと、当該新たに受けた書き込み要求に係るデータとをマージして、前記リードモディファイライトの処理を継続する情報処理装置。 - 請求項1から4のいずれか一項に記載の情報処理装置であって、
前記メモリコントローラは、前記リードモディファイライトの処理として、リードモディファイライトの処理に利用可能な記憶領域に、書き込み指示に係るデータを格納し、当該書き込み指示に係るデータの書き込み先のアドレスに対応する前記メモリ内のアドレスに格納されている前記所定のデータ長のデータを読み出して、前記記憶領域に格納したデータとマージし、当該マージして得た所定のデータ長のデータを、前記メモリ内の対応するアドレスに書き込む処理を行い、
当該メモリコントローラは、当該リードモディファイライトの処理において、前記所定のデータ長のデータを前記メモリから読み出すまでの間に、対応するアドレスからのデータの読み出し指示を受け入れたときには、前記所定のデータ長のデータの読み出しを優先的に実行するよう制御する情報処理装置。 - 請求項5に記載の情報処理装置であって、
前記メモリコントローラは、前記リードモディファイライトの処理において、前記所定のデータ長のデータを前記メモリに書き込む処理を行うまでの間に、対応するアドレスからのデータの読み出し指示を受け入れたときには、リードモディファイライトの処理に利用可能な前記記憶領域に格納された、所定のデータ長のデータを前記メモリから読み出したデータとして出力する情報処理装置。 - 請求項1から6のいずれか一項に記載の情報処理装置であって、
前記メモリコントローラと前記メモリとの間のアクセスビットレートを、誤り訂正処理を実行しないメモリを用いる場合に比べて高く設定する情報処理装置。 - 請求項1から7のいずれか一項に記載の情報処理装置であって、
前記メモリコントローラは、一連のリードモディファイライトの処理を、リード処理、マージ処理、ライト処理に分割して実行し、前記リード処理またはライト処理を、他のリード処理またはライト処理と連続して実行させる情報処理装置。 - 請求項1から7のいずれか一項に記載の情報処理装置であって、
前記メモリコントローラは、リードモディファイライトの処理に含まれるリード処理を、他のリード処理と連続して実行し、リードモディファイライトの処理に含まれるライト処理を、他のライト処理と連続して実行するよう制御する情報処理装置。 - 請求項1から7のいずれか一項に記載の情報処理装置であって、
前記メモリは複数のバンクまたはページを含み、
前記メモリコントローラは、一つのリードモディファイライトの処理を、リード処理、マージ処理、ライト処理に分割して実行し、前記リード処理またはライト処理を、前記メモリ内の同一のバンクまたはページにアクセスする他のリード処理または他のライト処理に、連続して実行させる情報処理装置。 - 請求項8から10のいずれか一項に記載の情報処理装置であって、
前記メモリコントローラは、リードモディファイライトの処理に利用可能な記憶領域を複数備え、
当該記憶領域に、実行するべきリードモディファイライトの処理に係る情報を保持して、当該リードモディファイライトに含まれるリード処理およびライト処理の実行を遅延させる情報処理装置。 - 請求項1から11のいずれか一項に記載の情報処理装置であって、
前記メモリコントローラは、リードモディファイライトの処理に利用可能な記憶領域として、それぞれ読み出されたデータまたは書き込みの対象となるデータを保持する複数のエントリを含むキューを備え、
リードモディファイライト処理が終了した後も、当該終了した処理に対応するデータを保持するキューのエントリ内のデータを破棄せず、当該データが格納されている前記メモリのアドレスに対する読み出し要求に対してのデータ供給ないし、当該アドレスに対する書き込みデータの統合に利用する情報処理装置。 - 請求項1から12のいずれか一項に記載の情報処理装置であって、
前記メモリへのアクセスビットレートが、リードモディファイライトの処理の発生量に基づいて設定される情報処理装置。 - メモリと、当該メモリへのデータの書き込み指示を受けて、データを書き込むメモリコントローラとを備えた情報処理装置の制御方法であって、
前記メモリが、所定のデータ長のデータごとに誤り訂正処理を実行し、
前記メモリコントローラが、書き込み指示に係るデータのデータ長が前記所定のデータ長より短い場合に、リードモディファイライトの処理を、前記メモリに代わって行う、情報処理装置の制御方法。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2019189026 | 2019-10-15 | ||
JP2019189026 | 2019-10-15 | ||
PCT/JP2020/016215 WO2021075076A1 (ja) | 2019-10-15 | 2020-04-10 | 情報処理装置、及び情報処理方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPWO2021075076A1 JPWO2021075076A1 (ja) | 2021-04-22 |
JP7177948B2 true JP7177948B2 (ja) | 2022-11-24 |
Family
ID=75537354
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2021552093A Active JP7177948B2 (ja) | 2019-10-15 | 2020-04-10 | 情報処理装置、及び情報処理方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US11886290B2 (ja) |
JP (1) | JP7177948B2 (ja) |
WO (1) | WO2021075076A1 (ja) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20220106307A (ko) * | 2021-01-22 | 2022-07-29 | 삼성전자주식회사 | 스토리지 장치 및 그 구동 방법 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4337857B2 (ja) | 2006-09-28 | 2009-09-30 | ソニー株式会社 | 画像データのノイズ処理方法及びノイズ処理装置並びに撮像装置 |
JP2009289170A (ja) | 2008-05-30 | 2009-12-10 | Nec Electronics Corp | データ処理装置、メモリコントローラ及びそのアクセス制御方法 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH04337857A (ja) * | 1991-05-15 | 1992-11-25 | Yokogawa Electric Corp | マイクロプロセッサ装置 |
US6701480B1 (en) * | 2000-03-08 | 2004-03-02 | Rockwell Automation Technologies, Inc. | System and method for providing error check and correction in memory systems |
US7363442B2 (en) * | 2004-11-12 | 2008-04-22 | International Business Machines Corporation | Separate handling of read and write of read-modify-write |
US7392456B2 (en) * | 2004-11-23 | 2008-06-24 | Mosys, Inc. | Predictive error correction code generation facilitating high-speed byte-write in a semiconductor memory |
JP4630933B2 (ja) * | 2009-05-15 | 2011-02-09 | 株式会社東芝 | ディスクコントローラ、ディスクドライブ装置、及びディスク制御方法 |
JP2011054221A (ja) * | 2009-08-31 | 2011-03-17 | Yokogawa Electric Corp | 記憶装置及び電子機器 |
US9342402B1 (en) * | 2014-01-28 | 2016-05-17 | Altera Corporation | Memory interface with hybrid error detection circuitry for modular designs |
US9766975B2 (en) * | 2015-09-01 | 2017-09-19 | International Business Machines Corporation | Partial ECC handling for a byte-write capable register |
-
2020
- 2020-04-10 WO PCT/JP2020/016215 patent/WO2021075076A1/ja active Application Filing
- 2020-04-10 US US17/638,933 patent/US11886290B2/en active Active
- 2020-04-10 JP JP2021552093A patent/JP7177948B2/ja active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4337857B2 (ja) | 2006-09-28 | 2009-09-30 | ソニー株式会社 | 画像データのノイズ処理方法及びノイズ処理装置並びに撮像装置 |
JP2009289170A (ja) | 2008-05-30 | 2009-12-10 | Nec Electronics Corp | データ処理装置、メモリコントローラ及びそのアクセス制御方法 |
Also Published As
Publication number | Publication date |
---|---|
US11886290B2 (en) | 2024-01-30 |
US20220291993A1 (en) | 2022-09-15 |
WO2021075076A1 (ja) | 2021-04-22 |
JPWO2021075076A1 (ja) | 2021-04-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7543114B2 (en) | System and controller with reduced bus utilization time | |
US7299323B2 (en) | Memory controller having a read-modify-write function | |
JP5666722B2 (ja) | メモリ・インターフェース | |
US20070266196A1 (en) | Information Processing Apparatus Having Multiple Processing Units Sharing Multiple Resources | |
CN102112973B (zh) | 协调装置、协调系统、协调方法、半导体集成电路及图像处理装置 | |
JP2007087388A (ja) | メモリコントローラ及びそれを含んだデータ処理システム | |
US8429355B2 (en) | Information processor system | |
US8954644B2 (en) | Apparatus and method for controlling memory | |
CN108139994B (zh) | 内存访问方法及内存控制器 | |
JP7195486B1 (ja) | 異種メモリシステムに対するシグナリング | |
US20120311241A1 (en) | Scheduler for memory | |
JP7177948B2 (ja) | 情報処理装置、及び情報処理方法 | |
US7913013B2 (en) | Semiconductor integrated circuit | |
US9620215B2 (en) | Efficiently accessing shared memory by scheduling multiple access requests transferable in bank interleave mode and continuous mode | |
TWI474254B (zh) | 用於在一記憶體系統中執行命令的方法與裝置及資料儲存系統 | |
US9767054B2 (en) | Data transfer control device and memory-containing device | |
CN102405466B (zh) | 存储控制装置及其控制方法 | |
US20080016296A1 (en) | Data processing system | |
US8301816B2 (en) | Memory access controller, system, and method | |
JP2007140858A (ja) | メモリアクセス方法及びメモリアクセス装置 | |
US11094368B2 (en) | Memory, memory chip and memory data access method | |
TWI721660B (zh) | 控制資料讀寫裝置與方法 | |
TWI786476B (zh) | 處理暨儲存電路 | |
JP2003228512A (ja) | データ転送装置 | |
US20020069311A1 (en) | Bus control device |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20210810 |
|
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: 20221018 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20221111 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 7177948 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |