Não é mais o processador do seu avô…

De um tempo pra cá tenho trabalhado na suposição de que a arquitetura superescalar dos processadores Intel não foi mofificada tanto assim desde o Pentium 4. Engano meu…

Uma das regras, desde o lançamento do Pentium, era de que existiam duas unidades de execução distintas per core. A unidade U e a V, onde a unidade U executava todas as instruções contidas na fila de pré-busca (prefetch queue) e a unidade V executava algumas poucas instruções, emparelhadas à execução das instruções na unidade U, sempre que possível… Isso não é mais válido. A arquitetura Haswell, por exemplo, possui 8 unidades distintas:

haswellexec

E a simples fila de prefetch foi extendida em duas partes: A fila de prefetch explicitamente e um buffer de reordenação. O objetivo do buffer de reordenação é a de proporcionar a execução fora-de-ordem (e, em paralelo) de instruções que não sejam interdependentes.

Dessa maneira, os processadores que usam a arquitetura Haswell são capazes de executar até 6 instruções simultaneamente. Mais ainda: Note que a fila de prefetch primária é capaz de ordenar 56 instruções; O buffer de reordenação, 192; E a unidade de execução, composta de 8 “portas”, 60 instruções. Isso significa que o processador é capaz de executar de 7 a 8 conjuntos de 8 instruções sem recorrer ao cache L1i! Mais até, dependendo de o quanto o buffer de reordenação esteja organizado (até 24 conjuntos de 8 instruções!).

Isso também significa que as regras de emparelhamento de instruções, hoje, são completamente inválidas, se você quer extrair a máxima performance possível de seu processador. As novas regras são MUITO complicadas e são MUITAS… E, na prática, são bem difíceis de serem implementadas totalmente. Mas, é sempre bom conhecê-las, certo?

A vida do desenvolvedor na linguagem assembly voltou a ficar muito interessante!!! :)

Anúncios

Deixe um comentário

Faça o login usando um destes métodos para comentar:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s