СРЕДСТВО ДЛЯ УСТАНОВКИ КЛЮЧА БЕЗ ПЕРЕВОДА В ПАССИВНОЕ СОСТОЯНИЕ
MEANS FOR KEY SETTING WITHOUT SWITCHING TO PASSIVE STATE

Предпосылки создания изобретения
Настоящее изобретение относится в целом к облегчению обработки в вычислительной среде, более точно, к облегчению обработки, связанной с установкой ключей хранения, используемых в вычислительной среде.
Ключи хранения применяются в вычислительных средах, таких как мультипроцессорные системы на основе z/Architecture, предлагаемые International Business Machines Corporation (Армонк, штат Нью-Йорк, США), для облегчения обработки в вычислительной среде. В качестве одного из примеров, ключ хранения связан с каждым блоком физической памяти (также именуемым кадром). Такая привязка ключа обеспечивает надежный механизм, который используется для разделения блоков запоминающего устройства, за счет чего программы, выполняемые с использованием одного ключа, ошибочно не сохраняются в блоках или под управлением средства управления в ключе не выбираются из блоков, имеющих отличающийся ключ. Ключ хранения также может указывать операционной системе, обращение к каким блокам и изменение каких блоков было осуществлено, что позволяет операционной системе определять, какие блоки может требоваться записать во вспомогательное запоминающее устройство.
Ключ хранения может устанавливаться (обновляться) командами, выполняемыми в вычислительной среде. Например, для манипуляций ключом хранения, доступным для множества процессоров в вычислительной среде, в системе z/Architecture используются команды установки расширенного ключа хранения (Set Storage Key Extended) и выполнения функции управления кадрами (Perform Frame Management Function).
С целью повышения производительности системы процессор может буферизовать подмножество ключей хранения в локальной (характерной для процессора) области. Тем не менее, после того как установлен ключ хранения (в результате чего необязательно изменяется фактическое значение ключа), обычно все процессоры в мультипроцессорной конфигурации должны одновременно эффективно наблюдать изменение таким образом, чтобы отбрасывать устаревшие локальные копии ключа. Для облегчения обработки выполняется операция перевода в пассивное состояние, когда инициатор команды манипуляции ключом хранения передает остальным процессорам вычислительной среды сигнал перевода в пассивное состояние. В ответ на принятый сигнал остальные процессоры переводят осуществляемую ими обработку в пассивное состояние, удаляют копии ключей из локальных кэшей и передают подтверждение. После приема подтверждения от всех процессоров, принявших сигнал перевода в пассивное состояние, инициатор устанавливает желаемое значение ключа хранения и передает остальным процессорам сигнал выхода из пассивного состояния, чтобы они могли возобновить обработку.
Краткое изложение сущности изобретения
Операция перевода в пассивное состояние, используемая при обновлении ключей хранения, отрицательно влияет на производительность системы. Соответственно, согласно одной из особенностей настоящего изобретения предложено средство, позволяющее осуществлять манипуляцию ключами хранения без перевода в пассивное состояние остальных процессоров, которые могут наблюдать ключ хранения. В таком случае уже не требуется, чтобы все процессоры одновременно эффективно наблюдали изменение.
Для преодоления недостатков известного уровня техники и достижения дополнительных преимуществ предложен способ обеспечения обработки в вычислительной среде, заявленный в пункте 1 формулы изобретения.
Также предложена мультипроцессорная система, содержащая средства, приспособленные для осуществления всех шагов заявленного способа.
Дополнительные признаки и преимущества настоящего изобретения реализуются за счет предложенной в нем методики. В изобретении подробно описаны другие его варианты осуществления и особенности, считающиеся входящими в заявленное изобретение.
Краткое описание чертежей
Одна или несколько особенностей настоящего изобретения конкретно охарактеризованы и отдельно заявлены в формуле изобретения, следующей за описанием. Перечисленные выше и другие задачи, признаки и преимущества изобретения станут ясны из следующего далее подробного описания в сочетании с сопровождающими его чертежами, на которых:
на фиг. 1А проиллюстрирован один из вариантов осуществления вычислительной среды, в которой содержится и используется одна или несколько особенностей настоящего изобретения,
на фиг. 1Б - один из примеров процессора показанной на фиг. 1А вычислительной среды согласно одной из особенностей настоящего изобретения,
на фиг. 1В - один из примеров логически разделенной системы, в которой может содержаться и использоваться одна или несколько особенностей настоящего изобретения,
на фиг. 2 - один из вариантов осуществления дополнительных подробностей показанного на фиг. 1А или 1Б контроллера согласно одной из особенностей настоящего изобретения,
на фиг. 3 - один из вариантов осуществления хост-компьютера, способного эмулировать другой компьютер, согласно одной из особенностей настоящего изобретения,
на фиг. 4 - один из примеров различных компонентов ключа хранения согласно одной из особенностей настоящего изобретения,
на фиг. 5 - один из наглядных примеров влияния операции перевода в пассивное состояние на процессор вычислительной среды,
на фиг. 6 - один из наглядных примеров влияния манипуляции ключом хранения без перевода в пассивное состояние какого-либо из процессоров согласно одной из особенностей настоящего изобретения,
на фиг. 7А - один из вариантов осуществления одного из форматов команды установки расширенного ключа хранения (SSKE), используемой согласно одной из особенностей настоящего изобретения,
3
на фиг. 7Б - один из вариантов осуществления полей, связанных с операндом М показанной на фиг. 7А команды SSKE согласно одной из особенностей настоящего изобретения,
на фиг. 8 - один из вариантов осуществления логики, связанной с командой SSKE без перевода в пассивное состояние, согласно одной из особенностей настоящего изобретения,
на фиг. 9А-9Б - один из вариантов осуществления логики управления обработкой, зависящей от обновления ключа хранения без перевода в пассивное состояние, согласно одной из особенностей настоящего изобретения,
на фиг. 10 - один из вариантов осуществления компьютерного программного продукта, содержащего одну или несколько особенностей настоящего изобретения,
на фиг. 11 - один из вариантов осуществления хост-компьютерной системы, в которой содержится и используется одна или несколько особенностей настоящего изобретения,
на фиг. 12 - один из дополнительных примеров компьютерной системы, в которой содержится и используется одна или несколько особенностей настоящего изобретения,
на фиг. 13 - другой пример компьютерной системы, содержащей компьютерную сеть, в которой содержится и используется одна или несколько особенностей настоящего изобретения,
на фиг.14 - один из вариантов осуществления различных элементов компьютерной системы, в которой содержится и используется одна или несколько особенностей настоящего изобретения,
на фиг.15А - один из вариантов осуществления блока выполнения показанной на фиг.14 компьютерной системы, в которой содержится и используется одна или несколько особенностей настоящего изобретения,
на фиг.15Б - один из вариантов осуществления блока перехода показанной на фиг.14 компьютерной системы, в которой содержится и используется одна или несколько особенностей настоящего изобретения,
на фиг.15В - один из вариантов осуществления блока загрузки/сохранения показанной на фиг.14 компьютерной системы, в которой содержится и используется одна или несколько особенностей настоящего изобретения, и
на фиг.16 - один из вариантов осуществления эмулируемой хост-компьютерной системы, в которой содержится и используется одна или несколько особенностей настоящего изобретения.
Подробное описание
Согласно одной из особенностей настоящего изобретения предложено средство установки ключа без перевода в пассивное состояние, которое позволяет осуществлять манипуляцию ключами хранения без перевода в пассивное состояние операций других процессоров мультипроцессорной системы. С помощью этого средства ключ хранения, доступный для множества процессоров мультипроцессорной системы, обновляется без перевода в пассивное состояние операций множества процессоров. Поскольку ключ хранения обновляется без перевода в пассивное состояние остальных операций, процессор может наблюдать ключ хранения как имеющий одно значение в начале операции и второе значение в конце операции. Это достигается согласно одной из особенностей настоящего изобретения, в которой предложен механизм, позволяющий продолжать операцию во избежание неустранимой исключительной ситуации.
Ключ хранения означает, например, управляющую структуру, содержащую различные поля, или любое свойство или ресурс, используемый для защиты запоминающего устройства. Используемые в описании термин запоминающее устройство означает память компьютерной системы, такую как центральная или основная память и(или) кэш-память. Перевод в пассивное состояние означает, например, средство последовательного упорядочения, которое может осуществляться, чтобы гарантировать, что обновления ресурса в масштабе всей конфигурации являются непосредственно видимыми для ЦП, входящих в конфигурацию. Операция перевода в пассивное состояние, инициированная одним ЦП, приводит к следующим событиям в других ЦП, входящих в конфигурацию: завершению любой команды или единицы действия, выполняемой ЦП; отбрасыванию находящихся в локальных кэшах обновляющихся копий ресурса в масштабе всей конфигурации и задержке возобновления выполнения команды, пока обновление ресурса в масштабе всей конфигурации не будет видимым для ЦП.
В одном из вариантов осуществления средство без перевода в пассивное состояние реализовано для команд, которые ранее требовали перевода в пассивное состояние. Например, команды установки расширенного ключа хранения (SSKE) и выполнения функции управления кадрами (PFMF), предлагаемые International Business Machines Corporation, традиционно требовали перевода в пассивное состояние для обновления ключа хранения. Тем не менее, согласно одной из особенностей настоящего изобретения эти и, возможно, другие команды могут быть избирательно реализованы без перевода в пассивное состояние. Согласно одной из особенностей настоящего изобретения каждая команда может выполняться в обоих режимах обработки (с переводом в пассивное состояние и без перевода в пассивное состояние), при этом конкретный режим для использования для заданного выполнения выбирается путем установки индикатора в команде.
Далее со ссылкой на фиг.1А описан один из вариантов осуществления вычислительной среды, в которой содержится и используется одна или несколько особенностей настоящего изобретения. В качестве одного из примеров, вычислительной средой является мультипроцессорная система, такая как симметричная мультипроцессорная система (SMP) на основе z/Architecture, предлагаемая International Business Machines Corporation (Армонк, штат Нью-Йорк, США). В качестве одного из частных примеров, системой является сервер System z, предлагаемый International Business Machines Corporation. Система z/Architecture описана в публикации IBM №SA22-7832-07 под названием "z/Architecture-Principles of Operation" (февраль 2009 г.) IBM, z/Architecture и System z являются зарегистрированными товарными знаками International Business Machines Corporation (Армонк, штат Нью-Йорк, США). Другие названия, используемые в заявке, могут являться зарегистрированными товарными знаками, товарными знаками или названиями продуктов International Business Machines Corporation или других компаний.
В качестве одного из примеров в мультипроцессорную систему 100 входит множество процессоров 110, контроллер 120 памяти и центральная память 130. Процессоры 110 связаны друг с другом и с центральной памятью 130 посредством одной или нескольких шин 115 и контроллера 120 памяти. Как показано на фиг.1Б, каждый процессор содержит, например, центральный процессор (ЦП) 140, который может быть связан с локальным кэшем 142 посредством, например, одной или нескольких шин или других соединений 144.
В другом варианте осуществления система разделена на один или несколько разделов или зон. Например, системой является логически разделенный сервер System z, предлагаемый International Business Machines
Corporation. В этом примере, как показано на фиг.1В, сервер 150 содержит, например, один или несколько разделов или зон 152 (например, логических разделов LP0-LP3), гипервизор 156 (например, диспетчер логических разделов) и один или несколько центральных процессоров 158 (например, ЦП 0-ЦП 3). Хотя показаны четыре раздела и четыре центральных процессора, система может содержать большее или меньшее число разделов и(или) центральных процессоров.
Каждый логический раздел 152 способен функционировать как отдельная система. Иными словами, каждый логический раздел может независимо возвращаться в исходное состояние, если желательно, в него может осуществляться начальная загрузка операционной системы, и он может оперировать различными программами. Операционная система или прикладная программа, выполняемая в логическом разделе, выглядит как имеющая доступ ко всей системе в целом, но, в действительности, для нее доступна только ее часть. За счет сочетания аппаратного обеспечения и лицензионного внутреннего кода (также называемого микрокодом и милликодом) предотвращается взаимное влияние программы в одном логическом разделе и программы в другом логическом разделе. Это позволяет нескольким различным логическим разделам использовать один или множество физических процессоров в режиме квантования времени. В этом частности примере каждый логический раздел имеет резидентную операционную систему (ОС) 160, которая может различаться в одном или нескольких логических разделах. В одном из вариантов осуществления операционная системой 160 является операционной системой z/OS, предлагаемой International Business Machines Corporation (Армонк, штат Нью-Йорк, США). z/OS является зарегистрированным товарным знаком International Business Machines Corporation (Армонк, штат Нью-Йорк, США).
Каждый логический раздел может содержать один или несколько центральных процессоров. Центральные процессоры 158 представляют собой физические процессорные ресурсы, которые распределены среди логических разделов. Например, логический раздел 152 содержит один или несколько логических процессоров, каждый из которых целиком или частично отображает физический процессорный ресурс, выделенный разделу.
Логическими разделами 152 управляет гипервизор 156, реализованный посредством микрокода, выполняемого процессорами 158. Логические разделы 152 и гипервизор 156 содержат одну или несколько программ, которые постоянно хранятся в соответствующих частях центральной памяти, связанной с центральными процессорами. Одним из примеров гипервизора 156 является администратор процессорных ресурсов/систем (Processor Resource/Systems Manager) (PR/SM), предлагаемый International Business Machines Corporation (Армонк, штат Нью-Йорк, США).
В одном из вариантов осуществления сервер связан с контроллером 170 памяти, который содержит централизованную логику, играющую роль посредника между различными процессорами, генерирующими запросы. Например, когда контроллер 170 принимает запрос, он определяет, что его инициатором является запросчик, а остальные процессоры являются получателями; осуществляет широковещательную передачу сообщений; и иным способом обрабатывает запросы. Дополнительные подробности, касающиеся контроллера памяти (например, контроллера 120 памяти или контроллера 170 памяти), описаны со ссылкой на фиг.2.
На фиг.2 проиллюстрирован один из примеров контроллера 200, связанного с множеством процессоров (ЦП) 201. В этом примере показаны два центральных процессора. Тем не менее, подразумевается, что с контроллером 200 может быть связано более двух процессоров. Контроллер 200 содержит различные средства управления, одним из которых является, например, средство 202 управления последовательным упорядочением системы. Средство управления последовательным упорядочением системы используется, чтобы обеспечивать последовательное упорядочение операций, таких как операции обновления, которые должны последовательно упорядочиваться, таким образом, чтобы в вычислительной среде одновременно выполнялась только одна такая операция (или ограниченное их число). Оно также контролирует последовательность событий такой операции и входит в механизм, в котором реализована функция перевода в пассивное состояние.
Контроллер 200 связан с каждым центральным процессором посредством различных интерфейсов. Например, для передачи контроллеру команд "управления", указывающих действие, которое должно быть осуществлено, и для передачи команд "уточненного состояния", содержащих информацию от контроллера, в центральном процессоре лицензионным внутренним кодом используется интерфейс 204. Другим интерфейсом является шина 206 реагирования, которая используется для возврата от контроллера информации команд "уточненного состояния". Шина реагирования также используется для сообщения порядка подчинения команд "управления" и может быть задана на основании множества ресурсов в контроллере, включая средство управления последовательным упорядочением системы. Центральный процессор может использовать этот интерфейс для уточнения состояния средства управления последовательным упорядочением системы в контроллере 200.
Одним из дополнительных интерфейсов является интерфейс 208, который используется контроллером для передачи команд каждому процессору. Он также может управляться из множества ресурсов в контроллере, включая средство 202 управления последовательным упорядочением системы. Еще одним из дополнительных интерфейсов является интерфейс 210 для передачи сигналов средству 212 управления кэшем центрального процессора 201. Средство 212 управления кэшем обрабатывает команды в ответ на сигналы. В одном из примеров средство 212 управление кэшем обрабатывают команды, которые влияют на буферы, такие как буферы 213 быстрого преобразования адреса (TLB).
Помимо средства 212 управления кэшем процессор 201 содержит различные другие средства управления, включая, например, средство 220 управления прерываниями и средство 222 управления выполнением. В ответ на конкретные события средство 220 управления прерываниями инициирует отложенное внутреннее прерывание в ЦП, который, в свою очередь, инициирует приостановку обработки команды управляющей программы средством 222 управления выполнением в очередной момент прерывания. Согласно одной из особенностей настоящего изобретения средство 220 управления прерываниями содержит флаг 223, используемый, чтобы определять, должна ли быть заблокирована исключительная ситуация при нарушении защиты, как описано далее.
В ответ на прерывание средство 222 управления выполнением вызывает подпрограмму лицензионного внутреннего кода, чтобы установить защелку 224 разрешения широковещательной передачи, позволяющую средству 212 управления кэшем обрабатывать ожидающие команды.
Центральный процессор 201 также содержит защелку 226 перевода ЦП в пассивное состояние, которая указывает, переведен ли центральный процессор в пассивное состояние.
Перечисленные вычислительные среды служат лишь примерами. Возможно множество разновидностей, не выходящих за пределы существа настоящего изобретения. Например, среда необязательно должна иметь своей основой систему z/Architecture, и вместо этого ее основой могут являться другие архитектуры, предлагаемые компаниями Intel, Sun Microsystems, а также другими. Кроме того, среда может содержать эмулятор (например, программные или другие механизмы эмуляции), в котором эмулируется конкретная архитектура или ее сокращенная версия. В такой среде посредством одной или нескольких эмулирующих функций эмулятора может быть реализована одна или несколько особенностей настоящего изобретения, несмотря на то, что компьютер, в котором выполняется эмулятор, может иметь архитектуру, отличающуюся от эмулируемых возможностей. В качестве одного из примеров в режиме эмуляции декодируется конкретная эмулируемая команда или операция и создается соответствующая эмулирующая функция с целью реализации отдельной команды или операции.
Дополнительные подробности эмулирующей среды описаны со ссылкой на фиг.3. В качестве одного из примеров, хост-компьютер 300 способе эмулировать другую архитектуру и(или) способности к обработке другого компьютера. Например, хост-компьютер 300 основан на архитектуре Intel; архитектуре с сокращенным набором команд, такой как PowerPC; наращиваемой архитектуре процессора (SPARC), предлагаемой компанией Sun Microsystems; или другой архитектуре, и способен эмулировать систему IBM z/Architecture или другую архитектуру IBM или другой объект.
Хост-компьютер 300 содержит, например, память 302 для хранения команд и данных; блок 304 выборки команд для выборки команд из памяти 302 и необязательно локальной буферизации выбранных команд; блок 306 декодирования команд для приема команд от блока 304 выборки команд и определения типа команд, которые были выбраны; и блок 308 выполнения команд для выполнения команд. Выполнение может предусматривать загрузку данных из памяти 302 в регистр; сохранение данных из регистра в памяти; или выполнение арифметической или логической операции какого-либо типа, определяемой блоком декодирования.
В одном из примеров каждый описанный выше блок реализован посредством программного обеспечения. Например, операции, выполняемые блоками, реализованы в виде одной или нескольких подпрограмм в программном обеспечении эмулятора. В другом примере одна или несколько операций реализованы аппаратно-программными, аппаратными, программными средствами или в виде какого-либо их сочетания.
Кроме того, хотя фиг.3 описана применительно к эмуляции, проиллюстрированная на фиг.3 среда необязательно должна являться эмулирующей средой. В другом примере команды выполняются в собственной среде, а операции реализованы аппаратными, аппаратно-программными, программными средствами или в виде какого-либо их сочетания.
Как описано выше, в одном из вариантов осуществления с каждым блоком памяти, таким как каждый 4-килобайтовый блок реальной или физической памяти, связан ключ хранения. Ключ хранения обеспечивает надежный механизм, который используется для разделения блоков запоминающего устройства, за счет чего программы, выполняемые с использованием одного ключа, случайно не сохраняются в блоках, имеющих отличающийся ключ. Кроме того, ключ хранения указывает операционной системе, обращение к каким блокам и изменение каких блоков было осуществлено, что позволяет операционной системе определять, какие блоки может требоваться записать во вспомогательное запоминающее устройство.
Один из примеров ключа хранения описан со ссылкой на фиг.4. Ключ 400 хранения содержит, например, компонент 402 управления доступом (АСС), компонент (F) 404 защиты от выборки, компонент (R) 406 обращения и компонент (С) 408 изменения, каждый из которых описан далее.
Разряды 402 управления доступом (АСС) (например, разряды 0-3): если обращение подлежит управляемой ключом защите, разряды управления доступом согласуются с ключом доступа (например, слова состояния программы или из операнда команды) при сохранении информации или при выборке информации из местоположения, которое защищено от выборки.
Разряд (F) 404 защиты от выборки (например, разряд 4): если обращение подлежит управляемой ключом защите, разряд защиты от выборки регулирует, применима ли управляемая ключом защита к обращениям вызываемого типа; 0 указывает, что контролируются только обращения хранимого типа и разрешена выборка с любым ключом доступа; 1 указывает, что управляемая ключом защита применима как к выборке, так и к сохранению. Между выборкой команд и операндов не делается различие.
Разряд (R) 406 обращения (например, разряд 5): каждый раз при обращении к какому-либо местоположению в соответствующем блоке памяти с целью сохранения или выборки информации обычно устанавливается разряд обращения 1.
Разряд (С) 408 изменения (например, разряд б): каждый раз при сохранении информации в каком-либо местоположении в соответствующем блоке памяти устанавливается разряд изменения 1.
Ключи хранения не хранятся в запоминающем устройстве с обращением по адресу. Так, в одном из примеров для установки ключа хранения используются команды. Одной такой командой является команда установки расширенного ключа хранения (SSKE), один из вариантов осуществления которой описан в публикации IBM №SA22-7832-07 под названием "z/Architecture-Principles of Operation" (февраль 2009 г.). В этой команде установлены все компоненты ключа хранения даже, если при обновлении одного или нескольких из компонентов их значение становится таким же, как ранее. Кроме того, согласно этой команде требуется последовательное упорядочение системы, чтобы обеспечить возможность наблюдения изменений ключа всеми ЦП. При последовательном упорядочении используются операции перевода в пассивное состояние.
В одном из дополнительных вариантов осуществления для установки ключа хранения может использоваться команда условной SSKE. Эта команда позволяет условно обходить обновление, например, компонента обращения, компонента изменения или того и другого, когда позволяют обстоятельства. Иными словами, программное обеспечение (например, программа операционной системы) может указывать, что не требуется обновлять один или оба этих компонента. За счет этого обеспечивается гибкость реализации ЦП, когда ключ доступа и управление защитой от выборки, устанавливаемые командой SSKE, согласуются с теми, которые в данный момент содержатся в обновляемом ключе. В этой команде избирательно используются операции перевода в пассивное состояние в зависимости от устанавливаемых полей. Тем не менее, существует множество случаев, в которых программному обеспечению требуется изменить управление доступом и управление защитой от выборки ключа хранения, и, соответственно, команда условной SSKE не может использоваться.
Далее со ссылкой на фиг.5 рассмотрен один из примеров обработки, связанной с командой установки расширенного ключа хранения с использованием операции перевода в пассивное состояние. Как показано в этом частном примере, предусмотрено четыре центральных процессора ЦП 0-ЦП 3. ЦП 0 выполняет операцию 500 SSKE. Так, на шаге 1 он инициирует операцию перевода в пассивное состояние всех остальных центральных процессоров. После завершению любых текущих единиц действия остальные ЦП из конфигурации подтверждают прием команды перевода в пассивное состояние (например, на шагах 2а, 2b, 2с). После подтверждения каждый ЦП удаляет любые копии ключей из локальных кэшей. ЦП, за исключением ЦП 0, способны продолжать выполнение операций, для которых не требуется доступ к блоку, затронутому командой SSKE (шаги 3а и 3b). Тем не менее, если ЦП требуется доступ к тому же блоку, для которого устанавливается ключ, происходит задержка 500 следующей операции.
Выполнение команды SSKE задерживается (шаг 4), пока все ЦП не подтвердят прием команды перевода в пассивное состояние, и в этот момент может быть установлен ключ хранения для блока (шаг 5). Затем ЦП, выполняющий команду SSKE, передает другим ЦП сигнал перевода в пассивное состояние (шаг 6). Для ЦП 2, которому требуется доступ к тому же блоку, для которого устанавливается ключ, последующая операция задерживается (шаг 7), пока не будет передан сигнал выхода из пассивного состояния.
По подсчетам эта операция перевода в пассивное состояние вызывает существенную задержку в крупной мультипроцессорной конфигурации. Соответственно, согласно одной из особенностей настоящего изобретения, предусмотрена операция SSKE, не вызывающая перевода в пассивное состояние. Она проиллюстрирована на фиг.6. Согласно этой иллюстрации предполагаются следующие условия.
А, В и С являются возрастающими ячейками памяти в одном 4-килобайтовом блоке. Ключом для блока в этом примере изначально является любая величина, кроме 1.
Хотя ЦП-получателям не передается широковещательный сигнал перевода в пассивное состояние, ЦП-инициатор все же передает ЦП-получателям сигналы взаимного запрета (XI), чтобы инициировать удаление ими любых копий ключа из кэша.
3
Описанное далее новое управление (шаг 1) SSKE обеспечивает операцию без перевода в пассивное состояние. Если разряд является нулевым или операнд М не закодирован, выполняется исходная операция перевода в пассивное состояние.
Установка ключа происходит согласно существующим правилам. После того как ЦП 0 устанавливает ключ и осуществляет передачу на шаге 600 остальным ЦП сигналам взаимного запрета, ЦП 1 может наблюдать новый ключ в общем регистре 3 (шаг 2) и наблюдать разряд изменения, установленный посредством команды перемещения символа большой длины (Move Character Long, (MVCL)), которую одновременно выполняет ЦП 2.
Проверка всех ключей единицы действия осуществляется в начале операции. При последующих доступах к единице действия используется изначально наблюдаемый ключ (шаг 3). Если допустить, что ключ слова состояния программы (PSW) для ЦП 2 изначально соответствовал ключу для блока, содержащего ячейку А, выполнение команды MVCL продолжится даже после того, как ЦП 0 изменит ключ.
Хотя ЦП 3 может наблюдать новый ключ в общем регистре 5, результаты, загруженные в общий регистр 7 и 8 (шаг 4), могут содержать старые/старые, старые/новые, новые/старые или новые/новые данные, соответственно, в зависимости от хода выполнения команды MVCL и времени осуществления загрузки.
Согласно одной из особенностей настоящего изобретения во время выполнения команды SSKE определяется, должно ли это конкретное выполнение команды SSKE вызывать перевод в пассивное состояние. Это делается путем установки индикатора в команде и с учетом совместимости с более ранними конфигурациями.
3
1
2
Один из вариантов осуществления формата команды 700 команды установки расширенного ключа хранения (SSKE) без перевода в пассивное состояние описан со ссылкой на фиг.7А. В этом примере команда имеет формат RRF, обозначающий межрегистровую операцию, содержит поле расширенного кода операции и дополнительное поле R, поле М или то и другое. Команда SSKE 700 без перевода в пассивное состояние содержит, например, код 702 операции, обозначающий команду установки расширенного ключа хранения (например, 'В22В'); операнд 704 М, используемый программой (например, операционной системой), чтобы определять, например, должна ли эта операция SSKE вызывать перевод в пассивное состояние; указание 706 регистра (R) для выбора регистра, в котором содержатся значения для установки в ключе хранения; и указание 708 регистра (R) для выбора регистра, в котором содержится адрес ключа хранения для установки.
3
3
Дополнительные подробности, касающиеся операнда М, описаны со ссылкой на фиг.7Б. В одном из примеров операнд М 704 содержит управляющий разряд (NQ) 710 (например, разряд 0) без перевода в пассивное состояние, который определяет, должна ли осуществляться операция перевода в пассивное состояние; маску (MR) 712 обновления разряда обращения (например, разряда 1), которая определяет, могут ли быть обойдены обновления разряда обращения в ключе хранения; маску (МС) 714 обновления разряда изменения (например, разряда 2), которая определяет, могут ли быть обойдены обновления разряда изменения в ключе хранения; и управляющий разряд (MB) 716 для управления множеством блоков (например, разряд 3), который определяет, могут ли быть установлены ключи хранения для множества 4-килобайтовых блоков запоминающего устройства.
Если для управляющего разряда без перевода в пассивное состояние установлено, например, значение 1, операция перевода в пассивное состояние команды SSKE не выполняется. Это более подробно описано со ссылкой на фиг.8. Сначала на шаге 800 выполняется милликод команды SSKE (например, вертикальный микрокод, выполняемый процессором), и на шаге 802 запроса (INQUIRY) определяется, действует ли управляющий разряд без перевода в пассивное состояние в команде SSKE. Если он не действует, т.е. должна быть выполнена операция перевода в пассивное состояние команды SSKE, на шаге 804 всем процессорам системы передается широковещательная команда удаления ключей с целью перевода обработки в пассивное состояние.
После этого процессор, инициирующий команду SSKE, ожидает на шаге 806, пока все процессоры, которым была передана команда удаления, не ответят, что они достигли момента перевода в пассивное состояние. В ответ на подтверждение на шаге 806 того, что все процессоры переведены в пассивное состояние, инициирующий процессор изменяет ключ хранения. Затем на шаге 810 он передает широковещательную команду выхода из пассивного состояния, позволяющую процессорам возобновить обработку. После этого на шаге 812 выполнение команды завершается.
Если на шаге 802 запроса определено, что управляющий разряд без перевода в пассивное состояние действует, т.е. перевод в пассивное состояние должен быть обойден, не применяется широковещательная команда удаления ключей, ожидание перевода процессоров в пассивное состояние и выход из пассивного состояния. Вместо этого просто изменяется ключ хранения, а в одном из вариантов осуществления, остальным ЦП на шаге 820 может передаваться сигнал взаимного запрета (XI), чтобы они удалили из локальных кэшей любые копии ключа. Этот обход операции перевода в пассивное состояние не зависит от изменяемых полей ключа хранения. Единственным разрядом, управляющим этим обходом, является значение поля NQ (при условии поддержки режима без перевода в пассивное состояние). Когда определяется, должен ли быть обойден перевод в пассивное состояние, для средства без перевода в пассивное состояние не проверяются поля ключа хранения, которые должны быть изменены, и(или) их значения.
Далее будут описаны дополнительные подробности, касающиеся выполнения команды SSKE, включая команду SSKE без перевода в пассивное состояние согласно одной из особенностей настоящего изобретения. При этом также будут описаны подробности, касающиеся традиционного средства условной SSKE, а также традиционного средства усовершенствованного DAT для обеспечения завершенности команды SSKE. В результате выполнения команды SSKE ключ хранения для одного или нескольких 4-килобайтовых блоков заменяется значением в регистре первого операнда команды.
3
2
1
Когда средство условной SSKE установлено, в ходе выполнения могут быть обойдены некоторые функции операции установки ключа. Когда средство условной SSKE не установлено или когда средство условной SSKE установлено и разряды MR и МС поля М в обоих случаях имеют нулевое значение, содержимое ключа хранения для 4-килобайтового блока, по адресу которого обращается общий регистр R, заменяется разрядами из общего регистра R. Выполнение команды завершается без изменения кода условия.
3
2
1
1
1
Когда средство условной SSKE установлено и один или оба разряда MR и МС поля М имеют значение, равное единице, разряды управления доступом, содержимое разряда защиты от выборки и необязательно разряда обращения и разряда изменения ключа хранения, по адресу которого обращается общий регистр R, сравнивается с соответствующими разрядами общего регистра R. Если сравниваемые разряды являются одинаковыми, в ключ не вносятся изменения; в противном случае выбранные разряды ключа заменяются соответствующими разрядами общего регистра R. До любого изменения ключ хранения вводится в общий регистр R, а результат указывается посредством кода условия.
3
Когда средство усовершенствованного DAT установлено, описанные выше операции могут повторяться для ключей хранения множества 4-килобайтовых блоков в одном и том же 1-мегабайтовом блоке под управлением разряда управлением множеством блоков поля М.
3
3
3
Когда средство установки ключа без перевода в пассивное состояние не установлено, не учитывается разряд 0 поля М. Когда средство условной SSKE не установлено, не учитываются двоичные разряды 1 и 2 поля М. Когда средство усовершенствованного DAT не установлено, не учитывается двоичный разряд 3 поля М.
Когда средство условной SSKE установлено, обработка происходит следующим образом.
3
2
1
1. Когда оба разряда MR и МС, т.е. разряды 1 и 2 поля М являются нулевыми, выполнение команды завершается, как если бы средство условной SSKE не было установлено. Содержимое ключа хранения для 4-килобайтового блока, по адресу которого обращается общий регистр R, заменятся разрядами из общего регистра R, и выполнение команды завершается без изменения кода условия.
2. Когда один или оба разряда MR и МС имеют значение, равное единице, обработка происходит следующим образом.
2
1
1
а. До любого изменения содержимое ключа хранения для 4-килобайтового блока, по адресу которого обращается общий регистр R, помещается в двоичные разряды 48-54 общего регистра R, а разряду 55 общего регистра R присваивается нулевое значение. Разряды 0-47 и 56-63 регистра остаются без изменения.
1
1
Если при выборке ключа хранения обнаружен недействительный код проверки блоков (СВС), то (а) весь ключ хранения для 4-килобайтового блока заменяется разрядами 56-62 общего регистра R, (б) содержимое двоичных разрядов 48-55 общего регистра R является непредсказуемым, и (в) выполнение команды завершается путем установки кода условия 3.
1
1
б. Разряды управления доступом и разряд защиты от выборки ключа хранения для указанного 4-килобайтового блока сравниваются с соответствующими полями в разрядах 56-60 общего регистра R. Если соответствующие поля являются неодинаковыми, весь ключ хранения для 4-килобайтового блока заменятся разрядами из общего регистра R и выполнение команды завершается путем установки кода условия 1.
1
Когда разряды управления доступом и защиты от выборки в ключе хранения являются такими же, как соответствующие разряды в общем регистре R, обработка продолжается, как описано далее.
в. Когда оба разряда MR и МС имеют значение, равное единице, выполнение команды завершается путем установки кода условия 0. В этом случае ключ хранения остается без изменения.
1
г. Когда разряд MR имеет нулевое значение, а разряд МС имеет значение, равное единице, разряд обращения ключа хранения для указанного 4-килобайтового блока сравнивается с разрядом 61 общего регистра R. Если разряды являются одинаковыми, выполнение команды завершается путем установки кода условия 0. В этом случае ключ хранения остается без изменения.
1
1
Если разряды являются неодинаковыми, то (а) весь ключ хранения для указанного 4-килобайтового блока заменяется разрядами общего регистра R и выполнение команды завершается путем установки кода условия 1; или (б) разряд обращения ключа хранения заменяется разрядом 61 общего регистра R, разряд изменения ключа является непредсказуемым и выполнение команды завершается путем установки кода условия 2. Невозможно предсказать, установлен ли код условия 1 или 2.
1
д. Когда разряд МС имеет нулевое значение, а разряд MR имеет значение, равное единице, разряд изменения ключа хранения для указанного 4-килобайтового блока сравнивается с разрядом 62 общего регистра R. Если разряды являются одинаковыми, выполнение команды завершается путем установки кода условия 0. В этом случае ключ хранения остается без изменения, за исключением того, что разряд обращения является непредсказуемым.
1
1
Если разряды являются неодинаковыми, то (а) весь ключ хранения для указанного 4-килобайтового блока заменяется разрядами общего регистра R и выполнение команды завершается путем установки кода условия 1; или (б) разряд изменения ключа хранения заменяется разрядом 62 общего регистра R, разряд обращения ключа является непредсказуемым и выполнение команды завершается путем установки кода условия 2. Невозможно предсказать, установлен ли код условия 1 или 2.
2
2
Когда средство усовершенствованного DAT не установлено или когда оно установлено, но разряд управления множеством блоков имеет нулевое значение, в общем регистре R содержится действительный адрес. Когда средство усовершенствованного DAT установлено, а разряд управления множеством блоков имеет значение, равное единице, в общем регистре R содержится абсолютный адрес.
2
2
2
В режиме 24-разрядной адресации разряды 40-51 общего регистра R указывают 4-килобайтовый блок в реальной или физической памяти, а разряды 0-39 и 52-63 регистра не учитываются. В режиме 31-разрядной адресации разряды 33-51 общего регистра R указывают 4-килобайтовый блок в реальной или физической памяти, а разряды 0-32 и 52-63 регистра не учитываются. В режиме 64-разрядной адресации разряды 0-51 общего регистра R указывают 4-килобайтовый блок в реальной или физической памяти, а разряды 52-63 регистра не учитываются.
Поскольку адрес, указывающий блок запоминающего устройства, является действительным или абсолютным адресом, к нему неприменимо динамическое преобразование адреса. К обращению к ключу хранения неприменима исключительная ситуация при нарушении защиты.
1
Новое семиразрядное значение ключа хранения или его выбранные разряды выводятся из двоичных разрядов 56-62 общего регистра R. Содержимое двоичных разрядов 0-55 и 63 регистра не учитываются. Когда средство условной SSKE установлено и один или оба разряда MR и МС имеют значение, равное единице, в двоичном разряде 63 должен содержаться ноль; в противном случае работа программы может оказаться несовместимой в будущем.
До начала операции и снова после ее завершения выполняется функция последовательного упорядочения и синхронизации контрольных точек, за исключением того, что невозможно предсказать, выполняется ли функция последовательного упорядочения и синхронизации контрольных точек после завершения операции, когда средство условной SSKE установлено, и результирующим кодом условия является 0.
Когда средство установки ключа без перевода в пассивное состояние не установлено или когда средство установлено, а управляющий разряд (NQ) управления без перевода в пассивное состояние имеет нулевое значение, применяется следующая процедура.
Выполняется операция перевода в пассивное состояние.
В случае любого обращения, осуществляемого со стороны ЦП или канальной программы к указанному 4-килобайтовому блоку до или после установки ключа посредством этой команды, соответствующее присвоение разрядам обращения и изменения значения, равного единице, в ключе хранения для этого блока также осуществляется соответственно до или после выполнения этой команды.
Когда средство установки ключа без перевода в пассивное состояние установлено, а разряд NQ имеет значение, равное единице, операция перевода в пассивное состояние не выполняется.
Обращения к ключу хранения с целью выполнения операции установки ключа без перевода в пассивное состояние (и других операций) обрабатываются следующим образом.
1. Всякий раз, когда осуществляется обращение к запоминающему устройству и к такому обращению применима управляемая ключом защита, одновременно проверяются четыре разряда управления доступом и разряд защиты от выборки, соответствующий ячейке запоминающего устройства. Проверка разрядов управления доступом и разряда защиты от выборки происходит одновременно с обращением к ячейке запоминающего устройства, за исключением того, что на операцию установки ключа без перевода в пассивное состояние, выполняемую для ячейки запоминающего устройства одним ЦП, распространяется следующее.
Проверка разрядов управления доступом и разряда защиты от выборки для ячейки запоминающего устройства любым ЦП может предшествовать обращению к ячейке запоминающего устройства. Когда проверка разрядов управления доступом и разряда защиты от выборки предшествует обращению к запоминающему устройству, она происходит самое ранее после последней операции последовательного упорядочения в ЦП и самое раннее после последней операции установки ключа с переводом в пассивное состояние для той же ячейки запоминающего устройства в любом ЦП.
Когда результатом единицы действия или выполнения команды в любом другом ЦП является множество доступов тому же 4-килобайтовому блоку, что и при операции установки ключа, другой ЦП проверяет разряды управления доступом и разряд защиты от выборки только применительно к первому обращению к блоку. Другой ЦП необязательно проверяет, осуществлялся ли впоследствии доступ к разрядам управления доступом и разряду защиты от выборки в блоке посредством той же единицы действия.
2. Когда сохранение осуществляется в ЦП, для разряда изменения в соответствующем ключе хранения устанавливается значение, равное единице, одновременно с выполнением обращения к запоминающему устройству с точки зрения самого ЦП. Когда сохранение осуществляется в ЦП или канальной программе, для разряда изменения в соответствующем ключе хранения устанавливается значение, равное единице, до или после выполнения обращения к запоминающему устройству с точки зрения других (если сохранение осуществлялось в ЦП) или всех (если сохранение осуществлялось в канальной программе) ЦП. С точки зрения других или всех ЦП разряд изменения устанавливается самое ранее (1) после последней функции последовательного упорядочения, ранее выполненной в канальной программе ЦП, осуществляющей сохранение, и (2) после выполнения в любом ЦП из конфигурации команды установки ключа с переводом в пассивное состояние, посредством которой был в последний раз установлен соответствующий ключ хранения до завершения сохранения. С точки зрения других или всех ЦП установка разряда изменения обязательно происходит только, когда после операции сохранения происходит любое из следующего.
ЦП или канальная программа, в которой осуществлено сохранение, выполняет функцию последовательного упорядочения.
Сохранение осуществлено в ЦП или канальной программе, и любой ЦП из конфигурации устанавливает соответствующий разряд изменения путем выполнения команды установки ключа после завершения обращения к запоминающему устройству. Установка разряда изменения вследствие обращения к запоминающему устройству происходит до выполнения команды установки ключа, за исключением случаев, когда средство установки ключа без перевода в пассивное состояние установлено, и разряд изменения может выглядеть установленным после команды установки ключа без перевода в пассивное состояние.
Сохранение осуществлено в ЦП и завершается или будет завершено, при этом любой ЦП из конфигурации выполняет команду сравнения, свопига и удаления (COMPARE AND SWAP AND PURGE), аннулирования записи в таблице DAT (INVALIDATE DAT TABLE ENTRY) или аннулирования записи в таблице страниц (INVALIDATE PAGE TABLE ENTRY), посредством которой ALB (буфер предыстории ART) или TLB осуществляющего сохранение ЦП очищается от любого средства, используемого для завершения сохранения. Завершение команды очистки задерживается до завершения соответствующего сохранения и установки разряда изменения.
Сохранение осуществлено в ЦП, и этот ЦП анализирует соответствующий разряд изменения посредством команды вставки расширенного ключа хранения (INSERT STORAGE KEY EXTENDED) или переустановки расширенного разряда обращения (RESET REFERENCE BIT EXTENDED).
При использовании команды установки ключа, когда установленное значение управляющего разряда без перевода в пассивное состояние равно единице, в одном из примеров программа может гарантировать, что другие ЦП или канальные программы не обращаются к запоминающему устройству, для которого устанавливаются ключи. Например, для ограничения доступа к ячейке запоминающего устройства в виртуальной запоминающей среде ячейка может просто не отображаться в каком-либо виртуальном адресном пространстве.
В следующем далее примере проиллюстрировано наблюдение измененных данных после операции установки ключа без перевода в пассивное состояние. В примере заданы следующие исходные условия.
Ячейкой А запоминающего устройства является 256-байтовая область, целиком содержащаяся в одном 4-килобайтовом блоке.
Разрядами управления доступом в ключе хранения для этого блока является двоичное число 0001.
В и С являются возрастающими ячейками в области А.
Ключом PSW для ЦП 1 является 1.
ЦП 1 определяет, что ячейка А доступна до того, как в результате выполнения в ЦП 2 команды SSKE без перевода в пассивное состояние разряд управления доступом ключа хранения для А изменится на 2.
ЦП 1 (ключ PSW=1
ЦП 2
⋮
LA
1, X'20'
MVC A, X
LA
2, A
⋮
SSKE
1, 2, 8
⋮
L
3, B
⋮
L
4, C
В случае команды SSKE с переводом в пассивное состояние в обоих общих регистрах 3 и 4 будут содержаться новые данные, если команда MVC (перемещения символа) выполняется до команды SSKE, или в обоих регистрах будут содержаться старые данные, если сначала выполняется команда SSKE (а в результате команды MVC возникает исключительная ситуация при нарушении управляемой ключом защиты).
Тем не менее, в этом сценарии с использованием команды SSKE без перевода в пассивное состояние значения, загруженные (L) в общие регистры 3/4, могут содержать старые/старые, старые/новые, новые/старые или новые/новые данные в зависимости от расчета по времени выборок, осуществляемых ЦП 2. После того как ЦП 1 определил, что ячейка А доступна для команды MVC, выполнение MVC может продолжаться без распознавания исключительной ситуации при нарушении управляемой ключом защиты, несмотря на то, что ЦП 2 изменяет ключ для ячейки, а выполнение команды MVC в ЦП 1 продолжается путем последовательных доступов.
В следующем далее примере проиллюстрирована возможная чрезмерная индикация разряда изменения при выполнении операции установки ключа без перевода в пассивное состояние. В этом примере начальным значением ключа PSW для ЦП и разрядов управления доступом в ключе хранения для местоположения BLOCK в обоих случаях является 1. ЦП 2 выполняет команду SSKE без перевода в пассивное состояние, чтобы установить значение разрядов управления доступом ключа хранения для BLOCK, равное 2.
ЦП 1
ЦП 2
LA
2, BLOCK
LA
1, X'20'
ST
0, 0 (,2)
LA
2, BLOCK
⋮
SSKE
1, 2, 8
ISKE
1, 2
В этом сценарии в результате выполнения команды ISKE (вставки расширенного ключа хранения) в ЦП 1 указывается новое значение (2) разряда управления доступом (2) в разрядах 56-59 общего регистра 1, но значением разряда изменения в разряде 62 регистра может являться единица. Эта избыточная индикация разряда изменения в результате поздней установки значения разряда запоминающим устройством в ЦП 1 может приводить к излишнему листанию кадра запоминающего устройства, в котором содержится BLOCK.
В некоторых моделях после выполнения операции установки ключа без перевода в пассивное состояние может наблюдаться множество копий ключа хранения для отдельного 4-килобайтового блока. Например, разряды управления доступом и разряд защиты от выборки для любых кэшированных строк блока могут быть распределены среди записей кэш-каталога. В следующем далее примере проиллюстрировано, как могут наблюдаться различающиеся значения ключа хранения для одного и того же 4-килобайтового блока. В примере заданы следующие исходные условия.
Ячейка А запоминающего устройства находится в 4-килобайтовом блоке.
Разрядами управления доступом в ключе хранения для этого блока является двоичное число 0001, а значением разряда защиты от выборки является 1.
Ячейка В запоминающего устройства находится в том же самом блоке, что и ячейка А, но на другой строке кэша.
Значением ключа PSW для ЦП 2 является 2.
ЦП 1
ЦП 2 (ключ PSW=2)
LA
1, X'28'
⋮
ST
2, A
⋮
ISKE
1, 2, 8
L
3, A
⋮
L
4, B
В этом сценарии в результате выборки из ячейки В в ЦП 2 может возникать исключительная ситуация при нарушении защиты, несмотря на успешно осуществленную выборку из ячейки А. Это объясняется тем, что в записи кэш-каталога ключ для ячейки А был обновлен новым ключом, а ключ для ячейки В еще не был обновлен в записи кэш-каталога. Один из примеров обработки этой потенциальной исключительной ситуации при нарушении защиты описан далее.
В следующем сценарии приведена другая иллюстрация возможности наблюдать множество копий ключа с использованием варианта установления ключа без перевода в пассивное состояние. В примере заданы следующие исходные условия.
Ячейками А и В запоминающего устройства являются два отдельных 4-килобайтовых блока.
Для обеих ячеек А и В начальными значениями разрядов управления доступом и разряда защиты от выборки являются двоичные числа 0001 и 1 соответственно.
Значениями ключа PSW для ЦП 3 и 4 в обоих случаях является 2.
ЦП 1
ЦП 2
ЦП 3
ЦП 4
LA
1, X'28'
LA
3, X'28'
⋮
⋮
LA
2, A
LA
4. B
⋮
⋮
SSKE
1, 2, 8
SSKE
3, 4, 8
L
5, 4
L
7, B
⋮
⋮
L
6, B
L
8, A
Осуществляемая ЦП 3 выборка из ячейки А может являться успешной (то есть результаты выполнения команды SSKE наблюдались в ЦП 1), а осуществляемая ЦП 3 выборка из ячейки В неудачной (то есть результаты выполнения команды SSKE еще не наблюдались в ЦП 2). Кроме того, осуществляемая ЦП 4 выборка из ячеек А и В может в обоих случаях являться успешной. Если осуществляемая ЦП 4 выборка из ячейки В является успешной, выборка из ячейки А не должна создавать исключительную ситуацию при нарушении управляемой ключом защиты.
Как описано выше, согласно одной из особенностей настоящего изобретения при выполнении процессором команды установки ключа (такой как SSKE) без перевода в пассивное состояние, он не передает остальным ЦП системы сигнал перевода в пассивное состояние. Он просто изменяет ключ хранения (и может передавать сигнал взаимного запрета). Остальные ЦП могут обнаруживать это изменение немедленно или в какой-то момент в будущем. В ответ это изменение другой процессор может принимать уведомление машинного контроля об исключительной ситуации в связи с задержанной выборкой (delayed access exception (DAE)). Поскольку эта ошибка обычно неустранима для программного обеспечения, ее следует избегать. DAE возникает, например, если доступ к ячейке запоминающего устройства разрешен, когда начинается выполнение команды, но позднее в процессе ее выполнения становится запрещенным. Это не создает сложностей в случае аппаратно выполняемой команды, поскольку такая команда обычно может быть нуллифицирована в любой момент во время ее выполнения. Тем не менее, при выполнении команды милликодом (или другим программным обеспечением) нуллификация обычно становится невозможной после того, как было изменено какое-либо структурированное средство (например, запоминающее устройство или регистр). Соответственно, согласно одной из особенностей настоящего изобретения в каждом процессоре предусмотрена возможность обработки этой ситуации. Один из примеров этой возможности описан со ссылкой на фиг.9А-9Б.
Как показано на фиг.9А, когда начинается выполнение команды милликодом (такой как команда, предусматривающая множество обращений к запоминающему устройству (например, команда перемещения символа большой длины (MVCL)), на шаге 900 осуществляется предварительная проверка ячеек запоминающего устройства, обращение к которым будет осуществляться при выполнении команды, чтобы определить их доступность. В одном из примеров при этом проверяются первый байт и последний байт, доступ к которым должен осуществляться. Если эта проверка проходит успешно, предварительная проверка является успешной.
Если во время предварительной проверки возникает затруднение, выполнение команды завершается в связи с исключительной ситуацией при нарушении защиты. Тем не менее, если предварительная проверка прошла успешно, выполнение команды может продолжаться, поскольку ей разрешено (по меньшей мере неявно, если не в прямой форме) обращение к ячейкам запоминающего устройства.
Во время выполнения команды на шаге 902 изменяется ее местоположение в запоминающем устройстве или регистре. В ответ на изменение милликодом первого структурированного средства аппаратное обеспечение на шаге 904 автоматически принимает меры. Это описано со ссылкой на фиг.9Б.
В ответ на изменение милликодом первого структурированного средства на шаге 920 аппаратное обеспечение на шаге 922 автоматически устанавливает индикатор, указывающий, что ячейки запоминающего устройства уже предварительно проверены, и первое структурированное средство обновлено. Этим индикатором является, например, флаг 223 в средстве 220 управления прерываниями (фиг.2).
Как показано на фиг.9Б, выполнение команды продолжается на шаге 924, и, если в ответ на установку индикатора аппаратным обеспечением, должно быть сообщено об исключительной ситуации при нарушении защиты по ключу, в ходе выполнения этой команды аппаратное обеспечение автоматически блокирует исключительную ситуацию при нарушении защиты по ключу. Исключительная ситуация при нарушении защиты по ключу может проявляться, если другой процессор действительно изменил ключ хранения посредством команды SSKE без перевода в пассивное состояние в то время, как этот процессор обращался к запоминающему устройству в ходе выполняемой милликодом команды.
Если аппаратное обеспечение на шаге 926 запроса определяет, что ключ хранения был изменен, когда при выполнении милликодом этой команды осуществлялось обращение к запоминающему устройству, защищенному этим ключом хранения, аппаратное обеспечение на шаге 928 запроса определяет, установлен ли индикатор. Если индикатор не установлен, на шаге 930 распознается исключительная ситуация при нарушении защиты по ключу и выполняемая милликодом команда завершается неудачно.
Тем не менее, если на шаге 928 запроса определено, что индикатор установлен, на шаге 932 блокируется исключительная ситуация при нарушении защиты по ключу. Например, средство 220 управления прерываниями определяет, что установлен флаг, и передает указание средству 222 управления выполнением заблокировать исключительную ситуацию при нарушении защиты по ключу. Это позволяет продолжить на шаге 934 обработку выполняемой милликодом команды, несмотря на наблюдаемое изменение ключа хранения.
Выше было подробно описано средство установки ключа без перевода в пассивное состояние, в котором устанавливаются ключи хранения без необходимости операции перевода в пассивное состояние независимо от полей ключа хранения или устанавливаемых значений этих полей. Поскольку эта операция является операцией без перевода в пассивное состояние, если определено, что изменился ключ хранения для ячейки запоминающего устройства, обращение к которой было разрешено команде, предусмотрен механизм блокирования исключительной ситуации при нарушении защиты по ключу. После этого за устранение потенциальной угрозы целостности данных отвечает операционная система, выполняющая эту команду.
Хотя приведенные примеры описаны применительно к команде SSKE, аналогичная логика применима к другим командам, которые обновляют ключ хранения, таким как команда PFMF или другие команды. Кроме того, хотя в данном случае обновляются ключи хранения, в других примерах одна или несколько особенностей настоящего изобретения также может найти применение в свойстве или ресурсах другого типа, используемых для защиты запоминающего устройства.
Как учтут специалисты в данной области техники, особенности настоящего изобретения могут быть воплощены в виде системы, способа или компьютерного программного продукта. Соответственно, особенности настоящего изобретения могут принимать форму целиком аппаратного варианта осуществления, целиком программного варианта осуществления (содержащего аппаратно-программное обеспечение, резидентное программное обеспечение, микрокод и т.д.) или варианта осуществления, сочетающего программные и аппаратные особенности, которые все могут в целом именоваться в описании "схемой", "модулем" или "системой". Кроме того, особенности настоящего изобретения могут принимать форму компьютерного программного продукта, воплощенного в одной или нескольких машиночитаемых сред, в которых воплощен машиночитаемый программный код.
Может использоваться любое сочетание одной или нескольких машиночитаемых сред. Машиночитаемой средой может являться машиночитаемая запоминающая среда. Машиночитаемой запоминающей средой может являться, например, без ограничения электронная, магнитная, оптическая, электромагнитная, инфракрасная или полупроводниковая система, аппаратура или устройство или любое применимое сочетание перечисленного. Более конкретные примеры (неисчерпывающий список) машиночитаемой запоминающей среды включают: электрическое соединение, содержащее один или несколько проводов, портативный компьютерный диск, жесткий диск, оперативное запоминающее устройство (ОЗУ), постоянное запоминающее устройство (ПЗУ), стираемое программируемое постоянное запоминающее устройство (СППЗУ или флэш-память), оптическое волокно, портативное постоянное запоминающее устройство на компакт-диске (CD-ROM), оптическое запоминающее устройство, магнитное запоминающее устройство или любое применимое сочетание перечисленного. В контексте настоящего документа машиночитаемой запоминающей средой может являться любая материальная среда, в которой содержится или хранится программа, используемая или связанная с системой, аппаратурой или устройством выполнения команд.
Как показано на фиг.10, в одном из примеров компьютерный программный продукт 1000 содержит, например, одну или несколько машиночитаемых запоминающих сред 1002 для хранения в них машиночитаемого программного кода или логики 1004 для обеспечения и реализации одной или нескольких особенностей настоящего изобретения.
Программный код, воплощенный в машиночитаемой среде, может передаваться с использованием соответствующей среды, включая без ограничения беспроводную, проводную среду, оптоволоконный кабель, ВЧ-среду и т.д. или любое применимое сочетание перечисленного.
Компьютерный программный код для выполнения операций, обеспечивающих особенности настоящего изобретения, может быть записан на одном или нескольких языках программирования в любом сочетании, включая объектно-ориентированный язык программирования, такой как Java, Smalltalk, C++ и т.п., и традиционных процедурных языках программирования, таких как "С" и языки ассемблера или аналогичные языки программирования. Программный код может целиком выполняться в пользовательском компьютере, частично в пользовательском компьютере, в качестве автономного пакета программного обеспечения, частично в пользовательском компьютере и частично в удаленном компьютере или целиком в удаленном компьютере или сервере. В случае последнего сценария удаленный компьютер может быть соединен с пользовательским компьютером посредством сети любого типа, включая локальную вычислительную сеть (ЛВС) или глобальную вычислительную сеть (ГВС), или может быть установлено соединение с внешним компьютером (например, по сети Интернет с использованием поставщика услуг Интернет).
Особенности настоящего изобретения описаны со ссылкой на структурные схемы и(или) блок-схемы способов, оборудования (систем) и компьютерных программных продуктов согласно вариантам осуществления изобретения. Подразумевается, что каждый блок на структурных схемах и(или) блок-схемах и сочетания блоков на структурных схемах и(или) блок-схемах могут быть реализованы посредством команд управления компьютерной программой. Эти команды управления компьютерной программой могут передаваться процессору универсального компьютера, специализированного компьютера или другой программируемой аппаратуры для обработки данных с целью формирования механизма, в котором команды, выполняемые посредством процессора компьютера или другого программируемого оборудования обработки данных, создают средство реализации функций/действий, обозначенных блоком или блоками на структурных схемах и(или) блок-схемах.
Эти команды управления компьютерной программой также могут храниться в машиночитаемой среде, которая способна предписывать компьютеру, другому программируемому оборудованию обработки данных или другим устройствам действовать конкретным способом, в результате чего команды, хранящиеся на машиночитаемом носителе, формируют продукт, содержащий команды, в которых реализуется функция/действие, обозначенное блоком или блоками на структурных схемах и(или) блок-схемах.
Команды управления компьютерной программой также могут загружаться в компьютер, другое программируемое оборудование обработки данных или другие устройства, чтобы инициировать выполнение последовательности оперативных шагов компьютером, другим программируемым оборудованием или другими устройствами с целью формирования реализованного в компьютере процесса, при этом команды, выполняемые компьютером или другим программируемым оборудованием, обеспечивают процессы реализации функций/действий, обозначенных блоком или блоками на структурных схемах и(или) блок-схемах.
Приведенные на чертежах структурные схемы и блок-схемы иллюстрируют архитектуру, функциональные возможности и действие возможных вариантов реализации систем, способов и компьютерных программных продуктов согласно различным вариантам осуществления настоящего изобретения. В связи с этим каждым блоком на структурных схемах или блок-схемах может быть представлен определенный модуль, сегмент или часть кода, которая содержит одну или несколько выполняемых команд для реализации заданной логической функции(-й). Следует также отметить, что в некоторых альтернативных вариантах реализации указанные в блоке функции могут выполняться не в том порядке, в котором они представлены на чертежах. Например, функции, указанные двумя последовательно показанными блоками, в действительности, могут выполняться преимущественно одновременно, или функции иногда могут выполняться в обратном порядке в зависимости от соответствующих функциональных возможностей. Следует также отметить, что каждый блок на блок-схемах и(или) структурных схемах и сочетания блоков на блок-схемах и(или) структурных схемах могут быть реализованы посредством специализированных аппаратных систем, выполняющих заданные функции или действия, или посредством сочетаний специализированных аппаратных систем и компьютерных команд.
Помимо вышесказанного, одна или несколько особенностей настоящего изобретения может обеспечиваться, предлагаться, применяться, координироваться, обслуживаться и т.д. поставщиком услуг, который предлагает управление пользовательскими средами. Например, поставщик услуг способен создавать, вести, поддерживать и т.д. для одного или нескольких пользователей машинный код и(или) вычислительную инфраструктуру, в которой выполняется одна или несколько особенностей настоящего изобретения. В ответ поставщик услуг может получать оплату от пользователя на основании соглашения о подписке и(или) абонентской плате в качестве примеров. Дополнительно или в качестве альтернативы, поставщик услуг может получать плату за рекламное содержание, продаваемое одному или нескольким третьим лицам.
Согласно одной из особенностей настоящего изобретения для выполнения одной или нескольких особенностей настоящего изобретения может быть развернуто приложение. В качестве одного из примеров, развертывание приложения включает использование вычислительной инфраструктуры, способной выполнять одну или несколько особенностей настоящего изобретения.
В качестве одной из дополнительных особенностей настоящего изобретения развертывание вычислительной инфраструктуры может включать интегрирование машиночитаемого кода в вычислительную систему, при этом код в сочетании с вычислительной системой способен выполнять одну или несколько особенностей настоящего изобретения.
В качестве еще одной дополнительной особенности настоящего изобретения может быть предложен способ интегрирования вычислительной инфраструктуры, включающий интегрирование машиночитаемого кода в компьютерную систему. Компьютерная система содержит машиночитаемую среду, содержащую одну или несколько особенностей настоящего изобретения. Код в сочетании с компьютерной системой способен выполнять одну или несколько особенностей особенности настоящего изобретения.
Хотя выше описаны различные варианты осуществления, они являются лишь примерами. Например, одна или несколько особенностей настоящего изобретения могут содержаться и использоваться в вычислительных средах других архитектур. Кроме того, одна или несколько особенностей настоящего изобретения могут выгодно применяться в других командах или операциях. Помимо этого, могут использоваться другие форматы команд и(или) дополнительные поля, меньшее число полей или отличающиеся поля. Возможно множество разновидностей.
Кроме того, одна или несколько особенностей настоящего изобретения могут выгодно применяться в вычислительных средах других типов. В качестве примера, может использоваться система обработки данных, применимая для хранения и(или) выполнения программного кода и содержащая по меньшей мере два процессора, прямо или косвенно связанных со средствами памяти посредством системной шины. Элементы памяти включают, например, локальную память, применяемую во время фактического выполнения программного кода, массовую память и кэш-память, которая обеспечивает временное хранение по меньшей мере части программного кода для уменьшения необходимого числа случаев извлечения кода из массовой памяти во время выполнения.
С системой прямой или косвенно посредством промежуточных контроллеров ввода-вывода могут быть связаны устройства ввода-вывода (включая без ограничения, клавиатуры, дисплеи, координатно-указательные устройства, ЗУПД, накопители на магнитной ленте, на компакт-дисках, на многоцелевых компакт-дисках, портативные миниатюрные накопители на жестких дисках и другие запоминающие среды и т.д.). С системой также могут быть связаны сетевые адаптеры, позволяющие системе обработки данных устанавливать связь с другими системами обработки данных или удаленными принтерами или запоминающими устройствами посредством промежуточных частных или общедоступных сетей. Модемы, кабельные модемы и сетевые карты Ethernet являются лишь несколькими из сетевых адаптеров доступных типов.
Рассмотрим на фиг.11, на которой представлены характерные компоненты хост-компьютерной системы 1100 для реализации одной или нескольких особенностей настоящего изобретения. Характерный хост-компьютер 1100 содержит один или несколько ЦП 1101, поддерживающих связь с памятью (т.е. центральной памятью) 1102 компьютера, а также интерфейсы ввода-вывода с запоминающими устройствами 1111 и сетями 1110 для связи с другими компьютерами или SAN и т.п. ЦП 1101 совместим с архитектурой, содержащей структурированный набор команд и структурированные функциональные возможности. ЦП 1101 может выполнять динамическое преобразование 1103 адреса (DAT) для преобразования адресов программ (виртуальных адресов) в действительные адреса памяти. DAT обычно содержит буфер 1107 быстрого преобразования адреса (TLB) для кэширования преобразований, чтобы при последующих доступах к блоку памяти 1102 компьютера не требовалась задержка преобразования адреса. Обычно между памятью 1102 компьютера и процессором 1101 используется кэш-память 1109. Кэш-память 9 может являться иерархической и состоящей из кэша большой емкости, доступного для нескольких ЦП, и более быстродействующих кэшей (низкого уровня) меньшей емкости между кэшем большой емкости и каждым ЦП. В некоторых случаях реализации кэши низкого уровня разделены на отдельные кэши низкого уровня для выборки команд и доступа к данным. В одном из вариантов осуществления блок 304 выборки команд вызывает из памяти 1102 команду посредством кэшпамяти 1109. Команда декодируется в блоке 1106 декодирования команд и отправляется (с другими командами в некоторых вариантах осуществления) в блок или блоки 1108 выполнения команд. Обычно используется несколько блоков 1108 выполнения команд, например блок выполнения арифметических команд, блок выполнения команд с плавающей точкой и блок выполнения команд перехода. Команда выполняется блоком, который в зависимости от необходимости осуществляет доступ к операндам из определяемых командами регистров или памяти. Если доступ (загрузка или сохранение) к операнду должен осуществляться из памяти 1102, блок 1105 загрузки/сохранения обычно обрабатывает процедуру доступа под управлением выполняемой команды. Команды могут выполняться в аппаратных схемах или во внутреннем микрокоде (аппаратно-программном обеспечении) или с использованием сочетания того и другого.
Как было отмечено, в локальном (или основном) запоминающем устройстве компьютерной системы хранится информация, а также адресные, защитные, контрольные и корректирующие записи. Некоторые особенности адресации включают формат адресов, концепцию адресных пространств, различные типы адресов и то, каким образом адрес одного типа преобразуется в адрес другого типа. Некоторые из основных запоминающих устройств имеют постоянно абонированные ячейки. Основное запоминающее устройство обеспечивает систему запоминающим устройством с прямой адресацией и быстрой выборкой данных. В основное запоминающее устройство должны загружаться (из устройств ввода) как данные, так и программы, после чего они могут обрабатываться.
Основное запоминающее устройство может содержать одно или несколько буферных запоминающих устройств меньшей емкости с более быстрой выборкой, иногда называемых кэшами. Кэш обычно физически связан с ЦП или процессором ввода-вывода. Физическая конструкция и использование различных запоминающих сред в целом не сказывается на программе, за исключением производительности.
Для команд и операндов, хранимых в памяти, могу быть предусмотрены раздельные кэши. Информация содержится в кэше в форме непрерывных байтов на целочисленной границе, называемой блоком или строкой данных кэша (или для краткости строкой). Согласно одной из моделей может быть предусмотрена команда извлечения атрибута кэша (EXTRACT CACHE ATTRIBUTE), которая выдает размер строки кэша в байтах. Согласно одной из моделей также может быть предусмотрена команда упреждающей выборки данных (PREFETCH DATA) и команда упреждающей выборки данных относительно большой длины (PREFETCH DATA RELATIVE LONG) для упреждающей выборки данных из запоминающего устройства в кэш данных или команд или для высвобождения данных из кэша.
Запоминающее устройство рассматривается как длинная горизонтальная битовая строка. В случае большинства операций доступ к запоминающему устройству последовательно осуществляется слева направо. Битовая строка подразделяется на блоки из восьми разрядов. Восьмиразрядный блок называется байтом и является базовым конструктивным блоком всех форматов представления информации. Местоположение каждого байта в запоминающем устройстве идентифицируется однозначно определяемым неотрицательным целым числом, которое является адресом местоположения этого байта или просто адресом байта. Соседние местоположения байтов имеют идущие подряд адреса, начинающиеся слева с 0 и последовательно следующие слева направо. Адреса представляют собой двоичные целые числа без знака, содержащие 24, 31 или 64 разряда.
Обмен информацией между запоминающим устройством и ЦП или канальной подсистемой осуществляется путем передачи одного байта или группы байтов за один раз. Если не оговорено иное, хранящаяся группа байтов адресуется посредством крайнего левого байта из группы. Число байтов в группе подразумевается или прямо оговаривается выполняемой операцией. Используемая в работе ЦП группа байтов называется полем. Разряды в каждой группе байтов последовательно нумеруются слева направо. Крайние левые разряды иногда именуются "старшими" разрядами, а крайние правые разряды -"младшими" разрядами. Тем не менее, номера разрядов не являются адресами ячеек запоминающего устройства. Возможна только адресация байтов. Чтобы оперировать с отдельными разрядами хранящегося байта, осуществляется доступ ко всему байту. Разряды в байте пронумерованы слева направо от 0 до 7. Разряды в адресе могут быть пронумерованы от 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-байтовой границе. Когда в адресах ячеек запоминающего устройства указаны полуслова, слова, двойные слова и учетверенные слова, в двоичном представлении адреса содержится один, два, три или четыре крайних правых нулевых разряда соответственно. Команды должны находиться на двухбайтовых целочисленных границах. Хранящиеся операнды большинства команд не содержат требования размещения на границах.
В устройствах, в которых реализованы раздельные кэши для команд и операндов, хранимых в памяти, могут происходить значительные задержки, если программа сохраняется в строке кэша, из которой впоследствии осуществляется выборка команд, независимо от того, изменяются ли при сохранении команды, выборка которых впоследствии осуществляется.
В одном из вариантов осуществления изобретение может быть реализовано на практике посредством программного обеспечения (иногда называемого лицензионным внутренним кодом, аппаратно-программным обеспечением, микрокодом, милликодом, пикокодом и т.п., что во всех случаях согласуется с настоящим изобретением). Как показано на фиг.11, обычно процессор 1101 хост-системы 1110 получает доступ к программному коду системы программного обеспечения, в котором воплощено настоящее изобретение, посредством долговременных запоминающих сред 1111, таких как ПЗУ на компакт-дисках, накопитель на магнитной ленте или накопитель на жестких дисках. Программный код системы программного обеспечения может быть воплощен в любой из разнообразных известных сред для применения с системой обработки данных, такой как дискета, накопитель на жестких дисках или ПЗУ на компакт-дисках. Код может распределяться в таких средах или может распределяться пользователям из памяти 1102 компьютера или запоминающего устройства одной компьютерной системы по сети 1110 другим компьютерным системам для применения пользователями таких других систем.
Программный код включает операционную систему, которая управляет функцией и взаимодействием различных узлов вычислительной машины и одной или нескольких прикладных программ. Обычно подкачка страниц программного кода осуществляется из запоминающих сред 1111 в относительно быстродействующее запоминающее устройство 1102, в котором он доступен для обработки процессором 1101. Методы и способы воплощения программного кода системы программного обеспечения в памяти, в физических средах и(или) распределения программного кода посредством сетей хорошо известны и не будут дополнительно рассматриваться в описании. Программный код, созданный и хранящийся в материальной среде (включая без ограничения модули электронной памяти (ОЗУ), флэш-память, компакт-диски, универсальные цифровые диски, магнитную ленту и т.п.), часто именуется "компьютерным программным продуктом". Содержащая компьютерный программный продукт среда обычно может считываться цепью обработки данных предпочтительно в компьютерной системе для выполнения цепью обработки данных.
На фиг.12 проиллюстрирована характерная рабочая станция или аппаратная серверная система, в которой может быть на практике реализовано настоящее изобретение. В показанную на фиг.12 систему 1200 входит характерная базовая компьютерная система 1201, такая как персональный компьютер, рабочая станция или сервер, включая необязательные периферийные устройства. Базовая компьютерная система 1201 имеет один или несколько процессоров 1206 и шину для соединения процессора(-ов) 1206 и других компонентов системы 1201 и обеспечения связи между ними известными способами. Шина соединяет процессор 1206 с памятью 1205 и долговременным запоминающим устройством 1207, которое может содержать накопитель на жестких дисках (например, включая любое из следующего: магнитный носитель, компакт диск, универсальный цифровой диск и флэш-память) или, например, накопитель на магнитной ленте. В систему 1201 также может входить адаптер пользовательского интерфейса, который посредством шины соединяет микропроцессор 1206 с одним или несколькими устройствами сопряжения, такими как клавиатура 1204, мышь 1203, принтер/сканнер 1210 и(или) другие устройства сопряжения, которыми могут являться любое пользовательское устройство сопряжения, такое как сенсорный экран, дополнительная цифровая клавиатура и т.д. Шина посредством дисплейного адаптера также соединяет дисплей 1202, такой как ЖК-дисплей или монитор с микропроцессором 1206.
Система 1201 может поддерживать связь с другими компьютерами или компьютерными сетями посредством сетевого адаптера, способного поддерживать связь 1208 с сетью 1209. Примерами сетевых адаптеров являются каналы связи, кольцевая сеть с эстафетным доступом, сеть Ethernet или модемы. В качестве альтернативы, система 1201 может поддерживать связь с использованием беспроводного интерфейса, такого как карта CDPD (сотовой системы передачи пакетов цифровых данных). Система 1201 может быть связана с другими такими компьютерами в локальной вычислительной сети (ЛВС) или глобальной вычислительной сети (ГВС), или системой 1201 может являться клиент, связанный отношениями клиент/сервер с другим компьютером и т.д. Все эти конфигурации, а также соответствующее коммуникационное оборудование и программное обеспечение известны из техники.
На фиг.13 проиллюстрирована сеть 1300 обработки данных, в которой может быть реализовано на практике настоящее изобретение. В сеть 1300 обработки данных может входить множество отдельных сетей, таких как беспроводная сеть и проводная сеть, в каждую из которых может входить множество отдельных рабочих станций 1301, 1302, 1303, 1304. Кроме того, как известно специалистам в данной области техники, в нее может входить одна или несколько ЛВС, в которую может входить множество интеллектуальных рабочих станций, связанных с хост-процессором.
На фиг.13 также показано, что в сети также могут входить мэйнфреймы или серверы, такие как шлюз (клиент-сервер 1306) или сервер приложений (удаленный сервер 1308, который может осуществлять доступ к хранилищу данных, а также может быть доступен непосредственно с рабочей станции 1305). Шлюз 1306 служит точкой входа в каждую отдельную сеть. Шлюз необходим при подсоединении одного сетевого протокола к другому. Шлюз 1306 предпочтительно может быть связан с другой сетью (например, сетью Интернет 1307) линией связи. Шлюз 1306 также может быть непосредственно связан с одной или несколькими рабочими станциями 1301, 1302, 1303, 1304 с использованием линии связи. Шлюз может быть реализован с использованием сервера IBM eServer™ zSeries z9 производства International Business Machines Corporation.
Как показано на фиг.12 и 13, доступ к программному коду системы программного обеспечения, в котором может быть воплощено настоящее изобретение, может осуществлять процессор 1206 системы 1201 посредством долговременных запоминающих сред 107, таких как ПЗУ на компакт-дисках, или накопитель на жестких дисках. Программный код системы программного обеспечения может быть воплощен в любой из разнообразных известных сред для применения с системой обработки данных, такой как дискета, накопитель на жестких дисках или ПЗУ на компакт-дисках. Код может распределяться в таких средах или может распределяться пользователям 1310, 1311 из памяти компьютера или запоминающего устройства одной компьютерной системы по сети другим компьютерным системам для применения пользователями таких других систем.
В качестве альтернативы, программный код может быть воплощен в памяти 1205 с возможностью доступа к нему для процессора 1206 с использованием процессорной шины. В таком программном коде реализована операционная система, которая управляет функцией и взаимодействием различных узлов вычислительной машины и одной или нескольких прикладных программ 1212. Обычно подкачка страниц программного кода осуществляется из запоминающих сред 1207 в быстродействующее запоминающее устройство 1205, в котором он доступен для обработки процессором 1206. Методы и способы воплощения программного кода системы программного обеспечения в памяти, в физических средах и(или) распределения программного кода посредством сетей хорошо известны и не будут дополнительно рассматриваться в описании. Программный код, созданный и хранящийся в материальной среде (включая без ограничения модули электронной памяти (ОЗУ), флэш-память, компакт-диски, универсальные цифровые диски, магнитную ленту и т.п.), часто именуется "компьютерным программным продуктом". Содержащая компьютерный программный продукт среда обычно может считываться цепью обработки данных предпочтительно в компьютерной системе для выполнения цепью обработки данных.
Кэш, который является наиболее легкодоступным для процессора (обычно более быстродействующим и менее объемным, чем другие кэши процессора), представляет собой кэш низшего уровня (L1 или уровня 1), а основное запоминающее устройство (основная память) представляет собой кэш высшего уровня (L3 в случае 3 уровней). Кэш низшего уровня часто поделен на  кэш команд (I-кэш), в котором хранятся машинные команды для выполнения, и кэш данных (D-кэш), в котором хранятся операнды, хранимые в памяти.
На фиг.14 проиллюстрирован один из примеров осуществления процессора 1206. Обычно с целью помещения в буфер блоков памяти и повышения производительности процессора используется один или несколько уровней кэша 1403. Кэш 1403 представляет собой высокоскоростной буфер, в котором в строках данных кэша хранятся данные в памяти, которые, вероятно, будут использоваться. Типичные строки данных кэша содержат 64, 128 или 256 байтов данных в памяти. Для кэширования команд и для кэширования данных часто используются раздельные кэши. Согласованность кэшей (синхронизация копий строк в памяти и в кэшах) часто обеспечивается различными алгоритмами слежения ("snoop"), хорошо известными из техники. Основное запоминающее устройство 1205 процессорной системы часто называют кэшем. В процессорной системе, имеющей 4 уровня кэша 1403, основное запоминающее устройство 1205 иногда называют кэшем уровня 5 (L5), поскольку оно обычно является более быстродействующим и представляет собой лишь часть энергонезависимого запоминающего устройство (ЗУПД, ЗУ на ленте и т.д.), которое доступно для компьютерной системы. Основное запоминающее устройство 1205 "кэширует" страницы данных, которые подкачиваются в основное запоминающее устройство 1205 и откачиваются из него операционной системой.
Программный счетчик (счетчик команд) 1411 отслеживает адрес текущей команды для выполнения. Счетчик команд в процессоре на основе системы z/Architecture является 64-разрядным, при этом он может быть усечен до 31 или 24 разрядов с целью поддержки ранее существовавших ограничений адресации. Поскольку счетчик команд обычно воплощен в слове состояния программы (PSW) компьютера, оно сохраняется при переключении контекста. Соответственно, выполняемая программа с показанием счетчика команд может прерываться, например, операционной системой (при переключении контекста из программной среды в среду операционной системы). PSW программы поддерживает показание счетчика команд, пока программа неактивна, а во время выполнения операционной системы используется счетчик команд (в PSW) операционной системы. Обычно показание счетчика команд приращивается на величину, равную числу байтов текущей команды. RISC-команды (на основе вычислений с сокращенным набором команд) обычно имеют фиксированную длину, тогда как CISC-команды (на основе вычислений с полным набором команд) обычно имеют переменную длину. Команды, используемые в z/Architecture IBM, являются CISC-командами, имеющими длину 2, 4 или 6 байтов. Показание счетчика 1411 команд изменяется, например, в результате операции переключения контекста или операции выбранного перехода согласно команде перехода. При операции переключения контекста в слове состояния программы сохраняется текущее показание счетчика команд вместе с другой информацией о состоянии выполняемой программы (такой как коды условий) и загружается новое показание счетчика команд, указывающее команду нового программного модуля для выполнения. Операция выбранного перехода выполняется, чтобы позволить программе принимать решения или чтобы выполнять программный цикл путем загрузки в счетчик 1411 команд результата команды перехода.
Обычно для выборки команд от имени процессора 1206 применяется блок 1405 выборки команд. Блок выборки осуществляет выборку "очередных последовательных команд", целевых команд из команд выбранного перехода или первых команд программы, следующей за переключением контекста. В современных блоках выборки команд часто применяют методы выборки с целью предварительной выборки команд по предположению, исходя из вероятности использования команд, предварительная выборка которых была осуществлена. Например, блок выборки может осуществлять выборку 16 байтов команды, содержащих очередную последовательную команду, и дополнительных байтов следующих далее команд.
Затем вызванные команды выполняются процессором 1206. В одном из вариантов осуществления вызванная команда(-ы) передаются блоку 1406 диспетчеризации блока выборки. Блок диспетчеризации декодирует команду(-ы) и пересылает информацию о декодированной команде(-ах) соответствующим блокам 1407, 1408, 1410. Блок 1407 выполнения обычно принимает информацию о декодированных арифметических командах от блока 1405 выборки команд и выполняет арифметические операции с операндами в соответствии с содержащимся в команде кодом операции. Операнды предоставляются блоку 1407 выполнения предпочтительно из памяти 1205, структурированных регистров 1409 или из непосредственного поля выполняемой команды. Сохраненные результаты выполнения хранятся в памяти 1205, регистрах 1409 или в другом машинном аппаратном обеспечении (таком как управляющие регистры, регистры PSW и т.п.).
Процессор 1206 обычно имеет один или несколько блоков 1407, 1408, 1410, выполнения функции команды. Как показано на фиг.15А, блок 1407 выполнения посредством интерфейсной логической схемы 1507 может поддерживать связь со структурированными общими регистрами 1409, блоком 1406 декодирования/диспетчеризации, блоком 1410 загрузки/сохранения и другими процессорными блоками 1501. В блоке 1407 выполнения может применяться несколько регистровых схем 1503, 1504, 1505 для хранения информации, с которой будет работать арифметическое логическое устройство (АЛУ) 1502. АЛУ выполняет арифметические операции, такие как сложение, вычитание, умножение и деление, а также логические функции, такие как И, ИЛИ и ИСКЛЮЧАЮЩЕЕ ИЛИ, поворот и смещение. АЛУ предпочтительно поддерживает зависящие от конструкции специализированные операции. В других схемах могут обеспечиваться другие структурированные средства 1508, включающие, например, коды условия и логическую схему поддержки восстановления. Обычно результат операции АЛУ хранится в схеме 1506 выходного регистра, из которой он может пересылаться целому ряду других функций обработки. Хотя существует множество конструкций процессоров, настоящее описание имеет целью лишь обеспечить понимание одного из вариантов осуществления.
Например, команда сложения выполняется блоком 1407 выполнения, обладающим арифметическими и логическими функциональными возможностями, а, например, команда с плавающей точкой выполняется блоком вычислений с плавающей точкой, обладающим специализированными возможностями работы с плавающей точкой. Блок выполнения предпочтительно работает с указанными командой операндами путем выполнения заданной кодом операции функции применительно к операндам. Например, команда сложения может выполняться блоком 1407 выполнения применительно к операндам, обнаруженным в двух регистрах 1409, указанных в регистровых полях команды.
Блок 1407 выполнения выполняет арифметическое сложение двух операндов и сохраняет результат в третьем операнде, которым может являться третий регистр или один из двух исходных регистров. Блок выполнения предпочтительно использует арифметическое логическое устройство (АЛУ) 1502, способное выполнять ряд логических функций, таких как смещение, поворот, И, ИЛИ и ИСКЛЮЧАЮЩЕЕ ИЛИ, а также ряд алгебраических функций, включая любые из следующих функций: сложение, вычитание, умножение, деление. Некоторые АЛУ 1502 рассчитаны на скалярные операции, а некоторые - на операции с плавающей точкой. В зависимости от архитектуры данные могут иметь обратный порядок следования байтов (когда наименьший значимый байт соответствует старшему байтовому адресу) или прямой порядок следования байтов (когда наименьший значимый байт соответствует младшему байтовому адресу). В системе IBM z/Architecture используется обратный порядок следования байтов. В зависимости от архитектуры поля чисел со знаком могут быть представлены в виде прямого кода, дополнения до единицы или дополнения до двух. Число в форме дополнения до двух выгодно в том смысле, что АЛУ не требуется поддерживать возможность вычитания, поскольку при отрицательной или положительной величине дополнения до двух в АЛУ требуется только сложение. Числа обычно описаны в сокращенном виде, в котором 12-разрядное поле определяет адрес блока из 4096 байтов и обычно описано, например, в виде 4-килобайтового блока.
Как показано на фиг.15Б, содержащаяся в команде перехода информация для выполнения команды перехода обычно передается блоку 1408 перехода, в котором часто применяется алгоритм предсказания переходов, такой как таблица 1532 предыстории переходов (ТПП), для предсказания исхода перехода до завершения других условных операций. Целевой объект текущей команды перехода вызывается и выполняется по предположению до завершения условных операций. Когда условные операции завершены, выполненные по предположению команды перехода завершаются или отбрасываются, исходя из условной операции и предположенного исхода. Типичная команда перехода может предусматривать проверку кодов условий и переход к целевому адресу, если коды условий отвечают требованию команды перехода, при этом целевой адрес может вычисляться на основании нескольких чисел, включая, например, числа из регистровых полей или непосредственного поля команды. В блоке 1408 перехода может применяться АЛУ 1526, имеющее множество схем 1527, 1528, 1529 входных регистров и схему 1530 выходного регистра. Блок 1408 перехода, например, может поддерживать связь с общими регистрами 1409, декодировать блок 1406 диспетчеризации или другие схемы 1525.
Выполнение группы команд может прерываться по ряду причин, включая, например, переключение контекста, инициированное операционной системой, исключительную ситуацию или ошибку в процессе выполнения программы, приводящую к переключению контекста, сигнал прерывания ввода-вывода, приводящий к переключению контекста, или многопоточный режим работы множества программ (в многопоточной среде). Переключение контекста предпочтительно служит для сохранения информации о состоянии выполняемой в данный момент программы и затем для загрузки информации о состоянии другой вызываемой программы. Информация о состоянии может сохраняться, например, в аппаратных регистрах или в памяти. Информация о состоянии предпочтительно содержит показание счетчика команд, указывающее очередную команду для выполнения, коды условий, сведения о преобразовании данных памяти и содержимое структурированного регистра. Переключение контекста может осуществляться аппаратными схемами, прикладными программами, программами операционной системы или аппаратно-программным кодом (микрокодом, пикокодом или лицензионным внутренним кодом (LIC) по отдельности или в сочетании).
Процессор осуществляет доступ к операндам в соответствии с определенными командами способами. Команда может содержать непосредственный операнд, в котором используется значение части команды, может содержать одно или несколько регистровых полей, прямо указывающих регистры общего назначения или регистры особого назначения (например, регистры с плавающей точкой). В команде могут использоваться подразумеваемые регистры, обозначаемые полем кода операции как операнды. В команде могут использоваться ячейки памяти для операндов. Ячейка памяти для операнда может обеспечиваться регистром, непосредственным полем или сочетанием регистров и непосредственного поля, примером чего является средство дальнего смещения на основе системы z/Architecture, в котором команда определяет базовый регистр, индексный регистр и непосредственное поле (поле смещения), которые суммируются с целью получения, например, адреса операнда в памяти. Под ячейкой в данном случае подразумевается ячейка основной памяти (основного запоминающего устройства), если не указано иное.
Как показано на фиг.15В, процессор осуществляет доступ к памяти с использованием блока 1410 загрузки/сохранения. Блок 1410 загрузки/сохранения может выполнять операцию загрузки путем получения адреса целевого операнда в памяти 1403 и загрузки операнда в регистр 1409 или другую ячейку памяти 1403 или может выполнять операцию сохранения путем получения адреса целевого операнда в памяти 1403 и сохранения данных, полученных из регистра 1409 или другой ячейки памяти 1403, в ячейке целевого операнда в памяти 1403. Блок 1410 загрузки/сохранения может действовать по предположению и осуществлять доступ к памяти в последовательности, которая не соответствует последовательности команд, тем не менее блок 1410 загрузки/сохранения должен обеспечивать для программ видимость выполнения команды по порядку. Блок 1410 загрузки/сохранения может поддерживать связь с общими регистрами 1409, блоком 1406 декодирования/диспетчеризации, интерфейсом 1403 кэша/памяти или другими элементами 1555 и содержит различные регистровые схемы, АЛУ 1558 и управляющую логику 1563 для вычисления адресов ячеек запоминающего устройства и обеспечения последовательного потока для сохранения порядка следования операций. Некоторые операции могут выполняться не по порядку, но блок загрузки/сохранения обеспечивает функциональные возможности для того, чтобы выполняемые не по порядку операции выглядели для программы выполненными по порядку, как хорошо известно из техники.
Адреса, которые "видит" прикладная программа, предпочтительно часто именуются виртуальными адресами. Иногда виртуальные адреса именуются "логическими адресами" и "исполнительными адресами". Эти виртуальные адреса являются виртуальными в том смысле, что их перенаправляют в ячейку физической памяти посредством одной из ряда технологий динамического преобразования адреса (DAT), включая без ограничения простое приписывание величины смещения к виртуальному адресу, преобразование виртуального адреса посредством одной или нескольких таблиц перевода, которые предпочтительно содержат по меньшей мере таблицу сегментов и таблицу страниц по отдельности или в сочетании, предпочтительно таблицу сегментов, содержащую запись с указанием таблицы страниц. В системе z/Architecture предусмотрена иерархия преобразования, в которую входит первая таблица региона, вторая таблица региона, третья таблица региона, таблица сегментов и необязательная таблица страниц. Эффективность преобразования адресов часто повышается за счет использования буфера быстрого преобразования адреса (TLB), который содержит записи, отображающие виртуальный адрес соответствующей ячейки физической памяти. Записи создаются, когда DAT преобразует виртуальный адрес с использованием таблиц перевода. Затем при последующем использовании виртуального адреса может использоваться запись из быстродействующего TLB вместо доступа к таблицам медленного последовательного преобразования. Содержимым TLB может управлять ряд алгоритмов замещения, включая алгоритм замещения наиболее давней по использованию страницы (LRU).
В том случае, когда процессором является процессор мультипроцессорной системы, каждый процессор отвечает за сохранение совместно используемых ресурсов, таких как средства ввода-вывода, кэши, TLB и память, взаимно заблокированных для обеспечения непротиворечивости. Обычно для поддержания непротиворечивости кэшей используются технологии "слежения". Для облегчения совместного использования каждая строка кэша может помечаться в среде слежения как находящаяся в одном из следующих состояний, включающих состояние совместного использования, состояние монопольного использования, измененное состояние, недействительное состояние и т.п.
Блоки 1404 ввода-вывода (фиг.14) обеспечивают процессор средствами подключения к периферийным устройствам, включая, например, накопители на магнитной ленте, накопители на дисках, принтеры, дисплеи и сети. Блоки ввода-вывода представлены в компьютерной программе программными драйверами. В мэйнфреймах, таких как z/Series производства IBM, блоки ввода-вывода мэйнфрейма являются адаптерами каналов и адаптерами открытых систем и обеспечивают связь между операционной системой и периферийными устройствами.
Кроме того, одна или несколько особенностей настоящего изобретения могут выгодно применяться в вычислительных средах других типов. В качестве примера, среда может содержать эмулятор (например, программные или другие механизмы эмуляции), в которых эмулируется конкретная архитектура (включая, например, выполнение команд, структурированные функции, такие как преобразование адреса, и структурированные регистры) или ее сокращенная версия (например, в собственной компьютерной системе, имеющей процессор и память). В такой среде за счет одной или нескольких эмулирующих функций эмулятора может быть реализована одна или несколько особенностей настоящего изобретения, несмотря на то, что компьютер, в котором выполняется эмулятор, может иметь архитектуру, отличающуюся от эмулируемых возможностей. В качестве одного из примеров в режиме эмуляции декодируется конкретная эмулируемая команда или операция и создается соответствующая эмулирующая функция с целью реализации отдельной команды или операции.
В эмулирующей среде хост-компьютер содержит, например, память для хранения команд и данных; блок выборки команд для выборки команд из памяти и необязательно локальной буферизации выбранных команд; блок декодирования команд для приема команд от блока выборки команд и определения типа команд, которые были выбраны; и блок выполнения команд для выполнения команд. Выполнение может предусматривать загрузку данных из памяти в регистр; сохранение данных из регистра в памяти; или выполнение арифметической или логической операции какого-либо типа, определяемой блоком декодирования. В одном из примеров каждый блок реализован посредством программного обеспечения. Например, выполняемые блоками операции реализованы в виде одной или нескольких подпрограмм в программном обеспечении эмулятора.
В частности, в мэйнфрейме структурированные машинные команды используются программаторами, обычно современными программаторами на языке "С" посредством компилирующего приложения. Эти команды, хранящиеся в запоминающей среде, могут выполняться в собственной системе команд сервера IBM на основе z/Architecture или в качестве альтернативы в машинах на основе других архитектур. Они могут эмулироваться в существующих и будущих серверах на основе мэйнфреймов IBM и в других машинах IBM (например, серверах pSeries и xSeries). Они могут выполняться в операционной системе Linux разнообразными машинами, использующими аппаратное обеспечение производства IBM, Intel, AMD™, Sun Microsystems и других компаний. Помимо выполнения этим аппаратным обеспечением на основе Z/Architecture, может использоваться Linux, а также машины, использующие эмуляцию Hercules (смотри http://www.hercules-390.org), UMX или FSI (Fundamental Software, Inc) (смотри www.funsoft.com), когда выполнение обычно происходит в режиме эмуляции. В режиме эмуляции эмулирующее программное обеспечение выполняется собственным процессором, эмулирующим архитектуру эмулируемого процессора.
Собственный процессор обычно выполняет эмулирующее программное обеспечение, представляющее собой аппаратно-программное обеспечение или собственную операционную систему для эмуляции эмулируемого процессора. Эмулирующее программное обеспечение отвечает за выборку и выполнение команд архитектуры эмулируемого процессора. Эмулирующее программное обеспечение поддерживает счетчик эмулируемых команд для слежения за границами команд. Эмулирующее программное обеспечение может осуществлять выборку одной или нескольких эмулируемых машинных команд за один раз и преобразование одной или нескольких эмулируемых машинных команд в соответствующую группу собственных машинных команд для выполнения собственным процессором. Эти преобразованные команды могут помещаться в кэш, что позволяет ускорять преобразование. Тем не менее, эмулирующее программное обеспечение должно поддерживать правила архитектуры эмулируемого процессора с тем, чтобы обеспечивать правильную работу операционных систем и приложений, написанных для эмулируемого процессора. Кроме того, эмулирующее программное обеспечение должно обеспечивать ресурсы, указанные архитектурой эмулируемого процессора, включая без ограничения управляющие регистры, регистры общего назначения, регистры с плавающей точкой, функцию динамического преобразования адреса, включая таблицы сегментов и таблицы страниц, например механизмы прерывания, механизмы переключения контекста, часы истинного времени (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; и многие другие, проиллюстрированы разнообразные известные способы эмуляции формата команд, структурированного для отличающейся машины, в целевой машине, доступные для специалистов в данной области техники.
На фиг.16 проиллюстрирован один из примеров известной из техники эмулирующей компьютерной хост-системы 1620, которая эмулирует компьютерную хост-систему 1100', имеющую хост-архитектуру. Хост-процессором (ЦП) 1601 в компьютерной хост-системе 1620 эмуляции является хост-процессор (или виртуальный хост-процессор) эмуляции, представляющий собой процессор 1621 эмуляции со структурой собственных команд, отличающейся от структуры команд процессора 1601 хост-компьютера 1100'. Компьютерная хост-система 1620 эмуляции имеет память 1622, доступную для процессора 1621 эмуляции. В примере осуществления память 1622 разделена на память 1625 хост-компьютера и память 1626 программ эмуляции. Память 1625 хост-компьютера доступна для программ эмулируемого хост-компьютера 1620 в зависимости от архитектуры хост-компьютера. Процессор 1621 эмуляции выполняет собственные команды структурированной системы команд, структура которых отличается от структуры команд эмулируемого процессора 1601 и которые извлекаются из памяти 1626 программ эмуляции, и может осуществлять выборку хост-команды для выполнения из программы в памяти 1625 хост-компьютера путем применения одной или нескольких команд из программы контроля последовательности и выборки/декодирования (Sequence & Access/Decode), которая может декодировать выбранную хост-команду(-ы) и определять программу выполнения собственных команд эмуляции функции выбранной хост-команды. Другие средства, которые предусмотрены в архитектуре компьютерной хост-системы 1100', могут эмулироваться программами структурированных средств (Architected Facilities Routines), включая такие средства, как, например, регистры общего назначения, управляющие регистры, поддержка подсистемы динамического преобразования адреса и ввода-вывода и кэш-память процессора. Программы эмуляции также могут использовать функции, доступные в процессоре 1621 эмуляции (такие как общие регистры и динамическое преобразование виртуальных адресов) для повышения производительности программ эмуляции. Также может быть предусмотрено особое программное обеспечение и механизмы разгрузки, облегчающие процессору 1621 эмуляцию функции хост-компьютера 1100'.
Используемая в описании терминология имеет целью описание лишь частных вариантов осуществления, а не ограничение изобретения. Подразумевается, что используемые в описании формы единственного числа включают также формы множественного числа, если из контекста ясно не следует иное. Дополнительно подразумевается, что термины "содержит" и(или) "содержащий", используемые в описании, означают присутствие указанных признаков, чисел, шагов, операций, элементов и(или) компонентов, но не исключают присутствие или добавление одного или нескольких других признаков, чисел, шагов, операций, элементов, компонентов и(или) их групп.
Подразумевается, что соответствующие структуры, материалы, действия и эквиваленты всех элементов "средство или шаг плюс функция" следующей далее формулы изобретения, если таковые существуют, включают любую структуру, материал или действие для выполнения функции в сочетании с другими конкретно заявленными средствами. Описание настоящего изобретения представлено в качестве иллюстрации и не имеет целью исчерпать или ограничить изобретение раскрытой формой. Для специалистов в данной области техники бесспорны многочисленные модификации и разновидности, не выходящие за пределы объема и существа изобретения. Выбранный и описанный вариант осуществления имеет целью наилучшим образом пояснить принципы изобретения и его практическое применение, а также позволить специалистам в данной области техники понять изобретение, поскольку предусмотрены различные варианты осуществления с различными модификациями, рассчитанными на конкретное применение.