MO 401 Arquitetura de Computadores I 20062007 Prof

  • Slides: 68
Download presentation
MO 401 Arquitetura de Computadores I 2006/2007 Prof. Paulo Cesar Centoducatte@ic. unicamp. br www.

MO 401 Arquitetura de Computadores I 2006/2007 Prof. Paulo Cesar Centoducatte@ic. unicamp. br www. ic. unicamp. br/~ducatte MO 401 -2008 Revisado MO 401 -2006 1. 1

MO 401 • Livro Texto: “Computer Architecture: A Quantitative Approach” - 4 rd edition

MO 401 • Livro Texto: “Computer Architecture: A Quantitative Approach” - 4 rd edition Hennessy & Patterson • Revisão: “Computer Organization and Design the hardware / software interface” Patterson & Hennessy – MO 401 -2008 Revisado Revisão em sala: Pipelining, Desempenho, Hierarquia de Memórias (cache) MO 401 -2006 1. 2

Sumário • • Revisão Fundamentos Conjunto de Instruções Paralelismo no nível de instruções (ILP)

Sumário • • Revisão Fundamentos Conjunto de Instruções Paralelismo no nível de instruções (ILP) • • • ILP por software (VLIW) Hierarquia de Memórias Multiprocessadores Sistemas de Armazenamento Redes e Clusters – Exploração dinâmica (Superescalar) MO 401 -2008 Revisado MO 401 -2006 1. 3

MO 401 Arquitetura de Computadores I Revisão: Pipeline, Desempenho e Hierarquia de Memórias (Caches)

MO 401 Arquitetura de Computadores I Revisão: Pipeline, Desempenho e Hierarquia de Memórias (Caches) “Computer Organization and Design the hardware / software interface” “Computer Architecture: A Quantitative Approach” - (Apêndice A) MO 401 -2008 Revisado MO 401 -2006 1. 4

Revisão: Pipeline MO 401 -2008 Revisado MO 401 -2006 1. 5

Revisão: Pipeline MO 401 -2008 Revisado MO 401 -2006 1. 5

Pipelining - Conceito • Exemplo: Lavanderia • 4 trouxas para serem lavadas A B

Pipelining - Conceito • Exemplo: Lavanderia • 4 trouxas para serem lavadas A B C D – Lavar: 30 minutos – Secar: 40 minutos – Passar: 20 minutos MO 401 -2008 Revisado MO 401 -2006 1. 6

Lavanderia Seqüencial 6 O r d e m T a r e f a

Lavanderia Seqüencial 6 O r d e m T a r e f a s 7 8 9 10 11 Horas Tempo 30 40 20 A B C D • Lavanderia seqüencial: 6 horas para lavar 4 trouxas • Se for usado pipelining, quanto tempo? MO 401 -2008 Revisado MO 401 -2006 1. 7

Lavanderia Pipelined 6 7 8 9 10 11 Horas Tempo O r d e

Lavanderia Pipelined 6 7 8 9 10 11 Horas Tempo O r d e m 30 40 40 20 A T a r e f a s B C D • Lavanderia Pipelined: 3. 5 horas para 4 trouxas MO 401 -2008 Revisado MO 401 -2006 1. 8

Pipelining 6 T a s k O r d e r 7 8 30

Pipelining 6 T a s k O r d e r 7 8 30 40 40 40 A B C D MO 401 -2008 Revisado • O Pipelining não ajuda na latência de uma tarefa, ajuda no throughput de toda a carga Time de trabalho 40 20 • O período do Pipeline é limitado pelo estágio mais lento • Múltiplas tarefas simultâneas • Speedup potencial = Número de estágios • Estágios não balanceados reduzem o speedup • O Tempo de “preenchimento” e de “esvaziamento“ reduzem o speedup 9 MO 401 -2006 1. 9

CPU Pipelines • Executam bilhões de instruções: throughput • Características desejáveis em um conjunto

CPU Pipelines • Executam bilhões de instruções: throughput • Características desejáveis em um conjunto de instruções (ISA) para pipelining? – Instruções de tamanho variável vs. Todas instruções do mesmo tamanho? – Operandos em memória em qq operações vs. operandos em memória somente para loads e stores? – Formato das instruções irregular vs. formato regular das instruções (ié. Operandos nos mesmos lugares)? MO 401 -2008 Revisado MO 401 -2006 1. 10

Um RISC Típico • Formato de instruções de 32 -bit (3 formatos) • Acesso

Um RISC Típico • Formato de instruções de 32 -bit (3 formatos) • Acesso à memória somente via instruções load/store • 32 GPR de 32 -bits (R 0 contém zero) • Instruções aritméticas: 3 -address, reg-reg, registradores no mesmo lugar • Modo de endereçamento simples para load/store (base + displacement) – Sem indireção • Condições simples para o branch • Delayed branch SPARC, MIPS, HP PA-Risc, DEC Alpha, IBM Power. PC, CDC 6600, CDC 7600, Cray-1, Cray-2, Cray-3 MO 401 -2008 Revisado MO 401 -2006 1. 11

Exemplo: MIPS (Localização dos regs) Register-Register 31 26 25 Op 21 20 Rs 1

Exemplo: MIPS (Localização dos regs) Register-Register 31 26 25 Op 21 20 Rs 1 16 15 Rs 2 11 10 6 5 Rd 0 Opx Register-Immediate 31 26 25 Op 21 20 Rs 1 16 15 Rd immediate 0 Branch 31 26 25 Op Rs 1 21 20 16 15 Rs 2 immediate 0 Jump / Call 31 26 25 Op MO 401 -2008 Revisado target 0 MO 401 -2006 1. 12

MIPS Datapath - 5 estágios Instruction Fetch Instr. Decode Reg. Fetch Execute Addr. Calc

MIPS Datapath - 5 estágios Instruction Fetch Instr. Decode Reg. Fetch Execute Addr. Calc Next SEQ PC Adder 4 Zero? RS 1 L M D MUX Data Memory ALU Imm MUX RD Reg File Inst Memory Address RS 2 Write Back MUX Next PC Memory Access Sign Extend WB Data MO 401 -2008 Revisado MO 401 -2006 1. 13

MIPS Datapath - 5 estágios Next SEQ PC Adder 4 RD RD RD MUX

MIPS Datapath - 5 estágios Next SEQ PC Adder 4 RD RD RD MUX Sign Extend MEM/WB Data Memory EX/MEM ALU MUX ID/EX Reg File IF/ID Memory Address Imm Write Back Zero? RS 1 RS 2 Memory Access MUX Next PC MO 401 -2008 Revisado Execute Addr. Calc Instr. Decode Reg. Fetch WB Data Instruction Fetch MO 401 -2006 1. 14

Pipelining Time (clock cycles) MO 401 -2008 Revisado Ifetch DMem Reg ALU O r

Pipelining Time (clock cycles) MO 401 -2008 Revisado Ifetch DMem Reg ALU O r d e r Ifetch ALU I n s t r. ALU Cycle 1 Cycle 2 Cycle 3 Cycle 4 Cycle 5 Cycle 6 Cycle 7 Ifetch Reg Reg DMem Reg MO 401 -2006 1. 15

Limites de Pipelining • Hazards: impedem que a próxima instrução seja executada no ciclo

Limites de Pipelining • Hazards: impedem que a próxima instrução seja executada no ciclo de clock “previsto” para ela – Structural hazards: O HW não suporta uma dada combinação de instruções – Data hazards: Uma Instrução depende do resultado da instrução anterior que ainda está no pipeline – Control hazards: Causado pelo delay entre o fetching de uma instrução e a decisão sobre a mudança do fluxo de execução (branches e jumps). MO 401 -2008 Revisado MO 401 -2006 1. 16

Memória Única (D/I) - Structural Hazards Time (clock cycles) Instr 2 Instr 3 Instr

Memória Única (D/I) - Structural Hazards Time (clock cycles) Instr 2 Instr 3 Instr 4 MO 401 -2008 Revisado Ifetch DMem Reg ALU Instr 1 Reg ALU Ifetch ALU O r d e r Load ALU I n s t r. ALU Cycle 1 Cycle 2 Cycle 3 Cycle 4 Cycle 5 Cycle 6 Cycle 7 Ifetch Reg Reg DMem Reg MO 401 -2006 1. 17

Memória Única (D/I) - Structural Hazards Time (clock cycles) Instr 1 Instr 2 Stall

Memória Única (D/I) - Structural Hazards Time (clock cycles) Instr 1 Instr 2 Stall Instr 3 MO 401 -2008 Revisado Reg Ifetch DMem Reg ALU Ifetch Bubble Reg DMem Bubble Ifetch Reg Bubble ALU O r d e r Load ALU I n s t r. ALU Cycle 1 Cycle 2 Cycle 3 Cycle 4 Cycle 5 Cycle 6 Cycle 7 Bubble DMem Reg MO 401 -2006 1. 18

Data Hazards • Read After Write (RAW) Instr. J lê o operando antes da

Data Hazards • Read After Write (RAW) Instr. J lê o operando antes da Instr. I escreve-lo I: add r 1, r 2, r 3 J: sub r 4, r 1, r 3 – Causada por uma “Dependência” (nomenclatura de compiladores). MO 401 -2008 Revisado MO 401 -2006 1. 19

Data Hazard em R 1 Time (clock cycles) and r 6, r 1, r

Data Hazard em R 1 Time (clock cycles) and r 6, r 1, r 7 or r 8, r 1, r 9 xor r 10, r 11 MO 401 -2008 Revisado Ifetch DMem Reg DMem Ifetch Reg ALU sub r 4, r 1, r 3 Reg ALU Ifetch ALU O r d e r add r 1, r 2, r 3 WB ALU I n s t r. MEM ALU IF ID/RF EX Reg Reg DMem Reg MO 401 -2006 1. 20

Data Hazards • Write After Read (WAR) Instr. J escreve o operando antes que

Data Hazards • Write After Read (WAR) Instr. J escreve o operando antes que a Instr. I o leia I: sub r 4, r 1, r 3 J: add r 1, r 2, r 3 K: mul r 6, r 1, r 7 • Chamada “anti-dependência” (nomenclatura de compiladores). Devido ao reuso do nome “r 1”. • Não ocorre no pipeline do MIPS: – Todas instruções usam 5 estágios, e – Leituras são no estágio 2, e – Escritas são no estágio 5 MO 401 -2008 Revisado MO 401 -2006 1. 21

Data Hazards • Write After Write (WAW) Instr. J escreve o operando antes que

Data Hazards • Write After Write (WAW) Instr. J escreve o operando antes que a Instr. I o escreva. I: sub r 1, r 4, r 3 J: add r 1, r 2, r 3 K: mul r 6, r 1, r 7 • Chamada “dependência de saída” (nomenclatura de compiladores). Devido ao reuso do nome “r 1”. • Não ocorre no pipeline do MIPS: – Todas Instruções são de 5 estágios, e – Escritas são sempre no 5 estágio – (WAR e WAW ocorrem em pipelines mais sofisticados) MO 401 -2008 Revisado MO 401 -2006 1. 22

Data Hazards – Solução por SW • Compilador reconhece o data hazard e troca

Data Hazards – Solução por SW • Compilador reconhece o data hazard e troca a ordem das instruções (quando possível) • Compilador reconhece o data hazard e adiciona nops Exemplo: sub R 2, R 1, R 3 ; reg R 2 escrito por sub nop ; no operation nop and R 12, R 5 or ; resultado do sub disponível R 13, R 6, R 2 add R 14, R 2 sw MO 401 -2008 Revisado 100 (R 2), R 15 MO 401 -2006 1. 23

Data Hazard Control: Stalls • Hazard ocorre quando a instr. Lê (no estágio ID)

Data Hazard Control: Stalls • Hazard ocorre quando a instr. Lê (no estágio ID) um reg que será escrito, por uma instr. anterior (no estágio EX, MEM, WB) • Solução: Detectar o hazard e parar a instrução no pipeline até o hazard ser resolvido • Detectar o hazard pela comparação do campo read no IF/ID pipeline register com o campo write dos outros pipeline registers (ID/EX, EX/MEM, MEM/WB) • Adicionar bubble no pipeline – Preservar o PC e o IF/ID pipeline register MO 401 -2008 Revisado MO 401 -2006 1. 24

MIPS Datapath - 5 estágios Next SEQ PC Adder 4 RD RD RD MUX

MIPS Datapath - 5 estágios Next SEQ PC Adder 4 RD RD RD MUX Sign Extend MEM/WB Data Memory EX/MEM ALU MUX ID/EX Reg File IF/ID Memory Address Imm Write Back Zero? RS 1 RS 2 Memory Access MUX Next PC MO 401 -2008 Revisado Execute Addr. Calc Instr. Decode Reg. Fetch WB Data Instruction Fetch MO 401 -2006 1. 25

Redução do Data Hazard - Forwarding or r 8, r 1, r 9 xor

Redução do Data Hazard - Forwarding or r 8, r 1, r 9 xor r 10, r 11 MO 401 -2008 Revisado Reg DMem Ifetch Reg ALU and r 6, r 1, r 7 Ifetch DMem ALU sub r 4, r 1, r 3 Reg ALU O r d e r add r 1, r 2, r 3 Ifetch ALU I n s t r. ALU Time (clock cycles) Reg Reg DMem Reg MO 401 -2006 1. 26

HW para Forwarding Next. PC mux MEM/WR EX/MEM ALU mux MO 401 -2008 Revisado

HW para Forwarding Next. PC mux MEM/WR EX/MEM ALU mux MO 401 -2008 Revisado ID/EX Registers Immediate Data Memory MO 401 -2006 1. 27

Data Hazard com Forwarding and r 6, r 1, r 7 or MO 401

Data Hazard com Forwarding and r 6, r 1, r 7 or MO 401 -2008 Revisado r 8, r 1, r 9 DMem Ifetch Reg DMem Reg Ifetch Reg Reg DMem ALU O r d e r sub r 4, r 1, r 6 Reg ALU lw r 1, 0(r 2) Ifetch ALU I n s t r. ALU Time (clock cycles) Reg DMem Reg MO 401 -2006 1. 28

Data Hazard com Forwarding and r 6, r 1, r 7 or r 8,

Data Hazard com Forwarding and r 6, r 1, r 7 or r 8, r 1, r 9 MO 401 -2008 Revisado Reg DMem Ifetch Reg Bubble Ifetch Bubble Reg Bubble Ifetch Reg DMem ALU sub r 4, r 1, r 6 Ifetch ALU O r d e r lw r 1, 0(r 2) ALU I n s t r. ALU Time (clock cycles) Reg DMem MO 401 -2006 1. 29

Load Hazards - Software Scheduling Código para (a, b, a = b + c;

Load Hazards - Software Scheduling Código para (a, b, a = b + c; d = e – f; Slow code: LW LW ADD SW LW LW SUB SW MO 401 -2008 Revisado c, d , e, f na memória). Rb, b Rc, c Ra, Rb, Rc a, Ra Re, e Rf, f Rd, Re, Rf d, Rd Fast code: LW LW LW ADD LW SW SUB SW Rb, b Rc, c Re, e Ra, Rb, Rc Rf, f a, Ra Rd, Re, Rf d, Rd MO 401 -2006 1. 30

22: add r 8, r 1, r 9 36: xor r 10, r 11

22: add r 8, r 1, r 9 36: xor r 10, r 11 MO 401 -2008 Revisado Reg DMem Ifetch Reg ALU r 6, r 1, r 7 Ifetch DMem ALU 18: or Reg ALU 14: and r 2, r 3, r 5 Ifetch ALU 10: beq r 1, r 3, 36 ALU Control Hazard - Branches (3 estágios de Stall) Reg Reg DMem Reg MO 401 -2006 1. 31

MIPS Datapath - 5 estágios Next SEQ PC Adder 4 RD RD RD MUX

MIPS Datapath - 5 estágios Next SEQ PC Adder 4 RD RD RD MUX Sign Extend MEM/WB Data Memory EX/MEM ALU MUX ID/EX Reg File IF/ID Memory Address Imm Write Back Zero? RS 1 RS 2 Memory Access MUX Next PC MO 401 -2008 Revisado Execute Addr. Calc Instr. Decode Reg. Fetch WB Data Instruction Fetch MO 401 -2006 1. 32

Exemplo: Impacto do Branch Stall • Se CPI = 1, 30% branches, 3 -cycle

Exemplo: Impacto do Branch Stall • Se CPI = 1, 30% branches, 3 -cycle stall CPI = 1. 9! • Solução para minimizar os efeitos: – Determinar branch taken ou não o mais cedo, e – Calcular o endereço alvo do branch logo • MIPS branch: testa se reg = 0 ou 0 • Solução MIPS: – Zero test no estágio ID/RF – Adder para calcular o novo PC no estágio ID/RF – 1 clock cycle penalty por branch versus 3 MO 401 -2008 Revisado MO 401 -2006 1. 33

Pipelined MIPS Datapath Instruction Fetch Write Back Adder Zero? RS 1 RD RD WB

Pipelined MIPS Datapath Instruction Fetch Write Back Adder Zero? RS 1 RD RD WB Data RD MUX Sign Extend MEM/WB Data Memory EX/MEM ALU MUX ID/EX Reg File IF/ID Memory Address RS 2 Imm MO 401 -2008 Revisado Memory Access MUX Next SEQ PC Next PC 4 Execute Addr. Calc Instr. Decode Reg. Fetch MO 401 -2006 1. 34

Alternativas para Branch Hazard #1: Stall até a decisão se o branch será tomado

Alternativas para Branch Hazard #1: Stall até a decisão se o branch será tomado ou não #2: Predict Branch Not Taken – – – Executar a próxima instrução “Invalidar” as instruções no pipeline se branch é tamado Vantagem: retarda a atualização do pipeline 47% dos branches no MIPS não são tomados, em média PC+4 já está computado, use-o para pegar a próxima instrução #3: Predict Branch Taken – 53% dos branches do MIPS são tomados, em média – “branch target address” no MIPS ainda não foi calculado » 1 cycle branch penalty » Em outras máquinas esse penalty pode não ocorrer MO 401 -2008 Revisado MO 401 -2006 1. 35

Alternativas para Branch Hazard #4: Delayed Branch – Define-se que o branch será tamado

Alternativas para Branch Hazard #4: Delayed Branch – Define-se que o branch será tamado APÓS a uma dada quantidade de instruções branch instruction sequential successor 1 sequential successor 2. . . . sequential successorn branch target if taken Branch delay de tamanho n (n slots delay) – 1 slot delay permite a decisão e o calculo do “branch target address” no pipeline de 5 estágios – MIPS usa está solução MO 401 -2008 Revisado MO 401 -2006 1. 36

Delayed Branch • Qual instrução usar para preencher o branch delay slot? – Antes

Delayed Branch • Qual instrução usar para preencher o branch delay slot? – Antes do branch – Do target address ( avaliada somente se branch taken) – Após ao branch (somente avaliada se branch not taken) MO 401 -2008 Revisado MO 401 -2006 1. 37

Delayed Branch MO 401 -2008 Revisado MO 401 -2006 1. 38

Delayed Branch MO 401 -2008 Revisado MO 401 -2006 1. 38

Delayed Branch • Compilador: single branch delay slot: – Preenche +/- 60% dos branch

Delayed Branch • Compilador: single branch delay slot: – Preenche +/- 60% dos branch delay slots – +/- 80% das instruções executadas no branch delay slots são utéis à computação – +/- 50% (60% x 80%) dos slots preenchidos são utéis MO 401 -2008 Revisado MO 401 -2006 1. 39

Revisão: Desempenho MO 401 -2008 Revisado MO 401 -2006 1. 40

Revisão: Desempenho MO 401 -2008 Revisado MO 401 -2006 1. 40

Qual o mais rápido? Plane DC to Paris Speed Passengers Throughput (pmph) Boeing 747

Qual o mais rápido? Plane DC to Paris Speed Passengers Throughput (pmph) Boeing 747 6. 5 hours 610 mph 470 286, 700 BAD/Sud Concorde 3 hours 1350 mph 132 178, 200 • Time to run the task (Ex. Time) – Execution time, response time, latency • Tasks per day, hour, week, sec, ns … (Desempenho) – Throughput, bandwidth MO 401 -2008 Revisado MO 401 -2006 1. 41

Definições • Desempenho (performance) é em unidades por segundo – Quanto maior melhor performance(x)

Definições • Desempenho (performance) é em unidades por segundo – Quanto maior melhor performance(x) = 1 execution_time(x) " X é n vezes mais rápido que Y" significa que: Execution_time(Y) Performance(X) n = = Performance(Y) MO 401 -2008 Revisado Execution_time(X) MO 401 -2006 1. 42

Aspectos sobre Desempenho de CPU (CPU Law) CPU time = Seconds = Instructions x

Aspectos sobre Desempenho de CPU (CPU Law) CPU time = Seconds = Instructions x Program Cycles x Seconds Instruction Cycle Inst Count CPI Clock Rate Program X Compiler X (X) Inst. Set. X X Organization Technology MO 401 -2008 Revisado X X X MO 401 -2006 1. 43

Instruções por Ciclo (Throughput) “Cycles per Instruction” médio CPI = (CPU Time * Clock

Instruções por Ciclo (Throughput) “Cycles per Instruction” médio CPI = (CPU Time * Clock Rate) / Instruction Count = Cycles / Instruction Count “Freqüência das Instruções” MO 401 -2008 Revisado MO 401 -2006 1. 44

Exemplo: Calculando CPI Base Machine (Reg / Reg) Op ALU Load Store Branch Freq

Exemplo: Calculando CPI Base Machine (Reg / Reg) Op ALU Load Store Branch Freq 50% 20% 10% 20% Cycles 1 2 2 2 CPI(i). 5. 4. 2. 4 1. 5 (% Time) (33%) (27%) (13%) (27%) Mix típico de instruções em programas MO 401 -2008 Revisado MO 401 -2006 1. 45

Exemplo: Impacto de Branch Stall • Assuma: CPI = 1. 0 (ignorando branches stall

Exemplo: Impacto de Branch Stall • Assuma: CPI = 1. 0 (ignorando branches stall por 3 ciclos) • Se 30% são branch, Stall 3 ciclos • Op • Other • Branch Freq 70% 30% Cycles CPI(i) (% Time) 1. 7 (37%) 4 1. 2 (63%) • => novo CPI = 1. 9, ou aproximadamente 2 vezes mais lento MO 401 -2008 Revisado MO 401 -2006 1. 46

Exemplo 2: Speed. Up para Pipelining For simple RISC pipeline, CPI = 1: MO

Exemplo 2: Speed. Up para Pipelining For simple RISC pipeline, CPI = 1: MO 401 -2008 Revisado MO 401 -2006 1. 47

Exemplo 3: Branch Alternativas Scheduling scheme Stall pipeline 3 Predict taken 1 Predict not

Exemplo 3: Branch Alternativas Scheduling scheme Stall pipeline 3 Predict taken 1 Predict not taken Delayed branch MO 401 -2008 Revisado Branch CPI speedup v. penalty stall 1. 42 1. 0 1. 14 1. 26 1 1. 09 1. 29 0. 5 1. 07 1. 31 MO 401 -2006 1. 48

Exemplo 4: Dual-port vs. Single-port • Máquina A: Dual ported memory (“Harvard Architecture”) •

Exemplo 4: Dual-port vs. Single-port • Máquina A: Dual ported memory (“Harvard Architecture”) • Máquina B: Single ported memory, porém seu pipelined é 1. 05 vezes mais rápido (clock rate) • CPI Ideal = 1 para ambas • Loads: 40% das instruções executadas Speed. Up. A = Pipeline Depth/(1 + 0) x (clockunpipe/clockpipe) = Pipeline Depth Speed. Up. B = Pipeline Depth/(1 + 0. 4 x 1) x (clockunpipe/(clockunpipe / 1. 05) = (Pipeline Depth/1. 4) x 1. 05 = 0. 75 x Pipeline Depth Speed. Up. A / Speed. Up. B = Pipeline Depth/(0. 75 x Pipeline Depth) = 1. 33 • Máquina A é 1. 33 mais rápida que a B MO 401 -2008 Revisado MO 401 -2006 1. 49

Revisão: Hierarquia de Memórias MO 401 -2008 Revisado MO 401 -2006 1. 50

Revisão: Hierarquia de Memórias MO 401 -2008 Revisado MO 401 -2006 1. 50

Processor-DRAM Memory Gap (latency) Performance 1000 10 1981 1982 1983 1984 1985 1986 1987

Processor-DRAM Memory Gap (latency) Performance 1000 10 1981 1982 1983 1984 1985 1986 1987 1988 1989 1990 1991 1992 1993 1994 1995 1996 1997 1998 1999 2000 1 µProc 60%/yr. “Moore’s Law” (2 X/1. 5 yr ) Processor-Memory Performance Gap: (grows 50% / year) DRAM 9%/yr. (2 X/10 yrs) CPU MO 401 -2008 Revisado Time MO 401 -2006 1. 51

Níveis em uma Hierarquia de Memórias Capacidade Access Time Custo CPU Registers 100 s

Níveis em uma Hierarquia de Memórias Capacidade Access Time Custo CPU Registers 100 s Bytes <1 s ns Cache 10 s-100 s K Bytes 1 -10 ns $10/ MByte Main Memory M Bytes 50 ns- 70 ns $1/ MByte Disk 10 s G Bytes, 10 ms (10, 000 ns) $0. 002/ MByte Tape “infinito” sec-min $0. 0014/ MByte MO 401 -2008 Revisado CPU Upper Level Staging Xfer Unit faster Registers Instr. Operands prog. /compiler 1 -8 bytes Cache Blocks cache cntl 8 -128 bytes Memory Pages OS 512 -4 K bytes Files user/operator Mbytes Disk Tape Larger Lower Level MO 401 -2006 1. 52

Princípio da Localidadde • Princípio da Localidade: – Programas acessam relativamente uma pequena porção

Princípio da Localidadde • Princípio da Localidade: – Programas acessam relativamente uma pequena porção do espaço de endereçamento em um dado instante de tempo. • Dois tipos de Localidade: – Localidadde Temporal (Localidade no Tempo): Se um item é referenciado, ele tende a ser referenciado outra vez em um curto espaço de tempo (loops) – Localidade Espacial (Localidade no Espaço): Se um item é referenciado, itens próximos também tendem a serem referenciados em um curto espaço de tempo (acesso a array) MO 401 -2008 Revisado MO 401 -2006 1. 53

Hierarquia de Memórias: Terminologia • Hit: o dado está no upper level (examplo: Block

Hierarquia de Memórias: Terminologia • Hit: o dado está no upper level (examplo: Block X) – Hit Rate: taxa de hit no upper level no acesso à memória – Hit Time: Tempo para o acesso no upper level, consiste em: RAM access time + Time to determine hit/miss • Miss: o dado precisa ser buscado em um bloco no lower level (Block Y) – Miss Rate = 1 - (Hit Rate) – Miss Penalty: Tempo para colocar um bloco no upper level + Tempo para disponibilizar o dado para o processador • Hit Time << Miss Penalty (500 instruções no 21264!) To Processor Upper Level Memory Lower Level Memory Blk X From Processor MO 401 -2008 Revisado Blk Y MO 401 -2006 1. 54

Cache: Direct Mapped Memory Address 0 1 2 3 4 5 6 7 8

Cache: Direct Mapped Memory Address 0 1 2 3 4 5 6 7 8 9 A B C D E F MO 401 -2008 Revisado Memory 4 Byte Direct Mapped Cache Index 0 1 2 3 • Posição 0 pode ser ocupada por dados endereços em memória: – 0, 4, 8, . . . etc. – Em geral: qq endereço cujos 2 LSBs são 0 s – Address<1: 0> => cache index • Qual dado deve ser colocado na cache? • Como definir o local, na cache, para cada dado? MO 401 -2006 1. 55

1 KB Direct Mapped Cache, 32 B blocks • Para uma cache de 2

1 KB Direct Mapped Cache, 32 B blocks • Para uma cache de 2 ** N byte: – Os (32 - N) bits de mais alta ordem são “Cache Tag” – Os M bits de mais baixa ordem são “Byte Select” (Block Size = 2 ** M) Example: 0 x 50 Stored as part of the cache “state” Valid Bit Cache Tag 0 x 50 : Cache Data Byte 31 Byte 63 Byte 1 Byte 0 0 Byte 33 Byte 32 1 2 3 : : Byte 1023 MO 401 -2008 Revisado 4 0 Byte Select Ex: 0 x 00 : Cache Tag 9 Cache Index Ex: 0 x 01 : : 31 Byte 992 31 MO 401 -2006 1. 56

Two-way Set Associative Cache • N-way set associative: N entradas para cada Cache Index

Two-way Set Associative Cache • N-way set associative: N entradas para cada Cache Index – N direct mapped caches opera em paralelo (N típico: 2 a 4) • Examplo: Two-way set associative cache – Cache Index: seleciona um “set” na cache – As duas tags no set são comparadas em paralelo – O Dado é selecionado basedo no resultado da comparação das tag Valid Cache Tag : : Adr Tag Compare Cache Index Cache Data Cache Block 0 : : Sel 1 1 Mux 0 Sel 0 Cache Tag Valid : : Compare OR MO 401 -2008 Revisado Hit Cache Block MO 401 -2006 1. 57

Desvantagem de Set Associative Cache • N-way Set Associative Cache v. Direct Mapped Cache:

Desvantagem de Set Associative Cache • N-way Set Associative Cache v. Direct Mapped Cache: – N comparadores vs. 1 – MUX extra, atrasa o acesso ao dado – Dado disponível APÓS Hit/Miss • Direct mapped cache: Cache Block disponível ANTES do Hit/Miss: É possível assumir um hite e continuar. Se miss, Recover. Valid Cache Tag : : Adr Tag Compare Cache Index Cache Data Cache Block 0 : : Sel 1 1 Mux 0 Sel 0 Cache Tag Valid : : Compare OR MO 401 -2008 Revisado Hit Cache Block MO 401 -2006 1. 58

Hierarquia de Memória: 4 Questões • Q 1: Em que lugar colocar um bloco

Hierarquia de Memória: 4 Questões • Q 1: Em que lugar colocar um bloco no upper level? (Block placement) • Q 2: Como localizar o bloco se ele está no upper level? (Block identification) • Q 3: Qual bloco deve ser trocado em um miss? (Block replacement) • Q 4: O que ocorre em um write? (Write strategy) MO 401 -2008 Revisado MO 401 -2006 1. 59

Q 1: Em que lugar colocar um bloco no upper level? • Colocar o

Q 1: Em que lugar colocar um bloco no upper level? • Colocar o Bloco 12 em uma cache de 8 blocos : – Fully associative, direct mapped, 2 -way set associative – S. A. Mapping = Block Number Modulo Number Sets Full Mapped Direct Mapped (12 mod 8) = 4 2 -Way Assoc (12 mod 4) = 0 01234567 Cache 111112222233 0123456789012345678901 Memory MO 401 -2008 Revisado MO 401 -2006 1. 60

Q 2: Como localizar o bloco se ele está no upper level? • Tag

Q 2: Como localizar o bloco se ele está no upper level? • Tag em cada bloco – Não é necessário testar o index ou block offset • O aumento da associatividade reduz o index e aumenta a tag Block Address Tag MO 401 -2008 Revisado Index Block Offset MO 401 -2006 1. 61

Q 3: Qual bloco deve ser trocado em um miss? • Fácil para Direct

Q 3: Qual bloco deve ser trocado em um miss? • Fácil para Direct Mapped • Set Associative or Fully Associative: – Random – LRU (Least Recently Used) – FIFO Assoc: 2 -way 4 -way 8 -way Size LRU Ran 16 KB 5. 2% 5. 7% 4. 7% 5. 3% 4. 4% 5. 0% 64 KB 1. 9% 2. 0% 1. 5% 1. 7% 1. 4% 1. 5% 256 KB 1. 15% 1. 17% 1. 13% 1. 12% MO 401 -2008 MO 401 -2006 Revisado 1. 62

Q 4: O que ocorre em um write? • Write through — A informação

Q 4: O que ocorre em um write? • Write through — A informação é escrita tanto no bloco da cache quanto no bloco do lower-level memory. • Write back — A informação é escrita somente no bloco da cache. O bloco da cache modificado é escrito na memória principal somente quando ele é trocaddo. – block clean or dirty? • Prós e Contras? – WT: read misses não pode resultar em writes – WB: não há repetição de writes na mesma posição • WT, em geral, é combinado com write buffers, assim não há espera pelo lower level memory MO 401 -2008 Revisado MO 401 -2006 1. 63

Write Buffer para Write Through Cache Processor DRAM Write Buffer • Um Write Buffer

Write Buffer para Write Through Cache Processor DRAM Write Buffer • Um Write Buffer colocado entre a Cache e a Memory – Processador: escreve o dado na cache e no write buffer – Memory controller: escreve o conteúdo do buffer na memória • Write buffer é uma FIFO: – Número típico de entradas: 4 – Trabalha bem se: freqüência de escrita (w. r. t. time) << 1 / DRAM write cycle • Memory system é um pesadelo para o projetista : – freqüência de escrita (w. r. t. time) – Saturação do Write buffer MO 401 -2008 Revisado -> 1 / DRAM write cycle MO 401 -2006 1. 64

Hierarquia de Memória Moderna • Tirando vantagens do príncipio da localidade: – Provê ao

Hierarquia de Memória Moderna • Tirando vantagens do príncipio da localidade: – Provê ao usuário o máximo de memória disponibilizada pela tecnologia mais barata. – Provê acesso na velocidade oferecida pela tecnologia mais rápida. Processor Control Speed (ns): 1 s Size (bytes): 100 s MO 401 -2008 Revisado On-Chip Cache Registers Datapath Second Level Cache (SRAM) Main Memory (DRAM) 10 s 100 s Ks Ms Tertiary Secondary Storage (Disk/Tape) (Disk) 10, 000 s 10, 000, 000 s (10 s ms) (10 s sec) Gs Ts MO 401 -2006 1. 65

Resumo #1/3: Pipelining & Desempenho • Sobreposição de tarefas; fácil se as tarefas são

Resumo #1/3: Pipelining & Desempenho • Sobreposição de tarefas; fácil se as tarefas são independentes • Speed Up Pipeline Depth; Se CPI ideal for 1, então: • Hazards limita o desempenho nos computadores: – Estrutural: é necessário mais recursos de HW – Dados (RAW, WAR, WAW): forwarding, compiler scheduling – Controle: delayed branch, prediction • Tempo é a medida de desempenho: latência ou throughput • CPI Law: CPU time MO 401 -2008 Revisado = Seconds Program = Instructions x Cycles x Seconds Program Instruction Cycle MO 401 -2006 1. 66

Resumo #2/3: Caches • Princípio da Localidade: – Programas acessam relativamente uma pequena porção

Resumo #2/3: Caches • Princípio da Localidade: – Programas acessam relativamente uma pequena porção do espaço de endereçamento em um dado instante de tempo. » Localidadde Temporal : Localidade no Tempo » Localidade Espacial : Localidade no Espaço • Cache Misses: 3 categorias – Compulsory Misses – Capacity Misses – Conflict Misses • Políticas de Escrita: – Write Through: (write buffer) – Write Back MO 401 -2008 Revisado MO 401 -2006 1. 67

Resumo #3/3: Cache Design • Várias Dimensões interagindo – – – Cache Size cache

Resumo #3/3: Cache Design • Várias Dimensões interagindo – – – Cache Size cache size block size associativity replacement policy write-through vs write-back Associativity Block Size • Solução ótima é um compromiso – Depende da característica dos acessos » workload » I-cache, D-cache, TLB – Depende da razão tecnologia / custo Bad Good Factor A Less MO 401 -2008 Revisado Factor B More MO 401 -2006 1. 68