====== Architettura degli elaboratori II ====== ===== FAQ ===== ==== Come è strutturato l’esame? ==== L’esame di teoria consiste in una parte scritta e orale. Quella scritta si svolge su piattaforma Exam.net e SEB (si presume a crocette), quella orale su zoom e ci si accede se si è passati la parte scritta. Per la parte di laboratorio invece è richiesto lo svolgimento di un progetto in assembly seguito poi da un colloquio orale. Il voto di teoria vale 2/3 del voto finale, mentre quello di laboratorio 1/3. E’ consigliato fare affidamento al sito del docente per eventuali cambiamenti in situazione covid. ==== Qual è il materiale a disposizione per studiare? ==== Sono disponibili le videolezioni sul sito ariel del docente, con i relativi pdf. Il libro consigliato dal docente è "Computer organization and design" di D. A. Patterson. ==== Quali sono le risorse disponibili? ==== * [[http://bellerofonte.diism.unisi.it/index.asp|WebMips]] * [[https://brunonova.github.io/drmips/|DrMips]] Data la scarsa quantità di aggiornamenti e l'impossibilità di utilizzare un tema scuro nella versione originale del software Mars 4.5.1 è possibile [[https://github.com/aeris170/MARS-Theme-Engine|scaricare una versione non ufficiale]] ma funzionante con la customizzazione di temi (dark e non), sono presenti tutti i temi più noti. L'unico inconveniente è che la zona di editor e dei registri non sono soggette a modifiche (rimangono bianche). ===== Laboratorio ===== ==== Come faccio ad utilizzare MARS sui PC dei laboratori? ===== Sembra che Java non sia installato su Windows, devi utilizzare Linux. Su Linux (Fedora) è sufficiente scaricare con Firefox il file .jar dal sito ufficiale ed eseguire i seguenti comandi: ''cd Downloads/'' ''java -jar Mars'' Per si intende di premere il tasto tab. ===== Domande effettuate durante gli orali a distanza ===== //Per delle brevi risposte e soluzioni riguardo queste domande è possibile trovare un documento nel gruppo relativo.// * Come fa la cpu a sapere la priorità di un interrupt se è alta o bassa? * Come vengono gestite le priorità degli interrupt negli Intel? * Come faccio a sapere quale degli 8 banchi della cache è stato utilizzato meno di recente? * Risoluzione hazard sui dati * Nel caso di due hazard sullo stesso dato, quale viene propagato? * Questo meccanismo è presente anche nelle pipeline superscalari? * Che relazione c'è con il registro renaming? * Come funziona l'hazard detection unit? * Come si calcola il codice di Hamming? * Come si calcola l'offset di una branch? Come fa l'architettura a calcolare l'indirizzo di salto? * Mi disegni una cella DRAM. * Mi disegni una Memoria DRAM organizzata a matrice. * Prestazioni + CPI * Come funziona il Daisy Chain? * Memoria virtuale, Tabella delle pagine, TLB e questione delle page fault * Come mantieni la coerenza nei sistemi multi-core? * Gestione delle eccezioni * Cosa fa la cpu in caso di branch? * Come funziona il Branch Prediction Buffer e dove si trova nelle pipeline attuali? * Cos'è una memoria flash? * Cosa sono i dischi a stato solido? * Che tipo di circuito è la forwarding unit? Combinatorio o sequenziale? * Come viene gestito l'hazard sui dati causato da load word? Come fa l'hazard detection unit * Cosa sono le SRAM? * Nel caso di un Overflow cosa esce dalla ALU? * Superpipeline e pipeline multiple-issue * Legge di Amdahl * Parallelismo a livello di parola * Write invalidate protocol * Come funzionano le eccezioni a livello hardware e concettualmente * Schema DRAM a matrice * Come vengono gestiti gli hazard sui dati nelle superscalari? * Cos'è il blocking? * Protocolli per la coerenza e consistenza della memoria * Cos'è il branch prediction buffer e dove si trova? * E' possibile che la tlb abbia una hit e la tabella delle pagine abbia una entry non valida? * Come viene gestita un'eccezione di istruzione non valida? * Come vengono gestiti gli interrupt e le eccezioni multiple? * Come vengono gestite le eccezioni in Intel? * Memorie SRAM * Come usi i codici di rilevazione degli errori per creare uno schemino che capisce la mmu? * Cosa dice la legge di Amdhal? * Gestione memory miss * Schema di write back * A cosa serve l'invalidate bit? * Schema della RAM * Polling * Come agisce il circuito della MMU che controlla il bit di parità? * Chi genera gli indirizzi virtuali? * Mi parli delle istruzioni fetch e decode in Intel. Cosa sa dirmi? * Ha chiesto la gestione delle eccezioni vettorizzata, che mi pare sia sugli Intel (?) * Write invalidate protocol * Qual è la definizione di latenza di una memoria? * Perchè usiamo una matrice quadrata nelle DRAM ? * A cosa serve il reference bit nelle TLB? * Se devo modificare la cpu per gestire un’operazione non valida(opcode non valido) , quale è il nome del segnale che “segnala” che l’opcode non è valido? * Cosa vuol dire "parallelismo a livello di parola" ? * Come modifichi questa pipeline per la retropropagazione * Mem virtuale * Pipeline multiple issues e multiscalari nel dettaglio * Modifica pipeline hardware per gestione delle eccezioni * Codice di hamming * Perché la cache è più veloce rispetto a una memoria tradizionale? * Daisy chain * Cos'è la memoria virtuale? * Coerenza e consistenza * Srotolamento dei cicli * Superscalare (a piacere) * Protocollo di arbitraggio (daisy chain) * Cache a due vie * Modificare la cpu per gestione di overflow * Eccezione a piacere * Write back - Write throught * Protocollo write invalidate * Superscalare, principi su cui è basata * Cosa s'intende per speculazione e chi la fa? * Branch prediction buffer a 2 bit (macchina a stati) * Cos'è il BPB (struttura) * Disegnare una DRAM * Disegnare una SRAM * Come valutare le prestazioni (Speed Up - come si misura) * Coerenza e consistenza delle memorie * A cosa serve il write buffer? * Tabella delle pagine (dove si trova? Come è fatta? Disegnarla - dimensionarla ho un architettura a 32 bit) * Algoritmo richiesta dato * Offset e Virtual Page Number