実施例においては、デバイスは、ホストコンピューターからブロードキャストコマンドを受信する入力インターフェイスと、インターフェイスと連結された復号回路とを有し、ブロードキャストコマンドは、アクセスモード指示を含む。復号回路は、受信したアクセスモード指示に少なくとも部分的に基づき、ブロードキャストコマンドが、1または複数のデバイスの1または複数の予め定義されたセットアップまたはコントロールレジスタにアクセスすること、または1または複数のデバイスの1または複数の内部レジスタにアクセスすることを命令すると決定し、前記決定に応じてセットアップまたはコントロールレジスタへのアクセス、または1または複数の内部レジスタへのアクセスを実施する。実施例においては、デバイスはホストコンピューターに連結されるメモリモジュール上に配される。
実施例においては、1または複数の非一時的なコンピューター可読記憶媒体は、メモリモジュールに設けられるデバイスにより実行されると、デバイスに対し、ホストコンピューターからのブロードキャストコマンドを受信させる1セットの命令を含む。実施例においては、ブロードキャストコマンドは、1または複数のデバイスの1または複数のレジスタへセットアップまたはコントロールデータを書き込むことを命令し、且つ、デバイスアドレスとデバイスアドレスマスキングデータとを含む。実行時、命令はさらに、デバイスに対し、デバイスアドレスマスキングデータを適用して、デバイスアドレスの一部をマスキングすること、デバイスアドレスのマスキングされていない部分がデバイスのアドレスの対応する部分とマッチングするかを判定すること、判定に応答して、デバイスの1または複数のレジスタへのデータの書き込みをオフセットで開始して行うことをさせる。
実施例においては、方法は、DIMMにおいて、ブロードキャストコマンドをホストコンピューターから受信する段階であって、ブロードキャストコマンドはアクセスモードインジケータとレジスタオフセット値とを含む、段階と、アクセスモードインジケータを復号して、プロトコルレジスタのアクセスモードが指示されたことを判定する段階を含む。方法はさらに、アクセスモードインジケータとレジスタオフセット値とに少なくとも部分的に基づいて、コマンドが、オフセットにより指示されるプロトコルレジスタへDIMM識別子(DIMM_ID)値を書き込むように受信デバイスに対して指示するDIMM_ID伝搬コマンドであることを識別する段階と、識別に応答して、コマンドを修正して、DIMM_IDの一部をローカルDIMM識別子と置き換える段階と、修正されたブロードキャストコマンドをローカルバス上でDIMM上の全てのデバイスへ伝搬する段階とを含む。
以下の説明では、当業者がその作業の内容を他の当業者に伝えるために当業者により共通して採用される用語を用いて、実装の実施例のさまざまな態様が記載される。しかしながら、本開示の実施例は、記載される態様のいくつかについてのみ実施され得ることは当業者にとっては明白であろう。説明を目的として、特定の番号、素材およびコンフィギュレーションは、実装の実施例の全体的な理解を提供するために記載されている。しかしながら、本開示の実施例は特定の詳細がなくとも実施され得ることは当業者にとって明白であろう。他の例においては、周知の特徴は、実装の実施例がわかりにくくならないよう、省略または簡略化されている。
以下の詳細な説明では、本明細書の一部を構成する添付の図面を参照しながら説明がなされるが、類似の符号は全体を通して類似の部品を指し示すものとし、本開示の主題事項を実施できるように実施例を図解する形で示される。他の実施例も利用され得るものであって構造またはロジックの変更は本開示の範囲から逸脱しない範囲においてなされ得るものであることは理解されるべきである。それゆえ、以下の詳細な説明は、範囲を狭める意味に解釈されるべきものではなく、実施例の範囲は本願の請求項およびその同等物により定義されるものである。
本開示の目的から、「Aおよび/またはB」というフレーズは、(A)、(B)、(A)または(B)、または(AおよびB)を意味してよい。本開示の目的から、「A、B、および/またはC」というフレーズは、(A)、(B)、(C)、(AおよびB)、(AおよびC)、(BおよびC)、または(A、BおよびC)を意味してよい。
説明においては頂/底、内/外、上/下、のような、俯瞰基準の説明が使用されることがある。そのような説明は単に議論を円滑に進めるためにのみ使用されるのであって、本明細書で説明される実施例の適用をいかなる特定の方向にも制限することを意図するものではない。
説明においては「ある実施例において」または「実施例において」というフレーズが使用されることがあるが、これらはそれぞれ、1または複数の同一または別の実施例について言及するものであってよい。さらに、本開示の実施例に関して使用される、「備える」、「含む」、「有する」等の語句は同義である。
「と連結される、」およびその派生表現的な語句が、本明細書において使用されてよい。「連結される」とは、以下の1または複数を意味してよい。「連結される」とは、2またはそれ以上の要素が直接的物理的接続または電気的接続状態にあることを意味してよい。しかし、「連結される」は間接的に接続されるが互いに協働または相互作用する2またはそれ以上の要素を意味することもあり、また、1または複数の他の要素が、互いに連結されるべき要素間で連結されるまたは接続されることを意味してよい。「直接連結される」という語は、2またはそれ以上の要素が直接接続させられることを意味してよい。
本明細書の中で使用される、「回路」という語は、説明される機能を提供する1または複数のソフトウェアプログラムまたはファームウェアプログラム、組み合わせ論理回路および/またはその他の適するコンポーネントを実行する、特定用途向け半導体集積回路(ASIC)、電子回路、プロセッサ(共有、専用、またはグループ)および/またはメモリ(共有、専用、またはグループ)を指す、またはその一部を成す、または含むことを意味してよい。
請求項を含めて本明細書の中で使用される、「チップ」という語は、コンピューター上の実際の集積回路(IC)を意味してよい。本文書の文脈におけるチップは、それゆえ、シングルコアまたはマルチコア技術であり得る実行ユニットを指してよい。
請求項を含め、本明細書の中で使用される、「プロセッサ」という語は、実際のチップ上の論理実行ユニットを指してよい。マルチコアチップはいくつかのコアを有してよい。請求項を含めて本明細書の中で使用される、「コア」という語は、L1(最下位)キャッシュおよび機能ユニットを含む論理実行ユニットを指してよい。コアは、プログラムまたはスレッドを独立して実行できるものとして理解される。
上述のとおり、XMSは、準拠した接続されるデバイスが実装すべきレジスタと、コントロールフラグビットとを規定する。現在、デバイス挙動の構成、制御および修正を行うべく、ホストは、複数のデバイスにわたり同一のオフセットを有するレジスタに繰り返しアクセスしなければならない。たとえば、ホストが、システムメモリ内の16個のDIMMの各々で電圧レギュレータを構成する場合、これには、各電圧レギュレータ内で同一レジスタへの書き込みを必要とし、各電圧レギュレータにつき別々のアクセスが行われる必要がある。そこで、約120個ものデバイスへ接続することがある高負荷のバス上での構成時間を節約するため、および起動時間も節約するため、実施例においては、全てのデバイスにわたり定義されるビットを更新または構成するブロードキャストケーパビリティが促進される。実施例においては、ブロードキャストケーパビリティは、とりわけ、後述の追加ヘッダを利用する。
実施例においては、ホストは故に、たとえばDIMMなどのメモリデバイスのアクセスの読み取りアクセスおよび書き取りアクセスの構成をチェーン化することができ、ホストは故に複数のアクセスにわたり、追加ヘッダのコストを償却することができる。さらに、同一デバイス上のシーケンシャルレジスタアクセスは追加のコストを招来しない。ここで、デバイスは各レジスタアクセスの後に、レジスタオフセットを自動インクリメントする。実施例においては、デバイスコントロール情報のブロードキャストは、ビットを制御するマスクを使用して、効率向上が図られており、その結果グループアドレス指定を促進する。実施例においては、メッセージフォーマットの例は一般的なものであり、デバイス上のいずれのレジスタに対してのブロードキャストにも使用されてよい。
さまざまな実施例において、現在のXMSによりサポートされる機能は、XMSコマンドバスにわたるブロードキャストメッセージングおよびマルチキャストメッセージングを容易化するために大幅に改良され得る。現在のXMSに対するこれらの改良をより良く理解するため、現在のXMS下でのデバイス構成とレジスタアドレス指定の概要を以下に説明する。
現在、XMSは、バス上の全てのデバイスへブロードキャストコマンドを送信することを意図したブロードキャストフォーマットを規定はするものの、当該フォーマットは書き込みのためのみであり、また1デバイス上のビットセットに固有のものでもある。当該フォーマットは到達すべき各デバイスの当該固有のビットが後に続くヘッダを使用する。ヘッダは、全てが0の1バイトを含み、当該1バイトには7ビットのデバイスアドレス(000 0000)および1つのRnWビット(0)が含まれ、ここで0は書き込みアクセスを指示する。現在のフォーマットは以下のとおりである:
<フォーマット1>
このブロードキャストフォーマットのフィールドは具体的に規定されており、拡張目的でのスケーリングおよび使用はできない。固有ビットの数は4バイトに制限されており、さらに、具体的なビットまたはフィールドのマスキング機能はない。それゆえ、サブセットのデバイスをアドレス指定する方法はなく、またこれらの固有ビットのサブセットのみにアクセスする方法もない。さらに、現在のXMSフォーマットはメモリ読み取りのための機構を提供していない。ブロードキャストは書き込みアクセスに使用され得るのみである。ホストがさまざまなメモリモジュールデバイス上のXMレジスタを読み取る必要がしばしばあり得るとする場合、これが、ブロードキャストアドレスが指定され得る唯一の現在のトランザクションであるため、読み取りはできない。
XMSはまた、一般的な読み取り/書き込みフォーマットを提供し、当該フォーマットは、デバイスレジスタのオフセットXMモードで指定されるレジスタアクセスを含む。しかしながら、これらは、1つのデバイスの1つのレジスタへのメモリアクセスのためのものであるので、XMバス上でのこれらの現在サポートされているトランザクションは非効率的である。
一度に1つのデバイスへの構成書き込みは、少なくとも2バイトのヘッダを消費する。これらのバイトはそれぞれ、個々のデバイスアドレスおよび1デバイスレジスタオフセットについてのものであり、以下において太字で示される。
<フォーマット2>
同様に、1つのデバイスへの1つの構成読み取りは、以下に太字で示されるように、書き込みアクセス(RTnW=0)の後に読み取り(RnW=1)が続き、少なくとも3バイトのヘッダを消費する。
<フォーマット3>
上記のとおり、読み取りまたは書き込みは、特定のデバイスおよびそのデバイス上の特定のレジスタをアドレス指定しなければならいため、バス上の他の複数のXMデバイスの同一レジスタへの同一転送タイプのデバイスレジスタアクセスは、読み取りであれ書き込み(Rd/Wr)であれ、現在では組み合わせることもチェーン化することもできない。それゆえ、上に示す2または3のヘッダは、この場合がそうであるように、個別のデバイスアクセスについて繰り返されなければならず、結果としてパフォーマンスが非効率になる。さらに、上述のように、従来のブロードキャストアクセスはいかなるコントロールビットやセットアップビットのためのマスキングケーパビリティも有さない。その結果、コントロール値がバス上のたとえ1つのデバイスにおいてであれ異なって管理される場合、ブロードキャストアクセスは現状、いずれのデバイスについても全く使用することはできない。これは、当該ビットセットが全てのデバイスに共通に規定され、ビット位置ごとの機能が全てのデバイスについて同一のままであるためである。これにより、サブセットの接続デバイス上ののみでコントロールビットのみがトグルされるべきである場合の使用が制限される。
一般的に、サーバーは、それらのシステムオンチップ(SOC)に接続された複数のダブルデータレート(DDR)メモリモジュールを有してよい。XMSは、繰り返しの同一レジスタオフセットアクセスおよびコントロール変更またはセットアップ変更を必要とするSPDデバイスを含み、最大120個の接続デバイスを許容する。現在仕様化された、またコントロールのためのマスクビットを有さないXMS下で、レジスタアクセスをシリアル化することは、XMバス上のレジスタアクセスとブロードキャスト転送を非効率にし、また甚大なレイテンシ、エリアおよび電力も消費する。
最後に、現在は、あらゆるDIMMにおけるあらゆる電源管理集積回路(PMIC)へ宛てられるグループキャストのように、1サーバーまたはコンピューティングシステムの全DIMMにわたり、例えばPMIC等の同一デバイスタイプのアクセスを可能にする実効的な方法はない。
図1は、さまざまな実施例にかかる、実施例としてのシステムを示す図である。図1を参照すると、1または複数のプロセッサ102を含むホストコンピューター103がある。ホストコンピューター103は、上述のように、SOCであってよい。メモリモジュール104も示されており、たとえばこれはホストコンピューター103のマザーボードにインストールされる1セットのDIMMであってよい。実施例においては、ホストコンピューター103は、プロセッサ102を介して、ブロードキャストコマンドをコマンドバス141上でメモリモジュール104へ送信する。コマンドバス141は、プロセッサ103とメモリモジュール104との間のデータバス(図示せず)とは異なる。コマンドバス141は、構成レジスタアクセスとブロードキャスト/マルチキャストトランザクションとを、コマンドバス141に接続された複数のデバイスへ転送する。コマンドバスは、上述のように、XMバスであってよい。実施例においては、コマンドバス141にわたり送信されるコマンドとトランザクションとがゲートウェイ130により受信および処理される。ゲートウェイ130は、たとえば、DIMMのハブであってよい。ゲートウェイ130は、コマンドバス141に接続される入力インターフェイス134と復号回路133とを含む。コマンドバス141を通してコマンドが受信される。復号回路133は、ホストコンピューター103からの特定のコマンドを識別する。いくつかの場合においては、復号回路133は、コマンドに応答して、コマンドのビットを修正することを含むアクションを取るが、多くの場合においては、受信した通りのコマンドをメモリモジュール上の接続デバイス(ローカルバス143上で)に渡すアクションを取る。故に、ゲートウェイ130は、DIMM上にまた設けられる、たとえば温度センサ、タイミングデータ付きの電圧レギュレータおよびフラッシュメモリユニット、SPD、またはレジスタクロックドライバ(RCD)などの、デバイス120、121、122のセットに接続される。
実施例においては、図1に示されるよりも多いまたは少ないDIMMがあってよく、図1に示されるよりも多いまたは少ないDIMM上のデバイスがあってよい。上述のとおり、ゲートウェイ130は、ローカルバス143上でデバイスのセットに接続される。ローカルバスもXMに準拠したものでよく、その場合はXMバスとなる。デバイス120、121、122は、本明細書の中で「ハブの後ろ」または「ゲートウェイの後ろ」のデバイスと言及されることがあり、これらのデバイスのレジスタは「XMプロトコルの後ろ」のレジスタと言及されることがある。実施例においては、デバイス120、121、122はそれぞれ、ローカルバス143に接続される入力インターフェイス134と、最終的にホストコンピュータ103からゲートウェイ130を通って、入力インターフェイス134を介して、それぞれのデバイスにより受信されるブロードキャストコマンドを復号および実行する復号回路135とを含む。
次に説明される図2から図8は、さまざまな実施例による、デバイスにより受信されるコマンド、または当該コマンドの一部を表している。コマンドは、1または複数のデバイスの1または複数のXMプロトコルレジスタへ宛てられるか、または1または複数のデバイスの1または複数の内部デバイスレジスタへ宛てられてよい。上述のように、実施例においては、コマンドはデバイスの入力インターフェイスを介して受信され、当該デバイスの復号回路により復号される。
図2は、さまざまな実施例にかかる、ブロードキャストコマンドの実施例としてのアクセスフォーマットを示したものである。アクセスフォーマットは、上述のとおり、「S」で示される従来のXMS「スタート」バイト201に続く追加ヘッダバイト210を含む。本明細書では、追加ヘッダバイト210は、現在XM仕様において規定されておらず、かなり限定的な現在のブロードキャストコマンドフォーマットで使用されていないため、「追加」の語で表される。スタートバイト201は、0x00の標準ブロードキャストコールアドレス203、および0に設定され、書き込みコマンドを示す、read not writeビット「RnW」205を有する。追加ヘッダバイト210は、ここでは「SlaveAddrMask[2:0]」とラベル付けされた3ビットのスレーブアドレスマスクフィールド220を含む。この文脈では、「スレーブ」とは、ブロードキャスト(グループキャスト、またはマルチキャスト)コマンドが意図される先のデバイスを指す。実施例においては、スレーブアドレスマスクフィールド220は、受信デバイスが、そのアドレスがブロードキャストコマンド200内で提供されるデバイスアドレスにマッチングするか否かを判定するに先立って、後続の各トランザクションについて、マスキングすべきスレーブアドレスのビット数を示す。故にこのマスキング機能は、グループアドレス指定を可能にすることにあり、ここにおいては、ホストコンピューターが、単一のトランザクションにおいて、メモリ内の全てのDIMMにわたり、同じファミリーのデバイス(たとえば、各DIMM上のPMICのように)にアクセスできる。
スレーブアドレスマスクフィールド220の値は、デバイス識別子の無視されるべき最下位ビット(LSB)の数を示す。たとえば、符号220のフィールドのSet SlaveAddrMask[2:0]が「011b」に設定される場合、これは、7ビットのデバイス識別コード(DEV ID Code)250のうち最下位3ビットがマスキングされ、残る4ビットのIDコードで複数のデバイスで構成される1グループ全体を識別することを意味し得る。これにより、最上位ビット(MSB)の4ビットが、たとえばDev ID Code[6:3]などの、Dev ID Codeのマスキングされていない部分と一致する全てのスレーブデバイスが単一のトランザクション内でアドレス指定されることを可能にする。
ここで、8個のDIMMに限定される例示システムにおける実施例においては、デバイスのアドレスは、MSDの4ビットがデバイスのタイプを指定し、LSBの3ビットが当該デバイスが設けられているDIMMの番号を指定するように構成されてよいことに留意されたい。このような実施例においては、これは同一タイプの全デバイス(図2に示すように、LSBの3ビットをマスキングすることにより、8個のDIMMすべてにわたり、MSBの4ビットにより識別される)について可能であり、符号220のSlaveAddrMask[2:0]が「011b」に設定されて、符号250の7ビットのデバイス識別コード(Dev ID Code)のうち最下位3ビットをマスキングする。
追加ヘッダバイト210は、たとえば「SlaveAddrMask[2:0]」と名付けられた3ビットのスレーブアドレスフィールド220と、たとえば「Offset[3:0]」と名付けられた4ビットのオフセットフィールド230と、たとえば「XM-REG-MODE」と名付けられたアクセスモードフィールド240とを含む。これらについては以下で説明する。
実施例においては、スレーブアドレスマスクフィールド220は、コマンドを受信するデバイスが、デバイスアドレスのうち何個の最下位ビット(LSB)を無視すべきかを示すために使用される。図2に示される、たとえば、符号250の「Dev ID Code[6:0]」等のデバイスアドレスのうち無視されるビットが多いほど、当該デバイスアドレスのマスキングされていない部分にマッチングするデバイスの数は多くなり、ブロードキャストコマンドに対して応答する数が多くなる。実施例においては、図3A、図3B、図4、図5、図6、図7および図8を参照して以下で説明されるとおり、このマスキング機能が、フルブロードキャスト、選択的ブロードキャスト、またはグループアドレス指定を可能にするものである。
XMSに基づく図2から図10実施例においては、デバイスアドレスは7ビット長であるいう前提である。他の実施例においては、デバイスアドレスのビット長はそれよりも長くても短くてもよい。故に、スレーブアドレスマスクフィールド220は、そのアドレスの0ビットから7ビットの範囲内でマスキングすることを示す。たとえば、SlaveAddrMask[2:0]='111'の場合、アドレスの全7ビットがマスキングされ、コマンドは全ての接続されるデバイスへブロードキャストされる。同様に、SlaveAddrMask[2:0]='000'の場合、コマンド内で提供される各デバイスアドレスの全てのビットが読み取られ、マスキングは行われない。さらに、SlaveAddrMask[2:0]='011'であって値「3」を有する場合、アドレスの最下位3ビットがマスキングされる。故に、単一のトランザクションにおいて、4個の最上位ビット(MSB)が一致する全てのスレーブデバイスがアドレス指定され、コマンドに応答する。
引き続き図2を参照すると、さまざまな実施例により、図2において「Offset[3:0]」と称される4ビットのオフセットフィールド230は、利用可能な2つの可能なアクセスモードのうち一方のみで使用される。ここで注目すべきは、実施例においては、第1のアクセスモードでは、ブロードキャストコマンドはデバイスセットアップまたはコントロールコマンドであってよく、それゆえ当該ブロードキャストコマンドは、たとえばパケットエラー訂正イネーブル(PEC_EN)、PARITY_EN、IF_SELなどのXMプロトコルにより設けられることが必要とされるレジスタにアクセスすることを意図する(このアクセスモードは以下、「プロトコルレジスタ」アクセスとして称される)。同様に、実施例においては、第2のアクセスモードでは、意図するのは、ブロードキャストコマンドが、XMプロトコルの後ろのデバイスレジスタにアクセスすることであり(このアクセスモードは以下、「デバイスレジスタ)アクセス」として称される)、これらは、SPD、RCD、PMIC等の異なるアクセスフォーマットを有してよい。実施例においては、第2のアクセスモードでは、XMS下での従来のトランザクションが、追加ヘッダバイト210の後に続く。このトランザクションは、図5から図7に関連して以下で説明されるとおり、「restart」(Sr)バイト245で開始する。実施例においては、オフセットフィールド230は第1のアクセスモードにおいてのみ使用され、第2のアクセスモードを指定するコマンド内では予約される。故に、図2で示される実施例では、符号230のOffset[3:0]は、コマンドが、受信デバイス上のどのXMプロトコルレジスタに対して宛てられているかを指定するのに使用される。Offset[3:0]は4ビット長なので、各デバイス上の15個のレジスタが、第1のアクセスモードを指定し、且つどのレジスタが最初に書き込みが行われるべきレジスタかを示するオフセット値をさらに指定するブロードキャストコマンドを使用してアクセスされてよい。
実施例においては、ブロードキャストコマンドのアクセスモードはアクセスモードフィールド240により示される。図2の実施例では、これは「XM-REG-MODE」として示される1ビットフラグである。この例では、XM-REG-MODE=1は第1のアクセスモード(プロトコルレジスタアクセス)を示し、XM-REG-MODE=0は第2のアクセスモード(デバイスレジスタアクセス)を示す。
他の実施例においては、各フィールドにはより多いまたはより少ない数のビットがあってよく、コマンドのヘッダおよび後続ユニットは、1バイトより多いまたは少ないビットを有してよい。
引き続き図2を参照すると、追加ヘッダバイト210の後ろにはSrトランザクション211が続く。Srトランザクション211は、Srバイト245で開始し、Srバイト245は、図2で符号250の「Dev ID Code[6:0]」と示されるように、7ビットのデバイスアドレスと、1ビットのRead not Writeビット「RnW」であるメモリアクセスタイプインジケータとを示す。図2から図10で示される実施例においては、RnW=0はレジスタへの書き込みを意味し、RnW=1はレジスタへの読み取りを意味する。フルブロードキャスト、グループブロードキャストまたは他のマルチデバイスコマンドについて、単一のコマンドは同時に複数のデバイスを読み取ることはできないため、ブロードキャストコマンドは一般的に、RnW=0の書き込みである。図2のSrトランザクション211に示される残りのバイト、つまりByte0~Byte nは、図3A、図3Bまたは図4に示されるように第1のアクセスモードを想定しており、これについては、これらの図面を参照して後述する。故にこれらのバイトは、符号230のOffset[3:0]で示される各デバイス上の位置にあるレジスタで開始して、各受信デバイスに書き込まれる。第2のアクセスモードでは、以下で説明されるように、少し異なるフォーマットがSrトランザクションに使用される。
実施例においては、図2のフォーマット200のブロードキャストコマンドを受信するデバイスは、スレーブアドレスマスクと、アクセスモード値と、オフセットがある場合はオフセット(存在する場合、第1のアクセスモード)とを復号し、コマンドで提供される後続のバイトをの実行に進む。実施例においては、ブロードキャストコマンドフォーマット200を使用することは、ホストコンピューターが複数のDIMMにわたり同等のレジスタにアクセスすることを助け、領域と電力の両方においてより効率を向上させるとともに、ブート時間をかなり削減することに寄与する。
図3A、図3Bおよび図4は、第1のアクセスモードを指定するコマンドの異なるバージョンを示したものであり、全て図2のコマンドフォーマット200を実装するものである。これらの例示のコマンドにおいては、コマンドはプロトコルレジスタアクセスに宛てられ、故にアクセスモードフラグはXM-REG-MODE=1である。次に、これらについて説明する。
図3Aでは、XMプロトロルレジスタ(図3A、図3Bおよび図4では単に「XMレジスタ」と記される)等のプロトコルレジスタへのフルブロードキャストのためのコマンド300Aが示される。例示コマンド300Aは、たとえば、PECイネーブル、またはパリティイネーブル等のオペレーションモードを更新するために使用されてよい。故に図3Aのヘッダ310内では、スレーブアドレスマスク315は"111"であり、これはデバイスアドレスの全7ビットがマスキングされるべきであることを示す。オフセットフィールド320は、4ビットオフセットOffset[3:0]を定義し、これは当該コマンドに含まれる最初のバイトが各デバイスに書き込まれるべきことを示す。ヘッダ310はアクセスモードフラグ330も含む。これはプロトコルレジスタアクセス(たとえば第1アクセスモード)であるため、アクセスモードフラグ330は1に等しく、たとえばXM-REG-MODE=1となる。
引き続き図3Aを参照すると、ヘッダバイト310の下に単一のSrトランザクション311が示されており、ここではSrは「リスタート」を意味する。これは、フルブロードキャストコマンドであるので、1つのSrトランザクションのみが示されており、各デバイスは同じ様に更新される自己の複数のXMレジスタを有する。Srトランザクション311は1つのヘッダバイトといくつかのコントロール情報バイトを含む。Srヘッダバイトは、デバイスアドレス、ここでは「Dev ID Code[6:0]=0x000_0000」を含み、これは、XMバス(最大120個のデバイスを許容)上に接続されるあらゆるデバイスがコマンド300Aを受信することを意味する。Srトランザクション311ヘッダバイトはまた、プロトコルレジスタアクセスが読み取り(RnW=1)であるか書き込み(RnW=0)であるかを示す、読み取りまたは書き込み(RnW)ビット313も含む。この例では、ブロードキャストはXMバス上で接続された各デバイス(例えば、コンピューターのメモリ内の全てのDIMM)上のいくつかのXMレジスタに対する書き込みアクセスであるので、RnW=0となる。図3Aに示されるように、Srトランザクション311はByte0からByte nまでのいくつかの追加バイトも含み、これらは、オフセット320で提供されるオフセット値にあるXMレジスタで開始して、各デバイス上の一連のシーケンシャルレジスタへそれぞれ書き込まれる。故に、図示のように、たとえば、Byte0はXM-Reg[offset]へ、Byte1はXM-Reg[offset+1]へ、Byte2はXM-Reg[offset+2]へ、そして最後にByte nはXM-Reg[offset+n]へと書き込まれる。
コラム350に示される符号は、従来のSMバスおよびXMプロトコルにおいてそれらの符号が持つのと同じ意味を持ち、これらは、コマンド内で送信される各バイトに対する1ビットの応答を表しており、当該応答は当該コマンドを受信するデバイスにより送信される。符号の意味は次のとおりである。Sはスタート、Srはリスタート、ACKは肯定応答、Tはトランジション、Pは終了。
図3BはXMプロトコルレジスタへの選択的ブロードキャストの例示コマンドを示す。図3Bを参照すると、図3Bの例示コマンドは、2つの例外を除いては図3Aのコマンドと全ての面で同一である。この例外とは、スレーブアドレスマスクフィールド315の値と、当該例示コマンドに含まれるSrトランザクションの数、つまりSrトランザクション311および312とである。図3Aの例示コマンドに対するこれらの変形について、次に説明する。しかしながら、図3Bの例示コマンドの他のすべての様相は図3Aの例示コマンドの対応する特徴と同様であるので、ここでは再度の説明を省略する。引き続き図3Bを参照すると、スレーブアドレスマスクフィールド315、つまりSlaveAddrMask[2:0]の値は「000」であり、これはコマンド300B内に含まれるデバイスアドレスのビットはマスキングされないことを意味する。その結果、Srトランザクション311および312内で列挙される各デバイスアドレスはアクセスされるが、他のアドレスはコマンド300Bによりアクセスされない。
引き続き図3Bを参照すると、前述のとおり、Srトランザクション311および312の各々は、次のことを除き、図3AのSrトランザクション311と同様である。すなわち、上記の通り、Srトランザクション311内のDevice AおよびSrトランザクション312内のDevice Bはマスキングされておらず、他のデバイスではなく、それぞれ具体的にこれらのデバイスのみにアクセスする。
図4は、さまざまな実施例にかかる、XMプロトコルレジスタのグループアドレス指定のための例示のブロードキャストコマンド400を示す。コマンドは、指定されるデバイスグループと、そのグループ内の各デバイス上の複数のXMレジスタへとブロードキャストするのに使用される。図4を参照すると、図4の例示コマンドは、1つの例外を除いては全ての面で図3Bのコマンドと同一である。この例外とは、スレーブアドレスマスクフィールド415の値である。スレーブアドレスマスクフィールド415は、コマンド内で指定される各アドレス、つまりデバイスアドレス416および417の、3個のLSBがマスキングされるべきことを示す。これは、当該コマンドを受信するデバイスは、送信されたデバイスアドレス416および417の4個のMSBが自己のアドレスと一致するか否かのみをチェックし、一致があれば、受信デバイスは、コマンド内で指示されるようにメモリアクセスを実行するということを意味する。故に、デバイスアドレス416および417の各々は、実際上、各デバイスアドレスの4個のMSBと一致するグループである、デバイスグループをターゲットとする。これは図4において、デバイスアドレス416を「Dev ID Code[6:0]=0xABCD_xxx」として、デバイスアドレス417を「Dev ID Code[6:0]=0xEFGH_xxx」として示すことにより表されており、これは受信デバイスが各アドレスの3個のLSBを単に無視することを示す。
他の全ての面では、図4の例示コマンドは図3Bの例示コマンドの対応する特徴と同等であるため、ここでは再度の説明を省略する。
図5から図7は、第2のアクセスモード、つまりデバイスレジスタアクセスを指定する例示のブロードキャストコマンドが示される。次に、これらについて説明する。
実施例においては、アドレスとオフセットとを含むレジスタアクセス定義は、フルブロードキャストまたはグループブロードキャストのように、グループとして命令される全てのデバイスにわたり一様であることが保証されるべきである。実施例においては、デバイスレジスタアクセスのために発行されるブロードキャストコマンドでは、ヘッダの下位バイトがデバイスレジスタオフセット情報を運ぶ。実施例においては、これはXMSの必須態様であるため、オフセットは全てのデバイスにわたり共通であることが保証される。故に、マルチキャストまたはグループ書き込みのためにアドレスマスキング機能を利用すべく、グループは、同一のアドレス/レジスタの定義を有する必要がある。
図5は、さまざまな実施例にかかる、デバイスレジスタへのフルブロードキャストコマンドのための例示フォーマットを示している。図5を参照すると、追加ヘッダバイト510は、値が「111」のスレーブアドレスマスクフィールド515を含む。全てのデバイスアドレスビットがマスキングされているので、コマンドは「フルブロードキャスト」として動作し、それゆえ当該コマンドを受信するあらゆるデバイスが、当該コマンドを実行することになる。追加ヘッダバイト510はまた、4ビットの予約フィールドと、1ビットのアクセスモードインジケータ530とを含む。図2、図3Aおよび図4の例示コマンドとは異なり、図5のアクセスモードインジケータ530は、この例では、XM-REG-MODE=0であり、これは第2のアクセスモード、つまりレジスタアクセスモードを示す。上述のように、コマンドのアクセスモードがプロトコルレジスタアクセスである場合にレジスタオフセットフィールドとして使用される予約フィールド520は、デバイスレジスタアクセスモードでは使用されない。
追加ヘッダ510の後ろに続くのはSrトランザクション511である。引き続き図5を参照すると、Srトランザクション511は、全体ヘッダバイト514と、それに続く、ヘッダバイトのセットを含み、1つのヘッダバイトが、n個のデータバイトのうちの各々のデータバイトのための、固有のものである。このコマンドはフルブロードキャストコマンドであるので、Srトランザクションの全体ヘッダバイト514は、デバイスアドレスとして0x000_0000を提供し、そして上述のとおり、スレーブアドレスマスク515を「111」と付与すれば、当該コマンド500を受信するデバイスは、とにかく全てのアドレスビットを無視する。全体ヘッダバイト514は、ここでは値「0」を有し、各デバイス上の複数のデバイスレジスタへの書き込みを意味するRnWビットも有する。ヘッダバイトは、符号512のHeaderByte0で開始し、HeaderBytesにより示される各アドレス/オフセットにおける受信デバイスに書き込まれるべきデータバイトは、符号513のByte 0で開始する。
追加のヘッダバイトを理由として、第2のアクセスモードのSrトランザクション511は、第1のアクセスモードにおけるSrトランザクションよりも長くなる。なぜならば、ペイロード/バイトに加えて、アドレス/オフセット情報が追加される必要があるためである。故に、たとえば、図5のSrトランザクション511は、図2のSrトランザクション211よりも長くなる。
図6は、さまざまな実施例にかかる、デバイスレジスタへの選択的ブロードキャストまたはマルチキャストのための、例示コマンド600を示したものである。図6を参照すると、例示コマンド600は、図5の例示コマンド500と、2つの点を除いては、全ての面で同一である。2つの点は、スレーブアドレスマスクフィールド615の値と、当該例示コマンドに含まれるSrトランザクション、つまりSrトランザクション611および612であるが、の数である。図5の例示コマンドからの変形について、次に説明する。しかしながら、図6の例示コマンドの他の全ての態様は、図5の例示コマンドの対応する特徴と同様のため、ここでは再度の説明を省略する。引き続き図6を参照すると、スレーブアドレスマスクフィールド615、つまりSlaveAddrMask[2:0]の値は「000」であり、これはコマンド600内に含まれるデバイスアドレスのビットはマスキングされないことを意味する。その結果、Srトランザクション611および612内で列挙される各デバイスアドレス、それぞれデバイスIDのDev_A 616とDev_B 617が、コマンド600によりアクセスされるが、他のアドレスはコマンド600によりアクセスされない。故に、デバイスDev_AおよびDev_Bの各々については、それらの各Srトランザクションは、ヘッダバイトのセットを含み、当該ヘッダバイトのセットは、Byte0~Byte nの各々のためのアドレスおよびオフセットを供給し、その後にByte0~Byte nの各対応するオフセットにおけるデバイスレジスタにそれぞれ書き込まれる実際のバイトが続く。
図7は、さまざまな実施例にかかる、デバイスレジスタへのグループアドレス指定のための例示のブロードキャストコマンド700を示したものである。コマンドは、指定されるデバイスのグループと、そのグループ内の各デバイス上の複数のデバイスレジスタへとブロードキャストするのに使用される。図7を参照すると、例示コマンド700は、1つの点を除いては全ての面で図6のコマンドと同一である。1つの点とは、スレーブアドレスマスクフィールド715の値である。スレーブアドレスマスクフィールド715は、コマンド700内で指定される各アドレス、つまりデバイスアドレス716および717の、3個のLSBがマスキングされるべきことを指示している。各アドレスの下位3個のLSBのこのマスキングは、コマンド700を受信するデバイスは、送信されたデバイスのアドレス716および717の4個のMSBが自己のアドレスとマッチングするか否かをチェックするだけでよいことを意味する。マッチングがあれば、受信デバイスは、コマンド内で指定されるようにメモリアクセスを実行する。故に、デバイスアドレス716および717の各々は実際には、各デバイスアドレスの4個のMSBがマッチングするグループのデバイスグループをターゲットにする。これは図7において、デバイスアドレス716を「Dev ID Code[6:0]=0xABCD_xxx」として、デバイスアドレス717を「Dev ID Code[6:0]=0xEFGH_xxx」として示すことにより表されており、これは受信デバイスが各アドレスの3個のLSBを単に無視することを示す。全ての面において図7の例示コマンド700は、図6の例示コマンド6の対応する面と同様であるので、これらの同様の態様については既に説明済みであるため、再度の説明を省略する。
別の実施例では、ブロードキャストトランザクションがデバイスのコントロールまたはセットアップのために発行され、故に第1のアクセスモードを使用する場合、ブロードキャストコマンドの後ろには、全てのターゲットデバイスへのコントロールデータが続く。いくつかの実施例においては、コントロールデータは、複数の2バイトペアで提供され、各バイトペアは1個のマスクバイトと1個のデータバイトを含む。これらの実施例においては、マスバイトのビットの値「1」は、デバイスがコントロールデータの対応するビットを処理すべきではないことを示し、マスクバイトのビット値「0」は、デバイスがコントロールデータの対応するビットを処理すべきであることを示す。各コントロールデータに先行するマスクバイトを追加することで、1トランザクションあたりの送信バイト数を増加させるが、これはまた、コマンドが、示される各オフセットにおけるプロトコルレジスタのフィールドを選択的に更新することを可能にし、かなりの柔軟性を提供する。
図8は、これらの別の実施例にかかるフルブロードキャストを示したものである。図8を参照すると、図8は、さまざまな実施例にかかる、コマンド内で送信される各ペイロードのバイトのマスキングを使用した、XMプロトコルレジスタへのフルブロードキャストコマンドのための代替の拡張コマンドフォーマット800を示している。代替の拡張コマンドフォーマット800は、Srトランザクション811の各データバイトの前に追加のマスキングバイトが提供されている点を除いては、全ての面で図3Aのブロードキャストコマンド300Aと同様である。
引き続き図8を参照すると、このコマンドのフルブロードキャストという性質が前提であるので、追加ヘッダバイト810を参照すると、スレーブアドレスマスク815の値が「111」に設定されている。上記で説明したように、これは、当該コマンドを受信するあらゆるデバイスが、デバイスIDコードフィールド820に示される0x000_000の、指定されたデバイスアドレス内の全てのビットを無視することを意味する。上述のように、ブロードキャストコマンド800は、全てのデバイス上のXMプロトコルレジスタへ宛てられ、故にアクセスモードインジケータ830にXM-REG-MODE=1と示される。
引き続き図8を参照すると、追加ヘッダバイト810の後ろに、標準のSrトランザクション811がきて、Srトランザクション811は、Srヘッダバイト812で開始し、Srヘッダバイト812は、上述のように0x000_0000のブロードキャストデバイスアドレスを示す。ここで、スレーブアドレスマスク815が「111」に等しい場合は、実際は後続のデバイスIDコード829は必要でないことに留意されたい。図8の実施例では、これは、コマンドの全般的フォーマットを維持すべく保持されているが、代替の実施形態および実施例では、最適化としてこれは削除されてもよい。ブロードキャストコマンドは、RnWビット821で示されるとおり、書き込みコマンドである。
引き続き図8を参照すると、Srトランザクション811の残部において、各データバイトには、上述のとおりマスキングバイトである「バイトイネーブル」バイトが先行している。故に、図3Aに示されるコントロールバイトの実施例にの代わりに、この代替の実施例では、コマンドのバイトシーケンスは、1オフセットあたり{Byte-Enable,Byte}のペアを含む。この特長は、複数のデバイスにわたり、1オフセット内に非類似のビットフィールドがあり得るシナリオにおいて役立ってよく、またXMプロトコルレジスタアクセスは、すべてのXM準拠デバイスにより実装される共通のデバイスであるので、XMプロトコルデバイスには特に有用であってよい。図8では、2つの例示の{Byte-Enable,Byte}ペアが示されており、第1のペア813は第1のコントロールバイトByte0のためのものであり、Byte0は追加ヘッダバイト810で指示されるオフセットにおけるプロトコルレジスタへ書き込まれ、第2のペア817は最後のコントロールバイトByte nのためのものであり、Byte nは追加ヘッダバイト810+nまたはXM-Reg[offset+n]で指示されるオフセットにおけるプロトコルレジスタへの書き込まれ。それぞれのケースにおいて、それぞれのマスキングバイト「Byte enable 0」または「Byte enable n」により有効化されるコントロールバイト「Byte0」または「Byte n」のビットのみが、示されるレジスタへ書き込まれる。
ここまで説明してきた例示コマンドにおいては、これらの全てがプロトコルレジスタまたは内部デバイスレジスタを例えば更新するように受信デバイスへ命令する、書き込みアクセスであった。単一のデバイス上の1または複数のレジスタの内容に固有である読み取りとは対照的に、書き込みオペレーションのみが真に複数デバイスへのブロードキャストとなり得ることが理解されている。図9は、さまざまな実施例にかかる、特定のデバイスのn個のXMプロトコルレジスタの読み取りのための例示コマンド900を示すものである。コマンド900は図3Bのコマンド300Bの読み取りバージョンであり、ここでは、コマンド900は1つのデバイスのアドレスのみを含む。故に、引き続き図9を参照すると、コマンド900は、930および921において、読み取りオペレーションを示す、RnW=1を示す。さらに、追加ヘッダバイト910は、スレーブアドレスマスクフィールド915内に、マスキングなし、つまりユニキャストオペレーションを示す値「000」を提供しており、アクセスモードインジケータ916はプロトコルレジスタが読み取られるべきことを規定している。故に後続のSrトランザクション911は、slaveAddr.XM-Reg[offset]~slaveAddr.XM-Reg[offset+n]におけるそれぞれのプロトコルレジスタから、nバイトのデータが読み取られることを指定する。実施例においては、デバイスが読み取りコマンドに応答するとき、デバイスはこれらの各データバイトに「Byte0」から「Byte n」とラベル付けする。
実施例においては、120個のデバイスにわたる同一のレジスタオフセットへのXMレジスタ書き込みに加え、120個のデバイスにわたる同一のレジスタオフセットへのXMプロトコルレジスタの読み取りアクセスは、現在のXMS下のものよりも効率的となることに留意されたい。さらに、ブロードキャストアクセスが何倍か改善されている。というのは、実施例において、いくつかのデバイスが、指定されたコントロールフラグビットのいくつかにおいて非同一の値を有し得る場合であっても、ホストコンピューターは、ブロードキャストコマンドを使用し続けることができるからである。これは、現在のプロトコル下では、不可能である。
実施例においては、複数のDIMMにわたり同一のデバイスタイプへアドレス指定/マルチキャストする機能に加え、1デバイスごとのXMプロトコルレジスタの特定のセットにアクセスする機能も可能にされる。よって、この機能は、たとえば、PECイネーブル、IBIのオン/オフなどのプロトコル機能コントロールのための標準機構を可能にする。図9で示されるように、これらのデバイスへの読み取りは同じコマンドで扱われるが、ユニキャストモードでは、上述のように、SlaveAddrMask=000で扱われる。
次に図10から図12を参照しながら、ランタイム中に、メモリモジュール(たとえばDIMM)上の複数のデバイスへ一意のアドレスを割り当てる方法について説明する。デバイスは、ローカルハブにわたり、メモリモジュールのハブに接続されている。実施例においては、この方法は、図3Aを参照して上で説明した拡張ブロードキャストコマンドフォーマットを利用するものであり、そこではホストコンピュータによる、各デバイス上の特定のオフセットにおけるすべてのXMプロトコルレジスタに対するフルブロードキャストであった。しかしながら、実施例においては、方法、およびそれを実装するための例示のブロードキャストコマンドフォーマットは、ブロードキャストコマンドを受信した後のDIMMのハブまたはゲートウェイに対し、当該ブロードキャストコマンドをDIMM上の「ハブの後ろ」の全てのデバイスに転送する前に、当該ブロードキャストコマンド内に含まれるデバイスアドレスを、ホストコンピューターから受信したデバイスアドレスから、異なる値に修正するよう命令する。
しかしながら、図10から図12の方法を説明する前に、DIMMの製造における背景をまず説明する。たとえばDIMMなどのメモリモジュールが、マザーボードまたはコンピューティングデバイスの全てのスロットにわたり再使用可能かつ構成可能なものであることを保証すべく、全てのDIMMは同一に構築され、ひとたびメモリモジュールが挿入されると、たとえばSPDデバイス等の精密抵抗器を通して、メモリモジュールのハブによりホストID(「HID」、または「DIMM_ID」)が検知される。故に、メモリモジュールが最終的に挿入されるスロットの実際のhost_id(たとえばDIMM_ID)にかかわらず、製造時にはDIMM上の全てのデバイスのデフォルトアドレスは同一である。
そのため、DIMM上の全てのデバイスがホストコンピューターによりシームレスにアドレス指定されることを保証すべく、ハブが、継続的にホストコンピューターから来るアドレスをローカルデバイスアドレスに変換する必要があるか、あるいは、DIMM上の「ハブの後ろ」のデバイスが、それらの実際のhost_idを認識させられる必要があり、その結果、デバイスが、ホストコンピューターにより、たとえば図2から図9で示される例示のコマンドの1つを介してアドレス指定された場合、デバイスは、コマンドに適切に応答できる。
さらに、DIMMのハブは、PECまたはストアフォワードスキームの実装を要することなく、できるだけ安価に作られるのが望ましい。また、ハブは独立のクロックソースを有さないので、ハブは自身ではデータの処理を行わない。よって、理想的なハブはパッシブパスゲートベースの実装であり、それは、1つのドメイン(たとえばコマンドバス)から別のドメイン(たとえばローカルデバイスバス)へトランザクションを転送し、バスの負荷の低減とバランス調整に寄与し、その結果、可能な限り多くのデバイスがコマンドバスに取り付けられ得る。
あるいは、製造中に、ワンタイムプログラマブルアドレスが各デバイスに割り当てられてもよい。しかしながら、これは製造コストが増える。また別の選択肢として、ハブが、継続ベース(on going basis)で、ホストコンピューターから受信する各トランザクションまたはコマンドのアドレスを管理してもよい。たとえば、ハブは、トランザクションまたはコマンド内で使用されるデバイスアドレスを、それが接続されるスロットの実際のDIMM_IDに変換する。しかし、これはかなりの作業負荷がかかるとともに複雑さも増す。
したがって、実施例においては、上述の第1のアクセスモードのフルブロードキャストコマンドがホストコンピューターにより使用され、各DIMM上の各ハブに、ハブのホスト識別子(たとえばDIMM_ID)をそのDIMM上の全てのローカルバスデバイスへプッシュさせる。
実施例においては、この特定のDIMM_ID伝搬トランザクションにおいては、各DIMM上のハブがホストコンピューターからブロードキャストコマンドを受信すると、当該ブロードキャストコマンドをローカルバスへ転送する前に、当該ブロードキャストコマンドに含まれるデバイスアドレスの特定のビットを変更する。具体的に、ハブは、ホストコンピューターから受信されたブロードキャストメッセージのペイロード内のHID/LIDビットを置き換える。さらに、実施例においては、PECをそのようなコンフィギュレーション/ブロードキャストHID伝搬トランザクションを可能にすることは、比較的簡素な8:1ルックアップテーブルを使用して実現される。これは、HID伝搬トランザクションの全てのビット値は事前に既知であるからであり、PECは挿入されるべきDIMM_IDに基づいて予め計算された値であってよい。
しかしながら、デバイスアドレスが一意である限りにおいて、またはハブが1つ1つのトランザクションについてデバイスアドレスを変更する限りにおいて、デバイスは、ハブのない環境において、そのデフォルトアドレスで依然動作可能であることに留意されたい。故に、さまざまな実施例により、ブロードキャストDIMM_ID伝搬トランザクションは、デバイスはそれなしでシームレスに動作できるので、必須事項ではない。しかしながら、このことは、ハブのないケースにおいては、デバイスアドレスが一意であり、ハブのあるケースにおいては、これがHID伝搬なしで動作するには、ハブが1つ1つのトランザクション(pvt/direct)について、宛先アドレスを変更しなければならないということを前提とする。
実施例においては、上述のXMブロードキャストトランザクションは、XMレジスタと組み合わされて、ローカルバス上で接続されるデバイスのHID/DIMMを更新する。以下に詳細に説明されるように、実施例においては、ハブがこの特定のコマンドを検知し、当該コマンドのHID/LIDフィールドのみを置き換え、また有効化されている場合は、PECも同様に置き換える。
実施例においては、ローカルバル上の全てのデバイスは、XMバス準拠であり且つ、以下の必須ケーパビリティを実施する必要がある:1.ブロードキャストトランザクションをサポートする(SlaveAddr=0x0000_000のトランザクションを受け付け可能であること);2.プログラマブルHID/DIMM_IDを有すること:a.プログラマブル(リセット後1回書き込み)HID/DIMM_ID、スレーブデバイスID、具体的にビット[2:0]が「111」にデフォルト設定されているので、XM‐レジスタオフセットは0xFである。;3.特定のアドレス{4b DTI,3b HID(programmed)}を復号できること。
実施例においては、デバイスは、I2Cに準拠すべく、デフォルトで、ピンストラップからデフォルトスレーブアドレスを導出してよい。その場合、デバイスはハブがある場合もない場合も、任意のホストに対し、このアドレスを、後で読み取るためにXMプロトコルレジスタ[0xF]のデフォルト値として提供する。
実施例においては、DIMMのゲートウェイまたはハブは、上記の指定されたブロードキャストトランザクションを受信すると、入って来る値の下位3ビット(または、たとえば他の拡張アプリケーションではこれよりビット数が多い場合も少ない場合もある)を更新して、DIMM_ID/HIDの特定のアドレスに設定する。実施例においては、ホストはバス初期化中に、このブロードキャストコマンドをまさに第1のトランザクションとして送信してよく、実施例においては、当該トランザクションは、各DIMM上に接続されるデバイスセット全体にわたる単一のブロードキャスト書き込みとして行われてよい。
図10は、次に説明するように、さまざまな実施例による、かかるホスト識別子(HID)割り当てトランザクションのための例示フォーマットを示している。図10を参照すると、実施例においては、HIDコンフィギュレーショントランザクションはHID/DIMM_IDをDIMM上のそれぞれのデバイスのXM protocol register[15]へと更新する。図10の1010行のOffset[3:0]=1111により示されるように、XM protocol register[15]の使用は、特有の実装である。図10の1010行(および全ての他の図の同様の列)は例として示されるものであり、他の実施例においては、他の組み合わせが使用されてよい。たとえば、オフセットは2ビットに低減されてよい。
引き続き図10を参照すると、例ブロードキャストコマンドの例示フォーマットは基本的に図3AのXMプロトコルレジスタのコマンドに対する例示のフルブロードキャストと同一だが、図10のコマンドでは、Srトランザクションにおいて1個のみのコントロールバイトが更新される。そこで、図10で示されるように、最初のブロードキャストコールアドレスバイトの後に、追加ヘッダバイト1010が、スレーブアドレスマスクフィールド1020内で、「111」のマスキングを提供する。上記のように、これは、デバイスアドレスの全7ビットをマスキングし、これによりフルブロードキャストを保証する。追加ヘッダバイト1010はまた、オフセットフィールド1030に、register[15]である、レジスタオフセット0xFを提供する。このオフセット値は、復号されると、アドレスモード値1040と共に、各ハブに対し、これがhost_id伝搬コマンドであること、および、ハブは、当該コマンド内で提供されたアドレスの一部を、ハブが取得したDIMM_IDで置き換えることを示す。故に、追加ヘッダバイト1010は、アクセスモードインジケータ1040にXM-REG-MODE=1を提供し、これは第1のアクセスモードを示し、ここにおいてXMコントロールまたはプロトコルレジスタは更新される。
引き続き図を参照すると、追加ヘッダバイト1010の後には、Srヘッダバイト1013、および「ペイロード」またはコントロールデータバイト1015を含むSrトランザクションが続く。Srヘッダバイト1013は、図3A同様に、000_0000というフルブロードキャストデバイスアドレスを有し、また、メモリアクセスが書き込みオペレーションであること、たとえばアドレスをレジスタ15に書き込むことを示す。Srヘッダバイトに続くのはコントロールデータバイト1015である。上述のとおり、図3AのXMレジスタへのフルブロードキャストコマンドとは対照的に、図10の例示のコマンド1000では、1つのコントロールデータバイトByte0のみが含まれる。これは2つのフィールドを有する。第1のフィールド1016は、Byte0の最初の4個のMSBであるByte0[7:4]をレジスタ15へ書き込むようにデバイスに対して命令し、第2のフィールド1017は、Byte0の最初の3個のLSBであるByte0[3:1]を同じレジスタへ書き込むようにデバイスに対して命令し、最後に、フィールド1017でByte0[0]=0で示されるように、そのレジスタの最後のLSBへ「0」を書き込むことを命令する。故にハブがブロードキャストコマンド1000をそのDIMM上のデバイスへ渡す前に、3個のLSBの[3:1]がハブにより修正される。これらの3ビットは、DIMMが挿入されたスロットから、上述のように高精度レジスタから、ハブにより取得される。故に、コマンドが各デバイスにより実行された後、Register[15]は次のビット値を持つことになる:Bit0はゼロ、Bits[3:1]はHUB/DIMM_IDで置き換えられる値、およびBits[7:4]は「0000」。
本明細書の中で示される特定の実施例において、その目的は8個のDIMMをアドレス指定することである。それゆえ、アドレスの3つのLSBはハブにより置き換えられる。上述のように、この実施例においては、4つのMSBはデバイスタイプを示す。他の実施例においては、アドレス指定されるDIMMの数は減っても増えてもよく、それゆえ、ハブによりbranch-id(or HUB/DIMM_ID)で置き換えられる必要のあるLSBが減っても増えてもよい。
実施例においては、これは、PECが有効にされる場合、これは、1015におけるコントロールバイトのByte0の後に、Srトランザクション内の追加コントロールバイトをコマンド1000に含めることにより行われる。
XMS準拠であって、コマンド1000を受信すると、ハブは、Byte0の割り当てられたアドレス(ABCD_HID)と、符号1013のブロードキャストアドレス(0000_000)とを渡す。
ハブは、Byte0[3:1]のそのHID/DIMM_ID(引き出された値からの静的置き換え)を、後述の特定のトランザクションの3ビットに更新/置き換えする必要があり、同時にトランザクションはホストバスからローカルバスへと渡される。
実施例においては、ハブは、入ってくるブロードキャストについて以下の全ての条件が満たされる場合のみ、host_idの更新を実行する:XM-MODE-REG1040が1;Offset[3:0]1030=1111;およびSlaveAddressMask[2:0]1020=111。これらが満たされる場合、実施例において、ハブは、ローカルバス上で、Byte0のLSB3ビットを、割り当てられたDIMM_ID/hostIDで置き換える。
実施例においては、全てのローカルデバイスはコマンド1000の修正フォームをXMブロードキャストトランザクションとして受け取り、それらのDIMM_ID/hostIDを更新する。この書き込まれた値は、デバイスへのすべての前の既知の/割り当てられたアドレスを上書きする。いくつかの実施例においては、オフセット0xFにおけるレジスタは、安全な起動プロセスの後に悪意のあるエージェントがHIDを再プログラミングすることがないことを保証するよう、1回書き込みモードで実装されてよい。他の実施例では、上述のように、HIDを記憶するのに別のレジスタが使用されてよく、Register[15]は単なる例である。
実施例においては、ブロードキャスト用にPECが有効化されていても、第1のコマンドセグメント1010のPECは保持される。第2のコマンドセグメント1013用のPECは基本的に、ハブにより容易に置き換え可能な、精密に1バイトのスレーブアドレスが0x0および1バイトのデータである。さらに単純化すると、実施例においては、Byte0[7:3]の値は0x0と定義されてよく、その結果、PECが3ビットのDIMM_IDのみを持つすべてゼロのPECとなり、ゆえに8つのエントリを有するストレートなルックアップテーブルとなる。入ってくるPEC値は常に0x0000(全てゼロの2バイト)の固定CRC-8である。
図11は、さまざまな実施例にかかる、図10で示されるような、ホストコンピューターのフルブロードキャストコマンドを介して、DIMM上に設けられる複数デバイスのDIMM_ID更新する一例を示している。図11を参照すると、ホストコンピューター1110は、図10の1000のような、アドレス割り当てコマンド1011をブロードキャストする。当該コマンドは、たとえば図10の符号1015のByte0のようなコントロールデータバイトを含み、受信デバイスに対して、デバイスのレジスタ15のLSBにhost_idの「000」を書き込むように命令する。コマンドはコマンドバス1141上で送信され、実施例においては、コマンドバス1141はXMS準拠のバスである。コマンド1111は、コマンドバス1141に接続されるそれぞれのDIMMのハブ、たとえば符号1125のDIMM Aのハブ1120および符号1135のDIMM Bのハブ1130で受信される。コマンドを受信すると、これらのハブはそれぞれコマンドの復号を行い、コマンドがhost_id伝搬コマンドであるか否かを決定する。その結果、図11で示されるように、ハブ1120とハブ1130は、それぞれのDIMMのローカルバスにわたりコマンドを転送する前に、ブロードキャストコマンド1111内の、3個のLSBを、ホストにより送信された元の値である「000」から、符号1125のDIMM Aのハブ1120の場合は「001」に、符号1135のDIMM Bのハブ1130の場合は「010」に変更する。3個のLSBについて修正されたこれらの値は、それぞれのDIMMが挿入されるスロットのファンクションであり、上述のとおり、精密抵抗器からハブにより取得される。ひとたびそれぞれのハブがコマンド1111への修正を行うと、コマンドはDIMM上の全てのデバイスへ送信される。たとえば、図で示されるように、ハブ1120はその固有に修正されたコマンドを符号1125のDIMM A上のデバイス1127へ送信し、ハブ1130はその固有に修正されたコマンドを符号1135のDIMM B上のデバイス1137へ、送信する。
上述のように、図10のコマンド1000の特別なケースを除いては、一般的にハブは、受信したブロードキャストコマンドをハブ上のデバイスへ単に送信する。よって、アドレス指定されたDIMMについては、追加の処理なしで、全てのトランザクションクロックフェイズが透過的にローカルバス間で(読み取りクロックのために)転送される。
実施例においては、ひとたびHID伝搬が成功裏に完了して新しいコマンドが発行されると、ハブはそのブランチ/ローカルバスがアドレス指定されているかいないかを(アドレスのLSB3ビットに基づいて)識別し得る。アドレス指定されていない場合、ハブはNACKでトランザクションを終了させる。
アドレス指定されていないまたは選択されていないDIMMの場合、アドレス指定されていないハブは、そのローカルバス上のコマンドトランザクションをアボート/終了させる。
入ってくるDIMM_IDがローカルバスのタイオフ3'b111とマッチングする場合であっても、DIMM#8とアドレス指定される。これは、ローカルバスは3'b111を使用しているので、他のDIMMで起きる。しかし、上述のように、ブロードキャストコマンドを使用したHID/DIMM_IDの割り当てが実行される場合は、このシナリオは起きないことに留意されたい。
にも関わらず、HID/DIMM_ID割り当てがプログラミングステップとして行われなかった場合のエラーシナリオに対処すべく、アボートを実行するハブは、ホストバス上のバスコンテンション/マルチドライバを低減するのに役立つ。
図12は、さまざまな実施例にかかる、メモリモジュールのハブにより、メモリモジュール識別子を取得する段階、ホストからのブロードキャストhost_ID伝搬コマンドを受信する段階、受信したコマンドのhost_IDを修正する段階、および、メモリモジュール上の全てのデバイスへのコマンドを伝搬する段階、のプロセス1200の動作フローの概要を示している。よって、プロセス1200は、図11に関連して上述した、図10のコマンド1000のようなコマンドの受信に応答して、DIMMのハブによりとられるアクションの詳細を説明するものである。
プロセス1200は、さまざまな実施例にかかる、たとえば、図1のゲートウェイ130、または、たとえば図13のゲートウェイ1328などの、メモリモジュールのゲートウェイまたはハブにより実行されてよい。プロセス1200は、たとえば、少なくとも部分的に、たとえば図1のゲートウェイ130の復号回路133などの、ハブ内の復号回路により実行されてよい。プロセス1200はブロック1210からブロック1250までを含んでよい。別の実施例では、プロセス1200はこれより多いまたは少ないオペレーションを有してよく、またいくつかのオペレーションが別の順序で実行されてよい。
図12を参照すると、プロセス1200はブロック1210で開始し、そこでは、メモリモジュールのハブが、メモリモジュールが挿入されるスロットに対応するメモリモジュール識別子を取得する。たとえば、DIMMのハブは、高精度抵抗器を介して、DIMMが挿入されるDIMMスロット番号にアクセスする。たとえば、8個のDIMMのあるメモリシステムの場合、メモリモジュール識別子は3ビットの数値であってよい。
ブロック1210から、プロセス1200は、ハブがホストコンピューターから、アクセスモードインジケータとレジスタオフセット値とを含むブロードキャストメッセージを受信する、ブロック1220へと進む。たとえば、ブロードキャストメッセージは、例示的な実装として、図10のコマンド1000と同等であってよく、コマンド1000は、第1のアクセスモードおよびregister[15]を指すレジスタオフセット値「1111」を示す。他の実施例では、他の例示的なコマンドを使用して、さまざまな他のレジスタが指し示されてよい。
プロセス1200はブロック1220からブロック1230へ移動し、そこでは、ハブがアクセスモードインジケータを復号して、プロトコルレジスタのアクセスモードが示されていることを決定し、例えば、XMコントロールまたはプロトコルレジスタの第1のアクセスモードが値「1」を持つフラグで示されるシステムにおいては、XM-REG-MODEフラグが「1」である。
プロセス1200はブロック1230からブロック1240へ移行し、そこでは、ハブは、コマンドがHost_ID値を含むホストID伝搬コマンドであることを識別する。たとえば、register[15]を指すオフセットと、スレーブマスク値「111」と、RnW=0の「書き込み」を示す値に設定されたread not writeフラグとの組み合わせが指定された図10のコマンドを使用すると、ハブ内の復号回路は、受信したコマンドが、ハブがByte0で提供されるコントロールデータビットの一部を修正すべきである特別なホストID伝搬コマンドであることを認識する。
最後に、プロセス1200はブロック1240からブロック1250へ移行し、そこでは、ハブはHost_ID値の一部を、検知されたメモリモジュール識別子と置き換え、今修正されたコマンドをメモリモジュール上の全てのデバイスへ伝搬する。たとえば、図11で示されるように、コマンド1111の3個のLSBの修正に続き、ハブ1120および1130はそれぞれ、修正されたコマンド111を、DIMM1125およびDIMM1135それぞれの各ローカルバスで送信する。
そして図13を参照すると、さまざまな実施例にかかる、本開示内容の実行に適したコンピューターデバイスのブロックダイヤグラムが示されている。示されるように、コンピューターデバイス1300は、1または複数のプロセッサ1302と、システムメモリ1304とを含んでよい。それぞれのプロセッサ1302は、1または複数のプロセッサコアと、ハードウェアアクセラレータ1305とを含んでよい。ハードウェアアクセラレータ1305の実施例は、プログラムされたフィールドプログラマブルゲートアレイ(FPGAs)(図示せず)を含んでよいが、これに限られない。
コンピューターデバイス1300はまた、システムメモリ1304を含んでよい。実施例においては、システムメモリ1304は、DIMM1325などの、揮発性または非揮発性の任意の既知のメモリを含んでよい。DIMM1325はコマンドバス1341を介してプロセッサ1302に接続されてよい。さらに、コンピューターデバイス1300は、マスストレージデバイス1306、入力/出力デバイスインターフェイス1308(マウス、カーソルコントロール、ディスプレイデバイス(タッチ反応スクリーンを含む)などの、さまざまな入力/出力デバイスとインターフェイスするもの)、および通信インターフェイス1310(ネットワークインターフェイスカード、モデムなど)を含んでよい。実施例では、通信インターフェイス1310は、近接するフィールド通信を含めた有線または無線の通信をサポートしてよい。これらのエレメントは、1または複数のバスを表わし得るシステムバス1312を介して、互いに連結されてよい。複数のバスの場合、それらは1または複数のバスブリッジによりブリッジされてよい(図示せず)。
実施例においては、DIMM1325は、入力インターフェイス(図のサイズを考慮して図示しないが、図1を参照して上述されている)と復号回路1327を含むゲートウェイ1328と、たとえばデバイス1329、デバイス1333およびデバイス1337などのデバイスのセットを含んでよく、デバイスのセットは、それぞれが入力インターフェイス(図示せず)と復号回路1331、1335および1339をを含んでよい。デバイス1329、1333および1337は、DIMM1325内に設けられたローカルバス1343にわたりゲートウェイ1328へ接続されてよい。
実施例においては、オペレーティングシステム、1または複数のアプリケーション、および/または、ゲートウェイ130の復号回路133と、図1で示される「ゲートウェイ130の後ろ」に設けられる、デバイスA、BおよびCのそれぞれにおける復号回路135またはゲートウェイ130内の復号回路1327と、図13に示されるように「ゲートウェイ1328の後ろ」に設けられる、デバイス1329、1333および1337のそれぞれの復号回路1331、1335および1339の様々なソフトウェア実装コンポーネントのプログラミング命令の実行可能なコード(これらを総称して演算ロジック1322という)の作業コピーと永久的コピーを記憶するために、システムメモリ1304とマスストレージデバイス1306が採用されてよい。演算ロジック1322を実装するプログラミング命令は、プロセッサ1302またはそのような命令にコンパイル可能なたとえばCなどの上位レベル言語によりサポートされるアセンブラ命令を備えてよい。実施例においては、ハードウェアアクセラレータ1305にいくつかの演算ロジックが実装されてよい。実施例においては、演算ロジック1322の一部、たとえばコンパイラのランタイム環境に関連付けられる演算ロジック1322の一部が、ハードウェアアクセラレータ1305で実装されてよい。
プログラミング命令の実行可能コードの永続コピーまたはハードウェアアクセラレータ1305を構成するためのビットストリームが、工場または現場において、たとえばコンパクトディスク(CD)などの配布媒体(図示せず)を介して、または通信インターフェイス1310を介して(配信サーバー(図示せず)から)、永久的マスストレージデバイス1306および/またはハードウェアアクセラレータ1305に設置されてよい。
これらのエレメント1302からエレメント1333の数、ケーパビリティおよび/または容量は、実施例におけるコンピューターデバイス1300の使用目的、たとえば実施例におけるコンピューターデバイス1300がスマートフォン、タブレット、ウルトラブック、ラップトップ、サーバー、セットトップボックス、ゲームコンソール、カメラ、などのいずれであるかにより、変化してよい。エレメント1310からエレメント1343の具体的な構成は他にも知られているものがあるので、さらには説明しない。
さらに、本開示は、コンピュータープログラム製品またはコンピュータープログラムを作成するデータの形をとってよく、そのようなコンピュータープログラムまたはデータは、媒体に具現されるコンピューター使用可能なプログラムコード(またはコンピュータープログラムを作成するためのデータ)を有する任意の有形または非一時的な表現媒体に具現されてよい。図14は、実施例としての、機器による命令の実行に応答して本開示の選択された態様を機器に実施させる命令(または命令を作成するデータ)を記憶させるために使用するのに適し得る、コンピューター可読非一時的記憶媒体を示している。図に示されるように、非一時的コンピューター可読記憶媒体1402は、多数のプログラミング命令1404(またはプログラミング命令を作成するためのデータ)を含んでよい。プログラミング命令1404は、たとえばデバイス1300などのデバイスまたはそのコンポーネントが、プログラミング命令の実行に応答して、オペレーティングシステムファンクション、1または複数のアプリケーション、および/または本開示の態様と関連するさまざまなプログラミングオペレーションを実行できるように構成されてよい。
別の実施例では、代わりにプログラミング命令1404(または命令を作成するためのデータ)が複数のコンピューター可読非一時的記憶媒体1402上に配置されてよい。別の実施例では、プログラミング命令1404(または命令を作成するためのデータ)が、信号などの、コンピューター可読非一時的記憶媒体1402上に配置されてよい。1または複数のコンピューター使用可能媒体またはコンピューター可読媒体の任意の組み合わせが利用されてよい。コンピューター使用可能媒体またはコンピューター可読媒体は、たとえば1または複数の電子的、磁気的、光学的電磁的、赤外線または半導体のシステム、機器、デバイスまたは伝搬媒体であってよいが、これらに限られない。コンピューター可読媒体のより具体的な例(非網羅的列挙)としては以下のものが含まれる:1または複数の配線を有する電子的接続、ポータブルコンピューターディスケット、ハードディスク、ランダムアクセスメモリ(RAM)、リードオンリメモリ(ROM)、消去可能なプログラマブルリードオンリメモリ(EPROMまたはフラッシュメモリ)、光ファイバー、ポータブルコンパクトディスクリードオンリメモリ(CD-ROM)、光学記憶デバイス、インターネットまたはイントラネットをサポートするもののような伝送媒体、または磁気記憶デバイス。注意すべきは、プログラム(またはプログラムを作成するためのデータ)はたとえば紙またはその他の媒体の光学スキャンなどを介して電子的にキャプチャされ、さらにコンパイル、解釈またはその他の処理が適した形で行われ、必要な場合はさらにコンピューターメモリに記憶させる(1または複数の中間記憶媒体の段階を有するか否かを問わない)ことが可能なので、コンピューター使用可能媒体またはコンピューター可読媒体は、プログラム(またはプログラムを作成するためのデータ)が印刷される紙または他の適した媒体であってもよいことである。本文書の文脈において、コンピューター使用可能媒体またはコンピューター可読媒体は、命令実行システム、機器またはデバイスによりまたはそれらと関連して使用されるためにプログラム(またはプログラムを作成するためのデータ)を保持、記憶、通信、伝搬または転送することができる任意の媒体であってもよい。コンピューター使用可能媒体は、コンピューター使用可能なプログラムコード(またはプログラムコードを作成するためのデータ)がベースバンドとしてまたは搬送波の一部として当該媒体に具現された、伝搬データ信号を含んでよい。コンピューター使用可能なプログラムコード(またはプログラムコードを作成するためのデータ)は、ワイヤレス、ワイヤライン、光ファイバーケーブル、RFなどを含むがこれらに限られない、任意の適切な媒体を使用して転送されてよい。
さまざまな実施例において、本明細書で説明されるプログラムコード(またはプログラムコードを作成するためのデータ)は、1または複数の圧縮フォーマット、暗号化されたフォーマット、断片化されたフォーマット、パッケージされたフォーマットなどに記憶されてよい。本明細書で説明されるプログラムコード(またはプログラムコードを作成するためのデータ)は、演算デバイスおよび/または他の機械により直接読み取りおよび/または実行可能にするために必要な、1または複数のインストール、修正、適応化、更新、組み合わせ、補充、コンフィギュレーション、復号、圧縮解除、開梱、配信、最割り当て等を要してよい。たとえば、プログラムコード(またはプログラムコードを作成するためのデータ)は、複数の部分に分けて別々の演算デバイスにおいて個別に圧縮、暗号化および記憶させられて、その部分が復号、圧縮解除および組み合わされた場合、そのプログラムコード(またはプログラムコードを作成するためのデータ)を本明細書の中で説明されるような形で実装する実行可能な1セットの命令を形成してよい。別の実施例では、プログラムコード(またはプログラムコードを作成するためのデータ)は、コンピューターで読み取り可能だが特定の演算デバイスまたは他のデバイス上での命令を実行するためにライブラリ(たとえばダイナミックリンクライブラリ)、ソフトウェア開発キット(SDK)、アプリケーションプログラミングインターフェイス(API)等の追加を要求する状態で記憶させられてよい。他の実施例ではプログラムコード(またはプログラムコードを作成するためのデータ)は、プログラムコード(またはプログラムコードを作成するためのデータ)が全体としてまたは部分的に実行/使用される前にコンフィギュレーション(たとえば設定記憶、データ入力、ネットワークアドレス記録など)が行われる必要があってよい。そして、開示されるプログラムコード(またはプログラムコードを作成するためのデータ)は、そのような機械可読な命令および/またはプログラム(またはそのような機械可読な命令を作成するためのデータおよび/またはプログラム)を、記憶される場合あるいは休止時または移送時の機械可読な命令および/またはプログラムの特定のフォーマットまたは状態にかかわらず、包含するよう意図されるものである。
本開示のオペレーションを実行するためのコンピュータープログラムコードは、Java(登録商標)、Smalltalk、C++などのオブジェクト指向のプログラミング言語、および「C」プログラミング言語またはそれに類似するプログラミング言語などの従来の手続き型プログラミング言語を含む、1または複数のプログラミング言語の任意の組み合わせで書かれてよい。プログラムコードは、完全にユーザーのコンピューター上で、部分的にリモートコンピューター上で、スタンドアローンソフトウェアパッケージとして、部分的にユーザーのコンピューター上でおよび部分的にリモートコンピューター上で、または完全にリモートコンピューター上またはサーバー上で、実行されてよい。後者のシナリオでは、リモートコンピューターは、ローカルエリアネットワーク(LAN)またはワイドエリアネットワーク(WAN)を含む任意のタイプのネットワークを通してユーザーのコンピューターに接続されてよく、また、外部コンピューターに接続されてよい(たとえば、インターネットサービスプロバイダーを使用してインターネットを通して)。
図14は、さまざまな実施例にかかる、ゲートウェイ130の復号回路133、図1に示される「ゲートウェイ130の後ろ」に設けられるデバイスA、BおよびCのそれぞれにおける復号回路135、または、ゲートウェイ130内の復号回路1327、および、図13に示される「ゲートウェイ1328の後ろ」に設けられるデバイス1329、1333および1337のそれぞれにおける復号回路1331、1335および1339のソフトウェア実装の全て(または一部)を実装し、および/または、図2から図10のコマンド200~コマンド1000の送信(その態様)を実施し、および/または、上述の図11のプロセス1100と図12のプロセス1200とを実施するように構成された命令を有する例示のコンピューター可読記憶媒体1400を示している。図で示されるように、コンピューター可読記憶媒体1402は、多数のプログラミング命令またはビットストリーム1404の実行可能コードを含んでよい。プログラミング命令(またはビットストリーム)1404の実行可能コードは、たとえばコンピューターデバイス1300などのデバイスが、実行可能コード/プログラミング命令(または暗号化されたハードウェアアクセラレータのオペレーション)に応答して、ゲートウェイ130の復号回路133、および、図1に示される「ゲートウェイ130の後ろ」に設けられるデバイスA、BおよびCのそれぞれにおける復号回路135、または、ゲートウェイ130内の復号回路1327、および、図13に示される「ゲートウェイ1328の後ろ」に設けられるデバイス1329、1333および1337のそれぞれにおける復号回路1331、1335および1339により実行されるプロセス(の態様)を実行すること、および/または、図2から図10のコマンド200からコマンド1000の送信と処理(の態様)を実施すること、および/または、図11のプロセス1100と図12のプロセス1200とを実施することを可能にするよう構成されてよい。別の実施例においては、代わりに、実行可能なコード/プログラミング命令/ビットストリーム1404が複数の非一時的なコンピューター可読記憶媒体1402に配されてよい。実施例においては、コンピューター可読記憶媒体1402は非一時的なものであってよい。さらに他の実施例においては、実行可能なコード/プログラミング命令1404は、信号などの一時的コンピューター可読媒体において復号されてよい。
図13に戻って参照すると、1つの実施例においては、プロセッサ1302のうち少なくとも1つが、図2から図12を参照して上述したオペレーションのすべてまたは選択されたものを実施するように構成された演算ロジック1322の一部または全部を有する(システムメモリ1304および/またはマスストレージデバイス1306に格納する代わりに)コンピューター可読記憶媒体とともにパッケージされてよい。1つの実施例においては、プロセッサ1302のうち少なくとも1つが、演算ロジック1322の一部または全部を持つコンピューター可読記憶媒体とともにパッケージされてシステム・イン・パッケージ(SiP)を形成してよい。1つの実施例においては、プロセッサ1302のうち少なくとも1つが、いくつかまたは全ての演算ロジック1322を有するコンピューター可読記憶媒体とともに同じダイ上に一体化されてよい。1つの実施例においては、プロセッサ1302のうち少なくとも1つが、いくつかまたは全ての演算ロジック1322を有するコンピューター可読記憶媒体とともにパッケージされてシステム・オン・チップ(SoC)を形成してよい。少なくとも1つの実施例においては、SoCは、たとえばハイブリッド演算タブレット/ラップトップ(ただしこれに限られない)に利用されてよい。
本開示における技術の例示としての例を以下に提示する。技術の実施例には、以下で説明される1又は複数の、およびそれらの組み合わせの例が含まれる。
[実施例]
実施例1は、デバイスであって;ホストコンピューターからブロードキャストコマンドを受信するための入力インターフェイスと、前記入力インターフェイスと連結される復号回路とを備え、前記ブロードキャストコマンドは、アクセスモード指示を含み、復号回路は、受信した前記アクセスモード指示に少なくとも部分的に基づいて、前記ブロードキャストコマンドが、1または複数のデバイスの1または複数の予め定義されたセットアップまたはコントロールレジスタにアクセスすること、または、1または複数のデバイスの1または複数の内部レジスタにアクセスすることを命令すると決定し;前記決定に応じて、前記セットアップまたはコントロールレジスタへの前記アクセスまたは前記1または複数の内部レジスタへの前記アクセスを実行し、前記デバイスは、前記ホストコンピューターに連結されるメモリモジュール上に配置される。
実施例2は、前記ブロードキャストコマンドが、メモリモジュールのゲートウェイにより最初に受信され、次に前記メモリモジュール内でローカルバスを通して前記ゲートウェイから前記入力インターフェイスにより受信される、実施例1および/または本明細書の他のいずれかの実施例に記載のデバイスである。
実施例3は、コマンドバスおよび前記ローカルバスは半導体技術協会のXM仕様(XM仕様)に準拠している、実施例2および/または本明細書の他のいずれかの実施例に記載のデバイスである。
実施例4は、前記デバイスの1または複数の予め定義された前記セットアップまたはコントロールレジスタは前記XM仕様により規定されたレジスタである、実施例3および/または本明細書の他のいずれかの実施例に記載のデバイスである。
実施例5は、前記メモリモジュールはデュアルインラインメモリモジュール(DIMM)である、実施例1および/または本明細書の他のいずれかの実施例に記載のデバイスである。
実施例6は、前記デバイスは、電圧レギュレータ、温度センサ、タイミング情報を記憶するフラッシュメモリ、シリアルプレゼンスディテクト(SPD)デバイス、またはレジスタクロックドライバ(RCD)の1つである、実施例1および/または本明細書の他のいずれかの実施例に記載のデバイスである。
実施例7は、前記デバイスの1または複数の内部レジスタは、XM仕様により規定された、予め定義されたオフセットでアクセス可能である、実施例1および/または本明細書の他のいずれかの実施例に記載のデバイスである。
実施例8は、前記ブロードキャストコマンドはさらに、1または複数のデバイスアドレスと、デバイスアドレスマスキングデータとを有し、前記復号回路はさらに;前記デバイスアドレスマスキングデータにより指示される前記1または複数のデバイスアドレスの一部を無視し;前記1または複数のデバイスアドレスの残りの部分が自己のアドレスの対応する部分とマッチングするか否かを判定する、実施例1および/または本明細書の他のいずれかの実施例に記載のデバイスである。
実施例9は、前記ブロードキャストコマンドに含まれる前記1または複数のデバイスアドレスは7ビット長であり、前記デバイスアドレスマスキングデータは、前記1または複数のデバイスアドレスの1つから7つの最下位ビット(最下位ビット=LSB)の間は無視されることを指示する、実施例8および/または本明細書の他のいずれかの実施例に記載のデバイスである。
実施例10は、前記ブロードキャストコマンドはさらに、前記デバイスの最初の予め定義されたセットアップまたはコントロールレジスタ、または内部レジスタのロケーションを指定するオフセットを含み、前記オフセットにおいて示されたアクセスを開始する、実施例1および/または本明細書の他のいずれかの実施例に記載のデバイスである。
実施例11は、1セットの命令を備える1または複数の非一時的なコンピューター可読記憶記録媒体であって、前記1セットの命令は、メモリモジュールに設けられるデバイスにより実行される場合に、前記デバイスに;ホストコンピューターからブロードキャストコマンドを受信することであって、前記ブロードキャストコマンドは、1または複数のデバイスの1または複数のレジスタへのセットアップまたはコントロールデータの書き込みをオフセットで開始して行うように命令し、且つデバイスアドレスおよびデバイスアドレスマスキングデータを含む、ことと;前記デバイスアドレスマスキングデータを適用して前記デバイスアドレスの一部をマスキングすることと;前記デバイスアドレスのマスキングされていない部分が前記デバイスのアドレスの対応する部分と一致するかどうかを判定することと;前記判定に応答して、前記デバイスの前記1または複数のレジスタに前記オフセットで開始して前記データを書き込むことと;を実行させる、1または複数の非一時的なコンピューター可読記憶媒体である。
実施例12は、前記ブロードキャストコマンドが、前記ホストコンピューターを前記メモリモジュールへ接続するコマンドバス上でデバイスにより受信されるとともに、前記コマンドバスはXM仕様に準拠している、実施例11および/または本明細書の他のいずれかの実施例に記載の1または複数の非一時的なコンピューター可読記憶媒体である。
実施例13は、前記ブロードキャストコマンドがさらに、アクセスモードインジケータを含み、非一時的なコンピューター可読記憶媒体は、実行されると、前記デバイスに、前記アクセスモードインジケータを復号して、アクセスモードが前記デバイスの1または複数の予め定義されたセットアップまたはコントロールレジスタに対するものであることを判定させる命令をさらに備える、実施例11および/または本明細書の他のいずれかの実施例の1または複数の非一時的なコンピューター可読記憶媒体である。
実施例14は、前記1または複数の予め定義されたセットアップまたはコントロールレジスタがXM仕様で規定されており、前記データは指定される前記1または複数の予め定義されたコントロールレジスタへ書き込まれるべきコントロールデータを含む、実施例13および/または本明細書の他のいずれかの実施例に記載の1または複数の非一時的なコンピューター可読記憶媒体である。
実施例15は、前記コントロールデータは複数の2バイトペアとなっており、前記複数の2バイトペアは、コントロールデータバイトと、対応するマスクバイトとを含み、前記対応するマスクバイトは、前記コントロールデータバイトのどのビットが前記デバイスの予め定義されたコントロールレジスタへ書き込まれるべきかと、前記コントロールデータバイトのどのビットが無視されるべきかとを指示する、実施例14および/または本明細書の他のいずれかの実施例に記載の1または複数の非一時的なコンピューター可読記憶媒体である。
実施例16は、前記デバイスアドレスマスキングデータは、前記データが、前記コマンドバスを介して前記ホストコンピューターへ接続される複数のメモリモジュールにわたる同じタイプのデバイスへ書き込まれるように構成される、実施例12および/または本明細書の他のいずれかの実施例に記載の1または複数の非一時的なコンピューター可読記憶媒体である。
実施例17は、DIMMにおいてブロードキャストコマンドをホストコンピューターから受信する段階であって、前記ブロードキャストコマンドは、アクセスモードのインジケータとレジスタオフセット値とを含む、受信する段階と;前記アクセスモードのインジケータを復号して、プロトコルレジスタのアクセスモードが指示されたことを決定する段階と;アクセスモードインジケータとレジスタオフセット値とに少なくとも部分的に基づいて、前記コマンドが、受信デバイスに対して、前記オフセットにより指示される前記プロトコルレジスタへDIMM識別子(DIMM_ID)値を書き込むことを命令するDIMM_ID伝搬コマンドであることを識別する段階と;前記識別に応答して、前記ブロードキャストコマンドを修正して、DIMM_IDの一部をローカルDIMM識別子と置き換える段階と;修正された前記ブロードキャストコマンドをローカルバスにわたり前記DIMM上の全てのデバイスへ伝搬する段階と;を備える、方法である。
実施例18は、前記DIMMが挿入されるスロットから前記ローカルDIMM識別子を取得する段階をさらに備える、実施例17および/または本明細書の他のいずれかの実施例に記載の方法である。
実施例19は、前記DIMMが、前記ホストコンピューターに接続されるN個のDIMMのうちのいずれか1つであって、Kを整数として、N=2Kであり;前記ローカルDIMM識別子はK個のビットを含み、前記ブロードキャストコマンドを修正する段階はさらに、DIMM_IDのK個の最下位ビット(LSB)をローカルDIMM識別子で置き換える段階を含む;実施例17および/または本明細書の他のいずれかの実施例に記載の方法である。
実施例20は、前記方法が、前記DIMMのゲートウェイあるいはその一部により実行され、また前記ローカルバスはXM仕様に準拠している、実施例17および/または本明細書の他のいずれかの実施例に記載の方法である。
実施例21は、ブロードキャストコマンドをホストコンピューターから受信する段階であって、前記ブロードキャストコマンドは、1または複数のデバイスの1または複数のレジスタへのセットアップまたはコントロールデータの書き込みをオフセットで開始して実行することを命令し、且つ、デバイスアドレスおよびデバイスアドレスマスキングデータを含む、段階と;前記デバイスアドレスマスキングデータを適用して前記デバイスアドレスの一部をマスキングする段階と;前記デバイスアドレスのマスキングされていない部分が前記デバイスのアドレスの対応する部分とマッチングするかどうかを判定する段階と;前記判定に応答して、前記デバイスの前記1または複数のレジスタに前記オフセットで開始して前記データを書き込む段階と;を備える方法である。
実施例22は、前記方法が、さらにコマンドバス上で戦記ブロードキャストコマンドを受信する段階を備え、前記コマンドバスはXM仕様に準拠している、実施例21および/または本明細書の他のいずれかの実施例に記載の方法である。
実施例23は、前記ブロードキャストコマンドがさらにアクセスモードインジケータを有し、方法はさらに前記アクセスモードインジケータを復号して、前記アクセスモードが前記デバイスの1または複数の予め定義されたセットアップまたはコントロールレジスタへのものであることを判定する段階を備える、実施例21および/または本明細書の他のいずれかの実施例に記載の方法である。
実施例24は、前記1または複数の予め定義されたセットアップまたはコントロールレジスタがXM仕様で規定されており、前記データは指定される前記1または複数の予め定義されたコントロールレジスタへ書き込まれるべきコントロールデータを含む、実施例23および/または本明細書の他のいずれかの実施例に記載の方法である。
実施例25は、前記コントロールデータは複数の2バイトペアとなっており、前記複数の2バイトペアは、コントロールデータバイトと、対応するマスクバイトとを含み、前記対応するマスクバイトは、前記コントロールデータバイトのどのビットが前記デバイスの予め規定されたコントロールレジスタへ書き込まれるべきかと、前記データバイトのどのビットが無視されるべきかとを指示する、実施例24および/または本明細書の他のいずれかの実施例に記載の方法である。
実施例26は、前記デバイスアドレスマスキングデータは、前記データが前記コマンドバスを介して前記ホストコンピューターへ接続される複数のメモリモジュールにわたる同じタイプのデバイスへ書き込まれるように構成される、実施例22および/または本明細書の他のいずれかの実施例に記載の方法である。
実施例27は、DIMMにおいてブロードキャストコマンドをホストコンピューターから受信する手段であって、前記ブロードキャストコマンドは、アクセスモードのインジケータとレジスタオフセット値とを含む、受信する手段と;前記アクセスモードインジケータを復号して、プロトコルレジスタのアクセスモードが指示されたことを判定する手段と;アクセスモードのインジケータとレジスタオフセット値と少なくとも部分的に基づいて、前記コマンドが、受信デバイスに対して、前記オフセットにより示される前記プロトコルレジスタへDIMM識別子(DIMM_ID)値を書き込むことを命令するDIMM_ID伝搬コマンドであることを識別する手段と;前記ブロードキャストコマンドを修正して、DIMM_IDの一部をローカルDIMM識別子と置き換える手段と;修正された前記ブロードキャストコマンドをローカルバスにわたり前記DIMM上の全てのデバイスへ伝搬する手段と;を備える、演算用装置である。
実施例28は、前記DIMMが挿入されるスロットから前記ローカルDIMM識別子を取得する手段をさらに備える、実施例27および/または本明細書の他のいずれかの実施例に記載の演算用装置である。
実施例29は、前記DIMMが、前記ホストコンピューターに接続されるN個のDIMMのうちのいずれか1つであって、Kを整数として、N=2Kであり;前記ローカルDIMM識別子はK個のビットを含み、前記ブロードキャストコマンドを修正する手段はさらに、DIMM_IDのK個の最下位ビット(LSB)をローカルDIMM識別子で置き換える手段を含む;実施例27および/または本明細書の他のいずれかの実施例に記載の演算用装置である。
実施例30は、前記演算用装置が、前記DIMMのゲートウェイあるいはその一部であり、また前記ローカルバスはXM仕様に準拠している、実施例27および/または本明細書の他のいずれかの実施例に記載の装置である。
実施例31は、ブロードキャストコマンドをホストコンピューターから受信する手段であって、ブロードキャストコマンドは、1または複数のデバイスの1または複数のレジスタに、セットアップまたはコンロトールデータをオフセットで開始して書き込むことを命令し、且つ、デバイスアドレスおよびデバイスアドレスマスキングデータを含む、手段と; 前記デバイスアドレスマスキングデータを適用して前記デバイスアドレスの一部をマスキングする手段と;前記デバイスアドレスのマスキングされていない部分が前記デバイスのアドレスの対応する部分とマッチングするかどうかを判定する手段と;前記デバイスの前記1または複数のレジスタに前記データを前記オフセットで開始して書き込む手段と;を備える演算用装置である。
実施例32は、前記演算用装置が、さらにコマンドバス上で戦記ブロードキャストコマンドを受信する手段を備え、前記コマンドバスはXM仕様に準拠している、実施例31および/または本明細書の他のいずれかの実施例に記載の装置である。
実施例33は、前記ブロードキャストコマンドがさらにアクセスモードインジケータを有し、装置はさらに前記アクセスモードインジケータを復号して、前記アクセスモードが前記デバイスの1または複数の予め定義されたセットアップまたはコントロールレジスタへのものであることを決定する手段を有する、実施例31および/または本明細書の他のいずれかの実施例に記載の演算用装置である。
実施例34は、前記1または複数の予め定義されたセットアップまたはコントロールレジスタがXM仕様で規定されており、前記データは指定される前記1または複数の予め定義されたコントロールレジスタへ書き込まれるコントロールデータを含む、実施例33および/または本明細書の他のいずれかの実施例に記載の演算用装置である。
実施例35は、前記コントロールデータは複数の2バイトペアとなっており、前記複数の2バイトペアは、コントロールデータバイトと、対応するマスクバイトとを含み、前記対応するマスクバイトは、前記コントロールデータバイトのどのビットが前記デバイスの予め規定されたコントロールレジスタへ書き込まれるべきかと、前記データバイトのどのビットが無視されるべきかとを指示する、実施例34および/または本明細書の他のいずれかの実施例に記載の演算用装置である。
実施例36は、前記デバイスアドレスマスキングデータは、前記データが前記コマンドバスを介して前記ホストコンピューターへ接続される複数のメモリモジュールにわたる同じタイプのデバイスへ書き込まれるように構成される、実施例32および/または本明細書の他のいずれかの実施例に記載の演算用装置である。
[その他の考えられ得る請求項目]
(項目1)
デバイスであって、
ホストコンピューターからブロードキャストコマンドを受信するための入力インターフェイスであって、ブロードキャストコマンドは、アクセスモード指示を含む、入力インターフェイスと、
入力インタフェースに連結される復号回路とを備え、復号回路は、
受信した上記アクセスモード指示に少なくとも部分的に基づいて、上記ブロードキャストコマンドが、1または複数のデバイスの1または複数のセットアップまたはコントロールレジスタにアクセスすること、または1または複数のデバイスの1または複数の内部レジスタにアクセスすることを命令すると決定し、
上記決定に応じて、上記セットアップまたはコントロールレジスタへの上記アクセスまたは上記1または複数の内部レジスタへの上記アクセスを実行し、
上記デバイスは、上記ホストコンピューターに連結されるメモリモジュール上に配置される、デバイス。
(項目2)
上記ブロードキャストコマンドが、メモリモジュールのゲートウェイにより最初に受信され、次に上記メモリモジュール内でローカルバスを通して上記ゲートウェイから上記入力インターフェイスにより受信される、項目1に記載のデバイス。
(項目3)
コマンドバスおよび上記ローカルバスは半導体技術協会のXM仕様(XM仕様)に準拠している、項目2に記載のデバイス。
(項目4)
上記デバイスの1または複数の予め定義された上記セットアップまたはコントロールレジスタは上記XM仕様により規定されたレジスタである、項目3のデバイス。
(項目5)
上記メモリモジュールはデュアルインラインメモリモジュール(DIMM)である、項目1に記載のデバイス。
(項目6)
上記デバイスは、電圧レギュレータ、温度センサ、タイミング情報を記憶するフラッシュメモリ、シリアルプレゼンスディテクト(SPD)デバイス、またはレジスタクロックドライバ(RCD)の1つである、項目1に記載のデバイス。
(項目7)
上記デバイスの1または複数の内部レジスタは、XM仕様により規定された、予め定義されたオフセットでアクセス可能である、項目1に記載のデバイス。
(項目8)
上記ブロードキャストコマンドはさらに、1または複数のデバイスアドレスと、デバイスアドレスマスキングデータとを有し、上記復号回路はさらに、
上記デバイスアドレスマスキングデータにより指示される上記1または複数のデバイスアドレスの一部を無視し、
上記1または複数のデバイスアドレスの残りの部分が自己のアドレスの対応する部分と一致するか否かを判定する、
項目1に記載のデバイス。
(項目9)
上記ブロードキャストコマンドに含まれる上記1または複数のデバイスアドレスは7ビット長であり、上記デバイスアドレスマスキングデータは、上記1または複数のデバイスアドレスの1~7の最下位ビット(最下位ビット=LSB)の範囲が無視されることを示す、項目8に記載のデバイス。
(項目10)
上記ブロードキャストコマンドはさらに、上記デバイスの、最初の予め定義されたセットアップまたはコントロールレジスタ、または内部レジスタのロケーションを指定するオフセットを含み、上記オフセットにおいて、示されるアクセスを開始する、項目1に記載のデバイス。
(項目11)
1セットの命令を備える1または複数の非一時的なコンピューター可読記憶記録媒体であって、上記1セットの命令は、メモリモジュールに設けられるデバイスにより実行される場合に、上記デバイスに、
ホストコンピューターからブロードキャストコマンドを受信することであって、上記ブロードキャストコマンドは、1または複数のデバイスの1または複数のレジスタへのセットアップまたはコントロールデータの書き込みをオフセットで開始して行うことを命令し、且つデバイスアドレスおよびデバイスアドレスマスキングデータを含む、ことと、
上記デバイスアドレスマスキングデータを適用して上記デバイスアドレスの一部をマスキングすることと、
上記デバイスアドレスのマスキングされていない部分が上記デバイスのアドレスの対応する部分とマッチングするかどうかを判定することと、
上記判定に応答して、上記デバイスの上記1または複数のレジスタに上記データを上記オフセットで開始して書き込むことと
を実行させる、1または複数の非一時的なコンピューター可読記憶媒体。
(項目12)
上記ブロードキャストコマンドが、上記ホストコンピューターを上記メモリモジュールへ接続するコマンドバス上でデバイスにより受信されるとともに、上記コマンドバスはXM仕様に準拠している、項目11に記載の1または複数の非一時的なコンピューター可読記憶媒体。
(項目13)
上記ブロードキャストコマンドがさらに、アクセスモードインジケータを含み、1または複数の非一時的なコンピューター可読記憶媒体は、実行されると、上記デバイスに対し、上記アクセスモードインジケータを復号して、上記アクセスモードが上記デバイスの1または複数の予め定義されたセットアップまたはコントロールレジスタに対するものであることを決定させる命令をさらに備える、項目11の1または複数の非一時的なコンピューター可読記憶媒体。
(項目14)
上記1または複数の予め定義されたセットアップまたはコントロールレジスタがXM仕様で規定されており、上記データは指定される上記1または複数の予め規定されたコントロールレジスタへ書き込まれるコントロールデータを含む、項目13に記載の1または複数の非一時的なコンピューター可読記憶媒体。
(項目15)
上記コントロールデータは複数の2バイトペアとなっており、上記複数の2バイトペアは、コントロールデータバイトと、対応するマスクバイトとを含み、上記対応するマスクバイトは、上記コントロールデータバイトのどのビットが上記デバイスの予め規定されたコントロールレジスタへ書き込まれるべきかと、上記データバイトのどのビットが無視されるべきかとを指示する、項目14に記載の1または複数の非一時的なコンピューター可読記憶媒体。
(項目16)
上記デバイスアドレスマスキングデータは、上記データが上記コマンドバスを介して上記ホストコンピューターへ接続される複数のメモリモジュールにわたる同じタイプのデバイスへ書き込まれるように構成される、項目12に記載の1または複数の非一時的なコンピューター可読記憶媒体。
(項目17)
DIMMにおいてブロードキャストコマンドをホストコンピューターから受信する段階であって、上記ブロードキャストコマンドは、アクセスモードのインジケータとレジスタオフセット値とを含む、受信する段階と、
上記アクセスモードのインジケータを復号して、プロトコルレジスタのアクセスモードが指示されたことを決定する段階と、
アクセスモードインジケータとレジスタオフセット値とに少なくとも部分的に基づいて、上記コマンドが受信デバイスに対して、オフセットにより示されるプロトコルレジスタにDIMM識別子(DIMM_ID)値を書き込むことを命令するDIMM_ID伝搬コマンドであることを識別する段階と、
上記識別に応答して、上記ブロードキャストコマンドを修正して、DIMM_IDの一部をローカルDIMM識別子と置き換える段階と、
修正された上記ブロードキャストコマンドをローカルバスにわたり上記DIMM上の全てのデバイスへ伝搬する段階と
を備える、方法。
(項目18)
上記DIMMが挿入されるスロットから上記ローカルDIMM識別子を取得する段階をさらに備える、項目17に記載の方法。
(項目19)
上記DIMMは、上記ホストコンピューターに接続されるN個のDIMMのうちのいずれか1つであって、Kを整数として、N=2Kであり、
上記ローカルDIMM識別子はK個のビットを含み、上記ブロードキャストコマンドを修正する段階はさらに、DIMM_IDのK個の最下位ビット(LSB)を上記ローカルDIMM識別子で置き換える段階を含む、
請求項17に記載の方法。
(項目20)
上記方法は、上記DIMMのゲートウェイあるいはその一部により実行され、また上記ローカルバスはXM仕様に準拠している、請求項17に記載の方法。