Programação Paralela em Arquiteturas Multi-Core/Arquitetura Intel Core e Core 2: diferenças entre revisões
[edição não verificada] | [edição não verificada] |
Conteúdo apagado Conteúdo adicionado
m formatação; ortografia |
|||
Linha 10:
===
Os processadores que têm sido desenvolvidos recentemente buscam em sua maioria alcançar o máximo de paralelismo possível. Essa afirmação pode ser verificada facilmente ao se analisar arquiteturas de processadores como os [
Para alcançar uma maior eficiência em aplicações que exigem maior grau de paralelismo, a tendência atual é que os novos processadores contenham um número cada vez maior de unidades de processamento. Para produzir processadores com tantas unidades de processamento, é necessário diminuir a complexidade de cada unidade de forma a permitir que a produção do processador seja economicamente viável para o fabricante. Essa redução de complexidade pode afetar recursos que antes eram tidos como necessários nos processadores modernos, como a execução fora de ordem <ref>Do Estrangeirismo ''Out of order execution - OOO''</ref>, utilizada para aumentar o número de instruções realizadas em um ciclo de clock.
Neste contexto temos a
==== Conceito de
O desempenho <ref>Também conhecido pelo estrangeirismo ''performance''</ref> de um processador não pode ser medido apenas como uma proporção direta da freqüência do relógio do processador, ou mesmo como a quantidade de instruções realizadas por ciclo do processador (''IPC''). O desempenho é dado pela simples equação:
Linha 32:
=== Arquitetura ===
A tendência atual dos processadores voltados para ambientes paralelos é não implementar execução de instruções fora de ordem. A execução fora de ordem permite que uma
A arquitetura Core foge à regra e busca aperfeiçoar as técnicas já existentes. Assim, cada núcleo de processamento é altamente eficiente e ao mesmo tempo complexo, dificultando a criação de processadores que possuam muitos núcleos. Espera-se que ganhos expressivos de poder de processamento sejam alcançados com a adição de novos núcleos de processamento aos processadores, ao contrário da estratégia anterior da Intel com a arquitetura NetBurst, onde os ganhos eram alcançados principalmente com avanço das técnicas de fabricação que permitissem que os processadores funcionassem a
Linha 42:
----
O dito popular que a Intel parece ter seguido ao desenvolve a arquitetura Core foi "Mais é Melhor". A
Apesar da adição de mais
A arquitetura Core possui várias funcionalidades e soluções que visam manter a poderosa unidade de execução ocupada. Essas funcionalidades buscam principalmente minimizar o envio simultâneo de instruções que possuam dependência para a unidade de execução e minimizam o número de acessos à memória.
Linha 106:
===== Pré-
A primeira técnica utilizada para aumentar a performance é o pré-carregamento <ref> Também conhecido pelo estrangeirismo ''prefetch'' </ref>de instruções e dados.
Linha 115:
A
* 1 unidade na cache de primeiro nível (L1) do primeiro núcleo
* 1 unidade na cache de primeiro nível (L1) do segundo núcleo
As unidades guardam informações sobre
* Assumir se um desvio condicional <ref>Também conhecido pelo estrangeirismo ''branch''</ref> provavelmente será tomado, baseado na probabilidade da instrução de desvio condicional alterar o fluxo de execução do programa de acordo com o histórico recente dos resultados deste desvio condicional específico. Quando o processador assume que o desvio será tomado, ele encontra o endereço de destino do desvio e começa a executar as instruções do novo local.
Linha 129:
===== Desambiguação de
Os processadores modernos utilizam a execução fora de ordem; uma técnica que altera a ordem em que as instruções são realizadas para permitir que um número maior de instruções esteja em execução em um determinado momento.
Linha 146:
Vamos verificar como exemplo da desambiguação de memória o que acontece para a seguinte
* 'STORE 13 ''REF''' - Guardar o valor 13 na posição ''REF'' da memória.
* 'LOAD ''REF'' A' - Carregar o conteúdo da posição ''REF'' da memória no registrador ''A''.
Linha 160:
* Caso A: Nesse caso o LOAD vai carregar no registrador A as informações salvas na posição de memória ''vermelho'' pelo STORE, sendo assim ele fica impedido de iniciar sua execução até que o STORE seja finalizado.
* Caso B: Nesse caso o LOAD e o STORE estão trabalhando com posições de memória diferentes. Como esta independência só é descoberta após o ciclo de decodificação do STORE, a única alternativa possível é iniciar a execução do LOAD após o ciclo de decodificação do STORE. Este é o funcionamento das
* Caso C: Este caso ilustra o funcionamento da Desambiguação de Memória da arquitetura Core para a situação descrita no Caso B. O LOAD e o STORE estão trabalhando com posições de memória diferentes, mas através dos algoritmos de Desambiguação de Memória a independência é descoberta antes do STORE iniciar sua execução.
==== Intel Advanced Digital Media Boost ====
|