- •7 Форма представления чисел с фиксированной точкой
- •8 Форма представления чисел с плавающей точкой
- •9 Форматы двоично-десятичных чисел
- •10. Машинные коды
- •Прямой код
- •Обратный код
- •. Дополнительный код
- •11 Составные части компьютера
- •13. Триггеры
- •12 Логические элементы
- •2.12.2. Асинхронный rs-триггер
- •2.12.3. Синхронный rs-триггер
- •2.12.3. Двухтактный rs-триггер
- •14 Асинхронный и синхронный d-триггеры
- •17. Дешифраторы
- •18 Одноразрядный сумматор
- •Полусумматор
- •19. Многоразрядные сумматоры
- •20 Двоично-десятичные сумматоры
- •21 Мультиплексоры
- •22. Демультиплексоры
- •23. Регистры
- •24 Счетчики
- •25 Двоично-десятичные счетчики
- •26 Классификация архитектур системы команд
- •27 Классификация по составу и сложности команд
- •28 Классификация по месту хранения операндов
- •29 Архитектура с выделенным доступом к памяти
- •30 Типы команд
- •Команды пересылки данных
- •Операции с целыми числами
- •Операции с числами в форме с плавающей запятой
- •Логические операции
- •Операции сдвигов
- •Операции с десятичными числами
- •Simd-команды
- •Команды для работы со строками
- •Команды преобразования
- •Команды ввода/вывода
- •Команды управления системой
- •Команды управления потоком команд
- •31 Формат команд
- •Длина команды
- •Разрядность полей команды
- •32 Выбор адресности команд
- •33. Способы адресации операндов
- •Непосредственная адресация
- •Прямая адресация
- •Косвенная адресация
- •Регистровая адресация
- •34 Косвенная регистровая адресация
- •Адресация со смещением
- •Относительная адресация
- •35 Базовая регистровая адресация
- •Индексная адресация
- •Страничная адресация
- •Блочная адресация
- •36 Распространенность различных видов адресации
- •Способы адресации в командах управления потоком команд
- •37 Функциональная организация фон-неймановской вычислительной машины
- •38 Устройство управления
- •39 Арифметико-логическое устройство
- •40 Основная память
- •Модуль ввода/вывода
- •41. Стандартный цикл команды
- •42 Организация шин
- •43 Шины «процессор-память»
- •Шина ввода/вывода
- •44 Системная шина
- •45 Иерархия шин
- •46 Арбитраж шин
- •47 Протокол шины
- •48 Методы повышения эффективности шин
- •49 Стандартизация шин
Операции с десятичными числами
Десятичные числа представляются в вычислительной машине в двоично-кодированной форме. В вычислительных машинах первых поколений для обработки таких чисел предусматривались специальные команды, обеспечивавшие выполнение основных арифметических операций (сложение, вычитание, умножение и деление). В архитектуре структуры команд современных машин подобных команд обычно нет, а соответствующие вычисления имитируются с помощью команд целочисленной арифметики с последующей коррекцией полученного результата.
Simd-команды
Название данного типа команд представляет собой аббревиатуру от Single Instruction Multiple Data – буквально «одна инструкция – много данных». В отличие от обычных команд, оперирующих двумя числами, SIMD-команды обрабатывают сразу две группы чисел (в принципе их можно называть групповыми командами). Операнды таких команд обычно представлены в одном из упакованных форматов.
Поводом для появления таких команд послужило широкое распространение мультимедийных приложений. Видео, трехмерная графика и звук в вычислительных машинах представляются большими массивами данных, элементы которых чаще всего обрабатываются идентично. Так, при сжатии видео и преобразовании его в формат MPEG один и тот же алгоритм применяется к тысячам битов данных. В трехмерной графике часто встречаются операции, которые можно выполнить за один такт: интерполирование и нормировка векторов, вычисление скалярного произведения векторов, интерполяция компонентов цвета и т. д. Включение SIMD-команд в архитектуру структуры команд позволяет существенно ускорить подобные вычисления.
Первой на мультимедийный бум отреагировала фирма Intel, добавив в систему команд своего микропроцессора Pentium MMX 57 SIMD-команд. Название ММХ (MultiMedia eXtention - мультимедийное расширение) разработчики обосновывали тем, что при выборе состава новых команд были проанализированы алгоритмы, применяемые в различных мультимедийных приложениях. Команды ММХ обеспечивали параллельную обработку упакованных целых чисел. При выполнении арифметических операций каждое из чисел, входящих в группу, рассматривается как самостоятельное, без связи с соседними числами. Учитывая специфику обрабатываемой информации, команды ММХ реализуют так называемую арифметику с насыщением: если в результате сложения образуется число, выходящее за пределы отведенных под него позиций, оно заменяется наибольшим двоичным числом, которое в эти позиции вмещается. На рис. 2.54 показано сложение двух групп четырехразрядных целых чисел, упакованных в 32-разрядные слова.
|
|
0 |
0 |
0 |
0 |
1 |
2 |
3 |
9 |
{1, 2, 3, 9} = 0000123916 |
|
0000 |
0000 |
0000 |
0000 |
0001 |
0010 |
0011 |
1001 |
|
+ |
|
|
|
|
|
|
|
|
|
|
0 |
0 |
0 |
0 |
5 |
6 |
7 |
8 |
{5, 6, 7, 8} = 0000567816 |
|
0000 |
0000 |
0000 |
0000 |
0101 |
0110 |
0111 |
1000 |
|
|
|
|
|
|
|
|
|
|
|
|
0 |
0 |
0 |
0 |
6 |
8 |
10 |
15 |
{6, 8, 10, 15} = 000068AF16 |
|
0000 |
0000 |
0000 |
0000 |
0110 |
1000 |
1010 |
1111 |
|
|
31 28 |
27 24 |
23 20 |
19 16 |
15 12 |
11 8 |
7 4 |
3 0 |
Рис. 2.54. Сложение с насыщением упакованных целых чисел
Следующим шагом стало создание новых наборов SIMD-команд, работающих также с операндами, представленными в виде упакованных чисел с плавающей запятой. Такие команды в соответствующих приложениях повышают производительность процессора примерно вдвое. Первой подобную технологию в середине 1998 года предложила фирма AMD в микропроцессоре К6-2. Это мультимедийное расширение включало в себя 21 SIMD-команду и получило название 3DNow!. Расширение 3DNow! в дополнение к SIMD-обработке целочисленной информации типа ММХ позволяло оперировать парой упакованных чисел в формате с плавающей запятой.
В дальнейшем наборы SIMD-команд стали обозначать аббревиатурой SSE – Streaming SIMD Extension (потоковая обработка по принципу «одна команда – много нанных»). В последних разработках фирм Intel и AMD технология обозначена как SSE4, при этом у каждой из фирм она имеет свои особенности. Так в микропроцессорах с ядром Penryn фирмы Intel реализован набор из 47 SIMD-команд (SSE4.1), в микропроцессорах с ядром Nehalem (Core i7) – дополнено еще 7 команд (SSE4.2). Микропроцессоры Phenom фирмы AMD поддерживают лишь 4 команды из SSE4, но дополнительно реализуют две новые команды, обозначаемые как SSE4а. В 2007 году фирма AMD анонсировало новый стандарт – SSE5, преподносимый как 128-разрядное расширение SSE. Предполагается набор из 170 команд, который будет реализован в процессорах Bulldozer.
