Unità di controllo (informatica): differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
m Annullate le modifiche di 82.51.161.65 (discussione), riportata alla versione precedente di 93.38.195.0 |
|||
Riga 16:
=== Micro-linguaggio ===
Guardando più attentamente è possibile osservare il cazzo dei cinesi che il compito dell'unità di controllo è simile a quello di un microprocessore ovvero effettuare delle scelte a seconda degli input e reagire di conseguenza (sequenzializzare le micro-operazioni ecc). È possibile quindi costruire un '''linguaggio di micro-programmazione'''. Sostanzialmente un segnale di controllo è una linea che varia tra 0 e 1 a seconda se il segnale deve essere spento o attivo. Ogni microistruzione deve quindi associare il valore 1 ai segnali di controllo richiesti dalle micro-operazioni la cui esecuzione è prevista in tale microistruzione. Per ogni codice operativo previsto si deve definire una sequenza di micro-operazioni, ossia un micro-programma. I micro-programmi prendono il nome di [[firmware]], sottolineando la loro appartenenza sia all'hardware sia al software. Il ''firmware'' è memorizzato in una memoria interna chiamata ''memoria di controllo''. Ovviamente anche in questo caso occorre effettuare delle scelte rivolte all'efficienza e al numero di microprogrammi richiesti. Nei moderni microprocessori vi sono molti registri e controlli da eseguire, per cui l'unica soluzione è quella di implementare microistruzioni composte da molti [[bit]] per gestire il gran numero di controlli da eseguire. La lunghezza delle microistruzioni è composta da tre fattori: dal massimo numero di micro-istruzioni diverse da gestire contemporaneamente, dalle modalità di codifica e rappresentazione dei segnali di controllo e dalle modalità con cui si specifica l'indirizzo della successiva microistruzione da eseguire. Si distinguono qui due modelli:
* la ''microprogrammazione verticale'' dove ogni microistruzione specifica poche microoperazioni da eseguire. In questo caso le microistruzioni hanno pochi bit, dove n segnali di controllo sono rappresentati da log2 n bit, ed è quindi necessaria una decodifica successiva dell'istruzione per generare i segnali di controllo
* o una ''microprogrammazione orizzontale'' dove si possono specificare molti segnali di controllo in parallelo e avere tanti bit quanti sono i segnali di controllo da generare. In questo caso è possibile effettuare un elevato parallelismo, e la codifica dei segnali è nulla o limitata.
|