arquietectura
1571 palavras
7 páginas
Hierarquia de MemóriaOrganização da cache
AC1 – Hierarquia da Memória: Organização
1
Mapeamento Directo
A cada endereço de memória corresponde apenas uma linha da cache. linha = resto (endereço do bloco / nº de linhas)
00000
00001
00010
00011
00100
00101
00110
00111
01000
01001
01010
01011
01100
01101
01110
01111
10000
10001
10010
10011
10100
10101
Cache
000
001
010
011
100
101
110
111
Se cada bloco for um byte o índice da linha que corresponde a cada endereço é dado pelos n últimos bits do endereço, com n = log2(nº linhas)
AC1 – Hierarquia da Memória: Organização
2
Mapeamento Directo
Numa máquina com endereços de 5 bits, cache de 8 bytes, mapeamento directo e linhas de 1 byte, os endereços 00000, 01000, 10000 e 11000 mapeiam todos na linha com o índice 000. Como é que o CPU determina qual o endereço que está na cache?
Os restantes bits do endereço (2 neste exemplo) são colocados na tag.
Como é que o CPU determina se uma linha da cache contem dados válidos?
Cada linha da cache tem um bit extra
(valid) que indica se os dados dessa linha são válidos.
Valid Tag
Cache
1 10
0
0
000
0
0
0
011
100
101
0
0
110
111
AC1 – Hierarquia da Memória: Organização
001
010
3
Mapeamento Directo
Considere uma máquina com um espaço de endereçamento de 32 bits, uma cache de 64 Kbytes, mapeamento directo e blocos de 1 byte.
Quantos bits são necessários para a tag?
A cache tem 64 K linhas, ou seja, 26*210 = 216, logo o índice são 16 bits. A tag será de 32-16=16 bits.
Qual a capacidade total desta cache, contando com os bits da tag mais os valid bits?
Temos 64 Kbytes de dados.
Cada linha tem 2 bytes de tag, logo 128Kbytes.
Cada linha tem um valid bit logo 64 Kbits = 8 Kbytes
Capacidade total = 64+128+8 = 200 KBytes
AC1 – Hierarquia da Memória: Organização
4
Localidade Espacial
Blocos de 1 byte apenas não tiram partido da localidade espacial.
Cada bloco