Architettura di un calcolatore e linguaggio macchina. Primo modulo Tecniche della programmazione

Documenti analoghi
Istruzioni macchina. Dove sono gli operandi? Ciclo della CPU. Elementi di un istruzione macchina. Rappresentazione delle istruzioni

CPU. ALU e Registri della CPU. Elementi della CPU. CPU e programmazione (Parte 1) Central Processing Unit, processore

Linguaggio macchina. 3 tipi di istruzioni macchina. Istruzioni per trasferimento dati. Istruzioni logico/aritmetiche

Parte 3. Linguaggio Macchina e Assembler

Linguaggio macchina. Capitolo 10. Linguaggio macchina. n Insieme delle istruzioni (instruction set) che la CPU può eseguire

informatica di base per le discipline umanistiche

LINGUAGGIO MACCHINA e ASSEMBLER. Una CPU MINIMA Il linguaggio macchina di MINIMA Il linguaggio Assembler per MINIMA

informatica di base per le discipline umanistiche

Si ringraziano il Dott. Enrico Grisan e il Dott. Fabio Aiolli per il materiale didattico fornito

Il CPU UNITA DI CALCOLI (ALU) UNITA DI CONTROLLO (CU) 1

Pag. 1. Informatica Facoltà di Medicina Veterinaria a.a. 2012/13 prof. Stefano Cagnoni. Architettura del calcolatore (parte II)

Memoria centrale (RAM) Registri della CPU. Definizioni. Architettura considerata in CPUSim. Programma in linguaggio macchina

Architettura del. Calcolatori (1) Calcolatori (2) L architettura di Von Neumann. CPU RAM Memoria I/O. secondaria. bus

Fondamenti di Informatica A. A / 1 9

Laboratorio di Calcolatori 1 Corso di Laurea in Fisica A.A. 2006/2007

Introduzione all'architettura dei Calcolatori. Maurizio Palesi

Capitolo 2. Elaborazione dei dati. Mauro Giacomini Pearson Addison-Wesley. All rights reserved

Laboratorio di Informatica Ingegneria Clinica Lezione 2/11/2011. Prof. Raffaele Nicolussi

Fondamenti di Informatica e Programmazione. P ro f. G i a n n i D A n g e l o

Linguaggio Assembly e linguaggio macchina

La macchina di Von Neumann. UNIVERSITÀ DEGLI STUDI DEL SANNIO Benevento DING DIPARTIMENTO DI INGEGNERIA CORSO DI "PROGRAMMAZIONE I"

A.A. 2018/2019. CPU e Linguaggio Macchina FONDAMENTI DI INFORMATICA E PROGRAMMAZIONE. Docente Prof. Raffaele Pizzolante

Architettura dell elaboratore

Architettura dell elaboratore

Richiami sull architettura del processore MIPS a 32 bit

Linguaggio Assembly e linguaggio macchina

Richiami sull architettura del processore MIPS a 32 bit

Linguaggio Assembly e linguaggio macchina

Architettura hardware

CPU a singolo ciclo. Lezione 18. Sommario. Architettura degli Elaboratori e delle Reti

Laboratorio di Architettura degli Elaboratori LabArch 2006 Secondo Quadimestre, a.a Docente: H. Muccini

Il processore - CPU (CENTRAL PROCESSING UNIT)

CPU a singolo ciclo. Lezione 18. Sommario. Architettura degli Elaboratori e delle Reti. Proff. A. Borghese, F. Pedersini

Laboratorio di Informatica Ingegneria Clinica Lezione 7/11/2011. Prof. Raffaele Nicolussi

Architettura del calcolatore (Prima parte)

Informatica. Mario Pavone - Dept. Mathematics & Computer Science - University of Catania. Trasferimento. Ambiente esterno.

memoria PSW R1 R2 CPU Struttura logica dell elaboratore unità di controllo ALU unità di ingresso unità organo coordinatore clock di uscita

PROBLEMI E ALGORITMI

Elementi di informatica

CPUSim. Laboratorio 30/11/2016

Un quadro della situazione. Lezione 15 Il Set di Istruzioni (3) Dove siamo nel corso. Organizzazione della lezione. Cosa abbiamo fatto

Lezione 20. della CPU MIPS. Prof. Federico Pedersini Dipartimento di Informatica Università degli Studi di Milano

Architettura degli Elaboratori

Rappresentazione dell informazione

Tecniche della Programmazione, , Parte1

Architettura e funzionamento del calcolatore

Architettura del Calcolatore

Terza lezione 21 ottobre 2016

Componenti principali. Programma cablato. Architettura di Von Neumann. Programma cablato. Cos e un programma? Componenti e connessioni

Lezione 20. della CPU MIPS. Prof. Federico Pedersini Dipartimento di Informatica Università degli Studi di Milano

Architettura di Von Neumann

Istruzioni e linguaggio macchina

Architettura dei calcolatori e sistemi operativi. Architettura MIPS e set istruzioni Capitolo 2 P&H

Ogni CPU è in grado di eseguire un insieme limitato di istruzioni macchina codificate in binario secondo il seguente schema generale.

Il Ciclo Fetch-Decode-Execute. C Nyssen/Aberdeen College 2003

Componenti principali

Il modello di von Neumann

Architettura di un calcolatore

Architettura del Calcolatore

Programmazione al livello del CPU

Il calcolatore. È un sistema complesso costituito da un numero elevato di componenti. è strutturato in forma gerarchica

Il processore. Istituzionii di Informatica -- Rossano Gaeta

La CPU a singolo ciclo

L architettura del calcolatore (Seconda parte)

Funzionalità di un calcolatore. Il calcolatore: modello architetturale. Lo schema di riferimento. L hardware dei sistemi di elaborazione (prima parte)

La CPU a singolo ciclo

Le istruzioni del linguaggio gg macchina corrispondono ad operazioni elementari di elaborazione operazioni aritmetiche

Informatica B a.a 2005/06 (Meccanici 4 squadra) PhD. Ing. Michele Folgheraiter

Modello di von Neumann

Calcolatore: sottosistemi

Componenti e connessioni. Capitolo 3

Lezione 17 Il Set di Istruzioni (3)

Programmazione A.A Architettura dei Calcolatori. ( Lezione V ) Componenti hardware e loro schema funzionale

Corso di Alfabetizzazione Informatica 2001/2002. La CPU. F. Tortorella Università degli Studi. di Cassino

Architettura del calcolatore (Seconda parte)

Architettura del processore e esecuzione delle istruzioni

Funzionalità di un calcolatore. Il calcolatore: modello architetturale. Lo schema di riferimento. L hardware dei sistemi di elaborazione (prima parte)

ARCHITETTURA DI UN SISTEMA DI ELABORAZIONE

L ARCHITETTURA DEI CALCOLATORI. Il processore La memoria centrale La memoria di massa Le periferiche di I/O

Architettura dell elaboratore

Il Processore. Informatica di Base -- R.Gaeta 27

G L O S S A R I O. Fondamenti di Informatica I - Università degli Studi di Trento Dott. Roberti Pierluigi

Architettura hardware

Architettura di un calcolatore: introduzione. Calcolatore: sottosistemi

Architettura degli Elaboratori

Il linguaggio Assembly. Architettura degli Elaboratori e delle Reti Turno I

Fondamenti di Informatica Laurea in Ingegneria Civile e Ingegneria per l ambiente e il territorio

Architettura. Argomenti. Modello di Von Neumann. Corso di Laurea in Ingegneria Biomedica aa 2003/2004. Ing. Antonio Coronato. Modello di Von Neumann

Architettura generale del calcolatore Hardware (tutto ciò che e tangibile) Software (tutto ciò che non e tangibile)

Architettura di un calcolatore: primi cenni introduttivi. Calcolatore: sottosistemi

Elaborazione dell informazione

Un quadro della situazione. Lezione 15 Il Set di Istruzioni (2) Le operazioni e gli operandi. Dove siamo nel corso. Cosa abbiamo fatto

Progetto CPU a singolo ciclo

Architettura dei calcolatori

Informatica. Mario Pavone - Dept. Mathematics & Computer Science - University of Catania. Trasferimento. Ambiente esterno.

Transcript:

Architettura di un calcolatore e linguaggio macchina Primo modulo Tecniche della programmazione

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

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

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

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

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

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

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

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

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

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

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

Istruzioni di trasferimento: registri RAM ALU R 0 R 1 R 2 LOAD STORE 0 1 2 3 4 5

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

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

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

Istruzioni di input/output: unità I/O RAM WRITE 0 1 2 3 4 5 READ

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

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

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

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!

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

STOP termina il programma Codice: STOP 10000001

FORMATO: codice-op 8 bits inutile 1 parola

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)

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

Ciclo della CPU

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

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

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

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

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

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

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

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)

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;

Flowchart LOAD R0 X; LOAD R1 Y; LOAD R2 X; ADD R2 R1; SI STORE R2 X; STOP; R0 R1? test NO STORE R2 Y; STOP;

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

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;

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

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

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 R2 = X reale R3 = N intero R4 = 1 reale

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

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

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

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?