-
Notifications
You must be signed in to change notification settings - Fork 0
Controlador CSR
[English]
[← Página Anterior | Próxima Página →] (Esta página está em construção)
O Controlador de Registradores de Controle e Status (CSR) é o maior componente do DRISC-V. Ele é responsável por gerenciar instruções de sistema, armazenar os CSRs e lidar com interrupções e exceções. Sua implementação é opcional, pois não afeta diretamente a execução de instruções padrão.
O Controlador de CSR inclui duas interfaces de comunicação com o Controlador de Operações e com o Contador de Programa. Essas interfaces fornecem dados essenciais para detectar e tratar exceções dentro do sistema. A tabela a seguir resume essas conexões:
| Sinal | Conectado a | Entrada/Saída | Descrição |
|---|---|---|---|
| Instrução Atual | Controlador de Operações | Entrada | Serve como Trap Value para certas exceções. Parâmetros como funct3 são extraídos dela. |
| Próxima Instrução | Controlador de Operações | Entrada | Decodificada em instruções de sistema e endereços de CSR. |
| Próxima Instrução Decodificada | Controlador de Operações | Entrada | Usada para verificar se o próximo opcode é válido ou uma instrução de sistema. |
| Carga, Armazenamento e Salto | Controlador de Operações | Entrada | Dispara exceções de desalinhamento causadas por essas instruções. |
| Exceção | Controlador de Operações | Saída | Sinaliza que uma exceção ocorreu. |
| Próxima Carga de Sistema | Controlador de Operações | Saída | Usada para carregar CSRs mapeados na memória externa, acionando uma instrução de carga. |
| Salto de Sistema | Controlador de Operações e Contador de Programa | Saída | Sinaliza um salto usando o Endereço de Destino do Sistema. |
| Carga de Sistema | Contador de Programa | Saída | Sinaliza ao PC para usar o Endereço de Destino do Sistema para carregamento. |
| Endereço Calculado | Contador de Programa | Entrada | Contém o endereço calculado pelo PC para saltos e operações de carga/armazenamento. |
| Endereço de Destino do Sistema | Contador de Programa | Saída | Contém o endereço usado para saltos e cargas de sistema. |
Além dessas conexões, o Controlador de CSR também se comunica com os Barramentos A e C para instruções de manipulação de CSR. Ele também recebe sinais de Fase e Interrupção.
Na imagem do componente, é possível ver que ele contém o valor da maioria dos CSRs listados na Página de ISA Disponível. Nem todos são de 32 bits, e isso ocorre porque nem todos os bits precisam ser armazenados — alguns podem ser fixados em zero. Os CSRs que não estão presentes não são obtidos por registradores. São eles: o mip, que é obtido pelos sinais de interrupção, e o time, que é mapeado na memória e obtido de um dispositivo externo.
Antes de analisar como o circuito é configurado internamente, é importante entender a lógica do que está acontecendo.
O Controlador de CSR pode ser dividido em uma rotina síncrona e uma rotina assíncrona.
Se o sistema estiver em estado de reset:
Inicializar todos os registradores com seus valores padrão
Senão, se o sistema estiver na fase 2:
Se houver uma interrupção OU uma exceção:
Executar a rotina de tratamento de trap
Senão, se a instrução for MRET:
Executar a rotina MRET
Senão, se a instrução for uma operação de CSR E o CSR for válido:
Atualizar o CSR selecionado com o novo valor calculado
Se NÃO houver exceção:
Incrementar o contador de instruções (INSTRET = INSTRET + 1)
Senão, se o sistema estiver na fase 1 E a instrução for uma operação de CSR E o CSR for válido:
Definir o barramento C com o valor do registrador selecionado
Se o sistema NÃO estiver em estado de reset:
Incrementar o contador de ciclos (CYCLE = CYCLE + 1)
Entradas: Registrador, Dados
Saída: Novo valor de CSR
Se o modo de operação for "escrita":
Retornar Dados
Senão, se o modo for "set":
Retornar (Registrador OU Dados)
Senão, se o modo for "clear":
Retornar (Registrador E NÃO Dados)
Senão:
Não retornar valor
Inicializar sinais assíncronos:
Interrupção ← FALSO
Exceção ← FALSO
Causa ← Nenhuma
Valor ← 0
Se interrupções estiverem habilitadas OU o sistema estiver em Modo Usuário:
Se a interrupção X estiver habilitada E pendente:
Interrupção ← VERDADEIRO
Causa ← Interrupção X
Se Interrupção for VERDADEIRA:
Se MTVEC estiver em modo vetorizado:
Endereço de Destino ← MTVEC + (Causa × 4)
Senão:
Endereço de Destino ← MTVEC
Senão, se qualquer condição de exceção for VERDADEIRA:
Exceção ← VERDADEIRA
Causa ← Código da exceção
Valor ← Instrução atual, endereço calculado ou 0
Senão, se a instrução for MRET:
Endereço de Destino ← MEPC
Se Exceção for VERDADEIRA:
Endereço de Destino ← MTVEC
O Controlador de CSR pode ser dividido em múltiplas partes.
-
- 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