(57)【要約】【課題】レジスタを同期させる方法を提供する。【解決手段】本発明にかかる方法は、低速レジスタを更新する方法であって、各々が少なくとも１つのレジスタを有する複数の処理セルを特定するステップと、処理セルを高速処理セルとして、それ以外の任意の処理セルを低速処理セルとして特定するステップと、高速処理セルのレジスタを高速レジスタとして、低速処理セルのレジスタを低速レジスタとして特定するステップであって、高速レジスタは第１のＣＰＵの一部であり、低速レジスタは第１のＣＰＵとは異なる第２のＣＰＵの一部である、特定するステップと、或る時間間隔で、低速レジスタの値を前記高速レジスタの値に更新するステップとを含む。【選択図】図２
2006202285.tif 000002
【特許請求の範囲】
【請求項１】
低速レジスタ（２１２０）を更新する方法であって、
各々が少なくとも１つのレジスタ（２１２０）を有する複数の処理セル（１１０）を特定するステップと、
処理セル（１１０）を高速処理セル（１１０）として、且つ前記高速処理セル（１１０）以外の任意の処理セルを低速処理セル（１１０）として特定するステップと、
前記高速処理セル（１１０）のレジスタ（２１２０）を高速レジスタ（２１２０）として、且つ前記低速処理セル（１１０）のレジスタ（２１２０）を低速レジスタ（２１２０）として特定するステップであって、前記高速レジスタ（２１２０）は第１のＣＰＵ（２１０）の一部であり、前記低速レジスタ（２１２０）は前記第１のＣＰＵ（２１０）とは異なる第２のＣＰＵ（２１０）の一部である、特定するステップと、
或る時間間隔で、前記低速レジスタ（２１２０）の値を前記高速レジスタ（２１２０）の値に更新するステップと
を含む、低速レジスタを更新する方法。
【請求項２】
前記少なくとも１つのレジスタのレジスタ（２１２０）はＣＰＵ（２１０）の一部である、請求項１に記載の低速レジスタを更新する方法。
【請求項３】
前記低速レジスタ（２１２０）の値を更新することは、前記高速レジスタ（２１２０）の値をメモリの指定されたロケーションに提供することを含む、請求項１に記載の低速レジスタを更新する方法。
【請求項４】
前記低速レジスタ（２１２０）の値を更新することは、前記指定されたロケーションから前記高速レジスタ（２１２０）の値を取得することを含む、請求項３に記載の低速レジスタを更新する方法。
【請求項５】
前記低速レジスタ（２１２０）の値を更新する前記ステップの前に、前記高速レジスタ（２１２０）を前記キャッシュコヒーレンシドメインに組み込むステップをさらに含む、請求項１に記載の低速レジスタを更新する方法。
【請求項６】
前記高速レジスタ（２１２０）を前記キャッシュコヒーレンシドメインに組み込む前記ステップは、メモリロケーションを前記高速レジスタ（２１２０）に対するエイリアスとして選択するステップを含む、請求項５に記載の低速レジスタを更新する方法。
【請求項７】
前記高速レジスタ（２１２０）に対するエイリアスとして選択される前記メモリロケーションの値に対する要求時に、前記高速レジスタ（２１２０）の前記値を返すステップをさらに含む、請求項６に記載の低速レジスタを更新する方法。
【請求項８】
前記高速レジスタ（２１２０）を前記キャッシュコヒーレンシドメインに組み込む前記ステップは、前記高速レジスタ（２１２０）の値を転送することに関連するサブタイプを有するコマンドを提供するステップを含む、請求項５に記載の低速レジスタを更新する方法。
【請求項９】
前記提供されたコマンドを認識すると前記高速レジスタ（２１２０）の前記値を返すステップをさらに含む、請求項８に記載の低速レジスタを更新する方法。
【請求項１０】
キャッシュコヒーレンスプロトコルに組み込まれた高速レジスタを有する高速ＣＰＵと、
前記高速ＣＰＵを動作させる高速クロック源と、
低速レジスタを有する低速ＣＰＵと、
該低速ＣＰＵを動作させる低速クロック源と、
を具備し、
前記キャッシュコヒーレンスプロトコルは、或る時間間隔で、前記高速レジスタの値を前記低速レジスタに提供するように使用され、前記時間間隔は、該低速レジスタの前記値が単調増加するように選択される、マルチプロセッシングシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、包括的にはコンピュータシステムにおけるレジスタの同期に関する。
【発明の開示】
【発明が解決しようとする課題】
【０００２】
一般に、マルチＣＰＵコンピュータシステムにおける各ＣＰＵは、クロックによって実行される。インプリメンテーションに応じて、システムにおけるすべてのＣＰＵに対するクロックを、１つ又は複数のクロック源によって提供する場合があるが、各手法はそれ自体の欠点を有する。
たとえば、単一クロック源手法では、クロック源、たとえばクロック発生器は、すべてのＣＰＵに対してクロックを提供するため、このクロックは、それを受け取るすべてのＣＰＵに対して同じである。しかしながら、この手法は、単一故障点の影響を受け易い。すなわち、別の例として、クロック生成又はクロック分配が失敗すると、システム全体に障害が発生する。
【０００３】
マルチセルシステムにおける１つの処理セルに対し１つのクロックジェネレータ（generator）がクロックを提供する手法等、マルチクロック源手法では、セル内のすべてのＣＰＵが１つのクロック源から同じクロックを受け取るが、各セルは異なるクロック源から異なるクロックを受け取る。その結果、クロックに障害が発生すると、そのクロックを使用しているセルのみに障害が発生し、他のクロックを使用しているセルは機能し続けることができる。不都合なことに、異なるクロック源におけるクロックドリフトにより、時間が負になる、すなわち時間が逆方向に経過することになる計算等、さまざまな問題がもたらされる可能性がある。クロックドリフトを、異なるＣＰＵに見られるクロック周波数の変動と言ってもよい。ＳＭＰ（Symmetric MultiProcessing：対称型マルチプロセッシング）システムでは、スレッドを、１つのＣＰＵが開始することができ、その後、そのスレッドは別のＣＰＵで実行される。たとえば、インターバルタイムカウンタ（interval time counter）値を含むアプリケーションレジスタであるａｒ．ｉｔｃレジスタが、高速クロックＣＰＵで実行しているスレッドによって読み出され、そのスレッドが後に低速クロックＣＰＵに移動すると、この時点で低速クロックのＣＰＵで実行しているａｒ．ｉｔｃレジスタは、第１の読出し、たとえば高速クロックのＣＰＵからの読出しからの値より下位の値を有する可能性があり、それにより、経過時間が負であるように計算されることになる。
【課題を解決するための手段】
【０００４】
本発明の実施の形態は、レジスタを同期させることに関する。一実施形態は、各々が複数のＣＰＵを含む複数の処理セルを含み、それらは異なる周波数で実行し、それらの各々はａｒ．ｉｔｃタイマレジスタを有する。複数のセルのうちの最も高速なセルのＣＰＵを、高速ＣＰＵと呼ぶ。それより低速のセルのＣＰＵを、低速ＣＰＵと呼ぶ。所定の時間間隔で、低速ＣＰＵに高速ＣＰＵのａｒ．ｉｔｃ値を提供することにより、それらのａｒ．ｉｔｃ値を置き換える。その結果、ａｒ．ｉｔｃレジスタの値が、負の時間を提供することなく同期する。他の実施の形態についても開示する。
【０００５】
同様の参照数字が同様の要素を参照する添付図面の図において、本発明を、限定としてではなく例として示す。
【発明を実施するための最良の形態】
【０００６】
以下の記述では、説明の目的で、本発明が完全に理解されるためにいくつかの特定の詳細を示す。しかしながら、当業者には、これらの特定の詳細なしに本発明を実施してもよい、ということが明らかとなろう。場合によっては、本発明を不明瞭にしないために、既知の構造及び装置をブロック図形式で示す。
【０００７】
概観
図１は、本発明の実施形態を実施してもよい構成１００を示す。システム１００は、複数の処理セル、たとえばセル１１０（１）〜１１０（Ｎ）及び複数のインタフェース１２０、たとえばインタフェース１２０（１）〜１２０（Ｌ）を含む。システム１００は、複数のＣＰＵが個々の処理を同時に完了することができるＳＭＰ（Symmetric MultiProcessing）システムである。アイドル状態のＣＰＵに任意のタスクを割り当てることができ、性能を向上させ且つ増大した負荷を処理するためにさらなるＣＰＵを追加することができる。スレッドを、１つのＣＰＵが開始してもよく、その後そのスレッドは別のＣＰＵで実行される。１つ又は複数の処理セル１１０を区切る（partition）ことにより、オペレーティングシステムを実行するシステムを形成してもよい。インタフェース１２０により、複数のセル１１０を接続することができ、望ましい場合、１つ又は複数の接続されたセル１１０は、オペレーティングシステムイメージを実行する独立したコンピュータシステムとして動作する。一般に、オペレーティングシステムは、スレッドを保有する（own）プロセスを作成する。データは、フロントサイドバス１３５においてコンピュータの一部分から別の部分、たとえばＣＰＵ、メモリ等に送出される。本発明の実施形態は、セル１１０内部及びセル１１０間のトポロジを含むバストポロジに依存しない。たとえば、共有、ポイント・ツー・ポイント、メッシュ等のバスアーキテクチャは、本発明の実施形態の範囲内にある。当業者は、フロントサイドバスを、ＣＰＵをメモリに接続するシステムバスと呼んでもよく、また、メモリバス、ローカルバス、ホストバス等と呼んでもよい、ということを理解するであろう。本発明の実施形態はまた、１つのセル１１０から別のセル１１０へのメモリアクセス時間が大幅に異なる、たとえばセル１１０内のメモリアクセス時間より低速である、ＮＵＭＡ（Non-Uniform Memory Access：非均一メモリアクセス）システムにも適用可能である。
【０００８】
図２は、処理セル１１０の一実施形態である処理セル２００を示す。処理セル２００は、複数のプロセッサ又はＣＰＵ、たとえばＣＰＵ２１０（１）〜２１０（Ｍ）、メモリ２２０、種々のレベルのキャッシュ２３０を含む。一般に、各ＣＰＵ２１０が、同じ周波数、たとえば変動が許容可能な周波数を有するクロックを受け取ることが望ましい。構成に応じて、セル２００のＣＰＵ２１０は、同じセル２００又は別のセル２００のメモリ２２０及び／又はキャッシュ２３０にアクセスしてもよい。
【０００９】
各セル２００は、クロック源、たとえばクロックジェネレータ（図示せず）からクロックを受け取る。その結果、同じセル２００の各ＣＰＵ２１０はこの同じクロック源からクロックを受け取り、同じセル２００のＣＰＵ２１０は同じクロック周波数で実行する。セル２００が異なるとクロック源が異なるため、異なるセル２００のＣＰＵ２１０に対するクロック周波数が異なる。
【００１０】
ＣＰＵ２１０は、ＣＰＵが使用する一時記憶領域（storage areas）として知られるレジスタ（図示せず）を含む。ＣＰＵのＡＬＵ（Arithmetic Logic Unit：算術論理ユニット、図示せず）は、その機能を実行している間にデータを操作し処理する際にそれらレジスタを使用する。ＡＬＵに可視のレジスタのうちの１つは、時間を計算する際に使用されるインターバルタイムカウンタ値を含むアプリケーションレジスタであるレジスタａｒ．ｉｔｃ２１２０（Application Register-Interval Time Counter）である。この文書では、レジスタａｒ．ｉｔｃを例示の目的で使用するが、本発明の実施形態は、ＡＬＵに可視ではないものを含む他のレジスタ又は情報記憶機構にも適用可能である。ＣＰＵ２１０はまた、ＣＰＵキャッシュとも呼ばれるそれ自体のキャッシュ２１３０も有する。例示の目的で、ＣＰＵ２１０には１つのキャッシュ２１３０しか示さない。しかしながら、かかるＣＰＵの内部に異なるレベルのキャッシュ２１３０があってもよい。
【００１１】
キャッシュ２１３０の状況と同様に、図２には、例示の目的で１つのキャッシュ２３０しか示さない。しかしながら、ＣＰＵ２１０とメモリ２２０との間に異なるレベルで１つ又は複数のキャッシュ２３０があってもよい。
【００１２】
レジスタａｒ．ｉｔｃによって提供される正の時間
例示の目的で、他のセル２００の周波数に比較して最も高速なクロック周波数を有するセル２００を、「高速セル」と呼び、その高速セルよりクロック周波数が低い他のセル２００を、低速セルと呼ぶ。高速セルのＣＰＵをＣＰＵ−Ｆと呼び、低速セルのＣＰＵをＣＰＵ−Ｓと呼ぶ。ＣＰＵ−Ｆのａｒ．ｉｔｃ２１２０をａｒ．ｉｔｃ−Ｆと呼び、ＣＰＵ−Ｓのａｒ．ｉｔｃ２１２０をａｒ．ｉｔｃ−Ｓと呼ぶ。高速セルが特定されると、そのセルのＣＰＵはＣＰＵ−Ｆとしてタグ付けされ、それによって、そのａｒ．ｉｔｃ−Ｆ値が必要に応じて低速セルに提供されるように追跡される。セル２００のすべてのＣＰＵ２１０が同じクロック源からそれらのクロックを受け取る実施形態では、同じセルのすべてのＣＰＵ２１０のａｒ．ｉｔｃ値は同じであり、高速セルの任意のＣＰＵ２１０を、ａｒ．ｉｔｃ−Ｆ値を提供するＣＰＵ−Ｆとしてタグ付けしてもよい。
【００１３】
一般に、セル２００のＣＰＵ２１０のａｒ．ｉｔｃ値は単調増加することが望ましい。すなわち、後続する読出しのａｒ．ｉｔｃ値は、常に、先の読出しのａｒ．ｉｔｃ値より大きいか又はそれに等しい。これを、例示の目的でドリフト間隔と呼ぶ所定の時間間隔で、ａｒ．ｉｔｃ−Ｆ値をａｒ．ｉｔｃ−Ｓに提供することによって行う。通常、クロック設計者は、部品ばらつき、電圧変動、動作温度等を考慮して、設計ロットにおける最も低速のセルと最も高速のセルとの間の予測されるクロックドリフトに基づいてドリフト間隔を指定する。設計者は、特定の設計の最大ドリフトがたとえば１００ｐｐｍ（part per million）であるように指定してもよい。すなわち、１００万クロック毎に、１００クロックの最大ドリフトがある。言い換えれば、１００万クロックの後、セル２００、たとえばセル２００（Ａ）は、別のセル、たとえばセル２００（Ｂ）がドリフトしない場合、このセル２００（Ｂ）より１００クロック速い可能性がある。しかしながら、各セルがドリフトする可能性があるため、最も高速のセル及び最も低速のセルから広がるドリフトは２００ｐｐｍ（２×１００ｐｐｍ）である。その結果、５０００（１００万クロック／２００ｐｐｍ）クロック毎に、クロックドリフトが発生する可能性があり、したがって、クロックの数に関し、ドリフト間隔を５０００として選択してもよい。一実施形態では、たとえば「ドリフトカウンタ」と呼ぶカウンタを使用して、ドリフト間隔を初期化し、このカウンタが満了する、たとえばゼロまでカウントすると、ＣＰＵ−Ｓによって使用されるためにａｒ．ｉｔｃ−Ｆ値が提供される。ドリフト間隔を、時間単位、たとえばミリ秒、秒等又は他の時間間隔単位等で指定してもよい。
【００１４】
インプリメンテーションに応じて、ドリフト間隔を確定する際に、スレッドが１つのセル２００から別のセル２００に移動するためにかかる時間及び／又はキャッシュ転送を実行するためにかかる時間を考慮する。たとえば、周波数ドリフトが５０００クロックで発生すると判断され、且つスレッドを移動させるために１０クロックかかる場合、ドリフト間隔を４９９０クロック（５０００クロック−１０クロック）として選択してもよい。同様に、キャッシュ転送を実行するために２０クロックかかる場合、ドリフト間隔を４９８０クロック（５０００クロック−２０クロック）として選択してもよい。キャッシュ転送は、フロントサイドバスのメモリコヒーレンシプロトコルを使用してデータを１つのＣＰＵのキャッシュから別のＣＰＵのキャッシュに移動させることである。
【００１５】
高速セルを特定
最も高速なセルを特定する任意の技法は、本発明の実施形態の範囲内にある。たとえば、セルを実行しているクロックの周波数を測定し、そのため最も高速なセルを高速セルとして特定するために、周波数測定装置（ハードウェア又はソフトウェア又はそれらの組合せのいずれであってもよい）を使用してもよい。一実施形態では、セル２００を代表するようにＣＰＵ２１０を選択し、各選択されたＣＰＵ２１０は、メモリロケーションに対応し、システム、たとえばシステム１００のセル２００を代表する選択されたＣＰＵ２１０のすべては、各々がクロックに対応する事前に定義された数、たとえば１００００までのカウントを開始する。その数１００００に達すると、ＣＰＵ２１０は、結果又は任意の数、たとえばフラグをその対応するメモリロケーションに書き込む。その間、ＣＰＵ、たとえばＣＰＵ−Ｃは、メモリロケーションをチェックし続け、書込みがなされたロケーションが特定されると、ＣＰＵ−Ｃは、そのロケーションから、そのロケーションに書き込み且つ最も高速なＣＰＵでもあるＣＰＵを特定する。特定された最も高速なＣＰＵから、最も高速なセル（たとえば、本文書で使用する高速セル）を特定する。所定の数は、通常、ドリフトが発生し得るほど十分大きいように選択する。別法として、選択されたＣＰＵの各々は、それ自体のタイムカウントを監視し、その数１００００に達すると、ＣＰＵは、他のＣＰＵに問い合せて高速（最も高速な）ＣＰＵを確定する。概して、高速ＣＰＵが数１００００に達する時、他のＣＰＵはその数に達しておらず、したがって高速ＣＰＵが特定される。
【００１６】
メモリ／キャッシュコヒーレンス
ＣＰＵ２１０が要求（desirable）データに迅速にアクセスするために、ＣＰＵ２１０は、要求しているＣＰＵ２１０にデータを提供するためにかかる時間に関して階層で編成される、異なるレベルのキャッシュ２３０／２１３０及びメモリ２２０を含む記憶領域を用いて動作する（run）。メモリ又はキャッシュコヒーレンスプロトコルは、キャッシュのメモリロケーションの内容、各ＣＰＵのキャッシュ２１３０の内容等を追跡するディレクトリ構造を含む。ＣＰＵ２１０に近いキャッシュからのデータにアクセスするには、同じＣＰＵ２１０から遠いキャッシュ／記憶領域からのデータにアクセスするより時間がかからない。一般に、ＣＰＵ２１０からデータが要求されると、そのデータは、キャッシュ階層において、キャッシュ、たとえば２３０、２１３０等のうちの１つにあるか否かが判断され、ある場合、メモリ、たとえば２２０、ディスク及び／又は他の記憶媒体からではなくかかるキャッシュから、要求しているＣＰＵに提供される。それは、一般に、キャッシュのデータを取得することが、ディスク又はメモリを含む他の記憶媒体から取得するよりはるかに高速であるためである。
【００１７】
キャッシュコヒーレンスプロトコルは、ＣＰＵ２１０によって要求されるデータを管理し、所与のメモリロケーションに対し最新のデータを格納する記憶要素の統一ビューを提供する。データの最新値は、メモリ２２０、キャッシュレベル２３０、ＣＰＵ２１０のキャッシュ２１３０、他の記憶領域等に存在しうる。インプリメンテーションに応じて、ＣＰＵ２１０がメモリロケーションにアクセスしようとする場合、キャッシュコヒーレンスプロトコルは、フロントサイドバスとともに、そのメモリロケーションに関連するデータ値の最新バージョンを有するロケーションを特定する。最新値のロケーションにかかわらず、キャッシュコヒーレンスプロトコルは、たとえば要求しているＣＰＵ２１０のキャッシュ２１３０に値を提供することにより、かかるＣＰＵがその値を利用できるようにする。キャッシュコヒーレンスプロトコルは、フロントサイドバスプロトコル、スヌーププロトコル等のさまざまなプロトコルを含み、そのためＩ／Ｏ書込み、Ｉ／Ｏ読出し、メモリ読出し、スヌープ、メモリ読出しに対する応答等を含む。
【００１８】
キャッシュコヒーレンスプロトコルにａｒ．ｉｔｃ−Ｆを組み込む−メモリロケーションに対しエイリアスを指定する
本発明の実施形態は、ａｒ．ｉｔｃレジスタを含むレジスタをコヒーレンシドメインに組み込む。実施形態により、これらのレジスタは、記憶階層の一部となることができ、そのためキャッシュコヒーレンスプロトコルの制御下に置かれる（subject）ことが可能となる。例示の目的で、ａｒ．ｉｔｃ−Ｆを、キャッシュコヒーレンスプロトコルに組み込む。したがって、本発明の実施形態は、選択されたメモリロケーションをａｒ．ｉｔｃ−Ｆのエイリアスであると宣言し、かかるエイリアスを、ＣＰＵ２１０、オペレーティングシステム、キャッシュコントローラ、メモリコントローラ等を含むシステムのすべての要素に通知する。かかる宣言を、システム初期化時にファームウェアが行ってもよく、又はさまざまな他のメカニズムが行ってもよい。ａｒ．ｉｔｃ−Ｆに対してエイリアスを指定するためにエイリアス指定されるメモリロケーションが予約されるため、このロケーションは他の目的では使用されない。メモリロケーションに対してエイリアスが指定されると、ａｒ．ｉｔｃ−Ｆは、キャッシュコヒーレンスプロトコルの制御下に置かれ、ＣＰＵ−Ｆは、ａｒ．ｉｔｃ−Ｆに対してエイリアス指定された明示的なメモリアドレスに対するスヌープを見る。さらに、エイリアス指定されたメモリロケーションはａｒ．ｉｔｃ−Ｆに対応する特別なロケーションであるため、このロケーションからのデータが要求される時、データの検索（searching）をキャッシュ又は他の記憶領域ではスキップしてもよく、ａｒ．ｉｔｃ−Ｆに直接指示される。本発明の実施形態によれば、フロントサイドバスプロトコルを含むキャッシュコヒーレンスプロトコルに対する変更はない。しかしながら、変更には、コヒーレンスプロトコルのためのメモリマップと、ＣＰＵ−Ｓのキャッシュコントローラがエイリアス指定されたアドレスをいかに読み出すか、ＣＰＵ−Ｆがａｒ．ｉｔｃ−Ｆ値をそのエイリアス指定されたアドレスにいかに戻すか等が含まれる。
【００１９】
ＣＰＵ−Ｆ及び／又はキャッシュコントローラは、ＣＰＵ−Ｆがコヒーレンスプロトコルに加わる（participate）か否か、それがａｒ．ｉｔｃ−Ｆ値を返すか否か等の判断を行う。当業者が既知であるキャッシュコヒーレンスドメイン言語では、ＣＰＵ−Ｆは、「レジスタライン」を「保有し」、又はエイリアス指定されたメモリロケーションに対応するａｒ．ｉｔｃ−Ｆのデータは、常に「有効」であり、ＣＰＵ−Ｆによって「変更され」、「所有される」。すなわち、ａｒ．ｉｔｃ−Ｆは、エイリアス指定されたメモリアドレスに対し最新のデータを格納する。ａｒ．ｉｔｃ−Ｆのデータは変更されるため、このデータが要求される時、メモリコントローラは、キャッシュコヒーレンスプロトコル及び／又はフロントサイドバスプロトコルとともに、ＣＰＵ−Ｆがａｒ．ｉｔｃ−Ｆのデータを、要求しているＣＰＵ、たとえばＣＰＵ−Ｓに返すことができるようにすることを含む適当な動作を行う。たとえば、ＣＰＵ−Ｆがエイリアス指定されたメモリアドレスロケーションを読み出す時、ＣＰＵ−Ｆのキャッシュコントローラは、これがａｒ．ｉｔｃ−Ｆに対応する特別なアドレスであることを認識して、ＣＰＵ−Ｆがその値を返すことができるようにする。ＣＰＵ−Ｆがａｒ．ｉｔｃ−Ｆ値を返さない場合、間違いなくエラーが発生しており、それに従ってシステムフラグが提供される。一実施形態では、エラーが発生すると、ＣＰＵ−Ｆは、システムからエラー処理を適当に通知する、ゼロ等の所定の値を返す。ＣＰＵ−Ｓは、スヌープ読出し後、ａｒ．ｉｔｃ−Ｆ値を取得し、そのａｒ．ｉｔｃ値をこの値に置き換え、無効なフラグをクリアし、たとえばドリフトカウンタをリセットすることによりドリフト間隔を一新する。
【００２０】
キャッシュコヒーレンスプロトコルにａｒ．ｉｔｃ−Ｆを組み込む−新たなコマンドを作成する
一般に、フロントサイドバスは、データの移動を定義し、かかる移動を制御する。通常のフロントサイドバスには、ＩＯ、メモリ、キャッシュ等のトランザクションタイプと、ＩＯ読出し、ＩＯ書込み、メモリ読出し、メモリ書込み、キャッシュ要求、キャッシュスヌープ応答等のサブタイプとを識別する手段がある。本発明の実施形態では、キャッシュコヒーレンスプロトコルにレジスタを組み込むために、それらレジスタに対し新たなキャッシュコマンドサブタイプを作成する。実際には、サブタイプを含む追加されたコマンドは、レジスタに対するデータ転送の新たな場合を提供する。新たなサブタイプは、レジスタのクラスをコヒーレントプロトコルの一部であるように定義し、キャッシュコヒーレンスプロトコルによって通常使用されるコマンドのメモリアドレス部を使用することなく、このサブタイプによってプロトコルに対し特定のレジスタを選択する。言い換えれば、それらレジスタに対するキャッシュ動作は、コマンドサブタイプによって特定され、いかなる特定のメモリアドレスも参照しない。ＣＰＵ、オペレーティングシステム、メモリコントローラ、キャッシュコントローラ等のシステム要素に、この追加されたコマンドに関する情報が提供され、それら要素は、このコマンドを必要に応じて使用する。たとえば、ＣＰＵ−Ｓは、そのａｒ．ｉｔｃを更新したい場合、そのレジスタａｒ．ｉｔｃに対するコマンドタイプ及びサブタイプを含むトランザクションをフロントサイドバスに置くことによりその値に対しスヌープを要求する。キャッシュコヒーレンスプロトコルは、コマンド及びそのサブタイプに基づき、これがレジスタ、たとえばレジスタａｒ．ｉｔｃのキャッシュコヒーレンスに対するコマンドであることを認識し、その要求をＣＰＵ−Ｆに転送し、ＣＰＵ−Ｆは、キャッシュコヒーレンスプロトコルを介して、レジスタａｒ．ｉｔｃ−Ｆ値を適当に返す。さらに、キャッシュコントローラがこのコマンドをａｒ．ｉｔｃ−Ｆに関するコマンドとして認識する場合、キャッシュコントローラは、異なるレベルのキャッシュ等におけるデータの検索をスキップする。
【００２１】
上記例示では、単一のレジスタａｒ．ｉｔｃを使用する。しかしながら、本発明の実施形態は、ａｒ．ｉｔｃレジスタ又は単一レジスタに限定されない。コヒーレンスドメインに複数のレジスタが組み込まれる場合、エイリアス指定されたメモリロケーションを予約し、且つ／又は各レジスタに対してコマンドを作成し、各レジスタを、本明細書で説明したようにキャッシュコヒーレンスプロトコルに組み込む。
【００２２】
ａｒ．ｉｔｃ−Ｆ及びキャッシュコヒーレンスプロトコル
ＣＰＵ−Ｓは、そのａｒ．ｉｔｃ−Ｓを更新したい場合、それ自体の内容を無効にし、それにより次の読出しでａｒ．ｉｔｃ−Ｆ値が取得されるようにする。ａｒ．ｉｔｃ−Ｆがキャッシュコヒーレンスドメインの一部であるため、ＣＰＵ−Ｓは、ａｒ．ｉｔｃ−Ｆ値を望む場合、メモリのエイリアス指定されたロケーションを使用する実施形態では、このエイリアス指定されたメモリロケーションを読み出し、それにより実際にはキャッシュミスが起こる。ＣＰＵ−Ｓは、たとえばコヒーレンスプロトコルに対しａｒ．ｉｔｃ−Ｆをスヌープさせるようにフロントサイドバスに読出し要求を送出することにより、コヒーレンスプロトコルに対しこの値を提供するように要求する。この要求は、エイリアス指定されたメモリロケーションからの要求されている値に対応する。キャッシュコヒーレンスプロトコルは、フロントサイドバスから、エイリアス指定されたメモリロケーションの最新値を保有し格納する記憶要素を確定する。この記憶要素は、実際にはａｒ．ｉｔｃ−Ｆである。高速セル又はＣＰＵ−Ｆがａｒ．ｉｔｃ−Ｆを有するため、ＣＰＵ−Ｓのいずれもかかる値を有するという応答はしない。このため、ａｒ．ｉｔｃ−Ｆを特定することができるコヒーレンスプロトコルは、ＣＰＵ−Ｆを含む高速セルに要求を渡す。高速セルは、それが、ＣＰＵ−Ｆとして選択されたそのＣＰＵのうちの１つに要求された値を有することを知り、このＣＰＵ−Ｆに対し応答することができるようにする。その時、ＣＰＵ−Ｆは、ａｒ．ｉｔｃ−Ｆにおける最新のデータに対するスヌープ要求を認識し、キャッシュコヒーレンスプロトコルと連動して（in conjunction with）、最新のａｒ．ｉｔｃ−Ｆ値をＣＰＵ−Ｓに提供する。
【００２３】
実施形態によっては、フロントサイドバスプロトコルは、ａｒ．ｉｔｃ−Ｆをエイリアス指定されたメモリロケーションに対応する最新値を有する唯一の記憶領域とするのではなく、エイリアス指定されたメモリロケーションを更新し、要求しているＣＰＵ、たとえばＣＰＵ−Ｓは、エイリアス指定されたメモリロケーションからａｒ．ｉｔｃ−Ｆ値を取得する。別法として、ＣＰＵ−Ｆは、エイリアス指定されたメモリロケーションに最新のａｒ．ｉｔｃ−Ｆ値を書き込み、要求しているＣＰＵ、たとえばＣＰＵ−Ｓに対し、要求を再試行するように要求し、ＣＰＵ−Ｓは、最終的に、エイリアス指定されたメモリロケーションから直接ａｒ．ｉｔｃ−Ｆ値を取得する。別法として、ＣＰＵ−Ｓは、最新のａｒ．ｉｔｃ−Ｆ値がエイリアス指定されたメモリロケーションに移動する間、データを取得することができる。
【００２４】
新たに作成されたコマンドを使用する実施形態において上記例を使用することにより、ＣＰＵ−Ｓがａｒ．ｉｔｃに対するスヌープを要求するコマンドを使用した後、コヒーレンスプロトコルは、コマンド及びコマンドサブタイプに基づきスヌープ要求に対応する記憶要素を確定する。そして、コヒーレンスプロトコルは、この要求をＣＰＵ−Ｆに渡し、ＣＰＵ−Ｆは、コヒーレンスプロトコルと連動してａｒ．ｉｔｃ−Ｆ値等を返す。
【００２５】
代替実施形態
本発明の実施形態は、適当な時、たとえばドリフトカウンタがドリフト間隔で満了する時、オペレーティングシステムにより、タイマレジスタを同期させる同期ルーチンを使用する。ＳＭＰシステムファームウェア初期化及びブートの起動中、１つのＣＰＵ、たとえばＣＰＵ−Ｉがファームウェアを実行し、他のＣＰＵはリセット状態に維持される。したがって、ＣＰＵ−Ｉがリセット状態でなくなると、ＣＰＵ−Ｉのａｒ．ｉｔｃタイマはカウントを開始するが、他のＣＰＵのａｒ．ｉｔｃタイマは依然としてリセット状態であり、まだカウントを開始していない。ファームウェアが、すべてのＣＰＵがリセット状態でなくなりカウントを開始する時点まで動作すると、ＣＰＵ−Ｉのａｒ．ｉｔｃは、他のＣＰＵのａｒ．ｉｔｃより先に進んで動作するため、ａｒ．ｉｔｃレジスタは同期しなくなる。その結果、オペレーティングシステムは、ａｒ．ｉｔｃレジスタの１回の同期を行うルーチンを開始する。ドリフトカウンタが、ａｒ．ｉｔｃ−Ｓを更新する時であることを示して満了すると、本発明の実施形態は、オペレーティングシステムのこのルーチンを利用して低速セルのａｒ．ｉｔｃ−Ｓを更新する。オペレーティングシステムのこの同期ルーチンを使用する前に、本発明の実施形態は、このルーチンを実行する際のＣＰＵ時間を含む利点及び不都合を考察する。それは、たとえば、時間間隔が短い場合、このルーチンを使用することがシステム性能に大幅に影響する可能性があるためである。
【００２６】
上記明細書において、本発明を、その特定の実施形態に関して説明した。しかしながら、本発明のより広い精神及び範囲から逸脱することなくそれら実施形態に対しさまざまな変更及び改変を行ってもよい、ということが明らかとなろう。したがって、明細書及び図面は、限定的なものとしてではなく例示的なものとしてみなされるべきである。
【図面の簡単な説明】
【００２７】
【図１】本発明の実施形態を実施してもよい構成を示す図である。
【図２】本発明の一実施形態による図１の構成の処理セルを示す図である。
【符号の説明】
【００２８】
１００・・・システム
１１０・・・処理セル
１２０・・・インタフェース
１３５・・・フロントサイドバス
２２０・・・メモリ
２３０・・・キャッシュ
２１２０・・・レジスタ
２１３０・・・ＣＰＵキャッシュ
【図１】
2006202285.tif 000003
【図２】
2006202285.tif 000004