Найти тему
Just science

Как работает процессор. АЛУ.

Сегодня мы с вами в очередной раз будем углубляться в понимание работы микропроцессора. В предыдущих статьях мы изучили самые мелкие структурные блоки: начиная от транзисторов, заканчивая довольно сложными логическими структурами. Если вы пропустили какую-нибудь статью, то переходите на канал и наверстывайте упущенное!

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

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

-2

В течение многих лет люди используют множество способов для выполнения арифметических действий. Дети считают на пальцах (и некоторые взрослые, кстати, тоже). Китайцы и вавилоняне изобрели счеты еще в 2400 г. до н.э. Логарифмические линейки, придуманные в 1630 году, использовались вплоть до 1970-ых, затем стали входить в обиход ручные инженерные калькуляторы. Сегодня компьютеры и цифровые калькуляторы используются повсеместно. Что придумают дальше?

-3

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

Чтобы понять это, вспомним, как это делаем мы? Предположим, что нам нужно сложить два одноразрядных десятичных числа (от 0 до 9). Что у нас может получиться в ответе? Хорошо, когда сумма не выходит за пределы 9 (например: 3 + 4). Но как быть, ели сумма больше 9? В этом случае мы говорим что у нас произошло переполнение и осуществляем увеличение старшего разряда на 1. Например: 7 + 5, в ответе мы получим 12, а это уже 2-х разрядное десятичное число.

-4

А теперь перенесем все это на микропроцессор. Сразу вспомним, что процессор работает в двоичной системе, то есть орудует только 0-ми и 1-ми. Любое разрабатываемое нами устройство имеет разрядность. Для простоты разработаем одноразрядный сумматор. На входе у него два одноразрядных числа выход у него тоже одноразрядный. В этом кроется первая проблема: как быть с переполнением? Чтобы решить эту задачу у сумматора имеется еще один выход: так называемый сигнал переполнения. Когда разрядность ответа превышает разрядность устройства, на этом выходе появляется 1.

Условное обозначение сумматора вместе с его таблицей истинности
Условное обозначение сумматора вместе с его таблицей истинности

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

32-х разрядный сумматор
32-х разрядный сумматор

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

-7

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

Условное обозначение N-разрядного устройства вычитания
Условное обозначение N-разрядного устройства вычитания

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

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

Условное изображение самого простого АЛУ с его таблицей команд
Условное изображение самого простого АЛУ с его таблицей команд

Теперь вы имеете представление как устроено основное вычислительное устройство микропроцессора. Далее мы с вами должны будем рассмотреть еще некоторые функциональные блоки и после этого перейдем к микроархитекуре. Чтобы не пропустить будущих статей подписывайтесь на канал и обязательно ставьте пальцы вверх, чтобы поддержать канал. Всего вам доброго и до скорых встреч!