Famiglie di Calcolatori
• Personal Computer
• Desktop
• Protatile (Laptot)
• Workstation
• Server
• Enterprise Server (Mainframe)
• Network Server
• Supercalcolatore
• PC industriale
•Calcolatori per usi specifici (sistemi embedded)
Architetture con più processori
• Multiprocessore
• ci sono fisicamente più processori istallati su una stessa
macchina, tutti condividono una stessa memoria ma
possono anche avere parte di memoria dedicata
• difficoltà nella programmazione
• Cluster / Rete di Calcolatori
• Rete a scambio di messaggi
• le dimensioni possono variare da pochi PC connessi in rete
fino ad arrivare alla rete internet
• parallelismo non ottimizzato
• overhead / bottleneck accentuato dalle comunicazioni
Concetti Operativi di Base
• Esempio di istruzione:
ADD IND
• Esempio di esecuzione (passi base):
1. l'istruzione viene prelevata dalla memoria e mandata al
processore
2. l'addendo contenuto nella parola di memoria collocata
nell'indirizzo IND viene letto, portato all'interno del
processore, addizionato con il registro accumulatore A
tramite la ALU
3. la somma viene scritta in A sostituendola al contenuto
precedente
Collegamenti tra processore e memoria
MBR o MDR
R0 (A)
OPR o IR
Esecuzione di un'istruzione
• Il programma, solitamente acquisito tramite unità di I/O viene
caricato in memoria
• L'esecuzione inizia facendo puntare il PC alla prima istruzione
• Il contenuto del PC viene copiato in MAR e viene attivato il
segnale di controllo che determina la lettura da memoria
• Il contenuto della parola indirizzata viene quindi copiato in
MBR
• Il contenuto del registro MBR viene interpretato e trattandosi
di una istruzione, alcuni bit vengono copiati nel registro OPR
Esecuzione di un'istruzione con ALU
• Se un operando risiede in memoria (potrebbe anche risiedere
già in un registro), si copia l'indirizzo in MAR
• Una volta copiato il contenuto in MBR, lo si manda alla ALU
• I precedenti passi vengono ripetuti per tutti gli operandi
necessari all'istruzione in modo da permettere alla ALU di
eseguire finalmente l'operazione richiesta
• Se il risultato dev'esser scritto in memoria, allora si copia in
MBR e si scrive nel MAR l'indirizzo dove il risuiltato va
memorizzato
• Prima che l'esecuzione termini, il PC è aggiornato
Esecuzione di un'istruzione con I/O
• Se un dispositivo di I/O necessita di un servizio urgente, allora
è previsto il meccanismo delle interruzioni
• Il dispositivo di I/O attiva e manda al processore il segnale di
richiesta di interruzione (interrupt request)
• Il processore sospende l'esecuzione corrente e passa ad
eseguire la relativa routine di servizio di interruzione
• Poiché le interruzioni possono avveniere in qualsiasi momento,
il processore dovrà salvare lo stato corrente per poterlo
ripristinare successivamente (system snapshot)
• Terminata la routine di servizio si ripristina l'esecuzione
precedente
Collegamenti tra Unità, BUS
• Le unità funzionali fondamentali del calcolatore si scambiano
informazioni (istruzioni e dati) mediante un organo di
collegamento: il bus
• Il bus è un fascio di fili che trasportano bit, cioè informazioni
(parole) codificate in forma binaria, come sequenze di bit
• Il calcolatore contiene un bus, e spesso più di uno con funzioni
più o meno specializzate
buffer
buffer
Ruolo del Sistema Operativo
• Normalmente il calcolatore è equipaggiato con un
sistema operativo (SO).
• Il SO è un complesso di programmi che danno al
calcolatore funzionalità minimali:
• caricare e attivare uno o più programmi
• gestire le unità funzionali di memoria e I/O
• permettere l’esecuzione simultanea di due o più
programmi (processi): concorrenza
• permettere la compresenza di più utenti
• garantire affidabilità e sicurezza del calcolatore
Stampa di un dato in Memoria
Efficienza di un Calcolatore
• Per valutare l'efficienza o prestazione di un calcolatore si
considera principalmente la velocità con cui esso è in grado di
eseguire un programma, fattori determinanti sono:
• Struttura dei circuiti componenti
• Articolazione del linguaggio macchina
• Compilatore
• Per aumentare le prestazioni di un calcolatore bisogna quindi
progettare in modo coordinato la struttura del calcolatore,
l'insieme delle istruzioni macchina e il relativo compilatore
Efficienza di un Calcolatore
• con riferimento alla figura precedente, si denota come tempo
di esecuzione (elapsed time), ∆Tesec = t5 – t1
• il tempo di processore, ∆Tproc rappresenta invece il tempo in
cui il processore è attivo, nell'esempio è la somma degli
intervalli di tempo etichettati con "programma", "routine di SO"
• in generale ∆Tproc ≤ ∆Tesec
• la scelta dei dati memorizzati in memoria cache rappresenta
uno dei punti focali nell'aumento prestazionale di un calcolatore
Il Clock
• i circuiti componenti il processore sono controllati dal segnale
di scansione del tempo, il segnale di clock
• il segnale di clock suddivide il tempo in intervalli regolari, cicli
di clock
• ogni istruzione è suddivisa in passi elementari, ognuno
eseguibile in un ciclo di clock
• il periodo di clock, ∆Tclock rappresenta il tempo che intercorre
tra l'inizio di un ciclo di clock ed il successivo, è misurato in
secondi (o meglio in nanosecondi)
• l'inverso fclock = 1 / ∆Tclock e' la frequenza di clock e si misura in
Hertz (Hz), numero di cicli al secondo, 1 Hz = 1 ciclo / s
•kHz (kiloHertz) = 1000 cicli / s
•MHz (MegaHertz) = 1000 kHz
•GHz (GigaHertz) = 1000 MHz
Critical Path
• Come viene stabilita la massima frequenza di clock a cui può
arrivare un processore?
• Cammino critico (critical path): è il percorso più lungo che un
segnale deve attraversare nel tempo di un ciclo di clock.
• se il cammino più lungo richiede 1µs allora la massima
frequenza del processore equivale ad 1MHz
• E' necessario tenersi al di sotto della frequenza massima
teorica poiche' altri fattori che la determinano riguardano
concetti più tecnici quali:
• invecchiamento dei componenti
• deriva termica
• tolleranza dei transistor
Equazione di Prestazione
• Sia Nistr il numero di istruzioni di un programma in esecuzione
• Sia Npassi il numero medio di passi necessari ad eseguire una
generica istruzione macchina, dove ogni passo è eseguito in un
ciclo di clock esatto, allora
ΔTproc =
N istr x N passi
f clock
=
= N istr x N passi x ΔTclock
Pipelining
• Metodologia per la ristrutturazione e riorganizzazione dei
componenti fondamentali di un calcolatore ai fini di
aumentarne le prestazioni
• Un'esempio di metodologia Pipelining si ritrova nelle catene
di montaggio: il processo di fabbricazione
di un bene materiale è suddiviso in una
serie di sottoprocessi ognuno dei quali è
eseguito da uno stadio della catena
• Se la catena è costantemente
alimentata, ciascuno stadio opera su un
singolo sottoprodotto e il tempo di
permanenza è lo stesso per tutti gli stadi
• Tempo per produrre una unità di
prodotto è pari al tempo del singolo
stadio
Pipelining
• Esempio di istruzione:
ADD IND
• si potrebbe caricare l'istruzione successiva prima che il
risultato dell'addizione venga salvato nell'accumulatore A
• in tal modo, durante uno stesso ciclo di clock, vengono
effettuate più operazioni, ciò comporta una diminuzione del
valore Npassi
• in generale Npassi > 1
• si può estendere il discorso dotando il processore di più
pipeline indipendenti
•bisogna fare molta attenzione a preservare la correttezza
logica dell'algoritmo, cioè il risultato finale deve essere
sempre lo stesso che se si eseguisse il programma in modo
puramente sequenziale
Istruzioni CISC e RISC
• RISC (Reduced instruction set computer)
Nistr
Npassi
• CISC (Complex instruction set computer)
Nistr
Npassi
• la migliore scelta dipende molto dalle possibili tecniche di
pipelining attuabili
•Nella realtà i processori attuali utilizzano aspetti di entrambe le
tecnologie RISC e CISC
• Nistr dipende molto anche dal compilatore e da aspetti di
compatibilità
CISC vs RISC
Ruolo del Compilatore
• In generale un compilatore è un traduttore, ovvero un
compilatore è un programma che traduce una serie di istruzioni
scritte in un determinato linguaggio di programmazione (codice
sorgente) in istruzioni di un altro linguaggio (codice oggetto)
• Rispetto ad un semplice traduttore il livello di espressività tra
codice sorgente e codice oggetto solitamente diminuisce
• Un compilatore e' solitamente in grado di evidenziare
eventuali errori. Sicuramente di natura sintattica ma anche
alcuni semantici
• Un buon compilatore non si limita alla semplice traduzione ma
effettua anche ottimizzazione del codice oggetto
COMPILATORE
oggetto
sorgente
errori
Utilizzo della MemoriaCache e
Paginazione
• Caratteristiche desiderabili
• Ampia capacità
• Velocità
• Economicità
Stima dell'Efficienza
• Non esistono grandezze assolute per Nistr e Npassi
• Per valutare l'efficienza di un calcolatore si utilizza il metodo
sperimentale, servendosi di programmi di valutazione, i cosiddetti
benchmark
• l'organizzazione Standard Performance Evaluation Corporation
(SPEC) definisce la composizione della suite di programmi
(http://www.spec.org/benchmarks.html):
ú SPEC95: SUN SPARC station 10/40
ú SPEC2000: UltraSparc II a 296 MHz
ú SPEC CPU 2006 (v 1.2, 2011): “The benchmark has several different ways
to measure computer performance. One way is to measure how fast the
computer completes a single task; this is a speed measurement. Another
way is to measure how many tasks a computer can accomplish in a
certain amount of time; this is called a throughput, capacity or rate
measurement.”
tempo di processore sul calcolatore di riferimento
tempo di processore sul calcolatore da valutare
• la misurazione va ripetuta per tutti i programmi della suite
prestazioni in unità SPEC =
prestazioni in unità SPEC = n
n
Õ SPEC
i =1
i
(media geometrica)