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
Alymenbr (discussão | contribs)
Alymenbr (discussão | contribs)
Linha 96:
==== Intel Smart Memory Access ====
 
Intel Smart Memory Access é o nome de um conjunto de técnicas utilizada para aumentar a performance do sistema de acesso à memória do processador. Consiste das técnicas de Pré-Carregamento <ref> Também conhecido pelo estrangeirismo ''prefetch'' </ref> e Desambiguação de Memória <ref> Também conhecido pelo estrangeirismo ''Memory disambiguation''</ref>.
 
===== Pré-Carregamento =====
A primeira técnica utilizada para aumentar a performance obtidoé através doo pré-carregamento <ref> Também conhecido pelo estrangeirismo ''prefetch'' </ref>de instruções e dados.
 
A microarquitetura possui 6 unidades independentes de pré-carregamento de dados:
Linha 119 ⟶ 120:
* Desvios condicionais indiretos (onde o endereço de destino é carregado de um registrador) são intrinsecamente difíceis de pré-carregar, já que a informação sobre o endereço de destino está indisponível durante o processo de predição. Quando os preditores assumem que um desvio condicional indireto será tomado, eles verificam em uma tabela se o desvio condicional indireto já foi tomado anteriormente e qual foi o seu endereço de destino naquela execução. Os preditores utilizam então esse endereço como o provável destino da execução atual.
 
===== Desambiguação de Memória =====
 
A segunda técnica utilizada é a desambiguação de memória <ref> Também conhecido pelo estrangeirismo ''Memory disambiguation''</ref>. 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.
 
 
A segunda técnica utilizada é a desambiguação de memória <ref> Também conhecido pelo estrangeirismo ''Memory disambiguation''</ref>. 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.
 
Quando ocorre uma instrução STORE seguida de um LOAD, podem acontecer duas situações:
Linha 149:
Cada linha cinza representa um ciclo de execução do processador.
 
* 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 A: Nesse caso,
 
* 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 aruiteturas Intel anteriores à arquitetura Core.
 
* 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. sendo assim, existe a alternativa de executar o LOAD antes do STORE. Nesse caso o LOAD termina sua execução mais cedo, permitindo que o ADD dependente do LOAD (ambos acessam o registrador ''A'') também seja executado antes.
 
==== Intel Advanced Digital Media Boost ====