Статус
нашего
сайта:
ICQ Secrets Center is Online  ICQ Information Center


ICQ SHOP
     5-значные
     6-значные
     7-значные
     8-значные
     9-значные
     Rippers List
ОПЛАТА
СТАТЬИ
СЕКРЕТЫ
HELP CENTER
OWNED LIST
РОЗЫСК!New!
ICQ РЕЛИЗЫ
Протоколы ICQ
LOL ;-)
Настройка компьютера
Аватарки
Смайлики
СОФТ
     Mail Checkers
     Bruteforces
     ICQTeam Soft
     8thWonder Soft
     Other Progs
     ICQ Patches
     Miranda ICQ
ФорумАрхив!
ВАШ АККАУНТ
ICQ LiveJournal

Реклама

Наш канал:

irc.icqinfo.ru

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


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

Один из возможных подходов — просто выдать список сигналов, которые должны активизироваться в каждом цикле. Предположим, что в одном цикле мы хотим увеличить значение SP на единицу. Еще мы хотим инициировать операцию чтения, причем так, чтобы следующая команда находилась в ячейке 122 управляющей памяти. Тогда мы могли бы написать

ReadRegister=SP. ALU=INC. WSP, Read, NEXT_ADDRESS=122

Здесь WSP значит «записать регистр SP». Эта запись полная, но она сложна для понимания. Вместо этого мы объединим указанные операции и передадим в записи результат действий:

SP = SP + 1; rd

Назовем наш микроассемблер высокого уровня MAL (Micro Assembly Language — микроассемблер). По-французски «mal» означает «болезнь» — это то, что с вами случится, если вы будете писать слишком большие программы на этом языке. Язык MAL придуман исключительно для того, чтобы продемонстрировать основные характеристики микроархитектуры. Во время каждого цикла могут записываться любые регистры, но обычно записывается только один. Значение только одного регистра может передаваться на шину Вив АЛУ. На шине А может быть +1, 0, -1 и регистр Н. Следовательно, для обозначения опреде ленной операции мы можем использовать простой оператор присваивания, как в языке Java. Например, чтобы копировать регистр SP в регистр MDR, мы можем написать

MDR = SP

Чтобы показать, что мы используем какую-либо функцию АЛУ, мы можем написать, например, так:

MDR = H + SP

Эта строка означает, что значение регистра H складывается со значением регистра SP и результат записывается в регистр MDR. Операция сложения коммутативна (это значит, что порядок операндов не имеет значения), поэтому данное выше выражение можно записать в виде

MDR = SP + H

При этом порождается та же 36-разрядная микрокоманда, хотя, строго говоря, H является левым операндом АЛУ.

Мы должны использовать только допустимые операции; они перечислены ниже (любую из перечисленных операций можно расширить, добавив символы « 8, что означает сдвиг результата влево на 1 байт, например, часто используется операция H = MBR « 8):

DEST = H DEST = SOURCE

DEST = H_

DEST = SUORCE DEST = H + SOURCE DEST = H + SOURCE + 1 DEST = H + 1 DEST = SOURCE + 1 DEST = SOURCE - H DEST = SOURCE - 1 DEST = -H DEST = H И SOURCE DEST = H ИЛИ SOURCE DEST = 0 DEST = 1 DEST = -1

Здесь SOURCE — значение любого из регистров: MDR, PC, MBR, MBRU, SP, LV, CPP, TOS и OPC; a MBRU означает MBR Unsigned, то есть значение регистра MBR без знака. Все эти регистры могут выступать в качестве источников значений для АЛУ (они поступают в АЛУ через шину В). Сходным образом DEST может обозначать любой из следующих регистров: MAR, MDR, PC, SP, LV, CPP, TOS, OPC и H; каждый из этих регистров может быть целевым для выходного сигнала АЛУ, который передается к регистрам по шине С. Многие, казалось бы разумные, утверждения недопустимы. Например, следующее выражение выглядит вполне корректно, но эту операцию нельзя выполнить в тракте данных, изображенном на рис. 4.5, за один цикл:


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

.