М. В. Ломоносова Факультет вычислительной математики и кибернетики В. Г. Баула Введение в архитектуру ЭВМ и системы программирования Москва 2003 Предисловие Данная книга
Вид материала | Книга |
Содержание3.3. Формальное описание учебной машины 4. Введение в архитектуру ЭВМ 4.1. Адресность ЭВМ Трёхадресная машина. Двухадресная машина. Одноадресная машина. Безадресная машина. |
- М. В. Ломоносова Факультет вычислительной математики и кибернетики Кафедра математической, 6.81kb.
- Н. И. Лобачевского Факультет Вычислительной математики и кибернетики Кафедра Математического, 172.6kb.
- Н. И. Лобачевского Факультет Вычислительной Математики и Кибернетики Кафедра иисгео, 4000.54kb.
- М. В. Ломоносова факультет Вычислительной Математики и Кибернетики Диплом, 49.56kb.
- Методы интеллектуального анализа данных и некоторые их приложения, 29.22kb.
- М. В. Ломоносова Факультет Вычислительной Математики и Кибернетики Кафедра Системного, 124.67kb.
- Н. И. Лобачевского Факультет Вычислительной математики и кибернетики Кафедра Математического, 169.45kb.
- Московский Государственный Университет им. М. В. Ломоносова. Факультет Вычислительной, 104.35kb.
- М. В. Ломоносова Факультет Вычислительной Математики и Кибернетики Реферат, 170.54kb.
- М. В. Ломоносова Факультет вычислительной математики и кибернетики Руденко Т. В. Сборник, 1411.4kb.
3.3. Формальное описание учебной машины
При описании архитектуры учебной ЭВМ на естественном языке многие вопросы остались нераскрытыми. Что, например, будет после выполнения команды из ячейки с адресом 511? Какое значение после нажатия кнопки ПУСК имеют ячейки, расположенные вне введённой программы? Как представляются целые и вещественные числа? Для ответа на почти все такие вопросы мы приведём формальное описание нашей учебной машины. В качестве метаязыка мы будем использовать Турбо-Паскаль, на котором Вы работаете. Другими словами, мы напишем программу, выполнение которой моделирует работу нашей учебной машины, т.е. наша машина, по определению, работает почти так же, как и написанная нами программа на Паскале.
Ниже приведена реализация учебной машины на языке Турбо-Паскаль:
program УМ_3(input, output);
const
N = 511;
type
Address = 0..N;
Tag = (kom, int, fl); {В машинном слове может хранится команда, целое
или вещественное число}
Komanda = packed record
KOP: 0..31;
A1, A2, A3: Address;
end;
Slovo = packed record
case Tag of
kom: (k: Komanda);
int: (i: LongInt)
fl: (f: Single);
end
Memory = array[0..N] of Slovo;
var
Mem: Memory;
S, R1, R2: Slovo; {Регистры АЛУ}
RK: Komanda; {Регистр команд}
RA: Address; {Счётчик адреса}
Om: 0..2; {Регистр w}
Err: Boolean;
begin
Input_Program; {Эта процедура должна вводить текст программы с устройства
ввода в память по кнопке ПУСК}
Om := 0; Err := False; RA := 1; {Начальная установка регистров}
with RK do
repeat {Основной цикл выполнения команд}
RK := Mem[RA].k;
RA := (RA+1) mod (N+1);
case KOP of {Анализ кода операции}
00: { ПЕР }
begin R1 := Mem[A3]; Mem[A1] := R1 end;
01: { СЛВ }
begin
R1 := Mem[A2]; R2 := Mem[A3]; S.f := R1.f + R2.f;
if S.f = 0.0 then OM := 0 else
if S.f < 0.0 then OM := 1 else OM := 2;
Mem[A1] := S; { Err := ? }
end;
09: { БЕЗ }
RA := A2;
24: { МОД }
begin
R1 := Mem[A2]; R2 := Mem[A3];
if R2.i = 0 then Err := True else begin
S.i := R1.i mod R2.i; Mem[A1] := S;
if S.i = 0 then OM := 0 else
if S.i < 0 then OM := 1 else OM := 2;
end
end;
13: { СТОП } ;
{ Реализация остальных кодов операций }
else
Err := True;
end; { case }
until Err or (KOP = 31)
end.
Для хранения машинных слов мы описали тип Slovo, который является записью с вариантами языка Турбо-Паскаль. В такой записи на одном и том же месте памяти могут располагаться команды, длинные (32-битные) целые числа или же 32-битные вещественные числа типа Single. 1
Наша программа ведёт себя почти так же, как учебная машина. Одно из немногих мест, где это поведение расходится, показано в тексте программы, например, при реализации команды сложения вещественных чисел. Программа на Паскале при переполнении (когда результат сложения не помещается в переменную S) производит аварийное завершение программы, а учебная машина просто присваивает регистру Err значение 1. Наше формальное описание отвечает и на вопрос о том, как в учебной машине представляются целые и вещественные числа: точно так же, как в переменных на Паскале. Это представление мы изучим в нашем курсе несколько позже.
Заметим также, что память учебной машины как бы замкнута в кольцо: после выполнения команды из ячейки с адресом 511 (если это не команда перехода) следующая команда будет выполняться из ячейки с адресом ноль. Такая организация памяти типична для многих современных ЭВМ.
4. Введение в архитектуру ЭВМ
4.1. Адресность ЭВМ
Как мы уже упоминали, число адресов в команде называется адресностью ЭВМ. Разнообразие архитектур ЭВМ предполагает, в частности, и различную адресность команд. Рассмотрим схему выполнения команд с различным числом адресов операндов. Будем предполагать, что для хранения кода операции в команде отводится один байт (8 разрядов), а для хранения каждого из адресов – 3 байта (это обеспечивает объём памяти 224 ячеек). Ниже приведены форматы команд для ЭВМ различной адресности и схемы выполнения этих команд для случая бинарных операций (у таких операций два операнда и один результат).
- Трёхадресная машина.
-
КОП
A1
A2
A3
= 10 байт
8 разрядов
24 разряда
24 разряда
24 разряда
Схема выполнения команд такой машины нам уже известна:
R1 :=
- Двухадресная машина.
-
КОП
A1
A2
= 7 байт
8 разрядов
24 разряда
24 разряда
Схема выполнения команд:
R1 :=
Заметим, что теперь для выполнения бинарной операции первый и второй операнды задаются явно в качестве адресов в команде, а местоположение результата операции задаётся неявно или, как говорят, по умолчанию. В рассмотренном выше случае результат операции по умолчанию помещается на место первого операнда, уничтожая его.
- Одноадресная машина.
-
КОП
A1
= 4 байта
8 разрядов
24 разряда
Схема выполнения команд:
R1 :=
Для работы в одноадресной машине необходимы ещё две команды, которые имеют один операнд и один результат и выполняются по другим схемам. Это команда чтения числа из памяти на регистр сумматора:
СЧ A1
Она выполняется по схеме
S :=
и команда записи значения из сумматора в память:
ЗП A1
Она выполняется по схеме
При выполнении бинарных операций в одноадресной ЭВМ только один второй операнд задаётся в команде явно, а первый операнд и результат задаются неявно – это регистр сумматора.
- Безадресная машина.
-
КОП
= 1 байт
8 разрядов
В отличие от других рассмотренных выше машин, безадресная машина использует при работе аппаратно реализованный в компьютере стек, для чего вводятся две дополнительные одноадресные команды: записи из памяти в стек
ВСТЕК A1
которая выполняется по схеме
R1 :=
и команда чтения из стека
ИЗСТЕКА A1
которая выполняется по схеме
ИЗСТЕКА(R1);
Таким образом, за исключение двух указанных выше одноадресных команд, которые имеют длину 4 байта, все остальные команды являются безадресными, имеют длину 1 байт и выполняются по схеме:
R1 := ИЗСТЕКА; R2 := ИЗСТЕКА; S := R1 R2; ВСТЕК(S)
Как видно, для безадресных команд при выполнении бинарных операций уже все аргументы (два операнда и результат) задаются неявно и располагаются в стеке. Отсюда понятно, почему часто машины этой архитектуры называются стековыми ЭВМ.
Кроме рассмотренных видов машин, существовали и другие архитектуры ЭВМ, например, четырёхадресные, в четвёртом адресе которых дополнительно хранится ещё и адрес следующей выполняемой команды. Собственно, адресов может быть и больше, с помощью таких команд можно, например, реализовать функции от многих переменных.
Существуют архитектуры ЭВМ, которые различаются не только количеством адресов в команде, но и наличием в команде нескольких кодов операций. Такие ЭВМ называются машинами с очень длинным командным словом (VLIW – very large instruction word). В этих компьютерах, например, указанные команды могут реализовывать оператор присваивания вида z:=k*(x+y) по схеме:
R1 :=
R1 :=
В компьютерах с такой архитектурой команда содержит два кода операции и четыре адреса аргументов:
-
КОП1
КОП2
A1
A2
A3
A4
Такие команды могут выполняться, например, по схеме:
R1 :=
R1 :=