Architettura del Calcolatore - Dipartimento di Ingegneria Informatica ...
Architettura del Calcolatore - Dipartimento di Ingegneria Informatica ...
Architettura del Calcolatore - Dipartimento di Ingegneria Informatica ...
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
<strong>Architettura</strong> <strong>del</strong> <strong>Calcolatore</strong><br />
Prof.Ing.S.Cavalieri<br />
1
Evoluzione: tecnologia<br />
Sistemi Meccanici<br />
Sistemi Elettro-Meccanici (uso <strong>di</strong> Valvole)<br />
Sistemi Interamente Elettronici (basati su Valvole)<br />
Sistemi Interamente Elettronici (basati su Transistor)<br />
Sistemi Elettronici basati sul Microprocessore<br />
2
Evoluzione: tecnologia<br />
Sistemi Meccanici<br />
1652<br />
Blaise Pascal, filosofo, matematico e fisico francese, a 20<br />
anni realizza una celebre macchina per eseguire ad<strong>di</strong>zioni e<br />
sottrazioni automaticamente, la 'pascalina'.<br />
Esegue riporto automatico fino ad 8 cifre<br />
3
Evoluzione: tecnologia<br />
Sistemi Elettro-Meccanici<br />
1925-27<br />
Il Prof.Vannevar Bush ed altri docenti <strong>del</strong> Massachusetts<br />
Institute of Technology (MIT) progettarono e realizzarono il<br />
"Differential Analyzer", il primo calcolatore elettromeccanico<br />
<strong>di</strong> uso pratico.<br />
Era in grado <strong>di</strong> risolvere automaticamente equazioni<br />
<strong>di</strong>fferenziali contenenti fino a 18 variabili in<strong>di</strong>pendenti.<br />
La macchina era costituita da un insieme <strong>di</strong> valvole<br />
termoioniche e da parti elettromeccaniche e venne prodotta<br />
in una decina <strong>di</strong> esemplari.<br />
Uno <strong>di</strong> questi fu acquistato dai militari americani che lo<br />
utilizzarono fino all'inizio degli anni Cinquanta per calcoli<br />
balistici.<br />
I programmatori impiegavano giorni, se non ad<strong>di</strong>rittura<br />
settimane a programmare il "Differential Analyzer".<br />
4
Evoluzione: tecnologia<br />
Sistemi Interamente Elettronici basati su valvole<br />
1945<br />
ENIAC (USA) => Primo calcolatore <strong>di</strong>gitale a circuiti elettronici senza<br />
parti meccaniche 'General-Purpose‘<br />
programmabile tramite cablaggio interno (fili ed interruttori).<br />
19 mila valvole termoioniche, 70 mila resistenze e 10 mila condensatori<br />
Eniac pesava 30 tonnellate, occupava un’area <strong>di</strong> 180 metri quadrati ed<br />
eseguiva 5 mila ad<strong>di</strong>zioni al secondo<br />
5
Evoluzione: tecnologia<br />
Sistemi Interamente Elettronici basati su Transistor<br />
1957<br />
La Japan's Electrotechnical Laboratory sviluppa un computer a<br />
transistor,<br />
ETL Mark III, che utilizza 130 transistor e 1.700 <strong>di</strong>o<strong>di</strong>.<br />
1959<br />
In una mostra <strong>di</strong> Parigi viene presentato il primo computer<br />
commerciale Giapponese a transistor <strong>del</strong>la NEC: il NEAC 2201.<br />
6
Evoluzione: tecnologia<br />
Sistemi Elettronici basati su Microprocessori<br />
1971<br />
Il gruppo <strong>di</strong> Ted Hoff, S.Mazor e F.Fagin sviluppano il microprocessore Intel<br />
4004: "un intero computer su un solo chip“<br />
1972<br />
Nasce il microprocessore Intel 8080, preceduto per breve tempo dall'8008. Si<br />
tratta <strong>del</strong> primo microprocessore a 8 bit.<br />
1977<br />
Viene annunciato l'APPLE II, che <strong>di</strong>venta un banco <strong>di</strong> prova per i personal<br />
computer. Un vero e proprio home computer, con semplici programmi <strong>di</strong><br />
videoscrittura, fogli <strong>di</strong> calcolo, giochi e tanto altro.<br />
1978<br />
Esce il processore Intel a 16 bit 8086.<br />
1981<br />
L'architettura aperta <strong>del</strong> PC IBM viene lanciata in agosto, decretando<br />
l'affermazione <strong>del</strong> computer desktop.<br />
1984<br />
Inizia in Agosto la produzione <strong>del</strong> processore Intel 80286 a 16 bit, che viene<br />
inserito nel PC IBM "AT".<br />
1985<br />
In ottobre la Intel annuncia il chip a 32 bit 80386 con la gestione <strong>del</strong>la memoria sul<br />
chip.<br />
1989<br />
Esce il processore Intel 80486, con 1,2 milioni <strong>di</strong> transistor.<br />
7
Evoluzione: tipi <strong>di</strong> calcolatori<br />
1950 – Mainframe locale: batch (prima), time sharing (dopo)<br />
1960 – Mainframe remoto: linee <strong>di</strong> telecomunicazioni.<br />
1970 – Mini Computers: ambienti meno restrittivi, costi accessibili, time<br />
sharing, Unix, Linguaggio C<br />
1980 – Personal Computers: uso "domestico", applicativi per compiti comuni<br />
(es.videoscrittura).<br />
1990 – PC connessi in Reti <strong>di</strong> Calcolatori: PC con capacità elaborative ed<br />
interfacce ad alte prestazioni, LAN, Internet.<br />
2000 – Internet: reti a larga banda<br />
………. Cloud Computing<br />
8
Il mo<strong>del</strong>lo <strong>di</strong> Von Neumann<br />
CPU<br />
ALU<br />
Interfacce<br />
I/O<br />
Periferiche<br />
Memoria<br />
Centrale<br />
9
<strong>Architettura</strong> Stu<strong>di</strong>ata<br />
DMA<br />
Clock<br />
Interrupt<br />
BIOS<br />
Cache<br />
ALU<br />
CPU<br />
Registri<br />
RAM<br />
Controller<br />
<strong>di</strong>schi,<br />
CD-ROM,etc.<br />
Bus <strong>di</strong> controllo<br />
Bus <strong>di</strong> in<strong>di</strong>rizzi<br />
Bus <strong>di</strong> dati<br />
Bus <strong>di</strong> I/O<br />
ROM<br />
Connettori<br />
Periferiche<br />
I/O<br />
10
Circuiti <strong>di</strong> Temporizzazione<br />
(Clock)<br />
T<br />
tempo<br />
Il megahertz (MHz) è l'unità <strong>di</strong> misura <strong>del</strong>la frequenza alla quale<br />
il processore funziona;<br />
in<strong>di</strong>ca quanti milioni <strong>di</strong> oscillazioni al secondo (1 oscillazione al<br />
secondo = 1 hertz [Hz]) sono generate dal clock.<br />
f=1/T Hz.<br />
11
Circuiti <strong>di</strong> Temporizzazione<br />
(Clock)<br />
In generale il clock é prodotto da un apposito circuito<br />
integrato, la cui oscillazione é controllata da un<br />
cristallo <strong>di</strong> quarzo.<br />
Il cristallo <strong>di</strong> quarzo garantisce una elevata stabilita nel<br />
tempo e con il variare <strong>del</strong>la temperatura ed una grande<br />
precisione nel valore <strong>del</strong>la frequenza prodotta, quanto<br />
meno possibile influenzato dalla temperatura e dall'<br />
invecchiamento.<br />
In generale il quarzo <strong>di</strong> partenza é il 14.318 MHz<br />
Scelta legata alla <strong>di</strong>ffusione e economicità<br />
12
Circuiti <strong>di</strong> Temporizzazione<br />
(Clock)<br />
13
Circuiti <strong>di</strong> Temporizzazione<br />
(Clock)<br />
Partendo dal quarzo a 14.318MHz, vengono generate<br />
frequenze più elevate (50, 60, 66, 100MHz).<br />
Ogni area <strong>del</strong> PC che contiene un processore o un<br />
microcontrollore, necessita <strong>di</strong> un clock, che puó essere<br />
generato in loco o <strong>di</strong>pendere dal clock principale.<br />
Giá a partire dalle architetture basate sulla CPU 80486,<br />
é <strong>di</strong>ventato comune avere per il processore un clock piú<br />
elevato <strong>di</strong> quello generale <strong>del</strong> sistema.<br />
14
Memoria<br />
Misura <strong>del</strong>la Memoria<br />
Classificazione <strong>del</strong>la Memoria:<br />
Interna ed Esterna<br />
Memoria Interna:<br />
Caratteristiche Generali<br />
15
Misura <strong>del</strong>la Memoria<br />
Informazione <strong>di</strong> base = bit<br />
Raggruppamenti utilizzati<br />
1 byte = 8 bit<br />
1 word = N byte<br />
Multipli (bit/byte)<br />
K (Kilo) = 2 10 (=1024) circa 10 3<br />
M (Mega) = 2 20 (=1024*1024=1.048.576) circa 10 6<br />
G (Giga) = 2 30 circa 10 9<br />
T (Tera) = 2 40 circa 10 12<br />
P (Peta) = 2 50 circa 10 15<br />
16
Alcuni Valori da Ricordare<br />
2 4 = 16<br />
2 8 = 256<br />
2 16 = 65536 = 64 K (65536/1024)<br />
17
Memoria Interna<br />
Memorizza programmi e dati su cui lavora la CPU a cui è<br />
collegata tramite il bus principale<br />
si accede al singolo bit/byte/word<br />
tempi <strong>di</strong> accesso bassi (
Memoria Esterna o <strong>di</strong> Massa<br />
Memorizza dati e programmi sotto forma <strong>di</strong> file. Per<br />
l’elaborazione, si devono trasferire programmi e dati in<br />
memoria centrale:<br />
Si accede a blocchi (cluster/settori)<br />
Non è possible leggere/scrivere singoli bit/byte<br />
tempi <strong>di</strong> accesso elevati (msec)<br />
capacità elevate (decine/centinaia <strong>di</strong> Gbytes)<br />
Può essere:<br />
Memoria <strong>di</strong> Massa on-line, normalmente realizzata con <strong>di</strong>schi<br />
magnetici fissi<br />
Memoria <strong>di</strong> Massa off-line, normalmente realizzata con supporti<br />
(magnetici/ottici/elettronici) rimovibili<br />
19
Memoria Interna:<br />
Caratteristiche Generali<br />
bus degli in<strong>di</strong>rizzi<br />
n fili<br />
bus <strong>di</strong> controllo<br />
read/write (strobe)<br />
1 bit<br />
0<br />
1<br />
2<br />
m-1<br />
bus dei dati<br />
20
Memoria Interna:<br />
Caratteristiche Generali<br />
In<strong>di</strong>rizzi e valori: Con n bit <strong>di</strong> in<strong>di</strong>rizzo si possono<br />
selezionare 2n caselle (m=2n ).<br />
Strobe: sono segnali generalmente impulsivi che<br />
vengono inviati dopo il posizionamento <strong>del</strong>l’in<strong>di</strong>rizzo<br />
per:<br />
<strong>di</strong>scriminare tra operazione <strong>di</strong> letture e scrittura<br />
notificare alla memoria la <strong>di</strong>sponibilità <strong>del</strong>l’in<strong>di</strong>rizzo<br />
21
Memoria Interna:<br />
Caratteristiche Generali<br />
Tempi <strong>di</strong> servizio: accesso, ciclo (misurati in clock).<br />
Accesso. E' il tempo necessario affinché la memoria ponga in<br />
uscita il valore richiesto (o possa registrare il valore in ingresso),<br />
dopo aver posizionato l'in<strong>di</strong>rizzo e lo strobe.<br />
Ciclo. E' il tempo minimo che deve intercorrere tra due<br />
posizionamenti vali<strong>di</strong> <strong>del</strong>l’in<strong>di</strong>rizzo e <strong>del</strong>lo strobe.<br />
Mo<strong>di</strong>ficabilità: Memoria a Sola Lettura/Riscrivibile.<br />
Qualsiasi memoria deve essere scritta almeno una volta.<br />
Le memorie che non possono essere riscritte si <strong>di</strong>cono a sola<br />
lettura;<br />
altrimenti sono riscrivibili.<br />
22
Memoria Interna:<br />
Caratteristiche Generali<br />
Persistenza: permanenti/volatili. Sono permanenti le<br />
memorie che mantengono i dati senza bisogno <strong>di</strong><br />
alimentazione elettrica; altrimenti si <strong>di</strong>cono volatili.<br />
Accessibilità: casuale /sequenziale. Se non esiste alcun<br />
vincolo sulla sequenza degli in<strong>di</strong>rizzamenti effettuati, si<br />
parla <strong>di</strong> memoria ad accesso casuale; quando invece il<br />
successivo in<strong>di</strong>rizzo è l’attuale incrementato <strong>di</strong> uno si parla<br />
<strong>di</strong> memorie ad accesso sequenziale.<br />
23
Memoria Interna:<br />
Caratteristiche Generali<br />
bus degli in<strong>di</strong>rizzi<br />
n fili<br />
bus <strong>di</strong> controllo<br />
read/write<br />
bus dei dati<br />
1 bit<br />
24
Memoria Interna:<br />
Caratteristiche Generali<br />
Possiamo identificare <strong>di</strong>versi livelli funzionali <strong>di</strong> memoria:<br />
Random Access Memory (RAM)<br />
Volatile<br />
Accesso Causale<br />
Sistemi Operativi, Programmi e Dati<br />
Connessa alla CPU con Bus<br />
Read Only Memory (ROM)<br />
Permanente<br />
Riscrivibile (Flash Memory)<br />
Accesso Casuale<br />
Parametri <strong>di</strong> Configurazione e Programmi <strong>di</strong> base<br />
Memoria Cache<br />
Volatile<br />
Dati <strong>di</strong> utilizzo frequente<br />
Dentro la CPU<br />
Più veloce <strong>del</strong>la RAM<br />
25
CPU<br />
Principi <strong>di</strong> Base<br />
Blocchi Fondamentali: Memoria Cache, Registri, ALU,<br />
Istruction Decoder and Control<br />
Esempio <strong>di</strong> Funzionamento<br />
26
CPU-Principi <strong>di</strong> base<br />
STRUTTURA DELLA ISTRUZIONE MACCHINA:<br />
Si tratta <strong>di</strong> una stringa binaria che identifica il co<strong>di</strong>ce <strong>del</strong>la operazione<br />
da eseguire e le modalità per in<strong>di</strong>rizzare gli operan<strong>di</strong><br />
Opcode o co<strong>di</strong>ci operativi<br />
Un programma scritto in Opcode è assai <strong>di</strong>fficile, si utilizza l’Assembly<br />
ESECUZIONE DI UNA ISTRUZIONE MACCHINA:<br />
l’esecuzione <strong>di</strong> un’istruzione avviene con una sequenza <strong>di</strong><br />
microistruzioni a livello circuitale associate all'istruzione<br />
FASI CPU:<br />
Ricerca (Fetch) e Esecuzione (Execute)<br />
27
CPU-Memoria Cache<br />
La memoria, a rigore, non dovrebbe far parte <strong>del</strong>l'unità<br />
centrale ma attualmente una tendenza che si va<br />
consolidando e quella <strong>di</strong> fornire CPU che presentino al<br />
loro interno banchi <strong>di</strong> memoria allo scopo <strong>di</strong> reperire<br />
velocemente informazioni, senza dover accedere alla<br />
memoria centrale.<br />
Cache <strong>di</strong> Primo Livello L1 (alcune volte anche la L2)<br />
28
CPU-Registri Interni<br />
Di numero e <strong>di</strong> caratteristica molto <strong>di</strong>fferenziate, i registri<br />
interni <strong>di</strong> lavoro permettono all'unità centrale lo<br />
spostamento, la manipolazione ed il deposito temporaneo<br />
dei dati senza dover ricorrere alla memoria esterna.<br />
I tipi <strong>di</strong> registri, le modalità <strong>di</strong> interconnessione e <strong>di</strong><br />
comunicazione fra i vari registi sono una caratteristica <strong>del</strong><br />
processore<br />
Possiamo tuttavia in<strong>di</strong>viduare un set <strong>di</strong> registri essenziali<br />
per il funzionamento <strong>di</strong> un qualunque processore, e che,<br />
dunque, possono essere ritrovati in una qualunque<br />
architettura.<br />
29
CPU-Registri Interni<br />
Memory Address Register (MAR). E' il registro specializzato per<br />
in<strong>di</strong>rizzare la memoria. Durante l'esecuzione <strong>di</strong> un programma il<br />
MAR contiene l'in<strong>di</strong>rizzo <strong>del</strong>la locazione <strong>di</strong> memoria centrale (esterna<br />
alla CPU) alla quale si vuole accedere in quell'istante.<br />
Program Counter (PC). E' il registro specializzato per contenere<br />
l'in<strong>di</strong>rizzo <strong>del</strong>l'istruzione che deve essere eseguita.<br />
Memory Data Register (MDR). E' il registro da cui transitano tutti i<br />
dati scambiati con la memoria esterna prima <strong>di</strong> venire smistati, in<br />
base al loro significato, presso gli altri registri interni.<br />
Instruction Register (IR). E' il registro che contiene la parte co<strong>di</strong>ce<br />
operativo <strong>di</strong> un'istruzione, vale a <strong>di</strong>re quella sequenza <strong>di</strong> bit che<br />
opportunamente deco<strong>di</strong>ficati determineranno le azioni che la CPU<br />
deve eseguire.<br />
30
CPU-Registri Interni<br />
Accumulatore. E' il principale registro <strong>di</strong> calcolo <strong>del</strong>l'unità centrale:<br />
contiene sempre uno degli operan<strong>di</strong> e il risultato <strong>del</strong>l'operazione<br />
Pointer Registers (PRs). Sono registri specializzati per contenere<br />
in<strong>di</strong>rizzi, solitamente <strong>di</strong> quei sotto programmi ricorrenti con particolare<br />
frequenza. Alcuni <strong>di</strong> essi possono venire specializzati a funzioni<br />
particolari.<br />
Uno <strong>di</strong> essi è lo stack pointer, che in<strong>di</strong>rizza la zona <strong>di</strong> RAM in<br />
cui è stato costruito lo stack. Lo stack e' definita come una<br />
porzione <strong>di</strong> memoria gestita secondo una politica LIFO (Last In<br />
First Out).<br />
Risulta estremamente comodo per il salvataggio <strong>del</strong><br />
program counter in caso <strong>di</strong> interruzione (interrupt) o<br />
chiamata a funzioni;<br />
31
CPU-Registri Interni<br />
Status Register. Con registro <strong>di</strong> stato si intende un registro il cui<br />
contenuto è costituito da un insieme <strong>di</strong> flag aventi un significato<br />
in<strong>di</strong>viduale, anche se può essere manovrato ed elaborato in parallelo.<br />
Il significato dei vari flags costituenti il registro può <strong>di</strong>fferire a<br />
seconda <strong>del</strong> microprocessore, ma avremo sempre alcuni flags<br />
fondamentali:<br />
CARRY. Viene manipolato dalle operazioni aritmetiche; viene<br />
settato o resettato nel corso <strong>di</strong> un'istruzione <strong>di</strong> somma se si è<br />
avuto o no un riporto.<br />
OVERFLOW. Risente anch'esso <strong>del</strong>l'esito <strong>del</strong>le operazioni<br />
aritmetiche; viene settato a uno se nel corso <strong>di</strong> una somma si è<br />
avuto un trabocco <strong>del</strong>la capacità dei registi (Risultato NON<br />
Valido).<br />
32
CPU-Unità Aritmetico Logica<br />
ALU<br />
Operazioni Aritmetiche: Somma in Complemento a 2<br />
Operazioni Logiche: AND, OR e NOT<br />
Operazioni sui Bit: Shift e Rotazione<br />
Dati in Ingresso: il Contenuto <strong>del</strong>l'Accumulatore (sempre) e dei<br />
registri interni <strong>del</strong>la CPU (operan<strong>di</strong> residenti in memoria centrale<br />
vengono trasferiti su registri temporanei)<br />
Risultato <strong>del</strong>l'Operazione: Accumulatore<br />
Uscite Collaterali: è fondamentale registrare alcune con<strong>di</strong>zioni <strong>di</strong> fine<br />
esecuzione <strong>del</strong>le operazioni <strong>di</strong> ALU al fine <strong>di</strong> determinare se<br />
procedere con la successiva istruzione in memoria o con un’altra<br />
opportunamente specificata.<br />
risultato zero, negativo, riporto, overflow ……<br />
registro <strong>di</strong> stato<br />
33
CPU-Instruction Decoder and<br />
Control<br />
E' il cuore <strong>del</strong> processore<br />
Riceve come dato in ingresso il co<strong>di</strong>ce operativo <strong>del</strong>l'istruzione<br />
presente nell'instruction register (IR).<br />
Questo co<strong>di</strong>ce può essere pensato come l'in<strong>di</strong>rizzo <strong>di</strong> partenza <strong>di</strong> un<br />
microprogramma interno che agisce a livello circuitale minimo<br />
componendo insieme, in modo opportuno, gruppi <strong>di</strong><br />
microistruzioni.<br />
Queste ultime consistono in definitiva nell'emissione <strong>di</strong> una serie <strong>di</strong><br />
segnali e stati logici <strong>di</strong> controllo che servono:<br />
a pre<strong>di</strong>sporre la ALU a compiere una particolare funzione aritmetico<br />
logica<br />
a smistare attraverso i bus interni i contenuti dei registri interessati<br />
a svolgere i necessari test e gli eventuali scambi <strong>di</strong> dati con l'esterno.<br />
34
CPU-Instruction Decoder and<br />
Control<br />
Esempio <strong>di</strong> Microprogramma associato all'istruzione <strong>di</strong> Somma <strong>del</strong><br />
contenuto <strong>del</strong>l'accumulatore con il contenuto <strong>del</strong> MDR.<br />
Questa operazione può essere scomposta in sette passi elementari:<br />
1. Trasferimento <strong>del</strong> contenuto <strong>del</strong>l'accumulatore nella ALU.<br />
2. Trasferimento <strong>del</strong> contenuto <strong>del</strong> MDR nella ALU.<br />
3. Attivazione <strong>del</strong>la logica <strong>di</strong> somma.<br />
4. Trasferimento <strong>del</strong> contenuto <strong>del</strong>la ALU nell'accumulatore (che conterrà<br />
il risultato <strong>del</strong>la somma).<br />
35
CPU - Fasi <strong>di</strong> Fetch e Execute<br />
In qualunque processore l'esecuzione <strong>di</strong> una generica istruzione<br />
avviene in due fasi <strong>di</strong>fferenti:<br />
la fase <strong>di</strong> ricerca (FETCH): consiste nel prelievo dalla memoria<br />
centrale <strong>del</strong>l'istruzione<br />
la fase <strong>di</strong> esecuzione (EXECUTE), caratterizzata dalla deco<strong>di</strong>fica<br />
<strong>del</strong>l'istruzione e dall'attivazione <strong>del</strong> microprogramma ad essa<br />
associato.<br />
36
CPU - Fasi <strong>di</strong> Fetch e Execute<br />
Esempio: Supponiamo che l'istruzione sia <strong>di</strong> somma fra il contenuto<br />
<strong>del</strong>l'accumulatore e il contenuto <strong>di</strong> una cella <strong>di</strong> memoria il cui<br />
in<strong>di</strong>rizzo sia dato <strong>di</strong>rettamente dalla parte operando dall'istruzione<br />
stessa.<br />
Supponiamo cioè che la cella <strong>di</strong> memoria contenente l'istruzione da<br />
eseguire sia strutturata come segue:<br />
co<strong>di</strong>ce istruzione<br />
in<strong>di</strong>rizzo RAM <strong>del</strong> secondo operando<br />
37
CPU - Fasi <strong>di</strong> Fetch e Execute<br />
Fase <strong>di</strong> ricerca (FETCH):<br />
1. Il contenuto <strong>del</strong> Program Counter (PC) è relativo all’in<strong>di</strong>rizzo <strong>di</strong><br />
memoria che contiene l’istruzione.<br />
2. Il contenuto <strong>del</strong> Program Counter è inviato al MAR (Memory<br />
Address Register) per operare il prelevamento <strong>del</strong>l'istruzione<br />
all'in<strong>di</strong>rizzo <strong>di</strong> memoria contenuto nel MAR.<br />
3. Il dato prelevato dalla memoria è riposto nel MDR (Memory<br />
Data Register).<br />
4. Il contenuto <strong>del</strong> MDR, ossia l’istruzione, è messa nel Instruction<br />
Register per essere deco<strong>di</strong>ficata.<br />
5. Il Program Counter viene incrementato per puntare all'istruzione<br />
successiva.<br />
38
CPU - Fasi <strong>di</strong> Fetch e Execute<br />
Ha inizio a questo punto la fase <strong>di</strong> esecuzione (EXECUTE):<br />
1. viene compreso che il secondo operando risiede in memoria<br />
2. la parte <strong>del</strong>l’istruzione relativa all’in<strong>di</strong>rizzo <strong>del</strong> secondo<br />
3.<br />
operando viene trasferita nel MAR<br />
L'effettivo operando, prelevato dalla memoria è posto nel MDR.<br />
4. L’operando viene presentato ad un ingresso <strong>del</strong>la ALU.<br />
5. All'altro ingresso <strong>del</strong>l’ALU viene presentato il contenuto<br />
6.<br />
<strong>del</strong>l'accumulatore.<br />
L'ALU, pre<strong>di</strong>sposta dall'Instruction Register ad eseguire la<br />
somma, pone il suo risultato nell'accumulatore.<br />
La fase <strong>di</strong> esecuzione è terminata ed il processore prosegue con la<br />
fase <strong>di</strong> ricerca <strong>del</strong>l'istruzione successiva.<br />
39
…per <strong>di</strong>ventare esperti dei PC !!<br />
Meto<strong>di</strong> <strong>di</strong> I/O: Interrupt e DMA<br />
40
Meto<strong>di</strong> <strong>di</strong> I/O: Interrupt<br />
L'attività che svolge la CPU non è mai continua ma viene sempre<br />
interrotta da particolari segnali provenienti principalmente da<br />
<strong>di</strong>spositivi esterni alla CPU stessa.<br />
Tali interruzioni hanno lo scopo <strong>di</strong> comunicare alla CPU la necessità<br />
che essa esegua particolari programmi.<br />
Ad esempio uno dei più comuni interrupt è relativo all'aggiornamento<br />
<strong>del</strong>l'ora e <strong>del</strong>la data interna al computer.<br />
La CPU riceve circa 18 volte al secondo un segnale <strong>di</strong> interruzione che la<br />
obbliga ad eseguire il programma associato <strong>di</strong> aggiornamento <strong>del</strong>l'ora e<br />
<strong>del</strong>la data.<br />
In termini tecnici queste interruzioni prendono il nome <strong>di</strong><br />
INTERRUPT. Ogni interrupt è caratterizzato da una sua priorità al<br />
fine <strong>di</strong> poter gestire la contesa nel caso in cui più interrupt arrivino<br />
contemporaneamente alla CPU. Ad ogni interrupt è poi associato<br />
sempre il programma che deve essere eseguito.<br />
41
Meto<strong>di</strong> <strong>di</strong> I/O: Interrupt<br />
All'arrivo <strong>di</strong> un interrupt, la CPU deve eseguire le seguenti funzioni:<br />
1. deve salvare nello stack lo stato corrente <strong>del</strong> programma che stava<br />
eseguendo fino a quel momento (lo stato è dunque rappresentato<br />
dal contenuto <strong>di</strong> alcuni registri quali il Program Counter)<br />
2. deve identificare l'interrupt ed eseguire il programma <strong>di</strong> interrupt<br />
ad esso associato<br />
3. alla fine <strong>del</strong>l'esecuzione <strong>del</strong> programma <strong>di</strong> interrupt, deve<br />
prelevare lo stato dallo stack e ripristinare lo stato corrente prima<br />
che venisse l'interrupt<br />
4. continuare l'esecuzione dallo stato appena ripristinato<br />
42
Meto<strong>di</strong> <strong>di</strong> I/O:<br />
Direct Memory Access (DMA)<br />
Il DMA è una tecnica <strong>di</strong> gestione <strong>del</strong> bus che conduce i dati nella<br />
memoria RAM, in base alla quale non è necessario l'intervento <strong>del</strong>la<br />
CPU per tale trasferimento, ma è un particolare <strong>di</strong>spositivo DMA che<br />
si occupa <strong>di</strong> effettuare tale trasferimento, alleggerendo la CPU.<br />
Il DMA viene utilizzato quando si hanno periferiche veloci che devono<br />
accedere alla memoria. In tal caso l'accesso potrebbe essere rallentato<br />
dalla CPU, nel caso in cui essa non sia particolarmente veloce o sia<br />
occupata in altri lavori.<br />
CPU RAM DMA I/O<br />
bus<br />
43