Guardando gli esercizi nelle slide titolate esercizi_su_CPU_MIPS_a_1_ciclo_di_clock ho provato a svolgere l'esercizio la cui traccia è:
Aggiungere alla CPU l’istruzione jrr rs(Jump Relative to Register) di tipo R, che salta all’indirizzo (relativo al PC) contenuto nel registro rs
Ovvero che esegue come prossima istruzione quella all’indirizzo PC+4+Registri[rs]
a)Modificate lo schema per realizzare l’istruzione
b)Indicate tutti i segnali di controllo che la CU deve generare
c)Calcolate il tempo di esecuzione della istruzione assumendo che: Accesso a memorie = 66ns, accesso ai registri = 33ns, ALU e sommatori = 100ns
Delle soluzioni, non ho capito un paio di cose:
- perché il jump non andrebbe bene in questo caso, ma è necessario utilizzare un branch?
- perché nei segnali di controllo della CU MemRead è posto a don't care e MemWrite è posto a 0? (come nei jump, tra l'altro)
- nel calcolo dei tempi di esecuzione, la fetch impiega 66 ns perché l'accesso alla memoria istruzioni è considerata "accesso alla memoria" giusto? Ovvero, in generale: i tempi di accesso alla memoria istruzioni sono sempre uguali a quelli di accesso alla memoria dati?