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

Arkhitektura_EVM_uchebnoe_posobie

.pdf
Скачиваний:
54
Добавлен:
13.04.2015
Размер:
2 Mб
Скачать

Кратко охарактеризуем каждый из вышеперечисленных этапов стандартного цикла команды.

Этап выборки команды

Цикл любой команды начинается с того, что центральный процессор извлекает команду из памяти, используя адрес, хранящийся в счетчике команд (СК). Двоичный код команды помещается в регистр команды (РК) и с этого момента становится «видимым» для процессора.

Этап формирования адреса следующей команды

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

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

Этап декодирования команды

После выборки команды она должна быть декодирована, для чего ЦП расшифровывает находящийся в РК код команды. В результате декодирования выясняются следующие моменты:

находится ли в РК полный код команды или требуется дозагрузка остальных слов команды;

какие последующие действия нужны для выполнения данной команды: если команда использует операнды, то откуда они должны быть взяты

(номер регистра или адрес ячейки основной памяти); если команда формирует результат, то куда этот результат должен быть

направлен.

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

Этап вычисления адресов операндов

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

Этап выборки операндов

Вычисленные на предыдущем этапе исполнительные адреса используются для считывания операндов из памяти и занесения в определенные регистры

20

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

Этап исполнения операции

На этом этапе реализуется указанная в команде операция. В силу различия сущности каждой из команд ЭВМ, содержание этого этапа также сугубо индивидуально.

Этап записи результата

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

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

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

На рис. 1.2 представлена диаграмма цикла команды в виде последовательности состояний. Для каждой конкретной команды некоторые состояния могут быть нулевыми, а некоторые другие могут неоднократно повторяться. Полный цикл команды может включать в себя следующие состояния.

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

Выборка команды. Чтение команды из ячейки памяти и занесение ее в РК. Декодирование команды. Анализ команды с целью выяснения типа подле-

жащей выполнению операции и операндов.

Вычисление адреса операнда. Определение исполнительного адреса операнда, если операция предполагает обращение к операнду, хранящемуся в памяти или же доступному посредством ввода.

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

Операция с данными. Выполнение операции, указанной в команде. Запись операнда. Запись результата в память или вывод на устройство вы-

вода.

21

Рис. 1.2. Диаграмма состояний цикла команды

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

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

ЭВМ могут выполнять обработку информации в двух режимах:

однопрограммном (монопольном);

многопрограммном, который можно подразделить на режим пакетной об-

работки информации и режим разделения машинного времени.

Режим разделения машинного времени имеет следующие разновидности:

диалоговый; реального времени.

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

жима называют режимом непосредственного доступа.

Однопрограммный режим имеет и второй вариант – вариант косвенного доступа, при котором пользователь не имеет непосредственного контакта с компьютером. В этом варианте пользователь готовит свое задание и отдает его

22

на машину. Задача запускается в порядке очередности и по мере готовности результаты ее решения выдаются пользователю. Этот вариант, бывший когда-то самым распространенным, сейчас практически, по крайней мере, на персональных компьютерах, не используется. Однопрограммный режим непосредственного доступа весьма удобен для пользователя, но для него характерен чрезвычайно низкий коэффициент загрузки оборудования – временные простои многих устройств машины и в период подготовки задачи для решения, и непосредственно при решении задачи (при вычислениях в процессоре простаивают внешние устройства, при печати простаивают процессор, основная и внешняя память и т. д.).

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

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

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

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

23

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

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

1.5. Классификация архитектур системы команд

Системой команд называют полный перечень команд, которые способна выполнять данная ЭВМ. В свою очередь, под архитектурой системы команд (АСК) принято определять те средства вычислительной машины, которые видны и доступны программисту.

Классификация существующих АСК приведена рис. 1.3.

 

 

 

 

Архитектура системы комманд

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Аккумуляторная архитектура

 

 

Стековая архитектура

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Регистровая архитектура

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Архитектура с полным

 

 

Архитектура с выделенным

 

 

Архитектура с

 

 

доступом к памяти -

 

 

безоперандным набором

набором команд - CISC

 

 

 

 

 

 

Load/Store

 

 

 

команд - ROSC

 

 

 

 

 

 

 

Архитектура с сокращенным набором команд - RISC

Архитектура с командными словами сверхбольшой длины - VLIW

Рис. 1.3. Хронология развития архитектур системы команд

Разработчики вычислительных машин в настоящее время выбирают один из трех подходов и, соответственно, один из трех типов АСК:

архитектуру с полным набором команд: CISC (Complex Instruction Set Computer);

24

архитектуру с сокращенным набором команд: RISC (Reduced Instruction Set Computer);

архитектуру с командными словами сверхбольшой длины: VLIW (Very Long Instruction Word).

В вычислительных машинах типа CISC проблема семантического разрыва между сложными операторами языков высокого уровня и простыми машиными командами решается за счет расширения системы команд, дополнения ее сложными командами, семантически аналогичными операторам ЯВУ. Основоположником CISC-архитектуры считается компания IBM, которая начала применять данный подход с семейства машин IBM 360 и продолжает его в своих мощных современных универсальных ЭВМ, таких как IBM ES/9000. Аналогичный подход характерен и для компании Intel в ее микропроцессорах серии 8086

и Pentium.

Для CISC-архитектуры типичны:

наличие в процессоре сравнительно небольшого числа регистров общего назначения;

большое количество машинных команд, некоторые из них аппаратно реализуют сложные операторы ЯВУ;

разнообразие способов адресации операндов; множество форматов команд различной разрядности;

наличие команд, где обработка совмещается с обращением к памяти.

К типу CISC можно отнести практически все ЭВМ, выпускавшиеся до середины 1980-х годов, и значительную часть производящихся в настоящее время. Рассмотренный способ решения проблемы семантического разрыва вместе с тем ведет к усложнению аппаратуры ЭВМ что, в свою очередь, негативно сказывается на производительности ЭВМ в целом. Был предпринят комплекс исследований в результате которых обнаружилось, что доля дополнительных команд в общем объеме программ не превышает 10-20%, а для некоторых наиболее сложных команд даже 0,2%. В то же время объем аппаратных средств, требуемых для реализации дополнительных команд, возрастает весьма существенно.

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

25

Элементы RISC-архитектуры впервые появились в вычислительных машинах CDC 6600 и суперЭВМ компании Cray Research. Достаточно успешно реализуется RISC-архитектура и в современных ЭВМ, например в процессорах

Alpha фирмы DEC, серии РА фирмы Hewlett-Packard, семействе PowerPC и т. п.

В последних микропроцессорах фирмы Intel и AMD широко используются идеи, свойственные RISC-архитектуре, так что многие различия между CISC и RISC постепенно стираются.

Помимо CISC- и RISC-архитектур в общей классификации был упомянут еще один тип АСК – архитектура с командными словами сверхбольшой длины (VLIW). Концепция VLIW базируется на RISC-архитектуре, где несколько простых RISC-команд объединяются в одну сверхдлинную команду и выполняются параллельно. В плане АСК архитектура VLIW сравнительно мало отличается от RISC. Появился лишь дополнительный уровень параллелизма вычислений, в силу чего архитектуру VLIW логичнее адресовать не к вычислительным машинам, а к вычислительным системам.

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

стековую; регистровую;

с выделенным доступом к памяти.

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

Стековая архитектура

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

Стек образует множество логически взаимосвязанных ячеек (рис. 1.4), взаимодействующих по принципу «последним вошел, первым вышел» (LIFO, Last In First Out).

push a

push b

push c

a

b

c

Вершина

 

 

стека

b

c

a

 

a

b

 

 

a

pop c

pop b

c

b

b

a

a

 

Рис. 1.4. Принцип действия стековой памяти

26

Верхнюю ячейку называют вершиной стека. Для работы со стеком предусмотрены две операции: push (проталкивание данных в стек) и pop (выталкивание данных из стека). Запись возможна только в верхнюю ячейку стека, при этом вся хранящаяся в стеке информация предварительно проталкивается на одну позицию вниз. Чтение допустимо также только из вершины стека. Извлеченная информация удаляется из стека, а оставшееся его содержимое продвигается вверх. В вычислительных машинах, где реализована АСК на базе стека (их обычно называют стековыми), операнды перед обработкой помещаются в две верхних ячейки стековой памяти. Результат операции заносится в стек.

Основные узлы и информационные тракты одного из возможных вариантов ЭВМ на основе стековой АСК показаны на рис. 1.5.

Стек

Дешифратор кода операции

Регистр команды

Арифметикологическое устройство

Регистр данных

Основная память

Рис. 1.5. Архитектура вычислительной машины на базе стека

Информация может быть занесена в вершину стека из памяти или из АЛУ. Для записи в стек содержимого ячейки памяти с адресом х выполняется команда рush х по которой информация считывается из ячейки памяти, заносится в регистр данных, а затем проталкивается в стек. Результат операции из АЛУ заносится в вершину стека автоматически.

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

Для выполнения арифметической или логической операции на вход АЛУ подается информация, считанная из двух верхних ячеек стека (при этом содержимое стека продвигается на две позиции вверх, то есть операнды из стека удаляются). Результат операции заталкивается в вершину стека. Возможен вари-

27

ант, когда результат сразу же переписывается в память с помощью автоматически выполняемой операции pop x.

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

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

Но при этом стек становится «узким местом» ЭВМ в плане повышения производительности. В силу упомянутых причин, данный вид АСК долгое время считался неперспективным и встречался, главным образом, в вычислительных машинах 1960-х годов. Последние события в области вычислительной техники свидетельствуют о возрождении интереса к стековой архитектуре ЭВМ. Связано это с популярностью языка Java и расширением сферы применения языка Forth, семантике которых наиболее близка именно стековая архитектура.

Особо следует отметить стековую машину IGNITE компании Patriot Scientist, которую ее авторы считают представителем нового вида АСК – архитекту-

рой с безоперандным набором команд. Для обозначения таких ЭВМ они пред-

лагают аббревиатуру ROSC (Removed Operand Set Computer).

Аккумуляторная архитектура

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

Типичная архитектура ЭВМ на базе аккумулятора показана на рис. 1.6. Для загрузки в аккумулятор содержимого ячейки х предусмотрена команда

загрузки load x. Запись содержимого аккумулятора в ячейку х осуществляется командой сохранения store х, при выполнении которой выходы аккумулятора подключаются к шине, после чего информация с шины записывается в память.

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

28

Аккумулятор

Дешифратор кода операции

Регистр команды

Арифметикологическое устройство

Регистр данных

Основная память

Рис. 1.6. Архитектура вычислительной машины на базе аккумулятора

Достоинствами аккумуляторной АСК можно считать короткие команды и простоту декодирования команд. Однако наличие всего одного регистра порождает многократные обращения к основной памяти.

Регистровая архитектура

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

Размер регистров обычно фиксирован и совпадает с размером машинного слова. К любому регистру можно обратиться, указав его номер. Количество РОН в архитектурах типа CISC обычно невелико (от 8 до 32), и для представления номера конкретного регистра необходимо не более пяти разрядов, благодаря чему в адресной части команд обработки допустимо одновременно указать номера двух, а зачастую и трех регистров (двух регистров операндов и регистра результата). RISC-архитектура предполагает использование существенно большего числа РОН (до нескольких сотен), однако типичная для таких ЭВМ длина команды (обычно 32 разряда) позволяет определить в команде до трех регистров.

Регистровая архитектура допускает расположение операндов в одной из двух запоминающих сред: основной памяти или регистрах. С учетом возможного размещения операндов в рамках регистровых АСК выделяют три подвида команд обработки: регистр-регистр; регистр-память; память-память.

Возможную структуру и информационные тракты вычислительной машины с регистровой архитектурой системы команд иллюстрирует рис. 1.7.

29