КОМАНДА НА ВЫПОЛНЕНИЕ ОПЕРАЦИИ ПРИСВОЕНИЯ ЗНАКА ДЕСЯТИЧНОМУ ЧИСЛУ
INSTRUCTION TO PERFORM OPERATION OF ASSIGNING DECIMAL NUMBER

Область техники
Один или несколько аспектов относятся, в целом, к обработке в вычислительной среде, и прежде всего к обеспечению такой обработки. Уровень техники
Выполняемые в процессоре вычислительной среды приложения управляют логикой работы процессора. Приложения созданы с использованием языков программирования, разработанных для сообщения команд процессору. Имеются различные типы языков программирования, и каждый язык может использовать один или несколько типов кодировок для представления данных.
Например, двоично-кодированное десятичное число (BCD) является типом кодирования предназначенных для исходной среды данных в языках программирования COBOL и PL/I, и является также поддерживаемым типом данных в системе управления базами данных DB2. Посредством языка и расширений библиотеки классов, другие языки, такие как С и Java, также поддерживают некоторые виды типов данных BCD. Java и все основанные на Java торговые марки и логотипы являются торговыми марками или зарегистрированными торговыми марками компании Oracle и/или ее филиалов.
Один из вычислительных типов BCD, упакованное десятичное число, имеет кодирование, задающее один десятичный разряд, закодированный в каждых 4 битах памяти, за исключением самых младших 4 битов самого младшего байта, где закодирован 4-разрядный код знака. Код знака может быть представлен любым нечисловым 4-битовым значением, покрывающим шестнадцатеричные значения от 0xА до 0xF. Например, значение +123 может быть закодировано в двух байтах памяти как шестнадцатеричное 123С.
В предназначенном для отображения типе BCD, зонированном десятичном числе, также используют этот тип кодирования знака. Значение +123 в зонированном десятичном числе кодируют в трех байтах памяти как шестнадцатеричное F1 F2 С3. Код знака перекрывает самые старшие 4 бита самого младшего байта.
Соответствия кодов знака значениям знака являются следующими: 0хА: + 0хВ:
0хС: + (выбранная кодировка знака плюс) 0xD: - (выбранная кодировка знака минус) 0хЕ: + 0xF + (выбранная кодировка без знака)
Как отмечено выше, некоторые коды знака обозначены как канонические или выбранные кодировки. Эти означает, хотя любой из этих знаков может быть принят на вводе, и производимый компилятором код должен производить только выбранные кодировки на выводе (то есть, в зависимости как от указанного типа данных, имеющие знак переменные используют 0хС или 0xD, а не имеющие знака переменные используют 0xF).
Не имеющие знака переменные не являются «беззнаковыми», но вместо этого, они могут иметь любую кодировку (даже кодировку знака минус) на вводе, но в силу соблюдения правил языка, произведенный компилятором код должен генерировать на выводе код знака 0xF для выражения (включающего в себя, в дополнение к арифметическим выражениям, простые перемещения и предварительные сравнения).
Для выполнения операции присвоения знака выходным данным используют многоадресные команды. Проблема для компилятора состоит в способе эффективной генерации кода для покрытия огромного числа возможных кодировок для многих комбинаций имеющих знак и не имеющих знака типов переменных и операций (например, перемещения, дополнения, отрицания, абсолютного значения).
Связанная проблема для конструкции аппаратной части состоит в способе компактного кодирования всех этих различных возможностей при условии соответствия пределам кодирования команды, а также предотвращения загрязнения устойчивой совокупности возможных операционных кодировок в архитектуре многочисленными существующими и возможными в будущем командами.
Поскольку на переменные BCD традиционно воздействуют посредством команд типа «память-память» (SS), настройка кода знака зачастую вовлекает в себя дополнительные операции в памяти, которые могут замедлять функционирование современных процессоров с изменением последовательности выполняемых команд (ООО).
Дополнительная проблема состоит в обеспечении чувствительности к генерации совместимых результатов в исключительных случаях. Например, один язык или среда могут диктовать обязательность аппаратного исключения, когда входной код знака не является допустимым (например, числовой разряд в положении кода знака для не имеющей знака переменной), но для строгой совместимости в других случаях, недопустимое кодирование должно быть проигнорировано, и обработано всего лишь как не имеющее знака (поскольку значение + против - не является фактически рассматриваемым для не имеющих знака переменных).
Поэтому в уровне техники имеется потребность в рассмотрении вышеупомянутой проблемы.
Сущность изобретения
При рассмотрении с позиции первого аспекта, настоящее изобретение предоставляет компьютерно-реализуемый способ обеспечения обработки в вычислительной среде, причем компьютерно-реализуемый способ содержит: получение команды для выполнения, команды на выполнение операции присвоения знака из числа нескольких сконфигурированных для команды операций присвоения знака, и выполнение команды, выполнение, включающее в себя: выбор, по меньшей мере, части входного операнда в качестве результата, подлежащего размещению в выбранном местоположении, причем выбор основан на элементе управления команды, причем элемент управления команды указывает на задаваемый пользователем размер входного операнда, подлежащий выбору в качестве результата, выявление знака результата на основании нескольких критериев, причем нескольких критериев включают в себя значение результата, полученное на основании элемента управления команды, имеющего первое фиксированное соотношение или второе фиксированное соотношение относительно выбранного значения, и сохранение результата и знака в выбранном местоположении для предоставления имеющего знак вывода, который подлежит использованию при обработке в вычислительной среде.
При рассмотрении с позиции другого аспекта, настоящее изобретение предоставляет компьютерную систему для обеспечения обработки в вычислительной среде, компьютерную систему содержащую: память, и взаимодействующий с памятью процессор, причем компьютерная система выполнена для осуществления способа, причем способ содержит: получение команды для выполнения, команды на выполнение операции присвоения знака из числа нескольких сконфигурированных для команды операций присвоения знака, и выполнение команды, выполнение, включающее в себя: выбор, по меньшей мере, части входного операнда в качестве результата, подлежащего размещению в выбранном местоположении, причем выбор основан на элементе управления команды, причем элемент управления команды указывает на задаваемый пользователем размер входного операнда, подлежащий выбору в качестве результата, выявление знака результата на основании нескольких критериев, причем нескольких критериев включают в себя значение результата, полученное на основании элемента управления команды, имеющего первое фиксированное соотношение или второе фиксированное соотношение относительно выбранного значения, и сохранение результата и знака в выбранном местоположении для предоставления имеющего знак вывода, который подлежит использованию при обработке в вычислительной среде.
При рассмотрении с позиции другого аспекта, настоящее изобретение предоставляет компьютерный программный продукт для обеспечения обработки в вычислительной среде, компьютерный программный продукт, содержащий машиночитаемый информационный носитель, считываемый посредством устройства обработки данных, и сохраняющий подлежащие выполнению посредством устройства обработки данных команды для осуществления способа для выполнения этапов изобретения.
При рассмотрении с позиции другого аспекта, настоящее изобретение предоставляет компьютерную программу, содержащую сегменты программного кода, сохраняемую на машиночитаемом носителе и загружаемую во внутреннюю память цифровой вычислительной машины, когда данная программа выполняется на компьютере для выполнения этапов изобретения.
При рассмотрении с позиции другого аспекта, настоящее изобретение предоставляет компьютерную программу, содержащую сегменты программного кода, сохраняемую на машиночитаемом носителе и загружаемую во внутреннюю память системы согласно изобретению, когда данная программа выполняется системой для выполнения этапов изобретения.
Недостатки известного уровня техники преодолены, а дополнительные преимущества обеспечены посредством предоставления компьютерного программного продукта для обеспечения обработки в вычислительной среде. Компьютерный программный продукт содержит информационный носитель, который может быть считан посредством устройства обработки данных, и который сохраняет подлежащие выполнению посредством устройства обработки данных команды для осуществления способа. Способ включает в себя, например, получение команды для выполнения, команды на выполнение операции присвоения знака из числа нескольких сконфигурированных для команды операций присвоения знака. Команда выполняется, и выполнение включает в себя выбор, по меньшей мере, части входного операнда в качестве результата, подлежащего размещению в выбранном местоположении. Выбор основан на элементе управления команды, причем элемент управления команды указывает на задаваемый пользователем размер входного операнда, подлежащего выбору в качестве результата. Знак результата выявляют на основании причем нескольких критериев включают в себя значение результата, полученное на основании элемента управления команды, имеющего первое фиксированное соотношение или второе фиксированное соотношение относительно выбранного значения. Результат и знак сохраняют в выбранном местоположении для предоставления имеющего знак вывода, который подлежит использованию при обработке в вычислительной среде.
Использование, вместо многоадресных команд, одной единственной команды (например, архитектурно спроектированной машинной команды) для выполнения операции присвоения знака уменьшает число подлежащих выборке, декодированию и выполнению команд, а также улучшает обработку и повышает производительность системы.
Например, первое фиксированное соотношение является равенством, второе фиксированное соотношение является неравенством, а выбранное значение является нолем.
В одном варианте осуществления, по меньшей мере, часть входного операнда включает в себя несколько выбранных разрядов входного операнда, причем число выбранных разрядов задано элементом управления команды. Например, несколько выбранных разрядов включают в себя несколько самых правых разрядов входного операнда.
В качестве примера, элемент управления предоставлен в поле непосредственной адресации команды.
Кроме того, в одном варианте осуществления, несколько критериев, кроме того, включают в себя подлежащую выполнению операцию присвоения знака. Однако, в другом варианте осуществления, несколько критериев, кроме того, включают в себя по меньшей мере один критерий, выбранный из группы критериев, включающей в себя: подлежащую выполнению операцию присвоения знака, знак входного операнда и элемент управления кодом положительного знака команды.
Например, несколько операций присвоения знака включают в себя поддержку, дополнение, принудительное задание положительного и отрицательного значений.
В другом варианте осуществления, выполнение, кроме того, включает в себя проверку допустимости знака входного операнда на основании другого элемента управления команды, указывающего на необходимость проверки допустимости.
В одном примере выбранное местоположение является регистром, причем регистр задан с помощью по меньшей мере одного поля команды. По меньшей мере одно поле включает в себя, например, поле регистра, задающее номер регистра, и поле расширения, задающее дополнительное значение, которое подлежит добавлению к номеру регистра.
Относящиеся к одному или нескольким аспектам способы и системы также описаны и заявлены в настоящем документе. Кроме того, относящиеся к одному или нескольким аспектам услуги также описаны и могут быть заявлены в настоящем документе.
Посредством методов настоящего изобретения осуществляются дополнительные признаки и преимущества. Другие варианты осуществления и аспекты подробно описаны в настоящем документе и считаются частью заявленного изобретения.
Краткое описание чертежей
Один или несколько аспектов, прежде всего, указаны и явным образом заявлены в качестве примеров в пунктах формулы изобретения в конце технического описания. Ранее указанные и другие цели, признаки и преимущества являются очевидными из последующего подробного описания, предпринятого совместно с сопровождающими чертежами, на которых:
Фиг. 1А изображает один пример вычислительной среды для охвата и использования одного или нескольких аспектов настоящего изобретения,
Фиг. 1Б изображает дополнительные подробности процессора на фиг. 1 А, согласно аспекту настоящего изобретения,
Фиг. 2А изображает другой пример вычислительной среды для охвата и использования одного или нескольких аспектов настоящего изобретения,
Фиг. 2Б изображает более подробную информацию по памяти на фиг. 2А,
Фиг. 3А изображают один пример команды на выполнение векторной операции присвоения знака десятичному числу, согласно аспекту настоящего изобретения,
Фиг. 3Б изображает один вариант осуществления элемента управления полем непосредственной адресации команды на выполнение векторной операции присвоения знака десятичному числу на фиг. 3А, согласно аспекту настоящего изобретения,
Фиг. 3В изображает один вариант осуществления поля маски команды на выполнение векторной операции присвоения знака десятичному числу на фиг. 3А, согласно аспекту настоящего изобретения,
Фиг. 3Г изображает один вариант осуществления элемента управления другим полем непосредственной адресации команды на выполнение векторной операции присвоения знака десятичному числу на фиг. 3А, согласно аспекту настоящего изобретения,
Фиг. 4 изображает один пример таблицы результирующих кодов знака для различных операций присвоения знака и результатов, согласно аспекту настоящего изобретения,
Фиг. 5 изображает один пример связанной с командой на выполнение векторной операции присвоения знака десятичному числу обработки, согласно аспекту настоящего изобретения,
Фиг. 6А-6Б изображают один пример обеспечения обработки в вычислительной среде, содержащей выполнение команды на выполнение векторной операции присвоения знака десятичному числу, согласно аспекту настоящего изобретения,
Фиг. 7 изображает один вариант осуществления облачной вычислительной среды, и
Фиг. 8 изображает один пример уровней модельной абстракции.
Подробное описание
Одни или несколько аспектов относятся к обеспечению обработки в вычислительной среде путем обеспечения возможности замены многоадресных команд, которые подлежат использованию для выполнения операции присвоения знака, единственной командой (например, единственной архитектурно спроектированной машинной командой на аппаратном/программном интерфейсе). В одном примере команда, упоминаемая в настоящем документе как команда на выполнение векторной операции присвоения знака десятичному числу, гибким и компактным образом обращается с различными настройками по знаку и логикой работы по поддержанию/подавлению исключений.
Один вариант осуществления вычислительной среды для охвата и использования одного или нескольких аспектов описан с отсылками на фиг. 1А. В одном примере вычислительная среда основана на Z/Архитектуре, предлагаемой International Business Machines Corporation, Армонк, Нью-Йорк. Один вариант осуществления Z/Архитектуры описан в публикации IBM под названием «z/Архитектура, принципы работы» (z/Architecture, Principles of Operation), публикация IBM №SA22-7832-10, март 2015.
В другом примере, вычислительная среда основана на архитектуре Power, предлагаемой International Business Machines Corporation, Армонк, Нью-Йорк. Один вариант осуществления Архитектуры Power описан в публикации «Power ISA™ версия 2.07 В» (Power ISA™ Version 2.07 В), International Business Machines Corporation, от 9 апреля 2015.
Вычислительная среда может также быть основана на другой архитектуре, в том числе, но не ограничиваясь, на архитектуре Intel х86. Intel и Itanium являются торговыми марками или зарегистрированными торговыми марками Intel Corporation или ее филиалов в Соединенных Штатах и других странах. Имеются также и другие примеры.
Как показано на фиг. 1А, вычислительная среда 100 включает в себя, например, узел 10, имеющий, например, компьютерную систему/сервер 12, которая может быть использована совместно с многочисленными другими средами, вычислительными системами или конфигурациями общего назначения или особого назначения. Примеры известных вычислительных систем, сред и/или конфигураций, которые могут подойти для использования с компьютерной системой/сервером 12, включают в себя, но ими не ограничиваются, системы персонального компьютера (ПК), серверные компьютерные системы, тонкие клиенты, толстые клиенты, наладонные или переносные устройства, многопроцессорные системы, основанные на микропроцессорах системы, декодеры каналов кабельного телевидения, программируемую бытовую электронику, сетевые персональные компьютеры, миникомпьютерные системы, мэйнфреймовые компьютерные системы, а также распределенные облачные вычислительные среды, включающие в себя любые из вышеупомянутых систем или устройств, и т.п.
Компьютерная система/сервер 12 может быть описана в общем контексте выполняемых компьютерной системой команд, таких как выполняемые компьютерной системой программные модули. Обычно, программные модули могут включать в себя подпрограммы, программы, объекты, компоненты, логику, структуры данных и тому подобные элементы, которые выполняют конкретные задачи или реализуют конкретные абстрактные типы данных. Компьютерная система/сервер 12 может быть применена во многих вычислительных средах, в том числе, но не ограничиваясь, в распределенных облачных вычислительных средах, где задачи выполняют связанные посредством коммуникационной сети отдаленные устройства обработки. В распределенной среде облачных вычислений программные модули могут быть расположены как в локальных, так и в удаленных носителях информации компьютерной системы, содержащих запоминающие устройства памяти.
Как показано на фиг. 1А, компьютерная система/сервер 12 показана в виде вычислительного устройства общего назначения. Компоненты компьютерной системы/сервера 12 могут включать в себя, но не ими ограничиваются, один или несколько процессоров или вычислительных устройств 16, системную память 28, и шину 18, которая соединяет с процессором 16 различные компоненты системы, включающие в себя системную память 28.
Шина 18 представляет собой один или более из числа любых нескольких типов структур шины, включая сюда шину памяти или контроллер памяти, периферийную шину, ускоренный графический порт, а также шину процессора или локальную шину, использующую любую из ряда шинных архитектур. В качестве примера, но не ограничения, такая архитектура включает в себя шину Промышленной стандартной архитектуры (ISA), шину Микроканальной архитектуры (МСА), шину Расширенной ISA архитектуры (EISA), локальную шину Ассоциации по стандартам в области видео-электроники (VESA) и шину Взаимодействия периферийных компонентов (PCI).
Компьютерная система/сервер 12 обычно включает в себя ряд считываемых компьютерной системой носителей. Такие носители могут быть представлены любыми доступными носителями, который являются доступными посредством компьютерной системы/сервера 12, и которые включают в себя как энергозависимые, так и энергонезависимые носители, съемные и несъемные носители.
Системная память 28 может включать в себя считываемые компьютерной системой носители в виде энергозависимой памяти, такие как оперативная память (RAM) 30 и/или кэш-память 32. Компьютерная система/сервер 12, кроме того, может включать в себя и другие съемные и несъемные, энергозависимые и энергонезависимые информационные носители компьютерной системы. Исключительно в качестве примера, может быть предоставлена система 34 хранения для считывания из несъемных, энергонезависимых магнитных носителей (не показанных и обычно называемых «жестким диском») и для записи в них. Хотя не показаны, могут быть предоставлены магнитный дисковод для считывания из несъемного, энергонезависимого магнитного диска (например, «гибкого диска») и для записи в него, и оптический дисковод для считывания из несъемного, энергонезависимого оптического диска, такого как CD-ROM, DVD-ROM или другие оптические носители, и для записи в них. В таких реализациях каждый дисковод может быть присоединен к шине 18 посредством одного или нескольких интерфейсов носителей данных. Как, кроме того, изображено и описано ниже, память 28 может включать в себя по меньшей мере один программный продукт, имеющий набор (например, по меньшей мере один) программных модулей, которые сконфигурированы для выполнения функций вариантов осуществления настоящего изобретения.
В качестве примера, но не ограничения, программа/сервисная программа 40, имеющая набор (по меньшей мере один) программных модулей 42, может быть сохранена в памяти 28, равно как операционная система, одна или несколько прикладных программ, другие программные модули и данные программы. Каждый элемент из числа операционной системы, одной или нескольких прикладных программ, других программных модулей и данных программы или некоторая комбинация из них может включать в себя реализацию сетевого среды. Программные модули 42 в основном выполняют функции и/или методологии предпочтительных вариантов осуществления настоящего изобретения, как они описаны в настоящем документе.
Компьютерная система/сервер 12 может также сообщаться с одним или несколькими внешними устройствами 14, такими как клавиатура, позиционирующее устройство, дисплей 24, и т.д., с одним или несколькими устройствами, обеспечивающими пользователю взаимодействие с компьютерной системой/сервером 12, и/или любыми устройствами (например, сетевой платой, модемом и т.д.), которые обеспечивают компьютерной системе/серверу 12 сообщение с одним или несколькими другими вычислительными устройствами. Такая коммуникация может происходить через интерфейсы 22 ввода/вывода (I/O). Кроме того, компьютерная система/сервер 12 может сообщаться через сетевой адаптер 20 с одной или несколькими сетями, такими как локальная сеть (LAN), общая глобальная сеть (WAN) и/или сеть общего пользования (например, Интернет). Как изображено, сетевой адаптер 20 сообщается с другими компонентами компьютерной системы/сервера 12 через шину 18. Следует понимать, что совместно с компьютерной системой/сервером 12 могут быть использованы, хотя и не показаны, другие аппаратные компоненты и/или компоненты программного обеспечения. Примеры, в том числе, но не ограничиваясь: микрокод, драйверы устройств, резервные вычислительные устройства, массивы внешних дисководов, системы RAID (массивы недорогих дисковых накопителей с избыточностью), устройства записи на ленту, системы архивного хранения данных и т.д.
Например, процессор 16 включает в себя несколько используемых для выполнения команд функциональных компонентов. Как изображено на фиг. 1Б, эти функциональные компоненты включают в себя, например, компонент 120 выборки команды для выборки подлежащих выполнению команд, устройство 122 декодирования команд для декодирования выбранных команд и для получения операндов декодированных команд, компонент 124 выполнения команд для выполнения декодированных команд, компонент 126 доступа к памяти для доступа, в случае необходимости, к памяти для выполнения команд, и компонент 130 перезаписи для предоставления результатов выполненных команд. Один или несколько из этих компонентов, согласно аспекту настоящего изобретения, могут быть использованы для выполнения операции 136 присвоения знака, как дополнительно описано ниже.
Процессор 16 также включает в себя, в одном варианте осуществления, один или несколько регистров 140 для использования посредством одного или нескольких из числа функциональных компонентов.
Другой вариант осуществления вычислительной среды для охвата и использования одного или нескольких аспектов описан с отсылками на фиг. 2А. В этом примере вычислительная среда 200 включает в себя, например, предназначенное для исходной среды центральное вычислительное устройство (CPU) 202, память 204, а также одно или несколько устройств ввода-вывода и/или интерфейсов 206, соединенных друг с другом, например, через одну или несколько шин 208 и/или других присоединений. Например, вычислительная среда 200 может включать в себя процессор PowerPC или сервер pSeries, предлагаемые International Business Machines Corporation, Армонк, Нью-Йорк, HP Superdome с процессорами Intel Itanium II, предлагаемый Hewlett Packard, Пало-Альто, Калифорния, и/или другие машины, основанные на архитектурах, предлагаемых International Business Machines Corporation, Hewlett Packard, Intel, Oracle или другими. IBM, PowerPC, pSeries, Архитектуре Power, z Systems, z/Architecture является торговыми марками International Business Machines Corporation, зарегистрированными в нескольких юрисдикциях по всему миру.
Предназначенное для исходной среды центральное вычислительное устройство 202 включает в себя один или несколько предназначенных для исходной среды регистров 210, таких как один или несколько регистров общего назначения и/или один или несколько регистров особого назначения, используемых в процессе обработки в среде. Эти регистры включают в себя информацию, представляющую состояние среды на какой-либо конкретный момент времени.
Кроме того, предназначенное для исходной среды центральное вычислительное устройство 202 выполняет команды и код, которые сохраняются в памяти 204. В одном конкретном примере центральное вычислительное устройство выполняет код 212 эмулятора, сохраняемый в памяти 204. Этот код позволяет вычислительной среде, сконфигурированной в одной архитектуре, эмулировать другую архитектуру. Например, код 212 эмулятора позволяет основанным на отличных от z/Архитектуры архитектурах машинам, таким как процессоры PowerPC, серверы pSeries, серверы HP Superdome или другим, эмулировать z/Архитектуру и выполнять программное обеспечение и команды, разработанные на основе z/Архитектуры.
Дополнительные, относящиеся к коду 212 эмулятора подробности приведены с отсылками на фиг. 2Б. Сохраняемые в памяти 204 гостевые команды 250 содержат команды программного обеспечения (например, коррелирующие с машинными командами), которые были разработаны для выполнения в архитектуре, отличной от таковой для предназначенного для исходной среды CPU 202. Например, гостевые команды 250 могут быть разработаны для выполнения на процессоре z/Архитектуры, но вместо этого, эмулируются на предназначенном для исходной среды CPU 202, которое может быть представлено, например, процессором Intel Itanium II. В одном примере код 212 эмулятора включает в себя подпрограмму 252 выборки команд для получения одной или нескольких гостевых команд 250 из памяти 204 и, факультативно, для предоставления локальной буферизации для полученных команд. Он также включает в себя подпрограмму 254 трансляции команд для выявления типа полученной гостевой команды и для трансляции гостевой команды в одну или несколько соответствующих собственных команд 256. Такая трансляция включает в себя, например, идентификацию функции, которая подлежит выполнению посредством гостевой команды, и выбор предназначенной для исходной среды команды (команд) для выполнения этой функции.
Кроме того, код 212 эмулятора включает в себя подпрограмму 260 управления эмуляцией для принуждения команд исходной среды к выполнению. Подпрограмма 260 управления эмуляцией может принудить предназначенное для исходной среды CPU 202 к выполнению подпрограммы команд исходной среды, которые эмулируют одну или несколько ранее полученных гостевых команд и, в конце такого выполнения, возвращают управление подпрограмме выборки команд для эмуляции получения следующей гостевой команды или группы гостевых команд. Выполнение команд 256 исходной среды может включать в себя загрузку данных в регистр из памяти 204, сохранение данных обратно в память из регистра, или выполнение арифметической или логической операции некоторого типа, как задано подпрограммой трансляции.
Каждая подпрограмма, например, реализуется в программном обеспечении, сохраняемом в памяти и выполняемом посредством предназначенного для исходной среды центрального вычислительного устройства 202. В других примерах, одна или несколько из числа подпрограмм или операций, реализуются во встроенном программном обеспечении, аппаратных средствах, программном обеспечении или в некоторой комбинации из этих средств. Регистры эмулированного процессора могут быть эмулированы с помощью регистров 210 предназначенного для исходной среды CPU или при помощи местоположений в памяти 204. В предпочтительных вариантах осуществления гостевые команды 250, команды 256 исходной среды и код 212 эмулятора могут находиться в той же самой памяти или могут быть рассредоточены среди различных запоминающих устройств.
При рассмотрении в настоящем документе, встроенное программное обеспечение включает в себя, например, микрокод, милликод и/или макрокод процессора. Оно включает в себя, например, команды аппаратного уровня и/или структуры данных, используемые в реализации высокоуровневого машинного кода. В одном варианте осуществления оно включает в себя, например, проприетарный код, обычно поставляемый как микрокод, который включает в себя выверенное программное обеспечение или микрокод, специфичный для используемого оборудования и управляющий доступом операционной системы к оборудованию системы.
Гостевая команда 250, которую получают, транслируют и выполняют, представлена, например, описанной в настоящем документе командой на выполнение векторной операции присвоения знака десятичному числу. Команду, которая имеет одну архитектуру (например, Z/Архитектуру), выбирают из памяти, транслируют и представляют в виде последовательности команд 256 исходной среды другой архитектуры (например, PowerPC, pSeries, Intel и т.д.). Такие команды исходной среды затем выполняют.
Как указано в настоящем документе, имеются многие возможные кодировки для различных комбинаций имеющего знак и не имеющего знак типов переменных и операций (например, перемещения, дополнение, отрицание, абсолютное значение и т.д.). Одна из решаемых компилятором проблем состоит в эффективной генерации кода для покрытия многих возможных кодировок. Связанная проблема для конструкции аппаратной части состоит в способе компактного кодирования всех этих различных возможностей при условии соответствия пределам кодирования команды, а также предотвращения загрязнения устойчивой совокупности возможных операционных кодировок в архитектуре многочисленными существующими и возможными в будущем командами.
Поскольку на переменные BCD традиционно воздействуют посредством команд типа «память-память» (SS), настройка кода знака зачастую вовлекает в себя дополнительные операции в памяти, которые могут замедлять функционирование современных процессоров с изменением последовательности выполняемых команд (ООО).
Дополнительная проблема состоит в обеспечении чувствительности к генерации совместимых результатов в исключительных случаях. Например, один язык или среда могут диктовать обязательность аппаратного исключения, когда входной код знака не является допустимым (например, числовой разряд в положении кода знака для не имеющей знака переменной), но для строгой совместимости в других случаях, недопустимое кодирование должно быть проигнорировано, и обработано всего лишь как не имеющее знака (поскольку значение + против - не является фактически рассматриваемым для не имеющих знака переменных).
Многие операции по настройке знака, даже для простых перемещений от одной переменной к другой, используют по меньшей мере две машинные команды: одну - для перемещения данных, а также одну или несколько последующих команд - для задания знака. Поскольку знак не может быть задан до окончания перемещения данных, образуется зависимость от данных, которая может способствовать замедлению работы процессора ООО.
В качестве примера, когда не имеющая знака переменная должна быть расширена, одна последовательность должна использовать команду ZAP (недопущения нолей) для расширения, сопровождаемую 01 (логическим ИЛИ с непосредственной адресацией) или MVN (перемещением численных данных) для задания знака в 0xF (поскольку ZAP задает только 0хС или 0xD). Это уже составляет две команды. Кроме того, поскольку ZAP проверяет входные коды знака, даже эта последовательность не может быть использована, поскольку может произойти исключение аппаратного уровня, если входной код знака не является допустимым. Вместо этого, используют еще более длинную и более затратную последовательность с целью достижения совместимости для логики работы по расширению для этого типа не имеющей знака переменной.
Таким образом, согласно одному или нескольким аспектам настоящего изобретения, предоставлена команда (например, единственная архитектурно спроектированная машинная команда на аппаратном/программном интерфейсе) для гибкого и компактного обращения с различными логиками работы для настройки знака и поддержания/подавления исключений. Эта команда, упоминаемая в настоящем документе как команда на выполнение векторной операции присвоения знака десятичному числу, имеет входной и выходной операнды, а также способность к выполнению разнообразных манипуляций со знаками и их настройками как части перемещения данных от ввода к выводу (вместо выполнения их в качестве последующей операции).
В вариантах осуществления, команда имеет гибкие элемент управления по знаку и элемент управления проверки знака, что обеспечивает возможность точной регулировки выполнения логики работы операции присвоения знака в случаях исключений, например, при недопустимых кодах знака. В другом варианте осуществления, команда может также включать в себя или иметь доступ к элементу управления для избирательной проверки допустимости числовых разрядов. Другие изменения также являются возможными.
Кодировка команды на выполнение векторной операции присвоения знака десятичному числу имеет несколько частей, объединенных для достижения компактным образом гибкого и тонко регулируемого управления настройками знака для большого спектра операций и типов ввода/вывода.
Эти части включают в себя, например:
1) Задание вводного и выводного операндов. Например, операнды задают в регистрах, однако, кодировка в оперативной памяти (например, задание суммы базового адреса и смещения) также является возможным вариантом осуществления, равно как и другие варианты осуществления.
2) Счет разрядов результата (RDC): Число (например, от 1 до 31 или от 1 до 64 в зависимости от максимальных дозволенных размеров) для задания количества самых правых разрядов входного операнда для размещения в местоположении выходного операнда. Являются возможными операции как усечения, так и расширения. В зависимости от настройки системы, индикатор переполнения может быть возбужден в случае потери значащих разрядов.
3) Операция присвоения знака (SO): Эта часть кодировки команды задает конкретную выполняемую операцию по присвоению знака. Например, SO может указывать на следующие обстоятельства:
- происходит простое перемещение, поэтому, код знака должен быть поддержан от ввода до вывода,
- код знака должен быть дополнен (переключен от положительного к отрицательному, или от отрицательного к положительному) от ввода до вывода,
- входному коду знака должно быть принудительно задано положительное значение на выводе независимо от входного значения знака (то есть, операция по типу абсолютного значения),
- входному коду знака должно быть принудительно задано отрицательное значение на выводе независимо от входного значения знака.
4) Код положительного знака (PC): Эта часть кодировки команды управляет тем, должен ли выходной код знака для положительных значений результата быть закодирован как 0xF (1111 в двоичном коде) или 0хС (1100 в двоичном коде).
5) Проверка правильности по знаку (SV) входного операнда: Эта часть кодировки команды управляет тем, должна ли происходить проверка правильности по знаку (и соответствующее аппаратное исключение для недопустимых кодов знака) для операций принудительного задания положительного и отрицательного значений знака. Этот элемент управления обеспечивает пользователям операции по присвоению знака десятичному числу возможность поддержания строгой совместимости по исключениям в присутствии возможных недопустимых кодировок знака. Этот тип элемента управления может быть использован, например, при выполнении двоичной трансляции (иногда называемой двоичной оптимизацией), когда должна быть поддержана строгая совместимость с исходной логикой работы, даже в присутствии недопустимого кода/данных. В одном варианте осуществления, настройка SV=0 для операций принудительного задания положительного и отрицательного значений знака указывает на пропуск проверки допустимости, а SV=1 указывает на проверку на недопустимые знаки (в этом варианте осуществления, проверка допустимости происходит для операций присвоениязнака, которые, по сути, некоторым образом используют входной код знака в противовес перезаписи).
6) Набор условных кодов (CS): Команда на выполнение векторной операции присвоения знака десятичному числу также обеспечивает пользователю возможность запроса на задание условных кодов на основании значения конечного результата. Как часть операции, предоставлены настройки для указания на значение результата, равного нолю, меньшего ноля и большего ноля, а также указатель на наличие переполнения (усечение значащих разрядов).
В одном варианте осуществления все вышеупомянутые настройки могут быть закодированы всего лишь в 6 байтах (что также включает в себя код операции и описанный ниже RXB) закодированного текста, при этом несколько битов остаются свободными для будущих улучшений.
Код знака результата задают, например, посредством комбинации в составе, например, операции присвоения знака (SO), знака второго операнда, количества разрядов результата (RDC) и настроек положительного кода знака (PC).
Настройки и дополнительные детали команды на выполнение векторной операции присвоения знака десятичному числу описаны ниже. В одном варианте осуществления, команда на выполнение векторной операции присвоения знака десятичному числу является частью векторного средства, поставляющего, например, векторы постоянного размера в пределах от одного до шестнадцати элементов. Каждый вектор включает в себя данные, на которые воздействуют заданные в средстве векторные команды. В одном варианте осуществления, когда вектор составлен из множественных элементов, каждый элемент подвергают обработке параллельно с другими элементами. Завершения выполнения команды не происходит до завершения обработки всех элементов. В других вариантах осуществления элементы подвергают обработке частично параллельным и/или последовательным образом.
Векторные команды могут быть реализованы как части различных архитектур, в том числе, но не ограничиваясь, Z/Архитектуры, Архитектуры Power, х86, IA-32, IA-64 и т.д. Хотя в настоящем документе описаны варианты осуществления для Z/Архитектуры, описанная в настоящем документе векторная команда, а также один или несколько других аспектов могут быть основаны на многих других архитектурах. Z/Архитектура является только одним из примеров.
В одном варианте осуществления, в котором векторное средство реализовано как часть Z/Архитектуры, для использования векторных регистров и команд, управляющему элементу по активации векторных команд и управляющему элементу для регистров в заданном управляющем регистре (например, управляющем регистре 0) задают значение, например, единица. Если векторное средство инсталлировано, а векторная команда выполняется без задания значения управляющим элементам по активации, распознается исключение данных. Если векторное средство не инсталлировано, а векторная команда выполняется, распознается исключение операции.
В одном варианте осуществления имеются 32 векторных регистра, а для других типов регистров может быть построено соответствие на сектор векторных регистров. Например, регистровый файл может включать в себя 32 векторных регистра, а каждый регистр имеет длину в 128 битов. Шестнадцать регистров с плавающей точкой, которые имеют длину в 64 бита, могут перекрывать векторные регистры. Таким образом, в качестве примера, когда регистр 2 с плавающей точкой изменяют, векторный регистр 2 также подвергается изменению. Другие построения соответствий для других типов регистров также являются возможными.
Векторные данные представлены в памяти, например, в той же последовательности слева направо, что и другие форматы данных. Биты формата данных, пронумерованные 0-7, составляют байт в крайнем левом местоположении байта (с самым малым номером) в памяти, биты 8-15 формируют байт в следующем последовательном местоположении, и так далее. В другом примере, векторные данные могут быть представлены в памяти в другой последовательности, такой как справа налево.
1
1
Один пример команды на выполнение векторной операции присвоения знака десятичному числу описан с отсылками на фиг. 3А-3Г. Как показано, команда имеет несколько полей, причем поле может иметь связанный с ним нижний индекс. Связанный с полем команды нижний индекс обозначает операнд, к которому применяют поле. Например, связанный с векторным регистром V нижний индекс 1 обозначает, что регистр в V включает в себя первый операнд и т.д. Например, операнд регистра имеет длину в один регистр, которая составляет, например, 128 битов.
1
2
4
5
3
Как показано на фиг. 3А, в одном варианте осуществления, команда 300 на выполнение векторной операции присвоения знака десятичному числу включает в себя поля 302а, 302b кода операции, указывающие на векторную операцию присвоения знака десятичному числу, поле 304 первого векторного регистра, используемое для обозначения первого векторного регистра (V), поле 306 второго векторного регистра, используемое для обозначения второго векторного регистра (V), первое поле (I) 308 непосредственной адресации, поле (М) 310 маски, второе поле (I) 312 непосредственной адресации, и поле 314 регистра бита расширения (RXB), каждое из которых описано ниже. В одном варианте осуществления, поля являются отдельными и независимыми друг от друга, однако, в других вариантах осуществления, поля в числе более одного могут быть объединены друг с другом. Дополнительная информация относительно этих полей приведена ниже.
Поле 304 векторного регистра используют для указания на векторный регистр, который должен сохранять первый операнд, первый операнд, включающий в себя измененный знак, сгенерированный посредством команды и заданного числа разрядов второго операнда. Операнд и результат представлены, например, в имеющем знак упакованном десятичном формате. В одном примере в имеющем знак упакованном десятичном формате каждый байт содержит два десятичных разряда (D), за исключением самого правого байта, содержащего знак (S) направо от десятичного разряда.
Второй операнд (то есть, входной операнд) содержится в векторном регистре, заданном с помощью поля 306 векторного регистра. В одном примере каждое из полей 304, 306, 308 векторных регистров используют совместно с полем 314 RXB для обозначения векторного регистра.
Например, поле 314 RXB включает в себя старший значащий бит для назначенного векторному регистру операнда. Биты для обозначений регистров, которые не заданы посредством команды, должны быть зарезервированы, и им должно быть задано нулевое значение. Старший значащий бит объединяют в цепочку, например, слева от четырех-битового обозначения регистра в составе поля векторного регистра, для создания пяти-битового обозначения векторного регистра.
В одном примере поле RXB включает в себя четыре бита (например, биты 0-3), причем биты заданы следующим образом.
0 - Самый старший бит для обозначения первого векторного регистра (например, в битах 8-11) команды.
1 - Самый старший бит для обозначения второго векторного регистра (например, в битах 12-15) команды, если вообще есть в наличии.
2 - Самый старший бит для обозначения третьего векторного регистра (например, в битах 16-19) команды, если вообще есть в наличии.
3 - Самый старший бит для обозначения четвертого векторного регистра (например, в битах 32-35) команды, если вообще есть в наличии.
Каждому биту задано нулевое или единичное значение, например, код ассемблера в зависимости от номера регистра. Например, для регистров 0-15 биту задано значение 0, для регистров 16-31 биту задано значение 1 и т.д.
1
В одном варианте осуществления, каждый RXB бит является битом расширения для конкретного местоположения в команде, которое включает в себя один или несколько векторных регистров. Например, бит 0 из RXB является битом расширения для местоположения 8-11, которое приписано, например, V и т.д. Прежде всего, для векторных регистров, содержащий операнд регистр задан с помощью, например, четырех-битового поля в составе поля регистра с дополнением соответствующего ему бита (RXB) расширения регистра в качестве самого старшего бита. Например, когда четырех-битовым полем является 0110, а битом расширения является 0, то пять битовых полей 00110 указывают на номер регистра 6. В другом варианте осуществления, поле RXB включает в себя дополнительные биты, и большее единицы число битов используют в качестве расширения для каждого вектора или местоположения.
4
4
Поле 308 (I) с непосредственной адресацией задает четвертый операнд, включающий в себя несколько элементов управления. Например, поле 308 Iвключает в себя следующие элементы, как показано на фиг. 3Б:
• Зарезервировано: Биты 0-3 игнорируются, но должны содержать ноли, в противном случае, программа может не иметь совместимости в будущем.
• Операция присвоения знака (SO) 342: Биты 4-5 задают операцию присвоения знака, используемую при задании кода знака результата. Код знака результата является функцией, например, элемента управления SO, знака второго операнда, разрядов второго операнда, элемента управления RDC, и бита PC, как указано на фиг. 4.
• Код положительного знака (PC) 344: Когда бит 6 представлен единицей, при положительном результате используют код знака 1111. Когда бит 6 представлен нолем, при положительном результате используют код знака 1100.
• Проверка правильности по знаку 346 (SV) операнда 2: Когда бит 7 представлен единицей, а элемент управления SO принудительно задает положительное или отрицательное значение, код знака второго операнда проверяют на допустимость. Если бит 7 представлен нолем, а элемент управления SO принудительно задает положительное или отрицательное значение, код знака второго операнда не проверяют на допустимость. Когда элемент SO управления задает, поддерживает или дополняет знак, код знака второго операнда проверяют на допустимость независимо от битового значения SV.
5
Поле 310 М включает в себя, например, следующие элементы управления, как показано на фиг. 3 В:
• Зарезервировано: Биты 0-2 игнорируются и должны содержать ноли, в противном случае, программа может не иметь совместимости в будущем.
• Набор условных кодов (CS) 348: Когда бит 3 представлен нолем, условный код не задают, и он остается неизменным. Когда бит 3 представлен единицей, условный код задают, как указано в разделе по итоговому условному коду ниже.
Итоговый условный код
Когда CS бит представлен единицей, условный код задают, например, следующим образом.
0 Результат равен нолю, переполнение отсутствует
1 Результат меньше ноля, переполнение отсутствует
2 Результат больше ноля, переполнение отсутствует
3 Переполнение
3
Когда бит CS представлен нолем, условный код остается неизменным. Поле 312 I включает в себя, например, следующие элементы управления, как показано на фиг.3Г:
• Зарезервировано: Биты 0-2 резервируются и должны содержать ноли. В противном случае, распознается исключение по спецификации.
• Счет разрядов результата (RDC): Биты 3-7 содержат не имеющее знака двоичное число, задающее число самых правых разрядов второго операнда, которые подлежат размещению в первом операнде. Если абсолютная величина второго операнда превышает самое большое десятичное число, которое может быть представлено с помощью заданного числа разрядов, происходит десятичное переполнение, и если маска десятичного переполнения представлена единицей, происходит, например прерывание программы по десятичному переполнению. Если поле RDC представлено нолем, в одном варианте осуществления, распознается исключение по спецификации.
Хотя описаны различные поля и регистры, один или несколько аспектов настоящего изобретения могут использовать другие, дополнительные поля или регистры, или меньшее их число, или другие размеры полей или регистров и т.д. Являются возможными разнообразные изменения. Например, вместо заданных в явном виде регистров или полей команды могут быть использованы неявно задаваемые регистры. Кроме того, могут быть использованы регистры, отличные от векторных регистров. Кроме того, в других вариантах осуществления, могут быть выбраны другие разряды, такие как крайние левые разряды или другое подмножество. Опять-таки, другие изменения также являются возможными.
При функционировании одного варианта осуществления команды на выполнение векторной операции присвоения знака десятичному числу, измененный знак и заданное число самых правых разрядов второго операнда размещают в местоположении первого операнда, при этом другим разрядам задают нулевое значение. Операнды и результат имеют, например, имеющий знак упакованный десятичный формат.
Если элемент управления RDC не задает достаточного количества разрядов для размещения в них всех крайних левых ненулевых разрядов второго операнда, происходит десятичное переполнение. Операция завершается. Результат получают путем игнорирования разрядов переполнения, и если метка набора (CS) условных кодов представлена единицей, условному коду задают значение 3. Если маска десятичного переполнения, например, в слове состояния программы, представлена единицей, происходит прерывание программы по десятичному переполнению.
Если элемент управления RDC задает менее, например, тридцати одного разряда, в остальных крайних левых разрядах первого операнда размещают ноли.
В одном примере все разрядные коды второго операнда проверяют на допустимость. Код знака второго операнда проверяют на допустимость, за исключением тех случаев, когда элемент управления операции (SO) присвоения знака принудительно задает знаку результата положительное или отрицательное значение, а элемент управления проверки правильности по знаку (SV) операнда 2 представлен нолем.
Код знака результата является функцией, например, элемента управления SO, знака второго операнда, разрядов второго операнда, элемента управления счета разрядов результата RDC, и элемента управления кода положительного значения знака PC, как указано на фиг. 4. Например, когда SO (400)=00, значение разрядов второго операнда после применения RDC (402) является отличным от ноля, знак (V2) (404) второго операнда является положительным, и PC (406) представлен единицей, итоговый код знака (408) является шестнадцатеричным числом F (положительным) 410. Кроме того, в этом примере показано, что проверку достоверности выполняют 412 для кода знака входного операнда.
Хотя предоставлены различные примеры, изменения являются возможными без отступления от духа заявленных аспектов. Например, значения, включенные в состав используемых командой регистров и/или полей, в других вариантах осуществления могут быть расположены в других местоположениях, таких как ячейки памяти, и т.д. Являются возможными самые разнообразные вариации.
Более подробная информация относительно обработки связанного с одним вариантом осуществления команды на выполнение векторной операции присвоения знака десятичному числу описана с отсылками на фиг. 5. Обработку выполняют посредством по меньшей мере одного процессора.
3
1
4
4
Как показано на фиг. 5, первоначально, получают значение второго операнда, ЭТАП 500. В одном примере значение второго операнда включает в себя несколько разрядов, и производится выявление относительно допустимости этих разрядов, ИНФОРМАЦИОННЫЙ ЗАПРОС 502. Когда разряды не являются допустимыми, обработку команды на выполнение векторной операции присвоения знака десятичному числу завершают. Однако когда разряды являются допустимыми, обработку продолжают получением счета разрядов результата из поля I, ЭТАП 504. Кроме того, выбирают, по меньшей мере, часть второго операнда, ЭТАП 506. Например, выбирают самые правые разряды в числе, обозначенном в счете разрядов результата. Выбранную часть второго операнда размещают в выбранном местоположении, ЭТАП 508. В одном примере выбранное местоположение является регистром, обозначаемым с использованием поля V. В другом примере, выбранное местоположение находится в памяти или в каком-либо ином местоположении. Кроме того, задают знак для выбранной части второго операнда, ЭТАП 510. В одном примере знак задают с помощью нескольких критериев, включая сюда, например, операцию присвоения знака, как задано в поле I, применение порядка величины результата согласно RDC, знак второго операнда, и значение положительного кода знака, заданного в I. Получение на основании этих критериев итогового кода знака представлено на фиг. 4. Этот итоговый код знака затем размещают в выбранном местоположении наряду с заданным числом самых правых разрядов, ЭТАП 512. В одном примере заданное число самых правых разрядов и кода знака размещено в упакованном десятичном формате знака.
В настоящем документе описано средство для использования единственной архитектурно спроектированной команды для выполнения операции присвоения знака. Эта команда заменяет последовательность из одной или нескольких команд, и улучшает компьютерную обработку и производительность. В одном примере предоставлен инструмент для компактного и эффективного задания кодов знаков для десятичных чисел в упакованном формате.
Единственная команда (например, единственная архитектурно спроектированная команда) является способной к обращению, например, со следующими случаями: перемещение данных, а также настройка знака для 0хС, 0xD или 0xF, усечение данных при факультативном задании или сохранении знака, способность к подавлению проверки правильности для недостоверных входных данных (в качестве примера, это является обеспечивающей совместимость функциональной возможностью в варианте использования двоичной оптимизации), дополнение знака, и факультативное задание условного кода. Некоторые языки предоставляют аппаратное исключение по переполнению, но другие (например, COBOL) используют условный код для задаваемого пользователем действия.
Теперь вновь рассматривается описанный выше пример использования последовательности ZAP/OI для расширения не имеющей знака переменной. Такая логика работы может быть теперь достигнута с помощью команды на выполнение векторной операции присвоения знака десятичному числу путем задания RDC требуемого, более широкого итогового размера для принудительного задания положительного значения, и задания SV нулевого значения для пропуска проверки допустимости знака. Требуемая и полностью совместимая логика работы теперь достигнута посредством единственной команды.
Более подробная информация относительно обеспечения обработки в вычислительной среде, включая сюда выполнение команды на осуществление операции присвоения знака, описана с отсылками на фиг. 6А-6Б.
Как показано на фиг. 8А, в одном варианте осуществления, получают команду на выполнение операции присвоения знака из числа нескольких сконфигурированных для команды операций присвоения знака, ЭТАП 600, и команду выполняют, ЭТАП 602. Выполнение включает в себя, например, выбор, по меньшей мере, части входного операнда в качестве результата, подлежащего размещению в выбранном местоположении, ЭТАП 604. Выбор основан на элементе управления команды (606), причем элемент управления команды указывает на задаваемый пользователем размер входного операнда, подлежащего выбору в качестве результата (608). Производят выявление знака результата на основании нескольких критериев, ЭТАП 610. Несколько критериев включают в себя, например, значение результата, полученного на основании элемента управления команды, имеющего первое фиксированное соотношение или второе фиксированное соотношение относительно выбранного значения (612). Результат и знак сохраняют в выбранном местоположении для предоставления имеющего знак вывода, который подлежит использованию при обработке в вычислительной среде, ЭТАП 614.
Например, первое фиксированное соотношение является равенством, второе фиксированное соотношение является неравенством, а выбранное значение является нолем (616).
Кроме того, например, по меньшей мере, часть входного операнда включает в себя несколько выбранных разрядов (например, несколько самых правых разрядов) входного операнда, причем число выбранных разрядов задано посредством элемента управления команды (618). Кроме того, как показано на фиг. 6Б, в одном варианте осуществления, элемент управления предоставлен в поле непосредственной адресации команды (620).
Кроме того, например, несколько критериев, кроме того, включают в себя подлежащую выполнению операцию присвоения знака (622). Кроме того, в другом примере, несколько критериев включают в себя по меньшей мере один критерий, выбранный из группы критериев, включающих в себя операцию присвоения знака, которая подлежит выполнению, знак входного операнда и элемент управления кодом положительного знака команды (624).
Например, несколько операций присвоения знака включают в себя поддержку, дополнение, принудительное задание положительного и отрицательного значений (626).
В другом варианте осуществления, выполнение, кроме того, включает в себя проверку допустимости знака входного операнда на основании другого элемента управления команды, указывающего на необходимость проверки допустимости, ЭТАП 628.
Кроме того, в одном примере выбранное местоположение является регистром, причем регистр задан с помощью по меньшей мере одного поля команды (630). По меньшей мере одно поле включает в себя поле регистра, задающее номер регистра и поле расширения, задающее дополнительное значение, которое подлежит добавлению к номеру регистра (632).
Один или несколько аспектов могут относиться к облачным вычислениям.
Заранее подразумевается, что хотя настоящее раскрытие включает в себя подробное описание облачных вычислений, реализация изложенных в настоящем документе идей не ограничивается средой облачных вычислений. Напротив, варианты осуществления настоящего изобретения могут быть реализованы совместно с любым другим типом вычислительной среды, известного в настоящее время или разработанным позднее.
Облачные вычисления являются моделью предоставления услуг для обеспечения возможности удобного, в нужный момент времени, сетевого доступа к совместно используемому комплексу конфигурируемых вычислительных ресурсов (например, сетей, сетевых пропускных способностей, серверов, вычислительных мощностей, памяти, запоминающих устройств, приложений, виртуальных машин и услуг), который может быть быстро предоставлен и передан с минимальными управленческими затратами или взаимодействием с поставщиком услуг. Эта облачная модель может включать в себя по меньшей мере пять характеристик, по меньшей мере три модели услуг и по меньшей мере четыре модели развертывания.
Характеристики представлены следующим образом.
Самообслуживание в нужный момент времени: потребитель облачных услуг может в одностороннем порядке обеспечивать вычислительные возможности, такие как время сервера и ресурсы сетевого хранения, по мере необходимости автоматически, без необходимости в человеческом взаимодействии с провайдером услуги.
Широкий доступ к сети: возможности являются доступными по сети, а получение доступа производится посредством стандартных механизмов, что способствует использованию разнородных платформ тонкого или толстого клиента (например, мобильных телефонов, ноутбуков и PDA (личных электронных секретарей)).
Объединение ресурса: вычислительные ресурсы провайдера объединены для обслуживания множественных потребителей, использующих модель мультиарендатора, причем различные физические и виртуальные ресурсы динамично присваиваются и повторно присваиваются согласно потребности. Смысл независимости от местоположения состоит в том, что потребитель, в большинстве случаев, не имеет никакого контроля или знания относительно точного местоположения предоставляемых ресурсов, но может быть способным к определению местоположения на более высоком уровне абстракции (например, страна, состояние или центр обработки данных).
Быстрая адаптационная способность: инструменты могут быть предоставлены быстрым и адаптивным способом, в некоторых случаях автоматически, для быстрого горизонтального масштабирования с увеличением производительности и быстро возвращены системе для быстрого горизонтального масштабирования с уменьшением производительности. Для потребителя доступные к предоставлению инструменты зачастую представляются неограниченными, и могут быть приобретены в любом объеме в любое время.
Измеренная услуга: облачные системы автоматически управляют использованием ресурса и оптимизируют его путем усиления измерительного инструментария на некотором уровне абстракции, соответствующем типу услуги (например, хранения, обработки, пропускной способности и учетным записям активного пользователя). Использование ресурсов может быть подвергнуто мониторингу, управлению и протоколированию, что обеспечивает прозрачность как для провайдера, так и для потребителя используемой услуги.
Модели услуги представлены следующим образом.
Программное обеспечение как услуга (SaaS): потребителю предоставляется инструмент для использования приложений провайдера, работающих на облачной инфраструктуре. Приложения являются доступными с различных клиентских устройств через интерфейс тонкого клиента, такой как веб-браузер (например, интернет-почта). Потребитель не администрирует и не управляет базовой облачной инфраструктурой, содержащей сеть, серверы, операционные системы, запоминающие устройства или даже индивидуальные прикладные инструменты, за возможным исключением ограничений по настройке параметров конфигурации специфических для пользователя приложений.
Платформа как услуга (PaaS): потребителю предоставляется инструмент для развертывания на облачной инфраструктуре созданных или полученных потребителем приложений, созданных с помощью поддерживаемых провайдером языков программирования и программных средств. Потребитель не администрирует и не управляет базовой облачной инфраструктурой, содержащей сеть, серверы, операционные системы или запоминающие устройства, но управляет развертываемыми приложениями и, возможно, приложением, размещающим настройки среды.
Инфраструктура как услуга (IaaS): потребителю предоставляется инструмент для обеспечения обработки, хранения, сетей и других фундаментальных вычислительных ресурсов, с помощью которого потребитель может разворачивать и выполнять произвольное программное обеспечение, которое может включать в себя операционные системы и приложения. Потребитель не администрирует и не управляет базовой облачной инфраструктурой, но управляет операционными системами, запоминающими устройствами, развертываемыми приложениями и, возможно, имеет ограниченное управление выбором сетевых компонентов (например, межсетевых защитных экранов хоста).
Модели развертывания представлены следующим образом.
Частное облако: облачная инфраструктура действует исключительно для организации. Оно может управляться посредством организации или третьей стороны, и может быть реализовано внутри или вовне организации. Коллективное облако: облачную инфраструктуру совместно используют несколько организаций и поддерживает особое сообщество, которое имеет совместные интересы (например, главная цель работы, требования к защите, политика и соображения по контролю за соблюдением установленных требований). Оно может управляться посредством организации или третьей стороны, и может быть реализовано внутри или вовне организации.
Открытое облако: облачная инфраструктура сделана доступной для широкой публики или группы крупной отрасли, и принадлежит продающей облачные услуги организации.
Гибридное облако: облачная инфраструктура является сочетанием двух или более облаков (частного, коллективного или отрытого), которые остаются отличными от других объектами, но связаны друг с другом посредством стандартизированной или проприетарной технологии, обеспечивающей для данных и приложений мобильность (например, временное использование ресурсов открытого облака для выравнивания нагрузки между облаками).
Облачная вычислительная среда является услугой, ориентированной с вниманием на бесструктурность, слабую связность, модульный принцип и семантическую функциональную совместимость. В основе облачных вычислений находится инфраструктура, содержащая сеть из связанных узлов. Один такой узел является узлом 10, изображенным на фиг. 1А.
Вычислительный узел 10 является только одним примером подходящего узла облачных вычислений, и не предназначен для предположения какого-либо ограничения относительно объема использования или функциональности вариантов осуществления описанного в настоящем документе изобретения. В любом случае, узел 10 облачных вычислений способен к своей реализации и/или к выполнению любой из сформулированных выше функциональностей. При рассмотрении теперь фиг. 7, изображена показательная облачная вычислительная среда 50. Как показано, облачная вычислительная среда 50 содержит один или несколько узлов 10 облачных вычислений, с помощью которых могут сообщаться используемые облачными потребителями локальные вычислительные устройства, такие как, например, персональный цифровой секретарь (PDA) или сотовый телефон 54А, настольный компьютер 54В, портативный компьютер 54С, и/или автомобильная компьютерная система 54N. Узлы 10 могут сообщаться друг с другом. Они могут быть сгруппированы (не показано) физически или виртуально, в одну или несколько сетей, таких как частное, коллективное, открытое или гибридное облака, как описано выше, или в комбинацию из них. Это позволяет облачной вычислительной среде 50 предлагать инфраструктуру, платформы и/или программное обеспечение в качестве услуг, для получения которых облачный потребитель не должен поддерживать ресурсы на локальном вычислительном устройстве. Подразумевается, что показанные на фиг. 7 типы вычислительных устройств 54A-N предназначены исключительно для разъяснений и, что вычислительные узлы 10 и облачная вычислительная среда 50 являются выполнены с возможностью коммуникации с любым типом компьютеризированного устройства по любому типу сетевого и/или адресуемого через сеть присоединения (например, с помощью веб-браузера).
При рассмотрении теперь фиг. 8, показан ряд функциональных уровней абстракции, предоставляемых облачной вычислительной средой 50 (фиг. 7). Заранее подразумевается, что компоненты, уровни и функции, показанные на фиг. 8, предназначены исключительно для разъяснений, и ими не ограничены варианты осуществления изобретения. Как изображено, предоставлены следующие уровни и соответствующие функции:
Аппаратный и программный уровень 60 включает в себя аппаратные и программные компоненты. Примеры аппаратных компонентов включают в себя мэйнфреймы 61, основанные на архитектуре RISC (Компьютер с сокращенной системой команд) серверы 62, серверы 63, сверхкомпактные серверы 64, запоминающие устройства 65, а также сети и сетевые компоненты 66. В некоторых вариантах осуществления компоненты программного обеспечения включают в себя программное обеспечение серверного программного обеспечения 67 и программное обеспечение 68 баз данных.
Уровень 70 виртуализации предоставляет уровень абстракции, с которого могут быть предоставлены следующие примеры виртуальных объектов: виртуальные серверы 71, виртуальная память 72, виртуальные сети 73, включая сюда виртуальные частные сети, виртуальные приложения и операционные системы 74, а также виртуальные клиенты 75.
В одном примере уровень 80 управления может предоставлять описанные ниже функции. Функция 81 выделения ресурсов предоставляет динамическую поставку вычислительных ресурсов и других ресурсов, использующихся для выполнения задач в облачной вычислительной среде. Функция 82 измерения и оценки предоставляет отслеживание затрат по мере использования ресурсов в облачной вычислительной среде, а также выписку или выставление счетов за потребление этих ресурсов. В одном примере эти ресурсы могут содержать лицензии прикладного программного обеспечения. Функция безопасности предоставляет проверку идентификационных данных для облачных потребителей и задач, а также защиту данных и других ресурсов. Функция 83 пользовательского портала предоставляет доступ к облачной вычислительной среде для потребителей и системных администраторов. Функция 84 управления уровнем услуг предоставляет распределение ресурсов облачных вычислений и управление ими таким образом, что удовлетворяются необходимые уровни услуг. Функция 85 планирования и выполнения Соглашения об уровне услуг (SLA) предоставляет предварительную подготовку и приобретение ресурсов облачных вычислений, для которых в будущем ожидается соответствие требованиям согласно SLA.
Уровень 90 рабочих заданий предоставляет примеры функциональности, для которой может быть использована облачная вычислительная среда. Примеры рабочих заданий и функций, которые могут быть предоставлены на этом уровне, включают в себя: построение соответствий и передвижение 91 между объектами в базах данных, разработку программного обеспечения и управление его жизненным циклом 92, предоставление 93 образования в виде виртуальной аудитории, обработку 94 анализа данных, а также обработку 96 транзакций.
Настоящее изобретение может быть представлено системой, способом и/или компьютерным программным продуктом на любом возможном уровне интеграции в плане технической детализации. Компьютерный программный продукт может включать в себя машиночитаемый информационный носитель (или носители), имеющий на нем машиночитаемые программные команды для принуждения процессора к выполнению аспектов настоящего изобретения.
Машиночитаемый информационный носитель может быть представлен материальным устройством, которое выполнено с возможностью удержания и сохранения команды для использования посредством устройства выполнения команд. Машиночитаемый информационный носитель может быть представлен, например, в том числе, но не ограничиваясь, устройством электронной памяти, магнитным запоминающим устройством, оптическим запоминающим устройством, электромагнитным запоминающим устройством, полупроводниковым запоминающим устройством или любой подходящей комбинацией из вышеупомянутого. Неисчерпывающий список более конкретных примеров машиночитаемых информационных носителей включает в себя следующее: портативная компьютерная дискета, жесткий диск, оперативная память (RAM), постоянная память (ROM), стираемая программируемая постоянная память (EPROM или флэш-память), статическая оперативная память (SRAM), переносной компакт-диск для однократной записи данных (CD-ROM), цифровой универсальный диск (DVD), карта памяти, гибкий диск, механически закодированное устройство, такое как перфокарты или выступающие структуры в канавке с записанными на них командами, а также любая подходящая комбинация из вышеупомянутого. Машиночитаемый информационный носитель, как он рассматривается в настоящем документе, не подлежит истолкованию в качестве представленного преходящими сигналами как таковыми, такими как радиоволны или другие свободно распространяющиеся электромагнитные волны, электромагнитные волны, распространяющиеся через волновод или другие среды передачи (например, проходящие через волоконно-оптический кабель световые импульсы), или передаваемые через провода электрические сигналы.
Описанные в настоящем документе машиночитаемые программные команды могут быть загружены в соответствующие устройства вычисления/обработки с машиночитаемого информационного носителя или во внешний компьютер или во внешнее устройство хранения через сеть, например, Интернет, локальную сеть, глобальную сеть и/или беспроводную сеть. Сеть может содержать медные кабели передачи, волокна оптической передачи, беспроводную передачу, маршрутизаторы, брандмауэры, переключения, шлюзы и/или граничные серверы. Карта сетевого адаптера или сетевой интерфейс в каждом устройстве вычисления/обработки получает машиночитаемые программные команды из сети и направляет машиночитаемые программные команды для хранения в машиночитаемый информационный носитель в соответствующем устройстве вычисления/обработки.
Машиночитаемые программные команды для выполнения операций настоящего изобретения могут быть представлены командами ассемблера, командами архитектуры системы команд (ISA), машинными командами, машинно-зависимыми командами, микрокодом, командами встроенного программного обеспечения, присваивающими значение состоянию данными, конфигурационными данными для интегральной схемотехники, или иным исходным кодом или объектным кодом, записанным на любой комбинации из одного или нескольких языков программирования, включая сюда объектно-ориентированные языки программирования, такие как Smalltalk, С++ и т.п., а также языки процедурного программирования, такие как язык программирования «С» или подобные языки программирования. Машиночитаемые программные команды могут выполняться полностью на компьютере пользователя, частично на компьютере пользователя, как автономный пакет программного обеспечения, частично на компьютере пользователя и частично на удаленном компьютере или полностью на удаленном компьютере или сервере. В последнем сценарии удаленный компьютер может быть присоединен к компьютеру пользователя через любой тип сети, включая сюда локальную сеть (LAN) или глобальную сеть (WAN), или присоединение может быть сделано к внешнему компьютеру (например, через Интернет с использованием Интернет-провайдера). В некоторых вариантах осуществления, электронные схемы, включающие в себя, например, программируемые логические схемы, программируемые на месте вентильные матрицы (FPGA) или программируемые логические матрицы (PLA) могут выполнять машиночитаемые программные команды посредством использования информации о состоянии машиночитаемых программных команд для настройки электронной схемы с целью выполнения аспектов настоящего изобретения.
Аспекты настоящего изобретения описаны в настоящем документе с отсылками на иллюстрации в виде блок-схем и/или блок-диаграмм для способов, устройств (систем) и компьютерных программных продуктов согласно вариантам осуществления изобретения. Подразумевается, что каждый блок иллюстраций в виде блок-схем и/или блок-диаграмм, а также комбинации блоков на иллюстрациях в виде блок-схем и/или блок-диаграмм, могут быть реализованы посредством машиночитаемых программных команд.
Такие машиночитаемые программные команды могут быть предоставлены процессору универсального компьютера, специализированного компьютера или другого программируемого устройства обработки данных для образования машины таким образом, что выполняющиеся посредством процессора компьютера или другого программируемого устройства обработки данных команды создают средства для реализации функций/действий, заданных в блоке или блоках блок-схемы и/или блок-диаграммы. Такие машиночитаемые программные команды также могут быть сохранены в машиночитаемом информационном носителе, который может управлять компьютером, программируемым устройством обработки данных и/или другими устройствами для их функционирования особым способом таким образом, что сохраняющий на нем команды машиночитаемый информационный носитель представляет собой изделие, содержащее команды, которые реализуют аспекты функций/действий, заданных в блоке или блоках блок-схемы и/или блок-диаграммы.
Машиночитаемые программные команды могут также быть загружены в компьютер, другое программируемое устройство обработки данных или другое устройство для принуждения к выполнению на компьютере, другом программируемом устройстве или другом устройстве серии эксплуатационных этапов для получения такого компьютерно-реализованного процесса, что выполняемые на компьютере, другом программируемом устройстве или другом устройстве инструкции реализуют функции/действия, заданные в блоке или блоках блок-схемы и/или блок-диаграммы.
Блок-схемы и блок-диаграммы на чертежах показывают архитектуру, функциональность и функционирование возможных реализаций систем, способов и компьютерных программных продуктов согласно различным вариантам осуществления настоящего изобретения. В этом отношении каждый блок в блок-схемах или блок-диаграммах может представлять модуль, сегмент или участок команд, который содержит одну или несколько исполнимых команд для реализации указанной логической функции (функций). В некоторых альтернативных реализациях указанные в блоках функции могут осуществляться в порядке, отличном от приведенного на чертежах. Например, два блока, показанные по очереди, могут, фактически, быть выполнены по существу одновременно, или блоки могут иногда выполняться в обратном порядке, в зависимости от предусмотренной к выполнению функциональности.
Необходимо также отметить, что каждый блок на иллюстрациях в виде блок-схем и/или блок-диаграмм, а также в комбинациях блоков на иллюстрациях в виде блок-схем и/или блок-диаграмм, может быть реализован посредством основанных на аппаратных средствах систем особого назначения, которые выполняют указанные функции или действия или выполняют комбинации аппаратных и компьютерных команд особого назначения.
В дополнение к вышеупомянутому, один или несколько аспектов могут быть предоставлены, предложены, развернуты, управляемы, обслуживаемы и т.д. поставщиком услуг, предлагающим управление средами заказчика. Например, поставщик услуг может создавать, обслуживать, поддерживать и т.д. машинный код и/или компьютерную инфраструктуру, выполняющую один или несколько аспектов для одного или нескольких клиентов. В свою очередь, поставщик услуг может получать оплату от клиента в рамках соглашения о подписке и/или о сборах, в качестве примеров. Дополнительно или альтернативно, поставщик услуг может получать оплату от продажи рекламного содержимого одному или нескольким третьим лицам.
В одном аспекте, приложение может быть развернуто для выполнения одного или нескольких вариантов осуществления. В качестве примера, развертывание приложения предусматривает обеспечение компьютерной инфраструктуры, действующей для выполнения одного или нескольких вариантов осуществления.
В качестве другого аспекта, может быть развернута вычислительная инфраструктура, содержащая в вычислительной системе интегрирующий машиночитаемый код, в которой код, в сочетании с вычислительной системой, способен к выполнению одного или нескольких вариантов осуществления.
В качестве еще одного аспекта, может быть предоставлен способ интеграции содержащей интегрирующий машиночитаемый код вычислительной инфраструктуры в компьютерную систему. Компьютерная система содержит машиночитаемый носитель, причем компьютерный носитель содержит один или несколько вариантов осуществления. Код в сочетании с компьютерной системой способен к выполнению одного или нескольких вариантов осуществления.
Хотя различные варианты осуществления описаны выше, они являются только примерами. Например, вычислительные среды другой архитектуры могут быть использованы для охвата и использования одного или нескольких вариантов осуществления. Кроме того, могут быть использованы различные команды, форматы команд, поля команд и/или значения команд. Являются возможными разнообразные изменения.
Кроме того, могут быть использованы и оказаться выгодными другие типы вычислительных сред. В качестве примера, является применимой подходящая для сохранения и/или выполнения программного кода система обработки данных, которая включает в себя по меньшей мере два процессора, соединенных прямо или косвенно через системную шину с элементами памяти. Элементы памяти включают в себя, например, локальную память, используемую в процессе фактического выполнения программного кода, запоминающее устройство большого объема и кеш-память, которая предоставляет временное сохранение по меньшей мере части программного кода с целью уменьшения числа выборок из запоминающего устройства большого объема в процессе выполнения.
Устройства ввода-вывода или устройства I/O (в том числе, но не ограничиваясь, клавиатуры, дисплеи, позиционирующие устройства, DASD (запоминающее устройство прямого доступа), устройство записи на ленту, CD, DVD, карты флэш-памяти и другие носители памяти и т.д.) могут быть соединены с системой или непосредственно или через переходные контроллеры I/O. С системой также могут быть соединены сетевые адаптеры для предоставления системе обработки данных возможности установления соединения с другими системами обработки данных или с удаленными принтерами или с запоминающими устройствами посредством переходных частных сетей или сетей общего пользования. Модемы, кабельные модемы и платы Ethernet являются всего несколькими примерами из числа доступных типов сетевых адаптеров.
Используемая в настоящем документе терминология служит исключительно целям описания конкретных вариантов осуществления и не предназначается для ограничения изобретения. При использовании в настоящем документе, формы единственного числа предназначены для включения в себя также и форм множественного числа, если только контекст не указывает на иное недвусмысленным образом. Кроме того, подразумевается, что термины «содержит» и/или «содержащий» при их использовании в данном техническом описании задают присутствие заявленных признаков, целочисленных переменных, этапов, операций, элементов и/или компонентов, но не исключают присутствия или добавления одного или нескольких других признаков, целочисленных переменных, этапов, операций, элементов, компонентов и/или образованных ими групп.
Соответствующие структуры, материалы, действия и эквиваленты всех средств или этапов, равно как функциональные элементы в пунктах формулы изобретения ниже, если вообще есть в наличии, предназначаются для включения в себя любой структуры, материала или действия для выполнения функции в сочетании с другими требуемыми элементами, как конкретным образом заявлено. Описание одного или нескольких вариантов осуществления представлено в целях иллюстрации и описания, но не предназначается для полного охвата или ограничения изобретения в заявленном виде. Многие модификации и изменения являются очевидными для средних специалистов в области техники. Вариант осуществления был выбран и описан с целью наилучшего объяснения различных аспектов и практического применения, а также для обеспечения другим средним специалистам в области техники возможности понимания различных вариантов осуществления с различными модификациями, как они подходят для конкретного рассматриваемого использования.