Способ и компьютерная система для скрывания выбранных установленных функций многофункциональной команды

Иллюстрации

Показать все

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

Реферат

Область техники, к которой относится изобретение

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

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

Товарные знаки: IBM® является зарегистрированным товарным знаком International Business Machines Corporation (Армонк, штат Нью-Йорк, США). S/390, Z900 и z990 и z10, а названия других продуктов могут являться зарегистрированными товарными знаками или названиями продуктов International Business Machines Corporation или других компаний.

Начиная с появившихся в 60-х годах машин, известных как IBM® System 360, и до настоящего времени усилиями множества высокоодаренных инженеров IBM была создана особая архитектура, которая получила известность как "мэйнфрейм" в силу своей неотъемлемой принадлежности к вычислительной системе, и принципы работы которой определяют архитектуру машины путем описания команд, которые могут выполняться путем реализации в "мэйнфрейме" созданных изобретателями IBM команд, которые с учетом их существенной роли в течение многих лет включены в руководство IBM Principles of Operation. Восьмое издание руководства IBM® z/Architecture® Principles of Operation, опубликованное в феврале 2009 г., стало стандартным справочным материалом SA22-7832-07 и включено в описание серверов на основе мэйнфреймов IBM Z10TM.

На фиг.1A представлены характерные элементы известной из техники главной компьютерной системы 50. В компьютерной системе также могут применяться другие варианты размещения элементов, которые хорошо известны из техники. Характерный главный компьютер 50 содержит один или несколько ЦП 1, связанных с основным запоминающим устройством (памятью 2 компьютера), а также интерфейсы ввода-вывода для сопряжения с запоминающими устройствами 11 и подключения к сетям 10 для связи с другими компьютерами или SAN и т.п. ЦП 1 совместим с архитектурой, содержащей структурированную систему команд и структурированные функциональные возможности. ЦП 1 может осуществлять динамическую трансляцию 3 адреса (DAT) с целью преобразования адресов программ (виртуальных адресов) в действительный адрес памяти. DAT обычно содержит буфер 7 быстрого преобразования адреса (TLB) для кэширования преобразований, чтобы при последующих доступах к блоку памяти 2 компьютера не требовалась задержка трансляции адреса. Обычно между памятью 2 компьютера и процессором 1 используется кэш-память 9. Кэш-память 9 может являться иерархической и состоящей из кэша большой емкости, доступного для нескольких ЦП, и более быстродействующих кэшей (низкого уровня) меньшей емкости между кэшем большой емкости и каждым ЦП. В некоторых случаях реализации кэши низкого уровня разделены на отдельные кэши низкого уровня для вызова команд и доступа к данным. В одном из вариантов осуществления блок 4 вызова команд вызывает из памяти 2 команду посредством кэш-памяти 9. Команда декодируется в блоке 6 декодирования команд и отправляется (с другими командами в некоторых вариантах осуществления) в блоки 8 выполнения команд. Обычно используется несколько блоков 8 выполнения команд, например, блок выполнения арифметических команд, блок выполнения команд с плавающей точкой и блок выполнения команд перехода. Команда выполняется блоком, который в зависимости от необходимости осуществляет доступ к операндам из определяемых командами регистров или памяти. Если доступ (загрузка или сохранение) к операнду должен осуществляться из памяти 2, блок 5 загрузки/сохранения обычно обрабатывает процедуру доступа под управлением выполняемой команды. Команды могут выполняться в аппаратных схемах или во внутреннем микрокоде (аппаратно-программном обеспечении) или с использованием сочетания того и другого.

На фиг.1Б проиллюстрирован один из примеров известной из техники главной компьютерной системы 21 эмуляции, которая эмулирует главную компьютерную систему 50, имеющую главную архитектуру. Главным центральным процессором (ЦП) 1 в главной компьютерной системе 21 эмуляции является главный процессор (или виртуальный главный процессор) эмуляции, представляющий собой процессор 27 эмуляции со структурой собственных команд, отличающейся от структуры команд процессора 1 главного компьютера 50. Главная компьютерная система 21 эмуляции имеет память 22, доступную для процессора 27 эмуляции. В примере осуществления память 22 разделена на память 2 главного компьютера и память 23 программ эмуляции. Память 2 главного компьютера доступна для программ главного компьютера 21 эмуляции в зависимости от архитектуры главного компьютера. Процессор 27 эмуляции выполняет собственные команды структурированной системы команд, структура которых отличается от структуры команд эмулируемого процессора 1 и которые извлекаются из памяти 23 программ эмуляции, и может осуществлять выборку главной команды для выполнения из программы в памяти 2 главного компьютера путем применения одной или нескольких команд из программы контроля последовательности и выборки/декодирования (Sequence & Access/Decode), которая может декодировать выбранную главную команду(-ы) и определять программу выполнения собственных команд с целью эмуляции функции выбранной главной команды. Другие средства, которые предусмотрены в архитектуре главной компьютерной системы 50, могут эмулироваться программами структурированных средств (Architected Facilities Routines), включая такие средства, как, например, регистры общего назначения, управляющие регистры, поддержка подсистемы динамической трансляции адреса и ввода-вывода и кэш-память процессора. Программы эмуляции также могут использовать функции, доступные в процессоре 27 эмуляции (такие как общие регистры и динамическая трансляция виртуальных адресов) для повышения производительности программ эмуляции. Также может быть предусмотрено особое программное обеспечение и механизмы разгрузки, облегчающие процессору 27 эмуляцию функции главного компьютера 50.

В мэйнфрейме структурированные машинные команды используются программаторами, обычно современными программаторами на языке "С" посредством компилирующего приложения. Эти команды, хранящиеся в запоминающей среде, могут выполняться в собственной системе команд сервера IBM® на основе z/Architecture® или в качестве альтернативы в машинах на основе других архитектур. Они могут эмулироваться в существующих и будущих серверах на основе мэйнфреймов IBM® и в других машинах IBM® (например, серверах pSeries® и xSeries®). Они могут выполняться в операционной системе Linux разнообразными машинами, использующими аппаратное обеспечение производства IBM®, Intel®, AMD™, Sun Microsystems и других компаний. Помимо выполнения этим аппаратным обеспечением на основе системы Z/Architecture®, может использоваться Linux, а также машины, использующие эмуляцию, как описано на сайтах http://www.turbohercules.com, http://www.hercu и http://www.funsoft.com. В режиме эмуляции эмулирующее программное обеспечение выполняется собственным процессором, эмулирующим архитектуру эмулируемого процессора.

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

Декодируется конкретная эмулируемая команда, и вызывается подпрограмма для выполнения функции отдельной команды. Функция 23 эмулирующего программного обеспечения, эмулирующая функцию эмулируемого процессора 1, реализуется в подпрограмме или драйвере на языке "C" или каким-либо другим способом обеспечения драйвера для конкретного аппаратного обеспечения, доступным для специалистов в данной области техники, ознакомившихся с описанием предпочтительного варианта осуществления. В различных патентах, в которых предложена эмуляция программного и аппаратного обеспечения, включая без ограничения патент US 5551013 под названием "Multiprocessor for hardware emulation", выданный на имя Beausoleil и др., патент US 6009261 под названием "Preprocessing of stored target routines for emulating incompatible instructions on a target processor", выданный на имя Scalzi и др.; патент 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, проиллюстрированы разнообразные известные способы эмуляции формата команд, структурированного для отличающейся машины, в целевой машине, доступные для специалистов в данной области техники, а также используемые ими промышленные средства программного обеспечения.

Согласно публикации заявки US 2009/0222814 A1 от 3 сентября 2009 г. (заявитель - Astrand) под названием "Selective Exposure to USB Device Functionality for a Virtual Machine" приложение виртуальной машины (VM) может выполнять гостевую операционную систему (OC) и позволять гостевой OC подключаться к USB-устройствам, подключенным к компьютеру. Приложение VM может фильтровать функции, соответствующие USB-устройству с тем, чтобы для гостевой OC были доступны лишь некоторые из функций USB-устройства.

В статье Edel T.R. и др. под названием "Dynamic Instruction Set definition", IBM Technical Disclosure Bulletin, International Business Machines Corp., том 16, №6, 1 ноября 1973 г., стр. 1929-1930 дано определение набора команд, являющегося уникальным для каждого пользователя компьютера. В управляющем регистре аппаратного обеспечения содержится двоичный индикатор для каждой команды или класса команд, определяющий набор команд для пользователя. Всякий раз при попытке несанкционированного использования команды аппаратное обеспечение сигнализирует об исключительной ситуации. Возможности набора команд могут содержаться в профиле каждого пользователя и управляться системным администратором.

В заявке US 2004/230816 А1 описаны команда шифрования сообщения (CIPHER MESSAGE) (КМ) и команда шифрования сообщения со сцеплением (CIPHER MESSAG Е WITH CHAINING) (KMC), которые используются вместе с кодом функции, указывающим, какая из множества функций, таких как запрос (Query), алгоритм шифрования данных (Data Encryption Algorithm) (DEA), тройной DEA (128-разрядный) или тройной DEA (192-разрядный), должна выполняться.

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

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

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

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

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

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

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

В одном из вариантов осуществления многофункциональной командой является команда системы z/Architecture, состоящая из любого из следующего: криптографической команды, команды выполнения функции средства синхронизации (PerformTiming Facility Function, англ. сокр. PTFF) (ВФСС), команды выполнения операции с плавающей точкой (Perform Floating Point Operation) или команды выполнения заблокированной операции (Perform Locked Operation), при этом криптографической командой является любое из следующего: команда шифрования сообщения, команда вычисления промежуточного сообщения (Compute Intermediate Message), команда вычисления последнего сообщения (Compute Last Message), команда вычисления профиля последнего сообщения (Compute Last Message Digest), команда вычисления кода аутентификации сообщения (Compute Message Authentication Code), а в многофункциональной команде задана функция запроса; если многофункциональной командой является криптографическая команда или команда ВФСС, определяется заданный многофункциональной командой код выполняемой функции, содержащий функцию запроса, при этом сохраненным результирующим значением является множество разрядов, каждый из которых указывает, поддерживается ли соответствующий код функции; если многофункциональной командой является криптографическая команда или команда ВФСС, определяется заданный многофункциональной командой код выполняемой функции, не содержащий функцию запроса, и выполняется криптографическая функция или функция ВФСС в соответствии с полученным кодом функции; если многофункциональной командой является команда выполнения заблокированной операции или команда выполнения операции с плавающей точкой, а заданный многофункциональной командой разряд проверки равен 1, определяется, установлен ли заданный многофункциональной командой код функции, при этом сохраненным результирующим значением является значение кода условия; и, если многофункциональной командой является команда выполнения заблокированной операции или команда выполнения операции с плавающей точкой, а заданный многофункциональной командой разряд проверки равен 0, выполняется функция с плавающей точкой или заблокированная операция в соответствии с полученным кодом функции.

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

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

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

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

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

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

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

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

сети,

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

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

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

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

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

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

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

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

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

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

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

на фиг.12-17 - блок-схемы методов блокирования запроса функции.

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

Варианты осуществления могут быть реализованы на практике посредством программного обеспечения (иногда называемого лицензионным внутренним кодом, аппаратно-программным обеспечением, микрокодом, милликодом, пикокодом и т.п., что во всех случаях согласуется с настоящим изобретением). Как показано на фиг.1A, обычно процессор, также известный как ЦП (центральный процессор) 1 системы 50, получает доступ к программному коду системы программного обеспечения, в котором воплощено настоящее изобретение, посредством долговременных запоминающих сред 11, таких как ПЗУ на компакт-дисках, накопитель на магнитной ленте или накопитель на жестких дисках. Программный код системы программного обеспечения может быть воплощен в любой из разнообразных известных сред для применения с системой обработки данных, такой как дискета, накопитель на жестких дисках или ПЗУ на компакт-дисках. Код может распределяться в таких средах или может распределяться пользователям из памяти 2 компьютера или запоминающего устройства одной компьютерной системы по сети 10 другим компьютерным системам для применения пользователями таких других систем.

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

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

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

На фиг.2 проиллюстрирована сеть 200 обработки данных, в которой может быть реализован на практике один из вариантов осуществления. В сеть 200 обработки данных может входить множество отдельных сетей, таких как беспроводная сеть и проводная сеть, в каждую из которых может входить множество отдельных рабочих станций 101, 201, 202, 203, 204. Кроме того, как известно специалистам в данной области техники, в нее может входить одна или несколько ЛВС, в которую может входить множество интеллектуальных рабочих станций, связанных с главным процессором.

Как также показано на фиг.2, в сети также могут входить мэйнфреймы или серверы, такие как шлюз (клиент-сервер 206) или сервер приложений (удаленный сервер 208, который может осуществлять доступ к хранилищу данных, а также может быть доступен непосредственно с рабочей станции 205). Шлюз 206 служит точкой входа в каждую сеть 207. Шлюз необходим при подсоединении одного сетевого протокола к другому. Шлюз 206 предпочтительно может быть связан с другой сетью (например, сетью Интернет 207) линией связи. Шлюз 206 также может быть непосредственно связан с одной или несколькими рабочими станциями 101, 201, 202, 203, 204 с использованием линии связи. Шлюз может быть реализован с использованием сервера IBM eServerтм zSeries®zl0тм производства IBM Corp.

Доступ к программному коду системы программного обеспечения обычно осуществляет процессор 106 системы 101 посредством долговременных запоминающих сред 107, таких как ПЗУ на компакт-дисках, или накопитель на жестких дисках. Программный код системы программного обеспечения может быть воплощен в любой из разнообразных известных сред для применения с системой обработки данных, такой как дискета, накопитель на жестких дисках или ПЗУ на компакт-дисках. Код может распределяться в таких средах или может распределяться пользователям 210, 211 из памяти компьютера или запоминающего устройства одной компьютерной системы по сети другим компьютерным системам для применения пользователями таких других систем.

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

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

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

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

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

Затем вызванные команды выполняются процессором 106. В одном из вариантов осуществления вызванная команда(-ы) передается блоку 306 диспетчеризации блока выборки. Блок диспетчеризации декодирует команду(-ы) и пересылает информацию о декодированной команде(-ах) соответствующим блокам 307, 308, 310. Блок 307 выполнения обычно принимает информацию о декодированных арифметических командах от блока 305 вызова команд и выполняет арифметические операции с операндами в соответствии с содержащимся в команде кодом операции. Операнды предоставляются блоку 307 выполнения предпочтительно из памяти 105, структурированных регистров 309 или из непосредственного поля выполняемой команды. Сохраненные результаты выполнения хранятся в памяти 105, регистрах 309 или в другом машинном аппаратном обеспечении (таком как управляющие регистры, регистры PSW и т.п.).

Рассмотрим фиг.5, на которой показан один из примеров среды виртуальной машины (VM). Программа-гипервизор (которая сама может являться операционной системой (ОС), такой как система zVM производства IBM) действует в мультипроцессорном аппаратном обеспечении, содержащем множество физических процессоров, физическую основную память и физические адаптеры для связи с периферийными устройствами ввода-вывода, включающими запоминающее устройство, сети, дисплеи и т.п. Гипервизор создает отображения VM (например, VM1, VM2 и VM3), позволяющие программному обеспечению, включая ОС и прикладные программы, действовать в виртуальной машине, использующей виртуальные ресурсы. Программному обеспечению, действующему в VM, не известно о том, что оно действует в VM, при этом оно использует виртуальные ресурсы, как если бы они являлись физическими ресурсами. Операционная система zVM производства IBM способна создавать отображения "гостей", каждое из которых фактически является виртуальной машиной. Кроме того, любая гостевая программа zVM может сама выполнять операционную систему zVM, создавая "гостей второго уровня". Соответственно, виртуальная машина (отображение гостя) может входить в иерархию виртуальных машины, при этом каждая zVM играет роль гипервизора для отображений своих гостей. С другой стороны, мультипроцессорная платформа может состоять из "физических разделов", каждый из которых может представлять собой закрепленные ресурсы (процессоры, память, систему ввода-вывода). Каждый физический раздел представляет собой VM, поскольку программному обеспечению, действующему в разделе, не известно о ресурсах машины, не закрепленной за разделом. Соответственно, ресурсы машины "виртуализируются". В другом варианте осуществления главная машина может поддерживать логические разделы, каждый из которых представляет собой VM.

Визуализация представлена, например, в техническом описании VMware® под названием "Virtualization Overview" и в описании инфраструктуры 3 VMware® "VMware VMotion and CPU Compatibility". Кроме того, в патентной заявке US 2009/0070760 под названием "VIRTUAL MACHINE (VM) MIGRATION BETWEEN PROCESSOR ARCHITECTURES" (заявитель - Khatri и др.), поданной 6 сентября 2007 г., рассмотрена эмуляция определенного набора средств, обеспечивающая миграцию VM между сходными пулами машин путем маскирования выборочных разрядов регистра CPUID.

Как показано на фиг.6, каждая VM может иметь отличающуюся OC и отличающиеся приложения. Например, OC1 может представлять собой систему z/OS производства IBM, а OC2 может представлять собой систему zLinux производства IBM, или все OC могут представлять собой одинаковые OC, такие как z/OS.

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

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