RU2780973C2 - Response with processor function identifier for virtualization - Google Patents
Response with processor function identifier for virtualization Download PDFInfo
- 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
Links
- 230000004044 response Effects 0.000 title claims description 20
- 238000005192 partition Methods 0.000 claims description 61
- 238000005516 engineering process Methods 0.000 abstract description 39
- 239000000126 substance Substances 0.000 abstract 1
- 238000000034 method Methods 0.000 description 42
- 238000004891 communication Methods 0.000 description 8
- 238000010586 diagram Methods 0.000 description 4
- 230000002093 peripheral Effects 0.000 description 2
- 230000003068 static Effects 0.000 description 2
- 101700081816 DDR4 Proteins 0.000 description 1
- 230000002730 additional Effects 0.000 description 1
- UIIMBOGNXHQVGW-UHFFFAOYSA-M buffer Substances [Na+].OC([O-])=O UIIMBOGNXHQVGW-UHFFFAOYSA-M 0.000 description 1
- 230000002708 enhancing Effects 0.000 description 1
- 238000002955 isolation Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000001429 stepping Effects 0.000 description 1
- 230000001702 transmitter Effects 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Images
Abstract
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
[0018] Вычислительное устройство 100 включает в себя, по меньшей мере, одну схему 110 обработки, сконфигурированную, чтобы исполнять инструкции, такие как инструкции для реализации описанных в данном документе рабочих нагрузок, процессов или технологии. Схема 110 обработки может включать в себя микропроцессор, микроконтроллер, графический процессор, сопроцессор, программируемую пользователем вентильную матрицу, программируемое логическое устройство, сигнальный процессор или любую другую схему, подходящую для обработки данных. Схема 110 обработки является примером ядра. Вышеупомянутые инструкции, вместе с другими данными (например, массивами данных, метаданными, инструкциями операционной системы и т.д.), могут быть сохранены в оперативной памяти 120 во время работы вычислительного устройства 100. Оперативная память 120 может также включать в себя любое из множества устройств/компонентов для хранения данных, таких как энергозависимые запоминающие устройства, полу-энергозависимые запоминающие устройства, оперативные запоминающие устройства, статические запоминающие устройства, кэши, буферы или другие носители, используемые для хранения информации во время работы. В одном примере оперативная память 120 не удерживает информацию, когда вычислительное устройство 100 выключается. Вместо этого, вычислительное устройство 100 может быть сконфигурировано, чтобы переносить инструкции с энергонезависимого компонента хранения данных (например, компонента 150 хранения данных) в оперативную память 120 как часть первоначальной загрузки или другого процесса загрузки.[0018]
[0019] Оперативная память 120 может включать в себя память с двукратной скоростью передачи данных 4-го поколения (DDR4), память с двукратной скоростью передачи данных 3-го поколения (DDR3), другое динамическое оперативное запоминающее устройство (DRAM), память с высокой пропускной способностью (HBM), память типа Hybrid Memory Cube (гибридный куб памяти), 3D-накопительной памятью, статическим оперативным запоминающим устройством (SRAM) или другой памятью, и такая память может содержать одну или более схем памяти, объединенных в DIMM, SIMM, SODIMM или другую компоновку. Такие модули оперативной памяти или устройства могут быть организованы согласно каналам, рядам и банкам. Например, устройства оперативной памяти могут быть соединены со схемой 110 обработки через контроллер 130 памяти в каналах. Один пример вычислительного устройства 100 может включать в себя один или два DIMM на каждый канал, с одним или двумя рядами на каждый канал. Оперативная память в ряду может работать с совместно используемым тактовым генератором и совместно используемой адресной и командной шиной. Также, устройство оперативной памяти могут быть организованы в несколько банков памяти, где банк может пониматься как массив, адресуемый по строке и столбцу. На основе такой организации оперативной памяти физические адреса в оперативной памяти могут быть найдены по ссылке посредством кортежа из канала, ряда, банка, строки и столбца.[0019] The
[0020] Несмотря на вышеприведенное описание, оперативная память 120, в частности, не включает в себя или не охватывает среду передачи данных, любой канал передачи данных или любые сигналы сами по себе.[0020] Notwithstanding the foregoing description,
[0021] Контроллер 130 памяти приспособлен сопрягать схему 110 обработки с оперативной памятью 120. Например, контроллер 130 памяти может быть сконфигурирован согласовывать команды, адреса и данные между оперативной памятью 120 и схемой 110 обработки. Контроллер 130 памяти может также быть сконфигурирован абстрагировать или иначе организовывать некоторые аспекты управления памятью от или для схемы 110 обработки. Хотя контроллер 130 памяти иллюстрируется как одиночный контроллер памяти, отдельный от схемы 110 обработки, в других примерах множество контроллеров памяти могут быть применены, контроллер(ы) памяти могут быть объединены с оперативной памятью 120, или т.п. Дополнительно, контроллер(ы) памяти могут быть объединены в схему 110 обработки. Эти и другие варианты являются возможными.[0021] The
[0022] В вычислительном устройстве 100 память 150 для хранения данных, интерфейс 160 ввода, интерфейс 170 вывода и сетевой адаптер 180 связываются со схемой 110 обработки посредством шины 140. Хотя фиг. 1 иллюстрирует шину 140 как отдельную пассивную шину, другие конфигурации, такие как совокупность шин, совокупность двухточечных линий связи, контроллер ввода/вывода, мост, другая интерфейсная схема или любая их совокупность могут также быть подходящим образом применены для связывания памяти 150 для хранения данных, интерфейса 160 ввода, интерфейса 170 вывода или сетевого адаптера 180 со схемой 110 обработки.[0022] In
[0023] В вычислительном устройстве 100 память 150 для хранения данных применяется для долговременного энергонезависимого хранения данных. Память 150 для хранения данных может включать в себя множество энергонезависимых устройств/компонентов для хранения данных, таких как энергонезависимые запоминающие устройства, диски, дисковые накопители, накопители на жестких дисках, твердотельные накопители или любые другие носители, которые могут быть использованы для энергонезависимого хранения информации. Однако, память 150 для хранения данных, в частности, не включает в себя или не охватывает среду передачи данных, любой канал передачи данных или любые сигналы сами по себе. В противоположность оперативной памяти 120, память 150 для хранения данных применяется вычислительным устройством 100 для энергонезависимого долговременного хранения данных, вместо хранения данных во время работы.[0023] In the
[0024] Также, вычислительное устройство 100 может включать в себя или быть соединено с любым типом процессорно-читаемых носителей, такими как процессорно-читаемые носители хранения информации (например, оперативная память 120 и память 150 для хранения данных) и среда передачи данных (например, сигналы связи и радиоволны). В то время как термин "процессорно-читаемые носители хранения информации" включает в себя оперативную память 120 и память 150 для хранения данных, термин "процессорно-читаемые носители хранения информации", повсюду в спецификации и в формуле изобретения, используется ли в единственном или множественном числе, определяется в данном документе таким образом, что термин "процессорно-читаемые носители хранения информации", в частности, исключает и не охватывает среду передачи данных, любой канал передачи данных или любые сигналы сами по себе. Однако, термин "процессорно-читаемые носители хранения информации" охватывает кэш процессора, оперативное запоминающее устройство (RAM), регистровую память и/или т.п. [0024] Also,
[0025] Вычислительное устройство 100 также включает в себя интерфейс 160, который может быть сконфигурирован, чтобы предоставлять возможность вычислительному устройству 100 принимать входные данные от пользователей или от других устройств. Кроме того, вычислительное устройство 100 включает в себя интерфейс 170 вывода, который может быть сконфигурирован, чтобы предоставлять выходные данные из вычислительного устройства 100. В одном примере интерфейс 170 вывода включает в себя буфер кадров, графический процессор, графический процессор или акселератор и конфигурируется, чтобы воспроизводить отображения для представления на отдельном устройстве визуального отображения (таком как монитор, проектор, виртуальный вычислительный клиентский компьютер и т.д.). В другом примере интерфейс 170 вывода включает в себя устройство визуального отображения и конфигурируется, чтобы воспроизводить и представлять отображения для просмотра. В еще одном примере интерфейс 160 ввода и/или интерфейс 170 вывода могут включать в себя универсальный асинхронный приемник/передатчик ("UART"), последовательный периферийный интерфейс ("SPI"), шину для соединения интегральных схем ("IIC"), ввод/вывод общего назначения (GPIO) и/или т.п. Кроме того, интерфейс 160 ввода и/или интерфейс 170 вывода могут включать в себя или быть связаны с любым числом или типом периферийных устройств.[0025]
[0026] В иллюстрированном примере вычислительное устройство 100 конфигурируется для связи с другими вычислительными устройствами или объектами через сетевой адаптер 180. Сетевой адаптер 180 может включать в себя адаптер проводной сети, например, Ethernet-адаптер, адаптер Token Ring, или адаптер цифровой абонентской линии (DSL). Сетевой адаптер 180 может также включать в себя адаптер беспроводной сети, например, адаптер Wi-Fi, адаптер Bluetooth, адаптер ZigBee, адаптер стандарта "Долгосрочное развитие" (LTE) или 5G-адаптер.[0026] In the illustrated example,
[0027] Хотя вычислительное устройство 100 иллюстрируется с некоторыми компонентами, сконфигурированными в конкретной компоновке, эти компоненты и компоновка являются просто одним примером вычислительного устройства, в котором технология может быть применена. В других примерах память 150 для хранения данных, интерфейс 160 ввода, интерфейс 170 вывода или сетевой адаптер 180 могут быть непосредственно соединены со схемой 110 обработки, или быть соединены со схемой 110 обработки через контроллер ввода/вывода, мост или другую интерфейсную схему. Другие варианты технологии являются возможными.[0027] Although
[0028] Некоторые примеры вычислительного устройства 100 включают в себя, по меньшей мере, одну память (например, оперативную память 120), приспособленную для хранения данных во время работы, и, по меньшей мере, один процессор (например, процессор 110), который является приспособленным, чтобы выполнять процессорно-исполняемый код, который, в ответ на исполнение, предоставляет возможность вычислительному устройству 100 выполнять действия.[0028] Some examples of
Иллюстративное логическое вычислительное устройство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
[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
[0031] Супервизорный раздел 230 может формировать любое число гостевых разделов, например, гостевые разделы 211-213. Каждый из гостевых разделов 211-213 может быть VM, виртуализированным приложением, средой исполнения VBS, процессом в пользовательском режиме и/или т.п. Например, гостевой раздел 211 иллюстрируется как VM с операционной системой (OS) 221 и приложением 222, гостевой раздел 212 иллюстрируется как виртуализированное приложение 223, и гостевой раздел 213 иллюстрируется как имеющий процесс 224, исполняющийся из него.[0031] The
[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
[0033] Как иллюстрировано, вычислительное устройство 100 включает в себя супервизорный раздел 230. Супервизорный раздел 230 может включать в себя гипервизор, такой как монитор виртуальной машины, который управляет доступом к функциональным возможностям, предоставляемым посредством физических ресурсов 241-243. В другом примере супервизорный раздел 230 является ядром или процессом в режиме ядра для OS, такой как OS, которая использует VBS.[0033] As illustrated,
[0034] Вычислительное устройство 200 также включает в себя один или более идентификаторов 250 функций процессора. Например, идентификатор 250 функции процессора может представлять регистр идентификаторов физических аппаратных средств (или набор регистров) для физического процессора, такой как регистр (или набор регистров), содержащий листовую информацию об идентификаторе x86 CPU, ID-регистры для процессора типа продвинутого процессора с сокращенным набором команд (ARM) и/или т.п. Идентификатор 250 функции процессора может также представлять функцию, поддерживаемую процессором, набор функций, поддерживаемый процессором, физическую характеристику процессора и/или т.п. Например, идентификатор 250 функции процессора может представлять частоту процессора, поддерживаемый диапазон физических адресов, умножитель тактовой частоты, параметр питания, доступность инструкции, номер степпинга, серийный номер и/или т.п.[0034]
Иллюстративные процессы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
[0037] С этапа 381 обработка переходит на этап 382, когда, например, процессор отыскивает идентификатор функции процессора. В одном примере процессор отыскивает идентификатор функции процессора в регистре идентификатора функции процессора, в структуре памяти, доступной процессору, в таблице поиска идентификатора функции процессора и/или т.п. Этот поиск может также быть основан на информации, которая была предоставлена априори процессору гипервизором или другим супервизорным разделом, например, как дополнительно обсуждается вместе с процессом 400 на фиг. 4.[0037] From
[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
[0039] Фиг. 4 иллюстрирует примерный процесс 400, который иллюстрируется с точки зрения супервизорного раздела, например, гипервизора. Например, процесс 400 иллюстрируется с точки зрения супервизорного раздела 230 на фиг. 2.[0039] FIG. 4 illustrates an
[0040] Процесс 400 начинается на этапе 481, когда получают значение для идентификатора функции процессора. Это значение может быть получено супервизорным разделом вместе с, или в ответ на, операцию настройки, по меньшей мере, для одного гостевого раздела, гостевого виртуального процессора или виртуального уровня доверия гостевого виртуального процессора. Например, такая операция настройки может включать в себя, по меньшей мере, одно из формирования, создания экземпляра или запуска гостевого раздела, гостевого виртуального процессора или виртуального уровня доверия гостевого виртуального процессора. Значение может быть получено, например, посредством считывания значения регистра аппаратных средств физического процессора вычислительного устройства. В качестве одного примера, полученное значение идентификатора функции процессора может быть значением, назначенным производителем физического процессора (например, значением в микросхеме), и/или быть представляющим и/или указывающим функцию/набор функций, поддерживаемые процессором.[0040]
[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
[0042] Обработка переходит к этапу 483, когда идентификатор функции процесса с этапа 482 предоставляется процессору. Например, супервизорный раздел может предоставлять идентификатор функции процессора, определенный на этапе 482, процессору для последующего использования процессором в ответ на запросы от программного обеспечения гостевого раздела информации об идентификаторе функции процессора. На этапе 483 процессор может также принимать эту информацию об идентификаторе функции процессора от супервизорного раздела.[0042] Processing proceeds to block 483 when the process function identifier from
[0043] Обработка затем переходит к этапу 484. На этапе 484 предоставленный идентификатор функции процессора сохраняется. Например, этап 484 может включать в себя действия посредством супервизорного процесса, которые инструктируют процессору сохранять предоставленный идентификатор функции процессора, и/или действия, предпринимаемые процессором, чтобы выполнять сохранение. Например, это сохранение может включать в себя сохранение идентификатора функции процессора в регистре идентификатора функции процессора, в таблице поиска идентификатора функции процессора в памяти и/или т.п. В еще одном примере код супервизорного раздела может сохранять идентификатор функции процессора посредством инструкции интерфейса процессора, такой как инструкция ID_REGISTER_WRITE.[0043] Processing then proceeds to block 484. At
[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
[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.
[0047] Фиг. 5 иллюстрирует примерный процесс 500, который иллюстрируется с точки зрения гостевого раздела, например, гостевого раздела 211, 212 или 213 на фиг. 2. Процесс 500 начинается на этапе 581, когда выполняется определение, что идентификатор функции процессора должен быть определен. Например, это определение может быть выполнено посредством или в гостевом разделе в ответ на запрос информации об идентификаторе функции процессора от приложения или другого процесса, исполняющегося из гостевого раздела. В качестве другого примера, это определение может представлять запрос посредством виртуальной машины, что идентификатор функции процессора должен быть получен для использования виртуальной машиной.[0047] FIG. 5 illustrates an
[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
Заключение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)
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)
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)
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 |