Skip to content

Simulador do Processador R8 com a implementação de uma unidade externa (co-processador) para processamento matricial 4x4.

Notifications You must be signed in to change notification settings

tay-assis/SimulatorR8

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Simulador do Processador R8 com MPU Implementada

Projeto final desenvolvido na disciplina prática de arquitetura de computadores com o objetivo de implementar um co-processador que realiza operações matriciais (MPU).


Passo 1: Desenvolvimento da MPU

A Unidade de Processamento Matricial (MPU) será desenvolvida como um periférico mapeado em memória.

1.1. Descrição Geral da MPU

  • O tamanho da MPU é de 64 endereços.
  • Cada endereço comportará um dado de 16 bits, utilizando o formato complemento de 2 para representar números inteiros.

1.2. Mapa de Memória da MPU

  • Região de Comando (Comunicação com a CPU): Endereços 0 a 15.
  • Matriz C[4:4] (Resultado): Endereços 16 a 31.
  • Matriz A[4:4] (Entrada 1): Endereços 32 a 47.
  • Matriz B[4:4] (Entrada 2): Endereços 48 a 63.

1.3. Comandos Implementados pela MPU

A MPU deverá suportar os seguintes comandos:

  1. Operações Matriciais:

    • add: Executa C[4:4] = A[4:4] + B[4:4].
    • sub: Executa C[4:4] = A[4:4] - B[4:4].
    • mul: Executa C[4:4] = A[4:4] * B[4:4] (produto matricial).
    • mac: Executa C[4:4] = C[4:4] + A[4:4] * B[4:4] (produto acumulado).
  2. Manipulação de Matrizes:

    • fill M, n: Preenche a matriz M[4:4] com o valor inteiro n.
    • identity M, n: Define a matriz M[4:4] como uma matriz identidade, multiplicada pelo valor n.
  3. Leitura e Escrita:

    • Load: Lê o dado de uma matriz qualquer (A, B ou C) através do endereço passado pela CPU.
    • Store: Escreve o dado de uma matriz qualquer (A,B ou C) através do endereço passado pela CPU.

Passo 2: Implementação de Interrupção no R8

  • Instrução INTR Rs1:
    • Ativa o sinal intr_in no processador.
    • O registrador Rs1 contém o endereço do tratamento da exceção.
    • A interrupção só é tratada se o conteúdo de Rs1 for diferente de zero.
    • Quando tratada:
      • O endereço PC+1 é armazenado na pilha.
      • O processador salta para o endereço contido em Rs1.
      • Após o tratamento o registrador é zerado.

Passo 3: Integração do Processador R8 com a MPU

  • A CPU se comunica com a MPU utilizando os sinais: address, data, ce_n, we_n e oe_n.
  • As operações são realizadas com base nos endereços enviados pela CPU para a MPU.
  • Foi desenvolvido um código em assembly para realizar o cálculo: Z[4:4] = ((k1 * X[4:4]) * Y[4:4]) + (k2 * Z[4:4])
  • Os valores das matrizes Z, X, Y e das variáveis k1 e k2 são números inteiros randomizados, gerados em um site, e armazenados na memória RAM do projeto.
  • O código completo em assembly está disponível no arquivo Code_R8 no repositório.

Observação: A interrupção não foi utilizada nesse cálculo.


Observações importantes:

O processador R8 foi desenvolvido na PUC-RS, e todas os recursos do projeto estão disponíveis no site oficial: R8 Processor Core

About

Simulador do Processador R8 com a implementação de uma unidade externa (co-processador) para processamento matricial 4x4.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages