Уровень техники
[0001] Технология виртуализации применяется в широком множестве контекстов. Например, технология виртуализации может быть применена для абстрагирования физических вычислительных ресурсов от гостевых разделов, чтобы предоставлять возможность большего использования физических вычислительных ресурсов, предоставлять возможность переносимости гостевых разделов между физическими устройствами, защищать физические вычислительные ресурсы от злонамеренного и/или ошибочного кода, работающего в гостевых разделах, защищать секреты, обеспечивать соблюдение требований безопасности или политики и/или т.п. В предыдущей технологии виртуализации гостевой выход (например, передача управления процессора от гостевого раздела супервизорному разделу, такому как гипервизор) может происходить в ответ на некоторые операции. Например, гостевой выход может происходить в ответ на запрос информации об идентификаторе функции процессора.
Сущность изобретения
[0002] Это краткое изложение сущности изобретения приведена для того, чтобы в упрощенной форме представить подборку идей, которые дополнительно описываются ниже в подробном описании. Данное краткое изложение сущности изобретения не имеет намерением ни идентифицировать ключевые признаки или важнейшие признаки заявляемого изобретения, ни использоваться для ограничения объема заявляемого изобретения.
[0003] Кратко изложенная, раскрытая технология, в целом, направлена на технологию виртуализации. Описанная технология включает в себя предоставление информации об идентификаторе функции процессора, запрашиваемой посредством, или из, виртуальной машины (VM), виртуализированного приложения, процесса безопасности на основе виртуализации (VBS) в пользовательском режиме, VBS-процесса в режиме ядра или другого гостевого раздела, процессором. Такая информация может быть предоставлена на основе информации, предоставленной априори процессору, например, супервизорным разделом, таким как гипервизор. Описанная технология также включает в себя супервизорный раздел, например, который предоставляет такую информацию процессору, и включает в себя гостевые разделы, которые принимают такую информацию.
[0004] Другие аспекты и применения для описанной технологии будут понятны по прочтении и понимании прилагаемых чертежей и описания.
Краткое описание чертежей
[0005] Неограничивающие и неисключительные примеры настоящего изобретения описываются со ссылкой на следующие чертежи. На чертежах одинаковые ссылочные номера ссылаются на аналогичные части повсюду на различных чертежах, пока не указано иное. Эти чертежи необязательно начерчены в масштабе.
[0006] Для лучшего понимания настоящего изобретения ссылка будет выполнена на следующее подробное описание, которое должно читаться в ассоциации с сопровождающими чертежами, на которых:
[0007] Фиг. 1 является блок-схемой, иллюстрирующей физический вид одного примера подходящего вычислительного устройства согласно аспектам описанной технологии;
[0008] Фиг. 2 является блок-схемой, иллюстрирующей логический вид примерного вычислительного устройства согласно аспектам описанной технологии;
[0009] Фиг. 3 иллюстрирует примерный процесс согласно аспектам описанной технологии;
[0010] Фиг. 4 иллюстрирует другой примерный процесс согласно дополнительным аспектам описанной технологии; и
[0011] Фиг. 5 иллюстрирует еще один примерный процесс согласно другим аспектам описанной технологии.
Подробное описание изобретения
[0012] Последующее описание предоставляет конкретные детали для всестороннего понимания и предоставления возможности описания для различных примеров технологии. Специалист в данной области техники поймет, что технология может быть применена на практике без многих из этих деталей. В некоторых случаях, хорошо известные структуры и функции не были показаны или описаны подробно, чтобы избегать ненужного запутывания описания примеров технологии. Предполагается, что терминология, использованная в этом описании, должна интерпретироваться самым широким разумным образом, даже если она используется вместе с подробным описанием некоторых примеров технологии. Хотя некоторые термины могут быть подчеркнуты ниже, любая терминология, предполагающая интерпретацию каким-либо ограниченным образом, должна быть явно и конкретно определена по существу в этом разделе "Подробное описание". На всем протяжении описания и в формуле изобретения последующие термины принимают, по меньшей мере, значения, явно ассоциированные в данном документе, пока контекст не диктует иное. Значения, идентифицированные ниже, необязательно ограничивают термины, а просто предоставляют иллюстративные примеры для терминов. Например, каждый из терминов "основанный на" и "на основе" не является исключительным и является эквивалентом термину "основанный, по меньшей мере, отчасти на" и включает в себя вариант основания на дополнительных факторах, некоторые из которых могут не быть описаны в данном документе. В качестве другого примера, термин "посредством" не является исключительным и является эквивалентом термину "по меньшей мере, отчасти посредством" и включает в себя вариант выполнения посредством дополнительных факторов, некоторые из которых могут не быть описаны в данном документе. Значение для "в" включает в себя "в" и "на". Фраза "в одном варианте осуществления" или "в одном примере", когда используется в данном документе, необязательно ссылается на один и тот же вариант осуществления или пример, хотя она может. Использование конкретных текстовых числовых обозначений не подразумевает существование числовых обозначений с меньшим значением. Например, цитата "виджет, выбранный из группы, состоящей из третьего чего-то и четвертого чего-то", не должен непосредственно подразумевать ни то, что имеется, по меньшей мере, три чего-то, ни то, что имеется, по меньшей мере, четыре чего-то (элемента). Ссылки на единственное число выполняются просто для ясности прочтения и включают в себя множественные ссылки, пока множественные ссылки специально не исключаются. Термин "или" является инклюзивным оператором "или", пока специально не указывается иное. Например, фразы "A или B" означают "A, B, или A и B". Когда используются в данном документе, термины "компонент" и "система" предназначаются, чтобы охватывать аппаратные средства, программное обеспечение или различные сочетания аппаратных средств и программного обеспечения. Таким образом, например, система или компонент могут быть процессом, процессом, выполняющимся на вычислительном устройстве, вычислительным устройством или его фрагментом.
[0013] Кратко изложенная, раскрытая технология, в целом, направлена на технологию виртуализации. Описанная технология включает в себя предоставление информации об идентификаторе функции процессора, запрашиваемой посредством, или из, виртуальной машины (VM), виртуализированного приложения, процесса безопасности на основе виртуализации (VBS) в пользовательском режиме, VBS-процесса в режиме ядра или другого гостевого раздела, процессором. Например, такие запросы могут быть сформированы посредством кода, исполняющегося на гостевом виртуальном процессоре в гостевом разделе. Такая информация может быть предоставлена на основе информации, предоставленной априори процессору, например, супервизорным разделом, таким как гипервизор. Описанная технология также включает в себя супервизорный раздел, например, который предоставляет такую информацию процессору, и включает в себя гостевые разделы, которые принимают такую информацию.
[0014] В некоторых примерах описанная технология может быть применена в системах виртуализации/виртуализированных системах. Например, технология может быть применена вместе с гипервизорами, виртуальными машинами, виртуализированными приложениями, процессами безопасности на основе виртуализации (VBS) в пользовательском режиме, VBS-процессами в режиме ядра и/или т.п. Например, технология может включать в себя предварительное вычисление или иное определение информации об идентификаторе функции процессора посредством гипервизора или другого супервизорного раздела и предоставление определенной информации об идентификаторе функции процессора процессору вычислительного устройства для последующего использования в ответ на запросы информации об идентификаторе функции процессора, например, из гостевого раздела. Например, запросы такой информации из гостевого раздела могут затем быть обработаны процессором без вмешательства супервизорного раздела.
[0015] Использование описанной технологии может быть применено, чтобы уменьшать и/или устранять частоту выходов VM или других гостевых выходов, в которых система выходит из исполнения гостевого кода для того, чтобы исполнять код супервизорного раздела. В качестве одного примера гостевого выхода, в ответ на гостевой запрос информации об идентификаторе функции процессора, процесс супервизорного раздела может принимать управление процессором от гостевого раздела, устанавливать регистры идентификатора функции процессора для процессора, затем возвращать управление процессором гостевому разделу.
[0016] В некоторых предыдущих системах виртуализации гостевой выход происходит в ответ на некоторые операции, выполняемые из гостевого раздела. Например, гостевой выход может происходить в ответ на операцию, выполняемую из гостевого раздела, в которой запрашивается идентификатор CPU или другая информация об идентификаторе функции процессора. Такие выходы типично являются "дорогостоящими" с точки зрения времени, мощности и вычислительной производительности. Например, гостевые выходы могут быть ассоциированы с использованием диапазона производительности системы обработки для кода супервизорного раздела (например, непроизводительные издержки) вместо кода гостевого раздела (например, предназначенная рабочая нагрузка). Гостевые выходы могут также быть ассоциированы с дополнительными непроизводительными издержками переключения контекста вследствие перезаписи данных процессора и/или местоположений кэша инструкций с кодом супервизорного раздела и/или т.п.
Иллюстративное физическое вычислительное устройство
[0017] Фиг. 1 является схемой, иллюстрирующей один пример физического вида вычислительного устройства 100, в котором аспекты технологии могут быть применены на практике. Вычислительное устройство 100 может быть практически любым типом вычислительного устройства общего или специального назначения. Например, вычислительное устройство 100 может быть пользовательским устройством, таким как настольный компьютер, портативный компьютер, планшетный компьютер, устройство отображения, камера, принтер или смартфон. Аналогично, вычислительное устройство 100 может также быть серверным устройством, таким как компьютер сервера приложений, хост-компьютер виртуальных вычислений или компьютер файлового сервера. Вычислительное устройство 100 может также быть IoT-устройством, которое соединяется с сетью, чтобы принимать IoT-услуги. Аналогично, компьютерное устройство 100 может быть примером любого из устройств, иллюстрированных или найденных по ссылке на фиг. 2-5, как обсуждается более подробно ниже. Как иллюстрировано на фиг. 1, вычислительное устройство 100 включает в себя схему 110 обработки, оперативную память 120, контроллер 130 памяти, память 150 для хранения данных, интерфейс 160 ввода, интерфейс 170 вывода и сетевой адаптер 180. Каждый из этих вышеперечисленных компонентов вычислительного устройства 100 включает в себя, по меньшей мере, один элемент аппаратных средств.
[0018] Вычислительное устройство 100 включает в себя, по меньшей мере, одну схему 110 обработки, сконфигурированную, чтобы исполнять инструкции, такие как инструкции для реализации описанных в данном документе рабочих нагрузок, процессов или технологии. Схема 110 обработки может включать в себя микропроцессор, микроконтроллер, графический процессор, сопроцессор, программируемую пользователем вентильную матрицу, программируемое логическое устройство, сигнальный процессор или любую другую схему, подходящую для обработки данных. Схема 110 обработки является примером ядра. Вышеупомянутые инструкции, вместе с другими данными (например, массивами данных, метаданными, инструкциями операционной системы и т.д.), могут быть сохранены в оперативной памяти 120 во время работы вычислительного устройства 100. Оперативная память 120 может также включать в себя любое из множества устройств/компонентов для хранения данных, таких как энергозависимые запоминающие устройства, полу-энергозависимые запоминающие устройства, оперативные запоминающие устройства, статические запоминающие устройства, кэши, буферы или другие носители, используемые для хранения информации во время работы. В одном примере оперативная память 120 не удерживает информацию, когда вычислительное устройство 100 выключается. Вместо этого, вычислительное устройство 100 может быть сконфигурировано, чтобы переносить инструкции с энергонезависимого компонента хранения данных (например, компонента 150 хранения данных) в оперативную память 120 как часть первоначальной загрузки или другого процесса загрузки.
[0019] Оперативная память 120 может включать в себя память с двукратной скоростью передачи данных 4-го поколения (DDR4), память с двукратной скоростью передачи данных 3-го поколения (DDR3), другое динамическое оперативное запоминающее устройство (DRAM), память с высокой пропускной способностью (HBM), память типа Hybrid Memory Cube (гибридный куб памяти), 3D-накопительной памятью, статическим оперативным запоминающим устройством (SRAM) или другой памятью, и такая память может содержать одну или более схем памяти, объединенных в DIMM, SIMM, SODIMM или другую компоновку. Такие модули оперативной памяти или устройства могут быть организованы согласно каналам, рядам и банкам. Например, устройства оперативной памяти могут быть соединены со схемой 110 обработки через контроллер 130 памяти в каналах. Один пример вычислительного устройства 100 может включать в себя один или два DIMM на каждый канал, с одним или двумя рядами на каждый канал. Оперативная память в ряду может работать с совместно используемым тактовым генератором и совместно используемой адресной и командной шиной. Также, устройство оперативной памяти могут быть организованы в несколько банков памяти, где банк может пониматься как массив, адресуемый по строке и столбцу. На основе такой организации оперативной памяти физические адреса в оперативной памяти могут быть найдены по ссылке посредством кортежа из канала, ряда, банка, строки и столбца.
[0020] Несмотря на вышеприведенное описание, оперативная память 120, в частности, не включает в себя или не охватывает среду передачи данных, любой канал передачи данных или любые сигналы сами по себе.
[0021] Контроллер 130 памяти приспособлен сопрягать схему 110 обработки с оперативной памятью 120. Например, контроллер 130 памяти может быть сконфигурирован согласовывать команды, адреса и данные между оперативной памятью 120 и схемой 110 обработки. Контроллер 130 памяти может также быть сконфигурирован абстрагировать или иначе организовывать некоторые аспекты управления памятью от или для схемы 110 обработки. Хотя контроллер 130 памяти иллюстрируется как одиночный контроллер памяти, отдельный от схемы 110 обработки, в других примерах множество контроллеров памяти могут быть применены, контроллер(ы) памяти могут быть объединены с оперативной памятью 120, или т.п. Дополнительно, контроллер(ы) памяти могут быть объединены в схему 110 обработки. Эти и другие варианты являются возможными.
[0022] В вычислительном устройстве 100 память 150 для хранения данных, интерфейс 160 ввода, интерфейс 170 вывода и сетевой адаптер 180 связываются со схемой 110 обработки посредством шины 140. Хотя фиг. 1 иллюстрирует шину 140 как отдельную пассивную шину, другие конфигурации, такие как совокупность шин, совокупность двухточечных линий связи, контроллер ввода/вывода, мост, другая интерфейсная схема или любая их совокупность могут также быть подходящим образом применены для связывания памяти 150 для хранения данных, интерфейса 160 ввода, интерфейса 170 вывода или сетевого адаптера 180 со схемой 110 обработки.
[0023] В вычислительном устройстве 100 память 150 для хранения данных применяется для долговременного энергонезависимого хранения данных. Память 150 для хранения данных может включать в себя множество энергонезависимых устройств/компонентов для хранения данных, таких как энергонезависимые запоминающие устройства, диски, дисковые накопители, накопители на жестких дисках, твердотельные накопители или любые другие носители, которые могут быть использованы для энергонезависимого хранения информации. Однако, память 150 для хранения данных, в частности, не включает в себя или не охватывает среду передачи данных, любой канал передачи данных или любые сигналы сами по себе. В противоположность оперативной памяти 120, память 150 для хранения данных применяется вычислительным устройством 100 для энергонезависимого долговременного хранения данных, вместо хранения данных во время работы.
[0024] Также, вычислительное устройство 100 может включать в себя или быть соединено с любым типом процессорно-читаемых носителей, такими как процессорно-читаемые носители хранения информации (например, оперативная память 120 и память 150 для хранения данных) и среда передачи данных (например, сигналы связи и радиоволны). В то время как термин "процессорно-читаемые носители хранения информации" включает в себя оперативную память 120 и память 150 для хранения данных, термин "процессорно-читаемые носители хранения информации", повсюду в спецификации и в формуле изобретения, используется ли в единственном или множественном числе, определяется в данном документе таким образом, что термин "процессорно-читаемые носители хранения информации", в частности, исключает и не охватывает среду передачи данных, любой канал передачи данных или любые сигналы сами по себе. Однако, термин "процессорно-читаемые носители хранения информации" охватывает кэш процессора, оперативное запоминающее устройство (RAM), регистровую память и/или т.п.
[0025] Вычислительное устройство 100 также включает в себя интерфейс 160, который может быть сконфигурирован, чтобы предоставлять возможность вычислительному устройству 100 принимать входные данные от пользователей или от других устройств. Кроме того, вычислительное устройство 100 включает в себя интерфейс 170 вывода, который может быть сконфигурирован, чтобы предоставлять выходные данные из вычислительного устройства 100. В одном примере интерфейс 170 вывода включает в себя буфер кадров, графический процессор, графический процессор или акселератор и конфигурируется, чтобы воспроизводить отображения для представления на отдельном устройстве визуального отображения (таком как монитор, проектор, виртуальный вычислительный клиентский компьютер и т.д.). В другом примере интерфейс 170 вывода включает в себя устройство визуального отображения и конфигурируется, чтобы воспроизводить и представлять отображения для просмотра. В еще одном примере интерфейс 160 ввода и/или интерфейс 170 вывода могут включать в себя универсальный асинхронный приемник/передатчик ("UART"), последовательный периферийный интерфейс ("SPI"), шину для соединения интегральных схем ("IIC"), ввод/вывод общего назначения (GPIO) и/или т.п. Кроме того, интерфейс 160 ввода и/или интерфейс 170 вывода могут включать в себя или быть связаны с любым числом или типом периферийных устройств.
[0026] В иллюстрированном примере вычислительное устройство 100 конфигурируется для связи с другими вычислительными устройствами или объектами через сетевой адаптер 180. Сетевой адаптер 180 может включать в себя адаптер проводной сети, например, Ethernet-адаптер, адаптер Token Ring, или адаптер цифровой абонентской линии (DSL). Сетевой адаптер 180 может также включать в себя адаптер беспроводной сети, например, адаптер Wi-Fi, адаптер Bluetooth, адаптер ZigBee, адаптер стандарта "Долгосрочное развитие" (LTE) или 5G-адаптер.
[0027] Хотя вычислительное устройство 100 иллюстрируется с некоторыми компонентами, сконфигурированными в конкретной компоновке, эти компоненты и компоновка являются просто одним примером вычислительного устройства, в котором технология может быть применена. В других примерах память 150 для хранения данных, интерфейс 160 ввода, интерфейс 170 вывода или сетевой адаптер 180 могут быть непосредственно соединены со схемой 110 обработки, или быть соединены со схемой 110 обработки через контроллер ввода/вывода, мост или другую интерфейсную схему. Другие варианты технологии являются возможными.
[0028] Некоторые примеры вычислительного устройства 100 включают в себя, по меньшей мере, одну память (например, оперативную память 120), приспособленную для хранения данных во время работы, и, по меньшей мере, один процессор (например, процессор 110), который является приспособленным, чтобы выполнять процессорно-исполняемый код, который, в ответ на исполнение, предоставляет возможность вычислительному устройству 100 выполнять действия.
Иллюстративное логическое вычислительное устройство
[0029] Фиг. 2 является схемой, иллюстрирующей один пример логического вида вычислительного устройства 200, в котором аспекты технологии могут быть применены на практике. Вычислительное устройство 200 может быть примером вычислительного устройства 100 на фиг. 1 В иллюстрации на фиг. 2 логические компоненты вычислительного устройства 200 включают в себя гостевые разделы 211-213, супервизорный раздел 230, физические ресурсы 241-243 и идентификатор 250 функции процессора.
[0030] Физические ресурсы 241-243 могут включать в себя любое множество физических компонентов, таких как компоненты процессора, компоненты ввода/вывода (I/O) и/или другие компоненты или устройства. Например, физические ресурсы 241-243 могут включать в себя любое подходящее сочетание физических компонентов, таких как ресурсы, обсужденные вместе с фиг. 1. Хотя иллюстрируется как часть вычислительного устройства 200, один или более физических ресурсов 241-243 (например, одно или более запоминающих устройств для хранения данных) могут быть реализованы внешне по отношению к вычислительному устройству 200. Различные компоненты или модули, работающие в вычислительном устройстве 200, включающие в себя супервизорный раздел 230, могут осуществлять доступ к функциональной возможности(ям), предоставляемым посредством физических ресурсов 241-243 непосредственно и/или опосредованно через другие компоненты или модули.
[0031] Супервизорный раздел 230 может формировать любое число гостевых разделов, например, гостевые разделы 211-213. Каждый из гостевых разделов 211-213 может быть VM, виртуализированным приложением, средой исполнения VBS, процессом в пользовательском режиме и/или т.п. Например, гостевой раздел 211 иллюстрируется как VM с операционной системой (OS) 221 и приложением 222, гостевой раздел 212 иллюстрируется как виртуализированное приложение 223, и гостевой раздел 213 иллюстрируется как имеющий процесс 224, исполняющийся из него.
[0032] Каждый из гостевых разделов 211-213 является логическим блоком изоляции, из которого исполняется операционная система и/или другое программное обеспечение. Каждый из гостевых разделов 211-213 может также включать в себя гостевой виртуальный процессор. Программное обеспечение, исполняющееся в каждом из гостевых разделов 211-213, изолируется от программного обеспечения, исполняющегося в каждом из других гостевых разделов. Например, программное обеспечение, исполняющееся в каждом из гостевых разделов 211-213, не имеет возможности осуществлять доступ, и не должно знать, о программном обеспечении, исполняющемся в каждом из других гостевых разделов. Физические ресурсы 241-243 виртуализируются в гостевых разделах 211-213, и управление доступом к физическим ресурсам 241-243 осуществляется посредством супервизорного раздела 230.
[0033] Как иллюстрировано, вычислительное устройство 100 включает в себя супервизорный раздел 230. Супервизорный раздел 230 может включать в себя гипервизор, такой как монитор виртуальной машины, который управляет доступом к функциональным возможностям, предоставляемым посредством физических ресурсов 241-243. В другом примере супервизорный раздел 230 является ядром или процессом в режиме ядра для OS, такой как OS, которая использует VBS.
[0034] Вычислительное устройство 200 также включает в себя один или более идентификаторов 250 функций процессора. Например, идентификатор 250 функции процессора может представлять регистр идентификаторов физических аппаратных средств (или набор регистров) для физического процессора, такой как регистр (или набор регистров), содержащий листовую информацию об идентификаторе x86 CPU, ID-регистры для процессора типа продвинутого процессора с сокращенным набором команд (ARM) и/или т.п. Идентификатор 250 функции процессора может также представлять функцию, поддерживаемую процессором, набор функций, поддерживаемый процессором, физическую характеристику процессора и/или т.п. Например, идентификатор 250 функции процессора может представлять частоту процессора, поддерживаемый диапазон физических адресов, умножитель тактовой частоты, параметр питания, доступность инструкции, номер степпинга, серийный номер и/или т.п.
Иллюстративные процессы
[0035] Для ясности, процессы, описанные в данном документе, описываются с точки зрения операций, выполняемых в конкретных последовательностях конкретными устройствами или компонентами системы. Однако, отметим, что другие процессы не ограничиваются изложенными последовательностями, устройствами или компонентами. Например, некоторые действия могут быть выполнены в других последовательностях, параллельно, пропущены или могут быть пополнены дополнительными действиями или признаками, описаны или нет такие последовательности, параллелизмы, действия или признаки в данном документе. Аналогично, любая из технологий, описанных в этом описании, может быть объединена в описанные процессы или другие процессы, описывается или нет эта технология конкретно вместе с процессом. Описанные процессы могут также быть выполнены на или посредством других устройств, компонентов или систем, описываются или нет такие устройства, компоненты или системы в данном документе. Эти процессы могут также быть осуществлены множеством способов. Например, они могут быть осуществлены на изделии производства, например, как процессорно-читаемые инструкции, сохраненные на процессорно-читаемом носителе хранения информации, или выполняться как компьютерно-реализованный процесс. В качестве альтернативного примера, эти процессы могут быть закодированы как процессорно-исполняемые инструкции и передаваться по каналу передачи данных.
[0036] Фиг. 3 иллюстрирует примерный процесс 300, который иллюстрируется с точки зрения процессора вычислительного устройства, например, схемы 110 обработки на фиг. 1 или физического ресурса 241, 242, 243 на фиг. 2. Процесс 300 начинается на этапе 381, когда принимается запрос идентификатора функции процессора. Например, данный запрос может быть принят физическим процессором, и этот запрос может происходить из гостевого раздела. Например, этот запрос может быть сформирован посредством кода, исполняющегося в гостевом виртуальном процессоре в гостевом разделе.
[0037] С этапа 381 обработка переходит на этап 382, когда, например, процессор отыскивает идентификатор функции процессора. В одном примере процессор отыскивает идентификатор функции процессора в регистре идентификатора функции процессора, в структуре памяти, доступной процессору, в таблице поиска идентификатора функции процессора и/или т.п. Этот поиск может также быть основан на информации, которая была предоставлена априори процессору гипервизором или другим супервизорным разделом, например, как дополнительно обсуждается вместе с процессом 400 на фиг. 4.
[0038] Обработка затем переходит к этапу 383, когда идентификатор функции процессора предоставляется, например, без гостевого выхода. Это может включать в себя предоставление процессором запрошенного идентификатора функции процессора гостевому разделу, например, запрашивающему процессу из гостевого раздела. Предоставленный идентификатор функции процессора может основываться на информации, которая была предоставлена априори процессору. Следом за этапом 383 обработка возвращается к другим операциям.
[0039] Фиг. 4 иллюстрирует примерный процесс 400, который иллюстрируется с точки зрения супервизорного раздела, например, гипервизора. Например, процесс 400 иллюстрируется с точки зрения супервизорного раздела 230 на фиг. 2.
[0040] Процесс 400 начинается на этапе 481, когда получают значение для идентификатора функции процессора. Это значение может быть получено супервизорным разделом вместе с, или в ответ на, операцию настройки, по меньшей мере, для одного гостевого раздела, гостевого виртуального процессора или виртуального уровня доверия гостевого виртуального процессора. Например, такая операция настройки может включать в себя, по меньшей мере, одно из формирования, создания экземпляра или запуска гостевого раздела, гостевого виртуального процессора или виртуального уровня доверия гостевого виртуального процессора. Значение может быть получено, например, посредством считывания значения регистра аппаратных средств физического процессора вычислительного устройства. В качестве одного примера, полученное значение идентификатора функции процессора может быть значением, назначенным производителем физического процессора (например, значением в микросхеме), и/или быть представляющим и/или указывающим функцию/набор функций, поддерживаемые процессором.
[0041] Обработка, в необязательном порядке, переходит к этапу 482, когда идентификатор функции процессора, который должен быть сохранен, вычисляется или определяется иным образом. Например, этап 482 может включать в себя определение того, должно ли полученное значение идентификатора функции процессора быть сохранено без изменения, или должно ли другое значение быть сохранено. Например, другое значение может быть сохранено, если супервизорный раздел должен "предлагать" другой набор функций процессора для гостевого раздела по сравнению с собственно поддерживаемым процессором, например, для улучшенной переносимости, производительности и/или по другим причинам. На этапе 482 множество значений для полученного значения идентификатора функции процессора может также быть определено, например, каждое ассоциируется с и/или указывается для разного гостевого раздела и/или гостевого виртуального процессора и/или контекстов уровня доверия. В некоторых примерах различные значения идентификатора функции процессора могут быть применены в контексте каждого виртуального процессора или контексте виртуального уровня доверия виртуального процессора. Примерами каждого контекста виртуального процессора или контекста виртуального уровня доверия виртуального процессора являются структура управления виртуальной машиной (VMCS), блок управления виртуальной машиной (VMCB), набор системных регистров, содержащих гостевой контекст, или другая характерная для архитектуры, заданной инструкцией виртуализации, совокупность гостевого контекста.
[0042] Обработка переходит к этапу 483, когда идентификатор функции процесса с этапа 482 предоставляется процессору. Например, супервизорный раздел может предоставлять идентификатор функции процессора, определенный на этапе 482, процессору для последующего использования процессором в ответ на запросы от программного обеспечения гостевого раздела информации об идентификаторе функции процессора. На этапе 483 процессор может также принимать эту информацию об идентификаторе функции процессора от супервизорного раздела.
[0043] Обработка затем переходит к этапу 484. На этапе 484 предоставленный идентификатор функции процессора сохраняется. Например, этап 484 может включать в себя действия посредством супервизорного процесса, которые инструктируют процессору сохранять предоставленный идентификатор функции процессора, и/или действия, предпринимаемые процессором, чтобы выполнять сохранение. Например, это сохранение может включать в себя сохранение идентификатора функции процессора в регистре идентификатора функции процессора, в таблице поиска идентификатора функции процессора в памяти и/или т.п. В еще одном примере код супервизорного раздела может сохранять идентификатор функции процессора посредством инструкции интерфейса процессора, такой как инструкция ID_REGISTER_WRITE.
[0044] В еще одном примере идентификатора функции процессора может быть записан в структуру памяти, доступную процессору, и местоположение этой структуры памяти программируется в регистр процессора. В этом и другом примерах множество структур памяти могут быть применены, например, чтобы предоставлять возможность использования различных значений идентификатора функции процессора для различных гостевых разделов, для различных VMCS, контекстов виртуального процессора, контекстов уровня доверия и/или т.п. В использовании переключение контекста между различными структурами памяти может быть выполнено либо посредством процессора, либо посредством кода 230 супервизорного раздела, например, в ответ на управление переключением процессора с одного гостевого раздела, гостевого виртуального процессора или виртуального уровня доверия гостевого виртуального процессора на другой.
[0045] В необязательном порядке, этап 484 может также включать в себя сохранение условных выражений в процессор, которые указывают процессору на соответствующее значение/структуру памяти из множества значений/структур памяти для данного запроса из гостевого раздела. Например, выражение может быть сохранено посредством инструкции, такой как инструкция ID_REGISTER_WRITE(VP_CONTEXT, REGISTER_NAME, CONDITIONAL, VALUE).
[0046] Как обсуждалось выше, это сохранение может также предоставлять возможность последующего использования, посредством процессора, идентификатора функции процессора в ответ на запросы из гостевого раздела без инструктирования гостевого выхода. Процесс 400 может повторяться для дополнительных идентификаторов функций процессора, или множество идентификаторов функций процессора могут быть получены, определены, предоставлены и сохранены в одной итерации процесса 400. Следом за этапом 484 обработка возвращается к другим операциям.
[0047] Фиг. 5 иллюстрирует примерный процесс 500, который иллюстрируется с точки зрения гостевого раздела, например, гостевого раздела 211, 212 или 213 на фиг. 2. Процесс 500 начинается на этапе 581, когда выполняется определение, что идентификатор функции процессора должен быть определен. Например, это определение может быть выполнено посредством или в гостевом разделе в ответ на запрос информации об идентификаторе функции процессора от приложения или другого процесса, исполняющегося из гостевого раздела. В качестве другого примера, это определение может представлять запрос посредством виртуальной машины, что идентификатор функции процессора должен быть получен для использования виртуальной машиной.
[0048] Обработка затем переходит к этапу 582, когда запрос идентификатора функции процессора отправляется из гостевого раздела. Этот запрос может быть отправлен процессору. В ответ на запрос по этапу 582, на этапе 583 идентификатор функции процессора может быть принят от процессора. Как обсуждалось выше, принятый идентификатор функции процессора может быть в соответствии с информацией, которая была предоставлена априори процессору посредством супервизорного раздела. С этапа 583 обработка может переходить к этапу 584, когда принятый идентификатор функции процессора предоставляется запрашивающему, например, приложению или другому процессу в гостевом разделе. Следом за этапом 584 обработка возвращается к другим операциям.
Заключение
[0049] В то время как вышеприведенное описание описывает некоторые примеры технологии и описывает оптимальный рассматриваемый режим, независимо от того, как детализированное выше появляется в тексте, технология может быть применена на практике множеством способов. Детали могут изменяться в реализации, в то же время все еще будучи охваченными технологией, описанной в данном документе. Как отмечено выше, конкретная терминология, используемая при описании некоторых отличительных признаков или аспектов технологии, не должна сводиться к подразумеванию, что терминология является переопределенной в данном документе, чтобы ограничиваться какими-либо конкретными характеристиками, отличительными признаками или аспектами, с которыми эта терминология ассоциируется. В целом, термины, используемые в последующей формуле изобретения, не должны истолковываться как ограничивающие технологию конкретными примерами, описанными в данном документе, пока подробное описание явно не определяет такие термины. Соответственно, фактические рамки технологии охватывают не только описанные примеры, но также все эквивалентные способы практического применения или реализации технологии.
Изобретение относится к области вычислительной техники. Технический результат заключается в повышении безопасности при работе реальных вычислительных машин с виртуальными машинами. Технический результат достигается за счет того, что в способе перед приемом исходящего запроса значения идентификатора (ID) функции процессора выполняются следующие этапы: прием посредством физического процессора значения ID функции процессора из супервизорного раздела; сохранение посредством физического процессора значения ID функции процессора в аппаратном регистре, доступном посредством физического процессора; прием посредством физического процессора исходящего из гостевого раздела запроса значения ID функции процессора; и предоставление, посредством физического процессора без вмешательства супервизорного раздела, запрошенного значения ID функции процессора в гостевой раздел из упомянутого аппаратного регистра, доступного посредством физического процессора. 3 н. и 17 з.п. ф-лы, 5 ил.
1. Способ поддержки виртуализации, содержащий этапы, на которых:
перед приемом, посредством физического процессора, исходящего из гостевого раздела запроса значения идентификатора (ID) функции процессора:
принимают посредством физического процессора значение ID функции процессора из супервизорного раздела и
сохраняют посредством физического процессора значение ID функции процессора в аппаратном регистре, доступном посредством физического процессора;
принимают посредством физического процессора исходящий из гостевого раздела запрос значения ID функции процессора; и
в ответ на данный запрос предоставляют, посредством физического процессора без вмешательства супервизорного раздела, запрошенное значение ID функции процессора в гостевой раздел из упомянутого аппаратного регистра, доступного посредством физического процессора.
2. Способ по п.1, в котором значение ID функции процессора принимается из супервизорного раздела в связи с операцией настройки для по меньшей мере одного из гостевого раздела, гостевого виртуального процессора и виртуального уровня доверия гостевого виртуального процессора, при этом принятое значение ID функции процессора сохраняют посредством физического процессора.
3. Способ по п.2, в котором операция настройки по меньшей мере одного из гостевого раздела, гостевого виртуального процессора и виртуального уровня доверия гостевого виртуального процессора включает в себя по меньшей одно из формирования, создания экземпляра и запуска этого по меньшей мере одного из гостевого раздела, гостевого виртуального процессора и виртуального уровня доверия гостевого виртуального процессора.
4. Способ по п.1, в котором значение ID функции процессора представляет поддержку первой функции, которая исходно не поддерживается физическим процессором, или отсутствие поддержки второй функции, которая исходно поддерживается физическим процессором.
5. Способ по п.1, в котором значение ID функции процессора отличается от значения, присвоенного производителем физического процессора.
6. Способ по п.1, в котором значение ID функции процессора задается для структуры управления виртуальной машиной (VMCS) или блока управления виртуальной машиной (VMCB), причем разное значение ID функции процессора задается для разной VMCS или VMCB.
7. Способ по п.1, в котором значение ID функции процессора задается для виртуального процессора или контекста виртуального уровня доверия виртуального процессора, при этом разное значение ID функции процессора задается для разного виртуального процессора или контекста виртуального уровня доверия виртуального процессора.
8. Вычислительное устройство, содержащее:
память и процессор, которые соответственно выполнены с возможностью хранить и исполнять инструкции, включающие в себя инструкции для предписания вычислительному устройству выполнять операции, содержащие:
перед запросом от программного обеспечения, исполняющегося в гостевом разделе, на предмет информации об идентификаторе (ID) функции процессора, определение, посредством супервизорного раздела, информации об идентификаторе функции процессора, которая должна быть возвращена процессором в ответ на запрос от программного обеспечения, исполняющегося в гостевом разделе, на предмет информации об идентификаторе функции процессора; и
предоставление, посредством супервизорного раздела, этой определенной информации об идентификаторе функции процессора в процессор для сохранения посредством процессора в аппаратном регистре и для последующего использования процессором в ответ на запросы от упомянутого программного обеспечения на предмет информации об идентификаторе функции процессора из аппаратного регистра без вмешательства супервизорного раздела.
9. Вычислительное устройство по п.8, в котором операции дополнительно содержат сохранение, посредством процессора, предоставленной информации об идентификаторе функции процессора для последующего использования процессором в ответ на запросы от упомянутого программного обеспечения на предмет информации об идентификаторе функции процессора.
10. Вычислительное устройство по п.8, при этом предоставленная информация об идентификаторе функции процессора сохраняется в регистре идентификатора функции процессора упомянутого процессора.
11. Вычислительное устройство по п.8, в котором операции дополнительно содержат:
прием, посредством процессора от упомянутого программного обеспечения, запроса информации об идентификаторе функции процессора; и
в ответ на этот запрос, предоставление, посредством процессора, запрошенной информации об идентификаторе функции процессора на основе информации об идентификаторе функции процессора, предоставленной посредством супервизорного раздела.
12. Вычислительное устройство по п.8, при этом информация об идентификаторе функции процессора включает в себя значение ID CPU.
13. Вычислительное устройство по п.8, при этом информация об идентификаторе функции процессора включает в себя указание поддержки для по меньшей мере одной функции, которая исходно не поддерживается процессором, или указание отсутствия поддержки по меньшей мере одной другой функции, которая исходно поддерживается процессором.
14. Способ работы виртуальной машины на вычислительном устройстве, содержащий этапы, на которых:
определяют посредством виртуальной машины, исполняющейся в вычислительном устройстве, что значение идентификатора (ID) функции процессора должно быть получено для использования виртуальной машиной;
отправляют посредством виртуальной машины запрос идентификатора функции процессора в процессор вычислительного устройства; и
в ответ на данный запрос принимают запрошенный идентификатор функции процессора от процессора, при этом принятый идентификатор функции процессора предоставлен процессором, без вмешательства супервизорного раздела, из информации, сохраненной в аппаратном регистре, доступном для процессора, причем информация, сохраненная в аппаратном регистре, была предоставлена априори в процессор посредством супервизорного раздела.
15. Способ по п.14, в котором запрошенный идентификатор функции процессора принимается от процессора без выхода виртуальной машины.
16. Способ по п.14, в котором идентификатор функции процессора представляет поддержку первой функции процессора, которая исходно не поддерживается процессором, или представляет отсутствие поддержки второй функции процессора, которая исходно поддерживается процессором.
17. Способ по п.14, в котором идентификатор функции процессора является индивидуальным для по меньшей мере одного из виртуальной машины, виртуального процессора и уровня доверия виртуального процессора, при этом другой идентификатор функции процессора является индивидуальным для другой виртуальной машины, виртуального процессора или уровня доверия виртуального процессора в вычислительном устройстве.
18. Способ по п.14, в котором идентификатор функции процессора отличается от значения, присвоенного производителем процессора.
19. Способ по п.14, в котором идентификатор функции процессора включает в себя значение ID CPU.
20. Способ по п.14, в котором идентификатор функции процессора был принят в связи с операцией настройки для по меньшей мере одного из виртуальной машины, виртуального процессора и уровня доверия виртуального процессора, при этом операция настройки для по меньшей мере одного из виртуальной машины, виртуального процессора и уровня доверия виртуального процессора включает в себя по меньшей мере одно из формирования, создания экземпляра и запуска виртуальной машины, виртуального процессора или уровня доверия виртуального процессора.
Изложница с суживающимся книзу сечением и с вертикально перемещающимся днищем | 1924 |
|
SU2012A1 |
Устройство для закрепления лыж на раме мотоциклов и велосипедов взамен переднего колеса | 1924 |
|
SU2015A1 |
Токарный резец | 1924 |
|
SU2016A1 |
Способ получения цианистых соединений | 1924 |
|
SU2018A1 |
RU 20611018 C2, 17.02.2017. |
Авторы
Даты
2022-10-04—Публикация
2019-05-13—Подача