Architettura di un calcolatore

32
Architettura di un calcolatore Corso di Informatica A Vito Perrone

description

Architettura di un calcolatore. Corso di Informatica A Vito Perrone. Indice. La macchina di Von Neumann Memoria CPU Bus Interfacce Esempio L’algoritmo Il programma Fasi di esecuzione di un’istruzione. Bus di sistema. Unità di Elaborazione (CPU). Memoria Centrale (MM). - PowerPoint PPT Presentation

Transcript of Architettura di un calcolatore

Page 1: Architettura di un calcolatore

Architettura di un calcolatore

Corso di Informatica A

Vito Perrone

Page 2: Architettura di un calcolatore

Copyright © 2004 - The McGraw-Hill Companies, srl

Architettura di un CalcolatoreInformatica A – V. Perrone

2

Indice

• La macchina di Von Neumann– Memoria– CPU– Bus– Interfacce

• Esempio– L’algoritmo– Il programma– Fasi di esecuzione di un’istruzione

Page 3: Architettura di un calcolatore

Copyright © 2004 - The McGraw-Hill Companies, srl

Architettura di un CalcolatoreInformatica A – V. Perrone

3

La macchina di Von Neumann

Unità diElaborazione(CPU)

MemoriaCentrale (MM)

InterfacciaPeriferica P1

InterfacciaPeriferica P2

Bus di sistema

Esecuzione istruzioni

Memoria di lavoro

Memoria di massa,stampante, terminale…

Collegamento

Page 4: Architettura di un calcolatore

Copyright © 2004 - The McGraw-Hill Companies, srl

Architettura di un CalcolatoreInformatica A – V. Perrone

4

La macchina di Von Neumann

• Il processore estrae le istruzioni dalla memoria e le esegue– Le istruzioni possono comportare operazioni di

manipolazione dei dati– Oppure operazioni di trasferimento dei dati

• I trasferimenti di dati attraverso elementi funzionali diversi avvengono attraverso il bus di sistema

• Le fasi di elaborazione si susseguono in modo sincrono rispetto ad un orologio di sistema

• Durante ogni intervallo di tempo l’unità di controllo (parte del processore) stabilisce la funzione da svolgere

• L’intera macchina opera in maniera sequenziale

Page 5: Architettura di un calcolatore

Copyright © 2004 - The McGraw-Hill Companies, srl

Architettura di un CalcolatoreInformatica A – V. Perrone

5

Parola (word)

Spazio diindirizzamen

to210=1024

La memoria centrale (MM)

Registro indir. (AR)

k = 10 bit

Registro dati (DR)

load

store

h = 16 bit

0

1

1023

h = 16 bit

Dati eistruzioni

RAM e ROM

Volatile

Dato daleggere/scrivere

Indirizzo cella

Page 6: Architettura di un calcolatore

Copyright © 2004 - The McGraw-Hill Companies, srl

Architettura di un CalcolatoreInformatica A – V. Perrone

6

La memoria centrale (MM)

• Il numero di bit che costituiscono l’indirizzo di un word all’interno della memoria è caratteristico del microprocessore e identifica lo spazio di indirizzamento del microprocessore– Esempio: Pentium 32 bit– Avendo a disposizione k bit è possibile indirizzare 2k byte

• Si ricorda che:– 210 byte = 1Kilo Byte– 220 byte = 1Mega Byte– 230 byte = 1 Giga Byte– 240 byte = 1Tera Byte

Page 7: Architettura di un calcolatore

Copyright © 2004 - The McGraw-Hill Companies, srl

Architettura di un CalcolatoreInformatica A – V. Perrone

7

La memoria centrale (MM)

• La memoria centrale si chiama usualmente ram o memoria ad accesso casuale– Viene cosi detta una memoria il cui tempo di accesso sia

indipendente dall’indirizzo della parola alla quale si vuole accedere

– Si tratta di una memoria volatile• Altri tipi di memoria presenti in un calcolatore sono le

rom– Hanno caratteristiche generali simili alle ram– Un tempo di accesso notevolmente maggiore– Si tratta di memorie permanenti– Sono tipicamente utilizzate per memorizzare quei dati e

programmi che servono al momento dell’accensione dell’elaboratore, prima del caricamento del S.O.

– Esempio: Il BIOS (Basic Input Output System) che carica in memoria il sistema operativo quando la macchina viene accesa

Page 8: Architettura di un calcolatore

Copyright © 2004 - The McGraw-Hill Companies, srl

Architettura di un CalcolatoreInformatica A – V. Perrone

8

L’unità di elaborazione (CPU)

Registro istruzionecorrente (CIR)

Registro dati (DR)Registro indirizzi

(AR)

Registro contatoredi programma (PC)

Registro di stato (SR)

Registrointerruzioni (INTR)

A

B

Unità di controllo(CU)

Clock

Unitàaritmeticologica(ALU)

Controllo: -Prelievo -Decodifica -Esecuzione

Sincronizzazione

Operazioniaritmetichee logiche

Parola letta/da scrivere in MM

Indirizzo cella MM

Istruzione in elaborazione

Indirizzo prox istruzione

Registri generali

Stato CPUFlag: C, Z, S, V

Registri operandi

Page 9: Architettura di un calcolatore

Copyright © 2004 - The McGraw-Hill Companies, srl

Architettura di un CalcolatoreInformatica A – V. Perrone

9

• Il bus di sistema collega tra loro i vari elementi del calcolatore

• In ogni istante il bus è dedicato a collegare due unità, una trasmette ed una riceve– Il processore seleziona la connessione da attivare

e indica l’operazione da svolgere (bus mastering)• Il bus è suddiviso in tre insiemi di linee:

– Bus dati– Bus indirizzi– Linee di controllo: trasportano informazioni relative

alla modalità di trasferimento e alla temporizzazione

Il bus di sistema

Page 10: Architettura di un calcolatore

Copyright © 2004 - The McGraw-Hill Companies, srl

Architettura di un CalcolatoreInformatica A – V. Perrone

10

Il bus di sistema

Registro istruzionecorrente (CIR)

Registro dati (DR)Registro indirizzi

(AR)

Registro contatoredi programma (PC)

Registro di stato (SR)

Registrointerruzioni (INTR)

A

B

Unità di controllo(CU)

Clock

Unitàaritmeticologica(ALU)

CPU

Bus di sistema

Bus dati, Bus indirizzi, Bus controlli Master/slave

Page 11: Architettura di un calcolatore

Copyright © 2004 - The McGraw-Hill Companies, srl

Architettura di un CalcolatoreInformatica A – V. Perrone

11

Sequenza di lettura

CIR

DR AR

PCSR

INTR

A

B

CUCk

ALU

0

1023

123

42123

123

Passo 1

READ

Passo 2

42

Passo 3

OK

Passo 4

Page 12: Architettura di un calcolatore

Copyright © 2004 - The McGraw-Hill Companies, srl

Architettura di un CalcolatoreInformatica A – V. Perrone

12

Sequenza di scrittura

CIR

DR AR

PCSR

INTR

A

B

CUCk

ALU

0

1023

123

42123

123

Passo 1

WRITE

Passo 3

OK

Passo 5

70

Passo 2

Passo 4

70

Page 13: Architettura di un calcolatore

Copyright © 2004 - The McGraw-Hill Companies, srl

Architettura di un CalcolatoreInformatica A – V. Perrone

13

• Si occupa della gestione dello scambio di dati tra processore e periferiche

• E’ possibile avere una interfaccia diversa per ogni periferica... ...ma è più logico avere delle interfacce standard per periferiche simili

• Esempi di interfacce standard:– Interfaccia seriale RS-232-C (mouse, modem, ...)– Interfaccia PS2 (mouse, tastiera, ...)– Interfaccia USB (mouse, telecamere, stampanti, scanner, ...)– Interfaccia parallela Centronix (stampante, scanner, ...)– Interfaccia ISA (modem, schede audio, ...)– Interfaccia SCSI (hard-disk, CD-ROM, scanner, ...)– Interfaccia EIDE (hard-disk, CD_ROM, ...)

• Ogni interfaccia contiene registri per:– Inviare comandi alla periferica– Scambiare dati– Controllare il funzionamento della periferica

Le interfacce delle periferiche

Page 14: Architettura di un calcolatore

Copyright © 2004 - The McGraw-Hill Companies, srl

Architettura di un CalcolatoreInformatica A – V. Perrone

14

Le interfacce delle periferiche

Interfacccia periferica 1

Bus di sistema

Peripheral Data Register (PDR)

Peripheral Command Register (PCR)

Peripheral State Register (PSR)

Peripheral Data Register (PDR)

Peripheral Command Register (PCR)

Peripheral State Register (PSR)

Interfacccia periferica 2

Dato da leggere/scrivere

Comando da eseguire

Stato della periferica

Page 15: Architettura di un calcolatore

Copyright © 2004 - The McGraw-Hill Companies, srl

Architettura di un CalcolatoreInformatica A – V. Perrone

15

Le interruzioni

• Al fine di gestire richieste provenienti dalle periferiche può essere necessario interrompere la normale esecuzione di un programma

• La periferica segnala sue particolari necessità attraverso una interruzione

• Ad ogni passo di esecuzione la UC verifica lo stato del registro delle interruzioni

• Se si è verificata una interruzione:– Lo stato del processore (registri) viene salvato in memoria– Viene attivata una speciale procedura di gestione delle

interruzioni (parte del S.O.)– Quando la procedura di gestione delle interruzioni termina lo

stato del processore viene ripristinato ed il programma viene ripreso

Page 16: Architettura di un calcolatore

Copyright © 2004 - The McGraw-Hill Companies, srl

Architettura di un CalcolatoreInformatica A – V. Perrone

16

Es.: valutazione di espressione

• Vogliamo calcolare il valore dell’espressione:(a+b)·(c+d)leggendo i valori delle variabili a, b, c, d dal dispositivo di ingresso e scrivendo il risultato della valutazione sul dispositivo di uscita.

Page 17: Architettura di un calcolatore

Copyright © 2004 - The McGraw-Hill Companies, srl

Architettura di un CalcolatoreInformatica A – V. Perrone

17

Un algoritmo generale

1. Leggi dal dispositivo di ingresso il valore delle variabili a, b, c, d

2. Somma il valore di a al valore di b

3. Salva il risultato parziale ottenuto

4. Somma il valore di c al valore di d

5. Moltiplica il risultato parziale appena ottenuto con quello precedentemente salvato

6. Scrivi sul dispositivo di uscita il risultato della valutazione complessiva

7. Termina l’esecuzione del programma.

Page 18: Architettura di un calcolatore

Copyright © 2004 - The McGraw-Hill Companies, srl

Architettura di un CalcolatoreInformatica A – V. Perrone

18

L’algoritmo dettagliato (1)

1. Scrivi nella cella di memoria centrale riservata al valore della variabile a il valore letto dal dispositivo di ingresso (disponibile nel registro dati della periferica). Fai la stessa cosa per b, c, d

2. Somma il valore di a al valore di b

2.1Copia il contenuto della cella di memoria riservata ad a nel registro A

2.2 Copia il contenuto della cella di memoria riservata a b nel registro B

2.3Somma il contenuto dei registri A e B

3. Salva il risultato parziale, contenuto nel registro A, in una cella di memoria predisposta per il risultato (z).

Page 19: Architettura di un calcolatore

Copyright © 2004 - The McGraw-Hill Companies, srl

Architettura di un CalcolatoreInformatica A – V. Perrone

19

4. Somma il valore di c al valore di d4.1 Copia il contenuto della cella di memoria

riservata a c nel registro A 4.2 Copia il contenuto della cella di memoria

riservata a b nel registro B4.3 Somma il contenuto dei registri A e B

5. Moltiplica il risultato parziale appena ottenuto con quello precedentemente salvato5.1 Copia il contenuto della cella riservata a z nel registro B (z e B contengono ora a+b, mentre A contiene c+d)5.2 Moltiplica il contenuto dei registri A e B.

L’algoritmo dettagliato (2)

Page 20: Architettura di un calcolatore

Copyright © 2004 - The McGraw-Hill Companies, srl

Architettura di un CalcolatoreInformatica A – V. Perrone

20

6. Scrivi sul dispositivo di uscita il risultato della valutazione complessiva6.1 Memorizza il risultato appena calcolato

(e disponibile nel registro A) nella celladi memoria riservata a z

6.2 Copia il contenuto della cella di memoria riservata a z nel registro dati della periferica di uscita

7. Termina l’esecuzione del programma.

L’algoritmo dettagliato (3)

Page 21: Architettura di un calcolatore

Copyright © 2004 - The McGraw-Hill Companies, srl

Architettura di un CalcolatoreInformatica A – V. Perrone

21

Tipologia delle operazioni svolte

• Operazioni di manipolazione– Somma: 2.3, 4.3– Moltiplicazione: 5.2

• Operazioni di trasferimento– Da periferica-input a MM: 1– Da MM a CPU: 2.1, 2.2, 4.1, 4.2, 5.1– Da CPU a MM: 3, 6.1– Da MM a periferica-output: 6.2

Page 22: Architettura di un calcolatore

Copyright © 2004 - The McGraw-Hill Companies, srl

Architettura di un CalcolatoreInformatica A – V. Perrone

22

Le istruzioni macchina

• Un programma scritto in linguaggio macchina è formato da una sequenza di istruzioni appartenenti al set di istruzioni del particolare processore

• Ogni istruzione è formata da:– Un codice operativo– Zero o più operandi

• Tanto il codice operativo quanto gli operandi sono rappresentati nella memoria del calcolatore sotto forma di numeri binari

• Data la difficoltà per l’uomo di interpretare numeri binari si usa l’assembler al posto del linguaggio macchina codice operativo operando(i)

Page 23: Architettura di un calcolatore

Copyright © 2004 - The McGraw-Hill Companies, srl

Architettura di un CalcolatoreInformatica A – V. Perrone

23

Le istruzioni macchina

• Il set di istruzioni di un qualsiasi linguaggio macchina può essere diviso in quattro classi principali di istruzioni:– Istruzioni per il trasferimento dati tra

memoria e registri del processore e viceversa

– Operazioni aritmetiche e logiche sui dati– Istruzioni per il controllo del flusso di

programma– Istruzioni per la gestione dell’I/ O

Page 24: Architettura di un calcolatore

Copyright © 2004 - The McGraw-Hill Companies, srl

Architettura di un CalcolatoreInformatica A – V. Perrone

24

Forma binaria del programma

0100000000010000 Leggi un valore dall’input e mettilo nella cella 16 (a)0100000000010001 Leggi un valore dall’input e mettilo nella cella 17 (b)0100000000010010 Leggi un valore dall’input e mettilo nella cella 18 (c)0100000000010011 Leggi un valore dall’input e mettilo nella cella 19 (d) 0000000000010000 Carica il contenuto della cella 16 (a) nel registro A0001000000010001 Carica il contenuto della cella 17 (b) nel registro B 0110000000000000 Somma i registri A e B0010000000010100 Scarica il contenuto di A nella cella 20 (z) (ris.parziale) 0000000000010010 Carica il contenito della cella 18 (c) nel registro A0001000000010011 Carica il contenito della cella 19 (d) nel registro B0110000000000000 Somma i registri A e B0001000000010011 Carica il contenuto della cella 20 (z) (ris. parziale) in B1000000000000000 Moltiplica i registri A e B0010000000010100 Scarica il contenuto di A nella cella 20 (z) (ris. totale)0101000000010100 Scrivi il contenuto della cella 20 (z) (ris. totale) in output1101000000000000 Halt

Page 25: Architettura di un calcolatore

Copyright © 2004 - The McGraw-Hill Companies, srl

Architettura di un CalcolatoreInformatica A – V. Perrone

25

Programma in memoria centrale010000000001000001000000000100010100000000010010010000000001001100000000000100000001000000010001011000000000000000100000000101000000000000010010000100000001001101100000000000000001000000010011100000000000000000100000000101000101000000010100 1101000000000000

Cella 0123456789

101112131415

Spazio riservato per a 16 Spazio riservato per b 17 Spazio riservato per c 18 Spazio riservato per d 19 Spazio riservato per z 20

Page 26: Architettura di un calcolatore

Copyright © 2004 - The McGraw-Hill Companies, srl

Architettura di un CalcolatoreInformatica A – V. Perrone

26

Fase di fetch 1a istruzione

0000000000

PC

AR

0100000000010000

Memoria centrale (MM)

0

DR

1023

CIR

0000000000

0100000000010000

0100000000010000

0000000001

Passo 1

Passo 2

Passo 3

Passo 4

Page 27: Architettura di un calcolatore

Copyright © 2004 - The McGraw-Hill Companies, srl

Architettura di un CalcolatoreInformatica A – V. Perrone

27

Fase di interpretazione 1a istruzione

0100000000010000

CIR

Codice operativo 0100 = leggi da input

Page 28: Architettura di un calcolatore

Copyright © 2004 - The McGraw-Hill Companies, srl

Architettura di un CalcolatoreInformatica A – V. Perrone

28

Fase di esecuzione 1a istruzione

AR

Memoria centrale (MM)

0

DR

1023

0001000000011111

PDR

0100000000010000

CIR 16

Valore di a letto dall’input (es. 4127)

Indirizzo operando00000010000 = cella 16

0000010000

0001000000011111

0001000000011111

Passo 1

Passo 2

Passo 3

Page 29: Architettura di un calcolatore

Copyright © 2004 - The McGraw-Hill Companies, srl

Architettura di un CalcolatoreInformatica A – V. Perrone

29

Il linguaggio assembler

• Un esempio (didattico) di assembler potrebbe contenere le seguenti istruzioni:– Le istruzioni loada e loadb servono per spostare il contenuto di

una cella di memoria nei registri A e B rispettivamente• Esempio: loada ind1

– Le istruzioni storea e storeb servono per spostare il contenuto dei registri A e B rispettivamente in una cella di memoria il cui indirizzo è indicato come parametro

• Esempio: storea ind1– Le istruzioni per lo svolgimento delle operazioni aritmetiche di base

• Operazioni su interi: add, dif, mul, div• Operazioni su reali: addr, difr, mulr, divr• Le istruzioni operano sui registri A e B e pongono il risultato nel registro

A• Nel caso di divisione tra interi il registro B viene usato per contenere il

resto dell’operazione

Page 30: Architettura di un calcolatore

Copyright © 2004 - The McGraw-Hill Companies, srl

Architettura di un CalcolatoreInformatica A – V. Perrone

30

Il linguaggio assembler

– Le istruzioni per lo svolgimento delle operazioni logiche di base• and, or, not• Le istruzioni operano sui registri A e B e pongono il risultato nel registro A• Nel caso di operazione not viene usato il solo registro A

– Le istruzioni per leggere/scrivere su periferiche • L’istruzione read legge un dato dalla periferica di input e pone il dato letto nella

cella di memoria il cui indirizzo viene passato come parametro• Esempio: read ind1• L’istruzione write scrive il dato presente nella cella di memoria il cui indirizzo

viene passato come parametro sulla periferica di output• Esempio: write ind1

– Le istruzioni per il controllo di flusso• L’istruzione di salto incondizionato jump salta all’indirizzo specificato come

parametro • L’istruzione di salto condizionato jumpz salta all’indirizzo specificato come

parametro se l’ultima operazione matematica ha dato risultato nullo• Il processore controlla il valore del registro di stato del processore• Il salto viene effettuato solo se il bit di zero vale 1

– Altre istruzioni• L’istruzione halt termina l’esecuzione del programma

Page 31: Architettura di un calcolatore

Copyright © 2004 - The McGraw-Hill Companies, srl

Architettura di un CalcolatoreInformatica A – V. Perrone

31

Linguaggio Macchina, Assembler e C

READ AREAD BREAD CREAD DLOADA ALOADB BADDSTOREA RISLOADA CLOADB DADDLOADB RISMULSTOREA RISWRITE RISHALTINT AINT BINT CINT DINT RIS

int a, b, c, d, ris;scanf("%d%d%d%d", &a, &b, &c, &d);ris = (a+b)*(c+d);printf("ecco il risultato %d", ris);

01000000000100000100000000010001010000000001001001000000000100110000000000010000000100000001000101100000000000000010000000010100 00000000000100100001000000010011 01100000000000000001000000010011 10000000000000000010000000010100 0101000000010100 1101000000000000

Linguaggio Macchina

Linguaggio Assembler

Linguaggio C

Page 32: Architettura di un calcolatore

Copyright © 2004 - The McGraw-Hill Companies, srl

Architettura di un CalcolatoreInformatica A – V. Perrone

32

Esercizi

• 1) Si usi il linguaggio assembler presentato per scrivere un programma che legge due numeri A e B e scrive a video B volte il primo numero A

• 2) Si usi il linguaggio precedente per scrivere un programma che legge due numeri A e B e scrive a video il prodotto di A per B– Non si faccia uso dell’istruzione mul ma

delle sole istruzioni add e dif