Арифметическое устройство компьютера
Арифмети́ческое устро́йство компью́тера (АУ), одно из основных устройств компьютера, входящее в состав процессора, в котором выполняются арифметические и логические операции, т. е. происходит собственно преобразование информации.
Различают АУ универсальные и специализированные. Универсальное АУ выполняет такие операции, как сложение, вычитание, сравнение, преобразование, умножение, деление, извлечение квадратного корня, сдвиг и другие, предусмотренные системой команд электронно-вычислительной машины (ЭВМ). Основной вид универсального АУ – арифметико-логическое устройство (АЛУ). Оно обрабатывает числа с фиксированной запятой (целые числа), выполняет операции сложения, вычитания, сдвига и логические операции.
Специализированное АУ выполняет группу близких по алгоритму операций. Так, устройство сложения реализует операции сложения, вычитания, сравнения и преобразования типов и форматов данных; устройство деления – деление и извлечение квадратного корня. Универсальное АЛУ имеет меньший объём оборудования, чем несколько специализированных, совместно выполняющих такие же функции. Преимуществом специализированного АУ является меньшее время выполнения операции.
В состав АУ входят регистры, сумматоры, коммутаторы, сдвигатели, кодировщики приоритетов, дешифраторы и другие узлы. Регистры предназначены для временного хранения информации, а сумматоры, сдвигатели и др. – для преобразования данных. Скорость работы этих узлов, особенно сумматора, в значительной степени определяет быстродействие АУ.
Для работы АУ необходимо получить код операции и операнды (числа, над которыми выполняется операция). В вычислительных машинах существует несколько форм представления чисел: с фиксированной запятой (преимущественно для целых чисел), двоично-десятичные и с плавающей запятой. Форматы данных и операции над числами с плавающей запятой определены в стандарте IEEE 754 (1985), разработанном Институтом инженеров электротехники и электроники. Для представления целых чисел в ЭВМ обычно применяют 8-, 16-, 32- и 64-разрядные форматы, а для вещественных – 32-, 64-, 80- и 128-разрядные.
Основные характеристики АУ: тип обрабатываемых операндов и их формат, время выполнения операций, пропускная способность. Время выполнения операций сложения, вычитания и сравнения целых чисел, логических операций и операций сдвига обычно соответствует 1 такту (в самых быстрых современных ЭВМ составляет 2∙10–9–2∙10–10 с). Для чисел с плавающей запятой 64-разрядного формата сложение занимает 2–4 такта, умножение 2–5 тактов, а деление от 9 до 60 тактов. Пропускная способность определяется тем, через сколько тактов после начала операции устройство может начать выполнение следующей операции. АУ, которое организовано по принципу конвейера, способно каждый такт запускать новую операцию, что обеспечивает большую производительность ЭВМ. Для повышения скорости работы АУ используют более быстродействующую элементную базу, разрабатывают новые алгоритмы работы устройства, расширяют систему команд. Использование в ЭВМ нескольких специализированных АУ позволяет выполнять одновременно несколько арифметических операций, что существенно увеличивает производительность ЭВМ.
Начиная с 1990-х гг. получило распространение АУ, совмещающее умножение чисел с плавающей запятой со сложением (А·В+С). В таких АУ время выполнения сложной операции меньше суммы времён умножения и сложения. При этом экономится оборудование и уменьшается ошибка округления, т. к. округление производится только один раз. Эти устройства позволяют делить и извлекать квадратный корень по методу Ньютона – Рафсона и вычислять некоторые трансцендентные функции в ЭВМ, в которой отсутствует устройство деления. В это же время получили широкое распространение векторные и мультимедийные АУ (доступные посредством расширений систем команд Intel MMX, AMD 3DNow!, ARM Neon, Motorola AltiVec и др.), позволяющие выполнять одну и ту же операцию одновременно над несколькими парами операндов (например, независимое сложение шестнадцати пар чисел с плавающей запятой одинарной точности, доступное в расширении системы команд Intel AVX-512). Помимо работы с графической и аудиоинформацией, где приходится обрабатывать большие объёмы данных небольшой разрядности, они также активно применяются при ручном программировании критических по производительности участков кода [например, подсчёт контрольных сумм в программной реализации некоторых уровней RAID (от англ. Redundant Array of Independent Disks – избыточный массив независимых дисков)] либо автоматической векторизации циклов современными оптимизирующими компиляторами.
Особые требования к АУ предъявляются в специализированных ЭВМ, предназначенных для цифровой обработки сигналов (ЦОС), например радиолокационных. Они, как правило, обрабатывают числа с фиксированной запятой 16- и 32-разрядных форматов в режиме реального времени и очень часто используют АУ, выполняющие умножение с накоплением за 1 такт (перемножаются два целых операнда и прибавляется результат, полученный в предыдущей команде), т. к. эта операция часто используется в алгоритмах ЦОС. Технологический прогресс позволяет разработчикам реализовывать в АУ всё более сложные и быстрые алгоритмы.