JP2017523488A - メモリ物理層インタフェースのトレーニング用統合型コントローラ - Google Patents

メモリ物理層インタフェースのトレーニング用統合型コントローラ Download PDF

Info

Publication number
JP2017523488A
JP2017523488A JP2016558772A JP2016558772A JP2017523488A JP 2017523488 A JP2017523488 A JP 2017523488A JP 2016558772 A JP2016558772 A JP 2016558772A JP 2016558772 A JP2016558772 A JP 2016558772A JP 2017523488 A JP2017523488 A JP 2017523488A
Authority
JP
Japan
Prior art keywords
training
memory
phy
training engine
sequence
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2016558772A
Other languages
English (en)
Other versions
JP2017523488A5 (ja
Inventor
エイ. ダース グレン
エイ. ダース グレン
タルボット ジェリー
タルボット ジェリー
カシェム アンワー
カシェム アンワー
プレーテ エドアルド
プレーテ エドアルド
アミック ブライアン
アミック ブライアン
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Advanced Micro Devices Inc
Original Assignee
Advanced Micro Devices Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Advanced Micro Devices Inc filed Critical Advanced Micro Devices Inc
Publication of JP2017523488A publication Critical patent/JP2017523488A/ja
Publication of JP2017523488A5 publication Critical patent/JP2017523488A5/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4063Device-to-bus coupling
    • G06F13/4068Electrical coupling
    • G06F13/4072Drivers or receivers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • G06F13/1689Synchronisation and timing concerns

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Memory System (AREA)
  • Human Computer Interaction (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Logic Circuits (AREA)

Abstract

メモリ物理層インタフェース(PHY)(140,205)に統合されたコントローラ(215)は、ダイナミックランダムアクセスメモリ(DRAM)等の関連する外部メモリ(135)と通信するためのメモリPHYを構成するのに用いられるトレーニングを制御するために使用可能であり、これにより、BIOS(120)とメモリPHYとの間のデータパイプライン上でトレーニングシーケンスを提供する必要性が取り除かれる。例えば、メモリPHYに統合されたコントローラ(215)は、トレーニングアルゴリズムに基づいて、外部メモリと通信するためのメモリPHYの読み出しトレーニング及び書き込みトレーニングを制御することができる。このトレーニングアルゴリズムは、トレーニングアルゴリズムによって生成されたトレーニングシーケンス又はコマンドが通過する信号経路を特徴付けるシード情報をBIOSから受信することなく、メモリPHYと外部メモリとの間のタイミング遅延及び電圧オフセットの解決に向けて収束する、シードレストレーニングアルゴリズムであってもよい。【選択図】図1

Description

本願は、概して処理システムに関し、具体的には、処理システムのメモリ物理レイヤインタフェースに関する。
システムオンチップ(systems-on-a-chip:SOC)等の処理システムは、メモリを用いて、データ又は命令を後に使用するために記憶する。例えば、SOCは、命令又はデータをメモリから読み出し、命令又はデータを用いて演算を実行し、結果をメモリに書き戻すことの可能な中央処理装置(CPU)、画像処理装置(GPU)、加速処理装置(APU)等の処理装置を含み得る。処理システムは、ダイナミックランダムアクセスメモリ(DRAM)等のメモリモジュールへのアクセスを制御するメモリ物理レイヤインタフェースを含む得る。DRAMを用いて情報を記憶することにより、処理システムの動作中に処理装置から記憶情報にアクセスできるようになっている。処理システムのメモリ物理レイヤインタフェースは、従来、「メモリPHY」と呼ばれている。メモリコントローラは、通常、メモリPHYの動作を制御するために用いられる。
メモリPHYは、通常、DRAMからのデータの読み出し又はDRAMへのデータの書き込みを正確に行うことが可能になる前に、メモリPHYとDRAMとの間のインタフェースを介してやり取りされるシーケンスを用いてトレーニングされる。インタフェーストレーニングの手順は、読み出し及び書き込み用のインタフェースエンドポイントでのコマンド発行とデータサンプルタイミングとの比較的粗い同期を実行するためのグローバルインタフェース初期化のメカニズム(a global interface initialization mechanism)を含んでもよい。このグローバル同期のためのトレーニングシーケンスは、例えば、「バブル(bubble)」と呼ばれ得るコマンドギャップを用いて周期的な形に区切られた、DRAMコマンドの連続的なストリームによって構築されてもよい。このシーケンスは、連続的なストリーム内の粗く/汎用的なインタフェースのタイミングをフレーム化又は同期化するために用いることの可能な一連の時間/イベントマーカを生成する。その後、より精密な信号毎のトレーニング手順を用いて、データ信号をサンプリングするための最適なタイミング及び電圧オフセットを検出してもよい。信号毎のトレーニング手順用のトレーニングシーケンスは、DRAMから読み出され及び/又はDRAMに書き込まれる複数の「1」及び複数の「0」のランダムな組み合わせを含んでもよい。トレーニングシーケンスに応じてDRAMから戻される信号は、「データアイ(data eye)」の輪郭(contour)を決定するのに用いられるが、データアイの輪郭は、時間と電圧の関数としてデータ信号の値を表す、立上りエッジ、立下りエッジ及び高位/低位電圧を示すプロットである。
従来のトレーニング手順は、処理システムのプロセッサで動作するBIOSコードによって起動される。しかし、BIOSは、通常、メモリPHYから論理的又は物理的に離れている。例えば、BIOSとメモリPHYとは、データパイプライン、メモリキャッシュ及びバッファによって分離され得る。これらの介在するインタフェース及びサブシステムブロックは、BIOSから送信されたトレーニング制御及びデータのシーケンスを歪ませ、又は、変更する場合がある。例えば、トレーニングシーケンスにバブルが加わって、効率的なトレーニングアルゴリズムの検出を更に困難にする場合がある。このため、BIOSは、通常、複雑なトレーニング制御シーケンスのシーディング(seeding)及びデータ後処理スキームをトレーニングコードに組み込むことになる。この両方のアプローチには、重大な欠陥がある。例えば、後処理中にデータを移動、マイニング及び操作するために追加の時間が必要となることによって、トレーニングを実行するのに必要な時間全体が増加する。合計トレーニング時間配分が固定されている場合には、後処理で費やす追加の時間が必要となれば、他の処理で時間を節約して、全体的なトレーニング時間を配分内に収まるようにしなければならない。時間の節約は、より短いパターンの実行によって可能になるが、その結果、より大きなトレーニングエラーを引き起こす可能性がある。別の例では、アルゴリズムが収束するのを妨げる可能性のある上記パイプラインの課題が回避されるシステム状態からトレーニングを開始するために、トレーニングシーケンスのシーディングが用いられるが、初期システム状態を正確に定義するために適切なシード値を検出するには、システム及びプラットフォームの徹底的な特徴抽出が必要となる。シード値は、データパイプライン、メモリPHY、又は、BIOSからメモリPHYを経由してDRAMに至り、そしてBIOSへと戻る、他の論理的又は物理的な実体を特徴付ける情報を含んでもよい。各シード値は、各処理システム又はDRAMの実装に対して研究施設で特徴付けられなければならない。したがって、生成しなければならないシード情報の量及び種類は、システム及び関連するメモリデバイスの数と多様性とが増加するにつれて急速に拡大しており、これにより、BIOSコードのサイズが増大し、BIOSの保守がさらに困難になる可能性がある。
本開示は、添付図面を参照することによってより良く理解され、本開示の多くの特徴及び利点が当業者において明らかとなる。異なる図面で用いられる同じ符号は、同様又は同一のアイテムを示している。
いくつかの実施形態による、1つ以上の中央処理装置(CPU)プロセッサコアと画像処理装置(GPU)とを含む加速処理装置(APU)のブロック図である。 いくつかの実施形態による、メモリPHYとDRAMとを含む処理装置の一部のブロック図である。 いくつかの実施形態による、図1に示すAPU等の処理装置に実装され得るメモリPHYをトレーニングする方法のフロー図である。 いくつかの実施形態による、処理システムの構成要素の少なくとも一部を実装する集積回路装置を設計及び製造する方法を示すフロー図である。
上述したように、BIOSとメモリPHYとの間のデータパイプラインは、DRAMに提供されるトレーニングシーケンスのタイミングを制御するためにBIOSに実装され得る効率的なトレーニングアルゴリズムを検出することを、より困難にし得る。さらに、トレーニングシーケンスの変更があると、BIOS内のトレーニングアルゴリズムが、DRAMによって戻される信号を処理することがより困難になる。トレーニングアルゴリズムをBIOSからメモリPHYに移動させることによって、データパイプラインに起因するトレーニングシーケンスの歪みを補償するために実行される、後処理で組み込まれるシステムの時間割当てに関するプレッシャーが軽減可能となり、これにより、タイミングシーケンスのタイミング制御が改善される。また、いくつかの実施形態では、トレーニングアルゴリズムのシーディングの必要性を軽減し又は無くすことができる。さらに、トレーニングアルゴリズムをメモリPHYに実装することによって、メモリPHYを実装するのに用いられるハードウェアの設計を簡素化し、技術者が、処理システムに適合したより効率的なトレーニングアルゴリズムを生成することが可能になる。さらにまた、(例えば、メモリPHYを実装するのに用いられるハードウェアの一部としての)ハードウェアにトレーニングアルゴリズムの実施形態を実装することによって、テストを「高速に」実行することが可能となるが、これは、コマンド及びトレーニングシーケンスがDRAMインタフェースの最大レートで送信可能であることを意味する。
いくつかの実施形態では、メモリPHY内のマイクロコントローラ等の統合型コントローラが、関連するDRAMと通信するためのメモリPHYを構成するのに用いられるトレーニングアルゴリズムを制御するために使用可能であり、これによって、BIOSとメモリPHYとの間のデータパイプライン上でトレーニングシーケンスを提供する必要性を取り除く。この結果、トレーニングアルゴリズムは、シードレストレーニングアルゴリズムとして実装することができるが、この理由は、トレーニングシーケンスがデータパイプライン上で搬送される際の歪み又は変更への対処を行う必要が無いからである。本明細書で用いられるように、「シード」情報とは、トレーニングアルゴリズムによって生成されたトレーニングシーケンス又はコマンドが通過する信号経路を特徴付ける情報を指す。トレーニングアルゴリズムは、シード情報を用いて、トレーニングアルゴリズムが同期解決に向けて収束するように初期システム状態を確立するが、これにより、戻り信号の後処理は、メモリPHYと関連するDRAMとの間のフェーズ差異(つまり、タイミング遅延)及び電圧オフセットに対する解決に向けて収束することができる。このため、「シード有り」のトレーニングアルゴリズムは、収束のためのシード情報を必要とする。一方、「シード無し」のトレーニングアルゴリズムは、シード情報を用いて初期状態を確立せずに、同期解決に向けて収束することができる。しかしながら、いくつかの実施形態においては、BIOSは、シードレストレーニングアルゴリズムによって使用可能な構成情報(例えば、DRAMの構成を識別する情報等)を、収束の確認をするのに当該情報が不要の可能性があるとしても、提供してよい。
いくつかの実施形態では、マイクロコントローラは、DRAMに送信されるプログラム可能なコマンドシーケンスを生成する第1のトレーニングエンジンと、トレーニングシーケンスを生成する第2のトレーニングエンジンと、DRAMから受信したトラフィックを、DRAMに提供されるトレーニングシーケンスに基づいて当該トラフィックの期待値と比較する第3のトレーニングエンジンと、に接続されている。例えば、第3のトレーニングエンジンは、1つ以上の送信されたトレーニングシーケンスを、受信した信号と関連付けて、送信シーケンスと受信シーケンスとの間のタイミング遅延を判定してもよい。また、第3のトレーニングエンジンは、メモリPHYによって用いられるタイミング又は電圧のオフセットを調整してもよい。第1のトレーニングエンジンは、第2及び第3のトレーニングエンジンによって実行されるタスクの実行を順序付けしてもよい。
図1は、いくつかの実施形態による、1つ以上の中央処理装置(CPU)プロセッサコア105,110と、画像処理装置(GPU)115と、を含む加速処理装置(APU)100のブロック図である。APU100は、システムオンチップ(SOC)として実装され得る。CPUプロセッサコア105,110は、命令を、個別に、同時に、又は、並列に実行することができる。図1に示すAPU100は、2つのCPUプロセッサコア105,110を含んでいるが、本開示の利益を享受する本技術分野の当業者であれば、APU100内のプロセッサコアの数が設計事項であることを理解できるであろう。APU100のいくつかの実施形態は、図1に示す2つのCPUプロセッサコア105,110よりも多い又は少ないCPUプロセッサコアを含み得る。GPU115は、ディスプレイに出力するのに用いられる視覚画像を生成するためのものである。また、GPU115のいくつかの実施形態は、複数の処理コア(図示省略)を含み得る。
CPUプロセッサコア105は、ハードウェア、ファームウェア、ソフトウェア、又は、ハードウェア、ファームウェア及びソフトウェアの組み合わせとして実装することの可能な基本入出力システム(BIOS)120を含む。BIOS120のいくつかの実施形態は、例えばAPU100を含むシステムの電源が投入され又は当該システムが起動すると、APU100の構成要素を初期化又はテストするのに用いられる。BIOS120は、オペレーティングシステムを読み込むのに用いられてもよい。BIOS120が生成する命令又はコマンドは、1つ以上のデータパイプライン(図1では省略)を用いて、APU100内の他のロケーションに伝送され得る。BIOS120は、別の構成として、CPUプロセッサコア110内に実装されてもよいし、APU100内の他のロケーションに実装されてもよい。
また、図1に示すAPU100は、他のSOCロジック125を含む。他のSOCロジック125のいくつかの実施形態は、アドレスを生成するとともに、メモリリードサイクル又はメモリライトサイクルを開始するDMAエンジン(図示省略)、メモリ間のデータ転送を行うDMAエンジン(図示省略)、又は、データをCPUプロセッサコア105,110間若しくはCPUプロセッサコアとGPU115との間で転送するDMAエンジン(図示省略)を含み得る。さらに、他のSOCロジック125は、ルーティングロジック、コヒーレンシロジック、又は、他の機能を実行するロジックを含んでもよい。他のSOCロジック125のいくつかの実施形態は、APU100と、外部のDRAM135等の他のメモリとの間のデータフローを調整するメモリコントローラ(MC)130を含む。メモリコントローラ130は、外部メモリからの情報の読み出し及び外部メモリへの情報の書き込みを制御するのに用いられるロジックを含む。また、メモリコントローラ130は、リフレッシュロジックを含んでもよく、このリフレッシュロジックを用いて情報をDRAMに定期的に再書き込みして、DRAMのメモリセル内の情報が保持されてもよい。DRAMのいくつかの実施形態は、ダブルデータレート(DDR)DRAMであってもよく、この場合には、メモリコントローラ130は、メモリクロックの立上り及び立下りエッジの両方において、DRAMへの又はDRAMからのデータ転送を行ってもよい。
メモリコントローラ130は、DRAM135等の他のメモリモジュールの動作を、メモリPHY140と呼ばれ得るメモリ物理レイヤインタフェース140を介して送信された信号を用いて制御してもよい。メモリPHY140は、APU100に接続され得る他のメモリモジュールの動作を決定する信号を駆動するのに用いられる回路を含む。例えば、メモリPHY140は、DRAM135等のメモリモジュールの一部からの読み出し、当該一部への書き込み、当該一部のリフレッシュ又は当該一部の消去を制御する信号を提供してもよい。メモリPHY140は、異なる動作点で動作可能であってもよく、これらの動作点は、メモリPHY140の動作周波数及び/又は動作電圧によって決定されてもよい。例えば、他のSOCロジック125は、メモリPHY140及び/又はメモリコントローラ130内の同期を決定するクロック信号と、メモリPHY140及び/又はメモリコントローラ130が用いる電圧を決定する基準電圧(VDD)150と、を提供するクロック145を含んでもよい。
メモリPHY140をトレーニングして、メモリPHY140とDRAM135との間の通信中の読み出し性能又は書き込み性能を向上させる必要がある。したがって、メモリPHY140は、集積トレーニング制御ロジック155を含み、集積トレーニング制御ロジック155を用いて、トレーニングシーケンス又はコマンドの生成、トレーニングシーケンス又はコマンドのDRAM135への送信、シーケンス又はコマンドの送信に応じてDRAM135が生成した信号の受信、及び、DRAM135からの応答に基づくメモリPHY140のリードパラメータ/ライトパラメータの調整を行う。
トレーニング制御ロジック155をメモリPHY140に統合化することは、BIOS120に実装されたアルゴリズムを用いてメモリPHY140のトレーニングを行う従来の方法に対して数々の利点がある。トレーニング制御ロジック155によって用いられるトレーニングアルゴリズムの後処理及び/又はシーディングは、BIOS120とメモリPHY140との間のデータパイプライン上でトレーニングシーケンスを送信する必要をなくすことによって、軽減され又は取り除かれてもよい。さらに、メモリPHY140のトレーニングをサポートするトレーニング制御ロジック155をメモリPHY140に組み込むことは、BIOS120がメモリPHY140のトレーニングをサポートするように設計することと比べて複雑さが極めて減少する。例えば、BIOSトレーニングアルゴリズムを設計するためには、極めて多量の複雑なメモリPHY初期化及び制御の詳細を、BIOSトレーニングアルゴリズムの設計を担う技術者に伝えなければならない。例えば、メモリPHY140は、タイミングを定義し、周波数をロックする等のために用いられる何百ものレジスタ(明瞭性を考慮して図1では省略)を含み、各レジスタは、正確なシーケンスで初期化されアクセスされなければならない。BIOS技術者は、メモリPHY140の動作に詳しくなく、少なくともメモリPHY140の設計を担う技術者と比較してメモリPHY140の動作をよく知らない可能性がある。メモリPHYのトレーニングアルゴリズムの設計責任をメモリPHY技術者の手に委ねるのは、より効率的な設計につながり、これにより、トレーニングアルゴリズムのシーディングの必要性を減らすことにある。また、多重のPHYインスタンスのトレーニングをシリアルに行なければならず、BIOSの修正は、新たなトレーニングコードのリリース及び研究施設でのシード情報の特徴抽出と強く結びついている。さらに、BIOSトレーニングアルゴリズムを用いてメモリPHY140をトレーニングする前に、BIOS120とメモリPHY140との間のデータパイプラインをサポートするためにAPU100内の多数のブロックが構成され実行中であることが必要になる場合があることから、各ターゲットプラットフォームの市場への投入までの時間が増加し得る。
図2は、いくつかの実施形態による、図1に示すメモリPHY140及びDRAM135等のメモリPHY205及びDRAM210を含む処理装置の一部200のブロック図である。メモリPHY205は、コントローラ215を含み、コントローラ215を用いて、DRAM210と通信するメモリPHY205に対するリードトレーニング及びライトトレーニングを、トレーニングアルゴリズムに基づいて制御する。コントローラ215のいくつかの実施形態は、ハードウェア、ファームウェア、ソフトウェア、又は、ハードウェア、ファームウェア及びソフトウェアの組み合わせとして実装されてもよい。コントローラ215は、いくつかの実施形態では、マイクロコントローラ215と呼ばれ得る。コントローラ215は、メモリPHY205と一体に設けられており、これにより、データパイプラインを介してメモリPHY205から分離されていないので、コントローラ215が実行するトレーニングアルゴリズムは、シードレストレーニングアルゴリズムとなり得る。本明細書で述べるように、シードレストレーニングアルゴリズムは、例えば返送信号を後処理するために、トレーニングアルゴリズムによって生成されたトレーニングシーケンス又はコマンドが通過する信号経路又はデータパイプラインを特徴付ける情報を用いて構成される必要がない。コントローラ215は、電源が投入された場合、垂直帰線周波数が変化した場合、電源状態が所定の周波数で定期的に移行した場合(例えば、アイドル状態と起動状態との間で)、又は、他のイベント若しくは信号が発生した場合に、トレーニングを開始してもよい。
コントローラ215は、例えば図1に示すBIOS120等のBIOSと情報交換してもよい。いくつかの実施形態では、BIOSは、例えばローカルスタティックランダムアクセスメモリ(SRAM)等のメモリアレイを読み出すことによって、DRAM210に関連する構成情報を提供することによって、又は、システムが起動するとトレーニングシーケンスを開始するようにコントローラ215に指示することによって、コントローラ215を構成してもよい。しかしながら、コントローラ215が構成されると、コントローラ215のいくつかの実施形態は、メモリPHY205に対するトレーニングを、BIOSから殆ど独立して、且つ、BIOSからの入力が殆ど行われることなく制御することができる。例えば、コントローラ215は、BIOSから独立して動作し、且つ、メモリPHY205を、トレーニングコマンド又はトレーニングシーケンスをBIOSから受信することなくトレーニングすることの可能なトレーニングアルゴリズムを実行する。コントローラ215は、メモリPHY205に対するトレーニングを、BIOSからコントローラ215に対してデータパイプラインを介して送信される必要のある入力がBIOSから行われることなく制御することができるので、トレーニングアルゴリズムは、シードレストレーニングアルゴリズムとして実装することができる。
コントローラ215は、アドレスコマンドステートマシン(ACSM)220と呼ばれ得る第1トレーニングエンジン220に接続されている。ACSM220は、メモリPHY205のトレーニング中にDRAM210に提供可能なコマンドを生成する。プログラム可能なコマンドは、メモリPHY205の集積部分としてハードウェアに実装される第1トレーニングエンジン220の実施形態に対応して「高速に(at speed)」生成することができる。コマンドは、コントローラ215によって決定されたシーケンス内で複数のレジスタ(図示省略)に記憶されてもよい。その後、コマンドは、コントローラ215がACSM220内の制御レジスタに開始ビットを書き込むのに応じて、DRAM210に発行されてもよい。ACSM220によって生成されたコマンドは、DRAM210の指定されたロケーションから情報を読み出すリードコマンドと、DRAM210の指定されたロケーションに情報を書き込むライトコマンドと、を含んでもよい。ACSM220のいくつかの実施形態は、リードコマンド及びライトコマンドを同時に合成するループバックコマンドを生成してもよい。ループバックコマンドは、メモリPHY205の物理ピンに送られる信号を駆動する。この信号は、メモリPHY205を通過する経路に沿って返送される。したがって、DRAM210をメモリPHY205の物理ピンに接続するのを必要とせずに、ループバックコマンドを用いてメモリPHY205をテストすることができる。ACSM220のいくつかの実施形態は、ループコマンドを生成してもよく、ループコマンドは、1つ以上のコマンドを、指定された遅延時間をコマンド間に挟んで繰り返し実行することによって、実行中に単一命令をループ又は繰り返し、複数のコマンドを順次ループ等する。
コントローラ215は、PRBSパターン生成器チェッカ(PPGC)225と呼ばれ得る第2のトレーニングエンジン225に接続されてもよい。PPGC225のいくつかの実施形態は、プログラム可能であり、メモリPHY205のトレーニング用のトレーニングシーケンスとして用いられるデータストリームを生成することができる。例えば、PPGC225は、コントローラ215によって提供された信号に応じて、16ビット以下の多項式に対するデータストリームを生成してもよい。PPGC225のいくつかの実施形態は、トレーニングシーケンスを生成するのに用いられる独立した生成器235と、メモリPHY205とDRAM210との間を流れるトレーニングシーケンスを含む読み出し又は書き込みストリームの同期をチェックするのに用いられるチェッカ230と、を含む。PPGC225の動作は、ACSM220から受信した信号によって制御されてもよい。例えば、ACSM220は、生成器235におけるトレーニングシーケンスの生成等の動作の実行を順序付ける信号を提供してもよい。
コントローラ215は、データトレーニング状態マシン(DTSM)240と呼ばれ得る第3のトレーニングエンジン220に接続されてもよい。DTSM240は、DRAM210から受信したトラフィックを、DRAM210に提供されたトレーニングシーケンスと比較して、メモリPHY205によって用いられるタイミングパラメータ又は電圧オフセットパラメータを調整するか否かを決定する。例えば、PPGC225は、メモリPHY205の読み出しトレーニング又は書き込みトレーニングの間にDRAM210から戻されるシーケンスとの比較のために、トレーニングシーケンスの表現(representation)をDTSM240に提供してもよい。トレーニングのループを開始する前に、コントローラ215は、メモリPHY205によって使用されるタイミングパラメータ又は電圧オフセットパラメータを制御するために、DTSM240を構成してもよい。次に、コントローラ215は、1つ以上のトレーニングシーケンスを駆動するためにACSM220及びPPGC225をプログラムしてもよい。次に、DTSM240は、PPGC225によって生成されたトレーニングシーケンスを、DRAM210から受信したシーケンスと比較する。例えば、DTSM240は、複数の異なる遅延においてトレーニングシーケンスと受信シーケンスとを関連付けてもよい。比較に基づき、DTSM240は、比較に基づき、タイミングパラメータ又は電圧オフセットパラメータを調整するか否かを決定するが、これは、例えば、これらのパラメータの1つ以上を増加又は減少させることによって行う。例えば、タイミングオフセットは、トレーニングシーケンス及び受信シーケンスの相互関係に基づき決定される遅延に基づいて、増加又は減少しても良い。DTSM240のいくつかの実施形態は、データ輪郭アイ位置(data contour eye position)に対するトレーニングのための上位又は下位閾値比較ロジックを有するデータフィルタ又は2進加算器も実装してよい。
先入れ先出し(FIFO)バッファのセットを用いて、トレーニングシーケンスを、DRAM210に提供される前にバッファしてもよいし、受信シーケンスを、DRAM210から受信した後にバッファしてもよい。例えば、送信FIFOバッファ245のセットを用いて発信トラフィックをバッファしてもよいし、受信FIFOバッファ250のセットを用いて着信トラフィックをバッファしてもよい。1つ以上の受信機255を用いて、DRAM210に至るチャネルを介して信号を受信してもよいし、当該信号を受信FIFOバッファ250に提供してもよい。1つ以上のドライバ260,265を用いて、信号を、送信FIFOバッファ245からチャネルを介してDRAM210に送信してもよい。例えば、チャネル270で伝送されるデータ信号(DQ)又はタイミング信号(DQS)を、ドライバ260を用いて駆動してもよい。また、受信機255は、データ信号(DQ)又はタイミング信号(DQS)を、チャネル270を介して受信してもよい。別の例の場合、ドライバ265を用いて、アドレス(ADDR)又はコマンド(CMD)を、DRAM210に至るチャネル275を介して駆動してもよい。受信機255又はドライバ260,265によって用いられるタイミング遅延時間及び電圧オフセットは、調整されてもよい。
メモリPHY205は、タイミング/電圧制御ロジック280を含む。DTSM240は、信号をタイミング/電圧制御ロジック280に提供して、タイミングパラメータに対する調整を指示してもよい。例えば、DTSM240は、タイミング/電圧制御ロジック280に指示して、タイミング遅延時間又は電圧オフセットを、DRAM210に提供されたトレーニングシーケンスとDRAM210から受信したシーケンスとの比較結果に基づいてインクリメント又はデクリメントしてもよい。次に、タイミング/電圧制御ロジック280は、制御信号を受信機255又はドライバ260,265に提供して、受信機255又はドライバ260,265が使用するタイミング遅延時間又は電圧オフセットを調整してもよい。タイミング/電圧制御ロジック280のいくつかの実施形態を用いて、タイミング遅延時間又は電圧オフセットを、受信イネーブル段階、書き込み平準化段階、リードトレーニング段階、ライトトレーニング段階、及び、メモリPHY205とDRAM210との間のインタフェースについてのデータアイ輪郭(data eye contour)の電圧レベルを決定する段階等の複数の段階で調整してもよい。
図3は、いくつかの実施形態による、図1に示す加速処理装置100等の処理装置に実装され得るメモリPHYをトレーニングする方法300のフロー図である。方法300の実施形態は、図1に示すトレーニング制御ロジック155、又は、図2に示すコントローラ215、ACSM220、PPGC225、DTSM240及びタイミング/電圧制御ロジック280等のトレーニング制御ロジックに実装されてもよい。
ブロック305において、トレーニング制御ロジックは、受信イネーブルトレーニング(receive enable training)を実行してメモリPHYを有効にすることによって、DRAMとのインターフェースを介してデータを受信可能な時点を決定する。いくつかの実施形態は、受信イネーブルトレーニングを、リードコマンドを送信して選択アドレスをDRAMから読み出すことによって実行する。DRAMから受信した信号に含まれる対応するバブルシーケンスを生成するバブルシーケンス(sequence of bubbles)をリードコマンドに点在させる。次に、トレーニング制御ロジックは、DRAMから受信した信号をモニタリングして、メモリPHY内のコマンド生成時刻を、DRAMからのコマンド応答がメモリPHYに返送される時刻に一致させる。バブル間の時間間隔範囲は、最悪時の往復遅延時間に経路内の全ての内部メモリPHY遅延時間及びDRAM遅延時間を加算した値よりも大きくなるように時間長が設定される。これにより、応答がより速く又はより遅くなることに関連してコマンド応答について起こり得るエイリアシングを必ず回避することができる。メモリPHYは、受信イネーブルトレーニング段階において読み出し状態を常時保持するように構成することができる。例えば、コントローラ215は、ACSM220、PPGC225及びDTSM240を構成することができ、次いでトレーニング段階を開始することができる。ACSM220は、コマンド/アドレスを発行してトレーニングシーケンスをDRAM210に書き込むことができ、次に、コマンド/アドレスを発行してトレーニングシーケンスをDRAM210から読み戻すことができる。いくつかの実施形態では、情報は、コマンドが発行されるとDRAM210に実際に書き込まれることがなく、DQバスを無視する。返送DQSのみがモニタリングされる。したがって、発行コマンドは、リードコマンドと同様であるが、DTSM240は、何れのデータがコマンドに応答して返送されるかについて気付かない。DTSM240は、DRAM210から返送されるDQSストローブのタイミングを調整することにのみ注意する。トレーニングシーケンスは、PPGC225により生成され、DRAM210に提供することができる。次に、DTSM240は、DRAM210からの受信データをトレーニングシーケンスに関連付けて往復遅延時間を特定し、タイミング/電圧制御ロジック280に指示することにより、パラメータを受信機255及びドライバ260,265等の適切な受信機/ドライバについて調整して、検出した往復遅延時間をゼロにすることができる。
ブロック310では、トレーニングロジックは、書き込み平準化を実行して、メモリPHYが用いるクロック信号を、DRAMが用いるクロック信号に一致させる。したがって、トレーニングロジックのいくつかの実施形態は、メモリPHYクロック信号及びタイミング(DQS)信号を送信することができ、タイミング(DQS)信号を用いて、DRAMにおけるクロック値をサンプリングする。次に、トレーニングロジックは、DQバスで返送されたDRAMクロックのサンプリング値を用いて、例えば遅延時間を生じさせてDQS信号の位相をDRAM内のメモリクロック位相に一致させることによって、メモリPHYクロック及びDRAMクロックを一致させる。例えば、コントローラ215から信号を受信すると、ACSM220はライトコマンドを生成することができ、このライトコマンドによって、立ち上がりエッジを含むメモリPHYクロック信号、及び、DRAM210に供給されるDQS信号にDRAM内のメモリクロックをサンプリングさせる。ライトコマンドは、本明細書で述べるように、レジスタ222から読み出される情報に基づいて生成することができる。次に、DRAMクロックのサンプリング値は、メモリPHY205に返送することができる。PPGC225内のチェッカ230は、内部比較値を生成し、この値をDTSM240に提供する。次に、DTSM240は、内部比較値を、DRAM210から受信したサンプリングクロック信号値と比較することができ、比較結果に基づいて調整信号を生成して、ライトDQS(ライトタイミング信号)をDRAM210内のクロックに一致させることができる。次に、DTSM240は、タイミング/電圧制御ロジック280に指示することによって、受信機255及びドライバ260,265についてタイミングパラメータを調整して、メモリPHYクロック及びDRAMクロックを同期させることができる。例えば、内部比較値が「0」であって、DRAMクロックのサンプリング値が「1」である場合には、DTSM240は、タイミング/電圧制御ロジック280に指示することによって、メモリPHY205のタイミングを所定の時間長だけ進めることができる。内部比較値が「1」であって、DRAMクロックのサンプリング値が「1」である場合には、DTSM240は、タイミング/電圧制御ロジック282に指示することによって、メモリPHY205のタイミングを所定の時間長だけ遅らせることができる。このプロセスを繰り返し行なって、メモリPHY205クロック及びDRAMクロックの同期を所定の許容範囲内に収めることができる。
ブロック315では、トレーニングロジックは、リード/ライトフェーズトレーニングを実行して、データアイ輪郭の1次元時間領域境界を、メモリPHYとDRAMとの間のリード/ライトデータパスに基づいて決定する。したがって、トレーニングロジックのいくつかの実施形態は、一連のコマンドを送信して、トレーニングシーケンスをDRAM内のアドレスに書き込むことができ、次に、トレーニングシーケンスをDRAMのアドレス指定ロケーションから異なる遅延時間だけ遅らせて、ループ読み出しによって読み出し続けることによって、データアイ輪郭の1次元時間領域境界を決定することができる。例えば、コントローラ215から信号を受信すると、ACSM220は、コマンドを発行して、PPGC225が生成する1つ以上のシーケンスを、DRAM210内の1つ以上のアドレスに書き込むことができる。次に、ACSM220は、一連のリードコマンドをDRAM210内のアドレスに対して発行して、これらのリードコマンドを異なる遅延値でループする。次いで、DTSM240は、ループリードコマンドの各コマンドに対応する受信シーケンスを、提供されたトレーニングシーケンスと比較することによって、データアイ輪郭の左端及び右端を求めることができる。次に、DTSM240は、タイミング/電圧制御ロジック280に指示することによって、タイミングパラメータ、例えば受信機255の位相を調整して、左端と右端との間の中間点等のデータアイ輪郭内の所定位置に一致させることができる。
ブロック320では、トレーニングロジックは、2次元(2D)リード/ライトフェーズトレーニングを実行して、データアイ輪郭の電圧レベルを、メモリPHYとDRAMとの間のリード/ライトデータパスに基づいて求める。したがって、トレーニングロジックのいくつかの実施形態は、一連のリードコマンド/ライトコマンドを送信して、トレーニングシーケンスをDRAMから読み出し、DRAMに書き込むことができる。一連のリードコマンド/ライトコマンドは、異なるタイミング遅延時間及び異なる電圧オフセットを用いて実行することによって、データアイ輪郭の電圧レベルを求めることができる。例えば、コントローラ215から信号を受信すると、ACSM220は、コマンドを発行して、PPGC225が生成する1つ以上のシーケンスを、DRAM210内の1つ以上のアドレスに、初期タイミング遅延時間を用いて書き込むことができる。次に、ACSM220は、一連のループリードコマンドをDRAM210内のアドレスに対して発行することができる。リードコマンド/ライトコマンドは、異なる電圧オフセット値を受信機255又はドライバ260,265に提供することによって同時に発行することができる。次に、DTSM240は、ループリードコマンドの各コマンドに対応する受信シーケンスを、提供されたトレーニングシーケンスと比較することによって、初期タイミング遅延時間に対応するデータアイ輪郭の左端と右端との間の電圧レベルを求めることができる。タイミング遅延時間は変更することができ(例えば、インクリメント又はデクリメントする)、電圧レベルを求めるプロセスを繰り返すことができる。このプロセスを繰り返して、2次元データアイ輪郭を、タイミング遅延時間及び電圧レベルの範囲に亘って生成することができる。それとは別に、いくつかの実施形態は、電圧レベル及びループを、選択された電圧レベルに対応するタイミング遅延時間に亘って繰り返し選択することによって、2次元データアイ輪郭を生成することができる。
DTSM240は、タイミング/電圧制御ロジック280に指示することにより、タイミング遅延及び電圧オフセットを受信機255又はドライバ260,265について調整して、最良の電圧レベル及びタイミング遅延時間を与えるデータアイ輪郭内の位置に一致させることができる。タイミング遅延時間又は電圧オフセットに対する調整範囲は、サンプリングトレーニングデータ内の適正サンプル及び不正サンプルの数に基づいて設定することができる。DTSM240のいくつかの実施形態は、最適なタイミング遅延時間及び電圧オフセットを、サンプリングトレーニングデータ内の不正サンプルに対する適正サンプルの所定の比に基づいて求めることができる。例えば、DTSM240は、タイミング遅延時間及び電圧オフセットを、メモリPHY205から受信した不正サンプル数に対する適正サンプル数の比が所定比と等しいか、又は所定比を下回るまで調整することができる。DTSM240のいくつかの実施形態は、所定比を用いて、データアイ輪郭の形状を、より良好な最適トレーニング位置を求めることができる予測値で変更することができる。例えば、2Dアイ輪郭は、所定比に基づいて拡大又は縮小させることができる。2Dデータアイ輪郭に対する他の変更も可能である。
本明細書に記載した技術の実施形態は、システムBIOSに実装され、データパイプラインを介してメモリPHYに搬送されなければならない従来のトレーニングアルゴリズムに対して、多数の利点を有し得る。統合型トレーニングロジックのいくつかの実施形態は、全体的なトレーニング時間を減少させ、益々複雑化するトレーニングシーケンスを実質的に一定のトレーニング時間を維持しながら実装することが可能であってよい。トレーニングロジックをメモリPHYに統合化することによって、高速なコマンド/データ生成及び制御をメモリPHYデータパイプの近くに配置することが可能になり、これにより、トレーニングシーケンス等のきめ細かな制御が可能になる。また、トレーニングロジックの実施形態は、ファームウェアアルゴリズム開発とハードウェアメカニズムの設計との間のより緊密な結合を余儀なくさせることによって、シードレストレーニングを拡大してもよい。さらに、トレーニングは、異なるメモリPHYインスタンスに対して並行して実行してもよい。トレーニングロジックがメモリPHYに統合化されると、シリコンシステムのデバッグ及びハードウェアの教育プロセスがより簡単に実装され得る。
トレーニングロジックがメモリPHYに統合化されると、設計プロセスも改善され得る。例えば、メモリPHYのためのトレーニングハードウェア及びトレーニングアルゴリズムは、SOCの残りの部分とは切り離して開発及びテストすることができる。システムの複雑性及びメモリPHYの振舞いの詳細は、メモリPHYと、SOC内のその他の論理と、の間の境界部分に含まれていてもよい。また、システム構成は、RTLシミュレーションから統合型トレーニングアルゴリズムの開発環境への自然な拡張をサポートしてもよい。さらに、メモリPHY用のトレーニングハードウェア及びこれに対応するトレーニングアルゴリズムは、複数の(サードパーティのSOCを含む)SOCに亘る完全なIPとしてパッケージされ得る。
いくつかの実施形態では、上述した装置及び方法は、図1〜図3を参照して説明したメモリPHY等の1つ以上の集積回路(IC)装置(集積回路パッケージ又はマイクロチップとも呼ばれる)を含むシステムにおいて実現することができる。電子設計自動化(EDA)ソフトウェアツール及びコンピュータ支援設計(CAD)ソフトウェアツールは、これらのIC装置の設計及び製造に用いることができる。これらの設計ツールは、通常、1つ以上のソフトウェアプログラムとして表現される。1つ以上のソフトウェアプログラムは、コンピュータシステムが実行可能なコードを含むことによってコンピュータシステムを操作し、1つ以上のIC装置の回路を表すコードで動作させることによってプロセスの少なくとも一部を実行して、製造システムを設計又は適合させて回路を製造することができる。このコードは、命令、データ、又は、命令及びデータの組み合わせを含むことができる。設計ツール又は製造ツールを表すソフトウェア命令は、通常、コンピューティングシステムにアクセスできるコンピュータ可読記憶媒体に記憶される。同様に、IC装置の設計又は製造の1つ以上の工程を表すコードは、コンピュータ可読記憶媒体又は異なるコンピュータ可読記憶媒体に記憶することができ、当該コードに対して、コンピュータ可読記憶媒体又は異なるコンピュータ可読記憶媒体からアクセスすることができる。
コンピュータ可読記憶媒体は、使用時にコンピュータシステムからアクセスできる任意の記憶媒体、又は、記憶媒体の組み合わせを含むことによって、命令及び/又はデータをコンピュータシステムに提供することができる。このような記憶媒体としては、これらに限定されないが、光媒体(例えば、コンパクトディスク(CD)、デジタル多用途ディスク(DVD)、ブルーレイ(登録商標)ディスク)、磁気媒体(例えば、フロッピー(登録商標)ディスク、磁気テープ若しくは磁気ハードディスク)、揮発性メモリ(例えば、ランダムアクセスメモリ(RAM)若しくはキャッシュ)、不揮発性メモリ(例えば、リードオンリメモリ(ROM)若しくはフラッシュメモリ)、又は、微小電子機械システム(MEMS)を利用した記憶媒体が挙げられる。コンピュータ可読記憶媒体は、コンピューティングシステムに内蔵することができ(例えば、システムRAM又はROM)、コンピューティングシステムに強固に取り付けることができ(例えば、磁気ハードドライブ)、コンピューティングシステムに着脱可能に取り付けることができ(例えば、光ディスク又はユニバーサルシリアルバス(USB)系フラッシュメモリ)、又は、コンピュータシステムに有線ネットワーク若しくは無線ネットワークを介して接続することができる(例えば、ネットワークアクセス可能なストレージ(NAS))。
図4は、いくつかの実施形態による1つ以上の素子を搭載したIC装置を設計して製造する例示的な方法400を示すフロー図である。上述したように、以下のプロセスの各プロセスに対応して生成されるコードは、非一時的なコンピュータ可読記憶媒体に記憶され、他には、非一時的なコンピュータ可読記憶媒体で具現化されて、対応する設計ツール又は製造ツールによってアクセスし使用することができる。
ブロック402では、IC装置の機能仕様を作成する。機能仕様(多くの場合、マイクロアーキテクチャ仕様(MAS)と呼ばれる)は、C、C++、SystemC、Simulink又はMATLABを含む多種多様なプログラミング言語又はモデリング言語のうち何れかの言語で表現することができる。
ブロック404では、機能仕様を用いて、IC装置のハードウェアを表すハードウェア記述コードを生成する。いくつかの実施形態では、ハードウェア記述コードは、少なくとも1種類のハードウェア記述言語(HDL)を用いて表現され、ハードウェア記述言語(HDL)は、IC装置の回路をフォーマルに記述して設計するための多種多様なコンピュータ言語、仕様言語又はモデリング言語の何れかの言語を含む。生成されたHDLコードは、通常、IC装置の回路の動作、回路の設計及び体系、及び、IC装置の正しい動作をシミュレーションで検証するためのテストを表す。HDLの例としては、アナログHDL(AHDL)、Verilog HDL(ベリログHDL)、System Verilog HDL(システムベリログHDL)及びVHDLが挙げられる。IC装置に同期デジタル回路が搭載されている場合には、ハードウェア記述コードは、同期デジタル回路の動作を抽象的に表現したレジスタ転送レベル(RTL)コードを含むことができる。他の種類の回路の場合には、ハードウェア記述コードは、回路の動作を抽象的に表現したビヘイビアレベルコードを含むことができる。ハードウェア記述コードで表されるHDLモデルに対して、通常、設計検証に合格するために1回以上のシミュレーション及びデバッグ処理を実行する。
ハードウェア記述コードで表される設計を検証した後、ブロック406では、合成ツールを用いてハードウェア記述コードを合成し、IC装置の回路の初期物理構造を表現又は定義するコードを生成する。いくつかの実施形態では、合成ツールは、回路素子(例えば、ゲート、トランジスタ、抵抗、キャパシタ、インダクタ、ダイオード等)と、回路素子間の接続網又は接続配線と、を含む1つ以上のネットリストを生成する。別の構成として、ネットリストの全部又は一部は、合成ツールを用いることなく手動で生成することができる。ハードウェア記述コードと同様に、ネットリストに対して、最終的な一連の1つ以上のネットリストを生成する前に、1回以上のテストプロセス及び検証プロセスを実行することができる。
別の構成として、回路図編集設計ツールを用いてIC装置の回路図を生成し、次に、回路図把握ツールを用いて、結果的に得られる回路図を把握することができ、回路図の構成要素及び接続関係を表す1つ以上のネットリスト(コンピュータ可読媒体に記憶される)を生成することができる。次に、把握した回路図に対して、1回以上のシミュレーションを実行してテスト及び検証を行うことができる。
ブロック408では、1つ以上のEDAツールが、ブロック406で生成されたネットリストを用いて、IC装置の回路の物理レイアウトを表すコードを生成する。このプロセスは、例えば配置ツールを含むことができ、この配置ツールは、ネットリストを使用してIC装置の回路の各素子の位置を決定又は固定する。さらに、配線ツールを配置プロセスに構築して、回路素子をネットリストに従って接続するために必要な配線を追加して引き回す。結果的に得られるコードは、IC装置の3次元モデルを表す。コードは、例えばグラフィックデータベースシステムII(GDSII)フォーマット等のデータベースファイルフォーマットで表すことができる。このフォーマットのデータは、通常、回路レイアウトに関する幾何学的形状、テキストラベル及び他の情報を階層形式で表す。
ブロック410では、物理レイアウトコード(例えば、GDSIIコード)を製造設備に提供し、製造設備では、メモリ物理レイアウトコードを用いて、製造設備の製造ツールを構成又は適合させて(例えば、マスク作業を行うことにより)IC装置を製造する。すなわち、物理レイアウトコードは、1つ以上のコンピュータシステムに書き込むことができ、次にこれらのコンピュータシステムは、製造設備のツールの動作、又は、製造設備内で行われる製造処理のツールの動作を全部若しくは一部制御することができる。
いくつかの実施形態では、上述した方法の特定の態様は、ソフトウェアを実行する処理システムの1つ以上のプロセッサにより実行することができる。ソフトウェアは、非一時的なコンピュータ可読記憶媒体に記憶され、又は、非一時的なコンピュータ可読記憶媒体で明確に具現化される1つ以上の実行可能命令セットを含む。ソフトウェアは、命令及び特定データを含むことができ、命令及び特定データを1つ以上のプロセッサが実行すると、1つ以上のプロセッサを操作して、上述した方法の1つ以上の態様を実行する。非一時的なコンピュータ可読記憶媒体としては、例えば磁気ディスク記憶装置若しくは光ディスク記憶装置、フラッシュメモリ等の固体記憶装置、キャッシュ、ランダムアクセスメモリ(RAM)、又は、他の不揮発性メモリ装置若しくは不揮発性メモリ装置等が挙げられる。非一時的なコンピュータ可読記憶媒体に記憶される実行可能命令は、1つ以上のプロセッサが解釈又は実行することができるソースコード、アセンブリ言語コード、オブジェクトコード又は他の命令形式で記憶することができる。
概要を上述した操作又は構成要素の全てが必要であるわけではなく、特定の操作又は装置の一部は必要ではなく、1つ以上の更に別の操作を行ってもよい。また、構成要素を記載の構成要素の他に含めてもよいことに留意されたい。さらには、操作が列挙された順序は、必ずしもこれらの操作が行われる順序ではない。また、コンセプトが、特定の実施形態を参照して説明されている。しかしながら、本技術分野の当業者であれば、種々の変形及び変更を、以下の特許請求の範囲に記載される本開示の範囲から逸脱しない限り加えることができることを理解できる。したがって、本明細書及び図は、限定的な意味ではなく例示として捉えられるべきであり、全てのこのような変形は、本開示の範囲に含まれるべきである。
効果、他の利点及び課題に対する解決手段について、特定の実施形態を参照しながら説明してきた。しかしながら、効果、利点、課題に対する解決手段、及び、全ての効果、利点又は解決手段をもたらすか更に顕著にする全ての特徴が、何れかの請求項又は全ての請求項の必須の特徴、必要な特徴又は基本的な特徴であると捉えられてはならない。さらに、開示された特定の実施形態は、開示した発明を、異なる態様で、且つ、本明細書において提示された示唆の恩恵を享受する本技術分野の当業者にとって明白な均等な態様で変更して実施することができることから、例示に過ぎない。以下の特許請求の範囲に記載される限定以外の限定を、本明細書において開示された構成又は設計の詳細に加えるものではない。したがって、開示された特定の実施形態は、変更又は改変することができ、全てのこのような変更が、開示した発明の範囲に含まれると考えられる。したがって、本明細書で要求する保護は、以下の特許請求の範囲に記載の通りである。

Claims (18)

  1. 外部メモリ(135)に接続するためのメモリ物理層インタフェース(PHY)(140,205)と、
    前記メモリPHYに統合されたコントローラ(215)であって、トレーニングアルゴリズムに基づいて、前記外部メモリと通信するための前記メモリPHYのトレーニングを制御するためのコントローラ(215)と、を備える装置。
  2. 前記トレーニングアルゴリズムは、シードレストレーニングアルゴリズムである、請求項1に記載の装置。
  3. 前記コントローラは、前記トレーニングアルゴリズムによって生成されたトレーニングシーケンス又はコマンドが通過する信号経路を特徴付けるシード情報を基本入出力システム(BIOS)(120)から受信することなく、前記メモリPHYと前記外部メモリとの間のタイミング遅延及び電圧オフセットの解決に向けて収束するように、前記メモリPHYのトレーニングを制御する、請求項1に記載の装置。
  4. 前記トレーニングアルゴリズムに基づいて前記コントローラによって生成された制御信号に応じて、前記外部メモリに送られるプログラム可能なコマンドのシーケンスを高速に生成するための第1のトレーニングエンジン(220)をさらに備える、請求項3に記載の装置。
  5. 前記第1のトレーニングエンジンによって生成された制御信号に応じて、前記外部メモリに送られるトレーニングデータのシーケンスを生成するための第2のトレーニングエンジン(225)をさらに備える、請求項4に記載の装置。
  6. 前記外部メモリから受信したシーケンスを、前記第2のトレーニングエンジンによって生成された前記トレーニングシーケンスと比較するための第3のトレーニングエンジンをさらに備える、請求項5に記載の装置。
  7. 前記第1のトレーニングエンジンは、前記トレーニングアルゴリズムに基づいて、前記第2のトレーニングエンジン及び前記第3のトレーニングエンジンのうち少なくとも1つによって実行されるタスクの実行を順序付ける、請求項6に記載の装置。
  8. 前記第3のトレーニングエンジンは、前記外部メモリからのデータ読み出し及び前記外部メモリへのデータ書き込みの少なくとも1つのために前記メモリPHYによって用いられるタイミングパラメータ及び電圧オフセットパラメータのうち少なくとも1つを調整する、請求項6に記載の装置。
  9. 前記第3のトレーニングエンジンは、サンプリングされたトレーニングデータの正確なサンプル及び不正確なサンプルの数に基づいて、前記タイミング遅延及び前記電圧オフセットのうち少なくとも1つを決定する、請求項8に記載の装置。
  10. メモリ物理層インタフェース(PHY)(140,205)に統合されたコントローラ(215)にて、トレーニングアルゴリズムに基づいて、外部メモリ(135)と通信するための前記メモリPHYをトレーニングするための制御信号を生成すること、を含む方法(300)。
  11. 前記制御信号を生成することは、シードレストレーニングアルゴリズムに基づいて前記制御信号を生成することを含む、請求項10に記載の方法。
  12. 前記制御信号を生成することは、前記トレーニングアルゴリズムによって生成されたトレーニングシーケンス又はコマンドが通過する信号経路を特徴付けるシード情報を基本入出力システム(BIOS)から受信することなく、前記メモリPHYと前記外部メモリとの間のタイミング遅延及び電圧オフセットの解決に向けて前記トレーニングアルゴリズムが収束するように、前記制御信号を生成することを含む、請求項10に記載の方法。
  13. 第1の制御信号を前記コントローラから第1のトレーニングエンジン(220)へ提供することであって、前記第1のトレーニングエンジンは、前記第1の制御信号に応じて、前記外部メモリに送られるコマンドのシーケンスを高速で生成することをさらに含む、請求項10に記載の方法。
  14. 第2の制御信号を前記第1のトレーニングエンジンから第2のトレーニングエンジン(225)へ提供することであって、前記第2のトレーニングエンジンは、前記第1のトレーニングエンジンからの前記第2の制御信号に応じて、前記外部メモリに送られるトレーニングシーケンスを生成することをさらに含む、請求項13に記載の方法。
  15. 第3の制御信号を前記第1のトレーニングエンジンから第3のトレーニングエンジンへ提供することであって、前記第3のトレーニングエンジンは、前記第3の制御信号に応じて、前記外部メモリから受信したシーケンスを、前記第2のトレーニングエンジンによって生成された前記トレーニングシーケンスと比較することをさらに含む、請求項14に記載の方法。
  16. 前記第2のトレーニングエンジン及び前記第3のトレーニングエンジンのうち少なくとも1つによって実行されるタスクの実行を、前記第1のトレーニングエンジンが、前記第2のトレーニングエンジン及び前記第3のトレーニングエンジンのうち少なくとも1つに対して提供される信号に基づいて順序付けすることをさらに含む、請求項15に記載の方法。
  17. 前記第3のトレーニングエンジンにて、前記外部メモリからのデータ読み出し及び前記外部メモリへのデータ書き込みのうち少なくとも1つのために前記メモリPHYによって用いられるタイミング遅延及び電圧オフセットのうち少なくとも1つを決定することをさらに含む、請求項15に記載の方法。
  18. 前記タイミング遅延及び前記電圧オフセットのうち少なくとも1つを決定することは、サンプリングされたトレーニングデータ内の正確なサンプル及び不正確なサンプルの所定の比率に基づいて、前記タイミング遅延及び前記電圧オフセットのうち少なくとも1つを決定することを含む、請求項17に記載の方法。
JP2016558772A 2014-06-27 2015-06-23 メモリ物理層インタフェースのトレーニング用統合型コントローラ Pending JP2017523488A (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/318,114 US9639495B2 (en) 2014-06-27 2014-06-27 Integrated controller for training memory physical layer interface
US14/318,114 2014-06-27
PCT/US2015/037210 WO2015200338A1 (en) 2014-06-27 2015-06-23 Integrated controller for training memory physical layer interface

Publications (2)

Publication Number Publication Date
JP2017523488A true JP2017523488A (ja) 2017-08-17
JP2017523488A5 JP2017523488A5 (ja) 2018-08-02

Family

ID=54930483

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016558772A Pending JP2017523488A (ja) 2014-06-27 2015-06-23 メモリ物理層インタフェースのトレーニング用統合型コントローラ

Country Status (6)

Country Link
US (1) US9639495B2 (ja)
EP (1) EP3105682A4 (ja)
JP (1) JP2017523488A (ja)
KR (1) KR102222420B1 (ja)
CN (1) CN106133710B (ja)
WO (1) WO2015200338A1 (ja)

Families Citing this family (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6184984B1 (en) 1999-02-09 2001-02-06 Kla-Tencor Corporation System for measuring polarimetric spectrum and other properties of a sample
KR102472123B1 (ko) * 2016-03-16 2022-11-30 에스케이하이닉스 주식회사 반도체 시스템 및 그의 동작 방법
KR102444947B1 (ko) * 2016-03-31 2022-09-21 에스케이하이닉스 주식회사 반도체장치
EP3264276A1 (en) * 2016-06-28 2018-01-03 ARM Limited An apparatus for controlling access to a memory device, and a method of performing a maintenance operation within such an apparatus
KR102707683B1 (ko) 2016-07-12 2024-09-20 삼성전자주식회사 메모리 채널의 소프트웨어 트레이닝을 수행하는 전자 장치 및 그것의 메모리 채널 트레이닝 방법
US10262751B2 (en) * 2016-09-29 2019-04-16 Intel Corporation Multi-dimensional optimization of electrical parameters for memory training
KR102392055B1 (ko) * 2017-08-09 2022-04-28 삼성전자주식회사 리트레이닝 동작의 수행 여부를 효율적으로 결정하기 위한 메모리 장치 및 이를 포함하는 메모리 시스템
US11604714B2 (en) 2017-08-09 2023-03-14 Samsung Electronics Co, Ltd. Memory device for efficiently determining whether to perform re-training operation and memory system including the same
KR102273191B1 (ko) * 2017-09-08 2021-07-06 삼성전자주식회사 스토리지 장치 및 그것의 데이터 트레이닝 방법
US10579578B2 (en) 2017-10-24 2020-03-03 Micron Technology, Inc. Frame protocol of memory device
KR102447493B1 (ko) * 2017-12-04 2022-09-26 삼성전자주식회사 랭크 단위로 메모리 장치를 트레이닝하는 전자 장치 및 그것의 메모리 트레이닝 방법
US10997095B2 (en) * 2018-08-21 2021-05-04 Micron Technology, Inc. Training procedure for receivers associated with a memory device
US11404097B2 (en) 2018-12-11 2022-08-02 SK Hynix Inc. Memory system and operating method of the memory system
KR20200126678A (ko) * 2019-04-30 2020-11-09 에스케이하이닉스 주식회사 메모리 시스템 및 그것의 동작 방법
KR102685395B1 (ko) 2019-06-05 2024-07-15 삼성전자주식회사 반도체 장치, 반도체 시스템 및 반도체 장치의 동작 방법
US11449439B1 (en) 2019-07-25 2022-09-20 Rambus Inc. Fragmented periodic timing calibration
KR102695924B1 (ko) 2019-09-02 2024-08-16 삼성전자주식회사 파워-업 시퀀스 중에 메모리 셀들을 테스트하고 리페어 하는 방법 및 메모리 장치
KR20210136480A (ko) * 2020-05-07 2021-11-17 삼성전자주식회사 프로세싱 장치가 실장된 메모리 모듈을 포함하는 컴퓨팅 시스템의 부팅 방법
CN113867803A (zh) * 2020-06-30 2021-12-31 华为技术有限公司 一种内存初始化装置、方法及计算机系统
CN113568848B (zh) * 2020-07-29 2023-07-11 华为技术有限公司 处理器、信号调整方法及计算机系统
CN112306775B (zh) * 2020-11-19 2023-03-14 山东云海国创云计算装备产业创新中心有限公司 双路cpu间通信链路的测试方法、装置、设备及介质
US20220199142A1 (en) * 2020-12-22 2022-06-23 Intel Corporation Power and performance optimization in a memory subsystem
KR102688922B1 (ko) 2021-10-07 2024-07-29 서울대학교산학협력단 메모리 전력 최적화 방법 및 장치
US20230197123A1 (en) * 2021-12-20 2023-06-22 Advanced Micro Devices, Inc. Method and apparatus for performing a simulated write operation
US20230207038A1 (en) * 2021-12-29 2023-06-29 Advanced Micro Devices, Inc. Dram specific interface calibration via programmable training sequences
CN115344215A (zh) * 2022-08-29 2022-11-15 深圳市紫光同创电子有限公司 存储器训练方法及系统
CN116795430A (zh) * 2023-06-27 2023-09-22 上海奎芯集成电路设计有限公司 存储器训练装置及存储器训练方法
CN118277306B (zh) * 2024-05-30 2024-08-16 合肥奎芯集成电路设计有限公司 用于存储器物理层的数据眼图训练方法及装置

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006260071A (ja) * 2005-03-16 2006-09-28 Oki Data Corp メモリ制御装置および情報処理装置
US20120284576A1 (en) * 2011-05-06 2012-11-08 Housty Oswin E Hardware stimulus engine for memory receive and transmit signals
JP2013543612A (ja) * 2010-09-13 2013-12-05 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド 構成可能な電力状態をもつダイナミックramphyインタフェース

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8166221B2 (en) 2004-03-17 2012-04-24 Super Talent Electronics, Inc. Low-power USB superspeed device with 8-bit payload and 9-bit frame NRZI encoding for replacing 8/10-bit encoding
US7647467B1 (en) * 2006-05-25 2010-01-12 Nvidia Corporation Tuning DRAM I/O parameters on the fly
US8645743B2 (en) 2010-11-22 2014-02-04 Apple Inc. Mechanism for an efficient DLL training protocol during a frequency change
KR101217937B1 (ko) 2010-12-30 2013-01-02 (주)인디링스 고속의 외부 메모리 인터페이스를 위한 적응적 디지털 phy
US8422319B2 (en) 2011-05-30 2013-04-16 Lsi Corporation System and method for gate training in a memory system
US8634221B2 (en) * 2011-11-01 2014-01-21 Avago Technologies General Ip (Singapore) Pte. Ltd. Memory system that utilizes a wide input/output (I/O) interface to interface memory storage with an interposer and that utilizes a SerDes interface to interface a memory controller with an integrated circuit, and a method
US8850155B2 (en) * 2011-12-19 2014-09-30 Advanced Micro Devices, Inc. DDR 2D Vref training
US20130318285A1 (en) 2012-05-23 2013-11-28 Violin Memory Inc Flash memory controller
US8856573B2 (en) 2012-06-27 2014-10-07 Intel Corporation Setting a number (N) of fast training sequences (FTS) automatically to an optimal value
US8842480B2 (en) 2012-08-08 2014-09-23 Avago Technologies General Ip (Singapore) Pte. Ltd. Automated control of opening and closing of synchronous dynamic random access memory rows
EP2896150B1 (en) * 2012-09-17 2019-11-06 Avago Technologies International Sales Pte. Limited Time to time-frequency mapping and demapping for ethernet passive optical network over coax (epoc)
US9600431B2 (en) 2012-10-22 2017-03-21 Intel Corporation High performance interconnect physical layer

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006260071A (ja) * 2005-03-16 2006-09-28 Oki Data Corp メモリ制御装置および情報処理装置
JP2013543612A (ja) * 2010-09-13 2013-12-05 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド 構成可能な電力状態をもつダイナミックramphyインタフェース
US20120284576A1 (en) * 2011-05-06 2012-11-08 Housty Oswin E Hardware stimulus engine for memory receive and transmit signals

Also Published As

Publication number Publication date
KR20170023775A (ko) 2017-03-06
WO2015200338A1 (en) 2015-12-30
CN106133710B (zh) 2019-10-11
US9639495B2 (en) 2017-05-02
EP3105682A1 (en) 2016-12-21
US20150378603A1 (en) 2015-12-31
EP3105682A4 (en) 2017-11-15
KR102222420B1 (ko) 2021-03-03
CN106133710A (zh) 2016-11-16

Similar Documents

Publication Publication Date Title
JP2017523488A (ja) メモリ物理層インタフェースのトレーニング用統合型コントローラ
JP6741585B2 (ja) プログラム可能な遅延を用いてダイナミックランダムアクセスメモリ(dram)コマンドを生成するメモリ物理レイヤインタフェースロジック
US9600618B2 (en) Implementing system irritator accelerator FPGA unit (AFU) residing behind a coherent attached processors interface (CAPI) unit
US20210278969A1 (en) Dedicated interface for coupling flash memory and dynamic random access memory
US9929734B2 (en) Method for changing the configuration of a programmable logic module
WO2016197711A1 (zh) 一种配置寄存器的方法和装置
US8195441B1 (en) Hardware co-simulation involving a processor disposed on a programmable integrated circuit
US9032274B2 (en) Method and apparatus for clock and data recovery
US10430215B1 (en) Method and system to transfer data between hardware emulator and host workstation
US20120110400A1 (en) Method and Apparatus for Performing Memory Interface Calibration
US7228513B2 (en) Circuit operation verification device and method
Van Moll et al. Fast and accurate protocol specific bus modeling using TLM 2.0
CN104866638B (zh) 用于dram系统的验证方法
JP5664430B2 (ja) 試験装置、検証モデル開発方法及びプログラム
JP2007058431A (ja) シミュレーションモデル、及びシミュレーション方法
US12056394B2 (en) Memory interface training
JP2006079369A (ja) シミュレーション装置及びその履歴生成方法
JP5729983B2 (ja) 情報処理装置、情報処理方法およびプログラム
JP2007207119A (ja) 表示装置及び表示方法
JP2006079370A (ja) シミュレーション装置及びシミュレーション方法
JP2010128582A (ja) シミュレーションシステム

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180619

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20180619

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20180619

A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20180626

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20181009

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20181023

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190115

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20190319