Lei de Amdahl - Divisão de Ciência da Computação
Transcrição
Lei de Amdahl - Divisão de Ciência da Computaçã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) Paulo André Castro CE-703 / ITA O que influi no desempenho de CPU Paulo André Castro CE-703 / ITA 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? Paulo André Castro CE-703 / ITA 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) Paulo André Castro CE-703 / ITA 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) Paulo André Castro CE-703 / ITA 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!! Paulo André Castro CE-703 / ITA Exemplos de benchmark: Família SPEC www.spec.org Paulo André Castro CE-703 / ITA 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 Isso é realmente bom? Paulo André Castro CE-703 / ITA 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. Paulo André Castro CE-703 / ITA Abordagens para Conjuntos de Instruções 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) Não seria mais vantajoso: Criar instruções poderosas que resolvessem problemas comuns ao invés de instruções simples que resolvem quase nada? Paulo André Castro CE-703 / ITA 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) 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) 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) Paulo André Castro CE-703 / ITA 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 Paulo André Castro CE-703 / ITA Gráfico de Desempenho MIPS / VAX Paulo André Castro CE-703 / ITA 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 Paulo André Castro CE-703 / ITA 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) Paulo André Castro CE-703 / ITA Abordagens para Arquitetura de Conjuntos de Instruções Comparando Instruções Numéricas Paulo André Castro CE-703 / ITA Registradores de Propósitos Gerais dominam Paulo André Castro CE-703 / ITA Exemplos de Formato de Conjunto de instruções Paulo André Castro CE-703 / ITA Mundo RISC (CISC) Exploração do Paralelismo Entre fases Entre Instruções Entre Threads Entre programas Solução dos novos problemas trazidos pelo paralelismo Paulo André Castro CE-703 / ITA Dentro da CPU: Como realmente funciona um computador Os cinco componentes clássicos de um Computador - Controle Paulo André Castro CE-703 / ITA Processador com Acumulador: Um Caso Extremamente Simples Paulo André Castro CE-703 / ITA Microprograma da CPU com Acumulador Paulo André Castro CE-703 / ITA Revisão: Como Funciona o Hardware Digital 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 Paulo André Castro CE-703 / ITA 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 (aj, aj-1,aj-2,...a0)B , onde 0 ≤ ak ≤ B-1 e escrito na forma polinomial: ajBj + aj-1Bj-1 + aj-2Bj-2 + .......+ a1B1 + a0B0 Logo: (347)10 = 3 x I02 + 4 x l01 + 7 x 100 (10111)2 = 1 x 24 + 0 x 23 + 1 x 22 + 1 x 21 + 1 x 20 Paulo André Castro CE-703 / ITA Conversão de Base Paulo André Castro CE-703 / ITA Computadores e Sistema Binário Números Negativos (dois zeros) Complemento de 2 Números Fracionários (ponto flutuante) Mantissa e expoente Paulo André Castro CE-703 / ITA Complemento de 2 Conversão de Base: • 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 Paulo André Castro CE-703 / ITA Deslocamento Paulo André Castro CE-703 / ITA Números Fracionários (Ponto Flutuante) Inteiros (15)10= (01111)2 = 23+22+21 +20 = 8+4+2+1 Números binários fracionários (1,5)10 = (1,1)2 = 20+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 Paulo André Castro CE-703 / ITA Conversão de Números 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) = 22 + 21+20 + 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 Paulo André Castro CE-703 / ITA Conversão de Fracionários Paulo André Castro CE-703 / ITA Conversão de Fracionários - 2 Paulo André Castro CE-703 / ITA Algoritmo para Conversão de Base A representação em base 10 (0,d1 d2 ..dj-1 dj ) pode ser obtida através dos seguintes passos: Observe que o algoritmo pode nunca parar... Como solucionar o problema do possível loop infinito? Paulo André Castro CE-703 / ITA Conversão de Base Paulo André Castro CE-703 / ITA Ponto Flutuante em Computadores Paulo André Castro CE-703 / ITA 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 Paulo André Castro CE-703 / ITA Lógica Digital (Booleana) Paulo André Castro CE-703 / ITA Paulo André Castro CE-703 / ITA Paulo André Castro CE-703 / ITA Paulo André Castro CE-703 / ITA Paulo André Castro CE-703 / ITA Portas Lógicas Paulo André Castro CE-703 / ITA Paulo André Castro CE-703 / ITA Paulo André Castro CE-703 / ITA Paulo André Castro CE-703 / ITA A suficiência da Porta NAND Paulo André Castro CE-703 / ITA Portas lógicas podem ser implementadas dentro de Chips Paulo André Castro CE-703 / ITA Portas Lógicas em Transistores Paulo André Castro CE-703 / ITA 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 Paulo André Castro CE-703 / ITA Implementando um multiplexador: Exercício Paulo André Castro CE-703 / ITA Implementando um multiplexador: Solução Paulo André Castro CE-703 / ITA Somadores 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: S e C - a Soma e o bit de Vaium (Carry) Paulo André Castro CE-703 / ITA Somadores - 2 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) Paulo André Castro CE-703 / ITA Somador Completo Paulo André Castro CE-703 / ITA 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) Paulo André Castro CE-703 / ITA Flip Flops 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 Paulo André Castro CE-703 / ITA Sinal de Clock (Relógio) 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 Paulo André Castro CE-703 / ITA Flip Flop RS 2 entradas: R e S R para Reset (colocar no estado O) S para Set (colocar no estado 1) Paulo André Castro CE-703 / ITA 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) Paulo André Castro CE-703 / ITA Flip Flop D 1 entrada D (de Dado) Transfere o dado de entrada para a saída Paulo André Castro CE-703 / ITA Implementação de Flip Flop D em Portas Lógicas Paulo André Castro CE-703 / ITA Um Processador Simples com Registradores de Propósitos Gerais Um Processador de Registradores de Propósitos Gerais (MIPS de ciclo único) Paulo André Castro CE-703 / ITA Um Exemplo: MIPS Principais Instruções Adição add R1,R2,R3; R1 = R2 + R3 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 Paulo André Castro CE-703 / ITA Formato dos Conjunto de Instruções MIPS Paulo André Castro CE-703 / ITA Um Exemplo: MIPS Principais Instruções 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 Paulo André Castro CE-703 / ITA Formato de Instruções MIPS Paulo André Castro CE-703 / ITA Unidades Funcionais e Controle no MIPS Paulo André Castro CE-703 / ITA Carregamento de Instrução Paulo André Castro CE-703 / ITA Controlando Operações R-type Adição/Subtração/And/or... Paulo André Castro CE-703 / ITA IF no fim de uma instrução Paulo André Castro CE-703 / ITA Instrução Load Paulo André Castro CE-703 / ITA Instrução Store Paulo André Castro CE-703 / ITA Instrução de Desvio Condicional Paulo André Castro CE-703 / ITA IF ao fim de uma instrução de desvio condicional Paulo André Castro CE-703 / ITA Desvio não condicional Paulo André Castro CE-703 / ITA IF ao fim de uma desvio não-condicional Paulo André Castro CE-703 / ITA Sumário dos Sinais de Controle Paulo André Castro CE-703 / ITA Decodificação Local – Controle da ALU Paulo André Castro CE-703 / ITA Paulo André Castro CE-703 / ITA Paulo André Castro CE-703 / ITA 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? Paulo André Castro CE-703 / ITA 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 Ex: Lavanderia Lavar e Secar: 4h. Logo, 4 cestas demorariam 16h Lavar: 2h e Secar: 2h. Quanto 4 cestas demorariam? 10h Paulo André Castro CE-703 / ITA 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). Instruções paralelizadas Paulo André Castro CE-703 / ITA Qual o ganho de desempenho com pipeline? Diagramas Estágio x Tempo 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; Paulo André Castro CE-703 / ITA 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 ? Paulo André Castro CE-703 / ITA Eficiência do Pipeline η: eficiência – relação entre a área ocupada e a área total do diagrama Estágio x Tempo Produtividade (throughput) W: produtividade – número de tarefas completadas por unidade de tempo Impedimentos Impedimentos para valores máximos em 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 Paulo André Castro CE-703 / ITA Problemas no Pipeline Paulo André Castro CE-703 / ITA O Problema do Desnível entre Fases e Instruções Paulo André Castro CE-703 / ITA 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 Paulo André Castro CE-703 / ITA 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 tabela sobre 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ória pode-se utilizar um sistema de bloqueio desse local. Paulo André Castro CE-703 / ITA 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 Paulo André Castro CE-703 / ITA 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 Paulo André Castro CE-703 / ITA 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? Paulo André Castro CE-703 / ITA 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 Paulo André Castro CE-703 / ITA Visão do pipeline MIPS com Unidades Funcionais IF Paulo André Castro ID/RF EX MEM WB CE-703 / ITA 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 Paulo André Castro CE-703 / ITA Dependência de Dados - RAW Solução: atrasar o pipeline (via SW ou via HW) Paulo André Castro CE-703 / ITA Implementando o atraso do Pipeline através de Hardware Paulo André Castro CE-703 / ITA Implementando o atraso do pipeline através de software Paulo André Castro CE-703 / ITA Dependência RAW ao Carregar dados Paulo André Castro CE-703 / ITA Dependência RAW no carregamento Obs.: O dado estará disponível ao final de MEM, não ao final de EX como nas Operações R-type Paulo André Castro CE-703 / ITA Atrasando o pipeline em carregamento de dados –Quantos clocks são necessários? Paulo André Castro CE-703 / ITA Dependências RAW 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 ? Paulo André Castro CE-703 / ITA Redução de Penalidade em Bypassing Paulo André Castro R-Type: CE-703 / ITA Encaminhamento em Carregamentos Seria possível eliminar este atraso ? Paulo André Castro CE-703 / ITA Implementando o Bypassing •Necessário mais multiplexadores para receber entrada dos dados •Assume-se que durante ID/RF, as gravações são feitas antes das leituras Paulo André Castro CE-703 / ITA Como controlar o Encaminhamento? Paulo André Castro CE-703 / ITA 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? Além do Pipeline: Processadores Superescalares Instruction Level Paralelism (ILP) Pipelining cria uma barreira teórica de CPI(Clock por instrução) igual a 1,0. 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 ? Paulo André Castro CE-703 / ITA 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 Paulo André Castro CE-703 / ITA 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 Paulo André Castro CE-703 / ITA 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? Paulo André Castro CE-703 / ITA 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 Paulo André Castro CE-703 / ITA Dependências WAW e WAR e Conclusão de Execução Fora de Ordem 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 Paulo André Castro CE-703 / ITA 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? Paulo André Castro CE-703 / ITA 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) Paulo André Castro CE-703 / ITA 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 Paulo André Castro CE-703 / ITA 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 Paulo André Castro CE-703 / ITA 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 Paulo André Castro CE-703 / ITA Tomasulo Paulo André Castro CE-703 / ITA Paulo André Castro CE-703 / ITA 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 Paulo André Castro CE-703 / ITA 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 Paulo André Castro CE-703 / ITA Exemplo Tomasulo – Instante 1 Paulo André Castro CE-703 / ITA Exemplo Tomasulo - Instante 2 Paulo André Castro CE-703 / ITA Estados das Instruções Paulo André Castro CE-703 / ITA Instante 2 - Tomasulo Fonte: Hennessy & Patterson, pg. 140. Erro no Livro: F0 (e não F2) será gravada por Mult1 Paulo André Castro CE-703 / ITA Sistemas de Memória Memória: O Gargalo de Von Neuman Memória principal: considerada como sendo o gargalo da arquitetura de Von Neumann: O ciclo da memória principal costuma ser 4 a 20 vezes maior que o ciclo de máquina. 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 ? Paulo André Castro CE-703 / ITA 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. Paulo André Castro CE-703 / ITA 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. Paulo André Castro CE-703 / ITA 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. Dois Tipos de localidade: Localidade espacial Localidade Temporal Como tirar vantagem dessa característica para obter mais desempenho? Paulo André Castro CE-703 / ITA Hierarquia de Memória Paulo André Castro CE-703 / ITA 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? Paulo André Castro CE-703 / ITA 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 inferior e 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 Paulo André Castro CE-703 / ITA 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; Paulo André Castro CE-703 / ITA 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 Paulo André Castro CE-703 / ITA Funcionamento da Hierarquia de Memória Paulo André Castro CE-703 / ITA O que trafega entre os níveis ? Paulo André Castro CE-703 / ITA Perguntas Porque os blocos de transferência mais baixos são iguais ou maiores? Pode ocorrer que um dado esteja em nível superior, mas não no nível logo inferior? Como? Paulo André Castro CE-703 / ITA Funcionamento da Memória Cache Paulo André Castro CE-703 / ITA 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) ? Paulo André Castro CE-703 / ITA 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 = log2 (Tamanho do Bloco) Endereço do Bloco = Endereço – bits de offset Paulo André Castro CE-703 / ITA 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 Paulo André Castro CE-703 / ITA 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) Paulo André Castro CE-703 / ITA Abordagens de Posicionamento Paulo André Castro CE-703 / ITA 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 Paulo André Castro CE-703 / ITA 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) ? Paulo André Castro CE-703 / ITA Organização da Cache Paulo André Castro CE-703 / ITA 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 Paulo André Castro CE-703 / ITA 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 Paulo André Castro CE-703 / ITA 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 Paulo André Castro CE-703 / ITA 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 Paulo André Castro CE-703 / ITA 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 Paulo André Castro CE-703 / ITA 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. Paulo André Castro CE-703 / ITA 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) Paulo André Castro CE-703 / ITA 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 Paulo André Castro CE-703 / ITA Buffer de Gravação • 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) Paulo André Castro CE-703 / ITA Buffer de Gravação 2 • 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 Paulo André Castro CE-703 / ITA 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 Paulo André Castro CE-703 / ITA 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. Paulo André Castro CE-703 / ITA 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). Paulo André Castro CE-703 / ITA 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) Paulo André Castro CE-703 / ITA 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 Paulo André Castro CE-703 / ITA Desempenho da Memória Taxa de Erro e Penalidade Tef = 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) * [ h2 * Tc2 + (1-h2)*Tm] Como se mede a taxa de acerto h2 ? Paulo André Castro CE-703 / ITA 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. Paulo André Castro CE-703 / ITA Desempenho de Memória Pequenas melhorias 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). Paulo André Castro CE-703 / ITA 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? Paulo André Castro CE-703 / ITA 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 Paulo André Castro CE-703 / ITA 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 Ganho = 1,75 *IC*TClock / 1,0*IC*TClock = 1,75 Paulo André Castro CE-703 / ITA 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 Paulo André Castro CE-703 / ITA 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 Paulo André Castro CE-703 / ITA Tecnologias de Construção de Memórias Tecnologias de Construção de Memórias ROM (Read Only Memory): 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. Paulo André Castro CE-703 / ITA 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. Paulo André Castro CE-703 / ITA Organização de uma DRAM Paulo André Castro CE-703 / ITA Matriz de vários bits Paulo André Castro CE-703 / ITA Exemplo de organização de um chip de 256KB Paulo André Castro CE-703 / ITA 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 Paulo André Castro CE-703 / ITA 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 Paulo André Castro CE-703 / ITA 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” Paulo André Castro CE-703 / ITA • 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) Paulo André Castro CE-703 / ITA 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) Paulo André Castro CE-703 / ITA Dados de Módulos de DRAM Standard name I/O Bus clock Data transfers per second Module name Peak transfer rate DDR-266 133 MHz 266 Million PC-2100 2100 MB/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 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 266M/s*8B/tranfser=2128MB/s 300M/s*8B=2400MB/s Paulo André Castro CE-703 / ITA 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. Paulo André Castro CE-703 / ITA Melhorando o Desempenho da Memória Principal Memória Entrelaçada Memória entrelaçada permite acesso simultâneo a 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 operandos em 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. Paulo André Castro CE-703 / ITA 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% Paulo André Castro CE-703 / ITA 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 Paulo André Castro CE-703 / ITA 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 Paulo André Castro CE-703 / ITA 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) Paulo André Castro CE-703 / ITA 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 Paulo André Castro CE-703 / ITA 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) Paulo André Castro CE-703 / ITA Memória Virtual Memória Virtual Paulo André Castro CE-703 / ITA 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 Paulo André Castro CE-703 / ITA 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 Paulo André Castro CE-703 / ITA 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 Paulo André Castro CE-703 / ITA 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? Paulo André Castro CE-703 / ITA 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! Paulo André Castro CE-703 / ITA Hierarquia de Memória com MV Paulo André Castro CE-703 / ITA O funcionamento da MV Paulo André Castro CE-703 / ITA 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) ? Paulo André Castro CE-703 / ITA 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 . CE-703 / ITA Paulo André Castro CE-703 / ITA Fragmentação e Realocação Paulo André Castro CE-703 / ITA 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 Paulo André Castro CE-703 / ITA Paulo André Castro CE-703 / ITA 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 Paulo André Castro CE-703 / ITA 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 Paulo André Castro CE-703 / ITA 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... Paulo André Castro CE-703 / ITA de Memória Compartilhada (SMP) Paulo André Castro CE-703 / ITA 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 Paulo André Castro CE-703 / ITA Organização Multiprocessador com Memória Distribuída Paulo André Castro CE-703 / ITA 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 Paulo André Castro CE-703 / ITA Arquitetura de Memória e Modelos de Comunicação 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) Paulo André Castro CE-703 / ITA Mensagens X Memória Compartilhada 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 Paulo André Castro CE-703 / ITA Mecanismos de Comunicação 2 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 Paulo André Castro CE-703 / ITA Adoção no Mercado 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 Paulo André Castro CE-703 / ITA 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 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??? Paulo André Castro CE-703 / ITA Organização Multiprocessador de Memória Compartilhada Paulo André Castro CE-703 / ITA 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 Paulo André Castro CE-703 / ITA Consistência : P1: A=0; .... A=1; if(B==0) ... P2 B=0; ...... B=1; 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 Paulo André Castro CE-703 / ITA Coerência Um sistema de memória é coerente se: 1. 2. 3. 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. 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. 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 Paulo André Castro CE-703 / ITA 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 Paulo André Castro CE-703 / ITA Protocolos de Snooping 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? Paulo André Castro CE-703 / ITA Protocolos de Snooping com Invalidação Paulo André Castro CE-703 / ITA 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 Paulo André Castro CE-703 / ITA 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 Paulo André Castro CE-703 / ITA O que importa em Projeto de I/O? Desempenho Expansibilidade Disponibilidade Capacidade de recuperação em caso de falha Paulo André Castro CE-703 / ITA 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 Paulo André Castro CE-703 / ITA O papel do I/O Paulo André Castro CE-703 / ITA Exemplo de Arquitetura de um Computador Atual Paulo André Castro CE-703 / ITA Barramentos no Pentium 4 Paulo André Castro CE-703 / ITA Exemplo de Dispositivos de IO e Tx. De Transferência Paulo André Castro CE-703 / ITA 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) Paulo André Castro CE-703 / ITA Organização de um Disco Paulo André Castro CE-703 / ITA 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 Paulo André Castro CE-703 / ITA Disco Magnético Cilindros: Todas as trilhas sobre a cabeça de leitura/ escrita das superfícies. Processo de Leitura/Escrita 1. 2. 3. Posicionar o braço na trilha correta (seek time) Roda o disco até que o setor esteja sobre a cabeça de leitura (rotational latency) 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. Paulo André Castro CE-703 / ITA 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) Paulo André Castro CE-703 / ITA Desempenho de Discos Magnéticos 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 Paulo André Castro CE-703 / ITA Tempo de Acesso ao Disco Disk Access Time = Queuing Delay + Controller Time + Seek time + Rotational Latency + Transfer time Paulo André Castro CE-703 / ITA Exercício: Calcule o tempo de acesso ao Disco. Paulo André Castro CE-703 / ITA Solução Paulo André Castro CE-703 / ITA 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) Paulo André Castro CE-703 / ITA 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 Paulo André Castro CE-703 / ITA Uma célula de uma memória Flash Paulo André Castro CE-703 / ITA 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) Paulo André Castro CE-703 / ITA Memória Flash 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 Paulo André Castro CE-703 / ITA Dados de Flash Memories O padrão compact Flash simula discos ATA, por isso simula interface de discos, seek commands, trilhas lógicas, etc. cu.in =Cubic inch Paulo André Castro CE-703 / ITA Memória Flash 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... Paulo André Castro CE-703 / ITA Pooling x Interrupting Paulo André Castro CE-703 / ITA Interrupting Paulo André Castro CE-703 / ITA Barramentos Principais Componentes Paulo André Castro CE-703 / ITA Um Barramento (Bus) é Paulo André Castro CE-703 / ITA Funções do Barramento Conexão de Memória Recebe e envia dados Recebe endereços Recebe sinais de controle Read Write Timing Entrada e Saída (I/O) Recebe e Envia dados Recebe sinais de controle do computador Recebe sinais de controle dos periféricos Ex.: velocidade de rotação do disco Recebe endereços do computador Ex.: Número de porta para identificar periférico Envia sinais de interrupção para computador(controle) Paulo André Castro CE-703 / ITA Esquema de Barramento Paulo André Castro CE-703 / ITA Barramentos Barramento de Dados Transporta dados (ou instruções) não há diferença neste nível Geralmente bidirecional Largura é determinante para o desempenho Barramento de Endereços Identifica fonte ou origem de um fluxo de dados Largura identifica a capacidade máxima de endereçamento Barramento de Controle Sinais de Controle (ler/gravar) Sinais de interrupção Sinais de clock Paulo André Castro CE-703 / ITA Barramento no Pentium 4 Paulo André Castro CE-703 / ITA Vantagens de usar Barramentos Paulo André Castro CE-703 / ITA Desvantagens de Barramentos Paulo André Castro CE-703 / ITA O que define um Barramento ? Paulo André Castro CE-703 / ITA Projeto de Barramentos A velocidade e a largura de banda são influenciados por 4 fatores principais: Largura do Barramento Esquema de Clock do Barramento Método de Arbitragem Operação Paulo André Castro CE-703 / ITA Largura do Barramento O número de linhas de endereço determina o tamanho da memória endereçável Quanto maior o número de linhas, mais fios, conectores maiores. Logo, o hardware torna-se mais caro. 8088 – 20 linhas de endereço, 80286 + 4 linhas, 80386 +8 linhas A tendência é um crescimento constante das larguras dos barramentos para aumentar a capacidade dos barramentos Muitas vezes projetistas fazem multiplexação de dados e endereços em diferentes fases (ou em tempo) para reduzir o número de linhas. Mas com isto também se reduz o desempenho do barramento. Paulo André Castro CE-703 / ITA Mestre (Master) e Escravo(Slave) Paulo André Castro CE-703 / ITA Paulo André Castro CE-703 / ITA Múltiplos Mestres de Barramento: Arbitragem Com múltiplos possíveis mestres de barramento é necessário definir um meio de garantir que apenas um dispositivo será selecionado como mestre. O método deve balancear: Prioridade entre dispositivos Justiça: mesmo o dispositivo de prioridade mais baixa deve operar Quatro possíveis Classes de Arbitragem Arbitragem distribuída por auto-seleção: Cada dispositivo coloca o próprio código Arbitragem distribuída por detecção de colisão: exemplo Ethernet Daisy Chain: Autorização dada em seqüência... Arbitragem Centralizada: Autorização dada por órgão central... Paulo André Castro CE-703 / ITA Paulo André Castro CE-703 / ITA Paulo André Castro CE-703 / ITA Exemplos de Barramentos Paulo André Castro CE-703 / ITA Vídeo AGP: Uma porta para vídeo Paulo André Castro CE-703 / ITA Conector AGP Paulo André Castro CE-703 / ITA Tipos de Conectores AGP e Placa Paulo André Castro CE-703 / ITA Barramento PCI Paulo André Castro CE-703 / ITA Conectores PCI 32 bits 5V em uma Placa Mãe Paulo André Castro CE-703 / ITA Exemplo de Placa PCI – 32 bits Adaptador SCSI Paulo André Castro CE-703 / ITA Conectores PCI 64 bits 5V em uma Placa Mãe Paulo André Castro CE-703 / ITA Universal Placa de Rede Ethernet Paulo André Castro CE-703 / ITA Barramentos Antigos...ISA ISA, (Industry Standard Architecture) palavra de 8 bits 62 pinos, taxa de 1.2 MB/s) Barramentos Antigos...EISA Extended ISA (palavra de 32 bits, 98 pinos) Taxa de transferência: 32 MB/s Barramentos Antigos...VESA VESA Local Bus (VLB) Palavra de 32 bits, 112 pinos Taxa de transferência:133 MB/s Slot é uma extensão do ISA Universal Serial Bus (USB 2.0) Histórico de versões USB 0.7: Lançado em novembro de 1994. USB 0.8: Lançada em dezembro de 1994. USB 0.9: Lançada em abril de 1995. USB 0.99: Lançado em agosto de 1995. USB 1.0: Lançado em janeiro de 1996, com taxas de transferência de dados de 1,5 Mbit / s (baixa velocidade) e 12 Mbit / s (Velocidade máxima). USB 2.0: Lançado em abril de 2000 com a velocidade de 480 Mbps. USB 3.0: Lançado em setembro de 2009 com a velocidade de 4,8 Gbps. Paulo André Castro CE-703 / ITA Barramentos Aviônicos MIL-STD 1553 (Padrão para aviões militares) Uso Civil – ARINC (Aeronautical Radio, Incorporated) ARINC 429 ARINC 629 Paulo André Castro CE-703 / ITA MIL-STD 1553 O padrão 1553 pode ser dividido em três partes: Tipos de terminais: Bus controller, Bus monitor (opcional) e Remote Terminal Protocolo de Barramento: incluindo formatos de mensagens e estrutura Especificação de hardware: tais como impedências, frequencia de operação, etc. O barramento 1553 pode operar com até 1Mbps de taxa de transferência Paulo André Castro CE-703 / ITA MIL-STD 1553 – Estrutura de Barramento Paulo André Castro CE-703 / ITA Tipos de Terminais no padrão1553 Bus Controller: Responsável por todo o fluxo de dados do barramento e inicia todas as transferências de informação. Também monitora o status do sistemas, não confundir com o Bus monitor. Bus Monitor: Recebe e armazena tráfego selecionado no barramento. Não responde a nenhum tráfego Remote Terminal: São o maior número de unidades de um barramento 1553. Devido a endereçamento de RT utilizar 5 bits nas mensagens, podem existir até 31 RT em um barramento. Um RT pode ser uma unidade separada para ligar um subsistema ou ser parte do subsistema. Paulo André Castro CE-703 / ITA Direct Coupled Bus is terminated at each end with a terminating resistor. Connection from the Tee to the terminal is very short. Typically Tee is connected directly to the connector on the back of the terminal. Paulo André Castro 23-379 CE-703 / ITA Transformer Coupled Bus is terminated at each end with a terminating resistor, just as in Direct Coupling but now the two Tee's replaced with transformer couplers. Connection to the terminals is no longer the length of the Tee, but significantly long, consisting of another cable (of up to 20 feet in length). Paulo André Castro 23-380 CE-703 / ITA Transformer Coupled (Example) Paulo André Castro 23-381 CE-703 / ITA Words 1553 Paulo André Castro CE-703 / ITA Formatos de Transferência de Dados 1553 Paulo André Castro CE-703 / ITA ARINC 429 “ARINC. Specification 29 Digital Information Transfer System, Mark 33”, 429 as it is commohnly known , is the basis from digital buses in modern civil aircraft” Digital Avionics Systems. P.31. ARINC 429 opera com taxas de transferências de 12 a 14.5 or 100kpbs em um barramento simplex Paulo André Castro CE-703 / ITA Barramento Arinc 429 Paulo André Castro CE-703 / ITA