(57)【要約】【課題】  パーティション化可能コンピュータシステムにおいてパーティションにコンピュータ資源を割り振る改良された技法を提供する。【解決手段】  本発明にかかるコンピュータシステムは、複数のパーティション（５０４ａ、５０４ｂ、７０４ａ、７０４ｂ）にパーティション化されたパーティション化可能コンピュータシステム（１００）であって、集積回路（１０４ａ、６０２）を備え、前記集積回路は、前記複数のパーティションの中の第１のパーティション（５０４ａ、７０４ａ）に割り振られた第１のハードウェア資源（２０６ａ、６２８ａ）と、前記複数のパーティションの中の前記第１のパーティション（５０４ａ、７０４ａ）と異なる前記複数のパーティションの中の第２のパーティション（５０４ｂ、７０４ｂ）に割り振られた第２のハードウェア資源（２０６ｂ、６２８ｂ）とを備える。【選択図】図６Ａ
2006040275.tif 000002
【特許請求の範囲】
【請求項１】
複数のパーティション（５０４ａ、５０４ｂ、７０４ａ、７０４ｂ）にパーティション化されたパーティション化可能コンピュータシステム（１００）であって、
集積回路（１０４ａ、６０２）
を備え、
前記集積回路（１０４ａ、６０２）は、
前記複数のパーティションの中の第１のパーティション（５０４ａ、７０４ａ）に割り振られた第１のハードウェア資源（２０６ａ、６２８ａ）と、
前記複数のパーティションの中の前記第１のパーティション（５０４ａ、７０４ａ）と異なる前記複数のパーティションの中の第２のパーティション（５０４ｂ、７０４ｂ）に割り振られた第２のハードウェア資源（２０６ｂ、６２８ｂ）と
を備えるコンピュータシステム。
【請求項２】
前記集積回路は、
プロセッサ（１０４ａ）
を備え、
前記第１および第２のハードウェア資源はそれぞれ、
第１のプロセッサコア（２０６ａ）および第２のプロセッサコア（２０６ｂ）
を備える
請求項１記載のコンピュータシステム。
【請求項３】
前記集積回路は、
入力／出力コントローラ（６０２）
を備え、
前記第１および第２のハードウェア資源はそれぞれ、
第１の入力／出力ポート（６２８ａ）および第２の入力／出力ポート（６２８ｂ）
を備える
請求項１記載のコンピュータシステム。
【請求項４】
前記第１のハードウェア資源は、
前記複数のパーティションの中の前記第１のパーティション（５０４ａ、７０４ａ）に割り振られた第１のアドレス空間内の第１の物理アドレスを出力する手段（２０４ａ、６０４ａ）
を備え、
前記複数のパーティションの中の前記第１のパーティション（５０４ａ、７０４ａ）を識別する第１のパーティション識別値を記憶する第１のパーティション識別手段（２１０ａ、６０６ａ）と、
前記第１のハードウェア資源（２０６ａ、６２８ａ）および前記第１のパーティション識別手段（２１０ａ、６０６ａ）に結合され、前記第１のパーティション識別値を前記第１の物理アドレスの少なくとも一部に記憶することによって第１のパーティション識別アドレスを生成する第１のビット置換手段（２１２ａ、６３８ａ）と
をさらに備える請求項１記載のコンピュータシステム。
【請求項５】
複数のパーティション（５０４ａ〜５０４ｄ、７０４ａ〜７０４ｄ）にパーティション化されたパーティション化可能コンピュータシステム（１００）において使用する装置であって、
前記複数のパーティション（５０４ａ〜５０４ｄ、７０４ａ〜７０４ｄ）の中の選択された１つのパーティションに割り振られたアドレス空間内の物理アドレスを含む第１のトランザクション（２３０ａ、６３６ａ）を受け取る手段（２１２ａ、６３８ａ）と、
パーティション識別値を前記物理アドレスの少なくとも一部に記憶することによってパーティション識別アドレスを生成する手段（２１２ａ、６３８ａ）と
を備える装置。
【請求項６】
複数のパーティション（７０４ａ〜７０４ｄ）にパーティション化されたパーティション化可能コンピュータシステム（１００）において使用する装置であって、
前記複数のパーティション（７０４ａ〜７０４ｄ）の中の第１のパーティション（７０４ａ）には第１のパーティション識別値が関連付けられ、
前記複数のパーティション（７０４ａ〜７０４ｄ）の中の第２のパーティション（７０４ｂ）には第２のパーティション識別値が関連付けられ、
発信元端末識別子を含むトランザクション（６１２）を受け取る手段（６０８）であって、前記発信元端末識別子は、前記受け取った入力トランザクション（６１２）を発信した発信元装置を識別する、受け取る手段と、
前記発信元端末識別子に基づいて、前記複数のパーティション（７０４ａ〜７０４ｄ）の中の前記第１のパーティション（７０４ａ）および第２のパーティション（７０４ｂ）の一方を識別する第３のパーティション識別値を特定する手段（６０８、６１６）と、
前記第３のパーティション識別値が前記第１のパーティション識別値に等しい場合、前記トランザクションの少なくともいくらか（６２６ａ）を、前記複数のパーティションの中の前記第１のパーティション（７０４ａ）に割り振られた第１のハードウェア資源（６０４ａ）に送る手段（６２２）と、
前記第３のパーティション識別値が前記第２のパーティション識別値に等しい場合、前記トランザクションの少なくとも一部（６２６ｂ）を、前記複数のパーティションの中の前記第２のパーティション（７０４ｂ）に割り振られた第２のハードウェア資源（６０４ｂ）に送る手段（６２２）と
を備える装置。
【請求項７】
複数のパーティション（７０４ａ〜７０４ｄ）にパーティション化されたパーティション化可能コンピュータシステム（１００）において使用する方法（８００）であって、
前記複数のパーティションの中の第１のパーティション（７０４ａ）には第１のパーティション識別値が関連付けられ、
前記複数のパーティションの中の第２のパーティション（７０４ｂ）には第２のパーティション識別値が関連付けられ、
（Ａ）発信元端末識別子を含むトランザクション（６１２）を受け取るステップ（８０２）であって、前記発信元端末識別子は、前記受け取った入力トランザクション（６１２）を発信した発信元装置を識別する、受け取るステップ（８０２）と、
（Ｂ）前記発信元端末識別子に基づいて、前記複数のパーティション（７０４ａ〜７０４ｄ）の中の前記第１のパーティション（７０４ａ）および第２のパーティション（７０４ｂ）の一方を識別する第３のパーティション識別値を特定するステップ（８０８）と、
（Ｃ）前記第３のパーティション識別値が前記第１のパーティション識別値に等しい場合、前記トランザクション（６１２）の少なくともいくらか（６２６ａ）を、前記複数のパーティション（７０４ａ〜７０４ｄ）の中の前記第１のパーティション（７０４ａ）に割り振られた第１のハードウェア資源（６２８ａ）に送るステップ（８１６）と、
（Ｄ）前記第３のパーティション識別値が前記第２のパーティション識別値に等しい場合、前記トランザクション（６１２）の少なくともいくらか（６２６ｂ）を、前記複数のパーティション（７０４ａ〜７０４ｄ）の中の前記第２のパーティション（７０４ｂ）に割り振られた第２のハードウェア資源（６２８ｂ）に送るステップ（８１６）と
を含む方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、パーティション化可能コンピュータに関し、より詳細には、パーティション化可能コンピュータにおいてパーティションに資源を割り振る技法に関する。
【背景技術】
【０００２】
コンピュータシステムの所有者およびオペレータは常に、コンピュータ動作効率の向上、ひいてはコンピューティングサービス提供コストの削減を追求している。
たとえば、近年、データベースサーバ、ウェブサーバ、電子メールサーバ、およびファイルサーバ等の様々な種類のサーバが企業内で急増している。
単一の企業が、多数のこういった種類のサーバのそれぞれのサービスを所有、または他の方法で採用し得る。
このようなサーバの購入（またはリース）コストおよび保守コストは膨大であり得る。
したがって、企業が使用しなければならないサーバの数を、システムパフォーマンスを低下させることなく低減することが有利であり得る。
【０００３】
サーバの数を低減する一方法は「サーバ統合」というプロセスを通すものであり、このプロセスでは、複数の独立したサーバが、本明細書では「統合サーバ」と呼ぶ単一のサーバで置き換えられる。
統合サーバは通常、かなりのコンピューティング資源（複数のプロセッサおよび大容量メモリ等）を有する強力なコンピュータシステムである。
統合サーバは、複数の「パーティション」に論理的に下位分割することができ、各パーティションにはサーバの資源の一部が割り振られる。
マルチパーティション統合サーバが、「パーティション化可能コンピュータ」の一例である。
各パーティションは、各自のオペレーティングシステムおよびソフトウェアアプリケーションを実行し、その他は、独立した物理的なコンピュータと同様に機能することができる。
【０００４】
独立サーバの集合体とは異なり、通常、統合サーバ内の各パーティション／アプリケーションに利用可能な資源は動的に調整することが可能である。
多くのアプリケーションが、頻繁に日時、月日等に依存する作業負荷需要の変動を受ける。
高作業負荷需要期間は、多くの場合、同時に発生しない。
利用可能な資源を現在高需要作業負荷下にあるパーティション／アプリケーションに与えることにより、資源利用率の向上、全体資源要件の低減、ひいては全体コストの削減が達成される。
【０００５】
パーティション化可能コンピュータがより強力になるにつれ、ますます多くの数のプロセッサが備えられる傾向がある。
具体的には、単一のパーティション化可能コンピュータは通常、いくつか（たとえば、４つ）の「セルボード」を備え、各セルボードはいくつか（たとえば、２、４、８、または１６の）プロセッサを備える。
セルボードは、スイッチングファブリックを通して相互接続され、集合的に、セルボードに含まれる個々のプロセッサの処理能力を総合した処理能力に迫る実効処理能力を提供する。
セルボードの連続した各世代は、前の世代よりも多数のプロセッサを備える傾向がある。
【０００６】
多くの既存のプロセッサのように、初期のプロセッサは単一のプロセッサコアしか備えない。
これとは対照的に、「マルチコア」プロセッサは、１つまたは複数のプロセッサコアを単一チップ上に備えることができる。
マルチコアプロセッサは、まるで複数のプロセッサであるかのように振る舞う。
複数のプロセッサコアのそれぞれは、本質的に、キャッシュ等の特定の共有資源を共有しながら、独立して動作することができる。
したがって、マルチコアプロセッサは処理効率を向上させるさらなる機会を提供する。
【発明の開示】
【発明が解決しようとする課題】
【０００７】
パーティション化可能コンピュータハードウェアのサイズ、能力、および複雑性が増大し続けるにつれ、コンピュータ資源（プロセッサおよびＩ／Ｏ装置等）をパーティションに割り振るにあたって柔軟性を提供することがますます望ましくなりつつある。
資源割り振りの柔軟性が不十分であれば、たとえば、第１のパーティションに割り振られた資源が十分に利用されず、その間に、十分な資源がない第２のパーティションが最大利用率で動作することになり得る。
したがって、必要なのは、パーティション化可能コンピュータシステムにおいてパーティションにコンピュータ資源を割り振る改良された技法である。
【発明を実施するための最良の形態】
【０００８】
本発明の実施形態について説明する前に、マルチプロセッサコンピュータアーキテクチャの一般的な特徴について説明する。
様々なマルチプロセッサコンピュータアーキテクチャがあるが、対称型多重処理（ＳＭＰ）アーキテクチャが最も広く使用されているアーキテクチャの１つである。
図１を参照して、ＳＭＰアーキテクチャを有するコンピュータシステム１００をブロック図の形で示す。
【０００９】
コンピュータシステム１００は、「システムファブリック」または単に「ファブリック」とも呼ぶスイッチングファブリック１１６を使用して相互接続された複数のセルボード１０２ａ〜１０２ｄを備える。
各セルボード１０２ａ〜１０２ｄは、複数のＣＰＵ、システムバス、およびメインメモリを備える。
【００１０】
例示および説明を容易にするために、セルボード１０２ａを図１により詳細に示し、これより、セルボード１０２ａについてより詳細に説明する。
しかし、その他のセルボード１０２ｂ〜１０２ｄも、セルボード１０２ａと同じ、または同様の構成要素および構造を備えることができる。
セルボード１０２ａは、複数のＣＰＵ１０４ａ〜１０４ｎを備える。
ここで、ｎは２、４、８、または１６等の数である。
ＣＰＵ１０４ａ〜１０４ｎは、オンボードキャッシュ１０６ａ〜ｎをそれぞれ備える。
セルボード１０２ａは、システムバス１０８、メインメモリ１１２ａ、およびメモリコントローラ１１０ａも備える。
ＣＰＵ１０４ａ〜ｎは、システムバス１０８に直接結合され、メインメモリ１１２ａは、メモリコントローラ１１０ａを経由してシステムバス１０８に結合される。
ＣＰＵ１０４ａ〜１０４ｎは、当業者に既知のように、システムバス１０８を介して互いに通信することができ、システムバス１０８を介しメモリコントローラ１１０ａを経由してメモリ１１２ａにアクセスすることができる。
【００１１】
セルボード１０２ａ〜１０２ｄは、対応するメモリコントローラ１１０ａ〜１１０ｄに結合された各自のローカルシステムメモリ１１２ａ〜１１２ｄを備えるが、セルボード１０２ａ〜１０２ｄ内のＣＰＵは、単一の結合された物理アドレス空間を使用してメモリ１１２ａ〜１１２ｄをアドレス指定することができる。
ファブリック１１６は、セルボード１０２ａ〜１０２ｄ間で通信を行う機構を提供してこのような共有メモリアクセスおよび他のセルボード間通信を行う。
【００１２】
ファブリック１１６は、たとえば、１つまたは複数のクロスバースイッチを備えることができる。
クロスバースイッチは、装置を接続することができる複数の入力／出力ポートを有する装置である。
クロスバースイッチの一対の入力／出力ポートに接続された一対の装置は、その一対の入力／出力ポートを接続するスイッチ内に形成されるパスを介して互いに通信することができる。
装置間に形成されるパスは、或る期間固定であることもでき、所望の場合に変更することもできる。
複数のパスを、クロスバースイッチ内で同時にアクティブ化することができ、それによって、複数の装置対がクロスバースイッチを経由して同時に、互いを妨げることなく相互に通信することができる。
【００１３】
ファブリック１１６は、クロスバースイッチ以外の構成要素を使用して実施することも可能である。
たとえば、ファブリック１１６は、１つまたは複数のバスを使用して実施することもできる。
【００１４】
セルボード１０２ａはファブリックエージェントチップ１１４ａも備え、ファブリックエージェントチップ１１４ａは、ファブリック１１６に結合され、セルボード１０２ａとシステム１００内のその他のセルボード１０２ｂ〜１０２ｄの間のインタフェースとして機能する。
その他のセルボード１０２ｂ〜１０２ｄも同様に、各自のファブリックエージェントチップ１１４ｂ〜１１４ｄをそれぞれ備える。
ファブリックエージェントチップ１１４ａ〜１１４ｄは、図１では別個の構成要素として示されるが、システムファブリック１１６の一部であると考えることもできる。
【００１５】
上述したように、セルボード１０２ａ〜１０２ｄ内のローカルメモリ１１２ａ〜１１２ｄには、単一の物理アドレス空間を使用してアクセスすることができる。
図１に示すシステム１００等のＳＭＰでは、これは、ファブリックエージェントチップ１１４ａ〜１１４ｄによって可能になる。
たとえば、ＣＰＵ１０４ａが、共有物理アドレス空間内のメモリロケーション（またはメモリロケーション範囲）をアドレス指定するメモリアクセス要求をメモリコントローラ１１０ａに発した場合を考える。
メモリコントローラ１１０ａは、メモリアクセス要求をローカルメモリ１１２ａから満たすことができない場合、要求をファブリックエージェントチップ１１４ａに転送する。
ファブリックエージェントチップ１１４ａは、要求内の物理アドレスを、要求されたメモリのロケーションを指定する新しいメモリアドレス（「ファブリックアドレス」と呼ぶ）に変換し、新しいファブリックアドレスを使用して新しいメモリアクセス要求をファブリック１１６に送る。
ファブリック１１６は、メモリアクセス要求を、適切なセルボード内のファブリックエージェントチップに転送する。
【００１６】
要求されたメモリアクセスは、可能であれば、受け取ったセルボードのローカルメモリを使用して行われ、結果が、ファブリック１１６を介してファブリックエージェントチップ１１４ａに送り返され、そしてメモリコントローラ１１０ａを経由してＣＰＵ１０４ａに送り返される。
これによって、セルボード１０２ａ〜１０２ｄ内のＣＰＵは、セルボード１０２ａ〜１０２ｄ内のファブリックエージェントチップ１１４ａ〜１１４ｄを使用して、ファブリック１１６を介してその他のセルボード１０２ａ〜１０２ｄのいずれにもアクセスすることができる。
このようなシステムの一目標は、ＣＰＵ１０４ａ〜１０４ｄが、メモリアクセス要求に対する応答を、このような応答がオンボードメモリから履行されたものであるか、それともオフボードメモリから履行されたものであるかに関わらず、同様に送受することができるという意味で、メモリアクセスの実施をＣＰＵ１０４ａ〜１０４ｄに対してトランスペアレントにすることである。
【００１７】
本発明の一実施形態では、パーティション化可能コンピュータシステムにおいて単一チップ上の複数の物理資源を複数のパーティションに割り振る技法が提供される。
この実施形態では、資源の１つが、物理アドレスを含むトランザクションを生成するときに、パーティション識別値（資源が割り振られるパーティションを識別する）が物理アドレスに記憶され、パーティション識別アドレスが作成される。
パーティション識別アドレスを含むトランザクションは、ファブリック１１６を介して送られ、それによって適切な宛先にルーティングされる。
【００１８】
この実施形態について、単一のマイクロプロセッサ内の複数のマイクロプロセッサコアが複数のパーティションに割り振られる例を使って説明する。
たとえば、図２を参照して、本発明の一実施形態によるＣＰＵ１０４ａの機能ブロック図を示す。
図２に示す実施形態では、ＣＰＵ１０４ａはマルチコアプロセッサである。
具体的には、ＣＰＵ１０４ａは、単一チップ上に複数のプロセッサコア２０４ａ〜２０４ｎを備える。
ここで、ｎは２、４、８、または１６等の任意の数であることができる。
コア２０４ａ〜２０４ｎは、たとえば、従来のマルチコアプロセッサに見られるような従来のプロセッサコアであることができる。
図２に示す実施形態では、コア２０４ａ〜２０４ｎはすべて、単一のキャッシュ２０８を共有する。
しかし、コア２０４ａ〜２０４ｎが単一のキャッシュを共有する必要はない。
正確に言えば、たとえば、各コアは各自のキャッシュを有してもよく、またはコア群が異なるキャッシュを共有してもよい。
【００１９】
従来のパーティション化可能コンピュータシステムでは、マルチコアプロセッサ内のすべてのコアを単一のパーティションに割り振ることが求められる。
さらに、仮にＣＰＵ１０４ａが従来のマルチコアプロセッサであった場合、コア２０４ａ〜２０４ｎはキャッシュ２０８と直接通信する。
たとえば、コア２０４ａは、書き込み先のメモリアドレスのアドレスを含むメモリ書き込み要求をキャッシュ２０８に直接送り、キャッシュ２０８は、可能であれば要求をローカルに満たし、可能でない場合にはメインメモリへのオフボード書き込みを行うことによって要求を満たす。
【００２０】
図２に示すマルチコアプロセッサ１０４ａは、これとは対照的に、コア２０４ａ〜２０４ｎを複数のパーティションに割り振れるようにする。
たとえば、図５を参照して、本発明の一実施形態によるパーティション化可能コンピュータシステム１００におけるプロセッサコア５０６ａ〜５０６ｈとパーティション５０４ａ〜５０４ｄの間のマッピング５０２を示す。
図５におけるコア５０６ａ〜５０６ｈは、ｎ＝８の場合の図２におけるコア２０４ａ〜２０４ｎを表す。
たとえば、ｎ＝８の場合、コア５０６ａはコア２０４ａを表し、コア５０６ｈはコア２０４ｎを表す。
【００２１】
各パーティション５０４ａ〜５０４ｄはそれ自体、コンピュータシステム１００の物理的な構成要素ではないことに留意する。
正確に言えば、各パーティション５０４ａ〜５０４ｄは、それに割り振られる資源（たとえば、プロセッサコア）によって定義される論理構造である。
特定のパーティションに割り振られる資源は、時間の経過に伴って可変である。
【００２２】
図５に示す例では、コア５０６ｂはパーティション５０４ａに割り振られ（マッピング５０２ｂで示す）、コア５０６ａおよび５０６ｄはパーティション５０４ｂに割り振られ（マッピング５０２ａおよび５０２ｄのそれぞれで示す）、コア５０６ｃ、５０６ｅ、および５０６ｆはパーティション５０４ｃに割り振られ（マッピング５０２ｃ、５０２ｅ、および５０２ｆのそれぞれで示す）、コア５０６ｇおよび５０６ｈはパーティション５０４ｄに割り振られる（マッピング５０２ｇおよび５０２ｈのそれぞれで示す）。
【００２３】
図５に示す特定のマッピング５０２は、単に例を目的として示され、本発明の限定として解釈されない。
任意の数のパーティションが存在することができ、コアは任意の構成でパーティションに割り振ることができる。
【００２４】
コア２０４ａ〜２０４ｎを複数のパーティションに割り振れるようにするために、ＣＰＵ１０４ａは、複数のコア２０４ａ〜２０４ｎにそれぞれ関連付けられた複数のパーティションＩＤレジスタ２１０ａ〜２１０ｎを備える。
たとえば、パーティションＩＤレジスタ２１０ａにはコア２０６ａが関連付けられ、マッピング５０２ａ（図５）を表す値が記憶される。
同様に、パーティションＩＤレジスタ２１０ｎにはコア２０４ｎが関連付けられ、マッピング５０２ｈを表す値が記憶される。
各パーティションＩＤレジスタ２１０ａ〜２１０ｎは、コンピュータシステム１００内のパーティションの数を表すのに少なくとも十分なビットを含む。
具体的には、Ｐがコンピュータシステム１００内のパーティションの数である場合、各パーティションＩＤレジスタ２１０ａ〜２１０ｎは少なくともｌｏｇ２Ｐビットを含む。
たとえば、４つのパーティションがある（図５に示す例のように）場合、各パーティションＩＤレジスタ２１０ａ〜２１０ｎは少なくとも２（ｌｏｇ２４）ビットを含む。
【００２５】
各パーティションＩＤレジスタ２１０ａ〜２１０ｎは、コア２０４ａ〜２０４ｎの対応する１つが割り振られるパーティションを一意に識別する一意のパーティションＩＤ値を記憶する。
たとえば、ＰＩＲｉを添え字ｉのパーティションＩＤレジスタとし、Ｃｉを添え字ｉの対応するプロセッサコアとする。
ここで、ｉの範囲は０〜ｎ−１である。
コアＣｉがパーティションｊに割り振られる場合、パーティションＩＤレジスタＲＩＰｉのパーティションＩＤ値に値ｊを記憶することができる。
このようにして、一意の値が、システム１００内の各パーティションを識別する。
パーティションＩＤレジスタ２１０ａ〜２１０ｎに記憶される値は、たとえば、コンピュータシステム１００において実行されるコンフィギュレーションソフトウェアによって設定することができる。
【００２６】
たとえば、再び図５に示す例を参照すると、値１（２進数０１）をパーティションＩＤレジスタ２１０ａに記憶することができ、それにより、コア２０４ａ（図５ではコア５０６ａで表される）がパーティション１（５０４ｂ）に割り振られることを示す。
同様に、値３（２進数１１）をパーティションＩＤレジスタ２１０ｎに記憶することができ、それにより、コア２０４ｎ（図５ではコア５０６ｈで表す）がパーティション３（５０４ｄ）に割り振られることを示す。
【００２７】
ＣＰＵ１０４ａは、コンピュータシステム１００上で実行中のオペレーティングシステムが、パーティションＩＤレジスタ２１０ａ〜２１０ｎに記憶されるパーティションＩＤ値を変更することができないように構成することができる。
パーティションＩＤ値のこの固定性は、たとえば、様々なハードウェアセキュリティメカニズムの任意のものにより、または単にコンフィグレーションソフトウェアとオペレーティングシステムの間での取り決めにより行うことができる。
【００２８】
コア２０４ａ〜２０４ｎの、複数のパーティション５０４ａ〜５０４ｄへの割り振りを実施するには、コンピュータシステム１００のメインメモリ１１２ａ〜１１２ｄが、各パーティションにメインメモリ１１２ａ〜１１２ｄの一部が割り振られるようにパーティション５０４ａ〜５０４ｄに割り振られる。
メインメモリ１１２ａ〜１１２ｄは、任意のサイズのブロックでパーティション５０４ａ〜５０４ｄに割り振ることができる。
たとえば、メインメモリ１１２ａ〜１１２ｄは、アドレス単位、ページ単位、またはコントローラ単位でパーティション５０４ａ〜５０４ｄに割り振ることができる。
【００２９】
本発明の一実施形態では、メモリアクセス要求を送るコアは、要求されたメモリアドレスが割り振られたパーティションを指定する必要はない。
正確に言えば、コアは、それ自体が割り振られたパーティションに関連付けられたアドレス空間（「物理アドレス空間」と呼ぶ）内のメモリアドレス（「物理アドレス」と呼ぶ）を使用して、要求されたメモリアドレスを指定する必要があるだけである。
通常、メインメモリ１１２ａ〜１１２ｄは、複数の物理アドレス空間に論理的に分割される。
各物理アドレス空間は通常、ゼロをベースとする。
これは、各物理アドレス空間内のアドレスが通常、アドレス０から始まって付番されることを意味する。
【００３０】
この結果を実現するために、或るパーティション内の特定のアドレスを、他のパーティション内の同じアドレスと区別するメカニズムが提供される。
具体的には、ＣＰＵ１０４ａは、コア２０４ａ〜２０４ｎとパーティションＩＤレジスタ２１０ａ〜２１０ｎの間にそれぞれ結合されたビット置換回路２１２ａ〜２１２ｎを備える。
【００３１】
ビット置換回路２１２ａ〜２１２ｎが行う機能を理解するために、コア２０４ａが書き込みコマンド２３０ａをライン２１４ａでビット置換回路２１２ａに送る場合を考える。
書き込みコマンド２３０ａは、書き込みを行うメモリロケーションの物理アドレス、およびそのロケーションに書き込む値を含む。
物理アドレスは、図２において「ａ［５４：０］」と示され、アドレスのビット０〜５４が有用な（アドレスを識別する）情報を含むことを示す。
【００３２】
「システム空間」という語は、本明細書では、メインメモリ１１２ａ〜１１２ｄ全体の中の各メモリロケーションに一意のアドレスを含むアドレス空間を指す。
例を目的として、システムアドレス空間が４ＧＢ（０ｘ１００００００００）であり、４つの等サイズ（１ＧＢ）のパーティションがあると想定する。
このような場合での各パーティションの物理メモリ空間は、０〜１ＧＢ（０ｘ００００００００〜０ｘ４０００００００）というアドレス範囲を有する。
第１のパーティションは、システムアドレス空間の最初の１ギガバイトに割り振り（マッピングし）、第２のパーティションは、システムアドレス空間の次の１ギガバイトに割り振り、以下同様であることができる。
特定のパーティションに割り振られたコアが、物理メモリアドレスをメモリアクセス要求の一部として生成した場合、物理メモリアドレスをシステムメモリアドレスに変換することが必要である。
本発明の一実施形態によりこの変換を行う技法の例について、これより説明する。
【００３３】
例を目的として、ライン２１４ａで送られる書き込みコマンド２３０ａ内の物理アドレスは６４ビット値であるが、単一のパーティションに割り振られる物理アドレス空間をすべてアドレス指定するために必要なのは下位５５ビットだけであると想定する。
このような場合、９個の上位アドレスビットは、物理アドレスを指定する際に必要とされない。
マルチパーティションコンピュータシステムのスタートアップ時に、各パーティションで実行されているオペレーティングシステムに、割り振られた物理アドレス空間のサイズが通知される。
その結果、正常に動作するオペレーティングシステムは、割り振られたメモリパーティションのアドレス指定に、必要（たとえば、５５）以上のビットを使用するアドレスを生成しない。
しかし、より詳細に後述するように、特定のパーティション内のオペレーティングシステムが正常に動作せず、割り振られたアドレス範囲外のアドレスを生成する場合であっても、本明細書において開示する技法は、このようなオペレーティングシステムがこのような禁止アドレスにアクセスしないようにし、それによってパーティション間セキュリティを確保する。
【００３４】
図３を参照して、書き込みコマンド２３０ａがコア２０４ａによりライン２１４ａで送られる場合に、本発明の一実施形態によるビット置換回路２１２ａによって行われる方法３００のフローチャートを示す。
ビット置換回路２１２ａは、書き込みコマンド２３０ａ（または、読み取りコマンド等、他のメモリアクセス要求）を受け取る（ステップ３０２）。
ビット置換回路２１２ａは、書き込みコマンド２３０ａを受け取ったことに応答して、パーティションＩＤ値をライン２１６ａ上のパーティションＩＤレジスタ２１０ａから読み取る（ステップ３０４）。
ビット置換回路２１２ａは、パーティションＩＤ値を物理アドレスに書き込み、それにより、元の物理アドレスおよびパーティションＩＤ値の両方を含むパーティション識別アドレスを生成する（ステップ３０６）。
【００３５】
図１２Ａを参照して、本発明の一実施形態によりステップ３０６において生成されるパーティション識別アドレス１２００の例を示す。
図１２Ａに示すパーティション識別アドレス例１２００は、６４ビット幅である。
パーティション識別アドレス１２００の部分１２０２（ビット０〜５２）が、元の書き込みコマンド２３０ａに含まれていた物理アドレスのビット０〜５２を含む。
本発明の一実施形態では、ビット置換回路２１２ａは、書き込みコマンド２３０ａから得たパーティションＩＤ値を、パーティション識別アドレス１２００の部分１２０４（ビット５３〜５４）に書き込み（ステップ３０６）、それにより、部分１２０４に記憶されていた元の値を上書きする。
したがって、部分１２０２および１２０４の両方を含む部分１２０８により、元の書き込みコマンド２３０ａによって示されるシステムメモリアドレスが明確に識別される。
パーティション識別アドレス１２００の部分１２０６（ビット５５〜６３）は使用されない。
したがって、パーティションＩＤの部分１２０４および物理アドレス部分１２０２の組み合わせが、システム１００内の一意のアドレスの指定に使用されるため、部分１２０８はアドレス１２００の「使用部分」を表す。
【００３６】
正常に動作するオペレーティングシステムは、割り振られているアドレス空間外のアドレスを有するメモリロケーションにアクセスを試みることはなく、したがって、部分１２０４または部分１２０６内のビットのいずれも設定しないことを想起する。
しかし、オペレーティングシステムが部分１２０４に任意のビットを設定する場合、このようなビットは、ステップ３０６においてビット置換回路２１２ａによって上書きされる。
ビット置換回路２１２ａは、部分１２０６をゼロまたは他の或る値で上書きするようにさらに構成することができる。
それにより、ビット置換回路２１２ａは、オペレーティングシステムがそのパーティション外のアドレスにアクセスしないようにすることができ、それにより、パーティション間セキュリティを確保する。
【００３７】
図１２Ａにおけるパーティション識別アドレス１２００の特定のレイアウトは、単に例を目的として示されるものであり、本発明の限定として解釈されない。
正確に言えば、任意のサイズおよび任意のレイアウトを有するパーティション識別アドレスを、本発明の実施形態と併用することが可能である。
たとえば、パーティション識別アドレスのレイアウトは、パーティションごとに異なってもよい。
たとえば、或るパーティションには、別のパーティションの２倍のアドレス空間を割り振ることができ、この場合、大きい方のパーティション内のアドレスは、小さい方のパーティション内のアドレスよりも、１ビット少ないパーティションＩＤ（部分１２０４）を含み、１ビット多い物理アドレス（部分１２０２）を含むことになる。
したがって、ビット置換回路２１２ａ〜２１２ｎは、可変サイズのパーティションＩＤを、コア２０４ａ〜２０４ｎが生成するアドレスの中に挿入するように個々にプログラムすることができる。
【００３８】
ビット置換回路２１２ａは、ステップ３０６において生成されたパーティション識別アドレスを含む、第１の変更書き込みコマンド２３２ａ（または他のメモリアクセス要求）を生成する（ステップ３０８）。
ビット置換回路２１２ａは、第１の変更書き込みコマンド２３２ａ（または他のメモリアクセス要求）をライン２１８ａでキャッシュ２０８に送る（ステップ３１０）。
【００３９】
上述し、図２に関連して上に示したコア、パーティションＩＤレジスタ、およびビット置換回路の組み合わせを本明細書では「拡張コア」と呼ぶ。
たとえば、ＣＰＵ１０４ａは拡張コア２０６ａ〜２０６ｎを備える。
拡張コア２０６ａは、コア２０４ａ、パーティションＩＤレジスタ２１０ａ、およびビット置換回路２１２ａを備え、拡張コア２０６ｎは、コア２０４ｎ、パーティションＩＤレジスタ２１０ｎ、およびビット置換回路２１２ｎを備える。
コア２０４ａ、ビット置換回路２１２ａ、およびパーティションＩＤレジスタ２１０ａを別個の構成要素として図２に示すが、ビット置換回路２１２ａおよび／またはパーティションＩＤレジスタ２１０ａが行う機能をコア２０４ａに統合し、それによってコア２０４ａがキャッシュ２０８と直接通信してもよい。
【００４０】
図４Ａを参照して、本発明の一実施形態による第１の変更書き込みコマンド２３２ａを受け取ったことに応答して、キャッシュ２０８によって行われる方法４００のフローチャートを示す。
キャッシュ２０８は、ビット置換回路２１２ａから第１の変更書き込みコマンド２３２ａを受け取る（ステップ４０２）。
キャッシュ２０８は、書き込み要求をローカルに満たすことができるか否か、すなわち、第１の変更書き込みコマンド２３２ａに含まれるパーティション識別アドレスに基づいて、キャッシュライン２３４にキャッシュヒットがあるか否かを判断する（ステップ４０４）。
換言すれば、キャッシュ２０８は、第１の変更書き込みコマンド２３２ａに含まれるパーティション識別アドレスによってアドレス指定されるメモリロケーションの値が、キャッシュライン２３４に記憶されているか否かを判断する。
キャッシュ２０８は、第１の変更書き込みコマンド２３２ａ内にインデックスおよびタグとして含まれるパーティション識別アドレスを使用し、次いで様々な既知の技法のいずれかを使用して、そのインデックスおよびタグに基づいてキャッシュヒットがあるか否かを判断して、ステップ４０４を行うことができる。
【００４１】
パーティションＩＤ値が記憶されるアドレスビットは、キャッシュ２０８のインデックスフィールドまたはタグフィールドのいずれかを占有することができることに留意する。
パーティションＩＤ値がキャッシュ２０８のインデックスフィールドに記憶される場合、パーティション５０４ａ〜５０４ｄには、キャッシュ２０８の固定で別個の（重複しない）部分が割り振られる。
しかし、パーティションＩＤ値がキャッシュ２０８のタグフィールドに記憶される場合、キャッシュ２０８の全体がパーティション５０４ａ〜５０４ｄによって共有され、任意のパーティションが使用する特定のキャッシュロケーションは動的であり、任意の特定の時点でのコア２０４ａ〜２０４ｎの作業負荷に依存する。
【００４２】
キャッシュヒットがある場合、キャッシュ２０８は、書き込みをローカルに（すなわち、キャッシュライン２３４内で）行い（ステップ４０６）、方法４００は終了する。
キャッシュ２０８は、承認をコア２０４ａにライン２２４ａで送ることができる。
コア２０４ａが読み取りコマンドをキャッシュ２０８に送る場合、キャッシュ２０８は、読み取り値をコア２０４ａにライン２２４ａで送ることができる。
【００４３】
キャッシュミスがある場合、キャッシュ２０８は、第２の変更書き込みコマンド２３６をアドレスマッパ２２２に送る（ステップ４０８）。
本発明の一実施形態では、第２の変更書き込みコマンド２３６は、（１）発信元端末ＩＤ（たとえば、ＣＰＵ１０４ａにサービス提供するメモリコントローラ１１０ａの端末ＩＤ）、図２では「Ｓ」とラベルされる、（２）トランザクションＩＤ（一意のトランザクション識別子）、図２では「Ｉ」とラベルされる、（３）要求種別（たとえば、メモリ読み取りまたはメモリ書き込み）、図２では「Ｒ」とラベルされる、および（４）第１の変更書き込みコマンド２３２ａから抽出されたパーティション識別アドレス１２００、図２では「ｐ１，ａ［ｎ：０］」とラベルされる、を含む。
【００４４】
特定のトランザクションについて、例を目的としてコア２０６ａに関連して上述したが、その他のコア２０６ｂ〜２０６ｎも同様にしてトランザクションを行うことができる。
たとえば、コア２０４ｎは、書き込みコマンド２３０ｎをライン２１４ｎ上に生成し、これに応答して、ビット置換回路２１２ｎはライン２１６ｎ上でパーティションＩＤレジスタ２１０ｎの値を読み取ることができる。
ビット置換回路２１２ｎは、第１の変更書き込みコマンド２３２ｎをライン２１８ｎで送り、第１の変更書き込みコマンド２３２ｎは上述したようにキャッシュ２０８によって処理することができる。
キャッシュ２０８は、ライン２２４ｎを介してコア２０４ｎと直接通信することができる。
【００４５】
本発明の一実施形態では、第２の変更書き込みコマンド２３６に含まれるパーティション識別アドレスは、システムアドレスに変換される。
図４Ｂを参照して、本発明の一実施形態において行われる、このような変換を行う方法４２０のフローチャートを示す。
方法４２０は、たとえば、方法４００のステップ４０８（図４Ａ）の後に行うことができる。
【００４６】
ＣＰＵ１０４ａはアドレスマッパ２２２を備え、アドレスマッパ２２２は、ライン２２０を介してキャッシュ２０８に結合され、したがって、第２の変更書き込みコマンド２３６を受け取る（ステップ４２２）。
アドレスマッパ２２２は、第２の変更書き込みコマンド２３６に含まれているパーティション識別アドレス１２００を、（１）宛先端末ＩＤ（たとえば、要求されるメモリアドレスへのアクセスを制御するメモリコントローラの端末ＩＤ）、および（２）トランザクション種別にマッピングする（ステップ４２４）。
トランザクション種別は、要求種別がファブリック１１６を介したトランザクションに使用されること以外は元の要求種別（たとえば、メモリ読み取りまたはメモリ書き込み）と同様の目的を果たす。
要求種別をトランザクション種別に変換する技法は、当業者に既知である。
【００４７】
本発明の一実施形態では、システム１００内の各ＣＰＵ（たとえば、ＣＰＵ１０４ａ〜１０４ｎ）およびシステム１００内の各メモリコントローラ１１０ａ〜１１０ｄは、一意の端末識別子（端末ＩＤ）を有する。
このような実施形態では、特定のパーティション内の特定の物理アドレスは、物理アドレス、パーティションのパーティションＩＤ、およびその物理アドレスが記憶されているメモリを制御するメモリコントローラの端末ＩＤの組み合わせによって一意にアドレス指定することができる。
ファブリック１１６を介して送られるアドレスはパーティション識別アドレス（すなわち、物理アドレスおよびパーティションＩＤの両方を含むアドレス）であるため、ターゲットメモリコントローラは、異なるパーティション内の同じ物理アドレスを区別することが可能なことにさらに留意する。
したがって、図２に示す実施形態では、単一のメモリコントローラが、任意の数のパーティションに割り振られたメモリを制御することができる。
【００４８】
しかし、この特定の方式は単なる例であり、本発明の限定として解釈されないことを理解されたい。
他のアドレス指定方式を、本明細書において開示する技法と併用することも可能であり、この場合、端末識別子、物理アドレス、システムアドレス、パーティション識別子、または他のデータの異なる組み合わせが、特定のメモリロケーションを一意にアドレス指定するために必要になり得る。
【００４９】
アドレスマッパ２２２は、たとえば、パーティション識別アドレスを宛先端末ＩＤおよびトランザクション種別にマッピングするアドレスマッピング２３８を保持することができる。
アドレスマッパ２２２は、マッピング２３８（これはたとえば、ルックアップテーブルとして実装することができる）を使用して、ステップ４２４における変換を行うことができる。
アドレスマッピング２３８は、あらゆるパーティション識別アドレスごとにエントリを含む必要はない。
正確に言えば、アドレスマッピング２３８は、たとえば、パーティション識別アドレス範囲（それぞれの最上位ビットによって識別される）をメモリのページまたはメモリコントローラにマッピングすることができる。
アドレスマッパ２２２は、或るパーティションに割り振られたプロセッサコアが、別のパーティション内のメモリにアクセスしようとしても、このような要求をヌルエントリにマッピングし、それによってアドレスマッパ２２２にマッピングフォルトを発生させることにより、このようなアクセスができないことを保証することができる。
【００５０】
アドレスマッパ２２２は、第３の変更書き込みコマンド２４０を生成して、システムファブリック１１６に送る（ステップ４２６）。
第３の変更書き込みコマンド２４０は、（１）第２の変更書き込みコマンド２３６からの発信元端末ＩＤ（Ｓ）、トランザクションＩＤ（Ｉ）、要求種別（Ｒ）、およびパーティション識別アドレス（ｐ１，ａ［ｎ：０］）、ならびに（２）ステップ４２４において識別された宛先端末ＩＤ（Ｄ）およびトランザクション種別（Ｔ）を含む。
システムファブリック１１６は、当業者に既知の技法を利用してＤ第３の変更書き込みコマンド２４０を、指定された宛先端末ＩＤを有するメモリコントローラに送るルータ２２８を備える。
ルータ２２８は、たとえば、入力ポートと宛先端末ＩＤの対を出力ポートにマッピングするマッピング２４４を保持することができる。
【００５１】
ルータ２２８は、第３の変更書き込みコマンド２４０を特定の入力ポートで受け取ると、その入力ポートのアイデンティティおよび第３の変更書き込みコマンド２４０に含まれる宛先端末ＩＤを使用して、要求されるメモリアドレス（複数可）へのアクセスを制御するメモリコントローラに結合された出力ポートを識別する。
ルータ２２８は、第３の変更書き込みコマンド２４０（またはこの変形）を、識別されたメモリコントローラにライン２４２で送る。
次いで、宛先メモリコントローラは、当業者に既知の技法を用いて第３の変更書き込みコマンド２４０を満足させる。
【００５２】
ルータ２２８は、インバウンドトランザクションをライン２４６で受け取ると、当業者に既知の技法を用いてトランザクションをキャッシュにライン２２６でルーティングすることができる。
次いで、キャッシュ２０８、および必要であればコア２０６ａ〜２０６ｎの１つまたは複数は、従来の技法を用いて入力トランザクションを処理することができる。
【００５３】
本発明の別の実施形態では、パーティション化可能コンピュータシステムにおいて複数のハードウェア資源を複数のパーティションに割り振る技法が提供される。
この実施形態について、単一のＩ／Ｏコントローラ内の複数の資源が複数のパーティションに割り振られる例を使って説明する。
たとえば、図６Ａおよび図６Ｂを参照して、本発明の一実施形態によるＩ／Ｏコントローラ６０２の機能ブロック図を示す。
Ｉ／Ｏコントローラ６０２は、Ｉ／Ｏポート６２８ａおよび６２８ｂを経由してＩ／Ｏコントローラ６０２にそれぞれ結合された２つのＩ／Ｏ装置６０４ａおよび６０４ｂにサービス提供する。
技法の例について、第１のＩ／Ｏポート６２８ａを第１のパーティションに割り振り、第２のＩ／Ｏポート６２８ｂを第２のパーティションに割り振り、それによって、第１のＩ／Ｏ装置６０４ａを第１のパーティションに割り振り、第２のＩ／Ｏ装置６０４ｂを第２のパーティションに割り振る場合に関してこれより説明する。
【００５４】
たとえば、図７を参照して、本発明の一実施形態によるパーティション化可能コンピュータシステム１００においてＩ／Ｏポート６２８ａおよび６２８ｂとハードウェアパーティション７０４ａ〜７０４ｄの間のマッピング７０２の図を示す。
マッピング７０２は、Ｉ／Ｏポート６２８ａおよび６２８ｂとパーティション７０４ａおよび７０４ｂの間のそれぞれのマッピング７０２ａおよび７０２ｂを含む。
Ｉ／Ｏポート６２８ａおよび６２８ｂのいずれにもマッピングされない２つのパーティション７０４ｃおよび７０４ｄがあることに留意する。
しかし、他のＩ／Ｏコントローラ（図示せず）の他のＩ／Ｏポートをパーティション７０４ｃおよび７０４ｄにマッピングすることができる。
図７に示す特定の例では、２つのパーティション７０４ａおよび７０４ｂに割り振られた２つのＩ／Ｏポート６２８ａおよび６２８ｂがあるが、任意の数のＩ／Ｏポートおよび任意の数のパーティションを互いに任意の構成でマッピングすることが可能である。
【００５５】
Ｉ／Ｏコントローラ６０２は、入力トランザクション（ライン６１０での）が、Ｉ／Ｏコントローラ６０２によって制御されるＩ／Ｏ装置６０４ａおよび６０４ｂの一方にアドレス指定されることを確認する宛先デコーダ６０８を備える。
入力トランザクションがＩ／Ｏ装置６０４ａおよび６０４ｂの一方にアドレス指定されていない場合、宛先デコーダ６０８は、Ｉ／Ｏコントローラ６０２内でトランザクションをそれ以上送らない。
【００５６】
図８を参照して、本発明の一実施形態において、入力トランザクション６１２をライン６１０上で受け取ったときに、宛先デコーダ６０８によって行われる方法８００のフローチャートを示す。
宛先デコーダ６０８は、入力トランザクション６１２を受け取る（ステップ８０２）。
本発明の一実施形態では、トランザクション６１２は、（１）発信元端末識別子（たとえば、トランザクション６１２を発した装置の端末ＩＤ）、図６Ａでは「Ｓ」と表される、（２）アクセスする物理アドレス、図６Ａでは「ａ」と表される、（３）トランザクション種別（たとえば、読み取りまたは書き込み）、図６Ａでは「Ｔ」と表される、および（４）トランザクションに関連するデータ（たとえば、トランザクション６１２が書き込みコマンドである場合は書き込むデータ）、図６Ａでは「ｄ」と表される、を含む。
【００５７】
宛先デコーダ６０８は、トランザクション６１２内の発信元端末ＩＤを調べて、トランザクション６１２を送った装置は、Ｉ／Ｏポート６２８ａおよび６２８ｂが割り振られたパーティションのいずれかに割り振られているか否かを判断する（ステップ８０４）。
トランザクション６１２は、このような装置によって送られたものではなかった場合、装置６０４ａおよび６０４ｂへのアクセスを許可されておらず、宛先デコーダ６０８は、トランザクション６１２をＩ／Ｏ装置６０４ａおよび６０４ｂに送らない（ステップ８０６）。
【００５８】
より具体的には、宛先デコーダ６０８は、有効な発信元端末ＩＤのリスト６１４を保持することができる。
リスト６１４は、Ｉ／Ｏポート６２８ａおよび６２８ｂが割り振られたパーティション７０４ａおよび７０４ｂのいずれかに割り振られたシステム１００内の装置の発信元端末ＩＤを含むことができる。
宛先デコーダ６０８は、トランザクション６１２内の発信元端末ＩＤがリスト６１４内にあるか否かを判断し、発信元端末ＩＤがリスト６１４内にない場合には、トランザクション６１２が適切なパーティションからのものではないと判断することにより、ステップ８０４を行うことができる。
【００５９】
宛先デコーダ６０８は、ステップ８０４において、トランザクション６１２が適切な装置からのものであると判断した場合、発信元端末ＩＤを、トランザクション６１２を送った装置と同じパーティション内にあるＩ／Ｏポート６２８ａおよび６２８ｂの一方のパーティションＩＤ値にマッピングする（ステップ８０８）。
宛先デコーダ６０８は、発信元端末識別子とパーティションＩＤレジスタ値とのテーブル６１６または他のマッピングを保持することができる。
したがって、宛先デコーダ６０８は、トランザクション６１２内の発信元端末ＩＤを、テーブル６１６へのインデックスとして使用し、それによって対応するパーティションＩＤレジスタ値を識別することにより、ステップ８０８を行うことができる。
【００６０】
宛先デコーダ６０８は、（１）ステップ８０８において識別されるパーティションＩＤレジスタ値（ｐ）、（２）トランザクション６１２に含まれる物理アドレス（ａ）、および（３）トランザクション６１２に含まれるデータ（ｄ）を含む第１の変更トランザクション６２０を生成する。
宛先デコーダ６０８は、第１の変更トランザクション６２０をトランザクションルータ６２２にライン６１８で送る（ステップ８１０）。
【００６１】
トランザクションルータ６２２は、トランザクション６２０を、第１の変更トランザクション６２０において識別されるパーティションに割り振られたＩ／Ｏポート６２８ａおよび６２８ｂの一方にルーティングする（ステップ８１２）。
より具体的には、トランザクションルータ６２２は、第１の変更トランザクション６２０に含まれるパーティションＩＤに割り振られたＩ／Ｏポート６２８ａおよび６２８ｂの一方を識別する（ステップ８１４）。
トランザクションルータ６２２は、たとえば、パーティションＩＤをＩ／Ｏポート６２８ａおよび６２８ｂにマッピングするルックアップテーブルを含むことができ、このルックアップテーブルを使用してステップ８１４を行うことができる。
トランザクションルータ６２２は、第１の変更トランザクション６２０からパーティションＩＤをはぎ取ることによって第２の変更トランザクションを生成することができ、次いで、第２の変更トランザクションをステップ８１４において識別された装置に送る（ステップ８１６）。
【００６２】
本発明の一実施形態では、Ｉ／Ｏポート６２８ａおよび６２８ｂは、（１）両方ともパーティション７０４ａに割り振られるか、または（２）図７に示すようにパーティション７０４ａおよび７０４ｂに別個に割り振られ得る。
Ｉ／Ｏコントローラ６０２は、このようなＩ／Ｏポート６２８ａおよび６２８ｂのパーティションへの割り振りのいずれかを実施することができるように、スイッチ６３２を備える。
Ｉ／Ｏ装置６０４ａは、ライン６３０ａを介してスイッチ６３２に結合され、Ｉ／Ｏ装置６０４ｂはライン６３０ｂを介してスイッチ６３２に結合される。
そして、スイッチ６３２は、ライン６３０ｃを介してＩ／Ｏポート６２８ａに結合される。
本発明の一実施形態では、スイッチ６３２は、Ｉ／Ｏ装置６０４ａとＩ／Ｏポート６２８ａの間に永続的な通過接続を作成する。
その結果、Ｉ／Ｏ装置６０４ａは、Ｉ／Ｏポート６２８ａを経由してＩ／Ｏコントローラ６０２と通信する。
トランザクションルータ６２２は、パーティション７０４ａに関連するトランザクションをＩ／Ｏポート６２８ａにルーティングし、それによってＩ／Ｏ装置６０４ａのパーティション７０４ａへの割り振りを実施するように構成することができる。
【００６３】
両方のＩ／Ｏポート６２８ａおよび６２８ｂがパーティション７０４ａに割り振られる場合、Ｉ／Ｏポート６２８ｂをディセーブルすることができ、スイッチ６３２を、Ｉ／Ｏ装置６０４ｂへの、およびＩ／Ｏ装置６０４ｂからのすべての通信をＩ／Ｏポート６２８ａを経由してルーティングする第１の設定に設定することができる。
Ｉ／Ｏポート６２８ａがパーティション７０４ａに割り振られ、Ｉ／Ｏポート６２８ｂがパーティション７０４ｂに割り振られる（図７に示すように）場合、Ｉ／Ｏポート６２８ａをイネーブルすることができ、スイッチ６３２を、Ｉ／Ｏ装置６０４ｂへの、およびＩ／Ｏ装置６０４ｂからのすべての通信をＩ／Ｏポート６２８ｂを経由してルーティングする第２の設定に設定することができる。
上述したようなスイッチ６３２を使用することは、トランザクションを復号化し、特定のポートにルーティングすることができる単なる一例にすぎず、本発明の限定として解釈されないことに留意する。
【００６４】
方法８００のステップ８１２に戻ると、トランザクションルータ６２２は、パーティションＩＤ値と関連するＩ／Ｏポートのマッピングを保持することができる。
たとえば、Ｉ／Ｏ装置６０４ａがパーティション７０４ａにマッピングされ、Ｉ／Ｏ装置６０４ｂがパーティション７０４ｂにマッピングされる（図７に示すように）場合を考える。
このような場合、第１の変更トランザクション６２０内のパーティションＩＤによりパーティション７０４ａが識別される場合、トランザクションルータ６２２は、第２の変更トランザクション６２６ａを生成し、ライン６２４ａでＩ／Ｏポート６２８ａに送ることができ、第２の変更トランザクション６２６ａを、Ｉ／Ｏポート６２８ａを経由し、ライン６３０ｃを通し、スイッチ６３２を経由し、次いでライン６３０ａを通してＩ／Ｏ装置６０４ａに転送することができる。
同様に、第１の変更トランザクション６２０内のパーティションＩＤにより、パーティション７０４ｂが識別される場合、トランザクションルータ６２２は、第２の変更トランザクション６２６ｂを生成し、Ｉ／Ｏポート６２８ｂにライン６２４ｂで送ることができ、Ｉ／Ｏポート６２８ｂを経由して、第２の変更トランザクション６２６ｂをＩ／Ｏ装置６０４ｂにライン６３０ｂで転送することができる。
ポート６２８ａおよび６２８ｂとパーティション７０２ａおよび７０２ｂの間に１対１のマッピングが存在する図７に示すマッピング７００は、単に例として提供されるものであり、本発明の限定として解釈されないことに留意する。
本明細書において開示する技法は、たとえば、パーティションＩＤの一部として物理アドレスに追加ビットを使用することにより、複数のポートと単一のパーティションというマッピングと併用することも可能である。
【００６５】
これより、Ｉ／Ｏ装置６０４ａおよび６０４ｂが異なるパーティションに割り振られた場合に、Ｉ／Ｏ装置６０４ａおよび６０４ｂがＩ／Ｏコントローラ６０２を経由して出力通信を行えるようにする技法の例について説明する。
ここでも、Ｉ／Ｏポート６２８ａ（したがってＩ／Ｏ装置６０４ａ）はパーティション７０４ａにマッピングされ、Ｉ／Ｏポート６２８ｂ（したがってＩ／Ｏ装置６０４ｂ）はパーティション７０４ｂにマッピングされる（図７に示すように）ものと想定する。
これより、Ｉ／Ｏ装置６０４ａが出力トランザクション６３６ａを（Ｉ／Ｏポート６２８ａを経由して）ライン６３４ａ上に生成する例を考える。
トランザクション６３６ａは物理アドレス（ａ）およびデータ（ｄ）を含む。
【００６６】
Ｉ／Ｏコントローラ６０２は、Ｉ／Ｏポート６２８ａおよび６２８ｂにそれぞれに関連する複数のパーティションＩＤレジスタ６０６ａおよび６０６ｂを備える。
具体的には、パーティションＩＤレジスタ６０６ａにはＩ／Ｏポート６２８ａが関連付けられ、マッピング７０２ａ（図７）を表す。
同様に、パーティションＩＤレジスタ６０６ｂにはＩ／Ｏポート６２８ｂが関連付けられ、マッピング７０２ｂを表す。
各パーティションＩＤレジスタ６０６ａおよび６０６ｂは、Ｉ／Ｏポート６２８ａおよび６２８ｂを割り振るパーティションを区別するに少なくとも十分なビットを含む。
【００６７】
各パーティションＩＤレジスタ６０６ａおよび６０６ｂは、Ｉ／Ｏポート６２８ａおよび６２８ｂの対応する一方が割り振られるパーティションを一意に識別する一意のパーティションＩＤ値を記憶する。
たとえば、再び図７に示す例を参照すると、値０（２進数００）をパーティションＩＤレジスタ６０６ａに記憶することができ、それによってＩ／Ｏポート６２８ａがパーティション０（７０４ａ）に割り振られることを示す。
同様に、値１（２進数０１）をパーティションＩＤレジスタ６０６ｂに記憶することができ、それによってＩ／Ｏポート６２８ｂがパーティション１（７０４ｂ）に割り振られることを示す。
Ｉ／Ｏコントローラ６０２は、コンピュータシステム１００で実行中のオペレーティングシステムが、パーティションＩＤレジスタ６０６ａおよび６０６ｂに記憶されているパーティションＩＤ値を変更することができないように構成することができる。
【００６８】
図９を参照して、装置６０４ａが出力トランザクション６３６ａをライン６３４ａで送る場合に、本発明の一実施形態によるビット置換回路６３８ａによって行われる方法９００のフローチャートを示す。
ビット置換回路６３８ａは、出力トランザクション６３６ａを受け取る（ステップ９０２）。
ビット置換回路６３８ａは、トランザクション６３６ａを受け取ったことに応答して、ライン６４０ａ上でパーティションＩＤレジスタ６０６ａからパーティションＩＤ値を読み取る（ステップ９０４）。
ビット置換回路６３８ａは、パーティションＩＤ値を物理アドレスに書き込み、それによってパーティション識別アドレスを生成する（ステップ９０６）。
【００６９】
ステップ９０６において生成されるパーティション識別アドレスは、たとえば、図１２Ｂに示すレイアウトを有することができる。
図１２Ｂに示すパーティション識別アドレス例１２１０は、６４ビット幅である。
パーティション識別アドレス１２１０の部分１２１２（ビット０〜５４）は、元のトランザクション６３６ａに含まれていた物理アドレスを含む。
本発明の一実施形態では、ビット置換回路６３８ａは、トランザクション６３６ａから得たパーティションＩＤ値を、パーティション識別アドレス１２１０の部分１２１４（ビット５５）に書き込む（ステップ９０６）。
換言すれば、ビット置換回路６３８ａは、パーティションＩＤ値を元の物理アドレスに添付する。
したがって、部分１２１２および１２１４の両方を含む部分１２１８は、元のトランザクション６３６ａが示すシステムメモリアドレスを明確に識別する。
パーティション識別アドレス１２１０の部分１２１６（ビット５６〜６３）は使用されない。
したがって、パーティションＩＤの部分１２１４および物理アドレス部分１２１２の組み合わせが、システム１００内の一意のアドレスの指定に使用されるため、部分１２１８はアドレス１２１０の「使用部分」を表す。
【００７０】
２ビット幅である、アドレス１２００（図１２Ａ）のパーティションＩＤフィールド１２０４とは対照的に、アドレス１２１０のパーティションＩＤフィールド１２１４はわずか１ビット幅であることに留意する。
アドレス１２１０のパーティションＩＤフィールド１２１４に必要な幅は、Ｉ／Ｏポート６２８ａおよび６２８ｂが割り振られたパーティションを区別するのに十分な幅だけである。
Ｉ／Ｏポート６２８ａおよび６２８ｂは、図６Ａおよび図６Ｂに示す例では２つのパーティションに割り振られるため、パーティションＩＤフィールド１２１４に必要な幅は１ビットだけである。
これとは対照的に、アドレス１２００（図１２Ａ）のパーティションＩＤフィールド１２０４は、システム内のすべてのパーティション５０４ａ〜５０４ｄを区別することができなければならないため、２ビット幅である。
パーティションＩＤフィールド１２０４および１２１４に必要な最小幅は、もちろん、パーティションＩＤフィールドで表す必要のある一意のパーティションの数に応じて可変である。
【００７１】
図１２Ｂにおけるパーティション識別アドレス１２１０の特定のレイアウトは、単に例を目的として示されるものであり、本発明の限定として解釈されない。
正確に言えば、任意のサイズおよび任意のレイアウトを有するパーティション識別アドレスを、本発明の実施形態と併用することが可能である。
ビット置換回路６３８ａは、ステップ９０６において生成されたパーティション識別アドレスを含む第１の変更トランザクション６４２ａを生成する（ステップ９０８）。
ビット置換回路６３８ａは、第１の変更トランザクション６４２ａをキャッシュ６４６にライン６４４ａで送る（ステップ９１０）。
【００７２】
図１０を参照して、本発明の一実施形態による第１の変更トランザクション６４２ａを受け取ったことに応答して、キャッシュ６４６によって行われる方法１０００のフローチャートを示す。
キャッシュ６４６は、第１の変更トランザクション６４２ａをビット置換回路６３８ａから受け取る（ステップ１００２）。
キャッシュ６４６は、第１の変更トランザクション６４２ａを、キャッシュライン６４８にローカルに記憶されているキャッシュデータを使用して満たすことができるか否かを判断する（ステップ１００４）。
キャッシュヒットがある場合、キャッシュ６４６はトランザクションをローカルに（すなわち、キャッシュライン６４８内で）行い（ステップ１００６）、方法１０００は終了する。
データは、ライン６５０を介してＩＯカードからキャッシュに書き込まれる。
トランザクション６３６ａが読み取りコマンドである場合、キャッシュ６４６は読み取り値を装置６０４ａにライン６５０で送ることができる。
【００７３】
キャッシュミスがある場合、キャッシュ６４６は、第２の変更トランザクション６５２をアドレスマッパ６５６にライン６５４で送る（ステップ１００８）。
本発明の一実施形態では、第２の変更トランザクション６５２は、第１の変更トランザクション６４２ａからのパーティションＩＤ値および物理アドレスを含む。
【００７４】
図１１を参照して、本発明の一実施形態において、第２の変更トランザクション６５２を受け取ったときに、アドレスマッパ６５６によって行われる方法１１００のフローチャートを示す。
アドレスマッパ６５６は、第２の変更トランザクション６５２をライン６５４で受け取る（ステップ１１０２）。
アドレスマッパ６５６は、宛先端末ＩＤへのアドレス−パーティションＩＤ対のマッピング６５８を保持する。
アドレスマッパ６５６は、マッピング６５８を使用して、第２の変更トランザクション６５２内のパーティションＩＤおよびアドレスを宛先端末ＩＤにマッピングする（ステップ１１０４）。
【００７５】
アドレスマッパ６５６は第３の変更トランザクション６７０を生成し、システムファブリック１１６にライン６７２で送る（ステップ１１０６）。
第３の変更トランザクション６７０は、（１）ステップ１１０４において識別された宛先端末ＩＤ、（２）第２の変更トランザクション６５２からの物理アドレス、および（３）第２の変更トランザクション６５２からのデータ（もしあれば）を含む。
図６Ａおよび図６Ｂに示す実施形態では、パーティションＩＤは異なるパーティションを内部で（すなわち、Ｉ／Ｏコントローラ６０２内で）区別するためだけに使用されるため、第３の変更トランザクション６７０は、ステップ９０４（図９）において識別されたパーティションＩＤを含まないことに留意する。
【００７６】
上述したように、ルータ２２８は、第３の変更トランザクション６７０を、図２に関連して上述した技法を用いて、第３の変更トランザクション６７０に含まれる宛先端末ＩＤを有するメモリコントローラまたは他の装置にルーティングする。
【００７７】
上述した例はパーティション７０４ａおよび対応するＩ／Ｏポート６２８ａに関わるが、同じまたは同様の技法をパーティション７０４ｂおよび対応するＩ／Ｏポート６２８ｂと併用することができる。
たとえば、ビット置換回路６３８ｂは、装置６０４ｂからの出力トランザクション６３６ｂをライン６３４ｂで受け取り、パーティションＩＤレジスタ６０６ｂの値を置換することができ、それにより第１の変更トランザクション６４２ｂを生成しライン６４４ｂで送る。
次いで、第１の変更トランザクション６４２ｂを上述したように処理することができる。
【００７８】
本発明の利点としては、以下の１つまたは複数が挙げられる。
【００７９】
既存のパーティション化可能コンピュータアーキテクチャは通常、資源をパーティションにチップ単位で割り振る。
換言すれば、従来のパーティション化可能コンピュータでは、単一のチップ内の資源（プロセッサコア等）をすべて、多くとも１つのパーティションに割り振らなければならない。
単一のチップ内の資源の数および能力が増大するにつれ、このようなチップ単位での資源の割り振りは、パーティション化可能コンピュータシステムにおいて資源をパーティションに割り振ることができる粒度の程度に制約を課す。
このような制約は、資源を最適に利用するように係る資源をパーティションに動的に割り振ることができる程度を制限する。
【００８０】
本明細書において開示する技法は、資源をサブチップ単位で割り振る能力を提供することにより、この問題に対処する。
単一のチップ上の複数の資源を複数のパーティションに割り振る能力は、条件の変化に応答して係る資源を最適に割り振ることができる程度を向上させる。
サブチップパーティション割り振りにより、パーティション化可能コンピュータシステムは、依然としてユーザに要求される粒度の細かい資源の割り振りを提供しながら、ますます多数の機能を単一のチップ上に提供するというコンピュータチップ設計の現在の傾向によって可能になるコストおよびサイズの削減という利点を完全に利用できるようにする。
【００８１】
さらに、本発明の実施形態は、サブチップパーティション割り振りを、既存の回路に比較的局所的な変更を行うことで達成できるようにし、それにより、既存の回路の大部分を変更なく本発明の実施形態と併用できるようにする。
たとえば、図２に示すシステムでは、コア２０４ａ〜２０４ｎ、キャッシュ２０８、およびファブリック１１６は従来技術による構成要素であることができる。
その結果、本発明の実施形態は、比較的容易に、素早く、かつ安価に実施することができる。
【００８２】
本明細書において開示した技法のさらなる利点は、ビット置換回路２１２ａ〜２１２ｎ、６３８ａおよび６３８ｂが、対応するパーティション内のオペレーティングシステムが他のパーティション内のアドレスにアクセスしないようにすることにより、パーティション間セキュリティを確保することができることである。
上述したように、このようなセキュリティは、オペレーティングシステムが、生成したアドレスの上位ビット（たとえば、アドレス１２００（図１２Ａ）の部分１２０４または１２０６のビット、ならびにアドレス１２１０（図１２Ｂ）の部分１２１４または１２１６のビット）に書き込むいずれの値も上書きすることによって提供することができる。
それにより、本明細書において開示する技法は、悪意のある、または不適切に設計されたソフトウェアが出し抜くことができない程度の、ハードウェアによって確保されるパーティション間セキュリティを提供する。
【００８３】
本発明について特定の実施形態に関して上述したが、上記実施形態は例示としてのみ提供され、本発明の範囲を限定または規定しないことを理解されたい。
以下を含むがこれらに限定されない他の様々な実施形態も特許請求の範囲内である。
たとえば、本明細書において説明した要素および構成要素は、さらなる構成要素にさらに分割してもよく、または共に結合して、同じ機能を行うより少数の構成要素を形成してもよい。
【００８４】
「資源」という語は、本明細書では、プロセッサコア（図２）およびＩ／Ｏポート（図６Ａおよび図６Ｂ）等、コンピュータシステム内のハードウェア資源を指す。
チップは、１つまたは複数のハードウェア資源を含み得る。
本明細書では、プロセッサコアおよびＩ／Ｏポートが、本発明の実施形態においてパーティションに個々に割り振ることができるハードウェア資源の例として提供されるが、本発明の実施形態は、他の種類のハードウェア資源をパーティションにサブチップベースでの割り振りに使用することができる。
さらに、図２における例に示す技法は、複数のＣＰＵコア２０６ａ〜２０６ｎに適用されるが、係る技法は、Ｉ／Ｏポートまたは他の任意の種類の資源に適用することが可能である。
同様に、図６Ａおよび図６Ｂにおける例に示す技法は複数のＩ／Ｏポート６２８ａおよび６２８ｂに適用されるが、係る技法は、ＣＰＵコアまたは他の任意の種類の資源に適用することが可能である。
【００８５】
一般に、本明細書において開示した技法は、キャッシュを備えたシステムにおいて使用することができ、それによってキャッシュを複数のパーティションに割り振る。
さらに、メモリマッピングトランザクションを使用してアクセスされるいずれの資源も、本明細書において開示した技法を用いて、パーティション化可能コンピュータシステムにおいて特定のパーティションに割り振ることが可能である。
【００８６】
たとえば、汎用イベントレジスタ（ＧＰＥ）は通常、特定のパーティションに割り振られる。
したがって、特定のＧＰＥは通常、割り振られたパーティションのアドレス空間内でアドレス指定可能である。
本明細書において開示した技法を採用して、一意のシステム（ファブリック）アドレスにあるシステムファブリック１１６を介して各パーティションのＧＰＥにアクセスできるようにすることができる。
【００８７】
単一のチップ（集積回路）上の複数の資源を複数のパーティションに割り振ることを含む特定の例を上に提供したが、本明細書において開示した技法は、単一のチップ上の資源との併用に限定されない。
正確に言えば、より一般に、本明細書において開示する技法は、コンピュータシステム内の複数の資源をコンピュータシステム内の複数のパーティションに割り振る際に使用することが可能である。
【００８８】
単一のメモリコントローラが図１におけるセルボード１０２ａ〜１０２ｄのそれぞれに示されるが、これは本発明の要件ではない。
正確に言えば、セルボードは、各自の端末ＩＤをそれぞれ有することができる複数のメモリコントローラを備えることができる。
当業者は、本発明の実施形態を、単一のセルボード上に複数のメモリコントローラを備えたシステムに実施する方法を理解しよう。
【００８９】
図２に示す例では、コア２０４ａがメモリ書き込みコマンド２３０ａを発するが、メモリ書き込みコマンド２３０ａは、メモリアクセス要求の単なる一例にすぎず、メモリアクセス要求も同様に、本明細書において開示した技法を適用することが可能なトランザクションの単なる一例にすぎない。
【００９０】
パーティションＩＤ値は、図２におけるパーティションＩＤレジスタ２１０ａ〜２１０ｎに記憶されるが、任意の様式で表現し、記憶することが可能である。
たとえば、パーティションＩＤ値をそれぞれ別個のレジスタに記憶する必要はなく、また本明細書において説明した特定の付番方式を使用して表現する必要はない。
【００９１】
本発明の各種実施形態について、対称型マルチプロセッサコンピュータアーキテクチャ（ＳＭＰ）と併せて本明細書において説明したが、本発明の実施形態はＳＭＰとの併用に限定されない。
本発明の実施形態は、たとえば、ＮＵＭＡ（不均等メモリアクセス）マルチプロセッサコンピュータアーキテクチャと併用することも可能である。
【００９２】
４つのセルボード１０２ａ〜１０２ｄを図１に示すが、これは本発明の要件ではない。
正確に言えば、本明細書において開示する技法は、任意の数のセルボードを有するマルチプロセッサコンピュータシステムと併用することが可能である。
さらに、システム内の各セルボードは、任意の数のプロセッサ（１を含む）を有することができる。
本明細書において用いる「セルボード」という語は、任意の特定の種類のセルボードに限定されず、正確に言えば、１つまたは複数のプロセッサのセットがシステムファブリックを介して、エージェントチップ等のインタフェースを経由して通信できるようにする電気的および／または機械的な構成要素の任意のセットを広く指す。
【００９３】
ファブリックエージェントチップ１１４ａおよびメモリコントローラ１１０ａは、別個の離散した構成要素として図１に示されるが、これは本発明の要件ではない。
正確に言えば、ファブリックエージェントチップ１１４ａおよびメモリコントローラ１１０ａは、単一のチップパッケージに一体化することが可能である。
【図面の簡単な説明】
【００９４】
【図１】本発明の一実施形態によるマルチプロセッサコンピュータシステムのブロック図である。
【図２】本発明の一実施形態による図１のコンピュータシステムのＣＰＵのうちの１つのブロック図である。
【図３】本発明の一実施形態による図２のビット置換回路によって行われる方法のフローチャートである。
【図４Ａ】本発明の一実施形態による図２のキャッシュによって行われる方法のフローチャートである。
【図４Ｂ】本発明の一実施形態による図２のアドレスマッパによって行われる方法のフローチャートである。
【図５】本発明の一実施形態によるパーティション化可能コンピュータシステムにおけるプロセッサコアとハードウェアパーティション間のマッピングの図である。
【図６Ａ】本発明の一実施形態によるＩ／Ｏコントローラを示す。
【図６Ｂ】本発明の一実施形態によるＩ／Ｏコントローラを示す。
【図７】本発明の一実施形態によるパーティション化可能コンピュータシステムにおけるＩ／Ｏポートとパーティションの間のマッピングの図である。
【図８】本発明の一実施形態による入力トランザクションの物理アドレスを復号化する、図６Ａおよび図６Ｂの宛先デコーダによって行われる方法のフローチャートである。
【図９】本発明の一実施形態による、図６Ａおよび図６Ｂのビット置換回路によって行われる方法のフローチャートである。
【図１０】本発明の一実施形態による、図６Ａおよび図６Ｂのキャッシュによって行われる方法のフローチャートである。
【図１１】本発明の一実施形態による図６Ａ〜図６Ｂのアドレスマッパによって行われる方法のフローチャートである。
【図１２Ａ】本発明の一実施形態によるパーティション識別アドレスの図である。
【図１２Ｂ】本発明の別の実施形態によるパーティション識別アドレスの図である。
【符号の説明】
【００９５】
１０２ａ〜１０２ｄ・・・セルボード，
１０６ａ〜１０６ｎ・・・キャッシュ，
１０８・・・システムバス，
１１０ａ〜１１０ｄ・・・メモリコントローラ，
１１２ａ〜１１２ｄ・・・メインメモリ，
１１４ａ・・・ファブリックエージェントチップ（ＦＡＣ），
１１６・・・スイッチングファブリック，
１１８・・・Ｉ／Ｏサブシステム，
１１６・・・ファブリック，
２０４ａ〜２０４ｎ、２０６ａ〜２０６ｎ・・・コア，
２０８・・・キャッシュ，
２１２ａ〜２１２ｎ・・・ビット置換，
２２２・・・アドレスマッパ，
２２８・・・ルータ，
２３４・・・キャッシュライン，
５０４ａ〜５０４ｄ・・・パーティション，
５０６ａ〜５０６ｈ・・・コア，
６０２・・・Ｉ／Ｏコントローラ，
６０４ａ、６０４ｂ・・・Ｉ／Ｏ装置，
６０８・・・宛先デコーダ，
６２２・・・トランザクションルータ，
６２８ａ、６２８ｂ・・・Ｉ／Ｏポート，
６３２・・・スイッチ，
６３８ａ、６３８ｂ・・・ビット置換，
６４６・・・キャッシュ，
６４８・・・キャッシュライン，
６５６・・・アドレスマッパ，
７０４ａ〜７０４ｄ・・・パーティション，
【図１】
2006040275.tif 000003
【図２】
2006040275.tif 000004
【図３】
2006040275.tif 000005
【図４Ａ】
2006040275.tif 000006
【図４Ｂ】
2006040275.tif 000007
【図５】
2006040275.tif 000008
【図６Ａ】
2006040275.tif 000009
【図６Ｂ】
2006040275.tif 000010
【図７】
2006040275.tif 000011
【図８】
2006040275.tif 000012
【図９】
2006040275.tif 000013
【図１０】
2006040275.tif 000014
【図１１】
2006040275.tif 000015
【図１２Ａ】
2006040275.tif 000016
【図１２Ｂ】
2006040275.tif 000017