Teste Teórico 2 Flashcards
Instruções tipo R?
O que é o Opcode? Formato da instrução?
All R-type instructions have the following format:
OP rd, rs, rt
Where “OP” is the mnemonic for the particular instruction. rs, and rt are the source registers, and rd is the destination register. As an example, the add mnemonic can be used as:
add $s1, $s2, $s3
Where the values in $s2 and $s3 are added together, and the result is stored in $s1. In the main narrative of this book, the operands will be denoted by these names.
Instruções do tipo I?
Que uso têm?
Formato?
Quantos bits ocupa cada uma das parcelas?
I instructions are used when the instruction must operate on an immediate value and a register value. Immediate values may be a maximum of 16 bits long. Larger numbers may not be manipulated by immediate instructions.
I instructions are called in the following way:
OP rt, IMM(rs)
6 bits - opcode
5 bits - registers
5 bits - shiftamt
6 bits - funct
O que é o opcode?
The opcode is the machinecode representation of the instruction mnemonic. Several related instructions can have the same opcode. The opcode field is 6 bits long (bit 26 to bit 31).
O opcode é uma representação das instruções que irão ser realizadas.
rs, rt, rd? Que significam?
rs - register source
rt - register target
rd - resgister destination
Qual é a função do parametro funct nas intruções tipo-r?
É usada para dizer a instruções que têm o mesmo opcode que instrução devem executar, por exemplo, um opcode pode acessar o ALU, mas a fucnt diz exatamente que parte do ALU deve usar.
Instruções do Tipo-J?
Formato? Quando é que são usadas?
J instructions are used when a jump needs to be performed. The J instruction has the most space for an immediate value, because addresses are large numbers.
J instructions are called in the following way:
OP LABEL
Porque é que no adder que tem input do PC, adicionamos 4?
As palavras são 32 bits, se a memoria estiver em bytes então temos de adicionar 4 para irmos para a próxima instrução, ou seja, o resultado irá voltar ao PC com o endereço correto.
Como funcionam no hardware as instruções tipo-r
Entram os parametros rs, rt e rd no controlador dos registos, os parametros rs e rt são dirigidos para os endereços read 1 e 2 respetivamente, este são encaminhados para a ALU (Arithmetic Logic Unit) que produz um resultado.
Durante este processo o rd é encaminhado para a write data que tem o registo para o qual o resultado será guardado.
Para instruções de load o que será preciso?
Um registo de destino e um registo de origem.
Para instruções de store o que será preciso?
Um um registo de origem e um registo de destino.
Nas intruções de load/store como se divide cada parametro em termos de bits?
6 - opcode
5 - para os registers, neste caso são apenas dois
16 - para o offset que será direcionado para o sign-extender
Tendo em conta a aquitetura do MIPS, como é que se dá o processo das instruções de branching?
A informação é lida dos registos, enviada à ALU e é feita a comparação dos números.
Como as instruções branch são compostas de 6 bits de opcode, e 5 para os dois registos deixa, nos com 16 bits para o offset.
Este offset é sign extended e depois é remetido para um shift left 2, porque os endereços são em bytes, ou seja, normalizamos os 16 bits, os quais permitem um salto de apenas 4 endereços.
Essa normalização é somada com o contador (PC) o que nos leva ao próximo endereço a ser executado