5. A arquitetura MIPS Flashcards
Quais são as características das instruções tipo-R?
Em termos de distribuição de bits, tem-se:
opcode - 6 bits
rs, rt, rd - 5 bits cada
shift amnt - 5 bits
function - 6 bits
rs e rt são os destinos fonte, onde rs é o primeiro e rt o segundo.
rd é o registo de destino.
opcode é o código de operação. Tem o valor 0 nas instruções tipo-r.
funct é o parâmetro que de acordo com o opcode, especifica a operação a ser executada.
Como nas intruções tipo-r o opcode é 0, a operação é sempre determinada pela funct.
Quais são as características das instruções tipo-I?
Em termos de distribuição de bits, tem-se:
opcode - 6 bits
rs, rt- 5 bits cada
immediate constant - 16 bits
Os rs e rt são os destinos fonte, onde rs é o primeiro e rt o segundo.
O opcode é o código de operação. Tem um valor diferente de zero, pois nas intruções do tipo-I está sempre presente.
Quais são as características das instruções tipo-J?
Em termos de distribuição de bits, tem-se:
opcode - 6 bits
address - 26 bits
O opcode é o código de operação. No caso das intruções tipo-j está reservado ao jump.
O address é o destino em memória, ao qual são destinados 26 bits.
De um modo geral, como se procede à decodificação de instruções em código máquina?
Escrevê-mos todos os bits, separamos pela quantidade respetiva que cada operação aloca a diferentes partes da instrução e tentamos ver, através de uma tabela, qual é o tipo de instrução que está a ser executada.
Nas intruções tipo-I, os números estão representados em quê?
Em complemento para 2.
Qual é o efeito da instrução lógica AND em MIPS?
Mascara bits.
Ex:
Mascarar todos os bytes exceto o menos significativo
de uma palavra
0xF234012F and 0x000000FF = 0x0000002F
Qual é o efeito da instrução lógica OR em MIPS?
Combina bitfields
Ex:
Combinar 0xF2340000 com 0x000012BC:
0xF2340000 or 0x000012BC = 0xF23412BC
Qual é o efeito da instrução lógica XOR em MIPS?
Inverte com ‘1’, não-inverte com ‘0’
Ex:
0xFFFF0000 xor 0x46A1F0B7
= 0xB95EF0B7
Qual é o efeito da instrução lógica NOR em MIPS?
Força a ‘0’ com ‘1’, inverte com ‘0’
Ex:
0xFFFF0000 or 0x46A1F0B7
= 0x00000F48
O que faz a instrução shift left logical (sll)? A que é equivalente?
Desloca à esquerda e preenche com zeros os bits à direita
Multiplicar por 2^N.
O que faz a instrução shift right logical (srl)? A que é equivalente?
Desloca à direita e preenche com zeros os bits à esquerda
Dividir por 2^N.
O que faz a instrução shift right arithmetic (sra)? A que é equivalente?
Shift à direita e preenche com o bit de sinal os bits à esquerda
Dividir por 2^N.
Em que consiste a implementação single-cycle?
Single-cycle: A execução de cada instrução é efectuada
num único ciclo de relógio (clock). Todas as instruções
ocupam o mesmo intervalo de tempo.
Cada instrução é efetuada num só ciclo do relógio, ou seja, todas as instruções ocupam o mesmo espaço de tempo.
Em que consiste a implementação multi-cycle?
Cada instrução é dividida em passos mais simples, onde cada uma das intruções irá ocupar um ciclo de relógio maior. Ou seja, as intruções irão ter difrentes tempos de execução.
Em que consiste a implementação pipelined?
Pipelined: A execução de cada instrução é dividida numa
série de passos mais simples; o processador executa múltiplas instruções em simultaneo (em paralelo), aumentando, deste modo, a performance.
Cada instrução é dividida em passos mais simples, estas irão ser depois executadas em simultaneo pelo CPU, aumentando a performance.
Como funciona um CPU MIPS a nivel da sua microarquitetura?
O CPU MIPS interage com duas memórias.
• Após o Reset, o registo PC (Program Counter) é carregado com
o endereço da Memória de Instruções, para ler a primeira
Instrução a ser executada pelo CPU.
• O CPU gera os sinais de Controlo necessários à execução da
Instrução, a qual pode ou não envolver a Memória de Dados.
O CPU interage sempre com duas memórias. Sempre que se dá o reset (sendo este, por simplificação, o passo inicial) o registo do PC é carregado com o endereço de memória de instruções, ou seja, vai ler a primeira instruição a ser executada.
De seguida o CPU envia sinais de controlo, os necessários para a execução da instrução, os quais podem ou não envolver a memória de dados.
O que é, em concreto o Datapath?
Quais são os seus elementos de estado? Descreva cada um deles.
São todos os componentes que armazenam e/ou processam dados.
Elementos de estado:
Program Counter (PC) - É um registo de 32-bits normal; A saída (PC) é o endereço da instrução corrente; A entrada (PC’) é o endereço da instrução seguinte.
Memória de Instruções - Tem um único porto de leitura.
Memória de Dados - Tem um único porto de leitura
ou de escrita e um sinal de
WriteEnable.
Banco de 32 Registos- Tem dois portos de leitura e um porto de escrita. As instruções do tipo-R lêm os operandos dos portos (RD1 e RD2) e
escrevem o resultado no porto (WD3), e.g., add $t2, $t1, $t0.
Qual é o propósito da unidade de controlo dentro do CPU?
Intruir a Datapath.
Como funciona a leitura de instrução (Fetch)?
O PC gera o endereço (A) para a Memória de Instruções.
De seguida esse endereço vai ser descodificado e interpretado, ou seja, vai ser lido o opcode, isto é, os bits 31:26 vão ser interpretados.
Os bits 25:21, alocados para o rd, vão entrar na porta A1 do Register File e vão ser transmitidos para a saída RD1(ReadData1).
O próximo passo será dar sign-extend aos bits alocados para o immediate, de 16 bits para 32.
Agora temos os dois registos encaminhados, ou seja, ambos passaram pela Register File, mas um deles, o immediate, foi reencaminhado para a unidade de sign-extend e o outro passo diretamente para ALU, através do Register File, para a ALU, esta faz a operação necessária e dá output ao resultado.
Depois de termos o resultado, o valor lido da memória é escrito no registo rt, com os bits 20:16 reservados, usando o Register File.
Por fim, falta atualizar o PC, somam-se 4 para obter a próxima instução.
Funcionamento geral do single-cycle datapath:
Começamos por ler a instrução da memória(Fetch).
Depois os registos são lidos. Onde as instruções são decodificadas, isto passa-se na Register File.
Normalmente, depois de descodificados os registos estes são enviados para a ALU e só aí são ou não enviados para Data Memory, se for o caso de ser guardado algum resultado, ou no caso de ser preciso ir buscar algum resultado à memória.
Depois a informação volta ao Register File, para ser WriteBack nos registos que foram chamados se for o caso, ou seja, normalmente são 3, se for o caso de se fazer uma operação lógica num deles e se tiver de se guardar num deles o resultado lógico então o que se faz é no WriteBack o registo que não continha os registos de operações vai ser usado nesta fase.
Funcionamento geral do single-cycle datapath:
Começamos por ler a instrução da memória(Fetch).
Depois os registos são lidos. Onde as instruções são decodificadas, isto passa-se na Register File.
Normalmente, depois de descodificados os registos estes são enviados para a ALU e só aí são ou não enviados para Data Memory, se for o caso de ser guardado algum resultado, ou no caso de ser preciso ir buscar algum resultado à memória.
Depois a informação volta ao Register File, para ser WriteBack nos registos que foram chamados se for o caso, ou seja, normalmente são 3, se for o caso de se fazer uma operação lógica num deles e se tiver de se guardar num deles o resultado lógico então o que se faz é no WriteBack o registo que não continha os registos de operações vai ser usado nesta fase.
Falando sobre a Unidade de Controlo, em específico, quais são as suas características?
A unidade de controlo gera os sinais que controlam todo o datapath, usando os bits que recebe do opcode da funct da instrução.
No caso de instruções do Tipo-R, o opcode não é suficiente, precisam do campo funct para determinar qual a operação da ALU.
Está dividida em duas partes, uma que se encarrega de descodificar o opcode e outra que está encarregue de descodificar o parâmetro da funct.
O main decoder, responsável pela descodificação do opcode, gera dois tipos de sinais, de seleção dos multiplexers e de seleção da memória.