2013-06-21 34 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.