Se il set di istruzioni MIPS è stato modificato per ospitare 128 record e 4 volte più istruzioni type-I, quale sarebbe il più grande valore immediato esadecimale che potrebbe essere supportato, mantenendo le istruzioni a 32 bit?
Se il set di istruzioni MIPS è stato modificato per ospitare 128 record e 4 volte più istruzioni type-I, quale sarebbe il più grande valore immediato esadecimale che potrebbe essere supportato, mantenendo le istruzioni a 32 bit?
Supponendo che si intenda registri non record:
La maggior parte di ciò che stai chiedendo è una questione di codifiche che vengono eseguite con bit.
4x più significa che sono necessari altri 2 bit, perché log 2 (4) = 2, o in altre parole, 4 = 2 2 .
Le attuali istruzioni di tipo I:
I instructions are converted into machine code words in the following format:
opcode rs rt IMM 6 bits 5 bits 5 bits 16 bits
I campi del registro corrente sono 5 bit che possono contenere la designazione di 2 5 = 32 registri diversi. Per portare questo a 128 registri, è necessario log 2 (128) = 7 (anche quello 2 7 = 128) bit, ovvero 2 bit in più di adesso.
Quindi in totale:
4x more opcodes: 2 more bits are needed.
4x more registers: 2 more bits are needed per register field for a total of 4 more bits
Tutto ciò richiede fino a 6 bit in più, il che lascia 10 bit a sinistra per il campo immediato invece del 16 corrente.
10 bit possono essere usati per rappresentare un intervallo senza segno da 0 a 2 10 -1 o da 0 a 1023. O 10 bit possono essere usati per rappresentare un intervallo firmato da -2 9 a +2 9 -1, o da -512 a 511. Ci sono altre codifiche possibili (il proprio complemento, o, per esempio, va da 1 a 1024), ma ci sono solo 2 10 = 1024 possibili valori che possono essere differenziati in 10 bit.