Lezione n.5 Percorso dati e unità di controllo
Transcript
Lezione n.5 Percorso dati e unità di controllo
CALCOLATORI ELETTRONICI Percorso dati e Unità di Controllo Lezione n.5 Percorso dati e unità di controllo Autore: Luca Orrù 1 CALCOLATORI ELETTRONICI Percorso dati e Unità di Controllo Sommario • Unità di esecuzione o percorso dati (data path) • Unità di controllo L’architettura interna di una CPU è divisa in due parti: l’unità di esecuzione e l’unità di controllo. L’unità di esecuzione opera sui dati eseguendo le operazioni. L’unità di controllo è la struttura fisica che traduce il comportamento. Agisce sull’unità di esecuzione per fargli svolgere le operazioni. Questa unità, quindi, controlla l’unità di esecuzione generando i segnali di controllo per il Data Path (percorso dati). Esempio di unità di controllo Control Unit Data Path Il percorso dati contiene i registri (memorie), le unità funzionali (es.sommatori), quindi i moduli fisici che operano sui dati. L’unità complessiva può essere rappresentata nel seguente modo: Xin Inizio delle operazioni Unità di controllo C’in Ingresso dati Xout Operazioni terminate C’out Percorso dati Uscita dati L’unità di controllo è realizzata a partire dalla descrizione delle operazioni che noi vogliamo che l’unità di esecuzione esegua. Autore: Luca Orrù 2 CALCOLATORI ELETTRONICI Percorso dati e Unità di Controllo C’in è un comando che l’unità di controllo manda all’unità di esecuzione. C’out è un insieme di linee (in numero inferiore alle linee C’in, che permettono al percorso dati (unità di esecuzione) di comunicare all’unità di controllo eventuali situazioni particolari come un riporto o un risultato nullo. Xin e Xout sono delle linee di comunicazione con altre unità di controllo a livello superiore. L’unità di controllo (UC) è gestita da altre unità di controllo a livello superiore che comandano all’UC l’inizio(Xin) e la fine (Xout) delle operazioni. Il percorso dati è influenzato da dei dati che arrivano in ingresso e fornisce dei risultati. Vediamo ora la realizzazione della struttura. Unità Dati e Unità di Controllo BUS C1 C3 C7 C10 C11 R1 C2 R2 C4 C6 C5 1 Unità funzionale C8 R3 C9 C1 C11 Unità di controllo Autore: Luca Orrù 3 CALCOLATORI ELETTRONICI Percorso dati e Unità di Controllo L’unità di controllo seleziona i cammini che devono essere attivi in un determinato istante per svolgere determinate operazioni. L’unità funzionale è per esempio un sommatore, oppure un’unità di operazioni (OR, AND, XOR, etc). R1, R2, R3 sono registri. Agli ingressi 1 e 2 dell’unità funzionale non possono arrivare segnali/dati da più percorsi. Esempio: all’input 1 potrebbero arrivare dati dal BUS, dal registro R1 e da R2. Se arrivassero contemporaneamente si avrebbe un conflitto (di tipo elettrico). Allora occorre fare in modo che un solo percorso sia attivo. Per fare questo si usano i punti di controllo C1, C2, C3, C4 e C5 che sono governati dall’unità di controllo, la quale fornisce istante per istante i segnali di controllo che forza i percorsi attivi e l’unità funzionale a svolgere quella determinata operazione. I segnali di controllo C10 e C11 specificano all’unità funzionale quale operazione deve svolgere (AND, OR etc). Nel caso delle linee C3, C4, C5 solo uno dei controlli C3, C4, C5 sarà attivato (posto a 1); gli altri saranno posti a zero (disattivati). Il percorso dati è quindi costituito da innumerevoli percorsi. Vediamo ora come possono essere realizzati alcuni tipi di controllo. Cammino dati BUS C3 C4 C5 Codificatore a 4 bit R1 R3 C8 R2 S1 S2 EN S1 e S2 sono gli ingressi di selezione C10 C11 Autore: Luca Orrù Mux a 4 ingressi AND Unità funzionale (UF) 4 CALCOLATORI ELETTRONICI Percorso dati e Unità di Controllo Questo schema rappresenta parte della struttura di commutazione del cammino dati dell’esempio precedente. Da questo schema è possibile vedere come vengono selezionati i due input dell’unità funzionale. Il codificatore a 4 bit riceve in ingresso un codice e lo trasforma in un codice con un numero inferiore di bit. Vediamo per esempio cosa succede per l’ingresso 2 all’unità funzionale. L’ingresso 2 proviene dalla porta AND. C8 controlla i dati provenienti da R3. Vogliamo far si che all’input 2 sia presente il dato proveniente da R3 oppure 0. Basta un modulo AND generalizzato (che opera su parole) con il segnale C8 che controlla l’arrivo dei dati. Se C8=1 i dati di R3 si presentano in ingresso (I2), perché all’uscita della AND avremmo un vettore di 1. Se C8=0 allora i dati di R3 non possono passare e quindi all’ingresso I2 si presenta un vettore di zeri. Vediamo ora come selezionare i dati provenienti dal BUS, da R1 e da R2. C3, C4, C5 non saranno mai attivi contemporaneamente. Solo uno alla volta sarà attivo. Il codificatore in base alla combinazione C3, C4, C5, genera un codice che arriva al Mux. Questo codice funziona da copia di selettori per il Mux, che in base ad esso seleziona solo uno degli ingressi (BUS, R1, R2) e lo porta in uscita e quindi in input al primo ingresso dell’unità funzionale. Nella seguente tabella vengono riportati in corrispondenza agli ingressi C3, C4, C5 (solo 1 attivo) i codici di selezione S1,S2 che permettono di far passare solo uno tra BUS, R1, R2. C3 1 0 0 C4 0 1 0 C5 0 0 1 S1 0 1 0 S2 Ingresso al Mux selezionato 0 BUS 0 R1 1 R2 Controllo cablato e controllo microprogrammato Generazione di sequenze L’unità di controllo è considerata come una normale macchina a stati. E’ un circuito sequenziale che realizza la funzione desiderata. Vediamo come viene realizzata l’Unità di Controllo (UC). • Compito dell’unità di controllo: deve generare dei segnali di controllo che forzano l’unità funzionale a svolgere determinate operazioni utili per eseguire l’istruzione. Quindi avremmo un linguaggio di descrizione del funzionamento che va tradotto in una sequenza di vettori di controllo. Autore: Luca Orrù 5 CALCOLATORI ELETTRONICI Percorso dati e Unità di Controllo • Per realizzare l’UC si parte da un diagramma di flusso (o un programma) che definisce il comportamento della parte operativa (Unità dati). • Si deve poi generare dal programma una sequenza temporale di n vettori C1,C2,C3,….Cn con Ci=(c1,c2,….cm) che definiscono le operazioni da svolgere ai tempi t1,t2,t3,….tn. Ogni vettore Ci sarà un insieme di segnali di controllo (c1,c2,….cm). Questi vettori sono generati in sequenza agli istanti t1,t2,t3,….tn. Implementazione Ci sono vari modi per realizzare il sistema che genera questi vettori. Noi né vediamo due. 1. Controllo cablato: bisogna progettare un circuito sequenziale speciale che realizza la funzione desiderata, cioè la generazione della sequenza di vettori. Questo circuito è formato da Flip Flop, codificatori e contatori. Questo meccanismo, nel caso di sistemi semplici, è più conveniente dal punto di vista della progettazione ed è poco costoso rispetto ad altri meccanismi più flessibili, cioè in grado di adattarsi nel caso si debba modificare qualcosa al progetto, ma è di difficile progettazione per sistemi complessi. In pratica se voglio modificare o cambiare le funzioni svolte dall’Unità Funzionale devo riprogettare tutto. E’ tipico delle CPU RISC. 2. Controllo microprogrammato: si basa sul fatto che la sequenza dei vettori di controllo da inviare all’Unità di esecuzione è memorizzata in una memoria detta memoria di microprogramma, di tipo ROM. Chiameremmo questi vettori microistruzioni. Naturalmente, nel caso di sistemi semplici, si hanno costi maggiori a causa della maggiore complessità richiesta dal hardware (è necessario un numero maggiore di porte e un’area di silicio più grande) ma si ha il vantaggio che si può modificare il microprogramma e quindi realizzare nuove funzioni. In sintesi maggiore flessibilità. Tipico delle CPU CISC. Riepilogando si ha o Microistruzioni (vettori di controllo) che contengono le indicazioni (i segnali di controllo) per l’attivazione delle operazioni/istruzioni. o Progettazione concorrente, di parte operativa (struttura hardware) composta dal percorso dati e dai componenti combinatori che formano l’unità di controllo e parte di controllo (parte software) costituita dalla sequenza di istruzioni (microistruzioni) che fanno svolgere alla parte hardware le operazioni che ci interessano. o Semplice aggiornamento del hardware o Progettazione strutturata Cambiare o modificare il microprogramma significa cambiare il contenuto di una memoria e questo è abbastanza facile. Autore: Luca Orrù 6 CALCOLATORI ELETTRONICI Percorso dati e Unità di Controllo Confrontando l’Unità di Controllo cablata con l’Unità di Controllo microprogrammata abbiamo che: • L’Unità di Controllo cablata è più veloce in quanto il ritardo nella generazione delle uscite (i segnali di controllo) dipendono unicamente dai tempi di propagazione dei segnali attraverso le porte logiche, i flip flop e i circuiti combinatori componenti. L’Unità di controllo microprogrammata è invece più lenta in quanto per la generazione/attivazione dei segnali di controllo è comunque richiesto un accesso alla memoria di microprogramma, oltre ai tempi di propagazione dei segnali attraverso l’hardware di cui l’Unità di Controllo ha necessità (mux ,decoder etc). • L’Unità di Controllo cablata è più complessa da progettare e da realizzare nel caso il sistema sia di media/alta complessità ovvero il processore debba svolgere un ampio repertorio di istruzioni e quindi elaborare una grande quantità di dati. • Una maggiore complessità circuitale implica che l’Unità di controllo cablata è più costosa da progettare nel caso di sistemi di media/alta complessità. • L’Unità di Controllo cablata è meno flessibile di una Unità di Controllo microprogrammata in quanto viene realizzata per risolvere un problema specifico. Se sono richieste delle modifiche, anche solo parziali al progetto, allora deve essere riprogettata e ricostruita completamente. Nel caso dell’Unità di Controllo microprogrammata si ha un’alta flessibilità, in quanto è possibile modificare solamente il programma nella control memory per far svolgere funzioni diverse senza riprogettare tutto. Al massimo si deve sostituire l’integrato della control memory (memoria ROM). Esempi di progettazione per il controllo cablato • Metodi di progetto per la costruzione di un sistema di generazione dei segnali di controllo o Costruire dei generatori di sequenze basati su elementi (Flip Flop) di ritardo (asincrono) o contatori (sincrono) o Macchine a stati finiti: progetto tradizionale di circuiti sequenziali. Questa tecnica non la vedremo. Progetto basato su elementi di ritardo E’ una tecnica asincrona. La sequenza dei segnali di controllo Cij viene generata a partire da una sequenza di segnali di fase Fn. Autore: Luca Orrù 7 CALCOLATORI ELETTRONICI Percorso dati e Unità di Controllo A F1 Flip Flop FF1 F2 FF2 F3 Fk-1 Al tempo t1, F1 assume il valore 1. Al tempo t2 cioè dopo un t=t2-t1,F2 assume il valore 1 e cosi via. F1,F2,..Fk sono i segnali di fase FFk Fk B Questo circuito porta a 1 solo F1 o solo F2 o solo Fk. I segnali F1, F2,…Fk attiveranno poi i segnali di controllo. Se per esempio si invia un impulso di clock all’ingresso A, questo impulso rimarrà memorizzato per un tempo t=t2-t1 nel primo blocco di ritardo (FF1) ed in questo t verrà generato tramite un circuito combinatorio opportuno il segnale di controllo che ci interessa, attraverso il segnale di fase F1. Poi questo impulso si propaga attraverso il primo blocco di ritardo e viene memorizzato in FF2 per un nuovo t e attraverso il segnale di fase F2 verranno generati altri segnali di controllo. Il processo continua fino all’ultimo FF. Ci sono anche dei meccanismi sincroni che sono più adatti. Start A Clock End Generatore di sequenza modulo K F1 F2 Fk B Autore: Luca Orrù 8 CALCOLATORI ELETTRONICI Percorso dati e Unità di Controllo Start è il segnale di start per il generatore di sequenza. Il generatore in funzione del segnale di clock genererà i segnali di fase F1,F2,…Fk. Ad ogni colpo di clock passa ad 1 un’uscita diversa (F1,F2,…Fk). Al tempo t1, F1=1, in t2, F2=1, in t3, F3=1, in tk, Fk=1 che segnala anche la fine delle operazioni. Progetto basato su contatori Vediamo ora come può essere realizzato questo generatore di fasi. clock Begin S end R Flip Flop SR Q Contatore modulo K (realizzato con FF JK) Q Codice (1,2,3, …K Reset Decodificatore 1/k F1 Fk Il contatore modulo K conta fino a K; ad ogni colpo di clock il conteggio aumenta di 1. Il segnale begin in ingresso al FF SR serve per portare l’input della porta AND a 1. Quando l’input Q della AND si porta a 1 il clock diventa attivo sul contatore, che inizia il conteggio. Questo conteggio da origine a dei codici sulle linee d’uscita del contatore (da 1 a K) e questo codice entra nel decodificatore che attiverà in base al codice d’ingresso una ed una sola linea d’uscita, cioè un solo segnale di fase tra i k segnali presenti. Quando il contatore segna 1 si attiva F1; quando il contatore segna K si attiva Fk. I segnali di reset e di end interrompono il conteggio. Autore: Luca Orrù 9 CALCOLATORI ELETTRONICI Percorso dati e Unità di Controllo Breve richiamo sul funzionamento del FF SR. Begin S 1 0 0 1 End R 0 1 0 1 Q Qt+1 1 0 Qt Non ammessa Abbiamo visto come costruire un generatore di sequenza. Vediamo ora come questo generatore pilota il circuito combinatorio, che genera i segnali di controllo per il data path. Unità di controllo basato su generatore di sequenza. F1 Generatore di sequenza modulo K Cout Fk Circuito combinatorio clock Cin Cin sono i segnali di controllo provenienti dall’unità di esecuzione; è il C’out della figura di pagina 2. Cout sono i segnali di controllo in uscita, cioè i segnali C’in della figura di pagina 2. Vediamo come si possa passare dal generatore di fasi al circuito di controllo che attraverso un circuito combinatorio genera i segnali di controllo/i vettori. Saranno alternativamente a 1 i segnali di fase F1,F2,..Fk. Quando F1=1 sarà generato un vettore Cout (esempio vengono attivati i segnali di controllo C1,C3,C8 che sono componenti dei vettori) in modo tale che si svolga una determinata operazione Autore: Luca Orrù 10 CALCOLATORI ELETTRONICI Percorso dati e Unità di Controllo nell’unità funzionale. Poi sarà attivato F2 (F2=1) e sarà generato un altro vettore Cout ( vengono quindi attivati altri segnali Ci di controllo) e cosi via. Cin sono segnali provenienti dall’unità di esecuzione che forzano, in una determinata fase Fk, il circuito combinatorio a generare un determinato vettore di controllo Cout. Si ricordi l’esempio del riporto. Nella fase F1 viene generato un determinato vettore in funzione del fatto che i segnali Cin provenienti dall’unità di esecuzione siano di un certo tipo. Seconda tecnica per la generazione dei vettori di controllo Controllo microprogrammato • Ogni istruzione è realizzata da una sequenza di microistruzioni (vettori di controllo) • Ogni microistruzione implementa una o più microoperazioni concorrenti, cioè trasferimenti dati da registri. • Ogni microistruzione attiva le microoperazioni con un insieme di linee di controllo generate dal circuito combinatorio • I segnali di controllo sono memorizzati all’interno di una memoria di controllo (CM- Control Memory) • La Control Memory è una memoria Rom (Read Only Memory) ricavata sullo stesso chip della CPU. Il contenuto della ROM (insieme di microistruzioni) è stabilito dal progettista dell’Unità di Controllo del processore In sintesi: • una CPU esegue una o più istruzioni; • ogni istruzione è definita da una o più operazioni specificate dall’Unità di Controllo (UC), (vettori di controllo). • Se l’UC è microprogrammata la sequenza delle operazioni che definisce un’istruzione sono chiamate microistruzioni e sono memorizzate in una memoria non volatile ovvero una memoria ROM. Autore: Luca Orrù 11