Средство предупреждающего прерывания
Иллюстрации
Показать всеИзобретение относится к области обеспечения обработки в вычислительной среде при наличии разделяемых ресурсов. Техническим результатом является повышение производительности работы вычислительной системы с гостевой многопроцессорной конфигурацией. Программе (например, операционной системе) предоставляется предупреждение, что она имеет льготный период для того, чтобы осуществить функцию, такую как очистка (например, завершить, остановить и/или переместить контролируемый модуль). Программа предупреждается, в одном примере, что она теряет доступ к ее разделяемым ресурсам. Например, в виртуальной среде, гостевая программа предупреждается, что она близка к потере ее ресурсов центрального процессорного устройства и поэтому должна осуществить функцию, такую как очистка. Предложенное предупреждающее средство предусматривает регистрацию программы для участия в работе этого средства, уведомление о льготном периоде и добровольное завершение программы в пределах льготного периода. 3 н. и 12 з.п. ф-лы, 21 ил.
Реферат
[001] Аспект изобретения относится в общем к обработке внутри вычислительной среды и в частности к облегчению обработки, связанной с разделяемыми ресурсами.
[002] Одним из типов среды, в которой ресурсы разделяемы, является виртуальная среда, включающая основное (хост) центральное процессорное устройство (ЦПУ) и одно или более гостевых центральных процессорных устройств. Гостевое ЦПУ (также известное как виртуальное ЦПУ) поддерживается программой основного (хост) компьютера (напр., основной операционной системой), выполняющейся на основном ЦПУ. Программа основного компьютера предпринимает действия для размещения ресурсов из нижележащей конфигурации основного компьютера и назначения этих ресурсов гостевому ЦПУ.
[003] В одном варианте реализации гостевое ЦПУ существует, когда основное ЦПУ входит в режим интерпретационного выполнения. В этот момент гостевая операционная система (здесь также называемая гостевой программой) начинает выполнение на виртуализированном ЦПУ, тогда как основная программа приостанавливает выполнение на основном ЦПУ. Основная программа возобновляет выполнение на ЦПУ, когда режим интерпретационного выполнения заканчивается. Существуют процедуры согласования между основной и гостевой машиной, при помощи которых состояние основной и гостевой машины сохраняется и восстанавливается. Обычно, когда основная программа запускает гостевую программу, основная программа приостанавливается до возвращения из гостевой программы. Как гостевое ЦПУ, так и основное ЦПУ являются различными режимами одного основного ЦПУ.
[004] Конфигурация основного (хост) компьютера обычно включает все ресурсы компьютерной системы. Эти ресурсы включают, но не ограничиваются, центральные процессорные устройства (ЦПУ), основную память и устройства ввода-вывода. В такой системе несколько гостевых ЦПУ могут поддерживаться одним основным ЦПУ. Это достигается посредством назначения каждому гостевому ЦПУ периода времени для использования основного ЦПУ, называемого квантом времени, с последующим переходом основного ЦПУ к другому гостевому ЦПУ на квант времени, и так далее. Число гостевых ЦПУ, поддерживаемых основным ЦПУ, изменяется в соответствии с возможностями основного ЦПУ и желаемой способностью быть назначенным каждому гостевому ЦПУ.
[005] Гостевая конфигурация обычно формируется из двух или более гостевых ЦПУ и называется гостевой многопроцессорной (МП) конфигурацией. Каждое гостевое ЦПУ может предоставляться через разделяемый ресурс отдельного основного ЦПУ или даже через разделение единственного основного ЦПУ. Одним из признаков такого разделения является то, что гостевое ЦПУ может работать период времени, называемый квантом времени, а потом неактивно некоторый произвольный период времени. Неактивный период варьирует в зависимости от политик приоритета, установленных системой, общего числа гостевых ЦПУ, разделяющих основное ЦПУ, и конкретной методики разделения, которая используется.
[006] В такой гостевой многопроцессорной системе программа, иногда называемая контролируемым модулем (dispatchable unit, DU), может контролироваться гостевой операционной системой на гостевом ЦПУ, а затем, во время выполнения этого контролируемого модуля, квант времени основного процессора для этого контролируемого модуля истекает. Это может оставить контролируемый модуль в таком состоянии, что он не может продолжаться на любом другом гостевом ЦПУ гостевой многопроцессорной конфигурации независимо от доступности любых других гостевых ЦПУ. Вместо этого он должен ожидать получения одним и только одним гостевым ЦПУ его следующего кванта времени, для того чтобы продолжить. В зависимости от методики разделения и относительного приоритета гостевой конфигурации следующий квант времени может задержаться на значительный период времени. Даже если в гостевой конфигурации есть другие гостевые ЦПУ, которые способны запускать контролируемый модуль, продолжение контролируемого модуля невозможно из-за состояния гостевого ЦПУ контролируемого модуля, которое сохранилось, когда предыдущий квант времени истек. Пока точно такое же состояние не сможет быть использовано для продолжения гостевого ЦПУ, контролируемый модуль неактивен.
КРАТКОЕ ИЗЛОЖЕНИЕ
[007] Для устранения недостатков уровня техники предложен способ обеспечения обработки в вычислительной среде, включающий: предоставление первой программой второй программе получаемого второй программой указания о том, что установлено предупреждающее средство, указывающего на то, что предупреждающее средство установлено в вычислительной среде, причем предупреждающее средство служит для предоставления второй программе льготного периода для выполнения первой функции; получение первой программой, на основе вышеупомянутого предоставления, незатребованного указания о том, что вторая программа зарегистрировалась для предупреждающего средства, причем регистрация включает указание первой программе, что вторая программа понимает протокол предупреждающего средства и намерена участвовать в работе предупреждающего средства; включение, на основе получения указания о регистрации второй программы, предупреждающего средства для второй программы; предоставление первой программой второй программе предупреждающего уведомления; на основе предупреждающего уведомления, вызов второй программой первой функции в пределах льготного периода; и выполнение первой программой второй функции вслед за льготным периодом.
[008] В заявке также предложены компьютерная система и машиночитаемый носитель, реализующие вышеописанный способ.
[009] Технический результат, достигаемый при осуществлении изобретения, заключается в повышении производительности работы вычислительной системы с гостевой многопроцессорной конфигурацией за счет предоставления льготных периодов только тем вторым программам, которые понимают протокол предупреждающего средства и способны завершить выполнение первой функции в течение льготного периода.
КРАТКОЕ ОПИСАНИЕ И НЕСКОЛЬКО ПРЕДСТАВЛЕНИЙ ЧЕРТЕЖЕЙ
[0010] Один или более аспектов настоящего изобретения выделены особо и явно заявлены как примеры в формуле изобретения в конце описания. Вышеуказанное и объекты, особенности и преимущества изобретения понятны из следующего подробного описания с помощью сопровождающих чертежей, в которых:
На ФИГ.1 изображен один вариант реализации вычислительной среды, включающей и использующей один или более аспектов настоящего изобретения;
На ФИГ.2 изображен другой вариант реализации вычислительной среды, включающей и использующей один или более аспектов настоящего изобретения;
На ФИГ.3 изображен еще один вариант реализации вычислительной среды, включающей и использующей один или более аспектов настоящего изобретения;
На ФИГ.4 изображен один вариант реализации логики, связанной с наблюдением гостя за средством предупреждающего прерывания, указанным на ФИГ.6, в соответствии с аспектом настоящего изобретения;
На ФИГ.5 изображен один вариант реализации логики, связанной с наблюдением основного процессора за средством предупреждающего прерывания, в соответствии с аспектом настоящего изобретения;
На ФИГ.6 изображен один вариант реализации логики, связанной с обработкой основным процессором выхода из гостевого, в соответствии с аспектом настоящего изобретения;
На ФИГ.7 изображен один вариант реализации обзора логики средства предупреждающего прерывания в соответствии с аспектом настоящего изобретения;
На ФИГ.8A-8B изображены варианты реализации логики, связанной с обработкой средством предупреждающего прерывания, в соответствии с аспектом настоящего изобретения;
На ФИГ.9 изображен один вариант реализации логики, связанной с получением предупреждающего прерывания, в соответствии с аспектом настоящего изобретения;
На ФИГ.10 изображен один вариант формата команды диагностики в соответствии с аспектом настоящего изобретения;
На ФИГ.11 изображен один вариант реализации компьютерного программного продукта, включающего один или более аспектов настоящего изобретения;
На ФИГ.12 изображен один вариант реализации основной (хост) компьютерной системы, включающей и использующей один или более аспектов настоящего изобретения;
На ФИГ.13 изображен другой пример компьютерной системы, включающей и использующей один или более аспектов настоящего изобретения;
На ФИГ.14 изображен еще один пример компьютерной системы, содержащей компьютерную сеть, включающую и использующую один или более аспектов настоящего изобретения;
На ФИГ.15 изображен один вариант реализации различных элементов компьютерной системы, включающей и использующей один или более аспектов настоящего изобретения;
На ФИГ.16A изображен один вариант реализации блока выполнения компьютерной системы согласно ФИГ.15, включающего и использующего один или более аспектов настоящего изобретения;
На ФИГ.16Б изображен один вариант реализации блока ветвления компьютерной системы согласно ФИГ.15, включающего и использующего один или более аспектов настоящего изобретения;
На ФИГ.16В изображен один вариант реализации блока загрузки/сохранения компьютерной системы согласно ФИГ.15, включающего и использующего один или более аспектов настоящего изобретения;
На ФИГ.17 изображен один вариант реализации эмулируемой основной (хост) компьютерной системы, включающей и использующей один или более аспектов настоящего изобретения;
ПОДРОБНОЕ ОПИСАНИЕ
[0011] В соответствии с аспектом настоящего изобретения предоставляется средство для предупреждения программы (напр., операционной системы) о том, что она имеет льготный период для того, чтобы выполнить функцию. Например, программе предоставляется льготный период, чтобы выполнить очистку (напр., завершить, остановить и/или переместить контролируемый модуль).
[0012] В соответствии с другим аспектом настоящего изобретения программа и/или процессор предупреждаются, что они близки к потере доступа к ресурсам (напр., разделяемым ресурсам). Например, предупреждение предоставляется процессору, разделяющему ресурсы с другими процессорами, о том, что процессор близок к потере доступа к ресурсам. В другом примере программа, такая как операционная система, выполняющаяся на разделяемом процессоре (напр., программа, разделяющая процессор с другими программами) предупреждается о том, что она близка к потере ресурсов процессора.
[0013] В одном конкретном воплощении, предоставляется средство, в котором гостевая программа, выполняющаяся на гостевом ЦПУ, поддерживаемом основным ЦПУ, снабжается предупреждением об истекании кванта времени, данного гостевому ЦПУ основным ЦПУ, или о перехвате основным компьютером гостевого кванта времени. Предупреждение предоставляет льготный период, который гостевое ЦПУ может использовать для выполнения конкретной функции, такой как полное выполнение контролируемого модуля, остановка контролируемого модуля в точке, в которой можно возобновить контроль над контролируемым модулем, и/или переместить контролируемый модуль к другому гостевому ЦПУ.
[0014] В данном контексте льготный период включает, к примеру, количество времени, число команд, число циклов и т.д. Он имеет предопределенную продолжительность, в течение которой может выполниться одна или более функций.
[0015] Один вариант реализации вычислительной среды, включающий и использующий один или более аспектов согласно настоящему изобретению, описывается при помощи ФИГ.1. В этом конкретном варианте реализации вычислительная среда 100 включает множество процессоров 102, разделяющих ресурсы 104. Каждому процессору (и/или программе, такой как операционная система, выполняющейся на процессоре) дается некоторое количество времени, называемое квантом времени, для пользования ресурсами. Ресурсы включают ресурсы центрального процессорного устройства, память, устройства или интерфейсы ввода-вывода и/или другие ресурсы, к примеру. Процессор (или выполняющаяся на нем программа), имеющий доступ к ресурсам, предупреждается, что доступ близок к концу и поэтому процессору (или программе) следует выполнить некоторое действие, такое как очистка, завершение модуля работы, остановка модуля работы, перемещение модуля работы и т.д.
[0016] Другой вариант реализации вычислительной среды 200, включающий и использующий один или более аспектов согласно настоящему изобретению, описывается при помощи ФИГ.2. Вычислительная среда 200 основывается, например, на z/Architecture®, предлагаемой корпорацией International Business Machines (IBM®), Армонк, штат Нью-Йорк. z/Architecture® описана в публикации IBM®, озаглавленной "z/Architecture Principles of Operation" ("z/Architecture. Принципы работы"), публикация IBM® № SA22-7832-08, девятое издание, август 2010 г., которая включается сюда по ссылке во всей ее целостности. В одном примере вычислительная среда, основанная на z/Architecture®, включает сервер System z®, предлагаемый корпорацией International Business Machines, Армонк, штат Нью-Йорк. IBM®, z/Architecture® и zSeries®, а также z/VM® и z/OS®, упомянутые выше, являются зарегистрированными торговыми марками корпорации International Business Machines, Армонк, штат Нью-Йорк, США. Другие названия, использованные здесь, могут быть зарегистрированными торговыми марками, торговыми марками или названиями изделий корпорации International Business Machines или других компаний.
[0017] В качестве примера, вычислительная среда 200 включает центральный процессорный комплекс (ЦПК) 102, предоставляющий поддержку виртуальных машин. ЦПК 202 включает, например, одну или более виртуальных машин 204 (или, в другом варианте, логических разделов), один или более центральных процессоров 206, по меньшей мере одну хост машину 208 (напр., управляющую программу, такую как гипервизор) и подсистему ввода-вывода 210, каждая из которых описывается ниже. В этом примере виртуальные машины и основная машина включены в память.
[0018] Поддержка виртуальных машин ЦПК предоставляет возможность работать с большим числом виртуальных машин, каждая из которых способна поддерживать гостевую операционную систему 212, такую как z/VM® z/OS® или Linux, к примеру. Каждая виртуальная машина 204 способна функционировать как отдельная система. То есть каждая виртуальная машина может независимо перезагружаться, поддерживать гостевую операционную систему и работать с разными программами. Операционная система или прикладная программа, работающая в виртуальной машине, кажется имеющей доступ ко всей системе полностью, но в действительности доступна только ее часть.
[0019] Физические ресурсы ЦПК (напр., ЦПУ, память, устройства ввода-вывода и т.п.) принадлежат основной (хост) машине 208, а разделенные физические ресурсы распределяются основной машиной между гостевыми операционными системами по мере необходимости, для удовлетворения их обрабатывающих потребностей. Взаимодействие между гостевыми операционными системами и физическими разделенными машинными ресурсами контролируется основной машиной, так как большое количество гостей обычно исключает простое распределение и назначение аппаратных ресурсов основной машиной сконфигурированным гостям.
[0020] Центральные процессоры 206 являются ресурсами физического процессора, назначаемые виртуальной машине. Например, виртуальная машина 204 включает один или более логических процессоров, каждый из которых представляет собой весь или часть ресурса физического процессора 206, которая может динамически предоставляться виртуальной машине. Виртуальные машины 204 управляются основной машиной 208. К примеру, основная машина может быть реализована в микрокоде, работающем на процессорах 206, или может быть частью операционной системы основного компьютера, выполняющейся на машине. В одном примере основная машина 208 является Администратором Системы/Ресурсов Процессора (Processor Resource/System Manager (PR/SM)), предлагаемым корпорацией International Business Machines, Армонк, штат Нью-Йорк.
[0021] Подсистема ввода-вывода 210 направляет поток информации между устройствами и главным запоминающим устройством. Она соединяется с центральным процессорным комплексом, в котором она может быть частью центрального процессорного комплекса, или отделена от него. Подсистема ввода-вывода облегчает центральным процессорам задачу прямой связи с устройствами ввода-вывода, соединенными с ЦПК, и позволяет производить обработку данных параллельно с обработкой ввода-вывода.
[0022] В одном варианте реализации основная машина (напр., PR/SM) и аппаратное/микропрограммное обеспечение процессора (напр., System z®) взаимодействуют друг с другом контролируемым кооперативным способом, чтобы выполнять операции гостевой операционной системы без необходимости передачи управления от/к гостевой операционной системе или основной машине. Гостевые операции могут выполняться непосредственно без вмешательства основной машины при помощи средства, которое позволяет интерпретационное выполнение команд для гостевой машины. Это средство предоставляет команду Начать Интерпретационное Выполнение (Start Interpretive Execution (SIE)), которую основная машина может вызывать, назначая управляющий блок, называемый описанием состояния, который хранит состояние и директивы гостевой (виртуальной) машины. Команда переводит ЦПУ в режим интерпретационного выполнения, в котором гостевые команды и прерывания обрабатываются непосредственно до тех пор, пока не возникает условие, требующее внимания основной машины. Когда такое условие возникает, интерпретационное выполнение заканчивается и либо представляется прерывание основной машины, либо команда SIE завершается, сохраняя подробности случившегося состояния; это последнее действие называется перехватом. Один из примеров интерпретационного выполнения описан в "System/370 Extended Architecture/Interpretive Execution" ("System/370 Расширенная архитектура/Интерпретационное выполнение"), публикация IBM №SA22-7095-01, сентябрь 1985, которая включается сюда по ссылке во всей ее целостности.
[0023] В данном контексте микропрограмма включает, напр., микрокод, милликод и/или макрокод процессора. Она включает, например, команды аппаратного уровня и/или структуры данных, используемые в реализации машинного кода высокого уровня. В одном варианте реализации она включает, например, проприетарный код, который обычно поставляется как микрокод, который включает достоверное программное обеспечение или микрокод, специфичный для нижележащего аппаратного обеспечения, и управляет доступом операционной системы к системному аппаратному обеспечению.
[0024] Другой пример вычислительной среды, включающий и использующий один или более аспектов согласно настоящему изобретению, изображен на ФИГ.3. В этом примере предоставляется эмулируемая основная (хост) компьютерная система 300, которая эмулирует основной (хост) компьютер 302 с основной архитектурой. В эмулируемой основной компьютерной системе 300, основной процессор (ЦПУ) 304 является эмулированным основным процессором (или виртуальным основным процессором) и реализуется через эмуляционный процессор 306, имеющий иную архитектуру набора собственных команд, чем процессоры основного компьютера 302. Эмулируемая основная компьютерная система 300 имеет память 308, доступную эмуляционному процессору 306. В примере реализации память 308 разделена на часть памяти основного компьютера 310 и часть программ эмуляции 312. Память основного компьютера 310 доступна программам эмулируемого основного компьютера 302 согласно архитектуре основного компьютера и может включать как основную машину или гипервизор 314, так и одну или более виртуальных машин 316, выполняющие гостевые операционные системы 318, аналогично подобным элементам на ФИГ.2.
[0025] Эмуляционный процессор 306 выполняет собственные команды сконструированного набора команд архитектуры, отличной от архитектуры эмулированного процессора 304. Собственные команды получаются, например, из памяти программ эмуляции 312. Эмуляционный процессор 306 может получить доступ к команде основной машины для выполнения из программы в памяти основного компьютера 310 с применением одной или более команд, полученных в последовательности, и подпрограммы доступа/декодирования, которая может декодировать команды основной машины, к которым получен доступ, чтобы определить подпрограмму выполнения собственной команды для эмулирования функции команды основной машины, к которой получен доступ. Одной из таких команд основной машины может быть, например, команда Start Interpretive Execution, Начать Интерпретационное Выполнение (SIE), с помощью которой основная машина ищет гостевую программу для выполнения в виртуальной машине. Программы эмуляции 312 могут включать поддержку для этой команды и для выполнения последовательности гостевых команд в виртуальной машине 316 в соответствии с определением этой команды SIE.
[0026] Другие средства, которые определены для архитектуры основной компьютерной системы 302, могут быть программами эмулированных или сконструированных средств, включая такие средства, как регистры общего назначения, управляющие регистры, динамическая трансляция адресов и поддержка подсистемы ввода-вывода и кэш процессора, к примеру. Программы эмуляции также могут использовать преимущества функций, доступных в эмуляционном процессоре 306 (таких как регистры общего назначения и динамическая трансляция виртуальных адресов) для улучшения производительности подпрограмм эмуляции. Также могут предоставляться специальные аппаратные и разгрузочные устройства для содействия процессору 306 в эмулировании функций основного компьютера 302.
[0027] В соответствии с аспектом настоящего изобретения предоставляется средство предупреждающего прерывания, которое может использоваться во многих типах вычислительных сред. Хотя оно может использоваться во многих типах сред, здесь описываются аспекты средства касательно гостевой многопроцессорной системы. Как описано выше, в гостевых многопроцессорных системах гостевые операционные системы контролируют контролируемые модули (напр., программы, код и т.п.) на гостевых центральных процессорных устройствах, которые содержатся по меньшей мере на одном основном центральном процессорном устройстве. Основное ЦПУ предоставляет квант времени (напр., количество времени или другой период, такой как число команд, число циклов и т.п.) гостевому ЦПУ, в течение которого контролируемый модуль выполняется. Если во время выполнения контролируемого модуля квант времени истекает, контролируемый модуль может остаться в таком состоянии, что он не может продолжаться на любом другом гостевом ЦПУ гостевой многопроцессорной конфигурации независимо от доступности любых других гостевых ЦПУ. Вместо этого он должен ожидать получения одним и только одним гостевым ЦПУ его следующего кванта времени, для того чтобы продолжить. В зависимости от конкретной методики разделения и относительного приоритета гостевой конфигурации, следующий квант времени может задержаться на значительный период времени. Даже если в гостевой конфигурации есть другие гостевые ЦПУ, которые способны запускать контролируемый модуль, продолжение контролируемого модуля невозможно из-за состояния гостевого ЦПУ контролируемого модуля, которое сохранилось, когда предыдущий квант времени истек. Пока точно такое же состояние не сможет быть использовано для продолжения гостевого ЦПУ, контролируемый модуль неактивен.
[0028] Возможно расширить квант времени, предоставив дополнительное время (или другой дополнительный период, такой как дополнительные команды, циклы и т.п.), но даже с этим добавочным временем гостевое ЦПУ может затянуть выполнение контролируемого модуля, и все равно остаться в том же неконтролируемом состоянии, что и при истечении нормального кванта времени.
[0029] Поскольку основная программа не знает директив и состояния, используемых произвольной гостевой программой, выполняющей произвольный контролируемый модуль, всегда предоставление добавочного времени для гостевой операционной системы для очистки ее контролируемого модуля не может быть осуществлено без установления протокола между основной программой и гостевой программой. Без протокола любое добавочное время, предоставленное гостевому ЦПУ, будет потреблено в основной обработке и все еще может закончиться тем же состоянием зависания контролируемого модуля. Поэтому в соответствии с аспектом настоящего изобретения, предоставляется такой протокол.
[0030] В соответствии с аспектом данного изобретения предоставляется льготный период или расширение, которое включает предупреждение, сообщающее гостевой программе, что следует предпринять некоторое действие (напр., завершить контролируемый модуль или обеспечить возможность возобновления контроля над модулем). К примеру, льготный период предоставляется по истечении кванта времени или в ответ на перехват гостевой программы основной до истечения кванта времени для того, чтобы заявить для процессора некоторый другой высший приоритет с точки зрения основной машины, как описывается здесь более подробно.
[0031] К примеру, льготный период предоставляется вместо безусловного расширения кванта времени. Если нормальный квант времени полностью истек, льготный период предоставляется, но за счет следующего нормального кванта времени, для того чтобы оставаться корректным для всех других виртуализированных гостей, каждый из которых ожидает кванта времени. Если нормальный квант времени не истек, льготный период берется из нормального времени, которое осталось. В любом случае льготный период ограничивает оставшееся время (или другой период), данное гостевому ЦПУ, и сам по себе нерасширяем. Таким образом, гостевое ЦПУ не может продолжать работу в течение произвольного и неизвестного периода.
[0032] В начале льготного периода гостевая программа уведомляется с целью очистки контролируемого модуля (напр., его завершения, остановки и/или перемещения). Установление льготного периода гарантирует, что гостевое ЦПУ не превысит дополнительного периода, который предоставляется. Протокол, по которому гостевая программа получает льготный период и уведомляется о том, что время (или другой период) почти истекло (льготный период начался), есть соглашение между гостевой программой и основной программой, что протокол понятен для гостевой программы, тем самым делая такое уведомление целесообразным. То есть гостевая программа обычно будет принимать уведомление, делая, если необходимо, текущий контролируемый модуль контролируемым другим гостевым ЦПУ гостевой конфигурации (например, перемещая его).
[0033] Дальнейшие подробности касательно протокола и средства предупреждающего прерывания (также называемого предупреждением или предупреждающим средством) описываются ниже при помощи ФИГ.4-10. Вариант реализации, описанный при помощи этих фигур, относится к виртуальной среде, имеющей одну или более гостевых машин, поддерживающихся одной или более основных машин. Однако один или более аспектов настоящего изобретения относятся также к другим средам, включая невиртуальные среды, в которых много процессоров и/или многие программы разделяют ресурсы.
[0034] При помощи ФИГ.4 описываются подробности касательно протокола средства предупреждающего прерывания с точки зрения гостевой машины. Предупреждающий протокол, с точки зрения гостевой машины, включает, например, указание установки средства, регистрацию гостя, уведомление и добровольный выход, каждый из которых описывается ниже.
[0035] Согласно ФИГ.4 гостевая программа понимает предупреждающий протокол и ищет указание, что средство установлено, ШАГ 400. В одном примере это указание является битом, хранящимся в управляющем блоке (напр., в Блоке Управления Служебного Вызова, Service Call Control Block (SCCB)), который просматривается при помощи команды чтения, такой как команда Считать Сведения SCP (Read SCP Information). Вслед за определением, что средство установлено, гостевая программа производит регистрацию, ШАГ 402. Регистрация есть механизм, по которому гостевая программа сообщает основной программе, что гостевая программа понимает протокол средства предупреждающего прерывания. В одном примере регистрация производится с помощью команды Diagnose (Диагностика), пример которой далее описывается ниже.
[0036] Регистрация, инициированная из любого гостевого центрального процессорного устройства, распространяется, в одном варианте, на все гостевые центральные процессорные устройства многопроцессорной конфигурации, поскольку желательно единообразное поведение по всем гостевым ЦПУ гостевой многопроцессорной конфигурации. В гостевой многопроцессорной конфигурации гостевые ЦПУ используют ту же главную память, и считается, что гостевые ЦПУ работают в том, что иногда называют единым массивом. Таким образом, регистрация одного гостевого ЦПУ применима к другим гостевым ЦПУ многопроцессорной среды. Регистрация неотменяема, в одном варианте, и это помогает избежать окон времени, упрощает разработку и позволяет улучшить тестируемость. Даже если регистрация неотменяема, гостевая программа может определить, будет ли она продолжать участвовать в протоколе. Если она делает такой выбор, она не должна участвовать, перезагрузившись или перезагрузив один или более индикаторов включения, описываемых ниже.
[0037] Вслед за регистрацией гостевой программы для предупреждающего протокола гостевое ЦПУ может быть уведомлено о льготном периоде, ШАГ 404. Например, оно может быть предупреждено основным ЦПУ об истекании кванта времени (или о предстоящем истекании, в другом примере) или о перехвате его кванта времени. В одном конкретном примере ЦПУ зарегистрированной гостевой конфигурации уведомляется, например, об истекании его кванта времени и начале льготного периода, который предоставляет дополнительный период для, например, очистки.
[0038] Вслед за уведомлением гостевая машина имеет ограниченное количество времени или другого периода, льготный период (напр., 50 микросекунд в одном конкретном варианте реализации), для обеспечения возможности возобновления контроля над контролируемым модулем или для произведения любых других соответствующих настроек. Если нормальный квант времени уже закончился, то, например, перед возвращением управления к основной машине льготный период используется для обеспечения возможности возобновления контроля над контролируемым модулем или для произведения любых других соответствующих настроек. Если квант времени не закончился, то льготный период используется, а любая оставшаяся часть кванта времени освобождается. Происходит нормальный учет действительного времени, использованного гостевым ЦПУ.
[0039] Вслед за произведением уведомления гостевое ЦПУ находится в вынужденном периоде (напр., ограниченное количество времени), после которого работа гостевого ЦПУ принудительно заканчивается. Производится только одно уведомление для каждого нормального кванта времени. Таким образом, гостевое ЦПУ все еще ограничено контролем конечного времени, который гарантирует, что нижележащее разделенное основное ЦПУ может быть разделено всюду, тем самым сохраняя надлежащий порядок и дисциплину во всей виртуализации, предоставляемой основной программой.
[0040] Уведомление может производиться по любому механизму, который вызывает определение однозначного статуса гостевой программой. Примеры включают однозначное гостевое прерывание, архитектурно заданное положение главной памяти, которое может быть установлено, или устройство ввода-вывода внешней памяти, доступное как для основной, так и для гостевой машины. Первое требует соответствующего включения гостевой машины, чтобы разрешить прерывание. Последние два требуют достаточно частых периодических проверок, что льготный период не расходуется впустую. В одном конкретном примере архитектуры z/Architecture®, гостевое прерывание, называемое предупреждающим прерыванием (warning track interruption, WTI), используется в качестве уведомления.
[0041] Вслед за получением предупреждения гостевая машина добровольно выходит из данного ей кванта времени/льготного периода, ШАГ 406. Гостевая машина заканчивает текущий квант времени/льготный период после уведомления и обеспечения возможности возобновления контроля над контролируемым модулем (напр., остановки и перемещения контролируемого модуля, или его завершения). Этот выход сообщает основной программе, что гость действительно следует протоколу. Могут возникать другие причины у гостевой программы для освобождения управления и тем самым возврата к основной программе. Обычно, при вынужденной обработке для возможности возобновления контроля над контролируемым модулем не будут возникать условия для любых таких внешних выходов. Если гостевое ЦПУ выходит в течение льготного периода по протоколу предупреждающего прерывания, дается уведомление обратной связи в следующий квант времени, когда бы это не произошло. Таким образом, гостевая программа знает, что она уложилась в ограничения времени, наложенные льготным периодом.
[0042] Если гость медлит с добровольным выходом, его выполнение перехватывается по истечении льготного периода. В следующий раз, когда гостевое ЦПУ стартует с нормальным квантом времени, дается уведомление обратной связи, так что гость знает, что он запоздал. Вообще, это может использоваться для определения проблемы в гостевой программе, потому что обычный льготный период оставляет достаточно времени для очистки и добровольного выхода.
[0043] Если случается внешний выход, в следующий раз, когда гостевое ЦПУ стартует с нормальным квантом времени, ожидается, что добровольный выход произойдет быстро. Тот же механизм обратной связи будет сообщать гостевой программе, что вмешался внешний выход, и тем самым предоставлять различные сведения для информирования об определении проблемы.
[0044] Этот добровольный выход выполняется по любому механизму, который вызывает переход управления к основной программе от гостевой программы и который включает вышеупомянутый механизм обратной связи. Механизм, который используется, должен быть определен в протоколе предупреждающего прерывания конкретной архитектуры для того, чтобы основная программа распознавала гостевой запрос. В одном примере этот механизм включает команду Diagnose, описываемую ниже.
[0045] В дополнение к наблюдению за гостевой машиной по протоколу предупреждающего прерывания, в одном варианте реализации, основная машина также наблюдает за средством, как далее подробно описывается ниже при помощи ФИГ.5.
[0046] Согласно ФИГ.5 основная (хост) машина распознает обозначение того, что средство установлено и отображает это ее гостевым машинам, ШАГ 500. Например, основная машина проверяет бит установки в управляющем блоке (напр., SCCB), и распознает состояние установки предупреждающего протокола (т.е., он установлен), и знает, как основная программа может использовать его, чтобы содействовать основной машине. Таким образом, обозначение средства отображается его гостевой машине. Например, чтобы отобразить средство гостевой машине, основная машина устанавливает бит установки в гостевом управляющем блоке (напр., гостевом SCCB) или в области памяти, доступной гостевой машине. Если по какой-либо причине основная программа не хочет, чтобы гостевая машина видела состояние установки протокола средства предупреждающего прерывания, и не позволяет гостевой машине видеть статус установки и использовать его, основная программа передает статус неустановленности гостевой (напр., устанавливает бит, видимый гостем, в нуль). Более того, в одном варианте реализации, основная программа устанавливает директивы гостевых ЦПУ, так что предупреждающий протокол отключен (напр., выключает один или более назначенных бит в описании состояния гостевого ЦПУ).
[0047] Так как регистрация инициируется гостем, основная программа получает незатребованный регистрационный запрос и запоминает, что гость зарегистрирован, ШАГ 502. Регистрационный запрос, инициированный любым одиночным гостевым ЦПУ, достаточен для регистрации всех гостевых ЦПУ в гостевой многопроцессорной конфигурации. Таким образом, основная программа включает предупреждающий протокол для всех ЦПУ в гостевой конфигура