(57)【特許請求の範囲】
【請求項１】
命令を実行するための方法であって、
少なくとも第１命令および第２命令を含む命令グループをカスケード型遅延実行パイプラインにおいて実行するステップであって、第１パイプラインにおける前記第１命令の実行が第２パイプラインにおける前記第２命令の実行に関して遅延する、前記実行するステップと、
各パイプラインから１つまたは複数のメモリ・ロケーションへの実行結果の書き戻しを１つまたは複数のクロック・サイクルだけ遅延させるステップと、
実行された命令の実行結果の書き戻し前にパイプラインにおいてエラーが検出された場合、前記実行結果の書き戻しと、前記実行された命令よりも後のプログラム順における後続の命令と、を阻止するステップと、
前記実行された命令および後続の命令の実行を再開するステップとを含み、
前記遅延させるステップは、前記実行結果を遅延バッファに、１つまたは複数のクロック・サイクルの間、格納するステップを含み、
前記阻止するステップは、無効化信号を１つまたは複数のレジスタ・ファイルにおけるターゲット・レジスタに送るステップを含み、前記無効化信号は、前記ターゲット・レジスタが前記実行結果をラッチすることを阻止するように構成される、
方法。
【請求項２】
前記パイプラインにおけるエラーの検出は、前記パイプラインにおいて処理されるパリティ・ビット関連のデータをチェックすることを含む、請求項１に記載の方法。
【請求項３】
前記パイプラインにおけるエラーの検出は、前記パイプラインにおいて処理されるエラー訂正コード（ＥＣＣ）関連のデータをチェックすることを含む、請求項１に記載の方法。
【請求項４】
１つまたは複数のレジスタ・ファイルであって、該レジスタ・ファイルにおける各レジスタが１つまたは複数のエラー検出ビットを含む、前記レジスタ・ファイルと、
複数の実行パイプラインを含むプロセッサ・コアと、
を含み、
少なくとも第１命令および第２命令を含む命令グループを、前記複数の実行パイプラインにおいてカスケード型遅延態様で実行し、第１パイプラインにおける前記第１命令の実行が第２パイプラインにおける前記第２命令に関して遅延し、
実行された命令の実行結果の書き戻し前にパイプラインにおいてエラーが検出された場合、前記実行結果の書き戻しと、前記実行された命令よりも後のプログラム順における後続の命令と、を阻止し、前記実行された命令および後続の命令の実行を再開するように構成され、
前記複数の実行パイプラインの各々は、各パイプラインから前記１つまたは複数のレジスタ・ファイルへの書き戻しを１つまたは複数のクロック・サイクルだけ遅延させるように構成され、
前記複数の実行パイプラインの各々は、前記実行結果を遅延バッファに、１つまたは複数のクロック・サイクルの間、格納することによって１つまたは複数のレジスタ・ファイルへの実行結果の書き戻しを遅延させるように構成され、
各パイプラインは、前記１つまたは複数のレジスタ・ファイルにおけるターゲット・レジスタに無効化信号を送ることによって実行結果の書き戻しを阻止するように構成され、
前記無効化信号は、前記レジスタが前記実行結果をラッチすることを阻止するように構成される、
プロセッサ。
【請求項５】
前記１つまたは複数のエラー検出ビットは、前記レジスタの内容におけるエラーを検出するための１つまたは複数のパリティ・ビットを含む、請求項４に記載のプロセッサ。
【請求項６】
前記レジスタ・ファイルの少なくとも１つの冗長コピーを格納するための冗長レジスタ・ファイルを更に含む、請求項４に記載のプロセッサ。
【請求項７】
前記１つまたは複数のエラー検出ビットは、前記レジスタの内容におけるエラーを検出するための１つまたは複数のエラー訂正コード（ＥＣＣ）ビットを含む、請求項４に記載のプロセッサ。
【請求項８】
前記複数の実行パイプラインの各々は、前記１つまたは複数のレジスタ・ファイルにおける前記１つまたは複数のレジスタから受け取ったデータに関連する前記１つまたは複数のエラー検出ビットをチェックすることによってそれぞれのパイプラインにおけるエラーを検出するように構成される、請求項４に記載のプロセッサ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般的には、パイプライン・データ処理システムに関し、詳しく云えば、データのパイプライン化された実行中のエラー検出およびエラーからの回復に関するものである。
【背景技術】
【０００２】
現在のコンピュータ・システムは、一般に、コンピュータ・システムにおいて情報を処理するために使用し得るプロセッサを含む幾つもの集積回路（ＩＣ）を内蔵している。プロセッサによって処理されるデータは、プロセッサによって実行されるコンピュータ命令と、コンピュータ命令を使用してプロセッサにより操作されるデータとを含み得る。コンピュータ命令およびデータは、一般に、コンピュータ・システムにおけるメイン・メモリに格納される。
【０００３】
プロセッサは、一般に、一連の小さいステップで各命令を実行することによって命令を処理する。場合によっては、プロセッサによって処理される命令の数を増加させるために（従って、プロセッサの速度を高めるために）、プロセッサがパイプライン化されることがある。パイプライン化はプロセッサにおいて個別のステージを設けることを指し、その場合、各ステージが、命令を実行するために必要な１つまたは複数の小さなステップを遂行する。場合によっては、パイプラインは、（他の回路に加えて）、プロセッサ・コアと呼ばれるプロセッサの一部分に設けられることもある。いくつかのプロセッサが複数のプロセッサ・コアを有することもある。
【０００４】
パイプラインにおいて命令を実行する例として、第１命令が受け取られると、第１パイプライン・ステージがその命令の小さな部分を処理し得る。第１パイプライン・ステージが命令の小さな部分の処理を終了したとき、第２パイプライン・ステージが、第１命令における別の小さな部分の処理を開始し、一方、第１パイプライン・ステージは、第２命令の小さな部分を受け取り、それを処理し始める。従って、プロセッサは２つまたはそれ以上の命令を同時に処理することが可能である。
【０００５】
過去数十年にわたって、集積回路におけるトランジスタの速度および密度が、指数関数的成長を予測するムーアの法則に従って増加し続けた。しかし、現代のプロセッサにおけるフィーチャのサイズの絶え間ない縮小、供給電圧の減少、およびクロック速度の増加は、プロセッサが益々エラーを生じ易くなるという結果をもたらした。例えば、プロセッサ間通信におけるエラーの可能性は大幅に増加しており、従って、エラー検出および回復機構が必要となっている。
【０００６】
更に、フィーチャのサイズが縮小するに従って、ソフト・エラーに遭遇する可能性も増加している。ソフト・エラーは、例えば、メモリ装置またはメモリ型の装置に衝突してメモリの内容を変更する荷電粒子のような、外部要素によって引き起こされることがある。例えば、宇宙線は、レジスタに衝突し、１つまたは複数のビットをフリップすることによって、そのレジスタの内容を変更してしまうことがある。
【０００７】
ソフト・エラーによって変更された重要なレジスタを参照する命令が実行されるとき、その命令の実行は潜在的には壊滅的な結果を生じさせ得る。例えば、ソフト・エラーによって変更されたレジスタを参照する命令を実行することは、コンピュータ・システムにおいて意図されてない影響を生じ、或いは、１つまたは複数の別の重要なレジスタを誤って変更させ、それによって、エラーを伝播し、潜在的にはシステム障害を生じさせ得る。従って、レジスタにおけるエラーは検知されなければならず、他のレジスタへのエラーの伝播は回避されなければならない。
【０００８】
更に、種々の実行ユニットにおいて順不同で実行される命令間に従属性があるとき、「不正確（imprecise）例外」が生じることがある。例えば、順不同の実行は、１つまたは複数のレジスタにおける値が変更された後に別の命令がそのレジスタをアクセスし得るようになると、それによって、予測し得ない結果および潜在的には壊滅的な影響を生じさせ得る。１つまたは複数のレジスタの値を変更する命令が上述のようにソフト・エラー状態に関連している場合、この問題は更に悪化することがある。更に重要なこととして、順不同の実行は、命令が不具合を生じた期間における命令および／またはサイクルを正確に決定する能力を欠き、それによって、システム回復を不可能にするという結果を生じることがある。
【０００９】
誤ってレジスタ値を変更することを未然に防ぐための１つの解決方法は、回復ユニットを実装することであろう。回復ユニットは、パイプラインにおいてアクセスされたレジスタの内容の状態を保存するように構成され得る。従って、レジスタに対する誤った更新が検知される場合、回復ユニットは、事前に保存された誤りのない状態にシステム状態を戻すことができる。例えば、回復ユニットは、レジスタの内容を前の誤りのない値に復元することができる。
【００１０】
しかし、回復ユニットは非常に大きいものであり、プロセッサにおけるかなりの量のスペースを消費する。場合によっては、回復ユニットは、実行ユニット、例えば、浮動小数点ユニットと同じくらい大きいことがある。スペースは、それが利用可能なものである場合、プロセッサの処理能力を増すために使用することができるので、プロセッサにおけるそのようなスペースの消費は非効率的である。
【００１１】
従って、レジスタ内容を元のままに保存するための且つエラー状態から回復するための、改良された方法およびシステムに対する要求が存在する。
【発明の開示】
【発明が解決しようとする課題】
【００１２】
本発明の目的は、パイプライン・データ処理システム、特にデータをパイプライン化された実行中のエラー検出およびエラーからの回復を行う方法およびシステムを提供することにある。
【課題を解決するための手段】
【００１３】
本発明の一実施例は、命令を実行するための方法を提供する。その方法は、一般に、少なくとも第１命令および第２命令を含む命令グループをカスケード遅延実行パイプラインにおいて実行するステップを含む。そのステップでは、第１パイプラインにおける第１命令の実行が第２パイプラインにおける第２命令の実行に関して遅延する。その方法は、更に、実行された命令の実行結果の書き戻し前にパイプラインにおいてエラーが検出された場合、その実行結果の書き戻しと、実行された命令よりも後のプログラム順における後続の命令とを阻止するステップと、実行された命令および後続の命令の実行を再開するステップとを含む。
【００１４】
本発明のもう１つの実施例は、命令を実行するための別の方法を提供する。その方法は、一般に、少なくとも第１命令および第２命令を含む命令グループをカスケード型遅延実行パイプラインにおいて実行するステップを含み、そのステップでは、第１パイプラインにおける第１命令の実行が第２パイプラインにおける第２命令の実行に関して遅延する。その方法は、更に、各パイプラインから１つまたは複数のメモリ・ロケーションへの実行結果の書き戻しを１つまたは複数のクロック・サイクルだけ遅延させるステップと、実行された命令の実行結果の書き戻し前にパイプラインにおいてエラーが検出された場合、その実行結果の書き戻しと、実行された命令よりも後のプログラム順における後続の命令とを阻止するステップと、実行された命令および後続の命令の実行を再開するステップと、を含む。
【００１５】
本発明の更にもう１つの実施例は、一般的に言えば、１つまたは複数のレジスタ・ファイルを含むプロセッサを提供する。そのレジスタ・ファイルにおける各レジスタが１つまたは複数のエラー検出ビットを含む。プロセッサは、複数の実行パイプラインを含むプロセッサ・コアを含む。そのプロセッサは、一般に、少なくとも第１命令および第２命令を含む命令グループを、複数の実行パイプラインにおいてカスケード型遅延態様で実行するように構成される。第１パイプラインにおける第１命令の実行が第２パイプラインにおける第２命令に関して遅延し、実行された命令の実行結果の書き戻し前にパイプラインにおいてエラーが検出される場合、実行結果の書き戻しと、実行された命令よりも後のプログラム順における後続の命令を阻止し、実行された命令および後続の命令の実行を再開する。
【発明を実施するための最良の形態】
【００１６】
本発明は、一般的には、パイプライン・データ処理システムに関し、更に詳しく云えば、データのパイプライン化された実行中のエラー検出およびエラーからの回復に関するものである。本発明の実施例は、正確なマシン状態を維持するためにカスケード型遅延実行パイプラインを実装する。実施例によっては、エラー検出および回復を容易にするために、パイプラインの書き戻しステージの前に１クロック・サイクルまたは複数クロック・サイクルの遅延を挿入することが可能である。正確なマシン状態が維持されるので、エラー検出および回復機構をシステムのレジスタ・ファイルに直接組み込むことも可能である。エラーが検出された場合、エラーに関連した命令およびすべての後続の命令の実行を再開することも可能である。
【００１７】
以下で、本発明の実施例を参照する。しかし、本発明が特定の記述された実施例に限定されないことは当然である。代わりに、下記の特徴および要素のいずれの組み合わせも、それが種々の実施例に関連していても或いは関連していなくても、本発明を実装および実施することを意図するものである。更に、様々な実施例において、本発明は従来技術を越えた多くの利点をもたらす。しかし、本発明の実施例は他の可能な解決法、および／または、従来技術を越えた利点を得ることができるが、特定の利点が所与の実施例によって得られるか否かは本発明を限定するものではない。従って、下記の態様、特徴、実施例、および利点は単に例示的なものであり、「特許請求の範囲」において明示されたもののほかは本発明の要素または限定事項と考えるべきではない。同様に、「本発明」という参照は、本明細書において開示されたすべての発明の主題を概括化したものと解釈されるべきではなく、「特許請求の範囲」において明示されたもののほかは本発明の要素または限定事項であると考えるべきではない。
【００１８】
以下は、添付図面に示された本発明の実施例の詳細な説明である。実施例は単なる例であって、本発明を明瞭に伝え得る程度に詳細なものである。しかし、提示された詳細部分は、実施例の予測される変更を限定することを意図するものではなく、むしろ、これの意図するところは、「特許得請求の範囲」によって定義された本発明の趣旨および範囲内におけるすべての修正物、均等物、および代替物をカバーすることである。
【００１９】
本発明の実施例は、システム、例えば、コンピュータ・システムにおいて利用することが可能であり、そのシステムに関連して説明される。本明細書において使用されるように、システムは、プロセッサおよびキャッシュ・メモリを利用し、パーソナル・コンピュータ、インターネット装置、デジタル・メディア装置、ポータブル・デジタル・アシスタント（ＰＤＡ）、ポータブル音楽／ビデオ・プレーヤ、およびビデオゲーム・コンソールを含む、任意のシステムを含み得る。キャッシュ・メモリは、そのキャッシュ・メモリを利用するプロセッサと同じダイ上に設置されてもよいが、プロセッサおよびキャッシュ・メモリが異なるダイ（個別のモジュール内の個別のチップまたは単一のモジュール内の個別のチップ）の上に設置されてもよい。
【００２０】
Ａ．例示的システム
図１は、本発明の実施例による例示的なシステム１００を示す。図示のように、システム１００は、複数のプロセッサ１１０、システム・メモリ／Ｌ３キャッシュ／Ｌ４キャッシュ１１２、グラフィックス処理ユニット（ＧＰＵ）１０４、入出力（Ｉ／Ｏ）インターフェース１０６、および記憶装置１０８を含む。メモリ１１２は、プロセッサ１１０によって操作される必要なプログラミングおよびデータ構造を保持するに十分な大きさのランダム・アクセス・メモリであることが望ましい。メモリ１１２は、単一のエンティティとして示されているが、実際にはそれが複数のモジュールを含むこと、およびそれが多数のレベルで、例えば、Ｌ３キャッシュ、Ｌ４キャッシュ、およびメイン・メモリに存在し得ることは明らかであろう。
【００２１】
記憶装置１０８は、ダイレクト・アクセス記憶装置（ＤＡＳＤ）であることが望ましい。それは単一のユニットとして示されるが、固定ディスク・ドライブ、フロッピ・ディスク・ドライブ、テープ・ドライブ、取外し可能なメモリ・カード、或いは光学的記憶装置のような、固定記憶装置および／または取外し可能記憶装置の組合せあってもよい。メモリ１１２および記憶装置１０８は、複数の一次記憶装置および二次記憶装置にまたがる１つの仮想アドレス空間の一部であってもよい。
【００２２】
Ｉ／Ｏインターフェース１０６は、プロセッサ１１０と入出力装置との間のインターフェースを提供し得る。例示的な入力装置は、例えば、キーボード、キーパッド、ライト・ペン、タッチ・スクリーン、トラック・ボール、音声認識ユニット、オーディオ／ビデオ・プレーヤ等を含む。出力装置は、ユーザ、例えば、任意の一般的なディスプレイ・スクリーンに出力を供給するための任意の装置であってもよい。
【００２３】
グラフィックス処理ユニット（ＧＰＵ）１０４は、プロセッサ１１０から画像データ、例えば、二次元および三次元の画像データを受け取るように構成されてもよい。ＧＰＵ １０４は、画像データを操作し且つディスプレイ・スクリーン上にイメージを与えるために１つまたは複数の演算を遂行し得る。
【００２４】
プロセッサ１１０は複数のプロセッサ・コア１１４を含み得る。プロセッサ・コア１１４は、メモリ１１２から検索された命令のパイプライン化された実行を行うように構成されてもよい。各プロセッサ・コア１１４は関連するＬ１キャッシュ１１６を有してもよい。各Ｌ１キャッシュ１１６は、関連するプロセッサ・コア１１４に最も近接して設置された比較的小さなメモリ・キャッシュであってもよく、命令およびデータ（以下では、集合的にデータと呼ばれる）への高速アクセスを関連のプロセッサ１１４に与えるように構成されてもよい。
【００２５】
プロセッサ１１０は更に少なくとも１つのＬ２キャッシュ１１８を含んでもよい。Ｌ２キャッシュ１１８はＬ１キャッシュ１１４より相対的に大きくてもよい。各Ｌ２キャッシュ１１８は１つまたは複数のＬ１キャッシュに関連付けられてもよく、関連付けられた１つまたは複数のＬ１キャッシュにデータを供給するように構成されてもよい。例えば、プロセッサ・コア１１４は、その関連するＬ１キャッシュに含まれていないデータを要求することがある。従って、プロセッサ・コア１１４によって要求されたデータは、Ｌ２キャッシュ１１８から検索され、プロセッサ・コア１１４に関連したＬ１キャッシュ１１６に保存される。本発明の一実施例では、Ｌ１キャッシュ１１６およびＬ２キャッシュ１１８はＳＲＡＭベースの装置であってもよい。しかし、Ｌ１キャッシュ１１６およびＬ２キャッシュ１１８が他の任意のタイプのメモリ、例えば、ＤＲＡＭであってもよいということは当業者には明らかであろう。
【００２６】
キャッシュ・ミスがＬ２キャッシュ１１８において生じる場合、プロセッサ・コア１１０によって要求されたデータはＬ３キャッシュ１１２から検索されることが可能である。Ｌ３キャッシュ１１２はＬ１キャッシュ１１６およびＬ２キャッシュ１１８よりも相対的に大きくてもよい。単一のＬ３キャッシュ１１２が図１に示されているが、複数のＬ３キャッシュ１１２が実装されてもよいということは当業者には明らかであろう。各Ｌ３キャッシュ１１２が複数のＬ２キャッシュ１１８に関連付けられてもよく、関連するＬ２キャッシュ１１８とデータを交換するように構成されてもよい。１つまたは複数の高レベルのキャッシュ、例えば、Ｌ４キャッシュがシステム１００に含まれてもよいということも当業者には明らかであろう。各高レベルのキャッシュを、次のより低いレベルの１つまたは複数のキャッシュに関連付けることも可能である。
【００２７】
図２は、本発明の実施例によるプロセッサ１１０のコンポーネントに関する更に詳細な図である。 図２に示されたプロセッサ１１０のコンポーネントは単一の半導体チップにパッケージされてもよい。プロセッサ１１０は、命令ユニット２０１、プロセッサ・コア１１４、レベル１命令キャッシュ（Ｌ１ Ｉ-キャッシュ）２０５、レベル１データキャッシュ（Ｌ１ Ｄ-キャッシュ）２０６、レベル２（Ｌ２）キャッシュ１１８、およびメモリ・インターフェース（Ｉ／Ｆ）２０９を含み得る。Ｌ１ Ｉ-キャッシュ２０５およびＬ１ Ｄ-キャッシュ２０６は図１のＬ１キャッシュ１１６のコンポーネントであってもよい。
【００２８】
一般に、命令ユニット２０１は、Ｌ１ Ｉ-キャッシュ２０５から命令を得て、遂行すべきオペレーションを決定するために命令をデコードし、プログラム・フローを制御するためにブランチ条件を解くことが可能である。プロセッサ・コア１１４は、１つまたは複数のレジスタにおけるデータに関して演算および論理オペレーション遂行し得るし、データをＬ１Ｄ-キャッシュ２０６からロードまたはそこに格納し得る。 図２に示されるように、Ｌ２キャッシュ１１８はＬ１ Ｉ-キャッシュ２０５およびＬ１Ｄ-キャッシュ２０６に命令／データを供給し得る。Ｌ２キャッシュ１１８は外部メモリ・インターフェース２０９に接続されてもよく、その外部メモリ・インターフェース２０９は、一般にはメイン・メモリ１１２である（しかし、別のレベルのキャッシュであってもよい）外部メモリ・ロケーションからデータをロードしまたは外部メモリ・ロケーションにデータを格納し得る。
【００２９】
命令ユニット２０１は、ブランチ・ユニット２０２、命令デコード／ディスパッチ・ユニット２０３、および命令レジスタ／バッファ２０４を含み得る。Ｌ１ Ｉ-キャッシュ２０５からの命令は、実行に先立ってバッファ２０４にロードされることが可能である。ＣＰＵの設計によっては、複数のバッファ（例えば、一連の命令に対するものおよびブランチ先のロケーションに対する別のもの）が存在し得るし、それらのバッファの各々は複数の命令を含に得る。デコード／ディスパッチ・ユニット２０３は実行されるべき命令をそれらのバッファの１つから受け取り、遂行されるべきオペレーションまたはブランチ条件を決定するためにその命令をデコードし得る。ブランチ・ユニット２０２は、ブランチ条件を評価することによってプログラム・フローを制御し得るし、Ｌ１ Ｉ-キャッシュ２０５からバッファの内容を替え得る。
【００３０】
Ｌ１ Ｉ-キャッシュ２０５およびＬ１ Ｄ-キャッシュ２０６は、命令ユニットおよび実行ユニットにデータを供給する個別の命令キャッシュおよびデータ・キャッシュである。Ｌ２キャッシュは、命令および非命令データの両方を含む非弁別のキャッシュであってもよい。データは命令ユニットまたは実行ユニットによってＬ１キャッシュから取り出され或いはＬ１キャッシュに格納され得るし、データがＬ１キャッシュにおいて利用可能でない場合、データは、Ｌ２キャッシュ２０８からＬ１キャッシュにロードされ、しかる後、Ｌ１キャッシュから対応するユニットに転送され得る。一方、Ｌ２キャッシュ２０８は、データをメイン・メモリ１０２から取得し得る。プロセッサの設計によっては、Ｌ１キャッシュをバイパスして、Ｌ２キャッシュ１１８から実行レジスタまたは命令レジスタにデータをロードすることも可能であろう。メモリ・バス・インターフェース２０９は、メモリ・バス１０３を介したメイン・メモリまたはＩ／Ｏユニットへのデータの転送を処理し得る。
【００３１】
プロセッサ・コア１１４は、データを格納するための一組の汎用（ＧＰ）レジスタ２１２、および命令ユニット２０１によってデコードされた命令に応答して１つまたは複数のオペレーションを遂行するための処理サブユニット２１４を含み得る。処理サブユニット２１４は、一組のレジスタ（レジスタ・ファイル）２１５およびそれらのレジスタ２１５におけるデータを操作するための一組の並列パイプライン２１６を含み得る。処理サブユニット２１４およびそれのコンポーネントは更に詳しく後述される。
【００３２】
図２に示されたコンポーネントのほかに、プロセッサ・コア１１４は、更なる特殊目的レジスタおよびカウンタ、キャッシュもしくはメモリからデータをフェッチしまたはキャッシュもしくはメモリにデータを格納するためのロードおよびストア・ハードウェア、制御ハードウェア等を含み得る。
【００３３】
パイプライン２１６は、算術演算、例えば、浮動小数点計算、固定小数点計算を遂行するように構成された１つまたは複数の演算パイプラインを含み得る。パイプライン２１６は、一方ではＧＰレジスタ２１２またはレジスタ・ファイル２１５の間でデータを転送するための１つまたは複数のロード／ストア・パイプラインを含み、他方では、或る形式のメモリ（一般に、Ｌ１Ｄ-キャッシュまたはＬ２キャッシュ）を含み得る。命令フェッチおよびデコード・パイプラインのような更なるパイプラインがプロセッサ・コア１１４内に存在してもよい。
【００３４】
プロセッサ１１０の種々のコンポーネントを説明し、高レベルで示したが、好ましい実施例のプロセッサが、本発明の理解にとって必須ではない他の多くの図示されてないコンポーネントを含むということは当然である。例えば、種々の更なる特殊目的レジスタは一般的な設計では必要とされないであろう。更に、図２のプロセッサがプロセッサ・アーキテクチャーの単なる一例であること、プロセッサ１１０内のコンポーネントの数、タイプ、および配列において多くの変形があり得ること、図示されたコンポーネントのほかに図示されてないコンポーネントが存在し得ること、並びに図示されたすべてのコンポーネントがプロセッサ設計の中に存在するわけではないことは明らかであろう。例えば、バッファおよびキャッシュの数および構成は変わり得るし、実行ユニット・パイプラインの数および機能も変わり得るし、レジスタは種々のアレイおよびセットの形で構成されてもよく、専用の浮動小数点ハードウェアが存在してもよいし或いは存在しなくてもよいということ等も明らかであろう。
【００３５】
Ｂ．カスケード型遅延実行パイプライン
前述のように、１つの課題は、命令の実行がプロセッサ・コアの１つまたは複数のパイプラインにおいて順不同で、即ち、規定どおりでなく完了することがあるということである。従って、エラーがパイプラインにおいて生じる場合、エラーを生じさせた命令そのものおよびエラーが生じたクロック・サイクルそのものを決定することは不可能であるので、エラー状態からの回復が妨げられることがある。しかし、本発明の実施例は、カスケード型遅延実行パイプライン構成を実装することによって不正確例外の可能性を減らすことが可能である。
【００３６】
図３は、本発明の実施例によるカスケード構成における４つの例示的なパイプラインを示す。図３に示されたパイプラインは、図２のパイプライン２１６に対応し得る。図３には４個のパイプラインが示されているが、もっと少ない数の（２個以上の）パイプライン或いはもっと多い数の、例えば、８個のパイプラインをそのような構成において使用することも可能であるということは当業者には明らかであろう。更に、図３に示されたパイプラインの物理的なレイアウトは例示的なものであり、カスケード型遅延実行パイプライン・ユニットの実際の物理的レイアウトを必ずしも暗示するものではない。
【００３７】
１つの実施例では、図３に示されたカスケード型遅延実行パイプライン構成の各パイプライン（Ｐ０、Ｐ１、Ｐ２、Ｐ３）は実行ユニット３１０（３１００〜３１０３）を含み得る。実行ユニット３１０は、例えば、ＦＸユニット、ＬＳユニット、ＦＰユニット等であってもよい。実行ユニット３１０は、所与のパイプラインのための１つまたは複数の機能を遂行するいくつかのパイプライン・ステージを含み得る。例えば、実行ユニット３１０は命令のフェッチおよびデコードのすべてまたは一部を遂行し得る。実行ユニットによって遂行されるデコードは、複数のコア１１４の間で共用されるかまたは任意選択的に単一のコア１１４によって利用されるプリデコーダ／スケジューラと共用されてもよい。上述のように、実行ユニットは、レジスタ・ファイルからデータを読み取ること、アドレスを計算すること、整数の演算機能を（例えば、演算論理ユニット、即ち、ＡＬＵを使用して）遂行すること、浮動小数点演算機能を遂行すること、命令ブランチを実行すること、データ・アクセス機能（例えば、メモリからのロードおよびストア）を遂行すること、およびデータをレジスタに（例えば、レジスタ・ファイル２１２または２１４の１つに）戻して格納することも可能である。
【００３８】
１つの実施例では、各実行ユニット３１０が同じ機能を遂行し得る。任意選択的に、実行ユニット３１０（または実行ユニットの種々のグループ）が種々の機能セットを遂行し得る。更に、場合によっては、各コア１１４における実行ユニット３１０が、他のコアに設けられた実行ユニット３１０と同じであってもよく、或いは異なっていてもよい。例えば、或るコアでは、実行ユニット３１００および３１０２がロード／ストア機能および演算機能を遂行し得るし、一方、実行ユニット３１０１および３１０３は演算機能だけを遂行し得る。
【００３９】
１つの実施例では、図示のように、実行ユニット３１０における実行を、他の実行ユニット３１０に関して遅延して遂行することが可能である。図示の構成はカスケード型遅延構成とも呼ばれるが、図示のレイアウトは、必ずしも、実行ユニットの実際の物理的レイアウトを表しているわけではない。一般的な発生グループにおける命令（例えば、命令Ｉ０、Ｉ１、Ｉ２、およびＩ３）が、パイプラインＰ０、Ｐ１、Ｐ２、Ｐ３に並行して発生されてもよく、その場合、各命令は他の各命令に関して遅延態様で実行されてもよい。例えば、先ず命令Ｉ０がパイプラインＰ０に対する実行ユニット３１００において実行され、次に命令Ｉ１がパイプラインＰ１に対する実行ユニット３１０１において実行される、等々であってもよい。
【００４０】
そのような構成では、１つのグループ内の並行して実行される命令はプログラム順に発生することを必要としない（例えば、命令間に従属性が存在しないならば、命令はいずれのパイプラインに対して発生されてもよい）場合、前の例に関しては、すべての命令グループが所定の順序で実行されるものと仮定する。しかし、複数のグループにまたがった順不同の実行は他の実施例にとっても許容し得るものである。順不同の実行では、カスケード型遅延構成が依然として同様の利点を提供し得る。しかし、場合によっては、前のグループからの１つの命令がそのグループによって実行され得ないということが決定されることがある。例えば、第１グループは、Ｌ３がＬ１に従属し、Ｌ２がいずれにも依存しない場合、３つのロードを（Ｌ１、Ｌ２、およびＬ３のプログラム順で）行うことが可能である。この例では、Ｌ１およびＬ３が共通のグループで（Ｌ３がより遅延したパイプラインに対して発生されることにより）発生され得るし、一方、Ｌ２は後続の発生グループでは「順不同で」発生され得る。
【００４１】
１つの実施例では、プロセッサ・コア１１４に発生グループを発生すると、直ちに、実行ユニット３１００において命令Ｉ０が実行されてもよい。その後、プロセッサ・コア１１４に並行して発生された命令が互いに他方に関して遅延態様で実行されるように、命令Ｉ０が実行ユニット３１００における実行を終了した後、実行ユニット３１０１が命令Ｉ１を実行し始め得る。
【００４２】
１つの実施例では、或る実行ユニット３１０は互いに他方に関して遅延し得るが、別の実行ユニット３１０は互いに他方に関して遅延し得ない。第２命令の実行が第１命令の実行に従属する場合、第１命令から第２命令に結果を転送するために、転送パス３１２が使用され得る。図示の転送パス３１２は単に例示的なものであり、コア１１４は、実行ユニット３１０における種々のポイントから他の実行ユニット３１０への、または同じ実行ユニット３１０への転送パスを含み得る。
【００４３】
１つの実施例では、実行ユニット３１０によって実行されることになっていない命令（例えば、遅延している命令）は、遅延キュー３２０またはターゲット遅延キュー３３０に保持され得る。遅延キュー３２０は、実行ユニット３１０によって命令グループ内のまだ実行されていない命令を保持するために使用され得る。例えば、命令Ｉ０は実行ユニット３１００において実行されているが、命令Ｉ１、Ｉ２、およびＩ３は遅延キュー３２０に保持されることがある。一旦命令が遅延キュー３２０を通って移動すると、それらの命令は適切な実行ユニット３１０に対して発生され、実行され得る。ターゲット遅延キュー３３０は、実行ユニット３１０によって既に実行された命令の結果を保持するために使用されてもよい。場合によっては、ターゲット遅延キュー３３０における結果が処理のために実行ユニット３１０に転送されるかまたは適切な場合に無効にされることもある。同様に、環境によっては、後述のように、遅延キュー３２０における命令が無効にされることもある。
【００４４】
１つの実施例では、命令グループにおける命令の各々が遅延キュー３２０、実行ユニット３１０、およびターゲット遅延キュー３３０を通過した後、結果（例えば、データ、および後述の場合には命令）がレジスタ・ファイル或いはＬ１ Ｉ-キャッシュおよび／またはＤキャッシュのいずれかに書き戻され得る。場合によっては、書き戻し回路３３８が、レジスタの最近修正された値（ターゲット遅延キュー３３０の１つから受け取った値）を書き戻すためにおよび無効にされた結果を廃棄するために使用されてもよい。
【００４５】
パイプラインにおける命令のカスケード型遅延実行は、命令が正確な方法で実行されることを保証し得る。言い換えれば、プロセッサ・コアにおける種々の実行ユニットにまたがって、１つの命令グループの従属した命令の実行を互いに他方に関して遅延させることは、命令が順序どおりに実行を完了することを保証し、それによって、不正確例外の可能性を減らすことが可能である。エラー状態を引き起こす命令そのものが決定され得るので、不正確例外の発生を回避することは、パイプラインにおけるエラーからの回復を可能にし得る。エラー状態の検出およびエラーからの回復を更に詳しく後述する。
【００４６】
Ｃ．現場エラー検出および回復
図４は、本発明の実施例によるプロセッサ・コア１１４の更に詳細な図を示す。図４に示されるように、プロセッサ・コア１１４は複数のレジスタ・ファイルを含む。図３には、例えば、一対の汎用レジスタ・ファイル４１０、一対の特殊目的レジスタ・ファイル４２０、一対の浮動小数点レジスタ・ファイル４３０、および任意選択的なチェックポイント・レジスタ４４０が示される。汎用レジスタ・ファイル４１０は図２における汎用レジスタ２１２に対応し、浮動小数点レジスタ４２０およびチェックポイント・レジスタ４３０は図２のレジスタ・ファイル２１５に対応する。
【００４７】
汎用レジスタ・ファイル４１０は、プロセッサ・コア１１４によって処理される命令に関連したデータおよびアドレスの両方を格納するように構成し得る。特殊目的レジスタ４２０は、プログラム状態情報、例えば、プログラム・カウンタ、スタック・ポインタ、ステータス情報等を格納するように構成し得る。浮動小数点レジスタは、浮動小数点数を格納するように構成し得る。
【００４８】
チェックポイント・レジスタ４４０は、前のチェックポイントのシステム状態を格納し得る。例えば、チェックポイント・レジスタは、特定のプログラムのチェックポイント命令の完了の後に計算されたレジスタ値のコピーを維持し得る。従って、後続の命令においてエラーが遭遇する場合、プログラム状態はチェックポイント状態に復元し得るし、実行は、エラー状態から回復するためにチェックポイント命令から再開し得る。従って、前のチェックポイント状態から実行を再開することによって、エラー状態から回復するためのパフォーマンス・ペナルティを制限することが可能である。
【００４９】
図４には、パイプライン２１６の詳細図が示される。パイプライン２１６の各パイプラインＰ０〜Ｐ７は１つまたは複数の実行ユニットを含み得る。例えば、Ｐ０、Ｐ２、Ｐ４、およびＰ６は、それぞれ、固定小数点（ＦＸ）ユニットおよびロード／ストア（ＬＳ）ユニットを含み得る。パイプラインＰ０、Ｐ２、Ｐ４、およびＰ６におけるＦＸユニットは、データに関連したアドレス（例えば、キャッシュまたはメモリにおけるロケーションのアドレス）を計算するように構成し得る。ＬＳユニットは、キャッシュまたはメモリおけるロケーションからデータ読取るようにまたはそこにデータを書き込むように構成し得る。
【００５０】
１つの実施例では、パイプラインＰ１およびＰ７は、それぞれ、整数演算、論理演算、シフト、回転、比較、および同様のオペレーションを遂行するように構成された固定小数点（ＦＸ）ユニットを含み得る。 パイプラインＰ３およびＰ５は、浮動小数点（ＦＰ）ユニットを含むものとして示される。浮動小数点ユニットは、浮動小数点数に関して算術演算、例えば、加算、減算、乗算、除算、平方根計算等を行うことが可能である。
【００５１】
図４におけるパイプラインの構成が説明目的のためだけに提供されるということ、並びに、パイプラインおよびそれにおける実行ユニットの特定の構成が変更可能であるということは当業者には明らかであろう。例えば、固定小数点ユニット、浮動小数点ユニット、および／または、ベクトル・ユニットの任意の組合せを複数のパイプライン２１６の各々に設けることも可能である。更に、パイプラインにおける命令の実行は、David A. Luick による２００６年１２月１１日出願の米国特許出願番号１１／６０８,９８８の明細書に開示されているように遂行され得る。
【００５２】
本発明の１つの実施例では、パイプラインＰ０〜Ｐ７は、図３に関連して上述したカスケード型遅延実行構成のものであってもよい。正確なマシン状態を保証することによって、例えば、上述のカスケード型遅延実行パイプラインを実装することによって、本発明の実施例は、エラー検出および回復機構がレジスタ・ファイル内に直接組み込まれることを可能にし、それによって、回復ユニットを不要にすることおよびプロセッサ１１０における貴重なスペースを節約することを可能にする。
【００５３】
例えば、本発明の１つの実施例では、冗長なデータ記憶装置を設けることによって、１つまたは複数のレジスタ・セットを複製することが可能である。言い換えれば、第１レジスタ・ファイルに保存されたデータを、関連する第２レジスタ・ファイル（冗長レジスタ・ファイルとも呼ばれる）に保存することが可能である。第１および第２レジスタ・ファイルは、そのレジスタ・ファイルに含まれたレジスタに、エラー、例えば、ソフト・エラーを検出するためのパリティ・ビットを含み得る。レジスタ・ファイルのレジスタから１つの値が読取られるときにパリティ・ビットがエラーを示す場合、所望の値を冗長レジスタ・ファイルにおける関連のレジスタから取り出すことが可能である。従って、レジスタ・ファイルの複製化は、ソフト・エラーに遭遇するとき、エラー回復に行うことを可能にする。
【００５４】
図４を参照すると、汎用レジスタ・ファイル、特殊目的レジスタ・ファイル、および浮動小数点レジスタ・ファイルは、それぞれ、関連の複製レジスタ・ファイルを含むものとして示される。言い換えれば、レジスタ・ファイルの各対は、ソフト・エラーを検出するためのデータ冗長性を提供するために同じデータを格納している。例えば、汎用レジスタ・ファイル４１０１および４１０２の両方が同じデータを含み得る。従って、第１汎用レジスタ・ファイル４１０１のレジスタの内容においてパリティ・エラーが検出される場合、レジスタの内容を、複製汎用レジスタ・ファイル４１０２における対応するレジスタから取り出すことが可能である。
【００５５】
別の方法として、エラー検出および訂正を容易にするために、１つまたは複数のレジスタ・ファイルがエラー訂正コード（ＥＣＣ）を含んでもよい。ＥＣＣは、レジスタまたは記憶ロケーションにおけるエラーの検出および訂正を可能にし得る。ＥＣＣは、単一ビットのエラーまたは複数ビットのエラーを検出および訂正するために使用され得る。 図４を参照すると、エラー、例えば、ソフト・エラーの検出および訂正を容易にするために、ＥＣＣビットを有するチェックポイント・レジスタ・ファイル４４０が示される。
【００５６】
レジスタ・ファイルの複製およびＥＣＣを説明したが、本発明の実施例が前述のエラー検出方法に限定されないということは当業者には明らかであろう。この分野では既知の任意の合理的なエラー検出、および／または、回復方法、例えば、無効なマシン状態を検出するための特殊なハードウェアを使用することも可能である。
【００５７】
本発明の１つの実施例では、エラー・チェックおよび訂正機構を各パイプライン２１６に組み込むことも可能である。エラー・チェック機構は、例えば、パリティ・ビットまたはＥＣＣコードをチェックすることによって、レジスタにおける１つまたは複数の値が誤っているかどうかも決定し得る。それぞれのパイプラインにおいて実行される命令に関連したレジスタの１つまたは複数の値が誤っているということが決定される場合、適切なエラー回復アクションを取ることも可能である。例えば、正しいレジスタ内容を検索するために冗長レジスタ・ファイルをアクセスすることも可能であり、或いは、レジスタ内容を訂正するためにＥＣＣコードを使用することも可能である。
【００５８】
本発明の１つの実施例では、パイプラインにおいてエラーが検出される場合、そのパイプラインにおいて実行中の命令の実行および後続のすべての命令の実行を停止することが可能である。例えば、図４におけるパイプラインＰ３においてエラーが検出される場合、パイプラインＰ３において実行中の命令の実行が停止される。Ｐ３において実行中の命令に後続する命令がパイプラインＰ４〜Ｐ７において実行されることになっている場合、Ｐ４〜Ｐ７における命令の実行は停止され得る。パイプラインＰ３において実行中の命令に対する正しい値が、例えば、冗長レジスタ・ファイルから検索され、その命令および後続の命令の実行が再開され得る。
【００５９】
本発明の１つの実施例では、エラーに関連した命令に対する実行結果の書き戻しおよび後続の命令を禁止することも可能である。書き戻しを阻止するために、実行結果が無効にされること、或いは、誤った結果のラッチングを防ぐために無効化信号がレジスタ・ファイルに送られることも可能である。例えば、前の例では、エラーがパイプラインＰ３で検出される場合、パイプラインＰ３からのレジスタ結果の書き戻しは、誤ったデータがレジスタ・ファイルに書き込まれるのを防ぐために無効にされることも可能である。
【００６０】
レジスタ・ファイルへの書き戻しの無効化を説明したが、メモリへの実行結果に書き戻しを無効にするために同じ概念を使用することが可能であるということは当業者には明らかであろう。例えば、誤った結果をキャッシュに格納することを防ぐために、無効化信号がメモリに送られてもよい。
【００６１】
本発明の１つの実施例では、１つのパイプラインにおいてエラーが検知される場合、パイプライン２１６における第１命令に後続するすべての命令の実行を停止することも可能である。その後、第１命令および後続の命令の実行を再開することも可能である。１つの実施例では、エラー後の第１命令および後続の命令の実行を、異なるコア１１４において再開することも可能である。
【００６２】
Ｄ．書き戻しの遅延
本発明の１つの実施例では、パイプライン、例えば、カスケード型遅延実行パイプラインにおける命令グループの実行の終了時に、レジスタまたはメモリへの実行結果の書き戻し前に、１つまたは複数のクロック・サイクルの遅延を挿入することも可能である。１つまたは複数のクロック・サイクルの遅延が行われることはエラー検出を可能にし得るし、誤った実行結果でもってレジスタ・ファイルにおけるレジスタを変更することも阻止し得る。従って、レジスタ・ファイルの整合性を維持すること、並びに、エラー状態およびシステム故障の伝播を回避することが可能である。
【００６３】
例えば、図４を参照すると、図示のように、パイプライン２１６において実行される命令グループのすべての命令の実行が或る所定時間に完了した。エラーの検出を容易にするために、およびレジスタ値が間違って変更されるのを防ぐために、レジスタまたはメモリへの実行結果の書き戻しを１つまたは複数のクロック・サイクルだけ遅らせることも可能である。例えば、図４では、書き戻しステージＷＢ０およびＷＢ１の前に、２つの遅延サイクルＲＴＢＵＳ０およびＲＴＢＵＳ１が示される。遅延サイクルＲＴＢＵＳ０およびＲＴＢＵＳ１は、例えば、図３に示された遅延キュー３３０を使用することによって具現化され得る。
【００６４】
本発明の１つの実施例では、ＲＴＢＵＳ０またはＲＴＢＵＳ１中にエラーが検出される場合、レジスタまたはメモリへの結果の書き戻しを無効することも可能である。例えば、遅延キュー３３０における結果が無効にされてもよい。それとは別に、書き戻しステージＷＢ０およびＷＢ１中の間違った値のラッチングを防ぐために、無効化信号がレジスタ・ファイルにおけるレジスタ或いはメモリ・ロケーションに送られてもよい。１つの実施例では、無効化信号は、高い駆動電流を使用して、比較的大きなワイヤを介して送られてもよい。比較的大きなワイヤおよび高い駆動電流を供給することにより、無効化信号を比較的速く送って誤った結果の書き戻しを無効にすることも可能である。
【００６５】
例えば、第１命令がパイプラインＰ７において実行されることがある。第１命令に後続し且つ第１命令に従属する第２命令が、Ｐ０において、後続のクロック・サイクルで実行されることがある。第２命令は、第１命令の結果に依存することがある。第１命令の実行時に誤った結果のセットが計算される場合、その結果におけるエラーがＲＴＢＵＳ０とＲＴＢＵＳ１のサイクル中に検出され得る。従って、第１命令からの結果は無効にされ、レジスタまたはメモリに書き戻され得ない。従って、誤った結果を用いた第２命令の実行は回避され得る。
【００６６】
本発明の１つの実施例では、所与のパイプラインにおいてアクセスされたレジスタが冗長ロケーション、例えば、ラッチまたはデータ保存レジスタにラッチされることがある。従って、レジスタ値が間違って変更される場合、そのレジスタの前の値が、冗長ロケーションを使用してそのレジスタに再格納され得る。例えば、命令は、レジスタにおける値をアクセスし得る。命令を実行するパイプラインに対してレジスタ値をディスパッチするとき、またはほぼその時点で、そのレジスタ値は、冗長ロケーションに、例えば、ラッチまたはデータ保管レジスタに格納されてもよい。
【００６７】
命令の実行後、実行の結果がレジスタに格納され、それによってレジスタ結果を変更し得る。例外が生じたことが決定される場合、冗長ロケーションに格納されたレジスタの前の値を使用してレジスタ値を回復することが可能である。例えば、不正確例外が生じる場合、レジスタに格納されたデータは無効であるかもしれない。従って、レジスタ内容を前の有効な状態に戻すために、冗長ロケーションに保存されたデータの正確な値を使用することが可能である。冗長ロケーションを実装するする方法およびシステムは、米国特許第５,７９３,９４４号、同第５,８７５,３４６号、および同第６,０６５,１０７号に詳しく記述されている。
【００６８】
図５は、発明の実施例に従って命令を実行するためのプロセッサ・コアにおいて遂行される例示的なオペレーションのフローチャートである。オペレーションが開始されると、ステップ５０２において、プロセッサ・コアにおける１つまたは複数のパイプラインに命令グループが発生される。例えば、図４を参照すると、パイプラインＰ０〜Ｐ７の各々に対して命令グループの１つの命令が発生される。ステップ５０４において、上述のように、命令はパイプラインにおいてカスケード型遅延実行態様で実行される。例えば、命令グループの第１命令の実行は命令グループの第２命令に関して遅延してもよい。
【００６９】
ステップ５０６において、レジスタの冗長コピーがプロセッサ・コア内に維持される。例えば、図４を参照すると、汎用レジスタ４１０、特殊目的レジスタ４２０、および浮動小数点レジスタ４３０が冗長性を与えるために複製される。それとは別に、実施例によっては、レジスタ・ファイルが、エラー検出および回復を容易にするためにＥＣＣビットを含み得る。
【００７０】
ステップ５０８において、命令の実行時に１つまたは複数のパイプラインにおいてエラーが識別される場合、ステップ５１０において、そのエラーを受けた命令に対する実行結果の書き戻しおよびその後の命令が阻止される。例えば、パイプラインにおいて処理されているレジスタ値がソフト・エラーを有することがある。エラーが検出される場合、ターゲット遅延キュー３３０に含まれていた実行結果が無効にされる。それとは別に、無効化信号がレジスタ・ファイルに送られ、実行結果をレジスタ・ファイルのレジスタにラッチすることを阻止することも可能である。
【００７１】
ステップ５１２において、エラーを受けた命令およびその後続の命令の実行が停止される。ステップ５１４において、レジスタ値の訂正されたコピーが検索される。例えば、冗長レジスタ・ファイルがアクセスされるか、或いは、エラーを受けた命令に関連したレジスタにおいてそのエラーを訂正するために、レジスタに対するＥＣＣビットが使用される。しかる後、ステップ５１６において、そのエラーを受けた命令および後続の命令の実行が、訂正されたレジスタ値を用いて再開される。１つの実施例では、異なるプロセッサ・コアにおいて実行が再開されてもよい。
【００７２】
上記のように、１つ実施例では、各パイプラインからの実行結果の書き戻しが、１つまたは複数のクロック・サイクルだけ遅延することもある。実行結果の書き戻しの遅延は、誤った実行結果が、１つまたは複数のメモリ・ロケーション、例えば、レジスタ・ファイルまたはキャッシュを変更するために使用される前に、エラーが検出されることを可能にし得る。
【００７３】
Ｅ．結論
ターゲット書き込み遅延を備えたカスケード型遅延実行パイプラインを実施することによって、本発明の実施例は、不正確例外の可能性を減らす。更に、正確なマシン状態が維持されるので、エラー検出および回復機構をレジスタ・ファイルに直接組み込むことができ、それによって、回復ユニットを不要にする。
【００７４】
以上は本発明の実施例に関する説明であるが、本発明の基本的な範囲から逸脱することなく、本発明の別の実施例および更なる実施例を創出することが可能であろう。
【図面の簡単な説明】
【００７５】
【図１】本発明の実施例による例示的なシステムの概略的なブロック図である。
【図２】本発明の実施例による例示的なプロセッサの詳細なブロック図である。
【図３】本発明の実施例による例示的なカスケード型遅延実行パイプラインの概略的なブロック図である。
【図４】本発明の実施例による例示的なプロセッサ・コアのコンポーネントの概略的なブロック図である。
【図５】本発明の実施例に従って命令を実行するためのプロセッサ・コアにおいて遂行される例示的なオペレーションのフローチャートである。
【図１】
0005147564.tif 000002
【図２】
0005147564.tif 000003
【図３】
0005147564.tif 000004
【図４】
0005147564.tif 000005
【図５】
0005147564.tif 000006