1. Cenni di architettura dei calcolatori. Andrea Marongiu Paolo Valente

Documenti analoghi
Lezione 2. Introduzione al linguaggio C/C++ Tipi di dato e numeri interi Variabili e costanti con nome Struttura di un programma

Lezione 2. Introduzione al linguaggio C/C++ Tipi di dato e numeri interi Variabili e costanti con nome Struttura di un programma

Appunti del corso di Informatica 1 (IN110 Fondamenti) 5 Rappresentazione delle informazioni

Architettura hardware

Concetti Introduttivi

Programmazione I Paolo Valente /2017. Lezione 6. Notazione posizionale

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

Architettura degli Elaboratori

Algoritmo: procedimento non ambiguo che in un numero finito di passi risolve un problema (o una classe di problemi)

Linguaggi di Programmazione

INFORMATICA. L informatica comprende:

Mari, Buonanno, Sciuto Informatica e cultura dell informazione McGraw-Hill

Architettura hardware

Appunti Liberi di Tecnologie Informatiche

Architettura dei computer

Architettura dei calcolatori

Introduzione al funzionamento di un calcolatore elettronico

ARCHITETTURA DI UN ELABORATORE! Ispirata al modello della Macchina di Von Neumann (Princeton, Institute for Advanced Study, anni 40).!

Corso di Informatica

Il computer P R O F. L O R E N Z O P A R I S I

Rappresentazione numeri reali

Note sull architettura del calcolatore

Architettura dei calcolatori I parte Introduzione, CPU

Il Modello di von Neumann (2) Prevede 3 entità logiche:

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

Struttura hw del computer

AXO - Architettura dei Calcolatori e Sistema Operativo. organizzazione strutturata dei calcolatori

Architettura degli Elaboratori

Architettura di un elaboratore. Il modello di von Neumann

Struttura di un sistema di elaborazione. SDE: basi. Descrizione dei componenti (2) Descrizione delle componenti

Architettura degli Elaboratori

Rapida Nota sulla Rappresentazione dei Caratteri

LEZIONE 4. Hardware (periferiche) Software (algoritmi)

La memoria principale

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

Calcolo numerico e programmazione Rappresentazione dei numeri

Costanti e Variabili

Programma del corso. Introduzione Rappresentazione delle Informazioni Calcolo proposizionale Architettura del calcolatore Reti di calcolatori

Introduzione al Linguaggio C

Com è fatto un computer (seconda puntata) Appunti per le classi 1 A cura del prof. Ing. Mario Catalano

Architettura dei calcolatori

Aritmetica dei Calcolatori

Sistemi di Elaborazione delle Informazioni

Criteri di caratterizzazione di una memoria

Architettura dei Calcolatori Elettronici

Informatica. Informazione L Informazione è un dato, o un insieme di dati, interpretati in un determinato contesto.

Informatica Generale Andrea Corradini I linguaggi di programmazione

Architettura di un calcolatore

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

Analogico vs. Digitale. LEZIONE II La codifica binaria. Analogico vs digitale. Analogico. Digitale

Informatica giuridica

Informatica A.A. 2006/2007. Università degli Studi di Catania. Giuseppe Nicosia

LA CODIFICA DELL INFORMAZIONE

Abilità Informa/che. capitolo 3. Prof. Fabio Calefato a.a Giurisprudenza

Struttura dell elaboratore elettronico

ALGORITMI: PROPRIETÀ FONDAMENTALI

Informatica e Bioinformatica anno 2013/2014

La codifica. dell informazione

Esame di INFORMATICA Lezione 4

Architettura di Von Neumann

Lecture 2: Prime Istruzioni

Calcolatori Elettronici e Sistemi Operativi

Programma del corso. Elementi di Programmazione. Introduzione agli algoritmi. Rappresentazione delle Informazioni. Architettura del calcolatore

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

Primi passi col linguaggio C

Informatica. Dipartimento di Economia. Ing. Cristiano Gregnanin. 17 ottobre Corso di laurea in Economia

DAGLI ALGORITMI AI LINGUAGGI. Linguaggi di Programmazione

La codifica. dell informazione

Le fasi classiche. Informatica di Base -- R.Gaeta 1

Il modello di Von Neumann

Computer e Programmazione

Programma del corso. Introduzione Rappresentazione delle Informazioni Calcolo proposizionale Architettura del calcolatore Reti di calcolatori

ARCHITETTURA DI UN ELABORATORE

La memoria-gerarchia. Laboratorio di Informatica - Lezione 3 - parte I La memoria - La rappresentazione delle informazioni

Architetture degli Elaboratori I I Compito di Esonero (A) - 14/11/1996

Assembly. Linguaggio di programmazione corrispondente al linguaggio macchina P.H. Cap. 2.1, 2.2 e App. A. Linguaggio assembly (App.

Architettura degli Elaboratori

3. Indicare cosa sta a significare la figura geometrica del rombo in un diagramma a blocchi

Informatica/ Ing. Meccanica/ Prof. Verdicchio/ 13/09/2013/ Foglio delle domande/versione 1

La codifica dei numeri

Lez. 5 I dispositivi di I/O. Prof. Pasquale De Michele Gruppo 2

Linguaggi, Traduttori e le Basi della Programmazione

Informatica! appunti dalle lezioni dal 18/09/2012 al 28/09/2012!!

RIASSUNTO La codifica delle informazioni

Un quadro della situazione. Lezione 6 Aritmetica in virgola mobile (2) e Codifica dei caratteri. Dove siamo nel corso. Organizzazione della lezione

Riprendiamo l esercizio calcolatrice

Architettura di von Neumann

Architettura di von Neumann

Architettura dei calcolatori e Software di sistema

Il computer P R O F. L O R E N Z O P A R I S I

LINGUAGGI DI ALTO LIVELLO

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

I sistemi di numerazione. Informatica - Classe 3ª, Modulo 1

Architettura dei calcolatori. Architettura dei calcolatori. Cos'è un computer?

Hardware, software e periferiche. Facoltà di Lettere e Filosofia anno accademico 2008/2009 secondo semestre

Informatica di Base - 6 c.f.u.

Hardware. Sommario. Architettura dei computer

Lo schema seguente presenta le principali informazioni che devono essere rappresentate mediante codici binari.

Hardware. I parte. Sommario

Transcript:

1. Cenni di architettura dei calcolatori Andrea Marongiu (andrea.marongiu@unimore.it) Paolo Valente

Schema di un calcolatore Partiamo dal disegnare uno schema semplificato dell architettura di un calcolatore Considereremo solo CPU Memoria (gerarchia) Dispositivi di input/output (I/O) CPU registers DRAM (memoria) I/O (periferiche) tastiera mouse monitor printer

Motherboard I vari blocchi di un calcolatore sono fisicamente interconnessi tramite la scheda madre

Processore Central Processing Unit (CPU) Tutte le operazioni di elaborazione delle informazioni effettuate da un calcolatore sono svolte direttamente dal processore, oppure svolte da altri componenti dietro comando del processore

Operazioni (1/2) Un processore è in grado di compiere solo operazioni molto semplici: lettura/scrittura/copia di una o più celle di memoria somma/sottrazione/moltiplicazione/divisione del contenuto di una o più celle di memoria lettura/scrittura in zone di memoria 'speciali' per pilotare dispositivi di ingresso/uscita (ad esempio schede video) altre semplici operazioni sulle celle di memoria

Operazioni (2/2) Tipicamente un processore riesce a lavorare su un certo numero di celle contigue alla volta. Tale sequenza di celle è detta parola di macchina (machine word) Si dice che un processore ha una architettura a 16, 32 oppure 64 bit se lavora su parole da 2, 4 oppure 8 byte

Linguaggio macchina Ogni processore è caratterizzato da un proprio insieme di istruzioni, tramite le quali è possibile fargli svolgere le precedenti operazioni L'insieme delle istruzioni di un processore viene chiamato linguaggio macchina di quel processore Ogni istruzione è identificata da una certa configurazione di bit

Instruction Set Architecture (ISA) Da Wikipedia In informatica ed elettronica un instruction set, o Instruction Set Architecture (ISA), (in lingua italiana insieme d'istruzioni) descrive quegli aspetti dell'architettura di un calcolatore che sono visibili al programmatore. Si tratta di fatto dell'insieme di istruzioni base che il processore può compiere e che costituiscono dunque il suo linguaggio macchina, a partire dal quale vengono scritti i relativi programmi nei vari linguaggi di programmazione a più alto livello di astrazione.

Esempio programma Codice binario: la rappresentazione del programma compresa dalla CPU 0011001000110110 0101010100100011 0011011001010101 1110001111100011... 1001101011100011 ISA: Mnemonici comprensibili per l uomo

Astrazione (1/4) In definitiva, data la semplicità delle istruzioni e dei dati su cui lavora un processore si ha che: scrivere (interamente) in linguaggio macchina un programma che faccia cose complesse Es. un sistema operativo o anche più semplicemente un programma che deve disegnare/aggiornare un'interfaccia grafica ed usarla per interagire con gli utenti diviene un lavoro estremamente impegnativo e costoso

Astrazione (2/4) Questo è fondamentalmente il motivo per cui sono stati inventati moltissimi altri linguaggi cosiddetti ad alto livello, che sono molto più 'vicini' al linguaggio umano rispetto al linguaggio macchina Tali linguaggi si basano sul concetto di astrazione dalla macchina sottostante: astraggono dai dettagli, cosiddetti di basso livello Ad esempio, non serve conoscere l ISA del processore usato per programmarlo, bastano delle istruzioni più vicine al modo di ragionare umano.

Astrazione (3/4) In generale, dato un problema da risolvere, disporre di dati ed operazioni più astratti e complessi permette di descrivere in modo molto più semplice e chiaro gli elementi del problema ed i passi che si debbono effettuare

Livello di astrazione crescente Astrazione (4/4) Linguaggio macchina Java

Linguaggi di programmazione Il C/C++ è quindi un linguaggio di alto livello Il fatto di non coincidere con il linguaggio macchina di nessun processore ha però un prezzo Per poter essere eseguito da un calcolatore, un programma scritto in C/C++ va prima tradotto nel linguaggio macchina del processore del calcolatore su cui lo vogliamo eseguire Questa operazione viene comunemente chiamata compilazione, ed i programmi che la eseguono vengono chiamati compilatori

Programma Per far eseguire un programma ad un processore, basta memorizzare da qualche parte nella memoria la sequenza di configurazioni di bit relativa alle istruzioni da eseguire dire al processore a che indirizzo si trova la prima di tali istruzioni Il processore eseguirà, una dopo l'altra, le istruzioni che trova a partire da tale indirizzo

Ordine di esecuzione (1/2) Ordine di esecuzione predefinito delle istruzioni: l'una dopo l'altra 0011001000110110 0101010100100011 0011011001010101 1110001111100011... 1001101011100011

Ordine di esecuzione (2/2) L'ordine con cui sono eseguite le istruzioni cambia solo se vengono incontrate speciali istruzioni di salto verso un diverso indirizzo 0011001000110110 0101010100100011 0011011001010101 1110001111100011... 1001101011100011 Cambio di ordine dovuto ad una istruzione di salto in avanti Un salto può anche avvenire all'indietro, ossia verso un indirizzo inferiore rispetto a quello in cui si trova l'istruzione di salto stessa

Memoria principale Definiamo memoria (principale) di un elaboratore il contenitore in cui sono memorizzati tutti i dati su cui lavora il processore

Memoria principale e celle Possiamo schematizzare la memoria come una sequenza contigua di celle (chiamate anche locazioni di memoria) Ciascuna cella fornisce l'unità minima di memorizzazione, ossia l'elemento più piccolo in cui si può memorizzare un'informazione

Contenuto cella Ogni cella contiene un byte, ossia una sequenza di bit (cifre binarie) Tipicamente un byte è costituito da 8 bit Esempio: 01100101 Tutte le celle hanno quindi la stessa dimensione in termini di numero di bit

Schema memoria Memoria calcolatore Prima cella Ciascuna cella è univocamente individuata mediante un numero naturale, chiamato indirizzo della cella Ultima cella

Celle di memoria e numeri I bit contenuti in una cella possono essere utilizzati per memorizzare un numero Il numero è rappresentato nella cosiddetta notazione binaria https://it.wikipedia.org/wiki/sistema_numerico_binario Senza entrare nei dettagli della notazione binaria, facciamo alcuni esempi di come si ottiene questo risultato

Notazione binaria (1/4) Sistema numerico posizionale in base 2 Solo due simboli, 0 e 1, invece delle dieci cifre utilizzate dal sistema numerico decimale Quanti numeri si possono rappresentare con 1byte?

Notazione binaria (2/4) Quali numeri? Es. interi positivi Facciamo corrispondere un numero ad ogni combinazione (configurazione) di bit 00000000 0 00000001 1 00000010 2 00000011 3... 11111111 255 Con 8 bit si possono rappresentare i numeri nell intervallo 0.. 255

Notazione binaria (3/4) Con una tecnica simile si possono rappresentare anche numeri negativi facendo corrispondere un certo sottoinsieme delle possibili configurazioni di bit ai numeri positivi, e l'altro sottoinsieme ai numeri negativi Idea più semplice Utilizzare un bit per il segno

Notazione binaria (4/4) 7 6 5 4 3 2 1 0 Bit 7: SEGNO Bit 6 0: VALORE Con un bit dedicato al segno si possono rappresentare i numeri nell intervallo 127.. 127

Astrazione (cont.) Un altro tipico esempio di astrazione realizzato dai linguaggi di programmazione sono i tipi di dato si astrae dalle singole celle di memoria: non si vedono più le singole celle di memoria in cui sono memorizzati i numeri si può quindi ragionare e scrivere il programma direttamente in termini di numeri di un dato tipo si lavora ad alto livello, senza preoccuparsi di come e dove saranno realmente memorizzati e manipolati tali numeri a basso livello

Tipi di dato (1/5) Ogni linguaggio di programmazione definisce diversi tipi di dato, i quali usano un diverso numero di bit, adatto per operazioni specifiche Es., C/C++ char: caratteri ASCII, 8 bit int: numeri interi, 32 bit float: numeri frazionari a virgola mobile, 32bit double: numeri frazionari a virgola mobile, doppia precisione, 64 bit

Tipi di dato (3/5) int variabile = 5; Ci preoccupiamo di come memorizzare i valori in una sequenza di celle? Ci preoccupiamo di dove memorizzare esattamente in memoria tale sequenza di celle? No, usiamo il tipo int nel suo significato astratto di contenitore di numeri interi

Tipi di dato (4/5) DOMANDA E possibile memorizzare il contenuto di una variabile di tipo int all interno di una singola cella di memoria? RISPOSTA Se il valore è più grande di 255 allora certamente no!

Tipi di dato (4/5) L astrazione dei tipi di dato gestisce per noi in maniera trasparente l interpretazione del contenuto di più celle di memoria contigue come un singolo dato Cioè, per rappresentare numeri più grandi di quelli rappresentabili con una sola cella, si accorpano più celle consecutive Es., tutte le configurazioni possibili di bit di una sequenza di due o quattro celle contigue

Tipi di dato (5/5) Una variabile di tipo int è tipicamente rappresentata su 4 celle (byte) consecutive 00000001 16777216 33554431 11111111 4278190080 4294967295 00000001 65536 131071 11111111 16711680 16777215 00000001 256 511 00000010 512 767 00000011 768 1023 00000100 1024 1279 00000101 1280 1535 11111111 65280 65535 00000000 0 00000001 1 00000010 2 00000011 3 00000100 4 11111111 255 Cella (byte) 3 Cella (byte) 2 Col tipo int si possono esprimere 2 4294967296 numeri Cella (byte) 1 Cella (byte) 0

Gerarchia di memoria (1/4) La memoria principale è grande abbastanza da contenere svariati programmi, ma ha due limitazioni: 1. È lenta Considerando le attuali tecnologie per lo sviluppo di memorie esiste un compromesso tra la loro dimensione e la loro velocità 2. È volatile È capace di conservare l informazione solo finché il computer rimane acceso

Gerarchia di memoria (2/4) Per ovviare alla lentezza della memoria principale si costruiscono delle gerarchie Le tecnologie più veloci sono le più costose, quindi ci si può permettere solo piccole memorie veloci molto piccola molto veloce DIMENSIONE VELOCITÀ molto grande Memoria principale (DRAM) molto lenta

Gerarchia di memoria (3/4) La memoria più veloce è usata per realizzare i registri dentro la CPU..ma è piccolissima, occorre aggiornarne in continuazione il contenuto molto piccola CPU registers molto veloce DIMENSIONE VELOCITÀ molto grande Memoria principale (DRAM) molto lenta

Gerarchia di memoria (4/4) Tra i registri e la memoria principale ci sono diversi livelli di CACHE una memoria gestita trasparentemente dal sistema Porta vicino ai registri i dati necessari Nasconde l alta latenza della memoria principale molto piccola CPU registers molto veloce DIMENSIONE L1 cache L2 cache L3 cache VELOCITÀ molto grande Memoria principale (DRAM) molto lenta

Memorie di massa (1/5) Come gestire il problema della volatilità della memoria principale? Per memorizzare le informazioni in modo permanente si usano dispositivi di memorizzazione di massa

Memorie di massa (2/5) L esempio più rappresentativo è il disco fisso, o hard disk https://www.youtube.com/watch?v=3owqvmmf6no&feature=related

Memorie di massa (3/5) Oltre ad essere non-volatili, le memorie di massa hanno una dimensione molto maggiore rispetto alla memoria principale (DRAM) Ma quanto sono veloci? (o lente)? Di fatto, le memorie di massa costituiscono parte della gerarchia di memoria, conservando il compromesso velocità/dimensione

Memorie di massa (4/5) Gerarchia di memoria completa di un calcolatore

Memorie di massa (5/5) CURIOSITÀ L evoluzione dei sistemi di storage: dalle schede forate al cloud