Você está na página 1de 5

UNIVERSIDADE FEDERAL DE SÃO CARLOS

Centro de Ciências Exatas e de Tecnologia


Departamento de Computação

Laboratório de Arquitetura e Organização de Computadores 1

Prática 7 ​– Processador MIPS​ ​Monociclo

Professor:​ Artino Quintino da Silva Filho

Integrantes do grupo
Isabela Vieira Magalhães, 769755 - Bacharelado em Ciência da Computação

São Carlos, 19 de dezembro de 2020


1. Introdução
O processador MIPS monociclo, tem como característica a execução de uma
instrução por ciclo e na presente prática seu funcionamento será demonstrado com um
pequeno programa em que dois registradores serão carregados com valores por meio do
addi​, serão somados e colocados num terceiro registrador cujo conteúdo será gravado na
memória por meio da instrução​ load word​.

2. Descrição da execução do experimento

2.1 Dispositivo
O ambiente utilizado para o desenvolvimento da prática foi o ​Eda Playground
(<​https://www.edaplayground.com/​>) com o simulador ​Aldec Riviera Pro 2020.04.

2.2 O programa
Para a execução do experimento, foi implementado um processador MIPS
monociclo (em que cada instrução é executada em um ciclo de clock) cujos códigos
vieram do material da prática, foi feito o pequeno programa em ​Assembly ​abaixo:

addi $2, $0, 5 # $2 = 5 20020005


addi $3, $0, 12 # $3 = 12 2003000c
add $4, $2, $3 #$4 = $2 + $3 00432020
sw $4, 60($0) # [60] = 17 ac04003c

A partir dele foi gerado um arquivo ​memfile2.dat contendo as instruções em


hexadecimal e esse, por sua vez, foi incluído com as devidas modificações para ser
testado no processador dado no material.
O código dos circuitos bem como o ​testbench modificado e o arquivo
memfile2.dat​ podem ser acessados e executados no link:

● MIPS monociclo

1
3. Avaliação dos resultados do experimento
Para melhor visualização dos resultados obtidos pelas formas de onda, é
recomendado testar o código no link. A saída gerada pelo kernel foi ​"Simulation
succeeded"​ e ao longo desse tópico será descrito como essa saída está correta.

3.1 Instrução ADDI


Figura 1. ​Forma de onda das instruções ​addi e​ ​add​.

Fonte:​ elaborado pela autora no ​EDAplayground​ (2020).


Nas primeiras duas instruções, é usada a instrução addi ​para carregar em dois
registradores os números 5 e 12, nessa ordem, como é possível verificar pela figura 1,
onde ​writedata ​e ​aluout ​tem valor 5 (ou 101), isso porque como é uma instrução de
soma, a saída da ULA será a soma do valor imediato 5 com o conteúdo do registrador
$0 (que tem valor fixo igual a 0), o mesmo ocorre para o número 12 (ou 1100), que está
em ​writedata somente na próxima instrução, mas que mostra que tanto 5 quanto 12
foram carregados para os registradores correspondentes.

3.2 Instrução ADD


Na terceira instrução, o conteúdo dos registradores ​$2 e $3 ​são somados e o
valor armazenado no registrador ​$4, ​então como pode ser verificado na Figura 1, o
conteúdo de ​aluout para a terceira instrução é justamente a 5 + 12 = 17 (ou 10001).
Menção ao​ pc​ que é sempre ​pc + 4,​ então nessa terceira instrução seu valor é 12.

2
3.2 Instrução SW
Figura 2.​ Formas de onda da instrução ​sw​.

Fonte:​ elaborado pela autora no ​EDAplayground​ (2020).


Na quarta e última instrução do programa, o conteúdo da soma armazenado no
registrador $4 é carregado na memória, onde o salto de 60 em relação ao registrador $0
é calculado pela ULA, sendo justamente a saída ​aluout (​60, pois 60 + 0 = 60 ou
111100), como pode ser visto na Figura 02. O sinal ​memwrite é 1, pois o ​writedata ​será
escrito na posição de memória 60, onde writedata é​ justamente 17, o valor contido em
$4.

4. Análise crítica e discussão


O desenvolvimento da atividade ocorreu bem, apesar de o site disponibilizado
no material da prática não ter sido utilizado para a realização desta. Foi possível
verificar todo o funcionamento de um processador MIPS monociclo, onde a cada ciclo
de ​clock u​ ma das instruções era executada. A elaboração do programa em ​Assembly
também ocorreu bem e foi uma ótima forma de ver a ligação entre o uso do ​assembler e
da simulação em​ system verilog​.
No geral, resultados mais detalhados e assertivos foram obtidos, em relação às
práticas anteriores por conta do uso tanto da memória de dados quanto da memória de
instrução (​memfile2.dat​), aproximando-se muito mais do funcionamento completo de
um processador.

Referências bibliográficas (padrão ABNT).

NERIS, L. et al. ​Processador MIPS Monociclo​. São Carlos: Departamento de


Computação - UFSCar, 2020.

3
Disponível em:
https://ava2.ead.ufscar.br/pluginfile.php/257686/mod_resource/content/1/AtividadePr%
C3%A1tica_13-14.pdf​. Acesso em: 19/12/2020.

Você também pode gostar