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

К числу функций, чаще всего реализуемых при помощи микрокода, относятся следующие:

· обработка прерываний;

· управление различными типами структур данных;

· примитивы синхронизации, координирующие доступ к общим данным и другим ресурсам;

· операции обработки частей слова, позволяющие эффективно выполнять манипуляции с битами;

· переключения контекста, т. е. быстрые переключения процессора с программы на программу в многоабонентской системе;

· последовательности вызова процедур и возврата.

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

.:Пример микропрограммирования на виртуальном процессоре (ITSIAC):.
Рассмотрим гипотетический компьютер ITSIAC, имеющий следующие регистры:

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

РК* Регистр команд. В нем запоминается код исполняемой команд. * - может быть его нет в ITSIAC.

СК Счетчик команд. Указывает на адрес следующей команды в основной памяти.

РА Регистр адреса памяти. Этот регистр участвует во всех обращениях к основной памяти. Он содержит адрес ячейки памяти, к которой производится
обращение для чтения или записи.

РД Регистр данных памяти. Этот регистр также участвует во всех обращениях к основной памяти. Он содержит данные, которые записываются. Или
принимает данные, которые считываются из ячейки основной памяти, указанной в РА.

РР Рабочий регистр. Используется для пересылки адреса из РД в РА (прямая пересылка невозможна). И временного хранения значения аккумулятора.

СМК Счетчик микрокоманд. Этот регистр указывает адрес следующей микрокоманды в управляющей памяти, подлежащей выполнению.

РМК Регистр микрокоманды. Этот регистр содержит текущую выполняемую микрокоманду.

Машина ITSIAC работает следующим образом. Прежде всего в управляющую память загружается микропрограмма. Команда машинного языка декодируется, и
управление передается соответствующей подпрограмме микропрограммы для ее интерпретации. Каждая команда микропрограммы занимает одну ячейку
управляющей памяти. Счетчик микрокоманд СМК указывает на следующую выполняемую микрокоманду. Эта микрокоманда выбирается из управляющей
памяти и помещается в регистр микрокоманд РМК.

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

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

Операции с основной памятью:

READ (чтение ячейки основной памяти в РД)

WRITE (запись РД в ячейку основной памяти)

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

Пусть старшая часть сод. регистра РД содержит адрес подпрограммы интерпретации машинной команды, а младшая часть операнд. Тогда подпрограмма
выборки команды будет иметь следующий вид:
(00) РА <- СК
(01) READ
(02) СМК <- РД[Hi]
_________________
В качестве примера приведем реализацию команды пересылки данных из основной памяти в аккумулятор (LOAD ADR), пусть она начинает с адреса 30
управляющей памяти:
(30) А <- СК+1
(31) СК <- А
(32) РР <- РД[Lo]
(33) РА <- РР
(34) READ
(35) А <- РД
(36) СМК <- 0



<------ Назад

 

Hosted by uCoz