Top Banner
Catholic University PUCRS CACHE MEMORY
43

Catholic University PUCRS

Feb 23, 2016

Download

Documents

ellard

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
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
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