- •В. Г. Баула Введение в архитектуру эвм и системы программирования
- •Предисловие
- •1. Понятие об архитектуре эвм
- •2. Машина Фон Неймана
- •2.1. Память
- •2.2. Устройство Управления
- •2.3. Арифметико–Логическое Устройство
- •2.4. Взаимодействие уу и алу
- •3. Учебная машина
- •3.1. Схема выполнения команд
- •3.2. Примеры программ для учебной машины.
- •3.2.1. Пример 1. Оператор присваивания.
- •3.2.2. Пример 2. Условный оператор.
- •3.2.3. Пример 3. Реализация цикла.
- •3.2.4. Пример 4. Работа с массивами.
- •3.3. Формальное описание учебной машины
- •4. Введение в архитектуру эвм
- •4.1. Адресность эвм
- •4.2. Сравнительный анализ эвм различной адресности
- •4.3. Дробно-адресная архитектура
- •4.4. Способы адресации
- •4.5. Многообразие форматов данных
- •4.6. Форматы команд
- •4.7. Базирование адресов
- •5. Понятие семейства эвм
- •6. Архитектура младшей модели семейства Intel
- •6.1. Память
- •6.2. Форматы данных
- •6.3. Вещественные числа
- •6.4. Целые числа
- •6.5. Сегментация памяти
- •6.6. Мнемонические обозначения регистров
- •6.7. Структура команд
- •6.8. Команды языка машины
- •6.8.1. Команды пересылки
- •6.8.2. Арифметические команды
- •7. Язык Ассемблера
- •7.1. Понятие о языке Ассемблера
- •7.2. Применение языка Ассемблера
- •7.3. Классификация предложений языка Ассемблер
- •7.4. Пример полной программы на Ассемблере
- •7.5. Переходы
- •7.6. Команды переходов
- •7.6.1. Команды безусловного перехода
- •7.6.2. Команды условного перехода
- •7.6.3. Команды цикла
- •7.7. Работа со стеком
- •7.8. Команды вызова процедуры и возврата из процедуры
- •7.9. Программирование процедур на Ассемблере
- •7.9.1. Стандартные соглашения о связях
- •8. Система прерываний.
- •9. Дополнительные возможности Ассемблера.
- •9.1. Строковые команды.
- •9.2. Логические команды.
- •9.3. Команды сдвига.
- •10. Модульное программирование
- •10.1. Модульное программирование на Ассемблере.
- •10.2. Схема работы редактора внешних связей.
- •10.3. Схема работы статического загрузчика.
- •10.4. Схема работы динамического загрузчика.
- •11. Понятие о системе программирования.
- •11.1. Компоненты системы программирования.
- •11.2. Характеристики исполняемых модулей.
- •11.2.1. Перемещаемые модули.
- •11.2.2. Повторно-выполняемые модули.
- •11.2.3. Повторно-входимые (реентерабельные) модули.
- •12. Макросредства языка Ассемблер.
- •12.1. Сравнение процедур и макроопределений.
- •13. Схема работы транслятора с языка Ассемблера.
- •14. Понятие о мультипрограммном режиме работы.
- •14.1. Требования к аппаратуре для обеспечения возможности работы в мультипрограммном режиме.
- •14.1.1. Система прерываний.
- •14.1.2. Механизм защиты памяти.
- •14.1.3. Аппарат привилегированных команд.
- •14.1.4. Таймер.
- •15. Архитектурные особенности современных эвм.
- •15.1. Конвейерные эвм.
- •15.2. Эвм различной архитектуры.
- •15.2.1. Архитектура эвм с общей шиной.
- •15.2.2. Достоинства и недостатки архитектуры с общей шиной.
- •15.2.3. Архитектура эвм с каналами ввода/вывода.
- •15.3. Уровни параллелизма.
- •Список литературы.
4.6. Форматы команд
Для операций с разными способами адресации и разными форматами данных необходимо введение различных форматов команд, которые, естественно, имеют разную длину. Обычно это такие форматы команд (в скобках указано их мнемоническое обозначение):
регистр – регистр (RR);
регистр – память, память – регистр (RX);
регистр – непосредственный операнд в команде (RI);
память – непосредственный операнд в команде (SI);
память – память, т.е. оба операнда в основной памяти (SS).
Многообразие форматов команд и данных позволяет писать более компактные и эффективные программы на языке машины, однако, как уже упоминалось, сильно усложняют центральный процессор ЭВМ.
4.7. Базирование адресов
Для дальнейшего уменьшения объёма программы современные ЭВМ используют базирование адресов. Изучение этого понятия проведём на следующем примере. Пусть в программе на одноадресной машине необходимо реализовать арифметический оператор присваиванияX:=(A+B)2. Ниже приведена эта часть программы с соответствующими комментариями (напомним, чтоS– это регистр сумматора одноадресной ЭВМ):
...
СЧ A; S:=A
СЛ B; S:=A+B
ЗП R; R:=A+B – запись в рабочую переменную
УМ R; S:=(A+B)2
ЗПX; X:=(A+B)2
...
Так как в нашем примере одноадресная ЭВМ имеет 224(примерно 16 миллионов) ячеек памяти, то будем считать, что наш фрагмент программы располагается где-то примерно в средине памяти. Пусть, например, наши переменные располагаются соответственно в следующих ячейках памяти:
A – в ячейке с адресом 10 000 000
B – в ячейке с адресом 10 000 001
X – в ячейке с адресом 10 000 002
R – в ячейке с адресом 10 000 003
Тогда приведённый выше фрагмент программы будут выглядеть следующим образом:
...
СЧ 10 000 000; S:=A
СЛ 10 000 001; S:=A+B
ЗП 10 000 003; R:=A+B
УМ10 000 003; S:=(A+B)2
ЗП10 000 002; X:=(A+B)2
...
Из этого примера видно, что большинство адресов в нашей программе имеют вид B+, где числоBназовёмбазовым адресомпрограммы или простобазой(в нашем случаеB=10 000 000), а–смещениемадреса относительно этой базы. Здесь налицо существеннаяизбыточность информации. Очевидно, что в каждой команде можно указывать только короткоесмещение, а базу хранить отдельно (обычно на каком-то специальномбазовомрегистре центрального процессора). Исходя из этих соображений, предусмотрим в машинном языке командузагрузки базы (длина этой команды 4 байта):
-
ЗГБ
A1
8 бит
24 бита
Тогда наш фрагмент программы будет иметь такой вид:
...
ЗГБ 10 000 000
...
СЧ 000; S:=A
СЛ 001; S:=A+B
ЗП 003; R:=A+B
УМ003; S:=(A+B)2
ЗП002; X:=(A+B)2
...
Теперь, однако, при выполнении каждогообращения за операндом в основную память, центральный процессор долженвычислятьзначение адреса этого операнда адреса по формулеA=B+. Это вычисление производится в устройстве управления и, естественно, усложняет его. Например, адрес переменнойA=10000001=B+=107+1.
Осталось выбрать длину смещения . Вернёмся к рассмотрению дробноадресной ЭВМ, для которой реализовано базирование адресов. Например, пусть под запись смещения выделим в команде поле длиной в 12 бит. Будем, как и раньше, обозначать операнд в памятиA1илиA2, но помним, что теперь это толькосмешениеотносительно базы. Тогда все команды, которые обращаются за операндом в основную память, будут в нашей дробноадресной ЭВМ более короткими:
-
КОП
R1
A2
8 бит
4 бита
12 бит
Схема выполнения такой команды для формата регистр-память:
<R1> := <R1> <B+A2>
или для формата память-регистр:
<B+A2> := <B+A2> <R1>
Область, в которой находятся вычисляемые относительно базы ячейки основной памяти, обычно называется сегментомпамяти – это сплошной участок памяти, начало которого задаётся в некотором регистре, называемомбазовым, илисегментным. Будем далее для определённости называть такие регистры сегментными, а сам приём –сегментированиемпамяти.
Сегментирование позволяет уменьшить объём памяти для хранения программ, но оно имеет и один существенный недостаток: теперь каждая команда может обращаться не к любой ячейки оперативной памяти, а только к тем из них, до которых "дотягивается" смещение. В нашем примере каждая команда может обращаться к диапазону адресов от значения сегментного регистра BдоB+212-1. Для доступа к другим ячейкам памяти необходимо записать в сегментный регистр новое значение (как говорят,перезагрузитьсегментный регистр). Несмотря на указанный недостаток,практическивсе современные ЭВМ производят сегментирование памяти. Заметим также, что этот недостаток в большинстве архитектур современных ЭВМ исправляется путём реализациипеременнойдлины смещения (например, разрешается смешение в 1, 2 или 4 байта), что, однако ещё более увеличивает набор команд и усложняет центральный процессор.
Итак, для осуществления доступа к памяти ЭВМ необходимо, чтобы ячейка, к которой осуществляется доступ, находилась в сегменте, на начало которого указывает сегментный регистр. Современные ЭВМ обеспечивают одновременную работу с несколькими сегментами памяти и, соответственно, имеют несколько сегментных регистров.
В некоторых архитектурах регистры центрального процессора являются универсальными, т.е. каждый из них может быть использован как сегментный или для выполнения любых операций над данными. Сложность центрального процессора при этом существенно повышается, так что во многих архитектурах используютсяспециализированныерегистры, т.е. определённые регистры являются сегментными, на других могут производиться операции и т.д.