Более быстрый доступ запоминающего устройства виртуальной машины, резервируемого виртуальным запоминающим устройством вычислительного хост-устройства

Изобретение относится к области информационных технологий. Техническим результатом является повышение эффективности использования запоминающего устройства посредством процессов виртуальной машины, выполняющихся на вычислительном хост-устройстве. Для достижения технического результата один или более иерархических уровней таблиц в таблице адресов второго уровня (SLAT) могут пропускаться или иным образом не подлежать обращению. Хотя SLAT может заполняться корреляциями в запоминающем устройстве на иерархически более высоких уровнях таблиц, таблица страниц вычислительного хост-устройства, поддерживающая инициализацию вычислительного хост-устройства виртуального запоминающего устройства, может поддерживать соответствующий смежный набор корреляций в запоминающем устройстве на иерархически самом нижнем уровне таблицы. Если такое манипулирование возникает, SLAT может повторно заполняться корреляциями в запоминающем устройстве на иерархически самом нижнем уровне таблицы. 3 н. и 17 з.п. ф-лы, 8 ил.

 

Уровень техники

[0001] Современные вычислительные устройства работают посредством исполнения машиноисполняемых инструкций из высокоскоростного энергозависимого запоминающего устройства в форме оперативного запоминающего устройства (RAM), и исполнение таких машиноисполняемых инструкций зачастую влечет за собой считывание данных из RAM. Вследствие затрат, ограничений по физическому размеру, требований по мощности и других аналогичных ограничений, вычислительные устройства типично содержат меньший объем RAM, чем требуется посредством процессов, которые типично выполняются на таких вычислительных устройствах. Чтобы справляться с такими ограничениями, используется виртуальное запоминающее устройство, за счет чего запоминающее устройство, которое выглядит доступным для процессов, выполняющихся на вычислительном устройстве, больше, чем предоставляет схема физического запоминающего устройства. Взаимосвязь между виртуальным запоминающим устройством и физическим запоминающим устройством типично управляется посредством одного или более диспетчеров запоминающего устройства, которые реализуют, поддерживают и/или обращаются к "таблице страниц", информация которой разграничивает взаимосвязь между одним или более адресов ячеек виртуального запоминающего устройства и местоположениями соответствующих данных, в физическом запоминающем устройстве или в некоторой форме носителей хранения данных. Чтобы справляться с объемами запоминающего устройства, релевантными для современных вычислительных устройств и процессов, выполняемых на них, современная таблица страниц типично состоит из нескольких иерархических уровней таблиц, при этом таблица иерархически более высокого уровня имеет записи, которые идентифицируют различную таблицу иерархически более низкого уровня, и таблица иерархически самого нижнего уровня содержит записи, которые не идентифицируют еще одну дополнительную таблицу, а вместо этого идентифицируют непосредственно адреса ячеек запоминающего устройства.

[0002] Из числа процессов, которые могут выполняться посредством вычислительных устройств, предусмотрены процессы, которые виртуализируют или абстрагируют базовые аппаратные средства вычислительного устройства. Такие процессы включают в себя виртуальные машины, которые могут моделировать полное базовое вычислительное устройство для процессов, выполняемых внутри виртуализированного вычислительного контекста, предоставленного посредством таких виртуальных машин. Гипервизор или аналогичный набор машиноисполняемых инструкций может упрощать инициализацию виртуальной машины посредством виртуализации или абстрагирования базовых аппаратных средств физического вычислительного устройства, вмещающего такой гипервизор. Гипервизор может поддерживать таблицу адресов второго уровня (SLAT), которая также может иерархически организовываться способом, аналогичным вышеуказанным таблицам страниц. SLAT может сохранять информацию, которая разграничивает взаимосвязь между одним или более адресов ячеек запоминающего устройства, которые выглядят местоположениями ячеек физического запоминающего устройства для процессов, выполняющихся поверх гипервизора, включающих в себя процессы, выполняющиеся внутри контекста виртуальной машины, виртуализация базовых вычислительных аппаратных средств которого упрощается посредством гипервизора, и местоположениями ячеек запоминающего устройства непосредственно для фактического физического запоминающего устройства.

[0003] Когда процесс, выполняющийся внутри контекста виртуальной машины, например, осуществляет доступ к запоминающему устройству, могут выполняться два различных поиска. Один поиск может выполняться непосредственно в контексте виртуальной машины, чтобы коррелировать запрашиваемый адрес ячейки виртуального запоминающего устройства с адресом ячейки физического запоминающего устройства. Поскольку такой поиск выполняется непосредственно в контексте виртуальной машины, идентифицированный адрес ячейки физического запоминающего устройства представляет собой только адрес ячейки физического запоминающего устройства, воспринимаемый посредством процессов, выполняющихся внутри контекста виртуальной машины. Такой поиск может выполняться посредством диспетчера запоминающего устройства, выполняющегося внутри контекста виртуальной машины, и может осуществляться с обращением к таблице страниц, которая существует в контексте виртуальной машины. Второй поиск затем может выполняться за пределами контекста виртуальной машины. Более конкретно, адрес ячейки физического запоминающего устройства (в контексте виртуальной машины), идентифицированный посредством первого поиска, может коррелироваться с фактическим адресом ячейки физического запоминающего устройства. Такой второй поиск может влечь за собой обращение, посредством одного или более модулей обработки вычислительного устройства, к SLAT, которая может коррелировать воспринимаемые адреса ячеек физического запоминающего устройства с фактическими адресами ячеек физического запоминающего устройства.

[0004] Как указано, как таблицы страниц, так и SLAT могут представлять собой иерархические компоновки различных иерархических уровней таблиц. Таким образом, производительность табличного поиска, независимо от того, выполняется он посредством диспетчера запоминающего устройства с обращением к таблице страниц либо выполняется посредством гипервизора с обращением к SLAT, может влечь за собой определение соответствующей записи таблицы на иерархическом самом верхнем уровне таблицы, при обращении к таблице иерархически более низкого уровня, которая идентифицируется посредством этой записи таблицы, определение соответствующей записи таблицы в этой таблице иерархически более низкого уровня, обращение к таблице иерархически еще более низкого уровня, которая идентифицируется посредством этой записи таблицы и т.д., до тех пор, пока таблица самого нижнего иерархического уровня не достигается, после чего отдельные записи этой таблицы самого нижнего иерархического уровня идентифицируют один или более конкретных адресов или диапазонов адресов непосредственно запоминающего устройства, предположительно для идентификации еще одной дополнительной таблицы. Каждая обращение к таблице иерархически более низкого уровня потребляет циклы процессора и увеличивает длительность доступа к запоминающему устройству.

[0005] В случае доступа к запоминающему устройству из процесса, выполняющегося внутри контекста виртуальной машины, например, длительность такого доступа к запоминающему устройству может включать в себя прохождение иерархических уровней таблицы страниц, выполняемое посредством диспетчера запоминающего устройства, в контексте виртуальной машины, и, помимо этого, прохождение иерархических уровней SLAT, выполняемое посредством гипервизора. Дополнительная задержка, введенная посредством поиска, выполняемого посредством гипервизора, с обращением к SLAT, делает доступ к запоминающему устройству из процессов, выполняющихся внутри контекста виртуальной машины, либо, фактически, из любого процесса, который осуществляет доступ к запоминающему устройству через гипервизор, более неэффективным по сравнению с процессами, осуществляющими доступ к запоминающему устройству более непосредственно. Такая неэффективность может мешать пользователям достигать выгод по безопасности и других преимуществ, предоставленных посредством осуществления доступа к запоминающему устройству через гипервизор.

Сущность изобретения

[0006] Чтобы повышать эффективность использования запоминающего устройства посредством процессов виртуальной машины, выполняющихся на вычислительном хост-устройстве, эти процессы виртуальной машины могут резервироваться посредством виртуального запоминающего устройства хоста, за счет этого обеспечивая возможность применения традиционных эффективностей виртуального запоминающего устройства к запоминающему устройству, потребляемому посредством таких процессов виртуальной машины. Чтобы увеличивать скорость, с которой иерархические уровни таблицы адресов второго уровня (SLAT) проходятся в качестве части доступа к запоминающему устройству в таком окружении, в котором гостевое физическое запоминающее устройство окружения виртуальной машины резервируется посредством виртуального запоминающего устройства, назначенного одному или более процессов, выполняющихся на вычислительном хост-устройстве, один или более иерархических уровней таблиц в SLAT могут пропускаться или иным образом не подлежать обращению, в силу этого приводя к более эффективному SLAT-прохождению и более эффективному доступу к запоминающему устройству. Хотя SLAT может заполняться корреляциями в запоминающем устройстве на иерархически более высоких уровнях таблиц, таблица страниц вычислительного хост-устройства, поддерживающая инициализацию вычислительного хост-устройства виртуального запоминающего устройства, может поддерживать соответствующий смежный набор корреляций в запоминающем устройстве на иерархически самом нижнем уровне таблицы, за счет этого обеспечивая возможность вычислительному хост-устройству откачивать страницы или иным образом манипулировать меньшими порциями запоминающего устройства. Если такое манипулирование возникает, SLAT может повторно заполняться корреляциями в запоминающем устройстве на иерархически самом нижнем уровне таблицы. С другой стороны, если хост может повторно собирать достаточно большой смежный набор небольших страниц, SLAT может снова заполняться корреляцией на иерархически более высоких уровнях таблиц, в силу этого опять приводя к более эффективному SLAT-прохождению и более эффективному доступу к запоминающему устройству. Таким образом, более эффективное SLAT-прохождение может достигаться при поддержании преимуществ по эффективности использования запоминающего устройства для резервирования процессов виртуальной машины с виртуальным запоминающим устройством вычислительного хост-устройства.

[0007] Это краткое изложение сущности изобретения приведено для представления в упрощенной форме подборки концепций, которые дополнительно описаны ниже в подробном описании. Данное краткое изложение сущности изобретения не имеет намерением ни то, чтобы идентифицировать ключевые признаки или важнейшие признаки заявленного изобретения, ни то, чтобы использоваться для ограничения объем заявляемого изобретения.

[0008] Дополнительные признаки и преимущества должны становиться очевидными из нижеприведенного подробного описания, которое указывается далее со ссылкой на прилагаемые чертежи.

Краткое описание чертежей

[0009] Нижеприведенное подробное описание может лучше всего пониматься при рассмотрении вместе с прилагаемыми чертежами, из которых:

[0010] Фиг. 1 является блок-схемой примерного вычислительного устройства;

[0011] Фиг. 2 является схемой системы для примерной аппаратной и программной вычислительной системы;

[0012] Фиг. 3 является блок-схемой, иллюстрирующей терминологию, используемую в данном документе;

[0013] Фиг. 4 является блок-схемой последовательности операций, иллюстрирующей примерный способ для резервирования гостевого физического запоминающего устройства с виртуальным запоминающим устройством хоста;

[0014] Фиг. 5 является блок-схемой последовательности операций способа, иллюстрирующей различные примерные действия в жизненном цикле данных в гостевом физическом запоминающем устройстве, которое резервируется посредством виртуального запоминающего устройства хоста;

[0015] Фиг. 6 является блок-схемой, иллюстрирующей примерный механизм для резервирования гостевого физического запоминающего устройства с виртуальным запоминающим устройством хоста;

[0016] Фиг. 7 является блок-схемой, иллюстрирующей примерный механизм для более эффективной трансляции между гостевым физическим запоминающим устройством и физическим запоминающим устройством хоста при резервировании гостевого физического запоминающего устройства с виртуальным запоминающим устройством хоста; и

[0017] Фиг. 8 является блок-схемой последовательности операций, иллюстрирующей примерный способ для более эффективной трансляции между гостевым физическим запоминающим устройством и физическим запоминающим устройством хоста при резервировании гостевого физического запоминающего устройства с виртуальным запоминающим устройством хоста.

Подробное описание изобретения

[0018] Нижеприведенное описание относится к повышению эффективности доступа к запоминающему устройству при одновременном предоставлении более эффективного использования запоминающего устройства на вычислительных устройствах, вмещающих один или более процессов виртуальной машины, которые предоставляют вычислительные окружения виртуальной машины. Чтобы повышать эффективность использования запоминающего устройства посредством процессов виртуальной машины, выполняющихся на вычислительном хост-устройстве, эти процессы виртуальной машины могут резервироваться посредством виртуального запоминающего устройства хоста, за счет этого обеспечивая возможность применения традиционных эффективностей виртуального запоминающего устройства к запоминающему устройству, потребляемому посредством таких процессов виртуальной машины. Чтобы увеличивать скорость, с которой иерархические уровни таблицы адресов второго уровня (SLAT) проходятся в качестве части доступа к запоминающему устройству в таком окружении, в котором гостевое физическое запоминающее устройство окружения виртуальной машины резервируется посредством виртуального запоминающего устройства, назначенного одному или более процессов, выполняющихся на вычислительном хост-устройстве, один или более иерархических уровней таблиц в SLAT могут пропускаться или иным образом не подлежать обращению, в силу этого приводя к более эффективному SLAT-прохождению и более эффективному доступу к запоминающему устройству. Хотя SLAT может заполняться корреляциями в запоминающем устройстве на иерархически более высоких уровнях таблиц, таблица страниц вычислительного хост-устройства, поддерживающая инициализацию вычислительного хост-устройства виртуального запоминающего устройства, может поддерживать соответствующий смежный набор корреляций в запоминающем устройстве на иерархически самом нижнем уровне таблицы, за счет этого обеспечивая возможность вычислительному хост-устройству откачивать страницы или иным образом манипулировать меньшими порциями запоминающего устройства. Если такое манипулирование возникает, SLAT может повторно заполняться корреляциями в запоминающем устройстве на иерархически самом нижнем уровне таблицы. С другой стороны, если хост может повторно собирать достаточно большой смежный набор небольших страниц, SLAT может снова заполняться корреляцией на иерархически более высоких уровнях таблиц, в силу этого опять приводя к более эффективному SLAT-прохождению и более эффективному доступу к запоминающему устройству. Таким образом, более эффективное SLAT-прохождение может достигаться при поддержании преимуществ по эффективности использования запоминающего устройства для резервирования процессов виртуальной машины с виртуальным запоминающим устройством вычислительного хост-устройства.

[0019] Хотя необязательно, нижеприведенное описание приводится в общем контексте машиноисполняемых инструкций, таких как программные модули, исполняющиеся посредством вычислительного устройства. Более конкретно, описание упоминает действия и символические представления операций, которые выполняются посредством одного или более вычислительных устройств или периферийных устройств, если не указано иное. По существу, следует понимать, что такие действия и операции, которые иногда упоминаются как машиноисполняемые, включают в себя манипулирование посредством модуля обработки электрическими сигналами, представляющими данные в структурированной форме. Это манипулирование преобразует данные или поддерживает их в местоположениях в запоминающем устройстве, которые переконфигурируют или иным образом изменяют работу вычислительного устройства или периферийных устройств способом, хорошо понимаемым специалистами в данной области техники. Структуры данных, в которых хранятся данные, представляют собой физические местоположения, которые имеют конкретные свойства, заданные посредством формата данных.

[0020] В общем, программные модули включают в себя процедуры, программы, объекты, компоненты, структуры данных и т.п., которые выполняют конкретные задачи или реализуют конкретные абстрактные типы данных. Кроме того, специалисты в данной области техники должны принимать во внимание, что вычислительные устройства не должны быть обязательно ограничены традиционными персональными компьютерами и включают в себя другие вычислительные конфигурации, включающие в себя серверы, карманные устройства, многопроцессорные системы, микропроцессорную или программируемую бытовую электронную аппаратуру, сетевые PC, миникомпьютеры, мэйнфреймы и т.п. Аналогично, вычислительные устройства не должны обязательно быть ограничены автономными вычислительными устройствами, поскольку механизмы также могут осуществляться на практике в распределенных вычислительных окружениях, в которых задачи выполняются посредством удаленных устройств обработки, которые связываются через сеть связи. В распределенном вычислительном окружении, программные модули могут размещаться как в локальных, так и в удаленных устройствах хранения данных.

[0021] Перед продолжением подробного описания выделения ячеек запоминающего устройства и механизмов доступа, упомянутых выше, подробное описание примерного вычислительного хост-устройства, которое предоставляет контекст для нижеприведенных описаний, содержит ссылку на примерное вычислительное устройство 100, показанное на фиг. 1. Примерное вычислительное устройство 100 может включать в себя, но не только, один или более центральных процессоров 120 (CPU), системное запоминающее устройство 130 и системную шину 121, которая соединяет различные системные компоненты, включающие в себя системное запоминающее устройство, с модулем 120 обработки. Системная шина 121 может представлять собой любой из нескольких типов шинных структур, включающих в себя шину запоминающего устройства или контроллер запоминающего устройства, периферийную шину и локальную шину с использованием любой из множества шинных архитектур. Вычислительное устройство 100 необязательно может включать в себя графические аппаратные средства, в том числе, но не только, графический аппаратный интерфейс 160 и устройство 161 отображения, которое может включать в себя устройства отображения, допускающие прием сенсорного пользовательского ввода, такие как сенсорное или мультисенсорное устройство отображения. В зависимости от конкретной физической реализации, одно или более из CPU 120, системного запоминающего устройства 130 и других компонентов вычислительного устройства 100 могут физически совместно размещаться, к примеру, на одной микросхеме. В таком случае, часть или вся системная шина 121 может представлять собой исключительно кремниевые трассы в одномикросхемной структуре, и ее иллюстрация на фиг. 1 может представлять собой исключительно удобство обозначения для целей иллюстрации.

[0022] Вычислительное устройство 100 также типично включает в себя машиночитаемые носители, которые могут включать в себя любые доступные носители, к которым может осуществляться доступ посредством вычислительного устройства 100, и включает в себя энергозависимые и энергонезависимые носители, а также съемные и стационарные носители. В качестве примера, а не ограничения, машиночитаемые носители могут содержать компьютерные носители хранения данных и среды связи. Компьютерные носители хранения данных включают в себя носители, реализованные согласно любому способу или технологии для хранения контента, такие как машиночитаемые инструкции, структуры данных, программные модули или другие данные. Компьютерные носители хранения данных включают в себя, но не только, RAM, ROM, EEPROM, флэш-память или другую технологию запоминающих устройств, CD-ROM, универсальные цифровые диски (DVD) или другое устройство хранения данных на оптических дисках, магнитные кассеты, магнитную ленту, устройство хранения данных на магнитных дисках или другие магнитные устройства хранения данных либо любой другой носитель, который может использоваться для того, чтобы сохранять требуемый контент, и к которому может осуществляться доступ посредством вычислительного устройства 100. Тем не менее, компьютерные носители хранения данных не включают в себя среды связи. Среды связи типично содержат машиночитаемые инструкции, структуры данных, программные модули или другие данные в модулированном сигнале данных, таком как несущая волна или другой транспортный механизм, и включают в себя любые носители для доставки контента. В качестве примера, а не ограничения, среды связи включают в себя проводные среды, такие как проводная сеть или прямое проводное соединение, и беспроводные среды, такие как акустические, радиочастотные (RF), инфракрасные и другие беспроводные среды. Комбинации любых из вышеперечисленных типов также следует включать в число машиночитаемых носителей.

[0023] Системное запоминающее устройство 130 включает в себя компьютерные носители хранения данных в форме энергозависимого и/или энергонезависимого запоминающего устройства, такого как постоянное запоминающее устройство 131 (ROM) и оперативное запоминающее устройство 132 (RAM). Базовая система 133 ввода/вывода (BIOS), содержащая базовые процедуры, которые помогают передавать контент между элементами в вычислительном устройстве 100, к примеру, в ходе запуска, типично сохраняется в ROM 131. RAM 132 типично содержит данные и/или программные модули, которые являются непосредственно доступными и/или в данный момент управляются посредством модуля 120 обработки. В качестве примера, а не ограничения, фиг. 1 иллюстрирует операционную систему 134, другие программные модули 135 и программные данные 136.

[0024] Вычислительное устройство 100 также может включать в себя другие съемные/стационарные, энергозависимые/энергонезависимые компьютерные носители хранения. Только в качестве примера, фиг. 1 иллюстрирует накопитель 141 на жестких дисках, который считывает или записывает из/на стационарные энергонезависимые магнитные носители. Другие съемные/стационарные, энергозависимые/энергонезависимые компьютерные носители хранения данных, которые могут использоваться с примерным вычислительным устройством, включают в себя, но не только, кассеты с магнитной лентой, карты флэш-памяти, универсальные цифровые диски, цифровую видеоленту, полупроводниковое RAM, полупроводниковое ROM и другие компьютерные носители хранения данных, заданные и разграниченные выше. Накопитель 141 на жестких дисках типично соединяется с системной шиной 121 посредством интерфейса энергонезависимого запоминающего устройства, такого как интерфейс 140.

[0025] Накопители и ассоциированные с ними компьютерные носители хранения, поясненные выше и проиллюстрированные на фиг. 1, предоставляют хранение машиночитаемых инструкций, структур данных, программных модулей и других данных для вычислительного устройства 100. На фиг. 1, например, накопитель 141 на жестких дисках проиллюстрирован как сохраняющий операционную систему 144, другие программные модули 145 и программные данные 146. Следует отметить, что эти компоненты могут быть либо идентичными, либо отличными от операционной системы 134, других программных модулей 135 и программных данных 136. Операционная система 144, другие программные модули 145 и программные данные 146 приводятся в настоящем документе с разными номерами, чтобы иллюстрировать то, что, как минимум, они представляют собой различные копии.

[0026] Вычислительное устройство 100 может работать в сетевом окружении с использованием логических соединений с одним или более удаленных компьютеров. Вычислительное устройство 100 проиллюстрировано как соединенное с общим сетевым соединением 151 (с сетью 190) через сетевой интерфейс или адаптер 150, который, в свою очередь, соединяется с системной шиной 121. В сетевом окружении, программные модули, проиллюстрированные относительно вычислительного устройства 100 либо его частей или периферийных устройств, могут сохраняться в запоминающем устройстве одного или более других вычислительных устройств, которые функционально соединяются с вычислительным устройством 100 через общее сетевое соединение 161. Следует принимать во внимание, что показанные сетевые соединения являются примерными, и могут использоваться другие средства установления линии связи между вычислительными устройствами,.

[0027] Хотя описывается в качестве одного физического устройства, примерное вычислительное устройство 100 может представлять собой виртуальное вычислительное устройство, причем в этом случае функциональность вышеописанных физических компонентов, таких как CPU 120, системное запоминающее устройство 130, сетевой интерфейс 160 и другие аналогичные компоненты, может предоставляться посредством машиноисполняемых инструкций. Такие машиноисполняемые инструкции могут исполняться на одном физическом вычислительном устройстве или могут распределяться по нескольким физическим вычислительным устройствам, в том числе распределяться по нескольким физическим вычислительным устройствам динамическим способом таким образом, что конкретные физические вычислительные устройства, вмещающие такие машиноисполняемые инструкции, могут динамически изменяться во времени в зависимости от потребности и доступности. В ситуации, в которой примерное вычислительное устройство 100 представляет собой виртуализированное устройство, базовые физические вычислительные устройства, вмещающие такое виртуализированное вычислительное устройство, могут непосредственно содержать физические компоненты, аналогичные физическим компонентам, описанным выше, и работающие аналогично. Кроме того, виртуальные вычислительные устройства могут использоваться на нескольких уровнях, при этом одно виртуальное вычислительное устройство выполняется внутри конструкции другого виртуального вычислительного устройства. Таким образом, термин "вычислительное устройство", при использовании в данном документе, означает либо физическое вычислительное устройство, либо виртуализированное вычислительное окружение, включающее в себя виртуальное вычислительное устройство, в котором машиноисполняемые инструкции могут выполняться способом, совместимым с их выполнением посредством физического вычислительного устройства. Аналогично, термины, означающие физические компоненты вычислительного устройства, при использовании в данном документе означают либо эти физические компоненты, либо их виртуализации, выполняющие идентичные или эквивалентные функции.

[0028] Обращаясь к фиг. 2, система 200, показанная на нем, иллюстрирует вычислительную систему, содержащую как аппаратные средства вычислительного устройства, так и процессы, выполняющиеся в ней. Более конкретно, примерная система 200, показанная на фиг. 2, включает в себя непосредственно аппаратные средства вычислительного устройства, такие как вышеуказанные модули 120 обработки и RAM 132, проиллюстрированные в качестве части вышеописанного примерного вычислительного устройства 100. Дополнительно, примерная система 200 включает в себя гипервизор, такой как примерный гипервизор 210, который может состоять из машиноисполняемых инструкций, которые выполняются посредством примерного вычислительного устройства 100, чтобы обеспечивать возможность вычислительному устройству 100 выполнять функциональность, ассоциированную с примерным гипервизором 210. Как подробнее описано ниже, примерный гипервизор 210 может включать в себя или может обращаться к таблице адресов второго уровня (SLAT), такой как примерная SLAT 220.

[0029] Примерный гипервизор 210 может виртуализировать набор вычислительных аппаратных средств, которые могут либо быть соразмерными с аппаратными средствами вычислительного устройства 100, либо отличаться от них, что включает в себя отличия по типу и/или разрядности процессора, отличия по объему и/или типу RAM, отличия по объему и/или типу носителей хранения данных и другие аналогичные отличия. Такая виртуализация может, в числе прочего, активировать один или более процессов виртуальной машины, таких как примерные процессы 260 и 250 виртуальной машины. Гипервизор 210 может представлять, как для процессов, выполняющихся внутри контекста этих виртуальных машин, так и для любого другого процесса, выполняющегося поверх гипервизора, вероятность выполнения непосредственно на аппаратных средствах 110 вычислительного устройства. Примерная система 200, показанная на фиг. 2, иллюстрирует операционную систему, такую как примерная операционная система 240, выполняющаяся поверх примерного гипервизора 210. В свою очередь, как проиллюстрировано посредством примерной системы 200, примерная операционная система 240 может иметь выполняющиеся в ней одну одна или более машиноисполняемых прикладных программ, таких как вышеуказанные процессы 260 и 250 виртуальной машины.

[0030] Примерная операционная система 240 может содержать различные компоненты, субкомпоненты или их аспекты, которые являются релевантными для нижеприведенных описаний. Хотя проиллюстрированы в качестве визуально различных элементов на фиг. 2, такое визуальное изображение не имеет намерение передавать конкретную вычислительную независимость, к примеру, границы процессов, независимые запоминающие хранилища либо другие аналогичные вычислительные разграничения. Один аспект операционной системы 240 может представлять собой диспетчер запоминающего устройства, такой как примерный диспетчер 241 запоминающего устройства. Более конкретно, примерный диспетчер 241 запоминающего устройства может считывать код или данные из одного или более машиночитаемых носителей хранения данных и копировать такой код или данные в запоминающее устройство, которое может поддерживаться посредством RAM 132.

[0031] При использовании в данном документе, термин "виртуальное запоминающее устройство" употребляется не со ссылкой на виртуальную машину, а вместо этого на понятие представления, для прикладных программ или других процессов, выполняющихся на вычислительном устройстве, вероятности наличия доступа к большему объему запоминающего устройства, чем физически присутствует в RAM 132. Таким образом, например, функциональность виртуального запоминающего устройства, предоставленная посредством операционной системы 240, может обеспечивать возможность загрузки кода и/или данных в запоминающее устройство, которое в конечном счете поддерживается посредством физического запоминающего устройства, такого как физическое запоминающее устройство 132, но объем которого превышает физическое запоминающее устройство. Диспетчер 241 запоминающего устройства, выполняющийся в качестве части операционной системы 240, может поддерживать, модифицировать и/или использовать таблицу 250 страниц для того, чтобы учитывать корреляцию между одним или более адресов ячеек виртуального запоминающего устройства и одним или более адресов ячеек физического запоминающего устройства. Более конкретно, таблица 250 страниц предоставляет трансляцию адресов между одной схемой адресации ячеек запоминающего устройства и другой, отличающейся схемой адресации ячеек запоминающего устройства. Чтобы добиваться этого, таблица 250 страниц может содержать несколько иерархических уровней таблиц, подробнее описанных ниже, которые могут коррелировать один или более адресов ячеек запоминающего устройства согласно одной схеме адресации ячеек запоминающего устройства, а именно, адреса ячеек виртуального запоминающего устройства, с одним или более адресов ячеек запоминающего устройства согласно другой, отличающейся схеме адресации ячеек запоминающего устройства, а именно, с адресами ячеек физического запоминающего устройства.

[0032] Примерная система 200, показанная на фиг. 2, иллюстрирует прикладные программы, выполняющиеся поверх операционной системы 240. В частности, такие прикладные программы могут представлять собой прикладные программы виртуальных машин, которые могут создавать экземпляр процессов виртуальной машины, таких как примерные процессы 260 и 270 виртуальной машины. Каждый процесс виртуальной машины может создавать виртуальное вычислительное окружение, которое может вмещать собственную операционную систему, прикладные программы и другую аналогичную функциональность, которая может вмещаться физическим вычислительным окружением, таким как физическое вычислительное окружение, представленное посредством вычислительного устройства 100. В примерной системе 200, показанной на фиг. 2, примерный процесс 260 виртуальной машины проиллюстрирован как создающий окружение 261 виртуальной машины, и примерный процесс 270 виртуальной машины проиллюстрирован как создающий окружение 271 виртуальной машины. Примерное окружение 271 виртуальной машины проиллюстрировано как вмещающее операционную систему, в форме примерной операционной системы 281, которая может быть аналогичной примерной операционной системе 240 или может представлять собой другой тип операционной системы. Для целей иллюстрации, примерная операционная система 281, выполняющаяся внутри примерного окружения 271 виртуальной машины, проиллюстрирована как содержащая диспетчер запоминающего устройства, а именно, примерный диспетчер 282 запоминающего устройства, который, в свою очередь, обращается к таблице страниц, а именно, к примерной таблице 283 страниц для того, чтобы предоставлять виртуальное запоминающее устройство в окружении 271 виртуальной машины. Такое виртуальное запоминающее устройство в окружении 271 виртуальной машины может использоваться посредством процессов, выполняющихся поверх примерной операционной системы 281, таких как примерные процессы 291 и 292, которые проиллюстрированы на фиг. 2 как также выполняющиеся внутри примерного окружения 271 виртуальной машины.

[0033] Способом, аналогичным способу, реализованному посредством диспетчеров 241 и 282 запоминающего устройства, гипервизор 210, в упрощении представления виртуального набора вычислительных аппаратных средств, включающих в себя запоминающее устройство, может аналогично транслировать адреса ячеек запоминающего устройства из одной схемы адресации ячеек запоминающего устройства в другую, отличающуюся схему адресации ячеек запоминающего устройства. Более конкретно, гипервизор 210 может транслировать адреса ячеек запоминающего устройства, которые представляются посредством гипервизора 210 в качестве адресов ячеек физического запоминающего устройства, в фактические адреса ячеек физического запоминающего устройства, такие как, например, адреса ячеек запоминающего устройства, которые идентифицируют физические местоположения в запоминающем устройстве 132. Такая трансляция может выполняться с обращением к другой иерархически организованной таблице, а именно, к SLAT 220, которая также может предоставлять трансляцию адресов ячеек запоминающего устройства между одной схемой адресации ячеек запоминающего устройства, в этом случае адресов, которые воспринимаются посредством процессов, выполняющихся поверх гипервизора 210, в качестве адресов ячеек физического запоминающего устройства, и другой, отличающейся схемой адресации ячеек запоминающего устройства, а именно, в этом случае, фактических адресов ячеек физического запоминающего устройства.

[0034] Согласно одному аспекту, виртуальное запоминающее устройство, предоставленное посредством операционной системы 240, может использоваться для того, чтобы резервировать физическое запоминающее устройство виртуальной машины вместо использования выделений ячеек физического запоминающего устройства без подкачки страниц на вычислительном хост-устройстве. Это обеспечивает возможность диспетчеру 241 запоминающего устройства управлять физическим запоминающим устройством хоста, ассоциированным с гостевым физическим запоминающим устройством. В частности, логика управления запоминающим устройством, которая уже существует на хосте, такая как диспетчер 241 запоминающего устройства, теперь может использоваться для того, чтобы управлять физическим запоминающим устройством гостевых виртуальных машин. Это позволяет обеспечивать возможность использования меньшего гипервизора, с точки зрения объема кода, используемого для того, чтобы реализовывать гипервизор, такой как примерный гипервизор 210. Меньший гипервизор может быть более защищенным, поскольку предусмотрен меньшей объем кода, который может использоваться, либо который может иметь ошибки. Дополнительно, это обеспечивает увеличенную плотность виртуальных машин на хосте, поскольку меньшее физическое запоминающее устройство хоста может использоваться для того, чтобы реализовывать виртуальные машины. Например, ранее, поскольку процесс виртуальной машины требует запоминающего устройства без подкачки страниц, если примерное вычислительное устройство 100 содержит 3 ГБ RAM 132, то он может только вмещать один процесс виртуальной машины, который создает виртуальную машину, имеющую 2 ГБ RAM. В отличие от этого, если запоминающее устройство, потребляемое посредством процесса виртуальной машины, такого как примерный процесс 270 виртуальной машины, представляет собой виртуальное запоминающее устройство, такое как виртуальное запоминающее устройство, предоставленное посредством диспетчера 241 запоминающего устройства операционной системы 240, то пространство виртуального запоминающего устройства в 4 ГБ может предоставлять поддержку для двух процессов виртуальной машины, каждый из которых создает виртуальную машину, имеющую 2 ГБ RAM. Таким образом, примерное вычислительное устройство 100 может вмещать два процесса виртуальной машины, вместо только одного, за счет этого увеличивая плотность процессов виртуальной машины, выполняющихся на примерном вычислительном устройстве 100.

[0035] Другие преимущества включают в себя одну кодовую базу управления запоминающим устройством, управляющую всем запоминающим устройством в системе (в хост- и в виртуальной машине). Таким образом, улучшения, исправления и/или настройка одной кодовой базы обеспечивают преимущества для всех. Дополнительно, это может приводить к уменьшению затрат на инженерно-техническое обеспечение вследствие необходимости поддерживать только одну кодовую базу. Другое примерное преимущество может заключаться в том, что виртуальные машины могут сразу извлекать выгоду из улучшений по плотности, таких как подкачка страниц, совместное использование страниц, тренировка и подстройка рабочих наборов, кластеризация отказов и т.д. Другое примерное преимущество может заключаться в том, что лимиты потребления виртуального запоминающего устройства и физического запоминающего устройства могут задаваться на виртуальных машинах идентично любому другому процессу, обеспечивая для администраторов способность управлять поведением системы. Другое примерное преимущество может заключаться в том, что дополнительные признаки могут добавляться в диспетчер запоминающего устройства хоста для того, чтобы предоставлять большую производительность, плотность и функциональность для виртуальных машин (и другие рабочие нагрузки не для виртуальных машин с большой вероятностью также должны извлекать выгоду из них).

[0036] Обращаясь к фиг. 3, система 300 иллюстрирует терминологию, используемую в данном документе для того, чтобы упоминать несколько уровней таблиц страниц и соответствующих схем адресации ячеек запоминающего устройства, которые являются применимыми к системе 200, показанной на фиг. 2. Более конкретно, в окружении 271 виртуальной машины, примерный диспетчер 282 запоминающего устройства может обращаться к таблице 283 страниц для того, чтобы коррелировать адреса ячеек виртуального запоминающего устройства, в контексте окружения 271 виртуальной машины, в адреса ячеек физического запоминающего устройства, снова, в контексте окружения 271 виртуальной машины. Как указано выше, термин "виртуальное запоминающее устройство" означает не запоминающее устройство в окружении виртуальной машины, а вместо этого объем запоминающего устройства, доступного для процессов, выполняющихся на вычислительном устройстве, которое поддерживается посредством, но превышает емкость физического запоминающего устройства. Таким образом, чтобы номинативно отличать между виртуальным запоминающим устройством в окружении виртуальной машины и виртуальным запоминающим устройством в невиртуализированном (или без программного обеспечения) вычислительном окружении, используются прилагательные "гостевой" и "хост-", при этом прилагательное "гостевой" указывает вычислительное окружение виртуальной машины, а прилагательное "хост-" указывает вычислительное окружение без программного обеспечения, в котором выполняется процесс виртуальной машины, который предоставляет окружение виртуальной машины.

[0037] По сути, и как проиллюстрировано в системе 301, адреса в схеме адресации ячеек "гостевого виртуального запоминающего устройства 311" могут коррелироваться с адресами в схеме адресации ячеек "гостевого физического запоминающего устройства 312" посредством таблицы 283 страниц в окружении 271 виртуальной машины, которое показано на фиг 2. Аналогично, адреса в схеме адресации ячеек "виртуального запоминающего устройства хоста 321" могут коррелироваться с адресами в схеме адресации ячеек "физического запоминающего устройства хоста 322" посредством таблицы 250 страниц, которая представляет собой часть примерной операционной системы 240, которая показана на фиг 2 как выполняющаяся в невиртуальном вычислительном окружении. Хотя не проиллюстрировано посредством примерной системы 301 на фиг. 3, согласно одному аспекту и как подробнее описано ниже, гостевое физическое запоминающее устройство 312 окружения виртуальной машины может резервироваться посредством виртуального запоминающего устройства хоста 321, за счет этого предоставляя вышеуказанные преимущества. Такое резервирование гостевого физического запоминающего устройства 312 с виртуальным запоминающим устройством хоста 321 может влечь за собой модификацию SLAT 220, которая предоставляет трансляцию между схемой адресации ячеек "гостевого физического запоминающего устройства 312" и схемой адресации ячеек "физического запоминающего устройства хоста 322", как проиллюстрировано посредством примерной системы 301.

[0038] Обращаясь к системе 302, также показанной на фиг. 3, проиллюстрирована иерархическая компоновка таблиц, к примеру, которая может использоваться для того, чтобы реализовывать примерную таблицу 250 страниц, примерную таблицу 283 страниц и/или примерную SLAT 220. Чтобы справляться с объемами запоминающего устройства, применимыми к современным вычислительным устройствам и процессам прикладной программы, таблицы 250, 283 страниц и/или SLAT 220 должны иметь несколько, типично четыре, уровней иерархических таблиц. Тем не менее, для простоты иллюстрации система 302 иллюстрирует только два уровня иерархических таблиц. Таблица 340 иерархически более высокого уровня может содержать несколько записей таблицы, таких как примерные записи 341, 342, 343 и 344 таблицы. Например, таблица 340 иерархически более высокого уровня может иметь размер в 4 КБ и может содержать 512 дискретных записей таблицы, которые могут иметь размер в восемь байтов. Каждая запись таблицы может содержать указатель или другой аналогичный идентификатор таблицы иерархически более низкого уровня, такой как одна из примерных таблиц 350 и 360 иерархически более низкого уровня. Таким образом, например, примерная запись 341 таблицы может содержать идентификацию примерной таблицы 350 иерархически более низкого уровня, как проиллюстрировано посредством стрелки 371. Если таблица 340 иерархически более высокого уровня имеет размер в 4 КБ, и каждая запись таблицы имеет размер в восемь байтов, по меньшей мере, некоторые из этих восьми байтов данных могут представлять собой указатель либо другой аналогичный идентификатор таблицы 350 иерархически более низкого уровня. Примерная запись 342 таблицы, аналогичным образом, может содержать идентификацию таблицы 360 иерархически более низкого уровня, как проиллюстрировано посредством стрелки 372. Каждая из оставшихся дискретных записей таблицы для примерной таблицы 340 иерархически более высокого уровня, аналогично, может идентифицировать уникальные таблицы иерархически более низкого уровня. Таким образом, в примере, в котором таблица 340 иерархически более высокого уровня имеет размер в 4 КБ и содержит 512 записей таблицы, каждая из которых иметь размер в восемь байтов, такая таблица 340 иерархически более высокого уровня может содержать 512 идентификаций 512 уникальных иерархических таблиц более низкого уровня, таких как примерные таблицы 350 и 360 иерархически более низкого уровня.

[0039] Каждая из таблиц иерархически более низкого уровня, аналогичным способом, может содержать отдельные записи таблицы. Например, примерная таблица 350 иерархически более низкого уровня может содержать примерные записи 251, 352, 353 и 354 таблицы. Аналогично, примерная таблица 360 иерархически более низкого уровня может содержать записи 361, 362, 363 и 364 таблицы. В качестве одного примера, каждая из таблиц иерархически более низкого уровня может иметь эквивалентный размер и структуру с таблицей 340 иерархически более высокого уровня. Таким образом, примерная таблица 350 иерархически более низкого уровня может иметь размер в 4 КБ и может содержать 512 записей таблицы, таких как примерные записи 351, 352, 353 и 354 таблицы, которые могут иметь размер в восемь байтов. В примере, проиллюстрированном посредством системы 302, записи таблицы для таблиц иерархически более низкого уровня, такие как, например, примерные записи 351, 352, 353 и 354 таблицы для примерной таблицы 350 иерархически более низкого уровня, могут идентифицировать непрерывный диапазон адресов ячеек запоминающего устройства. Например, примерная запись 351 таблицы может идентифицировать диапазон адресов 371 ячеек запоминающего устройства, как проиллюстрировано посредством стрелки 391. Диапазон адресов 371 ячеек запоминающего устройства может содержать "страницу" запоминающего устройства и может составлять наименьший отдельно управляемый объем запоминающего устройства. Таким образом, такие действия, как перемещение информации, сохраненной в энергозависимом запоминающем устройстве, временно на энергонезависимые носители хранения данных или наоборот, в качестве части активации объема виртуального запоминающего устройства, который превышает объем установленного физического запоминающего устройства, могут выполняться на постраничной основе. Дополнительно, разрешения на доступ могут устанавливаться на постраничной основе. Например, поскольку диапазон запоминающего устройства 371 отдельно идентифицируется посредством записи 351 таблицы, разрешения на доступ могут применяться ко всем адресам ячеек запоминающего устройства в диапазоне запоминающего устройства 371. С другой стороны, разрешения на доступ адресов ячеек запоминающего устройства в диапазоне запоминающего устройства 371 могут быть независимыми от разрешений на доступ, устанавливаемых для диапазона запоминающего устройства 372, которое может уникально идентифицироваться посредством другой записи таблицы, а именно, записи 352 таблицы, как проиллюстрировано посредством стрелки 392.

[0040] Объем запоминающего устройства на одной странице запоминающего устройства, такой как диапазон запоминающего устройства 371, может зависеть от различных факторов, включающих в себя конструкцию процессора и другие аппаратные факторы, а также соединения связи и т.п. В одном примере, страница запоминающего устройства, такая как страница, представленная посредством диапазона запоминающего устройства 371, может иметь размер в 4 КБ.

[0041] При приеме запроса на то, чтобы осуществлять доступ к местоположениям ячеек запоминающего устройства, идентифицированным посредством одного или более адресов ячеек запоминающего устройства, может идентифицироваться запись таблицы в таблице иерархически более высокого уровня, которая соответствует диапазону адресов ячеек запоминающего устройства, который включает в себя адреса ячеек запоминающего устройства, к которым должен осуществляться доступ. Например, если адреса ячеек запоминающего устройства, к которым осуществляется доступ, включаются в запоминающее устройство, представленное посредством запоминающего устройства 371, запись 341 таблицы может идентифицироваться в таблице 340 иерархически более высокого уровня. Идентификация записи 341 таблицы, в свою очередь, может приводить к идентификации таблицы 350 иерархически более низкого уровня. В таблице 350 иерархически более низкого уровня адреса ячеек запоминающего устройства, к которым должен осуществляться доступ, могут определяться в качестве части запоминающего устройства, которая идентифицируется посредством записи 351 таблицы. Информация в записи 351 таблицы затем может идентифицировать запоминающее устройство 371, искомое для доступа.

[0042] Каждое такое прохождение по иерархически более низкому уровню таблицы страниц может увеличивать задержку между приемом запроса на то, чтобы осуществлять доступ к запоминающему устройству, и возвратом доступа к этому запоминающему устройству. Согласно одному аспекту, запись таблицы для таблицы иерархически более высокого уровня, такая как, например, примерная запись 341 таблицы для таблицы 340 иерархически более высокого уровня, может идентифицировать не таблицу иерархически более низкого уровня, такую как примерная таблица 350 иерархически более низкого уровня, а вместо этого страницу запоминающего устройства, которая может соответствовать всему диапазону запоминающего устройства, который должен идентифицироваться посредством записей таблицы в таблице иерархически более низкого уровня. Таким образом, например, если каждая страница запоминающего устройства 371, 372 и 373, идентифицированного посредством отдельных записей 351, 352 и 353 таблицы для таблицы 350 иерархически более низкого уровня, имеет размер в 4 КБ, то диапазон запоминающего устройства с размером в 2 МБ может идентифицироваться посредством комбинированного количества всех отдельных записей таблицы для таблицы 350 иерархически более низкого уровня, поскольку примерная таблица 350 иерархически более низкого уровня может содержать 512 записей таблицы, каждая из которых идентифицирует диапазон запоминающего устройства с размером в 4 КБ. В таком примере, если все 2 МБ запоминающего устройства обрабатываются в качестве одной страницы запоминающего устройства в 2 МБ, такая одна большая страница запоминающего устройства может идентифицироваться непосредственно посредством примерной записи 341 таблицы для таблицы 340 иерархически более высокого уровня. В таком случае, поскольку примерная запись 341 таблицы должна непосредственно идентифицировать одну страницу запоминающего устройства в 2 МБ, такую как примерная страница 370 запоминающего устройства в 2 МБ, и не должна идентифицировать таблицу иерархически более низкого уровня, не возникает необходимости вообще обращаться к таблицам иерархически более низкого уровня. Например, если таблица страниц или SLAT содержит четыре иерархических уровня, использование большой страницы запоминающего устройства, такой как примерная большая страница 370 запоминающего устройства, должно обеспечивать возможность одному из этих иерархических уровней таблиц пропускаться и не подлежать обращению, за счет этого предоставляя трансляцию адресов ячеек запоминающего устройства между виртуальным и физическим запоминающим устройством посредством обращения только к трем иерархическим уровням таблиц, вместо четырех, предоставляя доступ к запоминающему устройству более эффективно, а именно, на 25% более эффективно.. Поскольку страница составляет наименьший объем отдельно управляемого запоминающего устройства, если страница запоминающего устройства с размером в 2 МБ используется, то разрешения на доступ к запоминающему устройству, например, могут быть идентичными для всех 2 МБ запоминающего устройства в такой большой странице запоминающего устройства.

[0043] В качестве дополнительного примера, если предусмотрена иерархически организованная таблица, которая находится иерархически выше примерной таблицы 340, и каждая запись в примерной таблице 340, такая как записи 341, 342, 343 и 344, может адресовать страницу запоминающего устройства в 2 МБ, такую как примерная страница 370 запоминающего устройства в 2 МБ, то 512 таких отдельных записей таблицы при агрегировании вместе могут адресовать 1 ГБ запоминающего устройства. Если одна страница запоминающего устройства в 1 ГБ использована, обращение к таблице 340 и последующее обращение к таблице иерархически более низкого уровня, такой как примерная таблица 350, могут исключаться. Возвращаясь к примеру, в котором таблица страниц или SLAT содержит четыре иерархических уровня, использование такой огромной страницы запоминающего устройства должно обеспечивать возможность двум из этих иерархических уровней таблиц пропускаться и не подлежать обращению, за счет этого предоставляя трансляцию адресов ячеек запоминающего устройства между виртуальным и физическим запоминающим устройством посредством обращения только к иерархическим уровням таблиц, вместо четырех, предоставляя доступ к запоминающему устройству приблизительно за половину времени. С другой стороны, поскольку страница составляет наименьший объем отдельно управляемого запоминающего устройства, если страница запоминающего устройства с размером в 1 ГБ используется, то разрешения на доступ к запоминающему устройству, например, могут быть идентичными для всего 1 ГБ запоминающего устройства в такой огромной странице запоминающего устройства.

[0044] Термин "большая страница запоминающего устройства", при использовании в данном документе, означает непрерывный диапазон запоминающего устройства, который имеет такой размер, что он охватывает все диапазоны запоминающего устройства, которые должны идентифицироваться посредством одной таблицы на иерархически самом нижнем уровне, и может уникально и непосредственно идентифицироваться посредством одной записи таблицы для таблицы на один иерархический уровень выше таблицы иерархически самого нижнего уровня. В конкретном примере установления размеров, предоставленном выше, "большая страница запоминающего устройства", при задании этого термина в данном документе, должна представлять собой страницу запоминающего устройства с размером в 2 МБ. Тем не менее, как указано, термин "большая страница запоминающего устройства" не означает конкретный размер, и вместо этого объем запоминающего устройства в "большой странице запоминающего устройства" зависит от иерархического проектирования непосредственно таблицы страниц и объема запоминающего устройства, к которому обращаются посредством каждой записи таблицы на иерархически самом нижнем уровне таблицы страниц.

[0045] Аналогичным образом, термин "огромная страница запоминающего устройства", при использовании в данном документе, означает непрерывный диапазон запоминающего устройства, который имеет такой размер, что он охватывает все диапазоны запоминающего устройства, которые должны идентифицироваться посредством одной таблицы на иерархически втором снизу уровне, и может уникально и непосредственно идентифицироваться посредством одной записи таблицы для таблицы на один иерархический уровень выше таблицы иерархически второго самого нижнего уровня. В конкретном примере установления размеров, предоставленном выше, "огромная страница запоминающего устройства", при использовании этого термина в данном документе, должна представлять собой страницу запоминающего устройства с размером в 1 ГБ. С другой стороны, как указано, термин "огромная страница запоминающего устройства" не означает конкретный размер, и вместо этого объем запоминающего устройства в "огромной странице запоминающего устройства" зависит от иерархического проектирования непосредственно таблицы страниц и объема запоминающего устройства, к которому обращаются посредством каждой записи таблицы на иерархически самом нижнем уровне таблицы страниц.

[0046] Возвращаясь к фиг. 2, описания механизмов, посредством которых виртуальное запоминающее устройство хоста (вычислительного хост-устройства) может использоваться для того, чтобы резервировать гостевое физическое запоминающее устройство (виртуальной машины), предоставляются со ссылкой на стек виртуализации, такой как примерный стек 230 виртуализации, показанный на фиг. 2. Процесс пользовательского режима может выполняться на вычислительном хост-устройстве, чтобы предоставлять виртуальное запоминающее устройство для резервирования гостевых виртуальных машин. Один такой процесс пользовательского режима может создаваться для каждой гостевой машины. Альтернативно, один процесс пользовательского режима может использоваться для нескольких виртуальных машин, либо несколько процессов могут использоваться для одной виртуальной машины. Альтернативно, виртуальное запоминающее устройство может реализовываться способами, отличающимися от использования процесса пользовательского режима, как проиллюстрировано ниже. Для целей иллюстрации, виртуальное запоминающее устройство, назначенное процессу 270 виртуальной машины, может использоваться для того, чтобы резервировать гостевое физическое запоминающее устройство, представленное посредством процесса 270 виртуальной машины в окружении 271 виртуальной машины, и, аналогично, виртуальное запоминающее устройство, назначенное процессу 260 виртуальной машины, может использоваться для того, чтобы резервировать гостевое физическое запоминающее устройство, представленное посредством процесса 260 виртуальной машины в окружении 261 виртуальной машины. Хотя иллюстрируется по сути в примерной системе 200 по фиг. 2, вышеуказанный процесс пользовательского режима может быть отдельным от процессов виртуальной машины, таких как примерные процессы 260 и 270 виртуальной машины.

[0047] Согласно одному аспекту, стек виртуализации, такой как примерный стек 230 виртуализации, может выделять виртуальное запоминающее устройство хоста в адресном пространстве указанного процесса пользовательского режима, который должен вмещать виртуальную машину, такого как примерный процесс 260 или 270 виртуальной машины. Диспетчер 241 запоминающего устройства хоста может обрабатывать это запоминающее устройство в качестве любого другого виртуального выделения, что означает то, что оно может подвергаться подкачке страниц, физическая страница, резервирующая его, может изменяться для целей удовлетворения выделениям смежных ячеек запоминающего устройства в другом месте в системе, физические страницы могут совместно использоваться с другим виртуальным выделением в другом процессе (которое, в свою очередь, может представлять собой другое выделение резервирования виртуальной машины либо любое другое выделение в системе). Одновременно, множество оптимизаций являются возможными, чтобы заставлять диспетчер запоминающего устройства хоста обрабатывать виртуальные выделения резервирования виртуальной машины конкретным требуемым образом. Кроме того, если стек 230 виртуализации выбирает приоритезацию производительности выше плотности, он может выполнять множество операций, поддерживаемых посредством диспетчера 241 запоминающего устройства операционной системы, таких как блокировка страниц в запоминающем устройстве, чтобы обеспечивать то, что виртуальная машина не должна подвергаться подкачке страниц для этих частей. Аналогично, большие страницы могут использоваться для того, чтобы предоставлять еще большую производительность для виртуальной машины, как подробнее описано ниже.

[0048] Данная виртуальная машина может резервировать все свои адреса ячеек гостевого физического запоминающего устройства в гостевом физическом запоминающем устройстве посредством виртуального запоминающего устройства хоста, либо может резервировать некоторые свои адреса ячеек гостевого физического запоминающего устройства в гостевом физическом запоминающем устройстве посредством виртуального запоминающего устройства хоста, а некоторые - посредством унаследованных механизмов, таких как выделения ячеек физического запоминающего устройства без подкачки страниц, выполняемые из физического запоминающего устройства хоста.

[0049] Когда новая виртуальная машина создается, стек 230 виртуализации может использовать процесс пользовательского режима для того, чтобы организовывать выделение ячеек виртуального запоминающего устройства для того, чтобы резервировать гостевое физическое запоминающее устройство. Он может представлять собой новый созданный пустой процесс, существующий процесс, вмещающий несколько виртуальных машин, либо процесс в расчет на виртуальную машину, который также содержит другие связанные с виртуальной машиной виртуальные выделения, которые не являются видимыми для самой виртуальной машины (например, структуры данных стека виртуализации). Также является возможным использовать виртуальное адресное пространство ядра для того, чтобы резервировать виртуальную машину. После того как такой процесс находится или создается, стек 230 виртуализации может выполнять частное виртуальное выделение ячеек запоминающего устройства (либо преобразование секций/файлов) в своем адресном пространстве, которое соответствует объему гостевого физического запоминающего устройства, которое должна иметь виртуальная машина. В частности, виртуальное запоминающее устройство может представлять собой частное выделение, преобразование файлов, преобразование секций с резервированием с помощью файла подкачки страниц либо любой другой тип выделения, поддерживаемого посредством диспетчера 241 запоминающего устройства хоста. Оно не должно обязательно представлять собой одно смежное выделение, хотя, как подробнее описано ниже, такое выделение может предоставлять преимущества по скорости доступа. Такое выделение, вместо этого, может представлять собой произвольное число выделений.

[0050] После того как выделения ячеек виртуального запоминающего устройства выполнены, они могут регистрироваться в компонентах, которые должны управлять физическим адресным пространством виртуальной машины, таким как примерное окружение 271 виртуальной машины, и сохранять его синхронно со страницами физического запоминающего устройства хоста, которые диспетчер 241 запоминающего устройства хоста должен выбирать для того, чтобы резервировать выделения ячеек виртуального запоминающего устройства. Эти компоненты могут представлять собой гипервизор 210 и стек 230 виртуализации, который может реализовываться как часть хост-ядра и/или драйвера. Гипервизор 210 может управлять трансляцией между диапазонами адресов ячеек гостевого физического запоминающего устройства и соответствующими диапазонами адресов ячеек физического запоминающего устройства хоста посредством использования SLAT 220. В частности, стек 230 виртуализации может обновлять SLAT 220 со страницами физического запоминающего устройства хоста, которые резервируют соответствующие страницы гостевого физического запоминающего устройства. Гипервизор 210 может обеспечивать доступность способности стека 230 виртуализации принимать перехваты, когда определенный тип доступа выполняется посредством гостевой виртуальной машины, такой как примерная виртуальная машина 271, для данного адреса ячейки гостевого физического запоминающего устройства. Например, стек 230 виртуализации может запрашивать возможность принимать перехват, когда определенный физический адрес записывается посредством гостевой виртуальной машины 271.

[0051] Согласно одному аспекту, когда виртуальная машина, такая как примерная виртуальная машина 271, сначала создается, SLAT 220 может не содержать действительные записи, соответствующие такой виртуальной машине, поскольку адреса ячеек физического запоминающего устройства хоста могут не выделяться для того, чтобы резервировать адреса ячеек гостевого физического запоминающего устройства такой виртуальной машины (хотя, как проиллюстрировано ниже, в некоторых вариантах осуществления, SLAT 220 может заранее заполняться для некоторых адресов ячеек гостевого физического запоминающего устройства во время или приблизительно во время создания виртуальной машины 271). Гипервизор 210 может иметь сведения по диапазонам адресов ячеек гостевого физического запоминающего устройства, которые используются посредством виртуальной машины 27, но ни один из них не должен резервироваться посредством любого физического запоминающего устройства хоста в этот момент. Когда процесс 270 виртуальной машины начинает выполнение, он может начинать осуществлять доступ к своим страницам (гостевого) физического запоминающего устройства. По мере того, как к каждому новому адресу ячейки физического запоминающего устройства осуществляется доступ, он может формировать перехват соответствующего типа (для считывания/записи/выполнения), поскольку соответствующая SLAT-запись еще не заполняется с соответствующими адресами ячеек физического запоминающего устройства хоста. Гипервизор 210 может принимать перехват гостевого доступа и может перенаправлять его в стек 230 виртуализации. В свою очередь, стек 230 виртуализации может обращаться к структуре данных, поддерживаемой посредством стека 230 виртуализации, с тем чтобы находить диапазон адресов ячеек виртуального запоминающего устройства хоста, который соответствует запрашиваемому диапазону адресов ячеек гостевого физического запоминающего устройства (и хост-процессу, из виртуального адресного пространства которого выделено резервирование, такому как примерный процесс 270 виртуальной машины). В этот момент, стек 230 виртуализации может знать конкретный адрес ячейки виртуального запоминающего устройства хоста, который соответствует адресу ячейки гостевого физического запоминающего устройства, который формирует перехват.

[0052] Стек 230 виртуализации затем может выдавать виртуальный отказ в диспетчер 241 запоминающего устройства хоста в контексте процесса, вмещающего диапазон виртуальных адресов, к примеру, процесс 270 виртуальной машины. Виртуальный отказ может выдаваться с соответствующим типом доступа (для считывания/записи/выполнения) исходного перехвата, который возникает, когда виртуальная машина 271 осуществляет доступ к своему физическому адресу в гостевом физическом запоминающем устройстве. Виртуальный отказ может выполнять аналогичный или идентичный путь выполнения кода с тем, которому должен следовать регулярный отказ в силу отсутствия страницы, чтобы обеспечивать действительность и доступность указанного виртуального адреса посредством хост-CPU. Одно отличие может заключаться в том, что путь выполнения кода виртуального отказа может возвращать номер физической страницы, который диспетчер 241 запоминающего устройства использует для того, чтобы обеспечивать действительность виртуального адреса. Этот номер физической страницы может представлять собой адрес ячейки физического запоминающего устройства хоста, который резервирует виртуальный адрес хоста, который, в свою очередь, резервирует адрес ячейки гостевого физического запоминающего устройства, который первоначально формирует перехват доступа в гипервизоре 210. В этот момент, стек 230 виртуализации может формировать или обновлять запись таблицы в SLAT 220, соответствующей исходному адресу ячейки гостевого физического запоминающего устройства, который формирует перехват с адресом ячейки физического запоминающего устройства хоста и типом доступа (для считывания/записи/выполнения), который использован для того, чтобы обеспечивать действительность виртуального адреса в хосте. После того как это выполняется, адрес ячейки гостевого физического запоминающего устройства может быть немедленно доступным с этим типом доступа для гостевой виртуальной машины 271. Например, параллельный виртуальный процессор в гостевой виртуальной машине 271 может немедленно осуществлять доступ к такому адресу без осуществления перехвата. Исходная обработка перехватов может быть закончена, и исходный виртуальный процессор, который формирует перехват, может повторно выполнять свою инструкцию и переходить к осуществлению доступа к запоминающему устройству теперь, когда SLAT содержит запись таблицы, которая может коррелировать запрашиваемый физический адрес гостя с соответствующим адресом ячейки физического запоминающего устройства хоста.

[0053] Если и/или когда диспетчер 241 запоминающего устройства хоста определяет необходимость выполнять любое действие, которое может или должно изменять резервирование физического адреса хоста виртуального адреса хоста, который задан действительным через виртуальный отказ, он может выполнять очистку буфера трансляции (TLB) для этого виртуального адреса хоста. Он может уже выполнять такое действие, чтобы соответствовать действующему соглашению, которое может иметь диспетчер 241 запоминающего устройства хоста с аппаратными CPU на хосте. Стек 230 виртуализации может перехватывать такие TLB-очистки и делать недействительными соответствующие SLAT-записи любых виртуальных адресов хоста, которые очищаются, которые резервируют любые адреса ячеек гостевого физического запоминающего устройства в любых виртуальных машинах. Вызов на предмет TLB-очистки может идентифицировать диапазон очищаемых виртуальных адресов. Стек 230 виртуализации затем может выполнять поиск очищаемых виртуальных адресов хоста относительно своих структур данных, которые могут индексироваться посредством виртуального адреса хоста, чтобы находить гостевые физические диапазоны, которые могут резервироваться посредством данного виртуального адреса хоста. Если находятся любые такие диапазоны, SLAT-записи, соответствующие этим адресам ячеек гостевого физического запоминающего устройства, могут делаться недействительными. Дополнительно, диспетчер запоминающего устройства хоста может обрабатывать виртуальные выделения, которые резервируют виртуальное запоминающее устройство, по-другому при необходимости или желании оптимизировать поведение по TLB-очистке (например, чтобы уменьшать время недействительности SLAT, последующие перехваты запоминающего устройства и т.д.)

[0054] Стек 230 виртуализации может тщательно синхронизировать обновление SLAT 220 с номером страницы физического запоминающего устройства хоста, возвращаемым из виртуального отказа (который обслуживается посредством диспетчера 241 запоминающего устройства), относительно TLB-очисток, выполняемых посредством хоста (которые выдаются посредством диспетчера 241 запоминающего устройства). Это может осуществляться для того, чтобы исключать добавление сложной синхронизации между диспетчером 241 запоминающего устройства хоста и стеком 230 виртуализации. Номер физической страницы, возвращаемый посредством виртуального отказа, может быть неактуальным к тому времени, когда он возвращается в стек 230 виртуализации. Например, виртуальные адреса могут уже делаться недействительными. Посредством перехвата вызовов на предмет TLB-очистки из диспетчера 241 запоминающего устройства хоста, стек 230 виртуализации может знать, когда возникает это состязание, и повторять попытку виртуального отказа, чтобы получать обновленный номер физической страницы.

[0055] Когда стек 230 виртуализации признает недействительной SLAT-запись, любой последующий доступ к этому адресу ячейки гостевого физического запоминающего устройства посредством виртуальной машины 271 снова формирует перехват в гипервизор 210, который, в свою очередь, перенаправляется в стек 230 виртуализации для разрешения, как описано выше. Идентичный процесс может повторяться, когда к адресу ячейки гостевого физического запоминающего устройства осуществляется доступ для считывания сначала, и затем позднее в него выполняется запись. Запись формирует отдельный перехват, поскольку SLAT-запись может задаваться действительной только с типом доступа для "считывания". Этот перехват может перенаправляться в стек 230 виртуализации, как обычно, и виртуальный отказ с доступом "записи" может выдаваться в диспетчер 241 запоминающего устройства хоста для соответствующего виртуального адреса. Диспетчер 241 запоминающего устройства хоста может обновлять свое внутреннее состояние (типично в записи таблицы страниц (или "PTE")), чтобы указывать то, что страница физического запоминающего устройства хоста теперь является грязной. Это может осуществляться до разрешения виртуальной машине записывать в свой адрес ячейки гостевого физического запоминающего устройства, в силу этого исключая потери и/или повреждение данных. Если и/или когда диспетчер 241 запоминающего устройства хоста определяет необходимость подстраивать этот виртуальный адрес (которая должна выполнять TLB-очистку и делать недействительной соответствующую SLAT-запись в качестве результата), диспетчер 241 запоминающего устройства хоста может знать то, что страница является грязной и должна записываться на энергонезависимый машиночитаемый носитель хранения данных, к примеру, в файл подкачки страниц на накопителе на жестких дисках, до переназначения. Таким образом, вышеописанная последовательность не отличается от того, что должно происходить при регулярном частном виртуальном выделении для любого другого процесса, выполняющегося на вычислительном хост-устройстве 100.

[0056] В качестве одной оптимизации, диспетчер 241 запоминающего устройства хоста может выбирать выполнять проход комбинирования страниц по всему своему запоминающему устройству 120. Он может представлять собой операцию, в которой диспетчер 241 запоминающего устройства хоста находит идентичные страницы для всех процессов и комбинирует их в одну неперезаписываемую копию страницы, которую совместно используют все процессы. Если и/или когда любой из комбинированных виртуальных адресов записывается, диспетчер 241 запоминающего устройства может выполнять операцию копирования при записи, чтобы обеспечивать продолжение записи. Такая оптимизация теперь может работать прозрачно для виртуальных машин, таких как примерные виртуальные машины 261 и 271, чтобы повышать плотность виртуальных машин, выполняющихся на данном вычислительном устройстве, посредством комбинирования идентичных страниц на виртуальных машинах и за счет этого уменьшения потребления запоминающего устройства. Когда комбинирование страниц возникает, диспетчер 241 запоминающего устройства хоста может обновлять PTE, которые преобразуют затрагиваемые виртуальные адреса. В ходе этого обновления, он может выполнять TLB-очистку, поскольку адрес ячейки физического запоминающего устройства хоста может изменяться для этих виртуальных адресов с уникальной частной страницы на совместно используемую страницу. В качестве части означенного, как описано выше, стек 230 виртуализации может делать недействительными соответствующие SLAT-записи. Если и/или когда адреса ячеек гостевого физического запоминающего устройства, виртуальные адреса которых комбинированы для того, чтобы указывать на совместно используемую страницу, считываются, разрешение виртуального отказа может возвращать номер физической страницы совместно используемой страницы в ходе обработки перехватов, и SLAT 220 может обновляться, чтобы указывать на совместно используемую страницу.

[0057] Если в какие-либо из комбинированных адресов ячеек гостевого физического запоминающего устройства выполняется запись посредством виртуальной машины, виртуальный отказ с доступом для записи может выполнять операцию копирования при записи, и новый номер частной страницы физического запоминающего устройства хоста может возвращаться и обновляться в SLAT 220. Например, стек 230 виртуализации может направлять диспетчер 241 запоминающего устройства хоста с возможностью выполнять проход комбинирования страниц. В некоторых вариантах осуществления, стек 230 виртуализации может указывать то, какая часть запоминающего устройства должна сканироваться на предмет комбинирования, либо то, какие процессы должны сканироваться. Например, стек 230 виртуализации может идентифицировать процессы, такие как примерные процессы 260 и 270 виртуальной машины, выделения виртуального запоминающего устройства хоста которых резервируют гостевое физическое запоминающее устройство соответствующих виртуальных машин, а именно, примерных виртуальных машин 261 и 271, как представляющие собой процессы, которые должны сканироваться на предмет комбинирования.

[0058] Даже когда SLAT 220 обновляется, чтобы обеспечивать возможность доступа для записи вследствие выполнения виртуального отказа для записи, гипервизор 210 может поддерживать инициирование перехватов записей в такие SLAT-записи, по запросу посредством стека 230 виртуализации. Это может быть полезным, поскольку стек 230 виртуализации может хотеть знать, когда возникают записи, независимо от того факта, что для диспетчера 241 запоминающего устройства хоста является действительным то, что эти записи возникают. Например, живая миграция виртуальных машин или создание снимков состояния виртуальных машин может влечь за собой мониторинг записей посредством стека 230 виртуализации. Стек 230 виртуализации по-прежнему может уведомляться, когда записи возникают, даже если состояние диспетчера запоминающего устройства хоста уже обновлено, соответственно, для записей, таких как, например, если PTE уже помечена как грязная.

[0059] Диспетчер 241 запоминающего устройства хоста может иметь возможность поддерживать точную предысторию доступа для каждой виртуальной страницы хоста, резервирующей адресное пространство гостевого физического запоминающего устройства, идентично регулярным виртуальным страницам хоста, выделяемым в адресном пространстве любого другого процесса. Например, "бит для доступа" в PTE может обновляться во время виртуальных отказов, выполняемых в качестве части обработки перехватов запоминающего устройства. Когда диспетчер запоминающего устройства хоста сбрасывает бит для доступа на любой PTE, он может уже очищать TLB, чтобы исключать повреждение содержимого запоминающего устройства. Как описано выше, эта TLB-очистка может делать недействительной соответствующую SLAT-запись, которая может, в свою очередь, формировать перехват доступа, если виртуальная машина осуществляет доступ к своему адресу ячейки гостевого физического запоминающего устройства снова. В качестве части обработки перехвата, обработка виртуальных отказов в диспетчере 241 запоминающего устройства хоста может задавать бит для доступа снова, за счет этого поддерживая надлежащую предысторию доступа для страницы. Альтернативно, по причинам производительности, к примеру, чтобы исключать перехваты доступа в гипервизоре 210 в максимально возможной степени, диспетчер 241 запоминающего устройства хоста может потреблять информацию по доступу страницы непосредственно из гипервизора 210, собираемую из SLAT-записей, если поддерживается посредством базовых аппаратных средств. Диспетчер 241 запоминающего устройства хоста может взаимодействовать со стеком 230 виртуализации таким образом, чтобы транслировать информацию по доступу в SLAT 220 (которая организуется посредством адресов ячеек гостевого физического запоминающего устройства) в адреса ячеек виртуального запоминающего устройства хоста, резервирующие эти адреса ячеек гостевого физического запоминающего устройства, чтобы знать то, к каким адресам осуществлен доступ.

[0060] За счет наличия точной предыстории доступа для страниц, диспетчер 241 запоминающего устройства хоста может выполнять свои обычные алгоритмы интеллектуальной тренировки и подстройки рабочих наборов процесса. Это может обеспечивать возможность диспетчеру 241 запоминающего устройства хоста анализировать состояние всей системы и выполнять интеллектуальный выбор в отношении того, какие адреса следует подстраивать и/или подвергать выкачивать, на уровне страниц, на диск либо выполнять другие аналогичные операции, с тем чтобы облегчать давление в силу нехватки запоминающего устройства при необходимости, либо по другим причинам.

[0061] В некоторых вариантах осуществления, лимиты по виртуальному и физическому запоминающему устройству могут налагаться на виртуальные машины посредством диспетчера 241 запоминающего устройства хоста идентично любому другому процессу для системы. Это может помогать системному администратору помещать в песочницу либо иным образом ограничивать или активировать виртуальные машины, такие как примерные виртуальные машины 261 и 271. Хост-система может использовать идентичные механизмы для того, чтобы добиваться этого, как и для собственных процессов. Например, в некоторых вариантах осуществления, в которых более высокая производительность требуется, виртуальная машина может иметь все свое гостевое физическое запоминающее устройство резервируемым непосредственно посредством физического запоминающего устройства хоста. Альтернативно, части могут резервироваться посредством виртуального запоминающего устройства хоста, тогда как другие части резервируются посредством физического запоминающего устройства хоста 120. В качестве еще одного другого примера, если более низкая производительность может быть приемлемой, виртуальная машина может резервироваться главным образом посредством виртуального запоминающего устройства хоста, и виртуальное запоминающее устройство хоста может быть ограничено неполным резервированием посредством физического запоминающего устройства хоста. Например, виртуальная машина, такая как примерная виртуальная машина 271, может представлять гостевое физическое запоминающее устройство с размером в 4 ГБ, которое, в свою очередь, с использованием вышеописанных процессов, может резервироваться посредством 4 ГБ виртуального запоминающего устройства хоста. Тем не менее, виртуальное запоминающее устройство хоста может ограничиваться резервированием только посредством 2 ГБ физического запоминающего устройства хоста. Это может вызывать подкачку страниц на диск или другие помехи производительности, но может представлять собой способ, для администраторов, проводить регулирование на основе уровней обслуживания или осуществлять другое управление для развертывания виртуальных машин. Аналогично, определенный объем физического запоминающего устройства может гарантироваться для виртуальной машины (при одновременном обеспечении возможности виртуальной машине резервироваться посредством виртуального запоминающего устройства хоста), поддерживаемой посредством диспетчера запоминающего устройства хоста для того, чтобы предоставлять определенный согласованный уровень производительности.

[0062] Объем гостевого физического запоминающего устройства, представленный в окружении виртуальной машины, может динамически изменяться. Когда гостевое физическое запоминающее устройство должно добавляться, другой диапазон адресов ячеек виртуального запоминающего устройства хоста может выделяться, как описано выше. После того как стек 230 виртуализации готов обрабатывать перехваты доступа для запоминающего устройства, диапазон адресов ячеек гостевого физического запоминающего устройства может добавляться в окружение виртуальной машины. При удалении адресов ячеек гостевого физического запоминающего устройства, части диапазона виртуальных адресов хоста, резервирующего удаленные адреса ячеек гостевого физического запоминающего устройства, могут освобождаться посредством диспетчера 241 запоминающего устройства хоста (и обновляться соответствующим образом в структурах данных стека 230 виртуализации). Кроме того, или помимо этого, различные API диспетчера запоминающего устройства хоста могут вызываться в этих частях диапазона виртуальных адресов хоста для того, чтобы освобождать страницы физического запоминающего устройства хоста, без освобождения пространства виртуального адреса хоста для них. Альтернативно, в некоторых вариантах осуществления, можно вообще ничего не делать, поскольку диспетчер 241 запоминающего устройства хоста может в конечном счете подстраивать эти страницы из рабочего набора и в конечном счете записывать их на диск, к примеру, в файл подкачки страниц, поскольку на практике к ним не более не должен осуществляться доступ.

[0063] Согласно одному аспекту, SLAT 220 может заранее заполняться некоторыми или всеми преобразованиями адресов ячеек гостевого физического запоминающего устройства в адреса ячеек физического запоминающего устройства хоста. Это позволяет сокращать число операций обработки отказов, выполняемых при инициализации виртуальной машины. Тем не менее, по мере того, как виртуальная машина работает, записи в SLAT 220 могут делаться недействительными по различным причинам, и обработка отказов, описанная выше, может использоваться для того, чтобы еще раз коррелировать адреса ячеек гостевого физического запоминающего устройства с адресами ячеек физического запоминающего устройства хоста. SLAT-записи могут заранее заполняться до начальной загрузки виртуального вычислительного окружения или во время выполнения. Дополнительно, вся SLAT 220 либо только ее части могут заранее заполняться.

[0064] Другая оптимизация может заключаться в упреждающей выборке, в физическое запоминающее устройство хоста, дополнительных частей виртуального запоминающего устройства хоста, резервировании гостевого физического запоминающего устройства, которое ранее подвергнуто выкачиванию на уровне страниц таким образом, что когда наступает последующий перехват запоминающего устройства, виртуальный отказ может удовлетворяться более быстро, поскольку он может удовлетворяться без необходимости обращения к диску, чтобы считывать данные.

[0065] Обращаясь к фиг. 4, проиллюстрирован способ 400, предоставляющий общее представление механизмов, подробно описанных выше. Способ 400 может включать в себя этапы для резервирования гостевого физического запоминающего устройства с виртуальным запоминающим устройством хоста. Способ включает в себя, из виртуальной машины при выполнении на вычислительном хост-устройстве, попытку осуществлять доступ к гостевому физическому запоминающему устройству с использованием доступа к гостевому физическому запоминающему устройству (этап 402). Например, окружение 271 виртуальной машины, показанное на фиг. 2, может осуществлять доступ к гостевому физическому запоминающему устройству, которое, для процессов, выполняющихся внутри окружения 271 виртуальной машины, выглядит в качестве фактического физического запоминающего устройства.

[0066] Способ 400 дополнительно может включать в себя определение того, что доступ к гостевому физическому запоминающему устройству обращается к адресу ячейки гостевого физического запоминающего устройства, который не имеет действительной записи в структуре данных, которая соотносит адреса ячеек гостевого физического запоминающего устройства с адресами ячеек физического запоминающего устройства хоста, (этап 404). Например, может выполняться определение в отношении того, что отсутствуют действительные записи в SLAT 220, показанной на фиг. 2.

[0067] Как результат, способ 400 может включать в себя идентификацию адреса ячейки виртуального запоминающего устройства хоста, который соответствует адресу ячейки гостевого физического запоминающего устройства, и идентификацию адреса ячейки физического запоминающего устройства хоста, который соответствует адресу ячейки виртуального запоминающего устройства хоста (этап 406). Например, стек 230 виртуализации, показанный на фиг. 2, может идентифицировать адрес ячейки виртуального запоминающего устройства хоста, который соответствует адресу ячейки гостевого физического запоминающего устройства, и диспетчер 241 запоминающего устройства, также показанный на фиг. 2, может идентифицировать адрес ячейки физического запоминающего устройства хоста, который соответствует адресу ячейки виртуального запоминающего устройства хоста.

[0068] Способ 400 дополнительно может включать в себя обновление структуры данных, которая соотносит адреса ячеек гостевого физического запоминающего устройства с адресами ячеек физического запоминающего устройства хоста, с корреляцией адреса ячейки гостевого физического запоминающего устройства и идентифицированного адреса ячейки физического запоминающего устройства хоста (этап 408). Например, стек 230 виртуализации, показанный на фиг. 2, может получать адрес ячейки физического запоминающего устройства хоста из диспетчера 241 запоминающего устройства, также показанного на фиг. 2, и обновлять SLAT 220 (показана на фиг. 2) с корреляцией адреса ячейки гостевого физического запоминающего устройства и идентифицированного адреса ячейки физического запоминающего устройства хоста.

[0069] Способ 400 может осуществляться на практике посредством инструктирования перехвата. Перехват может перенаправляться в стек виртуализации на хосте. Это может инструктировать стеку виртуализации идентифицировать адрес ячейки виртуального запоминающего устройства хоста, который соответствует адресу ячейки гостевого физического запоминающего устройства, и выдавать отказ в диспетчер запоминающего устройства на предмет того, чтобы получать адрес ячейки физического запоминающего устройства хоста, который соответствует адресу ячейки виртуального запоминающего устройства хоста. Стек виртуализации затем может обновлять структуру данных, которая соотносит адреса ячеек гостевого физического запоминающего устройства с адресами ячеек физического запоминающего устройства хоста, с корреляцией адреса ячейки гостевого физического запоминающего устройства и идентифицированного адреса ячейки физического запоминающего устройства хоста.

[0070] Способ 400 дополнительно может включать в себя определение типа для доступа к гостевому физическому запоминающему устройству и обновления структуры данных, которая соотносит адреса ячеек гостевого физического запоминающего устройства с адресами ячеек физического запоминающего устройства хоста, с определенным типом, коррелированным с адресом ячейки гостевого физического запоминающего устройства и идентифицированным адресом ячейки физического запоминающего устройства хоста. Например, если доступ к гостевому физическому запоминающему устройству представляет собой считывание, SLAT может обновляться, чтобы указывать это.

[0071] Способ 400 дополнительно может включать в себя выполнение действия, которое может изменять адрес ячейки физического запоминающего устройства хоста, резервирующий адрес ячейки виртуального запоминающего устройства хоста. Как результат, способ может включать в себя признание недействительности записи, коррелирующей адрес ячейки гостевого физического запоминающего устройства с адресом ячейки физического запоминающего устройства хоста в структуре данных, которая соотносит адреса ячеек гостевого физического запоминающего устройства с адресами ячеек физического запоминающего устройства хоста. Это может приводить к тому, что последующий доступ к адресу ячейки гостевого физического запоминающего устройства формирует отказ, который может использоваться для того, чтобы обновлять структуру данных, которая соотносит адреса ячеек гостевого физического запоминающего устройства с адресами ячеек физического запоминающего устройства хоста, с корректной корреляцией для виртуального запоминающего устройства хоста, резервирующего адрес ячейки гостевого физического запоминающего устройства. Например, действие может включать в себя операцию комбинирования страниц. Комбинирование страниц может использоваться для того, чтобы повышать плотность виртуальных машин на хосте.

[0072] Способ 400 может включать в себя инициализацию гостевой виртуальной машины. В качестве части инициализации гостевой виртуальной машины, способ 400 может включать в себя заполнение заранее, по меньшей мере, структуры части данных, которая соотносит адреса ячеек гостевого физического запоминающего устройства с адресами ячеек физического запоминающего устройства хоста, некоторыми или всеми преобразованиями адресов ячеек гостевого физического запоминающего устройства в адреса ячеек физического запоминающего устройства хоста для гостевой виртуальной машины. Таким образом, например, физическое запоминающее устройство хоста может предварительно выделяться для виртуальной машины, и соответствующие корреляции могут вводиться в SLAT. Это должно приводить к необходимости меньшего количества исключений для того, чтобы инициализировать гостевую виртуальную машину.

[0073] Ссылаясь теперь на фиг. 5, проиллюстрирована примерная последовательность 500 операций, показывающая различные действия, которые могут возникать в части срока существования некоторых данных в примерном адресе ячейки гостевого физического запоминающего устройства (далее сокращенно "GPA") в 0×1000. Как проиллюстрировано на 502, SLAT-запись для GPA 0×1000 является недействительной, что означает то, что отсутствуют SLAT-записи для этого конкретного GPA. Как проиллюстрировано на 504 виртуальная машина пытается выполнять считывание в GPA 0×1000, вызывающее перехват считывания посредством виртуальной машины ((далее сокращенно "VM"). Как проиллюстрировано на 506, гипервизор перенаправляет перехват в стек виртуализации на хосте. На 508, стек виртуализации выполняет поиск виртуализации для адреса ячейки виртуального запоминающего устройства хоста (VA), соответствующего GPA 0×1000. Поиск дает в результате VA 0×8501000. На 510, виртуальный отказ формируется для доступа для считывания в VA 0×8501000. Обработка виртуальных отказов из диспетчера запоминающего устройства возвращает системный физический адрес (далее сокращенно "SPA") в 0×88000, задающий адрес в системном запоминающем устройстве, в котором физически расположены данные в GPA 0×1000. Следовательно, как проиллюстрировано на 514, SLAT обновляется таким образом, чтобы коррелировать GPA 0×1000 с SPA 0×88000 и помечать доступ к данным как "только для считывания". На 516, стек виртуализации завершает обработку перехватов считывания, и гипервизор возобновляет выполнение гостевой виртуальной машины.

[0074] Как проиллюстрировано на 518, проходит время. На 520, виртуальная машина выполняет попытку доступа для записи в GPA 0×1000. На 522, гипервизор перенаправляет доступ для записи в стек виртуализации на хосте. На 524, стек виртуализации выполняет поиск виртуализации для VA хоста для GPA 0×1000. Как отмечено выше, он выполняется в VA 0×8501000. На 526, возникает виртуальный отказ для доступа для записи в VA 0×8501000. На 528, виртуальный отказ возвращает SPA 0388000 в физическом запоминающем устройстве. На 530, SLAT-запись для GPA 0×1000 обновляется, чтобы указывать то, что доступ к данным представляет собой "для считывания/записи". На 532, стек виртуализации завершает обработку перехватов записи. Гипервизор возобновляет выполнение гостевой виртуальной машины.

[0075] Как проиллюстрировано на 534, проходит некоторое время. На 536, диспетчер запоминающего устройства хоста выполняет проход комбинирования страниц для того, чтобы комбинировать все страницы с физическим запоминающим устройством хоста, которые являются функционально идентичными. На 538, диспетчер запоминающего устройства хоста находит возможные варианты комбинирования для VA 0×8501000 и другого виртуального адреса в другом процессе. На 540, хост выполняет TLB-очистку для VA 0×8501000. На 542, стек виртуализации перехватывает TLB-очистку. На 544, SLAT-запись для GPA 0×1000 является недействительной. На 546, перехват виртуальной машины выполняется для GPA 0×1000. На 548, возникает виртуальный отказ для доступа для считывания в VA 0×8501000. На 550, виртуальный отказ возвращает SPA 0×52000, который представляет собой совместно используемую страницу для N процессов из прохода комбинирования страниц на 536. На 552, SLAT-запись для GPA 0×1000 обновляется таким образом, что она соотносится с SPA 0×52000, с доступом, заданным как "только для считывания".

[0076] Как проиллюстрировано на 554, проходит некоторое время. На 556, перехват записи виртуальной машины возникает для GPA 0×1000. На 558 возникает виртуальный отказ для доступа для записи в VA 0×8501000. На 560, диспетчер запоминающего устройства хоста выполняет копирование при записи для VA 0×8501000. На 562, хост выполняет TLB-очистку для VA 0×850100. Как проиллюстрировано на 564, это приводит к тому, что SLAT-запись для GPA 031000 признается недействительной. На 566, виртуальный отказ возвращает SPA 0×11000, который представляет собой частную страницу после копирования при записи. На 568, SLAT-запись для GPA 0×1000 обновляется на SPA 0×1000, с доступом, заданным как "для считывания/записи". На 570, стек виртуализации завершает обработку перехватов считывания, и гипервизор возобновляет выполнение виртуальной машины.

[0077] Таким образом, как проиллюстрировано выше, физическое адресное пространство виртуальной машины резервируется посредством виртуального запоминающего устройства хоста (типично выделяемого в пользовательском адресном пространстве хост-процесса), которое подвергается регулярному управлению виртуальным запоминающим устройством посредством диспетчера запоминающего устройства хоста. Виртуальное запоминающее устройство, резервирующее физическое запоминающее устройство виртуальной машины, может иметь любой тип, поддерживаемый посредством диспетчера 118 запоминающего устройства хоста (частное выделение, преобразование файлов, преобразования секций с резервированием с помощью файла подкачки страниц, выделение большой страницы и т.д.), диспетчер запоминающего устройства хоста может выполнять свои существующие операции и применять политики по виртуальному запоминающему устройству и/или применять специализированные политики со знанием того, что виртуальное запоминающее устройство резервирует физическое адресное пространство виртуальной машины при необходимости.

[0078] Обращаясь к фиг. 6, примерная система 600, показанная здесь, содержит блочное представление механизмов, приведенных кратко на фиг. 4 и подробно приведенных на фиг. 5, как описано выше. Более конкретно, гостевое виртуальное запоминающее устройство 311, гостевое физическое запоминающее устройство 312, виртуальное запоминающее устройство хоста 321 и физическое запоминающее устройство хоста 322 проиллюстрированы в качестве прямоугольных блоков, ширина которых представляет диапазон запоминающего устройства. Для простоты иллюстрации, прямоугольные блоки имеют приблизительно равную ширину, даже если, при практической работе, объем виртуального запоминающего устройства с большой вероятностью должен превышать объем физического запоминающего устройства, резервирующего такое виртуальное запоминающее устройство.

[0079] Как подробно описано выше, когда процесс, выполняющийся внутри вычислительного окружения виртуальной машины, такого как примерное вычислительное окружение виртуальной машины 271, показанное на фиг. 2, осуществляет доступ к части виртуального запоминающего устройства, представленной посредством операционной системы, выполняющейся внутри такого вычислительного окружения виртуальной машины, таблица страниц этой операционной системы, такая как примерная таблица 283 страниц, может содержать PTE, которая может коррелировать адрес ячейки виртуального запоминающего устройства, к которому осуществляют доступ, с адресом ячейки физического запоминающего устройства, по меньшей мере, воспринимаемым посредством процессов, выполняющихся внутри вычислительного окружения виртуальной машины. Таким образом, например, если к виртуальному запоминающему устройству, представленному посредством области 611, осуществляется доступ, PTE 631, которая может представлять собой часть таблицы 283 страниц, может коррелировать эту область 611 гостевого виртуального запоминающего устройства 311 с областью 621 гостевого физического запоминающего устройства 312. Как подробно описано выше, гостевое физическое запоминающее устройство 312 может резервироваться посредством части виртуального запоминающего устройства хоста 321. Таким образом, вышеописанный стек 230 виртуализации может содержать структуру данных, которая может включать в себя запись 651, которая может коррелировать область 621 гостевого физического запоминающего устройства 312 с областью 641 виртуального запоминающего устройства хоста 321. Процессы, выполняющиеся на вычислительном хост-устройстве, включающем в себя вышеописанную таблицу 250 страниц, затем могут коррелировать область 641 виртуального запоминающего устройства хоста 321 с областью 661 физического запоминающего устройства хоста 322. Как также описано подробно выше, SLAT 220 может содержать иерархически организованный набор таблиц, которые могут обновляться с записью 691 таблицы, которая может коррелировать область 621, гостевого физического запоминающего устройства 312 с областью 661 физического запоминающего устройства хоста 322. Более конкретно, механизмы, такие как механизмы, реализованные посредством стека 230 виртуализации, могут обнаруживать корреляцию между областью 621 и областью 661 и могут обновлять или формировать запись таблицы, такую как запись 691, в SLAT 220, как проиллюстрировано посредством этапа 680, так что она включает в себя такую корреляцию. Таким образом, гостевое физическое запоминающее устройство 312 может резервироваться посредством виртуального запоминающего устройства хоста 321, при одновременном продолжении обеспечения возможности существующим механизмам, включающим в себя SLAT 220, функционировать традиционным способом. Например, последующий доступ области 611 гостевого виртуального запоминающего устройства 311 процесса, выполняющегося внутри этого вычислительного окружения виртуальной машины, может влечь за собой два поиска в таблице страниц традиционным способом: (1) поиск в таблице страниц, выполняемый в вычислительном окружении виртуальной машины посредством обращения к таблице 283 страниц, которая может содержать запись, такую как запись 631, которая может коррелировать запрашиваемую область 611 с соответствующей областью 621 в гостевом физическом запоминающем устройстве 312, и (2) поиск в таблице страниц, выполняемый на вычислительном хост-устройстве посредством обращения к SLAT 220, которая может содержать запись, такую как запись 691, которая может коррелировать область 621 в гостевом физическом запоминающем устройстве 312 с областью 661 в физическом запоминающем устройстве 322 хоста, за счет этого завершая путь к релевантным данным, сохраненным в физическом запоминающем устройстве хоста.

[0080] Как также подробно указано выше, различные таблицы страниц, такие как примерная таблица 283 страниц в вычислительном окружении виртуального запоминающего устройства, примерная таблица 250 страниц на вычислительном хост-устройстве и примерная SLAT 220, могут содержать иерархически организованные уровни таблиц таким образом, что записи на иерархически самом нижнем уровне таблиц могут идентифицировать "небольшие страницы" запоминающего устройства, при явном задании этого термина в данном документе, которые могут представлять собой наименьший диапазон адресов ячеек запоминающего устройства, которые могут отдельно и умеренно поддерживаться и управляться посредством процессов с использованием соответствующих таблиц страниц. В примерной системе 600, показанной на фиг. 6, различные записи 631, 671 и 691 таблицы страниц (PTE) могут находиться на этом самом нижнем уровне таблиц таким образом, что области 611, 621, 641 и 661 могут представлять собой небольшие страницы запоминающего устройства. Как подробно указано выше, в одной общей архитектуре микропроцессора, такие небольшие страницы запоминающего устройства, при явном задании этого термина в данном документе, могут содержать 4 КБ смежных адресов ячеек запоминающего устройства.

[0081] Согласно одному аспекту, чтобы повышать скорость и эффективность доступа к запоминающему устройству из вычислительного окружения виртуальной машины, физическое запоминающее устройство которого резервируется посредством виртуального запоминающего устройства вычислительного хост-устройства, SLAT 220 может поддерживать корреляции на иерархически верхних уровнях таблиц. Другими словами, SLAT 220 может коррелировать "большие страницы" запоминающего устройства или "огромные страницы" запоминающего устройства, при явном задании этих терминов в данном документе. В одной общей архитектуре микропроцессора, большие страницы запоминающего устройства, при явном задании этого термина в данном документе, могут содержать 2 МБ смежных адресов ячеек запоминающего устройства, и огромные страницы запоминающего устройства, при явном задании этого термина в данном документе, могут содержать 1 ГБ смежных адресов ячеек запоминающего устройства. С другой стороны, как указано выше, термины "небольшая страница", "большая страница" и "огромная страница" явно задаются со ссылкой на иерархический уровень, в иерархически организованном наборе таблиц страниц, и не задаются на основе конкретного объема запоминающего устройства, поскольку такие объемы запоминающего устройства могут варьироваться между различными архитектурами микропроцессора, архитектурами операционной системы и т.п.

[0082] Обращаясь к фиг. 7, показывается один механизм для создания записей большой страницы в SLAT 220 и за счет этого повышения скорости и эффективности доступа к запоминающему устройству из вычислительного окружения виртуальной машины, физическое запоминающее устройство которого резервируется посредством виртуального запоминающего устройства вычислительного хост-устройства. Как показано на фиг 6, в системе 700, показанной на фиг. 7, гостевое виртуальное запоминающее устройство 311, гостевое физическое запоминающее устройство 312, виртуальное запоминающее устройство хоста 321 и физическое запоминающее устройство хоста 322 проиллюстрированы в качестве прямоугольных блоков, ширина которых представляет диапазон запоминающего устройства. Дополнительно, осуществление доступа к области 611 может продолжаться способом, подробно указанным выше и показанным на фиг. 6. Тем не менее, вместо формирования записи таблицы иерархически самого нижнего уровня в SLAT 220, механизмы, описанные в данном документе, могут формировать запись таблицы более высокого уровня, такую как примерная запись таблицы 711. Как подробно указано выше, такая запись таблицы более высокого уровня может коррелировать большие страницы или огромные страницы запоминающего устройства. Соответственно, когда стек 230 виртуализации инструктирует ввод записи таблицы 711 в SLAT 220, запись таблицы 711 может коррелировать область 761 с большим размером страницы гостевого физического запоминающего устройства 312 с областью 720 с большим размером страницы физического запоминающего устройства хоста 322. Тем не менее, как подробнее описано ниже, такие области с большим размером страницы не представляют собой большие страницы с точки зрения диспетчера запоминающего устройства, выполняющегося на вычислительном хост-устройстве и использующего таблицу 250 страниц, и как результат, такие области с большим размером страницы, например, не подвергаются откачке, на уровне страниц, в качестве одной большой страницы или иным образом не обрабатываются в качестве одной неделимой большой страницы посредством диспетчера запоминающего устройства, выполняющегося на вычислительном хост-устройстве.

[0083] Наоборот, с тем, чтобы поддерживать преимущества эффективности, плотности и другие преимущества, предоставленные посредством механизмов, подробно описанных выше, которые обеспечивают возможность резервирования гостевого физического запоминающего устройства, такого как примерное гостевое физическое запоминающее устройство 312, посредством виртуального запоминающего устройства хоста, такого как примерное виртуальное запоминающее устройство хоста 321, таблица 250 страниц, выполняющаяся на хосте, может содержать не запись таблицы более высокого уровня, аналогичную записи 711 таблицы более высокого уровня в SLAT 220, а вместо этого может содержать просто записи таблицы более низкого уровня, такие как примерные записи 671, 731 и 732 таблицы более низкого уровня, показанные на фиг. 7. Более конкретно, конкретный набор записей таблицы более низкого уровня в таблице 250 страниц, таких как примерные записи 671, 731, 732 таблицы более низкого уровня и т.д., может идентифицировать непрерывные диапазоны физического запоминающего устройства хоста 322 таким образом, что совокупный непрерывный диапазон физического запоминающего устройства хоста 322, идентифицированный посредством всей эквивалентной последовательности записей таблицы более низкого уровня в таблице 250 страниц, охватывает диапазон запоминающего устройства, идентичный диапазону запоминающего устройства для одной записи 711 таблицы более высокого уровня в SLAT 220. Таким образом, в качестве одного примера, в архитектуре микропроцессора, в которой небольшие страницы имеют размер в 4 КБ, а большие страницы имеют размер в 2 МБ, 512 смежных записей небольшой страницы в таблице 250 страниц, в совокупности, могут идентифицировать смежные 2 МБ физического запоминающего устройства хоста 322.

[0084] Поскольку виртуальный отказ может формироваться не для всей области запоминающего устройства с большим размером страницы, только конкретные записи таблицы более низкого уровня, такие как примерные записи 671, 731 и 732 таблицы более низкого уровня, могут использоваться, тогда как оставшиеся записи таблицы более низкого уровня могут оставаться помеченными в качестве свободного запоминающего устройства. Например, приложение, выполняемое в вычислительном окружении виртуальной машины с использованием гостевого физического запоминающего устройства 312, может первоначально требовать только объема запоминающего устройства в одну небольшую страницу. В таком случае, одна запись 711 таблицы более высокого уровня может идентифицировать область запоминающего устройства с большим размером страницы, к примеру, область 720 с большим размером страницы, как используемую. Тем не менее, с точки зрения диспетчера запоминающего устройства вычислительного хост-устройства, при обращении к таблице 250 страниц, только одна из записей таблицы более низкого уровня, такая как примерная запись 671 таблицы более низкого уровня, может указываться как используемая, при этом остальные указываются как доступные. Чтобы предотвращать обработки других записей как доступных, стек 230 виртуализации может помечать оставшиеся записи таблицы более низкого уровня, такие как примерные записи 731, 732 таблицы более низкого уровня и т.д., как также используемые. Когда приложение, выполняемое в вычислительном окружении виртуальной машины, затем должно использовать дополнительные объемы запоминающего устройства с небольшим размером страницы, стек 230 виртуализации может использовать местоположение ячейки запоминающего устройства, заранее указанное как используемое, но которые фактически еще не использованы посредством приложения, выполняемого в вычислительном окружении виртуальной машины, чтобы удовлетворять дополнительным потребностям в запоминающем устройстве приложения.

[0085] Согласно одному аспекту, отслеживание эквивалентной последовательности записей таблицы более низкого уровня в таблице 250 страниц, к примеру, вышеуказанная пометка, может координироваться посредством стека 230 виртуализации, как проиллюстрировано посредством этапа 730 на фиг. 7. В таком случае, если диспетчер запоминающего устройства, выполняющийся на хосте, вносит изменения в одну или более этих записей таблицы более низкого уровня, стек 230 виртуализации может инициировать соответствующие изменения соответствующих записей в SLAT 220, таких как запись 711 таблицы более высокого уровня.

[0086] Последовательность записей таблицы более низкого уровня в таблице 250 страниц, которая является эквивалентной записи 711 таблицы более высокого уровня в SLAT 220, может коррелировать последовательность диапазонов виртуального запоминающего устройства хоста, такого как примерные диапазоны 641, 741 и 742, с диапазонами физического запоминающего устройства хоста, такими как примерные диапазоны 661, 721 и 722, соответственно. Следовательно, область виртуального запоминающего устройства хоста 321 с большим размером страницы, такая как примерная область 751 с большим размером страницы, соотносится с областью физического запоминающего устройства хоста 322 с большим размером страницы, такой как примерная область 720 с большим размером страницы, через последовательность записей таблицы более низкого уровня в таблице 250 страниц, а именно, через примерные записи 671, 731, 732 таблицы более низкого уровня и т.д. Стек 230 виртуализации может поддерживать такие структуры данных, как иерархически организованные таблицы, которые могут координировать местоположения ячеек виртуального запоминающего устройства хоста с местоположениями ячеек гостевого физического запоминающего устройства. Таким образом, стек виртуализации может поддерживать одну или более записей данных, таких как примерная запись 771 данных, которая может коррелировать область 751 с большим размером страницы виртуального запоминающего устройства хоста 321 с соответствующей областью 761 с большим размером страницы гостевого физического запоминающего устройства 312. Хотя запись 771 данных проиллюстрирована в качестве одной записи, стек 230 виртуализации может поддерживать вышеуказанную корреляцию в качестве одной записи, в качестве нескольких записей, к примеру, посредством отдельной корреляции подчастей области 761 с областью 751, включающей в себя подчасти, которые имеют размер небольших страниц, либо в качестве комбинации вышеозначенного. Чтобы завершать цикл, вышеуказанная запись 711 таблицы более высокого уровня в SLAT 220 затем может коррелировать область 761 с большим размером страницы, в гостевом физическом запоминающем устройстве 312 с областью 720 с большим размером страницы, в физическом запоминающем устройстве 322 хоста. С другой стороны, с точки зрения SLAT 220, имеющей только одну запись 711 таблицы более высокого уровня, области 720 и 761 с большим размером страницы представляют собой большие страницы, которые унитарно обрабатываются посредством SLAT (согласно одной записи 711 таблицы более высокого уровня), тогда как, с точки зрения диспетчера запоминающего устройства, выполняющегося на хосте, таблицы 250 страниц и, фактически, стека 230 виртуализации, такие области не являются унитарными, а наоборот, состоят из отдельно управляемых областей с небольшими страницами, идентифицированных, например, посредством записи таблицы более низкого уровня в таблице 250 страниц.

[0087] Доступность смежных небольших страниц запоминающего устройства в гостевом физическом запоминающем устройстве 312, эквивалентных одной или более больших или огромных страниц запоминающего устройства, при задании этих терминов в данном документе, может быть простой, поскольку гостевое физическое запоминающее устройство 312 воспринимается, посредством процессов, выполняющихся внутри соответствующего вычислительного окружения виртуальной машины, как физическое запоминающее устройство. Следовательно, нижеприведенные описания акцентируют внимание на смежности физического запоминающего устройства хоста 322. Дополнительно, поскольку гостевое физическое запоминающее устройство 312 воспринимается как физическое запоминающее устройство, разрешения на полный доступ к запоминающему устройству (к примеру, разрешения на "считывание/запись/выполнение") остаются по всему диапазону гостевого физического запоминающего устройства 312, и, соответственно, маловероятно, что возникает разрывность разрешений на доступ к запоминающему устройству между записями таблицы более низкого уровня в таблице 250 страниц.

[0088] При акцентировании внимания на таблице 250 страниц вычислительного хост-устройства, если одна или более областей физического запоминающего устройства хоста 322 с большим размером страницы остаются неиспользуемыми, согласно одному аспекту, когда виртуальный отказ, как подробно указано выше, инициируется для небольшой страницы в диапазоне запоминающего устройства, разграниченном на область с большим размером страницы, которая остается неиспользуемой, оставшиеся небольшие страницы в этой области с большим размером страницы, одна запись таблицы более высокого уровня, такая как примерная запись 711 таблицы более высокого уровня, может формироваться в SLAT 220.

[0089] Тем не менее, поскольку большая страница 720, соответствующая записи 711 таблицы более высокого уровня, с точки зрения таблицы 250 страниц, представляет собой последовательность небольших страниц, таких как примерные небольшие страницы 661, 721, 722 и т.д., вследствие последовательности записей таблицы более низкого уровня, таких как примерные записи 671, 731, 732 таблицы более низкого уровня и т.д., механизмы управления запоминающим устройством с использованием такой таблицы 250 страниц могут обрабатывать каждую из небольших страниц отдельно, что может включать в себя подкачку таких небольших страниц на энергонезависимый носитель хранения данных, такой как накопитель на жестких дисках. В таком случае, согласно одному аспекту, запись 711 таблицы более высокого уровня, в SLAT 220, может заменяться посредством эквивалентной последовательности записей таблицы более низкого уровня. Более конкретно, записи таблицы более низкого уровня, сформированные в SLAT 220, могут быть смежными и, в совокупности, могут ссылаться на то же диапазон адресов ячеек запоминающего устройства, что и запись 711 таблицы более высокого уровня, за исключением того, что конкретные записей таблицы более низкого уровня, соответствующие страницам, которые подвергнуты откачке на уровне страниц посредством диспетчера запоминающего устройства, могут отсутствовать или иным образом не создаваться.

[0090] Согласно другим аспектам, если область физического запоминающего устройства хоста 322 с большим или огромным размером страницы является недоступной в то время, когда виртуальный отказ, как подробно указано выше, инициируется, доступная область физического запоминающего устройства хоста с большим или огромным размером страницы может конструироваться во время перехвата посредством ассемблирования соответствующего количества смежных небольших страниц. Например, область с большим размером страницы может конструироваться из смежных небольших страниц, которые доступны из "свободного списка" или другого аналогичного перечисления доступных страниц физического запоминающего устройства хоста. В качестве другого примера, если небольшие страницы, которые в данный момент используются посредством других процессов, требуются, чтобы устанавливать непрерывность, необходимую для того, чтобы ассемблировать достаточное количество небольших страниц в одну область с большим размером страницы, эти небольшие страницы могут получаться из таких других процессов, и данные, содержащиеся в них, могут передаваться в другие небольшие страницы или могут подвергаться откачке, на уровне страниц, на диск. После того как такая область с большим размером страницы конструируется, обработка виртуального отказа может продолжаться способом, подробно указанным выше, включающим в себя формирование записи таблицы более высокого уровня, такой как примерная запись 711 таблицы более высокого уровня, в SLAT 220.

[0091] В некоторых случаях, диспетчер запоминающего устройства, выполняющийся на вычислительном хост-устройстве, при использовании таблицы 250 страниц, может реализовывать фоновые или оппортунистические механизмы, посредством которых доступные области с большим или огромным размером страницы конструируются из достаточного количества смежных небольших страниц. До такой степени, что такие механизмы приводят к доступной области с большим размером страницы, например, когда виртуальный отказ инициируется, обработка может продолжаться способом, указанным выше. Тем не менее, до такой степени, что такие механизмы еще не завершают ассемблирование доступной области с большим размером страницы, конструирование такой области с большим размером страницы может завершаться во время перехвата с более высоким приоритетом. Например, процессу, конструирующему такую область с большим размером страницы, может отдаваться более высокий приоритет выполнения, либо он может перемещаться из фона на передний план либо может выполняться более агрессивно иным образом.

[0092] Альтернативно, если область физического запоминающего устройства хоста с большим размером страницы является недоступной, когда виртуальный отказ инициируется, обработка может продолжаться, как подробно указано выше, с использованием нескольких небольших страниц. Затем, когда область с большим размером страницы становится доступной, данные из нескольких небольших страниц, ранее используемых (вследствие недоступности области с большим размером страницы в то время), могут копироваться в большую страницу, и ранее используемые небольшие страницы могут впоследствии освобождаться. В таком случае, записи таблицы более низкого уровня в SLAT 220 могут заменяться одной записью таблицы более высокого уровня, такой как примерная запись 711 таблицы более высокого уровня.

[0093] Дополнительно, параметры, согласно которым конструируются области с большим размером страницы, будь то во время перехвата или оппортунистически, могут варьироваться в соответствии с балансом между более быстрым доступом к запоминающему устройству вследствие пропуска иерархических уровней таблиц во время SLAT-поиска и начальной задержкой в конструировании области с большим размером страницы из небольших страниц. Один такой параметр может представлять собой количество смежных небольших страниц, достаточное для того, чтобы инициировать размен или откачку, на уровне страниц, других небольших страниц, необходимых для того, чтобы завершать смежность для всей области с большим размером страницы. Например, если 512 смежных небольших страниц требуются, чтобы конструировать большую страницу, и непрерывные диапазоны из 200 небольших страниц и 311 небольших страниц существуют, при этом одна небольшая страница между ними в данный момент используется посредством другого процесса, такая небольшая страница может подвергаться откачке на уровне страниц или размениваться на другую доступную небольшую страницу таким образом, что все 512 смежных небольших страниц могут быть доступными для конструирования как одной области с большим размером страницы. В таком примере, фрагментация доступных небольших страниц может быть очень низкой. В отличие от этого, непрерывные диапазоны только в 20-30 небольших страниц, которые постоянно прерываются посредством других небольших страниц, которые в данный момент используются посредством других процессов, могут описывать диапазон небольших страниц, который имеет очень высокую фрагментацию. Хотя такой высокофрагментированный набор небольших страниц по-прежнему может размениваться, подвергаться откачке на уровне страниц или иным образом перемешиваться, чтобы формировать непрерывный диапазон небольших страниц, эквивалентных области с большим размером страницы, такое усилие может занимать существенно больше времени. Соответственно, согласно одному аспекту, может задаваться пороговое значение фрагментации, которое может разграничивать то, предпринимаются или нет усилия для того, чтобы конструировать область с большим размером страницы из диапазонов небольших страниц, имеющих более высокую или более низкую фрагментацию.

[0094] Согласно одному аспекту, конструирование области с большим размером страницы может использовать преимущество существующих использований небольших страниц посредством процессов, запоминающее устройство которых используется для того, чтобы резервировать гостевое физическое запоминающее устройство вычислительных окружений виртуальной машины. В качестве простого примера, если непрерывные диапазоны в 200 небольших страниц и 311 небольших страниц уже использованы посредством процесса, запоминающее устройство которого резервирует гостевое физическое запоминающее устройство 312, и только одна небольшая страница между двумя непрерывными диапазонами требуется для того, чтобы устанавливать непрерывный диапазон небольших страниц, эквивалентных большой странице, в таком случае, после того как эта небольшая страница освобождается, к примеру, посредством откачки, на уровне страниц, или размена, единственные данные, которые должны копироваться, могут представлять собой данные, соответствующие этой одной небольшой странице, при этом оставшиеся данные могут оставаться на месте, даже если соответствующие записи таблицы более низкого уровня в SLAT 220 могут делаться недействительными и заменяться одной записью таблицы более высокого уровня, охватывающей идентичный диапазон запоминающего устройства.

[0095] Чтобы избегать необходимости восстанавливать области запоминающего устройства с большим размером страницы из непрерывных диапазонов небольших страниц, существующий набор смежных записей таблицы более низкого уровня в таблице 250 страниц, которые охватывают, в совокупности, эквивалентный диапазон запоминающего устройства с одной записью 711 таблицы более высокого уровня в SLAT 220, может блокироваться таким образом, что они могут избегать откачки страниц. Таким образом, например, стек 230 виртуализации может запрашивать то, что записи 671, 731, 732 таблицы более низкого уровня и т.д. блокироваться таким образом, что соответствующие диапазоны 661, 721, 722 физического запоминающего устройства хоста и т.д. могут сохранять данные, сохраненные в них, без подкачки страниц на диск. Согласно одному аспекту, решение, к примеру, посредством стека 230 виртуализации, на предмет того, чтобы запрашивать блокировку таких записей, может зависеть от различных факторов. Например, один такой фактор может представлять собой частоту использования данных, сохраненных в этих диапазонах запоминающего устройства, при этом более часто используемые данные приводящими к блокированию записей, а менее часто используемые данные приводят к разблокированию впоследствии записей. Другие факторы, такие как объем фрагментации запоминающего устройства всей системы, потребность в большей плотности вычислительных окружений виртуальной машины на вычислительном хост-устройстве и другие аналогичные факторы, могут в равной степени учитываться при определении того, следует или нет запрашивать то, что записи таблицы страниц, поддерживающие запись таблицы более высокого уровня в SLAT, должны блокироваться.

[0096] Обращаясь к фиг. 8, блок-схема 800 последовательности операций способа, показанная на нем, иллюстрирует вышеописанные механизмы в качестве примерной последовательности этапов. Первоначально, на этапе 810, может возникать виртуальный отказ, как подробно указано выше. Затем, на этапе 815, может выполняться определение в отношении того, обращается или нет виртуальный отказ этапа 810 к запоминающему устройству в области запоминающего устройства с большим размером страницы, при том, что к другому запоминающему устройству в этой области с большим размером страницы ранее не обращались посредством виртуального отказа. В частности, физическое запоминающее устройство хоста может разграничиваться на сегменты с большим размером страницы. Первый виртуальный отказ, обращающийся к запоминающему устройству в одной области с большим размером страницы, может приводить к положительному определению на этапе 815, за счет чего обработка может переходить к этапу 835.

[0097] На этапе 835, одна запись таблицы более высокого уровня может формироваться в SLAT, тогда как, соответственно, на этапе 840, несколько записей таблицы более низкого уровня могут использоваться в таблице страниц хоста, в которой релевантное количество нескольких записей таблицы более низкого уровня представляет собой количество, которое который охватывает диапазон запоминающего устройства, идентичный диапазону запоминающего устройства для одной записи таблицы более высокого уровня, сформированной в SLAT, а именно, диапазон запоминающего устройства, соответствующий разграниченной области с большим размером страницы запоминающего устройства, содержащего местоположение ячейки запоминающего устройства, доступ которого инициирует виртуальный отказ на этапе 810. Как указано выше, поскольку таблица страниц хоста содержит несколько записей таблицы более низкого уровня, в отличие от одной записи таблицы более высокого уровня, управление запоминающим устройством вычислительного хост-устройства может выбирать необходимость выкачивать, к примеру, посредством копирования контента на диск, одну или более областей или страниц запоминающего устройства, идентифицированных посредством таких записей таблицы более низкого уровня в таблице страниц хоста. Если такая откачка страниц возникает, как определено на этапе 845, обработка может переходить к этапу 850, и запись таблицы более высокого уровня в SLAT может заменяться несколькими записями таблицы более низкого уровня, соответствующими областям запоминающего устройства, на которые ссылаются записи таблицы более низкого уровня в таблице страниц хоста, которые не подвергнуты откачке страниц (и без учета SLAT, записями таблицы уровня, соответствующими областям запоминающего устройства, на которые ссылаются записи таблицы более низкого уровня в таблице страниц хоста, которые фактически подвергнуты откачке страниц).

[0098] Согласно одному аспекту, если небольшие страницы из области запоминающего устройства с большим размером страницы подвергнуты откачке страниц на этапе 845, и запись таблицы более высокого уровня в SLAT признается недействительной и заменяется соответствующей последовательностью записей таблицы более низкого уровня (за исключением любых записей таблицы более низкого уровня, обращающихся к подвергнутым откачке страниц небольшим страницам), то, необязательно, обработка может переходить к этапу 855, чтобы продолжать проверять доступные области запоминающего устройства с большим размером страницы, которые становятся свободными. Как подробно указано выше, процессы управления запоминающим устройством, выполняющиеся на вычислительном хост-устройстве, например, могут оппортунистически восстанавливать области доступного запоминающего устройства с большим размером страницы. Если такие области запоминающего устройства с большим размером страницы становятся доступными, как определено на этапе 855, обработка может переходить к этапу 860, на котором записи таблицы более низкого уровня в SLAT могут заменяться одной записью таблицы более высокого уровня в SLAT, и при необходимости, данные могут копироваться из областей запоминающего устройства, на которые ссылаются предшествующие записи таблицы более низкого уровня в области запоминающего устройства, на которые теперь ссылается одна запись таблицы более высокого уровня (если две области запоминающего устройства отличаются).

[0099] Возвращаясь к этапу 815, если виртуальный отказ этапа 810 не является первым для опорного запоминающего устройства в заранее разграниченной области с большим размером страницы, обработка может переходить к этапу 820. На этапе 820, может выполняться определение в отношении того, должна или нет большая страница создаваться во время перехвата, к примеру, способом, подробно указанным выше. Более конкретно, если этапы 835 и 840 ранее выполнены для области запоминающего устройства с большим размером страницы, и SLAT теперь содержит одну запись таблицы более высокого уровня, в то время как таблица страниц содержит эквивалентные записи таблицы более низкого уровня, ссылающиеся на подчасти области запоминающего устройства, на которую ссылается одна запись таблицы более высокого уровня в SLAT, то затем последующий доступ к запоминающему устройству, направленный в любые местоположения ячеек запоминающего устройства в области запоминающего устройства, на которую ссылается одна запись таблицы более высокого уровня в SLAT, не должен инициировать виртуальный отказ, как подробно указано выше. Таким образом, если виртуальный отказ инициируется на этапе 810, и на этапе 815, определяется то, что виртуальный отказ не направляется сначала в местоположения ячеек запоминающего устройства в заранее разграниченной области с большим размером страницы запоминающего устройства, то виртуальный отказ, инициированный на этапе 810, с большой вероятностью инициирован, поскольку этапы 835 и 840 ранее выполнены для местоположений ячеек запоминающего устройства в этой области с большим размером страницы, но впоследствии, одна или более небольших страниц, которые содержат эту область запоминающего устройства с большим размером страницы, подвергнуты откачке страниц, как определено на этапе 845, и в силу этого этап 850 ранее выполнен. Таким образом, на этапе 820, может выполняться определение в отношении того, должна или нет область запоминающего устройства с большим размером страницы конструироваться во время перехвата. Если такая область с большим размером страницы должна конструироваться, то обработка может переходить к этапу 830, и соответствующее количество смежных небольших страниц может ассемблироваться, как подробно указано выше. Обработка затем может переходить к этапу 835, как указано выше. С другой стороны, если, на этапе 830, такое конструирование по запросу областей доступного запоминающего устройства с большим размером страницы не запрашивается, обработка может переходить к использованию записей таблицы более низкого уровня в таблице страниц хоста и SLAT в соответствии с механизмами, описанными подробно выше со ссылкой на фиг. 4 и 5.

[00100] Вышеприведенные описания включают в себя, в качестве первого примера, способ увеличения скорости доступа компьютерного запоминающего устройства, при этом способ содержит: обнаружение первого доступа к запоминающему устройству, из первого процесса, выполняющегося в вычислительном окружении виртуальной машины, направленном в первый диапазон запоминающего устройства; формирование, в качестве предварительного условия для выполнения первого доступа к запоминающему устройству, первой записи в иерархически организованной таблице трансляции адресов второго уровня, причем иерархически организованная таблица трансляции адресов второго уровня соотносит адреса ячеек физического запоминающего устройства хоста с адресами ячеек гостевого физического запоминающего устройства, причем первая запись находится, по меньшей мере, на один иерархический уровень выше иерархически самого нижнего уровня таблиц таким образом, что второй диапазон запоминающего устройства, идентифицированный посредством первой записи, может идентифицироваться вообще без обращения к таблицам на иерархически самом нижнем уровне таблиц, причем второй диапазон запоминающего устройства больше первого диапазона запоминающего устройства; и в ответ на формирование первой записи в иерархически организованной таблице трансляции адресов второго уровня, пометку как используемых первого множества записей в иерархически организованной таблице страниц, причем иерархически организованная таблица страниц соотносит адреса ячеек физического запоминающего устройства хоста с адресами ячеек виртуального запоминающего устройства хоста, причем первое множество записей ссылаются, в совокупности, на то же второй диапазон запоминающего устройства, что и первая запись в иерархически организованной таблице трансляции адресов второго уровня, при этом записи из первого множества записей находятся на иерархически самом нижнем уровне таблиц; при этом адреса ячеек гостевого физического запоминающего устройства воспринимаются как адреса в физическом запоминающем устройстве посредством процессов, выполняющихся внутри вычислительного окружения виртуальной машины; при этом адреса ячеек физического запоминающего устройства хоста представляют собой адреса в фактическом физическом запоминающем устройстве вычислительного хост-устройства, вмещающего вычислительное окружение виртуальной машины; при этом адреса ячеек виртуального запоминающего устройства хоста представляют собой адреса в виртуальном запоминающем устройстве, предоставленном посредством диспетчера запоминающего устройства, выполняющегося на вычислительном хост-устройстве, причем диспетчер запоминающего устройства использует иерархически организованную таблицу страниц для того, чтобы предоставлять виртуальное запоминающее устройство; и при этом гостевое физическое запоминающее устройство, идентифицированное посредством адресов ячеек гостевого физического запоминающего устройства, резервируется посредством части виртуального запоминающего устройства хоста, идентифицированной посредством части адресов ячеек виртуального запоминающего устройства хоста.

[00101] Второй пример представляет собой способ первого примера, дополнительно содержащий: обнаружение второго доступа к запоминающему устройству из первого процесса, выполняющегося в вычислительном окружении виртуальной машины, причем второй доступ к запоминающему устройству направлен в третий диапазон запоминающего устройства, который отличается от первого диапазона запоминающего устройства; и удовлетворение второго доступа к запоминающему устройству посредством обращения ко второму поднабору первого множества записей в иерархически организованной таблице страниц; при этом первый доступ к запоминающему устройству удовлетворяется посредством обращения к первому поднабору первого множества записей в иерархически организованной таблице страниц, причем первый поднабор содержит отличающиеся записи, в иерархически организованной таблице страниц, относительно второго поднабора.

[00102] Третий пример представляет собой способ первого примера, дополнительно содержащий: обнаружение, после того, как первый доступ к запоминающему устройству завершается, того, что первый поднабор первого множества записей в иерархически организованной таблице страниц имеет данные, которые первоначально сохранены в соответствующих адресах ячеек физического запоминающего устройства хоста, затем выкачаны, на уровне страниц, в энергонезависимый носитель хранения данных; признание недействительности, в ответ на обнаружение, первой записи в иерархически организованной таблице трансляции адресов второго уровня; и формирование, вместо первой записи в иерархически организованной таблице трансляции адресов второго уровня, второго множества записей в иерархически организованной таблице трансляции адресов второго уровня, причем второе множество записей ссылаются, в совокупности, на, по меньшей мере, часть того же второго диапазона запоминающего устройства, что и первая запись, при этом записи из второго множества записей находятся на иерархически самом нижнем уровне таблиц.

[00103] Четвертый пример представляет собой способ третьего примера, в котором второе множество записей обращаются к частям второго диапазона запоминающего устройства, к которым ранее осуществлен доступ посредством первого процесса и которые не подвергнуты откачке страниц.

[00104] Пятый пример представляет собой способ первого примера, дополнительно содержащий: ассемблирование первого множества смежных областей физического запоминающего устройства хоста с небольшим размером страницы в одну область с большим размером страницы физического запоминающего устройства хоста.

[00105] Шестой пример представляет собой способ пятого примера, в котором ассемблирование возникает после обнаружения первого доступа к запоминающему устройству и до формирования первой записи в иерархически организованной таблице трансляции адресов второго уровня.

[00106] Седьмой пример представляет собой способ пятого примера, дополнительно содержащий: формирование второй записи в иерархически организованной таблице трансляции адресов второго уровня, причем вторая запись находится, по меньшей мере, на один иерархический уровень выше иерархически самого нижнего уровня таблиц таким образом, что третий диапазон запоминающего устройства, идентифицированный посредством второй записи, может идентифицироваться вообще без обращения к таблицам на иерархически самом нижнем уровне таблиц, причем третий диапазон запоминающего устройства ссылается на одну область с большим размером страницы физического запоминающего устройства хоста, в которую ассемблированы первое множество смежных областей физического запоминающего устройства хоста с небольшим размером страницы; и в ответ на формирование второй записи в иерархически организованной таблице трансляции адресов второго уровня, пометку как используемых второго множества записей в иерархически организованной таблице страниц, причем второе множество записей ссылаются на первое множество смежных областей физического запоминающего устройства хоста с небольшим размером страницы, которые ассемблированы в одну область с большим размером страницы физического запоминающего устройства хоста.

[00107] Восьмой пример представляет собой способ седьмого примера, дополнительно содержащий: формирование второй записи в иерархически организованной таблице трансляции адресов второго уровня, причем вторая запись находится, по меньшей мере, на один иерархический уровень выше иерархически самого нижнего уровня таблиц таким образом, что третий диапазон запоминающего устройства, идентифицированный посредством второй записи, может идентифицироваться вообще без обращения к таблицам на иерархически самом нижнем уровне таблиц, причем третий диапазон запоминающего устройства ссылается к одной области с большим размером страницы физического запоминающего устройства хоста, в которую ассемблированы первое множество смежных областей физического запоминающего устройства хоста с небольшим размером страницы; и в ответ на формирование второй записи в иерархически организованной таблице трансляции адресов второго уровня, пометку как используемых второго множества записей в иерархически организованной таблице страниц, причем второе множество записей ссылаются на первое множество смежных областей физического запоминающего устройства хоста с небольшим размером страницы, которые ассемблированы в одну область с большим размером страницы физического запоминающего устройства хоста.

[00108] Девятый пример представляет собой способ седьмого примера, дополнительно содержащий: копирование данных из второго набора одной или более областей физического запоминающего устройства хоста с небольшим размером страницы, по меньшей мере, в часть первого множества смежных областей с небольшим размером страницы; и признание недействительности второго множества записей в иерархически организованной таблице трансляции адресов второго уровня, причем второе множество записей содержат: как (1) первый поднабор записей, которые ссылаются на второй набор одной или более областей физического запоминающего устройства хоста с небольшим размером страницы, так и (2) второй поднабор записей, которые ссылаются на, по меньшей мере, часть первого множества смежных областей физического запоминающего устройства хоста с небольшим размером страницы, при этом записи из второго множества записей находятся на иерархически самом нижнем уровне таблиц; при этом сформированная вторая запись в иерархически организованной таблице трансляции адресов второго уровня используется вместо второго множества записей, которые признаются недействительными.

[00109] Десятый пример представляет собой способ пятого примера, в котором ассемблирование первого множества смежных областей физического запоминающего устройства хоста с небольшим размером страницы содержит копирование данных из части первого множества смежных областей с небольшим размером страницы в другие области физического запоминающего устройства хоста с небольшим размером страницы, которые отличаются от первого множества смежных областей с небольшим размером страницы.

[00110] Одиннадцатый пример представляет собой способ десятого примера, в котором копирование данных из части первого множества смежных областей с небольшим размером страницы в другие области с небольшим размером страницы выполняется только в том случае, если фрагментация первого множества смежных областей с небольшим размером страницы ниже порогового значения фрагментации.

[00111] Двенадцатый пример представляет собой способ первого примера, дополнительно содержащий: предотвращение подкачки страниц второго диапазона запоминающего устройства.

[00112] Тринадцатый пример представляет собой способ двенадцатого примера, в котором предотвращение подкачки страниц второго диапазона запоминающего устройства выполняется только в том случае, если к одной или более частей второго диапазона запоминающего устройства осуществляется доступ чаще порогового значения частоты доступа.

[00113] Четырнадцатый пример представляет собой способ двенадцатого примера, дополнительно содержащий удаление предотвращения подкачки страниц второго диапазона запоминающего устройства, если к одной или более частей второго диапазона запоминающего устройства осуществляется доступ реже порогового значения частоты доступа.

[00114] Пятнадцатый пример представляет собой способ первого примера, в котором второй диапазон запоминающего устройства имеет размер в 2 МБ.

[00115] Шестнадцатый пример представляет собой вычислительное устройство, содержащее: один или более центральных процессоров; оперативное запоминающее устройство (RAM); и один или более машиночитаемых носителей, содержащих: первый набор машиноисполняемых инструкций, которые, при выполнении посредством вычислительного устройства, инструктируют вычислительному устройству предоставлять диспетчер запоминающего устройства, обращающийся к иерархически организованной таблице страниц для того, чтобы транслировать адреса ячеек виртуального запоминающего устройства хоста в адреса ячеек физического запоминающего устройства хоста, которые идентифицируют местоположения в RAM; второй набор машиноисполняемых инструкций, которые, при выполнении посредством вычислительного устройства, инструктируют вычислительному устройству предоставлять вычислительное окружение виртуальной машины, при этом процессы, выполняющиеся внутри вычислительного окружения виртуальной машины, воспринимают адреса ячеек гостевого физического запоминающего устройства в качестве адресов для физического запоминающего устройства, и при этом дополнительное гостевое физическое запоминающее устройство, идентифицированное посредством адресов ячеек гостевого физического запоминающего устройства, резервируется посредством части виртуального запоминающего устройства хоста, идентифицированной посредством части адресов ячеек виртуального запоминающего устройства хоста; и третий набор машиноисполняемых инструкций, которые, при выполнении посредством вычислительного устройства, инструктируют вычислительному устройству: обнаруживать доступ к первому запоминающему устройству, из первого процесса, выполняющегося в вычислительном окружении виртуальной машины, направленном в первый диапазон запоминающего устройства; формировать, в качестве предварительного условия для выполнения первого доступа к запоминающему устройству, первую запись в иерархически организованной таблице трансляции адресов второго уровня, причем иерархически организованная таблица трансляции адресов второго уровня соотносит адреса ячеек физического запоминающего устройства хоста с адресами ячеек гостевого физического запоминающего устройства, причем первая запись находится, по меньшей мере, на один иерархический уровень выше иерархически самого нижнего уровня таблиц таким образом, что второй диапазон запоминающего устройства, идентифицированный посредством первой записи, может идентифицироваться вообще без обращения к таблицам на иерархически самом нижнем уровне таблиц, причем второй диапазон запоминающего устройства больше первого диапазона запоминающего устройства; и в ответ на формирование первой записи в иерархически организованной таблице трансляции адресов второго уровня, помечать как используемые первое множество записей в иерархически организованной таблице страниц, причем первое множество записей ссылаются, в совокупности, на тот же второй диапазон запоминающего устройства, что и первая запись в иерархически организованной таблице трансляции адресов второго уровня, при этом записи из первого множества записей находятся на иерархически самом нижнем уровне таблиц.

[00116] Семнадцатый пример представляет собой вычислительное устройство шестнадцатого примера, в котором третий набор машиноисполняемых инструкций содержит дополнительные машиноисполняемые инструкции, которые, при исполнении посредством вычислительного устройства, инструктируют вычислительному устройству: обнаруживать, после того, как первый доступ к запоминающему устройству завершается, то, что первый поднабор первого множества записей в иерархически организованной таблице страниц имеет данные, которые первоначально сохранены в соответствующих адресах ячеек физического запоминающего устройства хоста, затем выкачаны, на уровне страниц, в энергонезависимый носитель хранения данных; делать недействительной, в ответ на обнаружение, первую запись в иерархически организованной таблице трансляции адресов второго уровня; и формировать, вместо первой записи в иерархически организованной таблице трансляции адресов второго уровня, второе множество записей в иерархически организованной таблице трансляции адресов второго уровня, причем второе множество записей обращаются, в совокупности, по меньшей мере, к части второго диапазона запоминающего устройства, идентичного диапазону запоминающего устройства для первой записи, при этом записи из второго множества записей находятся на иерархически самом нижнем уровне таблиц.

[00117] Восемнадцатый пример представляет собой вычислительное устройство шестнадцатого примера, в котором третий набор машиноисполняемых инструкций содержит дополнительные машиноисполняемые инструкции, которые, при исполнении посредством вычислительного устройства, инструктируют вычислительному устройству: ассемблировать первое множество смежных областей физического запоминающего устройства хоста с небольшим размером страницы в одну область с большим размером страницы физического запоминающего устройства хоста; при этом ассемблирование возникает после обнаружения первого доступа к запоминающему устройству и до формирования первой записи в иерархически организованной таблице трансляции адресов второго уровня.

[00118] Девятнадцатый пример представляет собой вычислительное устройство шестнадцатого примера, в котором третий набор машиноисполняемых инструкций содержит дополнительные машиноисполняемые инструкции, которые, при исполнении посредством вычислительного устройства, инструктируют вычислительному устройству: предотвращать подкачку страниц второго диапазона запоминающего устройства.

[00119] Двадцатый пример представляет собой один или более машиночитаемых носителей хранения данных, содержащих машиноисполняемые инструкции, которые при выполнении инструктируют вычислительному устройству: обнаруживать доступ к первому запоминающему устройству, из первого процесса, выполняющегося в вычислительном окружении виртуальной машины, направленном в первый диапазон запоминающего устройства; формировать, в качестве предварительного условия для выполнения первого доступа к запоминающему устройству, первую запись в иерархически организованной таблице трансляции адресов второго уровня, причем иерархически организованная таблица трансляции адресов второго уровня соотносит адреса ячеек физического запоминающего устройства хоста с адресами ячеек гостевого физического запоминающего устройства, причем первая запись находится, по меньшей мере, на один иерархический уровень выше иерархически самого нижнего уровня таблиц таким образом, что второй диапазон запоминающего устройства, идентифицированный посредством первой записи, может идентифицироваться вообще без обращения к таблицам на иерархически самом нижнем уровне таблиц, причем второй диапазон запоминающего устройства больше первого диапазона запоминающего устройства; и в ответ на формирование первой записи в иерархически организованной таблице трансляции адресов второго уровня, помечать как используемые первое множество записей в иерархически организованной таблице страниц, причем иерархически организованная таблица страниц соотносит адреса ячеек физического запоминающего устройства хоста с адресами ячеек виртуального запоминающего устройства хоста, причем первое множество записей ссылаются, в совокупности, на тот же второй диапазон запоминающего устройства, что и первая запись в иерархически организованной таблице трансляции адресов второго уровня, при этом записи из первого множества записей находятся на иерархически самом нижнем уровне таблиц; при этом адреса ячеек гостевого физического запоминающего устройства воспринимаются как адреса в физическом запоминающем устройстве посредством процессов, выполняющихся внутри вычислительного окружения виртуальной машины; при этом адреса ячеек физического запоминающего устройства хоста представляют собой адреса в фактическом физическом запоминающем устройстве вычислительного хост-устройства, вмещающего вычислительное окружение виртуальной машины; при этом адреса ячеек виртуального запоминающего устройства хоста представляют собой адреса в виртуальном запоминающем устройстве, предоставленном посредством диспетчера запоминающего устройства, выполняющегося на вычислительном хост-устройстве, причем диспетчер запоминающего устройства использует иерархически организованную таблицу страниц для того, чтобы предоставлять виртуальное запоминающее устройство; и при этом гостевое физическое запоминающее устройство, идентифицированное посредством адресов ячеек гостевого физического запоминающего устройства, резервируется посредством части виртуального запоминающего устройства хоста, идентифицированной посредством части адресов ячеек виртуального запоминающего устройства хоста.

[00120] Как можно видеть из вышеуказанных описаний, описываются механизмы, посредством которых может быть ускорен доступ к запоминающему устройству через SLAT. Ввиду множества возможных варьирований изобретения, описанного в данном документе, мы заявляем в формуле изобретения, в качестве нашего изобретения, все такие варианты осуществления, которые могут находиться в пределах объема прилагаемой формулы изобретения и ее эквивалентов.

1. Способ увеличения скорости доступа компьютерной памяти, содержащий этапы, на которых:

обнаруживают первый доступ к памяти из первого процесса, выполняющегося в вычислительном окружении виртуальной машины, направленный в первый диапазон памяти;

формируют, в качестве предварительного условия для выполнения первого доступа к памяти, первую запись в иерархически организованной таблице трансляции адресов второго уровня, причем иерархически организованная таблица трансляции адресов второго уровня соотносит адреса физической памяти хоста с адресами гостевой физической памяти, при этом первая запись находится на по меньшей мере один иерархический уровень выше иерархически самого нижнего уровня таблиц таким образом, что второй диапазон памяти, идентифицируемый первой записью, может идентифицироваться без обращения к какой-либо таблице на иерархически самом нижнем уровне таблиц, причем второй диапазон памяти больше первого диапазона памяти; и

в ответ на формирование первой записи в иерархически организованной таблице трансляции адресов второго уровня, помечают как используемые первое множество записей в иерархически организованной таблице страниц, причем иерархически организованная таблица страниц соотносит адреса физической памяти хоста с адресами виртуальной памяти хоста, при этом первое множество записей ссылаются, в совокупности, на тот же самый второй диапазон памяти, что и первая запись в иерархически организованной таблице трансляции адресов второго уровня, причем записи из первого множества записей находятся на иерархически самом нижнем уровне таблиц;

при этом адреса гостевой физической памяти воспринимаются как адреса в физической памяти процессами, выполняющимися в вычислительном окружении виртуальной машины;

при этом адреса физической памяти хоста представляют собой адреса в фактической физической памяти вычислительного хост-устройства, в котором размещается вычислительное окружение виртуальной машины;

при этом адреса виртуальной памяти хоста представляют собой адреса в виртуальной памяти, предоставленной посредством диспетчера памяти, выполняющегося на вычислительном хост-устройстве, причем диспетчер памяти использует иерархически организованную таблицу страниц для предоставления виртуальной памяти; и

при этом гостевая физическая память, идентифицируемая посредством адресов гостевой физической памяти, резервируется частью виртуальной памяти хоста, идентифицируемой посредством части адресов виртуальной памяти хоста.

2. Способ по п.1, дополнительно содержащий этапы, на которых:

обнаруживают второй доступ к памяти из первого процесса, выполняющегося в вычислительном окружении виртуальной машины, причем второй доступ к памяти направлен в третий диапазон памяти, который отличается от первого диапазона памяти; и

удовлетворяют второй доступ к памяти посредством обращения ко второму поднабору первого множества записей в иерархически организованной таблице страниц;

при этом первый доступ к памяти удовлетворяется посредством обращения к первому поднабору первого множества записей в иерархически организованной таблице страниц, причем первый поднабор содержит отличающиеся записи, в иерархически организованной таблице страниц, относительно второго поднабора.

3. Способ по п.1, дополнительно содержащий этапы, на которых:

обнаруживают, после того как первый доступ к памяти завершается, то, что первый поднабор первого множества записей в иерархически организованной таблице страниц имеет данные, которые были первоначально сохранены в соответствующих адресах физической памяти хоста, затем выкачаны, на уровне страниц, в энергонезависимый носитель данных;

делают недействительной, в ответ на это обнаружение, первую запись в иерархически организованной таблице трансляции адресов второго уровня; и

формируют, вместо первой записи в иерархически организованной таблице трансляции адресов второго уровня, второе множество записей в иерархически организованной таблице трансляции адресов второго уровня, причем второе множество записей ссылаются, в совокупности, на, по меньшей мере, часть того же второго диапазона памяти, что и первая запись, при этом записи из второго множества записей находятся на иерархически самом нижнем уровне таблиц.

4. Способ по п.3, в котором второе множество записей ссылаются на части второго диапазона памяти, к которым ранее был осуществлен доступ первым процессом и которые не были выкачаны на уровне страниц.

5. Способ по п.1, дополнительно содержащий этап, на котором собирают первое множество смежных областей физической памяти хоста, имеющих небольшой размер страницы, в одну область физической памяти хоста, имеющую большой размер страницы.

6. Способ по п.5, в котором упомянутый сбор имеет место после обнаружения первого доступа к памяти и до формирования первой записи в иерархически организованной таблице трансляции адресов второго уровня.

7. Способ по п.5, дополнительно содержащий этапы, на которых:

формируют вторую запись в иерархически организованной таблице трансляции адресов второго уровня, причем вторая запись находится на по меньшей мере один иерархический уровень выше иерархически самого нижнего уровня таблиц таким образом, что третий диапазон памяти, идентифицируемый второй записью, может идентифицироваться без обращения к какой-либо таблице на иерархически самом нижнем уровне таблиц, при этом третий диапазон памяти ссылается на одну область физической памяти хоста, имеющую большой размер страницы, в которую собраны первое множество смежных областей физической памяти хоста, имеющих небольшой размер страницы; и

в ответ на формирование второй записи в иерархически организованной таблице трансляции адресов второго уровня, помечают как используемые второе множество записей в иерархически организованной таблице страниц, причем второе множество записей ссылаются на первое множество смежных областей физической памяти хоста, имеющих небольшой размер страницы, которые собраны в одну область физической памяти хоста, имеющую большой размер страницы.

8. Способ по п.7, дополнительно содержащий этапы, на которых:

копируют данные из второго множества областей физической памяти хоста, имеющих небольшой размер страницы, в, по меньшей мере, часть первого множества смежных областей, имеющих небольшой размер страницы, причем второе множество областей, имеющих небольшой размер страницы, являются, по меньшей мере, частично прерывистыми; и

делают недействительным второе множество записей в иерархически организованной таблице трансляции адресов второго уровня, которые ссылались на второе множество областей физической памяти хоста, имеющих небольшой размер страницы, при этом записи из второго множества записей находятся на иерархически самом нижнем уровне таблиц;

при этом сформированная вторая запись в иерархически организованной таблице трансляции адресов второго уровня используется вместо второго множества записей, которые были сделаны недействительными.

9. Способ по п.7, дополнительно содержащий этапы, на которых:

копируют данные из второго набора одной или более областей физической памяти хоста, имеющих небольшой размер страницы, в, по меньшей мере, часть первого множества смежных областей, имеющих небольшой размер страницы; и

делают недействительным второе множество записей в иерархически организованной таблице трансляции адресов второго уровня, причем второе множество записей содержат как (1) первый поднабор записей, которые ссылаются на второй набор одной или более областей физической памяти хоста, имеющих небольшой размер страницы, так и (2) второй поднабор записей, которые ссылаются на, по меньшей мере, часть первого множества смежных областей физической памяти хоста, имеющих небольшой размер страницы, при этом записи из второго множества записей находятся на иерархически самом нижнем уровне таблиц;

при этом сформированная вторая запись в иерархически организованной таблице трансляции адресов второго уровня используется вместо второго множества записей, которые были сделаны недействительными.

10. Способ по п.5, в котором упомянутый сбор первого множества смежных областей физической памяти хоста, имеющих небольшой размер страницы, содержит этап, на котором копируют данные из части первого множества смежных областей, имеющих небольшой размер страницы, в другие области физической памяти хоста, имеющие небольшой размер страницы, которые отличаются от первого множества смежных областей, имеющих небольшой размер страницы.

11. Способ по п.1, в котором копирование данных из части первого множества смежных областей, имеющих небольшой размер страницы, в другие области, имеющие небольшой размер страницы, выполняется только в том случае, если фрагментация первого множества смежных областей, имеющих небольшой размер страницы, ниже порогового значения фрагментации.

12. Способ по п.1, дополнительно содержащий этап, на котором предотвращают подкачку страниц второго диапазона памяти.

13. Способ по п.12, в котором предотвращение подкачки страниц второго диапазона памяти выполняется, только если к одной или более частям второго диапазона памяти осуществляется доступ чаще порогового значения частоты доступа.

14. Способ по п.12, дополнительно содержащий этап, на котором удаляют предотвращение подкачки страниц второго диапазона памяти, если к одной или более частям второго диапазона памяти осуществляется доступ реже порогового значения частоты доступа.

15. Способ по п.1, в котором размером второго диапазона памяти является 2 МБ.

16. Вычислительное устройство, содержащее:

один или более центральных процессоров;

оперативное запоминающее устройство (RAM); и

один или более машиночитаемых носителей, содержащих:

первый набор машиноисполняемых инструкций, которые при их исполнении вычислительным устройством инструктируют вычислительному устройству предоставлять диспетчер памяти, обращающийся к иерархически организованной таблице страниц, чтобы транслировать адреса виртуальной памяти хоста в адреса физической памяти хоста, которые идентифицируют местоположения в RAM;

второй набор машиноисполняемых инструкций, которые при их исполнении вычислительным устройством инструктируют вычислительному устройству предоставлять вычислительное окружение виртуальной машины, при этом процессы, выполняющиеся в вычислительном окружении виртуальной машины, воспринимают адреса гостевой физической памяти как адреса в физической памяти, и при этом дополнительно гостевая физическая память, идентифицируемая посредством адресов гостевой физической памяти, резервируется частью виртуальной памяти хоста, идентифицируемой посредством части адресов виртуальной памяти хоста; и

третий набор машиноисполняемых инструкций, которые при их исполнении вычислительным устройством инструктируют вычислительному устройству:

- обнаруживать первый доступ к памяти из первого процесса, выполняющегося в вычислительном окружении виртуальной машины, направленный в первый диапазон памяти;

- формировать, в качестве предварительного условия для выполнения первого доступа к памяти, первую запись в иерархически организованной таблице трансляции адресов второго уровня, причем иерархически организованная таблица трансляции адресов второго уровня соотносит адреса физической памяти хоста с адресами гостевой физической памяти, при этом первая запись находится на по меньшей мере один иерархический уровень выше иерархически самого нижнего уровня таблиц таким образом, что второй диапазон памяти, идентифицируемый первой записью, может идентифицироваться без обращения к какой-либо таблице на иерархически самом нижнем уровне таблиц, причем второй диапазон памяти больше первого диапазона памяти; и

- в ответ на формирование первой записи в иерархически организованной таблице трансляции адресов второго уровня помечать как используемые первое множество записей в иерархически организованной таблице страниц, причем первое множество записей ссылаются, в совокупности, на тот же второй диапазон памяти, что и первая запись в иерархически организованной таблице трансляции адресов второго уровня, при этом записи из первого множества записей находятся на иерархически самом нижнем уровне таблиц.

17. Вычислительное устройство по п.16, в котором третий набор машиноисполняемых инструкций содержит дополнительные машиноисполняемые инструкции, которые при их исполнении вычислительным устройством инструктируют вычислительному устройству:

обнаруживать, после того как первый доступ к памяти завершается, то, что первый поднабор первого множества записей в иерархически организованной таблице страниц имеет данные, которые были первоначально сохранены в соответствующих адресах физической памяти хоста, затем выкачаны, на уровне страниц, в энергонезависимый носитель данных;

делать недействительной, в ответ на это обнаружение, первую запись в иерархически организованной таблице трансляции адресов второго уровня; и

формировать, вместо первой записи в иерархически организованной таблице трансляции адресов второго уровня, второе множество записей в иерархически организованной таблице трансляции адресов второго уровня, причем второе множество записей ссылаются, в совокупности, на, по меньшей мере, часть того же второго диапазона памяти, что и первая запись, при этом записи из второго множества записей находятся на иерархически самом нижнем уровне таблиц.

18. Вычислительное устройство по п.16, в котором третий набор машиноисполняемых инструкций содержит дополнительные машиноисполняемые инструкции, которые при их исполнении вычислительным устройством инструктируют вычислительному устройству собирать первое множество смежных областей физической памяти хоста, имеющих небольшой размер страницы, в одну область физической памяти хоста, имеющую большой размер страницы, причем данный сбор имеет место после обнаружения первого доступа к памяти и до формирования первой записи в иерархически организованной таблице трансляции адресов второго уровня.

19. Вычислительное устройство по п.16, в котором третий набор машиноисполняемых инструкций содержит дополнительные машиноисполняемые инструкции, которые при их исполнении вычислительным устройством инструктируют вычислительному устройству предотвращать подкачку страниц второго диапазона памяти.

20. Машиночитаемый носитель данных, содержащий машиноисполняемые инструкции, которые при их исполнении инструктируют вычислительному устройству:

обнаруживать первый доступ к памяти из первого процесса, выполняющегося в вычислительном окружении виртуальной машины, направленный в первый диапазон памяти;

формировать, в качестве предварительного условия для выполнения первого доступа к памяти, первую запись в иерархически организованной таблице трансляции адресов второго уровня, причем иерархически организованная таблица трансляции адресов второго уровня соотносит адреса физической памяти хоста с адресами гостевой физической памяти, при этом первая запись находится на по меньшей мере один иерархический уровень выше иерархически самого нижнего уровня таблиц таким образом, что второй диапазон памяти, идентифицируемый первой записью, может идентифицироваться без обращения к какой-либо таблице на иерархически самом нижнем уровне таблиц, причем второй диапазон памяти больше первого диапазона памяти; и

в ответ на формирование первой записи в иерархически организованной таблице трансляции адресов второго уровня, помечать как используемые первое множество записей в иерархически организованной таблице страниц, причем иерархически организованная таблица страниц соотносит адреса физической памяти хоста с адресами виртуальной памяти хоста, при этом первое множество записей ссылаются, в совокупности, на тот же самый второй диапазон памяти, что и первая запись в иерархически организованной таблице трансляции адресов второго уровня, причем записи из первого множества записей находятся на иерархически самом нижнем уровне таблиц;

при этом адреса гостевой физической памяти воспринимаются как адреса в физической памяти процессами, выполняющимися в вычислительном окружении виртуальной машины;

при этом адреса физической памяти хоста представляют собой адреса в фактической физической памяти вычислительного хост-устройства, в котором размещается вычислительное окружение виртуальной машины;

при этом адреса виртуальной памяти хоста представляют собой адреса в виртуальной памяти, предоставленной посредством диспетчера памяти, выполняющегося на вычислительном хост-устройстве, причем диспетчер памяти использует иерархически организованную таблицу страниц для предоставления виртуальной памяти; и

при этом гостевая физическая память, идентифицируемая посредством адресов гостевой физической памяти, резервируется частью виртуальной памяти хоста, идентифицируемой посредством части адресов виртуальной памяти хоста.



 

Похожие патенты:

Изобретение относится к области проведения транзакции доступа. Технический результат заключается в обеспечении возможности для систем транзакций доступа принимать разные протоколы связи.

Изобретение относится к области цифровых систем связи и вычислительных систем. Технический результат: прием данных с датчиков и приборов, привязка таких данных к видеоданным, вывод данных в графическом виде, передача данных в автоматизированные системы, использование во взрывоопасных зонах и в широком температурном диапазоне.

Изобретение относится к области вычислительной техники. Технический результат заключается в обеспечении возможности загрузки медиаобъектов на веб-платформу социальных медиа с соблюдением требований ограничения их длительности, чтобы она не превышала как максимальное, так и минимальное требования длительности.

Изобретение относится к области вычислительной техники. Техническим результатом является обеспечение возможности одновременного выбора нескольких каналов.

Изобретение относится к выполнению задач в приложении. Технический результат заключается в обеспечении возможности повторения выполнения ранее выполненной задачи в приложении на основе текущего контекста мобильного устройства.

Группа изобретений относится к системам проверки, более конкретно, к проверке авторства сеанса электронной подписи. Техническим результатом является повышение точности управления удаленной встречей с нотариусом, за счет синхронизации отображаемого документа подписывающей стороне с отображением документа удаленному нотариальному агенту.

Группа изобретений относится к области вычислительной техники и может быть использована для обработки задач на основе нейронной сети. Техническим результатом является повышение производительности и сокращение времени обработки.

Настоящее изобретение относится к архитектурам цифрового сигнального процессора. Техническим результатом изобретения является предоставление DSP-архитектуры, предоставляющей более объединенную функциональность, в то же время сохраняющей высокую степень универсальности.

Изобретение относится к вычислительной технике. Технический результат заключается в обеспечении активной основной физической среды и телефонной линии параллельно с другой активной виртуальной средой и телефонной линией.

Группа изобретений относится к области вычислительной техники. Техническим результатом является повышение надежности при обработке запросов при осуществлении доступа к объектам, размещенным на сервере.

Группа изобретений относится к области информационной безопасности. Техническим результатом является повышение достоверности эмуляции инструкций файла, повышение уровня обнаружения вредоносного кода, снижение времени реакции на новые угрозы.
Наверх