The forum of the Computer Science students of the University of Pisa

Domande Orale Danelutto

Queste domande sono state importate dal vecchio forum.

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:
  1. Molto tranquillo, vi aiuta a ragionare anche se dite "cazzate". Buono con i voti, se avete studiato vi premierà.
  2. È 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.
  3. 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.
  4. 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à
  5. Danelutto tranquillissimo, ti fa ragionare. Se avete studiato non avrete problemi.
  6. In generale cerca di farvi ragionare, e a quanto ho visto il voto dell'orale puo impattare molto (son passato da discreto a 30)
  7. Il mio orale è durato circa 20-30 minuti perchè non ho esitato nel rispondere. Tiene di più e fa più domande a chi è incerto.
  8. All'orale preferisce che abbiate capito i concetti e che sappiate ragionare rispetto a quello che vi chiede piuttosto che definizioni imparate a memoria.
Lista delle domande (possono esserci doppioni):
  1. Cosa succede se elimino la pc da una rete sequenziale
  2. Spiegare il multithreading interleaving e blocked
  3. Spiegare le dipendenze iu-eu, eu-eu e qualche nozione generale sul processore superscalare
  4. Memoria
  5. Implementare un arbitro a richieste indipendenti senza l'utilizzo del registro turno
  6. Vettore interruzioni, e visto che avevo fatto confusione tutta la gestione dell'interruzione
  7. domanda per il vecchio ordinamento : implementare la receive ( praticamente scena muta)
  8. dipendenze EU-EU (come funzionano, cosa fare per ridurne il degrado)
  9. multithreading blocked e interleaving
  10. condizioni di Bernstein (quali sono con esempi di microcodice)
  11. memoria: come funzionano le cache di primo e secondo livello (in generale e in caso di fault)
  12. trattamento delle interruzioni in maniera molto dettagliata (perché il mprogramma è fatto da 3 istruzioni, se si poteva fare con meno, ecc)
  13. processore superscalare in generale e come si modificano IM, IU, DM, EU rispetto al processore pipeline
  14. spiegare il multithreading blocked e interleaving
  15. controllo residuo con esempio, condizioni di bernstein con piccolo codice esempio
  16. realizzazione tramite componenti logici delle interfacce a transizione di livello per la sincronizzazione (RDY e ACK)
  17. varie domande sulle gerarchie di memoria (come funzionano le cache, come si possono realizzare ecc)
  18. cooperazione tra processi ed implementazione di send e receive (sono classe 26 altrimenti il capitolo sui processi non farebbe parte del programma).
  19. Multithread e supporto firmware per attuarlo
  20. Superscalare e supporto firmware per attuarlo
  21. Differenze fra le due architetture, con alcuni esempi di possibile funzionamento
  22. Casi di Riuso e Località istruzioni assembly
  23. Schedulazione e commutazione di contesto di processi (in particolare nel caso del quanto di tempo e dei processi con priorità)
  24. Condizioni di Bernstein: spiegazioni in termini del ciclo di clock (con esempio di codice)
  25. Eu parallela: in che modo si sfrutta il modello pipeline e il modello a replicazione
    funzionale, dipendenze EU-EU
  26. 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)
  27. PC con componenti standard
  28. Cache: Write Back e Write Through
  29. Tempo di completamento effettivo e ideale su processore monolitico e pipeline (con esempio)
  30. Tempo necessario all'esecuzioni di due istruzioni LOAD consecutive su processore monolitico
  31. Numero di stati in un atoma di Mealy/Moore necessari a rappresentare un dato numero di stati
  32. Automa di Mealy e di Moore per contare la parità di una stringa binaria (e realizzazione di quello di Moore)
  33. Come realizzare un processore superscalare a 4 vie (gestione dei registri nella IU)
  34. Calcolo del numero di stati / tempi di una rete sequenziale che ha scritto lui sul momento
  35. Processo di sintesi formale, con disegno e tutto. Per capirci, alla compito.
  36. Perche', nel calcolo del tempo di ciclo di clock, insieme a omegaPC+sigmaPO, confrontiamo anche sigmaPC, nel massimo ? Tradotto, puo' essere sigmaPC > omegaPC+sigmaPO ?
  37. Differenza tra rete Mealy e rete Moore.
  38. Parallelismo Farm
  39. Aggiungere nell'interprete fw una istruzione di MOVI che copia 32bit in un registro dalla memoria. Dopo averla scritta, aumenta il ciclo di clock?
  40. Come si risolvono le dipendenze logiche? risp, allontanandole tra di loro e inserendo nel mezzo istruzioni non in dipendenza.
  41. 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.
  42. Come ridurre le probabilità di salto? Loop unfolding e espansione di macro e di funzioni e poi ho spiegato anche il delayed branch.
  43. Fai il microcodice di un arbitro, poi fallo fair e poi fai la pc dell'arbitro.
  44. 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).
  45. Come funziona la MMU e la traduzione di indirizzi (nel dettaglio, con IPL-IPF e offset, tab.ril, schema dell'MMU)
  46. 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)
  47. Rete di Mealy, ha scritto un automa sul momento e mi ha chiesto di fare le tabelle di verità di ω e σ)
  48. (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.
  49. Definizione di dipendenze logiche, dove si trovano nel processore sequenziale e dove in quello pipeline (spoiler: nel sequenziale non ci sono)
  50. Condizioni di Bernstein, quali sono e quali si considerano nel microcodice
  51. 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à?
  52. 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)
  53. 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.
  54. 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.
  55. 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.
  56. Processore pipeline superscalare con multithread simmetrico, caratteristiche implementative (soprattutto IM e DM), vantaggi e svantaggi.
  57. Alcune domande per verificare che fossi l'autore del progetto Verilog
  58. 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
  59. 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
  60. 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
  61. 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)
  62. Come avviene la traduzione di un indirizzo (IPL.OFF -> IPF.OFF)
  63. Come si scompone l'indirizzo per indirizzare una Cache Set Associativa (TAG, #SET, OFF)
  64. 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.
  65. 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.
  66. Differenza tra Tempo di Servizio e Tempo di Completamento nel Pipeline
  67. La comunicazione a livelli è asincrona o sincrona? Perchè? Come renderla sincrona?
  68. Descrivi le forme di parallelismo nel processore e i problemi nei vari casi. Da cosa sono causati? Come possono essere risolti?
  69. Come funziona la paginazione? Quante pagine sono necessarie per immagazzinare la tabella di rilocazione ipotizzando 4K indirizzi per pagina?
Domande Orale 16/01/2019
Scritto passato coi compitini (Quasi Sufficiente + Buono)

-Come funzionano e da cosa sono costituiti gli indicatori a transizione di livello (contatore mod 2, XOR, registro, ecc)
-Tabella di verità dello XOR
-Automa a stati (a scelta se Mealy o Moore) che rappresenti un indicatore a transizione di livello
-Cosa succede e cosa cambia se invece di avere una gerarchia di tipo Memoria-Cache1-Cache2-MMU-Processore cambiamo e mettiamo Memoria-Cache1-MMU-Cache2-Processore?
-Cosa impedisce a due programmi che generano lo stesso indirizzo logico di andare a leggere i dati l'uno dell'altro?
-Come viene scomposto e usato l'indirizzo in una cache a indirizzamento diretto e come viene usata solitamente?
-Superscalare: come funziona e cosa devo modificare nel pipeline classico a 4 stadi per farlo diventare superscalare?
-Multithread: come lavorano i 3 tipi di multithread che abbiamo visto

All'orale è molto calmo e pacato, non si innervosisce e cerca sempre di farvi ragionare per capire se non avete studiato o se siete solo sotto pressione.
Spiega molto bene le domande e alle risposte vi ci fà arrivare dandovi tutto il tempo del mondo, nel mio caso mi ha tenuto un'ora abbondante.
Buona fortuna a tutti.
Ammesso all'orale con i compitini :Buono + Quasi sufficiente = Sufficiente. Voto finale 27.
- Tempo di servizio e di completamento ideale ed effettivo. Cosa abbiamo trascurato nel tempo di completamento effettivo nel nostro pipeline? Altre domande sulle misure.
- Gerarchia di memoria, working set.
- In quali casi il compilatore non riesce ad ottimizzare il codice?
- Perchè nel pipeline il tempo di servizio è t=2tau? Si può migliorare? Ragionamenti vari.
- Posso allungare il tempo della EU? Posso fare in modo che la EU impieghi 4tau al posto di 2tau? (bisogna vedere il tempo di interarrivo nella EU).
- A cosa serve la start_process? Quindi tutta la commuta contesto nello specifico. Dove e come è allocata la tabella di rilocazione in memoria?
- Politiche wrtite back e write through.

Danelutto è molto tranquillo. Ti porta a ragionare su situazioni particolari e a volte diverse da quelle viste a lezione. Se si è in difficoltà aiuta a ragionare senza mettere pressione. Orale durato un'ora circa.
Orale del 9 gennaio 2019(passato con i compitini)

•Nell'unità firmware, differenza tra protocollo a transizione di livelli e protocollo a livelli.
Immagina di avere uno stream di istruzioni dove io mando dati a te e tu li elabori, scrivi il microcodice se il protocollo fosse a livelli;
•Differenza tra un thread e un processo;
•Cosa fanno la start process e la MMU dopo la commuta contesto;
•Cos'è il working set e come si vedono le proprietà di località e riuso;

Sono stato l'ultimo del pomeriggio, partivo con discreto e mi ha alzato di molto, in generale è molto buono, se hai studiato le cose e le hai capite ti fa ragionare
Ho fatto l’orale stamani in data 24/01 e arrivavo con i compitini : Ottimo + Buono = Buono.

Mi ha chiesto:
Tecniche di ottimizzazione del microcodice, in modo dettagliato la parte di ottimizzazione della riduzione di tau con lo spostamento delle variabili di condizionamento da omegapo a sigmapo. Formula del tau, da dove si deriva e in quale caso il tau viene migliorato spostando le v.cond. Complesse(risoluzione eq. tau).
Date due set di istruzioni asm che vengono eseguiti su processori pipeline D-risc, calcolare il tempo (caso pessimo e ottimo) su Processore pipeline d-risc con Multithreading Interleaving, nel caso la prima porzione di codice impieghi 15t per 10istruduoni e la seconda 13t per 10 istruzioni su Processore pipeline iniziale.
Gestione interruzioni con Memory mapped I/O , Dma, e come faccio ad accedere al disco in un linguaggio di programmazione come C o Java. Tempo orale 25minuti circa, voto finale 30
Orale del 29/01/19 con ottimo del primo appello
Mi ha chiesto se avessi domande sul compito, quindi gli ho chiesto a riguardo di una dipendenza logica EU-EU. Ha usato questo per cominciare l’orale:
- Quando abbiamo una dipendenza logica
- Che collegamenti intercorrono tra la IU e la EU (nello specifico cosa passa, i campi dell’indirizzo fisico)
- Come calcolare il costo di un D-RISC
- Scrivere il codice ch0 e ch1, quanto costano, dove si spende il ta (nella ch1 quando fa le nop aspettando la memoria)
- Cosa bisogna aggiungere in un processore per attuare il multi-threading blocking
o Qui è andato nel dettaglio chiedendomi come si fa a calcolare se vale la pena o meno cambiare thread, quindi come calcolare se la bolla è almeno da 2 e calcolare quando la dipendenza si risolve nella IU. Alla fine dice che c’è un’ unità apposita che fa questo, non so se ne ha mai parlato, è stata la parte più lunga dell’orale
- Cache set associativa, come funziona, possiamo usare la cache con indirizzi logici?