Эффективная параллельная обработка исключения с плавающей запятой в процессоре

Иллюстрации

Показать все

Изобретение относится к способу и устройствам для обработки исключения с плавающей запятой в процессоре, который выполняет инструкции с одним потоком команд и множеством потоков данных (ОКМД). Техническим результатом является повышение быстродействия при использовании денормализованных чисел. В способе: числовые исключения идентифицированы для операции с плавающей запятой ОКМД, и микрооперации ОКМД инициируют для генерирования двух пакетных частичных результатов пакетного результата для операции с плавающей запятой ОКМД. Микрооперацию денормализации ОКМД инициируют для комбинирования двух пакетных частичных результатов и для денормализации одного или больше элементов комбинированных пакетных частичных результатов, для генерирования пакетного результата для операции с плавающей запятой ОКМД, имеющей один или больше денормализованных элементов. Флаги устанавливают и сохраняют с пакетными частичными результатами для идентификации денормализованных элементов. 4 н. и 18 з.п. ф-лы, 9 ил., 1 табл.

Реферат

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

Данное изобретение, в общем, относится к области микропроцессоров. В частности, изобретение относится к эффективным методикам обработки исключения с плавающей запятой в процессоре, который выполняет инструкции типа один поток команд - много потоков данных (SIMD, ОКМД).

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

В стандарте IEEE (Институт инженеров по электротехнике и радиоэлектронике) для арифметики с плавающей запятой (IEEE 754) определяют, как числа с плавающей запятой одиночной точности (32 бита), двойной точности (64 бита)), одиночной расширенной точности (≥43 битов, не имеет общего применения) и двойной расширенной точности (≥79 битов, обычно воплощены с 80 битами) должны быть представлены (включая в себя отрицательное значение нуля, денормализованные числа, бесконечности и NaN (не числа)), а также как следует выполнять арифметические правила с ними. Только 32-битные значения требуются в соответствии со стандартом; другие являются не обязательными. Здесь также описаны четыре режима округления и пять исключений (включающие в себя, когда возникают исключения, и что происходит, когда они действительно возникают).

Показатели степени смещены на (2е-1)-1, где e представляет собой количество битов, используемое для поля показателей степени. Например, числа с одиночной точностью имеют 8-битный показатель степени, и поэтому его показатель степени сохраняют с 27-1=127 битами, добавленными к нему, также называется "смещенным на 127". Нормальные показатели степени с одиночной точностью находятся в пределах от -126 до 127. Показатель степени 128 зарезервирован для идентификации плюса или минуса. Показатель степени -127 (все нули) зарезервирован для нуля с плюсом или минусом (или для денормализованных чисел, но в случае денормализованных чисел используемое смещение составляет (2е-1)-2, то есть 126, а не 127, поскольку предполагается, что старший значащий бит мантиссы равен нулю, а не единице). Некоторые примеры представлений с одиночной точностью с плавающей запятой представлены в таблице.

Нормальное число с плавающей запятой имеет значение ν=s×2е×m, где s, e и m определены как

s=+1 (положительные числа и +0), когда бит знака равен 0

s=-1 (отрицательные числа и -0), когда бит знака равен 1

е = показатель степени - смещение (то есть показатель степени сохраняется со смещением, добавленным к нему)

m=1, дробная часть двоичного числа (то есть мантисса или значащая часть числа представляет собой неявно заданное значение 1 ведущего бита, после чего следует запятая, после которой следуют двоичные биты дробной части). Таким образом, 1≤m<2.

Денормализованное число (также называемое денормализованным числом, или поднормальным числом) представляет собой число, меньшее (в абсолютном значении), чем наименьшее нормальное число, но все еще не равное нулю. Получение денормализованного числа иногда называют постепенной потерей значимости, поскольку оно позволяет плавно рассчитывать медленную потерю точности при малом результате. Денормализованные числа воплощены в сопроцессорах с плавающей запятой Intel 8087 в то время, когда писали стандарт IEEE 754. Такое воплощение продемонстрировало, что денормализованные числа могут поддерживаться в практическом воплощении.

В нормальном представлении с плавающей запятой предполагается, что ведущая двоичная цифра мантиссы равна 1. Поскольку известно, что она равна 1, ведущая двоичная цифра мантиссы в некоторых представлениях с плавающей запятой может быть исключена и значение показателя степени может быть соответствующим образом отрегулировано. Денормализованные значения представляют собой такие значения, которые нельзя представить в нормализованной форме (то есть, имеющими наименьший возможный показатель степени с мантиссой, не равной нулю). Некоторые варианты воплощения блок арифметики для операций с плавающей запятой (FPU, БПЗ) не поддерживают непосредственно денормализованные числа в аппаратных средствах, а скорее используются определенного рода программное средство или поддержка на уровне микрокода. Хотя это может быть понятно для пользователя, такой подход может привести к расчетам, которые производят или используют денормализованные числа, обработка которых выполняется намного медленнее, чем аналогичные расчеты с нормальными числами.

Современные процессоры также могут иметь инструкции, которые выполняют операции с одним потоком команд и множеством потоков данных (ОКМД) для чисел с плавающей запятой. Когда такие операции ОКМД производят или используют денормализованные числа, может быть инициировано исключение для обработки операции в программных средствах или в аппаратных средствах с помощью микрокода. Один из способов поддержки денормализованных чисел в аппаратных средствах представляет собой более широкое внутреннее представление, которое обладает достаточной точностью для того, чтобы просто обрабатывать денормализованные числа как малые нормальные числа. Например, если будет инициировано исключение, подразумевающее денормализованные числа с одиночной точностью, микрокод может преобразовать операнды обработки с одиночной точностью в нормальные операнды с двойной точностью и после этого повторно выполнить операции более широких представлений, после чего выполняется денормализация результатов и преобразование их обратно в нормальные числа с одиночной точностью. Аналогично, денормализованные числа двойной точности могут быть обработаны как нормали расширенной двойной точности. Один из недостатков состоит в том, что расчеты, которые позволяют постоянно получать или использовать денормализованные числа, выполняются значительно медленнее, чем аналогичные расчеты для нормальных чисел.

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

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

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

На фиг.1 иллюстрируются примерные форматы сохранения, предназначенные для сохранения скалярных и пакетных чисел с плавающей запятой в соответствии с IEEE.

На фиг.2 иллюстрируется один вариант воплощения системы, включающей в себя процессор, который выполняет инструкции с плавающей запятой ОКМД и использует эффективные методики для обработки исключения с плавающей запятой ОКМД.

На фиг.3 иллюстрируется один вариант воплощения процессора, который выполняет инструкции с плавающей запятой ОКМД и использует эффективные технологии, для обработки исключения с плавающей запятой ОКМД.

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

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

На фиг.6 иллюстрируется блок-схема последовательности операций для одного варианта воплощения обработки, в которой обрабатывают определенные числовые исключения в сумматоре с плавающей запятой ОКМД.

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

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

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

Раскрыты способы и устройство для обработки исключения с плавающей запятой в процессоре, который выполняет инструкции с одним потоком команд и множеством потоков данных (ОКМД). В одном варианте воплощения численное исключение идентифицируют для операции с плавающей запятой ОКМД и пару микроопераций ОКМД инициируют для генерирования двух пакетных частичных результатов пакетного результата для операции с плавающей запятой ОКМД. Численное исключение в контексте следующего раскрытия можно понимать, как включающее в себя, по меньшей мере, одно исключение, инициированное путем идентификации денормализованного входного значения или путем идентификации состояния потери значимости, которое потенциально может привести к получению в качестве результата денормализованного выходного значения и, следовательно, может потребовать содействия с помощью микрокода. Микрооперацию денормализации ОКМД инициируют для комбинирования двух пакетных частичных результатов и для денормализации одного или больше элементов, комбинированных частичных пакетных результатов для генерирования пакетного результата для операции с плавающей запятой ОКМД, имеющей один или больше денормализованных элементов. Флаги могут быть установлены и сохранены в частичных пакетных результатах и/или в пакетных результатах для идентификации денормализованных элементов.

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

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

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

Поскольку все большее количество компьютерных систем используется в Интернет и в мультимедийных приложениях, с течением времени была введена дополнительная поддержка процессора. Например, инструкции для целых чисел/чисел с плавающей запятой одного потока команд и множества потоков данных (ОКМД) и исключения при потоковой передаче данных ОКМД (SSE, ИПО) представляют собой инструкции, которые уменьшают общее количество инструкций, требуемых для выполнения определенной программной задачи. Эти инструкции могут ускорить работу программных средств благодаря параллельной обработке множества элементов данных. В результате может быть достигнут прирост рабочих характеристик в широком диапазоне приложений, включающих в себя обработку видеоданных, речевых данных и изображений/фотоизображений. Варианты воплощения инструкций ОКМД в микропроцессорах и аналогичных типах логических схем обычно имеют ряд проблем. Кроме того, сложность операций ОКМД часто приводит к необходимости использования дополнительных схем для того, чтобы правильно обрабатывать и манипулировать с данными.

На фиг.1 иллюстрируются некоторые примерные форматы 101-105 сохранения, предназначенные для сохранения скалярных и пакетных чисел с плавающей запятой IEEE. Формат 101 с одиночной точностью содержит 32 бита: знаковый бит 111, 8 битов 112 показателя степени и 23 бита 113 значимой части числа или мантиссы. Формат 102 с двойной точностью содержит 64 бита: бит 121 знака, 11 битов 122 показателя степени и 52 бита 123 значимой части числа или мантиссы. Формат 103 с двойной расширенной точностью содержит 80 битов: бит 131 знака, 15 битов 132 показателя степени и 64 бита 133 значимой части числа или мантиссы. В каждом из форматов сохранения для чисел с плавающей запятой в соответствии со стандартом IEEE значимые части чисел или мантиссы 112, 122 и 132 также могут включать в себя скрытый старший значимый бит J, который, как предполагается, равен единице. Таким образом, если используется 52-битная мантисса для формата 102 с двойной точностью, например, в котором сохранено шестнадцатеричное значение 23456789ABCDE, это шестнадцатеричное значение будет представлено как 1,23456789ABCDE с запятой, следующей после неявно заданного бита J. Показатели степени смещены на (2е-1)-1, где e представляет собой количество битов, используемых для поля показателя степени. Таким образом, 8-битный показатель степени формата 101 с одиночной точностью будет смещен на 127, и 11-битный показатель степени формата 102 с двойной точностью будет смещен на 1023.

Пакетный формат 104 с одиночной точностью содержит 128 битов, и каждый из участков 141-144 размером 32 бита содержит число с плавающей запятой с одиночной точностью, которое имеет формат 101 с одиночной точностью. Пакетный формат 105 с двойной точностью также содержит 128 битов, каждый из участков 151-152 размером 64 бита содержит число с плавающей запятой с двойной точностью, имеющее формат 102 с двойной точностью. Пакетный формат 104 с одиночной точностью и пакетный формат 105 с двойной точностью известны в данной области техники как используемые для выполнения операций с плавающей запятой ОКМД. Следует понимать, что, хотя пакетный формат 104 с одиночной точностью и пакетный формат 105 с двойной точностью были представлены как содержащие 128 битов, настоящее изобретение не ограничивается этим. В частности, варианты воплощения настоящего изобретения могут включать в себя форматы для пакетных чисел с одиночной точностью и пакетных чисел с плавающей запятой с двойной точностью, которые содержат 256 битов или 512 битов данных, или больше, для выполнения операций с плавающей запятой ОКМД.

Когда такие операции с плавающей запятой ОКМД формируют или используют денормализованные числа, исключение (возможно, замаскированное) может быть инициировано для обработки операции в программном средстве или в аппаратных средствах и/или с использованием микрокода. В некоторых процессорах предшествующего уровня техники обработка таких исключений может включать в себя преобразование пакетных чисел с плавающей запятой в скалярные числа с плавающей запятой или более широкое представление и повторное выполнение операций в качестве скалярных операций в более широких представлениях, после которых следует денормализация результатов, в соответствии с необходимостью, и преобразование их обратно в пакетные числа с плавающей запятой. Как отмечено выше, обработка при таких расчетах, в результате которых формируются или используются денормализованные числа, может выполняться значительно медленнее, чем аналогичная обработка нормальных чисел, в частности, если форматы для пакетных чисел с плавающей запятой могут содержать 256 битов или 512 битов или больше данных. Таким образом, существует потребность в более эффективных технологиях, раскрытых здесь для обработки исключений с плавающей запятой в процессоре, который выполняет инструкции ОКМД.

На фиг.2 иллюстрируется один вариант воплощения системы 200, включающей в себя процессор 300, который выполняет инструкции с плавающей запятой ОКМД и использует более эффективные технологии для обработки исключения с плавающей запятой ОКМД. Система 200 включает в себя такой компонент, как процессор 300 для использования модулей исключения, включающих в себя логические схемы, для выполнения алгоритмов, для выполнения операций с плавающей запятой ОКМД, в соответствии с настоящим изобретением, таким как в варианте воплощения, описанном здесь. Система 200 представляет собой системы обработки, основанные на использовании микропроцессоров PENTIUM® III, PENTIUM® 4, CELERON®, XEON ™, ITANIUM®, CENTRINO®, CORE™ Duo, CORE™ 2 Duo и/или CORE™ 2 Quad, поставляемых компанией Intel Corporation, Санта Клара, Калифорния, хотя другие системы (включающие в себя PC (ПК), имеющие другие микропроцессоры, автоматизированные рабочие станции, телевизионные приставки и т.п.) также можно использовать. В одном варианте воплощения примерная система 200 может выполнять версию операционной системы WINDOWS™, которая поставляется компанией Microsoft Corporation, г.Редмонд, Вашингтон, хотя другие операционные системы (например, операционные системы MAC OS® X Leopard®, UNIX и/или Linux), встроенное программное обеспечение и/или графические интерфейсы пользователя также можно использовать. Таким образом, настоящее изобретение не ограничивается какой-либо конкретной комбинацией аппаратных схем и программных средств.

Процессор 300 включает в себя один или больше исполнительных модулей 203 для выполнения инструкции ОКМД для пакетных данных с плавающей запятой в соответствии с настоящим изобретением. Настоящий вариант воплощения описан в контексте настольного компьютера с одним процессором или системы сервера, но альтернативные варианты воплощения могут быть включены в микропроцессорную систему. Один вариант воплощения системы 200 представляет собой пример архитектуры концентратора. Компьютерная система 200 включает в себя процессор 300 для обработки данных сигналов. Процессор 300 может представлять собой микропроцессор, такой как процессор со сложным набором команд (CISC, ПСНК), микропроцессор для вычислений с сокращенным набором команд (RISC, BCHK), микропроцессор с архитектурой с командными словами очень большой длины (VLIW, КСБД), процессор, воплощающий комбинацию наборов инструкций, или любое другое устройство процессора, такое как, например, процессор цифровых сигналов. Процессор 300 соединен с шиной 210 процессора, которая может передавать сигналы данных между процессором 300 и другими компонентами в системе 200. Элементы системы 200 выполняют свои обычные функции, которые хорошо известны специалистам в данной области техники.

В одном варианте воплощения процессор 300 включает в себя запоминающее устройство 207 внутреннего кеш-уровня 1 (L1). В зависимости от архитектуры процессор 300 может иметь одиночный внутренний кеш или множество уровней внутреннего кеш. В качестве альтернативы, в другом варианте воплощения, запоминающее устройство-кеш может быть расположено как внешнее устройство для процессора 300. Другие варианты воплощения также могут включать в себя комбинацию как внутреннего, так и внешнего кеш, в зависимости от конкретных воплощений и потребностей. Файл 208 регистра может сохранять различные типы данных в различных регистрах, включающих в себя регистры ОКМД и/или скалярные регистры, регистры целых чисел, регистры с плавающей запятой, регистры состояния и регистры указателя инструкции.

Исполнительный модуль 203, включающий в себя логику для выполнения операций с целыми числами и с плавающей запятой, также находится в процессоре 300. Процессор 300 также включает в себя ПЗУ микрокода (u-кода), в котором сохраняется микрокод для некоторых макроинструкций и/или для обработки операции исключения в аппаратных средствах с помощью микрокода. Для данного варианта воплощения исполнительный модуль 203 включает в себя логику, предназначенную для обработки набора 209 пакетных инструкций, который включает в себя инструкции с плавающей запятой ОКМД. Благодаря включению набора 209 пакетных инструкций в набор инструкций процессора 300 общего назначения вместе с соответствующими схемами для выполнения инструкций операции, используемые множеством мультимедийных приложений, могут быть выполнены с использованием пакетных данных в процессоре 300 общего назначения. Таким образом, множество мультимедийных приложений могут быть ускорены и могут быть выполнены более эффективно, используя шину данных процессора полной ширины для выполнения операций с пакетными данными. Это может устранить необходимость передачи меньших модулей данных через шину данных процессора для выполнения одной или больше операций по одному элементу данных одновременно.

Альтернативные варианты воплощения исполнительного модуля 203 также можно использовать в микроконтроллерах, встроенных процессорах, графических устройствах, DSP (ЦСП, цифровой сигнальный процессор) и других типах логических схем. Система 200 включает в себя запоминающее устройство 220. Запоминающее устройство 220 может представлять собой динамическое оперативное запоминающее устройство (DRAM, ДОЗУ), статическое оперативное запоминающее устройство (SRAM, СОЗУ), запоминающее устройство типа флэш или другие запоминающие устройства. Запоминающее устройство 220 может сохранять инструкции и/или данные, представленные сигналами данных, которые могут быть выполнены процессором 300.

Системная логическая микросхема 216 соединена с шиной 210 процессора и запоминающим устройством 220. Системная логическая микросхема 216 в представленном варианте воплощения представляет собой концентратор контроллера памяти (МСН, ККП). Процессор 300 может связываться с ККП 216 через шину 210 процессора. ККП 216 обеспечивает канал 218 для запоминающего устройства с широкой полосой пропускания к запоминающему устройству 220 для передачи инструкций и сохранения данных, и для сохранения графических команд, данных и текстур. ККП 216 предназначен для направления сигналов данных между процессором 300, запоминающим устройством 220 и другими компонентами в системе 200 и для установления мостика для сигналов данных между шиной 210 процессора, запоминающим устройством 220 и входом/выходом 222 системы. В некоторых вариантах воплощения системная логическая микросхема 216 может обеспечивать графический порт для подключения к графическому контроллеру 212. ККП 216 соединена с запоминающим устройством 220 через интерфейс 218 памяти. Графическую карту 212 подключают к ККП 216 через взаимное соединение 214 ускоренного графического порта (AGP, УГП).

В некоторых вариантах воплощения системы 200 используется специализированная шина 222 интерфейса концентратора для подключения ККП 216 к концентратору 230 контроллера ввода/вывода (ICH, ККВ). ККВ 230 обеспечивает прямое соединение с некоторыми устройствами ввода/вывода через локальную шину ввода/вывода. Локальная шина ввода/вывода представляет собой высокоскоростную шину ввода/вывода, предназначенную для соединения периферийных устройств с запоминающим устройством 220, набором микросхем и процессором 300. Некоторые примеры представляют собой аудиоконтроллер, концентратор 228 встроенного программного обеспечения (BIOS (БСВВ, базовая система ввода/вывода) в памяти типа флэш), приемопередатчик 226 беспроводного канала передачи данных, хранилище 224 данных, традиционный контроллер ввода/вывода, содержащий интерфейсы ввода пользователя и клавиатуры, последовательный порт расширения, такой как универсальная последовательная шина (USB, УПШ), и сетевой контроллер 234. Устройство 224 сохранения данных может содержать привод жесткого диска, привод гибкого диска, привод CD-ROM, запоминающее устройство типа флэш или другие устройства сохранения большой емкости. В некоторых вариантах воплощения системы 200 ККП 216 и ККВ 230 могут быть интегрированы в единую системную логическую микросхему 201. В некоторых альтернативных вариантах воплощения ККП 216 может быть интегрирован непосредственно в процессор 300 для направления доступа к процессору 300 к запоминающему устройству 220. Для других вариантов воплощения системы 200 процессор 300 может быть непосредственно интегрирован в систему на микросхеме. В одном варианте воплощения системы на микросхеме содержат процессор 300 и запоминающее устройство 220. Запоминающее устройство 220 для одной такой системы представляет собой запоминающее устройство типа флэш. Запоминающее устройство 220 типа флэш может быть расположено на том же кристалле, что и процессор 300 и другие системные компоненты. В случае необходимости другие логические блоки, такие как контроллер памяти или графический контроллер, также могут быть расположены в системе на микросхеме.

На фиг.3 иллюстрируется один вариант воплощения процессора 300, который выполняет инструкции с плавающей запятой ОКМД и в котором используются эффективные технологии обработки исключения с плавающей запятой ОКМД. Работающий по порядку блок 301 предварительной обработки данных представляет собой часть 300 процессора, которая выбирает макроинструкции для выполнения, и подготавливает их для последующего использования в конвейере процессора. Работающий по порядку блок 301 предварительной обработки данных в соответствии с данным вариантом воплощения включает в себя несколько модулей. Блок 326 предварительной выборки инструкции выполняет выборку макроинструкции в запоминающем устройстве 220 и/или из I-кеш 327 и передает их в декодер 328 инструкций, который, в свою очередь, декодирует их в примитивы, называемые микроинструкциями или микрооперациями (также называемые микро-ops или uops), которые может выполнять вычислительное устройство. Кеш 330 микроопераций отбирает декодированные микрооперации и сохраняет их для будущего повторного выполнения без декодирования. Некоторые варианты воплощения кеш 330 микроопераций могут включать в себя кеш отслеживания, который собирает микроинструкции в программу упорядоченной последовательности или следы в очереди 334 микроопераций для выполнения. Для некоторых вариантов воплощения, когда декодер 328 или когда кеш отслеживания в кеш 330 микроопераций сталкивается со сложной макроинструкцией, ПЗУ 344 микрокода может предоставлять микрооперации, необходимые для завершения этой операции.

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

Для одного варианта воплощения исключение для операции с плавающей запятой может быть кодировано в и может быть обработано малым количеством микроопераций в ПЗУ 344 микрокода, для повторного выполнения операций с плавающей запятой таким образом, чтобы получить поддержку для исключительного случая, такого как обработка денормализованных чисел в процессоре 300, который выполняет инструкции с плавающей запятой ОКМД.

Некоторые ОКМД и другие мультимедийные типы инструкций рассматриваются как сложные инструкции. Большая часть инструкций, относящихся к плавающей запятой, также представляют собой сложные инструкции. При этом, когда декодер 328 инструкций сталкивается со сложными макроинструкциями, обращаются к соответствующему местоположению в ПЗУ микрокода 344 для выборки последовательности микрокода для этой макроинструкции. Различные микрооперации, необходимые для выполнения этой макроинструкции, передают в механизм 303 выполнения не по порядку для выполнения соответствующих исполнительных модулей для целых чисел и плавающей запятой.

Механизм 303 выполнения не по порядку предусмотрен там, где микроинструкции подготавливают для выполнения. Логика выполнения не по порядку имеет множество буферов для сглаживания и изменения порядка потока микроинструкций для оптимизации рабочих характеристик по мере работы конвейера и планирует их выполнение. Логическая схема 333 изменения названия распределителя выделяет буферы вычислительного устройства и ресурсы, которые требуются для выполнения микроопераций, и изменяет названия логических регистров по входам в файл регистра. В одном варианте воплощения логическая схема 333 изменения названия распределителя также выделяет вход для каждой микрооперации в различных очередях, которые могут включать в себя очередь 331 запоминающего устройства для операций, в запоминающее устройство, очередь 332 целого числа для операций с целыми числами или с плавающей запятой и очередь 336 плавающей запятой для операций с плавающей запятой. Из этих очередей (например, 331, 332 и 336 соответственно) микрооперации планируют с помощью планировщика 321 памяти, планировщика 302 целых чисел и планировщика 306 чисел с плавающей запятой для выполнения соответственно модулем 311 считывания/записи, исполнительным модулем 312 операций с целыми числами и исполнительным модулем 316 операций с плавающей запятой. Планировщики 321, 302 и 306 микроопераций определяют, когда микрооперация готова к выполнению, на основе готовности зависящих от них источников операнда входного регистра и доступности ресурсов выполнения, микроопераций, необходимых для завершения их работы. Следует понимать, что каждый или любой из исполнительных модулей 311, 312 и 316 может иметь дублированные модули расширения для выполнения скалярных операций или операций ОКМД.

Обходная сеть 308 файла регистра расположена между планировщиками 321, 302 и 306 и исполнительными модулями 311, 312 и 316. В некоторых вариантах воплощения обходной сети 308 файла регистра может находиться отдельный файл регистра для операций с целыми числами и плавающей запятой. Каждый файл регистра в таких вариантах воплощения также может включать обходную сеть, которая может обводить или передавать только что полученные результаты, которые еще не были записаны в файл регистра в новые зависимые микрооперации, и также могут быть выполнены с возможностью обмена данными друг с другом. В альтернативных вариантах воплощения обходной сети 308 файла регистра они могут быть унифицированы. Один альтернативный вариант воплощения обходной сети 308 файла регистра имеет записи в регистре, по меньшей мере, шириной 256 битов для сохранения пакетных операндов источника и назначения, включающих в себя пакетные операнды источника с плавающей запятой и пакетные результаты с плавающей запятой для операций с плавающей запятой ОКМД.

Некоторые варианты воплощения планировщиков 321, 302 и 306 микроопераций могут отправлять зависимые операции до того, как будет закончено выполнение родительской нагрузки. Поскольку микрооперации были запланированы и выполнялись в процессоре 300 спекулятивно, процессор 300 также включает в себя логику для обработки потерь в памяти. Если происходит потеря загрузки данных в кеше для данных, могут существовать зависимые операции, выполняемые в данный момент времени в конвейере, которые оставили в планировщике временно некорректные данные. Механизм повторного воспроизведения может отслеживать и повторно выполнять инструкции, которые используют некорректные данные. Повторное воспроизведение может потребоваться только для зависимых операций, и может быть разрешено окончание независимых операций. После завершения выполнения микроопераций выполняют их окончание в последовательном порядке программы с использованием изменяющей порядок логики 310 окончания операций.

В одном варианте воплощения исполнительный модуль 316 с плавающей запятой включает в себя схему 346 исключения для идентификации исключений для операций с плавающей запятой ОКМД, включающий в себя, например, численные исключения. Обработчик исключения микрокода, который может резидентно находиться в ПЗУ 344 микрокода или в некотором специализированном конечном автомате (например, в схеме 346 исключения), использует ПЗУ 344 микрокода, которое реагирует на численные исключения для инициирования последовательности микроопераций ОКМД для операции с плавающей запятой ОКМД, в которой произошло исключение. В одном варианте воплощения микрооперации ОКМД генерируют два пакетных частичных результата из пакетного результата для операции с плавающей запятой ОКМД. Микрооперация денормализации ОКМД комбинирует два пакетных частичных результата и денормализует один или больше элементов комбинированных пакетных частичных результатов для генерирования пакетного результата для операции с плавающей запятой ОКМД, имеющей один или больше денормализованных элементов. Флаги могут быть установлены и сохранены с пакетными частичными результатами для идентификации денормализованного результата в одном или больше элементов, и в этом случае нормализация одного из пакетных частичных результатов может потребоваться для некоторых вариантов воплощения перед микрооперацией денормализации.

В одном варианте воплощения обработчик исключения микрокода ПЗУ 344 микрокода также можно использовать для инициирования микрооперации нормализации ОКМД для генерирования нормализованного псевдовнутреннего представления с плавающей запятой как части последовательности микроопераций ОКМД для операции с плавающей запятой ОКМД, когда выполняется произведение. Флаги могут быть установлены и сохранены с пакетными результатами для идентификации денормализованного результата, представленного в нормализованном псевдовнутреннем представлении с плавающей запятой. Для данного варианта воплощения микрооперация нормализации ОКМД может не быть необходимой, когда операция с плавающей запятой ОКМД представляет собой сложение, поскольку сумматор с плавающей запятой ОКМД может быть выполнен с возможностью приема пакетных операндов, включающих в себя денормализованные значения как входные данные для суммирования с плавающей запятой ОКМД. В некоторых вариантах воплощения флаги могут быть установлены и сохранены с нормализованным псевдовнутренним представлением с плавающей запятой для идентификации денормализованных элементов и обеспечения возможности реконструкции фактического представления с внутренней плавающей запятой из нормализованного псевдовнутреннего представления с плавающей запятой.

Таким образом, механизм помощи микрокоду, как описано выше, может использовать ПЗУ 344 микрокода для прозрачной обработки исключений с плавающей запятой ОКМД.

На фиг.4 иллюстрируется один альтернативный вариант воплощения устройства 460 для эффективной обработки исключений с плавающей запятой в процессоре, который выполняет инструкции с одним потоком команд и множеством потоков данных (ОКМД). Устройство 460 включает в себя обходную сеть 308 файла регистра, которая функционально соединена с исполнительным модулем 316 с плавающей запятой. В одном варианте воплощения исполнительный модуль 316 с плавающей запятой ОКМД включает в себя модуль 400 сумматора с плавающей запятой ОКМД (FAU, МСП) и модуль 420 умножения с плавающей запятой ОКМД (FMU, МУП). Варианты воплощения, которые включают в себя МСП 400 ОКМД и/или МУП 420 ОКМД, также могут включать себя модуль 410 нормализации с плавающей запятой ОКМД (FNU, МНП) и модуль 430 денормализации с плавающей запятой ОКМД (FDU, МДП).

МСП 400 ОКМД включает в себя сумматоры 401, 402,… 408 с плавающей запятой, которые могут содержать множество сумматоров с плавающей запятой, выполненных с возможностью выполнения