Appunti di Calcolatori Elettronici
Indice degli argomenti e dei file

 

Introduzione - Concetti introduttivi generali (20 pagg.)

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

Capitolo 1 - Principi di progettazione dei calcolatori (16 pagg.)

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

 

Capitolo 2 - Le prestazioni (15  pagg.)

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

Capitolo 3 - Progetto dell'insieme di istruzioni (35  pagg.)

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

Capitolo 4 - Architettura del DLX (13  pagg.)

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

 

Capitolo 5 - Tecniche di realizzazione dei processori (45  pagg.)

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

Capitolo 6 - Il pipelining

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

Capitolo 7 - Processori vettoriali (24  pagg.)

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

Capitolo 8 - Gerarchia di memorie (47  pagg.)

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


Capitolo 9 - Sistemi di I/O (27  pagg.)

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

Capitolo 10 - Parallelismo nei calcolatori (26  pagg.)

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


Appendice 1 - Concetti vari (13  pagg.)

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

 

Appendice 2 - Logica digitale e microprogrammazione (18  pagg.)

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

Appendice 3 - Istruzioni e flusso di controllo (12  pagg.)

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

 

Appendice 4 - Compendio su memoria cache e memoria virtuale (19  pagg.)

 

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


Appendice 5 - Elenco completo istruzioni DLX e DLXV (6  pagg. - formato DOC)

 


Totale: 407 pagine (16 file -  3.08 MB) in formato PDF

 

Autore: Sandro Petrizzelli