Índice:

Projeto de um controlador de cache simples em VHDL: 4 etapas
Projeto de um controlador de cache simples em VHDL: 4 etapas

Vídeo: Projeto de um controlador de cache simples em VHDL: 4 etapas

Vídeo: Projeto de um controlador de cache simples em VHDL: 4 etapas
Vídeo: aula 10 verilog 2024, Novembro
Anonim
Projeto de um controlador de cache simples em VHDL
Projeto de um controlador de cache simples em VHDL

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

Especificações
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

Visão RTL de todo o sistema
Visã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: