L'architettura dei calcolatori: microprogrammazione.


Con il termine microprogrammazione si indica una tecnica di progettazione dei sistemi di calcolo messa a punto da Wilkies nel 1951. Fu quasi immediatamente impiegata per la realizzazione dei minicomputer, ed ora è ampiamente diffusa nel settore dei Personal Computer.

I processori a logica programmata differiscono da quelli a logica dedicata soprattutto nell'unità di governo, in quanto ora essa stessa è il risultato di esecuzione di un microprogramma: al suo interno ci sono delle microunità che eseguono le operazioni elementari dei microprogrammi associati alle istruzioni macchina riconosciute dalla CPU .

Realizzare un processore con questa tecnologia è più facile, soprattuto nel caso si desideri espandere il suo set di istruzioni.
Nel precedente approccio a logica dedicata, era necessario realizzare una nuova rete logica per ciascuna nuova istruzione, poi si procedeva alla sua integrazione con il circuito preesistente.
Con questo nuovo approccio invece, è sufficiente aggiungere un nuovo microprogramma per ciascuna nuova istruzione lasciando inalterato il numero delle microunità, per altro già progettate e testate, a meno chè non si desideri aggiungere qualche nuova microunità per ottimizzare le nuove istruzioni o sostiturne qualcuna ritenuta inefficiente.

I microprogrammi sono memorizzati in un'area di memoria non cancellabile, ovvero di tipo ROM , che viene detta Memoria di Controllo. Ad ogni nuova revisione della CPU è sufficiente estendere questa memoria per ospitare i nuovi microprogrammi i quali sono scritti in un particolare linguaggio detto RTL . A titolo di esempio vediamo un mini-programma che simula l'operazione FETCH eseguità dall'unità di governo:

FETCH:  PC -> MAR
        MEM[MAR] -> MDR
        MDR -> IR
        PC + 1 -> PC


Ciascuna microistruzione richiede un microciclo di clock che può coincidere con il ciclo di clock della CPU, come accadeva in passato, o con un suo multiplo, come accade oggi al fine di completare più microistruzioni per ciclo di clock, e guadagnando così in velocità. Questo è un'ulteriore incentivo a spingere i processori a lavorare internamente a frequenze multiple di quanto non facciano esternamente.

Possiamo riassumere il discorso dicendo che la CPU a logica microprogrammata possiede un proprio linguaggio a bassissimo livello attraverso il quale viene emulato il linguaggio macchina. Può sembrare una cosa strana, ma torna utile in più di un'occasione. Per esempio una macchina C1 con un linguaggio L1, può eseguire i programmi scritti nel linguaggio L2 per la macchina C2, semplicemente aggiungendo nella memoria di controllo della C1 i microprogrammi necessari per interpretare il linguaggio L2. In questi casi si dice che C1 può emulare C2.
Non è fantainformatica, in giro ci sono già diversi processori compatibili con il linguaggio macchina di altre CPU, basti pensare alla caterva di cloni x86 (tecnologia alla base del PENTIUM ), ma c'è chi si è spinto anche oltre. Una nuova startup company dal nome pittoresco di Transmeta ha fatto domanda di brevetto per una CPU riprogrammabile al volo, quindi virtualmente compatibile con qualunque processore esistente. L'idea è indubbiamente buona, ma bisognerà vedere se le sue microunità saranno sufficientemente veloci da consentire un emulazione soddisfacente o per quanto tempo la CPU resterà commercialmente valida.

In teoria sarebbe possibile realizzare una CPU virtualmente compatibile con tutte le altre passate, presenti e future. La sua memoria di controllo non dovrebbe essere del tipo ROM, ma del tipo non volatile, ovvero una memoria che può essere alterata come la comunissima RAM , ma che non perda il suo contenuto quando l'alimentazione è interrotta. In questo modo, anche dopo la sua vendita sarà possibile estenderne le funzionalità, un po' come già accade oggi con gli aggiornamenti del BIOS delle piastre madri delle architetture WINTEL .

Francesco De Napoli