Правильная ссылка на эту страницу
http://az-design.ru/Support/HardWare/AMI/D19790927Elc037.shtml

16-разрядный микропроцессор, совместимый с 8-разрядными приборами

УДК 681.325.5—181.48

Митч Гузе (Mitch Gooze)
Фирма American Microsystems Inc. (Санта-Клара, шт.Калифорния)

Mitch Gooze. How a 16-bit microprocessor makes it in an 8-bit world, pp.122—125.

Описывается микропроцессор 6809г в котором внешняя 8-разрядная шина взаимодействует с 16-разрядной архитектурой, что обеспечивает высокую производительность и позволяет использовать языки высокого уровня, его набор инструкций и функциональные возможности; приводятся результаты оценки его характеристик в сравнении с такими распространенными микропроцессорами, как Z80, 6800 и 8080/8085.

Сейчас все большее распространение получают 16-разрядные микропроцессоры, однако большинство периферийных приборов по своим возможностям ввода-вывода ориентируются на работу с 8-разрядными шинами данных, причем продолжает появляться все большее число микросхем такого рода. Новый микропроцессор, разработанный как прибор серии 6800, решает эту проблему, а в дополнение к этому позволяет снизить затраты на программные средства.

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

Новый прибор полностью совместим с микропроцессорными аппаратными средствами семейства 6800 и совместим снизу вверх с микропроцессором 6800 с точки зрения программных средств, т.е. он предусматривает выполнение программ, представленных в исходном коде микропроцессора 6800. Существуют два варианта микропроцессора 6809: один работает с встроенным генератором тактовой частоты, требующим только подключения кварца между двумя выводами прибора, а другой (прибор 6809Е) работает от внешней схемы синхронизации с возбуждением от внешнего, совместимого с ТТЛ-микросхемами генератора тактовой частоты. Для каждого варианта стандартной является частота 1 МГц, а поставляемые по особому заказу приборы серии А работают при частоте 1,5 МГц, а приборы серии В — при частоте 2 МГц.

Уменьшение числа корпусов

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

Еще одно аппаратное усовершенствование — это линия готовности памяти (MR), которая позволяет увеличить длительность фазы 2-тактового сигнала до 10 мкс, что упрощает сопряжение с медленными приборами памяти. Кроме того, сигнал занятости процессора (BUSY) служит признаком того, что в данный момент процессор выполняет цикл чтение — модификация — запись, а такой признак весьма полезен для работы в многопроцессорных системах. Наконец, сигнал последнего цикла инструкции (LIC) служит признаком того, что микропроцессор 6809 выполняет последний цикл некоторой инструкции; тем самым внешние приборы предупреждаются, что новая инструкция начнется по следующему циклу тактовой частоты.

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

Модель для кодирования. Заштрихованные регистры — регистры, общие для микропроцессоров 6800 и 6809. Однако микропроцессор 6809 содержит не только боль
Рис.1. Модель для кодирования. Заштрихованные регистры — регистры, общие для микропроцессоров 6800 и 6809. Однако микропроцессор 6809 содержит не только большее число регистров — многие из них стали также многоцелевыми. Например, регистры X и S в микропроцессоре 6809 могут выполнять также функции указателей.

Например, микропроцессор 6809 содержит два 8-разрядных накапливающих регистра, А и В, как и микропроцессор 6800, однако кроме того предусматривается объединение этих регистров в один 16-разрядный накапливающий регистр D для выполнения 16-разрядных логических и математических операций. Аналогично, если в микропроцессоре 6800 имеется один 16-разрядный индексный регистр (X), то в микропроцессоре 6809 два подобных регистра, X и Y, которые могут выполнять также функции указателей. Кроме того, вместо одного 16-разрядного указателя стека МП6800 в новом микропроцессоре имеются два указателя стека, регистры U и S, которые могут также использоваться для целей индексации. Наконец, в микропроцессор 6809 введен дополнительный 8-разрядный регистр прямой адресации страниц для использования в предусмотренных режимах адресации.

Следует также отметить, что в МП6800 используются только 6 из 8 разрядов регистра кода условия. В МП6809 один из оставшихся разрядов используется в качестве маскирующего разряда для сигнала FIRQ, а другой — в качестве внутреннего флага, позволяющего различать обработку сигналов IRQ или FIRQ. Такой флаг-признак необходим для того, чтобы гарантировать, что в конце подпрограммы обслуживания прерывания'восстанавливаются содержимые нужных регистров.

Именно благодаря такой регистровой структуре в сочетании с большим числом режимов адресации обеспечивается возможность при помощи компиляторов микропроцессора 6809 генерировать эффективные объектные коды. Объектные коды получаются настолько эффективными, что занимают практически тот же самый объем памяти, какой они занимали бы, если бы программы были первоначально написаны на языке ассемблера или в машинных командах. Для сравнения укажем, что компиляторы с ФОРТРАНа, КОБОЛа и ПАСКАЛЯ, разработанные для многих других микропроцессоров, генерируют машинный код, который требует на 50—100% большего объема памяти, чем код, написанный вручную, а это такие накладные расходы, которые зачастую превышают допустимые для разработчика системы дополнительные затраты памяти.

Режимы адресации

Микропроцессор 6809 кроме режима прямой адресации имеет расширенную адресацию, два режима непосредственной адресации и пять режимов индексной адресации. Он предусматривает также косвенные варианты этих режимов расширенной, непосредственной и индексной адресации. В сумме это составляет 19 режимов адресации по сравнению с 6 режимами для микропроцессора 6800.

При использовании режима прямой адресации только 8 младших битов адреса включаются в оператор инструкции. Старшие 8 бит формируются при помощи регистра прямой адресации страниц (DPR). После сброса микропроцессора 6809 значение регистра прямой адресации страниц становится равным нулю и, если оно не будет изменено, то в режиме прямой адресации МП6809 будет вести себя подобно 6800, т.е. он будет обращаться к нулевой странице. Однако, как будет показано ниже, можно легко задать нужное значение регистра DPR. Благодаря этому при помощи двухбайтовых инструкций можно организовать работу с любыми устройствами, предусмотренными в карте памяти.

Если необходимо обратиться к ячейкам, адреса которых находятся вне нулевой страницы, можно воспользоваться расширенным режимом адресации; в этом случае в инструкции указывается двухбайтовый абсолютный адрес. Этот режим адресации, предусмотренный для всех инструкций обращения к памяти, охватывает полный 64-кбайт объем памяти микропроцессора 6809.

Непосредственная адресация

В микропроцессоре 6809 имеются 8-разрядный и 16-разрядный режимы непосредственной адресации. Непосредственная адресация предполагает включение фиксированных данных в оператор инструкции, например 8-разрядного значения 01101110 (6Е), для загрузки в ячейку памяти или накапливающий регистр А. Кроме того, в микропроцессоре 6809 обеспечивается возможность загрузки 16-разрядных значений в накапливающий регистр D, любой из индексных регистров или в две последовательные ячейки памяти просто путем обращения к первой ячейке.

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

Как указывалось выше, микропроцессор 6809 имеет четыре индексных регистра: X, Y, U и S. Любой из этих регистров может использоваться в любом из пяти режимов индексной адресации и в любой инструкции обращения к памяти. В стандартном режиме индексации исполнительным адресом является содержимое выбранного индексного регистра; например, исполнительный адрес ЕА равен IR, где IR означает любой индексный регистр (X, Y, U и S). В режиме индексной адресации с непосредственным смещением содержимое выбранного индексного регистра модифицируется путем прибавления 5-, 8- или 16-разрядного непосредственного значения. Полученное модифицированное значение используется затем для адресации памяти.

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

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

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

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

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

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

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

Синхронизация прерываний. Микропроцессор 6809 содержит средства, которые позволяют легко синхронизовать прерывания при работе с внешними приборами. Ко
Рис.2. Синхронизация прерываний. Микропроцессор 6809 содержит средства, которые позволяют легко синхронизовать прерывания при работе с внешними приборами. Когда выполняется инструкция синхронизации, микропроцессор останавливается и ожидает запроса на прерывание, который поступает на него от синхронных или асинхронных периферийных микросхем.

Изобилие инструкций

Если к этому множеству регистров и режимов адресации добавить большой набор инструкций (см. «Набор инструкций микропроцессора 6809»), то можно более полно представить себе преимущества микропроцессора 6809 с точки зрения программирования. Микропроцессор 6809 предполагает использование современных методов программирования, таких, как позиционно-независимые, модульные и реентерабельные (повторной входимости) программы, а также программы, написанные на языках высокого уровня, которые было экономически нецелесообразно применять для кодирования микропроцессоров, поскольку они требовали слишком больших накладных затрат программных средств на некоторых машинах.

Позиционно-независимые программы выполняются правильно безотносительно к их размещению в области адресов процессора. В подобных программах абсолютные адреса не используются; например, конкретным программным шагам не присваиваются шестнадцатеричные адреса 400016 или 03FC16. Благодаря этому исключается необходимость в загрузчике программ с перемещением и обеспечивается возможность использования идентичных программ во многих различных системах. Кроме того, ввиду отсутствия абсолютных адресов перестает быть проблемой конкретное декодирование адресов постоянной памяти. Микропроцессор 6809 обеспечивает эффективную реализацию позиционно-независимых программ благодаря своим инструкциям обращения к памяти и условных передач управления по 8- и 16-разрядным адресам относительно программного счетчика и благодаря гибким аппаратным средствам организации стековой памяти.

Модульное программирование

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

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

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

В табл. 1 и 2 сведены результаты сравнительных оценочных испытаний микропроцессора 6809 с точки зрения программирования. Эти испытания проводились с целью оценки возможностей микропроцессора, а не в качестве рекламных. Табл.1 содержит данные для нескольких индивидуальных типов инструкций, включая инструкции сортировки и поиска, блочной пересылки данных и передачи данных по прерываниям, арифметические операции с плавающей точкой и умножение трехбайтовых чисел, а также для программ языка высокого уровня.

Таблица 1. Оценочные испытания микропроцессора 6809 на нормализованных данных

Операция, программа

6809

Z80

6800

8080/8085

Сортировка и вставление

1,00/1,00/ — /—*

 

1,61/1,54/—/—

 

Пакет с плавающей точкой

1,00/1,00/—/—

 

1,35/1,20/—/—

 _

Поиск подпоследовательности

1,00/1,00/1,00/2,00

1,75/1,59/1,74/2,78

2,00/2,08/2,00/4,00

2,22/2,13/3,10/4,66

Пересылка блока данных

1,00/1,00/1,00/2,00

1,00/1,11/0,97/1,56

2,78/1,89/3,56/7,10

2,27/1,59/2,35/3,54

3-байт умножение

1,00/1,00/1,00/2,00

2,50/1,61/5,69/9,10

1,69/2,27/6,25/12,50

3,23/2,13/12,09/18,18

Передача данных по прерываниям

1,00/1,00/1,00/2,00

1,00/0,64/0,75/1,20

0,86/0,78/1,00/2,00

1,48/1,36/1,94/2,92

Примитивы языка высокого уровня (обработка данных)

—/1,00/1,00/2,00

—/7,56/1,92/3,08

—/1,61/1,67/3,34

 

Программа на языке высокого уровня

—/1,00/1,00/2,00

—/1,33/2,31/3/70

—/1,25/1,56/3,12

Обобщенный показатель эффективности

1,00/1,00/1,00/2,00

1,56/1,31/2,23/3,57

1,72/1,58/2,67/5,34

2,30/1,80/4,87/7,32

* Формат: число инструкций /число байтов/ время выполнения при высокой тактовой частоте/ время выполнения при низкой тактовой частоте.

Таблица 2. Сводные показатели оценочных испытаний микропроцессора 6809 для определения эффективности

Показатель эффективности

6809

Z80

6800

8080/ 8085

Число инструкций

1,00

1,56

1,72

2,30

Число байтов

1,00

1,31

1,58

1,80

Время выполнения при высокой тактовой частоте,

мкс

1,00 (2 МГц)

2,23 (4 МГц)

2,67 (2 МГц)

4,87 (3 МГц)

Время выполнения при низкой тактовой частоте,

мкс

2,00 (1 МГц)

3,57 (2,5 МГц)

5,34 (1 МГц)

7,32 (2 МГц)

Сравнительные достоинства

Испытания проводились с целью определения трех критериев. Первым критерием было число инструкций, необходимых для реализации определенной функции, что в свою очередь является единицей измерения трудозатрат программиста. Вторым критерием было число байтов, которое определяет необходимый объем памяти, а последним критерием — время выполнения операции или программы при двух тактовых частотах. Все данные нормализованы, причем за 1,00 приняты параметры микропроцессора 6809 при частоте 2 МГц. Числа, превышающие 1,00, соответствуют ухудшенным значениям параметров.

Сводные результаты показаны в табл.2. По сравнению с микропроцессором 6800 микропроцессор 6809 характеризуется уменьшением числа требуемых инструкций на 72%, уменьшением затрат программной памяти на 58% и повышением быстродействия на 167%. Таким образом, микропроцессор 6809 не только предоставляет разработчику системы увеличенную гибкость и повышенную надежность, но и в значительной степени упрощает программирование и позволяет получить повышенное быстродействие системы.

Набор инструкций микропроцессора 6809

Набор инструкций микропроцессора 6809 совместим снизу вверх с набором инструкций исходного кода микропроцессора 6800 (а также с наборами инструкций МП 6801 и 6802).

Микропроцессор 6809 предусматривает следующие инструкции по передачам данных:

— Загрузка и запоминание любого накапливающегорегистра (А, В или D) или любого индексного регистра(X, Y, U и S).

— Передачи и обмены данными между любыми двумя 8-бит регистрами (А, В, DPR или СС), либо между любыми двумя 16-бит регистрами (D, X, Y, U или S).

— Работа с регистром S или U в режиме стека с любым одним или несколькими регистрами (X, Y, U, S, А, В, DPR, СС или PC).

— Загрузка исполнительного адреса в регистр X, Y,U или S.

— Логические инструкции позволяют выполнять следующие операции:

— Операцию И, ИЛИ или Исключающее-ИЛИ для содержимого любой ячейки памяти и содержимого регистраА или В.

— Сдвиг и циклический сдвиг содержимого любойячейки памяти вместе с содержимым регистра А или В.

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

— Формирование содержимого регистра кода условия СС при помощи операций И и ИЛИ с использованиемнепосредственных данных.

При помощи арифметических инструкций пользователь может задать следующие операции:

— Сложение или вычитание любой ячейки памяти изсодержимого регистра А, В или D.

— Сложение или вычитание любой ячейки памяти из содержимого регистра А или В (с переносом).

— Сложение 8-бит непосредственных данных с содержимым регистра А, В, X, Y, U или S.

— Приращение или уменьшение значения любой ячейки памяти, любого накапливающего регистра (А, В, D) или любого индексного регистра (X, Y, U, S).

— Умножение значения регистра А на значение В и помещение результата в регистр D при времени выполнения операции 5 мкс в случае микропроцессора 6809 счастотой 2 МГц.

Инструкции для тестирования и анализа:

— Арифметическое сравнение содержимого любой ячейки памяти с содержимым любого накапливающего регистра (А, В, D) или любого индексного регистра (X, Y,U, S).

— Логическое сравнение содержимого любой ячейки памяти с содержимым регистра А или В.

— Выполнение 14 различных условных передач управления (байтовых и 16-бит) в зависимости от результатов проверки условий.

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

Выходные данные:

Журнал "Электроника" том 52, No.20 (572), 1979г - пер. с англ. М.: Мир, 1979, стр.35

Electronics Vol.52 No.20 September 27, 1979 A McGraw-Hill Publication

Mitch Gooze. How a 16-bit microprocessor makes it in an 8-bit world, pp.122—125.

Раздел: МЕТОДЫ, СХЕМЫ, АППАРАТУРА

Тема:     Микросистемы и программное обеспечение





Дата последнего изменения:
Thursday, 21-Aug-2014 09:10:44 MSK


Постоянный адрес статьи:
http://az-design.ru/Support/HardWare/AMI/D19790927Elc037.shtml