가상 프로세서 집합은 가상 프로세서 컬렉션을 나타내며 일부 하이퍼콜에 대한 입력으로 사용할 수 있습니다.
구문
typedef struct
{
UINT64 Format;
UINT64 ValidBanksMask;
UINT64 BankContents[];
} HV_VP_SET;
프로세서 집합에는 형식 필드에 지정된 두 가지 모드가 있습니다. "1" 형식의 프로세서 집합은 지정된 파티션에 대한 모든 가상 프로세서를 나타냅니다. "0" 형식의 프로세서 집합은 스파스 가상 프로세서 집합을 설명합니다.
| 서식 값 | 동작 설정 |
|---|---|
| 0 | VP의 스파스 하위 집합 |
| 1 | 모든 VP(파티션에 속) |
스파스 가상 프로세서 집합
다음 섹션에서는 스파스 가상 프로세서 집합을 생성하는 방법을 설명합니다.
총 가상 프로세서 집합은 "은행"으로 알려진 64개의 청크로 분할됩니다. 예를 들어 프로세서 0-63은 은행 0에 있고, 64-127은 은행 1에 있습니다.
개별 프로세서를 설명하기 위해 해당 은행은 ValidBanksMask로 지정됩니다. ValidBanksMask의 각 비트는 특정 은행을 나타냅니다.
bank = VPindex / 64
ValidBanksMask로 설정된 모든 비트에 대해 BanksContents 배열에 요소가 있어야 합니다. 이 요소는 은행 자체를 설명하는 마스크입니다.
ValidBankMask의 비트가 0이면 BanksContents에 해당 요소가 없습니다. 또한 ValidBankMask에서 비트 1의 경우 BanksContents의 해당 요소에 대한 유효한 상태는 모두 0이 될 수 있습니다. 즉, 이 은행에는 프로세서가 지정되지 않습니다.
프로세서 집합 예제
파티션에 200개의 VP가 있고 다음 집합을 지정하려고 합니다. { 0,5,130 }
먼저 스파스 집합이므로 형식은 0입니다. 다음으로 해당 은행(및 ValidBanksMask의 설정된 비트)은 { 0,0,2 }입니다. 따라서 ValidBanksMask는 0x05.
Bank 0은 비트 0과 5를 설정하여 해당 은행 내의 VP를 지정합니다. 따라서 BankContents 마스크의 해당 요소는 0x21.
Bit 1은 ValidBanksMask에서 설정되지 않으므로 BankContents에는 해당 요소가 없습니다. Bank 2는 VP 인덱스 128-191을 나타냅니다. 인덱스 130을 설명하기 위해 해당 마스크의 비트 2가 설정됩니다. 따라서 BankContents는 { 0x21,0x04 }입니다.