
- •Развитие микропроцессорных архитектур
- •Введение ……………………………………………….........................................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
9. Обзор simd-команд
9.1. Команды передачи данных
Команды этой группы выполняют операции параллельной передачи упакованных элементов данных, а также передачу только младшего элемента операнда. Действия производятся над операндами, расположенными в XMM-регистрах или в памяти.
Командами параллельной передачи данных являются команды: MOVAPS, MOVUPS, MOVHPS, MOVHLPS, MOVLHPS, MOVLPS, MOVMSKPS, MOVSS.
Команда MOVAPS (Move aligned packed, single-precision, floating-point – передача выровненных упакованных данных с плавающей запятой одинарной точности) передает 128 бит упакованных данных из памяти в SIMD-регистр или обратно, или между SIMD-регистрами. Линейный адрес соответствует адресу младшего байта группы данных в памяти. Обращение в память должно быть по адресу, кратному 16 байтам; в противном случае генерируется исключение.
Команда MOVUPS (Move unaligned packed, single-precision, floating-point – передача невыровненных упакованных данных с плавающей запятой с одинарной точностью) передает 128 бит упакованных данных из памяти в SIMD-регистр или наоборот, или между SIMD-регистрами. Команда MOVUPS применяется для обращения к невыровненным данным в памяти.
Команда MOVHPS (Move unaligned, high packed, single-precision, floating-point – передача невыровненных старших упакованных данных с плавающей запятой с одинарной точностью) передает 64 бита упакованных данных из памяти в два старших элемента SIMD-регистра с плавающей запятой или наоборот. При передаче данных из памяти в SIMD-регистр, два младших элемента этого регистра не изменяются. Команда работает с адресом младшего байта группы данных в памяти.
Команда MOVHLPS (Move high to low packed, single-precision, floating-point – передача упакованных старших бит в младшие разряды, с плавающей запятой с одинарной точностью) передает старшие 64 бита из исходного регистра в младшие 64 бита регистра назначения. Старшие 64 бита регистра назначения не изменяются.
Команда MOVLHPS (Move low to high packed, single-precision, floating-point – передача младших упакованных разрядов в старшие разряды, с плавающей запятой с одинарной точностью) передает младшие 64 бита из исходного регистра в старшие 64 бита регистра назначения. Младшие 64 бита регистра назначения не изменяются.
Команда MOVLPS (Move unaligned, low packed, single-precision, floating-point – передача невыровненных, упакованных младших разрядов с плавающей запятой с одинарной точностью)) передает 64 бита упакованных данных из памяти в два младшие элемента SIMD-регистра с плавающей точкой и наоборот. При передаче данных из памяти в SIMD-регистр, два старших элемента этого регистра не изменяются. Линейный адрес соответствует адресу младшего байта группы данных в памяти.
Команда MOVMSKPS (Move mask packed, single-precision, floating-point – передача старших упакованных данных с плавающей запятой с одинарной точностью) передает содержимое старших (знаковых) разрядов каждого из четырех FP-элементов, находящихся во входном регистре, в младшие разряды выходного целочисленного регистра, и формирует таким образом 4-битовую маску. Старшие 28 разрядов целочисленного регистра обнуляются.
Команда MOVSS (Move scalar single-precision, floating-point – передача скалярных данных с плавающей запятой с одинарной точностью) передает младшие 32 бита из памяти в SIMD-регистр с плавающей точкой или наоборот, или между регистрами. При передаче 32 битов данных из памяти в SIMD-регистр, все 96 оставшихся старших битов этого регистра обнуляются. Команда работает с адресом младшего байта группы данных в памяти.