# RISC e RISC V

## 🏹 Arquitetura RISC e RISC-V

### 🧠 Conceito Fundamental (RISC)

**RISC (Reduced Instruction Set Computer)** é um paradigma de arquitetura onde o conjunto de instruções é:

* **Pequeno e simples**
* **De tamanho fixo**
* **Executável em&#x20;*****um ciclo*****&#x20;sempre que possível**
* Suportado por **muitos registradores** e pipeline previsível

O foco principal é **eficiência**, não complexidade.

### 🧩 Características-Chave do RISC

| Característica              | Descrição                                   |
| --------------------------- | ------------------------------------------- |
| **Instruções Simples**      | Cada instrução faz uma única operação       |
| **Comprimento Fixo**        | 32 bits (típico), simplifica decodificação  |
| **Load/Store Architecture** | Apenas instruções de load/store acessam RAM |
| **Muitos Registradores**    | Reduzem dependência de memória              |
| **Pipeline**                | Simples, balanceado e previsível            |

Exemplos de arquiteturas RISC:

* **ARM**
* **MIPS**
* **SPARC**
* **PowerPC**
* **RISC-V**

## 🦾 RISC-V — A Evolução Moderna

### 🌟 O que é RISC-V?

RISC-V é uma **arquitetura aberta e livre de patentes**, desenvolvida na Universidade de Berkeley (2010+), com foco em:

* **Flexibilidade**
* **Extensibilidade**
* **Transparência**
* **Padronização aberta**

Ao contrário de ARM (licenciado) e x86 (fechado), **qualquer pessoa pode implementar RISC-V sem pagar royalties**.

### 🧬 Estrutura Modular de RISC-V

RISC-V não é “uma arquitetura”, mas um **conjunto base + extensões**:

#### Conjunto Base

| Nome       | Bits    | Descrição                           |
| ---------- | ------- | ----------------------------------- |
| **RV32I**  | 32-bit  | Base mínima para microcontroladores |
| **RV64I**  | 64-bit  | Base para PCs e servidores          |
| **RV128I** | 128-bit | Focado em aplicações futuras / HPC  |

#### Extensões Oficiais

| Extensão | Nome                  | Função                                        |
| -------- | --------------------- | --------------------------------------------- |
| **M**    | Multiply/Divide       | Inteiros                                      |
| **A**    | Atomic                | Locks, sincronização                          |
| **F**    | Floating Point 32-bit | IEEE754                                       |
| **D**    | Floating Point 64-bit | HPC e ciência                                 |
| **C**    | Compressed            | Instruções 16-bit (reduz footprint de código) |
| **V**    | Vetorial              | Processamento paralelo escalável              |

Exemplo de perfil comum:

```
RV64IMAFDC
```

### 🧱 Modelo de Registradores

#### Base RV64I (64 bits):

```
x0  = 0 (fixo)
x1  = ra (return address)
x2  = sp (stack pointer)
x3  = gp (global pointer)
x4  = tp (thread pointer)
x5-x7   = temporários
x8-x9   = saved registers
x10-x17 = argumentos de função (a0-a7)
x18-x27 = registradores salvos (s0-s9)
x28-x31 = temporários (t3-t6)
```

#### Registradores Vetoriais (Extensão V):

```
v0 - v31 (largura variável, 128–2048 bits)
```

### 🧰 Modos de Endereçamento (Simples e Direto)

```asm
LW x5, 8(x10)
```

Interpretação:

```
x5 ← MEM[x10 + 8]
```

Sem multiplicadores de índice, escala dinâmica ou modos complexos como x86 → **decodificação mais rápida**.

### ⚙️ Pipeline RISC-V (Genérico)

```mermaid
graph LR
    A[Instruction Fetch] --> B[Decode/Register Read]
    B --> C[Execute/ALU]
    C --> D[Memory Access]
    D --> E[Write Back]
```

* Fácil de escalar para arquitetura **superescalar ou fora de ordem**
* Ideal para microcontroladores ou servidores

### 🔥 Exemplo de Código RISC-V

```asm
loop:
    LW   x5, 0(x10)    ; carrega palavra
    ADD  x6, x6, x5    ; acumula
    ADDI x10, x10, 4   ; avança ponteiro
    BNE  x10, x11, loop
```

**Cada instrução faz&#x20;*****exatamente uma operação*****.**

### 🧠 RISC vs RISC-V vs x86

| Aspecto       | RISC-V               | ARM                   | x86                   |
| ------------- | -------------------- | --------------------- | --------------------- |
| Licenciamento | **Aberto / Livre**   | Licenciado            | Proprietário          |
| Instruções    | Pequenas & modulares | Pequenas & otimizadas | Complexas             |
| Código        | Leve e portátil      | Muito otimizado       | Binário denso         |
| Pipeline      | Simples e previsível | Avançado e eficiente  | Profundo e complexo   |
| Uso           | IoT → HPC            | Mobile → HPC          | Desktops → Servidores |

### 🚀 Onde RISC-V já está sendo usado

* **Microcontroladores IoT**
* **Placas de desenvolvimento (ex.: SiFive, ESP32-C3)**
* **Processadores embarcados automotivos**
* Servidores RISC-V começaram a aparecer em 2024+

Em nível agressivo:

* China está migrando **infraestrutura crítica** para RISC-V por razões estratégicas.

### 🔧 Ferramentas para Desenvolvimento RISC-V

**Compilar:**

```bash
riscv64-unknown-elf-gcc -o programa programa.c
```

**Desmontar:**

```bash
riscv64-unknown-elf-objdump -D programa
```

**Emular:**

```bash
qemu-riscv64 ./programa
```

**Debug:**

```bash
gdb-multiarch ./programa
```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://0xmorte.gitbook.io/bibliadopentestbr/conceitos/arquitetura-de-hardware/arquiteturas-de-processadores/risc-e-risc-v.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
