(57)【要約】【課題】一般に、本発明の実施形態は、ＣＰＵの中のＩ／Ｏコマンドに起因するＩ／Ｏアドレス変換キャッシュ・ミスを処理する改良された技術を提供する。【解決手段】いくつかの実施形態では、Ｉ／Ｏアドレス変換キャッシュが、所要情報を用いて更新されるまで、ＣＰＵハードウェアは、Ｉ／Ｏアドレス変換キャッシュ・ミスを引き起こすＩ／Ｏコマンドを、コマンド・キュー内にバッファすることができる。Ｉ／Ｏアドレス変換キャッシュが更新されたとき、ＣＰＵは、コマンド・キューからＩ／Ｏコマンドを再発行して、都合の良いときにＩ／Ｏコマンドのアドレスを変換し、あたかもキャッシュ・ミスが発生しなかったかのようにコマンドを実行処理できる。このように、Ｉ／Ｏデバイスは、ＣＰＵからのエラー応答を処理する必要がなく、Ｉ／ＯコマンドはＣＰＵにより処理されて、Ｉ／Ｏコマンドは破棄されない。【選択図】図１
2007287143.tif 000002
【特許請求の範囲】
【請求項１】
１つ以上のＩ／Ｏデバイスにより中央演算処理装置に送出された１つ以上のＩ／Ｏコマンドに起因するＩ／Ｏアドレス変換キャッシュ・ミスを処理する方法であって、
前記中央演算処理装置（ＣＰＵ）の中の１つ以上のコマンド・キュー内に前記１つ以上のＩ／Ｏコマンドをバッファするステップと、
記憶装置から少なくとも１つのＩ／Ｏアドレス変換テーブル・エントリをフェッチして、かつ前記Ｉ／Ｏアドレス変換キャッシュ内に前記Ｉ／Ｏアドレス変換テーブル・エントリを入れるステップと、
Ｉ／Ｏアドレス変換のための前記１つ以上のＩ／Ｏコマンドを再発行すること、または前記ＣＰＵに前記１つ以上のＩ／Ｏコマンドを送出した前記１つ以上のＩ／Ｏデバイスにエラー・メッセージを送出することのうちの少なくとも１つを実行するステップとを含む、方法。
【請求項２】
前記１つ以上のＩ／Ｏコマンドが、Ｉ／Ｏアドレス変換キャッシュ・ミスを引き起こすとき、前記中央演算処理装置内にエクセプションを出力するステップをさらに含む、請求項１に記載の方法。
【請求項３】
前記１つ以上のＩ／Ｏコマンドが、Ｉ／Ｏアドレス変換キャッシュ・ミスを引き起こすとき、前記ＣＰＵに対して前記１つ以上のＩ／Ｏコマンドが送出された１つ以上の仮想チャンネルに対応するエクセプション・ステータス・レジスタ内にビットを設定するステップをさらに含む、請求項２に記載の方法。
【請求項４】
前記Ｉ／Ｏアドレス変換テーブル・エントリをフェッチするステップに呼応して、ソフトウェアがエクセプション・ステータス・レジスタ内のビットをクリアするステップをさらに含む、請求項１に記載の方法。
【請求項５】
ソフトウェアがエクセプション・ステータス・レジスタ内のビットをクリアするステップに呼応して、Ｉ／Ｏアドレス変換のための前記１つ以上のコマンドを再発行すること、またはソフトウェアがフォールト除去ビット（ｆａｕｌｔ  ｒｅｊｅｃｔｉｏｎ  ｂｉｔ）を設定するステップに呼応して、前記中央演算処理装置に前記Ｉ／Ｏコマンドを送出した前記１つ以上のデバイスにエラー・メッセージを送出することのうちの少なくとも１つを、ソフトウェアがエクセプション・ステータス・レジスタ内のビットをクリアするステップに呼応して実行するステップをさらに含む、請求項４に記載の方法。
【請求項６】
記憶装置から前記Ｉ／Ｏアドレス変換テーブル・エントリをフェッチして、かつ前記Ｉ／Ｏアドレス変換キャッシュ内に前記Ｉ／Ｏアドレス変換テーブル・エントリを入れるステップが、ソフトウェアにより処理される、請求項１に記載の方法。
【請求項７】
前記１つ以上のコマンド・キューが、前記中央演算処理装置に対して前記１つ以上のＩ／Ｏコマンドが送出された同じ仮想チャンネルに対応する１つ以上のＩ／Ｏコマンドを保存する、請求項１に記載の方法。
【請求項８】
前記１つ以上のＩ／Ｏコマンドが仮想チャンネル・ベースで再発行される、請求項７に記載の方法。
【請求項９】
前記ＣＰＵに前記１つ以上のＩ／Ｏコマンドを送出した前記１つ以上のＩ／Ｏデバイスにエラー・メッセージを送出するステップが、仮想チャンネルごとに、前記１つ以上のコマンド・キューから前記１つ以上のコマンドを消去するステップをさらに含む、請求項７に記載の方法。
【請求項１０】
Ｉ／Ｏアドレス変換キャッシュと、
１つ以上のエクセプション・コマンド・キューと、
前記Ｉ／Ｏアドレス変換キャッシュ内でミスを引き起こした１つ以上のＩ／Ｏコマンドを、前記１つ以上のエクセプション・コマンド・キュー内にバッファして、エクセプションの後に、ソフトウェア制御の下で、前記Ｉ／Ｏアドレス変換キャッシュをロードして、かつＩ／Ｏアドレス変換のための前記１つ以上のＩ／Ｏコマンドを再発行すること、または前記１つ以上のＩ／Ｏコマンドを送出した前記１つ以上のＩ／Ｏデバイスにエラー・メッセージを送出することのうちの少なくとも１つを実行するように構成されたコマンド処理ロジックとを含む、中央演算処理装置（ＣＰＵ）。
【請求項１１】
前記コマンド処理ロジックが、
前記１つ以上のＩ／ＯコマンドがＩ／Ｏアドレス変換キャッシュ・ミスを引き起こして、かつ前記コマンド処理ロジックがソフトウェアでキャッシュ・ミスを処理するように構成されているとき、前記ＣＰＵ内にエクセプションを出力して、
かつ前記１つ以上のＩ／Ｏコマンドが前記Ｉ／Ｏアドレス変換キャッシュ内でミスを引き起こしたとき、前記ＣＰＵに対して前記１つ以上のＩ／Ｏコマンドが送出された１つ以上の仮想チャンネルに対応するエクセプション・ステータス・レジスタ内にビットを設定するようさらに構成される、請求項１０に記載のＣＰＵ。
【請求項１２】
ソフトウェアによりクリアされうるビットを有するエクセプション・ステータス・レジスタ、またはソフトウェアにより設定されうるフォールト除去ビットを有する仮想チャンネル・クリア・レジスタのうちの少なくとも１つをさらに含む、請求項１０に記載のＣＰＵ。
【請求項１３】
前記コマンド処理ロジックが、前記コマンド・キューの中に、前記ＣＰＵに対して前記１つ以上のＩ／Ｏコマンドが送出された１つ以上の仮想チャンネルに対応する１つ以上のＩ／Ｏコマンドをバッファするとともに、
前記コマンド処理ロジックが、前記エクセプション・ステータス・レジスタ内のクリアされたビットに呼応して、仮想チャンネル・ベースで前記１つ以上のＩ／Ｏコマンドを再発行するようさらに構成される、請求項１２に記載のＣＰＵ。
【請求項１４】
前記仮想チャンネル・クリア・レジスタ内に前記フォールト除去ビットを設定するステップに呼応して、前記コマンド処理ロジックが、前記ＣＰＵに対して前記１つ以上のＩ／Ｏコマンドを送出した前記１つ以上のＩ／Ｏデバイスに、仮想チャンネル・ベースでエラー・メッセージを送出し、かつ前記ＣＰＵに対して前記１つ以上のコマンドを送出した前記Ｉ／Ｏデバイスに対応する前記コマンド・キューから１つ以上のコマンドを消去するようさらに構成される、請求項１２に記載のＣＰＵ。
【請求項１５】
１つ以上の入出力（Ｉ／Ｏ）デバイスと、
中央演算処理装置（ＣＰＵ）とを含むシステムであって、該ＣＰＵが
１つ以上のエクセプション・コマンド・キューと、
Ｉ／Ｏアドレス変換キャッシュと、
前記Ｉ／Ｏアドレス変換キャッシュ内でミスを引き起こす１つ以上のＩ／Ｏコマンドを、前記１つ以上のエクセプション・コマンド・キュー内にバッファして、
エクセプションの後に、ソフトウェア制御の下で、前記Ｉ／Ｏアドレス変換キャッシュをロードして、
かつＩ／Ｏアドレス変換のための前記１つ以上のＩ／Ｏコマンドを再発行すること、または前記ＣＰＵに前記１つ以上のＩ／Ｏコマンドを送出した前記１つ以上のＩ／Ｏデバイスにエラー・メッセージを送出することのうちの少なくとも１つを実行するように構成された、コマンド処理ロジックとを含む、システム。
【請求項１６】
前記ＣＰＵが、
前記１つ以上のＩ／Ｏコマンドが前記Ｉ／Ｏアドレス変換キャッシュ内でミスを引き起こして、かつ前記コマンド処理ロジックがソフトウェアでキャッシュ・ミスを処理するように構成されているとき、前記中央演算処理装置内にエクセプションを出力して、
かつ前記１つ以上のＩ／Ｏコマンドが前記Ｉ／Ｏアドレス変換キャッシュ内でミスを引き起こすとき、前記ＣＰＵに対して前記１つ以上のＩ／Ｏコマンドが送出された１つ以上の仮想チャンネルに対応するエクセプション・ステータス・レジスタ内にビットを設定するようさらに構成される、請求項１５に記載のシステム。
【請求項１７】
前記コマンド処理ロジックが、前記１つ以上のエクセプション・コマンド・キュー内に、前記ＣＰＵに対して前記１つ以上のＩ／Ｏコマンドが送出された１つ以上の仮想チャンネルに対応する１つ以上のＩ／Ｏコマンドをバッファする、請求項１５に記載のシステム。
【請求項１８】
前記ＣＰＵが、ソフトウェアによりクリアされうるビットを有するエクセプション・ステータス・レジスタ、またはソフトウェアにより設定されうるフォールト除去ビットを有する仮想チャンネル・クリア・レジスタのうちの少なくとも１つをさらに含む、請求項１５に記載のシステム。
【請求項１９】
前記エクセプション・ステータス・レジスタ内のビットをクリアするステップに呼応して、前記コマンド処理ロジックが、仮想チャンネル・ベースで前記１つ以上のＩ／Ｏコマンドを再発行するようさらに構成される、請求項１８に記載のシステム。
【請求項２０】
仮想チャンネル・クリア・レジスタ内にフォールト除去ビットを設定するステップに呼応して、前記コマンド処理ロジックが、前記ＣＰＵに対して前記１つ以上のＩ／Ｏコマンドを送出した前記１つ以上のＩ／Ｏデバイスにエラー・メッセージを送出するとき、前記コマンド処理ロジックが、前記１つ以上のコマンド・キューから前記１つ以上のコマンドを消去するようさらに構成される、請求項１８に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般に、中央演算処理装置の中のＩ／Ｏアドレス変換に関する。
【背景技術】
【０００２】
コンピューティング・システムは、多くの場合、中央演算処理装置（ＣＰＵ）を含む。コマンドを実行処理する要求は、しばしば、システムの中の他のデバイスからＣＰＵに対して行われる。ＣＰＵに対してコマンド要求を行うことができるデバイスの例としては、システムの中のビデオ・カード、サウンド・カード、またはＩ／Ｏ（入出力）デバイスなどがある。Ｉ／Ｏデバイスは、処理を行うためにＣＰＵにコマンドを送出できる。Ｉ／Ｏデバイスからのコマンドは、記憶アドレスを対象とし、その記憶アドレスをＩ／Ｏ仮想記憶アドレスにより参照することができる。コマンドがＩ／Ｏ仮想記憶アドレスを参照するとき、ＣＰＵは、コマンドを実行処理する前に、Ｉ／Ｏ仮想記憶アドレスを対応する物理メモリ・アドレスに変換しなければならない。
【０００３】
ＣＰＵの利用率の向上、ならびにデータおよび命令に対するアクセスの高速化に備えるために、ＣＰＵは数個のキャッシュを有しうる。キャッシュは、通常、コンピュータ・システムの主記憶装置よりも小さい記憶装置であり、通常、プロセッサと同じダイ（すなわち、チップ）上に製作される。通常、キャッシュ・メモリは、頻繁に使用される主記憶域からのデータの複製を保存する。また、キャッシュは、Ｉ／Ｏ仮想記憶アドレスの、対応する物理メモリ・アドレスへの変換を支援するために、セグメント・テーブルおよびページ・テーブルのようなＩ／Ｏ仮想記憶Ｉ／Ｏアドレス変換情報を保存できる。Ｉ／Ｏアドレス変換を提供するために使用されるキャッシュ構造は、一般的に、まとめてＩ／Ｏアドレス変換キャッシュ、または変換索引バッファ（Ｔｒａｎｓｌａｔｉｏｎ  Ｌｏｏｋａｓｉｄｅ  Ｂｕｆｆｅｒ）と呼ばれる。
【０００４】
プロセッサが記憶アドレスの変換を望むとき、プロセッサは、Ｉ／Ｏアドレス変換テーブル・エントリがキャッシュ内に存在しているかどうかを確認するために、最初にＩ／Ｏアドレス変換キャッシュを検査できる。Ｉ／Ｏアドレス変換テーブル・エントリがキャッシュ内に存在しているとき、プロセッサは、キャッシュ内のＩ／Ｏアドレス変換テーブル・エントリを使用する。Ｉ／Ｏアドレス変換テーブル・エントリがキャッシュ内に存在しているとき、それは、一般的に「キャッシュ・ヒット（ｃａｃｈｅ  ｈｉｔ）」と呼ばれる。Ｉ／Ｏアドレス変換テーブル・エントリがキャッシュ内に存在していないとき、それは、一般的に「キャッシュ・ミス（ｃａｃｈｅ  ｍｉｓｓ）」と呼ばれる。キャッシュミスが発生すると、主記憶装置から所望データをフェッチしなければならない。
【発明の開示】
【発明が解決しようとする課題】
【０００５】
現在のところ、Ｉ／Ｏアドレス変換を必要とするＩ／Ｏコマンドが、キャッシュ・ミスを引き起こすと、ＣＰＵの中に割り込みが発生されうる。この割り込みは、Ｉ／Ｏアドレス変換キャッシュ・ミスに呼応して、ＣＰＵ上で実行処理中のソフトウェアに何らかの機能を実行させる。多くの場合、ＣＰＵおよびソフトウェア、もしくは、ＣＰＵまたはソフトウェアは、Ｉ／Ｏアドレス変換を必要とするコマンドを送出したＩ／Ｏデバイスに、エラー応答を送出するであろう。その後、Ｉ／Ｏデバイスは、エラー応答に呼応してどのような動作を行ったらよいかを判断しなければならない。Ｉ／Ｏデバイスは、コマンドを再発行することを決定したり、Ｉ／Ｏデバイス・ソフトウェアは、入出力操作を再開することを決定したり、またはＩ／Ｏデバイス・ソフトウェアは、回復動作を開始しうる。
【０００６】
この解決法に関連する問題は、ソフトウェアが、エクセプションを処理するとともに、変換テーブル・エントリをロードして、かつコマンドを再発行できることをＩ／Ｏデバイスに対して示すために要する時間量である。この解決法に関連する他の問題は、Ｉ／Ｏアドレス変換ミスが発生するとき、ＣＰＵにより処理されるＩ／Ｏデバイスからの複数のコマンドがありうることである。プロセッサが、Ｉ／Ｏアドレス変換キャッシュ・ミスを引き起こしたコマンドをプロセッサが再発行できることをＩ／Ｏデバイスに通知するとき、Ｉ／Ｏデバイスからの他のコマンドの多くが完了したかもしれない。これは、Ｉ／Ｏアドレス変換キャッシュ・ミスを引き起こしたコマンドに関連する順序付けの問題を引き起こしうる。
【０００７】
したがって、Ｉ／Ｏデバイスから受信されたコマンドにより引き起こされたＩ／Ｏアドレス変換キャッシュ・ミスを処理する改良された方法および装置に対する必要性がある。
【課題を解決するための手段】
【０００８】
本発明は、一般に、ソフトウェアが、Ｉ／Ｏデバイスから受信されたコマンドに起因するＩ／Ｏアドレス変換キャッシュ・ミスを処理することを可能にするシステムおよび方法を提供する。
【０００９】
一実施形態は、１つ以上のＩ／Ｏデバイスにより中央演算処理装置に送出された１つ以上のＩ／Ｏコマンドに起因するＩ／Ｏアドレス変換キャッシュ・ミスを処理する方法を提供する。一般に、方法は、中央演算処理装置（ＣＰＵ）の中のコマンド・キュー内に１つ以上のＩ／Ｏコマンドをバッファするステップと、記憶装置からＩ／Ｏアドレス変換テーブル・エントリをフェッチして、かつＩ／Ｏアドレス変換キャッシュ内にＩ／Ｏアドレス変換テーブル・エントリを入れるステップと、Ｉ／Ｏアドレス変換のための１つ以上のＩ／Ｏコマンドを再発行すること、またはＣＰＵに１つ以上のＩ／Ｏコマンドを送出した１つ以上のＩ／Ｏデバイスにエラー・メッセージを送出することのうちの少なくとも１つを実行するステップとを含む。
【００１０】
他の実施形態は、中央演算処理装置（ＣＰＵ）を提供する。一般にＣＰＵは、Ｉ／Ｏアドレス変換キャッシュと、１つ以上のエクセプション・コマンド・キューと、コマンド処理ロジックとを含む。一般に、コマンド処理ロジックは、Ｉ／Ｏアドレス変換キャッシュ内でミスを引き起こした１つ以上のＩ／Ｏコマンドを、１つ以上のエクセプション・コマンド・キュー内にバッファして、ソフトウェア制御の下で、Ｉ／Ｏアドレス変換キャッシュをロードして、Ｉ／Ｏアドレス変換のための１つ以上のＩ／Ｏコマンドを再発行すること、またはＣＰＵに１つ以上のＩ／Ｏコマンドを送出した１つ以上のＩ／Ｏデバイスにエラー・メッセージを送出することのうちの少なくとも１つを実行するように構成される。
【００１１】
他の実施形態は、一般に１つ以上の入出力（Ｉ／Ｏ）デバイスと、中央演算処理装置（ＣＰＵ）とを含むシステムを提供する。一般に、ＣＰＵは、１つ以上のエクセプション・コマンド・キューと、Ｉ／Ｏアドレス変換キャッシュと、コマンド処理ロジックとを含む。一般に、コマンド処理ロジックは、Ｉ／Ｏアドレス変換キャッシュ内でミスを引き起こす１つ以上のＩ／Ｏコマンドを、１つ以上のエクセプション・コマンド・キュー内にバッファして、ソフトウェア制御の下で、Ｉ／Ｏアドレス変換キャッシュをロードして、Ｉ／Ｏアドレス変換のための１つ以上のＩ／Ｏコマンドを再発行すること、またはＣＰＵに１つ以上のＩ／Ｏコマンドを送出した１つ以上のＩ／Ｏデバイスにエラー・メッセージを送出することのうちの少なくとも１つを実行するように構成される。
【００１２】
本発明の上記の特徴、利点、および目的を達成し、かつ詳細に理解できるように、添付図面に示される本発明の実施形態を参照することにより、上記に簡潔に要約された本発明の、より詳細な説明がなされうる。
【００１３】
しかしながら、本発明は他の等しく有効な実施形態を許容しうるため、添付図面は、あくまで本発明の典型的な実施形態を示すに過ぎず、したがって、それらの添付図面は本発明の範囲を制限するものとみなされるべきではないことに注目すべきである。
【発明を実施するための最良の形態】
【００１４】
一般に、本発明の実施形態は、ＣＰＵの中のＩ／Ｏコマンドに起因するＩ／Ｏアドレス変換キャッシュ・ミスを処理する改良された技術を提供する。いくつかの実施形態では、Ｉ／Ｏアドレス変換キャッシュが、所要情報を用いて更新されるまで、ＣＰＵハードウェアは、Ｉ／Ｏアドレス変換キャッシュ・ミスを引き起こすＩ／Ｏコマンドを、コマンド・キュー内にバッファすることができる。Ｉ／Ｏアドレス変換キャッシュが更新されたとき、ＣＰＵは、コマンド・キューからＩ／Ｏコマンドを再発行して、都合の良いときにＩ／Ｏコマンドのアドレスを変換し、あたかもキャッシュ・ミスが発生しなかったかのようにコマンドを実行処理できる。このように、Ｉ／Ｏデバイスは、ＣＰＵからのエラー応答を処理する必要がなく、Ｉ／ＯコマンドはＣＰＵにより処理されて、Ｉ／Ｏコマンドは破棄されない。
【００１５】
以下では、本発明の実施形態を参照する。しかしながら、本発明は、説明された特定の実施形態に限定されないことを理解すべきである。その代わりに、下記の特徴および要素の任意の組み合わせは、異なる実施形態に関連するか否かに関係なく、本発明を実現し、かつ実行すると想定される。さらに、様々な実施形態において、本発明は、先行技術よりも優れた多数の利点を提供する。
【００１６】
図１は、本発明の一実施形態の、Ｉ／Ｏデバイス１０４に結合された中央演算処理装置（ＣＰＵ）１０２を示すブロック図である。一実施形態では、ＣＰＵ１０２は、パーソナル・コンピュータ、またはゲーム用システムのようなコンピュータ・システム１００の中に存在できる。またＩ／Ｏデバイス１０４も同じコンピュータ・システムの中に存在できる。現代のコンピューティング・システムでは、ＣＰＵ１０２に取り付けられた複数のＩ／Ｏデバイス１０４がありうる。例えば、Ｉ／Ｏデバイス１０４は、サウンド・カード、ビデオ・カード、またはキーボードで構成されうる。Ｉ／Ｏデバイス１０４は、コンピューティング・システムの内部のＣＰＵ１０２にバスを用いて物理的に取り付けられうる。
【００１７】
Ｉ／Ｏデバイス１０４は、実行処理のためにＣＰＵにコマンドを送出するであろう。ＣＰＵは、Ｉ／Ｏデバイス１０４に結果を返信できる。一実施形態では、コマンド処理システム１０８は、ＣＰＵ１０２の中に存在しうる。コマンド処理システムの中に、Ｉ／Ｏデバイス１０４から送出されたコマンドが、ＣＰＵ１０２による実行処理用に保存されて、準備される。
【００１８】
また、ＣＰＵ１０２は、コマンドのＩ／Ｏ仮想記憶アドレスの、物理メモリ・アドレスへの変換を支援するために、Ｉ／Ｏアドレス変換ロジック１１４を含みうる。Ｉ／Ｏアドレス変換ロジック１１４は、Ｉ／Ｏアドレス変換を容易にするために、変換処理ロジック１１６およびＩ／Ｏアドレス変換キャッシュ１１２を含みうる。また、Ｉ／Ｏアドレス変換ロジック１１４は、Ｉ／Ｏアドレス変換キャッシュ・ミスの処理に関連する動作を実行するロジックを含みうる。このロジックは、フォールト・チェックおよび生成ロジック１２２と、エクセプション・コマンド・キュー１１８と、コマンド再発行ロジック１２０と、エクセプション・ステータス・レジスタ１２８と、仮想チャンネル・クリア・レジスタ１３０とを含みうるが、これらに限られない。
【００１９】
また、ＣＰＵ１０２は、処理する準備ができているコマンドを実行処理する埋め込みプロセッサ１２４、記憶装置１１０、およびオンチップ・データ・バス１４０を含みうる。埋め込みプロセッサ１２４は、ソフトウェア１２６を実行処理中でありうる。
【００２０】
図２は、本発明の一実施形態の、Ｉ／Ｏアドレス変換を実行する方法２００を示すフローチャートである。方法２００は、ＣＰＵ１０２がＩ／Ｏデバイスにより送出されたコマンドに起因するキャッシュ・ミスを検出するステップ２０５で始まりうる。キャッシュ・ミスは、Ｉ／ＯコマンドのＩ／Ｏ仮想記憶アドレスが、Ｉ／Ｏアドレス変換キャッシュ１１２に渡された後に、変換処理ロジック１１６により検出されうる。Ｉ／ＯコマンドのＩ／Ｏ仮想記憶アドレスがＩ／Ｏアドレス変換キャッシュ１１２内にないとき、キャッシュ・ミスが発生するであろう。ステップ２０５でキャッシュ・ミスが発生した後に、変換処理ロジック１１６は、ステップ２１０で確認されるようにバッファの中にコマンドを入れることができる。このバッファは、コマンドを送出したＩ／Ｏデバイスに基づいてコマンドを組織化できる、いくつかのエクセプション・コマンド・キュー１１８で構成されうる。ロジックは、ＩＯＩＤ（Ｉｎｐｕｔ／Ｏｕｔｐｕｔ  Ｉｄｅｎｔｉｆｉｃａｔｉｏｎ  入出力識別）およびキャッシュ・ミスを引き起こすコマンドを送出したＩ／Ｏデバイスに対応する仮想チャンネルに基づいて、もしくは、ＩＯＩＤ（入出力識別）またはキャッシュ・ミスを引き起こすコマンドを送出したＩ／Ｏデバイスに対応する仮想チャンネルに基づいて、コマンドを組織化できる。
【００２１】
また、キャッシュ・ミスを検出したＣＰＵ１０２の中のロジックは、キャッシュ・ミスが発生したことを、ＣＰＵ１０２の中のソフトウェアまたは他のハードウェアに通知できる。キャッシュ・ミスの通知は、ＣＰＵ１０２の中にエクセプションを出力することにより行われる。コマンドが、バッファまたはエクセプション・コマンド・キュー１１８内に入れられた後に、変換処理ロジック１１６は、Ｉ／Ｏデバイスから受信された他のコマンドに対するアドレスの変換を継続できる。一方、ステップ２２０では、エクセプションに呼応して、ＣＰＵ１０２の中の埋め込みプロセッサ１２４または他のロジック上で実行処理中のソフトウェアは、キャッシュ・ミスを引き起こしたコマンドのＩ／Ｏ仮想記憶アドレスを変換するために必要な物理メモリ・アドレスをフェッチするプロセスを実行できる。コマンドに対する物理メモリ・アドレスが、記憶装置からフェッチされた後に、物理メモリ・アドレスは、Ｉ／Ｏアドレス変換キャッシュ１１２内に保持されうる。物理メモリ・アドレスがＩ／Ｏアドレス変換キャッシュ１１２内にあると、ステップ２２５で、エクセプション・コマンド・キューから変換処理ロジック１１６へコマンドが再発行されうる。ここで変換処理ロジックは、Ｉ／ＯコマンドのＩ／Ｏ仮想記憶アドレスを、対応する物理メモリ・アドレスに変換する動作を実行できる。
【００２２】
図３および図４は、図２の方法２００について説明したよりもさらに詳細な、Ｉ／Ｏアドレス変換を実行する方法３００を示す。図３は、本発明の一実施形態の、Ｉ／Ｏアドレス変換を実行する方法３００を示すフローチャートである。方法３００は、Ｉ／Ｏデバイス１０４がＣＰＵ１０２にコマンドを送出するステップ３０５で始まる。このコマンドは、処理を行うためにＩ／Ｏデバイス１０４によりＣＰＵ１０２に対して送出された任意のコマンドでありうる。例えば、コマンドは、記憶装置からのロード・コマンド、または記憶装置への保存コマンドでありうる。
【００２３】
次にステップ３１０では、変換処理ロジック１１６は、対応する物理メモリ・アドレスがＩ／Ｏアドレス変換キャッシュ１１２内にあるかどうかを判断するために、Ｉ／Ｏコマンドに対するＩ／Ｏ仮想記憶アドレスを、Ｉ／Ｏアドレス変換キャッシュ１１２に渡すことができる。対応する物理メモリ・アドレスがＩ／Ｏアドレス変換キャッシュ１１２内にあるとき、ステップ３２０で、変換処理ロジック１１６は、Ｉ／Ｏアドレス変換に関する動作を実行できる。これらの動作は、コマンドのＩ／Ｏ仮想記憶アドレスを、Ｉ／Ｏアドレス変換キャッシュ１１２内にある、対応する物理メモリ・アドレスと置換するステップを含みうる。次にステップ３２５では、コマンドは、コマンド処理ロジック１０８に戻されうる。コマンド処理ロジック１０８がコマンドを受信した後に、コマンドは、さらなる処理を行うためにオンチップ・バス１４０上に発行されうる。
【００２４】
しかしながら、Ｉ／Ｏ仮想記憶アドレスに対応する物理メモリ・アドレスが、Ｉ／Ｏアドレス変換キャッシュ１１２内になかったとき（すなわち、キャッシュ・ミス）、ステップ３３０で、キャッシュ・ミスについて埋め込みプロセッサ１２４に警告する動作が実行されうる。
【００２５】
本発明の一実施形態では、埋め込みプロセッサは、フォールト・チェックおよび生成ロジック１２２の使用を介してキャッシュ・ミスについて警告されうる。Ｉ／Ｏアドレス変換キャッシュ・ミスが発生したとき、変換処理ロジック１１６は、プロセッサ１２４に対して、Ｉ／Ｏアドレス変換キャッシュ・ミスが発生したことを示すエクセプションを出力できる。次にステップ３３５では、フォールト・チェックおよび生成ロジック１２２は、キャッシュ・ミスを引き起こしたコマンドを送出した仮想チャンネル（すなわち、Ｉ／Ｏデバイス）に対応するエクセプション・ステータス・レジスタ１２８内にステータス・ビットを設定できる。
【００２６】
その後、ステップ３４０で、変換処理ロジック１１６は、キャッシュ・ミスを引き起こしたＩ／Ｏコマンドをエクセプション・コマンド・キュー１１８に割り込ませることができる。エクセプション・コマンド・キュー１１８は、本発明の一実施形態に基づいて、先入れ先出しコマンド・キューでありうる。エクセプション・コマンド・キュー１１８は、Ｉ／Ｏアドレス変換キャッシュ・ミスを引き起こした多数のＩ／Ｏコマンドを保持するとともに、コマンドが送出された仮想チャンネルに基づいて、それらをキューに割り当てることができる。また、各仮想チャンネル・エクセプション・コマンド・キューは、同じ仮想チャンネルからの後続のコマンドを保持できる。これは、同じ仮想チャンネルからのコマンドが順番に実行されるとともに、異なる仮想チャンネルからの後続のコマンドが続行しうることを確保するために行われる。
【００２７】
埋め込みプロセッサ１２４上で実行処理中のソフトウェア１２６は、フォールト・チェックおよび生成ロジック１２２により出力されたエクセプションに対して、エクセプション処理コードを実行処理することで応答できる。ここで図４を参照すると、ステップ３５５では、ソフトウェア１２６は、フォールト・チェックおよび生成ロジック１２２により出力されたエクセプションと関連して、動作が実行されるべきかどうかを判断できる。ソフトウェア１２６が、フォールト・チェックおよび生成ロジック１２２により出力されたエクセプションと関連して、動作が実行されるべきと判断するとき、ステップ３７０で、ソフトウェアは、適切なエクセプション処理コードを実行できる。ステップ３７０では、ソフトウェア１２６は、Ｉ／Ｏアドレス変換キャッシュ１１２に正確な情報をロードするために複数の動作を実行できる。例えば、ソフトウェアは、一連の書き込みを介して、Ｉ／Ｏアドレス変換キャッシュ１１２に正確なＩ／Ｏアドレス変換テーブル・エントリを直接ロードすることができる。
【００２８】
Ｉ／Ｏアドレス変換キャッシュ１１２が、Ｉ／Ｏアドレス変換キャッシュ１１２ミスを引き起こしたＩ／Ｏコマンドに対する正確なＩ／Ｏアドレス変換テーブル・エントリをロードされると、ソフトウェアは、ステップ３７１で、仮想チャンネル・クリア・レジスタ１３０に書き込むことで、Ｉ／Ｏコマンドの仮想チャンネルに対応するエクセプション・ステータス・レジスタ１２８内のビットをクリアすることができる。また、仮想チャンネル・クリア・レジスタ１３０への書き込みは、エクセプション・コマンド・キュー１１８内で待機しているコマンドが、Ｉ／Ｏアドレス変換の準備ができている可能性があることを、コマンド再発行ロジック１２０に対して示すことができる。したがって、ステップ３７２では、コマンド再発行ロジック１２０は、変換処理ロジック１１６に通知でき、この変換処理ロジック１１６は、エクセプション・コマンド・キュー１１８から、ステップ３７１で書き込まれた仮想チャンネルに対応するコマンドを読み取る。
【００２９】
ステップ３７２で、コマンドが変換処理ロジック１１６に読み取られた後に、変換処理ロジック１１６は、Ｉ／Ｏアドレス変換に関する動作を再び実行できる（ステップ３７３）。これらの動作は、コマンドの対応する物理メモリ・アドレスについて判断するために、Ｉ／ＯコマンドのＩ／Ｏ仮想記憶アドレスを、Ｉ／Ｏアドレス変換キャッシュ１１２に渡すステップを含みうる。ステップ３７０でソフトウェア１２６により実行された動作により、現時点では、物理メモリ・アドレスは、Ｉ／Ｏアドレス変換キャッシュ１１２内にあるはずである。また、Ｉ／Ｏアドレス変換動作は、コマンドのＩ／Ｏ仮想記憶アドレスを、Ｉ／Ｏアドレス変換キャッシュ１１２内にある、対応する物理メモリ・アドレスと置換するステップを含みうる。次にステップ３７５では、現時点では確実に物理メモリ・アドレスを含んでいるコマンドが、コマンド処理ロジック１０８に戻されうる。コマンド処理ロジック１０８がコマンドを受信した後に、コマンドは、さらなる処理を行うためにオンチップ・バス１４０上に発行されうる。
【００３０】
ステップ３５５に戻ると、ソフトウェア１２６が、フォールト・チェックおよび生成ロジック１２２により出力されたエクセプションを処理する動作が実行されるべきではないと決定するとき、ソフトウェアは、コマンドを送出したＩ／Ｏデバイスに対する仮想チャンネルに対応する仮想チャンネル・クリア・レジスタ１３０内に、フォールト除去ビット（ｆａｕｌｔ  ｒｅｊｅｃｔｉｏｎ  ｂｉｔ）を設定することができる（ステップ３８０）。仮想チャンネル・クリア・レジスタ１３０内にフォールト除去ビットを設定することは、複数の動作を開始しうる。ステップ３８１では、フォールト除去ビットは、コマンド再発行ロジック１２０に、対応するコマンド・エントリをエクセプション・コマンド・キュー１１８から消去させることができる。また、ステップ３８０でフォールト除去ビットを設定することは、コマンド処理ロジック１０８に信号を送出しうる（ステップ３８２）。この信号は、Ｉ／Ｏアドレス変換キャッシュ・ミスを引き起こしたＩ／Ｏコマンドを最初に送出したＩ／Ｏデバイスに、コマンド処理ロジック１０８がエラー・メッセージを送出できる（ステップ３８３）ことを、コマンド処理ロジック１０８に対して示すことができる。また、仮想チャンネル・クリア・レジスタ１３０内にフォールト除去ビットを設定することは、エクセプション・ステータス・レジスタ１２８内の対応する仮想チャンネル・ビットをクリアしうる。
【００３１】
本発明の実施形態は、Ｉ／Ｏコマンドに起因するＩ／Ｏアドレス変換キャッシュ・ミスを処理する改良された技術を提供する。いくつかの実施形態では、ＣＰＵは、ＣＰＵの内部に、Ｉ／Ｏアドレス変換キャッシュ・ミスを引き起こすＩ／Ｏコマンドをバッファすることができる。コマンドがＣＰＵによりバッファされている間に、ソフトウェアは、以前に欠落していたデータを記憶装置からフェッチして、Ｉ／Ｏアドレス変換キャッシュ内にそれを保持することができる。データがＩ／Ｏアドレス変換キャッシュ内にあると、その後、ＣＰＵは、バッファされたコマンドのアドレスを変換することができる。このようにして、ＣＰＵは、Ｉ／ＯデバイスにＩ／Ｏアドレス変換キャッシュ・ミスが発生したことを通知する必要なく、Ｉ／Ｏアドレス変換を提供できる。
【００３２】
上記の記述は、本発明の実施形態に関するが、本発明の他の、およびさらなる実施形態は、本発明の基本的範囲を逸脱することなく考案されうるとともに、本発明の範囲は、上記の請求項で確定される。
【図面の簡単な説明】
【００３３】
【図１】本発明の一実施形態のコンピューティング環境を示すブロック図である。
【図２】本発明の一実施形態の、Ｉ／Ｏデバイス・コマンドの受信、およびＩ／Ｏアドレス変換の実行に関する動作を示すフローチャートである。
【図３】本発明の一実施形態の、Ｉ／Ｏデバイス・コマンドの受信、およびＩ／Ｏアドレス変換の実行に関する動作を示すフローチャートである。
【図４】本発明の一実施形態の、Ｉ／Ｏデバイス・コマンドの受信、およびＩ／Ｏアドレス変換の実行に関する動作を示すフローチャートである。
【図１】
2007287143.tif 000003
【図２】
2007287143.tif 000004
【図３】
2007287143.tif 000005
【図４】
2007287143.tif 000006