Intel, AMD, Motorola, IBM, Sun, MIPS, Zilog, ARM, sono le aziende sicuramente più note a chi bazzica nel mondo dell’informatica, e rappresentano delle autentiche istituzioni nel campo dei microprocessori. Più “defilata” è la posizione di Texas Instruments (abbreviata con TI), multinazionale impegnata sul fronte delle soluzioni embedded, in particolare basate su core ARM.
Sembrerà strano, ma TI ha, invece, una lunga e gloriosa tradizione nel campo dell’elettronica in generale, ma anche dei processori, che addirittura ci porta indietro nel tempo in cui aziende pioneristiche entravano in un mercato che si stava formando, e che vide fiorire numerose e interessanti architetture.
Era, infatti, il 1976 quando TI presentò la sua TMS9900, fra le prime CPU a 16 bit a essere commercializzate, mentre le “grandi firme” citate prima erano (per chi c’era già) per lo più ferme agli 8 bit…
TI non aveva alle spalle processori già realizzati (a parte per le sue famose calcolatrici) e per i quali aveva la necessità di mantenere una certa compatibilità (a livello hardware, come Zilog con lo Z80, o software, come Intel con l’8086) o, quanto meno, una forte ispirazione (MOS col 6502), per cui gli ingegneri diedero fondo alla loro creatività nel progettare il chip, introducendo aspetti indubbiamente originali e innovativi.
Una parola credo sia sufficiente a inquadrare il 9900: memoria. Si tratta, infatti, di un microprocessore che potremmo definire “memory-based”, in quanto ha fatto dell’utilizzo della memoria il suo cavallo di battaglia, sfruttando all’eccesso questo componente che, è bene ricordalo, rimane pur sempre esterno alla CPU.
Il 9900 internamente conserva soltanto tre registri: il PC (Program Counter, che “punta” all’istruzione successiva a quella correntemente elaborata), lo ST (Status Register, che conserva lo stato corrente e i flag per le condizioni), e il WP (Workspace Pointer, che indirizza un’area di memoria). E i registri per lavorare? Non ci sono, ovviamente, perché… stanno tutti in memoria!
L’area indirizzata dal WP è proprio quella in cui risiedono i 16 registri general purpose a 16 bit utilizzati da questa CPU. Quindi se un’istruzione fa riferimento a uno di essi, il processore utilizza il WP per ricavarne l’indirizzo di memoria in cui si trova, per poi finalmente leggere o scriverne il contenuto.
Sembra tutto molto macchinoso (e in un certo senso lo è), ma tutto questo lavoro viene svolto internamente dal chip, per cui per un programmatore che i registri stiano in memoria o all’interno della CPU, poco importa, in quanto il meccanismo ai suoi occhi è totalmente trasparente.
Ma un programmatore che si rispetti storcerà comunque il naso: l’accesso alla memoria è infatti, il suo peggior incubo! Sa bene che la memoria è il dispositivo più lento e bisogna minimizzarne l’uso, in quanto può incidere molto pesantemente (in maniera negativa, ovviamente) sulle prestazioni. Il 9900 rappresenta, quindi, una stortura rispetto a questo modello. Un chip da scartare “preventivamente”.
In realtà bisogna sempre contestualizzare nelle valutazioni che si fanno. All’epoca il dispositivo più veloce era proprio la memoria, mentre i microprocessori quelli… più lenti! Ne sa bene qualcosa il 6502, altro processore fortemente orientato all’intenso sfruttamento della memoria, e le cui prestazioni erano tutt’altro che scarse.
Proprio sul campo il 9900 “mostrò i muscoli”: aveva, infatti, prestazioni mediamente superiori al blasonato 8086 di Intel (impressione confermata da un’occhiata ai cicli di clock impiegati per ogni istruzione), e addirittura un codice più compatto sebbene facesse uso di opcode a 16 bit (soluzione adottata anche da Motorola con la fortunatissima e rinomata famiglia 68000) anziché a 8 bit (come la stragrande maggioranza delle CPU dell’epoca… e non).
Ciò era possibile grazie al fatto che l’architettura era sostanzialmente “memory-to-memory“, come la definisce la stessa TI nel datasheet del 9900. Le istruzioni più importanti erano, appunto, in grado di accedere a operandi entrambi presenti in memoria e… sfruttando qualunque modalità d’indirizzamento (di cui era riccamente e variamente dotato).
Quindi non soltanto la classica istruzione “MOVE“ (per spostare dati da un “posto” a un altro), ma anche addizione, sottrazione, confronto, “OR” logico ed “AND“ logico potevano operare indifferentemente con dati presenti entrambi in memoria. Roba da lasciare a bocca aperta persino il 68000, che poteva fare lo stesso soltanto con la “MOVE“, mentre con le altre istruzioni aveva delle forti limitazioni…
Avere tutti i registri in memoria comportava anche un indiscutibile vantaggio: i tempi di context switch (cioé il passaggio da un processo a un altro, oppure la gestione delle richieste di interrupt; operazioni che richiedono il completo cambiamento dello stato del processore, e quindi anche di tutti i registri) risultavano ridottissimi. Era sufficiente conservare i tre registri prima citati (PC, ST e WP), e il gioco era fatto! Anche qui, roba da far impallidire 80286 e 80386 di Intel e, peggio ancora, il suo Itanium, che in questi casi patiscono enormemente per l’onerosa operazione.
La vocazione fortemente embedded di TI si vedeva anche da alcune soluzioni adottate. Le più importanti e degne di nota sono l’introduzione di un’apposita istruzione (e relativo stato di funzionamento) per porre il processore in stato di IDLE (e quindi consumare meno), istruzioni per spedire in maniera seriale campi di bit (da 1 a 16) da e verso le periferiche, e i ben 16 livelli di interrupt che metteva a disposizione tramite autovettorizzazione (il 68000 ne aveva 8, e l’8086… soltanto due).
Ci sarebbe parecchio altro da dire sul 9900, ma mi fermo qui perché l’articolo non ha la pretesa di un saggio tecnico che richiederebbe troppo spazio.
Con tutta questa carne sul fuoco è lecito chiedersi come mai questa CPU non abbia “sfondato”. Difficile a dirsi. Forse a causa del packaging da ben 64 pin, che comporta la realizzazione di schede madri più complesse e costose.
La risposta più realistica, però, penso sia rappresentata dai problemi che TI ha avuto con l’home computer TI 99 che lanciò nel 1981, il quale a causa di gravi problemi dell’alimentatore (che potevano comportare lesioni agli utilizzatori) provocò un enorme danno di immagine dalla quale la compagnia non riuscì a riprendersi e che le fu fatale, costringendola, purtroppo, a uscire da questo mercato (estremamente importante per lo “smercio” del 9900).