Динамическое активирование многопоточности
Иллюстрации
Показать всеГруппа изобретений относится к поддерживающей множественные потоки компьютерной системе и, прежде всего, к динамическому активированию многопоточности в компьютерной системе. Техническим результатом является повышение производительности. Система содержит конфигурацию, содержащую ядро, конфигурируемое между режимом единственного потока (ST) и многопоточным (МТ) режимом, причем режим ST адресует первичный поток, а режим МТ адресует первичный поток, а также один или несколько вторичных потоков на совместно используемых ресурсах ядра, и средство многопоточности, сконфигурированное для управления конфигурацией для выполнения в первичном потоке в режиме ST команды задания режима МТ, получения числа затребованных потоков из местоположения, заданного командой задания режима МТ, и на основании выявления того, что число требуемых потоков указывает на множественные потоки, активирования режима МТ для выполнения множественных потоков, включающих в себя первичный поток, а также один или несколько вторичных потоков. 3 н. и 8 з.п. ф-лы, 17 ил., 1 табл.
Реферат
Уровень техники
Настоящее изобретение, в общем, относится к поддерживающей множественные потоки компьютерной системе и, прежде всего, к динамическому активированию многопоточности в компьютерной системе.
По мере повышения в течение последних десятилетий быстродействия процессоров компьютерных систем не наблюдалось пропорционального увеличения скорости получения доступа к памяти таких компьютерных систем. Таким образом, чем быстрее время цикла процессора, тем более явной является задержка ожидания подлежащих выборке из памяти данных. Эффекты таких задержек были смягчены посредством различных уровней кэширования, а в современных процессорах, многопоточностью (МТ).
МТ позволяет совместно использовать различные ресурсы ядра процессора посредством нескольких потоков команд, известных как потоки исполнения. Ресурсы ядра могут включать в себя устройства выполнения, кэши, ассоциативные буфера трансляции (TLB) и т.п., что может быть в целом названо ядром. Во время латентности, вызванной неудачным обращением в кэш или другой задержкой одного потока, один или несколько других потоков могут использовать ресурсы ядра, увеличивая тем самым использование ресурсов ядра. При реализации одновременной многопоточности (SMT) суперскалярного процессора множественные потоки могут быть одновременно обслужены посредством ресурсов ядра одного или нескольких ядер.
В современных аппаратных платформах МТ обычно реализуется способом, который является прозрачным для операционной системы (OS), работающей на аппаратных средствах МТ. Одним из аспектов этой характеристической особенности является то, что OS не требует модификации для использования
аппаратных средств МТ. Однако прозрачная относительно OS операция МТ может привести к высокой изменчивости времени отклика, инициализации вычислительной мощности, планирования вычислительной мощности и тарификации. Эта изменчивость может возникнуть вследствие того, что OS не знает, имеют ли его задачи монопольный контроль над ядром, или его задачи выполняются как совместно использующие ядро потоки. Согласно замыслу, наивысшая производительность для интенсивно использующей память рабочей нагрузки на способных к МТ аппаратных средствах является достижимой в том случае, когда имеется высокая средняя плотность потоков при использовании ядер. Дополнительная производительность может быть достигнута за счет предоставляемой МТ повышенной эксплуатации кэша. Если OS последовательно не поддерживает высокие средние плотности потоков для используемых ядер, предоставляемая МТ дополнительная полная пропускная производительность не является достижимой. Например, если аппаратные средства выполняют единственный поток МТ на ядро при малой вычислительной загрузке, и выполняют с высокой плотностью потоков при высокой вычислительной загрузке, выявление степени доступности для рабочей нагрузки полной вычислительной мощности МТ может оказаться очень трудным. Эта аппаратная изменчивость при эксплуатации потока МТ может привести к изменчивости, подобным образом, как ранее описано относительно производительности, как во временах отклика транзакции, так и в тарификации.
Сущность изобретения
Варианты осуществления включают в себя систему, способ и компьютерный программный продукт для динамического активирования многопоточности. Согласно одному аспекту, компьютерная система включает в себя конфигурацию с ядром, конфигурируемым между режимом единственного потока (ST) и многопоточным (МТ) режимом. Режим ST адресует первичный поток, а режим МТ адресует первичный поток, а также один или несколько вторичных потоков на совместно используемых ресурсах ядра. Компьютерная система также включает в себя средство многопоточности, сконфигурированное для управления конфигурацией для выполнения способа. Способ включает в себя выполнение в первичном потоке в режиме ST команды задания режима МТ. Число требуемых потоков получают из местоположения, заданного командой
задания режима МТ. На основании выявления того, что число требуемых потоков указывает на множественные потоки, режим МТ активируется для выполнения множественных потоков, включающих в себя первичный поток, а также один или несколько вторичных потоков.
Согласно другому аспекту, предоставляется компьютерно-реализуемый способ динамического активирования многопоточности в конфигурации. Конфигурация включает в себя ядро, конфигурируемое между режимом ST и режимом МТ, где режим ST адресует первичный поток, а режим МТ адресует первичный поток, а также один или несколько вторичных потоков на совместно используемых ресурсах ядра. Способ включает в себя выполнение в первичном потоке в режиме ST команды задания режима МТ. Число требуемых потоков получают из местоположения, заданного командой задания режима МТ. На основании выявления того, что число требуемых потоков указывает на множественные потоки, режим МТ активируется для выполнения множественных потоков, включающих в себя первичный поток, а также один или несколько вторичных потоков.
Другой аспект включает в себя машиночитаемый информационный носитель, имеющий заключенные в него программные команды для реализации динамического активирования многопоточности в конфигурации, содержащей ядро, конфигурируемое между режимом единственного потока и режимом многопоточности. Режим ST адресует первичный поток, а режим МТ адресует первичный поток, а также один или несколько вторичных потоков на совместно используемых ресурсах ядра. Машиночитаемый информационный носитель не является сигналом. Программные команды являются считываемыми посредством устройства обработки данных для принуждения устройства обработки данных к выполнению способа, который включает в себя выполнение в первичном потоке в режиме ST на ядре конфигурации команды задания режима МТ. Число требуемых потоков получают из местоположения, заданного командой задания режима МТ. На основании выявления того, что число требуемых потоков указывает на множественные потоки, режим МТ активируется для выполнения множественных потоков, включающих в себя первичный поток, а также один или несколько вторичных потоков.
Для всех указанных выше объектов изобретения команда задания режима МТ является командой процессора (SIGP) обработки сигналов от операционной системы. Команда SIGP содержит распоряжение на задание МТ и программно-задаваемый максимальный идентификатор ID, т.е. идентификатор, потока (PSMTID), связанный с числом затребованных потоков. На основании выполнения распоряжения на задание МТ с ненулевым значением PSMTID активируется режим МТ, а на основании выполнения распоряжения на задание МТ с нулевым значением PSMTID сохраняется режим ST и предотвращается активирование режима МТ. Кроме того, предоставляется индикация ошибки и предотвращается активирование режима МТ на основании выявления того, что распоряжение на задание МТ было выдано с одним или несколькими из: недопустимое распоряжение, неправильное состояние и недопустимый параметр.
Краткое описание нескольких видов чертежей
Рассматриваемый в качестве вариантов осуществления объект изобретения, прежде всего, указан и недвусмысленно заявлен в пунктах формулы изобретения в конце технического описания. Упомянутые ранее и другие признаки и преимущества вариантов осуществления являются очевидными из последующего подробного описания, рассматриваемого совместно с сопровождающими чертежами, на которых:
фиг. 1А изображает вычислительное окружение, которое может быть реализовано согласно варианту осуществления,
фиг. 1Б изображает вычислительное окружение, которое может быть реализовано согласно варианту осуществления,
фиг. 2 изображает схему обработки ядра, которая может быть реализована согласно варианту осуществления,
фиг. 3 изображает вычислительное окружение, которое может быть реализовано согласно варианту осуществления,
фиг. 4 изображает пример гипервизорного контекстного удерживания в вычислительном окружении, которое может быть реализовано согласно варианту осуществления,
фиг. 5 изображает последовательность операций для динамического активирования многопоточности согласно варианту осуществления,
фиг. 6А изображает пример процесса расширения адреса ЦП согласно варианту осуществления,
фиг. 6Б изображает пример процесса расширения адреса ЦП согласно варианту осуществления,
фиг. 7 изображает последовательность операций для распоряжения на задание многопоточности согласно варианту осуществления,
фиг. 8 изображает пример сохранения информации по инструменту многопоточности согласно варианту осуществления,
фиг. 9 изображает последовательность операций для выявления инструмента многопоточности согласно варианту осуществления,
фиг. 10 изображает пример различных местоположений контекста потока согласно варианту осуществления,
фиг. 11 изображает пример сохранения регистра многопоточности согласно варианту осуществления,
фиг. 12 изображает последовательность операций для сохранения регистра многопоточности согласно варианту осуществления,
фиг. 13 изображает пример восстановления регистра многопоточности согласно варианту осуществления,
фиг. 14 изображает последовательность операций для восстановления регистра многопоточности согласно варианту осуществления,
фиг. 15 изображает машиночитаемый носитель согласно варианту осуществления.
Подробное описание
Образцовые варианты осуществления предоставляют многопоточную операцию в компьютерной системе, которая поддерживает режим единственного потока и режим многопоточной работы. При рассмотрении в настоящем документе, логический поток относится к единственному потоку команд и к связанному с ним состоянию. Это означает, что на уровне архитектуры каждый логический поток представляет независимое центральное вычислительное устройство (ЦП) или процессор. На аппаратном уровне поток является выполнением потока команд, связанного с логическим потоком, объединенным с поддержанием гостевого состояния на момент диспетчеризации потока. Поэтому термины «поток» и «ЦП» могут быть использованы в настоящем документе взаимозаменяемым образом.
В образцовом варианте осуществления ЦП содержит средства управления последовательностью действий и обработки для выполнения команды, действия по прерыванию, функций управления временем, начальной загрузки программы и других связанных с машиной функций. ЦП задает логические функции, которые могут быть спроецированы на ряд лежащих в основе физических реализаций. В процессе выполнения команд ЦП может обрабатывать двоичные целые числа и числа с плавающей точкой (например, двоичные, десятичные и шестнадцатеричные) фиксированной длины, десятичные целые числа переменной длины, а также логическую информацию как фиксированной, так и переменной длины. Обработка может быть параллельной или последовательной. Ширина обрабатываемых элементов, кратность переключаемых маршрутов и степень одновременности при выполнении различных типов арифметических операций может отличаться от одной модели ЦП к другой без воздействия на логические результаты.
Выполняемые ЦП команды могут включать в себя несколько классов команд, таких как: общие, десятичные, поддержка операций с плавающей точкой (FPS), двоичная плавающая точка (BFP), десятичная плавающая точка (DFP), шестнадцатеричная плавающая точка (HFP), управление и команды I/O. Общие команды могут использоваться при выполнении арифметических операций с двоичными целыми числами, а также логических операций, операций ветвления и других неарифметических операций. Десятичные команды воздействуют на данные в десятичном формате. Команды BFP, DFP и HFP воздействуют на данные в форматах BFP, DFP и HFP, соответственно, в то время как команды FPS воздействуют на данные с плавающей точкой, независимо от формата или от преобразования из одного формата к другому. Привилегированные команды управления и команды I/O могут быть выполнены, когда ЦП находится в супервизорном режиме, а полупривилегированные команды управления могут быть выполнены в задачном режиме согласно соответствующим механизмам авторизации.
ЦП предоставляет регистры, которые являются доступными для программ, но не имеют адресуемых представлений в основной памяти. Регистры могут включать в себя, например, текущее слово (PSW) состояния программы, общие регистры, регистры с плавающей точкой и регистр управления с плавающей точкой, векторные регистры, регистры управления, регистры доступа, регистр префикса, программируемый регистр времени дня (TOD), а также регистры для компаратора часов и таймера ЦП. Этот набор регистров может называться архитектурно выполненным регистровым контекстом ЦП. Каждый ЦП в конфигурации может предоставлять доступ к часам TOD, которые могут быть совместно использованы всеми ЦП в конфигурации. Операционный код команды может выявлять тип регистра, который должен быть использован в операции.
Каждый ЦП может иметь реквизит типа, указывающий на то, предоставляет ли он полный комплект функций и средств (например, общий ЦП), или он предназначается для обработки специальных типов рабочей нагрузки (например, специализированный ЦП). Первичный ЦП является либо общим ЦП, либо ЦП (IPL ЦП), принадлежащим к тому же типу, что и ЦП, запущенный после последней операции по начальной загрузке (IPL) программы. Вторичный ЦП является любым ЦП кроме общего ЦП, и принадлежит к типу ЦП, отличающемуся от IPL ЦП.
Средство многопоточности может быть доступным на компьютерной системе, реализующей поддерживающую его архитектуру. Средство многопоточности предоставляет поддержку многопоточности для активирования группы потоков, которые также можно назвать несколькими ЦП, делящими между собой ядро. Когда средство многопоточности активировано, ЦП в ядре могут совместно использовать некоторые аппаратные ресурсы, такие как устройства выполнения или кэши. Когда один ЦП в ядре ожидает аппаратные ресурсы (обычно, при ожидании доступа к памяти), другие ЦП в ядре могут использовать совместно используемые ресурсы в ядре вместо позволения им оставаться неактивными. Когда средство многопоточности инсталлировано и активировано, поток является синонимом для являющегося элементом ядра ЦП. Когда средство многопоточности не инсталлировано или средство инсталлировано, но не активировано, ядро содержит единственный ЦП или поток.
Когда средство многопоточности инсталлировано, оно может быть активировано при выполнении распоряжения на задание многопоточности процессора (SIGP) обработки сигналов. В образцовом варианте осуществления, когда средство многопоточности активировано, число ЦП в конфигурации увеличивается кратным образом, причем значение мультипликатора задается программно-задаваемым максимальным идентификатором потока (PSMTID). Число ЦП в ядре может превышать PSMTID на единицу. Число группируемых в ядре ЦП соответствует значению данного мультипликатора. Каждое ядро того же типа ЦП в конфигурации может иметь то же число ЦП. Каждый ЦП в ядре принадлежит к тому же типу ЦП, однако в зависимости от модели и от типа ЦП некоторые ЦП в ядре могут не находиться в рабочем состоянии.
В образцовом варианте осуществления управляющая программа, такая как операционная система (OS), явным образом активирует многопоточность для ее применения посредством управляемой OS конфигурации. Альтернативно, многопоточность может активировать гипервизор, а гости гипервизора и их приложения могут извлечь выгоду прозрачным образом. Прикладная программа в большинстве случаев не знает, была ли активирована многопоточность. Когда многопоточность активирована, адреса ЦП всех ЦП в конфигурации приспосабливаются для включения в них идентификации ядра (или ID ядра) в крайних левых битах адреса и идентификации потока (ID потока или TID) в крайних правых битах адреса. ID ядра может также называться значением адреса ядра, a TID может называться значением адреса потока. ЦП в ядре могут совместно использовать некоторые аппаратные средства, такие как устройства выполнения или кэши низшего уровня, тем самым выполнение в пределах одного ЦП ядра может затронуть производительность других ЦП в ядре.
С целью администрирования изменений, связанных с динамическим переключением одного или нескольких ядер конфигурации между режимами единственного потока и многопоточности, имеется несколько функций поддержки. Для поддержания совместимости с не поддерживающими многопоточность программами, режим единственного потока может являться режимом по умолчанию после сброса или деактивации. Образцовые варианты осуществления включают в себя признаки для сохранения, сообщения и восстановления контекста потока из режима многопоточности для поддержки анализа и/или восстановления контекста потока после перехода от режима многопоточности к режиму единственного потока.
Вычислительное окружение, которое может быть реализовано образцовым вариантом осуществления, может базироваться, например, на z/Архитектуре, предлагаемой International Business Machines Corporation, Армонк, Нью-Йорк, z/Архитектура описана в публикации IBM® под названием «z/Архитектура, принципы работы» (z/Architecture, Principles of Operation), публикация №SA22-7932-09, август 2012, включенной в настоящий документ путем отсылки в полном объеме. В одном примере вычислительное окружение на основании z/Архитектуры включает в себя eServer zSeries, предлагаемый International Business Machines Corporation, Армонк, Нью-Йорк. Вычислительное окружение может включать в себя, например, процессорный комплекс с одним или несколькими разделами (например, логическими разделами), с одним или несколькими ядрами (например, процессорными ядрами) и одним или несколькими уровнями гипервизоров, как далее описано в настоящем документе.
Фиг. 1А показывает компьютерную систему 100 как пример вычислительного окружения, которое поддерживает многопоточность (МТ). В примере на фиг. 1А компьютерная система 100 включает в себя несколько процессорных ядер 102, подсистему 104 ввода/вывода (I/O) и системную память 160. Подсистема I/O 104 может предоставлять доступ к известным из уровня техники устройствам ввода-вывода. Процессорные ядра 102, также называемые в настоящем документе просто «ядрами», могут включать в себя схему обработки с поддерживающими элементами. В примере на фиг. 1А пять ядер 102 изображены как core1 110, core2 120, core3 130, core4 140 и core5 150, однако также может быть рассмотрено большее или меньше число ядер 102. Средство 103 МТ может быть представлено аппаратным компонентом каждого из ядер 102. В этом примере каждое из ядер 102 способно к поддержке до четырех потоков. Например, core1 110 может поддержать потоки 111, 112, 113 и 114. Core2 120 может поддержать потоки 121, 122, 123 и 124. Core3 130 может поддержать потоки 131, 132, 133 и 134. Core4 140 может поддержать потоки 141, 142, 143 и 144. Core5 150 может поддержать потоки 151, 152, 153 и 154. Следует обратить внимание на то, что не все четыре потока каждого из ядер 102 могут находиться в рабочем состоянии в любой момент. Например, в core3 130 потоки 131 и 132 могут находиться в рабочем состоянии, в то время как потокам 133 и 134 разрешено находиться в рабочем состоянии (изображены со штриховкой).
Фиг. 1А также изображает системную память 160 компьютерной системы 100, причем части системной памяти 160 распределяются по логическим разделам LPAR1 170, LPAR2 180 и LPAR3 190. Разделы LPAR 170, 180, 190 представляют собой виртуализированные вычислительные системы (также известные как конфигурации), в которых может выполняться операционная система, такая как Linux™ или IBM® z/OS™, z/VM или zTPF. Фиг. 1А также показывает распределение ядер 102 по LPAR 170, 180, 190. На этой иллюстрации core1 110 и core2 120 выделены для использования посредством LPAR1 170. Core3 130 выделено для использования посредством LPAR2 180, а core5 150 выделено для использования посредством LPAR3 190. Core4 140 может быть совместно использовано LPAR2 180 и LPAR3 190, но на фиг. 1А оно показано как назначенное для LPAR2 180. LPAR3 190 показывает пример двух различных типов ядер 102, используемых разделом, где core4 140 допускает рабочее состояние для множественных потоков, а core5 150 не допускает в этом примере рабочее состояние для множественных потоков. В примере на фиг. 1А LPAR1 170 предоставляет ресурсы обработки для OS 171, а также программ 172, 173, 174 и 175. LPAR2 180 предоставляет ресурсы обработки для OS 181, а также программ 182, 183 и 184. LPAR4 190 предоставляет ресурсы обработки для OS 191, а также программ 192 и 193.
Под управлением выполняющейся в LPAR операционной системы программы выполняются на потоках ядра. В образцовом варианте осуществления отдельный поток выполняет одновременно только одну программу, однако программа, разработанная повторно вводимой, может одновременно выполняться на множественных потоках или ядрах. Например, программа 172 для OS 171 в LPAR1 170 может выполняться в потоках 111 и 113 в core1 110 и в потоках 121 и 124 в core2 120. Являясь объектами управления OS, различные программы могут быть диспетчеризованы на те же или на различные потоки в зависимости от правил диспетчеризации и соглашений по качеству услуг.
В системной памяти 160 также находятся различные уровни встроенного программного обеспечения, включая сюда, например, милликод 162 и гипервизор 163 LPAR. Милликод 162 может быть воплощен в качестве встроенного программного обеспечения для поддержки системных функций низшего уровня. Гипервизор 163 LPAR может быть представлен, например, лицензированным внутренним кодом, таким как IBM Processor-Resource/System Manager™ (PR/SM™). Гипервизор LPAR 163 может создавать LPAR 170, 180, 190 и может управлять диспетчеризацией на ядрах 102. Когда средство МТ 103 инсталлировано в компьютерной системе 100, милликод 162 и гипервизор LPAR 163 также содержат код 164 и 165 поддержки средства МТ, соответственно. Код 164 и 165 поддержки средства МТ можно рассматривать как часть средства 103 МТ, поскольку логика для поддержки МТ может быть распределена между милликодом 162, гипервизором LPAR 163 и ядрами 102. Хотя это не изображено, каждая из OS 171, 181, 191 может также включать в себя код поддержки средства МТ для активирования и использования МТ в их соответствующих LPAR 170, 180, 190.
Фиг. 1Б показывает ту же вычислительную систему 100, как на фиг. 1А, за исключением того, что в вычислительном окружении на фиг. 1Б core4 140 теперь назначено для LPAR3 190 вместо LPAR2 180. Также следует обратить внимание на то, что в отличие от фиг. 1А, где потоки 143 и 144 не находятся в рабочем состоянии, на фиг. 1Б все четыре потока 141-144 теперь, когда LPAR3 190 диспетчеризируется на core4 140, находятся в рабочем состоянии. Диспетчеризация и недиспетчеризация LPAR на ядра 102 является динамической, и в других случаях, другой LPAR (не показан) может функционировать на тех же ядрах 102.
Со ссылкой на фиг. 2, в общем, согласно варианту осуществления показана блок-диаграмма схемы 200 обработки для реализации ядра обработки, такого как одно из ядер 102 на фиг. 1А и 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.
Схема 200 обработки может также включать в себя счетчики и/или таймеры 250 для поддержки генерации отсчета времени системы и диагностических действий. Например, счетчики и/или таймеры 250 могут использоваться для поддержки времени суток, а также различных средств диагностики и измерения.
Со ссылкой на фиг. 3 изображено подобное показанному на фиг. 1А вычислительное окружение за исключением того, что на фиг. 3 гипервизор 300 второго уровня выполняется в LPAR2 180 компьютерной системы 100. Гипервизор 300 второго уровня, например операционная система IBM z/VM включает в себя код 301 поддержки МТ, подобный коду 165 поддержки МТ, который предоставляет гипервизор 163 LPAR (первого уровня). Гипервизор 300 второго уровня предоставляет поддержку для нескольких виртуальных машин 310, 320 и 330 (называемых также конфигурациями), в которых, соответственно, работают гостевые операционные системы 311, 321 и 331. Гостевые операционные системы 311, 321, и 331 могут включать в себя, например, Linux™ или IBM® z/OS™, z/VM или z/TPF OS, или могут включать в себя гостевую среду разработки, такую как система диалоговой обработки (CMS) IBM. Каждая гостевая OS 311, 321 и 331 может активировать или может не активировать многопоточность, в котором случае гипервизор 300 второго уровня может быть ответственным за диспетчеризацию гостевых OS 311, 321, 331, а также связанных программ 312, 313, 322, 323, 332 и 333 с использованием физических ресурсов обработки (ядер 130, 140 и потоков 131-134, 141-144), которые являются доступными для LPAR2 180, в котором работает гипервизор 300 второго уровня. Программы 312, 313, 322, 323, 332, 333 различных виртуальных машин 310, 320, 330 могут выполняться на потоках 131-134, 141-144, доступных для соответствующих гостевых OS 311, 321 и 331. Гостевые OS 311, 321 и 331 не должны включать в себя код поддержки МТ, поскольку они могут извлечь выгоду из МТ прозрачным образом, если гипервизор 300 второго уровня использует многопоточность.
Со ссылкой на фиг. 4 показан пример гипервизорного контекстного удерживания в вычислительном окружении, которое может быть реализовано согласно варианту осуществления. В примере на фиг. 4, в пределах гипервизора LPAR 163 на фиг. 1А и 1Б изображены несколько структур поддержки. Например, структуры 410 могут поддерживать LPAR1 170 на фиг. 1А, включая сюда описания состояния (SD) и вспомогательные блоки, сохраняющие архитектурно выполненный регистровый контекст (то есть контекст потока) для логических потоков 411, 412, 413, 414, 421, 422, 423, 424, которые на текущий момент работают на физических потоках 111, 112, 113, 114, 121, 122, 123, 124, как показано на фиг. 1А. В то время как эти логические потоки диспетчеризируются, физические потоки удерживают текущий архитектурно выполненный регистровый контекст потоков. Архитектурно выполненный регистровый контекст сохраняется в описаниях состояния и во вспомогательных блоках в то время, когда они более не диспетчеризируются. Структуры 430 могут поддерживать LPAR2 180 на фиг. 1А, включая сюда описания состояния и вспомогательные блоки, сохраняющие архитектурно выполненный регистровый контекст для логических потоков 431, 432, 441, 442, которые на текущий момент работают на физических потоках 131, 132, 141, 142, как показано на фиг. 1А. Структуры 450 могут поддерживать LPAR3 190 на фиг. 1А, включая сюда описания состояния и вспомогательные блоки, сохраняющие архитектурно выполненный регистровый контекст для логического потока 451, который на текущий момент работает на физическом потоке 151, как показано на фиг. 1А. Структуры 450 также включают в себя описания состояния и вспомогательные блоки, сохраняющие архитектурно выполненный регистровый контекст для логических потоков 461, 462, 463 и 464, которые на текущий момент не диспетчеризируются на физическом процессоре (как показано с помощью штриховки). Другие поддерживающие LPAR структуры, которые не диспетчеризируются на физических ядрах, также могут быть сохранены посредством гипервизора 163 LPAR, такие как структуры 470 для LPAR (не изображены на фиг. 1А), включающие в себя описания состояния и вспомогательные блоки для логических потоков 471, 472, 473 и 474. Кроме того, примеры структур включают в себя структуры 480, поддерживающие недиспетчеризованный LPAR В (не изображен на фиг. 1А) включая сюда описания состояния и вспомогательные структуры для логических потоков 481 и 482, а также структуры 484 для недиспетчеризованного LPAR С (не изображен на фиг. 1А) для логического потока 485.
Хотя в примере на фиг. 4 изображены несколько структур, подразумевается, что для администрирования многопоточностью посредством гипервизора 163 LPAR, а также и в другом месте, в компьютерной системе 100 могут быть поддержаны дополнительные структуры. Например, структуры для поддержки многопоточности виртуальных машин 310, 320, 330 на фиг. 3 могут быть поддержаны посредством гипервизора 300 второго уровня на фиг. 3.
Со ссылкой на фиг. 5 изображена последовательность операций 500 для динамического активирования многопоточности согласно варианту осуществления. В блоке 502 первичный поток выполняется в режиме единственного потока (ST). В блоке 504 в режиме ST выбирается команда задания режима многопоточности (МТ). При выполнении этой команды, как совместно изображено в 505, число затребованных потоков получают в блоке 506 из заданного посредством команды задания режима МТ местоположения. Местоположение может быть задано регистром параметра при выпуске команды задания режима МТ. Команда задания режима МТ может быть представлена командой процессора (SIGP) обработки сигналов, включающей в себя распоряжение на задание МТ и программно-задаваемый максимальный идентификатор (PSMTID) потока, связанный с числом затребованных потоков. Пример процесса, связанного с распоряжением на задание МТ команды SIGP, далее описан в настоящем документе с отсылками на фиг. 7.
Продолжая рассмотрение процесса 500, в блоке 508 выполняется выявление относительно того, указывает ли число затребованных потоков на множественные потоки. Например, множественные потоки могут быть обозначены значением, превосходящим единицу. В вариантах осуществления, где значение ноль указывает на единственный поток, значение единица или более единицы указывает на множественные потоки. На основании выявления того, что число затребованных потоков не указывает на множественные потоки, ядро остается в режиме ST в блоке 510, выполнение команды задания режима МТ завершается, и управление возвращается к блоку 502. На основании выявления того, что число затребованных потоков указывает на множественные потоки, режим МТ активируется в блоке 512, и выполнение команды задания режима МТ завершается. В блоке 514 выполняются множественные потоки, включая сюда первичный и один или несколько вторичных потоков. В блоке 516, если отсутствует какой-либо сброс или деактивация, процесс 500 зацикливается обратно к блоку 514, в противном случае, в блоке 518 режим МТ деактивируется на основании сброса или деактивации конфигурации, которая возвращается к режиму ST. В качестве части процесса деактивации режима МТ, число потоков (PSMTID) сохраняется для сброса без очистки или обнуляется для сброса с очисткой. Процесс 500 возвращается к блоку 502.
ЦП может войти в состояние загрузки при активации кнопки нормальной загрузки, загрузки с разгрузкой памяти, чистой загрузки или управляемой списком чистой загрузки. Если операция начальной загрузки программы по типу управляющего слова (CCW) канала завершается успешно, ЦП переходит из состояния загрузки в рабочее состояние.
Сброс ЦП может быть использован для очистки указателей проверки оборудования и любой результирующей непредсказуемости в состоянии ЦП с наименьшим объемом уничтожаемой информации. Конкретно, это может быть использовано для очистки условий проверки, когда состояние ЦП должно быть сохранено для анализа или возобновления операции. Если сброс ЦП вызывается активацией кнопки нормальной загрузки или загрузки с разгрузкой памяти, (А) это может задать архитектурный режим в состояние режима по умолчанию, и (Б), если средство многопоточности инсталлировано и активировано, многопоточность деактивируется. Когда сброс ЦП задает режим по умолчанию, он может сохранить текущее PSW таким образом, что PSW может быть восстановлено.
Начальный сброс ЦП предоставляет функции сброса ЦП совместно с инициализацией текущего PSW, таймера ЦП, компаратора часов, а также других регистров, таких как: адреса события прерывания, захваченного PSW, управления, управления с плавающей точкой, префикса и программируемых регистров TOD. Начальный сброс ЦП может задать архитектурный режим в состояние режима по умолчанию, если это вызывается активацией кнопки нормальной загрузки или загрузки с разгрузкой памяти. Если многопоточность активируется, когда начальный сброс ЦП вызывается активацией кнопки нормальной загрузки или загрузки с разгрузкой памяти, функции начального сброса ЦП могут быть выполнены для ЦП с самым низким номером в ядре, а сброс ЦП выполняется для всех других ЦП в ядре. Сброс с очисткой вызывает выполнение начального сброса ЦП и сброса подсистемы, а также, дополнительно, очищает или инициализирует все местоположения памяти и регистры во всех ЦП в конфигурации, за исключением часов TOD. Очистка не затрагивает внешнюю память, такую как запоминающие устройства с прямым доступом, используемые управляющей программой для сохранения содержимого неадресуемых страниц.
Сброс по включении ЦП вызывает выполнение начального сброса ЦП и очищает содержимое общих регистров, регистров доступа, регистров управления и регистров с плавающей точкой к нулевым/по умолчанию значениям с допустимым кодом проверки блокировок. Подразумевается, что очистка или инициализация состояний не обязательно должна быть произведена к нулевым значениям, но значения по умолчанию в очищенном состоянии могут быть представлены также ненулевыми значениями. Если сброс ЦП по включении создает конфигурацию, он может задать архитектурный режим в состояние режима по умолчанию, в противном случае, он может задать архитектурный режим тот же, что и уже сконфигурированных ЦП. Сброс ЦП, начальный сброс ЦП, сброс подсистемы и чистый сброс могут инициироваться вручную.
В образцовых вариантах осуществления каждому ЦП присваивают число, называемое его адресом ЦП. Адрес ЦП однозначно идентифицирует один ЦП в пределах конфигурации. ЦП обозначают путем указания его адреса в адресном поле ЦП команды SIGP. ЦП, передающий сигнал о неисправности, аварии или внешнем вызове, может быть идентифицирован путем сохранения этого адреса в адресном поле ЦП с прерыванием. Адрес ЦП присваивается в процессе задания конфигурации и обычно не изменяется в результате изменений реконфигурирования. Программа может выявлять адрес ЦП при помощи команды сохранения адреса ЦП. Команда сохранения адреса ЦП может также использоваться для идентификации адреса ЦП, которым ЦП идентифицируется в многопроцессорной конфигурации.
Когда многопоточность активирована, адрес ЦП может включать в себя идентификацию ядра (ID ядра), связанную с идентификацией ЦП в ядре. Идентификация ЦП в ядре является идентификацией потока (ID потока или TID). В пределах конфигурации все ядра предоставляют одинаковое число ЦП, однако в зависимости от модели и типа ЦП некоторые ЦП в ядре могут не находиться в рабочем со