BUS
CPU e MEM
La CPU è costituita di porte logiche organizzate in vari dispositivi, in grado di eseguire istruzioni, quindi
programmi, e di ritenere informazioni, che vengono fornite dalla MEM, all’interno di registri. I dati fluiscono
attraverso i dispositivi tramite i BUS (fili conduttori), mentre la CPU comunica con il mondo esterno, cioè le
periferiche, attraverso la I/O.
La MEM è una matrice di celle di memoria di tipo , cioè essa ha un numero di righe, ciascuna delle quali
è formata da bit, in base alla tipologia di computer (i dispositivi che considereremo noi hanno MEM da 8 bit).
si dice profondità della MEM, mentre la sua dimensione si misura in byte e misura esattamente byte.
Se allora una riga corrisponde ad un byte. Si pongono quindi queste grandezze per dimensionare le
memorie: (presenti in piccole CPU, in memorie dette Cache, e nella I/O)
(presenti in MEM e CPU per dispositivi dedicati)
(presenti nelle MEM dei computer)
(presenti solo in Hard Disk esterni di grossa capienza)
L’accesso alle celle di memoria avviene grazie alla presenza di un elenco di indirizzi, uno per ogni riga del
registro, che sarà descritto da un codice binario. Se si hanno righe saranno necessari bit per
codificarle tutte (per esempio, con 10 bit posso codificare 1024 indirizzi). Si effettua un accesso alla memoria
per compiere una di tre operazioni: leggere la memoria, scriverla oppure cancellare il suo contenuto.
Vi sono due grandi famigli tecnologiche di memorie centrali:
ROM RAM
(Read Only Memory) (Random Access Memory)
In seguito ad una previa fase di scrittura, queste In queste memorie il tempo necessario ad accedere ad
memorie vengono rese di sola lettura. una cella è indipendente dalla sua posizione: tutte le
celle possono essere raggiunte con il medesimo
Sono memorie non volatili, cioè mantengono salvato il utilizzo di tempo.
loro contenuto anche quando la corrente viene
scollegata dal dispositivo che le ospita. Sono memorie volatili, cioè perdono il loro contenuto
se la corrente viene scollegata dal dispositivo che le
Questa memoria contiene quindi i programmi in grado ospita.
di avviare il Sistema Operativo. Vi sono 3 tipi di memorie RAM:
Vi sono 4 tipi di memorie ROM: - SRAM: Static RAM, contengono i Flip-Flop.
- PROM: ROM programmabili, cioè riscrivibili; Sono memorie molto veloci ma molto costose.
- EAROM: Electrically Alterable ROM, cioè Stanno nella CPU.
modificabili attraverso modifiche della - DRAM: Dynamic RAM, sono costituite di un
tensione; transistor e di un condensatore, quindi sono
- EPROM: Ereasable PROM, cancellabili se a molto economiche. Il dato (un bit) contenuto in
contatto con la luce; una DRAM è generato dalla carica del
2
- EEPROM o E PROM o comunemente condensatore:
FLASH: Electrically Ereasable PROM. È proprietà dei condensatori quella di
Le memorie FLASH sono veloci ma non scaricarsi nel tempo (10-12 millisecondi), è
eterne, cioè possono essere riscritte intorno al quindi necessario che sia presente un
milione di volte, dopodiché si guastano. dispositivo controllore della DRAM che legga
e riscriva periodicamente le celle di memoria.
- SDRAM: Syncronized DRAM, il Clock di
sistema sincronizza dinamicamente le celle.
Riassumiamo quindi quali sono i compiti della CPU:
- Coordinare gli elementi della macchina di Von Neumann;
- Eseguire programmi, cioè prelevare istruzioni dalla MEM, osservarle, capire di che istruzioni si tratta ed
eseguirle;
CPU ME M
- Nella CPU sono presenti anche ALU e registro di FLAG. read
ALU UCD
Ecco una rappresentazione schematica della CPU: MFC
Internamente alla CPU vi sono dei BUS che collegano le varie componenti
C FLAG IR
A B M
PC BUS
A IND =
1010 0000 = A0
IND
R 3F
BUS
SP MDR DATI
Lettura della MEM
Per poter accedere alla MEM la CPU ha bisogno di conoscere l’indirizzo della cella da cui prelevare il dato.
Questo indirizzo è contenuto nel registro degli indirizzi della memoria MAR, mentre nel registro dati della
memoria MDR è presente il dato che è già stato letto dalla MEM stessa. A collegare questi due registri con la
MEM ci sono due BUS preposti: il BUS IND che collega unidirezionalmente il MAR alla MEM; il BUS DATI
che collega bidirezionalmente il MDR alla MEM. Inoltre c’è un BUS di controllo bidirezionale che collega
l’unità di controllo e decodifica UCD alla MEM. L’operazione di lettura si articola nei seguenti passaggi:
1. L’UCD invia un segnale al MAR, che si apre all’invio di segnali al BUS IND
2. Sul BUS IND si propaga il potenziale relativo alla codifica dell’indirizzo della cella che si vuole leggere
3. L’UCD genera un segnale di controllo read e lo invia alla MEM, in questo modo la MEM accede al
BUS IND
4. MEM, ricevuta l’informazione dal MAR, immette sul BUS DATI il dato contenuto dalla cella relativa
all’indirizzo ricevuto
5. La MEM rilascia verso la UCD il segnale di controllo memory function completed MFC, che indica alla
CPU che la MEM ha svolto il suo compito
6. Il MDR riceve il dato dal BUS DATI e lo scrive nel proprio registro
7. La CPU si chiude al mondo esterno
Scrittura della MEM
Poiché i dati ricevuti o da inviare alla MEM si trovano nel MDR, la scrittura si articolerà nei seguenti passaggi:
1. L’UCD invia tre segnali in parallelo: due di questi vengono inviati a MDR e MAR, che si aprono verso i
BUS IND e DATI, il terzo segnale write viene inviato alla MEM, che si predispone ad essere scritta
2. La MEM riceve il dato da scrivere e l’indirizzo della cella nella quale scriverlo dai BUS IND e DATI e
completa l’operazione
3. La MEM rilascia verso la UCD il segnale di controllo MFC
4. La CPU si chiude al mondo esterno
Nella figura sopra notiamo la presenza di alcuni elementi mai visti prima, ecco le loro funzioni:
- IR (Instruction Register): contiene l’istruzione in esecuzione o la seguente. Appena l’istruzione viene
spostata nell’IR l’UCD la legge e manda i segnali di controllo ad essa relativi ai dispositivi che
quell’istruzione coinvolge.
- PC (Program Counter): contiene l’indirizzo dell’istruzione successiva a quella in esecuzione
- SP (Stack Pointer): puntatore dell’area di Stack, che è una particolare area della MEM. Lo SP punta alla
prima cella libera dell’area di Stack.
I/O I/O
Il dispositivo di Input/Output è un dispositivo elettronico in grado di
interfacciare le periferiche con il mondo interno alla macchina.
Il registro RDP contiene i dati in entrata e in uscita dalle periferiche, RDP
mentre il registro di stato definisce il modus operandi dell’interfaccia
verso l’esterno, per esempio gestisce l’invio in parallelo o in serie dei
bit a seconda della periferica collegata.
Un problema molto diffuso nel campo delle comunicazioni tra
dispositivi è quello del rumore: esistono particolari dispositivi che R STATO
permettono di correggere errori di trasmissione derivanti dal rumore
esterno.
TIPOLOGIE DI ISTRUZIONI
Un programma non è altro che un processo di formalizzazione di un algoritmo, che si appoggia ad una
grammatica. Questa grammatica è costituita da istruzioni, ciascuna avente il proprio compito specifico. Avremo
quindi uno spazio delle istruzioni, così suddiviso:
- Istruzioni di scambio dei dati: lettura, scrittura e gestione della MEM
- Istruzioni che controllano l’interfaccia I/O
- Istruzioni aritmetico-logiche
- Istruzioni varie
- Istruzione halt: l’istruzione che arresta la CPU.
Lo spazio delle istruzioni contiene delle parole, cioè le istruzioni in esso contenute sono scritte in un linguaggio
vicino al nostro. La scelta delle istruzioni da includere nello spazio è fondamentale e varia a seconda
dell’obiettivo che abbiamo. Il numero di istruzioni utilizzabili, infatti, non è infinito, poiché ogni istruzione
andrà codificata in una sequenza binaria affinché la macchina fisica sia in grado di eseguirla. Se perciò la
macchina è in grado di lavorare su bit si potranno codificare istruzioni. Vediamo alcuni esempi di
istruzioni divisi per categorie.
Gestione della MEM:
- loadA, ind (carica nel registro A della CPU il contenuto della cella di memoria avente indirizzo ind)
- loadB, ind
- storeA, ind (memorizza nella cella di memoria avente indirizzo ind il contenuto del registro A)
- storeB, ind
Gestione delle periferiche I/O:
- readA, indp (copia nel registro A il contenuto del registro RDP)
- readB, indp
- read ind (memorizza in una cella libera della MEM il dato presente nel RDP, che proviene da una
periferica di default)
- writeA, indp (scrive nel RDP il contenuto di A)
- writeB, indp
ESECUZIONE DI PROGRAMMI
Eseguire un programma significa rappresentare un algoritmo attraverso uno spazio di istruzioni predefinito.
All’interno di questo spazio stanno tutte le istruzioni, scritte in un linguaggio a noi vicino, che descrivono le
operazioni che la macchina dovrà compiere. Per esempio vi sono istruzioni di lettura, di scrittura delle
memorie, e anche quattro istruzioni che eseguono le operazioni elementari:
- ADD: preleva il contenuto di A, somma ad esso il contenuto di B, genera un risultato che viene
memorizzato in A
- SUB: A
- MUL: A
- DIV: divisione tra interi. A; resto B
Immaginiamo di avere un algoritmo che prelevi i dati contenuti nei registri A e B della CPU, svolga
un’operazione e visualizzi il risultato sullo schermo del computer.
Abbiamo a disposizione la macchina di Von Neumann: CPU, MEM e I/O connessa a tastiera (input) e schermo
(output). Vogliamo eseguire una moltiplicazione inserendo i due operandi da tastiera.
- Inseriamo il primo elemento dalla tastiera e memorizziamolo in una
cella di memoria il cui indirizzo è ind a.
read inda (RDP MEM, ind a)
Non specifichiamo quale periferica leggere perché ce n’è solo una,
la tastiera, oppure supponiamo di andare a leggere la periferica di
default. Il valore ASCI immesso attraverso la tastiera è presente nel
RDP del I/O e viene copiato all’interno della cella ind a della MEM.
- Allo stesso modo bisognerà inserire il secondo operando e metterlo
in una cella in MEM distinta da ind a, per esempio possiamo
utilizzare la cella avente indirizzo ind b.
read indb
- Per poter svolgere la moltiplicazione è necessario che gli operandi si
trovino nei registri A e B della CPU, quindi copiamo i dati appena
immessi nella MEM in questi registri. Poniamo a in A e b in B.
load A, inda (MEM, ind a CPU, A)
load B, indb
- Eseguiamo la moltiplicazione, che automaticamente andrà a moltiplicare i due valori presenti in A e in B
per poi salvare il risultato in A stesso.
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.
Scarica il documento per vederlo tutto.