Escolar Documentos
Profissional Documentos
Cultura Documentos
CPU
Memria Principal
Transferncia de palavras
Exemplo: cache com capacidade de 64 Kbytes blocos de 4 bytes memria principal com 16 Mbytes palavra de 8 bits
Incio Recebimento de endereo da CPU NO acessa a memria principal e localiza o bloco que contm a palavra
Fim
Mapeamento direto
nmero da linha no cache = nmero do bloco % nmero de linhas do cache
Nmero da linha i
endereo MEMRIA na palavra rtulo bloco de 4 palavras(K) memria j 0 P1 - P2 - P3 - P4 0 P1 1 1 P2 0 2 2 P3 3 3 P4 4 5 16.383 1 6 7 Exemplo: 8 9 cache com 14 capacidade de 64 kbytes 2 i blocos 2 = j % 10 de 4 bytes 11 memria principal com 16 Mbytes 12 14 14 14 0 0 2 1 palavra = 1 % 2% = 16384 % de 8 bits 2 13 CACHE 16.777.215
4.194.303
i 0 1
. . . 0
16383
16383
65532
00FFFC
i 0 1
. . .
j
16384 16385
16383
32767
131068
01FFFC
i 0 1
. . .
j
32768 32769
16383
49151
196604
02FFFC
i 0 1
. . .
j
4177920 4177921
16383
4194303
1677212
FFFFFC
i 0 1
. . .
j
4177920 16384 0 32768 4177921 16385 1 32769
16383
Exemplo do mapeamento direto 1: (apresentao) cache com capacidade de 64 Kbytes blocos de 4 bytes memria principal com 16 Mbytes palavra de 8 bits MAPEAMENTO DIRETO palavra do endereo com 24 bits
224 16 M
14 28 22 4 256 16 K
Exemplo do mapeamento direto 1: (apresentao/Continuao) cache com capacidade de 64 Kbytes blocos de 4 bytes memria principal com 16 Mbytes palavra de 8 bits 8 bits para 14 bits para 2 bits para identificar identificar a identificar bloco(tag) linha a palavra Porque: Organizao da cache = Mem.Cache / Palavra Organizao da cache = 64 * 1024 / 4 = 16384 = 16KBytes Linha = Mem.Cache / PalavrasPorLinhas / BytePalavra Linha = 65536 / 4 / 1 = 16384 Log2 (16384) = 14 ou 214 = 16384 Tag = Tam. End. Mem. Ram (Log2 (Linha) + ID. Palavra) Tag= 24 (14 + 2) = 8
Com endereo acima temos o quadro/linha que 11001(2) = 25(10) ou seja devemos parar na linha/quadro 25. Com o valor de Tag do endereo verificamos na tabela do cache. Se igual o cache tem os o bloco, se no devemos atualiza-lo. Com o valor de palavra que no caso 1000(2) = 8(10) devemos pegar a oitava palavra dentro da linha de cache.
Exemplo do mapeamento direto 3: (Real na memria) 16(16) o tag 339C(16) o nmero da linha esse divido por K(numero de palavras por linha) que neste caso 4 portanto o nmero na linha no cache 0CE7(16)
Fcil de implementar em hardware. Problema: acesso a duas palavras em blocos diferentes que ocupam a mesma linha no cache
Mapeamento associativo
Permite a colocao de um bloco em qualquer linha. O endereo deve ser analisado como sendo um rtulo (tag) e um campo para identificar uma palavra. Para identificar se um bloco est no cache, deve-se examinar todas as linhas do cache.
Exemplo associativo 1: (Apresentao) cache com capacidade de 64 Kbytes blocos de 4 bytes memria principal com 16 Mbytes palavra de 8 bits MAPEAMENTO ASSOCIATIVO palavra do endereo com 24 bits
224 16 M
Problema: complexidade na implementao No harware
8 bits para 14 bits para 22 bits para identificar identificar identificar ao linha o bloco bloco e alinha
Exemplo associativo 1: (Apresentao/Continuao) cache com capacidade de 64 Kbytes blocos de 4 bytes 224 16 M memria principal com 16 Mbytes palavra de 8 bits
Porque: Linha = Mem.Cache / PalavrasPorLinhas / BytePalavra Tag(Bloco+linha) = Tam. End. Mem. Ram ID. Palavra Tag= 24 - 2) = 22
26 bits identificam o bloco e a linha(tag) e os 6 bits restantes identificam a palavra dentro da linha pois 26 = 64, e neste caso so 64 bytes por linha
Exemplo mapeamento associativo por conjunto 1: cache com capacidade de 64 Kbytes blocos de 4 bytes memria principal com 16 Mbytes palavra de 8 bits MAPEAMENTO ASSOCIATIVO POR CONJUNTO palavra do endereo com 24 bits
224 16 M
Exemplo mapeamento associativo por conjunto 1 (continuao): cache com capacidade de 64 Kbytes blocos de 4 bytes memria principal com 16 Mbytes com duas linhas por conjunto palavra de 8 bits
Porque: Conj. = Mem.Cache / PalavrasPorLinhas / Linhasporconj. /BytePalavra Conj. = 65536 / 4 / 2 / 1 = 8192 Log2 (8192) = 13 ou 213 = 8192 Tag = Tam. End. Mem. Ram (Log2 (Conj.) + ID. Palavra) Tag= 24 (13 + 2) = 9
Mapeamento Direto
. . .
. . . x
comparao
hit no cache
. . .
. . .
no disponvel no cache
Mapeamento Associativo
. . .
. . . x
comparao
hit no cache
. . .
. . .
no disponvel no cache
. . .
. . . x
comparao
hit no cache
. . .
. . .
no disponvel no cache
Poltica de atualizao
Write Through: todas as operaes de escrita levam a atualizao no cache e na memria principal.
Gera muito trfego
Write Back: as atualizaes so feitas no cache. Quando um bloco for atualizado, feita uma verificao para se avaliar se a memria precisa ser atualizada.
Acessos por I/O devem ser feito via cache
Exerccios 1) Dado um sistema hipottico com 64MB de memria principal, expansvel a at 512MB, barramento de dados com 32 bits (cada endereo acessa 1 palavra de 32 bits), contando com cache de 512KB, 4 palavras por linha, especifique, espeficique um sistema de cache para os casos abaixo:
a) Cache com mapeamento direto (direct mapped cache) b) Cache com mapeamento associativo (associative cache) c) Cache com mapeamento associativo por conjunto, 4 linhas por conjunto (four-way set associative cache)
2) Uma varivel de memria de um certo programa est no endereo FF1255(16) com dado 10 (16). Como ficaria o endereo dentro da tabela de cache para os trs casos acima?