JP5540155B2 - プラットフォーム独立メモリ論理の提供 - Google Patents

プラットフォーム独立メモリ論理の提供 Download PDF

Info

Publication number
JP5540155B2
JP5540155B2 JP2013520735A JP2013520735A JP5540155B2 JP 5540155 B2 JP5540155 B2 JP 5540155B2 JP 2013520735 A JP2013520735 A JP 2013520735A JP 2013520735 A JP2013520735 A JP 2013520735A JP 5540155 B2 JP5540155 B2 JP 5540155B2
Authority
JP
Japan
Prior art keywords
memory
sic
processor
odt
snapshot
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.)
Expired - Fee Related
Application number
JP2013520735A
Other languages
English (en)
Other versions
JP2013532864A (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.)
Intel Corp
Original Assignee
Intel Corp
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 Intel Corp filed Critical Intel Corp
Publication of JP2013532864A publication Critical patent/JP2013532864A/ja
Application granted granted Critical
Publication of JP5540155B2 publication Critical patent/JP5540155B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4403Processor initialisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/22Microcontrol or microprogram arrangements

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Stored Programmes (AREA)
  • Retry When Errors Occur (AREA)
  • Logic Circuits (AREA)
  • Static Random-Access Memory (AREA)

Description

従来、コンピュータシステムの起動及び低レベル処理を行うために利用されてきた、低レベルソフトウェアであるBIOS(basic input/output system)ソフトウェアは、コンピュータ製造業者である、いわゆるOEM(相手先ブランド製造業者:original equipment manufacturer)によって組み込まれてきた。プロセッサにBIOSをサポートさせるために、プロセッサの製造業者(いわゆるシリコン製造業者)は、詳細な情報をOEMに与える。通常、情報はソースコードの形態で組み込まれてきた。しかしこのコード提供により、プログラム方法及び基礎となるハードウェアの詳細などの、プロセッサのハードウェアの知的財産(IP)面の要素が第三者に暴露されていた。さらに、ソースコードを提供すると、OEMはコードを修正して、非標準的な方法で統合して、非標準的なハードウェアに対応させるべく調整することで複雑性が増し、動作面でも懸念が生じ、シリコン製造業者にとってのサポート料が上がることにつながる。
例えば、通常システムの初期化のために提供される情報には、プロセッサ、インターコネクトリンク、メモリ部等の詳細に関する情報が含まれる。これら詳細には、レジスタの定義、このハードウェアへのインタフェース等が含まれうる。この情報は、OEMのみならず、独立系BIOS販売業者(IBV)にも流通する。プロセッサその他の高度なシリコンコントローラは別の種類のシステム及びデバイスに組み込まれているので、IBV及びOEMのx86コンピュータシステムの範囲は比較的小さいが、これから大きく拡張していくことが予想され、IP面での懸念及びサポート面での困難を生じる可能性がある。
本発明の一実施形態における、プラットフォーム独立シリコン一体化コード(SIC)のコンポーネントのブロック図である。 本発明の一実施形態におけるシステムのブロック図である。 本発明の一実施形態における埋め込みメモリ論理(EML)コードの実行を示すフロー図である。 本発明の一実施形態におけるEMLのさまざまなコンポーネントのブロック図である。 本発明の一実施形態における終端抵抗を決定する方法のフロー図である。 本発明の一実施形態におけるプロセッサのブロック図である。 本発明の一実施形態における、スナップショットを生成して利用する方法のフロー図である。 本発明の一実施形態における、メモリ初期化に対する増分的なトレーニングを行う方法のフロー図である。
さまざまな実施形態で、最初の初期化ソフトウェアは、基盤となるプロセッサハードウェアに対して密接に取り付けることができるので、OEM BIOSにより実装されるのではなく、シリコン製造業者が最初の初期化ソフトウェアを制御して提供することができる。
シリコン一体化コード(SIC)は、コードがロードされ、出所を確かめて、SICの実行後に、滞りなくOEM BIOSに制御を渡される環境で利用することができる。SICは、アナログリンクの設定がなされるトレーニング、診断、及びテストフックの設計といったメモリ初期化の低レベル面の動作に利用することができる。本発明の範囲はこの点に限定はされないが、メモリコントローラ及びインターコネクトリンクの主要な初期化コード、及び、さまざまなプロセッサ及びシステムの特徴部のランタイムを潜在的に助ける部材を、SICの形態とすることができる。一部の実施形態では、このコードに対する信頼ルートが、プロセッサのマイクロコードのフック経由で提供されて、SICを認証してロードするためのSICロードを実装することができ、これは、シリコン製造業者のBIOSの形態であってよく、OEM BIOSに制御を渡すことができる。OEM BIOSへのアップグレードが難しいことを鑑みると、フラッシュメモリに組み込まれたファームウェア等のBIOSを格納するメモリが適合しない場合もあるので、SICローダを導入するためのSICローダプロセッサパッケージ内のコアのマイクロコードに対応する信頼ルートが、SICが組み込まれたOEM BIOSの補助ブロックが有効であることを検証するために利用される。
SICの実行後に、制御は、UEFIオープンソースコア(例えば2006年2月21日付けのUEFI仕様バージョン2.0)に従って、または、オープンファームウェアIEEE1275−1994、または、従来のBIOSまたは特許化されているOEMブートコード(それぞれ1以上のオペーティングシステムを起動する)を介して実装することができるOEM BIOSに渡されてよい。実装例によっては、SICは、例えばエラー解消のため、またはバイナリ変換を行うために、パッチを実行するために利用することができる。さらに、SICは、バイナリ変換、エラー処理のためのメモリブロック、またはランタイム中に実行されるシリコン製造業者の他のコードを隠してOSから見えなくするために、一定のメモリブロックに対する保護を設定することができる。このようにすることで、プロセッサが、例えばマイクロコード読み出し専用メモリ(uROM)オフロード、コプロセッサのサポート等の逆コードを利用する場合には、機械を第三者であるOEMのコードに晒される前に、SICがこのメモリを提供することで、メモリのサブセットをプロセッサに利用可能としておくことができるようになる。
さまざまな実施形態では、SICは、フラッシュその他の不揮発性メモリ等であるOEM BIOSに組み込まれるバイナリコードとして提供されてよく、または、SICをプロセッサパッケージの不揮発性ストレージに実装してもよい。従って実施形態では、プロセッサその他のシリコン製造業者が顧客に対して、ソースコードではなくて、バイナリモジュールを出荷することができるので、より高いIP保護が可能となる。顧客数が増えると、シリコンとともにBIOS構築ブロックを出荷することによって実現される技術サポート料の削減量が顕著となる。
図1は、SICに組み込むことができる、本発明の一実施形態のプラットフォーム独立BIOSのコンポーネントのブロック図である。プラットフォーム独立という用語は、機械の仕様に関わらず(例えばメモリの種類、リンクの速度、利用可能な電圧等)、どのプラットフォームでも、含まれているコンポーネントが実行可能であることを示す。後述するように、プラットフォーム依存であるコンポーネントは、プラットフォームの製造業者のデータファイルにより符号化することができる。一例としては、プラットフォーム販売業者は、システム基板等に関する情報等の一定の情報をパラメータ化することができる。基礎的な初期化を行う一定のコンポーネント(例えば信頼ルートを構築するリンク初期化)は、第三者のコードの制御を処理する前にSICによって行われてよい。このようにSICを一時的に隔離することで、電力をリセット中にもプロセッサがハードウェアを有して、制御を第三者のコードに渡すまではSICだけが実行可能であることを確認することができる。
図1からわかるように、SICコンポーネントは、第三者のコードの前にSICの残りを発見してロードする役割を担う最初のプログラムローダ(IPL)20を含んでよい。このローダは、SICのコンポーネントとは考えられない場合もある。SICのコンポーネントが一時的であったり持続的であったりする。持続的な場合には、アクティブにされたり(プラットフォーム初期化(PI)モジュール)またはパッシブにされたり(新たな命令によってライブラリのように機能すること)してよい。
図1の実施形態では、SIC10が、埋め込み中央処理装置(CPU)論理(ECL)30を含み、これは、オンボードのインターコネクト等のインタープロセッサ論理を初期化する。リンク及びメモリ初期化の両方のトレーニングには、リンクの両端の間の通信が含まれてよい。リンクの場合には、プロセッサは、別のプロセッサまたは出入力(IO)ハブに連結されてよく、データ処理可能な動作周波数及びリンク幅を決定することができる。ECLモジュールは通常は一時的である。一部の実施形態では、リンクの初期化は、低電力状態(例えばACPI(Advanced Configuration and Power Interface)低電力状態、その一例が2009年6月16日付けのACPI仕様バージョン4.0のS3である)からの再開処理中に、メモリコンテンツにダメージを与えずにやり直すことができる。
SIC10はさらに、メモリの初期化に際して埋め込みメモリ論理(EML)40を含んでよい。このコンポーネントは、ランタイム中に(例えば温度のスロットルまたはエラー処理のため)一部が一時的であり一部が持続的であってもよい。別のコンポーネントではメモリを別の視点から見るために、メモリ初期化には、アドレス指定の設定がさらに含まれていてもよい。例えば、CPUは、システムアドレスと称される物理的アドレス空間の視点を有することができる。システムメモリ(例えばダイナミックランダムアクセスメモリ(DRAM))に連結するメモリコントローラは、チャネル、ランク、及びランクを有するオフセットにより特定される特定のメモリセルにアドレスをマッピングする。メモリアクセスは全て、プロセッサノードにルーティングされて、復号され、チャネル番号、リンク番号、及びランクにおけるオフセットに変換される。従って、リンクアドレスの符号器のプログラミングの仕方によって、メモリは異なる見方で見ることができる。プロセッサについて隔離されたメモリ量を確保するために、アドレス復号器及びメモリ復号器のサブセットをプロセッサについてプログラミングすることができる。このようにして隔離されたメモリは、システム動作中にはプロセッサが独占して利用することができ、マイクロコードオフロード、バイナリ変換器、ライセンス情報、管理情報等を格納することができる。これに加えて、予備論理50を利用して、プラットフォーム独立論理の他の特徴部をサポートすることができる。本発明の範囲は、図1の実施形態に示すこの点に限定はされない。
図2は、本発明の一実施形態におけるシステムのブロック図である。図2に示すシステム100は、ハードウェアと、さまざまなソフトウェア層とを含んでいる。示されているハードウェア実装は、代表的な高位のレベルであり、システムによっては数多くの他のコンポーネントが存在しうる。さらに、ソフトウェアの各部分が様々な場所に分散された様々なコンポーネントとして示されているが、特に、様々な実施形態でSICの各部分が様々な場所に存在してよいことを理解されたい。
システムの基礎部分であるハードウェア110は、1以上のプロセッサ、メモリ、入出力デバイス等を含む様々なコンポーネントを含んでよい。しかし、図示の便宜上、図2の実施形態にはこれらのコンポーネントの一部のみを示している。特に、コアで実行するものとして、プロセッサコア115及び対応するマイクロコード120が示されている。様々な実施形態では、コア115は、それぞれが自身のマイクロコードストアを含んでよいマルチコアプロセッサの複数のコアを表すことができる。加えて、多くの実装例では、プロセッサパッケージがアンコア118(プロセッサコアの外に存在する様々な論理を含む)を含むことができる。様々な実施形態では、アンコア118は、コア115、統合メモリコントローラ(IMC)125、及び入出力コントローラハブ(IOH)128に、Intel(登録商標)Quick Path Interconnect(QPI)リンクを介して連結される。これを受けてIMC125は、システムメモリ130に連結されてよく、これは一実施形態では、ダブルデータレート(DDR)−3DIMM等の複数のデュアル・インライン・メモリモジュール(DIMM)から構成されてよい。さらに図示されているように、IOH128は、周辺コントローラハブ(PCH)135に直接媒体インタフェース(DMI)インターコネクトにより連結されてよく、これが、トラステッド・プラットフォームモジュール(TPM)140及び周辺モジュール145等の他のデバイスに連結されてよい。本発明の範囲はこれに限定されないが、様々なデバイスのPCH135へのインターコネクトは、低ピンカウント(LPC)バスによって行われてよい。これら限定されたコンポーネントのみが示されているが、多くの他のコンポーネントも別の実装例では存在する可能性がある。
プロセッサハードウェアにはSICモジュール150が密接に連結されている。様々な実装例では、SICモジュールは、フラッシュメモリ等の不揮発性ストレージに実装されており、例えばプロセッサパッケージ内に置かれてよい。この代わりに、SICモジュールは、プロセッサの製造業者からOEMにバイナリで提供されてよく、OEMは自身のBIOSにこれを組み込む。従って、SICの実際の位置は、実装が変わると変わる場合がある。一実施形態では、SICは、OEM BIOSの一部である(例えばマザーボードに取り付けられたフラッシュデバイスに統合されている)。しかし、図示を簡単にすべく、SICモジュール150が別個のコードブロックとして示されている。特に、示されているモジュールは、複数のSICコードの改定152−152を含んでいる。つまり、後で詳述するように、SICはフィールドで更新されてよい。SICモジュールには、コードに加えて、様々なデータブロック154から154が存在していてよい。一実施形態では、シリコン製造業者のポリシーが、このSICデータブロックに含まれていてよく、これがSKU(stock keeping unit)に基づいていてよい。この情報は、部分のグレーディング、サポートされた特徴、及び/または、シリコンの熱物理特性を示すような電圧及び温度のレーティングを含んでよい。これら様々なコード及びデータブロックにアクセスするために、ファームウェアインタフェーステーブル(FIT)155を提供することができる。符号及びデータブロックはキーとなる対の構造により保護されていてよい。様々な実施形態では、SIC150がハードウェアに暗号的に結合されており、コアマイクロコード120を媒体として起動がなされる。
さらなるシステムソフトウェアが、UEFI規格に準拠した起動前コードを含むOEM BIOSの形態であってよい。これらのコードは、様々なファームウェア部分で格納されてよく、セキュリティ初期化コード(SEC)、前EFI(PEI)コード、及び、ドライバ実行環境(DXE)及びブートデバイス選択(BDS)コードを含んでよい。論理上の例としては、これらのコードは、第1のコードモジュール160と第2のコードモジュール170とに分けられてよい。ファームウェア部分は、BIOSその他の低レベルソフトウェアを含んでよい不揮発性メモリの論理上の分割部分である。一般的には、モジュール160及び170がそれぞれ、第三者の拡張可能コードを有するファームウェア部分であってよい。第1のコードモジュール160は、OEMプラットフォームの初期化を行い、SICコードからメモリアパーチャを取得するために利用することができる(ブロック162)。制御は次にコードブロック164に渡されて、物理的実態についての分析を実行して、セキュアなハッシュ演算を行うことができ、これにより、主要なファームウェア部168の測定を行う前に、セキュアなファームウェア更新メカニズム166を実行することができるようになる。これらの認証チェック全てにパスすると、制御は第2のコードモジュール170に渡され、これらがDXEコアを含んでよく、UEFIセキュアな起動モジュール174を実行してよい(例えばACPIメモリに格納されている測定ログ176を利用して)。次に、OS180をロードするOSローダ及びドライバ185が実行されてよく、OS180はUEFIに準拠したOSであってよい。他の実装例では、レガシーのOS190が、1以上の任意で設けられるROM195を介して実装されてよい。
上述したように、本発明の一実施形態のSICは、埋め込まれたメモリ論理を含んでよい。この論理は通常、メモリ参照コード(MRC)のバイナリ形態をカプセル化したものであってよく、メモリ参照コード(MRC)は、プロセッサの製造業者がOEMにメモリ等の初期化方法を知らせる目的で、ソースコードの形態でOEMに提供してよいBIOSモジュールのことである。しかし上の説明によれば、基礎となるハードウェアIPをOEMに見えない形で提供するために、埋め込みメモリ論理はバイナリ形式で提供されてよい。
EMLはプラットフォーム独立なために、プラットフォームに依存した問題を特定して提供する様々な情報が、EMLによりアクセス可能となる。一例としてはシステム基板のばらつきが挙げられる。例えば、プラットフォームごとに配線が異なるので、シリアル存在検知(SPD)/システム管理バス(SMBUS)マッピング、信号マッピング、タイミング、オンダイ終端(ODT)抵抗等が異なってくる。またさらに、さまざまに異なるOEMは、カスタマイズ/デバッグに対して異なる要件を有する場合があり、特に、OEMが対応するソースコードを有さないことから、エラーの記録/報告が問題となる。後述するように、一部の実施形態では、ハードウェアを提供してデバッグ処理を助けている。プラットフォーム間でのばらつきの他の例には、販売業者が非標準的なDIMMまたは逸脱した部分を選択しているために、これらの限定を理解するために周辺作業が発生するような場合も含まれる。実施形態では、EMLをクリアなインタフェースでコンポーネントの階層に組み込むことで、OEMにプラットフォームをパラメータ化させ、EMLのバイナリ提供を可能としてよい。
概して、EMLは、OEMが供給するプラットフォーム構成データをパースすることでメモリを初期化してよい。以下の説明はDDR3タイプのメモリで実装されたシステムメモリに関するものであるが、本発明の範囲はこの点に限定はされない。
図3は、本発明の一実施形態におけるEMLコードの実行を示すフロー図である。様々な実施形態では、システムをリセットすると、または、低電力状態からの再開時に、EMLに入ることができる(例えばS3状態)。図3からわかるように、方法200は、様々なレジスタを初期化することで開始されてよい(ブロック210)。様々な実施形態では、これらレジスタ及びバスは、PCI Express(登録商標)ベースのアドレスレジスタ、システム管理バス、汎用入出力(IO)レジスタ、及び、電力管理(PM)レジスタを含んでよい。一実施形態では、I/Oテーブル(例えばIO/メモリマッピングされたIO(MMIO)ポート及びプログラムへの値のリスト)を利用して、このステップを実装することができ、この場合には、IOテーブルが、プラットフォーム製造業者により供給されEMLにより実行されてよい。一定のデバイスがコードにより利用され、EMLの実行前の初期化が必要となることから、様々な初期化が生じうる。次に、処理がシステムへの電力投入または低電力状態(例えばS3)からの再開によって生じているかを決定してよい(ダイアモンド215)。最初の電力投入時には、制御はブロック220に渡されて、ここで取り付けられているシステムメモリが検知されてよい。一実施形態では、検知が、SMバスを介したSPDの読み取りによって生じてよい。DIMMを見つけることのできるアドレスは、プラットフォームに依存している。例えば、数多くのDIMMを有するより大きなプラットフォームは、SMバスに、様々なセグメント間を切り替えるためのマルチプレクサを実装してよい。
図3では、次に、メモリクロック比を決定してよい(ブロック240)。プラットフォームが特定のクロックレートをサポートしていなくてもよいために、この処理はプラット依存している可能性がある。つまり、クロック比は、メモリコントローラ/プラットフォームの設計のポピュレーション及びユーザの設定の少なくとも1つによって上限が設けられる場合がある。クロック比を設定した後に、制御はブロック250に進み、ここではメモリコントローラのグローバル初期化が行われてよい。このグローバル初期化によって、IMCがデフォルト状態へとリセットされる(例えば、IMC側でのODT提供の設定、及び、全ての信号について許可された最大ジッタ(参照電圧とサンプルされた電圧との間の差の最大値等))。様々な実施形態では、メモリコントローラは、図2を参照して上述した統合メモリコントローラであってよい。次に制御がブロック260に渡され、メモリ信号をメモリコントローラ信号にマッピングしてよい。ここでもまた、プラットフォーム依存信号ルーティングを行ってよい。例えばメモリコントローラは、最大8チップ選択(CS)信号を有してよく、DIMMは、最大4つの信号(4個のランクのDIMM)まで利用することができる。従って、メモリコントローラは、コマンドをあるランクに送る際に、チップ設定ピンのいずれをプルダウンするかを決定するよう構成されていてよい。例えば、DIMM1のCS0は、プラットフォームの配線に応じてIMCのCS2またはCS4に接続されてよい。この情報は、プラットフォーム製造業者により供給される。
次に制御がブロック270に渡されて、スタティックな構成を実行することができる。スタティックな構成とは、SPDから導出可能な全ての設定のことを示していてよい(例えば、トレーニングを用いて決定される「ダイナミック設定」に対する2DDRコマンドの間で必要となる遅延)。プラットフォーム依存の構成の一例としては、ブロック270で決定されるODT抵抗がプラットフォーム依存型であってよい。他のスタティック構成処理には、ODT起動及び抵抗選択に加えて、内部の論理対物理ランクマッピングが含まれてよい。これら選択と起動の詳細について説明する。ブロック280で、ここでもプラットフォーム依存であってよいトレーニングを実施して、一部のプラットフォームでは、トレーニングされていない一部の遅延に、デフォルト値とは異なる値を割り当ててよい。トレーニングを実行した後で、ブロック290でテストを実行してよい。そしてメモリマップが完了してよい(ブロック295)。メモリマップは、「チャネル/ランク/オフセット」のインターリーブへの「システムアドレス」への参照である点に留意されたい。つまり、IMCは、複数の「インターリーブ」モードをサポートすることができる。例えば、性能を上げるために、2つの連続した「システムアドレス」を2つの異なるチャネルにマッピングすることができ、同じチャネルを有する2つの連続したアドレスが、さらに2つの異なるランクにインターリーブされて、熱を分散することができる。
最初の電力投入ではなくて低電力状態からの起動によってEMLに入る場合には、制御はダイアモンド215からブロック230に渡されて、これはS3の再開経路であり、前に不揮発性ストレージに格納されていた構成情報を取得することができるが、これに関しては後で詳述する。つまりこの経路においては、情報は不揮発性メモリからテストを行わずに取得される。というのもテストを行うとメモリの内容が損なわれるからである。次に制御はブロック295で直接前に生成されたメモリマップに渡される。図3の実施形態にはこの特定の実装例を示したが、本発明の範囲がこの点に限定されないことは理解されたい。
図4は、本発明の一実施形態におけるEMLのさまざまなコンポーネントのブロック図である。図4に示すように、EML300は、汎用メモリ論理310、プロセッサ論理325、及びプラットフォーム論理330を含む様々な論理を含みうる。概して、メモリ論理310は、メモリ自身を初期化してイネーブルするための様々なコード(例えば、ランク論理312、DIMM論理314、及びチャネル論理315)を含むことができる。これら論理は、ランクのための信号及びMRS論理、DIMM及びDIMM/ランクポピュレーションのためのSPD及び信号論理、DDR3タイミング、ODT構成、及びチャネルのためのトレーニング及びテストシーケンスを含んでよい。またさらに、コードは、メモリコントローラの初期化、DIMM検知及びグローバルタイミングを実行するためのメモリ制御論理320を含んでよい。プロセッサ論理325は、ドライバとして実装されて、コマンド及びステータスのレジスタ操作、内部タイミング及びコマンド/トレーニングを実行してよい。プラットフォーム論理330は、トポロジー/配線、タイミング/遅延、ODT規則及び様々なデバイスを介してプラットフォームと相互作用してよい。別の実装例では、図4に示すコードが異なる量で、プロセッサ製造業者が提供するバイナリで実装されてもよい点に留意されたい。例えば汎用メモリ論理310及びプロセッサドライバ325がバイナリで実装されてよい。また別の実施形態では、プロセッサ論理325がバイナリとして実装されてよく、残りのコードがOEM BIOSで実装されてよい。
上述したようにEMLはプラットフォーム独立型である。このコードをバイナリ形式で配信するために、プラットフォーム固有のプラットフォームの様々な局面(例えばプラットフォーム依存したもの)を、EMLにアクセス可能な構成テーブルのデータとして表してよい。図3を参照して上述したように、メモリ初期化の一部は、抵抗と起動とを含むODT構成である。抵抗とは、DIMMが、信号を終端するために利用する抵抗のことであり、起動は、読み書きのコマンドをメモリチャネルのいずれかのランクに送信するときにメモリコントローラ(MC)が制御するODT信号のことである。ODT構成は、DIMMポピュレーションとDIMMスロット書き込み両方に依存している。従来のBIOSでは、これらの構成を、それぞれ異なるプラットフォームについて書き換えられるプラットフォーム依存関数で計算していた。これに対して、様々な実施形態では、初期化処理に関する全てのプラットフォームのカスタム化を、OEMコードでではなく、データで実装することができる。このようにしてプロセッサ製造業者(及びEMLプロバイダ)は、SICのセキュリティを保証することができる。
様々な実施形態では、ODT構成は、例外を規定する機能を有し、一般的且つコンパクトな形態でパラメータ化することができる。特にここで「ODT規則」と称されるデータ構造が、プラットフォーム用のODT構成を生成するために利用されてよい。このデータ構造あるいはODT規則は、プラットフォームの製造業者によって、例えばPMDの一部として供給されてよい。別の実装例では、このODT規則が一般的であっても固有であってもよい。ここで、あるプラットフォームが一般的及び固有の規則を両方とも有してもよい点にも留意されたい。EMLは、現れた順序で整合する規則を探すので、ほとんどの場合には固有の規則が一般的な規則の前に来る。一般的なODT規則は、複数のポピュレーションパターンに整合していてよく、ODT抵抗及び起動マトリックスを一般的なアルゴリズムによって計算することができる。固有のODT規則は1つのポピュレーションパターンに整合している。固有のODT規則では、ODT抵抗がこの規則で所与となっており、起動マトリックスは一般的なアルゴリズムによって生成することができる。いずれの場合であっても、起動マトリックスは、ODT規則に追加されたフラグにより無効にされてよい。
一実施形態では、様々な情報が1つのODT規則内に含まれていてよい。一般的な規則及び固有の規則両方について、ビットマスクとして実装可能な、規則を適用するメモリチャネルセット、ランクの公称抵抗値Rtt_Nom、及び、ランクの書き込み抵抗値Rtt_Wr、及び、起動マトリックスを無効にするフラグが含まれてよい。JEDEC規格では、そのODTピンがメモリコントローラによってアサートされると、DRAMデバイスがODTを起動する。現在のコマンドが書き込みコマンドではない限り、Rtt_Nomが利用され、現在のコマンドが書き込みコマンドである場合には、Rtt_Wrが代わりに利用される。一実施形態では、これらのフラグは自身の読み出しのオン、ピアの読み出しのオン、自身の書き込みのオン、および、ピアの書き込みのオンを含んでよい。
一般的な規則では、ODT規則はさらに、規則を適用するDIMMセット(例えばDIMMのビットマスクまたは最大インデックス)をチャネル内に含み、DIMMの公称抵抗値及び書き込み抵抗値Rtt_Nom及びRtt_Wrを含んでよい。この抵抗は、同じDIMM内でランクごとに分割されてもよい点に留意されたい。
固有の規則については、ODT規則が、特定のポピュレーションに整合させるためのポピュレーションパターン、ランクについてのRtt_Nom及びRtt_Wrに対する抵抗をさらに含んでよい。Rtt_Wr及びRtt_Nomはランクごとに特定することができる。
ODT規則を整合させるために、メモリの各チャネルについてポピュレーションパターンを計算してよい。一般的には、Nビットを利用して、論理ランクをN個までサポートするチャネルを記述してよい。あるチャネルに対するポピュレーションパターンの計算は、一実施形態では以下のように行うことができる。
マスク=0
Figure 0005540155
従って、この計算によって、dランクのチャネルのポピュレーションパターンを一意に特定するマスクが提供される。
ポピュレーション及び様々な1つのランク(SR)についての符号、デュアルランク(DR)及び4個のランク(QR)メモリ構成の例は以下のようになる。 SR - 00000001b
DR/DR - 00100010b
DR/QR - 00101000b
DR/DR/DR/DR -10101010b
計算されたパターンは、ODT規則のリストとの比較に利用することができる。これは、最初の規則のみが有効なケースである、複数の規則に整合させるポピュレーションについて可能である点に留意されたい。一般的にはOEMでは、データ構造内の一般的な規則の前に固有の規則を配置することで、あるパターンが先ずはその固有の規則に整合するようにしている。
一実施形態では、起動マトリックスが以下の規則に従って生成されてよい。
Figure 0005540155
ACT[R]は、VDDに接続されていない場合の読み出しコマンドのODTマスクであり、ACT[W]は、書き込みコマンドのODTマスクであり、これ以外の場合には書き込みマスクは読み出しマスクと同じである。従って2つのマトリックスが存在する可能性があり、このうち1つが読み出しコマンドのものであり他方が書き込みコマンドのものである。マトリックスは論理ランク番号によりインデックスされるアレイである。マトリックスの全てのエントリは、IMCがあるチャネルについて有しているODTピン数と同じ数のビットのビットマスクである。IMCは、読み出しコマンドの場合には、ACT[R][targeted_rank_#]に従ってODT制御ピンをアサートして、書き込みコマンドの場合には、ACT[W][targeted_rank_#]をアサートする。ほとんどの場合、ACT[W][rank_#] = ACT[R][rank_#] | (1 << rank_#)である。従ってアルゴリズムは、ODT規則により無効化されない場合に、デフォルトの振る舞いとしてこれを記述する。VDDは例外であり、この場合にはIMCが対象とされているランクのODT制御ピンを制御しない。計算後であってMC構成に適用する前に、整合しているODT規則に追加されたフラグに基づいて起動マトリックスを改定することができる。公称終端抵抗及び書き込み終端抵抗は、以下の仮定に基づいていてよい。つまり、普通の処理についてのDIMMの全終端抵抗は、そのDIMMにあるランク数に関わらず同じである。また、1つのチャネル内の全てのDIMMについて同じ抵抗を利用することができる。
ほとんどの場合、これら仮定が成り立っている。成り立っていない場合には、固有の規則を利用してデフォルトの規則を無効にすることができる。一般的な規則については、Rtt_NomをDIMMレベルで特定する。つまり、1を超える数のランクが存在している場合には、Rtt_Nomを、MCに接続されているODT制御信号を有する全てのランク間で分割してよい。DDR3仕様では、DIMM1つについて最大で2つのODT信号しかないので、以下の3つの場合が想定される。1つ目の場合は、DIMMにODT制御信号が接続されていない場合、Rtt_Nomをディセーブルする。もしODTが1つだけ接続されている場合には、Rtt_Nomを、接続されているランクのRtt_Nomとして利用する。2つのODT制御信号が接続されている場合には、Rtt_Nom*2がDDR3仕様の符号を有さない限りにおいて、Rtt_Nom値を接続されているランク両方に利用する(Rtt_Nom*2がDDR3仕様の符号を有する場合には、第2のODTが切断されたものとして、第1のランクはRtt_Nomを直接利用する)。固有のODT規則については、Rtt_Nom及びRtt_Wrをこのランクレベルで特定して直接利用する。
図5は、本発明の一実施形態における終端抵抗を決定する方法のフロー図である。図5に示すように、方法400は、あるポピュレーションパターンについて整合するODT規則を発見することから始められてよい(ブロック410)。上述したように、ポピュレーションパターンは、あるチャネルについて計算されてよく、次にこのパターンを利用してODT規則のリストとの比較を行うことができる。次に制御はダイアモンド415に渡され、あるDIMMについて全てのランクについて第1のループが行われたかを判断してよい。判断結果が否定的である場合には、制御はブロック420に行き、公称終端抵抗を所与のランクのディセーブルした値に対して設定して、書き込み終端抵抗をODT規則からの書き込み終端抵抗値に対して設定することができる。このことからわかるように、このループは、ランク内の全てのループについて設定が作成されるまで行われてよい。
そして制御がブロック425に渡されて、ODT制御信号に接続されるランク数が決定されてよい。ダイアモンド430で、制御信号の数は0、1、または2と決定されてよい。0である場合には、上述したように、公称終端抵抗をディセーブルして、制御を次のDIMMに渡す(ブロック480)。単一の制御信号のみが接続されている場合には、制御はブロック470に渡されて、ここで任意のランクについて公称終端抵抗を、ODT規則から得た終端抵抗に設定してよい。次に、上述したようにブロック480に制御を渡す。
代わりに2つの制御信号が接続されている場合には、制御はダイアモンド435に渡されて、公称終端抵抗の二倍の値が、あるメモリ仕様の符号(例えばDDR3仕様)を有しているかを判断してよい。判断結果が否定的である場合には、制御をブロック470に渡して、第1のランクが、ODT規則からの公称終端抵抗を直接利用してよい。判断結果が肯定的である場合には、制御がブロック440に渡されて、ここで第1のランクをODT規則の抵抗の二倍の公称終端抵抗に設定することができる。そして制御をダイアモンド445に渡して、この第1のランク以外の全てのランクをループする。ダイアモンド450で、所与のランクが、供給電圧(VDD等)に接続されているODT制御ピンを有するか(つまり全時点でODTが存在しているか)を判断する。判断結果が肯定的である場合には制御はダイアモンド445に戻る。判断結果が否定的である場合には、制御はブロック460に渡され、このランクを、ODT規則の値の二倍の公称終端抵抗に設定する。本発明の範囲は、図5の実施形態に示すこの点に限定はされない。この方法を利用すると、終端抵抗を計算することができ、表1に示すように、ODT起動マトリックスをODT規則の情報から計算することができるので、様々なメモリ構成(ODT構成を含む)をコンパクトな形態でパラメータ化することができ、EMLのバイナリでの配信を可能とすることができる。
従って、本発明の一実施形態を利用することで、ODT構成をコンパクトな形態にパラメータ化することができ、本発明の一実施形態に従ってEMLのバイナリでの分配を可能とすることができる。従って、OEMは、純粋なデータ(ODT規則のデータ構造)を利用してメモリチャネルにメモリ初期化を実行するための情報を提供することができる。
記載してきたように、ほとんどのプラットフォームの初期化はSICバイナリを利用して、OEMがソースコードにアクセスしないようにして行うことができる。しかし、SICが失敗した場合、特に、新たなプラットフォームの開発中には、OEMがこれらコードの内部状態をチェックしたい場合もでてくるので、いままでどおりコードの内部状態を、ある程度第三者に開示する必要があるだろう。さらに時折第三者はある段階(例えば1つのステップ)でSIC実行を停止して、配線が送信する波形をとるためにオシロスコープを接続すること等によって、ハードウェアを診断したいと望む場合があってもおかしくない。一部の電力状態の遷移においては(例えばS3からの再開時)、一部の初期化を省略して、S3に入る前にセーブした情報を利用してシリコンを再構成することができる。
実施形態では、SICの内部状態を露呈させて、第三者の処理に適合させるための画一化された方法を提供することができる。こうするために、SICは、再上位レベル段階に分割及び定義して、各再上位レベルの段階において1以上の副段階があるようにする。段階の定義によって、SICコンポーネントを実行することで行われている処理を特定することができる。1以上の段階レジスタを提供して、読み出されたときのSICの現在の段階を報告して、書き込まれるときには固有の段階番号でSIC実行を停止させることができる。そして各段階において、SIC実行の全ての内部パラメータに固有のインデックスを割り当ててよい。コマンドインタフェース(例えばCSR対)を利用して、インデックスを付されたパラメータの読み出し/書き込みを実行することができる。パラメータは、将来のシリコン/ハードウェアに追加/除去することができ、パラメータが別の改定のままとどまる場合には、そのインデックスは変化しない。
本発明の一実施形態におけるEMLの格納定義の一例を以下に記す。1)DIMM検知、2)スタティックな構成、3)トレーニング、及び4)テストである。これら段階は、図3の方法に示す順序で行われてよい。段階の1以上がさらに1以上の副段階を含んでよい。例えばODT構成のためには副段階2Aがあってよい。この副段階に関する情報を段階レジスタに書き込み、スナップショットをとることができる。スナップショットには、全てのチャネルについてODT起動マトリックスが含まれてよく、全てのDIMMの全てのランクについての抵抗値が含まれていてよい。この情報はEML実行の内部データであるが、これらパラメータがDDR3仕様によって定義されていることから、基盤となるMCハードウェアの実装の詳細は明らかにされない。
一実施形態では、CSR内の特定の命令または特定の制御ビットを利用して、SICにある段階/副段階の内部状態のスナップショットをとり、格納するよう命令することができる。例えばストレージを、RAMとしてのキャッシュ(CAR)の位置等のプロセッサの内部メモリに設定することができる。格納されている情報は、ハードウェアの問題のデバッグまたは電力状態の遷移の実装(S3に入ること、及び、S3から再開すること等)の際に有用である場合がある。特に、電力状態の遷移の場合には、遷移を始めるプログラムが悪意を有しており、システム管理RAM(SMRAM)その他の保護メモリ等の保護されているメモリ領域へのアクセスを目指してセーブされた状態を傍受しようと試みる場合があるために、注意が必要である。しかし一実施形態では、このような攻撃を回避するためには鍵付キャッシュで十分である場合もあろう。
図6は、本発明の一実施形態におけるプロセッサのブロック図である。図6に示すように、プロセッサ500はマルチコアプロセッサであってよい。しかし図示の便宜上、1つのコア505のコンポーネントしか示していない。図からわかるように、任意のコアに実行論理510が含まれていてよく、様々な実施形態では、1以上の実行ユニットが含まれてフロントエンドのユニットが提供する処理を実行する。実行の後に、様々なバックエンドのユニットが、結果を受け取り、順序立てて回収する。データに処理を行うべく、実行論理510は、レジスタファイル520と通信してよく、様々な実施形態では、これは、スカラーレジスタとベクトルレジスタの両方を含む複数のレジスタを含んでよい。
加えて、本発明の一実施形態では、1以上の段階レジスタ560を提供してよい。図6の実施形態からわかるように、複数の段階レジスタ565−565があってよい。各段階レジスタは、SICの任意の段階と関連付けられていてよい。一部の実施形態では、別個のSIC論理(ECL及びEML)の各個々のコンポーネントが、最上位の段階として特定されてよく、これらのそれぞれが副段階を含んでよい。わかるように、各段階レジスタ565は、任意の最上位段階に加えて、1以上の副段階のストレージを含んでよい。しかし他の実施形態では、読み出されて現在実行中の段階を特定したり、書き込まれて任意の段階の実行を停止したりさせることのできるような1つの段階レジスタのみが提供されてもよい。
さらに図からわかるように、他のコンポーネント(様々な実施形態でS3状態等の低電力状態への入退出を制御することのできる電力管理ユニット(PMU)550等)がプロセッサ内に存在していてよい。図6の実施形態では、プロセッサはさらに、システムメモリ(図6には不図示)と通信してよい統合メモリコントローラ530を含んでよい。上述したように、このメモリコントローラの構成は、EMLを利用して実行することができる。加えて、1以上のキャッシュメモリを提供してよい。示されている実施形態では、キャッシュメモリ540が、一時的なデータストアとして利用されてよい。一部の実施形態では、これらキャッシュが、スナップショットデータのストレージの位置を含んでいてよい。インデックスとパラメータデータとを含む形態で格納されていてよいスナップショットデータを格納するものであってよいエントリ545が図示されている。パラメータには、IMCの構成データ、またはMCが報告するステータスコードが含まれてよい。これらは、ハードウェアの内部にあってよく、ここでいうインデックス/データのCSR対は、これらパラメータにソフトウェアがアクセスするためのインタフェースである。スナップショットは、ステータスレジスタがIMC状態を電力状態遷移に復元する必要がないために、これらインデックス/データ対のダンプであり、包括的である必要はない。一部の実施形態では、SIC/EMLが別のインデックス/データレジスタ対を提供して、ソフトウェアの行う、メモリまたはプロセッサの内部ストレージからのIMCスナップショットの解釈を助けることができる。図6の実施形態にはこの特定の実装例を示したが、本発明の範囲がこの点に限定されないことは理解されたい。
例えば低電力モード(S3)からの再開は、スナップショットを利用しうる利用モデルであってよい。しかし、このスナップショットをとる動作は、SICがプラットフォームBIOS前に動作していることから、ソフトウェアにより開始することができない。この代わりに、スナップショットは、自動的に行われ、SICによってメモリに格納され(例えばEMLによるトレーニング及びテストが完了した後で)、CARは、BIOSの開始前に終端されてよい。一実施形態では、スナップショットを格納するアドレスは予め定義されている(例えばチャネル0のランク0のアドレス0)。例えばOEMコードを介して後に、スナップショットを不揮発性ストアに移し、ポインタをFITに書き込み、EMLがこれを後で発見できるようにする(例えばS3の再開の開始時に)。S3の再開中に、SICは、FITに格納されているアドレスを利用して不揮発性ストレージからスナップショットを読み出すことができる(図3の方法に示すように)。従って低電力状態(S3)から再開すると、この状態にアクセスして、性質上時間のかかりうる様々なメモリ構成パラメータの計算を回避することができる。セキュリティを考慮すると、アドレスは定数であってよく(例えばFITの署名が保護されていてよい)、BIOSがプラットフォームの不揮発性ストレージ内の同じアドレスにスナップショットを格納してよい。
図7は、低電力状態再開中のスナップショットを生成してその後で利用する方法のフロー図である。図7からわかるように、方法600は、メモリを初期化することで開始されてよい(ブロック610)。このEMLを利用したメモリ初期化は、システムの最初の電力投入時に行われてよい。この実施形態では、SICは(及びより詳しくはEMLは)、メモリ構成のスナップショットをとるコードを含んでよい(ブロック620)。例えばこのスナップショットは、上述したように様々な構成情報を有してよく、最初にはプロセッサキャッシュメモリのCAR部分に格納されていてよい。SICが完結して制御がOEM BIOSに渡されると、BIOSはこのスナップショットを不揮発性ストレージにセーブしてよい(ブロック630)。例えばスナップショットはOEMフラッシュに格納されてよい。
図7は、システムの動作中に低電力状態が開始されると仮定している。従って、プロセッサ及びシステムメモリを含む様々なシステムコンポーネントが、低電力状態とされてよい。この低電力状態から再開すると(例えばSICに従って)、例えばFITに格納されているポインタからスナップショットの位置にアクセスして、スナップショットを不揮発性ストレージから読み出す(ブロック640)。そして、スナップショットを利用して、メモリコントローラ構成を復元することができる(ブロック650)。このときに、制御をOEMコード(BIOS)に、またはOSに、S3再開ベクトルの識別情報を介して渡すことができる(ブロック650)。図7の実施形態にはこの特定の実装例を示したが、本発明の範囲がこの点に限定されないことは理解されたい。
このスナップショットをS3からの再開処理に利用することに加えて、実施形態ではさらに、スナップショットをEMLの実行速度を上げるためにも利用する。つまり上述したように、特にメモリ技術では周波数が増えることから、メモリトレーニングは時間集約的な作業になるので、メモリコントローラは、メモリモジュールと適切な通信を行うためにより正確なタイミングパラメータを利用する。しかしこれらのパラメータは普通ハードコード化されておらず、ランタイムにおいて決定される。従ってメモリトレーニングは、一定のパラメータの一定の範囲内で適切な値を探す処理を含む。周波数が上がると、より多くのトレーニングが必要となるので、EML完了まで時間が長くかかるようになる。同様に、S3の再開には、プラットフォームをS3に入る前の状態に復旧することが含まれる。プラットフォームに対してメモリDIMMが追加、除去されていないことを想定する場合にはトレーニングは不要であり、通常の起動中にS3処理でセーブされたパラメータを単純復旧するだけで、MC状態を機能するよう復旧することができる。
上述したように、S3をサポートするためには、MC状態のスナップショットをプラットフォームのフラッシュにセーブして、EMLがS3の再開動作中にロードできるようにする。しかしユーザがS3を開始しておらず、プラットフォームを直接シャットダウンしてしまった場合には、スナップショットが破棄されており、通常起動時に全てのパラメータを始めから決定していく必要がある。つまり、無効であれば、またはユーザが完全起動を望んだ場合にはスナップショットが破棄される、ということである。例えばユーザは、BIOSがスナップショットを不揮発ストアに成功裏に移動する前に、プラットフォームの停止を望む場合があり、この場合には無効なスナップショットとなる。
本発明の一実施形態を利用すると、EMLはS3のスナップショットの利用を先ず試行することができる。DIMMは追加、削除、または置き換えられているので、メモリテストを実行してパラメータを有効化することができる。テストが失敗したということは、DIMMポピュレーションが変化したことを示しているので、EMLは全てのランクを最初からトレーニングするべく後退処理を実行することができる。これらメモリテスト及びトレーニングは、ランクごとに行われてよい。失敗したランクのみをトレーニングすることで、消費する時間は全てのランクのトレーニングを行う場合と比べて格段に短くなる。しかし、全ての場合にこの増分的なトレーニングが適しているわけではない。特に、論理から物理へのランクマッピングが変化した場合などがその一例である。一部の実施形態では、プラットフォームのユーザが利用可能な構成可能なフラグを利用して、増分的なトレーニングではなくて完全なトレーニングを強制試行する。
一部の実装例では、S3のシャットダウンからセーブされたハードウェア状態は、不揮発性ストレージにセーブされた後に、システムの次の通常起動時に再利用されることもある。このようにすると、より迅速な起動が行われるだろう。さらに一定のテストを実行してこれらの安全な設定を有効化することもできる。そして、このテストに失敗したメモリランクについては、増分的なトレーニングを行うようにすることでトレーニングにかかる時間を短くすることができる。従い、システムの再起動からメモリポピュレーションに変化があまりない、または全くない場合には、起動をより迅速に行うことができるようになる。
一実施形態では、タイミングパラメータを物理ランクごとに格納することができる。全ての論理ランクは、「有効」ビットを有して、前の起動時の自身の存在を示し、「存在」ビットは、現在の起動において存在していることを示している。セーブされた構成をロードした後に、SPDを読み出して、ポピュレーションの変化を検知して、存在フラグをこれに従って更新する。論理から物理へのランクマッピングが変化した場合には、新たなポピュレーションのパターンに従ってタイミングパラメータを移行させることができる。例えば、今は同じランクにマッピングされているが別の物理ランクにマップするために利用される同じDIMMに2つのランクがあるとすると、元のタイミング設定の平均を、これら論理ランクの両方についての新たな設定として利用することができる。
図8は、本発明の一実施形態におけるメモリ初期化に対する増分的なトレーニングを行う方法のフロー図である。図8に示すように、方法700は、EML実行期間中であって、前に起動され、そのためのメモリ構成情報またはスナップショットが不揮発性ストレージに前に格納されていたシステムのメモリを初期化するときに、実装されてよい。図8に示すように、方法700は、不揮発性ストレージ(例えばOEMフラッシュメモリ)にセーブされている状態をロードすることで開始されてよい(ブロック710)。この構成情報には、前の起動で存在していた全てのランクについて設定された有効なフラグが含まれていてよい。そして現在のメモリポピュレーションを検知してよい(ブロック720)。このようにして、追加/除去されたDIMMを特定することができる。現在のポピュレーションのポピュレーション化していない(unpopulated)ランクについては、検知に基づいて存在フラグをクリアする。
次に制御はダイアモンド730に渡され、ここでループを全てのメモリランクについて実行する。特にダイアモンド740では、このランクについて有効なフラグが設定されているかを判断してよい。つまり、セーブされている状態からの有効なフラグをチェックして、設定されているかを判断することができる(前の起動で所与のランクが存在していたことが示される)。判断結果が肯定的な場合には、ブロック750で生じたリンクのトレーニングをバイパスすることができ、制御は直接ブロック760に渡されて、ランクのテストが行われる。テストにパスすると(ダイアモンド770で決定される)、制御はブロック775に渡されて、これが最終的に残っているランクであるかが判断される。判断結果が否定的である場合には、ダイアモンド740から始まるループの実行を続ける。ダイアモンド770で、テストが失敗したと判断されると、制御はブロック780に渡されて、そのランクについての有効なフラグをクリアすることができる。
図8の参照を続け、全てのランクがダイアモンド740から始まるループを通過すると、制御はダイアモンド790に渡されて、ここで有効なフラグをクリアされたランクがあるか(つまり、そのランクが最後の起動に存在していないことを意味する)を判断する。判断結果が肯定的である場合には、制御がダイアモンド730から始まるブロックに戻る。判断結果が否定的である場合には図8の方法は完了してよい。
実施形態はコードで実装されてよく、システムを、命令を実行するようプログラミングするために利用されうる命令を格納した格納媒体に格納されてよい。格納媒体には、これらに限定はされないが、フロッピー(登録商標)ディスク、光ディスク、固体ドライブ(SSD)、CD−ROM、CD−RW、及び光磁気ディスクなど、あらゆる形態のディスク、読み出し専用メモリ(ROM)、動的ランダムアクセスメモリ(RAM)及び静的RAMなどのRAM、消去可能プログラム可能型ROM(EPROM)、電気的消去可能ROM(EEPROM)、磁気カード、光カードなどのあらゆる形態の半導体デバイス、ならびに、その他電気的命令の格納に適したあらゆる形態の媒体などが含まれる。
本発明を限られた数の実施形態を参照して説明してきたが、当業者であれば各種の変形例及び変更例を想到するだろう。添付請求項は、本発明の真の精神及び範囲内に含まれるこれら全ての変形例及び変更例を含むことを意図している。

Claims (21)

  1. 装置であって、
    プロセッサ製造業者のプラットフォーム独立コードに対応する半導体統合コード(SIC)を格納する不揮発性ストレージを備え、
    前記SICは、メモリコントローラの初期化によって、メモリを初期化するための埋め込みメモリ論理(EML)を含み、メモリ信号のマッピングは、前記EMLを介してアクセス可能なオンダイ終端データ構造(ODTデータ構造)を利用し、前記ODTデータ構造は、相手先ブランド製造業者(OEM)が提供し、前記メモリのプラットフォーム依存メモリ構成のパラメータ化された規則セットに対応しており、
    前記SICは、プロセッサのリセットに呼応して、前記OEMの起動前コードに制御を提供する前に実行される、装置。
  2. 前記SICをロードする最初のプログラムローダ(IPL)をさらに備え、
    前記IPLは、前記プロセッサのマイクロコードから導入され、
    前記IPLは前記SICを認証してから前記SICを導入する、請求項1に記載の装置。
  3. 前記EMLは、前記ODTデータ構造を利用して前記メモリのODT抵抗を計算する、請求項1または2に記載の装置。
  4. 前記EMLは、前記ODTデータ構造を利用して前記メモリの起動マトリックスを計算する、請求項1から3のいずれか一項に記載の装置。
  5. 前記EMLは、前記ODTデータ構造のポピュレーション情報に基づいて前記メモリのチャネルのポピュレーションパターンを計算する、請求項1から4のいずれか一項に記載の装置。
  6. 前記EMLは、前記ポピュレーションパターンをODT規則のリストと比較する、請求項5に記載の装置。
  7. 前記EMLは、前記ODT規則のリストの情報を利用して、公称終端抵抗と書き込み終端抵抗とを計算する、請求項6に記載の装置。
  8. プロセッサ製造業者が提供する埋め込みメモリコード(EMC)を利用してシステムの第1の電力投入中に前記システムのプロセッサに連結されたメモリを初期化することで、前記メモリとメモリコントローラとを初期化して、前記システムの相手先ブランド製造業者(OEM)が提供し、プラットフォーム依存情報のパラメータ化された規則セットに対応しており、前記EMCを介してアクセス可能なオンダイ終端データ構造(ODTデータ構造)を利用して前記メモリのメモリ構成を生成する段階と、
    前記プロセッサの少なくとも1つの段階レジスタに前記メモリ構成のスナップショットを格納する段階と、
    OEM BIOS(basic input/output system)に制御を渡す前に、前記システムの不揮発性ストレージに前記スナップショットをセーブする段階と
    を備える方法。
  9. 前記プロセッサの低電力モードから退出時に、前記不揮発性ストレージに格納されている前記スナップショットにアクセスする段階をさらに備える、請求項8に記載の方法。
  10. 前記スナップショットを利用して前記メモリコントローラの構成を復旧した後に、再開ベクトル識別子を利用して前記OEM BIOSに制御を渡す段階をさらに備える、請求項8または9に記載の方法。
  11. 前記EMCを利用して、前記システムの第2の電力投入中に前記不揮発性ストレージに格納されている前記スナップショットにアクセスする段階をさらに備える、請求項8から10のいずれか一項に記載の方法。
  12. 前記メモリの現在のメモリポピュレーションを検知して、格納されている前記スナップショットのメモリ構成と比較して、前記比較に呼応して増分的なトレーニングを施す段階をさらに備える、請求項8から11のいずれか一項に記載の方法。
  13. 前記増分的なトレーニングでは、前記メモリのランクに有効なフラグが設定されているかを判断して、判断結果が肯定的である場合に、前記ランクについてのランクトレーニングをバイパスして、前記判断結果が否定的である場合に、前記ランクトレーニングを実行する、請求項12に記載の方法。
  14. システムであって、
    複数のコアと不揮発性メモリとを有するプロセッサと、
    相手先ブランド製造業者(OEM)のファームウェアを格納するフラッシュメモリと、
    前記プロセッサに連結されたシステムメモリと
    を備え、
    前記不揮発性メモリは、前記プロセッサの製造業者のプラットフォーム独立コードに対応する半導体統合コード(SIC)を含み、
    前記SICは、前記プロセッサと、前記プロセッサを前記システムメモリに連結する少なくとも1つのリンクとを初期化する埋め込みプロセッサ論理を含み、
    前記システムメモリを、埋め込みメモリ論理(EML)を介してアクセス可能なオンダイ終端データ構造(ODTデータ構造)を利用して初期化する前記EMLを含み、
    前記ODTデータ構造は、相手先ブランド製造業者(OEM)が提供し、前記システムメモリのプラットフォーム依存メモリ構成のパラメータ化された規則セットに対応しており、
    前記SICは、複数の第1レベルの段階に分割されて、各段階が少なくとも1つの第2レベルの段階を配下に有し、前記複数の第1レベルの段階それぞれ内では、固有のインデックスが各内部パラメータに割り当てられており、前記プロセッサはさらに、前記SICの実行中に現在の第1レベルの段階を格納する少なくとも1つの段階レジスタを含む、システム。
  15. 前記プロセッサは、前記少なくとも1つの段階レジスタから前記現在の第1レベルの段階を読み出し、前記現在の第1レベルの段階を格納ユニットに格納する、請求項14に記載のシステム。
  16. 前記プロセッサは、予め定められた第1レベルの段階が前記少なくとも1つの段階レジスタに書き込まれるときに、前記予め定められた第1レベルの段階での前記SICの実行を停止する、請求項14または15に記載のシステム。
  17. 前記プロセッサは、前記予め定められた第1レベルの段階での前記SICの実行の内部状態のスナップショットを格納する、請求項16に記載のシステム。
  18. 前記OEMは、前記スナップショットを利用して前記システムをデバッグする、請求項17に記載のシステム。
  19. 前記スナップショットは不揮発性ストレージに格納されており、低電力状態から再開するとき前記SICによりアクセスされる、請求項17または18に記載のシステム。
  20. 前記SICは、ファームウェアインタフェーステーブル(FIT)にアクセスして、前記スナップショットの位置を判断する、請求項17から19のいずれか一項に記載のシステム。
  21. 前記SICは、前記リンクをトレーニングすることなく、前記スナップショットを利用することで、前記プロセッサのメモリコントローラと前記システムメモリとを初期化する、請求項17から20のいずれか一項に記載のシステム。
JP2013520735A 2010-07-22 2011-07-12 プラットフォーム独立メモリ論理の提供 Expired - Fee Related JP5540155B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/841,811 2010-07-22
US12/841,811 US8312258B2 (en) 2010-07-22 2010-07-22 Providing platform independent memory logic
PCT/US2011/043638 WO2012012218A2 (en) 2010-07-22 2011-07-12 Providing platform independent memory logic

Publications (2)

Publication Number Publication Date
JP2013532864A JP2013532864A (ja) 2013-08-19
JP5540155B2 true JP5540155B2 (ja) 2014-07-02

Family

ID=45494512

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013520735A Expired - Fee Related JP5540155B2 (ja) 2010-07-22 2011-07-12 プラットフォーム独立メモリ論理の提供

Country Status (8)

Country Link
US (1) US8312258B2 (ja)
EP (1) EP2596423B1 (ja)
JP (1) JP5540155B2 (ja)
KR (1) KR101407835B1 (ja)
CN (1) CN103119554B (ja)
AU (1) AU2011279939B2 (ja)
TW (1) TWI482084B (ja)
WO (1) WO2012012218A2 (ja)

Families Citing this family (50)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8327115B2 (en) 2006-04-12 2012-12-04 Soft Machines, Inc. Plural matrices of execution units for processing matrices of row dependent instructions in single clock cycle in super or separate mode
EP2527972A3 (en) 2006-11-14 2014-08-06 Soft Machines, Inc. Apparatus and method for processing complex instruction formats in a multi- threaded architecture supporting various context switch modes and virtualization schemes
KR101685247B1 (ko) 2010-09-17 2016-12-09 소프트 머신즈, 인크. 조기 원거리 분기 예측을 위한 섀도우 캐시를 포함하는 단일 사이클 다중 분기 예측
CN108376097B (zh) 2011-03-25 2022-04-15 英特尔公司 用于通过使用由可分割引擎实例化的虚拟核来支持代码块执行的寄存器文件段
CN103547993B (zh) 2011-03-25 2018-06-26 英特尔公司 通过使用由可分割引擎实例化的虚拟核来执行指令序列代码块
EP2689326B1 (en) 2011-03-25 2022-11-16 Intel Corporation Memory fragments for supporting code block execution by using virtual cores instantiated by partitionable engines
US9170878B2 (en) 2011-04-11 2015-10-27 Inphi Corporation Memory buffer with data scrambling and error correction
TWI603198B (zh) 2011-05-20 2017-10-21 英特爾股份有限公司 以複數個引擎作資源與互連結構的分散式分配以支援指令序列的執行
WO2012162189A1 (en) 2011-05-20 2012-11-29 Soft Machines, Inc. An interconnect structure to support the execution of instruction sequences by a plurality of engines
US8996747B2 (en) * 2011-09-29 2015-03-31 Cypress Semiconductor Corporation Methods and physical computer-readable storage media for initiating re-enumeration of USB 3.0 compatible devices
US8843664B2 (en) * 2011-09-29 2014-09-23 Cypress Semiconductor Corporation Re-enumeration of USB 3.0 compatible devices
EP2783280B1 (en) 2011-11-22 2019-09-11 Intel Corporation An accelerated code optimizer for a multiengine microprocessor
WO2013077876A1 (en) 2011-11-22 2013-05-30 Soft Machines, Inc. A microprocessor accelerated code optimizer
US20140089573A1 (en) * 2012-09-24 2014-03-27 Palsamy Sakthikumar Method for accessing memory devices prior to bus training
US9720703B2 (en) * 2012-11-26 2017-08-01 International Business Machines Corporation Data driven hardware chips initialization via hardware procedure framework
US9569216B2 (en) 2013-03-15 2017-02-14 Soft Machines, Inc. Method for populating a source view data structure by using register template snapshots
US9632825B2 (en) 2013-03-15 2017-04-25 Intel Corporation Method and apparatus for efficient scheduling for asymmetrical execution units
US10275255B2 (en) 2013-03-15 2019-04-30 Intel Corporation Method for dependency broadcasting through a source organized source view data structure
US10140138B2 (en) 2013-03-15 2018-11-27 Intel Corporation Methods, systems and apparatus for supporting wide and efficient front-end operation with guest-architecture emulation
US9891924B2 (en) 2013-03-15 2018-02-13 Intel Corporation Method for implementing a reduced size register view data structure in a microprocessor
US9886279B2 (en) 2013-03-15 2018-02-06 Intel Corporation Method for populating and instruction view data structure by using register template snapshots
US9904625B2 (en) 2013-03-15 2018-02-27 Intel Corporation Methods, systems and apparatus for predicting the way of a set associative cache
WO2014150991A1 (en) 2013-03-15 2014-09-25 Soft Machines, Inc. A method for implementing a reduced size register view data structure in a microprocessor
WO2014150971A1 (en) 2013-03-15 2014-09-25 Soft Machines, Inc. A method for dependency broadcasting through a block organized source view data structure
CN105247484B (zh) 2013-03-15 2021-02-23 英特尔公司 利用本地分布式标志体系架构来仿真访客集中式标志体系架构的方法
US9811342B2 (en) 2013-03-15 2017-11-07 Intel Corporation Method for performing dual dispatch of blocks and half blocks
WO2014150806A1 (en) 2013-03-15 2014-09-25 Soft Machines, Inc. A method for populating register view data structure by using register template snapshots
EP2972845B1 (en) 2013-03-15 2021-07-07 Intel Corporation A method for executing multithreaded instructions grouped onto blocks
US9304779B2 (en) 2013-06-04 2016-04-05 Avago Technologies General Ip (Singapore) Pte. Ltd. Optimizing boot time of a storage system
US9189631B2 (en) 2013-06-07 2015-11-17 Dell Inc. Firmware authentication
CN104239026B (zh) * 2013-06-21 2019-12-27 伊姆西公司 用于度量存储系统性能的方法和装置
WO2015048922A1 (en) * 2013-10-02 2015-04-09 Intel Corporation Trusted boot and runtime operation
CN104572166A (zh) * 2014-03-21 2015-04-29 中电科技(北京)有限公司 一种基于飞腾台式计算机的uefi固件实现方法
US9864861B2 (en) * 2014-03-27 2018-01-09 Intel Corporation Object oriented marshaling scheme for calls to a secure region
US9594927B2 (en) 2014-09-10 2017-03-14 Intel Corporation Providing a trusted execution environment using a processor
US10372760B2 (en) * 2014-09-26 2019-08-06 Oracle International Corporation Building queries directed to objects hosted on clouds
CN105701019A (zh) * 2014-11-25 2016-06-22 阿里巴巴集团控股有限公司 一种内存管理方法以及装置
US10877530B2 (en) * 2014-12-23 2020-12-29 Intel Corporation Apparatus and method to provide a thermal parameter report for a multi-chip package
WO2017049594A1 (en) * 2015-09-25 2017-03-30 Intel Corporation Efficient memory activation at runtime
US10725677B2 (en) * 2016-02-19 2020-07-28 Sandisk Technologies Llc Systems and methods for efficient power state transitions
US10114952B2 (en) * 2016-03-30 2018-10-30 Mcafee, Llc System, apparatus and method for performing secure memory training and management in a trusted environment
EP3274896B1 (en) 2016-04-22 2019-08-21 Hewlett-Packard Enterprise Development LP Configuration of a memory controller for copy-on-write with a resource controller
TWI615705B (zh) * 2016-05-31 2018-02-21 瑞昱半導體股份有限公司 於電腦系統中重置記憶體的方法
US10262751B2 (en) * 2016-09-29 2019-04-16 Intel Corporation Multi-dimensional optimization of electrical parameters for memory training
US10546156B2 (en) 2017-01-19 2020-01-28 Intel Corporation MRC training in FPGA-in-memory-controller
US10467028B2 (en) * 2017-03-21 2019-11-05 Intel Corporation Technologies for memory margin aware reliable software execution
KR102407439B1 (ko) 2017-12-05 2022-06-10 삼성전자주식회사 메모리 장치의 구동 강도, odt 트레이닝 방법, 이를 수행하는 컴퓨팅 시스템 및 시스템 온 칩
US10725912B2 (en) * 2018-12-19 2020-07-28 Micron Technology, Inc. Power loss protection in memory sub-systems
US11151256B2 (en) * 2019-05-13 2021-10-19 Dell Products, L.P. Detecting security threats by monitoring chains of configuration changes made to basic input/output system (BIOS) or unified extensible firmware interface (UEFI) attributes
CN111475207B (zh) * 2020-03-08 2022-05-13 苏州浪潮智能科技有限公司 Tpm与tcm通用服务器芯片初始化方法、系统、bios及存储介质

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6996706B1 (en) * 2000-02-19 2006-02-07 Powerquest Corporation Booting an operating system or running other pre-boot code from a file stored under a different operating system
US7103529B2 (en) 2001-09-27 2006-09-05 Intel Corporation Method for providing system integrity and legacy environment emulation
US8805981B2 (en) * 2003-03-25 2014-08-12 Advanced Micro Devices, Inc. Computing system fabric and routing configuration and description
US7159122B2 (en) * 2003-05-12 2007-01-02 International Business Machines Corporation Message digest instructions
US20050027940A1 (en) * 2003-08-01 2005-02-03 Zimmer Vincent J. Methods and apparatus for migrating a temporary memory location to a main memory location
US7162626B2 (en) * 2003-09-25 2007-01-09 Intel Corporation Use of common language infrastructure for sharing drivers and executable content across execution environments
US20060179308A1 (en) * 2005-02-07 2006-08-10 Andrew Morgan System and method for providing a secure boot architecture
US7493460B2 (en) * 2005-09-07 2009-02-17 Intel Corporation Preboot memory of a computer system
US20070088939A1 (en) 2005-10-17 2007-04-19 Dan Baumberger Automatic and dynamic loading of instruction set architecture extensions
GB0521465D0 (en) 2005-10-21 2005-11-30 Law Gregory E W System and method for debugging of computer programs
US7342411B2 (en) 2005-12-07 2008-03-11 Intel Corporation Dynamic on-die termination launch latency reduction
US7372293B2 (en) * 2005-12-07 2008-05-13 Intel Corporation Polarity driven dynamic on-die termination
US7673126B2 (en) * 2006-09-19 2010-03-02 Intel Corporation Methods and apparatus to self-initialize a processor
US8521969B2 (en) 2006-10-11 2013-08-27 Intel Corporation Apparatus and method for directing micro architectural memory region accesses
US7689817B2 (en) 2006-11-16 2010-03-30 Intel Corporation Methods and apparatus for defeating malware
US7827371B2 (en) 2007-08-30 2010-11-02 Intel Corporation Method for isolating third party pre-boot firmware from trusted pre-boot firmware
US8068614B2 (en) * 2007-09-28 2011-11-29 Intel Corporation Methods and apparatus for batch bound authentication
JP4675984B2 (ja) 2008-02-29 2011-04-27 株式会社東芝 メモリシステム
US20090249364A1 (en) 2008-03-28 2009-10-01 Intel Corporation Determining component accessibility using component descriptors
US8201239B2 (en) 2008-06-23 2012-06-12 Intel Corporation Extensible pre-boot authentication
US8522066B2 (en) * 2010-06-25 2013-08-27 Intel Corporation Providing silicon integrated code for a system

Also Published As

Publication number Publication date
US8312258B2 (en) 2012-11-13
TW201224918A (en) 2012-06-16
WO2012012218A2 (en) 2012-01-26
KR101407835B1 (ko) 2014-06-16
US20120023318A1 (en) 2012-01-26
CN103119554B (zh) 2016-03-23
EP2596423A4 (en) 2015-04-01
KR20130070627A (ko) 2013-06-27
EP2596423B1 (en) 2017-03-22
TWI482084B (zh) 2015-04-21
WO2012012218A3 (en) 2012-04-12
CN103119554A (zh) 2013-05-22
AU2011279939A1 (en) 2013-06-06
JP2013532864A (ja) 2013-08-19
AU2011279939B2 (en) 2015-05-28
EP2596423A2 (en) 2013-05-29

Similar Documents

Publication Publication Date Title
JP5540155B2 (ja) プラットフォーム独立メモリ論理の提供
TWI754317B (zh) 用於網路裝置之最佳啟動路徑之方法和系統
US8296528B2 (en) Methods and systems for microcode patching
US8812828B2 (en) Methods and apparatuses for recovering usage of trusted platform module
JP5307196B2 (ja) シリコンに一体化されたコードのシステムへの提供
JP6825029B2 (ja) 合理化されたサーバ設計の方法及びシステム
US10909247B2 (en) Computing device having two trusted platform modules
US11429298B2 (en) System and method for tying non-volatile dual inline memory modules to a particular information handling system
US20210240567A1 (en) System and method to run basic input/output system code from a non-volatile memory express device boot partition
US10698696B2 (en) Chipset fuse programming system
US11003778B2 (en) System and method for storing operating life history on a non-volatile dual inline memory module
US20220398103A1 (en) Multi-boot system and method for a baseboard management controller (bmc)
WO2022199622A1 (zh) 一种电子设备的启动程序的运行方法和电子设备
US12086436B2 (en) Option read-only memory firmware-based remediation
US20240231802A9 (en) Information handling system with a dynamic basic input/output system configuration map

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20140131

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20140304

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20140402

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20140409

R150 Certificate of patent or registration of utility model

Ref document number: 5540155

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140501

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees