
- •Развитие микропроцессорных архитектур
- •Введение ……………………………………………….........................................4
- •С благодарностью
- •Введение
- •1. История развития микропроцессоров фирмы Intel
- •2. Микропроцессоры класса cisc
- •Можно отметить следующие основные черты архитектуры amd64:
- •4. Микропроцессоры класса risc
- •5. Повышение производительности микропроцессоров
- •6. Конвейерная работа микропроцессоров
- •7. Метод переименования регистров (регистровые окна)
- •8.Принцип обработки операндов simd
- •8.1. Архитектура mmx
- •8.2 Технология sse
- •8.3 Технология sse2
- •9. Обзор simd-команд
- •9.1. Команды передачи данных
- •9.2 Арифметические команды
- •9.2.2 Команды упакованного/скалярного умножения и деления
- •9.2.3 Команды упакованого/скалярного вычисления квадратных корней
- •9.2.4. Команды упакованного/скалярного нахождения максимума и минимума
- •9.2.5 Команды сравнения
- •9.3. Команды преобразования типов данных
- •9.4. Логические команды
- •9.5. Дополнительные команды simd над целочисленными операндами
- •9.6. Команды перестановки
- •9.7. Команды управления состоянием
- •9.8. Команды технологии sse3
- •1. Преобразование чисел с плавающей запятой в целые числа. В эту подгруппу входит одна-единственная инструкция, которая работает на уровне арифметического сопроцессора x87 fpu.
- •3. Загрузка невыровненных переменных. Данную подгруппу представляет инструкция lddqu.
- •Команда monitor устанавливает диапазон адресов памяти (обычно используется одна строка кэша), по которому будет осуществляться отслеживание записей по стандартному протоколу write-back.
- •10. Технология Hyper-Threading
- •11. Vliw (epic) микропроцессор
- •Литература
- •Замковец Сергей Всеволодович Развитие микропроцессорных архитектур
- •119333, Москва, ул. Вавилова, д. 44, кор. 2
3. Загрузка невыровненных переменных. Данную подгруппу представляет инструкция lddqu.
Данная команда осуществляет операцию особой загрузки невыровненного 128-разрядного значения из памяти, исключающая возможность «разрыва» (пересечения границы) строки кэша. В случае, если адрес загружаемого элемента выровнен по 16-байтной границе, команда LDDQU осуществляет обычную загрузку запрашиваемого 16-байтного значения (т.е., по сути, ведет себя аналогично инструкциям MOVAPS/MOVAPD/MOVDQA из стандартного набора SSE/SSE2). В противном случае LDDQU загружает целых 32 байта, начиная с выровненного адреса (ниже запрашиваемого) с последующим извлечением требуемых 16 байт. Использование этой инструкции позволяет достичь значительного увеличения производительности при загрузке невыровненных 128-разрядных значений из памяти, по сравнению со стандартными инструкциями MOVUPS/MOVUPD/MOVDQU SIMD-расширений SSE/SSE2;
4. одновременное сложение/вычитание. В эту подгруппу входят две новые инструкции, первая из которых работает с четырехкомпонентными векторами чисел одинарной точности (SSE), вторая — с двухкомпонентными векторами чисел двойной точности (SSE2).
Команда ADDSUBPS — сложение второго и четвертого элементов с одинарной точностью с одновременным вычитанием первого и третьего элементов. Эта инструкция используется при работе с комплексными числами в случае использования соответствующего типа переменных.
Операнд A (128 бит, 4 элемента): a3 | a2 | a1 | a0 Операнд B (128 бит, 4 элемента): b3 | b2 | b1 | b0 ADDSUBPS A, B Результат (операнд A): a3+b3 | a2-b2 | a1+b1 | a0-b0
Команда ADDSUBPD — ведет себя аналогично, но работает с числами двойной точности (двухэлементными операндами SSE2):
Операнд A (128 разрядов, 2 элемента): a1 | a0 Операнд B (128 разрядов, 2 элемента): b1 | b0 ADDSUBPD A, B Результат (операнд A): a1+b1 | a0-b0;
5.горизонтальное сложение/вычитание. Пятая подгруппа представлена четырьмя командами, осуществляющими принципиально новые операции для SIMD расширений семейства SSE/SSE2. Первые две из них работают с четырехкомпонентными векторами с одинарной точностью, остальные — с двухкомпонентными векторами с двойной точностью.
Команда HADDPS — осуществляет горизонтальное сложение элементов с одинарной точностью. Первый элемент, записываемый в операнд назначения, является суммой первого и второго элементов первого (исходного) операнда; второй элемент — суммой третьего и четвертого элементов первого операнда; третий элемент — суммой первого и второго элементов второго операнда (операнда назначения) и, наконец, четвертый элемент — суммой третьего и четвертого элементов второго операнда.
Операнд A (128 разрядов, 4 элемента): a3 | a2 | a1 | a0 Операнд B (128 разрядов, 4 элемента): b3 | b2 | b1 | b0 HADDPS A, B Результат (операнд A): b2+b3 | b0+b1 | a2+a3 | a0+a1
Команда HSUBPS — осуществляет горизонтальное вычитание элементов с одинарной точностью. Ее поведение аналогично HADDPS, единственным отличием является использование операции вычитания вместо сложения:
Операнд A (128 разрядов, 4 элемента): a3 | a2 | a1 | a0 Операнд B (128 разрядов, 4 элемента): b3 | b2 | b1 | b0 HSUBPS A, B Результат (операнд A): b2-b3 | b0-b1 | a2-a3 | a0-a1
Команда HADDPD — осуществляет горизонтальное сложение элементов с двойной точностью. Первым (нижним) результирующим элементом является сумма нижней и верхней частей первого (исходного) операнда, вторым (верхним) — сумма нижней и верхней половин второго операнда (операнда назначения):
Операнд A (128 разрядов, 2 элемента): a1 | a0 Операнд B (128 разрядов, 2 элемента): b1 | b0 HADDPD A, B Результат (операнд A): b0+b1 | a0+a1
Команда HSUBPD — осуществляет горизонтальное вычитание элементов с двойной точностью. Эта инструкция аналогична HADDPS, но использует операцию вычитания вместо сложения:
Операнд A (128 разрядов, 2 элемента): a1 | a0 Операнд B (128 разрядов, 2 элемента): b1 | b0 HSUBPD A, B Результат (операнд A): b0-b1 | a0-a1;
6. синхронизация потоков. В последнюю подгруппу включены две инструкции, предназначенные для использования в системном программировании, с целью предоставления возможности более эффективной синхронизации потоков, в частности, при использовании технологии Hyper-Threading. Эти инструкции могут быть использованы при разработке операционных систем и драйверов устройств с целью улучшения производительности процессора и снижения энергопотребления последнего.