(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B1)
(11)【特許番号】
(24)【登録日】2024-06-17
(45)【発行日】2024-06-25
(54)【発明の名称】マルチランクメモリコントローラにおける効率的なランク切り替え
(51)【国際特許分類】
G06F 12/06 20060101AFI20240618BHJP
G06F 12/02 20060101ALI20240618BHJP
【FI】
G06F12/06 550A
G06F12/02 580J
(21)【出願番号】P 2023576438
(86)(22)【出願日】2022-05-31
(86)【国際出願番号】 US2022031558
(87)【国際公開番号】W WO2022271419
(87)【国際公開日】2022-12-29
【審査請求日】2024-01-18
(32)【優先日】2021-06-24
(33)【優先権主張国・地域又は機関】US
【早期審査対象出願】
(73)【特許権者】
【識別番号】591016172
【氏名又は名称】アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド
【氏名又は名称原語表記】ADVANCED MICRO DEVICES INCORPORATED
(74)【代理人】
【識別番号】100108833
【氏名又は名称】早川 裕司
(74)【代理人】
【識別番号】100111615
【氏名又は名称】佐野 良太
(74)【代理人】
【識別番号】100162156
【氏名又は名称】村雨 圭介
(72)【発明者】
【氏名】ガンハオ シェン
(72)【発明者】
【氏名】ラビンドラ ナス バルガバ
【審査官】豊田 真弓
(56)【参考文献】
【文献】米国特許出願公開第2018/0018105(US,A1)
【文献】米国特許出願公開第2018/0181329(US,A1)
【文献】米国特許出願公開第2018/0018133(US,A1)
【文献】米国特許出願公開第2019/0303039(US,A1)
【文献】米国特許出願公開第2019/0196987(US,A1)
【文献】米国特許出願公開第2009/0216939(US,A1)
【文献】米国特許出願公開第2014/0192583(US,A1)
【文献】米国特許出願公開第2012/0023363(US,A1)
【文献】米国特許出願公開第2010/0318750(US,A1)
【文献】米国特許出願公開第2017/0345482(US,A1)
【文献】米国特許出願公開第2014/0372711(US,A1)
【文献】米国特許出願公開第2011/0238941(US,A1)
【文献】韓国公開特許第10-2009-0092006(KR,A)
【文献】米国特許出願公開第2017/0269861(US,A1)
【文献】特開2014-229191(JP,A)
【文献】特開2003-271445(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 12/02
G06F 12/06
(57)【特許請求の範囲】
【請求項1】
メモリコントローラが、複数のランクを有するメモリチャネルに提供されるメモリアクセス要求を選択するための方法であって、
書き込みアクセスのバーストを開始することと、
現在のランクへの書き込みアクセスを実行することと、
前記メモリコントローラが前記書き込みアクセスのバーストの終了の近くにあるかどうかを判定することと、
前記メモリコントローラが前記書き込みアクセスのバーストの終了の近くにないことに応じて、
前記現在のランクを選択的に切り替えることと、
前記実行すること及び前記判定することを繰り返すことと、
前記メモリコントローラが前記書き込みアクセスのバーストの終了の近くにあることに応じて、
前記現在のランクへの前記書き込みアクセスのバーストを所定の回数だけ継続することと、
書き込みから読み取りへのターンアラウンドタイムを待つことと、
読み取りアクセスがタイミング適格になった場合に、読み取りバーストを開始することと、を含む、
方法。
【請求項2】
前記メモリコントローラが前記書き込みアクセスのバーストの終了の近くにあるかどうかを判定することは、
前記メモリコントローラのコマンドキューにおける書き込みアクセスの総数が所定の数未満であるかどうかを判定することを含む、
請求項1の方法。
【請求項3】
前記メモリコントローラが前記書き込みアクセスのバーストの終了の近くにあるかどうかを判定することは、
前記現在のランクへの前記メモリコントローラのコマンドキュー内の書き込みアクセスの数が、同じバンクの書き込みから読み取りへのターンアラウンドタイムのオーバーヘッドを隠すのに十分であるかどうかを判定することを含む、
請求項1の方法。
【請求項4】
前記書き込みから読み取りへのターンアラウンドタイムを待つことは、
列アドレスストローブ(CAS)書き込み待ち時間と、バースト長と、異なるランクの書き込みから読み取りへのターンアラウンドタイムと、に従って待つことを含む、
請求項1の方法。
【請求項5】
メモリアクセスをステージングバッファに記憶することと、
前記書き込みメモリアクセスが前記現在のランクからのメモリアクセスであるか別のランクからのメモリアクセスであるかに基づいて、前記ステージングバッファから書き込みメモリアクセスを選択し、前記書き込みメモリアクセスを前記メモリコントローラのコマンドキューに記憶することと、を含み、
前記現在のランクへの書き込みアクセスを実行することは、前記現在のランク及び別のランクのうち何れかへの書き込みアクセスを実行することを含む、
請求項1の方法。
【請求項6】
データプロセッサであって、
1つ以上の第1のメモリアクセス要求を受信して記憶するためのステージングバッファと、
1つ以上の第2のメモリアクセス要求を記憶するためのコマンドキュー
であって、前記1つ以上の第2のメモリアクセス要求の各々は、メモリシステムの複数のランクのうち何れかを示す、コマンドキューと、
前記ステージングバッファ内の前記1つ以上の第1のメモリアクセス要求の中から第1のメモリアクセス要求を選択し、前記1つ以上の第1のメモリアクセス要求のうち選択された第1のメモリアクセス要求を前記コマンドキューに提供するためのピッカと、
前記メモリシステムの現在のランクへのアクセスに対する優先度に少なくとも基づいて、前記コマンドキューの前記1つ以上の第2のメモリアクセス要求の中から第2のメモリアクセス要求を選択するためのアービタと、を備え、
前記ピッカは、前記ステージングバッファの前記1つ以上の第1のメモリアクセス要求の中から前記現在のランクへのアクセスを選択し、前記1つ以上の第1のメモリアクセス要求のうち前記選択された第1のメモリアクセス要求を前記コマンドキューに提供する、
データプロセッサ。
【請求項7】
前記ステージングバッファは、前記コマンドキューよりも多くのメモリアクセス要求を記憶する、
請求項
6のデータプロセッサ。
【請求項8】
メモリアクセスエージェントからメモリアクセス要求を受信するための入力と、前記ステージングバッファの入力に結合された出力と、を有するアドレス生成器であって、各メモリアクセス要求を少なくともランクに復号するアドレス生成器を備える、
請求項
6のデータプロセッサ。
【請求項9】
前記アービタの複数の基準のうち
何れかの基準は、読み取り要求と書き込み要求との間の切り替えよりもランクを切り替えるための優先度を含む、
請求項
6のデータプロセッサ。
【請求項10】
前記アービタは、書き込みから読み取りへのターンアラウンドを実行するという決定に応じて、第1のランクへの書き込みアクセスのバーストと前記第1のランクへの読み取りアクセスの後続のバーストとの間で、第2のランクへの書き込みアクセスのバーストを選択するように動作可能である、
請求項
9のデータプロセッサ。
【請求項11】
前記アービタは、前記第1のランクへの読み取りアクセスの後続のバーストが、前記第2のランクへの書き込みアクセスのバーストよりも高い優先度を有する場合に、前記第2のランクへの書き込みアクセスのバーストを挿入するように動作可能である、
請求項
10のデータプロセッサ。
【請求項12】
前記ピッカは、前記ステージングバッファの前記第1のメモリアクセス要求の中から、前記現在のランク及び前記第2のランクへのアクセスを選択する、
請求項
10のデータプロセッサ。
【請求項13】
前記ステージングバッファが
、前記第1のメモリアクセス要求の中から、前記現在のランク及び前記第2のランクのうち少なく
とも1つへのアクセスをそれ以上記憶しない場合に、前記アービタは、前記ピッカに、第3のランクからのアクセスを選択させるように動作可能であり、前記第3のランクは、前記ステージングバッファ内の他のランクのアクセス数以上のアクセス数を有する、
請求項
12のデータプロセッサ。
【請求項14】
前記ステージングバッファと、前記コマンドキューと、前記ピッカと、前記アービタと、を含むメモリコントローラと、
前記第1のメモリアクセス要求及び前記第2のメモリアクセス要求を生成するために前記メモリコントローラに結合された複数のメモリアクセスエージェントと、を備える、
請求項
6のデータプロセッサ。
【請求項15】
前記メモリコントローラに結合され、ダブルデータレート(DDR)ダイナミックランダムアクセスメモリチャネルの複数のランクにアクセスするように動作可能な物理インターフェース回路を備える、
請求項
14のデータプロセッサ。
【請求項16】
データプロセッサであって、
復号された1つ以上のメモリコマンドを受信して記憶するためのコマンドキューであって、前記復号された1つ以上のメモリコマンドの各々はタイプ及びランクを示す情報を含み、前記タイプは読み取り及び書き込みのうち何れかを示す、コマンドキューと、
複数の基準に基づいてメモリチャネルに提供するために、前記コマンドキューの前記復号された1つ以上のメモリコマンドの中からメモリコマンドを選択するための、前記コマンドキューに結合されたアービタであって、前記アービタは、書き込みアクセスのバーストの終了の近くにあるかどうかを判定し、
前記アービタが前記書き込みアクセスのバーストの終了に近くにある場合、読み取りバーストを開始する前に、現在のランクへの前記書き込みアクセスのバーストを所定の回数だけ継続するように動作可能である、アービタと、を備える、
データプロセッサ。
【請求項17】
前記アービタは、前記コマンドキュー内の書き込みアクセスの総数が所定の数未満であるかどうかに基づいて、前記アービタが前記書き込みアクセスのバーストの終了の近くにあると判定する、
請求項
16のデータプロセッサ。
【請求項18】
前記アービタは、前記現在のランクへの前記コマンドキュー内の書き込みアクセスの数が、同じバンクの書き込みから読み取りへのターンアラウンドタイムのオーバーヘッドを隠すのに十分であるかどうかに基づいて、前記アービタが前記書き込みアクセスのバーストの終了の近くにあると判定する、
請求項
16のデータプロセッサ。
【請求項19】
前記コマンドキュー及び前記アービタを含むメモリコントローラと、
メモリアクセス要求を生成するために前記メモリコントローラに結合された複数のメモリアクセスエージェントと、を備える、
請求項
16のデータプロセッサ。
【請求項20】
前記メモリコントローラに結合され、ダブルデータレート(DDR)ダイナミックランダムアクセスメモリチャネルの複数のランクにアクセスするように動作可能な物理インターフェース回路を備える、
請求項
19のデータプロセッサ。
【発明の詳細な説明】
【背景技術】
【0001】
コンピュータシステムは、一般に、メインメモリ用の安価で高密度のダイナミックランダムアクセスメモリ(dynamic random access memory、DRAM)チップを使用する。今日販売されている殆どのDRAMチップは、Joint Electron Devices Engineering Council(JEDEC)によって広められた様々なダブルデータ速度(double data rate、DDR)DRAM規格と適合する。DDR DRAMは、高性能及び低電力動作の両方を提供し、DRAM製造業者は、ますます高速なクロック速度で動作するDDR DRAMを提供してきた。
【0002】
現代のDDRメモリコントローラは、待ち状態のメモリアクセス要求を記憶するためのキューを維持し、効率を高めるために、待ち状態のメモリアクセス要求を順不同で選択することを可能にする。例えば、メモリコントローラは、現在の行(row)をプリチャージし、別の行をアクティブ化するオーバーヘッドを回避するために、キューからメモリの所定のランク内の同じ行への複数のメモリアクセス要求を順不同で取り出し、それらをメモリシステムに連続的に発行することができる。
【0003】
より高性能のDDRメモリシステムは、単一のメモリチャネルに接続され、殆どのアドレス、データ及び制御信号を共有する複数のランクのメモリを提供する。これらのメモリシステムは、複雑なタイミング制約を生み出し、メモリコントローラがランク間で頻繁に切り替わる場合、メモリバス効率を低下させる可能性がある。しかしながら、高性能コンピューティングシステムにおけるランクの数は増え続けている。例えば、1つ以上の負荷低減デュアルインラインメモリモジュール(LRDIMMs)に編成されたDDRメモリは、4つの物理チップ選択/物理ランクを有することができ、各チップ選択/物理ランクは、3次元積層(3DS)パッケージにおいて8つの論理ランクを有することができる。更に、時間の経過とともに、DDRメモリは、ますます高速なメモリクロック信号を使用して動作するように指定されてきた。しかしながら、これらのより速いメモリクロック信号では、最小書き込み-読み取りタイミング等の特定のタイミングパラメータが比例して増加しており、これは、既知のメモリコントローラを使用するメモリコントローラ効率を低下させる。
【図面の簡単な説明】
【0004】
【
図1】先行技術で知られている加速処理ユニット(accelerated processing unit、APU)及びメモリシステムのブロック図である。
【
図2】先行技術における既知のメモリコントローラのブロック図である。
【
図3】いくつかの実施形態による、
図1のAPUにおいて使用可能なメモリコントローラのブロック図である。
【
図4】書き込みから読み取りへのターンアラウンドタイムの構成要素を示すタイミング図である。
【
図5】先行技術において知られているメモリコントローラによって選択され得るメモリアクセスのタイムラインのセットを示す図である。
【
図6】いくつかの実施形態による、
図3のメモリコントローラの一部のブロック図である。
【
図7】いくつかの実施形態による、
図6のアービタによって選択されたメモリアクセスのタイムラインを示す図である。
【
図8】いくつかの実施形態による、マルチランクシステムからアクセスを選択するための技術のフローチャートである。
【発明を実施するための形態】
【0005】
以下の説明において、異なる図面における同一の符号の使用は、同様の又は同一のアイテムを示す。別段言及されなければ、「結合される」という単語及びその関連する動詞形は、当技術分野で知られている手段による直接接続及び間接電気接続の両方を含み、また、別段言及されなければ、直接接続の任意の記載は、好適な形態の間接電気接続を使用する代替の実施形態も意味する。
【0006】
データプロセッサは、ステージングバッファと、コマンドキューと、ピッカ(picker)と、アービタと、を含む。ステージングバッファは、第1のメモリアクセス要求を受信及び記憶する。コマンドキューは、各々がメモリシステムの複数のランクのうち何れかを示す第2のメモリアクセス要求を記憶する。ピッカは、ステージングバッファ内の第1のメモリアクセス要求の中から選択し、第1のメモリアクセス要求のうち選択されたものをコマンドキューに提供する。アービタは、メモリシステムの現在のランクへのアクセスに対する優先度に少なくとも基づいて、コマンドキューからの第2のメモリアクセス要求の中から選択する。ピッカは、ステージングバッファの第1のメモリアクセス要求の中から現在のランクへのアクセスを選択し、第1のメモリアクセス要求のうち選択されたものをコマンドキューに提供する。
【0007】
データプロセッサは、コマンドキュー及びアービタを含む。コマンドキューは、復号されたメモリコマンドを受信及び記憶し、各復号されたメモリコマンドはタイプ及びランクを示す情報を含み、タイプは読み取り及び書き込みのうち何れかを示す。アービタは、複数の基準に基づいて、メモリチャネルに提供するために、コマンドキューからの復号されたメモリコマンドの中から選択するためにコマンドキューに結合される。アービタは、アービタが書き込みアクセスのバーストの終了の近くにあるかどうかを判定し、そうである場合、読み取りバーストを開始する前に、現在のランクへの書き込みアクセスのバーストを所定の回数だけ継続するように動作可能である。
【0008】
メモリコントローラが、複数のランクを有するメモリチャネルに提供するためのメモリアクセス要求を選択するための方法は、書き込みアクセスのバーストを開始することを含む。現在のランクへの書き込みアクセスが実行される。メモリコントローラが書き込みアクセスのバーストの終了の近くにあるかどうかが判定される。メモリコントローラが書き込みアクセスのバーストの終了の近くにない場合、現在のランクが選択的に切り替えられ、現在のランクへの書き込みアクセスを実行することと、メモリコントローラが書き込みアクセスのバーストの終了の近くにあるかどうかを判定することと、が繰り返される。メモリコントローラが書き込みアクセスのバーストの終了の近くにある場合、現在のランクへの書き込みアクセスのバーストが所定の回数だけ継続され、書き込みから読み取りへのターンアラウンドタイムを待ち、任意の読み取りアクセスがタイミング適格になった場合に、読み取りバーストを開始する。
【0009】
図1は、先行技術において知られている加速処理ユニット(accelerated processing unit、APU)100及びメモリシステム130のブロック図である。APU100は、データ処理システムにおけるホストプロセッサとして用いるのに適した集積回路データプロセッサであり、概して、中央処理ユニット(central processing unit、CPU)コア複合体110と、グラフィックスコア120と、ディスプレイエンジン122のセットと、メモリ管理ハブ140と、データファブリック125と、周辺コントローラ160のセットと、周辺バスコントローラ170のセットと、システム管理ユニット(system management unit、SMU)180と、を含む。
【0010】
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つ以上の単体のコアを有するコア複合体であってもよい。
【0011】
グラフィックスコア120は、頂点処理、フラグメント処理、シェーディング、テクスチャーブレンディング等のグラフィックス動作を、高度に統合化された並列方式で実行することができる高性能グラフィックス処理ユニット(GPU)である。グラフィックスコア120は、SMN及びデータファブリック125に双方向に接続され、メモリアクセス要求をデータファブリック125に提供することができる。これに関して、APU100は、CPUコア複合体110とグラフィックスコア120とが同じメモリ空間を共有する統合メモリアーキテクチャ、又は、CPUコア複合体110とグラフィックスコア120とがメモリ空間の一部を共有する一方でグラフィックスコア120がCPUコア複合体110によりアクセスできないプライベートグラフィックスメモリも使用するメモリアーキテクチャの何れかをサポートすることができる。
【0012】
ディスプレイエンジン122は、モニタ上に表示するためにグラフィックスコア120によって生成されたオブジェクトをレンダリングしてラスタライズする。グラフィックスコア120及びディスプレイエンジン122は、メモリシステム130内の適切なアドレスへの均一な変換のために共通のメモリ管理ハブ140に双方向で接続され、メモリ管理ハブ140は、そのようなメモリアクセスを生成してメモリシステムから戻される読み取りデータを受信するためにデータファブリック125に双方向で接続される。
【0013】
データファブリック125は、任意のメモリアクセスエージェントとメモリ管理ハブ140との間でメモリアクセス要求及びメモリ応答をルーティングするためのクロスバースイッチを含む。また、データファブリックは、システム構成に基づいてメモリアクセスの送信先を判定するために基本入出力システム(basic input/output system、BIOS)によって規定されるシステムメモリマップ、及び、各仮想接続のためのバッファも含む。
【0014】
周辺コントローラ160は、ユニバーサルシリアルバス(universal serial bus、USB)コントローラ162及びシリアルアドバンストテクノロジーアタッチメント(Serial Advanced Technology Attachment、SATA)インターフェースコントローラ164を含み、これらの各々は、システムハブ166及びSMNバスに対して双方向で接続される。これらの2つのコントローラは、APU100で使用され得る周辺コントローラの単なる典型例である。
【0015】
周辺バスコントローラ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インターフェースを介してアクセスされる。
【0016】
SMU180は、APU100上のリソースの動作を制御してそれらの間の通信を同期させるローカルコントローラである。SMU180は、APU100上の様々なプロセッサのパワーアップシーケンシングを管理し、リセット、イネーブル及び他の信号を介して複数のオフチップデバイスを制御する。SMU180は、APU100の構成要素のそれぞれにクロック信号を与えるために、位相ロックループ(phase locked loop、PLL)等の1つ以上のクロックソース(図示せず)を含む。また、SMU180は、様々なプロセッサ及び他の機能ブロックのための電力を管理し、適切な電力状態を判定するためにCPUコア112及び114並びにグラフィックスコア120から測定された電力消費値を受信することができる。
【0017】
メモリ管理ハブ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を有する。
【0018】
メモリ管理ハブ140は、2つのメモリチャネルコントローラを有するメモリコントローラのインスタンス化であり、共有パワーエンジン149を使用して、以下で更に説明する態様でメモリチャネルコントローラ143及びメモリチャネルコントローラ144の両方の動作を制御する。メモリチャネル141及び142のそれぞれは、DDRバージョン5(DDR version five、DDR5)、DDRバージョン4(DDR version four、DDR4)、低電力DDR4(low power DDR4、LPDDR4)、グラフィックスDDRバージョン5(graphics DDR version five、GDDR5)、及び、高帯域幅メモリ(high bandwidth memory、HBM)等の最先端DDRメモリに接続することができ、将来のメモリ技術に適合され得る。これらのメモリは、高いバス帯域幅及び高速動作をもたらす。同時に、それらのメモリは、ラップトップコンピュータ等のバッテリ駆動用途のための電力を節約するための低電力モードを提供するとともに、内蔵熱監視も行う。
【0019】
メモリシステム130は、メモリチャネル131及びメモリチャネル133を含む。メモリチャネル131は、DDRxバス132に接続されるデュアルインラインメモリモジュール(dual inline memory module、DIMM)のセットを含み、これには、本例では個別のランクに対応する代表的なDIMM134、136、138が含まれる。同様に、メモリチャネル133は、代表的なDIMM135、137、139を含む、DDRxバス129に接続されるDIMMのセットを含む。
【0020】
APU100は、ホストデータ処理システムの中央処理ユニット(CPU)として動作し、最新のコンピュータシステムにおいて有用な様々なバス及びインターフェースを与える。これらのインターフェースは、2つのダブルデータレート(double data rate、DDRx)メモリチャネル、PCIeリンクへの接続のためのPCIeルート複合体、USBネットワークへの接続のためのUSBコントローラ、及び、SATA大容量記憶デバイスへのインターフェースを含む。
【0021】
また、APU100は、様々なシステム監視機能及び節電機能も実装する。特に、1つのシステム監視機能は、熱監視である。例えば、APU100が高温になる場合、SMU180は、CPUコア112及び114並びに/又はグラフィックスコア120の周波数及び電圧を低減することができる。APU100が高温になりすぎる場合、SMUを完全にシャットダウンすることができる。SMNバスを介してSMU180によって外部センサから熱イベントを受けることもでき、SMU180は、それに応じてクロック周波数及び/又は電源電圧を低減することができる。
【0022】
図2は、先行技術における既知のメモリコントローラ200のブロック図である。メモリコントローラ200は、メモリチャネルコントローラ210及びパワーコントローラ250を含む。メモリチャネルコントローラ210は、概して、インターフェース212、メモリインターフェースキュー214、コマンドキュー220、アドレス生成器222、コンテンツアドレサブルメモリ(content addressable memory、CAM)224、リプレイキュー230、リフレッシュロジックブロック232、タイミングブロック234、ページテーブル236、アービタ238、エラー訂正コード(error correction code、ECC)チェックブロック242、ECC生成ブロック244、及び、データバッファ(DB)246を含む。
【0023】
インターフェース212は、外部バスを介したデータファブリック125に対する第1の双方向接続を有し、出力を有する。メモリコントローラ200において、この外部バスは、「AXI4」として知られている英国ケンブリッジのARM Holdings,PLCによって指定された高度拡張可能インターフェースバージョン4と適合するが、他の実施形態では他のタイプのインターフェースとなり得る。インターフェース212は、メモリアクセス要求を、FCLK(又はMEMCLK)ドメインとして知られている第1のクロックドメインから、UCLKドメインとして知られているメモリコントローラ200の内部の第2のクロックドメインに変換する。同様に、メモリインターフェースキュー214は、UCLKドメインからDFIインターフェースに関連付けられるDFICLKドメインへのメモリアクセスを与える。
【0024】
アドレス生成器222は、AXI4バスを介してデータファブリック125から受信されるメモリアクセス要求のアドレスを復号する。メモリアクセス要求は、正規化アドレスで表された物理アドレス空間内のアクセスアドレスを含む。アドレス生成器222は、正規化されたアドレスを、メモリシステム130内の実際のメモリデバイスをアドレス指定するために及び関連するアクセスを効率的にスケジュールするために使用され得るフォーマットに変換する。このフォーマットは、メモリアクセス要求を特定のランク、行アドレス、列(cokumn)アドレス、バンクアドレス、及び、バンクグループと関連付ける領域識別子を含む。起動時に、システム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)順序規則等の順序規則を実施するための情報を含む。
【0025】
リプレイキュー230は、アドレス及びコマンドパリティ応答、DDR4 DRAMに対する書き込み巡回冗長検査(CRC)応答、又は、GDDR5 DRAMに対する書き込み及び読み取りCRC応答等の応答を待っている、アービタ238によって選択されたメモリアクセスを記憶するための一時的なキューである。リプレイキュー230は、ECCチェックブロック242にアクセスして、戻されたECCが正しいか又はエラーを示すかを判定する。リプレイキュー230は、これらのサイクルの1つのパリティ又はCRCエラーの場合に、アクセスが再生されることを可能にする。
【0026】
リフレッシュロジック232は、メモリアクセスエージェントから受信した通常の読み取り及び書き込みメモリアクセス要求とは別に生成される様々なパワーダウン、リフレッシュ及び終端抵抗(ZQ)較正サイクルのためのステートマシンを含む。例えば、メモリランクがプリチャージパワーダウンにある場合、リフレッシュロジックは、リフレッシュサイクルを実行するために定期的に起動されなければならない。リフレッシュロジック232は、DRAMチップ内のメモリセルの蓄積キャパシタからの電荷の漏れによって引き起こされるデータエラーを防止するために、定期的に自動リフレッシュコマンドを生成する。更に、リフレッシュロジック232は、システム内の熱変化に起因するオンダイ終端抵抗の不一致を防止するためにZQを定期的に較正する。また、リフレッシュロジック232は、いつDRAMデバイスを異なるパワーダウンモードにするかを決定する。
【0027】
アービタ238は、コマンドキュー220に双方向に接続され、メモリチャネルコントローラ210の中心である。アービタ238は、メモリバスの使用を改善するためのアクセスのインテリジェントスケジューリングによって効率を改善する。アービタ238は、タイミングブロック234を使用して、コマンドキュー220内の特定のアクセスがDRAMタイミングパラメータに基づく発行に適格であるかどうかを判定することによって適切なタイミング関係を実施する。例えば、各DRAMは、「tRC」として知られる、同じバンクへのアクティブ化コマンド間の最小指定時間を有する。タイミングブロック234は、JEDEC仕様で定められたこのタイミングパラメータ及び他のタイミングパラメータに基づいて適格性を判定するカウンタのセットを維持し、リプレイキュー230に対して双方向で接続される。ページテーブル236は、アービタ238のためのメモリチャネルの各バンク及びランクにおけるアクティブページに関する状態情報を維持し、リプレイキュー230に対して双方向で接続される。
【0028】
ECC生成ブロック244は、インターフェース212から受信した書き込みメモリアクセス要求に応じて、書き込みデータに従ってECCを計算する。DB246は、受信したメモリアクセス要求に関する書き込みデータ及びECCを記憶する。データバッファは、アービタ238がメモリチャネルへのディスパッチのために対応する書き込みアクセスを選択すると、組み合わされた書き込みデータ/ECCをメモリインターフェースキュー214に出力する。
【0029】
パワーコントローラ250は、アドバンスト拡張可能インターフェース、バージョン1(AXI)へのインターフェース252、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 training engine、RRW/TE)268と、を含む。構成レジスタ262は、AXIバスを介してプログラムされ、メモリコントローラ200内の様々なブロックの動作を制御するための構成情報を記憶する。したがって、構成レジスタ262は、
図2に詳細に示されないこれらのブロックに接続された出力を有する。セルフリフレッシュコントローラ266は、リフレッシュロジック232によるリフレッシュの自動生成に加えて、リフレッシュの自動生成を可能にするエンジンである。信頼性のある読み取り/書き込みトレーニングエンジン268は、DDRインターフェース読み取り待ち時間トレーニング及びループバック試験のような目的のために、メモリ又はI/Oデバイスへ連続的なメモリアクセスストリームを与える。
【0030】
メモリチャネルコントローラ210は、関連するメモリチャネルへのディスパッチのためのメモリアクセスを選択することを可能にする回路を含む。所望のアービトレーション決定を行うために、アドレス生成器222は、アドレス情報を、メモリシステム内のランク、行アドレス、列アドレス、バンクアドレス及びバンクグループを含むプリデコードされた情報に復号し、コマンドキュー220がプリデコードされた情報を記憶する。構成レジスタ262は、アドレス生成器222が受信したアドレス情報をどのように復号するかを判定するための構成情報を記憶する。アービタ238は、復号されたアドレス情報、タイミングブロック234によって示されるタイミング適格性情報、及び、ページテーブル236によって示されるアクティブページ情報を使用して、QoS要件等の他の基準を遵守しながら、メモリアクセスを効率的にスケジュールする。例えば、アービタ238は、メモリページを変更するために必要なプリチャージコマンド及びアクティブ化コマンドのオーバーヘッドを回避するために、オープンページへのアクセスの優先度を実装し、あるバンクへのオーバーヘッドアクセスを別のバンクへの読み取り及び書き込みアクセスとインターリーブすることによって隠す。特に、通常動作中、アービタ238は、ページを、これらのページが異なるページを選択する前にプリチャージされる必要があるまで、異なるバンクで開いたままにするように決定し得る。
【0031】
図3は、いくつかの実施形態による、
図1のAPU100において使用可能なメモリコントローラ300のブロック図である。メモリコントローラ300は、
図2の要素に対応する符号を有する多くの要素を含む。それらは同じ又は類似の方法で機能するので、それらについては再び説明されない。
【0032】
しかしながら、メモリコントローラ300は、
図2のメモリコントローラ200よりもマルチランクシステムにおいてより効率的に動作し、メモリコントローラ300とメモリコントローラ200との間の差異がここで説明される。
図2のコマンドキュー220と同様に動作するコマンドキュー320に加えて、メモリコントローラ300は、ステージングバッファ326及びピッカ328を含む。ステージングバッファ326は、アドレス生成器322の出力に接続された入力と、出力と、を有する。ピッカ328は、ステージングバッファ326に接続された入力、ページテーブル336の第2の出力に接続された制御入力、及び、コマンドキュー320の入力に接続された出力を有する。ページテーブル336は、
図2のページテーブル236と同様であるが、現在選択されているランクについての追加情報を提供するように変更されており、いくつかの実施形態では、これから説明するように、追加ランク情報を提供するように変更されている。
【0033】
動作において、メモリコントローラ300は、
図2のメモリコントローラ200よりもマルチランクメモリシステムとともにより効率的に動作する。逆に、メモリコントローラ300は、マルチランクシステムにおいて一定のランク切り替え効率で動作するために、
図2のメモリコントローラ200よりも少ない回路面積を必要とする。
【0034】
メモリコントローラ300は、ステージングバッファ326及びピッカ328を追加して、所定のサイズのコマンドキュー320に対してより高いランクヒット率を提供する。更に、以下で説明されるように、メモリコントローラ300は、マルチランクメモリシステムにおける効率的な書き込みから読み取りへの切り替えを容易にする。アドレス生成器322は、メモリアクセスを少なくともランクに復号する。特定の一実施形態では、アドレス生成器322は、アクセスをランク、バンク、行及び列に復号する。ステージングバッファ326は、アドレス生成器322によって復号されたメモリアクセス要求を受信して記憶する。ステージングバッファ326は、他のアービトレーション基準に基づくのではなく、ランクに基づいてアクセスの中から選択するために使用されるだけであり、各エントリにおいて必要なフィールドがより少ない。したがって、ステージングバッファ326内の各エントリは、コマンドキュー320内の対応するエントリよりも少ない回路面積を必要とする。
【0035】
ピッカ328は、ステージングバッファ326に記憶されたメモリアクセス要求の中から選択し、選択されたアクセスをコマンドキュー320の入力に供給する。一実施形態では、ピッカ328は、任意の他のランクへのアクセスよりも、現在のランク及び第2のランクへのアクセスを選択する。この場合、ページテーブル336は、現在のランク及び第2のランク(又はその指標)を記憶し、それらをピッカ328に提供する。この場合、ページテーブル336は、アービタ338から現在のランク及び第2のランクを受け取り、バンク及びランクごとに現在のページに加えて現在のランク及び第2のランクを記憶し、現在のランクをピッカ328の入力に提供する。ピッカ328は、ステージングバッファ326から、現在のランク及び第2のランクの何れかからのアクセスを、他の何れかのランクへのアクセスよりも選択する。ピッカ328は、単一ランク4アクセスウィンドウ(tFAW)及びアクティブ化-アクティブ化(tRRD)タイミング制約を隠すために、ローテーション方式で2つのランクからほぼ同数のアクセスを選択しようと試みる。ステージングバッファ326内の現在のランク及び/又は第2のランクへの残りのアクセスがない場合、ピッカ328は、様々な方法でステージングバッファ326からアクセスを選択することができる。一実施形態によれば、アービタ338は、ステージングバッファ326内のランクごとのアクセス数のスコアボードを実装する。スコアボードは、ステージングバッファ326に記憶されたランクごとのアクセス数を追跡する。ピッカ328が1つのランク内の要求の選択を終了すると、アービタ338は、候補ランクの中で最も多くの要求を有することによって適格とされたランクとして次のランクを選択する。すなわち、ステージングバッファ326が現在のランク及び/又は第2のランクへのアクセスをそれ以上記憶しない場合、アービタ338は、ピッカ328に第3のランクからのアクセスを選択させるように動作可能であり、第3のランクは、ステージングバッファ326内の任意の他のランクのアクセス数以上のアクセス数を有する。このスコアボード技術を使用することによって、アービタ338は、より少ない全体的なランク切り替えを達成することができる。
【0036】
別の実施形態では、ピッカ328は、任意の他のランクへのアクセスよりも、アービタ338によって選択されている現在のランクへのアクセスを選択する。この場合、ページテーブル336は、アービタ338から現在のランク(又は現在のランクの指示)を受け取り、バンク及びランクごとに現在のページに加えてそれを記憶し、現在のランクをピッカ328の入力に提供する。ステージングバッファ326内に現在のランクへの残りのアクセスがない場合、ピッカ328は、受け取った順序でステージングバッファ326からアクセスを選択する。
【0037】
ステージングバッファ326及びピッカ328を含むことによって、メモリコントローラ300は、ランク切り替えが必要になる前にコマンドキュー320から選択することができる同じランクのアクセスの平均数を増加させる。これは、コマンドキュー320の深さ及びステージングバッファ326の深さの両方に従って、メモリアクセスコマンドウィンドウサイズを増加させることによって行われる。この機構は、一連のアクセス中のランク切り替えの数を減少させる。更に、ステージングバッファ326内の各エントリは、コマンドキュー320内の対応するエントリよりも著しく小さく、したがって、メモリコントローラ300は、追加の回路面積と改善されたランク切り替え効率との間のトレードオフを改善する。
【0038】
多数のランクを有するマルチランクシステムでは、ステージングバッファ326は、
図2のメモリコントローラ200と比較して、ランク切り替え効率を大幅に向上させる。例えば、コマンドキュー320は、32ランクメモリシステムにおいて合計64個のエントリを有してもよい。アクセスが複数のランクにわたって均等に分散された場合、平均して、コマンドキュー320は、各ランクからの2つのアクセスを記憶する。2つのメモリアクセス要求ごとにランクターンアラウンドを実行することは、はるかに少ない数のランクを有するシステムと比較して、著しく低い効率をもたらす。メモリコントローラ300は、現在のランク及び第2のランクへのより多くのアクセスがコマンドキュー320内に配置され得るように、アービタ338に見えるアクセスのウィンドウを増加させるためにステージングバッファ326を追加する。同時に、コマンドキュー320のサイズ又はアービタ338の複雑さを増加させない。
【0039】
コマンドキュー320内のエントリは、ステージングバッファ326内のエントリよりも多くのフィールドを含む。ピッカ328は、コマンドキュー320に提供するランクに基づいてステージングバッファ326のエントリを選択するだけである。したがって、ピッカ328は、比較的単純な回路として実装することができる。更に、各エントリのサイズが小さいので、ステージングバッファ326は、コマンドキュー320よりも多くのエントリを含むことができる。この特徴は、多数の予想されるメモリランクを有するマルチランクシステムにおいて重要である。
【0040】
マルチランクシステムでは、同じバンクの書き込みから読み取りへのターンアラウンドに起因して、更なる効率問題が生じる。このメカニズムと、この問題を処理するための改良されたアービトレーションシステムと、を以下に説明する。
【0041】
図4は、書き込みから読み取りへのターンアラウンドタイムの構成要素を示すタイミング
図400を示す。
図4において、横軸は時間をピコ秒(ps)で表し、縦軸は様々な対象信号の振幅をボルトで表す。タイミング
図400は、「CK」とラベル付けされたメモリコマンドクロック信号及び「CK#」とラベル付けされたその補完の波形410と、「COMMAND」とラベル付けされたコマンド信号の波形420と、「ADDRESS」とラベル付けされたアドレス信号の波形430と、「DQS」とラベル付けされた真のデータストローブ信号及び「DQS#」とラベル付けされたその補完の波形440と、8ビット等のデータ信号の合成数を表す「DQ」とラベル付けされたデータ信号の波形450と、を含む。
【0042】
CK及びCK#信号は、DDRメモリチップがコマンドを登録し、データの入力及び出力のタイミングをとるために使用する差動クロック信号を形成する。タイミング
図400は、「T0」から「T9」とラベル付けされた特定の遷移、及び、メモリ及びクロック速度によって決定されるT7後の時間量で生じる「Tn」とラベル付けされた遷移を示す。
【0043】
COMMANDは、CK信号のローからハイへの遷移及びCK#信号のハイからローへの遷移で登録される。タイミング
図400には、T0で発生する書き込みコマンドと、それに続くTnで発生する読み取りコマンドとが、COMMAND信号上のノーオペレーション(NOP)符号化によって分離されて示されている。COMMAND信号は、メモリコントローラ300が特定のタイプのコマンドを符号化するために使用する個々の信号のセットを含む。これらの信号及びその符号化は、対応するDDR規格によって規定されており、周知であることから、これ以上説明しない。
【0044】
タイミング
図400に示されるように、時間T0におけるWRITEサイクルは、「Bank,Col n」とラベル付けされた所定のランク内の特定のバンク及び列に対するものであり、READサイクルは、「Bank,Col b」とラベル付けされたTnにおける同じランクの異なるバンク及び列に対するものである。T0とTnとの間の最小時間量はターンアラウンドタイムとして知られており、この場合、同じランクの書き込みから読み取りへのターンアラウンドタイムである。同じランクの書き込みから読み取りへのターンアラウンドタイムは、タイミング
図400に示される特定のWRITEコマンドを参照してここで説明される3つの個々のタイミング構成要素によって決定される。
【0045】
WRITEコマンドの発行から、書き込みデータがメモリチップに提供されるまでの時間量は、列書き込み待ち時間、すなわちt
CWLとして知られている。
図5に示すように、t
CWLは、T0からT5までの時間、すなわちこの例では5クロックサイクルである。
【0046】
T0へのWRITEコマンドによって開始された書き込みサイクルは、時間T5で始まるデータの書き込みを引き起こす。T5の前に、メモリコントローラは、DQS及びDQS#信号にプリアンブル期間を提供する。タイミング
図400は、DDR4 SDRAMのタイミング図であり、プリアンブルは、第1のデータ要素をメモリに書き込ませるために、T4において半クロックサイクルの間ハイになり、次いで半クロックサイクルの間ローになり、次いでT5において再びハイになるDQSからなる。タイミング
図400に示されるように、書き込みサイクルは、データが、DQS及びDQS#信号の4つの連続遷移によって定義される4つの半サイクル上で転送される、4つのバーストである。書き込みサイクルの間、メモリコントローラは、データストローブ信号DQS及びDQS#並びにデータ信号DQの両方をドライブ(drives)する。DQS信号及びDQS#信号における遷移は、タイミング
図400において値「D
IN n」、「D
IN n+1」、「D
IN n+2」、及び「D
IN n+3」として示される、メモリチップにおける各データ値に対する有効時間の中央で発生し、ここで、「IN」指示子は、メモリコントローラによって出力され、メモリに入力されるデータを表す。4のバーストの長さはt(BL/2)とラベル付けされ、ここでBLは書き込みバースト内のサイクル数に等しい。したがって、タイミング
図400では、t(BL/2)は2クロックサイクルに等しい。メモリコントローラが最後のデータ要素を送信した後、メモリコントローラは、DQS/DQS#信号内にポストアンブルを提供し、ここで、DQSは半クロックサイクルの間ロー(low)になり、DQS#は同じ半クロックサイクルの間ハイ(high)になる。
【0047】
DQSポストアンブルの終了から次のREADコマンドを受け入れることができるまでの時間量は、書き込み-読み取り時間、すなわちt
WTRとして知られている。それは、タイミング
図400において、T7とTnとの間に生じるものとして示され、クロック速度及びDDRバージョンによって決定されるクロックサイクルの最小数である。
【0048】
全体の同じランクの書き込みから読み取りへのターンアラウンドタイムは、式[1]によって与えられる。
同じランクのターンアラウンドタイム=t
CWL+t
(BL/2)+t
WTR_S/L [1]
ここで、t
WTR_Sは、異なるバンクグループへのアクセスに対する同じランクの書き込みから読み取りへのターンアラウンドタイムであり、t
WTR_Lは、同じバンクグループへのアクセスに対する同じランクの書き込みから読み取りへのターンアラウンドタイムである。タイミング
図400は、DDR4メモリの例を示す。この例では、クロック速度は1866メガヘルツ(MHz)である。t
CWL=5、t(BL/2)=2、t
WTR_L=14であり、合計21クロックである。6400MHzのクロック速度を有するDDR5メモリでは、同じランクのターンアラウンドタイムは、70クロックサイクルを超える可能性がある。
【0049】
図5は、先行技術において知られているメモリコントローラによって選択され得るメモリアクセスのタイムライン500のセットを示す図である。タイムライン500において、時間は左から右に進む。タイムライン500は、第1のタイムライン510及び第2のタイムライン520を含む。第1のタイムライン510は、オーバーヘッド期間513によって分離された書き込みアクセス511のバースト及び読み取りアクセス512の後続のバーストを示す。
図5及び他の場所で使用されるように、書き込み又は読み取りアクセスの「バースト」は、各々が複数のデータ転送を含む、個々のメモリアクセスコマンドの連続又はストリークを意味する。個々のデータ転送のセットは、従来、「バースト」とも呼ばれるが、本開示は、個々のデータ転送ではなく、メモリアクセスコマンドのバーストに関する。しかしながら、「バースト」の適切な意味は、その文脈から容易に明らかになるであろう。
【0050】
書き込みアクセス511のバーストにおいて、「W0」とラベル付けされた書き込みアクセスは、ランク0への書き込みアクセスであり、「W1」とラベル付けされた書き込みアクセスは、ランク1への書き込みアクセスである。メモリコントローラがバースト内でランク切り替えを実行する場合、比較的小さなオーバーヘッドペナルティ又は「バブル」を被る。書き込みから読み取りへのターンアラウンドタイムが比較的長いため、メモリコントローラは、書き込みアクセスタイプと読み取りアクセスタイプとの間の切り替えよりも、書き込みバーストを継続するためにランクを切り替えることを好む。したがって、第1のタイムライン510に示す例では、メモリコントローラは、ランク0への2つの書き込みアクセスを選択し、続いてランク1への2つの書き込みアクセスを選択し、続いてランク0への1つの書き込みアクセスを選択した後、書き込みから読み取りへのターンアラウンドを実行する。
【0051】
読み取りアクセス512のバーストにおいて、「R0」とラベル付けされた読み取りアクセスは、ランク0への読み取りアクセスであり、「R1」とラベル付けされた読み取りアクセスは、ランク1への読み取りアクセスである。メモリコントローラによって選択された読み取りアクセスを含む全てのアクセスは、上記の式[1]によって与えられる同じランクの書き込みから読み取りへのターンアラウンドタイムを含む全てのタイミング適格性仕様を満たさなければならない。第1のタイムライン510に示されている例では、ランク1への読み取りアクセスは、ランク1への書き込みから読み取りへのターンアラウンドタイムが満たされるまで利用可能ではないので、メモリコントローラは、ランク1へのそのアクセスで読み取りバーストを開始する。まさに次のサイクルで、ランク0への読み取りアクセスが発行可能になり、ランク0への書き込みから読み取りへのターンアラウンドタイムがそれまでに満足されているので、メモリコントローラは、次のアクセスとしてランク0への読み取りを選択する。
【0052】
オーバーヘッド期間513は、メモリアクセスが同じランクの書き込みから読み取りへのターンアラウンドタイムのために未だタイミング適格になっていないので、メモリコントローラがメモリアクセスを選択することができない期間を表す。この期間は比較的長く、システムの効率を著しく低下させる。
【0053】
第2のタイムライン520は、オーバーヘッド期間523によって分離された書き込みアクセス521のバースト及び読み取りアクセス522の後続のバーストを示す。第2のタイムライン520は、バンク1への最後のアクセスの後の同じバンクの書き込みから読み取りへのターンアラウンドタイムの満了時に利用可能な読み取りアクセスがないことを除いて、第1のタイムライン510と同様である。したがって、メモリコントローラは、バンク0への最後のアクセスの後、完全な同じバンクの書き込みから読み取りへのターンアラウンドタイムを待つ。その後、最初の読み取りアクセスの前に、ランク1への読み取りアクセスが利用可能になり、メモリコントローラは、ランク0へのアクセスの後の読み取りバーストにおいてそれを選択する。
【0054】
本発明者らは、書き込みバースト(例えば、書き込みアクセス511又は521のバースト)の終了の近くのランク切り替えが、長い同じバンクの書き込みから読み取りへのターンアラウンドタイムに起因して非効率性を増大させることを発見した。しかしながら、本明細書で開示される様々な実施形態によれば、データプロセッサ及び方法は、書き込みバーストの終了の近くでのランク切り替えを回避し、バブル(bubble)をはるかに小さい量に低減し、それによってメモリコントローラ効率を高める。
【0055】
この効率の問題を解決するために、本発明者らは、マルチランクシステムにおいて、通常では書き込みから読み取りへのターンアラウンドによって引き起こされる非効率性を低減する機会が存在することを発見し、この機会を利用して効率及びメモリバス利用を改善するアービタ338を有するデータプロセッサ及びメモリコントローラを開発した。
【0056】
図6は、いくつかの実施形態による、
図3のメモリコントローラ300の部分600のブロック図である。部分600は、アービタ238と、アービタ238の動作に関連する制御回路660のセットと、を含む。
【0057】
アービタ238は、サブアービタ605及び最終アービタ650のセットを含む。サブアービタ605は、サブアービタ610と、サブアービタ620と、サブアービタ630と、を含む。サブアービタ610は、「PH ARB」とラベル付けされたページヒットアービタ612と、出力レジスタ614と、を含む。ページヒットアービタ612は、コマンドキュー220に接続された第1の入力、第2の入力、及び、出力を有する。レジスタ614は、ページヒットアービタ612の出力に接続されたデータ入力、UCLK信号を受信するためのクロック入力、及び、出力を有する。サブアービタ620は、「PC ARB」とラベル付けされたページコンフリクトアービタ622と、出力レジスタ624と、を含む。ページコンフリクトアービタ622は、コマンドキュー220に接続された第1の入力と、第2の入力と、出力と、を有する。レジスタ624は、ページコンフリクトアービタ622の出力に接続されたデータ入力と、UCLK信号を受信するためのクロック入力と、出力と、を有する。サブアービタ630は、「PM ARB」とラベル付けされたページミスアービタ632と、出力レジスタ634と、を含む。ページミスアービタ632は、コマンドキュー220に接続された第1の入力と、第2の入力と、出力と、を有する。レジスタ634は、ページミスアービタ632の出力に接続されたデータ入力と、UCLK信号を受信するためのクロック入力と、出力と、を有する。最終アービタ650は、リフレッシュロジック232の出力に接続された第1の入力と、ページ閉鎖予測器662からの第2の入力と、出力レジスタ614の出力に接続された第3の入力と、出力レジスタ624の出力に接続された第4の入力と、出力レジスタ634の出力に接続された第5の入力と、「CMD」とラベル付けされたアービトレーションの勝者をメモリインターフェースキュー214に提供するための出力と、を有する。いくつかの実施形態では、最終アービタ650は、メモリコントローラクロックサイクルごとに2つのサブアービトレーションの勝者を選択することができる。
【0058】
制御回路660は、
図2に関して上述したタイミングブロック234及びページテーブル236、並びに、ページ閉鎖予測器662、現在モードレジスタ602及びクロスモードイネーブルロジック604を含む。タイミングブロック234は、クロスモードイネーブルロジック604に接続される出力と、ページヒットアービタ612と、ページコンフリクトアービタ622と、ページミスアービタ632と、に接続される入力及び出力を有する。ページテーブル234は、リプレイキュー230の出力に接続された入力と、リプレイキュー230の入力に接続された出力と、コマンドキュー220の入力に接続された出力と、タイミングブロック234の入力に接続された出力と、ページ閉鎖予測器662の入力に接続された出力と、を有する。ページ閉鎖予測器662は、ページテーブル236の一方の出力に接続される入力と、出力レジスタ614の出力に接続される入力と、最終アービタ650の第2の入力に接続される出力と、を有する。クロスモードイネーブルロジック604は、現在モードレジスタ602に接続される入力と、コマンドキュー220に接続される入力と、最終アービタ650に接続される入力及び出力と、サブアービタ610、サブアービタ620、並びに、サブアービタ630に接続される入力及び出力と、を有する。
【0059】
動作中、アービタ338は、現在モード(読み取りストリーク又は書き込みストリークが進行中であるかどうかを示す)、各エントリのページ状態、各メモリアクセス要求の優先度、及び、要求間の依存関係を考慮に入れて、コマンドキュー220及びリフレッシュロジック232からメモリアクセスコマンドを選択する。優先度は、AXI4バスから受信されてコマンドキュー220に記憶される要求のサービス品質すなわちQoSに関連するが、メモリアクセスのタイプ及びアービタ238の動的動作に基づいて変更することができる。アービタ238は、既存の集積回路技術の処理限界と送信限界との間の不整合に対処するために並列に動作する3つのサブアービタを含む。それぞれのサブアービトレーションの勝者が最終アービタ650に提示される。最終アービタ650は、これらの3つのサブアービトレーションの勝者間、及び、リフレッシュロジック232からのリフレッシュ動作を選択し、ページ閉鎖予測器662によって判定されるように読み取り又は書き込みコマンドを読み取り又はオートプリチャージコマンドによる書き込みに更に変更することができる。
【0060】
クロスモードイネーブルロジック604は、メモリチャネルを介して読み取りコマンドのストリーク及び書き込みコマンドのストリークを引き起こし、管理するように動作する。何れかのタイプのコマンドの現在のストリーク中、クロスモードイネーブルロジック604は、メモリチャネルのデータバス効率のインジケータを監視する。データバス効率が定められた閾値未満であることを示すデータバス効率のインジケータに応じて、クロスモードイネーブルロジック304は、現在のストリークを停止し、他のタイプのストリークを開始し、現在モードレジスタ602内の現在モードを変更する。
【0061】
ページヒットアービタ612、ページコンフリクトアービタ622及びページミスアービタ632の各々は、これらのそれぞれのカテゴリに属するコマンドキュー220内のコマンドのタイミング適格性を判定するためにタイミングブロック234の出力に接続された入力を有する。タイミングブロック234は、各ランクにおけるそれぞれのバンクごとに特定の動作に関連する持続時間をカウントするバイナリカウンタのアレイを含む。状態を判定するために必要なタイマの数は、タイミングパラメータ、所定のメモリタイプのバンクの数、及び、所定のメモリチャネル上でシステムによってサポートされるランクの数に依存する。次に実装されるタイミングパラメータの数は、システムに実装されるメモリのタイプに依存する。例えば、GDDR5メモリは、他のDDRxメモリタイプよりも多くのタイミングパラメータに従うためにより多くのタイマを必要とする。バイナリカウンタとして実装された汎用タイマのアレイを含むことにより、タイミングブロック234は、異なるメモリタイプに関してスケーリングされて再利用され得る。クロスモードイネーブルロジック604信号からの入力は、何れのタイプのコマンドが読み取る又は書き込むかをサブアービタにシグナリングして、最終アービタ650の候補として提供する。
【0062】
ページヒットは、開いているページに対する読み取り又は書き込みサイクルである。ページヒットアービタ612は、ページを開くためにコマンドキュー220内のアクセス間を調停する。タイミングブロック234におけるタイマによって追跡されてページヒットアービタ612によってチェックされるタイミング適格パラメータは、例えば、行アドレスストローブ(row address strobe、RAS)を列アドレスストローブ(column address strobe、CAS)遅延時間(tRCD)及びCAS待ち時間(tCL)に含む。例えば、tRCDは、ページがRASサイクルで開かれた後のページへの読み取り又は書き込みアクセスの前に経過しなければならない最小時間を指定する。ページヒットアービタ612は、割り当てられたアクセスの優先度に基づいてサブアービトレーションの勝者を選択する。一実施形態では、優先度が4ビット、1ホット(hot)値であり、したがって、これは4つの値の中の1つの優先度を示すが、この4レベルの優先度方式が単なる一例であることは明らかである。ページヒットアービタ612が同じ優先度レベルで2つ以上の要求を検出する場合、最も古いエントリが勝つ。
【0063】
ページコンフリクトは、バンク内の別の行が現在アクティブ化される場合のバンク内の1つの行へのアクセスである。ページコンフリクトアービタ622は、コマンドキュー220内のアクセスと、対応するバンク及びランクにおいて現在開いているページとコンフリクトするページとの間で調停する。ページコンフリクトアービタ622は、プリチャージコマンドを発行させるサブアービトレーションの勝者を選択する。タイミングブロック234のタイマによって追跡されてページコンフリクトアービタ622によってチェックされるタイミング適格パラメータは、例えば、プリチャージコマンド期間(tRAS)を含む。ページコンフリクトアービタ622は、割り当てられたアクセスの優先度に基づいてサブアービトレーションの勝者を選択する。ページコンフリクトアービタ622が同じ優先度レベルの2つ以上の要求を検出する場合、最も古いエントリが勝つ。
【0064】
ページミスは、プリチャージ状態にあるバンクへのアクセスである。ページミスアービタ632は、コマンドキュー220内のアクセスとプリチャージされたメモリバンクとの間を調停する。タイミングブロック234のタイマによって追跡されてページミスアービタ632によってチェックされるタイミング適格パラメータは、例えば、プリチャージコマンド期間(tRP)を含む。同じ優先度レベルでページミスである2つ以上の要求がある場合、最も古いエントリが勝つ。
【0065】
各サブアービタは、それぞれのサブアービトレーション勝者のための優先度値を出力する。最終アービタ650は、ページヒットアービタ612、ページコンフリクトアービタ622、及び、ページミスアービタ632の各々からのサブアービトレーションの勝者の優先度値を比較する。最終アービタ650は、一度に2つのサブアービトレーションの勝者を考慮に入れた相対的な優先度比較のセットを実行することによって、サブアービトレーションの勝者間の相対的な優先度を判定する。サブアービタは、現在モードが変化する場合に利用可能な候補コマンドのセットがサブアービトレーション勝者として迅速に利用可能であるように、モード、読み取り及び書き込みごとにコマンドを調停するためのロジックのセットを含むことができる。
【0066】
最終アービタ650は、3つのサブアービトレーションの勝者の相対的な優先度を判定した後、サブアービトレーションの勝者がコンフリクトするかどうかを判定する(すなわち、それらの勝者が同じバンク及びランクに向けられているかどうか)。そのようなコンフリクトが存在しない場合、最終アービタ650は、最高の優先度を有する最大2つのサブアービトレーションの勝者を選択する。コンフリクトがある場合、最終アービタ650は以下のルールに従う。ページヒットアービタ612のサブアービトレーションの勝者の優先度値がページコンフリクトアービタ622の優先度値よりも高く、且つ、それらが両方とも同じバンク及びランクである場合、最終アービタ650は、ページヒットアービタ612によって示されるアクセスを選択する。ページコンフリクトアービタ622のサブアービトレーションの勝者の優先度値がページヒットアービタ612の優先度値よりも高く、且つ、それらが両方とも同じバンク及びランクである場合、最終アービタ650は、いくつかの更なる要因に基づいて勝者を選択する。場合によっては、ページ閉鎖予測器662は、オートプリチャージ属性を設定することにより、ページヒットアービタ612が示すアクセスの終了時にページを閉鎖させる。
【0067】
ページヒットアービタ612内で、優先度は、メモリアクセスエージェントからの要求優先度によって最初に設定されるが、アクセスのタイプ(読み取り又は書き込み)及びアクセスのシーケンスに基づいて動的に調整される。概して、ページヒットアービタ612は、読み取りに対してより高い暗黙の優先度を割り当てるが、書き込みが完了に向かって進行するようにするために優先度上昇メカニズムを実装する。
【0068】
ページヒットアービタ612が読み取り又は書き込みコマンドを選択するごとに、ページ閉鎖予測器662は、オートプリチャージ(auto-precharge、AP)属性を伴うコマンドを送信するかどうかを判定する。読み取り又は書き込みサイクル中、オートプリチャージ属性は、所定のアドレスビットを用いて設定され、オートプリチャージ属性は、読み取り又は書き込みサイクルが完了した後にDDRデバイスにページを閉じさせ、これにより、メモリコントローラがそのバンクのための個別のプリチャージコマンドを後に送信する必要性を回避する。ページ閉鎖予測器662は、選択されたコマンドと同じバンクにアクセスするコマンドキュー220に既に存在する他の要求を考慮に入れる。ページ閉鎖予測器662がメモリアクセスをAPコマンドに変換する場合、そのページへの次のアクセスはページミスとなる。
【0069】
クロスモードイネーブルロジック604は、サブアービタ605を制御して書き込みバーストの終了の近くでのランク切り替えを回避することによって、同じランクの書き込みから読み取りへのターンアラウンドタイムによって引き起こされる非効率性を低減する。同じランクの書き込みから読み取りへのオーバーヘッドを完全に隠すために、書き込みバーストの終了時に利用可能な同じランクの書き込み要求の数Lが必要になる。
L=(tCWL+t(BL/2)+tWTR_S/L)/tCCD [2]
ここで、tCCDは、列アドレスストローブ(CAS)からCASへの遅延である。
【0070】
一例では、クロスモードイネーブルロジック604は、コマンドキュー320内の書き込みの総数が固定閾値未満であると判定することによって、書き込みバーストの「終了に近い」と判定してもよい。別の例では、クロスモードイネーブルロジック604は、現在のランク以外のランクへのコマンドキュー320内の書き込みの数がL未満であると判定することによって、それが書き込みバーストの「終了の近く」であると判定してもよい。何れの場合も、クロスモードイネーブルロジック604が「終了の近く」条件を検出すると、書き込みバーストが他のランクに切り替わることを許可しない。これらの制約は、読み取りバーストに切り替える場合にバーストからいくつかの書き込みを残すことがある。
【0071】
図7は、いくつかの実施形態による、
図6のアービタ338によって選択されたメモリアクセスのタイムライン700を示す図である。タイムライン700において、時間は左から右に進む。タイムライン700は、オーバーヘッド期間730によって分離された書き込みアクセス710のバースト及び読み取りアクセス720の後続のバーストを示す。書き込みアクセス710のバーストは、ランク1への書き込みアクセスと、それに続くランク0への4回の書き込みアクセスと、を含む。読み取りアクセス720のバーストは、ランク1への4つの読み取りアクセスを含み、その後にランク0への読み取りアクセスが続く。タイムライン700に示されるように、タイミング適格性は、ランク1への書き込みアクセスの終了からランク1への第1の読み取りアクセスまでの同じバンク書き込みから読み取りへのターンアラウンドタイムを含み、これは読み取りアクセス720のバーストの開始時に満たされる。同様に、ランク0への最後の書き込みアクセスの終了からランク0への読み取りアクセスまで、同じバンクの書き込みから読み取りへのターンアラウンドタイムがあり、これは、読み取りアクセス720のバースト内のランク0への読み取りアクセスの開始時に満たされる。
【0072】
更に、「tWRRD」とラベル付けされた異なるランクの書き込みから読み取りへのターンアラウンド待ち時間があり、その間、メモリコントローラはメモリバスを使用することができず、非効率を引き起こす。
tWRRDはtWTR_S/Lよりも大幅に短い。更に、tWRRDは、メモリクロック速度が増加するにつれて、tWTR_S/Lよりも遅くスケールアップする。例えば、6400MHzで動作する高レートDDR5 SDRAMの場合、tCWLは54メモリクロックサイクルであり、tWTRは30メモリクロックサイクルであるが、tWRRDは10から20メモリクロックサイクルの間であり、ボード設計に依存して、同じランクのターンアラウンドと異なるランクのターンアラウンドとの間の差を約70メモリクロックサイクルよりも大きくする。
【0073】
ステージングバッファ326は、ステージングバッファ326の使用によって支援され得る同じランクの書き込みから読み取りへのターンアラウンドタイムペナルティを回避する能力を強化することができる。コマンドキュー320が多くのランクからの要求を見ることができる場合、それは当然、より頻繁にランク切り替えを行う。コマンドキュー320があまりに多くのランクからの要求を見ることを回避するために、ピッカ328は、不要な要求をステージングバッファ326に一時的に残すことができる。このようにして、ステージングバッファ326及びピッカ328は、2つのアクティブランクのみから要求をピッキングすることによって、多ランクトラフィックを2ランクトラフィックに再整形することができる。
【0074】
例えば、コマンドキュー320が一度に2つのランクのみに焦点を合わせるように、5つのランクにわたって均等に分散され、読み取りと書き込みとの間で均等に分割された要求のシーケンスをステージングバッファ326から選択することができる。この技術は、大多数のコマンド要求が多くのランクではなく2つのランクのみからのものであることを確実にし、CASコマンド間のランク切り替え時間が多すぎることを防止する。ピッカ328は、ステージングバッファからの要求が使い果たされるまで、2つの好ましいランクから要求を選択し、次いで、(第1のランクが第2のランクの前に使い果たされた場合)別のランクに移動するか、又は、(第1のランクと第2のランクの両方が同時に使い果たされた場合)2つの他のランクに移動する。
【0075】
図8は、いくつかの実施形態による、マルチランクシステムからアクセスを選択するための技術のフローチャート800である。アクションボックス810において、メモリコントローラ300は、書き込みバーストを開始する。アクションボックス820において、メモリコントローラ300は、現在のランクへの書き込みアクセスを実行する。次に、決定ボックス830において、メモリコントローラ300は、例えば、クロスモードイネーブルロジック604を介して、書き込みバーストの終了に近いかどうかを判定する。例えば、クロスモードイネーブルロジック604は、コマンドキュー320内の書き込みアクセスの総数が所定数未満であるかどうかを判定してもよい。別の例では、クロスモードイネーブルロジック604は、現在のランクへのコマンドキュー320内の書き込みアクセスの数が、同じバンクの書き込みから読み取りへのターンアラウンドタイムのオーバーヘッドを隠すのに十分であるかどうかを判定することができる。メモリコントローラ300が書き込みバーストの終了の近くにない場合、アクションボックス831において、メモリコントローラ300は、現在のランクを別のランクに選択的に切り替えるかどうかを判定する。この切り替えは、他の従来のメモリコントローラ選択基準に基づくことができる。現在のランクが選択的に切り替えられた後、フローはアクションボックス820に戻る。しかしながら、メモリコントローラ300が書き込みバーストの終了の近くにある場合、アクションボックス840において、所定の回数だけ現在のランクへの書き込みバーストを継続する。この所定の数は、同じランクの書き込みから読み取りへのターンアラウンドタイムを隠すように選択される。アクションボックス850において、それは、上記の式[3]によって与えられるはるかに短いランク書き込みから読み取りへのターンアラウンドタイムt
WRRDを待つ。次いで、メモリコントローラ300は、決定ボックス860によって示されるように、何れかの読み取りアクセスがタイミング適格になった場合に読み取りバーストを開始し、メモリコントローラ300は、全てのタイミング基準に基づいて何れかの読み取りアクセスがタイミング適格であるかどうかを判定する。読み取りアクセスが未だタイミング適格でない場合、方法は、タイミング適格性について読み取りアクセスをテストし続ける。読み取りアクセスがタイミング適格になると、フローはアクションボックス870に進み、メモリコントローラ300が読み取りバーストを開始する。
【0076】
開示された技術は、異なるランクへの何らかの読み取りアクセスが利用可能であると仮定して、異なるバンクの書き込みから読み取りへのターンアラウンドタイムのオーバーヘッドのみを待つ代わりに、同じバンクの書き込みから読み取りへのターンアラウンドタイムを回避することによって、メモリアクセスの効率を高める。更に、通常のタイミング適格性基準に基づいて書き込みバーストの終了後にアービタが任意のタイミング適格読み取りアクセスを自然に選択することを可能にするために、既存のタイミング適格性チェックに依拠する。
【0077】
データプロセッサ100又はメモリコントローラ300等のその任意の部分は、プログラムによって読み取られ、集積回路を製造するために直接的又は間接的に使用され得るデータベース又は他のデータ構造の形態でコンピュータアクセス可能データ構造によって記述又は表現され得る。例えば、このデータ構造は、Verilog又はVHDL等の高レベル設計言語(high-level design language、HDL)におけるハードウェア機能の挙動レベル記述又はレジスタ転送レベル(register-transfer level、RTL)記述であってもよい。記述は、合成ライブラリからゲートのリストを含むネットリストを生成するために記述を合成することができる合成ツールによって読み取ることができる。ネットリストは、集積回路を含むハードウェアの機能も表すゲートのセットを含む。ネットリストは、次いで、マスクに適用される幾何学的形状を記述するデータセットを生成するために配置され、ルーティングされ得る。次いで、マスクを様々な半導体製造工程で使用して、集積回路を製造することができる。代替的に、コンピュータアクセス可能記憶媒体のデータベースは、所望に応じて、ネットリスト(合成ライブラリの有無にかかわらず)若しくはデータセット、又は、グラフィックデータシステム(Graphic Data System、GDS)IIデータであり得る。
【0078】
特定の実施形態を説明してきたが、これらの実施形態に対する様々な変更が当業者には明らかである。例えば、メモリコントローラが書き込みバーストの終了の近くにある場合を決定する様々な技術が可能である。更に、書き込みから読み取りへのターンアラウンド技術は、ステージングバッファ及びピッカとは独立して又はそれとともに使用することができ、ステージングバッファ及びピッカは、マルチランクシステム内のコマンドキュー内に配置する所望のアクセスを選択するためのウィンドウを拡張するのによく適している。現在のランク及び第2のランクをステージングバッファから選択してコマンドキューに提供する例を説明したが、異なる数の追加のランクを選択することもできる。また、アービタの回路構造は、他の実施形態では異なっていてもよい。
【0079】
したがって、添付の特許請求の範囲は、開示された実施形態の範囲内に入る開示された実施形態の全ての変更を網羅することを意図している。
【要約】
データプロセッサは、ステージングバッファと、コマンドキューと、ピッカと、アービタと、を含む。ステージングバッファは、第1のメモリアクセス要求を受信及び記憶する。コマンドキューは、各々がメモリシステムの複数のランクのうち何れかを示す第2のメモリアクセス要求を記憶する。ピッカは、ステージングバッファ内の第1のメモリアクセス要求の中から何れかを選択し、選択された第1のメモリアクセス要求をコマンドキューに提供する。アービタは、メモリシステムの現在のランクへのアクセスに対する優先度に少なくとも基づいて、コマンドキューの第2のメモリアクセス要求の中から何れかを選択する。ピッカは、ステージングバッファの第1のメモリアクセス要求の中から現在のランクへのアクセスを選択し、選択された第1のメモリアクセス要求をコマンドキューに提供する。
【選択図】
図8