General Instrument CP1600 - General Instrument CP1600

Игровая консоль Intellivision, в подавляющем большинстве случаев является передовым приложением в семействе CP1600.

CP1600 представляет собой 16-разрядный микропроцессор создан в партнерстве между General Instrument и Honeywell в 1975 году Honeywell использовала CP1600 в ряде управления технологическими процессами компьютеров и связанных с ними систем, но наиболее широкое применение было CP1610 версии в Intellivision игровой консоли . Система не нашла другого применения из-за маркетинговой философии General Instrument, заключающейся в поиске клиентов только с очень большими заказами и игнорировании более мелких клиентов. Они также не добивались расположения второго источника , что на заре создания микропроцессоров было требованием для большинства потенциальных клиентов.

Описание

Физическая реализация

Распиновка CP1600

CP1600 был реализован на nMOS и требовал источников питания +12, +5, -3 В; большая часть внутренней логики была реализована в TTL (5 В). Каждое микросостояние или цикл процессора использует четыре внутренних временных интервала, генерируемых двумя неперекрывающимися часами. Двухфазные часы с частотой 3,3 МГц создают микроцикл в 600 наносекунд. Двухфазные часы с частотой 5 МГц создают микроцикл в 400 наносекунд. Из-за требований к мощности тактовых сигналов их приходилось генерировать с помощью внешних схем, что было обычным делом в эту эпоху проектирования микропроцессоров.

Чтобы уместить 16-битный процессор в 40-контактный двухрядный корпус (DIP), CP1600 мультиплексировал свои контакты для данных и адреса. Это позволяло использовать набор из 16 контактов как для выбора адреса, так и для чтения и записи данных, но для этого требовалось два цикла шины. Это также усложняло общую компоновку машины, поскольку на шине памяти требовались буферы для фиксации адреса, пока процессор переключал контакты в режим данных. Интерфейс системы был также сложным, требующим три булавки, BDIR, BC1и BC2, которые должны были быть расшифрованы , чтобы понять , в каком состоянии шина памяти была.

Относительно необычной особенностью CP1600 была концепция «внешнего ответвления». Это было реализовано в виде четырех выводов на микросхеме, EBCA0через EBCA3которые хранятся младшие четыре бита BEXTкода операции инструкции. Когда эта инструкция выполняется, контакты активируются и используются, чтобы указать, какая из шестнадцати внешних систем должна быть выбрана и возвращена на EBCIконтакт. Логическое значение этого вывода, высокое или низкое, затем указывает, следует ли выполнять ответвление. Это можно использовать, например, для проверки того, есть ли у внешнего устройства входные данные, которые необходимо обработать.

В целом, реализация системы с использованием CP1600 часто требовала дополнительных микросхем поддержки и логики. Это включало систему мультиплексирования шестнадцати сигналов в один вывод, если использовалось внешнее разветвление, и преобразователь из трех битов в восемь строк, чтобы избежать необходимости декодировать сигналы состояния шины во внешних частях.

Набор команд и регистры

Из 16 битов, доступных в коде операции инструкции , CP1600 использовал только 10. Остальные 6 бит были помечены как «Зарезервировано для будущего расширения». Похоже, что дополнительные 6 битов предназначались для использования с сопроцессорами, утверждая, что линия PCIT останавливает ЦП до тех пор, пока не будет выпущена. Ранняя документация показывает два запланированных чипа в этой серии, 1616, который добавил «Расширенный набор команд», и 1618 «Priority Expander».

В систему включено 87 основных инструкций. Инструкции могут содержать от одного до трех 16-битных слов в зависимости от используемого формата адресации. CP1600 не поддерживает косвенную адресацию (смещения) память-память, а цикл был реализован с использованием специального сумматора, который выполнял однократные изменения адресов в памяти. Арифметико - логическое устройство (АЛУ) был 16-битной и может добавить два 16-битовых внутренних регистров в 2,4 микросекунды, а память для регистрации добавить два 16-битных чисел в 3,2 микросекунд.

Как и PDP-11, CP1600 использовал восемь 16-битных регистров процессора общего назначения , хотя они не были действительно универсальными, как в современных конструкциях. Только R0 был действительно универсальным и был описан как «первичный аккумулятор». R1 – R3 были счетчиками данных, обычно используемыми для адресации на основе регистров («подразумеваемая адресация»). R4 и R5 автоматически увеличиваются после доступа, что делает их полезными для циклического перебора коллекций данных.

R6 был указателем стека , R7 - счетчиком программы. Поскольку оба этих регистра были видны программисту, их можно было использовать, среди прочего, для реализации нескольких стеков или поддержки более сложного ветвления. Неявных инструкций стека не было; когда R6 использовался в операции «чтения», он уменьшал адрес, а затем возвращал данные, на которые указали, имитируя a POP, а когда он использовался в «записи», он увеличивал пост-инкремент (например, R4 / R5) и записывал, как а PUSH.

Ввод / вывод

Как было принято для той эпохи, CP1600 использовал ввод-вывод с отображением памяти , а не отдельные выводы ввода-вывода, как это было в системах Intel . Использование мультиплексированной шины и состояния шины с несколькими состояниями сделало реализацию ввода-вывода более сложной, чем это обычно бывает в системах с отображением в память. Это означало, что реализации должны были использовать защелки или буферы, чтобы иметь возможность взаимодействовать с ЦП, поскольку он изменял шину с указания адреса на данные. Это отрицательно сказалось на производительности ввода-вывода и увеличило сложность устройств ввода-вывода.

Чтобы решить эту проблему, GI предоставила серию из 164 выделенных микросхем ввода-вывода, в которых реализована необходимая логика шины. К ним относятся, например, контроллер клавиатуры 1641, контроллер кассеты 1643 и устройство управления дисплеем 1647. Самым известным из них является «Программируемый интерфейсный контроллер» 1640 , или PIC, который был разработан для совместной работы с CP1600 в качестве контроллера канала . Как и в случае с другими микросхемами серии 1640, PIC внутренне декодировал логику шины, но также добавил очень простой процессор, который мог запускать свои собственные программы для выполнения операций ввода-вывода и прямого доступа к памяти . Например, можно послать команду PIC на карту гибкого диска для чтения данных из данного сектора на диске. Затем PIC считывает данные в свой внутренний буфер, следит за шиной в течение неиспользованного времени, когда все выводы состояния были равны нулю, а затем отправляет данные в основную память.

General Instrument предоставила кросс-ассемблеры и симуляторы / отладчики, совместимые с 16-битными или более крупными миникомпьютерами . GI также предоставила автономную микрокомпьютерную систему на базе CP1600 в GIC1600.

Использует

CP1610, используемый в Intellivision , является совместимым членом семейства микропроцессоров 1600. Он использует двухфазную частоту 2 МГц, обеспечивающую цикл процессора в 1 микросекунду. CP1610 в NTSC Intellivisions использует двухфазную тактовую частоту 1,7897725 МГц. Хотя пользователи CP1600 в роли традиционных компьютеров были относительно редки, с 1980 года до краха видеоигр в 1983 году, который привел к закрытию производственных линий Intellivision в 1984 году, было произведено более 3 миллионов Intellivision .

Производство CP1600 закончилось в 1985 году, когда General Instrument выделила свое подразделение микроэлектроники для создания Microchip Technology . К этому моменту было доступно несколько 32-битных проектов, таких как MC68000, которые ограничивали интерес к 16-битным проектам, таким как CP1600, и их основной существующий заказчик, Intellivision, больше не производился. Многие другие продукты также были прекращены в то же время, и их основным продуктом был PIC.

использованная литература

Библиография

внешние ссылки