Режимы адресации памяти микро-ЭВМ «Электроника-60», основанные на использовании регистра с номером 7 как счетчика команд

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

2 Непосредственный # n

3 Абсолютный * # n

6 Относительный А

7 Относительный косвенный * А

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

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

Абсолютный режимимеет уровень косвенной адреса­ции, равный 1.

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

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

MOV 76(PC), R2,

имеющая адрес 1500, осуществляет загрузку в регистр R2 содержимого слова памяти, имеющего адрес 1602 (все адреса и данные считаются восьмеричными числами). Записанное в команде число 76 представляет собой поло­жительное смещение, которое надо прибавить к текуще­му содержимому счетчика команд для получения эффек­тивного адреса первого операнда. Значение смещения хранится в слове, следующем за первым (основным) сло­вом команды. Следовательно, при выборке содержимого второго слова счетчик команд будет хранить адрес 1504. При этом 1504 -(- 76=1602 в восьмеричной системе счи­сления, а это и есть адрес первого операнда. В приведенном примере команды смещение записано в явном виде. Однако в действительности оно не всегда заранее известно. Другое неудобство записи смещения в явном виде состоит в том, что при отладке и изменении текста программы значение смещения может измениться. Чтобы избавить программиста от необходимости вся­кий раз подсчитывать и записывать смещение в коман­де, относительный режим адресации предусматривает использование символических имен операндов. В этом случае смещение подсчитывает ассемблер на этапе транс­ляции программы. Относительный косвенный режим характеризуется уровнем косвенной адресации, равным двум. В этом слу­чае, как и в относительном режиме, в команде исполь­зуется символическое имя, которому должен предшество­вать признаку. Слово памяти, которому присвоено записанное в команде имя, содержит адрес операнда. Режим адресации памяти, использующий регистр с номером 6 для хранения указателя стека.Как отмечалось выше, автоинкрементный и автодекрементный косвенные режимы удобны для выполнения операций над особой структурой данных – стеком. В микро-ЭВМ «Электроника-60» стек организуется в оперативной памяти. Для этой цели чаще выбирают адреса слов 400—476. Выполне­ние основных операций над стеком (включение элемента в стек и исключение элемента из него) осуществляется с помощью указателя стека, представляющего собой ад­рес «верхнего» доступного элемента в стеке. Обычно для хранения указателя стека используется регистр 6, кото­рому присваивается имя SP.

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

Используя любой из регистров (R0—R5), можно орга­низовать стек, элементами которого могут быть не слова, а байты. Структуры пословного (а) и байтного (б) сте­ков показаны на рис. 9. На рисунке заштрихованы занятые элементы стеков.

Режимы адресации памяти микро-ЭВМ «Электроника-60», основанные на использовании регистра с номером 7 как счетчика команд - student2.ru

Рис. 9. Структура послов­ного (а) и байтного (б) сте­ков.

Литература:

1. Л.Н. Преснухин «Микропроцессоры» ч. 1, стр.: 357-379.

2. В.В. Стрыгин «Основы вычислительной, микропроцессорной техники и программирования», стр.: 139-141.

3. Б.Я. Лихтциндер «Микропроцессоры и вычислительные устройства в радиотехнике», стр.: 134-150.

ЗАНЯТИЕ 3.3.2. Языки программирования.

ВОПРОСЫ ЗАНЯТИЯ:

1. Языки программирования.

2. Средства программирования.

ПЕРВЫЙ ВОПРОС

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

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

Алгоритмические языки высокого уровня (например, ФОРТРАН, БЕЙСИК, ПЛ/М, ПАСКАЛЬ, АДА и др.) занимают верхнее положение в иерархии языков программирования. Будучи при­ближенными к привычной математической нотации и в ряде случаев обеспечивая естественную форму опи­сания вычислительных процессов, они достаточно про­сты и удобны в программировании, но не всегда позволяют в полной мере реализовать технические воз­можности ЭВМ, а результирующие машинные прог­раммы, получаемые после трансляции программ с ал­горитмических языков, обычно неэффективны с точки зрения объема или быстродействия. Недостаток таких языков заключается в том, что их применение пред­полагает наличие транслятора, представляющего со­бой сложный программный комплекс и требующего для своей разработки большого труда. Тем не менее, вследствие своих неоспоримых достоинств алгоритми­ческие языки высокого уровня широко применяются в программировании для различных классов микроЭВМ.

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

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

Каждый язык ассемблера является машинно-зависимым и отражает аппаратурные особенности (в частности, состав программно-доступных регистров) той микроЭВМ, для которой он создан.

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

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

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

В некоторых языках предусмотрены явные способы указания заданий, которые могли бы выполняться параллельно. В других языках предполагается, что компилятор будет анализировать и выявлять то, что поддается распараллеливанию. Одним из таких язы­ков является язык Компел.

Среди огромного разнообразия языков программи­рования не существует самого лучшего или самого худшего. Выбор языка программирования в каждом конкретном случае определяется целями его предпо­лагаемого применения.

ВТОРОЙ ВОПРОС

Имеется пять классов средств программирования:

- редактирующие программы,

- транслирующие про­граммы,

- программы-загрузчики,

- моделирующие про­граммы,

- отладочные программы.

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

Все эти средства программирования делятся на кросс-средства и резидентные. Кросс-средства — это программы, которые выполняются не на микроЭВМ, для которой разрабатывается программное обеспече­ние, а на какой-либо другой машине. Резидентные средства — это программы, которые выполняются на микропроцессоре, для которого разрабатывается про­граммное обеспечение.

Рассмотрим подробнее перечисленные классы средств программирования.

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

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

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

Транслирующие программы обеспечива­ют получение объектной программы из программы, на­писанной на языке высокого уровня.

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

Имеются два основных вида средств реализации языка (транслирующих программ): компиляторы и интерпретаторы.

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

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

Для выполнения интерпретируемой программы ин­терпретатор должен находиться в основной памяти, в то время как для скомпилированной программы ком­пилятор уже не нужен.

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

Основное преимущество компиляции – высокая скорость выполнения готовой программы, поскольку интерпретатор должен строить соответствующую последовательность команд в момент, когда инструкция выполняется.

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

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

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

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

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

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

Отладочные программы в сочетании с моделирую­щими программами позволяют значительно умень­шить вероятность появления ошибок в объектных про­граммах.

Литература:

1. М.В. Напрасник «Микропроцессоры и микроЭВМ», стр.:137-143.

ТЕМА 3.4Структура команд микроЭВМ.

ЗАНЯТИЕ 3.4.1. Требования, предъявляемые к системам команд, методам

адресации данных и управлению адресами и операциями.

ВОПРОСЫ ЗАНЯТИЕ:

1. Общие требования к системе команд и методам адресации.

2. Особенности построения и функционирования логических блоков прерывания работы микропроцессоров.

3. Методы и средства управления вводом — выводом данных.

ПЕРВЫЙ ВОПРОС

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

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

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

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

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

Чтобы определить М слов информации в памяти, необходимо иметь па = log2M разрядов для прямого указания кода адреса. При М = 65К слов па = 16. Байтовый формат поля адреса позволяет прямо адресовать лишь 28 = 256 слов (ячеек) памяти. В одной команде желательно иметь двухадресный формат, т. е. желательно одновременно задавать адреса хотя бы одного исходного операнда и результата. Вследствие малой разрядности команды микро-ЭВМ прямой двухадресный формат можно задать лишь при обращении к внутреннему регистровому файлу небольшой информационной емкости.

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

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

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

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

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

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

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

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

Особенности программного и микропрограммного управления операциями.Вмикропроцессорах используют два метода выработки совокупности функциональных управляющих сигналов: программный и микропрограм­мный.

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

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

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

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

связано с желанием уменьшить объем используемого оборудования. Учет фактора быстродействия ведет к рас­ширению микропрограмм, поскольку усложнение послед­них позволяет сократить время выполнения команд программы.

Преобразование информации выполняется в универ­сальном арифметическо-логическом блоке микропроцес­сора. Он обычно строится на основе комбинационных логических схем.

Для ускорения выполнения определенных операций вводятся дополнительно специальные операционные узлы (например, циклические сдвигатели). Кроме того, в состав МПК БИС вводятся специализированные оперативные блоки арифметических расширителей.

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

ВТОРОЙ ВОПРОС

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

Для определения требований к построению системных блоков прерывания работы микропроцессоров рассмотрим особенности построения и функционирования внутренних схем прерывания микропроцессоров, реализуемых на кристалле БИС.

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

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

Чтобы охарактеризовать важное качество микро­процессора и электронных систем на его основе по возмож­ности прерывания прерывающих программ, вводят поня­тие «уровень программного прерывания микропроцес­сора». Если нельзя прервать прерывающую программу, то считается, что электронная система спроектирована с ну­левым уровнем прерывания. Чтобы избежать подобных ограничений, большинство МП имеет средства для обеспе­чения практически произвольного количества уровней пре­рывания. Это означает, что имеется возможность многократного прерывания прерываний и образования преры­ваний внутри прерываний, т. е. вложенных прерываний, ведущих к появлению последовательностей вложенных подпрограмм.

Стек — эффективное программно-аппаратурное сред­ство для сохранения и возврата данных при контекстном переключении и осуществления вложенных прерываний. Стек (магазинная память) представляет собой совокуп­ность ячеек памяти, организованных так, что обращение к некоторой последовательности (списку) слов может происходить в процессе, обратном записи. Это означает, что стек позволяет осуществить принцип работы «послед­нее из списка последовательно записанных слов считывается первым». В стеке реализуется подразумеваемая адресация, т. е. всегда запись или чтение данных происхо­дит в «верхней» ячейке. Образно стек можно представить в виде бесконечной этажерки, где ячейки соответствуют полкам. «Положить» слово можно только выше послед­него положенного (записанного) слова; «взять» можно только то слово, которое «положено» самым последним. Чтобы осуществить именно этот порядок обращения, имеется регистр «Указатель полки», который переме­щается по мере добавления новых слов на полках вверх или опускается вниз по мере их взятия. Этот регистр — указатель состояния заполненности стека — физически указывает на регистр СОЗУ на кристалле микропроцес­сора или на ячейку памяти ОЗУ.

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

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

На рис. 1 приведена диаграмма заполнения и осво­бождения стека при появлении цепочки вложен

Наши рекомендации