Команда умножения и сдвига десятичного числа

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

 

Уровень техники

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

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

Например, масштабированные десятичные целые числа (также известные как масштабированные двоично-кодированные десятичные числа/масштабированные BCD), являются общеупотребительным типом данных для многих программ на языках COBOL и PL/I, а также в системах управления базами данных DB2. Масштабированное число BCD является числом BCD с добавлением к нему дескриптора формата (n.k), который интерпретирует число BCD как имеющее n разрядов перед десятичной точкой и k разрядов после десятичной точки (то есть, k дробных разрядов), или как десятичное целое число, подлежащее умножению на 10-k.

Выполнение сложения и вычитания на масштабированных данных BCD с одинаковым k-параметром имеет непосредственный характер, поскольку данные являются корректно масштабированными, и результат имеет то же число дробных разрядов. Умножение является более сложным, поскольку промежуточное произведение с полной шириной двух (n.k) чисел имеет (2n.2k) разрядов, но требуемым результатом обычно является (2n.k).

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

Сущность изобретения

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

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

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

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

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

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

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

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

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

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

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

Фиг. 1Б изображает более подробную информацию по процессору на фиг. 1А, согласно аспекту настоящего изобретения,

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

Фиг. 2Б изображает более подробную информацию по памяти на фиг. 2А,

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

Фиг. 3Б изображает один вариант осуществления элементов управления полем непосредственной адресации команды векторного умножения и сдвига десятичного числа на фиг. 3А, согласно аспекту настоящего изобретения,

Фиг. 3В изображает один вариант осуществления элементов управления полем маски команды векторного умножения и сдвига десятичного числа на фиг. 3А, согласно аспекту настоящего изобретения,

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

Фиг. 5А графическим образом изображает один пример операции умножения BCD,

Фиг. 5Б графическим образом изображает другой пример операции умножения BCD,

Фиг. 5В графическим образом изображает один пример операции умножения и сдвига BCD, согласно аспекту настоящего изобретения,

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

Фиг. 7 изображает один вариант осуществления облачной вычислительной среды, и

Фиг. 8 изображает один пример уровней модельной абстракции.

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

Один или несколько аспектов относятся к обеспечению обработки в вычислительной среде путем обеспечения возможности замены длинной последовательности команд единственной командой (например, единственной архитектурно спроектированной машинной командой на аппаратном/программном интерфейсе), которая выполняет двоично-кодированную операцию с десятичным числом (BCD). В одном примере команда, упоминаемая в настоящем документе как команда векторного умножения и сдвига десятичного числа, перемножает два входных BCD с полной шириной (например, в 31 разряд каждое), с получением промежуточного произведения с полной шириной (например, 62 цифры), а затем обеспечивает возможность выбора нескольких разрядов (например, произвольного 31-разрядного диапазона) промежуточного произведения в качестве результата. Переполнение обнаруживают в том случае, когда любой разряд слева от конкретного числа разрядов (например, 31-разрядного диапазона), имеет ненулевое значение. Это также может быть рассмотрено как применение сдвига вправо к промежуточному произведению: R=(A*B)>>sh, где sh является сдвигом.

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

Один вариант осуществления вычислительной среды для охвата и использования одного или нескольких аспектов описан с отсылками на фиг. 1А. В одном примере вычислительная среда основана на Z/Архитектуре, предлагаемой International Business Machines Corporation, Армонк, Нью-Йорк. Один вариант осуществления Z/Архитектуры описан в публикации IBM® под названием «z/Архитектура, принципы работы» (z/Architecture, Principles of Operation), публикация IBM №SA22-7832-10, март 2015, включенной в настоящий документ путем отсылки в полном объеме. z/Архитектура является зарегистрированной торговой маркой International Business Machines Corporation, Армонк, Нью-Йорк.

В другом примере вычислительная среда основана на архитектуре Power, предлагаемой International Business Machines Corporation, Армонк, Нью-Йорк. Один вариант осуществления Архитектуры Power описан в публикации «Power ISA™ версия 2.07В» (Power ISA™ Version 2.07В), International Business Machines Corporation, от 9 апреля 2015, включенной в настоящий документ путем отсылки в полном объеме. Архитектура Power является зарегистрированной торговой маркой International Business Machines Corporation, Армонк, Нью-Йорк, США.

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

Как показано на фиг. 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 или другими.

Предназначенное для исходной среды центральное вычислительное устройство 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 с полной шириной (например, в 31 разряд каждое), с получением промежуточного произведения полной ширины (например, 62 разряда), а затем обеспечивает возможность выбора любого, например, 31-разрядного диапазона промежуточного произведения в качестве результата, обнаруживая при этом переполнение, когда любой разряд слева от заданного 31-разрядного диапазона является отличным от ноля. Это повышает производительность компьютера путем замены длинной последовательности команд для выполнения операции умножения BCD единственной командой (например, единственной архитектурно спроектированной машинной командой). Тем самым, аспекты настоящего изобретения неразрывно связаны с компьютерной технологией и с упрощением обработки компьютером.

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

Векторные команды могут быть реализованы как части различных архитектур, в том числе, но не ограничиваясь, Z/Архитектуры, Архитектуры Power, х86, IA-32, IA-64 и т.д. Хотя в настоящем документе описаны варианты осуществления для Z/Архитектуры, описанная в настоящем документе векторная команда, а также один или несколько других аспектов могут быть основаны на многих других архитектурах. Z/Архитектура является только одним из примеров.

В одном варианте осуществления в котором векторное средство реализовано как часть Z/Архитектуры, для использования векторных регистров и команд, управляющему элементу по активации векторных команд и управляющему элементу для регистров в заданном управляющем регистре (например, управляющем регистре 0) задают значение, например, единица. Если векторное средство инсталлировано, а векторная команда выполняется без задания значения управляющим элементам по активации, распознается исключение данных. Если векторное средство не инсталлировано, а векторная команда выполняется, распознается исключение операции.

В одном варианте осуществления имеются 32 векторных регистра, а для других типов регистров может быть построено соответствие на сектор векторных регистров. Например, регистровый файл может включать в себя 32 векторных регистра, а каждый регистр имеет длину в 128 битов. Шестнадцать регистров с плавающей точкой, которые имеют длину в 64 бита, могут перекрывать векторные регистры. Таким образом, в качестве примера, когда регистр 2 с плавающей точкой изменяют, векторный регистр 2 также подвергается изменению. Другие построения соответствий для других типов регистров также являются возможными.

Векторные данные представлены в памяти, например, в той же последовательности слева направо, что и другие форматы данных. Биты формата данных, пронумерованные 0-7, составляют байт в крайнем левом местоположении байта (с самым малым номером) в памяти, биты 8-15 формируют байт в следующем последовательном местоположении, и так далее. В другом примере векторные данные могут быть представлены в памяти в другой последовательности, такой как справа налево.

Один пример команды векторного умножения и сдвига десятичного числа описан с отсылками на фиг. 3А-3В. Как показано, команда имеет несколько полей, причем поле может иметь связанный с ним нижний индекс. Связанный с полем команды нижний индекс обозначает операнд, к которому применяют поле. Например, связанный с векторным регистром V1 нижний индекс 1 обозначает, что регистр в V1 включает в себя первый операнд и т.д. Например, операнд регистра имеет длину в один регистр, которая составляет, например, 128 битов.

Как показано на фиг. 3А, в одном варианте осуществления команда 300 векторного умножения и сдвига десятичного числа включает в себя поля 302а, 302b кода операции (OPCODE), указывающие на операцию векторного умножения и сдвига десятичного числа, поле 304 первого векторного регистра, используемое для обозначения первого векторного регистра (Vi1), поле 306 второго векторного регистра, используемое для обозначения второго векторного регистра (V2), поле 308 третьего векторного регистра (V3), поле (М5) 310 маски, поле (I4) 312 непосредственной адресации, и поле 314 регистра бита расширения (RXB), каждое из которых описано ниже. В одном варианте осуществления поля являются отдельными и независимыми друг от друга, однако, в других вариантах осуществления, поля в числе более одного могут быть объединены друг с другом. Дополнительная информация относительно этих полей приведена ниже.

Поле 304 векторного регистра используют для указания на векторный регистр, который должен сохранять первый операнд, первый операнд, являющийся результатом умножения двух операндов для получения произведения и для сдвига произведения для получения результата. Эти два операнда и результат представлены, например, в имеющем знак упакованном десятичном формате. Эти два операнда являются вторым операндом (множимым), который содержится в векторном регистре, заданном с помощью поля 306 векторного регистра, и третьим операндом (множителем), который содержится в векторном регистре, заданном с помощью поля 308 векторного регистра. В одном примере каждое из полей 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 и т.д.

В одном варианте осуществления каждый бит RXB является битом расширения для конкретного местоположения в команде, которое включает в себя один или несколько векторных регистров. Например, бит 0 из RXB является битом расширения для местоположения 8-11, которое приписано, например, V1 и т.д. Прежде всего, для векторных регистров, содержащий операнд регистр задан с помощью, например, четырех-битового поля в составе поля регистра с дополнением соответствующего ему бита (RXB) расширения регистра в качестве самого старшего бита. Например, когда четырех-битовым полем является 0110, а битом расширения является 0, то пять битовых полей 00110 указывают на номер регистра 6. В другом варианте осуществления поле RXB включает в себя дополнительные биты, и большее единицы число битов используют в качестве расширения для каждого вектора или местоположения.

Поле 312 (I4) с непосредственной адресацией задает четвертый операнд, включающий в себя элемент управления сдвигом. Например, поле 312 I4 включает в себя следующие элементы, как показано на фиг. 3Б:

• Зарезервировано: Биты 0-2 зарезервированы и должны содержать ноли. В противном случае, распознается исключение по спецификации.

• Величина сдвига (SHAMT) 330: Биты 3-7 содержат двоичное число без знака, задающее число разрядов, на которое сдвигают произведение, например, вправо, прежде размещения в первом операнде, например, самых правых тридцати одного разряда. Положение знака не участвует в сдвиге.

Поле 310 М5 включает в себя, например, следующие элементы управления, как показано на фиг. 3В:

• Принудительное задание операнду 2 положительного значения (Р2) 340: Когда бит 0 представлен единицей, знак второго операнда обрабатывают как положительный знак и не проверяют на допустимость. Когда бит 0 представлен нолем, знак второго операнда используют в операции и проверяют на допустимость.

• Принудительное задание операнду 3 положительного значения (Р3) 342: Когда бит 1 представлен единицей, знак третьего операнда обрабатывают как положительный знак и не проверяют на допустимость. Когда бит 1 представлен нолем, знак третьего операнда используют в операции и проверяют на допустимость.

• Принудительное задание операнду 1 положительного значения (Р1) 344: Когда бит 2 представлен единицей, знаку размещенного в первом операнде результата принудительно задают положительное значение, и используют код знака 1111. Когда бит 2 представлен нолем, знак размещенного в первом операнде результата является выбранным кодом знака для знака произведения.

• Набор условных кодов (CS) 346: Когда бит 3 представлен нолем, условный код не задают, и он остается неизменным. Когда бит 3 представлен единицей, условный код задают, как указано в разделе по итоговому условному коду ниже.

Итоговый условный код:

Когда CS бит представлен единицей, условный код задают, например, следующим образом.

0 Результат равен нолю, переполнение отсутствует

1 Результат меньше ноля, переполнение отсутствует

2 Результат больше ноля, переполнение отсутствует

3 Переполнение

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

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

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

Коды знака второго и третьего операндов могут быть изменены для использования в операции посредством элемента управления для принудительного задания операнду 2 положительного значения (Р2), и элемента управления для принудительного задания операнду 3 положительного значения (Р3), соответственно.

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

Когда результат после сдвига является ненулевым, а элемент 344 управления для принудительного задания операнду 1 положительного значения (Р1) представлен нолем, по правилам алгебры выявляют знак результата по знакам множителя и множимого, и используют выбранный код знака. Когда результат после сдвига является нулевым, а элемент Р1 управления представлен нолем, знак результата делают положительным с выбранным кодом 1100 знака. Когда элемент Р1 управления представлен единицей, знак результата делают положительным с кодом 1111 знака.

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

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

Как показано на фиг. 4, первоначально, второй операнд (множимое) и третий операнд (множитель) получают из регистров, обозначаемых с помощью полей V2 и V3 команды, ЭТАП 400. В одном примере разряды второго и третьего операндов проверяют на допустимость. В одном примере разрядные коды проверяют на допустимость, включая разряды, которые не оказывают воздействия на результат вследствие величины сдвига, как описано ниже. Когда один или несколько разрядов являются недопустимыми, ИНФОРМАЦИОННЫЙ ЗАПРОС 402, обработку завершают, и может быть, например, обозначена ошибка. Однако когда разряды второго и третьего операндов являются допустимыми, обработку продолжают получением величины сдвига, ЭТАП 404. В одном примере величина сдвига является задаваемой пользователем, и предоставляется посредством команды (например, в I4 312).

Кроме того, вторые и третьи операнды перемножают для получения произведения, ЭТАП 406. Произведение сдвигают в заданном направлении (например, вправо) на величину сдвига для получения результата, ЭТАП 408. Результат размещают в местоположении первого операнда (например, в регистре, обозначенном с использованием V1), ЭТАП 410.

Кроме того, выявляют знак результата, ЭТАП 412. Например, когда результат после сдвига является ненулевым, а элемент управления для принудительного задания операнду 1 положительного значения (Р1) представлен нолем, по правилам алгебры выявляют знак результата по знакам множителя и множимого, и используют выбранный код знака. Когда результат после сдвига является нулевым, а элемент Р1 управления представлен нолем, знак результата делают положительным с выбранным кодом 1100 знака. Когда элемент Р1 управления представлен единицей, знак результата делают положительным с кодом 1111 знака. Код знака выявленного знака размещают в местоположении первого операнда (например, справа), ЭТАП 414. Этим завершается обработка одного варианта осуществления команды умножения и сдвига.

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

Предшествующая команда десятичного умножения, MP, вычисляет R=A*B, при этом R размещают в местоположении А. А имеет длину до 31 разряда, но В может иметь самое большее 15 разрядов. Ограничение по длине для В является еще более серьезным, длина L2 этой величины должна быть меньше, чем длина операнда (L1). Промежуточное произведение имеет до 2*(Ll+L2)-2 разрядов, и для конечного результата выбирают 2*L1-1 самых младших разрядов. Если произведение имеет большее количество значащих разрядов, обнаруживается переполнение, и может быть распознано общее исключение данных операнда. Выбранные разряды зафиксированы и не могут быть выбраны.

С помощью другой десятичной команды, VMP, оба операнда могут иметь до 31 разрядов, что ослабляет ограничения на длину команды MP. Для команды VMP промежуточное произведение с полной шириной имеет до 62 разрядов, и для конечного результата выбирают 31 самых младших разрядов. Когда полное произведение имеет ширину более 31 разрядов, обнаруживается переполнение. Опять-таки, выбранные разряды зафиксированы и не могут быть выбраны.

Тем не менее, для умножения масштабированных чисел BCD, как их используют в DB2 или во многих приложениях COBOL и PL/I, для результата зачастую требуется то же число дробных разрядов, как и в операндах. Это является затруднительным вследствие фиксированного формата результата.

Вышеупомянутые соображения описаны далее с отсылками на фиг. 5А-5В.

Как показано на фиг. 5А, при выполнении перемножения 500 двух чисел 502а, 502b BCD с полной шириной (например, в 31 разряд), промежуточное произведение с полной шириной имеет вдвое большее количество разрядов 504 (например, 62). Общепринятые команды умножения BCD выбирают фиксированное количество разрядов, такое как по меньшей мере 31 самых младших разрядов 506 (или менее), а затем, соответственно, проверяют переполнение 508.

Для масштабированной операции умножения BCD, 31 разряд ввода интерпретируют в качестве некоторого количества «n» целочисленных разрядов (перед десятичной точкой) и некоторого количества «k» дробных разрядов (после десятичной точки). Требуемое произведение обычно имеет то же самое число дробных разрядов, как и операнды, которое является только половиной числа дробных разрядов, доступных в произведении с полной шириной.

Рассмотрим пример: R (24.6) А (12.6) *В (12.6).

Фиг. 5В показывает, что даже результат 520, обеспечиваемый усовершенствованной командой VMP умножения BCD, не имеет достаточного количества разрядов для захвата всех первых разрядов требуемого масштабированного результата 522 BCD.

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

В' (12.0) = В(12.6)>>6

Т1 (24.6) = (12.6) *В' (12.0)

В'' (0.6) = В (12.6) и "0 … 0FFF"

Т2 (13.12) = (12.6) *В''(0.6)

Т3 (13.6) = Т2 (13.12)>>6

R (24.6) = Т1 (24.6)+Т3 (13.6)

Согласно аспекту настоящего изобретения, последовательность команд заменена на команду (например, архитектурно спроектированную команду, такую как архитектурно спроектированную аппаратную команду), которая выполняет операцию умножения и сдвига десятичного числа. Команда объединяет в себе операции умножения и сдвига десятичного числа. Как показано на фиг. 5В, команда вычисляет произведение 552 с полной шириной по множественным операндам 550а, 550b, и сдвигает произведение на sh разрядов 554, например, вправо. Смещенные за правый предел разряды оказываются потерянными. Затем команда выдает, например, 31 самый младший разряд сдвинутого произведения в качестве результата 556, и проверяет по условию 558 переполнения на наличие каких-либо ненулевых разрядов слева от выбранных разрядов результата в сдвинутом произведении.

Тем самым, в качестве результата может быть выбран любой 31-разрядный диапазон произведения с полной шириной. Кроме того, приведенная выше последовательность команд может быть заменена единственной операцией умножения и сдвига: R (24.6) = ((12.6) *В (12.6))>>6.

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

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

Как показано на фиг. 6А, команду (например, единственную архитектурно спроектированную машинную команду) для выполнения операции умножения и сдвига получают, ЭТАП 600, и выполняют, ЭТАП 602. Выполнение включает в себя, например, перемножение первого значения и второго значения, полученных командой для получения произведения, ЭТАП 604, сдвиг произведения в заданном направлении на выбранную величину для обеспечения результата, причем выбранная величина является задаваемой пользователем, ЭТАП 606, и размещение результата в выбранном местоположении, причем результат подлежит использованию при обработке в вычислительной среде, ЭТАП 608.

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

Кроме того, в одном варианте осуществления выполнение включает в себя выявление знака для результата, ЭТАП 612, а также внесение знака в выбранное местоположение, причем результат и знак предоставляют выбранное значение, которое подлежит использованию при обработке в вычислительной среде, ЭТАП 614.

Кроме того, в одном примере выполнение включает в себя получение первого значения и второго значения из одного или нескольких полей команды, ЭТАП 616, проверку допустимости первого значения и второго значения, ЭТАП 618, и выполнение умножения на основании результата проверки, указывающего на допустимость первого значения и второго значения, ЭТАП 620.

Например, и с отсылками на фиг. 6Б, заданное направление является правым (630), выбранная величина получена из поля команды (632), и выбранное местоположение является регистром, причем регистр задают с помощью по меньшей мере одного поля команды (634). По меньшей мере одно поле включает в себя поле регистра, задающее номер регистра, и поле расширения, задающее значение расширения, которое подлежит добавлению к номеру регистра (636).

В одном варианте осуществления выявление знака включает в себя проверку предоставленного командой элемента управления, ЭТАП 638, причем элемент управления предоставлен, например, в поле маски команды (640).

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

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

Один или несколько аспектов могут относиться к облачным вычислениям.

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

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

Характеристики представлены следующим образом.

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

Широкий доступ к сети: возможности являются доступными по сети, а получение доступа производится посредством стандартных механизмов, что способствует использованию разнородных платформ тонкого или толстого клиента (например, мобильных телефонов, ноутбуков и 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 являются всего несколькими примерами из числа доступных типов сетевых адаптеров.

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

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

1. Компьютерная система для обеспечения обработки в вычислительной среде, причем компьютерная система содержит:

память, и

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

получение команды для выполнения, команды на выполнение операции умножения и сдвига, и

выполнение команды, причем выполнение включает в себя:

перемножение полученных командой первого значения и второго значения для получения произведения,

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

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

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

3. Компьютерная система по п. 1, причем выполнение, кроме того, содержит:

выявление знака для результата, и

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

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

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

6. Компьютерно-реализуемый способ обеспечения обработки в вычислительной среде, причем компьютерно-реализуемый способ содержит:

получение процессором команды для выполнения, команды на выполнение операции умножения и сдвига, и

выполнение команды, причем выполнение включает в себя:

перемножение полученных командой первого значения и второго значения для получения произведения,

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

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

7. Компьютерно-реализуемый способ по п. 6, причем результат включает в себя несколько разрядов произведения, выбранных на основании сдвига на выбранную величину.

8. Компьютерно-реализуемый способ по п. 6, причем выполнение, кроме того, содержит:

выявление знака для результата, и

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

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

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



 

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

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

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

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

Изобретение относится к области вычислительной техники. Техническим результатом является обеспечение поиска и оценки свойства множества объектов по социальным сетям.

Изобретение относится к вычислительной техники. Технический результат заключается в обеспечении переключения на режимы реализации им мажоритарной функции «4 и более из 7», «3 и более из 5» или «2 из 3» при функционировании адаптивных вычислительных систем.

Изобретение относится к техническим средствам информатики и вычислительной техники. Технический результат заключается в расширении арсенала средств.

Предлагаемое изобретение относится к области автоматики и управления (G05), вычислительной (G06) и измерительной (G01) техники и может быть реализовано в виде новой последовательности и структуры операций преобразования сигналов датчиков различных физических величин, предназначенных для работы в современных аналого-цифровых системах автоматического управления и контроля (САУ).

Изобретение относится к автоматизированным системам. Технический результат заключается в расширении арсенала средств.

Изобретение относится к области вычислительной техники. Технический результат заключается в обеспечении возможности определения вероятности набора технических средств при выборе оптимального состава и числа технических средств для выполнения определенного объема работ.

Изобретение относится к вычислительной технике. Технический результат заключается в расширении арсенала средств того же назначения.

Изобретение относится к вычислительной технике. Технический результат заключается в расширении арсенала средств того же назначения.

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

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

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

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

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

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

Изобретение относится к области кодирования и декодирования контента, в частности к извлечению данных из буфера и загрузки их в буфер. .

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

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

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

Наверх