Стековые процессоры, или новое — это хорошо забытое новое
TF16 фирмы «Технофорт»
После исторических исследований, заморских диковин и патриархов Форт-индустрии настала пора показать то, что сделано у нас в России, в Петербурге, на Васильевском острове. Материалы, представленные в данном разделе, предоставлены фирмой «Технофорт», фрагменты программ предоставлены ведущим разработчиком процессора TF16 А. Капрановым, сотрудником фирмы «Технофорт».
Процессор TF16 фирмы «Технофорт» выполнен как стековый процессор и предназначен для встроенных применений. Вместе с периферией, размещаемой на кристалле FPGA, данный процессор представляет собой полную систему на кристалле, блок-схема которой приведена на рис. 15. Примерами применения Форт-систем с процессором TF16 могут служить интеллектуальные приборы «Скиф» (рис. 12). Данные приборы представляют собой малогабаритный переносной микрокомпьютер со встроенной операционной системой реального времени и с поддержкой файловой системы, совместимой с MS-DOS. Приборы имеют память до 2 Мбайт. Питание прибора осуществляется от аккумуляторов. «Скиф» используются для решения многочисленных задач автоматизации в условиях автономной работы как терминал сбора данных, универсальный регистратор и управляющая машина, заменяя там, где это возможно, дорогие и крупногабаритные контроллеры на базе промышленных РС.
Но наибольшего внимания заслуживает применение Форт-системы с процессором TF16 в качестве кассового регистратора, как наиболее массового изделия. Применение системы на кристалле становится экономически целесообразным, учитывая то, что фирма Altera разработала технологию HardCopy, когда любой проект из существующего проекта для FPGA может быть переведен в ASIC. Сегодняшний кассовый регистратор представляет собой многофункциональный сетевой терминал, способный выполнять как функции кассового регистратора, так и другие функции, например терминала обработки данных на складе, сетевого терминала справочной службы, устройства для маркировки товара и т. д.
На рис. 13 приведена фотография платы кассового регистратора. Кассовый регистратор имеет встроенную операционную систему реального времени, имеет поддержку файловой операционной системы и поддержку сетевых протоколов TCP/IP. Кассовый регистратор имеет несколько разъемов для подключения сканеров штрих-кода и разъем для подключения к сети Ethernet 10/100. Информация выводится на цифробуквенный ЖКИ-дисплей.
Для разработки и отладки ПО, фирмой «Технофорт» разработана программа ТФ32, позволяющая производить отладку полностью собранного кассового регистратора. Регистратор по последовательному каналу связи подключается к хост-компьютеру.
Запускается программа ТФ32. Основное окно программы показано на рис. 14.
Монитор пользователя
Монитор пользователя — это программа, при помощи которой TF16 поддерживает режим обмена с хост-компьютером. Данная программа так же разработана в фирме «Технофорт». Монитор — это программа, зашиваемая в память программ, расположенную на кристалле. При включении питания процессор TF16 начинает выполнять программу монитора, предназначенную для загрузки, выполнения и записи на Flash-диск пользовательских программ. Если Flash-диск содержит программу, монитор загружает ее (первые 64 кбайт диска копируются в сегмент ОЗУ 28h и управление передается на точку входа). В противном случае, если Flash-диск отсутствует (или пустой), монитор переходит на программу обмена с компьютером.
Команды протокола (содержатся в целевом Форт-компиляторе):
- TEST_INIT — инициализация работы.
- TEST_LOAD — загрузка программы в сегмент памяти 28h.
- TEST_RUN — выполнить программу с заданного адреса.
- TEST_SAVE — записать программу на Flash-диск.
- RSRUN (adr —) — загрузить программу в ОЗУ и выполнить. Adr — стартовый адрес программы.
- RSSAVE (adr —) — загрузить программу в Flash-диск и выполнить. Adr — стартовый адрес программы.
Итак, переходим непосредственно к процессору.
Регистры процессора представлены в таблице 6.
Карта памяти процессора представлена в таблице 7. Полный 20-разрядный адрес A[19..0] формируется следующим образом: A[19..16] — значение cs, ss, ds, es A[15..0] — значение pc, l, psp, rsp, a1-a2, t
Расположение стеков в адресном пространстве определяется указателями PSP, RSP и сегментным регистром SS. Указатель содержит адрес верхнего элемента стека. Направление стека определяется младшим битом регистра-указателя (0 — стек растет вверх, 1— стек растет вниз).
Ядро процессора TF16 содержит 8-канальный контроллер прерываний. Типовое использование для применения в составе кассового регистратора следующее — задействованы три прерывания — от UART1, UART2 и от таймера. Их вектора прерываний соответственно — 100h, 140h, 180h. Механизм обработки прерывания (на примере таймера) приведен ниже.
Возврат из прерывания происходит по команде ireturn:
Сравнение ресурсов, занимаемых ядрами встраиваемых процессоров на кристалле, приведено в таблице 8.
Из сравнения данных, приведенных в таблице 8, видно, что ядро процессора TF16 занимает значительно меньше ресурсов, чем сопоставимые 16-разрядные ядра.
К микропроцессору могут быть подключены следующие расположенные на кристалле периферийные устройства:
- Ethernet MAC;
- UART — 2;
- 16-разрядный таймер;
- SPI для связи с Flash-диском;
- Порт для подключения ЖКИ;
- 2 универсальных 16-разрядных порта;
- 9-разрядный универсальный порт;
- порт управления звукоизлучателем;
- порт управление часами.
Канал связи с периферией представляет собой шину адреса, две шины данных (одна для выходящих из процессора данных, другая — для данных, поступающих из периферии в процессор) и сигналов управления. Таким образом, к данному ядру может быть подключена любая периферия из готовых блоков, находящихся в распоряжении пользователя. В зависимости от конкретных требований проекта периферийные блоки могут быть выполнены полностью аппаратно или они могут быть частично программными. Так, например, блок для связи с UART может быть сделан частично программно, то есть процессор формирует диаграмму передачи побитно и передает (принимает) данные через параллельный порт.
Система команд процессора TF16
Система команд включает 4 класса:
- команды вызова подпрограмм и команды возврата — CALL/RETURN;
- команды переходов (8 команд);
- команды записи-чтения памяти (непосредственно, через индексные регистры, с инкрементом или декрементом адреса);
- математические команды — эти команды могут сопровождаться активизацией одного из двух стеков (команды языка Форт);
- команды обращения к портам.
Внутренняя система сегментации позволяет адресовать 4 Мбайт внешней памяти.
Наличие резервных кодов позволяет существенно расширить систему команд и увеличить вычислительную производительность процессора (однотактное умножение, команды поддержки арифметики с плавающей точкой и т. д.). Внутреннее регистровое пространство может быть увеличено до 256 регистров. Изменение разрядности сегментных регистров (до 16 разрядов) дает возможность получать необходимое адресное пространство (до 4 Гбайт).
Команды процессора TF16 (табл. 9–11), как и у всех стековых процессоров, очень плотно упакованы и за одну команду позволяют выполнить несколько непротиворечивых действий одновременно. Далее на примерах показано, как и какие действия выполняют команды микропроцессора TF16.
Кодировка системы команд
В скобках приведено количество тактов, требуемых для выполнения данной команды.
Команды вызова: Сall (3)
Память: запись-чтение (2)
Здесь:
D — источник или приемник данных (регистр T или N). Sreg — выбор сегментного регистра. P — выбор (a1)+ или +(a1).
Mode: Reg: (a1):
- Reg+: +(a1), (a1)+;
- Reg-: -(a1), (a1)-;
- Mem: RSP active. RSP: если Mode=11 (Mem):
- Mem: mem;
- @!: чтение (запись) из стека возвратов;
- @!+-: push (pop) стека возвратов;
- +/-: inc (dec) указателя стека возвратов.
RSP: если Mode11, 4 старших разряда задают смещение от базового регистра.
Примеры:
Работа с 16-разрядным литералом (2/3)
Примеры:
Команда перехода по адресу (2)
Примеры:
Переходы (1/2/3)
Биты 7, 6, 5 и 4 могут принимать значения, указанные в таблице 12.
Примеры:
8-разрядный литерал (1)
Byte literal — беззнаковое число
Примеры:
Математика, сдвиги, стек параметров, return (1/2/3) (табл. 13)
Примеры:
Команды обращения к портам (1)
Чтение-запись осуществляется через аккумулятор t. ADDRESS — номер порта (0-255).
Примеры программирования на TF16
В качестве примеров программирования сначала приведем два примера: первый на Форт-ассемблере, второй на Форте. Драйвер последовательного порта RS232 написан на Форт-ассемблере (табл. 14).
Драйверы Flash-диска написаны на Форте. Они приводятся как пример выполнения Форт-программы (табл. 15).
Пример загрузки и отладки (в данном случае — запуск на исполнение) программы при помощи монитора. Программа написана в среде целевого компилятора ИнфоФорт (табл. 16).
Сравнение производительности процессоров TF16 и i486
В таблице 17 проводится сравнение процессора TF16, реализованного на FPGA фирмы Altera, с процессором i486 фирмы Intel.
Результаты испытаний производительности процессоров
Для сравнения использовались программы, написанные для i486 на языке Турбо Паскаль 5.5 или на языке С для компилятора DJGPP версии 2. Программа для TF16 написана на языке Форт и выполнялась на плате с процессором TF16. Программы для i486 и TF2016 прогонялись на одних и тех же данных и выдавали один и тот же результат вычислений. Время выполнения тестов для испытываемых процессоров приведено в таблице 18.
По результатам сравнения можно сделать следующий вывод: процессор TF16 разработан специально для применения в системах реального времени, с возможностью быстрого переключения контекстов в многозадачном режиме. Стековая архитектура в сочетании с продуманной системой команд обеспечивает реальное высокое быстродействие без использования конвейеров команд и кэшей.
Для удобства пользователей фирма выпустила модуль TF16, внешний вид которого приведен на рис. 16. Модуль представляет собой сборку из микросхем, перечисленных в таблице 19 и устанавливается на основную плату как мезонинный. Такая конструкция позволяет выполнить основную плату меньшего класса точности и снимает все проблемы по отладке и ремонту процессорного узла. Модуль содержит память и вспомогательный микроконтроллер, предназначенный для хранения кодов защиты как для самого модуля TF16, так и для задач пользователя, запускаемых на исполнение в данном модуле. По требованию заказчика модуль TF16 может быть выполнен с контроллером Ethernet 10/100 «на борту» и с программной поддержкой TCP/IP.
Модуль представляет собой микрокомпьютер, который может применяться для различных встроенных систем и способен заменить любые 16-разрядные встроенные микропроцессоры, например, такие, как 386ЕХ.
Заключение
Заканчивая этот обзор, хочу напомнить читателям, почему эта статья называется «Стековые процессоры, или Новое — это хорошо забытое новое». Технология стековых процессоров появилась в нашей стране во время перестройки. В то время это была достаточно новая микропроцессорная архитектура. Но первые отечественные стековые микропроцессоры «вымерли», едва успев родиться, после чего эта технология для многих применений была закрыта. Сказывалось не только отсутствие элементной базы, но в основном отсутствие специалистов. Для молодых инженеров оказалось гораздо проще получить информацию о массовых микроконтроллерах, программируемых на С/С++. С появлением технологии FPGA появилась возможность выполнять системы на кристалле и применять там те процессоры, которые наиболее полно удовлетворяют целям и задачам разрабатываемого проекта. Автор надеется, что данная статья окажется полезной при выборе направления в разработке систем на кристаллах и встроенных систем.