(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2023150543
(43)【公開日】2023-10-16
(54)【発明の名称】メモリ制御装置
(51)【国際特許分類】
G06F 12/06 20060101AFI20231005BHJP
G06F 12/00 20060101ALI20231005BHJP
G06F 12/02 20060101ALI20231005BHJP
G11C 7/10 20060101ALI20231005BHJP
【FI】
G06F12/06 540E
G06F12/00 597D
G06F12/00 571A
G06F12/00 560A
G06F12/02 580J
G11C7/10 250
【審査請求】未請求
【請求項の数】5
【出願形態】OL
(21)【出願番号】P 2022059698
(22)【出願日】2022-03-31
(71)【出願人】
【識別番号】316005926
【氏名又は名称】ソニーセミコンダクタソリューションズ株式会社
(74)【代理人】
【識別番号】110001357
【氏名又は名称】弁理士法人つばさ国際特許事務所
(72)【発明者】
【氏名】池添 赳治
(72)【発明者】
【氏名】五十嵐 孝博
【テーマコード(参考)】
5B160
【Fターム(参考)】
5B160CA11
5B160CB00
5B160CD11
5B160HA00
(57)【要約】 (修正有)
【課題】BG(Bank Group)を持ち、複数のBL(Burst Length)長に対応したDRAM規格においてDRAMへのアクセスを効率良く実行するメモリ制御装置を提供する。
【解決手段】メモリ制御装置は、RW切替検出部とBL変換部を備える。検出部は、受け付けた複数のメモリアクセス要求において、リードバンクグループインタリーブとライト要求との切り替えるか又はライトバンクグループインタリーブとリード要求との切り替えを検出する。変換部は、リードバンクグループインタリーブ若しくはライトバンクグループインタリーブのメモリアクセス要求数と、リードバンクグループインタリーブ若しくはライトバンクグループインタリーブの直前のメモリアクセス要求に対応するコマンドのタイミング情報とに基づいて、リードバンクグループインタリーブ若しくはライトバンクグループインタリーブが含むメモリアクセス要求のBL長を変換する。
【選択図】
図5
【特許請求の範囲】
【請求項1】
受け付けたメモリアクセスに関する複数のメモリアクセス要求において、リードバンクグループインタリーブとライト要求との切り替え、もしくはライトバンクグループインタリーブとリード要求との切り替えを検出する検出部と、
前記リードバンクグループインタリーブもしくは前記ライトバンクグループインタリーブのメモリアクセス要求数と、前記リードバンクグループインタリーブもしくは前記ライトバンクグループインタリーブの直前のメモリアクセス要求に対応する第1コマンドのタイミング情報とに基づいて、前記リードバンクグループインタリーブもしくは前記ライトバンクグループインタリーブに含まれるメモリアクセス要求のBL長を変換する変換部と
を備えた
メモリ制御装置。
【請求項2】
前記変換部は、以下の2つのいずれかの条件を満たす場合に、前記リードバンクグループインタリーブもしくは前記ライトバンクグループインタリーブに含まれるメモリアクセス要求のBL長をBL32からBL16に変換する
請求項1に記載のメモリ制御装置。
・条件A
前記リードバンクグループインタリーブもしくは前記ライトバンクグループインタリーブの、BL16相当に換算したときのメモリアクセス要求数が偶数×2となっており、かつ、前記第1コマンドが前記第1コマンドの直前の第2コマンドから2nCK後以外のタイミングで発行されること
・条件B
前記リードバンクグループインタリーブもしくは前記ライトバンクグループインタリーブの、BL16相当に換算したときのメモリアクセス要求数が奇数×2となっており、かつ、前記第1コマンドが前記第2コマンドから2nCK後のタイミングで発行されること
【請求項3】
前記変換部は、以下の2つのいずれの条件も満たさない場合に、前記リードバンクグループインタリーブもしくは前記ライトバンクグループインタリーブに含まれるコマンドのBL長をBL16からBL32に変換する
請求項1に記載のメモリ制御装置。
・条件A
前記リードバンクグループインタリーブもしくは前記ライトバンクグループインタリーブの、BL16相当に換算したときのメモリアクセス要求数が偶数×2となっており、かつ、前記第1コマンドが前記第1コマンドの直前の前記第2コマンドから2nCK後以外のタイミングで発行されること
・条件B
前記リードバンクグループインタリーブもしくは前記ライトバンクグループインタリーブの、BL16相当に換算したときのメモリアクセス要求数が奇数×2となっており、かつ、前記第1コマンドが前記第2コマンドから2nCK後のタイミングで発行されること
【請求項4】
前記複数のメモリアクセス要求と、前記コマンドごとに対応付けられたバンクグループ情報および分割要否情報とを記憶する記憶部と、
前記複数のメモリアクセス要求において、前記リードバンクグループインタリーブもしくは前記ライトバンクグループインタリーブに該当するメモリアクセス要求が存在するか否かを判定し、その判定結果に応じたフラグを、前記バンクグループ情報として前記記憶部に書き込む判定部と
を更に備えた
請求項1に記載のメモリ制御装置。
【請求項5】
前記判定部は、前記タイミング情報に基づいて、前記フラグが付与された複数のメモリアクセス要求のBL長を変換するか否か判定し、その判定結果に応じたフラグを、前記分割要否情報として前記記憶部に書き込む
請求項4に記載のメモリ制御装置。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、メモリ制御装置に関する。
【背景技術】
【0002】
従来から、DRAM(Dynamic Random Access Memory)へのアクセスをより効率良く実行するための様々な方策が提案されている(例えば、特許文献1,2参照)。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開2021-157295号公報
【特許文献2】特開2006-252173号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
ところで、従来のDRAM技術では、BL(Burst Length)長が大きい方が、DRAMへのアクセスの効率が良い。しかし、LPDDR(Low Power Double Data Rate)5もしくはLPDDR5Xなどの、BG(Bank Group)を持ち、複数のBL長に対応したDRAM規格では、BL長が短い場合であっても、DRAMへのアクセスの効率が良いときがある。従って、BGを持ち、複数のBL長に対応したDRAM規格において、DRAMへのアクセスをより効率良く実行することの可能なメモリ制御装置を提供することが望ましい。
【課題を解決するための手段】
【0005】
本開示の一実施形態にメモリ制御装置は、検出部と変換部とを備えている。検出部は、受け付けたメモリアクセスに関する複数のメモリアクセス要求において、リードバンクグループインタリーブとライト要求との切り替え、もしくはライトバンクグループインタリーブとリード要求との切り替えを検出する。変換部は、リードバンクグループインタリーブもしくはライトバンクグループインタリーブのメモリアクセス要求数と、リードバンクグループインタリーブもしくはライトバンクグループインタリーブの直前のメモリアクセス要求に対応するコマンドのタイミング情報とに基づいて、リードバンクグループインタリーブもしくはライトバンクグループインタリーブに含まれるメモリアクセス要求のBL長を変換する。
【0006】
本開示の一実施形態に係るメモリ制御装置では、リードバンクグループインタリーブもしくはライトバンクグループインタリーブのメモリアクセス要求数と、リードバンクグループインタリーブもしくはライトバンクグループインタリーブの直前のメモリアクセス要求に対応するコマンドのタイミング情報とに基づいて、リードバンクグループインタリーブもしくはライトバンクグループインタリーブに含まれるメモリアクセス要求のBL長が変換される。これにより、DRAMへのアクセスの効率を考慮したBL長を選択することが可能となる。
【図面の簡単な説明】
【0007】
【
図1】コマンドスケジューラの動作の一例を表す図である。
【
図3】コマンドスケジューラの動作の一例を表す図である。
【
図4】コマンドスケジューラの動作の一例を表す図である。
【
図5】本開示の一実施の形態に係るメモリ制御装置を含む情報処理システムの概略構成例を表す図である。
【
図7】FIFOメモリに格納されるデータの一例を表す図である。
【
図8】RW切替検出部の動作の一例を表す図である。
【
図9】2BGインタリーブに含まれるコマンドのBL長の変換を実行するか否かを判断するための条件を表した図である。
【
図13】BL変換判定部の動作の一例を表す図である。
【
図14】BL変換判定部の動作の一例を表す図である。
【
図15】BL変換判定部の動作の一例を表す図である。
【
図17】FIFOメモリに格納されるデータの一例を表す図である。
【
図18】BL変換部による変換がなされた後のメモリアクセス要求列の一例を表す図である。
【
図19】FIFOメモリに格納されるデータの一例を表す図である。
【
図20】BL変換部による変換がなされた後のメモリアクセス要求列の一例を表す図である。
【
図21】アウトオブオーダの実行手順の一例を表す図である。
【
図22】アウトオブオーダの実行手順の一例を表す図である。
【
図23】リード要求からライト要求に変化するアクセス要求列が入力されたときのコマンドスケジューラの動作の一例を表す図である。
【
図24】ライト要求からリード要求に変化するアクセス要求列が入力されたときのコマンドスケジューラの動作の一例を表す図である。
【
図25】
図5の情報処理システムの概略構成の一変形例を表す図である。
【
図26】
図5の情報処理システムの概略構成の一変形例を表す図である。
【
図27】2BGインタリーブに含まれるコマンドのBL長の変換を実行するか否かを判断するための条件を表した図である。
【
図29】FIFOメモリに格納されるデータの一例を表す図である。
【
図30】BL変換部による変換がなされた後のアクセス要求列の一例を表す図である。
【発明を実施するための形態】
【0008】
以下、本開示を実施するための形態について、図面を参照して詳細に説明する。ただし、以下に説明する実施形態は、あくまでも例示であり、以下に明示しない種々の変形や技術の適用を排除する意図はない。本技術は、その趣旨を逸脱しない範囲で種々変形(例えば各実施形態を組み合わせる等)して実施することができる。また、以下の図面の記載において、同一又は類似の部分には同一又は類似の符号を付して表している。図面は模式的なものであり、必ずしも実際の寸法や比率等とは一致しない。図面相互間においても互いの寸法の関係や比率が異なる部分が含まれていることがある。
【0009】
<1.最新世代の規格における課題について>
従来、メモリシステムとして、価格、バス帯域および容量の点において有利である同期DRAM(SDRAM:Synchronous Dynamic Random Access Memory)が広く用いられている。このSDRAMは、クロック信号に同期して動作するDRAMであり、多くの場合、複数のバンクにより構成される。
【0010】
このような構成のSDRAMにおいては、同一バンクに連続してアクセスする場合には、SDRAMへのアクセスの効率が著しく低下する。これに対して、DRAMへのアクセスの効率を改善する手法として、DRAMへのアクセス要求を複数保持して、その保持した複数のアクセス要求のうち、前回アクセスしたバンクと異なるバンクへのアクセス要求を出力する手法が提案されている。
【0011】
従来のDRAM技術では、BL(Burst Length)長が大きい方が、DRAMへのアクセスの効率が良い。BL長が大きい方が、アドレスコマンド線の使用時間当たりのデータ転送量が大きくなり、コマンドアドレス線の使用時間を減らすことができるからである。しかし、LPDDR5もしくはLPDDR5Xといった最新世代のDRAM規格では、BL長が短い場合であっても、DRAMへのアクセスの効率が良いときがある。LPDDR5およびLPDDR5Xは、JEDEC(Join Electron Device Engineering Council)で規定されたDRAM規格である。
【0012】
図1、
図2は、2つのバンクグループにインタリーブしたときのコマンドスケジューラの動作の一例を表したものである。
図2には、
図1に続く動作の一例が表されている。
図1、
図2の上段には、BL長がBL16のときのコマンドスケジューラの動作の一例が表わされている。
図1、
図2の下段には、BL長がBL32のときのコマンドスケジューラの動作の一例が表わされている。
図1、
図2の上段、下段において、アドレスコマンド線に出力されるコマンドがバンクグループごとおよびバンクアドレスごとに分けて表されており、データ線に出力されるデータがバンクグループごとおよびバンクアドレスごとに異なる模様で表されている。なお、データ線において、黒塗りの箇所はデータが出力されていないことを示している。
【0013】
なお、
図1、
図2における各種記載は以下の内容を指している。
・ACT:Activeコマンド
・READ16:BL16のリードコマンド
・READ32:BL32のリードコマンド
・PRE:Prechargeコマンド
【0014】
また、
図1、
図2における各種パラメータは以下のように規定されている。
・コマンドクロック=800MHz
・tRRD=3nCK
・tFAW=15ns
・tRCD=15nCK
・tRCD_W=7nCK
・nRBTP=4nCK
・tRPpb=15nCK
・tWR=27nCK
・RL=18
(図ではReadからDQまでの遅延がRL=0として表現されている)
・WL=9
(図ではWriteからDQまで遅延がWL=0で表現されている)
【0015】
・tRRD:ACT-ACTの最短間隔
・tFAW:最大4つのACTが存在してもよい期間
・tRCD:ACT-READもしくはACT-MASKEDWRITEの最短間隔
・tRCD_W:ACT-WRITEの最短間隔
・nRBTP:READ-burst end-PREの最短間隔
・tRPpb:PRE-ACTの最短間隔
・tWR:WRTE recovery time
【0016】
図1、
図2から、1回目のBGインタリーブでは、BL16の方がBL32と比べてΔt1だけ早くデータ転送が終了することがわかる。しかし、2回目のBGインタリーブでは、BL32の方がBL16と比べてΔt2(=1nCK)だけ早く開始されることがわかる。これは、BL16使用時に、BGインタリーブするために少なくとも2つのバンクを開かなければならず、最初の2つのリードコマンドの最短間隔がtRRD以上となるためである。これらのことから、3回目、4回目とBGインタリーブが繰り返されるにつれて、BL32の方がBL16と比べてBGインタリーブの開始時が1nCKずつ早くなることがわかる。また、4回目のBGインタリーブでは、データ転送のレイテンシは、BL16、BL32において同等レベルとなる。従って、一般的にはBL32の方がBL16よりもDRAMへのアクセスの効率が良いことがわかる。
【0017】
図3、
図4は、コマンドスケジューラの動作の一例を表したものである。
図3、
図4の上段には、BL長がBL16のときのコマンドスケジューラの動作の一例が表わされている。
図3、
図4の下段には、BL長がBL32のときのコマンドスケジューラの動作の一例が表わされている。
【0018】
なお、
図3、
図4における各種記載は以下の内容を指している。
・ACT:Activeコマンド
・R16:BL16のリードコマンド
・R32:BL32のリードコマンド
・PRE:Prechargeコマンド
・Write:ライトコマンド
【0019】
DRAMのデータ線は、リード・ライトで共有されている。そのため、リードからライトへの切り替えや、ライトからリードへの切り替えを行う際に、ペナルティ時間が必要となる。ここで、BGモードにおいて、BL16のBL/n_minが2であるのに対して、BL32のBL/n_minが6となっている。そのため、
図3、
図4に示したように、データ線の使用状況によっては、ライトコマンドが発行されるタイミングが、BL16の方がBL32と比べて早い場合があることがわかる。従って、最新世代の規格においてBL16の方がBL32よりもDRAMへのアクセスの効率が良い場合があることがわかる。
【0020】
以上のことから、リード・ライトの切り替えが無い場合には、BL32の方がBL16よりもDRAMへのアクセスの効率が良く、リード・ライトの切り替えがある場合には、BL16の方がBL32よりもDRAMへのアクセスの効率が良くなることがあることがわかる。そこで、本願発明者は、リード・ライトの切り替え時に、DRAMへのアクセスの効率が良くなるBL長を選択する手法について以下に提案する。
【0021】
<2.実施の形態>
[構成]
図5は、本開示の一実施の形態に係るメモリ制御装置を備えた情報処理システムの概略構成の一例を表したものである。情報処理システムは、例えば、
図5に示したように、複数のイニシエータ10と、調整部30と、メモリコントローラ40と、DRAM50とを備えている。
【0022】
(DRAM50)
DRAM50は、LPDDR5もしくはLPDDR5Xに準拠するDRAMである。DRAM50には、例えば、
図5に示したように、2つのバンクグループBG0,GB1が規定されている。各バンクグループBG0,GB1には、例えば、4つのバンクBank0,Bank1,Bank2,Bank3が規定されている。なお、DRAM50におけるバンクグループおよびバンクのそれぞれの数は、上記の例には限定されない。
【0023】
LPDDR5もしくはLPDDR5Xでは、動的な駆動周波数の変更が可能となっている。また、LPDDR5もしくはLPDDR5Xでは、バンク構成の使い方であるバンクモードが複数あり、駆動周波数に応じてバンクモードが変わる仕様が規格化されている。
【0024】
DRAM50への最小バースト単位であるBL16とBL32をコマンド単位で使い分ける場合、低速な駆動周波数では16B(Bank)モードを、高速な駆動周波数ではBG(Bank Group)モードを使用することになる。BGモードでは、BL32によるデータ転送の場合、コマンドに対するデータ転送がBL16分の期間(1nCK)だけ空けて行われる。このようなデータ線における転送ペナルティはBGモード固有の規定である。ただし、この転送ペナルティの期間には、別のバンクグループの転送データを入れることができるため、データ線において転送データを連続して発行することが可能である。
【0025】
(イニシエータ10)
複数のイニシエータ10は、調整部30およびメモリコントローラ40を介して、DRAM50に対するデータの書き込みもしくは読み出しを行う。各イニシエータ10は、例えば、中央演算処理装置(CPU:Central Processing Unit)または機能ブロックなどである。
【0026】
各イニシエータ10は、DRAM50に対するデータの書込みもしくは読み出しを行うためのメモリアクセス要求を発行し、調整部30に出力する。このメモリアクセス要求には、例えば、イニシエータ10ごとに与えられた仮想的な記憶領域における論理アドレス、アクセスすべきデータの長さであるBL長、イニシエータ10を識別するための識別情報および転送方向が含まれる。ここにいう転送方向とは、データを書き込むためのライト要求、および、データを読み出すためのリード要求のいずれであるかを指し示すものである。各イニシエータ10は、調整部30からのデータ出力指示に従って、DRAM50に書き込むべき書き込みデータを調整部30に出力する。各イニシエータ10は、例えば、AMBA(Advanced Microcontroller Bus Architecture)で定義されているプロトコル(例えば、AXI(Advanced eXtensible Interface)プロトコル)を利用して、調整部30と通信を行う。
【0027】
(調整部30)
調整部30は、例えば、
図5に示したように、調停部31、RW切替検出部32、バッファ33、BL変換判定部34およびBL変換部35を有している。
【0028】
調停部31は、各イニシエータ10から出力されたメモリアクセス要求に含まれる論理アドレスを、DRAM50に対応する物理アドレスに変換する。ここにいう物理アドレスとは、DRAM50を構成するバンク、ロウおよびカラムを指し示すアドレスであり、バンクアドレス、ロウアドレスおよびカラムアドレスのことをいう。このように、論理アドレスから物理アドレスに変換することによって、変換後のメモリアクセス要求には、DRAM50におけるバンクアドレス、ロウアドレスおよびカラムアドレスが示される。
【0029】
調停部31は、さらに、複数のイニシエータ10から得られた複数のメモリアクセス要求に示される物理アドレスに基づいて調停(アービトレーション)を行う。調停部31は、例えば、各イニシエータ10から同時にメモリアクセス要求を受け付けた場合には、直前にRW切替検出部32に出力したメモリアクセス要求とバンクアドレスが同一であるメモリアクセス要求の出力を抑制する。すなわち、調停部31は、複数のメモリアクセス要求を受け付けた場合には、直前にRW切替検出部32に出力したメモリアクセス要求とバンクアドレスが異なるメモリアクセス要求をRW切替検出部32に出力する。このように、調停部31は、インタリーブ手法を用いて複数のメモリアクセス要求の、RW切替検出部32への出力順番を調整する。調停部31は、さらに、BGモードでは、バンクグループごとにインタリーブ手法を用いて複数のメモリアクセス要求の、RW切替検出部32への出力順番を調整する。このとき、調停部31は、メモリアクセス要求に対して、バンクグループの識別子を追加する。調停部31は、メモリアクセス要求として、ライト要求をRW切替検出部32に出力する際に、メモリアクセス要求に示される識別情報によって識別されるイニシエータ10に対して、そのメモリアクセス要求に対応する書き込みデータの出力を指示する。
【0030】
RW切替検出部32は、調停部31からメモリアクセス要求を受け付けるたびに、受け付けたメモリアクセス要求をバッファ33に格納する。バッファ33は、例えば、
図6に示したようなFIFO(First-In First-Out)メモリ33Aを有している。FIFOメモリ33Aでは、複数のメモリアクセス要求が格納順に格納され、新たなメモリアクセス要求がFIFOメモリ33Aに格納されると、格納順番が最も古いメモリアクセス要求がFIFOメモリ33Aから出力される。
【0031】
FIFOメモリ33Aには、格納されたメモリアクセス要求ごとに、バンクグループ情報bgintおよび分割要否情報devが関連付けられている。FIFOメモリ33Aは、新たなメモリアクセス要求が格納されるたびに、FIFOメモリ33Aにおける格納順番が最も古いメモリアクセス要求を、バンクグループ情報bgintおよび分割要否情報devとともにBL変換部35に出力する。
【0032】
バンクグループ情報bgintは、FIFOメモリ33Aに格納された複数のメモリアクセス要求において、リード・ライトの切り替え直前に配置されたBGインタリーブのメモリアクセス要求であるか否かを判別するためのフラグである。例えば、バンクグループ情報bgintが「1」のとき、リード・ライトの切り替え直前に配置されたBGインタリーブのメモリアクセス要求であることを意味する。また、例えば、バンクグループ情報bgintが「0」のとき、リード・ライトの切り替え直前に配置されたBGインタリーブのメモリアクセス要求ではないことを意味する。
【0033】
分割要否情報devは、FIFOメモリ33Aに含まれるBGインタリーブのメモリアクセス要求のBL長をBL32からBL16に変換するか否かを判別するためのフラグである。例えば、分割要否情報devが「1」のとき、メモリアクセス要求のBL長をBL32からBL16に変換する必要があることを意味する。また、例えば、分割要否情報devが「0」のとき、メモリアクセス要求のBL長をBL32からBL16に変換する必要はないことを意味する。
【0034】
RW切替検出部32は、バッファ33に格納した複数のメモリアクセス要求において、リードBGインタリーブ(リード要求)からライト要求への切り替え、もしくはライトBGインタリーブ(ライト要求)からリード要求への切り替えを検出する。FIFOメモリ33Aに対して、例えば、
図7に示したような複数のメモリアクセス要求が格納されていたとする。このとき、RW切替検出部32は、格納順番が5番目に古いメモリアクセス要求(リード要求)と、格納順番が6番目に古いメモリアクセス要求(ライト要求)とにおいて、リード要求とライト要求との切り替えを検出する。
【0035】
図8は、RW切替検出部32における上記切り替えの検出手順の一例を表したものである。RW切替検出部32は、格納順番を示すパラメータiを0にする(ステップS101)。次に、RW切替検出部32は、パラメータiが最も遅い格納順番N-1よりも小さいか否かを判定する(ステップS102)。その結果、i<N-1を満たす場合には(ステップS102;Y)、RW切替検出部32は、格納順番がiのメモリアクセス要求と、格納順番がi+1のメモリアクセス要求とを対比し、双方がリード要求もしくはライト要求であるか否かを判定する(ステップS103)。その結果、双方がリード要求もしくはライト要求である場合には(ステップS103;Y)、RW切替検出部32は、パラメータiに1を加え(ステップS104)、ステップS102に戻る。双方がリード要求もしくはライト要求ではない場合(ステップS103;N)、RW切替検出部32は、格納順番がiのメモリアクセス要求と、格納順番がi+1のメモリアクセス要求とにおいて、リード要求からライト要求への切り替え、もしくはライト要求からリード要求への切り替えが行われると判断する。そして、RW切替検出部32は、格納順番がiのメモリアクセス要求に対応するバンクグループ情報bgintに対して「1」を書き込み、BL変換要否判断に移行する(ステップS105)。このとき、RW切替検出部32は、上記切り替えについての情報(RW切り替え情報)として、パラメータiをBL変換判定部34に出力する。なお、ステップS102において、i<N-1を満たさない場合には(ステップS102;N)、リード要求からライト要求への切り替え、もしくはライト要求からリード要求への切り替えが存在しないとして、本処理を終了する。
【0036】
BL変換判定部34およびBL変換部35は、上記切り替えの直前の2BGインタリーブIL-a(リードBGグループインタリーブもしくはライトBGインタリーブ)のメモリアクセス要求数と、2BGインタリーブIL-aの直前のメモリアクセス要求R-aに対応するコマンドCmd-a(第1コマンド)のタイミング情報とに基づいて、2BGインタリーブIL-aに含まれるメモリアクセス要求のBL長を変換する。なお、「2BGインタリーブ」とは、2つのバンクグループにインタリーブすることを指している。このとき、BL変換判定部34およびBL変換部35は、
図9に記載の条件に基づいて、2BGインタリーブIL-aに含まれるメモリアクセス要求のBL長の変換を実行するか否かを判断する。
【0037】
図9は、2BGインタリーブIL-aに含まれるメモリアクセス要求のBL長の変換を実行するか否かを判断するための条件を表したものである。
図9には、2BGインタリーブIL-aに含まれるメモリアクセス要求のBL長を、BL32からBL16へ変換する条件が示されている。BL変換判定部34およびBL変換部35は、以下の2つのいずれかの条件を満たす場合に、2BGインタリーブIL-aに含まれるメモリアクセス要求のBL長を、BL32からBL16へ変換する。なお、下記の条件Aに含まれる「コマンドCmd-b」は、メモリアクセス要求R-aの直前のメモリアクセス要求R-bに対応するコマンドである。
【0038】
・条件A
2BGインタリーブIL-aのメモリアクセス要求数(BL16相当に換算したときのメモリアクセス要求数)が偶数×2となっており、かつ、コマンドCmd-aがコマンドCmd-aの直前のコマンドCmd-b(第2コマンド)から2nCK後以外のタイミングで発行されること
・条件B
2BGインタリーブIL-aのメモリアクセス要求数(BL16相当に換算したときのメモリアクセス要求数)が奇数×2となっており、かつ、コマンドCmd-aがコマンドCmd-bから2nCK後のタイミングで発行されること
【0039】
図10(A)、
図10(B)は、2BGインタリーブIL-a、コマンドCmd-aおよびコマンドCmd-bについて説明する図である。
図10(A)では、2BGインタリーブIL-aが、2つのバンクグループBG2,BG3に対してBL32の4つのリードコマンドでインタリーブするように構成されている場合が例示されている。
図10(B)では、2BGインタリーブIL-aが、2つのバンクグループBG2,BG3に対してBL32の2つのリードコマンドでインタリーブするように構成されている場合が例示されている。
【0040】
図10(A)では、コマンドCmd-aがバンクグループBG1に対するBL32のリードコマンドとなっており、コマンドCmd-bがバンクグループBG2に対するBL32のリードコマンドとなっている。一方、
図10(B)では、コマンドCmd-aがバンクグループBG1に対するBL32のリードコマンドとなっており、コマンドCmd-bがバンクグループBG0に対するBL32のリードコマンドとなっている。
【0041】
図11(A)は、複数のコマンドが
図10(A)の並び順となっているときに、各コマンドがコマンドアクセス線CAに出力されるタイミングの一例を表したものである。
図11(B)は、各コマンドが
図11(A)のタイミングでコマンドアクセス線CAに出力されるとき、各転送データがデータ線DQに出力されるタイミングの一例を表したものである。
図11(A)では、コマンドCmd-bが発行されてから2nCK後にコマンドCmd-aが発行されている。
【0042】
図12(A)は、複数のコマンドが
図10(A)の並び順となっているときに、各コマンドがコマンドアクセス線CAに出力されるタイミングの一例を表したものである。
図12(B)は、各コマンドが
図12(A)のタイミングでコマンドアクセス線CAに出力されるとき、各転送データがデータ線DQに出力されるタイミングの一例を表したものである。
図12(A)では、コマンドCmd-bが発行されてから6nCK後にコマンドCmd-aが発行されている。
【0043】
コマンドCmd-bが発行されてから2nCK後にコマンドCmd-aが発行される場合には、コマンドCmd-aに対応する転送データと、コマンドCmd-bに対応する転送データとによって、データ線DQが隙間なく埋められていることがわかる。しかし、コマンドCmd-bが発行されてから6nCK後にコマンドCmd-aが発行される場合には、コマンドCmd-aに対するデータ転送がBL16分の期間(1nCK)だけ空けて行われているため、その隙間が、コマンドCmd-bに対応する転送データによって埋められず、空いたままになっている。このような隙間が生じる条件が、条件Aに該当する。
【0044】
次に、BL変換判定部34の動作について説明する。
図13は、BL変換判定部34におけるBL変換要否の判断手順の一例を表したものである。
図13には、全てのフラグが初期化された状態のFIFOメモリ33Aが例示されている。
【0045】
BL変換判定部34は、まず、RW切替検出部32から取得したパラメータiをパラメータjにコピーする(ステップS201)。次に、BL変換判定部34は、パラメータjが0以上であるか否かを判定する(ステップS202)。パラメータjが0以上である場合には(ステップS202;Y)、BL変換判定部34は、FIFOメモリ33Aに格納された、格納順番がjのメモリアクセス要求にアクセスし、格納順番がjのメモリアクセス要求に含まれるBGの識別子を読み出す。そして、BL変換判定部34は、ステップS201の実行を開始してから現在までにアクセスしたメモリアクセス要求に含まれるBGの識別子およびその数(BGの数)を内部メモリに記録する(ステップS203)。BL変換判定部34は、さらに、ステップS201の実行を開始してから現在までにアクセスしたメモリアクセス要求の数も内部メモリに記録する。パラメータjが負の値である場合には(ステップS202;N)、分割要否情報生成判断に移行する(ステップS204)。
【0046】
BL変換判定部34は、ステップS203を実行した後、内部メモリに記録されたBGの数が2よりも大きいか否かを判定する(ステップS205)。内部メモリに記録されたBGの数が2よりも大きい場合には(ステップS205;Y)、分割要否情報生成判断(ステップS204)に移行する。内部メモリに記録されたBGの数が2以下の場合には(ステップS205;N)、内部メモリに記録したBGの識別子において、直近に記録した2つのBGの識別子が互いに等しいか否かを判定する(ステップS206)。
【0047】
直近に記録した2つのBGの識別子が互いに等しい場合には(ステップS206;Y)、BL変換判定部34は、最後にアクセスしたモリアクセス要求は有効な要求ではないと判断し、この処理を終了する。直近に記録した2つのBGの識別子が互いに異なる場合には(ステップS206;N)、BL変換判定部34は、最後にアクセスしたモリアクセス要求は有効な要求であると判断する。そして、BL変換判定部34は、FIFOメモリ33Aに格納された、格納順番がjのメモリアクセス要求に対応するバンクグループ情報bgintに対して「1」を書き込む。BL変換判定部34は、さらに、パラメータjから1を引き(ステップS207)、ステップS202に戻る。
【0048】
図14は、BL変換判定部34における分割要否情報生成(ステップS204)の判断手順の一例を表したものである。
図14には、
図13に記載の処理がなされた後のフラグが書き込まれたFIFOメモリ33Aが例示されている。
【0049】
BL変換判定部34は、パラメータjが0であるか否かを判定する(ステップS301)。パラメータjが0である場合(ステップS301;Y)、BL変換判定部34は、分割要否情報作成(ステップS302)に移行する。パラメータjが0ではない場合(ステップS301;N)、BL変換判定部34は、分割要否情報生成の判断を終了する。
【0050】
図15は、BL変換判定部34における分割要否情報の作成手順の一例を表したものである。
図15には、
図15に記載の処理がなされた後のフラグが書き込まれたFIFOメモリ33Aが例示されている。
【0051】
BL変換判定部34は、内部メモリに記録されたメモリアクセス要求の数が偶数×2であるか否かを判定する(ステップS401)。上記「内部メモリに記録されたメモリアクセス要求の数」は、BGインタリーブIL-aのメモリアクセス要求数(BL16相当に換算したときのメモリアクセス要求数)である。その結果、BGインタリーブIL-aのメモリアクセス要求数(BL16相当に換算したときのメモリアクセス要求数)が偶数×2である場合には(ステップS401;Y)、BL変換判定部34は、コマンドスケジューラ41から取得した発行タイミング情報に基づいて、コマンドCmd-aがコマンドCmd-bから2nCKずれているか否か判定する(ステップS402)。具体的には、コマンドスケジューラ41から取得した発行タイミング情報から、コマンドCmd-bの発行タイミング(発行時刻)と、コマンドCmd-aの発行タイミング(発行時刻)とが得られたとする。このとき、BL変換判定部34は、これらの発行時刻から、コマンドCmd-aがコマンドCmd-bから2nCKずれているか否か判定することができる。
【0052】
その結果、コマンドCmd-aがコマンドCmd-bから2nCKずれていない場合には(ステップS402;Y)、BL変換判定部34は、FIFOメモリ33Aにおいて、BGインタリーブIL-aのメモリアクセス要求に対応する分割要否情報devに「1」を書き込む(ステップS403)。
【0053】
一方、ステップS401において、BGインタリーブIL-aのメモリアクセス要求数(BL16相当に換算したときのメモリアクセス要求数)が奇数×2である場合には(ステップS401;N)、BL変換判定部34は、コマンドスケジューラ41から取得した発行タイミング情報に基づいて、コマンドCmd-aがコマンドCmd-bから2nCKずれているか否か判定する(ステップS404)。具体的には、コマンドスケジューラ41から取得した発行タイミング情報から、コマンドCmd-bの発行タイミング(発行時刻)と、コマンドCmd-aの発行タイミング(発行時刻)とが得られたとする。このとき、BL変換判定部34は、これらの発行時刻から、コマンドCmd-aがコマンドCmd-bから2nCKずれているか否か判定することができる。
【0054】
その結果、コマンドCmd-aがコマンドCmd-bから2nCKずれている場合には(ステップS404;Y)、BL変換判定部34は、FIFOメモリ33Aにおいて、BGインタリーブIL-aのメモリアクセス要求に対応する分割要否情報devに「1」を書き込む(ステップS403)。ステップS404において、メモリアクセス要求R-aがメモリアクセス要求R-bから2nCKずれていない場合(ステップS404;N)、または、ステップS402において、メモリアクセス要求R-aがメモリアクセス要求R-bから2nCKずれている場合(ステップS402;Y)、BL変換判定部34は、FIFOメモリ33Aにおいて、BGインタリーブIL-aのメモリアクセス要求に対応する分割要否情報devに「0」を書き込む(ステップS405)。
【0055】
次に、BL変換部35の動作について説明する。
図16は、BL変換部35におけるBL変換手順の一例を表したものである。FIFOメモリ33Aは、新たなメモリアクセス要求が格納されるたびに、FIFOメモリ33Aにおける格納順番が最も古いメモリアクセス要求を分割要否情報devとともにBL変換部35に出力する。BL変換部35は、FIFOメモリ33Aからメモリアクセス要求および分割要否情報devが入力されると、分割要否情報devが「1」であるか否かを判定する(ステップS501)。その結果、分割要否情報devが「1」である場合には(ステップS501;Y)、BL変換部35は、メモリアクセス要求のBL長をBL32からBL16に変換する(ステップS502)。具体的には、BL変換部35は、BL32のメモリアクセス要求を、BL16の2つのメモリアクセス要求に分割する。分割要否情報devが「0」である場合には(ステップS501;N)、BL変換部35は、メモリアクセス要求のBL長をBL32のまま変更しない(ステップS503)。
【0056】
次に、BGインタリーブIL-aのメモリアクセス要求のBL長について具体的な変換方法について説明する。
【0057】
図17は、条件Aを満たしたときにフラグの書き込み処理がなされた後のFIFOメモリ33Aの一例を表したものである。以下では、
図17に記載のFIFOメモリ33Aに対して複数のメモリアクセス要求が順次入力されたときの、BL変換部35からの出力について説明する。
【0058】
FIFOメモリ33Aに新たなメモリアクセス要求が入力されると、FIFOメモリ33Aにおける格納順番が最も古いメモリアクセス要求(リード要求(BL32,BG2)=メモリアクセス要求R-b)および分割要否情報devがBL変換部35に出力される。BL変換部35は、FIFOメモリ33Aからリード要求(BL32,BG2)および分割要否情報devが入力されると、dev=0となっているので、リード要求(BL32,BG2)をそのまま、メモリコントローラ40に出力する。
【0059】
FIFOメモリ33Aに更にメモリアクセス要求が入力されると、FIFOメモリ33Aにおける格納順番が最も古いメモリアクセス要求(リード要求(BL32,BG1)=メモリアクセス要求R-a)および分割要否情報devがBL変換部35に出力される。BL変換部35は、FIFOメモリ33Aからリード要求(BL32,BG1)および分割要否情報devが入力されると、dev=0となっているので、リード要求(BL32,BG1)をそのまま、メモリコントローラ40に出力する。
【0060】
FIFOメモリ33Aに更にメモリアクセス要求が入力されると、FIFOメモリ33Aにおける格納順番が最も古いメモリアクセス要求(2BGインタリーブIL-aの先頭のリード要求(BL32,BG2))および分割要否情報devがBL変換部35に出力される。BL変換部35は、FIFOメモリ33Aからリード要求(BL32,BG2)および分割要否情報devが入力されると、dev=1となっているので、リード要求(BL32,BG2)を、2つのリード要求(BL16,BG2)に分割してメモリコントローラ40に出力する。
【0061】
FIFOメモリ33Aに更にメモリアクセス要求が入力されると、FIFOメモリ33Aにおける格納順番が最も古いメモリアクセス要求(2BGインタリーブIL-aの2番目のリード要求(BL32,BG3))および分割要否情報devがBL変換部35に出力される。BL変換部35は、FIFOメモリ33Aからリード要求(BL32,BG3)および分割要否情報devが入力されると、dev=1となっているので、リード要求(BL32,BG3)を、2つのリード要求(BL16,BG3)に分割してメモリコントローラ40に出力する。BL変換部35は、以降も上記と同様にして、メモリアクセス要求をメモリコントローラ40に出力する。その結果、例えば、
図18に示したようなメモリアクセス要求列がメモリコントローラ40に入力される。
図18では、メモリコントローラ40に入力された複数のメモリアクセス要求が下から順番に並んで配置されている。
【0062】
図19は、条件Bを満たしたときにフラグの書き込み処理がなされた後のFIFOメモリ33Aの一例を表したものである。以下では、
図19に記載のFIFOメモリ33Aに対して複数のコマンドが順次入力されたときの、BL変換部35からの出力について説明する。
【0063】
FIFOメモリ33Aに新たなメモリアクセス要求が入力されると、FIFOメモリ33Aにおける格納順番が最も古いメモリアクセス要求(リード要求(BL32,BG1)=メモリアクセス要求R-b)および分割要否情報devがBL変換部35に出力される。BL変換部35は、FIFOメモリ33Aからリード要求(BL32,BG1)および分割要否情報devが入力されると、dev=0となっているので、リード要求(BL32,BG1)をそのまま、メモリコントローラ40に出力する。
【0064】
FIFOメモリ33Aに更にメモリアクセス要求が入力されると、FIFOメモリ33Aにおける格納順番が最も古いメモリアクセス要求(リード要求(BL32,BG0)=メモリアクセス要求R-a)および分割要否情報devがBL変換部35に出力される。BL変換部35は、FIFOメモリ33Aからリード要求(BL32,BG0)および分割要否情報devが入力されると、dev=0となっているので、リード要求(BL32,BG0)をそのまま、メモリコントローラ40に出力する。
【0065】
FIFOメモリ33Aに更にメモリアクセス要求が入力されると、FIFOメモリ33Aにおける格納順番が最も古いメモリアクセス要求(2BGインタリーブIL-aの先頭のリード要求(BL32,BG2))および分割要否情報devがBL変換部35に出力される。BL変換部35は、FIFOメモリ33Aからリード要求(BL32,BG2)および分割要否情報devが入力されると、dev=1となっているので、リード要求(BL32,BG2)を、2つのリード要求(BL16,BG2)に分割してメモリコントローラ40に出力する。
【0066】
FIFOメモリ33Aに更にメモリアクセス要求が入力されると、FIFOメモリ33Aにおける格納順番が最も古いメモリアクセス要求(2BGインタリーブIL-aの2番目のリード要求(BL32,BG3))および分割要否情報devがBL変換部35に出力される。BL変換部35は、FIFOメモリ33Aからリード要求(BL32,BG3)および分割要否情報devが入力されると、dev=1となっているので、リード要求(BL32,BG3)を、2つのリード要求(BL16,BG3)に分割してメモリコントローラ40に出力する。BL変換部35は、以降も上記と同様にして、メモリアクセス要求をメモリコントローラ40に出力する。その結果、例えば、
図20に示したようなメモリアクセス要求列がメモリコントローラ40に入力される。
図20では、メモリコントローラ40に入力された複数のメモリアクセス要求が下から順番に並んで配置されている。
【0067】
次に、メモリコントローラ40について説明する。メモリコントローラ40は、例えば、
図5に示したように、コマンドスケジューラ41と、LPDDR-PHY(以下、単に「物理層」と称する。)42とを有している。
【0068】
コマンドスケジューラ41は、調整部30から入力されたメモリアクセス要求に基づいて、DRAM50に対するコマンドを発行する。このとき、コマンドスケジューラ41は、発行するコマンドの発行タイミング情報を生成し、生成した発行タイミング情報に従ってコマンドを物理層42に出力する。コマンドスケジューラ41は、生成した発行タイミング情報をBL変換判定部34に出力する。
【0069】
コマンドスケジューラ41は、例えば、DRAM50における複数のバンクグループに対して、並列的にアクセスさせるためのバンクグループインタリーブ手法によりコマンドを発行する。メモリコントローラ40は、内部バッファに格納しておいた書き込みデータを、コマンド発行と同期してDRAM50に出力する。メモリコントローラ40は、コマンド発行と同期して、DRAM50から読み出しデータを読み出し、内部バッファに格納する。
【0070】
物理層42は、メモリコントローラ40の動作クロックと同期して供給されるコマンドと、内部バッファに格納しておいた書き込みデータとを、DRAM50のメモリクロックに基づいて出力する。また、物理層42は、DRAM50におけるメモリクロックに同期して読み出されたデータを、メモリコントローラ40の動作クロックに同期させて内部バッファに格納する。
【0071】
コマンドスケジューラ41は、メモリアクセスの効率を高めるためにアクセス順序の入れ替えを行う機能(アウトオブオーダ実行機能)を有している。以下に、アウトオブオーダ実行機能について説明する。
【0072】
図21は、アウトオブオーダの実行手順の一例を表したものである。まず、コマンドスケジューラ41は、追い越しフラグが立っているか否かを判定する(ステップS501)。その結果、追い越しフラグが立っている場合には(ステップS501;Y)、コマンドスケジューラ41は、追い越しフラグをクリアする(ステップS502)。このとき、コマンドスケジューラ41は、(b)に対応するコマンドの発行時刻を決定し、(b)に対応するコマンドを(a)に対応するコマンドとする(ステップS502,S503)。
【0073】
追い越しフラグが立っていない場合には(ステップS501;N)、コマンドスケジューラ41は、(b)に対応するコマンドのBL長がBL32であるか否かを判定する(ステップS505)。その結果、(b)に対応するコマンドのBL長がBL32である場合には(ステップS505;Y)、コマンドスケジューラ41は、(b)に対応するコマンドの発行時刻を決定し、(b)に対応するコマンドを(a)に対応するコマンドとする(ステップS506,S507)。
【0074】
(b)に対応するコマンドのBL長がBL32ではない場合には(ステップS505;N)、コマンドスケジューラ41は、(a)に対応するコマンドと(b)に対応するコマンドとが互いにリードコマンドもしくはライトコマンドであるか否かを判定する(ステップS508)。その結果、(a)に対応するコマンドと(b)に対応するコマンドとが互いにリードコマンドもしくはライトコマンドではない場合には(ステップS508;N)、コマンドスケジューラ41は、(b)に対応するコマンドの発行時刻を決定し、(b)に対応するコマンドを(a)に対応するコマンドとする(ステップS509,S510)。
【0075】
(a)に対応するコマンドと(b)に対応するコマンドとが互いにリードコマンドもしくはライトコマンドである場合には(ステップS508;Y)、コマンドスケジューラ41は、(a)に対応するコマンドのBGが(b)に対応するコマンドのBGと等しいか否かを判定する(ステップS511)。その結果、(a)に対応するコマンドのBGが(b)に対応するコマンドのBGと異なっている場合には(ステップS511;N)、コマンドスケジューラ41は、(b)に対応するコマンドの発行時刻を決定し、(b)に対応するコマンドを(a)に対応するコマンドとする(ステップS512,S513)。
【0076】
(a)に対応するコマンドのBGが(b)に対応するコマンドのBGと等しい場合には(ステップS511;Y)、コマンドスケジューラ41は、追い越しフラグを立てる(ステップS514)。続いて、コマンドスケジューラ41は、(c)に対応するコマンドの発行時刻を決定し、(c)に対応するコマンドを(a)に対応するコマンドとする(ステップS515,S516)。
【0077】
図22は、コマンドスケジューラ41で生成されるコマンド列の一例を表したものである。
図22の各時刻は、(b)に対応するコマンドに対して決定される発行時刻であり、(c)に対応するコマンドは(b)に対応するコマンドの次に古いコマンドである。
【0078】
コマンドスケジューラ41は、
図22(A)に示したように、追い越しフラグが立っておらず、(b)に対応するコマンドのBL長がBL16となっており、(a)に対応するコマンドと(b)に対応するコマンドとが互いにリードコマンドとなっており、(a)に対応するコマンドのBGが(b)に対応するコマンドのBGと異なっているとする(ステップS501;N,505;N,S508;Y,S511;N)。このとき、コマンドスケジューラ41は、(b)に対応するコマンドの発行時刻をt1とする(ステップS512)。さらに、コマンドスケジューラ41は、(a)に対応するコマンドを物理層42に出力し、(b)に対応するコマンドを(a)に対応するコマンドにする(ステップS513)。
【0079】
次に、コマンドスケジューラ41は、
図22(B)に示したように、追い越しフラグが立っておらず、(b)に対応するコマンドのBL長がBL16となっており、(a)に対応するコマンドと(b)に対応するコマンドとが互いにリードコマンドとなっており、(a)に対応するコマンドのBGが(b)に対応するコマンドのBGと等しくなっているとする(ステップS501;N,505;N,S508;Y,S511;Y)。このとき、コマンドスケジューラ41は、追い越しフラグを立て、(c)に対応するコマンドの発行時刻をt2とする(ステップS514,S515)。さらに、コマンドスケジューラ41は、(a)に対応するコマンドを物理層42に出力し、(c)に対応するコマンドを(a)に対応するコマンドにする(ステップS516)。
【0080】
次に、コマンドスケジューラ41は、
図22(C)に示したように、追い越しフラグが立っている場合には(ステップS501;Y)、追い越しフラグをクリアする(ステップS502)。このとき、コマンドスケジューラ41は、(b)に対応するコマンドの発行時刻をt3とする(ステップS503)。さらに、コマンドスケジューラ41は、(a)に対応するコマンドを物理層42に出力し、(b)に対応するコマンドを(a)に対応するコマンドにする(ステップS504)。
【0081】
次に、コマンドスケジューラ41は、
図22(D)に示したように、追い越しフラグが立っておらず、(b)に対応するコマンドのBL長がBL16となっており、(a)に対応するコマンドと(b)に対応するコマンドとが互いにリードコマンドとなっており、(a)に対応するコマンドのBGが(b)に対応するコマンドのBGと異なっているとする(ステップS501;N,505;N,S508;Y,S511;N)。このとき、コマンドスケジューラ41は、(b)に対応するコマンドの発行時刻をt4とする(ステップS512)。さらに、コマンドスケジューラ41は、(a)に対応するコマンドを物理層42に出力し、(b)に対応するコマンドを(a)に対応するコマンドにする(ステップS513)。
【0082】
次に、コマンドスケジューラ41は、
図22(E)に示したように、追い越しフラグが立っておらず、(b)に対応するコマンドのBL長がBL16となっており、(a)に対応するコマンドと(b)に対応するコマンドとが互いにリードコマンドとなっており、(a)に対応するコマンドのBGが(b)に対応するコマンドのBGと異なっているとする(ステップS501;N,505;N,S508;Y,S511;N)。このとき、コマンドスケジューラ41は、(b)に対応するコマンドの発行時刻をt5とする(ステップS512)。さらに、コマンドスケジューラ41は、(a)に対応するコマンドを物理層42に出力し、(b)に対応するコマンドを(a)に対応するコマンドにする(ステップS513)。
【0083】
次に、コマンドスケジューラ41は、
図22(F)に示したように、追い越しフラグが立っておらず、(b)に対応するコマンドのBL長がBL16となっており、(a)に対応するコマンドと(b)に対応するコマンドとが互いにリードコマンドとなっており、(a)に対応するコマンドのBGが(b)に対応するコマンドのBGと等しくなっているとする(ステップS501;N,505;N,S508;Y,S511;Y)。このとき、コマンドスケジューラ41は、追い越しフラグを立て、(c)に対応するコマンドの発行時刻をt6とする(ステップS514,S515)。さらに、コマンドスケジューラ41は、(a)に対応するコマンドを物理層42に出力し、(c)に対応するコマンドを(a)に対応するコマンドにする(ステップS516)。
【0084】
次に、コマンドスケジューラ41は、
図22(G)に示したように、追い越しフラグが立っているとする(ステップS501;Y)。このとき、コマンドスケジューラ41は、追い越しフラグをクリアし、(b)に対応するコマンドの発行時刻をt7とする(ステップS502,S503)。さらに、コマンドスケジューラ41は、(a)に対応するコマンドを物理層42に出力し、(b)に対応するコマンドを(a)に対応するコマンドにする(ステップS504)。
【0085】
次に、コマンドスケジューラ41は、
図22(H)に示したように、追い越しフラグが立っておらず、(b)に対応するコマンドのBL長がBL16となっており、(a)に対応するコマンドと(b)に対応するコマンドとが互いにリードコマンドとなっており、(a)に対応するコマンドのBGが(b)に対応するコマンドのBGと異なっているとする(ステップS501;N,505;N,S508;Y,S511;N)。このとき、コマンドスケジューラ41は、(b)に対応するコマンドの発行時刻をt8とする(ステップS512)。さらに、コマンドスケジューラ41は、(a)に対応するコマンドを物理層42に出力し、(b)に対応するコマンドを(a)に対応するコマンドにする(ステップS513)。
【0086】
次に、コマンドスケジューラ41は、
図22(I)に示したように、追い越しフラグが立っておらず、(b)に対応するコマンドのBL長がBL32となっているとする(ステップS501;N,505;Y)。このとき、コマンドスケジューラ41は、(b)に対応するコマンドの発行時刻をt9とする(ステップS506)。さらに、コマンドスケジューラ41は、(a)に対応するコマンドを物理層42に出力し、(b)に対応するコマンドを(a)に対応するコマンドにする(ステップS507)。
【0087】
このようにして、コマンドスケジューラ41は、アウトオブオーダを実行する。
【0088】
図23は、リードコマンドからライトコマンドに変化するコマンド列が入力されたときのコマンドスケジューラ41の動作の一例を表したものである。
図23の上段には、BL長がBL32のときのコマンドスケジューラ41の動作の一例が表わされている。
図23の下段には、
図23の上段に表されたコマンドスケジューラ41の動作において、特定のBGインタリーブの複数のリードコマンド(BL32,BG3)のBL長をBL32からBL16に変換した動作の一例が表わされている。なお、特定のBGインタリーブとは、分割要否情報devが「1」となっている複数のコマンドで構成されたBGインタリーブを指している。
【0089】
図23の上段、下段において、アドレスコマンド線に出力されるコマンドがバンクグループごとおよびバンクアドレスごとに分けて表されており、データ線に出力されるデータがバンクグループごとおよびバンクアドレスごとに異なる模様で表されている。なお、データ線において、黒塗りの箇所はデータが出力されていないことを示している。
【0090】
図23から、特定のBGインタリーブの複数のリードコマンドのBL長をBL32からBL16に変換することにより、リード・ライトの切り替えに要するペナルティを短縮することができることがわかる。
【0091】
図24は、ライトコマンドからリードコマンドに変化するコマンド列が入力されたときのコマンドスケジューラ41の動作の一例を表したものである。
図24の上段には、BL長がBL32のときのコマンドスケジューラ41の動作の一例が表わされている。
図24の下段には、
図24の上段に表されたコマンドスケジューラ41の動作において、特定のBGインタリーブの複数のリードコマンド(BL32,BG3)のBL長をBL32からBL16に変換した動作の一例が表わされている。なお、特定のBGインタリーブとは、分割要否情報devが「1」となっている複数のコマンドで構成されたBGインタリーブを指している。
【0092】
図24の上段、下段において、アドレスコマンド線に出力されるコマンドがバンクグループごとおよびバンクアドレスごとに分けて表されており、データ線に出力されるデータがバンクグループごとおよびバンクアドレスごとに異なる模様で表されている。なお、データ線において、黒塗りの箇所はデータが出力されていないことを示している。
【0093】
図24から、特定のBGインタリーブの複数のコマンドのBL長をBL32からBL16に変換することにより、リード・ライトの切り替えに要するペナルティを短縮することができることがわかる。
【0094】
[効果]
次に、本実施の形態に係る情報処理システムの効果について説明する。
【0095】
本実施の形態では、リードBGインタリーブもしくはライトBGインタリーブのメモリアクセス要求数と、リードバンクグループインタリーブもしくはライトバンクグループインタリーブの直前のメモリアクセス要求に対応するコマンドのタイミング情報とに基づいて、リードBGインタリーブもしくはライトBGインタリーブに含まれるメモリアクセス要求のBL長が変換される。これにより、DRAM50へのアクセスの効率を考慮したBL長を選択することが可能となる。その結果、LPDDR5もしくはLPDDR5Xなどの、BGを持ち、複数のBL長に対応したDRAM規格において、DRAM50へのアクセスをより効率良く実行することができる。
【0096】
本実施の形態では、上記条件Aおよび上記条件Bのいずれかの条件を満たす場合に、リードBGプインタリーブもしくはライトBGインタリーブに含まれるメモリアクセス要求のBL長がBL32からBL16に変換される。これにより、DRAM50へのアクセスの効率を考慮したBL長を選択することが可能となる。その結果、LPDDR5もしくはLPDDR5Xなどの、BGを持ち、複数のBL長に対応したDRAM規格において、DRAM50へのアクセスをより効率良く実行することができる。
【0097】
本実施の形態では、複数のメモリアクセス要求において、リードBGインタリーブもしくはライトBGインタリーブに該当するメモリアクセス要求が存在するか否かが判定され、その判定結果に応じたフラグがバンクグループ情報としてバッファ33のFIFOメモリ33Aに書き込まれる。これにより、FIFOメモリ33Aを用いてDRAM50へのアクセスの効率を考慮したBL長を選択することが可能となる。その結果、LPDDR5もしくはLPDDR5Xなどの、BGを持ち、複数のBL長に対応したDRAM規格において、DRAM50へのアクセスをより効率良く実行することができる。
【0098】
本実施の形態では、コマンドスケジューラ41から取得した発行タイミング情報に基づいて、フラグが付与された複数のメモリアクセス要求のBL長を変換するか否かが判定され、その判定結果に応じたフラグが分割要否情報devとしてバッファ33のFIFOメモリ33Aに書き込まれる。これにより、FIFOメモリ33Aを用いてDRAM50へのアクセスの効率を考慮したBL長を選択することが可能となる。その結果、LPDDR5もしくはLPDDR5Xなどの、BGを持ち、複数のBL長に対応したDRAM規格において、DRAM50へのアクセスをより効率良く実行することができる。
【0099】
<3.変形例>
以下、上記実施の形態に係る情報処理システムの変形例について説明する。以下の変形例では、上記実施の形態と共通の構成に同一の符号を付して説明する。
【0100】
[変形例A]
上記実施の形態およびその変形例において、例えば、
図25に示したように、調整部30およびメモリコントローラ40の代わりに、メモリコントローラ60が設けられていてもよい。メモリコントローラ60は、コマンドスケジューラ43および物理層42を有している。コマンドスケジューラ43は、例えば、バッファ43a、RW切替検出部32、BL変換部35、BL変換判定部34およびコマンド発行部43bを有している。
【0101】
バッファ43aは、例えば、FIFOメモリ33Aを有している。バッファ43aは、調停部31からメモリアクセス要求を受け付けるたびに、受け付けたメモリアクセス要求をFIFOメモリ33Aに格納する。BL変換部35は、バッファ43aのFIFOメモリ33Aから出力されたメモリアクセス要求をコマンド発行部43bに出力する。
【0102】
コマンド発行部43bは、BL変換部35から入力されたメモリアクセス要求に基づいて、DRAM50に対するコマンドを発行する。コマンド発行部43bは、例えば、DRAM50における複数のバンクグループに対して、並列的にアクセスさせるためのバンクグループインタリーブ手法によりコマンドを発行する。コマンド発行部43bは、内部バッファに格納しておいた書き込みデータを、コマンド発行と同期してDRAM50に出力する。コマンド発行部43bは、コマンド発行と同期して、DRAM50から読み出しデータを読み出し、内部バッファに格納する。
【0103】
本変形例では、調整部30の機能がメモリコントローラ60に内蔵されている。このようにした場合には、メモリコントローラ60内のコマンドバッファをバッファ43aとして用いることができる。
【0104】
なお、本変形例において、コマンド発行部43bは、メモリコントローラ60内で管理するDQピンの使用状態についての情報をBL変換判定部34に出力してもよい。このとき、BL変換判定部34は、DQピンの使用状態についての情報に基づいて、
図12(B)に示したような空きがDQピンに生じるか否か(つまり、上述の条件Aを満たすか否か)を判定する。その結果、
図12(B)に示したような空きがDQピンに生じる(つまり、上述の条件Aを満たす)と判定した場合には、2BGインタリーブIL-aに含まれるコマンドのBL長を、BL32からBL16へ変換する。このようにした場合であっても、DRAM50へのアクセスの効率を考慮したBL長を選択することが可能となる。その結果、LPDDR5もしくはLPDDR5Xといった最新世代のDRAM規格において、DRAM50へのアクセスをより効率良く実行することができる。
【0105】
[変形例B]
上記実施の形態および変形例Aでは、各イニシエータ10から入力されるメモリアクセス要求に含まれるBL長が常にBL32となっていた。しかし、上記実施の形態および変形例Aにおいて、各イニシエータ10から入力されるメモリアクセス要求の一部に含まれるBL長が、例えば、
図26に示したようにBL16となっていてもよい。
【0106】
図27は、2BGインタリーブIL-aに含まれるコマンドのBL長の変換を実行するか否かを判断するための条件を表したものである。
図27には、2BGインタリーブIL-aに含まれるコマンドのBL長を、BL16からBL32へ変換する条件が示されている。BL変換判定部34およびBL変換部35は、以下の2つのいずれの条件も満たさない場合に、2BGインタリーブIL-aに含まれるコマンドのBL長を、BL16からBL32へ変換する。
【0107】
・条件A
2BGインタリーブIL-aのメモリアクセス要求数(BL16相当に換算したときのメモリアクセス要求数)が偶数×2となっており、かつ、コマンドCmd-aがコマンドCmd-aの直前のコマンドCmd-b(第2コマンド)から2nCK後以外のタイミングで発行されること
・条件B
2BGインタリーブIL-aのメモリアクセス要求数(BL16相当に換算したときのメモリアクセス要求数)が奇数×2となっており、かつ、コマンドCmd-aがコマンドCmd-bから2nCK後のタイミングで発行されること
【0108】
図28(A)、
図28(B)は、2BGインタリーブIL-a、コマンドCmd-aおよびコマンドCmd-bについて説明する図である。
図28(A)では、2BGインタリーブIL-aが、2つのバンクグループBG2,BG3に対してBL16の8つのリード要求でインタリーブするように構成されている場合が例示されている。
図29(B)では、2BGインタリーブIL-aが、2つのバンクグループBG2,BG3に対してBL16の4つのリードコマンドでインタリーブするように構成されている場合が例示されている。
【0109】
図28(A)では、2BGインタリーブIL-aの直前のコマンドCmd-aが、バンクグループBG1に対するBL32のリードコマンドとなっており、コマンドCmd-aの直前のコマンドCmd-bが、バンクグループBG2に対するBL32のリードコマンドとなっている。一方、
図29(B)では、2BGインタリーブIL-aの直前のコマンドCmd-aが、バンクグループBG1に対するBL32のリードコマンドとなっており、コマンドCmd-aの直前のコマンドCmd-bが、バンクグループBG0に対するBL32のリードコマンドとなっている。
【0110】
本変形例では、上記条件Aおよび上記条件Bのいずれの条件も満たさない場合に、リードBGプインタリーブもしくはライトBGインタリーブに含まれるメモリアクセス要求のBL長がBL16からBL32に変換される。これにより、DRAM50へのアクセスの効率を考慮したBL長を選択することが可能となる。その結果、LPDDR5もしくはLPDDR5Xなどの、BGを持ち、複数のBL長に対応したDRAM規格において、DRAM50へのアクセスをより効率良く実行することができる。
【0111】
[変形例C]
上記実施の形態および変形例A,Bにおいて、コマンドスケジューラ41が、3つのバンクグループにインタリーブしてもよい。このとき、BL変換判定部34およびBL変換部35は、リード・ライトの切り替えの直前の3BGインタリーブIL-b(リードBGグループインタリーブもしくはライトBGインタリーブ)のメモリアクセス要求数と、3BGインタリーブIL-bの直前のメモリアクセス要求R-aに対応するコマンドCmd-a(第1コマンド)のタイミング情報とに基づいて、3BGインタリーブIL-bに含まれるメモリアクセス要求のBL長を変換する。なお、「3BGインタリーブ」とは、3つのバンクグループにインタリーブすることを指している。このとき、BL変換判定部34およびBL変換部35は、以下に記載の条件Aまたは条件Bに基づいて、3BGインタリーブIL-bに含まれるメモリアクセス要求のBL長の変換を実行するか否かを判断してもよい。
【0112】
・条件A
3BGインタリーブIL-aのメモリアクセス要求数(BL16相当に換算したときのメモリアクセス要求数)が偶数×2となっており、かつ、コマンドCmd-aがコマンドCmd-aの直前のコマンドCmd-b(第2コマンド)から2nCK後以外のタイミングで発行されること
・条件B
3BGインタリーブIL-aのメモリアクセス要求数(BL16相当に換算したときのメモリアクセス要求数)が奇数×2となっており、かつ、コマンドCmd-aがコマンドCmd-bから2nCK後のタイミングで発行されること
【0113】
このとき、バッファ33には、例えば
図29に記載のFIFOメモリ33Aが格納されている。
図29は、条件Aを満たしたときにフラグの書き込み処理がなされた後のフラグが書き込まれたFIFOメモリ33Aの一例を表したものである。以下では、
図29に記載のFIFOメモリ33Aに対して複数のメモリアクセス要求が順次入力されたときの、BL変換部35からの出力について説明する。
【0114】
FIFOメモリ33Aに新たなメモリアクセス要求が入力されると、FIFOメモリ33Aにおける格納順番が最も古いメモリアクセス要求(リード要求(BL32,BG1)=メモリアクセス要求R-b)および分割要否情報devがBL変換部35に出力される。BL変換部35は、FIFOメモリ33Aからリード要求(BL32,BG1)および分割要否情報devが入力されると、dev=0となっているので、リード要求(BL32,BG1)をそのまま、メモリコントローラ40に出力する。
【0115】
FIFOメモリ33Aに更にメモリアクセス要求が入力されると、FIFOメモリ33Aにおける格納順番が最も古いメモリアクセス要求(リード要求(BL32,BG0)=メモリアクセス要求R-a)および分割要否情報devがBL変換部35に出力される。BL変換部35は、FIFOメモリ33Aからリード要求(BL32,BG0)および分割要否情報devが入力されると、dev=0となっているので、リード要求(BL32,BG0)をそのまま、メモリコントローラ40に出力する。
【0116】
FIFOメモリ33Aに更にメモリアクセス要求が入力されると、FIFOメモリ33Aにおける格納順番が最も古いメモリアクセス要求(3BGインタリーブIL-bの先頭のリード要求(BL32,BG1))および分割要否情報devがBL変換部35に出力される。BL変換部35は、FIFOメモリ33Aからリード要求(BL32,BG1)および分割要否情報devが入力されると、dev=1となっているので、リード要求(BL32,BG1)を、2つのリード要求(BL16,BG1)に分割してメモリコントローラ40に出力する。
【0117】
FIFOメモリ33Aに更にメモリアクセス要求が入力されると、FIFOメモリ33Aにおける格納順番が最も古いメモリアクセス要求(3BGインタリーブIL-bの2番目のリード要求(BL32,BG3))および分割要否情報devがBL変換部35に出力される。BL変換部35は、FIFOメモリ33Aからリード要求(BL32,BG3)および分割要否情報devが入力されると、dev=1となっているので、リード要求(BL32,BG3)を、2つのリード要求(BL16,BG3)に分割してメモリコントローラ40に出力する。BL変換部35は、以降も上記と同様にして、コマンドをメモリコントローラ40に出力する。その結果、例えば、
図30に示したようなメモリアクセス要求列がメモリコントローラ40に入力される。
図30では、メモリコントローラ40に入力された複数のメモリアクセス要求が下から順番に並んで配置されている。
【0118】
本変形例では、リード・ライトの切り替えの直前の3BGインタリーブIL-bのメモリアクセス要求数と、3BGインタリーブIL-bの直前のメモリアクセス要求に対応するコマンドCmd-aのタイミング情報とに基づいて、3BGインタリーブIL-bに含まれるメモリアクセス要求のBL長が変換される。このようにした場合であっても、DRAM50へのアクセスの効率を考慮したBL長を選択することが可能となる。その結果、LPDDR5もしくはLPDDR5Xなどの、BGを持ち、複数のBL長に対応したDRAM規格において、DRAM50へのアクセスをより効率良く実行することができる。
【0119】
なお、本変形例において、コマンドスケジューラ41が、M個のバンクグループにインタリーブしてもよい。このとき、BL変換判定部34およびBL変換部35は、リード・ライトの切り替えの直前のMBGインタリーブIL-b(M≧4)のメモリアクセス要求数と、MBGインタリーブIL-bの直前のメモリアクセス要求R-aに対応するコマンドCmd-a(第1コマンド)のタイミング情報とに基づいて、MBGインタリーブIL-bに含まれるメモリアクセス要求のBL長を変換してもよい。なお、「MBGインタリーブ」とは、M個のバンクグループにインタリーブすることを指している。このとき、BL変換判定部34およびBL変換部35は、以下に記載の条件Aまたは条件Bに基づいて、3BGインタリーブIL-bに含まれるメモリアクセス要求のBL長の変換を実行するか否かを判断してもよい。
【0120】
・条件A
MBGインタリーブIL-aのメモリアクセス要求数(BL16相当に換算したときのメモリアクセス要求数)が偶数×2となっており、かつ、コマンドCmd-aがコマンドCmd-aの直前のコマンドCmd-b(第2コマンド)から2nCK後以外のタイミングで発行されること
・条件B
MBGインタリーブIL-aのメモリアクセス要求数(BL16相当に換算したときのメモリアクセス要求数)が奇数×2となっており、かつ、コマンドCmd-aがコマンドCmd-bから2nCK後のタイミングで発行されること
【0121】
このようにした場合であっても、DRAM50へのアクセスの効率を考慮したBL長を選択することが可能となる。その結果、LPDDR5もしくはLPDDR5Xなどの、BGを持ち、複数のBL長に対応したDRAM規格において、DRAM50へのアクセスをより効率良く実行することができる。
【0122】
以上、複数の実施の形態およびそれらの変形例を挙げて本技術を説明したが、本開示は上記実施の形態等に限定されるものではなく、種々変形が可能である。なお、本明細書中に記載された効果は、あくまで例示である。本開示の効果は、本明細書中に記載された効果に限定されるものではない。本開示が、本明細書中に記載された効果以外の効果を持っていてもよい。
【0123】
また、例えば、本開示は以下のような構成を取ることができる。
(1)
受け付けたメモリアクセスに関する複数のメモリアクセス要求において、リードバンクグループインタリーブとライト要求との切り替え、もしくはライトバンクグループインタリーブとリード要求との切り替えを検出する検出部と、
前記リードバンクグループインタリーブもしくは前記ライトバンクグループインタリーブのメモリアクセス要求数と、前記リードバンクグループインタリーブもしくは前記ライトバンクグループインタリーブの直前のメモリアクセス要求に対応する第1コマンドのタイミング情報とに基づいて、前記リードバンクグループインタリーブもしくは前記ライトバンクグループインタリーブに含まれるメモリアクセス要求のBL長を変換する変換部と
を備えた
メモリ制御装置。
(2)
前記変換部は、以下の2つのいずれかの条件を満たす場合に、前記リードバンクグループインタリーブもしくは前記ライトバンクグループインタリーブに含まれるメモリアクセス要求のBL長をBL32からBL16に変換する
(1)に記載のメモリ制御装置。
・条件A
前記リードバンクグループインタリーブもしくは前記ライトバンクグループインタリーブの、BL16相当に換算したときのメモリアクセス要求数が偶数×2となっており、かつ、前記第1コマンドが前記第1コマンドの直前の第2コマンドから2nCK後以外のタイミングで発行されること
・条件B
前記リードバンクグループインタリーブもしくは前記ライトバンクグループインタリーブの、BL16相当に換算したときのメモリアクセス要求数が奇数×2となっており、かつ、前記第1コマンドが前記第2コマンドから2nCK後のタイミングで発行されること
(3)
前記変換部は、以下の2つのいずれの条件も満たさない場合に、前記リードバンクグループインタリーブもしくは前記ライトバンクグループインタリーブに含まれるコマンドのBL長をBL16からBL32に変換する
(1)に記載のメモリ制御装置。
・条件A
前記リードバンクグループインタリーブもしくは前記ライトバンクグループインタリーブの、BL16相当に換算したときのメモリアクセス要求数が偶数×2となっており、かつ、前記第1コマンドが前記第1コマンドの直前の前記第2コマンドから2nCK後以外のタイミングで発行されること
・条件B
前記リードバンクグループインタリーブもしくは前記ライトバンクグループインタリーブの、BL16相当に換算したときのメモリアクセス要求数が奇数×2となっており、かつ、前記第1コマンドが前記第2コマンドから2nCK後のタイミングで発行されること
(4)
前記複数のメモリアクセス要求と、前記コマンドごとに対応付けられたバンクグループ情報および分割要否情報とを記憶する記憶部と、
前記複数のメモリアクセス要求において、前記リードバンクグループインタリーブもしくは前記ライトバンクグループインタリーブに該当するメモリアクセス要求が存在するか否かを判定し、その判定結果に応じたフラグを、前記バンクグループ情報として前記記憶部に書き込む判定部と
を更に備えた
(1)または(2)に記載のメモリ制御装置。
(5)
前記判定部は、前記タイミング情報に基づいて、前記フラグが付与された複数のメモリアクセス要求のBL長を変換するか否か判定し、その判定結果に応じたフラグを、前記分割要否情報として前記記憶部に書き込む
(4)に記載のメモリ制御装置。
【0124】
本開示の一実施形態に係るメモリ制御装置では、リードバンクグループインタリーブもしくはライトバンクグループインタリーブのメモリアクセス要求数と、リードバンクグループインタリーブもしくはライトバンクグループインタリーブの直前のメモリアクセス要求に対応するコマンドのタイミング情報とに基づいて、リードバンクグループインタリーブもしくはライトバンクグループインタリーブに含まれるメモリアクセス要求のBL長が変換される。これにより、DRAMへのアクセスの効率を考慮したBL長を選択することが可能となる。その結果、LPDDR5もしくはLPDDR5Xなどの、BGを持ち、複数のBL長に対応したDRAM規格において、DRAMへのアクセスをより効率良く実行することができる。なお、本開示の効果は、ここに記載された効果に必ずしも限定されず、本明細書中に記載されたいずれの効果であってもよい。
【符号の説明】
【0125】
10…イニシエータ、30…調整部、31…調停部、32…RW切替検出部、33…バッファ、33A…FIFOメモリ、34…BL変換判定部、35…BL変換部、40,60…メモリコントローラ、41,43…コマンドスケジューラ、42…物理層、43a…バッファ、43b…コマンド発行部、50…DRAM、IL-a…RW切り替え直前の2BGインタリーブ、IL-b…RW切り替え直前の3BGインタリーブ、Cmd-a…IL-aの直前のコマンド、Cmd-b…Cmd-aの直前のコマンド。