-
Notifications
You must be signed in to change notification settings - Fork 0
Componentes Internos Principais
[English]
A arquitetura DRISC-V é composta por seis componentes internos: a ULA, o Banco de Registradores, o Contador de Programa, o Buffer de Entrada, o Controlador de Operações e o Controlador de CSR.
Esses componentes se comunicam por meio de cinco barramentos internos. Os barramentos A, B e C fornecem acesso direto ao Banco de Registradores (A e B são usados para leitura de valores, enquanto C é usado para escrever os resultados de volta). O Barramento Imediato fornece o valor imediato de 32 bits extraído da instrução atual. Por fim, o Barramento do Contador de Programa carrega o endereço da instrução atual a partir do Contador de Programa.
Há também dois barramentos usados para comunicação externa: o Barramento de E/S, utilizado para transferências de dados, e o Barramento de Endereço, que fornece o endereço atualmente em uso. O Barramento de E/S se conecta ao barramento B e ao Buffer de Entrada. O endereço atual pode indicar tanto o endereço da instrução atual quanto o endereço usado em instruções de carga e armazenamento.
A tabela a seguir resume todos os barramentos e os componentes aos quais estão conectados:
| Nome do Barramento | Fontes | Destinos |
|---|---|---|
| Barramento A | Banco de Registradores | ULA, Contador de Programa, Controlador de Operações, Controlador de CSR |
| Barramento B | Banco de Registradores | ULA, Barramento de E/S |
| Barramento C | ULA, Buffer de Entrada, Contador de Programa, Barramento Imediato, Controlador de CSR | Banco de Registradores |
| Barramento Imediato | Controlador de Operações | ULA, Barramento C |
| Barramento do CP | Contador de Programa | ULA, Controlador de CSR |
| Barramento de E/S | Dispositivos Externos, Barramento B | Dispositivos Externos, Controlador de Operações, Buffer de Entrada |
| Barramento de Endereço | Contador de Programa | Dispositivos Externos |
A imagem a seguir mostra um diagrama simplificado de todos os componentes internos, juntamente com suas conexões de barramento.
Nota: Existem barramentos curtos conectando o Controlador de CSR tanto ao Controlador de Operações quanto ao Contador de Programa. Eles foram omitidos do diagrama por serem altamente especializados e não fazerem parte do fluxo geral de dados.
Ambas as simulações foram configuradas para que o Controlador de CSR possa ser facilmente removido. Isso permite uma configuração de sistema mais simples e desativa as extensões U, Zicsr e Zicntr.
O DRISC-V é uma arquitetura com pipeline, o que significa que múltiplas etapas do processamento de instruções são executadas em paralelo. Ele utiliza um pipeline de 3 ciclos, com cada ciclo dividido em 2 fases. Abaixo está uma representação aprimorada dos estágios do pipeline:
| Ciclo | Fase 1 | Fase 2 |
|---|---|---|
| 1 | Busca de Instrução (IF) | Decodificação de Instrução (ID) |
| 2 | Execução (EX) | Acesso à Memória ou Escrita em Registrador (MEM/WB) |
| 3 | Escrita de Registrador após Load (WB) | — |
A dupla fase permite que o pipeline opere utilizando um único barramento para transferir instruções e dados vindos de fora do barramento de dados. Por exemplo, enquanto a primeira fase é usada para buscar a instrução na memória, a segunda fase permite que o mesmo barramento envie ou receba dados da memória durante instruções de carga e armazenamento.
Além disso, como os dados precisam ser buscados da memória nas instruções de carga durante a segunda fase do pipeline, e só então o tamanho válido (byte, short, word, com ou sem sinal) é calculado, a instrução de carga requer um ciclo extra para escrever o valor carregado nos registradores.
Abaixo está um exemplo de execução do pipeline ao longo do tempo. Note que não há necessidade de inserir bolhas para evitar conflitos. No entanto, após qualquer instrução de salto (JAL, JALR, Branch, MRET ou System Trap), a instrução que seria executada em seguida é descartada e não avança pelo pipeline.
| Tempo | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
|---|---|---|---|---|---|---|---|---|
| OP | IF-ID | EX-WB | — | |||||
| Load | IF-ID | EX-MEM | WB-__ | |||||
| OP | IF-ID | EX-WB | — | |||||
| Jump | IF-ID | EX-MEM | — | |||||
| OP | IF-ID | — | — | |||||
| Store | IF-ID | EX-MEM | — |
O processador também contém um pequeno componente que não foi mencionado anteriormente: o Controlador de Fase. Ele consiste em um flip-flop simples que alterna seu valor a cada ciclo de clock. A saída regular é usada para sinalizar a Fase 1, enquanto a saída negada representa a Fase 2.
-
- 1.1 Introduction
- 1.2 RISC-V Implementation
- 1.2.1 Available Instruction Set
- 1.2.2 Available Non-ISA Features
-
- 2.1 ALU
- 2.2 Register File
- 2.3 Program Counter
- 2.4 Input Buffer
- 2.5 RAM
- 2.6 Operation Controller
- 2.7 CSR Controller
-
- 3.1 Input Devices
- 3.1.1 Keyboard
- 3.1.2 Switches and Joystick
- 3.1.3 Random Number Generator
- 3.1.4 Real-Time Device
- 3.2 Output Devices
- 3.2.1 Screen
- 3.2.2 Terminal
- 3.2.3 Software Interrupt Register
- 3.1 Input Devices