stringtranslate.com

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

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

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

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

Сигналы

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

Данные

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

Код операции

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

Положение дел

Выходы

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

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

Входы

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

Работа схемы

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

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

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

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

Функции

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

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

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

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

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

Приложения

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

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

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

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

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

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

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

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

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

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

Выполнение

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

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

История

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

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

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

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

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

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

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

Рекомендации

  1. ^ аб Атул П. Годзе; Дипали А. Годзе (2009). «3». Проектирование цифровой логики . Технические публикации. стр. 9–3. ISBN 978-81-8431-738-1.[ постоянная мертвая ссылка ]
  2. ^ ab Образование и обучение лидерству (LET) 2: Запрограммированный текст. Штаб, Департамент армии. 2001. С. 371–.
  3. ^ аб Атул П. Годзе; Дипали А. Годзе (2009). «Приложение». Цифровые логические схемы. Технические публикации. стр. C–1. ISBN 978-81-8431-650-6.[ постоянная мертвая ссылка ]
  4. ^ «1. Введение в компьютерную архитектуру — проектирование встраиваемого оборудования, 2-е издание [книга]» . www.oreilly.com . Проверено 3 сентября 2020 г.
  5. ^ Горовиц, Пол ; Уинфилд Хилл (1989). «14.1.1». Искусство электроники (2-е изд.). Издательство Кембриджского университета. стр. 990–. ISBN 978-0-521-37095-0.
  6. Филип Левис (8 ноября 2004 г.). «Джонатан фон Нейман и EDVAC» (PDF) . cs.berkeley.edu . стр. 1, 3. Архивировано из оригинала (PDF) 23 сентября 2015 года . Проверено 20 января 2015 г.
  7. ^ Ли Бойсел (12 октября 2007 г.). «Как заработать свой первый миллион (и другие советы начинающим предпринимателям)». Презентация EECS Университета Мичигана / Записи ECE . Архивировано из оригинала 15 ноября 2012 г.
  8. ^ Кен Ширрифф. «Z-80 имеет 4-битное ALU. Вот как оно работает». 2013, righto.com
  9. ^ Рейф, Джон Х. (2009), «Механические вычисления: вычислительная сложность физических устройств», в Мейерсе, Роберт А. (редактор), Энциклопедия сложности и системных наук , Нью-Йорк, Нью-Йорк: Springer, стр. 5466 –5482, номер домена : 10.1007/978-0-387-30440-3_325, ISBN 978-0-387-30440-3, получено 03 сентября 2020 г.
  10. ^ Линь, Чунь-Лян; Куо, Тин-Ю; Ли, Вэй-Сянь (14 августа 2018 г.). «Синтез блока управления биокомпьютера будущего». Журнал биологической инженерии . 12 (1): 14. дои : 10.1186/s13036-018-0109-4 . ISSN  1754-1611. ПМК 6092829 . ПМИД  30127848. 
  11. ^ Герд Хг Мо-Беренс. «Биологический микропроцессор, или как построить компьютер из биологических частей».
  12. ^ Дас, Биплаб; Пол, Авиджит Кумар; Де, Дебашис (16 августа 2019 г.). «Разработка и вычисления нетрадиционного арифметико-логического устройства в квантовых клеточных автоматах Actin». Микросистемные технологии . 28 (3): 809–822. дои : 10.1007/s00542-019-04590-1. ISSN  1432-1858. S2CID  202099203.

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

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