Unità di controllo (informatica): differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
Nessun oggetto della modifica Etichetta: Link a pagina di disambiguazione |
Migliora forma |
||
(7 versioni intermedie di 7 utenti non mostrate) | |||
Riga 1:
{{F|terminologia informatica|febbraio 2013|nessuna fonte, mancano completamente le sezioni Note, Bibliografia e Collegamenti esterni}}
L{{'}}'''unità di controllo''', abbreviata anche come '''CU''' (dall'[[inglese (lingua)|inglese]]: ''Control Unit''), è un componente della [[CPU]] che ha il compito di coordinare tutte le azioni necessarie per l'esecuzione di una [[Istruzione (informatica)|istruzione]] e di [[Programma (informatica)|insiemi di istruzioni]]. Essa
La sua funzione è quella di recuperare le istruzioni dalla [[memoria principale]], decodificarle (interpretarle) ed eseguirle, utilizzando l'[[CPU|unità di elaborazione centrale]].
Riga 10:
==Struttura del computer==
* [[Unità aritmetica e logica|unità logica e aritmetica]] (ALU): esegue operazioni aritmetiche e logiche;
* unità di controllo: storicamente definita come parte distinta dal modello di riferimento del 1946: l'[[
* memoria: memorizza dati e programmi;
* dispositivi di input e output: alimentano la memoria con dati e istruzioni e forniscono i risultati dei calcoli memorizzati;
Riga 19:
Le uscite della CU sono responsabili del controllo dell'attività del resto del dispositivo. Una CU può essere considerata come una [[macchina a stati finiti]].
La CU è il [[Circuito elettronico|circuito]] che controlla il flusso di dati attraverso il processore e coordina quest'ultimo, che a sua volta controlla il resto del computer.
Esempi di dispositivi che richiedono una CU sono le CPU e le [[GPU]]. La moderna era dell'informazione non sarebbe possibile senza la progettazione di complesse CU.
Riga 32:
===Unità di controllo microprogrammate===
Nel 1951,
==Componenti della CU==
Riga 41:
== Input e output della CU ==
L'unità di controllo riceve in input
* lo stesso ''clock'' che sincronizza lo svolgimento delle singole micro-istruzioni;
* l'istruzione, contenente il [[codice operativo]], sul quale determina le micro-istruzioni da eseguire;
Riga 54:
=== Micro-linguaggio ===
Guardando più attentamente è possibile osservare 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 [[Microprogrammazione|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''.
* la ''microprogrammazione verticale'' dove ogni microistruzione specifica poche
* 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.
Riga 69:
* 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
== 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.
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 ==
{{vedi anche|Pipeline dati}}
In presenza di pipeline all'interno del [[microprocessore]], l'unità di controllo dovrà essere in grado di rilevare hazard sui dati e sui controlli e modificare le istruzioni in corso di esecuzione. Tutti i controlli vengono salvati nei ''registri di pipeline'' e scalate via via in avanti finché non viene completata l'istruzione. L'introduzione della pipeline ha complicato notevolmente la struttura interna dell'unità di controllo, per prevenire i problemi legati agli hazard dei dati e dei controlli.
==Note==
<references/>
== Voci correlate ==
* [[CPU]]
Riga 94 ⟶ 95:
{{Controllo di autorità}}
{{Portale|
[[Categoria:Microprocessore]]
|