O que influi no desempenho de CPU



Documentos relacionados
Tecnologias de Construção de Memórias e Memórias RAM, entrelaçada e Virtual

Caminho dos Dados e Atrasos

Predição de Desvios e Processadores Superescalares Especulativos

Memória cache. Prof. Francisco Adelton

ARQUITETURA DE COMPUTADORES

Concurso Público para provimento de cargo efetivo de Docentes. Edital 20/2015 CIÊNCIA DA COMPUTAÇÃO I Campus Rio Pomba

Arquitetura e Organização de Computadores

Paralelismo a Nível de Instrução

Arquitetura de processadores: RISC e CISC

Processadores Superescalares - Avançando na exploração de paralelismo entre instruções

armazenamento (escrita ou gravação (write)) recuperação (leitura (read))

Medidas de Desempenho e a Lei de Amdahl

Organização e Arquitetura de Computadores I. de Computadores

Gerência de Memória. Paginação

Aula 14: Instruções e Seus Tipos

Aula 26: Arquiteturas RISC vs. CISC

Capítulo 4 Gerenciamento de Memória

Organização de Computadores 1

Introdução à Engenharia de Computação

Explorando o paralelismo entre instruções

Arquitetura de Computadores Moderna

O hardware é a parte física do computador, como o processador, memória, placamãe, entre outras. Figura 2.1 Sistema Computacional Hardware

Arquitetura de Computadores I

Gerenciamento de memória

Memórias. O que são Memórias de Semicondutores? São componentes capazes de armazenar informações Binárias (0s e 1s)

ORGANIZAÇÃO BÁSICA DE COMPUTADORES E LINGUAGEM DE MONTAGEM

CEFET-RS Curso de Eletrônica

Microcontroladores e Interfaces 3º Ano Eng. Electrónica Industrial

Memória Cache. Prof. Leonardo Barreto Campos 1

2. A influência do tamanho da palavra

Organização de Computadores Como a informação é processada?

Organização e Arquitetura de Computadores I

Unidade Central de Processamento (CPU) Processador. Renan Manola Introdução ao Computador 2010/01

Arquitecturas Alternativas. Pipelining Super-escalar VLIW IA-64

Sistemas Operacionais Arquivos. Carlos Ferraz Jorge Cavalcanti Fonsêca

CAPÍTULO 2 ORGANIZAÇÃO DE COMPUTADORES

Sistemas Microcontrolados

Organização e Arquitetura de Computadores. Capítulo 13 Paralelismo no nível de instruções

Marcos da Arquitetura de Computadores (1)

O Funcionamento do Processador

Algumas características especiais

Organização de Computadores 1. Prof. Luiz Gustavo A. Martins

Infraestrutura de Hardware. Memória Virtual

Algoritmos DCC 119. Introdução e Conceitos Básicos

SSC510 Arquitetura de Computadores. 2ª aula

Informática I. Aula 5. Aula 5-13/05/2006 1

Sistemas MIMD. CES-25 Arquiteturas para Alto Desmpenho. Paulo André Castro

Arquitetura de Computadores II

Circuitos de Memória: Tipos e Funcionamento. Fabrício Noveletto

Capítulo 4 Gerenciamento de Memória

Sistemas Operacionais. Prof. André Y. Kusumoto

Arquiteturas RISC. (Reduced Instructions Set Computers)

Processador ( CPU ) E/S. Memória. Sistema composto por Processador, Memória e dispositivos de E/S, interligados por um barramento

Capítulo 3. Avaliação de Desempenho. 3.1 Definição de Desempenho

BACHARELADO EM SISTEMAS DE INFORMAÇÃO EaD UAB/UFSCar Sistemas de Informação - prof. Dr. Hélio Crestana Guardia

Os textos nestas caixas foram adicionados pelo Prof. Joubert

Arquitetura de Computadores - Processadores Superescalares. por Helcio Wagner da Silva

Universidade Federal do Rio de Janeiro Pós-Graduação em Informática IM-NCE/UFRJ. Pipeline. Gabriel P. Silva. Microarquitetura de Alto Desempenho

Pipelining - analogia

Memória RAM. A memória RAM evolui constantemente. Qual a diferença entre elas? No clock (velocidade de comunicação com o processador)

Arquitetura e Organização de Computadores

RISC X CISC - Pipeline

Introdução à Arquitetura de Computadores

Memória ROM. Organização Funcional de um. Computador. ROM (Read-Only Memory) Memória Somente Leitura.

Organização de Computadores 1

Modos de entrada/saída

Organização e Arquitetura de Computadores I

Exemplo: CC1 CC2 CC3 CC4 CC5 CC6 CC7 CC8 CC9 ADD $s0, $t0, $t1 IF ID EX MEM WB SUB $t2, $s0, $t3 IF Stall Stall ID EX MEM WB

Arquitetura de Computadores Paralelismo, CISC X RISC, Interpretação X Tradução, Caminho de dados

ANHANGUERA EDUCACIONAL. Capítulo 2. Conceitos de Hardware e Software

Introdução à Organização de Computadores. Sistemas da Computação Prof. Rossano Pablo Pinto, Msc. rossano at gmail com 2 semestre 2007

Introdução à Arquitetura de Computadores. Renan Manola Introdução ao Computador 2010/01

Introdução. Uso do disco Vantagens Desvantagens Baixo custo, facilidade de manutenção do software e do hardware, simetria e flexibilidade

ULA Sinais de Controle enviados pela UC

Diminui o gargalo existente entre processador e memória principal; 5 a 10 vezes mais rápidas que a memória principal; Ligada diretamente à MP;

Introdução à estrutura e funcionamento de um Sistema Informático

Arquitetura de Von Neumann e os Computadores Modernos

Máquinas Multiníveis

Aula 19. Conversão AD e DA Técnicas

Universidade Federal do Rio de Janeiro Pós-Gradução em Informática. Microarquiteturas de Alto Desempenho. Multithreading. Gabriel P. Silva.

Tais operações podem utilizar um (operações unárias) ou dois (operações binárias) valores.

ARQUITETURA DE COMPUTADORES

O Hardware Dentro da Unidade do Sistema

Gerenciamento de Entrada e Saída Hélio Crestana Guardia e Hermes Senger

28/9/2010. Paralelismo no nível de instruções Processadores superescalares


Arquitetura de Computadores I

Aula 06. Memórias RAM

Introdução à Arquitetura de Computadores

Memória - Gerenciamento. Sistemas Operacionais - Professor Machado

Sistemas Computacionais II Professor Frederico Sauer

MEMÓRIA M.1 - HIERARQUIA DE MEMÓRIAS NUM COMPUTADOR DIGITAL

Capítulo 8 Arquitetura de Computadores Paralelos

Arquitetura de Computadores - Arquitetura RISC. por Helcio Wagner da Silva

Microarquiteturas Avançadas

PROCESSADOR. Montagem e Manutenção de Microcomputadores (MMM).

Aulas 17 & 18. Comutação Rápida a Pacote. Eytan Modiano MIT

Introdução a Organização de Computadores Aula 4

Transcrição:

Lei de Amdahl O ganho de desempenho possível de um dado melhoramento é limitado pela fração de tempo que a característica melhorada é usada. Suponha que um aperfeiçoamento ofereça um ganho de desempenho S para uma fração do tempo F. Qual o ganho de desempenho? Exemplo Se um computador executa um programa P em 100 segundos, onde 30% das operações são acessos a memória com tempo médio de acesso de 80ms e 60% são operações de ponto flutuante. A)Qual o impacto no desempenho global do sistema, ao se diminuir o tempo médio de acesso a memória pela metade? B)Qual o impacto no desempenho global, ao dobrar o desempenho das op. de ponto flutuante? Exemplo 2 Se um computador executa um programa P em 100 segundos, onde 80% das operações são multiplicações. Quanto seria preciso melhorar o desempenho das multiplicações para que o sistema tive um ganho de desempenho de cinco vezes? Desempenho Todos os componentes influem mas... O desempenho da CPU é crítico para o desempenho do Computador. desempenhocpu(x)= 1/TempoCPU(X) O que influi no desempenho de CPU Que programas utilizar para medir desempenho? Desempenho é medido com base em tempos de execução de programas selecionadas. Então, como selecionar? Situação ideal: usuário sabe exatamente quais programas utiliza com quais dados de entrada e testa nos computadores seus desempenhos. Factível? 1

Candidatos a programas de avaliação (benchmark) Programas reais Dados de entrada portabilidade Aplicações modificadas Uso de scripts para fornecer a interatividade Kernels Implementam trechos de código comuns em vários programas. Por exemplo: laços com operação de vetores (Linpack) Candidatos a programas de avaliação (benchmark) 2 Toy Benchmarks: Crivo de Eratóstenes, QuickSort, etc. Benchmarks Sintéticos Semelhante aos kernels, porém utilizam freqüência média de instruções em grandes programas para selecionar as instruções. Ex. Whetstone e Dhrystone. Pacotes de programas de benchmark Reunem vários outros benchmarks individuais para formar um pacote Ex. SPEC(Standard Performance Evaluation Corporation) Programas de benchmark Há muitos programas de benchmark disponíveis. Não há melhores ou piores, há aqueles mais ou menos adequados ao seu problema Embora se utilize freqüentemente dados de um benchmark para avaliar de forma absoluta dois computadores, lembre-se: Desempenho é relativo ao programa!! Exemplos de benchmark: Família SPEC www.spec.org Riscos do uso de Benchmarks Atualmente existem vários benchmarks focados em medir o desempenho de sistemas embutidos ver EEMBC (The Embedded Microprocessor Benchmark Consortium) Como muitas decisões de compra são feitas com base em benchmark, os projetistas são pressionados a otimizarem seus projetos para o benchmark Como Melhorar o desempenho? Instruction Set Pipeline, processadores superescalares, matriciais, vetoriais, etc. Organização Hierarquia de Memória, barramentos especializados, memória entrelaçada, etc. Tecnologia Aumento da Taxa de clock, consumo de potência, etc. Isso é realmente bom? 2

Projetando Instruções Instruções com tempo de execução muito diferentes ou com número de fases muito diferentes não são adequadas para uma linha de produção (pipeline) Porque não criar instruções simples com pequenas diferenças em tempo de ex. de fases (e mesmo número de fases) Abordagens para Conjuntos de Instruções Não seria mais vantajoso: Criar instruções poderosas que resolvessem problemas comuns ao invés de instruções simples que resolvem quase nada? Abordagens para Conjuntos de Instruções Final dos anos 70, surge a idéia de Computadores de arquitetura de alto nível (HLLCA High Level Language Computer Architecture) No ínicio dos anos 80, Ditzel e Patterson argumentavam que arquiteturas mais simples seriam o melhor caminho e apresentam a idéia do Reduced Instruction Set Computer (RISC) Desenvolvimento Os desenvolvimentos RISC e CISC continuaram em paralelo,disputando mercado A arquitetura teve três grandes projetos iniciais: RISC de Berkeley(Patterson e outros) IBM 801 MIPS de Stanford (Hennessy e outros) Na mesma época, alguns projetistas (VAX) refutaram a idéia e seguiram construindo computadores baseados em conjuntos de instrução complexos (Complex Instruction Set Computer, CISC) RISC x CISC Para ajudar a resolver o debate entre RISC e CISC, os projetistas do VAX fizeram uma comparação entre o VAX 8700 e o MIPS M2000 no início dos anos 90. VAX: Modos de endereçamentos poderosos, instruções eficientes, codificação de instrução eficiente e poucos registradores MIPS M2000: Instruções simples, modos de endereçamentos simples, formato de instruções de comprimento fixo, grande número de registradores, pipelining Os computadores tinham organizações semelhantes e tempos de clock iguais Gráfico de Desempenho MIPS / VAX 3

RISC x CISC Finalmente, sobreviveu apenas um CISC a este embate: x86 Alto volume de chips Compatibilidade binária com o software do PC Conversão interna de CISC para RISC Escala suficiente para suportar o hardware extra RISC x CISC Mercado Embutido Celulares, PDAs, eletrodomésticos,... Crítico Custo e Energia: Não há espaço para conversão de hardware Utiliza Compiladores e Arquiteturas RISC Em 2000, o número de processadores embutidos comercializados foi mais de duas vezes o número de processadores x86 (mais de 90% deles RISC) Abordagens para Arquitetura de Conjuntos de Instruções Comparando Instruções Numéricas Registradores de Propósitos Gerais dominam Exemplos de Formato de Conjunto de instruções 4

Mundo RISC (CISC) Exploração do Paralelismo Entre fases Entre Instruções Entre Threads Entre programas Solução dos novos problemas trazidos pelo paralelismo Dentro da CPU: Como realmente funciona um computador Os cinco componentes clássicos de um Computador - Controle Processador com Acumulador: Um Caso Extremamente Simples Microprograma da CPU com Acumulador Revisão: Como Funciona o Hardware Digital 5

Processador = Software implementado em Hardware Digital Revisão: Como Funciona o Hardware Digital Representação Numérica e Operações Matemáticas Lógica Digital Memória Transistor Representação Numérica Sistema Base Alfabeto Decimal 10 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 Binário 2 0, 1, Octal 8 0, 1, 2, 3, 4, 5, 6, 7, Hexadecimal 16 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,A,B,C,D,E,F Equivalência entre os sistemas: (29)base 10 = (11101)base 2 = (35)base 8 = (1D)base 16 Representação de Números Um número em base B, pode ser representado como (a j, a j-1,a j-2,...a 0 ) B, onde 0 a k B-1 e escrito na forma polinomial: a j B j + a j-1 B j-1 +a j-2 B j-2 +...+a 1 B 1 +a 0 B 0 Logo: (347) 10 = 3 x I0 2 + 4 x l0 1 + 7 x 10 0 Conversão de Base (10111) 2 = 1 x 2 4 + 0 x 2 3 + 1 x 2 2 + 1 x 2 1 + 1 x 2 0 Computadores e Sistema Binário Complemento de 2 Números Negativos (dois zeros) Complemento de 2 Conversão de Base: Números Fracionários (ponto flutuante) Mantissa e expoente Se Positivo (isto é, bit de sinal igual a zero): Conversão Normal Se Negativo: Complementa número sem sinal, adiciona 1 e faz a Conversão Normal 6

Deslocamento Números Fracionários (Ponto Flutuante) Inteiros (15) 10 = (01111) 2 = 2 3 +2 2 +2 1 +2 0 = 8+4+2+1 Números binários fracionários (1,5) 10 = (1,1) 2 = 2 0 +2-1 = 1+0,5 = (1,5) 10 (0,101) 2 = 1*2-1 +0*2-2 + 1*2-3 = 0,5+0+0,125 = (0,625) 10 Conversão de Números Fracionários Conversão de Fracionários De binário para Decimal: (0.1011) 2 = 2-1 +2-3 +2-4 = 0,5+0,125+0,0625 = = (0,6875) 10 (0.1001) 2 = 2-1 +2-4 = 0,5+0,0625 = (0,5625) 10 (111.101) = 2 2 + 2 1 +2 0 + 2-1 + 2-3 = 4+2+1 + 0,5+0,125= (7,625) 10 Conversão de Fracionários para base 2 2,25 -> Parte Inteira: (2) 10 = (10) 2 -> Parte Fracionária (0,25) 10 = (0.01) 2 Número: (2,25) 10 = (10,01) 2 Conversão de Fracionários - 2 Algoritmo para Conversão de Base A representação em base 10 (0,d 1 d 2..d j-1 d j ) pode ser obtida através dos seguintes passos: Observe que o algoritmo pode nunca parar... Como solucionar o problema do possível loop infinito? 7

Conversão de Base Ponto Flutuante em Computadores Processador = Software implementado em Hardware Digital Revisão: Como Funciona o Hardware Digital Representação Numérica e Operações Matemáticas Lógica Digital Memória Transistor Lógica Digital (Booleana) 8

Portas Lógicas 9

A suficiência da Porta NAND Portas lógicas podem ser implementadas dentro de Chips Portas Lógicas em Transistores Multiplexadores Multiplexar significa transmitir um grande número de informações através de um número pequeno de linhas ou canais 2^n linhas de entrada para uma saída e n linhas de controle As linhas de controle especificam QUAL das 2^n possibilidades é transmitida para a saída Implementando um multiplexador: Exercício Implementando um multiplexador: Solução 10

Somadores Somadores - 2 Meio-somador (sem contabilização de carry ou vaium ) Efetua a adição de 2 dígitos binários (não leva em consideração o vai-um ) Entradas: A e B - os 2 bits a serem somados Saídas: Somador Completo Efetua a adição de 2 dígitos binários (não leva em consideração o vai-um ) Entradas: A e B - os 2 bits a serem somados e o vem-um Saídas: S e C - a Soma e o bit de Vai-um (Carry) S e C - a Soma e o bit de Vaium (Carry) Somador Completo Memória Circuitos Combinacionais não possuem capacidade de armazenamento da informação A mudança dos valores das entradas implica necessariamente uma mudança dos valores das saídas Um Flip Flop é uma célula binária capaz de armazenar um bit de informação (multivibrador biestável) Flip Flops Sinal de Clock (Relógio) Tem 2 saídas: uma para o valor considerado normal e outra o complemento deste valor Um FF mantém o valor da saída (diz-se o seu ESTADO) até que um SINAL (clock) o comande TROCAR DE ESTADO Sinal de clock (relógio) Tipos comuns de Flip Flops RS D JK As mudanças de estado só acontecem com a transição do sinal do Relógio do circuito Sincronização no sistema As mudanças podem ocorrer tanto na borda ascendente quanto descendente 11

Flip Flop RS 2 entradas: R e S R para Reset (colocar no estado O) S para Set (colocar no estado 1) Flip Flop JK Modificação no FF RS. O estado indefinido do FF RS é definido no FF JK 2 entradas: J e K K para Reset (colocar no estado O) J para Set (colocar no estado 1) Flip Flop D Implementação de Flip Flop D em Portas Lógicas 1 entrada D (de Dado) Transfere o dado de entrada para a saída Um Processador de Registradores de Propósitos Gerais (MIPS de ciclo único) Um Processador Simples com Registradores de Propósitos Gerais 12

Um Exemplo: MIPS Principais Instruções Adição add R1,R2,R3; R1 = R2 + R3 Formato dos Conjunto de Instruções MIPS Subtração sub R1,R2,R3; R1 = R2 R3 Adição de constante (add immediate ) addi R1,R2,100; R1 = R2 + 100 Multiplicação (resultado em 64 bits) mult R2,R3; Hi, Lo = R2 x R3 Divisão (resultado em 64 bits) div R2,R3; Lo = R2 R3, Hi = R2 mod R3 Lo = quotient, Hi = remainder Um Exemplo: MIPS Principais Instruções Formato de Instruções MIPS Alterar memória (word) SW R3, 500(R4) Mem[R4 + 500] =R3 Ler memória (word) LW R1, 30(R2) R1 = Mem[R2 + 30] Desvio Condicional beq R1,R2,100 if (R1 == R2) go to PC+4+400 Desvio incondicional (constante) jump j 2500; go to 10000 Desvio incondicional (registrador) jr R31; go to R31 Unidades Funcionais e Controle no MIPS Carregamento de Instrução 13

Controlando Operações R-type Adição/Subtração/And/or... IF no fim de uma instrução Instrução Load Instrução Store Instrução de Desvio Condicional IF ao fim de uma instrução de desvio condicional 14

Desvio não condicional IF ao fim de uma desvio não-condicional Sumário dos Sinais de Controle Decodificação Local Controle da ALU 15

Como melhorar desempenho? Desempenho é o inverso do tempo... O tempo de execução de uma instrução é a soma dos tempos gastos pelas unidades funcionais O que faz a ULA enquanto se carrega uma nova instrução? O que faz a unidade de memória enquanto a ULA realiza uma operação? Idéia: usar o pipeline...mas é necessário controlar o pipeline, o controle é igual? Melhorando o desempenho com Pipeline Pipeline Pipeline: Uma idéia natural Linhas de montagem Dividir a tarefa em sub-tarefas seqüenciais, alocar recursos para cada sub-tarefa e controlar as mudanças de fase Pipeline de Ciclo de Instrução Pipeline do ciclo de instrução: uma instrução pode ser (por exemplo) dividida em: Recuperação da instrução (RI) IF, Decodificação da instrução (DI) ID, Obtenção dos operandos (OO), Execução (EX) e Armazenamento do resultado (AR). Ex: Lavanderia Lavar e Secar: 4h. Logo, 4 cestas demorariam 16h Lavar: 2h e Secar: 2h. Quanto 4 cestas demorariam? 10h Instruções paralelizadas Qual o ganho de desempenho com pipeline? Diagramas Estágio x Tempo 16

Conceitos Básicos n: número de instruções p: número de estágios do pipeline; Tj (1 j p): demora em Ej; TL: demora de transição de estágio T: período de clock (ciclo de máquina) Tmax= max{ti} T = Tmax + TL; f: freqüência = 1/T; Medindo o ganho... Gp: ganho com p estágios Ganho = (Tempo sem pipeline)/(tempo com pipeline) Sem pipeline: t1 = n * p * T Com pipeline: tp = (p + n 1) * T Gp = n*p / (p+n -1) Se n >> p, Gp aproximadamente p Então, quanto maior p maior o ganho? Eficiência do Pipeline Produtividade (throughput) η: eficiência relação entre a área ocupadae a área total do diagrama Estágio x Tempo W: produtividade número de tarefas completadas por unidade de tempo Impedimentos Problemas no Pipeline Impedimentos para valores máximosem ganho, eficiência e produtividade: Estágios de diferentes tempos Falhas em caches Instruções de diferentes durações Dependências Recursos Desvios e interrupções nos programas Dados 17

O Problema do Desnível entre Fases e Instruções Problemas no Pipeline: Dependências Conflito de Recursos Dependência de Dados RAW: Read After Write WAR: Write After Read WAW: Write After Write Dependência de Controle Predição de Desvios, Desvios Retardados Conflito de Recursos Também conhecido por Hazard Estrutural ou ainda Dependência Funcional Resultado da competição de duas ou mais instruções pelo mesmo recurso ao mesmo tempo Soluções: uma das instruções deve esperar aumento dos recursos Controle do Uso de Recursos Quando uma dependência envolve apenas recursos da CPU (registradores ou unidades funcionais), costuma-se usar uma tabela de reserva dos recursos. Toda instrução antes de ser executada faz um cheque na tabelasobre os recursos que utilizará; se algum(uns) dele(s) estiver(em) marcado(s), ela é bloqueada, até eles sejam liberados. Após o uso, a instrução libera o recurso desmarcando a tabela de reserva Se a dependência envolver local de memóriapode-se utilizar um sistema de bloqueio desse local. Dependência de Dados Dependência WAR (Write After Read) A = B+ C B = C + D Causa Problemas? Falsa Dependência: sem problemas desde que não exista execução fora de ordem Dependência de Dados Dependência WAW (Write After Write) A = B+C A = D+E Causa Problemas? Falsa Dependência: sem problemas desde que não exista execução fora de ordem 18

Dependência de Dados Dependência RAW (Read After Write) I1: A = B+ C I2: E = A + D Causa Problemas? Sim. Instrução I2 só pode captar o valor de A após o término da instrução I1 Solução Simples Atrasar instrução I2. Quantos Clocks? Pipeline MIPS O MIPS utiliza um pipeline com profundidade 5, porém com uma divisão de fases diferente da tradicional: RI, DI, OO, EX, AR. Fases do pipeline MIPS: IF: Instruction Fetch carregamento de instrução ID/RF: Decodificação de registradores e carregamento de registradores EX: execução MEM: Acesso a memória para acessar dados (load e store) WB: Armazenamento do resultado Visão do pipeline MIPS com Unidades Funcionais IF ID/RF EX MEM WB Problemas no Pipeline: Dependências Dependência (Conflito) de Recursos Dependência de Dados RAW: Read After Write WAR: Write After Read WAW: Write After Write Dependência de Controle Predição de Desvios, Desvios Retardados Dependência de Dados - RAW Implementando o atraso do Pipeline através de Hardware Solução: atrasar o pipeline (via SW ou via HW) 19

Implementando o atraso do pipeline através de software Dependência RAW ao Carregar dados Dependência RAW no carregamento Atrasando o pipeline em carregamento de dados Quantos clocks são necessários? Obs.: O dado estará disponível ao final de MEM, não ao final de EX como nas Operações R-type Dependências RAW Redução de Penalidade em R-Type: Bypassing Esses problemas são comuns? Operações R-type: 3 bolhas (stalls) por dependência Logo, 3 unidades funcionais ociosas. Há como evitar a ocorrência da dependência? Há como diminuir a ociosidade? 20

Encaminhamento em Carregamentos Implementando o Bypassing Seria possível eliminar este atraso? Necessário mais multiplexadores para receber entrada dos dados Assume-se que durante ID/RF, as gravações são feitas antes das leituras Como controlar o Encaminhamento? Controle de Bypassing Com bypassing (novas opções): Saída da EX, Saída da DM (memória) e Saída da DM (EX) Perguntas: 1) Porque não saída de WB? 2) Porque buscar valor calculado em EX na Saída de DM? Instruction Level Paralelism (ILP) Pipelining cria uma barreira teórica de CPI(Clock por instrução) igual a 1,0. Além do Pipeline: Processadores Superescalares 21

Limites do Pipelining CPI real = CPI teórico + atrasos estruturais + atrasos por dependência de dados + atrasos por desvios CPI teórico em pipeline é aproximadamente 1 Logo CPI real >1. Como poderia ser alterada a cpu para obtermos CPI < 1? Idéias? Como avançar na exploração do paralelismo entre instruções Pipeline Super-pipeline Aprofundar o pipeline, fazendo com que as fases clássicas levem vários ciclos Superescalar Linhas de execução em paralelo Novas dependências VLIW Cada pacote, especifica várias instruções Em busca de CPI menor que 1 Superescalar: Instruções ordenadas por compilador ou por hardware (algoritmo de Tomasulo) PowerPC, Sun SPARC, Cell Be (Playstation...), x86, etc. Very Long Instruction Word (VLIW): Instruções organizadas em pacotes pelo compilador. Bastante utilizada em sistemas embutidos Chamado de EPIC pela Intel. Ex.: Itanium Avançando em ILP Mesmo em processadores RISC necessariamente há instruções com tempos de execução muito diferentes. Exemplos: soma de inteiros (add) e divisão de ponto flutuante (DIV.D) Qual o problema? Qual a Solução? Avançando em ILP Permitir mais de uma instrução entrar na fase de execução Emissão em ordem Tempos diferentes de execução Logo, possível conclusão fora de ordem Dependências WAW e WAR e Conclusão de Execução Fora de Ordem 22

Conclusão Fora de Ordem Exemplo: DIV.D F0,F2,F4 ADD.D F10,F0,F8 SUB.D F12,F8,F14 Problema:? SUB é atrasada(desdobrada) Solução: Executar SUB.D antes de ADD.D Problemas no Escalonamento Dinâmico Exemplo 2: I1: DIV.D F0,F2,F4 I2: ADD.D F6,F0,F8 I3: SUB.D F8,F10,F14 I4: MUL.D F6,F10,F8 Dependências? Executar na ordem: I1,I3,I2,I4 diminui atrasos. Problemas? Como resolver? Solução para Dependências Falsas Requisito: Permitir execução fora de ordem, sem mudar o resultado do programa Renomear registradores para evitar falsas dependências (WAW e WAR) Exemplo (WAW): MUL.D R1,R2,R3 ADD.D R2, R1,R3 SUB.D R1,R4,R5 Solução: MUL.D R1,R2,R3 ADD.D R2, R1,R3 SUB.D R5,R4,R5 (Substituir R1 por R5, isto é, outro registrador não utilizado (não lido) até seu próximo ponto de gravação) Requisitos para Solução Exemplo (WAR): MUL.D R1,R2,R3 ADD.D R6,R1,R2 SUB.D R3,R4,R5... ADD.D R9,R4,R3 Solução: MUL.D R1,R2,R3 ADD.D R6,R1,R2 SUB.D R8,R4,R5 (Substituir R3 por R8, isto é outro registrador não utilizado (não lido) até seu próximo ponto de gravação)... ADD.D R9,R4,R8 Requisitos para Solução Identificar instruções sem dependências e permitir que ultrapassem instruções com dependências Identificar e Bloquear instruções com dependências de dados ou dependências estruturais Manter o pipeline o mais eficiente possível Métodos de Solução Software Com grandes conjuntos de registradores, o compilador pode eliminar perigos WAR e WAW através de renomeação Eventualmente pode usar moves entre registradores Erros (ou omissão) no compilador podem levar a baixa eficiência do processador!!! Hardware Não tem como observar instruções à frente, mas consegue eliminar dependência em relação a registradores Scoreboard Algoritmo de Tomasulo 23

Tomasulo Informações de Controle Estações de Reserva Op: código da operação Qj,Qk : Estações de reserva que produzirão o operando Vj,Vk : O valor dos operandos de origem, apenas um valor entre V e Q é valido. Em instruções de carga, guarda o endereço A : Usado para guardar informações sobre cálculo de endereços Busy: Indica se a estação de reserva está sendo usada ou não Registradores Qi: O número da estação de reserva que irá gerar o resultado, se zero o valor do registrador é o valor correto Exemplo de aplicação com Tomasulo Instruções L.D F6,34(R2) L.D F2,45(R3) MUL.D F0,F2,F4 SUB.D F8,F2,F6 DIV.D F10,F0,F6 ADD.D F6,F8,F2 Exemplo Tomasulo Instante 1 Exemplo Tomasulo - Instante 2 24

Estados das Instruções Instante 2 - Tomasulo Fonte: Hennessy & Patterson, pg. 140. Erro no Livro: F0 (e não F2) será gravada por Mult1 Memória: O Gargalo de Von Neuman Memória principal: considerada como sendo o gargaloda arquitetura de Von Neumann: O ciclo da memória principal costuma ser 4 a 20 vezes maiorque o ciclo de máquina. Sistemas de Memória Se o processador não recebe instruções tão rapidamente quanto ele pode processar, o que ele faz? Como tornar a memória tão rápida quanto a CPU? Sistema de Memória Porque toda a memória de um computador não pode ser feita da mesma tecnologia da CPU? Seu custo seria elevadíssimo, pois o volume de informações é muito grande. A tecnologia da CPU tipicamente produz memórias voláteis. Sistema de Memória Muitas informações devem permanecer, mesmo após a máquina ser desligada. Memória não-volátil Volatilidade versus Desempenho Memórias voláteis tender a ser sempre mais rápidas que memórias nãovoláteis Importante: Grande parte das informações não é utilizada considerando pequenos intervalos de tempo. 25

Princípio da Localidade Os programas tendem a reutilizar dados e instruções que usaram recentemente. Regra prática : um programa passa 90% de seu tempo de execução em 10% de seu código. Também aplica-se a dados mas não tão fortemente quanto em instruções. Hierarquia de Memória Dois Tipos de localidade: Localidade espacial Localidade Temporal Como tirar vantagem dessa característica para obter mais desempenho? Perguntas Os níveis mais altos devem ser sempre mais rápidos e os mais baixos maiores. Por quê? Em que situação é vantajoso introduzir novos níveis na hierarquia? Ao colocar informações nos níveis mais altos, deve-se apagar dos níveis mais baixos? Níveis de Memória Visíveis Registradores Memória de trabalho da CPU para armazenamento temporário de instruções e dados; registradores de propósitos gerais, vários registradores de propósitos específicos (AR, PC, IR, SP, Flags, etc.); Memória Principal Em comparação com os registradores da CPU, sua tecnologia costuma ser inferiore sua capacidade de armazenamento é bem maior Deve ser suficientemente grande para armazenar os programas em execução e seus respectivos dados Até 70 vezes mais lenta que os registradores Memória Secundária Não volátil Memória de overflow Grande desnível em relação a memória principal Memória Cache Armazena cópia das regiões da memória principal mais freqüentemente usadas pela CPU, num curto intervalo de tempo; Diferente das outras memórias caches são transparentes aos programadores (mesmo em assembly); Computadores com vários níveis hierárquicos de cache são comuns atualmente, tipicamente os níveis mais altos ficam no mesmo circuito integrado da CPU; Memória Cache 2 Em multiprocessadores, Várias processadores demandam informações de uma memória, logo a cache também é fundamental há complexidade adicional para controlar o acesso a cache de modo coerente Muitas vezes é dividida em Cache de dados e cache de instruções Cache de Instruções A próxima instrução a ser executada é retirada do cache de instruções; não estando ali presente, nova seqüência é carregada no CI: Caso o CI contenha aninhamentos inteiros de laços com grande número de repetições, serão evitados inúmeros acessos à memória 26

Funcionamento da Hierarquia de Memória O que trafega entre os níveis? Perguntas Porque os blocos de transferência mais baixos são iguais ou maiores? Funcionamento da Memória Cache Pode ocorrer que um dado esteja em nível superior, mas não no nível logo inferior? Como? Quatro perguntas sobre Organização da Cache P1: Onde um bloco pode ser inserido no nível superior (posicionamento do bloco)? P2: Como um bloco é encontrado se está no nível superior da hierarquia (cache)? P3: Que bloco deve ser substituído ao ocorrer uma falha (substituição do bloco)? P4: O que acontece em uma gravação (estratégia de gravação)? Conceitos Úteis A cache é divida em blocos com um número fixo de palavras de memória (nível mais alto) O endereço de memória é então divido em duas partes: O endereço do bloco (às vezes, chamado de título, ou tag) A posição da palavra dentro do bloco (offset) Bits de offset = log 2 (Tamanho do Bloco) Endereço do Bloco = Endereço bits de offset 27

Posicionamento do Bloco Abordagens: Cache de Mapeamento Direto Cada bloco da memória só pode ser colocado em uma posição da memória Ex. (Endereço do Bloco) mod (Número de blocos na cache) Cache Completamente Associativo Cada bloco pode ser alocado em qualquer posição da cache Posição definida pela estratégia de substituição Posicionamento do Bloco Abordagens (Continuação) Cache Associativo de Conjunto Um bloco da memória pode ser deslocado para um único determinado conjunto ( o qual conta com um certo número de blocos), dentro do qual o bloco pode ser colocado em qualquer posição Ex.: Conjunto Escolhido = (Endereço do Bloco) mod (Número de conjuntos na cache) Abordagens de Posicionamento Vantagens e Desvantagens das Abordagens Mapeamento Direto Vantagens: Simplicidade Desvantagens: Possível Ineficiência com inflexibilidade Completamente Associativo Vantagens: Total flexibilidade Desvantagens: Complexidade e custo de implementação Associativo de Conjunto Vantagens e Desvantagens: Meio termo entre as anteriores Quatro perguntas sobre Organização da Cache Organização da Cache P1: Onde um bloco pode ser inserido no nível superior (posicionamento do bloco)? P2: Como um bloco é encontrado se está no nível superior da hierarquia (cache)? P3: Que bloco deve ser substituído ao ocorrer uma falha (substituição do bloco)? P4: O que acontece em uma gravação (estratégia de gravação)? 28

Acessando a cache Exemplo: Endereço 01173 título 0117 Sucesso DR 12 Endereço 01163 título 0116 Falta Procura na memória principal P2: Como um bloco é encontrado na cache? O Tag marca o endereço de memória ao qual corresponde o bloco de cache e também se utiliza um bit para marcar a validade ou não do bloco (bit de validade) Tags sempre são pesquisadas em paralelo P3: Substituição do Bloco Que bloco pode ser substituído ao ocorrer uma falha? Mapeamento direto: Não há decisão a ser feita, pois cada bloco é direcionado para um bloco de cache Mapeamento Completamente associativo ou de conjunto: várias opções Aleatória: Escolhe-se aleatoriamente um bloco para a substituição Menos recentemente usado(least Recently Used): Registra-se os acessos aos blocos e se retira do cache o menos usado recentemente. Baseia-se no passado para prever o futuro Implementação do LRU Implementação com Contador Guardar para cada bloco, em um campo contador o número do último acesso (em clocks) Substitui-se o bloco com menor clock Implementação com Pilha Manter em uma pilha os números de cada bloco Ao ser realizada acesso a um bloco X, este passaria ao topo da pilha Substitui-se o bloco cujo número está na base da pilha Implementação Aproximada de LRU Exige bastante do hardware Criar um campo de referência com n bits Em cada acesso setar para 1 Deslocar Primeiro a entrar, Primeiro a sair( First In First out, FIFO), Esta opção se aproxima ao substituir o mais antigo, no lugar do menos recentemente usado P4: Estratégia de Gravação As leituras dominam as operações de memória, mas também existem escritas. Segundo algumas estimativas, aproximadamente 10% Estratégias de Solução: Write-Through: As informações são gravadas no cache e na memória inferior Write-Back: As informações são gravadas apenas no cache. A gravação na memória ocorrerá apenas quando houver substituição do bloco. 29

Estratégias de Gravação Write-Back Vantagens Usa menos largura de Banda da Memória (Multiprocessadores) Poupa Energia por usar menos HW Desvantagens Precisa controlar atualização da Memória Falha de leitura pode causar gravação Memória fica inconsistente com a cache (multiprocessadores) Estratégias de Gravação Write-Through Vantagens Mais fácil de Implementar Falha de leitura não causa gravação Nível Inferior sempre coerente (multiprocessadores) Desvantagem Gravações sempre demoram o tempo do nível inferior, mesmo em caso de acerto Buffer de Gravação Buffer de Gravação 2 Write-Through Buffer de Gravação para evitar atrasar a CPU FIFO (First In, First Out) Tipicamente em torno de 4 entradas Problema: Frequência de Instruções de Gravação maior que frequência da DRAM (Saturação do Buffer) Problema: Freqüência de Instruções de Gravação maior que capacidade de atendimento da DRAM (Saturação do Buffer) Solução: Aumentar o desempenho das gravações através da introdução de outro nível de cache Falha de Gravação Ao tentar gravar um dado que não está na cache há duas opções: Write Allocate (Gravação com Alocação) : Traz o bloco que contém o endereço para a cache Write Not Allocate (Gravação sem Alocação): O dado fica apenas na memória principal Definições Ciclo de Memória: tempo para devolver a CPU uma palavra Palavra de Memória: conjunto de bytes que pode ser entregue a CPU a cada requisição. Taxa de Transferência: número de bytes por unidade de tempo entregues pela memória. Exemplo: palavra de 32 bits ou 4 bytes ciclo de memória = 50 ns; taxa de transferência: 640 Mbits/s ou 80 MB/s. 30

Como melhorar o desempenho da Memória? Reduzir o ciclo de memória usando memória cache Melhorar taxa de acerto Aumentar o tamanho da palavra Acessar várias palavras em paralelo (usando memória entrelaçada). Desempenho da Memória Nem todo acesso à memória é atendido pela cache; Quando é atendido Sucesso na cache Quando não Falha na cache Grandeza Fundamental para o desempenho do sistema de Memória com Cache: Taxa de sucesso (ou taxa de acerto) Desempenho da Memória O tempo efetivo de um sistema com cache é um valor intermediário entre os tempos da cache e da memória principal. Tef = h * Tc + (1 h) * Tm (0 h 1) Taxa de sucesso h: probabilidade de sucesso na cache Taxa de falha (1-h): probabilidade de falha na cache Desempenho da Memória Taxa de Erro e Penalidade T ef = Tc + (Tx. Erro)* Penalidade Tx. Erro = (1-h) Penalidade = Tm-Tc Qual o tempo efetivo considerando dois níveis de caches? Tef = h * Tc + (1 h) * [ h 2 * Tc 2 + (1-h 2 )*Tm] Como se mede a taxa de acerto h 2? Taxa de Acerto na Cache É comum a obtenção de valores altos para h; desse modo, o ciclo efetivo fica sensível a pequenas mudanças de h: Caso Tc = Tm / 10 e h caia de 0.99 para 0.98 (1%) então Tef sobe 8.3% (quase 10%). Caso Tc = Tm / 10 e h caia de 0.99 para 0.89 (~10%) então Tef sobe 82.5% (quase dobra). Caso Tc = Tm / 20 e h caia de 0.99 para 0.89 então Tef é multiplicado por 2.5. Desempenho de Memória Pequenasmelhorias em h podem resultar em substancial aumento de desempenho no sistema de memória. Fatores que variam a razão de sucesso h Número de palavras dos blocos e número de blocos; Critério de escolha do bloco que dará lugar a um novo bloco vindo da memória principal, na ocorrência de uma falta (Política de substituição de blocos). 31

Exercício Considere um computador com CPI(Clock por Instrução) = 1,0 Penalidade por erro = 25 ciclos Taxa de erros = 2% Acessos a memória representam 50% do total de instruções em média. Quão mais rápido seria este computador se não houvesse erro de cache? Resposta Computador sem Erros: Tempo de Execução Ideal = IC *1,0* Tempo de Clock Computador Real Tempo de Execução Real= Tempo de Execução ideal + Tempo de Parada Tempo de Parada = IC * Acesso a memória/instrução * Taxa de Erros * Penalidade de Erro * Tempo de clock Resposta Tempo de Parada: TP= IC*(1+0,5)*0,02*25 = IC *0,75 (1+0,5) 1 para acesso de instrução e 0,5 para acesso de dados da instrução Tempo de Execução Real Tempo de Parada : IC*0,75 * tempo de clock Tempo de Execução = 1,75*IC * tempo de clock Medidas de Taxa de Erro de Cache Erro/Instrução Ex.:3 falhas/1000 instruções Taxa de Erro /acesso a memória Ex.: 2% dos acessos causam falha de cache Erro/Instrução = (Taxa de Erro * Acessos a Memória)/IC = Taxa de Erro * (Acesso)/Instrução Ganho = 1,75 *IC*TClock / 1,0*IC*TClock = 1,75 No Exemplo, anterior Erro/Instrução = Taxa de Erros *Acessos/Instrução Erro/Instrução = 0,02* (1+0,5) = 0,03 Recalculando o Tempo de Parada para o exemplo, obtemos o mesmo resultado Tempo de Parada = IC * Erro/Instrução * Penalidade de Erro TP = IC * 0,03 * 25 = IC * 0,75 Tecnologias de Construção de Memórias 32

Tecnologias de Construção de Memórias ROM (ReadOnlyMemory): Memória não volátil, gravada apenas uma vez no momento o processador não consegue modificá-las. Algumas podem ser apagadas eletricamente (EEPROM ). SRAM: Prioriza velocidade e capacidade Os dados não precisam ser gravados periodicamente Linhas de endereço não multiplexadas. 8 a 16 vezes mais cara que DRAM DRAM: Prioriza custo por bit e capacidade Os dados precisam ser gravados novamente após uma leitura Periodicamente precisam ser gravados (atualizados) novamente mesmo sem leitura Linhas de endereço multiplexadas. Tecnologias de Construção de Memórias DRAM: DRAMs tradicionalmente tinham uma interface assíncrona com seu controlador e com isso um overhead de sincronização. Introduziu-se um sinal de clock para os chips DRAM tornando-os síncronos. Batizou-se isto de DRAM síncrona (SDRAM). DDR SDRAM: Inovação onde se transfere dados da memória na borda crescente e decrescente do sinal de clock da SDRAM, com isso duplicando a taxa. Double Data Rate(DDR) DDR2 e DDR3: Evolução da tecnologia DDR com aumento de clock e redução de voltagem nos chips DIMM (Dual Inline Memory module):memórias, em geral, são vendidas em pequenas placas DIMM de 4 a 16 chips DRAMs e geralmente organizadas de modo a fornecerem palavras de 8 bytes. Organização de uma DRAM Matriz de vários bits Exemplo de organização de um chip de 256KB Funcionamento da DRAM Multiplexação do Endereço RAS (Row Access Strobe) CAS (Column Access Strobe) Acesso ao Dado Atualização Periódica de Dados Bits de uma linha podem ser atualizados simultaneamente Atualização é determinada pelo DRAM Controller e tipicamente demora um tempo de acesso a um dado por linha 33

Modos de Operação Modo Regular Cada acesso é definido por: RAS(Row Access Strobe) CAS (Column Access Strobe) Carregamento do Dado Modo Rápido Dados na mesma linha são acessados apenas mudando o CAS Desempenho da DRAM Tempo de Acesso não uniforme devido a: Localização Atualização dos Dados Tipicamente o tempo é dividido em: RAS precharge (trp) : seleção de linha RAS-to-CAS delay (trcd) : seleção de coluna CAS latency (CL) : leitura/gravação do dado Cycle Time (tras): tempo completo médio Tais valores podem ser determinados através de aplicativos específicos: RAS precharge (trp) RAS-to-CAS delay (trcd) CAS latency (CL) Cycle Time (tras) Memória vem em Módulos Para facilitar o manuseio e também explorar o entrelaçamento de memória, utiliza-se módulos de memória DIMM (Dual inline memory module) 4 a 16 chips de memória Tipicamente largura de 8 bytes (64 bits) SDRAM : 168 pinos, DDR (184 pinos), DDR2 (240 pinos), DDR3 (240) Todos incompatíveis e trocas podem causar danos ao hardware (figura 168 pinos) Dados de Módulos de DRAM Standard name I/O Bus clock Data transfers per second Module name Peak transfer rate 266M/s*8B/tranfser=2128MB/s DDR-266 133 MHz 266 Million PC-2100 2100 MB/s 300M/s*8B=2400MB/s DDR-300 150 MHz 300 Million PC-2400 2400 MB/s DDR-333 166 MHz 333 Million PC-2700 2700 MB/s DDR-400 200 MHz 400 Million PC-3200 3200 MB/s DDR2-533 266 MHz 533 Million PC-4300 4264 MB/s DDR2-667 333 MHz 667 Million PC-5300 5336 MB/s Desempenho da Memória Principal Opções: Aumentar largura do dados Barramento mais largo Intercalar memória Melhor tempo de acesso tecnologia de construção: clock, latência,etc. DDR (Double Data Rate), DDR2, etc. DDR2-800 400 MHz 800 Million PC-6400 6400 MB/s DDR3-1066 533 MHz 1066 Million PC-8500 8528 MB/s DDR3-1333 666 MHz 1333 Million PC-10700 10664 MB/s DDR3-1600 800 MHz 1600 Million PC-12800 12800 MB/s 34

Melhorando o Desempenho da Memória Principal Memória Entrelaçada Memória entrelaçada permite acesso simultâneoa tantas palavras quantos forem os seus módulos independentes. Com um número suficiente de módulos, é possível haver, num dado momento, várias instruções e vários operandosem fase de recuperação e vários resultados em fase de armazenamento. É claro que, para ganho máximo, num dado momento, cada acesso à memória deve acessar módulos distintos. Maior Largura do Barramento X Memória Intercalada - Exemplo Considere o seguinte sistema: Envio de Endereço: 4 clocks da CPU Acesso a palavra na Memória: 56 clocks Envio de uma palavra pelo barramento: 4 clocks Para Bloco = 1 palavra (64 bits) Tx. De Erro: 3% Penalidade : 64 clocks ( 4+ 56+4) Média de Ciclos por Instrução(s/erro de cache): 2 Acesso a Memória/Instrução: 1,2 Para bloco =2 palavras Tx. De Erro: 2% Para bloco = 4 palavras Tx. De Erro: 1,2% Exemplo (Cont.) Qual a melhoria do sistema em relação ao original com barramento simples ao utilizar : intercalação de 2 ou 4 bancos sistema com barramento duplicado Em blocos de 1,2 e 4 palavras Solução: TempoExecução+Penalidade*Tx.Erro CPI para sistema de memória de 1 palavra 2+3% *( 1,2*64) = 4,3 Exemplo (Cont.) Bloco de duas palavras (128 bits) barramento de 64 bits, sem intercalação: 2+2%*(1,2*2*64) =5,07 barramento de 64 bits, com intercalação (2 bancos): 2+2%*1,2* (4+56+8) =3,63 Barramento de 128 bits, sem intercalação: 2+2%*1,2*64 = 3,54 Efeitos da duplicação do bloco Diminuição do desempenho no sistema de barramento de 64 bits, sem intercalação De 4,3 para 5,07 Intercalação de Memória mais rápida em 1,19 vezes Speedup = 1,19 = (4,3/3,63) Duplicação do Barramento mais rápido em 1,22 vezes Speedup = 1,22 = (4,3/3,63) 35

Efeito da quadruplicação do bloco (Cont. ) Bloco de 4 palavras (256 bits) barramento de 64 bits, sem intercalação: 2+1,2%*(1,2*4*64) =5,69 barramento de 64 bits, com intercalação (4 bancos): 2+1,2%*1,2* (4+56+16) =3,09 Barramento de 128 bits, sem intercalação: 2+1,2%*1,2*2*64 = 3,84 Efeito da quadruplicação do bloco Diminuição do desempenho no sistema de barramento de 64 bits, sem intercalação : De 4,3 para 5,69 A duplicação do Barramento é mais rápida apenas 1,12 vezes (4,30/3,84) Intercalação de Memória agora é a mais rápida 1,39 vezes (4,30/3,09) O custo de quadruplicar o barramento de memória pode se tornar proibitivo e não traria desempenho muito melhor Barramento de 256 bits, sem intercalação: 2+1,2%*1,2*64 = 2,92 (Ganho de 1,06 em relação a intercalação) Memória Virtual Memória Virtual Perguntas Atualmente, memória principal é barata então podese manter a memória física do mesmo tamanho da memória virtual. Nessa situação, porque utilizar sistema de memória virtual? Simplicidade na Recolocação Simplifica a Proteção de Memória O papel da Memória Virtual Generalidade Habilidade de executar programas maiores que a memória física Gerenciamento mais eficiente Alocação/Desalocação de blocos de tamanhos variáveis é onerosa e leva a fragmentação Proteção Regiões do espaço de endereço podem ser declaradas como: somente leitura, código executável, Flexibilidade partes de um programa podem ser colocadas em qualquer lugar na memória, sem relocação Eficência no Armazenamento Mantem na memória apenas as partes mais importantes do programa I/O Concorrente Executa outros processos, enquanto está carregando/descarregando uma página Expansiblilidade Possibilita deixar espaço no espaço virtual de endereços para que objetos/programas possam crescer Desempenho Facilita o tratamento de multiprogramming e das linguagens de alto nível 36

Memória Virtual Endereços Virtuais V= {0,1,2,3,...n-1} Endereços Físicos P = {0,1,2,3,...m-1}. Onde m < n Para cada endereço a em V pode existir um endereço em P (a ), caso contrário falha de página(acesso ao disco) Dois endereços Virtuais podem apontar para o mesmo endereço físico Memória Virtual e Cache A tradução de endereço virtual deve ser feita antes ou depois da cache? Antes: Perda de desempenho por ter que fazer um acesso adicional Depois: Cache trabalharia com endereços virtuais e memória com endereços reais. Problema? Cache com Endereços Virtuais Dois endereços virtuais podem mapear o mesmo endereço físico! Logo, duas entradas de cache podem conter os mesmos dados. Perda de espaço útil na cache e Problema na Atualização Acontece quando dois programas (endereços virtuais distintos) compartilham um mesmo objeto de dados. Freqüente? Cache com Endereços Reais Problema de Desempenho! Colocar a Tabela de tradução em SRAM Qual o Tamanho da Tabela de Tradução? Endereço Virtual: 32 bits Endereço Real: 32 bits Bloco: 4KB Memória virtual: 4GB Tamanho da Tabela de Páginas > 5 MB Solução: Cache da tabela de páginas! Hierarquia de Memória com MV O funcionamento da MV 37

Quatro perguntas sobre Funcionamento da Memória Virtual (...Cache) P1: Onde um bloco pode ser inserido no nível superior (posicionamento do bloco)? P2: Como um bloco é encontrado se está no nível superior da hierarquia? P3: Que bloco deve ser substituído ao ocorrer uma falha (substituição do bloco)? P4: O que acontece em uma gravação (estratégia de gravação)? Translation Look-aside Buffer (TLB) TLBs são caches, tipicamente são completamente associativas para melhorar a taxa de sucesso Entre o disco e a memória principal, o esquema de atualização é sempre write-back! Associa-se ao sistema de memória Virtual, proteção de acesso (leitura, escrita, código, etc.) Paulo André. Castro Fragmentação e Realocação Selecionando o Tamanho de Página Razões para páginas maiores O tamanho da Tabela de Páginas é inversamente proporcional ao tamanho da página, logo economiza-se memória. Transferir páginas maiores para ou do armazenamento secundário é eficiente Páginas maiores mapeiam mais memória logo tendem a reduzir as falhas no TLB Razões para páginas menores Não desperdiçar espaço, os dados devem ser contínuos dentro de uma página Processos pequenos tendem a ser mais rápidos? Soluções Híbridas: múltiplos tamanhos de páginas Alpha: 8KB, 64KB, 512 KB, 4 MB pages Segmentação: Página de tamanho variável 38

Resumo Memória Virtual: introduzida inicialmente para permitir a execução de programas que precisavam de muita memória Hoje: MV é importante para proteção de memória e permite que os programas usem endereços falsos. TLB são cache para a tabela de página e são importantes para obter desempenho para a máquina Caches tipicamente trabalham com endereços físicos Arquitetura Paralelas: Multicomputadores e Multiprocessadores Arquiteturas Paralelas (SISD) Single Instruction Stream, Single Data Stream: Monoprocessador (SIMD) Single Instruction Stream, Multiple Data Stream: arquiteturas vetoriais (MISD) Multiple Instruction Stream, Single Data Stream: sem implementação comercial (MIMD) Multiple Instruction Stream, Multiple Data Stream: arquiteturas multiprocessadas, comumente os processadores são microprocessadores comerciais Múltiplos Processadores Opção 1: Compartilham cache, memória e sistema de I/O Opção 2: Compartilham memória e sistema de I/O Opção 3: Compartilham sistema de I/O Opção 4: Não compartilham nada, apenas se comunicam através de redes Todas as opções são viáveis/interessantes? Lembrem-se da importância de evitar gargalos... de Memória Compartilhada (SMP) Memória Centralizada Baixo número de processadores A memória e seu barramento podem se tornar um gargalo para o sistema uso de grandes caches e vários barramentos Organização mais popular atualmente 39

Organização Multiprocessador com Memória Distribuída Organização Multiprocessador com Memória Distribuída Tipicamente maior número de processadores Distribuição de memória traz vantagens Maior largura de banda percebidas (desde que acessos sejam principalmente locais Menor latência Tipicamente também se distribui o sistema E/S, assim cada nó pode ser um pequeno sistema distribuído de memória centralizada Arquitetura de Memória e Modelos de Comunicação Mensagens X Memória Compartilhada Multiprocessadores simétricos (SMP) ou Uniform Memory Access(UMA) Os processadores compartilham uma memória única e tem tempos de acesso uniforme Memória compartilhada Distribuída(DSM) ou Non-Uniform Access Memory (NUMA) Os processadores compartilham o mesmo espaço de endereços, não necessariamente a mesma memória física Multicomputadores processadores com memórias e espaço de endereços independentes que se comunicam através de algum tipo de rede de interconexão Podem ser computadores completos ligados em rede (clusters) Passagem de Mensagens Hardware mais simples Comunicação Explícita, o programador controla quando ocorre ao contrário do DSM Sincronização associada ao envio de mensagens Facilita a comunicação iniciada pelo transmissor o que pode trazer vantagens em desempenho Mecanismos de Comunicação 2 Adoção no Mercado Memória Compartilhada Distribuída (DSM) Facilidade de programação Overhead de comunicação mais baixo para itens pequenos, pela implementação em hardware e não através de E/S Uso de cache pode reduzir a latência e liberar largura de banda para os demais processadores, mas introduz problemas de sincronização SMP: maior dimensão de mercado (cifras e unidades) multiprocessadores em chip DSM (>8 processadores) Multicomputadores (mensagens) popularização de clusters para sistemas na Internet MPP (Massively Parallel Processors) > 100 processadores Abordagens híbridas: mensagens e DSM 40

Arquitetura de Memória Compartilhada Simétrica (SMP) Grandes e eficientes sistemas de cache podem reduzir bastante a necessidade de largura de banda da memória Organização Multiprocessador de Memória Compartilhada Multiprocessadores simétricos são bastante econômicos a medida que necessitam de pouco hardware adicional e usam processadores comuns Em SMP, caches não apenas fornecem localidade como também replicação...isto não traz problemas??? Problemas em SMP? Se P1 altera a posição de memória X (na sua cache) e P2 lê a posição de memória X o que ocorre? Isto é coerente? O que é coerência de caches? Um sistema é coerente se ele retorna o último valor gravado em um item de dados Coerência e Consistência do Sistema de Memória Coerência: garantir a utilização do dado mais atual Consistência: sincronizar a leitura/gravação entre processadores Consistência : P1: P2 A=0; B=0;...... A=1; B=1; if(b==0)... if(a==0)... Inicialmente, A e B em cache com valor igual a zero, qual dos dois if é seguido ou os dois? Muitas vezes precisa ser tratado pelo próprio programador Coerência Um sistema de memória é coerente se: 1. Uma leitura por um processador P em uma posição X seguido de um gravação por P em X, sem a ocorrência de gravações em X por outro processador neste intervalo, sempre retorna o valor gravado por P. 2. Uma leitura por P1 na posição X após uma gravação por P2 em X retorna o valor gravado se a leitura e a gravação estiverem separadas no tempo e não ocorrer nenhuma outra gravação em X entre os dois acessos. 3. Gravações na mesma posição são serializadas; isto é, duas gravações na mesma posição por dois processadores quaisquer são vistas na mesma ordem por todos os processadores. Por exemplo, se os valores 1 e depois 2 são gravados em X, nenhum processador pode ler 2 e depois 1 Caches Coerentes Manutenção em Hardware da coerência de caches através de protocolos de coerência de Cache Abordagem baseada em Snooping Invalidação de gravação Atualização ou Difusão Abordagem baseada em Diretório Usadas em Arquitetura de memória distribuída compartilhada 41

Protocolos de Snooping Protocolos de Snooping com Invalidação Cada cache tem um cópia dos dados de um bloco de memória e também uma cópia do status de compartilhamento do bloco(compartilhado/ não compartilhado) Como as caches compartilham o barramento de memória elas espionam (snoop) o tráfego para verificar se tem cópias do bloco trafegado Snooping com Invalidação Gravação em bloco compartilhado invalida as demais cópias do bloco em cache. Ao tentar acessar um bloco inválido, há uma falha de cache, e o dado vem do bloco de cache dirty e também para a memória (caso write-back) Gravações em blocos não compartilhados não geram problemas. Porque? O que aconteceria com sistemas write-through? Protocolos de Snooping Snooping com Atualização ou Difusão Diferença apenas no tratamento da gravação, o armazenamento de cache é o mesmo. Isto é, bloco e status do bloco Gravação em bloco compartilhado atualiza as demais cópias do bloco em cache e também a memória Exemplo Sistemas de Entrada e Saída Os cinco componentes clássicos de um Computador Sistemas de Entrada e Saída (I/O) Medidas de Desempenho Throughput e Tempo de Resposta(Latência) Discos Magnéticos Acesso a E/S Instruções X Mapeamento de Memória Status: pooling x Interrupting Delegando Responsabilidade: DMA & IOP(I/O Processor) Interação com Sistema Operacional Compartilhamento de Recursos: Scheduling e Proteção Provisão de Drivers de dispostivo 42

O que importa em Projeto de I/O? Desempenho Expansibilidade Disponibilidade Capacidade de recuperação em caso de falha Desempenho de Sistema de E/S O desempenho de sistemas de E/S depende de vários aspectos: Barramentos I/O Controllers Dispostivos de I/O O software de I/O (OS e device drivers) Velocidade Uso eficiente dos dispositvos O papel do I/O Exemplo de Arquitetura de um Computador Atual Barramentos no Pentium 4 Exemplo de Dispositivos de IO e Tx. De Transferência 43

Discos Magnéticos Propósito: Armazenamento não-volátil Grande, barato e lento Nível mais baixo na hierarquia de memórias Dois grandes Tipos: Floppy disk Hard disk Ambos os tipos: Baseiam-se em um disco rotativo coberto com uma superfície magnética Usam uma cabeça(head) de leitura/escrita para acessar as informações Vantagens dos Discos rígidos (HD) sobre Floppy disks: Como os disco são rígidos(metal ou vidro) podem ser maiores Maior densidade porque podem ser controlados com mais precisão Maior taxa de transferência porque podem rodar mais rápido Podem ter mais de um disco (platter) Organização de um Disco Números Típicos Números Típicos (dependem do tamanho do disco) 5.000 a 30.000 trilhas(tracks) por superfície 100 a 500 setores(sectors) por trilha Setor: menor unidade que pode ser lida Geralmente todas as trilhas tem o mesmo número de setores Logo: setores tem tamanhos físicos distintos Disco Magnético Cilindros: Todas as trilhas sobre a cabeça de leitura/ escrita das superfícies. Processo de Leitura/Escrita 1. Posicionar o braço na trilha correta (seek time) 2. Roda o disco até que o setor esteja sobre a cabeça de leitura (rotational latency) 3. Ler ou gravar (transferir) um bloco de dados (transfer time) Desempenho de Discos Magnéticos Seek Time: na faixa de 5 a 12 ms Soma de todos os tempos de buscas/número de Buscas Devido à localidade o seek time real pode ser apenas 25% a 30% do tempo divulgado pelos fabricantes. Latência Rotacional Rotational Latency: Período de rotação do disco: 3,600 a 10,000 RPMs (16ms a 0,4ms por rotação) Latência média: Tempo para percorrer metade do disco (8ms a 0,2 ms) Latência Rotacional=0,5 * Periodo de rotação = 0,5/X RPM = 0,5/ (X*60*RPS) 44

Desempenho de Discos Magnéticos Tempo de Acesso ao Disco Tempo de Transferência: fatores relevantes Tamanho da transferência(1 setor): 1KB/setor Taxa de Transferência: 3 a 65MB/s Velocidade de Rotação: 3600 a 15000 RPM Densidade de bits: bits/polegada Diâmetro do disco: 1,0 a 3,5 polegadas Valores típicos de Transfer Time: 0,01 a 0,03ms/setor Disk Access Time = Queuing Delay + Controller Time + Seek time + Rotational Latency + Transfer time Exercício: Calcule o tempo de acesso ao Disco. Solução Memória Flash Não-volátil e baseado em transistores como EEPROM, porém maior capacidade de memória por chip Baixo consumo de energia e resistência a vibrações quando comparado com discos Baseia-se em transitores MOSFET (floating-gate transistor) Memória Flash - 2 Basicamente dois tipos Flash: NOR Flash e NAND Flash NOR Flash Tempo de acesso de leitura é comparável a DRAM (bem mais rápido que discos) Livres de falhas. Tipicamente usada como NVRAM NAND Flash A taxa de transferência é comparável a dos discos Usada em USB flash drives, memory card, solid state disks. Capaz de lidar com falhas de memória. Tempo de gravação bem maior que o de leitura (possivelmente maior que discos rígidos) Primeiro apaga-se um bloco de memória e depois grava-se 45

Uma célula de uma memória Flash Memória Flash Qual o Tempo de leitura e gravação de um bloco de 64KB em memória Flash e disco magnético? (Dados de 2001) Memória Flash: 65ns/leitura de 1 byte 1,5Microsegundos/gravação de 1byte e 5ms para apagar 4KB Disco: Overhead de controlador: 1ms 3600RPM 12ms de seek time anunciado(real igual a 1/3) Memória Flash Dados de Flash Memories Flash Leitura: 64KB*65ns/Byte= 4,3ms Gravação: 64KB/(4KB/5ms) + 64KB*1500ns/B = 178,3ms Disco Leitura/Gravação 12ms/3 + 0,5/3600RPM + 64KB/4,2MB/s +0,1ms = 27,3ms O padrão compact Flash simula discos ATA, por isso simula interface de discos, seek commands, trilhas lógicas, etc. cu.in =Cubic inch Memória Flash Pooling x Interrupting O custo por GB tem caído por volta de 50% ao ano. Em 2006, o custo/gb é aproximadamente igual a DRAM e 50 vezes maior que disco rígido mesma taxa de transferência de discos e latência de 10 a 100 vezes menor... Em 2008, o custo/gb era de 4 a 8$, ou 4 a 20 vezes mais caros que o custo/gb do disco e 5 a 10 vezes mais baixo que DRAM porém há desgaste da memória, normalmente limitado a 1M de gravações Eliminou o discos flexíveis... Tornou-se padrão em Sistemas Embutidos Eliminará os discos rígidos? Já há laptops baseados unicamente em flash... 46