Skip to content

guiogigo/MEUPS

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

⚙️ MEUPS — Processador Monociclo em Assembly

Status Arquitetura Assembly UFCA

Implementação de um processador monociclo com 16 registradores, capaz de executar instruções em código hexadecimal e programas em Assembly, desenvolvido como projeto final da disciplina de Arquitetura e Organização de Computadores.


📖 Sobre o Projeto

O MEUPS (Micro Engine for Universal Processing Simulation) é um processador simplificado projetado para fins acadêmicos, com suporte a execução de instruções básicas inspiradas na arquitetura MIPS.

O sistema é capaz de:

  • Executar instruções em formato hexadecimal
  • Manipular memória de dados
  • Realizar operações aritméticas e lógicas
  • Executar algoritmos mais complexos (ex: multiplicação de matrizes NxN)
  • Exibir resultados em um display integrado (HUB 4x4)

👨‍💻 Autores

  • Guilherme Viana Batista
  • Antônio José Monteiro Neto

🧠 Arquitetura do Processador

🔹 Características Gerais

  • Arquitetura monociclo
  • 16 registradores
  • Execução sequencial de instruções
  • Unidade de controle simplificada
  • Suporte a operações com imediato e registradores

🧾 Conjunto de Instruções

O MEUPS possui 14 instruções principais, incluindo operações customizadas.

🔧 Instruções Personalizadas

Instrução Descrição
addn Soma um valor imediato a um registrador
lwn Load baseado na soma de dois registradores
print Exibe valor da memória no display (HUB)

📌 Instruções Base (estilo MIPS)

Incluem variações de:

  • add, sub, mult, div
  • beq, j
  • lw, sw, li, move

⚠️ Diferença importante: o registrador de destino aparece por último na instrução.


🗂️ Registradores

Nome Código
v0 0
a0–a2 1–3
t0–t7 4–11
s0–s3 12–15

💻 Exemplo de Execução

🔢 Multiplicação de Matrizes 4x4

O projeto inclui um programa que:

  1. Cria duas matrizes 4x4 na memória
  2. Preenche com valores sequenciais
  3. Realiza multiplicação matricial
  4. Armazena o resultado
  5. Exibe no display

🧮 Estratégia Utilizada

  • Uso de loops aninhados (i, j, k)

  • Cálculo manual de endereços:

    • sll para multiplicações
    • add para offsets
  • Acumulação do resultado em registrador temporário


🔁 Fluxo do Algoritmo

Para cada linha i:
  Para cada coluna j:
    resultado[i][j] = 0
    Para cada k:
      resultado[i][j] += A[i][k] * B[k][j]

⚙️ Código Assembly

O projeto inclui:

  • Inicialização de matrizes na stack
  • Loops para preenchimento
  • Algoritmo completo de multiplicação
  • Impressão formatada dos resultados

🔢 Código em Hexadecimal

Além do Assembly, o projeto também apresenta a versão em código de máquina (hex) executável pelo processador MEUPS.

Exemplo:

600c0000
60010001
60040004
...

🖥️ Saída

Os resultados são exibidos através de:

  • Display 4x4 (HUB)
  • Impressão sequencial dos valores da matriz resultante

🚀 Objetivos de Aprendizado

  • Projeto de arquitetura de processadores
  • Implementação de ISA (Instruction Set Architecture)
  • Execução de instruções em baixo nível
  • Tradução Assembly → Código de Máquina
  • Manipulação manual de memória e registradores

📌 Diferenciais do Projeto

  • Criação de instruções personalizadas
  • Execução de algoritmo complexo (multiplicação de matrizes)
  • Integração com saída física (display HUB)
  • Simulação completa de um processador funcional

🏫 Contexto Acadêmico

Disciplina: Arquitetura e Organização de Computadores Curso: Ciência da Computação Instituição: Universidade Federal do Cariri (UFCA) Semestre: 2023.2


📄 Licença

Este projeto é acadêmico e não possui licença definida.

About

Processador monociclo com 16 registradores e conjunto de instruções próprio, capaz de executar código em Assembly e hexadecimal, incluindo algoritmos como multiplicação de matrizes NxN.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors