Architetture dei calcolatori
In informatica una macchina è una entità in grado di eseguire istruzioni (fisiche o virtuali) appartenenti ad un linguaggio, e una architettura descrive le relazioni tra le parti di un elaboratore elettronico.
Il firmware consiste nel software direttamente connesso al componente e permette di interpretare il linguaggio macchina.
Architettura di Von Neumann
- Nella memoria di lavoro risiedono sia dati che programmi.
- Parte della memoria consiste nei registri contenuti nella CPU.
PUPU => processing unit (SCA)
CU => control unit (SCO)
Architettura Harvard
Evoluzione dell'architettura di Von Neumann, utilizza blocchi di memoria diversi per dati e programmi. OSS permette di limitare il problema di virus avendo che la memoria dei programmi non può auto sovrascriversi.
Architettura IBM
Architettura reale dei calcolatori moderni, tiene conto delle differenti velocità dei componenti.
Definizioni preliminari
- Asincrono => dispositivo indipendente lavora senza sincronizzazione con altri
- Sincrono => dispositivo che lavora seguendo una coordinazione temporale con altri dispositivi
Generazione dei programmi
Compilazione
I. => traduzione linguaggio di alto livello in codice Assembly
Assemblaggio
II. => generazione di uno o più file contenenti le rappresentazioni binarie delle istruzioni
Collegamento
III. => traduzione di indirizzi, collegamento funzioni, …
Algebra di Boole
Utilizzata per descrivere i comportamenti delle porte logiche che compongono il circuito:
- Aggiunge un terzo stato chiamato “stato di alta impedenza elettrica” che permette di scollegare l'uscita dal resto del circuito.
- ATTENZIONE non è una porta logica.
- Porte logiche => circuiti digitali di base con 1 uscita ed 1 o più ingressi.
Reti combinatorie
Una rete combinatoria (o logica) è un circuito elettronico digitale capace di realizzare una o più funzioni di commutazione. Ogni funzione può essere espressa come somma canonica, ovvero è possibile realizzarla con 2 livelli di porte logiche AND - OR.
Mappe di Karnaugh
Tabelle che permettono rappresentazione e semplificazione delle funzioni di commutazione, ogni casella rappresenta l'uscita corrispondente nella tabella. La funzione sarà data da vari OR tra gli AND delle variabili aventi 1 come uscita. Con più di 4 variabili in ingresso bisogna creare una nuova tabella per ognuna di esse.
OSS nel caso in cui la combinazione tra alcune variabili non rientra tra quelle utili nelle specifiche di progetto, queste vengono segnate come "-" e possono essere usate per la riduzione come se fossero 1. ATTENZIONE utilizzano codice Gray, ovvero 11 e 00 sono invertiti.
Moduli di base
È possibile dotare entrambi di un ingresso Enable, la codifica avviene solo se E=1.
Codificatore Γ codifica binaria, realizzando funzione di associazione ad ogni elemento di un insieme composto da m simboli, una sequenza distinta di n bit (n ≥ m).
OSS nella realtà è molto costoso e difficilmente viene implementato in questo modo.
Decodificatore
Funzione inversa del codificatore, passa da codifica binaria a insieme di simboli, ad esempio ROM di indirizzamento. Circuito combinatorio con n ingressi (linee) e m uscite (linee). Mandata una sequenza in input (equivalente ad un indirizzo) è possibile leggere le informazioni contenute nella linea corrispondente.
Multiplexer (MUX)
Circuito combinatorio con 2n linee in ingresso (I0, I1, ...) e (S0, S1, ...) che convergono in 1 unica uscita (U). Permette di selezionare quale ingresso va in uscita tramite i segnali di selezione. ATTENZIONE il numero di segnali di selezione dipende dal numero di segnali in input.
Demultiplexer (DEMUX)
Circuito combinatorio con n+1 linee di ingresso, di cui 1 dato in input (Y) ed n segnali di selezione (S0, S1, ...) che selezionano una delle 2n uscite (O0, O1, ...). Funzione inversa al MUX, ricevuto un dato in ingresso seleziona su quale linea mandarlo. Tipicamente utilizzato come decodificatore.
Half adder (semisommatore)
Realizza somme senza considerare il riporto precedente.
S = (not A)B + A(notB) = A ⊕ B
C = AB
Full adder
Realizza somme considerando anche il carry in input.
S = A ⊕ B ⊕ Cin
Cout = AB + CB + CA
Ripple carry adder
Un adder singolo può sommare solo su 2 bit ed eventuale carry, è possibile lavorare su più cifre mettendo più adder in parallelo. Il risultato ha n+1 bit, dove n indica il numero degli adder contenuti. ATTENZIONE questo sistema soffre di ritardo nella propagazione del riporto.
OSS la sottrazione si effettua con gli stessi circuiti combinatori tramite il complemento a 2, posizionando buffer ed inverter three state in ingresso.
ALU (unità logico-aritmetica)
Permette di implementare nello stesso blocco più tipi di operazioni aritmetiche e logiche, il numero di operazioni dipende dal tipo di componenti inclusi in fase di progettazione. La scelta dell'operazione viene effettuata tramite un multiplexer. ATTENZIONE permette solo operazioni su interi, operazioni in virgola mobile con FPU.
Una ALU permette operazioni su un solo bit, quindi per numeri con più cifre si usano più ALU in parallelo. Anche in questo caso la sottrazione si effettua tramite complemento a 2 invertendo uno degli operandi, moltiplicazioni e divisioni si implementano con addizioni e sottrazioni successive.
Il zero si usa per le operazioni di confronto. Overflow detection confronta il carry in con il carry out del MSB, se sono diversi è overflow.
Macchine sequenziali
Dal circuito combinatorio alla macchina sequenziale
Le macchine sequenziali sono composte da reti combinatorie alle quali vieni aggiunta una memoria per gli stati precedenti (generalmente un flip/flop).
- Rete combinatoria => valore in uscita dato dai valori in ingresso in quel momento.
- Rete sequenziale => valore in uscita dipende da valori in ingresso in quel momento e valori precedentemente memorizzati.
- Si possono essere:
- Sincrone (non realizzabili)
- Asincrone
- Sincrone impulsive (reti LLC)
- Asincrone impulsive
Definizione (I, S, O, δ, ω)
Una macchina sequenziale è una quintupla MS = (I, S, O, δ, ω)
- I - alfabeto in ingresso I = {i1, ..., im}
- S - insieme degli stati S = {s1, ..., sn}
- O - alfabeto in uscita O = {o1, ..., oq}
- δ - funzione di stato successivo δ: SxI → S
- ω - funzione di uscita ω: SxI → O (Mealy) o ω: S → O (Moore)
Impulsive => scandite da clock.
Rappresentazioni
- Diagramma degli stati => grafo orientato etichettato G(V,A,L)
- Vertici V => insieme dei nodi (stati)
- Archi A => insieme delle transazioni di stato
- Etichette L => insieme delle etichette
- OSS Mealy segna lo stato su ogni arco, Moore dentro lo stato.
- Tabelle degli stati/uscite => matrici contenenti stati e uscite
- Mealy => |S| righe x |I| colonne, l'elemento in posizione h,k contiene prossimo stato ed uscita
- Moore => |S| righe x (|I| + 1) colonne, l'elemento in posizione h contiene il prossimo stato, l'uscita è contenuta in h,(|I| + 1)
- Algorithm state machine => diagramma degli stati
Esempi
1. Interruttore flip/flop S-R
2. Riconoscitore sequenza “ciao” (tabella omessa per semplicità)
Alfabeto in ingresso => I = {a, b, …, z}, Uscite => O = {si, no}
OSS Nel caso in cui la stringa debba essere riconosciuta alla prima immissione di ogni lettera, invece di avere più archi che tornano indietro, l'immissione di una lettera diversa porta in uno stato separato dal quale non è possibile uscire.
OSS Per realizzare una macchina sequenziale e determinare le funzioni di eccitazione dei F/F è necessario il passaggio alla codifica in binario, effettuabile associando ad ogni simbolo una sequenza di bit.
Flip/Flop (bistabile)
Il F/F è una macchina (di base asincrona) utilizzata per la memorizzazione dei dati, detto bistabile poiché ha 2 stati stabili, ovvero sempre Q̄ ≠ Q. Configurazione non consentita poiché creerebbe situazione di instabilità nel circuito.
I F/F sincronizzati
Ottenuti aggiungendo un segnale di sincronizzazione (clock) ai bistabili asincroni, l'abilitazione alla commutazione del F/F può essere fatta in vari modi:
- Level-triggered o Latch (abilitazione sul livello) => uscita cambia quando il segnale è a livello, ovvero Clock fermo ad 1 oppure 0 (usato per reti LLC)
- Positive edge triggered (abilitazione sul fronte di salita) => uscita varia solo su fronte di salita, ovvero durante passaggio del clock da 0 a 1
- Negative edge triggered (abilitazione sul fronte di discesa) => uscita varia solo su fronte di discesa, ovvero durante passaggio del clock da 1 a 0
- Master slave => ingresso si considera solo su fronte di salita, uscita cambia su fronte di discesa
OSS l'abilitazione sul fronte permette stabilizzazione degli ingressi che altrimenti potrebbero essere ancora in stato di transizione quando Clock è a livello.
OSS dual channel delle memorie RAM permette di trasferire dati sia su fronte di risalita che su fronte di discesa.
Latch
EXTRA il F/F Delay latch permette di avere un unico ingresso per i dati D mettendo un inverter a monte dell'ingresso R.
Registri
Elementi di memoria realizzati da un insieme di F/F collegati in parallelo, collegati in serie possono essere usati per creare shift register. Una combinazione di entrambi è utilizzata per convertire i segnali da seriale a parallelo e viceversa.
- Seriale-parallelo => dati vengono ricevuti un bit alla volta e poi shiftati fino al completamento, infine salvati in parallelo su altro registro.
- Parallelo-seriale => dati inseriti in shift register ed inviati un bit alla volta shiftando ad ogni invio.
SCA = PU (processing unit)
Sistemi digitali complessi
SCO = CU (control unit)
Quando si parla di sistemi complessi bisogna far attenzione a separare le unità di controllo (SCO) dalle unità di elaborazione (SCA).
SCA
Comprende tutti gli elementi utili per l'elaborazione dei dati:
- Registri
- Operatori
- Strutture di interconnessione
- Moduli vari (MUX, DEMUX, …)
SCO
Struttura di controllo che permette di effettuare la microprogrammazione dei componenti. Basate su macchine di Moore e Mealy ed inizialmente implementate tramite ROM. Permette implementazione della semantica del microcodice di ogni istruzione, i circuiti di selezione servono per ottimizzare il costo del microcodice.
Protocollo di handshaking
Permette di simulare una connessione sincrona tra due dispositivi indipendenti che lavorano in maniera asincrona uno rispetto all'altro. Questo è possibile grazie ad un F/F di handshaking, detto comune, che funge da semaforo.
Ex. Al termine di ogni operazione il dispositivo UTx invia i dati a URx ed un segnale, detto Ack. URx ricevuto il segnale legge il dato ed una volta finite le sue operazioni invia un nuovo ack a UTx che riprenderà le sue funzioni ed invierà un nuovo dato.
Processore Z64
Processore didattico a 64 bit basato su architettura x86 (usata da processori Intel / Amd).
Le 4 connessioni per registro del primo decoder permettono di selezionare 8/16/32/64 bit. Il secondo decoder invece seleziona il registro tramite il codice di 4 bit in IR. La selezione viene quindi effettuata tramite un AND tra questi 2 segnali e quello di write / read.
I Registri
- TEMP1 / TEMP2 => registri nascosti che permettono di mantenere le variabili stabili durante il processamento nella ALU o shifter (sempre in funzione).
- OSS si dicono nascosti poiché utilizzati per operazioni interne.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
-
Architetture degli elaboratori - appunti
-
Architetture degli elaboratori
-
Appunti corso Architetture dei calcolatori
-
Riepilogo Esame di Calcolatori Elettronici - Architetture