• Non ci sono risultati.

Architettura dei calcolatori Architettura dei calcolatori

N/A
N/A
Protected

Academic year: 2021

Condividi "Architettura dei calcolatori Architettura dei calcolatori"

Copied!
33
0
0

Testo completo

(1)

Architettura dei calcolatori Architettura dei calcolatori

Moreno Marzolla

Dipartimento di Informatica—Scienza e Ingegneria (DISI) Università di Bologna https://www.moreno.marzolla.name/

Cap. 2 dispensa

(2)
(3)

Cos'è un computer?

È un dispositivo in grado di

Elaborare dati

Memorizzare dati

Trasferire dati da e verso l'esterno

Eseguire operazioni di controllo e coordinamento tra le parti di cui è composto

I/O

Controllo

Elaborazione Memoria Ambiente

Esterno

(4)

Architettura di von Neumann

Dati e programmi sono rappresentati allo stesso modo (da sequenze di bit) e contenuti nella stessa memoria

János Lajos Margittai Neumann, 1903—

(5)

Architettura dei calcolatori 5

Struttura di un calcolatore:

Architettura di von Neumann

Processore

(CPU) Memoria Sottosistema

di interfaccia (I/O)

Bus di sistema

Esegue le istruzioni elementari richieste dai programmi

Mantiene Dati e

Programmi Permette di comunicare dati e programmi alla macchina e di ottenere i risultati (tastiera, scheda audio, stampante, schermo, mouse...)

Elaborazione + Controllo

Memorizzazione

Trasferimento dati

(6)

Architettura a Bus

Semplicità

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

Estensibilità

Nuovi dispositivi possono essere aggiunti in modo semplice

Standardizzazione

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

Limitata capacità

Al crescere del numero dei dispositivi, il bus diventa un fattore limitante (collo di bottiglia) delle prestazioni del sistema

(7)

Memoria e CPU

ALU

R0 R1

RN-1

PC

PSW IR

Memoria (RAM) Memoria

(RAM)

Bus ControlloIndirizziDati

Controllo

(8)

Memoria

Processore

(CPU) Memoria Sottosistema

di interfaccia

Bus di sistema

(9)

RAM (Random Access Memory)

La RAM è una sequenza di byte

Ogni byte è identificato dalla sua posizione

(indirizzo di memoria)

byte 0, byte 1, byte 2, ...

Alcune CPU sono in grado di accedere ai singoli byte;

altre accedono a parole (es., gruppi di 4 Byte)

Indirizzo

0 12 3 4 56 7 8 910 11 12 1314 15 16 1718

Parola 8 bit = 1 byte

(10)

Unità di misura

Per spazio disco e banda di rete si è soliti usare la base 10

1 kilobyte (1 kB)

1000 B

1 megabyte (1 MB)

10002 = 1.000.000 B

1 gigabyte (1 GB)

10003 B

1 terabyte (1 TB)

10004 B

Per quantità di RAM si è soliti usare la base 2

1 kibibyte (1 KiB)

1024 B

1 mebibyte (1 MiB)

10242 = 1.048.576 B

1 gibibyte (1 GiB)

10243 = 1.073.741.824 B

1 tebibyte (1 TiB)

10244 =

1.099.511.627.776 B

(11)

Esempio: lettura byte all'indirizzo 01102

Memoria Memoria

Bus Controllo = Read

Dati

Indirizzi = 0110

Indirizzo Contenuto

0 00001010

1 10101000

2 00000000

3 00000000

4 01010010

5 11110000

6 01011010

...

ALU

R0 R1

RN-1

PC

PSW

IR Controllo

(12)

Esempio: lettura byte all'indirizzo 01102

Memoria Memoria

Bus Controllo = Read

Dati = 01011010 Indirizzi = 0110

Indirizzo Contenuto

0 00001010

1 10101000

2 00000000

3 00000000

4 01010010

5 11110000

6 01011010

...

ALU

R0 R1

RN-1

PC

IR Controllo

(13)

Esempio: scrittura di 000001012 all'indirizzo 01102

Memoria Memoria

Bus Controllo = Write

Dati = 00000101 Indirizzi = 0110

Indirizzo Contenuto

0 00001010

1 10101000

2 00000000

3 00000000

4 01010010

5 11110000

6 00000101

...

ALU

R0 R1

RN-1

PC

PSW

IR Controllo

(14)

Architettura di von Neumann

Processore

(CPU) Memoria Sottosistema

di interfaccia (I/O)

Bus di sistema

(15)

Hard Disk meccanici

Negli hard disk meccanici i dati vengono memorizzati in tracce concentriche sulle superfici di dischi

magnetici rotanti

Un blocco composto da testine di lettura/scrittura

"sorvola" tutte le superfici per accedere ai dati richiesti

By Eric Gaba, Wikimedia Commons user Sting, CC BY-SA 3.0, https://commons.wikimedia.org/w/index.php?curid=11278668

Asse di rotazione

Movimento delle testine

(16)

Hard disk meccanico vs hard disk a stato solido (SSD)

Gli hard disk a stato solido sono generalmente più veloci di quelli meccanici

non hanno parti in movimento

...ma sono anche più costosi, quindi meno capienti a parità di prezzo

L'utente che ha caricato in origine il file è stato Rochellesinger di Wikipedia in inglese - Trasferito da en.wikipedia su Commons da ivob., CC BY-SA 2.5, https://commons.wikimedia.org/w/index.php?curid=5832378

(17)

Architettura di von Neumann

Processore

(CPU) Memoria Sottosistema

di interfaccia (I/O)

Bus di sistema

(18)

CPU

ALU

R0 R1

RN-1

PC IR

Memoria Memoria

Bus ControlloIndirizziDati

Controllo

(19)

Componenti della CPU

Un certo numero N di registri di uso generale R0...RN-1

Di solito, ma non necessariamente, un registro contiene 32 bit = 1 parola

PC (Program Counter)

Indica l'indirizzo di memoria che contiene la prossima istruzione da eseguire

IR (Instruction Register)

Contiene il codice numerico che rappresenta l'istruzione che deve essere eseguita

PSW (Program Status Word)

Informazioni sullo stato del programma (es: se l'ultima operazione aritmetica ha causato overflow, se l'ultima operazione aritmetica ha dato zero come risultato, ...)

(20)

Ciclo Fetch-Decode-Execute

Fetch

Decode

Execute

Preleva dalla memoria l'istruzione da eseguire;

l'istruzione viene letta dall'indirizzo di memoria che si trova in PC; il contenuto viene posto in IR

Esamina l'istruzione memorizzata in IR per decidere quali operazioni richiede

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

Aggiorna il PC per la prossima istruzione.

(21)

Tipi di istruzioni

Istruzioni Aritmetico-Logiche

Esempio: Somma il contenuto di Ri al contenuto di Rj;

memorizza il risultato nel registro Rk

Istruzioni di controllo del flusso di esecuzione

Esempio: Salta ad eseguire l'istruzione il cui codice è contenuto nella cella di memoria all'indirizzo M

Istruzioni di letture/scrittura di memoria

Esempio: Copia il valore del byte/della parola in memoria all'indirizzo M nel registro Ri

Istruzioni di Input/Output

Esempio: Invia il contenuto del registro Ri al dispositivo di I/

O numero z

(22)

Formato di una istruzione

Le istruzioni sono rappresentate da sequenze di bit

In alcuni processori ogni istruzione è codificata con 4 Byte = 32 bit = 1 parola

Altri (es., Intel x86) rappresentano istruzioni diverse con un diverso numero di byte

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

All'interno dei 32 bit, 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.)

(23)

Esempio

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 è la seguente:

ADD Ri, Rj, Rk

00000001 8 bit 8 bit 8 bit

Codice istruzione i j k

(24)

Esempio

00000001 00011100 00000010 10000000

1 Byte 1 Byte 1 Byte 1 Byte 1 parola = 4 Byte

Istruzione=

ADD

Primo Addendo:

Registro 28

Secondo Addendo:

Registro 2

Risultato va nel

(25)

ALU

3710 2110

100010

Controllo

Memoria Memoria R2

R28

R128

PC IR PSW

000000012

100010

000111002

100110

000000102

100210

100000002

100310

000001102

100410

001001102

100510

010001102

100610

101101102

100710

Indirizzo Contenuto 32 bit = 1 parola Esempio

(26)

ALU

3710 2110

100010

Controllo

Memoria Memoria R2

R28

R128

PC IR PSW

000000012

100010

000111002

100110

000000102

100210

100000002

100310

000001102

100410

001001102

100510

010001102

100610

101101102

100710

Indirizzo Contenuto 32 bit = 1 parola Fetch

(27)

ALU

3710 2110

100010

00000001000111000000001010000000 Controllo

Memoria Memoria R2

R28

R128

PC IR PSW

000000012

100010

000111002

100110

000000102

100210

100000002

100310

000001102

100410

001001102

100510

010001102

100610

101101102

100710

Indirizzo Contenuto 32 bit = 1 parola Fetch

(28)

ALU

3710 2110

100010

00000001000111000000001010000000 Controllo

Memoria Memoria R2

R28

R128

PC IR PSW

000000012

100010

000111002

100110

000000102

100210

100000002

100310

000001102

100410

001001102

100510

010001102

100610

101101102

100710

Indirizzo Contenuto

32 bit = 1 parola Decode

ADD

(29)

ALU

3710 2110

5810

100010

00000001000111000000001010000000 Controllo

Memoria Memoria R2

R28

R128

PC IR PSW

000000012

100010

000111002

100110

000000102

100210

100000002

100310

000001102

100410

001001102

100510

010001102

100610

101101102

100710

Indirizzo Contenuto 32 bit = 1 parola Execute

ADD

(30)

ALU

3710 2110

5810

100410

00000001000111000000001010000000 Controllo

Memoria Memoria R2

R28

R128

PC IR PSW

000000012

100010

000111002

100110

000000102

100210

100000002

100310

000001102

100410

001001102

100510

010001102

100610

101101102

100710

Indirizzo Contenuto 32 bit = 1 parola Fetch

(31)

Esempio

Ipotetica istruzione di trasferimento registro → memoria

“Copia il contenuto del registro Ri a partire dalla cella di memoria di indirizzo m”

Una possibile codifica

STORE Ri, m

00000010 8 bit 16 bit

Codice istruzione i m

(32)

Domanda

Considerando l'istruzione STORE Ri,m rappresentata come sopra, quanto grande può essere la memoria

accessibile all'istruzione?

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

00000010 8 bit 16 bit

Codice istruzione i m

(33)

Domanda

La CPU di un computer ha il registro PC di 20 bit e una memoria RAM di 220 B (1 MiB). È possibile

aumentare la memoria RAM destinata all'esecuzione dei programmi senza cambiare la CPU?

Riferimenti

Documenti correlati

Architettura dei calcolatori, Paolo Bison, FI08, 2008-09-29 – p.13.

 meccanismo per simulare una memoria centrale di dimensione maggiore di quella esistente utilizzando porzioni di memoria secondaria (disco). 

converte l’intero programma sorgente nel corrispondente programma eseguibile.

converte l’intero programma sorgente nel corrispondente programma eseguibile.

converte l’intero programma sorgente nel corrispondente programma eseguibile.

(10 punti) Si scriva in linguaggio assembler la funzione INTPOW che riceve in R1 e R2 due numeri interi e restituisce in R0 il valore R1 R2. Suggerimento: si scriva e utilizzi

Il primo file contiene del parlato mentre il secondo file contiene della musica da usare come sottofondo del parlato.. I due file hanno durata differente e, se quella della musica di

Si scriva un programma in linguaggio C che riceva sulla riga di comando il nome di un file di ingresso, il nome di un file di uscita e un numero intero, rappresentante la dimensione