(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B1)
(11)【特許番号】
(24)【登録日】2024-11-27
(45)【発行日】2024-12-05
(54)【発明の名称】同期メモリのための読み取りクロック開始及び停止
(51)【国際特許分類】
G06F 12/00 20060101AFI20241128BHJP
G11C 7/22 20060101ALI20241128BHJP
【FI】
G06F12/00 564A
G06F12/00 597C
G11C7/22 100
(21)【出願番号】P 2024534114
(86)(22)【出願日】2022-11-30
(86)【国際出願番号】 US2022051419
(87)【国際公開番号】W WO2023107310
(87)【国際公開日】2023-06-15
【審査請求日】2024-06-28
(32)【優先日】2021-12-08
(33)【優先権主張国・地域又は機関】US
(32)【優先日】2022-06-27
(33)【優先権主張国・地域又は機関】US
【早期審査対象出願】
(73)【特許権者】
【識別番号】591016172
【氏名又は名称】アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド
【氏名又は名称原語表記】ADVANCED MICRO DEVICES INCORPORATED
(74)【代理人】
【識別番号】100108833
【氏名又は名称】早川 裕司
(74)【代理人】
【識別番号】100111615
【氏名又は名称】佐野 良太
(74)【代理人】
【識別番号】100162156
【氏名又は名称】村雨 圭介
(72)【発明者】
【氏名】アーロン ジョン ニーグレン
(72)【発明者】
【氏名】カーシク ゴパラクリシュナン
(72)【発明者】
【氏名】ツン ホー リウ
【審査官】後藤 彰
(56)【参考文献】
【文献】特表2022-522012(JP,A)
【文献】国際公開第2020/180677(WO,A1)
【文献】特開2011-8779(JP,A)
【文献】特開2010-170597(JP,A)
【文献】特開2006-99569(JP,A)
【文献】米国特許出願公開第2004/0064660(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 12/00
G11C 7/22
(57)【特許請求の範囲】
【請求項1】
メモリコントローラであって、
入力されるメモリアクセスコマンドを保持するための複数のエントリを含むコマンドキューと、
前記コマンドキューからメモリにディスパッチするコマンドを選択するためのアービタと、
前記メモリにディスパッチするために選択された読み取りコマンドを監視し、指定された条件に応じて、読み取りクロックの状態を、前記読み取りクロックが読み取りコマンドのポストアンブル期間の後にアクティブのままである第1の状態から、前記読み取りクロックが前記ポストアンブル期間の後に非アクティブになる第2の状態に変更するように前記メモリに命令する読み取りクロック制御回路と、を備える、
メモリコントローラ。
【請求項2】
前記指定された条件は、前記メモリにディスパッチされた現在の読み取りコマンドと、前記メモリにディスパッチされる後続の読み取りコマンドと、の間に少なくとも所定サイズ以上のギャップが生じることである、
請求項1のメモリコントローラ。
【請求項3】
前記指定された条件は、前記メモリにディスパッチされる現在の読み取りコマンドと、前記メモリにディスパッチされる後続の読み取りコマンドと、の間に少なくとも指定された数の書き込みコマンドが生じることである、
請求項1のメモリコントローラ。
【請求項4】
前記指定された条件は、現在の読み取りコマンドが、前記アービタによって選択された読み取りコマンドのストリークにおける最後のコマンドであることである、
請求項1のメモリコントローラ。
【請求項5】
前記読み取りクロック制御回路は、現在の読み取りコマンドに関連付けられた読み取りクロックフラグを指定値に設定することによって、前記読み取りクロックの状態を変更するように前記メモリに命令する、
請求項1のメモリコントローラ。
【請求項6】
前記読み取りクロック制御回路は、読み取りコマンドとは別の明示的なコマンドを前記メモリに送信することによって、前記読み取りクロックの状態を変更するように前記メモリに命令する、
請求項1のメモリコントローラ。
【請求項7】
前記読み取りクロック制御回路は、前記指定された条件が存在しないことに応じて、前記読み取りクロックを前記第1の状態のままにする、
請求項1のメモリコントローラ。
【請求項8】
前記読み取りクロックを前記第1の状態のままにすることは、現在の読み取りコマンドに関連付けられた読み取りクロックフラグを指定値に設定することを含む、
請求項7のメモリコントローラ。
【請求項9】
方法であって、
メモリコントローラにおいて、メモリアクセスコマンドを選択し、それらをメモリにディスパッチすることと、
前記メモリにディスパッチするために選択された読み取りコマンドを監視することと、
読み取りクロックの状態を、前記読み取りクロックが読み取りコマンドのポストアンブル期間の後にアクティブのままである第1の状態から、前記読み取りクロックが前記ポストアンブル期間の後に非アクティブになる第2の状態に変更するように前記メモリに命令することと、を含む、
方法。
【請求項10】
前記読み取りクロックの状態を変更するように前記メモリに命令することは、指定された条件に基づいており、
前記指定された条件は、前記メモリにディスパッチされた現在の読み取りコマンドと、前記メモリにディスパッチされる後続の読み取りコマンドと、の間に少なくとも所定サイズ以上のギャップが生じることである、
請求項9の方法。
【請求項11】
前記読み取りクロックの状態を変更するように前記メモリに命令することは、指定された条件に基づいており、
前記指定された条件は、前記メモリにディスパッチされる現在の読み取りコマンドと、前記メモリにディスパッチされる後続の読み取りコマンドと、の間に少なくとも指定された数の書き込みコマンドが生じることである、
請求項9の方法。
【請求項12】
前記読み取りクロックの状態を変更するように前記メモリに命令することは、指定された条件に基づいており、
前記指定された条件は、現在の読み取りコマンドが、前記メモリコントローラによって選択された読み取りコマンドのストリークにおける最後のコマンドであることである、
請求項9の方法。
【請求項13】
前記読み取りクロックの状態を変更するように前記メモリに命令することは、現在の読み取りコマンドに関連付けられた読み取りクロックフラグを指定値に設定することを含む、
請求項9の方法。
【請求項14】
前記読み取りクロックの状態を変更するように前記メモリに命令することは、指定された条件に基づいており、
前記指定された条件が存在しないことに応じて、前記読み取りクロックを前記第1の状態のままにすることを含む、
請求項9の方法。
【請求項15】
前記読み取りクロックを前記第1の状態のままにすることは、現在の読み取りコマンドに関連付けられたメタデータフラグを指定値に設定することを含む、
請求項14の方法。
【発明の詳細な説明】
【背景技術】
【0001】
現代のダイナミックランダムアクセスメモリ(dynamic random-access memory、DRAM)は、DRAMと、グラフィックス処理ユニット(graphics processing unit、GPU)、中央処理ユニット(central processing unit、CPU)等の1つ以上のデータプロセッサと、を接続するバス上のデータ伝送の速度を増加させることによって、高いメモリ帯域幅を提供する。DRAMは、典型的には、安価で高密度であり、それによって、デバイスごとに大量のDRAMを集積することが可能になる。今日販売されている殆どのDRAMチップは、Joint Electron Devices Engineering Council(JEDEC)が普及を推進した様々なダブルデータレート(double data rate、DDR)DRAM規格と適合する。典型的には、いくつかのDDR DRAMチップが単一のプリント回路基板上に組み合わされて、比較的高速であるだけでなくスケーラビリティも提供できるメモリモジュールを形成する。
【0002】
DDR DRAMは、ホストプロセッサからメモリへのコマンドの発行、したがってホストプロセッサとメモリとの間のデータの交換を同期させる自走クロック信号(free-running clock signal)に応じて動作するので、同期型である。DDR DRAMは、クロック信号に応じてコマンドを同期させ、読み取りデータストローブ信号を生成するために使用することができる。例えば、DDR DRAMは、ホストプロセッサによって提供される「DQS」として知られる中心整列データストローブ信号(center-aligned data strobe signal)を使用して書き込みデータを受信し、メモリは、DQSの立ち上がりエッジ及び立ち下がりエッジの両方でデータをキャプチャする。同様に、DDR DRAMは、DDR DRAMがDQS信号を提供するエッジ整列DQSと同期して読み取りデータを提供する。読み取りサイクルの間、ホストプロセッサは、DQS信号を内部で遅延させて、一般に、データアイトレーニング(data eye training)を実行することによって起動時に決定された量だけ、DQS信号をDQ信号の中心部分と整列させる。グラフィックスDDR、バージョン6(GDDR6)DRAM等のいくつかのDDR DRAMは、メインクロック信号と別の書き込みクロック信号の両方を受信し、読み取りデータストローブ信号をプログラム可能に生成する。
【0003】
しかしながら、これらの強化により、コンピュータシステムのメインメモリに使用されるDDRメモリの速度が改善されたが、更なる改善が求められている。
【図面の簡単な説明】
【0004】
【
図1】いくつかの実施形態による、データ処理システムを示すブロック図である。
【
図2】いくつかの実施形態による、
図1のGDDR DRAMのブロック図である。
【
図3】
図2のメモリの受信クロックモードに対するモードレジスタ設定を示す表である。
【
図4】いくつかの実施形態による、
図2のメモリの動作を理解するのに有用なフローチャートである。
【
図5】いくつかの実施形態による、
図2のメモリの受信クロックタイミングの特性を示すタイミング図である。
【
図6】いくつかの実施形態による、
図2のメモリの受信クロックタイミングの更なる特性を示すタイミング図である。
【
図7】いくつかの実施形態による、
図2のメモリの受信クロックタイミングの更に別の特性を示すタイミング図である。
【
図8】いくつかの実施形態による、
図1のメモリコントローラの一部のブロック図である。
【
図9】いくつかの実施形態による、読み取りクロックを動作させるためのプロセスのフロー図である。
【発明を実施するための形態】
【0005】
以下の説明において、異なる図面における同一の符号の使用は、同様のアイテム又は同一のアイテムを示す。別段の言及がなければ、「結合される(coupled)」という単語及びその関連する動詞形は、当該技術分野で周知の手段による直接接続及び間接電気接続の両方を含み、また、別段の言及がなければ、直接接続の任意の記述は、好適な形態の間接電気接続を使用する代替の実施形態も同様に意味する。
【0006】
メモリコントローラは、コマンドキューと、アービタと、読み取りクロック制御回路と、を含む。コマンドキューは、入力される(着信)メモリアクセスコマンドを保持するための複数のエントリを含む。アービタは、メモリへのディスパッチのためにコマンドキューからコマンドを選択するためのものである。読み取りクロック制御回路は、メモリへのディスパッチのために選択された読み取りコマンドを監視し、指定された条件に応じて、読み取りクロックの状態を、読み取りコマンドのポストアンブル期間に続いて読み取りクロックがアクティブのままである第1の状態から、読み取りクロックがポストアンブル期間に続いて非アクティブになる第2の状態に変更するようにメモリに命令するためのものである。
【0007】
方法は、メモリコントローラにおいて、メモリアクセスコマンドを選択し、それらをメモリにディスパッチすることを含む。本方法は、メモリへのディスパッチのために選択された読み取りコマンドを監視し、指定された条件に応じて、読み取りクロックの状態を、読み取りコマンドのポストアンブル期間に続いて読み取りクロックがアクティブのままである第1の状態から、読み取りクロックがポストアンブル期間に続いて非アクティブになる第2の状態に変更するようにメモリに命令する。
【0008】
データ処理システムは、メモリと、データプロセッサとデータプロセッサ及びメモリに連結されたメモリコントローラとを含む集積回路と、を含む。メモリコントローラは、コマンドキューと、アービタと、読み取りクロック制御回路と、を含む。コマンドキューは、入力される(着信)メモリアクセスコマンドを保持するための複数のエントリを含む。アービタは、メモリへのディスパッチのためにコマンドキューからコマンドを選択するためのものである。読み取りクロック制御回路は、メモリへのディスパッチのために選択された読み取りコマンドを監視し、指定された条件に応じて、読み取りクロックの状態を、読み取りコマンドのポストアンブル期間に続いて読み取りクロックがアクティブのままである第1の状態から、読み取りクロックがポストアンブル期間に続いて非アクティブになる第2の状態に変更するようにメモリに命令するためのものである。
【0009】
本明細書に開示される様々な実施形態によれば、メモリは、メモリに提供されるコマンドに基づいてメモリがメモリコントローラに提供する読み取りクロック(RCK)を開始及び停止する能力を提供する。更に、この挙動は、モードレジスタの1つ以上のビットの値に基づいてプログラム可能に有効及び無効にすることができる。
【0010】
図1は、いくつかの実施形態による、データ処理システム100を示すブロック図である。データ処理システム100は、概して、グラフィックス処理ユニット(GPU)110、ホスト中央処理ユニット(CPU)120、ダブルデータ速度(DDR)メモリ130、及び、グラフィックスDDR(GDDR)メモリ140の形態のデータプロセッサを含む。
【0011】
GPU110は、最適化されたグラフィックス処理、レンダリング及び表示のために非常に高い性能を有する離散グラフィックスプロセッサであるが、これらのタスクを実行するために高いメモリ帯域幅を必要とする。GPU110は、概して、コマンドプロセッサ111のセットと、グラフィックス単一命令複数データ(SIMD)コア112と、キャッシュ113のセットと、メモリコントローラ114と、DDR物理インターフェース回路(PHY)115と、GDDR PHY116と、を含む。
【0012】
コマンドプロセッサ111は、OpenGLプログラミング言語で指定されるもの等の高レベルグラフィックス命令を解釈するために使用される。コマンドプロセッサ111は、高レベルグラフィックス命令を受信するためのメモリコントローラ114への双方向接続、キャッシュ113への双方向接続、及び、グラフィックスSIMDコア112への双方向接続を有する。高レベル命令の受信に応じて、コマンドプロセッサ111は、キャッシュ113を一時記憶装置として使用して、フレームデータ等のデータのレンダリング、幾何学的処理、シェーディング及びラスタ化のためのSIMD命令を発行する。グラフィックス命令に応じて、グラフィックスSIMDコア112は、大規模並列方式で大きいデータセットに対して低レベル命令を実行する。コマンドプロセッサ111及びキャッシュ113は、入力データ及び出力(例えば、レンダリング及びラスタ化された)データの一時的な記憶のために使用される。また、キャッシュ113は、グラフィックスSIMDコア112への双方向接続と、メモリコントローラ114への双方向接続と、を有する。
【0013】
メモリコントローラ114は、コマンドプロセッサ111に接続された第1の上流ポートと、キャッシュ113に接続された第2の上流ポートと、第1の下流双方向ポートと、第2の下流双方向ポートと、を有する。本明細書で使用される場合、「上流」ポートは、データプロセッサに向かい、且つ、メモリから離れる回路の側にあり、「下流」ポートは、回路がデータプロセッサから離れ、且つ、メモリに向かう側にある。メモリコントローラ114は、DDRメモリ130及びGDDRメモリ140との間のデータ転送のタイミング及び順序付けを制御する。DDR及びGDDRメモリは非対称アクセスをサポートし、すなわち、メモリ内のオープンページへのアクセスは、クローズドページへのアクセスよりも高速である。メモリコントローラ114は、メモリアクセスコマンドを記憶し、特定のサービス品質目標を観察しながら、例えば、オープンページへのアクセスを優先し、書き込みから読み取りへ、且つ、その逆の頻繁なバスターンアラウンドを非優先にすることによって、効率のために順不同でそれらを処理する。
【0014】
DDR PHY115は、メモリコントローラ114の第1の下流ポートに接続された上流ポートと、DDRメモリ130に双方向に接続された下流ポートと、を有する。DDR PHY115は、DDRバージョン5(DDR5)等のDDRメモリ130の実装されたバージョンの全ての指定されたタイミングパラメータを満たし、メモリコントローラ114の指示でトレーニング動作を実行する。同様に、GDDR PHY116は、メモリコントローラ114の第2の下流ポートに接続された上流ポートと、GDDRメモリ200に双方向に接続された下流ポートと、を有する。GDDR PHY116は、GDDRバージョン7(GDDR7)等のGDDRメモリ140の実装されたバージョンの全ての指定されたタイミングパラメータを満たし、メモリコントローラ114の指示でトレーニング動作を実行する。
【0015】
本発明者らは、メモリ、例えば、GDDRメモリ200がGDDR PHY116に提供する読み取りクロック(RCK)が、特定の新しく有利な方法で動作するようにプログラムされ得ることを発見した。いくつかの実施形態によれば、メモリは「読み取り専用」モードを有する。読み取り専用モードでは、メモリはRCK信号に読み取りコマンドを提供し、読み取りコマンドのデータ送信前の読み取りプリアンブル期間中にRCK信号のトグルを開始し、少なくとも読み取りコマンドに続く読み取りポストアンブル期間の終わりまでトグルさせ続ける。読み取り専用モードは、読み取り動作が低頻度であるか又は低頻度であり得る作業負荷中に電力消費を低減する能力を提供する。
【0016】
また、GDDRメモリ200は、「常時実行」モードを有する。常時実行モードでは、GDDRメモリ200は、書き込みクロック(WCK)がホスト、例えば、ホストプロセッサチップのメモリコントローラ又はメモリPHYから受信される限り、RCK信号を連続的に提供する。常時実行モードは、ホストプロセッサPHYがロックされたままであり、プリアンブル期間中の再同期の必要性を回避する能力を提供する。
【0017】
いくつかの実施形態によれば、メモリは、メモリが如何なる読み取りクロック信号も提供しない無効モードを更に有する。
【0018】
図2は、いくつかの実施形態による、
図1のGDDRメモリ200のブロック図である。GDDRメモリ200は、概して、制御回路210と、アドレス経路220と、メモリアレイ及びページバッファ230と、データ読み取り経路240と、ボンドパッド250のセットと、データ書き込み経路と、を含む。
【0019】
制御回路210は、コマンドデコーダ211と、モードレジスタ212と、RCKロジック及びステートマシン213と、を含む。コマンドデコーダ211は、コマンド及びアドレスピン(
図2には示されていない)から受信したコマンドを、メモリのコマンド真理値表によって定義されるいくつかのサポートされたコマンドのうち何れかに復号する。コマンドデコーダ211によって復号されるコマンドの1つのタイプは、モードレジスタセット(MRS)コマンドである。MRSコマンドは、コマンドデコーダに、アドレス入力に設定が含まれている指示されたモードレジスタに設定を提供させる。MRSコマンドは、かなり以前からDRAMのコンテキストで知られており、異なるGDDR DRAMバージョン間で異なる。モードレジスタ212は、プログラムされた設定を記憶し、場合によっては、GDDR DRAMについての情報を出力する。RCKロジック及びステートマシン213は、コマンドデコーダ211の出力に接続された第1の入力と、モードレジスタ212の特定の出力に接続された第2の入力と、出力と、を有する。更に説明されるように、RCKロジック及びステートマシン213は、読み取りクロックフラグを処理する。読み取りクロックフラグは、読み取りポストアンブル期間の後、すなわち「インターアンブル」期間の間の読み取りクロック挙動をオンザフライで示す。読み取りクロックフラグは、コマンド信号、別の信号又は任意の他の既知の方法で符号化することができる。
【0020】
アドレス経路220は、マルチビットアドレス信号を受信し、各アドレス信号のための入力バッファ221及びアドレスラッチ222と、行デコーダ223のセットと、列デコーダ224のセットと、を含む。入力バッファ221は、対応するマルチビットアドレス信号を受信してバッファリングし、それに応じてマルチビットバッファリングされたアドレス信号を提供する。アドレスラッチ222は、入力バッファ221の出力に接続された入力と、出力と、「WCK」とラベル付けされた信号を受信するクロック入力と、を有する。アドレスラッチ222は、あるクロックエッジ、例えば立ち上がりエッジでバッファされたアドレスのビットをラッチし、書き込みコマンド中の書き込みクロックとしてだけでなく、コマンドをキャプチャするために使用されるメインクロックとしても機能する。行デコーダ223は、アドレスラッチ222の出力に接続された入力と、出力と、を有する。列デコーダ224は、アドレスラッチ222の出力に接続された入力と、出力と、を有する。
【0021】
メモリアレイ及びページバッファ230は、別々にアドレス指定可能なバンクとして知られる個々のメモリアレイのセットに編成される。例えば、GDDRメモリ200は、合計16個のバンクを有してもよい。各バンクは、一度に1つの「オープン」ページのみを有することができ、オープンページは、より高速な読み取り及び書き込みアクセスのために、その内容を対応するページバッファに読み込ませる。行デコーダ223は、アクティブ化コマンド中にアクセスされたバンク内の行を選択し、指示された行の内容がページバッファに読み込まれ、行は読み取り及び書き込みアクセスの準備ができている。列デコーダ224は、列アドレスに応じて行の列を選択する。
【0022】
データ読み取り経路240は、読み取りキュー241と、読み取りラッチ242と、出力バッファ243と、遅延ロックループ(DLL)244と、RCK及び
【0023】
【数1】
ピンと、を含む。読み取りキュー241は、メモリアレイ及びページバッファ230の出力に接続された入力と、出力と、を有する。読み取りラッチ242は、読み取りキュー241の出力に接続された入力と、クロック入力と、出力と、を有する。バッファ243は、読み取りラッチ242の出力に接続されている入力と、ボンドパッド250に接続されている出力と、を有する。FLL244は、「WCK」とラベル付けされた書き込みクロック信号を受信する入力と、読み取りラッチ242のクロック入力に接続された出力と、を有する。RCKドライバ回路245は、DLL244の出力に接続された入力と、RCKロジック及びステートマシン213の出力に接続された制御入力と、RCK及び
【0024】
【0025】
書き込みデータ経路260は、入力バッファ261、書き込みラッチ262、及び、書き込みキュー263を含む。入力バッファ261は、「DQ」とラベル付けされたボンドパッド250のセットに接続された入力と、出力と、を有する。書き込みラッチ262は、入力バッファ261の出力に接続された入力と、出力と、を有する。書き込みキュー263は、書き込みラッチ262の出力に接続された入力と、メモリアレイ及びページバッファ230に接続された出力と、を有する。
【0026】
動作において、GDDRメモリ200は、メモリバンクにおける同時動作を可能にし、一実施形態において、GDDRメモリ200は、Joint Electron Device Engineering Council(JEDEC)によって発行されたダブルデータレート(DDR)規格(例えば、新たに出現したグラフィックスDDR、バージョン7(GDDR7)規格等)のうち何れかと互換性がある。データにアクセスするために、GPU110等のメモリアクセスエージェントは、アクティブ化(ACT)コマンドを発行することによってメモリバンク内の行をアクティブ化する。ACTコマンドに応じて、選択された行に沿ったメモリセルからのデータは、対応するページバッファに記憶される。DRAMでは、データ読み取りはメモリセルの内容に対して破壊的であるが、データのコピーはページバッファに記憶される。メモリコントローラ114は、バンクの選択された行内のデータへのアクセスを終了した後、プリチャージ(PRE)コマンド(又は自動プリチャージを伴う書き込み若しくは読み取りコマンド、又は、プリチャージオールコマンド(precharge all command))を発行することによって行を閉じる。PREコマンドは、ページバッファ124内のデータを選択されたバンク内のその行に再書き込みさせ、次いで別の行をアクティブ化することを可能にする。これらの動作は、DDRメモリでは従来通りであり、様々なJEDEC標準文書に記載されており、これ以上は説明しない。
【0027】
しかしながら、本明細書で開示される様々な実施形態によれば、GDDRメモリ200は、GDDR6等の既存の規格と比較して、メモリ200が読み取りサイクル中にアクセスされたデータとともに提供するRCK信号の挙動を定義するために使用され得るモードレジスタフィールドを追加するモードレジスタ212の変更されたセットを含む。加えて、メモリ200は、モードレジスタ212で指定された挙動に従ってRCK(及び任意選択的に
【0028】
【数3】
)信号の出力を制御するためのRCKロジック及びステートマシン213を含む。
【0029】
図3は、
図2のメモリの読み取りクロックモードのためのモードレジスタ設定を示す表300を示す。表300は、12ビットモードレジスタの異なるビット又はビットフィールドの値を示し、12ビットは、モードレジスタがロードされるアドレス信号に対応する。表300は、モードレジスタの特定のビットに対応するOPコード(演算コード)列、対応するビットによって定義される関数を識別する関数列、OPコードの異なる値を指定するOPコード値列、及び、異なるOPコード値の意味を識別する記述列を含む6つの列を有する。
【0030】
モードレジスタビット[1:0]は、「RCKMODE」とラベル付けされ、選択されたRCKモードを識別する。00b(2進)の値は、RCKがメモリ200によって提供されない無効モードを識別する。このモードはデフォルトモードである。
【0031】
01bの値は読み取り専用モードを示す。以下で更に説明するように、読み取り専用モードでは、RCKは1つ以上の読み取りサイクル中に提供され、各読み取りサイクルは、プリアンブルとポストアンブルの両方を含む。読み取り専用モードが選択された場合、インターアンブル挙動は、連続読み取りが最小間隔量よりも大きく、すなわち少なくともtCCD+1 RCKサイクルだけ分離された場合に定義され、ここでtCCDは最小コマンド間遅延時間である。概して、読み取りデータモードの間、RCKは、読み取りサイクルにおけるデータの転送前にプリアンブル期間を開始し、読み取りサイクル後にプリアンブル期間を終了する。特に、読み取りコマンド(RD)、自動プリチャージコマンド(RDA)を伴う読み取り、及び、読み取りトレーニング(RDTR)コマンドのためのデータ転送と同時にトグルを開始する。それはクリア条件で停止する。いくつかの実施形態では、クリア条件は、書き込みコマンド(書き込みコマンド(WR)、自動プリチャージ付き書き込みコマンド(WRA)又は書き込みトレーニング(WRTR)コマンド)の受信、全バンクアイドル状態指標の受信、又は、電源切断状態へのエントリを含む。
【0032】
10bの値は常時実行モードを示す。常時実行モードでは、RCKは、RCKを生成するために使用されるWCKがメモリ200によって受信される限り、連続的に実行される。
【0033】
11bの値は予約されている(RSVD)が、このモードレジスタ構造を使用して将来追加されるRCK信号を提供する新しいモードの定義を可能にする。
【0034】
モードレジスタビット[2]は、読み取りクロックタイプ(RCKTYPE)を定義する。0bの値は、GDDRメモリ200がRCK信号をシングルエンド信号として提供すること、すなわち、
【0035】
【数4】
がトグルしないことを示す。1bの値は、RCKと
【0036】
【数5】
信号の両方が差動信号としてトグルすることを示す。
【0037】
モードレジスタビット[4:3]は、静的プリアンブル期間の長さを定義する。メモリコントローラがプリアンブルにロックすることを可能にするために、各プリアンブル期間は、静的期間、低速期間及び高速期間を有する。
図3及び
図4のプリアンブル信号の例では、静的状態304及び404は静的期間を表し、初期トグル状態306及び406は低速期間を表し、最終トグル状態308及び408は高速期間を表す。静的期間中、読み取りクロック信号はその非アクティブ状態でドライブ(driven)され、すなわち、RCKはローでドライブされ、
【0038】
【数6】
はハイでドライブされる。00bの値は、0クロックサイクルの静的期間、すなわち静的期間がないことを示す。01b、10b及び11bの値は、それぞれ、2、4及び6サイクルの静的期間を定義する。
【0039】
モードレジスタビット[5]は、RCKレベル設定(RCKLEVEL)を定義し、これは、この例では、RCKプリアンブル及びRCK動作中にRCKレベルの2つの可能な値のペアを提供する。0bの値は、RCK信号のPAMドライバに対する+3/-3の値を定義し、1bの値は、+1/-1の値を定義する。これらの値のペアは例として示されているが、様々な実施形態では、構成設定を使用して、プリアンブルの各フェーズにおいて異なる値のペアを定義することを含めて、任意の所望の値のペアをプログラムすることができる。
【0040】
モードレジスタビット[7:6]は、高速プリアンブル期間の長さを定義する。00bの値は、0クロックサイクルの高速プリアンブル期間、すなわち、高速プリアンブル期間がないことを示す。01b、10b及び11bの値は、それぞれ、2、4及び6サイクルの静的期間を定義する。
【0041】
モードレジスタビット[8]は定義されず、将来の使用(RFU)のために予約される。
【0042】
モードレジスタビット[10:9]は、低速プリアンブル期間の長さを定義する。00bの値は、0クロックサイクルの低速プリアンブル期間、すなわち低速プリアンブル期間がないことを示す。01b、10b及び11bの値は、1、2及び3サイクルの静的期間を定義する。高速及び低速プリアンブル期間は独立してプログラム可能であるが、OPコードビット[7:6]及び[10:9]が同じ値を有する場合、高速及び低速プリアンブルは同じ長さの時間であることに留意されたい。
【0043】
モードレジスタビット[11]は定義されておらず、RFUとして示されている。
【0044】
これらのモードレジスタ符号化は、これらの値を符号化する1つの可能な方法に過ぎず、他の符号化も可能であることは明らかであろう。例えば、専用モードレジスタを使用する代わりに、これらのビットは、複数のモードレジスタ間で、例えば別様に未使用又は予約されたビット位置に分散され得る。
【0045】
図4は、いくつかの実施形態による、
図2のメモリ200の動作を理解するのに有用なフローチャート400を示す。フローチャート400は、RCKMODEが読み取り専用に設定されている場合のRCKの開始及び停止挙動並びにインターアンブル挙動を管理する。フローチャート400は、RCKONフラグとして知られるフラグを定義する。
【0046】
フローは、第1のコマンドが受信された場合にアクションボックス410で開始する。判定ボックス420は、コマンドが読み取りコマンド(読み取りコマンド(RD)、自動プリチャージ付き読み取りコマンド(RDA)、又は、読み取りトレーニング(RDTR)コマンドのうち何れか等)であるか否かを判定し、そうである場合、RCKONフラグの状態を判定する。コマンドが読み取りコマンドでない場合、又は、読み取りコマンドであり、RCKONフラグがクリアされている場合、フローはアクションボックス430に進む。アクションボックス430において、RCKは、読み取りポストアンブル期間の後にトグルを停止する。
【0047】
コマンドが読み取りコマンドであり、RCKON状態変数が1に設定されている場合、フローはアクションボックス440に進む。アクションボックス440において、メモリ200は、読み取りコマンドのポストアンブル期間の後にRCK信号をトグルし続ける。この時点から、RCKONの状態はドントケアになる。フローは判定ボックス450に進み、クリア条件が受信されたか否かを判定する。いくつかの実施形態では、クリア条件は、メモリ200による明示的読み取りクロック停止コマンドの受信、メモリ200による書き込みコマンド(例えば、書き込みコマンド(WR)、自動プリチャージコマンド(WRA)を伴う書き込み、又は、書き込み読み取りトレーニング(WRTR)コマンドのうち何れか1つ以上)の受信、メモリ200によるモードレジスタセットコマンドの受信、メモリ200による全バンクアイドル状態の検出、及び、メモリ200の電源切断状態の検出のうち1つ以上を含む。クリア条件が受信されない場合、フローは判定ボックス450に戻る。クリア条件が受信された場合、フローはアクションボックス460に進む。アクションボックス460において、状態変数RCKONは0にクリアされ、RCKは読み取りポストアンブルの後のトグルを停止し、フローは判定ボックス420に戻る。
【0048】
図5は、いくつかの実施形態による、
図2のメモリ200の受信クロックタイミングの特性を示すタイミング
図500を示す。タイミング
図500において、横軸は時間をピコ秒(ps)で表し、縦軸は様々な信号の振幅をボルトで表す。縦軸に沿って示されているのは、対象の3つの信号又は信号グループ、すなわち、コマンド信号、RCK信号及びデータ信号である。破線は、RCK信号のローからハイへの遷移及びハイからローへの遷移を示し、様々な時点に対応する。
【0049】
タイミング
図500に示される例では、モードレジスタ300は、RCKMODE=読み取り専用、RCKTYPE=シングルエンド、RCKPRE_Static=4、RCKPRE_LS=1、及び、RCKPRE_HS=2にプログラムされている。タイミング
図500は、RCKON属性が1に設定された、第2のRCK遷移における「RD」とラベル付けされた読み取りコマンドの発行を示す。読み取り待ち時間のために、メモリ200は、25番目のクロックサイクルまで読み取りデータを提供しない。したがって、このRCKサイクルの前に、メモリ200は、表300に定義されているプリアンブルを提供する。
【0050】
この例では、バースト長は16であり、メモリ200は、tCCDMIN+1において別のコマンドを受け入れることができるが、実際にはtCCDMIN+7までそれを発行せず、インターアンブル挙動を定義する必要が生じる。ここに見られるように、インターアンブルは、第1のサイクルの最後のデータ伝送後の連続トグルRCKと、それに続く第2のレディサイクルの低速プリアンブルのロー期間と、それに続く高速部分のプリアンブルの高速トグルと、の組み合わせである。
【0051】
図6は、いくつかの実施形態による、
図2のメモリ200の受信クロックタイミングの更なる特性を示すタイミング
図600である。タイミング
図600において、横軸は時間をピコ秒(ps)で表し、縦軸は様々な信号の振幅をボルトで表す。上述したように、コマンド信号、RCK信号及びデータ信号が縦軸に沿って示されている。破線は、RCK信号のローからハイへの遷移及びハイからローへの遷移を示し、「t
1」~「t
68」と指定された時点に対応する。
【0052】
タイミング
図600に示される例では、モードレジスタ300は、RCKMODE=読み取り専用、RCKTYPE=シングルエンド、RCKPRE_Static=4、RCKPRE_LS=1、及び、RCKPRE_HS=2にプログラムされている。タイミング
図600は、RCKON=0であるt
2における読み取りコマンドRDの発行を示しており、RCKONは、前のクリア条件から以前に設定されていない。この場合、RDコマンドは、メモリ200に、モードレジスタで定義されたプリアンブルを発行させ、RCKトグルを用いて読み取りバーストサイクルを実行させ、ポストアンブルによって読み取りバーストサイクルに従わせる。この場合、ポストアンブルは、ポストアンブル期間を終了させるための2クロックサイクルの後続静的部分を含む。したがって、RCKMODE=読み取り専用である場合、ホストプロセッサは、RCKON設定に従って動作中にRCK及び
【0053】
【数7】
を動的にトグルする読み取り専用に変換することができる。代わりにRCKTYPE=差動である場合、プリアンブル期間の前に、RCK_t及びRCK_cの両方は、GDDRメモリ200によってドライブされないが、GDDR PHY116によってハイにプルされることに起因してハイになり、RCK_tはプリアンブル中にローにドライブされるが、RCK_cは、その後トグルし始めるまでハイのままである。
【0054】
図7は、いくつかの実施形態による、
図2のメモリ200の受信クロックタイミングの更に別の特性を示すタイミング
図700である。タイミング
図700において、横軸は時間をピコ秒(ps)で表し、縦軸は様々な信号の振幅をボルトで表す。上述したように、コマンド信号、RCK信号及びデータ信号が縦軸に沿って示されている。破線は、RCK信号のローからハイへの遷移及びハイからローへの遷移を示し、様々な時点に対応する。
【0055】
タイミング
図700において、メモリ200は、タイミング
図700に示される時間より前の時点で、RCKON属性が1に設定されたRDコマンドを受信する。メモリ200は、RDコマンドに応じてRCK信号のためのプリアンブルを提供する。しかしながら、データの転送が終了した後、メモリ200は、タイミング
図700の例では拡張インターアンブル期間を形成するRCK信号をトグルし続ける。
図7に示すように、後続の読み取りコマンドが受信される前に、メモリ200は、WRコマンド(WR、WRA又はWRTR)を受信する。この場合、RCKロジック及びステートマシン213は、書き込みコマンドを復号し、書き込みコマンド待ち時間の後、RCK信号をトグルすることを停止する。
【0056】
RCKトグルを開始及び停止する能力を提供することによって、メモリ200は、ストローブ及びクロック信号のハイブリッドである読み取りクロック信号を提供する。また、メモリ200は、クリア条件の後にRCKを連続的に出力することをメモリが抑制するための機構を提供する。この能力は、メモリコントローラ内のDLLが、読み取りコマンドのストリーク中にロックされたままであるが、トグルを停止し、クリア条件に応じて電力を節約することを可能にする。メモリコントローラは、メモリバスの使用効率を改善するためにコマンドを再順序付けし、同じタイプのコマンドをグループ化して、読み取りから書き込みへ、及び、書き込みから読み取りへのバスターンアラウンドの頻度を低くする。例えば、バス使用の効率は、ユーザがしばしば性能の限界を押し上げるように構成する個別のGPUにとって特に重要である。この能力はいくつかの利点を提供する。
【0057】
第1に、そうでなければインターアンブルの複雑さに起因して必要とされる設計を簡略化することによって、メモリコントローラがより効率的に動作することを可能にする。特に、インターアンブル計算を簡略化又は排除することができる。
【0058】
第2に、RCKが使用されない場合に切り替わる信号の信号完全性を保存する。例えば、この機構は、ユーザが書き込みコマンドの受信に応じてRCKの連続的な生成を回避することを可能にする。したがって、書き込みサイクルはよりロバストであり、信号干渉及びクロストークがより少ないため、メモリ内のデータをキャプチャするためのタイミングマージンがより大きい。
【0059】
第3に、書き込みアクセスのストリーク中にRCK信号の切り替えを抑制することによって、それは、必要とされない場合に、典型的にはプリント回路基板上でドライブされる外部信号の高速信号切り替えの切り替え電力を節約する。
【0060】
第4に、ホストプロセッサは、メモリ内で使用されるRCKONフラグを様々な方法で設定することができるので、実装における柔軟性を提供する。例えば、ホストプロセッサは、モードレジスタセットコマンドを発行して、モードレジスタ内の未使用又はベンダ固有のRCKONビットをプログラムすることができる。これは、明示的なRCKONコマンドを発行するか、又は、RDコマンド符号化にRCKON属性を含めることができる。また、新しい専用信号線をアクティブ化することもできる。
【0061】
図8は、いくつかの実施形態による、
図1のメモリコントローラ114の一部分800のブロック図であるす。図示された部分800は、GDDRメモリ、及び、制御可能な読み取りクロックを有する他の同様のDRAMタイプのためのメモリコントローラにおける使用に適している。部分800は、コマンドキュー810と、関連付けられた読み取りクロック制御回路825を有するアービタ820と、マルチプレクサ840と、を含む。コマンドキュー810は、メモリ内の任意のバンクに対する読み取りサイクル又は書き込みサイクルとすることができ、データ処理システム100内のメモリアクセスエージェントのうち何れかによって生成される、入力される(着信)メモリアクセス要求を記憶する。
図8の例では、コマンドキュー810は、全てのバンク及びランクに対して合計32個のエントリを有し、各エントリは、アクセスアドレス、その相対的年齢を示すタグ、及び、他のメタデータを記憶する。アービタ820は、その属性を読み取るためにコマンドキュー810内の各エントリに双方向に接続され、アクセスがディスパッチされる場合にアクセスを受信するための追加の入力を有し、ACTコマンド及びPREコマンド等のプロトコルコマンドを提供するための出力を有し、32個のエントリのうち何れかを選択してインターフェース212に送信するための制御出力を有する。マルチプレクサ840は、コマンドキュー810のそれぞれのエントリに接続された32個の入力と、アービタ820の出力に接続された追加入力と、アービタ820の出力に接続された制御入力と、メモリPHYへのディスパッチされたアクセスを提供するための出力と、を有する。
【0062】
読み取りクロック制御回路825は、アービタ820への双方向接続と、アービタ820のそれぞれの出力に接続されるいくつかの入力と、を有する。読み取りクロック制御回路825は、現在選択されているコマンド及び選択に利用可能な少なくとも1つのコマンド(それぞれ「n」及び「n-1」とラベル付けされている)を追跡するための複数のコマンドエントリ828と、以下で説明するような追跡機能を実装するための読み取りクロック制御論理と、を含む。様々な実施形態では、読み取りクロック制御回路815は、典型的には、利用可能なコマンドを追跡するためのアービタのコマンド選択論理を用いて実装される。
【0063】
動作において、読み取りクロック制御回路825は、メモリインターフェースキューへのディスパッチのために読み取りコマンドが選択されたときにアービタ820からインジケータを受信し、一般に、
図9に関して以下で更に説明するように、RCKの挙動を制御するために使用される指定された条件をチェックする。読み取りクロックが、読み取りコマンドに関連付けられたフラグ又はタグで制御される実施形態では、読み取りクロック制御回路425は、コマンドキュー410内のタグを更新して、タグの指定値を設定し、読み取りクロックのモードを指定する。
【0064】
コマンドキュー810は、入力される(着信)アクセスを記憶し、コマンドの相対的年齢(command’s relative age)を示すタグを割り当てる。アービタ820は、タイミング適格性、年齢、公平性及びアクティビティタイプ等のポリシーのセットに基づいて、コマンドキュー810内の何れかの保留中のアクセスをスケジュールし、メモリインターフェースキュー214にディスパッチするかを決定する。アービタ820は、メモリシステムの各バンク及びランクにおけるオープンページを示すために、
図8には示されていないページテーブルを含む。概して、アービタ820は、同じバンク内の異なる行への古いアクセスを遅延させながら、同じ行への複数のアクセスを一緒に含むコマンドのストリークをスケジュールすることによって、メモリシステムバスの効率を高めることができる。読み取りクロックモードの制御は、複数の読み取りコマンドを様々なメモリバンク内の複数の開いた行に送信することを含み得る読み取りコマンドのストリーク中に特に有利である。
【0065】
図9は、いくつかの実施形態による、読み取りクロックを動作させるためのプロセスのフロー
図900を示す。図示されたプロセスは、制御可能な読み取りクロックを動作させるための1つの適切な方法に過ぎないことに留意されたい。また、読み取りクロックは、クロックが各ポストアンブルに続いて非アクティブ化される「読み取り専用」状態のままであってもよい。しかしながら、そのような状態は、多くの場合、多くの場合ストリーク(streak)と呼ばれるシーケンスにおいてアービタが複数の読み取りコマンドを選択するシナリオには適していない。このような場合、読み取りクロックのポストアンブル期間は、次の読み取りクロックのプリアンブル期間と重複してもよい。更に、読み取りコマンドが書き込みコマンドによって分離されず、ACT又は他のコマンドによって分離されるシナリオでは、ポストアンブル期間の後に読み取りクロックがアクティブのままであることを可能にすることが有利であり得る。図示したプロセスは、そのような機能を達成するためにメモリコントローラからの読み取りクロックを制御するための技術を提供する。
【0066】
ブロック902において、プロセスは、アービタ820が、上述したように制御可能な読み取りクロックを含むメモリにディスパッチするための読み取りコマンドを選択する場合に開始する。ブロック904において、読み取りクロックは、読み取りコマンドが実行された後のポストアンブルに続いてアクティブのままである第1の状態に設定される。これは、明示的なコマンドを用いて、又は、ブロック902で送信された読み取りコマンドに付随する読み取りクロックフラグによってコマンドを示すことによって行うことができる。この実施形態では、プロセスは、第1の選択された読み取りコマンドが、読み取りコマンド間で読み取りクロックをアクティブ化したままにすることが有益であるストリーク又は別の状況の一部であると仮定する。他の実施形態では、プロセスは、最初に、例えば、他の読み取りコマンドがメモリ内のオープンページのためにアービタによって選択されるのに利用可能であるかどうかをチェックすることによって、読み取りコマンドがストリークの一部であると予想されるかどうかをチェックすることができる。
【0067】
ブロック906において、プロセスは、メモリにディスパッチするためのコマンドを選択し続ける。読み取りクロック監視回路は、ディスパッチのために選択されたコマンドを監視して、読み取りクロックの状態を変更するかどうかを決定する。ブロック908に示されるように、指定された条件が満たされた場合、プロセスはブロック910に進み、そこで、メモリに対して、読み取りクロックを第2の状態に変更するように命令する。ブロック908で指定された条件が満たされない場合、プロセスは、ブロック906でコマンドの選択を継続し、読み取りクロックを第1の状態のままにする。
【0068】
いくつかの実施形態では、読み取りクロック制御回路は、現在の読み取りコマンドに関連付けられた読み取りクロックフラグを指定値に設定することによって読み取りクロックの状態を変更するようにメモリに命令する。読み取りクロックフラグは、各読み取りコマンドとともに含まれ得ることに留意されたい。そのような実施形態では、第1の状態のための読み取りクロックフラグ値は、ブロック906において選択された各コマンドで繰り返され得る。次に、読み取りクロック状態が変更されることが望まれる場合、ブロック910で、現在のコマンドに対する読み取りクロックフラグ値が、第2の状態を示す新しい指定値に変更される。他の実施形態では、ブロック904及び910において、読み取りクロック状態を変更するために、別のコマンドがメモリに発行され得る。
【0069】
ブロック908を参照すると、いくつかの実施形態では、指定された条件は、メモリにディスパッチされた現在の読み取りコマンドとメモリにディスパッチされる後続の読み取りコマンドとの間に少なくとも所定サイズのギャップが生じることである。例えば、2つの読み取りコマンドを分離する書き込みコマンドは、指定された条件を満たすことができる。そのような場合、読み取りクロックは、メモリに送信される書き込みデータに対して信号干渉を引き起こすことを回避するために、プリアンブル期間に続いて非アクティブ化される。しかしながら、書き込みコマンドではない単一のコマンドが2つの読み取りコマンドを分離する場合、いくつかの実施形態では、指定された条件が満たされないことがある。いくつかの実施形態では、指定された条件は、少なくとも指定された数の書き込みコマンドが、メモリにディスパッチされた現在の読み取りコマンドとメモリにディスパッチされる後続の読み取りコマンドとの間に現れることである。いくつかの実施形態では、指定された条件は、現在の読み取りコマンドが、アービタによって選択された読み取りコマンドのストリーク内の最後のコマンドであることである。更に、「指定された条件」が言及されるが、これは、条件の組み合わせ、又は、2つ以上の代替条件を含み得る。
【0070】
ブロック910で読み取りクロックを第2の状態に変更するコマンドに続いて、プロセスはブロック912に進み、メモリがコマンドを受信し、それを実施し、現在の読み取りコマンドのポストアンブル期間に続いて読み取りクロック状態を非アクティブに変更する。
【0071】
本明細書に記載のメモリ又はその一部は、1つ以上の集積回路で具現化することができ、その何れかは、プログラムによって読み取られ、直接的又は間接的に使用されて集積回路を製造し得る、データベース又は他のデータ構造の形態のコンピュータでアクセス可能なデータ構造によって記述又は表現され得る。例えば、本データ構造は、ベリログ又はVHDL等の高位設計言語(HDL)におけるハードウェア機能の挙動レベル記述又はレジスタ転送レベル(RTL)記述であってもよい。記述は、合成ライブラリからゲートのリストを含むネットリストを生成するために記述を合成することができる合成ツールによって読み取ることができる。ネットリストは、集積回路を含むハードウェアの機能も表すゲートのセットを含む。ネットリストは、次に、マスクに適用される幾何学的形状を記述するデータセットを生成するために配置され、ルーティングされてもよい。次に、マスクを、様々な半導体製造工程で使用して、集積回路を製造してもよい。代替的に、コンピュータアクセス可能記憶媒体上のデータベースは、所望の場合、ネットリスト(合成ライブラリの有無にかかわらず)若しくはデータセット、又は、グラフィック・データ・システム(Graphic Data System、GDS)IIデータであってもよい。
【0072】
特定の実施形態を説明してきたが、これらの実施形態に対する様々な修正が当業者には明らかであろう。例えば、ホストプロセッサは、明示的なコマンド、コマンド符号化における未使用ビット、モードレジスタの設定等のような属性(RCKON)上に読み取りクロックを設定する様々な技術を使用することができる。RCKプログラミングはGDDRメモリとの関連で説明されたが、集積又は離散の別のタイプの回路は、RCK信号について説明されたハイブリッド挙動を有するクロック信号を使用することができる。RCK信号は、DDR及び高帯域幅(HBM)メモリを含む他のタイプのメモリでも使用することができる。更に、プリアンブル及びポストアンブル挙動の粒度の様々なレベルもサポートすることができる。サポートされるRCKモードを定義するビットは、専用のモードレジスタ内で定義することができ、或いは、異なるモードレジスタ内の様々なビット位置に設定することができる。これらのビット位置は、以前に未使用であり、将来の使用のために予約されていてもよく、又は、顧客固有の使用に専用であってもよい。
【0073】
したがって、添付の特許請求の範囲は、開示された実施形態の範囲に含まれる開示された実施形態の全ての変更を網羅することを意図している。
【要約】
メモリコントローラは、メモリにディスパッチするために選択されたメモリコマンドを監視し、読み取りクロック状態を制御するコマンドを送信する。メモリは、読み取りクロック回路及びモードレジスタを含む。読み取りクロック回路は、クロック信号及び読み取りクロックモード信号に応じてハイブリッド読み取りクロック信号を提供するための出力を有する。モードレジスタは、読み取りクロックモードに応じて読み取りクロックモード信号を提供し、読み取りクロック回路は、読み取りクロックモードが第1のモードである場合に連続的にトグルする自走クロック信号として、読み取りクロックモードが第2のモードである場合にメモリが読み取りコマンドを受信することに応じてのみアクティブであるストローブ信号として、ハイブリッド読み取りクロック信号を提供する。
【選択図】
図1