Арифметические операции над числами с плавающей запятой более сложны, чем операции над числами с фиксированной запятой. Алгоритм сложения и вычитания чисел с плавающей запятой выглядит следующим образом:
Производится выравнивание порядков чисел. Порядок меньшего (по модулю) числа принимается равным порядку большего, а мантисса меньшего числа сдвигается вправо на число разрядов, равное разности порядков чисел.
Производится сложение (вычитание) мантисс, в результате чего получается мантисса суммы (разности).
Порядок результата принимается равным порядку большего числа.
Полученная сумма (разность) нормализуется. Выравнивание порядков начинается с их сравнения. Мантисса числа с меньшим порядком при выравнивании сдвигается вправо на число разрядов, равное разности порядков.
Сложение (вычитание) мантисс производится по правилам сложения (вычитания) чисел с фиксированной запятой.
При умножении чисел с плавающей запятой порядки сомножителей складываются, а мантиссы перемножаются. Произведение нормализуется, и ему присваивается знак плюс, если сомножители имеют одинаковые знаки, и знак минус, если знаки разные.
Если мантисса множимого или множителя равна 0, то произведению можно присвоить значение 0 без выполнения умножения мантисс. Если при суммировании порядков возникло переполнение и порядок отрицательный, то это означает, что произведение меньше минимального представляемого в машине числа, и в качестве результата операции может быть записан 0 без перемножения мантисс.
Если при суммировании порядков возникает переполнение и порядок положительный, может оказаться, что результат все-таки находится в диапазоне чисел, представляемых в машине, так как при умножении мантисс возможно нарушение нормализации вправо, и после нормализации мантиссы переполнение в порядке может исчезнуть.
При делении чисел с плавающей запятой мантисса частного равна частному от деления мантиссы делимого на мантиссу делителя, а порядок частного - разности порядков делимого и делителя. Частное нормализуется, и ему присваивается знак плюс, если делимое и делитель имеют одинаковые знаки, и знак минус, если разные.
Если делимое равно 0, то в частное может быть записан 0 без выполнения деления. Если при вычитании порядков образовалось переполнение с положительным знаком или если делитель равен 0, то деление не производится и формируется сигнал прерывания.
При делении нормализованных чисел с плавающей запятой может оказаться, что мантисса делимого больше мантиссы делителя, и мантисса частного образуется с переполнением. Для устранения этого явления перед делением мантисс нарушают нормализацию делителя сдвигом на разряд влево. Тогда нарушения нормализации частного влево не возникает.
Устройства управления
Классификация УУ
Устройство управления (УУ) управляет работой процессора, обеспечивая автоматическое выполнение команд программы. Выполнение команды процессором представляет собой последовательность следующих действий (иногда называемых машинными циклами):
-выборка команды из памяти и ее декодирование (дешифрация кода операции);
-формирование адреса следующей команды;
-формирование исполнительного адреса операнда и выборка его из памяти;
-исполнение операции и запись результата в память.
Для выполнения каждого машинного цикла необходим ряд управляющих сигналов, формируемых устройством управления.
В зависимости от способа формирования управляющих сигналов различают два основных типа УУ:
- аппаратные (с жесткой или схемной логикой);
- микропрограммные (с хранимой в памяти логикой).
В аппаратных УУ для каждой операции, задаваемой кодом операции команды, строится набор схем, которые в нужных тактах формируют соответствующие управляющие сигналы.
В УУ с микропрограммным управлением каждой операции соответствует набор микрокоманд, хранимых в памяти микрокоманд. Каждая микрокоманда несет информацию о микрооперациях, подлежащих выполнению в течение машинного такта и указания, какая микрокоманда должна быть выбрана из памяти следующей. Последовательность микрокоманд, выполняющая одну машинную команду или некоторую процедуру, образует микропрограмму.
Аппаратные УУ
Управляющие устройства с жесткой логикой представляют собой логические схемы, вырабатывающие распределенные во времени управляющие сигналы. В отличие от управляющих устройств с хранимой в памяти логикой в аппаратных УУ нельзя изменить логику работы без изменения их схемы. Типичная структурная схема управляющего автомата с жесткой логикой показана на рисунке 4.9. Данный УА можно рассматривать в качестве автомата с конечным числом состояний (конечный автомат), который на каждом такте переходит из одного
Рисунок 4.9 - Схема блока формирования сигналов управления
состояния в другое, определяемое содержимым регистра команды, кодами условий и внешними сигналами. Выходами такого автомата являются управляющие сигналы. Формируемая им последовательность операций задается физическими связями между логическими элементами.
В состав схемы входят регистр кода операции, являющейся частью регистра команд процессора, счетчик тактов, дешифратор тактов и дешифратор кода операции (Дешифратор КОП), а также логические схемы формирования управляющих сигналов. На счетчик тактов поступают сигналы от генератора тактовых импульсов (ГТИ). Состояние счетчика представляют собой номера тактов, изменяющие от 1 до m. Дешифратор тактов формирует на i-м выходе единичный сигнал при i-м состоянии счетчика тактов, т.е. во время i-го такта.
Принцип построения логических схем формирования управляющих сигналов поясняется на рисунке 4.10. На нем изображен фрагмент схемы, обеспечивающий выработку управляющих сигналов y1, y2 и y3 выполнения команды сложения на тактах T1,T2, T6.
В общем случае значения управляющих сигналов зависят еще от оповещающих сигналов U={u1, u2… un}, отражающих ход вычислительного процесса. Для реализации этих зависимостей логические элементы, представленные на рисунке 4.10, берутся многовходовыми и на них подаются требуемые сигналы логических условий.
Рисунок 4.10 - Фрагмент логической схемы формирования управляющих сигналов
Сигналы y0 и yk (см. рисунок 4.9) обычно используются для определения моментов начала и окончания выполнения команд. С этой целью они используются для управления работой счетчика тактов. Управляющий сигнал y0 (Пуск) указывает на начало выполнения команды. Когда он установлен в 1, в конце каждого тактового цикла значение счетчика увеличивается на 1. Если же его значение становится равным 0, отсчет шагов прекращается. Сигнал yk (Останов) сбрасывает счетчик тактов в начальное состояние, обеспечивая начало нового цикла выборки команды.
Серьезным недостатком рассмотренных схем является одинаковое число тактов, необходимых для выполнения всех команд, значение которого выбирается по наиболее длинной команде. Это приводит к непроизводительным затратам времени и, как следствие, к уменьшению быстродействия процессора. Для устранения этого недостатка применяют УУ с переменным числом тактов, в котором используют счетчик тактов с изменяемым модулем счета. Для коротких команд используют счетчик с небольшим модулем счета и наоборот.
При реализации простой системы команд узлы устройства управления с жесткой логикой экономичны и позволяют обеспечить наибольшее быстродействие среди всех возможных методов построения УУ. Однако с возрастанием сложности системы команд усложнялись и схемы автоматов с жесткой логикой, при этом их быстродействие уменьшалось.
Микропрограммные УУ
Альтернативой аппаратного способа реализации УУ является микропрограммное управление, согласно которому сигналы генерируются под управлением программы, подобной программе, написанной на машинном языке для ЭВМ. Этотпринципиально иной подход был предложен английским ученым М. Уилксом в начале 50-х годов. Его называют принципом микропрограммного управления. Он позволяет преодолеть сложности реализации УУ с жесткой логикой. В основу принципа микропрограммного управления заложен тот факт, что каждой машинной команде соответствует уникальный код, называемый микрокомандой. Последовательность микрокоманд, реализующих машинную команду, образует микропрограмму. Микропрограммы размещаются в специальной управляющей памяти, называемой памятью микропрограмм. Выполнение любой команды в процессоре реализуется путем последовательного извлечения микрокоманд из памяти микропрограмм с последующей их дешифрацией для формирования управляющих сигналов, необходимых при выполнении конкретной команды.
Идея заинтересовала многих конструкторов ЭВМ, но на момент возникновения она была нереализуема, поскольку требовала использования быстрой памяти относительно большой емкости. Вернулись к ней в 1964 году, в ходе создания системы 360 фирмой IBM. С этого времени устройства управления с программируемой логикой стали чрезвычайно популярными и были встроены во многие компьютеры.
Структура блока микропрограммного управления (БМУ) с принудительной адресацией микрокоманд (МК) приведена на рис. 4.11. В состав БМУ входят память микрокоманд (ПМК), регистр адреса микрокоманд (РАМК), регистр микрокоманд (РМК), дешифратор микроопераций (ДшМО), генератор тактовых импульсов (ГТИ).
Код операции (КОП) поступает из ОП системы на регистр кода операции (РКОП), который задает начальный адрес микропрограммы. Адрес микропрограммы формируется устройством формирования адреса МК (УФАМК) и хранится в РАМК. По этому адресу из памяти микрокоманд (ПМК) БМУ считывается микрокоманда и фиксируется в регистре МК (РМК).
Микрокоманда содержит два основных поля: код микрооперации (КМО) и адрес следующей МК (АСМК)
КМО дешифрируется и преобразуется в набор сигналов y1…ym, управляющих функционированием процессора. Поле адреса следующей микрокоманды заносится в УФАМК, в результате чего производится выборка следующей МК.
Рисунок 4.11- Структура БМУ с принудительной адресацией МК
Структурная схема БМУ, использующего естественную адресацию микрокоманд, показана на рис. 4.12. Последовательное чтение слов из управляющей памяти обеспечивается счетчиком микропрограмм (СчМК). При каждой загрузке в регистр команд (РК) новой машинной команды в счётчик загружается выходное значение из блока формирования начального адреса. После этого на очередном такте производится автоматическое приращение содержимого СчМК для выбора из управляющей памяти очередной команды. Благодаря этому управляющие сигналы поступают в разные части процессора в необходимой, для выполнения конкретной команды, последовательности и в нужные моменты времени.
Для поддержки ветвления в микропрограммах блок формирования начального адреса имеет входы, на которые заводятся коды условий (флаги) из регистра признаков и внешние сигналы, например, сигналы прерываний. Необходимые проверки кодов условий выполняются с помощью микрокоманд условного перехода.
Рисунок 4.12 - Структура БМУ с естественной адресацией МК
На формирователь начального адреса в этом случае возлагается дополнительная функция - генерирование адреса перехода. По указанию микрокоманды этот блок загружает в счетчик СчМК новый адрес. Для поддержки условных переходов на входы данного блока подаются не только КОП команды с РК, но и сигналы с внешних входов, а также коды условий.
В БМУ с естественной адресацией МК после выборки очередной микрокоманды из управляющей памяти происходит приращение значения СчМК. Естественный порядок выборки МК нарушается в следующих случаях:
- если в РК загружается новая команда, в счетчик СчМК загружается начальный адрес ее микропрограммы;
- когда в последовательности выбираемых МК встречается микрокоманда перехода и условие перехода выполняется, в СчМК загружается адрес перехода;
- в случае появления микрокоманды “Останов” в СчМК загружается адрес микропрограммы для последующего выполнения очередной машинной команды.
БМУ с принудительной адресацией используются чаще, чем БМУ с естественной адресацией. Их общим достоинством является то, что замена одной системы команд на другую производится путем установки памяти микропрограмм с новой прошивкой. Кроме того, легко осуществляется эмуляция системы команд любого серийно выпускаемого процессора, что особенно важно при разработке контроллеров и специализированных ЭВМ. В этом случае можно использовать наработанное системное программное обеспечение серийной машины для отладки программ новой ЭВМ. Кроме того, микропрограммное управление позволяет легко создавать проблемно ориентированную систему команд в терминах управляемого объекта. Например, система команд для управления роботом - манипулятором может состоять из следующих команд: “Вправо”, “Влево”, “Поднять”, “Опустить”, и т.д. При использовании таких команд процесс написания программ для специализированной ЭВМ становится простым и может производиться оператором робота - манипулятора.