/Memoria-Cache

Cache direta implementada para a conclusão da disciplina de Arquitetura de Computadores II.

Cache Direta

O objetivo do trabalho foi a implementação de uma cache que utilize mapeamento direto.

PS: Os subcircuitos criados foram omitidos visando tornar o readme conciso.

Circuito Principal

Circuito Principal

Cache Direta

Cache Direta

Processador

Processador

Memória Principal

Memória Principal


Processador

O processador utilizado foi desenvolvido no trabalho de conclusão da disciplina de Arquitetura I. No entanto, foram realizadas adaptações como a adição de um novo registrador no banco, alterações no tamanho dos campos das instruções do conjunto de instruções, entre outras.


Cache Direta

A cache possui 8 linhas, cada uma composta de 4 palavras de 16 bits cada. Logo, o tamanho da cache é de 512 bits ou 64 bytes.


Política de Escrita

A política de escrita adotada foi a de escrita direta (write-through).

Nesse sentido, as operações de escrita são realizadas na memória principal e na cache, de modo que ambas sempre estão atualizadas.


Memória Principal

Tendo em vista que o componente “Memória RAM” do Logisim possui apenas um barramento de saída e que a comunicação entre a memória principal e a cache é por blocos de quatro palavras, a criação de uma memória principal que possibilitasse tal comunicação foi necessária.

À luz das características supracitadas, combinamos quatro componentes “Memória RAM” do Logisim visando permitir a comunicação via bloco entre memória principal e cache.


Validando a Cache

Para validarmos a cache, utilizamos o programa disponibilizado no documento do trabalho.

As memórias do Logisim armazenam as instruções em hexadecimal, por conseguinte, era necessária a conversão das instruções para tal formato.

Diante disso, criei uma pequena interface para agilizar esse processo.

Por exemplo as instruções do tipo I:

Instrução I


Disposição da quantidade de bits de cada campo:
3 3 4 6

addi $r2, $r1, $4

Campos em binário:
001 010 0001 000100

Campos em decimal:
1 2 1 4

Interface

Ao final do programa, os valores finais das posições da memória referentes às variáveis de soma (soma1 à soma5) são, respectivamente, 155, 155, 310, 75 e 516.

Somas

Valores os quais estavam presentes nas respectivas posições em cada uma das nossas submemórias ao final da execução.

Valores Nas Memorias

Dessa forma, foi possível validar a corretude da cache.


Referências

PATTERSON, David, HENNESSY, John .Organização e Projeto de Computadores: Interface Hardware/Software. 4° Edição. Rio de Janeiro, Editora Elsevier, 2014.

STALLINGS, William. Arquitetura e Organização de Computadores. 10ª Edição. São Paulo: Pearson Pratice Hall, 2010.