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

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

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

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

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

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

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

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

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

Краткое изложение сущности изобретения

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

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

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

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

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

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

на фиг. 2 - другой вариант осуществления вычислительной среды, в которой содержится и используется одна или несколько особенностей настоящего изобретения,

на фиг. 3 - еще один вариант осуществления вычислительной среды, в которой содержится и используется одна или несколько особенностей настоящего изобретения,

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

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

на фиг. 6 - один из вариантов осуществления логики обработки хостом завершения работы гостем согласно одной из особенностей настоящего изобретения,

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

на фиг.8А-8В - варианты осуществления логики обработки средства прерывания с целью отслеживания предупреждений согласно одной из особенностей настоящего изобретения,

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

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

на фиг.11 - один из вариантов осуществления компьютерного программного продукта, в котором содержится одна или несколько особенностей настоящего изобретения,

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

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

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

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

на фиг.16А - один из вариантов осуществления блока выполнения, проиллюстрированной на фиг.15 компьютерной системы, в которой содержится и используется одна или несколько особенностей настоящего изобретения,

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

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

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

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

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

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

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

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

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

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

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

За счет обеспечиваемой СРС поддержки может действовать большое число виртуальных машин, каждая из которых способна выполнять роли ведущего узла для гостевой операционной системы 212, такой как z/VM®, z/OS® или Linux в качестве примеров. Каждая виртуальная машина 204 способна действовать как отдельная система. Иными словами, каждая виртуальная машина может независимо перезагружаться, выполнять роли ведущего узла для гостевой операционной системы и работать с различными программами. Операционная система или прикладная программа, действующая в виртуальной машине, создает видимость наличия у нее доступа полностью ко всей системе, но в действительности доступной является лишь ее часть.

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

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

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

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

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

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

Процессор 306 эмуляции выполняет собственные команды структурированной системы команд, структура которых отличается от структуры команд эмулируемого процессора 304. Собственные команды извлекаются, например, из памяти 312 программ эмуляции. Процессор 306 эмуляции может осуществлять выборку хост-команды для выполнения из программы в памяти 310 хост-компьютера путем применения одной или нескольких команд из программы контроля последовательности и выборки/декодирования (Sequence & Access/Decode), которая может декодировать выбранную хост-команду(-ы) и определять программу выполнения собственных команд эмуляции функции выбранной хост-команды. Одной из таких хост-команд может являться, например, команда начала интерпретационного выполнения (SIE), посредством которой хост стремиться выполнить гостевую программу в виртуальной машине. Программы эмуляции могут поддерживать эту команду и выполнение последовательности гостевых команд в виртуальной машине 316 в соответствии с определением этой команды SIE.

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

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

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

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

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

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

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

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

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

Как показано на фиг.4, гостевая программа, понимающая протокол отслеживания предупреждений, на шаге 400 осуществляет поиск индикатора установленного средства. В одном из примеров этим указанием является разряд, хранящийся в блоке управления (например, блоке управления вызовом обслуживания (Service Call Control Block) (SCCB)), и для его выполнения используется команда чтения, такая как команда чтения информации (Read SCP Information). После того, как определено, что средство установлено, гостевая программа на шаге 402 осуществляет регистрацию. Регистрация является механизмом, посредством которого гостевая программа сообщает хост-программе о том, что гостевая программа понимает протокол средства прерывания с целью отслеживания предупреждений. В одном из примеров регистрация осуществляется с использованием команды диагностирования, один из примеров которой дополнительно описан далее.

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

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

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

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

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

После получения предупреждения гость на шаге 406 добровольно отказывается от предоставленного ему кванта времени/льготного периода. Гость завершает работу в течение текущего кванта времени/льготного периода после получения уведомления и превращения диспетчеризуемой единицы в повторно диспетчеризуемую (например, путем прекращения выполнения и перемещения диспетчеризуемой единицы или завершения ее выполнения). Это завершение работы сигнализирует хост-программе о том, что гость в действительности придерживается протокола. Могут существовать другие причины, по которым гость отказывается от управления и тем самым возвращает его хост-программе. Обычно для того, чтобы сделать диспетчеризуемую единицу повторно диспетчеризуемой при обработке с ограничениями не возникают ситуации, приводящие к таким завершениям работы по каким-либо внешним причинам. Если гостевой ЦП завершает работу в течение льготного периода посредством протокола прерывания с целью отслеживания предупреждений, в порядке обратной связи передается сообщение о следующем кванте времени, всякий раз, когда это имеет место. Соответственно, гостевой программе известно о действующем ограничении по времени, предписанном льготным периодом.

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

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

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

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

Как показано на фиг.5, на шаге 500 хост распознает индикатор установленного средства и отображает ее для своих гостей. Например, хост проверяет установленный разряд в блоке управления (например, SCCB) и распознает установленное состояние протокола отслеживания предупреждений (т.е. то, что он установлен), при этом хосту известно, как хост-программа может использовать его к выгоде хоста. Соответственно, индикатор установленного средства отображается для гостя. Например, чтобы отобразить средство для гостя, хост задает установленный разряд в блоке управления гостя (например, SCCB гостя) или область памяти, доступную для гостя. Если по какой-либо причине хост-программа не желает, чтобы гость наблюдать установленное состояние протокола средства прерывания с целью отслеживания предупреждений и не позволяет гостю наблюдать установленное состояние и использовать его, хост-программа передает гостю индикатор неустановленного состояния (например, устанавливает на ноль разряд, видимый гостем). Кроме того, в одном из вариантов осуществления хост-программа устанавливает средства управления гостевых ЦП таким образом, чтобы заблокировать протокол отслеживания предупреждений (например, выключает один или несколько назначенных разрядов в описании состояния гостевого ЦП).

После инициации регистрации гостем на шаге 502 хост-программа принимает незапрашиваемый запрос регистрации и запоминает, что гость зарегистрировался. Запроса регистрации, инициированного любым одним гостевым ЦП, достаточно для регистрации всех гостевых ЦП в гостевой мультипроцессорной конфигурации. Соответственно, на шаге 504 хост-программа разблокирует протокол отслеживания предупреждений для всех ЦП гостевой конфигурации. Например, хост-программа устанавливает один или несколько назначенных разрядов в описании состояния гостевого ЦП, чтобы разблокировать средство прерывания с целью отслеживания предупреждений для гостей. Гостю необязательно передается информация обратной связи о регистрации. Если бы гостевой ЦП попытался осуществить регистрацию даже при не установленном средстве, хост проигнорировал бы запрос и не разблокировал бы протокол средства прерывания с целью отслеживания предупреждений для гостевого ЦП.

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

В качестве одного из примеров, когда для гостевого ЦП, действующего в режим интерпретационного выполнения в хост-ЦП, скажем, в хост-ЦП Х разрешен протокол прерывания с целью отслеживания предупреждений, хост-программа может инициировать работу протокола из хост-ЦП Y. Иными словами, гостевому ЦП предоставлен хост-ЦП X, и этот хост-ЦП Х в данный момент недоступен для хост-программы. Если у хост-программы имеется причина для повторного запрашивания ЦП X, сначала она побуждает ЦП Х выйти из режима интерпретационного выполнения. Иными словами, осуществляется останов гостевого ЦП, и он выходит из режима интерпретационного выполнения ЦП X. Останов гостевого ЦП в любой произвольный момент без предоставления гостевому ЦП возможности самому осуществить добровольный останов, создает опасность затруднения, устранить которое призван протокол прерывания с целью отслеживания предупреждений. Протокол прерывания с целью отслеживания предупреждений дает возможность хост-ЦП Y запрашивать уведомление, позволяя на шаге 506 преобразовывать работу хост-программы в уведомление в гостевом ЦП X. Поскольку гостевая программа была ранее зарегистрирована, хост-программа рассчитывает, что гостевая программа распознает уведомление и поддерживает соответствующую обработку уведомление, включая последний шаг добровольного окончания выполнения и тем самым возврата хост-программе управления хост-ЦП X. После того, как это происходит, хост-программа может продолжить любое использование хост-ЦП X, которое могло вызвать инициирование процесса.

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

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

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

На шаге 508 хост-ЦП получает результат осуществления гостевым ЦП добровольного завершения работы или завершения работы по какой-либо иной причине (например, возврат хосту ресурса ЦП). Если причина завершения работы определена протоколом прерывания с целью отслеживания предупреждений, хост-программа запоминает ответ для передачи гостевому ЦП при следующем запуске, сколько бы времени он ни потребовал. Этот ответ является положительным ("благоприятным") указанием, если гость осуществил добровольное завершение работы до истечения льготного периода. Если завершение работы имело какую-либо иную причину, при следующем запуске гостевого ЦП ответ по протоколу прерывания с целью отслеживания предупреждений не передается.

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

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

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

Обработка добровольного завершения работы гостем хостом дополнительно описана со ссылкой на фиг.6. Сначала после останова гостевого ЦП на шаге 600 управление возвращается к хост-ЦП. На шаге 602 запроса определяется, было ли возвращено управление в течение льготного периода. Если управление возвращено в течение льготного периода, хост-программа на шаге 604 распознает добровольное завершение работы гостя по протоколу прерывания с целью отслеживания предупреждений и запоминает благоприятный ответ для передачи при очередном запуске гостевого ЦП независимо от того, какой хост-ЦП должен будет обеспечивать выполнение гостевого ЦП в этот момент. Это происходит, если установлено средство прерывания с целью отслеживания предупреждений. Если это не так, состояние обратной связи не запоминается. Тем не менее, если на шаге 602 запроса определено, что гость осуществил добровольное завершение работы, но это произошло по истечении льготного периода, хост-программа в хост-ЦП на шаге 606 распознает добровольное завершение работы гостем по протоколу прерывания с целью отслеживания предупреждений (несмотря на его несвоевременность и осуществление в принудительном порядке) и запоминает неблагоприятный ответ для передачи при очередном запуске гостевого ЦП независимо от того, какой хост-ЦП может обеспечивать выполнение гостевого ЦП в этот момент. И в этом случае это происходит, если установлено средство прерывания с целью отслеживания предупреждений. Если это не так, состояние обратной связи не запоминается.

После этого, в зависимости от того, запомнил ли хост благоприятный или неблагоприятный ответ, на шаге 608 хост-программа переориентирует хост-ЦП на назначение приоритетных прерываний. Иными словами, после того, как ресурсы (ЦП) возвращены хосту, он переориентируется на выполнение одной или нескольких функций.

Кроме того, при очередном последовательном запуске гостевого ЦП независимо от того, какой хост-ЦП обеспечивает гостевой ЦП, если запомнено состояние обратной связи, на шаге 610 до запуска гостевого ЦП устанавливается индикатор состояния обратной связи. В одном из примеров она устанавливается в описании состояния SIE, например, в PSW описания состояния, которое указывает начало выполнения очередной последовательной команды.

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

Как показано на фиг.7, сначала гостевая программа (например, гостевая операционная система) на шаге 700 распознает, что средство прерывания с целью отслеживания предупреждений установлено. В одном из вариантов осуществления это делается гостевой программой, которая наблюдает индикатор установленного средства (например, разряд), который находится, например, в указанном блоке управления. Если гостевая операционная система имеет поддержку для участия в средстве прерывания с целью отслеживания предупреждений, она распознает индикатор установленного средства прерывания с целью отслеживания предупреждений, а затем указывает свою способность участвовать в протоколе. В одном из примеров это предусматривает регистрацию на шаге 702 ее намерения участвовать в обработке отслеживания предупреждений. Как описано, в одном из примеров, регистрация осуществляется посредством команды диагностирования. Зарегистрированная гостевая операционная система указывает как хост-ЦП, так и хост-программе, что ей известно, как обрабатывать прерывание с целью отслеживания предупреждений (WTI), которое является однозначным прерыванием, служащим предупреждением для гостя о том, что он, например, вскоре потеряет доступ к совместно используемому им ресурсу (например, гостевому ЦП) и что он, например, должен предпринять определенное действие в отношении выполняемой им в данный момент диспетчеризуемой единицы. В одном из вариантов осуществления регистрация является обязательным требованием для приема WTI. Если гость не зарегистрирован для участия в средстве прерывания с целью отслеживания предупреждений, по истечении кванта времени гостя льготный период не предлагается, и ЦП исключается из режима интерпретационного выполнения.

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

Если во время интерпретационного выполнения гостевого ЦП в результате запроса 704 внутри гостевого ЦП распознается ситуация внешнего прерывания по таймеру хост-ЦП (например, по истекшему кванту времени) или приоритетного прерывания по требованию хост-программы, на шаге 706 запроса до перехода управления к хосту путем внутренней обработки в ЦП определяется, должна ли выполняться обработка прерывания с целью отслеживания предупреждений. Иными словами, путем внутренней обработки в ЦП проверяется, разрешена ли гостю обработка отслеживания предупреждений и, соответственно, определяется, что обработка отслеживания предупреждений должна быть включена в выполняемую обработку. Если обработка прерывания с целью отслеживания предупреждений не должна выполняться, на шаге 708 завершается интерпретационное выполнение гостя, и на шаге 710 управление возвращается к хост-программе. Тем не менее, если на шаге 706 запроса определено, что должна выполняться обработка прерывания с целью отслеживания предупреждений, на шаге 712 выполняется обработка, как подробнее описано далее.

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

внутреннее управление действием льготного периода средства прерывания с целью отслеживания предупреждений (например, разряд G), которое является невидимым с точки зрения архитектуры, но используется внутренней логикой ЦП,

внутреннее управление представлением прерывания с целью отслеживания предупреждений (WTI) (например, разряд Р), которое при значении, равном единице, указывает, что WTI представлено гостю, а при значении, равном нулю, указывает, что оно не представлено. Как и внутреннее управление действием льготного периода средства прерывания с целью отслеживания предупреждений, внутреннее управление представлением WTI является невидимым с точки зрения архитектуры, но используется внутренней логикой ЦП,

гостевое управление прерыванием хост-программы (например, разряд Т), который является, например, индикатором запроса вмешательства в отслеживание предупреждений в описании состояния гостевого ЦП, и

внешние прерывания разрешены, когда индикатор Е установлен на единицу. В одном из примеров индикатором Е является разряд, входящий в текущее слово состояния программы (PSW).

Как показано на фиг.8А, в одном из примеров распознается ситуация прерывания по таймеру хост-ЦП (например, истекшего кванта времени) или запрос вмешательства в отслеживание предупреждений (например, хост желает досрочно вернуть ресурсы ЦП; т.е. до окончания кванта времени). Если на шаге 800 запроса распознана ситуация прерывания по таймеру хост-ЦП, на шаге 802 запроса определяется, установлен ли управляющий индикатор действия льготного периода (например, равен ли G единице). Если G не установлен, на шаге 804 индикатор G устанавливается, например, на единицу 1, и льготный период средства прерывания с целью отслеживания предупреждений вскоре начинается. Затем на шаге 806 сохраняется текущее значение таймера хост-ЦП (сохраненное значение в данном случае называется исходным значением), и на шаге 808 таймер хост-ЦП устанавливается на льготный период отслеживания предупреждений (например, 50 микросекунд).

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

Кроме того, на шаге 814 разряд P устанавливается на единицу, что указывает, что WTI было представлено. На шаге 816 разряд Т также устанавливается на единицу с использованием функции обновления с взаимной блокировкой (он уже мог быть установлен на единицу 1, если первоначально был использован запрос вмешательства). На шаге 818 отсчет льготного периода в таймере хост-ЦП продолжает уменьшаться независимо от того, было ли представлено WTI. Затем этот процесс завершается на шаге 820. В одном из примеров указание завершения процесса является признаком того, что ЦП завершил текущую обработку средства прерывания с целью отслеживания предупреждений и возвращается к другой обработке, предписываемой текущим состоянием ЦП.

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

Если на шаге 800 запроса не распознана ситуация прерывания по таймеру хост-ЦП, распознается запрос вмешательства в отслеживание предупреждений (т.е. хост-прерывание). Иными словами, разряд Т в поле запроса вмешательства в описании состояния гостя устанавливается на 1. Соответственно, на шаге 850 запроса определяется, установлен ли индикатор G. Если он не установлен (например, равен 0), процесс продолжается на шаге 804. В этой ситуации условие Т=1 является исходной причиной запуска процесса WTI. Тем не менее, если разряд G установлен, на шаге 852 запроса определяется, установлен ли разряд Р. Если разряд Р не установлен (например, равен 0), процесс продолжается на шаге 810 в попытке представить WTI. Тем не менее, если разряд Р установлен (например, не равен 0), обнаружение условия Т=1 после начала льготного периода средства отслеживания предупреждений не дает результата, и процесс завершается на шаге 854.

Если на шаге 802 запроса определено, что разряд G установлен (например, равен 1), гостевой ЦП уже действует на протяжении льготного периода, а истечение таймера хост-ЦП указывает, что льготный период истек. Таким образом, цикл WTI был инициирован ранее, и льготный период истек. Соответственно, как показано на фиг.8Б, на шаге 860 ранее сохраненное исходное значение таймера хост-ЦП уменьшается на количество времени, фактически использованное во время льготного периода, а затем загружается в таймер хост-ЦП. На шаге 862 завершается режим интерпретационного выполнения, и на шаге 864 хосту представляется внешнее прерывание по таймеру хост-ЦП (что является формой вынужденного завершения работы гостем).

Помимо вышесказанного, анализ WTI может инициироваться посредством определенных команд, которые могут разрешать WTI для ЦП. Например, как показано на фиг.8В, сначала несколько команд, которые могут разрешать WTI для ЦП, включая, например, команду загрузки (расширенного) PSW (Load PSW (Extended)), команду последующего сохранения (Store Then) или команду системной маски (System Mask), которая может устанавливать указанный разряд в PSW, и команду регулирования нагрузки (Load Control), которая может устанавливать выбранный разряд в управляющем регистре, осуществляют мониторинг, как описано в изобретении. Например, команда, которая может разрешать прерывания, проверят разряд T на потенциальную обработку отслеживания предупреждений. Если на шаге запроса 880 определено, что Т=0, WTI отсутствует, и на шаге 884 этот процесс завершается. Однако, если Т=1, процесс продолжается на шаге 822 запроса.

На шаге 882 запроса определяется, установлен ли разряд P (например, равен 1). Если это так, этот процесс завершается на шаге 884, поскольку было ранее обнаружено разрешение. Однако, если разряд P не установлен (например, не равен 1), на шаге 886 запроса дополнительно определяется, установлен ли разряд G (например, равен 1). Если это не так, процесс продолжается на шаге 804 (фиг.8А). Однако, если на шаге 886 (фиг.8В) определено, что разряд G установлен (например, равен 1), процесс продолжается на шаге 810 запроса (на фиг.8А), на шаге 888, а затем завершается.

Дополнительные подробности обработки прерывания с целью отслеживания предупреждений описаны со ссылкой на фиг.9. Когда гостевая программа принимает прерывание с целью отслеживания предупреждений, на шаге 900 она выполняет любые функции (например, функции ОС), которые должна выполнять, чтобы, например, сделать диспетчеризуемую единицу работы повторно диспетчеризуемой. Например, гость прекращает выполнение диспетчеризуемой единицы в конкретный момент, сохраняет ее состояние и перемещает ее в другой гостевой ЦП или разрешает ее перемещение путем предоставления информации о состоянии и т.д. Гостевая операционная система на шаге 902 сообщает о завершении работы путем передачи хост-программе сигнала завершения очистки отслеживания предупреждений (что иначе называется добровольным завершением работы). Этим сигналом может являться любой механизм, который побуждает действующего гостя отказаться от остающегося кванта времени. Тем не менее, он должен быть распознан хост-программой как предусматривающая очистку часть протокола. В одном из примеров используется функция завершения очистки команды диагностирования.

Если на шаге 904 запроса гостевая программа подает сигнал завершения очистки до истечения льготного периода, на шаге 906 хост-программа запоминает, что гостевой ЦП вовремя завершил работу. Это является добровольным завершением работы. При очередном запуске гостевого ЦП на шаге 908 гостевому ЦП подтверждается своевременность подачи сигнала. В одном из примеров устанавливается PSW возобновления гость с указанием успешного кода условия (например, кода условия 0).

Если на шаге 904 запроса определено, что выполнение гостевой программы по какой-либо причине слишком задерживается, льготный период истекает в силу того, что таймер хост-ЦП уменьшил льготный период до нуля, в результате чего ЦП представляется ситуация внешнего прерывания по таймеру хост-ЦП. В этом случае ЦП распознает, что гость уже действовал в течение льготного периода, не предоставляет другой льготный период. Вместо этого выполнение гостя прекращается, и управление переходит к хост-программе в результате приема внешнего прерывания. Хост-программа распознает, что это завершение выполнения гостевого ЦП является вынужденным завершением работы гостем.

При очередном запуске гостевого ЦП гостевая операционная система может подать, хотя теперь с запозданием, сигнал завершения очистки. Хост-программа больше не ожидает приема сигнала завершения очистки. Соответственно, при очередном запуске гостевого ЦП на шаге 912 гостевому ЦП сообщается о запоздавшем сигнале. В одном из примеров для индикации запоздания используется PSW возобновления гостя, которое будет наблюдаться гостем при очередном запуске. Подаваемая с запозданием команда диагностирования иногда называется устаревшей командой диагностирования, поскольку работа была завершена не в течение льготного периода, а позднее без достаточных оснований.

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

В одном из вариантов осуществления, когда гостю не разрешены все внешние прерывания, несколько команд, которые могут разрешать внешние прерывания, осуществляют мониторинг. Когда гостю разрешены внешние прерывания, анализируется разрешение WTI. Если на этом этапе WTI разрешено, а разряд Р равен 0, WTI представляется гостевому ЦП.

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

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

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

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

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

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

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

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

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

В одном из вариантов осуществления, в которых средой является виртуальная среда, с точки зрения гостя:

1. гостевая программа выполняет установленное условие протокола средства прерывания с целью отслеживания предупреждений;

2. гостевая программа регистрируется в протоколе прерывания с целью отслеживания предупреждений;

3. гостевой ЦП принимает уведомление об отслеживании предупреждений согласно конкретной архитектуре (например, с указанием совместно используемой памяти, совместно используемого устройства ввода-вывода, прерывания);

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

5. гостевой ЦП передает управление согласно добровольному методу протокола отслеживания предупреждений;

6. при очередном запуске гостевого ЦП гостевая программа может соблюдать обратную связь согласно протоколу отслеживания предупреждений.

Кроме того, в одном из вариантов осуществления с точки зрения хоста:

А. хост-программа выполняет установленное условие протокола средства прерывания с целью отслеживания предупреждений;

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

2. хост-программа постоянно запоминает установленное состояние протокола прерывания с целью отслеживания предупреждений;

3. хост-программа указывает протокол отслеживания предупреждений установленное состояние для каждой гостевой конфигурации;

4. хост-программа блокирует протокол отслеживания предупреждений во всех незарегистрированных гостевых ЦП;

5. хост-программа готовится к распознаванию гостевого запроса регистрации отслеживания предупреждений от каждой гостевой конфигурации;

Б. хост-программа распознает запрос регистрации отслеживания предупреждений от гостя.

1. хост-программа постоянно запоминает, что гостевая конфигурация понимает протокол отслеживания предупреждений;

2. хост-программа разблокирует протокол отслеживания предупреждений для гостя;

В. во время нормальной работы гостевого ЦП Х прерывание обслуживания гостевого ЦП Х используется для повторного запрашивания соответствующего хост-ЦП X;

1. хост-программа в ЦП Y передает уведомление гостевому ЦП X;

а. ЦП Х транслирует уведомление гостевому ЦП Х путем обновления адреса совместно используемой памяти, обновления совместно используемого устройства ввода-вывода или прерывание гостевому ЦП Х согласно протоколу отслеживания предупреждений;

Г. гостевой ЦП Х прекращает работу и возвращает управление хост-ЦП X;

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

а. если завершение работы гостевого ЦП Х происходит в течение льготного периода, но не по протоколу отслеживания предупреждений, состояние обратной связи не запоминается;

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

а. если завершение работы гостевого ЦП Х происходит не в течение льготного периода и не по протоколу отслеживания предупреждений, состояние обратной связи не запоминается;

3. хост-программа в хост-ЦП Х переориентирует ЦП Х на назначение приоритетных прерываний;

Д. Если при очередном последовательном запуске гостевого ЦП Х независимо от того, какой хост-ЦП обеспечивает гостевой ЦП X, запоминается состояние обратной связи, до запуска гостевого ЦП Х устанавливается индикация обратной связи по протоколу отслеживания предупреждений.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Обмен информацией между запоминающим устройством и ЦП или канальной подсистемой осуществляется путем передачи одного байта или группы байтов за один раз. Если не оговорено иное, например, в системе 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 байта и другими шагами). При сохранении информации в запоминающем устройстве замещается содержимое местоположений только тех байтов, которые включены в указанное поле, несмотря на то, что ширина физического пути доступа к запоминающему устройству может превышать длину сохраняемого поля.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Как показано на фиг.16Б, содержащаяся в команде перехода информация для выполнения команды перехода обычно передается блоку 5058 перехода, в котором часто применяется алгоритм предсказания переходов, такой как таблица 5082 предыстории переходов (ТПП), для предсказания исхода перехода до завершения других условных операций. Целевой объект текущей команды перехода вызывается и выполняется по предположению до завершения условных операций. Когда условные операции завершены, выполненные по предположению команды перехода завершаются или отбрасываются, исходя из условной операции и предположенного исхода. Типичная команда перехода может предусматривать проверку кодов условий и переход к целевому адресу, если коды условий отвечают требованию команды перехода, при этом целевой адрес может вычисляться на основании нескольких чисел, включая, например, числа из регистровых полей или непосредственного поля команды. В блоке 5058 перехода может применяться АЛУ 5074, имеющее множество схем 5075, 5076, 5077 входных регистров и схему 5080 выходного регистра. Блок 5058 перехода, например, может поддерживать связь с общими регистрами 5059, декодировать блок 5056 диспетчеризации или другие схемы 5073.

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

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

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

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

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

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

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

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

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

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

Конкретная эмулируемая команда декодируется, и вызывается подпрограмма для выполнения функции отдельной команды. Функция эмулирующего программного обеспечения, эмулирующая функцию эмулируемого процессора, реализуется, в подпрограмме или драйвере на языке "С" или каким-либо другим способом обеспечения драйвера для конкретного аппаратного обеспечения, доступным для специалистов в данной области техники, ознакомившихся в описанием предпочтительного варианта осуществления. В различных патентах, в которых предложена эмуляция программного и аппаратного обеспечения, включая без ограничения патент 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; и многие другие, проиллюстрированы разнообразные известные способы эмуляции формата команд, структурированного для отличающейся машины, в целевой машине, доступные для специалистов в данной области техники.

На фиг.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'.

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

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

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

название год авторы номер документа
ИСПОЛЬЗОВАНИЕ СРЕДСТВА ПРЕДУПРЕЖДАЮЩЕГО ПРЕРЫВАНИЯ ПРОГРАММОЙ 2012
  • Чарлз У. Гейни Джр.
  • Джеффри Пол Кьюбала
  • Марк С. Фаррелл
  • Доналд Уилльям Шмидт
  • Джеймс Х. Малдер
  • Бернард Пирс
  • Роберт Р. Роджерс
RU2565495C2
СРЕДСТВО ПРЕДУПРЕЖДАЮЩЕГО ПРЕРЫВАНИЯ 2012
  • Марк С. Фаррелл
  • Чарлз У. Гейни Джр.
  • Джеффри Пол Кьюбала
  • Джеймс Х. Малдер
  • Бернард Пирс
  • Роберт Р. Роджерс
  • Доналд Уилльям Шмидт.
RU2577470C2
УПРАВЛЕНИЕ СКОРОСТЬЮ, С КОТОРОЙ ОБРАБАТЫВАЮТСЯ ЗАПРОСЫ НА ПРЕРЫВАНИЕ, ФОРМИРУЕМЫЕ АДАПТЕРАМИ 2010
  • Густав Зитманн, Iii
  • Дейвид Краддок
  • Томас Грегг
  • Доналд Уилльям Шмидт
  • Брентон Франсуа Белмар
  • Марк Фаррел
  • Деймиан Лео Осисек
  • Ричард Тарша
  • Джанет Истон
RU2526287C2
Связанное с выбранными архитектурными функциями администрирование обработки 2015
  • Гшвинд Михаэль Карл
  • Гейни Чарлз
RU2665243C2
КОНФИГУРАЦИЯ АРХИТЕКТУРНОГО РЕЖИМА В ВЫЧИСЛИТЕЛЬНОЙ СИСТЕМЕ 2015
  • Гшвинд Михаэль Карл
RU2664413C2
ИЗМЕРИТЕЛЬНОЕ СРЕДСТВО ДЛЯ ФУНКЦИЙ АДАПТЕРА 2010
  • Питер Кеннет Швед
  • Дейвид Краддок
  • Томас Грегг
  • Бет Гленденнинг
  • Эрик Норман Лейс
  • Стивен Гленн Уилкинс
  • Фрэнк Уилльям Брайс Джр.
RU2523194C2
ТРАНСЛЯЦИЯ АДРЕСОВ ВВОДА-ВЫВОДА В АДРЕСА ЯЧЕЕК ПАМЯТИ 2010
  • Дейвид Краддок
  • Томас Грегг
  • Дан Грейнер
  • Эрик Норман Лейс
RU2547705C2
ПРЕОБРАЗОВАНИЕ ИНИЦИИРУЕМОГО СООБЩЕНИЯМИ ПРЕРЫВАНИЯ В УВЕДОМЛЕНИЕ О ГЕНЕРИРОВАННОМ АДАПТЕРОМ ВВОДА-ВЫВОДА СОБЫТИИ 2010
  • Густав Ситтманн Iii
  • Дейвид Краддок
  • Томас Грегг
  • Марк Фаррелл
  • Джанет Истон
  • Эрик Норман Лейс
RU2546561C2
ФИЛЬТРАЦИЯ ПРОГРАММНОГО ПРЕРЫВАНИЯ В ТРАНЗАКЦИОННОМ ВЫПОЛНЕНИИ 2012
  • Дан Ф. Грейнер
  • Кристиан Якоби
  • Тимоти Дж. Слиджл
  • Марсель Митран
RU2568923C2
АКТИВАЦИЯ/ДЕАКТИВАЦИЯ АДАПТЕРОВ ВЫЧИСЛИТЕЛЬНОЙ СРЕДЫ 2010
  • Дан Грейнер
  • Чарлз Гейни
  • Дейвид Краддок
  • Антони Конески
  • Бет Гленденинг
  • Марк Фаррел
  • Томас Грегг
  • Угочукву Ньоку-Чарлз
RU2562372C2

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

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

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

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

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

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

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

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

5. Компьютерная система по п. 4, в которой льготный период преждевременно прекращает квант времени.

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

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

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

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

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

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

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

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

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

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

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

Способ приготовления мыла 1923
  • Петров Г.С.
  • Таланцев З.М.
SU2004A1
Топчак-трактор для канатной вспашки 1923
  • Берман С.Л.
SU2002A1
СПОСОБЫ ОДНОВРЕМЕННОГО ВЫПОЛНЕНИЯ НЕСКОЛЬКИХ ЗАДАЧ В МЕДИАПЛЕЕРАХ 2006
  • Лю Инин
RU2412465C2
МЕХАНИЗМ ОБРАБОТКИ ПРЕРЫВАНИЙ В КОМПЬЮТЕРНЫХ СИСТЕМАХ, ПОДДЕРЖИВАЮЩИХ ОДНОВРЕМЕННОЕ ИСПОЛНЕНИЕ МНОЖЕСТВА ПОТОКОВ 2002
  • Бобхольц Скотт
  • Мёрти Кешаврам
RU2280272C2
РЕАЛИЗАЦИЯ КОМПЬЮТЕРНОЙ МНОГОЗАДАЧНОСТИ ЧЕРЕЗ ВИРТУАЛЬНУЮ ОРГАНИЗАЦИЮ ПОТОЧНОЙ ОБРАБОТКИ 2001
  • Файнберг Мэттью А.
RU2286595C2

RU 2 563 454 C2

Авторы

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

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

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

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

Бернард Пирс

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

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

Даты

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

2012-11-08Подача