catholic university pucrs
DESCRIPTION
Cache Memory. Catholic University PUCRS. Introduction. 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. - PowerPoint PPT PresentationTRANSCRIPT
Catholic UniversityPUCRS
CACHE MEMORY
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.
Introduction
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.
Basic Concepts
Basic Concepts
Access to the Cache
Access to the Cache
Cache Miss Treatment
Cache Miss Treatment
Cache Coherence
Block Size vs Cache Performance
Block Size vs Cache Performance
Block Size vs Cache Performance
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?
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---|
Cache Performance Estimation
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?
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%.
Cache Performance Estimation
Cache – Main Memory Mapping
Cache – Main Memory Mapping
Cache – Main Memory Mapping
Block Localization in the Cache
Tag Size vs Associativity
Block Replacement Selection
Cache Miss Penalty due to Multilevel Architecture
Cache Miss Penalty due to Multilevel Architecture
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%
Cache Miss Penalty due to Multilevel Architecture
Catholic UniversityPUCRS
VIRTUAL MEMORY
Introduction
Introduction
Page Location in the Main Memory
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.
TLB – Translation Lookaside Buffer
TLB – Translation Lookaside Buffer
Integration ofCache + TLB + Virtual Memory
Complete Operation of aMemory Hierarchy
Protection Implementation withVirtual Memory
Treating Page Faults and TLB Faults
Treating Page Faults and TLB Faults
Treating Page Faults and TLB Faults
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!
Thank you for your attention