Arch. degli Elaboratori e Laboratorio Introduzione al corso

Arch. degli Elaboratori e Laboratorio
Introduzione al corso
Salvatore Orlando
2000 Salvatore Orlando 1
6FRSLGHOFRUVR
• Il corso, in congiunzione con il Laboratorio, si prefigge di
svelare i seguenti aspetti di un moderno computer:
– l’organizzazione interna e il funzionamento
• discutendo le componenti principali, quali CPU, Memoria, I/O
– concause HW/SW delle prestazioni
• come si misurano le prestazioni
– segreti della programmazione
• scendendo rispetto al livello di astrazione linguaggio ad alto livello
• questo è lo scopo principale del corso di Laboratorio
• Perché bisogna studiare questa materia?
– per poterti poi definire un vero informatico
– perché vuoi costruire del software usabile e veloce
– perché nella tua professione dovrai spesso prendere
decisioni di acquisto HW/SW
2000 Salvatore Orlando 2
,QWURGX]LRQH
• Architettura dei calcolatori: campo in rapidissima
evoluzione:
– valvole -> transistor -> IC -> VLSI
• ogni 1,5 anni osserviamo il raddoppio di:
capacità di memoria
velocità del processore
(dovuto a miglioramenti nella tecnologia e
nell’organizzazione)
• abbattimento dei costi contemporaneo all’incremento di
velocità
– Considerando come base gli anni ‘40, se l’industria dei trasporti
avesse seguito la stessa evoluzione:
US coast-to-coast in 5 sec. per solo mezzo dollaro
2000 Salvatore Orlando 3
,QWURGX]LRQH
• incremento prestazioni e abbattimento costi
– permette di affrontare e risolvere applicazioni sempre
più complesse
• integrazione con la rete
– ancora nuove applicazioni del computer (es. WEB)
• integrazione con la rete telefonica e cellulare
– nuovi hw e applicazioni (palmtop)
2000 Salvatore Orlando 4
&RP¶qIDWWRXQFRPSXWHU"
• Componenti:
– Input/Output (I/O)
- mouse, tastiera (I)
- video, stampante (O)
- dischi (I/O e memoria)
- CD (I e memoria)
- rete (I/O)
– memoria
- DRAM, SRAM
– processore
- parte operativa o
datapath
- parte controllo
Processore
Control
Memoria
Datapath
I/O
2000 Salvatore Orlando 5
&RP¶qIDWWRXQFRPSXWHU"
• Memoria volatile
– usata per memorizzare programmi e dati durante l’esecuzione
(concetto di stored-program introdotto da Von Neumann)
• Processore
– è l’esecutore delle istruzioni appartenenti ad un certo Instruction
Set (IS) ben definito
– ISA costituisce il linguaggio (povero) compreso da un moderno
processore
– le istruzioni sono lette dalla memoria e modificano dati in
memoria o agiscono sull’I/O
– Parte Controllo → mente
Parte Operativa → braccio
• I/O
– serve per comunicare con l’esterno
– dispositivi di memoria secondaria (memoria non volatile) sono
anch’essi comunemente considerati I/O
2000 Salvatore Orlando 6
/LYHOOLGLDVWUD]LRQH
• Uno dei nostri principali scopi sarà capire la struttura del
processore
– implementato usando milioni di transistor
– impossibile da capire guardando ai singoli transistor
– se guardiamo invece all’ISA, scopriamo una macchina
“stupida”, in grado di comprendere (interpretare)
semplici istruzioni (a loro volta, sequenze di bit) come
operazioni elementari (es. somma di due interi)
– abbiamo bisogno di astrarre ….
• STRUTTURAZIONE IN LIVELLI DI ASTRAZIONE
– dell’hardare e del software
2000 Salvatore Orlando 7
/LYHOOLGLDVWUD]LRQH
• I livelli più bassi rivelano più
informazioni
• I livelli più alti astraggono
omettendo dettagli
• L’astrazione ci permette di
affrontare la complessità e i
dettagli
• I livelli più alti virtualizzano,
ovvero offrono una vista
virtuale dei livelli inferiori
• Macchina virtuale: appare più
potente e semplice da
programmare della macchina
nuda
A = B + C
Livello
Linguaggio ad
alto livello
Compilatore
Livello
add $4, $5, $6 Linguaggio
assembler
Assemblatore
00000010010001010011000100100000
Livello
Linguaggio
macchina (ISA)
2000 Salvatore Orlando 8
6WUXWWXUD]LRQHLQOLYHOOL
• Tradizionale vista in livelli dell’architettura hw/sw di un
computer, ovveri dei linguaggi riconosciuti da ogni livello
– interprete o compilatore per tradurre tra linguaggi
• Sistema operativo (livello particolare interpretato):
– possiamo pensare al S.O. come un livello il cui linguaggio è l’ISA
estesa con nuove istruzioni ad alto livello per gestione risorse
(es. I/O). Nuove istruzioni ≡ procedure scritte con linguaggio ISA
Livello 4: Linguaggio ad alto livello
Livello 3: Linguaggio Assembler
Livello 2: Sistema Operativo
Livello 1: Linguaggio Macchina
Livello 0: hardware/firmware
2000 Salvatore Orlando 9
/LYHOORKDUGZDUHILUPZDUH
• hardware: composto da fili e porte logiche (gates)
realizzati tramite transistor (speciali interruttori)
– gates elaborano segnali binari (0/1)
– tramite questi segnali è possibile rappresentare
qualsiasi tipo di informazioni
– interconnettendo gates e fili è possibile realizzare
funzioni complesse (es. moltiplicazioni di interi)
– è anche possibile realizzare elementi di memoria
(utilizzati per dati e programmi)
• firmware: microprogrammi, interpretati dalla parte
controllo del processore per interpretare, a sua volta, le
istruzioni dell’ISA
2000 Salvatore Orlando 10
/LYHOOROLQJXDJJLRPDFFKLQD,6$
• È il livello di macchina nuda che appare al
programmatore di sistema
• Comprende insieme di istruzioni che di solito sono
diverse per ogni processore
– portabilità binaria
• La sintassi è adatta ad essere interpretata dal livello
hw/fw
– stringhe di bit con formato e posizioni ben
determinate per
• i codici che individuano l’operazione che l’istruzione dovrà eseguire
• gli operandi per eseguire l’operazione
2000 Salvatore Orlando 11
/LYHOOROLQJXDJJLRDVVHPEOHU
• Offre al programmatore di sistema una vista più “umana”
del livello macchina
– istruzioni espresse con stringhe di caratteri
mnemoniche invece di stringhe binarie
– traduzione realizzata dall’assemblatore (è uno speciale
compilatore)
• L’assemblatore è stato il primo software di sistema
realizzato per facilitare la programmazione dei calcolatori
• Lo studio dell’assembler sarà oggetto del corso di
laboratorio. In particolare
– studieremo il passaggio tra linguaggio ad alto livello e
il linguaggio assembler
• principali strutture di controllo e strutture dati
2000 Salvatore Orlando 12
/LYHOOROLQJXDJJLRDGDOWROLYHOOR
• C, C++, Modula 3, Java
• Permette al programmazione una maggiore astrazione sui
livelli sottostanti della macchina
• Ha di solito bisogno di un traduttore (compilatore)
• Per alcuni linguaggi esistono interpreti: per esempio Java
• Permette di realizzare la portabilità tra processori con
diversa ISA
– basta che esista il compilatore implementato per la
nuova ISA
– necessario ricompilare
2000 Salvatore Orlando 13
&RPSXWHUWUDGL]LRQDOH
• Video: unità di uscita (O)
• Tastiera/mouse: unità di ingresso (I)
• Scatola: contiene
– alimentatore
– scheda madre
– processore
– memoria volatile (RAM)
– dischi (memoria stabile, I/O)
– dispositivi di I/O per rete (LAN / MODEM)
2000 Salvatore Orlando 14
9LGHR
• CRT (Cathode Ray Tube)
– fascio di elettroni “spennellato” su una matrice di fosfori
– necessario il refresh continuo dello schermo
• pennello passa sullo schermo per righe, una riga alla volta
• frequenza orizzontale (in MHz) e verticale (in Hz)
– Dati caratteristici
• frequenza di refresh (> 70 Hz quella orizzontale per evitare sfarfallii)
• numero di pixel (punti) dello schermo (es.: 1024x768)
• numero di colori contemporaneamente visualizzati
– Frame buffer
• memoria RAM veloce che contiene la rappresentazione binaria dei vari pixel
(ovvero dei colori corrispondenti)
• per visualizzare sullo schermo bisogna scrivere nel frame buffer
• un convertitore digitale/analogico, con la frequenza opportuna, rinfresca in
continuazione i vari pixel dello schermo sulla base dei dati del buffer
• LCD (Liquid Crystal Display)
2000 Salvatore Orlando 15
6FDWROD
• Alimentatore
• Scheda madre, che contiene diversi chip e bus, e alloggiamenti per
•
•
•
•
processore
memoria (SIMM)
schede per gestire video, audio, rete, dischi, ecc. (I/O)
sempre maggiore integrazione (scheda non espandibili)
• Memoria
• DRAM, volative, composta di vari chip (SIMM) di dimensione sempre più
grande
• Processore
• chip che contiene parte controllo+parte operativa con registri
• cache (buffer di memoria veloce)
• Dischi e relativi controller
•
•
•
•
•
piatti ricoperti di materiale magnetico con testina dotata di bobina elettromagnetica
bobina memorizza informazioni digitali (0/1)
Floppy: mylar, lenti, 1,44 MB - 200 MB (Zip)
Hard: veloci, velocità di rotazione alta, diversi GB
RAM (accesso da 5 a 100 nsec) - DISCHI (5-20 msec): 5 ordini di grandezza di differenza
2000 Salvatore Orlando 16
5HDOL]]D]LRQHGHOSURFHVVRUHHGHOODPHPRULD
• I componenti elettronici del computer sono realizzati
– con circuiti integrati (IC):
• fili + transistor realizzati con processo di integrazione larghissimo su
frammento di silicio (VLSI - Milioni di transistor su un singolo frammento)
– Silicio
• presente nella sabbia
• è un semiconduttore
• aggiungendo materiali al silicio attraverso processo chimico, il silicio diventa
– transistor, conduttore, o isolante
– Processo produttivo
• Lingotto di silicio (15/30 cm diam.)
• Wafer sottili ottenuti tagliando il lingotto
• 10/20 processi produttivi tramite pattern e processi chimici ⇒
otteniamo diverse repliche dello stesso circuito rettangolare
• Separiamo i vari circuiti e otteniamo i die
• Collaudiamo i die
• Inseriamo nei package i die funzionanti, collegando ai piedini del package ⇒
otteniamo i chip pronti per la consegna
2000 Salvatore Orlando 17