Chapter_04 (1110556), страница 2
Текст из файла (страница 2)
Вообще говоря, существует возможность записывать вычисляемые выражения и в обратнойпольской записи, тогда для таких стековых машин бинарная операция будет выполняться уже по схемеS := R2 R1.2На первый взгляд может показаться, что в стековых ЭВМ нарушается принцип Фон Неймана однородности памяти, так как в стеке возможен доступ только к его вершине. Однако это не так: для большинства стековых ЭВМ сам стек является частью основной памяти, поэтому к любой ячейке стека возможен и прямой доступ, т.е. команды ВСТЕК А1 и ИЗСТЕКА А1 в качестве своих операндов А1 могут указывать адрес произвольной ячейки памяти, в том числе и в любом месте стека.3Заметим, что, несмотря на необычность такой архитектуры, она может удовлетворять всем принципамФон Неймана.4т.д. Среди наиболее известных компьютеров этой архитектуры для любознательных читателей можно назвать ЭВМ Multiflow и Cydra.В настоящее время VLIW архитектура получила своё дальнейшее развитие в компьютерах такназываемой EPIC архитектуры (Explicitly Parallel Instruction Computing – вычисление с явно заданным параллелизмом команд).
О таких компьютерах мы немного поговорим в главе, посвящённой архитектурным особенностям современных ЭВМ.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 - рабочая переменаяСЛ 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 байт (плюс одна дополнительная рабочая переменная R). Одноадресная машинаСЧСЛЗПУМНЗПСЧДЕЛЗПabxxxaxXS := aS := a+bx := a+bS := (a+b)2x := (a+b)2S := aS := a/(a+b)2x := a/(a+b)2Длина этой программы: (8 команд)*4 байта = 32 байта. Как видим, длина программы для одноадреснойЭВМ получилась примерно такая же, как и для трёх и двухадресных машин.
В то же время легко понять, чтоцентральный процессор одноадресной ЭВМ будет устроен проще, так как проще схема выполнения каждойкоманды, требуется меньше служебных регистров и т.д. Далее, простота центрального процессора позволяет,при тех же затратах, увеличить скорость его работы за счёт реализации на более дорогих интегральных схемах.Отсюда понятна привлекательность одноадресной архитектуры для разработчиков ЭВМ первых поколений.Например, одноадресная отечественная ЭВМ БЭСМ-6 в конце 60-х годов прошлого века была одной из самыхбыстродействующих машин в мире [3].5 Безадресная машинаПоместить a в стекВСТЕКaДублировать вершину стекаВСТЕКТеперь в стеке 3 числа: b,a,aВСТЕКbВ стеке два числа: b+a,aСЛДублировать вершину стека, в стеке b+a,b+a,aВСТЕКВ стеке два числа: (a+b)2,aУМНПоменять местами два верхних элемента стекаОБМЕНВ стеке одно число: a/(a+b)2ДЕЛЗапись результата из стека в xИЗСТЕКА xКак видно из этого примера, в безадресной ЭВМ есть и свои специфические "стековые" команды(дублировать вершину стека, поменять местами два верхних числа стека и др.).
В данной программеиспользовались команды разной длины: 3 одноадресные для обмена со стеком и 6 безадресных команд. Длина всей программы: (3 команды)*4 байта + (6 команд)*1 байт = 18 байт.Видно, что с уменьшением количества адресов в команде увеличивается число команд программы, зато каждая команда становится более короткой, занимает меньше места в памяти и поэтому выполняется быстрее. Наше небольшое исследование показало, что архитектура ЭВМ с безадреснымикомандами даёт более компактные программы, кроме того, центральный процессор у них устроенпроще, чем у двух и трёхадресных ЭВМ. Именно поэтому в начале развития вычислительной техники такие компьютеры были весьма распространены, их, в частности, выпускала известная фирмаБарроуз (Burroughs) [3].
Однако в дальнейшем были предложены ЭВМ с другой архитектурой, которая позволила писать не менее компактные машинные программы, и при этом обладала дополнительными достоинствами, поэтому в настоящее время такие стековые ЭВМ практически не используются.4.3. Архитектура с адресуемыми регистрамиДалее мы рассмотрим архитектуру ЭВМ, которые называются компьютерами с адресуемыми регистрами.
Эти компьютеры должны давать возможность писать такие же компактные программы,как и компьютеры с безадресной системой команд, но при этом они обладают рядом дополнительных достоинств.Компьютеры с адресуемыми регистрами нарушают принцип Фон Неймана линейности и однородности памяти. В этих компьютерах память, к которой может непосредственно (по адресам) обращаться центральный процессор за операндами команд, состоит из двух частей, каждая со своей независимой нумерацией ячеек (это и есть нарушение линейности памяти).
Одна из этих частей называется адресуемой регистровой памятью и имеет небольшой объём (порядка десятков, редко сотен ячеек), а другая называется основной (оперативной) памятью достаточно большого объёма.Ячейка каждого из видов памяти имеет свой адрес, но в случае с маленькой регистровой памятьюэтот адрес имеет размер в несколько раз меньший, чем адрес ячейки большой основной памяти.Например, рассмотрим учебную двухадресную ЭВМ этой новой архитектуры, которую назовёмУМ-Р (Учебная Машина с адресуемыми Регистрами). Пусть регистровая память этой учебной ЭВМсостоит из 16 ячеек по 4 байта каждая. В этом случае адрес каждого регистра лежит в диапазоне015, и будет помещаться в 4 бита, а основная память пусть содержит 220 ячеек, тогда адрес каждой ячейки занимает 20 двоичных разрядов.
В такой ЭВМ в качестве адресов операндов каждой команды могут быть или адреса двух регистров, или один адрес регистра и один адрес ячейки основной памяти (заметим, что команды устройство управления по-прежнему может читать только из основной памяти). Адреса регистров на схемах команд будем обозначать r1 и r2, а адреса основнойпамяти, как и раньше, A1 или A2.
Первый вид команд будем называть командами формата регистррегистр (обозначается RR), а второй – формата регистр-память (обозначается RX).1 В этом слу-1Мы вскоре выясним, что третий логически допустимый формат команд (память-память), когда оба адреса принадлежат основной памяти, не даёт никаких преимуществ при программировании в этой архитектуре.Исходя из этого, мы не будем его реализовывать в нашей учебной машине с адресуемыми регистрами.6чае для одного кода операции (например, сложения) мы получим команды двух форматов длины 2 и4 байта соответственно:КОП8 битr1r2= 2 байта4 бита 4 битаКОП8 битr14 битаA220 бит= 4 байтаВ качестве преимущества этой архитектуры нужно отметить, что ячейки регистровой памятиразмещаются внутри центрального процессора, и, имея статус регистров, позволяют производить наних арифметические и логические операции (что, как мы помним, в основной памяти невозможно попринципам Фон Неймана).
Кроме того, такое расположение обеспечивает быстрый доступ к хранимым на регистрах данным (не требуется делать обмен с расположенной отдельно от центральногопроцессора основной памятью). Как правило, время доступа к регистру у всех ЭВМ примерно на порядок меньше, чем к ячейке основной памяти (это и есть нарушение принципа однородности памяти).
Всё это позволяет существенно повысить быстродействие такого компьютера.Заметим, что, кроме адресуемых регистров, которые явно указываются в команде, в арифметико-логическом устройстве по-прежнему могут быть и не адресуемые регистры, например, уже знакомые нам регистры первого и второго операнда R1 и R2, а также регистр сумматора S. Таким образом, команда формата регистр-память КОП r1,A2 должна выполняться центральным процессором, например, по схемеR2 := <A2>; S := r1R2; r1 := SОтметим, что содержимое регистров, в отличие от содержимого ячеек основной памяти, принятозаписывать без угловых скобок, так что, например, запись r1 в приведённом выше примере обозначает содержимое регистра r1, а не номер (адрес) этого регистра.Скажем теперь, что такую архитектуру раньше иногда называли дробно-адресной потому, чтоадрес ячейки регистровой памяти составляет какую-то часть адреса ячейки большой основной памяти.
В нашем примере соответствующее отношение равно правильной дроби 4/20=1/5.Из сказанного выше можно сделать вывод, что при программировании на ЭВМ с такой архитектурой желательно как можно чаще оперировать с регистровой памятью и как можно реже обращаться к большой основной памяти, этого правила мы и будем всегда придерживаться в примерах нашихпрограмм.1 Теперь для нашей машины с адресуемыми регистрами составим фрагмент программы,который реализует, как и в предыдущих примерах, арифметический оператор присваиванияx:=a/(a+b)2.
Мнемонические коды операций задают арифметические операции с обычным смыслом, а r1 и r2 обозначают номера адресуемых регистров. Операнды в команде будем разделять запятой, а точка с запятой, как это обычно принято в языке Ассемблера (к изучению которого мывскоре приступим), задаёт начало комментария к команде:СЧСЧСЛУМНДЕЛЗП...r1,a;r2,b;r2,r1;r2,r2;r1,r2;x,r1;...r1r2r2r2r1x:=:=:=:=:=:=abb+a=a+b(a+b)2a/(a+b)2r1= a/(a+b)2Длина этого фрагмента программы равна(3 команды)*4 байта + (3 команды)*2 байта = 18 байт.Как видим, данная архитектура, обладая отмеченными выше преимуществами, не уступает стековой (безадресной) архитектуре по компактности получаемых программ.Рассмотрим теперь главный недостаток ЭВМ с адресуемыми регистрами. Заметим, что если ранее для каждой арифметической операции было необходимо реализовать по одной команде для целых и вещественных чисел, то теперь число этих команд возросло вдвое из-за необходимости реали1В некоторых современных ЭВМ такой архитектуры этот принцип возведён в абсолют: все действия надданными производятся только командами формата регистр-регистр, оставляя для формата регистр-памятьтолько команды обмена между регистрами и основной памятью.7зовывать эти команды как в формате RR, так и в формате RX.