(58)【調査した分野】(Int.Cl.,DB名)
前記順序は、前記所定の時間窓における最近のアクセスの特徴に基づいており、前記最近のアクセスの特徴には、前記所定の時間窓における特定のロウに対するアクティベートコマンドの数が含まれる、請求項1に記載のデータプロセッサ。
前記メモリアクセスエージェント(310,320)は、前記所定の時間窓から前記所定の時間窓の間の定期的なリフレッシュ時間を差し引いて正味の時間窓を取得し、前記正味の時間窓を前記メモリ(100)の前記ロウに対するアクティベートコマンドの許容数で割って前記ロウサイクルページ時間を取得することによって、前記ロウサイクルページ時間を決定する、請求項1に記載のデータプロセッサ(300)。
前記アービタ(420)は、前記適格性回路(510)に接続されたエントリ準備回路(520)であって、前記キュー(410)の対応するエントリが選択に適しているか否かを、前記対応するエントリのアドレスが前記アドレスと一致する場合に前記準備完了信号に基づいて判別するエントリ準備回路(520)を備え、前記アービタ(420)は、適しているエントリの中のエントリを前記キュー(410)から選択する、請求項6に記載のメモリコントローラ(400)。
前記アービタ(420)は、前記適格性回路(510)を含み、ロウサイクル時間に対する前記ロウサイクルページ時間の比率に対応する数の複数の適格性回路を備える、請求項6に記載のメモリコントローラ(400)。
前記順序は、前記所定の時間窓における最近のアクセスの特徴に基づいており、前記最近のアクセスの特徴には、前記所定の時間窓における特定のロウに対するアクティベートコマンドの数が含まれる、請求項10に記載のデータ処理システム。
前記メモリシステム(720)は、複数のダブルデータレート(DDR)ダイナミックランダムアクセスメモリ(DRAM)(210)を有するデュアルインラインメモリモジュール(DIMM)(200)を備え、
前記データプロセッサ(710)は、前記DIMM(200)の直列プレゼンス検出(SPD)読出し専用メモリ(ROM)(220)内のレジスタ(222)を読出すことによって、前記ロウサイクルページ時間を決定し、
前記データプロセッサ(710)は、不揮発性メモリ(740)に記憶された基本入出力システム(BIOS)のメモリシステム初期化部(742)の制御の下で、前記レジスタ(222)を読出す、請求項10に記載のデータ処理システム(700)。
前記データプロセッサ(710)は、前記所定の時間窓から前記所定の時間窓の間の定期的なリフレッシュ時間を差し引いて正味の時間窓を取得し、前記正味の時間窓を前記ロウに対する前記アクティベートコマンドの許容数で割って前記ロウサイクルページ時間を取得することによって、前記ロウサイクルページ時間を決定する、請求項10に記載のデータ処理システム(700)。
【発明を実施するための形態】
【0005】
以降の説明では、異なる図面において同一の符号を使用することによって、同様または同一のアイテムを示す。特に断りのない限り、「接続された(coupled)」という単語及びこれに関連する動詞には、当該技術分野において周知の手段によって直接接続及び間接的な電気接続の両方の意味が含まれている。そして、特に断りのない限り、直接接続に関する任意の説明には、好適な形態の間接的な電気接続を用いた代替的な実施形態も含まれる。
【0006】
以降に開示されるデータプロセッサは、ロウサイクルページ時間(t
RCPAGE)を考慮してアクセスをスケジュールするメモリコントローラにおけるデータ破損問題に対処する。ロウサイクルページ時間は、所定の時間窓における、メモリ内のロウに対するアクティベートコマンド(activate commands)の許容数を示している。データプロセッサは、メモリコントローラに提供するメモリアクセスを生成するメモリアクセスエージェントを備える。メモリコントローラは、メモリアクセスエージェントに接続されており、ロウサイクルページ時間を含むアクセススケジュールを、メモリの特性に基づく順序で生成する。
【0007】
一形態において、メモリの第1のページに対する第1のメモリアクセスがディスパッチされる。メモリの第1のページに対する第2のメモリアクセスが受信されたときに、第2のメモリアクセスのディスパッチは、第1のメモリアクセスのディスパッチからの経過時間がロウサイクルページ時間より長くなるまで禁止される。
【0008】
図1は、データのアップセットに影響を受けやすいメモリ100を示すブロック図である。メモリ100は、ダイナミックランダムアクセスメモリ(DRAM)であって、概して、ロウパス(row path)110と、8つのメモリバンク120と、カラム回路140と、データパス150と、「DQ
i」と表示された代表的な1つのデータパッドセット160と、を備えている。
【0009】
ロウパス110は、例えば、「バンク0」と表示された第1のバンクに対するロウアドレスラッチデコーダ(row address latch and decoder)112や、「バンク7」と表示された最後のバンクに対するロウアドレスラッチデコーダ114等のように、各バンクに対するロウアドレスラッチデコーダを備える。ロウパス110は、「A[13:0]」と表示されたロウアドレスと「BA[2:0]」と表示されたバンクアドレスとを受信するためのインプットセットと、アウトプットセットと、を有している。8つのメモリバンク120の各々は、例えばバンク0のメモリアレイ122及びページバッファ124等のように、関連するメモリアレイ及びページバッファを備えている。8つのメモリバンク120の各々は、対応するロウアドレスラッチデコーダのアウトプットセットに接続されたインプットセットを有している。
【0010】
カラム回路140は、カラムスイッチ142のセットと、カラムデコーダ144と、を備えている。カラムスイッチ142のセットは、各メモリバンク120のページバッファに接続されており、カラム選択信号を受信するためのインプットセットを有している。カラムデコーダ144は、8つのバンクのうちBA[2:0]によって選択された1つのカラムを選択するためにインプットA[13:0]上で実行されるカラムアドレスを受信するインプットセットと、カラムスイッチ142のインプットに接続されたアウトプットセットと、を有している。
【0011】
データパス150は、読出しデータパス152と、書込みデータパス154と、を備えている。読出しデータパス152は、カラムスイッチ142に接続されたインプットセットと、データパッド160に接続されたアウトプットセットと、を有している。書込みデータパス154は、データパッド160に接続されたインプットセットと、カラムスイッチ142に接続されたアウトプットセットと、を有している。
【0012】
メモリ100は、動作中、一実施形態においてメモリバンクでの並行動作を許可する。メモリ100は、例えばDDR3またはDDR4等のように電子素子技術連合評議会(JEDEC)が公表したダブルデータレート(DDR)規格のうち1つの規格に対する互換性を有する。例えばデータプロセッサ等のメモリアクセスエージェントは、データにアクセスするために、アクティベート(ACT)コマンドを発行してメモリバンク内のロウをアクティベートする。選択されたロウ(例えば、バンク0内のロウ125等)のメモリセルのデータは、ACTコマンドに応じて、対応するページバッファ(例えば、ページバッファ124等)に記憶される。DRAMでは、データ読出しがメモリセルのコンテンツに対して破壊的である一方で、データのコピーがページバッファ124に記憶される。メモリアクセスエージェントは、ロウ125内のデータへのアクセスを終了した後に、プリチャージ(PRE)コマンドを発行してロウを閉じる。ページバッファ124内のデータは、PREコマンドによって、ロウ125のダイナミックメモリセルに復元される。
【0013】
メモリ100がDRAMであることから、メモリセルの電荷はゆっくりと漏電する。このため、データは定期的にリフレッシュされる必要がある。リフレッシュ間隔(t
REFI)は、脆弱なメモリセルが漏電によって保有コンテンツを失うであろう時間に基づくものである。例えば、DDR4 DRAMにおいて、t
REFIは、通常の環境では7.8マイクロ秒(μs)に等しい。
【0014】
先進的なディープサブミクロン製造プロセスを用いて構成されたDRAMにおいて、所定のロウの度重なるアクティベーションは、物理的に隣接するロウのメモリセルに記憶されたデータをアップセットし得る。例えば、ロウ125がアクティベート及びプリチャージされる度に、隣接するロウ126,127のメモリセルの電荷が変更される。ロウ126,127のメモリセルがリフレッシュされる前にロウ125があまりにも頻繁にアクティベート及びプリチャージされると、ロウ126,127のデータが破損する場合がある。
【0015】
メモリを再設計することなくデータ破損問題を緩和するために、発明者は、1つのリフレッシュ間隔内に所定のロウのメモリセルがアクティベートされる回数を考慮して、アクセススケジュールを生成するメモリコントローラを有するデータプロセッサを開発した。例えば、メモリコントローラは、アクセス率が高すぎる場合に、特定の時間が経過するまでアクセスを遅延させる。この時間は、リフレッシュ時間窓においてメモリが安全にアクセスできる回数に関連する。
【0016】
図2は、いくつかの実施形態による、
図1のメモリを組込むことが可能なデュアルインラインメモリモジュール(DIMM)200の平面図である。DIMM200は、概して、メモリチップ210のセットと、直列プレゼンス検出(SPD)読出し専用メモリ(ROM)220と、を多層プリント配線基板(PCB)上に備えている。メモリチップ210は、それぞれ
図1のメモリ100に対応し得る8つのx8メモリチップを備えている。いくつかの実施形態において、メモリチップ210は、DDR3 SDRAMである。いくつかの実施形態において、メモリチップ210は、DDR4 SDRAMである。
【0017】
いくつかの実施形態において、DIMM200は、メモリチップ210のように配置された第2のメモリデバイスセットを基板の裏側に有してもよいことに留意されたい。いくつかの実施形態において、各メモリチップは、チップ毎に複数のランクを形成するために、チップオンチップ又は積層ダイ技術が用いられた複数のメモリダイを有する半導体パッケージを含み得る。さらに、DIMM200は、
図1のメモリ100のようなメモリチップを使用可能なメモリシステムの代表的なものである。別の実施形態において、メモリ100は、シングルインラインメモリモジュール(SIMM)に用いられてもよいし、データプロセッサチップとして同一のPCBに搭載されてもよい。
【0018】
SPD ROM220は、DIMM200の様々な特性を示す値を記憶する。JEDECは、これらのビットの位置と意味を、例えばDDR3 DRAMに関する規格JESD21−Cの添付Kに定めている。最近では、データアップセット問題に対するメモリチップ210の感受性(susceptibility)を製造者が明示することを可能にする、SPD規格に対する追加が提案されている。従って、
図2に示すように、SPD ROM220は、メモリのデータアップセット特性値に関連するフィールドを有するバイト222を備えている。バイト222は、以前のバージョンのSPD ROMの仕様によって確保されていたSPD ROM220内のアドレス(例えば、バイト$41等)に配置されている。
【0019】
バイト222は、予備のビット[7:6]と、最大アクティベートウィンドウ(t
MAW)を定義するビット[5:4]と、「無制限MAC」と表されたビット[3]と、最大アクティビティカウント(MAC)を定義する[2:0]と、を含む。これらのビットの意味は、以下の通りである。ビット[3]が「1」に設定される場合には、メモリチップ210内のロウは、データを破損することなく無制限の回数でアクティベート可能であり、ビット[2:0]には000が設定される。この設定は、例えば、ACT率に関わらずエラーが全く予期されないほど、データアップセットの十分小さい設計に対応している。ビット[3]が「0」に設定される場合には、ビット[2:0]は、ビット[5:4]においてt
MAWにより定義される期間にわたるMACを定義する。例えば、
図2に示すように、ビット[5:4]が00、ビット[3]が0、ビット[2:0]が100に設定される場合には、メモリチップ210内のロウは、データアップセット問題による破損なしに、64ミリ秒(ms)時間窓内で400,000回までアクティベート可能である。SPD ROM220のバイト222にこれらの特性値を記憶することは、ACT率を特定する技術の一つに過ぎないことが理解されるべきである。
【0020】
後述するように、メモリコントローラは、MAC及びt
MAWに基づくロウページサイクル時間(t
RCPAGE)として知られる値に応じて、最後のアクティベートからロウページサイクル時間が経過するまで、同一のロウに対するアクティベートを選択的に禁止する。メモリコントローラは、アクティベートが頻繁に行らないことを確実にすることによって、データアップセット問題によるデータ破損を回避できる。
【0021】
図3は、いくつかの実施形態による、メモリコントローラ342を有するデータプロセッサ300を示すブロック図である。データプロセッサ300は、概して、CPU部310と、GPUコア320と、相互接続回路330と、メモリアクセスコントローラ340と、入出力コントローラ350と、を備えている。
【0022】
CPU部310は、それぞれ「コア0」、「コア1」、「コア2」、「コア3」と表されたCPUコア311〜314と、共有3次(L3)キャッシュ316と、を備えている。各CPUコアは、命令セットからの命令を実行可能であり、一意のプログラムスレッドを実行し得る。各CPUコアは、自ら1次(L1)及び2次(L2)キャッシュを備えるが、共有L3キャッシュ316は、全てのCPUコアに共通であって、共有される。共有L3キャッシュ316は、メモリアクセスエージェントとして動作し、キャッシュラインフィルに関するメモリ読出しバーストと、キャッシュラインライトバックに関するメモリ書込みバーストと、を含むメモリアクセス要求を提供する。
【0023】
GPUコア320は、オンチップグラフィックプロセッサであって、メモリアクセスエージェントとして動作する。
【0024】
相互接続回路330は、概して、システム要求インターフェイス(SRI)/ホストブリッジ332と、クロスバー334と、を一般に備える。SRI/ホストブリッジ332は、共有L3キャッシュ316及びGPUコア320からのアクセス要求のキューを生成し、未処理のトランザクション及びこれらのトランザクションの完了を管理する。クロスバー334は、5つの双方向ポート間のクロスポイントスイッチであり、そのうち1つのポートは、SRI/ホストブリッジ332に接続されている。
【0025】
メモリアクセスコントローラ340は、オフチップDRAMに接続するために、クロスバー334に接続された双方向ポートを有している。メモリアクセスコントローラ340は、概して、メモリコントローラ342と、「PHY」と表された物理インターフェース回路344と、を備えている。メモリコントローラ342は、CPUコア311〜314及びGPUコア320からの要求に対して特定の読出し及び書込しトランザクションを生成し、関連するアドレスに関してトランザクションをまとめる。メモリコントローラ342は、DRAMの初期化、リフレッシュ、ページの開閉、メモリバスの効率的な使用のためのトランザクションのグループ化等のオーバーヘッドに対処する。物理インターフェース回路344は、物理的シグナリングを管理することによって、例えばDIMM等の外部DRAMに対してインターフェースを提供する。メモリコントローラ342及び物理インターフェース回路344は共に、少なくとも1つの特定のメモリタイプをサポートしており、例えばDDR3及びDDR4の両方に対応してもよい。
【0026】
入出力コントローラ350は、1つ以上の高速インターフェースコントローラを備えている。例えば、入出力コントローラは、ハイパートランスポートリンクプロトコルに応じた3つのインターフェースコントローラを備えてもよい。
【0027】
データプロセッサ300は、CPUコア及びGPUコアの両方を備えていることから、加速処理ユニット(APU)として知られている。この多様なデータアクセスエージェントは、データアップセット問題を引き起こす可能性のあるいくつかのアクセスパターンを生成し得る。例えば、CPUコア311〜314のうち1つのCPUコアは、同一のメモリロウの頻繁なアクティベーションを引き起こすパターンにおいて、メモリに記憶されたデータをストライドするプログラムスレッドを実行し得る。別の例では、CPUコア311〜314のうち1つのCPUコアまたはGPUコア320は、同一のロウのデータ及びキャッシュ不可領域のデータにアクセスを繰り返し得る。さらに別の例では、CPUコア311〜314のうち複数のCPUコアまたはGPUコア320は、同一のデータ要素にアクセスして修正を行い得る。この場合、共有L3キャッシュ316は、1つのコアによって修正されたデータに対して別のコアがアクセスする度に、メインメモリを更新するポリシーに従い得る。他のシナリオも可能である。
【0028】
図4は、いくつかの実施形態による、
図3のメモリコントローラ342を示すブロック図である。メモリコントローラ342は、キュー410と、アービタ420と、マルチプレクサ430と、を備える。キュー410は、クロスバー334から受信したメモリアクセス要求を記憶する。メモリアクセス要求は、メモリの任意のバンクに対する読出し又は書込みサイクルとなり得る。また、メモリアクセス要求は、データプロセッサ300の何れか1つのメモリアクセスエージェントによって生成される。
図4の例において、キュー410は、全てのバンク及びランクに対する合計16のエントリを有しており、各エントリは、アクセスアドレスと、書込みサイクルの場合にはデータと、その相対年代(relative age)を示すタグと、を記憶する。アービタ420は、エントリの属性を読み出すためにキュー410の各エントリに双方向に接続されており、ディスパッチされたアクセスを受信する追加インプットと、ACT及びPREコマンド等のプロトコルコマンドを提供するアウトプットと、物理インターフェース回路344に対して送信する16エントリのうち1つのエントリを選択する制御アウトプットと、を有している。マルチプレクサ430は、キュー410の各エントリに接続された16のインプットと、アービタ420のアウトプットに接続された追加インプットと、アービタ420のアウトプットに接続された制御インプットと、物理インターフェース回路344に対してディスパッチされたアクセスを提供するアウトプットと、を有している。
【0029】
動作中、キュー410は、クロスバー334から受信したアクセスを記憶し、その相対年代を示すようにタグを割当てる。アービタ420は、キュー410の何れの保留中アクセスを次のスケジュール対象として物理インターフェース回路344にディスパッチするかを、タイミング適格性、経過時間、公平性等のポリシーのセットに基づいて決定する。このため、アービタ420は、メモリシステムの各バンク及びランク内で開かれているページを示すページテーブルを備え得る。一般的に、アービタ420は、同一のロウに対する複数のアクセスを一緒にスケジュールする一方で、同一のバンク内の別のロウに対するより古いアクセスを遅らせることによって、メモリシステムバスの効率性を向上させることが可能である。従って、アービタ420は、アクティベート中のロウとは異なるロウに対するアクセスを選択的に延期することにより、効率性を向上させる。また、アービタ420は、アクセスの待ち時間を制限するために、エントリの年代タグを使用する。従って、アービタ420は、メモリ内のあるページへのアクセスが特定の時間保留されている場合に、メモリ内の別の開いたページに対する一連のアクセスを中断する。また、アービタ420は、オーバーヘッドに対処するために、所定のメモリバンクに対するACT及びPREコマンドの間に別のメモリバンクに対するアクセスをスケジュールする。
【0030】
また、アービタ420は、同一のロウに対して繰り返されるACT及びPREサイクルによって生じるデータアップセット問題によるデータ破損を回避するために、タイミング適格性を判定する。アービタ420は、データ破損を回避するために、所定の時間窓(t
MAW)内における、メモリ内のロウに対するアクティベートコマンドの許容数(すなわち、MAC)に反比例するロウサイクルページ時間(t
RCPAGE)という新たなタイミングパラメータを定義する。
【0031】
いくつかの実施形態において、t
RCPAGEは、MAC数によって分割された時間窓t
MAWと近似可能であり、すなわちt
RCPAGE=t
MAW/MACと表される。例えば、リフレッシュ間隔が64msであって、MAC数が400Kである場合には、t
RCPAGE=64ms/400,000=160ナノ秒(ns)となる。アービタ420は、160ナノ秒の時間窓において同一のロウに対してACTコマンドとなる命令をディスパッチしないことによって、データアップセット問題によるデータ破損を回避し得る。
【0032】
別の実施形態において、t
RCPAGEは、リフレッシュ時間を考慮した2次計算に従って決定され得る。各リフレッシュ(REF)コマンドがt
RFCと等しい時間を消費する場合には、t
MAWは、t
RFCに対してt
MAW内のリフレッシュサイクルの回数を掛けた時間分削減され得る。すなわち、t
RCPAGE=(t
MAW−t
RFC*(t
MAW/t
REFI))/MACと表される。DDR4 DRAMの異なるDRAM密度に関するt
RCPAGEの例示的計算を、以下の表1に示す。
【表1】
【0033】
例えば、リフレッシュ間隔(t
REFI)が7.8μs(7.8125μs)である場合、64msの基準間隔において、各ロウは、8192回リフレッシュされ得る。リフレッシュ時間が160nsの場合には、64msの間隔において、1,310,720nsがリフレッシュに費やされる。従って、有効基準間隔は、62,689,280nsである。当該間隔において可能なACTの理論値は、62,689,280/t
RC=1,319,774である。一方、t
RCPAGEは、62,689,280/100,000=626.89nsである。従って、DRAM製造者が64msの基準窓において100Kアクセスのみを許可する場合には、メモリアクセスコントローラ340は、同一のロウに対するACTが626.89nsごとに2度以上起こらないことを確実にしなければならない。
【0034】
図5は、いくつかの実施形態による、
図4のメモリコントローラ400等のメモリコントローラの一部500を示すブロック図である。一部500は、マルチプレクサ430と、代表適格性回路(representative eligibility circuit)510及び代表エントリ準備回路(representative entry ready circuit)520を備えるアービタ420の一部と、を示している。
【0035】
適格性回路510は、j番目の適格性回路であり、適格性回路セットの代表である。アービタ420は、経過時間がt
RCPAGEよりも短い可能ACTの数に対して十分なアドレスレジスタ及びカウンタのみを必要とする。このため、アービタ420は、t
RCPAGE/t
RC分の回路を備える(t
RCPAGE/t
RCは整数に切り上げられる)。適格性回路510は、カウンタ512と、任意のハッシュ回路514と、アドレスレジスタ516と、を備える。カウンタ512は、「ACT」と表された信号を受信するロードインプットと、データインプットと、「READY(準備完了)」と表されたアウトプットと、を有する。ハッシュ回路514は、マルチプレクサ430のアウトプットから出力されたmビットのアドレスを受信するmビットインプットと、アウトプットと、を有している。アクセスの一意的なバンク及びロウを特定するには、mビットで十分である。アドレスレジスタ516は、ハッシュ回路514のアウトプットに接続されたnビットインプットと、nビットアウトプットと、を有しており、アービタ420が最近発行した特定のACTコマンドに関するアドレス値を記憶する。
【0036】
エントリ準備回路520は、i番目のエントリ準備回路であり、キュー410の各エントリに対応するエントリ準備回路セットの代表である。エントリ準備回路520は、コンパレータ522と、ORゲート524と、ANDゲート526と、を備える。コンパレータ522は、アドレスレジスタ516のアウトプットに接続された第1のインプットと、エントリのアドレスを受信するためにキュー410の各エントリに接続された第2のインプットと、「MATCH[i,j]」と表された信号を提供するアウトプットと、を有している。ORゲート524は、カウンタ512のアウトプットに接続された第1のインプットと、コンパレータ522のアウトプットに接続された第2のインプットと、アウトプットと、を有している。ANDゲート526は、ORゲート526のアウトプットに接続された第1のインプットと、別の対応するORゲートのアウトプットに接続された追加インプットと、「「ENTRY[i]READY」と表された信号を提供するためのアウトプットと、を有している。
【0037】
レジスタ530は、カウンタ512のデータインプットに接続されたアウトプットを有する。レジスタ530は、後述する方法でt
RCPAGE値を記憶する。
【0038】
動作中、ACTがキュー410からマルチプレクサ430を介してディスパッチされる度に、マルチプレクサ430は、例えば輪番するt
RCPAGE/t
RC分の適格性回路セットのカウンタ512等のカウンタに対してt
RCPAGEの値をロードするACT信号をアクティベートする。カウンタ512は、ゼロまでカウントダウンし、ゼロになった時点でREADY信号をアクティベートする。コンパレータ522は、キュー410のi番目のエントリにおけるアドレスがj番目の適格性回路に対応付けられたアドレスと一致する場合に、( ̄MATCH[i,j])信号を出力する。ORゲート524は、j番目のACTが現時点からt
RCPAGEより前に生じた場合、又は、ENTRY[i]のアドレスがj番目の適格性回路のアドレスと一致しない場合に、ロジックハイ値を出力する。エントリ準備回路520内の全てのORゲートのアウトプットがロジックハイの場合に、ANDゲート526は、ENTRY[i]に対応するロウがアクティベートされる準備が整ったことを示すために、ロジックハイの状態でENTRY[i]READY信号をアクティベートする。
【0039】
アービタ420の残りのロジックは、ENTRY[i]READY信号を受信し、ENTRY[i]READY信号がアクティベートされているか否か、及び、他のスケジュール制約が満たされた場合の両方に基づいて、アクセスの実行を選択的に許可する。
【0040】
ハッシュ回路514は任意に設けられてよい。ハッシュ回路514が設けられている場合には、ハッシュ回路514は、インプットアドレスのmビットを、適格性回路のより小さな数のnビットに関連付ける。例えば、t
RCPAGEがt
RCと比べて大きくなった場合、設計者は、t
RCPAGE/t
RCセット分のカウンタ及びコンパレータを実装すると費用がかかりすぎると感じるであろう。ハッシュ機能は、実装されたハードウェアに基づいて選択され及びサイズ変更可能であってよい。よって、回路サイズと不定期な誤検知の間のトレードオフが可能になる。誤検知は、ロウアドレスXとロウアドレスZの両方が同一のnビットアドレスにハッシュされる場合に起こり得る。例えば、ロウXに関してt
RCPAGEがまだ終了しておらず、且つ、ロウXとロウZのハッシュ機能が同等である場合に、ロウZに対するアクセスは、ロウアドレスが実際違っているにも関わらず誤って待つ必要があり得る。誤検知は、スケジュール上の不利益を生じる。
【0041】
図6は、
図4のメモリコントローラ400の動作を理解する上で役立つタイミング
図600である。
図6において、横軸は時間をnsで表し、縦軸は様々な信号の振幅をボルトで表す。
図6は、CK/( ̄CK)信号対610と、コマンド(CMD)信号セット620と、を含む2つの注目信号グループを示している。DDR DRAMにおいて、CMD信号は、( ̄RAS)、( ̄CAS)、( ̄CE)、( ̄WE)を含む様々な制御信号により構成されており、DDR規格に従う特定のコマンドに対応付けられている。また、
図6には、「t
0」、「t
1」、「t
2」、「t
3」、「t
4」、「t
5」、「t
6」と表された時点を含むいくつかの注目時点が示されている。
【0042】
DDR DRAMにおいて、コマンドは、CKの立上がりエッジと( ̄CK)の立下りエッジに登録される。メモリ100は、時点t
0において、「ACTX」と表されたロウXに対するアクティベートコマンドを登録する。t
RCは、DDR規格に従い、アクティベートコマンド間の最短時間を特定する。
図6の例において、別のアクティベートコマンドが発生可能となる最も早い時点は、t
2である。メモリ100は、時点t
1において、ロウXに対するPREコマンドを受信する。ロウXは、DDR規格に従い、t
2からt
RCが経過した後に再びアクティベート可能となり得る。
【0043】
しかしながら、アービタ420は、t
RCPAGEパラメータに基づいて適格性を強制する。従って、アービタ420は、t
0からt
RCPAGEが経過するまで、ロウXがアクティベートされないようにする。この場合、ロウXは、t
4まで再びアクティベートされないので、ロウXのアクティベートに対して、t
3からt
4までの時間に等しい追加の遅延時間が挿入される。同様に、アービタ420は、t
2からt
RCPAGEが経過するまで、ロウYがアクティベートされないようにする。この場合、ロウYは、t
6まで再びアクティベートされないので、時点t
5がt
4からt
RCが経過した時点を表す場合には、アービタ420は、ロウYのアクティベートに対して、t
5からt
6までの時間に等しい追加の遅延時間を挿入する。
【0044】
特定のロウが新たなACTコマンドを受けられない間にメモリコントローラ400が有用な追加作業を実行できるので、t
RCPAGEに基づく新たなACTコマンドの発行の遅延は、大抵のメモリアクセスパターンに関するパフォーマンスを著しく低下させない。一方、これにより、t
MAW内のMACを超え得る頻繁なロウアクティベートの持続パターンを含む不定期なメモリアクセスパターンにおけるロウアップセット問題に起因するデータ破損を、低減又は除去し得る。当シナリオにおいて、データ破損を防ぐためには、わずかに低下したパフォーマンスを容認し得る。
【0045】
図7は、いくつかの実施形態による、データ処理システム700を示すブロック図である。データ処理システム700は、加速処理ユニット(APU)710で形成されたデータプロセッサと、メモリシステム720と、「サウスブリッジ」として知られる入出力(I/O)コントローラ730と、基本入出力システム(BIOS)読出し専用メモリ(ROM)740と、を備えている。データプロセッサ710は、メモリアクセス動作を実行するためにメモリシステム720に接続されたPHY712を有している。この例において、メモリシステム720は、DIMM(例えば、ロウアップセット問題に関連するデータを記憶する
図2のDIMM200等)である。また、データプロセッサ710は、高速I/O回路714を介してI/Oコントローラ730に接続されており、I/Oコントローラ730は、メモリシステム720及びBIOS ROM740の両方に接続されている。
【0046】
初期化において、データプロセッサ710は、BIOS ROM740に記憶された命令をI/Oコントローラ730を介して読出すことにより、データ処理システム700を初期化する。BIOS ROM740は、メモリシステム初期化部742を備える。メモリシステム初期化部742は、メモリシステム720のSPD ROMに記憶されたロウアップセットパラメータをデータプロセッサ710に読出させ、t
RCPAGEを計算させ、そして、t
RCPAGEをレジスタ530に記憶させる。
【0047】
図8は、
図4のメモリコントローラ400に使用される方法800のフローチャートを示す図である。ステップ810において、例えばBIOSの制御の下でDIMMのSPD ROMを読出し、上記の表1に関して説明したようにt
RCPAGEを計算することにより、t
RCPAGEが決定される。ステップ820において、ロウ125は、時点t
0においてアクティベートされる。アクティベートは、アービタ420によってキュー410から選択された読出し又は書込みアクセスの後に、ロウ125を開くために行われる。ステップ830において、例えば、同一のバンク内の別のページに対する介入アクセス、又は、同一のバンクに対する介入リフレッシュ動作のために、ロウ125がプリチャージされる。ステップ840において、ロウ125に対する第2のメモリアクセスを受信する。この第2のメモリアクセスは、ステップ830におけるロウ125に対する介入PREコマンドに起因して、新たなACTコマンドを必要とする。ループ850は、ロウ125がアクティベートするのに適しているか否かを判定する。デシジョンボックス852において、経過時間(すなわち、時点t
0から現時点までの継続時間)がt
RCPAGEと比較される。例えば、上記の
図5に関して説明したように、ステップ820においてt
RCPAGEの値でカウンタを開始し、ステップ840において第2のメモリアクセスを受信する時点までに当該カウンタがゼロまでカウントダウンしたか否かを検出することによって、比較が行われ得る。t
RCPAGEの時間が経過していない場合には、ステップ854において、ロウ125のアクティベートを禁止する。経過している場合には、ステップ860において、メモリシステム内の他の条件が満たされているか否かを判別する。例えば、ある公平性基準を前提にすると、開かれているページに対するアクセスは、ACTコマンドを要する新たなページに対するアクセスと比べて一般的に優先される。最終的に他の基準が1度満たされると、ステップ870において、ロウ125が再びアクティベートされ、ステップ880において、ロウ125に対する第2のメモリアクセスがディスパッチされる。
【0048】
データプロセッサ300は、アドレスレジスタ、カウンタ、比較ロジック等のハードウェア回路を使用して適格性を判別するメモリコントローラ342を備えているが、これらの機能は、ハードウェアとソフトウェアの様々な組合せにより実行され得る。ソフトウェアコンポーネントのいくつかは、少なくとも1つのプロセッサにより実行されるために、コンピュータ可読記憶媒体に記憶され得る。さらに、
図8に示された一部又は全ての方法は、コンピュータ可読記憶媒体に記憶された命令によって管理され、且つ、少なくとも1つのプロセッサによって実行される。
図8に示された各動作は、非一時的(non−transitory)コンピュータメモリ又はコンピュータ可読記憶媒体に記憶された命令に対応し得る。様々な実施形態において、非一時的コンピュータ可読記憶媒体には、磁気若しくは光ディスク記憶装置、例えばフラッシュメモリ等の固体記憶装置、又は、他の不揮発性メモリ装置が含まれる。非一時的コンピュータ可読記憶媒体に記憶されたコンピュータ可読命令は、ソースコード、アセンブリ言語コード、オブジェクトコード、又は、1以上のプロセッサにより解釈及び/若しくは実行可能な他の命令フォーマットであり得る。
【0049】
さらに、
図3のデータプロセッサ300又はその任意の一部は、データベースの形態のコンピュータアクセス可能データ構造、又は、プログラムにより読出し可能な他のデータ構造であって、集積回路を製造するのに直接若しくは間接的に使用可能な他のデータ構造によって、説明又は表され得る。例えば、このデータ構造は、例えばVerilog(ベリログ)又はVHDL等の高次設計言語(HDL)によるハードウェア機能の動作レベル記述又はレジスタ転送レベル(RTL)記述であってよい。この記述は、合成ライブラリのゲートのリストを含むネットリストを生成するために、記述を合成しし得る合成ツールにより読出され得る。ネットリストには、集積回路を備えるハードウェアの機能性を表すゲートセットが含まれる。そして、マスクに適用する幾何学形状を記述するデータセットを生成するために、ネットリストが配置され、ルートが決定される。その後、集積回路を製造するために、様々な半導体製造ステップにおいてマスクが使用されうる。あるいは、コンピュータアクセス可能記憶媒体上のデータベースは、所望に応じてネットリスト(合成ライブラリを含む又は含まない)若しくはデータセット、又は、グラフィックデータシステム(GDS)IIデータであって良い。
【0050】
特定の実施形態が説明されたが、これらの実施形態に対する様々な修正が当業者には明らかであろう。例示されたデータプロセッサは、4つのCPUコアと、1つのGPUコアと、を備えるが、別の実施形態においては、データプロセッサは、違う数のメモリアクセスエージェントを備え得る。さらに、例示されたデータプロセッサは、1つのメモリコントローラと、関連するメモリチャネルと、を備えるが、別の実施形態においては、データプロセッサは、複数のメモリコントローラと、これらに対応するメモリチャネルと、を備え得る。上述したように、任意のハッシュ回路は、いくつかの実施形態において回路領域を減らすために含められているが、別の実施形態においては、誤検知を避けて高いパフォーマンスを維持するために、除外されてもよい。別の実施形態において、メモリコントローラは、各メモリバンク用に個別のキューを保持することが可能である。これらの実施形態において、適格性回路及びエントリ準備回路の数は、比例的に増加し得る。さらに、t
RCPAGE値は、MAC数により分割されたリフレッシュ間隔である1次近似として、又は、リフレッシュ時間を考慮した2次近似として計算され得る。さらにまた、いくつかの実施形態において、メモリコントローラは、t
RCPAGEメモリアクセススケジュールの生成を比較的長い時間窓に対し実施しながら、通常のt
RC率であるアクティビティの小さいバーストの追跡を引続き許可する。
【0051】
従って、添付の請求項には、開示された実施形態の範囲に属し、開示された実施形態に対する全ての修正を含む意図がある。