Vai al contenuto

Primario: Sky Slate Blackcurrant Watermelon Strawberry Orange Banana Apple Emerald Chocolate Marble
Secondario: Sky Slate Blackcurrant Watermelon Strawberry Orange Banana Apple Emerald Chocolate Marble
Sfondo: Blank Waves Squares Notes Sharp Wood Rockface Leather Honey Vertical Triangles
Corsi di Laurea










ROX @ Unisa - Forum degli studenti di Ingegneria utilizza i cookie. Se prosegui la navigazione accetti il loro uso.    Accetto l'uso dei cookie
-->
Foto

Discutiamo gli esercizi proposti per il datapath


  • Effettua l'accesso per rispondere
Questa discussione ha avuto 108 risposta/e

#61
Ale89

Ale89

    Advanced Member

  • Utente
  • StellaStellaStella
  • 225 Messaggi:
X quanto riguarda la MFLO come anche la MFHI la mi soluzione è grosso modo questa:

Davanti ad uno dei MUX d'ingresso all'alu (quelli controllati con AlusrcA e AlusrcB) metto un nuovo Mux controllato da controllo Alu. Questo nuovo Mux riceverà in ingresso l'uscita di uno di quei Mux sopra citati ed uno dei registri LO o HI (a seconda dell'istruzione), il segnale di controllo sarà ad esempio un segnale di MFLO ( il controllo Alu sa dal campo funct che si tratta di questa istruzione) e l'uscita andrà in ingresso all'Alu). Ora l'Alu non dovrà fare altro che una banale addizione con 0 e il proseguio è quello di una normale istruzione R...

Grosso modo Learner mi trovo con quello che dici tu!!! :ciao:
Fieru cu biessi quiddhu ca tie 'uè biessi e none quiddhu ca l'auri te dicenu cu 'sinti! SUD SOUND SYSTEM - Nun me fannu paura
Hey Bobby Marley sing something to me. This world go crazy, it's an emergency! MANU CHAO - Mr Bobby

#62
eferre

eferre

    Advanced Member

  • Utente
  • StellaStellaStella
  • 1502 Messaggi:

X quanto riguarda la MFLO come anche la MFHI la mi soluzione è grosso modo questa:

Davanti ad uno dei MUX d'ingresso all'alu (quelli controllati con AlusrcA e AlusrcB) metto un nuovo Mux controllato da controllo Alu. Questo nuovo Mux riceverà in ingresso l'uscita di uno di quei Mux sopra citati ed uno dei registri LO o HI (a seconda dell'istruzione), il segnale di controllo sarà ad esempio un segnale di MFLO ( il controllo Alu sa dal campo funct che si tratta di questa istruzione) e l'uscita andrà in ingresso all'Alu). Ora l'Alu non dovrà fare altro che una banale addizione con 0 e il proseguio è quello di una normale istruzione R...

Grosso modo Learner mi trovo con quello che dici tu!!! :ciao:


Per essere un operando dell'ALU il contenuto del registro LO deve trovarsi in un registro che non sia il register-file (perchè come ben sai l'accesso al register-file ti porta via un altro periodo di clock), quindi in ogni caso (se non metti il contenuto di LO né in A né in B) ti serve un terzo registro... se puoi postare un disegno sarebbe meglio...

#63
eferre

eferre

    Advanced Member

  • Utente
  • StellaStellaStella
  • 1502 Messaggi:

Sto provando a fare BLTZAL per caso l'hai gia vista???


Ora che l'ho fatta nel complesso posso darti una soluzione precisa:

ho aggiunto 2 fasi dopo quella di decode (fase 1 della macchina a stati finiti CU):

1. Vengono asseriti i segnali MemToReg=10 e RAWrite, dove MemToReg è il segnale che regola il MUX al quale ho aggiunto un entrata (10) proveniente dal PC, mentre RAWrite è un segnale che lavora sul RF ed abilita la scrittura del solo registro ra

2. ALUSrcA=1, ALUSrcB=00, ALUOp=01 (sottrazione), PCWriteCondMaj, PcSource=01, dove PCWriteCondMaj è un segnale che si abilita con questo solo CODOP ed è in AND con il MSB proveniente dall'ALU (come l'esercizio per bgtz)... l'uscita di questa AND va nell'OR già disegnata sul libro e che abilita la scrittura del Pc.

#64
Ale89

Ale89

    Advanced Member

  • Utente
  • StellaStellaStella
  • 225 Messaggi:

X quanto riguarda la MFLO come anche la MFHI la mi soluzione è grosso modo questa:

Davanti ad uno dei MUX d'ingresso all'alu (quelli controllati con AlusrcA e AlusrcB) metto un nuovo Mux controllato da controllo Alu. Questo nuovo Mux riceverà in ingresso l'uscita di uno di quei Mux sopra citati ed uno dei registri LO o HI (a seconda dell'istruzione), il segnale di controllo sarà ad esempio un segnale di MFLO ( il controllo Alu sa dal campo funct che si tratta di questa istruzione) e l'uscita andrà in ingresso all'Alu). Ora l'Alu non dovrà fare altro che una banale addizione con 0 e il proseguio è quello di una normale istruzione R...

Grosso modo Learner mi trovo con quello che dici tu!!! :ciao:


Per essere un operando dell'ALU il contenuto del registro LO deve trovarsi in un registro che non sia il register-file (perchè come ben sai l'accesso al register-file ti porta via un altro periodo di clock), quindi in ogni caso (se non metti il contenuto di LO né in A né in B) ti serve un terzo registro... se puoi postare un disegno sarebbe meglio...


Enrì purtroppo non ho scanner al limite te lo disegno col paint e vedi un po' se è corretto quello ke ho fatto... comunque LO e HI x come li ho intesi io non si trovano nel register-file tanto è vero non fanno parte dei famosi 32... Dunque io li ho disegnati in ingresso a questo mux aggiuntivo!!!
Fieru cu biessi quiddhu ca tie 'uè biessi e none quiddhu ca l'auri te dicenu cu 'sinti! SUD SOUND SYSTEM - Nun me fannu paura
Hey Bobby Marley sing something to me. This world go crazy, it's an emergency! MANU CHAO - Mr Bobby

#65
eferre

eferre

    Advanced Member

  • Utente
  • StellaStellaStella
  • 1502 Messaggi:

Enrì purtroppo non ho scanner al limite te lo disegno col paint e vedi un po' se è corretto quello ke ho fatto... comunque LO e HI x come li ho intesi io non si trovano nel register-file tanto è vero non fanno parte dei famosi 32... Dunque io li ho disegnati in ingresso a questo mux aggiuntivo!!!


Ho capito, prova a disegnare con paint, in ogni caso se ho capito bene la tua soluzione differisce dalla mia solo per questo MUX aggiuntivo che ti permette di fare la selezione dell'operando non internamente all'ALU (come ho proposto io) ma all'esterno...

#66
Ale89

Ale89

    Advanced Member

  • Utente
  • StellaStellaStella
  • 225 Messaggi:
Si si in effetti è quella... Comunque per quanto riguarda l'altra istruzione mi trovo esattamente con quello che hai fatto tu ^_^
Fieru cu biessi quiddhu ca tie 'uè biessi e none quiddhu ca l'auri te dicenu cu 'sinti! SUD SOUND SYSTEM - Nun me fannu paura
Hey Bobby Marley sing something to me. This world go crazy, it's an emergency! MANU CHAO - Mr Bobby

#67
Ale89

Ale89

    Advanced Member

  • Utente
  • StellaStellaStella
  • 225 Messaggi:
Immagine inviata
Fieru cu biessi quiddhu ca tie 'uè biessi e none quiddhu ca l'auri te dicenu cu 'sinti! SUD SOUND SYSTEM - Nun me fannu paura
Hey Bobby Marley sing something to me. This world go crazy, it's an emergency! MANU CHAO - Mr Bobby

#68
eferre

eferre

    Advanced Member

  • Utente
  • StellaStellaStella
  • 1502 Messaggi:
La soluzione è buona! Correggimi se sbaglio: non è necessario modificare la CU perchè per ogni istruzione di tipo R ALUOp vale 10 (opera in base al campo funct), e possiamo ipotizzare che questo comando significhi anche "gestisci il multiplexer in base al campo funct"...

#69
nicklion

nicklion

    Advanced Member

  • Amministratore
  • 470 Messaggi:
si enrico si trova!! penso sia questa la soluzione, che avevamo ipotizzato anche io e learner88 forse nn ci eravamo fatti capire!! cmq sembra funzionare e nn bisogna cambiare la CU ma soltanto far partire un collegamento dal controllo alu al multiplexer che quando vede il campo funct attiva il multiplexer per ricever da LO
Immagine inviata

#70
BOJACK89

BOJACK89

    Newbie

  • Utente
  • StellaStellaStella
  • 141 Messaggi:
Ragazzi scusate l'OT ma, visto che questa mi sembra il post più attivo riguardo calcolatori, il giorno dell'esame qual è? è il 17 e quindi sul sito nclab c'è stato un errore (penso sia molto probabile), oppure lo hanno proprio anticipato al giorno 16?
'A vita è 'nu muorzo!

#71
nicklion

nicklion

    Advanced Member

  • Amministratore
  • 470 Messaggi:
//OT
ho mandato una mail al prof. aspetto la sua risposta

END OT//
Immagine inviata

#72
ciraso

ciraso

    Advanced Member

  • Utente
  • StellaStellaStella
  • 700 Messaggi:
Ragazzi...in qualche altro post si parlava proprio di questo...io ho mandato una mail mi sa giovedì al prof ma niente risposta ancora.

#73
Ale89

Ale89

    Advanced Member

  • Utente
  • StellaStellaStella
  • 225 Messaggi:

La soluzione è buona! Correggimi se sbaglio: non è necessario modificare la CU perchè per ogni istruzione di tipo R ALUOp vale 10 (opera in base al campo funct), e possiamo ipotizzare che questo comando significhi anche "gestisci il multiplexer in base al campo funct"...


Sisi !!!!

PS: Mi sono scoperto grande disegnatore prrr
Fieru cu biessi quiddhu ca tie 'uè biessi e none quiddhu ca l'auri te dicenu cu 'sinti! SUD SOUND SYSTEM - Nun me fannu paura
Hey Bobby Marley sing something to me. This world go crazy, it's an emergency! MANU CHAO - Mr Bobby

#74
nicklion

nicklion

    Advanced Member

  • Amministratore
  • 470 Messaggi:
ok, cmq il professore mi ha risposto e ora riporto qui la sua risposta:
Salve.

Nel calendario che io ho ricevuto la data dell'esame e' fissata per il
16, non per il 17. Comunque provvedo a modificare l'avviso sul sito:
l'esame si terra giorno 17 febbraio, come previsto, ma alle 14:30.

Grazie,
Angelo Marcelli
Immagine inviata

#75
eferre

eferre

    Advanced Member

  • Utente
  • StellaStellaStella
  • 1502 Messaggi:
Ragazzi, però se c'è già un altro topic aperto, non è necessario andare off-topic! Mi dispiace poi per coloro che cercano delle risposte riguardo il datapath che devono scorrere pagine in cui si parla d'altro!

#76
Fast_and_Furious

Fast_and_Furious

    Member

  • Utente
  • StellaStella
  • 19 Messaggi:
Ragazzi qualcuno mica può postare le figure del "datapath" e della "macchina a stati finiti della Control Unit del processore multiticlo" relativi agli esercizi proposti dal professore in modo da rendere tutto un po' più chiaro? (Magari modificando un po' come fatto dal prof. le figure inserite negli esercizi svolti relativi al processore).
Grazie!!!

#77
Corrado

Corrado

    Advanced Member

  • Utente
  • StellaStellaStella
  • 556 Messaggi:
Salve ragazzi, vedo che molti di voi si sono cimentati nell'implementazione del datapath di ulteriori istruzioni mips...
Prima di fare lo stesso anche io però vorrei ritornare su quelle proposte dal prof, in particolare sulla "MFLO €t2".

Ecco la mia soluzione...

Considerazioni:

1) L'istruzione è del formato R;
2) L'istruzione sposta il contenuto di LO in Il registro St2;
3) Nella codifica binaria dell'istruzione si nota chiaramente il codice operativo (000000), il campo rd (00010), il campo funct (010010), il campo shampt che non ci interessa, e i campi rs ed rt che sono entrambi codificati come 00000;
4) Il registro LO è un registro del processore, ma non fa parte del register file... Dal Patterson si evince che accoppiato ad HI è un registro usato nelle operazioni di moltiplicazione e divisione... Ciò mi fa presupporre che sia un registro interno alla ALU, o al limite un registro alla stregua di ALUOUT, ovvero non accessibile direttamente.
5) Essendo l'istruzione del tipo R, l'ALU opera solo in base al campo funct.

Soluzione:
Io ho considerato che il registro LO sia interno alla ALU, e che nè nel datapath ne nella control unit debbano essere effettuati cambiamenti rispetto a quelli del formato R.
Semplicemente il processore si comporta come in qualsiasi istruzione di tipo R, esempio una ADD: preleverà l'istruzione, leggerà i registri (nel caso della MFLO il campo rt ed rs saranno impostati dal compilatore sempre a 00000, mentre il campo rs sarà specificato dal programmatore), poi il segnale di controll ALUOP sarà impostato a 10, ed il campo funct andrà in pasto al controllo della ALU, che indicherà a quest'ultima di trasferire in uscita al registro ALUOUT il contenuto del suo registro interno LO (ecco perchè i campi rt ed rs li ho considerati puramente fittizi, poichè non vengono usati); infine il tutto si completa come in qualsiasi istruzione di tipo R, con la scrittura del contenuto di ALUOUT nel register file.

Ora vi voglio chiedere scusa, sono certo di essermi dilungato, e forse di aver dato una soluzione che forse voi avete già dato nelle pagine precedenti, però ho cercato di spiegare passo passo il mio ragionamento, per essere certo di aver pensato bene, o magari capire dove sbaglio.

Il dubbio più grande poi è se di fronte a un'istruzione come questa MFLO o simile, si possa effettivamente ragionare in questo modo, o se tale ragionamento può essere considerato dal prof (nonostante le varie motivazioni) di tipo "evasivo", in quanto evita modifiche al datapath o alla control unit, in virtù della supposizione che LO, in questo caso, sia un registro interno alla ALU...

E chi si era accorto di aver scritto tanto! o_O :lmfao: Notte a tutti!

#78
eferre

eferre

    Advanced Member

  • Utente
  • StellaStellaStella
  • 1502 Messaggi:
Credo che ci siano una serie di imprecisioni su quello che hai scritto... ovviamente invito gli altri utenti a non produrre altre 5-6 pagine per rispondere, essendo che tale istruzione è stata discussa nelle prime pagine ed è stata poi data una soluzione definitiva (corretta), pertanto ti rimando alla lettura della restante parte del thread. :ciao:

#79
Corrado

Corrado

    Advanced Member

  • Utente
  • StellaStellaStella
  • 556 Messaggi:
Si, effettivamente mi era sfuggita... Se non vado errato la soluzione di cui parli è quella di Ale89, con i due multiplexer in cascata, uno controllato da AlusrcB e l'altro da mflo (segnale generato dal controllo della ALU)... In pratica in questa soluzione il registro LO è considerato un registro non accessibile tramite register file, alla stregua di AluOut o A e B... Alla fine la soluzione proposta da me non è molto differente... L'unica differenza è la posizione del registro (dentro o fuori la ALU) e il segnale di controllo mflo e il multiplexer aggiuntivo, necessari nella soluzione di Ale, no nella mia... Ma in fin dei conti sempre il controllo della Alu è a decidere cosa fare in base al campo funzione...

Ora non so, forse mi sfugge qualcosa... :ggg:

Ammesso che le due soluzion isiano equivalenti, l'unica considerazione può essere che di fronte alla mia uno potrebbe dire "Questo ha scelto la via più facile!" :P

#80
Di bello Giuseppe

Di bello Giuseppe

    Advanced Member

  • Utente
  • StellaStellaStella
  • 38 Messaggi:
Ragazzi io avevo trovato una soluzione molto più semplice,senza sconvolgere il data path o la fsm.
Inanzitutto ho ipotizzato che il registro lo sia presente nel register file, in realtà lo è la parte inferore (low) di un registo a 32 bit, quindi la sua dimensione è di 16 bit, però nell'esercizio non è stato specificato e lo tratto come un registro a 32 bit. Nella codifica dell'istruzione non è spercificato il suo indirizzo,ma solo il registro destinazione ("t2"),qundi bisogna ricavare informazioni dal campo funct per mettere nella alu il valore contenuto nel registro lo, per fare ciò bisogna collegare un multiplexer fra l'istuction register dove compare l'istruzione [25-21] e il register file, il selettore è comandato dal controllo alu che agisce in base al campo funct, quando è presente la stringa "010010" asserisce il segnale "1" al mutiplexer e manda alla alu 00, qundi calcola la somma fra lo e il registo zero,quindi il processore può continuare l'esecuzione dell'istruzione come una normale istruzione di tipo R.
Nel caso consideriamo lo come un registro a 16 bit bisogna estenderlo in segno per portarlo a 32 bit per poi inviarlo alla alu...

File allegato






Leggono questa discussione 0 utenti

0 utenti, 0 ospiti, 0 utenti anonimi