Циклы обмена между процессором и памятью

Синхронный обмен без ожидания готовности данных. Этот тип обмена реализован между процессором и памятью. При этом быстродействие микросхем памяти должно соответствовать длительности циклов чтения-записи, реализуемых процессором. Инициатор обмена– всегда процессор (действия – чтение команд, передача данных в ходе выполнения команд).

На шине адреса/данных (AD) в начале цикла обмена (в фазе адреса) процессор (задатчик) выставляет код адреса. На этой шине используется отрицательная логика. Средний уровень сигналов на шине AD обозначает, что состояния сигналов на шине в данные временные интервалы не важны. Для стробирования адреса используется отрицательный синхросигнал -SYNC, выставляемый также процессором. Его передний (отрицательный) фронт соответствует действительности кода адреса на шине AD. Фаза адреса одинакова в обоих циклах записи и чтения.


РРёСЃ. 2.3. Цикл чтения РЅР° магистрали Q-bus. РРёСЃ. 2.4. Цикл записи РЅР° магистрали Q-bus.

Получив (распознав) свой код адреса, устройство ввода/вывода или память (исполнитель) готовится к проведению обмена. Через некоторое время после начала (отрицательного фронта) сигнала -SYNC процессор снимает адрес и начинает фазу данных.

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

Для сигнала -RPLY используется тип выходного каскада ОК, чтобы не было конфликтов между устройствами-исполнителями. Процессор, получив сигнал -RPLY, заканчивает цикл обмена. Для этого он снимает сигнал -DIN и сигнал -SYNC. Устройство-исполнитель в ответ на снятие сигнала -DIN должно снять код данных с шины AD и закончить сигнал подтверждения -RPLY. После этого процессор снимает сигнал -SYNC.

В фазе данных цикла записи (рис. 2.4) процессор выставляет на шину AD код записываемых данных и сопровождает его отрицательным сигналом строба записи данных -DOUT. Устройство-исполнитель должно по этому сигналу принять данные от процессора и сформировать сигнал подтверждения обмена -RPLY. Процессор, получив сигнал -RPLY, заканчивает цикл обмена. Для этого он снимает код данных с шины AD и сигнал -DOUT. Устройство-исполнитель в ответ на снятие сигнала -DOUT должно закончить сигнал подтверждения -RPLY. После этого процессор снимает сигнал -SYNC.

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


 

26. Абсолютная, прямая и косвенная адресация.

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

 

^ Прямая или абсолютная адресация. Физический адрес операнда содержится в адресной части команды. Формальное обозначение:

 

Операндi = (Аi),

 

где Аi – код, содержащийся в i-м адресном поле команды.

 

 

 

РРёСЃ. 9.1 Прямая адресация

 

Пример: mov al,[2000] – передать операнд, который содержится по адресу 2000h в регистр AL.

 

Add R1,[1000] – сложить содержимое регистра R1 с содержимым ячейки памяти по адресу 1000h и результат переслать в R1.

 

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

 

Непосредственная адресация. В команде содержится не адрес операнда, а непосредственно сам операнд.

 

Операндi= Аi.

 

 

 

РРёСЃ. 9.2 Непосредственная адресация

 

Непосредственная адресация позволяет повысить скорость выполнения операции, так как РІ этом случае РІСЃСЏ команда, включая операнд, считывается РёР· памяти одновременно Рё РЅР° время выполнения команды хранится РІ процессоре РІ специальном регистре команд (РРљ). Однако РїСЂРё использовании непосредственной адресации появляется зависимость РєРѕРґРѕРІ команд РѕС‚ данных, что требует изменения программы РїСЂРё каждом изменении непосредственного операнда.

 

Пример: mov eax,0f0f0f0f0 – загрузить константу 0f0f0f0f0h в регистр eax.

 

^ Косвенная (базовая) адресация. Адресная часть команды указывает адрес ячейки памяти (рис. 7.3,а) или номер регистра (рис. 7.3,б), в которых содержится адрес операнда:

 

Операндi = ((Аi)).

 

 

 

РРёСЃ. 9.3В Косвенная адресация

 

ВПрименение косвенной адресации операнда РёР· оперативной памяти РїСЂРё хранении его адреса РІ регистровой памяти существенно сокращает длину поля адреса, одновременно сохраняя возможность использовать для указания физического адреса полную разрядность регистра. Недостаток этого СЃРїРѕСЃРѕР±Р° – необходимо дополнительное время для чтения адреса операнда. Вместе СЃ тем РѕРЅ существенно повышает гибкость программирования. Изменяя содержимое ячейки памяти или регистра, через которые осуществляется адресация, можно, РЅРµ меняя команды РІ программе, обрабатывать операнды, хранящиеся РїРѕ разным адресам. Косвенная адресация РЅРµ применяется РїРѕ отношению Рє операндам, находящимся РІ регистровой памяти.

 

ВПример: mov al,[ecx] – передать РІ регистр AL операнд (содержимое) ячейки памяти, адрес которой находится РІ регистре ECX.

 

ВПредоставляемые косвенной адресацией возможности РјРѕРіСѓС‚ быть расширены, если РІ системе команд Р­Р’Рњ предусмотреть определенные арифметические Рё логические операции над ячейкой памяти или регистром, через которые выполняется адресация, например увеличение или уменьшение РёС… значения РЅР° единицу (Рё РЅРµ только РЅР° 1).

 

ВР’ этом случае речь идет Рѕ базовой адресации СЃРѕ смещением.

 

ВПример: mov eax,[eci+4] – передать РІ EAX операнд, который содержится РїРѕ адресу ECI СЃРѕ смещением плюс 4.

 

ВИногда, адресация, РїСЂРё которой после каждого обращения РїРѕ заданному адресу СЃ использованием механизма косвенной адресация, значение адресной ячейки автоматически увеличивается РЅР° длину считываемого операнда, называется автоинкрементной. Адресация СЃ автоматическим уменьшением значения адресной ячейки называется автодекрементной.

 

^ Регистровая адресация. Предполагается, что операнд находится РІРѕ внутреннем регистре процессора.

 

ВНапример: mov eax,cr0 – передать РІ EAX содержимое CR0 или

 

mov ecx,ecx – сбросить регистр ECX.

 

^ Индексная адресация (СЃРѕ смещением) – содержимое РРћРќ используется РІ качестве компоненты эффективного адреса (как правило, работа СЃ массивами).

 

ВПример: sub array [esi],2 – вычесть 2 РёР· элемента массива, РЅР° который указывает регистр ESI.

 

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

 

Операндi = (базаi + смещениеi).

 

ВДля задания базового адреса Рё смещения РјРѕРіСѓС‚ применяться ранее рассмотренные СЃРїРѕСЃРѕР±С‹ адресации. Как правило, базовый адрес находится РІ РѕРґРЅРѕРј РёР· регистров регистровой памяти, Р° смещение может быть задано РІ самой команде или регистре.

 

Рассмотрим РґРІР° примера.

 

ВАдресное поле команды состоит РёР· РґРІСѓС… частей, РІ РѕРґРЅРѕР№ указывается номер регистра, хранящего базовое значение адреса (начальный адрес сегмента), Р° РІ РґСЂСѓРіРѕРј адресном поле задается смещение, определяющее положение ячейки относительно начала сегмента. Именно такой СЃРїРѕСЃРѕР± представления адреса обычно Рё называют относительной адресацией.

 

 

ВРРёСЃ. 9.4В Относительная адресация

 

ВПервая часть адресного поля команды также определяет номер базового регистра, Р° вторая содержит номер регистра, РІ котором находится смещение. Такой СЃРїРѕСЃРѕР± адресации чаще всего называют базово-индексным.

 

РРёСЃ. 9.5 Базово-индексная адресация

 

ВГлавный недостаток относительной адресации – большое время вычисления физического адреса операнда. РќРѕ существенное преимущество этого СЃРїРѕСЃРѕР±Р° адресации заключается РІ возможности создания "перемещаемых" программ – программ, которые можно размещать РІ различных частях памяти без изменения команд программы. РўРѕ же относится Рє программам, обрабатывающим РїРѕ единому алгоритму информацию, расположенную РІ различных областях Р—РЈ. Р’ этих случаях достаточно изменить содержимое базового адреса начала команд программы или массива данных, Р° РЅРµ модифицировать сами команды. РџРѕ этой причине относительная адресация облегчает распределение памяти РїСЂРё составлении сложных программ Рё широко используется РїСЂРё автоматическом распределении памяти РІ мультипрограммных вычислительных системах.