Реклама:

Таненбаум Э.- Архитектура компьютера. стр.187

Пример микроархитектуры

В идеале неплохо было бы сначала описать общие принципы разработки уровня микроархитектуры, но, к сожалению, таких общих принципов не существует. Каждая разработка индивидуальна. По этой причине мы просто подробно рассмотрим конкретный пример. В качестве примера мы выбрали подмножество виртуальной машины Java. Это подмножество содержит только целочисленные команды, поэтому мы назвали его IJVM (Integer Java Virtual Machine — виртуальная машина Java для целых). Виртуальную машину в целом (JVM) мы рассмотрим в главе 5.

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

Наша микроархитектура содержит микропрограмму (в ПЗУ), которая должна вызывать, декодировать и выполнять IJVM-команды. Мы не можем использовать для этой микропрограммы интерпретатор JVM, разработанный компанией Sun, поскольку нам нужна всего лишь крошечная микропрограмма, которая запускает отдельные вентили аппаратного обеспечения. Интерпретатор JVM компании Sun написан на языке С, что было призвано обеспечить переносимость программного обеспечения. Этот интерпретатор не может управлять аппаратным обеспечением на таком детализированном уровне, который нам нужен. Поскольку реальное аппаратное обеспечение состоит только из компонентов,

описанных в главе 3, то теоретически после прочтения этой главы читатель сможет пойти в магазин, купить кучу транзисторов и сконструировать машину ЦУМ. Тому, кто успешно выполнит это задание, будет предоставлен дополнительный кредит (а также полное психиатрическое обследование).

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

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

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


⇐ Предыдущая страница| |Следующая страница ⇒