РАЗДЕЛ 3 Программное обеспечение микропроцессорных систем 2 страница
В связи с необходимостью более глубокого знания функционирования микроЭВМ МС1201, так как на ее базе построено две системы ЧПУ – 2Р22 и Контур – 1, рассмотрим более подробно некоторые вопросы ее функционирования.
Структура микро-ЭВМ с общей магистралью.В основу организации микро-ЭВМ «Электроника МС 1201.01» положен принцип связи между устройствами с помощью одной общей магистрали (рис. 3). Для каждого устройства, подсоединенного к общей магистрали, вид связи одинаков. Процессор П использует один и тот же набор сигналов как для связи с ячейками оперативной памяти ОП, так и для связи с периферийными устройствами. Каждой ячейке памяти, регистрам процессора и регистрам периферийных устройств присваивается определенный адрес магистрали Благодаря такой структуре все команды для данных, хранящихся в оперативной памяти ОП, в равной мере могут использоваться и для данных в регистрах периферийных устройств. Этот принцип — весьма существенная особенность микро-ЭВМ с общей магистралью, так как одно и то же множество команд можно применять как для вычислений, так и для управления вводом — выводом Специальные команды ввода — вывода становятся ненужными, и ввод — вывод информации может быть совмещен с ее обработкой. Благодаря двунаправленным и асинхронным передачам устройства могут посылать, принимать и обмениваться данными между собой. Организация работы общей магистрали по асинхронному принципу «запрос — ответ» позволяет согласовать работу устройств, работающих в самом широком диапазоне частот.
Рис. 3. Структура микро-ЭВМ с общей магистралью.
Связь между устройствами, соединенными общей магистралью, осуществляется по принципу «задатчик — исполнитель». В любой момент времени имеется только одно устройство, которое управляет магистралью и носит название «задатчик». Это устройство управляет работой магистрали при осуществлении связи с другим устройством, соединенным с магистралью и именуемым «приемником». Типичным примером этого соотношения является процессор П, служащий в качестве задающего устройства и выбирающий команду из оперативной памяти ОП (память всегда исполняющее устройство). Задающим устройством, например, может быть накопитель на магнитном диске (НМД), передающий данные в ОП. Таким образом, связь между устройствами — динамическая.
Общая магистраль используется процессором П и всеми устройствами ввода-вывода УВВ. Какое устройство принимает на себя управление магистралью, определяет система приоритета. Таким образом, каждое устройство, подсоединенное к магистрали и способное стать задатчиком, имеет присвоенный ему приоритет.
В рассматриваемой микро-ЭВМ имеется одна линия приоритетных прерываний. В том случае, когда два (или более) устройства, которые способны стать управляющими устройствами для магистрали, одновременно посылают запросы на использование магистрали, управление передается тому устройству, электрическое соединение которого находится ближе к процессору.
Обмен данными между устройствами, подключенными к магистрали, может осуществляться в режимах:
1) программном;
2) по прерыванию;
3) прямого доступа к памяти (ПДП).
Программный режим — наиболее универсальный. По инициативе и под управлением программы между задающим и приемным устройствами могут пересылаться полные 16-разрядные слова или 8-разрядные байты информации. Информацией могут быть команды, адреса или данные. Обычно процессор, как задающее устройство, выбирает команды из памяти и операнды из памяти или регистров, а после выполнения команд засылает результаты в память или регистры.
В режиме работы по прерыванию обмен данными происходит по требованию периферийного устройства. При этом процессор приостанавливает выполнение текущей программы, чтобы обслужить запрашивающее устройство. После завершения выполнения программы обслуживания процессор возобновляет выполнение прерванной программы с того места, где она была прервана. Поскольку в общем случае процессор способен выполнить от десятка до тысячи команд в течение промежутка времени между двумя последовательными передачами данных от устройства ввода — вывода, экономически нецелесообразно вынуждать простаивать его в течение этого времени. Передача данных по прерыванию позволяет процессору работать одновременно с процессом ввода — вывода и получать информацию о моменте его завершения.
В режиме прямого доступа к памяти (ПДП) обмен данными осуществляется без программного управления со стороны процессора и является самым быстрым способом передачи данных между памятью и внешним устройством. Адресацию и управление размерами передаваемого массива должно обеспечить устройство, получившее прямой доступ к памяти. Обычно режим ПДП используется при обмене массивами данных между накопителями на магнитных дисках или лентах (НМД или НМЛ) и оперативной памятью.
Рабочими циклами магистрали при взаимодействии с процессором являются: «Чтение» — перенос слова данных от внешнего устройства в процессор; «Запись» — перенос слова или байта данных из процессора во внешнее устройство; «Чтение модификация — запись» — перенос слова данных от внешнего устройства в процессор, за которым следует запись слова (байта) данных из процессора во внешнее устройство.
Для каждой команды процессора требуется один или несколько рабочих циклов магистрали. В первую очередь выполняется цикл «Чтение», при котором команда выбирается из ячейки памяти (адрес ячейки задан счетчиком команд). Если больше нет операндов, для которых необходимо обращение к памяти или регистрам устройств ввода — вывода, то для выполнения команды никаких дополнительных рабочих циклов не требуется. Однако если необходимо обращение к памяти или к внешнему устройству, то требуется один (или больше) дополнительный рабочий цикл.
Следует обратить внимание на разницу между прерываниями и операциями прямого доступа к памяти. Прерывания изменяют состояние процессора и поэтому могут иметь место только в промежутках между командами процессора. Операции прямого доступа к памяти могут выполняться внутри исполнения команды в перерывах между отдельными рабочими циклами магистрали, поскольку эти операции не изменяют состояния процессора.
Цикл магистрали «Чтение — модификация — запись» — примечательная особенность ЭВМ. По этому циклу происходят считывание данных из адресуемой ячейки памяти, модификация этих данных (т. е. выполнение операции арифметическо-логическим устройством) и запись в ту же ячейку памяти без повторения адреса ячейки. Исключение повторной выдачи адреса ячейки памяти на магистраль приводит к экономии времени и, как следствие, к увеличению производительности ЭВМ.
Организация памяти.В микро-ЭВМ «Электроника МС1201.01» каждое слово содержит 16 бит. Наименьшей адресуемой частью памяти является байт, состоящий из 8 бит. Два байта составляют слово. Память можно рассматривать как последовательность ячеек с номером (адресом), присвоенным каждой ячейке (рис. 4).
Если оперативная память содержит N байт, то последовательность адресов байтов будет 0, 1, 2, ..., N — 1. Адреса слов совпадают с адресами четных байтов, и их последовательность выглядит как 0, 2, 4, 6, ...,N— 2.
Адреса памяти удобно записывать в восьмеричной системе счисления. На рис. 4 показана структура оперативной памяти максимального объема для рассматриваемой микро-ЭВМ. Она содержит 56К байт, или 28К слов.
С помощью 16-разрядного слова процессор способен прямо адресовать 64К байт, или 32К слов, однако последние 8К байт, или 4К слов, выделяются для адресации регистров внешних устройств и регистров процессора. Таким образом адреса слов 1600008— 1777768 относятся не к ячейкам оперативной памяти, а к различным регистрам. Следует иметь также в виду, что первые 2008 слов (адреса 0—3768) резервируются системой для векторов внутренних и внешних прерываний. По этой причине обычно в практике программирования начиная с адреса 4008 отводят некоторое число ячеек памяти для использования аппаратурным указателем стека, а далее располагаются программы вплоть до самой последней ячейки памяти с адресом 157776s.
Рис. 4. Структура адресного пространства микроЭВМ.
Логическая организация процессора.Структура процессора, состоящего из регистров общего назначения РОН, арифметическо-логического устройства АЛУ, регистра состояния процессора РгСП и устройства управления магистралью УУМ, показана на рис. 5.
Процессор, подключаемый к общей магистрали как подсистема, управляет временным распределением общей магистрали для устройств ввода-вывода, декодирует команды и выполняет арифметические и логические операции. Он содержит восемь (R0—R7) 16-разрядных регистров общего назначения РОН, которые могут использоваться как накапливающие, индексные, с автоувеличением и автоуменьшением или как указатели стеков для временного запоминания данных в оперативной памяти, для выборки операндов и записи результатов при выполнении арифметических и логических операций аналогично ячейкам памяти и регистрам внешних устройств. Операции по выполнению команд с регистровым методом адресации не требуют рабочих циклов общей магистрали. Обмен же
данными с оперативной памятью и регистрами внешних устройств выполняется с участием общей магистрали и занимает более длительное время. По этой причине применение регистров общего назначения для хранения операндов и промежуточных результатов увеличивает производительность ЭВМ. Регистры R6 и R7 помимо сказанного выше выполняют еще и специальные функции. Регистр R6 (SP) используется как аппаратурный указатель стека и содержит адрес последней заполненной ячейки стека. Система автоматически изменяет значение его содержимого при обработке внутренних и внешних прерываний, а также при работе с подпрограммами. Регистр R7 (PC) служит в качестве счетчика команд, который после выборки очередной команды всегда содержит адрес следующей выбираемой команды. Обычно он служит только для адресации команд, а не как накапливающий регистр.
Рис. 5. Логическая схема процессора микро-ЭВМ.
Обмен информацией в упрощенном виде показан на рис. 5. Поток данных с общей магистрали через устройство управления магистралью УУМ направляется к входным цепям арифметическо-логического устройства АЛУ и через его выходные цепи — к регистрам общего назначения РОН. Далее информация опять поступает на входные цепи арифметическо-логического устройства АЛУ и через его выходные цепи — к устройству управления УУМ магистралью и снова в общую магистраль.
Возможны следующие виды передачи данных: регистр — регистр, регистр — память, память — регистр, память — память. Кроме того, в процессоре имеется отдельный 8-разрядный регистр состояния процессора РгСП (PSR). Разряд 7 служит для управления разрешением или запрещением прерываний от внешних устройств. Разряды 6 и 5 в данной модели микро-ЭВМ для работы не нужны. Разряд 4 (обозначен Т) используется системным математическим обеспечением при отладке программ (позволяет осуществить покомандное исполнение программы). Разряды 3 — 0 (обозначены как N, Z, V, С) содержат информацию о результатах выполнения предыдущих операций. Эти разряды имеют следующее значение: N= 1 — если результат был отрицательным, Z = 1 — если результат был равен 0, V = 1 — если было переполнение при выполнении арифметических операций, С=1 —если был перенос из 15-го разряда.
Способы адресации.Микро-ЭВМ «Электроника МС 1201.01» обладает мощной и гибкой системой адресации, позволяющей эффективно обрабатывать сформированные структуры данных. Возможны три типа команд: безадресные, одноадресные и двухадресные. В первом типе команда содержит только код операции. В кодах команд второго и третьего типа обычно содержится информация, которая определяет: выполняемую функцию (код операции); регистры общего назначения, используемые при выборке операндов; способ адресации (для определения, каким образом должен применяться выбранный регистр). Поле адреса операнда в любом случае состоит из полей способа адресации и адреса регистра общего назначения. Адрес первого операнда именуется источником, а адрес второго — приемником. Длина всех команд одна и та же и равна 16 разрядам, но иногда одно или два слова, следующие за командой, рассматриваются как ее часть.
Структура одноадресной команды имеет вид
Поле адреса приемника занимает разряды 0—5, код операции (КОП) — разряды 6—15.
Способ адресации кодируется тремя двоичными разрядами:
Таким образом, существует всего восемь способов адресаций (4 прямых и 4 косвенных).
Учитывая важность адресации для понимания основных принципов организации и работы микро-ЭВМ, рассмотрим способы адресации подробнее.
Регистровая адресация (код 08). В качестве операнда используется содержимое адресуемого регистра. Это самый простой и наиболее быстрый способ извлечения операнда, не требующий обращения к оперативной памяти. Например, по команде
* На этом рисунке и на последующих рисунках адреса источника и приемника подчеркнуты. Первые две цифры машинного кода представляют собой код операции (в данном примере — сложить).
содержимое регистра R1 складывается с содержимым регистра R0 и результат направляется в регистр R0:
С помощью диаграммы регистровую адресацию можно изобразить так:
Регистровая косвенная адресация (код 18). Содержимое адресуемого регистра используется как адрес операнда. Например, команда
очищает ячейку памяти, адрес которой представлен содержимым регистра R2. В приведенном примере это ячейка с адресом 1100. Условно этот тип адресации выглядит так:
Адресация с автоувеличением (код 28) Содержимое адресуемого регистра рассматривается как адрес операнда. После получения адреса содержимое регистра автоматически увеличивается на 1при байтовых операциях, а при операциях со словами — на 2.
Содержимое регистров R6 и R7 (SP и PC) всегда увеличивается на 2. Этот способ адресации очень удобен для обработки таблиц (последовательно расположенных в памяти данных). Например, команда
интерпретируется так: очистить ячейку памяти, адрес которой указан регистром R1, а затем сдвинуть указатель на следующее слово. Условное изображение этого вида адресации следующее:
Косвенная адресация с автоувеличением (код 38). Содержимое регистра используется как указатель ячейки памяти, в которой находится адрес операнда, затем содержимое регистра увеличивается на 2 (в том числе и для байтовых команд). Например, команда
увеличивает на 1 содержимое ячейки памяти, адрес адреса которой указан содержимым регистра R1, затем содержимое регистра R1 увеличивается на 2. Этот способ адресации удобен для обработки таблиц, состоящих из адресов. Ниже приведено его условное изображение:
Адресация с авто уменьшением (код 48). Содержимое регистра сначала уменьшается на 1 для байтовых операций и на 2 для операций со словами и затем используются как адрес операнда. Содержимое регистров R6 и R7 в любом случае уменьшается на 2. Например, команда
уменьшает содержимое регистра R4 на 2, затем очищает ячейку памяти, адрес которой определяет новое значение содержимого регистра R4. Нетрудно видеть, что при адресации с автоуменьшением адресации к ячейкам памяти идет в противоположном направлении, чем при адресации с автоувеличением. Этот способ адресации также удобен при обработке таблиц. Его условное изображение имеет вид
Косвенная адресация с авто уменьшением (код 58). Содержимое регистра всегда уменьшается на 2 и затем применяется в качестве указателя слова, содержащего адрес операнда. Например, команда
уменьшает содержимое регистра R5 на 2, затем очищается ячейка памяти, адрес адреса которой определяется новым содержимым регистра R5. Этот способ адресации можно представить так:
Индексная адресация (код 68). Содержимое адресуемого регистра складывается с индексным словом, следующим за командой, и используется как указатель ячейки памяти, где находится адрес операнда. Ни содержимое индексного слова, ни содержимое регистра после исполнения команды не изменяются. Например, команда
очищает ячейку памяти, адрес которой определяется как сумма 200 и содержимого регистра R4. Индексную адресацию условно можно представить так:
Косвенная индексная адресация (код 78) Содержимое индексного регистра складывается с индексным словом, следующим за командой, и используется как указатель ячейки памяти, где находится адрес операнда Например, по команде
произойдет очистка содержимого ячейки с адресом 3000, так как регистр R0 содержит значение 2000, а индекс равен 500.
Условно этот способ адресации можно представить так:
Если из восьми рассмотренных способов адресации отнести некоторые способы адресации к содержимому счетчика команд, то можно определить еще четыре удобных и эффективных способа адресации, получивших специальные названия: непосредственная, абсолютная, относительная и косвенная относительная адресации.
Непосредственная адресация (код адреса операнда 278). Этот способ адресации образуется применением адресации с автоувеличением к содержимому счетчика команд. Слово, следующее за командой, используется как непосредственный операнд. Таким образом, операнд-константа включается в саму команду. Например, команда
обеспечит сложение константы 20 с содержимым регистра R0. Условно непосредственную адресацию можно представить так:
Абсолютная адресация (код адреса операнда 378). Этот режим адресации образуется применением косвенной адресации с автоувеличением к содержимому счетчика команд. Слово, следующее за командой, является адресом операнда. Например, команда
выполняет очистку ячейки памяти с адресом 2000. Условно этот способ адресации можно обозначить так:
Относительная адресация (код адреса операнда 678). Этот способ адресации образуется применением индексной адресации к содержимому счетчика команд. Адрес операнда определяется суммированием индексного слова, следующего за командой, и содержимого счетчика команд. Фактически индексное слово указывает, насколько далеко вперед или назад операнд отстоит от команды. Например,
Исполнительный адрес
где α — адрес команды: Х= А — α — 4= 12008—100048 — 48=1748— смещение (индекс).
Если при обращениях к памяти используется этот способ адресации, то программа загружается в любое место памяти и правильно выполняется, поскольку, несмотря на изменение абсолютных адресов необходимых операндов, расстояние между операндами и командами остается неизменным. Такая адресация называется позиционно-независимой.
Относительную адресацию условно можно представить так:
Относительная косвенная адресация (код адреса операнда 778). Этот способ адресации образуется применением косвенной индексной адресации к содержимому счетчика команд. Адрес адреса операнда определяется суммированием индексного слова, следующего за командой, и содержимого счетчика команд. Например, команда
очищает ячейку памяти по адресу 2000. Условно этот способ адресации можно представить так:
Представляет интерес анализ четырех оставшихся способов адресации с использованием счетчика команд. Анализ проведем на примерах.
Команда с регистровой адресацией
вполне допустима. Она запишет содержимое счетчика команд в регистр R1:
т. е в R1 окажется адрес следующей команды. Пусть регистр R7 находится по месту адреса приемника, тогда по команде
текущее значение счетчика команд увеличится на 2, т. е. произойдет пропуск следующей команды. Однако проще и эффективнее выполнять безусловную передачу управления с помощью команды BR, так как она занимает только одну ячейку памяти.
Команда с косвенной регистровой адресацией
запишет копию команды, находящейся в ячейке 1002, в регистр R2. Затем будет выполнена команда, содержащаяся по адресу 1002.
Применение кода адресации 178 по адресу приемника нецелесообразно, так как приведет к модификации (порче) следующей команды. Например, пусть содержимое регистра R2 равно нулю и исполняются две команды:
После выполнения команды по адресу 1000 команда INC R1, находящаяся по адресу 1002, будет заменена командой HALT (останов):
Практика программирования не рекомендует писать программы, вызывающие модификацию исходных команд, так как при этом существенно затрудняются отладка программ и поиск ошибок. Способы адресации с кодами 478 и 578 применять не рекомендуется, так как они приводят к зацикливанию. Действительно, команды
при выборке операнда по адресу источника уменьшают содержимое счетчика команд на 2 и таким образом возвращают управление той же самой команде.
Таким образом, поскольку способы адресации операнда-источника и операнда-приемника информации могут быть заданы независимо друг от друга, каждый код операции может обеспечить большое число вариантов одной и той же команды. Благодаря исключительной гибкости системы адресации возможности рассматриваемой микро-ЭВМ чрезвычайно широки, в том числе и при автоматизации контроля.
Система команд.Как уже отмечалось, команды могут быть трех типов: безадресные, одноадресные и двухадресные. В безадресной команде все слово занимает код операции. Одноадресная команда имеет два поля: для кода операции отводится 10 разрядов и для адреса операнда-приемника — 6 разрядов. Двухадресная команда содержит три поля: 4 разряда отводится для кода операции, 6 разрядов — для адреса операнда-источника и 6 разрядов — для адреса операнда-приемника.
В зависимости от способа адресации одноадресная команда может иметь одно продолжение, т. е. занимать два последовательных слова. Во втором слове может находиться (в зависимости от способа адресации) либо непосредственный операнд, либо абсолютный адрес, либо индекс (смещение). Соответственно двухадресная команда может иметь одно или два продолжения. Таким образом, в зависимости от типа команды и способа адресации каждая команда может занимать от одной до трех последовательных ячеек памяти:
Рассмотрим состав команд и отметим их некоторые характерные особенности.
Примечание. С детальным описанием каждой команды при необходимости можно ознакомиться по руководству к микро-ЭВМ.
При описании команд приняты следующие обозначения: DD — адрес приемника; SS — адрес источника; R — регистр общего назначения; $z — звездочка: перед кодом операции принимает значение 0 для слов и 1 — для байтов. Буква В в круглых скобках в мнемонических обозначениях команды показывает, что команда может быть использована как для слов, так и для байтов.
В табл. 1 приведены соответственно группы одноадресных команд, двухадресных команд и команд управления программой.
Рассмотрим особенности выполнения команд условного перехода. Четыре разряда регистра состояния N, Z, V, С процессора представляют собой признаки результата выполнения предыдущей команды и используются командами условного перехода. Передача управления происходит при выполнении условия, определяемого кодом операции.
Характерная особенность команд условного перехода — передача управления относительно счетчиков команд, что обеспечивает свойство позиционной независимости. Команды условных переходов имеют следующий формат:
Таблица 1
Продолжение табл. 1
Продолжение табл. 1
Младший байт команды рассматривается как знаковое смещение (в диапазоне от —128 до +127 слов) относительно счетчика команд. При написании программ следует, учитывать ограниченную возможность передачи управления вперед и назад и в случае необходимости применять команду передачи управления JMP. Команда JMP не имеет ограничений на длину передачи, однако занимает в памяти два слова.
Адрес команды, на которую передается управление в случае выполнения условия, вычисляется по формуле
где α — адрес команды условного перехода.
При передаче управления назад смещение задается в дополнительном коде.
В рассматриваемой системе команд эффективно решен вопрос вызова подпрограмм и возвращения в вызывавшую программу. Вызов подпрограммы осуществляется с помощью команды вида
где R, —один из регистров общего назначения; SUB — имя некоторой подпрограммы.
Действие команды обращения к подпрограмме можно условно представить в виде эквивалентной системы команд:
При обращении к подпрограмме прежнее содержимое регистра связи R, запоминается в стеке, затем в регистр связи заносится адрес возврата (адрес команды, следующей за командой вызова) и происходит переход на подпрограмму с именем SUB.
Возврат из подпрограммы происходит по команде RTS R,, действие которой можно также условно представить в виде системы эквивалентных команд:
Дата добавления: 2015-12-08; просмотров: 1414;