Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Баула.doc
Скачиваний:
112
Добавлен:
28.05.2015
Размер:
1.82 Mб
Скачать

4.2. Сравнительный анализ эвм различной адресности

При изучении ЭВМ с разным количеством адресов естественно встаёт вопрос, какая архитектура лучше, например, даёт программы, занимающие меньше места в памяти (что было весьма актуально для первых ЭВМ). Исследуем этот вопрос, составив небольшой фрагмент программы для ЭВМ с различной адресностью. В качестве примера рассмотрим реализацию оператора присваивания, который содержит типичный набор операций: 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

x := (a+b)2

ЗП

X

СЧ

A

S := a/(a+b)2

ДЕЛ

X

ЗП

X

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

  • Безадресная машина.

ВСТЕК

A

Поместить a в стек

ВСТЕК

Дублировать вершину стека

ВСТЕК

B

Теперь в стеке 3 числа: b,a,a

СЛ

В стеке два числа: b+a, a

ВСТЕК

Дублировать вершину стека, в стеке b+a,b+a,a

УМН

В стеке (a+b)2,a

ОБМЕН

Поменять местами два верхних элемента стека

ДЕЛ

В стеке a/(a+b)2

ИЗСТЕКА

X

Запись результата из стека в x

В данной программе использовались команды разной длины (безадресные и одноадресные). Длина программы: 3*4 + 6*1 = 18 байт.

Наше небольшое исследование показало, что архитектура ЭВМ с безадресными командами даёт наиболее компактные программы. В начале развития вычислительной техники такие компьютеры были весьма распространены, их, в частности, выпускала известная фирма Барроуз (Burroughs). Однако в дальнейшем были предложены ЭВМ с другой архитектурой, которая позволила писать не менее компактные программы, и в настоящее время стековые ЭВМ используются редко.

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

Далее мы рассмотрим архитектуру ЭВМ, которые называются компьютерами с адресуемыми регистрами, в русскоязычной литературе они часто называются дробно-адресными [3,4] (смысл этого названия мы скоро выясним). Эти компьютеры должны давать возможность писать такие же компактные программы, как и компьютеры с безадресной системой команд, но при этом они обладают рядом дополнительных достоинств.

Компьютеры дробно-адресной архитектуры нарушают один из принципов фон Неймана – принцип однородности памяти. Будем считать, что память, к которой может непосредственно обращаться центральный процессор, состоит из двух частей, каждая со своей независимой нумерацией ячеек. Одна из этих частей называется адресуемой регистровой памятьюи имеет небольшой объём (порядка десятков ячеек), а другая называетсяосновной (оперативной) памятьюбольшого объёма. Ячейка каждого из видов памяти имеет свой адрес, но в случае с маленькой регистровой памятью этот адрес имеет размер в несколько раз меньший, чем адрес ячейки основной памяти.

Например, рассмотрим двухадресную ЭВМ, в которой регистровая память состоит из 16 ячеек. В этом случае адрес каждого регистра лежит в диапазоне 015,и будет помещаться в 4 бита, а основная память содержит220 ячеек и адрес каждой ячейки занимает20двоичных разрядов. В такой ЭВМ в качестве адресов операндов каждой команды могут быть или адреса двух регистров, или адрес регистра и адрес ячейки основной памяти. Адреса регистров на схемах команд будем обозначатьR1 иR2, а адрес основной памятиA1 илиA2. Первый вид команд будем называть командамиформата регистр-регистр(обозначаетсяRR), а вторые –формата регистр-память(обозначаетсяRX). В этом случае для одного кода операции (например, сложения) мы получим команды двух форматов длины 2 и 4 байта соответственно:

КОП

R1

R2

= 2 байта

1 байт

1 байт

КОП

R1

A2

= 4 байта

8 бит

4 бита

20 бит

В качестве преимущества этой архитектуры нужно отметить, что ячейки регистровой памяти размещаются внутрицентрального процессора, и, имея статус регистров, позволяют производить на них арифметические и логические операции (что, как мы помним, в основной памяти невозможно). Кроме того, это обеспечивает быстрый доступ к хранимым на регистрах данным (не требуется делать обмен с расположенной отдельно от центрального процессора основной памятью).

Скажем теперь, что такая архитектура получила название дробно-адреснойпотому, что адрес ячейки регистровой памяти составляет какую-то часть адреса ячейки большой основной памяти. В нашем примере соответствующее отношение равно правильной дроби 1/5.

Из рассмотренного выше можно сделать вывод, что при программировании на ЭВМ с такой архитектурой желательно как можно чаще оперировать с регистровой памятью и как можно реже обращаться к большой основной памяти, такого принципа мы и будем придерживаться. Теперь для нашей дробно-адресной машины составим фрагмент программы, который реализует, как и в предыдущих примерах, арифметический оператор присваивания x:=a/(a+b)2. Мнемонические коды операций задают арифметические операции с обычным смыслом. Точка с запятой, как это принято в языке Ассемблера, задаёткомментарийк команде:

...

СЧ R1,a; R1 := a

СЧ R2,b; R2 := b

СЛ R2,R1; R2 := b+a=a+b

УМН R2,R2; R2 := (a+b)2

ДЕЛ R1,R2; R1 := a/(a+b)2

ЗП x,R1; x := R1= a/(a+b)2

...

Длина этого фрагмента программы равна 3*4+3*2 = 18 байт. Как видим, данная архитектура не уступает стековой (безадресной) архитектуре по длине получаемых программ.

Рассмотрим теперь недостатки дробно-адресной архитектуры ЭВМ. Если ранее для каждой арифметической операции было необходимо реализовать по одной команде для целых и вещественных чисел, то теперь число этих команд возросло вдвое из-за необходимости реализовывать эти команды как в формате RR, так и в форматеRX. Это приводит к существенному усложнению устройства управления, которое отныне должно поддерживать бόльшее количество операций.

Однако преимущества дробно-адресной архитектуры настолько очевидны, что её имеют большинство современных машин. Разумеется, в них есть и много новых особенностей, некоторые из которых мы рассмотрим далее в нашем курсе.

При работе с дробно-адресной архитектурой мы встречаемся с командами разного формата (и, соответственно, разной длины). Как говорится, современные ЭВМ обладают многообразием форматов команд. Например, на тех компьютерах, на которых Вы сейчас выполняете свои практические работы, реализованы около десяти форматов, а длина команд составляет от 1 до 6 байт.