(57)【特許請求の範囲】
【請求項１】
プロセッサを、物理アドレスを用いるロジックブロックに結合するオン・ダイ・システム・ファブリック（ＯＳＦ）と、
ユーザレベルの要求に応じて、物理アドレスに対応するシャドーアドレスを含むページテーブル、前記物理アドレスに対応する仮想アドレス、および、前記シャドーアドレスに対応するエイリアス仮想アドレスを格納するメモリと
を備え、
前記ＯＳＦは、前記プロセッサから受けた前記シャドーアドレスから前記物理アドレスを決定して、前記ロジックブロックへと渡すロジックを有する
前記ロジックは、前記シャドーアドレスの１以上の最上位ビットを反転させて前記物理アドレスを決定する
装置。
【請求項２】
前記ページテーブルは、前記エイリアス仮想アドレスおよび前記シャドーアドレスに対応するエントリを含む請求項１に記載の装置。
【請求項３】
前記メモリは、前記シャドーアドレスおよび前記物理アドレスについてキャッシュ可能情報を格納する請求項１または２に記載の装置。
【請求項４】
前記プロセッサおよび前記ロジックブロックは、ランタイム時にのみ周知となるアドレスを共有する請求項１から３のいずれか１項に記載の装置。
【請求項５】
前記プロセッサおよび前記ロジックブロックは、固定アドレスではなくランタイム時にのみ周知となるアドレスを共有する請求項１から４のいずれか１項に記載の装置。
【請求項６】
前記メモリは、前記ユーザレベルの要求を生成するためのアプリケーションを格納する請求項１から５のいずれか１項に記載の装置。
【請求項７】
前記メモリは、メモリアドレスまたはその他のパラメータを前記ロジックブロックに渡すストア処理を生成するアプリケーションを格納する請求項１から６のいずれか１項に記載の装置。
【請求項８】
前記ＯＳＦおよび前記メモリは、同じ集積回路ダイ上にある請求項１から７のいずれか１項に記載の装置。
【請求項９】
前記プロセッサは、前記ＯＳＦを介して前記ロジックブロックと通信する複数のプロセッサコアを含む請求項１から８のいずれか１項に記載の装置。
【請求項１０】
前記複数のプロセッサコア、前記メモリ、および、前記ＯＳＦは、同じ集積回路ダイ上にある請求項９に記載の装置。
【請求項１１】
前記ＯＳＦを前記プロセッサに結合する第１のインターフェースおよび前記ＯＳＦを前記ロジックブロックに結合する第２のインターフェースをさらに備え、
前記第１のインターフェースおよび前記第２のインターフェースはそれぞれ、主要チャネルおよびサイドバンドチャネルを有し、
前記ロジックブロックおよび前記プロセッサは、前記第１のインターフェースおよび前記第２のインターフェースの前記主要チャネルを介して通信する請求項１から１０のいずれか１項に記載の装置。
【請求項１２】
前記シャドーアドレスは、無効な物理アドレス範囲に生成される
請求項１から１１のいずれか１項に記載の装置。
【請求項１３】
ユーザレベルの要求に応じて、物理アドレスに対応するシャドーアドレスを含むページテーブル、前記物理アドレスに対応する仮想アドレス、および、前記シャドーアドレスに対応するエイリアス仮想アドレスを格納するためにメモリの一部分を割り当てる段階と、
ＯＳＦにおいて、前記シャドーアドレスから前記物理アドレスを決定する段階と
前記シャドーアドレスの１以上の最上位ビットを反転させて前記物理アドレスを決定する段階と
を備える方法。
【請求項１４】
前記ページテーブルは、前記エイリアス仮想アドレスおよび前記シャドーアドレスに対応するエントリを含む請求項１３に記載の方法。
【請求項１５】
前記メモリの一部分を割り当てる段階は、無効な物理アドレス範囲を割り当てる段階を有する請求項１３または１４に記載の方法。
【請求項１６】
前記シャドーアドレスおよび前記物理アドレスについてのキャッシュ可能情報を前記メモリに格納する段階をさらに備える請求項１３から１５のいずれか１項に記載の方法。
【請求項１７】
アプリケーションを前記メモリに格納する段階と、
前記アプリケーションが前記ユーザレベルの要求を生成する段階とを
さらに備える請求項１３から１６のいずれか１項に記載の方法。
【請求項１８】
アプリケーションを前記メモリに格納する段階と、
前記アプリケーションがメモリアドレスまたはその他のパラメータを、物理アドレスを用いるロジックブロックに渡すストア処理を生成する段階と
をさらに備える請求項１３から１７のいずれか１項に記載の方法。
【請求項１９】
プロセッサを前記ＯＳＦを介して前記ロジックブロックに結合する段階をさらに備える請求項１８に記載の方法。
【請求項２０】
前記シャドーアドレスは、無効な物理アドレス範囲に生成される
請求項１３から１９のいずれか１項に記載の方法。
【請求項２１】
入出力（Ｉ／Ｏ）デバイスと、
プロセッサを前記Ｉ／Ｏデバイスに結合するオン・ダイ・システム・ファブリック（ＯＳＦ）と、
ユーザレベルの要求に応じて、物理アドレスに対応するシャドーアドレスを含むページテーブル、前記物理アドレスに対応する仮想アドレス、および、前記シャドーアドレスに対応するエイリアス仮想アドレスを格納するメモリと
を備え、
前記ＯＳＦは、前記シャドーアドレスから前記物理アドレスを決定するロジックを有し、
前記ロジックは、前記シャドーアドレスの１以上の最上位ビットを反転させて前記物理アドレスを決定する
システム。
【請求項２２】
前記ページテーブルは、前記エイリアス仮想アドレスおよび前記シャドーアドレスに対応するエントリを含む請求項２１に記載のシステム。
【請求項２３】
前記メモリは、前記シャドーアドレスおよび前記物理アドレスのそれぞれについてキャッシュ可能情報を格納する請求項２１または２２に記載のシステム。
【請求項２４】
前記プロセッサおよび、物理アドレスを用いるロジックブロックは、ランタイム時にのみ周知となるアドレスを共有する請求項２１から２３のいずれか１項に記載のシステム。
【請求項２５】
前記メモリは、前記ユーザレベルの要求を生成するためのアプリケーションを格納する請求項２１から２４のいずれか１項に記載のシステム。
【請求項２６】
前記メモリは、メモリアドレスまたはその他のパラメータを前記Ｉ／Ｏデバイスに渡すストア処理を生成するアプリケーションを格納する
請求項２１から２５のいずれか１項に記載のシステム。
【請求項２７】
前記シャドーアドレスは、無効な物理アドレス範囲に生成される
請求項２１から２６のいずれか１項に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は概して、電子機器の分野に関する。より具体的には、本発明の一実施形態は、オン・ダイ・システム・ファブリック（ＯＳＦ）・ブロックの制御の方法に関する。
【背景技術】
【０００２】
電子機器の設計において、半導体製のＩＰブロック（「ＩＰコア」または「ロジックコア」、より一般的には「ロジックブロック」とも呼ばれる）は、ロジック回路、セル、または、チップレイアウトの設計では再利用可能な部分である。例えば、このようなロジックブロックは、さまざまなチップ設計またはロジック設計の構成要素として利用または再利用されるとしてよい。
【０００３】
ＩＰブロックの数が増加すると、１つのシステムに統合するのが困難になる。また、ＩＰブロックは、設計では、（例えば、コストを低く維持するべく）高度な回路を含まない場合がある。このため、アドレス処理に関連する一部のタスクは、ＩＰブロック内のロジックではなくホストプロセッサによって実行する必要がある場合がある。この結果、例えば、ホストプロセッサをユーザモードとカーネルモードとの間で切り替える頻度が高くなり、アドレス処理に関するレイテンシが発生してしまう場合がある。
【図面の簡単な説明】
【０００４】
添付図面を参照しつつ詳細に説明する。
図中、参照番号の最大桁は、当該参照番号が最初に用いられた図面を表す。複数の図面で同じ参照番号を用いている場合は、同様または同一のものを表す。
【図１】本明細書で説明する実施形態を実施するために用いられるコンピューティングシステムの実施形態を示すブロック図である。
【図２】一実施形態に係るユーザレベル・コード・スニペットを示す図である。
【図３】一部の実施形態に係る方法を示すフローチャートである。
【図４】一部の実施形態に係るＯＳページテーブルおよびＴＬＢに含まれるエントリの例を示す図である。
【図５】一部の実施形態に係る方法を示すフローチャートである。
【図６】本明細書で説明する実施形態を実施するために用いられるコンピューティングシステムの実施形態を示すブロック図である。
【図７】本明細書で説明する実施形態を実施するために用いられるコンピューティングシステムの実施形態を示すブロック図である。
【発明を実施するための形態】
【０００５】
以下に記載する説明では、さまざまな実施形態を深く理解していただくべく具体的且つ詳細な内容を数多く記載する。しかし、一部の実施形態は、以下に記載する具体的且つ詳細な内容を利用することなく実施され得る。また、公知の方法、手順、構成要素、および回路は、具体的な実施形態をあいまいにすることを避けるべく、詳細な説明を省略する。
【０００６】
一部の実施形態は、オン・ダイ・システム・ファブリック（ＯＳＦ）を介して結合されている複数のＩＰブロックまたはロジックブロックを制御する方法に関する。当該制御は、一実施形態によると、ユーザレベルでアサートされるとしてよい。また、ＯＳＦは、プロセッサコアをＩＰブロック（一部の実施形態では、入出力装置等）にインターフェースするとしてよい。ＩＰブロックは一般的に、例えば、コスト上の理由でメモリ・マネジメント・ユニット（ＭＭＵ）を有していないことがあり、ＯＳＦはＩＰブロックに物理アドレスを通知する必要がある。アドレス処理をサポートする方法の１つとして、ＩＰブロックについてカーネル内デバイスドライバを利用する方法が挙げられる。このようなデバイスドライバは、物理アドレスに基づいて動作する特権を持つとしてよい。しかし、このモデルは、頻繁なユーザモードとカーネルモードとの間での切替および／またはページテーブルウォークによって高コストであるために、加速の粒度が高くなると不十分であるとしてよい。しかし、ユーザレベルでの制御では、物理アドレスをＩＰブロックに通知する方法が問題となる。
【０００７】
この問題に対処するべく、ある実施形態では、物理アドレスシャドーイングを利用する。例えば、オペレーティングシステム（ＯＳ）において、（例えば、無効な物理アドレス範囲を用いて）複数の物理ページの番号またはアドレスのシャドーを形成するシステムコールを実現するとしてよい。これは、本願においては、「リマッピング（Ｒｅｍａｐ）」とも呼ぶ。また、ハードウェア（例えば、ＯＳＦと通信する位置のハードウェア）は、シャドーアドレスから本物の物理アドレスを抽出するとしてよい（これは、本願では「リマッピング−１（Ｒｅｍａｐ−１）」とも呼ぶ）。ある実施形態によると、リマッピング−１用のハードウェアは、アドレスの最上位の１ビットまたは２ビットを反転させることを含むとしてよい。一実施形態によると、アプリケーション（例えば、ユーザレベルで実行するもの）は、ユーザ空間からメモリアドレスおよびその他のパラメータをＩＰブロックに渡すために通常のｘ８６ストアを利用するとしてよい。これは、ページテーブルにアクセスするためにカーネルにトラップされるよりも一桁分早く、ＩＰブロック内に特別なＭＭＵを構築するよりも何桁分も安価である。
【０００８】
また、一部の実施形態によると、ユーザアプリケーションは、４つの特徴でＩＰブロックの実行をトリガするとしてよい。（１）命令セットアーキテクチャ（ＩＳＡ）拡張機能がない、（２）ユーザ−カーネル間のモード切替が過剰でない、（３）特別なＭＭＵがない、および／または、（４）プロセッサコアおよびＩＰブロックは、固定アドレスではなく、ランタイム時にのみ周知となるアドレスを共有する、の４つである。このような特徴によって、ＩＰブロックの利用に関する制限が大幅に緩和されるとしてよい。また、ＯＳＦを介して高粒度のアクセラレータをより広範囲に配設することが可能となるとしてよい。
【０００９】
本願に係る方法は、さまざまなコンピューティングシステム、例えば、図１、図６および図７を参照しつつ説明するようなものに適応し得る。より具体的には、図１は、本発明のある実施形態に係るコンピューティングシステム１００を示すブロック図である。システム１００は、１以上のエージェント１０２−１から１０２−Ｍ（本明細書では「エージェント１０２」と総称する）を備えるとしてよい。ある実施形態によると、エージェント１０２のうち１以上は、コンピューティングシステム、例えば、図６および図７を参照しつつ説明するコンピューティングシステムの構成要素のうち任意のものであってよい。
【００１０】
図１に示すように、エージェント１０２は、ＯＳＦ等のファブリック１０４を介して通信を行なうとしてよい。このため、エージェント１０２およびファブリック１０４は、ある実施形態によると、同じ集積回路ダイ上にあるとしてよい。本明細書では、「ＯＳＦ」とは、スケーリング可能、設定可能、および／または、各製品固有のオン・ダイ・システム・ファブリックを意味する用語であるとしてよい。例えば、エージェント１０２はそれぞれ、ブリッジ（例えば、別のファブリックへと接続するためのブリッジ）、ＩＰブロック、または、ファブリック１０４を介して結合している電子デバイスの別の構成要素であってよい。一実施形態によると、ファブリック１０４は、さまざまなエージェント（例えば、コンピューティングデバイス）間でのデータ通信を可能とするコンピュータネットワークを含むとしてよい。ある実施形態によると、ファブリック１０４は、シリアル（例えば、ポイント・ツー・ポイント）リンクおよび／または共有通信ネットワークを介して通信を行う１以上のインターコネクト（または、インターコネクトネットワーク）を含むとしてよい。例えば、一部の実施形態によると、ＦＢ−ＤＩＭＭ（Ｆｕｌｌｙ−Ｂｕｆｆｅｒｅｄ  Ｄｕａｌ  Ｉｎ−ｌｉｎｅ  Ｍｅｍｏｒｙ  Ｍｏｄｕｌｅ）との通信を可能とするリンク上でのコンポーネントのデバッグまたは検証が容易になるとしてよい。例えば、ＦＢ−ＤＩＭＭリンクは、メモリモジュールをホストコントローラデバイス（例えば、プロセッサまたはメモリハブ）に結合するシリアルリンクである。デバッグ情報は、ＦＢ−ＤＩＭＭチャネルホストから、チャネル単位でのトラフィック追跡分析ツール（例えば、１以上のロジックアナライザ）に沿って観察されるように、送信されるとしてよい。
【００１１】
一実施形態によると、システム１００は、物理層、リンク層、ルーティング層、トランスポート層、および／または、プロトコル層を含む階層化プロトコル方式をサポートしているとしてよい。ファブリック１０４はさらに、ある１つのプロトコル（例えば、キャッシュ・プロセッサまたはキャッシュ・アウェア・メモリ・コントローラ）から別のプロトコルへのポイント・ツー・ポイントネットワークまたは共有ネットワークのデータ送信（例えば、パケット送信）を容易にするとしてよい。また、一部の実施形態によると、ファブリック１０４は、１以上のキャッシュ・コヒーレンシ・プロトコルに準拠した通信を行うとしてよい。これに代えて、ファブリック１０４は、非コヒーレンシ・プロトコルに準拠するとしてもよい。
【００１２】
さらに、図１の矢印の方向で示すように、エージェント１０２はファブリック１０４を介してデータの送受信を行なうとしてよい。このため、一部のエージェントは一方向リンクを利用するが、二方向リンクを通信に利用するエージェントもあるとしてよい。例えば、１以上のエージェント（例えば、エージェント１０２−Ｍ）は（例えば、一方向リンク１０６を介して）データを送信するとしてよく、他のエージェント（例えば、エージェント１０２−２）は（例えば、一方向リンク１０８を介して）データを受信するとしてよく、一部のエージェント（例えば、エージェント１０２−１）は（例えば、二方向リンク１１０を介して）データの送受信を行なうとしてよい。一部の実施形態によると、リンク１０６−１１０は、ＩＰブロックが複数の設計で利用可能となるようなプロトコルおよび／または信号伝達方式を持つＯＳＦインターフェースであってよい。
【００１３】
ある実施形態によると、エージェント１０２間を接続するＯＳＦインターフェース（例えば、リンク１０６−１１０）は、主要チャネルおよびサイドバンドチャネルと呼ばれる２つのポートを提供するとしてよい。主要チャネルは、（ａ）ピア間および／または上流へのデータ転送のための高性能インターフェースであってよく、（ｂ）メモリ（例えば、３２ビット、６４ビット）、入出力（Ｉ／Ｏ）、設定、および、メッセージトランザクションをサポートし、（ｃ）ＰＣＩ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ）順序決定ルールおよび／またはエニュメレーションをサポートし、（ｄ）トランザクション分割プロトコルをサポートし、および／または、（ｅ）ＰＣＩ−ｅヘッダ情報をマッピングするとしてよい。サイドバンドチャネルは、（ｉ）全てのサイドバンド情報を通信すると同時に特定用途ワイヤを除外する標準インターフェースであってよく、（ｉｉ）ポイント・ツー・ポイント・ネットワークを提供するとしてよく、（ｉｉｉ）状態、電力管理、設定シャドーイング、試験モード等に用いられるとしてよく、および／または、（ｉｖ）低性能で用いられるとしてよい（例えば、主要なデータ転送には利用されない）。
【００１４】
図２は、一部の実施形態に係る、ＯＳＦ付属ＩＰブロックを用いる、または、用いない、高速フーリエ変換（ＦＦＴ）のためのユーザレベルのコードスニペットを示す図である。部分ｃ）は、本明細書で後述するように、本発明の実施形態により可能となる。
【００１５】
カーネル内デバイスドライバ、ＩＰブロックは、ＯＳＦ等のパケット対応インターコネクトを介してプロセッサコアと通信するとしてよい。ＩＰブロックは、ＯＳのデバイスドライバによって制御されるとしてよい。ネットワーク・インターフェース・カード（ＮＩＣ）ドライバ等の特別な場合には、メモリバッファは、開始アドレスをドライバに渡すタスクが未処理となるように、固定されるとしてよい。一部の実施形態によると、より一般的なものが利用される場合、例えば、ＩＰブロックで関数が呼び出される度に、「バッファ」アドレスは変化する。任意のユーザ空間の仮想アドレス（ＶＡ）から始まる実行をＩＰブロックで呼び出す場合、ユーザアプリケーションはシステムコールを作成するとしてよく、当該システムコールはカーネルにトラップされて、デバイスドライバをトリガする（例えば、図２のｂ）を参照のこと）。デバイスドライバ（例えば、図６のデバイスドライバ）は、メモリ内のページテーブルで検索することによって（ＴＬＢ（トランスレーション・ルックアサイド・バッファ）を利用するのではない）物理アドレス（ＰＡ）を取得する。デバイスドライバは、ＰＡをＩＰブロックに渡す。しかし、頻繁なユーザ−カーネル間でのモード切り替えおよびページテーブルウォークによって、数千プロセッサクロックが簡単に費やされてしまい、ＩＰブロックにおける高速化という高性能化の効果を大きく相殺してしまう。また、Ｉ／Ｏデバイス用のユーザレベルのデバイスドライバには、アプリケーションおよびカーネルを事前に割り当てられた固定メモリバッファを共有するように制限したり、または、メモリシステム内にアプリケーションの仮想アドレスを物理アドレスに変換する特別なＭＭＵを必要とするものもある。
【００１６】
図２を参照すると、部分ｃ）は、一実施形態に係るプログラミングモデルを図示している。例えば、アプリケーションは、ｍａｌｌｏｃ（）の後にシステムコールを１つ作成する。この後、ユーザ空間の仮想アドレス（図２のｖａ＿ａｌｉａｓ）への通常（例えば、ｘ８６）のストア命令を用いてＩＰブロックにデータアドレスを渡すことが可能となる。続く図面では、ＩＰブロックがアプリケーションの仮想アドレスをサポートする物理メモリアドレスを受信する様子の一例を示す。
【００１７】
より具体的に、図３は、ある実施形態に係るリマッピング動作を実行する方法３００を示すフローチャートである。リマッピング動作は、ＯＳにおいて、例えば、無効または未使用の物理アドレス範囲を利用して、物理ページ番号または物理アドレスのシャドーを作成するためのシステムコールとして実現されるとしてよい。一実施形態によると、方法３００を参照して説明するデータ通信またはコマンド通信は、図１を参照して説明した主要チャネルで実行されるとしてよい。
【００１８】
ある実施形態によると、図３に示すリマッピング動作を実行した後、リマッピング−１動作において、シャドーアドレスから実際の物理アドレスを抽出するＯＳＦ内のハードウェアを利用するとしてよい。一実施形態によると、リマッピング−１動作は、アドレスの最上位の１ビットまたは２ビット（一部のビットでは３ビット以上）を反転させることによって実行されるとしてよい。
【００１９】
一部の実施形態によると、リマッピング−１動作は、シャドーアドレスから実際の物理アドレスへの変換であり、物理アドレスが用いられる任意の箇所で実行されるとしてよい。例えば、システムインターコネクトまたはＩＰブロックにおいて実行されるとしてよい。システムインターコネクトで当該動作を実行する場合には、ＩＰブロックが送信先でないメモリトランザクションのクリティカルパスでこの動作を実行する場合があるとしてよい。アクセラレータ内で当該動作を実行する場合には、リマッピング−１ロジックを各ＩＰブロック内に内蔵することが必要となるとしてよい。これに代えて、このようなハードウェアはＯＳＦに設けられるとしてもよい。このようなサポートによって、アプリケーションは、１つのＸ８６ストア命令を用いて、利用すべきメモリアドレスをＩＰブロックに指定するとしてよい。
【００２０】
図１から図３を参照しつつ説明すると、処理３０２において、複数バイト（例えば、図２のｃ）に示す「ｓｉｚｅ」）を、ＶＡのエイリアス（Ａｌｉａｓ＿ＶＡ：本明細書では、「ＶＡ＿Ａｌｉａｓ」とも呼ぶ）について、ユーザのアドレス空間で割り当てるとしてよい。処理３０４において、ＶＡのＰＡを特定するとしてよい。処理３０６において、ＰＡに基づきＳＡ（シャドーアドレス）を特定するとしてよい。例えば、処理３０６において、Ｒｅｍａｐ＿ｔｏ＿ｓｈａｄｏｗ（）では、ＯＳＦが真の物理アドレスを容易に抽出できるように、単純な反転関数を含むマッピングを行なうとしてよい。一部のシステムでは、実際にインストールされるメモリは、物理アドレス空間の半分未満である。このような機械では、Ｒｅｍａｐ（）関数およびＲｅｍａｐ−１（）関数は共に、アドレスの最上位の１ビットまたは２ビットを反転させることによって実施されるとしてよい。例えは、以下のように表される。
Ｒｅｍａｐ（ＰＡ）＝０ｘ８０００００００  ＸＯＲ  ＰＡ
Ｒｅｍａｐ−１（ＳＡ）＝０ｘ８０００００００  ＸＯＲ  ＳＡ
【００２１】
一部の実施形態によると、アプリケーションのうち加速されない部分は、本来のＶＡの利用を継続するとしてよい。また、ｓｙｓｃａｌｌ＿ＯＳＦ＿ｒｅｍａｐ（）は、ｍａｌｌｏｃ（）の後でのみ、例えば、アプリケーション初期化段階で実行されるとしてよい（例えば、図２のｃ）を参照のこと）。
【００２２】
ある実施形態によると、Ｒｅｍａｐ−１（ＳＡ）は、ＩＰブロック関数が呼び出される度に、ＯＳＦハードウェアによって実行されるとしてよい。ある実施形態によると、ＯＳは、シャドーページテーブルと元々のページテーブルとの間の一貫性を保つ必要がある。
【００２３】
処理３０８において、Ａｌｉａｓ＿ＶＡおよびＳＡについてページテーブルエントリを追加するとしてよい。一実施形態によると、処理３０８において、当該エントリのページ属性は、キャッシュ不可能（図４を参照しつつ説明する）に設定されるとしてよい。処理３１０において、処理３０２の割り当てサイズの終端に到達すると、Ａｌｉａｓ＿ＶＡを返送するとしてよい。終端に到達していない場合、処理３１４において、ＶＡおよびＡｌｉａｓ＿ＶＡは更新されるとしてよい（例えば、ＶＡおよびＡｌｉａｓ＿ＶＡは選択ページサイズだけインクリメントされるとしてよい）。処理３１４の後、方法３００は処理３０４から再度開始される。
【００２４】
図４は、一部の実施形態に係るＯＳページテーブルおよびＴＬＢに含まれるエントリの一例を示す図である。例えば、０ｘ０２００４００は、ｓｙｓｃａｌｌ＿ＯＳＦ＿Ｒｅｍａｐ（）によって割り当てられたユーザ仮想アドレスである。ＶＡ０ｘ００００ｂ０００のエイリアスとして、物理ページ０ｘ３０ａ０７０００によってサポートされている。しかし、ページテーブルでは、最上位ビットを意図的に反転させているので、物理ページは０ｘｂ０ａ０７０００（０ｘ８０００００００  ＸＯＲ  ０ｘ３０ａ０７０００＝０ｘｂ０ａ０７０００）となる。ある実施形態によると、ＴＬＢおよびＴＬＢミスハンドラは、ＰＡがシャドーであるか否かは考慮しない。
【００２５】
図４に示すように、アドレスマッピングは、システムコールを作成した結果、呼び出し元のアプリケーションについて変更されている。本例では、０ｘ４０００００００より高位の任意のＰＡは、ベースラインプラットフォームにおいて無効である。エイリアス仮想アドレスは全て、物理アドレス空間４０２の無効領域にマッピングされる。両方のシステムにおける有効なＰＡの範囲は、０ｘ０〜０ｘ４０００００００（インストールされたメモリおよびメモリマップドＩＯ（ＭＭＩＯ）を含む）である。
【００２６】
図５は、アプリケーションがＸ８６ストア命令「ｓｔ  ｒｅｇｉｓｔｅｒ→０ｘ０２００４０００」を、ＯＳＦ内に特別なロジックを持つ、または、持たないプラットフォーム（それぞれ、図５の部分（Ｂ）および（Ａ））で実行する場合を比較した図である。どちらの場合でも、プロセッサ（ＣＰＵ）のＭＭＵは、図４の（Ｂ）に示すページテーブルに基づき、ＶＡをＰＡである０ｘｂ０ａ０７０００に変換する。ページの属性ビットはキャッシュ不可能である旨を示しているので、書き込みは、プロセッサキャッシュを迂回して、システムインターコネクトに直接到達する（図５の処理２）。
【００２７】
図５の（Ａ）において、ＰＡは有効なＰＡアドレス範囲（例えば、有効なＰＡ範囲は、０ｘ０〜０ｘ４０００００００（インストールされたメモリおよびＭＭＩＯを含む））外であるので、ハードウェアは例外を発行する。図５の（Ｂ）では、ＯＳＦは、無効物理アドレス０ｘｂ０ａ０７０００（処理３）を選択して、リマッピング−１を実行して（処理４）、書込トランザクションを、ＩＰブロックに真の物理アドレス０ｘ３０ａ０７０００を与えるコマンドパケットに変換する（処理５）。
【００２８】
さまざまな種類のコンピューティングシステムを用いて本明細書に記載する実施形態（例えば、図１から図５を参照しつつ説明した実施形態）を実施するとしてよい。例えば、図６は、コンピューティングシステム６００の実施形態を示すブロック図である。図１に示すエージェント１０２のうち１以上は、コンピューティングシステム６００の構成要素のうち１以上を有するとしてよい。コンピューティングシステム６００は、相互接続ネットワーク（または、バス）６０４に結合されている１以上の中央演算処理装置（ＣＰＵ）６０２（本明細書では、「プロセッサ６０２」と総称する）を備えるとしてよい。プロセッサ６０２は、任意の種類のプロセッサであってよく、例えば、汎用プロセッサ、ネットワークプロセッサ（コンピュータネットワーク６０５で通信されるデータを処理するもの）等であってよい（縮小命令セットコンピュータ（ＲＩＳＣ）プロセッサまたは複合命令セットコンピュータ（ＣＩＳＣ）プロセッサを含む）。また、プロセッサ６０２は、シングルコア型またはマルチコア型のいずれであってもよい。マルチコア型のプロセッサ６０２は、複数の種類のプロセッサコアを１つの同じ集積回路（ＩＣ）ダイに集積するとしてよい。また、マルチコア型のプロセッサ６０２は、対称型または非対称型の複数のプロセッサとして実現されるとしてもよい。
【００２９】
プロセッサ６０２は、１以上のキャッシュおよび／またはメモリ管理ユニット（ＭＭＵ、図１から図５を参照しつつ説明したもの）（不図示）を有するとしてよい。キャッシュは、さまざまな実施形態において、個別キャッシュおよび／または共有キャッシュであってよい。一般的に、キャッシュは、別の箇所に格納されている元データ、または、事前に算出されている元データに対応するデータを格納する。メモリアクセスレイテンシを小さくするべく、データがキャッシュに格納された後は、元データを再度フェッチしたり、再度算出するのではなく、キャッシュされているコピーにアクセスするとしてよい。キャッシュは、システム６００の１以上の構成要素が利用する電子データ（例えば、命令を含む）を格納する任意の種類のキャッシュであってよく、例えば、レベル１（Ｌ１）キャッシュ、レベル２（Ｌ２）キャッシュ、レベル３（Ｌ３）キャッシュ、中間レベルキャッシュ、最終レベルキャッシュ（ＬＬＣ）等であってよい。
【００３０】
図６に示すように、ＯＳＦ１０４は、１以上のＩＰブロック６０３とプロセッサ６０２との間に（例えば、インターコネクト６０４を介して）結合されているとしてよい。図１から図５を参照しつつ説明したように、ＯＳＦ１０４はリマッピング−１動作を実行するロジックを有するとしてよい。
【００３１】
チップセット６０６もまた、相互接続ネットワーク６０４に結合されているとしてよい。さらに、チップセット６０６は、メモリ制御ハブ（ＭＣＨ）６０８を有するとしてよい。ＭＣＨ６０８は、メモリ６１２に結合されているメモリコントローラ６１０を含むとしてよい。メモリ６１２は、プロセッサ６０２またはコンピューティングシステム６００の構成要素と通信している任意のその他のデバイスによって実行される命令列を一例として含むデータを格納するとしてよい。ある実施形態によると、メモリ６１２は、図１から図５を参照しつつ説明したようなデータ（例えば、ページテーブル）を格納するべく利用されるとしてよい。また、本発明の一実施形態によると、メモリ６１２は、１以上の揮発性格納デバイス（または、メモリデバイス）、例えば、ランダムアクセスメモリ（ＲＡＭ）、ダイナミックＲＡＭ（ＤＲＡＭ）、シンクロナスＤＲＡＭ（ＳＤＲＡＭ）、スタティックＲＡＭ（ＳＲＡＭ）等を含むとしてよい。ハードディスク等の不揮発性メモリを利用するとしてもよい。相互接続ネットワーク６０４には、さらに装置を結合するとしてよい。例えば、複数のプロセッサおよび／または複数のシステムメモリを結合するとしてよい。
【００３２】
ＭＣＨ６０８はさらに、（例えば、ある実施形態によると、グラフィクスアクセラレータを介して）表示デバイス６１６に結合されているグラフィクスインターフェース６１４を有するとしてよい。一実施形態によると、グラフィクスインターフェース６１４は、アクセラレーテッド・グラフィクス・ポート（ＡＧＰ）を介して、表示デバイス６１６に結合されているとしてよい。本発明のある実施形態によると、表示デバイス６１６（例えば、フラットパネルディスプレイ）は、例えば、ビデオメモリまたはシステムメモリ（例えば、メモリ６１２）等の格納デバイスに格納されているデジタル形式の画像を、表示デバイス６１６が解釈および表示する表示信号へと変換する信号変換器を介して、グラフィクスインターフェース６１４に結合されているとしてよい。
【００３３】
図６に示すように、ハブインターフェース６１８は、ＭＣＨ６０８を入出力制御ハブ（ＩＣＨ）６２０に結合しているとしてよい。ＩＣＨ６２０は、コンピューティングシステム６００に結合されている入出力（Ｉ／Ｏ）デバイスに対するインターフェースとなるとしてよい。ＩＣＨ６２０は、周辺機器ブリッジ（またはコントローラ）６２４を介して、バス６２２に結合されているとしてよい。周辺機器ブリッジ（またはコントローラ）６２４は、ＰＣＩｅ仕様に準拠しているＰＣＩ（ペリフェラル・コンポーネント・インターコネクト）ブリッジ、ＵＳＢ（ユニバーサルシリアルバス）コントローラ等である。ブリッジ６２４は、プロセッサ６０２と周辺機器との間のデータ経路となるとしてよい。他の種類のトポロジーを利用するとしてもよい。また、複数のバスを、例えば、複数のブリッジまたはコントローラを介して、ＩＣＨ６２０に結合するとしてよい。例えば、バス６２２は、ＰＣＩスペシャル・インタレスト・グループ（米国オレゴン州ポートランド）が発行しているＰＣＩローカルバス仕様、改訂版３．０、２００４年に準拠しているとしてよい（以下では、「ＰＣＩバス」と呼ぶ）。これに代えて、バス６２２は、上記のＰＣＩスペシャル・インタレスト・グループ（米国オレゴン州ポートランド）が発行しているＰＣＩ−Ｘ仕様、改訂版３．０ａ、２００３年に準拠したバス（以下では、「ＰＣＩ−Ｘバス」と呼ぶ）、および／または、ＰＣＩエクスプレス（ＰＣＩｅ）仕様（ＰＣＩｅ仕様、改訂版２．０、２００６年）に準拠したバスを含むとしてもよい。また、バス６２２は、その他の種類および構成のバスシステムを含むとしてよい。また、ＩＣＨ６２０に結合されているその他の周辺機器は、本発明のさまざまな実施形態によると、ＩＤＥ（インテグレーテッド・ドライブ・エレクトロニクス）またはＳＣＳＩ（スモール・コンピュータ・システム・インターフェース）のハードドライブ、ＵＳＢポート、キーボード、マウス、パラレルポート、シリアルポート、フロッピー（登録商標）ディスクドライブ、デジタル出力サポート（例えば、ＤＶＩ（デジタル・ビデオ・インターフェース））等を含むとしてよい。
【００３４】
バス６２２は、オーディオデバイス６２６、１以上のディスクドライブ６２８、および、ネットワークアダプタ６３０（ある実施形態によると、ＮＩＣであってよい）に結合されているとしてよい。一実施形態によると、ネットワークアダプタ６３０またはバス６２２に結合されているその他のデバイスは、切替ロジック６１２（一部の実施形態では、図４のロジック４１２と同一または同様のロジックであってよい）を介して、チップセット６０６と通信するとしてよい。その他のデバイスをバス６２２に結合するとしてもよい。また、さまざまな構成要素（例えば、ネットワークアダプタ６３０）は、本発明の一部の実施形態によると、ＭＣＨ６０８に結合されているとしてよい。さらに、プロセッサ６０２およびＭＣＨ６０８を一体化して、１つのチップを構成するとしてよい。
【００３５】
コンピューティングシステム６００はさらに、揮発性メモリおよび／または不揮発性メモリ（または、ストレージ）を備えるとしてよい。例えば、不揮発性メモリは、リードオンリーメモリ（ＲＯＭ）、プログラマブルＲＯＭ（ＰＲＯＭ）、消去可能ＰＲＯＭ（ＥＰＲＯＭ）、電気的ＥＰＲＯＭ（ＥＥＰＲＯＭ）、ディスクドライブ（例えば、６２８）、フロッピー（登録商標）ディスク、コンパクトディスクＲＯＭ（ＣＤ−ＲＯＭ）、デジタル・バーサティル・ディスク（ＤＶＤ）、フラッシュメモリ、光磁気ディスク、または、電子データ（例えば、命令を含む）を格納可能なその他の種類の不揮発性機械可読媒体のうち１以上を含むとしてよい。
【００３６】
メモリ６１２は、ある実施形態において、オペレーティングシステム（ＯＳ）６３２、アプリケーション６３４、および／または、デバイスドライバ６３６（例えば、図１から図５を参照しつつ説明したＯＳ、アプリケーション、および／または、デバイスドライバ）のうち１以上を含むとしてよい。メモリ６１２はさらに、ＭＭＩＯ処理専用の領域を含むとしてよい。メモリ６１２に格納されているプログラムおよび／またはデータは、メモリ管理処理の一貫として、ディスクドライブ６２８に代りに書き込まれるとしてよい。アプリケーション６３４は、ネットワーク６０５に結合されている１以上のコンピューティングデバイスとの間で１以上のパケットを通信するべく、（例えば、プロセッサ６０２上で）実行されるとしてよい。ある実施形態によると、パケットは、少なくとも１つの送信側から少なくとも１つの受信側へと（例えば、ネットワーク６０５等のネットワークを介して）送信される１以上の電気信号によって符号化されている１以上のシンボルおよび／または値から成るシーケンスであってよい。例えば、各パケットは、当該パケットのルーティングおよび／または処理で利用されるさまざまな情報、例えば、送信元アドレス、送信先アドレス、パケットの種類等を含むヘッダを持つとしてよい。各パケットはさらに、当該パケットがコンピュータネットワーク（例えば、ネットワーク６０５）を介して複数のコンピューティングデバイス間で転送する未処理データ（またはコンテンツ）を含むペイロードを持つとしてよい。
【００３７】
ある実施形態によると、アプリケーション６３４は、ＯＳ６３２を用いて、例えば、デバイスドライバ６３６を介して、システム６００のさまざまな構成要素と通信するとしてよい。このため、デバイスドライバ６３６は、例えば、チップセット６０６を介した、ＯＳ６３２と、ネットワークアダプタ６３０との間、または、システム６００に結合されているその他のＩ／Ｏデバイスとの間の通信インターフェースを提供するためのネットワークアダプタ（５３０）専用のコマンドを含むとしてよい。
【００３８】
ある実施形態によると、ＯＳ６３２はネットワークプロトコルスタックを含むとしてよい。プロトコルスタックは概して、ネットワーク（６０５）を介して送信された、特定のプロトコルに準拠しているパケットを処理するべく実行される一連の手順またはプログラムを意味する。例えば、ＴＣＰ／ＩＰ（トランスポートコントロールプロトコル／インターネットプロトコル）パケットは、ＴＣＰ／ＩＰスタックを用いて処理されるとしてよい。デバイスドライバ６３６は、例えば、プロトコルスタックに基づき処理されるバッファ６３８を示すとしてよい。
【００３９】
ネットワーク６０５は、任意の種類のコンピュータネットワークを含むとしてよい。ネットワークアダプタ６３０はさらに、ネットワーク６０５を介してデータの送受信を行なうべく、利用可能な記述子（例えば、メモリ６１２に格納されている）に割り当てられているバッファ（例えば、メモリ６１２に格納されている）にパケットを書き込むダイレクト・メモリ・アクセス（ＤＭＡ）エンジン６５２を含むとしてよい。
【００４０】
図７は、本発明の実施形態に係るポイント・ツー・ポイント（ＰｔＰ）構成のコンピューティングシステム７００を示す図である。具体的には、図７は、プロセッサ、メモリ、および、入出力デバイスが複数のポイント・ツー・ポイント・インターフェースで相互接続されているシステムを示す。図１から図６を参照しつつ説明した処理は、システム７００の構成要素のうち１以上によって実行されるとしてよい。
【００４１】
図７に示すように、システム７００は複数のプロセッサを備えるとしてよい。説明を簡略化するべく、そのうち２つのみ、プロセッサ７０２および７０４を図示している。プロセッサ７０２および７０４はそれぞれ、メモリ７１０および７１２（請求項２および３を参照して説明するようなＭＭＩＯ領域を格納しているとしてよい）との間での通信を可能とするべくローカルメモリコントローラハブ（ＭＣＨ）７０６および７０８を有するとしてよい。メモリ７１０および／または７１２は、図６のメモリ６１２を参照しつつ説明したデータと同様のデータを格納するとしてよい。図７に示すように、プロセッサ７０２および７０４はさらに、図４および図６を参照しつつ説明したキャッシュと同様のキャッシュを１以上含むとしてよい。
【００４２】
ある実施形態によると、プロセッサ７０２および７０４は、図６を参照して説明したプロセッサ６０２のうち１つであってよい。プロセッサ７０２および７０４はそれぞれ、ポイント・ツー・ポイント（ＰｔＰ）インターフェース回路７１６および７１８を用いて、ＰｔＰインターフェース７１４を介して、データを交換するとしてよい。また、プロセッサ７０２および７０４はそれぞれ、ポイント・ツー・ポイントインターフェース回路７２６、７２８、７３０、および、７３２を用いて、個別ＰｔＰインターフェース７２２および７２４を介して、チップセット７２０とデータを交換するとしてよい。チップセット７２０はさらに、例えば、ＰｔＰインターフェース回路７３７を用いて、高性能グラフィクスインターフェース７３６を介して、高性能グラフィクス回路７３４との間でデータを交換するとしてよい。
【００４３】
少なくとも１つの実施形態によると、ＯＳＦ１０４は、プロセッサ７０２、７０４を（例えば、ＰｔＰインターフェースを介して）１以上のＩＰブロック６０３に結合するとしてよい。しかし、本発明の他の実施形態は、図７のシステム７００に含まれるその他の回路、ロジックユニット、または、デバイスに含まれるとしてよい。さらに、本発明のその他の実施形態は、図７に示した複数の回路、ロジックユニット、または、デバイス間に分散して含まれるとしてもよい。また、プロセッサ７０２、７０４は、ＭＭＵ（図５を参照しつつ説明したのと同様のもの）を含むとしてよい。さらに、ＯＳＦ１０４は、リマッピング−１ロジックを含むとしてよく、または、当該ロジックはシステム７００内のどこに配置するとしてもよい。例えば、チップセット７２０、通信デバイス７４６、バス７４０／７４４に結合されているデバイスに配置されるとしてもよい。
【００４４】
チップセット７２０は、ＰｔＰインターフェース回路７４１を用いてバス７４０と通信するとしてよい。バス７４０は、通信相手のデバイスを１以上有するとしてよい。例えば、バスブリッジ７４２およびＩ／Ｏデバイス７４３等である。バスブリッジ７４２は、バス７４４を介して、キーボード／マウス７４５、通信デバイス７４６（例えば、モデム、ネットワークインターフェースデバイス、または、コンピュータネットワーク６０５と通信するその他の通信デバイス）、オーディオＩ／Ｏデバイス、および／または、データ格納デバイス７４８等のデバイスと通信するとしてよい。データ格納デバイス７４８は、プロセッサ７０２および／または７０４によって実行されるコード７４９を格納するとしてよい。
【００４５】
本発明のさまざまな実施形態によると、例えば、図１から図７を参照しつつ本明細書で説明した処理は、ハードウェア（例えば、回路）、ソフトウェア、ファームウェア、マイクロコード、または、これらの組み合わせとして実現されるとしてよい。これらは、例えば、本明細書で説明するプロセスを実行するようにコンピュータをプログラミングするために用いられる命令（またはソフトウェアプロシージャ）が格納された機械可読媒体またはコンピュータ可読媒体を含むコンピュータプログラム製品として提供されるとしてよい。また、「ロジック」という用語は、一例として、ソフトウェア、ハードウェア、または、ソフトウェアおよびハードウェアの組み合わせを含むとしてよい。機械可読媒体は、図１から図７を参照しつつ説明したものと同様の格納デバイスを含むとしてよい。また、このようなコンピュータ可読媒体は、コンピュータプログラム製品としてダウンロードされるとしてもよい。この場合、プログラムは、リモートコンピュータ（例えば、サーバ）から要求元コンピュータ（例えば、クライアント）へと、搬送波またはその他の伝播媒体として提供されるデータ信号を用いて、通信リンク（例えば、バス、モデム、または、ネットワーク接続）を介して転送されるとしてよい。
【００４６】
本明細書において「一実施形態」または「ある実施形態」という表現は、当該実施形態に関連付けて説明する特定の特徴、構造、または、特性が少なくとも１つの実施例に含まれることを意味する。「一実施形態」という表現は本明細書において何度も登場するが、必ずしも全てが同じ実施形態を意味しているものではない。
【００４７】
また、明細書および請求項において、「結合」および「接続」という用語を利用している。本発明の一部の実施形態によると、「接続」は、２つ以上の構成要素が互いに物理的または電気的に直接接触している様子を示す用語であるとしてよい。「結合」は、２つ以上の構成要素が物理的または電気的に直接接触していることを意味するとしてよい。しかし、「結合」は同時に、２つ以上の構成要素が互いに直接接触していないが、互いに共同することも意味するとしてよい。
【００４８】
構造上の特徴および／または方法論上の動作に特有の用語を用いて本発明の実施形態を説明してきたが、請求の対象となる主題は記載した具体的な特徴および動作に限定されるものではないと理解されたい。逆に、具体的な特徴および動作は、請求の対象となる主題を実施する形態の一例として開示している。
【図１】
0005448218.tif 000002
【図２】
0005448218.tif 000003
【図３】
0005448218.tif 000004
【図４】
0005448218.tif 000005
【図５】
0005448218.tif 000006
【図６】
0005448218.tif 000007
【図７】
0005448218.tif 000008