Статус нашего сайта: |
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Один из возможных подходов — просто выдать список сигналов, которые должны активизироваться в каждом цикле. Предположим, что в одном цикле мы хотим увеличить значение 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, за один цикл: |