Introdução ao RISC-V
Conjuntos de Instruções do Processador - ISA
-
"The portion of the computer that is visible to the programmer or the compiler writer." - Computer Architecture: A quantitative approach
-
"An instruction set architecture (ISA) is an abstract model of a computer. It is also referred to as architecture or computer arquiteture." - Wikipedia
-
"A contract HW and SW designers agreed to obey" - Minha definição de uma linha
-
"Um contrato em que os projetistas de hardware e software concordaram em obedecer" - Minha definição de uma linha
Arquitetura vs Microarquitetura
- Arquitetura é o modelo
-
x86, ARM, RISC-V, Power
-
Microarquitetura é a implementação
-
Intel i7 geração 11, AMD Ryzen 3, ARM Cortex-A53, RISC-V RV32IMAC, PowerPC 970
-
Conjunto de instruções pode ser visto como a borda
- Pode facilitar ou dificultar a implementação em cada um dos lados
ISA é importante?
Ambientes de Execução
Tipo | Sistema Operacional | Acesso aos Periféricos | Ambiente | Exemplo |
---|---|---|---|---|
Bare metal | Não | Direto | Memória | Arduino |
Sistema Operacional | Sim | Indireto | Processo | Windows, Linux, iOS, Android |
Hypervisor | Sim | Indireto | Máquina Virtual | VirtualBox, VMware, QEMU |
Emulador | Sim | Indireto | Processo | MARS, QEMU |
RISC-V: Características gerais
- Conjunto de instruções
- Aberto
- Modularizado
- Virtualizável
- Licença de uso
- Aberta
- Não patenteada
- Espaço de endereçamento de 32, 64 ou 128 bits
- Registradores de 32, 64 ou 128 bits
Registradores do processador
- Registrador é um espaço de dados dentro do próprio processador que será utilizado para armazenar valores
- Nos seus primeiros programas, todas as variáveis estarão armazenadas em registradores
- O processador possui 32 registradores de uso geral
- No início da disciplina, utilizaremos apenas alguns deles
- zero: registrador que tem sempre o valor zero
- t0 - t6: 7 registradores para valores temporários
- s0 - s11: 12 registradores para valores salvos
Primeiros formatos básicos das instruções
- mnemônico, rd, rs1, rs2
- mnemônico rs, rs1, imm
mnemônico é o nome da instrução :warning: Cada instrução tem um e somente um formato, logo você não pode somar 3 valores utilizando apenas uma instrução como a primeira acima
Instruções Aritméticas
Instrução | Formato | Uso |
---|---|---|
ADD | R | ADD rd, rs1, rs2 |
ADD imediato | I | ADDI rd, rs1, imm |
SUBtract | R | SUB rd, rs1, rs2 |
Load Upper Immediate | U | LUI rd, imm |
Exemplos
- x = y + z
- x = x + y
- x = y + 7
Mais exemplos
- x = y - z
- x = x - y
- x = y - 7
:warning: Não existe subi. Para subtrair um valor imediato, utilize addi com um valor negativo
Compondo um programa
- No simulador que utilizaremos nessa parte inicial da disciplina, o programa deve ser escrito em um arquivo de texto com extensão .s e deve começar declarando o label main. O programa deve terminar com a instrução ret.
- label: indica a posição de um ponto no programa
- O que faz esse programa simples?
Como ler os valores da entrada e escrever na saída?
- Para ler um valor inteiro, é necessário utilizar as duas instruções abaixo. O resultado ficará no registrador a0:
- Para escrever um valor inteiro, é necessário utilizar as duas instruções abaixo. O valor deve estar no registrador a0:
Colocando tudo junto
- O programa abaixo lê dois valores inteiros e escreve a soma deles na saída:
Note que os registradores t do código original foram trocados por s ⚠️ O registrador a0 é o único que pode ser utilizado para leitura e escrita de valores