JP2006040275A - パーティション化可能コンピュータにおけるパーティションへの資源割り振り - Google Patents
パーティション化可能コンピュータにおけるパーティションへの資源割り振り Download PDFInfo
- Publication number
- JP2006040275A JP2006040275A JP2005202511A JP2005202511A JP2006040275A JP 2006040275 A JP2006040275 A JP 2006040275A JP 2005202511 A JP2005202511 A JP 2005202511A JP 2005202511 A JP2005202511 A JP 2005202511A JP 2006040275 A JP2006040275 A JP 2006040275A
- Authority
- JP
- Japan
- Prior art keywords
- partition
- partitions
- address
- transaction
- allocated
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
- G06F9/5077—Logical partitioning of resources; Management or configuration of virtualized resources
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Multi Processors (AREA)
- Memory System (AREA)
Abstract
【課題】 パーティション化可能コンピュータシステムにおいてパーティションにコンピュータ資源を割り振る改良された技法を提供する。
【解決手段】 本発明にかかるコンピュータシステムは、複数のパーティション(504a、504b、704a、704b)にパーティション化されたパーティション化可能コンピュータシステム(100)であって、集積回路(104a、602)を備え、前記集積回路は、前記複数のパーティションの中の第1のパーティション(504a、704a)に割り振られた第1のハードウェア資源(206a、628a)と、前記複数のパーティションの中の前記第1のパーティション(504a、704a)と異なる前記複数のパーティションの中の第2のパーティション(504b、704b)に割り振られた第2のハードウェア資源(206b、628b)とを備える。
【選択図】図6A
【解決手段】 本発明にかかるコンピュータシステムは、複数のパーティション(504a、504b、704a、704b)にパーティション化されたパーティション化可能コンピュータシステム(100)であって、集積回路(104a、602)を備え、前記集積回路は、前記複数のパーティションの中の第1のパーティション(504a、704a)に割り振られた第1のハードウェア資源(206a、628a)と、前記複数のパーティションの中の前記第1のパーティション(504a、704a)と異なる前記複数のパーティションの中の第2のパーティション(504b、704b)に割り振られた第2のハードウェア資源(206b、628b)とを備える。
【選択図】図6A
Description
本発明は、パーティション化可能コンピュータに関し、より詳細には、パーティション化可能コンピュータにおいてパーティションに資源を割り振る技法に関する。
コンピュータシステムの所有者およびオペレータは常に、コンピュータ動作効率の向上、ひいてはコンピューティングサービス提供コストの削減を追求している。
たとえば、近年、データベースサーバ、ウェブサーバ、電子メールサーバ、およびファイルサーバ等の様々な種類のサーバが企業内で急増している。
単一の企業が、多数のこういった種類のサーバのそれぞれのサービスを所有、または他の方法で採用し得る。
このようなサーバの購入(またはリース)コストおよび保守コストは膨大であり得る。
したがって、企業が使用しなければならないサーバの数を、システムパフォーマンスを低下させることなく低減することが有利であり得る。
たとえば、近年、データベースサーバ、ウェブサーバ、電子メールサーバ、およびファイルサーバ等の様々な種類のサーバが企業内で急増している。
単一の企業が、多数のこういった種類のサーバのそれぞれのサービスを所有、または他の方法で採用し得る。
このようなサーバの購入(またはリース)コストおよび保守コストは膨大であり得る。
したがって、企業が使用しなければならないサーバの数を、システムパフォーマンスを低下させることなく低減することが有利であり得る。
サーバの数を低減する一方法は「サーバ統合」というプロセスを通すものであり、このプロセスでは、複数の独立したサーバが、本明細書では「統合サーバ」と呼ぶ単一のサーバで置き換えられる。
統合サーバは通常、かなりのコンピューティング資源(複数のプロセッサおよび大容量メモリ等)を有する強力なコンピュータシステムである。
統合サーバは、複数の「パーティション」に論理的に下位分割することができ、各パーティションにはサーバの資源の一部が割り振られる。
マルチパーティション統合サーバが、「パーティション化可能コンピュータ」の一例である。
各パーティションは、各自のオペレーティングシステムおよびソフトウェアアプリケーションを実行し、その他は、独立した物理的なコンピュータと同様に機能することができる。
統合サーバは通常、かなりのコンピューティング資源(複数のプロセッサおよび大容量メモリ等)を有する強力なコンピュータシステムである。
統合サーバは、複数の「パーティション」に論理的に下位分割することができ、各パーティションにはサーバの資源の一部が割り振られる。
マルチパーティション統合サーバが、「パーティション化可能コンピュータ」の一例である。
各パーティションは、各自のオペレーティングシステムおよびソフトウェアアプリケーションを実行し、その他は、独立した物理的なコンピュータと同様に機能することができる。
独立サーバの集合体とは異なり、通常、統合サーバ内の各パーティション/アプリケーションに利用可能な資源は動的に調整することが可能である。
多くのアプリケーションが、頻繁に日時、月日等に依存する作業負荷需要の変動を受ける。
高作業負荷需要期間は、多くの場合、同時に発生しない。
利用可能な資源を現在高需要作業負荷下にあるパーティション/アプリケーションに与えることにより、資源利用率の向上、全体資源要件の低減、ひいては全体コストの削減が達成される。
多くのアプリケーションが、頻繁に日時、月日等に依存する作業負荷需要の変動を受ける。
高作業負荷需要期間は、多くの場合、同時に発生しない。
利用可能な資源を現在高需要作業負荷下にあるパーティション/アプリケーションに与えることにより、資源利用率の向上、全体資源要件の低減、ひいては全体コストの削減が達成される。
パーティション化可能コンピュータがより強力になるにつれ、ますます多くの数のプロセッサが備えられる傾向がある。
具体的には、単一のパーティション化可能コンピュータは通常、いくつか(たとえば、4つ)の「セルボード」を備え、各セルボードはいくつか(たとえば、2、4、8、または16の)プロセッサを備える。
セルボードは、スイッチングファブリックを通して相互接続され、集合的に、セルボードに含まれる個々のプロセッサの処理能力を総合した処理能力に迫る実効処理能力を提供する。
セルボードの連続した各世代は、前の世代よりも多数のプロセッサを備える傾向がある。
具体的には、単一のパーティション化可能コンピュータは通常、いくつか(たとえば、4つ)の「セルボード」を備え、各セルボードはいくつか(たとえば、2、4、8、または16の)プロセッサを備える。
セルボードは、スイッチングファブリックを通して相互接続され、集合的に、セルボードに含まれる個々のプロセッサの処理能力を総合した処理能力に迫る実効処理能力を提供する。
セルボードの連続した各世代は、前の世代よりも多数のプロセッサを備える傾向がある。
多くの既存のプロセッサのように、初期のプロセッサは単一のプロセッサコアしか備えない。
これとは対照的に、「マルチコア」プロセッサは、1つまたは複数のプロセッサコアを単一チップ上に備えることができる。
マルチコアプロセッサは、まるで複数のプロセッサであるかのように振る舞う。
複数のプロセッサコアのそれぞれは、本質的に、キャッシュ等の特定の共有資源を共有しながら、独立して動作することができる。
したがって、マルチコアプロセッサは処理効率を向上させるさらなる機会を提供する。
これとは対照的に、「マルチコア」プロセッサは、1つまたは複数のプロセッサコアを単一チップ上に備えることができる。
マルチコアプロセッサは、まるで複数のプロセッサであるかのように振る舞う。
複数のプロセッサコアのそれぞれは、本質的に、キャッシュ等の特定の共有資源を共有しながら、独立して動作することができる。
したがって、マルチコアプロセッサは処理効率を向上させるさらなる機会を提供する。
パーティション化可能コンピュータハードウェアのサイズ、能力、および複雑性が増大し続けるにつれ、コンピュータ資源(プロセッサおよびI/O装置等)をパーティションに割り振るにあたって柔軟性を提供することがますます望ましくなりつつある。
資源割り振りの柔軟性が不十分であれば、たとえば、第1のパーティションに割り振られた資源が十分に利用されず、その間に、十分な資源がない第2のパーティションが最大利用率で動作することになり得る。
したがって、必要なのは、パーティション化可能コンピュータシステムにおいてパーティションにコンピュータ資源を割り振る改良された技法である。
資源割り振りの柔軟性が不十分であれば、たとえば、第1のパーティションに割り振られた資源が十分に利用されず、その間に、十分な資源がない第2のパーティションが最大利用率で動作することになり得る。
したがって、必要なのは、パーティション化可能コンピュータシステムにおいてパーティションにコンピュータ資源を割り振る改良された技法である。
本発明の実施形態について説明する前に、マルチプロセッサコンピュータアーキテクチャの一般的な特徴について説明する。
様々なマルチプロセッサコンピュータアーキテクチャがあるが、対称型多重処理(SMP)アーキテクチャが最も広く使用されているアーキテクチャの1つである。
図1を参照して、SMPアーキテクチャを有するコンピュータシステム100をブロック図の形で示す。
様々なマルチプロセッサコンピュータアーキテクチャがあるが、対称型多重処理(SMP)アーキテクチャが最も広く使用されているアーキテクチャの1つである。
図1を参照して、SMPアーキテクチャを有するコンピュータシステム100をブロック図の形で示す。
コンピュータシステム100は、「システムファブリック」または単に「ファブリック」とも呼ぶスイッチングファブリック116を使用して相互接続された複数のセルボード102a〜102dを備える。
各セルボード102a〜102dは、複数のCPU、システムバス、およびメインメモリを備える。
各セルボード102a〜102dは、複数のCPU、システムバス、およびメインメモリを備える。
例示および説明を容易にするために、セルボード102aを図1により詳細に示し、これより、セルボード102aについてより詳細に説明する。
しかし、その他のセルボード102b〜102dも、セルボード102aと同じ、または同様の構成要素および構造を備えることができる。
セルボード102aは、複数のCPU104a〜104nを備える。
ここで、nは2、4、8、または16等の数である。
CPU104a〜104nは、オンボードキャッシュ106a〜nをそれぞれ備える。
セルボード102aは、システムバス108、メインメモリ112a、およびメモリコントローラ110aも備える。
CPU104a〜nは、システムバス108に直接結合され、メインメモリ112aは、メモリコントローラ110aを経由してシステムバス108に結合される。
CPU104a〜104nは、当業者に既知のように、システムバス108を介して互いに通信することができ、システムバス108を介しメモリコントローラ110aを経由してメモリ112aにアクセスすることができる。
しかし、その他のセルボード102b〜102dも、セルボード102aと同じ、または同様の構成要素および構造を備えることができる。
セルボード102aは、複数のCPU104a〜104nを備える。
ここで、nは2、4、8、または16等の数である。
CPU104a〜104nは、オンボードキャッシュ106a〜nをそれぞれ備える。
セルボード102aは、システムバス108、メインメモリ112a、およびメモリコントローラ110aも備える。
CPU104a〜nは、システムバス108に直接結合され、メインメモリ112aは、メモリコントローラ110aを経由してシステムバス108に結合される。
CPU104a〜104nは、当業者に既知のように、システムバス108を介して互いに通信することができ、システムバス108を介しメモリコントローラ110aを経由してメモリ112aにアクセスすることができる。
セルボード102a〜102dは、対応するメモリコントローラ110a〜110dに結合された各自のローカルシステムメモリ112a〜112dを備えるが、セルボード102a〜102d内のCPUは、単一の結合された物理アドレス空間を使用してメモリ112a〜112dをアドレス指定することができる。
ファブリック116は、セルボード102a〜102d間で通信を行う機構を提供してこのような共有メモリアクセスおよび他のセルボード間通信を行う。
ファブリック116は、セルボード102a〜102d間で通信を行う機構を提供してこのような共有メモリアクセスおよび他のセルボード間通信を行う。
ファブリック116は、たとえば、1つまたは複数のクロスバースイッチを備えることができる。
クロスバースイッチは、装置を接続することができる複数の入力/出力ポートを有する装置である。
クロスバースイッチの一対の入力/出力ポートに接続された一対の装置は、その一対の入力/出力ポートを接続するスイッチ内に形成されるパスを介して互いに通信することができる。
装置間に形成されるパスは、或る期間固定であることもでき、所望の場合に変更することもできる。
複数のパスを、クロスバースイッチ内で同時にアクティブ化することができ、それによって、複数の装置対がクロスバースイッチを経由して同時に、互いを妨げることなく相互に通信することができる。
クロスバースイッチは、装置を接続することができる複数の入力/出力ポートを有する装置である。
クロスバースイッチの一対の入力/出力ポートに接続された一対の装置は、その一対の入力/出力ポートを接続するスイッチ内に形成されるパスを介して互いに通信することができる。
装置間に形成されるパスは、或る期間固定であることもでき、所望の場合に変更することもできる。
複数のパスを、クロスバースイッチ内で同時にアクティブ化することができ、それによって、複数の装置対がクロスバースイッチを経由して同時に、互いを妨げることなく相互に通信することができる。
ファブリック116は、クロスバースイッチ以外の構成要素を使用して実施することも可能である。
たとえば、ファブリック116は、1つまたは複数のバスを使用して実施することもできる。
たとえば、ファブリック116は、1つまたは複数のバスを使用して実施することもできる。
セルボード102aはファブリックエージェントチップ114aも備え、ファブリックエージェントチップ114aは、ファブリック116に結合され、セルボード102aとシステム100内のその他のセルボード102b〜102dの間のインタフェースとして機能する。
その他のセルボード102b〜102dも同様に、各自のファブリックエージェントチップ114b〜114dをそれぞれ備える。
ファブリックエージェントチップ114a〜114dは、図1では別個の構成要素として示されるが、システムファブリック116の一部であると考えることもできる。
その他のセルボード102b〜102dも同様に、各自のファブリックエージェントチップ114b〜114dをそれぞれ備える。
ファブリックエージェントチップ114a〜114dは、図1では別個の構成要素として示されるが、システムファブリック116の一部であると考えることもできる。
上述したように、セルボード102a〜102d内のローカルメモリ112a〜112dには、単一の物理アドレス空間を使用してアクセスすることができる。
図1に示すシステム100等のSMPでは、これは、ファブリックエージェントチップ114a〜114dによって可能になる。
たとえば、CPU104aが、共有物理アドレス空間内のメモリロケーション(またはメモリロケーション範囲)をアドレス指定するメモリアクセス要求をメモリコントローラ110aに発した場合を考える。
メモリコントローラ110aは、メモリアクセス要求をローカルメモリ112aから満たすことができない場合、要求をファブリックエージェントチップ114aに転送する。
ファブリックエージェントチップ114aは、要求内の物理アドレスを、要求されたメモリのロケーションを指定する新しいメモリアドレス(「ファブリックアドレス」と呼ぶ)に変換し、新しいファブリックアドレスを使用して新しいメモリアクセス要求をファブリック116に送る。
ファブリック116は、メモリアクセス要求を、適切なセルボード内のファブリックエージェントチップに転送する。
図1に示すシステム100等のSMPでは、これは、ファブリックエージェントチップ114a〜114dによって可能になる。
たとえば、CPU104aが、共有物理アドレス空間内のメモリロケーション(またはメモリロケーション範囲)をアドレス指定するメモリアクセス要求をメモリコントローラ110aに発した場合を考える。
メモリコントローラ110aは、メモリアクセス要求をローカルメモリ112aから満たすことができない場合、要求をファブリックエージェントチップ114aに転送する。
ファブリックエージェントチップ114aは、要求内の物理アドレスを、要求されたメモリのロケーションを指定する新しいメモリアドレス(「ファブリックアドレス」と呼ぶ)に変換し、新しいファブリックアドレスを使用して新しいメモリアクセス要求をファブリック116に送る。
ファブリック116は、メモリアクセス要求を、適切なセルボード内のファブリックエージェントチップに転送する。
要求されたメモリアクセスは、可能であれば、受け取ったセルボードのローカルメモリを使用して行われ、結果が、ファブリック116を介してファブリックエージェントチップ114aに送り返され、そしてメモリコントローラ110aを経由してCPU104aに送り返される。
これによって、セルボード102a〜102d内のCPUは、セルボード102a〜102d内のファブリックエージェントチップ114a〜114dを使用して、ファブリック116を介してその他のセルボード102a〜102dのいずれにもアクセスすることができる。
このようなシステムの一目標は、CPU104a〜104dが、メモリアクセス要求に対する応答を、このような応答がオンボードメモリから履行されたものであるか、それともオフボードメモリから履行されたものであるかに関わらず、同様に送受することができるという意味で、メモリアクセスの実施をCPU104a〜104dに対してトランスペアレントにすることである。
これによって、セルボード102a〜102d内のCPUは、セルボード102a〜102d内のファブリックエージェントチップ114a〜114dを使用して、ファブリック116を介してその他のセルボード102a〜102dのいずれにもアクセスすることができる。
このようなシステムの一目標は、CPU104a〜104dが、メモリアクセス要求に対する応答を、このような応答がオンボードメモリから履行されたものであるか、それともオフボードメモリから履行されたものであるかに関わらず、同様に送受することができるという意味で、メモリアクセスの実施をCPU104a〜104dに対してトランスペアレントにすることである。
本発明の一実施形態では、パーティション化可能コンピュータシステムにおいて単一チップ上の複数の物理資源を複数のパーティションに割り振る技法が提供される。
この実施形態では、資源の1つが、物理アドレスを含むトランザクションを生成するときに、パーティション識別値(資源が割り振られるパーティションを識別する)が物理アドレスに記憶され、パーティション識別アドレスが作成される。
パーティション識別アドレスを含むトランザクションは、ファブリック116を介して送られ、それによって適切な宛先にルーティングされる。
この実施形態では、資源の1つが、物理アドレスを含むトランザクションを生成するときに、パーティション識別値(資源が割り振られるパーティションを識別する)が物理アドレスに記憶され、パーティション識別アドレスが作成される。
パーティション識別アドレスを含むトランザクションは、ファブリック116を介して送られ、それによって適切な宛先にルーティングされる。
この実施形態について、単一のマイクロプロセッサ内の複数のマイクロプロセッサコアが複数のパーティションに割り振られる例を使って説明する。
たとえば、図2を参照して、本発明の一実施形態によるCPU104aの機能ブロック図を示す。
図2に示す実施形態では、CPU104aはマルチコアプロセッサである。
具体的には、CPU104aは、単一チップ上に複数のプロセッサコア204a〜204nを備える。
ここで、nは2、4、8、または16等の任意の数であることができる。
コア204a〜204nは、たとえば、従来のマルチコアプロセッサに見られるような従来のプロセッサコアであることができる。
図2に示す実施形態では、コア204a〜204nはすべて、単一のキャッシュ208を共有する。
しかし、コア204a〜204nが単一のキャッシュを共有する必要はない。
正確に言えば、たとえば、各コアは各自のキャッシュを有してもよく、またはコア群が異なるキャッシュを共有してもよい。
たとえば、図2を参照して、本発明の一実施形態によるCPU104aの機能ブロック図を示す。
図2に示す実施形態では、CPU104aはマルチコアプロセッサである。
具体的には、CPU104aは、単一チップ上に複数のプロセッサコア204a〜204nを備える。
ここで、nは2、4、8、または16等の任意の数であることができる。
コア204a〜204nは、たとえば、従来のマルチコアプロセッサに見られるような従来のプロセッサコアであることができる。
図2に示す実施形態では、コア204a〜204nはすべて、単一のキャッシュ208を共有する。
しかし、コア204a〜204nが単一のキャッシュを共有する必要はない。
正確に言えば、たとえば、各コアは各自のキャッシュを有してもよく、またはコア群が異なるキャッシュを共有してもよい。
従来のパーティション化可能コンピュータシステムでは、マルチコアプロセッサ内のすべてのコアを単一のパーティションに割り振ることが求められる。
さらに、仮にCPU104aが従来のマルチコアプロセッサであった場合、コア204a〜204nはキャッシュ208と直接通信する。
たとえば、コア204aは、書き込み先のメモリアドレスのアドレスを含むメモリ書き込み要求をキャッシュ208に直接送り、キャッシュ208は、可能であれば要求をローカルに満たし、可能でない場合にはメインメモリへのオフボード書き込みを行うことによって要求を満たす。
さらに、仮にCPU104aが従来のマルチコアプロセッサであった場合、コア204a〜204nはキャッシュ208と直接通信する。
たとえば、コア204aは、書き込み先のメモリアドレスのアドレスを含むメモリ書き込み要求をキャッシュ208に直接送り、キャッシュ208は、可能であれば要求をローカルに満たし、可能でない場合にはメインメモリへのオフボード書き込みを行うことによって要求を満たす。
図2に示すマルチコアプロセッサ104aは、これとは対照的に、コア204a〜204nを複数のパーティションに割り振れるようにする。
たとえば、図5を参照して、本発明の一実施形態によるパーティション化可能コンピュータシステム100におけるプロセッサコア506a〜506hとパーティション504a〜504dの間のマッピング502を示す。
図5におけるコア506a〜506hは、n=8の場合の図2におけるコア204a〜204nを表す。
たとえば、n=8の場合、コア506aはコア204aを表し、コア506hはコア204nを表す。
たとえば、図5を参照して、本発明の一実施形態によるパーティション化可能コンピュータシステム100におけるプロセッサコア506a〜506hとパーティション504a〜504dの間のマッピング502を示す。
図5におけるコア506a〜506hは、n=8の場合の図2におけるコア204a〜204nを表す。
たとえば、n=8の場合、コア506aはコア204aを表し、コア506hはコア204nを表す。
各パーティション504a〜504dはそれ自体、コンピュータシステム100の物理的な構成要素ではないことに留意する。
正確に言えば、各パーティション504a〜504dは、それに割り振られる資源(たとえば、プロセッサコア)によって定義される論理構造である。
特定のパーティションに割り振られる資源は、時間の経過に伴って可変である。
正確に言えば、各パーティション504a〜504dは、それに割り振られる資源(たとえば、プロセッサコア)によって定義される論理構造である。
特定のパーティションに割り振られる資源は、時間の経過に伴って可変である。
図5に示す例では、コア506bはパーティション504aに割り振られ(マッピング502bで示す)、コア506aおよび506dはパーティション504bに割り振られ(マッピング502aおよび502dのそれぞれで示す)、コア506c、506e、および506fはパーティション504cに割り振られ(マッピング502c、502e、および502fのそれぞれで示す)、コア506gおよび506hはパーティション504dに割り振られる(マッピング502gおよび502hのそれぞれで示す)。
図5に示す特定のマッピング502は、単に例を目的として示され、本発明の限定として解釈されない。
任意の数のパーティションが存在することができ、コアは任意の構成でパーティションに割り振ることができる。
任意の数のパーティションが存在することができ、コアは任意の構成でパーティションに割り振ることができる。
コア204a〜204nを複数のパーティションに割り振れるようにするために、CPU104aは、複数のコア204a〜204nにそれぞれ関連付けられた複数のパーティションIDレジスタ210a〜210nを備える。
たとえば、パーティションIDレジスタ210aにはコア206aが関連付けられ、マッピング502a(図5)を表す値が記憶される。
同様に、パーティションIDレジスタ210nにはコア204nが関連付けられ、マッピング502hを表す値が記憶される。
各パーティションIDレジスタ210a〜210nは、コンピュータシステム100内のパーティションの数を表すのに少なくとも十分なビットを含む。
具体的には、Pがコンピュータシステム100内のパーティションの数である場合、各パーティションIDレジスタ210a〜210nは少なくともlog2Pビットを含む。
たとえば、4つのパーティションがある(図5に示す例のように)場合、各パーティションIDレジスタ210a〜210nは少なくとも2(log24)ビットを含む。
たとえば、パーティションIDレジスタ210aにはコア206aが関連付けられ、マッピング502a(図5)を表す値が記憶される。
同様に、パーティションIDレジスタ210nにはコア204nが関連付けられ、マッピング502hを表す値が記憶される。
各パーティションIDレジスタ210a〜210nは、コンピュータシステム100内のパーティションの数を表すのに少なくとも十分なビットを含む。
具体的には、Pがコンピュータシステム100内のパーティションの数である場合、各パーティションIDレジスタ210a〜210nは少なくともlog2Pビットを含む。
たとえば、4つのパーティションがある(図5に示す例のように)場合、各パーティションIDレジスタ210a〜210nは少なくとも2(log24)ビットを含む。
各パーティションIDレジスタ210a〜210nは、コア204a〜204nの対応する1つが割り振られるパーティションを一意に識別する一意のパーティションID値を記憶する。
たとえば、PIRiを添え字iのパーティションIDレジスタとし、Ciを添え字iの対応するプロセッサコアとする。
ここで、iの範囲は0〜n−1である。
コアCiがパーティションjに割り振られる場合、パーティションIDレジスタRIPiのパーティションID値に値jを記憶することができる。
このようにして、一意の値が、システム100内の各パーティションを識別する。
パーティションIDレジスタ210a〜210nに記憶される値は、たとえば、コンピュータシステム100において実行されるコンフィギュレーションソフトウェアによって設定することができる。
たとえば、PIRiを添え字iのパーティションIDレジスタとし、Ciを添え字iの対応するプロセッサコアとする。
ここで、iの範囲は0〜n−1である。
コアCiがパーティションjに割り振られる場合、パーティションIDレジスタRIPiのパーティションID値に値jを記憶することができる。
このようにして、一意の値が、システム100内の各パーティションを識別する。
パーティションIDレジスタ210a〜210nに記憶される値は、たとえば、コンピュータシステム100において実行されるコンフィギュレーションソフトウェアによって設定することができる。
たとえば、再び図5に示す例を参照すると、値1(2進数01)をパーティションIDレジスタ210aに記憶することができ、それにより、コア204a(図5ではコア506aで表される)がパーティション1(504b)に割り振られることを示す。
同様に、値3(2進数11)をパーティションIDレジスタ210nに記憶することができ、それにより、コア204n(図5ではコア506hで表す)がパーティション3(504d)に割り振られることを示す。
同様に、値3(2進数11)をパーティションIDレジスタ210nに記憶することができ、それにより、コア204n(図5ではコア506hで表す)がパーティション3(504d)に割り振られることを示す。
CPU104aは、コンピュータシステム100上で実行中のオペレーティングシステムが、パーティションIDレジスタ210a〜210nに記憶されるパーティションID値を変更することができないように構成することができる。
パーティションID値のこの固定性は、たとえば、様々なハードウェアセキュリティメカニズムの任意のものにより、または単にコンフィグレーションソフトウェアとオペレーティングシステムの間での取り決めにより行うことができる。
パーティションID値のこの固定性は、たとえば、様々なハードウェアセキュリティメカニズムの任意のものにより、または単にコンフィグレーションソフトウェアとオペレーティングシステムの間での取り決めにより行うことができる。
コア204a〜204nの、複数のパーティション504a〜504dへの割り振りを実施するには、コンピュータシステム100のメインメモリ112a〜112dが、各パーティションにメインメモリ112a〜112dの一部が割り振られるようにパーティション504a〜504dに割り振られる。
メインメモリ112a〜112dは、任意のサイズのブロックでパーティション504a〜504dに割り振ることができる。
たとえば、メインメモリ112a〜112dは、アドレス単位、ページ単位、またはコントローラ単位でパーティション504a〜504dに割り振ることができる。
メインメモリ112a〜112dは、任意のサイズのブロックでパーティション504a〜504dに割り振ることができる。
たとえば、メインメモリ112a〜112dは、アドレス単位、ページ単位、またはコントローラ単位でパーティション504a〜504dに割り振ることができる。
本発明の一実施形態では、メモリアクセス要求を送るコアは、要求されたメモリアドレスが割り振られたパーティションを指定する必要はない。
正確に言えば、コアは、それ自体が割り振られたパーティションに関連付けられたアドレス空間(「物理アドレス空間」と呼ぶ)内のメモリアドレス(「物理アドレス」と呼ぶ)を使用して、要求されたメモリアドレスを指定する必要があるだけである。
通常、メインメモリ112a〜112dは、複数の物理アドレス空間に論理的に分割される。
各物理アドレス空間は通常、ゼロをベースとする。
これは、各物理アドレス空間内のアドレスが通常、アドレス0から始まって付番されることを意味する。
正確に言えば、コアは、それ自体が割り振られたパーティションに関連付けられたアドレス空間(「物理アドレス空間」と呼ぶ)内のメモリアドレス(「物理アドレス」と呼ぶ)を使用して、要求されたメモリアドレスを指定する必要があるだけである。
通常、メインメモリ112a〜112dは、複数の物理アドレス空間に論理的に分割される。
各物理アドレス空間は通常、ゼロをベースとする。
これは、各物理アドレス空間内のアドレスが通常、アドレス0から始まって付番されることを意味する。
この結果を実現するために、或るパーティション内の特定のアドレスを、他のパーティション内の同じアドレスと区別するメカニズムが提供される。
具体的には、CPU104aは、コア204a〜204nとパーティションIDレジスタ210a〜210nの間にそれぞれ結合されたビット置換回路212a〜212nを備える。
具体的には、CPU104aは、コア204a〜204nとパーティションIDレジスタ210a〜210nの間にそれぞれ結合されたビット置換回路212a〜212nを備える。
ビット置換回路212a〜212nが行う機能を理解するために、コア204aが書き込みコマンド230aをライン214aでビット置換回路212aに送る場合を考える。
書き込みコマンド230aは、書き込みを行うメモリロケーションの物理アドレス、およびそのロケーションに書き込む値を含む。
物理アドレスは、図2において「a[54:0]」と示され、アドレスのビット0〜54が有用な(アドレスを識別する)情報を含むことを示す。
書き込みコマンド230aは、書き込みを行うメモリロケーションの物理アドレス、およびそのロケーションに書き込む値を含む。
物理アドレスは、図2において「a[54:0]」と示され、アドレスのビット0〜54が有用な(アドレスを識別する)情報を含むことを示す。
「システム空間」という語は、本明細書では、メインメモリ112a〜112d全体の中の各メモリロケーションに一意のアドレスを含むアドレス空間を指す。
例を目的として、システムアドレス空間が4GB(0x100000000)であり、4つの等サイズ(1GB)のパーティションがあると想定する。
このような場合での各パーティションの物理メモリ空間は、0〜1GB(0x00000000〜0x40000000)というアドレス範囲を有する。
第1のパーティションは、システムアドレス空間の最初の1ギガバイトに割り振り(マッピングし)、第2のパーティションは、システムアドレス空間の次の1ギガバイトに割り振り、以下同様であることができる。
特定のパーティションに割り振られたコアが、物理メモリアドレスをメモリアクセス要求の一部として生成した場合、物理メモリアドレスをシステムメモリアドレスに変換することが必要である。
本発明の一実施形態によりこの変換を行う技法の例について、これより説明する。
例を目的として、システムアドレス空間が4GB(0x100000000)であり、4つの等サイズ(1GB)のパーティションがあると想定する。
このような場合での各パーティションの物理メモリ空間は、0〜1GB(0x00000000〜0x40000000)というアドレス範囲を有する。
第1のパーティションは、システムアドレス空間の最初の1ギガバイトに割り振り(マッピングし)、第2のパーティションは、システムアドレス空間の次の1ギガバイトに割り振り、以下同様であることができる。
特定のパーティションに割り振られたコアが、物理メモリアドレスをメモリアクセス要求の一部として生成した場合、物理メモリアドレスをシステムメモリアドレスに変換することが必要である。
本発明の一実施形態によりこの変換を行う技法の例について、これより説明する。
例を目的として、ライン214aで送られる書き込みコマンド230a内の物理アドレスは64ビット値であるが、単一のパーティションに割り振られる物理アドレス空間をすべてアドレス指定するために必要なのは下位55ビットだけであると想定する。
このような場合、9個の上位アドレスビットは、物理アドレスを指定する際に必要とされない。
マルチパーティションコンピュータシステムのスタートアップ時に、各パーティションで実行されているオペレーティングシステムに、割り振られた物理アドレス空間のサイズが通知される。
その結果、正常に動作するオペレーティングシステムは、割り振られたメモリパーティションのアドレス指定に、必要(たとえば、55)以上のビットを使用するアドレスを生成しない。
しかし、より詳細に後述するように、特定のパーティション内のオペレーティングシステムが正常に動作せず、割り振られたアドレス範囲外のアドレスを生成する場合であっても、本明細書において開示する技法は、このようなオペレーティングシステムがこのような禁止アドレスにアクセスしないようにし、それによってパーティション間セキュリティを確保する。
このような場合、9個の上位アドレスビットは、物理アドレスを指定する際に必要とされない。
マルチパーティションコンピュータシステムのスタートアップ時に、各パーティションで実行されているオペレーティングシステムに、割り振られた物理アドレス空間のサイズが通知される。
その結果、正常に動作するオペレーティングシステムは、割り振られたメモリパーティションのアドレス指定に、必要(たとえば、55)以上のビットを使用するアドレスを生成しない。
しかし、より詳細に後述するように、特定のパーティション内のオペレーティングシステムが正常に動作せず、割り振られたアドレス範囲外のアドレスを生成する場合であっても、本明細書において開示する技法は、このようなオペレーティングシステムがこのような禁止アドレスにアクセスしないようにし、それによってパーティション間セキュリティを確保する。
図3を参照して、書き込みコマンド230aがコア204aによりライン214aで送られる場合に、本発明の一実施形態によるビット置換回路212aによって行われる方法300のフローチャートを示す。
ビット置換回路212aは、書き込みコマンド230a(または、読み取りコマンド等、他のメモリアクセス要求)を受け取る(ステップ302)。
ビット置換回路212aは、書き込みコマンド230aを受け取ったことに応答して、パーティションID値をライン216a上のパーティションIDレジスタ210aから読み取る(ステップ304)。
ビット置換回路212aは、パーティションID値を物理アドレスに書き込み、それにより、元の物理アドレスおよびパーティションID値の両方を含むパーティション識別アドレスを生成する(ステップ306)。
ビット置換回路212aは、書き込みコマンド230a(または、読み取りコマンド等、他のメモリアクセス要求)を受け取る(ステップ302)。
ビット置換回路212aは、書き込みコマンド230aを受け取ったことに応答して、パーティションID値をライン216a上のパーティションIDレジスタ210aから読み取る(ステップ304)。
ビット置換回路212aは、パーティションID値を物理アドレスに書き込み、それにより、元の物理アドレスおよびパーティションID値の両方を含むパーティション識別アドレスを生成する(ステップ306)。
図12Aを参照して、本発明の一実施形態によりステップ306において生成されるパーティション識別アドレス1200の例を示す。
図12Aに示すパーティション識別アドレス例1200は、64ビット幅である。
パーティション識別アドレス1200の部分1202(ビット0〜52)が、元の書き込みコマンド230aに含まれていた物理アドレスのビット0〜52を含む。
本発明の一実施形態では、ビット置換回路212aは、書き込みコマンド230aから得たパーティションID値を、パーティション識別アドレス1200の部分1204(ビット53〜54)に書き込み(ステップ306)、それにより、部分1204に記憶されていた元の値を上書きする。
したがって、部分1202および1204の両方を含む部分1208により、元の書き込みコマンド230aによって示されるシステムメモリアドレスが明確に識別される。
パーティション識別アドレス1200の部分1206(ビット55〜63)は使用されない。
したがって、パーティションIDの部分1204および物理アドレス部分1202の組み合わせが、システム100内の一意のアドレスの指定に使用されるため、部分1208はアドレス1200の「使用部分」を表す。
図12Aに示すパーティション識別アドレス例1200は、64ビット幅である。
パーティション識別アドレス1200の部分1202(ビット0〜52)が、元の書き込みコマンド230aに含まれていた物理アドレスのビット0〜52を含む。
本発明の一実施形態では、ビット置換回路212aは、書き込みコマンド230aから得たパーティションID値を、パーティション識別アドレス1200の部分1204(ビット53〜54)に書き込み(ステップ306)、それにより、部分1204に記憶されていた元の値を上書きする。
したがって、部分1202および1204の両方を含む部分1208により、元の書き込みコマンド230aによって示されるシステムメモリアドレスが明確に識別される。
パーティション識別アドレス1200の部分1206(ビット55〜63)は使用されない。
したがって、パーティションIDの部分1204および物理アドレス部分1202の組み合わせが、システム100内の一意のアドレスの指定に使用されるため、部分1208はアドレス1200の「使用部分」を表す。
正常に動作するオペレーティングシステムは、割り振られているアドレス空間外のアドレスを有するメモリロケーションにアクセスを試みることはなく、したがって、部分1204または部分1206内のビットのいずれも設定しないことを想起する。
しかし、オペレーティングシステムが部分1204に任意のビットを設定する場合、このようなビットは、ステップ306においてビット置換回路212aによって上書きされる。
ビット置換回路212aは、部分1206をゼロまたは他の或る値で上書きするようにさらに構成することができる。
それにより、ビット置換回路212aは、オペレーティングシステムがそのパーティション外のアドレスにアクセスしないようにすることができ、それにより、パーティション間セキュリティを確保する。
しかし、オペレーティングシステムが部分1204に任意のビットを設定する場合、このようなビットは、ステップ306においてビット置換回路212aによって上書きされる。
ビット置換回路212aは、部分1206をゼロまたは他の或る値で上書きするようにさらに構成することができる。
それにより、ビット置換回路212aは、オペレーティングシステムがそのパーティション外のアドレスにアクセスしないようにすることができ、それにより、パーティション間セキュリティを確保する。
図12Aにおけるパーティション識別アドレス1200の特定のレイアウトは、単に例を目的として示されるものであり、本発明の限定として解釈されない。
正確に言えば、任意のサイズおよび任意のレイアウトを有するパーティション識別アドレスを、本発明の実施形態と併用することが可能である。
たとえば、パーティション識別アドレスのレイアウトは、パーティションごとに異なってもよい。
たとえば、或るパーティションには、別のパーティションの2倍のアドレス空間を割り振ることができ、この場合、大きい方のパーティション内のアドレスは、小さい方のパーティション内のアドレスよりも、1ビット少ないパーティションID(部分1204)を含み、1ビット多い物理アドレス(部分1202)を含むことになる。
したがって、ビット置換回路212a〜212nは、可変サイズのパーティションIDを、コア204a〜204nが生成するアドレスの中に挿入するように個々にプログラムすることができる。
正確に言えば、任意のサイズおよび任意のレイアウトを有するパーティション識別アドレスを、本発明の実施形態と併用することが可能である。
たとえば、パーティション識別アドレスのレイアウトは、パーティションごとに異なってもよい。
たとえば、或るパーティションには、別のパーティションの2倍のアドレス空間を割り振ることができ、この場合、大きい方のパーティション内のアドレスは、小さい方のパーティション内のアドレスよりも、1ビット少ないパーティションID(部分1204)を含み、1ビット多い物理アドレス(部分1202)を含むことになる。
したがって、ビット置換回路212a〜212nは、可変サイズのパーティションIDを、コア204a〜204nが生成するアドレスの中に挿入するように個々にプログラムすることができる。
ビット置換回路212aは、ステップ306において生成されたパーティション識別アドレスを含む、第1の変更書き込みコマンド232a(または他のメモリアクセス要求)を生成する(ステップ308)。
ビット置換回路212aは、第1の変更書き込みコマンド232a(または他のメモリアクセス要求)をライン218aでキャッシュ208に送る(ステップ310)。
ビット置換回路212aは、第1の変更書き込みコマンド232a(または他のメモリアクセス要求)をライン218aでキャッシュ208に送る(ステップ310)。
上述し、図2に関連して上に示したコア、パーティションIDレジスタ、およびビット置換回路の組み合わせを本明細書では「拡張コア」と呼ぶ。
たとえば、CPU104aは拡張コア206a〜206nを備える。
拡張コア206aは、コア204a、パーティションIDレジスタ210a、およびビット置換回路212aを備え、拡張コア206nは、コア204n、パーティションIDレジスタ210n、およびビット置換回路212nを備える。
コア204a、ビット置換回路212a、およびパーティションIDレジスタ210aを別個の構成要素として図2に示すが、ビット置換回路212aおよび/またはパーティションIDレジスタ210aが行う機能をコア204aに統合し、それによってコア204aがキャッシュ208と直接通信してもよい。
たとえば、CPU104aは拡張コア206a〜206nを備える。
拡張コア206aは、コア204a、パーティションIDレジスタ210a、およびビット置換回路212aを備え、拡張コア206nは、コア204n、パーティションIDレジスタ210n、およびビット置換回路212nを備える。
コア204a、ビット置換回路212a、およびパーティションIDレジスタ210aを別個の構成要素として図2に示すが、ビット置換回路212aおよび/またはパーティションIDレジスタ210aが行う機能をコア204aに統合し、それによってコア204aがキャッシュ208と直接通信してもよい。
図4Aを参照して、本発明の一実施形態による第1の変更書き込みコマンド232aを受け取ったことに応答して、キャッシュ208によって行われる方法400のフローチャートを示す。
キャッシュ208は、ビット置換回路212aから第1の変更書き込みコマンド232aを受け取る(ステップ402)。
キャッシュ208は、書き込み要求をローカルに満たすことができるか否か、すなわち、第1の変更書き込みコマンド232aに含まれるパーティション識別アドレスに基づいて、キャッシュライン234にキャッシュヒットがあるか否かを判断する(ステップ404)。
換言すれば、キャッシュ208は、第1の変更書き込みコマンド232aに含まれるパーティション識別アドレスによってアドレス指定されるメモリロケーションの値が、キャッシュライン234に記憶されているか否かを判断する。
キャッシュ208は、第1の変更書き込みコマンド232a内にインデックスおよびタグとして含まれるパーティション識別アドレスを使用し、次いで様々な既知の技法のいずれかを使用して、そのインデックスおよびタグに基づいてキャッシュヒットがあるか否かを判断して、ステップ404を行うことができる。
キャッシュ208は、ビット置換回路212aから第1の変更書き込みコマンド232aを受け取る(ステップ402)。
キャッシュ208は、書き込み要求をローカルに満たすことができるか否か、すなわち、第1の変更書き込みコマンド232aに含まれるパーティション識別アドレスに基づいて、キャッシュライン234にキャッシュヒットがあるか否かを判断する(ステップ404)。
換言すれば、キャッシュ208は、第1の変更書き込みコマンド232aに含まれるパーティション識別アドレスによってアドレス指定されるメモリロケーションの値が、キャッシュライン234に記憶されているか否かを判断する。
キャッシュ208は、第1の変更書き込みコマンド232a内にインデックスおよびタグとして含まれるパーティション識別アドレスを使用し、次いで様々な既知の技法のいずれかを使用して、そのインデックスおよびタグに基づいてキャッシュヒットがあるか否かを判断して、ステップ404を行うことができる。
パーティションID値が記憶されるアドレスビットは、キャッシュ208のインデックスフィールドまたはタグフィールドのいずれかを占有することができることに留意する。
パーティションID値がキャッシュ208のインデックスフィールドに記憶される場合、パーティション504a〜504dには、キャッシュ208の固定で別個の(重複しない)部分が割り振られる。
しかし、パーティションID値がキャッシュ208のタグフィールドに記憶される場合、キャッシュ208の全体がパーティション504a〜504dによって共有され、任意のパーティションが使用する特定のキャッシュロケーションは動的であり、任意の特定の時点でのコア204a〜204nの作業負荷に依存する。
パーティションID値がキャッシュ208のインデックスフィールドに記憶される場合、パーティション504a〜504dには、キャッシュ208の固定で別個の(重複しない)部分が割り振られる。
しかし、パーティションID値がキャッシュ208のタグフィールドに記憶される場合、キャッシュ208の全体がパーティション504a〜504dによって共有され、任意のパーティションが使用する特定のキャッシュロケーションは動的であり、任意の特定の時点でのコア204a〜204nの作業負荷に依存する。
キャッシュヒットがある場合、キャッシュ208は、書き込みをローカルに(すなわち、キャッシュライン234内で)行い(ステップ406)、方法400は終了する。
キャッシュ208は、承認をコア204aにライン224aで送ることができる。
コア204aが読み取りコマンドをキャッシュ208に送る場合、キャッシュ208は、読み取り値をコア204aにライン224aで送ることができる。
キャッシュ208は、承認をコア204aにライン224aで送ることができる。
コア204aが読み取りコマンドをキャッシュ208に送る場合、キャッシュ208は、読み取り値をコア204aにライン224aで送ることができる。
キャッシュミスがある場合、キャッシュ208は、第2の変更書き込みコマンド236をアドレスマッパ222に送る(ステップ408)。
本発明の一実施形態では、第2の変更書き込みコマンド236は、(1)発信元端末ID(たとえば、CPU104aにサービス提供するメモリコントローラ110aの端末ID)、図2では「S」とラベルされる、(2)トランザクションID(一意のトランザクション識別子)、図2では「I」とラベルされる、(3)要求種別(たとえば、メモリ読み取りまたはメモリ書き込み)、図2では「R」とラベルされる、および(4)第1の変更書き込みコマンド232aから抽出されたパーティション識別アドレス1200、図2では「p1,a[n:0]」とラベルされる、を含む。
本発明の一実施形態では、第2の変更書き込みコマンド236は、(1)発信元端末ID(たとえば、CPU104aにサービス提供するメモリコントローラ110aの端末ID)、図2では「S」とラベルされる、(2)トランザクションID(一意のトランザクション識別子)、図2では「I」とラベルされる、(3)要求種別(たとえば、メモリ読み取りまたはメモリ書き込み)、図2では「R」とラベルされる、および(4)第1の変更書き込みコマンド232aから抽出されたパーティション識別アドレス1200、図2では「p1,a[n:0]」とラベルされる、を含む。
特定のトランザクションについて、例を目的としてコア206aに関連して上述したが、その他のコア206b〜206nも同様にしてトランザクションを行うことができる。
たとえば、コア204nは、書き込みコマンド230nをライン214n上に生成し、これに応答して、ビット置換回路212nはライン216n上でパーティションIDレジスタ210nの値を読み取ることができる。
ビット置換回路212nは、第1の変更書き込みコマンド232nをライン218nで送り、第1の変更書き込みコマンド232nは上述したようにキャッシュ208によって処理することができる。
キャッシュ208は、ライン224nを介してコア204nと直接通信することができる。
たとえば、コア204nは、書き込みコマンド230nをライン214n上に生成し、これに応答して、ビット置換回路212nはライン216n上でパーティションIDレジスタ210nの値を読み取ることができる。
ビット置換回路212nは、第1の変更書き込みコマンド232nをライン218nで送り、第1の変更書き込みコマンド232nは上述したようにキャッシュ208によって処理することができる。
キャッシュ208は、ライン224nを介してコア204nと直接通信することができる。
本発明の一実施形態では、第2の変更書き込みコマンド236に含まれるパーティション識別アドレスは、システムアドレスに変換される。
図4Bを参照して、本発明の一実施形態において行われる、このような変換を行う方法420のフローチャートを示す。
方法420は、たとえば、方法400のステップ408(図4A)の後に行うことができる。
図4Bを参照して、本発明の一実施形態において行われる、このような変換を行う方法420のフローチャートを示す。
方法420は、たとえば、方法400のステップ408(図4A)の後に行うことができる。
CPU104aはアドレスマッパ222を備え、アドレスマッパ222は、ライン220を介してキャッシュ208に結合され、したがって、第2の変更書き込みコマンド236を受け取る(ステップ422)。
アドレスマッパ222は、第2の変更書き込みコマンド236に含まれているパーティション識別アドレス1200を、(1)宛先端末ID(たとえば、要求されるメモリアドレスへのアクセスを制御するメモリコントローラの端末ID)、および(2)トランザクション種別にマッピングする(ステップ424)。
トランザクション種別は、要求種別がファブリック116を介したトランザクションに使用されること以外は元の要求種別(たとえば、メモリ読み取りまたはメモリ書き込み)と同様の目的を果たす。
要求種別をトランザクション種別に変換する技法は、当業者に既知である。
アドレスマッパ222は、第2の変更書き込みコマンド236に含まれているパーティション識別アドレス1200を、(1)宛先端末ID(たとえば、要求されるメモリアドレスへのアクセスを制御するメモリコントローラの端末ID)、および(2)トランザクション種別にマッピングする(ステップ424)。
トランザクション種別は、要求種別がファブリック116を介したトランザクションに使用されること以外は元の要求種別(たとえば、メモリ読み取りまたはメモリ書き込み)と同様の目的を果たす。
要求種別をトランザクション種別に変換する技法は、当業者に既知である。
本発明の一実施形態では、システム100内の各CPU(たとえば、CPU104a〜104n)およびシステム100内の各メモリコントローラ110a〜110dは、一意の端末識別子(端末ID)を有する。
このような実施形態では、特定のパーティション内の特定の物理アドレスは、物理アドレス、パーティションのパーティションID、およびその物理アドレスが記憶されているメモリを制御するメモリコントローラの端末IDの組み合わせによって一意にアドレス指定することができる。
ファブリック116を介して送られるアドレスはパーティション識別アドレス(すなわち、物理アドレスおよびパーティションIDの両方を含むアドレス)であるため、ターゲットメモリコントローラは、異なるパーティション内の同じ物理アドレスを区別することが可能なことにさらに留意する。
したがって、図2に示す実施形態では、単一のメモリコントローラが、任意の数のパーティションに割り振られたメモリを制御することができる。
このような実施形態では、特定のパーティション内の特定の物理アドレスは、物理アドレス、パーティションのパーティションID、およびその物理アドレスが記憶されているメモリを制御するメモリコントローラの端末IDの組み合わせによって一意にアドレス指定することができる。
ファブリック116を介して送られるアドレスはパーティション識別アドレス(すなわち、物理アドレスおよびパーティションIDの両方を含むアドレス)であるため、ターゲットメモリコントローラは、異なるパーティション内の同じ物理アドレスを区別することが可能なことにさらに留意する。
したがって、図2に示す実施形態では、単一のメモリコントローラが、任意の数のパーティションに割り振られたメモリを制御することができる。
しかし、この特定の方式は単なる例であり、本発明の限定として解釈されないことを理解されたい。
他のアドレス指定方式を、本明細書において開示する技法と併用することも可能であり、この場合、端末識別子、物理アドレス、システムアドレス、パーティション識別子、または他のデータの異なる組み合わせが、特定のメモリロケーションを一意にアドレス指定するために必要になり得る。
他のアドレス指定方式を、本明細書において開示する技法と併用することも可能であり、この場合、端末識別子、物理アドレス、システムアドレス、パーティション識別子、または他のデータの異なる組み合わせが、特定のメモリロケーションを一意にアドレス指定するために必要になり得る。
アドレスマッパ222は、たとえば、パーティション識別アドレスを宛先端末IDおよびトランザクション種別にマッピングするアドレスマッピング238を保持することができる。
アドレスマッパ222は、マッピング238(これはたとえば、ルックアップテーブルとして実装することができる)を使用して、ステップ424における変換を行うことができる。
アドレスマッピング238は、あらゆるパーティション識別アドレスごとにエントリを含む必要はない。
正確に言えば、アドレスマッピング238は、たとえば、パーティション識別アドレス範囲(それぞれの最上位ビットによって識別される)をメモリのページまたはメモリコントローラにマッピングすることができる。
アドレスマッパ222は、或るパーティションに割り振られたプロセッサコアが、別のパーティション内のメモリにアクセスしようとしても、このような要求をヌルエントリにマッピングし、それによってアドレスマッパ222にマッピングフォルトを発生させることにより、このようなアクセスができないことを保証することができる。
アドレスマッパ222は、マッピング238(これはたとえば、ルックアップテーブルとして実装することができる)を使用して、ステップ424における変換を行うことができる。
アドレスマッピング238は、あらゆるパーティション識別アドレスごとにエントリを含む必要はない。
正確に言えば、アドレスマッピング238は、たとえば、パーティション識別アドレス範囲(それぞれの最上位ビットによって識別される)をメモリのページまたはメモリコントローラにマッピングすることができる。
アドレスマッパ222は、或るパーティションに割り振られたプロセッサコアが、別のパーティション内のメモリにアクセスしようとしても、このような要求をヌルエントリにマッピングし、それによってアドレスマッパ222にマッピングフォルトを発生させることにより、このようなアクセスができないことを保証することができる。
アドレスマッパ222は、第3の変更書き込みコマンド240を生成して、システムファブリック116に送る(ステップ426)。
第3の変更書き込みコマンド240は、(1)第2の変更書き込みコマンド236からの発信元端末ID(S)、トランザクションID(I)、要求種別(R)、およびパーティション識別アドレス(p1,a[n:0])、ならびに(2)ステップ424において識別された宛先端末ID(D)およびトランザクション種別(T)を含む。
システムファブリック116は、当業者に既知の技法を利用してD第3の変更書き込みコマンド240を、指定された宛先端末IDを有するメモリコントローラに送るルータ228を備える。
ルータ228は、たとえば、入力ポートと宛先端末IDの対を出力ポートにマッピングするマッピング244を保持することができる。
第3の変更書き込みコマンド240は、(1)第2の変更書き込みコマンド236からの発信元端末ID(S)、トランザクションID(I)、要求種別(R)、およびパーティション識別アドレス(p1,a[n:0])、ならびに(2)ステップ424において識別された宛先端末ID(D)およびトランザクション種別(T)を含む。
システムファブリック116は、当業者に既知の技法を利用してD第3の変更書き込みコマンド240を、指定された宛先端末IDを有するメモリコントローラに送るルータ228を備える。
ルータ228は、たとえば、入力ポートと宛先端末IDの対を出力ポートにマッピングするマッピング244を保持することができる。
ルータ228は、第3の変更書き込みコマンド240を特定の入力ポートで受け取ると、その入力ポートのアイデンティティおよび第3の変更書き込みコマンド240に含まれる宛先端末IDを使用して、要求されるメモリアドレス(複数可)へのアクセスを制御するメモリコントローラに結合された出力ポートを識別する。
ルータ228は、第3の変更書き込みコマンド240(またはこの変形)を、識別されたメモリコントローラにライン242で送る。
次いで、宛先メモリコントローラは、当業者に既知の技法を用いて第3の変更書き込みコマンド240を満足させる。
ルータ228は、第3の変更書き込みコマンド240(またはこの変形)を、識別されたメモリコントローラにライン242で送る。
次いで、宛先メモリコントローラは、当業者に既知の技法を用いて第3の変更書き込みコマンド240を満足させる。
ルータ228は、インバウンドトランザクションをライン246で受け取ると、当業者に既知の技法を用いてトランザクションをキャッシュにライン226でルーティングすることができる。
次いで、キャッシュ208、および必要であればコア206a〜206nの1つまたは複数は、従来の技法を用いて入力トランザクションを処理することができる。
次いで、キャッシュ208、および必要であればコア206a〜206nの1つまたは複数は、従来の技法を用いて入力トランザクションを処理することができる。
本発明の別の実施形態では、パーティション化可能コンピュータシステムにおいて複数のハードウェア資源を複数のパーティションに割り振る技法が提供される。
この実施形態について、単一のI/Oコントローラ内の複数の資源が複数のパーティションに割り振られる例を使って説明する。
たとえば、図6Aおよび図6Bを参照して、本発明の一実施形態によるI/Oコントローラ602の機能ブロック図を示す。
I/Oコントローラ602は、I/Oポート628aおよび628bを経由してI/Oコントローラ602にそれぞれ結合された2つのI/O装置604aおよび604bにサービス提供する。
技法の例について、第1のI/Oポート628aを第1のパーティションに割り振り、第2のI/Oポート628bを第2のパーティションに割り振り、それによって、第1のI/O装置604aを第1のパーティションに割り振り、第2のI/O装置604bを第2のパーティションに割り振る場合に関してこれより説明する。
この実施形態について、単一のI/Oコントローラ内の複数の資源が複数のパーティションに割り振られる例を使って説明する。
たとえば、図6Aおよび図6Bを参照して、本発明の一実施形態によるI/Oコントローラ602の機能ブロック図を示す。
I/Oコントローラ602は、I/Oポート628aおよび628bを経由してI/Oコントローラ602にそれぞれ結合された2つのI/O装置604aおよび604bにサービス提供する。
技法の例について、第1のI/Oポート628aを第1のパーティションに割り振り、第2のI/Oポート628bを第2のパーティションに割り振り、それによって、第1のI/O装置604aを第1のパーティションに割り振り、第2のI/O装置604bを第2のパーティションに割り振る場合に関してこれより説明する。
たとえば、図7を参照して、本発明の一実施形態によるパーティション化可能コンピュータシステム100においてI/Oポート628aおよび628bとハードウェアパーティション704a〜704dの間のマッピング702の図を示す。
マッピング702は、I/Oポート628aおよび628bとパーティション704aおよび704bの間のそれぞれのマッピング702aおよび702bを含む。
I/Oポート628aおよび628bのいずれにもマッピングされない2つのパーティション704cおよび704dがあることに留意する。
しかし、他のI/Oコントローラ(図示せず)の他のI/Oポートをパーティション704cおよび704dにマッピングすることができる。
図7に示す特定の例では、2つのパーティション704aおよび704bに割り振られた2つのI/Oポート628aおよび628bがあるが、任意の数のI/Oポートおよび任意の数のパーティションを互いに任意の構成でマッピングすることが可能である。
マッピング702は、I/Oポート628aおよび628bとパーティション704aおよび704bの間のそれぞれのマッピング702aおよび702bを含む。
I/Oポート628aおよび628bのいずれにもマッピングされない2つのパーティション704cおよび704dがあることに留意する。
しかし、他のI/Oコントローラ(図示せず)の他のI/Oポートをパーティション704cおよび704dにマッピングすることができる。
図7に示す特定の例では、2つのパーティション704aおよび704bに割り振られた2つのI/Oポート628aおよび628bがあるが、任意の数のI/Oポートおよび任意の数のパーティションを互いに任意の構成でマッピングすることが可能である。
I/Oコントローラ602は、入力トランザクション(ライン610での)が、I/Oコントローラ602によって制御されるI/O装置604aおよび604bの一方にアドレス指定されることを確認する宛先デコーダ608を備える。
入力トランザクションがI/O装置604aおよび604bの一方にアドレス指定されていない場合、宛先デコーダ608は、I/Oコントローラ602内でトランザクションをそれ以上送らない。
入力トランザクションがI/O装置604aおよび604bの一方にアドレス指定されていない場合、宛先デコーダ608は、I/Oコントローラ602内でトランザクションをそれ以上送らない。
図8を参照して、本発明の一実施形態において、入力トランザクション612をライン610上で受け取ったときに、宛先デコーダ608によって行われる方法800のフローチャートを示す。
宛先デコーダ608は、入力トランザクション612を受け取る(ステップ802)。
本発明の一実施形態では、トランザクション612は、(1)発信元端末識別子(たとえば、トランザクション612を発した装置の端末ID)、図6Aでは「S」と表される、(2)アクセスする物理アドレス、図6Aでは「a」と表される、(3)トランザクション種別(たとえば、読み取りまたは書き込み)、図6Aでは「T」と表される、および(4)トランザクションに関連するデータ(たとえば、トランザクション612が書き込みコマンドである場合は書き込むデータ)、図6Aでは「d」と表される、を含む。
宛先デコーダ608は、入力トランザクション612を受け取る(ステップ802)。
本発明の一実施形態では、トランザクション612は、(1)発信元端末識別子(たとえば、トランザクション612を発した装置の端末ID)、図6Aでは「S」と表される、(2)アクセスする物理アドレス、図6Aでは「a」と表される、(3)トランザクション種別(たとえば、読み取りまたは書き込み)、図6Aでは「T」と表される、および(4)トランザクションに関連するデータ(たとえば、トランザクション612が書き込みコマンドである場合は書き込むデータ)、図6Aでは「d」と表される、を含む。
宛先デコーダ608は、トランザクション612内の発信元端末IDを調べて、トランザクション612を送った装置は、I/Oポート628aおよび628bが割り振られたパーティションのいずれかに割り振られているか否かを判断する(ステップ804)。
トランザクション612は、このような装置によって送られたものではなかった場合、装置604aおよび604bへのアクセスを許可されておらず、宛先デコーダ608は、トランザクション612をI/O装置604aおよび604bに送らない(ステップ806)。
トランザクション612は、このような装置によって送られたものではなかった場合、装置604aおよび604bへのアクセスを許可されておらず、宛先デコーダ608は、トランザクション612をI/O装置604aおよび604bに送らない(ステップ806)。
より具体的には、宛先デコーダ608は、有効な発信元端末IDのリスト614を保持することができる。
リスト614は、I/Oポート628aおよび628bが割り振られたパーティション704aおよび704bのいずれかに割り振られたシステム100内の装置の発信元端末IDを含むことができる。
宛先デコーダ608は、トランザクション612内の発信元端末IDがリスト614内にあるか否かを判断し、発信元端末IDがリスト614内にない場合には、トランザクション612が適切なパーティションからのものではないと判断することにより、ステップ804を行うことができる。
リスト614は、I/Oポート628aおよび628bが割り振られたパーティション704aおよび704bのいずれかに割り振られたシステム100内の装置の発信元端末IDを含むことができる。
宛先デコーダ608は、トランザクション612内の発信元端末IDがリスト614内にあるか否かを判断し、発信元端末IDがリスト614内にない場合には、トランザクション612が適切なパーティションからのものではないと判断することにより、ステップ804を行うことができる。
宛先デコーダ608は、ステップ804において、トランザクション612が適切な装置からのものであると判断した場合、発信元端末IDを、トランザクション612を送った装置と同じパーティション内にあるI/Oポート628aおよび628bの一方のパーティションID値にマッピングする(ステップ808)。
宛先デコーダ608は、発信元端末識別子とパーティションIDレジスタ値とのテーブル616または他のマッピングを保持することができる。
したがって、宛先デコーダ608は、トランザクション612内の発信元端末IDを、テーブル616へのインデックスとして使用し、それによって対応するパーティションIDレジスタ値を識別することにより、ステップ808を行うことができる。
宛先デコーダ608は、発信元端末識別子とパーティションIDレジスタ値とのテーブル616または他のマッピングを保持することができる。
したがって、宛先デコーダ608は、トランザクション612内の発信元端末IDを、テーブル616へのインデックスとして使用し、それによって対応するパーティションIDレジスタ値を識別することにより、ステップ808を行うことができる。
宛先デコーダ608は、(1)ステップ808において識別されるパーティションIDレジスタ値(p)、(2)トランザクション612に含まれる物理アドレス(a)、および(3)トランザクション612に含まれるデータ(d)を含む第1の変更トランザクション620を生成する。
宛先デコーダ608は、第1の変更トランザクション620をトランザクションルータ622にライン618で送る(ステップ810)。
宛先デコーダ608は、第1の変更トランザクション620をトランザクションルータ622にライン618で送る(ステップ810)。
トランザクションルータ622は、トランザクション620を、第1の変更トランザクション620において識別されるパーティションに割り振られたI/Oポート628aおよび628bの一方にルーティングする(ステップ812)。
より具体的には、トランザクションルータ622は、第1の変更トランザクション620に含まれるパーティションIDに割り振られたI/Oポート628aおよび628bの一方を識別する(ステップ814)。
トランザクションルータ622は、たとえば、パーティションIDをI/Oポート628aおよび628bにマッピングするルックアップテーブルを含むことができ、このルックアップテーブルを使用してステップ814を行うことができる。
トランザクションルータ622は、第1の変更トランザクション620からパーティションIDをはぎ取ることによって第2の変更トランザクションを生成することができ、次いで、第2の変更トランザクションをステップ814において識別された装置に送る(ステップ816)。
より具体的には、トランザクションルータ622は、第1の変更トランザクション620に含まれるパーティションIDに割り振られたI/Oポート628aおよび628bの一方を識別する(ステップ814)。
トランザクションルータ622は、たとえば、パーティションIDをI/Oポート628aおよび628bにマッピングするルックアップテーブルを含むことができ、このルックアップテーブルを使用してステップ814を行うことができる。
トランザクションルータ622は、第1の変更トランザクション620からパーティションIDをはぎ取ることによって第2の変更トランザクションを生成することができ、次いで、第2の変更トランザクションをステップ814において識別された装置に送る(ステップ816)。
本発明の一実施形態では、I/Oポート628aおよび628bは、(1)両方ともパーティション704aに割り振られるか、または(2)図7に示すようにパーティション704aおよび704bに別個に割り振られ得る。
I/Oコントローラ602は、このようなI/Oポート628aおよび628bのパーティションへの割り振りのいずれかを実施することができるように、スイッチ632を備える。
I/O装置604aは、ライン630aを介してスイッチ632に結合され、I/O装置604bはライン630bを介してスイッチ632に結合される。
そして、スイッチ632は、ライン630cを介してI/Oポート628aに結合される。
本発明の一実施形態では、スイッチ632は、I/O装置604aとI/Oポート628aの間に永続的な通過接続を作成する。
その結果、I/O装置604aは、I/Oポート628aを経由してI/Oコントローラ602と通信する。
トランザクションルータ622は、パーティション704aに関連するトランザクションをI/Oポート628aにルーティングし、それによってI/O装置604aのパーティション704aへの割り振りを実施するように構成することができる。
I/Oコントローラ602は、このようなI/Oポート628aおよび628bのパーティションへの割り振りのいずれかを実施することができるように、スイッチ632を備える。
I/O装置604aは、ライン630aを介してスイッチ632に結合され、I/O装置604bはライン630bを介してスイッチ632に結合される。
そして、スイッチ632は、ライン630cを介してI/Oポート628aに結合される。
本発明の一実施形態では、スイッチ632は、I/O装置604aとI/Oポート628aの間に永続的な通過接続を作成する。
その結果、I/O装置604aは、I/Oポート628aを経由してI/Oコントローラ602と通信する。
トランザクションルータ622は、パーティション704aに関連するトランザクションをI/Oポート628aにルーティングし、それによってI/O装置604aのパーティション704aへの割り振りを実施するように構成することができる。
両方のI/Oポート628aおよび628bがパーティション704aに割り振られる場合、I/Oポート628bをディセーブルすることができ、スイッチ632を、I/O装置604bへの、およびI/O装置604bからのすべての通信をI/Oポート628aを経由してルーティングする第1の設定に設定することができる。
I/Oポート628aがパーティション704aに割り振られ、I/Oポート628bがパーティション704bに割り振られる(図7に示すように)場合、I/Oポート628aをイネーブルすることができ、スイッチ632を、I/O装置604bへの、およびI/O装置604bからのすべての通信をI/Oポート628bを経由してルーティングする第2の設定に設定することができる。
上述したようなスイッチ632を使用することは、トランザクションを復号化し、特定のポートにルーティングすることができる単なる一例にすぎず、本発明の限定として解釈されないことに留意する。
I/Oポート628aがパーティション704aに割り振られ、I/Oポート628bがパーティション704bに割り振られる(図7に示すように)場合、I/Oポート628aをイネーブルすることができ、スイッチ632を、I/O装置604bへの、およびI/O装置604bからのすべての通信をI/Oポート628bを経由してルーティングする第2の設定に設定することができる。
上述したようなスイッチ632を使用することは、トランザクションを復号化し、特定のポートにルーティングすることができる単なる一例にすぎず、本発明の限定として解釈されないことに留意する。
方法800のステップ812に戻ると、トランザクションルータ622は、パーティションID値と関連するI/Oポートのマッピングを保持することができる。
たとえば、I/O装置604aがパーティション704aにマッピングされ、I/O装置604bがパーティション704bにマッピングされる(図7に示すように)場合を考える。
このような場合、第1の変更トランザクション620内のパーティションIDによりパーティション704aが識別される場合、トランザクションルータ622は、第2の変更トランザクション626aを生成し、ライン624aでI/Oポート628aに送ることができ、第2の変更トランザクション626aを、I/Oポート628aを経由し、ライン630cを通し、スイッチ632を経由し、次いでライン630aを通してI/O装置604aに転送することができる。
同様に、第1の変更トランザクション620内のパーティションIDにより、パーティション704bが識別される場合、トランザクションルータ622は、第2の変更トランザクション626bを生成し、I/Oポート628bにライン624bで送ることができ、I/Oポート628bを経由して、第2の変更トランザクション626bをI/O装置604bにライン630bで転送することができる。
ポート628aおよび628bとパーティション702aおよび702bの間に1対1のマッピングが存在する図7に示すマッピング700は、単に例として提供されるものであり、本発明の限定として解釈されないことに留意する。
本明細書において開示する技法は、たとえば、パーティションIDの一部として物理アドレスに追加ビットを使用することにより、複数のポートと単一のパーティションというマッピングと併用することも可能である。
たとえば、I/O装置604aがパーティション704aにマッピングされ、I/O装置604bがパーティション704bにマッピングされる(図7に示すように)場合を考える。
このような場合、第1の変更トランザクション620内のパーティションIDによりパーティション704aが識別される場合、トランザクションルータ622は、第2の変更トランザクション626aを生成し、ライン624aでI/Oポート628aに送ることができ、第2の変更トランザクション626aを、I/Oポート628aを経由し、ライン630cを通し、スイッチ632を経由し、次いでライン630aを通してI/O装置604aに転送することができる。
同様に、第1の変更トランザクション620内のパーティションIDにより、パーティション704bが識別される場合、トランザクションルータ622は、第2の変更トランザクション626bを生成し、I/Oポート628bにライン624bで送ることができ、I/Oポート628bを経由して、第2の変更トランザクション626bをI/O装置604bにライン630bで転送することができる。
ポート628aおよび628bとパーティション702aおよび702bの間に1対1のマッピングが存在する図7に示すマッピング700は、単に例として提供されるものであり、本発明の限定として解釈されないことに留意する。
本明細書において開示する技法は、たとえば、パーティションIDの一部として物理アドレスに追加ビットを使用することにより、複数のポートと単一のパーティションというマッピングと併用することも可能である。
これより、I/O装置604aおよび604bが異なるパーティションに割り振られた場合に、I/O装置604aおよび604bがI/Oコントローラ602を経由して出力通信を行えるようにする技法の例について説明する。
ここでも、I/Oポート628a(したがってI/O装置604a)はパーティション704aにマッピングされ、I/Oポート628b(したがってI/O装置604b)はパーティション704bにマッピングされる(図7に示すように)ものと想定する。
これより、I/O装置604aが出力トランザクション636aを(I/Oポート628aを経由して)ライン634a上に生成する例を考える。
トランザクション636aは物理アドレス(a)およびデータ(d)を含む。
ここでも、I/Oポート628a(したがってI/O装置604a)はパーティション704aにマッピングされ、I/Oポート628b(したがってI/O装置604b)はパーティション704bにマッピングされる(図7に示すように)ものと想定する。
これより、I/O装置604aが出力トランザクション636aを(I/Oポート628aを経由して)ライン634a上に生成する例を考える。
トランザクション636aは物理アドレス(a)およびデータ(d)を含む。
I/Oコントローラ602は、I/Oポート628aおよび628bにそれぞれに関連する複数のパーティションIDレジスタ606aおよび606bを備える。
具体的には、パーティションIDレジスタ606aにはI/Oポート628aが関連付けられ、マッピング702a(図7)を表す。
同様に、パーティションIDレジスタ606bにはI/Oポート628bが関連付けられ、マッピング702bを表す。
各パーティションIDレジスタ606aおよび606bは、I/Oポート628aおよび628bを割り振るパーティションを区別するに少なくとも十分なビットを含む。
具体的には、パーティションIDレジスタ606aにはI/Oポート628aが関連付けられ、マッピング702a(図7)を表す。
同様に、パーティションIDレジスタ606bにはI/Oポート628bが関連付けられ、マッピング702bを表す。
各パーティションIDレジスタ606aおよび606bは、I/Oポート628aおよび628bを割り振るパーティションを区別するに少なくとも十分なビットを含む。
各パーティションIDレジスタ606aおよび606bは、I/Oポート628aおよび628bの対応する一方が割り振られるパーティションを一意に識別する一意のパーティションID値を記憶する。
たとえば、再び図7に示す例を参照すると、値0(2進数00)をパーティションIDレジスタ606aに記憶することができ、それによってI/Oポート628aがパーティション0(704a)に割り振られることを示す。
同様に、値1(2進数01)をパーティションIDレジスタ606bに記憶することができ、それによってI/Oポート628bがパーティション1(704b)に割り振られることを示す。
I/Oコントローラ602は、コンピュータシステム100で実行中のオペレーティングシステムが、パーティションIDレジスタ606aおよび606bに記憶されているパーティションID値を変更することができないように構成することができる。
たとえば、再び図7に示す例を参照すると、値0(2進数00)をパーティションIDレジスタ606aに記憶することができ、それによってI/Oポート628aがパーティション0(704a)に割り振られることを示す。
同様に、値1(2進数01)をパーティションIDレジスタ606bに記憶することができ、それによってI/Oポート628bがパーティション1(704b)に割り振られることを示す。
I/Oコントローラ602は、コンピュータシステム100で実行中のオペレーティングシステムが、パーティションIDレジスタ606aおよび606bに記憶されているパーティションID値を変更することができないように構成することができる。
図9を参照して、装置604aが出力トランザクション636aをライン634aで送る場合に、本発明の一実施形態によるビット置換回路638aによって行われる方法900のフローチャートを示す。
ビット置換回路638aは、出力トランザクション636aを受け取る(ステップ902)。
ビット置換回路638aは、トランザクション636aを受け取ったことに応答して、ライン640a上でパーティションIDレジスタ606aからパーティションID値を読み取る(ステップ904)。
ビット置換回路638aは、パーティションID値を物理アドレスに書き込み、それによってパーティション識別アドレスを生成する(ステップ906)。
ビット置換回路638aは、出力トランザクション636aを受け取る(ステップ902)。
ビット置換回路638aは、トランザクション636aを受け取ったことに応答して、ライン640a上でパーティションIDレジスタ606aからパーティションID値を読み取る(ステップ904)。
ビット置換回路638aは、パーティションID値を物理アドレスに書き込み、それによってパーティション識別アドレスを生成する(ステップ906)。
ステップ906において生成されるパーティション識別アドレスは、たとえば、図12Bに示すレイアウトを有することができる。
図12Bに示すパーティション識別アドレス例1210は、64ビット幅である。
パーティション識別アドレス1210の部分1212(ビット0〜54)は、元のトランザクション636aに含まれていた物理アドレスを含む。
本発明の一実施形態では、ビット置換回路638aは、トランザクション636aから得たパーティションID値を、パーティション識別アドレス1210の部分1214(ビット55)に書き込む(ステップ906)。
換言すれば、ビット置換回路638aは、パーティションID値を元の物理アドレスに添付する。
したがって、部分1212および1214の両方を含む部分1218は、元のトランザクション636aが示すシステムメモリアドレスを明確に識別する。
パーティション識別アドレス1210の部分1216(ビット56〜63)は使用されない。
したがって、パーティションIDの部分1214および物理アドレス部分1212の組み合わせが、システム100内の一意のアドレスの指定に使用されるため、部分1218はアドレス1210の「使用部分」を表す。
図12Bに示すパーティション識別アドレス例1210は、64ビット幅である。
パーティション識別アドレス1210の部分1212(ビット0〜54)は、元のトランザクション636aに含まれていた物理アドレスを含む。
本発明の一実施形態では、ビット置換回路638aは、トランザクション636aから得たパーティションID値を、パーティション識別アドレス1210の部分1214(ビット55)に書き込む(ステップ906)。
換言すれば、ビット置換回路638aは、パーティションID値を元の物理アドレスに添付する。
したがって、部分1212および1214の両方を含む部分1218は、元のトランザクション636aが示すシステムメモリアドレスを明確に識別する。
パーティション識別アドレス1210の部分1216(ビット56〜63)は使用されない。
したがって、パーティションIDの部分1214および物理アドレス部分1212の組み合わせが、システム100内の一意のアドレスの指定に使用されるため、部分1218はアドレス1210の「使用部分」を表す。
2ビット幅である、アドレス1200(図12A)のパーティションIDフィールド1204とは対照的に、アドレス1210のパーティションIDフィールド1214はわずか1ビット幅であることに留意する。
アドレス1210のパーティションIDフィールド1214に必要な幅は、I/Oポート628aおよび628bが割り振られたパーティションを区別するのに十分な幅だけである。
I/Oポート628aおよび628bは、図6Aおよび図6Bに示す例では2つのパーティションに割り振られるため、パーティションIDフィールド1214に必要な幅は1ビットだけである。
これとは対照的に、アドレス1200(図12A)のパーティションIDフィールド1204は、システム内のすべてのパーティション504a〜504dを区別することができなければならないため、2ビット幅である。
パーティションIDフィールド1204および1214に必要な最小幅は、もちろん、パーティションIDフィールドで表す必要のある一意のパーティションの数に応じて可変である。
アドレス1210のパーティションIDフィールド1214に必要な幅は、I/Oポート628aおよび628bが割り振られたパーティションを区別するのに十分な幅だけである。
I/Oポート628aおよび628bは、図6Aおよび図6Bに示す例では2つのパーティションに割り振られるため、パーティションIDフィールド1214に必要な幅は1ビットだけである。
これとは対照的に、アドレス1200(図12A)のパーティションIDフィールド1204は、システム内のすべてのパーティション504a〜504dを区別することができなければならないため、2ビット幅である。
パーティションIDフィールド1204および1214に必要な最小幅は、もちろん、パーティションIDフィールドで表す必要のある一意のパーティションの数に応じて可変である。
図12Bにおけるパーティション識別アドレス1210の特定のレイアウトは、単に例を目的として示されるものであり、本発明の限定として解釈されない。
正確に言えば、任意のサイズおよび任意のレイアウトを有するパーティション識別アドレスを、本発明の実施形態と併用することが可能である。
ビット置換回路638aは、ステップ906において生成されたパーティション識別アドレスを含む第1の変更トランザクション642aを生成する(ステップ908)。
ビット置換回路638aは、第1の変更トランザクション642aをキャッシュ646にライン644aで送る(ステップ910)。
正確に言えば、任意のサイズおよび任意のレイアウトを有するパーティション識別アドレスを、本発明の実施形態と併用することが可能である。
ビット置換回路638aは、ステップ906において生成されたパーティション識別アドレスを含む第1の変更トランザクション642aを生成する(ステップ908)。
ビット置換回路638aは、第1の変更トランザクション642aをキャッシュ646にライン644aで送る(ステップ910)。
図10を参照して、本発明の一実施形態による第1の変更トランザクション642aを受け取ったことに応答して、キャッシュ646によって行われる方法1000のフローチャートを示す。
キャッシュ646は、第1の変更トランザクション642aをビット置換回路638aから受け取る(ステップ1002)。
キャッシュ646は、第1の変更トランザクション642aを、キャッシュライン648にローカルに記憶されているキャッシュデータを使用して満たすことができるか否かを判断する(ステップ1004)。
キャッシュヒットがある場合、キャッシュ646はトランザクションをローカルに(すなわち、キャッシュライン648内で)行い(ステップ1006)、方法1000は終了する。
データは、ライン650を介してIOカードからキャッシュに書き込まれる。
トランザクション636aが読み取りコマンドである場合、キャッシュ646は読み取り値を装置604aにライン650で送ることができる。
キャッシュ646は、第1の変更トランザクション642aをビット置換回路638aから受け取る(ステップ1002)。
キャッシュ646は、第1の変更トランザクション642aを、キャッシュライン648にローカルに記憶されているキャッシュデータを使用して満たすことができるか否かを判断する(ステップ1004)。
キャッシュヒットがある場合、キャッシュ646はトランザクションをローカルに(すなわち、キャッシュライン648内で)行い(ステップ1006)、方法1000は終了する。
データは、ライン650を介してIOカードからキャッシュに書き込まれる。
トランザクション636aが読み取りコマンドである場合、キャッシュ646は読み取り値を装置604aにライン650で送ることができる。
キャッシュミスがある場合、キャッシュ646は、第2の変更トランザクション652をアドレスマッパ656にライン654で送る(ステップ1008)。
本発明の一実施形態では、第2の変更トランザクション652は、第1の変更トランザクション642aからのパーティションID値および物理アドレスを含む。
本発明の一実施形態では、第2の変更トランザクション652は、第1の変更トランザクション642aからのパーティションID値および物理アドレスを含む。
図11を参照して、本発明の一実施形態において、第2の変更トランザクション652を受け取ったときに、アドレスマッパ656によって行われる方法1100のフローチャートを示す。
アドレスマッパ656は、第2の変更トランザクション652をライン654で受け取る(ステップ1102)。
アドレスマッパ656は、宛先端末IDへのアドレス−パーティションID対のマッピング658を保持する。
アドレスマッパ656は、マッピング658を使用して、第2の変更トランザクション652内のパーティションIDおよびアドレスを宛先端末IDにマッピングする(ステップ1104)。
アドレスマッパ656は、第2の変更トランザクション652をライン654で受け取る(ステップ1102)。
アドレスマッパ656は、宛先端末IDへのアドレス−パーティションID対のマッピング658を保持する。
アドレスマッパ656は、マッピング658を使用して、第2の変更トランザクション652内のパーティションIDおよびアドレスを宛先端末IDにマッピングする(ステップ1104)。
アドレスマッパ656は第3の変更トランザクション670を生成し、システムファブリック116にライン672で送る(ステップ1106)。
第3の変更トランザクション670は、(1)ステップ1104において識別された宛先端末ID、(2)第2の変更トランザクション652からの物理アドレス、および(3)第2の変更トランザクション652からのデータ(もしあれば)を含む。
図6Aおよび図6Bに示す実施形態では、パーティションIDは異なるパーティションを内部で(すなわち、I/Oコントローラ602内で)区別するためだけに使用されるため、第3の変更トランザクション670は、ステップ904(図9)において識別されたパーティションIDを含まないことに留意する。
第3の変更トランザクション670は、(1)ステップ1104において識別された宛先端末ID、(2)第2の変更トランザクション652からの物理アドレス、および(3)第2の変更トランザクション652からのデータ(もしあれば)を含む。
図6Aおよび図6Bに示す実施形態では、パーティションIDは異なるパーティションを内部で(すなわち、I/Oコントローラ602内で)区別するためだけに使用されるため、第3の変更トランザクション670は、ステップ904(図9)において識別されたパーティションIDを含まないことに留意する。
上述したように、ルータ228は、第3の変更トランザクション670を、図2に関連して上述した技法を用いて、第3の変更トランザクション670に含まれる宛先端末IDを有するメモリコントローラまたは他の装置にルーティングする。
上述した例はパーティション704aおよび対応するI/Oポート628aに関わるが、同じまたは同様の技法をパーティション704bおよび対応するI/Oポート628bと併用することができる。
たとえば、ビット置換回路638bは、装置604bからの出力トランザクション636bをライン634bで受け取り、パーティションIDレジスタ606bの値を置換することができ、それにより第1の変更トランザクション642bを生成しライン644bで送る。
次いで、第1の変更トランザクション642bを上述したように処理することができる。
たとえば、ビット置換回路638bは、装置604bからの出力トランザクション636bをライン634bで受け取り、パーティションIDレジスタ606bの値を置換することができ、それにより第1の変更トランザクション642bを生成しライン644bで送る。
次いで、第1の変更トランザクション642bを上述したように処理することができる。
本発明の利点としては、以下の1つまたは複数が挙げられる。
既存のパーティション化可能コンピュータアーキテクチャは通常、資源をパーティションにチップ単位で割り振る。
換言すれば、従来のパーティション化可能コンピュータでは、単一のチップ内の資源(プロセッサコア等)をすべて、多くとも1つのパーティションに割り振らなければならない。
単一のチップ内の資源の数および能力が増大するにつれ、このようなチップ単位での資源の割り振りは、パーティション化可能コンピュータシステムにおいて資源をパーティションに割り振ることができる粒度の程度に制約を課す。
このような制約は、資源を最適に利用するように係る資源をパーティションに動的に割り振ることができる程度を制限する。
換言すれば、従来のパーティション化可能コンピュータでは、単一のチップ内の資源(プロセッサコア等)をすべて、多くとも1つのパーティションに割り振らなければならない。
単一のチップ内の資源の数および能力が増大するにつれ、このようなチップ単位での資源の割り振りは、パーティション化可能コンピュータシステムにおいて資源をパーティションに割り振ることができる粒度の程度に制約を課す。
このような制約は、資源を最適に利用するように係る資源をパーティションに動的に割り振ることができる程度を制限する。
本明細書において開示する技法は、資源をサブチップ単位で割り振る能力を提供することにより、この問題に対処する。
単一のチップ上の複数の資源を複数のパーティションに割り振る能力は、条件の変化に応答して係る資源を最適に割り振ることができる程度を向上させる。
サブチップパーティション割り振りにより、パーティション化可能コンピュータシステムは、依然としてユーザに要求される粒度の細かい資源の割り振りを提供しながら、ますます多数の機能を単一のチップ上に提供するというコンピュータチップ設計の現在の傾向によって可能になるコストおよびサイズの削減という利点を完全に利用できるようにする。
単一のチップ上の複数の資源を複数のパーティションに割り振る能力は、条件の変化に応答して係る資源を最適に割り振ることができる程度を向上させる。
サブチップパーティション割り振りにより、パーティション化可能コンピュータシステムは、依然としてユーザに要求される粒度の細かい資源の割り振りを提供しながら、ますます多数の機能を単一のチップ上に提供するというコンピュータチップ設計の現在の傾向によって可能になるコストおよびサイズの削減という利点を完全に利用できるようにする。
さらに、本発明の実施形態は、サブチップパーティション割り振りを、既存の回路に比較的局所的な変更を行うことで達成できるようにし、それにより、既存の回路の大部分を変更なく本発明の実施形態と併用できるようにする。
たとえば、図2に示すシステムでは、コア204a〜204n、キャッシュ208、およびファブリック116は従来技術による構成要素であることができる。
その結果、本発明の実施形態は、比較的容易に、素早く、かつ安価に実施することができる。
たとえば、図2に示すシステムでは、コア204a〜204n、キャッシュ208、およびファブリック116は従来技術による構成要素であることができる。
その結果、本発明の実施形態は、比較的容易に、素早く、かつ安価に実施することができる。
本明細書において開示した技法のさらなる利点は、ビット置換回路212a〜212n、638aおよび638bが、対応するパーティション内のオペレーティングシステムが他のパーティション内のアドレスにアクセスしないようにすることにより、パーティション間セキュリティを確保することができることである。
上述したように、このようなセキュリティは、オペレーティングシステムが、生成したアドレスの上位ビット(たとえば、アドレス1200(図12A)の部分1204または1206のビット、ならびにアドレス1210(図12B)の部分1214または1216のビット)に書き込むいずれの値も上書きすることによって提供することができる。
それにより、本明細書において開示する技法は、悪意のある、または不適切に設計されたソフトウェアが出し抜くことができない程度の、ハードウェアによって確保されるパーティション間セキュリティを提供する。
上述したように、このようなセキュリティは、オペレーティングシステムが、生成したアドレスの上位ビット(たとえば、アドレス1200(図12A)の部分1204または1206のビット、ならびにアドレス1210(図12B)の部分1214または1216のビット)に書き込むいずれの値も上書きすることによって提供することができる。
それにより、本明細書において開示する技法は、悪意のある、または不適切に設計されたソフトウェアが出し抜くことができない程度の、ハードウェアによって確保されるパーティション間セキュリティを提供する。
本発明について特定の実施形態に関して上述したが、上記実施形態は例示としてのみ提供され、本発明の範囲を限定または規定しないことを理解されたい。
以下を含むがこれらに限定されない他の様々な実施形態も特許請求の範囲内である。
たとえば、本明細書において説明した要素および構成要素は、さらなる構成要素にさらに分割してもよく、または共に結合して、同じ機能を行うより少数の構成要素を形成してもよい。
以下を含むがこれらに限定されない他の様々な実施形態も特許請求の範囲内である。
たとえば、本明細書において説明した要素および構成要素は、さらなる構成要素にさらに分割してもよく、または共に結合して、同じ機能を行うより少数の構成要素を形成してもよい。
「資源」という語は、本明細書では、プロセッサコア(図2)およびI/Oポート(図6Aおよび図6B)等、コンピュータシステム内のハードウェア資源を指す。
チップは、1つまたは複数のハードウェア資源を含み得る。
本明細書では、プロセッサコアおよびI/Oポートが、本発明の実施形態においてパーティションに個々に割り振ることができるハードウェア資源の例として提供されるが、本発明の実施形態は、他の種類のハードウェア資源をパーティションにサブチップベースでの割り振りに使用することができる。
さらに、図2における例に示す技法は、複数のCPUコア206a〜206nに適用されるが、係る技法は、I/Oポートまたは他の任意の種類の資源に適用することが可能である。
同様に、図6Aおよび図6Bにおける例に示す技法は複数のI/Oポート628aおよび628bに適用されるが、係る技法は、CPUコアまたは他の任意の種類の資源に適用することが可能である。
チップは、1つまたは複数のハードウェア資源を含み得る。
本明細書では、プロセッサコアおよびI/Oポートが、本発明の実施形態においてパーティションに個々に割り振ることができるハードウェア資源の例として提供されるが、本発明の実施形態は、他の種類のハードウェア資源をパーティションにサブチップベースでの割り振りに使用することができる。
さらに、図2における例に示す技法は、複数のCPUコア206a〜206nに適用されるが、係る技法は、I/Oポートまたは他の任意の種類の資源に適用することが可能である。
同様に、図6Aおよび図6Bにおける例に示す技法は複数のI/Oポート628aおよび628bに適用されるが、係る技法は、CPUコアまたは他の任意の種類の資源に適用することが可能である。
一般に、本明細書において開示した技法は、キャッシュを備えたシステムにおいて使用することができ、それによってキャッシュを複数のパーティションに割り振る。
さらに、メモリマッピングトランザクションを使用してアクセスされるいずれの資源も、本明細書において開示した技法を用いて、パーティション化可能コンピュータシステムにおいて特定のパーティションに割り振ることが可能である。
さらに、メモリマッピングトランザクションを使用してアクセスされるいずれの資源も、本明細書において開示した技法を用いて、パーティション化可能コンピュータシステムにおいて特定のパーティションに割り振ることが可能である。
たとえば、汎用イベントレジスタ(GPE)は通常、特定のパーティションに割り振られる。
したがって、特定のGPEは通常、割り振られたパーティションのアドレス空間内でアドレス指定可能である。
本明細書において開示した技法を採用して、一意のシステム(ファブリック)アドレスにあるシステムファブリック116を介して各パーティションのGPEにアクセスできるようにすることができる。
したがって、特定のGPEは通常、割り振られたパーティションのアドレス空間内でアドレス指定可能である。
本明細書において開示した技法を採用して、一意のシステム(ファブリック)アドレスにあるシステムファブリック116を介して各パーティションのGPEにアクセスできるようにすることができる。
単一のチップ(集積回路)上の複数の資源を複数のパーティションに割り振ることを含む特定の例を上に提供したが、本明細書において開示した技法は、単一のチップ上の資源との併用に限定されない。
正確に言えば、より一般に、本明細書において開示する技法は、コンピュータシステム内の複数の資源をコンピュータシステム内の複数のパーティションに割り振る際に使用することが可能である。
正確に言えば、より一般に、本明細書において開示する技法は、コンピュータシステム内の複数の資源をコンピュータシステム内の複数のパーティションに割り振る際に使用することが可能である。
単一のメモリコントローラが図1におけるセルボード102a〜102dのそれぞれに示されるが、これは本発明の要件ではない。
正確に言えば、セルボードは、各自の端末IDをそれぞれ有することができる複数のメモリコントローラを備えることができる。
当業者は、本発明の実施形態を、単一のセルボード上に複数のメモリコントローラを備えたシステムに実施する方法を理解しよう。
正確に言えば、セルボードは、各自の端末IDをそれぞれ有することができる複数のメモリコントローラを備えることができる。
当業者は、本発明の実施形態を、単一のセルボード上に複数のメモリコントローラを備えたシステムに実施する方法を理解しよう。
図2に示す例では、コア204aがメモリ書き込みコマンド230aを発するが、メモリ書き込みコマンド230aは、メモリアクセス要求の単なる一例にすぎず、メモリアクセス要求も同様に、本明細書において開示した技法を適用することが可能なトランザクションの単なる一例にすぎない。
パーティションID値は、図2におけるパーティションIDレジスタ210a〜210nに記憶されるが、任意の様式で表現し、記憶することが可能である。
たとえば、パーティションID値をそれぞれ別個のレジスタに記憶する必要はなく、また本明細書において説明した特定の付番方式を使用して表現する必要はない。
たとえば、パーティションID値をそれぞれ別個のレジスタに記憶する必要はなく、また本明細書において説明した特定の付番方式を使用して表現する必要はない。
本発明の各種実施形態について、対称型マルチプロセッサコンピュータアーキテクチャ(SMP)と併せて本明細書において説明したが、本発明の実施形態はSMPとの併用に限定されない。
本発明の実施形態は、たとえば、NUMA(不均等メモリアクセス)マルチプロセッサコンピュータアーキテクチャと併用することも可能である。
本発明の実施形態は、たとえば、NUMA(不均等メモリアクセス)マルチプロセッサコンピュータアーキテクチャと併用することも可能である。
4つのセルボード102a〜102dを図1に示すが、これは本発明の要件ではない。
正確に言えば、本明細書において開示する技法は、任意の数のセルボードを有するマルチプロセッサコンピュータシステムと併用することが可能である。
さらに、システム内の各セルボードは、任意の数のプロセッサ(1を含む)を有することができる。
本明細書において用いる「セルボード」という語は、任意の特定の種類のセルボードに限定されず、正確に言えば、1つまたは複数のプロセッサのセットがシステムファブリックを介して、エージェントチップ等のインタフェースを経由して通信できるようにする電気的および/または機械的な構成要素の任意のセットを広く指す。
正確に言えば、本明細書において開示する技法は、任意の数のセルボードを有するマルチプロセッサコンピュータシステムと併用することが可能である。
さらに、システム内の各セルボードは、任意の数のプロセッサ(1を含む)を有することができる。
本明細書において用いる「セルボード」という語は、任意の特定の種類のセルボードに限定されず、正確に言えば、1つまたは複数のプロセッサのセットがシステムファブリックを介して、エージェントチップ等のインタフェースを経由して通信できるようにする電気的および/または機械的な構成要素の任意のセットを広く指す。
ファブリックエージェントチップ114aおよびメモリコントローラ110aは、別個の離散した構成要素として図1に示されるが、これは本発明の要件ではない。
正確に言えば、ファブリックエージェントチップ114aおよびメモリコントローラ110aは、単一のチップパッケージに一体化することが可能である。
正確に言えば、ファブリックエージェントチップ114aおよびメモリコントローラ110aは、単一のチップパッケージに一体化することが可能である。
102a〜102d・・・セルボード,
106a〜106n・・・キャッシュ,
108・・・システムバス,
110a〜110d・・・メモリコントローラ,
112a〜112d・・・メインメモリ,
114a・・・ファブリックエージェントチップ(FAC),
116・・・スイッチングファブリック,
118・・・I/Oサブシステム,
116・・・ファブリック,
204a〜204n、206a〜206n・・・コア,
208・・・キャッシュ,
212a〜212n・・・ビット置換,
222・・・アドレスマッパ,
228・・・ルータ,
234・・・キャッシュライン,
504a〜504d・・・パーティション,
506a〜506h・・・コア,
602・・・I/Oコントローラ,
604a、604b・・・I/O装置,
608・・・宛先デコーダ,
622・・・トランザクションルータ,
628a、628b・・・I/Oポート,
632・・・スイッチ,
638a、638b・・・ビット置換,
646・・・キャッシュ,
648・・・キャッシュライン,
656・・・アドレスマッパ,
704a〜704d・・・パーティション,
106a〜106n・・・キャッシュ,
108・・・システムバス,
110a〜110d・・・メモリコントローラ,
112a〜112d・・・メインメモリ,
114a・・・ファブリックエージェントチップ(FAC),
116・・・スイッチングファブリック,
118・・・I/Oサブシステム,
116・・・ファブリック,
204a〜204n、206a〜206n・・・コア,
208・・・キャッシュ,
212a〜212n・・・ビット置換,
222・・・アドレスマッパ,
228・・・ルータ,
234・・・キャッシュライン,
504a〜504d・・・パーティション,
506a〜506h・・・コア,
602・・・I/Oコントローラ,
604a、604b・・・I/O装置,
608・・・宛先デコーダ,
622・・・トランザクションルータ,
628a、628b・・・I/Oポート,
632・・・スイッチ,
638a、638b・・・ビット置換,
646・・・キャッシュ,
648・・・キャッシュライン,
656・・・アドレスマッパ,
704a〜704d・・・パーティション,
Claims (7)
- 複数のパーティション(504a、504b、704a、704b)にパーティション化されたパーティション化可能コンピュータシステム(100)であって、
集積回路(104a、602)
を備え、
前記集積回路(104a、602)は、
前記複数のパーティションの中の第1のパーティション(504a、704a)に割り振られた第1のハードウェア資源(206a、628a)と、
前記複数のパーティションの中の前記第1のパーティション(504a、704a)と異なる前記複数のパーティションの中の第2のパーティション(504b、704b)に割り振られた第2のハードウェア資源(206b、628b)と
を備えるコンピュータシステム。 - 前記集積回路は、
プロセッサ(104a)
を備え、
前記第1および第2のハードウェア資源はそれぞれ、
第1のプロセッサコア(206a)および第2のプロセッサコア(206b)
を備える
請求項1記載のコンピュータシステム。 - 前記集積回路は、
入力/出力コントローラ(602)
を備え、
前記第1および第2のハードウェア資源はそれぞれ、
第1の入力/出力ポート(628a)および第2の入力/出力ポート(628b)
を備える
請求項1記載のコンピュータシステム。 - 前記第1のハードウェア資源は、
前記複数のパーティションの中の前記第1のパーティション(504a、704a)に割り振られた第1のアドレス空間内の第1の物理アドレスを出力する手段(204a、604a)
を備え、
前記複数のパーティションの中の前記第1のパーティション(504a、704a)を識別する第1のパーティション識別値を記憶する第1のパーティション識別手段(210a、606a)と、
前記第1のハードウェア資源(206a、628a)および前記第1のパーティション識別手段(210a、606a)に結合され、前記第1のパーティション識別値を前記第1の物理アドレスの少なくとも一部に記憶することによって第1のパーティション識別アドレスを生成する第1のビット置換手段(212a、638a)と
をさらに備える請求項1記載のコンピュータシステム。 - 複数のパーティション(504a〜504d、704a〜704d)にパーティション化されたパーティション化可能コンピュータシステム(100)において使用する装置であって、
前記複数のパーティション(504a〜504d、704a〜704d)の中の選択された1つのパーティションに割り振られたアドレス空間内の物理アドレスを含む第1のトランザクション(230a、636a)を受け取る手段(212a、638a)と、
パーティション識別値を前記物理アドレスの少なくとも一部に記憶することによってパーティション識別アドレスを生成する手段(212a、638a)と
を備える装置。 - 複数のパーティション(704a〜704d)にパーティション化されたパーティション化可能コンピュータシステム(100)において使用する装置であって、
前記複数のパーティション(704a〜704d)の中の第1のパーティション(704a)には第1のパーティション識別値が関連付けられ、
前記複数のパーティション(704a〜704d)の中の第2のパーティション(704b)には第2のパーティション識別値が関連付けられ、
発信元端末識別子を含むトランザクション(612)を受け取る手段(608)であって、前記発信元端末識別子は、前記受け取った入力トランザクション(612)を発信した発信元装置を識別する、受け取る手段と、
前記発信元端末識別子に基づいて、前記複数のパーティション(704a〜704d)の中の前記第1のパーティション(704a)および第2のパーティション(704b)の一方を識別する第3のパーティション識別値を特定する手段(608、616)と、
前記第3のパーティション識別値が前記第1のパーティション識別値に等しい場合、前記トランザクションの少なくともいくらか(626a)を、前記複数のパーティションの中の前記第1のパーティション(704a)に割り振られた第1のハードウェア資源(604a)に送る手段(622)と、
前記第3のパーティション識別値が前記第2のパーティション識別値に等しい場合、前記トランザクションの少なくとも一部(626b)を、前記複数のパーティションの中の前記第2のパーティション(704b)に割り振られた第2のハードウェア資源(604b)に送る手段(622)と
を備える装置。 - 複数のパーティション(704a〜704d)にパーティション化されたパーティション化可能コンピュータシステム(100)において使用する方法(800)であって、
前記複数のパーティションの中の第1のパーティション(704a)には第1のパーティション識別値が関連付けられ、
前記複数のパーティションの中の第2のパーティション(704b)には第2のパーティション識別値が関連付けられ、
(A)発信元端末識別子を含むトランザクション(612)を受け取るステップ(802)であって、前記発信元端末識別子は、前記受け取った入力トランザクション(612)を発信した発信元装置を識別する、受け取るステップ(802)と、
(B)前記発信元端末識別子に基づいて、前記複数のパーティション(704a〜704d)の中の前記第1のパーティション(704a)および第2のパーティション(704b)の一方を識別する第3のパーティション識別値を特定するステップ(808)と、
(C)前記第3のパーティション識別値が前記第1のパーティション識別値に等しい場合、前記トランザクション(612)の少なくともいくらか(626a)を、前記複数のパーティション(704a〜704d)の中の前記第1のパーティション(704a)に割り振られた第1のハードウェア資源(628a)に送るステップ(816)と、
(D)前記第3のパーティション識別値が前記第2のパーティション識別値に等しい場合、前記トランザクション(612)の少なくともいくらか(626b)を、前記複数のパーティション(704a〜704d)の中の前記第2のパーティション(704b)に割り振られた第2のハードウェア資源(628b)に送るステップ(816)と
を含む方法。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/898,590 US7606995B2 (en) | 2004-07-23 | 2004-07-23 | Allocating resources to partitions in a partitionable computer |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2006040275A true JP2006040275A (ja) | 2006-02-09 |
Family
ID=35658611
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2005202511A Pending JP2006040275A (ja) | 2004-07-23 | 2005-07-12 | パーティション化可能コンピュータにおけるパーティションへの資源割り振り |
Country Status (3)
Country | Link |
---|---|
US (2) | US7606995B2 (ja) |
JP (1) | JP2006040275A (ja) |
CN (1) | CN1725183A (ja) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2007099618A1 (ja) * | 2006-02-28 | 2007-09-07 | Fujitsu Limited | パーティションプライオリティ制御システムおよび方法 |
JP2009252202A (ja) * | 2008-04-11 | 2009-10-29 | Hitachi Ltd | コンピュータシステム |
JP2010122805A (ja) * | 2008-11-18 | 2010-06-03 | Hitachi Ltd | 仮想サーバシステム並びに物理cpu及び物理メモリの割り当て方法 |
Families Citing this family (38)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060212677A1 (en) * | 2005-03-15 | 2006-09-21 | Intel Corporation | Multicore processor having active and inactive execution cores |
US20160098279A1 (en) * | 2005-08-29 | 2016-04-07 | Searete Llc | Method and apparatus for segmented sequential storage |
US20070050767A1 (en) * | 2005-08-31 | 2007-03-01 | Grobman Steven L | Method, apparatus and system for a virtual diskless client architecture |
US8275949B2 (en) * | 2005-12-13 | 2012-09-25 | International Business Machines Corporation | System support storage and computer system |
US20070226456A1 (en) * | 2006-03-21 | 2007-09-27 | Mark Shaw | System and method for employing multiple processors in a computer system |
US9870267B2 (en) * | 2006-03-22 | 2018-01-16 | Intel Corporation | Virtual vector processing |
US20070239965A1 (en) * | 2006-03-31 | 2007-10-11 | Saul Lewites | Inter-partition communication |
US8464265B2 (en) * | 2006-04-03 | 2013-06-11 | Secure64 Software | Method and system for reallocating computational resources using resource reallocation enabling information |
US20070261059A1 (en) * | 2006-04-25 | 2007-11-08 | Orth Joseph F | Array-based memory abstraction |
US20080126652A1 (en) * | 2006-09-27 | 2008-05-29 | Intel Corporation | Managing Interrupts in a Partitioned Platform |
JP4723470B2 (ja) * | 2006-12-28 | 2011-07-13 | 株式会社日立製作所 | 計算機システムおよびそのチップセット |
US8180997B2 (en) * | 2007-07-05 | 2012-05-15 | Board Of Regents, University Of Texas System | Dynamically composing processor cores to form logical processors |
US8230412B2 (en) * | 2007-08-31 | 2012-07-24 | Apple Inc. | Compatible trust in a computing device |
US8948267B1 (en) * | 2007-11-21 | 2015-02-03 | Marvell International Ltd. | System and method of video coding using adaptive macroblock processing |
JP5535471B2 (ja) * | 2008-12-05 | 2014-07-02 | エヌイーシーコンピュータテクノ株式会社 | マルチパーティション・コンピュータシステム、障害処理方法及びそのプログラム |
US8737407B2 (en) | 2009-06-22 | 2014-05-27 | Citrix Systems, Inc. | Systems and methods for distributed hash table in multi-core system |
US20120159124A1 (en) * | 2010-12-15 | 2012-06-21 | Chevron U.S.A. Inc. | Method and system for computational acceleration of seismic data processing |
US9229884B2 (en) * | 2012-04-30 | 2016-01-05 | Freescale Semiconductor, Inc. | Virtualized instruction extensions for system partitioning |
US9152587B2 (en) | 2012-05-31 | 2015-10-06 | Freescale Semiconductor, Inc. | Virtualized interrupt delay mechanism |
US9442870B2 (en) | 2012-08-09 | 2016-09-13 | Freescale Semiconductor, Inc. | Interrupt priority management using partition-based priority blocking processor registers |
US9436626B2 (en) | 2012-08-09 | 2016-09-06 | Freescale Semiconductor, Inc. | Processor interrupt interface with interrupt partitioning and virtualization enhancements |
US8976802B2 (en) * | 2013-03-15 | 2015-03-10 | Oracle International Corporation | Prediction-based switch allocator |
FR3032537B1 (fr) * | 2015-02-09 | 2018-03-16 | Commissariat A L'energie Atomique Et Aux Energies Alternatives | Procede d'execution d'une requete d'echange de donnees entre des premier et deuxieme espaces d'adressage physiques disjoints de circuits sur carte ou puce |
US9734071B2 (en) * | 2015-05-15 | 2017-08-15 | Oracle International Corporation | Method and apparatus for history-based snooping of last level caches |
US10169044B2 (en) | 2015-06-26 | 2019-01-01 | Microsoft Technology Licensing, Llc | Processing an encoding format field to interpret header information regarding a group of instructions |
US9952867B2 (en) | 2015-06-26 | 2018-04-24 | Microsoft Technology Licensing, Llc | Mapping instruction blocks based on block size |
US10409599B2 (en) | 2015-06-26 | 2019-09-10 | Microsoft Technology Licensing, Llc | Decoding information about a group of instructions including a size of the group of instructions |
US10175988B2 (en) | 2015-06-26 | 2019-01-08 | Microsoft Technology Licensing, Llc | Explicit instruction scheduler state information for a processor |
US9946548B2 (en) | 2015-06-26 | 2018-04-17 | Microsoft Technology Licensing, Llc | Age-based management of instruction blocks in a processor instruction window |
US10191747B2 (en) | 2015-06-26 | 2019-01-29 | Microsoft Technology Licensing, Llc | Locking operand values for groups of instructions executed atomically |
US10409606B2 (en) | 2015-06-26 | 2019-09-10 | Microsoft Technology Licensing, Llc | Verifying branch targets |
US10346168B2 (en) | 2015-06-26 | 2019-07-09 | Microsoft Technology Licensing, Llc | Decoupled processor instruction window and operand buffer |
US11755484B2 (en) | 2015-06-26 | 2023-09-12 | Microsoft Technology Licensing, Llc | Instruction block allocation |
US11016770B2 (en) | 2015-09-19 | 2021-05-25 | Microsoft Technology Licensing, Llc | Distinct system registers for logical processors |
US11126433B2 (en) | 2015-09-19 | 2021-09-21 | Microsoft Technology Licensing, Llc | Block-based processor core composition register |
US10768936B2 (en) | 2015-09-19 | 2020-09-08 | Microsoft Technology Licensing, Llc | Block-based processor including topology and control registers to indicate resource sharing and size of logical processor |
US11531552B2 (en) | 2017-02-06 | 2022-12-20 | Microsoft Technology Licensing, Llc | Executing multiple programs simultaneously on a processor core |
US20190069658A1 (en) * | 2017-08-17 | 2019-03-07 | Kathleen Militello | Cover for an adverisement structure |
Family Cites Families (24)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4300192A (en) * | 1974-04-18 | 1981-11-10 | Honeywell Information Systems Inc. | Method and means for storing and accessing information in a shared access multiprogrammed data processing system |
US4925311A (en) * | 1986-02-10 | 1990-05-15 | Teradata Corporation | Dynamically partitionable parallel processors |
CA1293819C (en) * | 1986-08-29 | 1991-12-31 | Thinking Machines Corporation | Very large scale computer |
US4843541A (en) * | 1987-07-29 | 1989-06-27 | International Business Machines Corporation | Logical resource partitioning of a data processing system |
JPH0291747A (ja) * | 1988-09-29 | 1990-03-30 | Hitachi Ltd | 情報処理装置 |
US5117350A (en) * | 1988-12-15 | 1992-05-26 | Flashpoint Computer Corporation | Memory address mechanism in a distributed memory architecture |
US5193202A (en) * | 1990-05-29 | 1993-03-09 | Wavetracer, Inc. | Processor array with relocated operand physical address generator capable of data transfer to distant physical processor for each virtual processor while simulating dimensionally larger array processor |
US5428758A (en) * | 1991-05-10 | 1995-06-27 | Unisys Corporation | Method and system for remapping memory from one physical configuration to another physical configuration |
US5522075A (en) * | 1991-06-28 | 1996-05-28 | Digital Equipment Corporation | Protection ring extension for computers having distinct virtual machine monitor and virtual machine address spaces |
US5319760A (en) * | 1991-06-28 | 1994-06-07 | Digital Equipment Corporation | Translation buffer for virtual machines with address space match |
US5561768A (en) * | 1992-03-17 | 1996-10-01 | Thinking Machines Corporation | System and method for partitioning a massively parallel computer system |
US5819061A (en) * | 1994-07-25 | 1998-10-06 | International Business Machines Corporation | Method and apparatus for dynamic storage reconfiguration in a partitioned environment |
US5710938A (en) * | 1995-07-19 | 1998-01-20 | Unisys Corporation | Data processing array in which sub-arrays are established and run independently |
US5765198A (en) * | 1996-02-01 | 1998-06-09 | Cray Research, Inc. | Transparent relocation of real memory addresses in the main memory of a data processor |
US5761516A (en) * | 1996-05-03 | 1998-06-02 | Lsi Logic Corporation | Single chip multiprocessor architecture with internal task switching synchronization bus |
US5862357A (en) * | 1996-07-02 | 1999-01-19 | Sun Microsystems, Inc. | Hierarchical SMP computer system |
US6295584B1 (en) * | 1997-08-29 | 2001-09-25 | International Business Machines Corporation | Multiprocessor computer system with memory map translation |
US6356991B1 (en) * | 1997-12-31 | 2002-03-12 | Unisys Corporation | Programmable address translation system |
US6163834A (en) * | 1998-01-07 | 2000-12-19 | Tandem Computers Incorporated | Two level address translation and memory registration system and method |
US6260155B1 (en) * | 1998-05-01 | 2001-07-10 | Quad Research | Network information server |
FR2787901B1 (fr) * | 1998-12-28 | 2001-02-09 | Bull Sa | Organisation memoire par zones physiques |
US6598130B2 (en) * | 2000-07-31 | 2003-07-22 | Hewlett-Packard Development Company, L.P. | Technique for referencing distributed shared memory locally rather than remotely |
US20030110205A1 (en) * | 2001-12-07 | 2003-06-12 | Leith Johnson | Virtualized resources in a partitionable server |
US6910108B2 (en) * | 2002-01-09 | 2005-06-21 | International Business Machines Corporation | Hardware support for partitioning a multiprocessor system to allow distinct operating systems |
-
2004
- 2004-07-23 US US10/898,590 patent/US7606995B2/en not_active Expired - Fee Related
-
2005
- 2005-07-12 JP JP2005202511A patent/JP2006040275A/ja active Pending
- 2005-07-22 CN CN200510087531.XA patent/CN1725183A/zh active Pending
-
2009
- 2009-07-27 US US12/510,184 patent/US8112611B2/en active Active
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2007099618A1 (ja) * | 2006-02-28 | 2007-09-07 | Fujitsu Limited | パーティションプライオリティ制御システムおよび方法 |
US7752378B2 (en) | 2006-02-28 | 2010-07-06 | Fujitsu Limited | Partition priority controlling system and method |
JP5051121B2 (ja) * | 2006-02-28 | 2012-10-17 | 富士通株式会社 | パーティションプライオリティ制御システムおよび方法 |
JP2009252202A (ja) * | 2008-04-11 | 2009-10-29 | Hitachi Ltd | コンピュータシステム |
JP2010122805A (ja) * | 2008-11-18 | 2010-06-03 | Hitachi Ltd | 仮想サーバシステム並びに物理cpu及び物理メモリの割り当て方法 |
Also Published As
Publication number | Publication date |
---|---|
CN1725183A (zh) | 2006-01-25 |
US20060020769A1 (en) | 2006-01-26 |
US20090287906A1 (en) | 2009-11-19 |
US7606995B2 (en) | 2009-10-20 |
US8112611B2 (en) | 2012-02-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2006040275A (ja) | パーティション化可能コンピュータにおけるパーティションへの資源割り振り | |
US8250254B2 (en) | Offloading input/output (I/O) virtualization operations to a processor | |
US5754818A (en) | Architecture and method for sharing TLB entries through process IDS | |
US7093035B2 (en) | Computer system, control apparatus, storage system and computer device | |
US8180996B2 (en) | Distributed computing system with universal address system and method | |
US8195884B2 (en) | Network on chip with caching restrictions for pages of computer memory | |
US7966455B2 (en) | Memory compression implementation in a multi-node server system with directly attached processor memory | |
JP5841255B2 (ja) | 仮想化入力/出力のためのプロセッサローカルコヒーレンシを有するコンピュータシステム | |
TWI785320B (zh) | 裝置內標記資料移動系統、資訊處置系統及用於提供裝置內標記資料移動之方法 | |
US6038642A (en) | Method and system for assigning cache memory utilization within a symmetric multiprocessor data-processing system | |
US20060123196A1 (en) | System, method and computer program product for application-level cache-mapping awareness and reallocation requests | |
US6952761B2 (en) | Bus interface selection by page table attributes | |
US6094710A (en) | Method and system for increasing system memory bandwidth within a symmetric multiprocessor data-processing system | |
US7793051B1 (en) | Global shared memory subsystem | |
US20240012684A1 (en) | Memory disaggregation method, computing system implementing the method | |
US10936219B2 (en) | Controller-based inter-device notational data movement system | |
US20240231615A1 (en) | Apparatus and method for sanitizing a shared memory device or a memory expander | |
US11281612B2 (en) | Switch-based inter-device notational data movement system | |
US20240338330A1 (en) | Apparatus and method for supporting data input/output operation based on a data attribute in a shared memory device or a memory expander | |
US20240126469A1 (en) | Apparatus and method for controlling a pooled memory device or a memory expander | |
CN118779280A (zh) | 降低总线负载的方法、cxl模组、处理系统和处理器芯片 | |
JPH09223120A (ja) | マルチプロセッサシステム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20061121 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20070517 |