ИСПОЛЬЗОВАНИЕ СРЕДСТВА ПРЕДУПРЕЖДАЮЩЕГО ПРЕРЫВАНИЯ ПРОГРАММОЙ Российский патент 2015 года по МПК G06F9/04 

Описание патента на изобретение RU2565495C2

ПРЕДПОСЫЛКИ СОЗДАНИЯ ИЗОБРЕТЕНИЯ

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

[002] Одним из типов среды, в которой ресурсы разделяемы, является виртуальная среда, включающая основное (хост) центральное процессорное устройство (ЦПУ) и одно или более гостевых центральных процессорных устройств. Гостевое ЦПУ (также известное как виртуальное ЦПУ) поддерживается программой основного (хост) компьютера (напр., основной операционной системой), выполняющейся на основном ЦПУ. Программа основного компьютера предпринимает действия для размещения ресурсов из нижележащей конфигурации основного компьютера и назначения этих ресурсов гостевому ЦПУ.

[003] В одном варианте реализации гостевое ЦПУ существует, когда основное ЦПУ входит в режим интерпретационного выполнения. В этот момент гостевая операционная система (здесь также называемая гостевой программой) начинает выполнение на виртуализированном ЦПУ, тогда как основная программа приостанавливает выполнение на основном ЦПУ. Основная программа возобновляет выполнение на ЦПУ, когда режим интерпретационного выполнения заканчивается. Существуют процедуры согласования между основной и гостевой машиной, при помощи которых состояние основной и гостевой машины сохраняется и восстанавливается. Обычно, когда основная программа запускает гостевую программу, основная программа приостанавливается до возвращения из гостевой программы. Как гостевое ЦПУ, так и основное ЦПУ являются различными режимами одного основного ЦПУ.

[004] Конфигурация основного (хост) компьютера обычно включает все ресурсы компьютерной системы. Эти ресурсы включают, но не ограничиваются, центральные процессорные устройства (ЦПУ), основную память и устройства ввода-вывода. В такой системе несколько гостевых ЦПУ могут поддерживаться одним основным ЦПУ. Это достигается посредством назначения каждому гостевому ЦПУ периода времени для использования основного ЦПУ, называемого квантом времени, с последующим переходом основного ЦПУ к другому гостевому ЦПУ на квант времени, и так далее. Число гостевых ЦПУ, поддерживаемых основным ЦПУ, изменяется в соответствии с возможностями основного ЦПУ и желаемой способностью быть назначенным каждому гостевому ЦПУ.

[005] Гостевая конфигурация обычно формируется из двух или более гостевых ЦПУ, и называется гостевой многопроцессорной (МП) конфигурацией. Каждое гостевое ЦПУ может предоставляться через разделяемый ресурс отдельного основного ЦПУ или даже через разделение единственного основного ЦПУ. Одним из признаков такого разделения является то, что гостевое ЦПУ может работать период времени, называемый квантом времени, а потом неактивно некоторый произвольный период времени. Неактивный период варьирует в зависимости от политик приоритета, установленных системой, общего числа гостевых ЦПУ, разделяющих основное ЦПУ, и конкретной методики разделения, которая используется.

[006] В такой гостевой многопроцессорной системе программа, иногда называемая контролируемым модулем (dispatchable unit, DU), может контролироваться гостевой операционной системой на гостевом ЦПУ, а затем, во время выполнения этого контролируемого модуля, квант времени основного процессора для этого контролируемого модуля истекает. Это может оставить контролируемый модуль в таком состоянии, что он не может продолжаться на любом другом гостевом ЦПУ гостевой многопроцессорной конфигурации независимо от доступности любых других гостевых ЦПУ. Вместо этого он должен ожидать получения одним и только одним гостевым ЦПУ его следующего кванта времени, для того чтобы продолжить. В зависимости от методики разделения и относительного приоритета гостевой конфигурации, следующий квант времени может задержаться на значительный период времени. Даже если в гостевой конфигурации есть другие гостевые ЦПУ, которые способны запускать контролируемый модуль, продолжение контролируемого модуля невозможно из-за состояния гостевого ЦПУ контролируемого модуля, которое сохранилось, когда предыдущий квант времени истек. Пока точно такое же состояние не сможет быть использовано для продолжения гостевого ЦПУ, контролируемый модуль неактивен.

КРАТКОЕ ИЗЛОЖЕНИЕ

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

[008] В заявке также предложена компьютерная система, реализующая вышеописанный способ.

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

[0010] С помощью методик согласно настоящему изобретению реализуются и другие особенности и преимущества. Другие варианты воплощения и аспекты изобретения излагаются здесь подробно и считаются частью формулы изобретения.

КРАТКОЕ ОПИСАНИЕ И НЕСКОЛЬКО ПРЕДСТАВЛЕНИЙ ЧЕРТЕЖЕЙ

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

На ФИГ.1 изображен один вариант реализации вычислительной среды, включающей и использующей один или более аспектов настоящего изобретения;

На ФИГ.2 изображен другой вариант реализации вычислительной среды, включающей и использующей один или более аспектов настоящего изобретения;

На ФИГ.3 изображен еще один вариант реализации вычислительной среды, включающей и использующей один или более аспектов настоящего изобретения;

На ФИГ.4 изображен один вариант реализации логики, связанной с наблюдением гостя за средством предупреждающего прерывания, указанным на ФИГ.6, в соответствии с аспектом настоящего изобретения;

На ФИГ.5 изображен один вариант реализации логики, связанной с наблюдением основного процессора за средством предупреждающего прерывания, в соответствии с аспектом настоящего изобретения;

На ФИГ.6 изображен один вариант реализации логики, связанной с обработкой основным процессором выхода из гостевого, в соответствии с аспектом настоящего изобретения;

На ФИГ.7 изображен один вариант реализации обзора логики средства предупреждающего прерывания, в соответствии с аспектом настоящего изобретения;

На ФИГ.8А-8В изображены варианты реализации логики, связанной с обработкой средством предупреждающего прерывания, в соответствии с аспектом настоящего изобретения;

На ФИГ.9 изображен один вариант реализации логики, связанной с получением предупреждающего прерывания, в соответствии с аспектом настоящего изобретения;

На ФИГ.10 изображен один вариант формата команды диагностики в соответствии с аспектом настоящего изобретения;

На ФИГ.11 изображен один вариант реализации компьютерного программного продукта, включающего один или более аспектов настоящего изобретения;

На ФИГ.12 изображен один вариант реализации основной (хост) компьютерной системы, включающей и использующей один или более аспектов настоящего изобретения;

На ФИГ.13 изображен другой пример компьютерной системы, включающей и использующей один или более аспектов настоящего изобретения;

На ФИГ.14 изображен еще один пример компьютерной системы, содержащей компьютерную сеть, включающую и использующую один или более аспектов настоящего изобретения;

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

На ФИГ.16А изображен один вариант реализации блока выполнения компьютерной системы согласно ФИГ.15, включающего и использующего один или более аспектов настоящего изобретения;

На ФИГ.16Б изображен один вариант реализации блока ветвления компьютерной системы согласно ФИГ.15, включающего и использующего один или более аспектов настоящего изобретения;

На ФИГ.16В изображен один вариант реализации блока загрузки/сохранения компьютерной системы согласно ФИГ.15, включающего и использующего один или более аспектов настоящего изобретения;

На ФИГ.17 изображен один вариант реализации эмулируемой основной (хост) компьютерной системы, включающей и использующей один или более аспектов настоящего изобретения;

Подробное описание

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

[0013] В соответствии с другим аспектом настоящего изобретения, программа и/или процессор предупреждаются, что они близки к потере доступа к ресурсам (напр., разделяемым ресурсам). Например, предупреждение предоставляется процессору, разделяющему ресурсы с другими процессорами, о том, что процессор близок к потере доступа к ресурсам. В другом примере программа, такая как операционная система, выполняющаяся на разделяемом процессоре (напр., программа, разделяющая процессор с другими программами) предупреждается о том, что она близка к потере ресурсов процессора.

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

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

[0016] Один вариант реализации вычислительной среды, включающий и использующий один или более аспектов согласно настоящему изобретению, описывается при помощи ФИГ.1. В этом конкретном варианте реализации вычислительная среда 100 включает множество процессоров 102, разделяющих ресурсы 104. Каждому процессору (и/или программе, такой как операционная система, выполняющейся на процессоре) дается некоторое количество времени, называемое квантом времени, для пользования ресурсами. Ресурсы включают ресурсы центрального процессорного устройства, память, устройства или интерфейсы ввода-вывода и/или другие ресурсы, к примеру. Процессор (или выполняющаяся на нем программа), имеющий доступ к ресурсам, предупреждается, что доступ близок к концу, и поэтому процессору (или программе) следует выполнить некоторое действие, такое как очистка, завершение модуля работы, остановка модуля работы, перемещение модуля работы и т.д.

[0017] Другой вариант реализации вычислительной среды 200, включающий и использующий один или более аспектов согласно настоящему изобретению, описывается при помощи ФИГ.2. Вычислительная среда 200 основывается, например, на z/Architecture®, предлагаемой корпорацией International Business Machines (IBM®), Армонк, штат Нью-Йорк. z/Architecture® описана в публикации IBM®, озаглавленной, "z/Architecture Principles of Operation" ("z/Architecture. Принципы работы"), публикация IBM® №. SA 22-7832-08, девятое издание, август 2010 г., которая включается сюда по ссылке во всей ее целостности. В одном примере вычислительная среда, основанная на z/Architecture®, включает сервер System z®, предлагаемый корпорацией International Business Machines, Армонк, штат Нью-Йорк. IBM®, z/Architecture® и zSeries®, а также z/VM® и z/OS®, упомянутые выше, являются зарегистрированными торговыми марками корпорации International Business Machines, Армонк, штат Нью-Йорк, США. Другие названия, использованные здесь, могут быть зарегистрированными торговыми марками, торговьми марками или названиями изделий корпорации International Business Machines или других компаний.

[0018] В качестве примера, вычислительная среда 200 включает центральный процессорный комплекс (ЦПК) 102, предоставляющий поддержку виртуальных машин. ЦПК 202 включает, например, одну или более виртуальных машин 204 (или, в другом варианте, логических разделов), один или более центральных процессоров 206, по меньшей мере одну хост машину 208 (напр., управляющую программу, такую как гипервизор) и подсистему ввода-вывода 210, каждая из которых описывается ниже. В этом примере виртуальные машины и основная машина включены в память.

[0019] Поддержка виртуальных машин ЦПК предоставляет возможность работать с большим числом виртуальных машин, каждая из которых способна поддерживать гостевую операционную систему 212, такую как z/VM®, z/OS® или Linux, к примеру. Каждая виртуальная машина 204 способна функционировать как отдельная система. То есть, каждая виртуальная машина может независимо перезагружаться, поддерживать гостевую операционную систему и работать с разными программами. Операционная система или прикладная программа, работающая в виртуальной машине, кажется имеющей доступ ко всей системе полностью, но в действительности доступна только ее часть.

[0020] Физические ресурсы ЦПК (напр., ЦПУ, память, устройства ввода-вывода и т.п.) принадлежат основной (хост) машине 208, а разделенные физические ресурсы распределяются основной машиной между гостевыми операционными системами по мере необходимости, для удовлетворения их обрабатывающих потребностей. Взаимодействие между гостевыми операционными системами и физическими разделенными машинными ресурсами контролируется основной машиной, так как большое количество гостей обычно исключает простое распределение и назначение аппаратных ресурсов основной машиной сконфигурированным гостям.

[0021] Центральные процессоры 206 являются ресурсами физического процессора, назначаемые виртуальной машине. Например, виртуальная машина 204 включает один или более логических процессоров, каждый из которых представляет собой весь или часть ресурса физического процессора 206, которая может динамически предоставляться виртуальной машине. Виртуальные машины 204 управляются основной машиной 208. К примеру, основная машина может быть реализована в микрокоде, работающем на процессорах 206, или может быть частью операционной системы основного компьютера, выполняющейся на машине. В одном примере, основная машина 208 является Администратором Системы/Ресурсов Процессора (Processor Resource/System Manager (PR/SM)), предлагаемым корпорацией International Business Machines, Армонк, штат Нью-Йорк.

[0022] Подсистема ввода-вывода 210 направляет поток информации между устройствами и главным запоминающим устройством. Она соединяется с центральным процессорным комплексом, в котором она может быть частью центрального процессорного комплекса, или отделена от него. Подсистема ввода-вывода облегчает центральным процессорам задачу прямой связи с устройствами ввода-вывода, соединенными с ЦПК, и позволяет производить обработку данных параллельно с обработкой ввода-вывода.

[0023] В одном варианте реализации основная машина (напр., PR/SM) и аппаратное/микропрограммное обеспечение процессора (напр., System z®) взаимодействуют друг с другом контролируемым кооперативным способом, чтобы выполнять операции гостевой операционной системы без необходимости передачи управления от/к гостевой операционной системе или основной машине. Гостевые операции могут выполняться непосредственно без вмешательства основной машины при помощи средства, которое позволяет интерпретационное выполнение команд для гостевой машины. Это средство предоставляет команду Начать Интерпретационное Выполнение (Start Interpretive Execution (SIE)), которую основная машина может вызывать, назначая управляющий блок, называемый описанием состояния, который хранит состояние и директивы гостевой (виртуальной) машины. Команда переводит ЦПУ в режим интерпретационного выполнения, в котором гостевые команды и прерывания обрабатываются непосредственно до тех пор, пока не возникает условие, требующее внимания основной машины. Когда такое условие возникает, интерпретационное выполнение заканчивается, и либо представляется прерывание основной машины, либо команда SIE завершается, сохраняя подробности случившегося состояния; это последнее действие называется перехватом. Один из примеров интерпретационного выполнения описан в "System/370 Extended Architecture/Interpretive Execution" ("System/370 Расширенная архитектура/Интерпретационное выполнение"), публикация IBM № SA 22-7095-01, сентябрь 1985, которая включается сюда по ссылке во всей ее целостности.

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

[0025] Другой пример вычислительной среды, включающий и использующий один или более аспектов согласно настоящему изобретению, изображен на ФИГ.3. В этом примере предоставляется эмулируемая основная (хост) компьютерная система 300, которая эмулирует основной (хост) компьютер 302 с основной архитектурой. В эмулируемой основной компьютерной системе 300, основной процессор (ЦПУ) 304 является эмулированным основным процессором (или виртуальным основным процессором) и реализуется через эмуляционный процессор 306, имеющий иную архитектуру набора собственных команд, чем процессоры основного компьютера 302. Эмулируемая основная компьютерная система 300 имеет память 308, доступную эмуляционному процессору 306. В примере реализации, память 308 разделена на часть памяти основного компьютера 310 и часть программ эмуляции 312. Память основного компьютера 310 доступна программам эмулируемого основного компьютера 302 согласно архитектуре основного компьютера, и может включать как основную машину или гипервизор 314, так и одну или более виртуальных машин 316, выполняющие гостевые операционные системы 318, аналогично подобным элементам на ФИГ.2.

[0026] Эмуляционный процессор 306 выполняет собственные команды сконструированного набора команд архитектуры, отличной от архитектуры эмулированного процессора 304. Собственные команды получаются, например, из памяти программ эмуляции 312. Эмуляционный процессор 306 может получить доступ к команде основной машины для выполнения из программы в памяти основного компьютера 310 с применением одной или более команд, полученных в последовательности, и подпрограммы доступа/декодирования, которая может декодировать команды основной машины, к которым получен доступ, чтобы определить подпрограмму выполнения собственной команды для эмулирования функции команды основной машины, к которой получен доступ. Одной из таких команд основной машины может быть, например, команда Start Interpretive Execution, Начать Интерпретационное Выполнение (SIE), с помощью которой основная машина ищет гостевую программу для выполнения в виртуальной машине. Программы эмуляции 312 могут включать поддержку для этой команды, и для выполнения последовательности гостевых команд в виртуальной машине 316 в соответствии с определением этой команды SIE.

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

[0028] В соответствии с аспектом настоящего изобретения предоставляется средство предупреждающего прерывания, которое может использоваться во многих типах вычислительных сред. Хотя оно может использоваться во многих типах сред, здесь описываются аспекты средства касательно гостевой многопроцессорной системы. Как описано выше, в гостевых многопроцессорных системах гостевые операционные системы контролируют контролируемые модули (напр., программы, код и т.п.) на гостевых центральных процессорных устройствах, которые содержатся по меньшей мере на одном основном центральном процессорном устройстве. Основное ЦПУ предоставляет квант времени (напр., количество времени или другой период, такой как число команд, число циклов и т.п.) гостевому ЦПУ, в течение которого времени контролируемый модуль выполняется. Если во время выполнения контролируемого модуля квант времени истекает, контролируемый модуль может остаться в таком состоянии, что он не может продолжаться на любом другом гостевом ЦПУ гостевой многопроцессорной конфигурации независимо от доступности любых других гостевых ЦПУ. Вместо этого он должен ожидать получения одним и только одним гостевым ЦПУ его следующего кванта времени, для того чтобы продолжить. В зависимости от конкретной методики разделения и относительного приоритета гостевой конфигурации, следующий квант времени может задержаться на значительный период времени. Даже если в гостевой конфигурации есть другие гостевые ЦПУ, которые способны запускать контролируемый модуль, продолжение контролируемого модуля невозможно из-за состояния гостевого ЦПУ контролируемого модуля, которое сохранилось, когда предыдущий квант времени истек. Пока точно такое же состояние не сможет быть использовано для продолжения гостевого ЦПУ, контролируемый модуль неактивен.

[0029] Возможно расширить квант времени, предоставив дополнительное время (или другой дополнительный период, такой как дополнительные команды, циклы и т.п.), но даже с этим добавочным временем гостевое ЦПУ может затянуть выполнение контролируемого модуля, и все равно остаться в том же неконтролируемом состоянии, что и при истечении нормального кванта времени.

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

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

[0032] К примеру, льготный период предоставляется вместо безусловного расширения кванта времени. Если нормальный квант времени полностью истек, льготный период предоставляется, но за счет следующего нормального кванта времени, для того чтобы оставаться корректным для всех других виртуализированных гостей, каждый из которых ожидает кванта времени. Если нормальный квант времени не истек, льготный период берется из нормального времени, которое осталось. В любом случае льготный период ограничивает оставшееся время (или другой период), данное гостевому ЦПУ, и сам по себе нерасширяем. Таким образом, гостевое ЦПУ не может продолжать работу в течение произвольного и неизвестного периода.

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

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

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

[0036] Согласно ФИГ.4, гостевая программа понимает предупреждающий протокол и ищет указание, что средство установлено, ШАГ 400. В одном примере это указание является битом, хранящимся в управляющем блоке (напр., в Блоке Управления Служебного Вызова, Service Call Control Block (SCCB)), который просматривается при помощи команды чтения, такой как команда Считать Сведения SCP (Read SCP Information). Вслед за определением, что средство установлено, гостевая программа производит регистрацию, ШАГ 402. Регистрация есть механизм, по которому гостевая программа сообщает основной программе, что гостевая программа понимает протокол средства предупреждающего прерывания. В одном примере регистрация производится с помощью команды Diagnose (Диагностика), пример которой далее описывается ниже.

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

[0038] Вслед за регистрацией гостевой программы для предупреждающего протокола гостевое ЦПУ может быть уведомлено о льготном периоде, ШАГ 404. Например, оно может быть предупреждено основным ЦПУ об истекании кванта времени (или о предстоящем истекании, в другом примере) или о перехвате его кванта времени. В одном конкретном примере ЦПУ зарегистрированной гостевой конфигурации уведомляется, например, об истекании его кванта времени и начале льготного периода, который предоставляет дополнительный период для, например, очистки.

[0039] Вслед за уведомлением гостевая машина имеет ограниченное количество времени или другого периода, льготный период (напр., 50 микросекунд в одном конкретном варианте реализации), для обеспечения возможности возобновления контроля над контролируемым модулем или для произведения любых других соответствующих настроек. Если нормальный квант времени уже закончился, то, например, перед возвращением управления к основной машине льготный период используется для обеспечения возможности возобновления контроля над контролируемым модулем или для произведения любых других соответствующих настроек. Если квант времени не закончился, то льготный период используется, а любая оставшаяся часть кванта времени освобождается. Происходит нормальный учет действительного времени, использованного гостевым ЦПУ.

[0040] Вслед за произведением уведомления гостевое ЦПУ находится в вынужденном периоде (напр., ограниченное количество времени), после которого работа гостевого ЦПУ принудительно заканчивается. Производится только одно уведомление для каждого нормального кванта времени. Таким образом, гостевое ЦПУ все еще ограничено контролем конечного времени, который гарантирует, что нижележащее разделенное основное ЦПУ может быть разделено всюду, тем самым сохраняя надлежащий порядок и дисциплину во всей виртуализации, предоставляемой основной программой.

[0041] Уведомление может производиться по любому механизму, который вызывает определение однозначного статуса гостевой программой. Примеры включают однозначное гостевое прерывание, архитектурно заданное положение главной памяти, которое может быть установлено, или устройство ввода-вывода внешней памяти, доступное как для основной, так и для гостевой машины. Первое требует соответствующего включения гостевой машины, чтобы разрешить прерывание. Последние два требуют достаточно частых периодических проверок, что льготный период не расходуется впустую. В одном конкретном примере архитектуры z/Architecture®, гостевое прерывание, называемое предупреждающим прерыванием (warning track interruption, WTI), используется в качестве уведомления.

[0042] Вслед за получением предупреждения гостевая машина добровольно выходит из данного ей кванта времени/льготного периода, ШАГ 406. Гостевая машина заканчивает текущий квант времени/льготный период после уведомления и обеспечения возможности возобновления контроля над контролируемым модулем (напр., остановки и перемещения контролируемого модуля, или его завершения). Этот выход сообщает основной программе, что гость действительно следует протоколу. Могут возникать другие причины у гостевой программы для освобождения управления, и тем самым возврата к основной программе. Обычно, при вынужденной обработке для возможности возобновления контроля над контролируемым модулем, не будут возникать условия для любых таких внешних выходов. Если гостевое ЦПУ выходит в течение льготного периода по протоколу предупреждающего прерывания, дается уведомление обратной связи в следующий квант времени, когда бы это не произошло. Таким образом, гостевая программа знает, что она уложилась в ограничения времени, наложенный льготным периодом.

[0043] Если гость медлит с добровольным выходом, его выполнение перехватывается по истечении льготного периода. В следующий раз, когда гостевое ЦПУ стартует с нормальным квантом времени, дается уведомление обратной связи, так что гость знает, что он запоздал. Вообще, это может использоваться для определения проблемы в гостевой программе, потому что обычный льготный период оставляет достаточно времени для очистки и добровольного выхода.

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

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

[0046] В дополнение к наблюдению за гостевой машиной по протоколу предупреждающего прерывания, в одном варианте реализации, основная машина также наблюдает за средством, как далее подробно описывается ниже при помощи ФИГ.5.

[0047] Согласно ФИГ.5, основная (хост) машина распознает обозначение того, что средство установлено, и отображает это ее гостевым машинам, ШАГ 500. Например, основная машина проверяет бит установки в управляющем блоке (напр., SCCB) и распознает состояние установки предупреждающего протокола (т.е., он установлен), и знает, как основная программа может использовать его, чтобы содействовать основной машине. Таким образом, обозначение средства отображается его гостевой машине. Например, чтобы отобразить средство гостевой машине, основная машина устанавливает бит установки в гостевом управляющем блоке (напр., гостевом SCCB) или в области памяти, доступной гостевой машине. Если по какой-либо причине основная программа не хочет, чтобы гостевая машина видела состояние установки протокола средства предупреждающего прерывания, и не позволяет гостевой машине видеть статус установки и использовать его, основная программа передает статус неустановленности гостевой (напр., устанавливает бит, видимый гостем, в нуль). Более того, в одном варианте реализации, основная программа устанавливает директивы гостевых ЦПУ, так что предупреждающий протокол отключен (напр., выключает один или более назначенных бит в описании состояния гостевого ЦПУ).

[0048] Так как регистрация инициируется гостем, основная программа получает незатребованный регистрационный запрос и запоминает, что гость зарегистрирован, ШАГ 502. Регистрационный запрос, инициированный любым одиночным гостевым ЦПУ, достаточен для регистрации всех гостевых ЦПУ в гостевой многопроцессорной конфигурации. Таким образом, основная программа включает предупреждающий протокол для всех ЦПУ в гостевой конфигурации, ШАГ 504. Например, основная программа устанавливает один или более назначенных бит в описании состояния гостевого ЦПУ, чтобы включить средство предупреждающего прерывания для гостевых программ. Обратная связь регистрации не обязательно возвращается гостевой машине. Если гостевое ЦПУ попытается регистрироваться, даже когда средство не установлено, основная машина проигнорирует запрос и не включит гостевые ЦПУ для протокола средства предупреждающего прерывания.

[0049] Вслед за регистрацией и включения гостей для предупреждающего средства, гостевая машина может получить уведомления о вызове протокола, ШАГ 506. Это может осуществляться по нескольким сценариям, как описано ниже.

[0050] В одном примере, когда протокол предупреждающего прерывания включен для гостевого ЦПУ, работающего в режиме интерпретационного выполнения на основном ЦПУ, то есть основном ЦПУ X, основная программа может инициировать протокол из основного ЦПУ Y. То есть, гостевое ЦПУ поддерживалось основным ЦПУ X, и то основное ЦПУ Х теперь недоступно основной программе. Если у основной программы есть причина вернуть ЦПУ X, она сперва вызывает выход ЦПУ X из режима интерпретационного выполнения. То есть, гостевое ЦПУ останавливается, тем самым выходя из режима интерпретационного выполнения ЦПУ X. Остановка гостевого ЦПУ в любой произвольной точке без разрешения гостевому ЦПУ останавливать себя добровольно создает риск проблемы, для решения которой предназначается протокол предупреждающего прерывания. Протокол предупреждающего прерывания позволяет основному ЦПУ Y запросить уведомление, разрешая превращать действие основной программы в уведомление на гостевом ЦПУ X, ШАГ 506. Поскольку гостевая программа ранее была зарегистрирована, основная программа ожидает, что гостевая программа распознает уведомление и поддерживает надлежащую обработку уведомления, включая последний этап добровольного окончания выполнения, тем самым возвращая управление основным ЦПУ X основной программе. Как только это происходит, основная программа может продолжить, какое бы использование основного ЦПУ X не могло вызвать инициирование процесса.

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

[0052] В основной однопроцессорной системе, если одно основное ЦПУ находится в режиме интерпретационного выполнения, так что гостевое ЦПУ работает, не существует других основных ЦПУ для вызова протокола предупреждающего прерывания. Однако, даже в этом случае, протокол предупреждающего прерывания может быть вызван самим ЦПУ, когда основное ЦПУ, будучи в режиме интерпретационного выполнения, распознает истекание кванта времени, и потом может предоставлять льготный период и производить уведомление.

[0053] В другом примере уведомления, уведомление происходит, когда из-за изменения внутреннего статуса, распознанного основным ЦПУ, находящимся в режиме интерпретационного выполнения, основное ЦПУ вызывает отправку уведомления, определенного в протоколе предупреждающего прерывания, гостевому ЦПУ. Например, это происходит, когда гостевое ЦПУ включено для протокола предупреждающего прерывания, а основное ЦПУ распознает окончание кванта времени. Перед оповещением гостевого ЦПУ об освобождении управления, ЦПУ внутренне предоставляет льготный период, чтобы предоставить гостевому ЦПУ достаточно времени для принятия сигнала, осуществления соответствующего действия (напр., завершения текущего контролируемого модуля или обеспечение возобновления контроля над модулем), и добровольного выхода. Внутренне основное ЦПУ сохраняет состояние, чтобы обозначить, что гостевое ЦПУ было модифицировано. Если гостевая программа не выходит добровольно в течение льготного периода, ЦПУ распознает это и заканчивает выполнение гостевой программы, тем самым возвращая управление к основной программе посредством окончания режима интерпретационного выполнения. У гостевой программы нет способа определить, в одном варианте реализации, почему был вызван протокол, а лишь что ее известили для очистки и окончания. У основной машины могут быть другие основания для вызова окончания режима интерпретационного выполнения, и тем самым окончания гостевого выполнения. Например, существуют сценарии, в которых все гостевые ЦПУ должны быть остановлены для того, чтобы произвести некоторое скоординированное изменение во всей гостевой конфигурации. Многопроцессорная гостевая конфигурация не должна иметь некоторых ЦПУ, работающих с другими правилами и допусками, чем другие ЦПУ гостевой конфигурации. Такая асимметрия может создать непредсказуемые гостевые результаты.

[0054] Основное ЦПУ испытывает воздействие гостевого ЦПУ, выполнившего добровольный выход или выход по любой другой причине (напр., основная машина возвратила ресурс ЦПУ), ШАГ 508. Если выход происходит из-за чего-то, определенного протоколом предупреждающего прерывания, то основная программа запоминает предоставление обратной связи гостевому ЦПУ в следующий раз, когда он запускается, как долго бы это не было. Эта обратная связь есть положительное ("хорошее") обозначение, подразумевающее, что гость добровольно вышел до истечения льготного периода. Если выход происходит из-за любой другой причины, обратная связь по протоколу предупреждающего прерывания не происходит при следующем запуске гостевого ЦПУ.

[0055] Если гость медлит с добровольным выходом; то есть, гость предпринимает действие для добровольного выхода, но льготный период истек, выполнение гостевого ЦПУ перехватывается по истечении льготного периода. В следующий раз, когда гостевое ЦПУ стартует с нормальным квантом времени, дается уведомление исключения обратной связи, так что гость знает, что он запоздал с добровольным выходом. Вообще, это может использоваться для определения проблемы в гостевой программе, потому что обычный льготный период оставляет достаточно времени для очистки и добровольного выхода.

[0056] Если случается выход, отличный от добровольного выхода по протоколу предупреждающего прерывания, в следующий раз, когда гостевое ЦПУ стартует с нормальным квантом времени, не включается обратной связи для предупреждающего протокола.

[0057] Способ для добровольного выхода выполняется по любому механизму, который вызывает переход управления к основной программе от гостевой программы, который распознается основной программой как добровольный выход по протоколу, и который включает вышеупомянутый механизм обратной связи. В одном примере команда Diagnose используется для добровольного выхода. То есть, команда Diagnose с некоторым параметром используется для обозначения завершения кванта времени. После вызова команды Diagnose гостевой программой и ее выполнения основная программа определяет, произошел ли выход вовремя. Затем, когда гость запускается снова, что является следующей последовательной командой после Diagnose, предоставляется код состояния, обозначающий, был ли он вовремя. Код состояния устанавливается, например, в гостевом PSW, которое используется для запуска гостя со следующей последовательной команды. Затем гостевая машина может проверить код состояния.

[0058] Обработка добровольного выхода гостя основной машиной далее описывается при помощи ФИГ.6. Сначала управление возвращается к основному ЦПУ, когда гостевое ЦПУ останавливается, ШАГ 600. Выполняется определение, вернулось ли управление в течение льготного периода, ЗАПРОС 602. Если управление вернулось в течение льготного периода, то основная программа видит добровольный выход гостя по протоколу предупреждающего прерывания и запоминает хорошую обратную связь для следующего запуска гостевого ЦПУ, независимо от того, которое основное ЦПУ может поддерживать гостевое ЦПУ в это время, ШАГ 604. Это подразумевает, что средство предупреждающего прерывания установлено. Если нет, статус обратной связи не запоминается. Однако, если гость производит действие для добровольного выхода, но это происходит за пределами льготного периода, ЗАПРОС 602, то основная программа на основном ЦПУ видит добровольный выход гостя по протоколу предупреждающего прерывания (даже если он был не вовремя и должен был выйти принудительно) и запоминает плохую обратную связь для следующего запуска гостевого ЦПУ, независимо от того, которое основное ЦПУ может поддерживать гостевое ЦПУ в это время, ШАГ 606. Опять же, это подразумевает, что средство предупреждения установлено. Если нет, статус обратной связи не запоминается.

[0059] После этого, запомнилась ли хорошая или плохая обратная связь, основная программа перенаправляет основное ЦПУ на назначение перехвата, ШАГ 608. То есть, теперь основная машина перенаправляется на осуществление одной или более функций, которые возвращают ресурсы (ЦПУ) ей обратно.

[0060] Более того, при следующем последовательном запуске гостевого ЦПУ, независимо от того, которое основное ЦПУ поддерживает гостевое ЦПУ, если статус обратной связи запомнен, устанавливается обозначение статуса обратной связи до запуска гостевого ЦПУ, ШАГ 610. В одном примере, он устанавливается в описании состояния SIE, напр., в PSW описания состояния, которое обозначает запуск следующей команды в последовательности.

[0061] Дальнейшие подробности касательно обработки, связанной со средством предупреждающего прерывания, описываются при помощи ФИГ. 7-9. В частности, на ФИГ. 7 изображен один вариант реализации логики, связанной с обзором обработки средством предупреждающего прерывания; на ФИГ. 8А-8В предоставлены подробности обработки средством предупреждающего прерывания в соответствии с аспектом настоящего изобретения; и на ФИГ. 9 изображен один вариант реализации логики, связанной с получением предупреждающего прерывания.

[0062] Согласно ФИГ. 7, вначале гостевая программа (напр., гостевая операционная система) распознает, что средство предупреждающего прерывания установлено, ШАГ 700. В одном варианте реализации это осуществляется посредством просмотра индикатора установки средства (напр., бита), который находится, например, в определенном управляющем блоке. Если гостевая операционная система имеет поддержку участия в средстве предупреждающего прерывания, она распознает индикатор установки средства предупреждающего прерывания, а затем обозначает свою способность участвовать в протоколе. В одном примере это включает регистрацию ее намерения участвовать в обработке предупреждения, ШАГ 702. В данном контексте, в одном примере регистрация осуществляется через команду Diagnose. Будучи зарегистрирована, гостевая операционная система показывает основному ЦПУ и основной программе, что она знает, как обрабатывать предупреждающее прерывание (warning track interruption, WTI), которое является недвусмысленным прерыванием, которое предоставляет предупреждение гостю, что он, например, близок к потере доступа к его разделяемому ресурсу (напр., гостевому ЦПУ) и что, например, следует предпринять действие по отношению к его выполняющемуся в данный момент контролируемому модулю. Регистрация, в одном варианте реализации, является предпосылкой для приема WTI. Если гость не зарегистрирован для средства предупреждающего прерывания, по истечении его кванта времени льготный период не предоставляется, и гостевое ЦПУ выводится из режима интерпретационного выполнения.

[0063] Даже будучи зарегистрирована, в одном варианте реализации, гостевая программа имеет два механизма для отключения представления WTI. Например, выбранный бит в, например, слове статуса программы (program status word, PSW) может быть установлен в нуль, что отключает представление всех внешних прерываний, включая WTI; или бит в определенном управляющем регистре (напр., CRO) может быть установлен в нуль для отключения только WTI. Когда оба бита равны единице, представление WTI включено. Если представление WTI остается выключено на весь льготный период WTI, выполнения гостя заканчивается без преимущества WTI, которое заключается в принудительном выходе.

[0064] Во время интерпретационного выполнения гостевого ЦПУ, если гостевое ЦПУ внутренне распознает либо состояние внешнего прерывания по таймеру основного ЦПУ (напр., истечение кванта времени), либо перехват, запрошенный основной программой, ЗАПРОС 704, внутренняя обработка ЦПУ определяет, перед тем как основная машина получает управление, следует ли произвести обработку предупреждающего прерывания, ЗАПРОС 706. То есть, внутренняя обработка ЦПУ проверяет, что гость включен для обработки предупреждения и тем самым определяет, что обработка предупреждения должна быть включена в обработку, которая должна быть произведена. Если обработка предупреждающего прерывания не должна производиться, то интерпретационное выполнение гостя заканчивается, ШАГ 708, а управление возвращается к основной программе, ШАГ 710. Возвращаясь к ЗАПРОСУ 706, если, тем не менее, обработка предупреждающего прерывания должна производиться, то эта обработка производится, как далее более подробно описано ниже, ШАГ 712.

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

[0066] Внутренняя директива активности льготного периода средства предупреждающего прерывания (напр., бит G), которая не является видимой для архитектуры, но используется внутренней логикой процессора;

[0067] Внутренняя директива представления предупреждающего прерывания (WTI) (напр., бит P), которая, будучи равна единице, означает, что WTI было представлено гостю, а будучи равна нулю, означает, что оно не было представлено. Подобно внутренней директиве активности льготного периода средства предупреждающего прерывания, внутренняя директива представления WTI не является видимой для архитектуры, но используется внутренней логикой процессора;

[0068] Директива перехвата гостя основной программой (напр., бит Т), которая является, например, индикатором запроса предупреждающего вмешательства в описании состояния гостевого ЦПУ; и

[0069] Включение внешних прерываний существует, когда индикатор E равен единице. В одном примере индикатор E является битом в текущем слове статуса программы (program status word, PSW).

[0070] Согласно ФИГ.8А, в одном примере, либо распознается состояние прерывания по таймеру основного ЦПУ (напр., истекший квант времени), либо распознается запрос на предупреждающее вмешательство (напр., основная машина хочет преждевременно вернуть ресурсы ЦПУ; т.е., до окончания кванта времени). Если распознается состояние прерывания по таймеру основного ЦПУ, ЗАПРОС 800, выполняется определение, установлен ли контрольный индикатор активности льготного периода (напр., равен ли G1), ЗАПРОС 802. Если G не установлен, то индикатор G устанавливается, например, в 1, ШАГ 804, и льготный период средства предупреждающего прерывания близок к началу. Затем сохраняется текущее значение таймера гостевого ЦПУ (сохраненное значение здесь называется исходным значением), ШАГ 806, а на таймере гостевого ЦПУ устанавливается льготный период предупреждения (напр., 50 микросекунд), ШАГ 808.

[0071] После этого выполняется определение, включен ли гость для предупреждающего прерывания, ЗАПРОС 810. В одном варианте реализации, если активен гостевой уровень 2, указывающий, что один гость запустил другого гостя, то Гость 2 выходит из режима интерпретационного выполнения, как для прерывания Гостя 1, а команда Start Interpretive Execution Гостя 1 аннулируется. Таким образом, обработка идет как бы Гость 1 был в этой точке. Если Гость 2 неактивен, то обработка просто продолжается с Гостем 1. Если гость включен для WTI, то внешнее предупреждающее прерывание (WTI) представляется гостю, ШАГ 812. В одном примере это прерывание включает конкретный код прерывания, который представляется, указывающий, что он имеет льготный период для того, чтобы осуществить одну или более функций (напр., очистку), если желательно.

[0072] Далее, P устанавливается в 1, указывая, что WTI был представлен, ШАГ 814. Также, бит Т устанавливается в 1 при помощи функции взаимоблокированного обновления (он может уже быть 1, если сначала использовался запрос прерывания), ШАГ 816. Льготный период на таймере основного ЦПУ продолжает уменьшаться независимо от того, было ли WTI представлено, ШАГ 818. Затем происходит выход из этой обработки, ШАГ 820. В одном примере назначение выхода из этого процесса указывает, что ЦПУ завершил текущую обработку средства предупреждающего прерывания и возвращается к другой обработке, как диктует текущее состояние ЦПУ.

[0073] Возвращаясь к ЗАПРОСУ 810, если гость не включен для предупреждающего прерывания, обработка переходит к ШАГУ 816. В этом примере гость не включен для WTI, так что оно не может быть представлено гостю. Однако, бит T устанавливается ждущим, так что он может быть обнаружен позже, когда гость включается для WTI.

[0074] Возвращаясь к ЗАПРОСУ 800, если нет состояния прерывания по таймеру основного ЦПУ, то распознается запрос предупреждающего вмешательства (т.е., перехват основной машиной). То есть, бит T в поле запроса вмешательства описания состояния гостевой машины равен 1. Таким образом, выполняется определение, установлен ли индикатор G, ЗАПРОС 850. Если он не установлен (напр., 0), то обработка продолжается с ШАГА 804. В этой ситуации условие равенства T1 является исходной причиной для запуска процесса WTI. Однако, если бит G установлен, то выполняется определение, установлен ли P, ЗАПРОС 852. Если P не установлен (напр., равен 0), то обработка продолжается с ШАГА 810 в попытке представить WTI. Однако, если Р установлен (напр., не равен 0), то обнаружение равенства T1 после того, как льготный период предупреждающего средства начался, не возымеет действия, и процесс выйдет, ШАГ 854.

[0075] Возвращаясь к ЗАПРОСУ 802, если G установлен (напр., равен 1), гостевое ЦПУ уже было запущено в льготном периоде и истечение таймера основного ЦПУ указывает, что льготный период истек. Таким образом, цикл WTI был ранее инициирован, и льготный период истек. Таким образом, согласно ФИГ.86, ранее сохраненное исходное значение таймера основного ЦПУ уменьшается на количество времени, действительно использованного в течение льготного периода, и затем загружается в таймер основного ЦПУ, ШАГ 860. Происходит выход из режима интерпретационного выполнения, ШАГ 862, а внутреннее прерывание таймера основного ЦПУ представляется основной машине, ШАГ 864 (это форма принудительного выхода гостя).

[0076] Дополнительно к вышесказанному, анализ WTI может быть инициирован через некоторые команды, которые могут включить ЦПУ для WTI. Например, согласно ФИГ.8 В, вначале ряд команд, которые могут включать ЦПУ для WTI, включая, например, команду Load PSW (Extended) (Загрузить ССП, расширено) и команды Store Then (Сохранить Потом) или System Mask (Системная Маска), которые могут устанавливать назначенный бит в PSW, и Load Control (Загрузить Директиву), которая может устанавливать выбранный бит в управляющем регистре, выполняют мониторинг, как описано здесь. Например, команда, которая может включать для прерываний, проверяет бит T для возможной обработки предупреждения. Если T=0, ЗАПРОС 880, то WTI нет, и процесс выходит, ШАГ 884. Однако, если T=1, то обработка продолжается с ЗАПРОСА 822.

[0077] При ЗАПРОСЕ 882 выполняется определение, установлен ли Р (напр., равен 1). Если так, то этот процесс выходит, ШАГ 884, так как включение было обнаружено ранее. Однако, если Р не установлен (напр., не равен 1), то далее выполняется определение, установлен ли G (напр., равен 1), ЗАПРОС 886. Если нет, то обработка продолжается с ШАГА 804 (ФИГ.8А). Однако, если G установлен (напр., равен 1), ШАГ 886 (ФИГ.8В), то обработка продолжается с ЗАПРОСА 810 на ФИГ.8А, ШАГ 888, и обработка выходит.

[0078] Дальнейшие подробности обработки средства предупреждающего прерывания описываются при помощи ФИГ.9. Когда гостевая программа получает предупреждающее прерывание, она выполняет любые функции (напр., функции ОС), которые она должна выполнить для того, чтобы, например, обеспечить возобновление контроля над контролируемым модулем работы, ШАГ 900. Например, гость останавливает контролируемый модуль в определенной точке, сохраняет его состояние, и либо перемещает его на другой гостевой ЦПУ, либо включает его для перемещения, предоставляя информацию о состоянии, и т.д. Гостевая операционная система сигнализирует, что она закончила, передавая сигнал завершения очистки по предупреждению основной программе (то есть, добровольный выход), ШАГ 902. Сигнал может быть любым механизмом, который вызывает освобождение гостевой операцией оставшегося кванта времени. Однако, он должен распознаваться основной программой как часть протокола очистки. В одном примере используется функция завершения очистки команды Diagnose.

[0079] Если гостевая программа передает сигнал завершения очистки перед тем, как льготный период истекает, ЗАПРОС 904, основная программа запоминает, что гостевое ЦПУ вышло вовремя, ШАГ 906. Это добровольный выход. Когда гостевое ЦПУ стартует в следующий раз, своевременная природа сигнала передается обратно гостевому ЦПУ, ШАГ 908. В одном примере PSW гостевого возобновления устанавливается для обозначения кода успешного состояния (напр., код состояния 0).

[0080] Возвращаясь к ЗАПРОСУ 904, если гостевая программа по какой-либо причине продолжается слишком долго, льготный период истекает в силу таймера основного ЦПУ, который уменьшил льготный период до нуля, тем самым представляя ЦПУ состояние внешнего прерывания по таймеру основного ЦПУ. В этом случае ЦПУ распознает, что гость уже был в льготном периоде, и не предоставляет другого льготного периода. Вместо этого, выполнение гостя останавливается, а управления возвращается к основной программе по приему внешнего прерывания. Основная программа распознает, что это окончание гостевого ЦПУ есть принудительный выход гостя.

[0081] При следующем запуске гостевого ЦПУ гостевая операционная система может тогда подать сигнал завершения очистки, хотя теперь уже слишком поздно. Основная программа больше не пребывает в ожидании приема сигнала завершения очистки. Таким образом, когда гостевое ЦПУ стартует в следующий раз, слишком запоздалая природа сигнала передается обратно гостевому ЦПУ, ШАГ 912. В одном примере PSW гостевого возобновления помечается для обозначения кода опоздания, который будет видим гостю при следующем запуске. Вызов слишком поздней команды Diagnose иногда называется просроченной командой Diagnose, потому что она ранее пропустила выход в течение льготного периода, а затем вышла позже без уважительной причины.

[0082] В одном примере при новом запуске гостевого ЦПУ гостевая программа может проверить часть возобновления сигнала протокола, был сигнал подан или нет в течение льготного периода. Гостевая программа может использовать эти сведения для выяснения, почему она могла задержаться и для осуществления улучшений для улучшения статистики большей своевременности в будущем.

[0083] В одном варианте реализации, когда гость выключен для всех внешних прерываний, ряд команд, которые могут включать внешние прерывания, осуществляют мониторинг. Когда гость включен для внешних прерываний, проверяется включение WTI. В этой точке, если WTI включено, а бит P равен 0, WTI представляется гостевому ЦПУ.

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

[0085] Что касается функции регистрации, функция Diagnose, будучи вызвана с параметром регистрации и выполнена, сигнализирует, что вызвавшая конфигурация понимает предупреждающее прерывание. Когда выполнение завершается, устанавливается успешный код состояния. Статус регистрации очищается перезагрузкой системы.

[0086] Один вариант реализации формата команды Diagnose описан при помощи ФИГ.10. В одном варианте команда Diagnose 1000 включает код операции 1002, указывающий функцию Diagnose; первое регистровое поле 1004 (R1); второе регистровое поле 1006 (R3); поле регистра общего назначения 1008 (B2); и поле смещения 1010 (D2). В одном примере содержимое поля D2 прибавляется к содержимому регистра общего назначения B2. Результат не используется для адресации данных, а вместо этого некоторые биты (напр., биты 48-63) используются как расширение кода операции. Когда расширение кода операции является предопределенной величиной, устанавливается завершение очистки по предупреждению, а квант времени высвобождается.

[0087] В одном примере поле R3 не используется и содержит нули. Кроме того, определенные биты регистра общего назначения R1 не используются и должны содержать нули, а конкретный бит регистра общего назначения R1 (напр., бит 63) определяет функцию завершения очистки, будучи равен нулю, и функцию регистрации, будучи равен 1.

[0088] В логическом разделе, использующем разделенные физические ЦПУ, эта функция может улучшать производительность системы, позволяя физическому ЦПУ, на котором запущено логическое ЦПУ, быть назначенным другому логическому ЦПУ.

[0089] Кроме Diagnose, любой другой выход SIE в пределах льготного промежутка WTI, независимо от причины, аналогично сохраняет исходное значение таймера основного ЦПУ, уменьшенное на величину израсходованного времени льготного периода.

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

[0091] В одном варианте реализации логический (гостевой) процессор, запущенный в кванте времени на физическом процессоре, получает предупреждающий сигнал, обозначающий льготный период, напр., количество времени перед тем, как логический процессор будет прерван (откреплен от физического процессора, который может быть разделяем), заставляя работу, выполненную логическим процессором, либо завершиться, либо переместиться на другой логический процессор. К примеру, гостевое ЦПУ уведомляется, что его квант времени истек, и что ему следует перехватить текущий контролируемый модуль работы (DU), чтобы сделать его вновь контролируемым на другом гостевом ЦПУ. В одном примере предупреждающий сигнал является прерыванием, имеющим код прерывания, который указывает, что это WTI. В другом примере код прерывания включает сведения о количестве времени или другом периоде, предоставленном льготному периоду.

[0092] В одном варианте реализации средство предупреждающего прерывания может использоваться в невиртуальных, а также в виртуальных средах, в которых одна программа и/или процессор разделяют ресурсы (напр., ресурсы ЦПУ или другие ресурсы) с одной или более других программ и/или процессоров.

[0093] В одном варианте реализации, в котором среда является виртуальной средой, с гостевой точки зрения:

[0094] 1. Гостевая программа видит установленное состояние средства протокола предупреждающего прерывания.

[0095] 2. Гостевая программа регистрируется для протокола предупреждающего прерывания.

[0096] 3. Гостевое ЦПУ получает предупреждающее уведомление, согласно конкретной архитектуре (напр., обозначение разделяемой памяти, обозначение разделяемого устройства ввода-вывода, прерывание).

[0097] 4. Гостевая программа, выполняющаяся на гостевом ЦПУ, осуществляет соответствующую обработку согласно природе гостевой программы, получившей уведомление (ожидается, что обработка уведомления будет уникальна для операционной системы).

[0098] 5. Гостевое ЦПУ освобождает управление в соответствии с добровольным методом предупреждающего протокола.

[0099] 6. При следующем запуске гостевого ЦПУ гостевая программа может видеть обратную связь согласно предупреждающему протоколу.

[0100] Далее, в одном варианте реализации, с точки зрения основной машины:

[00101] А. Основная программа видит установленное состояние средства протокола предупреждающего прерывания.

[00102] 1. Основная программа получает указание, что средство протокола предупреждающего прерывания установлено.

[00103] 2. Основная программа постоянно помнит статус установки протокола предупреждающего прерывания.

[00104] 3. Основная программа указывает статус установки предупреждающего протокола каждой гостевой конфигурации.

[00105] 4. Основная программа выключает предупреждающий протокол для всех незарегистрированных гостевых ЦПУ.

[00106] 5. Основная программа готовится к распознаванию гостевого запроса на регистрацию в предупреждающем протоколе от каждой гостевой конфигурации.

[00107] Б. Основная программа распознает запрос на регистрацию в предупреждающем протоколе от гостя.

1. Основная программа постоянно помнит, что гостевая конфигурация понимает предупреждающий протокол.

2. Основная программа включает гостевую для предупреждающего протокола.

[00108] В. Во время нормальной работы гостевого ЦПУ X, перехват гостевого ЦПУ X используется для возвращения соответствующего основного ЦПУ X.

[00109] 1. Основная программа на ЦПУ Y посылает уведомление гостевому ЦПУ X.

[00110] а. ЦПУ X передает уведомление гостевому ЦПУ X через общую ячейку памяти, обновление общего устройства ввода-вывода, или прерывание гостевому ЦПУ X, согласно предупреждающему протоколу.

[00111] Г. Гостевое ЦПУ X останавливается, возвращая управление основному ЦПУ X.

[00112] 1. Будучи в пределах льготного периода, основная программа на ЦПУ X видит добровольный выход гостя по предупреждающему протоколу и запоминает хорошую обратную связь для следующего запуска гостевого ЦПУ X, независимо от того, которое основное ЦПУ может поддерживать гостевое ЦПУ Х в это время.

[00113] а. Будучи в пределах льготного периода, если выход гостевого ЦПУ X не соответствует предупреждающему протоколу, статус обратной связи не запоминается.

[00114] 2. Будучи за пределами льготного периода, основная программа на ЦПУ X видит добровольный выход гостя по предупреждающему протоколу и запоминает плохую обратную связь для следующего запуска гостевого ЦПУ X, независимо от того, которое основное ЦПУ может поддерживать гостевое ЦПУ Х в это время.

[00115] а. Будучи за пределами льготного периода, если выход гостевого ЦПУ X не соответствует предупреждающему протоколу, статус обратной связи не запоминается.

[00116] 3. Основная программа на основном ЦПУ X перенаправляет ЦПУ X на назначение перехвата.

[00117] Д. Следующий последовательный запуск гостевого ЦПУ X, независимо от того, которое основное ЦПУ поддерживает гостевое ЦПУ X, если статус обратной связи запомнен, устанавливает указание обратной связи согласно предупреждающему протоколу перед запуском гостевого ЦПУ X.

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

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

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

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

[00122] В одном примере может быть сгенерирован запрос прерывания для предупреждающего события для сообщения программе, что она приближается к окончанию текущего промежутка выполнения на разделяемом ЦПУ. Запрос прерывания является типом ситуации, ожидающей обработки, которая генерируется, когда конфигурация регистрируется и включается для средства предупреждающего прерывания.

[00123] Согласованная обработка между программами (напр., основной и гостевой) оптимизирует разделение ресурсов (напр., ЦПУ) среди программ (напр., гостевых операционных систем). Один или более аспектов обеспечивают, например, лучшее время отклика при том же использовании ЦПУ. Кроме того, системная сериализация разблокируется до прекращения контроля гипервизора.

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

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

[00126] Может использоваться любое сочетание одной или нескольких машиночитаемых сред. Машиночитаемой средой может являться машиночитаемая запоминающая среда (носитель данных). Машиночитаемой запоминающей средой может являться, например, без ограничения электронная, магнитная, оптическая, электромагнитная, инфракрасная или полупроводниковая система, аппаратура или устройство или любое применимое сочетание перечисленного. Более конкретные примеры (неисчерпывающий список) машиночитаемой запоминающей среды включают: электрическое соединение, содержащее один или несколько проводов, портативный компьютерный диск, жесткий диск, оперативное запоминающее устройство (ОЗУ), постоянное запоминающее устройство (ПЗУ), стираемое программируемое постоянное запоминающее устройство (СППЗУ или флэш-память), оптическое волокно, портативное постоянное запоминающее устройство на компакт-диске (CD-ROM), оптическое запоминающее устройство, магнитное запоминающее устройство или любое применимое сочетание перечисленного. В контексте настоящего документа машиночитаемой запоминающей средой может являться любая материальная среда, в которой содержится или хранится программа для использования системой, аппаратурой или устройством выполнения команд или применительно к ним.

[00127] Как показано на ФИГ.11, в одном из примеров компьютерный программный продукт 1100 содержит, например, одну или несколько не-временных машиночитаемых запоминающих сред 1102 для хранения в них машиночитаемого программного кода или логики 1104 для обеспечения и реализации одного или нескольких аспектов настоящего изобретения.

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

[00129] Компьютерный программный код для выполнения операций, для одного или более аспектов настоящего изобретения, может быть записан на одном или нескольких языках программирования в любом сочетании, включая объектно-ориентированный язык программирования, такой как Java, Smalltalk, C++ и т.п., и традиционных процедурных языках программирования, таких как "C" и языки ассемблера или аналогичные языки программирования. Программный код может целиком выполняться в пользовательском компьютере, частично в пользовательском компьютере, в качестве автономного пакета программного обеспечения, частично в пользовательском компьютере и частично в удаленном компьютере или целиком в удаленном компьютере или сервере. В случае последнего сценария удаленный компьютер может быть соединен с пользовательским компьютером посредством сети любого типа, включая локальную вычислительную сеть (ЛВС) или глобальную вычислительную сеть (ГВС), или может быть установлено соединение с внешним компьютером (например, по сети Интернет с использованием поставщика услуг Интернет).

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

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

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

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

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

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

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

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

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

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

[00140] С системой прямой или косвенно посредством промежуточных контроллеров ввода-вывода могут быть связаны устройства ввода-вывода (включая без ограничения, клавиатуры, дисплеи, координатно-указательные устройства, ЗУПД, накопители на магнитной ленте, на компакт-дисках, на многоцелевых компакт-дисках, портативные миниатюрные накопители на жестких дисках и другие запоминающие среды и т.д.). С системой также могут быть связаны сетевые адаптеры, позволяющие системе обработки данных устанавливать связь с другими системами обработки данных или удаленными принтерами или запоминающими устройствами посредством промежуточной частных или общедоступных сетей. Модемы, кабельные модемы и сетевые карты Ethernet являются лишь несколькими из сетевых адаптеров доступных типов.

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

[00142] Согласно ФИГ.12, на которой представлены характерные компоненты хост-компьютерной системы 5000 для реализации одного или нескольких аспектов настоящего изобретения. Характерный хост-компьютер 5000 содержит один или несколько процессоров 5001, поддерживающих связь с памятью (т.е. центральной памятью) 5002 компьютера, а также интерфейсы ввода-вывода с запоминающими средами 5011 и сетями 5010 для связи с другими компьютерами или SAN и т.п. Процессор 5001 совместим с архитектурой, содержащей структурированный набор команд и структурированные функциональные возможности. Процессор 5001 может иметь динамическую трансляцию адреса (DAT) 5003 для превращения адресов программ (виртуальных адресов) в действительные адреса памяти. DAT обычно содержит буфер 5007 быстрой трансляции адреса (TLB) для кэширования трансляций, чтобы при последующих доступах к блоку памяти 5002 компьютера не требовалась задержка трансляции адреса. Обычно между памятью 5002 компьютера и процессором 5001 используется кэш-память 5009. Кэш-память 5009 может являться иерархической и состоящей из кэша большой емкости, доступного для нескольких процессоров, и более быстродействующих кэшей (низкого уровня) меньшей емкости между кэшем большой емкости и каждым процессором. В некоторых случаях реализации кэши низкого уровня разделены на отдельные кэши низкого уровня для выборки команд и доступа к данным. В одном из вариантов осуществления блок 5004 выборки команд вызывает из памяти 5002 команду посредством кэш-памяти 5009. Команда декодируется в блоке 5006 декодирования команд и отправляется (с другими командами в некоторых вариантах осуществления) в блок или блоки 5008 выполнения команд. Обычно используется несколько блоков 5008 выполнения команд, например, блок выполнения арифметических команд, блок выполнения команд с плавающей точкой и блок выполнения команд ветвления. Команда выполняется блоком, который в зависимости от необходимости осуществляет доступ к операндам из определяемых командами регистров или памяти. Если доступ (загрузка или сохранение) к операнду должен осуществляться из памяти 5002, блок 5005 загрузки/сохранения обычно обрабатывает процедуру доступа под управлением выполняемой команды. Команды могут выполняться в аппаратных схемах или во внутреннем микрокоде (аппаратно-программном обеспечении) или с использованием сочетания того и другого.

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

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

[00145] Для команд и операндов, хранимых в памяти, могу быть предусмотрены раздельные кэши. Информация содержится в кэше в форме непрерывных байтов на целочисленной границе, называемой блоком или строкой данных кэша (или для краткости строкой). Согласно одной из моделей может быть предусмотрена команда извлечения атрибута кэша (EXTRACT CACHE ATTRIBUTE), которая выдает размер строки кэша в байтах. Согласно одной из моделей также может быть предусмотрена команда упреждающей выборки данных (PREFETCH DATA) и команда упреждающей выборки данных относительно большой длины (PREFETCH DATA RELATIVE LONG) для упреждающей выборки данных из запоминающего устройства в кэш данных или команд или для высвобождения данных из кэша.

[00146] Запоминающее устройство рассматривается как длинная горизонтальная битовая строка. В случае большинства операций доступ к запоминающему устройству последовательно осуществляется слева направо. Битовая строка подразделяется на блоки из восьми разрядов. Восьмиразрядный блок называется байтом и является базовьм конструктивным блоком всех форматов представления информации. Местоположение каждого байта в запоминающем устройстве идентифицируется однозначно определяемым неотрицательным целым числом, которое является адресом местоположения этого байта или просто адресом байта. Соседние местоположения байтов имеют идущие подряд адреса, начинающиеся слева с 0 и последовательно следующие слева направо. Адреса представляют собой двоичные целые числа без знака, содержащие 24,31 или 64 разряда.

[00147] Обмен информацией между запоминающим устройством и процессором или канальной подсистемой осуществляется путем передачи одного байта или группы байтов за один раз. Если не оговорено иное, например, в системе z/Architecture® хранящаяся группа байтов адресуется посредством крайнего левого байта из группы. Число байтов в группе подразумевается или прямо оговаривается выполняемой операцией. Используемая в работе процессора группа байтов называется полем. Разряды в каждой группе байтов, например, в системе z/Architecture® последовательно нумеруются слева направо. Крайние левые разряды в z/Architecture® иногда именуются "старшими" разрядами, а крайние правые разряды - "младшими" разрядами. Тем не менее, номера разрядов не являются адресами ячеек запоминающего устройства. Возможна только адресация байтов. Чтобы оперировать с отдельными разрядами хранящегося байта, осуществляется доступ ко всему байту. Разряды в байте пронумерованы слева направо от 0 до 7 (например, в системе z/Architecture®). Разряды в адресе могут быть пронумерованы от 8 до 31 или от 40 до 63 в случае 24-разрядных адресов или от 1 до 31 или от 33 до 63 в случае 31-разрядных адресов и от 0 до 63 в случае 64-разрядных адресов. В любом другом имеющем фиксированную длину формате из множества байтов разряды, образующие формат, последовательно пронумерованы, начиная с 0. В целях обнаружения ошибок и предпочтительно их исправления с каждым байтом или группой байтов может передаваться один или несколько контрольных разрядов. Такие контрольные разряды генерируются автоматически машиной и не могут непосредственно управляться программой. Емкость запоминающего устройства выражается в числе байтов. Когда кодом операций команды подразумевается длина хранящегося поля операнда, считается, что поле имеет фиксированную длину, которая может составлять 1, 2, 4, 8 или 16 байтов. Для некоторых команд могут подразумеваться более длинные поля. Когда длина хранящегося поля операнда не подразумевается, а прямо указывается, считается, что поле имеет переменную длину. Операнды переменной длины могут различаться по длине с шагом в 1 байт (или в случае некоторых команд с шагом в 2 байта и другими шагами). При сохранении информации в запоминающем устройстве замещается содержимое местоположений только тех байтов, которые включены в указанное поле, несмотря на то, что ширина физического пути доступа к запоминающему устройству может превышать длину сохраняемого поля.

[00148] Некоторые хранящиеся единицы информации должны находиться на целочисленной границе. Применительно к единице информации граница называется целочисленной, когда адрес ее ячейки запоминающего устройства кратен длине единицы информации в байтах. Полям длиной 2, 4, 8 и 16 байтам на целочисленной границе даются особые названия. Полуслово является группой из 2 идущих подряд байтов на двухбайтовой границе и представляет собой базовый конструктивный блок команд. Слово является группой из 4 идущих подряд байтов на четырехбайтовой границе. Двойное слово является группой из 8 идущих подряд байтов на 8-байтовой границе. Учетверенное слово является группой из 16 идущих подряд байтов на 16-байтовой границе. Когда в адресах ячеек запоминающего устройства указаны полуслова, слова, двойные слова и учетверенные слова, в двоичном представлении адреса содержится один, два, три или четыре крайних правых нулевых разряда, соответственно. Команды должны находиться на двухбайтовых целочисленных границах. Хранящиеся операнды большинства команд не содержат требования размещения на границах.

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

[00150] В одном варианте осуществления, настоящее изобретение может быть реализовано на практике посредством программного обеспечения (иногда называемого лицензионным внутренним кодом, аппаратно-программным обеспечением, микрокодом, милликодом, пикокодом и т.п., что во всех случаях согласуется с одним или большим количеством аспектов настоящего изобретения). Как показано на ФИГ.12, обычно процессор 5001 хост-системы 5000, получает доступ к программному коду системы программного обеспечения, в котором воплощены один или больше аспектов настоящего изобретения, посредством долговременных запоминающих сред 5011, таких как ПЗУ на компакт-дисках, накопитель на магнитной ленте или накопитель на жестких дисках. Программный код системы программного обеспечения может быть воплощен в любой из разнообразных известных сред для применения с системой обработки данных, такой как дискета, накопитель на жестких дисках или ПЗУ на компакт-дисках. Код может распределяться в таких средах или может распределяться пользователям из памяти 5002 компьютера или запоминающего устройства одной компьютерной системы по сети 5010 другим компьютерным системам для применения пользователями таких других систем.

[00151] Программный код включает операционную систему, которая управляет функцией и взаимодействием различных узлов вычислительной машины и одной или нескольких прикладных программ. Обычно подкачка страниц программного кода осуществляется из запоминающей среды 5011 в относительно быстродействующее запоминающее устройство 5002, в котором он доступен для обработки процессором 5001. Методы и способы воплощения программного кода системы программного обеспечения в памяти, в физических средах и/или распределения программного кода посредством сетей хорошо известны и не будут дополнительно рассматриваться в описании. Программный код, созданный и хранящийся в материальной среде (включая без ограничения модули электронной памяти (ОЗУ), флэш-память, компакт-диски, универсальные цифровые диски, магнитную ленту и т.п.) часто именуется "компьютерным программным продуктом". Содержащая компьютерный программный продукт среда обычно может считываться устройством обработки данных предпочтительно в компьютерной системе для выполнения устройством обработки данных.

[00152] На ФИГ.13 проиллюстрирована характерная рабочая станция или аппаратная серверная система, в которой может быть на практике реализованы один или большее количество аспектов настоящего изобретения. В показанную на ФИГ.13 систему 5020 входит характерная базовая компьютерная система 5021, такая как персональный компьютер, рабочая станция или сервер, включая необязательные периферийные устройства. Базовая компьютерная система 5021 имеет один или несколько процессоров 5026 и шину для соединения процессора(ов) 5026 и других компонентов системы 5021 и обеспечения связи между ними известными способами. Шина соединяет процессор 5026 с памятью 5025 и долговременным запоминающим устройством 5027, которое может содержать накопитель на жестких дисках (например, включая любое из следующего: магнитный носитель, компакт-диск, универсальный цифровой диск и флэш-память) или, например, накопитель на магнитной ленте. В систему 5021 также может входить адаптер пользовательского интерфейса, который посредством шины соединяет микропроцессор 5026 с одним или несколькими устройствами сопряжения, такими как клавиатура 5024, мышь 5023, принтер/сканнер 5030 и/или другие устройства сопряжения, которыми могут являться любое пользовательское устройство сопряжения, такое как сенсорный экран, дополнительная цифровая клавиатура и т.д. Шина посредством дисплейного адаптера также соединяет дисплей 5022, такой как ЖК-дисплей или монитор, с микропроцессором 5026.

[00153] Система 5021 может поддерживать связь с другими компьютерами или компьютерными сетями посредством сетевого адаптера, способного поддерживать связь 5028 с сетью 5029. Примерами сетевых адаптеров являются каналы связи, кольцевая сеть с эстафетным доступом, сеть Ethernet или модемы. В качестве альтернативы, система 5021 может поддерживать связь с использованием беспроводного интерфейса, такого как карта CDPD (сотовой системы передачи пакетов цифровых данных). Система 5021 может быть связана с другими такими компьютерами в локальной вычислительной сети (ЛВС) или глобальной вычислительной сети (ГВС), или системой 5021 может являться клиент, связанный отношениями клиент/сервер с другим компьютером и т.д. Все эти конфигурации, а также соответствующее коммуникационное оборудование и программное обеспечение известны из уровня техники.

[00154] На ФИГ.14 проиллюстрирована сеть 5040 обработки данных, в которой может быть реализовано на практике один или несколько аспектов настоящего изобретения. В сеть 5040 обработки данных может входить множество отдельных сетей, таких как беспроводная сеть и проводная сеть, в каждую из которых может входить множество отдельных рабочих станций 5041, 5042, 5043, 5044. Кроме того, как известно специалистам в данной области техники, в нее может входить одна или несколько ЛВС, в которую может входить множество интеллектуальных рабочих станций, связанных с хост-процессором.

[00155] На ФИГ.14 также показано, что в сети также могут входить мэйнфреймы или серверы, такие как шлюз (клиент-сервер 5046) или сервер приложений (удаленный сервер 5048, который может осуществлять доступ к хранилищу данных, а также может быть доступен непосредственно с рабочей станции 5045). Шлюз 5046 служит точкой входа в каждую отдельную сеть. Шлюз необходим при подсоединении одного сетевого протокола к другому. Шлюз 5046 предпочтительно может быть связан с другой сетью (например, сетью Интернет 5047) линией связи. Шлюз 5046 также может быть непосредственно связан с одной или несколькими рабочими станциями 5041, 5042, 5043, 5044 с использованием линии связи. Шлюз может быть реализован с использованием сервера IBM eServer™ System z® производства International Business Machines Corporation.

[00156] Как показано на ФИГ.13 и 14, доступ к программному коду системы программного обеспечения, в котором может быть воплощен один или несколько аспектов настоящего изобретения, может осуществлять процессор 5026 системы 5020 посредством долговременных запоминающих сред 5027, таких как ПЗУ на компакт-дисках, или накопитель на жестких дисках. Программный код системы программного обеспечения может быть воплощен в любой из разнообразных известных сред для применения с системой обработки данных, такой как дискета, накопитель на жестких дисках или ПЗУ на компакт-дисках. Код может распределяться в таких средах или может распределяться пользователям 5050, 5051 из памяти компьютера или запоминающего устройства одной компьютерной системы по сети другим компьютерным системам для применения пользователями таких других систем.

[00157] В качестве альтернативы, программный код может быть воплощен в памяти 5025 с возможностью доступа к нему для процессора 5026 с использованием процессорной шины. В таком программном коде реализована операционная система, которая управляет функцией и взаимодействием различных узлов вычислительной машины и одной или нескольких прикладных программ 5032. Обычно подкачка страниц программного кода осуществляется из запоминающих сред 5027 в быстродействующее запоминающее устройство 5025, в котором он доступен для обработки процессором 5026. Методы и способы воплощения программного кода системы программного обеспечения в памяти, в физических средах и/или распределения программного кода посредством сетей хорошо известны и не будут дополнительно рассматриваться в описании. Программный код, созданный и хранящийся в материальной среде (включая без ограничения модули электронной памяти (ОЗУ), флэш-память, компакт-диски, универсальные цифровые диски, магнитную ленту и т.п.) часто именуется "компьютерным программным продуктом". Содержащая компьютерный программный продукт среда обычно может считываться устройством обработки данных предпочтительно в компьютерной системе для выполнения устройством обработки данных.

[00158] Кэш, который является наиболее легкодоступным для процессора (обычно более быстродействующим и менее объемным, чем другие кэши процессора), представляет собой кэш низшего уровня (L1 или уровня 1), а основное запоминающее устройство (основная память) представляет собой кэш высшего уровня (L3 в случае 3 уровней). Кэш низшего уровня часто поделен на кэш команд (1-кэш), в котором хранятся машинные команды для выполнения, и кэш данных (D-кэш), в котором хранятся операнды, хранимые в памяти.

[00159] На ФИГ.15 проиллюстрирован один из примеров осуществления процессора 5026. Обычно с целью помещения в буфер блоков памяти и повышения производительности процессора используется один или несколько уровней кэша 5053. Кэш 5053 представляет собой высокоскоростной буфер, в котором в строках данных кэша хранятся данные в памяти, которые вероятно будут использоваться. Типичные строки данных кэша содержат 64, 128 или 256 байтов данных в памяти. Для кэширования команд и для кэширования данных часто используются раздельные кэши. Согласованность кэшей (синхронизация копий строк в памяти и в кэшах) часто обеспечивается различными алгоритмами слежения ("snoop"), хорошо известными из уровня техники. Основное запоминающее устройство 5025 процессорной системы часто называют кэшем. В процессорной системе, имеющей уровня 4 кэша 5053, основное запоминающее устройство 5025 иногда называют кэшем уровня 5 (L5), поскольку оно обычно является более быстродействующими и представляет собой лишь часть энергонезависимого запоминающего устройство (ЗУПД, ЗУ на ленте и т.д.), которое доступно для компьютерной системы. Основное запоминающее устройство 5025 "кэширует" страницы данных, которые подкачиваются в основное запоминающее устройство 5025 и откачиваются из него операционной системой.

[00160] Программный счетчик (счетчик команд) 5061 отслеживает адрес текущей команды для выполнения. Счетчиком команд в процессоре на основе z/Architecture® является 64-разрядным, при этом он может быть усечен до 31 или 24 разрядов с целью поддержки ранее существовавших ограничений адресации. Поскольку счетчик команд обычно воплощен в слове состояния программы (PSW) компьютера, оно сохраняется при переключении контекста. Соответственно, выполняемая программа с показанием счетчика команд может прерываться, например, операционной системой (при переключении контекста из программной среды в среду операционной системы). PSW программы поддерживает показание счетчика команд, пока программа неактивна, а во время выполнения операционной системы используется счетчик команд (в PSW) операционной системы. Обычно показание счетчика команд приращивается на величину, равную числу байтов текущей команды. RISC-команды (на основе вычислений с сокращенным набором команд) обычно имеют фиксированную длину, тогда как CISC-команды (на основе вычислений с полным набором команд) обычно имеют переменную длину. Команды, используемые в системе IBM z/Architecture®, являются CISC-командами, имеющими длину 2, 4 или 6 байтов. Показание счетчика 5061 команд изменяется, например, в результате операции переключения контекста или операции выбранного ветвления согласно команде ветвления. При операции переключения контекста в слове состояния программы сохраняется текущее показание счетчика команд вместе с другой информацией о состоянии выполняемой программы (такой как коды условий), и загружается новое показание счетчика команд, указывающее на команду нового программного модуля для выполнения. Операция выбранного ветвления выполняется, чтобы позволить программе принимать решения, или чтобы выполнять программный цикл путем загрузки в счетчик 5061 команд результата команды ветвления.

[00161] Обычно для выборки команд от имени процессора 5026 применяется блок 5055 выборки команд. Блок выборки осуществляет выборку "очередных последовательных команд", целевых команд из команд выбранного ветвления или первых команд программы, следующей за переключением контекста. В современных блоках выборки команд часто применяют методы выборки с целью предварительной выборки команд по предположению, исходя из вероятности использования команд, предварительная выборка которых была осуществлена. Например, блок выборки может осуществлять выборку 16 байтов команды, содержащих очередную последовательную команду, и дополнительных байтов следующих далее команд.

[00162] Затем вызванные команды выполняются процессором 5026. В одном из вариантов осуществления вызванная команда(-ы) передаются блоку 5056 диспетчеризации блока выборки. Блок диспетчеризации декодирует команду(-ы) и пересылает информацию о декодированной команде(-ах) соответствующим блокам 5057, 5058, 5060. Блок 5057 выполнения обычно принимает информацию о декодированных арифметических командах от блока 5055 выборки команд и выполняет арифметические операции с операндами в соответствии с содержащимся в команде кодом операции. Операнды предоставляются блоку 5057 выполнения предпочтительно из памяти 5025, структурированных регистров 5059 или из непосредственного поля выполняемой команды. Сохраненные результаты выполнения хранятся в памяти 5025, регистрах 5059 или в другом машинном аппаратном обеспечении (таком как управляющие регистры, регистры PSW и т.п.).

[00163] Процессор 5026, как правило, имеет один или несколько блоков 5057, 5058, 5060, выполнения функции команды. Как показано на ФИГ.16А, блок 5057 выполнения, посредством интерфейсной логической схемы 5071, может поддерживать связь со структурированными общими регистрами 5059, блоком 5056 декодирования/диспетчеризации, блоком 5060 загрузки/сохранения и другими процессорными блоками 5065. В блоке 5057 выполнения может применяться несколько регистровых схем 5067, 5068, 5069 для хранения информации, с которой будет работать арифметическое логическое устройство (ALU) 5066. ALU выполняет арифметические операции, такие как сложение, вычитание, умножение и деление, а также логические функции, такие как И, ИЛИ и исключающее ИЛИ, поворот и смещение. ALU предпочтительно поддерживает зависящие от конструкции специализированные операции. В других схемах могут обеспечиваться другие структурированные средства 5072, включающие, например, коды условия и логическую схему поддержки восстановления. Обычно результат операции ALU хранится в схеме 5070 выходного регистра, из которой он может пересылаться целому ряду других функций обработки. Хотя существует множество конструкций процессоров, настоящее описание имеет целью лишь обеспечить понимание одного из вариантов осуществления.

[00164] Например, команда сложения (ADD) выполняется блоком 5057 выполнения, обладающим арифметическими и логическими функциональными возможностями, а, например, команда с плавающей точкой выполняется блоком вычислений с плавающей точкой, обладающим специализированными возможностями работы с плавающей точкой. Блок выполнения предпочтительно работает с указанными командой операндами путем выполнения заданной кодом операции функции применительно к операндам. Например, команда сложения может выполняться блоком 5057 выполнения применительно к операндам, обнаруженным в двух регистрах 5059, указанных в регистровых полях команды.

[00165] Блок 5057 выполнения выполняет арифметическое сложение двух операндов и сохраняет результат в третьем операнде, которым может являться третий регистр или один из двух исходных регистров. Блок выполнения предпочтительно использует арифметическое логическое устройство (ALU) 5066, способное выполнять ряд логических функций, таких как смещение, поворот. И, ИЛИ и исключающее ИЛИ, а также ряд алгебраических функций, включая любые из следующих функций: сложение, вычитание, умножение, деление. Некоторые ALU 5066 рассчитаны на скалярные операции, а некоторые - на операции с плавающей точкой. В зависимости от архитектуры данные могут иметь обратный порядок следования байтов (когда наименьший значимый байт соответствует старшему байтовому адресу) или прямой порядок следования байтов (когда наименьший значимый байт соответствует младшему байтовому адресу). В системе IBM z/Architecture® используется обратный порядок следования байтов. В зависимости от архитектуры поля чисел со знаком могут быть представлены в виде прямого кода, дополнения до единицы или дополнения до двух. Число в форме дополнения до двух выгодно в том смысле, что ALU не требуется поддерживать возможность вычитания, поскольку при отрицательной или положительной величине дополнения до двух в ALU требуется только сложение. Числа обычно описаны в сокращенном виде, в котором 12-разрядное поле определяет адрес блока из 4096 байтов и обычно описано, например, в виде 4-х килобайтового блока.

[00166] Как показано на ФИГ.16Б, информация, содержащаяся в команде ветвления, для выполнения команды ветвления обычно передается блоку 5058 ветвления, в котором часто применяется алгоритм предсказания ветвления, такой как таблица 5082 предыстории ветвления, для предсказания исхода ветвления до завершения других условных операций. Целевой объект текущей команды ветвления вызывается и выполняется по предположению до завершения условных операций. Когда условные операции завершены, выполненные по предположению команды ветвления завершаются или отбрасываются, исходя из условной операции и предположенного исхода. Типичная команда ветвления может предусматривать проверку кодов условий и ветвление к целевому адресу, если коды условий отвечают требованию команды ветвления, при этом целевой адрес может вычисляться на основании нескольких чисел, включая, например, числа из регистровых полей или непосредственного поля команды. В блоке 5058 ветвления может применяться ALU 5074, имеющее множество схем 5075, 5076, 5077 входных регистров и схему 5080 выходного регистра. Блок 5058 ветвления, например, может поддерживать связь с общими регистрами 5059, декодировать блок 5056 диспетчеризации или другие схемы 5073.

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

[00168] Процессор осуществляет доступ к операндам в соответствии с определенными командами способами. Команда может содержать непосредственный операнд, в котором используется значение части команды, может содержать одно или несколько регистровых полей, прямо указывающих регистры общего назначения или регистры особо назначения (например, регистры с плавающей точкой). В команде могут использоваться подразумеваемые регистры, обозначаемые полем кода операции как операнды. В команде могут использоваться ячейки памяти для операндов. Ячейка памяти для операнда может обеспечиваться регистром, непосредственным полем или сочетанием регистров и непосредственного поля, примером чего является средство дальнего смещения на основе системы z/Architecture®, в котором команда определяет базовый регистр, индексный регистр и непосредственное поле (поле смещения), которые суммируются с целью получения, например, адреса операнда в памяти. Под ячейкой в данном случае подразумевается ячейка основной памяти (основного запоминающего устройства), если не указано иное.

[00169] Как показано на ФИГ.16В, процессор осуществляет доступ к памяти с использованием блока 5060 загрузки/сохранения. Блок 5060 загрузки/сохранения может выполнять операцию загрузки путем получения адреса целевого операнда в памяти 5053 и загрузки операнда в регистр 5059 или другую ячейку памяти 5053, или может выполнять операцию сохранения путем получения адреса целевого операнда в памяти 5053 и сохранения данных, полученных из регистра 5059 или другой ячейки памяти 5053, в ячейке целевого операнда в памяти 5053. Блок 5060 загрузки/сохранения может действовать по предположению и осуществлять доступ к памяти в последовательности, которая не соответствует последовательности команд, тем не менее, блок 5060 загрузки/сохранения, должен обеспечивать для программ видимость выполнения команды по порядку. Блок 5060 загрузки/сохранения может поддерживать связь с общими регистрами 5059, блоком 5056 декодирования/диспетчеризации, интерфейсом 5053 кэша/памяти или другими элементами 5083 и содержит различные регистровые схемы, ALU 5085 и управляющую логику 5090 для вычисления адресов ячеек запоминающего устройства и обеспечения последовательного потока для сохранения порядка следования операций. Некоторые операции могут выполняться не по порядку, но блок загрузки/сохранения обеспечивает функциональные возможности для того, чтобы выполняемые не по порядку операции выглядели для программы выполненными по порядку, как хорошо известно из уровня техники.

[00170] Адреса, которые "видит" прикладная программа, предпочтительно часто именуются виртуальными адресами. Иногда виртуальные адреса именуются "логическими адресами" и "исполнительными адресами". Эти виртуальные адреса являются виртуальными в том смысле, что их перенаправляют в ячейку физической памяти посредством одной из ряда технологий динамической трансляции адреса (DAT), включая без ограничения простое приписывание величины смещения к виртуальному адресу, трансляцию виртуального адреса посредством одной или нескольких таблиц трансляции, которые предпочтительно содержат по меньшей мере таблицу сегментов и таблицу страниц по отдельности или в сочетании, предпочтительно таблицу сегментов, содержащую запись с указанием таблицы страниц. В системе z/Architecture® предусмотрена иерархия трансляции, в которую входит первая таблица региона, вторая таблица региона, третья таблица региона, таблица сегментов и необязательная таблица страниц. Эффективность трансляции адресов часто повышается за счет использования буфера быстрого трансляции адреса (TLB), который содержит записи, отображающие виртуальный адрес соответствующей ячейки физической памяти. Записи создаются, когда DAT транслирует виртуальный адрес с использованием таблиц перевода. Затем при последующем использовании виртуального адреса может использоваться запись из быстродействующего TLB вместо доступа к таблицам медленной последовательной трансляции. Содержимым TLB может управлять ряд алгоритмов замещения, включая алгоритм замещения наиболее давней по использованию страницы (LRU).

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

[00172] Блоки 5054 ввода-вывода (ФИГ.15) обеспечивают процессор средствами подключения к периферийным устройствам, включая, например, накопители на магнитной ленте, накопители на дисках, принтеры, дисплеи и сети. Блоки ввода-вывода представлены в компьютерной программе программными драйверами. В мэйнфреймах, таких как System z® производства IBM®, блоки ввода-вывода мэйнфрейма являются адаптерами каналов и адаптерами открытых систем и обеспечивают связь между операционной системой и периферийными устройствами.

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

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

[00175] В частности, в мэйнфрейме структурированные машинные команды используются программаторами, обычно современными программаторами на языке "С" посредством компилирующего приложения. Эти команды, хранящиеся в запоминающей среде, могут выполняться в собственной системе команд сервера IBM® на основе z/Architecture® или в качестве альтернативы в машинах на основе других архитектур. Они могут эмулироваться в существующих и будущих серверах на основе мэйнфреймов IBM® и в других машинах IBM® (например, серверах Power Systems и серверах System х®). Они могут выполняться в операционной системе Linux разнообразными машинами, использующими аппаратное обеспечение производства IBM®, Intel®, AMD™ и других компаний. Помимо выполнения этим аппаратным обеспечением на основе Z/Architecture®, может использоваться Linux, а также машины, использующие эмуляцию Hercules, UMX или FSI (Fundamental Software, Inc), когда выполнение обычно происходит в режиме эмуляции. В режиме эмуляции эмулирующее программное обеспечение выполняется собственным процессором, эмулирующим архитектуру эмулируемого процессора.

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

[00177] Конкретная эмулируемая команда декодируется, и вызывается подпрограмма для выполнения функции отдельной команды. Функция эмулирующего программного обеспечения, эмулирующая функцию эмулируемого процессора, реализуется, в подпрограмме или драйвере на языке "С" или каким-либо другим способом обеспечения драйвера для конкретного аппаратного обеспечения, доступным для специалистов в данной области техники, ознакомившихся в описанием предпочтительного варианта осуществления. В различных патентах, в которых предложена эмуляция программного и аппаратного обеспечения, включая без ограничения патент US 5551013 под названием "Multiprocessor for hardware emulation", выданный на имя Beausoleil и др., патент US 6009261 под названием "Preprocessing of stored target routines for emulating incompatible instructions on a target processor", выданный на имя Scaizi и др.; патент US 5574873 под названием "Decoding guest instruction to directly access emulation routines that emulate the guest instructions", выданный на имя Davidian и др.; патент US 6308255 под названием "Symmetrical multiprocessing bus and chipset used for coprocessor support allowing non-native code to run in a system", выданный на имя Gorishek и др.; патент US 6463582 под названием "Dynamic optimizing object code translator for architecture emulation and dynamic optimizing object code translation method", выданный на имя Lethin и др.; патент US 5790825 под названием "Method for emulating guest instructions on a host computer through dynamic recompilation of host instructions", выданный на имя Eric Traut; каждый из которых включен в данное описание во всей их полноте, и многие другие, проиллюстрированные разнообразные известные способы эмуляции формата команд, структурированного для отличающейся машины, в целевой машине, доступные для специалистов в данной области техники.

[00178] На ФИГ.17 проиллюстрирован один из примеров известной из техники эмулирующей компьютерной хост-системы 5092, которая эмулирует компьютерную хост-систему 5000', имеющую хост-архитектуру. Хост-процессором (ЦП) 5091 в компьютерной хост-системе 5092 эмуляции является хост-процессор (или виртуальный хост-процессор) эмуляции, представляющий собой процессор 5093 эмуляции со структурой собственных команд, отличающейся от структуры команд процессора 5091 хост-компьютера 5000'. Компьютерная хост-система 5092 эмуляции имеет память 5094, доступную для процессора 5093 эмуляции. В примере осуществления память 5094 разделена на память 5096 хост-компьютера и память 5097 программ эмуляции. Память 5096 хост-компьютера доступна для программ эмулируемого хост-компьютера 5092 в зависимости от архитектуры хост-компьютера. Процессор 5093 эмуляции выполняет собственные команды структурированной системы команд, структура которых отличается от структуры команд эмулируемого процессора 5091 и которые извлекаются из памяти 5097 программ эмуляции, и может осуществлять выборку хост-команды для выполнения из программы в памяти 5096 хост-компьютера путем применения одной или нескольких команд из программы контроля последовательности и выборки/декодирования (Sequence & Access/Decode), которая может декодировать выбранную хост-команду(-ы) и определять программу выполнения собственных команд эмуляции функции выбранной хост-команды. Другие средства, которые предусмотрены в архитектуре компьютерной хост-системы 5000', могут эмулироваться программами структурированных средств (Architected Facilities Routines), включая такие средства, как, например, регистры общего назначения, управляющие регистры, поддержка подсистемы динамической трансляции адреса и ввода-вывода и кэш-память процессора. Программы эмуляции также могут использовать функции, доступные в процессоре 5093 эмуляции (такие как общие регистры и динамическое транслирование виртуальных адресов) для повышения производительности программ эмуляции. Также может быть предусмотрено особое программное обеспечение и механизмы разгрузки, облегчающие процессору 5093 эмуляцию функции хост-компьютера 5000'.

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

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

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

название год авторы номер документа
СРЕДСТВО ПРЕДУПРЕЖДАЮЩЕГО ПРЕРЫВАНИЯ 2012
  • Марк С. Фаррелл
  • Чарлз У. Гейни Джр.
  • Джеффри Пол Кьюбала
  • Джеймс Х. Малдер
  • Бернард Пирс
  • Роберт Р. Роджерс
  • Доналд Уилльям Шмидт.
RU2577470C2
ПРЕДОСТАВЛЕНИЕ ОДНОЙ ПРОГРАММНОЙ ДОСТУПА ДРУГОЙ ПРОГРАММЕ К СРЕДСТВУ ОТСЛЕЖИВАНИЯ ПРЕДУПРЕЖДЕНИЙ 2012
  • Чарльз У. Гейни Джр.
  • Джеффри Пол Кьюбала
  • Марк С. Фаррелл
  • Доналд Уилльям Шмидт
  • Бернард Пирс
  • Роберт Р. Роджерс
  • Джеймс Х. Малдер
RU2563454C2
СПОСОБ ВЫПОЛНЕНИЯ МАШИННОЙ КОМАНДЫ, КОМПЬЮТЕРНАЯ СИСТЕМА И МАШИНОЧИТАЕМЫЙ НОСИТЕЛЬ, ОБЕСПЕЧИВАЮЩИЕ РАСЧЕТ РАССТОЯНИЯ ОТ ПОЛОЖЕНИЯ В ОСНОВНОЙ ПАМЯТИ ДО ГРАНИЦЫ БЛОКА ОСНОВНОЙ ПАМЯТИ 2012
  • Джонатан Дейвид Бредбери
  • Майкл Карл Гшвинд
  • Эрик Марк Шварц
  • Тимоти Дж. Слиджл
  • Кристиан Якоби
RU2568920C2
КОМАНДА ВЕКТОРНОГО ТИПА КОНТРОЛЬНОЙ СУММЫ 2013
  • Брэдбери Джонатан Дейвид
  • Шварц Эрик Марк
RU2608663C1
ПРЕОБРАЗОВАНИЕ ИЗ ЗОННОГО ФОРМАТА В ДЕСЯТИЧНЫЙ ФОРМАТ С ПЛАВАЮЩЕЙ ТОЧКОЙ 2012
  • Стивен Р. Карло
  • Эрик Марк Шварц
  • Тимоти Дж. Слиджл
  • Чарлз У. Гейни Джр.
  • Марсель Митран
  • Рейд Т. Коупленд
RU2565508C2
КОМАНДА ВЕКТОРНОГО ТИПА НА ПОЛЕ ГАЛУА ПЕРЕМНОЖЕНИЯ, СУММИРОВАНИЯ И НАКОПЛЕНИЯ 2014
  • Брэдбери Джонатан Дейвид
RU2613726C2
КОМАНДА ДЛЯ ЗАГРУЗКИ ДАННЫХ ДО ЗАДАННОЙ ГРАНИЦЫ ПАМЯТИ, УКАЗАННОЙ КОМАНДОЙ 2012
  • Джонатан Дейвид Бредбери
  • Майкл Карл Гшвинд
  • Тимоти Дж. Слиджл
  • Эрик Марк Шварц
  • Кристиан Якоби
RU2565496C2
ПРЕОБРАЗОВАНИЕ В ЗОННЫЙ ФОРМАТ ИЗ ДЕСЯТИЧНОГО ФОРМАТА С ПЛАВАЮЩЕЙ ТОЧКОЙ 2012
  • Стивен Р. Карло
  • Эрик Марк Шварц
  • Тимоти Дж. Слиджл
  • Чарлз У. Гейни Джр.
  • Марсель Митран
  • Рейд Т. Коупленд
RU2560796C2
КОМАНДА ВЕКТОРНОГО ТИПА ДЛЯ ПОИСКА НЕРАВНОЗНАЧНОГО ЭЛЕМЕНТА 2013
  • Брадбери Джонатан Дейвид
  • Шварц Эрик Марк
  • Следжел Тимоти
  • Гшвинд Майкл Карл
RU2598814C2
ТРАНСФОРМАЦИЯ ПРЕРЫВИСТЫХ СПЕЦИФИКАТОРОВ КОМАНД В НЕПРЕРЫВНЫЕ СПЕЦИФИКАТОРЫ КОМАНД 2012
  • Майкл Карл Гшвинд
RU2568241C2

Иллюстрации к изобретению RU 2 565 495 C2

Реферат патента 2015 года ИСПОЛЬЗОВАНИЕ СРЕДСТВА ПРЕДУПРЕЖДАЮЩЕГО ПРЕРЫВАНИЯ ПРОГРАММОЙ

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

Формула изобретения RU 2 565 495 C2

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

16. Компьютерная система по п. 10, в которой льготный период предоставляется в дополнение к кванту времени, предоставленному программе, причем, если квант времени полностью истек, льготный период предоставляется за счет следующего кванта времени для программы, а если квант времени не истек, льготный период берется из нормального времени, остающегося в кванте времени.

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

Документы, цитированные в отчете о поиске Патент 2015 года RU2565495C2

US 7536690 B2, 19.05.2009
Пломбировальные щипцы 1923
  • Громов И.С.
SU2006A1
Способ приготовления лака 1924
  • Петров Г.С.
SU2011A1
РЕАЛИЗАЦИЯ КОМПЬЮТЕРНОЙ МНОГОЗАДАЧНОСТИ ЧЕРЕЗ ВИРТУАЛЬНУЮ ОРГАНИЗАЦИЮ ПОТОЧНОЙ ОБРАБОТКИ 2001
  • Файнберг Мэттью А.
RU2286595C2

RU 2 565 495 C2

Авторы

Чарлз У. Гейни Джр.

Джеффри Пол Кьюбала

Марк С. Фаррелл

Доналд Уилльям Шмидт

Джеймс Х. Малдер

Бернард Пирс

Роберт Р. Роджерс

Даты

2015-10-20Публикация

2012-11-14Подача