Дробно-адресная архитектура
Сравнительный анализ ЭВМ различной адресности.
ВСТЕК (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 бит |