Sem resumo de edição |
Sem resumo de edição |
||
| (3 revisões intermediárias pelo mesmo usuário não estão sendo mostradas) | |||
| Linha 19: | Linha 19: | ||
** Mapping Function: apontar qual slot que será usado | ** Mapping Function: apontar qual slot que será usado | ||
*** Usado com alguma frequência | *** Usado com alguma frequência | ||
*** Direct: | *** 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: | *** 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: | *** 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 | *** Pentium é um Two Way Set Associative. Todo RISC é Set Associative | ||
** Replacement: Escolher qual será substituído | ** Replacement: Escolher qual será substituído | ||
| Linha 33: | Linha 33: | ||
** Unified: armazena instruções quanto dados. Linha pode conter dados ou pode conter instruções | ** 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 | ** Split: Um cache para dados outro cache para instruções | ||
* Coerência de cache: | * Coerência de cache: cache é coerente se as leituras em um mesmo endereço devolvem o valor escrito mais recentemente | ||
** Bus watch | ** Bus watch | ||
** Hw transparency: onera o custo | ** Hw transparency: onera o custo | ||
| Linha 40: | Linha 40: | ||
* Evoluiu em amplitude mas não em essência | * Evoluiu em amplitude mas não em essência | ||
* Dif entre 486 e 586 (Pentium) foi o cache | * 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 | * Lição de casa: MESI Finite State Machine L2 - Slide 11 | ||
:: Foi até o slide 13 | |||
Edição atual tal como às 23h42min de 21 de abril de 2024
- 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