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

Танненбаум Е. Архітектура компютера [pdf]

.pdf
Скачиваний:
103
Добавлен:
02.05.2014
Размер:
5.59 Mб
Скачать

Разработка микроархитектурного уровня

273

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

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

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

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

Должен также учитываться объем выполняемого декодирования. Посмотрите на рис. 4.5. Вспомните, что в АЛУ может передаваться значение одного из девяти регистров, и чтобы определить, какой именно регистр нужно выбрать, требуется всего 4 бита в микрокоманде. К сожалению, такая экономия дорого обходится. Схема декодера вносит дополнительную задержку в работу компьютера. Это значит, что какой бы регистр мы не выбрали, он получит команду немного позже и передаст свое содержимое на шину В немного позже. Следовательно, АЛУ получает входные сигналы и выдает результат также с небольшой задержкой. Соответственно, этот результат поступает на шину С для записи в один из регистров тоже немного позже. Поскольку эта задержка часто является фактором, который определяет длину цикла, это значит, что генератор синхронизирующего сигнала не может функционировать с такой скоростью и весь компьютер должен работать немного медленнее. Таким образом, существует определенная зависимость между скоростью и ценой. Если сократить каждое слово управляющей памяти на 5 битов, это приведет к снижению скорости работы генератора. Инженер при разработке компьютера должен принимать во внимание его предназначение, чтобы сделать правильный выбор. В компьютере с высокой производительностью использовать декодер не рекомендуется, а вот для дешевой машины он вполне подойдет.

2 7 4 Глава 4. Микроархитектурный уровень

Сокращение длины пути

Микроархитектура Mic-1 имеет относительно простую структуру и работает довольно быстро, хотя эти две характеристики очень трудно совместить. В общем случае простые машины не являются высокоскоростными, а высокоскоростные машины довольно сложны. Процессор Mic-1 использует минимум аппаратного обеспечения; 10 регистров, простое АЛУ (см. рис. 3.18), продублированное 32 раза, декодер, схему сдвига, управляющую память и некоторые связующие элементы. Для построения всей системы требуется менее 5000 транзисторов, управляющая память (ПЗУ) и основная память (ОЗУ).

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

Слияние цикла интерпретатора с микропрограммой

В микроархитектуре Mic-1 основной цикл состоит из микрокоманды, котораядолжна выполняться в начале каждой команды IJVM. В некоторых случаях возможно ее перекрытие предыдущей командой. В каком-то смысле эта идея уже получила свое воплощение. Вспомните, что во время цикла Mainl код следующей операции уже находится в регистре MBR. Этот код операции был вызван или во зремя предыдущего основного цикла (если у предыдущей команды не было операндов), или во время выполнения предыдущей команды.

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

В табл. 4.5 приведена последовательность микрокоманд для команды POP. Основной цикл идет перед каждой командой и после каждой команды, в таблице этот цикл показан только после команды POP. Отметим, что выполнение этой команды занимает 4 цикла: три цикла специальных микрокоманд для команды POP и один основной цикл.

Таблица 4.5. Новая микропрограмма для выполнения команды POP

Микрокоманда

Операции

Комментарий

рор1

MAR=SP=SP-1; rd

Считывание второго сверху слова в стеке

рор2

 

Ожидание, пока из памяти считается новое

 

 

значение TOS

рорЗ

TOS=MDR; goto Mainl

Копирование нового слова в регистр TOS

Mainl

PC=PC+1; fetch;

Регистр MBR содержит код операции; вызов

 

goto(MBR)

следующего байта; переход

Разработка микроархитектурного уровня

 

275

В табл. 4.6 последовательность сокращена до трех команд за счет того, что в ц<ткле рор2 АЛУ не используется. Отметим, что в конце этой последовательности сразу осуществляется переход к коду следующей команды, поэтому требуется всего 3 цикла. Этот небольшой трюк позволяет сократить время выполнения следующей микрокоманды на один цикл, поэтому, например, последующая команда IADD сокращается с четырех циклов до трех. Это эквивалентно повышению частоты синхронизирующего сигнала с 250 МГц (каждая микрокоманда по 4 не) до 333 МГц (каждая микрокоманда по 3 не).

Таблица 4.6. Усовершенствованная микропрограмма для выполнения команды POP

Микрокоманда

Операции

 

 

Комментарий

 

 

 

 

 

 

рор1

MAR>SP=SP-1; rd

Считывание второго сверху слова в стеке

Maini pop

PC=PC+1; fetch

 

Регистр MBR содержит код операции, вызов

 

 

 

 

следующего байта

рорЗ

TOS=MDR, goto(MBR)

 

Копирование нового слова в регистр TOS; переход

 

 

 

 

к коду операции

Команда POP очень хорошо подходит для такой переработки, поскольку она содержит цикл, в котором АЛУ не используется, а основной цикл требует АЛ У. Таким образом, чтобы сократить длину команды на одну микрокоманду, нужно в этой команде найти цикл, где АЛУ не используется. Такие циклы встречаются нечасто, но все-таки встречаются, поэтому установка цикла Mai nl в конце каждой последовательности микрокоманд вполне целесообразна. Для этого требуется всего лишь небольшая управляющая память. Итак, мы получили первый способ сокращения длины пути:

помещение основного цикла в конце каждой последовательности микрокоманд.

Трехшинная архитектура

Что еще можно сделать, чтобы сократить длину пути? Можно подвести к АЛУ две полные входные шины, А и В, и следовательно, всего получится три шины. Все (или, по крайней мере, большинство регистров) должны иметь доступ к обеим входным шинам. Преимущество такой системы состоит в том, что есть возможность складывать любой регистр с любым другим регистром за один цикл. Чтобы увидеть, насколько продуктивен такой подход, рассмотрим реализацию команды ILOAD (табл. 4 7).

Таблица4.7.МикропрограммадлявыполнениякомандыILOAD

Микрокоманда

Операции

Комментарий

iloadi

H=LV

MBR содержит индекс, копирование LV в Н

iload2

MAR=MBRU+H, rd

MAR= адрес локальной переменной, которую нужно

 

 

поместить в стек

iload3

MAR=SP=SP+1

Регистр SP указывает на новую вершину стека,

 

 

подготовка к записи

iload4

PC=PC+1; fetch; wr

Увеличение PC на 1, вызов следующего кода

 

 

операции, запись вершины стека

iload5

TOS=MDR;gotoMain1

Обновление TOS

Mam1

PC=PC+1; fetch;

Регистр MBR содержит код операции; вызов

 

goto(MBR)

следующего байта, переход

2 7 6 Глава 4. Микроархитектурный уровень

Мы видим, что в микрокоманде iloadl значение LV копируется в регистр Н. Это нужно только для того, чтобы сложить Н с MBRU в микрокоманде iload2. В разработке с двумя шинами нет возможности складывать два произвольных регистра, поэтому один из них сначала нужно копировать в регистр Н. В трехшинной архитектуре мы можем сэкономить один цикл, как показано в табл. 4.8. Мы добавили основной цикл к команде IL0AD, но при этом длина пути не увеличилась и не уменьшилась. Однако дополнительная шина сокращает общее время выполнения команды с шести циклов до пяти циклов. Теперь мы знаем второй способ сокращения длины пути:

переходотдвухшиннойктрехшиннопархитектуре.

Таблица 4.8. Микропрограмма для выполнения команды ILOAD при наличии трехшинной архитектуры

Микрокоманда

Операции

Комментарий

Iloadl

MAR=MBRU+LV; rd

MAR=адреслокальнойпеременной,которуюнужно

 

 

поместить в стек

Iload2

MAR=SP=SP+1

Регистр SP указывает на новую вершину стека;

 

 

подготовка к записи

Iloacl3

PC=PC+1; fetch; wr

Увеличение PC на 1; вызов следующего кода

 

 

операции; запись вершины стека

!load4

TOS=MDR

Обновление TOS

lloadS

PC=PC+1; fetch;

Регистр MBR уже содержит код операции; вызов

 

goto(MBR)

индексного байта

Блоквыборкикоманд

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

1.Значение PC пропускается через АЛУ и увеличивается на 1.

2.PC используется для вызова следующего байта в потоке команд.

3.Операнды считываются из памяти.

4.Операнды записываются в память.

5.АЛУ выполняет вычисление, и результаты сохраняются в памяти.

Если команда содержит дополнительные поля (для операндов), каждое поле должно вызываться эксплицитно по одному байту. Поле можно использовать только после того, как эти байты будут объединены. При вызове и компоновке поля АЛУ должно для каждого байта увеличивать PC на единицу, а затем объединять получившийся индекс или смещение. Когда помимо выполнения основной работы команды приходится вызывать и объединять поля этой команды, АЛУ используется практически в каждом цикле.

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

АЛУ часто применяется для копирования значения из одного регистра в другой. Эти циклы можно убрать, если ввести дополнительные тракты данных, которые не проходят через АЛУ. Полезно будет, например, создать тракт от TOS к MDR или от MDR к TOS, поскольку верхнее слово стека часто копируется из одного регистра в другой.

В микроархитектуре Mic-1 с АЛУ можно снять большую часть нагрузки, если создать независимый блок для вызова и обработки команд. Этот блок, который называется блоком выборки команд, может независимо от АЛУ увеличивать значение PC на 1 и вызывать байты из потока байтов до того, как они понадобятся. Этот блок содержит инкрементор, который по строению гораздо проще, чем полный сумматор. Разовьем эту идею. Блок выборки команд может также объединять 8-битные и 16-битные операнды, чтобы они могли использоваться сразу, как только они стали нужны. Это можно осуществить, по крайней мере, двумя способами:

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

2.Блок выборки команд может постоянно предоставлять следующие 8- или 16-битные куски информации независимо от того, имеет это смысл или нет. Тогда основной операционный блок может запрашивать любые данные, которые ему требуются.

Рис. 4.18. Блок выборки команддля микроархитектуры Мю-1

На рис. 4.18 показан второй способ реализации. Вместо одного 8-разрядного регистра MBR (буферного регистра памяти) здесь есть два регистра MBR: 8-раз- рядныи MBR1 и 16-разрядный MBR2. Блок выборки команд следит за самым последним байтом или байтами, которые поступили в основной операционный блок.

2 78 Глава 4. Микроархитектурный уровень

Кроме того, он передает следующий байт в регистр MBR, как и в архитектуре Mic-1, только в данном случае он автоматически определяет, когда значение регистра считано, вызывает следующий байт и сразу загружает его в регистр MBR1. Как и в микроархитектуре Mic-1, он имеет два интерфейса с шиной В: MBR1 и MBR1U. Первый получает знаковое расширение до 32 битов, второй дополнен нулями.

Регистр MBR2 функционирует точно так же, но содержит следующие 2 байта. Он имеет два интерфейса с шиной В: MBR2 и MBR2U, первый из которых расширен по знаку, а второй дополнен до 32 битов нулями.

Блок выборки команд отвечает за вызов байтов. Для этого он использует стандартный 4-байтный порт памяти, вызывая полные 4-байтные слова заранее и загружая следующие байты в сдвиговый регистр, который выдает их по одному или по два за раз в том порядке, в котором они вызываются из памяти. Задача сдвигового регистра — сохранить последовательность поступающих байтов для загрузки в регистры MBR1 и MBR2.

MBR1 всегда содержит самый старший байт сдвигового регистра, a MBR2 — 2 старших байта (старший байт — левый байт), которые формируют 16-битное целое число (см. рис. 4.14, б). Два байта в регистре MBR2 могут быть из различных слов памяти, поскольку команды IJVM никак не связаны с границами слов.

Всякий раз, когда считывается регистр MBR1, значение сдвигового регистра сдвигается вправо на 1 байт. Всякий раз, когда считывается регистр MBR2, значение сдвигового регистра сдвигается вправо на 2 байта. Затем в регистры MBR1 и MBR2 загружается самый старший байт и пара самых старших байтов соответственно. Если в данный момент в сдвиговом регистре осталось достаточно места для целого слова, блок выборки команд начинает цикл обращения к памяти, чтобы считать следующее слово. Мы предполагаем, что когда считывается любой из регистров MBR, он перезагружается к началу следующего цикла, поэтому новое значение можно считывать уже в последующих циклах.

Блок выборки команд может быть смоделирован в виде автомата с конечным числомсостояний(иликонечногоавтомата),какпоказанонарис.4.19. Вовсех конечных автоматах есть состояния (на рисунке это кружочки) и переходы (это дуги от одного состояния к другому). Каждое состояние — это одна из возможных ситуаций, в которой может находиться конечный автомат. Данный конечный автомат имеет семь состояний, которые соответствуют семи состояниям сдвигового регистра, показанного на рис. 4.18. Семь состояний соответствуют количеству байтов, которые находятся в данный момент в регистре (от 0 до 6 включительно).

Каждая дуга репрезентирует событие, которое может произойти. В нашем конечном автомате возможны три различных события. Первое событие — чтение одного байта из регистра MBR1. Оно активизирует сдвиговый регистр, самый правый байт в нем убирается, и осуществляется переход в другое состояние (меньшее на 1). Второе событие — чтение двух байтов из регистра MBR2. При этом осуществляется переход в состояние, меньшее на 2 (например, из состояния 2 в состояние 0 или из состояния 5 в состояние 3). Оба эти перехода вызывают перезагрузку регистров MBR1 и MBR2. Когда конечный автомат переходит в состояния 0,1 или 2, начинается процесс обращения к памяти, чтобы вызвать новое слово (предпо-

Разработка микроархитектурного уровня

279

лагается, что память уже не занята считыванием слова). При поступлении слова номер состояния увеличивается на 4.

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

Вызов слова из памяти

Вызов слова из памяти Вызов слова

из памяти

MBR2

MBR2

 

MBR2

MBR2

События

MBR1: Чтение регистра MBR1

MBR2: Чтение регистра MBR2

Вызов слова из памяти: это событие означает считывание слова из памяти и помещение 4 байтов в сдвиговый регистр

Рис. 4.19. Автомат с конечным числом состояний для реализации блока выборки команд

Блок выборки команд имеет свой собственный регистр адреса ячейки памяти (IMAR), который используется для обращения к памяти, когда нужно вызвать новое слово. У этого регистра есть специальный инкрементор, поэтому основному АЛУ не требуется прибавлять 1 к значению PC для вызова следующего слова. Блок выборки команд должен контролировать шину С, чтобы каждый раз при загрузке регистра PC новое значение PC также копировалось в IMAR. Поскольку новое значение в регистре PC может быть и не на границе слова, блок выборки команд должен вызвать нужное слово и скорректировать значение сдвигового регистра соответствующим образом.

Основной операционный блок записывает значение в PC только в том случае, если необходимо изменить характер последовательности байтов. Это происходит в команде перехода, в команде INVOKEVIRTUAL и команде IRETURN.

Поскольку микропрограмма больше не увеличивает PC явным образом при вызове кода операции, блок выборки команд должен обновлять PC сам. Как это происходит? Блок выборки команд способен распознать, что байт из потока команд получен, то есть, что значения регистров MBR1 и MBR2 (или их вариантов

2 8 0 Глава 4. Микроархитектурный уровень

без знака) уже считаны. С регистром PC связан отдельный инкрементор, который увеличивает значение на 1 или на 2 в зависимости от того, сколько байтов получено. Таким образом, регистр PC всегда содержит адрес первого еще не полученного байта. В начале каждой команды в регистре MBR находится адрес кода операции этой команды.

Отметим, что существует два разных инкрементора, которые выполняют разные функции. Регистр PC считает байты и увеличивает значение на 1 или на 2. Регистр ШAR считает слова и увеличивает значение только на 1 (для 4 новых байтов). Как и MAR, регистр IMAR соединен с адресной шиной, при этом бит 0 регистра IMAR связан с адресной линией 2 и т. д. (перекос шины), чтобы осуществлять переход от адреса слова к адресу байта.

Мы скоро увидим, что если нет необходимости увеличивать значение PC в основном цикле, это приводит к большому выигрышу, поскольку обычно в микрокоманде, в которой происходит увеличение PC, кроме этого больше ничего не происходит. Если эту команду устранить, длина пути сократится. Однако для увеличения скорости работы машины требуется больше аппаратного обеспечения. Таким образом, мы пришли к третьему способу сокращения длины пути:

командыизпамятидолжнывызыватьсяспециализированнымфункциональным

блоком.

Микроархитектура с упреждающей выборкой команд из памяти: Mic-2

Блок выборки команд может сильно сократить длину пути средней команды. Во-первых, он полностью устраняет основной цикл, поскольку в конце каждой команды просто стразу осуществляется переход к следующей команде. Во-вторых, АЛУ не нужно увеличивать значение PC. В-третьих, блок выборки команд сокращает длину пути всякий раз, когда вычисляется 16-битный индекс или смещение, поскольку он объединяет 16-битное значение и сразу передает его в АЛУ в виде 32-битного значения, избегая необходимости производить объединение в регистре Н. На рис. 4.20 показана микроархитектура Mic-2, которая представляет собой усовершенствованную версию Mic-1, к которой добавлен блок выборки команд, изображенный на рис. 4.18. Микропрограмма для усовершенствованной машины приведена в табл. 4.9.

Чтобы продемонстрировать, как работает Mic-2, рассмотрим команду IADD. Она берет второе слово из стека и выполняет сложение, как и раньше, но только сейчас ей не нужно осуществлять переход к Mainl после завершения операции, чтобы увеличить значение PC и перейти к следующей микрокоманде. Когда блок выборки команд распознает, что в цикле iadd3 произошло обращение к регистру MBR1, его внутренний сдвиговый регистр сдвигает все вправо и перезагружает MBR1 и MBR2. Он также осуществляет переход в состояние, которое на 1 ниже текущего. Если новое состояние — это состояние 2, блок выборки команд начинает вызов слова из памяти. Все это происходит в аппаратном обеспечении. Микропрограмма ничего не должна делать. Именно поэтому команду IADD можно сократить с пяти до трех микрокоманд.

Разработка микроархитектурного уровня

281

Регистры

управления

памятью

I Разрешающий сигнал на шину В

t Запись сигнала с шины С в регистр

Шика В

 

 

—ыСхема сдвига м

 

Рис. 4.20. Тракт данных для Мю-2

Таблица 4.9. Микропрограмма для Mic-2

Микрокоманда

Операции

Комментарий

пор1

goto (MBR)

Переход к следующей команде

 

MAR=SP=SP-1; rd

Чтение слова, идущего после верхнего слова стека

iadd2

H=TOS

H = вершина стека

продолжение &

282

Глава 4. Микроархитектурный уровень

Таблица 4.9 {продолжение}

 

Микрокоманда Операции

Комментарий

iadd3

MDR=TOS=MDR+H;

Суммирование двух верхних слов; запись суммы

 

wr;goto(MBR1)

в верхнюю позицию стека

isubi

MAR=SP=SP-I;rd

Чтение слова, идущего после верхнего слова стека

isub2

H=TOS

Н = вершина стека

isub3

MDR=TOS=MDR-H;

Вычитание TOS из вызванного значения TOS-1

 

wr; goto(MBRI)

 

iandi

MAR=SP=SP-1;rd

Чтение слова, идущего после верхнего слова стека

Iand2

H=TOS

Н = вершина стека

iand3

MDR=TOS=MDRHH;

Логическое умножение вызванного значения TOS-1

 

wr;goto{MBR1)

и TOS (операция И)

ior1

MAR=SP=SP-1;rd

Чтение слова, идущего после верхнего слова стека

ior2

H=TOS

Н = вершина стека

ior3

MDR=TOS=MDRHnM

Логическое сложение вызванного значения TOS-1

 

H;wr;goto(MBR1)

и TOS (операция ИЛИ)

dup1

MAR=SP=SP+1

Увеличение SP на 1 и копирование результата

 

 

в регистр MAR

dup2

MDR=TOS; wr;

Запись нового слова в стек

 

goto (MBR1)

 

pop1

MAR=SP=SP-1;rd

Чтение слова, идущего после верхнего слова стека

pop2

 

Программа ждет, пока закончится процесс чтения

рорЗ

TOS=MDR;goto(MBR1)

Копирование нового слова в регистр TOS

swapi

MAR=SP-1;rd

Чтение второго слова из стека; установка регистра

 

 

MAR на значение SP

swap2

MAR=SP

Подготовка к записи нового второго слова стека

swap3

H-MDR; wr

Сохранение нового значения TOS; запись второго

 

 

слова стека

swap4

MDR=TOS

Копирование прежнего значения TOS в регистр MDR

swap5

MAR=SP-1;wr

Запись прежнего значения TOS на второе место

 

 

в стеке

swap6

TOS=H;goto(MBR1)

Обновление TOS

bipush!

SP=MAR=SP+1

Установка регистра MAR для записи в новую

 

 

вершину стека

bipush2

MDR=TOS=MBR1;

Обновление стека в регистре TOS и памяти

 

wr;goto(MBR1)

 

iloadi

MAR=LV+MBR1U;rd

Перемещение значения LV с индексом в регистр

 

 

MAR; чтение операнда

iload2

MAR=SP=SP+1

Увеличение SP на 1; перемещение нового значения

 

 

SP в регистр MAR

iload3

TOS=MDR;wr;

Обновление стека в регистре TOS и памяти

 

goto{MBR1)

 

istore1

MAR=LV+MBR1U

Установка регистра MAR на значение LV+индекс

istore2

MDR=TOS;wr

Копирование значения TOS для сохранения в памяти

istore3

MAR=SP=SP-1;rd

Уменьшение SP на 1; чтение нового значения TOS

istore4

 

Машина ждет окончания процесса чтения

istore5

TOS=MDR:aoto(MBR1l

Обновление TOS

Соседние файлы в предмете Аппаратное обеспечение ЭВМ, средств телекоммуникаций и сетей