Índice:
- Etapa 1: Especificações
- Etapa 2: Visualização RTL de todo o sistema
- Etapa 3: ambiente de teste
- Etapa 4: arquivos anexados
Vídeo: Projeto de um controlador de cache simples em VHDL: 4 etapas
2024 Autor: John Day | [email protected]. Última modificação: 2024-01-30 11:37
Estou escrevendo isso com instruções, porque achei um pouco difícil obter algum código VHDL de referência para aprender e começar a projetar um controlador de cache. Portanto, desenvolvi um controlador de cache do zero e testei-o com sucesso no FPGA. Eu apresentei um controlador de cache mapeado direto simples aqui, bem como modelei um sistema de memória de processador inteiro para testar o controlador de cache. Espero que vocês achem isso útil como referência para projetar seus próprios controladores de cache.
Etapa 1: Especificações
Estas são as principais especificações do Controlador de Cache que iremos projetar:
- Mapeado direto. (acesse este link se estiver procurando por Controlador de cache mapeado associativo)
- Cache de bloqueio único em banco único.
- Política de gravação por meio de ocorrências de gravação.
- Alocação de No-Write ou Política de Write Around em falhas de gravação.
- Sem buffer de gravação ou outras otimizações.
- Tag Array é incorporado.
Além disso, iremos projetar um Cache Memory e um Main Memory System também.
As especificações padrão (configuráveis) da memória cache:
- Cache de banco único de 256 bytes.
- 16 linhas de cache, cada linha de cache (bloco) = 16 bytes.
As especificações da memória principal:
- Memória de leitura / gravação síncrona.
- Memória intercalada com vários bancos - quatro bancos de memória.
- Cada tamanho de banco = 1 kB cada. Portanto, tamanho total = 4 kB.
- Memória endereçável por Word (4 Bytes) com Barramento de Endereço de 10 bits.
- Maior largura de banda para leitura. Ler largura de dados = 16 bytes em um ciclo de clock.
- Largura de gravação de dados = 4 bytes.
NOTA: verifique o meu instrutível mais recente se você estiver procurando por um projeto de controlador de cache associativo de 4 vias
Etapa 2: Visualização RTL de todo o sistema
A representação RTL completa do Módulo Superior é mostrada na Figura (excluindo o processador). As especificações padrão para os barramentos são:
- Todos os barramentos de dados são barramentos de 32 bits.
- Barramento de endereço = Barramento de 32 bits (mas apenas 10 bits são endereçáveis aqui pela memória).
- Bloco de dados = 128 bits (Wide Bandwidth Bus for Read).
- Todos os componentes são acionados pelo mesmo relógio.
Etapa 3: ambiente de teste
O Módulo superior foi testado usando um banco de teste, que simplesmente modela um processador sem pipeline (porque projetar um processador inteiro não é nada fácil !!). O Test Bench gera solicitações de leitura / gravação de dados para a memória com freqüência. Isso simula as instruções típicas de "Carregar" e "Armazenar", comuns em todos os programas executados por um processador. Os resultados do teste verificaram com sucesso a funcionalidade do Controlador de Cache. A seguir estão as estatísticas de teste observadas:
- Todos os sinais Read / Write Miss e Hit foram gerados corretamente.
- Todas as operações de leitura / gravação de dados foram bem-sucedidas.
- Não foram detectados problemas de incoerência / inconsistência de dados.
- O tempo do projeto foi verificado com sucesso para um Maxm. Freqüência de operação do clock = 110 MHz na placa Xilinx Virtex-4 ML-403 (sistema completo), 195 MHz somente para o controlador de cache.
- Bloco de RAMs foram inferidos para a memória principal. Todas as outras matrizes foram implementadas em LUTs.
Etapa 4: arquivos anexados
Os seguintes arquivos estão anexados aqui com este blog:
- Arquivos. VHD de controlador de cache, matriz de dados de cache, sistema de memória principal.
- Bancada.
- Documentação no controlador de cache.
Notas:
- Percorra a documentação para um entendimento completo das especificações do Controlador de Cache apresentadas aqui.
- Quaisquer alterações no código dependem de outros módulos. Portanto, as alterações devem ser feitas de forma criteriosa. Preste atenção a todos os comentários e cabeçalhos que eu dei.
- Se, por qualquer motivo, os blocos de RAM não forem inferidos para a memória principal, REDUZA o tamanho da memória, seguido por alterações nas larguras do barramento de endereço entre os arquivos e assim por diante. Para que a mesma memória possa ser implementada em LUTs ou RAM distribuída. Isso economizará tempo e recursos de roteamento. Ou vá para a documentação específica do FPGA e encontre o código compatível para Block RAM e edite o código de acordo, e use as mesmas especificações de largura de barramento de endereço. Mesma técnica para Altera FPGAs.
Recomendado:
Sensor de alarme de porta de interruptor magnético, normalmente aberto, projeto simples, 100% funcionando, código-fonte fornecido: 3 etapas
Sensor de alarme de porta de chave magnética, normalmente aberto, projeto simples, 100% funcionando, código-fonte fornecido: Descrição: Oi pessoal, vou fazer um tutorial sobre o alarme de sensor de chave magnética MC-18 que opera no modo normalmente aberto. Tipo de interruptor: NÃO (tipo normal fechado), o circuito está normalmente aberto e o circuito é conectado quando o ímã está próximo. A palheta
Projeto final PHYS 339: Theremin Simples: 3 etapas
PHYS 339 Projeto Final: Simple Theremin: Como músico recreativo e físico, sempre achei que theremins são os instrumentos eletrônicos mais legais. Seu som é quase hipnótico quando tocado por um profissional, e a teoria da eletrônica necessária para que funcionem é bastante s
Projeto de um controlador de cache associativo conjunto de quatro vias simples em VHDL: 4 etapas
Projeto de um controlador de cache associativo de conjunto de quatro vias simples em VHDL: No meu instrutivo anterior, vimos como projetar um controlador de cache mapeado direto simples. Desta vez, damos um passo à frente. Estaremos projetando um controlador de cache associativo de conjunto de quatro vias simples. Vantagem? Menos taxa de erros, mas ao custo de desempenho
Projeto de um controlador de interrupção programável em VHDL: 4 etapas
Projeto de um controlador de interrupção programável em VHDL: Estou impressionado com o tipo de respostas que recebo neste blog. Obrigado pessoal por visitar meu blog e me motivar a compartilhar meu conhecimento com vocês. Desta vez, vou apresentar o design de outro módulo interessante que vemos em todos os SOCs - Interromper C
Projeto de um controlador VGA simples em VHDL e Verilog: 5 etapas
Projeto de um controlador VGA simples em VHDL e Verilog: Neste instrutível, vamos projetar um controlador VGA simples em RTL. O controlador VGA é o circuito digital projetado para controlar monitores VGA. Ele lê o Frame Buffer (memória VGA) que representa o quadro a ser exibido e gera a nece