装置であって、プロセッサ製造業者のプラットフォーム独立コードに対応する半導体統合コードSICを格納する不揮発性ストレージを備え、前記SICは、メモリコントローラの初期化によって、メモリを初期化するための埋め込みメモリ論理EMLを含み、メモリ信号のマッピングは、前記EMLを介してアクセス可能なオンダイ終端データ構造ODTデータ構造を利用し、前記ODTデータ構造は、相手先ブランド製造業者OEMが提供し、前記メモリのプラットフォーム依存メモリ構成のパラメータ化された規則セットに対応しており、前記SICは、プロセッサのリセットに呼応して、前記OEMの起動前コードに制御を提供する前に実行される、装置。前記SICをロードする最初のプログラムローダIPLをさらに備え、前記IPLは、前記プロセッサのマイクロコードから導入され、前記IPLは前記SICを認証してから前記SICを導入する、請求項1に記載の装置。前記EMLは、前記ODTデータ構造を利用して前記メモリのODT抵抗を計算する、請求項1または2に記載の装置。前記EMLは、前記ODTデータ構造を利用して前記メモリの起動マトリックスを計算する、請求項1から3のいずれか一項に記載の装置。前記EMLは、前記ODTデータ構造のポピュレーション情報に基づいて前記メモリのチャネルのポピュレーションパターンを計算する、請求項1から4のいずれか一項に記載の装置。前記EMLは、前記ポピュレーションパターンをODT規則のリストと比較する、請求項5に記載の装置。前記EMLは、前記ODT規則のリストの情報を利用して、公称終端抵抗と書き込み終端抵抗とを計算する、請求項6に記載の装置。プロセッサ製造業者が提供する埋め込みメモリコードEMCを利用してシステムの第1の電力投入中に前記システムのプロセッサに連結されたメモリを初期化することで、前記メモリとメモリコントローラとを初期化して、前記システムの相手先ブランド製造業者OEMが提供し、プラットフォーム依存情報のパラメータ化された規則セットに対応しており、前記EMCを介してアクセス可能なオンダイ終端データ構造ODTデータ構造を利用して前記メモリのメモリ構成を生成する段階と、前記プロセッサの少なくとも1つの段階レジスタに前記メモリ構成のスナップショットを格納する段階と、OEMBIOSbasicinputoutputsystemに制御を渡す前に、前記システムの不揮発性ストレージに前記スナップショットをセーブする段階とを備える方法。前記プロセッサの低電力モードから退出時に、前記不揮発性ストレージに格納されている前記スナップショットにアクセスする段階をさらに備える、請求項8に記載の方法。前記スナップショットを利用して前記メモリコントローラの構成を復旧した後に、再開ベクトル識別子を利用して前記OEMBIOSに制御を渡す段階をさらに備える、請求項8または9に記載の方法。前記EMCを利用して、前記システムの第2の電力投入中に前記不揮発性ストレージに格納されている前記スナップショットにアクセスする段階をさらに備える、請求項8から10のいずれか一項に記載の方法。前記メモリの現在のメモリポピュレーションを検知して、格納されている前記スナップショットのメモリ構成と比較して、前記比較に呼応して増分的なトレーニングを施す段階をさらに備える、請求項8から11のいずれか一項に記載の方法。前記増分的なトレーニングでは、前記メモリのランクに有効なフラグが設定されているかを判断して、判断結果が肯定的である場合に、前記ランクについてのランクトレーニングをバイパスして、前記判断結果が否定的である場合に、前記ランクトレーニングを実行する、請求項12に記載の方法。システムであって、複数のコアと不揮発性メモリとを有するプロセッサと、相手先ブランド製造業者OEMのファームウェアを格納するフラッシュメモリと、前記プロセッサに連結されたシステムメモリとを備え、前記不揮発性メモリは、前記プロセッサの製造業者のプラットフォーム独立コードに対応する半導体統合コードSICを含み、前記SICは、前記プロセッサと、前記プロセッサを前記システムメモリに連結する少なくとも1つのリンクとを初期化する埋め込みプロセッサ論理を含み、前記システムメモリを、埋め込みメモリ論理EMLを介してアクセス可能なオンダイ終端データ構造ODTデータ構造を利用して初期化する前記EMLを含み、前記ODTデータ構造は、相手先ブランド製造業者OEMが提供し、前記システムメモリのプラットフォーム依存メモリ構成のパラメータ化された規則セットに対応しており、前記SICは、複数の第1レベルの段階に分割されて、各段階が少なくとも1つの第2レベルの段階を配下に有し、前記複数の第1レベルの段階それぞれ内では、固有のインデックスが各内部パラメータに割り当てられており、前記プロセッサはさらに、前記SICの実行中に現在の第1レベルの段階を格納する少なくとも1つの段階レジスタを含む、システム。前記プロセッサは、前記少なくとも1つの段階レジスタから前記現在の第1レベルの段階を読み出し、前記現在の第1レベルの段階を格納ユニットに格納する、請求項14に記載のシステム。前記プロセッサは、予め定められた第1レベルの段階が前記少なくとも1つの段階レジスタに書き込まれるときに、前記予め定められた第1レベルの段階での前記SICの実行を停止する、請求項14または15に記載のシステム。前記プロセッサは、前記予め定められた第1レベルの段階での前記SICの実行の内部状態のスナップショットを格納する、請求項16に記載のシステム。前記OEMは、前記スナップショットを利用して前記システムをデバッグする、請求項17に記載のシステム。前記スナップショットは不揮発性ストレージに格納されており、低電力状態から再開するとき前記SICによりアクセスされる、請求項17または18に記載のシステム。前記SICは、ファームウェアインタフェーステーブルFITにアクセスして、前記スナップショットの位置を判断する、請求項17から19のいずれか一項に記載のシステム。前記SICは、前記リンクをトレーニングすることなく、前記スナップショットを利用することで、前記プロセッサのメモリコントローラと前記システムメモリとを初期化する、請求項17から20のいずれか一項に記載のシステム。さまざまな実施形態で、最初の初期化ソフトウェアは、基盤となるプロセッサハードウェアに対して密接に取り付けることができるので、OEMBIOSにより実装されるのではなく、シリコン製造業者が最初の初期化ソフトウェアを制御して提供することができる。シリコン一体化コードSICは、コードがロードされ、出所を確かめて、SICの実行後に、滞りなくOEMBIOSに制御を渡される環境で利用することができる。SICは、アナログリンクの設定がなされるトレーニング、診断、及びテストフックの設計といったメモリ初期化の低レベル面の動作に利用することができる。本発明の範囲はこの点に限定はされないが、メモリコントローラ及びインターコネクトリンクの主要な初期化コード、及び、さまざまなプロセッサ及びシステムの特徴部のランタイムを潜在的に助ける部材を、SICの形態とすることができる。一部の実施形態では、このコードに対する信頼ルートが、プロセッサのマイクロコードのフック経由で提供されて、SICを認証してロードするためのSICロードを実装することができ、これは、シリコン製造業者のBIOSの形態であってよく、OEMBIOSに制御を渡すことができる。OEMBIOSへのアップグレードが難しいことを鑑みると、フラッシュメモリに組み込まれたファームウェア等のBIOSを格納するメモリが適合しない場合もあるので、SICローダを導入するためのSICローダプロセッサパッケージ内のコアのマイクロコードに対応する信頼ルートが、SICが組み込まれたOEMBIOSの補助ブロックが有効であることを検証するために利用される。SICの実行後に、制御は、UEFIオープンソースコア例えば2006年2月21日付けのUEFI仕様バージョン2.0に従って、または、オープンファームウェアIEEE1275-1994、または、従来のBIOSまたは特許化されているOEMブートコードそれぞれ1以上のオペーティングシステムを起動するを介して実装することができるOEMBIOSに渡されてよい。実装例によっては、SICは、例えばエラー解消のため、またはバイナリ変換を行うために、パッチを実行するために利用することができる。さらに、SICは、バイナリ変換、エラー処理のためのメモリブロック、またはランタイム中に実行されるシリコン製造業者の他のコードを隠してOSから見えなくするために、一定のメモリブロックに対する保護を設定することができる。このようにすることで、プロセッサが、例えばマイクロコード読み出し専用メモリuROMオフロード、コプロセッサのサポート等の逆コードを利用する場合には、機械を第三者であるOEMのコードに晒される前に、SICがこのメモリを提供することで、メモリのサブセットをプロセッサに利用可能としておくことができるようになる。さまざまな実施形態では、SICは、フラッシュその他の不揮発性メモリ等であるOEMBIOSに組み込まれるバイナリコードとして提供されてよく、または、SICをプロセッサパッケージの不揮発性ストレージに実装してもよい。従って実施形態では、プロセッサその他のシリコン製造業者が顧客に対して、ソースコードではなくて、バイナリモジュールを出荷することができるので、より高いIP保護が可能となる。顧客数が増えると、シリコンとともにBIOS構築ブロックを出荷することによって実現される技術サポート料の削減量が顕著となる。図1は、SICに組み込むことができる、本発明の一実施形態のプラットフォーム独立BIOSのコンポーネントのブロック図である。プラットフォーム独立という用語は、機械の仕様に関わらず例えばメモリの種類、リンクの速度、利用可能な電圧等、どのプラットフォームでも、含まれているコンポーネントが実行可能であることを示す。後述するように、プラットフォーム依存であるコンポーネントは、プラットフォームの製造業者のデータファイルにより符号化することができる。一例としては、プラットフォーム販売業者は、システム基板等に関する情報等の一定の情報をパラメータ化することができる。基礎的な初期化を行う一定のコンポーネント例えば信頼ルートを構築するリンク初期化は、第三者のコードの制御を処理する前にSICによって行われてよい。このようにSICを一時的に隔離することで、電力をリセット中にもプロセッサがハードウェアを有して、制御を第三者のコードに渡すまではSICだけが実行可能であることを確認することができる。図1からわかるように、SICコンポーネントは、第三者のコードの前にSICの残りを発見してロードする役割を担う最初のプログラムローダIPL20を含んでよい。このローダは、SICのコンポーネントとは考えられない場合もある。SICのコンポーネントが一時的であったり持続的であったりする。持続的な場合には、アクティブにされたりプラットフォーム初期化PIモジュールまたはパッシブにされたり新たな命令によってライブラリのように機能することしてよい。図1の実施形態では、SIC10が、埋め込み中央処理装置CPU論理ECL30を含み、これは、オンボードのインターコネクト等のインタープロセッサ論理を初期化する。リンク及びメモリ初期化の両方のトレーニングには、リンクの両端の間の通信が含まれてよい。リンクの場合には、プロセッサは、別のプロセッサまたは出入力IOハブに連結されてよく、データ処理可能な動作周波数及びリンク幅を決定することができる。ECLモジュールは通常は一時的である。一部の実施形態では、リンクの初期化は、低電力状態例えばACPIAdvancedConfigurationandPowerInterface低電力状態、その一例が2009年6月16日付けのACPI仕様バージョン4.0のS3であるからの再開処理中に、メモリコンテンツにダメージを与えずにやり直すことができる。SIC10はさらに、メモリの初期化に際して埋め込みメモリ論理EML40を含んでよい。このコンポーネントは、ランタイム中に例えば温度のスロットルまたはエラー処理のため一部が一時的であり一部が持続的であってもよい。別のコンポーネントではメモリを別の視点から見るために、メモリ初期化には、アドレス指定の設定がさらに含まれていてもよい。例えば、CPUは、システムアドレスと称される物理的アドレス空間の視点を有することができる。システムメモリ例えばダイナミックランダムアクセスメモリDRAMに連結するメモリコントローラは、チャネル、ランク、及びランクを有するオフセットにより特定される特定のメモリセルにアドレスをマッピングする。メモリアクセスは全て、プロセッサノードにルーティングされて、復号され、チャネル番号、リンク番号、及びランクにおけるオフセットに変換される。従って、リンクアドレスの符号器のプログラミングの仕方によって、メモリは異なる見方で見ることができる。プロセッサについて隔離されたメモリ量を確保するために、アドレス復号器及びメモリ復号器のサブセットをプロセッサについてプログラミングすることができる。このようにして隔離されたメモリは、システム動作中にはプロセッサが独占して利用することができ、マイクロコードオフロード、バイナリ変換器、ライセンス情報、管理情報等を格納することができる。これに加えて、予備論理50を利用して、プラットフォーム独立論理の他の特徴部をサポートすることができる。本発明の範囲は、図1の実施形態に示すこの点に限定はされない。図2は、本発明の一実施形態におけるシステムのブロック図である。図2に示すシステム100は、ハードウェアと、さまざまなソフトウェア層とを含んでいる。示されているハードウェア実装は、代表的な高位のレベルであり、システムによっては数多くの他のコンポーネントが存在しうる。さらに、ソフトウェアの各部分が様々な場所に分散された様々なコンポーネントとして示されているが、特に、様々な実施形態でSICの各部分が様々な場所に存在してよいことを理解されたい。システムの基礎部分であるハードウェア110は、1以上のプロセッサ、メモリ、入出力デバイス等を含む様々なコンポーネントを含んでよい。しかし、図示の便宜上、図2の実施形態にはこれらのコンポーネントの一部のみを示している。特に、コアで実行するものとして、プロセッサコア115及び対応するマイクロコード120が示されている。様々な実施形態では、コア115は、それぞれが自身のマイクロコードストアを含んでよいマルチコアプロセッサの複数のコアを表すことができる。加えて、多くの実装例では、プロセッサパッケージがアンコア118プロセッサコアの外に存在する様々な論理を含むを含むことができる。様々な実施形態では、アンコア118は、コア115、統合メモリコントローラIMC125、及び入出力コントローラハブIOH128に、Intel登録商標QuickPathInterconnectQPIリンクを介して連結される。これを受けてIMC125は、システムメモリ130に連結されてよく、これは一実施形態では、ダブルデータレートDDR-3DIMM等の複数のデュアルインラインメモリモジュールDIMMから構成されてよい。さらに図示されているように、IOH128は、周辺コントローラハブPCH135に直接媒体インタフェースDMIインターコネクトにより連結されてよく、これが、トラステッドプラットフォームモジュールTPM140及び周辺モジュール145等の他のデバイスに連結されてよい。本発明の範囲はこれに限定されないが、様々なデバイスのPCH135へのインターコネクトは、低ピンカウントLPCバスによって行われてよい。これら限定されたコンポーネントのみが示されているが、多くの他のコンポーネントも別の実装例では存在する可能性がある。プロセッサハードウェアにはSICモジュール150が密接に連結されている。様々な実装例では、SICモジュールは、フラッシュメモリ等の不揮発性ストレージに実装されており、例えばプロセッサパッケージ内に置かれてよい。この代わりに、SICモジュールは、プロセッサの製造業者からOEMにバイナリで提供されてよく、OEMは自身のBIOSにこれを組み込む。従って、SICの実際の位置は、実装が変わると変わる場合がある。一実施形態では、SICは、OEMBIOSの一部である例えばマザーボードに取り付けられたフラッシュデバイスに統合されている。しかし、図示を簡単にすべく、SICモジュール150が別個のコードブロックとして示されている。特に、示されているモジュールは、複数のSICコードの改定1521-152nを含んでいる。つまり、後で詳述するように、SICはフィールドで更新されてよい。SICモジュールには、コードに加えて、様々なデータブロック1541から154nが存在していてよい。一実施形態では、シリコン製造業者のポリシーが、このSICデータブロックに含まれていてよく、これがSKUstockkeepingunitに基づいていてよい。この情報は、部分のグレーディング、サポートされた特徴、及び/または、シリコンの熱物理特性を示すような電圧及び温度のレーティングを含んでよい。これら様々なコード及びデータブロックにアクセスするために、ファームウェアインタフェーステーブルFIT155を提供することができる。符号及びデータブロックはキーとなる対の構造により保護されていてよい。様々な実施形態では、SIC150がハードウェアに暗号的に結合されており、コアマイクロコード120を媒体として起動がなされる。さらなるシステムソフトウェアが、UEFI規格に準拠した起動前コードを含むOEMBIOSの形態であってよい。これらのコードは、様々なファームウェア部分で格納されてよく、セキュリティ初期化コードSEC、前EFIPEIコード、及び、ドライバ実行環境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。様々な実施形態では、これらレジスタ及びバスは、PCIExpress登録商標ベースのアドレスレジスタ、システム管理バス、汎用入出力IOレジスタ、及び、電力管理PMレジスタを含んでよい。一実施形態では、I/Oテーブル例えばIO/メモリマッピングされたIOMMIOポート及びプログラムへの値のリストを利用して、このステップを実装することができ、この場合には、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がバイナリとして実装されてよく、残りのコードがOEMBIOSで実装されてよい。上述したように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従って、この計算によって、dランクのチャネルのポピュレーションパターンを一意に特定するマスクが提供される。ポピュレーション及び様々な1つのランクSRについての符号、デュアルランクDR及び4個のランクQRメモリ構成の例は以下のようになる。SR00000001bDRDR00100010bDRQR00101000bDRDRDRDR10101010b計算されたパターンは、ODT規則のリストとの比較に利用することができる。これは、最初の規則のみが有効なケースである、複数の規則に整合させるポピュレーションについて可能である点に留意されたい。一般的にはOEMでは、データ構造内の一般的な規則の前に固有の規則を配置することで、あるパターンが先ずはその固有の規則に整合するようにしている。一実施形態では、起動マトリックスが以下の規則に従って生成されてよい。ACTRは、VDDに接続されていない場合の読み出しコマンドのODTマスクであり、ACT[W]は、書き込みコマンドのODTマスクであり、これ以外の場合には書き込みマスクは読み出しマスクと同じである。従って2つのマトリックスが存在する可能性があり、このうち1つが読み出しコマンドのものであり他方が書き込みコマンドのものである。マトリックスは論理ランク番号によりインデックスされるアレイである。マトリックスの全てのエントリは、IMCがあるチャネルについて有しているODTピン数と同じ数のビットのビットマスクである。IMCは、読み出しコマンドの場合には、ACTRtargeted_rank_に従ってODT制御ピンをアサートして、書き込みコマンドの場合には、ACT[W]targeted_rank_をアサートする。ほとんどの場合、ACTWrankACTRrankである。従ってアルゴリズムは、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_Nom2がDDR3仕様の符号を有さない限りにおいて、Rtt_Nom値を接続されているランク両方に利用するRtt_Nom2が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の格納定義の一例を以下に記す。1DIMM検知、2スタティックな構成、3トレーニング、及び4テストである。これら段階は、図3の方法に示す順序で行われてよい。段階の1以上がさらに1以上の副段階を含んでよい。例えばODT構成のためには副段階2Aがあってよい。この副段階に関する情報を段階レジスタに書き込み、スナップショットをとることができる。スナップショットには、全てのチャネルについてODT起動マトリックスが含まれてよく、全てのDIMMの全てのランクについての抵抗値が含まれていてよい。この情報はEML実行の内部データであるが、これらパラメータがDDR3仕様によって定義されていることから、基盤となるMCハードウェアの実装の詳細は明らかにされない。一実施形態では、CSR内の特定の命令または特定の制御ビットを利用して、SICにある段階/副段階の内部状態のスナップショットをとり、格納するよう命令することができる。例えばストレージを、RAMとしてのキャッシュCARの位置等のプロセッサの内部メモリに設定することができる。格納されている情報は、ハードウェアの問題のデバッグまたは電力状態の遷移の実装S3に入ること、及び、S3から再開すること等の際に有用である場合がある。特に、電力状態の遷移の場合には、遷移を始めるプログラムが悪意を有しており、システム管理RAMSMRAMその他の保護メモリ等の保護されているメモリ領域へのアクセスを目指してセーブされた状態を傍受しようと試みる場合があるために、注意が必要である。しかし一実施形態では、このような攻撃を回避するためには鍵付キャッシュで十分である場合もあろう。図6は、本発明の一実施形態におけるプロセッサのブロック図である。図6に示すように、プロセッサ500はマルチコアプロセッサであってよい。しかし図示の便宜上、1つのコア505のコンポーネントしか示していない。図からわかるように、任意のコアに実行論理510が含まれていてよく、様々な実施形態では、1以上の実行ユニットが含まれてフロントエンドのユニットが提供する処理を実行する。実行の後に、様々なバックエンドのユニットが、結果を受け取り、順序立てて回収する。データに処理を行うべく、実行論理510は、レジスタファイル520と通信してよく、様々な実施形態では、これは、スカラーレジスタとベクトルレジスタの両方を含む複数のレジスタを含んでよい。加えて、本発明の一実施形態では、1以上の段階レジスタ560を提供してよい。図6の実施形態からわかるように、複数の段階レジスタ5651-565nがあってよい。各段階レジスタは、SICの任意の段階と関連付けられていてよい。一部の実施形態では、別個のSIC論理ECL及びEMLの各個々のコンポーネントが、最上位の段階として特定されてよく、これらのそれぞれが副段階を含んでよい。わかるように、各段階レジスタ565は、任意の最上位段階に加えて、1以上の副段階のストレージを含んでよい。しかし他の実施形態では、読み出されて現在実行中の段階を特定したり、書き込まれて任意の段階の実行を停止したりさせることのできるような1つの段階レジスタのみが提供されてもよい。さらに図からわかるように、他のコンポーネント様々な実施形態でS3状態等の低電力状態への入退出を制御することのできる電力管理ユニットPMU550等がプロセッサ内に存在していてよい。図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が完結して制御がOEMBIOSに渡されると、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、消去可能プログラム可能型ROMEPROM、電気的消去可能ROMEEPROM、磁気カード、光カードなどのあらゆる形態の半導体デバイス、ならびに、その他電気的命令の格納に適したあらゆる形態の媒体などが含まれる。本発明を限られた数の実施形態を参照して説明してきたが、当業者であれば各種の変形例及び変更例を想到するだろう。添付請求項は、本発明の真の精神及び範囲内に含まれるこれら全ての変形例及び変更例を含むことを意図している。