RU2780973C2 - Response with processor function identifier for virtualization - Google Patents

Response with processor function identifier for virtualization Download PDF

Info

Publication number
RU2780973C2
RU2780973C2 RU2020142519A RU2020142519A RU2780973C2 RU 2780973 C2 RU2780973 C2 RU 2780973C2 RU 2020142519 A RU2020142519 A RU 2020142519A RU 2020142519 A RU2020142519 A RU 2020142519A RU 2780973 C2 RU2780973 C2 RU 2780973C2
Authority
RU
Russia
Prior art keywords
processor
virtual
guest
function identifier
value
Prior art date
Application number
RU2020142519A
Other languages
Russian (ru)
Other versions
RU2020142519A (en
Inventor
Брюс Дж. Мл. ШЕРВИН
Original Assignee
МАЙКРОСОФТ ТЕКНОЛОДЖИ ЛАЙСЕНСИНГ, ЭлЭлСи
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by МАЙКРОСОФТ ТЕКНОЛОДЖИ ЛАЙСЕНСИНГ, ЭлЭлСи filed Critical МАЙКРОСОФТ ТЕКНОЛОДЖИ ЛАЙСЕНСИНГ, ЭлЭлСи
Publication of RU2020142519A publication Critical patent/RU2020142519A/en
Application granted granted Critical
Publication of RU2780973C2 publication Critical patent/RU2780973C2/en

Links

Images

Abstract

FIELD: computer technology.
SUBSTANCE: in a method, before reception of an outgoing request for a value of a processor function identifier (hereinafter – ID), following stages are performed: reception by means of a physical processor of the value of the processor function ID from a supervisor section; saving by means of the physical processor of the value of the processor function ID in a hardware register available by means of the physical processor; reception by means of the physical processor of a request outgoing from a guest section for the value of the processor function ID; and provision by means of the physical processor without intervention of the supervisor section of the requested value of the processor function ID to the guest section from the mentioned hardware register available by means of the physical processor.
EFFECT: increase in the safety in operation of real computing machines with virtual machines.
20 cl, 5 dwg

Description

Уровень техникиState of the art

[0001] Технология виртуализации применяется в широком множестве контекстов. Например, технология виртуализации может быть применена для абстрагирования физических вычислительных ресурсов от гостевых разделов, чтобы предоставлять возможность большего использования физических вычислительных ресурсов, предоставлять возможность переносимости гостевых разделов между физическими устройствами, защищать физические вычислительные ресурсы от злонамеренного и/или ошибочного кода, работающего в гостевых разделах, защищать секреты, обеспечивать соблюдение требований безопасности или политики и/или т.п. В предыдущей технологии виртуализации гостевой выход (например, передача управления процессора от гостевого раздела супервизорному разделу, такому как гипервизор) может происходить в ответ на некоторые операции. Например, гостевой выход может происходить в ответ на запрос информации об идентификаторе функции процессора.[0001] Virtualization technology is used in a wide variety of contexts. For example, virtualization technology can be applied to abstract physical computing resources from guest partitions to enable greater use of physical computing resources, enable portability of guest partitions between physical devices, protect physical computing resources from malicious and/or erroneous code running in guest partitions. , protect secrets, enforce security or policy requirements, and/or the like. In previous virtualization technology, guest egress (eg, transfer of processor control from a guest partition to a supervisory partition, such as a hypervisor) may occur in response to certain operations. For example, a guest exit may occur in response to a request for processor function identifier information.

Сущность изобретенияThe essence of the invention

[0002] Это краткое изложение сущности изобретения приведена для того, чтобы в упрощенной форме представить подборку идей, которые дополнительно описываются ниже в подробном описании. Данное краткое изложение сущности изобретения не имеет намерением ни идентифицировать ключевые признаки или важнейшие признаки заявляемого изобретения, ни использоваться для ограничения объема заявляемого изобретения.[0002] This Summary is provided to present in a simplified form a selection of ideas that are further described below in the Detailed Description. This summary is not intended to identify key features or essential features of the claimed invention, nor is it intended to limit the scope of the claimed invention.

[0003] Кратко изложенная, раскрытая технология, в целом, направлена на технологию виртуализации. Описанная технология включает в себя предоставление информации об идентификаторе функции процессора, запрашиваемой посредством, или из, виртуальной машины (VM), виртуализированного приложения, процесса безопасности на основе виртуализации (VBS) в пользовательском режиме, VBS-процесса в режиме ядра или другого гостевого раздела, процессором. Такая информация может быть предоставлена на основе информации, предоставленной априори процессору, например, супервизорным разделом, таким как гипервизор. Описанная технология также включает в себя супервизорный раздел, например, который предоставляет такую информацию процессору, и включает в себя гостевые разделы, которые принимают такую информацию.[0003] Briefly, the disclosed technology is generally directed to virtualization technology. The technology described includes providing information about a processor function ID requested by, or from, a virtual machine (VM), a virtualized application, a user-mode virtualization-based security (VBS) process, a kernel-mode VBS process, or another guest partition, processor. Such information may be provided based on information provided a priori to the processor, for example, by a supervisory partition such as a hypervisor. The described technology also includes a supervisory section, for example, which provides such information to the processor, and includes guest sections, which receive such information.

[0004] Другие аспекты и применения для описанной технологии будут понятны по прочтении и понимании прилагаемых чертежей и описания.[0004] Other aspects and applications for the described technology will be apparent from a reading and understanding of the accompanying drawings and description.

Краткое описание чертежейBrief description of the drawings

[0005] Неограничивающие и неисключительные примеры настоящего изобретения описываются со ссылкой на следующие чертежи. На чертежах одинаковые ссылочные номера ссылаются на аналогичные части повсюду на различных чертежах, пока не указано иное. Эти чертежи необязательно начерчены в масштабе.[0005] Non-limiting and non-exclusive examples of the present invention are described with reference to the following drawings. In the drawings, like reference numerals refer to like parts throughout the various drawings, unless otherwise indicated. These drawings are not necessarily drawn to scale.

[0006] Для лучшего понимания настоящего изобретения ссылка будет выполнена на следующее подробное описание, которое должно читаться в ассоциации с сопровождающими чертежами, на которых:[0006] For a better understanding of the present invention, reference will be made to the following detailed description, which is to be read in association with the accompanying drawings, in which:

[0007] Фиг. 1 является блок-схемой, иллюстрирующей физический вид одного примера подходящего вычислительного устройства согласно аспектам описанной технологии;[0007] FIG. 1 is a block diagram illustrating the physical view of one example of a suitable computing device in accordance with aspects of the described technology;

[0008] Фиг. 2 является блок-схемой, иллюстрирующей логический вид примерного вычислительного устройства согласно аспектам описанной технологии;[0008] FIG. 2 is a block diagram illustrating a logical view of an exemplary computing device in accordance with aspects of the described technology;

[0009] Фиг. 3 иллюстрирует примерный процесс согласно аспектам описанной технологии;[0009] FIG. 3 illustrates an exemplary process according to aspects of the described technology;

[0010] Фиг. 4 иллюстрирует другой примерный процесс согласно дополнительным аспектам описанной технологии; и[0010] FIG. 4 illustrates another exemplary process in accordance with additional aspects of the described technology; and

[0011] Фиг. 5 иллюстрирует еще один примерный процесс согласно другим аспектам описанной технологии.[0011] FIG. 5 illustrates yet another exemplary process according to other aspects of the described technology.

Подробное описание изобретенияDetailed description of the invention

[0012] Последующее описание предоставляет конкретные детали для всестороннего понимания и предоставления возможности описания для различных примеров технологии. Специалист в данной области техники поймет, что технология может быть применена на практике без многих из этих деталей. В некоторых случаях, хорошо известные структуры и функции не были показаны или описаны подробно, чтобы избегать ненужного запутывания описания примеров технологии. Предполагается, что терминология, использованная в этом описании, должна интерпретироваться самым широким разумным образом, даже если она используется вместе с подробным описанием некоторых примеров технологии. Хотя некоторые термины могут быть подчеркнуты ниже, любая терминология, предполагающая интерпретацию каким-либо ограниченным образом, должна быть явно и конкретно определена по существу в этом разделе "Подробное описание". На всем протяжении описания и в формуле изобретения последующие термины принимают, по меньшей мере, значения, явно ассоциированные в данном документе, пока контекст не диктует иное. Значения, идентифицированные ниже, необязательно ограничивают термины, а просто предоставляют иллюстративные примеры для терминов. Например, каждый из терминов "основанный на" и "на основе" не является исключительным и является эквивалентом термину "основанный, по меньшей мере, отчасти на" и включает в себя вариант основания на дополнительных факторах, некоторые из которых могут не быть описаны в данном документе. В качестве другого примера, термин "посредством" не является исключительным и является эквивалентом термину "по меньшей мере, отчасти посредством" и включает в себя вариант выполнения посредством дополнительных факторов, некоторые из которых могут не быть описаны в данном документе. Значение для "в" включает в себя "в" и "на". Фраза "в одном варианте осуществления" или "в одном примере", когда используется в данном документе, необязательно ссылается на один и тот же вариант осуществления или пример, хотя она может. Использование конкретных текстовых числовых обозначений не подразумевает существование числовых обозначений с меньшим значением. Например, цитата "виджет, выбранный из группы, состоящей из третьего чего-то и четвертого чего-то", не должен непосредственно подразумевать ни то, что имеется, по меньшей мере, три чего-то, ни то, что имеется, по меньшей мере, четыре чего-то (элемента). Ссылки на единственное число выполняются просто для ясности прочтения и включают в себя множественные ссылки, пока множественные ссылки специально не исключаются. Термин "или" является инклюзивным оператором "или", пока специально не указывается иное. Например, фразы "A или B" означают "A, B, или A и B". Когда используются в данном документе, термины "компонент" и "система" предназначаются, чтобы охватывать аппаратные средства, программное обеспечение или различные сочетания аппаратных средств и программного обеспечения. Таким образом, например, система или компонент могут быть процессом, процессом, выполняющимся на вычислительном устройстве, вычислительным устройством или его фрагментом.[0012] The following description provides specific details for a comprehensive understanding and description of various examples of technology. One of skill in the art will appreciate that the technology can be practiced without many of these details. In some cases, well-known structures and functions have not been shown or described in detail in order to avoid unnecessary obfuscation of the description of technology examples. The terminology used in this specification is intended to be interpreted in the broadest reasonable manner, even if used in conjunction with a detailed description of certain examples of technology. Although some terms may be underlined below, any terminology that is intended to be interpreted in any limited manner should be explicitly and specifically defined per se in this Detailed Description section. Throughout the description and in the claims, subsequent terms take on at least the meanings expressly associated herein, unless the context dictates otherwise. The meanings identified below do not necessarily limit the terms, but merely provide illustrative examples for the terms. For example, each of the terms "based on" and "based on" is non-exclusive and is equivalent to the term "based at least in part on" and includes the option of basing on additional factors, some of which may not be described in this document. As another example, the term "through" is not exclusive and is equivalent to the term "at least in part through" and includes the implementation through additional factors, some of which may not be described here. The value for "in" includes "in" and "at". The phrase "in one embodiment" or "in one example" when used herein does not necessarily refer to the same embodiment or example, although it may. The use of specific textual numerical designations does not imply the existence of numerical designations with a lower value. For example, the quote "a widget selected from a group consisting of a third something and a fourth something" should not directly imply that there are at least three things, nor that there are at least at least four something (element). References to the singular are made merely for readability and include plural references, unless plural references are specifically excluded. The term "or" is an inclusive "or" operator unless specifically stated otherwise. For example, the phrases "A or B" mean "A, B, or A and B". As used herein, the terms "component" and "system" are intended to encompass hardware, software, or various combinations of hardware and software. Thus, for example, a system or component may be a process, a process running on a computing device, a computing device, or a fragment thereof.

[0013] Кратко изложенная, раскрытая технология, в целом, направлена на технологию виртуализации. Описанная технология включает в себя предоставление информации об идентификаторе функции процессора, запрашиваемой посредством, или из, виртуальной машины (VM), виртуализированного приложения, процесса безопасности на основе виртуализации (VBS) в пользовательском режиме, VBS-процесса в режиме ядра или другого гостевого раздела, процессором. Например, такие запросы могут быть сформированы посредством кода, исполняющегося на гостевом виртуальном процессоре в гостевом разделе. Такая информация может быть предоставлена на основе информации, предоставленной априори процессору, например, супервизорным разделом, таким как гипервизор. Описанная технология также включает в себя супервизорный раздел, например, который предоставляет такую информацию процессору, и включает в себя гостевые разделы, которые принимают такую информацию.[0013] Briefly, the disclosed technology is generally directed to virtualization technology. The technology described includes providing information about a processor function ID requested by, or from, a virtual machine (VM), a virtualized application, a user-mode virtualization-based security (VBS) process, a kernel-mode VBS process, or another guest partition, processor. For example, such requests can be generated by code running on a guest virtual processor in a guest partition. Such information may be provided based on information provided a priori to the processor, for example, by a supervisory partition such as a hypervisor. The described technology also includes a supervisory section, for example, which provides such information to the processor, and includes guest sections, which receive such information.

[0014] В некоторых примерах описанная технология может быть применена в системах виртуализации/виртуализированных системах. Например, технология может быть применена вместе с гипервизорами, виртуальными машинами, виртуализированными приложениями, процессами безопасности на основе виртуализации (VBS) в пользовательском режиме, VBS-процессами в режиме ядра и/или т.п. Например, технология может включать в себя предварительное вычисление или иное определение информации об идентификаторе функции процессора посредством гипервизора или другого супервизорного раздела и предоставление определенной информации об идентификаторе функции процессора процессору вычислительного устройства для последующего использования в ответ на запросы информации об идентификаторе функции процессора, например, из гостевого раздела. Например, запросы такой информации из гостевого раздела могут затем быть обработаны процессором без вмешательства супервизорного раздела.[0014] In some examples, the described technology can be applied in virtualization/virtualized systems. For example, the technology can be applied in conjunction with hypervisors, virtual machines, virtualized applications, user-mode virtualization-based security (VBS) processes, kernel-mode VBS processes, and/or the like. For example, the technology may include precalculating or otherwise determining processor function identifier information by a hypervisor or other supervisory partition and providing certain processor function identifier information to a processor of a computing device for later use in response to requests for processor function identifier information, such as from guest section. For example, requests for such information from the guest partition can then be processed by the processor without intervention from the supervisor partition.

[0015] Использование описанной технологии может быть применено, чтобы уменьшать и/или устранять частоту выходов VM или других гостевых выходов, в которых система выходит из исполнения гостевого кода для того, чтобы исполнять код супервизорного раздела. В качестве одного примера гостевого выхода, в ответ на гостевой запрос информации об идентификаторе функции процессора, процесс супервизорного раздела может принимать управление процессором от гостевого раздела, устанавливать регистры идентификатора функции процессора для процессора, затем возвращать управление процессором гостевому разделу.[0015] Using the described technology can be applied to reduce and/or eliminate the frequency of VM exits or other guest exits in which the system exits guest code execution in order to execute supervisory partition code. As one example of a guest exit, in response to a guest request for processor function ID information, a supervisory partition process may take control of the processor from the guest partition, set the processor function identifier registers for the processor, then return processor control to the guest partition.

[0016] В некоторых предыдущих системах виртуализации гостевой выход происходит в ответ на некоторые операции, выполняемые из гостевого раздела. Например, гостевой выход может происходить в ответ на операцию, выполняемую из гостевого раздела, в которой запрашивается идентификатор CPU или другая информация об идентификаторе функции процессора. Такие выходы типично являются "дорогостоящими" с точки зрения времени, мощности и вычислительной производительности. Например, гостевые выходы могут быть ассоциированы с использованием диапазона производительности системы обработки для кода супервизорного раздела (например, непроизводительные издержки) вместо кода гостевого раздела (например, предназначенная рабочая нагрузка). Гостевые выходы могут также быть ассоциированы с дополнительными непроизводительными издержками переключения контекста вследствие перезаписи данных процессора и/или местоположений кэша инструкций с кодом супервизорного раздела и/или т.п.[0016] In some previous virtualization systems, a guest exit occurs in response to certain operations performed from the guest partition. For example, a guest logout may occur in response to an operation performed from a guest partition that requests a CPU ID or other processor function ID information. Such outputs are typically "expensive" in terms of time, power, and computational performance. For example, guest exits can be associated using a processing system performance range for supervisory section code (eg, overhead) instead of guest section code (eg, intended workload). Guest exits may also be associated with additional context switch overhead due to overwriting of processor data and/or instruction cache locations with supervisory partition code and/or the like.

Иллюстративное физическое вычислительное устройствоIllustrative physical computing device

[0017] Фиг. 1 является схемой, иллюстрирующей один пример физического вида вычислительного устройства 100, в котором аспекты технологии могут быть применены на практике. Вычислительное устройство 100 может быть практически любым типом вычислительного устройства общего или специального назначения. Например, вычислительное устройство 100 может быть пользовательским устройством, таким как настольный компьютер, портативный компьютер, планшетный компьютер, устройство отображения, камера, принтер или смартфон. Аналогично, вычислительное устройство 100 может также быть серверным устройством, таким как компьютер сервера приложений, хост-компьютер виртуальных вычислений или компьютер файлового сервера. Вычислительное устройство 100 может также быть IoT-устройством, которое соединяется с сетью, чтобы принимать IoT-услуги. Аналогично, компьютерное устройство 100 может быть примером любого из устройств, иллюстрированных или найденных по ссылке на фиг. 2-5, как обсуждается более подробно ниже. Как иллюстрировано на фиг. 1, вычислительное устройство 100 включает в себя схему 110 обработки, оперативную память 120, контроллер 130 памяти, память 150 для хранения данных, интерфейс 160 ввода, интерфейс 170 вывода и сетевой адаптер 180. Каждый из этих вышеперечисленных компонентов вычислительного устройства 100 включает в себя, по меньшей мере, один элемент аппаратных средств.[0017] FIG. 1 is a diagram illustrating one example of the physical appearance of computing device 100 in which aspects of the technology may be practiced. Computing device 100 can be virtually any type of general purpose or special purpose computing device. For example, computing device 100 may be a user device such as a desktop computer, laptop computer, tablet computer, display device, camera, printer, or smartphone. Similarly, computing device 100 may also be a server device such as an application server computer, a virtual computing host computer, or a file server computer. Computing device 100 may also be an IoT device that connects to a network to receive IoT services. Likewise, computing device 100 may be an example of any of the devices illustrated or found with reference to FIG. 2-5, as discussed in more detail below. As illustrated in FIG. 1, computing device 100 includes processing circuitry 110, main memory 120, memory controller 130, data storage memory 150, input interface 160, output interface 170, and network adapter 180. Each of the above components of computing device 100 includes, at least one piece of hardware.

[0018] Вычислительное устройство 100 включает в себя, по меньшей мере, одну схему 110 обработки, сконфигурированную, чтобы исполнять инструкции, такие как инструкции для реализации описанных в данном документе рабочих нагрузок, процессов или технологии. Схема 110 обработки может включать в себя микропроцессор, микроконтроллер, графический процессор, сопроцессор, программируемую пользователем вентильную матрицу, программируемое логическое устройство, сигнальный процессор или любую другую схему, подходящую для обработки данных. Схема 110 обработки является примером ядра. Вышеупомянутые инструкции, вместе с другими данными (например, массивами данных, метаданными, инструкциями операционной системы и т.д.), могут быть сохранены в оперативной памяти 120 во время работы вычислительного устройства 100. Оперативная память 120 может также включать в себя любое из множества устройств/компонентов для хранения данных, таких как энергозависимые запоминающие устройства, полу-энергозависимые запоминающие устройства, оперативные запоминающие устройства, статические запоминающие устройства, кэши, буферы или другие носители, используемые для хранения информации во время работы. В одном примере оперативная память 120 не удерживает информацию, когда вычислительное устройство 100 выключается. Вместо этого, вычислительное устройство 100 может быть сконфигурировано, чтобы переносить инструкции с энергонезависимого компонента хранения данных (например, компонента 150 хранения данных) в оперативную память 120 как часть первоначальной загрузки или другого процесса загрузки.[0018] Computing device 100 includes at least one processing circuit 110 configured to execute instructions, such as instructions for implementing the workloads, processes, or technology described herein. Processing circuit 110 may include a microprocessor, microcontroller, graphics processor, coprocessor, field programmable gate array, programmable logic device, signal processor, or any other circuit suitable for data processing. The processing circuit 110 is an example of a core. The above instructions, along with other data (eg, datasets, metadata, operating system instructions, etc.), may be stored in main memory 120 during operation of computing device 100. Main memory 120 may also include any of a variety of storage devices/components such as volatile storage devices, semi-volatile storage devices, random access storage devices, static storage devices, caches, buffers, or other media used to store information during operation. In one example, RAM 120 does not retain information when computing device 100 is turned off. Instead, computing device 100 may be configured to migrate instructions from a non-volatile storage component (eg, storage component 150) to RAM 120 as part of an initial boot or other boot process.

[0019] Оперативная память 120 может включать в себя память с двукратной скоростью передачи данных 4-го поколения (DDR4), память с двукратной скоростью передачи данных 3-го поколения (DDR3), другое динамическое оперативное запоминающее устройство (DRAM), память с высокой пропускной способностью (HBM), память типа Hybrid Memory Cube (гибридный куб памяти), 3D-накопительной памятью, статическим оперативным запоминающим устройством (SRAM) или другой памятью, и такая память может содержать одну или более схем памяти, объединенных в DIMM, SIMM, SODIMM или другую компоновку. Такие модули оперативной памяти или устройства могут быть организованы согласно каналам, рядам и банкам. Например, устройства оперативной памяти могут быть соединены со схемой 110 обработки через контроллер 130 памяти в каналах. Один пример вычислительного устройства 100 может включать в себя один или два DIMM на каждый канал, с одним или двумя рядами на каждый канал. Оперативная память в ряду может работать с совместно используемым тактовым генератором и совместно используемой адресной и командной шиной. Также, устройство оперативной памяти могут быть организованы в несколько банков памяти, где банк может пониматься как массив, адресуемый по строке и столбцу. На основе такой организации оперативной памяти физические адреса в оперативной памяти могут быть найдены по ссылке посредством кортежа из канала, ряда, банка, строки и столбца.[0019] The random access memory 120 may include 2x data rate 4th generation (DDR4) memory, 2x data rate 3rd generation (DDR3) memory, other dynamic random access memory (DRAM), memory with high bandwidth (HBM), Hybrid Memory Cube (hybrid memory cube), 3D storage memory, static random access memory (SRAM) or other memory, and such memory may contain one or more memory circuits combined into DIMM, SIMM, SODIMM or other arrangement. Such RAM modules or devices may be organized according to channels, rows and banks. For example, RAM devices may be connected to processing circuitry 110 via memory controller 130 in channels. One example of computing device 100 may include one or two DIMMs per channel, with one or two rows per channel. The RAM in the row can operate with a shared clock generator and a shared address and command bus. Also, a RAM device can be organized into several memory banks, where a bank can be understood as an array addressable by row and column. Based on this arrangement of RAM, physical addresses in RAM can be referenced as a tuple of channel, row, bank, row, and column.

[0020] Несмотря на вышеприведенное описание, оперативная память 120, в частности, не включает в себя или не охватывает среду передачи данных, любой канал передачи данных или любые сигналы сами по себе.[0020] Notwithstanding the foregoing description, RAM 120 specifically does not include or cover a communication medium, any communication channel, or any signals per se.

[0021] Контроллер 130 памяти приспособлен сопрягать схему 110 обработки с оперативной памятью 120. Например, контроллер 130 памяти может быть сконфигурирован согласовывать команды, адреса и данные между оперативной памятью 120 и схемой 110 обработки. Контроллер 130 памяти может также быть сконфигурирован абстрагировать или иначе организовывать некоторые аспекты управления памятью от или для схемы 110 обработки. Хотя контроллер 130 памяти иллюстрируется как одиночный контроллер памяти, отдельный от схемы 110 обработки, в других примерах множество контроллеров памяти могут быть применены, контроллер(ы) памяти могут быть объединены с оперативной памятью 120, или т.п. Дополнительно, контроллер(ы) памяти могут быть объединены в схему 110 обработки. Эти и другие варианты являются возможными.[0021] The memory controller 130 is adapted to interface the processing circuit 110 with the main memory 120. For example, the memory controller 130 can be configured to match commands, addresses, and data between the main memory 120 and the processing circuit 110. Memory controller 130 may also be configured to abstract or otherwise orchestrate certain aspects of memory management from or to processing circuitry 110 . While memory controller 130 is illustrated as a single memory controller separate from processing circuitry 110, in other examples, multiple memory controllers may be used, memory controller(s) may be combined with main memory 120, or the like. Additionally, the memory controller(s) may be combined in the processing circuit 110 . These and other options are possible.

[0022] В вычислительном устройстве 100 память 150 для хранения данных, интерфейс 160 ввода, интерфейс 170 вывода и сетевой адаптер 180 связываются со схемой 110 обработки посредством шины 140. Хотя фиг. 1 иллюстрирует шину 140 как отдельную пассивную шину, другие конфигурации, такие как совокупность шин, совокупность двухточечных линий связи, контроллер ввода/вывода, мост, другая интерфейсная схема или любая их совокупность могут также быть подходящим образом применены для связывания памяти 150 для хранения данных, интерфейса 160 ввода, интерфейса 170 вывода или сетевого адаптера 180 со схемой 110 обработки.[0022] In computing device 100, data storage memory 150, input interface 160, output interface 170, and network adapter 180 communicate with processing circuitry 110 via bus 140. Although FIG. 1 illustrates bus 140 as a separate passive bus, other configurations such as a bus array, a point-to-point link array, an I/O controller, a bridge, other interface circuitry, or any combination thereof may also be appropriately applied to link memory 150 for data storage, input interface 160, output interface 170, or network adapter 180 with processing circuit 110.

[0023] В вычислительном устройстве 100 память 150 для хранения данных применяется для долговременного энергонезависимого хранения данных. Память 150 для хранения данных может включать в себя множество энергонезависимых устройств/компонентов для хранения данных, таких как энергонезависимые запоминающие устройства, диски, дисковые накопители, накопители на жестких дисках, твердотельные накопители или любые другие носители, которые могут быть использованы для энергонезависимого хранения информации. Однако, память 150 для хранения данных, в частности, не включает в себя или не охватывает среду передачи данных, любой канал передачи данных или любые сигналы сами по себе. В противоположность оперативной памяти 120, память 150 для хранения данных применяется вычислительным устройством 100 для энергонезависимого долговременного хранения данных, вместо хранения данных во время работы.[0023] In the computing device 100, the storage memory 150 is used for long-term, non-volatile storage of data. Storage memory 150 may include a variety of non-volatile storage devices/components such as non-volatile storage devices, disks, disk drives, hard drives, solid state drives, or any other media that can be used for non-volatile storage of information. However, the data memory 150 specifically does not include or cover a communication medium, any communication channel, or any signals per se. In contrast to the main memory 120, the data storage 150 is used by the computing device 100 for non-volatile long-term storage of data, instead of storing data during operation.

[0024] Также, вычислительное устройство 100 может включать в себя или быть соединено с любым типом процессорно-читаемых носителей, такими как процессорно-читаемые носители хранения информации (например, оперативная память 120 и память 150 для хранения данных) и среда передачи данных (например, сигналы связи и радиоволны). В то время как термин "процессорно-читаемые носители хранения информации" включает в себя оперативную память 120 и память 150 для хранения данных, термин "процессорно-читаемые носители хранения информации", повсюду в спецификации и в формуле изобретения, используется ли в единственном или множественном числе, определяется в данном документе таким образом, что термин "процессорно-читаемые носители хранения информации", в частности, исключает и не охватывает среду передачи данных, любой канал передачи данных или любые сигналы сами по себе. Однако, термин "процессорно-читаемые носители хранения информации" охватывает кэш процессора, оперативное запоминающее устройство (RAM), регистровую память и/или т.п. [0024] Also, computing device 100 may include or be coupled to any type of processor-readable media, such as processor-readable storage media (eg, main memory 120 and storage memory 150) and communication media (eg, , communication signals and radio waves). While the term "processor-readable storage media" includes main memory 120 and data storage 150, the term "processor-readable storage media" throughout the specification and claims, whether used in singular or plural including, is defined herein such that the term "processor-readable storage media" specifically excludes and does not cover a communication medium, any communication channel, or any signals per se. However, the term "processor-readable storage media" encompasses a processor's cache, random access memory (RAM), register memory, and/or the like.

[0025] Вычислительное устройство 100 также включает в себя интерфейс 160, который может быть сконфигурирован, чтобы предоставлять возможность вычислительному устройству 100 принимать входные данные от пользователей или от других устройств. Кроме того, вычислительное устройство 100 включает в себя интерфейс 170 вывода, который может быть сконфигурирован, чтобы предоставлять выходные данные из вычислительного устройства 100. В одном примере интерфейс 170 вывода включает в себя буфер кадров, графический процессор, графический процессор или акселератор и конфигурируется, чтобы воспроизводить отображения для представления на отдельном устройстве визуального отображения (таком как монитор, проектор, виртуальный вычислительный клиентский компьютер и т.д.). В другом примере интерфейс 170 вывода включает в себя устройство визуального отображения и конфигурируется, чтобы воспроизводить и представлять отображения для просмотра. В еще одном примере интерфейс 160 ввода и/или интерфейс 170 вывода могут включать в себя универсальный асинхронный приемник/передатчик ("UART"), последовательный периферийный интерфейс ("SPI"), шину для соединения интегральных схем ("IIC"), ввод/вывод общего назначения (GPIO) и/или т.п. Кроме того, интерфейс 160 ввода и/или интерфейс 170 вывода могут включать в себя или быть связаны с любым числом или типом периферийных устройств.[0025] Computing device 100 also includes an interface 160 that can be configured to allow computing device 100 to receive input from users or other devices. In addition, computing device 100 includes an output interface 170 that may be configured to provide output from computing device 100. In one example, output interface 170 includes a framebuffer, graphics processor, graphics processor, or accelerator and is configured to render displays for presentation on a separate visual display device (such as a monitor, projector, virtual client computer, etc.). In another example, output interface 170 includes a display device and is configured to render and present displays for viewing. In yet another example, input interface 160 and/or output interface 170 may include a universal asynchronous receiver/transmitter ("UART"), a serial peripheral interface ("SPI"), an integrated circuit interconnect ("IIC") bus, input/ general purpose output (GPIO) and/or the like. In addition, input interface 160 and/or output interface 170 may include or be associated with any number or type of peripheral devices.

[0026] В иллюстрированном примере вычислительное устройство 100 конфигурируется для связи с другими вычислительными устройствами или объектами через сетевой адаптер 180. Сетевой адаптер 180 может включать в себя адаптер проводной сети, например, Ethernet-адаптер, адаптер Token Ring, или адаптер цифровой абонентской линии (DSL). Сетевой адаптер 180 может также включать в себя адаптер беспроводной сети, например, адаптер Wi-Fi, адаптер Bluetooth, адаптер ZigBee, адаптер стандарта "Долгосрочное развитие" (LTE) или 5G-адаптер.[0026] In the illustrated example, computing device 100 is configured to communicate with other computing devices or entities via network adapter 180. Network adapter 180 may include a wired network adapter, such as an Ethernet adapter, a Token Ring adapter, or a digital subscriber line adapter ( DSL). The network adapter 180 may also include a wireless network adapter, such as a Wi-Fi adapter, a Bluetooth adapter, a ZigBee adapter, a Long Term Evolution (LTE) adapter, or a 5G adapter.

[0027] Хотя вычислительное устройство 100 иллюстрируется с некоторыми компонентами, сконфигурированными в конкретной компоновке, эти компоненты и компоновка являются просто одним примером вычислительного устройства, в котором технология может быть применена. В других примерах память 150 для хранения данных, интерфейс 160 ввода, интерфейс 170 вывода или сетевой адаптер 180 могут быть непосредственно соединены со схемой 110 обработки, или быть соединены со схемой 110 обработки через контроллер ввода/вывода, мост или другую интерфейсную схему. Другие варианты технологии являются возможными.[0027] Although computing device 100 is illustrated with some components configured in a particular arrangement, these components and arrangement are merely one example of a computing device in which the technology may be applied. In other examples, storage memory 150, input interface 160, output interface 170, or network adapter 180 may be directly connected to processing circuit 110, or connected to processing circuit 110 via an I/O controller, bridge, or other interface circuit. Other technology options are possible.

[0028] Некоторые примеры вычислительного устройства 100 включают в себя, по меньшей мере, одну память (например, оперативную память 120), приспособленную для хранения данных во время работы, и, по меньшей мере, один процессор (например, процессор 110), который является приспособленным, чтобы выполнять процессорно-исполняемый код, который, в ответ на исполнение, предоставляет возможность вычислительному устройству 100 выполнять действия.[0028] Some examples of computing device 100 include at least one memory (eg, main memory 120) adapted to store data during operation, and at least one processor (eg, processor 110) that is adapted to execute processor-executable code that, in response to execution, enables computing device 100 to perform actions.

Иллюстративное логическое вычислительное устройствоExemplary Logic Computing Device

[0029] Фиг. 2 является схемой, иллюстрирующей один пример логического вида вычислительного устройства 200, в котором аспекты технологии могут быть применены на практике. Вычислительное устройство 200 может быть примером вычислительного устройства 100 на фиг. 1 В иллюстрации на фиг. 2 логические компоненты вычислительного устройства 200 включают в себя гостевые разделы 211-213, супервизорный раздел 230, физические ресурсы 241-243 и идентификатор 250 функции процессора.[0029] FIG. 2 is a diagram illustrating one example of a logical view of computing device 200 in which aspects of the technology may be practiced. Computing device 200 may be an example of computing device 100 in FIG. 1 In the illustration in FIG. 2, the logical components of the computing device 200 include guest partitions 211-213, a supervisor partition 230, physical resources 241-243, and a processor function identifier 250.

[0030] Физические ресурсы 241-243 могут включать в себя любое множество физических компонентов, таких как компоненты процессора, компоненты ввода/вывода (I/O) и/или другие компоненты или устройства. Например, физические ресурсы 241-243 могут включать в себя любое подходящее сочетание физических компонентов, таких как ресурсы, обсужденные вместе с фиг. 1. Хотя иллюстрируется как часть вычислительного устройства 200, один или более физических ресурсов 241-243 (например, одно или более запоминающих устройств для хранения данных) могут быть реализованы внешне по отношению к вычислительному устройству 200. Различные компоненты или модули, работающие в вычислительном устройстве 200, включающие в себя супервизорный раздел 230, могут осуществлять доступ к функциональной возможности(ям), предоставляемым посредством физических ресурсов 241-243 непосредственно и/или опосредованно через другие компоненты или модули.[0030] Physical resources 241-243 may include any number of physical components, such as processor components, input/output (I/O) components, and/or other components or devices. For example, physical resources 241-243 may include any suitable combination of physical components, such as the resources discussed with FIG. 1. Although illustrated as part of computing device 200, one or more physical resources 241-243 (eg, one or more storage devices) may be implemented external to computing device 200. Various components or modules operable in computing device 200 including supervisory section 230 may access functionality(s) provided by physical resources 241-243 directly and/or indirectly through other components or modules.

[0031] Супервизорный раздел 230 может формировать любое число гостевых разделов, например, гостевые разделы 211-213. Каждый из гостевых разделов 211-213 может быть VM, виртуализированным приложением, средой исполнения VBS, процессом в пользовательском режиме и/или т.п. Например, гостевой раздел 211 иллюстрируется как VM с операционной системой (OS) 221 и приложением 222, гостевой раздел 212 иллюстрируется как виртуализированное приложение 223, и гостевой раздел 213 иллюстрируется как имеющий процесс 224, исполняющийся из него.[0031] The supervisory partition 230 may form any number of guest partitions, such as guest partitions 211-213. Each of the guest partitions 211-213 may be a VM, a virtualized application, a VBS runtime, a user-mode process, and/or the like. For example, guest partition 211 is illustrated as a VM with operating system (OS) 221 and application 222, guest partition 212 is illustrated as virtualized application 223, and guest partition 213 is illustrated as having process 224 executing from it.

[0032] Каждый из гостевых разделов 211-213 является логическим блоком изоляции, из которого исполняется операционная система и/или другое программное обеспечение. Каждый из гостевых разделов 211-213 может также включать в себя гостевой виртуальный процессор. Программное обеспечение, исполняющееся в каждом из гостевых разделов 211-213, изолируется от программного обеспечения, исполняющегося в каждом из других гостевых разделов. Например, программное обеспечение, исполняющееся в каждом из гостевых разделов 211-213, не имеет возможности осуществлять доступ, и не должно знать, о программном обеспечении, исполняющемся в каждом из других гостевых разделов. Физические ресурсы 241-243 виртуализируются в гостевых разделах 211-213, и управление доступом к физическим ресурсам 241-243 осуществляется посредством супервизорного раздела 230.[0032] Each of the guest partitions 211-213 is a logical isolation unit from which an operating system and/or other software is executed. Each of the guest partitions 211-213 may also include a guest virtual processor. The software running in each of the guest partitions 211-213 is isolated from the software running in each of the other guest partitions. For example, software running in each of the guest partitions 211-213 is unable to access, and need not know, software running in each of the other guest partitions. The physical resources 241-243 are virtualized in the guest partitions 211-213 and access to the physical resources 241-243 is controlled by the supervisor partition 230.

[0033] Как иллюстрировано, вычислительное устройство 100 включает в себя супервизорный раздел 230. Супервизорный раздел 230 может включать в себя гипервизор, такой как монитор виртуальной машины, который управляет доступом к функциональным возможностям, предоставляемым посредством физических ресурсов 241-243. В другом примере супервизорный раздел 230 является ядром или процессом в режиме ядра для OS, такой как OS, которая использует VBS.[0033] As illustrated, computing device 100 includes a supervisory partition 230. Supervisory partition 230 may include a hypervisor, such as a virtual machine monitor, that controls access to functionality provided by physical resources 241-243. In another example, supervisory partition 230 is a kernel or kernel-mode process for an OS, such as an OS that uses VBS.

[0034] Вычислительное устройство 200 также включает в себя один или более идентификаторов 250 функций процессора. Например, идентификатор 250 функции процессора может представлять регистр идентификаторов физических аппаратных средств (или набор регистров) для физического процессора, такой как регистр (или набор регистров), содержащий листовую информацию об идентификаторе x86 CPU, ID-регистры для процессора типа продвинутого процессора с сокращенным набором команд (ARM) и/или т.п. Идентификатор 250 функции процессора может также представлять функцию, поддерживаемую процессором, набор функций, поддерживаемый процессором, физическую характеристику процессора и/или т.п. Например, идентификатор 250 функции процессора может представлять частоту процессора, поддерживаемый диапазон физических адресов, умножитель тактовой частоты, параметр питания, доступность инструкции, номер степпинга, серийный номер и/или т.п.[0034] Computing device 200 also includes one or more processor function identifiers 250. For example, processor function identifier 250 may represent a physical hardware identifier register (or register set) for a physical processor, such as a register (or register set) containing leaf information about an x86 CPU ID, ID registers for an advanced processor type reduced set commands (ARM) and/or the like. The processor feature identifier 250 may also represent a feature supported by the processor, a feature set supported by the processor, a physical characteristic of the processor, and/or the like. For example, processor function identifier 250 may represent the processor frequency, supported physical address range, clock multiplier, power setting, instruction availability, stepping number, serial number, and/or the like.

Иллюстративные процессыIllustrative Processes

[0035] Для ясности, процессы, описанные в данном документе, описываются с точки зрения операций, выполняемых в конкретных последовательностях конкретными устройствами или компонентами системы. Однако, отметим, что другие процессы не ограничиваются изложенными последовательностями, устройствами или компонентами. Например, некоторые действия могут быть выполнены в других последовательностях, параллельно, пропущены или могут быть пополнены дополнительными действиями или признаками, описаны или нет такие последовательности, параллелизмы, действия или признаки в данном документе. Аналогично, любая из технологий, описанных в этом описании, может быть объединена в описанные процессы или другие процессы, описывается или нет эта технология конкретно вместе с процессом. Описанные процессы могут также быть выполнены на или посредством других устройств, компонентов или систем, описываются или нет такие устройства, компоненты или системы в данном документе. Эти процессы могут также быть осуществлены множеством способов. Например, они могут быть осуществлены на изделии производства, например, как процессорно-читаемые инструкции, сохраненные на процессорно-читаемом носителе хранения информации, или выполняться как компьютерно-реализованный процесс. В качестве альтернативного примера, эти процессы могут быть закодированы как процессорно-исполняемые инструкции и передаваться по каналу передачи данных.[0035] For clarity, the processes described herein are described in terms of operations performed in specific sequences by specific devices or system components. However, it should be noted that other processes are not limited to the recited sequences, devices, or components. For example, some actions may be performed in other sequences, in parallel, omitted, or may be supplemented with additional actions or features, whether or not such sequences, parallelisms, acts, or features are described herein. Likewise, any of the technologies described in this specification may be combined into the described processes or other processes, whether or not the technology is specifically described along with the process. The described processes may also be performed on or by other devices, components or systems, whether or not such devices, components or systems are described herein. These processes can also be carried out in a variety of ways. For example, they may be implemented on an article of manufacture, for example, as processor-readable instructions stored on a processor-readable storage medium, or executed as a computer-implemented process. As an alternative example, these processes may be encoded as processor-executable instructions and transmitted over a data link.

[0036] Фиг. 3 иллюстрирует примерный процесс 300, который иллюстрируется с точки зрения процессора вычислительного устройства, например, схемы 110 обработки на фиг. 1 или физического ресурса 241, 242, 243 на фиг. 2. Процесс 300 начинается на этапе 381, когда принимается запрос идентификатора функции процессора. Например, данный запрос может быть принят физическим процессором, и этот запрос может происходить из гостевого раздела. Например, этот запрос может быть сформирован посредством кода, исполняющегося в гостевом виртуальном процессоре в гостевом разделе.[0036] FIG. 3 illustrates an exemplary process 300 that is illustrated from the perspective of a processor of a computing device, such as processing circuit 110 in FIG. 1 or physical resource 241, 242, 243 in FIG. 2. Process 300 begins at 381 when a processor function identifier request is received. For example, a given request may be accepted by a physical processor, and this request may originate from a guest partition. For example, this request may be generated by code executing in a guest virtual processor in the guest partition.

[0037] С этапа 381 обработка переходит на этап 382, когда, например, процессор отыскивает идентификатор функции процессора. В одном примере процессор отыскивает идентификатор функции процессора в регистре идентификатора функции процессора, в структуре памяти, доступной процессору, в таблице поиска идентификатора функции процессора и/или т.п. Этот поиск может также быть основан на информации, которая была предоставлена априори процессору гипервизором или другим супервизорным разделом, например, как дополнительно обсуждается вместе с процессом 400 на фиг. 4.[0037] From block 381, processing proceeds to block 382 when, for example, the processor looks up a processor function identifier. In one example, the processor looks up the processor's function identifier in the processor's function identifier register, in the memory structure available to the processor, in the processor's function identifier lookup table, and/or the like. This lookup may also be based on information that has been provided a priori to the processor by the hypervisor or other supervisory partition, for example, as further discussed with process 400 in FIG. four.

[0038] Обработка затем переходит к этапу 383, когда идентификатор функции процессора предоставляется, например, без гостевого выхода. Это может включать в себя предоставление процессором запрошенного идентификатора функции процессора гостевому разделу, например, запрашивающему процессу из гостевого раздела. Предоставленный идентификатор функции процессора может основываться на информации, которая была предоставлена априори процессору. Следом за этапом 383 обработка возвращается к другим операциям.[0038] Processing then proceeds to block 383 when the processor function identifier is provided, for example, without a guest exit. This may include providing the processor with the requested processor function identifier to a guest partition, such as a requesting process from the guest partition. The provided processor function identifier may be based on information that has been provided a priori to the processor. Following block 383, processing returns to other operations.

[0039] Фиг. 4 иллюстрирует примерный процесс 400, который иллюстрируется с точки зрения супервизорного раздела, например, гипервизора. Например, процесс 400 иллюстрируется с точки зрения супервизорного раздела 230 на фиг. 2.[0039] FIG. 4 illustrates an exemplary process 400, which is illustrated from the perspective of a supervisory partition, such as a hypervisor. For example, process 400 is illustrated from the perspective of supervisory section 230 in FIG. 2.

[0040] Процесс 400 начинается на этапе 481, когда получают значение для идентификатора функции процессора. Это значение может быть получено супервизорным разделом вместе с, или в ответ на, операцию настройки, по меньшей мере, для одного гостевого раздела, гостевого виртуального процессора или виртуального уровня доверия гостевого виртуального процессора. Например, такая операция настройки может включать в себя, по меньшей мере, одно из формирования, создания экземпляра или запуска гостевого раздела, гостевого виртуального процессора или виртуального уровня доверия гостевого виртуального процессора. Значение может быть получено, например, посредством считывания значения регистра аппаратных средств физического процессора вычислительного устройства. В качестве одного примера, полученное значение идентификатора функции процессора может быть значением, назначенным производителем физического процессора (например, значением в микросхеме), и/или быть представляющим и/или указывающим функцию/набор функций, поддерживаемые процессором.[0040] Process 400 begins at 481 when a value for a processor function identifier is obtained. This value may be obtained by the supervisory partition along with, or in response to, a setup operation for at least one guest partition, guest virtual processor, or guest virtual processor virtual trust level. For example, such a setup operation may include at least one of generating, instantiating, or starting a guest partition, a guest virtual processor, or a guest virtual processor virtual trust level. The value may be obtained, for example, by reading the value of a hardware register of the physical processor of the computing device. As one example, the derived processor feature identifier value may be a value assigned by the physical processor manufacturer (eg, a chip value) and/or be representative and/or indicative of a feature/feature set supported by the processor.

[0041] Обработка, в необязательном порядке, переходит к этапу 482, когда идентификатор функции процессора, который должен быть сохранен, вычисляется или определяется иным образом. Например, этап 482 может включать в себя определение того, должно ли полученное значение идентификатора функции процессора быть сохранено без изменения, или должно ли другое значение быть сохранено. Например, другое значение может быть сохранено, если супервизорный раздел должен "предлагать" другой набор функций процессора для гостевого раздела по сравнению с собственно поддерживаемым процессором, например, для улучшенной переносимости, производительности и/или по другим причинам. На этапе 482 множество значений для полученного значения идентификатора функции процессора может также быть определено, например, каждое ассоциируется с и/или указывается для разного гостевого раздела и/или гостевого виртуального процессора и/или контекстов уровня доверия. В некоторых примерах различные значения идентификатора функции процессора могут быть применены в контексте каждого виртуального процессора или контексте виртуального уровня доверия виртуального процессора. Примерами каждого контекста виртуального процессора или контекста виртуального уровня доверия виртуального процессора являются структура управления виртуальной машиной (VMCS), блок управления виртуальной машиной (VMCB), набор системных регистров, содержащих гостевой контекст, или другая характерная для архитектуры, заданной инструкцией виртуализации, совокупность гостевого контекста.[0041] Processing optionally proceeds to block 482 when a processor function identifier to be stored is calculated or otherwise determined. For example, block 482 may include determining whether the received value of the processor function identifier should be stored unchanged, or whether a different value should be stored. For example, a different value may be kept if the supervisor partition should "offer" a different set of processor features to the guest partition than the natively supported processor, for example, for improved portability, performance, and/or other reasons. At block 482, a plurality of values for the derived processor function identifier value may also be determined, eg, each is associated with and/or specified for a different guest partition and/or guest virtual processor and/or trust level contexts. In some examples, different processor function identifier values may be applied in the context of each virtual processor or the context of a virtual processor's virtual trust level. Examples of each virtual processor context or virtual processor virtual trust context are a virtual machine control structure (VMCS), a virtual machine control block (VMCB), a set of system registers containing a guest context, or another architecture-specific set of guest contexts specified by the virtualization instruction. .

[0042] Обработка переходит к этапу 483, когда идентификатор функции процесса с этапа 482 предоставляется процессору. Например, супервизорный раздел может предоставлять идентификатор функции процессора, определенный на этапе 482, процессору для последующего использования процессором в ответ на запросы от программного обеспечения гостевого раздела информации об идентификаторе функции процессора. На этапе 483 процессор может также принимать эту информацию об идентификаторе функции процессора от супервизорного раздела.[0042] Processing proceeds to block 483 when the process function identifier from block 482 is provided to the processor. For example, the supervisory partition may provide the processor function identifier determined in step 482 to the processor for later use by the processor in response to requests from the guest partition software for processor function identifier information. At 483, the processor may also receive this processor function identifier information from the supervisory partition.

[0043] Обработка затем переходит к этапу 484. На этапе 484 предоставленный идентификатор функции процессора сохраняется. Например, этап 484 может включать в себя действия посредством супервизорного процесса, которые инструктируют процессору сохранять предоставленный идентификатор функции процессора, и/или действия, предпринимаемые процессором, чтобы выполнять сохранение. Например, это сохранение может включать в себя сохранение идентификатора функции процессора в регистре идентификатора функции процессора, в таблице поиска идентификатора функции процессора в памяти и/или т.п. В еще одном примере код супервизорного раздела может сохранять идентификатор функции процессора посредством инструкции интерфейса процессора, такой как инструкция ID_REGISTER_WRITE.[0043] Processing then proceeds to block 484. At block 484, the provided processor function identifier is stored. For example, block 484 may include actions by the supervisory process that instruct the processor to store the provided processor function identifier and/or actions taken by the processor to perform the store. For example, this storage may include storing a processor function identifier in a processor function identifier register, in a processor function identifier lookup table in memory, and/or the like. In yet another example, the supervisory section code may save a processor function identifier via a processor interface instruction, such as an ID_REGISTER_WRITE instruction.

[0044] В еще одном примере идентификатора функции процессора может быть записан в структуру памяти, доступную процессору, и местоположение этой структуры памяти программируется в регистр процессора. В этом и другом примерах множество структур памяти могут быть применены, например, чтобы предоставлять возможность использования различных значений идентификатора функции процессора для различных гостевых разделов, для различных VMCS, контекстов виртуального процессора, контекстов уровня доверия и/или т.п. В использовании переключение контекста между различными структурами памяти может быть выполнено либо посредством процессора, либо посредством кода 230 супервизорного раздела, например, в ответ на управление переключением процессора с одного гостевого раздела, гостевого виртуального процессора или виртуального уровня доверия гостевого виртуального процессора на другой.[0044] In yet another example, a processor function identifier may be written to a memory structure accessible by the processor, and the location of this memory structure is programmed into a processor register. In this and other examples, a variety of memory structures may be employed, for example, to enable the use of different processor function identifier values for different guest partitions, for different VMCS, virtual processor contexts, trust level contexts, and/or the like. In use, a context switch between different memory structures can be performed either by the processor or by supervisory partition code 230, for example, in response to controlling a processor switch from one guest partition, guest virtual processor, or virtual trust level of the guest virtual processor to another.

[0045] В необязательном порядке, этап 484 может также включать в себя сохранение условных выражений в процессор, которые указывают процессору на соответствующее значение/структуру памяти из множества значений/структур памяти для данного запроса из гостевого раздела. Например, выражение может быть сохранено посредством инструкции, такой как инструкция ID_REGISTER_WRITE(VP_CONTEXT, REGISTER_NAME, CONDITIONAL, VALUE).[0045] Optionally, block 484 may also include storing conditionals to the processor that point the processor to the appropriate value/memory structure of the set of values/memory structures for a given request from the guest partition. For example, an expression may be stored with a statement such as the statement ID_REGISTER_WRITE(VP_CONTEXT, REGISTER_NAME, CONDITIONAL, VALUE).

[0046] Как обсуждалось выше, это сохранение может также предоставлять возможность последующего использования, посредством процессора, идентификатора функции процессора в ответ на запросы из гостевого раздела без инструктирования гостевого выхода. Процесс 400 может повторяться для дополнительных идентификаторов функций процессора, или множество идентификаторов функций процессора могут быть получены, определены, предоставлены и сохранены в одной итерации процесса 400. Следом за этапом 484 обработка возвращается к другим операциям.[0046] As discussed above, this storage may also allow the processor to later use the processor's function identifier in response to requests from the guest partition without instructing the guest to exit. Process 400 may be repeated for additional processor function identifiers, or multiple processor function identifiers may be obtained, determined, provided, and stored in a single iteration of process 400. Following block 484, processing returns to other operations.

[0047] Фиг. 5 иллюстрирует примерный процесс 500, который иллюстрируется с точки зрения гостевого раздела, например, гостевого раздела 211, 212 или 213 на фиг. 2. Процесс 500 начинается на этапе 581, когда выполняется определение, что идентификатор функции процессора должен быть определен. Например, это определение может быть выполнено посредством или в гостевом разделе в ответ на запрос информации об идентификаторе функции процессора от приложения или другого процесса, исполняющегося из гостевого раздела. В качестве другого примера, это определение может представлять запрос посредством виртуальной машины, что идентификатор функции процессора должен быть получен для использования виртуальной машиной.[0047] FIG. 5 illustrates an exemplary process 500 that is illustrated from the perspective of a guest partition, such as guest partition 211, 212, or 213 in FIG. 2. Process 500 begins at step 581 when a determination is made that a processor function identifier is to be determined. For example, this determination may be made by or in the guest partition in response to a request for processor function identifier information from an application or other process executing from the guest partition. As another example, this definition may represent a request by the virtual machine that a processor function identifier be obtained for use by the virtual machine.

[0048] Обработка затем переходит к этапу 582, когда запрос идентификатора функции процессора отправляется из гостевого раздела. Этот запрос может быть отправлен процессору. В ответ на запрос по этапу 582, на этапе 583 идентификатор функции процессора может быть принят от процессора. Как обсуждалось выше, принятый идентификатор функции процессора может быть в соответствии с информацией, которая была предоставлена априори процессору посредством супервизорного раздела. С этапа 583 обработка может переходить к этапу 584, когда принятый идентификатор функции процессора предоставляется запрашивающему, например, приложению или другому процессу в гостевом разделе. Следом за этапом 584 обработка возвращается к другим операциям.[0048] Processing then proceeds to block 582 when a processor function identifier request is sent from the guest partition. This request may be sent to the processor. In response to the request at block 582, at block 583, a processor function identifier may be received from the processor. As discussed above, the received processor function identifier may be in accordance with information that has been provided a priori to the processor via the supervisory section. From block 583, processing may proceed to block 584 when the received processor function identifier is provided to the requester, such as an application or other process in the guest partition. Following block 584, processing returns to other operations.

ЗаключениеConclusion

[0049] В то время как вышеприведенное описание описывает некоторые примеры технологии и описывает оптимальный рассматриваемый режим, независимо от того, как детализированное выше появляется в тексте, технология может быть применена на практике множеством способов. Детали могут изменяться в реализации, в то же время все еще будучи охваченными технологией, описанной в данном документе. Как отмечено выше, конкретная терминология, используемая при описании некоторых отличительных признаков или аспектов технологии, не должна сводиться к подразумеванию, что терминология является переопределенной в данном документе, чтобы ограничиваться какими-либо конкретными характеристиками, отличительными признаками или аспектами, с которыми эта терминология ассоциируется. В целом, термины, используемые в последующей формуле изобретения, не должны истолковываться как ограничивающие технологию конкретными примерами, описанными в данном документе, пока подробное описание явно не определяет такие термины. Соответственно, фактические рамки технологии охватывают не только описанные примеры, но также все эквивалентные способы практического применения или реализации технологии.[0049] While the above description describes some examples of the technology and describes the optimal mode under consideration, regardless of how the detailed above appears in the text, the technology can be practiced in a variety of ways. The details may change in implementation while still being covered by the technology described in this document. As noted above, specific terminology used in describing certain features or aspects of a technology should not be construed as implying that the terminology is redefined in this document to be limited to any particular characteristics, features or aspects with which the terminology is associated. In general, the terms used in the following claims should not be construed as limiting the technology to the specific examples described herein, unless such terms are explicitly defined in the detailed description. Accordingly, the actual scope of the technology encompasses not only the examples described, but also all equivalent ways of practicing or implementing the technology.

Claims (33)

1. Способ поддержки виртуализации, содержащий этапы, на которых:1. A method for supporting virtualization, comprising the steps in which: перед приемом, посредством физического процессора, исходящего из гостевого раздела запроса значения идентификатора (ID) функции процессора:before receiving, by the physical processor, originating from the guest section of the processor function identifier (ID) value request: принимают посредством физического процессора значение ID функции процессора из супервизорного раздела иreceive, by means of the physical processor, the value of the processor function ID from the supervisory partition, and сохраняют посредством физического процессора значение ID функции процессора в аппаратном регистре, доступном посредством физического процессора; storing by the physical processor a value of the processor function ID in a hardware register accessible by the physical processor; принимают посредством физического процессора исходящий из гостевого раздела запрос значения ID функции процессора; иreceiving, by means of the physical processor, an outgoing request from the guest partition for a processor function ID value; and в ответ на данный запрос предоставляют, посредством физического процессора без вмешательства супервизорного раздела, запрошенное значение ID функции процессора в гостевой раздел из упомянутого аппаратного регистра, доступного посредством физического процессора.in response to this request, provide, by the physical processor without the intervention of the supervisory partition, the requested processor function ID value to the guest partition from said hardware register accessible by the physical processor. 2. Способ по п.1, в котором значение ID функции процессора принимается из супервизорного раздела в связи с операцией настройки для по меньшей мере одного из гостевого раздела, гостевого виртуального процессора и виртуального уровня доверия гостевого виртуального процессора, при этом принятое значение ID функции процессора сохраняют посредством физического процессора.2. The method of claim 1, wherein the processor feature ID value is received from the supervisor partition in connection with a setup operation for at least one of the guest partition, the guest virtual processor, and the guest virtual processor virtual trust level, wherein the received processor feature ID value stored by the physical processor. 3. Способ по п.2, в котором операция настройки по меньшей мере одного из гостевого раздела, гостевого виртуального процессора и виртуального уровня доверия гостевого виртуального процессора включает в себя по меньшей одно из формирования, создания экземпляра и запуска этого по меньшей мере одного из гостевого раздела, гостевого виртуального процессора и виртуального уровня доверия гостевого виртуального процессора.3. The method of claim 2, wherein the step of setting at least one of the guest partition, the guest virtual processor, and the virtual trust level of the guest virtual processor includes at least one of forming, instantiating, and running the at least one of the guest virtual processor. partition, guest virtual processor, and virtual trust level of the guest virtual processor. 4. Способ по п.1, в котором значение ID функции процессора представляет поддержку первой функции, которая исходно не поддерживается физическим процессором, или отсутствие поддержки второй функции, которая исходно поддерживается физическим процессором.4. The method of claim 1, wherein the processor feature ID value represents support for a first feature that is not natively supported by the physical processor, or lack of support for a second feature that is natively supported by the physical processor. 5. Способ по п.1, в котором значение ID функции процессора отличается от значения, присвоенного производителем физического процессора.5. The method of claim 1, wherein the value of the processor function ID is different from the value assigned by the manufacturer of the physical processor. 6. Способ по п.1, в котором значение ID функции процессора задается для структуры управления виртуальной машиной (VMCS) или блока управления виртуальной машиной (VMCB), причем разное значение ID функции процессора задается для разной VMCS или VMCB.6. The method of claim 1, wherein a processor function ID value is set to a virtual machine control structure (VMCS) or a virtual machine control block (VMCB), wherein a different processor function ID value is set to a different VMCS or VMCB. 7. Способ по п.1, в котором значение ID функции процессора задается для виртуального процессора или контекста виртуального уровня доверия виртуального процессора, при этом разное значение ID функции процессора задается для разного виртуального процессора или контекста виртуального уровня доверия виртуального процессора.7. The method of claim 1, wherein a processor function ID value is set for a virtual processor or virtual processor virtual trust context, wherein a different processor function ID value is set for a different virtual processor or virtual processor virtual trust context. 8. Вычислительное устройство, содержащее:8. Computing device containing: память и процессор, которые соответственно выполнены с возможностью хранить и исполнять инструкции, включающие в себя инструкции для предписания вычислительному устройству выполнять операции, содержащие:a memory and a processor, which are respectively configured to store and execute instructions, including instructions for causing a computing device to perform operations comprising: перед запросом от программного обеспечения, исполняющегося в гостевом разделе, на предмет информации об идентификаторе (ID) функции процессора, определение, посредством супервизорного раздела, информации об идентификаторе функции процессора, которая должна быть возвращена процессором в ответ на запрос от программного обеспечения, исполняющегося в гостевом разделе, на предмет информации об идентификаторе функции процессора; иbefore being asked by software running in the guest partition for processor function identifier (ID) information, determining, by means of the supervisory partition, the processor function ID information to be returned by the processor in response to a request from software running in the guest section for information about the processor function identifier; and предоставление, посредством супервизорного раздела, этой определенной информации об идентификаторе функции процессора в процессор для сохранения посредством процессора в аппаратном регистре и для последующего использования процессором в ответ на запросы от упомянутого программного обеспечения на предмет информации об идентификаторе функции процессора из аппаратного регистра без вмешательства супервизорного раздела.providing, by means of the supervisory section, this specific processor function identifier information to the processor for storage by the processor in a hardware register and for subsequent use by the processor in response to requests from said software for processor function identifier information from the hardware register without intervention of the supervisory section. 9. Вычислительное устройство по п.8, в котором операции дополнительно содержат сохранение, посредством процессора, предоставленной информации об идентификаторе функции процессора для последующего использования процессором в ответ на запросы от упомянутого программного обеспечения на предмет информации об идентификаторе функции процессора.9. The computing device of claim 8, wherein the operations further comprise storing, by the processor, provided processor function identifier information for later use by the processor in response to requests from said software for processor function identifier information. 10. Вычислительное устройство по п.8, при этом предоставленная информация об идентификаторе функции процессора сохраняется в регистре идентификатора функции процессора упомянутого процессора.10. The computing device of claim 8, wherein the provided processor function identifier information is stored in the processor function identifier register of said processor. 11. Вычислительное устройство по п.8, в котором операции дополнительно содержат:11. The computing device according to claim 8, in which the operations further comprise: прием, посредством процессора от упомянутого программного обеспечения, запроса информации об идентификаторе функции процессора; иreceiving, by the processor from said software, a request for processor function identifier information; and в ответ на этот запрос, предоставление, посредством процессора, запрошенной информации об идентификаторе функции процессора на основе информации об идентификаторе функции процессора, предоставленной посредством супервизорного раздела.in response to the request, providing, by the processor, the requested processor function identifier information based on the processor function identifier information provided by the supervisory section. 12. Вычислительное устройство по п.8, при этом информация об идентификаторе функции процессора включает в себя значение ID CPU.12. The computing device of claim 8, wherein the processor function ID information includes a CPU ID value. 13. Вычислительное устройство по п.8, при этом информация об идентификаторе функции процессора включает в себя указание поддержки для по меньшей мере одной функции, которая исходно не поддерживается процессором, или указание отсутствия поддержки по меньшей мере одной другой функции, которая исходно поддерживается процессором.13. The computing device of claim 8, wherein the processor feature identifier information includes an indication of support for at least one feature that is not natively supported by the processor, or an indication of lack of support for at least one other feature that is natively supported by the processor. 14. Способ работы виртуальной машины на вычислительном устройстве, содержащий этапы, на которых:14. The method of operation of a virtual machine on a computing device, containing the steps at which: определяют посредством виртуальной машины, исполняющейся в вычислительном устройстве, что значение идентификатора (ID) функции процессора должно быть получено для использования виртуальной машиной;determining by a virtual machine executing on the computing device that a processor function identifier (ID) value is to be obtained for use by the virtual machine; отправляют посредством виртуальной машины запрос идентификатора функции процессора в процессор вычислительного устройства; иsending, by means of the virtual machine, a processor function identifier request to the processor of the computing device; and в ответ на данный запрос принимают запрошенный идентификатор функции процессора от процессора, при этом принятый идентификатор функции процессора предоставлен процессором, без вмешательства супервизорного раздела, из информации, сохраненной в аппаратном регистре, доступном для процессора, причем информация, сохраненная в аппаратном регистре, была предоставлена априори в процессор посредством супервизорного раздела.in response to this request, the requested processor function identifier is received from the processor, while the received processor function identifier is provided by the processor, without the intervention of the supervisory section, from information stored in a hardware register accessible to the processor, and the information stored in the hardware register was provided a priori to the processor through the supervisory partition. 15. Способ по п.14, в котором запрошенный идентификатор функции процессора принимается от процессора без выхода виртуальной машины.15. The method of claim 14, wherein the requested processor function identifier is received from the processor without exiting the virtual machine. 16. Способ по п.14, в котором идентификатор функции процессора представляет поддержку первой функции процессора, которая исходно не поддерживается процессором, или представляет отсутствие поддержки второй функции процессора, которая исходно поддерживается процессором.16. The method of claim 14, wherein the processor feature identifier represents support for a first processor feature that is not natively supported by the processor, or represents a lack of support for a second processor feature that is natively supported by the processor. 17. Способ по п.14, в котором идентификатор функции процессора является индивидуальным для по меньшей мере одного из виртуальной машины, виртуального процессора и уровня доверия виртуального процессора, при этом другой идентификатор функции процессора является индивидуальным для другой виртуальной машины, виртуального процессора или уровня доверия виртуального процессора в вычислительном устройстве.17. The method of claim 14, wherein the processor function identifier is unique to at least one of the virtual machine, virtual processor, and virtual processor trust level, and the other processor function identifier is unique to another virtual machine, virtual processor, or trust level. virtual processor in a computing device. 18. Способ по п.14, в котором идентификатор функции процессора отличается от значения, присвоенного производителем процессора.18. The method of claim 14, wherein the processor function identifier differs from the value assigned by the processor manufacturer. 19. Способ по п.14, в котором идентификатор функции процессора включает в себя значение ID CPU.19. The method of claim 14, wherein the processor function identifier includes a CPU ID value. 20. Способ по п.14, в котором идентификатор функции процессора был принят в связи с операцией настройки для по меньшей мере одного из виртуальной машины, виртуального процессора и уровня доверия виртуального процессора, при этом операция настройки для по меньшей мере одного из виртуальной машины, виртуального процессора и уровня доверия виртуального процессора включает в себя по меньшей мере одно из формирования, создания экземпляра и запуска виртуальной машины, виртуального процессора или уровня доверия виртуального процессора.20. The method of claim 14, wherein the processor function identifier has been received in connection with a setup operation for at least one of the virtual machine, the virtual processor, and the virtual processor trust level, wherein the setup operation for at least one of the virtual machine, the virtual processor and the virtual processor trust level includes at least one of generating, instantiating and running a virtual machine, a virtual processor, or a virtual processor trust level.
RU2020142519A 2018-05-25 2019-05-13 Response with processor function identifier for virtualization RU2780973C2 (en)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US15/990,310 2018-05-25

Publications (2)

Publication Number Publication Date
RU2020142519A RU2020142519A (en) 2022-06-27
RU2780973C2 true RU2780973C2 (en) 2022-10-04

Family

ID=

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120084777A1 (en) * 2010-10-01 2012-04-05 Microsoft Corporation Virtual Machine and/or Multi-Level Scheduling Support on Systems with Asymmetric Processor Cores
US20150082305A1 (en) * 2013-09-17 2015-03-19 Microsoft Corporation Virtual secure mode for virtual machines
US20160147555A1 (en) * 2014-11-25 2016-05-26 Microsoft Technology Licensing, Llc Hardware Accelerated Virtual Context Switching
WO2018006864A1 (en) * 2016-07-07 2018-01-11 腾讯科技(深圳)有限公司 Method, apparatus and system for creating virtual machine, control device and storage medium

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120084777A1 (en) * 2010-10-01 2012-04-05 Microsoft Corporation Virtual Machine and/or Multi-Level Scheduling Support on Systems with Asymmetric Processor Cores
US20150082305A1 (en) * 2013-09-17 2015-03-19 Microsoft Corporation Virtual secure mode for virtual machines
US20160147555A1 (en) * 2014-11-25 2016-05-26 Microsoft Technology Licensing, Llc Hardware Accelerated Virtual Context Switching
WO2018006864A1 (en) * 2016-07-07 2018-01-11 腾讯科技(深圳)有限公司 Method, apparatus and system for creating virtual machine, control device and storage medium

Similar Documents

Publication Publication Date Title
US10877793B2 (en) Extending the base address register by modifying the number of read-only bits associated with a device to be presented to a guest operating system
US20160239333A1 (en) Apparatus and method for scheduling graphics processing unit workloads from virtual machines
US9715410B2 (en) Protected virtual machine function access
US9483301B2 (en) Dynamic virtual machine function enabling
US10671419B2 (en) Multiple input-output memory management units with fine grained device scopes for virtual machines
CN104794069A (en) User state allocation method and system for cache in CPU
US20210342171A1 (en) Processor feature id response for virtualization
US8751724B2 (en) Dynamic memory reconfiguration to delay performance overhead
US9886387B2 (en) Method and system for performing on-demand data write through based on virtual machine types
EP3807755B1 (en) Resource efficient deployment of multiple hot patches
US10534739B2 (en) Indicating a privilege level
US20200201691A1 (en) Enhanced message control banks
US10983832B2 (en) Managing heterogeneous memory resource within a computing system
RU2780973C2 (en) Response with processor function identifier for virtualization
US20220114086A1 (en) Techniques to expand system memory via use of available device memory
US10127064B2 (en) Read-only VM function chaining for secure hypervisor access
JP7471230B2 (en) Processor Feature ID Response for Virtualization
US10216524B2 (en) System and method for providing fine-grained memory cacheability during a pre-OS operating environment
US10051087B2 (en) Dynamic cache-efficient event suppression for network function virtualization
CN108932205B (en) Method and equipment for defending RowHammer attack
US10180789B2 (en) Software control of state sets