Baixe o app para aproveitar ainda mais
Prévia do material em texto
Prof.ª Daniella Dias danidias.jp@gmail.com Processadores Disciplina: Arquitetura de Computadores Organização de Computadores Computador eletrônico digital Processador Memória Dispositivos de entrada/saída Interconexão entre as essas partes (barramento) Organização de um Computador Organização de um Computador Organização de um Computador Processador Cérebro do computador Executa programas armazenados na memória principal, buscando as instruções, examinando-as, e executando-as em seqüência Barramento Provê a interligação entre os componentes do computador Conjunto de fios paralelos para a transmissão de dados, endereços e sinais de controle Organização de um Computador Barramento Externo ao processador conexão à memória e dispositivos de entrada/saída Interno ao processador Composição do Processador Unidade de controle busca e decodifica as instruções ULA realiza as instruções (aritméticas e lógicas) Registradores armazena resultados temporários e algumas informações de controle. São de acesso rápido por estarem dentro do processador. Organização de um Computador Registradores mais importantes Contador de programas (PC – Program Counter) aponta para a próxima instrução Registrador de instruções (IR – Instruction Register) armazena a instrução que está sendo executada Organização do Processador Caminho de dadosCaminho de dados Organização do Processador Composição do caminho de dados Registradores 1 a 32 ULA Barramento Instruções de um processador Registrador-memória permite que uma palavra de memória seja armazenada no registrador, e vice-versa Registrador-registrador instrução que opera sobre 2 registradores e coloca a saída em outro registrador (ciclo de caminho de dados) Organização do Processador Ciclo de caminho de dados Define, sob certos aspectos, o que a máquina pode fazer Conceito muito importante na maioria dos processadores A velocidade do ciclo do caminho de dados determina, em última análise, a velocidade do processador Execução de Instruções Ciclo de busca-decodificação-execução 1. Busca próxima instrução na memória, a partir do endereço armazenado no PC, e armazena no IR 2. Atualiza Contador de instrução PC para apontar para a próxima instrução 3. Determina tipo de instrução armazenada no IR 4. Determina endereço dos dados na memória, se a instrução requer dados adicionais 5. Trazer palavras (dados) da memória, caso a instrução precise, e armazena-as em outros registradores 6. Executa instrução 7. Retorna ao passo 1 Execução de Instruções É possível escrever um programa que simule a função de um processador Esse programa não precisa ser executado por um processador eletrônico Um programa pode ser executado por outro programa que busque, decodifique e execute suas instruções Esse programa é o interpretador Execução de Instruções Ao especificar uma linguagem de máquina L0 deve-se decidir entre a construção de um processador ou de um interpretador Interpretador Divide as instruções em um conjunto de pequenos passos Processador mais simples e mais barato Os primeiros computadores possuíam poucas instruções que evoluíram com o desenvolvimento de máquinas mais velozes Execução de Instruções IBM (final dos anos 50) Criou a uma família de computadores com as mesmas instruções surgia a arquitetura de computadores Arquitetura única múltiplas implementações Arquitetura descreve o nível de compatibilidade entre as máquinas Como construir um computador de baixo custo que execute instruções complexas presentes em máquinas mais caras? Conceito de interpretação por microprogramação Execução de Instruções Vantagens da interpretação de instruções Capacidade de corrigir no campo eventuais erros na implementação das instruções Oportunidade de incorporar nova instruções às máquinas existentes Projeto estruturado que permitia o desenvolvimento, o teste e a documentação de instruções complexas de modo muito eficiente Execução de Instruções Memória de controle ROMs de alta velocidade Armazenavam o interpretador Reduzia o tempo de processamento Microinstrução São os passos necessários para a execução de uma instrução pelo interpretador Principais inovações (desde Von Neuman) Conceito de família - Arquitetura x Organização (1968) Unidade de controle microprogramada (1951) Memória cache (1968) Pipeline (paralelismo) Múltiplos processadores (organizações e objetivos diferentes) Arquitetura de computadores com conjunto reduzido de instruções (RISC) RISC x CISC Fim da década de 70 Projeto de instruções complexas, com implementação simples a partir de interpretador Busca pela redução da distância entre a linguagem de máquina e as necessidades das linguagens de programação de alto nível Anos 80 Surgimento de processadores com um conjunto reduzido de instruções e sem interpretação RISC x CISC RISC (Reduced Instruction Set Computer) Processador com pequeno número de instruções muito simples Instruções capazes de serem executadas em um único ciclo do caminho de dados CISC (Complex Instruction Set Computer) Tecnologia mais antiga e usada para famílias de computadores compatíveis a nível de software. Número maior de instruções Uso extensivo de interpretação (principalmente para modelos mais baratos) Por quê?? RISC x CISC Argumento RISC Mesmo que uma máquina RISC precisasse de 4 ou 5 instruções para fazer o que uma máquina CISC faria com apenas 1 instrução, se a instrução RISC fosse 10 vezes mais rápida (só hardware) a máquina RISC venceria RISC x CISC Por que a RISC não suplantou a CISC? Problemas de compatibilidade com máquinas antigas com software já desenvolvido. Aparecimento de soluções híbridas: Por exemplo, a INTEL usa RISC para instruções de uso mais frequente (Núcleo RISC) e interpretação para instruções mais complexas e de uso menos frequente. Princípios de Projeto RISC para Computadores Modernos Todas as instruções são diretamente executadas por hardware Maximizar a taxa na qual as instruções são executadas As instruções precisam ser facilmente decodificadas Somente as instruções de Load (leitura) e Store (escrever) devem referenciar a memória Projetar uma máquina com muitos registradores RISC x CISC Paralelismo Melhora do desempenho Processadores mais rápidos (por exemplo, aumento da velocidade do clock) existem um limite tecnológico Paralelismo Paralelismo Execução de duas ou mais operações ao mesmo tempo Aumenta o desempenho mantendo o mesmo clock Paralelismo Tipos de paralelismo Nível de instruções um único processador deve executar mais instruções por segundo Nível do processador vários processadores trabalhando juntos para a solução do mesmo problema Paralelismo no Nível de Instruções Execução em Pipeline O maior gargalo para a velocidade de execução de instruções é o acesso à memória Solução busca antecipada de instruções na memória Utilização de um buffer de pré-busca conjunto de registradores que armazenam as instruções antecipadas Pré-busca divide a execução das instruções em busca e execução efetiva Pipeline Divisão da execução da instrução em várias partes, com um hardware dedicada a cada uma delas Paralelismo no Nível de Instruções (a) Pipeline de 5 estágios. (a) Pipeline de 5 estágios. (b) Estado dos estágios em função do tempo(b) Estado dos estágios em função do tempo Paralelismo no Nível de Instruções Execução em Pipeline Ciclo dessa máquina 2ns Duração de uma instrução (5 estágios) 10ns Instruções por segundo aparentemente 100MIPS, mas como temos uma nova instrução a cada 2ns temos na verdade 500MIPS MIPS Milhões de Instruções por Segundo Paralelismo no Nível de Instruções Arquiteturas Superescalares Se um pipeline é bom, dois é ainda melhor Um única unidade de busca de instrução busca pares de instruções e põe cada uma em um pipeline (execução em paralelo) Não pode haver conflitos pela utilização de recursos O resultado de uma das instruções não pode depender da outra Esse tratamento pode ser feito pelo compilador ou por um hardware extra. Paralelismo no Nível de Instruções Pipeline duplo de 5 estágiosPipeline duplo de 5 estágios Paralelismo no Nível de Instruções Intel começou a utilizar pipelines a partir do 486 Pentium original utilizava pipeline duplo de 5 estágios semelhante ao apresentado Conjunto de regras simples determinavam se duas instruções eram compatíveis e podiam ser executadas em paralelo Pares de instruções não compatíveis eram “retidas” para execução em paralelo com a próxima instrução Construção de compiladores específicos para o Pentium Programas compilados com esse compilador executavam 2 vezes mais rápido – E as camadas de abstração?! Paralelismo no Nível de Instruções Muitos pipelines implicam em um aumento considerável do hardware Estágio de execução requer um tempo maior → todos os estágios precisam ter a mesma duração (LIMITAÇÃO) Instruções diferentes possuem tempo de execução diferentes Solução → processadores superescalares: – único pipeline com diversas unidades funcionais (estágio 4 do pipeline - E4) – Essas unidade funcionais executam em uma velocidade menor que o processo de busca Paralelismo no Nível de Instruções Processador superescalar com 5 unidades funcionaisProcessador superescalar com 5 unidades funcionais Paralelismo no Nível de Instruções Arquiteturas Superescalares Intel introduziu essa solução a partir das famílias Intel Core Definição de “superescalar” evoluiu → processadores que emitem múltiplas instruções (frequentemente, 4 ou 6) em um único ciclo de clock Mesmo princípio • várias unidades funcionais • Tempo diferente de execução para instruções • Maior capacidade de fornecer instruções (E3) do que executá-las (E4) Superescalar X Superpipeline Superescalar – Evolução do pipeline – Execução de instruções independentemente e concorrentemente em pipelines diferentes – Permite que as instruções sejam executadas em uma ordem diferente do programa (melhor aproveitamento das unidades funcionais) Superpipeline – Explora o fato de que muitos estágios executam suas tarefas em menos da metade de um ciclo de clock Superescalar X Superpipeline Paralelismo em nível de instruções Limitações – Dependência de dados – Dependência procedural – Conflito de recursos – Dependência de saída Paralelismo no nível de instrução aumenta o desempenho na ordem de 5 a 10 vezes Para se ter um aumento de desempenho da ordem de 50, 100 ou mais, é necessário recorrer a computadores com mais de um processador Taxonomia de Flynn Single Instruction, Single Data stream (SISD) Single Instruction, Multiple Data streams (SIMD) Multiple Instruction, Single Data stream (MISD) Multiple Instruction, Multiple Data streams (MIMD) Taxonomia de Flynn Single Instruction, Single Data stream (SISD) – único fluxo de instruções → único fluxo de dados. – Processador único, única sequência de instruções, única memória. – Característico da máquina de Von Neuman (computadores pessoais) – Podem usar pipeline → única unidade de controle (pode possuir mais de uma unidade funcional) Taxonomia de Flynn Single Instruction, Multiple Data streams (SIMD) – vários dados sob o comando de apenas uma instrução. – Múltiplos dados → organização de memória em diversos módulos. – A unidade de controle é única e existem diversas unidades funcionais. – Nesta classe estão os processadores vetoriais e matriciais. Taxonomia de Flynn Multiple Instruction, Single Data stream (MISD) – Múltiplas unidades de controle executando instruções distintas sobre o mesmo dado. – Não é implementada comercialmente Taxonomia de Flynn Multiple Instruction, Multiple Data streams (MIMD) – Processamento de múltiplos dados por múltiplas instruções – Várias unidades de controle comandam suas unidades funcionais → vários módulos de memória – Maioria das arquiteturas paralelas da atualidade. – De acordo com o método de comunicação entre os processadores, pode ser divida em: • Memória compartilhada (fortemente acoplada) → Multiprocessador simétrico (SMP) e Acesso não uniforme à memória (NUMA) • Memória distribuída (fracamente acoplada) → clusters Taxonomia de Flynn Taxonomia de Flynn Projeto de Organizações Paralelas SMPs (Symmetric Multiprocessor), NUMA (Nonuniform memory acess) e Clusters Questões complexas que envolvem: – Organização física – Estruturas de interconexão – Comunicação entre processadores – Projeto de sistemas operacionais – Técnicas de aplicações de software Paralelismo no Nível do Processador Demanda por desempenho X Custo do hardware Multiprocessadores Simétricos - SMP (Symmetric Multiprocessor) Refere-se a uma arquitetura de hardware e também ao comportamento do SO que a reflete. Características: – Dois ou mais processadores semelhantes – Mesma memória principal e recursos de E/S – Interconectados por um barramento ou outro esquema de conexão interna – Controlados pelo SO que fornece interação entre processadores e programas Paralelismo no Nível do Processador Multiprocessadores Vários processadores x memória única x barramento único conflitos entre os processadores Solução memória local para cada processador, que armazena o programa e os dados que não precisam ser compartilhados Com a redução do uso do barramento compartilhado, diminui o tráfego e reduz as possibilidades de conflito Paralelismo no Nível do Processador (a) Multiprocessador com um único barramento e memória (a) Multiprocessador com um único barramento e memória únicaúnica (b)Multiprocessador com memórias locais aos processadores(b)Multiprocessador com memórias locais aos processadores Clusters Sistema com poucos multiprocessadores são fáceis de serem construídos. Com aumento no número processadores: – vários processadores independentes compartilhando a mesma memória – as atividades dos processadores devem ser coordenadas para que um não interfira na atividade do outro – gerenciar a memória que cada um usa para não haver conflitos – Compartilham um barramento único (alta concorrência) Solução: – Grande número de computadores completos interconectados, sem memória compartilhada: multicomputadores (clusters) – Alternativa aos SMPs para fornecer alto desempenho Clusters Sistemas com um grande número de computadores interconectados Não existe nenhum tipo de memória comum sendo compartilhada Comunicação entre computadores é feita por meio de troca de mensagens com alta velocidade Computador não precisa estar ligado diretamente com todos os outros (uso de topologias em árvore, anéis, etc..) Mensagens podem ser roteadas do computador fonte para o destino (usando computadores intermediários) Multiprocessador x Multicomputador Sistemas multiprocessadores – Mais fáceis de programar – Mais próximo do modelo original de processador único (maioria das aplicações desenvolvidas) – Menos espaço físico e consumo de energia – Mais estáveis (mais antigos) Sistemas multicomputadores– Tendência para servidores de alto desempenho – Superiores aos SMPs em escalabilidade e disponibilidade Computação Vetorial Necessidade por computadores para resolução de problemas matemáticos intensivos. Supercomputadores capazes de efetuar bilhões de operações em ponto flutuante por segundo. Diferem de mainframes que são projetados para multiprogramação e E/S intensivo. Mesmos cálculos efetuados em diversos conjuntos de dados ao mesmo tempo (SIMD) Duas soluções de paralelismo para solucionar os problemas científicos – Processador matricial – Processador vetorial Processador matricial Composto por um grande número de processadores idênticos Cada processador executa a mesma sequência de instruções em conjuntos de dados (carregados no momento da inicialização) diferentes Possui um única unidade de controle que envia instruções em broadcast (difusão) para todos os processadores Processador matricial Processador matricial do tipo ILLIAC IVProcessador matricial do tipo ILLIAC IV Processador no núcleo da GPU Fermi da NvidiaProcessador no núcleo da GPU Fermi da Nvidia Processador Vetorial Muito parecido com o processador matricial Operações aritméticas são realizadas em uma única ULA operando em pipeline Trabalha com registradores vetoriais Registradores convencionais que podem ser carregados por meio da execução de uma única instrução, que os carrega de modo serial Matricial X Vetorial Processador matricial x vetorial programação para o matricial voltada ao paralelismo (mais difícil) processador matricial é, em geral, mais rápido principalmente para repetição de um mesmo processamento em vários "pedaços" dos dados processador vetorial se adapta a processamentos paralelos e não paralelos hardware do matricial é mais caro (muitas ULAs) Instruções MMX e SSE do Pentium 4 usam processamento matricial para acelerar software de multimídia. Slide 1 Slide 2 Slide 3 Slide 4 Slide 5 Slide 6 Slide 7 Slide 8 Slide 9 Slide 10 Slide 11 Slide 12 Slide 13 Slide 14 Slide 15 Slide 16 Slide 17 Slide 18 Slide 19 Slide 20 Slide 21 Slide 22 Slide 23 Slide 24 Slide 25 Slide 26 Slide 27 Slide 28 Slide 29 Slide 30 Slide 31 Slide 32 Slide 33 Slide 34 Slide 35 Slide 36 Slide 37 Slide 38 Slide 39 Slide 40 Slide 41 Slide 42 Slide 43 Slide 44 Slide 45 Slide 46 Slide 47 Slide 48 Slide 49 Slide 50 Slide 51 Slide 52 Slide 53 Slide 54 Slide 55 Slide 56 Slide 57 Slide 58
Compartilhar