Appunti di Calcolatori Elettronici
Indice degli argomenti e dei file
MODELLO DI MACCHINA MULTILIVELLO
Introduzione
Linguaggi, livelli e macchine virtuali
La struttura a livelli delle macchine odierne
Evoluzione delle macchine a più livelli
Hardware, software e firmware
Equivalenza tra hardware e software
L'ORGANIZZAZIONE DEI SISTEMI DI ELABORAZIONE
Introduzione
La CPU
Ciclo di esecuzione delle istruzioni
Insieme delle istruzioni
Organizzazione della CPU
Esecuzione di istruzioni in parallelo
La memoria
I bit
Gli indirizzi di memoria
Proprietà generali della memoria: RAM e ROM
Input e Output
Introduzione
Definizione di prestazione
Misure probabilistiche
Confronto di prestazioni
Esempio numerico
Cenni al pipelining
Principi quantitativi di progettazione dei calcolatori
Rendere veloce il caso più comune
Legge di Amdahl
Esempio numerico
Legge della diminuzione dei guadagni
Corollario della legge di Amdahl
Esempio
Località del riferimento
Il lavoro di un progettista di calcolatori
Requisiti funzionali
Bilancio software e hardware
Ulteriori fattori che influiscono sul progetto
Applicazione concreta: la "gerarchia di memorie"
Esempi numerici
Introduzione
Concetti generali
Le prestazioni della CPU
MIPS (milione di istruzioni al secondo)
MFLOPS (milione di operazioni in virgola mobile al secondo)
Scelta dei programmi per valutare le prestazioni
Come porre in relazione le prestazioni
Tempo totale di esecuzione
Tempo pesato di esecuzione
Tempo di esecuzione normalizzato
Pro e contro della media geometrica
CONCETTI INTRODUTTIVI
I formati delle istruzioni
Criteri generali di progettazione dei formati delle istruzioni
Cenni all'indirizzamento
Indirizzamento immediato
Indirizzamento diretto
Indirizzamento tramite registri
Indirizzamento indiretto
ARCHITETTURE DEGLI INSIEMI DI ISTRUZIONI
Introduzione
Classificazione delle architetture degli insiemi di istruzioni
Esempio: istruzione di somma
Vantaggi e svantaggi delle varie alternative
Collocazione in memoria degli operandi
Classificazione delle macchine a registri generali
Indirizzamento della memoria
Interpretazione degli indirizzi di memoria
Problemi di disallineamento
Dispositivo di allineamento
Modalità di indirizzamento
Frequenze relative di utilizzo delle varie modalità di indirizzamento
Modalità di indirizzamento con spiazzamento
Modalità di indirizzamento immediato
Codifica delle modalità di indirizzamento
Operandi dell'insieme di istruzioni
Istruzioni per il controllo del flusso
L'importanza dello zero nei test di uguaglianza
Ulteriori considerazioni
Tipo e dimensione degli operandi
Linguaggio di descrizione dell'hardware
Introduzione
Descrizione generale dell'architettura DLX
Istruzioni del DLX
Istruzioni di caricamento/memorizzazione
Istruzioni ALU
Controllo di flusso: diramazioni e salti
Istruzioni in virgola mobile
Tabella completa delle istruzioni
Formato delle istruzioni
Confronto del DLX con altre macchine
Introduzione
Richiami sulla macchina di von Neumann
Unità di calcolo del processore
Tipica struttura di un processore: il DLX
Fasi fondamentali dell'esecuzione di una istruzione
Latenza delle istruzioni
IL "CONTROLLO"
Introduzione
Diagramma a stati finiti descrittivo del controllo
Controllo dedicato (nel DLX)
Riduzione dei costi dell'hardware del controllo dedicato
Prestazioni del controllo dedicato
Controllo microprogrammato
Le microistruzioni
Fondamenti della microprogrammazione
Esecuzione di una istruzione
Esempio: microprogramma per la fase di fetch di una istruzione
Riduzione dei costi dell'hardware
Codifica delle linee di controllo
Formati multipli di microistruzioni
Aggiunta di controllo dedicato per la condivisione di microcodice
Riduzione del CPI
Uso di microcodice specializzato
Aggiunta di controllo dedicato
Uso del "parallelismo"
Questione degli accessi incompleti alla memoria
ARCHITETTURA AD ACCUMULATORE
Descrizione dell'architettura
Modalità di indirizzamento e loro implementazione
Istruzioni di salto
Caso particolare: salto da interruzione
LE INTERRUZIONI
Introduzione
Terminologia delle interruzioni
Concetti generali sulle interruzioni
Classificazione degli eventi che determinano interruzioni
Rilevazione delle interruzioni da parte del controllo
Il controllo per il DLX
Parte I (50 pagg.)
Il miglioramento delle prestazioni: latenza e throughput
Introduzione ai pregi del pipelining
Pipelining nel DLX: concetti generali
Limitazione della durata minima del ciclo di clock
Esempio
Scopo degli elementi di memoria tra gli stadi della pipeline
Come far funzionare la pipeline
PROBLEMI DEL PIPELINING
Introduzione: i conflitti e gli stalli
Accelerazione in presenza di pipelining ed eventuali stalli
Conflitti strutturali
Esempio
Conflitti di dati
La tecnica dell'anticipazione
Conseguenze dell'anticipazione sull'hardware
Conflitti su dati in memoria
Ulteriori dettagli sui conflitti in lettura e scrittura dei registri 28
Interallacciamento della pipeline
Semplice soluzione software dei conflitti di dati
Schedulazione della pipeline
Esempio
Rilevazione dei conflitti di dati in pipeline semplici
Conflitti di controllo
Riduzione delle penalizzazioni dovute alle diramazioni nella pipeline
Gestione delle interruzioni
Operazioni per il salvataggio dello stato della macchina
Interruzioni sincrone
Interruzioni multiple nella pipeline del DLX
Parte II (27 pagg.)
Gestione delle operazioni multiciclo
Conflitti in presenza delle istruzioni in virgola mobile
Conflitti per l'accesso ai registri al termine della
pipeline
Conflitti di dati di tipo WAR e WAV
Terminazione fuori ordine
Pipelining avanzato: schedulazione dinamica della pipeline
Concetti fondamentali della schedulazione dinamica
Esecuzione fuori ordine (naturale) delle istruzioni
Tecnica della votazione (scoreboarding)
Pipelining avanzato: sfruttamento del parallelismo a livello delle istruzioni
Considerazioni preliminari sul parallelismo delle istruzioni
Tecnica dello srotolamento dei loop
Versione superscalare del DLX
L'approccio VLIW
Esempio: loop di somma di uno scalare ad un vettore
Limiti e costi dell'approccio VLIW
Considerazioni conclusive sul pipelining
Introduzione: perché i calcolatori vettoriali?
Pregi delle istruzioni vettoriali
Architettura di base dei calcolatori vettoriali: il DLXV
Istruzioni vettoriali del DLXV
Esempio: loop DAXPY
Transitorio di attivazione e frequenza di interazione delle istruzioni vettoriali
Specifiche delle unità funzionali del DLXV
Unità di caricamento/memorizzazione
Gestione dei banchi di memoria in un calcolatore vettoriale
Problematiche realizzative: lunghezza e passo dei vettori
Controllo della dimensione dei vettori
Tecnica della riduzione a blocchi
Passo dei vettori
Prestazioni dei calcolatori vettoriali
Tecniche di compilazione
Efficienza delle tecniche di vettorizzazione
CONCETTI GENERALI
Il principio di località
Gerarchia di memorie
Principi generali di una gerarchia di memorie
Velocità di accesso
Gli indirizzi di memoria
Valutazione delle prestazioni di una gerarchia di memorie
Indicazioni generali
Gerarchia di memorie e CPU
MEMORIE CACHE
Introduzione
Dove può essere messo un blocco in una cache?
Esempio
Come è possibile trovare un blocco nella cache?
Esempio
Bit di validità 12
"Costo" delle etichette
Corrispondenza tra indirizzo generato dalla CPU e cache
Quale blocco deve essere sostituito nei casi in cui un tentativo di accesso fallisce?
Che cosa succede quando si scrive?
Stallo di scrittura per le cache di tipo write through
Fallimento di una operazione di scrittura
Osservazioni ulteriori sulle cache
Prestazioni della cache
Cicli di stallo di memoria
Esempi
Le tre principali cause di fallimenti di accesso alle cache
Possibili scelte per le dimensioni dei blocchi nelle cache
Confronto tra cache di sole istruzioni o di soli dati e cache unificate
Cache a due livelli
Tempo medio di accesso alla memoria
Principali parametri di una cache di secondo livello
LA MEMORIA PRINCIPALE
Introduzione
Misure delle prestazioni della memoria principale
Tempo di latenza della memoria principale
Organizzazioni che migliorano le prestazioni delle memoria principale
Memoria principale più larga
Memoria interleaved
Esempio numerico
Pregi e difetti delle memorie interleaved
LA MEMORIA VIRTUALE
Introduzione
Radici "storiche" della nascita della memoria virtuale
Memoria virtuale e rilocazione dei programmi
Terminologia per la memoria virtuale
Differenze tra memorie cache e memorie virtuali
Paginazione e segmentazione
Dove può essere messo un blocco nella memoria principale?
Come è possibile trovare un blocco quando è nella memoria principale?
Quale blocco deve essere sostituito in caso di fallimento di accesso?
Cosa succede quando si scrive?
Scelta della dimensione di una pagina
Tecniche per una traduzione veloce dell'indirizzo
Combinazione della cache con la memoria virtuale
Meccanismi di protezione
Semplice meccanismo di protezione
Meccanismi di protezione più complessi
Introduzione: l'importanza dell'I/O
L'attività delle CPU
Tipico insieme dei dispositivi di I/O di un calcolatore
I collegamenti della CPU con il mondo esterno
Terminologia sul bus
Parametri chiave per le prestazioni di un microprocessore
Tipi di dispositivi di I/O
Dischi magnetici
Supporti magnetici di basso costo: floppy disk
Memorie ottiche
Collegamento dei dispositivi di I/O alla CPU e alla memoria
Vantaggi e svantaggi dell'uso del bus
Tipi di bus
Transazioni del bus
Dettagli sul funzionamento del bus
Opzioni di progetto di un bus
Arbitraggio del bus
Interfaccia con la CPU
I/O con DMA
I/O con canali dei dati
Interfaccia con il sistema operativo
Il problema dei dati scaduti nelle cache
DMA e memoria virtuale
Cenni alle misure delle prestazioni dell'I/O
DIREZIONI FUTURE
Introduzione
Tassonomia dei calcolatori secondo Flynn
Calcolatori SIMD
Calcolatori MISD
Calcolatori MIMD
Terminologia per le macchine MIMD
Architettura MIMD a scambio di messaggi
Architettura MIMD a memoria condivisa
Problema della coerenza delle cache
Prestazioni e problemi delle macchine MIMD
Processori per applicazioni speciali: DSP
APPUNTI VARI SUI SISTEMI PARALLELI
Limiti della classificazione di Flynn e nuova classificazione
Architetture sincrone
Architetture MIMD
Paradigmi MIMD
Confronto tre architetture seriali, pipelined e parallele
Pipelining
Parallelismi
Valutazione delle prestazioni
Strutture di interconnessione
Banda passante di un sistema di calcolo
Legge di Amdahl applicata ad una macchina con N processori
Legge di Braunl per architetture SIMD
Tempo di comunicazione inter-processor
Legge di Amdahl modificata
STRUTTURE ASTRATTE DI DATI
Introduzione
Lista
Coda, Pila, Doppia Coda
Matrice o Array
Tavola
Grafi
APPUNTI VARI
Argomenti vari (domande d'esame)
Rappresentazione grafica degli stadi di esecuzione di una istruzione
Gestione delle interruzioni
Introduzione
CONCETTI GENERALI SUL LIVELLO DELLA LOGICA DIGITALE
Premessa
I registri
I bus
I multiplexer ed i decodificatori
Le ALU
Gli shifter
I clock
La memoria centrale
Latch in ingresso ed in uscita alle ALU
CENNI ALLA MICROPROGRAMMAZIONE
Introduzione
Il cammino dei dati
Microistruzioni
Formato delle microistruzioni
La memoria di controllo e l'esecuzione di una microistruzione
L'ordine di esecuzione delle microistruzioni
TIPI DI ISTRUZIONI
Introduzione
Istruzioni per il movimento dei dati
Istruzioni per operazioni diadiche
Istruzioni per operazioni monadiche
Confronti e salti condizionati
Istruzioni per la chiamata di procedure
Istruzioni per il controllo dei cicli
CONTROLLO DI FLUSSO DI UN PROGRAMMA
Premessa
Istruzioni per la chiamata di procedure
Le coroutine
I trap
Gli interrupt
Sequenza di operazioni per la gestione di un interrupt
La gestione "trasparente" degli interrupt
Controller di interrupt
LA MEMORIA CACHE
Introduzione
Il principio di localizzazione
Organizzazioni delle memorie cache
Gestione delle scritture in una cache
LA MEMORIA VIRTUALE
Introduzione
La paginazione
Meccanismi di paginazione
La paginazione su richiesta
Politiche per la sostituzione delle pagine
La dimensione delle pagine e la frammentazione