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

Двойное слада па адреса о 32 бит

\B3\BZ I В1 \В0 |

31 о

Учетверенное слово по адресу 8 6^ бит 9

ШИ

I В9 I ВО

вз

б)

Нумерация бит и байт спраба наледо

Ячейки ОП 8 бит

0

Байт

1

Байт

2

Байт

3

Байт

*

Байт

Слобо по адресу z в бит

QBBQEJBDQ

ШШиыииы

О)

Нумерация бит б байте

Рис. 9.2. Адресные структуры основных (оперативных) памятей в ЕС ЭВМ (а), в малых ЭВМ (СМ-1420 и др.) (б)и в микропроцессорах (К580) (в)

в неявной форме кодом операции команды, или непосредственно указывается в коде команды.

Адрес в ЕС ЭВМ представляет собой целое 24-разрядное двоичное число, позволяющее адресовать до 16 777 216 байт (16 Мбайт). В ЕС ЭВМ используются следующие форматы информации фиксированной длины: 1) байт;2) полуслово (два последовательно расположенных в памяти байта); 3) слово (4 байта); 4) двойное слово(8байт); 5) учетверенное слово (16 байт). Кроме того, используются слова (или поля) перемен­ной длины для представления десятичных чисел (в формате от1до 16 байт), логических кодов и алфавитно-цифровых данных (в формате от 1 до 256 байт).

Адрес слова переменной длины (адрес его левого байта) может быть любым в пределах адресной сетки машины, что обеспечивает размещение в памяти полей переменной длины без просветов.

Для упрощения и убыстрения процедур выполнения команд в ряде ЭВМ на адресацию единиц информации фиксированной длины накладываются определенные ограничения (так называе­мые целочисленные границы). Например, в ЕС ЭВМ 11 очереди адреса полуслов, слов, двойных и учетверенных слов рекоменду­ется назначать кратными соответственно 2, 4, 8и 16, при этом двоичные адреса указанных единиц информации содержит0со­ответственно в одном, двух, трех и четырех младших разрядах. Адрес команды может быть только четным.

  1. Проблема выбора структуры и формата команд. Кодирование команд

Все возможные преобразования дискретной информации мо­гут быть сведены к четырем основным видам: 1) передача ин­формации в пространстве (например, из одного блока ЭВМ в другой);2) передача информации во времени (хранение);

  1. логические (поразрядные) операции;. 4) арифметические операции. ЭВМ, являющаяся универсальным преобразователем дискретной информации, выполняет все указанные виды пре­образований.

Обработка информации (решение задач) в ЭВМ осуще­ствляется автоматически путем программного управления. Про­грамма представляет собой алгоритм обработки информации (например, решения математической задачи), записанный в ви­де последовательности команд, которые должны быть выпол­нены машиной для получения решения задачи.

Командапредставляет собой код, определяющий операцию вычислительной машины и данные, участвующие в операции.

Команда содержит также в явной или неявной форме информа­цию об адресе, по которому помещается результат операции, и об адресе следующей команды.

По характеру выполняемых операций различают следующие основные группы команд: а) команды арифметических операций для чисел с фиксированной и плавающей точками; б) команды десятичной арифметики; в) команды логических (поразрядных) операций (И, ИЛИ и др.); г) команды передачи кодов; д) ко­манды операций ввода-вывода; е) команды управления поряд­ком исполнения команд (команды передачи управления); ж) команды задания режима работы машины и др.

В команде, как правило, содержатся не сами операнды, а информация об адресах ячеек памяти или регистрах, в которых они находятся.

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

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

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

Код

операции

v ■■ ■ ./N. ■ ■■ V

Операционная Адресная часть часть

Рис. 9.3. Общая структура команд

Важной и сложной проблемой при проектировании ЭВМ яв­ляется выбор структуры и формата команды, т. е. ее длины, назначения и длины отдельных ее полей. Естественно стремление разместить в команде в возможно более полной форме информа­цию о предписываемой командой операции. Однако в условиях, когда в современных ЭВМ значительно возросло число выпол­няемых различных операций и соответственно команд (система команд ЕС ЭВМ содержит около 200 команд) и значительно увеличилась емкость адресуемой основной памяти (в ЕС ЭВМ

до 16 Мбайт), это приводит к недопустимо большой длине фор­мата команды.

Действительно, число двоичнкх разрядов, отводимых под код операции, должно быть таким, чтобы можно было представить все выполняемые машинные операции. Если ЭВМ выполняет Мразличных операций, то число разрядов в коде операции

nKO>\og2M. (9.1)

Например, при М = 200 лко==8.

Если основная память содержит S адресуемых ячеек (байт), то для представления только одного адреса (например, адреса первого операнда) необходимо в команде иметь адресное поле для одного операнда с числом разрядов

nA>log2S. (9.2)

Например, при S=16 МбайтПа=24.

Вместе с тем для упрощения аппаратуры и повышения быстродействия ЭВМ длина формата команды должна быть со­гласована с выбираемой ^сходя из требований к точности вычис­лений длиной обрабатываемых машиной слов (операндов), со­ставляющей для большинства применений 16—32 бит, с тем чтобы для операндов и команд можно было эффективно исполь­зовать одни и те же память и аппаратурные средства обработки информации. Формат команды должен быть по возможности

короче, укладываться в машинное слово или полуслово, а для

ЭВМ с коротким словом (8—16 бит) должен быть малократным машинному слову. Решение проблемы выбора формата команды значительно усложняется в малых и микроЭВМ и микропроцес­сорах, работающих с коротким словом.

Отмечавшиеся ранее характерные для процесса развития ЭВМ расширение системы (набора) команд и увеличение ем­кости осйовной памяти, а особенно создание малых и микро­ЭВМ с коротким словом, потребовали разработки методов уко­рочения формата команды. При решении этой проблемы су­щественно видоизменилась структура команды, получили разви­тие различные способы адресации информации.

Проследим изменения классических структур команд.

Чтобы команда содержала в явном виде всю необходимую информацию о задаваемой операции, она должна, как это по­казано на рис. 9.4, а, содержать поле кода операции и четыре адреса для указания ячеек памяти, содержащих два операнда, участвующих в операции, ячейки, в которую помещается резуль­тат операции, и ячейки, содержащей следующую команду. Такой порядок выборки команд называется принудительным.Он ис-

Код

операции

Первый адрес Л1

Второй

адрес

4г.

Третий

адрес

Аз

Четвертый

адрес

«>

Код

операции

Первый

адрес

Второй

адрес

Az

Третий

адрес

Аз

Код

операции.

ю

д)

Код

операции

Первый

адрес

А1

Второй

адрес

Аг

Код

операции

Адрес А

Рис. 9.4. Структуры команд:

а— четырехадресная; 6 — трехадресная;в— двухадресная;г —одноадрес ная;д — безадресная

пользовался в некоторых первых моделях ЭВМ. Для рассмот­ренного выше примера с М= 200 иS = 16 Мбайт длина четырех­адресной команды составила бы 104 бит. Такой формат коман­ды окажется трудно реализуемым и неэффективным. Четырех­адресные команды в настоящее время не применяются.

Можно установить, как это принято для большинства ма­шин, что после выполнения данной команды, расположенной по адресу К(и занимающейL ячеек), выполняется команда из(K+L)-Pi ячейки. Такой порядок выборки команд называетсяестественным.Он нарушается только специальными командами. В таком случае отпадает необходимость указывать в команде в явной форме адрес следующей команды. В трехадресной ко­манде (рис.9.4,б)первый и второй адреса указывают ячейки памяти, в которых расположены операнды, а третий определяет ячейку, в которую помещается результат операции. Операция, описываемая трехадресной командой, может быть символически представлена в виде

ОПИз]: =ОП[Л,]*ОП [А21

где знак заменяет символ операции ( + , — и т. п.).

Можно условиться, что результат операции всегда помеща­ется на месте одного из операндов, например первого. Получим двухадресную команду (рис. 9.3, в)

ОП [Ах]:=ОП [Л,]* ОП [А2], т. е. для результата используется подразумеваемый адрес.

В одноадресной команде (рис. 9.4, г)подразумеваемые ад­реса имеют уже и результат операций, и один из операндов. Один из операндов указывается адресом в команде, в качестве второго используется содержимое регистра процессора, называ­емого в этом случае регистром результата или аккумулятором (Акк). Результат операции записывается в тот же регистр:

Акк: =Акк$:ОП [А].

Наконец, в некоторых случаях возможно использование бе­задресных команд (рис. 9.4, д), когда подразумеваются адреса обоих операндов и результата операции, например при работе со стековой памятью.

С точки зрения программиста наиболее естественны и удоб­ны трехадресные команды. Однако из-за необходимости иметь большее число разрядов для представления адресов и кода операции длина трехадресной команды становится недопустимо большой, и ее не удается разместить в машинном слове. Следует отметить, что очень часто в качестве операндов используются результаты предыдущих операций, хранимые в регистрах маши­ны. В этом случае выполняемая операция приобретает характер одно- или двухадресный, при этом трехадресный формат исполь­зуется неэффективно. По указанным причинам в современных ЭВМ применяют, как правило, двух- и одноадресные команды и их модификации.

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

Обычно в ЭВМ используется несколько форматов команд разной длины.

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

  1. Способы адресации

Следует различать понятия адресный кодв командеАк иисполнительный адрес АИ.Адресный код — это информация об адресе операнда, содержащаяся в команде. Исполнительный адрес — это номер ячейки памяти, к которой производится фак­тическое обращение. В современных ЭВМ, адресный код, как правило, не совпадает с исполнительным адресом.

Выбор способов адресации, формирования исполнительного адреса и преобразования адресов является одним из важнейших вопросов разработки ЭВМ. Рассмотрим способы адресации, ис­пользуемые в современных ЭВМ.

Подразумеваемый операнд.В команде не содержится явных указаний об адресе операнда; операнд подразумевается и фак­тически задается кодом операции команды. Данный способ ис­пользуетсяhe часто, однако имеется несколько важных случаев его применения. В качестве примера можно привести команды подсчета, в которых к некоторому числу (содержимому счетчи­ка) прибавляется фиксированное приращение, чаще единица младшего разряда. Один из операндов — число в счетчике — обычно адресуется явным методом, второй операнд — прираще­ние — не адресуется, в памяти машины не содержится и являет­ся подразумеваемым.

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

Непосредственная адресация.В команде содержится не ад­рес операнда, а непосредственно сам операнд. При непосред­ственной адресации не требуется обращения к памяти для вы­борки операнда и ячейки для его хранения. Это способствует уменьшению времени выполнения программы и занимаемого ею объема памяти. Непосредственная адресация удобна для хране­ния различного рода констант; однако следует иметь в виду, что при этом способе адресации длина операнда короче кода коман­ды, поскольку часть разрядов команды занята под код операции.

Прямая адресация.Исполнительный адрес совпадает с ад­ресной частью команды. Этот способ адресации был общеприня­тым в первых вычислительных машинах и продолжает приме­няться в настоящее время в комбинации с другими способами.

В указанной форме непосредственная адресация реализуется в ЭВМ со сравнительно длинным машинным словом (32 разряда и более), например в ЕС ЭВМ. Особенности непосредственной адресации в малых ЭВМ и микропроцессорах изложены в § 9.1 и 10.2.

Относительная адресация или базирование.Исполнительный адрес определяется суммой адресного кода командыАки ^не­которого числа называемогобазовым адресом:

Для хранения базовых адресовв машине могут быть пре­дусмотрены регистры или специально выделенные для этой цели ячейки памяти(базовые регистры).В команде выделяется полеВдля указания номера базового регистра.

Относительная адресация позволяет при меньшей длине ад­ресного кода команды обеспечить доступ к любой ячейке памяти. Для этого число разрядов в базовом адресе выбирают таким, чтобы можно было адресовать любую ячейку ОП, а адресный код Аксамой команды используют для представления лишь срав­нительно короткого«смещения»(обозначают буквойD). Сме­щениеD определяет положение операнда относительно начала массива, задаваемого базовым адресомА6.Рисунок 9.5 поясняет процесс формирования исполнительного адреса.

а — образование адреса элемента одномерного массива; б — формирование исполнительного адреса суммированием; в — формирование исполнительного адреса совмещением

где ВиD — коды (числа), стоящие в соответствующих полях команды;(В)— содержимое регистра с номеромВ.При В = =0относительная адресация блокируется.

Большей частью исполнительный адрес при базировании образуется с помощью сумматора согласно выражению (рис. 9.5)

(B) + D, если Вф0\ £>, если В = 0,

Более подробно обращение к ОП при относительной адреса­ции можно представить в следующем виде: если РгК[В\= 0 тоРгАОП:=РгК [D\ иначеРгАОП =P2B + RgK[D\\

Счит: РгИОП: = ОП [РгАОП];

Суммирование при образовании Аисвязано с потерей време­ни. Поэтому применяют также формирование исполнительного адреса методом совмещения (рис. 9.5, в). В этом случае базовый адрес содержит старшие, а смещение — младшие разряды ис­полнительного адреса, которые объединяются вРгАОПсоглас­но операций конкатенации слова:

РгАОП: = РгВ\ РгЦй];

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

Относительная адресация обеспечивает так называемую пе- ремещаемоАь программ, т. е. возможность передвижения про­грамм в памяти без изменений внутри самой программы.

Укороченная адресация.Для уменьшения длины кода ко­манды часто применяется так называемая укороченная адреса­ция. Суть ее сводится к тому, что в команде задаются только младшие разряды адресов, старшие разряды при этом подразу­меваются нулевыми. Такая адресация позволяет использовать только небольшую группу фиксированных ячеек с начальными (короткими) адресами и поэтому может применяться лишь со­вместно с другими способами адресации.

Регистровая адресацияесть частный случай укороченной, когда в качестве фиксированных ячеек с короткими адресами используются регистры (ячейки сверхоперативной или местной памяти) процессора. Например, если таких регистров 16, то для адреса достаточно четырех двоичных разрядов. Регистровая адресация наряду с сокращением длины адресов операндов позволяет увеличить скорость выполнения операций, так как уменьшается число обращений к ОП.

Косвенная адресация.Адресный код команды указывает" адрес ячейки памяти, в которой находится адрес операнда или команды. Таким образом, косвенная адресация может быть иначе определена как «адресация адреса».

На косвенную адресацию указывает код операции команды, а в некоторых ЭВМ в команде отводится специальный разряд (указатель адресации — УА), и цифра 0или1в нем указывает, является адресная часть команды прямым адресом или косвен­ным. Обращение к ОП за операндом при косвенной адресации представляет собой следующую процедуру:

РгАОП —РгК [А]\

Счит:РгИОП = ОП [РгА ОП];

если УА = 0 то идти к М иначе РгАОП =РгИОП; Счит.РгИОП = ОП [РгАОП];

М.РгАЛУ = РгИ ОП;

В некоторых ЭВМ используется многоступенчатая косвенная адресация. В этом случае ячейки памяти содержат также раз­ряд—указатель косвенной адресации (УА). Если этот разряд указывает на продолжение косвенной адресации, то машина последовательно выбирает из памяти адреса до тех пор, пока не будет найдена ячейка, в которой разряд-указатель определит прямую адресацию. Адрес из этой последней ячейки и является искомым исполнительным адресом.

Косвенная адресация широко используется в малых и микроЭВМ, имеющих короткое машинное слово, для преодоления ограничений короткого формата команды.

Рассмотрим широко применяемое в микропроцессорах, ма­лых и микроЭВМ совместное использование укороченной (ре­гистровой) и косвенной адресаций(рис. 9.6). Пусть необходимо передать число 4527 изРг5в ячейку ОП1765.Длина адресных

Номер регистра КОп НА \ НА \

Передать

0

6

1

J

РгК*-j—• •—г

I

ч

.PZ5 *527 |

Число

*527

Адрес 1765

Ре J

Ре МОП

и-

1765

РгАОП

ОП

Рис. 9.6. Совместное ис­пользование регистровой прямой и регистровой кос­венной адресаций для преодоления ограничений короткого слова команды

полей команды достаточна лишь для указания коротких номеров регистров, она не позволяет задать в команде полный адрес ячейки памяти. Поэтому операнд 4527указывается регистровой прямой адресацией (УА = 0), а для задания адреса1765при­ходится воспользоваться регистровой косвенной адресацией (УА=1), при которой в команде указывается номер регистра (в рассматриваемом примереРгЗ), предварительно загружен­ного полным адресом ячейки, в которую производится пере­дача.

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

При автоинкрементной адресациипо содержимому регистра сначала содержимое регистра используется как адрес операнда, а затем получает приращение, равное числу байт в элементе массива. Приавтодекрементной адресациисначала содержимое указанного в команде регистра уменьшается на число, равное числу байт в элементе массива, а затем используется как адрес операнда.

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

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

Обычно в ЭВМ одновременно используется несколько типов адресации. Тип адресации указывается либо неявно кодом опе­рации, либо в явной форме в специальном поле адресной части команды.

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

Стек представляет собой группу последовательно пронуме­рованных регистров (аппаратурный стек)или ячеек памяти, снабженных указателем стека (обычно регистром) (УС), в ко­тором автоматически при записи и считывании устанавливается номер (адрес) последней занятой ячейки стека(вершины сте­ка).При операции записи заносимое в стек слово помещается в следующую по порядку свободную ячейку стека, а при считы­вании из стека извлекается последнее поступившее в него слово. Таким образом, в стеке реализуется правило «гпоследний при­шелпервый ушел».

Указанное правило при обращении к стеку реализуется авто­матически, и поэтому при операциях со стеком возможно бе­задресное задание операнда,— команда не содержит адреса ячейки стека, но содержит адрес (или он подразумевается) ячейки памяти или регистра, откуда слово передается в стек или куда помещается из стека.

Механизм стековой адресации поясняется на рис. 9.7. При выполнении команды передачи в стек слова из регистра или ячейки ОП сначала указатель стека увеличивается на 1 (в пере­вернутом стекеуменьшается на1), а затем слово помещается в ячейку стека, указываемую УС. При команде загрузки из стека регистра или ячейки памяти сначала слово извлекается из вер­шины стека, а затем указатель стека уменьшается на1(впере­вернутом стекеувеличивается на 1) *. Как это ни кажется на первый взгляд удивительным, но при соответствующем располо­жении операндов в стеке можно вычислять выражения пол­ностью безадресными командами, указывающими только вид операции. Такая команда извлекает из стека в соответствии с кодом операции один или два операнда, выполняет над ними предписанную операцию и заносит результат в стек.

Вычисления с использованием стековой памяти удобно опи­сывать и программировать с помощью польской инверсной (бес­скобочной) записи арифметических выражений ПОЛИЗ. Эта запись производится по следующему правилу: читаем арифмети-

1 В случае использования памяти с побайтной адресацией при занесении слова в стек и извлечении слова из стека содержимое УС изме­няется на величину L, где L количество байт в слове.

I 97 H| 00-1

даСЮ-| I зв к

I

1 Вершина стена

I

95

1

1

96

I

г*

27*

* \

97

327

J

327

535

99

775

775

775

99

253

253

_ Дно

*■—стена

253

700

. 707

707

707

*)

б)

*)