Texas Instruments TMS9900

Versiunea actuală a paginii nu a fost încă revizuită de colaboratori experimentați și poate diferi semnificativ de versiunea revizuită pe 20 august 2017; verificările necesită 7 modificări .
TMS9900
CPU

versiunea TMS9900JL într-o carcasă ceramică cu știfturi placate cu aur
Productie 1976
Producător
Tehnologia de producție N-MOP, 6  um
Conector
  • DIP64
Nuclei

Microprocesorul TMS9900 , introdus în iunie 1976, a fost unul dintre primele microprocesoare cu un singur cip pe 16 biți disponibile comercial . TMS9900 a fost folosit în principal în computerul de acasă TI-99/4A .

Istorie

TMS9900 a fost proiectat ca o versiune cu un singur cip a minicomputerului din seria TI-990 , similar cu modul în care microprocesorul Intersil 6100 a fost o versiune cu un singur cip a minicomputerului PDP-8 pe 12 biți , iar Fairchild Semiconductor 9440 și Data General mN601 microprocesoarele erau versiuni cu un singur cip ale minicomputerului pe 16 biți.-Computer Data General Nova . TMS9900 era diferit prin faptul că toate componentele sale erau pe un singur cip, în timp ce microprocesoarele National Semiconductor IMP-16 sau DEC LSI-11 pe 16 biți care existau la acea vreme erau un set de mai multe cipuri.

Arhitectură

O caracteristică a arhitecturii TMS9900 este absența registrelor de uz general încorporate și stocarea acestora în RAM . TMS9900 are trei registre încorporate pe 16 biți - contorul de programe (PC), registrul de stare (ST) și registrul pointerului spațiului de lucru (WP) [1] . Registrul WP indică adresa de pornire din RAM, începând de la care sunt stocate cele 16 registre de uz general ale procesorului (fiecare cu lățime de 16 biți). Această arhitectură permite schimbarea rapidă a contextului . De exemplu, atunci când introduceți o subrutină , în loc să salvați valorile curente ale registrelor individual, este suficient să schimbați conținutul registrului spațiului de lucru.

La adresarea memoriei, ordinea octetilor este folosită de la mare la scăzut. TMS9900 este o mașină clasică de 16 biți cu un spațiu de adrese de 216 octeți (65536 octeți sau 32768 cuvinte).

Nu există un concept de stivă în procesor și nici un registru de pointer de stivă. În schimb, există instrucțiuni de salt care stochează contorul de program într-un registru și modifică registrul spațiului de lucru. Există 16 vectori de întrerupere hardware și 16 software, fiecare dintre care conține o pereche de valori de contor de programe PC și de registru al spațiului de lucru WP, astfel încât comutarea de context a registrelor în momentul întreruperii este automată.

Sistem de adresare și comandă

Setul de instrucțiuni TMS9900 constă din 72 de instrucțiuni cu lungime de la unul la trei cuvinte mașină, întotdeauna localizate în memorie la granița unui cuvânt. Sistemul de instrucțiuni este destul de ortogonal , ceea ce înseamnă, cu câteva excepții, că orice mod de adresare a operanzilor poate fi utilizat în instrucțiuni .

Modurile de adresare includ direct (instrucțiunea conține operandul), direct sau „simbolic” (instrucțiunea conține adresa operandului), registru (operandul este conținut în registrul spațiului de lucru), registru indirect (adresa operandului este conținută ). în registrul spațiului de lucru) cu sau fără autoincrementare, index (conținutul registrului spațiului de lucru este adăugat la adresa operandului din comandă) și adresare relativ la contorul programului .

Instrucțiunile de bază cu două adrese (adăugați, scădeți, comparați, mutați etc.) conțin un câmp pentru modul de adresare de 2 biți și un câmp de selectare a registrului de 4 biți pentru operandul sursă și operandul destinație. În opcode, modul de adresare „simbolic” este reprezentat ca indexat cu câmpul de registru setat la 0, astfel încât registrul de spațiu de lucru 0 (WR0) nu poate fi utilizat pentru adresarea indexată. În instrucțiunile cu două adrese mai puțin utilizate, cum ar fi XOR, operandul destinație trebuie să fie un registru de spațiu de lucru (sau o pereche de registre în cazul instrucțiunilor de înmulțire și împărțire).

Ordinea de execuție a instrucțiunii este furnizată de un grup de o instrucțiune necondiționată și douăsprezece instrucțiuni de sărituri condiționate. Adresele de salt sunt setate în raport cu contorul de instrucțiuni cu un offset de la -128 la +127 cuvinte mașină.

Pentru a apela subrutine, utilizați comanda BLWP (Branch and Load Workspace Pointer), care încarcă noile valori ale registrelor WP și PC și stochează valorile anterioare ale registrelor WP, PC și ST în noile alocate. registrele 13, 14 și 15 La sfârșitul subrutinei, comanda RTWP (Return Workspace Pointer) restabilește valorile registrelor WP, PC și ST din registrele 13, 14 și 15. Folosind BLWP și RTWP comenzi, este posibil să se efectueze apeluri de proceduri imbricate în ciuda absenței unei stive. Cu toate acestea, programatorul trebuie să atribuie în mod explicit locațiile corecte de memorie registrelor spațiului de lucru.

Setul de instrucțiuni conține, de asemenea, un grup de instrucțiuni BL (Branch and Link) care salvează doar registrul PC în registrul 11 ​​și nu modifică registrul WP. În acest caz, o altă instrucțiune BL, folosind registrul 11 ​​ca adresă de salt, poate fi folosită pentru a reveni din subrutină. În acest caz, apelurile imbricate ale subrutinelor de tip BL nu sunt posibile.

TMS9900 are o comandă X neobișnuită și rar folosită (eXecute, execute). Această comandă vă permite să executați o altă comandă la adresa specificată fără a întrerupe execuția programului, adică după executarea comenzii, controlul este transferat la adresa în urma comenzii X. Această comandă poate fi folosită pentru depanare (ca punct de întrerupere ) și pentru crearea interpreților de cod de octet .

Probabil, în comparație cu Intel 8086 , TMS9900 a permis crearea de programe mai compacte. Dezavantaje semnificative au fost spațiul de adrese limitat, necesitatea de a pre-citi un cuvânt din memorie dacă trebuia modificat doar un octet și nevoia de RAM rapidă.

Implementare

TMS9900 a fost implementat într-un proces MOS de poartă de siliciu cu canal N [1] folosind trei surse de +5V, -5V și +12V și tactat la un ceas cu patru faze de maxim 3 MHz (timp de ciclu 333ns) [2] , de obicei generat de generatorul de ceas TIM9904 (cunoscut și ca 74LS362) de la o frecvență de referință de 48 MHz.

Cele mai scurte instrucțiuni au durat opt ​​cicluri sau 2,7 µs (cu condiția să nu existe cicluri de așteptare externe), majoritatea celorlalte au necesitat 10 până la 14 cicluri (3,3-4,7 µs). Cea mai lungă instrucțiune de execuție (DIV) ar putea necesita până la 124 de cicluri (41,3 μs) [3] .

Procesorul a fost ambalat într-un pachet DIP neobișnuit cu 64 de pini pentru acea perioadă . Un număr relativ mare de pini a făcut posibilă ieșirea separată a 15 linii de magistrală de adrese (din moment ce memoria este accesată prin cuvinte, bitul cel mai puțin semnificativ nu este utilizat) și a 16 linii de magistrală de date fără a utiliza multiplexarea (cum se face, de exemplu, în procesor Intel 8086 ), menținând în același timp ușurința de conectare a memoriei externe. Spre deosebire de convenția folosită de mulți producători, TI a desemnat biții superiori ai magistralelor de adrese și de date ca „A0” și „D0”. Toate magistralele interne și ALU -urile sunt pe 16 biți.

Procesorul poate fi oprit cu magistrala de adrese plasată într-o stare de impedanță ridicată pentru ca dispozitivele externe să efectueze acces direct la memorie . Accesurile la memorie sunt întotdeauna pe 16 biți, cu pre-citire automată a unui cuvânt din memorie atunci când doar un octet trebuie modificat.

Sistemul de întrerupere hardware acceptă o intrare cu prioritate de întrerupere pe 4 biți. Pentru ca o întrerupere să fie executată, valoarea la această intrare trebuie să fie mai mare decât nivelul de prioritate setat în registrul de stare (biții 12-15). În plus, intrarea /LOAD oferă o capacitate NMI vectorială dedicată [4] .

Procesorul TMS9900 conține, de asemenea, un registru de deplasare pe 16 biți (CRU) conceput pentru a interfața cu dispozitivele I/O. Instrucțiunile speciale ale procesorului vă permit să adresați până la 4096 de porturi I/O pe un bit, precum și să efectuați operațiuni I/O pe grupuri de la 1 la 16 porturi.

Perifericele cu interfețe paralele pot fi conectate utilizând maparea registrului I/O registru la memorie la magistralele convenționale de adrese și date.

Utilizare

TMS9900 a fost folosit în computerele de acasă TI-99/4 și TI-99/4A . Din păcate, pentru a reduce costurile de producție, Texas Instruments a făcut RAM rapidă cu doar 128 de cuvinte pe 16 biți direct disponibile pentru procesorul TMS9900. Restul memoriei, de 16 KB, era pe 8 biți și accesibilă procesorului doar indirect, prin intermediul controlerului de afișare, ceea ce a redus semnificativ performanța TI-99/4.

Mai târziu, Texas Instruments a dezvoltat un procesor TMS99000 mai puternic și mai îmbunătățit, care a fost folosit în minicalculatorul 990/10A pentru a reduce costul. Din păcate, până când 990/10A a ajuns pe piață, sfârșitul erei minicomputerelor devenise evident.

Opțiuni

Model Descriere
TI990/9 Versiunea timpurie cu mai multe cipuri a procesorului pentru minicalculatoare, 1974
TI990/10 Versiune multicip pentru minicalculatoare, 1975
TI990/12 Versiune multicip mai rapidă decât 990/10.
TMS9900 Versiune cu un singur cip, 1976. Folosit în computerul TI-99/4(A).
TMS9940 Microcontroler cu 2 KB ROM, 128 octeți RAM, decrementator, magistrală CRU, 1979
TMS9980, TMS9981 Versiuni pe 8 biți ale lui TMS9900
TMS9985 TMS9940 cu 8 KB ROM, 256 de octeți RAM și magistrală externă de 8 biți, circa 1978 (nelansat)
TMS9989 O versiune îmbunătățită a lui 9980, folosită în echipamentele militare.
TMS9995 Versiune îmbunătățită a TMS9985, fără ROM. Folosit în prototipul TI-99/8 și în computerul Geneve.
TMS99000 Versiune îmbunătățită cu un singur cip a lui 9900, menită să înlocuiască 990/10, 1981
TMS99105 Abilitatea de a emula instrucțiuni suplimentare
TMS99110 99105 îmbunătățit

Note

  1. 1 2 Manual de date microprocesor TMS9900 . - Texas Instruments Inc., 1976. Copie arhivată (link nu este disponibil) . Preluat la 24 februarie 2013. Arhivat din original la 16 mai 2012. 
  2. TMS9900 Microprocessor Data Manual . - Texas Instruments Inc., 1976. Copie arhivată (link nu este disponibil) . Preluat la 24 februarie 2013. Arhivat din original la 16 mai 2012. 
  3. TMS9900 Microprocessor Data Manual . - Texas Instruments Inc., 1976. Copie arhivată (link nu este disponibil) . Preluat la 24 februarie 2013. Arhivat din original la 16 mai 2012. 
  4. TMS9900 Microprocessor Data Manual . - Texas Instruments Inc., 1976. Copie arhivată (link nu este disponibil) . Preluat la 24 februarie 2013. Arhivat din original la 16 mai 2012. 

Link -uri