JP2016218721A - メモリ制御回路およびメモリ制御方法 - Google Patents

メモリ制御回路およびメモリ制御方法 Download PDF

Info

Publication number
JP2016218721A
JP2016218721A JP2015102625A JP2015102625A JP2016218721A JP 2016218721 A JP2016218721 A JP 2016218721A JP 2015102625 A JP2015102625 A JP 2015102625A JP 2015102625 A JP2015102625 A JP 2015102625A JP 2016218721 A JP2016218721 A JP 2016218721A
Authority
JP
Japan
Prior art keywords
command
read
write
memory
issued
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.)
Pending
Application number
JP2015102625A
Other languages
English (en)
Inventor
孝博 五十嵐
Takahiro Igarashi
孝博 五十嵐
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.)
Sony Corp
Original Assignee
Sony Corp
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 Sony Corp filed Critical Sony Corp
Priority to JP2015102625A priority Critical patent/JP2016218721A/ja
Priority to US15/570,905 priority patent/US10430113B2/en
Priority to PCT/JP2016/062997 priority patent/WO2016185879A1/ja
Publication of JP2016218721A publication Critical patent/JP2016218721A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • 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/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • 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/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • 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/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0607Interleaved addressing
    • 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
    • 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
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/161Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement
    • 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
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/1647Handling requests for interconnection or transfer for access to memory bus based on arbitration with interleaved bank access
    • 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/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • 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/0673Single storage device
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • G11C7/1015Read-write modes for single port memories, i.e. having either a random port or a serial port
    • G11C7/1042Read-write modes for single port memories, i.e. having either a random port or a serial port using interleaving techniques, i.e. read-write of one part of the memory while preparing another part
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Dram (AREA)
  • Memory System (AREA)

Abstract

【課題】データ転送効率を向上させる。【解決手段】本開示のメモリ制御回路は、バンクグループインターリーブを行わずに複数の制御コマンドを発行する第1の発行モードと、バンクグループインターリーブを行って複数の制御コマンドを発行する第2の発行モードとを選択的に用いて、バンクグループ機能を持つメモリにおける複数のバンクグループに対して制御コマンドを発行するメモリ制御部を備える。【選択図】図1

Description

本開示は、バンクグループ機能を持つメモリに適用されるメモリ制御回路およびメモリ制御方法に関する。
DRAM(Dynamic Random Access Memory)の高速化に伴い、DDR(Double Data Rate)規格やDDR2規格が登場し、バンク数は2,4,8と増加してきた。これにより、DRAMメモリセルの欠点であるページオープン・クローズのオーバーヘッドを隠蔽しWRITE/READを連続して行うことができるようになった。この手法はバンクインターリーブと呼ばれ広く知られている。また、DRAMメモリにおけるデータ転送効率を向上させる技術として、特許文献1ないし3には、メモリアドレスやデータの並び替えを行う技術が提案されている。
米国特許出願公開第2015/0046642号明細書 特開2004−164641号公報 特開2010−277216号公報
さらに、最近のDDR4規格では、バンクを2つないし4つのグループに分けるバンクグループが採用され、メモリセルアレイから並列で読み出すデータ数を増やすことなく(prefetchするデータ数を増やすことなく)、I/O(Input/Output)のデータ転送帯域を旧規格DDR3に比べて倍増させている。ただしバンクグループのインターリーブを行うことは、常にデータ転送帯域を増やすわけではなく、減ることもあり得る。このため、バンクグループのインターリーブを行うか行わないかの判断を適切に行う必要がある。メモリへのWRITE/READのアクセスパターンや、メモリ仕様、特にコマンド間隔の規定によってバンクグループのインターリーブを行うか否かを判定することで、より高いデータ転送帯域を得ることができる可能性がある。上記特許文献1ないし3には、バンクグループを考慮してデータ転送効率を向上させる技術は提案されていない。
本開示の目的は、データ転送効率を向上させることができるようにしたメモリ制御回路およびメモリ制御方法を提供することにある。
本開示によるメモリ制御回路は、バンクグループインターリーブを行わずに複数の制御コマンドを発行する第1の発行モードと、バンクグループインターリーブを行って複数の制御コマンドを発行する第2の発行モードとを選択的に用いて、バンクグループ機能を持つメモリにおける複数のバンクグループに対して制御コマンドを発行するメモリ制御部を備えたものである。
本開示によるメモリ制御方法は、バンクグループインターリーブを行わずに複数の制御コマンドを発行する第1の発行モードと、バンクグループインターリーブを行って複数の制御コマンドを発行する第2の発行モードとを選択的に用いて、バンクグループ機能を持つメモリにおける複数のバンクグループに対して制御コマンドを発行するものである。
本開示によるメモリ制御回路またはメモリ制御方法では、バンクグループ機能を持つメモリにおける複数のバンクグループに対して制御コマンドを発行する際、バンクグループインターリーブを行わずに複数の制御コマンドを発行する第1の発行モードと、バンクグループインターリーブを行って複数の制御コマンドを発行する第2の発行モードとを選択的に用いる。
本開示のメモリ制御回路またはメモリ制御方法によれば、複数のバンクグループに対して制御コマンドを発行する際、バンクグループインターリーブを行うか否かを適切に選択するようにしたので、データ転送効率を向上させることができる。
なお、ここに記載された効果は必ずしも限定されるものではなく、本開示中に記載されたいずれかの効果であってもよい。
本開示の一実施の形態に係るメモリ制御回路を含むメモリバスシステムの一構成例を示すブロック図である。 バンクグループインターリーブを行い、かつREADのみを行う場合の制御コマンドの発行タイミングの第1の例を示すタイミング図である。 バンクグループインターリーブを行い、かつREADのみを行う場合の制御コマンドの発行タイミングの第2の例を示すタイミング図である。 バンクグループインターリーブを行わず、かつREADのみを行う場合の制御コマンドの発行タイミングの一例を示すタイミング図である。 バンクグループインターリーブを行い、かつWRITEのみを行う場合の制御コマンドの発行タイミングの一例を示すタイミング図である。 バンクグループインターリーブを行わず、かつWRITEのみを行う場合の制御コマンドの発行タイミングの一例を示すタイミング図である。 WRITEからREADへの切り替わりの第1の例を示すタイミング図である。 WRITEからREADへの切り替わりの第2の例を示すタイミング図である。 WRITEからREADへの切り替わりの第3の例を示すタイミング図である。 WRITEからREADへの切り替わりの第4の例を示すタイミング図である。 バンクグループインターリーブを行い、かつREADのみを行う場合の制御コマンドの発行タイミングの一例を示すタイミング図である。 バンクグループインターリーブを行わず、かつWRITEのみを行う場合の制御コマンドの発行タイミングの一例を示すタイミング図である。 図11および図12のタイミング図を簡略化して示した図である。 WRITEとWRITEの間にREADを行う際に、バンクグループインターリーブを行う場合と行わない場合とを比較して示したタイミング図である。 READを行う際に、バンクグループインターリーブを行う場合と行わない場合とのコマンド発行パターンを比較して示したタイミング図である。 バンクグループインターリーブを行う場合と行わない場合とにおけるREADのデータ配列の一例を示す説明図である。 アービターでバンクグループインターリーブのモードの切り替えを行う場合の動作例を示す説明図である。
以下、本開示の実施の形態について図面を参照して詳細に説明する。なお、説明は以下の順序で行う。
1.メモリ制御回路を含むメモリバスシステム
1.1 構成(図1)
1.2 動作
1.2.1 READのみの場合の制御動作(図2〜図4)
1.2.2 WRITEのみの場合の制御動作(図5〜図6)
1.2.3 WRITEおよびREADを含む場合の制御動作(図7〜図17)
1.3 効果
2.その他の実施の形態
<1.メモリ制御回路を含むメモリバスシステム>
[1.1 構成]
図1は、本開示の一実施の形態に係るメモリ制御回路を含むメモリバスシステムの一構成例を示している。
メモリバスシステム1は、1以上のバスマスターと、メモリ制御部30と、DDR−PHY(physical interface)40とを備えている。バスマスターは例えば、複数のREADマスター11,12と、複数のWRITEマスター21,22とで構成される。メモリ制御部30は、アービター31と、メモリコントローラ32とを有している。メモリ制御部30はまた、図示しないバッファを有している。
メモリ50は、バンクグループ機能を持つメモリ、例えばDDR4またはGDDR5(Graphics Double Data Rate 5) 規格のメモリである。図1では、メモリ50が、2つのバンクグループBG0,BG1に対応する2つのDRAM51,52で構成されている例を示しているが、バンクグループの数およびDRAMの数はこの例には限定されない。DRAM51,52はそれぞれ、複数のバンクBank0,Bank1,Bank2,Bank3を有している。
READマスター11,12はそれぞれ、メモリ50に対するREAD(読み出し)要求を行うものである。READマスター11,12はそれぞれ、メモリ制御部30およびDDR−PHY40を介して、メモリ50に対する読み出しアドレスを供給するようになっている。また、READマスター11,12はそれぞれ、メモリ50から読み出された読み出しデータを、DDR−PHY40およびメモリ制御部30を介して受け取るようになっている。なお、図1では、READマスターが2つで構成されている例を示しているが、READマスターの数はこの例には限定されない。
WRITEマスター21,22はそれぞれ、メモリ50に対するWRITE(書き込み)要求を行うものである。WRITEマスター21,22はそれぞれ、メモリ制御部30およびDDR−PHY40を介して、メモリ50に対する書き込み(WRITE)アドレスを供給するようになっている。また、WRITEマスター21,22はそれぞれ、メモリ制御部30およびDDR−PHY40を介して、メモリ50に対する書き込みデータをメモリ制御部30に供給するようになっている。なお、図1では、WRITEマスターが2つで構成されている例を示しているが、WRITEマスターの数はこの例には限定されない。
メモリ制御部30は、READマスター11,12およびWRITEマスター21,22からの要求に応じて、制御コマンドを生成し、DDR−PHY40を介して、制御コマンドをメモリ50に供給するものである。なお、制御コマンドとしては、READコマンド、WRITEコマンド、ACTコマンド、およびPREコマンドなどがある。
アービター31は、READマスター11,12およびWRITEマスター21,22からの要求を調停し、要求の順序を決定するものである。アービター31に対する要求の入出力は、一般にメモリ50へのアクセスを行うプロトコル、例えばAHB(Advanced High-performance Bus)、AXI(Advanced eXtensible Interface)、またはOCP(Open Core Protocol)などで規定される。
メモリコントローラ32は、アービター31からの指示に基づいてメモリ50の動作を制御するものである。メモリコントローラ32は、アービター31からの出力をDRAMアクセスプロトコルに変換し、制御コマンドを生成するようになっている。
DDR−PHY40は、メモリコントローラ32とメモリ50の各DRAM51,52との間を接続する物理層のインタフェースである。DDR−PHY40は図示しないI/O端子を介して各DRAM51,52に接続されてもよい。
[1.2 動作]
このメモリバスシステム1では、メモリ制御部30が、バンクグループインターリーブを行わずに複数の制御コマンドを発行する第1の発行モードと、バンクグループインターリーブを行って複数の制御コマンドを発行する第2の発行モードとを選択的に用いて、メモリ50における複数のバンクグループBGO,BG1に対して制御コマンドを発行する。
メモリ制御部30は、複数のバンクグループに対して、制御コマンドとして、WRITEコマンドおよびREADコマンドのうち少なくとも一方を複数回、発行する。
メモリ50は、複数の制御コマンドが同じバンクグループに対して連続的に発行された場合(バンクグループインターリーブを行わずに発行された場合)と、複数の制御コマンドが異なる2以上のバンクグループに対して交互に発行された場合(バンクグループインターリーブを行って発行された場合)とで、コマンド間隔の最小サイクル数が異なっている。
メモリ制御部30は、制御コマンドを発行する際、仕様で規定される制御コマンドのコマンド間隔に基づいて、同じバンクグループに対して複数の制御コマンドを連続的に発行する方がデータ転送効率が高いと判断される場合、第1の発行モードを選択する。また、異なる2以上のバンクグループ間で交互に複数の制御コマンドを発行する方がデータ転送効率が高いと判断される場合、第2の発行モードを選択する。
以下、図2〜図17を参照して、本実施の形態に係るメモリバスシステム1によるメモリ50に対する制御動作の具体例を説明する。
以下では、バンクグループインターリーブ(Bank Group Interleave)をBGIと略す場合がある。また、以下では、バンクグループインターリーブを行わずに複数の制御コマンドを発行する第1の発行モードをBGI−offと記す場合がある。また、以下では、バンクグループインターリーブを行って複数の制御コマンドを発行する第2の発行モードをBGI−onと記す場合がある。また、本実施の形態では、BGI−offとBGI−onとの2つのモードを総称してBGIモード、発行モード、またはバンクグループインターリーブのモードと呼ぶ。
バンクグループインターリーブのモードは、例えば以下のように決まる。
・条件1:最も先にバッファに入力されたリクエスト
・条件2:直前に発行したコマンドと異なるバンクグループ
例えば、ある時点でメモリ制御部30にバッファリングされている制御コマンドのうち、上記条件1を優先して選択する発行モードをBGI−off、上記条件2→条件1の順で優先して選択する発行モードをBGI−onとする。
なお、図2等において用いられている用語の意味は以下の通りである。
RAS・・・Row Address Strobe,ACTコマンドのこと。DRAM51,52はRowアドレスを受信する。
CAS・・・Column Address Strobe,WRITEコマンドまたはREADコマンドのこと。DRAM51,52はカラムアドレスを受信する。
BL・・・Burst Length
CL・・・CAS Latency,READコマンドが有効化されてからREADデータの出力開始までの時間。RLとも書く。
CWL・・・CAS Write Latency,WRITEコマンドが有効化されてからWRITEデータの入力開始までの時間。WLとも書く。
BC・・・Burst Chop
tRCD・・・RAS# to CAS# Delay
tRP・・・RAS# Precharge time
tCCD・・・CAS# to CAS# Delay
tWR・・・Write Recovery time
tWTR・・・Write To Read delay
tRRD・・・RAS# to RAS# Delay
tFAW・・・Four Activate Window delay
_S・・・Short
_L・・・Long
ここでは、メモリ50のDRAM51,52がDDR4−2400の規格である場合を例に説明する。BL=8、16bit I/Oであるものとすると、WRITEコマンド1回あたり、8×16=128bitのデータをDRAM51,52にWRITEする。また、DRAM51,52の同一バンクに2コマンド、8バンクを順にアクセスするアクセスパターンを想定する。この場合、128bit×2×8=4096bit単位のアクセスとなる。このアクセスパターンは4096bitごとにOpenするRowアドレスを自由に選択してもデータ転送効率は一定に維持することができるので、ランダム・アクセスの最小単位と考えることができる。以下、これを「基本アクセスパターン」と呼称する。
DDR4−2400のコマンド間隔の制約をDDR4の規格書から読み取ると、CL=16,tRCD=16,tRP=16,tFAW=36,tRRD_S=7,tRRD_L=8,tCCD_S=4,tCCD_L=6,tWTR_S=3,tWTR_L=9,tWR=18,CWL=16,tRTP=9となる。単位は特に書かない限りクロック数である。
(1.2.1 READのみの場合の制御動作)
まず、図2〜図4を参照して、READのみを行う場合の制御動作の具体例を説明する。
図2は、バンクグループインターリーブを行い、かつREADのみを行う場合の制御コマンドの発行タイミングの第1の例を示している。図3は、バンクグループインターリーブを行い、かつREADのみを行う場合の制御コマンドの発行タイミングの第2の例を示している。図4は、バンクグループインターリーブを行わず、かつREADのみを行う場合の制御コマンドの発行タイミングの一例を示している。
BGI−onのとき、基本アクセスパターンにおいて、72クロックに16回のREADコマンドを発行できる。これは、tFAW=36の間にACTを4回、各バンクにREADコマンド2回なので、READコマンドを計8回発行できることによる。このため、最高で32/36=88.9%のデータ転送効率を出すことができる。
図4に示したように、BGI−offのとき、tCCD_L+tCCD_S=10クロック間にREADコマンドを2回発行できるので、最高で8/10=80%のデータ転送効率を出すことができる。このため、READを行うときはBGI−onを選択する方が高いデータ転送効率を得ることができる。
なお、図2はBank0のパターンを8クロックずらしてBank1のパターンとした例であるが、図2の例では、ACTコマンドとREADコマンドとが衝突している。このため、Bank1とBank3のリクエストを1クロックずらして衝突をなくした例が図3の例である。なお、PREコマンドはAutoPrecharge付きREAD/WRITEコマンドで隠蔽できるので、衝突を回避するためのずらしは行わなくてよい。
(1.2.2 WRITEのみの場合の制御動作)
次に、図5、および図6を参照して、WRITEのみを行う場合の制御動作の具体例を説明する。
図5は、バンクグループインターリーブを行い、かつWRITEのみを行う場合の制御コマンドの発行タイミングの一例を示している。図6は、バンクグループインターリーブを行わず、かつWRITEのみを行う場合の制御コマンドの発行タイミングの一例を示している。
BGI−onのとき、基本アクセスパターンにおいて、81クロックに16回のWRITEコマンドを発行できるので、最高で64/81=79.0%のデータ転送効率を出すことができる。BGI−offのとき、tCCD_L+tCCD_S=10クロック間にWRITEコマンドを2回発行できるので、最高で8/10=80%のデータ転送効率を出すことができる。このため、WRITEを行うときはBGI−offを選択する方が高いデータ転送効率を得ることができる。
(1.2.3 WRITEおよびREADを含む場合の制御動作)
メモリ制御部30は、WRITEコマンドからREADコマンドへの切り替わりまでと、READコマンドからWRITEコマンドへの切り替わりまでのWRITEコマンドおよびREADコマンドのコマンド数を計測し、WRITEコマンドに挟まれたREADコマンドのコマンド発行数が、所定の値以上の場合は第2の発行モードを選択してREADコマンドを発行する。また、所定の値未満の場合はREADコマンドを発行する直前のWRITEコマンドと同じ発行モードを選択してREADコマンドを発行する。
また、メモリ制御部30は、READコマンドからWRITEコマンドへの切り替わりまでと、WRITEコマンドからREADコマンドへの切り替わりまでのWRITEコマンドおよびREADコマンドのコマンド数を計測し、READコマンドに挟まれた連続するWRITEコマンドのコマンド発行数が、所定の値以上の場合は第1の発行モードを選択してWRITEコマンドを発行する。また、所定の値未満の場合はWRITEコマンドを発行する直前のREADコマンドと同じ発行モードを選択してWRITEコマンドを発行する。
以下、図7〜図17を参照して、WRITEおよびREADの双方を行う場合の制御動作の具体例を説明する。
図7は、WRITEからREADへの切り替わりのタイミングの第1の例を示している。図7の上段には、BGI−onでWRITEを行い、続いて、BGI−onでREADを行う第1の例を示す。図7の下段には、BGI−offでWRITEを行い、続いて、BGI−onでREADを行う第1の例を示す。なお、図7では、WRITEからREADへの切り替わりにおいて、ACTコマンドとPREコマンドとを発行しない場合の例を示している。
図8は、WRITEからREADへの切り替わりのタイミングの第2の例を示している。図8の上段には、BGI−onでWRITEを行い、続いて、BGI−onでREADを行う第2の例を示す。図8の下段には、BGI−onでWRITEを行い、続いて、BGI−offでREADを行う第2の例を示す。
図9は、WRITEからREADへの切り替わりのタイミングの第3の例を示している。図9には、BGI−offでWRITEを行い、続いて、BGI−onでREADを行う例を示す。図10は、WRITEからREADへの切り替わりのタイミングの第4の例を示している。図10には、BGI−onでWRITEを行い、続いて、BGI−onでREADを行う例を示す。
DRAM51,52は双方向I/Oでデータを半二重で転送する。このため、上述したREADまたはWRITEのみの場合のデータ転送効率を達成するためには、READやWRITEを可能な限り連続して行うことが前提となる。READからWRITEまたはWRITEからREADに切り替わる際にはデータピンのドライブ方向を切り替えるため、無効な(データ転送が行えない)時間が発生するためである。しかしメモリバスに対するシステム要求によっては、READに比べてWRITE要求が著しく少ないが、WRITE要求を待たせることができない場合など、連続するREADの途中に短いWRITEを行う必要が生じる場合がある。逆に、連続するWRITEの途中に短いREADを行う必要が生じる場合もある。これらの場合において、BGI−offで比較的長いWRITEが続いた後、短いREADでBGI−onへとBGIモードを切り替えるとデータ転送効率が悪化することがある。また、BGI−onで比較的長いREADが続いた後、短いWRITEでBGI−offへとBGIモードを切り替える場合などでもデータ転送効率が悪化することがある。
WRITEからREADに切り替わる際には、最後のWRITEコマンドから次のREADコマンドまでの間隔がDRAM規格により規定されている。このため、WRITEからREADへ切り替わる際、最後のWRITEコマンドが遅れた分だけREADコマンド発行を遅らせる必要がある。WRITEの開始から終了までを比較すると、BGI−onの方がBGI−offよりもより早くWRITEコマンド発行が終了する。このため、連続するBGI−onのREADの途中に短いWRITEを行う場合は、WRITEのときもBGI−onを選択した方がデータ転送効率がよい。また、連続するBGI−offのWRITEの途中に短いREADを行う場合は、READのときもBGI−offを選択した方がデータ転送効率がよい。
ここで、図11〜図14を参照して、連続するBGI−offのWRITEの途中において短いREADを行う場合のデータ転送効率について説明する。
図11は、バンクグループインターリーブを行い、かつREADのみを行う場合の制御コマンドの発行タイミングの一例を示している。図12は、バンクグループインターリーブを行わず、かつWRITEのみを行う場合の制御コマンドの発行タイミングの一例を示している。図13は、図11および図12のタイミング図を簡略化して示している。上述したように、READのみを行う場合、BGI−onとし複数のバンクグループ間で交互にREADコマンドを発行する方がデータ転送効率がよい。また、WRITEのみを行う場合、BGI−offとし複数のバンクグループ間で交互にWRITEコマンドを発行する方がデータ転送効率がよい。
図14には、BGI−offのWRITEとBGI−offのWRITEの間においてREADを行う際に、READをBGI−onとした場合(図14の上段)とBGI−offとした場合(図14の下段)とを比較して示している。BGI−onとした方が、READだけの期間は短い。しかしながら、WRITEとの切り替えに要する時間を考慮すると、結果として、BGI−offとした方が、READからWRITEへの切り替えタイミングが早くなり、READの後のWRITEコマンドを早く発行できる。
なお、READまたはWRITEを行う際に、BGIモードを切り替える場合、DRAM51,52とメモリコントローラ32との間のデータの読み出し順序または書き込み順序と、メモリコントローラ32とバスマスターとの間のデータの転送順序とを調整する必要があり得る。
図15は、READを行う際に、バンクグループインターリーブを行う場合と行わない場合とのコマンド発行パターンを比較して示している。図16は、図15のコマンド発行パターンに対応したDRAM51,52とメモリコントローラ32との間のデータの読み出し順序と、メモリコントローラ32とREADマスター11,12との間のデータの転送順序との一例を示す。図15および図16において、上段はBGI−onの場合、下段はBGI−offの場合を示す。例えば図15および図16の上段に示したように、BGI−onの場合、DRAM51,52(バンクグループBG0,BG1)からデータが交互に読み出される。メモリコントローラ32は、バンクグループBG0,BG1からのそれぞれのデータが連続するようにデータの配列を調整してREADマスター11,12に転送する。
以上で説明したようなBGIモードの切り替えを行う場合、BGI−offとBGI−onとのいずれを選択するかは、アービター31またはメモリコントローラ32で決定する。
図17に、アービター31でBGIモードの切り替えを行う場合の動作例を示す。図17には、上段から順に、READマスター11(READマスター#1)の要求のタイミングと、READマスター12(READマスター#2)の要求のタイミングと、WRITEマスター21(WRITEマスター#1)の要求のタイミングと、WRITEマスター22(WRITEマスター#2)の要求のタイミングとを示す。図17には、さらに、READマスター11,12とWRITEマスター21,22とからの要求に基づく、アービター31から出力される要求のタイミングを示す。READの要求はR#、WRITEの要求はW#と記す。図17の最下段には、アービター31によって選択されるBGIモードの種類をon,offで示す。
メモリバスシステム1において、通常、アービター31で複数のバスマスター間のアクセス調停順序が決定された後は変更されることがない。すなわち、通常、「READやWRITEを可能な限り連続して行う」などの機能はアービター31で実現する。アービター31は、READまたはWRITEの切り替わり時刻をトリガーとして時刻をカウントするタイマーを保持する。または、アービター31は、リクエスト数をカウントするカウンタを保持する。
READ要求、WRITE要求ともに多い場合(コマンド発行数が所定の値以上となる場合)、アービター31は、それぞれもっともデータ転送効率のよいBGIモードを選択する。例えばDDR4−2400の例では、READはBGI−on、WRITEはBGI−offを選択する。
READ要求は多いが、WRITE要求が少ない場合(WRITEコマンド発行数が所定の値未満となる場合)、アービター31は、READがデータ転送効率のよいBGIモードを選択する。例えばDDR4−2400の例では、BGI−onを選択する。
WRITE要求は多いが、READ要求が少ない場合(READコマンド発行数が所定の値未満となる場合)、アービター31は、WRITEがデータ転送効率のよいBGIモードを選択する。例えばDDR4−2400の例では、BGI−offを選択する。
READ要求もWRITE要求も少ない場合(コマンド発行数が所定の値未満となる場合)は、そもそも有効データが少ないため効率が高くならないのでBGIモードはどちらでもよい。
READ要求やWRITE要求がどれだけ連続したときBGIモードのon/offを切り替えるか判定するとき、損益分岐点(所定の値)が存在するが、READ要求やWRITE要求がどれだけ連続するか未来を予測することは難しい。図17には、BGIモード決定まで一定リクエストをバッファリングしてBGIモードの決定を留保する例を示す。
図17のT0において、アービター31は、WRITEマスター#1の要求を出力するとき、READマスター#1の要求がgrant(許可)されているので、WRITE要求はBGI−onとする。T1において、アービター31は、READマスター#1の要求を出力するとき、READマスター#1の要求がgrantされているので、READ要求はBGI−onとする。T2において、アービター31は、WRITEマスター#1の要求を出力するとき、どの要求もgrantされていないので、WRITE要求はBGI−offとする。
[1.3 効果]
以上のように、本実施の形態によれば、複数のバンクグループに対して制御コマンドを発行する際、バンクグループインターリーブを行うか否かを適切に選択し、制御コマンドの発行スケジュールを最適化するようにしたので、データ転送効率を向上させることができる。
なお、本明細書に記載された効果はあくまでも例示であって限定されるものではなく、また他の効果があってもよい。
<2.その他の実施の形態>
本開示による技術は、上記実施の形態の説明に限定されず種々の変形実施が可能である。
例えば、本技術は以下のような構成を取ることができる。
(1)
バンクグループインターリーブを行わずに複数の制御コマンドを発行する第1の発行モードと、バンクグループインターリーブを行って複数の前記制御コマンドを発行する第2の発行モードとを選択的に用いて、バンクグループ機能を持つメモリにおける複数のバンクグループに対して前記制御コマンドを発行するメモリ制御部
を備えるメモリ制御回路。
(2)
前記メモリは、
複数の前記制御コマンドが前記同じバンクグループに対して連続的に発行された場合と、複数の前記制御コマンドが前記異なる2以上のバンクグループに対して交互に発行された場合とで、コマンド間隔の最小サイクル数が異なる
上記(1)に記載のメモリ制御回路。
(3)
前記メモリ制御部は、
複数の前記バンクグループに対して、前記制御コマンドとして、WRITEコマンドおよびREADコマンドのうち少なくとも一方を複数回、発行する
上記(1)または(2)に記載のメモリ制御回路。
(4)
前記メモリ制御部は、
前記制御コマンドを発行する際、
仕様で規定される前記制御コマンドのコマンド間隔に基づいて、
前記同じバンクグループに対して複数の前記制御コマンドを連続的に発行する方がデータ転送効率が高いと判断される場合、前記第1の発行モードを選択し、
前記異なる2以上のバンクグループ間で交互に複数の前記制御コマンドを発行する方がデータ転送効率が高いと判断される場合、前記第2の発行モードを選択する
上記(1)ないし(3)のいずれか1つに記載のメモリ制御回路。
(5)
前記メモリ制御部は、
前記WRITEコマンドから前記READコマンドへの切り替わりまでと、前記READコマンドから前記WRITEコマンドへの切り替わりまでの前記WRITEコマンドおよび前記READコマンドのコマンド数を計測し、
前記WRITEコマンドに挟まれた前記READコマンドのコマンド発行数が、所定の値以上の場合は前記第2の発行モードを選択して前記READコマンドを発行し、
前記所定の値未満の場合は前記READコマンドを発行する直前の前記WRITEコマンドと同じ発行モードを選択して前記READコマンドを発行する
上記(1)ないし(4)のいずれか1つに記載のメモリ制御回路。
(6)
前記メモリ制御部は、
前記READコマンドから前記WRITEコマンドへの切り替わりまでと、前記WRITEコマンドから前記READコマンドへの切り替わりまでの前記WRITEコマンドおよび前記READコマンドのコマンド数を計測し、
前記READコマンドに挟まれた連続する前記WRITEコマンドのコマンド発行数が、所定の値以上の場合は前記第1の発行モードを選択して前記WRITEコマンドを発行し、
前記所定の値未満の場合は前記WRITEコマンドを発行する直前の前記READコマンドと同じ発行モードを選択して前記WRITEコマンドを発行する
上記(1)ないし(5)のいずれか1つに記載のメモリ制御回路。
(7)
バンクグループインターリーブを行わずに複数の制御コマンドを発行する第1の発行モードと、バンクグループインターリーブを行って複数の前記制御コマンドを発行する第2の発行モードとを選択的に用いて、バンクグループ機能を持つメモリにおける複数のバンクグループに対して前記制御コマンドを発行する
メモリ制御方法。
1…メモリバスシステム、11,12…READマスター、21,22…WRITEマスター、30…メモリ制御部、31…アービター、32…メモリコントローラ、40…DDR−PHY、50…メモリ、51,52…DRAM。

Claims (7)

  1. バンクグループインターリーブを行わずに複数の制御コマンドを発行する第1の発行モードと、バンクグループインターリーブを行って複数の前記制御コマンドを発行する第2の発行モードとを選択的に用いて、バンクグループ機能を持つメモリにおける複数のバンクグループに対して前記制御コマンドを発行するメモリ制御部
    を備えるメモリ制御回路。
  2. 前記メモリは、
    複数の前記制御コマンドが前記同じバンクグループに対して連続的に発行された場合と、複数の前記制御コマンドが前記異なる2以上のバンクグループに対して交互に発行された場合とで、コマンド間隔の最小サイクル数が異なる
    請求項1に記載のメモリ制御回路。
  3. 前記メモリ制御部は、
    複数の前記バンクグループに対して、前記制御コマンドとして、WRITEコマンドおよびREADコマンドのうち少なくとも一方を複数回、発行する
    請求項1に記載のメモリ制御回路。
  4. 前記メモリ制御部は、
    前記制御コマンドを発行する際、
    仕様で規定される前記制御コマンドのコマンド間隔に基づいて、
    前記同じバンクグループに対して複数の前記制御コマンドを連続的に発行する方がデータ転送効率が高いと判断される場合、前記第1の発行モードを選択し、
    前記異なる2以上のバンクグループ間で交互に複数の前記制御コマンドを発行する方がデータ転送効率が高いと判断される場合、前記第2の発行モードを選択する
    請求項1に記載のメモリ制御回路。
  5. 前記メモリ制御部は、
    前記WRITEコマンドから前記READコマンドへの切り替わりまでと、前記READコマンドから前記WRITEコマンドへの切り替わりまでの前記WRITEコマンドおよび前記READコマンドのコマンド数を計測し、
    前記WRITEコマンドに挟まれた前記READコマンドのコマンド発行数が、所定の値以上の場合は前記第2の発行モードを選択して前記READコマンドを発行し、
    前記所定の値未満の場合は前記READコマンドを発行する直前の前記WRITEコマンドと同じ発行モードを選択して前記READコマンドを発行する
    請求項1に記載のメモリ制御回路。
  6. 前記メモリ制御部は、
    前記READコマンドから前記WRITEコマンドへの切り替わりまでと、前記WRITEコマンドから前記READコマンドへの切り替わりまでの前記WRITEコマンドおよび前記READコマンドのコマンド数を計測し、
    前記READコマンドに挟まれた連続する前記WRITEコマンドのコマンド発行数が、所定の値以上の場合は前記第1の発行モードを選択して前記WRITEコマンドを発行し、
    前記所定の値未満の場合は前記WRITEコマンドを発行する直前の前記READコマンドと同じ発行モードを選択して前記WRITEコマンドを発行する
    請求項1に記載のメモリ制御回路。
  7. バンクグループインターリーブを行わずに複数の制御コマンドを発行する第1の発行モードと、バンクグループインターリーブを行って複数の前記制御コマンドを発行する第2の発行モードとを選択的に用いて、バンクグループ機能を持つメモリにおける複数のバンクグループに対して前記制御コマンドを発行する
    メモリ制御方法。
JP2015102625A 2015-05-20 2015-05-20 メモリ制御回路およびメモリ制御方法 Pending JP2016218721A (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2015102625A JP2016218721A (ja) 2015-05-20 2015-05-20 メモリ制御回路およびメモリ制御方法
US15/570,905 US10430113B2 (en) 2015-05-20 2016-04-26 Memory control circuit and memory control method
PCT/JP2016/062997 WO2016185879A1 (ja) 2015-05-20 2016-04-26 メモリ制御回路およびメモリ制御方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2015102625A JP2016218721A (ja) 2015-05-20 2015-05-20 メモリ制御回路およびメモリ制御方法

Publications (1)

Publication Number Publication Date
JP2016218721A true JP2016218721A (ja) 2016-12-22

Family

ID=57320268

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015102625A Pending JP2016218721A (ja) 2015-05-20 2015-05-20 メモリ制御回路およびメモリ制御方法

Country Status (3)

Country Link
US (1) US10430113B2 (ja)
JP (1) JP2016218721A (ja)
WO (1) WO2016185879A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPWO2018216081A1 (ja) * 2017-05-22 2020-03-26 ゼンテルジャパン株式会社 半導体記憶システム

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6883764B2 (ja) * 2018-09-28 2021-06-09 パナソニックIpマネジメント株式会社 コマンド制御システム、車両、コマンド制御方法及びプログラム
CN110209597B (zh) * 2019-05-24 2021-10-15 北京百度网讯科技有限公司 处理访问请求的方法、装置、设备和存储介质
JP2023150543A (ja) * 2022-03-31 2023-10-16 ソニーセミコンダクタソリューションズ株式会社 メモリ制御装置
KR20240009812A (ko) * 2022-07-14 2024-01-23 삼성전자주식회사 프리페치 기능을 지원하는 스토리지 모듈 및 그것의 동작 방법
KR20240009813A (ko) * 2022-07-14 2024-01-23 삼성전자주식회사 단일 직렬 쓰기 인터페이싱 방식을 지원하는 스토리지 모듈 및 그것의 동작 방법
US11983164B1 (en) 2022-11-17 2024-05-14 Bank Of America Corporation System and method for data community detection via data network telemetry

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0823843B2 (ja) * 1991-10-11 1996-03-06 インターナショナル・ビジネス・マシーンズ・コーポレイション メモリ・コントローラ、及びデータ処理システム
WO1999046775A2 (en) * 1998-03-10 1999-09-16 Rambus, Inc. Performing concurrent refresh and current control operations in a memory subsystem
US6912616B2 (en) 2002-11-12 2005-06-28 Hewlett-Packard Development Company, L.P. Mapping addresses to memory banks based on at least one mathematical relationship
JP3950831B2 (ja) * 2003-09-16 2007-08-01 エヌイーシーコンピュータテクノ株式会社 メモリインタリーブ方式
US7535383B2 (en) 2006-07-10 2009-05-19 Sharp Laboratories Of America Inc. Methods and systems for signaling multi-layer bitstream data
JP2008152687A (ja) 2006-12-20 2008-07-03 Matsushita Electric Ind Co Ltd メモリコントローラ
JP5391833B2 (ja) 2009-05-27 2014-01-15 富士通セミコンダクター株式会社 メモリコントローラ、システムおよび半導体メモリのアクセス制御方法
US9432298B1 (en) * 2011-12-09 2016-08-30 P4tents1, LLC System, method, and computer program product for improving memory systems
US9338465B2 (en) 2011-06-30 2016-05-10 Sharp Kabushiki Kaisha Context initialization based on decoder picture buffer
US9484952B2 (en) 2011-11-03 2016-11-01 Qualcomm Incorporated Context state and probability initialization for context adaptive entropy coding
US8762607B2 (en) * 2012-06-29 2014-06-24 Intel Corporation Mechanism for facilitating dynamic multi-mode memory packages in memory systems
KR20150017526A (ko) 2013-08-07 2015-02-17 삼성전자주식회사 메모리 명령 스케줄러 및 메모리 명령 스케줄링 방법
US9720825B2 (en) * 2014-12-19 2017-08-01 Dell Products, Lp System and method for performance optimal partial rank/bank interleaving for non-symmetrically populated DIMMs across DDR channels
US10192608B2 (en) * 2017-05-23 2019-01-29 Micron Technology, Inc. Apparatuses and methods for detection refresh starvation of a memory

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPWO2018216081A1 (ja) * 2017-05-22 2020-03-26 ゼンテルジャパン株式会社 半導体記憶システム
JP7130634B2 (ja) 2017-05-22 2022-09-05 ゼンテルジャパン株式会社 半導体記憶システム

Also Published As

Publication number Publication date
US20180357009A1 (en) 2018-12-13
US10430113B2 (en) 2019-10-01
WO2016185879A1 (ja) 2016-11-24

Similar Documents

Publication Publication Date Title
WO2016185879A1 (ja) メモリ制御回路およびメモリ制御方法
US6675269B2 (en) Semiconductor device with memory controller that controls page mode access
US9293188B2 (en) Memory and memory controller for high reliability operation and method
EP1488323B1 (en) Memory system with burst length shorter than prefetch length
JP5430484B2 (ja) 半導体記憶装置、及びその制御方法
US20120079180A1 (en) DRAM Controller and a method for command controlling
JP2006260472A (ja) メモリアクセス装置
CN101788963A (zh) Dram存储控制方法及装置
JP5391833B2 (ja) メモリコントローラ、システムおよび半導体メモリのアクセス制御方法
US7373453B2 (en) Method and apparatus of interleaving memory bank in multi-layer bus system
JP2002305437A5 (ja)
KR20240024197A (ko) 다중-랭크 메모리 제어기에서의 효율적인 랭크 스위칭
WO2009125572A1 (ja) メモリ制御回路及びメモリ制御方法
KR20080069298A (ko) 반도체 메모리 장치 및 그의 동작 제어방법
CN102708059A (zh) 提高sdram数据传输效率的方法
WO2016185878A1 (ja) メモリ制御回路およびメモリ制御方法
US7103707B2 (en) Access control unit and method for use with synchronous dynamic random access memory device
US20070121398A1 (en) Memory controller capable of handling precharge-to-precharge restrictions
JP2003316642A (ja) メモリ制御回路、dma要求ブロック及びメモリアクセスシステム
JP4936489B2 (ja) 半導体装置
JP2011159341A (ja) メモリ制御回路
JP3563340B2 (ja) メモリコントローラ
JP2014093030A (ja) Sdramコントローラ