Informatica Lezione 5 Scienze e tecniche psicologiche dello sviluppo e dell'educazione (laurea...

Post on 03-May-2015

218 views 1 download

transcript

Informatica

Lezione 5

Scienze e tecniche psicologiche dello sviluppo e dell'educazione (laurea triennale)

Anno accademico: 2007-2008

Architettura dei computer

• Un computer deve:– elaborare l’informazione

• usando il processore (Central Processing Unit - CPU)

– memorizzare l’informazione• usando la memoria principale (RAM)• usando la memoria secondaria

– fare l’input/output dell’informazione• usando i dispositivi di input/output

I programmi e i dati

• Programmi:– Questa lezione: i programmi dal punto di visto dell’hardware– I programmi: sequenze di istruzioni per l’elaborazione delle

informazione• Definiscono quale debba essere il comportamento del

processore• I computer eseguono deterministicamente istruzioni

• Dati:– Distinzione tra dato e informazione:

• Dato: sequenza di bit, può essere interpretato in più modi diversi

• Informazione: dato + significato del dato

I programmi e i dati

Processore

Stampante Memoria secondaria

Memoria principale

• I programmi e i dati risiedono nella memoria secondaria

I programmi e i dati

Processore

Stampante Memoria secondaria

Memoria principale

• I programmi e i dati risiedono nella memoria secondaria• Per essere eseguiti (i programmi) e usati (i dati) vengono copiati

nella memoria principale

I programmi e i dati

• I programmi e i dati risiedono nella memoria secondaria• Per essere eseguiti (i programmi) e usati (i dati) vengono copiati

nella memoria principale• Il processore è in grado di eseguire le istruzioni di cui sono

composti i programmi

Processore

Stampante Memoria secondaria

Memoria principale

Istruzioni macchina

• Per ogni tipo di processore è associato un insieme di istruzioni, chiamate istruzioni macchina– Ognuna delle quali corrisponde ad un’operazione

elementare– Le operazione più complesse possono essere

realizzate mediante sequenze di operazioni elementari

• Combinando in modo diverso sequenze anche molto lunghe di istruzioni si possono far svolgere al computer molti compiti diversi

Istruzioni macchina

• Tre tipi di istruzioni macchina:– Istruzioni aritmetico-logiche:

• Per esempio, la somma di due numeri, il confronto tra due numeri per stabilire se essi sono uguali

• Bisogna indicare dove si trovano i dati su cui operare

– Istruzioni di trasferimento dati:• Indicano quali dati trasferire e in quale direzione• Per esempio, dalla memoria al CPU o vice versa, dall’esterno

all’interno (input) o vice versa (output)• Anche bisogna indicare dove si trovano i dati su cui operare

– Istruzioni di controllo:• Permettono modificare il flusso di esecuzione delle istruzione

(per esempio, sulla base di eventi esterni o risultati intermedi ottenuti dalle istruzioni precedenti)

Istruzioni macchina

• Tre tipi di istruzioni macchina:– Istruzioni aritmetico-logiche:

• add: addizione• sub: sottrazione• and/or/not: congiunzione/disjunzione/negazione logica• …

A B A and B

0 0 0

0 1 0

1 0 0

1 1 1

A B A or B

0 0 0

0 1 1

1 0 1

1 1 1

A not A

0 1

1 0

Istruzioni macchina

• Tre tipi di istruzioni macchina:– …– Istruzioni di trasferimento dati:

• load: leggere dalla memoria principale• store: scrivere alla memoria principale• …

– Istruzioni di controllo:• if_eq: se una condizione è vero, proseguire in un certo

modo, altrimenti proseguire in un altro modo • goto: saltare a un’istruzione • …

Istruzioni macchina

• Le istruzioni possono avere formati diversi - per esempio:

cosa fare su cosa operareoppure

Codice istruzione Argomento 1 Argomento 2 Argomento 3

Codice istruzione Argomento 1 Argomento 2

Codice istruzione Argomento 1

oppure cosa fare su cosa operare

Istruzioni macchina

• Per esempio:

• ADD R1 R2 R3– Recuperare i valori memorizzati nei registri R2 e

R3 e inserire il risultato della somma dei valori nel registro R1

– Si nota che i valori nei registri possono cambiare da un’esecuzione all’altra (riferimenti indiretti)

(Che cosa un registro? Vedremo…)

Codice istruzione Argomento 1 Argomento 2 Argomento 3

Istruzioni macchina

• Per esempio:

• LOAD 3568 R2– Operazione di lettura dalla memoria: richiede la

lettura del valore contenuto nella cella con indirizzo 3568 e il suo caricamento nel registro R2

(Che cosa un registro? Vedremo…)

Codice istruzione Argomento 1 Argomento 2

Istruzioni macchina

• Per esempio:

• ADD R1 R2– Operazione aritmetica di somma: prevede la

somma del contenuto dei registri R1 e R2 e il caricamento del risultato nel registro R1

(Perché R1 non R2? Non c’è una ragione: la decisione è arbitraria)

Codice istruzione Argomento 1 Argomento 2

Linguaggio macchina

• Il linguaggio in cui si scrivono le istruzione macchina istruzioni prende il nome di linguaggio macchina– Una sequenza di tali istruzioni prende il nome di

programma in linguaggio macchina

• Il ruolo del processore:– Eseguire programmi in linguaggio macchina

• Ogni tipo di processore è in grado di eseguire un numero (molto) limitato di istruzioni macchina– Normalmente circa una centinaia

I programmi e i processori

• Istruzioni visti dal computer:– Il formato dell’oggetto binario (sequenze di bit che

corrisponde alla codifica delle istruzioni di un programma) è l’unico che il computer può interpretare

10001111 10101010 00000011 1100110010101011 11111110 11001111 0000011000000100 00000111 11000101 1011100111111101 01011111 11001111 00101011

ADD R1 R2 R3

I programmi e i processori

• Istruzioni visti dai programmatori:– I programmatori dei computer non

scrivono i programmi direttamente usando le istruzioni macchina

– I programmatori scrivono i programmi in linguaggi di un alto livello di astrazione: i linguaggi di programmazione a alto livello

• Per esempio, Java o C

– Un singolo commando di un linguaggio di programmazione può corrispondere a più istruzione macchina

I programmi e i processori

• Tre forme principali di codifica dei programmi:– Linguaggio binario: i programmi sono codificati in

formato binario– Linguaggio assembler: rappresenta le istruzioni

macchina usando lettere e numeri (per esempio, ADD R1 R2 R3)

– Linguaggi di programmazione di alto livello (per esempio, Java o C):

• Livello di astrazione più alto rispetto a linguaggio assembler o linguaggio binario, usato dai programmatori dei computer

I programmi e i processori

…ADD R1 R2 R3…

totale = num1 + num2;

00101000 1010000000001111 1010101000101000 10100000

compila

assembla

Linguaggio di programmazione

Linguaggio assembler

Linguaggio binario

I programmi e i processori

Linguaggio di programmazione: esempio di un programma (codice scritto in Java)

I programmi e i processori

• Famiglie di processori: Intel, Motorola, Sun, …• Processori della stessa famiglia normalmente possono eseguire

gli stessi programmi scritti in linguaggio macchina (ma non sempre)

• Processi di famiglie diverse normalmente non possono eseguire gli stessi programmi scritti in linguaggio macchina– Le istruzioni che “capiscono” sono diverse

• Attenzione! Stiamo considerando il livello delle istruzioni macchina (non il livello dei linguaggi di programmazione, come Java o C)– La stessa programma scritto in un linguaggio di programmazione di

alto livello può essere eseguito su processi di famiglie diverse (è un vantaggio del uso dei linguaggi di programmazione a alto livello)

Componenti del processore (CPU)

• La CPU non è un unico componente ma è costituita da componenti diversi che svolgono compiti diversi

Unità dicontrollo

Unità aritmeticologica

Program CounterREGISTRI

Registro di Stato

Bus Interno

Registro Istruzioni

Registri Generali 8 o 16…

Registro Indirizzi Memoria

Registro Dati Memoria

Registro di Controllo

Componenti del processore (CPU)

Unità dicontrollo

Unità aritmeticologica

Program CounterREGISTRI

Registro di Stato

Bus Interno

Registro Istruzioni

Registri Generali 8 o 16…

Registro Indirizzi Memoria

Registro Dati Memoria

Registro di Controllo

Unità di controllo

• L’unità di controllo è la parte più importante del processore– Esegue le istruzioni dei programmi– Coordina le attività del processore– Controlla il flusso delle istruzioni tra il

processore e la memoria

Unità di controllo

• Svolge la sua attività in modo ciclico (implementa il ciclo macchina)

• Fetch istruzione (preleva dalla memoria principale la “prossima” istruzione da eseguire)

• Decodifica istruzione• Fetch dati (preleva gli operandi specificati

nell’istruzione)• Esecuzione istruzione• Restituzione risultato

Unità di controllo

• L’esecuzione comporta l’invio di comandi opportuni all’unità relativa– Calcoli Unità aritmetico logica– Lettura/scrittura dati memoria– Acquisizione/stampa dispositivi di I/O

Componenti del processore (CPU)

Unità dicontrollo

Unità aritmeticologica

Program CounterREGISTRI

Registro di Stato

Bus Interno

Registro Istruzioni

Registri Generali 8 o 16…

Registro Indirizzi Memoria

Registro Dati Memoria

Registro di Controllo

Bus

• Bus interno: permette la comunicazione tra i componenti del processore

• Bus esterno: permette la comunicazione tra il processore e gli altri componenti dell’elaboratore

CPU RAM Interfaccia

dati

indirizzi

controllo

Bus

Unità dicontrollo

Unità aritmeticologica

REGISTRIBus Interno

…1000 LOAD 4809 R21001 LOAD 3568 R11002 ADD R1 R21003 STORE R1 35681004 GOTO 1001…3568 25…4809 30… Interfaccia

CPU RAM

Componenti del processore (CPU)

Unità dicontrollo

Unità aritmeticologica

Program CounterREGISTRI

Registro di Stato

Bus Interno

Registro Istruzioni

Registri Generali 8 o 16…

Registro Indirizzi Memoria

Registro Dati Memoria

Registro di Controllo

Registri

• I registri sono delle unità di memoria estremamente veloci

• Sono usate per mantenere le informazioni di necessità immediata per il processore

• Le dimensioni dei registri variano da 16, 32, 64 bit

Registri

• Per esempio: Program Counter– L’indirizzo della “prossima” istruzione da eseguire è

memorizzato nel registro Program Counter• Normalmente le istruzioni di un programma sono memorizzati

in sequenza nella memoria principale• Il Program Counter deve essere aumentato (di 1) ogni ciclo (in

modo tale che corrisponde all’indirizzo della prossima istruzione da eseguire)

• Eccezione: istruzione di controllo (per esempio, “salti” da un’istruzione a un’altra usando goto)

• Per esempio: i Registri Generali– I registri che possono essere utilizzati come memorie

temporanee per svolgere le operazioni matematiche

Componenti del processore (CPU)

Unità dicontrollo

Unità aritmeticologica

Program CounterREGISTRI

Registro di Stato

Bus Interno

Registro Istruzioni

Registri Generali 8 o 16…

Registro Indirizzi Memoria

Registro Dati Memoria

Registro di Controllo

Unità aritmetico logica

• L’Unità aritmetico logica (ALU) si occupa di eseguire le operazioni di tipo aritmetico/logico– Somme, sottrazioni, …, confronti, …

• Preleva gli operandi delle operazioni dai Registri Generali

• Deposita il risultato delle operazioni nei Registri Generali

• Insieme all’unità di controllo collabora al completamento di un ciclo macchina

Clock

• Abbiamo visto che il processore svolga la sua attività in modo ciclico– Ad ogni ciclo corrisponde l’esecuzione di

un’operazione elementare (un’istruzione macchina)

• Il clock fornisce una cadenza temporale per l’esecuzione delle operazioni elementari

• Consideriamo una ipotesi semplificata: ogni battito di clock corrisponde esattamente l’esecuzione di una sola istruzione macchina– Per esempio: il clock che ha circa 66 milione battiti per secondo il

computer può eseguire circa 66 milione operazioni per secondo

• In realtà, questa ipotesi non è sempre vero– L’esecuzione di una istruzione può richiedere più battiti di clock– Oppure nello stesso ciclo di clock si possono eseguire (parti) di

istruzioni diverse– Dipende dal tipo di processore - per esempio:

• Il processore Intel 80286 richiede 20 battiti del clock per calcolare la moltiplicazione di due numeri

• Il processore Intel 80486 può calcolare la moltiplicazione di due numeri usando solo un battito del clock

Clock

• La frequenza del clock si misura in:– MHz (1 MHz corrisponde circa a un milione di istruzioni

elementari/battiti al secondo)– GHz (1 GHz corrisponde circa a un miliardo di istruzioni

elementari/battiti al secondo)

• Per esempio: se acquistate un calcolatore e vi dicono che ha un processore a 3 GHz– Vuol dire che il processore è in grado di eseguire (circa) 3

miliardi di istruzioni al secondo

• Esempi: – Pentium 4 – 3,0 – 3,8 GHz– Athlon 64 FX-SOI – 2,2 – 2,8 GHz– Pentium 4M (Centrino) – 1,6 – 2,4 GHz

Clock