11 giugno 2019
2
Capitolo 1
Introduzione
2. livello di microarchitettura;
3. livello ISA;
L’insieme dei dati, operazioni e delle funzionalità di ciascun livello è chiamato architettura degli
elaboratori.
3
4 CAPITOLO 1. INTRODUZIONE
Capitolo 2
Gli elementi principali presenti in questo primo livello più basso sono le porte (gate) costruite
utilizzando componenti analogici come i transistor 1 e modellate tramite un approccio digitale. Queste
porte sono gli elemnti che compongono i circuiti digitali nei quali il segnale assume un valore binario
[0, 1]. Il valore 0 è rappresentato nel mondo analogico da un segnale compresto tra 0 e 0.5 volt, mentre
il valore 1 da un senglae compreso tra 1 e 1.5 volt.
Esistono due tipi di circuiti logici:
yn = f ( xn ) (2.1)
• sequenziali (dipende dagli stati passati)
yn = f ( xn , xn − 1 , xn − 2 ) (2.2)
Le porte logiche vengono collegate assieme per costruire circuiti combinatori e si dividono in:
• AND [Figura ??], restituisce 1 solo se tutti i valori in ingresso sono 1 (Tabella 2.1.1).
1 Secondo
la legge di Moore il numero di transistor all’interrno dei chip raddoppia ogni 18 mesi, aumenta
del 60% ogni anno.
5
6 CAPITOLO 2. LIVELLO 1: LOGICO DIGITALE
A B A·B
0 0 0
0 1 0
1 0 0
1 1 1
A B A+B
0 0 0
0 1 1
1 0 1
1 1 1
• NOT [Figura ??], restituisce 1 se l’ingresso è zero; restituisce 0 se l’ingresso è 1 (Tabella 2.1.3).
A B A+B
0 0 0
0 1 1
1 0 1
1 1 1
A B A·B
0 0 1
0 1 1
1 0 1
1 1 0
A B A+B
0 0 1
0 1 0
1 0 0
1 1 0
• EXOR (EXlusive OR) [Figura ??], riceve in ingresso n valori e restituisce 1 se, e solo se, vi è
almeno un ingresso che differisce dagli altri (Tabella 2.1.6).
A B oAoB
0 0 0
0 1 1
1 0 1
1 1 0
• EXNOR (EXlusive NOR) [Figura ??], riceve in ingresso n valori e restituisce 1 se, e solo se,
tutti gli altri ingressi hanno il medesimo valore (Tabella 2.1.7).
8 CAPITOLO 2. LIVELLO 1: LOGICO DIGITALE
A B oAoB
0 0 1
0 1 0
1 0 0
1 1 1
Dal punto di vista analogico le porte NAND e NOR necessitano di due transistor, mentre le porte
AND e OR tre.
E = ( A + AB) + (C + D ) (2.3)
La relativa tabella di verità risulta (Tabella 2.2.1):
Per quanto riguarda l’algebra booleana, ad esempio in ?? l’operazione · corrisponde alla porta
AND mentre l’operazione + alla porta OR. Di conseguenza la funzione E può essere implementata
attraverso il circuito [Figura ??]:
Il circuito potrebbe (e converebbe2 ) essere implementato anche solamente con porte NAND o
NOR, in quanto queste costituiscono un insieme di connettivi funzionalmente completo, nel senso
che una funzione booleana può essere implementata usando soltanto uno di questi due tipo di porte.
A B C D E
0 0 0 0 1
0 0 0 1 1
0 0 1 0 1
0 0 1 1 1
0 1 0 0 1
0 1 0 1 1
0 1 1 0 1
0 1 1 1 1
1 0 0 0 1
1 0 0 1 1
1 0 1 0 1
1 0 1 1 1
1 1 0 0 1
1 1 0 1 1
1 1 1 0 0
1 1 1 1 1
Un altro metodo per ridurre la complessità di un circuito o di una funzione booleana, oppure
per verificarne la riduzione ottenuta tramite le leggi di identità è il metodo grafico della mappa di
Karnough.
AB
00 01 11 10
00 1 1 1 1
CD 01 1 1 1 1
11 1 1 1 1
10 1 1 0 1
Per costruire la tabella (Tabella 2.2.3) parto dalla tabella di verità della funzione (Tabella 2.2.1)
inserendo negli appositi spazi il valore della funzione E. Dopodiché ragruppo gli 1 rettangoli in potenza
di 2 (no 1). Nei rettangoli raggruppati verifico dove le variabili A, B, C, D non cambiano (rimangono 0
o 1). Nel caso in cui, in uno stesso rettangolo una variabile rimanga con valore 1 scrivero la variabile,
mentre se rimane con il valore 0 scriverò la varibile negata. Non tengo in considerazioni le varibili
che cambiano valore. Le variabili all’interno di ogni rettangolo vengono moltiplicate tra loro e poi
sommate con gli altri rettangoli. Nel nostro caso otteniamo:
E = A+B+C+D (2.5)
che possiamo riscrivere come
E = A+B+C+D (2.6)
confermando la riduzione di complessita della funzione.
Per ottenere la funzione duale ragruppo gli 0 rettangoli e nego la variabile che mantiene il valore 1
e lascio la varibile non negata che mantiene il valore 0.
2.3. CIRCUITI COMBINATORI LOGICI 11
ß2. Multiplexer
Viene utilizzato per la trasformazione da parallelo a seriale immettendo n bit di dati nelle linee di
input e selezionandole una dopo l’altra. In questo modo sulla linea d’uscita abbiamo tutti i dati in serie.
ß3. Demultiplexer
L’inverso del multiplexer è il demultiplexer che dirige un unico segnale di input verso uno dei 2n
output in base ai valori del controllo.
3 Ritardo compreso tra centinaia di picosecondi e pochi nanosecondi
12 CAPITOLO 2. LIVELLO 1: LOGICO DIGITALE
ß4. Decoder
Il circuito chiamato decoder (decodificatore) accetta come input un numero a n bit utilizzandolo
per impostare a 1 una sola delle n linee di output. Quindi l’uscita selezionata dal numero a n bit avrà
valore 1 e tutte le altre valore 0. Con il decoder si può realizzare un demultiplexer ma non il contrario.
Viene utilizzato per selezionare uno tra diversi dispositivi e per selezionare un chip di memoria tra gli
2n presenti nel calcolatore.
ß5. Comparatore
ß6. Latch SR
Il circuito chiamato Latch SR (Setting, Resetting) viene utilizzato per creare una memoria a 1 bit,
utilizzando due porte NOR (Figura ??).
Viene utilizzato un latch SR temporizzato quando è preferbile che lo stato del circuito cambi in
momenti specifici. Di conseguenza viene aggiunto un clock il cui valore varia da 0 a 1 (commutazione
a livello).
2.3. CIRCUITI COMBINATORI LOGICI 13
Il caso migliore per un memoria ad 1 bit si presenta con il latch D temporizzato per il quale il
valore memorizzato è sempre disponibile sulla linea Q (Figura ??).
ß9. Flip-flop
La transizione degli stati dei circuiti flip-flop avviene con commutazione a fronte ovvero quando
il clock varia da 0 a 1 (fronte di salita) o da 1 a 0 (fronte di discesa) (Figura ??).
Registri
La combinazione di più flip-flop può creare registri che memorizzano dati di più bit.
Un circuito sequenziale può essere descritto in termini di una macchina a stati finiti rappresentata
da un grafo con nodi e archi orientati. I nodi rappresentano le configurazioni dello stato e gli archi le
14 CAPITOLO 2. LIVELLO 1: LOGICO DIGITALE
transizioni. Due delle principali macchine a stati finiti sono la macchina di Moore e la macchina di
Mealy.
Nella macchina di Moore il valore di uscita è rappresentato dallo stato, dunque gli archi rappresent-
no i vari input (Figura ??).
Nella macchina di Mealy invece il valore d’uscita è rappresentato dalle transizioni (Figura ??).
Figura 2.3.7: Macchina di Mealy che restituisce 1 al riconoscimento della stringa 010, altrimenti
restituisce 0.
Il buffer non invertente è un dispositivo che manda in uscita lo stesso segnale in ingresso oppure
apre il circuito (Figura ??).
Il buffer invertente è un dispostivo a tre stati in quanto può generare i valori 0 e 1, oppure nessuno
dei due (circuito aperto) (Figura ??).
2.3. CIRCUITI COMBINATORI LOGICI 15
2.3.4 Clock
La sincronizzazione del segnale dei circuiti presentati nei paragrafi precedenti avviene tramite un
clock: un circuito che emette una serie di impulsi di larghezza definita e ad intervalli temporali costanti.
L’intervallo temporale compreso tra due impulsi è detto ciclo di clock. Generalmente la frequenza degli
impulsi è compresa tra 100 MHz e 4 GHz, corrispondenti a cicli di clock compresti tra 10 ns e 250 ps.
Al fine di ottenere una risuluzione più fine del clock si inserisce la linea principale in un circuito di
cui si conosce il ritardo ottenendo un secondo segnale sfasato. In questo ultimo caso vengono quindi
utilizzati quattro diversi riferimento temporali utili alla sincronizzazioni di eventi: fronte di salita e
fronte di discesa del primo segnale, fronte di salita e fronte di discesa del secondo segnale.
2.3.7 Bus
Un bus è un collegamento elettrico che unisce diversi dispositivi. All’interno delle CPU ogni
progettista utilizza un tipo di bas che preferisce poiché interagiranno solamente con la CPU stessa; per
i bus esterni invece c’è bisogno di un protocollo affinché schede e dispositivi di altri produttori siano
compatibili.
Le periferiche che si collegano al bus attive vengono chiamate master, quelle passive in attesa di
richiesta slave. Le stesse periferiché possono passare da slave a master in base alle richieste, tranne
che per la memoria la quale non può mai fungere da master.
In base alla loro temporizzazione i bus possono essere suddivisi in due categorie: bus sincroni e
asincroni. Il bus sincrono ha una linea pilotata da un clock con frequenza compresa tra 5 e 133 MHz.
I bus asincroni invece possono avere una diversa lunghezza cicli di bus.
.