TMS9900 | |
---|---|
procesor | |
verze TMS9900JL v keramickém pouzdře s pozlacenými kolíky | |
Výroba | 1976 |
Výrobce | |
Produkční technologie | N-MOP, 6 um |
Konektor |
|
Nuclei |
Mikroprocesor TMS9900 , představený v červnu 1976, byl jedním z prvních komerčně dostupných jednočipových 16bitových mikroprocesorů . TMS9900 se používal hlavně v domácím počítači TI-99/4A .
TMS9900 byl navržen jako jednočipová verze minipočítače řady TI-990 , podobně jako mikroprocesor Intersil 6100 byl jednočipovou verzí 12bitového minipočítače PDP-8 a Fairchild Semiconductor 9440 a Data General mN601 mikroprocesory byly jednočipové verze 16bitového minipočítače.-Computer Data General Nova . TMS9900 byl odlišný v tom, že všechny jeho součásti byly na jediném čipu, zatímco 16bitové mikroprocesory National Semiconductor IMP-16 nebo DEC LSI-11 , které v té době existovaly, byly souborem několika čipů.
Charakteristickým rysem architektury TMS9900 je absence vestavěných univerzálních registrů a jejich ukládání v RAM . TMS9900 má tři vestavěné 16bitové registry – programový čítač (PC), stavový registr (ST) a registr ukazatelů pracovního prostoru (WP) [1] . Registr WP ukazuje na počáteční adresu v RAM, počínaje, na které je uloženo 16 obecných registrů procesoru (každý o šířce 16 bitů). Tato architektura umožňuje rychlé přepínání kontextu . Například při zadávání podprogramu stačí místo individuálního ukládání aktuálních hodnot registrů změnit obsah registru pracovního prostoru.
Při adresování paměti se používá pořadí bajtů od vysoké po nízkou. TMS9900 je klasický 16bitový stroj s adresním prostorem 216 bytů (65536 bytů nebo 32768 slov).
V procesoru neexistuje žádná koncepce zásobníku a žádný registr ukazatelů zásobníku. Místo toho existují instrukce skoku, které ukládají čítač programu do registru a mění registr pracovního prostoru. K dispozici je 16 hardwarových a 16 softwarových vektorů přerušení, z nichž každý obsahuje dvojici PC programového čítače a hodnot registru pracovního prostoru WP, takže přepínání kontextu registrů v okamžiku přerušení je automatické.
Instrukční sada TMS9900 se skládá ze 72 instrukcí o délce od jednoho do tří strojových slov, vždy umístěných v paměti na hranici slova. Instrukční systém je zcela ortogonální , což znamená, až na několik výjimek, že v instrukcích lze použít libovolné režimy adresování operandů .
Režimy adresování zahrnují přímý (instrukce obsahuje operand), přímý nebo „symbolický“ (instrukce obsahuje adresu operandu), registr (operand je obsažen v registru pracovního prostoru), registr nepřímý (adresa operandu je obsažena) . v registru pracovního prostoru) s automatickým přírůstkem nebo bez něj, index (obsah registru pracovního prostoru se přidá k adrese operandu v příkazu) a adresování vzhledem k čítači programu .
Základní instrukce se dvěma adresami (přičíst, odečíst, porovnat, přesunout atd.) obsahují 2bitové pole režimu adresování a 4bitové pole volby registru pro zdrojový operand a cílový operand. V operačním kódu je "symbolický" režim adresování reprezentován jako indexovaný s polem registru nastaveným na 0, takže registr pracovního prostoru 0 (WR0) nelze použít pro indexované adresování. V méně běžně používaných instrukcích se dvěma adresami, jako je XOR, musí být cílovým operandem registr pracovního prostoru (nebo dvojice registrů v případě instrukcí násobení a dělení).
Pořadí provádění instrukce je zajištěno skupinou jedné nepodmíněné instrukce a dvanácti instrukcí podmíněného skoku. Skokové adresy jsou nastaveny relativně k čítači instrukcí s offsetem od -128 do +127 strojových slov.
Pro volání podprogramů použijte příkaz BLWP (Branch and Load Workspace Pointer), který načte nové hodnoty registrů WP a PC a uloží předchozí hodnoty registrů WP, PC a ST do nově přiřazených registrů. registry 13, 14 a 15 Na konci podprogramu příkaz RTWP (Return Workspace Pointer) obnoví hodnoty registrů WP, PC a ST z registrů 13, 14 a 15. Použití BLWP a RTWP příkazů, je možné provádět vnořená volání procedur i přes absenci zásobníku. Programátor však musí registrům pracovního prostoru explicitně přiřadit správná paměťová místa.
Instrukční sada obsahuje také skupinu instrukcí BL (Branch and Link), které pouze uloží registr PC do registru 11 a nemění registr WP. V tomto případě lze pro návrat z podprogramu použít jinou instrukci BL, používající registr 11 jako adresu skoku. V tomto případě nejsou možná vnořená volání podprogramů typu BL.
TMS9900 má neobvyklý a zřídka používaný příkaz X (eXecute, execute). Tento příkaz umožňuje provést další příkaz na zadané adrese bez přerušení provádění programu, to znamená, že po provedení příkazu je řízení přeneseno na adresu následující po příkazu X. Tento příkaz lze použít pro ladění (jako bod přerušení ) a pro vytváření interpretů bytecode .
Ve srovnání s Intel 8086 pravděpodobně TMS9900 umožnil vytvoření kompaktnějších programů. Výraznými nevýhodami byl omezený adresní prostor, nutnost předčíst slovo z paměti, pokud bylo potřeba upravit pouze jeden bajt, a potřeba rychlé RAM.
TMS9900 byl implementován v N-kanálovém procesu křemíkového hradla MOS [1] s použitím tří zdrojů +5V, -5V a +12V a nataktován na maximálně 3 MHz čtyřfázové hodiny (doba cyklu 333ns) [2] , typicky generované generátor hodin TIM9904 (také známý jako 74LS362) z referenční frekvence 48 MHz.
Nejkratší instrukce trvaly osm cyklů nebo 2,7 µs (za předpokladu, že nebyly žádné externí čekací cykly), většina ostatních vyžadovala 10 až 14 cyklů (3,3–4,7 µs). Nejdelší vykonávací instrukce (DIV) může vyžadovat až 124 cyklů (41,3 μs) [3] .
Procesor byl na tu dobu zabalen v nezvyklém 64pinovém DIP pouzdru . Relativně velký počet pinů umožnil samostatně vyvést 15 linek adresové sběrnice (protože se do paměti přistupuje pomocí slov, nevyužívá se nejméně významný bit) a 16 linek datové sběrnice bez použití multiplexování (jak je tomu např. Procesor Intel 8086 ) při zachování snadného připojení externí paměti. Na rozdíl od konvence používané mnoha výrobci TI označila horní bity adresové a datové sběrnice jako „A0“ a „D0“. Všechny interní sběrnice a ALU jsou 16bitové.
Procesor lze zastavit, když je adresová sběrnice umístěna ve stavu s vysokou impedancí, aby externí zařízení mohla provádět přímý přístup do paměti . Přístupy do paměti jsou vždy 16bitové, s automatickým předčtením slova z paměti, když je potřeba upravit pouze jeden bajt.
Hardwarový systém přerušení podporuje 4bitový vstup s prioritou přerušení. Aby se přerušení provedlo, musí být hodnota na tomto vstupu větší než úroveň priority nastavená ve stavovém registru (bity 12-15). Vstup /LOAD navíc poskytuje vyhrazenou schopnost vektorového NMI [4] .
Procesor TMS9900 také obsahuje 16bitový posuvný registr (CRU) navržený pro rozhraní s I/O zařízeními. Speciální instrukce procesoru umožňují adresovat až 4096 jednobitových I/O portů a také provádět I/O operace na skupinách od 1 do 16 portů.
Periferie s paralelními rozhraními lze připojit pomocí mapování I/O registrů mezi I/O na konvenční adresové a datové sběrnice.
TMS9900 byl použit v domácích počítačích TI-99/4 a TI-99/4A . Aby se snížily výrobní náklady, společnost Texas Instruments bohužel zpřístupnila procesoru TMS9900 přímou rychlou RAM s pouze 128 16bitovými slovy. Zbytek paměti o velikosti 16 KB byl 8bitový a procesoru byl přístupný pouze nepřímo, přes řadič displeje, což výrazně snižovalo výkon TI-99/4.
Později Texas Instruments vyvinul výkonnější a vylepšený procesor TMS99000, který byl použit v mini počítači 990/10A, aby se snížily náklady. Bohužel v době, kdy se 990/10A dostal na trh, byl konec éry minipočítačů zjevný.
Modelka | Popis |
---|---|
TI990/9 | Raná vícečipová verze procesoru pro minipočítače, 1974 |
TI990/10 | Multičipová verze pro minipočítače, 1975 |
TI990/12 | Vícečipová verze rychlejší než 990/10. |
TMS9900 | Jednočipová verze, 1976. Používá se v počítači TI-99/4(A). |
TMS9940 | Mikrokontrolér s 2 KB ROM, 128 bajtů RAM, dekrementátor, sběrnice CRU, 1979 |
TMS9980, TMS9981 | 8bitové verze TMS9900 |
TMS9985 | TMS9940 s 8 KB ROM, 256 bajty RAM a 8bitovou externí sběrnicí, cca 1978 (nevydáno) |
TMS9989 | Vylepšená verze 9980, používaná ve vojenském vybavení. |
TMS9995 | Vylepšená verze TMS9985, bez ROM. Používá se v prototypu TI-99/8 a počítači Geneve. |
TMS99000 | Vylepšená jednočipová verze 9900, která má nahradit 990/10, 1981 |
TMS99105 | Schopnost emulovat další instrukce |
TMS99110 | Vylepšeno 99105 |