Loop Stream Detector e a volta do Hyper Threading

Com relação ao processamento das instruções, uma novidade importante é o Loop Stream Detector (LSD), um controlador adicional que vasculha as instruções decodificadas antes que elas cheguem ao processador, localizando instruções referentes a loops de processamento.

Em vez de reprocessar as instruções do loop repetidamente, o processar armazena as instruções em um pequeno cache interno e as executa a partir daí. Além de permitir ganhar tempo, isso reduz sutilmente o consumo elétrico, pois permite desativar o circuito de branch prediction, juntamente com as unidades fetch e decode durante o processamento do loop:

4093f036

No Conroe (usado na geração inicial do Core 2 Duo), a Intel inaugurou o uso do “macro-ops fusion“, que permite que algumas instruções específicas sejam fundidas durante a fase de decodificação e processadas como uma única instrução, resultando em um pequeno ganho de desempenho. No Conroe o macro-ops fusion funcionava apenas com instruções de 32 bits, mas o Nehalem ganhou suporte à fusão de instruções de 64 bits, o que é uma boa notícia para quem já fez ou pretende fazer a migração para um sistema de 64 bits.

O Nehalem marca também a volta do Hyper Threading, chamado agora de SMT (Simultaneous Multi-Threading) o que faz com que o processador se apresente ao sistema operacional como tendo 8 núcleos em vez de 4. Naturalmente, o SMT não dobra o desempenho do processador, servindo apenas como um recurso extra que permite que ele aproveite melhor os recursos de processamento, processando dois threads simultaneamente sempre que possível.

Se você acompanhou a era do Pentium 4, talvez não tenha boas lembranças do Hyper Threading, já que ele reduzia o desempenho do processador em algumas operações e aumentava consideravelmente o consumo elétrico. No caso do Nehalem, entretanto, a função passou por uma série de melhorias, tornando-se mais eficiente. Além das otimizações, alguns outros fatores importantes são:

a) O Nahalem possui um controlador de memória integrado e caches muito maiores, o que garante um fluxo de dados muito maior. Isso é um pré-requisito para uma boa eficiência ao usar o SMT, já que ao processar dois threads simultaneamente, cada núcleo precisa ser alimentado com dados referentes a ambos.

b) Hoje em dia temos um volume muito maior de softwares otimizados para o processamento simultâneo de vários threads, diferente do que tínhamos na época do Pentium 4.

O ganho ao utilizar o SMT no Nehalem fica abaixo dos 10% na maioria das tarefas (em algumas situações, pode haver até mesmo uma pequena perda), mas existem alguns casos específicos onde ele representa ganhos expressivos, como no caso do 3DMark, onde o ganho chega aos 35%, o que não é nada ruim, considerando que ele consiste em aproveitar ciclos de processamento que de outra forma seriam desperdiçados.

Além da questão do desempenho, existe também um pequeno ganho do ponto de vista do consumo elétrico, já que ao executar as tarefas mais rápido, o processador passa mais tempo em modo de baixo consumo. É de se observar que a Intel tem utilizado o SMT também no Atom, pelo mesmo motivo.

Sobre o Autor

Redes Sociais:

Deixe seu comentário

X