Команды обмена или пересылок — КиберПедия 

История создания датчика движения: Первый прибор для обнаружения движения был изобретен немецким физиком Генрихом Герцем...

Археология об основании Рима: Новые раскопки проясняют и такой острый дискуссионный вопрос, как дата самого возникновения Рима...

Команды обмена или пересылок

2017-10-16 549
Команды обмена или пересылок 0.00 из 5.00 0 оценок
Заказать работу

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

 

Рассмотрим список основных типов команд.

 

КОП А1 R2 R3 Применение
Загр1 А1     АК:=ОЗУ[А1]
Зап1 А1     ОЗУ[А1]:=АК
Загр2 А1 R2   РОН[R2]:=ОЗУ[A1]
Зап2 А1 R2   ОЗУ[A1]:=РОН[R2]
Загр3 А1 R2 R3 Загр. массива из ОЗУ в РОН
Зап3 A1 R2 R3 Запись массива из РОН в ОЗУ

 

Направление передачи слов условно обозначим следующим образом: код операции Загр. означает передачу слова из ОЗУ в РОН или в выделенный регистр процессора; а код операции Зап. - обратную передачу в ОЗУ из РОН или выделенного регистра процессора.

Индексами 1, 2 и 3 обозначим типы команд: индекс 1 соответствует командам обмена с выделенными регистрами процессора; индекс 2 - командам обмена между ОЗУ и РОН по одному слову; а индекс 3 - обмену массивами данных

 

 
 

Рис. 33

 

На рис.33 даны ФСА команд Загр.1 и Зап.1. В качестве выделенного регистра используется регистр аккумулятор АК. В системе команд процессора может быть несколько подобных команд по количеству выделенных неадресуемых регистров процессора.

При рассмотрении работы команд Загр.2 и Зап.2 будем также полагать, что форматы ячеек ОЗУ и РОН одинаковые (рис.34); их разрядность равна разрядности шины данных.

 
 

 
 

При этих условиях по команде Загр.2 слово из ОЗУ[ α ] будет загружено в РОН[k]. Соответственно при выполнении команды Зап.2 процессор осуществит обратную передачу из РОН в ОЗУ в соответствии с теми адресами, которые указаны в команде. Для этих команд обмена на рис.35, 36 даны ФСА их выполнения. По команде Загр.2 сначала процессор обращается в ОЗУ и выбирает из него слово. Затем передает его по ШД на буферный регистр РОН и записывает по соответствующему адресу. По команде Зап.2 процедуры передачи осуществляются в обратном порядке, а именно: процессор выставляет адрес на входе РОН, читает слово, передает его по ЩД на вход ОЗУ, передает по ША адрес на РАозу и записывает слово в ОЗУ.

 

Схема центральной части, соответствующая командам Зап.1, Загр.1, Зап.2, Загр.2 представлена на рис. 37.

 
 

 

 


и

 

 

Рис. 37

 

Команды Загр.3 и зап.3

Эти команды предназначены для пересылок между ОЗУ и РОН массивов данных.

Для организации обмена данными между двумя памятями необходимо задать для каждой памяти адреса начала расположения массива и его длину. Величину массива можно задать адресами последнего элемента массива как в ОЗУ, так и в РОН, или количеством слов n. Ниже приведены три варианта форматов команд группового обмена:

Загр3 А1 R2 A3
Загр3 А1 R2 R3
Загр3 А1 R2 n

 

а)

 

б)

 

в)

 

где А1- адрес первого элемента массива в ОЗУ; R2 – адрес первого элемента массива в РОН; А3 – адрес последнего элемента массива в ОЗУ; R3- адрес последнего элемента массива в РОН; n – длина массива.

Наиболее приемлемыми из всех трех форматов команд являются те форматы, которые имеют наименьшую разрядность адресных полей.

Таковыми являются команды форматов «б» и «в». Ниже даны ФСА для команды варианта «б».

Функциональные схемы алгоритмов выполнения команд Загр.3 и Зап.3 представлены на рис. 38, 39 соответственно.


 

Рис. 38

Рис. 39

 

Пересылка элементов массива является циклической процедурой, повторяемой для каждого элемента, и состоит из последовательности процедур: чтение слова из одной памяти, пересылки на вход другой памяти, записи и инкремента адресов, по которым осуществляются обращения к запоминающим устройствам. Для изменения адресов в ФСА (рис.37 и 38) необходимо предусмотреть два счетчика - СЧозу и СЧрон, на которые заносятся адреса первого элемента массива в ОЗУ и в РОН соответственно. Цикл исполнения команд будет завершен, когда текущий адрес слова в РОН совпадет со значением поля R3. Схема центральной части ЭВМ, иллюстрирующая работу процессора при выполнении этих команд, представлена на (рис.40).

 
 

Рис. 40

Команды управления

 

Команды управления предназначены для организации ветвления в программах. Можно выделить 3 типа команд: безусловного перехода (БП), условного перехода (УП) и команды обращения к подпрограммам (БПВ).

Команды безусловного перехода

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

Формат команды имеет следующий вид:

БП А1

где А1 – адрес перехода к следующей команде программы.

Правило выполнения: после выборки команды и дешифрации кода операции на программный счетчик заносится адрес перехода А1; на этом цикл выполнения команды заканчивается.

Функциональная схема алгоритма реализации безусловного перехода представлена на рис. 41.

 

 
 

Рис. 41 Рис. 42

Команды условного перехода имеют такой же формат как и команды БП, но выполняются в зависимости от условий, вырабатываемых в процессоре, т.е. значений флагов. Например, результат операции, полученный в АЛУ по предыдущей команде равен нулю (или больше нуля и т.д.) Вне зависимости от того, какой флаг обрабатывается, команды данного типа выполняются по следующему правилу: если значение флага Ф=1, то переход осуществляется по адресу А1; в противном случае – по продвинутому адресу (рис.42).

Команды обращения к подпрограммам

При разработке программ, если появляется необходимость вычисления каких-либо стандартных функций (sinx, tgx и др.), в тело программы встраивается команда БПВ, обеспечивающая переход к подпрограмме вычисления данной функции. Такие подпрограммы составляют библиотеку подпрограмм, которая размещается в фиксированной области памяти.

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

Адрес возврата может запоминаться в РОН или в СТЕКе. Поскольку РОН представляет собой адресуемую память, а СТЕК является безадресным запоминающим устройством, формат команды БПВ будет определяться типом памяти для сохранения адреса возврата.

Таким образом, имеем два формата команд БПВ:

А2
БПВ1
R1

 

где R1 - адрес ячейки РОН для сохранения адреса возврата, А2 - адрес перехода к подпрограмме.

БПВ2 А1

 

где А1- адрес перехода к подпрограмме.

Адрес возврата запоминается в стеке. Поскольку стек является безадресной памятью, он адресуется неявно, и в команде БПВ2 указан только один адрес перехода. Рассмотрим по порядку рабо-ту этих команд.

Команда БПВ1.

Прежде, чем переходить к функциональной схеме алгоритма, рассмотрим процедуры перехода к подпрограмме (или вложенной программе). В реальных программах может иметь место не одно вложение, а несколько, т.е. цепочка вложений.

Схема перехода к вложенным программам.


Рис. 43

 

Пусть процессор обрабатывает основную программу и три вложенные по следующей схеме (рис.43). Адреса начала размещения подпрограмм (п/п) указаны в адресном поле А2 каждой команды БПВ1. Основная программа, п/п 1 и п/п 2 имеют вложения, а п/п 3 вложений не имеет. Адреса возврата основной программы и п/п 1, и п/п 2 запоминаются в регистрах РОН по адресам 1; 4; и 2 соответственно. Цифры в кружочках означают номер процедуры при выполнении переходов. На рис.43 показано содержание РОН после перехода к последней вложенной программе.

В каждой п/п последней командой должна быть команда, обеспечивающая возврат к предыдущей программе. Целью этой команды является восстановление программного счетчика адресом команды, следующей за командой БПВ, прерванной программы. Отсюда следует, что команда возврата должна содержать адрес РОН, из которого необходимо прочитать адрес возврата и передать его на программный счетчик.

Команда возврата БП1.


Рис. 44

Формат команды возврата:

 
 

 


По своей сути эта команда выполняет безусловный переход, т.к. всегда заносит на СЧАК адрес перехода. Поэтому будем обозначать ее как БП1.

Схема возврата из подпрограмм показана на рис.44. Последовательность действий при возврате обозначена цифрами в кружочках.

На рис. 45 и 46 показаны функциональные схемы алгоритмов выполнения команд БПВ1 и БП1 соответственно.

 
 

 
 

Рис. 46

 

Команда БПВ2.

 
 

Прежде, чем перейти к рассмотрению работы команды БПВ2, необходимо уяснить механизм работы стека.

 

Рис. 47 Рис. 48

 

Стек – такой вид памяти, который работает в соответствии с алгоритмом LIFO – Last Input First Output (последний вошел, первый вышел). Стек может быть реализован, как область ОЗУ или построен на регистровых структурах. Для указания адреса ячейки используется счетчик, называемый указателем стека (УС). Если стек пуст, то УС указывает на вершину стека. При записи слова в стек (проталкивание данных в стек-push) оно помещается по адресу указателя стека, после чего адрес на УС увеличивается на 1 (или уменьшается на 1, в зависимости от вида стека) (рис. 47 и 48). В режиме чтения из стека сначала необходимо изменить значение УС таким образом, чтобы он указывал последнюю занятую ячейку, после чего производится чтение слова (выталкивание из стека-pop).

Различают два вида стека:

- прямой стек,

- перевернутый стек.

В прямом стеке вершина стека соответствует младшим адресам, а дно стека – старшим адресам. В перевернутом стеке вершина и дно стека меняются местами. Чаще всего в ЭВМ применяется перевернутый стек, который размещается в области старших адресов адресного пространства ОЗУ. Вершина и дно стека определяют границы памяти.

Алгоритмы работы СТЕКА (для прямого стека) в режимах записи и чтения представлены на рис.49 и 50 соответственно.

 

 
 

Рис. 49 Рис. 50

При записи слово D принимается на входной буферный регистр СТЕКА (РСст), адрес для записи слова уже сформирован на УС. После записи слова адрес на УС увеличивается на 1.

При чтении информации выполняется процедура: УС:=УС-1, при этом производится адресация последней занятой ячейки. Затем следует обращение к СТЕКУ.

Для перевернутого СТЕКА алгоритмы режимов записи и чтения представлены соответственно на рис.51 и 52.

 
 

 

Рис. 51 Рис. 52

 

Для определения возможности записи в стек или чтения из стека необходимо знать границы стека и текущий адрес на УС.

Предположим, что для прямого стека адрес вершины стека – α, адрес дна стека – β.

Режим записи невозможен, если указатель стека равен β – стек полон;

Режим чтения невозможен, если указатель стека больше α – стек пуст.

В соответствии с этими условиями формируются два соответствующих флага, которые выполняют роль осведомительных сигналов для процессора.

Команды БПВ2 и БП2.

Форматы команд БПВ2 и БП2

       
 
   
БП 2

 


В команде БПВ2 только один адрес А1, который определяет переход к п/п. Адрес возврата записывается в стек по адресу УС.

Команда возврата имеет аббревиатуру БП, как и в предыдущем случае. Причем эта команда безадресная, т.к. в ее функции входит чтение слова из стека.


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

Рис. 53

 

После перехода ко 2-й подпрограмме УС стека будет указывать на последнюю незанятую ячейку. В последней занятой ячейке стека записан адрес возврата п/п 1 γ+1, в следующей - адрес возврата основной программы α+1. С опроса этих ячеек стека (рис. 54) команда БП2 будет производить возврат к предыдущей программе:


 
 

Рис.54

В данном примере адреса возврата заносятся в перевернутый стек. Функциональные схемы алгоритмов выполнения команд БПВ2 и БП2 показаны на рис.55 и рис.56.

 
 

восстановление программного счетчика

 

Рис. 56

 

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

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

Основным недостатком прямого способа адресации является большая разрядность адресных полей команды, поскольку адрес должен обеспечивать обращение к самой старшей ячейке ОЗУ. Это означает, что при емкости памяти в 512 Мb, разрядность адреса должна быть равна 28 разрядам. При трехадресной команде, даже без КОП, общая длина команды будет 84 разряда. Это повлечет увеличение разрядности шин адреса, а так же разрядности шин данных (или увеличения количества обращений за командой, если ШД имеет ширину меньшую, чем разрядность команды).

Регистровая адресация так же относится к прямому способу адресации.

Форматы команд:

Одноадресная команда:

 

КОП R1

 

 

Двухадресная команда:

 

КОП R1 R2

 

Трехадресная команда:

 

КОП R1 R2 R3

 

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

Косвенные способы адресации

Целью косвенных способов адресации является сокращение разрядности адресов в полях команды. Достигается это следующим приемом: в поле адреса записывается не сам адрес операнда, а указатель адреса, по которому из памяти читается адрес операнда. При этом в команде разрядность этого указателя ограничена либо начальной областью ОЗУ (с применением укороченного способа адресации), либо емкостью регистрового ЗУ.

Формат команды:

 

 
 

 



В поле адреса вводится дополнительный разряд ПА-признак адресации, который определяет значение поля (А/R). Если ПА=1, то А указывает адрес ОЗУ, в ячейке которого записан адрес операнда. Соответственно R адресует РОН, из которого читается адрес операнда. При значении ПА=0 поле А/R интерпретируется процессором, как прямой адрес. Существует такое понятие как глубина косвенной адресации (ГКА), которая определяется количеством обращений памяти за операндом. В том случае, если при первом обращении выбирается адрес операнда, то в этом случае глубина косвенной адресации равняется 1, если выби-рается снова адрес операнда, то ГКА равняется 2 и т.д.

Пример сокращения разрядности адреса при косвенной адресации приведен на рис. 57.

В начальной области, адресуемой полем А, могут быть размещены либо ограниченное количество данных, либо адреса операндов. Предположим, что емкость ОЗУ 1М слов. При прямом способе адресации разрядность поля А должна составлять 20 разрядов, что обеспечит доступ к старшей ячейке памяти. Косвенный способ адресации позволяет сократить разрядность адреса в поле команды. Пусть под адреса отводятся 256 начальных ячеек ОЗУ. Тогда поле А будет иметь 8 разрядов, а каждая ячейка ОЗУ должна быть 20-ти разрядной для размещения адреса операнда.

ФСА выборки операнда рассмотрена на рис. 58. Данный способ косвенной адресации имеет следующий недостаток: для выборки операнда требуются большие затраты времени, связанные с двойным обращением к ОЗУ. Поэтому он применяется крайне редко.

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

КОП ПА R

           
 
ПА=
   
косвенная регистровая
   
 
 
прямая регистровая
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

 


 
 

При косвенной адресации поле R адресует ячейку РОН, из которой считывается адрес операнда в ОЗУ (рис. 59).

Рис. 59

 


ФСА выборки операнда будет иметь следующий вид (рис. 60).

 

 

Рис. 60

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

Относительные способы адресации (адресация со смещением)

Относительные способы адресации используются, с одной стороны, для организации размещения программ пользователя в любом месте адресного пространства ОЗУ, с другой стороны, для организации работы с массивами данных. При этом в общем случае адрес обращения к ОЗУ (Аисп.) вычисляется путем сложения прямого адреса А с модификаторами, которые выбираются из РОН по адресам, записанным в полях R1 и R2 адресного поля команды:

КОП R1 R2 А

В качестве модификаторов используются базовая константа и индекс, адреса которых могут обозначаться как B и X соответственно:

КОП X B А

Независимо от того, что функциональное назначение модификаторов различное, Аисп. вычисляется следующим образом (рис. 61):

АИСП:=РОН[X] + POH[B] + А.

 

 
 

 

 


Рис. 61

 

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

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

Предположим, что одновременно в ОЗУ размещены программы А, В и С. Программа А находится в начальной области ОЗУ и все адреса команд и данных являются истинными и не требуют модификации. Программы В и С размещены соответственно начиная с адресов k и m. Следовательно, все адреса данных программ должны быть изменены на величину базовых констант bB и bC соответственно (рис.62).

 

Рис. 62

 

Прямой адрес «А» будет указывать ячейку ОЗУ относительно базового адреса, задаваемого константой bC, т.е. будет смещением относительно начала размещения программы C.

Иногда прямой адрес обозначают D и называют смещением.

Формирование адреса обращения за операндом выполняется согласно следующему алгоритму (рис. 63).

В ряде процессоров перед обращением к РОН за базовой константой производится анализ значения поля B. Если программа находится в начале адресного пространства ОЗУ, базовая константа равна нулю, и обращения к РОН не требуется.

 

 
 

Рис. 63

 

Индикатором данной ситуации для процессора может служить наличия кода нуля в поле B. Именно это и отражено в алгоритме вычисления Аисп.

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

В ряде процессоров выделяется специальный неявно адресуемый базовый регистр, на который при загрузке в ОЗУ программы операционная система записывает базовую константу. Тогда формирование Аисп. будет реализовано по следующей схеме (рис. 64).

 
 

 
 


Рис. 64

 

Перемещаемости программ по адресному пространству ОЗУ можно достигнуть и другим способом – с помощью адресации относительно программного счетчика.

 

 
 

 

Данный способ базируется на локальности информации, который заключается в том, что значительная часть обращений за данными происходит в непосредственной близости от команды. Кроме того, размещение данных в теле программы фиксировано относительно команд. Поэтому при размещении программы в любом месте ОЗУ адреса операндов всегда будут жестко привязаны к адресам команд, по которым эти операнды обрабатываются. Адрес Аисп. в этом случае вычисляется следующим образом Аисп.= СЧАК+ D по схеме (рис.65).

Относительная адресация с индексированием.

Индекс предназначен для указания или вычисления элементов массива. В адресном поле команды записаны адрес индекса – X и прямой адрес – D:

 

КОП Х D

 

Исполнительный адрес вычисляется следующим образом:

АИСП=РОН[X] + D

На рис.66 показан пример использования индекса. Пусть массив данных а0, а1, а2 … размещен в ячейках ОЗУ начиная с адреса α. Предположим, что индекс размещается в 5-й ячейке
 
 

РОН. Тогда для указания первого элемента массива в поле D команды необходимо записать прямой адрес этого элемента, а в ячейке индекса код нуля.

Процессор после вычисления адреса элемента массива – а0 для указания следующего элемента должен изменить значение индекса в регистре 5 на единицу. И так индекс должен увеличиваться на 1 от элемента к элементу.

 


Поделиться с друзьями:

Организация стока поверхностных вод: Наибольшее количество влаги на земном шаре испаряется с поверхности морей и океанов (88‰)...

Типы сооружений для обработки осадков: Септиками называются сооружения, в которых одновременно происходят осветление сточной жидкости...

Адаптации растений и животных к жизни в горах: Большое значение для жизни организмов в горах имеют степень расчленения, крутизна и экспозиционные различия склонов...

Типы оградительных сооружений в морском порту: По расположению оградительных сооружений в плане различают волноломы, обе оконечности...



© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!

0.105 с.