Texas Instruments TMS9900

Den aktuelle version af siden er endnu ikke blevet gennemgået af erfarne bidragydere og kan afvige væsentligt fra den version , der blev gennemgået den 20. august 2017; checks kræver 7 redigeringer .
TMS9900
CPU

version af TMS9900JL i en keramisk kasse med forgyldte stifter
Produktion 1976
Fabrikant
Produktionsteknologi N-MOP, 6  µm
stik
  • DIP64
Kerner

TMS9900- mikroprocessoren , der blev introduceret i juni 1976, var en af ​​de første kommercielt tilgængelige single-chip 16-bit mikroprocessorer . TMS9900 blev primært brugt i TI-99/4A hjemmecomputeren .

Historie

TMS9900 blev designet som en single-chip-version af TI-990- seriens minicomputer , svarende til hvordan Intersil 6100 -mikroprocessoren var en single-chip-version af 12-bit PDP-8 minicomputeren og Fairchild Semiconductor 9440 og Data General mN601 mikroprocessorer var single-chip versioner af 16-bit minicomputeren.-Computer Data General Nova . TMS9900 var anderledes ved, at alle dens komponenter var på en enkelt chip, mens National Semiconductor IMP-16 eller DEC LSI-11 16-bit mikroprocessorer, der eksisterede på det tidspunkt, var et sæt af flere chips.

Arkitektur

Et træk ved TMS9900-arkitekturen er fraværet af indbyggede registre til generelle formål og deres lagring i RAM . TMS9900 har tre indbyggede 16-bit registre - programtælleren (PC), statusregistret (ST) og arbejdsområdepointerregisteret (WP) [1] . WP-registret peger på startadressen i RAM, hvorfra processorens 16 generelle registre (hver 16 bit bred) er lagret. Denne arkitektur tillader hurtig kontekstskifte . For eksempel, når du indtaster en subrutine , i stedet for at gemme de aktuelle værdier af registrene individuelt, er det nok at ændre indholdet af arbejdsområderegistret.

Ved adressering af hukommelse bruges byte-rækkefølge fra høj til lav. TMS9900 er en klassisk 16 -bit maskine med et adresseområde på 216 bytes (65536 bytes eller 32768 ord).

Der er intet stakkoncept i processoren og intet stakpointerregister. I stedet er der springinstruktioner, der gemmer programtælleren i et register og ændrer arbejdsområderegistret. Der er 16 hardware- og 16 softwareafbrydelsesvektorer, som hver indeholder et par pc-programtæller- og WP-arbejdsområderegisterværdier, således at kontekstskiftet af registrene på tidspunktet for afbrydelsen er automatisk.

Adressering og kommandosystem

TMS9900 instruktionssættet består af 72 instruktioner i længden fra et til tre maskinord, altid placeret i hukommelsen ved en ordgrænse. Instruktionssystemet er ret ortogonalt , hvilket betyder, med nogle få undtagelser, at alle operandadresseringstilstande kan bruges i instruktioner .

Adresseringstilstande inkluderer direkte (instruktionen indeholder operanden), direkte eller "symbolsk" (instruktionen indeholder adressen på operanden), register (operanden er indeholdt i arbejdsområderegistret), register indirekte (adressen på operanden er indeholdt i arbejdsområderegistret) med eller uden auto-increment, indeks (indholdet af arbejdsområderegistret tilføjes til adressen på operanden i kommandoen) og adressering i forhold til programtælleren .

De grundlæggende to-adresse-instruktioner (tilføj, subtraher, sammenlign, flyt osv.) indeholder et 2-bit adresseringstilstandsfelt og et 4-bit registervalgsfelt for kildeoperanden og destinationsoperanden. I opkoden er den "symbolske" adresseringstilstand repræsenteret som indekseret med registerfeltet sat til 0, så arbejdsområderegister 0 (WR0) kan ikke bruges til indekseret adressering. I mindre almindeligt anvendte to-adresse instruktioner, såsom XOR, skal destinationsoperanden være et arbejdsområderegister (eller et par registre i tilfælde af multiplikations- og divideringsinstruktioner).

Rækkefølgen for instruktionsudførelse er tilvejebragt af en gruppe på én ubetinget instruktion og tolv betingede springinstruktioner. Springadresser indstilles i forhold til instruktionstælleren med en offset fra -128 til +127 maskinord.

For at kalde subrutiner skal du bruge kommandoen BLWP (Branch and Load Workspace Pointer), som indlæser de nye værdier af WP- og PC-registrene og gemmer de tidligere værdier af WP-, PC- og ST-registrene i de nyligt tildelte registre 13, 14 og 15 I slutningen af ​​subrutinen gendanner kommandoen RTWP (Return Workspace Pointer) værdierne af WP-, PC- og ST-registrene fra registrene 13, 14 og 15. Ved hjælp af BLWP og RTWP kommandoer, er det muligt at foretage indlejrede procedurekald på trods af fraværet af en stak. Programmøren skal dog udtrykkeligt tildele de korrekte hukommelsesplaceringer til arbejdsområderegistrene.

Instruktionssættet indeholder også en gruppe BL (Branch and Link) instruktioner, der kun gemmer PC registeret til register 11 og ikke ændrer WP registeret. I dette tilfælde kan en anden BL-instruktion, der anvender register 11 som springadressen, bruges til at returnere fra subrutinen. I dette tilfælde er indlejrede opkald af subrutiner af typen BL ikke mulige.

TMS9900 har en usædvanlig og sjældent brugt X-kommando (eXecute, execute). Denne kommando giver dig mulighed for at udføre en anden kommando på den angivne adresse uden at afbryde programudførelsen, det vil sige, efter at kommandoen er udført, overføres kontrollen til adressen efter X-kommandoen. Denne kommando kan bruges til debugging (som et breakpoint ) og til at skabe bytekodefortolkere .

Formodentlig, sammenlignet med Intel 8086 , tillod TMS9900 skabelsen af ​​mere kompakte programmer. Væsentlige ulemper var den begrænsede adresseplads, behovet for at forudlæse et ord fra hukommelsen, hvis kun én byte skulle ændres, og behovet for hurtig RAM.

Implementering

TMS9900 blev implementeret i en N-kanal silicium gate MOS-proces [1] ved brug af tre +5V, -5V og +12V forsyninger og clocket til et maksimalt 3 MHz firefaset ur (333ns cyklustid) [2] , typisk genereret af TIM9904 clock generator (også kendt som 74LS362) fra en 48 MHz referencefrekvens.

De korteste instruktioner tog otte cyklusser eller 2,7 µs (forudsat at der ikke var nogen eksterne ventecyklusser), de fleste af de andre krævede 10 til 14 cyklusser (3,3-4,7 µs). Den længste eksekverende instruktion (DIV) kunne kræve op til 124 cyklusser (41,3 μs) [3] .

Processoren var pakket i en usædvanlig 64-bens DIP-pakke til den tid . Et relativt stort antal stifter gjorde det muligt separat at udlæse 15 adressebuslinjer (da hukommelsen tilgås af ord, bruges den mindst signifikante bit ikke) og 16 databuslinjer uden brug af multipleksing (som det f.eks. gøres i Intel 8086-processor ), samtidig med at det er nemt at tilslutte ekstern hukommelse. I modsætning til den konvention, der anvendes af mange producenter, udpegede TI de øverste bits af adresse- og databusserne som "A0" og "D0". Alle interne busser og ALU'er er 16-bit.

Processoren kan standses med adressebussen placeret i en højimpedanstilstand, så eksterne enheder kan udføre direkte hukommelsesadgang . Hukommelsesadgange er altid 16-bit, med automatisk forudlæsning af et ord fra hukommelsen, når kun én byte skal ændres.

Hardwareafbrydelsessystemet understøtter en 4-bit afbrydelsesprioritetsinput. For at en interrupt kan udføres, skal værdien ved denne indgang være større end det prioritetsniveau, der er indstillet i statusregisteret (bit 12-15). Derudover giver /LOAD input en dedikeret vektor NMI-funktion [4] .

TMS9900-processoren indeholder også et 16-bit skiftregister (CRU) designet til at interface med I/O-enheder. Specielle processorinstruktioner giver dig mulighed for at adressere op til 4096 one-bit I/O-porte samt udføre I/O-operationer på grupper fra 1 til 16 porte.

Periferiudstyr med parallelle grænseflader kan tilsluttes ved hjælp af register-til-hukommelse I/O-registertilknytning til konventionelle adresse- og databusser.

Brug

TMS9900 blev brugt i TI-99/4 og TI-99/4A hjemmecomputere . For at reducere produktionsomkostningerne lavede Texas Instruments desværre hurtig RAM med kun 128 16-bit ord direkte tilgængelige for TMS9900-processoren. Resten af ​​hukommelsen, 16 KB i størrelse, var 8-bit og tilgængelig for processoren kun indirekte via skærmcontrolleren, hvilket reducerede ydeevnen af ​​TI-99/4 markant.

Senere udviklede Texas Instruments en mere kraftfuld og forbedret TMS99000-processor, som blev brugt i 990/10A minicomputeren for at reducere omkostningerne. Desværre, da 990/10A kom på markedet, var slutningen på minicomputer-æraen blevet tydelig.

Indstillinger

Model Beskrivelse
TI990/9 Tidlig multi-chip version af processoren til minicomputere, 1974
TI990/10 Multichip-version til minicomputere, 1975
TI990/12 Multichip-version hurtigere end 990/10.
TMS9900 Single-chip version, 1976. Brugt i TI-99/4(A) computeren.
TMS9940 Mikrocontroller med 2 KB ROM, 128 bytes RAM, decrementer, CRU bus, 1979
TMS9980, TMS9981 8-bit versioner af TMS9900
TMS9985 TMS9940 med 8 KB ROM, 256 bytes RAM og 8-bit ekstern bus, ca. 1978 (ikke udgivet)
TMS9989 En forbedret version af 9980, der bruges i militært udstyr.
TMS9995 Forbedret version af TMS9985, uden ROM. Brugt i TI-99/8 prototypen og Geneve computeren.
TMS99000 Forbedret single-chip version af 9900, beregnet til at erstatte 990/10, 1981
TMS99105 Evne til at efterligne yderligere instruktioner
TMS99110 Forbedret 99105

Noter

  1. 1 2 TMS9900 Microprocessor Data Manual . - Texas Instruments Inc., 1976. Arkiveret kopi (link ikke tilgængeligt) . Hentet 24. februar 2013. Arkiveret fra originalen 16. maj 2012. 
  2. TMS9900 Microprocessor Data Manual . - Texas Instruments Inc., 1976. Arkiveret kopi (link ikke tilgængeligt) . Hentet 24. februar 2013. Arkiveret fra originalen 16. maj 2012. 
  3. TMS9900 Microprocessor Data Manual . - Texas Instruments Inc., 1976. Arkiveret kopi (link ikke tilgængeligt) . Hentet 24. februar 2013. Arkiveret fra originalen 16. maj 2012. 
  4. TMS9900 Microprocessor Data Manual . - Texas Instruments Inc., 1976. Arkiveret kopi (link ikke tilgængeligt) . Hentet 24. februar 2013. Arkiveret fra originalen 16. maj 2012. 

Links