- Memória Cache
- Pensada para dar uma memória disponível com rápido tempo de acesso
- A ideia é que ela abstraia o caminho do datapath
- A transferência entre níveis é sempre blocos portanto trabalha com palavras
- Memória principal se fala em octetos (bytes)
- Para relação com a memória é tratada em blocos (x palavras fazem parte do bloco 1 - outras y palavras fazem parte do bloco 2, ...)
- A memória é quebrada em blocos
- Interessante que o bloco da memória tem que ser o mesmo tamanho do bloco do cache
- M tam da quantidade de blocos
- Tamanho da memória = 2^n
- Nro de blocos dentro da mem cache - C
- Se todos os blocos da mem principal irão passar pela mem cache e deste para a CPU. Dado que C << M, como eu aloco um bloco na mem cache?
- Fig Cache Read Operation
- Se o cache estiver cheio? Atualizar CPU
- Tempos: Checar disponibilidade com árbitro de barramento e ver se tá cheio,
- Fig Cache Read Operation
- Cache Design Elementos
- Mapping Function: apontar qual slot que será usado
- Usado com alguma frequência
- Direct: Método mais rápido de usar uma mem dentro do cache. Pouco usado porque se dois quiserem usar a mesma linha, um terá que esperar (Stall)
- Associative: Tem um pool de lugares, descobre-se o primeiro lugar vago. Gasta mais tempo para encontrar um slot para um bloco de memória. É o que menos dá stall.
- Associative and Direct: O cache é dividido em conjunto de blocos. Achar o conjunto é mapeamento direto e dentro do conjunto é associativo.
- Pentium é um Two Way Set Associative. Todo RISC é Set Associative
- Replacement: Escolher qual será substituído
- Write Policy: quando eu atualizo a mem principal?
- Write Thru: Toda vez que altero a mem cache altero a mem principal
- Write back: Vai mexendo na mem cache, quando for substituir o slot, neste momento atualiza a mem principal. Se tem um processador apenas este é ótimo para ser usado. Para paralelismo não é interessante.
- Block size: tamanho da linha - quantas palavras cabem na linha
- Number of caches: Unified - guardam dados e programas
- L1: colada dentro do processador onchip cache
- L2: normalmente fora do chip
- Unified: armazena instruções quanto dados. Linha pode conter dados ou pode conter instruções
- Split: Um cache para dados outro cache para instruções
- Mapping Function: apontar qual slot que será usado
- Coerência de cache: cache é coerente se as leituras em um mesmo endereço devolvem o valor escrito mais recentemente
- Bus watch
- Hw transparency: onera o custo
- Non-cachable Memory: escolhe uma posição de memória marcada como non-cachable
- Slides Pentium Organizations
- Evoluiu em amplitude mas não em essência
- Dif entre 486 e 586 (Pentium) foi o cache
- MESI (Modified-Exclusive-Shared-Invalid):
- Protocolo de Bus Watching
- Vídeo: https://www.youtube.com/watch?v=ndyKrPMUqwE
- Diagrama de Estados: 1h35
- Lição de casa: MESI Finite State Machine L2 - Slide 11
- Foi até o slide 13