(57)【特許請求の範囲】
【請求項１】
ダイナミックランダムアクセスメモリ(DRAM)システムのメモリトレーニングを実施するための方法であって、
前記DRAMシステムの複数のポートのうちの前記DRAMシステムの第1のポートおよび前記DRAMシステムの第2のポートに対するメモリ動作をディゼーブルするステップであって、前記複数のポートの各ポートが、前記DRAMシステムのメモリアレイに通信可能に結合され、前記メモリアレイに書き込もうとするデータおよび前記メモリアレイから読み出されたデータを移動させるように構成される、ステップと、
前記DRAMシステムの前記第1のポートおよび前記DRAMシステムの前記第2のポートを、ループバック接続を介して通信するように構成するステップと、
前記DRAMシステムの前記第1のポートによって、システムオンチップ(SoC)から信号を受け取るステップと、
前記DRAMシステムの前記第1のポートによって、前記信号を前記DRAMシステムの前記第2のポートに、前記ループバック接続を介して供給するステップと、
前記DRAMシステムの前記第2のポートによって、前記信号を前記SoCに供給するステップと
を含む、方法。
【請求項２】
前記信号を受け取るステップが、前記信号を前記SoCの閉ループエンジンから受け取るステップを含み、
前記信号を前記SoCに供給するステップが、前記信号を前記SoCの前記閉ループエンジンに供給するステップを含む、
請求項1に記載の方法。
【請求項３】
前記信号が、前記閉ループエンジンによって提供される1つまたは複数のインクリメンタル信号のうちの1つであり、
前記方法がさらに、
前記1つまたは複数のインクリメンタル信号に対応する1つまたは複数の結果を決定するステップと、
前記1つまたは複数の結果に基づいて、前記DRAMシステムに関するハードウェアパラメータを決定するステップと
を含む、請求項2に記載の方法。
【請求項４】
前記ハードウェアパラメータを決定するステップが、前記1つまたは複数のインクリメンタル信号のうちの最初に不合格になるインクリメンタル信号と、前記1つまたは複数のインクリメンタル信号のうちの最後に不合格になるインクリメンタル信号との間の中央値を決定するステップを含む、請求項3に記載の方法。
【請求項５】
前記1つまたは複数のインクリメンタル信号に対応する前記1つまたは複数の結果を決定するステップが、パラメータスイープを行うステップを含む、請求項3に記載の方法。
【請求項６】
前記信号が、タイミングパラメータおよび電圧パラメータのうちの1つまたは複数を備える、請求項1に記載の方法。
【請求項７】
前記第1のポートおよび前記第2のポートが、前記DRAMシステム内で隣接する、請求項1に記載の方法。
【請求項８】
前記ループバック接続が双方向である、請求項1に記載の方法。
【請求項９】
前記第1のポートおよび前記第2のポートの各々が、前記ループバック接続を選択するように動作可能なマルチプレクサ(MUX)を備える、請求項1に記載の方法。
【請求項１０】
ダイナミックランダムアクセスメモリ(DRAM)システムのメモリトレーニングを実施するためのシステムであって、
前記DRAMシステムに通信可能に結合されたシステムオンチップ(SoC)
を備え、
前記DRAMシステムが、メモリアレイと、ループバック接続を介して通信可能に結合された第1のポートおよび第2のポートを備える複数のポートとを備え、前記複数のポートの各ポートが、前記メモリアレイに通信可能に結合され、前記メモリアレイに書き込もうとするデータおよび前記メモリアレイから読み出されたデータを移動させるように構成され、
前記DRAMシステムが、
前記DRAMシステムの前記第1のポートによって、前記SoCから信号を受け取ることと、
前記DRAMシステムの前記第1のポートによって、前記信号を前記DRAMシステムの前記第2のポートに、前記ループバック接続を介して供給することと、
前記DRAMシステムの前記第2のポートによって、前記信号を前記SoCに供給することと
を行うように構成され、
前記SoCが、
前記第1のポートおよび前記第2のポートに対するメモリ動作をディゼーブルすることと、
前記第1のポートおよび前記第2のポートを、前記ループバック接続を介して通信するように構成することと
を行うように構成される、システム。
【請求項１１】
前記SoCが、閉ループエンジンを備え、
前記DRAMシステムがさらに、
前記信号を前記SoCの前記閉ループエンジンから受け取ることと、
前記信号を前記SoCの前記閉ループエンジンに供給することと
を行うように構成される、請求項10に記載のシステム。
【請求項１２】
前記閉ループエンジンが、
前記信号を備える1つまたは複数のインクリメンタル信号を提供することと、
前記1つまたは複数のインクリメンタル信号に対応する1つまたは複数の結果を決定することと、
前記1つまたは複数の結果に基づいて、前記DRAMシステムに関するハードウェアパラメータを決定することと
を行うように構成される、請求項11に記載のシステム。
【請求項１３】
前記閉ループエンジンが、前記1つまたは複数のインクリメンタル信号のうちの最初に不合格になるインクリメンタル信号と、前記1つまたは複数のインクリメンタル信号のうちの最後に不合格になるインクリメンタル信号との間の中央値を決定することによって、前記ハードウェアパラメータを決定することを行うように構成される、請求項12に記載のシステム。
【請求項１４】
前記閉ループエンジンが、パラメータスイープを行うことによって、前記1つまたは複数のインクリメンタル信号に対応する前記1つまたは複数の結果を決定することを行うように構成される、請求項12に記載のシステム。
【請求項１５】
前記DRAMシステムが、タイミングパラメータおよび電圧パラメータのうちの1つまたは複数を備える前記信号を受け取ることを行うように構成される、請求項10に記載のシステム。
【請求項１６】
前記第1のポートおよび前記第2のポートが、前記DRAMシステム内で隣接する、請求項10に記載のシステム。
【請求項１７】
前記ループバック接続が双方向である、請求項10に記載のシステム。
【請求項１８】
前記第1のポートおよび前記第2のポートの各々が、前記ループバック接続を選択するように構成されるマルチプレクサ(MUX)を備える、請求項10に記載のシステム。
【請求項１９】
ダイナミックランダムアクセスメモリ(DRAM)システムを備える装置であって、
前記DRAMシステムの複数のポートのうちの前記DRAMシステムの第1のポートおよび前記DRAMシステムの第2のポートに対するメモリ動作をディゼーブルすることであって、前記複数のポートの各ポートが、前記DRAMシステムのメモリアレイに通信可能に結合され、前記メモリアレイに書き込もうとするデータおよび前記メモリアレイから読み出されたデータを移動させるように構成される、ことと、
前記DRAMシステムの前記第1のポートおよび前記DRAMシステムの前記第2のポートを、ループバック接続を介して通信するように構成することと、
前記DRAMシステムの前記第1のポートによって、システムオンチップ(SoC)から信号を受け取ることと、
前記DRAMシステムの前記第1のポートによって、前記信号を前記DRAMシステムの前記第2のポートに、前記ループバック接続を介して供給することと、
前記第2のポートによって、前記信号を前記SoCに供給することと
を行うように構成される、装置。
【請求項２０】
前記信号が、トレーニング信号を含む、請求項1に記載の方法。
【請求項２１】
前記信号が、トレーニング信号を含む、請求項10に記載のシステム。
【請求項２２】
前記信号が、トレーニング信号を含む、請求項19に記載の装置。
【発明の詳細な説明】
【技術分野】
【０００１】
優先権の主張
本出願は、参照によりその全体が本明細書に組み込まれている、2014年1月24日に出願した、「SYSTEMS AND METHODS FOR TRAINING MEMORY」という名称の米国仮特許出願第61/930980号の優先権を主張するものである。
【０００２】
本出願は、参照によりその全体が本明細書に組み込まれている、2015年1月5日に出願した、「PROVIDING MEMORY TRAINING OF DYNAMIC RANDOM ACCESS MEMORY (DRAM) SYSTEMS USING PORT-TO-PORT LOOPBACKS, AND RELATED METHODS, SYSTEMS, AND APPARATUSES」という名称の米国特許出願第14/589145号の優先権も主張するものである。
【０００３】
本開示の技術は一般にメモリシステムに関する。
【背景技術】
【０００４】
コンピューティングシステムは、記憶と動作の両方についてメモリを利用する。コンピューティングシステムが動作のために使用する1つの一般的なタイプのメモリが、ランダムアクセスメモリ(RAM)である。RAMには、スタティックRAM(SRAM)とダイナミックRAM(DRAM)の、2つの異なるタイプがある。DRAMは、メモリアレイ内のコンデンサ上の電荷の有無を利用して、ビット値を示す。たとえば、コンデンサが充電されている場合、ビット値は論理1(1)であると考えられる。コンデンサが充電されていない場合、ビット値は論理0(0)であると考えられる。コンデンサはゆっくりと電荷を失うので、定期的なリフレッシュがかけられる。電力が停止されると、すべてのコンデンサが放電し、メモリは、DRAM内に存在していたどんなデータも失う。
【０００５】
製造プロセスの変動が、DRAMモジュール内のすべての要素が意図したように動作し得るとは限らないという点において不完全な、DRAMを生み出す変動を生じさせる場合がある。しかしながら、そのような変動に関する知識が提供されると、コンピューティングシステムは、変動を容易に補償することが可能である。たとえば、コンピューティングシステムは、より大きいまたはより小さい電圧を発生させてコンデンサを充電することが可能であり、レーテンシを補償することが可能であり、または完全に欠陥のあるビットセルに書き込み、もしくはそこから読み出そうとする任意の試みを回避することさえ可能である。しかしながら、コンピューティングシステムは、そのような救済措置を講じ得る前に、どのDRAMメモリアレイ要素(たとえば個々のビットセル)が動作可能であるか、またどのような特異性が、特定のDRAMメモリアレイ要素および/またはDRAMメモリアレイ要素と通信するための経路に関連し得るか、について決定する必要がある。したがって、コンピューティングシステムは、DRAMメモリアレイ要素へのリンクを、非限定的な例としてタイミングおよび性能を求めて最適化するためのトレーニング動作を実行し得る。
【０００６】
従来のトレーニング方法は、DRAMメモリアレイ要素のシリアルテストを利用する。たとえば、従来の書込みテストでは、DRAMメモリアレイ要素への書込みコマンドが開始され、DRAMメモリアレイ要素にデータが書き込まれ、次いで、DRAMメモリアレイ要素からデータが読み出される。次いで、トレーニング状態機械(またはソフトウェア)が、書込みデータを読出しデータと比較し、トレーニング中のパラメータを修正(たとえばインクリメントまたはデクリメント)するかどうかを決定し得る。このプロセスは、効果的であるが、実施するためにかなりのブートメモリを必要とする場合があり、比較を行い得る前に発行しなければならないDRAMメモリアクセス書込みコマンドおよび読出しコマンドのため、時間がかかる場合がある。その上、比較ステップは、最終最適値が決定され得る前に、何度も反復される場合がある。したがって、メモリをトレーニングするための改善された技法が、望ましい場合がある。
【発明の概要】
【課題を解決するための手段】
【０００７】
本明細書において開示する態様は、ダイナミックランダムアクセスメモリ(DRAM)システムの、ポート間ループバックを用いたメモリトレーニングの実施を可能にする。関連する方法、システム、および装置も開示する。一例示的態様では、DRAMシステム内の第1のポートが第2のポートに、ループバック接続を介して結合される。トレーニング信号が、DRAMシステムのメモリアレイに書き込まれ、またはそこから読み出される必要なく、システムオンチップ(SoC)から第1のポートに送られ、ループバック接続を通じて第2のポートに渡される。次いでトレーニング信号は、SoCに戻され、そこでSoCの閉ループトレーニングエンジンによって検査され得る。あるハードウェアパラメータに対応するトレーニング結果が記録され得、閉ループトレーニングエンジンにおいて、そのハードウェアパラメータにとって最適な結果が得られるまで、このプロセスが繰り返され得る。ポート間ループバック構成を用いることによって、タイミング、電力に関するDRAMシステムパラメータ、およびDRAMシステムに関連する他のパラメータが、より迅速に、かつより少ないブートメモリ使用量で、トレーニングされ得る。
【０００８】
別の態様では、DRAMシステムのメモリトレーニングを実施するための方法が提供される。方法は、DRAMシステムの第1のポートによって、SoCからトレーニング信号を受け取ることを含む。方法はさらに、DRAMシステムの第1のポートによって、トレーニング信号をDRAMシステムの第2のポートに、ループバック接続を介して供給することを含む。方法はまた、DRAMシステムの第2のポートによって、トレーニング信号をSoCに供給することを含む。
【０００９】
別の態様では、DRAMシステムのメモリトレーニングを実施するためのシステムが提供される。システムは、DRAMシステムに通信可能に結合されたSoCを備える。DRAMシステムは、ループバック接続を介して通信可能に結合された第1のポートおよび第2のポートを備える。DRAMシステムは、DRAMシステムの第1のポートによって、SoCからトレーニング信号を受け取ることを行うように構成される。DRAMシステムはさらに、DRAMシステムの第1のポートによって、トレーニング信号をDRAMシステムの第2のポートに、ループバック接続を介して供給することを行うように構成される。DRAMシステムはまた、DRAMシステムの第2のポートによって、トレーニング信号をSoCに供給することを行うように構成される。
【００１０】
別の態様では、DRAMシステムを備える装置が提供される。DRAMシステムは、DRAMシステムの第1のポートによって、SoCからトレーニング信号を受け取ることを行うように構成される。DRAMシステムはさらに、DRAMシステムの第1のポートによって、トレーニング信号を第2のポートに、ループバック接続を介して供給することを行うように構成される。DRAMシステムはまた、DRAMシステムの第2のポートによって、トレーニング信号をSoCに供給することを行うように構成される。
【図面の簡単な説明】
【００１１】
【図１】当技術分野で知られているような、システムオンチップ(SoC)に通信可能に結合された従来のダイナミックランダムアクセスメモリ(DRAM)システムのブロック図である。
【図２】図1のDRAMシステムおよびSoCに関連する例示的なトレーニングプロセスの簡略なフローチャートである。
【図３】本明細書において開示する、ポート間ループバック接続を用いたメモリトレーニングを実施するための例示的なSoCおよびDRAMシステムのブロック図である。
【図４】図3のSoCおよびDRAMシステムの例示的な実装形態の詳細な回路図である。
【図５】ポート間ループバック接続を用いたメモリトレーニングを実施するための例示的な動作を示すフローチャートである。
【図６】図3および図4の、ポート間ループバック接続を用いたメモリトレーニングを実施するためのSoCおよび/またはDRAMシステムを含み得る、例示的なプロセッサベースのシステムのブロック図である。
【発明を実施するための形態】
【００１２】
ここで、図面を参照して、本開示のいくつかの例示的な態様について説明する。「例示的」という語は、本明細書では「一例、事例、または例示として挙げること」を意味するために使用される。「例示的」なものとして本明細書において説明するいずれの態様も、必ずしも他の態様よりも好ましい、または有利であると解釈されるわけではない。
【００１３】
本明細書において開示する態様は、ダイナミックランダムアクセスメモリ(DRAM)システムの、ポート間ループバックを用いたメモリトレーニングの実施を可能にする。関連する方法、システム、および装置も開示する。一例示的態様では、DRAMシステム内の第1のポートが第2のポートに、ループバック接続を介して結合される。トレーニング信号が、DRAMシステムのメモリアレイに書き込まれ、またはそこから読み出される必要なく、システムオンチップ(SoC)から第1のポートに送られ、ループバック接続を通じて第2のポートに渡される。次いでトレーニング信号は、SoCに戻され、そこでSoCの閉ループトレーニングエンジンによって検査され得る。あるハードウェアパラメータに対応するトレーニング結果が記録され得、閉ループトレーニングエンジンにおいて、そのハードウェアパラメータにとって最適な結果が得られるまで、このプロセスが繰り返され得る。ポート間ループバック構成を用いることによって、タイミング、電力に関するDRAMシステムパラメータ、およびDRAMシステムに関連する他のパラメータが、より迅速に、かつより少ないブートメモリ使用量で、トレーニングされ得る。
【００１４】
本明細書において開示する、DRAMシステムの、ポート間ループバックを用いたメモリトレーニングを実施するための方法、システム、および装置の例示的な態様について取り上げる前に、従来のトレーニング技法の簡単な概説を、図1および図2を参照して行う。DRAMシステムの、ポート間ループバックを用いたトレーニングのための方法、システム、および装置に関連する、例示的なハードウェアおよび動作についての議論は、下記で図3を参照して開始する。
【００１５】
この点に関して、図1は、当技術分野で知られているような、SoC102に通信可能に結合されたDRAMシステム100に関する、従来のトレーニング方式のブロック図である。図示されているように、SoC102がポート104(0)〜104(X)を提供し、その各々が、DRAMシステム100によって提供される、対応するポート106(0)〜106(X)に結合される。本明細書では、「ポート」は、受信側(たとえばDRAMシステム100)において一般的なストローブまたはクロック(図示せず)を用いてリタイミングされ得る、自己タイミング型ユニットを指す。いくつかの態様では、ポート104(0)〜104(X)および106(0)〜106(X)の各々は、特定ビット数の情報を一度に移動させるように構成される。非限定的な例として、ポート104(0)〜104(X)および106(0)〜106(X)は、エイト(8)ビットの情報を一度に移動させるように構成され得、その場合、ポート104(0)〜104(X)および106(0)〜106(X)の各々は、「バイトレーン」と呼ばれ得る。
【００１６】
SoC102およびDRAMシステム100はさらに、それぞれのCA/CK要素110および112を接続する、コマンドおよびクロック(「CA/CK」)ライン108によって結合される。CA/CKライン108は、SoC102とDRAMシステム100との間で、コマンドおよびプロセッサクロック信号を通信するために使用され得る。DRAMシステム100内のポート106(0)〜106(X)は、DRAMシステム100内のメモリアレイ114に通信可能に結合される。いくつかの態様では、メモリアレイ114は、論理値を示すためのコンデンサ(図示せず)または他の要素を備え得る。本明細書において提供されるいくつかの態様は、より多数のまたはより少数のポート104(0)〜104(X)および/または106(0)〜106(X)を提供し得ることを理解されたい。いくつかの態様では、SoC102および/またはDRAMシステム100は、見やすくするために図1に示されていない、さらなる要素を含み得る。
【００１７】
上述したように、SoC102は起動時に、たとえば製造上の変動または特異性のため、DRAMシステム100の要素にアクセスするときに何らかの是正措置または補償措置が講じられる必要があるかどうかを決定する必要があり得る。たとえば、SoC102は、何らかのタイミングまたは性能の問題が、DRAMシステム100のポート106(0)〜106(X)またはそこに至る通信経路に関連しているかどうかを決定する必要があり得る。したがって、SoC102は、DRAMシステム100のポート106(0)〜106(X)を、非限定的な例としてタイミングおよび/または性能を最適なものにするように最適化するためのトレーニング動作を実行し得る。
【００１８】
図2は、図1のSoC102およびDRAMシステム100に関連する従来のトレーニングプロセスの簡略なフローチャートを示す。分かりやすくするために、図2の動作について説明する際に、図1の要素が参照される。本明細書において説明するトレーニングプロセスは、DRAMシステム100と通信する際にSoC102によって使用される、たとえばタイミングおよび/または電圧に関連するハードウェアパラメータ(図示せず)を設定するために使用され得る。
【００１９】
従来のトレーニングプロセスは、DRAMシステム100からSoC102への読戻しを用いた、「疑似開ループ(pseudo open-loop)」プロセスとして実施され得る。図2に見られるように、セットアップコマンド(CMD)200が、SoC102からDRAMシステム100に通信されて、ポート106(0)〜106(X)のうちの選択された1つに到達し得る。次いで、書込みコマンド(WRITE CMD)202がDRAMシステム100に、トレーニング信号(図示せず)をポート106(0)〜106(X)のうちの選択された1つに送るように供給される。次に、読出しコマンド(READ CMD)204がDRAMシステム100に供給され、トレーニング信号がDRAMシステム100のポート106(0)〜106(X)のうちの選択された1つからSoC102に読み戻されるときに、読戻し206が生じる。次いで、SoC102のトレーニングモジュール(図示せず)が、ポート106(0)〜106(X)のうちの選択された1つから読み戻されたトレーニング信号を評価する。評価に基づいて、トレーニング信号は、(TRAINING INC/DEC208によって示されるように)インクリメント(INC)されてもよく、デクリメント(DEC)されてもよく、別様に修正されてもよく、最適な結果が得られるまで、このプロセスが反復される。次いで、最適な結果に基づいて、ポート106(0)〜106(X)のうちの選択された1つに関するハードウェアパラメータが、ポート106(0)〜106(X)のうちの選択された1つの将来的な使用に備えて設定され得る。
【００２０】
図1および図2に示される態様は、DRAMシステム100の効果的なトレーニングを実施し得るが、トレーニング信号がDRAMシステム100によって受け取られ、メモリアレイ114に書き込まれ、次いで、メモリアレイ114から読み出され、DRAMシステム100によって送信されなければならないので、トレーニングプロセスが遅くなる場合がある。その上、図2のトレーニングプロセスは一般に、SoC102の起動中に行われるので、プロセスがかなりのブートメモリを必要とする場合があり、そのことが、ソフトウェアにさらなるオーバーヘッドを負わせることがある。
【００２１】
この点に関して、図3は、本明細書において開示する、ポート間ループバック接続を用い、したがってトレーニング中に図1のDRAMシステム100のメモリアレイ114にアクセスする必要性を回避したメモリトレーニングを実施するための、例示的なSoC300およびDRAMシステム302を示す。図3に見られるように、SoC300およびDRAMシステム302は、SoC300のポート304(0)〜304(X)、ならびにDRAMシステム302のポート306(0)〜306(X)およびメモリアレイ308を含む、図1のSoC102およびDRAMシステム100の要素に対応する要素を提供する。DRAMシステム302はさらに、ループバック接続310(0)〜310(1)を提供し、これらはそれぞれ、隣接するポート306(0)〜306(1)および306(2)〜306(X)を結合する。SoC300は、閉ループトレーニングエンジン312も含み、これは、図5に関して下記でより詳細に論じるように、いくつかの態様では、トレーニング信号314をDRAMシステム302に送り、DRAMシステム302から受け取られたトレーニング信号314を評価し得る。
【００２２】
いくつかの態様では、図3のSoC300およびDRAMシステム302を用いたトレーニングが、トレーニング信号314をDRAMシステム302の第1のポート(たとえばポート306(0))に送ることを含む。次いで、トレーニング信号314が、DRAMシステム302の第2のポート(たとえばポート306(1))に、ループバック接続(たとえばループバック接続310(0))を介してリレーされ、SoC300に送り戻される。次いで、トレーニング評価のために、第2のポート306(1)から受け取られたトレーニング信号314が、第1のポート306(0)に送られたトレーニング信号314と比較される。トレーニング信号314がメモリアレイ308に書き込まれる必要がないので、図3のポート間トレーニングは、図2の従来のトレーニングプロセスとは対照的に、「閉ループ」と考えられ得る。いくつかの態様では、ループバック接続310(0)〜310(1)を双方向であってよい。たとえば、第1のトレーニング段階では、トレーニング信号314が、SoC300からポート306(0)に送られ、ポート306(1)から受け取られてよく、一方、第2のトレーニング段階では、トレーニング信号314が、ポート306(1)に送られ、ポート306(0)から受け取られてよい。
【００２３】
図3のループバック接続310(0)〜310(1)の例示的な実装形態が、図4に示されている。図4では、SoC402のポート400(0)〜400(1)が、DRAMシステム406のポート404(0)〜404(1)に接続されている。DRAMシステム406のポート404(0)および404(1)の各々は、それぞれ、マルチプレクサ408(0)および408(1)を含む。SoC402の閉ループトレーニングエンジン410が、DRAMシステム406を、マルチプレクサ408(0)〜408(1)がDRAMシステム406のメモリアレイ412からデータを取り込むのではなく隣接するポート404(0)、404(1)からデータを選択するループバックモードにし得る。このようにして、SoC402は、メモリアレイ412からのデータではなく、ループバックを介したトレーニング信号(図示せず)を受け取り得る。一例示的態様では、図示されているように、ポート404(1)からポート404(0)へのループバックの場合には、マルチプレクサ408(0)を値「1」に設定し得、ポート404(0)からポート404(1)へのループバックの場合には、マルチプレクサ408(1)を値「1」に設定し得る。いくつかの態様では、本開示の範囲から逸脱することなく、ループバック接続を実現するために他の回路が設けられ得ることを理解されたい。
【００２４】
図5は、ポート間ループバック接続を用いたメモリトレーニングを実施するための、図3のSoC300およびDRAMシステム302の例示的な動作を示すフローチャートである。図5について説明する際に、分かりやすくするために、図3の要素が参照される。図5では、SoC300がオプションで、第1のポート306(0)および第2のポート306(1)に対するメモリ動作(図示せず)をディゼーブルする(ブロック500)ことから、動作が開始する。次いで、SoC300は、DRAMシステム302の第1のポート306(0)および第2のポート306(1)を、ループバック接続310(0)を介して通信するように構成する(ブロック502)ことができる。このようにして、第1および第2のポート306(0)および306(1)が、トレーニングに使用され得るとともに、ポート306(2)〜306(X)が、SoC300とDRAMシステム302との間のミッションモード通信に引き続き使用され得る。
【００２５】
次いで、SoC300は、閉ループトレーニングエンジン312によって提供されるトレーニング信号314をインクリメントまたはデクリメントする(ブロック504)ことができる。いくつかの態様では、トレーニング信号314は、初期には、1つまたは複数のインクリメンタルトレーニング信号314の様々な値の低値または高値を表し得る。トレーニング信号314は、非限定的な例としてタイミングトレーニングパラメータまたは電圧トレーニングパラメータのうちの1つまたは複数に対応し得る。次いで、第1のポート306(0)が、SoC300(たとえば閉ループトレーニングエンジン312)からトレーニング信号314を受け取る(ブロック506)。次に第1のポート306(0)は、トレーニング信号314を第2のポート306(1)に、ループバック接続310(0)を介して供給する(ブロック508)。次いで、第2のポート306(1)が、トレーニング信号314をSoC300に(たとえば閉ループトレーニングエンジン312に)供給する(ブロック510)。このようにして、いくつかの態様における閉ループトレーニングエンジン312は、トレーニング信号314を、ループバックを介して送信するとともに、DRAMシステム302の性能の属性を測定し得る。いくつかの態様では、トレーニング信号314は、第2のポート306(1)によって受け取られ、第1のポート306(0)にループバック接続310(0)を介して供給され、第1のポート306(0)によって、SoC300に供給され得る。この代替ループバック経路は、上記で説明したループバック経路の代わりにまたはそれに加えて、用いられ得る。
【００２６】
第2のポート306(1)からトレーニング信号314を受け取ると、閉ループトレーニングエンジン312は、トレーニング信号314に対応する1つまたは複数のトレーニング結果を決定する(ブロック512)ことができる。トレーニング結果は、非限定的な例として、閉ループトレーニングエンジン312によるトレーニング信号314の送受信中に経過したクロック周期数および/または検出されたエラー数を備え得る。次いで、SoC300は、トレーニング信号314がさらにインクリメントまたはデクリメントされるべきかどうかを決定する(ブロック514)ことができる。たとえば、SoC300は、一連の可能なトレーニング信号314が反復的にテストされる「パラメータスイープ(parameter sweep)」を実行するプロセスにあってよい。したがって、SoC300が決定ブロック514において、トレーニング信号314がさらにインクリメントまたはデクリメントされるべきである(すなわちパラメータスイープが完了していない)と決定した場合、処理がブロック504に戻り、トレーニング信号314のインクリメントまたはデクリメントされた値についてプロセスが繰り返す。このようにして、トレーニング信号314が、初期の低値から次第に高くなる値に、またはその逆に、反復的に修正され得、各トレーニング信号314について、トレーニング結果が記録され得る。
【００２７】
しかしながら、SoC300が決定ブロック514において、トレーニング信号314がさらにインクリメントまたはデクリメントされるべきではないと決定した場合、SoC300は、1つまたは複数のトレーニング結果に基づいて、DRAMシステム302に関するハードウェアパラメータを決定する(ブロック516)ことができる。いくつかの態様では、DRAMシステム302に関するハードウェアパラメータを決定することが、SoC300が、一連の1つまたは複数のインクリメンタルトレーニング信号の中で、最初にタイミング例外またはエラーメッセージを返したトレーニング信号314(すなわち最初に不合格になるインクリメンタルトレーニング信号)を特定することを含み得る。SoC300はさらに、一連の1つまたは複数のインクリメンタルトレーニング信号の中で、最後にタイミング例外またはエラーメッセージを返したトレーニング信号314(すなわち最後に不合格になるインクリメンタルトレーニング信号)を特定し得る。次いでSoC300は、いくつかの態様では、最初に不合格になるインクリメンタルトレーニング信号と、最後に不合格になるインクリメンタルトレーニング信号との間の中央値または中間点に基づいて、ハードウェアパラメータを決定し得る。
【００２８】
上記で図5に関して説明した動作は、ポート306(0)〜306(X)のすべてまたはサブセットについて繰り返され得ることを理解されたい。ハードウェアパラメータ(すなわち、非限定的な例としてタイミングパラメータまたは電圧パラメータ)が、ポート306(0)〜306(X)のうちの1つについて決定された後、上記で説明した動作が、ポート306(0)〜306(X)のうちの同じ1つについて、異なるハードウェアパラメータに関して反復され得ることを、さらに理解されたい。
【００２９】
本明細書において開示する態様による、ポート間ループバックを用いたDRAMシステムのメモリトレーニングの実施は、任意のプロセッサベースのデバイスにおいて実現されてもよく、それに統合されてもよい。例としては、それらに限定されないが、セットトップボックス、エンターテインメントユニット、ナビゲーションデバイス、通信デバイス、固定位置データユニット、モバイル位置データユニット、モバイル電話、セルラー電話、コンピュータ、ポータブルコンピュータ、デスクトップコンピュータ、携帯情報端末(PDA)、モニタ、コンピュータモニタ、テレビ、チューナ、ラジオ、衛星ラジオ、音楽プレーヤ、デジタル音楽プレーヤ、ポータブル音楽プレーヤ、デジタルビデオプレーヤ、ビデオプレーヤ、デジタルビデオディスク(DVD)プレーヤ、およびポータブルデジタルビデオプレーヤがある。
【００３０】
この点に関して、図6は、図3の態様によるSoC300および/またはDRAMシステム302を実現し得るプロセッサベースのシステム600の一例を示す。いくつかの態様では、プロセッサベースのシステム600は、図3のSoC300を備え得る。図6の例では、プロセッサベースのシステム600は、1つまたは複数のプロセッサ604をそれぞれが含む、1つまたは複数の中央処理装置(CPU)602を含む。CPU602は、一時的に記憶されたデータへの高速アクセスのためにプロセッサ604に結合されたキャッシュメモリ606を有し得る。CPU602は、システムバス608に結合され、プロセッサベースのシステム600内に含まれるデバイスを相互に結合させ得る。よく知られているように、CPU602は、これらの他のデバイスと、システムバス608を経由してアドレス情報、制御情報、およびデータ情報を交換することによって通信する。
【００３１】
システムバス608に、他のデバイスが接続され得る。図6に示されているように、これらのデバイスは、例として、メモリシステム610、1つまたは複数の入力デバイス612、1つまたは複数の出力デバイス614、1つまたは複数のネットワークインターフェースデバイス616、および1つまたは複数のディスプレイコントローラ618を含み得る。入力デバイス612は、入力キー、スイッチ、音声プロセッサなどを含むがそれらに限定されない、任意のタイプの入力デバイスを含み得る。出力デバイス614は、オーディオ、ビデオ、他の視覚的インジケータなどを含むがそれらに限定されない、任意のタイプの出力デバイスを含み得る。ネットワークインターフェースデバイス616は、ネットワーク620への、またそこからのデータ交換を可能にするように構成された、任意のデバイスとすることができる。ネットワーク620は、有線もしくはワイヤレスネットワーク、私設もしくは公衆ネットワーク、ローカルエリアネットワーク(LAN)、ワイドローカルエリアネットワーク(WLAN)、またはインターネットを含むがそれらに限定されない、任意のタイプのネットワークとすることができる。ネットワークインターフェースデバイス616は、所望の任意のタイプの通信プロトコルをサポートするように構成され得る。メモリシステム610は、メモリコントローラ622および1つまたは複数のメモリユニット624(0)〜624(N)を含み得る。いくつかの態様では、メモリシステム610は、図3の例示的な態様によるDRAMシステム302を含み得る。
【００３２】
CPU602は、1つまたは複数のディスプレイ626に送られた情報を制御するために、システムバス608を経由してディスプレイコントローラ618にもアクセスするように構成され得る。ディスプレイコントローラ618は、表示すべき情報を処理してディスプレイ626に適した形式にする1つまたは複数のビデオプロセッサ628を介して、表示すべき情報をディスプレイ626に送る。ディスプレイ626としては、陰極線管(CRT)、液晶ディスプレイ(LCD)、プラズマディスプレイなどを含むがそれらに限定されない、任意のタイプのディスプレイがあり得る。
【００３３】
本明細書において開示する態様に関連して説明した、様々な例示的な論理ブロック、モジュール、回路、およびアルゴリズムは、電子ハードウェアとして実装されてもよく、メモリ内または別のコンピュータ可読媒体内に記憶され、プロセッサまたは他の処理デバイスによって実行される命令として実装されてもよく、両方の組合せとして実装されてもよいことを、当業者ならさらに理解するであろう。本明細書において説明したデバイスは、例として、どの回路、ハードウェア構成要素、集積回路(IC)、またはICチップ内でも用いられ得る。本明細書において開示するメモリは、任意のタイプおよびサイズのメモリとすることができ、所望の任意のタイプの情報を記憶するように構成され得る。この交換可能性を明確に示すために、様々な例示的な構成要素、ブロック、モジュール、回路、およびステップについては上記で、それらの機能の観点から一般的に説明してきた。そのような機能がどのように実装されるかは、特定の適用分野、設計選択、および/またはシステム全体に課された設計制約によって決まる。当業者なら、説明した機能を、特定の各適用分野について様々な形で実装し得るが、そのような実装形態の決定は、本開示の範囲からの逸脱を生じさせるものと解釈すべきではない。
【００３４】
本明細書において開示する態様に関連して説明した、様々な例示的な論理ブロック、モジュール、および回路は、プロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)もしくは他のプログラマブル論理デバイス、別個のゲートもしくはトランジスタ論理回路、別個のハードウェア構成要素、または本明細書において説明した機能を実施するように設計された、それらの任意の組合せを用いて実装されてもよく、実施されてもよい。プロセッサは、マイクロプロセッサとすることができるが、代替実施形態では、プロセッサは、任意の従来型のプロセッサ、コントローラ、マイクロコントローラ、または状態機械とすることもできる。プロセッサはまた、コンピューティングデバイスの組合せ、たとえばDSPとマイクロプロセッサの組合せ、複数のマイクロプロセッサ、1つもしくは複数のマイクロプロセッサとDSPコアとの併用、または任意の他のそのような構成として実装され得る。
【００３５】
本明細書において開示する態様は、ハードウェアとして具現化され得、またハードウェア内に記憶され、たとえばランダムアクセスメモリ(RAM)、フラッシュメモリ、リードオンリーメモリ(ROM)、電気的プログラマブルROM(EPROM)、電気的消去可能プログラマブルROM(EEPROM)、レジスタ、ハードディスク、リムーバブルディスク、CD-ROM、または当技術分野において知られる任意の他の形態のコンピュータ可読媒体内にあり得る、命令として具現化され得る。例示的な記憶媒体がプロセッサに、プロセッサがその記憶媒体から情報を読み出し、またそこに情報を書き込み得るように結合される。代替実施形態では、記憶媒体はプロセッサと一体であり得る。プロセッサおよび記憶媒体は、ASIC内にあり得る。ASICはリモート局内にあり得る。代替実施形態では、プロセッサおよび記憶媒体は、別個の構成要素としてリモート局、基地局、またはサーバ内にあり得る。
【００３６】
本明細書における例示的な態様のいずれかにおいて説明した動作ステップが、例および議論を提供するために説明されていることにも留意されよう。説明した動作は、示したシーケンス以外の多数の異なるシーケンスで実施され得る。さらに、単一の動作ステップにおいて説明した動作は、実際にはいくつかの異なるステップにおいて実施され得る。さらに、例示的な態様において論じた1つまたは複数の動作ステップは、組み合わされ得る。当業者には容易に明らかとなるように、フローチャート図に示した動作ステップに、多数の異なる修正が加えられ得ることを理解されたい。情報および信号が、様々な異なる技術および技法のいずれかを用いて表され得ることも、当業者なら理解されよう。たとえば、上記の説明全体にわたって参照される場合があるデータ、命令、コマンド、情報、信号、ビット、シンボル、およびチップは、電圧、電流、電磁波、磁場もしくは磁性粒子、光場もしくは光学粒子、またはそれらの任意の組合せによって表され得る。
【００３７】
本開示についての先の説明は、いかなる当業者でも本開示を作製または使用できるようにするために提供されている。本開示に対する様々な修正形態が、当業者には容易に明らかとなり、本明細書において規定される一般原理は、本開示の趣旨または範囲から逸脱することなく、他の変形形態に適用され得る。したがって、本開示は、本明細書において説明した例および設計に限定されるものではなく、本明細書において開示される原理および新規な特徴に合致する最も広い範囲を与えられるべきである。
【符号の説明】
【００３８】
300  SoC
302  DRAMシステム
304(0)〜304(X)  ポート
306(0)  第1のポート
306(1)  第2のポート
306(2)〜306(X)  ポート
308  メモリアレイ
310(0)〜310(1)  ループバック接続
312  閉ループトレーニングエンジン
314  トレーニング信号、インクリメンタルトレーニング信号
400(0)〜400(1)  ポート
402  SoC
404(0)〜404(1)  ポート
406  DRAMシステム
408(0)〜408(1)  マルチプレクサ
410  閉ループトレーニングエンジン
412  メモリアレイ
600  プロセッサベースのシステム
602  中央処理装置(CPU)
604  プロセッサ
606  キャッシュメモリ
608  システムバス
610  メモリシステム
612  入力デバイス
614  出力デバイス
616  ネットワークインターフェースデバイス
618  ディスプレイコントローラ
620  ネットワーク
622  メモリコントローラ
624(0)〜624(N)  メモリユニット
626  ディスプレイ
628  ビデオプロセッサ
【図１】
0006517221.tif 000002
【図２】
0006517221.tif 000003
【図３】
0006517221.tif 000004
【図４】
0006517221.tif 000005
【図５】
0006517221.tif 000006
【図６】
0006517221.tif 000007