Buscar

Paralelismo em Processadores

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 3 páginas

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.

Outros materiais