Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Булатов В.Н. Архитектура микропроцессороной системы, состав машинных команд и основы программирования микропроцессорной .pdf
Скачиваний:
97
Добавлен:
02.05.2014
Размер:
7.1 Mб
Скачать

1 Основы микропроцессорной техники

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

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

На всем протяжении истории развития человеческого общества человек все время пытался создать некие автоматы (механизмы, устройства и т.п.), которые могли бы заменить часть человеческой деятельности в области производства. Особенно там, где сам человек это делает очень медленно, непроизводительно. Так в середине двадцатого века появилась ЭВМ. Необходимо сразу заметить, что было бы ошибочным считать, что ЭВМ создавалась именно как вычислитель. Совсем нет. Человек замахнулся на большее. Он захотел, чтобы она еще и умела думать как человек. И принимать решения как человек.

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

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

Можно пояснить это с помощью примера, основанного на потенциальных возможностях национальных алфавитов. Рассмотрим русский алфавит. Он содержит 33 буквы, которые используются в строчном и заглавном написании. Чтобы освоить пользование этим алфавитом, нужно — как показывает опыт школьного обучения — совсем немного времени. Но это никак не сказывается на его потенциальных возможностях. Скорее, наоборот.

4

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

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

1.1 Классификация команд и архитектура ЭВМ

1.1.1 Команды передачи данных Аналогов два:

а) загрузка данных: Ставите чемодан (данные=data) в камеру хранения (приемник=dst); комментарий dst:= data («:=» — присвоить);

б) пересылка данных: посылка из почтового отделения города Оренбурга (источник=src) переправляется в город Челябинск (приемник=dst); что пересылается —не знаем, может воздух — это неважно. Комментарий: dst:= <src>, где <> - содержимое (в данном случае — содержимое источника).

1.1.2 Операционные команды Операционные команды есть арифметико-логические команды. Их набор

стандартен:

а) команды сложения и вычитания; б) логические команды И, ИЛИ, НЕ; в) команды сравнения.

1.1.3 Команды сдвигов и приращений Выполняют:

а) сдвиги влево и вправо на один или несколько разрядов; различают логические и арифметические сдвиги (об этом позднее);

б) увеличение и уменьшение на единицу; используются для организации счетчиков.

1.1.4 Команды ветвлений и переходов Сразу отметим, что ветвление — это тот же переход, только если

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

1.1.5 Команды ввода-вывода Самая малочисленная группа. Вводятся данные или выводятся данные —

все по отношению к процессору. Вводятся, значит, процессор принимает

5

данные от внешнего устройства. Выводятся, внешнее устройство принимает данные от процессора.

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

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

Вы должны знать, куда вернуться из прерывания;

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

Именно эти два момента и отражены в реализации процедуры обработки прерываний в ЭВМ.

Теперь рассмотрим команды в целом.

Любая команда всегда начинается с кода операции (КОП). Код операции имеет длину, равную, как правило (хотя бывают исключения), формату данных процессора, то есть 1-му байту, 2-м байтам или 4-м байтам. Код операции —это набор управляющих функций цифрового автомата процессора (ЦА), который сам основан, как правило, на базе элементарного автомата Мура.

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

втой последовательности, в какой они будут востребованы процессором. Любое сообщение в ЭВМ представляется и обрабатывается побитно.

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

Но даже такая форма для программиста, в случае написания больших программ, неприемлема. Это сколько кодов команд надо помнить! Поэтому каждая система команд дублируется машинным языком в ассемблере — языке простых аббревиатурных обозначений. Например,

MOV A,B

или

MOV R1,R2.

Здесь сокращение от MOVE (переслать) говорит о том, что в регистр A пересылается содержимое регистра B (фирма Intel). Или для второго случая: в регистр R2 пересылается содержимое регистра R1 (фирма DEC). Таким образом, остается лишь запомнить некоторые дополнительные обозначения, но их совсем немного.

Можно привести еще ряд примеров:

6

ADD B,D

(add —прибавить, сложить);

SUB C,A

(subtract —вычесть);

AND A,D

(and —И, т.е. конъюнкция);

OR A,D

(OR —ИЛИ, т.е. дизъюнкция);

и так далее.

 

Так получилось, что основой ассемблера во всем мире стал английский язык. А в 70-х годах у нас был свой ряд отечественных ЭВМ «Минск - ХХ»с превосходной системой команд, где ассемблер выглядел так:

ВЫЧ Р1,Р2.

Понятно, что что-то из чего вычитается. Но теперь все отечественные разработки сразу «разговаривают» на английском, для того, чтобы российская программная продукция не была ограничена только внутренним рынком.

Итак, у каждого машинного двоичного кода команды есть его отображение в виде команды на ассемблере, на котором достаточно быстро можно научиться писать программы. Но кто же (или что) будет переводить из ассемблера в двоичные коды? Для этого есть специальные трансляторы (компиляторы). В данном пособии указанная процедура демонстрируется вручную, чтобы лучше понять предмет изучения.

А теперь, когда проанализированы основные функции ЭВМ, рассмотрим структурную схему того, что уже можно назвать ЭВМ (рисунок 1). Поскольку ЭВМ создавалась по образу и подобию человека, то и мы попробуем характеризовать основные компоненты ЭВМ с этой, возможно не очень корректной, точки зрения. Итак, сердцем ЭВМ является процессор, основу которого составляет цифровой автомат ЦА. Он «разгадывает» очередной код операции и в соответствии с ним производит определенные действия со всеми составляющими ЭВМ. АЛУ тоже является частью цифрового автомата, но выделено отдельно, так как оно программно доступно относительно выбора операции: сложения, вычитания, конъюнкции, дизъюнкции и тому подобное.

РОНы —локальная память малой емкости — сверхбыстродействующее ОЗУ. Реализовано, как правило, на триггерах, объединенных по 8, 16 или 32 шт. в регистры. Длина регистра зависит от длины слова, которым оперирует процессор. Размер информационного слова принято считать 1 байт (1 Byte)= 8 бит (8 Bite), то есть равным 8-и разрядам. Поэтому, в отношении процессора обычно оперируют терминами «однобайтовый», «двухбайтовый» и тому подобное.

Процессор подсоединяется к системной шине (магистрали) как активное устройство (командир). Системная шина имеет множество разновидностей, но любые системные шины можно объективно разделить на два вида, так называемые Q-bus и MultiBus.

Q-bus —шина со совмещенной шиной данных и адреса (ШДА). Что и в какой момент находится на ШДА —можно узнать только по определенным фронтам управляющих сигналов. Кроме этого, все запросы на прерывания и их инициирование происходят по последовательному протоколу. Если вернуться к рассмотренному примеру со звонком, то представьте себе не один, а несколько телефонных аппаратов, но с общим звонком. И чтобы найти, какой телефон

7

звонит, нужно последовательно снимать трубки, пока не будет обнаружен тот единственный. Q-bus считается наиболее совершенной системой шины, так как предусматривает очень надежный протокол установления связи с любым компонентом ЭВМ. Алгоритм его приведен на рисунке 2 – на примере вывода данных (из процессора в устройство).

Процессор

 

 

 

 

 

Арифметико-логическое

Данные

Регистры общего

Постоянное

К внешнему

К внешнему

К внешнему

устройство

 

назначения

запоминающее

устройству

устройству

устройству

(АЛУ)

 

(РОНы)

устройство

№ 1

№ i

№ n

Цифровой

 

 

(ПЗУ)

 

 

 

Управление

Оперативное

Интерфейсное

 

Интерфейсное

автомат

 

 

запоминающее

устройство

 

устройство

(ЦА)

 

 

устройство

№ 1

 

№ n

Код команды

 

 

(ОЗУ)

(адаптер)

 

(адаптер)

Регистр кода

 

 

 

 

 

операции

 

 

 

 

 

(РКОП)

 

 

 

 

 

Шина управления (ШУ)

 

 

 

 

 

Шина адреса (ША)

 

 

 

 

 

Шина данных (ШД)

 

 

 

 

 

С и с т е м н а я

м а г и с т р а л ь

 

 

Рисунок 1 – Архитектура ЭВМ

 

 

Вывод

Выставить адрес устройства на ШДА

Нет

Есть такой адресат?

Да

Выставить данные на ШДА

 

 

Нет

 

 

 

 

 

 

 

Данные приняты?

 

 

 

Подпрограмма

 

 

 

тяжелого останова

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Да

Конец

8

Рисунок 2 – Протокол шины Q-bus.

MultiBus —системная шина с разделенными шинами данных ШД и адреса ША (рисунок 1). Кроме этого, все запросы на прерывание в MultiBus поступают радиально (то есть, параллельно). Если, к примеру, в ЭВМ предусматривается обработка 16 запросов на прерывание, то системная шина должна иметь в составе шины управления 16 проводников для этих запросов, а не 1, как это реализовано в Q-bus. И к сему, выдача процессором адреса и

данных устройства не

предусматривается, как это делается в Q-bus.

Не предусматриваются

подтверждение

обнаружения

устройства

с

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

Все дело в том, что системные шины живут и развиваются как бы сами по себе. Наилучший пример тому — железные дороги. Ширина колеи, высота рельсов, нагрузка на единицу площади, закругления и угол наклона на поворотах, габариты тоннелей, высота троллеи — все это уже навсегда, пока существует железнодорожное сообщение. Что-то здесь будет меняться, например, вместо деревянных шпал — железобетонные, но принципиально — никогда. Замечательно, что все разработки, будь то электровоз, дрезина, грузовой или пассажирский вагон и другие виды изделий транспортировки по рельсам могут бесконечно модернизироваться и даже создаваться новые, поскольку заранее известно, что «правила игры» остаются неизменными. В этом смысле консерватизм параметров железнодорожного пути является составляющей прогресса развития транспортных средств на железных дорогах. Все сказанное совершенно адекватно и к системным шинам Q-bus и MultiBus, не смотря на некоторые их очевидные недостатки.

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

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

9