Texas Instruments TMS9900

Материал из Википедии — свободной энциклопедии
Перейти к: навигация, поиск
TMS9900
Центральный процессор
KL TI TMS9900 Black Background.jpg
версия TMS9900JL в керамическом корпусе с позолоченными выводами
Производство: 1976
Производитель: Texas Instruments
Технология производства:
N-MOP, 6 мкм
Разъём: DIP64

Микропроцессор TMS9900, представленный в июне 1976, был одним из первых коммерчески доступных однокристальных 16-битных микропроцессоров. TMS9900 использовался, главным образом, в домашнем компьютере TI-99/4A.

История[править | править исходный текст]

TMS9900 был сконструирован как однокристальный вариант миникомпьютера серии TI-990, аналогично тому, как микропроцессор Intersil 6100 являлся однокристальной версией 12-битного миникомпьютера PDP-8, а микропроцессоры Fairchild Semiconductor 9440 и Data General mN601 являлись однокристальными версиями 16-битного миникомпьютера Data General Nova. TMS9900 отличался тем, что все его компоненты находились в одной микросхеме, в то время как существовавшие на тот момент 16-битные микропроцессоры National Semiconductor IMP-16 или DEC LSI-11 представляли собой набор из нескольких микросхем.

Архитектура[править | править исходный текст]

Особенность архитектуры TMS9900 — отсутствие встроенных регистров общего назначения и хранение их в оперативной памяти. TMS9900 имеет три встроенных 16-битных регистра — счётчик команд (PC), статусный регистр (ST), и регистр указателя рабочего пространства(WP).[1] Регистр WP указывает на начальный адрес в оперативной памяти, начиная с которого хранятся 16 регистров общего назначения процессора (каждый шириной 16 бит). Такая архитектура позволяет выполнять быстрое переключение контекста. Например, при входе в подпрограмму вместо того, чтобы сохранять текущие значения регистров индивидуально, достаточно изменить содержимое регистра рабочего пространства.

При адресации памяти используется порядок байтов от старшего к младшему. TMS9900 — это классическая 16 битная машина с адресным пространством 216 байт (65536 байт или 32768 слов).

В процессоре нет концепции стека и нет регистра указателя стека. Вместо этого существуют инструкции переходов, которые сохраняют счётчик команд в регистр и изменяют регистр рабочего пространства. Имеются 16 аппаратных и 16 программных векторов прерываний, каждый из которых содержит пару значений счётчика программ PC и регистра рабочего пространства WP, так что переключение контекста регистров в момент прерывания выполняется автоматически.

Адресация и система команд[править | править исходный текст]

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

Режимы адресации включают непосредственную (команда содержит операнд), прямую или «символическую» (команда содержит адрес операнда), регистровую (операнд содержится в регистре рабочего пространства), регистровую косвенную (адрес операнда содержится в регистре рабочего пространства) с автоинкрементом или без него, индексную (к адресу операнда в команде прибавляется содержимое регистра рабочего пространства) и адресацию относительно счётчика команд.

Основные двухадресные команды (сложение, вычитание, сравнение, пересылка и т.д.) содержат 2-битное поле режима адресации и 4-битное поле выбора регистра для операнда источника и операнда получателя. В коде операции «символический» режим адресации представлен как индексный с установленным в 0 полем регистра, поэтому 0-й регистр рабочего пространства (WR0) не может быть использован для индексной адресации. В менее часто используемых двухадресных инструкциях, таких как XOR, операнд получатель должен быть регистром рабочего пространства (или парой регистров в случае команд умножения и деления).

Порядок выполнения команд обеспечивается группой из одной команды безусловного и двенадцати команд условного перехода. Адреса переходов задаются относительно счётчика команд со смещением от -128 до +127 машинных слов.

Для вызова подпрограмм используется команда BLWP (Branch and Load Workspace Pointer, перейти и загрузить регистр указателя рабочего пространства), которая загружает новые значения регистров WP и PC, и сохраняет предыдущие значения регистров WP, PC и ST во вновь назначенные регистры 13, 14 и 15. В конце подпрограммы команда RTWP (Return Workspace Pointer, вернуть регистр указателя рабочего пространства) восстанавливает значения регистров WP, PC и ST из регистров 13, 14 и 15. Используя команды BLWP и RTWP возможно осуществлять вложенные вызовы процедур несмотря на отсутствие стека. При этом, однако, программист должен явно назначать корректные области памяти для регистров рабочего пространства.

Система команд также содержит группу команд BL (Branch and Link, перейти и связать), которые сохраняют только регистр PC в регистр 11 и не изменяют регистр WP. В этом случае другая команда BL, используя регистр 11 как адрес перехода, может использоваться для возврата из подпрограммы. При этом вложенные вызовы подпрограмм типа BL невозможны.

TMS9900 имеет необычную и редко используемую команду X (eXecute, выполнить). Эта команда позволяет выполнить другую команду по указанному адресу, не прерывая выполнения программы, то есть, после выполнения команды управление передается на следующий после команды X адрес. Эта команда может использоваться для отладки (в качестве точки останова) и для создания интерпретаторов байт-кода.

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

Реализация[править | править исходный текст]

Цоколевка процессора TMS9900 (64-выводный DIP корпус)

TMS9900 был реализован по N-канальному МОП процессу с кремниевыми затворами,[2] использовал три источника питания напряжением +5, -5 и +12 В и синхронизировался четырёхфазным тактовым сигналом максимальной частотой 3 МГц (длительность цикла 333 нс),[3] обычно формировавшимся генератором тактовых сигналов TIM9904 (также известным, как 74LS362) из опорной частоты 48 МГц.

Самые короткие команды выполнялись восемь тактов или 2,7 мкс (при условии отсутствия внешних циклов ожидания), большинство других требовали от 10 до 14 тактов (3,3—4,7 мкс). Дольше всего выполняющаяся инструкция (DIV) могла требовать до 124 тактов (41,3 мкс).[4]

Процессор был упакован в необычный для того времени 64-выводный корпус типа DIP. Сравнительно большое число выводов позволило раздельно вывести 15 линий шины адреса (так как доступ к памяти осуществляется словами, младший разряд не используется) и 16 линий шины данных без использования мультиплексирования (как сделано, например, в процессоре Intel 8086), сохранив простоту подключения внешней памяти. Вопреки используемому многими производителями соглашению, TI обозначила старшие разряды шин адреса и данных как «A0» и «D0». Все внутренние шины и АЛУ являются 16 битными.

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

Система аппаратных прерываний поддерживает 4-разрядный вход приоритета прерывания. Чтобы прерывание было выполнено, значение на этом входе должно быть больше, чем уровень приоритета, установленный в статусном регистре (биты 12-15). Дополнительно, вход /LOAD обеспечивает возможность немаскируемого прерывания с выделенным вектором.[5]

Процессор TMS9900 также содержит 16-битный сдвиговый регистр (CRU) созданный для взаимодействия с устройствами ввода-вывода. Специальные команды процессора позволяют адресовать до 4096 однобитных портов ввода-вывода, а также выполнять операции ввода-вывода над группами от 1 до 16 портов.

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

Использование[править | править исходный текст]

TMS9900 применялся в домашних компьютерах TI-99/4 и TI-99/4A. К сожалению, для сокращения стоимости производства, компания Texas Instruments сделала напрямую доступной процессору TMS9900 быструю оперативную память объёмом всего 128 16-битных слов. Остальная память, объёмом 16 Кб, была 8-битной и доступна процессору только косвенно, через контроллер дисплея, что значительно снизило производительность TI-99/4.

TMS9900NL в пластиковом корпусе типа DIP

Позже Texas Instruments разработала более мощный и совершенный процессор TMS99000, использовавшийся в миникомпьютере 990/10A для снижения стоимости. К сожалению, ко времени выхода 990/10A на рынок стал очевиден закат эры миникомпьютеров.

Варианты[править | править исходный текст]

Модель Описание
TI990/9 Ранняя многокристальная версия процессора для миникомпьютеров, 1974
TI990/10 Многокристальная версия для миникомпьютеров, 1975
TI990/12 Многокристальная версия, более быстрая чем 990/10.
TMS9900 Однокристальная версия, 1976. Использовалась в компьютере TI-99/4(A).
TMS9940 Микроконтроллер с 2 Кб ПЗУ, 128 байт ОЗУ, декрементатором, шиной CRU, 1979
TMS9980, TMS9981 8-битные версии TMS9900
TMS9985 TMS9940 с 8 Кб ПЗУ, 256 байт ОЗУ, и 8-битной внешней шиной, около 1978 (не был выпущен)
TMS9989 Улучшенный вариант 9980, использовался в военной технике.
TMS9995 Улучшенный вариант TMS9985, без ПЗУ. Использовался в прототипе TI-99/8 и компьютере Geneve.
TMS99000 Улучшенный однокристальный вариант 9900, предназначенный для замены 990/10, 1981
TMS99105 Возможность эмуляции дополнительных инструкций
TMS99110 Улучшенный 99105

Ссылки[править | править исходный текст]

  1. TMS9900 Microprocessor Data Manual. — Texas Instruments Inc., 1976.
  2. TMS9900 Microprocessor Data Manual. — Texas Instruments Inc., 1976.
  3. TMS9900 Microprocessor Data Manual. — Texas Instruments Inc., 1976.
  4. TMS9900 Microprocessor Data Manual. — Texas Instruments Inc., 1976.
  5. TMS9900 Microprocessor Data Manual. — Texas Instruments Inc., 1976.

Внешние ссылки[править | править исходный текст]