КОМАНДА СДВИГА И ДЕЛЕНИЯ ДЕСЯТИЧНОГО ЧИСЛА
COMMAND TO SHIFT AND DIVIDE DECIMAL NUMBER

Уровень техники
Один или несколько аспектов относятся, в общем, к обработке в вычислительной среде, и прежде всего к обеспечению такой обработки.
Выполняемые в процессоре вычислительной среды приложения управляют логикой работы процессора. Приложения создают с помощью языков программирования, разработанных для сообщения команд процессору. Имеются различные типы языков программирования, и каждый язык может использовать один или несколько типов кодировок для представления данных.
Например, масштабированные десятичные целые числа (также известные как масштабированные двоично-кодированные десятичные числа/масштабированные BCD), являются общеупотребительным типом данных для многих программ на языках COBOL и PL/I, а также в системах управления базами данных DB2. Масштабированное число BCD является числом BCD с добавлением к нему дескриптора формата (n.k), который интерпретирует число BCD как имеющее n разрядов перед десятичной точкой и k разрядов после десятичной точки (то есть, k дробных разрядов), или как десятичное целое число, подлежащее умножению на 10-k.
Выполнение сложения и вычитания на масштабированных данных BCD с одинаковым k-параметром имеет непосредственный характер, поскольку данные являются корректно масштабированными, и результат имеет то же число дробных разрядов. Деление является более сложным, поскольку целочисленное деление двух чисел дает в итоге целую часть частного. Дробные разряды k отсутствуют.
Например, когда:
A = 4444.44, B = 3333.33, Q = 0001.333
Нормальное целочисленное деление дает в итоге частное Q = 1, но не дробные разряды. Кроме того, обычный код для выполнения операции деления BCD может быть достаточно сложным, требующим выполнения длинной последовательности операций.
Сущность изобретения
Недостатки известного уровня техники преодолены, а дополнительные преимущества обеспечены в компьютерной системе для выполнения операции сдвига и деления для обеспечения обработки в вычислительной среде, содержащей память и взаимодействующий с памятью процессор и выполненной для осуществления способа, включающего получение команды для выполнения, обеспечивающей выполнение операции сдвига и деления, и выполнение команды, включающее в себя: сдвиг значения в заданном направлении на выбранную величину для предоставления делимого, причем выбранная величина является задаваемой пользователем; деление делимого на делитель для получения частного; выбор, по меньшей мере, подмножества частного в качестве результата; и размещение результата в выбранном местоположении, причем результат подлежит использованию при обработке в вычислительной среде. Значение является десятичным целым числом, и, по меньшей мере, подмножество частного является выбранным числом разрядов частного, причем выбранное число разрядов включает в себя число целочисленных разрядов и число дробных разрядов. Объектом изобретения является также компьютерно-реализуемый способ выполнения операции сдвига и деления обеспечения обработки в вычислительной среде, включающий получение команды для выполнения, обеспечивающей выполнение операции сдвига и деления. Команда выполняется, и выполнение включает в себя сдвиг значения в заданном направлении на выбранную величину для предоставления делимого. Выбранную величину задает пользователь. Делимое делят на делитель для получения частного. По меньшей мере, подмножество частного выбирают в качестве результата. В выбранном местоположении размещают результат, причем результат подлежит использованию при обработке в вычислительной среде. Значение является десятичным целым числом, и, по меньшей мере, подмножество частного является выбранным числом разрядов частного, причем выбранное число разрядов включает в себя число целочисленных разрядов и число дробных разрядов. Использование единственной команды на выполнение операции деления масштабированного BCD повышает производительность за счет устранения длинной последовательности команд, а также за счет сокращения числа команд, которые подлежат выборке, декодированию и выполнению.
Кроме того, в одном варианте осуществления выполнение включает в себя выявление знака для результата, а также внесение знака в выбранное местоположение. В качестве примера, выявление знака включает в себя проверку предоставленного командой элемента управления. Элемент управления, например, предоставлен в поле маски команды.
Кроме того, в одном варианте осуществления выполнение включает в себя получение значения из одного или нескольких полей команды, проверку допустимости значения, а также выполнение сдвига на основании результата проверки, указывающего на допустимость значения.
В примерах, заданное направление является левым, выбранную величину получают из поля команды, и выбранное местоположение является регистром, причем регистр задан с помощью по меньшей мере одного поля команды. По меньшей мере одно поле включает в себя поле регистра, задающее номер регистра, и поле расширения, задающее значение расширения, которое подлежит добавлению к номеру регистра.
Кроме того, в настоящем документе также описаны и могут быть заявлены услуги (службы), относящиеся к одному или нескольким аспектам.
Посредством методов настоящего изобретения осуществляются дополнительные признаки и преимущества. Другие варианты осуществления и аспекты подробно описаны в настоящем документе и считаются частью заявленного изобретения.
Краткое описание чертежей
Один или несколько аспектов, прежде всего, указаны и явным образом заявлены в качестве примеров в формуле изобретения в конце технического описания. Ранее указанные и другие цели, признаки и преимущества являются очевидными из последующего подробного описания, предпринятого совместно с сопровождающими чертежами, на которых:
Фиг. 1А изображает один пример вычислительной среды для охвата и использования одного или нескольких аспектов настоящего изобретения,
Фиг. 1Б изображает более подробную информацию по процессору на фиг. 1А, согласно аспекту настоящего изобретения,
Фиг. 2А изображает другой пример вычислительной среды для охвата и использования одного или нескольких аспектов настоящего изобретения,
Фиг. 2Б изображает более подробную информацию по памяти на фиг. 2А,
Фиг. ЗА изображают один пример команды векторного сдвига и деления десятичного числа, согласно аспекту настоящего изобретения,
Фиг. 3Б изображает один вариант осуществления поля непосредственной адресации в составе команды векторного сдвига и деления десятичного числа на фиг. 3А, согласно аспекту настоящего изобретения,
Фиг. 3В изображает один вариант осуществления поля маски в составе команды векторного сдвига и деления десятичного числа на фиг. 3А, согласно аспекту настоящего изобретения,
Фиг. 4 изображает один пример блок-схемы выполнения команды векторного сдвига и деления десятичного числа, согласно аспекту настоящего изобретения,
Фиг. 5A графическим образом изображает другой пример операции деления BCD,
Фиг. 5Б графическим образом изображает другой пример операции деления BCD,
Фиг. 5В-5Г графическим образом изображают примеры операции сдвига и деления BCD, согласно аспекту настоящего изобретения,
Фиг. 6A-6Б изображают один пример обеспечения обработки в вычислительной среде, включающей в себя выполнение команды векторного сдвига и деления десятичного числа, согласно аспекту настоящего изобретения,
Фиг. 7 изображает один вариант осуществления облачной вычислительной среды, и
Фиг. 8 изображает один пример уровней модельной абстракции.
Подробное описание
Один или несколько аспектов относятся к обеспечению обработки в вычислительной среде путем обеспечения возможности замены длинной последовательности команд единственной командой (например, единственной архитектурно спроектированной машинной командой на аппаратном/программном интерфейсе), которая выполняет операцию сдвига и деления. В одном примере команда, упоминаемая в настоящем документе как команда векторного сдвига и деления десятичного числа, сдвигает входное значение на задаваемую пользователем величину для предоставления делимого, а затем делит делимое на делитель для получения частного. По меньшей мере, часть частного предоставляется в качестве результата.
Команда выполняет, например, операцию целочисленного деления, которая предоставляет частное с целочисленными разрядами с добавлением к нему k дробных разрядов, где k является входным параметром команды. K задает число подлежащих вычислению дробных разрядов.
Один вариант осуществления вычислительной среды для охвата и использования одного или нескольких аспектов настоящего изобретения описан с отсылками на фиг. 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 описан в публикации «Power ISA™ версия 2.07B» (Power ISA™ Version 2.07B), International Business Machines Corporation, от 9 апреля 2015, включенной в настоящий документ путем отсылки в полном объеме. Архитектура Power является зарегистрированной торговой маркой International Business Machines Corporation, Армонк, Нью -Йорк, США.
Вычислительная среда может также быть основана на другой архитектуре, в том числе, но не ограничиваясь, на архитектуре Intel x86. Имеются также и другие примеры.
Как показано на фиг. 1А, вычислительная среда 100 включает в себя, например, узел 10, имеющий, например, компьютерную систему/сервер 12, которая может быть использована совместно с многочисленными другими средами вычислительных систем или конфигурациями общего назначения или особого назначения. Примеры известных вычислительных систем, сред и/или конфигураций, которые могут подойти для использования с компьютерной системой/сервером 12, включают в себя, но ими не ограничиваются, системы персонального компьютера (ПК), серверные компьютерные системы, тонкие клиенты, толстые клиенты, наладонные или переносные устройства, многопроцессорные системы, основанные на микропроцессорах системы, декодеры каналов кабельного телевидения, программируемую бытовую электронику, сетевые персональные компьютеры, миникомпьютерные системы, мэйнфреймовые компьютерные системы, а также распределенные облачные вычислительные среды, включающие в себя любые из вышеупомянутых систем или устройств, и т.п.
Компьютерная система/сервер 12 может быть описана в общем контексте выполняемых компьютерной системой команд, таких как выполняемые компьютерной системой программные модули. Обычно, программные модули могут включать в себя подпрограммы, программы, объекты, компоненты, логику, структуры данных и тому подобные элементы, которые выполняют конкретные задачи или реализуют конкретные абстрактные типы данных. Компьютерная система/сервер 12 может быть применена во многих вычислительных средах, в том числе, но не ограничиваясь, в распределенных облачных вычислительных средах, где задачи выполняют связанные посредством коммуникационной сети отдаленные устройства обработки. В распределенной облачной вычислительной среде программные модули могут быть расположены как в локальных, так и в удаленных носителях информации компьютерной системы, содержащей запоминающие устройства.
Как показано на фиг. 1А, компьютерная система/сервер 12 показана в виде вычислительного устройства общего назначения. Компоненты компьютерной системы/сервера 12 могут включать в себя, но не ими ограничиваются, один или несколько процессоров или вычислительных устройств 16, системную память 28, а также шину 18, которая соединяет с процессором 16 различные компоненты системы, включающие в себя системную память 28.
Шина 18 представляет собой один или более из числа любых нескольких типов структур шины, включая шину памяти или контроллер памяти, периферийную шину, ускоренный графический порт, а также шину процессора или локальную шину, использующую любую из ряда шинных архитектур. В качестве примера, но не ограничения, такая архитектура включает в себя шину Промышленной стандартной архитектуры (ISA), шину Микроканальной архитектуры (MCA), шину Расширенной 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 или сервер pS eries, предлагаемые International Business Machines Corporation, Армонк, Нью-Йорк, HP Superdome с процессорами Intel Itanium II, предлагаемый Hewlett Packard, Пало-Альто, Калифорния, и/или другие машины, основанные на архитектурах, предлагаемых Internation al 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 и т.д.). Такие команды исходной среды затем выполняют.
В настоящем документе описаны подробности, относящиеся к одному варианту осуществления команды векторного сдвига и деления десятичного числа, включая поля команды и выполнение ее посредством по меньшей мере одного процессора (как в предназначенной для исходной среды, так и в эмулированной системе). Согласно аспекту настоящего изобретения, команда векторного сдвига и деления десятичного числа сдвигает входное значение на задаваемую пользователем величину для обеспечения делимого, а затем делит делимое на делитель для получения частного. По меньшей мере, часть частного (например, самые правые 31 разряд) предоставлена в качестве результата. Этот результат включает в себя целочисленные разряды и k дробных разрядов, где k равняется величине сдвига. Это улучшает производительность компьютера путем замены длинной последовательности команд для выполнения операции деления BCD единственной командой (например, единственной архитектурно спроектированной машинной командой). Тем самым, аспекты настоящего изобретения неразрывно связаны с компьютерной технологией и с обеспечением обработки компьютером.
В одном варианте осуществления команда векторного сдвига и деления десятичного числа является частью векторного средства, которое предоставляет, например, векторы постоянного размера в пределах от одного до шестнадцати элементов. Каждый вектор включает в себя данные, на которые воздействуют заданные в средстве векторные команды. В одном варианте осуществления когда вектор составлен из множественных элементов, каждый элемент подвергают обработке параллельно с другими элементами. Завершения выполнения команды не происходит до завершения обработки всех элементов. В других вариантах осуществления элементы подвергают обработке частично параллельным и/или последовательным образом.
Векторные команды могут быть реализованы как части различных архитектур, в том числе, но не ограничиваясь, Z/Архитектуры, Архитектуры Power, x86, IA-32, IA-64 и т.д. Хотя в настоящем документе описаны варианты осуществления для Z/Архитектуры, описанная в настоящем документе векторная команда, а также один или несколько других аспектов могут быть основаны на многих других архитектурах. Z/Архитектура является только одним из примеров.
В одном варианте осуществления в котором векторное средство реализовано как часть Z/Архитектуры, для использования векторных регистров и команд, управляющему элементу по активации векторных команд и управляющему элементу для регистров в заданном управляющем регистре (например, управляющем регистре 0) задают значение, например, единица. Если векторное средство инсталлировано, а векторная команда выполняется без задания значения управляющим элементам по активации, распознается исключение данных. Если векторное средство не инсталлировано, а векторная команда выполняется, распознается исключение операции.
В одном варианте осуществления имеются 32 векторных регистра, а для других типов регистров может быть построено соответствие на сектор векторных регистров. Например, регистровый файл может включать в себя 32 векторных регистра, а каждый регистр имеет длину в 128 битов. Шестнадцать регистров с плавающей точкой, которые имеют длину в 64 бита, могут перекрывать векторные регистры. Таким образом, в качестве примера, когда регистр 2 с плавающей точкой изменяют, векторный регистр 2 также подвергается изменению. Другие построения соответствий для других типов регистров также являются возможными.
Векторные данные представлены в памяти, например, в той же последовательности слева направо, что и другие форматы данных. Биты формата данных, пронумерованные 0-7, составляют байт в крайнем левом местоположении байта (с самым малым номером) в памяти, биты 8 -15 формируют байт в следующем последовательном местоположении, и так далее.
В другом примере, векторные данные могут быть представлены в памяти в другой последовательности, такой как справа налево.
Один пример команды векторного сдвига и деления десятичного числа описан с отсылками на фиг. 3A-3В. Как показано, команда имеет несколько полей, причем поле может иметь связанный с ним нижний индекс. Связанный с полем команды нижний индекс обозначает операнд, к которому применяют поле. Например, связанный с векторным регистром V1 нижний индекс 1 обозначает, что регистр в V1 включает в себя первый операнд и т.д. Например, операнд регистра имеет длину в один регистр, которая составляет, например, 128 битов.
Как показано на фиг. 3А, в одном варианте осуществления команда 300 векторного сдвига и деления десятичного числа включает в себя поля 302a, 302b кода операции (OPCODE), указывающие на операцию векторного сдвига и деления десятичного числа, поле 304 первого векторного регистра, используемое для обозначения первого векторного регистра (V1), поле 306 второго векторного регистра, используемое для обозначения второго векторного регистра (V2), поле 308 третьего векторного регистра (V3), поле (M5) 310 маски, поле (I4) 312 непосредственной адресации, и поле 314 бита расширения регистра (RXB), каждое из которых описано ниже. В одном варианте осуществления поля являются отдельными и независимыми друг от друга, однако, в других вариантах осуществления, поля в числе более одного могут быть объединены друг с другом. Дополнительная информация относительно этих полей приведена ниже.
Поле 304 векторного регистра используют для указания на векторный регистр, который должен сохранять первый операнд, который первый операнд является результатом сдвига второго операнда для получения делимого, для деления делимого посредством третьего операнда (делителя) для получения частного, а также для выбора, по меньшей мере, части частного в качестве результата. Второй операнд содержится в векторном регистре, заданном с помощью поля 306 векторного регистра, а третий операнд (делитель) содержится в векторном регистре, заданном с помощью поля 308 векторного регистра. В одном примере каждое из полей 304, 306, 308 векторных регистров используют совместно с полем 314 RXB для обозначения векторного регистра.
Например, поле 314 RXB включает в себя самый старший бит назначенного векторному регистру операнда. Биты для обозначений регистров, которые не заданы посредством команды, должны быть зарезервированы, и им должно быть задано нулевое значение. Самый старший значащий бит объединяют в цепочку, например, слева от четырех-битового обозначения регистра в составе поля векторного регистра, для создания пяти-битового обозначения векторного регистра.
В одном примере поле RXB включает в себя четыре бита (например, биты 0-3), причем биты заданы следующим образом:
- Самый старший бит для обозначения первого векторного регистра (например, в битах 8-11) в составе команды.
- Самый старший бит для обозначения второго векторного регистра (например, в битах 12-15) в составе команды, если вообще есть в наличии.
- Самый старший бит для обозначения третьего векторного регистра (например, в битах 16 -19) в составе команды, если вообще есть в наличии.
- Самый старший бит для обозначения четвертого векторного регистра (например, в битах 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 M5 включает в себя, например, следующие элементы управления, как показано на фиг. 3В:
Принудительное задание операнду 2 положительного значения (P2) 340: Когда бит 0 представлен единицей, знак второго операнда обрабатывают как положительный знак и не проверяют на допустимость. Когда бит 0 представлен нолем, знак второго операнда используют в операции и проверяют на допустимость.
Принудительное задание операнду 3 положительного значения (P3) 342: Когда бит 1 представлен единицей, знак третьего операнда обрабатывают как положительный знак и не проверяют на допустимость. Когда бит 1 представлен нолем, знак третьего операнда используют в операции и проверяют на допустимость.
Принудительное задание операнду 1 положительного значения (P1) 344: Когда бит 2 представлен единицей, знаку размещенного в первом операнде результата принудительно задают положительное значение, и используют код знака 1111. Когда бит 2 представлен нолем, знак размещенного в первом операнде результата является выбранным кодом знака для знака частного.
Набор условных кодов (CS) 346: Когда бит 3 представлен нолем, условный код не задают, и он остается неизменным. Когда бит 3 представлен единицей, условный код задают, как указано в разделе по итоговому условному коду ниже.
Итоговый условный код:
Когда CS бит представлен единицей, условный код задают, например, следующим образом:
Результат равен нолю, переполнение отсутствует
Результат меньше ноля, переполнение отсутствует
Результат больше ноля, переполнение отсутствует
Переполнение
Хотя описаны различные поля и регистры, один или несколько аспектов настоящего изобретения могут использовать другие, дополнительные поля или регистры, или меньшее их число, или другие размеры полей или регистров и т.д. Являются возможными разнообразные изменения. Например, вместо заданных в явном виде регистров или полей команды могут быть использованы неявно задаваемые регистры. Кроме того, могут быть использованы регистры, отличные от векторных регистров. Опять-таки, другие изменения также являются возможными.
При функционировании, второй операнд, сдвинутый влево (делимое) на число разрядов, заданное в четвертом операнде, делят на третий операнд (делитель), и выбранное число разрядов, например, самые правые тридцать один разряд частного размещают в местоположении первого операнда. Операнды и результат имеют, например, имеющий знак, упакованный десятичный формат.
В одном примере в имеющем знак упакованном десятичном формате каждый байт содержит два десятичных разряда (D), за исключением самого правого байта, содержащего знак (S) направо от десятичного разряда. Десятичные арифметические операции выполняют с помощью операндов, а результаты генерируют в имеющем знак упакованном десятичном формате.
Коды знака второго и третьего операндов могут быть изменены для использования в операции посредством элемента управления для принудительного задания операнду 2 положительного значения (P2), и элемента управления для принудительного задания операнду 3 положительного значения (P3), соответственно.
В одном примере все разрядные коды проверяют на допустимость. Коды знаков проверяют на допустимость, если они не были отменены посредством элементов управления для принудительного задания операнду 2 положительного значения (P2) или для принудительного задания операнду 3 положительного значения (P3).
Когда первый операнд не является способным к содержанию всех крайних левых ненулевых разрядов частного, происходит десятичное переполнение. Операцию завершают, а результат получают путем игнорирования разрядов переполнения. Когда метка задания условного кода (CS) представлена единицей, задан условный код 3. Когда в состав программной маски включен элемент управления десятичным переполнением, например, в виде представленной единицей части слова состояния программы, происходит прерывание программы по десятичному переполнению.
Когда самые правые тридцать один разряд частного являются ненулевыми, и элемент управления для принудительного задания операнду 1 положительного значения (P1) представлен нолем, по правилам алгебры выявляют знак результата по знакам делимого и делителя, и используют выбранный код знака. Когда самые правые тридцать один разряд частного представлены нолями, и элемент P1 управления представлен нолем, знак результата делают положительным с выбранным кодом знака 1100. Когда элемент P1 управления представлен единицей, знак результата делают положительным с кодом знака 1111.
Когда делитель представлен нолем, и используемый код знака делителя является допустимым, распознают исключение по делению десятичных чисел. Это включает в себя случай деления ноля на ноль. Используемый код знака делителя является третьим кодом знака операнда, когда бит принудительного задания операнду 3 положительного значения (P3) представлен нолем, и является кодом положительного знака, когда бит принудительного задания операнду 3 положительного значения (P3) представлен единицей.
Дополнительные подробности относительно функционирования команды описаны с отсылками на фиг. 4. В одном примере логику на фиг. 4 выполняют посредством по меньшей мере одного процессора, на основании получения и выполнения команды векторного сдвига и деления десятичного числа.
Как показано на фиг. 4, первоначально, второй операнд и третий операнд (делитель) получают из регистров, обозначаемых с помощью полей V2 и V3 команды, ЭТАП 400. В одном примере разряды второго и третьего операндов проверяют на допустимость. Прежде всего, например, все разрядные коды проверяют на допустимость. Когда один или несколько разрядов являются недопустимыми, ИНФОРМАЦИОННЫЙ ЗАПРОС 402, обработку завершают, и может быть, например, обозначена ошибка. Однако когда разряды второго и третьего операндов являются допустимыми, обработку продолжают получением величины сдвига, ЭТАП 404. В одном примере величина сдвига является задаваемой пользователем, и предоставляется посредством команды (например, I4 312).
Второй операнд сдвигают в заданном направлении (например, влево) на величину сдвига для получения делимого, ЭТАП 406. Делимое делят на третий операнд для получения частного, ЭТАП 408. Выбранный диапазон разрядов частного (например, самые правые 31 разряда) выбирают в качестве результата, размещаемого в местоположении первого операнда (например, в регистре, заданном с помощью по меньшей мере одного поля команды V1), ЭТАП 410.
Кроме того, выявляют знак результата, ЭТАП 412. Когда самые правые тридцать один разряд частного являются ненулевыми, и элемент управления для принудительного задания операнду 1 положительного значения (P1) представлен нолем, правила алгебры выявляют знак результата по знакам делимого и делителя, и используется выбранный код знака. Когда самые правые тридцать один разряд частного являются нолями, и элемент P1 управления является нолем, знак результата делают положительным с выбранным кодом знака 1100. Когда элемент P1 управления представлен единицей, знак результата делают положительным с кодом знака 1111.
Когда делитель представлен нолем, и используемый код знака делителя является допустимым, распознают исключение по делению десятичных чисел. Это включает в себя случай деления ноля на ноль. Используемый код знака делителя является третьим кодом знака операнда, когда бит принудительного задания операнду 3 положительного значения (P3) представлен нолем, и является кодом положительного знака, когда бит принудительного задания операнду 3 положительного значения (P3) представлен единицей. Код знака выявленного знака размещают в местоположении первого операнда (например, справа), ЭТАП 414. Это завершает обработку одного варианта осуществления команды сдвига и деления.
В другом варианте осуществления сдвиг может быть произведен вправо, и/или направление сдвига может быть выбрано посредством элемента управления команды. Другие изменения также являются возможными.
Более подробная информация относительно десятичного целочисленного деления предоставлена ниже.
Одна предшествующая команда деления десятичных чисел, DP, вычисляет частное Q и остаток R для А, разделенного на B, таким образом, что А= Q*B+R. А может иметь длину до 31 разряда, но B может иметь самое большее 15 разрядов, и должно иметь меньше разрядов, чем A. В результате ограничения длины делителя, наложены серьезные ограничения на типы операций деления.
С помощью другой десятичной команды, VDP, как A, так и B могут иметь полную ширину до 31 разряда, это упрощает ограничения по длине команды DP. Тем не менее, обе команды предоставляют только целую часть, никакие дробные разряды не предоставляются.
Для масштабированного деления BCD (n.k) используют длинные подпрограммы с множественными операциями по делению для получения k дробных разрядов в дополнение к целой части частного.
Вышеупомянутые соображения описаны далее с отсылками на фиг. 5A-5Б.
Как показано на фиг. 5А, при выполнении целочисленного деления 500 двух чисел 502a, 502b BCD полной ширины (например, в 31 разряд), частное 504 является целым числом BCD, самое большее, например, с 31 разрядами, не предоставлено каких-либо дробных разрядов.
Для масштабированной операции деления BCD, 31 разряд ввода интерпретируют как некоторое число «П» целочисленных разрядов (перед десятичной точкой) и некоторые число «k» дробных разрядов (после десятичной точки). Требуемое частное обычно имеет то же число дробных разрядов, как и операнды.
Рассмотрим пример: Q (7.3) = (4.3)/B (4.3), как показано на фиг. 5Б.
Фиг. 5Б и примеры ниже показывают, что даже усовершенствованная команда VDP предоставляет только целую часть частного, но не требуемые дробные разряды.
Некоторые примеры:
A = 8888.888 B = 0000.003 т Q = 2962962.666
B = 3333.333 т Q = 0000002.666
Для получения требуемого числа дробных разрядов частного является необходимой некоторая дополнительная обработка.
Для масштабированного деления BCD с (n.k), рассмотрим следующие случаи:
n+k+k <32: тогда «А» может быть сдвинуто вправо на величину k до операции по делению, что дает A' = A * 10k. Требуемое частное с k дробными разрядами в этом случае может быть получено посредством обычного деления десятичных чисел A' (n+k,0) и B (n.k).
n+k+k> 31: «А» не может быть сдвинуто вправо на величину k, поскольку максимальное число разрядов окажется превышенным. Теперь приобретает значение то обстоятельство, может ли B иметь всего половину длины (DP) или может ли B иметь полную длину (VDP).
В случае половинной длины и k <15
DP: A = Q1 * B + R1- вычисление частного и остатка, следует отметить, что R1 <В ... имеет самое большее 15 разрядов SRP: R' = R1 << k
DP: R' = Q2 * B + R2 - вычисление отсутствия необходимости остатка частного
Q = (Q1 <<k) + Q2
В случае B величиной в 31 разряд, вышеупомянутый алгоритм не работает, и таким образом, операнды преобразованы к десятичной плавающей точке (DFP), выполняется деление с плавающей точкой, и извлечение требуемых разрядов дробной части. Кроме того, в зависимости от реализации DFP, описанные операции могут оказаться все еще недостаточными, и должны быть использованы дополнительные предусмотренные к выполнению методы.
Таким образом, в любом случае, для выполнения масштабированного деления BCD требуется длинная подпрограмма.
Согласно аспекту настоящего изобретения, длинная последовательность команд для выполнения масштабированного BCD деления заменена единственной командой (например, архитектурно спроектированной командой, такой как архитектурно спроектированная аппаратная команда), которая выполняет операцию десятичного сдвига и деления.
В одном варианте осуществления как показано на фиг. 5В, команда векторного сдвига и деления десятичного числа задает, согласно аспекту настоящего изобретения, ширину, sh (550). Операнд (552) сдвигают влево на sh разрядов, с получением A' = A << sh = A * 10sh. В этом случае, А поделено на операнд B (554) с получением частного целого числа Q (556). В качестве результата (558) выбирают, например, самые правые 31 разрядов. Переполнение (560) обнаруживают в том случае, когда частное Q имеет более 31 значащих разрядов.
Это может быть также интерпретировано, как показано на фиг. 5Г, как вычисление целой и дробной частей частного 570 от A/B, и выбор в качестве результата sh дробных разрядов (572) и 3 1 -sh целочисленных разрядов (574).
Предоставленная согласно аспекту настоящего изобретения команда преобразует масштабированную операцию деления BCD с шириной (n.k) в единственную команду сдвига и деления с sh=k, таким образом заменяя длинную последовательность команд единственной командой, что значительно повышает скорость выполнения масштабированных операций деления BCD, и улучшает обработку в вычислительной среде. Команда также предоставляет большую гибкость в том аспекте, что предоставлено масштабированное деление с произвольным (то есть, не фиксированным, но переменным) масштабированием k. Команда предоставляет произвольное описание набора битов целочисленных и дробных разрядов частного, а также выполняет проверку переполнения на основании произвольного набора битов. Такие операции могут быть использованы многими типами приложений, а также в рамках других типов обработки в вычислительной среде.
Более подробная информация относительно обеспечения обработки в вычислительной среде, включая выполнение команды на выполнение операции сдвига и деления, описана с отсылками на фиг. 6A-6Б.
Как показано на фиг. 6А, получается команда (например, архитектурно спроектированная машинная команда) для выполнения операции сдвига и деления, ЭТАП 600, и выполняется посредством по меньшей мере одного процессора, ЭТАП 602. Выполнение включает в себя, например, сдвиг значения в заданном направлении на выбранную величину для предоставления делимого, причем выбранная величина является задаваемой пользователем, ЭТАП 604. Делимое делят на делитель для получения частного, ЭТАП 606. По меньшей мере, подмножество частного (например, самые правые 31 разрядов) выбирают в качестве результата ЭТАП 608. Результат размещают в выбранном местоположении, причем результат подлежит использованию при обработке в вычислительной среде, ЭТАП 610.
В качестве примера, значение является десятичным целым числом (612), и, по меньшей мере, подмножество частного является выбранным числом разрядов частного, причем выбранное число разрядов включает в себя число целочисленных разрядов и число дробных разрядов (614).
В другом варианте осуществления выполнение, кроме того, включает в себя выявление знака для результата, ЭТАП 616, а также внесение знака в выбранное местоположение, ЭТАП 618. В одном примере выявление знака включает в себя проверку предоставленного командой элемента управления, ЭТАП 620, причем элемент управления предоставлен, например, в поле маски команды (622).
Кроме того, с отсылками на фиг. 6Б, например, выполнение включает в себя получение значения от одного или нескольких полей команды, ЭТАП 624, проверку допустимости значения, ЭТАП 626, и выполнение сдвига на основании результата проверки, указывающего на допустимость значения, ЭТАП 628.
Например, заданное направление является левым (630), выбранная величина получена из поля команды (632), и выбранное местоположение является регистром, причем регистр задают с помощью по меньшей мере одного поля команды (634). По меньшей мере одно поле включает в себя поле регистра, задающее номер регистра, и поле расширения, задающее значение расширения, которое подлежит добавлению к номеру регистра (636).
В настоящем документе описано средство для использования единственной архитектурно спроектированной команды для выполнения деления BCD. Эта команда заменяет длинную последовательность команд и улучшает компьютерную обработку и производительность.
Хотя предоставлены различные примеры, изменения являются возможными без отступления от духа заявленных аспектов. Например, значения, включенные в состав используемых командой регистров и/или полей, в других вариантах осуществления могут быть расположены в других местоположениях, таких как ячейки памяти, и т.д. Являются возможными самые разнообразные вариации.
Один или несколько аспектов могут относиться к облачным вычислениям.
Заранее подразумевается, что, хотя настоящее раскрытие включает в себя подробное описание относительно облачных вычислений, реализация описанных в настоящем документе идей изобретения не ограничена облачной вычислительной средой. Напротив, варианты осуществления настоящего изобретения могут быть реализованы совместно с любым другим типом вычислительной среды, известного в настоящее время или разработанным позднее.
Облачные вычисления являются моделью предоставления услуг для обеспечения возможности удобного, в нужный момент времени, сетевого доступа к совместно используемому комплексу конфигурируемых вычислительных ресурсов (например, сетей, сетевых пропускных способностей, серверов, вычислительных мощностей, памяти, запоминающих устройств, приложений, виртуальных машин и услуг), который может быть быстро предоставлен и передан с минимальными управленческими затратами или взаимодействием с поставщиком услуг. Эта облачная модель может включать в себя по меньшей мере пять характеристик, по меньшей мере три модели услуг и по меньшей мере четыре модели развертывания.
Характеристики представлены следующим образом.
Самообслуживание в нужный момент времени: потребитель облачных услуг может в одностороннем порядке обеспечивать вычислительные возможности, такие как время сервера и ресурсы сетевого хранения, по мере необходимости автоматически, без необходимости в человеческом взаимодействии с провайдером услуги.
Широкий доступ к сети: возможности являются доступными по сети, а получение доступа производится посредством стандартных механизмов, что способствует использованию разнородных платформ тонкого или толстого клиента (например, мобильных телефонов, ноутбуков и PDA (личных электронных секретарей)).
Объединение ресурса: вычислительные ресурсы провайдера объединены для обслуживания множественных потребителей, использующих модель
мультиарендатора, причем различные физические и виртуальные ресурсы динамично присваиваются и повторно присваиваются согласно потребности. Смысл независимости от местоположения состоит в том, что потребитель, в большинстве случаев, не имеет никакого контроля или знания относительно точного местоположения предоставляемых ресурсов, но может быть в состоянии определить местоположение на более высоком уровне абстракции (например, страна, состояние или центр обработки данных).
Быстрая адаптационная способность: инструменты могут быть предоставлены быстрым и адаптивным способом, в некоторых случаях автоматически, для быстрого горизонтального масштабирования с увеличением производительности и быстро возвращены системе для быстрого горизонтального масштабирования с уменьшением производительности. Для потребителя доступные к предоставлению инструменты зачастую представляются неограниченными, и могут быть приобретены в любом объеме в любое время.
Измеренная услуга: облачные системы автоматически управляют и оптимизируют использование ресурса путем усиления возможности учета на некотором уровне абстракции, подходящем к типу службы (например, хранению, обработке, ширине полосы, а также учетным записям активного пользователя). Использование ресурсов может быть подвергнуто мониторингу, управлению и протоколированию, что обеспечивает прозрачность как для провайдера, так и для потребителя используемой услуги.
Модели услуг представлены следующим образом.
Программное обеспечение как услуга (SaaS): потребителю предоставляется инструмент для использования приложений провайдера, работающих на облачной инфраструктуре. Приложения являются доступными с различных клиентских устройств через интерфейс тонкого клиента, такой как веб-браузер (например, интернет-почта). Потребитель не администрирует и не управляет базовой облачной инфраструктурой, содержащей сеть, серверы, операционные системы, запоминающие устройства или даже индивидуальные прикладные инструменты, за возможным исключением ограничений по настройке параметров конфигурации специфических для пользователя приложений.
Платформа как услуга (PaaS): потребителю предоставляется инструмент для развертывания на облачной инфраструктуре созданных или полученных потребителем приложений, созданных с помощью поддерживаемых провайдером языков программирования и программных средств. Потребитель не администрирует и не управляет базовой облачной инфраструктурой, содержащей сеть, серверы, операционные системы или запоминающие устройства, но управляет развертываемыми приложениями и, возможно, приложением, размещающим настройки среды.
Инфраструктура как услуга (IaaS): потребителю предоставляется инструмент для обеспечения обработки, хранения, сетей и других фундаментальных вычислительных ресурсов, с помощью которого потребитель может разворачивать и выполнять произвольное программное обеспечение, которое может включать в себя операционные системы и приложения. Потребитель не администрирует и не управляет базовой облачной инфраструктурой, но управляет операционными системами, запоминающими устройствами, развертываемыми приложениями и, возможно, имеет ограниченное управление выбором сетевых компонентов (например, межсетевых защитных экранов хоста).
Модели развертывания представлены следующим образом.
Частное облако: облачная инфраструктура действует исключительно для организации. Оно может управляться посредством организации или третьей стороны, и может быть реализовано внутри или вовне организации.
Коллективное облако: облачную инфраструктуру совместно используют несколько организаций и поддерживает особое сообщество, которое имеет совместные интересы (например, главная цель работы, требования к защите, политика и соображения по контролю за соблюдением установленных требований). Оно может управляться посредством организации или третьей стороны, и может быть реализовано внутри или вовне организации.
Открытое облако: облачная инфраструктура сделана доступной для широкой публики или группы крупной отрасли, и принадлежит продающей облачные услуги организации.
Гибридное облако: облачная инфраструктура является сочетанием двух или более облаков (частного, коллективного или отрытого), которые остаются отличными от других объектами, но связаны друг с другом посредством стандартизированной или проприетарной технологии, обеспечивающей для данных и приложений высокую мобильность (например, временное использование ресурсов открытого облака для выравнивания нагрузки между облаками).
Среда облачных вычислений является услугой, ориентированной с акцентом на бесструктурность, слабую связность, модульный принцип построения и семантическую функциональную совместимость. В основе облачных вычислений находится инфраструктура, содержащая сеть из связанных узлов. Один такой узел является узлом 10, изображенным на фиг. 1А.
Вычислительный узел 10 является только одним примером подходящего узла облачных вычислений, и не предназначен для предположения какого-либо ограничения относительно объема использования или функциональности вариантов осуществления описанного в настоящем документе изобретения. В любом случае, узел 10 облачных вычислений способен к его реализации и/или к выполнению любой из сформулированных выше функциональностей.
При рассмотрении теперь фиг. 7, изображена иллюстративная окружающая среда облачных вычислений 50. Как показано, облачная вычислительная среда 50 содержит один или несколько узлов 10 облачных вычислений, с помощью которых могут сообщаться используемые облачными потребителями локальные вычислительные устройства, такие как, например, персональный цифровой секретарь (PDA) или сотовый телефон 54А, настольный компьютер 54B, портативный компьютер 54C, и/или автомобильная компьютерная система 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, C++ и т.п., а также языки процедурного программирования, такие как язык программирования «C» или подобные языки программирования.
Машиночитаемые программные команды могут выполняться полностью на компьютере пользователя, частично на компьютере пользователя, как автономный пакет программного обеспечения, частично на компьютере пользователя и частично на удаленном компьютере или полностью на удаленном компьютере или сервере. В последнем сценарии удаленный компьютер может быть присоединен к компьютеру пользователя через любой тип сети, включая локальную сеть (LAN) или глобальную сеть (WAN), или присоединение может быть сделано к внешнему компьютеру (например, через Интернет с использованием Интернет-провайдера). В некоторых вариантах осуществления, электронные схемы, включающие в себя, например, программируемые логические схемы, программируемые на месте вентильные матрицы (FPGA) или программируемые логические матрицы (PLA) могут выполнять машиночитаемые программные команды посредством использования информации о состоянии машиночитаемых программных команд для настройки электронной схемы с целью выполнения аспектов настоящего изобретения.
Аспекты настоящего изобретения описаны в настоящем документе с отсылками на иллюстрации в виде блок-схем и/или блок-диаграмм для способов, устройств (систем) и компьютерных программных продуктов согласно вариантам осуществления изобретения. Подразумевается, что каждый блок иллюстраций в виде блок-схем и/или блок-диаграмм, а также комбинации блоков на иллюстрациях в виде блок-схем и/или блок-диаграмм, могут быть реализованы посредством машиночитаемых программных команд.
Такие машиночитаемые программные команды могут быть предоставлены процессору универсального компьютера, специализированного компьютера или другого программируемого устройства обработки данных для образования машины таким образом, что выполняющиеся посредством процессора компьютера или другого программируемого устройства обработки данных команды создают средства для реализации функций/действий, заданных в блоке или блоках блок-схемы и/или блок-диаграммы. Такие машиночитаемые программные команды также могут быть сохранены в машиночитаемом информационном носителе, который может управлять компьютером, программируемым устройством обработки данных и/или другими устройствами для их функционирования особым способом таким образом, что сохраняющий на нем команды машиночитаемый информационный носитель представляет собой изделие, содержащее команды, которые реализуют аспекты функций/действий, заданных в блоке или блоках блок-схемы и/или блок-диаграммы.
Машиночитаемые программные команды могут также быть загружены в компьютер, другое программируемое устройство обработки данных или другое устройство для принуждения к выполнению на компьютере, другом программируемом устройстве или другом устройстве серии эксплуатационных этапов для получения такого компьютерно-реализованного процесса, что выполняемые на компьютере, другом программируемом устройстве или другом устройстве инструкции реализуют функции/действия, заданные в блоке или блоках блок-схемы и/или блок-диаграммы.
Блок-схемы и блок-диаграммы на чертежах показывают архитектуру, функциональность и функционирование возможных реализаций систем, способов и компьютерных программных продуктов согласно различным вариантам осуществления настоящего изобретения. В этом отношении каждый блок в блок-схемах или блок-диаграммах может представлять модуль, сегмент или участок команд, который содержит одну или несколько исполнимых команд для реализации указанной логической функции (функций). В некоторых альтернативных реализациях указанные в блоках функции могут осуществляться в порядке, отличном от приведенного на чертежах. Например, два блока, показанные по очереди, могут, фактически, быть выполнены по существу одновременно, или блоки могут иногда выполняться в обратном порядке, в зависимости от предусмотренной к выполнению функциональности.
Необходимо также отметить, что каждый блок на иллюстрациях в виде блок- схем и/или блок-диаграмм, а также в комбинациях блоков на иллюстрациях в виде блок-схем и/или блок-диаграмм, может быть реализован посредством основанных на аппаратных средствах систем особого назначения, которые выполняют указанные функции или действия или выполняют комбинации аппаратных и компьютерных команд особого назначения.
В дополнение к вышеупомянутому, один или несколько аспектов могут быть предоставлены, предложены, развернуты, управляемы, обслуживаемы и т.д. поставщиком услуг, предлагающим управление средами заказчика. Например, поставщик услуг может создавать, обслуживать, поддерживать и т.д. машинный код и/или компьютерную инфраструктуру, выполняющую один или несколько аспектов для одного или нескольких клиентов. В свою очередь, поставщик услуг может получать оплату от клиента в рамках соглашения о подписке и/или о сборах, в качестве примеров. Дополнительно или альтернативно, поставщик услуг может получать оплату от продажи рекламного содержимого одному или нескольким третьим лицам.
В одном аспекте приложение может быть развернуто для выполнения одного или нескольких предпочтительных вариантов осуществления. В качестве примера, развертывание приложения предусматривает обеспечение компьютерной инфраструктуры, действующей для выполнения одного или нескольких вариантов осуществления.
В качестве другого аспекта, может быть развернута вычислительная инфраструктура, содержащая в вычислительной системе интегрирующий машиночитаемый код, в которой код, в сочетании с вычислительной системой, способен к выполнению одного или нескольких вариантов осуществления.
В качестве еще одного аспекта, может быть предоставлен способ интеграции в компьютерную систему содержащей интегрирующий машиночитаемый код вычислительной инфраструктуры. Компьютерная система содержит машиночитаемый носитель, причем компьютерный носитель содержит один или несколько вариантов осуществления. Код в сочетании с компьютерной системой способен к выполнению одного или нескольких вариантов осуществления.
Хотя выше описаны различные варианты осуществления, они являются только примерами. Например, вычислительные среды другой архитектуры могут быть использованы для охвата и использования одного или нескольких вариантов осуществления. Кроме того, могут быть использованы различные команды, форматы команд, поля команд и/или значения команд. Являются возможными разнообразные изменения.
Кроме того, могут быть использованы и оказаться выгодными другие типы вычислительных сред. В качестве примера, является применимой подходящая для сохранения и/или выполнения программного кода система обработки данных, которая включает в себя по меньшей мере два процессора, соединенных прямо или косвенно через системную шину с элементами памяти. Элементы памяти включают в себя, например, локальную память, используемую в процессе фактического выполнения программного кода, запоминающее устройство большого объема и кеш-память, которая предоставляет временное сохранение, по меньшей мере, части программного кода с целью уменьшения числа выборок из запоминающего устройства большого объема в процессе выполнения.
Устройства ввода-вывода или устройства I/O (в том числе, но не ограничиваясь, клавиатуры, дисплеи, позиционирующие устройства, DAS D (запоминающее устройство прямого доступа), устройство записи на ленту, CD, DVD, карты флэш-памяти и другие носители памяти и т.д.) могут быть соединены с системой или непосредственно или через переходные контроллеры I/O. С системой также могут быть соединены сетевые адаптеры для предоставления системе обработки данных возможности установления соединения с другими системами обработки данных или с удаленными принтерами или с запоминающими устройствами посредством переходных частных сетей или сетей общего пользования. Модемы, кабельные модемы и платы Ethernet являются всего несколькими примерами из числа доступных типов сетевых адаптеров.
Используемая в настоящем документе терминология служит исключительно целям описания конкретных вариантов осуществления и не предназначается для ограничения изобретения. При использовании в настоящем документе, формы единственного числа предназначены для включения в себя также и форм множественного числа, если только контекст не указывает на иное недвусмысленным образом. Кроме того, подразумевается, что термины «содержит» и/или «содержащий» при их использовании в данном техническом описании задают присутствие заявленных признаков, целочисленных переменных, этапов, операций, элементов и/или компонентов, но не исключают присутствия или добавления одного или нескольких других признаков, целочисленных переменных, этапов, операций, элементов, компонентов и/или образованных ими групп.
Соответствующие структуры, материалы, действия и эквиваленты всех средств или этапов, равно как функциональные элементы в пунктах формулы изобретения ниже, если вообще есть в наличии, предназначаются для включения в себя любой структуры, материала или действия для выполнения функции в сочетании с другими требуемыми элементами, как конкретным образом заявлено. Описание одного или нескольких вариантов осуществления представлено в целях иллюстрации и описания, но не предназначается для полного охвата или ограничения изобретения в заявленном виде. Многие модификации и изменения являются очевидными для средних специалистов в области техники. Вариант осуществления был выбран и описан с целью наилучшего объяснения различных аспектов и практического применения, а также для обеспечения другим средним специалистам в области техники возможности понимания различных вариантов осуществления с различными модификациями, как они подходят для конкретно рассматриваемого 5 использования.