Смекни!
smekni.com

Аппаратура, программное обеспечение и микропрограммы (стр. 5 из 8)

2.4 Микропрограммы

Принято считать, что автором концепции микропрограммирования является профессор Морис Уилкс. В своей статье в 1951 г. (Wi 51) он предложил принципы, которые легли в основу современных методов микропрограммирования. Однако начало реального внедрения микропрограммирования связано с появлением System/360 в середине 60-х годов. В течение 60-х годов изготовители компьютеров применяли микропрограммирование для реализации наборов команд машинного языка (Ни 70).

В конце 60-х — начале 70-х годов появилось динамическое микропрограммирование, предусматривающее возможность легкой загрузки новых микропрограммных модулей в управляющую память, служащую для выполнения микропрограмм. Благодаря этому стало возможным динамично и часто менять наборы команд вычислительной машины. И сейчас уже никого не удивит, если в мультипрограммных системах новых поколений будут предусматриваться возможности предоставления различных наборов команд различным пользователям, с тем чтобы в процессе переключения процессора с программы на программу можно было также осуществлять переход с одного набора машинных команд на другой, необходимый следующему пользователю.

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

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

2.4.1 Горизонтальный и вертикальный микрокод

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

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

2.4.2 Выбор функций для микропрограммной реализации

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

2.4.3 Эмуляция

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

2.4.4 Микродиагностика

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

2.4.5 Специализированные компьютеры

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

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

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

2.4.6 Микропрограммная поддержка

Фирмы-изготовители зачастую по отдельному заказу поставляют факультативные микрокодовые средства, обеспечивающие повышение производительности вычислительных машин. Фирме IBM удалось довольно успешно сделать это для своих компьютеров семейства System/370 в рамках операционной системы VM (см. гл. 22). Как будет показано при описании этой операционной системы в гл. 22, она реализует концепцию многих виртуальных машин благодаря эффективному использованию механизма прерываний. Для этого ряд наиболее часто используемых программ обработки прерываний реализуется микрокодом; такая микропрограммная поддержка позволяет достигнуть существенного повышения скоростных характеристик.

2.4.7 Микропрограммирование и операционные системы

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

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

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

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

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

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

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

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

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

Читателям, желающим более подробно познакомиться с применением микропрограммирования в операционных системах, рекомендуется обратиться к работам (Br77), (Bu81) и (So75).

2.4.8 Пример микропрограммирования

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

Простой гипотетический небольшой компьютер ITSIAC имеет набор команд машинного языка, показанный на рис. 2.1.

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