次の方法で共有


HV_VP_SET

仮想プロセッサ セットは仮想プロセッサのコレクションを表し、一部のハイパーカルの入力として使用できます。

構文

typedef struct
{
    UINT64 Format;
    UINT64 ValidBanksMask;
    UINT64 BankContents[];
} HV_VP_SET;

プロセッサ セットには、書式フィールドで指定される 2 つのモードがあります。 "1" 形式のプロセッサ セットは、指定されたパーティションのすべての仮想プロセッサを表します。 "0" 形式のプロセッサ セットは、仮想プロセッサのスパース セットを表します。

書式の値 動作の設定
0 VM のスパース サブセット
1 すべての VM (パーティションに属)

スパース仮想プロセッサ セット

次のセクションでは、仮想プロセッサのスパース セットを構築する方法について説明します。

仮想プロセッサの合計セットは、"銀行" と呼ばれる 64 のチャンクに分割されます。 たとえば、プロセッサ 0 から 63 は銀行 0、64 から 127 は銀行 1 などです。

個々のプロセッサを記述するために、その銀行は ValidBanksMask で指定されます。 ValidBanksMask の各ビットは、特定の銀行を表します。

bank = VPindex / 64

ValidBanksMask で設定されるビットごとに、BankContents 配列に 要素が必要です。 この要素は、銀行自体を記述するマスクです。

ValidBankMask のビットが 0 の場合、BanksContents には対応する要素はありません。 さらに、ValidBankMask のビット 1 の場合、BankContents の対応する要素の有効な状態は 0 すべてになります。つまり、この銀行ではプロセッサが指定されていません。

プロセッサ セットの例

パーティションに 200 の VM がある場合、{ 0,5,130 } のセットを指定するとします。

1 つ目の形式は 0 です。これはスパース セットです。 次に、対応する銀行 (したがって ValidBanksMask のセット ビット) は { 0,0,2 } です。 したがって、ValidBanksMask は0x05。

Bank 0 は、その銀行内の VPs を指定するためにビット 0 と 5 を設定します。 そのため、BankContents マスク内の対応する要素は0x21。

ValidBanksMask ではビット 1 が設定されていないので、BankContents には対応する要素はありません。 Bank 2 は VP インデックス 128 から 191 を表します。 インデックス 130 を記述するために、対応するマスクのビット 2 が設定されます。 したがって、BankContents は { 0x21,0x04 } です。