La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Architettura di un calcolatore e linguaggio macchina.

Presentazioni simili


Presentazione sul tema: "Architettura di un calcolatore e linguaggio macchina."— Transcript della presentazione:

1 Architettura di un calcolatore e linguaggio macchina

2 CPU Central Processing Unit, processore  Unita’ logica/aritmetica: elaborazione dati  Unita’ di controllo: coordina le attivita’  Registri: memoria temporanea, simili a celle di memoria principale Generici: per gli operandi di un’operazione logica/aritmetica, e il risultato Speciali: per operazioni particolari

3 CPU e memoria principale Trasferimento dati in entrambe le direzioni (lettura e scrittura): bus

4 Somma di due dati in memoria Prendere primo operando da RAM e metterlo in un registro Prendere l’altro operando da RAM e metterlo in un registro Attivare i circuiti per la somma usando i due registri come ingressi e un altro registro come uscita Trasferire il risultato in RAM Stop

5 Sia dati che programmi in RAM Non solo operandi o risultati sono memorizzati nella RAM Anche le istruzioni dei programmi La CPU esegue cose diverse (somma, sottrazione, divisione, operazioni logiche,...) a seconda dell’istruzione che legge in RAM Ogni istruzione: sequenza di bit contenuta in una cella di RAM

6 Linguaggio macchina Insieme di istruzioni molto semplici Approccio RISC (Reduced Instruction Set Computer): poche istruzioni semplici Approccio CISC (Complex...): molte istruzioni complesse Pentium sono CISC, POwerPC (Apple, IBM, Motorola) sono RISC

7 Istruzioni per trasferimento dati In realta’, non e’ un trasferimento ma una copia Load: da memoria a registro Store: da registro a memoria Anche input/output

8 Istruzioni logico/aritmetiche Operazioni aritmetiche: somma,... Operazioni logiche: and, or, xor, anche shift e rotate

9 Istruzioni di controllo Regolano l’esecuzione del programma Es.: stop Anche istruzioni di salto: se l’istruzione da eseguire non e’ la successiva nella lista Salto condizionato o no Es.: salta al passo 5, o salta al pass 5 se il valore ottenuto e’ 0

10 Divisione di due valori in memoria 1. Carica in un registro un valore in memoria (LOAD) 2. Carica in un altro registro un altro valore in memoria (LOAD) 3. Se questo secondo valore e’ 0, salta al passo 6 (salto condizionato) 4. Dividi il contenuto del primo registro per quello del secondo registro e metti il risultato in un terzo registro (op. aritmetica) 5. Archivia il contenuto del terzo registro in memoria (STORE) 6. STOP

11 Esempio di architettura 16 registri, 256 celle di memoria Program counter: indirizzo della prossima istruzione da eseguire Instruction register: istruzione da eseguire

12 Istruzione macchina Due parti (campi): Campo codice operativo: quale operazione eseguire Campo operando: diverso a seconda dell’operazione

13 Istruzioni di trasferimento: registri  RAM 012345012345 ALU R0R0 R1R1 R2R2 LOAD STORE

14 Formato: in binario! codice-op n. registro indirizzo parola RAM 8 bit 4 bit 20 bit 1 parola LOAD 00000000 STORE 00000001 Codici:

15 ARITMETICHE eseguono somma, differenza, moltiplicazione e divisione usando i registri come operandi ADD 00000010 FADD 00000011 SUB 00000100 FSUB 00000101 MULT 00000110 FMULT 00000111 DIV 00001000 FDIV 00001001 MOD 00001010 RiRi RjRj C Op

16 FORMATO: codice-op reg 1 reg 2 8 bit 4 bit 4 bit inutile 1 parola

17 Istruzioni di input/output: unità I/O  RAM 012345012345 READ WRITE

18 Formato: in binario! codice-op n. unità indirizzo parola RAM 8 bit 4 bit 20 bit 1 parola READ 00010000 WRITE 00010001 Codici: Unità: STINP 0000 (tastiera) STOUT 0001 (video)

19 Confronto paragona il contenuto di 2 registri R i ed R j e: se R i < R j mette -1 nel registro RC se R i = R j mette 0 in RC se R i > R j mette 1 in RC RiRi RjRj C Cf RC COMP 00100000 FCOMP 00100001 Codici:

20 FORMATO: codice-op reg 1 reg 2 8 bit 4 bit 4 bit inutile 1 parola

21 Salto istruzioni che permettono di saltare ad un’altra istruzione del programma a seconda del contenuto di RC (cioè a seconda del risultato di un confronto) BRLT 01000001 BRNE 01000100 BRLE 01000010 BRGE 01000110 BREQ 01000011 BRGT 01000101 BRANCH 10000000 Anche salto incondizionato!

22 FORMATO: codice-op indirizzo RAM 8 bits inutile 20 bit 1 parola

23 STOP termina il programma STOP 10000001 Codice:

24 FORMATO: codice-op 8 bits inutile 1 parola

25 Ciclo della CPU La CPU esegue un programma memorizzato in RAM copiando ad una ad una le istruzioni nell’unita’ di controllo Ordine: quello in cui sono memorizzato, a meno di istruzioni di salto Registri speciali:  contatore di programma (program counter)  Istruzione (instruction register)

26 Ciclo della CPU Reperimento dell’istruzione (fetch):  lettura della cella di RAM il cui indirizzo e’ contenuto nel contatore di programma  caricamento del registro istruzione con l’istruzione  Incremento del contatore programma Decodifica dell’istruzione:  Trova gli operandi a seconda del codice operativo  Modifica contatore programma se istruzione di salto Esecuzione dell’istruzione:  Attiva i circuiti necessari

27 Ciclo della CPU

28 Esempio Scriviamo un programma macchina che: trasferisce il contenuto di 2 parole di indirizzo 64 e 68 della RAM nei registri R 0 ed R 1 li somma trasferisce la somma nella parola di indirizzo 60 della RAM

29 Codici delle operazioni trasferimento RAM  CPU: 00000000 trasferimento CPU  RAM: 00000001 somma : 00000010

30 38 8 60 64 68 Porta 68 in R1 Somma R0 e R1 Porta 64 in R0 1024 1028 1032 1036 Porta R0 in 60..0100110..01000 111100 1000000 1000100 000000000001..010001 0000001000000001.... 000000000000..010000 10000000000 10000000100 10000001000 10000001100 000000010000..001111

31 Svantaggi del linguaggio macchina: programmi in binario sono difficili da scrivere, capire e cambiare il programmatore deve occuparsi di gestire la RAM: difficile ed inefficiente primo passo  Assembler

32 Novità dell’Assembler codici mnemonici per le operazioni nomi mnemonici (identificatori) al posto degli indirizzi RAM per i dati (e indirizzi RAM delle istruzioni usate nei salti) tipi dei dati INT e FLOAT

33 Codice-op mnemonici: trasferimento: LOAD (RAM  CPU) e STORE (CPU  RAM) aritmetiche: ADD,SUB,DIV,MULT,MOD, FADD,FSUB,FDIV,FMULT input/output: READ (U-INP  CPU), WRITE (CPU  U-OUT) test: COMP, FCOMP salto: BREQ,BRGT,BRLT,BRGE,BRLE, BRANCH terminazione: STOP

34 Stesso esempio del linguaggio macchina Z : INT ; X : INT 38; Y : INT 8; LOAD R0 X; LOAD R1 Y; ADD R0 R1; STORE R0 Z; dichiarazioni degli identificatori dei dati istruzioni assembler

35 Esempio carica due valori dalla RAM, li somma e mette il risultato al posto del maggiore dei 2 numeri sommati (nel caso siano uguali, non importa in quale dei due si mette la somma)

36 X: INT 38; Y: INT 8; LOAD R0 X; LOAD R1 Y; LOAD R2 X; ADD R2 R1; COMP R0 R1; BRGE pippo; STORE R2 Y; STOP; pippo: STORE R2 X; STOP;

37 Flowchart LOAD R0 X; LOAD R1 Y; LOAD R2 X; ADD R2 R1; R0  R1? STORE R2 X; STOP; STORE R2 Y; STOP; SINO test

38 Esempio calcolare il resto della divisione di due numeri usando solo la sottrazione

39 X: int 356; Y: int 23; RESTO: int ; LOAD R0 X; LOAD R1 Y; ciclo: COMP R0 R1; BRLT fine; SUB R0 R1; BRANCH ciclo; fine: STORE R0 RESTO; STOP;

40 LOAD R0 X; LOAD R1 Y; R0<R1? SUB R0 R1; NO STORE R0 RESTO; STOP; ciclo o iterazione SI

41 Esempio potenza Leggere un reale x ed un intero positivo n e calcolare la potenza x n Esempio

42 X: FLOAT ; N: INT ; Ris: FLOAT ; Uno : INT 1; Unofl: FLOAT 1.0; READ STINP X; READ STINP N; LOAD R0 Uno; SUB R0 R0; LOAD R1 Uno; LOAD R2 X; LOAD R3 N; LOAD R4 Unofl; R0 = 0 intero R1 = 1 intero R4 = 1 reale R2 = X reale R3 = N intero

43 Ciclo: COMP R3 R0; BREQ Esci; FMULT R4 R2; SUB R3 R1; BRANCH Ciclo; Esci: STORE R4 Ris; WRITE STOUT Ris; STOP; R0 = 0 intero R1 = 1 intero R4 = 1 realeR2 = X reale R3 = N intero R4 = X N-R3 R4 = X N

44 FMULT R4 R2; SUB R3 R1; NO ciclo o iterazione SI R3 = R0?

45 Domande: quali sono le novità principali dell’Assembler rispetto al linguaggio macchina? in un programma assembler, perchè si attaccano etichette a certe istruzioni?

46 come si chiama in Assembler l’istruzione che trasferisce una parola dalla RAM ad un registro della CPU? E quella che compie il trasferimento inverso? In assembler a cosa servono gli identificatori o variabili?


Scaricare ppt "Architettura di un calcolatore e linguaggio macchina."

Presentazioni simili


Annunci Google