stringtranslate.com

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

Символическое представление АЛУ и его входных и выходных сигналов, обозначенных стрелками, направленными в АЛУ или из него соответственно. Каждая стрелка представляет один или несколько сигналов. Управляющие сигналы входят слева, а сигналы состояния выходят справа; данные текут сверху вниз.

В вычислительной технике арифметико -логическое устройство ( АЛУ ) представляет собой комбинационную цифровую схему , которая выполняет арифметические и побитовые операции над целыми двоичными числами . [1] [2] Это отличается от устройства с плавающей точкой (FPU), которое работает с числами с плавающей точкой . Это фундаментальный строительный блок многих типов вычислительных схем, включая центральный процессор (ЦП) компьютеров, FPU и графические процессоры (GPU). [3]

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

Сигналы

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

Данные

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

Код операции

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

Статус

Выходы

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

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

Входы

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

Работа схемы

Комбинационная логическая схема интегральной схемы 74181 , раннего четырехбитного АЛУ, с логическими вентилями

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

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

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

Функции

Ряд основных арифметических и побитовых логических функций обычно поддерживаются АЛУ. Основные, общего назначения АЛУ обычно включают в свой репертуар следующие операции: [1] [2] [4]

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

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

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

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

Приложения

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

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

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

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

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

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

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

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

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

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

Выполнение

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

сущность alu является портом ( -- соединения alu с внешней схемой: A : вход со знаком ( 7 вниз к 0 ); -- операнд A B : вход со знаком ( 7 вниз к 0 ); -- операнд B OP : вход без знака ( 2 вниз к 0 ); -- код операции Y : выход со знаком ( 7 вниз к 0 )); -- результат операции конец alu ;                                 архитектура поведенческая alu - begin case OP - -- декодировать код операции и выполнить операцию: when "000" => Y <= A + B ; -- сложить when "001" => Y < = A - B ; -- вычесть when "010" => Y <= A - 1 ; -- уменьшить when "011" => Y <= A + 1 ; -- увеличить when "100" => Y <= not A ; -- дополнение до 1 when "101" => Y <= A и B ; -- побитовое И when "110" => Y <= A или B ; -- побитовое ИЛИ when "111" => Y <= A xor B ; -- побитовое исключающее ИЛИ when others => Y <= ( others => 'X' ); end case ; end behavioral ;                                                                                          

История

Математик Джон фон Нейман предложил концепцию АЛУ в 1945 году в докладе об основах нового компьютера под названием EDVAC . [5]

Стоимость, размер и энергопотребление электронных схем были относительно высокими на протяжении всего младенчества Информационной эпохи . Следовательно, все ранние компьютеры имели последовательный АЛУ , который работал с одним битом данных за раз, хотя они часто представляли программистам более широкий размер слова. Первым компьютером, имевшим несколько параллельных дискретных однобитовых схем АЛУ, был Whirlwind I 1951 года , который использовал шестнадцать таких «математических единиц», чтобы иметь возможность работать с 16-битными словами.

В 1967 году Fairchild представила первое устройство типа ALU, реализованное в виде интегральной схемы, Fairchild 3800, состоящее из восьмибитного арифметического блока с аккумулятором. Он поддерживал только сложения и вычитания, но не логические функции. [6]

Вскоре появились полноценные интегральные схемы АЛУ, включая четырехбитные АЛУ, такие как Am2901 и 74181. Эти устройства обычно были способны на « бит-слайс », то есть имели сигналы «переноса вперед», которые облегчали использование нескольких взаимосвязанных чипов АЛУ для создания АЛУ с более широким размером слова. Эти устройства быстро стали популярными и широко использовались в мини-компьютерах бит-слайс.

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

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

АЛУ могут быть реализованы в виде механических , электромеханических или электронных схем [8] [ проверка не удалась ] , и в последние годы были проведены исследования биологических АЛУ [9] [10] (например, на основе актина ). [11]

Смотрите также

Ссылки

  1. ^ ab Atul P. Godse; Deepali A. Godse (2009). "3". Digital Logic Design . Технические публикации. стр. 9–3. ISBN 978-81-8431-738-1.[ постоянная мертвая ссылка ]
  2. ^ ab Atul P. Godse; Deepali A. Godse (2009). "Приложение". Цифровые логические схемы. Технические публикации. стр. C–1. ISBN 978-81-8431-650-6.[ постоянная мертвая ссылка ]
  3. ^ "1. Введение в архитектуру компьютеров - Проектирование встроенного оборудования, 2-е издание [Книга]". www.oreilly.com . Получено 03.09.2020 .
  4. ^ Горовиц, Пол ; Уинфилд Хилл (1989). "14.1.1". Искусство электроники (2-е изд.). Cambridge University Press. стр. 990–. ISBN 978-0-521-37095-0.
  5. Филип Левис (8 ноября 2004 г.). «Джонатан фон Нейман и EDVAC» (PDF) . cs.berkeley.edu . стр. 1, 3. Архивировано из оригинала (PDF) 23 сентября 2015 г. . Получено 20 января 2015 г. .
  6. ^ Шеррифф, Кен. «Внутри чипа АЛУ 74181: фотографии кристаллов и обратная разработка». Блог Кена Ширриффа . Получено 7 мая 2024 г.
  7. ^ Кен Ширрифф. «Z-80 имеет 4-битное АЛУ. Вот как это работает». 2013, righto.com
  8. ^ Рейф, Джон Х. (2009), «Механические вычисления: вычислительная сложность физических устройств», в Мейерс, Роберт А. (ред.), Энциклопедия сложности и системной науки , Нью-Йорк, Нью-Йорк: Springer, стр. 5466–5482, doi :10.1007/978-0-387-30440-3_325, ISBN 978-0-387-30440-3, получено 2020-09-03
  9. ^ Линь, Чунь-Лян; Куо, Тин-Ю; Ли, Вэй-Сянь (2018-08-14). «Синтез блока управления для будущего биокомпьютера». Журнал биологической инженерии . 12 (1): 14. doi : 10.1186/s13036-018-0109-4 . ISSN  1754-1611. PMC 6092829. PMID 30127848  . 
  10. ^ Герд Х. Г. Мё-Беренс. «Биологический микропроцессор, или как построить компьютер из биологических частей».
  11. ^ Das, Biplab; Paul, Avijit Kumar; De, Debashis (2019-08-16). «Нетрадиционная конструкция арифметико-логического устройства и вычисления в актиновых квантовых клеточных автоматах». Microsystem Technologies . 28 (3): 809–822. doi :10.1007/s00542-019-04590-1. ISSN  1432-1858. S2CID  202099203.

Дальнейшее чтение

Внешние ссылки