(57)【要約】  チップ（２００）上の複数のプロセッサ（２１０＿０、２１０＿１）がロックステップ方式で動作される。チップ（２００）上のクロスバー切替器（２２０）が、複数のプロセッサ（２１０＿０、２１０＿１）を、レベル２（Ｌ２）キャッシュ（２３０）内の複数のバンク（２３０＿０、２３０＿１）に連結したり切り離したりする。データが、Ｌ２キャッシュ（２３０）の第１のバンク（２３０＿０）に格納される時、その場所にある古いデータが、クロスバー切替器（２２０）を通って、先入れ先出しメモリ（ＦＩＦＯ）として機能しているＬ２キャッシュ（２３０）の第２のバンク（２３０＿２）に渡される。従って、新しいデータが、レベル２キャッシュ（２３０）の第１のバンク（２３０＿０）内の場所にキャッシュ、即ち格納され、その場所からの古いデータが、レベル２キャッシュ（２３０）の第２のバンク（２３０＿２）においてロギングされる。第２のバンク（２３０＿２）内のロギングされたデータは、必要の場合には、第１のバンク（２３０＿０）を既知の時点の状態に復元するために用いられる。
0003139964.tif 000002
【実用新案登録請求の範囲】
【請求項１】
複数のプロセッサ・コアと、
複数のバンク、及び、
ＦＩＦＯレジスタとしての構成バンク、
を含むレベル２キャッシュと、
前記複数のプロセッサ・コア及び前記レベル２キャッシュの前記複数のバンクに接続されたクロスバー切替器と、
を含み、前記クロスバー切替器が、ロックステップ方式のロールバック構成レジスタを含む、
ことを特徴とするプロセッサ。
【請求項２】
複数のプロセッサ・コアと、
複数のバンク、及び、
ＦＩＦＯレジスタとしての構成バンク、
を含むレベル２キャッシュと、
ロックステップ方式のロールバック構成レジスタを含む、
前記複数のプロセッサ・コア及び前記レベル２キャッシュの前記複数のバンクに接続されたクロスバー切替器と、
を含むプロセッサと、
前記プロセッサに連結されたメモリと、
を含むことを特徴とするシステム。
【請求項３】
前記システムが独立型コンピュータ・システムを含むことを特徴とする請求項２に記載のシステム。
【請求項４】
前記システムがクライアント・サーバ・システムを含むことを特徴とする請求項２に記載のシステム。
【請求項５】
複数のバンクを含むレベル２キャッシュの少なくとも第１のバンクをデータのためのキャッシュとして用いるための手段と、
前記第１のバンクからの古いデータを格納するために、前記レベル２キャッシュの複数のバンクのうちの少なくとも第２のバンクを、先入れ先出しメモリ構造として用いるための手段と、
を含むことを特徴とする構造。
【請求項６】
少なくとも前記第の１バンクを用いるように、及び少なくとも前記第２のバンクを用いるように、前記レベル２キャッシュを構成するための手段、
をさらに含むことを特徴とする請求項５に記載の構造。
【請求項７】
前記構成するための手段が、
ＦＩＦＯレジスタとしての構成バンクに書込むための手段、
を含むことを特徴とする請求項６に記載の構造。
【請求項８】
新しいデータを前記第１のバンクに渡し、古いデータを前記第２のバンクに渡すために、複数のプロセッサ・コアを前記レベル２キャッシュに連結したり切り離したりするように切替器を構成するための手段、
をさらに含むことを特徴とする請求項５に記載の構造。
【請求項９】
前記切替器を構成するための前記手段が、
ロックステップ方式のロールバック構成レジスタに書込むための手段、
を含むことを特徴とする請求項８に記載の構造。
【請求項１０】
前記レベル２キャッシュのためのアドレスが、アドレス・タグ及び複数のバンク選択ビットを含み、前記第１のバンクを用いるための前記手段が、
前記アドレスタグと少なくとも１つのバンク選択ビットをタグとして前記レベル２キャッシュの前記第１のバンク内に格納するための手段、
をさらに含むことを特徴とする請求項５に記載の構造。
【請求項１１】
前記レベル２キャッシュの少なくとも前記第１のバンクをキャッシュとして用いるための前記手段が、
新しいデータを、前記レベル２キャッシュの前記第１のバンクの場所に格納するための手段、
をさらに含むことを特徴とする請求項５に記載の構造。
【請求項１２】
前記レベル２キャッシュの前記複数のバンクのうちの少なくとも前記第２のバンクを、先入れ先出しメモリ構造として用いるための前記手段が、
前記場所からの古いデータを、前記レベル２キャッシュの前記第２のバンクにおいてロギングするための手段、
をさらに含むことを特徴とする請求項１１に記載の構造。
【請求項１３】
新しいデータを、レベル２キャッシュのバンク内の場所に格納するための手段と、
前記場所からの古いデータを、前記レベル２キャッシュの別のバンクにおいてロギングするための手段、
を含むことを特徴とする構造。
【請求項１４】
前記古いデータを用いて、前記レベル２キャッシュ内の前記バンクの状態を、以前の既知の状態にロールバックするための手段、
をさらに含むことを特徴とする請求項１３に記載の構造。
【考案の詳細な説明】
【技術分野】
【０００１】
本考案は、一般に、レベル２キャッシュをもつコンピュータ・プロセッサに関し、より具体的には、複数のプロセッサ・コアがロックステップ方式で稼働している時に、ロールバックのためにレベル２キャッシュを用いる方法及び構造に関する。
【０００２】
（関連出願）
本出願は、２００４年６月４日に出願され、「Ｌｏｇｇｉｎｇ  ｏｆ  Ｌｅｖｅｌ−Ｔｗｏ  Ｃａｃｈｅ  Ｔｒａｎｓａｃｔｉｏｎｓ  Ｉｎｔｏ  Ｂａｎｋｓ  ｏｆ  ｔｈｅ  Ｌｅｖｅｌ−Ｔｗｏ  Ｃａｃｈｅ  ｆｏｒ  Ｓｙｓｔｅｍ  Ｒｏｌｌｂａｃｋ」という表題で、かつ、Ｓｈａｉｌｅｎｄｅｒ  Ｃｈａｕｄｈｒｙ、Ｑｕｉｎｎ  Ａ．Ｊａｃｏｂｓｏｎ及びＡｓｈｅｌｅｙ  Ｓａｕｌｓｂｕｒｙを発明者として名前を挙げ、全体が引用によりここに組み込まれる、米国特許仮出願番号６０／５７６，９５８号に基づく利益を主張する。また、
本出願は、２００４年６月４日に出願され、「Ｌｏｇｇｉｎｇ  ｏｆ  Ｌｅｖｅｌ−Ｔｗｏ  Ｃａｃｈｅ  Ｔｒａｎｓａｃｔｉｏｎｓ  Ｉｎｔｏ  Ｂａｎｋｓ  ｏｆ  ｔｈｅ  Ｌｅｖｅｌ−Ｔｗｏ  Ｃａｃｈｅ  Ｓｔｏｒｅｓ  ｔｈｅ  Ｔｒａｎｓａｃｔｉｏｎｓ  ｆｏｒ  Ｄｉａｇｎｏｓｔｉｃ  ａｎｄ  Ｄｅｂｕｇ」という表題で、かつ、Ｓｈａｉｌｅｎｄｅｒ  Ｃｈａｕｄｈｒｙ、及びＳｕｄｈｅｅｎｄｒａ  Ｈａｎｇａｌを発明者として名前を挙げ、全体が引用によりここに組み込まれる、米国特許仮出願番号６０／５７６，９５９号に基づく利益を主張する。
【背景技術】
【０００３】
（関連技術の説明）
従来技術のシステム１００においては、プロセッサ１１０及びプロセッサ１２０をロックステップ方式で稼働させることにより、高い信頼性を得ることが試みられていた。しかし、こうしたことは概念的には複雑ではないが、実際に実装することは困難であった。
【０００４】
システム１００は外部クロック１６０を有し、各々のプロセッサ１１０、１２０はそれ自体の内部クロックを有していた。プロセッサ１１０、１２０がロックステップ方式で動作していることを保証するためには、例えばロックステップ監視装置１５０により、レベル２キャッシュ１３０、１４０への格納を監視することが必要であった。例えば、所与の時点で異なる値が格納された場合には、プロセッサ１１０、１２０はロックステップ方式でなかったか、或いはプロセッサ１１０、１２０の一方又は両方でエラーが発生していたということである。
【０００５】
種々のクロックが同期されて、同じサイクルで動作していることを保証するのは難しい問題であった。内部クロックが外部クロックから転用された場合には、データが、例えば同じプロセッサのクロック・サイクルと関連されているかどうかを検証するのは不可能だったので、システム１００は信頼できるように機能することはできなかった。高信頼性システムにおいて、プロセッサがロックステップ方式で動作していることを検証するために、新規な技術が必要とされる。
【考案の開示】
【０００６】
本考案の１つの実施形態においては、チップ上の複数のプロセッサがロックステップ方式で動作される。チップ上のクロスバー切替器が、複数のプロセッサをレベル２（Ｌ２）キャッシュ内の複数のバンクに連結したり切り離したりする。データが、ロックステップ方式で動作するプロセッサの各々から、格納のためにＬ２キャッシュのバンクに渡される時、データが比較されて、プロセッサがロックステップ方式で動作していることを保証する。
【０００７】
不一致が検出されないと仮定すると、データがＬ２キャッシュの第１のバンク内に格納される時、その場所にある古いデータがクロスバー切替器を通って、先入れ先出しメモリ（ＦＩＦＯ）として機能しているＬ２キャッシュの第２のバンクに渡される。従って、本実施形態においては、新しいデータをレベル２キャッシュの第１のバンク内の場所にキャッシュし、その場所からの古いデータをレベル２キャッシュの第２のバンクにおいてロギングする。
【０００８】
古いデータをロギングすると、第２のバンク内において第１のバンク内のデータの履歴が生成される。不一致が発生した時には、第２のバンク内のデータが、第１のバンクを既知の以前の状態に復元するために用いられ、即ち、第２のバンク内のデータは第１のバンクの状態をロールバックするために用いられる。
【０００９】
全てのこうした動作は、内部クロックをもつ単一のチップ上で実行されるので、内部クロックと外部クロックを同期させることに関連する従来技術の問題は解消される。また、ロックステップ方式で動作するプロセッサの１つ又はそれ以上においてグリッチが発生した場合には、アプリケーションを再起動させる必要はなくなる。それどころか、実行は既知の時点にロールバックされ、自動的に続行される。ロールバックはアプリケーションに対して透過的である。従って、ロックステップ方式の処理が強化されるだけではなく、さらに、システムは、アプリケーションにとっては、グリッチが発生した時に再起動を要した従来技術のシステムよりも安定していると思われるため、システム全体の信頼性が強化される。
【００１０】
１つの実施形態においては、レベル２キャッシュは、少なくとも第１のバンクをキャッシュとして用いるように、及び、ＦＩＦＯレジスタとしての構成バンク（コンフィギュレーションバンク）に書込むことにより、少なくとも第２のバンクをＦＩＦＯとして用いるように構成される。クロスバー切替器は、新しいデータを第１のバンクに渡し、かつ、ロックステップ方式のロールバック構成レジスタ（ロールバックコンフィギュレーションレジスタ）に書込むことにより、古いデータを第２のバンクに渡すように構成される。
【００１１】
レベル２キャッシュのためのアドレスは、アドレス・タグと複数のバンク選択ビットとを含む。バンクの幾つかをキャッシュとして用い、Ｌ２キャッシュのバンクのその他をＦＩＦＯとして用いるために、アドレス・タグ及び少なくとも１つのバンク選択ビットが、レベル２キャッシュの第１のバンク内にタグとして格納される。
【００１２】
従って、１つの実施形態においては、チップ上のプロセッサは、複数のプロセッサ・コアと、複数のバンクとＦＩＦＯレジスタとしての構成バンクを含むレベル２キャッシュと、複数のプロセッサ・コア及びレベル２キャッシュの複数のバンクに接続されたクロスバー切替器とを含む。クロスバー切替器は、ロックステップ方式のロールバック構成レジスタを含む。
【００１３】
システムは、メモリに連結されたこうしたプロセッサを含む。１つの実施形態においては、こうしたシステムは独立型コンピュータ・システムであり、別の実施形態においてはクライアント・サーバ・システムである。
【００１４】
さらに別の実施形態においては、構造は、レベル２キャッシュの少なくとも第１のバンクを、データのためのキャッシュとして用いるための手段を含む。レベル２キャッシュは複数のバンクを含む。構造は、さらに、レベル２キャッシュの複数のバンクのうちの少なくとも第２のバンクを、第１のバンクからの古いデータを格納するための先入れ先出しメモリ構造として用いるための手段を含む。
【００１５】
構造は、さらに、少なくとも第１のバンクをキャッシュとして用いるように、及び、少なくとも第２のバンクをＦＩＦＯとして用いるようにレベル２キャッシュを構成するための手段を含む。構成するための手段は、ＦＩＦＯレジスタとしての構成バンクに書込むための手段を含む。
【００１６】
構造は、さらに、新しいデータを第１のバンクに渡すために、及び古いデータを第２のバンクに渡すために、複数のプロセッサ・コアをレベル２キャッシュに連結したり切り離したりするように切替器を構成するための手段を含む。切替器を構成するための手段は、ロックステップ方式のロールバック構成レジスタに書込むための手段を含む。
【００１７】
本考案の１つの実施形態においては、チップ上の複数のプロセッサは、プロセッサのデバッグ及び診断モード動作の通常の様式で動作される。チップ上のクロスバー切替器は、複数のプロセッサを、同様にチップ上にあるレベル２（Ｌ２）キャッシュ内の複数のバンクに連結したり切り離したりする。
【００１８】
データが、プロセッサの各々からクロスバー切替器を通ってＬ２キャッシュに渡される時、データはＬ２キャッシュの第１の複数バンクにキャッシュされる。データに関連するコマンド、及びレベル１キャッシュ内のデータの状況に関わる情報は、Ｌ２キャッシュの別の複数バンクにおいてロギングされる。
【００１９】
コマンドのロギングは、第１の複数バンク内のデータと関連するコマンドの履歴を生成する。さらに、レベル１（Ｌ１）キャッシュに関わる情報は、Ｌ１キャッシュ及びＬ２キャッシュのデバッグに以前に使用できなかった情報を提供する。
【００２０】
キャッシュのエラーが発生した場合には、Ｌ２キャッシュ内の情報が、診断及びデバッグのために読出される。レベル１キャッシュについての情報は、エラーがレベル１キャッシュ内に存在したのか或いはレベル２キャッシュ内に存在したのかを判断することを可能にする。
【００２１】
１つの実施形態においては、レベル２キャッシュは、少なくとも第１のバンクをキャッシュとして用いるように、及びＦＩＦＯレジスタとしての構成バンクに書込むことにより、少なくとも第２のバンクをＦＩＦＯとして用いるように構成される。クロスバー切替器は、データを第１のバンクに渡すように、及び、デバッグ構成レジスタに書込むことにより、データに関連するコマンドを第２のバンクに渡すように構成される。
【００２２】
レベル２キャッシュのアドレスは、アドレス・タグと複数のバンク選択ビットとを含む。バンクの幾つかをキャッシュとして用い、Ｌ２キャッシュのバンクのその他をＦＩＦＯとして用いるために、アドレス・タグ及び少なくとも１個のバンク選択ビットが、レベル２キャッシュの第１のバンク内にタグとして格納される。
【００２３】
従って、１つの実施形態においては、チップ上のプロセッサは、複数のプロセッサ・コアと、複数のバンク及びＦＩＦＯレジスタとしての構成バンクを含むレベル２キャッシュと、複数のプロセッサ・コア及びレベル２キャッシュの複数のバンクに接続されたクロスバー切替器とを含む。クロスバー切替器はデバッグ構成レジスタを含む。
【００２４】
システムは、メモリに連結されたこうしたプロセッサを含む。１つの実施形態においては、こうしたシステムは独立型コンピュータ・システムであり、別の実施形態においてはクライアント・サーバ・システムである。
【００２５】
さらに別の実施形態においては、構造は、レベル２キャッシュの少なくとも第１のバンクをデータのためのキャッシュとして用いるための手段を含む。レベル２キャッシュは複数のバンクを含む。構造は、さらに、レベル２キャッシュの複数のバンクのうちの少なくとも第２のバンクを第１のバンク内にキャッシュされたデータに関連するコマンドを格納するための先入れ先出しメモリ構造として用いるための手段も含む。
【００２６】
構造は、さらに、少なくとも第１のバンクをキャッシュとして用いるように、及び、少なくとも第２のバンクをＦＩＦＯとして用いるように、レベル２キャッシュを構成するための手段を含む。構成するための手段は、ＦＩＦＯレジスタとしての構成バンクに書込むための手段を含む。
【００２７】
構造は、さらに、新しいデータを第１のバンクに渡すように、及びコマンドを第２のバンクに渡すように、複数のプロセッサ・コアをレベル２キャッシュに連結したり切り離したりする切替器を構成するための手段を含む。切替器を構成するための手段は、デバッグ構成レジスタに書込むための手段を含む。
【考案を実施するための最良の形態】
【００２８】
図面及び詳細な説明において、同じ参照符号をもつ要素は同じ要素であるか、或いは同等の要素である。さらに、参照符号の最初の数字は、対応する要素が最初に現れる図の番号である。
【００２９】
本考案の１つの実施形態においては、例えばプロセッサ・コア２１０＿０、２１０＿１等の複数のプロセッサがロックステップ方式で動作していることを保証するため、及び、例えばＬ２キャッシュ２３０のバンク０  ２３０＿０、及びＬ２キャッシュ２３０のバンク１  ２３０＿１等の第２レベルのキャッシュへの情報の格納が、複数のプロセッサ２１０＿０、２１０＿１がロックステップ方式で動作していないことを示す時に、実行を所定の状態にロールバックするために、新規性のある方法が用いられる。本実施形態においては、データは、プロセッサ・コア２１０＿０、２１０＿１、２１０＿２、２１０＿３と同じチップ上にあるレベル２キャッシュ２３０内に格納される。プロセッサ・コア２１０＿０、２１０＿１、２１０＿２、２１０＿３の各々は、複数のマイクロプロセッサを含む。
【００３０】
１つの実施形態においては、Ｌ２キャッシュ２３０は、複数のバンク２３０＿０、２３０＿１、２３０＿２、２３０＿３を含む。ロックステップ・モードの動作においては、例えばバンク２３０＿０、２３０＿１のような２つのバンクがキャッシュとして用いられ、例えばバンク２３０＿２、２３０＿３のような２つのバンクは、先入れ先出しメモリ構造（ＦＩＦＯ）として用いられる。
【００３１】
ロックステップ・モードの動作においては、データは、ロックステップ方式で動作している、第１プロセッサ・コア２１０＿０及び第２プロセッサ・コア２１０＿１によって、Ｌ２キャッシュ２３０のバンク２３０＿０、２３０＿１内に格納される。新しいデータがＬ２キャッシュ２３０内の例えばバンク２３０＿０に格納される時には、格納場所のアドレス及び古いデータは、クロスバー切替器２２０を通って、ＦＩＦＯとして機能するバンク２３０＿２に渡され、そのアドレス及び古いデータを格納する。
【００３２】
格納の各々の対がクロスバー切替器２２０に達する時に、クロスバー切替器２２０により比較が実行される。クロスバー切替器２２０とプロセッサ・コア２１０＿０及び２１０＿１は同じチップ上にあることから、チップ上では内部クロックのみが用いられるので、外部クロックと内部クロックとの相違と関連する問題は解消されたことに注目されたい。対になっている格納が同じである場合には、データは上述のように処理される。格納が相違する場合には、エラー又はグリッチのどちらかが発生している。
【００３３】
問題がグリッチであった場合には、既知の時点から実行を再起動することが処理の続行を可能にする。従って、ＦＩＦＯとして機能するバンク内のデータが、プロセッサ２００の状態を既知の時点にロールバックする際に用いられ、次に実行が再開される。こうしたことは全て、実行されているアプリケーションが、グリッチが発生したことを認識せずに行われる。従って、Ｌ２キャッシュ２３０を用いて、新しいデータ及び古いデータの両方を格納することは、高信頼性コンピューティングのために新しいレベルの性能を提供する。
【００３４】
従って、本実施例においては、こうした方法は、複数のプロセッサ・コア２１０＿０、２１０＿１、２１０＿２、２１０＿３と、複数のバンク２３０＿０、２３０＿１、２３０＿２、２３０＿３を含むオン・チップのレベル２（Ｌ２）キャッシュ２３０と、複数のプロセッサ・コア２１０＿０、２１０＿１、２１０＿２、２１０＿３の各々をＬ２キャッシュ２３０に連結したり切り離したりするクロスバー切替器２２０とを含むプロセッサ２００と併せて用いられる。プロセッサ２００は、他のコンポーネント及びユニットを含むが、その構造は本考案の種々の実施形態を理解するために必要というわけではない。従って、これらの構造は、種々の実施形態の説明を損なうことを回避するために説明しない。
【００３５】
本実施例においては、プロセッサ２００（図２）は、処理システム３００（図３）の一部である。処理システム３００は、複数のアプリケーション３０１＿１乃至３０１＿ｊ、３０２＿１乃至３０２＿ｋ及び３０３＿１乃至３０３＿ｍと、複数のオペレーティング・システム３１０＿１、３１０＿２、３１０＿ｐと、ハイパーバイザ３２０と、プロセッサ２００とを含む。複数のオペレーティング・システム３１０＿１、３１０＿２、３１０＿ｐは、単一のオペレーティング・システム（ＯＳ）の多数のコピー、又は多数の異種オペレーティング・システムとすることができる。
【００３６】
典型的には、ファームウェア、ファームウェアとソフトウェアの組み合わせ、又は全てソフトウェアとして実装されるハイパーバイザ３２０は、複数のオペレーティング・システム３１０＿１、３１０＿２、３１０＿ｐのために、多くの機能及びサービスを実行して、各々の仮想プロセッサに対して論理区画を生成し実施する。ハイパーバイザ３２０は、全てのシステム・リソースを所有して、抽象化層を提供し、これを通してデバイスのアクセス及び制御が調停される。ハイパーバイザ３２０及びファームウェアは、各々の論理区画に対するメモリのマッピング、プロセッサ及びアダプタを取り扱う。複数のアプリケーション３０１＿１乃至３０１＿ｊ、３０２＿１乃至３０２＿ｋ及び３０３＿１乃至３０３＿ｍは、一般的には、区画メモリがどこに配置されているのか、どのプロセッサ・コアが割当てられているか、又はアダプタが使用中であるかについて無認識である。
【００３７】
１つの実施形態においては、Ｌ２キャッシュ２３０は合計サイズが２メガバイトであり、バンク２３０＿０、２３０＿１、２３０＿２、２３０＿３の各々は５１２キロバイトのサイズである。Ｌ２キャッシュ２３０は８ウェイ・セット・アソシエイティブであり、６４バイトのライン・サイズを有する。
【００３８】
本実施形態においては、Ｌ２キャッシュ２３０はＥＣＣ保護されている。Ｌ２キャッシュ２３０の各６４バイトのライン４１０（図４Ａ）は、２つの３２バイトのブロック４１１、４１２に分割され、１０ビットのＥＣＣが、各ブロック４２０に対して生成される。
【００３９】
新しいデータがライン４１０に書込まれる時に、データは、例えば８バイトというような６４ビット以下のサイズである。データがブロック０  ４１１のためのものであると仮定すると、古いブロック０  ４１１Ａ（図４Ｂ）がＬ２キャッシュ２３０から読取られる。新しいデータ４１５（図４Ｃ）が古いブロック０  ４１１Ａに合体され、ＥＣＣ４２０Ａ内の新しいＥＣＣが、ブロック４１１Ｂのために生成される。従って、Ｌ２キャッシュ２３０への各々の格納において、古いデータが読取られる。以下でより完全に説明されるように、古いデータ及びアドレスは、ロックステップ方式のロールバック・モードの動作において、切替器２２０を通って別のＬ２キャッシュ２３０のバンクに渡される。
【００４０】
本実施例においては、Ｌ２キャッシュ２３０の各々のバンクは１０２４のラインを有する。ライン０はバンク２３０＿０内にある。ライン１はバンク２３０＿１内にある。ライン２はバンク２３０＿２内にあり、ライン３はバンク２３０＿３内にある。ライン４はバンク２３０＿０内にあり、以後同じである。Ｌ２キャッシュ２３０は、複数のプロセッサ・コア２１０＿０、２１０＿１、２１０＿２、２１０＿３のための第１の共有キャッシュであり、メモリの順序付け、レベル１（Ｌ１）キャッシュのコヒーレンシー、アトミックを担い、トランザクションのメモリに関与する。
【００４１】
Ｌ２キャッシュ２３０のアドレスの例が図５に示される。アドレス５００は４７ビットを有する。６つのビット０乃至５は、Ｌ２キャッシュ２３０のライン・オフセット・ビット５０１である。２つのビット６、７はバンク選択ビット５０２である。１０のビット８乃至１７はインデックス・ビット５０３であり、２９のビット１８乃至４６はタグ・ビット５０４である。
【００４２】
しかし、以下でより完全に説明されるように、Ｌ２キャッシュ２３０内のタグは２９ビットではなく３０ビットのサイズであり、即ち、本考案のロールバック処理を実装するためには、１つの付加的なタグ・ビットが必要である。例えば、Ｌ２キャッシュ２３０内に格納されるタグは、少なくとも、Ｌ２キャッシュ２３０がＦＩＦＯメモリとして動作するように構成された少なくとも１つのバンクを有する時は、ビット１８乃至４６及びビット７である。
【００４３】
プロセッサ２００内の複数のプロセッサ・コア２１０＿０、２１０＿１、２１０＿２、２１０＿３における各々のコアは、１つの実施形態においては、６４Ｋバイトのサイズを有する命令データ・キャッシュと、共有される命令フェッチ・ユニットと、４つのマイクロプロセッサと、レベル１キャッシュと呼ばれることもあり、４つマイクロセッサ全てによって用いられるデータ・キャッシュとを含む。本実施形態においては、各々のマイクロプロセッサは４つの発行性能を有し、二方向の同時マルチ・スレッド（ＳＭＴ）性能を有し、かつ、アーキテクチャ・レジスタのためのシャドー・レジスタを有する。
【００４４】
１つの実施形態においては、各々のデータ・キャッシュは３２Ｋバイトのサイズで、４ウェイ・セット・アソシエイティブであり、かつライト・スルー（書込みの確保がない）である。データが、レベル１データ・キャッシュのうちの１つに書込まれた時、例えば格納された時には、データは、クロスバー切替器２２０を通ってＬ２キャッシュ２３０に渡され、Ｌ２キャッシュ２３０のバンクのうちの１つに書込まれる。
【００４５】
本実施例においては、クロスバー切替器は完全なクロスバー切替器であるので、クロスバー切替器２２０は、いずれのマイクロプロセッサもＬ２キャッシュ２３０の任意のバンクを用いることを可能にする。
【００４６】
１つの実施形態においては、ロックステップ方式のロールバック・モードの動作に入るために、ハイパーバイザ３２０は、方法６００において、ロックステップ方式のロールバック有効化動作６１０を開始し、ロックステップ方式のロールバック・モードの動作のためにクロスバー切替器２２０及びＬ２キャッシュ２３０を構成する。このロックステップ方式のロールバック有効化動作６１０の実施形態においては、ハイパーバイザ３２０は、動作６１０の切替器構成動作６０１において、例えば第１レジスタのようなクロスバー切替器のロックステップ方式のロールバック構成レジスタ３６０に書込む。
【００４７】
クロスバー切替器のロックステップ方式のロールバック・レジスタ３６０への書込みは、クロスバー切替器２２０が、実行のために、バンク２３０＿０及び２３０＿１にコマンドを向けるようにし、各々の格納について、格納のアドレス及び古いデータを、バンク２３０＿０及び２３０＿１からバンク２３０＿２及び２３０＿３に送るように、クロスバー切替器２２０を構成する。切替器２２０は、例えば、実行のためにバンク２３０＿０に向けられた格納コマンドにおいては、アドレス及び古いデータがバンク２３０＿２に送られるように構成され、実行のためにバンク２３０＿１に向けられた格納コマンドにおいては、アドレス及び古いデータがバンク２３０＿３に送られるように構成される。
【００４８】
動作６０１が完了した後で、ハイパーバイザ３２０は、Ｌ２キャッシュ構成動作６０２において、ＦＩＦＯレジスタ３７０としてのＬ２キャッシュの構成バンクに書込む。ＦＩＦＯレジスタ３７０としてのＬ２キャッシュの構成バンクへの書込みは、Ｌ２キャッシュを、バンク２３０＿０及び２３０＿１が通常の方法で機能するように構成する。しかし、バンク２３０＿２及び２３０＿３は、キャッシュとして機能するように構成されるのではなく、代わりに、例えばＦＩＦＯのような先入れ先出しメモリ構造として機能するように構成される。
【００４９】
従って、バンク２３０＿２及び２３０＿３に渡される情報はコマンドとして処理されるのではなく、代わりに、ハイパーバイザ３２０がレジスタ３７０に書込んだ後で、ＦＩＦＯ内の次の利用できる格納場所に取得され格納される。１つの実施形態においては、各々のＦＩＦＯは、ＦＩＦＯ内の特定の割合の格納空間が使用された時に示す最高水準ポインタを有する。
【００５０】
通常の動作においては、インデックス、バンク及びライン・オフセットは、特定の格納場所においては黙示的なものであるので、Ｌ２キャッシュ２３０のバンク内に各々のデータ項目を独自に配置するのに２９ビットのタグで十分である。しかし、ロックステップ方式のロールバック・モードにおいては、１つのバンク選択ビットが用いられるだけなので、バンクのうち２つは不可視となる。マイクロプロセッサは、キャッシュに対するロックステップ方式のロールバック・モードの動作について認識しないので、マイクロプロセッサは、Ｌ２キャッシュ２３０の４つのバンク全てが利用可能であるかのように機能する。
【００５１】
ロックステップ・モードにおいては、コマンドが２つの不可視バンクに向けられたものかどうかを判断するために、付加的なタグ・ビットが、キャッシュとして機能するＬ２キャッシュ２３０の２つのバンク内に格納される。従って、このモードにおいては、キャッシュ・タグは、アドレス・タグ５０４に例えばビット７（図５）の１つのバンク選択ビットを加えたものである。具体的には、ロックステップ・モードにおいては、キャッシュ・タグは、例えばタグの余分なビットが用いられるというように、アドレス・タグ４０４と少なくとも１つのバンク選択ビットの組み合わせである。
【００５２】
ロックステップ方式のロールバック・モード有効化動作６１０の完了に続いて、ロックステップ方式の監視及び古いデータのロギング６２０が実行される。バンク２３０＿０及び２３０＿１への各々の格納に関して、クロスバー切替器２２０はデータを比較する。データが同じ場合には、新しいＥＣＣが生成され、古いデータ及びアドレスは、ＦＩＦＯとして動作するＬ２キャッシュの適切なバンクに転送され、処理は続行する。
【００５３】
エラーがクロスバー切替器２２０により検出された場合は、ロックステップ方式のエラー検査動作６３０は、状態を既知の時点にロールバックする動作６４０に、処理を移行する。動作６４０では、ＦＩＦＯ内のデータが、Ｌ２キャッシュ２３０の状態を既知の時点にロールバックする際に用いられ、それによって実行を既知の時点で再開できることになる。
【００５４】
方法６００の１つの実施形態を実装するために、チェックポイント命令が使用される。本実施形態においては、チェックポイント命令の構文は、
ｃｈｅｃｋｐｏｉｎｔ、〈ｌａｂｅｌ〉
であり、命令ｃｈｅｃｋｐｏｉｎｔの実行は、プロセッサに（ｉ）例えばアーキテクチャ上のレジスタがシャドー・レジスタにコピーされるように、プロセッサによりこうしたスレッドの状態のスナップショットを取得させ、（ｉｉ）Ｌ２キャッシュにＦＩＦＯとして機能するバンクをフラッシュさせる。ラベル〈ｌａｂｅｌ〉は、チェックポイント指定が失敗した場合に、黙示的或いは明示的に処理が移行する場所である。
【００５５】
プロセッサが状態のスナップショットを取得した後で、Ｉ／Ｏデータもまたバッファされる。こうしたことは、状態がスナップショットの状態にロールバックされた場合には、Ｉ／Ｏ装置もまた、その状態に適するように構成されなければならないので必要である。
【００５６】
プロセッサは、さらに、別のスレッドが、例えばチェックポイント指定された状態の場所に書込むか、或いはチェックポイント指定された状態の場所に値を格納するといった、状態のロールバックを妨げる動作を実行するかどうかを監視する。こうした動作が検出された場合には、スナップショットに続いて行われた作業はフラッシュされ、スナップショットの状態が復元され、処理はラベル〈ｌａｂｅｌ〉に分岐する。これはロックステップ方式の動作中の黙示的な障害である。
【００５７】
チェックポイント指定の明示的な障害は、命令文Ｆａｉｌの実行により引き起こされる。命令文Ｆａｉｌの実行は、プロセッサにスナップショットの状態に状態を復元させ、ラベル〈ｌａｂｅｌ〉に分岐させる。本実施形態においては、命令文Ｆａｉｌは、例えば検出されているＬ２キャッシュ２３０への格納に関する不一致により実行される。
【００５８】
このチェックポイント命令の説明は、例示的なものに過ぎず、本考案をこの特定の実施形態に限定することを意図するものではない。本開示を考慮すると、本考案の特性は多種多様な方法で実装することができる。さらに、プロセッサが作用し始めることが述べられる時には、当業者であれば、作用は、例えばアプリケーション、オペレーティング・システム又はハイパーバイザの１つ又はそれ以上の命令を実行した結果であるということ、或いは自動ハードウェアに応答した結果であるということを理解する。
【００５９】
従って、本実施形態においては、動作６０１及び６０２を実行した後でチェックポイント命令が実行されて、ロックステップ方式で動作するプロセッサ・コアのアーキテクチャ上の状態がシャドー・レジスタにコピーされる。ＦＩＦＯとして機能するように構成されたＬ２キャッシュ２３０のバンクがフラッシュされ、オペレーティング・システムはＩ／Ｏ装置のためにＩ／Ｏをバッファする。
【００６０】
Ｌ２キャッシュ２３０への格納コマンドに関して黙示的なエラー及び不一致がないと仮定すると、Ｌ２キャッシュ２３０のＦＩＦＯが最高水準点に達した時に、バッファされたＩ／Ｏがコミットされ、次に新しいチェックポイント命令が実行される。従って、アーキテクチャ上の状態の新しいスナップショットが、アーキテクチャ上のレジスタの値をシャドー・レジスタにコピーすることにより取得され、ＦＩＦＯとして機能するように構成されたＬ２キャッシュ２３０のバンクがフラッシュされて、オペレーティング・システムは再びＩ／Ｏ装置のためにＩ／Ｏをバッファする。このことはＦＩＦＯ内のデータを上書きすることを防ぎ、これはさらに、Ｌ２キャッシュのバンクをスナップショットの状態にロールバックすることも不可能にする。
【００６１】
Ｌ２キャッシュ２３０のための格納コマンドに不一致が検出された時には、チェックポイント命令と関連された命令ＦＡＩＬが実行される。これは、シャドー・レジスタ内の値をアーキテクチャ上のレジスタに戻すようにコピーし、格納されたキャッシュ・データをＬ２キャッシュ２３０の適切なバンクにロールバックすることにより、ＦＩＦＯ内のデータを用いて、Ｌ２キャッシュを、チェックポイント命令が実行された時点、即ちスナップショットの状態に復元し、そして、バッファされたＩ／Ｏはフラッシュされる。従って、ロックステップ・システムの状態は、実行中の以前の既知の時点に復元される。黙示的なチェックポイントのエラーが検出された場合には、同様のロールバックが実行されるか、或いはシステム処理を停止することができる。
【００６２】
１つの実施形態においては、ハイパーバイザ３２０Ａをもつプロセッサ２００Ａが、パーソナル・コンピュータ又はワークステーションのようなハードウェア構成７１０に含まれ、構成７１０はロールバックの方法６００を含むようになっている。本実施形態においては、アプリケーション及びオペレーティング・システムは、メモリ７１２内又は例えばインターネットを介してプロセッサ２００Ａに連結されるメモリ内に含まれる。ハードウェア構成７１０は、限定ではないが、Ｉ／Ｏインターフェース７１４、表示部７１６、キーボード７１５及びマウス７１８を含む。
【００６３】
しかし、別の実施形態においては、システム７１０は、クライアント・サーバ・コンピュータ・システム７００の一部である。本実施形態においては、サーバ・システム７８０は、ハイパーバイザ３２０Ｂをもつプロセッサ２００Ｂ、並びに、表示部７８１、メモリ７８４及びネットワーク・インターフェース７８３を含む。従って、システム７８０はロールバックの方法６００を含む。１つの実施形態においては、システム７８０は、基本的には、ハイパーバイザ３２０Ｂをもつプロセッサ２００Ｂである。
【００６４】
クライアント・サーバ・コンピュータ・システム７００又は独立型コンピュータ・システム７１０のいずれにおいても、メモリ７１２は、典型的には、主メモリ等の揮発性メモリ及びハード・ディスク・ドライブ等の不揮発性メモリの両方を含む。図７ではメモリ７１２は統一された構造として示されるが、メモリ７１２内の全てのメモリが同じ物理的場所に存在することを要すると解釈するべきではない。メモリ７１２の全て又は一部は、プロセッサ２００Ａと異なる物理的場所に存在することができる。
【００６５】
具体的には、１つの実施形態においては、プロセッサ２００及びハイパーバイザ３２０を、携帯用コンピュータ７６０、ワークステーション７１０、サーバ・コンピュータ７８０又は任意の他の装置７２０、７４０、７５０に含むことができる。同様に、別の実施形態においては、システム７００を、多数の異なるコンピュータ、無線機器、サーバ・コンピュータ、又は、ここで説明される動作を実行するように相互接続されたこれらの装置の任意的な望ましい組み合わせによって構成することができる。
【００６６】
ここでは、コンピュータ・プログラム製品は、コンピュータ可読コードを格納するように又は移送するように構成された媒体、又は方法のためのコンピュータ可読コードが格納される媒体を含む。コンピュータ・プログラム製品の幾つかの例は、ＣＤ−ＲＯＭディスク、ＲＯＭカード、フロッピー（登録商標）・ディスク、磁気テープ、コンピュータ・ハード・ドライブ、ネットワーク上のサーバ、及びネットワーク上で伝達されるコンピュータ可読プログラム・コードを表わす信号である。
【００６７】
ここでは、コンピュータ・メモリは、揮発性メモリ、不揮発性メモリ、又は２つの組み合わせを指す。同様に、コンピュータ入力ユニット７１５及び表示部ユニット７１６は、それぞれ、前述の装置のうちの任意の１つ又は同等の装置に、ここで説明される情報を入力するために、及びここで説明される情報を表示するために必要な機能性を提供する機構を指す。
【００６８】
本開示を考慮すると、ロールバック機能は、オペレーティング・システム及びユーザが関心を持つコンピュータ・プログラミング言語を用いる、プロセッサとＬ２キャッシュの両方を有するチップを含む多種多様なコンピュータ・システム構成に実装することができる。
【００６９】
システムのロールバックのためのレベル２キャッシュのロギング方法が、その１つの実施形態に関連して説明されたが、当業者であれば、本考案の精神及び範囲から逸脱することなく、変更を本実施形態に行うことができることを容易に認識する。
【００７０】
従来技術のシステム８００においては、典型的には、プロセッサ８１０はマザーボード８５０上の１つのチップであり、レベル２（Ｌ２）キャッシュ８２０はマザーボード８５０上の別のチップであった。メモリの順序付け又はコヒーレンシー問題をデバッグするために、信号分析器８３０が、プロセッサ８１０をレベル２キャッシュ８２０に接続させるバス８４０に接続されていた。信号分析器８３０は、例えばＬ２キャッシュ８２０内の情報のような、コヒーレンシー及び順序付けを分析するためのデータを得るために用いられた。
【００７１】
バス８４０上の情報を分析するための技術は周知である。残念なことに、システムがより統合されるようになると、システムをデバッグすることがより複雑になる。例えば、Ｌ２キャッシュ８２０がプロセッサ８１０と同じチップに移動された場合には、バス８４０はチップの内部にあることになる。その結果として、バス内で特定の配線又は複数の特定の配線を見つけることは困難であるので信号分析器８３０は役に立たなくなり、たとえ従来技術の信号分析器を配線に取付けるように配線を配置できたとしても実用的ではない。さらに、バスのクロック速度は、信号分析器８３０の使用を実用的ではないものにする。
【００７２】
また、統合化が進むと、全ての内部機能を１つ又はそれ以上のピンに送るのに利用できるピンが十分ではないということも周知である。従って、Ｌ２キャッシュがプロセッサと同じチップ内に含まれる時に、Ｌ２キャッシュ内に格納される情報の順序付け及びコヒーレンシーを検証するためには新しい技術が必要とされる。
【００７３】
本考案の別の実施形態においては、レベル２（Ｌ２）キャッシュ２３０内に格納される情報と関連する問題の診断及びデバッグのために、新規性のある方法が用いられる。デバッグ・モードの動作においては、データが、Ｌ２キャッシュ２３０の少なくとも１つのバンクにキャッシュされ、Ｌ２キャッシュ２３０に向けられたコマンドが、レベル１（Ｌ１）キャッシュ内のデータの状況に関わる情報と共に、Ｌ２キャッシュ２３０の別のバンクに格納される。
【００７４】
本実施形態においては、コマンド・シーケンスを格納するＬ２キャッシュのバンクは、先入れ先出しメモリとして動作される。１つの実施形態においては、再生のためにＬ２キャッシュ内に格納されるコマンドの数は、少なくとも従来技術のＬ２キャッシュのデバッグ方法で利用できるコマンドの数と同等である。
【００７５】
Ｌ２キャッシュ２３０のためのアドレスの例９００が、図９に示される。アドレス９００は４７ビットを有する。６つのビット０乃至５は、ライン・オフセット・ビット９０１である。２つのビット６、７はバンク選択ビット９０２である。１０のビット８乃至１７はインデックス・ビット９０３であり、２９のビット１８乃至４６はタグ・ビット９０４である。
【００７６】
しかし、以下でより完全に説明されるように、Ｌ２キャッシュ２３０内のタグは、２９ビットではなく３０ビットのサイズであり、即ち本考案のデバッグ処理を実装するためには、１つの付加的なタグ・ビットが必要である。例えば、Ｌ２キャッシュ２３０内に格納されるタグは、少なくとも、Ｌ２キャッシュ２３０が、ＦＩＦＯメモリとして動作するように構成された少なくとも１つのバンクを有する時は、ビット１８乃至４６及びビット７である。
【００７７】
１つの実施形態においては、各々のデータ・キャッシュは、３２Ｋバイトのサイズで、４ウェイ・セット・アソシエイティブであり、かつライト・スルー（書込み割り当てがない）である。データが、レベル１データ・キャッシュの１つに書込まれた時、例えば格納された時には、データはクロスバー切替器２２０を通ってＬ２キャッシュ２３０に渡され、Ｌ２キャッシュ２３０のバンクのうちの１つに書込まれる。データと関連付けられるビットは、データがデータ・キャッシュ内にあることを示すように設定される。この余分なビットは、キャッシュをデバッグする際に用いられて、例えば、そのビットは、データがレベル１データ・キャッシュ内にあることを示すようにアサートされているが、その一方で、データに対する格納がＬ２キャッシュに渡されていたためレベル１のキャッシュがそのデータを得ることができなかったかどうか、などを判断する。
【００７８】
１つの実施形態においては、デバッグ・モードの動作に入るために、ハイパーバイザ３２０は、キャッシュ・デバッグ有効化動作１０１０を開始し、デバック・モードの動作のためにクロスバー切替器２２０及びＬ２キャッシュ２３０を構成する。このキャッシュ・デバッグ有効化動作１０１０の実施形態においては、ハイパーバイザ３２０は、動作１０１０の切替器構成動作１００１において、例えば第１レジスタのようなクロスバー切替器のデバッグ構成レジスタ３８０に書込む。クロスバー切替器のデバッグ構成レジスタ３８０への書込みは、実行のためにコマンドをバンク２３０＿０及び２３０＿１に向けるように、かつコマンド自体をバンク２３０＿２及び２３０＿３に配信するようにクロスバー切替器２２０を構成する。切替器２２０は、例えば、実行のためにバンク２３０＿０に向けられたコマンドがバンク２３０＿２に配信され、実行のためにバンク２３０＿１に向けられたコマンドがバンク２３０＿３に配信されるように構成される。
【００７９】
動作１００１が完了した後で、ハイパーバイザ３２０は、ＦＩＦＯレジスタ３７０としてのＬ２キャッシュの構成バンクに書込む。ＦＩＦＯレジスタ３７０としてのＬ２キャッシュの構成バンクへの書込みは、Ｌ２キャッシュを、バンク２３０＿０及び２３０＿１は通常の方法で機能するように構成する。しかし、バンク２３０＿２及び２３０＿３は、キャッシュとして機能するように構成されるのではなく、代わりに例えばＦＩＦＯのような先入れ先出しメモリ構造として機能するように構成される。従って、バンク２３０＿２及び２３０＿３に渡される情報はコマンドとして処理されるのではなく、代わりに、ハイパーバイザ３２０がレジスタ３７０に書込んだ後で、ＦＩＦＯ内の次の利用できる格納場所に取得され格納される。１つの実施形態においては、各々のＦＩＦＯは、ＦＩＦＯ内の特定の割合の格納空間が使用された時に示す最高水準ポインタを有する。
【００８０】
通常の動作においては、インデックス、バンク及びライン・オフセットは、特定の格納場所においては黙示的なものであるので、Ｌ２キャッシュ２３０のバンク内に各々のデータ項目を独自に配置するのに２９ビットのタグで十分である。しかし、キャッシュ・デバッグ・モードでは、１つのバンク選択ビットが用いられ、バンクのうち２つが不可視となる。マイクロプロセッサはキャッシュに対するデバッグ・モード動作について認識しないので、マイクロプロセッサは、Ｌ２キャッシュ２３０の４つのバンク全てが利用可能であるかのように機能する。
【００８１】
デバッグにおいては、コマンドが２つの不可視バンクに向けられたものかどうかを判断するために、付加的なタグ・ビットが、キャッシュとして機能する２つのバンク内に格納される。従って、このモードにおいては、キャッシュ・タグは、アドレス・タグ９０４に、例えばビット７（図９）のような１つのバンク選択ビットを加えたものである。具体的には、デバッグ・モードにおいては、キャッシュ・タグは、例えばタグの余分なビットが用いられるというように、アドレス・タグと少なくとも１個のバンク選択ビットの組み合わせである。
【００８２】
キャッシュ・デバッグの有効化動作１０１０の完了に続いて、キャッシュ情報のロギング１０２０で、データをバンク２３０＿０及び２３０＿１にキャッシュし、バンク２３０＿２及び２３０＿３内のデータに関連するコマンドをそれぞれロギングする。さらに、バンク２３０＿２及び２３０＿３内のデータは、各々のデータ入力に関してＬ１キャッシュ内のヒット／ミス状況を含む。
【００８３】
本実施形態においては、各々のコマンドは１６バイトであるので、各々の５１２Ｋバイトのバンクは３２Ｋコマンドを保持する。３２Ｋコマンドの後で、ＦＩＦＯは、格納されたコマンドに上書きを始める。
【００８４】
従って、システム３００はエラーが発生するまでデバッグ・モードで続行し、次に、エラー検査動作１０３０が、キャッシュ・バンク読出し動作１０４０に移行する。動作の際、キャッシュ内のデータ及び最大６４Ｋ（各々のバンクから３２Ｋ）までのコマンドの両方を、Ｌ２キャッシュ２３０から読出すことができる。情報は、Ｌ１キャッシュ内のデータの状況を含む。従って、エラーの時間におけるＬ１キャッシュ及びＬ２キャッシュの両方の状態を判断することが可能である。これが、Ｌ１キャッシュに関するデータを得ることができなかった従来技術のシステムに対する進歩である。
【００８５】
１つの実施形態においては、ハイパーバイザ３２０Ｃをもつプロセッサ２００Ｃは、パーソナル・コンピュータ又はワークステーションのようなハードウェア構成１１１０に含まれて、構成１１１０はデバッグ方法１０００を含むようになっている。本実施形態においては、アプリケーション及びオペレーティング・システムは、メモリ１１１２又は例えばインターネットを介してプロセッサ２００Ｃに連結されるメモリ内に含まれる。ハードウェア構成１１１０は、限定的ではないが、Ｉ／Ｏインターフェース１１１４、表示部１１１６、キーボード１１１５及びマウス１１１８を含む。
【００８６】
しかし、別の実施形態においては、システム１１１０は、クライアント・サーバ・コンピュータ・システム１１００の一部である。本実施形態においては、サーバ・システム１１８０は、ハイパーバイザ３２０Ｄをもつプロセッサ２００Ｄ並びに表示部１１８１、メモリ１１８４及びネットワーク・インターフェース１１８３を含む。従って、システム１１８０はデバッグの方法１０００を含む。１つの実施形態においては、システム１１８０は、基本的にはハイパーバイザ３２０Ｄをもつプロセッサ２００Ｄである。
【００８７】
クライアント・サーバ・コンピュータ・システム１１００又は独立型コンピュータ・システム１１１０のいずれにおいても、メモリ１１１２は、典型的には、主メモリ等の揮発性メモリ及びハード・ディスク・ドライブ等の不揮発性メモリの両方を含む。図１１では、メモリ１１１２は統一された構造として示されるが、これは、メモリ１１１２内の全てのメモリが同じ物理的場所に存在することを要すると解釈するべきではない。メモリ１１１２の全て又は一部は、プロセッサ２００Ａと異なる物理的場所に存在することができる。
【００８８】
具体的には、１つの実施形態においては、プロセッサ２００及びハイパーバイザ３２０を、携帯用コンピュータ１１６０、ワークステーション１１１０、サーバ・コンピュータ１１８０、又は任意の他の装置１１２０、１１４０、１１５０内に含むことができる。同様に、別の実施形態においては、システム１１００を、複数の異なるコンピュータ、無線機器、サーバ・コンピュータ、又はここで説明されるように動作を実行するように相互接続されるこれらの装置の任意の望ましい組み合わせによって構成することができる。
【００８９】
ここでは、コンピュータ・メモリは、揮発性メモリ、不揮発性メモリ、又は２つの組み合わせを指す。同様に、コンピュータ入力ユニット１１１５及び表示部ユニット１１１６は、それぞれ、前述の装置のうちの任意の１つ又は同等の装置に、ここで説明される情報を入力するために、及びここで説明される情報を表示するために必要な機能を提供する機構を指す。
【００９０】
本開示を考慮すると、キャッシュ・デバッグ機能を、オペレーティング・システム及びユーザが関心を持つコンピュータ・プログラミング言語を用いるプロセッサとＬ２キャッシュの両方を有するチップを含む、多種多様なコンピュータ・システム構成体に実装することができる。
【００９１】
キャッシュ・デバッグの方法が、その１つの実施形態に関連して上に説明されてきたが、当業者であれば、本考案の精神及び範囲から逸脱することなく、変更をこの実施形態に行うことができることを容易に認識するであろう。
【図面の簡単な説明】
【００９２】
【図１】ロックステップ方式で動作するプロセッサを含み、かつ、外部クロック及び内部クロックを使用する従来技術のシステムのブロック図である。
【図２】複数のプロセッサ・コアと、クロスバー切替器と、複数のバンクをチップ上に含み、レベル２キャッシュにおけるロギングによりロックステップ方式の動作を支持するレベル２キャッシュとを含む、本考案の１つの実施形態によるプロセッサの高レベル図である。
【図３】複数のアプリケーションと、複数のオペレーティング・システムと、ハイパーバイザと、レベル２キャッシュにおけるロギングによりロックステップ方式の動作を支持するレベル２キャッシュとを含む、本考案の１つの実施形態によるシステムの図である。
【図４Ａ】本考案の１つの実施形態による、新しいデータがレベル２キャッシュのバンク内にキャッシュされた時のＥＣＣ更新の図である。
【図４Ｂ】本考案の１つの実施形態による、新しいデータがレベル２キャッシュのバンク内にキャッシュされた時のＥＣＣ更新の図である。
【図４Ｃ】本考案の１つの実施形態による、新しいデータがレベル２キャッシュのバンク内にキャッシュされた時のＥＣＣ更新の図である。
【図５】本考案の１つの実施形態による、図２及び図３のレベル２キャッシュのためのアドレスの図である。
【図６】本考案の１つの実施形態による、レベル２キャッシュのバンクにレベル２キャッシュのトランザクションをロギングし、ロギングされたデータをシステムのロールバックに用いる方法の１つの実施形態に関する処理フロー図である。
【図７】本考案の種々の実施形態による、レベル２キャッシュのバンクにレベル２キャッシュのトランザクションをロギングし、ロギングされたデータをシステムのロールバックに用いる方法を使用するシステムの図である。
【図８】レベル２キャッシュをデバッグする際に用いられる信号分析器を含む、従来技術のシステムのブロック図である。
【図９】本考案の１つの実施形態による、図２及び図３のレベル２キャッシュのためのアドレスの図である。
【図１０】本考案の１つの実施形態による、レベル２キャッシュのバンクにレベル２キャッシュのトランザクションをロギングし、診断及びデバッグ動作のためにロギングされたトランザクションを用いる方法の１つの実施形態に関する処理フロー図である。
【図１１】本考案の種々の実施形態による、レベル２キャッシュのバンクにレベル２キャッシュのトランザクションをロギングし、診断及びデバッグ動作のためにロギングされたトランザクションを用いる方法を使用するシステムの図である。
【図１】
0003139964.tif 000003
【図２】
0003139964.tif 000004
【図３】
0003139964.tif 000005
【図４Ａ】
0003139964.tif 000006
【図４Ｂ】
0003139964.tif 000007
【図４Ｃ】
0003139964.tif 000008
【図５】
0003139964.tif 000009
【図６】
0003139964.tif 000010
【図７】
0003139964.tif 000011
【図８】
0003139964.tif 000012
【図９】
0003139964.tif 000013
【図１０】
0003139964.tif 000014
【図１１】
0003139964.tif 000015
【手続補正書】
【提出日】平成19年12月28日(2007.12.28)
【手続補正１】
【補正対象書類名】実用新案登録請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【実用新案登録請求の範囲】
【請求項１】
複数のプロセッサ・コアと、
複数のバンク、及び、
ＦＩＦＯレジスタとしての構成バンク、
を含むレベル２キャッシュと、
前記複数のプロセッサ・コア及び前記レベル２キャッシュの前記複数のバンクに接続されたクロスバー切替器と、
を含み、前記クロスバー切替器が、ロックステップ方式のロールバック構成レジスタを含む、
ことを特徴とするプロセッサ。
【請求項２】
前記クロスバー切替器がデバッグ構成レジスタをさらに含むことを特徴とする請求項１に記載のプロセッサ。
【請求項３】
前記レベル２キャッシュのためのアドレスレジスタをさらに含むことを特徴とする請求項１に記載のプロセッサ。
【請求項４】
前記アドレスレジスタは、
複数のライン・オフセット・ビット、
複数のバンク選択ビット、
複数のインデックス・ビット、及び
複数のタグ・ビット、を含む請求項３に記載のプロセッサ。
【請求項５】
前記複数のタグ・ビットは、
ロールバック実装ビットを含む請求項４に記載のプロセッサ。
【請求項６】
複数のプロセッサ・コアと、
複数のバンク、及び、
ＦＩＦＯレジスタとしての構成バンク、
を含むレベル２キャッシュと、
ロックステップ方式のロールバック構成レジスタを含む、
前記複数のプロセッサ・コア及び前記レベル２キャッシュの前記複数のバンクに接続されたクロスバー切替器と、
を含むプロセッサと、
前記プロセッサに連結されたメモリと、
を含むことを特徴とするシステム。
【請求項７】
前記システムが独立型コンピュータ・システムを含むことを特徴とする請求項６に記載のシステム。
【請求項８】
前記システムがクライアント・サーバ・システムを含むことを特徴とする請求項６に記載のシステム。
【請求項９】
前記クロスバー切替器がデバッグ構成レジスタをさらに含むことを特徴とする請求項６に記載のシステム。
【請求項１０】
前記レベル２キャッシュのためのアドレスレジスタをさらに含むことを特徴とする請求項６に記載のシステム。
【請求項１１】
前記アドレスレジスタは、
複数のライン・オフセット・ビット、
複数のバンク選択ビット、
複数のインデックス・ビット、及び
複数のタグ・ビット、を含む請求項１０に記載のシステム。
【請求項１２】
前記複数のタグ・ビットは、
ロールバック実装ビットを含む請求項１１に記載のシステム。