fbpx
Skip to main content
  1. Valerio Battaglia
  2. Ingegneria Informatica - Triennale
  3. Mercoledì, 09 Maggio 2007
  4.  Subscribe via email
e quest'ultimo lo apro io :D buon lavoro a tutti..
Comment
There are no comments made yet.
Accepted Answer Pending Moderation
sarà una domanda stupida.. forse mi sono rimbambito:

a pagina 4 delle dispense sulla rappresentazione in floating point
vi è un numerale a 5 cifre .XXX EE, dove .XXX è la mantissa..
perchè 0.1<=|m|<1 e non 0.001<=|m|<1 ???!?!?
Comment
There are no comments made yet.
Accepted Answer Pending Moderation
sarà una domanda stupida.. forse mi sono rimbambito:

a pagina 4 delle dispense sulla rappresentazione in floating point
vi è un numerale a 5 cifre .XXX EE, dove .XXX è la mantissa..
perchè 0.1<=|m|<1 e non 0.001<=|m|<1 ???!?!?

ah sorry.. capito.. pardon, è normalizzata tra due potenze consecutive
Comment
There are no comments made yet.
Accepted Answer Pending Moderation
Forza Catanzaro! :lol:
Comment
There are no comments made yet.
Accepted Answer Pending Moderation
In un esercizio degli esoneri ho visto questo:

Modificare il processore MIPS multiciclo in allegato, in modo tale che, oltre al set ridotto di istruzioni MIPS, supporti la seguente istruzione

push rt M[R[29]]=R[rt], R[29]=R[29]-4, PC=PC+4;

Nonostante il mio studio, non capisco come svolgere gli esercizi. E sulle soluzioni degli esoneri c'è solo la soluzione.
Qualcuno mi spiega cosa vuol dire???

Potrei dire lo stesso di:

jal target PC=(PC+4)[31-28] || target<<2,R[31]=PC+4;

jr rs PC=R[rs];

lui rt,imm R[rt]=(imm<<16), PC=PC+4



..............
Comment
There are no comments made yet.
Accepted Answer Pending Moderation
push rt [questo è la "firma" dell'istruzione, cioè quella che si usa in assembler, per esempio "push $t0", in più ti dice che il registro che verrà pushato nella memoria sarà il registro rt (bit 20-16)]

M[R[29]]=R[rt], R[29]=R[29]-4, PC=PC+4;
questa è una spiegazione più a basso livello di quello che l'istruzione deve fare:

-Metti nella locazione di memoria corrispondente al valore del registro '29'
il valore del registro rt -->M[R[29]]=R[rt]
-decrementa di 4 il valore del registro 29 --> R[29]=R[29]-4
-aggiorna il PC --->PC=PC+4

Queste sono le uniche cose che potrebbero creare dubbi, secondo me. Se ci sono altri dubbi sull'implementazione di tali istruzioni, è probabile che non hai ancora una buona confidenza con il processore, quindi il consiglio è studiare e tanti esercizi.

Spero di esserti stato utile!
Comment
There are no comments made yet.
Accepted Answer Pending Moderation
per quanto riguarda il jal, implementa soltanto R[31] = PC+4 perchè il calcolo dell'indirizzo di salto è già implementato nel processore multiciclo.
per l'istruzione lui invece, prende i 16 bit del campo immediate e li shifta a sinistra semplicemente, mentre il pc=pc+4 è implicito dato che la seconda operazione del multiciclo è proprio quella di calcolarsi la prossima istruzione
Comment
There are no comments made yet.
Accepted Answer Pending Moderation
Oggi mi sono accorto di una cosa.....nell'automa sulle dispense, ke poi è quello ke ci sarà dato al compito, nello stato numero 4, in riferiemnto al load, c'è scritto RegDst = 1....ma non dovrebbe essere 0?? In teroria dovrei scrivere ciò che ho caricato nell'indirizzo contenuto nei bit 16-20 dell'istruzione, anke xkè gli 0-15 sono il campo immediate
Comment
There are no comments made yet.
Accepted Answer Pending Moderation
Oggi mi sono accorto di una cosa.....nell'automa sulle dispense, ke poi è quello ke ci sarà dato al compito, nello stato numero 4, in riferiemnto al load, c'è scritto RegDst = 1....ma non dovrebbe essere 0?? In teroria dovrei scrivere ciò che ho caricato nell'indirizzo contenuto nei bit 16-20 dell'istruzione, anke xkè gli 0-15 sono il campo immediate


In effetti penso ci sia un errore, anzi due, in quanto il registro destinazione è rt e non rd, poichè l'istruzione formalmente è load rt, imm(rs) se non sbaglio, quindi RegDst dovrebbe essere = 0.
Mentre MemtoReg dovrebbe essere = 1 poichè vado a scivere un dato che ho letto dalla memoria...

Aspettiamo conferme...

:wink:
Comment
There are no comments made yet.
Accepted Answer Pending Moderation
ciao
domanda scema: qualcuno può spiegarmi meglio di come sia fatto sulle slide il procedimento per sommare 2 numeri floating in virgola mobile?
grazie in anticipo...
Comment
There are no comments made yet.
Accepted Answer Pending Moderation
ciao
domanda scema: qualcuno può spiegarmi meglio di come sia fatto sulle slide il procedimento per sommare 2 numeri floating in virgola mobile?
grazie in anticipo...


guardi i due esponenti e fai la sottrazione tra il più grande e il più piccolo e chiamiamo questo risultato X.
Shifti la mantissa del numero con esponente più piccolo a destra di X posti (perdendo dunque le cifre che man mano vengono spostate a destra).
Degli X bit introdotti (tutti = 0) cambi il meno significativo (quello più a destra) in 1

es.
x= 5
m = 100100100111 ---> m = 000011001001 (4 zeri e un 1 finale = 5 bit introdotti alla sinistra)
Comment
There are no comments made yet.
Accepted Answer Pending Moderation
ciao
domanda scema: qualcuno può spiegarmi meglio di come sia fatto sulle slide il procedimento per sommare 2 numeri floating in virgola mobile?
grazie in anticipo...


guardi i due esponenti e fai la sottrazione tra il più grande e il più piccolo e chiamiamo questo risultato X.
Shifti la mantissa del numero con esponente più piccolo a destra di X posti (perdendo dunque le cifre che man mano vengono spostate a destra).
Degli X bit introdotti (tutti = 0) cambi il meno significativo (quello più a destra) in 1

es.
x= 5
m = 100100100111 ---> m = 000011001001 (4 zeri e un 1 finale = 5 bit introdotti alla sinistra)


premuto invio troppo presto.

A questo punto poni l'esponente che era più piccolo uguale a quello più grande e hai due numeri con lo stesso esponente e quindi sommabili
Comment
There are no comments made yet.
Accepted Answer Pending Moderation
jal target PC=(PC+4)[31-28] || target<<2,R[31]=PC+4;

Allora questa vuol dire che:

il campo target deve essere shiftato di 2 a sinistra e mandato alla ALU,
che nel registro 31 va salvato il valore del registro PC già incrementato,
ma la prima parte che vuol dire?

E poi l'istruzione

jr rs PC=R[rs];

vuol dire che salvo in PC il valore del campo rs dell'istruzione?

E poi soprattutto:
come faccio a convertire quello che ho scritto nella giusta maniera con l'automa a stati finiti? Qualcuno potrebbe farmi un esempio con una delle istruzioni che ho postato?
Comment
There are no comments made yet.
Accepted Answer Pending Moderation
grazie!
molto chiaro...
nn avevo capito che dovevo mettere a 1 il bit meno significativo tra quelli aggiunti
Comment
There are no comments made yet.
Accepted Answer Pending Moderation
|| target<<2,R[31]=PC+4;

Allora questa vuol dire che:

il campo target deve essere shiftato di 2 a sinistra e mandato alla ALU,
che nel registro 31 va salvato il valore del registro PC già incrementato,
ma la prima parte che vuol dire?

E poi l'istruzione

jr rs PC=R[rs];

vuol dire che salvo in PC il valore del campo rs dell'istruzione?

E poi soprattutto:
come faccio a convertire quello che ho scritto nella giusta maniera con l'automa a stati finiti? Qualcuno potrebbe farmi un esempio con una delle istruzioni che ho postato?


PC=(PC+4)[31-28] || target<<2
Significa che nel PC dovrai scrivere i 4 bit più significativi di (PC+4) concatenati a target shiftato di 2 posti
Successivamente metti nel registro 31 il valore di PC + 4

su JR ci hai preso

Per implementare le nuove istruzioni devi aggiungere i blocchi che ti servono sul datapath. Siano questi delle costanti, delle porte logiche o unità per lo shift, ecc.... successivamente sistemi adeguatamente i multiplexer aggiungendo le opzioni che hai introdotto.
Nell'automa invece devi riportare lo stato dei segnali di controllo che definiscono il comportamenteo passo per passo. Naturalmente se aggiungi nuove parti al datapath dovrai aggiungere anche altri segnali di controllo, perlomeno nei multiplexer.
Comment
There are no comments made yet.
Accepted Answer Pending Moderation
no, su JR non ci hai preso avevo letto male.
il campo RS è un valore a 5 bit, dunque da 0 a 32. Non indica il valore da scrivere ma indica il registro da cui prendere i dati (i registri invece sono a 32 bit).

R[rs] vuol dire "Il contenuto del registro RS"
M[x] vuol dire "il contenuto della posizoine di memoria X"
M[R[rs]] vuol dire "il contenuto della posizione di memoria indicata dal contenuto del registro RS"
Comment
There are no comments made yet.
Accepted Answer Pending Moderation
So di essere pesante ma non ho seguito a lezione e sarei grato a chiunque mi spiegasse passo passo la soluzione dell'esercizio del 21/7/06, sia per quanto riguarda l'unità di elaborazione multiciclo che l'automa a stati finiti.
Ancora meglio sarebbe se qualcuno mi dicesse dove posso trovare una spiegazione dettagliata sul dafarsi. Ho il Patterson II edizione...
Comment
There are no comments made yet.
Accepted Answer Pending Moderation
push rt M[R[29]]=R[rt], R[29]=R[29]-4, PC=PC+4.

Questo è l'esercizio.
Da quello che ho capito, devo scrivere in memoria, nella locazione indicata dal valore del registro 29, qualcosa: ma cosa? rt sono 5 bit...
Poi devo decrementare di 4 il valore del registro 29 e poi incrementare PC.
Ma quello che non capisco è cosa cazzo devo scrivere nel disegno del processore e nell'automa a stati finiti...
Comment
There are no comments made yet.
Accepted Answer Pending Moderation
non è rt che devi scrivere ma R[rt] che sarebbe il contenuto!guarda un pò di post precedenti...ragionaci un attimo, guarda la soluzione e vedrai che non è difficile.
Comment
There are no comments made yet.
Accepted Answer Pending Moderation
qlcno sa se la parte relativa al controllo dell input/interruzioni in Spim potrà essere nel compito ? mi ricordo che il professore aveva detto qlcsa a riguardo ma non ne sono sicuro.
bye
Comment
There are no comments made yet.
Accepted Answer Pending Moderation
buongiorno
sentite qualcuno sa spiegarmi l'ultimo passo dell'operazione push fatta dal prof?
ho capito tutto però se nn erro da come ha fatto lui in memoria va a scrivere all'indirizzo di memoria dato da R[29]-4 (che è il contenuto di aluout) e nn in R[29] e basta come dice l'istruzione...
grazie in anticipo a chiunque sappia illuminarmi
Comment
There are no comments made yet.


There are no replies made for this post yet.
Be one of the first to reply to this post!