Sei sulla pagina 1di 16

Architettura degli elaboratori

11 giugno 2019
2
Capitolo 1

Introduzione

La maggior parte dei moderni computer consiste in un insieme di più livelli:

1. livello logico digitale;

2. livello di microarchitettura;

3. livello ISA;

4. livello macchina del sistema operativo;

5. livello del linguaggio assemblativo;

6. livello del linguaggio ad alto livello.

L’insieme dei dati, operazioni e delle funzionalità di ciascun livello è chiamato architettura degli
elaboratori.

3
4 CAPITOLO 1. INTRODUZIONE
Capitolo 2

Livello 1: logico digitale

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:

• combinatori (non c’è memoria)

yn = f ( xn ) (2.1)
• sequenziali (dipende dagli stati passati)

yn = f ( xn , xn − 1 , xn − 2 ) (2.2)

2.1 Porte logiche

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).

Figura 2.1.1: Porta AND.

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

Tabella 2.1.1: Tabella verità porta AND.

A B A·B
0 0 0
0 1 0
1 0 0
1 1 1

• OR [Figura ??], restituisce 1 se almeno un valore in ingresso é 1 (Tabella 2.1.2).

Figura 2.1.2: Porta OR.

Tabella 2.1.2: Tabella verità porta OR.

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).

Figura 2.1.3: Porta NOT.

Tabella 2.1.3: Tabella verità porta NOT.

A B A+B
0 0 0
0 1 1
1 0 1
1 1 1

• NAND [Figura ??], negazione porta AND (Tabella 2.1.4).

Figura 2.1.4: Porta NAND.


2.1. PORTE LOGICHE 7

Tabella 2.1.4: Tabella verità porta NAND.

A B A·B
0 0 1
0 1 1
1 0 1
1 1 0

• NOR [Figura ??], negazione porta OR (Tabella 2.1.5).

Figura 2.1.5: Porta NOR.

Tabella 2.1.5: Tabella verità porta NOR.

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).

Figura 2.1.6: Porta EXOR.

Tabella 2.1.6: Tabella verità porta EXOR.

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

Figura 2.1.7: Porta EXNOR.

Tabella 2.1.7: Tabella verità porta EXNOR.

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.

2.2 Algebra booleana

2.2.1 Tabelle di verità ed implementazione funzioni booleane


Per poter descrivere i circuiti che combinano diverse porte logiche è necessario avvelersi dell’algebra
booleana poiché utilizza variabili e funzioni che possono assumere soltanto i valori 0 e 1. Una data
funzione booleana può essere completamente descritta tramite una tabella di verità già illustrata
precedentemente. La funzione 2.3 rappresenta un’esempio di equazione booleana.

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.

2.2.2 Identità algebra booleana


Per ridurre la complessità di un circuito e aumentarne l’efficienza è possibile utilizzare una serie di
leggi dell’algebra booleane al fine di soddisfare queste esigenze.
Date queste leggi è possibile ottenere la 2.3 partendo da

E = ABC + BDD. (2.4)


2 Spesso è vantaggioso implementare circuiti con un solo tipo di porta.
2.2. ALGEBRA BOOLEANA 9

Tabella 2.2.1: Tabella funzione E.

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

Figura 2.2.1: Implementazione funzione E

Figura 2.2.2: Implementazione funzione E con soltanto porte NOR


10 CAPITOLO 2. LIVELLO 1: LOGICO DIGITALE

Tabella 2.2.2: Identità algebra booleana.

Nome Forma AND Forma OR


Elemento neutro 1A = A 0+A=A
Assorbimento 0A = 0 1+A=1
Idempotenza AA = A A+A=A
Complementazione AA = 0 A+A=1
Commutativa AB = BA A+B=B+A
Associativa (AB)C = A(BC) (A + B) + C = A + (B + C)
Distributiva A + BC = (A + B)(A + C) A(B + C) = AB + AC
Assorbimento A(A + B) = A A + AB = A
De Morgan AB = A + B ( A + B) = AB

ß1. Mappa di Karnaugh

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.

Tabella 2.2.3: Mappa di Karnough funzione E.

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.3 Circuiti combinatori logici

2.3.1 Circuiti integrati


Le porte logiche non sono prodotte individualmente, ma vengono costruite in unità chiamate
circuiti integrati (IC) o chip. Nella realtà questi chip hanno un loro ritardo, dato dal ritardo interno
delle porte dovuto al tempo di propagazione del segnale e di commutazione 3 .

2.3.2 Reti combinatorie


Molte applicazione della logica digitale richiedono un circuito chiamato rete combinatoria,
costituito da più input e output.

ß2. Multiplexer

Un multiplexer è un circuito con 2n input, un valore di output e n input di controllo. L’input di


controllo permette di selezionare uno degli input ed instradarlo lungo il circuito codificando un numero
n bit. La figura (Figura ??) mostra il multiplexer della funzione E analizzata precedentemente. Le
variabili A, B, C, D rappresentano un numero a 4 bit per scegliere l’ingresso. Il circuito ritorna 1 (5 V)
per tutti i valori assunti dal numero di controllo tranne che per il valore 1110 che ritornerà il valore 0
(massa 0 V).

Figura 2.3.1: Multiplexer funzione E

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

Il circuito chiamato comparatore permette di confrontare due stringhe di bit. La costruzione si


basa sull’utilizzo di porte XOR (Figura ??).

Figura 2.3.2: Comparatore a 4 bit.

2.3.3 Circuiti sequenziali


Il circuito sequenziale dipende da come lo stesso circuito evolve nel tempo, dal passaggio di uno
stato a quello successivo. Risulta quindi necessario registrare le informazioni in una memoria per poi
essere utilizzate al momento opportuno. Un altro importante fattore è la temporizzazzione da parte di
un segnale di clock.

ß6. Latch SR

Il circuito chiamato Latch SR (Setting, Resetting) viene utilizzato per creare una memoria a 1 bit,
utilizzando due porte NOR (Figura ??).

ß7. Latch SR temporaizzato

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

Figura 2.3.3: Latch SR.

Figura 2.3.4: Latch D temprizzato.

ß8. Latch D temporizzato

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 ??).

Figura 2.3.5: Flip-flop D con generatore di impulsi che abilita la scrittura.

Registri
La combinazione di più flip-flop può creare registri che memorizzano dati di più bit.

ß10. Macchina a stati finiti

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 ??).

Figura 2.3.6: Macchina di Moore.

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.

ß11. Buffer non invertente e invertente

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

Figura 2.3.8: Buffer non invertente.

Figura 2.3.9: Buffer invertente.

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.5 Chip di memoria


I chip di memoria sono circuiti integrati contenenti un notevole numero di registri in diverse
locazioni. Per accedere ai dati è necessario quindi specificare l’indirizzo binario della locazione su cui
operare e si definisce l’operazione da comppiere (lettura/scrittura). In particolare si definisce:

• Segnale CS (Chip Select), utilizzto per abilitare il chip desiderato;


• Segnale WE (Write Enable), utilizzato per distinguere le operazioni di scrittura da quelle di
lettura;
• Segnale OE (Output enable), utilizzato per guidare i segnali di output;
• Segnale RAS (Row Address Strobe), utilizzato per indicare una riga di matrice dell’indirizzo;
• Segnale CAS (Column Address Strobe), utilizzato per indicare una colonna di matrice dell’indi-
rizzo;
16 CAPITOLO 2. LIVELLO 1: LOGICO DIGITALE

2.3.6 Chip CPU


Le CPU moderne sono contenute in un unico chip che interagisce con gli altri componenti. I pin di
una CPU si suddividono in tre tipi: pin di indirizzo, pin di dato e pin di controllo. Un chip con m pin di
indirizzo può indirizzo fino a 2m locazioni di memoria (16, 20, 32, 64). Un chip con n pin di dati può
leggere o scrivere in un’unica operazione una parola a n bit (8, 32, 64). I pin di controlllo vengono
utilizzati per l’alimentazione (da +1,2 a +1,5 Volt), per la terra e per il segnale di clock (onda quadra),
controllo del bus, interrupt, arbitraggio del bus ed altro.

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.
.