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

Domande Orale Danelutto

ESAME 28/01/2020:

Il professore controlla i test quindi consiglio di vedere i test che si sono fatti e vederne gli errori., le domande sono state:

Map e farm (non ho sentito la domanda ma l'argomento era quello)

Perché bisogna salvare i registri?

Come implementeresti la push e la pop? (con codice arm)

Cosa sono le eccezioni e le interruzioni?

Avere una cache di primo liv per risolvere un fault, quindi andare in un livello superiore, ha una memoria interallacciata, perché?

Assembler: scrivere una funzione a cui passo dei parametri e calcolo un polinomio.

Data hazard in un codice arm

Forma di parallelismo di tipo pipeline

Funzione f g e h, ognuna di queste ha un tempo tf tg th, quanto ci metto a calcolare tutte le funzioni dal tempo di inizio del primo al tempo di fine dell'ultimo?

Fault di cache di tipo compulsory, domanda presa da uno dei test. Qual è quella giusta e perché?

Quanto costa un comparatore da 8 bit?
09/06/2020
1-Codice Arm di una funzione che restituisce la somma di tutti gli elementi di un Array
2-Unitá di controllo processore pipeline
3-Sottosistema di memoria
4-Per cosa si usa il verylog e qualche domanda su di esso
Orali prima sessione 14/01/2021.
Il prof chiede spesso di guardare i circuiti dei processori single/multi/pipeline dal libro, impiega una ventina di minuti a persona o poco di piu se si va lenti. Aiuta abbastanza. Se non è stato consegnato (o non era sufficiente) uno dei compitini sicuramente chiede quella parte in almeno una delle tre domande. Se manca quella di ASM fa scrivere un piccolo codice sul momento. La difficoltà delle domande dipende un po dal voto con cui si arriva. Più è alto più chiede per alzare il voto.

1) Logica Combinatoria: cosa si può fare con la rete sequenziale rispetto a quella combinatoria? + esempio
2) Microarchitettura: tra single cycle, multi cycle e pipeline che differenze ci sono a livello di microarchitettura? Dal punto di vista del funzionamento di una singola istruzione? Tempi per istruzione e di completamento?
3) Memoria: come si traduce un ind virtuale in fisico?
===
1) Memoria: come funziona il compromesso del metodo associativo su insiemi? Si trova tutto su un modulo di memoria? Cosa torna meglio se uso una memoria modulare?
2) ASM: Come avviene l'esecuzione di un istruzione condizionale (es ADDEQ R0, R1, R2..) in single cycle ?
3) Verilog: che differenza c'è tra simulazione e sintesi (concettualmente) ?
===
1) Processore pipeline con controllo (figura 7.47 ): a cosa serve la cond unit?
2) Memoria: come funziona il meccanismo di paginazione dinamica?
3) Logica condizionale: Quanti livelli di porte AND e OR per un decoder sapendo il numero di ingressi?
===
1) Salto condizionale nel processore pipeline: conseguenze sul flusso di esecuzione.
2) Memoria: come funziona la TLB?
3) ASM ARM, istruzioni di memoria: come funzionano e che tipi di indirizzamento si usa?

15/01/2021:

1) ASM: compilazione if-then-else. Esempio codice

Codice: Seleziona tutto

If(x==0) a[i]=y; else a[i] = x;
2) Come si gestisce un fault in una memoria ad ind. diretto?
3) Come si compongono moduli da 1k parole da 1 byte per ottenere un modulo da 1 parola (32 bit)?
===
1) Cache: differenza località spaziale e temporale. Meccanismi cache che favoricono l'uso di località spaziale. Svantaggi di avere troppe parole per linea di cache
2) Processore single cycle (fig 7.14): perché logica e decoder sono divisi in due parti?
3) ASM: convenzioni per passaggio registri e controllo quando si chiama una funzione. Supponendo una funzione con 3 parametri in ingresso e 1 in uscita. Come si fa?
===
1) Come si usano le mappe di karnaugh per minimizzare una rete?
2) Loop che copia un area di memoria in un'altra (es.

Codice: Seleziona tutto

for(i=0;i<n;i++) a[i] = b[i];
). Scrivere in ASM e dire quali indirizzi genera.
===
1) Reti logiche modellate in verilog: almeno 2 modi diversi per descrivere reti logiche (ad alto livello, no codice). Esempio: Due ingressi, tramite un ingresso di controllo determino l'uscita. Mux 4 ingressi, con bit di controllo da 2 bit. Differenza tra tempi di tabella di verità vs albero invertito. (differenza tra due livelli di mux da due ingressi e due livelli di porte AND e OR)
2) Microarchitettura (fig 7.13): data path può eseguire un numero limitato di istruzioni. Come si può adattare per fare una store? Esempio: STR R0, [R1, R2]
Risp: Aggiunta di un uscita ulteriore RD3 al register file.
3) Interruzioni: differenza tra interrupt e fast interrupt?
===
1) Single cycle: come si determina il tempo del ciclo di clock sapendo i ritardi dei componenti?
2) Operazioni di shift per semplificare le potenze di 2 in ALU: come si implementa uno shift con le porte logiche?
3) ASM ARM: diversi modi per esprimere gli operandi, tra cui uno per fare lo shift dei registri. In cosa consiste questo metodo di indirizzamento?
4) Alcuni indirizzi di memoria fisica potrebbero essere dedicati agli I/O. Che meccanismi sono previsti per questo? Come fa un dispositivo a riconoscere che un indirizzo è suo?
===
1) Che cos'è la paginazione dinamica? Caratteristiche TLB?
2) Cosa sono le dipenze logiche e che impatto hanno sul pipeline? Come si puo agire sul codice?
3) Differenza tra rete sequenziale di mealy e di moore? Quale più veloce?
Risp: Un ciclo di clock in meno in quella di mealy
===
1) Che cos'è un processore superscalare?
Un proc è superscalare se c'è replicazione di risorse e se si possono eseguire le stesse operazioni in parallelo
Cosa si aggunge per prelevare due istruzioni dalla memoria contemporaneamente?
Risp: Memoria a due moduli interlacciata, se sequenziali servono due tempi di accesso di memoria
Processore pipeline con qualche dipendenza e qualche NOP per allontanarle, che cosa cambia se fosse anche superscalare?
Risp: Bisogna guardare le istruzioni a due a due se ci sono dipendenze
Esempio: LDR R0 […] ADD R1, R2, R3 ADD R4, R0, R5 BL f
2) Componenti: perché conviene avere un segnale di clock che stabilizza gli stati (registri)? A che servono i sincronizzatori davanti agli ingressi? Garantisce che non cambino gli ingressi mentre la rete sta lavorando o che gli ingressi siano giusti?
3) Microarchitettura: predizione salti. Cosa si guadagna cercando di anticipare la conoscenza del punto di salto? Salto condizionale quasi mai preso, o un salto condizionale preso quasi sempre: quale conviene di più dal punto di vista dell'esecuzione?
Risp: Salto non preso conviene di piu perché non si scartano le successive già iniziate nel pipeline
===
1) Scrivere in ASM ciclo che scorre due array e controlla che ogni elemento i-esimo sia diverso nei due array, se trova una corrispondenza esce con false.
Codice:

Codice: Seleziona tutto

vero = 1; 
for(i = 0; i<N i++)  
   if(a[i] == b[i])  {​​​​ 
      vero = 0; 
      break;  
}
Com'è rappresentata una ADD (del codice) in 32 bit? + Applicazione dei vari bit in uscita verso la ALU
2) Come cambia il processore single cycle (rispetto alle figure viste a lezione) se si considera la memoria esterna?
3) Come si verifica se un componente funziona o meno usando il verilog? Avendo un modulo di logica combinatoria, quanti ingressi bisogna produrre per vedere se funziona?
===
1) Domanda su paginazione
2) Cause dipendenze logiche: salti. Che grado di dipendenza causano?
3) Cosa si semplifica a livello di linguaggio macchina (rappresentazione delle istruzioni) se si eliminano i bit di condizione nelle istruzioni operative?
===
1) Con cosa si implementa una rete sequenziale di mealy?
Risp: Un registro + due reti combinatorie di cui una che calcola le uscite (Z) e una calcola il prossimo stato (S).
Cosa c'è dentro le reti S e Z (con un automa di esempio dato)?
2) Quanti sono i registri in ARM v7 e che uso se ne fa?
Microarchitetture: cosa sono i segnali che entrano nel register file e come funziona?
Mattina 22/01
Voto di ammissione: 27 (tutti i parziali) -> 30
- pag. 178 figura 5.6: qual è la logica che porta a questo schema?
- Fare un esempio di come nella microarchitettura aggiungendo pezzi di hardware si aumentino le prestazioni (Risposta: gestione delle dipendenze)
- pag. 323 figura 7.51: quando si ricorre all'unità di gestione delle dipendenze?

Voto di ammissione: 26 (manca Assembler) -> 28
- Scrivere codice assembler: supponendo di avere un albero binario di ricerca dove ogni foglia è formata da 3 parole in memoria (int informazione, puntatore a figlio destro, puntatore a figlio sinistro - NULL viene rappresentato da un puntatore a 0) cerca il valore che è in R0 considerato che la ricerca parte dal nodo il cui indirizzo è salvato in R1.
- Figura 7.27: spiegare.
- Cosa cambierebbe se avessi pagine di dimensione variabile? (Risposta: nella tabella dello spiazzamento delle pagine salvo l'offset di ciascuna) E dal punto di vista della memoria? (Risposta: frammentazione)
- Parallelismo: esercizio sulla latenza.
Voto di ammissione: 23 (mancano 2 parziali) -> 22
- Esercizio sulle componenti fondamentali viste a inizio corso (mancava il parziale su questo argomento).
- Condizionali in assembler.
- Cache: qual è una cosa negativa direttamente proporzionale al numero di blocchi per insieme? (Risposta: numero di confrontatori)

Mattina 27/01
Voto di ammissione: 25 (tutti i parziali) -> 30
- Provare a immaginare che succederebbe nel single cycle se volessimo implementare un salto a un indirizzo il cui valore è contenuto in una cella di memoria - facendo ad esempio B R0 (Risposta: funzionerebbe come una LDR R15, R0 ed è necessario modificare l'unità di controllo per permettere di modificare il PC).
- In quali stati si può trovare un processore al momento delle interruzioni? Descriverli.
- Progettare una rete sequenziale che su una sequenza di parole da 32 bit conta modulo k il numero di numeri pari che prende in ingresso. Disegnarne l'automa e la rete che si deriva.

Voto di ammissione: ?? (mancano terza prova e microarchitettura) -> bocciato
- Demultiplexer e decoder. Implementare una rete come quella in figura: il decoder deve settare a 1 il WE nella posizione corretta, a 0 gli altri; quanto sarebbe costato un demultiplexer usato allo stesso modo? quanto costa il decoder?
- Figura 7.48: parlare del forwarding.
- Com'è fatta una TLB?

Voto di ammissione: ?? (mancano assembler e microarchitettura) -> bocciato
- Supponendo di avere in memoria la tabella delle pagine e si voglia cercare una chiave della tabella; si trova a partire da una base in r0, ogni elemento è in un campo da 2 byte. Scrivere un programma assembler che prende in input una pagina e la cerca.
- Come è fatta la parte di controllo di un processore multi cycle?
- Cosa significano i bit 31 30 29 28 di una istruzione in Assembly ARMv7?

Voto di ammissione: entra con la prova assembler -> 25
- Dovendo programmare una rete sequenziale di Moore in verilog usando il modello strutturale quanti moduli utilizzerebbe?
- Figura 7.58: cosa fa logicamente l'unità di gestione delle dipendenze?
- Assembly ARMv7: seguendo la falsa riga dell'introduzione delle funzioni che lavorano su numeri in virgola mobile dove interverrebbe (n.d.r. all'interno del formato di istruzioni) per introdurre funzioni particolari nuove che lavorino per la cifratura?

Voto di ammissione: 22 (tutte le prove tranne assembler) -> 23
- Tradurre codice C dato in chat in Assembly ARMv7:
while(x != 0) {​​​​
i = f(x);
y[i] = x;
x = g(x);
}​​​​
, parlare delle condizioni di Bernstein.
- Spiegare come è implementata l'operazione di lettura su una cache set associativa.
- Per cosa si utilizzano le mappe di Karnaugh?

Voto di ammissione: 23 (tutte le prove) -> 21
- Partendo da un modulo verilog:
module xxx(z0, z1, x, alpha);

parameter N = 4;

output [(N-1):0]z0;
output [(N-1):0]z1;
input [(N-1):0] x;
input alpha;

assign z0 = (alpha==0 ? x : 0);
assign z1 = (alpha==1 ? x : 0);

endmodule
di che modulo si tratta? cosa fa? è una rete sequenziale o combinatoria?
- Pagina 461 fig. 7.63: perché non ci sono due register file?
- Assembly ARMv7: supponiamo di avere il seguente codice
adds r0, r1, r2
beq fine
come viene tradotto in linguaggio macchina?
Lascio in allegato un file word che mi ero fatto in preparazione dell'orale. È un piccolo riassunto degli argomenti che ritenevo mi avrebbe chiesto con più probabilità, insieme a qualche risposta ad alcune domande trovate qui sul forum.

PS: Non è perfetto, ed è stato scritto con il solo scopo di consolidare e riassumere le nozioni studiate sul libro di testo.

Allegati