Índice:

Projeto de um controlador de cache associativo conjunto de quatro vias simples em VHDL: 4 etapas
Projeto de um controlador de cache associativo conjunto de quatro vias simples em VHDL: 4 etapas

Vídeo: Projeto de um controlador de cache associativo conjunto de quatro vias simples em VHDL: 4 etapas

Vídeo: Projeto de um controlador de cache associativo conjunto de quatro vias simples em VHDL: 4 etapas
Vídeo: Sistemas Digitais - Tipos de memorias - SDRAM, EDO, FPM e assim vai... 2024, Junho
Anonim
Projeto de um controlador de cache associativo conjunto de quatro vias simples em VHDL
Projeto de um controlador de cache associativo conjunto de quatro vias simples em VHDL

Em meu instrutível 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 falhas, mas ao custo de desempenho. Assim como em meu blog anterior, estaríamos projetando e emulando um processador inteiro, memória principal e ambiente de cache para testar nosso controlador de cache. Espero que vocês achem isso uma referência útil para entender os conceitos e projetar seus próprios controladores de cache no futuro. Como o modelo do processador (bancada de teste) e o sistema de memória principal são exatamente os mesmos do meu blog anterior, não irei explicá-los novamente. Consulte as instruções anteriores para obter detalhes a respeito.

Etapa 1: Especificações

Especificações
Especificações

Dê uma olhada rápida nas especificações do Controlador de Cache apresentadas aqui:

  • Controlador de cache associativo definido de quatro vias (acesse este link se estiver procurando por Controlador de cache mapeado diretamente).
  • Cache de bloqueio único em banco único.
  • Política de gravação direta em ocorrências de gravação.
  • Política de Write-Around sobre erros de gravação.
  • Política de substituição do Tree Pseudo-LRU (pLRU).
  • Tag Array dentro do controlador.
  • Parâmetros configuráveis.

As especificações padrão para Cache Memory e Main Memory são as mesmas do meu instrutível anterior. Consulte-os.

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: Resultados do teste

O Top Module foi testado usando um Test Bench, que simplesmente modela um processador não pipeline, assim como fizemos no último instrutível. 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 em todas as quatro maneiras.
  • O algoritmo pLRU foi verificado com sucesso para a substituição de linhas de cache.
  • 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 = 100 MHz na placa Xilinx Virtex-4 ML-403 (sistema completo), 110 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: