Смекни!
smekni.com

Алгоритм работы процессора (стр. 5 из 6)

Триггер - электронная схема с двумя устойчивыми состояниями, предназначенная для хранения одного бита информации. Триггер переходит из одного устойчивого состояния в другое при воздействии некоторого входного сигнала. Триггер имеет вход для установки в состояние 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. Обнуляется результат.
  2. Если последний разряд числа B - единица, ток результату прибавляется число A.
  3. Число A сдвигается на разряд влево, а число B -- на разряд вправо.
  4. Повторяются шаги со второго по третий семь раз.

Заметим, что сдвиг влево на 1 разряд соответствует умножению на два, а сдвиг вправо на один разряд - целочисленному делению на два.

Команда изменения знака числа будет следующей:

  1. Вначале происходит инверсия числа.
  2. После этого производится инкремент результата (т.е. к нему прибавляется единица.)
  3. Таким образом число переводится в дополнительный код. Команда определения знака числа основывается просто на проверке самого старшего бита.

АЛУ для чисел с плавающей точкой

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

1. Находится разность порядков большего и меньшего числа.

2. Мантисса меньшего числа сдвигается вправо на число бит, равное разности, полученное на шаге 1.

После этого производятся обычные целочисленные операции с мантиссой. Далее, после получения результата вычислений иногда производится коррекция мантиссы числа с плавающей точкой. Алгоритм коррекции следующий:

1. Убираются все незначащие нули в левой части мантисса. Для этого осуществляется сдвиг влево мантиссы на n разрядов (n -- число незначащих нулей слева.)

2. После этого число n вычитается из порядка.

Как правило, операцию коррекции вызывают принудительно, а не запускают автоматически.

При работе этого устройства необходимо, чтобы ему правильно передавался и порядок, и мантиссу числа. Именно поэтому в большинстве устройств для проведения операций с плавающей точкой все операнды и результаты, а также промежуточные числа хранились в единообразной форме. Обычно ею является формат вещественных чисел с расширенной точностью, длиной 80 бит (10 байт). Преобразованием чисел в этот формат и из этого формата в формат других вещественных и целых чисел осуществляется устройством управления сопроцессора.

2.2.2. Прерывания процессора

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

· внешний сигнал по шине управления - маскируемых прерываний и немаскируемого прерывания;

· аномальная ситуация, сложившаяся при выполнении команды программы и препятствующую ее дальнейшему выполнению;

· находящаяся в программе команда прерывания.

Первая из указанных выше причин относится к аппаратным прерываниям, а две другие - к программным прерываниям. Отметим, что аппаратные прерывания непредсказуемы и могут возникать в любые моменты времени.

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