Триггер - электронная схема с двумя устойчивыми состояниями, предназначенная для хранения одного бита информации. Триггер переходит из одного устойчивого состояния в другое при воздействии некоторого входного сигнала. Триггер имеет вход для установки в состояние 0 (X0) и в 1 (X1). На выходе выдается состояние триггера, которое выдается в прямом (Y) и в инверсном (Y1) виде. В компьютерах используют синхронизируемые и не синхронизируемые триггеры. Синхронизируемый триггер - это триггер, изменение состояния которого осуществляется только в момент подачи сигнала синхронизации V.
Рис. 2. Схема реализации триггера - защелки на элементах И-НЕ (a) и ИЛИ-НЕ (b).
Триггер-защелка фиксирует состояние входного сигнала, поданного на один из его входов (рисунок 2.)
Рис. 3. Схема реализации RS-триггера на элементах И-НЕ.
RS-триггер - двухвходовый триггер с раздельными входами для установки в 0 или 1 (рисунок 3.) При подачи единичного сигнала на вход R (-X0) триггер переходит в состояние 0 (Y=0, Y1=1), а при подачи на вход S (=X1) единичного сигнала -- в состояние 1 (Y=1, Y1=0). Одновременная подача единичного сигнала на оба входа запрещена. Обычно RS-триггеры бывают синхронизируемыми (вход для синхронизации - V).
Рис. 4. Схема реализации T-триггера.
T-триггер - одновходовый триггер со счетным входом: информация подается одновременно на два входа. При подаче сигнала состояние триггера меняется на противоположное (рисунок 4.) Он, как правило, является не синхронизируемым, и позволяет не только хранить информацию, но и осуществлять сложение по модулю 2.
Рис. 5. Схема реализации D-триггера.
D-триггер выполняет функцию задержки входного сигнала на один такт синхронизации (рисунок 5.). Сигнал, появившийся на входе D (=X0) в момент времени T, задерживается в нем и появляется на выходе Y в момент времени T+1.
JK-триггер - двухвходовый триггер, допускающий раздельную установку состояния 0 и 1, а также смену текущего состояния (режим со счетным входом), осуществляемую при подаче на оба входа единичного сигнала. Вход K в этом триггере соответствует входу R (=X0) RS-триггера, а вход J - S (=X1).
DF-триггер - двухвходовый триггер, позволяющий по одному входу реализовать режим D-триггера, а по другому -- модифицировать режим работы. Вход D соответствует X1, а F - X0. При F=0 DF-триггер сохраняет текущее состояние. Сигнал F=1 устанавливает триггер в состояние 0. При D=1 и F=1 триггер устанавливается в состояние 1.
Триггеры с неустойчивыми состояниями называются вибраторами. Схема с одним неустойчивым состоянием (триггер Шмидта, одновибратор) генерирует импульсный сигнал определенной длительности. Схема с двумя неустойчивыми состояниями называется мультивибратором и служит для генерации последовательности прямоугольных сигналов. Он используется тактовым генератором.
Рис. 6. Реализация регистра.
Регистр - схема для приема, хранения и передачи n-разрядного блока данных Они используются для промежуточного хранения, сдвига, преобразования и инверсии данных. Регистры выполняются на триггерах и логических элементах. Их число и тип определяются разрядностью слова и назначением регистра. Если регистр не требует предварительного сброса данных, (то есть установки всех его ячеек в ноль), то новые данные заменяют в нем старые. Схема регистра показана на рисунке 6.
Рис. 7. Реализация одноразрядного сумматора с переносом знака.
В зависимости от способа управления различают несколько типов триггеров: D- (с одним входом), RS- (с двумя входами), T- (со счетным входом), RST- (с двумя входами и счетным выходом) триггеры, и универсальные триггеры: JK- и DF-триггеры.
Целочисленное АЛУ
Целочисленное арифметико-логическое устройство является, наверное, первым универсальным АЛУ. Это АЛУ могло работать с целыми числами и вещественными числами с фиксированной.
Не смотря на большое число команд микропроцессора, это устройство фактически все команды сводит к девяти элементарным операциям. Все оно приведены в таблице.
Элементарные операции целочисленного АЛУ. | |||
Операция | Обозначение | Количество | Подсистема |
Сложение | + | 2 | Сумматор |
Вычитание | - | 3 | Cумматор и регистр |
Логическое умножение, И | ^, &, and | 2 | Логические схемы |
Логическое сложение, ИЛИ | V, |, or | 2 | Логические схемы |
Сдвиг влево | << | 2 | Регистр |
Сдвиг вправо | >> | 2 | Регистр |
Инверсия (НЕ) | !,not | 1 | Логические схемы |
Увеличение на 1, инкремент | ++,inc | 1 | Сумматор |
Уменьшение на 1, декремент | --,dec | 1 | Сумматор |
Именно эти операции выполняются за один такт микропроцессора, и имеют наибольшую скорость выполнения. Фактически все другие операции осуществляются с помощью этих девяти базовых. Так, умножение восьмиразрядных целых чисел A и B выполняются по следующему алгоритму:
Заметим, что сдвиг влево на 1 разряд соответствует умножению на два, а сдвиг вправо на один разряд - целочисленному делению на два.
Команда изменения знака числа будет следующей:
АЛУ для чисел с плавающей точкой
При проведении операций с плавающей точкой логика расчетов усложняется. Дело в том, что операции приходится выполнять на числах, имеющих не только разные мантиссы, но и разные порядки. Поэтому перед проведением операций над вещественными числами нужна нормализация, то есть приведение двух вещественных чисел к одному порядку.(обычно большему по величине из двух чисел). Для этих целей в арифметико-логическом устройстве с плавающей точкой отдельно производится действия с порядком, отдельно -- с мантиссой. Нормализация происходит следующим образом:
1. Находится разность порядков большего и меньшего числа.
2. Мантисса меньшего числа сдвигается вправо на число бит, равное разности, полученное на шаге 1.
После этого производятся обычные целочисленные операции с мантиссой. Далее, после получения результата вычислений иногда производится коррекция мантиссы числа с плавающей точкой. Алгоритм коррекции следующий:
1. Убираются все незначащие нули в левой части мантисса. Для этого осуществляется сдвиг влево мантиссы на n разрядов (n -- число незначащих нулей слева.)
2. После этого число n вычитается из порядка.
Как правило, операцию коррекции вызывают принудительно, а не запускают автоматически.
При работе этого устройства необходимо, чтобы ему правильно передавался и порядок, и мантиссу числа. Именно поэтому в большинстве устройств для проведения операций с плавающей точкой все операнды и результаты, а также промежуточные числа хранились в единообразной форме. Обычно ею является формат вещественных чисел с расширенной точностью, длиной 80 бит (10 байт). Преобразованием чисел в этот формат и из этого формата в формат других вещественных и целых чисел осуществляется устройством управления сопроцессора.
2.2.2. Прерывания процессора
При работе процессорной системы могут возникать особые случаи, когда процессор вынужден прерывать работу текущей программы и переходить к обработке этого особого случая, более срочного и важного. Причинами прерывания текущей программы может быть:
· внешний сигнал по шине управления - маскируемых прерываний и немаскируемого прерывания;
· аномальная ситуация, сложившаяся при выполнении команды программы и препятствующую ее дальнейшему выполнению;
· находящаяся в программе команда прерывания.
Первая из указанных выше причин относится к аппаратным прерываниям, а две другие - к программным прерываниям. Отметим, что аппаратные прерывания непредсказуемы и могут возникать в любые моменты времени.
С помощью аппаратных прерываний осуществляется взаимодействие процессора с устройствами ввода-вывода ( клавиатурой, диском, модемом и т.п.), таймером и внутренними часами, сообщается о возникновении ошибки на шине или в памяти, об аварийном выключении сети и т.п. При возникновении аппаратного прерывания процессор выявляет его источник, сохраняет минимальный контекст текущей программы (включая адрес возврата), и переключается на специальную программу -- обработчик прерывания ( interrupt handler). Эта программа правильно реагирует на возникшую ситуацию (например, помещает символ с клавиатуры в буфер, считывает сектор с диска и т.п.), что называется 1обслуживанием прерывания. После обслуживания прерывания процессор возвращается к прерванной программе, как будто прерываний не было.