Skip to content

Componentes Internos Principais

Diogo Valadares Reis dos Santos edited this page Aug 26, 2025 · 1 revision

[English]

[← Página Anterior | Próxima Página →]

Introdução

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:

Visão Geral das Conexões de Barramentos

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.

Diagrama da Arquitetura Interna do DRISC-V

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.

Temporização e Pipeline

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.

Clone this wiki locally