Sei sulla pagina 1di 31

Sperimentazioni di

Fisica I Mod. A
aka
Introduzione alla Scienza dei
Calcolatori per Astronomi

01 Architettura degli Elaboratori


Perch studiamo Computer Science?
Nel ciclo di lavoro di un Astronomo luso di computer e
di programmi (nonch il loro sviluppo) svolge un ruolo
fondamentale.
Un uso efficace dei computer richiede conoscenza dei
fondamenti di Computer Science.
Computer Science (Scienza dei Calcolatori): disciplina
che studia la progettazione e programmazione dei
calcolatori, la soluzione algoritmica dei problemi, il
processo algoritmico e il trattamento dellinformazione.

3 Ottobre 2016
Computer: un p di storia
Lo sviluppo di macchine per lesecuzione di algoritmi ha
una lunga storia

Abaco: usato dal ~3000 aC per


semplici operazioni aritmetiche per
memorizzare i dati
Con lo sviluppo della meccanica furono
inventate le prime macchine basate su
ingranaggi:
Blaise Pascal (1623-1662)
Gottfried W. Leibniz (1646-1716)

3 Ottobre 2016
Un p di storia (2)
Nellottocento vengono realizzate le prime
macchine in grado di eseguire un programma:
Telai Jacquard (a schede
perforate)
Macchina analitica
(Babbage)
Ada Lovelace, la prima
programmatrice della
storia

3 Ottobre 2016
Un p di storia (3)
Nei primi decenni del 900 sviluppo di macchine
elettromeccaniche e poi elettroniche
Elettromeccaniche (basate su
commutatori, relays, ...)
Model-K (1940) G. Stibniz/Bell Labs
Z3 (1941) K. Zuse, Germania
Mark I (1944) Harvard/IBM
Elettroniche (basate su valvole ioniche)
Atanasoff-Berry Computer (ABC,
1942)
COLOSSUS (1943): utilizzato per
decrittare messaggi nazisti
ENIAC (1946): utilizzato per
progettare bomba H
3 Ottobre 2016
Un p di storia (4)
Dai primi computer degli anni 40 la storia dei
computer andata di pari passo con quella
dellelettronica (miniaturizzazione e digitale).

3 Ottobre 2016
Larchitettura dei computer moderni
Concettualmente, i moderni computer sono
composti da cinque parti principali

Computer

Datapath Input

CPU Memoria
Output

(Tradizionalmente CPU+Datapath vengono indicati come controllo)


3 Ottobre 2016
Opening the box
CPU
Memoria
(principale)

Schede I/O

Output

Memoria
(secondaria)
Input

3 Ottobre 2016
La CPU
CPU = Central Processing Unit (Unit Centrale di
Calcolo)
composta da Arithmetic and Logic Unit (ALU), Control
Unit, registri, cache, I/F verso la memoria e il bus di I/O

RAM IF
ALU

Cache
Registri

Control

I/O
Unit

3 Ottobre 2016
Ciclo Fetch/Decode/Execute
Fetch = Prende
la prossima
istruzione dalla
memoria e
incrementa il
Contatore di
Programma Decode =
Decodifica i bit
nel registro
delle istruzioni

Execute = Esegue le
azioni richieste dalla
istruzione nel registro
delle istruzioni
3 Ottobre 2016
Caratteristiche di una CPU
ISA: Instruction Set Architecture
CISC vs RISC

Complex Instruction Set Computer Reduced Instruction Set Computer

Maggiore densit del codice Minore densit del codice


(minore occupazione di memoria) (maggiore occupazione di memoria)
Solitamente implementato tramite
Complessit spostata verso il
microcodice. Complessit spostata
software
verso lhardware.

Es: Intel x86 Es: PowerPC

Frequenza di clock
valori tipici di clock 1-3 GHz = 1-3 109 cicli/secondo
1 ciclo di clock = 0.3-1 ns
3 Ottobre 2016
La memoria principale (1)
La memoria principale quella direttamente
accessibile dalla CPU
Contiene istruzioni e dati
Fisicamente implementata come un insieme di circuiti
capaci di memorizzare un gran numero di bit
Un bit = binary digit, ovvero un numero pari a 0 o 1
Questo dovuto alle propriet della sottostante
elettronica che pu assumere due stati, ai quali
vengono associati i valori 0 o 1
Inoltre, la memoria comprende dei circuiti che
permettono di leggere o scrivere dei valori, in gruppi
di bit generalmente multipli di otto
Un gruppo di otto bit detto byte
3 Ottobre 2016
La memoria principale (2)
Possiamo visualizzare la memoria come
una successione di celle (dette word).
Ad ogni cella associato (da una
apposita elettronica) un indirizzo.
Ogni cella pu essere indirizzata
individualmente, quindi i dati nella
memoria principale possono essere
processati in un ordine casuale. Per
questo motivo la memoria principale
chiamata RAM (random access
memory).
La RAM solitamente volatile, ovvero
NON mantiene i valori immagazzinati
quando le viene tolta lalimentazione.
3 Ottobre 2016
La memoria principale (3)
Nei computer attuali la memoria principale di tipo
DRAM (Dynamic RAM)
Viene detta dinamica in quanto NON mantiene a lungo i
valori memorizzati, che devono essere continuamente
rinfrescati.
Es. DRAM:

3 Ottobre 2016
La memoria secondaria
una memoria non direttamente accessibile dalla CPU
Caratteristiche:
dimensioni >> RAM (~2 ordini di grandezza = 100x)
tempi di accesso >> RAM (~10 ms contro ~10 ns = 1000x)
costi << RAM (~1/150, 3 /GB vs 4.5 $/GB)
memorizza i dati in modo (quasi) permanente, al contrario della RAM
che volatile
Esempi: hard-disk, dischi a stato solido (SSD), USB stick,
Secure Digital, dischi ottici (CD, DVD),
Contiene dati e programmi, che vengono caricati in RAM
quando necessario

3 Ottobre 2016
Memoria secondaria: Hard Disk
composto da uno o pi piatti rigidi, rotanti, ricoperti di
materiale magnetico.
Una testina di lettura e scrittura, viene posizionata da un
attuatore nella zona (traccia) da leggere/scrivere.
La rotazione del disco permette di raggiungere il settore da
leggere/scrivere.

3 Ottobre 2016
Memoria secondaria: Hard Disk (2)
Memorizzazione fisica dei dati su HD

3 Ottobre 2016
Memoria secondaria: Hard Disk (3)

Tempo tipico per laccesso ai dati:


tempo di seek (ricerca della traccia)
tempo di latenza (attesa che il settore arrivi alla testina)
tempo di trasmissione (dati del settore)

3 Ottobre 2016
Memoria secondaria: Hard Disk (4)
Esempio (da datasheet di disco da 2.5 per notebook):
seek: 11 ms
velocit di rotazione: 7200 rpm (giri al minuto)
velocit di trasferimento: 60 MB/s
dimensione del settore: 512 B

Tempo di lettura di un settore:


t = 11 ms + 60000ms / 7200 + 512B / 6 104 B/ms=
= 11 ms + 4.17 ms + 0.0085(3) ms 15.2 ms

Dominano le latenze (seek e rotazionale), quindi dischi con


minor tempo di seek e/o maggiore velocit rotazionale
forniscono prestazioni migliori.
3 Ottobre 2016
Memoria secondaria: SSD (1)
Recentemente, la memorizzazione di dati su Solid-State Drive
(SSD) divenuta popolare.
In particolare sono popolari drives basati su memoria Flash, che
presenta I seguenti vantaggi:
un supporto NON-volatile: mantiene i dati anche in
mancanza di alimentazione.
un dispositivo elettronico, non elettromeccanico. Non ha
parti in movimento, richiede meno energia rispetto agli HDD
tradizionali. Per lo stesso motivo pi resistente agli urti.
Ha generalmente prestazioni superiori rispetto HDD:
maggiore velocit di scrittura e lettura dei dati.

(Nota: come per gli HDD anche i SSD presentano grandi variazioni di costi e prestazioni a seconda
dei modelli. Esistono prodotti di livello consumer con minori prestazioni e costo, destinati a utenti
individuali ed esistono prodotti di livello enterprise con maggiori prestazioni e costi, destinati, per
lappunto, alle imprese).

3 Ottobre 2016
Memoria secondaria: SSD (2)
Svantaggi:
Complessit dellelettronica di controllo:
Dati vengono letti a pagine (~ settori degli HDD)
Dati devono essere scritti in blocchi
Ogni scrittura richiede una cancellazione dei dati presenti
La cancellazione logora le celle di memoria => wear leveling
le operazioni di scrittura vengono distribuite tra tutti i blocchi disponibili.

Maggior costo per GB rispetto HDD


~7-10x ma in rapida diminuzione
Minore capacit complessiva rispetto HDD:
~1/4 ma in aumento

3 Ottobre 2016
Gerarchia della memoria
Velocit
Costo

~bytes
~ns

GiB
~10ns

TB
~10ms

Capacit

3 Ottobre 2016
Incremento prestazioni: cache
Accedere ad una istruzione o a un dato in RAM richiede
un tempo pari a decine di cicli di clock del processore.
Quindi, se il processore ha bisogno di una istruzione/un
dato in RAM costretto ad aspettare finch non
disponibile.
Per evitare questi tempi di attesa si utilizza una
memoria, detta cache,
Sfrutta il principio di localit:
localit spaziale: se in un certo momento si accede ad una data
locazione di memoria, allora molto probabile che si debba accedere
a locazioni adiacenti;
localit temporale: se in un certo momento si accede ad una data
locazione di memoria, allora molto probabile accedervi ancora dopo
poco tempo.

3 Ottobre 2016
Incremento prestazioni: cache (2)
Quindi, quando la CPU deve accedere alla memoria, non legge la
sola istruzione o il solo dato di cui necessita, ma anche alcune
locazioni adiacenti.
Le istruzioni e i dati letti vengono messi nella cache
Cos facendo, e in base al principio di localit, molto probabile
che la prossima istruzione e il prossimo dato di cui la CPU avr
bisogno si trover nella cache e potr essere letto in un tempo <<
tempo di accesso alla RAM
Le CPU attuali hanno cache separate per istruzioni e dati
Le cache sono divise in livelli: L1, L2, L3
i livelli pi bassi sono pi vicini alla CPU
Dimensioni tipiche delle cache:
L1 ~ 10 KiB
L2 ~ 100 KiB
L3 ~ MiB

3 Ottobre 2016
Incremento prestazioni: pipelining
Lesecuzione delle istruzioni divisa in stadi
Ogni stadio richiede un ciclo di clock
Stadi diversi di istruzioni indipendenti possono essere eseguiti
in parallelo
Es: pipeline a 4 stadi

3 Ottobre 2016
CPU superscalari
Una CPU ad architettura superscalare implementa una forma di
parallelismo detta parallelismo a livello di istruzione (ILP =
Instruction-Level Parallelism)
Esegue pi di una istruzione per ciclo di clock inviandole ad unit
funzionali (es ALU) ridondanti.
Pipeline e super-scalarit sono spesso implementate insieme, ma
sono tecniche distinte di incremento delle prestazioni delle CPU
Es.:
pipeline 5 stadi
2 istruzioni in parallelo

3 Ottobre 2016
Processori multi-core
Un processore multi-core contiene al suo interno due o pi CPU
(dette core) che possono eseguire programmi in modo
indipendente.
Introdotti nei computer general-purpose quando laumento di
frequenza possibile grazie alla miniaturizzazione divent
insostenibile (aumento di consumi di corrente non compensato
dallaumento delle prestazioni).
Entrati stabilmente nel mercato nei primi anni 2000, sono oggi
presenti in tutti i tipi di computer (compresi gli smartphone!).
Tipicamente hanno 2-16 core in multipli di due:
in alcuni casi particolari anche >>, esistono CPU con centinaia di core
Il Sistema Operativo utilizza i core multipli come CPU separate:
parallelismo a livello di applicazioni.
Lefficace utilizzo dei core multipli da parte del software applicativo
richiede luso di tecniche di programmazione parallela (che noi non
affronteremo).
3 Ottobre 2016
Digressione: due principali architetture
Nellarchitettura di von Neumann (la pi diffusa,
utilizzata in PC, server, etc..) la stessa memoria
contiene istruzioni e dati;
Nellarchitettura di Harvard istruzioni e dati sono
immagazzinati in memorie distinte;
Larchitettura di Harvard pura viene utilizzata in
applicazioni particolari, per es nei DSP (Digital Signal
Processor) e nei micro-controller.
Le CPU normali (es. x86 e ARM) con memorie cache
separate per istruzioni e dati implementano una
Architettura di Harvard modificata
Harvard quando dati e istruzioni provengono dalla cache
Von Neumann quando istruzioni e dati vengono prelevati dalla
RAM
3 Ottobre 2016
Digressione: unit di misura dei dati

Usati per Usati per


capacit memorie
disco e (RAM,
trasmission ROM, ...)
e dati

3 Ottobre 2016
Esempio

Disco capacit 1 TB:


1 TB = 1012 bytes = 10004 / 10244 TiB = 0.9095 TiB
1 TB = 931.32 GiB
(la capacit realmente utilizzabile sar leggermente inferiore, in dipendenza
del file system utilizzato)

3 Ottobre 2016
Riassumendo
I computer moderni sono composti da cinque parti
principali: CPU, Datapath, Memoria, Input e Output
Caratteristiche di CPU: ISA e frequenza di clock
Memoria principale: accesso diretto (random), veloce,
limitata capacit
Memoria secondaria: accesso indiretto, pi lento,
maggiore capacit
Gerarchia memoria
Caratteristiche delle CPU pensate per aumentarne le
prestazioni: memoria cache, pipelining, super-scalar
architecture, multi-core

3 Ottobre 2016