ARCHITETTURA DEGLI ELABORATORI
(obiettivi)
Obiettivi generali: L’obiettivo dell'insegnamento di Architettura degli elaboratori è di far comprendere i principi che sono usati per progettare i calcolatori moderni. In particolare, il corso tratta la struttura interna del microprocessore e le idee che hanno permesso la straordinaria evoluzione della potenza di calcolo negli ultimi 30 anni. come pipelining, caching, branch prediction, e multi-processing.
Obiettivi specifici: Il corso tratta i principi di base di organizzazione del microprocessore e le nozioni di pipelining, caching, branch prediction, virtualizzazione e multi-processing. Inoltre, il corso tratta la programmazione assembly.
Conoscenza e comprensione: Lo studente acquisirà conoscenza sull’organizzazione del microprocessore MIPS, come implementazione delle idee generali che fanno parte degli obbiettivi del corso. Inoltre, lo studente acquisirà conoscenza su come si strutturano i programmi in assembly, incluse le strutture dati, i paradigmi standard di programmazione e la ricorsione.
Applicazione di conoscenza e comprensione: Le conoscenze sono applicate sulla architettura MIPS, comprese in modo tale da poter capire le implicazioni delle scelte di programmazione sulla performance dei programmi su hardware specifico. Questa risultato è ottenuto tramite esercizi di programmazione e di valutazione delle prestazioni.
Autonomia di giudizio: Lo studente sarà in grado di comprendere le problematiche relative alle prestazioni del software su hardware specifico e di valutarne autonomamente le caratteristiche.
Abilità comunicative: Il corso non si propone espliciti obiettivi sulle capacità comunicative, eccetto di formare all'esposizione rigorosa degli argomenti tecnici.
Capacità di apprendimento successivo: Il corso pone le basi per la comprensione dei moduli dell'insegnamento di Sistemi operativi e di tutti i corsi di programmazione, inclusa la programmazione di sistemi paralleli.
|
Codice
|
1015881 |
Lingua
|
ITA |
Tipo di attestato
|
Attestato di profitto |
Crediti
|
6
|
Settore scientifico disciplinare
|
INF/01
|
Ore Aula
|
36
|
Ore Esercitazioni
|
24
|
Ore Studio
|
-
|
Attività formativa
|
Attività formative di base
|
Canale: 1
Docente
|
Liberati Franco
(programma)
Parte I: Introduzione Nozioni Storiche e fondamenti di Teoria dell'Informazione; Informazione digitale; Numeri interi: rappresentazioni e operazioni; Numeri in virgola mobile rappresentazione e operazioni (standard IEEE754)
Parte II: Concetti di base Porte logiche; Reti combinatorie e principali circuiti: decodificatore e codificatore, addizionatore, comparatore logico ed aritmetico; Reti sequenziali e principali circuiti: contatore, registro a scorrimento, registro di memorizzazione; Strutture di interconnessione (punto a punto, multiplexer, demultiplexer, mesh, buffer a 3 stati, bus)
Parte III: Macchina di Von Neumann CU: significato, componenti principali (registri ad uso speciale e generale, transcodificatore) e funzionamento; ALU: significato, componenti principali (accumulatori) e funzionamento (operazioni principali e condition code), coprocessore matematico; Memoria: componenti principali, organizzazione fisica e logica, funzionamento. Organizzazione logica dei dati big-little endian; I/O (interfaccia e protocollo e relativi schemi); Struttura di Interconnessione (bus, centralizzato o decentralizzato)
Parte IV: Dal codice sorgente all'eseguibile Compilatore; Assemblatore; Linker; Loader
Parte V: Architettura Funzionale Definizione di un set di istruzioni; Formato dell'istruzione; Classe di istruzioni
Parte VI: Modi di indirizzamento Modo di indirizzamento: immediato, assoluto, a registro, con spiazzamento, relativo; varianti indirette, pre-post incremento
Parte VII: Aumento delle prestazioni: Interruzioni Classificazione (interne, esterne e software); Polling; Interruzioni vettorizzate (tabella delle interruzioni); Gestioni delle interruzioni nel MIPS
Parte VIII: Pipeline - Canalizzazione Canalizzazione: fasi, prestazioni, data e control hazard, forwarding, gestione degli stalli e mitigazione degli hazard - Canalizzazione nel MIPS: circuiteria di base; data hazard e control hazard; salto incondizionato anticipato, salto condizionato predetto e delay slot; Pipeline CISC e RISC (differenze).
Parte IX: Cache Completamente associativa; Associativa a insieme e n-vie; Ad associazione diretta; Blocchi: spostamento, piazzamento ricerca, sostituzione; Strategia di scrittura; Performance e miglioramenti
Parte X: Memoria Virtuale Processo; Paginazione; Memoria Virtuale; Architettura e politiche di rimpiazzo delle pagine
Parte XI: DMA Accesso diretto alle memoria: struttura e protocollo; Un caso reale il DMA del MOTOROLA MCF5307
Parte XII: Microprogrammazione Struttura fisica (MicroMacchina); Struttura logica (Microprogramma, microistruzioni, microperazioni; Differenze CISC e RISC
Parte XIII: Multiprocessori e MultiCore Multithreading; Architetture con multiprocessori a memoria condivisa (UMA, NUMA, COMA); Architetture con multiprocessori a memoria distribuita (NORMA, MPP, Cluster of workstation); Processori vettoriali
Parte XIV: Unità periferiche ed il problema della digital preservation Disco Magnetico; Nastro Magnetico; Dischi ottici; SSD
Linguaggio assemblativo MIPS Architettura MIPS; Programmazione con emulatore MARS; Set istruzioni; Modi di indirizzamento; Strutture dati statiche (vettore, stringa, matrice) e dinamiche (lista); Cicli; Salto a Subroutine; Subroutine ricorsive; Stack; Syscall (gestione file e formato BMP);
D. A. Patterson & J. L. Hennessy, 2014. Struttura e progetto dei calcolatori IV edizione. A cura di M. Borghese. Zanichelli. ISBN: 978-8808352026
Ulteriori testi, articoli scientifici consigliati e appunti delle lezioni: http://arch2.000webhostapp.com/
|
Date di inizio e termine delle attività didattiche
|
- |
Date degli appelli
|
Date degli appelli d'esame
|
Modalità di erogazione
|
Tradizionale
A distanza
|
Modalità di frequenza
|
Non obbligatoria
|
Metodi di valutazione
|
Prova scritta
Prova orale
|
Canale: 2
Docente
|
PANNONE DANIELE
(programma)
# Programma di Massima
Parte I Introduzione al calcolatore e alle istruzioni MIPS. Rapresentazione delle istruzioni nel calcolatore in assembly MIPS, utilizzo della memoria per salvare variabili e dati. Utilizzo degli operatori logici. Strutture di controllo, vettori e matrici. Chiamate di sistema e funzioni. Gestione dello stack. Chiamata di funzioni annidate e ricorsione singola/multipla.
Parte II Progettazione della CPU MIPS a singolo ciclo di clock. Progettazione delle istruzioni assembly MIPS per architettura a singolo ciclo di clock. Introduzione alla pipeline e agli hazard. Progettazione della CPU con Pipeline e gestione dei data e control hazard.
Parte III Introduzione alla memoria cache. Associatività e multilivello. Cache multilivello e memoria virtuale. Caches multiple e gestione delle eccezioni.
# Programma Dettagliato
[S&PdC] si riferisce al libro di testo “Struttura e progetto dei calcolatori”
3 ore Introduzione al corso [S&PdC, Capitolo 1] - Presentazione corso, Intro docente. Promesse del corso. Obiettivi e Programma. - Quattro chiacchiere sui calcolatori, la loro storia, e su un futuro prossimo. - Concetto di Astrazione e Gerarchia. - Linguaggio Alto livello, Compilatore, Assemblatore. Linguaggio Macchina. - Alcune leggi non ovvie sulla costruzione dei calcolatori. - Architettura di Von Neumann: programma memorizzato. Cenni alla IAS machine
2 ore Le istruzioni della CPU MIPS - parte 1 [S&PdC, Sezioni 2.3, 2.5-2.6] - Ripasso del sistema di codifica numerica posizionale - Approfondimento sull’architettura IAS - Introduzione alle istruzioni MIPS
3 ore Le istruzioni della CPU MIPS - parte 2 [S&PdC, Sezioni 2.7, 2.10 ] - Le istruzioni della architettura MIPS - Il Processore MIPS e i co-processori - I vari modi di indirizzare la memoria - Organizzazione della Memoria - Istruzioni Logiche - Cenni alle Istruzioni per prendere decisioni - Breve preview di MARS
2 ore Le istruzioni della CPU MIPS - parte 3 [S&PdC, Sezioni 2.7, 2.9, 2.10] - Istruzioni per prendere decisioni (implementare if-then-else, while, for loop) - Le pseudo istruzioni (registro $zero,$at) - Esercitazione sul Simulatore MARS
3 ore Le istruzioni della CPU MIPS - parte 4 [S&PdC, Sezioni 2.9, 2.10, 2.14] - Soluzione esercizio Due Somme con for loop e registro che punta agli indici pari - Recap Istruzioni per prendere decisioni (do while, switch case statment) - Direttiva globl - Vettori (scorrimento con indice e con puntatori, i.e. accesso diretto in memoria) - Matrici 2D e Matrici N-Dimensionali (caso matrice 3D)
2 ore Le istruzioni della CPU MIPS - parte 5 [S&PdC, Sezioni 2.9, 2.10, 2.14] - Recap Vettori, Matrici 2D e Matrici 3D - Indicizzazione dei suddetti - Pezzi di listato assembly che mostrano come navigare la diagonale di una matrice quadrata caricata nel data segment: in maniera inefficiente (complessità quadratica) in maniera efficiente (complessità lineare) - System calls (come interagire con utente, stampare a video, leggere valori da tastiera) - Programma ASM (assembly MIPS) che implementa lettura di valori da tastiera da utente e in seguito utente decide se fare somma o prodotto in base ad input 0/1; il risultato è mostrato a video
3 ore Le istruzioni della CPU MIPS - parte 6 [S&PdC, Sezioni 2.9, 2.10, 2.14] -Esercitazione su lettura di immagine raw binaria scala di grigi 3x3, 10x10 pixels; conteggio dei pixel bianchi di un’immagine - Come ottenere indirizzamente 32 bit su MIPS se al massimo jump codifica su 26 bit? lui + ori - Chiarimenti su salti assoluti con jump e salti relativi al PC (branch) - Ripasso procedure con jal and jr $ra - Funzioni nidificate e introduzione allo stack (LIFO) - Stack Pointer $sp e cenni al Frame Pointer $fp
2 ore Le istruzioni della CPU MIPS - parte 7 [S&PdC, Sezioni 2.9, 2.10, 2.14] - Record di attivazione di una funzione (Frame Pointer $fp) - Chiamate a funzioni annidate e uso dello stack - Introduzione alla ricorsione in assembly - Calcolo del fattoriale in assembly con approccio ricorsivo
3 ore Le istruzioni della CPU MIPS - parte 8 [S&PdC, Sezioni 2.9, 2.10, 2.14] - Breve recap sui salti incondizionati (j,jal e jr) - Breve recap dello stack - Analisi in dettaglio il calcolo ricorsivo in assembly del fattoriale
2 ore Le istruzioni della CPU MIPS - parte 9 [S&PdC, Sezioni 2.9, 2.10, 2.14] - Implementazione dettagliata doppia ricorsione per il calcolo del numero di Fibonacci.
3 ore CPU a Singolo ciclo di clock [S&PdC, Sezioni 4.1 - 4.2] - Breve test sui casi non di base di Fibonacci - Introduzione all’ architettura a singolo colpo di clock.
2 ore Progettazione della CPU a singolo ciclo di clock [S&PdC, Sezioni 4.1- 4.4] - Progettare la CPU MIPS - Ripasso campi istruzioni R, I e J - Control Unit, Data Path e ALU - Fasi di esecuzione di una istruzione - Unità funzionali: adder, AUL, memoria istruzioni, memoria dati, PC, MUX, register file - Progettazione della CPU a singolo ciclo di clock per istruzioni tipo R e tipo I (add,sub, lw, sw, beq).
3 ore Progettazione della CPU a singolo ciclo di clock, CU, istruzione Jump [S&PdC, Sezioni 4.1- 4.4] - Proprietà dell’encoding ASCII - Progettazione CPU a singlo ciclo di clock - Attivazione della circuiteria per Istruzione di tipo R - Per Istruzioni di tipo I, lettura/scrittura in memoria (lw,sw) - Per salto condizionato tramite istruzione beq (branch if equal) - Datapath CPU Completo - Control Unit (CU) e Tabella di verità con logica di controllo a cascata (AluOp, e campo funct) - Segnali di controllo della CU - Esercizio per aggiungere l’istruzione J (Jump di salto assoluto)
2 ore Progettazione della CPU a singolo ciclo di clock [S&PdC, Sezioni 4.1- 4.4] - Ripasso progetto CPU MIPS (Istruzione Set Less than e altro) - Aggiunta Istruzione J - Aggiunta Istruzione Jump and Link (JAL) - Aggiunta Isutrzione Jump to Register (JR) - Esercizio su Jump Relative to Register
3 ore Progettazione della CPU a singolo ciclo di clock, Esercizi e Malfunzionamento CU [S&PdC, Sezioni 4.1- 4.4] - Soluzione esercizio su Jump Relative to Register (jrr) - Svolto esercizio su Jumpt to Register and Link (jral) - Malfunzionamento CU. Cosa accade e come si puo’ rilevare con un piccolo programma ASM. - caso del segnale RegWrite ⇐ Branch (Branch sovrascrive RegWrite) - MemWrite ⇐ not(RegWrite) , MemWrite prende il valore negato di RegWrite - Esercizio per casa di vectorized jump (vj)
2 ore Introduzione alla Pipeline [S&PdC, Sezione 4.5] - Introduzione al pipelining in architetture MIPS - Definizione di hazard strutturali, sui dati e sul controllo
3 ore Progettazione della CPU a singolo ciclo di clock: altri esercizi [S&PdC, Sezioni 4.1 – 4.4] - Identificazione di malfunzionamenti della Control Unit tramite script in assembly: il caso del segnale MemWrite dal complemento di RegWrite; il caso del segnale Jump dal complemento di MemRead - Il comando vj
2 ore Progettazione della CPU: pipeline e gestione dei data hazard [S&PdC, Sezione 4.4 – 4.7] Soluzione dell’esercizio per casa per l’identificazione di hazard in un listato di codice assembly MIPS senza bypassing Architettura della CPU con registri inter-fase e gestione dei data hazard tramite forwarding e stalli Gestione dei data hazard, forwarding, conteggio degli stalli, monitoring dei registri di pipeline
3 ore Progettazione della CPU: pipeline e gestione dei control hazard [S&PdC, Sezione 4.8] Parte 1: control hazard e forwarding; architettura della CPU con pipeline, forwarding e gestione degli stalli Parte 2: predizione dinamica dei salti
2 ore Introduzione alla cache [S&PdC, Sezioni 5.1, 5.2–5.4] - Cache con direct mapping - Cache: associatività e multilivello [S&PdC, Sezioni 5.1, 5.2–5.4] - Full e set-associative mapping - Politiche di scrittura, effetto del setup della cache sulle prestazioni, cache multilivello
3 ore Cache multilivello e memoria virtuale [S&PdC, Sezioni 5.4, 5.7–5.8] - Riepilogo con esercizio su cache multilivello - Memoria virtuale - Cache multilivello e memoria virtuale, gestione delle eccezioni, cache multiple e sistemi multi-processore [S&PdC, Sezioni 4.9, 5.8–5.10] - Memoria virtuale, gestione di translation lookaside buffer e page table - Gestione di eccezioni ed interrupt - Funzionamento e registri del Co-processore 0 del MIPS
2 ore Controllore della cache - Cache multiple per sistemi multi-processore - Coerenza e consistenza - Protocollo di snooping
3 ore Esercizi su cache e memoria virtuale [S&PdC] 5.3 – 5.10
D. A. Patterson e J. L. Hennessy. “Struttura e progetto dei calcolatori”, 4a edizione (basata sulla 5a edizione USA), Zanichelli, 2015. ISBN: 9788808352026.
|
Date di inizio e termine delle attività didattiche
|
- |
Date degli appelli
|
Date degli appelli d'esame
|
Modalità di erogazione
|
Tradizionale
A distanza
|
Modalità di frequenza
|
Non obbligatoria
|
Docente
|
MASI IACOPO
(programma)
== Programma di Massima
Parte I Introduzione al calcolatore e alle istruzioni MIPS. Rapresentazione delle istruzioni nel calcolatore in assembly MIPS, utilizzo della memoria per salvare variabili e dati. Utilizzo degli operatori logici. Strutture di controllo, vettori e matrici. Chiamate di sistema e funzioni. Gestione dello stack. Chiamata di funzioni annidate e ricorsione singola/multipla.
Parte II Progettazione della CPU MIPS a singolo ciclo di clock. Progettazione delle istruzioni assembly MIPS per architettura a singolo ciclo di clock. Introduzione alla pipeline e agli hazard. Progettazione della CPU con Pipeline e gestione dei data e control hazard.
Parte III Introduzione alla memoria cache. Associatività e multilivello. Cache multilivello e memoria virtuale. Caches multiple e gestione delle eccezioni.
== Programma nel dettaglio
📘 [S&PdC] si riferisce al libro di testo “Struttura e progetto dei calcolatori”
22/02/2021 - 3 ore Introduzione al corso 📘 [S&PdC, Capitolo 1] - Presentazione corso, Intro docente. Promesse del corso. Obiettivi e Programma. - Quattro chiacchiere sui calcolatori, la loro storia, e su un futuro prossimo. - Concetto di Astrazione e Gerarchia. - Linguaggio Alto livello, Compilatore, Assemblatore. Linguaggio Macchina. - Alcune leggi non ovvie sulla costruzione dei calcolatori. - Architettura di Von Neumann: programma memorizzato. Cenni alla IAS machine
25/02/2021 - 2 ore Le istruzioni della CPU MIPS - parte 1 📘 [S&PdC, Sezioni 2.3, 2.5-2.6] - Ripasso del sistema di codifica numerica posizionale - Approfondimento sull’architettura IAS - Introduzione alle istruzioni MIPS
01/03/2021 - 3 ore Le istruzioni della CPU MIPS - parte 2 📘 [S&PdC, Sezioni 2.7, 2.10 ] - Le istruzioni della architettura MIPS - Il Processore MIPS e i co-processori - I vari modi di indirizzare la memoria - Organizzazione della Memoria - Istruzioni Logiche - Cenni alle Istruzioni per prendere decisioni - Breve preview di MARS
04/03/2021 - 2 ore Le istruzioni della CPU MIPS - parte 3 📘 [S&PdC, Sezioni 2.7, 2.9, 2.10] - Istruzioni per prendere decisioni (implementare if-then-else, while, for loop) - Le pseudo istruzioni (registro $zero,$at) - Esercitazione sul Simulatore MARS (necessita di Java Virtual Machine)
08/03/2021 - 3 ore Le istruzioni della CPU MIPS - parte 4 📘 [S&PdC, Sezioni 2.9, 2.10, 2.14] - Soluzione esercizio Due Somme con for loop e registro che punta agli indici pari - Recap Istruzioni per prendere decisioni (do while, switch case statment) - Direttiva globl - Vettori (scorrimento con indice e con puntatori, i.e. accesso diretto in memoria) - Matrici 2D e Matrici N-Dimensionali (caso matrice 3D)
11/03/2021 - 2 ore Le istruzioni della CPU MIPS - parte 5 📘 [S&PdC, Sezioni 2.9, 2.10, 2.14] - Recap Vettori, Matrici 2D e Matrici 3D - Indicizzazione dei suddetti - Pezzi di listato assembly che mostrano come navigare la diagonale di una matrice quadrata caricata nel data segment: in maniera inefficiente (complessità quadratica) in maniera efficiente (complessità lineare) - System calls (come interagire con utente, stampare a video, leggere valori da tastiera) - Programma ASM (assembly MIPS) che implementa lettura di valori da tastiera da utente e in seguito utente decide se fare somma o prodotto in base ad input 0/1; il risultato è mostrato a video - La prossima lezione vediamo come leggere un’immagine
15/03/2021 - 3 ore (da remoto) Le istruzioni della CPU MIPS - parte 6 📘 [S&PdC, Sezioni 2.9, 2.10, 2.14] -Esercitazione su lettura di immagine raw binaria scala di grigi 3x3, 10x10 pixels; conteggio dei pixel bianchi di un’immagine - Come ottenere indirizzamente 32 bit su MIPS se al massimo jump codifica su 26 bit? lui + ori - Chiarimenti su salti assoluti con jump e salti relativi al PC (branch) - Ripasso procedure con jal and jr $ra - Funzioni nidificate e introduzione allo stack (LIFO) - Stack Pointer $sp e cenni al Frame Pointer $fp
18/03/2021 - 2 ore (da remoto) Le istruzioni della CPU MIPS - parte 7 📘 [S&PdC, Sezioni 2.9, 2.10, 2.14] - Record di attivazione di una funzione (Frame Pointer $fp) - Chiamate a funzioni annidate e uso dello stack - Introduzione alla ricorsione in assembly - Calcolo del fattoriale in assembly con approccio ricorsivo
22/03/2021 - 3 ore (da remoto, Prof. Pannone) Le istruzioni della CPU MIPS - parte 8 📘 [S&PdC, Sezioni 2.9, 2.10, 2.14] - Breve recap sui salti incondizionati (j,jal e jr) - Breve recap dello stack - Visto in dettaglio il calcolo ricorsivo in assembly del fattoriale
25/03/2021 - 2 ore (da remoto, Prof. Pannone) Le istruzioni della CPU MIPS - parte 9 📘 [S&PdC, Sezioni 2.9, 2.10, 2.14] - Implementazione dettagliata doppia ricorsione per il calcolo del numero di Fibonacci.
29/03/2021 - 3 ore (da remoto, Prof. Pannone) CPU a Singolo ciclo di clock 📘 [S&PdC, Sezioni 4.1 - 4.2] - Breve test sui casi non di base di Fibonacci - Introduzione all’ architettura a singolo colpo di clock.
01/04/2021 - 2 ore Sospensione della didattica per vacanze pasquali
05/04/2021 - 3 ore Sospensione della didattica per vacanze pasquali
08/04/2021 - 2 ore (da remoto) Progettazione della CPU a singolo ciclo di clock 📘 [S&PdC, Sezioni 4.1- 4.4] - Progettare la CPU MIPS - Ripasso campi istruzioni R, I e J - Control Unit, Data Path e ALU - Fasi di esecuzione di una istruzione - Unità funzionali: adder, AUL, memoria istruzioni, memoria dati, PC, MUX, register file - Progettazione della CPU a singolo ciclo di clock per istruzioni tipo R e tipo I (add,sub, lw, sw, beq).
12/04/2021 - 3 ore Progettazione della CPU a singolo ciclo di clock, CU, istruzione Jump 📘 [S&PdC, Sezioni 4.1- 4.4] - Soluzione esercizio su Stringa Palindroma con Case Invertito - Proprietà dell’encoding ASCII - Progettazione CPU a singlo ciclo di clock - Attivazione della circuiteria per Istruzione di tipo R - Per Istruzioni di tipo I, lettura/scrittura in memoria (lw,sw) - Per salto condizionato tramite istruzione beq (branch if equal) - Datapath CPU Completo - Control Unit (CU) e Tabella di verità con logica di controllo a cascata (AluOp, e campo funct) - Segnali di controllo della CU - Esercizio per aggiungere l’istruzione J (Jump di salto assoluto)
15/04/2021 - 2 ore Progettazione della CPU a singolo ciclo di clock 📘 [S&PdC, Sezioni 4.1- 4.4] - Ripasso progetto CPU MIPS (Istruzione Set Less than e altro) - Aggiunta Istruzione J - Aggiunta Istruzione Jump and Link (JAL) - Aggiunta Isutrzione Jump to Register (JR) - Esercizio su Jump Relative to Register
19/04/2021 - 3 ore Progettazione della CPU a singolo ciclo di clock, Esercizi e Malfunzionamento CU 📘 [S&PdC, Sezioni 4.1- 4.4] - Soluzione esercizio su Jump Relative to Register (jrr) - Svolto esercizio su Jumpt to Register and Link (jral) - Malfunzionamento CU. Cosa accade e come si puo’ rilevare con un piccolo programma ASM. - caso del segnale RegWrite ⇐ Branch (Branch sovrascrive RegWrite) - MemWrite ⇐ not(RegWrite) , MemWrite prende il valore negato di RegWrite - Esercizio per casa di vectorized jump (vj)
22/04/2021 - 2 ore Introduzione alla Pipeline 📘 [S&PdC, Sezione 4.5] - Introduzione al pipelining in architetture MIPS - Definizione di hazard strutturali, sui dati e sul controllo
Progettazione della CPU a singolo ciclo di clock: altri esercizi 📘 [S&PdC, Sezioni 4.1 – 4.4] - Identificazione di malfunzionamenti della Control Unit tramite script in assembly: il caso del segnale MemWrite dal complemento di RegWrite; il caso del segnale Jump dal complemento di MemRead - Il comando vj
Progettazione della CPU: pipeline e gestione dei data hazard 📘 [S&PdC, Sezione 4.4 – 4.7] Soluzione dell’esercizio per casa per l’identificazione di hazard in un listato di codice assembly MIPS senza bypassing
Architettura della CPU con registri inter-fase e gestione dei data hazard tramite forwarding e stalli
Gestione dei data hazard, forwarding, conteggio degli stalli, monitoring dei registri di pipeline
Progettazione della CPU: pipeline e gestione dei control hazard 📘 [S&PdC, Sezione 4.8] Parte 1: control hazard e forwarding; architettura della CPU con pipeline, forwarding e gestione degli stalli Parte 2: predizione dinamica dei salti
Introduzione alla cache 📘 [S&PdC, Sezioni 5.1, 5.2–5.4] - Cache con direct mapping - Cache: associatività e multilivello 📘 [S&PdC, Sezioni 5.1, 5.2–5.4] - Full e set-associative mapping - Politiche di scrittura, effetto del setup della cache sulle prestazioni, cache multilivello
Cache multilivello e memoria virtuale 📘 [S&PdC, Sezioni 5.4, 5.7–5.8] - Riepilogo con esercizio su cache multilivello - Memoria virtuale - Cache multilivello e memoria virtuale, gestione delle eccezioni, cache multiple e sistemi multi-processore 📘 [S&PdC, Sezioni 4.9, 5.8–5.10] - Memoria virtuale, gestione di translation lookaside buffer e page table - Gestione di eccezioni ed interrupt - Funzionamento e registri del Co-processore 0 del MIPS
Controllore della cache - Cache multiple per sistemi multi-processore - Coerenza e consistenza - Protocollo di snooping
Esercizi su cache e memoria virtuale 📘 [S&PdC] 5.3 – 5.10
[ITA] D. A. Patterson e J. L. Hennessy. “Struttura e progetto dei calcolatori”, 4a edizione (basata sulla 5a edizione USA), Zanichelli, 2015. ISBN: 9788808352026. [EN] D. A. Patterson and J. L. Hennessy. “Computer Organization and Design, The Hardware/Software Interface”, 5th edition, Morgan Kaufmann, 10 Oct 2013. ISBN: 9780124077263.
|
Date di inizio e termine delle attività didattiche
|
- |
Modalità di erogazione
|
Tradizionale
A distanza
|
Modalità di frequenza
|
Non obbligatoria
|
Metodi di valutazione
|
Prova scritta
|
|
|