Allgemeines Instrument CP1600 - General Instrument CP1600

Die Intellivision-Videospielkonsole, überwältigend die wichtigste Anwendung der CP1600-Familie

Der CP1600 ist ein 16-Bit- Mikroprozessor, der 1975 in einer Partnerschaft zwischen General Instrument und Honeywell entwickelt wurde. Honeywell verwendete den CP1600 in einer Reihe von Prozesssteuerungscomputern und verwandten Systemen, aber am weitesten verbreitet war die CP1610- Version in der Intellivision- Videospielkonsole . Aufgrund der Marketingphilosophie von General Instrument, Kunden nur mit sehr großen Bestellungen zu suchen und kleinere Kunden zu ignorieren, sah das System kaum andere Anwendungen. Sie verfolgten auch kein Second-Source- Arrangement, das in den frühen Tagen des Mikroprozessordesigns für die meisten potenziellen Kunden erforderlich war.

Beschreibung

Physische Umsetzung

CP1600 Pinbelegung

Der CP1600 wurde in nMOS implementiert und benötigte +12, +5, -3 V Netzteile; die meiste interne Logik wurde in TTL (5 V) implementiert . Jeder Mikrozustand oder Prozessorzyklus verwendet vier interne Zeitschlitze, die von zwei nicht überlappenden Takten erzeugt werden. Ein zweiphasiger Takt von 3,3 MHz erzeugt einen Mikrozyklus von 600 Nanosekunden. Ein 5-MHz-Zweiphasentakt erzeugt einen Mikrozyklus von 400 Nanosekunden. Aufgrund des Strombedarfs der Taktsignale mussten diese mit externen Schaltungen erzeugt werden, wie es in dieser Ära des Mikroprozessordesigns üblich war.

Um einen 16-Bit-Prozessor in ein 40-Pin- Dual-In-Line-Package (DIP)-Chipdesign zu integrieren, hat der CP1600 seine Daten- und Adress-Pins gemultiplext. Dies ermöglichte es, einen Satz von 16 Pins sowohl für die Adressauswahl als auch für das Lesen und Schreiben von Daten zu verwenden, aber dazu waren zwei Buszyklen erforderlich. Es verkomplizierte auch das gesamte Maschinenlayout, da Puffer auf dem Speicherbus erforderlich waren, um die Adresse zwischenzuspeichern, während der Prozessor die Pins in den Datenmodus schaltete. Die Schnittstelle zum System war ebenfalls komplex und erforderte drei Pins, BDIR, BC1und BC2, die dekodiert werden mussten, um zu verstehen, in welchem ​​Zustand sich der Speicherbus befand.

Ein relativ ungewöhnliches Merkmal des CP1600 war sein "externer Zweig"-Konzept. Dies wurde als vier Pins auf dem Chip implementiert, EBCA0bis EBCA3, die die unteren vier Bits des BEXTBefehls-Opcodes enthielten. Wenn dieser Befehl ausgeführt wird, werden die Pins aktiviert und werden verwendet, um anzuzeigen, welches von bis zu sechzehn externen Systemen abgetastet und auf dem EBCIPin zurückgegeben werden soll. Der logische Wert dieses Pins, hoch oder niedrig, zeigt dann an, ob die Verzweigung genommen werden soll. Dies könnte beispielsweise verwendet werden, um zu testen, ob ein externes Gerät Eingangsdaten hat, die verarbeitet werden müssen.

Insgesamt erforderte die Implementierung eines Systems mit dem CP1600 häufig zusätzliche Unterstützungschips und Logik. Dazu gehörte ein System zum Multiplexen von sechzehn Signalen an einen einzigen Pin, wenn die externe Verzweigung verwendet wurde, und einen Drei-Bit-zu-Acht-Leitung-Wandler, um die Busstatussignale nicht in externen Teilen decodieren zu müssen.

Befehlssatz und Register

Von den 16 Bit, die in einem Befehls- Opcode verfügbar sind , verwendet der CP1600 nur 10. Die restlichen 6 Bit wurden als "Reserviert für zukünftige Erweiterungen" gekennzeichnet. Es scheint, dass die zusätzlichen 6 Bits dazu gedacht waren, mit Coprozessoren verwendet zu werden , wodurch die PCIT- Leitung aktiviert wurde , die die CPU bis zur Freigabe blockierte. Die frühe Dokumentation zeigt zwei geplante Chips der Serie, den 1616, der das "Extended Instruction Set" hinzugefügt hat, und den 1618 "Priority Expander".

Das System umfasste 87 grundlegende Anweisungen. Befehle können je nach verwendetem Adressierungsformat ein bis drei 16-Bit-Wörter lang sein. Der CP1600 unterstützte keine indirekte Speicheradressierung (Offsets), und die Schleifen wurden mithilfe eines dedizierten Addierers implementiert, der Einzelzyklusänderungen an Adressen im Speicher durchführte. Die arithmetisch-logische Einheit (ALU) war 16 Bit breit und konnte zwei interne 16-Bit-Register in 2,4 Mikrosekunden hinzufügen, und Speicher zu Register addieren zwei 16-Bit-Zahlen in 3,2 Mikrosekunden.

Wie der PDP-11 verwendete der CP1600 acht 16-Bit-"Allzweck" -Prozessorregister , obwohl sie nicht wirklich universell einsetzbar waren, wie in modernen Designs. Nur R0 war wirklich universell einsetzbar und wurde als "der primäre Akkumulator" bezeichnet. R1 bis R3 waren Datenzähler, die im Allgemeinen für die registerbasierte Adressierung ("implizite Adressierung") verwendet wurden. R4 und R5 wurden nach dem Zugriff automatisch inkrementiert, was sie zum Durchlaufen von Datensammlungen nützlich machte.

R6 war der Stackpointer , R7 der Programmzähler. Da diese beiden Register für den Programmierer sichtbar waren, konnten sie unter anderem verwendet werden, um mehrere Stacks zu implementieren oder komplexere Verzweigungen zu unterstützen. Es gab keine impliziten Stapelanweisungen; wenn R6 in einem "Lese"-Vorgang verwendet wurde, dekrementierte es die Adresse und gab dann die Daten zurück, auf die gezeigt wurde, indem es a simulierte POP, und wenn es in einem "Schreiben" verwendet wurde, wurde es nachinkrementiert (wie R4 / R5) und geschrieben, wie ein PUSH.

E/A

Wie in der damaligen Zeit üblich, verwendete der CP1600 speicherabgebildete E/A im Gegensatz zu separaten E/A-Pins, wie man sie bei Intel- Systemen kennt . Die Verwendung eines Multiplex-Busses und eines Multi-State-Bus-Status machte die Implementierung von E/A schwieriger, als dies normalerweise bei speicherabgebildeten Systemen der Fall wäre. Dies bedeutete, dass Implementierungen Latches oder Puffer verwenden mussten, um eine Schnittstelle mit der CPU herstellen zu können, wenn sie den Bus von der Anzeige einer Adresse auf Daten umstellte. Dies wirkte sich sowohl negativ auf die E/A-Leistung aus als auch erhöhte die Komplexität der E/A-Geräte.

Um dieses Problem anzugehen, lieferte GI eine Reihe von 164x dedizierten I/O-Chips, die die erforderliche Buslogik implementierten. Dazu gehörten zum Beispiel der 1641 Keyboard Controller, der 1643 Cassette Controller und der 1647 Display Control. Am berühmtesten unter ihnen ist die 1640 „Programmable Interface Controller“ oder PIC, die Arbeit gemeinsam mit dem CP1600 als entworfen Kanal - Controller . Wie bei den anderen Chips der 1640-Serie dekodierte der PIC intern die Buslogik, fügte aber auch einen sehr einfachen Prozessor hinzu, der seine eigenen Programme ausführen konnte, um I/O und direkten Speicherzugriff durchzuführen . Zum Beispiel könnte man einen Befehl an einen PIC auf einer Diskettenkarte senden , um Daten von einem bestimmten Sektor auf der Platte zu lesen. Der PIC würde dann die Daten in seinen eigenen internen Puffer einlesen, den Bus auf ungenutzte Zeit überwachen, wenn die Statuspins alle null waren, und dann Daten an den Hauptspeicher senden.

General Instrument stellte Cross-Assembler und Simulatoren/Debugger bereit, die mit 16-Bit- oder größeren Minicomputern kompatibel sind . GI lieferte mit dem GIC1600 auch ein eigenständiges CP1600-basiertes Mikrocomputersystem.

Verwendet

Der in Intellivision verwendete CP1610 ist ein kompatibles Mitglied der 1600-Mikroprozessorfamilie. Es verwendet einen 2-MHz-Zweiphasentakt, der einen Prozessorzyklus von 1 Mikrosekunde erzeugt. Der CP1610 in den NTSC Intellivisions verwendet einen zweiphasigen Takt von 1,7897725 MHz. Obwohl Benutzer des CP1600 in der traditionellen Computerrolle relativ selten waren, wurden von 1980 über 3 Millionen Intellivisions produziert, bis der Videospiel-Crash von 1983 zur Schließung der Intellivision-Produktionslinien im Jahr 1984 führte.

Die Produktion des CP1600 endete 1985, als General Instrument seine Mikroelektronikabteilung ausgliederte, um Microchip Technology zu gründen . Zu diesem Zeitpunkt waren eine Reihe von 32-Bit-Designs wie der MC68000 verfügbar, die das Interesse an einem 16-Bit-Design wie dem CP1600 begrenzten, und ihr bestehender Hauptkunde, die Intellivision, war nicht mehr in Produktion. Viele andere Produkte wurden ebenfalls zur gleichen Zeit ausgemustert , und ihr Hauptprodukt war der PIC.

Verweise

Literaturverzeichnis

Externe Links