Национальный полупроводник SC/MP
Общая информация | |
---|---|
Запущен | апрель 1976 г |
Общий производитель | |
Производительность | |
Макс. процессора Тактовая частота | от 1 МГц до 4 МГц |
Ширина данных | 8 бит |
Ширина адреса | 16 бит |
Физические характеристики | |
Упаковка |
|
National Semiconductor, компании SC/MP (произносится как Scamp ) что означает «Простой экономичный микропроцессор» , представляет собой ранний 8-битный микропроцессор , который стал доступен в апреле 1976 года. Он был разработан, чтобы обеспечить возможность реализации систем с минимальным количеством дополнительных вспомогательных микросхем. . SC/MP включал в себя шлейфовый управляющий вывод, который позволял до трех SC/MP совместно использовать одну основную память для создания многопроцессорной системы или действовать в качестве контроллеров в системе с другим основным центральным процессором (ЦП). За время существования было выпущено три версии: SCMP-1–3, две последние также известны как INS8060 и INS8070 .
Чтобы снизить стоимость, система использовала последовательный арифметико-логический блок (АЛУ) и, таким образом, была значительно медленнее, чем современные разработки, такие как Intel 8080 или MOS 6502 , которые имели параллельные АЛУ. Еще одна странность заключалась в том, что программный счетчик мог обращаться только к нижним 12 битам 16-битного адреса, а верхние 4 бита приходилось устанавливать с помощью специальных инструкций. В результате инструкции обращались к основной памяти как к шестнадцати «страницам» по 4 КБ, а для доступа к памяти за пределами этих страниц требовалось несколько инструкций. [а]
Сочетание низкой скорости и страничной памяти ограничивало его привлекательность за пределами рынков встраиваемых систем, на которые он был нацелен, и на этом рынке он конкурировал с Fairchild F8 , имевшим ряд полезных дополнительных функций. Система использовалась сравнительно мало.
Дизайн
[ редактировать ]Регистры NS SC/MP | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
АЛУ и главные регистры
[ редактировать ]Арифметико -логическое устройство (АЛУ) было аккумуляторным и имело один 8-битный аккумулятор переменного тока. Второй 8-битный регистр «Расширение» или E можно использовать в качестве резервного для переменного тока. Большинство инструкций не могли получить прямой доступ к E; например, нельзя было загрузить данные из памяти непосредственно в E. Вместо этого значение AC можно прочитать из E или поменять местами AC и E. E также может использоваться в качестве исходного значения для семи логических/арифметических операций, поддерживаемых АЛУ. Если бы E не использовался для других операций, его также можно было бы использовать аналогично зеркальным регистрам, которые можно увидеть в таких конструкциях, как Zilog Z80 , при этом E действовал бы как быстрый способ сохранить значение AC во время прерывания . [1]
Основная цель E заключалась в том, чтобы выступать в качестве буфера для встроенной системы последовательного ввода-вывода . [2] Это управлялось инструкцией SIO, бит которой сдвигал младший бит в E на защелку , которая была подключена к выводу SOUT процессора. Таким образом, повторные вызовы SIO по одному выдавали на выход биты 8-битного значения E или обращали эту операцию для чтения с вывода SIN. [3] После того, как полное 8-битное значение было прочитано или записано, это значение можно было отправить в память, заменив его на A и затем загрузив или сохранив A в памяти. [1] E также можно использовать в качестве источника для логических операций на AC, например, можно считать байт состояния из последовательного порта, а затем И это значение с маской в AC, чтобы проверить различные биты состояния, считанные из внешнего порта. устройство. [4]
Отдельный регистр состояния был 8-битным. Три младших бита, от 0 до 2, были подключены непосредственно к контактам, что позволяло легко проверить состояние внешнего устройства. [1] Еще два контакта, Sense A и B, были подключены к битам 4 и 5. Sense A обычно использовался для обслуживания прерываний (подробности см. ниже). Прерывания можно отключить, установив бит 3, разрешение прерываний (IE) на 0 с помощью инструкции отключения прерываний, DINT, и разрешив их с помощью IEN, или переместив значение в A и обратно и манипулируя им там. Биты 6 и 7 представляли собой обычные флаги переполнения и переноса, как это наблюдается в большинстве процессоров. [5]
Адресация и индексные регистры
[ редактировать ]Как и большинство 8-битных микропроцессоров того времени, SC/MP основан на 16-битном адресе и 8-битной шине данных . Чтобы уменьшить количество контактов, внешняя адресная шина содержит только 12 контактов, 4 из которых используются совместно с шиной данных для создания полного 16-битного адреса. [2] Внутренний счетчик программы имеет ширину двенадцать бит, и существуют отдельные инструкции для установки старших четырех бит путем копирования 8-битного значения в старший байт. Это обеспечивает карту памяти из шестнадцати четырехкилобайтных страниц, и программный код не может ссылаться на код или непосредственные данные или данные, относящиеся к ПК, за пределами своей собственной страницы. [6] Таким образом память организована в виде 16 страниц по 4 КБ каждая. Это приводит к любопытству дизайна; когда счетчик программ достигает конца страницы, он не переходит на следующую страницу, а возвращается к началу текущей страницы. [2]
Это было дополнительно ограничено двухбайтовым форматом инструкций, в котором один байт использовался для кода операции , а второй — для указания смещения между -128 и +127, которое добавлялось к значению в регистрах процессора для получения полного 16-байтового значения. битовый адрес. Например, адрес может относиться к ячейке в памяти, говоря, что это +10 ячеек от значения в программном счетчике или +10 от значения в одном из 16-битных индексных регистров . Чтобы получить доступ к ячейке за пределами этого диапазона, адрес должен был быть сохранен в одном из индексных регистров, а затем смещение было установлено в ноль. [6] Поскольку регистры 16-битные, а аккумулятор, загружающий значения, 8-битный, для установки полного адреса потребовалось несколько инструкций. [7]
Поскольку индексы имели решающее значение для модели адресации, SC/MP включал четыре индексных регистра: «регистры указателей» от PR0 до PR3. PR0 был счетчиком программ и обычно не использовался пользовательскими программами. По соглашению PR1 обычно использовался как указатель на ПЗУ, PR2 на ОЗУ, а PR3 использовался для хранения адреса во время прерываний и вызовов подпрограмм . [5] У SC/MP не было стека , в котором обычно хранились возвращаемые значения в большинстве современных проектов. Программам приходилось сохранять адреса возврата с явным кодом. [7]
Существовало четыре основных режима адресации: относительно ПК, индексированный, немедленный (что означает константу во втором байте инструкции, а не смещение) и автоматический индекс. Адресация относительно ПК фактически была такой же, как и индексированная, с выбором PR0 в качестве индексного регистра. [6]
Автоиндексация используется для облегчения построения циклов. Если смещение меньше нуля, содержимое регистра указателя уменьшается на величину смещения перед тем, как содержимое эффективного адреса будет выбрано или сохранено. Если смещение равно или больше нуля, содержимое регистра указателя используется в качестве эффективного адреса, а содержимое регистра указателя увеличивается на смещение после выборки или сохранения содержимого эффективного адреса. Это устраняет необходимость в отдельной инструкции для изменения значения в регистре, поэтому можно сохранить начальное значение блока данных в памяти в PR, а затем перебирать все данные, вызывая одну инструкцию. [6] Если смещение отрицательное, оно выполняет уменьшение перед доступом к конечному значению, если оно положительное, оно выполняет постинкремент. [7]
Обработка прерываний
[ редактировать ]В систему включена автоматическая обработка прерываний на линии Sense A. Когда получено прерывание и IE имеет высокий уровень (включен), перед началом получения следующей инструкции система очищает IE, чтобы предотвратить другое прерывание, а затем обменивается значениями в ПК и PS3. Это приводит к сохранению адреса возврата в PR3 и отправке следующей инструкции в точку входа обработчика прерываний, ранее сохраненную в PR3. [8]
Система не включает в себя эквивалент возврата из прерывания. Это можно выполнить с помощью другого XPPC, скопировав ранее сохраненный в PR3 адрес обратно на ПК и выполнение продолжится с того места, где оно было остановлено. Однако это оставляет неверный адрес в PR3, не начало обработчика прерывания, а конец. Чтобы решить эту проблему, обычное решение состоит в том, чтобы разместить XPPC, который возвращает основной код, на одну инструкцию выше точки входа обработчика, а не в конце. Когда обработчик завершает работу, он возвращается к этой инструкции, поэтому при вызове XPPC компьютеру указывается на одно место перед правильной точкой входа. Поскольку система увеличивает PC перед вызовом инструкции, это означает, что следующее прерывание приведет к входу в правильную точку входа. Этот «обработчик выхода» обычно также сбрасывает IE в 1, чтобы повторно разрешить прерывания. [9]
Управление автобусом
[ редактировать ]Особенностью SC/MP была общая шлейфовая линия управления, которая позволяла нескольким SC/MP или, чаще, одному SC/MP и соответствующим контроллерам прямого доступа к памяти (DMA) совместно использовать доступ к одной основной памяти . Когда какой-либо из микросхем на шине требовал доступа к памяти, он устанавливал на вывод ENOUT высокий уровень, тем самым сигнализируя выводам ENIN другого чипа о необходимости освободить шину. В большинстве других процессоров для этого обычно требуется внешняя логика, реализованная разработчиками платы, для приостановки ЦП на том же конце, часто с некоторой сложностью из-за внутренней синхронизации инструкций, которая не видна внешним схемам. В SC/MP все это было встроено внутри, поэтому для реализации этой функции было достаточно одной линии на печатной плате. [10]
Первоначальная идея заключалась в том, чтобы упростить создание приложений, подобных микроконтроллерам, содержащих SC/MP, один или несколько контроллеров DMA и одну общую память. Разработанный специально для того, чтобы сделать систему максимально дешевой с точки зрения общей стоимости, желание снизить стоимость самого SC/MP также привело к решению о последовательном АЛУ и включении последовательных линий ввода/вывода для устранения необходимость в отдельном UART (эта функция была удалена в более поздней версии SC/MP III). [11] В обзоре системы, проведенном Осборном, говорится, что это «предпочтительный микропроцессор в любом многопроцессорном приложении». [12] но этот рынок, похоже, был ограничен, поскольку продажи никогда не были особенно высокими.
Необычные особенности
[ редактировать ]SC/MP не содержал инструкции перехода к подпрограмме. Вместо этого язык ассемблера JS включал макрос , который записывал серию инструкций для реализации этой функциональности. Макрос загружал старший байт адреса в AC, а затем вызывал XPAH, чтобы переместить его в старший байт выбранного регистра указателя. Затем он повторил это для младшего байта, используя XPAL. Затем он вызывает XPPC для передачи полученного 16-битного значения из PR на ПК. Поскольку XPPC обменивает два значения, текущее значение PC сохраняется в выбранном PR, а процедура возврата из подпрограммы может быть реализована с помощью одного XPPC для копирования значения обратно. [13]
SC/MP увеличивает счетчик программы перед выборкой команды, так что при сбросе он фактически начинает выполнение инструкций с позиции 0001. Это также необходимо учитывать при расчете перемещений, поскольку к счетчику программы будет добавлено смещение, которое будет по-прежнему указывает на место смещения, а не на следующую инструкцию.
В системе была инструкция задержки DLY, которая принимала один параметр P. Это останавливало работу на период 13 + (2 x P) + (2^9 x P) + (2 x AC) микроциклов, что и было выполнено. путем постоянного уменьшения значения AC, пока оно не достигнет нуля. [14] Это означало, что задержка могла составлять от 13 до 131 593 циклов. [12] Обычно это использовалось с последовательными выводами; программа могла бы установить значение AC, равное времени, необходимому для передачи одного бита с заданной скоростью, а затем проверить значение одного из выводов флага, чтобы убедиться, что он готов к следующему. [14]
Процессор не был особенно требователен к тактированию, а в низкоскоростных приложениях ему не требовалось использовать кварцевый генератор , и вместо него его можно было заменить простым конденсатором . [15]
Реализации
[ редактировать ]ISP-8A/500 SC/MP-1 с тактовой частотой 1 МГц , первая реализация ( P Channel MOS технология )
INS 8060 ISP-8A/600 SC/MP-2 с тактовой частотой 4 МГц (внутренняя 2 МГц), первая N-канальная версия MOS (одиночный источник питания +5 В)
до 4 КБ INS 807x SC/MP-3 с тактовой частотой 4 МГц (внутренняя частота 2 МГц), включая варианты с ПЗУ (дополнительный встроенный BASIC (NIBL))
Использование
[ редактировать ]SC/MP также использовался в качестве основы одноплатного микроконтроллера производства Science of Cambridge (позже Sinclair Research Ltd ) под названием MK14 . Компания Montgomery Elevator Co из Moline, штат Иллинойс (позже приобретенная KONE, Inc. ) использовала SC/MP в качестве основы для своего первого контроллера лифта на базе микропроцессора, выпущенного в 1975 году. Многие из этих устройств до сих пор работают в зданиях по всей территории США.
Примечания
[ редактировать ]- ^ Этот подход к сегментированной памяти был более известен в Intel 8088 .
Ссылки
[ редактировать ]Цитаты
[ редактировать ]- ^ Jump up to: а б с Справочник 1977 года , с. 1.6.
- ^ Jump up to: а б с Осборн и Кейн 1981 , с. 3.3.
- ^ Справочник 1977 г. , с. 1.2, 1.10.
- ^ Справочник 1977 г. , с. 1.13.
- ^ Jump up to: а б Справочник 1977 года , с. 1.3.
- ^ Jump up to: а б с д Справочник 1977 года , с. 1.11.
- ^ Jump up to: а б с Осборн и Кейн 1981 , с. 3.4.
- ^ Осборн и Кейн 1981 , с. 3.14.
- ^ Осборн и Кейн 1981 , с. 3.16.
- ^ Справочник 1977 г. , с. 2С3-1.
- ^ Справочник 1977 г. , с. 2С1-12.
- ^ Jump up to: а б Осборн и Кейн 1981 , с. 3.1.
- ^ Справочник 1977 г. , с. 1,5.
- ^ Jump up to: а б Справочник 1977 года , с. 2С3.9.
- ^ Справочник 1977 г. , с. 1.1.
Библиография
[ редактировать ]- Справочник по приложениям SC/MP (PDF) . Национальный полупроводник. Февраль 1977 года.
- Осборн, Адам; Кейн, Джерри (1981). Справочник Osborne по 4- и 8-битным микропроцессорам . Осборн/МакГроу-Хилл. ISBN 0-931988-42-Х .
Внешние ссылки
[ редактировать ]- Дополнительная информация и эмуляторы
- Техническая спецификация National Semiconductor
- Информация о SC/MP, включая эмулятор
- Оригинальное руководство MK14 , включая ISA описание
- Одноплатный микроконтроллер SC/MP II с NIBL BASIC в ПЗУ.
- Техническое описание НСК 807X
- Система разработки SC/MP в Центре истории вычислений
- Различные PDF-файлы серии INS807x
- Одноплатный компьютер INS8073 ручной сборки с информацией по сборке исходного кода