(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-07-12
(45)【発行日】2024-07-23
(54)【発明の名称】アービトレーション中の書き込みバンクグループのマスク
(51)【国際特許分類】
G06F 12/00 20060101AFI20240716BHJP
G06F 12/06 20060101ALI20240716BHJP
G06F 13/36 20060101ALI20240716BHJP
【FI】
G06F12/00 571B
G06F12/00 560B
G06F12/06 540E
G06F13/36 310F
(21)【出願番号】P 2023559707
(86)(22)【出願日】2022-03-17
(86)【国際出願番号】 US2022020779
(87)【国際公開番号】W WO2022212078
(87)【国際公開日】2022-10-06
【審査請求日】2023-11-07
(32)【優先日】2021-03-31
(33)【優先権主張国・地域又は機関】US
【早期審査対象出願】
(73)【特許権者】
【識別番号】591016172
【氏名又は名称】アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド
【氏名又は名称原語表記】ADVANCED MICRO DEVICES INCORPORATED
(74)【代理人】
【識別番号】100108833
【氏名又は名称】早川 裕司
(74)【代理人】
【識別番号】100111615
【氏名又は名称】佐野 良太
(74)【代理人】
【識別番号】100162156
【氏名又は名称】村雨 圭介
(72)【発明者】
【氏名】ケダーナシュ バラクリシュナン
【審査官】北村 学
(56)【参考文献】
【文献】特開2004-310394(JP,A)
【文献】特開2008-287528(JP,A)
【文献】特開2010-218323(JP,A)
【文献】特表2019-525271(JP,A)
【文献】国際公開第2020/018234(WO,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 12/00
G06F 12/06
G06F 13/36
(57)【特許請求の範囲】
【請求項1】
メモリコントローラにおいて複数のメモリアクセス要求を受信し、前記複数のメモリアクセス要求をコマンドキューに入れて、複数のバンクグループを含むダイナミックランダムアクセスメモリ(DRAM)メモリへの送信を待機することと、
アービタを用いて、前記コマンドキュー内の前記複数のメモリアクセス要求の中から、前記DRAMメモリに送信される書き込み要求を選択することと、
前記複数のメモリアクセス要求の中から前記アービタによって選択された3つ以上の先行する書き込み要求のバンクグループ番号を追跡することと、
追跡されたバンクグループ番号のそれぞれのバンクグループに対する後続の書き込み要求及び関連付けられたアクティブ化コマンドの選択を防止することと、
追跡されたバンクグループのうち何れかを選択するために渡される書き込み要求及び関連付けられたアクティブ化コマンドを
、指定された期間が経過した後に発行されるのに適格にすることと、を含む、
方法。
【請求項2】
新たな書き込み要求を選択する場合に、追跡されていないバンクグループ番号を巡回し、適格な書き込み要求を見つけるまで、それぞれのバンクグループに対する書き込み要求が選択されるのに適格であるかどうかをチェックすることを更に含む、
請求項1の方法。
【請求項3】
少なくとも1つのタイマを用いて、各バンクグループ番号が追跡されたクロックサイクルの数をカウントすることを更に含む、
請求項1の方法。
【請求項4】
追跡されたバンクグループ番号と、タイミング適格性、年齢、公平性及びアクティビティタイプを含むポリシーのセットと、に基づいて、前記コマンドキュー内の前記複数のメモリアクセス要求からメモリアクセス要求を選択することを更に含む、
請求項1の方法。
【請求項5】
第1のタイプのアクセス、第2のタイプのアクセス、及び
、バンクグループ追跡回路から提供される情報に従って、前記コマンドキュー内の前記複数のメモリアクセス要求の中から候補メモリ
アクセス要求を選択的に選択することであって、各タイプのアクセスは、メモリ内のバンクの異なるページ状態に対応する、ことと、
前記候補メモリ
アクセス要求からの要求選択を調停することと、を更に含む、
請求項1の方法。
【請求項6】
前記指定された期間は、前記先行する書き込み要求の前記バンクグループに対する最小書き込み間タイミング期間に対応するクロックサイクルの数である、
請求項1の方法。
【請求項7】
メモリコントローラであって、
メモリチャネルに対するメモリアクセス要求を受信するための入力と、所定数のメモリアクセス要求を保持するためのいくつかのエントリと、を有するコマンドキュー回路と、
ダイナミックランダムアクセスメモリ(DRAM)チャネルに結合されたDRAMメモリに送信されるメモリアクセス要求を前記コマンドキュー回路から選択するためのアービタ回路と、を備え、
前記アービタ回路は、
複数のメモリアクセス要求の中から前記アービタ回路によって選択された3つ以上の先行する書き込み要求のバンクグループ番号を追跡するバンクグループ追跡回路と、
前記コマンドキュー回路内の複数のメモリアクセス要求の中から発行される要求を選択し、追跡されたバンクグループ番号への書き込み要求及び関連付けられたアクティブ化コマンドの選択を防止する選択回路と、を備え、
前記バンクグループ追跡回路は、追跡されたバンクグループのうち何れかを選択するために渡される書き込み要求と、関連付けられたアクティブ化コマンドとが、指定された期間が経過した後に発行されるのに適格であることを示す、
メモリコントローラ。
【請求項8】
前記選択回路は、新たな書き込み要求を選択する場合に、追跡されていないバンクグループ番号を巡回し、適格な書き込み要求を見つけるまで、それぞれのバンクグループに対する書き込み要求が選択されるのに適格であるかどうかをチェックする、
請求項7のメモリコントローラ。
【請求項9】
前記バンクグループ追跡回路は、各バンクグループ番号が追跡されたクロックサイクルの数をカウントするための少なくとも1つのタイマを含む、
請求項7のメモリコントローラ。
【請求項10】
前記バンクグループ追跡回路は、
各々がバンクグループ番号を保持する複数のエントリと、
各々が前記バンクグループ追跡回路の前記複数のエントリのそれぞれのエントリに関連付けられた複数のタイマであって、それぞれのバンクグループ番号が追跡されたクロックサイクルの数をカウントする、複数のタイマと、を備える、
請求項7のメモリコントローラ。
【請求項11】
前記選択回路は、追跡されたバンクグループ番号をそれぞれ受信するいくつかの入力を含み、
前記選択回路は、前記追跡されたバンクグループ番号と、タイミング適格性、年齢、公平性及びアクティビティタイプを含むポリシーのセットと、に基づいて前記コマンドキュー回路内の前記複数のメモリアクセス要求の中からメモリアクセス要求を選択する、
請求項7のメモリコントローラ。
【請求項12】
前記選択回路は、
第1のタイプのアクセス及び第2のタイプのアクセスに従って前記コマンドキュー回路から候補メモリ
アクセス要求を選択的に選択するための少なくとも1つのサブアービタ回路であって、各タイプのアクセスがメモリ内のバンクの異なるページ状態に対応し、前記バンクグループ追跡回路から提供される情報に基づいて書き込み要求を選択する、少なくとも1つのサブアービタ回路と、
前記候補メモリ
アクセス要求からの要求選択を調停する最終アービタ回路と、を備える、
請求項7のメモリコントローラ。
【請求項13】
前記指定された期間は、3つ以上の先行する書き込み要求のうち何れかの先行する書き込み要求の前記バンクグループ番号に対する最小書き込み間タイミング期間に対応するクロックサイクルの数である、
請求項7のメモリコントローラ。
【請求項14】
データ処理システムであって、
ダイナミックランダムアクセスメモリ(DRAM)に結合されたメモリチャネルと、
前記メモリチャネルに結合されたメモリコントローラと、を備え、
前記メモリコントローラは、
前記メモリチャネルに対するメモリアクセス要求を受信するための入力と、所定数のメモリアクセス要求を保持するためのいくつかのエントリと、を有するコマンドキュー回路と、
前記DRAMメモリに送信される、発行されるメモリアクセス要求を前記コマンドキュー回路内の複数のメモリアクセス要求から選択するためのアービタ回路と、を備え、
前記アービタ回路は、
複数のメモリアクセス要求の中から前記アービタ回路によって選択された3つ以上の先行する書き込み要求のバンクグループ番号を追跡するバンクグループ追跡回路と、
追跡されたバンクグループ番号への、前記コマンドキュー回路内の複数のメモリアクセス要求の中からの書き込み要求及び関連付けられたアクティブ化コマンドの選択を防止する選択回路と、を備え、
前記バンクグループ追跡回路は、追跡されたバンクグループのうち何れかを選択するために渡される書き込み要求と、関連付けられたアクティブ化コマンドとが、指定された期間が経過した後に発行されるのに適格であることを示す、
データ処理システム。
【請求項15】
前記選択回路は、新たな書き込み要求を選択する場合に、追跡されていないバンクグループ番号を巡回し、適格な書き込み要求を見つけるまで、それぞれのバンクグループに対する書き込み要求が選択されるのに適格であるかどうかをチェックする、
請求項14のデータ処理システム。
【請求項16】
前記バンクグループ追跡回路は、各バンクグループ番号が追跡されたクロックサイクルの数をカウントするための少なくとも1つのタイマ回路を含む、
請求項14のデータ処理システム。
【請求項17】
前記バンクグループ追跡回路は、
各々がバンクグループ番号を保持する複数のエントリと、
各々が前記バンクグループ追跡回路の前記複数のエントリのそれぞれのエントリに関連付けられた複数のタイマであって、それぞれのバンクグループ番号が追跡されたクロックサイクルの数をカウントする、複数のタイマと、を備える、
請求項14のデータ処理システム。
【請求項18】
前記選択回路は、追跡されたバンクグループ番号をそれぞれ受信するいくつかの入力を含み、
前記選択回路は、前記追跡されたバンクグループ番号と、タイミング適格性、年齢、公平性及びアクティビティタイプを含むポリシーのセットと、に基づいて前記コマンドキュー回路内の前記複数のメモリアクセス要求の中からメモリアクセス要求を選択する、
請求項14のデータ処理システム。
【請求項19】
前記選択回路は、
第1のタイプのアクセス及び第2のタイプのアクセスに従って前記コマンドキュー回路から候補メモリアクセス要求を選択的に選択するための少なくとも1つのサブアービタ回路であって、各タイプのアクセスがメモリ内のバンクの異なるページ状態に対応し、前記バンクグループ追跡回路から提供される情報に基づいて書き込み要求を選択する、少なくとも1つのサブアービタ回路と、
前記候補メモリアクセス要求からの要求選択を調停する最終アービタ回路と、を備える、
請求項14のデータ処理システム。
【請求項20】
前記指定された期間は、3つ以上の先行する書き込み要求のうち何れかの先行する書き込み要求の前記バンクグループ番号に対する最小書き込み間タイミング期間に対応するクロックサイクルの数である、
請求項14のデータ処理システム。
【発明の詳細な説明】
【背景技術】
【0001】
コンピュータシステムは、一般に、メインメモリ用の安価で高密度のダイナミックランダムアクセスメモリ(DRAM)チップを使用する。今日販売されている殆どのDRAMチップは、Joint Electron Devices Engineering Council(JEDEC)によって広められた様々なダブルデータ速度(DDR)DRAM規格に適合する。DDR DRAMは、高速アクセス回路を伴う従来のDRAMメモリセルアレイを使用して、高い転送速度を達成し、メモリバスの利用率を向上させる。
【0002】
メモリコントローラは、メモリバスを介してDRAMに出入りするデータの流れを管理するデジタル回路である。既知のメモリコントローラは、ホストシステムからメモリアクセス要求を受信し、それらをキューに記憶し、アービタによって選択された順序でそれらをDRAMにディスパッチする。時間が経つにつれて、JEDECは、追加の特徴及び複雑さを有するDDR DRAMを指定しており、DRAMメモリコントローラが、過度のサイズ及びコストを引き起こすことなく、且つ、以前のメモリコントローラの完全な再設計を必要とすることなく、メモリアクセス効率を最適化することを困難にしている。
【図面の簡単な説明】
【0003】
【
図1】先行技術で知られている加速処理ユニット(accelerated processing unit、APU)及びメモリシステムのブロック図である。
【
図2】いくつかの実施形態に係る
図1と同様のAPUで用いるのに適したメモリコントローラのブロック図である。
【
図3】先行技術に係るメモリのバンクグループ構造のブロック図である。
【
図4】いくつかの実施形態に係る
図2のメモリコントローラの一部のブロック図である。
【
図5】いくつかの実施形態に係る
図2のメモリコントローラの一部のブロック図である。
【
図6】いくつかの追加の実施形態に係る書き込みコマンドを処理するためのプロセスのフロー図である。
【
図7】いくつかの実施形態に係るコマンドを調停するためのプロセスのフロー図である。
【発明を実施するための形態】
【0004】
以下の説明において、異なる図面における同一の符号の使用は、同様の又は同一のアイテムを示す。別段言及されなければ、「結合される」という単語及びその関連する動詞形は、当技術分野で知られている手段による直接接続及び間接電気接続の両方を含み、また、別段言及されなければ、直接接続の任意の記述は、好適な形態の間接電気接続を使用する代替の実施形態も意味する。
【0005】
メモリコントローラは、コマンドキュー及びアービタを含む。コマンドキューは、メモリチャネルに対するメモリアクセス要求を受信するための入力と、所定の数のメモリアクセス要求を保持するためのいくつかのエントリと、を有する。アービタは、DRAMチャネルに接続されたDRAMメモリに送信するためにコマンドキューからメモリ要求を選択するためのものであり、アービタによって選択された3つ以上の先行書き込み要求のバンクグループ番号を追跡するバンクグループ追跡回路と、選択回路と、を含む。選択回路は、コマンドキューから発行される要求を選択し、追跡されたバンクグループ番号への書き込み要求及び関連付けられたアクティブ化コマンドの選択を防止(抑制)する。バンクグループ追跡回路は、先行書き込み要求及び関連付けられたアクティブ化コマンドが、指定された期間が経過した後に発行されるのに適格であることを示す。
【0006】
方法は、メモリコントローラにおいて複数のメモリアクセス要求を受信することと、メモリアクセス要求をコマンドキューに入れて、複数のバンクグループを含むDRAMメモリへの送信を待つことと、を含む。書き込み要求は、DRAMメモリへの送信のためにコマンドキューからアービタによって選択される。バンクグループ番号は、アービタによって選択された3つ以上の先行書き込み要求について追跡される。追跡されたバンクグループ番号への後続書き込み要求及び関連するアクティブ化コマンドの選択が防止される。先行書き込み要求及び関連するアクティブ化コマンドは、指定された期間が経過した後に発行されるのに適格にされる。
【0007】
データ処理システムは、DRAMメモリに接続されたメモリチャネルと、メモリチャネルに接続されたメモリコントローラと、を含む。メモリコントローラは、コマンドキュー及びアービタを含む。コマンドキューは、メモリチャネルに対するメモリアクセス要求を受信するための入力と、所定の数のメモリアクセス要求を保持するためのいくつかのエントリと、を有する。アービタは、DRAMメモリへの送信のためにコマンドキューから発行されるメモリ要求を選択し、アービタによって選択された3つ以上の先行書き込み要求のバンクグループ番号を追跡するバンクグループ追跡回路と、追跡されたバンクグループ番号への書き込み要求及び関連付けられたアクティブ化コマンドの選択を防止する選択回路と、を含む。バンクグループ追跡回路は、先行書き込み要求及び関連付けられたアクティブ化コマンドが、指定された期間が経過した後に発行されるのに適格であることを示す。
【0008】
図1は、先行技術において知られている加速処理ユニット(APU)100及びメモリシステム130のブロック図である。APU100は、ホストデータ処理システムにおけるプロセッサとして用いるのに適した集積回路であり、概して、中央処理ユニット(central processing unit、CPU)コア複合体110と、グラフィックスコア120と、ディスプレイエンジン122のセットと、データファブリック125と、メモリ管理ハブ140と、周辺コントローラ160のセットと、周辺バスコントローラ170のセットと、システム管理ユニット(system management unit、SMU)180と、を含む。
【0009】
CPUコア複合体110は、CPUコア112及びCPUコア114を含む。この例では、CPUコア複合体110が2つのCPUコアを含むが、他の実施形態では、CPUコア複合体110が任意の数のCPUコアを含むことができる。CPUコア112、114のそれぞれは、制御ファブリックを形成するシステム管理ネットワーク(system management network、SMN)とデータファブリック125とに対して双方向で接続されると共に、データファブリック125にメモリアクセス要求を与えることができる。CPUコア112及び114の各々は、単体のコアであってもよく、又は、更にキャッシュ等の特定のリソースを共有する2つ以上の単体のコアを有するコア複合体であってもよい。
【0010】
グラフィックスコア120は、頂点処理、フラグメント処理、シェーディング、テクスチャブレンディング等のグラフィックス処理を高度に統合された並列方式で実行することができる高性能グラフィックス処理ユニット(graphics processing unit、GPU)である。グラフィックスコア120は、SMN及びデータファブリック125に双方向に接続されており、メモリアクセス要求をデータファブリック125に提供することができる。これに関して、APU100は、CPUコア複合体110とグラフィックスコア120とが同じメモリ空間を共有する統合メモリアーキテクチャ、又は、CPUコア複合体110とグラフィックスコア120とがメモリ空間の一部を共有する一方でグラフィックスコア120がCPUコア複合体110によりアクセスできないプライベートグラフィックスメモリも使用するメモリアーキテクチャの何れかをサポートすることができる。
【0011】
ディスプレイエンジン122は、モニタ上に表示するためにグラフィックスコア120によって生成されたオブジェクトをレンダリングしてラスタライズする。グラフィックスコア120及びディスプレイエンジン122は、メモリシステム130内の適切なアドレスへの一様な変換のために、データファブリック125を介して共通メモリ管理ハブ140に双方向に接続されている。
【0012】
データファブリック125は、任意のメモリアクセスエージェントとメモリ管理ハブ140との間でメモリアクセス要求及びメモリ応答をルーティングするためのクロスバースイッチを含む。また、データファブリックは、システム構成に基づいてメモリアクセスの送信先を決定するために、基本入力/出力システム(basic input/output system、BIOS)によって規定されるシステムメモリマップ、並びに、各仮想接続のためのバッファも含む。
【0013】
周辺コントローラ160は、ユニバーサルシリアルバス(universal serial bus、USB)コントローラ162及びシリアルアドバンストテクノロジーアタッチメント(Serial Advanced Technology Attachment、SATA)インターフェースコントローラ164を含み、これらのそれぞれは、システムハブ166及びSMNバスに対して双方向で接続されている。これらの2つのコントローラは、APU100で使用され得る周辺コントローラの単なる典型例である。
【0014】
周辺バスコントローラ170は、システムコントローラ又は「サウスブリッジ」(Southbridge、SB)172と、周辺構成要素相互接続エクスプレス(Peripheral Component Interconnect Express、PCIe)コントローラ174と、を含み、これらのそれぞれは、入力/出力(input/output、I/O)ハブ176及びSMNバスに対して双方向で接続されている。また、I/Oハブ176は、システムハブ166及びデータファブリック125に対して双方向で接続されている。したがって、例えば、CPUコアは、データファブリック125がI/Oハブ176を介してルーティングするアクセスにより、USBコントローラ162、SATAインターフェースコントローラ164、SB172、又は、PCIeコントローラ174内のレジスタをプログラムすることができる。APU100のためのソフトウェア及びファームウェアは、リードオンリーメモリ(read-only memory、ROM)、フラッシュ電気的消去可能プログラマブルROM(electrically erasable programmable ROM、EEPROM)等の様々な不揮発性メモリタイプの何れかであり得るシステムデータドライブ又はシステムBIOSメモリ(図示せず)に記憶される。一般に、BIOSメモリはPCIeバスを介してアクセスされ、システムデータドライブはSATAインターフェースを介してアクセスされる。
【0015】
SMU180は、APU100上のリソースの動作を制御してそれらの間の通信を同期させるローカルコントローラである。SMU180は、APU100上の様々なプロセッサのパワーアップシーケンシングを管理し、リセット、イネーブル及び他の信号を介して複数のオフチップデバイスを制御する。SMU180は、APU100の構成要素のそれぞれにクロック信号を与えるために、位相ロックループ(phase locked loop、PLL)等の1つ以上のクロックソース(図示せず)を含む。また、SMU180は、様々なプロセッサ及び他の機能ブロックのための電力を管理し、適切な電力状態を判定するためにCPUコア112、114及びグラフィックスコア120から測定された電力消費値を受信することができる。
【0016】
メモリ管理ハブ140及びその関連する物理インターフェース(physical interface、PHY)151、152は、この実施形態ではAPU100と統合される。メモリ管理ハブ140は、メモリチャネル141、142とパワーエンジン149とを含む。メモリチャネル141は、ホストインターフェース145と、メモリチャネルコントローラ143と、物理インターフェース147と、を含む。ホストインターフェース145は、メモリチャネルコントローラ143を、シリアル存在検出リンク(serial presence detect、SDP)を介してデータファブリック125に対して双方向で接続する。物理インターフェース147は、メモリチャネルコントローラ143をPHY151に対して双方向で接続し、DDR PHYインターフェース(DDR PHY Interface、DFI)仕様に準拠する。メモリチャネル142は、ホストインターフェース146と、メモリチャネルコントローラ144と、物理インターフェース148と、を含む。ホストインターフェース146は、他のSDPを介してメモリチャネルコントローラ144をデータファブリック125に対して双方向で接続する。物理インターフェース148は、メモリチャネルコントローラ144をPHY152に対して双方向で接続し、DFI仕様に準拠する。パワーエンジン149は、SMNバスを介してSMU180に対して双方向で接続され、APBを介してPHY151、152に対して双方向で接続されると共に、メモリチャネルコントローラ143、144に対して双方向で接続される。PHY151は、メモリチャネル131への双方向接続を有する。PHY152は双方向接続メモリチャネル133を有する。
【0017】
メモリ管理ハブ140は、2つのメモリチャネルコントローラを有するメモリコントローラのインスタンス化であり、共有パワーエンジン149を使用して、以下で更に説明する態様でメモリチャネルコントローラ143及びメモリチャネルコントローラ144の両方の動作を制御する。メモリチャネル141、142のそれぞれは、DDRバージョン5(DDR5)、DDRバージョン4(DDR4)、低電力DDR4(LPDDR4)、グラフィックスDDRバージョン5(GDDR5)、及び、高帯域幅メモリ(HBM)等の最先端DDRメモリに接続することができ、将来のメモリ技術に適合され得る。これらのメモリは、高いバス帯域幅及び高速動作をもたらす。同時に、それらのメモリは、ラップトップコンピュータ等のバッテリ駆動用途のための電力を節約するための低電力モードを与えると共に、内蔵熱監視も行う。
【0018】
メモリシステム130は、メモリチャネル131及びメモリチャネル133を含む。メモリチャネル131は、DDRxバス132に接続されるデュアルインラインメモリモジュール(dual inline memory module、DIMM)のセットを含み、これには、本実施例では個別のランクに対応する代表的なDIMM134、136、138が含まれる。同様に、メモリチャネル133は、代表的なDIMM135、137、139を含む、DDRxバス129に接続されるDIMMのセットを含む。
【0019】
APU100は、ホストデータ処理システムの中央処理ユニット(CPU)として動作し、最新のコンピュータシステムにおいて有用な様々なバス及びインターフェースを与える。これらのインターフェースは、2つのダブルデータレート(double data rate、DDRx)メモリチャネル、PCIeリンクへの接続のためのPCIeルート複合体、USBネットワークへの接続のためのUSBコントローラ、及び、SATA大容量記憶デバイスへのインターフェースを含む。
【0020】
また、APU100は、様々なシステム監視機能及び節電機能も実装する。特に、1つのシステム監視機能は熱監視である。例えば、APU100が高温になる場合、SMU180は、CPUコア112、114及び/又はグラフィックスコア120の周波数及び電圧を低減することができる。APU100が高温になり過ぎる場合、SMUを完全にシャットダウンすることができる。SMNバスを介してSMU180によって外部センサから熱イベントを受けることもでき、SMU180は、それに応じてクロック周波数及び/又は電源電圧を低減することができる。
【0021】
図2は、
図1のようなAPUで用いるのに適したメモリコントローラ200のブロック図である。メモリコントローラ200は、概して、メモリチャネルコントローラ210及びパワーコントローラ250を含む。メモリチャネルコントローラ210は、概して、インターフェース212と、メモリインターフェースキュー214と、コマンドキュー220と、アドレス生成器222と、コンテントアドレッサブルメモリ(CAM)224と、再生キュー230を含む再生制御ロジック231と、リフレッシュ制御ロジックブロック232と、タイミングブロック234と、ページテーブル236と、アービタ238と、誤り訂正符号(ECC)チェック回路242と、ECC生成ブロック244と、データバッファ246と、リフレッシュ制御ロジック232と、を含む。
【0022】
インターフェース212は、外部バスを介したデータファブリックに対する第1の双方向接続を有し、出力を有する。メモリコントローラ200において、この外部バスは、「AXI4」として知られている英国ケンブリッジのARM Holdings,PLCによって指定された高度拡張可能インターフェースバージョン4と適合するが、他の実施形態では他のタイプのインターフェースとなり得る。インターフェース212は、メモリアクセス要求を、FCLK(又はMEMCLK)ドメインとして知られている第1のクロックドメインから、UCLKドメインとして知られているメモリコントローラ200の内部の第2のクロックドメインに変換する。同様に、メモリインターフェースキュー214は、UCLKドメインからDFIインターフェースに関連付けられるDFICLKドメインへのメモリアクセスを与える。
【0023】
アドレス生成器222は、AXI4バスを介してデータファブリックから受信されるメモリアクセス要求のアドレスを復号する。メモリアクセス要求は、正規化フォーマットで表された物理アドレス空間内のアクセスアドレスを含む。アドレス生成器222は、正規化されたアドレスを、メモリシステム130内の実際のメモリデバイスをアドレス指定するために及び関連するアクセスを効率的にスケジュールするために使用され得るフォーマットに変換する。このフォーマットは、メモリアクセス要求を特定のランク、行アドレス、列アドレス、バンクアドレス、及び、バンクグループと関連付ける領域識別子を含む。起動時に、システムBIOSは、メモリシステム130内のメモリデバイスに問い合わせてそれらのサイズ及び構成を決定し、アドレス生成器222に関連付けられた構成レジスタのセットをプログラムする。アドレス生成器222は、構成レジスタに記憶された構成を使用して、正規化されたアドレスを適切なフォーマットに変換する。コマンドキュー220は、CPUコア112、114及びグラフィックスコア120等のAPU100内のメモリアクセスエージェントから受信されるメモリアクセス要求のキューである。コマンドキュー220は、アドレス生成器222によって復号されたアドレスフィールド、並びに、アービタ238がアクセスタイプ及びサービス品質(quality of service、QoS)識別子を含むメモリアクセスを効率的に選択できるようにする他のアドレス情報を記憶する。CAM224は、書き込み後の書き込み(write after write、WAW)及び書き込み後の読み取り(read after write、RAW)順序規則等の順序規則を実施するための情報を含む。
【0024】
エラー訂正コード(ECC)生成ブロック244は、メモリに送られる書き込みデータのECCを決定する。次いで、このECCデータは、データバッファ246内の書き込みデータに追加される。ECCチェック回路242は、受信されたECCを着信ECCと照合してチェックする。
【0025】
再生キュー230は、アドレス及びコマンドパリティ応答等の応答を待っているアービタ238によって選択されたメモリアクセスを記憶するための一時的なキューである。再生制御ロジック231は、ECCチェック回路242にアクセスして、戻されたECCが正しいか又はエラーを示すかを決定する。再生制御ロジック231は、これらのサイクルのうち1つのパリティ又はECCエラーの場合にアクセスが再生される再生シーケンスを開始して制御する。再生されたコマンドは、メモリインターフェースキュー214に配置される。
【0026】
リフレッシュ制御ロジック232は、メモリアクセスエージェントから受信した通常の読み取り及び書き込みメモリアクセス要求とは別に生成される様々な電源断、リフレッシュ及び終端抵抗(ZQ)較正サイクルのためのステートマシンを含む。例えば、メモリランクがプリチャージパワーダウンにある場合、リフレッシュ制御ロジックは、リフレッシュサイクルを実行するために定期的に起動されなければならない。リフレッシュ制御ロジック232は、DRAMチップ内のメモリセルの蓄積キャパシタからの電荷の漏れによって引き起こされるデータエラーを防止するために、定期的に、定められた条件に応じて、リフレッシュコマンドを生成する。リフレッシュ制御ロジック232は、アクティブ化カウンタ248を含み、この実施形態において、アクティブ化カウンタ248は、メモリチャネルを介してメモリ領域に送信されるアクティブ化コマンドのローリング数をカウントするカウンタをメモリ領域ごとに有する。メモリ領域は、以下で更に説明するように、いくつかの実施形態ではメモリバンクであり、他の実施形態ではメモリサブバンクである。更に、リフレッシュ制御ロジック232は、システム内の熱変化に起因するオンダイ終端抵抗の不一致を防止するために、ZQを定期的に較正する。
【0027】
アービタ238は、コマンドキュー220に双方向に接続されており、メモリチャネルコントローラ210の心臓部であり、メモリバスの使用を改善するためにアクセスのインテリジェントスケジューリングを実行する。この実施形態では、アービタ238は、いくつかの最近発行された書き込みコマンドのバンクグループ番号を追跡し、以下で更に説明するように、ある条件下で指定された時間期間の間、それらのバンクグループへのコマンドのディスパッチを防止することによってそれらを「マスク」するためのバンクグループ追跡回路235を含む。アービタ238は、タイミングブロック234を使用して、コマンドキュー220内の特定のアクセスがDRAMタイミングパラメータに基づいて発行に適格であるかどうかを判定することによって、適切なタイミング関係を実施する。例えば、各DRAMは、「tRC」として知られるアクティブ化コマンド間の最小指定時間を有する。タイミングブロック234は、JEDEC仕様で定められたこのタイミングパラメータ及び他のタイミングパラメータに基づいて適格性を決定するカウンタのセットを維持し、再生キュー230に対して双方向で接続されている。ページテーブル236は、アービタ238のためのメモリチャネルの各バンク及びランクにおけるアクティブページに関する状態情報を維持し、再生キュー230に対して双方向で接続されている。
【0028】
ECC生成ブロック244は、インターフェース212から受信した書き込みメモリアクセス要求に応じて、書き込みデータに従ってECCを計算する。データバッファ246は、受信したメモリアクセス要求に関する書き込みデータ及びECCを記憶する。データバッファは、アービタ238がメモリチャネルへのディスパッチのために対応する書き込みアクセスを選択すると、組み合わされた書き込みデータ/ECCをメモリインターフェースキュー214に出力する。
【0029】
パワーコントローラ250は、概して、アドバンスト拡張可能インターフェース、バージョン1(AXI)へのインターフェース252、アドバンスト周辺バス(advanced peripheral bus、APB)インターフェース254、及び、パワーエンジン260を含む。インターフェース252は、
図2に別々に示される「EVENT_n」とラベル付けされるイベント信号を受信するための入力と、出力と、を含むSMNへの第1の双方向接続を有する。APBインターフェース254は、インターフェース252の出力に接続された入力と、APBを介してPHYに接続するための出力と、を有する。パワーエンジン260は、インターフェース252の出力に接続された入力と、メモリインターフェースキュー214の入力に接続された出力と、を有する。パワーエンジン260は、構成レジスタ262のセットと、マイクロコントローラ(microcontroller、μC)264と、セルフリフレッシュコントローラ(self refresh controller、SLFREF/PE)266と、信頼性のある読み取り/書き込みタイミングエンジン(read/write timing engine、RRW/TE)268と、を含む。構成レジスタ262は、AXIバスを介してプログラムされ、メモリコントローラ200内の様々なブロックの動作を制御するための構成情報を記憶する。したがって、構成レジスタ262は、
図2に詳細に示されないこれらのブロックに接続された出力を有する。SLFREF/PE266は、リフレッシュ制御ロジック232によるリフレッシュの自動生成に加えて、リフレッシュの手動生成を可能にするエンジンである。信頼性のある読み取り/書き込みタイミングエンジン268は、DDRインターフェース最大読み取りレイテンシ(maximum read latency、MRL)トレーニング及びループバック試験のような目的のために、メモリ又はI/Oデバイスに対して連続的なメモリアクセスストリームを与える。
【0030】
メモリチャネルコントローラ210は、関連するメモリチャネルへのディスパッチのためのメモリアクセスを選択することを可能にする回路を含む。所望のアービトレーション決定を行うために、アドレス生成器222は、アドレス情報を、メモリシステム内のランク、行アドレス、列アドレス、バンクアドレス及びバンクグループを含むプリデコードされた情報に復号し、コマンドキュー220がプリデコードされた情報を記憶する。構成レジスタ262は、アドレス生成器222が受信したアドレス情報をどのように復号するかを決定するための構成情報を記憶する。アービタ238は、復号されたアドレス情報、タイミングブロック234によって示されるタイミング適格性情報、及び、ページテーブル236によって示されるアクティブページ情報を使用して、サービス品質(QoS)要件等の他の基準を遵守しながら、メモリアクセスを効率的にスケジュールする。例えば、アービタ238は、メモリページを変更するために必要なプリチャージコマンド及びアクティブ化コマンドのオーバーヘッドを回避するために、オープンページへのアクセスの優先度を実装し、あるバンクへのオーバーヘッドアクセスを別のバンクへの読み取り及び書き込みアクセスとインターリーブすることによって隠す。特に、通常動作中、アービタ238は、通常、ページを、これらのページが異なるページを選択する前にプリチャージされる必要があるまで、異なるバンクで開いたままにする。アービタ238は、いくつかの実施形態では、それぞれのコマンドのターゲットとなるメモリ領域に関するアクティブ化カウンタ248の少なくともそれぞれの値に基づいてコマンド選択の適格性を決定する。
【0031】
図3は、先行技術に係るDDR5メモリのバンクグループ構造300のブロック図である。一般に、DDR5規格は、より多くの総バンクを提供しながら、DDR4メモリに対してバンクグループの最大数を2倍にし、任意の所与の時間により多くのページが開かれることを可能にすることによって、全体的なシステム効率の改善を可能にする。DDR5バンクグループスキームは、2つのバンクの代わりに4つのバンクのメモリアレイ間で共通回路を共有することによって、DDR5 DRAMが比較的小さいサイズを有することを可能にする。しかしながら、DDR5規格は、オンダイECC計算を含み、これは、バンクグループのためのデータ書き込み回路が、DDR4のような従来の規格よりも各書き込みでより長い期間占有されることを引き起こす。
【0032】
図示したバンクグループ構造300は、DDR5メモリ内の8つのバンクグループを示し、バンクグループは「BGA」から「BGH」とラベル付けされる。DDR5規格は、DDR5メモリデバイスの32個のバンクに対して異なるバンクグループ化を可能にする。バンクグループブロック310は、バンクグループBGAの構成を示す。バンクグループブロックは、4つのバンク「A0」、「A1」、「A2」、「A3」と、それらの共有入力/出力回路と、を含む。共有回路は、列デコーダ(COLDEC)、書き込みドライバ及びI/Oセンス増幅器312、並びに、シリアライザ/デシリアライザ及びECCエンコーダ/デコーダブロック314を含む。
【0033】
動作時、ECCエンコーダ/デコーダは、データが書き込まれる場合にECCが計算され記憶されなければならないので、バンクグループ内のバンクの何れかへの書き込みコマンド間に遅延を引き起こす。DDR5では、このECCは、DRAMに記憶されるデータの128ビットごとに、メモリの8つの追加ビットに記憶される。各書き込みコマンドに対して、ECCエンコーダは書き込みデータに対するECCを計算し、次いで、メモリの追加ビットに記憶される。ECCエンコーダが機能するために必要とされる時間は、同じバンクグループ内の「最小書き込み間」時間を、オンダイECCを含まない従来の規格において必要とされる時間よりもはるかに長い時間に増加させる。例えば、そのようなオンダイECCのない規格は、約9、10又は11クロックサイクルの同じバンク書き込み間時間を有していたが、オンダイECCは、特定の実施形態に応じて、約32~64クロックサイクルの合計の同じバンク書き込み間遅延のために、この時間を4~8倍増加させる。また、書き込みデータサイズがECCに使用されるコードワード(典型的には128ビット)よりも小さい場合、DRAMは、修正された部分だけでなくコードワード全体に対して新しいECCコードを計算しなければならないので、「読み取り修正書き込み」(RMW)動作を実行する。そのようなRMWコマンドの使用は、最小書き込み間時間を更に増加させる。書き込まれるビット数がECCコードワード内のビット数とサイズが等しい場合、RMWは不要である。
【0034】
図4は、いくつかの実施形態に係る
図2のメモリコントローラ200の部分400のブロック図である。図示した部分400は、DDR5、GDDR5及びバンクグループと、バンクグループ内の全てのバンクによって共有される回路によって実行されるオンダイECC計算とを有する他の同様のDRAMタイプのためのメモリコントローラにおいて使用するのに適している。部分400は、コマンドキュー410と、関連付けられたバンクグループ追跡回路425を有するアービタ420と、マルチプレクサ440と、を含む。コマンドキュー410は、インターフェース212から受信したメモリアクセス要求を記憶する。メモリアクセス要求は、メモリ内の任意のバンクに対する読み取りサイクル又は書き込みサイクルとすることができ、APU100内のメモリアクセスエージェントのうち何れか1つによって生成される。
図4の例では、コマンドキュー410は、全てのバンク及びランクに対して合計16個のエントリを有し、各エントリは、アクセスアドレス、書き込みサイクルの場合のデータ、及び、その相対年齢(エイジ)を示すタグを記憶する。アービタ420は、その属性を読み取るためにコマンドキュー410内の各エントリに双方向に接続され、アクセスがディスパッチされる場合にアクセスを受け取るための追加の入力を有し、ACTコマンド及びPREコマンド等のプロトコルコマンドを提供するための出力を有し、16個のエントリのうち何れかを選択してインターフェース212に送るための制御出力を有する。マルチプレクサ440は、コマンドキュー410のそれぞれのエントリに接続された16個の入力と、アービタ420の出力に接続された追加入力と、アービタ420の出力に接続された制御入力と、メモリPHYへのディスパッチされたアクセスを提供するための出力と、を有する。
【0035】
バンクグループ追跡回路425は、アービタ420の出力に接続された入力と、アービタ420のそれぞれの入力に接続されたいくつかの出力と、を有する。バンクグループ追跡回路425は、各々がそれぞれのバンクグループ番号エントリ428に接続され、各々が「T」とラベル付けされたいくつかのタイマ426と、追跡機能を実装するためのバンクグループ追跡論理と、を含む。動作時、バンクグループ追跡回路425は、書き込みコマンドが選択され、メモリインターフェースキューにディスパッチされた場合に、アービタ420からインジケータを受信する。インジケータ内で受信される情報は、選択された書き込みコマンドのバンク番号又はバンクグループ番号を含む。バンク番号が提供される場合、バンクグループ追跡論理は、識別されたバンク番号を含むバンクグループのバンクグループ番号を提供する。各インジケータに応じて、選択されたコマンドのバンクグループ番号がバンクグループ番号エントリ428のうち何れかに追加され、それぞれのバンクグループ番号が追跡されたクロックサイクルの数をカウントすることによって、書き込みコマンドがディスパッチされてからの時間を追跡するために、それぞれのタイマ426が起動される。各エントリ428はアービタ420に接続され、アービタは、メモリへのディスパッチのために新しい書き込みコマンドを選択する場合に、何れのバンクグループ番号が追跡されているかをチェックする。各エントリは、それぞれのタイマ426によってカウントされたクロックサイクルの数が、バンクグループに対する最小書き込み間タイミング期間に対応して経過するまで追跡され、その後、バンクグループ番号は、そのそれぞれのエントリ428から除去され、もはや追跡されない。追跡されるバンクグループ番号の数は、バンクグループのための最小書き込み間タイミング期間の長さに応じて変化してもよく、それは、通常、オンダイECCコードを計算し、それらを関連する書き込みデータと共にDRAMに書き込む際のDRAMチップの速度に基づいて選択される。例えば、最小書き込み間時間期間が40クロックサイクルを超える場合、4つの書き込みコマンドがそのような時間中にDRAMに送信される可能性があり、したがって、バンクグループ番号追跡回路は、4つのコマンドを追跡するためのエントリを有する。より長い最小書き込み間期間に対して、より多くのバンクグループ番号エントリが使用される。好ましくは、バンクグループ追跡回路には、最大許容書き込み間期間中のコマンドを追跡するのに十分なエントリが提供される。
【0036】
コマンドキュー410は、インターフェース212から受信したアクセスを記憶し、その相対年齢(relative age)を示すタグを割り当てる。アービタ420は、タイミング適格性、年齢、公平性及びアクティビティタイプ等のポリシーのセットに基づいて、コマンドキュー410内の何れの保留中のアクセスをスケジュールし、メモリインターフェースキュー214にディスパッチするかを決定する。また、アービタ420は、コマンドキュー410からコマンドを選択する場合に、バンクグループ追跡回路425からの追跡されたバンクグループ番号を考慮する。特に、アービタ420は、別のバンクグループへの他の書き込み要求がコマンドキュー410内に適格でない限り、追跡されたバンクグループ番号への書き込み要求及び関連付けられたアクティブ化コマンドの選択を防止する。
【0037】
アービタ420は、メモリシステムの各バンク及びランクにおける開かれたページを示すために、
図4には示されていないページテーブルを含む。概して、アービタ420は、同じ行への複数のアクセスを一緒にスケジュールし、同じバンク内の異なる行への古いアクセスを遅延させることによって、メモリシステムバスの効率を高めることができる。したがって、アービタ420は、現在アクティブ化されている行とは異なる行へのアクセスを選択的に延期することによって効率を高める。また、アービタ420は、エントリの年齢(エイジ)タグを使用して、アクセスの待ち時間を制限する。したがって、アービタ420は、別のページへのアクセスがある時間量にわたって保留中であった場合に、メモリ内の開いているページへの一連のアクセスを中断する。アービタ420はまた、オーバーヘッドを隠すために、所定のメモリバンクへのACTコマンドとPREコマンドとの間に他のメモリバンクへのアクセスをスケジュールする。
【0038】
上述したように、バンクグループ追跡回路425のエントリ428内の追跡されたバンクグループ番号に基づいて、アービタ420は、別のバンクグループへの他の書き込み要求がコマンドキュー内で適格でない限り、追跡されたバンクグループ番号への書き込み要求及び関連付けられたアクティブ化コマンドの選択を防止する。要求が、そのバンクグループ番号が追跡されているために渡される(選択されない)場合、その要求は、追跡期間が満了した後に適格になる。バンクグループ追跡回路425は、指定された期間が経過した後に先行書き込み要求が発行されるのに適格であることを示す。この実施形態では、指定された期間は、先行書き込み要求のバンクグループに対する最小書き込み間タイミング期間に対応するクロックサイクルの数に基づく。この指標は、バンクグループ番号をその対応するエントリ428から削除することを少なくとも含む。いくつかの実施形態では、バンクグループ追跡回路425は、それぞれのコマンドのバンクグループ番号がバンクグループエントリ428のうち何れかにおいて現在追跡されているかどうかに基づいて、コマンドキュー410内の各書き込みコマンドに適格性タグ又は(不適格性を示すための)マスクタグをタグ付け又はラベル付けするようにコマンドキュー410とインターフェースする。これらの実施形態では、バンクグループ追跡回路425は、バンクグループ番号がエントリ428に追加又は削除される場合に、コマンドキュー410内のタグを更新する。
【0039】
図5は、いくつかの実施形態に係る
図2のメモリコントローラ200の部分500のブロック図である。図示した部分500は、DDR5、GDDR5及びオンダイECC計算を有する他の同様のDRAMタイプのためのメモリコントローラにおける使用に適している。部分500は、アービタ238と、アービタ238の動作に関連付けられた制御回路560のセットと、を含む。アービタ238は、サブアービタ505及び最終アービタ550のセットを含む。サブアービタ505は、サブアービタ510と、サブアービタ520と、サブアービタ530と、を含む。サブアービタ510は、「PHARB」とラベル付けされたページヒットアービタ512と、出力レジスタ514と、を含む。ページヒットアービタ512は、コマンドキュー220に接続された第1の入力と、バンクグループ追跡回路235に接続された第2の入力と、タイミングブロック234に接続された第3の入力と、出力と、を有する。レジスタ514は、ページヒットアービタ512の出力に接続されたデータ入力と、UCLK信号を受信するためのクロック入力と、出力と、を有する。サブアービタ520は、「PC ARB」とラベル付けされたページコンフリクトアービタ522と、出力レジスタ524と、を含む。ページコンフリクトアービタ522は、コマンドキュー220に接続された第1の入力と、バンクグループ追跡回路235に接続された第2の入力と、タイミングブロック234に接続された第3の入力と、出力と、を有する。レジスタ524は、ページコンフリクトアービタ522の出力に接続されたデータ入力と、UCLK信号を受信するためのクロック入力と、出力と、を有する。サブアービタ530は、「PM ARB」とラベル付けされたページミスアービタ532と、出力レジスタ534と、を含む。ページミスアービタ532は、コマンドキュー220に接続された第1の入力と、バンクグループ追跡回路235に接続された第2の入力と、タイミングブロック234に接続された第3の入力と、出力と、を有する。レジスタ534は、ページミスアービタ532の出力に接続されたデータ入力と、UCLK信号を受信するためのクロック入力と、出力と、を有する。最終アービタ550は、リフレッシュ制御ロジック232の出力に接続された第1の入力と、ページ閉鎖予測器562からの第2の入力と、出力レジスタ514の出力に接続された第3の入力と、出力レジスタ524の出力に接続された第4の入力と、出力レジスタ534の出力に接続された第5の入力と、「CMD1」とラベル付けされたキュー214に第1のアービトレーションの勝者を提供するための第1の出力と、「CMD2」とラベル付けされたキュー214に第2のアービトレーションの勝者を提供するための第2の出力と、を有する。
【0040】
制御回路560は、
図2に関して上述したようにタイミングブロック234及びページテーブル236、並びに、ページ閉鎖予測器562、現在モードレジスタ502及びバンクグループ追跡回路235を含む。タイミングブロック234は、ページテーブル236に接続される入力と、ページヒットアービタ512、ページコンフリクトアービタ522及びページミスアービタ532とに接続される入力及び出力とを有する。ページテーブル236は、再生キュー230の出力に接続された入力と、再生キュー230の入力に接続された出力と、コマンドキュー220の入力に接続された出力と、タイミングブロック234の入力に接続された出力と、ページ閉鎖予測器562の入力に接続された出力と、を有する。ページ閉鎖予測器562は、ページテーブル236の一方の出力に接続される入力と、出力レジスタ514の出力に接続される入力と、最終アービタ550の第2の入力に接続される出力と、を有する。バンクグループ追跡回路235は、コマンドキュー220に接続される入力と、最終アービタ550に接続される入力及び出力と、ページヒットアービタ510、ページコンフリクトアービタ520及びページミスアービタ530に接続される入力及び出力と、を有する。
【0041】
ページヒットアービタ512、ページコンフリクトアービタ522及びページミスアービタ532のそれぞれは、これらのそれぞれのカテゴリに属するコマンドキュー220内のコマンドのタイミング適格性を決定するためにタイミングブロック234の出力に接続された入力を有する。タイミングブロック234は、各ランクにおけるそれぞれのバンクごとに特定の動作に関連する持続時間をカウントするバイナリカウンタのアレイを含む。状態を決定するために必要なタイマの数は、タイミングパラメータ、所定のメモリタイプのバンクの数、及び、所定のメモリチャネル上でシステムによってサポートされるランクの数に依存する。次に実装されるタイミングパラメータの数は、システムに実装されるメモリのタイプに依存する。例えば、DDR5及びGDDR5メモリは、他のDDRxメモリタイプよりも多くのタイミングパラメータに従うためにより多くのタイマを必要とする。バイナリカウンタとして実装された汎用タイマのアレイを含むことにより、タイミングブロック234は、異なるメモリタイプに関してスケーリングされて再利用され得る。
【0042】
ページヒットは、開いているページに対する読み取り又は書き込みサイクルである。しかしながら、書き込みコマンドのページヒット追跡も、この実施形態ではバンクグループ追跡プロセスによって管理される。候補コマンドのバンクグループ番号がバンクグループ追跡回路235によって現在追跡されている場合、他の候補が利用可能でない限り、書き込みコマンドのページヒットは選択に適格ではない。ページヒットアービタ512は、ページを開くためにコマンドキュー220内のアクセス間を調停する。タイミングブロック234におけるタイマによって追跡されてページヒットアービタ512によってチェックされるタイミング適格性パラメータは、例えば、行アドレスストローブ(RAS)を列アドレスストローブ(CAS)遅延時間(tRCD)及びCAS待ち時間(tCL)に含む。例えば、tRCDは、ページがRASサイクルで開かれた後のページへの読み取りアクセスの前に経過しなければならない最小時間を指定する。ページヒットアービタ512は、割り当てられたアクセスの優先度に基づいてサブアービトレーションの勝者を選択する。一実施形態では、優先度が4ビット、1ホット値であり、したがって、これは4つの値の中の1つの優先度を示すが、この4レベルの優先度方式が単なる一例であることは明らかである。ページヒットアービタ512が同じ優先度レベルで2つ以上の要求を検出する場合、最も古いエントリが勝つ。
【0043】
ページコンフリクトは、バンク内の別の行が現在アクティブ化される場合のバンク内の1つの行へのアクセスである。ページコンフリクトアービタ522は、コマンドキュー220内のアクセスと、対応するバンク及びランクにおいて現在開いているページとコンフリクトするページとの間で調停する。ページコンフリクトアービタ522は、プリチャージコマンドを発行させるサブアービトレーション勝者を選択する。タイミングブロック234のタイマによって追跡されてページコンフリクトアービタ522によってチェックされるタイミング適格性パラメータは、例えば、プリチャージコマンド期間(tRAS)を含む。書き込みコマンドに対するページ競合サブアービトレーションは、候補書き込みコマンドに対するバンクグループ番号も考慮する。候補コマンドのバンクグループ番号がバンクグループ追跡回路235によって現在追跡されている場合、他の候補が利用可能でない限り、候補書き込みコマンドは選択に適格ではない。ページコンフリクトアービタ522は、割り当てられたアクセスの優先度に基づいてサブアービトレーション勝者を選択する。ページコンフリクトアービタ522が同じ優先度レベルの2つ以上の要求を検出する場合、最も古いエントリが勝つ。
【0044】
ページミスは、プリチャージ状態にあるバンクへのアクセスである。ページミスアービタ532は、コマンドキュー220内のアクセスとプリチャージされたメモリバンクとの間を調停する。タイミングブロック234のタイマによって追跡されてページミスアービタ532によってチェックされるタイミング適格性パラメータは、例えば、プリチャージコマンド期間(tRP)を含む。同じ優先度レベルでページミスである2つ以上の要求がある場合、最も古いエントリが勝つ。
【0045】
各サブアービタは、それぞれのサブアービトレーション勝者のための優先度値を出力する。最終アービタ550は、ページヒットアービタ512、ページコンフリクトアービタ522及びページミスアービタ532のそれぞれからのサブアービトレーション勝者の優先度値を比較する。最終アービタ550は、一度に2つのサブアービトレーション勝者を考慮に入れた相対的な優先度比較のセットを実行することによって、サブアービトレーション勝者間の相対的な優先度を決定する。サブアービタは、現在のモードが変化する場合に利用可能な候補コマンドのセットがサブアービトレーション勝者として迅速に利用可能であるように、モード、読み取り及び書き込みごとにコマンドを調停するためのロジックのセットを含むことができる。
【0046】
最終アービタ550は、3つのサブアービトレーション勝者の相対的な優先度を決定した後、サブアービトレーション勝者が競合するか否かを決定する(すなわち、それらの勝者が同じバンク及びランクに向けられているかどうか)。そのような競合が存在しない場合、最終アービタ550は、最高の優先度を有する最大2つのサブアービトレーション勝者を選択する。競合がある場合、最終アービタ550は以下のルールに従う。ページヒットアービタ512のサブアービトレーション勝者の優先度値がページコンフリクトアービタ522の優先度値よりも高く且つそれらが両方とも同じバンク及びランクである場合、最終アービタ550は、ページヒットアービタ512によって示されるアクセスを選択する。ページコンフリクトアービタ522のサブアービトレーション勝者の優先度値がページヒットアービタ512の優先度値よりも高く且つそれらが両方とも同じバンク及びランクである場合、最終アービタ550は、いくつかの更なる要因に基づいて勝者を選択する。場合によっては、ページ閉鎖予測器562は、オートプリチャージ属性を設定することにより、ページヒットアービタ512が示すアクセスの終了時にページを閉鎖させる。
【0047】
ページヒットアービタ512内で、優先度は、メモリアクセスエージェントからの要求優先度によって最初に設定されるが、アクセスのタイプ(読み取り又は書き込み)及びアクセスのシーケンスに基づいて動的に調整される。概して、ページヒットアービタ512は、読み取りに対してより高い暗黙の優先度を割り当てるが、書き込みが完了に向かって進行するようにするために優先度上昇メカニズムを実装する。
【0048】
ページヒットアービタ512が読み取り又は書き込みコマンドを選択する毎に、ページ閉鎖予測器562は、オートプリチャージ(AP)属性を伴うコマンドを送信するか否かを決定する。読み取り又は書き込みサイクル中、オートプリチャージ属性は、所定のアドレスビットを用いて設定され、オートプリチャージ属性は、読み取り又は書き込みサイクルが完了した後にDDRデバイスにページを閉じさせ、これにより、メモリコントローラがそのバンクのための個別のプリチャージコマンドを後に送信する必要性を回避する。ページ閉鎖予測器562は、選択されたコマンドと同じバンクにアクセスするコマンドキュー220に既に存在する他の要求を考慮に入れる。ページ閉鎖予測器562がメモリアクセスをAPコマンドに変換する場合、そのページへの次のアクセスはページミスとなる。
【0049】
異なるメモリアクセスタイプのために異なるサブアービタを使用することによって、各アービタは、全てのアクセスタイプ(ページヒット、ページミス及びページコンフリクト)間で調停することが必要とされる場合よりも単純なロジックで実装され得るが、単一のアービタを含む実施形態も企図される。これにより、アービトレーションロジックを簡略化することができ、アービタ238のサイズを比較的小さく抑えることができる。
【0050】
他の実施形態では、アービタ238は、異なる数のサブアービタを含むことができる。更に他の実施形態では、アービタ238は、特定のタイプの2つ以上のサブアービタを含むことができる。例えば、アービタ238は、2つ以上のページヒットアービタ、2つ以上のページコンフリクトアービタ、及び/又は、2つ以上のページミスアービタを含むことができる。
【0051】
動作中、アービタ238は、バンクグループ追跡回路235によって追跡されるバンクグループ番号、各エントリのページ状態、各メモリアクセス要求の優先度、及び、要求間の依存関係を考慮に入れて、コマンドキュー220及びリフレッシュ制御ロジック232からメモリアクセスコマンドを選択する。優先度は、AXI 4バスから受信されてコマンドキュー220に記憶される要求のサービス品質すなわちQoSに関連するが、メモリアクセスのタイプ及びアービタ238の動的動作に基づいて変更することができる。アービタ238は、既存の集積回路技術の処理限界と送信限界との間の不整合に対処するために並列に動作する3つのサブアービタを含む。それぞれのサブアービトレーションの勝者が最終アービタ550に提示される。いくつかの実施形態では、各勝者は、現在追跡されているバンク番号を有するが、他の適切な書き込みコマンドが利用可能でなかったために選択されたかどうかを示すためにタグ付けされる。最終アービタ550は、これらの3つのサブアービトレーションの勝者間、並びに、リフレッシュ制御ロジック232からのリフレッシュ動作を選択し、ページ閉鎖予測器562によって決定されるように読み取り又は書き込みコマンドを読み取り又はオートプリチャージコマンドによる書き込みに更に修正することができる。
【0052】
バンクグループ追跡回路235のエントリ428内の追跡されたバンクグループ番号に基づいて、アービタ238は、他の書き込み要求がコマンドキュー内に適格でない限り、追跡されたバンクグループ番号への書き込み要求及び関連付けられたアクティブ化コマンドの選択を防止する。要求が、そのバンクグループ番号が追跡されているために渡される(選択されない)場合、その要求は、追跡期間が満了した後に適格になる。バンクグループ追跡回路235は、制限されたバンクグループ番号をその追跡エントリから除去することによって、先行書き込み要求のバンクグループに対する最小書き込み間タイミング期間に対応する数のクロックサイクルが経過した後に、先行書き込み要求が発行されるのに適格であることを示す。
【0053】
図6は、いくつかの実施形態に係る、書き込みコマンドを追跡するためにバンクグループ追跡回路を動作させるためのプロセスのフロー
図600である。このプロセスは、バンクグループ追跡回路425(
図4)、バンクグループ追跡回路235(
図5)、又は、アービタに接続された別の適切なデジタル論理回路によって実行されるのに適している。プロセスは、ブロック602で、アービタがDRAMメモリへの送信のためにコマンドキューから書き込み要求を選択する場合に開始される。選択された書き込みコマンドに対して関連付けられたアクティブ化コマンド(ACT)は、書き込みコマンドのための行をアクティブ化するために、書き込みコマンドの前にディスパッチされる。介在コマンドは、関連付けられたACTと選択された書き込みコマンドとの間でディスパッチされ得る。選択された書き込みコマンドは、コマンドキューから割り当て解除され、DRAMメモリへの送信のためにメモリインターフェースキュー又はメモリPHYに送信される。バンクグループ追跡回路は、ディスパッチされた書き込みコマンドを監視するか又は書き込みコマンドがディスパッチされたことをアービタ又はメモリインターフェースキューにより通知される。そのような通知に応じて、ブロック604において、バンクグループ追跡回路は、ディスパッチされた書き込みコマンドのバンクグループ番号をそのバンクグループ追跡エントリに追加する。ブロック604において、書き込みコマンドがディスパッチされた後に経過したクロックサイクルをカウントするためにタイマが開始されてもよいし、タイマ追跡回路を用いてエントリが生成されてもよい。
【0054】
追跡されたバンクグループ番号に対して、ブロック606におけるプロセスは、他の書き込み要求がコマンドキュー内に適格でない限り、追跡されたバンクグループ番号に対する後続書き込み要求及びその関連付けられたアクティブ化コマンドの選択を防止することを含む。典型的には、アービタ回路で行われる選択プロセスは、追跡されていないバンクグループ番号を巡回し、適格な書き込み要求を見つけるまで、それぞれのバンクグループに対する書き込み要求が選択に適格であるかどうかをチェックする。ブロック608において、プロセスは、先行書き込み要求のバンクグループに対する最小書き込み間タイミング期間に対応する数のクロックサイクルが経過した後に、バンクグループ番号に対する追跡を除去する。先行書き込み要求が特定のバンクグループに対する選択のために渡されている場合、このブロックは、先行書き込み要求がバンクグループに発行されてからバンクグループに対する最小書き込み間タイミング期間が経過した後に、そのような先行書き込み要求を発行に適格にする。
【0055】
概して、このプロセスは、アービタによって選択された最大3つ以上の先行書き込み要求についてバンクグループ番号を追跡することを含む。追跡されるバンクグループ番号の数は、バンクグループに対する最小書き込み間タイミング期間の長さに依存して変化し、それは、典型的には、オンダイECCコードを計算し、それらを関連する書き込みデータと共にDRAMに書き込む際のDRAMチップの速度によって決定される。
【0056】
図7は、いくつかの実施形態に係る、コマンドを調停するためのプロセスのフロー
図700である。図示したプロセスは、
図5のようなアービタ及びバンクグループ追跡回路を用いて実施するのに適している。ブロック702において、候補要求を選択しているサブアービタに対してプロセスが実行される。
【0057】
ブロック704において、プロセスは、候補要求を選択する際にサブアービタ選択ポリシーを適用し、また、適格な書き込み要求についてコマンドキューをチェックする場合に、追跡されたバンクグループ番号についてバンクグループ番号マスクを適用する。上述したように、追跡されるバンクグループへの書き込みコマンドは、他の書き込みコマンドが選択に適格でない限り、適格とされないか又は「マスク」される。
【0058】
ブロック706において、プロセスは、各サブアービタからの候補書き込み要求を提供する。アービタの複数のサブアービタは、典型的には、プロセスを実行し、
図5のサブアービタに関して説明したように、それぞれが候補要求を提供する。ブロック708において、最終アービタは、コマンドキューからの割り当て解除及びDRAMメモリへの送信のための書き込み要求を選択する。バンクグループ番号マスクがサブアービタにおいて適用されるので、最終アービタは、バンクグループ追跡プロセスを考慮する必要がない。
【0059】
図2のメモリコントローラ200又はアービタ238及びリフレッシュ制御ロジック232等のその任意の部分は、プログラムによって読み取られ、集積回路を製造するために直接的又は間接的に使用され得るデータベース又は他のデータ構造の形態のコンピュータアクセス可能データ構造によって記述又は表現され得る。例えば、このデータ構造は、Verilog又はVHDL等の高レベル設計言語(high level design language、HDL)におけるハードウェア機能の挙動レベル記述又はレジスタ転送レベル(register-transfer level、RTL)記述であってもよい。記述は、合成ライブラリからゲートのリストを含むネットリストを生成するために記述を合成することができる合成ツールによって読み取られ得る。ネットリストは、集積回路を含むハードウェアの機能も表すゲートのセットを含む。ネットリストは、次いで、マスクに適用される幾何学的形状を記述するデータセットを生成するために配置され、ルーティングされ得る。次いで、マスクを様々な半導体製造工程で使用して、集積回路を製造することができる。代替的に、コンピュータアクセス可能記憶媒体上のデータベースは、所望に応じて、ネットリスト(合成ライブラリの有無にかかわらず)若しくはデータセット、又は、グラフィックデータシステム(Graphic Data System、GDS)IIデータであり得る。
【0060】
特定の実施形態を説明してきたが、これらの実施形態に対する様々な修正が当業者には明らかである。例えば、メモリチャネルコントローラ210及び/又はパワーエンジン250の内部アーキテクチャは、異なる実施形態において異なり得る。メモリコントローラ200は、高帯域幅メモリ(HBM)、RAMbus DRAM(RAMbus DRAM、RDRAM)等、DDRx以外の他のタイプのメモリとインターフェースすることができる。図示した実施形態は、個別のDIMM又はSIMMに対応するメモリの各ランクを示したが、他の実施形態では、各モジュールは複数のランクをサポートすることができる。更に他の実施形態は、ホストマザーボードに取り付けられたDRAM等のように、特定のモジュールに含まれていない他のタイプのDRAMモジュール又はDRAMを含むことができる。したがって、添付の特許請求の範囲は、開示された実施形態の範囲に含まれる開示された実施形態の全ての変更を網羅することを意図している。