Gli autori sono: Ymir, Paolo Sdreiolo Donato, Danilo, RPlant, epeira, Marco Basile, chiaracaglieri, Nymeria, Noki, Fabio Catinella, Alberto Alberigi, Ff300, Giacomo Mariani, michelezoncheddu, Andrea Tosti, Mozer, Francesco Bertolaccini.
Vari commenti sull'orale:
- Molto tranquillo, vi aiuta a ragionare anche se dite "cazzate". Buono con i voti, se avete studiato vi premierà.
- È molto tranquillo, cerca di mettervi a vostro agio; se magari non rispondete subito o dalla risposta capisce che state pensando a cose troppo complesse (nella domanda sulle politiche w. back e w. through ho iniziato a parlare di cache coherence e ritardi nell'accesso a dati condivisi tra diversi core), cerca di cambiare punto di vista per farvi ragionare.
- Orale con Danelutto. In generale mi è sembrato tranquillo, quando fa le domande lascia il tempo di pensare alle risposte con calma. Bisogna sapere le cose dette a lezione ma può chiedere anche di ragionare su cose nuove.
- Le domande sono dirette e vuole la risposta senza troppi giri di parole, vi lascia il tempo di ragionare (se di buon umore, se lo trovate nervoso è più cattivo), cercate di studiare affondo anche i principi di funzionamento dei vari meccanismi che spiegato perché ogni tanto è puntiglioso.
Ma comunque se siete arrivati con voto >= sufficiente, a meno che non fate un pessimo orale, difficilmente vi boccerà - Danelutto tranquillissimo, ti fa ragionare. Se avete studiato non avrete problemi.
- In generale cerca di farvi ragionare, e a quanto ho visto il voto dell'orale puo impattare molto (son passato da discreto a 30)
- Il mio orale è durato circa 20-30 minuti perchè non ho esitato nel rispondere. Tiene di più e fa più domande a chi è incerto.
- All'orale preferisce che abbiate capito i concetti e che sappiate ragionare rispetto a quello che vi chiede piuttosto che definizioni imparate a memoria.
- Cosa succede se elimino la pc da una rete sequenziale
- Spiegare il multithreading interleaving e blocked
- Spiegare le dipendenze iu-eu, eu-eu e qualche nozione generale sul processore superscalare
- Memoria
- Implementare un arbitro a richieste indipendenti senza l'utilizzo del registro turno
- Vettore interruzioni, e visto che avevo fatto confusione tutta la gestione dell'interruzione
- domanda per il vecchio ordinamento : implementare la receive ( praticamente scena muta)
- dipendenze EU-EU (come funzionano, cosa fare per ridurne il degrado)
- multithreading blocked e interleaving
- condizioni di Bernstein (quali sono con esempi di microcodice)
- memoria: come funzionano le cache di primo e secondo livello (in generale e in caso di fault)
- trattamento delle interruzioni in maniera molto dettagliata (perché il mprogramma è fatto da 3 istruzioni, se si poteva fare con meno, ecc)
- processore superscalare in generale e come si modificano IM, IU, DM, EU rispetto al processore pipeline
- spiegare il multithreading blocked e interleaving
- controllo residuo con esempio, condizioni di bernstein con piccolo codice esempio
- realizzazione tramite componenti logici delle interfacce a transizione di livello per la sincronizzazione (RDY e ACK)
- varie domande sulle gerarchie di memoria (come funzionano le cache, come si possono realizzare ecc)
- cooperazione tra processi ed implementazione di send e receive (sono classe 26 altrimenti il capitolo sui processi non farebbe parte del programma).
- Multithread e supporto firmware per attuarlo
- Superscalare e supporto firmware per attuarlo
- Differenze fra le due architetture, con alcuni esempi di possibile funzionamento
- Casi di Riuso e Località istruzioni assembly
- Schedulazione e commutazione di contesto di processi (in particolare nel caso del quanto di tempo e dei processi con priorità)
- Condizioni di Bernstein: spiegazioni in termini del ciclo di clock (con esempio di codice)
- Eu parallela: in che modo si sfrutta il modello pipeline e il modello a replicazione
funzionale, dipendenze EU-EU - Cosa comporta in termini di unità di tempo l'utilizzo della EU slave e che cosa si deve considerare nel rapporto con la IU e nella gestione dei registri interni. (domanda per lode)
- PC con componenti standard
- Cache: Write Back e Write Through
- Tempo di completamento effettivo e ideale su processore monolitico e pipeline (con esempio)
- Tempo necessario all'esecuzioni di due istruzioni LOAD consecutive su processore monolitico
- Numero di stati in un atoma di Mealy/Moore necessari a rappresentare un dato numero di stati
- Automa di Mealy e di Moore per contare la parità di una stringa binaria (e realizzazione di quello di Moore)
- Come realizzare un processore superscalare a 4 vie (gestione dei registri nella IU)
- Calcolo del numero di stati / tempi di una rete sequenziale che ha scritto lui sul momento
- Processo di sintesi formale, con disegno e tutto. Per capirci, alla compito.
- Perche', nel calcolo del tempo di ciclo di clock, insieme a omegaPC+sigmaPO, confrontiamo anche sigmaPC, nel massimo ? Tradotto, puo' essere sigmaPC > omegaPC+sigmaPO ?
- Differenza tra rete Mealy e rete Moore.
- Parallelismo Farm
- Aggiungere nell'interprete fw una istruzione di MOVI che copia 32bit in un registro dalla memoria. Dopo averla scritta, aumenta il ciclo di clock?
- Come si risolvono le dipendenze logiche? risp, allontanandole tra di loro e inserendo nel mezzo istruzioni non in dipendenza.
- Come fa il compilatore a capire quali istruzioni inserire? non sapevo cosa rispondere, ho provato spiegando i semafori dei registri, ma ha detto che il compilatore non li vede, rimane tutt'ora una domanda senza risposta per me.
- Come ridurre le probabilità di salto? Loop unfolding e espansione di macro e di funzioni e poi ho spiegato anche il delayed branch.
- Fai il microcodice di un arbitro, poi fallo fair e poi fai la pc dell'arbitro.
- Metodo set associative, divisione dei bit dell'indirizzo (offset, set, tag), poi mi ha chiesto come si fa a vedere se è nell'insieme o meno (ho spiegato che si confrontano i tag, voleva sapere nello specifico come, ma non mi ricordavo bene).
- Come funziona la MMU e la traduzione di indirizzi (nel dettaglio, con IPL-IPF e offset, tab.ril, schema dell'MMU)
- Superscalare a 2 vie: condizioni per mettere due istruzioni in contemporanea, problemi con LOAD/LOAD (soluzione standard, poi mi ha chiesto se si riesce a potenziare l'accesso alla cache per leggere due indirizzi diversi insieme)
- Rete di Mealy, ha scritto un automa sul momento e mi ha chiesto di fare le tabelle di verità di ω e σ)
- (domanda difficile) cambiare la gestione delle interruzioni nel processore sequenziale: cambio l'interfaccia con UINT (l'arbitro che sceglie di quale periferica prendere l'interruzione) per ricevere oltre al segnale anche i due valori (quelli che di solito arrivano tramite la MMU) in registri. Vantaggi, svantaggi e modifiche da fare al processore e alle unità FW esterne che mandano le interruzioni.
- Definizione di dipendenze logiche, dove si trovano nel processore sequenziale e dove in quello pipeline (spoiler: nel sequenziale non ci sono)
- Condizioni di Bernstein, quali sono e quali si considerano nel microcodice
- Vantaggi e svantaggi di costruire un commutatore a 4 ingressi a partire da una rete di commutatori da 2 vs implementazione ad hoc con tabella di verità. E se avessi voluto un commutatore a 2 ingressi da 32 bit a partire da una rete di commutatori a 2 ingressi da 32 bit? E se lo avessi fatto con una tabella di verità?
- Cosa succede ad un indirizzo da quando esce dal processore a quando arriva alla cache set-associativa, in cui è presente? (Quindi paginazione, funzionamento della MMU, funzionamento della cache set-associativa)
- Implementa un'istruzione ADDM Ra Rb Rc che prende due parole alle locazioni Ra ed Rb dalla memoria, le somma e mette il risultato in Rc. Descrivi i pro e i contro dell'implementazione a livello firmware rispetto all'implementazione come istruzione derivata.
- In quali casi conviene cambiare o tau o k nel tempo di completamento di un programma T = tau * k (ricordo che k è la somma del numero di istruzioni per ogni operazione, ognuna moltiplicata per la probabilità che venga richiesta), cosa succede a tau se cambio k e viceversa, in pratica cosa succede al microcodice e cosa succede alla parte operativa; controllo residuo.
- Politica write through e write back, quando conviene usare una o l'altra, e di cosa mi devo assicurare in un programma prima di usare la w. through.
- Processore pipeline superscalare con multithread simmetrico, caratteristiche implementative (soprattutto IM e DM), vantaggi e svantaggi.
- Alcune domande per verificare che fossi l'autore del progetto Verilog
- In Verilog come scriveresti il commutatore a 8 vie a N bit usando piu' commutatori a 8 vie 1 bit? Altre domande sui ritardi, sulle tabelle di verita' in Verilog
- Date le unita' A, B e una unita' intermedia tra A e B, scrivere un micro-programma tale per cui l'unita' intermedia mandi un dato da A a B
- Come funziona la commutazione di contesto, in particolare chi se ne occupa, come funziona la start_process, come deve essere realizzata la MMU per riconoscere una commutazione di contesto, come deve essere memorizzata le Tabril dei processi in memoria principale
- Mi viene proposto un codice DRISC con un po' di istruzioni, dire il Tempo di Completamento ideale (#istruzioni * t), il Tempo di completamento non ideale (con le bolle sulla IU), Tempo di Completamento effettivo (con la presenza di una memoria cache), quindi per quest'ultimo bisognava anche calcolare il #Fault, dire poi in quale caso avrei avuto 2 fault invece che 1 (elementi B e B[i+1] su linee diverse della cache)
- Come avviene la traduzione di un indirizzo (IPL.OFF -> IPF.OFF)
- Come si scompone l'indirizzo per indirizzare una Cache Set Associativa (TAG, #SET, OFF)
- Cosa succede se la MMU trova il bit di presenza a 0 nella tabella di rilocazione (in memoria principale)
R: La MMU setta il bit di Esito (quello relativo al "FAULT DI PAGINA") a 1, il processore quindi andrà al trattamento eccezioni. - Tecnica Out-of-order nel Pipeline, se nel mio programma ho bolle che durano solamente 1, il tempo di completamento migliora o peggiora?
R: Rimane lo stesso perchè il tempo risparmiato eliminando la bolla da 1 viene comunque speso per rieseguire l'istruzione successivamente. - Differenza tra Tempo di Servizio e Tempo di Completamento nel Pipeline
- La comunicazione a livelli è asincrona o sincrona? Perchè? Come renderla sincrona?
- Descrivi le forme di parallelismo nel processore e i problemi nei vari casi. Da cosa sono causati? Come possono essere risolti?
- Come funziona la paginazione? Quante pagine sono necessarie per immagazzinare la tabella di rilocazione ipotizzando 4K indirizzi per pagina?