Unità di controllo (informatica): differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
m Bot: specificità dei wikilink tipologie di cicli |
m Bot: aggiungo template {{Collegamenti esterni}} (ref) |
||
Riga 7:
* l'istruzione, contenente il [[codice operativo]], sul quale determina le micro-istruzioni da eseguire
* i segnali di [[flag]], che determinano lo stato della CPU e danno indicazioni sul precedente stato della ALU
* e segnali dal [[
In output genera segnali interni alla CPU di trasferimento dati e di controllo della alu, e segnali attraverso il bus di controllo per memoria e I/O per quanto riguarda il resto del sistema.
Riga 13:
== Tecniche di implementazione ==
=== Rete combinatoria ===
È possibile implementare l'unità di controllo come [[rete combinatoria]] che genera delle uscite a seconda degli ingressi, sempre possibile per il [[Teorema di Shannon (elettronica)|Teorema di Shannon]]. I limiti di questo metodo sono una difficile progettazione e collaudo, e la scarsa flessibilità del sistema. Se si dovesse aggiungere un'istruzione o qualche controllo sarebbe necessario riprogettare il tutto.
=== Micro-linguaggio ===
Riga 29:
* Il [[sequenziatore]] inserisce il nuovo indirizzo nel registro CAR sulla base delle informazioni fornitegli dal registro CBR e dei flag provenienti dall'ALU
L'indirizzo successivo dipende dal contenuto del CBR e dei flag provenienti dall'ALU. A questo punto l'unità di controllo o prende l'istruzione successiva aumentando di uno il registro CAR, o salta ad un nuovo microprogramma copiando il contenuto di CBR in CAR attraverso una microistruzione di salto, o ancora saltare ad un altro microprogramma attraverso una vera e propria istruzione del linguaggio macchina in fase di IR.
== Schema di Wilkes ==
Dal punto di vista prettamente fisico, è possibile implementare una unità di controllo microprogrammata attraverso lo schema di ''Wilkes'', ovvero costruendo una griglia di conduttori a formare una enorme [[matrice]], con dei [[diodi]] collegati agli incroci. Ad ogni colpo di clock viene attivata una riga della matrice, ottenendo dei segnali d'uscita alle colonne collegate con i diodi. La prima parte delle colonne riguarda le istruzioni da eseguire, la seconda parte l'istruzione successiva da eseguire. Ogni riga rappresenta quindi la microistruzione da eseguire e l'intera matrice è la memoria delle microistruzioni. Ovviamente questo schema è rigorosamente orizzontale, e richiede un gran numero di bit. È possibile utilizzare schemi più complessi per la generazione dell'indirizzo successivo che richiedono moduli di sequenzializzazione.
Supponiamo che l'unità di controllo debba generare K segnali, sia esterni che interni. Con lo schema di Wilkes abbiamo 2k configurazioni possibili. Non tutte queste vengono utilizzate per vari motivi (due sorgenti non possono essere inviate alla stessa destinazione nello stesso ciclo, un registro non può essere sorgente e destinazione nello stesso ciclo, in un ciclo l'ALU può ricevere un unico segnale, in un ciclo il bus di controllo esterno può ricevere un unico segnale), e si potrebbe quindi pensare di ridurre il numero di segnali di ingresso della matrice. Ma questo complicherebbe di parecchio la programmazione e la decodifica in uscita, per cui si usano più bit di quelli strettamente necessari, ma alcune configurazioni non si codificano perché inutilizzate. Una tecnica di codifica delle istruzioni è quella del dividerle in campi, ogni campo, che attiva i suoi segnali di controllo, con la sua codifica. I campi sono indipendenti, e quindi campi diversi possono dare il via ad azioni diverse simultaneamente mentre ogni campo può dare il via a una sola azione per ciclo di clock.
==Pipeline==
Riga 43:
* [[Linguaggio di programmazione]]
* [[Rete combinatoria]]
== Collegamenti esterni ==
* {{Collegamenti esterni}}
{{Portale|Informatica}}
|