ЛЕКЦИЯ 8-9. АДРЕСАЦИЯ ПАМЯТИ
Под адресацией подразумевается способ с помощью которого адресуется информация, содержащаяся в памяти. Наименьшая единица информации, к которой можно адресоваться, называется адресной единицей. Каждой адресуемой в памяти единице присваивается единственный признак - адрес. Каждая адресная единица имеет свой адрес. Адрес устанавливается для каждого места хранения информации и не зависит от содержания записей. Другими словами запоминающее устройство - это совокупность регистров определенной длины. Каждому регистру присвоен адрес. Для вызова из памяти содержимого такого регистра или записи в регистр какой-либо информации необходимо указать его адрес. Длина каждого регистра есть в этом случае наименьшая адресуемая единица информации.
Обычно в качестве адреса выбирается двоичное число, общее число двоичных чисел - адресов должно быть равно числу адресуемых единиц. Таким образом при обращении к ЗУ обязательно указывается полный адрес - исполнительный адрес. Каждая команда машины должна в обязательном порядке содержать или сам исполнительный адрес или указания как этот адрес получить. В связи с этим различают несколько способов адресат-щи. Основными среди них являются следующие способы : абсолютный, примой, косвенный, индексный, относительный, базовый, неявный и регистровый .
В случае абсолютной (непосредственной) адресации в адресном поле команды помещается сам операнд, а не его адрес. Операнд в этом случае является целой константой. Для представленной на рис. 7.3. простой ЭВМ абсолютная адресация может быть описана следующим образом:
А— R(АDDR) т.е. выборка команды производится как прежде, а адресное поле которое содержит в этом случае операнд пересылается в регистр А (или регистр В).
операнда из памяти и пересылка его на обработку, например в регистр А :
R-М(МАR); Чтение операнда из памяти, адрес; ячейки которой записан в МАR
А- R;Пересылка операнда на обработку в операционный регистр А. Косвенная адресация похожа в определенной мере на прямую адресацию, только в адресном поле указывается не адрес операнда, а адрес адреса операнда. Для извлечения операнда из памяти необходимо еще раз обратиться к памяти по адресному полю первой команды и прочитать из ее адресного поля адрес операнда и лишь затем прочитать его и записать в операционный регистр. Команды с косвенной адресацией имеют специальное поле, указывающее ее признак. Благодаря такой организации имеется возможность организовать многоуровневую косвенную адресацию.
На рис. 1.9. поясняется особенность одноуровневой косвенной адресации.
Рис. 1.9. Косвенная адресация.
Одно и многоуровневая косвенная адресация может быть описана. Прямая адресация была принята за основу в описываемой машине. Адресное поле содержит в этом случае исполнительный адрес операнда и еще в цикле выборки пересылается в адресный регистр памяти МАК.. В цикле исполнения производится чтениесана на языке микроопераций следующим образом :
после цикла выборки команды, в котором
МАR— R(АDDR),
F — R(ОР)
производится чтение ЗУ
R - M(МАR),
затем анализируется значение признака J косвенной адресации
|Х| if (J =1) then (МАR— R(АDDR)) else (go to Y ),
if (J=1) then (R— М(МАR)),
1У1 А—R.
Для реализации индексной, базовой и регистровой адресации в процессоре машины необходимо произвести ряд изменений. Требуется ввести в его схему ряд дополнительных регистров, которые могут быть выполнены в виде одного или нескольких блоков.
Для обращения к ним необходимы дополнительные средства-мультиплексоры, де мультиплексоры, дешифраторы. Эти регистры могут образовывать конструкции аналогичные представленным на рис.1.1., 1.2.
При индексной адресации используется индексный регистр, в котором хранится величина приращения (или уменьшения) адреса. Исполнительный адрес, в этом случае, представляет собой сумму содержимого индексного регистра и адресного поля команды Обычно в процессоре имеется несколько индексных регистров, которые образуют массив. Тогда в команде следует иметь специальное поле (xr), в котором указывается номер индексного регистра. Ниже описывается индексная адресация на основе использования массива индексных регистров:
Массив индексных
регистров: ХR (1-3, 0-15) ; Массив состоит из трех ;шестнадцатиразрядных ;регистров Йлборка команды производится аналогично предыдущему.
Выборка операнда -
МАR— R(АDDR) + ХR(xr),
R-М(МАR),
А--R.
Индексная адресация необходима в тех случаях, когда требуется обработать массив данных, размещенных в смежных ячейках памяти. Для выполнения самой обработки потребуется одна или несколько команд, которые будут повторяться столько раз, сколько содержится элементов в массиве данных. При этом после обработки каждого элемента, содержимое индексного регистра увеличивается или уменьшается на I, подготавливая таким образом, адрес следующего операнда.
В случае относительной адресации адрес операнда определяется относительно счетчика команд, который представляет собой адрес тукущей исполняемой команды. После выборки команды обращение к операнду производится следующим образом:
МАR -— R(АDDR) + РС,
R-- М(МАR ),
А-R.
Обычно операнды размещаются в памяти и для ускорения обработки иногда можно промежуточные результаты не засылать в память, а хранить их в специальном массиве регистров, который может быть организован в процессоре, наряду с индексными регистрами. Регистровая адресация указывает на операнд, хранимый в таком регистре. Использование этого способа адресации позволяет сократить длину команд, оставляя больше места для операндов. В адресном поле, которое теперь становиться короче указывается адрес регистра г в массив GR регистров. Выполнение команды производится согласно следующего описания:
массив регистров GR (1-7, 0-23); Регистры общего назначения
А-- G R (r); поле г указывает один из регистров общего назначения
В большинстве ЭВМ редко используется один способ адресации, чаще несколько. Это объясняется тем, что каждый способ адресации имеет свои достоинства, которые проявляются при определенных обстоятельствах. Кроме того, в ЭВМ реализуются смешанные способы адресации, например косвенно-регистровая адресация. Наиболее часто этот способ адресации используется в микро-ЭВМ. В адресном поле в этом случае вместо адреса операнда указывается только адрес регистра. Так как регистров в процессоре значительно меньше, чем ячеек памяти в ЗУ, то число разрядов, отводимых под адрес регистра меньше числа разрядов адреса ячейки памяти. Благодаря этому команда с косвенно-регистровой адресацией короче. Выбор команды при этом способе адресации производится также как обычно. В цикле исполнения полем (r) задается регистр в массиве, из которого извлекается исполнительный адрес для чтения операнда:
МАR- GR(r),
R- М(МАR),
А— R
В некоторых микропроцессорах адрес операнда может храниться только в одном определенном регистре, тогда отпадает необходимость указывать в команде адрес этого регистра и команда становится еще короче. Такая адресация носит название неявной.
стековая память
Стек представляет собой одномерный упорядоченный список элементов данных, для которого операция внесения и удаления элементов осуществляется с одного конца. Отек называют списком с проталкиванием или списком, обслуживаемым по принципу "последним пришел - первым обслужен".
Существуют и другие типы одномерных списков, такие например, как очередь, деревья и многосвязные структуры. Действия над такими структурами данных можно осуществлять аппаратно.
В современных ЭВМ стековая память реализуется аппаратно, с помощью специального стекового регистра РS и ряда дополнительных комбинационных схем.
Отек, выполненный аппаратно - это обычно некоторая область памяти или отдельное ЗУ. В микропроцессорных системах имеется возможность реализовать стековую память любым из указанных путей. Если стек небольшой, то для его организации выделяется в основном оперативном ЗУ отдельная область.
Организация стека показана на рис.1.10., где изображены первый - верхний элемент стека, второй его элемент и т.д. и, наконец, последний элемент. В указателе стека РS всегда хранится адрес верхнего элемента. При записи в стек нового элемента, все ранее записанные элементы проталкиваются вниз, а на освободившиеся верхнее место записывается новый элемент, при чтении из стека происходит наоборот.
Рис. 1.10. Организация стека.
ЭВМ с микропрограммным управлением
Рассмотренная ранее ЭВМ отличалась тем, что формирование управляющих сигналов Si производилось с помощью комбинационной схемы (см.рис. 1.8.), Однако это не единстенный способ формирования сигналов. Достоинством этого способа /тычется высокая скорость работы, максимальная скорость выдачи сигналов управления Si зависит только от задержек в логических элементах, на которых строится комбинационная схема.
Однако этот способ формирования управляющих сигналов не единственный. Другим таким способом является микропрограммный способ управления. На рис.1.II. приведена структура машины с микропрограммным управлением. За основу взята прежняя ЭВМ (рис.1.3), изменена только схема формирования управляющих сигналов. 3 схеме на рис. 1,11. это делается с помощью управляющей памяти (СМ). При таком способе формирования управляющих сигналов каждая отдельная команда машины представляется в виде одной микропрограммы. Микрооперации микропрограммы есть отдельные элементарные действия в машине. Для реализации микропрограммы необходимо последовательное поступление микрокоманд из управляющей памяти. Для этого служит регистр Р, который теперь с помощью схем управления (LC) формирует адреса микрокоманд на основе начального адреса микропрограммы.
Рис.1.11 Функциональная схема ЭВМ с микропрограммным управлением.
Считанные из памяти СМ микрокоманды запоминаются в управляющем регистре Н. Субрегистр Н(ADDR) используется для формирования адреса следующей микрокоманды, а оставшиеся разряды для формирования сигналов управления Si. Распределение разрядов регистра Н указано в таблице 1.3 . Схемы включенные на выходе регистра Н разрешают прохождение сигналов управления к узлам и элементам машины в моменты действия соответствующих синхросигналов генератора.
Каждой микрооперации в управляющей памяти может быть поставлена в соответствие одна микрокоманда. Обычно по соображениям экономии одна микрокоманда выполняет несколько микроопераций. В одном такте, при этом, должны выполняться только совместимые микрооперации. Например, в цикле выборки команды первоначально следует переслать содержимое счетчика команд РС в адресный регистр памяти МАR (МАR--РС), затем считывать команду из памяти (R-- М(МАR), но не наоборот. Для развязки по времени подобных микроопераций необходим многофазный синхрогенератор. Тогда в первом такте выполняется пересылка МАR -- РС, а в следующем производится чтение команды из памяти R— M(МАR).
В рассматриваемом примере при наличии трехфазного генератора каждой команде машины может соответствовать только одна микрокоманда в памяти СМ. Однако не все команды выполняются в три такта, одним требуется один такт, другим три, в результате такой нивелировки по времени выполнения снижается скорость выполнения команд за счет "пустых" синхроциклов. В этой связи идут на сокращение числа фаз, но за счет этого увеличивается число микрокоманд в микропрограммах операций. В результате требуется дополнительное время на выборку микрокоманд из памяти, что может свести на нет выигрыш за счет сокращения числа "пустых" синхроциклов. В подобных случаях ведут поиски компромиссных решений.
Очевидно, выполнение команд машиной с микропрограммам управлением не зависит от того каким образом формируются управляющие сигналы Si "схемным" как на рис.1.8 или с помощью блока микропрограммного управления. Однако каждый из этих способов обладает своими достоинствами и недостатками. Прежде всего "схемный" способ имеет максимальную скорость формирования управляющих сигналов, определяемую только
Таблица 1.3.
Разряды Микрокаманды |
Такт |
Микрооперация |
Н(0-5) |
Адрес следующей микрокоманды |
|
Н(6) |
1 |
MAR-PC,if (G=0) then F-0 |
Н(7) |
2 |
R-M(MAR), PC-PC+1 |
Н(8)
|
3 |
F-R(OP), MAR-R(ADDR) |
Н(9) |
1 |
R-M(MAR) |
Н(10) |
1 |
B-R |
H(11) |
2 |
C-A+B |
Н(12) |
3 |
A-C |
Н(1 3) |
3 |
F-0 |
Н (14) |
2 |
C-A-B |
H(15) |
2 |
IF( Тг.пер = 1) Then PC-R(ADDR) |
Н(1 6) |
2 |
PC-R(ADDR) |
Н(17) |
2 |
Тг.пер- C(0),C(i)-C(i_+1),C(23)-C(0) |
Н(18) |
1 |
R-C, M(MAR)-R |
Н(19) |
2 |
A-R |
Н (20) |
2 |
Тг.пер- C(0),C(i)-C(i_+1),C(23)-C(0) |
H(21) |
1 |
G-0 |
Задержками распределения сигналов в
интегральных микросхемах
из которых она состоит. Однако "схемный
способ" следует считать
"жестким" способом, так как всякое изменение
системы команд
требует серьезного перемонтажа всей схемы.
Микропрограммный
способ не обладает высоким быстродействием, но
возможности
для измерения команд значительно шире и связаны,
в основном,
с измерением содержимого управляющей памяти.
Современная технология производства
полупроводниковых постоянных запоминающих
устройств позволяет создать дешевые ЗУ с
быстродействием, приближающимся к
быстродействию логических элементов. Конечно,
использование микропрограммного управления
может быть экономически оправдано, в тех случаях,
когда машина с "жесткой" схемой
формирования управляющих сигналов не позволяет
получить
требуемого быстродействия. В настоящее время
промышленностью вы
выпускаются ЭВМ как с тем так и с другим способом
формирования
сигналов управления. Так в ЕС ЭВМ старшие модели
с высокой
производительностью имеют "схемное"
формирование сигналов, а
младшие микропрограммное. Среди
микропроцессорных наборов
представлены и те и другие. Однако, наиболее
распространены
однокристальные МП с "жесткой" схемой
формирования сигналов.
МП с микропрограммным управлением обычно имеют
секционную
структуру-наращиваемую путем добавления секций.
Благодаря
этому имеется возможность создавать МП с заранее
заданными
характеристиками: разрядностью адресной и шины
данных, число
и содержание выполняемых команд и т.д. Типичными
примерами
однокристальных МП являются: 8-битовый КР580ИК80,
16-битовый
KPI8IOBM86.
"Типичными примерами секционных МП с
микропрограммным управлением могут служить МП
серий К589, К584, KPI800,
KPI80I .