Pular para o conteúdo

Visão Geral do RISC-V

O RISC-V é uma Arquitetura de Conjunto de Instruções (ISA) aberta baseada nos princípios de Reduced Instruction Set Computing (RISC)

Ela define como o software se comunica com o processador através de:

  • instruções de máquina
  • registradores
  • memória

O ÆRIS implementa o conjunto RV32I, que é o conjunto base inteiro da arquitetura RISC-V e representa o ponto de partida mais comum para aprendizado da arquitetura


O simulador implementa RV32I, o conjunto base inteiro da arquitetura RISC-V

PropriedadeValor
Tamanho da palavra32 bits
Largura dos registradores32 bits
Número de registradores32
Tamanho das instruções32 bits
Conjunto de instruçõesBase inteira

O conjunto RV32I inclui instruções para:

  • operações aritméticas
  • acesso à memória
  • desvios condicionais
  • saltos
  • chamadas de sistema

O RISC-V define 32 registradores de propósito geral:

x0 - x31

Cada registrador armazena um valor de 32 bits

Além do nome numérico, muitos registradores possuem nomes ABI, que indicam seu uso convencional

Registradores RISC-V

RegistradorNome ABIUso típico
x0zeroconstante zero
x1raendereço de retorno
x2spponteiro da pilha
x3gpponteiro global
x4tpponteiro de thread
x5–x7t0–t2temporários
x8–x9s0–s1registradores salvos
x10–x17a0–a7argumentos de função
x18–x27s2–s11registradores salvos
x28–x31t3–t6temporários

Todas as instruções RV32I possuem 32 bits, mas a organização interna desses bits depende do formato da instrução

Os principais formatos são:

FormatoFinalidade
R-typeoperações entre registradores
I-typeoperações com imediato e loads
S-typestores
B-typedesvios condicionais
U-typeimediato superior
J-typesaltos

Formatos de Instrução

Cada formato posiciona os campos da instrução em diferentes posições dentro da palavra de 32 bits

Campos comuns incluem:

  • opcode
  • registradores fonte
  • registrador destino
  • imediato

O Program Counter (PC) armazena o endereço da instrução atual

Normalmente: PC = PC + 4

Isso ocorre porque cada instrução ocupa 4 bytes.

Instruções de branch e jump modificam o valor do PC para alterar o fluxo de execução do programa


A instrução ecall permite que o programa solicite serviços ao ambiente de execução

No ÆRIS, as syscalls são utilizadas para interagir com o console

Exemplo:

li a7, 1
li a0, 42
ecall

Esse código imprime o inteiro armazenado em a0