catholic university pucrs

43
Catholic University PUCRS CACHE MEMORY

Upload: ellard

Post on 23-Feb-2016

47 views

Category:

Documents


0 download

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 Presentation

TRANSCRIPT

Page 1: Catholic University PUCRS

Catholic UniversityPUCRS

CACHE MEMORY

Page 2: Catholic University PUCRS

[email protected] 2

Introduction

Page 3: Catholic University PUCRS

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

[email protected] 3

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.

Page 4: Catholic University PUCRS

[email protected] 4

Basic Concepts

Page 5: Catholic University PUCRS

[email protected] 5

Basic Concepts

Page 6: Catholic University PUCRS

Access to the Cache

[email protected] 6

Page 7: Catholic University PUCRS

[email protected] 7

Access to the Cache

Page 8: Catholic University PUCRS

[email protected] 8

Cache Miss Treatment

Page 9: Catholic University PUCRS

Cache Miss Treatment

[email protected] 9

Page 10: Catholic University PUCRS

[email protected] 10

Cache Coherence

Page 11: Catholic University PUCRS

[email protected] 11

Block Size vs Cache Performance

Page 12: Catholic University PUCRS

[email protected] 12

Block Size vs Cache Performance

Page 13: Catholic University PUCRS

Block Size vs Cache Performance

[email protected] 13

Page 14: Catholic University PUCRS

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

Page 15: Catholic University PUCRS

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

Page 16: Catholic University PUCRS

Cache Performance Estimation

[email protected] 16

Page 17: Catholic University PUCRS

Cache Performance Estimation

[email protected] 17

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?

Page 18: Catholic University PUCRS

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

[email protected] 18

Page 19: Catholic University PUCRS

[email protected] 19

Cache – Main Memory Mapping

Page 20: Catholic University PUCRS

[email protected] 20

Cache – Main Memory Mapping

Page 21: Catholic University PUCRS

[email protected] 21

Cache – Main Memory Mapping

Page 22: Catholic University PUCRS

[email protected] 22

Block Localization in the Cache

Page 23: Catholic University PUCRS

[email protected] 23

Tag Size vs Associativity

Page 24: Catholic University PUCRS

Block Replacement Selection

[email protected] 24

Page 25: Catholic University PUCRS

Cache Miss Penalty due to Multilevel Architecture

[email protected] 25

Page 26: Catholic University PUCRS

Cache Miss Penalty due to Multilevel Architecture

[email protected] 26

Page 27: Catholic University PUCRS

Cache Miss Penalty due to Multilevel Architecture

[email protected] 27

Assim, o total de ciclos parados economizados, devido à inclusão da cache de nível 2: 0.3% + 2.2% = 2.5%

Page 28: Catholic University PUCRS

Cache Miss Penalty due to Multilevel Architecture

[email protected] 28

Page 29: Catholic University PUCRS

Catholic UniversityPUCRS

VIRTUAL MEMORY

Page 30: Catholic University PUCRS

[email protected] 30

Introduction

Page 31: Catholic University PUCRS

[email protected] 31

Introduction

Page 32: Catholic University PUCRS

[email protected] 32

Page Location in the Main Memory

Page 33: Catholic University PUCRS

Page Faulty Treatment

[email protected] 33

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.

Page 34: Catholic University PUCRS

[email protected] 34

TLB – Translation Lookaside Buffer

Page 35: Catholic University PUCRS

[email protected] 35

TLB – Translation Lookaside Buffer

Page 36: Catholic University PUCRS

Integration ofCache + TLB + Virtual Memory

[email protected] 36

Page 37: Catholic University PUCRS

[email protected] 37

Complete Operation of aMemory Hierarchy

Page 38: Catholic University PUCRS

[email protected] 38

Protection Implementation withVirtual Memory

Page 39: Catholic University PUCRS

[email protected] 39

Treating Page Faults and TLB Faults

Page 40: Catholic University PUCRS

[email protected] 40

Treating Page Faults and TLB Faults

Page 41: Catholic University PUCRS

[email protected] 41

Treating Page Faults and TLB Faults

Page 42: Catholic University PUCRS

Treating Page Faults and TLB Faults

[email protected] 42

Reg CAUSA:contém o código da excessão gerada, que pode assumir 2 valores possiveis no caso de falha na TLB!

Page 43: Catholic University PUCRS

Thank you for your attention

[email protected] 43