Дробно-адресная архитектура

Сравнительный анализ ЭВМ различной адресности.

ВСТЕК (S)

ИЗСТЕКА А1

ВСТЕК А1

Адресность ЭВМ.

Адресность ЭВМ – это число адресов в команде. Разные архитектуры предполагают различные адресности команд.

Рассмотрим схемы выполнения команд с различным числом адресов операндов. Будем предполагать, что для хранения кода операции отводится 1 байт, а для хранения каждого из адресов 3 байта.

Трехадресная архитектура:

КОП А1 А2 А3  
1 байт 3 байта 3 байта 3 байта = 10 байт

Схема выполнения команд:

R1:=<A2> ; R2:=<A3>

S:=R1 R2 ; <A1>:=S

Двухадресная архитектура:

КОП А1 А2  
1 байт 3 байта 3 байта = 7 байт

Схема выполнения команд:

R1:=<A1>; R2:=<A2>

S:=R1 R2; <A1>:=S

Местоположение операндов задается явно как адреса в команде, а местоположение результата – неявно или по умолчанию.

Одноадресная архитектура:

КОП А1  
1 байт 3 байта = 4 байта

Схема выполнения команд:

R1:=<A1> ; S:= S R1

Для выполнения бинарных операций в одноадресной ЭВМ необходимы еще две команды – чтения числа из памяти на регистр сумматора и записи значения из сумматора в память. Только второй операнд задается явно, а первый операнд и результат – неявно (регистр сумматора).

СЧ А1 (операция чтения числа из памяти на регистр сумматора)

S:=<A1>

ЗП А1 (операция записи в память содержимого сумматора)

<A1>:=S

Общая схема:

CЧ А1(задаем первый операнд)

S:=<A1>

R1:=<A1>(это второй операнд, а первый операнд – регистр сумматора)

S:=S R1(выполняем операцию и получаем результат – на регистр сумматора)

ЗП А1(записываем результат в память)

<A1>:=S

Безадресная архитектура:

КОП  
1 байт = 1 байт

Для выполнения операций используется аппаратно реализованный стек. Для работы со стеком вводятся две дополнительные одноадресные команды – запись из памяти в стек и чтение из стека.

Команда записи в стек:

Она выполняется по схеме: R1:=<A1> ; ВСТЕК(R1).

Команда чтения из стека:

Она выполняется по схеме: ИЗСТЕКА(R1) ; <A1>:=R1

Схема выполнения команд:

R1:=ИЗСТЕКА

R2:=ИЗСТЕКА

S:=R1 R2

Рассмотрим оператор присваивания: x :=a/(a+b)^2

Трехадресная:

СЛ x a b x : = a+b
УМН x x x x : = (a+b)2
ДЕЛx a x x : = a /(a+b)2

Длина программы: 3*10=30 байт

Двухадресная:

ПЕР R a R : = a
СЛ R b R : = a+b
УМН R R R : = (a+b)2
ПЕР x a x : = a
ДЕЛx R x : = a/(a+b)2

Длина программы: 5*7=35 байт

Одноадресная:

СЧ a S : = a
СЛ b S : = a+b
ЗПx x:=a+b
УМН x S : = (a+b)2
ЗП x x : = <S>
СЧ a S : = a
ДЕЛx S : = a/(a+b)2
ЗПx x : = <S>

Длина программы: 8*4=32 байта

Безадресная:

ВСТЕКa поместить а в стек
ВСТЕК дублируем вершину стека
ВСТЕКb помещаем в стек b; в стеке теперь b, a, a
]]]]=======0]]]=======0]]]=======0]]]=======0]]]=======0]]]=======0]]]=======0]]]=======0]]]=======0]]]=======0]]]=======0]]]=======0]]]=======0]]]=======0]]]=======0]]]=======0]]]=======0]]]=======0]]]=======0]]]=======0]]]=======0]]]=======0]]]=======0]]]=======0]]]=======0]]]=======0]]]=======0]]]=======0]]]=======0]]]=======0]]]=======0]]]=======0]]]=======0]]]=======0]]]=======0]]]=======0]]]=======0]]]=======0]]]=======0]]]=======0]]]=======0]]]=======0]]]=======0=СЛ в стеке теперь b+a, a
ВСТЕК дублируем вершину стека
УМН в стеке (b+a)2, a
ОБМЕН поменять местами два верхних элемента стека
ДЕЛ в стеке a / (b+a)2
ИЗСТЕКАx запись результата из стека в x

 

Длина программы: 3*4+6=18 байт

Данную архитектуру также называют архитектурой с адресуемыми регистрами. Такая архитектура нарушает один из принципов Фон Неймана – принцип однородности памяти.

В компьютерах с дробно-адресной архитектурой память делится на 2 части:

адресуемая регистровая память (она имеет небольшой объем);

- основная память (имеет большой объем);

Ячейки каждого из видов памяти имеют собственную независимую адресацию.

Для регистровой памяти адрес имеет размер в несколько раз меньшей, чем для основной памяти.

Пример:Двухадресная ЭВМ.

16 ячеек регистровой памяти.

2^20 – размер основной памяти.

2^24 – вся память.

Адреса – 4 бита.

В такой ЭВМ в качестве адресов операндов могут быть либо адреса 2-х регистров, либо регистр и ячейка основной памяти.

КОП R1 R2
1 байт 1 байт

 

КОП R1 A2
1 байт 4 бита 20 бит