Общий инструмент CP1600
CP1600 микропроцессор — 16-разрядный , созданный в сотрудничестве компаний General Instrument и Honeywell и представленный в феврале 1975 года. [1] [2] Это один из первых однокристальных 16-битных процессоров. Общий дизайн очень похож на PDP-11 .
Honeywell использовала CP1600 в ряде компьютеров управления технологическими процессами и связанных с ними системах, но наиболее широкое применение получила версия CP1610 в Intellivision игровой консоли . Система не нашла другого применения из-за маркетинговой философии General Instrument, заключающейся в поиске клиентов только с помощью очень крупных заказов и игнорировании более мелких клиентов. Они также не стремились к использованию второго источника , что на заре разработки микропроцессоров было требованием для большинства потенциальных клиентов. [3]
Описание
[ редактировать ]Физическая реализация
[ редактировать ]CP1600 был реализован в режиме расширения nMOS и требовал источников питания +12, +5, -3 В; Соединения ввода-вывода, за исключением часов, были совместимы с TTL (5 В). [а] Каждое микросостояние или цикл процессора использует четыре внутренних временных интервала, генерируемых двумя непересекающимися тактовыми импульсами. Двухфазные часы с частотой 3,3 МГц производят микроцикл длительностью 600 наносекунд. Двухфазные часы с частотой 5 МГц производят микроцикл длительностью 400 наносекунд. Из-за требований к напряжению тактовых сигналов их приходилось генерировать с помощью внешних схем, что было обычным явлением в ту эпоху проектирования микропроцессоров. [3]
Чтобы разместить 16-битный процессор в 40-контактном двухрядном корпусе (DIP), CP1600 мультиплексировал свои выводы данных и адреса. Это позволило использовать набор из 16 контактов как для выбора адреса, так и для чтения и записи данных, но для этого требовалось два цикла шины. Это также усложняло общую компоновку машины, поскольку на шине памяти требовались буферы для фиксации адреса, пока процессор переключал выводы в режим данных. Интерфейс системы также был сложным и требовал трех контактов. BDIR
, BC1
и BC2
, который нужно было декодировать, чтобы понять, в каком состоянии находится шина памяти. [4]
Относительно необычной особенностью CP1600 была концепция «внешнего ответвления». Это было реализовано как четыре контакта на чипе. EBCA0
через EBCA3
, который содержал младшие четыре бита BEXT
код операции инструкции. При выполнении этой инструкции контакты активируются и используются для указания того, какая из шестнадцати внешних систем должна быть проверена. Эти устройства затем ответят на запрос, установив EBCI
контакт, и состояние этого контакта будет затем определять, была ли выбрана ветвь или нет. [4] Это можно использовать, например, для проверки наличия на внешнем устройстве входных данных, которые необходимо обработать; процессор может выразить значение «2» на EBCA
чтобы попробовать устройство 2, позвоните в BEXT
, и это устройство затем ответит, установив EBCI
значение true, если были данные, заставляя процессор переходить к коду для чтения данных с этого устройства.
Это контрастирует с типичным решением для работы с внешними устройствами; В большинстве систем устройства вызывают прерывание , которое заставляет процессор вызывать специальный код, обработчик прерываний , который затем считывает дополнительные данные, чтобы определить, какое устройство вызвало прерывание. Эти дополнительные данные могут быть представлены с помощью выделенных контактов ЦП, но часто они представляются в виде значения на шине данных . Затем код обработчика прерываний решает, какой драйвер устройства вызвать для обработки данных. CP1600 может реализовать это с помощью меньшего количества инструкций; обработчик прерываний представляет собой просто серию BEXT
инструкции, указывающие на связанные драйверы, которые он запускает по одному, пока соответствующее устройство не установит EBCI
и автоматически вызывать ветвление кода.
В целом, реализация системы с использованием CP1600 часто требовала дополнительных вспомогательных микросхем и логики. Сюда входила система мультиплексирования шестнадцати сигналов в один вывод, если использовалось внешнее разветвление, а также преобразователь из трех бит в восемь строк, чтобы избежать необходимости декодировать сигналы состояния шины во внешних частях. [3]
Набор команд и регистры
[ редактировать ]
|
Из 16 бит, доступных в коде операции инструкции , CP1600 использовал только 10. Остальные 6 бит были помечены как «Использование в будущем». [5] 10-битные инструкции означали, что код, хранящийся в типичном байтово-ориентированном ПЗУ, будет тратить шесть бит на инструкцию. В эпоху дорогой памяти это было серьезной проблемой. Чтобы решить эту проблему, General Instrument также выпустила специальные 10-битные ПЗУ, в которых эффективно хранились инструкции. Поскольку для данных и адресов по-прежнему требовались 16-битные значения, в 1600 была включена специальная инструкция SDBD, которая объединяла 16-битный аргумент из двух 10-битных операций чтения ПЗУ.
Похоже, что неиспользуемые 6 бит предназначались для использования с сопроцессорами, утверждая линию PCIT , которая останавливала ЦП до тех пор, пока она не будет освобождена. В ранней документации показаны два запланированных чипа этой серии: 1616, в который добавлен «Расширенный набор команд», и 1618 «Priority Expander». [6]
Система включала 87 основных инструкций. Инструкции могут состоять из одного-трех 16-битных слов в зависимости от используемого формата адресации. [4] CP1600 не поддерживал косвенную адресацию (смещения) память-память, а циклирование было реализовано с использованием специального сумматора, который выполнял изменения адресов в памяти за один такт. Арифметико -логическое устройство (АЛУ) имело ширину 16 бит и могло добавить два 16-битных внутренних регистра за 2,4 микросекунды, а память для добавления двух 16-битных чисел за 3,2 микросекунды. [7]
Как и PDP-11, CP1600 использовал восемь 16-битных регистров процессора «общего назначения» , хотя они не были по-настоящему универсальными, как в современных конструкциях. Только R0 не имел заранее определенного назначения и был описан как «основной аккумулятор». [8] От R1 до R3 можно использовать указатели данных, обычно используемые для адресации на основе регистров («подразумеваемая адресация»). R4 и R5 автоматически увеличивались после доступа, что делало их полезными для циклического перебора коллекций данных.
R6 был указателем стека , R7 — счетчиком программ. Поскольку оба этих регистра были видны программисту, их можно было использовать, среди прочего, для реализации нескольких стеков или поддержки более сложного ветвления. Неявных инструкций стека не было; когда R6 использовался в операции «чтения», он уменьшал адрес, а затем возвращал указанные данные, имитируя POP
, и когда он использовался при «записи», он записывал затем пост-инкремент (например, R4/R5), имитируя PUSH
.
ввод/вывод
[ редактировать ]Как это было обычным для того времени, CP1600 использовал ввод-вывод с отображением в памяти , а не отдельные контакты ввода-вывода, как это было в системах Intel . Использование мультиплексированной шины и состояния шины с несколькими состояниями усложнило реализацию ввода-вывода, чем обычно в системах с отображением в памяти. Это означало, что реализации должны были использовать защелки или буферы, чтобы иметь возможность взаимодействовать с ЦП, когда он менял шину с указания адреса на данные. [8] Это отрицательно повлияло на производительность ввода-вывода и увеличило сложность устройств ввода-вывода.
Чтобы решить эту проблему, GI поставила серию выделенных микросхем ввода-вывода 164x, которые реализовали необходимую логику шины. В их число входили, например, контроллер клавиатуры 1641, контроллер кассеты 1643 и элемент управления дисплеем 1647. [6] 1640 Самым известным среди них является «Программируемый интерфейсный контроллер» , или PIC, который был разработан для совместной работы с CP1600 и выступал в качестве контроллера каналов для ЦП. Как и в других чипах серии 1640, PIC внутренне декодировал логику шины, но также добавлял очень простой процессор, который мог запускать свои собственные программы для выполнения ввода-вывода и прямого доступа к памяти . Например, можно отправить команду PIC на карте гибкого диска для чтения данных из заданного сектора на диске. Затем PIC считывал данные в свой собственный внутренний буфер, отслеживал неиспользованное время шины, когда все контакты состояния шины были равны нулю, а затем отправлял данные в основную память. [6]
Компания General Instrument предоставила кросс-ассемблеры и симуляторы/отладчики, совместимые с 16-разрядными или более крупными мини-компьютерами . [9] GI также предоставила автономную микрокомпьютерную систему на базе CP1600 в GIC1600. [10]
Использование
[ редактировать ]CP1610, используемый в игровых консолях, таких как Champion 2711. [11] и, в первую очередь , Intellivision — совместимый член семейства микропроцессоров 1600. Он использует двухфазный тактовый сигнал с частотой 2 МГц, обеспечивающий такт процессора 1 микросекунду. CP1610 в NTSC Intellivisions использует двухфазный тактовый сигнал 1,7897725 МГц. Хотя пользователи CP1600 в роли традиционного компьютера были относительно редки, с 1980 года было произведено более 3 миллионов Intellivision, пока крах видеоигр в 1983 году не привел к закрытию производственных линий Intellivision в 1984 году. [12]
Производство CP1600 закончилось в 1985 году, когда General Instrument выделила свое подразделение микроэлектроники и создала Microchip Technology . К этому моменту было доступно несколько 32-битных моделей, таких как MC68000 , что ограничивало интерес к 16-битным моделям, таким как CP1600, а их основной существующий клиент, Intellivision, больше не производился. многих других продуктов В то же время истек срок службы , и их основным продуктом был PIC.
Примечания
[ редактировать ]Ссылки
[ редактировать ]Цитаты
[ редактировать ]- ^ https://www.edn.com/general-instruments-microprocessor-aimed-at-minicomputer-market/
- ^ Белзер, Джек; Хольцман, Альберт Г.; Кент, Аллен (1978). Энциклопедия компьютерных наук и технологий: Том 10 - Линейная и матричная алгебра микроорганизмов: компьютерная идентификация . ЦРК Пресс . п. 402. ИСБН 9780824722609 .
- ^ Перейти обратно: а б с Осборн 1981 , с. 2.1.
- ^ Перейти обратно: а б с Серия1600 1975 г. , 2.1.
- ^ Руководство пользователя микропроцессора CP-1600 (PDF) (S16DOC-CP 1600 -04 изд.). Общие инструменты. Май 1975 года . Проверено 5 июля 2022 г.
- ^ Перейти обратно: а б с Серия1600 1975 , с. я.
- ^ Серия 1600 1975 г.
- ^ Перейти обратно: а б Лоуэлл Тернер, «General Instruments CP1600» , 10 июля 2001 г.
- ^ Руководство пользователя симулятора кросс-ассемблера CP-1600 (PDF) . Общий инструмент. Ноябрь 1974 года.
- ^ Руководство пользователя микрокомпьютера GIC1600 (PDF) . Общий инструмент. Сентябрь 1975 года.
- ^ «Чемпион 2711 |До-83» . pre83.com . Проверено 23 мая 2022 г.
- ^ «Маттел Интелливижн – 1980-1984» . Классические игры . ИГН . Архивировано из оригинала 23 июня 2008 г. Проверено 16 мая 2008 г.
Библиография
[ редактировать ]- Осборн (1981). Справочник Осборна по 16-битному микропроцессору . Осборн/МакГроу-Хилл. ISBN 0-931988-43-8 .
- Микропроцессорная система серии 1600 (PDF) . Общий инструмент. 1975.