Арифметико-логическое устройство

Функции [ править ]

ALU обычно поддерживает ряд основных арифметических и побитовых логических функций. Базовые ALU общего назначения обычно включают в свой репертуар следующие операции:

Арифметические операции править

  • : A и B суммируются, и сумма появляется в Y и переносится.
  • Сложение с переносом : A, B и перенос суммируются, и сумма отображается в Y и переносе.
  • : B вычитается из A (или наоборот), а разница появляется в Y и переносе. Для этой функции выполнение фактически является индикатором «заимствования». Эту операцию также можно использовать для сравнения величин A и B; в таких случаях выход Y может игнорироваться процессором, который интересуется только битами состояния (в частности, нулевым и отрицательным), которые возникают в результате операции.
  • Вычесть с заимствованием : B вычитается из A (или наоборот) с заимствованием (переносом), а разница появляется в Y и переносе (заимствовании).
  • Дополнение до двух (отрицание) : A (или B) вычитается из нуля, и разница появляется в Y.
  • Приращение : A (или B) увеличивается на единицу, и результирующее значение появляется в Y.
  • Уменьшение : A (или B) уменьшается на единицу, и результирующее значение появляется в Y.
  • Проходить : все биты A (или B) отображаются без изменений в Y. Эта операция обычно используется для определения четности операнда, равно нулю или отрицательности, или для загрузки операнда в регистр процессора.

Побитовые логические операции править

  • : побитовое И для A и B появляется в Y.
  • : побитовое ИЛИ A и B появляется в Y.
  • : побитовое исключающее ИЛИ A и B появляется в Y.
  • : все биты A (или B) инвертируются и появляются в Y.

Операции битового сдвига править

Примеры битового сдвига для восьмиразрядного ALU
Тип
Оставили
Правильно
Арифметический сдвиг
Логический сдвиг
Повернуть
Повернуть через перенос

Операции сдвига ALU заставляют операнд A (или B) сдвигаться влево или вправо (в зависимости от кода операции), и смещенный операнд появляется в Y. Простые ALU обычно могут сдвигать операнд только на одну битовую позицию, тогда как более сложные ALU используют цилиндрические сдвиги , позволяют им сдвигать операнд на произвольное количество бит за одну операцию. Во всех операциях однобитового сдвига бит, смещенный из операнда, появляется при выполнении; значение сдвигаемого в операнд бита зависит от типа сдвига.

  • : операнд обрабатывается какцелое число с дополнением до двух , что означает, что самый старший бит является «знаковым» битом и сохраняется.
  • : в операнд сдвигается логический ноль. Используется для сдвига целых чисел без знака.
  • : операнд обрабатывается как кольцевой буфер битов, поэтому его младший и самый старший биты фактически смежны.
  • : бит переноса и операнд вместе рассматриваются как кольцевой буфер битов.

Работа схемы [ править ]

Комбинационная логическая схема из интегральной схемы, которая является простым четыре бита ALU

ALU — это комбинационная логическая схема, что означает, что его выходы будут изменяться асинхронно в ответ на изменения входа. В нормальном режиме работы стабильные сигналы подаются на все входы ALU, и, когда прошло достаточно времени (известное как « задержка распространения ») для распространения сигналов через схему ALU, результат работы ALU появится на ALU. выходы. Внешняя схема, подключенная к ALU, отвечает за обеспечение стабильности входных сигналов ALU на протяжении всей операции и за обеспечение достаточного времени для распространения сигналов через ALU перед выборкой результата ALU.

Как правило, внешняя схема управляет ALU, подавая сигналы на его входы. Как правило, внешняя схема использует последовательную логику для управления работой ALU, которая регулируется тактовым сигналом достаточно низкой частоты, чтобы обеспечить достаточно времени для выхода ALU для стабилизации в худших условиях.

Например, ЦП начинает операцию добавления ALU, направляя операнды из их источников (которые обычно являются регистрами) на входы операндов ALU, в то время как блок управления одновременно применяет значение ко входу кода операции ALU, настраивая его для выполнения сложения. В то же время ЦП также направляет вывод результата ALU в регистр назначения, который получит сумму. Входные сигналы ALU, которые остаются стабильными до следующих часов, могут распространяться через ALU и в регистр назначения, пока CPU ожидает следующих часов. Когда приходят следующие часы, регистр назначения сохраняет результат ALU, и, поскольку операция ALU завершена, входы ALU могут быть настроены для следующей операции ALU.

Организация и принципы действия

Одноразрядное троичное бинарное (двухоперандное) АЛУ с унарным (одноразрядным) выходом (полуАЛУ) может выполнять до троичных бинарных (двухоперандных) функций (операций) с унарным (одноразрядным) выходом.

Одноразрядное троичное бинарное (двухоперандное) АЛУ с бинарным (двухразрядным) выходом может выполнять до троичных бинарных (двухоперандных) функций (операций) с бинарным (двухразрядным) выходом.

Арифметико-логическое устройство в зависимости от выполнения функций можно разделить на две части:

  1. микропрограммное устройство (устройство управления), задающее последовательность микрокоманд (команд);
  2. операционное устройство, в котором реализуется заданная последовательность микрокоманд (команд).

В состав арифметико-логического устройства, условно, для примера на картинке, включается регистры Рг1 — Рг7, которые служат для обработки информации, поступающей из оперативной или пассивной памяти N1, N2, …NS и логические схемы, которые используются для обработки слов по микрокомандам, поступающим из устройства управления. Различают два вида микрокоманд: внешние — такие микрокоманды, которые поступают в АЛУ от внешних источников и вызывают в нём преобразование информации (на рисунке 2 это микрокоманды А1,А2,…,Аn) и внутренние — те, которые генерируются в АЛУ и оказывают влияние на микропрограммное устройство, изменяя таким образом нормальный порядок следования команд. р1, p2,…, pm на рисунке 2 — это и есть микрокоманды. А результаты вычислений из АЛУ передаются в ОЗУ по кодовым шинам записи у1, у2, …, ys.

Функции регистров, входящих в арифметико-логическое устройство

  • Рг1 — аккумулятор (или аккумуляторы) — главный регистр АЛУ, в котором образуется результат вычислений;
  • Рг2,Рг3 — регистры операндов (слагаемого/сомножителя/делителя/делимого и др.) в зависимости от выполняемой операции;
  • Рг4 — регистр адреса (или адресные регистры), предназначенные для запоминания (бывает что формирования) адреса операндов результата;
  • Рг6 — k индексных регистров, содержимое которых используется для формирования адресов;
  • Рг7 — l вспомогательных регистров, которые по желанию программиста могут быть аккумуляторами, индексными регистрами или использоваться для запоминания промежуточных результатов.

Часть операционных регистров могут быть адресованы в команде для выполнения операций с их содержимым и их называют программно-доступными. К таким регистрам относятся: сумматор, индексные регистры и некоторые вспомогательные регистры. Остальные регистры нельзя адресовать в программе, то есть они являются программно-недоступными.

Операционные устройства можно классифицировать по виду обрабатываемой информации, по способу её обработки и по логической структуре. Более подробная классификация указана на рис.3.

Такая сложная логическая структура АЛУ может характеризоваться количеством отличающихся друг от друга микроопераций, которые необходимы для выполнения всего комплекса задач, поставленных перед арифметико-логическим устройством. На входе каждого регистра собраны соответствующие логические схемы, обеспечивающие такие связи между регистрами, что позволяет реализовать заданные микрооперации. Выполнение операций над словами сводится к выполнению определённых микроопераций, которые сводятся в свою очередь … управляют передачей слов в АЛУ и действиями по преобразованию слов. Порядок выполнения микрокоманд определяется алгоритмом выполнения операций. То есть, связи между регистрами АЛУ и их функциями зависят в основном от принятой методики выполнения логических операций, в том числе арифметических или специальной арифметики.

Команды (инструкции)

Команды — это фактические действия, которые компьютер должен выполнять. Они бывают нескольких типов:

  • Арифметические: сложение, вычитание, умножение и т. д.
  • Логические: И (логическое умножение/конъюнкция), ИЛИ (логическое суммирование/дизъюнкция), отрицание и т. д.
  • Информационные: move , input , outptut , load и store .
  • Команды перехода: goto , if . goto , call и return .
  • Команда останова: halt .

Прим. перев. На самом деле все арифметические операции в АЛУ могут быть созданы на основе всего двух: сложение и сдвиг. Однако чем больше базовых операций поддерживает АЛУ, тем оно быстрее.

Инструкции предоставляются компьютеру на языке ассемблера или генерируются компилятором высокоуровневых языков.

В процессоре инструкции реализуются на аппаратном уровне. За один такт одноядерный процессор может выполнить одну элементарную (базовую) инструкцию.

Группу инструкций принято называть набором команд (англ. instruction set).

Литература[править | править код]

  • Каган Б. М. Электронные вычислительные машины и системы. — 3-е изд., перераб. и доп. — Энергоатомиздат, 1991. — ISBN 5-283-01531-9.
  • Угрюмов Е. П. Цифровая схемотехника. Учеб. пособие для вузов. Изд. 2. — БХВ-Петербург, 2004.
  • Самофалов К. Г., Романкевич А. М., Валуйский В. Н., Каневский Ю. С., Пиневич М. М. Прикладная теория цифровых автоматов. — К.: Вища школа, 1987. — С. 375.
  • Ершов А. П., Монахов В. М., Бешенков С. А. и др. 1 // Основы информатики и вычислительной техники: Проб. учеб. пособие для сред. учеб. заведений. В 2 ч. — М.: Просвещение, 1985. — С. 96.
  • Ершов А. П., Монахов В. М., Кузнецов А. А. и др. 2 // Основы информатики и вычислительной техники: Проб. учеб. пособие для сред. учеб. заведений. В 2 ч. — М.: Просвещение, 1986. — С. 143.

Классификация АЛУ

  • По способу действия над операндами АЛУ делятся на последовательные и параллельные. В последовательных АЛУ операнды представляются в последовательном коде, а операции производятся последовательно во времени над их отдельными разрядами. В параллельных АЛУ операнды представляются параллельным кодом и операции совершаются параллельно во времени над всеми разрядами операндов.
  • По способу представления чисел различают АЛУ:

    1. для чисел с фиксированной точкой;
    2. для чисел с плавающей точкой;
    3. для десятичных чисел.
  • По характеру использования элементов и узлов АЛУ делятся на блочные и многофункциональные. В блочном АЛУ операции над числами с фиксированной и плавающей точкой, десятичными числами и алфавитно-цифровыми полями выполняются в отдельных блоках, при этом повышается скорость работы, так как блоки могут параллельно выполнять соответствующие операции, но значительно возрастают затраты оборудования. В многофункциональных АЛУ операции для всех форм представления чисел выполняются одними и теми же схемами, которые коммутируются нужным образом в зависимости от требуемого режима работы.
  • По своим функциям АЛУ является операционным блоком, выполняющим микрооперации, обеспечивающие приём из других устройств (например, памяти) операндов, их преобразование и выдачу результатов преобразования в другие устройства. Арифметическо-логическое устройство управляется управляющим блоком, генерирующим управляющие сигналы, инициирующие выполнение в АЛУ определённых микроопераций. Генерируемая управляющим блоком последовательность сигналов определяется кодом операции команды и оповещающими сигналами.

Хранение информации — регистры и память

Как говорилось ранее, процессор выполняет поступающие на него команды. Команды в большинстве случаев работают с данными, которые могут быть промежуточными, входными или выходными. Все эти данные вместе с инструкциями сохраняются в регистрах и памяти.

Регистры

Регистр — минимальная ячейка памяти данных. Регистры состоят из триггеров (англ. latches/flip-flops). Триггеры, в свою очередь, состоят из логических элементов и могут хранить в себе 1 бит информации.

Прим. перев. Триггеры могут быть синхронные и асинхронные. Асинхронные могут менять своё состояние в любой момент, а синхронные только во время положительного/отрицательного перепада на входе синхронизации.

По функциональному назначению триггеры делятся на несколько групп:

  • RS-триггер: сохраняет своё состояние при нулевых уровнях на обоих входах и изменяет его при установке единице на одном из входов (Reset/Set — Сброс/Установка).
  • JK-триггер: идентичен RS-триггеру за исключением того, что при подаче единиц сразу на два входа триггер меняет своё состояние на противоположное (счётный режим).
  • T-триггер: меняет своё состояние на противоположное при каждом такте на его единственном входе.
  • D-триггер: запоминает состояние на входе в момент синхронизации. Асинхронные D-триггеры смысла не имеют.

Для хранения промежуточных данных ОЗУ не подходит, т. к. это замедлит работу процессора. Промежуточные данные отсылаются в регистры по шине. В них могут храниться команды, выходные данные и даже адреса ячеек памяти.

Принцип действия RS-триггера

Память (ОЗУ)

ОЗУ (оперативное запоминающее устройство, англ. RAM) — это большая группа этих самых регистров, соединённых вместе. Память у такого хранилища непостоянная и данные оттуда пропадают при отключении питания. ОЗУ принимает адрес ячейки памяти, в которую нужно поместить данные, сами данные и флаг записи/чтения, который приводит в действие триггеры.

Прим. перев. Оперативная память бывает статической и динамической — SRAM и DRAM соответственно. В статической памяти ячейками являются триггеры, а в динамической — конденсаторы. SRAM быстрее, а DRAM дешевле.

Выполнение

ALU обычно реализуется как автономный Интегральная схема (IC), например , или как часть более сложной ИС. В последнем случае экземпляр ALU обычно создается путем его синтеза из описания, написанного на VHDL, Verilog или какой-то другой язык описания оборудования. Например, следующий код VHDL описывает очень простой 8 бит ALU:

юридическое лицо алу являетсяпорт (  - алюминиевые соединения с внешней схемой:  А   в  подписанный(7 вниз );   - операнд A  B   в  подписанный(7 вниз );   - операнд B  OP  в  беззнаковый(2 вниз ); - код операции  Y   из подписанный(7 вниз ));  - результат операцииконец алу;архитектура поведенческий из алу являетсяначинать  дело OP является  - расшифровать код операции и выполнить операцию:    когда "000" =>  Y <= А + B;   -- Добавить    когда "001" =>  Y <= А - B;   - вычесть    когда "010" =>  Y <= А - 1;   - декремент    когда "011" =>  Y <= А + 1;   - приращение    когда "100" =>  Y <= нет А;   - 1 дополнение    когда "101" =>  Y <= А и B; - побитовое И    когда "110" =>  Y <= А или же B;  - побитовое ИЛИ    когда "111" =>  Y <= А xor B; - побитовое XOR    когда другие => Y <= (другие => 'ИКС');  конец дело; конец поведенческий;

Операция вычитания

Давайте рассмотрим выполнение еще одной простой арифметической операции:

  1. Значение операнда № 1, принимающего участие в операции вычитания, проходит в Регистр 1 по кодовой шине.
  2. Значение операнда № 2, принимающего участие в операции вычитания, проходит в Регистр 2 по кодовой шине.
  3. Инструкция по выполнению данного алгоритма выводится по кодовой шине инструкций к схеме управления.
  4. Происходит переформирование положительного числа в отрицательное схемой управления.
  5. Результат такого преобразования операнда идет далее в сумматор.
  6. Сумматор выполняет сложение данных чисел.
  7. Результат операции поступает в Регистр 1.
  8. Результат операции вычитания отправляется в результирующий блок.

Функции

Таблица управления для n- битного АЛУ
П 3 F 2 F 1 F Р.
1 А.
1 1 НЕ А
1 А И Б
1 1 А ИЛИ Б
1 1 XOR B
1 1 1 А + В
1 1 1 1 Б — А

Простой n- битный ALU

ALU вычисляет арифметические и логические функции . В старых процессорах (примерно до 8086) он также использовался для

  • увеличение счетчика программы для чтения команд,
  • Рассчитайте относительные прыжки (JR) и
  • манипулирование указателем стека (CALL, RET, PUSH, POP) и вычисление адреса () несут ответственность.

Имеет смысл выполнить как минимум следующие минимальные операции:

  • Арифметика

    Дополнение (ДОБАВИТЬ)

    :

  • Логично :

    • (НЕ)
    • Конъюнкция (операция И, И)
    • Правый сдвиг или поворот (чрезвычайно сложно воспроизвести, в отличие от правого сдвига)

Однако обычно доступны следующие операции, которые также можно смоделировать с использованием трех верхних за счет времени вычислений (в несколько циклов ):

  • Арифметика:
    • Приращение, декремент
    • Сложение с переносом (ADC)
    • Вычитание (SUB)
    • Вычитание с переносом (SBB)
    • Сравнение ( сравнить , CMP)
    • Умножение (MUL) с использованием множителя
    • разделение
    • Десятичная корректировка после сложения (десятичное приближение сложения)
  • Логично:
    • Дизъюнкция (операция ИЛИ, ИЛИ)
    • Противоположная валентность (исключающее или связанное, XOR, EOR )
    • Тестовая команда
    • Сдвиг вправо и влево (вправо, влево, ASR — арифметический сдвиг вправо, ASL — арифметический сдвиг влево, LSR — логический сдвиг вправо, LSL — логический сдвиг влево)
    • Вращение влево и вправо (ROL, ROR)
    • Регистрировать манипуляции и изменения битов (установить, удалить и проверить биты)
    • Сортировка битов и байтов, команды AES, команды CRC

Все ALU обрабатывают числа с фиксированной запятой . Инструкции с плавающей запятой теперь являются стандартными для многих современных процессоров. Исключение составляют микроконтроллеры меньшего размера, которые рассчитаны на низкое энергопотребление или низкие производственные затраты. Тенденция последних 15 лет заключалась в том, чтобы преобразовать ALU в векторную обработку (по состоянию на 2015 год).

Функции регистров АЛУ

Чтобы иметь представление о работе АЛУ, нам нужно поближе познакомиться с функциями его регистров:

  • Pr1. Это аккумулятор или аккумуляторы. Считается главным регистром устройства, в котором и образуется результат произведенных вычислений.
  • Pr2, Pr3. Регистры операндов в зависимости от характера исполняемой операции — слагаемого, делителя, сомножителя и проч.
  • Pr4. Это адресный регистр. Он запоминает (в иных случаях формирует) адреса операндов результата.
  • Pr6. Некое количество индексных регистров. Их содержимое будет использоваться для формирования адресов.
  • Pr7. Вспомогательные регистры. По желанию разработчика могут стать аккумуляторами, индексными или вовсе использоваться для сохранения промежуточных результатов вычисления.

Теперь предлагаем вам обратиться к конкретным алгоритмам работы АЛУ.

История

Математик Джон фон Нейман предложил концепцию ALU в 1945 году в отчете об основах нового компьютера под названием EDVAC.

Стоимость, размер и потребляемая мощность электронных схем были относительно высокими на протяжении всего периода становления. информационный век. Следовательно, все последовательные компьютеры и многие ранние компьютеры, такие как PDP-8, имели простой ALU, который работал с одним битом данных за раз, хотя они часто предоставляли программистам более широкий размер слова. Одним из первых компьютеров с несколькими дискретными однобитными схемами ALU был компьютер 1948 года. Вихрь I, в котором использовалось шестнадцать таких «математических модулей», позволяющих оперировать 16-битными словами.

В 1967 г. Fairchild представила первый ALU, реализованный в виде интегральной схемы, Fairchild 3800, состоящий из восьмиразрядного ALU с аккумулятором. Вскоре появились другие ALU на интегральных схемах, в том числе четырехразрядные ALU, такие как Am2901 и . Эти устройства обычно «кусочек«способный» означает, что у них были сигналы «с упреждением», которые облегчили использование нескольких взаимосвязанных микросхем ALU для создания ALU с более широким размером слова. Эти устройства быстро стали популярными и широко использовались в мини-компьютерах с побитовым срезом.

Микропроцессоры начали появляться в начале 1970-х годов. Несмотря на то, что транзисторы стали меньше, часто не хватало места на кристалле для ALU полной ширины слова, и, как результат, некоторые ранние микропроцессоры использовали узкий ALU, который требовал нескольких циклов для каждой инструкции машинного языка. Примеры этого включают популярные Зилог Z80, который выполнял восьмибитное сложение с четырехбитным ALU. Со временем геометрия транзисторов еще больше уменьшилась. Закон Мура, и стало возможным создавать более широкие ALU на микропроцессорах.

Транзисторы современных интегральных схем (ИС) на порядки меньше, чем транзисторы ранних микропроцессоров, что позволяет устанавливать очень сложные АЛУ на ИС. Сегодня многие современные ALU имеют большую ширину слова и архитектурные улучшения, такие как баррель шифтеры и двоичные множители которые позволяют им выполнять за один такт операции, которые потребовали бы нескольких операций на более ранних ALU.

ALU могут быть реализованы как механический, или же электронный схемы[неудачная проверка] а в последние годы были проведены исследования биологических ALU. (например., актин-основан).

Выполнение инструкций

Инструкции хранятся в ОЗУ в последовательном порядке. Для гипотетического процессора инструкция состоит из кода операции и адреса памяти/регистра. Внутри управляющего устройства есть два регистра инструкций, в которые загружается код команды и адрес текущей исполняемой команды. Ещё в процессоре есть дополнительные регистры, которые хранят в себе последние 4 бита выполненных инструкций.

Ниже рассмотрен пример набора команд, который суммирует два числа:

  1. LOAD_A 8 . Это команда сохраняет в ОЗУ данные, скажем, . Первые 4 бита — код операции. Именно он определяет инструкцию. Эти данные помещаются в регистры инструкций УУ. Команда декодируется в инструкцию load_A — поместить данные 1000 (последние 4 бита команды) в регистр A .
  2. LOAD_B 2 . Ситуация, аналогичная прошлой. Здесь помещается число 2 ( 0010 ) в регистр B .
  3. ADD B A . Команда суммирует два числа (точнее прибавляет значение регистра B в регистр A ). УУ сообщает АЛУ, что нужно выполнить операцию суммирования и поместить результат обратно в регистр A .
  4. STORE_A 23 . Сохраняем значение регистра A в ячейку памяти с адресом 23 .

Вот такие операции нужны, чтобы сложить два числа.

Все данные между процессором, регистрами, памятью и I/O-устройствами (устройствами ввода-вывода) передаются по шинам. Чтобы загрузить в память только что обработанные данные, процессор помещает адрес в шину адреса и данные в шину данных. Потом нужно дать разрешение на запись на шине управления.

У процессора есть механизм сохранения инструкций в кэш. Как мы выяснили ранее, за секунду процессор может выполнить миллиарды инструкций. Поэтому если бы каждая инструкция хранилась в ОЗУ, то её изъятие оттуда занимало бы больше времени, чем её обработка. Поэтому для ускорения работы процессор хранит часть инструкций и данных в кэше.

Если данные в кэше и памяти не совпадают, то они помечаются грязными битами (англ. dirty bit).

Структура АЛУ

АЛУ состоит из регистров, сумматора с соответствующими логическими схемами и элемента управления выполняемым процессом. Устройство работает в соответствии с сообщаемыми ему именами (кодами) операций, которые при пересылке данных нужно выполнить над переменными, помещаемыми в регистры.

Арифметико-логическое устройство функционально можно разделить на две части :

  1. микропрограммное устройство (устройство управления), задающее последовательность микрокоманд (команд);
  2. операционное устройство (АЛУ), в котором реализуется заданная последовательность микрокоманд (команд).

Рисунок 1 — Структурная схема арифметико-логического устройства

Структурная схема АЛУ и его связь с другими блоками машины показаны на рисунке 1. В состав АЛУ входят регистры Рг1 — Рг7, в которых обрабатывается информация , поступающая из оперативной или пассивной памяти N1, N2, …NS; логические схемы, реализующие обработку слов по микрокомандам, поступающим из устройства управления.

Закон переработки информации задает микропрограмма , которая записывается в виде последовательности микрокоманд A1,A2, …, Аn-1,An. При этом различают два вида микрокоманд: внешние, то есть такие микрокоманды, которые поступают в АЛУ от внешних источников и вызывают в нем те или иные преобразования информации (на рис. 1 микрокоманды A1,A2,…, Аn), и внутренние, которые генерируются в АЛУ и воздействуют на микропрограммное устройство, изменяя естественный порядок следования микрокоманд. Например, АЛУ может генерировать признаки в зависимости от результата вычислений: признак переполнения, признак отрицательного числа, признак равенства 0 всех разрядов числа др. На рис. 1 эти микрокоманды обозначены р1, p2,…, рm.

Результаты вычислений из АЛУ передаются по кодовым шинам записи у1, у2, …,уs, в ОЗУ. Функции регистров, входящих в АЛУ:

  • Рг1 — сумматор (или сумматоры) — основной регистр АЛУ, в котором образуется результат вычислений;
  • Рг2, РгЗ — регистры слагаемых, сомножителей, делимого или делителя (в зависимости от выполняемой операции);
  • Рг4 — адресный регистр (или адресные регистры), предназначен для запоминания (иногда и формирования) адреса операндов и результата;
  • Ргб — k индексных регистров, содержимое которых используется для формирования адресов;
  • Рг7 — i вспомогательных регистров, которые по желанию программиста могут быть аккумуляторами, индексными регистрами или использоваться для запоминания промежуточных результатов.

Часть операционных регистров является программно-доступной, то есть они могут быть адресованы в команде для выполнения операций с их содержимым. К ним относятся : сумматор, индексные регистры, некоторые вспомогательные регистры.

Остальные регистры программно-недоступные, так как они не могут быть адресованы в программе. Операционные устройства можно классифицировать по виду обрабатываемой информации, по способу обработки информации и логической структуре.

АЛУ может оперировать четырьмя типами информационных объектов: булевскими (1 бит), цифровыми (4 бита), байтными (8 бит) и адресными (16 бит). В АЛУ выполняется 51 различная операция пересылки или преобразования этих данных. Так как используется 11 режимов адресации (7 для данных и 4 для адресов), то путем комбинирования «операция/ режим адресации» базовое число команд 111 расширяется до 255 из 256 возможных при однобайтном коде операции.

Структура и функционал

До успеха интегрированных микропроцессоров ALU были каменной конструкцией как собственные (с более низким уровнем интеграции ), широко распространенные, как этот 4-битный ALU SN74S181 из серии 74xx от Texas Instruments.

ALU может иметь два двоичных значения с одинаковым количеством цифр ( n связей) друг с другом. Говорят о n- битных ALU. Типичные значения n — 8, 16, 32 и 64. Исторически заслуживают упоминания также 4-битный ALU 74LS181 и 1-битный процессор MC14500B от Motorola . (Однако соответствующий блок называется только LU (Logic Unit)). Такие термины, как 32-бит — или 64-битной — CPU исходить от ширины рабочего регистра архитектуры процессора. Обычно эта ширина также соответствует ширине ALU; следовательно, эти термины (32-битный или 64-битный ЦП) указывают на то, что аналогичные ALU также используются в соответствующих процессорах. Z80 , например , который работает с 4-битным ALU, является исключением .

П -битный АЛУ обычно состоят из частных лиц 1-битного АЛУ, каждый из которых пропускает битый перенос на к более высокому порядку ALU , с помощью которого перенос идентифицируется в соответствующей точке. (Для ускорения этого часто используются другие методы (например, прогнозирование переноса ); см. Также сумматор переноса пульсаций .) Для переключения взаимосвязанных 1-битных ALU на требуемый тип функции каждый 1-битный ALU дополнительно имеет ко входам для значений, которые должны быть связаны, и бита переноса, есть также вход для вектора управления (код операции); при использовании в процессоре эти входные данные подаются совместно управляющим регистром (операционным регистром, ИЛИ) процессора.

Регистр статуса

В дополнение к выходному вектору для результата весь n- битный ALU также имеет вектор состояния, чтобы сигнализировать о своем состоянии. При использовании в процессоре этот вектор состояния сохраняется в его регистре состояния (также называемом регистром кода состояния ).

Этот регистр обычно содержит четыре бита состояния. Отдельные значения регистра состояния могут запрашиваться командами машинного языка и, таким образом, влиять на дальнейший ход программы (например, условные переходы):

  • Бит переноса (C для англ. Carry bit ): указывает перенос сложения в n- м бите (наивысшая точка) операндов. Он используется как индикатор выхода за пределы диапазона при просмотре результата как беззнакового числа (только положительные результаты). Если вычисления выполняются с использованием представления дополнения до 2 (отрицательные числа также возможны), бит переноса не играет прямой роли в превышении диапазона.
  • Бит переполнения (V для бит переполнения ): указывает, что диапазон чисел превышен в случае вычисления дополнения до 2 (перенос второй старшей цифры операндов). Другие возможные обозначения помимо V — OF или O.
  • Нулевой бит (англ. Zero bit ): указывает, равен ли результат предыдущей арифметической операции нулю (становится 1, когда содержимое регистра аккумулятора равно 0).
  • Отрицательный бит (N): устанавливается, если результат операции можно интерпретировать как отрицательное число ( старший бит регистра накопителя = 1).

В зависимости от типа ALU есть другие флаги , например:

  • Бит половинного переноса (H): указывает перенос между полубайтом младшего и старшего разряда. Интересен для десятичной коррекции при преобразовании двоичного представления в представление BCD .
  • Бит четности (P): в зависимости от процессора, указывает на четность или нечетность регистра накопителя (количество битов со значением 1 является четным или нечетным).

Приложения [ править ]

Арифметика с множественной точностью править

В целочисленных арифметических вычислениях арифметика с множественной точностью — это алгоритм, который работает с целыми числами, которые больше, чем размер слова ALU. Для этого алгоритм обрабатывает каждый операнд как упорядоченный набор фрагментов размера ALU, упорядоченных от наиболее значимого (MS) к наименее значимому (LS) или наоборот. Например, в случае 8-битного ALU 24-битовое целое число будет рассматриваться как совокупность трех 8-битных фрагментов: (MS) , и (LS). Поскольку размер фрагмента точно соответствует размеру слова ALU, ALU может напрямую работать с этой «частью» операнда.

Алгоритм использует ALU для непосредственной работы с конкретными фрагментами операндов и, таким образом, генерирует соответствующий фрагмент («частичный») результата с множественной точностью. Каждый фрагмент, когда он сгенерирован, записывается в связанную область памяти, которая была назначена для результата с множественной точностью. Этот процесс повторяется для всех фрагментов операнда, чтобы сгенерировать полную коллекцию частичных данных, которая является результатом операции с множественной точностью.

В арифметических операциях (например, сложение, вычитание) алгоритм начинается с вызова операции ALU над LS-фрагментами операндов, тем самым создавая как частичный LS, так и бит выполнения. Алгоритм записывает частичное значение в указанное хранилище, тогда как конечный автомат процессора обычно сохраняет бит выполнения в регистре состояния ALU. Затем алгоритм переходит к следующему фрагменту коллекции каждого операнда и вызывает операцию ALU над этими фрагментами вместе с сохраненным битом переноса из предыдущей операции ALU, тем самым создавая другой (более значимый) частичный бит и бит переноса. Как и раньше, бит переноса сохраняется в регистре состояния, а часть записывается в назначенное хранилище. Этот процесс повторяется до тех пор, пока все фрагменты операндов не будут обработаны, что приведет к полному набору частичных данных в хранилище,которые составляют арифметический результат с высокой точностью.

В операциях сдвига с множественной точностью порядок обработки фрагментов операндов зависит от направления сдвига. В операциях сдвига влево фрагменты обрабатываются сначала LS, потому что бит LS каждой части, который передается через сохраненный бит переноса, должен быть получен из бита MS ранее сдвинутого влево менее значимого операнда. И наоборот, операнды сначала обрабатываются MS в операциях сдвига вправо, потому что бит MS каждой части должен быть получен из бита LS ранее сдвинутого вправо более значимого операнда.

В побитовых логических операциях (например, логическое И, логическое ИЛИ) фрагменты операндов могут обрабатываться в любом произвольном порядке, поскольку каждая часть зависит только от соответствующих фрагментов операнда (сохраненный бит переноса из предыдущей операции ALU игнорируется).

Сложные операции править

Хотя ALU может быть разработан для выполнения сложных функций, в результате более высокая сложность схемы, стоимость, потребляемая мощность и больший размер делают это во многих случаях непрактичным. Следовательно, ALU часто ограничиваются простыми функциями, которые могут выполняться на очень высоких скоростях (т. Е. С очень короткими задержками распространения), а схема внешнего процессора отвечает за выполнение сложных функций, организуя последовательность более простых операций ALU.

Например, вычисление квадратного корня из числа может быть реализовано различными способами, в зависимости от сложности ALU:

  • Расчет за один такт : очень сложное АЛУ, которое вычисляет квадратный корень за одну операцию.
  • Конвейер вычислений : группа простых ALU, которые вычисляют квадратный корень поэтапно, с промежуточными результатами, передаваемыми через ALU, организованные как производственная линия завода. Эта схема может принимать новые операнды до завершения предыдущих и выдает результаты так же быстро, как и очень сложный ALU, хотя результаты задерживаются на сумму задержек распространения каскадов ALU. Дополнительные сведения см. В статье о конвейерной обработке инструкций .
  • Итерационный расчет : простой ALU, который вычисляет квадратный корень через несколько шагов под руководством блока управления .

Приведенные выше реализации переходят от самых быстрых и дорогих к самым медленным и наименее затратным. Квадратный корень вычисляется во всех случаях, но процессорам с простыми ALU потребуется больше времени для выполнения вычисления, потому что необходимо выполнить несколько операций ALU.