Texas Instruments TMS9900 - Texas Instruments TMS9900

Texas Instruments TMS9900
Designer Texas Instruments
Bits 16-Bit
Eingeführt 1976
Entwurf CISC
Endianität Groß
Register
PC, WP, ST
Allgemeiner Zweck 2 intern im Prozessor (WP, ST) 16 × 16-Bit-Stack im externen RAM

Der im Juni 1976 eingeführte TMS9900 war einer der ersten kommerziell erhältlichen 16-Bit- Single-Chip - Mikroprozessoren . Es implementierte die TI-990- Minicomputer- Architektur von Texas Instruments in einem Single-Chip-Format und wurde ursprünglich für Low-End-Modelle dieser Produktreihe verwendet.

Das 64-Pin- DIP- Format machte die Implementierung in kleineren Maschinen teurer als das gängigere 40-Pin-Format, und es wurden relativ wenige Design Wins außerhalb der eigenen Verwendung durch TI erzielt. Zu diesen Anwendungen gehörte der TI-99/4 -Heimcomputer von TI , von dem letztendlich etwa 2,8 Millionen Exemplare verkauft wurden.

Mitte der 1980er Jahre bewegte sich der Mikrocomputerbereich zu 16-Bit-Systemen wie dem Intel 8088 und neueren 16/32-Bit-Designs wie dem Motorola 68000 , die den 9900 leicht übertrafen und im Allgemeinen weniger teuer waren. Da der Chip keine Zukunft hat, richtete TI seine Aufmerksamkeit auf Spezialprozessoren wie den 1983 eingeführten Texas Instruments TMS320 .

Geschichte

TMS9900JL im Keramikgehäuse mit vergoldeten Pins

Der TMS9900 wurde als Single-Chip-Version der TI 990- Minicomputer- Serie entwickelt, ähnlich wie der Intersil 6100 ein Single-Chip- PDP-8 (12 Bit) war und der Fairchild 9440 und der Data General mN601 beide Ein-Chip-Versionen von Data General waren ist Nova . Im Gegensatz zu Mehrchip-16-Bit-Mikroprozessoren wie dem National Semiconductor IMP-16 oder DEC LSI-11 , von denen einige vor dem TMS9900 existierten, war letzterer ein in sich geschlossener 16-Bit-Einzelchip-Mikroprozessor. Das einzige bekannte Single-Chip-16-Bit-Design, das dem TMS9900 vorausgeht, ist das fast unbekannte Panafacom MN1610 , das 1975 veröffentlicht wurde.

Die Minicomputer-Wurzeln des TMS9900 führen zu einer Reihe von architektonischen Merkmalen, die bei Designs, die von einem leeren Blatt ausgehen, normalerweise nicht zu finden sind. Bemerkenswert unter diesen war die Verwendung von Registern des TMS9900, die in den Hauptspeicher abgebildet werden . Dies ermöglicht eine schnelle Kontextumschaltung , die durch Ändern eines einzelnen Zeigers erreicht werden kann, während herkömmlichere Designs erfordern würden, dass der gesamte Satz interner Register im Speicher oder im Stack gespeichert wird. Der Nachteil dieses Ansatzes besteht darin, dass der Zugriff auf diese Register zeitaufwendiger ist. Bei einer Minicomputerimplementierung ist der Effekt relativ gering und der Vorteil in einer Multitasking-Umgebung ist signifikant. In anderen Rollen, wie Einzelbenutzer-Mikrocomputern oder eingebetteten Systemen, lohnt sich dieser Kompromiss möglicherweise nicht.

TI nutzte die gleiche Architektur in verschiedenen Abteilungen für Unternehmenssynergien: "one company, one computer architecture". In den späten 1970er Jahren präsentierte Walden C. Rhines den TMS9900 einer IBM-Gruppe, die einen Personal Computer entwickelte. "Wir würden bis 1981 nicht wissen, was wir verloren haben", weil IBM den Intel 8088 für den IBM-PC wählte , erinnerte er sich. Nach dem gescheiterten Versuch, mit Produkten wie dem TI-99/4A in den PC-Markt einzusteigen , konzentrierte sich die Mikroprozessor-Sparte des Unternehmens schließlich auf die Spezialprozessor-Serie TMS320 .

Die Architektur

Das TMS9900 verfügt über drei interne 16-Bit- RegisterProgrammzähler (PC), Statusregister (ST) und Arbeitsbereichszeigerregister (WP). Das WP-Register zeigt auf eine Basisadresse im externen RAM, wo die 16 Universalbenutzerregister des Prozessors (jeweils 16 Bit breit) gehalten werden. Diese Architektur ermöglicht einen schnellen Kontextwechsel ; B. beim Eintritt in ein Unterprogramm , muss nur das einzelne Arbeitsbereichsregister geändert werden, anstatt dass die Register einzeln gespeichert werden müssen.

Adressen beziehen sich auf Bytes mit Big-Endian- Ordnungskonvention. Der TMS9900 ist eine klassische 16-Bit-Maschine mit einem Adressraum von 2 16 Byte (65.536 Byte oder 32.768 Worte).

Es gibt kein Konzept eines Stapels und kein Stapelzeigerregister. Stattdessen existieren Verzweigungsbefehle, die den Programmzähler in einem Register speichern und den Registerkontext ändern. Die 16 Hardware- und 16 Software-Interrupt-Vektoren bestehen jeweils aus einem Paar von PC- und WP-Werten, so dass die Registerkontextumschaltung auch automatisch durch einen Interrupt durchgeführt wird.

Befehlssatz und Adressierung

Das TMS9900 hat 69 Befehle, die ein, zwei oder drei Worte lang sind und immer wortausgerichtet im Speicher abgelegt werden. Der Befehlssatz ist ziemlich orthogonal , was bedeutet, dass Befehle mit wenigen Ausnahmen alle Methoden des Zugriffs auf Operanden (Adressierungsmodi) verwenden können.

Adressierungsmodi umfassen Sofort (Operand im Befehl), Direkt oder "Symbolisch" (Operandenadresse im Befehl), Register (Operand im Arbeitsbereichsregister), Register Indirekt (Operandenadresse im Arbeitsbereichsregister) mit oder ohne Auto-Inkrement, Indiziert (Operandenadresse in einem mit dem Inhalt des Arbeitsbereichsregisters indizierten Befehl) und dem relativen Programmzähler.

Die wichtigsten Dual-Operanden-Befehle (Addieren, Subtrahieren, Vergleichen, Verschieben usw.) enthalten 2-Bit-Adressierungsmodus und 4-Bit-Registerauswahlfelder für Quell- und Zieloperanden. Im Opcode wird der "symbolische" Modus als indizierter Modus dargestellt, wobei das Registerfeld auf 0 gesetzt ist, daher kann das Arbeitsbereichsregister 0 (WR0) nicht im indizierten Modus verwendet werden. In weniger häufig verwendeten Dual-Operand-Befehlen wie XOR muss der Zieloperand ein Arbeitsbereichsregister (oder ein Arbeitsbereichsregisterpaar im Fall von Multiplikations- und Divisionsbefehlen) sein.

Die Flusssteuerung wird durch eine Gruppe von einem unbedingten und zwölf bedingten Sprungbefehlen erleichtert. Sprungziele sind relativ zum PC mit einem Offset von -128 bis +127 Wortadressen.

Für Unterprogrammaufrufe lädt der Verzweigungs- und Ladebereichszeiger-(BLWP)-Befehl neue WP- und PC-Werte und speichert dann die Werte von WP, PC und ST in den (neuen) Registern 13, 14 bzw. 15. Am Ende des Unterprogramms stellt der Return Workspace Pointer (RTWP) diese in umgekehrter Reihenfolge wieder her. Mit BLWP/RTWP ist es möglich, Unterprogrammaufrufe trotz fehlendem Stack zu verschachteln, allerdings muss der Programmierer den entsprechenden Register-Workspace explizit zuweisen.

Der Befehlssatz enthält auch einen Branch and Link (BL)-Opcode, der PC nur in Register 11 speichert, ohne WP zu ändern. In diesem Fall kann ein Verzweigungsbefehl (B), der WR11 als Zieladresse verwendet, als Rückkehr-Opcode dienen, aber Subroutinen vom BL-Typ können nicht verschachtelt werden, ohne dass der Programmierer Maßnahmen ergreift, um die Rückkehradresse zu speichern.

Das TMS9900 unterstützt eine Ausführungsanweisung "X" (eXecute). Dieser Befehl führt den Befehl in einem Register aus. Es kann zum Debuggen (als Breakpoint- Befehl) und zum Erstellen indizierter Opcode-Tabellen verwendet werden, wie sie in Bytecode-Interpretern verwendet werden.

Das TMS9900 unterstützt auch die Anweisung eXtended OPeration (XOP). XOP erhält eine Nummer im Bereich von 0-15 sowie eine Quelladresse. Beim Aufrufen führt der Befehl eine Kontextumschaltung durch einen von sechzehn Vektoren an vordefinierten Stellen im Speicher durch. Dies ähnelt einem Interrupt, aber der XOP-Befehl speichert auch die Quelladresse im Register 11 des neuen Arbeitsbereichs. XOP ist weniger flexibel als ein BLWP, da die Transfervektoren an festen Orten sein müssen, spart aber Speicher, da die Quelladresse stattdessen von der ausgeführten Subroutine verwendet werden kann, wenn sie die Position des Vektors nicht definiert. XOP wird verwendet, um Anweisungen in der Software in Modellen der unteren Preisklasse zu implementieren, wobei höherwertige Versionen der Minicomputer-Serie 990 möglicherweise über dedizierte Hardware verfügen, um sie auszuführen.

In typischen Vergleichen mit dem Intel 8086 hatte der TMS9900 kleinere Programme. Die einzigen Nachteile waren der geringe Adressraum und der Bedarf an schnellem RAM.

Implementierung

TMS9900 Pin-Konfiguration (64-Pin DIP )

Der TMS9900 wurde in einem N-Kanal-Silizium-Gate-MOS-Prozess implementiert, der +5-V-, -5-V- und +12-V-Stromversorgungen und einen vierphasigen (nicht überlappenden) Takt mit einer maximalen Frequenz von 3 MHz (333 ns .) erforderte Zyklus), die normalerweise von einem 48-MHz-Kristall mit einem TIM9904 (auch bekannt als 74LS362) Taktgenerator-Chip erzeugt wird.

Die kürzesten Befehle benötigen zum Abschluss acht Taktzyklen oder 2,7 µs (unter der Annahme von 0 externen Wartezyklen), viele andere laufen zwischen 10 und 14 Zyklen (3,3...4,7 µs); der am längsten laufende Befehl (DIV) kann bis zu 124 Zyklen (41,3 µs) dauern.

Der Chip war in einem (damals ungewöhnlichen) 64-Pin- DIP mit einer Breite von 0,9 Zoll verpackt . Die vergleichsweise große Anzahl von Pins ermöglichte es, den 15-Bit-(Wort-) Adressbus und den 16-Bit- Datenbus auf dedizierte Pins ohne die Verwendung von Multiplexing (anders als zB bei der Intel 8086 CPU), um externe Speicherverbindungen einfach zu halten Entgegen der von vielen anderen Herstellern verwendeten Konvention hat TI die wichtigsten Adress- und Datenleitungen mit "A0" bzw. "D0" gekennzeichnet. Alle internen Datenpfade und die ALU sind 16 Bit breit.

Der Prozessor kann angehalten werden, wenn der Adreßbus für den externen direkten Speicherzugriff (DMA) tri- state ist. Speicherzugriffe sind immer 16 Bit breit, wobei die CPU automatisch Lese-vor-Schreib-Operationen für byteweite Zugriffe durchführt.

Das Hardware-Interrupt-System unterstützt einen 4-Bit-Interrupt-Prioritätseingang, der höher sein musste als die im Statusregister (Bits 12-15) gespeicherte Prioritätsstufe, damit die Interrupt-Anforderung bedient werden kann. Darüber hinaus bietet der Eingang /LOAD eine nicht maskierbare Interrupt-Funktion mit einem dedizierten Vektor.

Die TMS9900-CPU enthält außerdem ein 16-Bit- Schieberegister ("CRU"), das für die Schnittstelle mit externen Schieberegistern ausgelegt ist, mit dedizierten Befehlen, die den Zugriff auf Felder mit einer Breite von 1-16 Bit von insgesamt 4096 adressierbaren Bits unterstützen.

Parallele Peripheriegeräte können speicherabgebildet an den regulären Adress- und Datenbus angeschlossen werden.

Anwendungen

Der Tomy Tutor , ein Heimcomputer von 1983, der auf dem TMS9995-Prozessor basiert

Der TMS9900 wurde in den Heimcomputern TI-99/4 und TI-99/4A verwendet. Um die Produktionskosten zu senken, entschied sich TI leider, in diesen Systemen nur 128 16-Bit-Wörter des schnellen RAM-Typs zu verwenden, auf den der TMS9900 direkt zugreifen konnte. Der Rest des Speichers bestand aus 16 kB 8-Bit- DRAM , auf den nur indirekt über den Video-Display-Controller zugegriffen werden konnte, was die Leistung des TI-99/4 lahmlegte.

TI entwickelte die TM990-Serie von Computermodulen, einschließlich CPU, Speicher und E/A, die, wenn sie in einen Kartenrahmen gesteckt werden, einen 16-Bit-Minicomputer bilden können. Diese wurden typischerweise zur Prozesssteuerung verwendet. Mit dem TM990/189 wurde ein Mikroprozessor-Trainer herausgebracht.

Produktentwicklung der TMS9900-Familie

Die zweite Generation der Mikroprozessoren der TMS9900-Familie war der TMS9995, der eine "funktionelle Leistung mit dreimal schnelleren Geschwindigkeiten als alle vorherigen Prozessoren der 9900-Familie" bereitstellte, hauptsächlich aufgrund der Einbeziehung der Befehls-Prefetch-Technologie. Im Heimcomputerbereich fand das TMS9995 nur Verwendung im Tomy Tutor , einem esoterischen TI99-4/A-Upgrade namens Geneve 9640 und einem in Electronics Today gedruckten Projekt : dem Powertran Cortex. Es war geplant, in den Computersystemen TI-99/2 und TI-99/8 verwendet zu werden, aber keiner von ihnen kam über das Prototypenstadium hinaus.

TMS9900NL in DIP-Kunststoffverpackung

Später entwickelte TI die leistungsstärkere Mikroprozessorfamilie TMS99000, die zur Kostensenkung als CPU im Minicomputer 990/10A verwendet wurde . Als der 990/10A auf den Markt kam, war leider das Ende der Minicomputer-Ära bereits in Sicht.

Die TMS99000-Familie umfasst zwei Mikroprozessoren, den TMS99105A und den TMS99110A, die mit Ausnahme des integrierten Makrospeicher-ROM-Speichers identisch sind (der Makrospeicher enthält zusätzliche Funktionen oder Anweisungen durch Emulationsroutinen, die in Standard-Maschinencode geschrieben sind). Der ROM-Makrospeicher auf dem Chip im Mikroprozessor TMS99110A enthält Gleitkommabefehle, die als Teil des Befehlssatzes in Maschinensprache verfügbar sind, während der TMS99105A keinen ROM-Makrospeicher enthält. Ein drittes Mitglied der TMS99000-Familie, das TMS99120, wurde angekündigt, aber möglicherweise nie kommerziell hergestellt. Der On-Chip-ROM-Makrostore im TMS99120 enthält Laufzeit-Unterstützungsroutinen für die Hochsprache PASCAL.

Der Befehlssatz für die TMS99000-Familie ist ein Obersatz von TMS9995 und TMS9900 mit Objektcode-Kompatibilität. Die zusätzlichen Anweisungen umfassen diejenigen für vorzeichenbehaftetes Multiplizieren und Dividieren; Langwort verschieben, addieren und subtrahieren; Ladestatusregister, Ladearbeitsplatzzeiger, Stackoperationen, Multiprozessorunterstützung, Bitmanipulation. Mitglieder der Familie können sofort auf 256KiB Speicher zugreifen und können den TIM99610 Memory Mapper verwenden, um bis zu 16MiB zu adressieren. Die Architektur enthält viele weitere Verbesserungen gegenüber dem TMS9900 und dem TMS9995.

Varianten

Modell Beschreibung
TI990/9 Frühe Multi-Chip-CPU für Minicomputersysteme, 1974
TI990/10 Multi-Chip-Implementierung für Minicomputersysteme, 1975
TI990/12 Multi-Chip-Implementierung, schneller als 990/10
TMS9900 Single-Chip-Implementierung, 1976, verwendet im TI-99/4(A)-Computer
TMS9940 Mikrocontroller mit 2KB ROM, 128B RAM, Dekrementierer, CRU-Bus, 1979
TMS9980
TMS9981
8-Bit-Versionen von TMS9900
TMS9985 TMS9940 mit 8KB ROM, 256B RAM und einem externen 8-Bit-Bus, c. 1978 (nie veröffentlicht)
TMS9989 Verbesserter 9980, verwendet in militärischer Hardware
TMS9995 Verbesserte TMS9985-ähnlich, kein ROM. Wird in den Prototypen TI-99/2 & TI-99/8, dem Tomy Tutor und dem Geneve Computer verwendet
TMS99105 Baseline-Mitglied der Mikroprozessorfamilie TMS99000
TMS99110 Mikroprozessor der TMS99000-Familie mit vorprogrammierten Gleitkommabefehlen im Macrostore-ROM-Speicher auf dem Chip
TMS99120 Mikroprozessor der TMS99000-Familie mit Laufzeitunterstützungsroutinen für die PASCAL-Hochsprache, die in
den Macrostore-ROM-Speicher auf dem Chip vorprogrammiert ist (Mikroprozessor wurde angekündigt, wurde aber möglicherweise nie kommerziell hergestellt)

Verweise

Externe Links