Национальный полупроводниковый завод ПАСЕ
Эта статья в значительной степени или полностью опирается на один источник . ( октябрь 2022 г. ) |
National Semiconductor компании IPC-16A PACE , сокращение от «Элемент обработки и управления», был первым коммерческим однокристальным 16-битным микропроцессором , анонсированным в конце 1974 года. [1] Это была однокристальная реализация пятичиповой архитектуры IMP-16 начала 1973 года , которая, в свою очередь, была вдохновлена миникомпьютером Data General Nova . К базовому IMP-16 компания PACE добавила новый рабочий режим, «байтовый режим», который был полезен для работы с 8-битными данными, такими как текст ASCII .
Реализованный в pMOS , как это было принято в ту эпоху, PACE требовал трех напряжений питания и внешнего тактового сигнала с достаточным сигналом для управления внутренней логикой. Обычно это обеспечивается чипом STE. Большинству систем PACE также требовался заушный чип для преобразования сигналов более высокого внутреннего напряжения в уровни TTL , используемые остальной частью системы. Его мультиплексированный адрес и выводы данных также требовали дополнительной логики.
Хотя у National Semiconductor были соглашения о вторичном производстве с Signetics и Rockwell Semiconductor , ни одна из компаний не разработала дизайн PACE. За PACE последовал INS8900 , который имел ту же архитектуру, но был реализован на nMOS . Эта версия упростила электрический интерфейс, а также исправила несколько ошибок в логике PACE и увеличила скорость примерно на 50%. [2] К тому времени, когда он стал доступен, появились более производительные 16-битные процессоры, и компания начала приуменьшать продажи этой линейки.
Описание
[ редактировать ]Физический
[ редактировать ]
PACE был упакован в 40-контактный двойной рядный корпус (DIP), первоначально из керамики. Поскольку была основана на логике pMOS серия PACE , ей требовалось три напряжения питания: +5 В (V SS , контакт 20), +8 В (V BB , контакт 23) и -12 В в качестве уровня земли (V GG , контакт 29). Уровень +8 В обычно обеспечивался с помощью простой электроники, питаемой от линии +5 В, что уменьшало сложность источника питания .
Чип обычно управлялся с помощью внешнего тактового сигнала с частотой 750 наносекунд (1,33 МГц) с использованием чипа системного элемента синхронизации, STE, для генерации сигналов необходимой мощности. [2] Поскольку эти сигналы также использовались внешними устройствами, тактовые сигналы находились на уровне TTL , +5 В, в отличие от большинства выводов, которые имели напряжение +8 В. [3]
Поскольку внешние сигналы подавались с напряжением +8 В, взаимодействие системы с обычными устройствами, работающими на уровнях TTL, было непростой задачей. По этой причине системы, использующие PACE, обычно включают элемент двунаправленного приемопередатчика, BTE. В сочетании с PACE это позволило создать полный набор сигналов шины с напряжением TTL, которые затем можно было легко использовать для легкого взаимодействия с большинством современных устройств, таких как SRAM . [4]
Чтобы разместить 16-битные адреса и данные на 40-контактном DIP, один и тот же набор из 16 контактов был мультиплексирован между представлением адреса и чтением и записью данных в отдельных циклах. Для этого требовалось, чтобы внешние устройства, такие как основная память , фиксировали адрес между циклами. [5]
Внутренний дизайн
[ редактировать ]
|
IMP-16 компании National Semiconductor был создан на основе Data General Nova, но имел ряд незначительных отличий в своей ISA. Среди них была обработка четырех доступных пользователю 16-битных регистров процессора . В Nova первые два регистра были аккумуляторами общего назначения и использовались для большинства основных арифметических и логических операций, а вторые два могли использоваться в качестве операндов или индексных регистров . IMP-16 последовал этой модели. [6] но PACE изменил ряд инструкций, чтобы они работали только с первым аккумулятором AC0. [2]
В оригинальной Nova стек не был реализован аппаратно, хотя он был добавлен в более поздних моделях Nova 3, начиная с 1975 года. PACE реализовал другой стиль стека с использованием нового регистра указателя стека (SP), который автоматически увеличивался и уменьшался при PUSH
и PULL
инструкции встречались. Счетчик программ (ПК) автоматически помещался или извлекался в стек во время вызовов и возвратов подпрограмм. Дополнительные инструкции позволяли также перемещать и извлекать четыре регистра, а также регистр состояния и флага управления. [7]
ЦП имел десять 16-битных ячеек памяти, в которых хранились самые верхние значения стека. Уникальная особенность PACE заключается в том, что когда стек заполняется и предпринимается еще одна попытка отправки или когда он пуст и предпринимается попытка извлечения, прерывание генерируется . Обычно это используется для вызова кода обработчика прерываний , который копирует некоторые или все значения из стека в основную память , а затем очищает стек. Это позволяет использовать внутренние регистры стека как кэш более крупного стека, основанного на памяти. [7]
Регистр состояния и флага управления также имел ширину 16 бит. Биты 0 и 15 установлены в 1 и обычно не используются, тогда как остальные четырнадцать активно используются. Сюда входили общие флаги, такие как CRY, указывающие, что сложение привело к переносу, OVF, если оно переполнилось, и LINK, который указывал, что бит необходимо сдвинуть во время инструкций сдвига и поворота. [7] LINK обычно обрабатывается с использованием флага переноса в большинстве конструкций процессоров микрокомпьютеров, но наличие двух отдельных флагов более распространено в миникомпьютерах , где имеется достаточно доступных битов состояния, поскольку это позволяет отслеживать их отдельно во время серии сдвигов/поворотов и сложения. инструкции, что представляет собой обычную последовательность. Флаг IN EN, обычно равный 1, позволяет включать или отключать прерывания. [8] Одной из уникальных особенностей PACE, отсутствующей в IMP-16, является флаг BYTE. Когда этот параметр включен, доступ к данным осуществляется в 8-битных словах вместо 16. Это позволяет упростить обработку 8-битных данных, таких как текст ASCII . [8]
Остальные биты SCF в основном отображаются непосредственно на выводах снаружи чипа. Биты с 1 по 5 — это флаги от IE1 до IE5, которые используются для приоритетного управления прерываниями. IE1 устанавливается только в случае переполнения стека. Остальные четыре можно использовать для отключения отдельных линий прерываний или, что чаще, для создания двоичного значения от 0 до 15, которое внешние устройства используют для определения, следует ли им выполнять прерывание. Например, если значение этих флагов в сумме составляет 5, любое устройство со значением прерывания 5 или ниже (1 — наивысший приоритет) может выразить это, устройство, желающее вызвать более низкий приоритет, скажем, 7, получает команду чтобы удержать его. [8]
Аналогично, флаги SCF с F11 по F14 используются в качестве выходов для обеспечения прямого управления внешними устройствами. Например, их можно использовать для указания того, что устройство 6 должно представить данные на шину, что оно может сделать путем отображения 128 байт внутреннего буфера на разделенную базовую страницу, упомянутую ранее. [8]
Режимы адресации и форматы команд
[ редактировать ]В отличие от большинства микрокомпьютеров того времени, PACE не использовал инструкции переменной длины, все инструкции использовали 16 бит. 16-битные слова были разбиты на ряд битовых полей формата инструкций. Старшие шесть битов, с 10 по 15, содержали код операции , а биты 8 (R для относительного) и 9 (X для индекса) указывали режим адресации. Остальные восемь битов инструкции обычно содержат 8-битный адрес. [9] Это означало, что произвольную ячейку памяти нельзя было указать напрямую; несколько разных систем использовались для создания необходимого 16-битного адреса из 8-битного значения. Всего было 43 инструкции и 45 опкодов, по два опкода на каждый. LD
и ST
(см. ниже). [10]
Когда X было равно нулю, биты адреса представляли прямой адрес в памяти. Если R также установлен на ноль, адрес находился внутри базовой страницы. [а] обычно первые 256 байт памяти. Установка R в 1 и X в 0 использовала оставшиеся восемь битов в качестве смещения от ПК. Установка бита X в 1 включала индексацию, используя восемь битов в дополнение к значениям в индексных регистрах, при R в 0 это добавляло значение в AC2, а установка его в 1 вместо этого использовала AC3. [9]
Обычно базовой страницей были первые 256 байт памяти, но когда BPS
был утвержден pin, вместо этого он разделил базовую страницу между первыми и последними 128 байтами. [9] Идея заключалась в том, что внешние устройства будут отображаться в этих верхних ячейках памяти и смогут легко отслеживать операции записи и чтения, проверяя адрес на шине и проверяя, все ли девять старших битов равны единицам. Как ни странно, нет инструкции по изменению настроек BPS
вместо этого большинство систем подключали контакт к одному из контактов состояния, а затем использовали инструкции по изменению статуса для управления им. [11]
Косвенное обращение в ПАСЕ было ограниченным, чему способствовало в первую очередь LD
и ST
инструкции, которые загружают и сохраняют значения между регистрами и памятью. Для указания косвенной адресации использовались отдельные коды операций, а не использование битов указания адресации. При использовании адрес создавался как обычно, добавляя восемь битов адреса к базовой странице или ПК. Затем он прочитает 16-битное значение в этой ячейке памяти, а затем загрузит или сохранит его по этому адресу. В сочетании с флагом X 8-битное смещение сначала добавляется или вычитается из указанного индексного регистра. [12]
Другим пользователем косвенной адресации был ISZ
и DSZ
. Они увеличивали или уменьшали значение в памяти и обычно использовались для реализации циклов, поэтому косвенная адресация была обычным явлением, поскольку управляющая переменная для цикла могла располагаться вне блока кода. Другая интересная особенность этих инструкций заключалась в том, что (в любом режиме адресации) если значение было изменено на ноль, SK
ip инструкция была вызвана. Это позволило выйти из циклов без каких-либо дополнительных тестов; обычно последней инструкцией в цикле будет JMP
обратно в начало цикла, но когда значение достигнет 0, оно автоматически SK
мимо этого JMP
и продолжить. [13]
Этот стиль циклического управления распространен в миникомпьютерах, но не в микрокомпьютерах. В специализированных микросхемах такого рода операции обычно выполняются с помощью нескольких инструкций: одна из них сравнивает индекс цикла с заданным значением (в данном случае с нулем), а затем возвращается обратно к началу, если условие не выполняется. Присущая PACE возможность пропуска нуля была общей особенностью мини-машин, которая повышала производительность цикла за счет отсутствия отдельного теста. Если это нецелесообразно, увеличение или уменьшение может установить смещение на ноль, чтобы избежать срабатывания этой функции. [13]
INS8900
[ редактировать ]
Постоянное совершенствование производства полупроводников в начале 1970-х годов привело к появлению концепции логики NMOS , или nMOS. Этот тип логики имеет то существенное преимущество, что его внутренние транзисторы не требуют большого напряжения на слое подложки, как pMOS. На практике это означает, что nMOS-процессор может работать только с двумя входными напряжениями, а не с тремя, а положительный источник питания можно установить на +5 В, что упрощает взаимодействие с ТТЛ-схемами. [14]
Компания National Semiconductor воспользовалась этой технологией, переработав PACE в nMOS для создания INS8900. Новая версия сохранила большую часть исходной компоновки микросхемы, хотя, что неудивительно, некоторые контакты питания изменили свои входы; исходный +5V V SS теперь был заземлен (GND), V BB изменился с -8 на +8V, а бывший -12V V GG стал +12V V DD . По неизвестным причинам два других контакта не изменили функцию, но изменили название; CLK стал V CC , а NCLK стал CLKX. [3]
Самым важным изменением с точки зрения использования было то, что различные сигнальные контакты теперь работали с напряжением TTL, что позволяло им напрямую взаимодействовать с внешними системами, такими как память. Это изменение не решило проблему необходимости фиксации адреса на общей шине данных/адресов, но значительно упростило такую фиксацию. Вместо того, чтобы требовать относительно сложного заушного чипа, эту задачу теперь можно было выполнить с помощью обычных TTL-компонентов, хотя National Semiconductor предложила для этой цели свои собственные INS8208 и INS8212. [15] Шину теперь можно было реализовать с помощью одного INS8208, буферизующего управляющие сигналы, указывающие, находится ли шина в режиме адреса или данных (среди прочего), еще двух INS8208 для каждого буфера 8-битных данных и двух INS8212 для каждой защелки 8. -биты адреса. [16]
Еще одно изменение, ставшее возможным благодаря снижению нагрузки на nMOS, заключалось в том, что тактовые сигналы больше не требовали такой большой мощности. Это устранило необходимость в STE, который можно было заменить подходящим кристаллом и одним инвертором 7404 , доступным от многих производителей. [16] Поскольку внешний тактовый сигнал больше не был мощным, требовался только один тактовый вход, бывший NCLK, теперь переименованный в CLKX. Бывшая вторая фаза теперь генерировалась на борту ЦП. Эти изменения также позволили системе работать на более высокой скорости: был рекомендован кристалл с частотой 2 МГц, что довольно значительно больше, чем у PACE 1,33. Это увеличило время выполнения инструкций до 8–20 микросекунд. [2]
Другие изменения включали ряд исправлений проблем, обнаруженных в PACE. Примечательной среди них была проблема с прерыванием, которое запускалось при заполнении стека. В ПАСЕ это не сработало должным образом; если прерывание прибыло точно в то же время, что и NIR3 или NIR5, неправильный код прерывания будет вызван из местоположения 0, а не из 2. National Semiconductor предложила либо не использовать эту функцию, либо разместить один и тот же адрес в обоих местах, чтобы они всегда вызвать тот же код, который затем определит, что на самом деле произошло. [17] Аналогичные проблемы возникали, когда прерывание уровня 0 возникало в течение 12 циклов после других прерываний, что приводило к вызову неправильного кода. [18] Все эти проблемы были решены в 8900. [17]
Производительность
[ редактировать ]Хотя PACE работал на относительно высокой для того времени тактовой частоте, архитектура набора команд (ISA) была реализована с использованием микрокода , а мультиплексированная шина требовала двух циклов для каждого доступа к памяти. В результате выполнение типичной инструкции занимало от 12 до 30 микросекунд, что примерно соответствовало скорости современных 8-битных процессоров, таких как Intel 8080 . [2] Это по-прежнему давало преимущество при работе с большими данными, например, в библиотеке с плавающей запятой , поскольку одна инструкция могла обрабатывать вдвое больше данных за одну операцию. [4]
Примечания
[ редактировать ]- ^ известен как нулевая страница В некоторых системах, например MOS 6502, .
Ссылки
[ редактировать ]Цитаты
[ редактировать ]- ^ https://www.cpu-world.com/CPUs/PACE/index.html.
- ^ Jump up to: а б с д и Абрамовиц и др. 1981 , с. 1.1.
- ^ Jump up to: а б Абрамовиц и др. 1981 , с. 1.10.
- ^ Jump up to: а б Абрамовиц и др. 1981 , с. 1.2.
- ^ Абрамовиц и др. 1981 , с. 1.3.
- ^ Абрамовиц и др. 1981 , с. 1.4.
- ^ Jump up to: а б с Абрамовиц и др. 1981 , с. 1,5.
- ^ Jump up to: а б с д Абрамовиц и др. 1981 , с. 1.9.
- ^ Jump up to: а б с Абрамовиц и др. 1981 , с. 1.6.
- ^ Абрамовиц и др. 1981 г. , Таблица 1.2.
- ^ Абрамовиц и др. 1981 , с. 1.7.
- ^ Абрамовиц и др. 1981 , стр. 1,8–1,9.
- ^ Jump up to: а б Абрамовиц и др. 1981 , с. 1.24.
- ^ Кричлоу, Д.Л. (2007). «Воспоминания о масштабировании МОП-транзисторов» . Информационный бюллетень Общества твердотельных схем IEEE . 12 (1): 19–22. дои : 10.1109/N-SSC.2007.4785536 .
- ^ Абрамовиц и др. 1981 , с. 2.
- ^ Jump up to: а б Абрамовиц и др. 1981 , с. 1.4, рисунок 1.2.
- ^ Jump up to: а б Абрамовиц и др. 1981 , с. 1.22.
- ^ Абрамовиц и др. 1981 , с. 1.23.
Библиография
[ редактировать ]- IPC-16A PACE , Технический паспорт National Semiconductor, Bitsavers (06.01.2018)
- Абрамовиц, Боб; Энгер, Дженис; Ингрэм, Кертис; Джейкобсон, Сюзанна; Макгуайр, Патрик (1981). Справочник Осборна по 16-битному микропроцессору . Осборн/МакГроу-Хилл. ISBN 0-931988-43-8 .