4.5 Архитектура HARRIS RTX 2000
==78
4.5.1 Введение
RTX 2000 фирмы Harris Semiconductor - интегрированный 16-разрядный процессор, ведущий своё происхождение от NC4016 . Кроме собственно процессора, кристалл включает стековую память, аппаратный умножитель и счётчики/таймеры.
4.5.2 Блок-схема
На рис. 4.8 показана блок-схема RTX 2000. Основное отличие от NC4016 - наличие внутри кристалла некоторых дополнительных ресурсов помимо собственно вычислительного ядра, как-то: 256-элементного стека возврата, 256-элементного стека данных, однотактного умножителя 16x16, трёх счётчиков/таймеров и векторного приоритетного контроллера прерываний. Все дополнительные модули микросхемы кроме стеков подключены через внутреннюю шину ввода-вывода ( именуемую G-bus в NC4016 и ASIC-Bus в RTX 2000 ).
Рис. 4.8 Блок-схема RTX 2000
Дополнительными возможностями, по сравнению с оригинальной разработкой Novix, являются: возможность перестановки байтов слова для работы с 8-разрядными данными, способность совершать условные переходы между соседними блоками памяти и генерацию прерывания по переполнению/антипереполнению стека.
Ещё одним нововведением RTX 2000 является внутрипроцессорная логика управления страничной памятью. Это позволяет раздвинуть границы памяти за предел 32K слов, устанавливая значения регистра кодового сегмента, сегмента данных, базового адреса памяти пользователя, его страничного регистра ( чтобы иметь возможность перемещать область переменных пользователя ) и индексного регистра ( для расширения значения адреса в стеке возврата ). Так как стек возврата хранит полный 21-битный адрес, при соблюдении специальной последовательности инструкций дальнего вызова, которая сохраняет полный адрес в одной ячейке стека возврата, подпрограммы можно располагать в любом месте адресного пространства.
4.5.3 Обзор системы команд
Набор инструкций RTX 2000 функционально очень похож на набор NC4016, но заметно отличается по формату и заслуживает отдельного описания.
Рис. 4.9a показывает формат команды вызова подпрограмм. Старший бит инструкции установлен в нуль, а остальные хранят 15-разрядный адрес подпрограммы, ограничивая программу 32K слов.
Рис. 4.9a Формат инструкций RTX -- вызов подпрограмм
Рис. 4.9b раскрывает формат инструкции условного перехода. Бит_11 и бит_12 выбирают переход по равенству регистра T нулю ( с условным и безусловным удалением элемента из стека данных ), безусловный переход, а так же декремент и переход по равенству нулю регистра INDEX для организации циклов. Биты 0..8 определяют девять младших разрядов адреса назначения, а бит_9 и бит_10 управляют увеличением/уменьшением шести его старших разрядов, позволяя перемещаться внутри 512-байтной страницы, заходить в две смежные или совершать переход по адресу в нулевой странице.
Рис. 4.9b Формат инструкций RTX -- условный переход
==79
==80
==81
==82
Рис. 4.9c показывает формат вычислительной директивы. Биты 0..3 управляют режимом работы выходного сдвигового регистра АЛУ.
Рис. 4.9c Формат инструкций RTX -- операции АЛУ
Бит_5 активизирует процедуру возврата из подпрограммы. Это позволяет комбинировать возврат с предшествующими ему арифметическими операциями, что в большинстве случаев приводит к «бесплатному» ( то есть без дополнительных тактов ) выходу из подпрограммы.
Биты 8..11 выбирают функцию АЛУ, а бит_7 инвертирует результат.
Рис. 4.9d раскрывает формат многошаговых вычислительных инструкций, очень похожий на формат обычных операций АЛУ. Биты 0..3 выбирают режим работы сдвигового регистра, бит_5 разрешает возврат из подпрограммы, а биты 9..11 выбирают функцию АЛУ.
Рис. 4.9d Формат инструкций RTX -- операции АЛУ ( многошаговый режим )
В многошаговом режиме бит_8 выбирает Multiply/Divide или Square_Root регистр, а бит_6 и бит_7 управляют специальными многошаговыми операциями. Основное назначение этого режима - повторяющиеся стадии умножения и деления.
Формат инструкций обращения к памяти представлен на рис. 4.9e . Эти команды требуют двух тактов: один на выборку кода операции и один на саму операцию с памятью. Адрес назначения всегда берётся из регистра T . Бит_12 выбирает режим доступа к байту или слову. Так как память в RTX 2000 адресуется пословно, этот бит выбирает «младшую/старшую половину» или «полное» слово.
Рис. 4.9e Формат инструкций RTX -- обращение к памяти
==83
Бит_6 и 7 указывают тип операции: чтение или запись и дополнительные управляющие опции. Биты 0..4 задают константу, которая может быть прибавлена или отнята от содержимого T при автоинкременте или автодекременте адреса. Биты 8..11 выполняют ту же функцию, что и аналогичные биты в формате инструкции АЛУ.
На рис. 4.9f показан формат вспомогательной инструкции. Она используется при работе с 32 словами перемещаемой области пользователя и экономит время на сохранение адреса в стеке перед обращением к памяти. Может использоваться для обмена между регистрами внутри процессора, сохранения в стеке короткой ( 5 бит ) константы за один такт или длинной ( 16 бит ) константы за два такта. Биты 8..11 выполняют ту же функцию, как и в формате инструкции АЛУ.
Рис. 4.9f Формат инструкций RTX -- вспомогательные инструкции
RTX 2000 специально проектировался для исполнения языка FORTH. Декодированный формат команд позволяет упаковывать в одну инструкцию цепочки слов FORTH. Отдельные слова FORTH и их последовательности, исполняемые RTX 2000, перечислены в табл. 4.3a , 4.3b , 4.3c .
4.5.4 Возможности архитектуры
Все примитивные операции, кроме обращения к памяти и работы с длинными константами выполняются в RTX 2000 за один такт.
Кроме того, RTX 2000 позволяет упаковывать некоторые последовательности слов FORTH в одну инструкцию. Значительные возможности здесь даёт бит возврата, позволяющий комбинировать выход из подпрограммы с операциями АЛУ.
4.5.5 Реализация и области применения
RTX 2000 выполнен по 2.0µm КМОП технологии стандартных ячеек, работает с тактовой частотой до 10 MHz и упакован в 84 выводной корпус PGA. Основным преимуществом выбранной технологии является возможность комбинирования ячеек оперативной памяти и вычислительной логики, что позволяет поместить на кристалл стеки данных и возврата.
В связи с тем, что большую часть инструкций, включая условные переходы и вызова подпрограмм, RTX 2000 выполняет за один такт, большое значение приобретает время между началом цикла ( выдачей адреса ) и готовностью памяти к считыванию данных ( следующей инструкции ). Оно примерно равно половине машинного цикла, то есть программная память должна работать в два раза быстрее, чем тактовая частота процессора.
Несмотря на то, что в основе RTX 2000 лежит конструкция NC4016, процессор был существенно улучшен и не имеет аппаратных дефектов предшественника.
RTX 2000 предназначен для рынка высокопроизводительных 16-разрядных процессоров. Реализация по полузаказной технологии позволяет производить для отдельных областей применения специализированные версии кристалла. Возможные области использования включают: лазерные принтеры, графические дисплеи, устройства передачи данных, системы распознавания символов, обработки сигналов и спецприменения.
==84
Табл. 4.3(a) Система команд RTX 2000 -- примитивы FORTH ( см. Приложение _B , табл. B.1 )
: | 0< | @ | LIT | SWAP |
; | 0BRANCH | AND | NOP | XOR |
! | 1+ | BRANCH | OR | |
+ | 1- | DROP | OVER | |
- | 2* | DUP | R> | |
0 | >R | I | R@ |
==85
Информация для этого раздела взята из «RTX 2000 Data Sheet» ( Harris 1988a ) и «RTX 2000 Instruction Set Manual» ( Harris 1988b ).
4.5.6 Проектирование по технологии стандартных ячеек
Процессор RTX 2000 фирмы Harris получил большинство своих преимуществ благодаря использованию при разработке технологии стандартных ячеек , а не вентильной матрицы. Разница между этими технологиями состоит в том, что в случае вентильной матрицы разработчик меняет связи в регулярной структуре логических вентилей, уже имеющихся на кремниевом кристалле, а в технологии стандартных ячеек он работает с библиотеками логических функций, которые могут располагаться в любом месте кристалла, так как предопределённой схемы размещения нет. Матричные кристаллы со специальными областями памяти только начинают использоваться, и гибкость, предоставляемая технологией стандартных ячеек, несравнима c вентильным подходом.
==86
Итак, главное отличие RTX 2000 от NC4016 состоит в том, что благодаря новой технологии на кристалл RTX 2000 добавлена стековая память и появилась возможность уточнять специализацию процессора, используя вычислительное ядро как одну большую «стандартную ячейку».
В дополнение к возможностям стандартных моделей семейства RTX пользователи могут задействовать прикладные аппаратные ресурсы. В их число входят: порты последовательной связи, схемы сжатия данных и другая аппаратура, которая в противном случае должна подключаться к кристаллу процессора снаружи. Технология стандартных ячеек позволяет пользователю иметь индивидуальный вариант кристалла, сделанный под его требования. Плотность упаковки превышает 2 um, что позволяет добавить на кристалл заметный объём постоянной и оперативной памяти.
Табл. 4.3(b) Система команд RTX 2000 -- Составные слова FORTH
inv shift | DDUP ! | OVER inv shift |
lit inv | DROP inv shift | OVER SWAP op shift |
lit SWAP inv | DROP lit inv | OVER SWAP ! inv |
lit SWAP op | DROP nn inv | OVER SWAP ! nn |
nn inv ( short literal ) | DROP DUP inv shift | OVER SWAP @ op |
nn OVER op | DUP inv shift | SWAP inv shift |
nn SWAP op | DUP lit op | SWAP DROP inv shift |
op shift | DUP @ nn ROT op | SWAP DROP @ nn |
! inv | DUP @ SWAP | SWAP DROP DUP inv shift |
! nn | DUP nn G! inv | SWAP DROP DUP @ nn ROT op |
@ inv | DUP U! inv | SWAP DROP DUP @ SWAP |
@ nn | DUP U@ op | SWAP OVER op shift |
@ SWAP inv | nn G! inv | SWAP OVER ! |
@ SWAP op | nn G@ inv | U! inv |
?DUP ?BRANCH | nn G@ DROP inv | U@ op |
DDUP inv shift | nn G@ OVER op | U@ SWAP inv |
DDUP nn SWAP op | nn G@ SWAP op |
Обозначения:
- inv
- дополнение до единицы ( инверсия ) или «NOP» ( пустая операция )
- lit
- длинный ( 16 бит ) литерал
- nn
- короткий ( 5 бит ) литерал
- op
- операция АЛУ
- shift
- выбор сдвига или «NOP»
Табл. 4.3(c) Система команд RTX 2000 -- Слова специального назначения
==86