organização de computadores
Professor: Ney Calazans
2013/1
Desenvolvimento do T3:
Para cada instrução analisamos o percurso de dados necessário para realizar a tarefa. Feito isso, estruturamos os passos de acordo com os ciclos existentes no sistema.
A implementação pode ser vista através do arquivo mips_multiciclo.vhd
Novas instruções que foram implementadas seguem abaixo:
SH
sh Rt,offset(Rs)
Os dados a sererm gravados saem do Banco de Registradores (registrador de endereço adRT) e seguem para a entrada de dados da Memória de Dados. O endereço de memória a ser gravado é formado pela operação de soma (por default, como explicado no próprio VHDL) da ULA entre o valor de RS e offset. Modificamos também, o sinal BW para BHW (para funcionar precisamos alterar o sinal de 1 bit para 2 bits), o qual nos permite saber se o dado a ser gravado na memória é de 8 bits - 1 byte, 1 posição de memória - ou 16 bits – 2 bytes, half word, 2 posições de memoria – ou 32 bits – 4 bytes, 1 word, 4 posições de memória.
Abaixo como mostra a figura, o caminho em rosa o caminho percorrido pelos dados significativos da instrução:
Abaixo contém trechos do código alterado para funcionar com a instrução SH:
Foi modificado o test-bench também, foram alterados também os port map's, mas não colocamos aqui:
LH
lh Rt,offset(Rs)
Para implementarmos a instrução LH, como a função dessa instrução é buscar dado da Memória de Dados e armazenar no Banco de Registradores, utilizamos o que já sabíamos da base existente. Em LH, há a extensão de sinal dos 16 bits menos significativos.
Abaixo como mostra a figura, o caminho em verde percorrido pelos dados significativos da instrução:
Abaixo contém trechos do código alterado para funcionar com a instrução LH: