Taxa de Acerto

Download Report

Transcript Taxa de Acerto

CACHE MEMORY
Catholic University
PUCRS
Introduction
[email protected]
2
Introduction
Taxa de Acerto (Hit Rate) de um determinado nível de memória é uma fração que indica a percentagem de todos
os acessos àquele nível que resultaram em acerto.
Taxa de Falha, (calculada como 1.0 - Taxa de acerto) é a fração de acessos que resultaram em falha.
Tempo de Acerto é o tempo necessário para o processador acessar o nível superior de memória. Esse tempo
inclui o tempo necessário para determinar se o acesso produz acerto ou erro.
Penalidade de Falha é o tempo necessário para substituir um bloco no nível em que a falha ocorreu (levar um
bloco do nível superior para o inferior e buscar outro do nível mais baixo para o nível mais alto de memória) mais o
tempo para fornecer o dado necessário ao processador. O tempo de acerto é tipicamente muito menor do que a
penalidade de erro. recentemente.
A organização de memórias em sistemas hierárquicos baseia-se no fato de que programas
exibem localidade temporal e localidade espacial:
Localidade temporal é a tendência que um programa tem de executar uma instrução que
foi executada recentemente ou de acessar dados que foram acessados recentemente.
Localidade espacial é a tendência a executar instruções que estão fisicamente próximas de
instruções executadas recentemente ou a acessar dados que foram acessados recentemente.
[email protected]
3
Basic Concepts
[email protected]
4
Basic Concepts
[email protected]
5
Access to the Cache
[email protected]
6
Access to the Cache
[email protected]
7
Cache Miss Treatment
[email protected]
8
Cache Miss Treatment
[email protected]
9
Cache Coherence
[email protected]
10
Block Size vs Cache Performance
[email protected]
11
Block Size vs Cache Performance
[email protected]
12
Block Size vs Cache Performance
[email protected]
13
Cache Size
O tamanho da memória cache é determinado por uma série de fatores,
incluindo:
· Relação entre a velocidade do microprocessador, tempo de acesso à
memória principal e tempo de acesso à memória cache.
· Capacidade de armazenamento dos chips de memória estática usados
para implementar a cache.
· Taxa de acerto que se deseja obter.
Exemplo: quantos bits de SRAM são necessários para construir uma
cache com 64KBytes (512K bits), em uma máquina cuja memória
principal tem 16 MBytes (224 Bytes) e cujo tamanho de bloco é 32 bits?
[email protected]
14
Cache Size
Solução: temos que começar por identificar a relação entre o número de blocos na memória principal e na cache. Como cada bloco ocupa 4 bytes,
a memória principal pode armazenar 16M/4 = 4M blocos (= 222 blocos), e a cache pode armazenar 64K/4 = 16K blocos (= 214 blocos).
Portanto, para cada bloco da cache existem 4M/16K = 222/214 = 28 = 256 blocos na memória principal. Consequentemente, cada posição (bloco) da
cache precisa de um tag de 8 bits de largura para identificar qual destes 256 blocos está armazenado naquela posição. Além disto a cache necessita
de 1 bit de validade para cada bloco.
Portanto, a quantidade de bits necessários para construir esta cache é:
(# de bits de validade) + (# bits para tag) + (# bits para dados) =
16K + (16K x 8) + (16K x 32) = 16K x (1+8+32) = 16K x 41 = 656K bits
A equação acima demonstra que a cache com a organização mostrada necessita de 9 x 16K = 144K bits a mais do que os bits necessários para
armazenamento de dados. Vamos designar este espaço de memória adicional necessário para construção da cache de espaço de gerenciamento
porque é neste espaço que se dá o gerenciamento da cache. Assim, a cache precisa ser 28,2% (656÷512) maior para poder suportar a lógica de
gerenciamento.
Note que são necessários 14 bits de Index e 8 bits de Tag para cada bloco na cache, portanto: 22 bits mod 214 : 21 20 19 ... 14 13 ... 0
|----------Tag---------| |---Index---|
[email protected]
15
Cache Performance Estimation
[email protected]
16
Cache Performance Estimation
O Tempo de CPU de um programa pode ser medido como:
Tempo de CPU = (# Ciclos de Clock para execução + # ciclos de espera) x Período do Clock
O tempo que o processador está parado é igual ao número de operações de leitura e escrita no programa vezes a taxa de
falha na memória cache, vezes o tempo necessário para ler ou escrever um dado na memória principal:
# ciclos de espera = # acessos à memória x taxa de falha x penalidade de falha
Uma outra forma de expressar esta relação é:
#ciclos-de-espera = #instruções-do-programa x #falhas x penalidade-de-falha
Exemplo: considere o compilador C, gcc. Assuma que este programa possua uma taxa de falha de 5% para
acessos à instruções e 10% para acessos a dados. Considere que este programa esteja rodando em uma
máquina que possui um CPI = 4 quando ela roda sem nenhum ciclo de espera. Assuma que a penalidade de
falha é de 12 ciclos. De todas as instruções que são executadas quando o compilador gcc está sendo
executado, 33% são instruções que acessam a memória (lêem ou escrevem dados). Qual o percentual de
degradação de desempenho na execução do gcc devido à existência de falhas no acesso à cache?
[email protected]
17
Cache Performance Estimation
Solução:
O número de ciclos de espera executados pelo processador devido à leitura de instruções quando o gcc está rodando depende do
número total de instruções executadas, que nós desconhecemos, chamemos este o número total de instruções de NI. Portanto o
número de ciclos de espera gerado pela leitura de instruções é dado por:
# de ciclos de espera devido a instruções = NI x 5% x 12 = NI x 0.05 x 12 = 0.6 NI clocks
Nós sabemos que 33% das instruções executadas acessam a memória, portanto o número de ciclos de espera devido à leitura ou
escrita de dados é dado por:
# ciclos de espera devido a dados = NI x 33% x 10% x 12 = 0.4 NI clocks
Portanto o número total de ciclos de espera é 0.4 Ni + 0.6 NI = 1.0 NI clocks. Ou seja, existe em média um ciclo de espera para cada
instrução executada.
Como nós sabemos que sem as falhas na cache o gcc teria um CPI de 4, com as falhas ele passa a ter um CPI de 5. Portanto, existe
uma degradação de desempenho de (5-4)÷4 = 0.25 = 25%.
[email protected]
18
Cache – Main Memory Mapping
[email protected]
19
Cache – Main Memory Mapping
[email protected]
20
Cache – Main Memory Mapping
[email protected]
21
Block Localization in the Cache
[email protected]
22
Tag Size vs Associativity
[email protected]
23
Block Replacement Selection
[email protected]
24
Cache Miss Penalty due to
Multilevel Architecture
[email protected]
25
Cache Miss Penalty due to
Multilevel Architecture
[email protected]
26
Cache Miss Penalty due to
Multilevel Architecture
Assim, o total de ciclos parados economizados, devido à inclusão da cache de nível 2: 0.3% + 2.2% = 2.5%
[email protected]
27
Cache Miss Penalty due to
Multilevel Architecture
[email protected]
28
VIRTUAL MEMORY
Catholic University
PUCRS
Introduction
[email protected]
30
Introduction
[email protected]
31
Page Location in the Main Memory
[email protected]
32
Page Faulty Treatment
Usando o passado para prever o
futuro, o sistema operational
segue o esquema de substituição
LRU, susbtituindo a página que
não é usada há mais tempo.
[email protected]
33
TLB – Translation Lookaside Buffer
[email protected]
34
TLB – Translation Lookaside Buffer
[email protected]
35
Integration of
Cache + TLB + Virtual Memory
[email protected]
36
Complete Operation of a
Memory Hierarchy
[email protected]
37
Protection Implementation with
Virtual Memory
[email protected]
38
Treating Page Faults and TLB Faults
[email protected]
39
Treating Page Faults and TLB Faults
[email protected]
40
Treating Page Faults and TLB Faults
[email protected]
41
Treating Page Faults and TLB Faults
Reg CAUSA:
contém o código da
excessão gerada, que
pode assumir 2 valores
possiveis no caso de
falha na TLB!
[email protected]
42
Thank you for your attention
[email protected]
43