АРХИТЕКТУРА VLIW

Процессоры с множественной выдачей инструкций (multiple-issue processors) ориентированы на исполнение нескольких инструкций за такт и бывают двух ви­дов: суперскалярные процессоры (superscalar processors) и процессоры с архитекту­рой VLIW (Very Long Instruction Word).

Первые суперскалярные процессоры работали в режиме упорядоченной вы­дачи команд. Но упорядоченная выдача команд (in-order issue) неэффективна, так


как требуемое функциональное устройство (FU) может оказаться занятым. Упоря­доченное завершение команд (in-order completion) также неэффективно, так как ос­тановка продвижения в одном функциональном устройстве приведёт к простою всех функциональных устройств. Неупорядоченные выдача и завершение - неупо­рядоченная модель обработки (out-of-order execution) - дополнительный потенциал повышения производительности суперскалярного процессора. Современные супер­скалярные процессоры исполняют от 2 до 10 инструкций за такт и используют ап­паратную логику анализа архитектуры системы команд перед выдачей команд. Та­кой аппаратный механизм переупорядочивания исполнения инструкций (out-of-order engine) называется динамическим планированием. Компилятор и динамиче­ский планировщик не могут обойти все конфликты (структурные, по данным, по управлению) и задержки доступа к памяти (при кеш-промахах). Таким образом, фактическое число выданных в такте инструкций колеблется от нуля до макси­мально возможного (загрузка FU колеблется от 0% до 100%).

Если суперскалярные процессоры исполняют переменное число инструкций за такт, используя методы как статического (развёртка кода компилятором), так и динамического (алгоритм Томасуло) планирования, то VLIW процессоры, напро­тив, исполняют фиксированное число независимых инструкций, сгруппированных в одну длинную инструкцию. таком пакете инструкций параллелизм уровня ин­струкций обеспечивается статически на этапе компиляции. Компания Intel, напри­мер, именует такую методику явного распараллеливания инструкций - EPIC -Explicitly Parallel Instruction Computing.

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

VLIW (англ. very long instruction word — «очень длинная машинная коман­да») — архитектура процессоров с несколькими вычислительными устройствами. Характеризуется тем, что одна инструкция процессора содержит несколько опера­ций, которые должны выполняться параллельно. Фактически это «видимое про­граммисту» микропрограммное управление, когда машинный код представляет со­бой лишь немного свернутый микрокод) для непосредственного управления аппа­ратурой.

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


VLIW можно считать логическим продолжением идеологии RISC, расши­ряющей её на архитектуры с несколькими вычислительными модулями. Так же, как в RISC, в инструкции явно указывается, что именно должен делать каждый модуль процессора. Из-за этого длина инструкции может достигать 128 или даже 256 бит.

2.7.КОМПЬЮТЕРЫ СО СТЕКОВОЙ АРХИТЕКТУРОЙ

При создании компьютера одновременно проектируют и систему команд (СК) для него. Существенное влияние на выбор операций для их включения в СК оказывают:

* элементная база и технологический уровень производства ком-пьютеров;


 

класс решаемых задач, определяющий необходимый набор операций, во-

площаемых в отдельные команды;

* системы команд для компьютеров аналогичного класса;

* требования к быстродействию обработки данных, что может породить созда-

ние команд с большой длиной слова (VLIW-команды).

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

На сегодняшний день наибольшее распространение получили следующие структуры команд: одноадресные (1А), двухадресные (2А), трехадресные (ЗА), без­адресные (БА), команды с большой длиной слова (VLIW - Б ДО (рис. 2.1 - знать и разбираться):

1А~

КОП А1


 

КОП А1 А2

 


ЗА


 

КОП А1 А2 A3

 


БА


КОП


 


БДС


 

коп Адреса Теги Дескрипторы

Рис. 2.1. Структуры команд

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

случае БА-команд операнды выбираются и результаты помещаются в стек (магазин, гнездо). Типичными первыми представителями БА-компьютеров являют­ся KDF-9 и МК "Эльбрус". Их характерной особенностью является наличие сте­ковой памяти.


го хранения данных и операций.

Стек - это область оперативной памяти, которая используется для временно-

щступ к элементам стека осуществляется по

принциг

FILO (first in, last out) - первым вошел, последним вышел. Кроме того,

доступ к элементам стека осуществляется только через его вершину, т. е. пользова­телю "виден" лишь тот элемент, который помещен в стек последним.

Рассмотрим функционирование процессора со стековой организацией памяти.

При выполнении различных вычислительных процедур процессор использу­ет либо новые операнды, до сих пор не выбиравшиеся из памяти компьютера, либо операнды, употреблявшиеся в предыдущих операциях. процессорах с классиче­ской структурой обращение к любому операнду (1А-ЭВМ) требует цикла памяти.

Рассмотрим пример.

Пусть процессор вычисляет значение выражения


X


 


а2; b + с


Программа решения этой задачи для одноадресного компьютера может быть

следующей (табл. 2.4).

Таблица 2.4. Пример программы

 

Номер команды Команда Комментарии
C^Z  
(I)+b  
(I)">Р! R - рабочая ячейка 1 "
а->Е  
(I)•*  
(I)">Р, P, - рабочая ячейка 2 г
b^Z  
(I)-ь  
(I) + (p,)  
(I):(P.) а'+ь' Ь+ с

Замечание. ыполнение команды типа (^ ) ® (Р ) подразумевает, что ре­зультат операции помещается в первый регистр, в данном случае в регистр ^].

Как следует из приведенной программы, операнд а выбирается из памяти 2 раза (команды 4 и 5), Ъ - 3 раза (команды 2, 7 и 8). Кроме того, потребовались до­полнительные обращения к памяти для запоминания и вызова из памяти результа­тов промежуточных вычислений (команды 3, 6, 9, 10).

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

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



 


 

ИИ  
  Pi  
пи   ш
  ?2  
ИИ   ш
  Рз  

 

        Рп      

Рис. 2.2. Стековая организация процессора

Стековая память представляет собой набор из п регистров, каждый из кото­
рых способен хранить одно машинное слово. Одноименные разряды регистров Р
ь
Р?, ..., Рл соединены между собой цепями сдвига. есь набор регистров может рас­
сматриваться как группа n-разрядных сдвигающих регистров, составленных из од­
ноименных разрядов регистров Рь Р?........ Рп. Информация в стеке может продви-

гаться между регистрами вверх и вниз.


Движение вниз: (Pi) —> Р?, (Р?) —> Рз, ..., а Р^ заполняется данными из главной памяти.

Движение вверх: (Рд) —> Рги, (Рги) —> Рлл, а Рп заполняется нулями.

Регистры Р^ и Р? связаны с АЛУ, образуя два операнда для выполнения опе­рации. Результат операции записывается в Рь Следовательно, АЛУ выполняет опе­рацию (Р,)®(Р„) -»Р.

*^—==>------- \ 1/ \ 2/ 1-

Одновременно с выполнением арифметической операции (АО) осуществля­ется продвижение операндов вверх, не затрагивая Рь т. е. (PQ —> Р?, (Рд) —> Рз и т. д.

Таким образом, АО используют подразумеваемые адреса, что уменьшает длину команды. принципе, в команде достаточно иметь только поле, определяю­щее код операции. Поэтому компьютеры со стековой памятью называют безадрес­ными. то же время команды, осуществляющие вызов или запоминание информа­ции из главной памяти, требуют указания адреса операнда. Поэтому в ЭВМ со сте­ковой памятью используются команды переменной длины. Например, в KDF-9 ко­манды АО - однослоговые, команды обращения к памяти и передач управления - трех-слоговые, остальные - двуслоговые.

Команды располагаются в памяти в виде непрерывного массива слогов неза­висимо от границ ячеек памяти. Это позволяет за один цикл обращения к памяти вызвать несколько команд.

Для эффективного использования возможностей такой памяти в ЭВМ вво­дятся спецкоманды:

дублирование ~ (Pi) —> Р?, (Р?) —> Ря, ••• и т. д., a (Pi) остается при этом не­изменным;

реверсирование ~ (Рь) —> Р?, а (Р?) —> Рь что удобно для выполнения неко­торых операций.

Рассмотрим тот же пример для новой ситуации (табл. 2.5):

a2+b2

X =.

b + c

Таблица 2.5. Реализация программы со стековой памятью


№ п/п Команда Pi Рг Рз Рд
Вызов b b      
Дублирование b В    
Вызов с с в В  


№ п/п Команда Pi P2 Рз P4
Сложение b+c В    
Реверсирование b b+c    
Дублирование b В b+c  
Умножение b2 b+c    
ызов а a b2 b+c  
Дублирование a A b b+c
Умножение a2 b2 b+c  
Сложение a2+b2 b+c    
Деление a +b 22 b+c      

Как следует из табл. 2.5, понадобились лишь три обращения к памяти для вызова операндов (команды 1, 3, 8). Меньше обращений принципиально невозмож­но. Операнды и промежуточные результаты поступают для операций в АУ из сте­ковой памяти; 9 команд из 12 являются безадресными.

ся программа размещается в трех 48-разрядных ячейках памяти.

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

Преимуществами стековой памяти являются:

* уменьшение количества обращений к памяти;

* упрощение способа обращения к подпрограммам и обработки прерываний. Недостатки стековой организации памяти:

 

большое число регистров с быстрым доступом;

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

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

k процессами.
-------------- \

шец лекции \
4/ 40


2.8.МЕТОДЫ АДРЕСАЦИИ И ТИПЫ КОМАНД

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

табл. 2.2 представлены основные методы адресации операндов, которые 'еализованы в большинстве компьютеров (знать все методы).

Таблица 2.2. Методы адресации

 

Метод адресации Пример команды Смысл команды Использование команды
Регистровая Add R4, R3 R4 = R4+R3 Для записи требуемого значе­ния в регистр
Непосредственная или литерная Add R4, #3 R4 = R4+3 Для задания констант
Базовая со смеще­нием Add R4, 100(R1) R4= R4+M(100+R1) Для обращения к локальным переменным
Косвенная регист­ровая Add R4, (R1) R4 = R4+M(R1) Для обращения по указателю к вычисленному адресу
Индексная Add R3, (R1+R2) R3 = R3+M(R1+R2) Полезна при работе с массива­ми: R1 - база, R3 - индекс
Прямая или абсо­лютная Add R1, (1000) R1=R1+M(1000) Полезна для обращения к статическим данным
Косвенная Add R1, @(R3) Rl = R1+M(M(R3)) Если R3 - адрес указателя р, то выбирается значение по этому указателю
Автоинкрементная Add R1, (R2)+ Rl = R1+M(R2) R2 = R2+d Полезна для прохода в цикле по массиву с шагом: R2 - начало массива. каждом цикле R2 получает приращение d
Автодекрементная Add R1, (R2)– R2 = R2-d Rl = R1+M(R2) Аналогична предыдущей. Обе могут использоваться для реа­лизации стека
Базовая индексная со смещением и масштабированием Add R1, 100(R2)(R3) R1=R 1 +M( 100)+R2 +R3*d Для индексации массивов

Адресация непосредственных данных и литерных констант обычно рассмат­ривается как один из методов адресации памяти (хотя значения данных, к которым


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

табл. 2.2 на примере команды сложения (Add) приведены наиболее упот­ребительные названия методов адресации, хотя при описании архитектуры в доку­ментации производители компьютеров и ПО используют разные названия для этих методов. табл. 2.2. знак "=" используется для обозначения оператора присваива­ния, а буква М обозначает память (Memory). Таким образом M(R1) обозначает со­держимое ячейки памяти, адрес которой определяется содержимым регистра R1.

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

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

Таблица 2.3. Основные типы команд

 

Тип операции Примеры
Арифметические и логические Целочисленные арифметические и логические операции: сложение, вычитание, логическое сложение, логическое ум­ножение и т. д.
Пересылки данных Операции загрузки/записи
Управление потоком ко­манд Безусловные и условные переходы, вызовы процедур и воз­враты
Системные операции Системные вызовы, команды управления виртуальной памя­тью и т. д.
Операции с плавающей точкой Операции сложения, вычитания, умножения и деления над вещественными числами
Десятичные операции Десятичное сложение, умножение, преобразование форматов и т. д.
Операции над строками Пересылки, сравнения и поиск строк

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

Обычно тип операнда (целый, вещественный, символ) определяет и его раз­мер. Как правило, целые числа представляются в дополнительном коде. Для зада­ния символов компания IBM использует код EBCDIC, другие компании применяют код ASCII. Для представления вещественных чисел с одинарной и двойной точно­стью придерживаются стандарта IEEE 754.

ряде процессоров применяют двоично кодированные десятичные числа, которые представляют в упакованном и неупакованном форматах. Упакованный формат предполагает, что для кодирования цифр 0 - 9 используют 4 разряда и две


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

2.9.ОПТИМИЗАЦИЯ СИСТЕМЫ КОМАНД

ажным вопросом построения любой системы команд является оптимальное кодирование команд. Оно определяется количеством регистров и применяемых ме­тодов адресации, а также сложностью аппаратуры, необходимой для декодирова­ния. Именно поэтому в современных RISC-архитектурах используются достаточно простые методы адресации, позволяющие резко упростить декодирование команд. Более сложные и редко встречающиеся в реальных программах методы адресации реализуются с помощью дополнительных команд, что, вообще говоря, приводит к увеличению размера программного кода. Однако такое увеличение программы с лихвой окупается возможностью простого увеличения частоты RISC-процессоров. Этот процесс мы можем наблюдать сегодня, когда максимальные тактовые частоты практически всех RISC-процессоров (Alpha, R4400, HyperSPARC и Power2) превы­шают тактовую частоту, достигнутую процессором Pentium.

Существует два способа выбора и построения системы команд:

1. На основе знаний класса решаемых задач, выбор некоторой типовой сис­темы команд для широко распространенного класса компьютеров и исследование выбранной СК на предмет присутствия всего разнообразия операций в заданном классе задач. Не встречающиеся или редко встречающиеся операции исключаются. Частота встреч операций для задания их в СК определяется из соотношения «стои­мость затрат - сложность реализации - получаемый выигрыш».

2. Состоит в расширении имеющейся системы команд. Существует два под­хода.

а)Создание макрокоманд

б)Дополнение имеющегося синтаксиса языка СК новыми командами с по­
следующим переассемблированием, через расширение функций ассемблера.

Оба эти способа принципиально одинаковы, но отличаются в тактике реали­зации аппарата расширения.

Так, система команд для ПК IBM покрывает следующие группы операций: передачи данных, арифметические операции, операции ветвления и циклов, логи­ческие операции и операции обработки строк.

Способы оптимизации системы команд:

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


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

3. оптимизация в пределах отдельной команды на основе исследования ее информационной емкости. Для этого можно применить аппарат теории информа­ции, в частности для оценки количества переданной информации - энтропию ис­точника. Тракт "процессор - память" можно считать каналом связи.

Замечание. Энтропия - это мера вероятности пребывания системы в данном состоянии (в статистической физике).

2.10ИСТОРИЯ РАЗВИТИЯ МИКРОПРОЦЕССОРНЫХ АРХИТЕКТУР НА ОСНОВЕ ОПТИМИЗАЦИИ СИСТЕМЫ КОМАНД

Поскольку каждый производитель процессоров по-своему улучшал ар­хитектуру, развитие микропроцессоров сопровождалось появлением не­скольких вариантов SIMD расширений (один поток инструкций, множест­венный поток данных).

ммх

MMX-расширение появилось в Pentium ММХ (январь 1997) и включа­ло в себя 57 новых команд, предназначенных для обработки звуковых и ви­деосигналов. Позднее их поддержка появилась в Кб (Little Foot) от AMD и в 6х86МХ от Cyrix.

MMX-расширение микропроцессора Pentium предназначено для под­держки приложений, ориентированных на работу с большими массивами данных целого типа, над которыми выполняются одинаковые операции. С данными такого типа обычно работают мультимедийные, графические, ком­муникационные программы. По этой причине данное расширение архитек­туры микропроцессоров Intel и названо MultiMedia extensions (ММХ), что переводится как мультимедиа расширения.

Основа программной компоненты - система команд MMX-расширения (те самые 57 новых команд) и четыре новых типа данных. ММХ-команды являются естественным дополнением основной системы команд микропро­цессора. Основным принципом их работы является одновременная обработ­ка нескольких единиц однотипных данных одной командой. Основа аппа­ратной компоненты - 8 ММХ регистров, каждый размером в 64 бит = 8 байт. ММХ работает только с целыми числами; поддерживаются данные размером в 1, 2, 4 или 8 байт. То есть, один ММХ регистр может содержать 8, 4, 2 или 1 операнд соответственно.

SSE

Данное расширение появилось в Pentium III (ядро Katmai, сентябрь 1999) и насчитывало 70 новых команд. Позднее в Athlon ХР (начиная с


Palomino) его стали поддерживать и процессоры AMD. Аббревиатура SSE расшифровывается как Streaming SIMD Extensions (потоковые SIMD расши­рения).

SSE оперирует с данными вещественного типа, которые используются в геометрических расчётах, то есть, приложениях трёхмерной графики, ком­пьютерных играх, редакторах типа 3DStudioMax, и многих других. С тех пор как в компьютерных играх вроде Quake текстурирование треугольников ста­ло производиться при помощи видеоускорителей, большая надобность в це­лочисленных вычислениях отпала. На первое место вышла скорость опера­ций с плавающей точкой, вроде перемножения вещественного вектора на вещественную матрицу.

При внедрении SSE процессор получил в дополнение к стандартным регистрам архитектуры х87 (математический сопроцессор) 8 новых больших регистров размером по 128 бит, в каждом из которых может содержаться 4 32-битных вещественных числа. С четвёрками операндов можно покомпо­нентно производить следующие операции: сложить две четвёрки чисел, вы­честь, перемножить, разделить. ычислить одновременно 4 (обратных) квад­ратных корня, точно или приближённо. Ещё можно тасовать содержимое ре­гистров, перекладывать данные из одних частей регистра в другие и произ­водить некоторые другие аналогичные операции. Однако перемещение дан­ных происходит не быстрее их сложения, так что эффективное использова­ние SSE возможно только на подготовленных правильно упакованных дан­ных.

первую очередь использование SSE позволяет современным процес­сорам при выполнении трансформации вершин треугольников, составляю­щих трёхмерную сцену, успешно соревноваться с видеоускорителями.

SSE2

Следующее расширение, являющееся логическим продолжением ММХ и SSE появилось в Pentium 4 (начиная с Willamette). Athlon 64 появилось начиная с Clawhammer.

данное расширение включены 144 команды SSE2, ориентированные, в первую очередь, на работу с потоковыми данными. Подобно Pentium III, они также оперируют со 128-битными регистрами, но уже не только с чет­верками чисел одинарной точности, но и с любыми другими типами данных, которые умещаются в 128 бит. Это пары вещественных чисел двойной точ­ности, шестнадцать однобайтовых целых, восьмерки двухбайтовых целых, пары восьмибайтовых целых и т.д. результате получился некий симбиоз ММХ и SSE.

Теперь те же 8 больших 128-битных регистров уже можно интерпрети­ровать как содержащие не четыре 32-битных вещественных числа, а два 64-


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

SSE2 регистры по сравнению с ММХ удвоились, то есть, там стало помещаться не, например, 8 чисел, а 16. Поскольку скорость выполнения ин­струкций не изменилась, при оптимизации под SSE2 программа запросто по­лучала двукратный прирост производительности. Надо отметить ещё сле­дующее обстоятельство. Если программа уже была оптимизирована под ММХ, то оптимизация под SSE2 даётся сравнительно легко в силу сходности системы команд.

SSE3

Следующий набор появился в Pentium 4 начиная с Prescott и Athlon 64 начиная с Venice. Это расширение имело поначалу рабочее название Prescott New Instruction, но получившее в итоге не совсем верное с технической точ­ки зрения название SSE3, призвано облегчить оптимизацию программ под SSE и SSE2. Причём, в первую очередь, сделать более легкой полностью ав­томатическую оптимизацию программ средствами компилятора. То есть, для оптимизации необходимо будет просто перекомпилировать программу.


Вертикальное сложение


Некорректность названия SSE3 объясняется тем, что в отличие от дру­гих SIMD инструкций, где операции (например, сложение) выполняются вертикально, здесь появилась возможность горизонтального выполнения операций.

оризонталъное сложение

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


DNow!

Различают три поколения этого расширения инструкций: 3DNow!, Enhanced 3DNow! и 3DNow! Professional, однако очень часто их все называ­ют просто 3DNow! Набор инструкций 3DNow! появился в AMD К6-2 (Chomper). Данный набор, состоящий из 21 команды, был оптимизирован для еще более узкой области, нежели "универсально-мультимедийный" Intel ММХ, а именно: для наиболее ресурсоемких расчетов, связанных с 3D-графикой. Даже в самом названии этого набора (3DNow!) отразилась область его применения. Это расширение во многом сходно с SSE, но так же имеет и значительные отличия. Регистров так же 8, но они размером не 128 бит, а 64. Соответственно, в них помещается не 4 числа, а только 2. Имеется аналогич­ный SSE набор арифметических операций с регистрами. Сложить-умножить-разделить две пары операндов и т.п. Есть и операции нахождения (обратно­го) квадратного корня, точные и более быстрые приближённые. Однако, есть ещё одно важное отличие расширения 3DNow! Можно складывать между собой содержимое одного регистра. То есть, так же как и в SSE3, произво­дить не только вертикальные операции, но и горизонтальные.

Другое важное обстоятельство, говорящее в пользу 3DNow!, это воз­можность достаточно эффективной автоматической оптимизации средствами компилятора. SSE слишком громоздко, размеры регистров большие для ав­томатической организации данных. На коде, наполненном вычислениями с плавающей точкой, можно было бы бесплатно получить примерно полутор­ный прирост производительности.

дальнейшем изменения блока 3DNow! произошли в К7. Он, как и раньше, работал с 64-битными регистрами, в которых находились пары ве­щественных чисел одинарной точности, зато его набор команд расширился еще на 24 инструкции (Enhanced 3DNow!). Последнее расширение этого на­бора до 3DNow! Professional появилось в ядре Thoroughbred.

На развитие набора 3DNow! негативно повлияло то, что у AMD первое время отсутствовал оптимизирующий компилятор, к тому же разработчики программ не торопились оптимизировать свои программы под эти инструк­ции.








Дата добавления: 2015-08-21; просмотров: 3478;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.05 сек.