Добавил:
Rumpelstilzchen2018@yandex.ru Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

3-й семестр / Организация ЭВМиС; Орлов С.А., Цилькер Б.Я

..pdf
Скачиваний:
422
Добавлен:
25.12.2020
Размер:
5.43 Mб
Скачать

Микропрограммный автомат с программируемой логикой

151

 

 

Рис. 4.8. Нанопрограммное устройство управления

Верхний уровень управления образуют микропрограммы, хранящиеся в памяти микропрограмм. Каждой микрокоманде соответствует какая-то из нанокоманд, хранящихся в управляющей памяти нижнего уровня — памяти нанокоманд. В нанокомандах применено горизонтальное кодирование микроопераций. Именно нанокоманды используются для непосредственного формирования сигналов управления. Микрокоманды вместо закодированного номера СУ содержат адресную ссылку на соответствующую нанокоманду.

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

Пусть в системе вырабатывается 200 управляющих сигналов, а общая длина микропрограмм составляет 2048 микрокоманд. Предположим также, что реально используется только 256 различных сочетаний сигналов управления. В случае обычного УУ с горизонтальным микропрограммированием емкость управляющей памяти составила бы 2048 × 200 = 409 600 битов. При нанокодировании требуется память микропрограмм емкостью 2048 × 8 = 16 384 бита (для указания одного из 256 сочетаний СУ достаточно 8 битов — 256 = 28) и память нанокоманд емкостью 256 × 200 = 51 200 битов. Таким образом, суммарная емкость обоих видов управляющей памяти равна 67 584 битам.

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

Двухуровневое кодирование рассматривается как способ для уменьшения необходимой емкости управляющей памяти. Ее использование целесообразно только при многократном повторении микрокоманд в микропрограмме.

152

Глава 4. Устройства управления

 

 

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

Обеспечение порядка следования микрокоманд

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

определяется кодом операции команды;является следующим по порядку адресом;является адресом перехода.

Первый случай имеет место только один раз в каждом цикле команды, сразу же вслед за ее выборкой. Как уже отмечалось ранее, каждой команде ВМ в памяти микропрограмм соответствует «своя» микропрограмма, поэтому первое действие, которое нужно произвести после выборки команды, — преобразовать код операции в адрес первой микрокоманды соответствующей микропрограммы. Эта задача решается преобразователем кода операции (см. рис. 4.6). Такой преобразователь обычно реализуется в виде запоминающего устройства, хранящего начальные адреса микропрограмм в управляющей памяти. Обычно в микрокомандах выделяется специальное однобитовое поле, единица в котором указывает на то, что адрес следующей МК должен вычисляться на основе кода операции. Эта единица устанавливается в конце микропрограммы этапа выборки или в микропрограмме анализа кода операции, то есть перед выбором микропрограммы реализации текущей команды. При нулевом значении бита адрес следующей микрокоманды вычисляется исходя из адреса текущей МК или определяется адресом перехода.

Дальнейшая очередность выборки микрокоманд может быть задана путем указания в каждой МК адреса следующей микрокоманды (принудительная адресация) либо путем автоматического увеличения на единицу адреса текущей МК (естественная адресация) [15].

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

Микропрограммный автомат с программируемой логикой

153

 

 

позиции в УП содержат 0, то никакие признаки не проверяются и адрес следующей МК берется из адресной части текущей микрокоманды. Если i-й разряд УП содержит единицу, то проверяется i-й разряд регистра признаков. При единичном состоянии последнего адрес следующей МК вычисляется путем увеличения на единицу адресной части текущей МК. Опишем схему формирования адреса для случая принудительной адресации, когда в МК указан лишь один адрес (рис. 4.9, а).

Рис. 4.9. Формирование адреса очередной микрокоманды при принудительной адресации микрокоманд: а — микрокоманда с одним адресным полем;

б — микрокоманда с двумя адресными полями

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

Рассмотренный способ позволяет учесть состояние только одного из осведомительных сигналов. Более гибкий подход реализован в ряде вычислительных машин фирмы IBM. В нем адреса микрокоманд считаются разбитыми на две части. Старшие n разрядов просто копируются из адресной части МК в старшие позиции РАУП, определяя блок из 2n микрокоманд в памяти микропрограмм. Остальные (младшие) k разрядов РАУП устанавливаются в 1 или 0 в зависимости от того, проверка каких осведомительных сигналов была задана в поле УП и в каком состоянии эти сигналы находятся. Такой метод позволяет в одной микрокоманде сформировать 2k вариантов перехода.

Возможен также вариант принудительной адресации, когда в МК указан не один адрес, а два (рис. 4.9, б). Здесь в зависимости от ситуации (есть готовность к переходу или нет) в регистр адреса управляющей памяти заносится один из двух адресов.

Основной недостаток принудительной адресации — повышенные требования к емкости управляющей памяти, так как все микрокоманды содержат адресное поле.

154

Глава 4. Устройства управления

 

 

При естественной адресации отпадает необходимость во введении адресной части в каждую МК. Используются МК двух типов: операционные и управляющие. Тип МК определяет ее старший разряд, например: 0 — операционная МК, 1 — управляющая МК.

Операционная микрокоманда содержит только микрооперационную часть и не имеет адресной части. Подразумевается, что микрокоманды следуют в естественном порядке и процесс адресации следующей микрокоманды реализуется счетчиком микрокоманд (СМК). Значение СМК увеличивается на единицу после чтения из управляющей памяти микрокоманд (УПМ) очередной микрокоманды.

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

Структура МПА с естественной адресацией показана на рис. 4.10.

Рис. 4.10. Микропрограммный автомат с естественной адресацией при выполнении: а — операционной микрокоманды; б — управляющей микрокоманды

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

Организация памяти микропрограмм

Функциональные возможности и структура микропрограммных автоматов в значительной степени зависят от организации управляющей памяти (УПМ) для хранения микропрограмм.

Основные способы организации памяти микропрограмм можно свести к следующим вариантам [3].

1.Каждое слово УПМ содержит одну микрокоманду. Это наиболее простая организация управляющей памяти. Основной недостаток — в каждом такте работы МПА требуется обращение к памяти микропрограмм, что приводит к снижению быстродействия МПА.

Система прерывания программ

155

 

 

2.Одно слово УПМ содержит несколько микрокоманд. В результате осуществляется одновременное считывание из УПМ нескольких микрокоманд, что позволяет повысить быстродействие устройства управления.

3.Сегментация ПМП, при которой память разделяется на сегменты, состоящие из 2q соседних слов, при этом адрес разделяется на два поля: S и A. Поле S определяет адрес сегмента, а поле А — адрес слова в сегменте. Адрес S устанавливается специальной микрокомандой. В последующих микрокомандах указывается только адрес слова А в сегменте. Таким образом, разрядность адресной части МК уменьшается.

4.Двухуровневая память. Данный вариант был рассмотрен при изложении идеи нанокодирования. Двухуровневая память рассматривается как способ для уменьшения необходимой емкости УПМ. Использование двухуровневой памяти целесообразно только при многократном повторении микрокоманд в микропрограмме.

Система прерывания программ

Способность реагировать на различные события, возникающие внутри и вне вычислительной машины, существенно расширяет возможности ВМ. В рамках устройства управления такой режим работы обеспечивается системой прерывания программ (СПП). Система прерывания программ — это совокупность аппаратных и программных средств, позволяющая ВМ (при получении соответствующего запроса) на время прервать выполнение текущей программы, передать управление программе обслуживания поступившего запроса, а по завершении последней продолжить прерванную программу с того места, где она была прервана1. Каждое событие, требующее прерывания, сопровождается оповещающим сигналом — запросом прерывания (ЗП). Программу, затребованную запросом прерывания, принято называть прерывающей программой или программой обработки прерывания (обработчиком прерывания). Важнейшим условием работы СПП является ее «прозрачность» — прерываемая программа после возобновления должна работать так, словно никаких прерываний не было.

Впервые СПП появилась в вычислительных машинах в конце 50-х годов прошлого столетия. Введение в состав ВМ системы прерывания существенно расширило сферы применения ВМ и открыло путь к широкому совмещению операций.

В зависимости от характера события, требующего реакции со стороны ВМ, сигналы прерывания разделяют на внешние, внутренние и программные. Источниками внешних прерываний могут быть устройства ввода/вывода и иные, внешние объекты. Внутренние запросы прерывания формируются внутри процессора схемами контроля ВМ и могут возникать, например, при делении на 0, арифметическом переполнении, неверном коде команды и т. п., Причинами программных прерываний обычно являются обращения программы пользователя к операционной системе.

1ГОСТ 15971-90 определяет прерывание как «операцию процессора, состоящую в регистрации предшествующего прерыванию состояния процессора и установлении нового состояния».

156

Глава 4. Устройства управления

 

 

Цикл команды с учетом прерываний

Процедуру обработки любого прерывания можно разделить на несколько этапов:

1.Установка запрета на прием запросов прерывания.

2.Сохранение всей информации прерванной программы, которая необходима для возобновления выполнения этой программы (контекста программы) после завершения обработки прерывания.

3.Снятие запрета на прием запросов прерывания.

4.Идентификация источника ЗП, определение нужного обработчика прерывания и его запуск.

5.Завершение программы обработки прерывания.

6.Установка запрета на прием запросов прерывания.

7.Восстановление контекста прерванной программы (возврат к состоянию на момент прерывания).

8.Снятие запрета на прием запросов прерывания.

9.Возврат к выполнению прерванной программы.

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

Рис. 4.11. Передача управления при прерываниях

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

Система прерывания программ

157

 

 

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

2)заносит в счетчик команд начальный адрес программы обработки прерывания.

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

РДП_СК: РДП := СК; <Запись в стек содержимого счетчика команд> –1УС: УС := УС – 1;

РАП_УС: РАП := УС; ЗпЗУ: ОП[(РАП)] := РДП;

РДП_Акк: РДП := Акк; <Запись в стек содержимого аккумулятора> –1УС: УС := УС – 1;

РАП_УС: РАП := УС; ЗпЗУ: ОП[(РАП)] := РДП;

РДП_Рпрз: РДП := Рпрз; <Запись в стек содержимого регистра признаков> –1УС: УС := УС – 1;

РАП_УС: РАП := УС; ЗпЗУ: ОП[(РАП)] := РДП;

СК := Аобр. <Занесение в СК начального адреса обработчика прерывания>

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

РАП_УС: РАП := УС; <Восстановление состояния регистра признаков> ЧтЗУ: РДП := ОП[(РАП)] ; +1УС: УС := УС + 1;

Рпрз_РДП: Рпрз := РДП; РАП_УС: РАП := УС; <Восстановление содержимого аккумулятора> ЧтЗУ: РДП := ОП[(РАП)]; +1УС: УС := УС + 1;

Акк_РДП: Акк := РДП; РАП_УС: РАП := УС; <Восстановление содержимого счетчика команд> ЧтЗУ: РДП := ОП[(РАП)]; +1УС: УС := УС + 1;

СК_РДП: СК := РДП.

Характеристики систем прерывания

Системы прерывания принято характеризовать следующими параметрами:

время реакции TР — время между появлением запроса прерывания и началом выполнения первой команды обработчика прерывания;

затраты времени на переключение программ — суммарный расход времени на запоминание TЗ и восстановление TВ состояния программы;

158

Глава 4. Устройства управления

 

 

эффективность прерывания η — отношение времени выполнения прерывающей программы к общему времени, необходимому для обслуживания прерывания;

глубина прерываний — максимальное число программ, которые могут последовательно прерывать друг друга.

Время реакции, в общем случае, существенно зависит от приоритета запроса прерывания. При сравнении систем прерывания обычно используют величину времени реакции ТР на запрос с наивысшим приоритетом.

Затраты времени на переключение программ иногда называют временем обслуживания прерывания (ТОБС = TЗ + TВ) и определяют как разность между полным временем выполнения прерывающей программы (ТПР) и временем выполнения «полезных» команд (ТП).

С учетом введенных обозначений эффективность прерывания, называемую иногда

удельным весом прерывающих программ, можно определить как h = ТП .

ТПР

С позиций глубины прерывания можно рассматривать три варианта СПП:

СПП способна воспринимать только один запрос;

глубина прерываний ограничена некоторым значением n;программы могут неограниченно прерывать друг друга.

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

Рассмотренные характеристики систем прерывания программ проиллюстрированы рис. 4.12 и 4.13

Рис. 4.12. Упрощенная временная диаграмма процесса прерывания

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

Система прерывания программ

159

 

 

Рис. 4.13. Прерывания в СПП с различной глубиной прерываний (без учета времени реакции и обслуживания)

Допустимые моменты прерывания программ

Эффективность СПП во многом зависит от того, в какой момент допускается прерывание выполняемой программы. В известных ВМ этот момент определяется одним из трех методов.

Метод помеченного оператора, известный также как метод опорных точек, предполагает наличие в коде команд специального бита, единичное значение которого означает разрешение прерывания по завершении данной команды, а нулевое — запрет. Это позволяет расставить в программе «опорные точки» так, чтобы содержимое регистров процессора, используемых в обработчике прерывания, после возврата к прерванной программе уже не требовалось, то есть исключить запоминание содержимого таких регистров. В результате сокращается время обслуживания, однако время реакции увеличивается.

В покомандном методе прерывание допускается после завершения любой текущей команды. Метод обеспечивает уменьшение времени реакции ТР , но при этом возрастает время обслуживания прерывания ТОБС.

Метод быстрого реагирования допускает прерывание после любого такта выполнения команды. Для метода характерно минимальное время реакции ТР min, но, с другой стороны, возрастает объем запоминаемого контекста программы (количества информации, подлежащей запоминанию и восстановлению при переключении программ) и, соответственно, время обслуживания прерывания ТОБС.

Наибольшее распространение среди рассмотренных методов получил покомандный метод, хотя в современных ВМ все более популярным становится метод быстрого реагирования, особенно в ВМ, работающих в режиме реального времени.

Дисциплины обслуживания множественных прерываний

Влюбой ВМ предполагается наличие множества источников запросов прерывания.

ВСПП с множественными запросами оперируют понятием «код прерывания», под

160

Глава 4. Устройства управления

 

 

которым понимают двоичное слово P = pn–1 p1 p0, где каждый разряд соответствует определенной причине прерывания. Установка в единицу разряда pi означает, что поступил запрос от i-го источника.

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

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

Маскируемые запросы прерывания управляются командами программы и дают программисту возможность гибкого управления вычислительным процессом. Запрещение прерывания производится кодом защиты от прерывания — маской прерываний. Маска прерываний — это двоичное слово M = mn–1 m1m0 с числом разрядов, равным количеству маскируемых причин прерывания. Если разряд маски mi = 0, то запрос ЗПi игнорируется, а при mi = 1 — прерывание допустимо. В случае маскируемых запросов взамен кода прерывания P принимается во внимание результат поразрядного логического умножения этого кода и маски прерываний M (M P).

С учетом двух видов запросов прерывания СПП обычно имеет два физических входа для сигналов ЗП — отдельно для немаскируемых и маскируемых запросов. Ввиду ограничения на число входов все линии, по которым приходят ЗП от различных источников, предварительно каким-либо образом объединяются, образуя общий сигнал прерывания, и именно этот сигнал подается в процессор. Объединение ЗП порождает задачу идентификации источника прерывания и выбора запроса с наиболее высоким приоритетом.

Идентификация источника запроса прерывания

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

По способу выявления этого источника различают обзорные СПП (с опросом источников прерывания) и ССП с векторными прерываниями.

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

Втакой СПП каждому потенциальному источнику ЗП выделен отдельный разряд в параллельном регистре запросов прерывания (РЗП). При поступлении запроса