Memoria e CPU

Moreno Marzolla

moreno.marzolla@pd.infn.it

Copyright © 2006 Moreno Marzolla

This work is licensed under the Creative Commons Attribution-Noncommercial-Share Alike 2.5 Italy License. To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-sa/2.5/it/ or send a letter to Creative Commons, 171 Second Street, Suite 300, San Francisco, California, 94105, USA.

Ricordiamo...

Il docente

Moreno Marzolla

Email: moreno.marzolla@pd.infn.it

Web: http://www.dsi.unive.it/~marzolla

Ufficio: Dipartimento di Fisica, via Marzolo 8

Orario delle lezioni

Mercoledì	11:30—13:15, Aula A

Giovedì	11:30—13:15, Aula A

Ricordiamo...

Testi di riferimento

Dispense “Informatica di Base” (Colussi, Filé, Rossi), presso la libreria Progetto

Donatella Sciuto, Giacomo Buonanno, Luca Mari, “Introduzione ai sistemi informatici”, terza edizione, McGraw-Hill, 2005, ISBN 88-386-6269-X

Altri testi consigliati

J. Glenn Brookshear, “Informatica—una panoramica generale”, Addison-Wesley, 2004, ISBN 88-7192-184-4

Stefano Ceri, Dino Mandrioli, Licia Sbattella, “Informatica: arte e mestiere”, McGraw-Hill, 2004, ISBN 88-386-6140-5

Lucidi delle lezioni e ulteriori risorse
http://www.dsi.unive.it/~marzolla/teaching

Ricordiamo...

Processore

(CPU)

Memoria

Sottosistema

di interfaccia

(I/O)

Bus di sistema

Architettura a Bus

Caratteristiche dell'architettura a Bus

Semplicità

Una sola linea di connessione cui è possibile attaccare dispositivi diversi, anziché un nuovo collegamento per ogni coppia di dispositivi che devono interagire tra loro

Estensibilità

Nuovi dispositivi possono essere aggiunti in modo semplice

Standardizzazione

E' possibile definire normative che consentono a dispositivi di produttori diversi di interagire correttamente

Lentezza

Il bus è condiviso tra dispositivi diversi, ma può essere utilizzato solo da uno di essi alla volta

Limitata capacità

Al crescere del numero dei dispositivi, il bus diventa un fattore limitante delle prestazioni del sistema

Memoria

Processore

(CPU)

Memoria

Sottosistema

di interfaccia

Bus di sistema

RAM
(Random Access Memory)

Nella RAM, come ovunque in un computer, le informazioni sono rappresentate con sequenze di 0 e di 1. Numeri binari.

La RAM quindi è fatta per contenere tali numeri.

Un bit può contenere o 0 o 1

Un byte è una sequenza di 8 bits consecutivi

Una parola (word) consiste di 4 bytes consecutivi

RAM

La RAM in sostanza è una sequenza di bytes

La CPU è in grado di leggere o scrivere singoli bytes (o parole) nella RAM

Bit

Byte

Parola

(word)

Indirizzamento della RAM

Unità di misura

1 Kilo Byte (1KB)
210 = 1024 bytes, ≈1000

1 Mega Byte (1MB)
220 = 1.048.576 bytes, ≈1000000

1 Giga Byte (1GB)
230 = 1.073.741.824 bytes, ≈109

1 Tera Byte (1TB)
240 = 1.099.511.627.776 bytes, ≈1012

Indirizzo

0

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

Parola

0

1

2

3

4

8 bits

Caratteristiche della RAM

RAM

Accedere ad ogni byte ha la stessa durata (10-7 sec): non dipende da quale byte è stato acceduto prima

E' volatile: se tolgo la spina ogni informazione in essa contenuta è persa

ogni byte ha un indirizzo: 0, 1, 2, ...

Il byte è la minima quantità accessibile (attraverso il suo indirizzo)

Funzionamento della RAM

0

1

1

0

1

1

0

0

16 celle di memoria

da 8 bit ciascuna

Decodificatore

linea 0	0

linea 1	0

linea 2	0

linea 3	0

linea 4	0

linea 5	0

linea 6	1

linea 7	0

linea 8	0

linea 9	0

linea 10	0

linea 11	0

linea 12	0

linea 13	0

linea 14	0

linea 15	0

01102

Bus indirizzi

Linee di

selezione

Byte

selezionato

0

1

1

0

1

1

0

0

Leggi/Scrivi

Bus di

controllo

Bus Dati

Vari tipi di memoria

RAM

I/O

Bus di sistema

Cache

CPU

Hard
Disk

I/O

CD/

DVD

Accesso molto veloce

Costo elevato

Limitata capacità

Accesso veloce

Costo contenuto

Ampia capacità

Accesso lento/molto lento

Costo basso

Vastissima capacità

CPU

ALU

R0

R1

Rn

PC

PSW

IR

Memoria

Bus

Controllo

Dati

Indirizzi

Controllo

Componenti della CPU

Un numero fissato N di Registri R1...RN

Ciascun registro contiene una sequenza di bit; di solito, ma non necessariamente, un registro contiene 32 bit = 1 parola

PC (Program Counter)

Indica l'indirizzo di memoria che contiene il codice della prossima istruzione che deve essere eseguita

IR (Instruction Register)

Contiene il codice dell'istruzione che deve essere eseguita

PSW (Program Status Word)

Informazioni sullo stato del programma (es: se si è verificato overflow)

Cosa fa la CPU?

Esegue continuamente il ciclo seguente

Fetch

Preleva dalla memoria l'istruzione da eseguire; l'istruzione viene prelevato dall'indirizzo di memoria che si trova in PC; il contenuto di tale cella di memoria viene posto in IR

Decode

Esamina l'istruzione che si trova memorizzata in IR per decidere cosa fare

Execute

Esegue l'istruzione memorizzata in IR, incluso il recupero dalla memoria degli eventuali parametri necessari ad eseguirla, e deposito del risultato

Categorie di istruzioni / 1

Istruzioni Aritmetico-Logiche

Esempio: Somma dei valori contenuti in due registri; il risultato va in un terzo registro

Istruzioni di controllo del flusso

Esempio: Salta ad eseguire l'istruzione il cui codice è contenuto nella locazione di memoria X

Istruzioni di letture/scrittura di memoria

Esempio: Copia il valore contenuto nella cella di memoria X all'interno del registro Ry

Istruzioni di Input/Output

Esempio: Invia il contenuto del registro Rx al dispositivo di I/O numero y

Formato di una istruzione

Anche le istruzioni della CPU sono codificate con sequenze di bit

Di solito le istruzioni sono codificate con una singola parola (4 byte = 32 bit)

Se le istruzioni sono codificate con 32 bit, ovviamente l'IR deve essere ampio esattamente 32 bit

All'interno dei 32 bit della parola, occorre indicare:

Il tipo di istruzione da eseguire (somma, prodotto, salto, confronto, copia da memoria...)

Gli eventuali parametri dell'istruzione (quali registri sono coinvolti, quali locazioni di memoria sono coinvolte, ecc.)

Esempio

Consideriamo una ipotetica istruzione di somma
“Somma i valori contenuti nei registri Ri e Rj; poni il risultato nel registro Rk”

Supponiamo di avere 256 possibili registri

Una possibile codifica dell'istruzione

ADD Ri, Rj, Rk

00000001

8 bit

8 bit

8 bit

Codice istruzione

i

j

k

Esempio / 2

Ad esempio:

00000001

00011100

00000010

10000000

1 byte

1 byte

1 byte

1 byte

1 parola

Istruzione=

ADD

Primo Addendo:

Registro numero 28

Secondo Addendo:

Registro numero 2

Risultato va in

Registro numero 128

Esempio / 3

Consideriamo una ipotetica istruzione di trasferimento registro → memoria
“Copia il contenuto del registro Ri nella cella di memoria di indirizzo m”

Una possibile codifica

STORE Ri, m

00000010

8 bit

16 bit

Codice istruzione

i

m

Domanda

Nel caso precedente (istruzione STORE Ri, m), quanto grande può essere la memoria a disposizione?

Risposta

L'indirizzo m della destinazione è espresso con 16 bit

L'intero più grande rappresentabile con 16 bit è 216-1 = 65535

Quindi la memoria massima indirizzabile con l'istruzione STORE è di 65536 bytes (numerati da 0 a 65535)

00000010

8 bit

16 bit

Codice istruzione

i

m

Domanda

La CPU di un computer ha il registro PC di 20 bit e una memoria RAM di un Mbyte. E' possibile aumentare la sua memoria RAM senza cambiare la CPU?

Risposta

Moreno Mazolla

2005-09-25T15:46:34