D
entra in non proviene dallo shift, ma è calcolato tramite una funzione
0
di retroazione lineare, cioè lo XOR di alcuni dei bit del registro. L’uscita
D
dell’LFSR è il valore di .
n−1
3.4 Automi finiti
Una rete sequenziale sincrona ha stati interni e cambia stato a ogni clock in
base agli ingressi. Il suo comportamento si descrive con un automa finito,
definito da stati, ingressi, uscite e da una funzione di transizione che indica,
per ogni stato e ingresso, il prossimo stato e l’uscita. Questo può essere
rappresentato con un diagramma degli stati, dove i nodi sono gli stati e gli
archi mostrano le transizioni etichettate “ingresso | uscita”. Alcune reti, come
contatori e registri a scorrimento, sono autonome: non hanno ingressi (oltre al
clock), quindi il prossimo stato dipende solo dallo stato corrente. In tali
diagrammi, da ogni stato parte un unico arco e la sequenza degli stati risulta
necessariamente periodica, eccetto un’eventuale fase iniziale di transizione.
Il funzionamento dell’automa qui sopra può essere così descritto: se l’automa
si trova nello stato interno S1 e riceve l’ingresso X, si sposta nello stato S2
producendo l’uscita Z.
Memorie RAM
Un dispositivo di memorizzazione deve mantenere nel tempo il proprio valore,
(t)=out(t−1)
out
cioè realizzare il comportamento: (t)=¿ (t−1)
out
Un D-FF invece replica il valore dell’ingresso precedente:
Per ottenere una cella di memoria da 1 bit, si collega l’uscita del D-FF al suo
stesso ingresso, passando però attraverso un multiplexer controllato da un
segnale load.
load = 1,
Se il valore esterno in viene caricato nella cella.
load = 0,
Se la cella mantiene il proprio contenuto perché l’ingresso
riceve l’uscita precedente.
Lo stesso risultato si ottiene dando al D-FF un ingresso di abilitazione
(Enable): quando Enable = 1, il flip-flop accetta il valore D; quando Enable
= 0, il flip-flop ignora il clock e rimane invariato. Questa funzione si
implementa facendo passare il clock attraverso una porta AND con il
segnale di abilitazione.
Una volta costruita una cella capace di ricordare 1 bit, è possibile creare
registri che memorizzano parole di più bit e, successivamente, costruire
banchi di memoria (RAM) di qualsiasi dimensione.
Una RAM è composta da 2ᵏ registri,
ciascuno formato da h flip-flop, così da memorizzare parole di h bit. Ogni
registro è una cella di memoria e possiede un indirizzo di k bit che ne
identifica la posizione. I parametri fondamentali di una RAM sono quindi:
h: larghezza della parola (es. 32 o 64 bit)
2ᵏ: numero totale di parole memorizzabili
La RAM è detta ad accesso casuale perché qualsiasi parola deve essere
raggiungibile direttamente e con la stessa velocità, indipendentemente
dalla posizione. Per ottenere questo:
un decoder attivato dall’indirizzo abilita il singolo registro da scrivere
(scrittura → load = 1);
un multiplexer seleziona, sempre in base all’indirizzo, quale registro
inviare in uscita (lettura).
L’uscita della RAM mostra immediatamente il contenuto della cella
indirizzata, mentre una scrittura aggiorna il registro selezionato al ciclo di
clock successivo.
3.5 Tecnologie per le memorie
Le memorie RAM moderne si dividono principalmente in DRAM e SRAM.
DRAM (Dynamic RAM) memorizza ciascun bit tramite un condensatore e
un transistor. Il condensatore conserva una carica che rappresenta 0 o 1,
mentre il transistor permette di leggere o modificare tale carica. Poiché è
economica da produrre, la DRAM è il tipo di RAM più diffuso nei computer.
Deve però essere periodicamente ricaricata, perché la carica dei
condensatori tende a disperdersi.
SRAM (Static RAM) utilizza flip-flop per memorizzare ogni bit. Non richiede
ricariche periodiche, è più veloce e consuma meno energia, ma è più
costosa e richiede più area sul chip. Per questo è usata soprattutto nelle
cache della CPU.
Entrambi i tipi sono volatili, cioè perdono i dati quando manca
alimentazione.
La ROM, al contrario, memorizza i dati modificando in modo permanente
certi transistor, così da non perdere i contenuti. Le varianti riscrivibili come
EEPROM e flash permettono di aggiornare i dati mantenendo comunque la
persistenza. Queste memorie non volatili (NVRAM) includono chiavette
USB, schede di memoria e SSD.
Memorie ROM
Quando il programma e alcuni dati devono rimanere memorizzati anche
quando il calcolatore viene spento si usano memorie ad accesso diretto di
sola lettura chiamate ROM (Read-Only Memory) che non possono essere
modificate o cancellate. In effetti la ROM, non è una rete sequenziale, ma
combinatoria: essa infatti risponde ai valori delle variabili in ingresso che
specificano l’indirizzo di una cella con i valori delle variabili di uscita che
rappresentano il contenuto (immutabile) di tale cella. Dal punto di vista
costruttivo le ROM utilizzano una decodificatore ed una matrice
contenente porte OR su tutti gli incroci riga/colonna, dove le righe sono le
uscite del decodificatore e le colonne sono le variabili di uscita.
4 Architettura del calcolatore
4.1 Introduzione
L’architettura del set di istruzioni o ISA corrisponde al modello di
programmazione di un processore visto dal programmatore e comprende
le istruzioni, il modello di esecuzione, i registri del processore, i formati
degli indirizzi e dei dati.
La microarchitettura invece è il modo in cui una determinata ISA viene
implementata in un particolare processore. La microarchitettura
comprende le parti (reti logiche) costitutive del processore e il modo in cui
queste si interconnettono e interagiscono per implementare l’ISA.
4.2 Il concetto di programma memorizzato
La versatilità del calcolatore è ciò che lo distingue dalle altre macchine,
esso è infatti in grado di operare in campi molto differenti esprimendo un
numero quasi infinito di funzioni. Questa flessibilità è permessa dal
concetto di programma memorizzato (Von Neumann).
Il calcolatore si basa su una piattaforma hardware fissa, in grado di
eseguire un repertorio fisso di istruzioni. Queste istruzioni possono essere
utilizzate e combinate come blocchi di costruzione, dando vita a
programmi arbitrariamente sofisticati. Il programma viene invece posto
nella memoria centrale del calcolatore, proprio come i dati, diventando il
cosiddetto "software".
4.3 La microarchitettura
Suddivisa in:
4.3.1 Memoria
Il termine memoria si riferisce all’insieme dei dispositivi hardware che
memorizzano dati e istruzioni in un calcolatore.
Sebbene dati e istruzioni abbiano funzioni diverse, entrambi sono
rappresentati come numeri binari e memorizzati nello stesso tipo di
struttura: un vettore (array) di celle a larghezza fissa chiamate parole o
locazioni, ciascuna con un indirizzo unico. Ogni parola si identifica quindi
tramite il suo indirizzo di memoria.
Dati
Quando vengono tradotti in linguaggio macchina, diventano numeri binari
memorizzati nella memoria del calcolatore. Una volta selezionata una
singola parola dalla memoria specificandone l’indirizzo, questa può essere
letta o scritta. Nel primo caso, si recupera il valore della parola. Nel
secondo caso, si memorizza un nuovo valore nella posizione selezionata,
cancellando il vecchio valore.
Istruzioni
Le istruzioni, scritte in linguaggio macchina, dicono alla CPU quali
operazioni svolgere, come calcoli, accessi alla memoria e salti
condizionati. Un programma tradotto in linguaggio macchina diventa una
sequenza di parole binarie memorizzate nella memoria. Quest’ultima
contiene sia dati sia istruzioni: nell’architettura Harvard essi sono separati
in memorie diverse, mentre nell’architettura di Von Neumann sono
conservati insieme nella stessa memoria.
4.3.2 CPU
L’unità di elaborazione centrale (Central Processing Unit) è il fulcro
dell’architettura del calcolatore e ha il compito di eseguire le istruzioni del
programma attualmente caricato in memoria. È in grado di eseguire un
insieme fisso di operazioni elementari come operazioni aritmetico-logiche,
operazioni di accesso alla memoria e operazioni di controllo.
La CPU esegue questi compiti utilizzando tre elementi hardware principali:
ALU, un banco dei registri e unità di controllo.
4.3.2.1 Unità aritmetico e logica
L’unità aritmetica e logica è costruita per eseguire tutte le operazioni
aritmetiche e logiche di basso livello presenti nel calcolatore. Per esempio
la somma di due numeri.
4.3.2.2 Registri
L’accesso alla memoria è lento e richiede istruzioni lunghe, quindi i
processori utilizzano registri interni alla CPU, molto più veloci perché non
richiedono il bus e sono fisicamente sul chip. I registri sono pochi ma
permettono istruzioni più compatte, dato che bastano pochi bit per
identificarli.
Registri dati
Questi registri forniscono alla CPU servizi di memoria a breve termine. Ad
esempio, quando si calcola il valore di (a – b) + c, bisogna prima calcolare
e ricordare il valore di (a – b).
Registro del contatore di programma
program counter
Il (PC) è un registro speciale della CPU che contiene
l’indirizzo della prossima istruzione da eseguire. Durante l’esecuzione, la
CPU lo aggiorna automaticamente: lo incrementa per passare all’istruzione
successiva oppure lo sostituisce con un nuovo indirizzo quando l’istruzione
corrente richiede un salto o una diramazione.
4.3.2.3 Unità di controllo
Un’istruzione del calcolatore è rappresentata come un codice binario,
tipicamente di 16 o 32 bit. Prima di poter essere eseguita, l’istruzione
deve essere decodificata e le informazioni in essa devono essere
trasmesse. La decodifica dell’istruzione viene eseguita dall’unità di
controllo.
Ciclo di esecuzione fetch–decode–execute:
La CPU funziona attraverso un ciclo continuo
preleva un’istruzione dalla memoria, la decodifica ed esegue le operazioni
richieste. Durante questo processo decide anche quale sarà la prossima
istruzione da eseguire.
4.3.3 Ingresso e uscita
I computer usano molti dispositivi di input/output (come tastiere, schermi
e stampanti), ciascuno diverso e complesso. Per semplificarne la gestione,
si utilizza l’I/O mappato in memoria, che fa apparire ogni periferica come
una porzione di memoria. A ogni dispositivo viene assegnata una propria
area di memoria: per gli input questa area riflette lo stato fisico del
dispositivo, mentre per gl
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.
Scarica il documento per vederlo tutto.
-
Appunti Informatica
-
Appunti Informatica
-
Appunti Fondamenti di Informatica
-
Appunti Fondamenti di informatica