JP2023069039A - メモリアクセスコントローラ及びメモリアクセスコントロール方法 - Google Patents
メモリアクセスコントローラ及びメモリアクセスコントロール方法 Download PDFInfo
- Publication number
- JP2023069039A JP2023069039A JP2021180595A JP2021180595A JP2023069039A JP 2023069039 A JP2023069039 A JP 2023069039A JP 2021180595 A JP2021180595 A JP 2021180595A JP 2021180595 A JP2021180595 A JP 2021180595A JP 2023069039 A JP2023069039 A JP 2023069039A
- Authority
- JP
- Japan
- Prior art keywords
- request
- issuing
- refresh
- scrubbing
- command
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C11/00—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
- G11C11/21—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements
- G11C11/34—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices
- G11C11/40—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors
- G11C11/401—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors forming cells needing refreshing or charge regeneration, i.e. dynamic cells
- G11C11/406—Management or control of the refreshing or charge-regeneration cycles
- G11C11/40615—Internal triggering or timing of refresh, e.g. hidden refresh, self refresh, pseudo-SRAMs
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C11/00—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
- G11C11/21—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements
- G11C11/34—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices
- G11C11/40—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors
- G11C11/401—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors forming cells needing refreshing or charge regeneration, i.e. dynamic cells
- G11C11/406—Management or control of the refreshing or charge-regeneration cycles
- G11C11/40603—Arbitration, priority and concurrent access to memory cells for read/write or refresh operations
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C11/00—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
- G11C11/21—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements
- G11C11/34—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices
- G11C11/40—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors
- G11C11/401—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors forming cells needing refreshing or charge regeneration, i.e. dynamic cells
- G11C11/406—Management or control of the refreshing or charge-regeneration cycles
- G11C11/40611—External triggering or timing of internal or partially internal refresh operations, e.g. auto-refresh or CAS-before-RAS triggered refresh
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C11/00—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
- G11C11/21—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements
- G11C11/34—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices
- G11C11/40—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors
- G11C11/401—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors forming cells needing refreshing or charge regeneration, i.e. dynamic cells
- G11C11/406—Management or control of the refreshing or charge-regeneration cycles
- G11C11/40618—Refresh operations over multiple banks or interleaving
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C7/00—Arrangements for writing information into, or reading information out from, a digital store
- G11C7/10—Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
- G11C7/1051—Data output circuits, e.g. read-out amplifiers, data output buffers, data output registers, data output level conversion circuits
- G11C7/1063—Control signal output circuits, e.g. status or busy flags, feedback command signals
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C7/00—Arrangements for writing information into, or reading information out from, a digital store
- G11C7/10—Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
- G11C7/1078—Data input circuits, e.g. write amplifiers, data input buffers, data input registers, data input level conversion circuits
- G11C7/109—Control signal input circuits
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C2211/00—Indexing scheme relating to digital stores characterized by the use of particular electric or magnetic storage elements; Storage elements therefor
- G11C2211/401—Indexing scheme relating to cells needing refreshing or charge regeneration, i.e. dynamic cells
- G11C2211/406—Refreshing of dynamic cells
- G11C2211/4062—Parity or ECC in refresh operations
Landscapes
- Engineering & Computer Science (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Computer Hardware Design (AREA)
- Dram (AREA)
- Memory System (AREA)
- For Increasing The Reliability Of Semiconductor Memories (AREA)
Abstract
【課題】ユーザ要求のメモリアクセスのスループットの低下を抑制するメモリアクセスコントローラを提供する。【解決手段】入力されるメモリ要求に応答してユーザ要求を発行し、第1の発行間隔でリフレッシュ要求を発行し、第2の発行間隔でスクラビング要求を発行する要求発行部と、ユーザ要求実行時、ロウコマンドバスを介してアクティブを、アクティブ発行後コラムコマンドバスを介してM回のリードをメモリにそれぞれ発行し、リフレッシュ要求実行時、ロウコマンドバスを介してリフレッシュをメモリに発行し、スクラビング要求実行時、ロウコマンドバスを介してアクティブを、アクティブ発行後前記コラムコマンドバスを介してMより大きいN回のリードをメモリにそれぞれ発行するコマンド発行部とを有する、メモリアクセスコントローラ。【選択図】図5
Description
本発明は、メモリアクセスコントローラ及びメモリアクセスコントロール方法
に関する。
に関する。
メモリアクセスコントローラ(Memory Access Controller:MAC、以下MACと称する。)は、プロセッサコアやキャッシュ回路から発行されるメモリ要求に応答して、メモリの仕様に対応したコマンドを発行してメモリ要求を制御する。メモリ要求は、例えばアプリケーションプログラムによるメモリアクセス要求であり、主としてリード要求、ライト要求等が含まれる。このようなプロセッサコアやキャッシュ回路から発行されるメモリ要求を、以下、ユーザメモリ要求またはユーザ要求と称する。
一方、MACは、ユーザ要求以外に、メモリ内に記憶されたデータを維持するためにメモリ要求を発行する。このようなメモリ要求は、ダイナミックランダムアクセスメモリ(Dynamic Randum Access Memory:DRAM)の構造上の理由から行われ、例えば、リフレッシュ要求やスクラビング要求などである。
リフレッシュは、DRAMのセルキャパシタの電荷状態の消失を防ぐために電荷状態が消失する前に記憶データを読み出して再書き込みする処理である。スクラビングは、メモリチップにα線などの宇宙線等が照射されたことに起因してビット反転した記憶データを検出し、データの誤り訂正を行う処理である。リフレッシュは、メモリの全セルに対して第1の所定時間以内に実行される必要がある。同様に、スクラビングは、メモリの全セルに対して第2の所定時間以内に実行される必要がある。
MACは、ロウコマンドバス(Row Command Bus)を介してロウコマンドを、コラムコマンドバス(Column Command Bus)を介してコラムコマンドを、メモリに発行する。また、MACは、データバスを介して、メモリに対するデータの入力(読出し)と出力(書込み)を行う。
リフレッシュの場合、MACはロウコマンド(Row Command)であるアクティブを発行し、メモリのワード線を駆動しセルの電荷状態を増幅しセルの電荷状態をリフレッシュする。リフレッシュでは、MACはコラムコマンド(Column Command)の発行を行う必要はない。スクラビングの場合、MACはロウコマンドのアクティブを発行し、更にコラムコマンドのリードを発行してセルのデータを読み出す。そして、MACは読みだしたデータの誤りを検出し、誤り訂正したデータをセルに書き込む。この書き込みでは、MACはアクティブを発行し、更にコラムコマンドであるライトを発行する。
以下の特許文献は、MACによるメモリアクセス制御について開示する。
ユーザ要求の場合、MACは、ロウコマンドバスを介してアクティブを発行しメモリのワード線を駆動し、コラムコマンドバスを介してリードをアクセス長に対応する回数発行しデータをメモリから読み出す。MACは、連続アクセス時のスループットの低下を考慮して、固定のアクセス長でユーザ要求のメモリアクセスを制御する。例えば、ユーザ要求のメモリアクセスをアクセス長4で行う場合、MACは、1回のアクティブに対してリードを4回発行する。例えば、ソフトウエアの要求アクセス長に応じて、ハードウエアのMACは、固定のアクセス長でユーザ要求のメモリアクセスを実行する。または、例えば、MACは2回のユーザ要求のメモリアクセスを実行する。
ユーザ要求のメモリアクセスを固定のアクセス長にすることで、メモリに対するコマンドの発行タイミング制約を単純化し、MACによるメモリアクセス制御が複雑になるのを回避できる。
一方、スクラビング要求は、MACがLLCからのユーザ要求とは関係なく自発的にメモリに読出しを行う。但し、スクラビング要求による読出しもユーザ要求による読出しも、メモリに対しては同じ読出し要求である。そのため、MACは、スクラビング要求による読出しも上記の固定のアクセス長でメモリアクセスを実行する。
近年のディープラーニングの演算では、例えば、単精度や半精度等の低精度演算のように単粒度化されたメモリアクセスが増大している。増大するメモリアクセスは主に読出しである。メモリアクセスの頻度が増加すると、ユーザ要求によるアクティブの発行頻度が増加する。
一方、メモリの容量の増大に伴い単位時間当たりのリフレッシュ回数やスクラビング回数が増加する。リフレッシュやスクラビングの回数又は頻度の増加も、アクティブの発行頻度の増加を招く。
その結果、ユーザ要求によるアクティブ発行頻度の増加は、ロウコマンドバスのボトルネックを誘発し、ユーザ要求によるメモリアクセスのスループットの低下を招く。更に、メモリ容量が増大した場合、それに伴うリフレッシュ要求やスクラビング要求によるアクティブ発行頻度が増加し、ロウコマンドバスのボトルネックを招く。その結果、リフレッシュやスクラビングのアクティブ発行によりユーザ要求によるアクティブが阻害され、ユーザ要求のアクティブを発行できないという制約を受ける。リフレッシュやスクラビングはメモリのデータ保存に必要な処理であり、それらのアクティブの発行を減らせないからである。この場合ユーザ要求のスループットの低下を招く。
そこで、本実施の形態の第1の側面の目的は、ユーザ要求のメモリアクセスのスループットの低下を抑制するメモリアクセスコントローラ及びメモリアクセスコントロール方法を提供することにある。
本実施の形態の第1の側面は、入力されるメモリ要求に応答してユーザ要求を発行し、第1の発行間隔でリフレッシュ要求を発行し、第2の発行間隔でスクラビング要求を発行する要求発行部と、
前記ユーザ要求のメモリアクセスを実行するとき、ロウコマンドバスを介してアクティブをメモリに発行し、前記アクティブ発行後コラムコマンドバスを介してM回のリードを前記メモリに発行し、
前記リフレッシュ要求の前記メモリアクセスを実行するとき、前記ロウコマンドバスを介してリフレッシュを前記メモリに発行し、
前記スクラビング要求の前記メモリアクセスを実行するとき、前記ロウコマンドバスを介して前記アクティブを前記メモリに発行し、前記アクティブ発行後前記コラムコマンドバスを介して前記Mより大きいN回のリードを前記メモリに発行する、コマンド発行部とを有する、メモリアクセスコントローラである。
前記ユーザ要求のメモリアクセスを実行するとき、ロウコマンドバスを介してアクティブをメモリに発行し、前記アクティブ発行後コラムコマンドバスを介してM回のリードを前記メモリに発行し、
前記リフレッシュ要求の前記メモリアクセスを実行するとき、前記ロウコマンドバスを介してリフレッシュを前記メモリに発行し、
前記スクラビング要求の前記メモリアクセスを実行するとき、前記ロウコマンドバスを介して前記アクティブを前記メモリに発行し、前記アクティブ発行後前記コラムコマンドバスを介して前記Mより大きいN回のリードを前記メモリに発行する、コマンド発行部とを有する、メモリアクセスコントローラである。
第1の側面によれば、ユーザ要求のメモリアクセスのスループットの低下を抑制する。
図1は、本実施の形態のメモリアクセスコントローラ、MAC、を有するプロセッサCPUの構成例を示す図である。プロセッサCPUは、例えばセントラルプロセッシングユニットである。プロセッサCPUは、複数、例えば8個、のプロセッサコアCORE(以下単にコアと称する。)を有する。コアCOREは、例えば、命令デコーダと、デコードされた命令を実行する演算器と、レベル1(L1)のキャッシュユニット等を有し、プログラムの実行に伴いメモリアクセスを要求するメモリ要求を発行する。
プロセッサは、更に、例えば複数のコアのL1キャッシュにより共有されるラストレベルキャッシュユニットLLCと、メモリMEMに対するメモリ要求を制御するMACを有する。図1では、MACはプロセッサCPUのチップ内に設けられている。但し、MACがプロセッサCPUのチップ外に設けられても良い。
LLCは、プロセッサコアから発行されたメモリ要求についてキャッシュミスを検出すると、MACにメモリ要求を発行する。LLCがMACに発行する要求を、MAC自身が発行するスクラビング要求やリフレッシュ要求等のメモリ要求と区別するために、ユーザ要求USR_REQと称する。
MACは、メモリMEMに対するメモリ要求の制御として、ロウコマンドバスR_CMD_BSを介してロウコマンドR_CMDを、コラムコマンドバスC_CMD_BSを介してコラムコマンドC_CDMをそれぞれ発行する。更に、MACは、メモリMEMとデータバスDQ_BSで接続され、データバスDQ_BSを介して、リードの場合はメモリMEMからデータを受信し、ライトの場合はメモリMEMにデータを送信する。
図1には、メモリMEMの構成の概略が示される。メモリは、複数、例えば4つ、のバンクグループBGを有し、各バンクグループを特定するバンクグループアドレスは、BG[1:0]の2ビットである。図1には示していないが、各バンクグループBG内に、複数、例えば8つ、のバンクを有し、各バンクを特定するバンクアドレスは、BA[2:0]の3ビットである。そして、各バンク内には、複数のワード線と複数のビット線を有し、ワード線とビット線の交差位置にデータを記憶するセルが配置される。ワード線を特定するロウアドレスRAと、ビット線を特定するコラムアドレスCAとにより、各セルが特定される。アクセスの最小単位を特定するアドレスをadrsと称する。本明細書では、ba[4:0]は、バンクを特定するアドレスであり、ba[4:0] = BG[1:0], BA[2:0]である。
本実施の形態では、前提として、MACによるメモリMEMへのメモリアクセス制御は、クローズページメモリアクセス制御方式である。クローズページメモリアクセス制御方式では、ロウコマンドのアクティブを発行してワード線を駆動し、コラムコマンドのリードやライトを発行してデータの読出しまたは書込みを行い、最後にプリチャージを発行してワード線の駆動を終了する。その後、メモリに新たなアクティブを印加することで次のメモリアクセスが行われる。したがって、1つのメモリ要求は、アクティブで始まりプリチャージで終了する。
[メモリアクセス制御におけるユーザ要求がリフレッシュ要求とスクラビング要求により阻害される例]
図2Aと図2Bは、メモリアクセス制御例のタイミングチャートを示す図である。このメモリアクセス制御例によりユーザ要求がリフレッシュ要求とスクラビング要求により阻害される例を説明する。図中、クロックCLKの行にクロックの番号1、2~75が示される。つまり、図2Aと図2Bそれぞれで上下2段に分け、トータルで4段の連続するタイミングチャートが示される。
図2Aと図2Bは、メモリアクセス制御例のタイミングチャートを示す図である。このメモリアクセス制御例によりユーザ要求がリフレッシュ要求とスクラビング要求により阻害される例を説明する。図中、クロックCLKの行にクロックの番号1、2~75が示される。つまり、図2Aと図2Bそれぞれで上下2段に分け、トータルで4段の連続するタイミングチャートが示される。
図3は、図2Aと図2Bに示したMACのメモリアクセス制御の概略フローチャートを示す図である。MACは、スクラビング要求を実行する場合(S1のYES)、ロウコマンドバスを介してメモリにアクティブACTを発行し、その後コラムコマンドバスを介してメモリにリードRDをM回発行する(S2)。例えばM回は4回である。更に、MACは、リフレッシュ要求を実行する場合(S3のYES)、ロウコマンドバスを介してメモリにリフレッシュRefreshを発行する(S4)。コラムコマンドバスにはリード等の発行は行わない。そして、MACは、ユーザ要求を実行する場合(S5のYES)、ロウコマンドバスを介してメモリにアクティブACTを発行し、その後コラムコマンドバスを介してメモリにリードRDをM回発行する(S6)。M回はスクラビングと同じ4回である。スクラビング要求とユーザ要求は、メモリにとっては同じリードのアクセス制御である。そのため、MACのハードウエア回路は、スクラビング要求とユーザ要求のアクセス長(リードの回数)が同じM回である共通の回路動作を行う。
次に、図2Aと図2Bのタイミングチャートに示したメモリアクセス制御について、ユーザ要求、スクラビング要求、リフレッシュ要求の順に説明する。
[ユーザ要求]
第1に、ユーザ要求の場合のアクティブ、リード、データ端子であるDQ端子について説明する。クロックCLK1、CLK2で、MACは1番目のユーザ要求のアクティブACT BG0_uを発行する。このアクティブは、バンクグループBG0に対するアクティブである。アクティブの符号ACTにはバンクグループID(GB0)とユーザ要求uとが付加されている。そして、最初のアクティブACT BG0_u(CLK1)の発行からコマンド発行制約tRRDS後のクロックCLK9、CLK10で、MACは2番目のメモリ要求のアクティブACT BG1_u(CLK9)を発行する。コマンド発行制約tRRDSは、RAS to RAS Delay among different memory bank groupsの意味である。この例ではコマンド発行制約tRRDSは8クロックである。
第1に、ユーザ要求の場合のアクティブ、リード、データ端子であるDQ端子について説明する。クロックCLK1、CLK2で、MACは1番目のユーザ要求のアクティブACT BG0_uを発行する。このアクティブは、バンクグループBG0に対するアクティブである。アクティブの符号ACTにはバンクグループID(GB0)とユーザ要求uとが付加されている。そして、最初のアクティブACT BG0_u(CLK1)の発行からコマンド発行制約tRRDS後のクロックCLK9、CLK10で、MACは2番目のメモリ要求のアクティブACT BG1_u(CLK9)を発行する。コマンド発行制約tRRDSは、RAS to RAS Delay among different memory bank groupsの意味である。この例ではコマンド発行制約tRRDSは8クロックである。
最初のアクティブACT BG0_u(CLK1)が発行されてからコマンド発行制約tRCDRD後のクロックCLK16で、MACは第1のリードR BG0u(CLK16)を発行する。コマンド発行制約tRCDRDは、RAS to CAS Delay for Readであり、15クロックである。更に、第1のリードR BG0u(CLK16)が発行されてからコマンド発行制約tCCDL(=4)後のクロックCLK20で第2のリードR BG0_u(CLK20)が、更にtCCDL(=4)後のクロックCLK24、CLK28で第3及び第4のリードR BG0_u(CLK24)、R BG0_u(CLK28)がそれぞれ発行される。上記の通り、ユーザ要求はアクセス長が4であり、MACは、1つのアクティブACTとその後の連続する4つのリードRをロウコマンドROWとコラムコマンドCOLとしてそれぞれ発行する。
第1のリードR BG0_u(CLK16)が発行されてからレイテンシtRL(=11)後のクロックCLK27、CLK28で、4組のデータがデータ端子DQから出力される。つまり、DDR SDRAM(Double Data Rate Synchronous DRAM)のダブルデータレートで知られるとおり、クロックの立ち上がりエッジと立ち下がりエッジでデータがデータ端子DQから出力される。そして、第2、第3、第4のリードが発行されたCLK20、CLK24、CLK28からtRL(=11)後のCLK31、CLK35、CLK39で、それぞれの4組のデータがデータ端子DQから出力される。以上で、最初のユーザ要求のアクティブACT BG0_u(CLK1)によるメモリアクセス制御が終了する。
図中、4つのバンクグループBG0~BG3のアクティブ状態がACTIVEで示されている。アクティブ状態は、バンクグループBG0の場合、ロウコマンドのアクティブACT BG0(CLK1)から最後のコラムコマンドのリードR BG0(CLK28)までである。第4のリードR BG0_u(CLK28)にはプリチャージPRE(図示せず)が付加され、メモリはアクティブ前の状態に戻される。
2番目のバンクグループBG1へのメモリ要求のアクティブACT BG1_u(CLK9)の発行後、MACは、コマンド発行制約tRCDRD+2(=15+2=17)後のCLK26から、コマンド発行制約tCCDL(=4)の間隔(CLK30、CLK34、CLK38)で4つのリードR BG1uを発行する。そして、それぞれのリードからtRL=11後のCLK37、CLK41、CLK45、CLK47でデータ端子DQにデータが出力される。
2番目のメモリ要求のアクティブACT BG1_u(CLK9)の場合、そのリードが1番目のメモリ要求のアクティブAVT_BG0_u(CLK1)の3番目のリードR BG0u(CLK24)と衝突しないように、コマンド発行制約tRCDRD+tCCDS(=15+2=17)後のCLK26からそのリードR BG1u(CLK26)が発行される。tCCDS=2は、異なるバンクグループ間のCAS間ディレイ(CAS to CAS Delay)である。この点が1番目のメモリ要求のアクティブACT BG0_u(CLK1)と異なる。これにより、1番目のメモリ要求のアクティブACT BG0_u(CLK1)の3、4番目のリードR BG0u(CLK24, CLK28)と、2番目のメモリ要求のアクティブACT BG1_u(CLK9)の1、2番目のリードR BG1u(CLK26, CLK30)が、tCCDS=2間隔で交互に発行される。同様に、DQ端子では、1番目のメモリ要求のアクティブACT BG0_u(CLK1)の3、4番目のデータ組(CLK35, CLK39)と、2番目のメモリ要求のアクティブACT BG1_u(CLK9)の1、2番目のデータ組(CLK37, CLK41)が、tCCDS=2間隔で交互に出力される。
3番目のメモリ要求のアクティブACT BG3_u(CLK25)は、スクラビングのアクティブACT BG2_s(CLK17)後であり、偶数番目のアクティブである。従って、2番目のメモリ要求のアクティブACT BG1_u(CLK9)と同様に、アクティブACT BG3_u(CLK25)からコマンド発行制約tRCDRD+tCCDS(=17)後のCLK42からtCCDL=4間隔で4つのリードR BG3u(CLK46、CLK50、CLK54)が発行される。更に、それぞれのリードからtRL=11後のCLK53、CLK57、CLK61、CLK65でデータ端子DQにデータが出力される。
4番目のメモリ要求のアクティブACT BG1_u(CLK41)は、リフレッシュRefresh(CLK33)後であり、偶数番目のアクティブである。そして、5番目のメモリ要求のアクティブACT BG0_u(CLK49)は、奇数番目のアクティブである。これらのリードコマンドの発行とDQ端子でのデータは、前述と同様である。
[スクラビング要求]
図2Aと図2Bの例では、クロックCLK17でスクラビング要求のアクティブACT BG2_s(CLK17)が発行されている。このアクティブは奇数番目のアクティブとして制御される。従って、1番目のメモリ要求のアクティブACT BG0_u(CLK1)と同様に、アクティブACT BG2_s(CLK17)からコマンド発行制約tRCDRD (=15)後のCLK32からtCCDL=4間隔で4つのリードR BG2s(CLK32、CLK36、CLK40、CLK44)が発行される。更に、それぞれのリードからtRL=11後のCLK43、CLK47、CLK51、CLK55でデータ端子DQにデータが出力される。
図2Aと図2Bの例では、クロックCLK17でスクラビング要求のアクティブACT BG2_s(CLK17)が発行されている。このアクティブは奇数番目のアクティブとして制御される。従って、1番目のメモリ要求のアクティブACT BG0_u(CLK1)と同様に、アクティブACT BG2_s(CLK17)からコマンド発行制約tRCDRD (=15)後のCLK32からtCCDL=4間隔で4つのリードR BG2s(CLK32、CLK36、CLK40、CLK44)が発行される。更に、それぞれのリードからtRL=11後のCLK43、CLK47、CLK51、CLK55でデータ端子DQにデータが出力される。
スクラビング要求では、MACは、リードのユーザ要求と同様に、1つのアクティブと4つのリードを発行し、メモリからデータを読み出す。そして、MACは、読み出したデータの誤りをチェックし、誤りがあれば訂正してメモリにライトのユーザ要求を実行する。但し、図2Aと図2Bにはそのライトのユーザ要求のロウコマンド及びコラムコマンドは示されていない。
クロックCLK17では、ユーザ要求のアクティブ、スクラビング要求のアクティブ、リフレッシュ要求のリフレッシュのいずれのロウコマンドも発行可能であると仮定する。但し、図2Aと図2Bの例では、発行タイミングが到来したスクラビング要求のアクティブが発行されている。そのため、発行可能であったユーザ要求のアクティブの発行がスクラビングにより阻害されている。ユーザ要求のアクティブが発行可能な状態とは、ロウコマンドの発行制約が満たされ、かつそのコラムコマンド及びDQ端子が他のメモリ要求と競合していない状態である。
[リフレッシュ要求]
クロックCLK33でリフレッシュRefresh BG0(CLK33)が発行されている。リフレッシュでは、アクティブコマンド発行時と同様に、メモリ内のワード線が駆動され、メモリセルの電荷状態がビット線に読出され、センスアンプでビット線の電位が増幅され、メモリセルの電荷状態が書き込み時の状態にリフレッシュされ、ワード線の駆動が終了され、データが再書き込みされる。従って、MACは、ユーザ要求のようなリードの発行は行わず、メモリからデータの読出しは行わない。よって、Refresh BG0(CLK33)からコマンド発行制約tRCDRD (=15)後からtCCDL=4間隔のCLK48、CLK52、CLK56、CLK60で、コラムコマンドバスCOLにコマンドを発行することはない。同様に、CLK48、CLK52、CLK56、CLK60それぞれからレイテンシtRL=11 後のCLK59、CLK63、CLK67、CLK71でデータ端子DQにデータが出力されることもない。
クロックCLK33でリフレッシュRefresh BG0(CLK33)が発行されている。リフレッシュでは、アクティブコマンド発行時と同様に、メモリ内のワード線が駆動され、メモリセルの電荷状態がビット線に読出され、センスアンプでビット線の電位が増幅され、メモリセルの電荷状態が書き込み時の状態にリフレッシュされ、ワード線の駆動が終了され、データが再書き込みされる。従って、MACは、ユーザ要求のようなリードの発行は行わず、メモリからデータの読出しは行わない。よって、Refresh BG0(CLK33)からコマンド発行制約tRCDRD (=15)後からtCCDL=4間隔のCLK48、CLK52、CLK56、CLK60で、コラムコマンドバスCOLにコマンドを発行することはない。同様に、CLK48、CLK52、CLK56、CLK60それぞれからレイテンシtRL=11 後のCLK59、CLK63、CLK67、CLK71でデータ端子DQにデータが出力されることもない。
クロックCLK33では、ユーザ要求のアクティブ、スクラビング要求のアクティブ、リフレッシュ要求のリフレッシュのいずれのロウコマンドも発行可能であると仮定する。図2Aと図2Bの例では、発行タイミングが到来したリフレッシュRefresh BG0(CLK33)が発行されている。そのため、発行可能であったユーザ要求のアクティブの発行がリフレッシュにより阻害されている。
[第1の実施の形態でのメモリアクセス制御の例。リフレッシュによるユーザ要求の性能低下を隠蔽してユーザ要求のスループットを向上する例]
図4Aと図4Bは、第1の実施の形態でのメモリアクセス制御例のタイミングチャートを示す図である。このメモリアクセス制御例では、リフレッシュによるユーザ要求の性能低下が隠蔽される。
図4Aと図4Bは、第1の実施の形態でのメモリアクセス制御例のタイミングチャートを示す図である。このメモリアクセス制御例では、リフレッシュによるユーザ要求の性能低下が隠蔽される。
図5は、図4Aと図4Bに示したMACのメモリアクセス制御の概略フローチャートを示す図である。MACは、スクラビング要求を実行する場合(S1のYES)、ロウコマンドバスを介してメモリにアクティブACTを発行し、その後コラムコマンドバスを介してメモリにリードRDをN回発行する(S2_A)。N回はM回より多く、例えばM回の2倍の8回またはK倍の4K回(K=3,4..)である。スクラビング要求のアクセス長Nが、メモリ要求のアクセス長M回より多いことが、図3と異なる。
更に、MACは、リフレッシュ要求を実行する場合(S3のYES)、ロウコマンドバスを介してメモリにリフレッシュRefreshを発行する(S4)。コラムコマンドバスにはリード等の発行は行わない。そして、MACは、ユーザ要求を実行する場合(S5のYES)、ロウコマンドバスを介してメモリにアクティブACTを発行し、その後コラムコマンドバスを介してメモリにリードRDをM回発行する(S6)。M回は4回である。ここは図3と同じである。
すなわち、本実施の形態では、MACのハードウエア回路は、スクラビング要求のアクセス長(リードの回数)N回を、ユーザ要求のアクセス長(リードの回数)M回より多くする。つまり、MACのコマンド発行部は、スクラビング要求とユーザ要求とでリードコマンドの発行回数を異ならせる。
尚、図5に示した概略フローチャートは、MACがスクラビング要求とリフレッシュ要求とユーザ要求を実行する優先順位を示すものではない。つまり、スクラビング要求とリフレッシュ要求とユーザ要求が同時に発生している場合、スクラビング要求とリフレッシュ要求とユーザ要求を図5の順に実行することを示すものではない。図5は、それぞれの要求に対するアクティブACTとリードRDの発行またはリフレッシュRefreshの発行を示すだけである。
次に、図4A及び図4Bのタイミングチャートに示したメモリアクセス制御について、ユーザ要求、スクラビング要求、リフレッシュ要求の順に説明する。
[ユーザ要求]
図4A及び図4Bでのユーザ要求のアクティブACT BG0_u(CLK1)、アクティブACT BG1_u(CLK9)、アクティブACT BG3_u(CLK25)、アクティブACT BG1_u(CLK41)、そしてアクティブACT BG0_u(CLK49)それぞれのコラムコマンドのリードR BG#_u(#はBGの番号)とDQ端子からのデータ出力は、図2A及び図2Bと同じである。
図4A及び図4Bでのユーザ要求のアクティブACT BG0_u(CLK1)、アクティブACT BG1_u(CLK9)、アクティブACT BG3_u(CLK25)、アクティブACT BG1_u(CLK41)、そしてアクティブACT BG0_u(CLK49)それぞれのコラムコマンドのリードR BG#_u(#はBGの番号)とDQ端子からのデータ出力は、図2A及び図2Bと同じである。
[スクラビング要求]
次に、図2A及び図2Bと同様に、クロックCLK17でスクラビング要求のアクティブACT BG2_s(CLK17)が発行されている。本実施の形態ではスクラビングのアクセス長は、ユーザ要求の4回より長い8回である。従って、アクティブACT BG2_s(CLK17)からコマンド発行制約tRCDRD (=15)以降のtCCDL=4間隔でで8つのリードR BG2s(CLK32、CLK36、CLK40、CLK44、CLK48、CLK52、CLK56、CLK60)が発行される。つまり、図2A及び図2Bと異なり、太枠で示した後半の4つのリードR BG2s(CLK48、CLK52、CLK56、CLK60)が、追加で発行される。その結果、それぞれのリードからtRL=11後のCLK43、CLK47、CLK51、CLK55、CLK59、CLK63、CLK67、CLK71でデータ端子DQにデータが出力される。
次に、図2A及び図2Bと同様に、クロックCLK17でスクラビング要求のアクティブACT BG2_s(CLK17)が発行されている。本実施の形態ではスクラビングのアクセス長は、ユーザ要求の4回より長い8回である。従って、アクティブACT BG2_s(CLK17)からコマンド発行制約tRCDRD (=15)以降のtCCDL=4間隔でで8つのリードR BG2s(CLK32、CLK36、CLK40、CLK44、CLK48、CLK52、CLK56、CLK60)が発行される。つまり、図2A及び図2Bと異なり、太枠で示した後半の4つのリードR BG2s(CLK48、CLK52、CLK56、CLK60)が、追加で発行される。その結果、それぞれのリードからtRL=11後のCLK43、CLK47、CLK51、CLK55、CLK59、CLK63、CLK67、CLK71でデータ端子DQにデータが出力される。
[リフレッシュ要求]
図2A及び図2Bと同様に、クロックCLK33でリフレッシュRefresh BG0(CLK33)が発行されている。前述のとおりリフレッシュでは、MACは、ユーザ要求のようなリードの発行は行わず、メモリからデータの読出しは行わない。よって、コラムコマンドバスCOLにリードの発行はなく、データ端子からのデータ出力もない。その代わり、本実施の形態では、Refresh BG0(CLK33)からコマンド発行制約tRCDRD (=15)以降tCCDL=4間隔のCLK48、CLK52、CLK56、CLK60で、スクラビングのアクティブACT BG2_s(CLK17)の後半の4つのリードR BG2s (CLK48、CLK52、CLK56、CLK60)が発行されている。同様に、4つのリードR BG2sそれぞれからレイテンシtRL=11 後のCLK59、CLK63、CLK67、CLK71でデータ端子DQにスクラビングのデータが出力されている。
図2A及び図2Bと同様に、クロックCLK33でリフレッシュRefresh BG0(CLK33)が発行されている。前述のとおりリフレッシュでは、MACは、ユーザ要求のようなリードの発行は行わず、メモリからデータの読出しは行わない。よって、コラムコマンドバスCOLにリードの発行はなく、データ端子からのデータ出力もない。その代わり、本実施の形態では、Refresh BG0(CLK33)からコマンド発行制約tRCDRD (=15)以降tCCDL=4間隔のCLK48、CLK52、CLK56、CLK60で、スクラビングのアクティブACT BG2_s(CLK17)の後半の4つのリードR BG2s (CLK48、CLK52、CLK56、CLK60)が発行されている。同様に、4つのリードR BG2sそれぞれからレイテンシtRL=11 後のCLK59、CLK63、CLK67、CLK71でデータ端子DQにスクラビングのデータが出力されている。
クロックCLK33では、ユーザ要求のアクティブは発行できない。クロックCLK33でユーザ要求のアクティブを発行すると、そのアクティブに対するリードが、スクラビング要求のアクティブACT BG2_s(CLK17)に対する後半の4つのリードR BG2s(CLK48、CLK52、CLK56、CLK60)と衝突するからである。同様に、クロックCLK33でユーザ要求のアクティブを発行すると、そのアクティブに対するリードのデータを出力するDQ端子が、スクラビング要求のアクティブに対応する後半の4つのリードR BG2s(CLK48、CLK52、CLK56、CLK60)のデータを出力するDQ端子(CLK59、CLK63、CLK67、CLK71)と衝突するからである。
従って、ユーザ要求のアクティブが発行できないタイミングCLK33で、リフレッシュ要求のリフレッシュを発行すれば、そのリフレッシュの発行によりユーザ要求の発行が阻害されることはない。つまり、リフレッシュによるユーザ要求の性能低下要因を隠蔽できる。その結果、ユーザ要求のメモリアクセスのスループットを向上できる。別の言い方をすると、リフレッシュによるユーザ要求のメモリアクセスのスループットの低下を抑制できる。
まとめると、図2A、2Bのメモリアクセス制御では、ユーザ要求はアクティブ1回にリード4回、スクラビング要求はアクティブ1回にリード4回、そして、リフレッシュ1回にリードは0回である。それに対して、図4A、4Bのメモリアクセス制御では、ユーザ要求はアクティブ1回にリード4回、スクラビング要求はアクティブ1回にリード8回、そして、リフレッシュ1回にリードは0回である。
そこで、ユーザ要求がI回、スクラビング要求がJ回、リフレッシュ要求がK回(K>J)行われたと仮定する。図2A、2Bのメモリアクセス制御では、ロウコマンド(アクティブとリフレッシュ)の合計回数はI+J+K回である。これに対して、図4A、4Bのメモリアクセス制御では、ロウコマンド(アクティブとリフレッシュ)の合計回数は最小I+K-J回である。これは全スクラビング要求J回のアクティブの後にリフレッシュが発行された場合である。この場合J回のリフレッシュは、ユーザ要求のアクティブ発行を阻害するものではない。また、スクラビング要求のJ回のアクティブのうちL回(J>L)リフレッシュが発行された場合でも、ロウコマンド(アクティブとリフレッシュ)の合計回数はI+J+K-L回である。この場合も、ロウコマンドの回数が減るので、ユーザ要求のアクティブの発行スループットの低下が緩和される。
[メモリアクセスコントローラの構成例]
図6は、本実施の形態におけるメモリアクセスコントローラの構成例を示す図である。MACは、リフレッシュ要求、スクラビング要求、ユーザ要求をそれぞれ出力するリクエスタREF_RQTR、SCB_RQTR、USR_RQTRと、出力された要求がメモリのコマンド発行制約等を満たし発行可能か否かをチェックし、発行可能な要求を所定の優先度で選択する要求選択部REQ_SELとを有する。
図6は、本実施の形態におけるメモリアクセスコントローラの構成例を示す図である。MACは、リフレッシュ要求、スクラビング要求、ユーザ要求をそれぞれ出力するリクエスタREF_RQTR、SCB_RQTR、USR_RQTRと、出力された要求がメモリのコマンド発行制約等を満たし発行可能か否かをチェックし、発行可能な要求を所定の優先度で選択する要求選択部REQ_SELとを有する。
また、MACは、システムクロックCLKをカウントしてリフレッシュ要求が必要なタイミング信号TICKを出力するタイミング信号発生器TICK_GENを有し、タイミング信号TICKがリフレッシュ要求、スクラビング要求のリクエスタREF_RQTR、SCB_RQTRに供給される。ユーザ要求のリクエスタUSR_RQTWRには、プロセッサのラストレベルキャッシュLLCからのユーザ要求USR_REQが供給される。つまり、ユーザ要求のリクエスタUSR_RQTWRは、プロセッサから供給されるユーザ要求USR_REQを要求選択部REQ_SELに出力する。一方、リフレッシュ要求、スクラビング要求のリクエスタREF_RQTR、SCB_RQTRは、メモリのリフレッシュ周期及びスクラビング周期に基づいて自発的にリフレッシュ要求、スクラビング要求を要求選択部REQ_SELに出力する。
要求選択部REQ_SELは、入力された要求がコマンド発行制約等を満たして発行可能か否かをチェックするビジーチェック回路REF_BSY_CHECK、SCB_BSY_CHECK、USR_BSY_CHECKと、発行可能な要求を所定の優先度で選択するセレクト回路SELECT_1を有する。
更に、MACは、コマンド発行部CMD_GENを有する。コマンド発行部CMD_GENは、選択された要求REQを保持する要求パイプラインREQ_PIPEと、ロウコマンド発行部R_CMD_GENと、コラムコマンド発行部C_CMD_GENを有する。要求パイプラインREQ_PIPEは、選択された要求REQが流れていく複数のパイプラインステージST0~STnを有する。要求パイプラインREQ_PIPEに投入された要求REQは、初段のパイプラインステージST0でロウコマンド発行要求を出力し、ロウコマンド発行部R_CMD_GENからロウコマンドR_CMDが発行される。また、複数のパイプラインステージST0~STn内それぞれの要求REQは、リクエストパイプラインに投入後ロウコマンド発行部からロウコマンド発行後のクロックをカウントするサイクルCycleと、要求の情報(オペコードやアドレス)を保持する。サイクルCycleがコラムコマンドの発行タイミングと一致すると、その要求がセレクト回路SELECT_2により選択される。そして、コラムコマンド発行部C_CMD_GENから選択された要求REQのコラムコマンドC_CMDがそれぞれのタイミングでコラムコマンドバスに発行される。
MACは、更に、エラーチェック及び訂正回路ECCを有する。ECCは、スクラビング要求に伴ってメモリから読みだしたデータのエラーをチェックし、エラービットの訂正を実行する。
図7は、MAC全体の概略処理のフローチャートを示す図である。MACは、リフレッシュのキューイングタイミングになると(S11のYES)、リフレッシュ要求REF_REQをリフレッシュリクエスタREF_RQTR内のキューにキューイングする(S12)。MACは、スクラビングのキューイングタイミングになると(S13のYES)、スクラビング要求SCB_REQをスクラビングリクエスタSCB_RQTR内のキューにキューイングする(S14)。そして、MACは、コアとLLCからユーザ要求USR_REQを受信すると(S15のYES)、ユーザ要求USR_REQをユーザリクエスタUSR_RQTR内のキューにキューイングする(S16)。
それぞれキューイングされたリフレッシュ要求、スクラビング要求、ユーザ要求は、要求選択部REQ_SELに出力される。尚、リフレッシュのキューイングタイミングとはリフレッシュを実行するタイミングである。同様に、スクラビングのキューイングタイミングとはスクラビングを実行するタイミングである。
次に、MACは、要求選択部REQ_SELの3つのビジーチェック回路でそれぞれの要求REQのビジーチェックを行う(S17)。ビジーチェックで発行条件を満たすスクラビング要求SCB_REQがあれば(S18のYES)、セレクト回路SELECT_1がそのスクラビング要求SCB_REQをコマンド発行部CMD_GENに発行する(S19)。発行条件を満たすスクラビング要求がない場合(S18のNO)、発行条件を満たすリフレッシュ要求REF_REQがあれば(S20のYES)、セレクト回路SELECT_1がそのリフレッシュ要求をコマンド発行部CMD_GENに発行する(S21)。
更に、発行条件を満たすリフレッシュ要求がない場合(S20のNO)、発行条件を満たすユーザ要求USR_REQがあれば(S22のYES)、セレクト回路SELECT_1がそのユーザ要求USR_REQをコマンド発行部CMD_GENに発行する(S22)。MACは、上記の処理を繰り返す。
[リクエスタの構成と動作]
図8は、リフレッシュリクエスタREF_RQTRの構成例を示す図である。リフレッシュは、メモリ内の全てのセルに対し所定の周期で実行される。リフレッシュはセルの電荷の状態がリークにより消失する前に実行する必要があり、リフレッシュ周期はセルの電荷状態の消失速度に基づいて設定される。本実施の形態では、図6に示したタイミング信号発生器TICK_GENが、クロックCLKをカウントして、設定されたリフレッシュ周期をメモリ内のバンクの数で除した周期でタイミング信号TICKを生成する。
図8は、リフレッシュリクエスタREF_RQTRの構成例を示す図である。リフレッシュは、メモリ内の全てのセルに対し所定の周期で実行される。リフレッシュはセルの電荷の状態がリークにより消失する前に実行する必要があり、リフレッシュ周期はセルの電荷状態の消失速度に基づいて設定される。本実施の形態では、図6に示したタイミング信号発生器TICK_GENが、クロックCLKをカウントして、設定されたリフレッシュ周期をメモリ内のバンクの数で除した周期でタイミング信号TICKを生成する。
リフレッシュリクエスタREF_RQTRは、リクエストキューREQ_QUEとバンクアドレス生成器BA_GENとを有する。リフレッシュリクエスタは、タイミング信号TICKが”1”になるタイミングに同期して、リクエストキューREQ_QUE内の32個のエントリのバリッドデータVAL[0]~VAL[31]を順番に”1”にして、リフレッシュ要求をキューイングする。また、リフレッシュリクエスタは、バンクアドレス生成器BA_GENを有する。タイミング信号TICKが”1”になるタイミングに同期して、バンクアドレス生成器BA_GENが新たなリフレッシュ対象のバンクアドレスBA[4:0]を生成し、リクエストキューREQ_QUE内の対応するエントリに登録する。
セレクト回路SELECT_3は、”1”になったバリッドデータVAL[#]と対応するバンクアドレスBA[4:0]を選択し、リフレッシュバリッドREF_VALとリフレッシュバンクアドレスREF_BA[4:0]を含むリフレッシュ要求を、リクエストセレクタのリフレッシュビジーチェック回路REF_BSY_CHECKに出力する。
そして、後述するとおり、要求選択部REQ_SELがリフレッシュ要求をコマンド発行部CMD_GENに発行すると、リフレッシュ要求をリリースするリリース信号RLSを発行する。リフレッシュリクエスタREF_RQTRは、このリリース信号RLSに応答して、リクエストキュー内の対応するバリッドデータを”0”に変更する。
図9は、スクラビングリクエスタSCB_RQTRの構成例を示す図である。スクラビングはメモリ内の全てのセルに対して所定の周期で実行される。スクラビングは、セルのビット反転がエラーチェック及びコレクション回路でエラー訂正できなくなる前に、実行する必要がある。スクラビング周期は、宇宙線等の照射によるセルのビット反転が発生する確率等に基づいて設定される。
本実施の形態では、スクラビングを実行するタイミングを、K回のタイミング信号TICKに1回に設定する。K回は例えば4回などである。そこで、スクラビングリクエスタは、タイミング信号TICKをカウントするTICKカウンタTICK_CNTを有し、TICKカウンタがK回のタイミング信号TICKをカウントする度にスクラビングトリガ信号SCB_TRIGを出力する。
スクラビングレクエスタは、1つのエントリを有するリクエストキューREQ_QUEと、スクラビングアドレス生成回路ADRS_GENとを有する。スクラビングトリガ信号SCB_TRIGが生成される度に、リクエストキューREQ_QUEのエントリのバリッドが”1”になり、スクラビングアドレス生成回路がスクラビングアドレスをインクリメントする。そして、セレクト回路SELECT_4が、スクラビングバリッドSCR_VALとスクラビングアドレスSCB_ADRS[27:0]を含むスクラビング要求を、リクエストセレクタのスクラビングビジーチェック回路SCB_BSY_CHECKに出力する。
そして、後述するとおり、要求選択部REQ_SELがスクラビング要求をコマンド発行部CMD_GENに発行すると、スクラビング要求をリリースするリリース信号RLSを発行する。スクラビングリクエスタSCB_RQTRは、このリリース信号RLSに応答して、リクエストキューREQ_QUE内のバリッドデータを”0”に変更する。
図10は、ユーザリクエスタUSR_RQTRの構成例を示す図である。ユーザリクエスタ内のリクエストキューREQ_QUEは、複数、例えばN+1個のエントリを有し、コア及びLLCからのユーザ要求USR_REQの情報を空いているエントリに登録する。登録される情報は、ユーザバリッドUSR_VAL_#、ユーザオペコードUSR_OPCD_#、ユーザアドレスUSR_ADRS_#である。#はエントリ番号0~Nである。そして、全てのエントリ内の情報がユーザ要求として、要求選択部REQ_SELのユーザビジーチェック回路USR_BSY_CHECKに出力される。
同様に、要求選択部REQ_SELがユーザ要求をコマンド発行部CMD_GENに発行すると、ユーザ要求をリリースするリリース信号RLSを発行する。ユーザリクエスタUSR_RQTRは、このリリース信号RLSに応答して、リクエストキューREQ_QUE内の対応するエントリのユーザバリッドUSR_VAL_#を”0”に変更する。
[リクエストセレクタ(要求選択部)の構成と動作]
図11は、リクエストセレクタ(要求選択部)の構成例を示す図である。要求選択部REQ_SELは、3つのビジーチェック回路REF_BSY_CHECK、SCB_BSY_CHECK、USR_BSY_CHECKを有する。これらのビジーチェック回路が、対応する要求が発行条件を満たすか否かチェックする。各リクエスタREF_RQTR、SCB_RQTR、USR_RQTRが出力するバリッドVAL、アドレスBA[4:0]、ADRS、オペコードOPCDらが、それぞれのビジーチェック回路に入力される。また、ビジーチェック回路には、メモリのコマンド発行制約に対応するビジー信号MEM_BSYが供給される。前述したとおり、メモリは複数のコマンド発行制約を有し、ビジー信号MEM_BSYは複数のコマンド発行制約に対応するビジー信号を含む。ビジー信号は、例えば、コマンド発行が禁止されている期間所定のレベル(0又は1)になる信号である。
図11は、リクエストセレクタ(要求選択部)の構成例を示す図である。要求選択部REQ_SELは、3つのビジーチェック回路REF_BSY_CHECK、SCB_BSY_CHECK、USR_BSY_CHECKを有する。これらのビジーチェック回路が、対応する要求が発行条件を満たすか否かチェックする。各リクエスタREF_RQTR、SCB_RQTR、USR_RQTRが出力するバリッドVAL、アドレスBA[4:0]、ADRS、オペコードOPCDらが、それぞれのビジーチェック回路に入力される。また、ビジーチェック回路には、メモリのコマンド発行制約に対応するビジー信号MEM_BSYが供給される。前述したとおり、メモリは複数のコマンド発行制約を有し、ビジー信号MEM_BSYは複数のコマンド発行制約に対応するビジー信号を含む。ビジー信号は、例えば、コマンド発行が禁止されている期間所定のレベル(0又は1)になる信号である。
ビジーチェック回路は、それぞれの要求が発行条件を満たす場合、レディー信号REF_READY、SCB_READY、USR_READYを“1”にして、セレクト回路SELECT_1による選択対象候補であることを通知する。
また、要求選択部REQ_SELは、セレクト回路SELECT_1を有する。セレクト回路SELECT_1は、3つのビジーチェック回路が出力するレディー信号REF_READY, SCB_READY, USR_READYのいずれかが”1”の場合、レディー信号が"1"になったリフレッシュ要求、スクラビング要求、ユーザ要求のいずれかを所定の優先度に基づいて選択する。
以下、3つのビジーチェック回路の動作を説明し、更に、セレクト回路SELECT_1の動作を説明する。
図12は、リフレッシュビジーチェック回路REF_BSY_CHECKの動作のフローチャートを示す図である。リフレッシュビジーチェック回路は、リフレッシュバリッドREF_VAL=1の場合(S31のYES)、そして、リフレッシュの発行がコマンド発行制約に違反しない場合(S32のYES)、リフレッシュレディー信号REF_REDY=1を出力する(S33)。
リフレッシュのコマンド発生制約は、例えば異なるバンクグループのアクティブとリフレッシュ間遅延tRRDS(=8)や、異なるバンクグループのリフレッシュとリフレッシュ間遅延tRREFDである。図4AのCLK25とCLK33の間にtRRDS(=8)がある。
また、リフレッシュビジーチェック回路は、リフレッシュバリッドREF_VAL=0の場合(S31のNO)またはリフレッシュの発行がコマンド発行制約に違反する場合(S32のNO)、リフレッシュレディー信号REF_REDY=0を出力する(S34)。
図13は、スクラビングビジーチェック回路SCB_BSY_CHECKの動作のフローチャートを示す図である。スクラビングビジーチェック回路は、スクラビングバリッドSCB_VAL=1の場合(S41のYES)、スクラビングの発行がコマンド発行制約に違反しない場合(S42のYES)、そして、スクラビングの発行がコラムコマンドC_CMDとDQ端子の競合にならない場合(S43のYES)、スクラビングレディー信号SCB_REDY=1を出力する(S44)。
スクラビングのコマンド発生制約は、例えば異なるバンクグループのアクティブ間遅延tRRDS(=8)や、異なるバンクグループのリフレッシュとアクティブ間遅延tRREFDである。図4AのCLK9とCLK17の間にtRRDS(=8)がある。
コラムコマンドC_CMDの競合とは、図4Aで、スクラビングのアクティブACT BG2_s(CLK17)に対する8つのリードR BG2s(CLK32, CLK36, CLK40, CLK44, CLK48, CLK52, CLK56, CLK60)の発行が、他のアクティブのリードの発行と競合することである。またDQ端子の競合とは、図4Bで、スクラビングの8つのリードR BG2sそれぞれからレイテンシtRL=11後のCLK43, CLK47, CLK51, CLK55, CLK59, CLK63, CLK67, CLK71でのデータ出力が他のデータ出力が競合することである。
また、スクラビングビジーチェック回路は、スクラビングバリッドSCB_VAL=0の場合(S41のNO)、スクラビングの発行がコマンド発行制約に違反する場合(S42のNO)、またはスクラビングの発行がコラムコマンドC_CMDとDQ端子の競合になる場合(S43のNO)、スクラビングレディー信号SCB_REDY=0を出力する(S45)。
図14は、ユーザビジーチェック回路USR_BSY_CHECKの動作のフローチャートを示す図である。ユーザビジーチェック回路の動作は、図13のスクラビングビジーチェック回路と同様である。
即ち、ユーザビジーチェック回路は、ユーザバリッドUSR_VAL=1の場合(S51のYES)、ユーザ要求の発行がコマンド発行制約に違反しない場合(S52のYES)、そして、ユーザ要求の発行がコラムコマンドC_CMDとDQ端子の競合にならない場合(S53のYES)、ユーザレディー信号USR_REDY=1を出力する(S54)。
また、ユーザビジーチェック回路は、ユーザバリッドUSR_VAL=0の場合(S51のNO)、ユーザ要求の発行がコマンド発行制約に違反する場合(S52のNO)、またはユーザ要求の発行がコラムコマンドC_CMDとDQ端子の競合になる場合(S53のNO)、ユーザレディー信号USR_REDY=0を出力する(S55)。
図15は、リクエストセレクタREQ_SELのセレクト回路SELECT_1の動作のフローチャートを示す図である。セレクト回路は、スクラビング要求、ユーザ要求、リフレッシュ要求の順番で、つまり優先順位で、選択する。
セレクト回路は、まず、スクラビングレディーSCB_READY = 1か否かをチェックする(S61)。SCB_READY = 1の場合(S61のYES)、セレクト回路は、以下のデータを含むスクラビング要求をコマンド発行部CMD_GENのリクエストパイプラインREQ_PIPEに出力する(S64)。
REQ_VAL =1
REQ_OPCD = RD(SCB)
REQ_ADRS = SCB_ADRS
SCB_RLS = 1
REF_RLS = 0
USR_RLS = 0
ここで、REQ_VALはリクエストバリッド信号、REQ_OPCDはリクエストオペコード、REQ_ADRSはリクエストのアドレス、SCB_ADRSはスクラビングアドレス、RLSはリリース信号である。図6に示したとおり、セレクト回路は、スクラビングを発行するとスクラビング要求を取り下げる信号として、リリース信号をスクラビングリクエスタSCB_RQTRに返信する。
REQ_VAL =1
REQ_OPCD = RD(SCB)
REQ_ADRS = SCB_ADRS
SCB_RLS = 1
REF_RLS = 0
USR_RLS = 0
ここで、REQ_VALはリクエストバリッド信号、REQ_OPCDはリクエストオペコード、REQ_ADRSはリクエストのアドレス、SCB_ADRSはスクラビングアドレス、RLSはリリース信号である。図6に示したとおり、セレクト回路は、スクラビングを発行するとスクラビング要求を取り下げる信号として、リリース信号をスクラビングリクエスタSCB_RQTRに返信する。
第2に、スクラビングレディーSCB_READY = 0の場合(S61のNO)、セレクト回路は、ユーザレディーUSR_READY = 1か否かをチェックする(S62)。USR_READY = 1の場合(S62のYES)、セレクト回路は、以下のデータを有するユーザ要求をコマンド発行部CMD_GENのリクエストパイプラインREQ_PIPEに出力する(S65)。
REQ_VAL =1
REQ_OPCD = RD/WR(USR)
REQ_ADRS = USR_ADRS
SCB_RLS = 0
REF_RLS = 0
USR_RLS = 1
ここで、RD/WR(USR)はリード又はライト、USR_ADRSはユーザアドレスである。
REQ_VAL =1
REQ_OPCD = RD/WR(USR)
REQ_ADRS = USR_ADRS
SCB_RLS = 0
REF_RLS = 0
USR_RLS = 1
ここで、RD/WR(USR)はリード又はライト、USR_ADRSはユーザアドレスである。
第3に、ユーザレディーUSR_READY = 1の場合(S62のNO)、セレクト回路は、リフレッシュレディーREF_READY = 1か否かをチェックする(S63)。REF_READY = 1の場合(S63のYES)、セレクト回路は、以下のデータを有するリフレッシュ要求をコマンド発行部CMD_GENのリクエストパイプラインREQ_PIPEに出力する(S65)。
REQ_VAL =1
REQ_OPCD = REF
REQ_ADRS = REF_BA
SCB_RLS = 0
REF_RLS = 1
USR_RLS = 0
ここで、REFはリフレッシュ、REF_BAはリフレッシュバンクアドレスである。
REQ_VAL =1
REQ_OPCD = REF
REQ_ADRS = REF_BA
SCB_RLS = 0
REF_RLS = 1
USR_RLS = 0
ここで、REFはリフレッシュ、REF_BAはリフレッシュバンクアドレスである。
図15のフローチャートに示すとおり、3つのレディー信号が全て1の場合、セレクト回路SELECT_1は、スクラビング要求を選択して、コマンド発行部CMD_GENのリクエストパイプラインREQ_PIPEに発行する。例えば、図4AのクロックCLK17でバンクグループBG0へのユーザ要求と、BG0へのリフレッシュ要求と、BG2へのスクラビング要求のレディー信号が1だったと仮定する。この場合、セレクト回路は、スクラビング要求を優先して発行する。
スクラビング要求のアクティブACT BG2_s(CLK17)が発行された結果、そのスクラビング要求のレディー信号は0に戻る。そして、クロックCLK33のタイミングでは、CLK33で発行されたと仮定したユーザ要求の4つのリードの発行はCLK48~CLK60になり、スクラビング要求のアクティブACT BG2_s(CLK17)に対する後半の4つのリードR BG2s(CLK48~CLK60)と競合する。従って、図14に基づいてそのユーザ要求のレディー信号は0となる。その結果、セレクト回路は、BG0へのリフレッシュ要求を選択し、コマンド発行部のロウコマンド発行部R_CMD_GENがリフレッシュRefresh BG0(CLK33)を発行する。
セレクト回路は、リフレッシュ要求をコマンド発行部に発行すると、リフレッシュ要求のリリース信号をリフレッシュビジーチェック回路にフィードバックする。その結果、リフレッシュレディー信号は0になり、その後、セレクト回路は、リードコマンドの発行タイミングで競合して発行されなかったユーザ要求を選択し、コマンド発行部のリクエストパイプラインに発行する。
本実施の形態では、リフレッシュタイミング信号TICKに基づいてリクエスタREF_RQTR、SCB_RQTRがリフレッシュ要求とスクラビング要求を同期して要求する。このことにより、セレクト回路SELECT_1が、スクラビング要求の発行(アクティブACT BG2_s(CLK17))のタイミングに同期して、クロックCLK33で、リフレッシュ要求のロウコマンドRefresh BG0(CLK33)を確実に発行する。クロックCLK33はユーザ要求のアクティブが発行できないタイミングであった。その結果、リフレッシュによるユーザ要求の発行性能の低下を高い確率で隠蔽することができる。
もちろん、リフレッシュ要求とスクラビング要求を同期させなくても、確率的にスクラビング要求の発行とリフレシュ要求の発行が時間的に近接すれば、スクラビング要求のアクティブ発行後のユーザ要求のアクティブを発行できないタイミングでリフレッシュが発行される。その場合、上記と同様に、リフレッシュによるユーザ要求の発行性能の低下を隠蔽することができる。
[コマンド発行部の構成と動作]
図6に示すとおり、コマンド発行部R_CMD_GENは、リクエストパイプラインREQ_PIPEと、ロウコマンド発行部R_CMD_GENと、コラムコマンド発行部C_CMD_GENとを有する。以下、これらの構成及び動作を説明する。
図6に示すとおり、コマンド発行部R_CMD_GENは、リクエストパイプラインREQ_PIPEと、ロウコマンド発行部R_CMD_GENと、コラムコマンド発行部C_CMD_GENとを有する。以下、これらの構成及び動作を説明する。
図6で説明したとおり、要求パイプラインREQ_PIPEは、選択された要求REQの情報がそれぞれ保持される複数のパイプラインステージST0~STnを有する。要求パイプラインREQ_PIPEに投入された要求REQは、初段のパイプラインステージST0でロウコマンド発行要求をロウコマンド発行部R_CMD_GENに出力する。また、複数のパイプラインステージST0~STn内それぞれの要求REQが、それぞれのコラムコマンドの発行タイミングになると、セレクト回路SELECT_2により選択され、コラムコマンド発行部C_CMD_GENに出力される。パイプラインステージST0~STnは、それぞれ、ロウコマンドを発行後のクロックCLK数を示すサイクルCYCLEを保持する。このサイクルCYCLEが、連続するコラムコマンドの最初の発行タイミングの判定に利用される。
図16は、ロウコマンド発行部R_CMD_GENの構成例を示す図である。また、図17は、ロウコマンド発行部の動作例のフローチャートを示す図である。ロウコマンド発行部R_CMD_GENは、発行判定回路ISSUE_DETとロウコマンド発行回路R_CMD_GEN_CIRとを有する。発行判定回路ISSUE_DETには、リクエストパイプラインREQ_PIPEの初段のパイプラインステージST0から要求の情報として、リクエストバリッドREQ_VALと、リクエストオペコードREQ_OPCDと、サイクルCYCLEが入力される。
図17に示すとおり、ロウコマンド発行部は、リクエストバリッドがREQ_VAL = 1で且つサイクルがCYCLE = 1か否かを判定する(S71)。S71の判定がNOの場合は、ロウコマンド発行部はロウコマンドを発行しない。S71の判定がYESの場合、ロウコマンド発行部は、リクエストオペコードがリフレッシュREFか、リード又はライトRD/WRかを判定する(S72)。判定S72がリード又はライトRD/WRの場合、ロウコマンド発行回路R_CMD_GEN_CIRはアクティブコマンドACT_CMDをロウコマンドバスに発行する(S73)。一方、判定S72がリフレッシュの場合、ロウコマンド発行回路R_CMD_GEN_CIRはリフレッシュコマンドREF_CMDをロウコマンドバスに発行する(S74)。アクティブコマンドACT_CMDは、図2、図4のアクティブACTである。リフレッシュコマンドREF_CMDは、図2、図4のリフレッシュRefreshである。上記の判定S71、S72は、発行判定回路ISSUE_DETが判定する。
図18は、コラムコマンド発行部C_CMD_GENの構成例を示す図である。また、図19は、コラムコマンド発行部の動作例のフローチャートを示す図である。コラムコマンド発行部C_CMD_GENは、偶数側の発行部EVENと奇数側の発行部ODDに分けられる。偶数側と奇数側のコラムコマンド発行部は、発行判定回路ISSUE_DET_e/oと、カウンタCNT_e/oと、情報保持部INF_HLD_e/oと、コラムコマンド発行回路C_CMD_GEN_CIR_e/oをそれぞれ有する。
発行判定回路ISSUE_DET_e/oには、リクエストパイプラインREQ_PIPEの複数のパイプラインステージST0~STnから要求の情報として、リクエストバリッドREQ_VALと、リクエストオペコードREQ_OPCDと、サイクルCYCLEと、アドレスADRSが入力される。そして、発行判定回路は、これらの情報に基づいてどのパイプラインステージの要求のコラムコマンドを発行するか否かを判定する。この判定が、図6に示したリクエストパイプラインREQ_PIPE内のセレクト回路SELECT_2の選択処理に対応する。具体的な判定処理は図19で説明する。
カウンタCNT_e/oには、発行するコラムコマンドの数に対応する初期値を設定され、クロックCLKに同期してダウンカウントし、連続して発行されるコラムコマンドの発行タイミングの制御にそのカウント値が利用される。カウンタは、コラムコマンドを発行する要求の数のカウンタを有し、例えば、パイプラインステージST0~STnと同じ数n+1個のカウンタを有する。この処理も図19で説明する。
情報保持部INF_HLD_e/oは、パイプラインステージからの情報をそれぞれ保持し、発行判定回路とコラムコマンド発行回路とから参照される。
図19に基づいてコラムコマンド発行部の動作を説明する。以下の動作は、発行判定回路ISSUE_DETe/oとカウンタCNTe/oとコラムコマンド発行回路C_CMD_GEN_CIR_e/oとが協働して行う。まず、コラムコマンド発行部C_CMD_GENは、パイプラインステージST0~STnのそれぞれの情報について、リクエストバリッドREQ_VALがREQ_VAL = 1の場合(S81のYES)、リクエストオペコードREQ_OPCDがリードRDかライトWRかを判定する(S82)。
リードRDの場合、サイクルCYCLEがコマンド発行制約tRCDRD+αに達すると(S83のYES)、コラムコマンド発行部は、リクエストオペコードREQ_OPCDがユーザ要求のリードRD(USR)か、スクラビング要求のリードRD(SCB)かを判定する(S85)。
リクエストオペコードREQ_OPCDがユーザ要求のリードRD(USR)の場合(S85のRD(USR))、コラムコマンド発行部は、その要求のカウンタCNTにCNT = 16を設定する(S86)。ここまで発行判定回路ISSUE_DET_e/oが実行する。
その後、コラムコマンド発行回路C_CMD_GEN_e/oは、クロックCLKに同期してカウンタ値CNTをデクリメントし(CNT = CNT-1)、カウンタ値CNTが15,11,7のときにリードコマンドRD_CMDを発行し、カウンタ値CNTが3のときにプリチャージ付きリードコマンドRD with PRECHARGE_CMDを発行する(S87)。カウンタ値CNTがCNT = 0になるまでS87の処理が繰り返される(S88)。ここでは、ユーザ要求ではリードコマンドが4回発行されることが理解できる。
リクエストオペコードREQ_OPCDがスクラビング要求のリードRD(SCR)の場合(S85のRD(SCB))、コラムコマンド発行部は、その要求のカウンタCNTにCNT = 32を設定する(S89)。ここまで発行判定回路ISSUE_DET_e/oが実行する。
その後、コラムコマンド発行回路C_CMD_GEN_e/oは、クロックCLKに同期してカウンタ値CNTをデクリメントし(CNT = CNT-1)、カウンタ値CNTが31,27,23,19,15,11,7のときにリードコマンドRD_CMDを発行し、カウンタ値CNTが3のときにプリチャージ付きリードコマンドRD with PRECHARGE_CMDを発行する(S90)。カウンタ値CNTがCNT = 0になるまでS90の処理が繰り返される(S91)。ここで、スクラビング要求ではリードコマンドが8回発行されることが理解できる。この8回は、ユーザ要求のリードコマンドの発行回数4回より多い。なお、プリチャージ付きリードコマンドが発行されると、メモリはリードのデータをデータ端子DQから出力すると共に、プリチャージを実行してワード線の駆動を終了し、ユーザ要求の動作を終了する。
一方、S82の判定がライトWRの場合、ロウコマンドのアクティブACTを発行後のクロックCLK数を示すサイクルCYCLEが、コマンド発行制約tRCDWR+αに達すると(S84のYES)、コラムコマンド発行部は、その要求のカウンタCNTにCNT = 16を設定する(S92)。ここまで発行判定回路ISSUE_DET_e/oが実行する。
その後、コラムコマンド発行回路C_CMD_GEN_e/oは、クロックCLKに同期してカウンタ値CNTをデクリメントし(CNT = CNT-1)、カウンタ値CNTが15,11,7のときにライトコマンドWR_CMDを発行し、カウンタ値CNTが3のときにプリチャージ付きライトコマンドWR with PRECHARGE_CMDを発行する(S93)。カウンタ値CNTがCNT = 0になるまでS93の処理が繰り返される(S94)。ライトのユーザ要求では、ライトコマンドは4回発行される。
以上、第1の実施の形態では、MACは、ユーザ要求のメモリアクセスではアクティブをロウコマンドバスに発行した後、M回のリードをコラムコマンドバスを介してメモリに順次発行する。また、MACは、スクラビング要求のメモリアクセスではアクティブ発行後Mより大きいN回のリードをコラムコマンドバスを介してメモリに発行する。そのため、MACは、スクラビング要求のアクティブを発行後にユーザ要求のアクティブを発行できないタイミングで、リフレッシュを発行することができる。これにより、リフレッシュを発行することによりユーザ要求のアクティブ発行ができないというユーザ要求の発行性能低下を隠蔽することができる。つまり、リフレッシュ発行に伴うユーザ要求の発行性能低下が抑制される。
第1の実施の形態では、M回を4回、N回を8回としたが、それに限定されず、N回をM回の整数K倍(Kは3より大きな整数)にしてもよい。但し、スクラビング要求のリードの発行回数Nをあまり大きくすると、長時間にわたりユーザ要求のアクティブとリードを発行できなくなる。よって、スクラビングのアクセス長(リード回数)Nは、リフレッシュを隠蔽できる最短の長さにするのが好ましい。Nを8にすると、スクラビングの8回のリードの後半4回で、ユーザ要求の発行が阻害され、リフレッシュを発行してもユーザ要求の発行スループット低下を隠蔽できる。または、ユーザ要求の発行の阻害が許容できる時間に基づいてN回を設定してもよい。
第1の実施の形態では、リフレッシュ要求の発行タイミングに同期してスクラビング要求を発行する。通常、リフレッシュ要求の第1の発行間隔がスクラビング要求の第2の発行間隔より短いので、図9で説明したとおり、要求発行部は、前記リフレッシュ要求をK回(4回)発行するたびにスクラビング要求を発行する。但し、リフレッシュ要求の発行タイミングとスクラビング要求の発行タイミングを必ずしも同期させなくてもよい。同期してなくても、リフレッシュ要求の発行がスクラビング要求の発行と一致又は近接する確率がゼロでなければ、リフレッシュの発行によりユーザ要求のアクティブの発行が阻害される性能低下をある程度隠蔽することができる。
[第2の実施の形態]
第1の実施の形態では、MACは、ユーザ要求のメモリアクセスを1回のアクティブに対して4回のリードを発行することで行う。
第1の実施の形態では、MACは、ユーザ要求のメモリアクセスを1回のアクティブに対して4回のリードを発行することで行う。
これに対して、第2の実施の形態では、MACが、ユーザ要求のメモリアクセスを、(1)1回のアクティブに対して4回のリードを発行する制御と、(2)1回のアクティブに対して2回のリードを発行する制御のいずれかを実行する。例えば、アクセス長を短い2回でよいユーザ要求の場合、MACは無駄な2回のリードの発行を省略できる。
第2の実施の形態では、上記の2種類のユーザ要求のメモリアクセスが行われる場合、MACは、スクラビング要求のメモリアクセスを、1回のアクティブに対して4回のリードを発行する制御を行う。これにより、リフレッシュコマンドの発行による(2)の1回のアクティブに対して2回のリードを発行するユーザ要求のアクセス制御の性能低下が隠蔽できる。
第2の実施の形態では、上記の2種類のユーザ要求のメモリアクセスが行われる場合、MACは、スクラビング要求のメモリアクセスを、1回のアクティブに対して8回のリードを発行する制御を行ってもよい。この場合は、リフレッシュコマンドの発行による上記(1)と(2)のユーザ要求のアクセス制御の性能低下が隠蔽できる。
図20は、第2の実施の形態でのMACのメモリアクセス制御の概略フローチャートを示す図である。MACは、スクラビング要求を実行する場合(S1のYES)、ロウコマンドバスにアクティブACTを発行し、その後コラムコマンドバスにリードRDをN回発行する(S2_A)。N回は例えば4回である。
更に、MACは、リフレッシュ要求を実行する場合(S3のYES)、ロウコマンドバスにリフレッシュRefreshを発行する(S4)。コラムコマンドバスにはリード等の発行は行わない。
そして、MACは、ユーザ要求を実行する場合(S5のYES)、ユーザ要求のアクセス長がM1回の場合(S7のM1)、ロウコマンドバスにアクティブACTを発行し、その後コラムコマンドバスにリードRDをM1回発行する(S6_A)。M1回は例えば4回である。
一方、MACは、ユーザ要求を実行する場合(S5のYES)、ユーザ要求のアクセス長がM2(M1>M2)回の場合(S7のM2)、ロウコマンドバスにアクティブACTを発行し、その後コラムコマンドバスにリードRDをM2回発行する(S6_B)。M2回は例えば2回である。ここは図5と異なる。
すなわち、本実施の形態では、MACのハードウエア回路は、スクラビング要求のアクセス長(リードの回数)N回を、ユーザ要求の短い方のアクセス長(リードの回数)M2回より多くする(N>M2)。つまり、MACのコマンド発行部は、スクラビング要求のリードコマンドの発行回数Nを、短いアクセス長のユーザ要求のリードコマンドの発行回数M2より長くする。
第2の実施の形態の変形例として、N>M1>M2としてもよい。この場合、N回は例えば8回、M1,M2は例えば4回と2回である。この場合は、リフレッシュによるリードM1回のユーザ要求の性能低下とリードM2回のユーザ要求の性能低下の両方を隠蔽できる。
[実施例]
次に、第1の実施の形態の場合の実施例について説明する。まず、MACによるユーザ要求のメモリアクセスは、1リクエストを、ロウコマンドであるアクティブ1回に対してコラムコマンドであるリードまたはライト4回とする。この場合、コラムコマンド1回で16Byteのデータをリードまたはライトできるとすると、1つのユーザ要求により64Byteのデータをアクセスできる。
次に、第1の実施の形態の場合の実施例について説明する。まず、MACによるユーザ要求のメモリアクセスは、1リクエストを、ロウコマンドであるアクティブ1回に対してコラムコマンドであるリードまたはライト4回とする。この場合、コラムコマンド1回で16Byteのデータをリードまたはライトできるとすると、1つのユーザ要求により64Byteのデータをアクセスできる。
また、アクティブ1回でユーザ要求が完結するクローズページメモリアクセス方式とする。そして、メモリは32バンク(BG[1:0]、BA[2:0])である。
リフレッシュの頻度を0.062μsec(62nsec)に1回とする。メモリセルの電荷漏れによる記憶データのビット反転を防ぐために、メモリの全領域のリフレッシュをリフレッシュ完了時間tREFI以内で完了する必要がある。仮にtREFI = 2μsecとし、1バンク単位でリフレッシュを発行するシングルバンクリフレッシュインターフェースとする。つまり、tREFI = 2μsec以内に32回以上のリフレッシュコマンドを発行する。この場合、tREFI = 2μsecをリフレッシュコマンド回数32回で除算すると0.0625μsecであり、リフレッシュの頻度を0.062μsec(62nsec)に1回にすれば良いことになる。
スクラビング要求のメモリアクセスは、アクティブ1回に対してコラムコマンドであるリード8回とする。この場合、1回のスクラビング要求のメモリアクセスで、128Byte単位のエラーチェック及び訂正を実行する。そして、スクラビング要求のメモリアクセスは、リフレッシュ10回に対して1回の頻度で実行する。この理由は以下のとおりである。
通常のメモリのECC(エラーチェック・コレクション)回路ではECC対象のデータ内の1ビットのエラーが救済可能である。メモリ容量512Gbyteのメモリに対して1時間毎にスクラビング1周を実行するとする。スクラビングの発行間隔は、1日の時間(24h×60min×60sec)を、1日のスクラビング24周と、全メモリ容量512Gbyte÷128Byte(全メモリをスクラビングする回数)とで除算して、0.84μsecが得られる。
したがって、リフレッシュの頻度が0.062μsecに1回で、スクラビングの頻度が0.84μsecに1回であるので、スクラビングは、リフレッシュ10回に1回実行すればよいことになる。この場合、リフレッシュは10回に1回は、ユーザ要求のアクティブを発行できないタイミングになるので、リフレッシュによる性能劣化は90%に減ることになる。
CPU:プロセッサ、セントラルプロセッシングユニット
MAC:メモリアクセスコントローラ
USR_RQTR:ユーザリクエスタ(ユーザ要求回路)
REF_RQTR:リフレッシュリクエスタ(リフレッシュ要求回路)
SCB_RQTR:スクラビングリクエスタ(スクラビング要求回路)
REQ:メモリアクセス要求、メモリ要求
USR_REQ:ユーザ要求
REF_REQ:リフレッシュ要求
SCB_REQ:スクラビング要求
REQ_SEL:リクエストセレクタ、要求選択部(要求選択回路)
CMD_GEN:コマンド発行部(コマンド発行回路)
REQ_PIPE:リクエストパイプライン回路(要求パイプライン)
R_CMD_GEN:ロウコマンド発行部
R_CMD_GEN_CIR:ロウコマンド発行回路
C_CMD_GEN:コラムコマンド発行部
C_CMD_GEN_CIR:コラムコマンド発行回路
tRRDS:異なるバンクグループ間のアクティブの後のアクティブ/リフレッシュのコマンド発行制約
tRREFD:異なるバンクグループ間のリフレッシュの後のアクティブ/リフレッシュのコマンド発行制約
tREFI:メモリのセルがリフレッシュなしで電荷保持可能な時間
tRCDRD:同一バンク内のアクティブの後のリードのコマンド発行制約
tCCDL:同一バンクグループ内のコラムコマンド間の最小間隔
tCCDS:異なるバンクグループ間のコラムコマンド間の最小間隔
tRL:リード後データ端子DQにデータが出力されるまでのレイテンシ
MAC:メモリアクセスコントローラ
USR_RQTR:ユーザリクエスタ(ユーザ要求回路)
REF_RQTR:リフレッシュリクエスタ(リフレッシュ要求回路)
SCB_RQTR:スクラビングリクエスタ(スクラビング要求回路)
REQ:メモリアクセス要求、メモリ要求
USR_REQ:ユーザ要求
REF_REQ:リフレッシュ要求
SCB_REQ:スクラビング要求
REQ_SEL:リクエストセレクタ、要求選択部(要求選択回路)
CMD_GEN:コマンド発行部(コマンド発行回路)
REQ_PIPE:リクエストパイプライン回路(要求パイプライン)
R_CMD_GEN:ロウコマンド発行部
R_CMD_GEN_CIR:ロウコマンド発行回路
C_CMD_GEN:コラムコマンド発行部
C_CMD_GEN_CIR:コラムコマンド発行回路
tRRDS:異なるバンクグループ間のアクティブの後のアクティブ/リフレッシュのコマンド発行制約
tRREFD:異なるバンクグループ間のリフレッシュの後のアクティブ/リフレッシュのコマンド発行制約
tREFI:メモリのセルがリフレッシュなしで電荷保持可能な時間
tRCDRD:同一バンク内のアクティブの後のリードのコマンド発行制約
tCCDL:同一バンクグループ内のコラムコマンド間の最小間隔
tCCDS:異なるバンクグループ間のコラムコマンド間の最小間隔
tRL:リード後データ端子DQにデータが出力されるまでのレイテンシ
Claims (5)
- 入力されるメモリ要求に応答してユーザ要求を発行し、第1の発行間隔でリフレッシュ要求を発行し、第2の発行間隔でスクラビング要求を発行する要求発行部と、
前記ユーザ要求のメモリアクセスを実行するとき、ロウコマンドバスを介してアクティブをメモリに発行し、前記アクティブ発行後コラムコマンドバスを介してM回のリードを前記メモリに発行し、
前記リフレッシュ要求の前記メモリアクセスを実行するとき、前記ロウコマンドバスを介してリフレッシュを前記メモリに発行し、
前記スクラビング要求の前記メモリアクセスを実行するとき、前記ロウコマンドバスを介して前記アクティブを前記メモリに発行し、前記アクティブ発行後前記コラムコマンドバスを介して前記Mより大きいN回のリードを前記メモリに発行する、コマンド発行部とを有する、メモリアクセスコントローラ。 - 前記Nは前記Mの整数倍であり、
前記コマンド発行部は、
前記スクラビング要求の前記アクティブを発行後に前記ユーザ要求の前記アクティブを発行できないタイミングで、前記リフレッシュを発行する、請求項1に記載のメモリアクセスコントローラ。 - 前記第2の発行間隔が前記第1の発行間隔のK倍であり、前記Kは正の整数であり、
前記要求発行部は、前記第1の発行間隔でリフレッシュ要求を発行し、前記リフレッシュ要求をK回発行するたびにスクラビング要求を発行し、
前記コマンド発行部は、前記要求発行部が発行する前記リフレッシュ要求及び前記スクラビング要求に応答して、前記スクラビング要求のアクティブと前記リフレッシュを発行する、請求項2に記載のメモリアクセスコントローラ。 - 更に、
前記要求発行部により発行されたユーザ要求が前記メモリのコマンド発行制約及びデータ端子競合制約を満たしているか否かをチェックするユーザ要求ビジーチェック部と、
前記要求発行部により発行されたリフレッシュ要求が前記コマンド発行制約を満たしているか否かをチェックするリフレッシュ要求ビジーチェック部と、
前記要求発行部により発行されたスクラビング要求が前記コマンド発行制約及びデータ端子競合制約を満たしているか否かをチェックするスクラビング要求ビジーチェック部と、
前記スクラビング要求と前記ユーザ要求と前記リフレッシュ要求が共に前記コマンド発行制約及び必要な前記データ端子競合制約を満たした場合、前記スクラビング要求を第1優先に実行対象に選択して前記コマンド発行部に通知する要求セレクタを有する、請求項2に記載のメモリアクセスコントローラ。 - 入力されるメモリ要求に応答してユーザ要求を発行し、第1の発行間隔でリフレッシュ要求を発行し、第2の発行間隔でスクラビング要求を発行する要求発行処理と、
前記ユーザ要求のメモリアクセスを実行するとき、ロウコマンドバスを介してアクティブをメモリに発行し、前記アクティブ発行後コラムコマンドバスを介してM回のリードを前記メモリに発行し、
前記リフレッシュ要求の前記メモリアクセスを実行するとき、前記ロウコマンドバスを介してリフレッシュを前記メモリに発行し、
前記スクラビング要求の前記メモリアクセスを実行するとき、前記ロウコマンドバスを介して前記アクティブを前記メモリに発行し、前記アクティブ発行後前記コラムコマンドバスを介して前記Mより大きいN回のリードを前記メモリに発行する、コマンド発行処理とを有する、メモリアクセスコントロール方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2021180595A JP2023069039A (ja) | 2021-11-04 | 2021-11-04 | メモリアクセスコントローラ及びメモリアクセスコントロール方法 |
US17/853,972 US11798611B2 (en) | 2021-11-04 | 2022-06-30 | Memory access controller with refresher and scrubbing mechanism and memory access control method thereof |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2021180595A JP2023069039A (ja) | 2021-11-04 | 2021-11-04 | メモリアクセスコントローラ及びメモリアクセスコントロール方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2023069039A true JP2023069039A (ja) | 2023-05-18 |
Family
ID=86145175
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2021180595A Pending JP2023069039A (ja) | 2021-11-04 | 2021-11-04 | メモリアクセスコントローラ及びメモリアクセスコントロール方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US11798611B2 (ja) |
JP (1) | JP2023069039A (ja) |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0600137A1 (en) * | 1992-11-30 | 1994-06-08 | International Business Machines Corporation | Method and apparatus for correcting errors in a memory |
JP2006107614A (ja) | 2004-10-05 | 2006-04-20 | Canon Inc | メモリコントローラ |
JP4786209B2 (ja) | 2005-03-18 | 2011-10-05 | パナソニック株式会社 | メモリアクセス装置 |
-
2021
- 2021-11-04 JP JP2021180595A patent/JP2023069039A/ja active Pending
-
2022
- 2022-06-30 US US17/853,972 patent/US11798611B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
US20230136432A1 (en) | 2023-05-04 |
US11798611B2 (en) | 2023-10-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9653141B2 (en) | Method of operating a volatile memory device and a memory controller | |
US9978430B2 (en) | Memory devices providing a refresh request and memory controllers responsive to a refresh request | |
US9293188B2 (en) | Memory and memory controller for high reliability operation and method | |
US8862973B2 (en) | Method and system for error management in a memory device | |
JP5157207B2 (ja) | 半導体メモリ、メモリコントローラ、システムおよび半導体メモリの動作方法 | |
US7187608B2 (en) | System and method for controlling the access and refresh of a memory | |
US10957413B2 (en) | Shared error check and correct logic for multiple data banks | |
JP5430484B2 (ja) | 半導体記憶装置、及びその制御方法 | |
US9281046B2 (en) | Data processor with memory controller for high reliability operation and method | |
JP5908375B2 (ja) | 半導体記憶装置 | |
TW201826270A (zh) | 記憶體裝置以及其刷新方法及記憶體系統 | |
JP2011060162A (ja) | メモリ制御装置 | |
JP2008210088A (ja) | メモリコントローラ、半導体メモリのアクセス制御方法およびシステム | |
JP6370528B2 (ja) | メモリデバイス群間でのチェックビットメモリデバイスの共有 | |
TWI639920B (zh) | 記憶體控制器及其控制方法以及記憶體及其控制方法 | |
JP6004463B2 (ja) | 記憶装置及びその制御方法 | |
US20230410875A1 (en) | Memory device and defense method thereof | |
JP2023069039A (ja) | メモリアクセスコントローラ及びメモリアクセスコントロール方法 | |
WO2016185574A1 (ja) | メモリ装置 | |
JP6040627B2 (ja) | メモリ制御装置、情報処理装置およびメモリ制御装置の制御方法 | |
JP5861553B2 (ja) | メモリ制御方法、メモリコントローラ及び電子装置 | |
JP2009217310A (ja) | メモリアクセス方法及びメモリアクセス装置 | |
US11797462B2 (en) | Arithmetic processing device and memory access method | |
TW202407702A (zh) | 虛擬靜態隨機存取記憶體 | |
JP2006004464A (ja) | メモリ制御装置 |