Baixe o app para aproveitar ainda mais
Prévia do material em texto
Paralelismo Um processador superescalar é aquele no qual são usadas várias pipelines de instrução independentes. Cada pipeline tem diversos estágios, podendo manipular várias instruções a cada instante. O uso de várias pipelines introduz um novo nível de paralelismo, possibilitando processar diversos fluxos de instrução de cada vez. Um processador superescalar explora o que é conhecido como paralelismo no nível de instrução, que diz respeito ao nível em que instruções de um programa podem ser executadas em paralelo. Se os dados de entrada de uma instrução dependem da saída produzida por uma instrução precedente, a execução dessa instrução não pode ser completada antes ou ao mesmo tempo que a execução da instrução da qual ela depende. Uma vez que essas dependências de dados sejam identificadas, o processador pode executar e completar instruções em uma ordem diferente da que ocorre no código de máquina original. Computação paralela é uma forma de computação em que vários cálculos são realizados simultaneamente, operando sob o princípio de que grande problemas geralmente podem ser divididos em problemas menores, que então são resolvidos concorrentemente(em paralelo). Existem diferentes formas de computação paralela: em bit, instrução, de dado ou de tarefa. A técnica de paralelismo já é empregada por vários anos, principalmente na computação de alto desempenho, mas recentemente o interesse no tema cresceu devido às limitações físicas que previnem o aumento de frequência de processamento. Com o aumento da preocupação do consumo de energia dos computadores, a computação paralela se tornou o paradigma dominante nas arquitetura de computadores sob forma de processadores multinúcleo. Uma abordagem alternativa para obter maior desempenho é conhecida como superpipeline. A técnica explora o fato de que muitos dos estágios de uma pipeline desempenham tarefas que requerem um tempo menor que a metade de um ciclo de relógio. 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 em nível de instrução Execução em Pipeline O maior gargalo para a velocidade de execução de instruções é o acesso à memória. A Solução é buscar antecipadamente as instruções na memória utilização um buffer de pré-busca que é um conjunto de registradores que armazenam as instruções antecipadas. A Pré-busca divide a execução das instruções em busca e execução efetiva. A Pipeline divide a execução da instrução em várias partes, com um hardware dedicada a cada uma delas. Arquteturas superescalares Se um pipeline é bom, dois é ainda melhor. Uma ú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. Muitos pipelines implicam em um aumento considerável do hardware. O Uso de um único pipeline com diversas unidades funcionais (estágio 4 do pipeline), essas unidade funcionais executam as operações em uma velocidade bem mais lenta que o processo de busca das mesmas. Paralelismo no nível do processador Os Problemas dos processadores são a limitação de velocidade devido a tecnologia vigente, quanto mais rápido mais calor dissipado. O 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 Computadores Matriciais Problemas científicos: estrutura regular de dados, a exemplo de matrizes.Mesmos cálculos efetuados em diversos conjuntos de dados ao mesmo tempo. Duas soluções de paralelismo para solucionar os problemas científicos: Processador matricial Processador vetorial O 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 diferentes, possui uma única unidade de controle que envia instruções em broadcast (difusão) para todos os processadores. O Processador Vetorial muito parecido com o processador matricial, as operações aritméticas são realizadas em uma única ULA operando em pipeline, trabalha com registradores vetoriais isso é registradores convencionais que podem ser carregados por meio da execução de uma única instrução, que os carrega de modo serial. Processador matricial x vetorial Processadores matriciais são eficientes apenas para cálculos idênticos em conjuntos distintos de dados, são mais rápidos que os processadores vetoriais, necessitam de um maior hardware e são mais difíceis de programar. O Processamento vetorial pode ser incorporado a processadores convencionais, operações vetorias são executadas mais rapidamente. Multiprocessadores Composto por vários processadores independentes que compartilham a mesma memória. As atividades dos processadores devem ser coordenadas para que um não interfira na atividade do outro, ou seja, gerenciar a memória que cada um usa para não haver conflitos além de compartilharem um barramento único. Uma solução para evitar os conflitos é adicionar uma 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. Outra solução para os conflitos é baseado no uso de memória cache. Multicomputadores Comunicação por meio de troca de mensagens. Existem topologias especiais de interconexão, impossibilidade de se interligar todos os computadores, ocorre então o roteamento de mensagens entre os computadores. Transmissão em torno de alguns microsegundos, existem sistemas de multicomputadores com 10.000 processadores. Sistemas multiprocessadores são mais fáceis de programar, sistemas multicomputadores são mais fáceis de constuir. Existe ainda a solução do sistema híbrido, neste caso. Porém a Ilusão de compartilhamento de memória, sem a dificuldade da implementação real. Multinúcleo (múltiplos núcleos, do inglês multicore) consiste em colocar dois ou mais núcleos de processamento (cores) no interior de um único encapsulamento (um único chip). O sistema operacional trata cada um desses núcleos como um processador diferente. Na maioria dos casos, cada unidade possui seu próprio cache e pode processar várias instruções simultaneamente. Adicionar novos núcleos de processamento a um processador (único encapsulamento) possibilita que as instruções das aplicações sejam executadas em paralelo, como se fossem 2 processadores distintos. Os dois núcleos não somam a capacidade de processamento, mas dividem as tarefas entre si. Por exemplo, um processador de dois núcleos com clock de 1.8 GHz não equivale a um processador de um núcleo funcionando com clock de 3.6 Ghz, e sim dois núcleos de 0.9. A arquitetura de multi-threads executadas simultaneamente(SMT – Simultaneous Multithreading) oferece um aumento na performance do processador a um custo reduzido no aumento da área do die – tipicamente, um ganho de 20% na performance a um custo de 5% a mais de transistores. O ganho de perfomance vem da melhor utilização dos recursos do processador e da mitigação do impacto causado pela latência da memória; já o baixo aumento da área vem do aproveitamento de características já existentes nos processadores super-escalares. Intel Hyper-Threading Technology (HTT) Hyper-Threading ou hiperprocessamento é uma tecnologia usadaem processadores que o faz simular dois processadores tornando o sistema mais rápido quando se usa vários programas ao mesmo tempo. Apesar do foco da tecnologia Hyper-Threading ser os processadores para servidores de rede, os processadores da série Intel® Core2™ (Extreme Edition) e Intel® Core™ (i3,i5 e i7) usufruem dessa tecnologia proporcionando até 12 núcleos totais (i7 980x). Essa técnica foi criada para oferecer maior eficiência na utilização dos recursos de execução do processador. Segundo a Intel, a Hyper-Threading oferece um aumento de desempenho de até 30% dependendo da configuração do sistema. A simulação do segundo processador é feito utilizando partes não aproveitadas do processador na previsão de desvio do pipeline. Estas partes são conhecidas como bolhas do pipeline e não teriam utilidade nenhuma desperdiçando ciclos. Simulando em um único processador físico dois processadores lógicos, cada processador lógico recebe seu próprio controlador de interrupção programável (APIC) e um conjunto de registradores. Os outros recursos do processador físico como cache de memória, unidade lógica e aritmética, barramentos, são compartilhados entre os processadores lógicos, parecendo assim um sistema com dois processadores. Os aplicativos que mais se beneficiam do HT, de uma forma geral, são os aplicativos de compressão de áudio e vídeo, compactação e descompactação de arquivos, aplicativos de renderização 3D e alguns jogos. Os ganhos são mais expressivos em ambientes multitarefa. Falando em software, significa que o sistema operacional pode enviar tarefas para os processadores lógicos como se estivesse enviando para processadores físicos em um sistema de multiprocessamento, e o impacto sobre o desempenho é o mesmo de ter dois processadores reais. Um efeito colateral do Hyper-Threading é o aumento do consumo de energia e, conseqüentemente, a dissipação térmica do processador em 6 a 8%. É comum que a temperatura do processador suba 5 ou 6 graus, o que pode prejudicar a estabilidade do sistema, caso a ventilação dentro do gabinete não seja boa e o processador já esteja trabalhando próximo limite. Os aplicativos que costumam apresentar perdas mais frequentes de desempenho são sobretudo os aplicativos do dia-a-dia, como navegadores, editores de texto e planilhas. Turbo Boost O Turbo Boost permite o aumento dinâmico da velocidade de clock da CPU, quando necessário. O Turbo Boost é ativado quando o sistema operacional requer o maior desempenho possível do processador. Tal desempenho é controlado via ACPI(configuração e gerenciamento de energia), o qual é suportado por todos os principais sistemas operacionais, sendo, portanto, desnecessário quaisquer software ou drivers adicionais para esta nova tecnologia. HD Boost É responsável pela compatibilidade entre CPU e programas que usam os conjuntos de instruções SSE4(conjuntos de instruções principais). Tal característica possibilita um maior desempenho em aplicativos mais robustos que necessitam de um poder de processamento de alto nível. QPI QuickPath Interconnect (Interconexão de caminho rápido) Ao invés de aumentar a frequência ou a tensão, o recurso Intel QPI aumenta a largura de banda (o que permite a transmissão de mais dados) e diminui as latências. Vale salientar que este recurso só está presente nos CPUs Intel Core i7 da série 900 e possibilita taxas de transferência de até 25.6 GB/s.
Compartilhar