30.05.2013 Views

Architettura del Calcolatore - Dipartimento di Ingegneria Informatica ...

Architettura del Calcolatore - Dipartimento di Ingegneria Informatica ...

Architettura del Calcolatore - Dipartimento di Ingegneria Informatica ...

SHOW MORE
SHOW LESS

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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!