Статус
нашего
сайта:
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

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


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

Стек операндов для программы, приведенной в листинге 4.2, изображен на рис. 4.12. До начала выполнения программы стек пуст, что показано горизонтальной чертой над цифрой 0. После выполнения первой команды ILOAD j помещается в стек (прямоугольник над цифрой 1 на рисунке). Цифра 1 означает, что выполнена первая команда. После выполнения второй команды IL0AD в стеке оказываются уже два слова, как показано в прямоугольнике над цифрой 2. После выполнения команды IADD в стеке остается только одно слово, которое представляет собой сумму j + к. Когда верхнее слово выталкивается из стека и сохраняется в i, стек снова становится пустым.

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

Рис. 4.12. Состояние стека после выполнения каждой команды в программе, приведенной в листинге 4.2

Команда 5 (IL0AD) начинает оператор if. Эта команда помещает i в стек. Затем идет константа 3 (в команде 6). После сравнения стек снова становится пустым (7). Команда 8 является началом фрагмента else. Он продолжается вплоть до команды 12, когда совершается переход к метке L2.

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

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

Микрокоманды и их запись

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

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


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

.