(57)【要約】【課題】  命令キューにおける複数のキャッシュ・ミスを効率的に処理するためのシステム及び方法を提供する。【解決手段】  本発明の実施形態は、複数の変換キャッシュ・ミスを処理しながら命令キューにおける命令を処理する際に、命令順を保つための方法及びシステムを提供する。命令は、ＣＰＵの入力命令キューに入れることができる。命令についてのアドレス変換の間に、後続の命令を処理して効率を高めることができる。処理される命令は、出力キューに置いて、順番にＣＰＵに送信することができる。アドレス変換の際に、未解決のミスが処理されている間に変換キャッシュ・ミスが発生した場合には、パイプラインをストールさせて、第１のミスが処理された後に、第２のミスを引き起こしている命令と後続のすべての命令とを再び処理することができる。【選択図】      図２
2007207248.tif 000002
【特許請求の範囲】
【請求項１】
１つ又は複数の入力／出力装置から受信される一連の命令群を格納している命令キューにおける複数の変換キャッシュ・ミスを処理するための方法であって、
前記命令キューにおける第１の命令が対象とするアドレスを、変換されるアドレス変換ロジックに送信するステップと、
前記命令キューにおける前記第１の命令が対象とする前記アドレスの仮想−実変換を含む前記変換ロジックのアドレス変換テーブルにアドレス変換エントリが存在しないとの判定に応答して、メモリから前記アドレス変換エントリの取り出しを開始するステップと、
前記第１の命令についての前記アドレス変換エントリを取り出している間に、前記第１の命令の後に受信された１つ又は複数の命令を処理するステップであって、前記命令キューにおける第２の命令が対象とするアドレスを、変換される前記アドレス変換ロジックに送信することを含む、ステップと、
前記第２の命令が対象とする前記アドレスの仮想−実変換を含む前記アドレス変換ロジックの前記アドレス変換テーブルにアドレス変換エントリが存在しないとの判定に応答して、前記第１の命令が対象とする前記アドレスについての前記アドレス変換エントリが取り出されるまで後続の命令群の処理をストールさせるステップであって、命令群の処理を停止すること、及び、前記命令キューにおける前記第２の命令をポイントするようにポインタを設定することを含む、ステップと、
を含む方法。
【請求項２】
前記命令群は、
アドレス変換を必要とする命令群と、
アドレスのない命令群と、
のうち１つを含む、請求項１に記載の方法。
【請求項３】
前記アドレス変換テーブルは、セグメント・テーブル及びページ・テーブルを含む、請求項１に記載の方法。
【請求項４】
前記命令キューは先入れ先出しキューである、請求項１に記載の方法。
【請求項５】
前記第１の命令についてのアドレス変換が受信された後で、前記第２の命令と、前記第２の命令に続く命令群とを処理するステップをさらに含む、請求項１に記載の方法。
【請求項６】
処理される命令群を第２の命令キューに格納するステップと、
各々のＩＯ装置について、各々のＩＯ装置から受信された前記処理される命令群を、前記命令群が前記ＩＯ装置から受信された順にＣＰＵに発行するステップと、
をさらに含む、請求項１に記載の方法。
【請求項７】
異なるＩＯ装置から順不同で受信された処理される命令群を発行するステップをさらに含む、請求項６に記載の方法。
【請求項８】
１つ又は複数の入力／出力装置と、
(ｉ)前記１つ又は複数の入力／出力装置から受信される一連の命令群を格納するように構成された命令キューと、(ｉｉ)前記命令キューからの前記命令群をパイプライン方式で処理するように構成された入力コントローラと、（ｉｉｉ）前記入力コントローラによって処理される命令群が対象とするアドレス群を、仮想−実アドレス変換を含むエントリを有するアドレス変換テーブルを用いて変換するように構成されたアドレス変換ロジックと、（ｉｖ）第１の命令の後に受信された第２の命令が対象とするアドレスの仮想−実変換を含む前記アドレス変換ロジックの前記アドレス変換テーブルにアドレス変換エントリが存在しないとの判定に応答して、前記第１の命令が対象とするアドレスについてのアドレス変換エントリが取り出されるまで、前記アドレス変換エントリが取り出されている前記第１の命令の後に受信された命令群の前記入力コントローラによる処理をストールさせ、前記命令キューにおける前記第２の命令の前記アドレスにポインタを設定するように構成された制御ロジックと、を含むプロセッサと、
を含むシステム。
【請求項９】
前記アドレス変換ロジックは、
前記変換されるアドレス群を前記制御ロジックに与え、
アドレスについての変換が前記アドレス変換テーブルにおいて見つからなかった場合には、前記制御ロジックに通知する、
ようにさらに構成された、請求項８に記載のシステム。
【請求項１０】
命令群の処理をストールさせるために、前記制御ロジックは、ストール信号と前記命令キューにおける前記第２の命令の前記アドレスとを前記入力コントローラに送信するように構成された、請求項８に記載のシステム。
【請求項１１】
前記入力コントローラは、前記第１の命令についてのアドレス変換が取り出された後で前記第２の命令と後続の命令群とを発行するように構成された、請求項８に記載のシステム。
【請求項１２】
（ｉ）入力／出力装置からの一連の命令群を格納するように構成された命令キューと、
（ｉｉ）前記命令キューにおける前記命令群をパイプライン方式で処理するように構成された入力コントローラと、
（ｉｉｉ）キャッシュされたアドレス変換エントリを利用して仮想アドレスを物理アドレスに変換し、命令についてのアドレス変換エントリがキャッシュにおいて見つからなかった場合には、対応するアドレス変換エントリをメモリから取り出すように構成されたアドレス変換ロジックと、
（ｉｖ）第１の命令の後に受信された第２の命令が対象とするアドレスについてのアドレス変換エントリがアドレス変換テーブルに存在しないことを検出したことに応答して、前記第１の命令が対象とするアドレスについてのアドレス変換エントリが取り出されるまで、前記第１の命令の後に受信された命令群の処理をストールさせ、前記命令キューにおける前記第２の命令の前記アドレスにポインタを設定するように構成された出力コントローラと、
を含むマイクロプロセッサ。
【請求項１３】
前記命令キューは先入れ先出しキューである、請求項１２に記載のマイクロプロセッサ。
【請求項１４】
前記アドレス変換テーブルは、セグメント・テーブル及びページ・テーブルのうちの１つである、請求項１２に記載のマイクロプロセッサ。
【請求項１５】
命令がアドレス変換を必要とするとの判定に応答して、前記入力コントローラは、
前記命令を前記アドレス変換ロジックに送信し、
前記命令キューにおける前記命令のアドレスを前記出力コントローラに送信する、
ように構成された、請求項１２に記載のマイクロプロセッサ。
【請求項１６】
前記アドレス変換ロジックは、
変換されるアドレス群を前記出力コントローラに与え、
アドレスについての変換が前記アドレス変換テーブルにおいて見つからなかった場合には、前記出力コントローラに通知する、
ようにさらに構成された、請求項１２に記載のマイクロプロセッサ。
【請求項１７】
命令群の処理をストールさせるために、前記出力コントローラは、ストール信号と前記命令キューにおける前記第２の命令の前記アドレスとを前記入力コントローラに送信するように構成された、請求項１２に記載のマイクロプロセッサ。
【請求項１８】
前記入力コントローラは、前記第１の命令についてのアドレス変換が取り出された後で前記第２の命令と後続の命令群とを発行するように構成された、請求項１２に記載のマイクロプロセッサ。
【請求項１９】
前記出力コントローラは、
処理される命令群を第２の命令キューに格納し、
各々のＩＯ装置について、各々のＩＯ装置から受信された前記処理される命令群を、前記命令群が前記ＩＯ装置から受信された順にＣＰＵに発行する、
ようにさらに構成された、請求項１２に記載のマイクロプロセッサ。
【請求項２０】
前記出力コントローラは、異なるＩＯ装置から順不同で受信された処理される命令群を発行するようにさらに構成された、請求項１９に記載のマイクロプロセッサ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般に、命令キューにおける命令を処理することに関する。より具体的には、本発明は、アドレス変換についての複数のキャッシュ・ミス後に、命令キューにおける命令順を維持することに関する。
【背景技術】
【０００２】
コンピュータ・システムは、通常は、メモリ及び入力／出力（ＩＯ）装置に通信可能に結合された１つ又は複数の中央処理ユニット（ＣＰＵ）を含む。メモリは、コンピュータによって行われる計算に必要な１つ又は複数のプログラムとデータとを含むランダム・アクセス・メモリ（ＲＡＭ）とすることができる。例えば、メモリは、暗号化されるデータと共に、データを暗号化するためのプログラムを含むことができる。ＩＯ装置は、命令を発行し、ＣＰＵから応答を受信するように構成された、ビデオ・カード、音源カード、グラフィックス・プロセッシング・ユニットなどを含むことができる。
【０００３】
ＣＰＵは、メモリ又はＩＯ装置から受信した１つ又は複数の命令を解釈して実行することができる。例えば、システムは、２つの数を加算する要求を受信することができる。ＣＰＵは、２つの数を加算するためのロジックを含む、（メモリ内の）プログラムの一連の命令を実行することができる。ＣＰＵはまた、加算される２つの数を入力する入力装置からユーザ入力を受信することができる。計算の終了時に、ＣＰＵは、表示スクリーン等の出力装置上に結果を表示することができる。
【０００４】
以前の命令を処理した後で次の命令を装置から送信することは長い時間がかかり、その間ＣＰＵが非稼働状態にならざるを得ないため、装置からの複数の命令を、ＣＰＵの命令キューに入れることができる。したがって、ＣＰＵは、以前の命令の処理後に、次の命令に高速アクセスできることになる。命令間の従属関係のために、所与の順序で命令を実行するようにＣＰＵに要求することができる。したがって、命令をキューに置き、先入れ先出し（ＦＩＦＯ）順に処理して、従属命令が適切な順序で実行されることを確実にすることができる。例えば、ある記憶場所における読取り動作が、その記憶場所への書込み動作の後に行われる場合には、書込み動作は、最初に、読取り動作の際に正しいデータが読み取られることを確実にするように実行されなければならない。したがって、同じＩ／Ｏ装置から発信される命令は、受信された順序でＣＰＵによって処理することができ、一方、異なる装置からの命令は、順序に関係なく処理することができる。
【０００５】
ＣＰＵによって受信される命令は、（ａ）アドレス変換を必要とする命令と、（ｂ）アドレスのない命令とに大きく分類することができる。アドレスのない命令は、ＰｏｗｅｒＰＣ  ｅｉｅｉｏ（Enforce In-order Execution of Input/Output；入出力の強制インオーダー実行）命令等の割り込み命令及び同期命令を含むことができる。割り込み命令は、何か他のことを行うために実行していることを保留するようにＣＰＵに要求する、装置からＣＰＵへの命令とすることができる。同期命令は、同期命令より前のすべての命令が処理されるまで後続の命令が処理されないようにするために発行することができる。これらの命令と関連付けられたアドレスは存在しないので、これらの命令は、アドレス変換を必要としない。
【０００６】
アドレス変換を必要とする命令は、読取り命令及び書込み命令を含む。読取り命令は、読み取られるデータの場所のアドレスを含むことができる。同様に、書込み命令は、データが書き込まれる場所についてのアドレスを含むことができる。命令に格納されるアドレスは仮想アドレスとすることができるため、該アドレスは、読取り又は書込みを行う前にメモリ内の実際の物理的位置への変換が必要な場合がある。
【０００７】
アドレス変換は、仮想アドレスを物理アドレスと対応させるために、セグメント・テーブル及び／又はページ・テーブルを調べることを必要とする。高速かつ効率的なアクセスのために、最近対象とされたアドレスについて、ページ・テーブル及びセグメント・テーブルのエントリをキャッシュに維持することができる。しかしながら、キャッシュを介して高速かつ効率的にアクセスしたとしても、アドレス変換の際に後続の命令がパイプラインにストールすることがある。この問題に対する１つの解決策は、アドレス変換の間に、命令キューおける後続の命令を処理することである。しかしながら、同じＩ／Ｏ装置からの命令については、依然として命令順を維持しなければならない。
【０００８】
変換の際に、仮想アドレスを物理アドレスに変換するテーブル・エントリがキャッシュ内に見つからない場合は、そのエントリは、メモリからフェッチされなければならない。変換キャッシュ・ミスがあるときにエントリをフェッチすることは、実質的な待ち時間をもたらすことになる。命令について変換キャッシュ・ミスが発生したときは、後続の命令についてのアドレス変換は、依然として続行することができる。しかしながら、システムによって１つの変換キャッシュ・ミスのみしか許容されない場合がある。したがって、変換キャッシュ・ミスが処理されている間は、変換キャッシュ・ヒット（ヒット・アンダー・ミス）となる後続の命令のみか、又はアドレス変換を必要としない命令のみを、処理することができる。変換キャッシュ・ミスを処理するのに長い時間がかかることがあるため、第１の変換キャッシュ・ミスが処理される間に第２の変換キャッシュ・ミスが発生する確率は、比較的高い。
【０００９】
この問題に対する１つの解決策は、一度に１つの命令のみを処理することである。しかしながら、上述のように、これは、アドレス変換の際に命令がパイプラインにストールする場合があるため、性能の深刻な低下を引き起こす可能性がある。別の解決策は、複数のミスを処理するためのハードウェアを設けることである。しかしながら、この解決策は、処理しなければならない複数のミスを増加させるのにつれて、システムがより複雑なものになる可能性がある。さらに別の解決策は、ソフトウェアがミスのないことを確実にする、変換キャッシュのプリロードを含むようにすることができる。しかしながら、この解決策は、好ましくないソフトウェアのオーバーヘッドを生じさせる。
【発明の開示】
【発明が解決しようとする課題】
【００１０】
したがって、必要とされているのは、命令キューにおける複数のキャッシュ・ミスを効率的に処理するためのシステム及び方法である。
【課題を解決するための手段】
【００１１】
本発明は、一般に、命令キューにおける命令を処理するための方法及びシステムを提供する。より具体的には、本発明は、アドレス変換についての複数のキャッシュ・ミス後に、命令キューにおける命令順を維持することに関する。
【００１２】
本発明の１つの実施形態は、１つ又は複数の入力／出力装置から受信される一連の命令群を格納している命令キューにおける複数の変換キャッシュ・ミスを処理するための方法を提供する。本方法は、一般に、命令キューにおける第１の命令が対象とするアドレスを、変換されるアドレス変換ロジックに送信するステップと、命令キューにおける第１の命令が対象とするアドレスの仮想−実変換を含む変換ロジックのアドレス変換テーブルにアドレス変換エントリが存在しないとの判定に応答して、メモリからアドレス変換エントリの取り出しを開始するステップとを含む。本方法は、第１の命令についてのアドレス変換エントリを取り出している間に、第１の命令の後に受信された１つ又は複数の命令を処理するステップであって、命令キューにおける第２の命令が対象とするアドレスを、変換されるアドレス変換ロジックに送信することを含む、ステップと、第２の命令が対象とするアドレスの仮想−実変換を含むアドレス変換ロジックのアドレス変換テーブルにアドレス変換エントリが存在しないとの判定に応答して、第１の命令が対象とするアドレスについてのアドレス変換エントリが取り出されるまで後続の命令群の処理をストールさせるステップであって、命令群の処理を停止すること、及び、命令キューにおける第２の命令をポイントするようにポインタを設定することを含む、ステップとをさらに含む。
【００１３】
本発明の別の実施形態は、一般に、１つ又は複数の入力／出力装置と、プロセッサとを含むシステムを提供する。プロセッサは、一般に、(ｉ)１つ又は複数の入力／出力装置から受信される一連の命令群を格納するように構成された命令キューと、(ｉｉ)命令キューからの命令群をパイプライン方式で処理するように構成された入力コントローラと、（ｉｉｉ）入力コントローラによって処理される命令群が対象とするアドレス群を、仮想−実アドレス変換を含むエントリを有するアドレス変換テーブルを用いて変換するように構成されたアドレス変換ロジックと、（ｉｖ）第１の命令の後に受信される第２の命令が対象とするアドレスの仮想−実変換を含むアドレス変換ロジックのアドレス変換テーブルにアドレス変換エントリが存在しないとの判定に応答して、第１の命令が対象とするアドレスについてのアドレス変換エントリが取り出されるまで、アドレス変換エントリが取り出されている第１の命令の後に受信される命令群の入力コントローラによる処理をストールさせ、命令キューにおける第２の命令のアドレスにポインタを設定するように構成された制御ロジックと、を含む。
【００１４】
本発明のさらに別の実施形態は、一般に、（ｉ）入力／出力装置からの一連の命令群を格納するように構成された命令キューと、（ｉｉ）命令キューにおける命令群をパイプライン方式で処理するように構成された入力コントローラと、（ｉｉｉ）キャッシュされたアドレス変換エントリを利用して仮想アドレスを物理アドレスに変換し、命令についてのアドレス変換エントリがキャッシュ内で見つからなかった場合には、対応するアドレス変換エントリをメモリから取り出すように構成されたアドレス変換ロジックと、（ｉｖ）第１の命令の後に受信される第２の命令が対象とするアドレスについてのアドレス変換エントリがアドレス変換テーブルに存在しないことを検出したことに応答して、第１の命令が対象とするアドレスについてのアドレス変換エントリが取り出されるまで、第１の命令の後に受信される命令群の処理をストールさせ、命令キューにおける第２の命令のアドレスにポインタを設定するように構成された出力コントローラと、を含むマイクロプロセッサを含む。
【発明を実施するための最良の形態】
【００１５】
以下、図面を参照して、本発明を説明するが、添付図面は、本発明の典型的な実施形態のみを示すものであり、したがって発明の範囲を限定するものと考えられるべきではなく、本発明に関して同等に効果的な他の実施形態を認めることができることに留意されたい。
【００１６】
本発明の実施形態は、複数の変換キャッシュ・ミスを処理しながら命令キューにおける命令を処理する際に、命令順を保つための方法及びシステムを提供する。命令は、ＣＰＵの入力命令キューに入れることができる。命令についてのアドレス変換の間に、後続の命令を処理して効率を高めることができる。処理される命令は、出力キューに置いて、Ｉ／Ｏ装置によって順番にＣＰＵに送信することができる。アドレス変換の際に、未解決のミスが処理されている間に変換キャッシュ・ミスが発生した場合には、パイプラインをストールさせて、第１のミスが処理された後に、第２のミスを引き起こしている命令と後続のすべての命令とを再び処理することができる。
【００１７】
以下においては、本発明の実施形態を参照する。しかしながら、本発明は、説明される特定の実施形態に限定されるものではないことを理解すべきである。
【００１８】
例示的なシステム
図１は、本発明の実施形態を実装することができる例示的なシステム１００を示す。システム１００は、入力／出力（ＩＯ）装置１２０及びメモリ１４０に通信可能に結合された中央処理ユニット（ＣＰＵ）１１０を含むことができる。例えば、ＣＰＵ１１０は、ＩＯブリッジ１２０を介して、バスによってＩＯ装置１３０及びメモリ１４０に結合することができる。ＩＯ装置１３０は、示されるように、例えば命令１３１によってＣＰＵ１１０に入力を与えるように構成することができる。例示的なＩＯ装置は、グラフィックス・プロセッシング・ユニット、ビデオ・カード、音源カード、ダイナミック・ランダム・アクセス・メモリ（ＤＲＡＭ）等を含む。
【００１９】
ＩＯ装置１３０は、ＣＰＵ１１０から応答１３２を受信するように構成することもできる。例えば、応答１３２は、ユーザに表示することができる、ＣＰＵ１１０による計算の結果を含むことができる。応答１３２は、上述のＤＲＡＭ装置などのメモリ装置上で行われる書込み動作を含むこともできる。図１においては１つのＩＯ装置１３０が示されているが、当業者であれば、多くのＩＯ装置１３０を同一の又は複数のバスでＣＰＵに結合できることが分かるであろう。
【００２０】
メモリ１４０は、ダイナミック・ランダム・アクセス・メモリ（ＤＲＡＭ）などのランダム・アクセス・メモリであることが好ましい。メモリ１４０は、ＣＰＵによって処理されている１つ又は複数のプログラム及び／又はデータ構造を保持するように、十分に大きなものとすることができる。メモリ１４０は単一の存在として示されているが、メモリ１４０は、実際には複数のモジュールを含むことができ、高速キャッシュから、低速であるがより大きいＤＲＡＭチップに至るまで、複数のレベルで存在できることを理解すべきである。
【００２１】
ＣＰＵ１１０は、命令プロセッサ１１１、変換ロジック１１２、組み込みプロセッサ１１３及びキャッシュ１１４を含むことができる。命令プロセッサ１１１は、ＩＯ装置１３０から１つ又は複数の命令１３１を受信し、命令を処理することができる。命令１３１の各々は、アドレス変換を必要とする命令と、アドレスのない命令とに大きく分類することができる。したがって、命令を処理することは、命令がアドレス変換を必要とするどうかを判定することを含むものとすることができる。命令がアドレス変換を必要とする場合には、命令プロセッサは、アドレス変換のために命令を変換ロジック１１２にディスパッチすることができる。変換を必要とするこれらの命令１３１が変換された後に、命令プロセッサは、メモリ・コントローラ１１８上で組み込みプロセッサ１１３によって処理されるように、順序付け命令１３３をオンチップ・バス１１７上に置くことができる。
【００２２】
変換ロジック１１２は、命令プロセッサ１１１から、アドレス変換を必要とする１つ又は複数の命令を受信することができる。例えば、アドレス変換を必要とする命令は、読取り命令及び書込み命令を含むことができる。読取り命令は、読み取られるデータの場所についてのアドレスを含むことができる。同様に、書込み命令は、データが書き込まれる場所についてのアドレスを含むことができる。
【００２３】
変換を必要とする命令に含まれるアドレスは、仮想アドレスとすることができる。仮想アドレスは、特定のプログラムに割り当てられる仮想メモリを参照することができる。仮想メモリは、プログラムに割り当てられる連続的なメモリ空間とすることができ、メモリ１４０における異なる非連続の物理メモリ位置にマッピングされる。例えば、仮想メモリ・アドレスは、物理メモリ及び／又は二次ストレージにおける異なる非連続のメモリ位置にマッピングすることができる。したがって、仮想メモリ・アドレスが用いられるときは、仮想アドレスを実際の物理アドレスに変換して、その場所で動作を行わなければならない。
【００２４】
アドレス変換は、セグメント・テーブル及び／又はページ・テーブルを調べることを伴うものとすることができる。セグメント・テーブル及びページ・テーブルは、仮想アドレスを物理アドレスと対応させることができる。これらの変換テーブルのエントリは、メモリ１４０に常駐させることができる。以前にアクセスされたアドレスに次にアクセスする場合の変換時間を短くするように、最近アクセスされたデータについてのアドレス変換を、キャッシュ１１４におけるセグメント・テーブル・エントリ１１６及びページ・テーブル・エントリ１１５に維持することができる。アドレス変換がキャッシュ１１４に見つからない場合には、必要なときにメモリ又は他のストレージからキャッシュに変換を入れることができる。
【００２５】
セグメント・テーブル・エントリ１１６は、仮想アドレスが特定のプログラムに割り当てられたメモリのセグメント内にあるかどうかを示すことができる。セグメントは、仮想メモリにおける可変サイズのブロックとすることができ、各々のブロックは、特定のプログラム又は処理に割り当てられる。したがって、セグメント・テーブルは、最初にアクセスされることになる。仮想アドレスがプログラムのためのセグメントの境界外の領域を参照した場合には、セグメンテーション違反が発生することがある。
【００２６】
各々のセグメントは、ページと呼ばれる固定サイズのブロックにさらに分割することができる。仮想アドレスは、セグメントに含まれるページの１つ又は複数をアドレス指定することができる。ページ・テーブル１１５は、仮想アドレスをメモリ１４０のページにマッピングすることができる。メモリにおいてページが見つからない場合には、所望のページが存在する可能性がある二次ストレージからそのページを取り出すことができる。
【００２７】
命令処理
図２は、本発明の実施形態に係る、ＩＯ装置１３０からの命令を処理するように構成することができる命令プロセッサ１１１の詳細図である。命令プロセッサ１１１は、入力命令ＦＩＦＯ２０１、変換インタフェース入力制御部２０２、変換インタフェース出力制御部２０３、及び命令ＦＩＦＯ２０４を含むものとすることができる。入力命令ＦＩＦＯ２０１は、ＩＯ装置１２０によってＣＰＵに発行される少なくとも所定の数の命令１３１を保持するのに十分な大きさのバッファとすることができる。命令１３１は、受信された順に連続して、入力命令ＦＩＦＯ２０１に入れることができる。
【００２８】
変換インタフェース入力制御部（ＴＩＩＣ）２０２は、入力命令ＦＩＦＯ２０１を監視し、管理することができる。ＴＩＩＣは、読取りポインタ２１０及び書込みポインタ２１１を保持することができる。読取りポインタ２１０は、入力命令ＦＩＦＯにおいて、処理するのに使用可能な次の命令をポイントすることができる。書込みポインタ２１１は、入力命令ＦＩＦＯにおいて、新たに受信された命令を書き込むのに使用可能な次の場所をポイントすることができる。各々の命令が、処理のために入力命令ＦＩＦＯから取り出される度に、読取りポインタを増加させることができる。同様に、ＩＯ装置から各々の命令を受信する度に、書込みポインタも増加させることができる。読取りポインタ又は書込みポインタが、入力命令ＦＩＦＯの最後に達すると、ポインタは、次の増加の時に入力命令ＦＩＦＯの先頭をポイントするようにリセットすることができる。
【００２９】
ＴＩＩＣ２０２は、書込みポインタが読取りポインタを超えて増加することを防ぐことによって、入力命令ＦＩＦＯがオーバーフローしないことを確実にするように構成することができる。例えば、書込みポインタが増加し、読取りポインタと同じ場所をポイントする場合には、バッファは、未解決命令で一杯となっている可能性がある。これ以上命令を受信しない場合は、ＴＩＩＣは、命令をＣＰＵ内にラッチできないことを示すエラー・メッセージを送信することができる。
【００３０】
ＴＩＩＣ２０２は、入力命令ＦＩＦＯ２０１において受信された命令がアドレス変換を必要とする命令であるかどうかを判定することもできる。変換を必要とする命令が受信された場合には、処理するために命令を変換ロジック１１２に送ることができる。しかしながら、命令がアドレス変換を必要としない場合には、命令をパイプラインに渡すことができる。
【００３１】
図３は、入力命令ＦＩＦＯにおける命令を処理するためにＴＩＩＣによって行われる例示的な動作のフローチャートである。ＴＩＩＣによって行われる動作は、パイプライン動作とすることができる。したがって、常に複数の命令を処理している状態とすることができる。例えば、第１の命令は、処理するために、入力命令ＦＩＦＯからＴＩＩＣによって受信することができる。第１の命令が受信されている間に、以前に受信された第２の命令は、ＴＩＩＣによってアドレス変換のために変換ロジックに送信することができる。
【００３２】
ＴＩＩＣにおける動作は、ステップ３０１において、入力命令ＦＩＦＯから命令を受信することによって開始する。例えば、ＴＩＩＣは、読取りポインタによってポイントされた命令を読み取ることができる。命令が読み取られた後に、読取りポインタは、次の命令をポイントするように増加させることができる。ステップ３０２において、ＴＩＩＣは、取り出された命令がアドレス変換を必要とするかどうかを判定することができる。命令がアドレス変換を必要とすると判定された場合には、ステップ３０３において、アドレス変換のために命令を変換ロジック１１２に送信することができる。ステップ３０４において、変換ロジックに送信された命令の入力命令ＦＩＦＯアドレスをパイプラインに送信することができる。ステップ３０２において命令がアドレス変換を必要としないと判定された場合には、ステップ３０５において、命令と、命令の入力命令ＦＩＦＯアドレスとをパイプラインに送信することができる。
【００３３】
図２に戻ると、変換ロジック１１２は、ＴＩＩＣからのアドレス変換要求を処理することができる。アドレス変換は、セグメント・テーブル及びページ・テーブルを調べて、仮想アドレスをメモリ１４０の実際の物理アドレスに転換することを伴うものとすることができる。幾つかの実施形態においては、変換ロジックは、ページ・テーブル・キャッシュ及びセグメント・テーブル・キャッシュへのパイプライン・アクセスが可能なものとすることができる。アドレス変換の際にページ・キャッシュ・ミス又はセグメント・キャッシュ・ミスが生じた場合には、キャッシュは、キャッシュ・ミスを処理しながら、後続の命令のためにキャッシュ・ヒットを供給し続けることができる。
【００３４】
アドレス変換の際にミスが発生しなかった場合は、変換ロジックは、図２に示されるように、変換インタフェース出力制御部（ＴＩＯＣ）２０３に変換結果を与える。しかしながら、ミスが発生した場合には、変換ロジックは、ミスを引き起こしている命令に関してＴＩＯＣに通知することができる。
【００３５】
図４は、アドレス変換のために変換ロジックによって行われる例示的な動作のフローチャートである。ＴＩＩＣと同様に、変換ロジックによって行われる動作もパイプライン処理することができる。したがって、常に複数の命令を処理している状態とすることができる。動作は、ステップ４０１において、ＴＩＩＣからアドレス変換の要求を受信することによって開始する。ステップ４０２において、変換ロジックは、セグメント・テーブル・キャッシュ及びページ・テーブル・キャッシュにアクセスして、仮想アドレスを物理アドレスに変換するための対応するエントリを取り出すことができる。ステップ４０３において、対応するページ・テーブル・エントリ及びセグメント・テーブル・エントリがキャッシュにおいて発見された場合には、ステップ４０４において、アドレス変換結果をＴＩＯＣに送信することができる。
【００３６】
しかしながら、セグメント・テーブル・キャッシュ及びページ・テーブル・キャッシュにおいてページ・テーブル・エントリ及びセグメント・テーブル・エントリが発見されなかった場合には、ステップ４０５において、命令アドレスについての変換ミスの通知をＴＩＯＣに送信することができる。変換ロジックは、ステップ４０６において、ミスを処理する手順を開始することができる。例えば、ミスを処理することは、対応するページ・テーブル・エントリ及びセグメント・テーブル・エントリについての要求をメモリに送信することを含むことができる。
【００３７】
幾つかの実施形態の場合には、変換ロジックは、処理中の未解決のミスが存在しているときには１つの変換キャッシュ・ミスしか処理できないことに留意することが重要である。第２のミスが発生した場合には、ミスの通知をＴＩＯＣに送信することができる。未解決のミスを処理しながら第２のミスを処理することは、以下により詳細に説明される。さらに、未解決のミスを処理しているときに、アドレス変換を必要とする後続の命令を処理し続けることができる。メモリ又は二次ストレージからページ・テーブル・エントリ及びセグメント・テーブル・エントリを取り出すのに比較的長い時間がかかる場合があるため、後続の命令をストールさせることによって、実質的に性能を低下させる可能性がある。したがって、変換キャッシュ・ヒットを伴う後続の命令は、ミスを処理しながら処理することができる。
【００３８】
ヒット・アンダー・ミスの処理
図２に戻ると、ＴＩＯＣは、変換ロジックによって処理されている未解決のミスの数を追跡し、命令間の従属関係に基づいて命令順を保つことができる。例えば、ＴＩＯＣは、アドレス変換のために変換ロジックに送信された命令とアドレス変換を必要としない命令の両方について、入力命令ＦＩＦＯアドレスを受信することができる。命令を同じＩＯ装置から順不同で受信した場合には、ＴＩＯＣは、命令を命令キュー２０４に維持し、これらの命令をその入力命令ＦＩＦＯアドレスに基づいて必要な順序でＣＰＵにディスパッチすることができる。図２は、ＴＩＯＣによって命令キュー２０４に格納されている命令を示す。命令が、１つのＩＯ装置に関して順不同（out of order）ではない場合には、ＴＩＯＣは、示されるように、命令１３３をＣＰＵにディスパッチすることができる。
【００３９】
例えば、入力命令ＦＩＦＯにおける第１の命令が、アドレス変換を必要とし、アドレス変換のために変換ロジックに転送される場合がある。第１の命令が変換されている間に、アドレス変換を必要としない、第１の命令に従属する後続の第２の命令を、第１の命令についての変換が完了する前にＴＩＯＣに渡すことができる。従属関係があるため、ＴＩＯＣは、第１の命令が処理されるまで、第２の命令を命令キューに維持することができる。その後、第２の命令の前に第１の命令をＣＰＵにディスパッチすることができる。同様に、第１の命令が変換されている間に、第１の命令に従属する後続の第３の命令が変換キャッシュ・ヒットとなり、ＴＩＯＣに渡される場合がある。第２の命令の場合と同様に、第３の命令もまた、第１の命令が処理されてディスパッチされるまで、命令キューに維持することができる。
【００４０】
ＴＩＯＣは、ミス・アンダー・ミスを特定するために、変換ロジックにおいて発生するミスの数を監視することもできる。上述のとおり、変換ロジックにおいてミスが発生する度に、ミスとなっている命令を特定する通知をＴＩＯＣに送信することができる。幾つかの実施形態においては、一度に１つの変換キャッシュ・ミスしか処理できないため、第１のミスが処理されている間に第２のミスが発生した場合には、ＴＩＯＣは、第１のミスが処理されるまでパイプラインをストール（stall）させることができる。図２は、第２のミスを引き起こしている命令を特定する、ＴＩＯＣからＴＩＩＣに送信されるストール・パイプライン信号を示す。
【００４１】
図５は、アドレス変換ミスを処理するためにＴＩＯＣによって行われる例示的な動作のフローチャートである。動作は、ステップ５０１において、変換ロジックからミス通知を受信することによって開始する。ステップ５０２において、ＴＩＯＣは、変換ロジックによって処理されている何らかの未解決のミスが存在するかどうかを判定する。未解決のミスが、現時点で変換ロジックによって処理されていない場合には、ステップ５１１において、ＴＩＯＣは、命令の入力命令ＦＩＦＯアドレスを記録する。ステップ５１２において、ＴＩＯＣは、ミスを引き起こしている命令の後の命令の処理を可能にし、それによって性能を向上させることができる。他方で、ステップ５０２において、未解決のミスが処理されていると判定された場合には、パイプラインをストールさせることができる。これは、ステップ５０３において、第２のミスを引き起こしている命令の入力命令ＦＩＦＯアドレスと共にストール指示をＴＩＩＣに送信することによって、行うことができる。ステップ５０４において、ＴＩＯＣは、第２のミスを引き起こしている命令の後のすべての命令を無視することができる。ＴＩＯＣは、これらの命令を、その入力命令ＦＩＦＯアドレスによって判定することができる。
【００４２】
ＴＩＯＣからストール指示を受信したことに応答して、ＴＩＩＣは、ＴＩＯＣからさらに通知されるまで命令を発行しないことによって、パイプラインをストールさせることができる。パイプラインは、第１のミスが処理され、変換結果がＴＩＯＣによって受信されるまで、ストールさせることができる。ＴＩＩＣはまた、入力命令ＦＩＦＯにおいて、第２のミスを引き起こしている命令をポイントするように、読取りポインタをリセットすることができる。したがって、第１のミスが処理された後で、第２のミスを引き起こしている命令及び後続の命令を再発行することができる。
【００４３】
パイプラインは、第２のミスを引き起こしている命令及び後続の命令を再発行する前に、空にすることができる。図６は、未解決の変換キャッシュ・ミスが処理された後で、第２のミスを引き起こしている命令を再発行するために行われる例示的な動作のフローチャートである。動作は、ステップ６０１において、第１のミスの処理を完了することによって開始する。ステップ６０２において、第１のミスが処理されたことを示す通知を、変換ロジックによってＴＩＯＣに送信することができる。ステップ６０３において、パイプラインを空にすることができるように、所定の時間の間パイプラインをストールさせることができる。
【００４４】
その後、ステップ６０４において、第２のミスを引き起こしている命令及び後続の命令の処理を再開することができる。第２のミスを引き起こしている命令及び後続の命令の処理を再開するための１つの簡単な方法は、命令を再発行することである。例えば、ＴＩＩＣは、上述のように、ミスを引き起こしている第２の命令及び後続の命令を入力命令ＦＩＦＯから受信して、命令を処理することができる。したがって、命令順は保たれる。
【００４５】
結論
所与の命令についてのアドレス変換の間に後続の命令の処理を可能にすることによって、全体的な性能を大幅に向上させることができる。さらに、本発明の実施形態は、アドレス変換キャッシュ・ミスを監視し、ミス・アンダー・ミスが発生した場合にはパイプラインをストールさせることによって、複数の変換キャッシュ・ミスを処理しながら命令順を維持することを容易なものとすることができる。
【００４６】
上述の事項は本発明の実施形態に向けられるものであるが、本発明の技術的な範囲から逸脱することなく本発明の他の実施形態及び更なる実施形態を考えることが可能であることを、この分野の当業者なら理解することだろう。
【図面の簡単な説明】
【００４７】
【図１】本発明の実施形態に係る例示的なシステムの説明図である。
【図２】本発明の実施形態に係る命令プロセッサの説明図である。
【図３】入力命令ＦＩＦＯ内の命令を処理するために変換インタフェース入力制御部によって行われる例示的な動作のフローチャートである。
【図４】仮想アドレスを物理アドレスに変換するために変換ロジックによって行われる例示的な動作のフローチャートである。
【図５】複数の変換キャッシュ・ミスを処理するために変換インタフェース出力制御部によって行われる例示的な動作のフローチャートである。
【図６】ミス・アンダー・ミスを引き起こしている命令を再処理する前にパイプラインを一括消去するために行われる例示的な動作のフローチャートである。
【図１】
2007207248.tif 000003
【図２】
2007207248.tif 000004
【図３】
2007207248.tif 000005
【図４】
2007207248.tif 000006
【図５】
2007207248.tif 000007
【図６】
2007207248.tif 000008