ПРОЦЕССОРЫ, СПОСОБЫ, СИСТЕМЫ И КОМАНДЫ ДЛЯ СЛОЖЕНИЯ ТРЕХ ОПЕРАНДОВ-ИСТОЧНИКОВ С ПЛАВАЮЩЕЙ ЗАПЯТОЙ
THREE SOURCE OPERAND FLOATING POINT ADDITION PROCESSORS, METHODS, SYSTEMS AND INSTRUCTIONS

Область техники, к которой относится изобретение
Описанные в настоящем документе варианты осуществления изобретения, в общем, касаются процессоров. В частности, описанные в настоящем документе варианты осуществления изобретения, в общем, касаются процессоров для сложения чисел с плавающей запятой в ответ на команды.
Уровень техники
Числа с, плавающей запятой обычно используются в процессорах, вычислительных системах и других электронных устройствах. Преимущество чисел с плавающей запятой состоит в том, что они позволяют широкий диапазон числовых значений представлять в сравнительно компактном числовом формате и/или сравнительно компактным количеством битов. Биты чисел с плавающей запятой могут быть распределены на несколько составляющих полей, известных как знак, мантисса и показатель степени числа с плавающей запятой. Знак, мантисса, основание и показатель степени могут быть связаны следующим образом:
.
знак
показатель
степени
Выражение «(-1)» представляет минус единицу в степени, равной знаку. Это выражение вычисляет, является ли число с плавающей запятой положительным (+) или отрицательным (-). Например, когда знак является целым нулем, число с плавающей запятой является положительным, или, в качестве альтернативы, когда знак равен целой единице, число с плавающей запятой является отрицательным. Мантисса содержит строку цифр, длина которой во многом определяет точность числа с плавающей запятой. Мантиссу также иногда называют значащими цифрами, коэффициентом или дробной частью. Запятая (например, десятичная запятая для десятичного формата или двоичная запятая для двоичного формата) обычно неявно расположена в фиксированной позиции (например, непосредственно справа от самой левой или самой старшей цифры мантиссы, что в некоторых случаях может подразумеваться). Примером мантиссы в двоичном случае является «1.10010010000111111011011». Цифры мантиссы, расположенные слева от запятой (например, «10010010000111111011011»), могут представлять биты дробной части. Выражение «основание» представляет основание, возведенное в степень, равную показателю степени. Основание обычно является основанием, равным 2 (для двоичного случая), равным 10 (для десятичного случая) или равным 16 (для шестнадцатеричного случая). Основание иногда называют основанием степени. Показатель степени также иногда называют характеристикой или масштабом. Возведение основания в степень, равную показателю степени, фактически сдвигает запятую (например, от неявной или подразумеваемой начальной позиции) на количество позиций, равное показателю степени. Запятую сдвигают вправо, если показатель степени положителен, или влево, если показатель степени отрицателен.
Институт (IEEE) инженеров по электротехнике и электронике стандартизовал несколько различных форматов с плавающей запятой в стандарте IEEE 754. Типично, формат с плавающей запятой одинарной точности содержит 32 бита и содержит 23 бита мантиссы в битах [22:0], 8 битов показателя степени в битах [30:23] и один бит знака в бите [31]. Формат с плавающей запятой двойной точности содержит 64 бита и содержит 52 бита мантиссы в битах [51:0], 11 битов показателя степени в битах [62:52] и один бит знака в бите [63]. В технике также известны другие форматы с плавающей запятой, такие как, например, формат с плавающей запятой половинной точности, формат с плавающей запятой расширенной двойной точности и формат с плавающей запятой четверной точности. Дополнительные подробности о числах и форматах с плавающей запятой, при желании, доступны в IEEE 754.
Краткое описание чертежей
Изобретение будет лучше понятно из последующего описания и приложенных чертежей, используемых для иллюстрации вариантов осуществления изобретения. На чертежах:
Фиг. 1 - вид, показывающий структурную схему одного варианта осуществления процессора, выполненного для реализации варианта осуществления команды сложения трех источников с плавающей запятой;
фиг. 2 - вид, показывающий блок-схему одного варианта осуществления способа осуществления варианта осуществления команды сложения трех источников с плавающей запятой;
фиг. 3 - вид, показывающий схему одного варианта осуществления операции сложения трех упакованных, возможно маскированных, источников с плавающей запятой;
фиг. 4 - вид, показывающий схему одного варианта осуществления операции сложения трех скалярных, возможно маскированных, источников с плавающей запятой;
фиг. 5 - вид, показывающий схему одного варианта осуществления операции сложения трех упакованных, возможно маскированных, возможно с управлением отрицанием, источников с плавающей запятой;
фиг. 6 - вид, показывающий схему одного варианта осуществления операции сложения трех скалярных, возможно маскированных, возможно с управлением отрицанием, источников с плавающей запятой;
фиг. 7 - вид, показывающий схему одного варианта осуществления суммирующего устройства для трех источников с плавающей запятой;
фиг. 8 - вид, показывающий схему одного варианта осуществления двух последовательно связанных суммирующих устройств для двух источников с плавающей запятой;
фиг. 9 - вид, показывающий схему одного варианта осуществления суммирующего устройства для двух источников с плавающей запятой с линией повторения, которая связывает выход с входом;
фиг. 10 - вид, показывающий схему одного варианта осуществления подходящего формата команды для команды сложения трех источников с плавающей запятой;
фиг. 11 - вид, показывающий схему одного варианта осуществления подходящего набора регистров упакованных данных;
фиг. 12 - вид, показывающий таблицу, иллюстрирующую то, что количество битов маски зависит от ширины упакованных данных и ширины элемента данных;
фиг. 13 - вид, показывающий схему одного варианта осуществления подходящего набора регистров масок операций;
фиг. 14А-14В - виды, показывающие схемы, иллюстрирующие общий формат векторно-ориентированных команд и его шаблоны команд, в соответствии с вариантами осуществления изобретения;
фиг. 15А - вид, показывающий схему одного примера конкретного формата векторно-ориентированных команд, в соответствии с вариантами осуществления изобретения;
фиг. 15В - вид, показывающий схему, иллюстрирующую поля одного конкретного формата векторно-ориентированных команд, которые составляют поле полного кода операции, в соответствии с одним вариантом осуществления изобретения;
фиг. 15С - вид, показывающий схему, иллюстрирующую поля одного конкретного формата векторно-ориентированных команд, которые составляют поле индекса регистра, в соответствии с одним вариантом осуществления изобретения;
фиг. 15D - вид, показывающий схему, иллюстрирующую поля одного конкретного формата векторно-ориентированных команд, который составляют поле операции приращения, в соответствии с одним вариантом осуществления изобретения;
фиг.16 - вид, показывающий схему одного варианта осуществления архитектуры регистров;
фиг. 17А - вид, показывающий структурную схему, иллюстрирующую вариант осуществления конвейера с исполнением команд по очереди и вариант осуществления конвейера с внеочередным исполнением/направлением команд, с переименованием регистров;
фиг. 17В - вид, показывающий структурную схему варианта осуществления ядра процессора, содержащего входной блок, связанный с блоком механизма исполнения, при этом входной блок и блок механизма исполнения связаны с блоком памяти;
фиг. 18А - вид, показывающий структурную схему варианта осуществления одного ядра процессора вместе с соединением с внутренней сетью на кристалле и с локальным подмножеством кэш-памяти уровня 2 (L2);
фиг. 18В - вид, показывающий увеличенную структурную схему варианта осуществления части ядра процессора с фиг. 18А;
фиг. 19 - вид, показывающий структурную схему варианта осуществления процессора, который может содержать более одного ядра, может содержать контроллер интегрированной памяти и может содержать интегрированную графику;
фиг. 20 вид, показывающий структурную схему первого варианта осуществления архитектуры компьютера;
фиг. 21 - вид, показывающий структурную схему второго варианта осуществления архитектуры компьютера;
фиг. 22 - вид, показывающий структурную схему третьего варианта осуществления архитектуры компьютера;
фиг. 23 - вид, показывающий структурную схему четвертого варианта осуществления архитектуры компьютера;
фиг. 24 вид, показывающий структурную схему использования программного устройства преобразования команд для преобразования двоичных команд исходного набора команд в двоичные команды целевого набора команд, в соответствии с вариантами осуществления изобретения.
Осуществление изобретения
В настоящем документе описаны команды сложения трех операндов-источников с плавающей запятой, процессоры для исполнения этих команд, способы, реализуемые процессорами при обработке или исполнении этих команд, и системы, содержащие один или несколько процессоров для обработки или исполнения этих команд. В последующем описании изложено большое количество конкретных подробностей (например, конкретные операции команд, форматы данных, конфигурации процессоров, подробности микроархитектуры, последовательности операций и так далее). Тем не менее, варианты осуществления изобретения могут быть реализованы без этих конкретных подробностей. В других примерах хорошо известные схемы, структуры и технологии не показаны подробно, чтобы не мешать пониманию описания.
На фиг. 1 показана структурная схема одного варианта осуществления процессора 100, выполненного для реализации варианта осуществления команды 102 сложения трех источников с плавающей запятой. В некоторых вариантах осуществления изобретения процессор может быть процессором общего назначения (например, такой тип процессора часто используют в настольных компьютерах, ноутбуках или других компьютерах). В. качестве альтернативы, процессор может быть процессором специального назначения. Примеры подходящих процессоров специального назначения содержат, помимо прочего, графические процессоры, сетевые процессоры, процессоры связи, криптографические процессоры, сопроцессоры, встроенные процессоры, цифровые сигнальные процессоры (DSP) и контроллеры (например, микроконтроллеры). Процессор может быть любым из различных процессоров (CISC) со сложным набором команд, различных процессоров (RISC) с сокращенным набором команд, различных процессоров (VLIW) с очень длинным командным словом, их различных гибридов или процессоров других типов.
Во время работы процессор 100 может принимать вариант осуществления команды 102 сложения трех источников с плавающей запятой. Например, команда сложения трех источников с плавающей запятой может быть принята от блока вызова команд, очереди команд или подобного. Команда сложения трех источников с плавающей запятой может представлять макрокоманду, команду языка ассемблера, команду машинного кода или команду или сигнал управления набора команд процессора. В некоторых вариантах осуществления изобретения команда сложения трех источников с плавающей запятой может прямо определять (например, с помощью одного или нескольких полей или наборов битов) или другим образом указывать (например, неявно указывать, благодаря соотнесению регистра с помощью карты эмуляции регистров и так далее) первый операнд-источник 112, который должен содержать, по меньшей мере, первый элемент данных с плавающей запятой, может определять или другим образом указывать второй операнд-источник 114, который должен содержать, по меньшей мере, второй элемент данных с плавающей запятой, может определять или другим образом указывать третий операнд-источник 116, который должен содержать, по меньшей мере, третий элемент данных с плавающей запятой, и может определять или другим образом указывать операнд-назначение (например, место хранения назначения), где должен храниться результат 118.
Обращаясь снова к фиг. 1, процессор содержит блок декодирования или декодер 104. Блок декодирования может принять и декодировать команду 102 сложения трех источников с плавающей запятой. Блок декодирования может подать на выход одну или несколько микрокоманд, микроопераций, точек входа микрокода, декодированных команд или сигналов управления, или другие сравнительно низкоуровневые команды или сигналы управления, которые отражают, представляют и/или получаются из команды сложения трех источников с плавающей запятой. Одна или несколько низкоуровневых команд или сигналов управления могут реализовывать высокоуровневую команду сложения трех источников с плавающей запятой с помощью одной или нескольких низкоуровневых (например, уровня схемы или уровня аппаратного обеспечения) операций. В некоторых вариантах осуществления изобретения блок декодирования содержит одну или несколько входных структур (например, порт (порты), соединение (соединения), интерфейс и так далее) для приема команды, логическую схему распознавания и декодирования команд, связанную с входными структурами для приема, распознавания и декодирования команды в одну или несколько соответствующих низкоуровневых команд или сигналов управления, и одну или несколько выходных структур (например, порт (порты), соединение (соединения), интерфейс и так далее), связанных с логической схемой распознавания и декодирования команд, для подачи на выход одной или нескольких соответствующих низкоуровневых команд или сигналов управления. Блок декодирования может быть реализован с использованием различных механизмов, в том числе, помимо прочего, постоянных запоминающих устройств (ROM) микрокода, таблиц соответствия, аппаратных реализаций, программируемых логических массивов (PLA) и других известных в технике механизмов.
В некоторых вариантах осуществления изобретения вместо прямого предоставления команды сложения трех источников с плавающей запятой в блок декодирования, при желании, может быть использован эмулятор, транслятор, устройство трансформирования, интерпретатор команд или другой модуль преобразования команд. В технике известны различные типы модулей преобразования команд, и они могут быть реализованы в форме аппаратного обеспечения, программного обеспечения, аппаратнореализованного программного обеспечения или их комбинации. В некоторых вариантах осуществления изобретения модуль преобразования команд может быть расположен снаружи процессора обработки команд, например, на отдельном кристалле и/или в памяти (например, статичный, динамичный модуль или модуль эмуляции команд времени выполнения). В качестве примера модуль преобразования команд может принимать команду сложения трех источников с плавающей запятой, которая может быть из первого набора команд, и может эмулировать, транслировать, трансформировать, интерпретировать или другим образом преобразовывать команду сложения трех источников с плавающей запятой в одну или несколько соответствующих, или полученных промежуточных команд или сигналов управления, которые могут быть из второго другого набора команд. Одна или несколько промежуточных команд или сигналов управления второго набора команд могут быть предоставлены на блок декодирования, который может декодировать принятые одну или несколько команд или сигналов управления второго набора команд в одну или несколько низкоуровневых команд или сигналов управления, которые могут быть исполнены естественным аппаратным обеспечением процессора (например, одним или несколькими блоками исполнения).
Процессор также содержит набор 110 регистров. Каждый из регистров может представлять собой место хранения на кристалле, которое выполнено для хранения данных с плавающей запятой. В качестве примера, регистры могут быть регистрами с плавающей запятой, выполненными с возможностью хранения элементов данных с плавающей запятой, регистрами упакованных данных, выполненными с возможностью хранения упакованных или скалярных элементов данных с плавающей запятой, или подобными. Регистры могут представлять архитектурные или архитектурно видимые регистры (например, файл архитектурных регистров), которые видимы программному обеспечению и/или программисту и/или могут являться регистрами, указанными командами набора команд процессора для идентификации операндов. Эти архитектурные регистры отличаются от других не архитектурных регистров или не архитектурно видимых регистров в заданной микроархитектуре (например, временные регистры, буферы переупорядочивания, регистров выгрузки и так далее). Регистры могут быть реализованы различным образом в различных микроархитектурах с использованием хорошо известных технологий, и они не ограничены каким-либо конкретным типом схемы. Примеры подходящих типов регистров содержат, помимо прочего, специальные физические регистры, динамически выделяемые физические регистры с использованием переименования регистров и комбинации перечисленного.
В некоторых вариантах осуществления изобретения первый операнд-источник 112 может, при желании, храниться в первом регистре набора, второй операнд-источник 114 может, при желании, храниться во втором регистре набора, третий операнд-источник 116 может, при желании, храниться в третьем регистре набора и операнд-назначение может, при желании, храниться в четвертом регистре набора. В некоторых случаях, регистр, используемый для операнда-назначения, может отличаться от регистров, используемых для первого, второго и третьего операндов-источников. В других случаях, регистр, используемый для одного из операндов-источников, может быть повторно использован для операнда-назначения (например, результат может быть записан поверх одного из операндов-источников). В качестве альтернативы, ячейки памяти или другие ячейки запоминающего устройства могут быть, при желании, использованы для одного или нескольких из указанных операндов.
Обращаясь снова к фиг. 1, блок 106 исполнения связан с блоком 104 декодирования и набором 110 регистров. В некоторых вариантах осуществления изобретения блок исполнения также может быть связан с необязательным регистром 120 маски операции с упакованными данными и/или необязательной маской 122 операции с упакованными данными, как будет дополнительно описано ниже, хотя этого не требуется. Блок исполнения может принимать одну или несколько декодированных, или другим образом преобразованных команд или сигналов управления, которые представляют команду сложения трех источников с плавающей запятой и/или которые получены из указанной команды. Блок исполнения также может принимать первый операнд-источник 112, содержащий, по меньшей мере, первый элемент данных с плавающей запятой, второй операнд-источник 114, содержащий, по меньшей мере, второй элемент данных с плавающей запятой, и третий операнд-источник 116, содержащий, по меньшей мере, третий элемент данных с плавающей запятой. Блок исполнения выполнен с возможностью, в ответ на команду сложения трех источников с плавающей запятой или в результате этой команды (например, в ответ на одну или несколько команд или сигналов управления, декодированных прямо или косвенно (например, с помощью эмуляции) из этой команды), сохранения результата 118 в операнде-назначении, указанном командой. В некоторых вариантах осуществления изобретения результат может содержать, по меньшей мере, результирующий элемент данных с плавающей запятой, который соответствует первому, второму и третьему элементам данных с плавающей запятой. В некоторых вариантах осуществления изобретения результирующий элемент данных с плавающей запятой может содержать, по меньшей мере, первую округленную сумму с плавающей запятой. Первая округленная сумма с плавающей запятой является числом с плавающей запятой, при этом осуществлено надлежащее округление с плавающей запятой. В некоторых вариантах осуществления изобретения первая округленная сумма с плавающей запятой может представлять собой алгебраическую сумму второй округленной суммы с плавающей запятой и третьего элемента данных с плавающей запятой. В некоторых вариантах осуществления изобретения вторая округленная сумма с плавающей запятой может представлять собой алгебраическую сумму первого элемента данных с плавающей запятой и второго элемента данных с плавающей запятой. В некоторых вариантах осуществления изобретения результат может быть любым из показанных и описанных результатов для фиг. 3-6, хотя объем изобретения этим не ограничен.
Для ясности, в настоящем документе термин «алгебраическая сумма» первого значения и второго значения используют для обозначения суммы, которая позволяет брать любое значение из первого и второго значений с обратным знаком. Например, алгебраическая сумма второй округленной суммы с плавающей запятой и третьего элемента данных с плавающей запятой может содержать сумму третьего элемента данных с плавающей запятой и второй округленной суммы с плавающей запятой или сумму второй округленной суммы с плавающей запятой и третьего элемента данных с плавающей запятой с обратным знаком (отрицание). Аналогично, алгебраическая сумма первого и второго элементов данных с плавающей запятой может содержать сумму первого элемента данных с плавающей запятой и второго элемента данных с плавающей запятой, сумму первого элемента данных с плавающей запятой и второго элемента данных с плавающей запятой с обратным знаком, сумму первого элемента данных с плавающей запятой с обратным знаком и второго элемента данных с плавающей запятой с обратным знаком и сумму первого элемента данных с плавающей запятой с обратным знаком и второго элемента данных с плавающей запятой. Как будет подробнее описано ниже, некоторые, но не все, варианты осуществления изобретения могут, при желании, позволять брать любой один, два или все элементы данных с обратным знаком до сложения, хотя этого не требуется (например, другой вариант осуществления изобретения не позволяет брать такое отрицание).
Предпочтительно, что команда сложения трех источников с плавающей запятой может осуществлять два сложения в рамках исполнения одной команды (например, макрокоманды, команды из набора команд и так далее). Обычно требуется две различные команды. Способность осуществлять оба сложения в одной команде может позволить получить определенные преимущества с точки зрения в производительности и/или энергопотребления. Во-первых, оба сложения могут быть осуществления при декодировании одной команды, вместо декодирования двух отдельных команд. Это может помочь увеличить производительность декодирования команды благодаря освобождению области декодирования для другой команды. Это также может помочь уменьшить величину потребления электроэнергии, так как для осуществления двух сложений декодируют на одну команду меньше. Улучшения производительности также могут быть достигнуты путем отказа от записи промежуточной суммы одного из двух сложений в архитектурный регистр и последующего считывания промежуточной суммы из архитектурного регистра с целью осуществления второго сложения. Такие записи и считывания из архитектурного регистра обычно подразумевают дополнительное время или ожидание (например, порядка нескольких тактовых циклов). Это также может помочь избежать связывания архитектурного регистра и помочь уменьшить количество операций переименования регистров. Исключение считываний, записей и операций переименования регистров также может помочь уменьшить потребление электроэнергии. Для определенных процессоров, уменьшение потребления электроэнергии может привести к увеличению производительности, так как определенные процессоры (например, это особенно относится к процессорам, используемым для высокопроизводительных вычислений) могут обладать производительностью, которая имеет тенденцию быть ограниченной доступными границами потребления электроэнергии. Соответственно, уменьшение потребления электроэнергии также может вести к увеличению производительности.
Округление с плавающей запятой может быть использовано тогда, когда точный результат операции с плавающей запятой (например, сложения с плавающей запятой) требует больше цифр, чем присутствует цифр в мантиссе. В некоторых вариантах осуществления изобретения результат может отражать две различные операции округления с плавающей запятой, вместо одной операции округления с плавающей запятой. Более конкретно, первая начальная операция округления с плавающей запятой может быть осуществлена для суммы, подразумевающей первый и второй элементы данных с плавающей запятой с целью выработки первой округленной суммы и далее вторая операция округления с плавающей запятой может быть осуществлена для суммы третьего элемента данных с плавающей запятой и первой округленной суммы. Как будет подробно объяснено ниже, эти две операции округления с плавающей запятой могут отражать микроархитектурную реализацию команды. Например, в некоторых вариантах осуществления изобретения микроархитектура, используемая для реализации команды, может использовать логическую схему, которая не способна одновременно сложить три значения с плавающей запятой. В качестве одного примера, как будет подробно описано ниже, два суммирующих устройства для чисел с плавающей запятой могут быть использованы последовательно и каждое может быть использовано для осуществления одновременного сложения только двух значений с плавающей запятой. Например, в первом суммирующем устройстве может быть получена сумма двух значений с плавающей запятой и далее для суммы может быть осуществлена первая операция округления с плавающей запятой, и далее во втором суммирующем устройстве может быть получена сумма третьего значения с плавающей запятой и округленной суммы, и далее для суммы, поданной на выход второго суммирующего устройства, может быть осуществлена вторая операция округления.
В качестве другого примера, как будет подробно описано ниже, может быть повторно использовано одно суммирующие устройство для чисел с плавающей запятой и во время каждого цикла или прохода суммирующего устройства может быть осуществлено одновременное сложение только двух значений с плавающей запятой. Например, в один проход может быть получена сумму двух значений с плавающей запятой, и далее для этой суммы может быть осуществлена первая операция округления с плавающей запятой, и далее во второй проход может быть получена сумма третьего значения с плавающей запятой и округленной суммы с первого прохода, и далее для суммы, поданной на выход суммирующего устройства во втором проходе, может быть осуществлена вторая операция округления. Как будет подробно описано ниже, преимущества такой микроархитектурной реализации состоят в том, что, например, исключается необходимость в специальной и/или, в общем, большой и сложной логической схеме для осуществления одновременного сложения трех значений с плавающей запятой. Результаты, включающиеся в себя две операции округления с плавающей запятой, могут немного отличаться от случая осуществления одной операции округления с плавающей запятой и это отражает такие микроархитектурные реализации.
В некоторых вариантах осуществления изобретения для обоих округлений может использоваться операция округления или режим округления одного типа. Различные типы операций округления или режимов округления подходят для различных вариантов осуществления изобретения. Примерами подходящих режимов округления являются, помимо прочего, следующие: (1) округление до ближайшего четного; (2) округление в меньшую сторону к отрицательной бесконечности; (3) округление в большую сторону к положительной бесконечности; и (4) округление в сторону нуля с отбрасыванием.
В некоторых вариантах осуществления изобретения команда сложения трех источников с плавающей запятой может поддерживать встроенное управление режимом округления, хотя этого не требуется. Обычно, управление режимом округления, в целом, определено в регистре состояния и управления плавающей запятой (например, MXCSR). Некоторые команды способны обеспечить переопределение округления для каждой команды с помощью полей кодирования в операнде с непосредственным значением. В некоторых вариантах осуществления изобретения управление переопределением режима округления для каждой команды может быть обеспечено с помощью кодирования команды и за рамками непосредственного значения. В качестве примера, в некоторых вариантах осуществления изобретения, управление режимом округления может быть встроено в префикс (например, EVEX префикс) как статичное управление или управление переопределением режима округления для каждой команды. Это может позволить программисту статично применять конкретный режим округления, который может переопределить режим округления в регистре состояния и управления плавающей запятой (например, MXCSR). В некоторых вариантах осуществления изобретения, при желании, может подразумеваться запрещение сообщения обо всех исключениях с плавающей запятой, когда такое управление режимом округления обеспечивают с помощью кодирования команды. Запрещение сообщения об всех исключениях с плавающей запятой может иметь место независимо от любых конкретных битов маски для запрещения или разрешения сообщения о соответствующих исключениях с плавающей запятой в регистре состояния и управления плавающей запятой (например, MXCSR). Запрещение сообщения об этих исключениях с плавающей запятой может означать, что биты или флаги в регистре состояния и управления плавающей запятой (например, MXCSR) могут не обновляться при появлении таких исключений с плавающей запятой (то есть, о них не сообщают).
Возвращаясь снова к фиг. 1, блок 106 исполнения и/или процессор 100 могут содержать конкретную или специфичную логическую схему (например, транзисторы, интегральные схемы или другое аппаратное обеспечение, потенциально объединенное с встроенными программами (например, команды, сохраненные в энергонезависимой памяти) и/или программным обеспечением), которые выполнены с возможностью реализации команды сложения трех источников с плавающей запятой и хранения результата в ответ на команду сложения трех источников с плавающей запятой и/или в результате команды сложения трех источников с плавающей запятой (например, в ответ на одну или несколько команд или сигналов управления, декодированных или другим образом полученных из команды сложения трех источников с плавающей запятой). Блок исполнения может содержать логическую схему 108 сложения с плавающей запятой. В качестве примера блок исполнения и/или логическая схема сложения с плавающей запятой содержат суммирующее устройство для чисел с плавающей запятой, объединенное устройство (FMA) сложения-умножения с плавающей запятой, блок арифметики с плавающей запятой, логический блок арифметики с плавающей запятой или подобные. В некоторых вариантах осуществления изобретения блок исполнения может содержать одну или несколько входных структур (например, порт (порты), соединение (соединения), интерфейс и так далее) для приема операндов-источников, логическую схему или схему сложения с плавающей запятой, связанную с входной структурой (структурами) для приема и обработки операндов-источников и выработки результата, и одну или несколько выходных структур (например, порт (порты), соединение (соединения), интерфейс и так далее), связанных с логической схемой или схемой сложения с плавающей запятой с целью подачи результата на выход. В некоторых вариантах осуществления изобретения блок исполнения может содержать схему или логическую схему, показанную и описанную на каких-либо фиг. из фиг. 7-9, на которых приведены. примеры подходящих микроархитектурных конструкций, хотя объем изобретения этим не ограничен.
Для ясности описания будет показан и описан сравнительно простой процессор 100. В других вариантах осуществления изобретения, при желании, процессор может содержать другие хорошо известные компоненты процессора. Возможные примеры таких компонентов включают в себя, помимо прочего, блок вызова команд, кэш-памяти данных и команд, кэш-памяти второго или более высоких уровней, логическую схему с внеочередным исполнением команд, блок планирования исполнения команд, блок переименования регистров, блок выгрузки, блок интерфейса шины, буферы предыстории преобразования данных и команд, буферы предварительного вызова, очереди микрокоманд, устройства, задающие последовательность микрокоманд, другие компоненты, содержащиеся в процессорах и их различные комбинации. Подходят большое количество разных комбинаций и конфигураций таких компонентов. Варианты осуществления изобретения не ограничены какой-либо известной комбинацией или конфигурацией. Более того, варианты осуществления изобретения могут содержаться в процессорах с несколькими ядрами, логических процессорах или устройствах исполнения, по меньшей мере, один из которых содержит блок декодирования и блок исполнения для реализации варианта осуществления команды сложения трех источников с плавающей запятой.
На фиг. 2 показана схема одного варианта способа 225 реализации варианта осуществления команды сложения трех источников с плавающей запятой. В различных вариантах осуществления изобретения способ может быть выполнен процессором, устройством обработки команд или другим цифровым логическим устройством. В некоторых вариантах осуществления изобретения операции и/или способ с фиг. 2 могут быть выполнены процессором и/или в процессоре с фиг. 1. Компоненты, признаки и конкретные необязательные подробности, описанные в настоящем документе для процессора с фиг. 1, также, при желании, применимы к операциям и/или способу с фиг. 2. В качестве альтернативы операции и/или способ с фиг. 2 могут быть выполнены аналогичным или другим процессором или устройством. Более того, процессор с фиг. 1 может выполнить операции и/или способ, аналогичные, похожие или отличные от операций и/или способа с фиг. 2.
Способ включает в себя в блоке 226 прием команды сложения трех источников с плавающей запятой. В различных аспектах изобретения, команда может быть принята в процессоре, устройстве обработки команд или его участке (например, блоке вызова команд, блоке декодирования, блоке интерфейса шины и так далее). В различных аспектах команда может быть принята от источника, расположенного не на кристалле (например, из памяти, соединения и так далее) или от источника на кристалле (например, из кэш-памяти команд, очереди команд и так далее). Команда сложения трех источников с плавающей запятой может определять или другим образом указывать первый операнд-источник, содержащий, по меньшей мере, первый элемент данных с плавающей запятой, определять или другим образом указывать второй операнд-источник, содержащий, по меньшей мере, второй элемент данных с плавающей запятой, и может определять или другим образом указывать третий операнд-источник, содержащий, по меньшей мере, третий элемент данных с плавающей запятой.
В блоке 227 результат сохраняют в операнде-назначении в ответ на команду сложения трех источников с плавающей запятой и/или в результате команды сложения трех источников с плавающей запятой. Операнд-назначение может быть определен или другим образом указан в команде сложения трех источников с плавающей запятой. Обычно, блок исполнения, устройство обработки команд или процессор могут выполнять команду и сохранять результат. Результат может содержать, по меньшей мере, результирующий элемент данных с плавающей запятой, который должен соответствовать первому, второму и третьему элементам данных с плавающей запятой. Результирующий элемент данных с плавающей запятой может содержать первую округленную сумму с плавающей запятой. В некоторых вариантах осуществления изобретения первая округленная сумма с плавающей запятой может представлять собой алгебраическую сумму второй округленной суммы с плавающей запятой и третьего элемента данных с плавающей запятой. В некоторых вариантах осуществления изобретения вторая округленная сумма с плавающей запятой может представлять собой алгебраическую сумму первого элемента данных с плавающей запятой и второго элемента данных с плавающей запятой. В некоторых вариантах осуществления изобретения результат может быть любым из показанных и описанных результатов для фиг. 3-6, хотя объем изобретения этим не ограничен.
Показанный способ включает в себя архитектурные операции (например, операции, видимые в программном обеспечении). В других вариантах осуществления изобретения, при желании, способ может включать в себя одну или несколько микроархитектурных операций. В качестве примера, команда может быть вызвана, декодирована, возможно может быть получен доступ к операндам-источникам, блок исполнения может выполнить микроархитектурные операции с целью реализации команды и так далее. В некоторых вариантах осуществления изобретения микроархитектурные операции для реализации команды могут, при желании, содержать любую операцию из показанных и описанных со ссылками на фиг. 3-6 или 7-9. Например, в некоторых вариантах осуществления изобретения вторая округленная сумма с плавающей запятой, при желании, может быть предоставлена из первого суммирующего устройства для чисел с плавающей запятой во второе суммирующее устройство для чисел с плавающей запятой. В качестве другого примера, в некоторых вариантах осуществления изобретения вторая округленная сумма с плавающей запятой, при желании, может быть повторно подана из выхода суммирующего устройства для чисел с плавающей запятой на вход суммирующего устройства для чисел с плавающей запятой.
1
N
1
N
1
N
1
1
1
N
N
N
На фиг. 3 показана схема одного варианта осуществления операции 330 сложения трех упакованных, возможно маскированных, источников с плавающей запятой, которая может быть выполнена в ответ на вариант осуществления команды сложения трех упакованных, возможно маскированных, источников с плавающей запятой. Команда может определять (например, явно определять) или другим образом указывать (например, неявно указывать) первый операнд 312 исходных упакованных данных, второй операнд 314 исходных упакованных данных, и третий операнд 316 исходных упакованных данных. Первый операнд исходных упакованных данных может содержать первое множество упакованных элементов данных с плавающей запятой A-A. Второй операнд исходных упакованных данных может содержать второе множество упакованных элементов данных с плавающей запятой B-B. Третий операнд исходных упакованных данных может содержать третье множество упакованных элементов данных с плавающей запятой C-C. Каждый элемент данных в первом операнде исходных упакованных данных может соответствовать другому элементу данных во втором операнде исходных упакованных данных и другому элементу данных в третьем операнде исходных упакованных данных, в соответствующей относительной позиции в операндах. Например, A, B и C могут соответствовать друг другу, A, B и C могут соответствовать друг другу и так далее.
Обычно количество элементов данных с плавающей запятой в каждом операнде исходных упакованных данных может быть равно размеру в битах операнда исходных упакованных данных, деленному на размер в битах каждого элемента данных с плавающей запятой. В различных вариантах осуществления изобретения ширина каждого операнда исходных упакованных данных может быть равна 64 битам, 128 битам, 256 битам, 512 битам или 1024 битам, хотя объем изобретения этим не ограничен. В различных вариантах осуществления изобретения каждый элемент данных с плавающей запятой может быть 16-битовым элементом данных с плавающей запятой половинной точности, 32-битовым элементом данных с плавающей запятой одинарной точности, 64-битовым элементом данных с плавающей запятой двойной точности, 80-битовым элементом данных двойного расширенного формата точности или 128 битовым элементом данных с плавающей запятой формата четверной точности. В некоторых вариантах осуществления изобретения 32 битовый формат одинарной точности или 64 битовый формат двойной точности могут поддерживаться благодаря их текущему широкому использованию. Также подходящими являются другие размеры операндов упакованных данных и варианты ширины элементов данных. В различных вариантах осуществления изобретения в каждом операнде исходных упакованных данных может присутствовать, по меньшей мере, два, по меньшей мере, четыре, по меньшей мере, восемь или более восьми элементов данных с плавающей запятой.
1
N
1
1
1
1
Обращаясь снова к фиг. 3, в некоторых вариантах осуществления изобретения команда, при желании, также может определять или другим образом указывать маску 322 операции с исходными упакованными данными, хотя этого не требуется. В настоящем документе маска операции с упакованными данными также называют просто маской операции, маской наложения логического условия или маской. Маска операции с исходными упакованными данными может содержать множество элементов маски M-M. Каждый элемент маски может соответствовать элементу исходных данных и/или элементу данных результата в соответствующей относительной позиции в операндах. Например, M может соответствовать A, В и С.
. Маска операции с исходными упакованными данными может представлять собой операнд маски, операнд наложения логического условия или операнд условного управления, который может быть использован для наложения логического условия, условного управления или маскирования того, должны ли выполняться соответствующие операции с упакованными данными и/или сохраняться соответствующие результаты. В некоторых вариантах осуществления изобретения маскирование или наложение логического условия может находиться на уровне элементов данных, так что операциями над различными множествами соответствующих троек элементов данных можно условно управлять или накладывать логические условия отдельно и/или независимо от других. Маска может содержать множество элементов маски, элементов наложения логического условия или элементов условного управления. В одном аспекте, элементы маски могут состоять во взаимно однозначном соответствии с соответствующими наборами троек элементов исходных данных и/или соответствующих элементов данных результата. Как показано, в некоторых вариантах осуществления изобретения каждый элемент маски может быть одним битом маски. В таких случаях маска может содержать бит для каждого элемента данных в первом операнде исходных упакованных данных и/или каждого элемента данных результата в результирующих упакованных данных 318. Значение каждого бита маски может управлять, выполняют ли соответствующую операцию с упакованными данными и сохраняют ли соответствующий элемент данных результата. Каждый бит маски может обладать первым значением для предоставления возможности выполнять операцию для соответствующего набора из трех элементов исходных данных и предоставления возможности сохранять соответствующий элемент данных результата в результирующих упакованных данных или может обладать вторым, другим, значением, чтобы не позволять выполнять эту операцию для соответствующего набора из трех элементов исходных данных и/или не позволять сохранять соответствующий элемент данных результата в результирующих упакованных данных. В соответствии с одной возможной договоренностью, как показано на иллюстрации, бит маски, установленный равным двоичному нулю (то есть, 0) может представлять операцию замаскирования, когда в соответствующем элементе данных результата сохраняют замаскированное значение вместо результата операции. В отличие от этого, бит маски, установленный равным двоичной единице (то есть, 1) может представлять операцию без маскирования, когда в соответствующем элементе данных результата сохраняют результат операции. В других вариантах осуществления изобретения могут быть использованы противоположные договоренности, или два или несколько битов могут быть, при желании, использованы для каждого элемента маски (например, каждый элемент маски может обладать количеством битов, одинаковым с соответствующим элементом исходных данных, и для наложения логического условия могут быть использованы один или несколько самых старших или самых младших битов).
Вариант осуществления операции 330 может быть выполнен в ответ на один вариант осуществления команды и/или в результате одного варианта осуществления команды. В вариантах осуществления изобретения, когда, при желании, использована маска 322 операции с упакованными данными, операция может быть выполнена в зависимости от маскирования, наложения логического условия или условного управления со стороны необязательной маски операции с исходными упакованными данными. Результирующие упакованные данные 318 могут быть выработаны (например, в блоке исполнения) и сохранены в целевую ячейку памяти в ответ на команду. Целевая ячейка памяти может быть определена, или другим образом указана, в команде. В различных вариантах осуществления изобретения целевая ячейка памяти может быть регистром упакованных данных, ячейкой запоминающего устройства или другой ячейкой памяти. Результирующие упакованные данные могут содержать множество элементов данных, каждый из которых соответствует другому набору из трех элементов исходных данных и другому соответствующему элементу маски.
1
1
2
1
1
2
1
1
1
2
1
1
1
1
1
1
1
1
2
2
1
В вариантах осуществления изобретения, где используют необязательную маску операции с упакованными данными, элементы данных результата, соответствующие немаскирующим элементам маски, могут обладать значениями, которые зависят от операции, выполненной с соответствующим набором трех исходных элементов данных с плавающей запятой. В показанном примере, самый правый элемент данных результата соответствует операции без маскирования и сохраняет значение, которое зависит от соответствующей операции с упакованными данными, выполняемой с соответствующими тремя исходными элементами данных с плавающей запятой из первого, второго и третьего операндов исходных упакованных данных. Более конкретно, в некоторых вариантах осуществления изобретения, самый правый элемент результата с плавающей запятой может сохранять первую округленную сумму с плавающей запятой (например, RND(C+RND(A+В)). Первая округленная сумма с плавающей запятой может представлять собой алгебраическую сумму второй округленной суммы с плавающей запятой (например, RND(A+B)) и третьего элемента данных с плавающей запятой (например, C). Вторая округленная сумма с плавающей запятой (например, RND(A+B)) может представлять собой алгебраическую сумму первого элемента данных с плавающей запятой (например, A) и второго элемента данных с плавающей запятой (например, B). Алгебраические суммы позволяют потенциально или, при желании, брать элементы исходных данных (например, один или несколько из А, В, и/или C) с обратным знаком. В этом примере, RND и RND используют для обозначения двух отдельных, используемых последовательно операций округления с плавающей запятой (например, RND выполняют до RND).
В отличие от этого, в вариантах осуществления изобретения, где используют необязательную маску 322 операции с упакованными данными, элементы данных результата, соответствующие замаскированным элементам маски, могут обладать значениями, которые не зависят от операции, выполненной с соответствующей парой элементов исходных данных. Предпочтительнее, эти элементы данных результата могут обладать замаскированными значениями (например, фиксированными или заранее заданными значениями). Например, или не нужно выполнять соответствующую операцию, или если соответствующая операция выполнена, то соответствующий результат не нужно сохранять в результирующих упакованных данных. Предпочтительнее, замаскированные значения (например, фиксированные или заранее заданные значения) могут быть сохранены в соответствующем элементе данных результата.
N
N
N
N
В показанном примере N-ый элемент маски M обладает замаскированным значением (например, в этом случае двоичный ноль). В результате, соответствующий самый левый элемент данных результата обладает замаскированным значением. Конкретное замаскированное значение может зависеть от типа маскирования, используемого для конкретной реализации. В некоторых вариантах осуществления изобретения может быть использовано маскирование нулями. При маскировании нулями замаскированные элементы данных результата могут быть приравнены нулю (например, вынуждены обладать значением, равным нулю). В других вариантах осуществления изобретения может быть использовано маскирование поглощением. При маскировании поглощением, замаскированные элементы данных результата могут обладать значением одного из соответствующих элементов исходных данных (например, соответствующий элемент исходных данных может перейти в замаскированный элемент данных результата). Например, самый левый элемент данных результата может обладать одним из следующих значений: A, B, или C. В других вариантах осуществления изобретения другие элементы данных результата могут подвергаться или не подвергаться маскированию.
На фиг. 4 показана схема одного варианта осуществления операции 432 сложения трех скалярных, возможно маскированных, источников с плавающей запятой, которая может быть выполнена в ответ на один вариант осуществления команды сложения трех скалярных, возможно маскированных, источников с плавающей запятой. Скалярная операция с фиг. 4 обладает определенным сходством с упакованной операцией с фиг. 3. Чтобы избежать неясности в описании, в основном, будут описаны разные и/или дополнительные характеристики скалярной операции с фиг. 4, без повторения аналогичных или общих характеристик и подробностей относительно упакованной операции с фиг. 3. Тем не менее, следует понимать, что ранее описанные характеристики и подробности упакованной операции с фиг. 3, за исключением аспектов, касающихся множества элементов данных в каждом операнде, также могут быть, при желании, применены к скалярной операции с фиг. 4, если не указано или не ясно обратное.
Команда может определять (например, явно определять) или другим образом указывать (например, неявно указывать) первый операнд-источник 412, второй операнд-источник 414, и третий операнд-источник 416. Первый операнд-источник может содержать первый элемент А данных с плавающей запятой. Второй операнд-источник может содержать второй элемент В данных с плавающей запятой. Третий операнд-источник может содержать третий элемент С данных с плавающей запятой. Элементы А, В и С данных могут соответствовать друг другу. Подходят типы элементов данных с плавающей запятой, ранее упомянутые при рассмотрении фиг. 3.
В некоторых вариантах осуществления изобретения элементы А, В и С данных могут быть сохранены в скалярных форматах в соответствующих регистрах упакованных данных. Регистры упакованных данных могут обладать шириной в битах, превосходящей элементы А, В и С данных с плавающей запятой. Например, в различных вариантах осуществления изобретения ширина каждого регистра упакованных данных может быть равна 64 битам, 128 битам, 256 битам, 512 битам или 1024 битам, хотя объем изобретения этим не ограничен. В одном конкретном примере, могут быть использованы 128 битовые регистры упакованных данных, хотя этого не требуется. Регистры упакованных данных могут быть способны сохранять упакованные данные помимо скалярных элементов А, В и С данных с плавающей запятой.
Обращаясь снова к фиг. 4, в некоторых вариантах осуществления изобретения команда, при желании, также может определять или другим образом указывать маску 422 операции с исходными данными, хотя этого не требуется. Маска операции с исходными данными может содержать элемент М маски. Элемент М маски может соответствовать элементам А, В и С исходных данных. Элемент М маски также может соответствовать элементу данных результата, расположенному в результате 418 в той же относительной позиции. Маска операции с исходными данными может обладать аналогичными атрибутами и вариантами, что и описанная ранее маска операции с исходными упакованными данными с фиг. 3, с одним исключением, заключающимся в том, что присутствует единственный элемент маски вместо множества. В этом типовом варианте осуществления изобретения элемент маски не предполагает маскирования (например, М=1). В некоторых вариантах осуществления изобретения маска операции с исходными данными может быть использована даже в случае только одного набора соответствующих скалярных элементов.
Вариант осуществления операции 432 может быть выполнен в ответ на один вариант осуществления команды и/или в результате одного варианта осуществления команды. В вариантах осуществления изобретения, когда, при желании, использована маска 422 операции, операция может быть выполнена в зависимости от маскирования, наложения логического условия или условного управления необязательной маски операции с исходными данными. Результат 418 может быть выработан (например, в блоке исполнения) и сохранен в целевую ячейку памяти в ответ на команду. Целевая ячейка памяти может быть определена, или другим образом указана, в команде. В различных вариантах осуществления изобретения целевая ячейка памяти может быть регистром, ячейкой запоминающего устройства или другой ячейкой памяти. Результат может содержать результирующий элемент данных с плавающей запятой, который соответствует элементам А, В и С исходных данных с плавающей запятой и элементу М маски.
1
2
2
2
1
2
В показанном примере, так как элемент маски не предполагает маскирования (например, М=1), элемент данных результата сохраняет значение, которое зависит от операции, выполненной с соответствующим набором элементов А, В и С исходных данных с плавающей запятой. Более конкретно, в некоторых вариантах осуществления изобретения, результирующий элемент данных с плавающей запятой может сохранять первую округленную сумму с плавающей запятой (например, RND(C+RND(A+В)). Первая округленная сумма с плавающей запятой может представлять собой алгебраическую сумму второй округленной суммы с плавающей запятой (например, RND(A+В)) и третьего элемента данных с плавающей запятой (например, С). Вторая округленная сумма с плавающей запятой (например, RND(A+В)) может представлять собой алгебраическую сумму первого элемента данных с плавающей запятой (например, А) и второго элемента данных с плавающей запятой (например, В). Алгебраические суммы позволяют потенциально или, при желании, брать один или несколько элементов из А, В и С с обратным знаком. RND и RND используют для обозначения двух отдельных, последовательно выполняемых операций округления с плавающей запятой.
В альтернативном примере, если элемент маски содержит маскирование (например, если М=0), элемент данных результата может сохранять замаскированное значение (например, фиксированное или заранее заданное значение). Подходят ранее описанные замаскированные значения, упомянутые при рассмотрении фиг. 3 (например, 0 в случае маскирования нулями или любой из А, В или С в случае маскирования поглощением).
На фиг. 5 показана схема одного варианта осуществления операции 534 сложения трех упакованных, возможно маскированных, возможно с управлением отрицанием, источников с плавающей запятой, которая может быть выполнена в ответ на вариант осуществления команды сложения трех упакованных, возможно маскированных, возможно с управлением отрицанием, источников с плавающей запятой. Операция, возможно с управлением отрицанием, с фиг. 5 обладает определенным сходством с операцией с фиг. 3. Чтобы избежать неясности в описании, в основном, будут описаны разные и/или дополнительные характеристики операции, возможно с управлением отрицанием, с фиг. 5, без повторения аналогичных или общих характеристик и подробностей относительно операции с фиг. 3. Тем не менее, следует понимать, что ранее описанные характеристики и подробности операции с фиг. 3, также могут, при желании, применены к операции, возможно с управлением отрицанием, с фиг. 5, если не указано или не ясно обратное.
1
N
1
N
1
N
Команда может определить или другим образом указать первый операнд 512 исходных упакованных данных, содержащий элементы A-A данных с плавающей запятой, второй операнд 514 исходных упакованных данных, содержащий элементы B-B данных с плавающей запятой, и третий операнд 516 исходных упакованных данных, содержащий элементы C-C данных с плавающей запятой. Операнды исходных упакованных данных и элементы данных могут обладать описанными выше признаками и вариантами (например, для фиг. 3).
1
N
1
N
1
N
В некоторых вариантах осуществления изобретения команда, при желании, также может определять или другим образом указывать маску 522 операции с исходными упакованными данными, хотя этого не требуется. Маска операции с исходными упакованными данными может содержать элементы M-M маски. Маска операции с исходными упакованными данными и элементы маски могут обладать описанными выше признаками и вариантами (например, для фиг. 3). В показанном примере, элементы M и M маски не предполагают маскирования (например, M=1 и M=1).
1
N
1
N
1
N
В некоторых вариантах осуществления изобретения команда, при желании, может содержать один или несколько битов управления отрицанием, хотя этого не требуется. Один или несколько битов управления отрицанием могут позволить программному обеспечению и/или программисту управлять отрицанием любого одного или нескольких или всех операндов-источников. В некоторых вариантах осуществления изобретения команда может содержать первый набор из одного или нескольких битов 536, которые соответствуют первому операнду-источнику 512, для определения, должно ли применяться отрицание ко всем элементам упакованных данных с плавающей запятой (например, A-A) первого операнда-источника. В некоторых вариантах осуществления изобретения команда также, или в качестве альтернативы, может содержать второй набор из одного или нескольких битов 538, которые соответствуют второму операнду 514-источнику, для определения, должно ли применяться отрицание ко всем элементам упакованных данных с плавающей запятой (например, B-B) второго операнда-источника. В некоторых вариантах осуществления изобретения команда также, или в качестве альтернативы, может содержать третий набор из одного или нескольких битов 540, которые соответствуют третьему операнду-источнику 516, для определения, должно ли применяться отрицание ко всем элементам упакованных данных с плавающей запятой (например, C-C) третьего операнда-источника.
1
N
1
N
1
N
В некоторых вариантах осуществления изобретения единственный бит может соответствовать каждому соответствующему операнду исходных упакованных данных и может быть использован для обеспечения управления отрицанием для этого операнда исходных упакованных данных. В соответствии с одной возможной договоренностью, каждый единственный бит управления отрицанием может быть установлен равным двоичной единице (то есть, 1) для определения того, что все элементы данных соответствующих исходных упакованных данных должны быть взяты с обратным знаком, или вместо этого может быть очищен до двоичного нуля (то есть, 0) для определения того, что все элементы данных соответствующего операнда исходных упакованных данных не должны быть взяты с обратным знаком. Например, первый бит 536 может быть установлен для определения того, что все элементы данных первого операнда-источника (например, A-A) должны быть взяты с обратным знаком, или очищен для указания того, что они не должны быть взяты с обратным знаком. Аналогично, второй бит 538 может быть установлен для определения того, что все элементы данных второго операнда-источника (например, B-B) должны быть взяты с обратным знаком, или очищен для указания того, что они не должны быть взяты с обратным знаком. Аналогично, третий бит 540 может быть установлен для определения того, что все элементы данных третьего операнда-источника (например, C-C) должны быть взяты с обратным знаком, или очищен для указания того, что они не должны быть взяты с обратным знаком.
В некоторых вариантах осуществления изобретения может присутствовать один набор из одного или нескольких битов управления отрицанием, который может соответствовать и обеспечивать управление отрицанием для любых из первых, вторых и третьих исходных упакованных данных. В других вариантах осуществления изобретения может присутствовать два набора из одного или нескольких битов управления отрицанием каждый, которые могут соответствовать и обеспечивать управление отрицанием для любых двух данных из первых, вторых и третьих исходных упакованных данных. В качестве альтернативы, может присутствовать три набора из одного или нескольких битов каждый для управления отрицанием, которые могут соответствовать и обеспечивать управление отрицанием для всех трех данных из первых, вторых и третьих исходных упакованных данных.
В некоторых вариантах осуществления изобретения бит (биты) управления отрицанием могут, при желании, быть предоставлены непосредственным значением 542 для команды. Например, в одном конкретном примере варианта осуществления изобретения, при желании, может быть использован 8-битовое непосредственное значение, и один бит 536, который соответствует первым исходным упакованным данным, может быть предоставлен битом imm8[0], один бит 538, который соответствует вторым исходным упакованным данным, может быть предоставлен битом imm8[1], и один бит 540, который соответствует третьим исходным упакованным данным, может быть предоставлен битом imm8[2], В других вариантах осуществления изобретения могут быть использованы непосредственные значения другого размера, такие как, например, 2-битовые непосредственные значения, 4-битовые непосредственные значения, 6-битовые непосредственные значения, и так далее. В других вариантах осуществления изобретения, при желании, могут быть использованы другие биты таких непосредственных значений и/или их могут сопоставлять другим образом с исходными упакованными данными. В другом варианте, вместо использования непосредственного значения, бит (биты) управления отрицанием могут быть другим образом предоставлены командой (например, как часть кода операции, как другое поле команды и так далее).
1
N
1
N
1
N
Снова обращаясь к фиг. 5, в показанном примере, один бит управления отрицанием используют как соответствующий каждым исходным упакованным данным. Более того, бит установлен для определения отрицания или бит сброшен для определения отсутствия отрицания. В показанном примере, сброшен бит, соответствующий первым исходным упакованным данным, и сброшен бит, соответствующий третьим исходным упакованным данным. Соответственно, элементы данных первых (например, A-A) и третьих исходных упакованных данных (например, C-C) не будут браться с обратным знаком. В отличие от этого, установлен бит, соответствующий вторым исходным упакованным данным, и, таким образом, элементы данных вторых исходных упакованных данных (например, В-B) будут взяты с обратным знаком.
1
1
2
1
1
1
N
2
N
N
1
N
2
1
1
2
N
N
1
N
1
N
Вариант осуществления операции 534 может быть выполнен в ответ на один вариант осуществления команды и/или в результате одного варианта осуществления команды. Результирующие упакованные данные 518 могут быть выработаны (например, в блоке исполнения) и сохранены в целевую ячейку памяти в ответ на команду. Результирующие упакованные данные могут содержать множество элементов данных результата. В показанном примере варианта осуществления изобретения самый правый элемент данных результата с плавающей запятой может хранить первую округленную сумму с плавающей запятой (например, RND(C+RND(A+(-B))), а самый левый элемент данных результата с плавающей запятой может хранить N-ую округленную сумму с плавающей запятой (например, RND(C+RND(A+(-B))). Заметим, что элементы B-B данных взяты с обратным знаком на основе управления отрицанием, предоставленного вторым битом 538. Первая и N-ая округленные суммы с плавающей запятой могут представлять собой алгебраическую сумму другой соответствующей округленной суммы с плавающей запятой (например, RND(A+(-B)) или RND(A+(-B))) и соответствующего элемента данных с плавающей запятой из третьих исходных упакованных данных (например, С или C). Алгебраические суммы позволяют потенциально или, при желании, брать исходные элементы данных, в этом случае B-B, с обратным знаком.
Предпочтительно, чтобы способность команды определять управление отрицанием, при желании, могла быть использована для увеличения гибкости команды (например, позволяя вычитать одни или несколько источников). В качестве альтернативы, отрицание, при желании, может быть выполнено вне границ исполнения команды сложения трех упакованных источников с плавающей запятой (например, с помощью одной или нескольких других команд).
В таблице 1 предоставлено описание конкретного примера варианта осуществления команды, которая называется VADD3PD, сложения трех упакованных источников с плавающей запятой двойной точности, с маскированием и управлением отрицанием. В некоторых вариантах осуществления изобретения команда может обладать следующим форматом: VADD3PD zmml {k1}{z}, zmm2, zmm3/m512, imm8{er}. В некоторых вариантах осуществления изобретения команда может быть закодирована в EVEX как EVEX.U1.NDS.512. F3.0F3A.W1 68 /r/is4.
Ниже показан псевдокод для команды VADD3PD. DEST является первым операндом-источником и операндом-назначением. SRC2 является вторым операндом-источником. SRC3 является третьим операндом-источником. VL является вектором с длиной в битах, в этом случае 512-битовым вектором. KL является маской с длиной в битах, в этом случае 8-битовой маской. EVEX.b бит используют для встроенного управления округлением и запрещения исключений, k1 является маской операции с исходными данными. IMM8 является 8 битовым непосредственным значением. «i» и «j» являются счетчиками. В других вариантах осуществления изобретения регистры могут быть заменены памятью или другими ячейками запоминающего устройства.
В таблице 2 предоставлено описание конкретного примера варианта осуществления команды, которая называется VADD3PS, сложения трех упакованных источников с плавающей запятой одинарной точности с маскированием и управлением отрицанием.
Псевдокод для команды VADD3PS аналогичен приведенному выше псевдокоду для команды VADD3PD за исключением того, что вместо 64-битовых элементов данных используют 32-битовые элементы данных и используют в два раза более широкие маски операций. В других вариантах осуществления изобретения регистры могут быть заменены памятью или другими ячейками запоминающего устройства.
Эти примеры являются просто приведенными для иллюстрации примерами подходящих вариантов осуществления команд. Другие варианты осуществления изобретения могут использовать или более узкие, или более широкие операнды исходных упакованных данных и/или могут использовать другие размеры элементов данных с плавающей запятой. Другие варианты осуществления изобретения могут не использовать маскирования/наложения логического условия. Другие варианты осуществления изобретения могут не использовать управление отрицанием. Другие варианты осуществления изобретения могут по-другому определять или указывать операнд-источник и/или операнд-назначение.
На фиг. 6 показана схема одного варианта осуществления операции 644 сложения трех скалярных, возможно маскированных, возможно с управлением отрицанием, источников с плавающей запятой, которая может быть выполнена в ответ на вариант осуществления команды сложения трех скалярных, возможно маскированных, возможно с управлением отрицанием, источников с плавающей запятой. Скалярная операция, возможно с управлением отрицанием, с фиг. 6 обладает определенным сходством со скалярной операцией с фиг. 4, но содержит необязательное управление отрицанием, аналогичное упакованной операции с фиг. 5. Чтобы избежать неясности в описании, кратко будут описана фиг. 6, без повторения всех необязательных аналогичных или общих характеристик и подробностей, касающихся операции с фиг. 4-5. Тем не менее, следует понимать, что ранее описанные характеристики и подробности скалярной операции с фиг. 4 и аспекты необязательного управления отрицанием операции с фиг. 5 также могут быть, при желании, применены к операции с фиг. 6, если не указано или не ясно обратное.
Как со скалярной операцией с фиг. 4, команда может определить или другим образом указать первый операнд-источник 612, содержащий элемент А данных, второй операнд-источник 614, содержащий элемент В данных, и третий операнд-источник 616, содержащий элемент С данных. Операнды-источники и элементы данных могут обладать описанными выше признаками и вариантами (например, для фиг. 4).
В некоторых вариантах осуществления изобретения команда, при желании, также может определять или другим образом указывать маску 622 операции с исходными данными, хотя этого не требуется. Маска операции с исходными данными и элемент маски могут обладать описанными выше признаками и вариантами (например, для фиг. 4). В показанном примере элемент М маски не предполагает маскирования (например, М=1).
1
2
В некоторых вариантах осуществления изобретения команда, при желании, может содержать один или несколько битов управления отрицанием, хотя этого не требуется. Например, в показанном варианте осуществления изобретения, команда содержит первый бит 636, второй бит 638 и третий бит 640, хотя объем изобретения этим не ограничен. Эти биты, при желании, могут быть непосредственным значением 642, хотя объем изобретения этим не ограничен. В других вариантах осуществления изобретения, команда может содержать управление отрицанием с любыми описанными выше признаками, характеристиками и вариантами операции с фиг. 5, за исключением того, что управление отрицанием применяют к одиночным скалярным элементам данных в исходных операциях в этом скалярном варианте осуществления изобретения. В показанном примере варианта осуществления изобретения первый бит 636 установлен для управления отрицанием элемента А данных, второй бит 638 сброшен для отсутствия управления отрицанием элемента В данных, и третий бит 640 установлен для управления отрицанием элемента С данных. В результате, в этом примере результат можно сохранять как один элемент данных результата первой округленной суммы с плавающей запятой (например, RND((-C)+RND((-A)+В))). Следует понимать, что то, какие операнды-источники взяты с обратным знаком, является только примером для иллюстрации и в других вариантах осуществления изобретения операнды-источники могут быть взяты по-другому или вообще не взяты с обратным знаком.
В таблице 3 предоставлено описание конкретного примера варианта осуществления команды, которая называется VADD3SD, сложения трех скалярных источников с плавающей запятой двойной точности, с маскированием и управлением отрицанием. В некоторых вариантах осуществления изобретения команда может обладать следующим форматом
VADD3SD xmm1 {k1}{z}, xmm2, xmm3/m64, imm8{er}. В некоторых вариантах осуществления изобретения команда может быть закодирована в EVEX как EVEX.UENDS.128.F3.0F3A.W1 69 /r/is4.
Ниже показан псевдокод для команды VADD3SD. DEST является первым операндом-источником и операндом-назначением. SRC2 является вторым операндом-источником. SRC3 является третьим операндом-источником. EVEX.b бит используют для встроенного управления округлением и запрещения исключений, k1 является маской операции с исходными данными. IMM8 является 8 битовым непосредственным значением. В других вариантах осуществления изобретения регистры могут быть заменены памятью или другими ячейками запоминающего устройства.
В таблице 4 предоставлено описание конкретного примера варианта осуществления команды, которая называется VADD3SS, сложения трех скалярных источников с плавающей запятой одинарной точности, с маскированием и управлением отрицанием.
Псевдокод для команды VADD3SS аналогичен приведенному выше псевдокоду для команды VADD3SD за исключением того, что вместе 64-битовых элементов данных используют 32-битовые элементы данных. В других вариантах осуществления изобретения регистры могут быть заменены памятью или другими ячейками запоминающего устройства.
Эти примеры являются просто приведенными для иллюстрации примерами подходящих вариантов осуществления команд. Другие варианты осуществления изобретения могут использовать другие размеры элементов данных с плавающей запятой. Другие варианты осуществления изобретения могут не использовать маскирования/наложения логического условия. Другие варианты осуществления изобретения могут не использовать управление отрицанием. Другие варианты осуществления изобретения могут по-другому определять или указывать операнд-источник и/или операнд-назначение.
На фиг. 7 показана схема одного варианта осуществления суммирующего устройства 707 для трех источников с плавающей запятой, выполненного для сложения трех операндов-источников с плавающей запятой. В этом варианте осуществления изобретения суммирующее устройство для трех источников с плавающей запятой выполнено для одновременного приема и сложения первого операнда-источника 712 с плавающей запятой, второго операнда-источника 714 с плавающей запятой и третьего операнда-источника 716 с плавающей запятой и выработки потенциально округленного результата 750. Суммирующее устройство содержит входы для одновременного приема трех операндов-источников и способно складывать их, в общем, в ходе операции одновременного сложения. В таких вариантах осуществления изобретения, в целом, не нужна и не выполняется операция промежуточного округления и нормализации. Тем не менее, один потенциальный недостаток таких суммирующих устройств для трех источников с плавающей запятой заключается в том, что часто они имеют склонность обладать сравнительно более сложной конструкцией, часто обладают большими размерами, часто потребляют сравнительно большее количество электроэнергии и часто являются более специализированными устройствами.
Многие процессоры уже обладают или легко могут обладать одним или несколькими суммирующими устройствами для двух источников с плавающей запятой, каждое из которых способно одновременно складывать два операнда-источника с плавающей запятой, но которые не способны одновременно складывать три операнда-источника с плавающей запятой. Примерами таких суммирующих устройств являются обычные суммирующие устройства с плавающей запятой, объединенные устройства умножения-сложения и подобные. В некоторых вариантах осуществления изобретения такие существующие суммирующие устройства для источников с плавающей запятой могут быть использованы для реализации описанных в настоящем документе команд/операций сложения трех источников с плавающей запятой с целью исключения необходимости содержать специальное суммирующее устройство для трех источников с плавающей запятой, такое как показано на фиг.7.
На фиг. 8 показана схема одного варианта осуществления двух последовательно связанных суммирующих устройств 808А, 808В для двух источников с плавающей запятой с целью сложения трех операндов-источников с плавающей запятой. В качестве примера, суммирующие устройства могут содержать суммирующие устройства с плавающей запятой, объединенные устройства умножения-сложения с плавающей запятой или подобные. Первое суммирующее устройство 808А для двух операндов-источников с плавающей запятой содержит входы, связанные с целью приема первого операнда 812 с плавающей запятой и второго операнда 814 с плавающей запятой. Первое суммирующее устройство для двух операндов-источников с плавающей запятой также содержит вход, связанный с целью приема сигнала 802 управления, соответствующего команде сложения трех источников с плавающей запятой и/или полученного из этой команды. Например, сигнал управления может быть принят из резервирующей станции (не показана). В некоторых вариантах осуществления изобретения сигнал управления или, при желании, его упрощенная версия, также могут быть, при желании, предоставлены на необязательный буфер 854. Первое суммирующее устройство для двух операндов-источников с плавающей запятой способно складывать первый и второй операнды с плавающей запятой для получения первой округленной суммы 852, содержащей первый и второй операнды. Первую округленную сумму округляют в подходящий момент в соответствии с режимом округления с плавающей запятой. Первое суммирующее устройство для двух операндов-источников с плавающей запятой содержит выход для предоставления первой округленной суммы. Второе суммирующее устройство 808В для двух источников с плавающей запятой содержит вход, связанный с выходом первого суммирующего устройства для приема первой округленной суммы. Второе суммирующее устройство для двух источников с плавающей запятой также содержит вход, связанный с целью приема третьего операнда 816 с плавающей запятой. Второе суммирующее устройство для двух источников с плавающей запятой также содержит вход, связанный с выходом буфера 854 для приема сигнала 802 управления или его упрощенной версии. Сигнал управления может храниться в буфере в течение некоторого периода времени, когда первую округленную сумму вырабатывают в первом суммирующем устройстве, и далее сигнал управления может быть предоставлен на второе суммирующее устройство вместе с первой округленной суммой. Второе суммирующее устройство для двух операндов-источников с плавающей запятой способно складывать третий операнд с плавающей запятой и первую округленную сумму для получения второй округленной суммы 818, содержащей все три операнда с плавающей запятой. Второе суммирующее устройство для двух операндов-источников с плавающей запятой содержит выход для предоставления второй округленной суммы. Предпочтительно, что в этом варианте осуществления изобретения три операнда-источника с плавающей запятой могут быть сложены без необходимости использования суммирующего устройства для трех источников с плавающей запятой, что может помочь уменьшить сложность конструкции, размер и/или потребление электроэнергии.
На фиг. 9 показана схема одного варианта осуществления суммирующего устройства 908 для двух источников с плавающей запятой с линией 956 повторения, которая связывает выход суммирующего устройства с входом суммирующего устройства. В качестве примера, суммирующее устройство может содержать суммирующее устройство с плавающей запятой, объединенное устройство умножения-сложения с плавающей запятой или подобное. Суммирующее устройство для двух операндов-источников с плавающей запятой содержит первый и второй входы, связанные с целью приема первого операнда 912 с плавающей запятой и второго операнда 914 с плавающей запятой. Суммирующее устройство для двух операндов-источников с плавающей запятой также содержит вход, связанный с целью приема сигнала 902 управления, соответствующего команде сложения трех источников с плавающей запятой и/или полученного из этой команды. Например, сигнал управления может быть принят из резервирующей станции (не показана). Суммирующее устройство для двух операндов-источников с плавающей запятой способно складывать первый и второй операнды с плавающей запятой для получения первой округленной суммы 952, содержащей первый и второй операнды-источники. Первую округленную сумму округляют в подходящий момент в соответствии с режимом округления с плавающей запятой. Суммирующее устройство для двух операндов-источников с плавающей запятой содержит выход, связанный с линией 956 повторения. Линия повторения может связывать или передавать первую округленную сумму из выхода суммирующего устройства на вход суммирующего устройства. Линия повторения может содержать схему, например, линии, провода, соединения, проводящие дорожки или подобное, для направления первой округленной суммы из выхода суммирующего устройства назад на вход суммирующего устройства. Суммирующее устройство для двух источников с плавающей запятой также содержит вход, связанный с целью приема третьего операнда 916 с плавающей запятой. Суммирующее устройство для двух источников с плавающей запятой также содержит вход, связанный с выходом буфера 954 для приема сигнала 902 управления. Сигнал управления может храниться в буфере в течение периода времени, когда первую округленную сумму генерируют в суммирующем устройстве, и далее сигнал управления может быть предоставлен на суммирующее устройство вместе с первой округленной суммой и третьим операндом-источником. Суммирующее устройство для двух операндов-источников с плавающей запятой способно складывать третий операнд с плавающей запятой и первую округленную сумму для получения второй округленной суммы 918, содержащей все три операнда с плавающей запятой. Заметим, что одно и то же суммирующее устройство для двух источников с плавающей запятой используют для обеих последовательных операций сложения данных с плавающей запятой. Суммирующее устройство для двух операндов-источников с плавающей запятой содержит выход для предоставления второй округленной суммы 918. Предпочтительно, что в этом варианте осуществления изобретения три операнда-источника с плавающей запятой могут быть сложены без необходимости использования суммирующего устройства для трех источников с плавающей запятой, что может помочь уменьшить сложность конструкции, размер и/или потребление электроэнергии.
На фиг. 10 показана схема одного варианта осуществления подходящего формата для команды 1002 сложения трех источников с плавающей запятой. Формат команды содержит код операции 1060. Код операции может представлять собой множество битов или одно или несколько полей, которые выполнены для идентификации подлежащей выполнению команды и/или операции (например, сложение трех источников с плавающей запятой).
Формат команды также, при желании, содержит спецификатор 1061 первого источника для определения первого операнда-источника, спецификатор 1062 второго источника для определения второго операнда-источника, спецификатор 1063 третьего источника для определения третьего операнда-источника и спецификатор 1064 назначения для определения операнда-назначения, где может быть сохранен результат. В качестве примера, каждый из этих спецификаторов может содержать биты или одно или несколько полей для явного определения адреса регистра, ячейки памяти или другой ячейки, запоминающего устройства для соответствующего операнда. В качестве альтернативы, в другом варианте осуществления изобретения один или несколько спецификаторов, при желании, могут быть неявными для команды, а не быть явно определенными. Например, в некоторых вариантах осуществления изобретения вместо спецификатора назначения, некоторая ячейка запоминающего устройства, используемая для одного из операндов-источников, может, при желании, быть неявно использована как операнд-назначения. В качестве примера, регистр источника/назначения может в начале содержать исходные данные, а после исходные данные могут быть переписаны результатом. В качестве альтернативы, в другом варианте осуществления изобретения любой из одного или нескольких явных спецификаторов может быть заменен неявным операндом.
В некоторых вариантах осуществления изобретения формат команды может содержать необязательный спецификатор 1065 маски операции для явного определения маски операции (например, регистра маски). В качестве альтернативы, может быть неявно указана маска операции с упакованными данными. В некоторых вариантах осуществления изобретения формат команды также может содержать необязательный спецификатор 1066 типа операции маскирования для определения типа операции маскирования. В качестве примера, спецификатора типа операции маскирования может содержать один бит для определения того, должно осуществляться маскирование поглощением или маскирование нулями. В качестве альтернативы, тип операции маскирования может быть указан неявно (например, с помощью кода операции) или определен другим образом (например, в регистре управления). В других вариантах осуществления изобретения могут не осуществлять маскирование и могут не нуждаться в спецификаторе маскирования или спецификатора типа маскирования.
В некоторых вариантах осуществления изобретения формат команды может содержать необязательный спецификатор 1067 режима округления с плавающей запятой для определения режима округления с плавающей запятой, который используют в описанных в настоящем документе операциях. В некоторых вариантах осуществления изобретения режим округления с плавающей запятой может переопределять режим в регистре управления плавающей запятой. Подходят любые упомянутые в настоящем документе различные режимы округления или другие, известные в технике. Спецификатор режима округления с плавающей запятой является необязательным и его наличие не требуется. В некоторых вариантах осуществления изобретения спецификатор режима округления может подразумевать запрещение всех исключений для плавающей запятой, хотя этого не требуется.
В некоторых вариантах осуществления изобретения формат команды может содержать необязательный спецификатор 1068 управления отрицанием для определения управления отрицанием. В некоторых вариантах осуществления изобретения спецификатор управления отрицанием может содержать биты непосредственного значения. В качестве альтернативы, могут быть использованы биты других участков кодирования команды. Спецификатор управления отрицанием является необязательным и его наличие не требуется.
Следует понимать, что это является только одним иллюстративным примером. Альтернативные варианты осуществления изобретения могут содержать подмножество спецификаторов, могут содержать дополнительные спецификаторы или поля, могут перекрывать определенные спецификаторы или поля и так далее. Кроме того, показанный порядок/расположение полей является примером и не является обязательным, а поля могут быть расположены по-другому, поля могут быть перекрыты, поля могут не содержать прилегающие последовательности битов, а могут содержать не прилегающие или отдельные биты и так далее. В некоторых вариантах осуществления изобретения формат команды может обладать VEX или EVEX кодированием или форматом команды, который может обладать признаками, описанными в другом месте настоящего документа, хотя объем изобретения этим не ограничен. В некоторых вариантах осуществления изобретения, в EVEX кодировании, третий операнд-источник может быть закодирован в reg_field, первый операнд-источник может быть закодирован в VEX.vvvv, а второй операнд-источник может быть закодирован с использованием одного участка из восьмибитового непосредственного значения и rm_field, хотя объем изобретения этим не ограничен. В случае EVEX кодирования статичное управление режимом округления и подразумеваемое запрещение всех исключений может быть разрешено при кодировании команды путем установки бита EVEX.b равным 1 для форм команд регистр-регистр.
На фиг. 11 показана схема одного варианта осуществления подходящего набора 1110 регистров упакованных данных. Регистры упакованных данных содержат тридцать два 512-битовых регистра упакованных данных, обозначенных от ZMM0 до ZMM31. В показанном варианте осуществления изобретения 256-битовые младшие разряды младших шестнадцати регистров, а именно ZMM0-ZMM15, сопоставлены или наложены на соответствующие 256-битовые регистры упакованных данных, которые обозначены YMM0-YMM15, хотя этого не требуется. Аналогично, в показанном варианте осуществления изобретения 128-битовые младшие разряды регистров YMM0-YMM15 сопоставлены или наложены на соответствующие 128-битовые регистры упакованных данных, которые обозначены ХММ0-ХММ15, хотя этого не требуется. 512-битовые регистры ZMM0-ZMM31 выполнены для хранения 512-битовых упакованных данных, 256-битовых упакованных данных или 128-битовых упакованных данных. 256-битовые регистры YMM0-YMM31 выполнены для хранения 256-битовых упакованных данных или 128 битовых упакованных данных. 128-битовые регистры ХММ0-ХММ31 выполнены для хранения 128-битовых упакованных данных. В некоторых вариантах осуществления изобретения каждый из регистров может быть использован для хранения или упакованных данных с плавающей запятой или упакованных целых данных. Поддерживаются разные размеры элементов данных, в том числе, по меньшей мере, 8-битовые байтовые данные, данные 16-битовых слов, 32-битовые двойные слова, 32-битовые данные с плавающей запятой одинарной точности, 64-битовые четверные слова, и 64-битовые данные с плавающей запятой двойной точности. В альтернативных вариантах осуществления изобретения могут быть использованы другие количества регистров и/или другие размеры регистров. В еще одних вариантах осуществления изобретения регистры могут использовать или могут не использовать сопоставление больших регистров или меньших регистров и/или их могут использовать или могут не использовать для хранения данных с плавающей запятой.
На фиг. 12 показана таблица 1270, иллюстрирующая то, что количество битов маски операции с упакованными данными зависит от ширины упакованных данных и ширины элемента данных. Известны упакованные данные с шириной 128 битов, 256 битов и 512 битов, хотя также возможны другие значения ширины. Показаны упакованные данные форматов с плавающей запятой с шириной 16 битов половинной точности, 32 бита одинарной точности и 64 битов двойной точности, хотя также возможны другие значения ширины. В качестве одного примера, когда ширина упакованных данных равна 128 битам, 4 бита (например, 4 бита младших разрядов регистра) могут быть использованы для маскирования, когда ширина элемента упакованных данных равна 32 битам.
На фиг. 13 показана схема одного варианта осуществления подходящего набора регистров 1320 масок операций. Каждый из регистров масок операций с упакованными данными может быть использован для хранения маски операции с упакованными данными. В показанном варианте осуществления изобретения набор содержит восемь регистров, обозначенных от k0 до k7. Альтернативные варианты осуществления изобретения могут содержать или меньшее восьми количество регистров (например, два, четыре, шесть и так далее) или большее восьми количество регистров (например, шестнадцать, тридцать два и так далее). В показанном варианте осуществления изобретения каждый из регистров содержит 64 бита. В альтернативных вариантах осуществления изобретения ширина регистров может быть или больше 64 битов (например, 80 битов, 128 битов и так далее) или меньше 64 битов (например, 8 битов, 16 битов, 32 бита и так далее). Регистры могут быть реализованы различным образом с использованием хорошо известных технологий, и они не ограничены каким-либо конкретным известным типом схемы. Примеры подходящих регистров содержат, помимо прочего, специальные физические регистры, динамически выделяемые физические регистры с использованием переименования регистров и их комбинации.
В некоторых вариантах осуществления изобретения регистры 1320 масок операций с упакованными данными могут быть отдельным, специальным набором архитектурных регистров. В некоторых вариантах осуществления изобретения команды могут кодировать или определять регистры масок операций с упакованными данными в различных битах или одном или нескольких полях из формата команды, которые отличаются от используемых для кодирования или определения других типов регистров (например, регистров упакованных данных). В качестве примера, команда может использовать три бита (например, 3 битовое поле) для кодирования или определения любого одного из восьми регистров k0-k7 масок операций с упакованными данными. В альтернативных вариантах осуществления изобретения может быть использовано или меньшее или большее количество битов, соответственно, когда присутствует меньшее или большее количество регистров масок операций с упакованными данными. В одной конкретной реализации, только к регистрам k1-k7 (не к k0) масок операций с упакованными данными можно обратиться как к операнду наложения логического условия для наложения логического условия на операцию с маскированными упакованными данными. Регистр k0 может быть использован как обычный источник или назначение, но может не кодироваться как операнд наложения логического условия (например, если k0 определен, он обладает кодированием «нет маски»). Тем не менее, это не является обязательным и не требуется.
Набор команд содержит один или несколько форматов команд. Заданный формат команды определяет различные поля (количество битов, расположение битов) для определения, помимо прочего, подлежащей выполнению операции (код операции) и операнда (операндов), над которыми выполняют эту операцию. Некоторые форматы команд дополнительно разбиты с помощью определения шаблонов команд (или подформатов). Например, шаблоны команды заданного формата команды могут быть определены так, что содержат разные подмножества полей формата команды (содержащиеся поля обычно расположены в том же порядке, но, по меньшей мере, некоторые обладают другими позициями битов, так как присутствует меньшее количество полей) и/или определены так, чтобы содержать заданное поле, интерпретируемое по-другому. Таким образом, каждую команду ISA выражают с использованием заданного формата команды (и, если определено, в заданном одном из шаблонов команды для этого формата команды) и каждая команда ISA содержит поля для определения операции и операндов. Например, типовая команда ADD обладает конкретным кодом операции и форматом команды, который содержит поле кода операции для определения этого кода операции и поля операндов для выбора операндов (источник 1 /назначение и источник 2); и появление этой команды ADD в потоке команд будет обладать конкретным содержимым в полях операндов, в которых выбирают конкретные операнды. Набор SIMD расширений, называемый Усовершенствованными векторными расширениями (AVX) (AVX1 и AVX2) и использующий схему кодирования Векторные расширения (VEX), был выпущены и/или опубликован (например, смотри Руководство для разработчиков программного обеспечения архитектур Intel 64 и IA-32, октябрь 2011; и Материалы по программированию усовершенствованных векторных расширений Intel, июнь 2011).
Примеры форматов команд
Описанные в настоящем документе варианты осуществления команды (команд) могут быть реализованы в разных форматах. Кроме того, ниже приведены подробные примеры систем, архитектур и конвейеров. Варианты осуществления команды (команд) могут быть исполнены на таких системах, архитектурах и конвейерах, но изобретение не ограничено этим подробным описанием.
Общий формат векторно-ориентированных команд
Формат векторно-ориентированных команд является форматом команды, который подходит для векторных команд (например, присутствуют определенные поля, характерные для векторных операций). Хотя описаны варианты осуществления, в которых с помощью формата векторно-ориентированных команд поддерживаются как векторные, так и скалярные операции, в альтернативных вариантах осуществления используют только векторные операции в формате векторно-ориентированных команд.
На фиг. 14А-14В показаны схемы, иллюстрирующие общий формат векторно-ориентированных команд и его шаблоны команд, в соответствии с вариантами осуществления изобретения. На фиг. 11А показана схема, иллюстрирующая общий формат векторно-ориентированных команд и шаблоны класса А команд, в соответствии с вариантами осуществления изобретения; а на фиг. 14В показана схема, иллюстрирующая общий формат векторно-ориентированных команд и шаблоны класса В команд, в соответствии с вариантами осуществления изобретения. Более конкретно, показан общий формат 1400 векторно-ориентированных команд, для которого определены шаблоны класса А команд и шаблоны класса В команд, которые все содержат шаблоны 1405 команд без доступа к памяти и шаблоны 1420 команд с доступом к памяти. Термин «общий» в случае формата векторно-ориентированных команд касается формата команд, не привязанного к какому-либо конкретному набору команд.
Будут описаны варианты осуществления изобретения, в которых формат векторно-ориентированных команд поддерживает следующее: векторный операнд длиной (или размером) 64 байта с элементами данных шириной (или размером) 32 бита (4 байта) или 64 бита (8 байт) (и, таким образом, 64 байтовый вектор состоит или из 16 элементов размера двойного слова или, в качестве альтернативы, 8 элементов размера четверного слова); векторный операнд длиной (или размером) 64 байта с элементами данных шириной (или размером) 16 битов (2 байта) или 8 битов (1 байт); векторный операнд длиной (или размером) 32 байта с элементами данных шириной (или размером) 32 бита (4 байта), 64 бита (8 байт), 16 битов (2 байта) или 8 битов (1 байт); и векторный операнд длиной (или размером) 16 байт с элементами данных шириной (или размером) 32 бита (4 байта), 64 бита (8 байт), 16 битов (2 байта) или 8 битов (1 байт); альтернативные варианты осуществления могут поддерживать векторные операнды больших, меньших и/или других размеров (например, 256 байтовые векторные операнды) с элементами данных большей, меньшей или другой ширины (например, элемент данных с шириной 128 бит (16 байт)).
Шаблоны класса А команд на фиг. 14А содержат: 1) в шаблонах 1405 команд без доступа к памяти показан шаблон 1410 команды операции типа полное управление округлением, без доступа к памяти, и шаблон 1415 команды операции типа преобразование данных, без доступа к памяти; и 2) в шаблонах 1420 команд с доступом к памяти показан шаблон команды 1425 временные, с доступом к памяти, и шаблон команды 1430 не временные, с доступом к памяти. Шаблоны класса В команд на фиг. 14В содержат: 1) в шаблонах 1405 команд без доступа к памяти показан шаблон 1412 команды операции типа частичное управление округлением, управление маской записи, без доступа к памяти, и шаблон 1417 команды операции типа вертикальный размер, управление маской записи, без доступа к памяти; и 2) в шаблонах 1420 команд с доступом к памяти показан шаблон 1427 команды управления маской записи, с доступом к памяти.
Общий формат 1400 векторно-ориентированных команд содержит следующие поля, перечисленные ниже в порядке, показанном на фиг. 14А-14В.
Поле 1440 формата - конкретное значение (значение идентификатора формата команды) в этом поле уникальным образом идентифицирует формат векторно-ориентированных команд и, таким образом, появление команд формата векторно-ориентированных команд в потоках команд. Фактически, это поле является необязательным в том смысле, что оно не нужно для набора команд, которые имеют только общий формат векторно-ориентированных команд.
Поле 1442 базовой операции - его содержимое показывает разные базовые операции.
Поле 1444 индекса регистра - его содержимое, напрямую или с помощью выработки адреса определяет положения операндов-источников и операнда-назначения, находятся ли они в регистрах или в памяти. Это подразумевает значительное количество битов для выбора N регистров из файла регистров размера P×Q (например, 32×512, 16×128, 32×1024, 64×1024). Хотя в одном варианте осуществления изобретения N может доходить до трех регистров источников и одного регистра назначения, альтернативные варианты осуществления изобретения могут поддерживать большее или меньше количество регистров источников и регистров назначения (например, могут поддерживать до двух источников, где один из источников также действует как назначение, могут поддерживать до трех источников, где один из источников также действует как назначение, могут поддерживать до двух источников и одно назначение).
Поле 1446 модификатора - его содержимое показывает появления команд в общем формате векторных команд, которые определяют доступ к памяти, и команд, которые не определяют доступа к памяти; то есть различает шаблоны 1405 команд без доступа к памяти и шаблоны 1420 команд с доступом к памяти. Операции доступа к памяти считывают и/или записывают в иерархию памяти (в некоторых случаях, определяя адреса источника и/или назначения с использованием значений в регистрах), а операции без доступа к памяти не делают этого (например, источник и назначения являются регистрами). Хотя в одном варианте осуществления изобретения это поле также выбирает из трех разных путей для выполнения вычисления адреса памяти, альтернативные варианты осуществления изобретения могут поддерживать большее, меньшее или другое количество путей выполнения вычисления адреса памяти.
Поле 1450 операции приращения - его содержание показывает, какую из множества различных операций выполнить в дополнение к базовой операции. Это поле является зависимым от контекста. В одном варианте осуществления изобретения это поле разделено на поле 1468 класса, поле 1452 альфа и поле 1454 бета. Поле 1450 операции приращения позволяет выполнять общие группы операций за одну команду вместо 2, 3 или 4 команд.
масштаб
Поле 1460 масштабирования - его содержимое позволяет масштабировать содержимое поля индекса для выработки адреса памяти (например, для выработки адреса, который использует 2 * индекс + основание).
масштаб
Поле 1462А смещения - его содержимое используют как часть выработки адреса памяти (например, для выработки адреса, который использует 2 * индекс + основание + смещение).
масштаб
Поле 1462В множителя смещения (заметим, что наложение поля 1462А смещения непосредственно на поле 1462В множителя смещения указывает, что используется или одно или другое) - его содержимое используют как часть выработки адреса; оно определяет множитель смещения, который подлежит масштабированию размером (N) выборки памяти, где N является количеством байт в выборке памяти (например, для выработки адреса, который использует 2 * индекс + основание + масштабированное смещение). Избыточные биты младших разрядов игнорируют и, следовательно, содержимое поля множителя смещения умножают на общий размер (N) операндов памяти с целью выработки окончательного смещения для использования при вычислении результирующего адреса. Значение N определяют в аппаратном обеспечении процессора во время выполнения на основе поля 1474 полного кода операции (описано ниже в настоящем документе) и поля 1454С манипуляции данных. Поле 1462А смещения и поле 1462В множителя смещения являются необязательными в том смысле, что их не используют для шаблонов 1405 команд без доступа к памяти и/или в различных вариантах осуществления изобретения могут реализовывать только одно поле или ни одного поля из указанных двух.
Поле 1464 ширины элемента данных - его содержимое показывает, какую использовать ширину из нескольких значений ширины элемента данных (в некоторых вариантах осуществления изобретения для всех команд; в других вариантах осуществления изобретения только для некоторых команд). Это поле является необязательным в том смысле, что оно не нужно, если поддерживают только одну ширину элементов данных и/или поддерживают значения ширины элемента данных с использованием некоторых аспектов кодов операции.
Поле 1470 маски записи - его содержимое управляет, для каждой позиции элемента данных, отражает ли позиция элемента данных в векторном операнде-назначении результат базовой операции и операции приращения. Шаблоны класса А команд поддерживают маскирование записи с поглощением, а шаблоны класса В команд поддерживают как маскирование записи с поглощением, так и маскирование записи с обнулением. При поглощении, векторные маски позволяют защищать любой набор элементов в назначении от обновлений во время исполнения любой операции (определенной базовой операцией и операцией приращения); в другом варианте осуществления изобретения сохраняется старое значение каждого элемента назначения, когда соответствующий бит маски равен 0. В отличие от этого, когда векторные маски для обнуления позволяют обнулять любой набор элементов в назначении во время исполнения любой операции (определенной базовой операцией и операцией приращения); в одном варианте осуществления изобретения элемент назначения устанавливают равным 0, когда соответствующий бит маски равен 0. Подмножество этих функциональных возможностей представляет собой способность управлять длиной вектора выполняемой операции (то есть, участок модифицируемых элементов, от первого до последнего); тем не менее не обязательно, чтобы модифицируемые элементы были расположены последовательно. Таким образом, поле 1470 маски записи позволяет осуществлять частично векторные операции, в том числе загрузки, сохранения, арифметические операции, логические операции и так далее. Хотя описаны варианты осуществления изобретения, в которых содержание поля 1470 маски записи выбирает один из некоторого количества регистров маски записи, который содержит подлежащую использованию маску записи (и, таким образом, содержание поля 1470 маски записи косвенно идентифицирует подлежащее выполнению маскирование), альтернативные варианты осуществления изобретения дополнительно или, в качестве альтернативы, позволяют содержимому поля 1470 маски записи определять подлежащее выполнению маскирование.
Поле 1472 непосредственного значения - его содержимое позволяет определить непосредственное значение. Это поле является необязательным в том смысле, что оно не присутствует в реализации общего векторно-ориентированного формата, который не поддерживает непосредственное значение, и не присутствует в командах, в которых не используют непосредственное значение.
Поле 1468 класса - его содержимое показывает разные классы команд. Как показано на фиг. 14А-В, содержимое этого поля выбирает между командами класса А и командами класса В. На фиг. 14А-В, квадраты со скругленными углами используют для указания того, что в поле присутствует конкретное значение (например, класс А 1468A и класс В 1468В для поля 1468 класса соответственно на фиг. 14А-В).
Шаблоны класса А команд
В случае шаблонов класса А команд 1405 без доступа к памяти поле 1452 альфа понимают как поле 1452А RS, содержимое которое показывает, операция приращения какого из различных типов будет выполняться (например, округление 1452A.1 и преобразование данных 1452А.2 соответственно определены для шаблона 1410 операции типа округления, без доступа к памяти и шаблона 1415 команды типа преобразование данных, без доступа к памяти), а поле 1454 бета показывает, какие операции определенного типа должны выполняться. В шаблонах 1405 команд без доступа к памяти отсутствуют поле 1460 масштабирования, поле 1462А смещения и поле 1462В множителя смещения.
Шаблоны команд без доступа к памяти - Операция типа полное управление округлением
В шаблоне 1410 команды операции типа полное управление округлением, без доступа к памяти, поле 1454 бета понимают как поле 1454А управления округлением, содержимое которого обеспечивает статичное округление. Хотя в описанных вариантах осуществления изобретения поле 1454А управления округлением содержит поле 1456 запрещения (SAE) всех исключений для плавающей запятой и поле 1458 управление операцией округления, альтернативные варианты осуществления изобретения могут поддерживать обе эти концепции в одном поле или могут поддерживать одну или другую из этих концепций/полей (например, могут иметь только поле 1458 управления операцией округления).
Поле 1456 SAE - его содержимое показывает, сообщать или нет о событиях, связанных с исключениями; когда содержимое поля 1456 SAE указывает на запрет, рассматриваемая команда не сообщает ни о каких флагах, связанных с исключениями для плавающей запятой, и не вызывает никаких обработчиков исключений для плавающей запятой.
Поле 1458 управления операцией округления - его содержимое показывает, какую операцию из группы операций округления осуществлять (например, округление вверх, округление вниз, округление к нулю, округление для ближайшего). Таким образом, поле 1458 управления операцией округления позволяет изменять режим округления для каждой команды. В одном варианте осуществления изобретения, когда процессор содержит регистр управления для определения режимов округления, содержимое поля 1458 управления операцией округления преобладает над значением регистра.
Шаблоны команд без доступа к памяти - Операция типа преобразование данных
В шаблоне 1415 команды операции типа преобразование данных, без доступа к памяти, поле 1454 бета рассматривают как поле 1454В преобразования данных, содержимое которого показывает, какое преобразование данных из некоторого количества преобразований данных должно осуществляться (например, отсутствие преобразования данных, выборка, широковещательная передача).
В случае шаблона 1420 класса А команд с доступом к памяти, поле 1452 альфа рассматривают как поле 1452В рекомендации к освобождению, содержимое которого показывает, какая рекомендация из рекомендаций по освобождению должна быть использована (на фиг. 14А, временные 1452В.1 и не временные 1452В.2 определены соответственно для шаблона 1425 команды временные, с доступом к памяти, и шаблона 1430 команды не временные, с доступом к памяти), и поле 1454 бета рассматривают как поле 1454С манипуляции данных, содержимое которого показывает, какая из операций (также называются примитивами) манипуляции данных подлежит выполнению (например, без манипуляции; широковещательная передача; преобразования вверх источника; и преобразование вниз назначения). В шаблонах 1420 команд с доступом к памяти присутствуют поле 1460 масштабирования и, необязательно, поле 1462А смещения и поле 1462В множителя смещения.
Векторные команды работы с памятью осуществляют загрузки векторов и сохранения векторов в память, с поддержкой преобразования. Аналогично обычным векторным командам, векторные команды работы с памятью поэлементно перемещают данные из память/в память, при этом то, какие элементы будут фактически преобразованы, диктуется содержимым вектора маски, который выбирают как маску записи.
Шаблоны команд с доступом к памяти - Временные
Временные данные представляют собой данные, которые с большой вероятностью будут повторно использованы настолько скоро, что выгодно кэширование. Это, тем не менее, является рекомендацией, и разные процессоры могут реализовывать ее различным образом, в том числе полностью игнорируя эту рекомендацию.
Шаблоны команд с доступом к памяти - Не временные
Не временные данные представляют собой данные, которые с большой вероятностью не будут повторно использованы настолько скоро, чтобы было выгодно кэширование в кэш-памяти 1-го уровня, и они должны быть приоритетны с точки зрения освобождения. Это, тем не менее, является рекомендацией, и разные процессоры могут реализовывать ее различным образом, в том числе полностью игнорируя эту рекомендацию.
Шаблоны класса В команд
В случае шаблонов класса В команд, поле 1452 альфа рассматривают как поле 1452С (Z) управления маской записи, содержимое которого показывает маскирование при записи, управляемое полем 1470 маски записи, должно быть маскированием поглощения или маскированием нулями.
В случае шаблонов 1405 класса В команд без доступа к памяти часть поля 1454 бета понимают как поле 1457А RL, содержимое которого показывает, какой будет применяться тип из различных типов операций приращения (например, округление 1457А.1 и длина вектора 1457А.2 (VSIZE) соответственно определены как шаблон 1412 операции типа частичное управление округлением, управление маской записи, без доступа к памяти, и шаблон 1417 команды операции типа VSIZE, управление маской записи, без доступа к памяти), а оставшаяся часть поля 1454 бета показывает, какие операции определенного типа должны выполняться. В шаблонах 1405 команд без доступа к памяти отсутствуют поле 1460 масштабирования, поле 1462А смещения и поле 1462В множителя смещения.
В шаблоне 1410 команды операции типа частичное управление округлением, управление маской записи, без доступа к памяти, оставшаяся часть поля 1454 бета рассматривается как поле 1459А операции округления и отключено сообщение о событиях, связанных с исключениями, (рассматриваемая команда не сообщает ни о каких флагах, связанных с исключениями для плавающей запятой, и не вызывает никаких обработчиков исключений для плавающей запятой).
Поле 1459А управления операцией округления - аналогично полю 1458 управления операцией округления, его содержимое показывает, какую операцию из группы операций округления осуществлять (например, округление вверх, округление вниз, округление к нулю, округление для ближайшего). Таким образом, поле 1459А управления операцией округления позволяет изменять режим округления для каждой команды. В одном варианте осуществления изобретения, когда процессор содержит регистр управления для определения режимов округления, содержимое поля 1458 управления операцией округления преобладает над значением регистра.
В шаблоне 1417 команды операции типа VSIZE, управление маской записи, без доступа к памяти, оставшаяся часть поля 1454 бета рассматривается как поле 1459В длины вектора, содержимое которого показывает, какую длину из нескольких длин векторных данных должны использовать (например, 128, 256 или 512 байт).
В случае шаблона класса В команд 1420 с доступом к памяти, часть поля 1454 бета рассматривают как поле 1457В широковещательной передачи, содержимое которого показывает, будет ли выполняться операция манипуляции с данными типа широковещательной передачи, а оставшуюся часть поля 1454 бета рассматривают как поле 1459В длины вектора. В шаблонах 1420 команд с доступом к памяти присутствуют поле 1460 масштабирования и, необязательно, поле 1462А смещения и поле 1462В множителя смещения.
Что касается общего формата 1400 векторно-ориентированных команд, показано поле 1474 полного кода операции, содержащее поле 1440 формата, поле 1442 базовой операции и поле 1464 ширины элемента данных. Хотя показан один вариант осуществления изобретения, в котором поле 1474 полного кода операции содержит все эти поля, в вариантах осуществления изобретения, которые не поддерживают все указанные поля, поле 1474 полного кода операции содержит меньшее количество полей по сравнению со всеми этими полями. Поле 1474 полного кода операции предоставляет код операции.
Поле 1450 операции приращения, поле 1464 ширины элемента данных и поле 1470 маски записи позволяют определять эти признаки на каждую команду в общем формате векторно-ориентированных команд.
Комбинация поля маски записи и поля ширины элемента данных создает типизированные команды, в которых они позволяют применять маску на основе различных значений ширины элемента данных.
Различные шаблоны команд из класса А и класса В полезны в различных ситуациях. В некоторых вариантах осуществления изобретения различные процессоры или различные ядра в процессоре могут поддерживать только класс А, только класс В или оба класса. Например, высокопроизводительное ядро общего назначения с внеочередным исполнением команд, предназначенное для вычислений общего назначения, может поддерживать только класс В, ядро, предназначенное, в основном, для графики и/или научных (производительных) вычислений, может поддерживать только класс А, а ядро, предназначенное как обеих целей, может поддерживать оба класса (конечно, ядро, содержащее некоторую смесь шаблонов и команд из обоих классов, но не все шаблоны и команды из обоих классов, находится в области действия настоящего изобретения). Также один процессор может содержать множество ядер, каждое из которых поддерживает один и тот же класс, или в котором разные ядра поддерживают разные классы. Например, в процессоре с отдельными ядрами графики и ядрами общего назначения, одно из графических ядер, предназначенных, в основном, для графики и/или для научных вычислений, может поддерживать только класс А, а одно или несколько ядер общего назначения могут быть высокопроизводительными ядрами общего назначения с внеочередным исполнением команд и переименованием регистров, которые предназначены для вычислений общего назначения, которые поддерживают только класс В. Другой процессор, который не обладает отдельным графическим ядром, может содержать одно или более ядер общего назначения с исполнением команд по очереди и внеочередным исполнением команд, которые поддерживают как класс А, так и класс В. Конечно, признаки из одного класса также могут быть реализованы в другом классе в различных вариантах осуществления изобретения. Программы, написанные на языке высокого уровня, будут (например, динамически скомпилированные или статически скомпилированные) представлены в различных исполнимых формах, в том числе: 1) форма, обладающая только командами класса (классов), исполнение которых поддерживает целевой процессор; или 2) форма, обладающая альтернативными процедурами, записанными с использованием различных комбинаций команд всех классов и содержащая код управления последовательностью, который выбирает процедуры для исполнения на основе команд, поддерживаемых процессором, который в текущий момент исполняет код.
Пример конкретного формата векторно-ориентированных команд
На фиг. 15 показана схема, иллюстрирующая пример конкретного формата векторно-ориентированных команд, в соответствии с вариантами осуществления изобретения. На фиг. 15 показан конкретный формат 1500 векторно-ориентированных команд, который является конкретным в том смысле, что он определяет расположение, размер, интерпретацию и порядок полей, а также значения некоторых из этих полей. Этот конкретный формат 1500 векторно-ориентированных команд может быть использован для расширения набора х86 команд и, таким образом, некоторые поля аналогичны или совпадают с полями, используемыми в существующем наборе х86 команд и его расширении (например, AVX). Этот формат согласуется с полем префикса кодирования, полем байта фактического кода операции, полем MOD R/M, полем SIB, полем смещения и полями непосредственных значений существующего набора х86 команд с его расширениями. Показаны поля с фиг. 14, в которые отображаются поля с фиг. 15.
Ясно, что, хотя варианты осуществления изобретения описаны со ссылкой на конкретный формат 1500 векторно-ориентированных команд в случае общего формата 1400 векторно-ориентированных команд для целей показа, изобретение не ограничено конкретным форматом 1500 векторно-ориентированных команд, если не оговорено обратное. Например, общий формат 1400 векторно-ориентированных команд подразумевает целый ряд возможных размеров различных полей, а в конкретном формате 1500 векторно-ориентированных команд поля обладают конкретными размерами. В качестве конкретного примера, хотя поле 1464 ширины элемента данных показано как однобитовое поле в конкретном формате 1500 векторно-ориентированных команд, изобретение этим не ограничено (то есть, общий формат 1400 векторно-ориентированных команд подразумевает другие размеры поля 1464 ширины элемента данных).
Общий формат 1400 векторно-ориентированных команд содержит следующие поля, перечисленные ниже в порядке, показанном на фиг. 15А.
Префикс 1502 EVEX (байты 0-3) - закодирован в форме четырех байтов.
Поле 1440 формата (байт 0 EVEX, биты [7:0]) - первый байт (байт 0 EVEX) является полем 1440 формата, и он содержит 0×62 (уникальное значение, используемое для распознавания формата векторно-ориентированных команд в одном варианте осуществления изобретения).
Второй - четвертый байты (байты 1-3 EVEX) содержат некоторое количество битовых полей, обеспечивающих конкретные возможности.
Поле 1505 REX (байт 1 EVEX, биты [7-5]) - состоит из битового поля EVEX.R (байт 1 EVEX, бит [7] - R), битового поля EVEX.X (байт 1 EVEX, бит [6] - X) и битового поля EVEX.B (байт 1 EVEX, бит [5] - В). Битовые поля EVEX.R, EVEX.X и EVEX. B обеспечивают такие же функциональные возможности, что и соответствующие битовые поля
VEX и закодированы с использованием обратного кода, то есть ZMM0 кодируют как 1111В, ZMM15 кодируют как 0000В. Другие поля команды кодируют младшие три бита индексов регистров, что известно в технике (rrr, ххх и bbb), так что Rrrr, Хххх и Bbbb могут быть получены путем добавления EVEX.R, EVEX.X и EVEX.B.
Поле 1510 REX' - является первой частью поля 1510 REX' и является битовым полем EVEX.R' (байт 1 EVEX, бит [4] - R'), используемым для кодирования или старших 16 или младших 16 расширенного набора 32 регистров. В одном варианте осуществления изобретения этот бит, вместе с другими, как показано ниже, хранят в инвертированном битовом формате для отличия (в хорошо известном 32-битовом режиме х86) от команды BOUND, байт фактического кода операции которой представляет собой 62, но не принимает в поле MOD R/M (описано ниже) значение 11 в поле MOD; альтернативные варианты осуществления изобретения не сохраняют этот и другие указанные ниже биты в инвертированном формате. Значение, равное 1, используют для кодирования младших 16 регистров. Другими словами, R'Rrrr формируют путем объединения EVEX.R', EVEX.R и других RRR из других полей.
Поле 1515 отображения кода операции (байт 1 EVEX, биты [3:0] - mmmm) - его содержимое кодирует подразумеваемый ведущий байт кода операции (OF, OF 38 или OF 3).
Поле 1464 ширины элемента данных (байт 2 EVEX, бит [7] - W) - представляет спецификацию EVEX.W. EVEX.W используют для определения гранулярности (размера) типа данных (или 32-битовые элементы данных или 64-битовые элементы данных).
EVEX.vvvv 1520 (байт 2 EVEX, биты [6:3]-vvvv) - роль EVEX.vvvv может включать в себя следующее: 1) EVEX.vvvv кодирует первый регистровый операнд-источник, определенный в инвертированной (обратный код) форме и допустим для команд с 2 или более операндами-источниками; 2) EVEX.vvvv кодирует регистровый операнд-назначение, определенный в обратном коде для определенных векторных сдвигов; или 3) EVEX.vvvv не кодирует никакого операнда, поле зарезервировано и должно содержать 1111b. Таким образом, поле 1520 EVEX.vvvv кодирует 4 младших бита первого спецификатора регистра источника, хранящегося в инвертированной (обратный код) форме. В зависимости от команды, дополнительное другое битовое поле EVEX используют для расширения размера спецификатора до 32 регистров.
Поле 1468 класса EVEX.U (байт 2 EVEX, бит [2]-U) - если EVEX.U=0, это указывает на класс А или EVEX.U0; если EVEX.U=1, это указывает на класс В или EVEX.U 1.
Поле 1525 префикса кодирования (байт 2 EVEX, биты [1:0]-рр) - предоставляют дополнительные биты для поля базовой операции. Помимо обеспечения поддержки существующих SSE команд в формате префикса EVEX, это также полезно с точки зрения компактности SIMD префикса (в отличие от байта, нужного для SIMD префикса, префикс EVEX требует только 2 бита). В одном варианте осуществления изобретения для поддержания существующих SSE команд, в которых используют SIMD префикс (66Н, F2H, F3H) в существующем формате и формате префикса EVEX, эти существующие SIMD префиксы кодируют в поле кодирования SIMD префикса; и во время выполнения их расширяют в существующий SIMD префикс до предоставления на PLA декодера (так что PLA без модификации может работать как с существующим, так и с EVEX форматом этих существующих команд). Хотя более новые команды могут использовать содержимое поля кодирования EVEX префикса непосредственно как расширение кода операции, определенные варианты осуществления изобретения расширяют аналогичным образом для совместимости, но позволяют для этих существующих SIMD префиксов определять различные значения. Альтернативный вариант осуществления изобретения может модернизировать PLA для поддержки кодировок 2 битового SIMD префикса и, таким образом, не требовать расширения.
Поле 1452 альфа (байт 3 EVEX, бит [7] - ЕН; также известно как EVEX.EH, EVEX.rs, EVEX.RL, EVEX.управление маской записи и EVEX.N; также показано с α) - как описано выше, это поле зависит от контекста.
2_0
2
0
Поле 1454 бета (байт 3 EVEX, биты [6:4]-SSS, также известно как EVEX.s, EVEX.r_, EVEX.rr1, EVEX.LL0, EVEX.LLB; также показывают с β) - как описано выше, это поле зависит от контекста.
Поле 1510 REX' - является оставшейся частью поля REX' и является битовым полем EVEX.V (байт 3 EVEX, бит [3] - V'), которое может быть использовано для кодирования или старших 16 или младших 16 расширенного набора 32 регистров. Этот бит хранят в битовом инвертированном формате. Значение, равное 1, используют для кодирования младших 16 регистров. Другими словами, V'VVVV образован путем объединения EVEX.V', EVEX.vvvv.
Поле 1470 маски записи (байт 3 EVEX, биты [2:0]-kkk) - его содержимое определяет индекс регистра в регистрах маски записи, как описано выше. В одном варианте осуществления изобретения конкретное значение EVEX.kkk=000 обладает специальным поведением, предполагающим, что для конкретной команды не используют маску записи (это может быть реализовано различными путями, в том числе с помощью аппаратно-реализованной маски записи для всех или с помощью аппаратного обеспечения, которое обходит аппаратное обеспечение маскирования).
Поле 1530 фактического кода операции (байт 4) также известно как байт кода операции. В этом поле определена часть кода операции.
Поле 1540 MOD R/M (байт 5) содержит поле 1542 MOD, поле 1544 Reg и поле 1546 R/M. Как описано выше, содержимое поля 1542 MOD показывает, представляет ли команда операцию с доступом к памяти или операцию без доступа к памяти. Роль поля 1544 Reg может быть сведена к двум ситуациям: кодирование или регистрового операнда-назначения или регистрового операнда-источника или может рассматриваться как расширение кода операции и не использоваться для кодирования никаких операндов команды. Роль поля 1546 R/M может включать в себя следующее: кодирование операнда команды, который ссылается на адрес памяти, или кодирование или регистрового операнда-назначения или регистрового операнда-источника.
Байт (байт 6) масштабирования, индекса, основание (SIB) - как описано выше содержимое поля 1450 масштабирования используют для выработки адреса памяти. SIB.ххх 1554 и SIB.bbb 1556 - содержимое этих полей рассматривалось ранее для индексов Хххх и Bbbb регистров.
Поле 1462А смещения (байты 7-10) - когда поле 1452 MOD содержит 10, байты 7 -10 являются полем 1462А смещения и оно работает как существующее 32-битовое смещение (disp32) и оно работает на уровне байтов.
Поле 1462В множителя смещения (байт 7) - когда поле 1542 MOD содержит 01, байт 7 является полем 1462В множителя смещения. Расположение этого поля совпадает с расположением в существующем наборе х86 команд 8-битового смещения (disp8), которое работает на уровне байтов. Так как disp8 расширено на знак, оно может адресовать только смещения от -128 до 127; с точки зрения 64 байтовых строк кэш-памяти disp8 использует 8 битов, которые могут быть установлены равными только четырем по-настоящему полезным значениям: -128, -64, 0 и 64; так как часто нужен больший диапазон, используют disp32; тем не менее, для disp32 нужно 4 байта. В отличие от disp8 и disp32, поле 1462В множителя смещения является новой интерпретацией disp8; когда используют поле 1462В множителя смещения, фактическое смещение определяют путем умножения содержимого поля множителя смещения на размер (N) операнда выборки памяти. Этот тип смещения называется disp8*N. Это уменьшает среднюю длину команды (для смещения используют один байт, но его диапазон гораздо больше). Такое сжатое смещение основано на предположении, что эффективное смещение является множителем гранулярности доступа к памяти и, следовательно, не нужно кодировать лишние младшие биты смещения адреса. Другими словами, поле 1462В множителя смещения заменяет 8-битовое смещение существующего набора х86 команд. Таким образом, поле 1462В множителя смещения кодируют аналогично 8-битовому смещению набора х86 команд (так что не изменяются правила кодирования ModRM/SIB), с одним исключением, которое заключается в том, что disp8 заменяют на disp8*N. Другими словами, отсутствуют изменения правил кодирования или длин кодирования, а присутствуют изменения в интерпретации значения смещения аппаратным обеспечением (которому нужно масштабировать смещение на размер операнда памяти с целью получения побайтового смещения адреса).
Поле 1472 непосредственного значения работает так, как описано ранее.
Поле полного кода операции
На фиг. 15В показана схема, иллюстрирующая поля конкретного формата 1500 векторно-ориентированных команд, которые составляют поле 1474 полного кода операции, в соответствии с одним вариантом осуществления изобретения. Более конкретно, поле 1474 полного кода операции содержит поле 1440 формата, поле 1442 базовой операции и поле 1464 ширины (W) элемента данных. Поле 1442 базовой операции содержит поле 1525 префикса кодирования, поле 1515 отображения кода операции и поле 1530 фактического кода операции.
Поле индекса регистра
На фиг. 15С показана схема, иллюстрирующая поля конкретного формата 1500 векторно-ориентированных команд, которые составляют поле 1444 индекса регистра, в соответствии с одним вариантом осуществления изобретения. Более конкретно, поле 1444 индекса регистра содержит поле 1505 REX, поле 1510 REX', поле 1544 MODR/M.reg, поле 1546 MODR/M.r/m, поле 1520 WW, поле 1554 ххх и поле 1556 bbb.
Поле операции приращения
На фиг. 15D показана схема, иллюстрирующая поля конкретного формата 1500 векторно-ориентированных команд, которые составляют поле 1450 операции приращения, в соответствии с одним вариантом осуществления изобретения. Когда поле 1468 класса (U) содержит 0, это означает EVEX.U0 (класс А 1468А); когда оно содержит 1, оно означает EVEX.U1 (класс В 1468В). Когда U=0 и поле 1542 MOD содержит 11 (означает операцию без доступа к памяти), поле 1452 альфа (байт 3 EVEX, бит [7] - ЕН) рассматривают как поле 1452А rs. Когда поле 1542А содержит 1 (округление 1452А.1), поле 1454 бета (байт 3 EVEX, биты [6:4] - SSS) рассматривают как поле 1454А управления округлением. Поле 1454А управления округлением содержит однобитовое поле 1456 SAE и двухбитовое поле 1458 управления округлением. Когда поле 1542А содержит 0 (преобразование данных 1452А.2), поле 1454 бета (байт 3 EVEX, биты [6:4] - SSS) рассматривают как трехбитовое поле 145В преобразования данных. Когда U=0 и поле 1542 MOD содержит 00, 01 или 10 (означает операцию с доступом к памяти), поле 1452 альфа (байт 3 EVEX, бит [7] - ЕН) рассматривают как поле 1452В рекомендации к освобождению (ЕН), а поле 1454 бета (байт 3 EVEX, биты [6:4] - SSS) рассматривают как трехбитовое поле 1454С манипуляции данных.
0
2-1
2-1
1-0
1-0
Когда U=1, поле 1452 альфа (байт 3 EVEX, бит [7] - ЕН) рассматривают как поле 1452С управления (Z) маскированием. Когда U=1 и поле 1542 MOD содержит 11 (означает операцию без доступа к памяти), часть поля 1454 бета (байт 3 EVEX, бит [4]- S) рассматривают как поле 1457А RL; когда оно содержит 1 (округление 1457А.1) оставшуюся часть поля 1454 бета (байт 3 EVEX, биты [6-5]- S) рассматривают как поле 1459А операции округления, а когда поле 1457А RL содержит 0 (VSIZE 1457.А2), оставшуюся часть поля 1454 бета (байт 3 EVEX, биты [6-5]- S) рассматривают как поле 1459В длины вектора (байт 3 EVEX, биты [6-5]- L). Когда U=1 и поле 1542 MOD содержит 00, 01 или 10 (означает операцию с доступом к памяти), поле 1454 бета (байт 3. EVEX, биты [6:4]- SSS) рассматривают как поле 1459В длины вектора (байт 3 EVEX, биты [6-5] - L) и поле 1457 В широковещательной передачи (байт 3 EVEX, бит [4]- В).
Пример архитектуры регистров
На фиг. 16 показана схема архитектуры 1600 регистров, в соответствии с одним вариантом осуществления изобретения. В показанном варианте осуществления изобретения присутствуют 32 векторных регистра 1610, шириной 512 битов каждый; эти регистры обозначены как zmm0 - zmm31. Младшие 256 битов младших 16 zmm регистров наложены на регистры ymm0 - 16. Младшие 128 битов младших 16 zmm регистров (младшие 128 битов младших 16 ymm регистров) наложены на регистры xmm0 - 16. Конкретный формат 1500 векторно-ориентированных команд работает с этим файлом наложенных регистров так, как показано в приведенных ниже таблицах.
Другими словами, поле 1459В длины вектора выбирает между максимальной длиной и одной или несколькими более короткими длинами, где каждая такая более короткая длина равна половине предыдущей длины; а шаблоны команд без поля 1459В длины вектора работают с максимальной длиной вектора. Далее, в одном варианте осуществления изобретения шаблоны класса В команд конкретного формата 1500 векторно-ориентированных команд работают с упакованными или скалярными данными с плавающей запятой одинарной/двойной точности и упакованными или скалярными целыми данными. Скалярные операции представляют собой операции, осуществляемые с позицией наименьшего порядка элемента данных в регистре zmm/ymm/xmm; позиции наибольшего порядка элемента данных расположены или слева, как они были до команды, или обнулены, в зависимости от варианта осуществления изобретения.
Регистры 1615 маски записи - в показанном варианте осуществления изобретения присутствует 8 регистров маски записи (k0-k7), размер каждого составляет 64 бита. В альтернативном варианте осуществления изобретения размер регистров 1615 маски записи составляет 16 битов. Как описано выше, в одном варианте осуществления изобретения регистр k0 маски записи не может быть использован как маска записи; при таком кодировании, которое обычно указывало бы, что k0 используют для маски записи, в нем выбирают аппаратно-реализованную маску записи, равную 0×FFFF, которая эффективно отключает маскирование записи для рассматриваемой команды.
Регистры 1625 общего назначения - в показанном варианте осуществления изобретения, присутствует шестнадцать 64-битовых регистров общего назначения, которые используют вместе с существующими режимами адресации х86 для адресации операндов памяти. К этим регистрам обращаются по названиям RAX, RBX, RCX, RDX, RBP, RSI, RDI, RSP и R8-R15.
Файл 1645 стека (х87 стек) скалярных регистров с плавающей запятой, на который наложен плоский файл 1650 регистров ММХ упакованных целых - в показанном варианте осуществления изобретения стек х87 является стеком из восьми элементов, используемым для осуществления скалярных операций с плавающей запятой для 32/64/80-битовьгх данных с плавающей запятой с использованием расширения набора х87 команд; при этом ММХ регистры используют для осуществления операция для 64-битовых упакованных целых данных, а также для содержания операндов для некоторых операций, осуществляемых между ММХ и ХММ регистрами.
Альтернативные варианты осуществления изобретения могут использовать более широкие или более узкие регистры. Кроме того, альтернативные варианты осуществления изобретения могут использовать большее, меньшее или другое количество файлов регистров и регистров.
Примеры архитектур ядер, процессоров и архитектур компьютера
Ядра процессоров могут быть реализованы различными способами, для разных целей и для разных процессоров. Например, реализации таких ядер могут содержать: 1) ядро общего назначения с исполнением команд по очереди, выполненное для вычислений общего назначения; 2) высокопроизводительное ядро общего назначения с внеочередным исполнением команд, выполненное для вычислений общего назначения; 3) специальное ядро, выполненное, в основном, для графики и/или научных (производительных) вычислений. Реализации других процессоров могут содержать: 1) CPU, содержащий одно или несколько ядер общего назначения с исполнением команд по очереди, выполненных для вычислений общего назначения, и/или одно или несколько ядер общего назначения с внеочередным исполнением команд, выполненных для вычислений общего назначения; и 2) сопроцессор, содержащий одно или несколько ядер специального назначения, выполненных, в основном, для графики и/или научных (производительных) вычислений. Такие различные процессоры приводят к различным архитектурам вычислительных систем, которые могут содержать: 1) сопроцессор на отдельной от CPU микросхеме; 2) сопроцессор на отдельном кристалле, но в том же пакете, что и CPU; 3) сопроцессор на том же кристалле, что и CPU (в этом случае такой сопроцессор иногда называется специальной логической схемой, такой как интегрированная графическая и/или научная (производительная) логическая схема, или называется ядрами специального назначения); и 4) систему на кристалле, которая может содержать на том же кристалле описанный CPU (иногда называемый ядром (ядрами) приложений или процессором (процессорами) приложений), описанный выше сопроцессор и дополнительные функциональные возможности. Примеры архитектур ядер описаны ниже, после чего приведены описания примеров процессоров и архитектур компьютеров.
Примеры архитектур ядер
Структурная схема ядра с исполнением команд по очереди и внеочередным исполнением команд
На фиг. 17А показана структурная схема, иллюстрирующая как пример конвейера с исполнением команд по очереди, так и пример конвейера с внеочередным исполнением/направлением команд, с переименованием регистров, в соответствии с вариантами осуществления изобретения. На фиг. 17В показана структурная схема, иллюстрирующая как пример архитектуры ядра с исполнением команд по очереди, так и пример архитектуры ядра с внеочередным исполнением/направлением команд, с переименованием регистров, которое должно содержаться в процессоре, в соответствии с вариантами осуществления изобретения. Ячейки со сплошной линией на фиг. 17А-В показывают конвейер с исполнением команд по очереди и ядро с исполнением команд по очереди, а необязательное добавление ячеек с пунктирной линией показывает конвейер и ядро с внеочередным исполнением/направлением команд и переименованием регистров. При условии, что аспект изобретения с исполнением команд по очереди является подмножеством аспекта изобретения с внеочередным исполнением команд, будет описан аспект изобретения с внеочередным исполнением команд.
На фиг. 17А, конвейер 1700 процессора содержит этап 1702 вызова, этап 1704 декодирования длины, этап 1706 декодирования, этап 1708 выделения, этап 1710 переименования, этап 1712 планирования (также известный как передача или подача), этап 1714 чтения регистра/памяти, этап 1716 исполнения, этап 1718 обратной записи/записи в память, этап 1722 обработки исключений и этап 1724 фиксации.
На фиг. 17В показано ядро 1790 процессора, содержащее входной блок 1730, связанный с блоком 1750 механизма исполнения, при этом входной блок 1730 и блок 1750 механизма исполнения связаны с блоком 1770 памяти. Ядро 1790 может быть вычислительным ядром (RISC) с сокращенным набором команд, вычислительным ядром (CISC) со сложным набором команд, ядром (VLIW) с очень длинным командным словом или ядром гибридного или альтернативного типа. В качестве еще одного варианта, ядро 1790 может быть ядром специального назначения, таким как, например, сетевым ядром или ядром связи, ядром устройства сжатия, ядром сопроцессора, ядром (GPGPU) графического процессора для вычислений общего назначения, графическим ядром или подобным.
Входной блок 1730 содержит блок 1732 предсказания ветвления, связанные с блоком 1734 кэш-памяти команд, который связан с буфером 1736 ассоциативной трансляции (TLB) команд, который связан с блоком 1738 вызова команд, который связан с блоком 1740 декодирования. Блок 1740 декодирования (декодер) может декодировать команды и вырабатывать в качестве выхода одну или несколько микроопераций, точек входа микрокода, микрокоманд, других команд или других сигналов управления, которые декодированы, или другим образом отражают или получены из исходных команд. Блок 1740 декодирования может быть реализован с использованием различных механизмов. Примерами подходящих механизмов являются, помимо прочего, таблицы соответствия, аппаратные реализации, программируемые логические массивы (PLA), постоянные запоминающие устройства (ROM) с микрокодом и так далее. В одном варианте осуществления изобретения ядро 1790 содержит ROM с микрокодом или другой носитель, на котором хранят микрокод для определенных макрокоманд (например, в блоке 1740 декодирования или другим образом во входном блоке 1730). Блок 1740 декодирования связан с блоком 1752 переименования/выделения из блока 1750 механизма исполнения.
Блок 1750 механизма исполнения содержит блок 1752 переименования/выделения, связанный с блоком 1754 выгрузки и набором из одного или нескольких блоков 1756 планирования. Блок (блоки) 1756 планирования представляют любое количество разных устройств планирования, в том числе резервирующие станции, центральное окно команд и так далее. Блок (блоки) 1756 планирования связаны с блоком (блоками) 1758 файла (файлов) физических регистров. Каждый из блоков 1758 файла (файлов) физических регистров представляет один или несколько файлов физических регистров, при этом различные файлы хранят данные одного или нескольких типов данных, таких как скалярные целые, скалярные с плавающей запятой, упакованные целые, упакованные с плавающей запятой, векторные целые, векторные с плавающей запятой, состояния (например, указатель команды, который является адресом следующей команды, подлежащей исполнению) и так далее. В одном варианте осуществления изобретения блок 1758 файла (файлов) физических регистров содержит блок векторных регистров, блок регистров масок записи и блок скалярных регистров. Эти блоки регистров могут представлять собой архитектурные векторные регистры, регистры векторных масок и регистры общего назначения. Блок (блоки) 1758 файла (файлов) физических регистров перекрываются блоком 1754 выгрузки для показа различных путей, которыми могут быть реализовано переименование регистров и внеочередное исполнение команд (например, с использованием буфера (буферов) переупорядочивания и файла (файлов) выгрузки регистров; с использованием файла (файлов) будущего, буфера (буферов) истории и файла (файлов) регистров выгрузки; с использованием карт регистров и пула регистров; и так далее.). Блок 1754 выгрузки и блок (блоки) 1758 файла (файлов) физических регистров связаны с кластером (кластерами) 1760 исполнения. Кластер (кластеры) 1760 исполнения содержат набор из одного или нескольких блоков 1762 исполнения и набор из одного или нескольких блоков 1764 доступа к памяти. Блоки 1762 исполнения могут осуществлять различные операции (например, сдвиги, сложение, вычитание, умножение) для различных типов данных (например, скалярных с плавающей запятой, упакованных целых, упакованных с плавающей запятой, векторных целых, векторных с плавающей запятой). Хотя некоторые варианты осуществления изобретения могут содержать некоторое количество блоков исполнения, выделенных для конкретных функций или наборов функций, другие варианты осуществления изобретения могут содержать только один блок исполнения или множество блоков исполнения, которые все выполняют все функции. Блок (блоки) 1756 планирования, блок (блоки) 1758 файла (файлов) физических регистров и кластер (кластеры) 1760 исполнения показаны с возможностью наличия нескольких блоков, так как определенные варианты осуществления изобретения создают отдельные конвейеры для определенных типов данных/операций (например, конвейер скалярных целых, конвейер скалярных с плавающей запятой/упакованных целых/упакованных с плавающей запятой/векторных целых/векторных с плавающей запятой и/или конвейер доступа к памяти, каждый из которых обладает собственных блоком планирования, блоком файла (файлов) физических регистров и/или кластером исполнения - и в случае отдельного конвейера доступа к памяти, реализованы определенные варианты осуществления изобретения, в которых только кластер исполнения этого конвейера содержит блок (блоки) 1764 доступа к памяти). Также следует понимать, что, когда используют отдельные конвейеры, один или несколько этих конвейеров могут быть с внеочередным исполнением/направлением команд, а другие - с исполнением команд по очереди.
Набор блоков 1764 доступа к памяти связан с блоком 1770 памяти, который содержит блок 1772 TLB данных, связанный с блоком 1774 кэш-памяти данных, связанным с блоком 1776 кэш-памяти уровня 2 (L2). В одном примере варианта осуществления изобретения блоки 1764 доступа к памяти могут содержать блок загрузки, блок адреса хранения и блок хранения данных, каждый из которых связан с блоком 1772 TLB данных в блоке 1770 памяти. Блок 1734 кэш-памяти команд дополнительно связан с блоком 1776 кэш-памяти уровня 2 (L2) в блоке 1770 памяти. Блок 1776 кэш-памяти L2 связан с одним или несколькими другими уровнями кэш-памяти и, в конечном счете, с основной памятью.
В качестве примера, архитектура ядра с внеочередным исполнением/направлением команд, с переименованием регистров, может реализовывать конвейер 1700 следующим образом: 1) блок 1738 вызова команд осуществляет этапы 1702 и 1704 вызова и декодирования длины; 2) блок 1740 декодирования осуществляет этап 1706 декодирования; 3) блок 1752 переименования/выделения осуществляет этап 1708 выделения и этап 1710 переименования; 4) блок (блоки) 1756 планирования осуществляют этап 1712 планирования; 5) блок (блоки) 1758 файла (файлов) физических регистров и блок 1770 памяти осуществляют этап 1716 исполнения; 6) блок 1770 памяти и блок (блоки) 1758 файла (файлов) физических регистров осуществляют этап 1718 повторной записи/записи в память; 7) различные блоки могут участвовать в этапе 1722 обработки исключений; и 8) блок 1754 выгрузки и блок (блоки) 1758 файла (файлов) физических регистров осуществляют этап 1724 фиксации.
Ядро 1790 может поддерживать один или несколько наборов команд (например, набор х86 команд (с некоторыми расширениями, добавленными в более новых версиях); набор команд MIPS компании IPS Technologies, город Саннивейл (Sunnyvale), Калифорния; набор команд ARM (с необязательными дополнительными расширениями, такими как NEON) компании ARM Holdings, город Саннивейл, Калифорния), в том числе описанные здесь команды (команду). В одном варианте осуществления изобретения ядро 1790 содержит логическую схему для поддержки расширения (например, AVX1, AVX2) набора команд для упакованных данных, тем самым предоставляется возможность осуществлять операции, используемые многими мультимедийными приложениями, с использованием упакованных данных.
Следует понимать, что ядро может поддерживать многопоточный режим (при котором исполняют два или несколько параллельных наборов операций или нитей) и может делать это многими способами, в том числе многопоточность с квантованием времени, одновременная многопоточность (когда единственное физическое ядро предоставляет для каждой нити логическое ядро, которые физическое ядро выполняет одновременно), или их комбинация (например, вызов с квантованием времени и декодирование, а затем одновременная многопоточность, например, как в технологии Intel Hyperthreading).
Хотя переименование регистров описано в случае внеочередного исполнения команд, следует понимать, что переименование регистров может быть использовано в архитектуре с исполнением команд по очереди. Хотя показанный вариант осуществления процессора также содержит отдельные блоки 1734/1774 кэш-памяти команд и данных и совместно используемый блок 1776 кэш-памяти L2, альтернативные варианты осуществления изобретения могут содержать единственную внутреннюю кэш-память как для команд, так и для данных, такую как, например, внутренняя кэш-память уровня 1 (L1), или несколько уровней внутренней кэш-памяти. В некоторых вариантах осуществления изобретения система может содержать комбинацию внутренней кэш-памяти и внешней кэш-памяти, которая является внешней по отношению к ядру и/или процессору. В качестве альтернативы, все кэш-памяти могут быть внешними для ядра и/или процессора.
Конкретный пример архитектуры ядра с исполнением команд по очереди
На фиг. 18А-В показана структурная схема более конкретного примера архитектуры ядра с исполнением команд по очереди, при этом ядро может быть одним из нескольких логических блоков (в том числе других ядер того же типа и/или других типов) в микросхеме. Логические блоки обмениваются информацией с помощью широкополосной внутренней сети (например, кольцевой сети) с некоторой логической схемой с фиксированной функцией, интерфейсами ввода/вывода для памяти и другими необходимыми логическими схемами ввода/вывода, в зависимости от приложения.
На фиг. 18А показана структурная схема одного ядра процессора вместе с соединением с внутренней сетью 1802 на кристалле и с локальным подмножеством кэш-памяти 1804 уровня 2 (L2), в соответствии с вариантами осуществления изобретения. В одном варианте осуществления изобретения декодер 1800 команд поддерживает набор х86 команд с расширением набора команд для упакованных данных. Кэш-память 1806 L1 позволяет осуществлять доступ с малой задержкой к кэш-памяти в скалярных и векторных блоках. Хотя в одном варианте осуществления изобретения (для упрощения структуры) скалярный блок 1808 и векторный блок 1810 используют отдельные наборы регистров (соответственно, скалярные регистры 1812 и векторные регистры 1814) и данные, переданные между ними, записывают в память и далее повторно считывают из кэш-памяти 1806 уровня 1 (L1), альтернативные варианты осуществления изобретения могут использовать другой подход (например, использовать один набор регистров или содержать путь обмена информацией, которые позволяет перемещать данные между двумя файлами регистров без записи и повторного считывания).
Локальное подмножество кэш-памяти 1804 L2 является частью общей кэш-памяти L2, которая разделена на отдельные локальные подмножества по одному на каждое ядро процессора. Каждое ядро процессора содержит путь прямого доступа к собственному локальному подмножеству кэш-памяти 1804 L2. Данные, считанные ядром процессора, сохраняют в собственном подмножестве кэш-памяти 1804 L2 и доступ к этим данным может быть осуществлен быстро, параллельно с другими ядрами процессора, осуществляющими доступ к собственным подмножествам кэш-памяти L2. Данные, записанные ядром процессора, сохраняют в собственном подмножестве кэш-памяти 1804 L2 и, при необходимости, они могут быть извлечены из других подмножеств. Кольцевая сеть обеспечивает когерентность совместно используемых данных. Кольцевая сеть является двунаправленной и позволяет субъектам, таким как ядра процессора, кэш-память L2 и другие логические блоки обмениваться информацией друг с другом в рамках микросхемы. Ширина каждого кольцевого пути данных равна 1012 битам в каждом направлении.
На фиг. 18В показан увеличенный вид части ядра процессора с фиг. 18А, в соответствии с вариантами осуществления изобретения. На фиг. 18В показана кэш-память 1806А L1 данных, являющаяся частью кэш-памятью 1804 L1, а также показано больше подробностей векторного блока 1810 и векторных регистров 1814. Более конкретно, векторный блок 1810 является 16-ти разрядным векторным блоком (VPU) обработки (смотри 16-ти разрядный ALU 1828), который исполняет одну или несколько команд с целыми данными, данными с плавающей запятой одинарной точности и данными с плавающей запятой двойной точности. VPU поддерживает выборку из входов регистров с помощью блока 1820 выборки, числовое преобразование с помощью блоков 1822А-В числового преобразования и копирование с помощью блока 1824 копирования для входа памяти. Регистры 1826 маски записи позволяют записывать результирующие векторы с наложением логического условия.
Процессор с контроллером интегрированной памяти и графикой
На фиг. 19 показана структурная схема процессора 1900, который может содержать более одного ядра, может содержать контроллер интегрированной памяти и может содержать интегрированную графику, в соответствии с вариантами осуществления изобретения. Ячейки из сплошных линий на фиг. 19 показывают процессор 1900 с единственным ядром 1902А, системным агентом 1910, набором из одного или нескольких блоков 1916 контроллеров шины, необязательное добавление ячеек из пунктирных линий показывает альтернативный процессор 1900 с несколькими ядрами 1902A-N, набором из одного или нескольких блоков 1914 контроллеров интегрированной памяти в блоке 1910 системного агента и логической схемой 1908 специального назначения.
Таким образом, различные реализации процессора 1900 могут содержать: 1) CPU с логической схемой 1908 специального назначения, являющейся логической схемой интегрированной графики и/или научных (производительных) вычислений (которая может содержать одно или несколько ядер), и ядрами 1902A-N, являющимися одним или несколькими ядрами общего назначения (например, ядрами общего назначения с исполнением команд по очереди, ядрами общего назначения с внеочередным исполнением команд, комбинацией указанных двух); 2) сопроцессор с ядрами 1902A-N, которые представляют собой большое количество ядер специального назначения, выполненных, в основном, для графики и/или научных (производительных) вычислений; и 3) сопроцессор с ядрами 1902A-N, которые представляют собой большое количество ядер общего назначения с исполнением команд по очереди. Таким образом, процессор 1900 может быть процессором общего назначения, сопроцессором или процессором специального назначения, таким как, например, сетевой процессор или процессор связи, устройство сжатия, графический процессор, GPGPU (графический вычислительный блок общего назначения), высокопроизводительным сопроцессором со множеством ядер (содержащим 30 и более ядер), встроенный процессор или подобный. Процессор может быть реализован на одной или нескольких микросхемах. Процессор 1900 может быть частью и/или может быть реализован на одной или нескольких подложках с использованием некоторого количества технологий обработки, таких как, например, BiCMOS, CMOS или NMOS.
Иерархия памяти содержит один или несколько уровней кэш-памяти в ядрах, набор или один или несколько совместно используемых блоков 1906 кэш-памяти и внешнюю память (не показана), связанную с набором блоков 1914 контроллеров интегрированной памяти. Набор совместно используемых блоков 1906 кэш-памяти может содержать одну или несколько кэш-памятей среднего уровня, такого как уровень 2 (L2), уровень 3 (L3), уровень 4 (L4), или другие уровни кэш-памяти, кэш-память (LLC) последнего уровня и/или их комбинации. Хотя в одном варианте осуществления изобретения блок 1912 соединений на основе кольца соединяет логическую схему 1908 интегрированной графики, набор совместно используемых блоков 1906 кэш-памяти и блок 1910 системного агента/блок (блоки) 1914 контроллера интегрированной памяти, альтернативные варианты осуществления изобретения могут использовать любое количество хорошо известных технологий для связи таких блоков. В одном варианте осуществления изобретения поддерживают когерентность между одним или несколькими блоками 1906 кэш-памяти и ядрами 1902-A-N.
В некоторых вариантах осуществления изобретения одно или несколько ядер 1902A-N способны поддерживать многопоточность. Системный агент 1910 содержит эти компоненты, координирующие и управляющие ядра 1902A-N. Блок 1910 системного агента может содержать, например, блок (PCU) управления питанием и блок отображения. PCU может являться или содержать логическую схему или компоненты, нужные для регулирования состояния электропитания ядер 1902A-N и логической схемы 1908 интегрированной графики. Блок отображения выполнен для управления одним или несколькими внешними соединенными дисплеями.
Ядра 1902A-N могут быть однородными или разнородными с точки зрения архитектуры набора команд; то есть, два или несколько ядер 19802A-N могут быть способны исполнить один и тот же набор команд, а другие могут быть способны исполнить только подмножество этого набора команд или другого набора команд.
Примеры архитектур компьютера
На фиг. 20-23 показаны структурные схемы примеров архитектуры компьютера. Также подходят другие конструкции системы и конфигурации, известные в технике для лэптопов, настольных компьютеров, карманных компьютеров, персональных цифровых помощников, инженерных рабочих станций, серверов, сетевых устройств, сетевых концентраторов, коммутаторов, встроенных процессоров, цифровых сигнальных процессоров (DSP), графических устройств, устройств для видео игр, телевизионных приставок, микроконтроллеров, сотовых телефонов, переносных медиаплеееров, ручных устройств и различных других электронных устройств. В общем, подходят огромное количество разнообразных систем или электронных устройств, способных содержать процессор и/или другую описанную здесь логическую схему исполнения.
На фиг. 20 показана структурная схема системы 2000, в соответствии с одним вариантом осуществления изобретения. Система 2000 может содержать один или несколько процессоров 2010, 2015, которые связаны с блоком 2020 контроллеров. В одном варианте осуществления изобретения блок 2020 контроллеров содержит блок 2090 (GMCH) контроллеров графической памяти и блок 2050 (IOH) ввода/вывода (который может быть расположен на отдельных микросхемах); GMCH 2090 содержит контроллеры памяти и графики, с которыми связаны память 2040 и сопроцессор 2045; IOH 2050 связывает устройства 2060 ввода/вывода с GMCH 2090. В качестве альтернативы один или несколько контроллеров памяти и графики встроены в процессор (как описано в настоящем документе), память 2040 и сопроцессор 2045 непосредственно связаны с процессором 2010 и блоком 2020 контроллеров, расположенном на одной микросхеме с IOH 2050.
Необязательная природа дополнительных процессоров 2015 обозначена на фиг. 20 пунктирными линиями. Каждый процессор 2010, 2015 может содержать одно или несколько описанных в настоящем документе ядер обработки и может являться некоторой версией процессора 1900.
Память 2040 может быть, например, динамическим оперативным запоминающим устройством (DRAM), памятью (PCM) на фазовых переходах или комбинацией указанных двух. По меньшей мере, в одном варианте осуществления изобретения блок 2020 контроллеров обменивается информацией с процессором (процессорами) 2010, 2015 с помощью многоточечной шины, такой как системная шина (FSB), интерфейса точка-точка, такого как внутреннее соединение (QPI) QuickPath или аналогичного соединения 2095.
В одном варианте осуществления изобретения сопроцессор 2045 является процессором специального назначения, таким как, например, высокопроизводительный MIC процессор, сетевой процессор или процессор связи, устройство сжатия, графический процессор, GPGPU, встроенный процессор или подобным. В одном варианте осуществления изобретения блок 2020 контроллеров может содержать устройство ускорения интегрированной графики.
Может присутствовать большое количество различий между физическими ресурсами 2010, 2015 с точки зрения разных мер, в том числе архитектурных характеристик, микроархитектурных характеристик, тепловых характеристик, характеристик потребления электроэнергии и подобных.
В одном варианте осуществления изобретения процессор 2010 исполняет команды, которые управляют операциями обработки данных общего типа. В команды могут быть встроены команды сопроцессора. Процессор 2010 распознает эти команды сопроцессора как команды такого типа, которые должны быть исполнены прикрепленным сопроцессором 2045. Соответственно, процессор 2010 направляет эти команды сопроцессора (или сигналы управления, представляющие команды сопроцессора) по шине сопроцессора или другому соединению на сопроцессор 2045. Сопроцессор (сопроцессоры) 2045 принимает и исполняет принятые команды сопроцессора.
На фиг. 21 показана структурная схема первого более конкретного примера системы 2100, в соответствии с одним вариантом осуществления изобретения. Как показано на фиг. 21, многопроцессорная система 2100 является системой соединений точка-точка и содержит первый процессор 2170 и второй процессор 2180, связанные с помощью соединения 2150 точка-точка. Каждый из процессоров 2170 и 2180 может быть некоторой версией процессора 1900. В одном варианте осуществления изобретения процессоры 2170 и 2180 являются, соответственно, процессорами 2010 и 2015, а сопроцессор 2138 является сопроцессором 2045. В другом варианте осуществления изобретения процессоры 2170 и 2180 являются, соответственно, процессором 2010 и сопроцессором 2045.
Процессоры 2170 и 2180 показаны содержащими соответственно блоки 2172 и 2182 контроллеров (IMC) интегрированной памяти. Процессор 2170 также содержит, как часть своих блоков контроллеров шины, интерфейсы 2176 и 2178 точка-точка (Р-Р); аналогично, второй процессор 2180 содержит интерфейсы 2186 и 2188 Р-Р. Процессоры 2170 и 2180 могут обмениваться информацией с помощью интерфейса 2150 точка-точка (Р-Р) с использованием интерфейсных схем 2178, 2188 Р-Р. Как показано на фиг. 21, IMC 2172 и 2182 связывают процессоры с соответствующими памятями, а именно памятью 2132 и памятью 2134, которые могут быть частями основной памяти, локально прикрепленными к соответствующим процессорам.
Каждый из процессоров 2170, 2180 может обмениваться информацией с набором 2190 микросхем с помощью отдельных интерфейсов 2152, 2154 Р-Р с использованием интерфейсных схем 2176, 2194, 2186, 2198 точка-точка. Набор 2190 микросхем может, при желании, обмениваться информацией с сопроцессором 2138 с помощью высокопроизводительного интерфейса 2139. В одном варианте осуществления изобретения сопроцессор 2138 является процессором специального назначения, таким как, например, высокопроизводительный MIC процессор, сетевой процессор или процессор связи, устройство сжатия, графический процессор, GPGPU, встроенный процессор или подобным.
Совместно используемая кэш-память (не показана) может содержаться в каждом процессоре или снаружи обоих процессоров, тем не менее, она связана с процессорами с помощью соединения Р-Р, так что информация локальной кэш-памяти любого процессора или обоих процессоров может быть сохранена в совместно используемой кэш-памяти, если процессор находится в режиме низкого энергопотребления.
Набор 2190 микросхем может быть соединен с первой шиной 2116 с помощью интерфейса 2196. В одном варианте осуществления изобретения первая шина 2116 может быть шиной соединения (PCI) периферийных компонентов или такой шиной, как шина PCI Express, или другой соединительной шиной ввода/вывода третьего поколения, хотя объем настоящего изобретения этим не ограничен.
Как показано на фиг. 21, различные устройства 2114 ввода/вывода могут быть связаны с первой шиной 2116 вместе с мостом 2118 шин, который связывает первую шину 2116 и вторую шину 2120. В одном варианте осуществления изобретения один или несколько дополнительных процессоров 2115, таких как сопроцессоры, высокопроизводительные MIC процессоры, GPGPU, устройства ускорения (такие как, например, графические устройства ускорения или блоки цифровой сигнальной обработки (DSP)), программируемые пользователем вентильные матрицы или любой другой процессор, соединены с первой шиной 2116. В одном варианте осуществления изобретения вторая шина 2120 может быть шиной (LPC) с малым числом контактов. Различные устройства могут быть связаны со второй шиной 2120, в том числе, например, клавиатура и/или мышь 2122, устройства 2127 связи и блок 2128 хранения, такой как дисковый привод или другие устройства хранения большой емкости, которые могут содержать команды/код и данные 2130, в одном варианте осуществления изобретения. Далее, устройство 2120 ввода/вывода звука может быть соединено со второй шиной 2120. Заметим, что возможны другие архитектуры. Например, вместо архитектуры точка-точка с фиг. 21, система может реализовывать многоточечную шину или другую такую архитектуру.
На фиг. 22 показана структурная схема второго более конкретного примера системы 2200, в соответствии с одним вариантом осуществления настоящего изобретения. Аналогичные элементы на фиг. 21 и 22 обозначены одинаковыми ссылочными позициями и некоторые аспекты с фиг. 21 опущены на фиг. 22 чтобы не мешать пониманию других аспектов фиг. 22.
На фиг. 22 показано, что процессоры 2170, 2180 могут содержать соответственно объединенные логические схемы 2172 и 2182 управления («CL») памятью и вводом/выводом. Таким образом, CL 2172, 2182 содержат блоки контролеров интегрированной памяти и содержат логическую схему управления вводом/выводом. На фиг. 22 показано, что не только памяти 2132, 2134 связаны с CL 2172, 2182, но также устройства 2214 ввода/вывода также связаны с логической схемой 2172, 2182 управления. Существующие устройства 2215 ввода/вывода связаны с набором 2190 микросхем.
На фиг. 23 показана структурная схема SoC 2300, в соответствии с одним вариантом осуществления изобретения. Аналогичные элементы на фиг. 19 обозначены одинаковыми ссылочными позициями. Также ячейки из пунктирных линий являются необязательными признаками для более совершенных SoC. На фиг. 23 блок (блоки) 2302 соединения связаны с: процессором 2310 приложений, который содержит набор из одного или нескольких ядер 202A-N и совместно используемые блоки 1906 кэш-памяти; блоком 1910 системного агента; блоком (блоками) 1916 контроллера шины; блоком (блоками) 1914 контроллера интегрированной памяти; набором или одним или несколькими сопроцессорами 2320, которые могут содержать логическую схему интегрированной графики, процессор изображений, звуковой процессор и видео процессор; блоком 2330 статического оперативного запоминающего устройства (SRAM); блоком 2332 прямого Доступа (DMA) к памяти; и блоком 2340 отображения для связи с одним или несколькими внешними дисплеями. В одном варианте осуществления изобретения сопроцессор (сопроцессоры) 2320 содержат процессор специального назначения, такой как, например, сетевой процессор или процессор связи, устройство сжатия, GPGPU, высокопроизводительный MIC процессор, встроенный процессор или подобное.
Варианты осуществления описанных в настоящем документе механизмов могут быть реализованы с помощью аппаратного обеспечения, аппаратнореализованного программного обеспечения, программного обеспечения или с помощью любой комбинации таких подходов к реализации. Варианты осуществления настоящего изобретения могут быть реализованы как компьютерные программы или программный код, исполняемый на программируемых системах, содержащих, по меньшей мере, один процессор, систему хранения (содержащую энергозависимую и энергонезависимую память и/или элементы хранения), по меньшей мере, одно устройство ввода и, по меньшей мере, одно устройство вывода.
Программный код, такой как код 2130, показанный на фиг. 21, может быть применен для ввода команд с целью выполнения описанных в настоящем документе функций и выработки выходной информации. Выходная информация может быть, известным образом, применена в одном или нескольких устройствах вывода. Для целей этой заявки, система обработки содержит любую систему, которая содержит процессор, такой как, например, цифровой сигнальный процессор (DSP), микроконтроллер, специализированную интегральную схему (ASIC) или микропроцессор.
Программный код может быть реализован на процедурном или объектно-ориентированном языке программирования высокого уровня с целью связи с системой обработки. Программный код также, при желании, может быть реализован на ассемблере или машинном языке. Фактически, описанные в настоящем документе механизмы не ограничены каким-либо конкретным языком программирования. В любом случае язык может быть компилируемым или интерпретируемым языком.
Один или несколько аспектов, по меньшей мере, одного варианта осуществления изобретения могут быть реализованы с помощью типовых команд, хранящихся на считываемом машиной носителе и представляющих различные логические операции в процессоре, которые при считывании машиной побуждают машину формировать логические операции для осуществления описанных здесь технологий. Такие представления, известные как «IP ядра» могут храниться на материальном считываемом машиной носителе и подаваться различным клиентам или производственным предприятиям для загрузки на производственные машины, которые фактически делают логические схемы или процессор.
Такой считываемый машиной носитель информации может содержать, без ограничения, долговременные, материальные конструкции из изделий или могут быть сформированы машиной или устройством, содержащим носитель информации, такой как жесткие диски, диск любого другого типа, в том числе гибкие диски, оптические диски, компакт-диски (CD-ROM) постоянных запоминающих устройств, перезаписываемые компакт-диски (CD-RW) и магнитооптические диски, полупроводниковые устройства, такие как постоянные запоминающие устройства (ROM), оперативные запоминающие устройства (RAM), такие как динамические оперативные запоминающие устройства (DRAM), статические оперативные запоминающие устройства (SRAM), стираемые программируемые постоянные запоминающие устройства (EPROM), флэш-памяти, электрически стираемые программируемые постоянные запоминающие устройства (EEPROM), памяти (PCM) на фазовых переходах, магнитные или оптические карты или любой другой тип носителя, подходящий для хранения электронных команд.
Соответственно, варианты осуществления изобретения также содержат долговременный, материальный считываемый машиной носитель, содержащий команды или содержащий данные для проектирования, такие как язык (HDL) описания аппаратных средств, которые определяют структуры, схемы устройства, процессоры и/или системные признаки, описанные в настоящем документе. Такие варианты осуществления изобретения также могут называться программными продуктами.
Эмуляция (в том числе двоичная трансляция, трансформация кода и так далее)
В некоторых случаях, устройство преобразования команд может быть использовано для преобразования команды из исходного набора команд в целевой набор команд. Например, устройство преобразования команд может транслировать (например, с использованием статической двоичной трансляции, динамической двоичной трансляции, в том числе динамической компиляции), трансформировать, эмулировать или другим образом преобразовывать команду в одну или несколько других команд, подлежащих обработке ядром. Устройство преобразования команд может быть реализовано с помощью аппаратного обеспечения, аппаратнореализованного программного обеспечения, программного обеспечения или с помощью любой комбинации перечисленного. Устройство преобразования команд может быть расположено на процессоре, не на процессоре, или частично на процессоре и частично не на процессоре.
На фиг. 24 показана структурная схема, показывающая использование программного устройства преобразования команд для преобразования двоичных команд исходного набора команд в двоичные команды целевого набора команд, в соответствии с вариантами осуществления изобретения. В показанном варианте осуществления изобретения устройство преобразования команд является программным устройством преобразования команд, хотя, в качестве альтернативы, устройство преобразования команд может быть реализовано как программное обеспечение, аппаратное обеспечение, аппаратнореализованное программное обеспечение или различные комбинации перечисленного. На фиг. 24 показана программа на языке 2402 высокого уровня, которая может быть скомпилирована с использованием компилятора 2402 х86 с целью выработки двоичного кода 2406 х86, который может быть естественным образом исполнен процессором, содержащим, по меньшей мере, одно ядро 2416 с набором х86 команд. Процессор, содержащий, по меньшей мере, одно ядро 2416 с набором х86 команд, представляет собой любой процессор, который может осуществлять, по существу, те же функции, что и процессор компании Intel, содержащий, по меньшей мере, одно ядро с набором х86 команд, путем совместимого исполнения или другой обработки (1) существенной части набора команд ядра с набором Intel х86 команд или (2) версий объектного кода приложений или другого программного обеспечения, направленного на работу процессора Intel, содержащего, по меньшей мере, одно ядро с набором х86 команд, с целью достижения, по существу, того же результата, что и процессор Intel, содержащий, по меньшей мере, одно ядро с набором х86 команд. Компилятор 2404 х86 представляет собой компилятор, который выполнен для выработки двоичного кода 2406 х86 (например, объектного кода), который может быть, с дополнительной компоновочной обработкой или без нее, исполнен процессором, по меньшей мере, с одним ядром 2416 набора х86 команд. Аналогично, на фиг. 24 показано, что программа на языке 2402 высокого уровня может быть скомпилирована с использованием компилятора 2408 с альтернативным набором команд с целью выработки двоичного кода 2410 альтернативного набора команд, который может быть естественным образом исполнен процессором 2414, не содержащим, по меньшей мере, одно ядро с набором х86 команд (например, процессор с ядрами, которые исполняют набор команд MIPS компании MIPS Technologies, Саннивейл, Калифорния, и/или которые исполняют набор команд компании ARM Holdings, Саннивейл, Калифорния). Устройство 2412 преобразования команд используют для преобразования двоичного кода 2406 х86 в код, который может быть естественным образом исполнен процессором 2414 без ядра с набором х86 команд. Этот преобразованный код, с большой вероятностью, не совпадает с кодом 2410 альтернативного набора команд, так как трудно сделать способное к этому устройство преобразования команд; тем не менее, преобразованный код будет реализовывать общую операцию и будет состоять из команд альтернативного набора команд. Таким образом, устройство 2412 преобразования команд представляет собой программное обеспечение, аппаратнореализованное программное обеспечение, аппаратное обеспечение или комбинации перечисленного, которое с помощью эмулирования, моделирования и любой другой обработки позволяет процессору или другому электронному устройству, не содержащему процессора или ядра с набором команд х86, исполнять двоичный код 2406 х86.
Компоненты, признаки и подробности, описанные для любой из фиг. 3-13 также, при желании, могут быть использованы для любой из фиг. 1-2. Более того, описанные в настоящем документе компоненты, признаки и подробности для любого описанного в настоящем документе устройства также могут быть, при желании, использованы и/или применены в любом описанном в настоящем документе способе, который в вариантах осуществления изобретения может быть осуществлен таким устройством и/или осуществлен с таким устройством. Любой описанный в настоящем документе процессор может содержаться в любой описанной в настоящем документе вычислительной системе или других системах. В некоторых вариантах осуществления изобретения команды могут быть закодированы с использованием признаков и подробностей, приведенных для описанных в настоящем документе форматов команд (например, VEX, EVEX и так далее), хотя объем изобретения этим не ограничен.
В описании и формуле изобретения могут быть использованы термины «связанный» и/или «соединенный», а также их производные. Надо понимать, что эти термины не являются синонимами. Пожалуй, в вариантах осуществления изобретения слово «соединенный» может быть использовано для указания того, что два или несколько элементов находятся в прямом физическом или электрическом контакте друг с другом. Слово «связанный» может означать, что два или несколько элементов находятся в прямом физическом или электрическом контакте друг с другом. Тем не менее, термин «связанный» также может означать то, что два или несколько элементов не находятся в прямом контакте друг с другом, но все еще взаимодействуют друг с другом или влияют друг на друга. Например, блок исполнения может быть связан с регистром и/или блоком декодирования с помощью одного или нескольких промежуточных компонентов. На фиг. стрелки используют для показа соединений и связей.
Может быть использован термин «и/или». В настоящем документе термин «и/или» означает одно или другое или оба (например, А и/или В означает А или В, или и А и В).
В приведенном выше описании для обеспечения глубокого понимания вариантов осуществления изобретения рассмотрено большое количество конкретных подробностей. Тем не менее, другие варианты осуществления изобретения могут быть реализованы без некоторых из этих конкретных подробностей. Объем изобретения не определяется приведенными выше конкретными примерами, а определяется только приведенной ниже формулой изобретения. В других примерах, хорошо известные схемы, структуры, устройства и операции показаны в форме структурной схемы и/или без подробностей, чтобы не мешать пониманию описания. Когда уместно, ссылочные позиции или конечные части ссылочных позиций повторены на фиг. для указания соответствующих или аналогичных элементов, которые, при желании, могут обладать аналогичными или одинаковыми характеристиками, если не оговорено или ясно указано обратное. Описаны различные операции и способы. Некоторые способы описаны на схемах последовательностей операций в сравнительно базовой форме, но в этих способах, при желании, могут быть добавлены операции и/или могут быть исключены операции.
Определенные операции могут быть выполнены аппаратными компонентами или оно могут быть встроены в исполнимые машиной или исполнимые схемами команды, которые могут быть использованы для работы и/или получения результата машиной, схемой или аппаратным компонентом (например, процессором, частью процессора, схемой и так далее), запрограммированным с помощью команд, выполняющих операции. Операции также, при желании, могут быть осуществлены комбинацией аппаратного и программного обеспечения. Процессор, машина, схема или аппаратное обеспечение могут содержать конкретную или специфическую схему, или другую логическую схему (например, аппаратное обеспечение, потенциально объединяемое с аппаратнореализованным программным обеспечением и/или программным обеспечением), которые выполнены для исполнения и/или обработки команд и сохранения результата в ответ на команду.
Некоторые варианты осуществления изобретения содержат изделие (например, компьютерный программный продукт), содержащее считываемый машиной носитель. Носитель может содержать механизм, который обеспечивает, например, хранение информации в форме, которая может быть считана машиной. Считываемый машиной носитель может предоставлять или хранить команду, или последовательность команд, при исполнении машиной которых и/или при условии исполнения которых машина осуществляет одну или несколько описанных в настоящем документе операций, способов или технологий. Считываемый машиной носитель может хранить или другим образом предоставлять один или несколько вариантов осуществления описанных в настоящем документе команд.
В. некоторых вариантах осуществления изобретения считываемый машиной носитель может содержать материальный и/или энергонезависимый считываемый машиной носитель информации. Например, материальный и/или энергонезависимый считываемый машиной носитель информации может содержать флоппи-диск, оптический носитель информации, оптический диск, оптическое устройство хранения данных, CD-ROM, магнитный диск, магнитнооптический диск, постоянное запоминающее устройство (ROM), программируемое ROM (PROM), стираемое и программируемое ROM (EPROM), электрически стираемое и программируемое ROM (EEPROM), оперативное запоминающее устройство (RAM), статическое RAM (SRAM), динамическое RAM (DRAM), флеш-память, память на фазовых переходах, устройство хранения данных на фазовых переходах, энергонезависимую память, энергонезависимое устройство хранения данных, долговременную память, долговременное устройство хранения данных и подобное. Энергонезависимый считываемый машиной носитель информации не состоит из кратковременного распространяющегося сигнала. В другом варианте осуществления изобретения считываемой машиной носитель может содержать кратковременную считываемую машиной среду связи, например, электрические, оптические, звуковые или другие формы распространяющихся сигналов, таких как, волны несущих частот, инфракрасные сигналы, цифровые сигналы и подобное.
Примерами подходящих машин являются, помимо прочего, процессор общего назначения, процессор специального назначения, устройство обработки команд, цифровая логическая схема, интегральная схема и подобное. Еще примерами подходящих машин являются вычислительное устройство или другое электронное устройство, которое содержит процессор, устройство обработки команд, цифровую логическую схему или интегральную схему. Примерами таких вычислительных устройств и электронных устройств являются, помимо прочего, настольные компьютеры, лэптопы, ноутбуки, планшетные компьютеры, нетбуки, смартфоны, сотовые телефоны, серверы, сетевые устройства (например, маршрутизаторы и коммутаторы), мобильные интернет-устройства (MID), медиа плееры, умные телевизоры, неттопы, телевизионные приставки и контроллеры видео игр.
Ссылки в этом описании, например, на «один вариант осуществления изобретения», «вариант осуществления изобретения», «один или несколько вариантов осуществления изобретения», «некоторые варианты осуществления изобретения» указывают, что конкретный признак может содержаться в реализации изобретения, но это не обязательно. Аналогично, в описании различные признаки иногда сгруппированы вместе в одном варианте осуществления изобретения, чертеже или описании изобретения, что сделано с целью упрощения описания, для помощи в понимании различных аспектов изобретения. Тем не менее, этот способ описания не нужно интерпретировать как отражающий изобретение, что изобретение требует больше признаков, чем точно перечислено в каждом пункте формулы изобретения. В отличие от сказанного, как отражает приведенная ниже формула изобретения, аспекты изобретения расположены не во всех признаках единственного варианта осуществления изобретения. Таким образом, формула изобретения, следующая за подробным описанием, настоящим включается в состав этого подробного описания, при этом каждый пункт формулы изобретения рассматривается сам по себе, как отдельный вариант осуществления настоящего изобретения.
Примеры вариантов осуществления изобретения
Приведенные ниже примеры касаются дополнительных вариантов осуществления изобретения. Конкретные детали примеров могут быть использованы в любом месте одного или нескольких вариантов осуществления изобретения.
Пример 1 является процессором, содержащим множество регистров и блок декодирования для декодирования команды сложения трех источников с плавающей запятой. Команда сложения трех источников с плавающей запятой должна указывать первый операнд-источник, который должен содержать, по меньшей мере, первый элемент данных с плавающей запятой, указывать второй операнд-источник, который должен содержать, по меньшей мере, второй элемент данных с плавающей запятой, и указывать третий операнд-источник, который должен содержать, по меньшей мере, третий элемент данных с плавающей запятой. Блок исполнения связан с множеством регистров и блоком декодирования. Блок исполнения, в ответ на команду сложения трех источников с плавающей запятой, должен сохранять результат в операнде-назначении, который должен быть указан командой сложения трех источников с плавающей запятой. Результат должен содержать, по меньшей мере, результирующий элемент данных с плавающей запятой, который должен соответствовать первому, второму и третьему элементам данных с плавающей запятой. Результирующий элемент данных с плавающей запятой должен содержать первую округленную сумму с плавающей запятой. Первая округленная сумма с плавающей запятой должна представлять собой алгебраическую сумму второй округленной суммы с плавающей запятой и третьего элемента данных с плавающей запятой. Вторая округленная сумма с плавающей запятой должна представлять собой алгебраическую сумму первого элемента данных с плавающей запятой и второго элемента данных с плавающей запятой.
Пример 2 содержит процессор из примера 1, в котором блок декодирования должен декодировать команду сложения трех источников с плавающей запятой, которая должна содержать: первый бит для определения, должны ли быть взяты с обратным знаком все из одного или нескольких элементов данных с плавающей запятой первого операнда-источника; второй бит для определения, должны ли быть взяты с обратным знаком все из одного или нескольких элементов данных с плавающей запятой второго операнда-источника; и третий бит для определения, должны ли быть взяты с обратным знаком все из одного или нескольких элементов данных с плавающей запятой третьего операнда-источника.
Пример 3 содержит процессор из примера 2, в котором первый, второй и третий биты содержат биты непосредственного значения команды сложения трех источников с плавающей запятой.
Пример 4 содержит процессор из примера 1, в котором блок декодирования должен декодировать команду сложения трех источников с плавающей запятой, которая должна определять, должны ли быть взяты с обратным знаком все из одного или нескольких элементов данных с плавающей запятой первого операнда-источника.
Пример 5 содержит процессор из примера 4, в котором блок декодирования должен декодировать команду сложения трех источников с плавающей запятой, которая должна определять, должны ли быть взяты с обратным знаком все из одного или нескольких элементов данных с плавающей запятой второго операнда-источника.
Пример 6 содержит процессор из примера 5, в котором блок декодирования должен декодировать команду сложения трех источников с плавающей запятой, которая должна определять, должны ли быть взяты с обратным знаком все из одного или нескольких элементов данных с плавающей запятой третьего операнда-источника.
Пример 7 содержит процессор из любого примера 1-6, в котором блок декодирования должен декодировать команду сложения трех источников с плавающей запятой, которая должна указывать первый, второй и третий операнды-источники, которые, соответственно, должны содержать первый, второй и третий элементы данных с плавающей запятой как скалярные элементы данных, каждый из которых должен быть сохранен в соответствующем регистре упакованных данных, который также должен быть способен в разные моменты времени сохранять упакованные данные. Также команда сложения трех источников с плавающей запятой должна указывать исходную маску наложения логического условия, которая должна содержать элемент маски, который должен соответствовать и должен накладывать логическое условие на операцию команды сложения трех источников с плавающей запятой для первого, второго и третьего элементов данных с плавающей запятой.
Пример 8 содержит процессор из любого примера 1-6, в котором блок декодирования должен декодировать команду сложения трех источников с плавающей запятой, которая должна указывать первый, второй и третий операнды-источники, которые, соответственно, должны содержать первое множество упакованных элементов данных, которое должно содержать первый элемент данных с плавающей запятой, второе множество упакованных элементов данных, которое должно содержать второй элемент данных с плавающей запятой, и третье множество упакованных элементов данных, которое должно содержать третий элемент данных с плавающей запятой.
Пример 9 содержит процессор из примера 8, в котором блок декодирования должен декодировать команду сложения трех источников с плавающей запятой, которая должна указывать маску операции с исходными упакованными данными, которая должна содержать множество элементов маски. Каждый из элементов маски должен соответствовать и налагать логическое условие на операцию с упакованными данными команды сложения трех источников с плавающей запятой для соответствующих элементов данных с плавающей запятой первого, второго и третьего операндов-источников.
Пример 10 содержит процессор из любого примера 1-6, в котором блок исполнения должен использовать режим округления для первой и второй округленных сумм с плавающей запятой, который должен быть одним из следующего: (1) округление до ближайшего четного; (2) округление в меньшую сторону к отрицательной бесконечности; (3) округление в большую сторону к положительной бесконечности; и (4) округление в сторону нуля с отбрасыванием. Блок декодирования также должен декодировать команду сложения трех источников с плавающей запятой, которая должна определять режим округления. Также, при желании, команда должна определять режим округления, переопределяющий режим округления в регистре управления плавающей запятой процессора.
Пример 11 содержит процессор из любого примера 1-6, в котором блок исполнения содержит первое суммирующее устройство для чисел с плавающей запятой, связанное для приема первого и второго элементов данных с плавающей запятой и для вывода второй округленной суммы с плавающей запятой. Блок исполнения также содержит второе суммирующее устройство для чисел с плавающей запятой, связанное для приема третьего элемента данных с плавающей запятой и второй округленной суммы с плавающей запятой, второе суммирующее устройство для чисел с плавающей запятой должно выводить первую округленную сумму с плавающей запятой.
Пример 12 содержит процессор из примера 11, дополнительно содержащий резервирующую станцию и буфер, связанный со резервирующей станцией. Буфер должен принимать сигнал управления, соответствующий команде сложения трех источников с плавающей запятой, из резервирующей станции и должен сохранять сигнал управления в течение некоторого промежутка времени, пока первое суммирующее устройство для чисел с плавающей запятой должно выработать вторую округленную сумму с плавающей запятой. Буфер связан со вторым суммирующим устройством для чисел с плавающей запятой для предоставления сигнала управления на второе суммирующее устройство для чисел с плавающей запятой после указанного промежутка времени.
Пример 13 содержит процессор из любого примера 1-6, в котором блок исполнения содержит выход, вход и схему, связывающую выход с входом.
Пример 14 содержит процессор из любого примера 1-6, в котором блок декодирования должен декодировать команду сложения трех источников с плавающей запятой, которая должна содержать EVEX кодирование, в котором третий операнд-источник должен быть закодирован в reg_field. Также, при желании, в котором первый операнд-источник закодирован в VEX.vvvv. Также, при желании, в котором второй операнд-источник закодирован с использованием одной части из восьми бит непосредственного значения и rm_field.
Пример 15 является способов в процессоре, способ включает в себя следующее: принимают команду сложения трех источников с плавающей запятой. Команда сложения трех источников с плавающей запятой указывает первый операнд-источник, содержащий, по меньшей мере, первый элемент данных с плавающей запятой, указывает второй операнд-источник, содержащий, по меньшей мере, второй элемент данных с плавающей запятой, и указывает третий операнд-источник, содержащий, по меньшей мере, третий элемент данных с плавающей запятой. Способ также включает в себя следующее: сохраняют результат в операнде-назначении, в ответ на команду сложения трех источников с плавающей запятой. Операнд-назначение указан в команде сложения трех источников с плавающей запятой. Результат содержит, по меньшей мере, результирующий элемент данных с плавающей запятой, который соответствует первому, второму и третьему элементам данных с плавающей запятой. Результирующий элемент данных с плавающей запятой содержит первую округленную сумму с плавающей запятой. Первая округленная сумма с плавающей запятой представляет собой алгебраическую сумму второй округленной суммы с плавающей запятой и третьего элемента данных с плавающей запятой. Вторая округленная сумма с плавающей запятой представляет собой алгебраическую сумму первого элемента данных с плавающей запятой и второго элемента данных с плавающей запятой.
Пример 16 содержит способ из примера 15, в котором прием включает в себя следующее: принимают команду сложения трех источников с плавающей запятой, которая определяет, должны ли быть взяты с обратным знаком все из одного или нескольких элементов данных с плавающей запятой первого операнда-источника. При желании, команда также определяет, должны ли быть взяты с обратным знаком все из одного или нескольких элементов данных с плавающей запятой второго операнда-источника.
Пример 17 содержит способ из примера 15, в котором прием включает в себя следующее: принимают команду сложения трех источников с плавающей запятой, которая определяет режим округления, который используют для первой и второй округленных сумм с плавающей запятой.
Пример 18 содержит способ из примера 15, в котором прием включает в себя следующее: принимают команду сложения трех источников с плавающей запятой, которая указывает первый, второй и третий операнды-источники, которые, соответственно, содержат первый, второй и третий элементы данных с плавающей запятой как скалярные элементы данных, каждый из которых хранится в соответствующем регистре упакованных данных. Команда сложения трех источников с плавающей запятой может также, при желании, указывать исходную маску наложения логического условия.
Пример 19 является системой для обработки команд, содержащей соединение и процессор, связанный с этим соединением. Процессор должен принять команду сложения трех источников с плавающей запятой. Команда сложения трех источников с плавающей запятой должна указывать первый операнд-источник, который должен содержать, по меньшей мере, первый элемент данных с плавающей запятой, указывать второй операнд-источник, который должен содержать, по меньшей мере, второй элемент данных с плавающей запятой, и указывать третий операнд-источник, который должен содержать, по меньшей мере, третий элемент данных с плавающей запятой. Процессор, в ответ на команду сложения трех источников с плавающей запятой, должен сохранять результат в операнде-назначении, который должен быть указан командой сложения трех источников с плавающей запятой. Результат должен содержать, по меньшей мере, результирующий элемент данных с плавающей запятой, который должен соответствовать первому, второму и третьему элементам данных с плавающей запятой. Результирующий элемент данных с плавающей запятой должен содержать первую округленную сумму с плавающей запятой. Первая округленная сумма с плавающей запятой должна представлять собой алгебраическую сумму второй округленной суммы с плавающей запятой и третьего элемента данных с плавающей запятой. Вторая округленная сумма с плавающей запятой должна представлять собой алгебраическую сумму первого элемента данных с плавающей запятой и второго элемента данных с плавающей запятой. Система также, при желании, содержит динамическое оперативное запоминающее устройство (DRAM), связанное с упомянутым соединением.
Пример 20 содержит систему из примера 19, в которой команда сложения трех источников с плавающей запятой должна определять, должны ли быть взяты с обратным знаком все из одного или нескольких элементов данных с плавающей запятой первого операнда-источника.
Пример 21 содержит изделие, содержащее считываемый машиной носитель, который, при желании, может быть энергонезависимым считываемым машиной носителем информации. Носитель сохраняет команду сложения трех источников с плавающей запятой. Команда сложения трех источников с плавающей запятой должна указывать первый операнд-источник, который должен содержать, по меньшей мере, первый элемент данных с плавающей запятой, указывать второй операнд-источник, который должен содержать, по меньшей мере, второй элемент данных с плавающей запятой, и указывать третий операнд-источник, который должен содержать, по меньшей мере, третий элемент данных с плавающей запятой. Команда сложения трех источников с плавающей запятой, при исполнении машиной должна побуждать машину выполнять операции, в том числе сохранение результата в операнде-назначении, в ответ на команду сложения трех источников с плавающей запятой. Операнд-назначение должен быть указан в команде сложения трех источников с плавающей запятой. Результат должен содержать, по меньшей мере, результирующий элемент данных с плавающей запятой, который должен соответствовать первому, второму и третьему элементам данных с плавающей запятой. Результирующий элемент данных с плавающей запятой должен содержать первую округленную сумму с плавающей запятой, при этом первая округленная сумма с плавающей запятой должна представлять собой алгебраическую сумму второй округленной суммы с плавающей запятой и третьего элемента данных с плавающей запятой. Вторая округленная сумма с плавающей запятой должна представлять собой алгебраическую сумму первого элемента данных с плавающей запятой и второго элемента данных с плавающей запятой.
Пример 22 содержит изделие из примера 21, в котором команда сложения трех источников с плавающей запятой должна определять, должны ли быть взяты с обратным знаком все из одного или нескольких элементов данных с плавающей запятой первого операнда-источника.
Пример 23 является процессором, содержащим множество регистров и блок декодирования для декодирования команды сложения трех источников с плавающей запятой. Команда сложения трех источников с плавающей запятой должна указывать первый операнд-источник, который должен содержать, по меньшей мере, первый элемент данных с плавающей запятой, указывать второй операнд-источник, который должен содержать, по меньшей мере, второй элемент данных с плавающей запятой, и указывать третий операнд-источник, который должен содержать, по меньшей мере, третий элемент данных с плавающей запятой. Команда также, при желании, должна содержать первый бит для определения, должны ли быть взяты с обратным знаком все из одного или нескольких элементов данных с плавающей запятой первого операнда-источника, и/или содержать второй бит для определения, должны ли быть взяты с обратным знаком все из одного или нескольких элементов данных с плавающей запятой второго операнда-источника. Блок исполнения связан с множеством регистров и блоком декодирования. Блок исполнения, в ответ на команду сложения трех источников с плавающей запятой, должен сохранять результат в операнде-назначении, который должен быть указан командой сложения трех источников с плавающей запятой. Результат должен содержать, по меньшей мере, результирующий элемент данных с плавающей запятой, который должен соответствовать первому, второму и третьему элементам данных с плавающей запятой. Результирующий элемент данных с плавающей запятой должен содержать округленную сумму с плавающей запятой, которая должна представлять собой алгебраическую сумму первого, второго и третьего элементов данных с плавающей запятой.
Пример 24 содержит процессор из примера 23, в котором округленная сумма с плавающей запятой должна представлять собой алгебраическую сумму другой округленной суммы с плавающей запятой.
Пример 25 содержит процессор или другое устройство, которое выполнено для осуществления способа из любого примера 15-18.
Пример 26 содержит процессор или другое устройство, которое содержит средство осуществления способа из любого примера 15-18.
Пример 27 содержит процессор, который содержит модули, блоки, логическую схему, схему, средство или любую комбинацию перечисленного для осуществления способа из любого примера 15-18.
Пример 28 содержит вычислительную систему или другое электронное устройство, содержащее соединение, процессор, связанный с этим соединением, и, по меньшей мере, один компонент, связанный с этим соединением и выбранный из DRAM, графической микросхемы, микросхемы беспроводной связи, памяти на фазовых переходах и видеокамеры, при этом вычислительная система или другое электронное устройство должны осуществлять способ из любого примера 15-18.
Пример 29 содержит считываемый машиной носитель, который, при желании, является энергонезависимым считываемым машиной носителем информации, который, при желании, сохраняет или другим образом предоставляет команду, которая при исполнении процессором, вычислительной системой или другой машиной выполнена для побуждения машины осуществлять способ из любого примера 15-18.
Пример 30 содержит процессор или другое устройство, которые выполнены для осуществления одной или нескольких операций или любого способа, которые, по существу, описаны в настоящем документе.
Пример 31 содержит процессор или другое устройство, которые содержат средство для осуществления одной или нескольких операций или любого способа, которые, по существу, описаны в настоящем документе.
Пример 32 содержит процессор или другое устройство, которые выполнены для осуществления любой команды, которая, по существу, описана в настоящем документе.
Пример 33 содержит процессор или другое устройство, которые содержат средство для осуществления любой команды, которая, по существу, описана в настоящем документе.
Пример 34 содержит способ, который включает в себя следующее: преобразуют первую команду, которая может быть любой командой, которая, по существу, описана в настоящем документе, и которая принадлежит первому набору команд, в одну или несколько команд второго набора команд. Способ также включает в себя следующее: декодируют и исполняют с помощью процессора одну или несколько команд второго набора команд. Исполнение включает в себя следующее: сохраняют результат в месте назначения. Результат может содержать любой результат, по существу, описанный в настоящем документе для первой команды.
Пример 35 содержит процессор или другое устройство, которые содержат блок декодирования, выполненный для декодирования команд первого набора команд. Блок декодирования должен принимать одну или несколько команд, которые эмулируют первую команду, которая может быть любой описанной в настоящем документе командой и которая должна принадлежать второму набору команд. Процессор или другое устройство также содержат один или несколько блоков исполнения, связанных с блоком декодирования с целью исполнения одной или нескольких команд первого набора команд. Один или несколько блоков исполнения, в ответ на одну или несколько команд первого набора команд, выполнены для сохранения результата в месте назначения. Результат может содержать любой результат, по существу, описанный в настоящем документе для первой команды.
Пример 36 содержит вычислительную систему или другое электронное устройство, которые содержат процессор, содержащий блок декодирования, выполненный для декодирования команд первого набора команд, и содержащий один или несколько блоков исполнения. Вычислительная система также содержит устройство хранения, связанное с процессором. Устройство хранения должно хранить первую команду, которая может быть любой описанной в настоящем документе командой и которая должна принадлежать второму набору команд. Устройство хранения также должно сохранять команды для преобразования первой команды в одну или несколько команд первого набора команд. Одна или несколько команд первого набора команд, при исполнении процессором, выполнены для побуждения процессора сохранять результат в месте назначения. Результат может содержать любой результат, по существу, описанный в настоящем документе для первой команды.