Арифметико-логическое устройство (АЛУ) реализует стандартный набор арифметических и логических команд. К арифметическим командам относятся сложение, вычитание, изменение знака числа, инкрементирование, декрементирование и нахождение абсолютного значения числа. Эти команды дополнены двумя примитивами деления, при помощи которых за несколько машинных циклов может выполнена команда деления. К логическим командам относятся инструкции "логическое И" (AND), "логическое ИЛИ" (OR), "исключающее ИЛИ" (XOR) и "логическое НЕ" (NOT).
Рисунок 1. Структурная схема АЛУ сигнальных процессоров семейства ADSP-2100
В сигнальных процессорах ADSP-21xx применено 16 разрядное АЛУ c двумя 16-битовыми входами X и Y, и одним выходом R. АЛУ может учитывать флаг (признак) переноса (CI), который хранится в регистре состояния процессора (ASTAT). При выполнении команд АЛУ формирует 6 флагов (признаков): нулевой результат (AZ), отрицательный результат (AN), перенос в 16-й разряд (АС), флаг (признак) переполнения (AV), ввода знака через порт X (AS) и флаг частного (AQ). Все флаги (признаки), сформированные АЛУ, в конце машинного цикла запоминаются в регистре состояния процессора ASTAT. С более полной информацией о формировании флагов каждой командой можно ознакомиться в главе "Описание команд сигнального процессора ADSP-21xx".
На вход X АЛУ могут поступать данные либо из регистров АХ, либо из шины результатов (Р-шина). Р-шина соединяет выходные регистры всех вычислительных устройств, позволяя использовать их непосредственно в качестве входного операнда АЛУ. В АЛУ сигнального процессора ADSP-21xx регистры AX предназначены для входа X АЛУ. Регистровый файл AX содержит два регистра: АХ0 и АХ1. Считывание и запись содержимого этих регистров может производиться по шине данных памяти данных ДПД. Наборе команд позволяет читать эти регистры по шине данных памяти программ ДПП, но эти операции производятся через устройство обмена данными между шинами ДПП и ДПД, прямого соединения регистров AX с шиной данных памяти программ нет. Выходы регистров АХ двухпортовые, что позволяет осуществлять одновременно ввод данных с выхода одного регистра AX в АЛУ, и передачу данных с выхода другого на шину ДПД.
На вход Y АЛУ могут поступать данные из двух источников: регистров AY и регистра обратной связи AF. АЛУ содержит два регистра AY: AY0 и AY1. Считывание из этих регистров и запись в них производится с шины ДПД, запись может производится из шины ДПП. В наборе команд предусматривается считывание данных из этих регистров по шину ДПП, но прямого соединения регистров AY с шиной памяти программ не существует; в этой операции используется устройство обмена данными между шинами ДПП и ДПД. Выходы регистров АY двухпортовые, что позволяет осуществлять одновременно ввод данных с выхода одного регистра AX в АЛУ, и передачу данных с выхода другого на шину ДПД.
Выходные данные АЛУ могут быть сохранены либо в регистре обратной связи АЛУ (AF), либо в регистре результатов АЛУ (AR). Регистр AF позволяет использовать результат АЛУ в качестве входного значения для входа Y АЛУ в следующей операции. Регистр AR может быть считан как по шине ДПД, так и по шине результатов. Этот регистр может прямо загружаться с шины ДПД. В наборе команд предусматривается также считывание с AR на шину ДПП, но в данном случае нет прямого соединения; для этой операции используется устройство обмена данными между шинами ДПП и ДПД.
В любой из регистров вычислительного блока АЛУ, может производиться запись и считывание в течении одного и того же машинного цикла. Считывание данных из регистров производится в начале машинного цикла, а запись — в конце. Следовательно, при считывании из регистра считывается значение, загруженное в этот регистр в конце предыдущего цикла. Новое значение, записанное в регистр, не может быть считано до начала следующего цикла. Это позволяет регистрам передавать данные в АЛУ в начале цикла и записывать следующее значение из памяти сигнального процессора в конце того же цикла. Это также позволяет сохранять содержимое регистра результатов в памяти данных и записывать в этот регистр новое значение в течении одного и того же цикла.
В АЛУ содержится два банка регистров AR, AF, АХ и AY. Второй банк регистров показан на рисунке 1 в виде тени за основными регистрами. В любой момент времени доступным является только один банк регистров. Теневой банк регистров может быть задействован для быстрого переключения между задачами (например, во время обслуживания подпрограммы обслуживания прерывания). В этом случае новая задача (т.е. обслуживание прерывания) может быть выполнена без сохранения текущих значений регистров в стеке (памяти сигнального процессора).