(57)【要約】【課題】コマンド・キュー内のコマンドを処理しながら、コマンドの順序を維持するための方法およびシステムを提供する。【解決手段】コマンドは、ＣＰＵの入力コマンドキュー内にキューイングされる。コマンドについてのアドレス変換中に、効率性を高めるために後続のコマンドが処理される。処理されたコマンドは、出力キュー内に配置されて、順番にＣＰＵへ送られる。コマンドについてのアドレス変換エントリが見つからない場合には、当該変換エントリは、メモリから取り出される。ミスとなったコマンドに従属する後続のコマンドについてのアドレス変換は、アドレス変換エントリがメモリから取り出されるまで保存される。したがって、後続コマンドについてのアドレス再変換が回避される。【選択図】図１
2007207249.tif 000002
【特許請求の範囲】
【請求項１】
１つ以上の入出力装置から受信されたコマンドのシーケンスを記憶するコマンド・キュー内のコマンドを処理するための方法であって、
前記コマンド・キュー内の第１のコマンドが対象とするアドレスを変換されるべきアドレス変換論理へ送信するステップと、
前記コマンド・キュー内の前記第１のコマンドが対象とする前記アドレスの仮想アドレスから実アドレスへの変換を含む前記変換論理のアドレス変換テーブル内にアドレス変換エントリがないと判断することに応じて、前記アドレス変換エントリをメモリから取り出すことを開始するステップと、
前記第１のコマンドについての前記エントリを取り出している間に、前記第１のコマンドに続いて受信された１つ以上のコマンドを処理するステップであって、前記コマンド・キュー内の第２のコマンドが対象とするアドレスを変換されるべき前記アドレス変換論理へ送信するステップと、
前記第１のコマンドに続いて受信された前記１つ以上のコマンドが前記第１のコマンドを送信したのと同一の装置によって送信されたと判断することに応じて、前記１つ以上のコマンドと、前記第２のコマンドのアドレス変換とを、前記第１のコマンドについての前記アドレス変換が完了するまで保存するステップと
を含む、方法。
【請求項２】
前記第２のコマンドについての前記アドレス変換を保持するステップは、前記第２のコマンドと、前記第２のコマンドについての前記アドレス変換とを第２のコマンドキューに記憶し、前記コマンドをバッファに記憶するステップを含む、請求項１に記載の方法。
【請求項３】
前記バッファがこれ以上コマンドを保持できないことを示すバッファ・フル信号を受信することに応じて、前記コマンドの処理を停止するステップをさらに含む、請求項２に記載の方法。
【請求項４】
前記第２のコマンドが前記第１のコマンドのソースからのものかどうかを判断するステップは、前記第１のコマンドおよび前記第２のコマンドの装置識別子および仮想チャンネル番号のうちの少なくとも１つを比較するステップを含む、請求項１に記載の方法。
【請求項５】
前記コマンドの処理を停止するステップは、前記第２のコマンド後に受信されたコマンドをポイントするポインタを前記コマンド・キューに設定するステップを含む、請求項３に記載の方法。
【請求項６】
前記コマンドは、
アドレス変換を必要とするコマンドと、
アドレスのないコマンドと
のうちの１つを含む、請求項１に記載の方法。
【請求項７】
前記コマンド・キューは、先入れ先出しキューである、請求項１に記載の方法。
【請求項８】
前記アドレス変換テーブルは、セグメント・テーブルと、ページ・テーブルとを含む、請求項１に記載の方法。
【請求項９】
１つ以上の入出力装置と、
（ｉ）前記１つ以上の入出力装置から受信されたコマンドのシーケンスを記憶するように構成されたコマンド・キュー、（ｉｉ）前記コマンド・キューからのコマンドをパイプライン式に処理するように構成された入力コントローラ、（ｉｉｉ）仮想アドレスから実アドレスへの変換を含むエントリを有するアドレス変換テーブルを使用して、前記入力コントローラによって処理されるコマンドが対象とするアドレスを変換するように構成されたアドレス変換論理、および（ｉｖ）アドレス変換エントリがキャッシュ内にない第１のコマンドを送信したのと同一の装置によって第２のコマンドが送信されたと判断することに応じて、前記第２のコマンドについての前記アドレス変換を、前記第１のコマンドについての前記アドレス変換が完了するまで保存するように構成された制御論理を含むプロセッサと
を含む、システム。
【請求項１０】
入出力装置からのコマンドのシーケンスを記憶するように構成されたコマンド・キューと、
前記コマンド・キュー内の前記コマンドをパイプライン式に処理するように構成された入力コントローラと、
アドレス変換テーブル内のキャッシュされたアドレス変換エントリを使用して、仮想アドレスを物理アドレスへ変換し、コマンドに関して前記アドレス変換エントリが前記キャッシュ内に見つからない場合には、対応するアドレス変換エントリをメモリから取り出すように構成されたアドレス変換論理と、
アドレス変換エントリがキャッシュ内にない第１のコマンドを送信したのと同一の装置によって第２のコマンドが送信されたと判断することに応じて、前記第２のコマンドについての前記アドレス変換を、前記第１のコマンドについての前記アドレス変換が完了するまで保存するように構成された出力コントローラと
を備える、マイクロプロセッサ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般的には、コマンド・キュー内のコマンドの処理に関する。より特定的には、本発明は、未解決のアドレス変換キャッシュ・ミス状態でアドレス変換キャッシュ・ヒットしたコマンド処理に関する。
【背景技術】
【０００２】
コンピューティング・システムは、一般的には、メモリおよび入出力（Ｉ／Ｏ）装置に通信可能に結合された１つ以上の中央処理装置（ＣＰＵ）を含む。メモリは、コンピュータによって行われる計算に必要な１つ以上のプログラムおよびデータを含むランダム・アクセス・メモリ（ＲＡＭ）であってもよい。例えば、メモリは、データを暗号化するためのプログラムを暗号化されるデータと共に含んでもよい。Ｉ／Ｏ装置は、コマンドを発行してＣＰＵから応答を受信するように構成されたビデオ・カード、サウンド・カード、グラフィックス処理装置などを含んでもよい。
【０００３】
ＣＰＵは、メモリまたはＩ／Ｏ装置から受信された１つ以上のコマンドを解釈し、実行することができる。例えば、システムは、２つの数を加算するための要求を受信してもよい。ＣＰＵは、２つの数を加算するための論理を含む（メモリ内の）プログラムのコマンドのシーケンスを実行してもよい。また、ＣＰＵは、加算すべき２つの数を入力する入力装置からユーザ入力を受信してもよい。計算終了時に、ＣＰＵは、その結果を表示画面などの出力装置に表示してもよい。
【発明の開示】
【発明が解決しようとする課題】
【０００４】
前のコマンドを処理した後に装置から次のコマンドを送信するのは時間がかかる場合があるが、ＣＰＵはその間アイドル状態のままでいなければならないので、装置からの複数のコマンドをＣＰＵのコマンド・キュー内にキューイングしてもよい。したがって、ＣＰＵは、前のコマンドの処理後に次のコマンドに高速でアクセスすることになる。ＣＰＵは、コマンド間の従属性のため、コマンドを所定の順番で実行する必要がある場合がある。したがって、従属コマンドが適切な順序で実行されることを確実にするために、コマンドは、キューに配置されて、先入れ先出し（ＦＩＦＯ）順序で処理される場合がある。例えば、あるメモリ位置における読み出し動作が当該メモリ位置への書き込み動作に続く場合には、正しいデータが読み出し動作中に読み出されることを確実にするために、書き込み動作がまず行われなければならない。したがって、同一の入出力装置から生じたコマンドは受信された順序でＣＰＵによって処理されるが、互いに異なる装置からのコマンドは順序が狂って処理されることがある。
【０００５】
ＣＰＵによって受信されたコマンドは、（ａ）アドレス変換を必要とするコマンドと、（ｂ）アドレスのないコマンドとに大別することができる。アドレスのないコマンドには、割り込みおよびＰｏｗｅｒＰＣ（登録商標）ｅｉｅｉｏ（入出力インオーダー実行強制（Ｅｎｆｏｒｃｅ  Ｉｎ−ｏｒｄｅｒ  Ｅｘｅｃｕｔｉｏｎ  ｏｆ  Ｉｎｐｕｔ／Ｏｕｔｐｕｔ））命令などの同期命令が含まれる。割り込みコマンドは、現在行っていることを後回しにして別のことをするようにＣＰＵに要求する、装置からＣＰＵに対するコマンドであってもよい。ｅｉｅｉｏ動作は、ｅｉｅｉｏコマンドに先行するすべてのコマンドが処理されるまで後続のコマンドが処理されないようにするために発行されてもよい。これらのコマンドに関連するアドレスはないので、アドレス変換は不要である。
【０００６】
アドレス変換を必要とするコマンドには、読み出しコマンドおよび書き込みコマンドが含まれる。読み出しコマンドには、読み出すべきデータの位置のアドレスが含まれてもよい。同様に、書き込みコマンドには、データが書き込まれるべき位置のアドレスが含まれてもよい。コマンドに与えられたアドレスは仮想アドレスであってもよいので、読み出しまたは書き込みを行う前に、アドレスは、実際の物理位置に変換される必要がある場合がある。
【０００７】
アドレス変換は、仮想アドレスを物理アドレスと照合するために、セグメント・テーブルおよびページ・テーブルを検索する必要がある場合がある。最後に対象となったアドレスについては、ページ・テーブル・エントリおよびセグメント・テーブル・エントリは、高速かつ効率的なアクセスのためにキャシュ内に保持されていることがある。しかしながら、キャッシュを通じた高速かつ効率的なアクセスであっても、アドレス変換中に後続のコマンドがパイプライン内で停止することがある。この問題に対する解決策の１つは、アドレス変換中にコマンド・キュー内の後続コマンドを処理することである。しかしながら、同一のＩ／Ｏ装置からのコマンドについては、コマンドの順番がやはり保持されていなければならない。
【０００８】
変換中に、仮想アドレスから物理アドレスへ変換するテーブル・エントリがキャッシュ内に見つからない場合には、エントリをメモリから取り出さなくてはならないことがある。変換キャッシュ・ミスがある場合にエントリを取り出すと、大きな待ち時間が生じることになる場合がある。あるコマンドについて変換キャッシュ・ミスが生じたとき、後続のコマンドについてのアドレス変換が継続している場合がある。しかしながら、システムによって許容されているのは１つの変換キャッシュ・ミスだけという場合がある。そのような場合は、変換キャッシュ・ヒット（ミス状態でのヒット）を有する後続のコマンド、またはアドレス変換を必要としないコマンドだけが、変換キャッシュ・ミスの処理中に処理可能である。
【０００９】
この解決策の問題の１つは、未解決のアドレス変換キャッシュ・ミス状態でキャッシュ・ヒットとなったコマンドは、未解決のアドレス変換キャッシュ・ミスとなるコマンドに従属していることがあるということである。例えば、従属コマンドは同一の装置から同一の仮想チャンネルで発行され、それによって、コマンドは順番通り実行される必要があることがある。そのような従属性の結果、後続の従属コマンドは、当該ミスとなったコマンドに対する変換結果が取り出されてから再び処理されることになることがある。したがって、後続の従属コマンドのアドレスは、未解決のミスが処理された後に再変換される必要がある場合がある。
【００１０】
この問題に対する解決策の１つは、一度に１つのコマンドのみを処理することである。しかしながら、上述のように、このようにすると、深刻な性能の劣化を引き起こすことがある。なぜならば、アドレス変換中にコマンドがパイプライン内で停止することがあるからである。他の解決策としては、ミスとなったコマンドについての変換エントリをメモリから取り出した後に、後続の従属コマンドを変換用に再発行することが挙げられよう。しかしながら、この解決策は、アドレス変換が重複するので効率的ではない。さらに他の解決策としては、変換キャッシュをロードする前に、ミスのないことを保証するソフトウェアを含めることが挙げられる。しかしながら、この解決策は、望ましくないソフトウェアのオーバヘッドを生じさせる。
【００１１】
したがって、ミス状態でヒットとなったコマンドを効率的に処理するためのシステムおよび方法が必要である。
【課題を解決するための手段】
【００１２】
本発明は、一般的には、コマンド・キュー内のコマンドを処理するための方法およびシステムを提供する。
【００１３】
本発明の一実施形態は、１つ以上の入出力装置から受信されたコマンドのシーケンスを記憶するコマンド・キュー内のコマンドを処理するための方法を提供する。本方法は、一般的には、コマンド・キュー内の第１のコマンドが対象とするアドレスを変換されるべきアドレス変換論理へ送信するステップと、コマンド・キュー内の第１のコマンドが対象とするアドレスの仮想アドレスから実アドレスへの変換を含む変換論理のアドレス変換テーブル内にアドレス変換エントリがないと判断することに応じて、アドレス変換エントリをメモリから取り出すことを開始するステップとを含む。本方法は、第１のコマンドについてのエントリを取り出す間に、第１のコマンドに続いて受信された１つ以上のコマンドを処理するステップをさらに含み、本処理は、コマンド・キュー内の第２のコマンドが対象とするアドレスを変換されるべきアドレス変換論理へ送信するステップを含む。本方法は、第１のコマンドに続いて受信された１つ以上のコマンドが第１のコマンドを送信したのと同一の装置によって送信されたと判断することに応じて、１つ以上のコマンドと、第２のコマンドのアドレス変換とを、第１のコマンドについてのアドレス変換が完了するまで保存するステップをさらに含む。
【００１４】
本発明の他の実施形態は、コマンド・キュー内のコマンドを処理するためのシステムを提供する。本システムは、一般的に、１つ以上の入出力装置と、プロセッサとを備える。プロセッサは、一般的に、（ｉ）１つ以上の入出力装置から受信されたコマンドのシーケンスを記憶するように構成されたコマンド・キューと、（ｉｉ）コマンド・キューからのコマンドをパイプライン式に処理するように構成された入力コントローラと、（ｉｉｉ）仮想アドレスから実アドレスへの変換を含むエントリを有するアドレス変換テーブルを使用して、入力コントローラによって処理されるコマンドが対象とするアドレスを変換するように構成されたアドレス変換論理と、（ｉｖ）アドレス変換エントリがキャッシュ内にない第１のコマンドを送信したのと同一の装置によって第２のコマンドが送信されたと判断することに応じて、第２のコマンドについてのアドレス変換を、第１のコマンドについてのアドレス変換が完了するまで保存するように構成された制御論理とを備える。
【００１５】
本発明のさらに他の実施形態は、コマンド・キュー内のコマンドを処理するためのマイクロプロセッサを提供する。本マイクロプロセッサは、一般的には、（ｉ）入出力装置からのコマンドのシーケンスを記憶するように構成されたコマンド・キューと、（ｉｉ）コマンド・キュー内のコマンドをパイプライン式に処理するように構成された入力コントローラと、（ｉｉｉ）アドレス変換テーブル内のキャッシュされたアドレス変換エントリを使用して、仮想アドレスを物理アドレスへ変換し、コマンドに関してアドレス変換エントリがキャッシュ内に見つからない場合には、対応するアドレス変換エントリをメモリから取り出すように構成されたアドレス変換論理と、（ｉｖ）アドレス変換エントリがキャッシュ内にない第１のコマンドを送信したのと同一の装置によって第２のコマンドが送信されたと判断することに応じて、第２のコマンドについてのアドレス変換を、第１のコマンドについてのアドレス変換が完了するまで保存するように構成された出力コントローラとを備える。
【発明を実施するための最良の形態】
【００１６】
本発明の上記の特徴、利点および目的が達成され、かつ詳細に理解することができるようにするには、以上簡単に概要を示した本発明を、添付の図面に図示される本発明の実施形態を参照してより詳細に説明すればよいであろう。
【００１７】
しかしながら、添付の図面は、本発明の典型的な実施形態を示すのみであり、したがって、本発明の範囲を制限するものとみなされるべきではないことに注意すべきである。なぜならば、本発明は、他の同様に効果的な実施形態を許容してもよいからである。
【００１８】
本発明の実施形態は、コマンド・キュー内のコマンドを処理しながら、コマンドの順序を維持するための方法およびシステムを提供する。コマンドは、ＣＰＵの入力コマンドキュー内にキューイングすることができる。コマンドについてのアドレス変換中に、効率性を高めるために後続のコマンドを処理することができる。処理されたコマンドは、出力キュー内に置かれて、順番にＣＰＵへ送信することができる。コマンドについてのアドレス変換エントリが見つからない場合には、当該変換エントリは、メモリから取り出すことができる。ミスとなったコマンドに従属する後続のコマンドについてのアドレス変換は、アドレス変換エントリがメモリから取り出されるまで保存することができる。したがって、後続コマンドについてのアドレス再変換が回避される。
【００１９】
以下では、本発明の実施形態を参照する。しかしながら、本発明は説明された特定の実施形態に限定されるものではないことが理解されるべきである。代わりに、以下の特徴および要素の任意の組み合わせが、互いに異なる実施形態に関連するか否かに関わらず、本発明を実施するために意図されている。さらに、様々な実施形態において、本発明は、従来技術に対する数々の利点を提供する。しかしながら、本発明の実施形態は、他の解決策と思われるものまたは従来技術あるいはその両方に対する利点を達成することができるものの、特定の利点が所定の実施形態によって達成されるか否かによって本発明が制限されるわけではない。よって、以下の局面、特徴、実施形態、および利点は例示に過ぎず、特許請求の範囲で明示的に述べられていない限り、特許請求の範囲の要素または制限とはみなされない。同様に、「本発明」という言及は、本明細書において開示されたいかなる発明の主題を一般化したものと解釈されてはならず、特許請求の範囲で明示的に述べられていない限り、特許請求の範囲の要素または制限とはみなされない。
【００２０】
システム例
図１は、本発明の実施形態を実装可能なシステム例１００を示す。システム１００は、入出力（Ｉ／Ｏ）装置１３０およびメモリ１４０に通信可能に結合された中央処理装置（ＣＰＵ）１１０を含むことができる。例えば、ＣＰＵ１１０は、Ｉ／Ｏブリッジ１２０を通じてＩ／Ｏ装置１３０に、バスによってメモリ１４０に結合できる。Ｉ／Ｏ装置１３０は、図示のように、たとえばコマンド１３１を通じて入力をＣＰＵ１１０へ与えるように構成されている。Ｉ／Ｏ装置の例としては、グラフィックス処理装置、ビデオ・カード、サウンド・カード、ダイナミック・ランダム・アクセス・メモリ（ＤＲＡＭ）などが含まれる。
【００２１】
Ｉ／Ｏ装置１３０は、ＣＰＵ１１０からの応答１３２を受信するように構成することもできる。例えば、応答１３２には、ユーザに対して表示されるような、ＣＰＵ１１０による計算結果が含まれてもよい。２つのＩ／Ｏ装置１３０のみが図１には示されているが、同一または複数のバス上でＣＰＵに結合されるＩ／Ｏ装置１３０の数がいくつであってもよいことを当業者は理解するだろう。
【００２２】
メモリ１４０は、好ましくは、ダイナミック・ランダム・アクセス・メモリ（ＤＲＡＭ）のようなランダム・アクセス・メモリである。メモリ１４０は、ＣＰＵによって処理されている１つ以上のプログラムまたはデータ構造あるいはその両方を保持するのに十分なほど大きいものでありうる。メモリ１４０は単一の実体として示されているが、メモリ１４０は、実際には複数のモジュールを備えてもよく、メモリ１４０は、高速キャッシュから容量の大きい低速のＤＲＡＭチップまで複数のレベルで存在しうる。
【００２３】
ＣＰＵ１１０は、コマンド・プロセッサ１１１と、変換論理１１２と、埋め込みプロセッサ１１３と、キャッシュ１１４とを含むことができる。コマンド・プロセッサ１１１は、１つ以上のコマンド１３１をＩ／Ｏ装置１３０から受信して、処理することができる。各コマンド１３１は、アドレス変換を必要とするコマンドと、アドレスのないコマンドとに大別することができる。したがって、コマンドを処理することには、コマンドがアドレス変換を必要とするかどうかを判断することが含まれることになろう。コマンドがアドレス変換を必要とする場合には、コマンド・プロセッサは、アドレス変換のためにコマンドを変換論理１１２へディスパッチすることができる。変換を必要とするコマンド１３１が変換された後に、コマンド・プロセッサは、順序付けられたコマンド１３３をオンチップ・バス１１７上に配置して、メモリ・コントローラ１１８上で埋め込みプロセッサ１１３によって処理されるようにすることができる。
【００２４】
変換論理１１２は、アドレス変換を必要とする１つ以上のコマンドをコマンド・プロセッサ１１１から受信してもよい。アドレス変換を必要とするコマンドには、例えば、読み出しおよび書き込みコマンドが含まれてもよい。読み出しコマンドには、読み出すべきデータの位置のアドレスが含まれてもよい。同様に、書き込み動作には、データが書き込まれるべき位置のアドレスが含まれてもよい。
【００２５】
変換を必要とするコマンドに含まれるアドレスは、仮想アドレスであってもよい。仮想アドレスは、特定のプログラムに割り当てられる仮想メモリのことを指していることがある。仮想メモリは、プログラムに割り当てられた連続するメモリ空間であってもよく、メモリ１４０内の互いに異なる非連続の物理メモリ位置にマッピングする。例えば、仮想メモリ・アドレスは、物理メモリまたは２次ストレージあるいはその両方内の互いに異なる非連続のメモリ位置にマッピングしてもよい。したがって、仮想メモリアドレスが使用される場合には、当該仮想アドレスは、当該位置において動作を行うために、実際の物理アドレスに変換されなければならない。
【００２６】
アドレス変換は、セグメント・テーブルと、ページ・テーブルとを検索することを伴ってもよい。セグメント・テーブルまたはページ・テーブルあるいはその両方は、仮想アドレスを物理アドレスに対応させることができる。これらの変換前のテーブル・エントリは、メイン・メモリ内に存在することができる。最後にアクセスされたデータについてのアドレス変換は、キャッシュ１１４内のセグメント・テーブル１１６およびページ・テーブル１１５に存在して、最後にアクセスされたアドレスに対する後続のアドレスについての変換時間を短縮することができる。アドレス変換がキャッシュ１１４内で見つかった場合には、変換キャッシュ・ヒットが生じて、キャッシュ内のページ・テーブル・エントリおよびセグメント・テーブル・エントリから変換を取り出すことができる。アドレス変換がキャッシュ１１４内で見つからない場合には、変換キャッシュ・ミスが生じて、必要に応じて、メモリまたは他のストレージから変換をキャッシュに持ってくることになろう。
【００２７】
セグメント・テーブル１１６は、仮想アドレスが特定のプログラムに割り当てられたメモリのセグメント内にあるかどうかを示すことができる。セグメントは、仮想メモリ内にある大きさが可変のブロックであってもよく、各ブロックは、特定のプログラムまたは処理に割り当てられている。したがって、セグメント・テーブルが最初にアクセスされてもよい。仮想アドレスがプログラムのセグメントの範囲外の領域をアドレス指定する場合には、セグメンテーション・フォールトが生じる。
【００２８】
各セグメントは、ページと称される大きさが固定のブロックに分割されてもよい。仮想アドレスは、セグメント内に含まれる１つ以上のページをアドレス指定してもよい。ページ・テーブル１１５は、仮想アドレスをメモリ内のページにマッピングしてもよい。メモリ内にページが見つからない場合には、当該ページは、所望のページが存在するであろう２次ストレージから取り出すことができる。
【００２９】
コマンド処理
図２は、本発明の一実施形態に係る、Ｉ／Ｏ装置１３０からのコマンド処理するように構成されるようなコマンド・プロセッサ１１１の詳細図である。コマンド・プロセッサ１１１は、入力コマンドＦＩＦＯ２０１と、変換インターフェース入力制御２０２と、変換インターフェース出力制御２０３と、コマンド・キュー２０４とを含むことができる。入力コマンドＦＩＦＯ２０１は、Ｉ／Ｏ装置１３０によってＣＰＵに対して発行されるであろう所定数のコマンド１３１を少なくとも保持するのに十分大きなバッファであってもよい。コマンド１３１は、受信された順番で順次入力コマンドＦＩＦＯ２０１に格納されてもよい。
【００３０】
変換インターフェース入力制御（ＴＩＩＣ）２０２は、入力コマンドＦＩＦＯ２０１を監視および管理することができる。ＴＩＩＣは、読み出しポインタ２１０と、書き込みポインタ２１１とを保持することができる。読み出しポインタ２１０は、入力コマンドＦＩＦＯ内の処理用に次に使用可能なコマンドをポイントすることができる。書き込みポインタ２１１は、入力コマンドＦＩＦＯ内に新規に受信したコマンドを書き込むための、次に使用可能な位置を示すことができる。各コマンドが入力コマンドＦＩＦＯから取り出されて処理に供せられるにつれて、読み出しポインタは増分される。同様に、各コマンドがＩ／Ｏ装置から受信されるにつれて、書き込みポインタも増分される。読み出しポインタまたは書き込みポインタが入力コマンドＦＩＦＯの最後に到達した場合には、ポインタをリセットして、次の増分の際に入力コマンドＦＩＦＯの最初をポイントするようにすることができる。
【００３１】
ＴＩＩＣ２０２は、書き込みポインタが読み出しポインタを超えて増分することを防止することによって、入力コマンドＦＩＦＯがオーバフローしないことを確実にするように構成することができる。例えば、書き込みポインタが増分されて、読み出しポインタと同じ位置をポイントする場合には、バッファは未処理コマンドで満たされていることになろう。もしこれ以上コマンドを受信する場合には、ＴＩＩＣは、当該コマンドをＣＰＵにラッチできないであろう旨を示すエラー・メッセージを送信してもよい。
【００３２】
ＴＩＩＣ２０２は、入力コマンドＦＩＦＯ２０１に受信されたコマンドがアドレス変換を必要とするコマンドであるかどうかを判断することができる。変換を必要とするコマンドが受信される場合には、当該コマンドは、変換論理１１２へ導かれて、処理に供せられることになろう。しかしながら、コマンドがアドレス変換を必要としない場合には、当該コマンドは、パイプラインへ渡されることになろう。
【００３３】
図３は、入力コマンドＦＩＦＯ内のコマンドを処理するためにＴＩＩＣによって行われる動作例のフローである。ＴＩＩＣによって行われる動作は、パイプラインによる動作であってもよい。したがって、いつでも複数のコマンドが処理状態にあり得る。例えば、第１のコマンドが入力コマンドＦＩＦＯからＴＩＩＣによって受信されて処理に供されてもよい。第１のコマンドが受信されている際に、その前に受信された第２のコマンドがＴＩＩＣによって変換論理に送信されてアドレス変換に供されてもよい。
【００３４】
ＴＩＩＣにおける動作は、ステップ３０１において、入力コマンドＦＩＦＯからコマンドを受信することによって開始する。例えば、ＴＩＩＣは、読み出しポインタによってポイントされたコマンドを読み出すことができる。コマンドが読み出された後、読み出しポインタは増分されて、次のコマンドをポイントすることになろう。ステップ３０２において、ＴＩＩＣは、取り出したコマンドがアドレス変換を必要とするかどうかを判断することができる。コマンドがアドレス変換を必要とすると判断された場合には、当該コマンドは、ステップ３０３において、アドレス変換のために変換論理１１２へ送信されることになろう。ステップ３０４において、変換論理へ送信されたコマンドの入力コマンドＦＩＦＯアドレスは、パイプラインへ送信されることになろう。ステップ３０２においてコマンドがアドレス変換を必要としないと判断された場合には、当該コマンドおよび当該コマンドの入力コマンドＦＩＦＯアドレスは、ステップ３０５において、パイプラインへ送信されることになろう。
【００３５】
図２を再び参照すると、変換論理１１２は、ＴＩＩＣからのアドレス変換要求を処理することができる。アドレス変換には、セグメント・テーブルおよびページ・テーブルを検索して、仮想アドレスからメモリ１４０の実際の物理アドレスへ変換することを伴ってもよい。実施形態によっては、変換論理は、ページ・テーブル・キャッシュおよびセグメント・テーブル・キャッシュに対するパイプラインによるアクセスを許可してもよい。アドレス変換中にページ・キャッシュ・ミスおよびセグメント・キャッシュ・ミスが生じた場合には、キャッシュ・ミスが処理されている間に、キャッシュは、既存のエントリがあるコマンドのアドレスを供給し続けてもよい。アドレス変換中にミスが生じない場合には、変換論理は、図２に示すように、変換結果を変換インターフェース出力制御（ＴＩＯＣ）２０３へ提供することができる。しかしながら、ミスが生じた場合には、変換論理は、ミスを生じさせたコマンドについてＴＩＯＣに通知してもよい。
【００３６】
図４は、アドレス変換のために変換論理によって行われる動作例のフローである。ＴＩＩＣと同様に、変換論理によって行われる動作は、パイプラインによるものであってもよい。したがって、いつでも複数のコマンドが処理状態にあり得る。動作は、ステップ４０１において、コマンドに対するアドレス変換の要求をＴＩＩＣから受信することによって開始することができる。ステップ４０２において、変換論理は、対応するエントリを取り出すためにセグメント・テーブル・キャッシュおよびページ・テーブル・キャッシュにアクセスして、仮想アドレスを物理アドレスに変換することができる。ステップ４０３において、対応するページ・テーブル・エントリおよびセグメント・テーブル・エントリがキャッシュ内に見つかった場合には、ステップ４０４において、アドレス変換結果をＴＩＯＣへ送信することができる。
【００３７】
しかしながら、ページ・テーブル・エントリおよびセグメント・テーブル・エントリがページ・テーブル・キャッシュおよびセグメント・テーブル・キャッシュ内に見つからなかった場合には、ステップ４０５において、コマンド・アドレスについての変換ミスの通知が送信されることになろう。ステップ４０６において、変換論理は、ミス処理手続を開始することになろう。例えば、ミス処理は、対応するページ・テーブル・エントリまたはセグメント・テーブル・エントリに対する要求をメモリまたは２次ストレージ装置へ送信することを含んでもよい。
【００３８】
重要なのは、実施形態によっては、処理中の未解決のミスがある場合に、変換論理は、１つの変換キャッシュ・ミスしか扱えないことがあるということである。第２のミスが生じた場合には、ミスの通知がＴＩＯＣへ送信されてもよい。未解決のミスが処理されている間の第２のミスの処理は、以下により詳細に説明する。さらに、未解決のミスが処理されている間に、アドレス変換を必要とする後続のコマンドを処理し続けることができる。ページ・テーブル・エントリおよびセグメント・テーブル・エントリをメモリまたは２次ストレージから取り出すことは、比較的長い時間がかかる場合があるので、後続のコマンドを停止すると、性能が著しく低下することがある。したがって、変換キャッシュ・ヒットのある後続のコマンドを、ミスを処理している間に処理してもよい。
【００３９】
ミス状態でのコマンド処理
図２を再び参照して、実施形態によっては、ＴＩＯＣは、変換論理によって処理されている未解決のミスの数を突き止めて、コマンド間の従属性に基づいてコマンドの順序付けを保持してもよい。例えば、ＴＩＯＣは、アドレス変換のために変換論理へ送信されたコマンドの入力コマンドＦＩＦＯアドレス（ポインタ）を受信すると共に、アドレス変換を必要としないコマンドを受信してもよい。受信されたコマンドが、まだ処理されていないかまたは現在処理状態にあるコマンドに従属していない場合には、コマンド完了信号１３３が、当該コマンドについてアサートされてもよい。例えば、コマンド完了信号は、当該コマンドが処理されてプロセッサへ送信できる準備が整った旨を示してもよい。
【００４０】
一方、ＴＩＯＣによって受信されたコマンドが、まだ処理されていない可能性のあるコマンドに従属している場合には、当該コマンドについてコマンド完了信号をアサートすることはできない。例えば、入力コマンドＦＩＦＯ内の第１のコマンドがアドレス変換を必要として、アドレス変換のために変換論理へ転送されることがある。第１のコマンドが変換されている間に、第１のコマンドに従属する、アドレス変換を必要としない後続の第２のコマンドが、第１のコマンドより早くＴＩＯＣへ渡される場合がある。同様に、第１のコマンドが変換されている間に、第１のコマンドに従属する第３のコマンドが、変換キャッシュ・ヒットとなってＴＩＯＣへ渡される場合がある。
【００４１】
各コマンドは、当該コマンドに関連したＩ／Ｏ識別子（ＩＯＩＤ）と、仮想チャンネル番号とを含んでもよい。ＩＯＩＤは、例えば、受信されたコマンドを送信したＩ／Ｏ装置を識別することができる。ＴＩＯＣは、アドレス変換ヒットとなったコマンドのＩＯＩＤおよび仮想チャンネルを、変換エントリをメモリから取り出している対象となるアドレスを有するコマンドのＩＯＩＤおよび仮想チャンネルと比較することによって、コマンド間の従属性を識別することができる。
【００４２】
本明細書で使用されているように、仮想チャンネルという用語は、一般的に、例えばＩ／Ｏ装置およびプロセッサなどの構成要素間で要求または応答あるいはその両方を搬送するデータ・パスのことを指す。各仮想チャンネルは、典型的には、装置内の異なるバッファを使用し、仮想チャンネル番号は、当該仮想チャンネル上を伝送されたパケットがどのバッファを使用することになるかを示す。仮想チャンネルが仮想と称されるのは、複数の仮想チャンネルは、単一の共通の物理インターフェース（例えば、バス）を使用することができると同時に、別個のチャンネルとして見えかつそのように機能するからである。
【００４３】
アドレス変換キャッシュ内にミス状態でヒットなった従属コマンドが生じた場合には、当該コマンドは変換されたアドレスと共に、ＴＩＯＣによってヒット衝突ＦＩＦＯ２０５に記憶されてもよい。ヒット衝突ＦＩＦＯ２０５は、所定の数のコマンドを保持するのに十分に大きいバッファであってもよい。ＴＩＯＣは、未解決のアドレス変換ミスが処理されるまで、ヒット衝突ＦＩＦＯ２０５に記憶されたコマンドについてのコマンド完了信号をアサートしなくてもよい。
【００４４】
ミスとなったコマンドについての変換結果を取り出した後に、ＴＩＯＣは、ミスとなったコマンドについてのコマンド完了信号をアサートしてもよい。また、コマンド完了信号は、ヒット衝突ＦＩＦＯ内のコマンドについてアサートされてもよい。ヒット衝突ＦＩＦＯ内のコマンドの発行と同時に、コマンド・キューに記憶された以前の変換結果を使用してもよい。したがって、ヒット衝突ＦＩＦＯ内のコマンドについてのアドレスの再変換が回避される。
【００４５】
ミスとなったコマンドについてのアドレス変換エントリを取り出すための待ち時間は大きいことがあるので、ヒット衝突ＦＩＦＯ２０５を満杯にして、アドレス変換キャッシュでヒットになった従属コマンドに対するスペースを取っておかないようにしてもよい。ヒット衝突ＦＩＦＯがフルになると、図２に示すように、ヒット衝突ＦＩＦＯフル信号２１２をＴＩＩＣへ送信してもよい。ヒット衝突ＦＩＦＯフル信号を受信することに応答して、ＴＩＩＣはコマンド処理を停止することになろう。さらに、ＴＩＩＣは、読み出しポインタ２１０をリセットして、ヒット衝突ＦＩＦＯに記憶された最終コマンドに続くコマンドをポイントするようにしてもよい。したがって、ヒット衝突ＦＩＦＯがフルになる前にＴＩＩＣによって処理されたパイプライン内の任意のコマンドが再び発行されることになろう。
【００４６】
図５は、ミス状態でヒットとなったコマンドを処理するためにＴＩＯＣによって行われる動作例のフローである。動作は、ステップ５０１において、ＴＩＩＣからコマンドを受信することによって開始する。ステップ５０２において、ＴＩＯＣは、コマンドが、アドレス変換キャッシュ内のミスとなったコマンドと同一のＩＯＩＤおよび仮想チャンネル番号を有するかどうかを判断する。当該コマンドのＩＯＩＤおよび仮想チャンネル番号がミスとなったコマンドのＩＯＩＤおよび仮想チャンネル番号と一致しない場合には、ＴＩＯＣは、ステップ５０３において、コマンド・キュー内にコマンド記憶して、当該コマンドについてコマンド完了信号を発行する。
【００４７】
一方、当該コマンドのＩＯＩＤおよび仮想チャンネル番号がミスとなったコマンドのＩＯＩＤおよび仮想チャンネル番号と一致する場合には、ＴＩＯＣは、ステップ５０５において、コマンドと、当該コマンドの変換結果とをヒット衝突ＦＩＦＯに記憶する。ステップ５０４において、ヒット衝突ＦＩＦＯが現在フルかどうかを判断する。ヒット衝突ＦＩＦＯが現在フルである場合には、ステップ５０６において、ヒット衝突ＦＩＦＯフル信号がＴＩＩＣへ送信される。
【００４８】
また、ＴＩＯＣは、ミス状態でのミスを識別するために、変換論理において生じたミスの数を監視してもよい。上述のように、変換論理でミスが生じる度に、ミスとなったコマンドを識別する通知をＴＩＯＣへ送信することができる。第１のミスを処理している間に第２のミスが生じた場合には、ＴＩＯＣは、第１のミスが処理し終わるまでパイプラインを停止することができる。ＴＩＯＣは、コマンドについての以前のミスが完了し、第２のミスを生じさせたコマンドの処理が再開できる前まで、パイプラインを停止することができる。図２は、ＴＩＯＣからＴＩＩＣへ送信される、第２のミスを生じさせたコマンドを識別するパイプライン停止信号２１４を示す。
【００４９】
図６は、アドレス変換ミスを処理するためにＴＩＯＣによって行われる動作例のフローである。動作は、ステップ６０１において、変換論理からミス通知を受信することによって開始する。ステップ６０２において、ＴＩＯＣは、変換論理によって処理されている未解決のミスがあるかどうかを判断する。変換論理によって処理されている未解決のミスがない場合には、ステップ６１１において、ＴＩＯＣは、当該コマンドの入力コマンドＦＩＦＯアドレスを記録する。ステップ６１２において、ＴＩＯＣは、ミスを生じさせたコマンドに続くコマンドの処理を許可してもよく、これによって性能が向上する。一方、ステップ６０２において未解決のミスが処理されていると判断された場合には、パイプラインを停止することができる。これは、ステップ６０３において、第２のミスを生じさせたコマンドの入力コマンドＦＩＦＯアドレスと共に、ＴＩＩＣを停止する旨を送信することによって行うことができる。ステップ６０４において、ＴＩＯＣは、第２のミスを生じさせたコマンドに続くすべてのコマンドを無視することができる。ＴＩＯＣは、入力コマンドＦＩＦＯアドレスによってこれらのコマンドを判断してもよい。
【００５０】
ＴＩＯＣからの停止通知を受信することに応じて、ＴＩＩＣは、ＴＩＯＣからさらなる通知が来るまで、コマンド発行しないことによってパイプラインを停止することができる。パイプラインは、第１のミスが処理されて変換結果がＴＩＯＣによって受信されるまで停止されてもよい。また、ＴＩＩＣは、入力コマンドＦＩＦＯ内の第２のミスを生じさせたコマンドをポイントするように、読み出しポインタをリセットしてもよい。したがって、第２のミスを生じさせたコマンドおよび後続のコマンドは、第１のミスが処理された後に再発行されてもよい。
【００５１】
第２のミスを生じさせたコマンドおよび後続のコマンドを再発行する前に、パイプラインを空にしてもよい。図７は、未解決の変換キャッシュ・ミスを処理した後に第２のミスを生じさせたコマンドを再発行するために行われる動作例のフローである。動作は、ステップ７０１において、第１のミスの処理を完了することによって開始する。ステップ７０２において、第１のミスが処理された旨を示す通知が、変換論理によってＴＩＯＣへ送信される。ステップ７０３において、パイプラインを空にできるように、予め規定された期間、パイプラインを停止することができる。
【００５２】
その後、ステップ７０４において、第２のミスを生じさせたコマンドおよび後続のコマンドの処理が再開されることになろう。第２のミスを生じさせたコマンドおよび後続のコマンドの処理を再開するための簡易なやり方の１つは、コマンドを再発行することであろう。例えば、ＴＩＩＣは、第２のミスを生じさせたコマンドおよび後続のコマンドを入力コマンドＦＩＦＯから受信して、これらのコマンドを上述のように処理することができる。したがって、コマンドの順序付けは維持される。
【００５３】
結論
所与のコマンドについてのアドレス変換中に後続のコマンドの処理を許可することによって、パフォーマンス全体を大きく向上することができる。さらに、所与のコマンドおよびそのアドレス変換に従属する後続コマンドを、所与のコマンドが取り出されるまで保存することによって、従属コマンドについてのアドレスを再変換する必要を回避することができる。
【００５４】
以上は、本発明の実施形態に向けられているが、本発明の他の実施形態およびさらなる実施形態が本発明の基本的な範囲から逸脱することなく行われてもよく、その範囲は、添付の請求項によって決定される。
【図面の簡単な説明】
【００５５】
【図１】本発明の一実施形態に係るシステム例の図である。
【図２】本発明の一実施形態に係るコマンド・プロセッサの図である。
【図３】入力コマンドＦＩＦＯ内のコマンドを処理するために変換インターフェース入力制御をによって行われる動作例のフローである。
【図４】仮想アドレスを物理アドレスに変換するために変換論理によって行われる動作例のフローである。
【図５】ミス状態でのヒットを処理するために変換インターフェース出力制御によって行われる動作例のフローである。
【図６】複数の変換キャッシュ・ミスを処理するために変換インターフェース出力制御によって行われる動作例のフローである。
【図７】ミス状態でのミスを生じさせたコマンドを再処理する前にパイプラインをフラッシュするために行われる動作例のフローである。
【図１】
2007207249.tif 000003
【図２】
2007207249.tif 000004
【図３】
2007207249.tif 000005
【図４】
2007207249.tif 000006
【図５】
2007207249.tif 000007
【図６】
2007207249.tif 000008
【図７】
2007207249.tif 000009