Диспетчеризация множественных потоков в компьютере
Иллюстрации
Показать всеИзобретение относится к диспетчеризации множественных потоков в компьютере. Техническим результатом является обеспечение диспетчеризации многопотоковой гостевой виртуальной машины. Компьютерная система содержит конфигурацию, содержащую машину, выполненную с возможностью эксплуатации в режиме единственного потока (ST) и в многопоточном (МТ) режиме. Дополнительно машина включает в себя физические потоки. Машина сконфигурирована для выполнения способа, содержащего выпуск команды запуска виртуального выполнения (запуска VE) для диспетчеризации гостевого логического объекта, включающего в себя множественные логические потоки на ядре. Гостевой логический объект включает в себя, полностью или частично, гостевую VM, а выпуск команды выполняется хостом, работающим на одном из физических потоков на ядре в режиме ST. Выполнение команды запуска VE машиной включает в себя построение соответствия для каждого из логических потоков с соответствующим ему потоком из числа физических потоков, инициализацию каждого из приведенных к соответствию физических потоков с состоянием соответствующего ему логического потока и запуск выполнения гостевого логического объекта на ядре в режиме МТ. 3 н. и 12 з.п. ф-лы, 16 ил.
Реферат
Уровень техники
Настоящее изобретение относится, в общем, к многопоточности (МТ) и, прежде всего, к реализации машины для диспетчеризации множественных потоков в компьютере.
Многопоточность (МТ) предоставляет средства для увеличения числа потоков процессора, которые могут работать параллельно в единственном ядре физического процессора без потребности в добавлении дополнительных ядер. В идеальном случае МТ предоставляет эту повышенную производительность при наличии одной или нескольких использующих потоки частей аппаратных средств ядра, которые на текущий момент времени не используются другим потоком (потоками), работающим на том же ядре. Например, во время латентности, вызванной неудачным обращением в кэш или другой задержкой одного потока, один или несколько других потоков могут использовать ресурсы ядра, увеличивая тем самым использование ресурсов ядра. Несмотря на то, что на практике, такое совместное использование приводит к некоторому взаимному вмешательству между потоками, и требует некоторых дополнительных аппаратных средств, тем не менее, МТ предоставляет способность к выполнению работы каждого потока с помощью меньшего количества аппаратных средств, нежели требуется в том случае, если каждый поток должен работать на его собственных изолированных аппаратных средствах ядра. Зачастую, дополнительная выгода может быть получена из МТ, когда совместное использование аппаратных ресурсов потоками также уменьшает полную напряженность в компьютерной системе для предоставления информации, такой как данные из памяти, к двум уникальным ядрам.
Как правило, хотя МТ предоставляет экономию средств на оборудование, добавление другого рабочего потока требует тех же издержек координации на уровне гипервизора, которые требуются для предоставления повышенной производительности с помощью дополнительного отдельного ядра. Во многих случаях, как только достигается конкретное значение масштабного коэффициента, издержки для координирования ресурсов между рабочими потоками, независимо от их выполнения на совместно используемом или отдельном ядре, являются существенными, и могут уменьшить или даже перевесить преимущества, обусловленные способностью к выполнению независимого рабочего потока. Это означает, что, в целом, по мере увеличения числа администрируемых объектов, непроизводительные издержки администрирования возрастают.
Сущность изобретения
Варианты осуществления включают в себя систему, способ и компьютерный программный продукт для диспетчеризации многопоточной гостевой виртуальной машины (VM). Согласно одному аспекту компьютерная система включает в себя конфигурацию с машиной, активированной для эксплуатации в режиме единственного потока (ST) и в многопоточном (МТ) режиме. Кроме того, машина включает в себя физические потоки. Машина сконфигурирована для выполнения способа, включающего в себя выпуск команды запуска виртуального выполнения (запуска VE) для диспетчеризации гостевого логического объекта, включающего в себя множественные логические потоки на ядре. Гостевой логический объект включает в себя, полностью или частично, гостевую VM, а выпуск команды выполняется хостом, работающим на одном из физических потоков на ядре в режиме ST. Выполнение команды запуска VE машиной включает в себя построение соответствия для каждого из логических потоков с соответствующим ему потоком из числа физических потоков, инициализацию каждого из приведенных к соответствию физических потоков с состоянием соответствующего ему логического потока, и запуск выполнения гостевого логического объекта на ядре в режиме МТ.
Согласно другому аспекту предоставляется компьютерно-реализуемый способ диспетчеризации многопоточной гостевой виртуальной машины (VM) в конфигурации. Конфигурация включает в себя машину, имеющую единственное ядро, активированное для функционирования в режиме единственного потока (ST) и в многопоточном (МТ) режиме. Ядро включает в себя физические потоки. Способ включает в себя выпуск команды запуска виртуального выполнения (запуска VE) для диспетчеризации гостевого логического объекта, включающего в себя множественные логические потоки на ядре. Гостевой логический объект включает в себя, полностью или частично, гостевую VM, а выпуск команды выполняется хостом, работающим на одном из физических потоков на ядре в режиме ST. Выполнение команды запуска VE машиной включает в себя построение соответствия для каждого из логических потоков с соответствующим ему потоком из числа физических потоков, инициализацию каждого из приведенных к соответствию физических потоков с состоянием соответствующего ему логического потока, и запуск выполнения гостевого логического объекта на ядре в режиме МТ.
Другой аспект включает в себя машиночитаемый информационный носитель, не являющийся сигналом и содержащий воплощенные на нем программные команды для диспетчеризации многопоточной гостевой виртуальной машины в конфигурации, включающей в себя машину, имеющую единственное ядро, активированное для функционирования в режиме единственного потока (ST) и в многопоточном (МТ) режиме, причем выполнение указанных программных команд посредством устройства обработки данных обеспечивает осуществление описанного выше способа. Кроме того, машина включает в себя физические потоки. Осуществляемый при программных команд способ включает в себя выпуск команды запуска виртуального выполнения (запуска VE) для диспетчеризации гостевого логического объекта, включающего в себя множественные логические потоки на ядре. Гостевой логический объект включает в себя, полностью или частично, гостевую VM, а выпуск команды выполняется хостом, работающим на одном из физических потоков на ядре в режиме ST. Выполнение команды запуска VE машиной включает в себя построение соответствия для каждого из логических потоков с соответствующим ему потоком из числа физических потоков, инициализацию каждого из приведенных к соответствию физических потоков с состоянием соответствующего ему логического потока, и запуск выполнения гостевого логического объекта на ядре в режиме МТ.
Краткое описание нескольких видов чертежей
Рассматриваемый в качестве вариантов осуществления объект изобретения, прежде всего, указан и недвусмысленно заявлен в пунктах формулы изобретения в конце технического описания. Упомянутые ранее и другие признаки и преимущества вариантов осуществления являются очевидными из последующего подробного описания, рассматриваемого совместно с сопровождающими чертежами, на которых:
Фиг. 1 изображает вычислительное окружение, которое может быть реализовано согласно варианту осуществления,
Фиг. 2 изображает физический процессор, который может быть реализован согласно варианту осуществления,
Фиг. 3 изображает вычислительное окружение, которое может быть реализовано согласно варианту осуществления,
Фиг. 4 изображает описание состояния многопоточного (МТ) логического потока согласно варианту осуществления,
Фиг. 5 изображает блок-диаграмму маски (TVM) допустимости потока согласно варианту осуществления,
Фиг. 6 изображает группу описаний состояния фиксированного смещения согласно варианту осуществления,
Фиг. 7 изображает группу описаний состояния, задаваемую в виде списка адресов, согласно варианту осуществления,
Фиг. 8 изображает группу описаний состояния, задаваемую в виде связанного списка, согласно варианту осуществления,
Фиг. 9 изображает группу описания состояния, задаваемую в виде циклического списка или кольца, согласно варианту осуществления,
Фиг. 10 изображает процесс диспетчеризации ядра согласно варианту осуществления,
Фиг. 11 изображает скоординированный выход из виртуального выполнения согласно варианту осуществления,
Фиг. 12 изображает блок-диаграмму области управления системы согласно варианту осуществления,
Фиг. 13 изображает последовательность операций для координирования между многопоточными ядрами согласно варианту осуществления, и
Фиг. 14, которая включает в себя фиг. 14А и 14Б, изображает машинную реализацию диспетчеризации ядра согласно варианту осуществления,
Фиг. 15, которая включает в себя фиг. 15А и 15Б, изображает машинную реализацию скоординированного выхода из виртуального выполнения согласно варианту осуществления, и
Фиг. 16 изображает машиночитаемый носитель согласно варианту осуществления.
Подробное описание
Описанные в настоящем документе варианты осуществления могут быть использованы для сокращения непроизводительных издержек администрирования гипервизора в многопоточном (МТ) окружении. Как описано в настоящем документе, администрирование множественными потоками может быть разделено между гипервизором, администрирующим множественные потоки как единственное логическое ядро, и машиной, администрирующей взаимодействия между множественными потоками по мере получения ими доступа к ресурсам физического ядра. Это может привести к существенному сокращению многопоточных (МТ) непроизводительных издержек за счет позволения гипервизору администрировать большую часть инфраструктурных ресурсов гипервизора на базе логического ядра, и позволения машине администрировать другие ресурсы на более дробной базе потока. Вариант осуществления включает в себя команду диспетчеризации ядра, которая может быть выполнена работающим на единственном потоке (ST) гипервизором. Выполнение команды диспетчеризации ядра, называемой в настоящем документе «командой запуска VE с заданной МТ», может вызывать множественные гостевые логические потоки, которые составляют, полностью или частично, гостевую виртуальную машину (VM), которая подлежит диспетчеризации на единственном физическом ядре. В варианте осуществления используемая гипервизором для диспетчеризации гостя команда задает однопоточность или многопоточность подлежащего диспетчеризации гостя.
Описанные в настоящем документе варианты осуществления могут включать в себя структуры, такие как маска допустимости потока, для указания на то, какие логические потоки в пределах гостевого логического ядра на текущий момент времени являются допустимыми, и группа описаний состояния, включающая в себя кольцо описаний состояния, и служащая для администрирования диспетчеризацией многопоточного логического ядра. Кроме того, первичные и вторичные описания состояния и типы полей (например, первичное, общее для ядра, специфичное для потока) могут быть реализованы для эффективного администрирования ресурсами компьютера при диспетчеризации логического ядра с множественными потоками. Кроме того, для упрощения администрирования функций гипервизора и логического ядра может быть предоставлен скоординированный выход, при котором все потоки в пределах логического ядра одновременно выходят из виртуального выполнения.
Варианты осуществления могут включать в себя поддерживаемую гипервизором управляющую структуру, называемую в настоящем документе ориентированной на ядро областью (COSCA) управления системы. COSCA используется как гипервизором, так и машиной для администрирования конкретными функциями, которые могут затрагивать множественные логические процессоры в гостевой конфигурации. Вариант осуществления COSCA реализуется в виде древовидной структуры, где листья представляют логические ядра, а каждый лист содержит соответствующий потокам соответствующего ядра список. Структура COSCA может содержать поля (например, адреса описания состояния), которые позволяют гипервизору с легкостью получать доступ к описаниям состояния для всех потоков в конкретном ядре.
Варианты осуществления могут также включать в себя машинную реализацию диспетчеризации ядра (например, команду запуска VE с заданной МТ), где расположенный на машине милликод может быть использован для администрирования процессом диспетчеризации ядра.
При рассмотрении в настоящем документе, термин милликод используется для отсылки к лицензированному внутреннему коду, являющемуся неотъемлемой частью функционирования аппаратных средств процессора. Милликод выполняется машиной, когда она работает в режиме выполнения, называемом в настоящем документе миллирежимом.
Когда гостевое логическое ядро включает в себя множественные потоки, один из логических потоков назначают первичным потоком, а остальные назначают вторичными потоками. Термин «первичный» относится к логическому потоку. Физический поток не является с аппаратной перспективы ни первичным, ни вторичным потоком, он становится первичным потоком, как только на нем выпускается команда запуска VE с заданной МТ. Причина этого временного различия на физическом уровне состоит в том, что при возвращении управление обратно к хосту, это обычно делается на первичном потоке, то есть, управление возвращается обратно к гипервизору на том же самом физическом потоке, на котором был выпущена команда на запуск VE.
В варианте осуществления милликод может использоваться для загрузки почти всего состояния любого потока (первичного или вторичного) от любого другого потока (первичного или вторичного). В вариантах осуществления милликод использует эту гибкость в загрузке состояния для загрузки очень небольшой части другого потока с целью повышения потенциальной эффективности, которая может быть получена посредством параллельной загрузки его собственного состояния каждым потоком. Некоторые операторы (такие как ассоциативный буфер трансляции очистки или «PTLB»), а также общие ресурсы могут быть применимы ко всем потокам, что позволяет производить их выполнение или загрузку только от единственного потока. Это не только экономит время для оператора или загрузки как таковой, но, в некоторых случаях, это также экономит на проверке, необходимой для выявления фактической потребности в данном действии. Эта встроенная в конструкцию гибкость может позволять милликоду постоянно приспосабливать используемый для поддержки диспетчеризации ядра алгоритм по мере продвижения цикла проектирования, разработки и испытаний. Могут быть предоставлены механизмы эффективного запуска и остановки выполнения потока. Кроме того, милликод может также использоваться для регистрации ситуации, куда внутреннее встроенное программное обеспечение работает на потоке, рассматривающемся в качестве недопустимого на программном уровне.
Дополнительные варианты осуществления направлены к машинной реализации скоординированного выхода из диспетчеризированного МТ гостевого логического ядра обратно к ST хосту (например, гипервизору). В варианте осуществления милликод используется для синхронизации системы, что включает в себя координацию всех отдельных потоков путем учета каждого из их текущих состояний. Вариант осуществления может также включать в себя обработку высокоприоритетных прерываний при удержании низкоприоритетных прерываний, которые могут задержать выход. Закрытие вторичных потоков может быть осуществлено способом, обеспечивающим наиболее эффективное использование ресурсов ядра после завершения выхода. Например, милликод может деактивировать конкретные прерывания для воспрепятствования использованию ресурсов ядра для диспетчеризации обработчика прерываний милликода, когда это не является необходимым. Милликод может также использоваться для указания на то, что конкретные физические регистры более не используются, и являются свободными для их использования посредством работающего ST.
При рассмотрении в настоящем документе, термин «поток» относится к единственному потоку команд и его связанному состоянию. Таким образом, на уровне архитектуры каждый логический поток представляет независимый ЦП или процессор. На аппаратном уровне физический поток является выполнением связанного с логическим потоком потока команд, объединенным с поддержанием того гостевого состояния, при котором данный поток диспетчеризируется. Именно поддержание данного состояния потока посредством машины позволяет уменьшить объем администрирования, требуемого на уровне гипервизора. Общее число доступных для использования логическими ядрами логических потоков ограничивается общим числом доступных для физических ядер физических потоков.
При рассмотрении в настоящем документе, термин «физическое ядро» относится к аппаратному процессору, выполняющему один или несколько независимых потоков команд или потоков исполнения, но совместно использующему несколько базовых ресурсов, таких как устройства выполнения и кэши низкого уровня. Такое совместное использование может быть осуществлено многими способами, включая сюда использование каждым потоком тех же аппаратных ресурсов в независимые моменты времени или логическое совместное использование ресурсов каждым физическим входом, тегированным идентификатором потока. Надлежащий синергетический эффект взаимодействия между потоками, например одним потоком, который часто нуждается в ресурсе А, но только изредка в ресурсе В, и другим потоком, который обычно использует ресурс В, но не ресурс А, может повысить эффективность такого совместного использования. При рассмотрении в настоящем документе, термин «машина» относится к аппаратным средствам, входящим в состав физического ядра, а также к милликоду и другому встроенному программному обеспечению, используемому для поддержки физического ядра.
При рассмотрении в настоящем документе, термины «гостевая VM» и «гость» используются попеременно для обращения к единственной гостевой конфигурации, которая может включать в себя единственный ЦП или множественные ЦП. При рассмотрении в настоящем документе, термин «логическое ядро» относится к группе логических гостевых потоков или ЦП, заданных для совместной диспетчеризации в качестве части команды запуска VE, где задается МТ. Гостевая VM может быть образована из единственного логического ядра (либо ST, либо МТ) или из множественных логических ядер (каждое из которых также может быть представлено ST или МТ).
При рассмотрении в настоящем документе, термин «программное обеспечение» относится или к программе гипервизора (например, PR/SM или zVM) или к гостевой операционной системе или к прикладной программе, которая диспетчеризируется в результате команды запуска VE.
При рассмотрении в настоящем документе, термины «гипервизор» и «хост» относятся к программе, администрирующей системные ресурсы и диспетчеризирующей гостевой логический процессор (процессоры) для выполнения на физическом оборудовании.
Операнд команды запуска VE, используемый для диспетчеризации гостя, указывает на описание состояния или на группу описаний состояния, которая задает состояние данного гостевого процессора или ядра. Описание состояния как таковое имеет указатели на «вспомогательные блоки», которые могут быть рассмотрены как расширение описания состояния, и включают в себя дополнительную информацию, которая, кроме того, задает состояние данного гостевого ядра или процессора. При рассмотрении в настоящем документе, термин «описание состояния» относится не только к самому описанию состояния, но также и к соответствующим вспомогательным блокам. Ориентированная на ядро область (COSCA) управления системы, один из таких вспомогательных блоков изображен на фиг. 12.
Обращаясь теперь к фиг. 1, в общем, показано вычислительное окружение 100, которое может быть реализовано посредством образцового варианта осуществления. Вычислительное окружение 100 может базироваться, например, на z/Архитектуре, предлагаемой International Business Machines Corporation, Армонк, Нью-Йорк, z/Архитектура описана в публикации IBM® под названием «z/Архитектура, принципы работы» (z/Architecture, Principles of Operation), публикация № SA22-7932-09, август 2012, включенной в настоящий документ путем отсылки в полном объеме. В одном примере, вычислительное окружение на основании z/Архитектуры включает в себя eServer zSeries, предлагаемый International Business Machines Corporation, Армонк, Нью-Йорк.
В качестве примера, вычислительное окружение 100 может включать в себя процессорный комплекс 102, присоединенный к контроллеру 120 системы. Процессорный комплекс 102 может включать в себя, например, один или несколько разделов 104 (например, логических разделов LP1-LPn), одно или несколько физических ядер 106 (например, Core 1, Core m), а также гипервизор 108 уровня 0 (например, администратор логического раздела), каждый из которых элементов описан ниже.
Каждый логический раздел 104 может быть способным к функционированию в качестве отдельной системы. Это означает, что каждый логический раздел 104 может быть при желании независимо сброшен, первоначально загружен операционной системой 110, и может работать с различными программами. Операционная система 110 или прикладная программа, работающая в логическом разделе 104, представляется как имеющая доступ к полной системе, но в действительности, только ее часть является доступной. Комбинация аппаратных средств и лицензированного внутреннего кода (обычно называемого микрокодом или милликодом или встроенным программным обеспечением) предохраняет программу в одном логическом разделе 104 от вмешательства со стороны программы в другом логическом разделе 104. Это позволяет нескольким различным логическим разделам 104 действовать на единственном или множественных физических ядрах 106 способом с квантованием времени. В варианте осуществления каждое физическое ядро включает в себя один или несколько центральных процессоров (также называемых в настоящем документе «физическими потоками»). В показанном на фиг. 1 примере каждый логический раздел 104 имеет резидентную операционную систему 110, которая может отличаться для одного или нескольких логических разделов 104. Операционная система 110, выполняющаяся в каждом логическом разделе 104, является примером гостевой конфигурации или виртуальной машины. В одном варианте осуществления операционная система 110 является операционной системой z/OS®, предлагаемой International Business Machines Corporation, Армонк, Нью-Йорк.
Физические ядра 106 включают в себя ресурсы физического процессора, выделяемые логическим разделам 104. Логический раздел 104 может включать в себя один или несколько логических процессоров, каждый из которых представляет, полностью или частично, выделенные разделу 104 физические процессорные ресурсы. Физические ядра 106 могут быть либо выделены разделу таким образом, что физические процессорные ресурсы лежащего в основе ядра (ядер) 106 резервируются для данного раздела 104, либо быть используемыми совместно с логическими ядрами другого раздела 104 таким образом, что физические процессорные ресурсы лежащего в основе ядра (ядер) 106 являются потенциально доступными другому разделу.
В варианте осуществления, показанном на фиг. 1, логическими разделами 104 управляет гипервизор 108 уровня 0, который реализован посредством встроенного программного обеспечения, работающего на физических ядрах 106. Каждый из числа логических разделов 104 и гипервизора 108 содержит одну или несколько программ, находящихся в соответствующих, связанных с физическими ядрами 106 участках центрального запоминающего устройства (памяти). Один пример гипервизора 108 представлен администратором ресурсов процессора/системы Processor Resource/Systems Manager (PR/SM™), предлагаемым International Business Machines Corporation, Армонк, Нью-Йорк.
Контроллер 120 системы, который на фиг. 1 соединен с центральным вычислительным комплексом 102, может включать в себя централизованную логику, ответственную за арбитраж между различными выдающими запросы процессорами. Например, когда контроллер 120 системы получает запрос на доступ к памяти, он выявляет, позволен ли доступ к данному местоположению памяти и, если позволен, предоставляет содержимое данного местоположения памяти центральному вычислительному комплексу 102 при поддержании непротиворечивости памяти между процессорами в пределах этого комплекса.
Обращаясь теперь к фиг. 2, в общем, показана согласно варианту осуществления блок-диаграмма устройства 200 обработки данных для реализации машины или физического ядра, такого как физическое ядро 106 на фиг. 1. Устройство обработки данных 200 может включать в себя одно физическое ядро из числа нескольких физических ядер в многопроцессорном окружении. Показанное на фиг. 2 устройство 200 обработки данных включает в себя интерфейсное устройство 202 контроллера системы, которое может соединять устройство 200 обработки данных с другими ядрами и периферийными устройствами. Интерфейсное устройство 202 контроллера системы может также соединять Dcache 204, который считывает и сохраняет значения данных, Icache 208, который считывает программные команды, а также интерфейсное устройство 206 кэша с внешней памятью, процессорами и другими периферийными устройствами.
Icache 208 может предоставлять загрузку потоков команд совместно с устройством 210 выборки команд (IFU), которое выбирает команды с упреждением и может включать в себя инструменты упреждающей загрузки и предсказания ветвлений. Выбранные команды могут быть предоставлены устройству 212 декодирования команд (IDU) для декодирования в данные для обработки команд.
IDU 212 может предоставлять команды выпускающему устройству 214, которое может управлять выпуском команд к различным устройствам выполнения, таким как одно или несколько арифметических устройств 216 для выполнения операций с фиксированной точкой (FXU) для выполнения общих операций, а также одному или нескольким устройствам 218 для операций с плавающей точкой (FPU) для выполнения операций с плавающей точкой. Устройства FPU 218 могут включать в себя двоичное устройство 220 для операций с плавающей точкой (BFU), десятичное устройство 222 для операций с плавающей точкой (DFU) или любое другое устройство для операций с плавающей точкой. Выпускающее устройство 214 может также быть соединено с одним или несколькими устройствами 228 загрузки и хранения (LSU) через один или несколько конвейеров LSU. Множественные конвейеры LSU обрабатываются как устройства выполнения для выполнения загрузок и сохранений и генерации адресов для ответвлений. Как LSU 228, так и IFU 210 могут использовать ассоциативный буфер 230 трансляции (TLB) для предоставления буферизованных трансляций для адресов операндов и команд.
FXU 216 и FPU 218 соединены с различными ресурсами, такими как регистры 224 общего назначения (GPR) и регистры 226 с плавающей точкой (FPR). GPR 224 и FPR 226 предоставляют память значений данных для значений данных, загруженных и сохраненных от Dcache 204 LSU 228.
Обращаясь теперь к фиг. 3, в общем, показано вычислительное окружение 300, которое может быть реализовано посредством варианта осуществления. Показанное на фиг. 3 вычислительное окружение 300 является подобным вычислительному окружению 100, показанному на фиг. 1, с добавлением гипервизора 302 уровня 1, который осуществляет выполнение в логическом разделе 104, промаркированном LP2. Как показано на фиг. 3, гипервизор 302 уровня 1 может предоставлять те же функции гипервизора, как описанные ранее относительно гипервизора 108 (также называемого в настоящем документе «гипервизором уровня 0»), такие как прозрачное временное квантование ресурсов между множественными операционными системами (например, OS1 314, OS2 312 и OS3 310, работающими в виртуальных машинах VM1 304, VM2 306 и VM3 308), а также изоляция таких операционных систем друг от друга в пределах логического раздела 104, промаркированного LP2. Показанный на фиг. 3 вариант осуществления включает в себя, в качестве примера, три виртуальные машины, а другие варианты осуществления могут включать в себя большее или меньшее число виртуальных машин, в зависимости от требований к приложению.
Как показано на фиг. 3, промаркированный LP1 логический раздел 104 имеет резидентную операционную систему 110, а промаркированный LP2 логический раздел 104 выполняет гипервизор 302 уровня 1, который, в свою очередь, создает виртуальные машины 304, 306, 308, каждая из которых выполняет свои собственные резидентные операционные системы 314, 312, 310. Любой из числа логических разделов 104 может выполнять гипервизор 302 уровня 1. В варианте осуществления гипервизор 302 уровня 1 является z/VM гипервизором, предлагаемым International Business Machines Corporation, Армонк, Нью-Йорк. Резидентные операционные системы, работающие в различных логических разделах, могут отличаться друг от друга и, при выполнении под гипервизором 302 уровня 1, резидентные операционные системы (например, операционные системы 314, 312, 310) в пределах единственного раздела 104 (например, LP2) также могут отличаться. В варианте осуществления операционная система 110 в промаркированном LP1 логическом разделе 104 является операционной системой z/OS, предлагаемой International Business Machines Corporation, Армонк, Нью-Йорк. В варианте осуществления операционные системы 310 и 312 представлены Linux, а операционная система 314 представлена z/OS.
Когда гипервизор 302 уровня 1 работает в логическом разделе 104, он может предоставлять ту же виртуализацию ресурсов, которую предоставляет гипервизор уровня 0, такой как гипервизор 108, к логическим разделам 104 к операционным системам 310, 312, 314, работающим в виртуальных машинах 308, 306, 304. Как и на первом уровне, каждая виртуальная машина может включать в себя множественные виртуальные процессоры.
Физические ядра 106 включают в себя ресурсы физического процессора, которые могут быть выделены или совместно использованы, как описано для фиг. 1, логическими разделами 104 LP1, LP2, LP3 и LP4. Когда логический раздел LP2 диспетчеризируется на одно или несколько физических ядер, гипервизор 302 уровня 1 может в этом случае прозрачно разделить эти ресурсы между его виртуальными машинами VM1 304, VM2 306 и VM3 308. В одном варианте осуществления гипервизор 108 уровня 0 использует команду запуска VE с заданной МТ для диспетчеризации многопоточного гипервизора 302 уровня 1, который в этом случае использует команду запуска VE с заданной ST для диспетчеризации однопоточных виртуальных машин VM1 304, VM2 306 и VM3 308. В другом варианте осуществления гипервизор 108 уровня 0 использует команду запуска VE с заданной ST для диспетчеризации однопоточного гипервизора 302 уровня 1, который в этом случае использует команду запуска VE с заданной МТ для диспетчеризации многопоточных виртуальных машин VM1 304, VM2 306 и VM3 308. В другом варианте осуществления как гипервизор 302 уровня 1, так и все его гостевые VM 304, 306, 308 являются однопоточными.
В гостевом многопроцессорном (MP) окружении гипервизор может поддерживать управляющую структуру, известную как область управления системы (SCA), использующуюся как гипервизором, так и машиной для администрирования определенных функций, которые могут затрагивать множественные логические процессоры в гостевой конфигурации. Для всех гостевых процессоров в конфигурации или виртуальной машины в описании состояния задают одинаковый адрес (SCAO) начала SCA. В варианте осуществления эта область может включать в себя общую область (используемую, в целом, для координирования гостевых функции по всей конфигурации) и отдельные, специфичные для процессора записи. Общая область, например, содержит информацию относительно того, какие виртуальные процессоры в пределах гостевой конфигурации являются допустимыми. Отдельная, специфичная для процессора область в пределах SCA может, например, использоваться для интерпретирования или эмулирования межпроцессорных гостевых функций, таких как межпроцессорное прерывание, или для предоставления легкодоступных указателей на соответствующее описание состояния каждого логического процессора. В варианте осуществления используемая для ST SCA расширяется для использования МТ путем добавления дополнительных, специфичных для потока записей для каждого потенциального гостевого потока.
Вариант осуществления диспетчеризации ядра может позволять работающему на единственном потоке гипервизору диспетчеризировать многопоточного гостя на его ядре с помощью модификации команды запуска VE, иногда называемой командой запуска многопоточного виртуального выполнения (запуска MVE).
Каждый поток в многопоточном госте может представлять гостевое логическое центральное вычислительное устройство (ЦП) или гостевой поток. Команда запуска VE может активировать многопоточное (МТ) гостевое выполнение на физическом ядре посредством поля управления в описании состояния. Операнд команды запуска VE при использовании для диспетчеризации ядра может задавать либо единственное описание состояния, содержащее состояние всех гостевых потоков, либо группу описаний состояния, каждое из которых, например, представляет состояние единственного гостевого потока. В варианте осуществления логическое ядро включает в себя эту группу описаний состояния. Диспетчеризации ядра требует записи виртуального выполнения для загрузки состояния логического ядра и каждого из его гостевых логических потоков в поток физического ядра и его потоки. Эти потоки могут быть представлены потоками команд, работающими независимо друг от друга. В различных вариантах осуществления группа описаний состояния может быть задана многими способами, включая сюда фиксированные смещения друг от друга, список адресов описания состояния или описаний состояния, или циклический список (кольцо) описаний состояния, который относится к ядру, причем каждое описание состояния в этой группе представляет отдельный гостевой поток. Такие методы обеспечивают легкий доступ со стороны гипервизора и машины к другим потокам в логическом ядре, а также обеспечивают поддержание в единственном месте относящихся ко всему логическому ядру полей.
Гостевая OS может использовать многопоточность путем простого выпуска команды задания МТ, обеспечивающей многопоточность в госте. Это позволяет гостевой OS обрабатывать эти новые потоки как дополнительные независимые ЦП и администрировать ими как в отсутствие многопоточности. Кроме того, гостевая OS может использовать эти потоки способом, усиливающим то обстоятельство, что они совместно используют ядро, или оно может принудить их к работе более взаимозависимым способом. Все это является прозрачным для гипервизора и машины. Гипервизор в этом случае предоставляет эти дополнительные потоки гостевой OS, в то время как сам гипервизор продолжает работать на единственном потоке на ядро и управлять большой частью гостевого МТ окружения на базе ядра. Активизация посредством OS многопоточности более подробно описана в патентной заявке США под номером патентного реестра POU92014US1, под названием «Сохранение контекста потока в многопоточной компьютерной системе», регистрируемой одновременно с настоящим документом, содержимое которой включено в настоящий документ путем отсылки в полном объеме. Копия входит в состав файла.
В варианте осуществления диспетчеризации ядра описание состояния, задаваемое в виде операнда команды запуска VE с заданной МТ, является «первичным» описанием состояния, а связанный гостевой логический поток является «первичным» потоком. Другие описания состояния в группе в настоящем документе называют «вторичными» описаниями состояния и, если применяются, относятся к вторичным логическим потокам. Когда группа описаний состояния реализована или как список или как кольцо, в первичном описании состояния может иметься поле следующего описания (NSD) состояния, указывающее на первое вторичное описание состояния, которое, в свою очередь, либо 1) указывает на следующее вторичное описание состояния в группе, либо 2) содержит значение для указания на конец группы. Значение NSD в описании состояния для последнего в списке может быть представлено адресом первичного описания состояния, в этом случае, список образует кольцо описаний состояния.
В реализации без МТ гипервизор диспетчеризирует одновременно на данном физическом ядре один гостевой логический процессор (также называемый в настоящем документе «логическим потоком»). Если конкретный логический процессор находится в недопустимом состоянии, например, в остановленном состоянии или в деактивированном ожидании, то гипервизор не диспетчеризирует этого гостя. В окружении МТ диспетчеризация ядра позволяет гипервизору одновременно диспетчеризировать на ядре множественные гостевые потоки. С целью приспособления к возможности того, что один или несколько из числа потоков в группе описаний состояния данного логического ядра являются недопустимыми, вариант осуществления использует в