(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-12-10
(45)【発行日】2024-12-18
(54)【発明の名称】構成可能なPAMレベルでの読み取りクロックトグル
(51)【国際特許分類】
G11C 7/22 20060101AFI20241211BHJP
G06F 12/00 20060101ALI20241211BHJP
【FI】
G11C7/22 100
G06F12/00 564A
(21)【出願番号】P 2024534115
(86)(22)【出願日】2022-11-30
(86)【国際出願番号】 US2022051426
(87)【国際公開番号】W WO2023107313
(87)【国際公開日】2023-06-15
【審査請求日】2024-06-28
(32)【優先日】2021-12-08
(33)【優先権主張国・地域又は機関】US
(32)【優先日】2022-06-30
(33)【優先権主張国・地域又は機関】US
【早期審査対象出願】
(73)【特許権者】
【識別番号】591016172
【氏名又は名称】アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド
【氏名又は名称原語表記】ADVANCED MICRO DEVICES INCORPORATED
(73)【特許権者】
【識別番号】508301087
【氏名又は名称】エーティーアイ・テクノロジーズ・ユーエルシー
【氏名又は名称原語表記】ATI TECHNOLOGIES ULC
【住所又は居所原語表記】One Commerce Valley Drive East, Markham, Ontario, L3T 7X6 Canada
(74)【代理人】
【識別番号】100108833
【氏名又は名称】早川 裕司
(74)【代理人】
【識別番号】100111615
【氏名又は名称】佐野 良太
(74)【代理人】
【識別番号】100162156
【氏名又は名称】村雨 圭介
(72)【発明者】
【氏名】アーロン ジョン ニーグレン
(72)【発明者】
【氏名】マイケル ジョン リット
(72)【発明者】
【氏名】カーシク ゴパラクリシュナン
(72)【発明者】
【氏名】ツン ホー リウ
【審査官】後藤 彰
(56)【参考文献】
【文献】特開2006-313616(JP,A)
【文献】特表2004-531909(JP,A)
【文献】米国特許出願公開第2012/0300563(US,A1)
【文献】米国特許出願公開第2005/0220232(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G11C 7/22
G06F 12/00
(57)【特許請求の範囲】
【請求項1】
メモリバスを介して、メモリからメモリコントローラに読み取りクロック信号を選択的に提供するための読み取りクロック回路であって、
それぞれのデジタル値を示す少なくとも3つのレベルをドライブすることが可能な入力及び出力を含むパルス振幅変調マルチレベル(PAM)ドライバと、
モードレジスタと、
前記PAMドライバの入力に結合され、前記PAMドライバに、前記読み取りクロック信号の前にプリアンブル信号を提供させるように動作可能なデジタル制御回路であって、前記プリアンブル信号は、前記PAMドライバが第1のレートで2つの選択されたレベルの間でトグルする初期トグル状態と、前記PAMドライバが前記第1のレートよりも高い第2のレートで2つの選択されたレベルの間でトグルする最終トグル状態と、を含む、デジタル制御回路と、を備え、
前記初期トグル状態の長さ及び前記最終トグル状態の長さは、前記モードレジスタの値に基づいている、
読み取りクロック回路。
【請求項2】
前記2つの選択されたレベルは、前記モードレジスタの1つ以上の値に基づいている、
請求項1の読み取りクロック回路。
【請求項3】
前記デジタル制御回路は、前記PAMドライバに、前記初期トグル状態の前に前記プリアンブルにおいて少なくとも1つの静的状態を提供させるように動作可能である、
請求項1の読み取りクロック回路。
【請求項4】
前記最終トグル状態における前記2つの選択されたレベルは、前記読み取り動作中に前記読み取りクロック信号に用いられるレベルである、
請求項1の読み取りクロック回路。
【請求項5】
前記初期トグル状態における前記2つの選択されたレベルは、前記最終トグル状態におけるレベルとは異なる、
請求項1の読み取りクロック回路。
【請求項6】
前記デジタル制御回路は、前記初期トグル状態と前記最終トグル状態との間に第2のトグル状態を含むように構成可能であり、前記第2のトグル状態は、前記初期トグル状態と前記最終トグル状態との間のレートでトグルする、
請求項1の読み取りクロック回路。
【請求項7】
メモリバスを介して、メモリからメモリコントローラに読み取りクロック信号を選択的に提供するための方法であって、
メモリ読み取りに続く読み取りクロック信号について、それぞれのデジタル値を示す少なくとも3つのレベルをドライブすることが可能なパルス振幅変調(PAM)ドライバを非アクティブ化することと、
新しいメモリ読み取りに応じて、前記PAMドライバをアクティブ化し、読み取りクロック信号のためのプリアンブル信号を提供することであって、前記プリアンブル信号は、少なくとも1つの静的状態、前記PAMドライバが第1のレートで2つの選択されたレベルの間でトグルする初期トグル状態、及び、前記PAMドライバが前記第1のレートよりも高い第2のレートで2つの選択されたレベルの間でトグルする最終トグル状態を順に含む、ことと、
モードレジスタの値に基づいて、少なくとも前記初期トグル状態及び前記最終トグル状態の長さを判定することと、
前記プリアンブルに続いて、前記第2のレートで前記PAMドライバをトグルして、前記読み取りクロック信号を提供することと、を含む、
方法。
【請求項8】
前記2つの選択されたレベルは、前記モードレジスタの1つ以上の値に基づいている、
請求項7の方法。
【請求項9】
前記初期トグル状態の前に前記プリアンブルにおいて少なくとも1つの静的状態を提供することを含む、
請求項7の方法。
【請求項10】
前記最終トグル状態における前記2つの選択されたレベルは、読み取り動作中に前記読み取りクロック信号に用いられるレベルである、
請求項7の方法。
【請求項11】
前記初期トグル状態における前記2つの選択されたレベルは、前記最終トグル状態におけるレベルとは異なる、
請求項7の方法。
【請求項12】
前記初期トグル状態と前記最終トグル状態との間に第2のトグル状態を提供することを含み、前記第2のトグル状態は、前記初期トグル状態と前記最終トグル状態との間のレートでトグルする、
請求項7の方法。
【請求項13】
前記PAMドライバは、1.2ボルトのシグナリング供給電圧に対してそれぞれの2ビットデジタル値を示す4つのレベルをドライブすることが可能である、
請求項7の方法。
【請求項14】
前記読み取りクロックのトグルレートは、前記メモリコントローラから前記メモリにおいて受信された書き込みクロックのトグルレートに基づいている、
請求項7の方法。
【発明の詳細な説明】
【背景技術】
【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チップが単一のプリント回路基板上に組み合わされて、比較的高速であるだけでなくスケーラビリティも提供できるメモリモジュールを形成する。しかしながら、これらの強化により、コンピュータシステムのメインメモリに使用されるDDRメモリの速度が改善されたが、更なる改善が求められている。
【0002】
グラフィックスダブルデータレート(graphics double data rate、GDDR)メモリとして知られる1つのタイプのDDR DRAMは、グラフィックスアプリケーションに必要とされる高帯域幅に対応するためにデータ伝送レートの境界を押し上げてきた。新しいGDDR規格が開発されるにつれて、それらはより高いデータレートをサポートする傾向がある。より高いデータレートをサポートするために使用される1つの技術は、従来の2レベル送信システムの代わりとしての、マルチレベルパルス振幅変調(pulse amplitude modulation、PAM)データ送受信モードである。より多くのPAMレベルを用いて、所定のクロック速度に対して、データ伝送帯域幅を増加させ得る。しかしながら、これらの高速での連続的なデータ送信は、比較的高い電力消費をもたらす。
【図面の簡単な説明】
【0003】
【
図1】いくつかの実施形態による、データ処理システムを示すブロック図である。
【
図2】
図1のデータ処理システムのGDDR PHY-DRAMリンクを示すブロック図である。
【
図3】いくつかの実施形態による、読み取りクロック信号プリアンブル信号のタイミング図である。
【
図4】いくつかの追加の実施形態による、読み取りクロック信号プリアンブル信号のタイミング図である。
【
図5】いくつかの実施形態による、読み取りクロック構成のためのモードレジスタ設定を含む表である。
【
図6】いくつかの実施形態による、GDDRメモリにおける様々な信号の関係を示すタイミング図である。
【発明を実施するための形態】
【0004】
以下の説明において、異なる図面における同一の符号の使用は、同様のアイテム又は同一のアイテムを示す。別段の言及がなければ、「結合される(coupled)」という単語及びその関連する動詞形は、当該技術分野で周知の手段による直接接続及び間接電気接続の両方を含み、また、別段の言及がなければ、直接接続の任意の記述は、好適な形態の間接電気接続を使用する代替の実施形態も同様に意味する。
【0005】
メモリバスを介して、メモリからメモリコントローラに読み取りクロック信号を選択的に提供するための読み取りクロック回路は、パルス振幅変調(PAM)ドライバと、モードレジスタと、デジタル制御回路と、を含む。PAMドライバは、それぞれのデジタル値を示す少なくとも3つのレベルをドライブ(driving)することが可能な入力及び出力を含む。デジタル制御回路は、PAMドライバの入力に結合されており、且つ、PAMドライバに読み取りクロック信号の前にプリアンブル信号を提供させるように動作可能である。プリアンブル信号は、PAMドライバが第1のレートで2つの選択されたレベルの間でトグルする初期トグル状態と、PAMドライバが第1のレートよりも高い第2のレートで2つの選択されたレベルの間でトグルする最終トグル状態と、を含む。初期トグル状態の長さ及び最終トグル状態の長さは、モードレジスタにおける値に基づく。
【0006】
方法は、メモリバスを介して、メモリからメモリコントローラに読み取りクロック信号を選択的に提供する。方法は、メモリ読み取りに続く読み取りクロック信号について、それぞれのデジタル値を示す少なくとも3つのレベルをドライブすることが可能なパルス振幅変調(PAM)ドライバを非アクティブ化することを含む。新しいメモリ読み取りに応答して、方法は、PAMドライバをアクティブ化し、読み取りクロック信号のためのプリアンブル信号であって、順に、少なくとも1つの静的状態、PAMドライバが第1のレートで2つの選択されたレベルの間でトグルする初期トグル状態、及び、PAMドライバが第1のレートよりも高い第2のレートで2つの選択されたレベルの間でトグルする最終トグル状態を含む、プリアンブル信号を提供することを含む。方法は、モードレジスタにおける値に基づいて、少なくとも初期トグル状態及び最終トグル状態の長さを判定することと、プリアンブルに続いて、読み取りクロック信号を提供するために第2のレートでPAMドライバをトグルすることと、を含む。
【0007】
データ処理システムは、少なくとも1つのプロセッサと、メモリバスを介してプロセッサに結合されたメモリコントローラと、メモリバスを介して、メモリコントローラに結合されたダイナミックランダムアクセスメモリ(DRAM)と、を含み、DRAMは、メモリバスを介して、メモリからメモリコントローラに読み取りクロック信号を選択的に提供するための読み取りクロック回路を含む。読み取りクロック回路は、パルス振幅変調(PAM)ドライバと、モードレジスタと、デジタル制御回路と、を含む。PAMドライバは、それぞれのデジタル値を示す少なくとも3つのレベルをドライブすることが可能な入力及び出力を含む。デジタル制御回路は、PAMドライバの入力に結合されており、且つ、PAMドライバに読み取りクロック信号の前にプリアンブル信号を提供させるように動作可能である。プリアンブル信号は、PAMドライバが第1のレートで2つの選択されたレベルの間でトグルする初期トグル状態と、PAMドライバが第1のレートよりも高い第2のレートで2つの選択されたレベルの間でトグルする最終トグル状態と、を含む。初期トグル状態の長さ及び最終トグル状態の長さは、モードレジスタにおける値に基づく。
【0008】
図1は、いくつかの実施形態による、データ処理システム100を示すブロック図である。データ処理システム100は、概して、グラフィックス処理ユニット(GPU)110、ホスト中央処理ユニット(CPU)120、ダブルデータ速度(DDR)メモリ130、及び、グラフィックスDDR(GDDR)メモリ140の形態のデータプロセッサを含む。
【0009】
GPU110は、最適化されたグラフィックス処理、レンダリング及び表示のために非常に高い性能を有する離散グラフィックスプロセッサであるが、これらのタスクを実行するために高いメモリ帯域幅を必要とする。GPU110は、概して、コマンドプロセッサ111のセットと、グラフィックス単一命令複数データ(single instruction,multiple data、SIMD)コア112と、キャッシュ113のセットと、メモリコントローラ114と、DDR物理インターフェース回路(DDR PHY)117と、GDDR PHY118と、を含む。
【0010】
コマンドプロセッサ111は、OpenGLプログラミング言語で指定されるもの等の高レベルグラフィックス命令を解釈するために使用される。コマンドプロセッサ111は、OpenGL命令等の高レベルグラフィックス命令を受信するためのメモリコントローラ114への双方向接続、キャッシュ113への双方向接続、及び、グラフィックスSIMDコア112への双方向接続を有する。高レベル命令の受信に応じて、コマンドプロセッサは、キャッシュ113を一時記憶装置として使用して、フレームデータ等のデータのレンダリング、幾何学的処理、シェーディング及びラスタ化のための低レベル命令を発行する。グラフィックス命令に応じて、グラフィックスSIMDコア112は、大規模並列方式で大きいデータセットに対して低レベル命令を実行する。コマンドプロセッサ111及びキャッシュ113は、入力データ及び出力(例えば、レンダリング及びラスタ化された)データの一時的な記憶のために使用される。また、キャッシュ113は、グラフィックスSIMDコア112への双方向接続と、メモリコントローラ114への双方向接続と、を有する。
【0011】
メモリコントローラ114は、コマンドプロセッサ111に接続された第1の上流ポートと、キャッシュ113に接続された第2の上流ポートと、DDR PHY117への第1の下流双方向ポートと、GDDR PHY118への第2の下流双方向ポートと、を有する。本明細書で使用される場合、「上流」ポートは、データプロセッサに向かい、且つ、メモリから離れる回路の側にあり、「下流」ポートは、データプロセッサから離れ、且つ、メモリに向かう方向にある。メモリコントローラ114は、DDRメモリ130及びGDDRメモリ140との間のデータ転送のタイミング及びシーケンシングを制御する。DDR及びGDDRメモリは非対称アクセスを有し、すなわち、メモリ内のオープンページへのアクセスは、クローズドページへのアクセスよりも高速である。メモリコントローラ114は、メモリアクセスコマンドを格納し、例えば、特定のサービス品質目標を遵守しながらオープンページへのアクセスを優先することによって、効率のためにそれらを順不同で処理する。
【0012】
DDR PHY117は、メモリコントローラ114の第1の下流ポートに接続された上流ポートと、DDRメモリ130に双方向に接続された下流ポートと、を有する。DDR PHY117は、DDRバージョン5(DDR5)等のDDRメモリ130のバージョンの全ての指定されたタイミングパラメータを満たし、メモリコントローラ114の指示でタイミング較正動作を実行する。同様に、GDDR PHY118は、メモリコントローラ114の第2の下流ポートに接続された上流ポートと、GDDRメモリ140に双方向に接続された下流ポートと、を有する。GDDR PHY118は、GDDRメモリ140のバージョンの全ての指定されたタイミングパラメータを満たし、メモリコントローラ114の指示でタイミング較正動作を実行する。
【0013】
GDDRメモリ140は、動作のためにGDDRメモリ140を構成するように、GDDR PHY118上でプログラム可能なモードレジスタ141のセットを含む。特に、本明細書に記載されるように、GDDRメモリ140がGDDR PHY118に提供する読み取りクロック(RCK)は、特定の新しく有利な方法で動作するようにプログラムされ得る。いくつかの実施形態によれば、読み取りクロックは、RCK信号において「読み取り専用」モードで動作し、連続的にトグルしないことによって電力を節約し、代わりに、読み取りコマンドのデータ送信前の読み取りプリアンブル期間中にトグルを開始し、少なくとも読み取りコマンドに続く読み取りポストアンブル期間の終わりまでトグルし続けるように構成することができる。読み取り専用モードは、読み取り動作がまれであるか又はまれであり得る作業負荷中に電力消費を低減する能力を提供する。また、読み取りクロックRCKは、書き込みクロック(WCK)がホスト(例えば、ホストプロセッサチップのメモリコントローラ又はメモリPHY)から受信される限り、GDDRメモリ140がRCK信号を連続的に提供する「常時オン」モードで動作するようにプログラム可能である。常時オンモードは、ホストプロセッサPHYがロックされたままとなり、プリアンブル期間中の再同期の必要性を回避する能力を提供する。RCKプリアンブルを制御するための特定の技術が、これらの2つのモードで動作可能なRCKに関連して以下に提供されるが、これらの技術は、様々な実施形態において読み取り専用モードを有しないRCK回路のプリアンブルにも適用可能である。
【0014】
動作中、データ処理システムは、グラフィックスSIMDコア112によって実行される高帯域幅グラフィックス処理のために、グラフィックスカード又はアクセラレータとして使用することができる。オペレーティングシステム又はアプリケーションプログラムを実行するホストCPU120は、GPU110及びホストCPU120のための統合メモリとして働くDDRメモリ130を通して、グラフィックス処理コマンドをCPU110に送信する。それは、例えば、OpenGLコマンドとして使用して、又は、任意の他のホストCPUを通して、コマンドをGPUインターフェースに送信し得る。OpenGLは、Khronos Groupによって開発された、2D及び3Dベクトルグラフィックスをレンダリングするためのクロス言語、クロスプラットフォームアプリケーションプログラミングインターフェースである。ホストCPU120は、アプリケーションプログラミングインターフェース(application programming interface、API)を使用して、GPU110と相互作用し、ハードウェア加速レンダリングを提供する。
【0015】
データ処理システム100は、2つのタイプのメモリを使用する。第1のタイプのメモリはDDRメモリ130であり、GPU110及びホストCPU120の両方によってアクセス可能である。グラフィックスSIMDコア112の高い性能の一部として、GPU110は、高速グラフィックスダブルデータ速度(GDDR)メモリを使用する。
【0016】
図2は、いくつかの実施形態による、
図1のデータ処理システム100のGDDR PHY-DRAMリンク200のブロック図である。GDDR PHY-DRAMリンク200は、物理インターフェース260を介して通信するGPU110及びGDDRメモリ140の一部を含む。
【0017】
GPU110は、位相ロックループ(phase locked loop、PLL)210と、コマンド及びアドレス(command and address、「C/A」)回路220と、読み取りクロック回路230と、データ回路240と、書き込みクロック回路250と、を含む。これらの回路は、GPU110のGDDR PHY118の一部を形成する。
【0018】
位相ロックループ210は、基準クロック発生回路として動作し、「CKIN」とラベル付けされた入力クロック信号を受信するための入力と、出力と、を有する。
【0019】
C/A回路220は、遅延要素221と、セレクタ222と、「TX」とラベル付けされた伝送バッファ223と、を含む。遅延要素221は、PLL210の出力に接続された入力と、出力と、を有し、
図2には具体的に示されていない入力によって制御される可変遅延を有する。セレクタ222は、第1のコマンド/アドレス値を受信するための第1の入力と、第2のコマンド/アドレス値を受信するための第2の入力と、遅延要素221の出力に接続された制御入力と、を有する。伝送機223は、セレクタ222の出力に接続された入力と、「C/A」とラベル付けされたコマンド/アドレス信号を供給するために対応する集積回路端子に接続された出力と、を有する。C/A回路220は、
図2に示された代表的なセレクタ222及びバッファ223と同じように構成された、C/A信号グループ内の各信号に対する個別バッファのセットを含むが、代表的なC/A回路220のみが示されていることに留意されたい。
【0020】
読み取りクロック回路230は、「RX」とラベル付けされた受信バッファ231と、セレクタ232と、を含む。受信バッファ231は、「RCK」とラベル付けされた信号を受信するための対応する集積回路端子に接続された入力と、出力と、を有する。受信クロックセレクタ232は、PLL210の出力に接続される第1の入力と、受信バッファ231の出力に接続される第2の入力と、出力と、
図2には示されていないモード信号を受信する制御入力と、を有する。
【0021】
データ回路240は、受信バッファ241と、ラッチ242と、遅延要素243及び244と、シリアライザ245と、伝送バッファ246と、を含む。受信バッファ241は、「DQ」と一般的にラベル付けされるデータ信号を受信する集積回路端子に接続された第1の入力と、「VREF」とラベル付けされた基準電圧を受信するための第2の入力と、出力と、を有する。ラッチ242は、受信バッファ241の出力に接続された「D」とラベル付けされた入力、クロック入力、及び、出力データ信号を提供するための「Q」とラベル付けされた出力を有するD型ラッチである。GDDR PHY118とGDDRメモリ140との間のインターフェースは、2つのデータビットを4つの公称電圧レベルのうち何れかに符号化する「PAM-4」として既知の4レベルパルス振幅変調データシグナリングシステムを実装する。したがって、受信バッファ241は、入力電圧によって4つのレベルのうち何れが示されるかを識別し、それに応じて状態を表す2つのデータビットを出力する。例えば、受信バッファ241は、4つの電圧範囲を定義するVREFに基づいて3つのスライシングレベルを生成し、3つの比較器を使用して、受信データ信号が何れの範囲に入るかを判定することができる。データ回路240は、2つのデータビットをラッチし、各ビット位置に対して複製されるラッチを含む。遅延要素243は、入力がセレクタ232の出力に接続され、出力がラッチ242のクロック入力に接続されている。遅延要素244は、PLL210の出力に接続された入力と、出力と、を有する。シリアライザ245は、バーストの連続サイクルに対応する、所定のビット位置の第1のデータ値及び所定のビット位置の第2のデータ値を受信するための入力と、遅延要素244の出力に接続された制御入力と、対応するDR端子に接続された出力と、を有する。データバスの各データバイトは、バイトの各ビットに対するデータ回路240のようなデータ回路のセットを有する。この複製によって、プリント回路基板上で異なるルーティングを有する異なるデータバイトが、異なる遅延値を有することが許容される。
【0022】
書き込みクロック回路250は、遅延要素251、セレクタ252、及び、伝送バッファ253を含む。遅延要素251は、PLL210の出力に接続された入力と、出力と、を有する。セレクタ252は、第1のクロック状態信号を受信するための第1の入力、第2のクロック電圧を受信するための第2の入力、遅延要素251の出力に接続された制御入力、及び、出力を有する。伝送バッファ253は、セレクタ252の出力に接続された入力と、「WCK_t」とラベル付けされた真の書き込みクロック信号を提供するために対応する集積回路端子に接続された第1の出力と、「WCK_c」とラベル付けされた相補的な書き込みクロック信号を提供するために対応する集積回路端子に接続された第2の出力と、を有する。
【0023】
GDDRメモリ140は、概して、書き込みクロック受信機270と、コマンド/アドレス受信機280と、データ経路トランシーバ290と、を含む。書き込みクロック受信機270は、受信バッファ271、バッファ272、分周器273、バッファ/ツリー274、及び、分周器275を含む。受信バッファ271は、WCK_t信号を受信するGDDRメモリ140の集積回路端子に接続された第1の入力と、WCK_c信号を受信するGDDRメモリ140の集積回路端子に接続された第2の入力と、出力と、を有する。
図2に示される例では、受信バッファ271の出力は、8GHzの公称周波数を有するクロック信号である。バッファ272は、受信バッファ271の出力に接続された入力と、出力と、を有する。分周器273は、バッファ272の出力に接続された入力と、4GHzの公称周波数を有する分周クロックを提供するための出力と、を有する。分周器275は、バッファ/ツリー274の出力に接続された入力と、2GHzの公称周波数を有する「CK4」とラベル付けされたクロック信号を提供するための出力と、を有する。
【0024】
コマンド/アドレス受信機280は、受信バッファ281及びスライサ282を含む。受信バッファ281は、C/A信号を受信するGDDRメモリ140の対応する集積回路端子に接続された第1の入力と、VREFを受信するための第2の入力と、出力と、を有する。C/A入力信号は、2つの論理状態レベルを有する通常のバイナリ信号として受信され、非ゼロ復帰(non-return-to-zero、NRZ)信号符号化とみなされる。スライサ282は、各々が受信バッファ281の出力に接続されたD入力と、分周器275の出力のうち対応する出力を受信するためのクロック入力と、対応するC/A信号を提供するためのQ出力と、を有する2つのデータラッチのセットを有する。
【0025】
データ経路トランシーバ290は、読み取りクロック回路285、シリアライザ293、伝送機294、受信バッファ295、及び、スライサ296を含む。シリアライザ293は、第1の読み取りデータ値を受信するための入力と、第2のデータ値を受信するための第2の入力と、バッファ/ツリー274の出力に接続された選択入力と、GDDRメモリ140のDQ端子に接続された出力と、を有する。伝送機294は、シリアライザ293の出力に接続された入力と、GDDRメモリ140の対応するDQ端子に接続された出力と、を有する。受信バッファ295は、GDDRメモリ140の対応するDQ端子に接続された第1の入力と、VREF値を受信するための第2の入力と、出力と、を有する。スライサ296は、受信バッファ295の出力に接続されたD入力と、バッファ/ツリー274の出力に接続されたクロック入力と、対応するDQ信号を提供するためのQ出力と、を各々が有する4つのデータラッチのセットを有する。
【0026】
読み取りクロック回路285は、読み取りクロック制御回路291と、伝送機292と、モードレジスタ298と、を含む。読み取りクロック制御回路291は、モードレジスタ298に接続された入力と、バッファ/ツリー274の出力に接続された入力と、出力と、を有する。伝送機292は、シリアライザ291の出力に接続された入力と、GDDRメモリ140のRCK端子に接続された出力と、を有し、読み取りクロック信号「RCK」を提供し、これは、以下では、信号及びそれがドライブされる図示された端子を指す。伝送機292は、3つ以上のPAMレベルをドライブすることが可能なPAMドライバである。動作において、読み取りクロック制御回路291は、読み取りクロック信号RCKの前にプリアンブル信号を提供するように伝送機292を制御する。以下で更に説明されるように、プリアンブル信号は、PAMドライバが第1のレートで2つの選択されたレベルの間でトグルする初期トグル状態と、PAMドライバが第1のレートよりも高い第2のレートで2つの選択されたレベルの間でトグルする最終トグル状態と、を含む。初期トグル状態の長さ及び最終トグル状態の長さは、モードレジスタ298における値に基づく。
【0027】
インターフェース260は、GPU110ダイのボンドパッドから、パッケージインピーダンスを通ってパッケージ端子へ、プリント回路基板上のトレースを通ってGDDRメモリ140のパッケージ端子へ、パッケージインピーダンスを通ってGDDRメモリ140ダイのボンドパッドへとルーティングされる物理接続のセットを含む。
【0028】
図3は、いくつかの実施形態による、読み取りクロック信号プリアンブル信号300のタイミング図である。縦軸は、-3、-1、+1及び+3というラベル付けがされた4つの図示されたPAM4レベルの中から選択された信号レベルを示し、これらのレベルは、この実施形態では、シグナリング電圧提供レベルと0ボルトとの間の電圧レベルに対応する。PAMレベルのラベルは、単にPAMレベルを参照するための規約であり、別の一般的な規約は、同じレベルを参照するために00、01、10、11のバイナリ方式を使用することに留意されたい。実際のレベルは、典型的には動作中にドライバによって調整されるアナログ電圧レベルであり、供給電圧に応じて変化する。横軸は、時間を示す。概して、プリアンブル信号は、メモリコントローラPHY上の受信機が読み取りデータ信号と同期することができるように、PAM受信機が読み取りクロック信号を受信し始めるのを助ける。
【0029】
プリアンブル信号300は、RCK信号が非アクティブ化されている期間に続いて送信される。新しい読み取りコマンドに応じて、RAM(この例では、
図2のGDDRメモリ200等のGDDRメモリ)は、RCKのためのPAMドライバをアクティブ化し、読み取りクロック信号のためのプリアンブル信号300を提供する。プリアンブル信号300は、順に、2つの静的状態302及び304、初期トグル状態306、最終トグル状態308、並びに、クロック動作状態310を含む。
【0030】
この例示的なプリアンブル信号では、2つの静的状態302及び304が用いられるが、他のプリアンブル信号は、1つの静的状態のみを含み得る。初期静的状態302において、PAM4ドライバは、内部メモリクロックの最終周波数に対して2クロックサイクルの期間にわたって最高PAM4レベルに保持される。この例では、内部メモリクロックは、GDDRメモリの内部「CK4」クロックであり、これは、メモリチャネル上の「WCK」書き込みクロックから、例えばWCKの周波数の1/4の周波数で生成される。初期静的状態302は、CK4クロックの2サイクルの間続くが、以下に説明されるように、より長く又はより短くなるようにプログラムすることができる。
【0031】
静的状態304において、PAM4ドライバは、その最低レベル、典型的には0Vレベルにドライブされ、それは、この実施形態において「-3」レベルとして指定される。また、静的状態304は、この例ではCK4クロックの2サイクルの間続く。
【0032】
静的状態304に続いて、プリアンブル信号300は、PAMドライバが第1のレートで2つの選択されたレベルの間でトグルする初期トグル状態306を含む。この例では、トグルレートは、CK4クロックレートの2倍、すなわちMCKクロックレートの1/2である。次に、プリアンブル信号300は、PAM4ドライバが第1のレートよりも高い第2のレートで2つの選択されたレベルの間でトグルする最終トグル状態308に遷移する。最終トグル状態308おける間、PAM4受信機は、RCKクロック信号の受信を安定化させることができる。
【0033】
最終トグル状態308に続いて、RCKクロック信号は、プリアンブルから出て、RCKクロック信号がクロック動作状態310において提供されるRCKクロック動作に遷移する。好ましくは、RCKクロック信号の周波数は、最終トグル状態308で用いられるトグルレートと同じである。
【0034】
図4は、いくつかの追加の実施形態による、読み取りクロック信号プリアンブル信号400のタイミング図である。図は、
図4と同様に構成されている。図示されたプリアンブル信号400は、プリアンブル信号がモードレジスタ141における設定によって変更され得るいくつかの方法の一例を示す。プリアンブル信号400は、順に、2つの静的状態402及び404と、初期トグル状態406と、最終トグル状態408と、クロック動作状態410と、を含む。
【0035】
プリアンブル信号400において、様々な状態のタイミングは
図4のタイミングと同様であるが、用いられるPAM4レベルは異なる。この例では、モードレジスタ141における値に基づく、トグル状態における間に用いられる2つの選択されたレベル420及び430に対して異なる値が設定される。静的状態402が+3 PAM4レベルに設定される間、静的状態404は-1 PAM4レベルに設定され、トグル状態406及び408において、プリアンブル信号400は、図示されるように、PAM4レベル-1と+1との間でトグルする。最後に、クロック動作状態において、RCKクロック信号は、PAM4レベル-1と+1との間でトグルする。
【0036】
2つの選択されたレベルは、モードレジスタ298における値に基づく。この実施形態では、
図5に関して以下に説明されるように、レベルの限定されたセットがPAMレベルのペアに対して構成可能であるが、他の実施形態では、モードレジスタ298における設定は、状態402、404、406、408、410の何れかで使用されるPAMレベルの任意のペアを構成することができる。PAMレベルの異なるペアを異なる状態で使用することができる。好ましくは、最終トグル状態408における2つの選択されたレベルは、状態410における読み取り動作中に、読み取りクロック信号のために用いられるレベルである。初期トグル状態406おける間の2つの選択されたレベルは、最終トグル状態におけるものとは異なり得る。この例示的なプリアンブル信号400では、初期トグル状態及び最終トグル状態のみが使用されるが、初期トグル状態406と最終トグル状態408との間の初期トグル状態406間のトグルレートを高速化する追加のトグル状態が使用され得る。
【0037】
この実施形態では、用いられるPAMドライバ(
図2、292)は、1.2ボルトのシグナリング供給電圧に対してそれぞれの2ビットデジタル値を示す4つのレベルをドライブすることが可能なPAM-4ドライバであり、-3、-1、+1、+3の識別されたレベルをそれぞれ約0V、0.4V、0.8V、1.2Vにする。好ましくは、シグナリングレベルは、電力を節約するために調整されてもよく、より低い最大レベル(+3)を提供し、他のレベルはそれに応じて下げられる。他の実施形態では、PAM-6又はPAM-8等の他のPAMドライバが用いられる。概して、本明細書の技術は、3つ以上の電圧レベルをドライブすることが可能な任意のPAMドライバとともに使用するのに好適である。
【0038】
図5は、
図2のメモリの読み取りクロックモードのためのモードレジスタ設定を示す表500を示している。表500は、12ビットモードレジスタの異なるビット又はビットフィールドの値を示し、12ビットは、モードレジスタがロードされるアドレス信号に対応する。表500は、モードレジスタの特定のビットに対応するOPコード(演算コード)列、対応するビットによって定義される関数を識別する関数列、OPコードの異なる値を指定するOPコード値列、及び、異なるOPコード値の意味を識別する記述列を含む6つの列を有する。
【0039】
モードレジスタビット[1:0]は、「RCKMODE」とラベル付けされ、選択されたRCKモードを識別する。00b(2進)の値は、RCKがメモリ200によって提供されない無効モードを識別する。このモードは、デフォルトモードである。
【0040】
01bの値は読み取り専用モードを示す。以下で更に説明されるように、読み取り専用モードでは、RCKは、1つ以上の読み取りサイクル中に提供され、各読み取りサイクルは、プリアンブルとポストアンブルの両方を含む。読み取り専用モードが選択された場合、インターアンブル挙動は、連続読み取りが最小間隔量よりも大きく、すなわち少なくともtCCD+1 RCKサイクルだけ分離されたときに定義され、ここでtCCDは最小コマンド間遅延時間である。概して、読み取りデータモードの間、RCKは、読み取りサイクルにおけるデータの転送前にプリアンブル期間を開始し、読み取りサイクル後にプリアンブル期間を終了する。特に、読み取りコマンド(read command、RD)、オートプリチャージコマンド(read with auto-precharge command、RDA)を伴う読み取り、及び、読み取りトレーニング(read training、RDTR)コマンドのためのデータ転送と同時にトグルを開始する。それは、クリア条件で停止する。いくつかの実施形態では、クリア条件は、書き込みコマンド(書き込みコマンド(write command、WR)、オートプリチャージを伴う書き込みコマンド(write with auto-precharge command、WRA)、書き込みトレーニング(write training、WRTR)コマンド)の受信、全バンクアイドル状態指標の受信、又は、電力ダウン状態へのエントリを含む。
【0041】
10bの値は、常時実行モードを示す。常時実行モードでは、RCKは、RCKを生成するために使用されるWCKがメモリ200によって受信される限り、連続的に実行される。
【0042】
11bの値は予約されている(RSVD)が、このモードレジスタ構造を使用して将来追加されるRCK信号を提供する新しいモードの定義を可能にする。
【0043】
モードレジスタビット[2]は、読み取りクロックタイプ(RCKTYPE)を定義する。0bの値は、GDDRメモリ200がRCK信号をシングルエンド信号として提供することを示し、すなわち、
【0044】
【数1】
はトグルしない。1bの値は、RCK信号と
【0045】
【数2】
信号の両方が差動信号としてトグルすることを示す。
【0046】
モードレジスタビット[4:3]は、静的プリアンブル期間の長さを定義する。メモリコントローラがプリアンブルにロックするのを可能にするために、各プリアンブル期間は、静的期間、低速期間及び高速期間を有する。
図3及び
図4の例示的なプリアンブル信号では、静的状態304及び404は、静的期間を表し、初期トグル状態306及び406は、低速期間を表し、最終トグル状態308及び408は、高速期間を表す。静的期間中、読み取りクロック信号はその非アクティブ状態でドライブされ、すなわち、RCKは低くドライブされ、
【0047】
【数3】
は高く駆動される。00bの値は、0クロックサイクルの静的期間、すなわち静的期間がないことを示す。01b、10b及び11bの値は、それぞれ、2、4及び6サイクルの静的期間を定義する。
【0048】
モードレジスタビット[5]は、RCKレベル設定(RCKLEVEL)を定義し、これは、この例では、RCKプリアンブル及びRCK動作中にRCKレベルの2つの可能な値のペアを提供する。0bの値は、RCK信号のPAMドライバに対して+3/-3の値を定義し、1bの値は、+1/-1の値を定義する。これらの値のペアは例として示されているが、様々な実施形態では、構成設定を使用して、プリアンブルの各位相において異なる値のペアを定義することを含めて、任意の所望の値のペアをプログラムすることができる。
【0049】
モードレジスタビット[7:6]は、高速プリアンブル期間の長さを定義する。00bの値は、0クロックサイクルの高速プリアンブル期間、すなわち、高速プリアンブル期間がないことを示す。01b、10b及び11bの値は、それぞれ、2、4及び6サイクルの静的期間を定義する。
【0050】
モードレジスタビット[8]は定義されず、将来の使用のために予約されている(reserved for future use、RFU)。
【0051】
モードレジスタビット[10:9]は、低速プリアンブル期間の長さを定義する。00bの値は、0クロックサイクルの低速プリアンブル期間、すなわち低速プリアンブル期間がないことを示す。01b、10b及び11bの値は、1、2及び3サイクルの静的期間を定義する。高速及び低速プリアンブル期間は、独立してプログラム可能であるが、OPコードビット[7:6]及び[10:9]が同じ値を有する場合、高速及び低速プリアンブルは、同じ長さの時間であることに留意されたい。
【0052】
モードレジスタビット[11]は定義されず、RFUとして示されている。
【0053】
これらのモードレジスタ符号化は、これらの値を符号化する1つの可能な方法に過ぎず、他の符号化も可能であることは明らかであるはずである。例えば、専用モードレジスタを使用する代わりに、これらのビットは、複数のモードレジスタ間で、例えば、別様に未使用又は予約されたビット位置に分散され得る。更に、静的プリアンブル、低速プリアンブル及び高速プリアンブルのための利用可能な値の選択は、いくらか任意であり、異なる実施形態において変更され得る。
【0054】
図6は、いくつかの実施形態による、GDDRメモリにおける様々な信号の関係を示すタイミング
図600を示している。
図600は、「CK4」とラベル付けされた内部メモリクロック信号と、「WCK」とラベル付けされた書き込みクロック信号と、「CMD」とラベル付けされたコマンド信号と、読み取りクロック信号RCKと、「DQ[7:0]、DBI」とラベル付けされたデータバス反転信号と、を含む、データ信号のセットを含む。横軸は時間を表しており、縦軸は様々な信号の振幅をボルトで表している。
【0055】
図600は、読み取り専用モードにおいて上述したように構成されたRCKを有するメモリにおいて読み取りコマンド602が受信される例示的なシーケンスを示す。CK4信号は、この実施形態では4:1の比で、受信されたWCK信号に基づいて生成される。例えば、WCKが8Ghzである場合、CK4は2Ghzである。破線は、CK4信号の低から高への遷移を示し、T0~T11とラベル付けされた様々な時点に対応する。
図600は、COMMAND信号のためのアクティブコマンド符号化を示し、動作サイクルは示されていない。
【0056】
タイミング
図600に示される例示的シナリオでは、モードレジスタ300は、RCKMODE=読み取り専用、RCKTYPE=シングルエンド、RCKPRE_Static=2、RCKPRE_LS=2、RCKPRE_HS=1、及び、RCKLEVEL=1に対してプログラムされている。
図600は、時間T0における「READm」とラベル付けされた読み取りコマンドの発行を示す。読み取り待ち時間のために、メモリ200は、時間T8まで読み取りデータを提供しない。この時間の間、RCK信号は、
図5によるモードレジスタ298における構成設定によって定義されるプリアンブルを含み、信号RCKを提供するために読み取りクロックをアクティブ化し、メモリコントローラにおける受信機が効率的な方法でRCK信号と同期することを可能にする。
【0057】
時間T0で受信された読み取りコマンドREADmに応じて、先ず、RCKドライバが有効にされる必要がある。時間「tRCKEN」によって示されるように、RCKクロックドライバを有効にするためにCK4の2サイクルの時間が必要とされる。この時間の間、RCKドライバの出力(例えば、
図2の292)は未定義であるが、典型的には、T0からT3までのRCKによって示されるように高(ハイ)であると予想される。
【0058】
時間T3において、RCK信号が-1レベルでドライブされた状態で、静的期間が開始される。この静的期間の長さは、モードレジスタにおけるRCKPRE_Static設定によって制御される。この例では、長さはCK4の2サイクルである。
【0059】
時間T5において、長さがRCKPRE_LS設定によって制御された状態で、初期トグル期間が開始される。この期間中、RCKは、CK4の2倍のレート且つWCKの半分のレートで、+1及び-1の2つの選択されたレベルの間でトグルする。このトグルレートが示されているが、他のトグルレートが使用され得る。典型的には、初期トグル期間におけるトグルは、PAM受信機がRCK信号にロックオンするのを助けるために、最終トグルレートよりも低速である。
【0060】
時間T7において、長さがRCKPRE_HS設定によって制御された状態で、最終トグル期間が開始される。この期間中のトグルレートは、好ましくは、プリアンブルに続くRCKトグルレートと同じであり、この例では、WCKのレートである。WCKレートの半分等の他のレートが使用され得る。この例では、プリアンブルの両方のトグル期間においてレベルの同じペアが使用されるが、異なるレベルが使用され得ることに留意されたい。
【0061】
時間T8において、最終トグル期間が終了し、プリアンブルが完了する。このとき、RCKはWCKのレートでトグルし続け、RCK信号のPAMはRCK信号に同期する。DQ[7:0]、DBI信号に見られるように、読み取りコマンドは、この例では、T8からT10までのCK4の2サイクルの間、メモリコントローラに送信されたデータで満たされる。読み取り動作で使用されるデータチャネルの各データラインに対するPAM受信機は、受信されたRCK信号を使用してクロックされる。T10に続いて、RCKは、DQE信号を介したメタデータ等のデータの送信のために動作し続けてもよく、DQE信号のためのメモリコントローラにおける受信機も、同期のためにRCKを用いる。いくつかの実施形態では、読み取り専用モード中に、RCK信号は、複数の順次読み取りコマンドのための読み取りクロックとしてトグルし続け得る。
【0062】
他の関連するイベントも、プリアンブル中にGDDRメモリ上で発生し得る。例えば、切り替え可能なオンダイターミネーション(on-die termination、ODT)を用いる実施形態では、ODTは、低速トグル期間中に有効から無効に切り替えら得る。
【0063】
したがって、本明細書に開示される技術を使用して、非バイナリシンボル、すなわち、クロックエッジごとに3つ以上の状態を有するシンボルを送信することによって、データ伝送帯域幅を改善し得る。ノイズ軽減技術は、そうでなければ既存のクロック速度でPAM4シンボルにおいて使用される4つの電圧レベルを復号するためには十分にロバストではないシステムにおけるPAM4の受信を可能にし得る、と考えられる。開示された実施形態によれば、メモリは、プログラム可能なPAMレベル及び持続時間を有するプリアンブルを伴うRCK信号を送信し、異なるシステム特性及び受信機設計におけるより大きな柔軟性を可能にする。
【0064】
本明細書に説明される基準電圧発生回路又はその任意の部分を含む集積回路若しくは複数の集積回路は、プログラムによって読み取られ、使用され得るデータベース又は他のデータ構造の形態で、コンピュータアクセス可能データ構造によって記述又は表されて、直接的に又は間接的に集積回路を製造し得る。例えば、本データ構造は、ベリログ又はVHDL等の高位設計言語(high-level design language、HDL)におけるハードウェア機能の挙動レベル記述又はレジスタ転送レベル(register-transfer level、RTL)記述であり得る。記述は、合成ライブラリからゲートのリストを含むネットリストを生成するために記述を合成することができる合成ツールによって読み取られ得る。ネットリストは、集積回路を含むハードウェアの機能も表すゲートのセットを含む。ネットリストは、次に、マスクに適用される幾何学的形状を記述するデータセットを生成するために配置され、ルーティングされ得る。次に、マスクを、様々な半導体製造工程で使用して、集積回路を製造し得る。代替的に、コンピュータアクセス可能記憶媒体上のデータベースは、所望の場合、ネットリスト(合成ライブラリの有無にかかわらず)若しくはデータセット、又は、グラフィック・データ・システム(Graphic Data System、GDS)IIデータであり得る。
【0065】
特定の実施形態を説明してきたが、これらの実施形態に対する様々な修正が当業者には明らかであろう。例えば、様々なPAMドライバ設計が、異なる数のPAMレベルとともに使用され得る。更に、読み取りクロックドライバ制御回路を構成する様々な方法が、所望の構成可能性を達成するために使用され得る。開示されている技術は、高速データ伝送を使用する多種多様な集積回路に適用可能である。1つの特定の例では、一方の集積回路は、データプロセッサ、システムオンチップ(system-on-chip、SOC)又はグラフィックス処理ユニット(GPU)である可能性があり、他方の集積回路は、DDR又はGDDR SDRAMであるが、本明細書に説明される技術は、多くの他のタイプの集積回路とともに使用することができる。また、伝送媒体は、実施形態間で異なってもよく、プリント回路基板配線、ボンドワイヤ、シリコン貫通ビア(through-silicon vias、TSV)等を含み得る。
【0066】
したがって、添付の特許請求の範囲は、開示された実施形態の範囲に含まれる開示された実施形態の全ての変更を網羅することを意図している。