- •Основы функционирования и построений эвм общие сведения о представлении и обработке информации в эвм
- •1.1. Две формы представления информации
- •1.2. Способы представления дискретной информации
- •1.3. Системы счисления, используемые в вычислительной технике
- •Структура и принцип функционирования эвм
- •Базовая эвм
- •2.1. Назначение и структура базовой эвм
- •Программа вычисления суммы двух чисел
- •2.2. Кодирование программ и система команд
- •Выполнение машинных команд
- •3.2. Устройства ввода-вывода базовой эвм
- •3.3. Программно-управляемая передача информации
- •Микропрограммное устройство управления Многоуровневые эвм и их микропрограммный уровень
- •4.2. Компоненты процессора и основные операции
- •Микропрограммное управление вентильными схемами
- •4.5. Другие варианты построения микрокоманд
Микропрограммное устройство управления Многоуровневые эвм и их микропрограммный уровень
В настоящее время большинство пользователей ЭВМ начинает общение с этой машиной на одном из алгоритмических языков (ФОРТРАНе, АЛГОЛе, БЕЙСИКе и т. п.), считая, что такой язык является языком машины. Вполне вероятно, что скоро будут конструировать подобные машины, но сейчас аппаратная реализация ЭВМ с алгоритмическими машинными языками весьма сложна и дорога. Поэтому машинные языки почти всех современных ЭВМ достаточно примитивны (похожи на язык базовой ЭВМ), что делает непосредственное использование таких языков неудобным и затруднительным. Возможность же исполнения на ЭВМ программы, написанной на алгоритмическом языке, обеспечивается с помощью специальных системных программ (компиляторов или интерпретаторов), осуществляющих перевод пользовательских программ на машинный язык ЭВМ.
Существуют два способа организации процесса перевода исходной программы с алгоритмического на машинный язык и процесса ее выполнения.
Первый способ, получивший название компиляции, заключается в том, что процесс выполнения алгоритма осуществляется лишь после завершения процесса перевода исходной программы. При этом в процессе выполнения полученной в результате перевода машинной программы уже не нужна не только исходная программа, но и программа-компилятор, осуществившая ее перевод в машинное представление.
Второй способ, получивший название интерпретации, заключается в том, что каждый оператор исходной программы заменяется программой-интерпретатором на эквивалентную последовательность машинных команд. Эта последовательность тут же выполняется, после чего переводится следующий оператор исходной программы, реализуются полученные при его переводе команды и т. д. Следовательно, во время решения задачи машине нужны и исходная программа, и программа-интерпретатор.
Затраты на создание компилятора (интерпретатора) и время на процесс перевода программы в значительной мере определяются сходством компилируемого и получаемого языков. Поэтому распространенные алгоритмические языки и более сложные языки программных систем не сразу переводят на язык машинных команд. Существует определенная иерархия языков программирования, в которой каждый более сложный язык базируется на предшествующем.
Мы уже сталкивались с одним из простейших языков, который очень близок к командам ЭВМ и обычно служит промежуточным"языком между ними и алгоритмическими языками. Это язык символического кодирования команд, часто называемый языком ассемблера. Языки ассемблеров (разработанные для каждого типа ЭВМ) — это первые средства автоматизации программирования в вычислительной технике. В них допускается использование символических имен и меток (адресов). Компиляторы с таких языков называются ассемблерами. Они отводят определенные ячейки памяти для символических переменных, организуют связи между различными частями программы, что резко облегчает программирование по сравнению с программированием на уровне команд.
Возможность реализации на любой ЭВМ программ, написанных на языках, отличающихся от ее машинного, языка, лишний раз подчеркивает универсальность ЭВМ. Сейчас любой квалифицированный пользователь ЭВМ может создать свой собственный язык для описания каких-либо специфических задач (моделирования ЭВМ, управления прибором или ходом эксперимента, обучения игре в шахматы и т. п.) и написать для этого языка, например, интерпретатор на языке ФОРТРАН или БЕЙСИК.
Человек, работающий с ЭВМ на том или другом языке (или обучающийся игре в шахматы), может не знать, выполняется ли его программа шаг за шагом интерпретатором, который, в свою очередь, выполняется другим интерпретатором, или же она осуществляется непосредственно аппаратными средствами (его обычно интересует лишь результат выполнения программы) . Чаще всего ему кажется, что язык, на котором он общается с ЭВМ,— это ее машинный язык. Следовательно, разным пользователям одной и той же ЭВМ может казаться, что они работают на разных вычислительных машинах. Отсюда появились понятия: виртуальная (кажущаяся) ЭВМ и многоуровневая ЭВМ.
Многоуровневая ЭВМ — это вычислительная машина, имеющая средства для работы с п различными уровнями языков программирования (рис. 4.1). Нижний язык, или уровень, является наиболее простым, верхний — наиболее сложным. Такую машину можно рассматривать как п различных виртуальных машин, каждая из которых имеет свой машинный язык. Сложность аппаратурной реализации этих виртуальных машин возрастает по мере усложнения языка (увеличения номера уровня).
Если рассматривать с этих позиций базовую ЭВМ, то окажется, что язык команд, описанных в гл. 2, не является языком самого нижнего уровня. На ее нижнем уровне выполняются элементарные действия (микрооперации) над словами информации. Ряд из этих действий уже рассматривался при описании выполнения команд, в параграфах 2.1 и 2.5 (пересылка содержимого одного регистра в другой регистр, проверка бита в каком-либо регистре и т. п.).

Рис 4.1. Многоуровневая ЭВМ

Рис. 4.2. Структура микропрограммного устройства управления и его связь с другими устройствами базовой ЭВМ
Управление порядком следования микроопераций осуществляется с помощью устройства управления базовой ЭВМ, которое, в свою очередь, является очень простой ЭВМ. Для этой ЭВМ регистры и вентильные схемы базовой ЭВМ служат как бы устройствами ввода и вывода (рис. 4.2). Программа работы такой ЭВМ — микропрограммного устройства управления (МПУ) — называется микропрограммой, а ее команды, содержащие информацию об элементарных действиях, подлежащих выполнению в течение одного рабочего такта ЭВМ, — микрокомандами.
Микропрограмма хранится в постоянном запоминающем устройстве — памяти микрокоманд (МП). В каждом такте работы ЭВМ из МП в регистр микрокоманд пересылается очередная микрокоманда, т. е. микрокоманда, на которую указывает счетчик микрокоманд (он же регистр адреса микрокоманд). Затем счетчик микрокоманд наращивается на единицу.
Если из памяти выбрана так называемая операционная микрокоманда, биты которой определяют нужный набор микроопераций, то состояние этих битов передается на вентильные схемы процессора. Производятся соответствующая настройка АЛУ (на суммирование, логическое умножение, инвертирование и т. п.) и пересылка через него содержимого одних регистров в другие регистры (см. рис. 2.2, 2.8, 2.9 или 2.10).
При выборке управляющей микрокоманды в устройство управления МПУ пересылается содержимое указанного в микрокоманде регистра ЭВМ, из него выделяется указанный в микрокоманде бит и сравнивается с определенным битом микрокоманды (с 0 или 1). Если результат сравнения положителен, то в счетчик микрокоманд пересылается из микрокоманды адрес, по которому должна выбираться следующая микрокоманда микропрограммы. В противном случае никаких пересылок не производится и в следующем такте будет выполняться микрокоманда, расположенная вслед за исполняемой.
Следует ясно представлять, что у описываемой здесь микропрограммируемой ЭВМ имеются две памяти, два набора команд и две программы: традиционного машинного уровня (команды табл. 2.4) и микропрограммного уровня. Однако аппаратно реализованный процессор — только один, а архитектура машины формирует микропрограммный уровень.
Традиционный машинный уровень — это один из тех машинных уровней, описание которого можно найти в руководстве по эксплуатации ЭВМ. В рассматриваемом случае базовая ЭВМ рекламировалась бы как ЭВМ, обладающая памятью емкостью 2948 16-битовых слов и системой команд, состоящей из 28 команд, среди которых есть логическое умножение, сложение, вычитание, условные и безусловный переходы,- обращение к подпрограмме и т. п. Она имеет два вида адресации (прямую и косвенную), к ней можно подключать до 256 внешних устройств и т. д. В руководстве можно найти упоминание о том, что машина микропрограммируема, однако описания микропрограммного уровня, памяти микрокоманд и самих микрокоманд там обычно не приводится.
Пользователю, желающему программировать на традиционном машинном уровне (и тем более на языках высокого уровня), в конечном счете, безразлично, реализован ли традиционный уровень путем создания специальных электрических схем или же для этих целей используется микропрограмма, выполняемая на более низком машинном уровне. Однако в связи с появлением ряда микропроцессорных наборов, имеющих единственный язык — язык микрокоманд, возникла необходимость в ознакомлении пользователей с программированием на уровне микрокоманд.
