2013-06-21 16 views
7

Sto cercando di implementare il supporto di istruzioni jr (jump register) a un processore MIPS a ciclo singolo. Nell'immagine seguente, ho disegnato un semplice mux che consente di selezionare tra il normale PC della catena o l'indirizzo di istruzioni (jr).Implementazione del controllo del registro di salto su MIPS a ciclo singolo

MUX

Come faccio a sapere che l'istruzione è JR per impostare la selezione mux a '1'? Ho già fatto jump e jump_and_link (anche se l'immagine non lo mostra, visto che non ho il mio progetto in mano in questo momento), e per controllarli, ho solo controllato se il codice OP è 10 (salto) o 11 (jal) nel controllo principale e quindi impostare il sel mux su '1'. Ma penso che non posso fare lo stesso con jr, dato che il layout delle istruzioni è distinto.

+1

Non so quanto questo ti aiuterà ma: 'jr $ ra' salta alla posizione salvata nel registro dell'indirizzo di ritorno. – wazy

+2

Sì, e sto recuperando la "posizione salvata" dal registro delle istruzioni. Ma il problema è come controllare quando impostare il PC su quest'ultima posizione o sul PC predefinito + 4 .. – user2509740

+0

Quindi dove saltare? – wazy

risposta

6

Il codice operativo di un'istruzione JR ha Instruction[31:26] == 0 (speciale) e Instruction[5:0] == 0x08 (JR). è necessario guardare a entrambe queste posizioni di bit per decidere che si tratta di un'istruzione JR. Il blocco Control sul diagramma deve disporre di un input aggiuntivo di Instruction[5:0]. Il campo rs in Instruction[25:21] seleziona il registro di origine per questa istruzione. Il PC deve essere assegnato a rs quando viene eseguita un'istruzione JR.

+1

Grazie @markgz, era esattamente quello che stavo cercando. Ma come posso verificare se l'istruzione [5: 0] è 0x08? – user2509740

+0

Qualcosa del genere: (Inst [3] AND! Inst [2] AND! Inst [1] AND! Inst [0])? – user2509740

+0

Prova '! Inst [5] &! Inst [4] & Inst [3] &! Inst [2] &! Inst [1] &! Inst [0] .' Devi controllare tutti i bit di' Istruzione [ 5: 0] .' – markgz

0

Penso che sia possibile migliorare le prestazioni dell'hardware implementando il mux JR prima del mux Jump, poiché il mux JR non dipende dal pcnext dell'output del Jump sel mux.

Problemi correlati