Articles of intel

Como o x86 é agendado, exatamente?

As modernas CPUs x86 quebram o stream de instruções de input em micro-operações (uops 1 ) e agendam esses uops fora de ordem conforme suas inputs se tornam prontas. Embora a ideia básica seja clara, gostaria de saber os detalhes específicos de como as instruções prontas estão agendadas, já que ela afeta as decisões de […]

Desativando um programa para o pipeline nas CPUs da família Sandybridge da Intel

Eu estive quebrando meu cérebro por uma semana tentando completar essa tarefa e espero que alguém aqui possa me levar ao caminho certo. Deixe-me começar com as instruções do instrutor: Sua tarefa é o oposto da nossa primeira tarefa de laboratório, que era otimizar um programa de número primo. Sua finalidade nesta tarefa é pessimizar […]

Por que esse código SSE é 6 vezes mais lento sem o VZEROUPPER no Skylake?

Eu tenho tentado descobrir um problema de desempenho em um aplicativo e finalmente reduzi-lo a um problema muito estranho. A parte de código a seguir é executada 6 vezes mais lentamente em uma CPU Skylake (i5-6500) se a instrução VZEROUPPER estiver comentado. Testei os CPUs Sandy Bridge e Ivy Bridge e as duas versões rodam […]

Erro de instalação do Intel HAXM – Este computador não suporta a tecnologia Intel Virtualization (VT-x)

Eu tenho um problema com a minha instalação do HAXM. É o seguinte. Eu recebi esse erro toda vez que eu tentei instalar o HAXM para o meu computador: O problema é que meu computador suporta a tecnologia de virtualização (veja a foto abaixo). Alguma idéia de como corrigir esse problema?

FLOPS por ciclo para ponte de areia e haswell SSE2 / AVX / AVX2

Estou confuso sobre quantos flops por ciclo por núcleo podem ser feitos com Sandy-Bridge e Haswell. Pelo que entendi, com SSE, ele deve ter 4 flops por ciclo por núcleo para SSE e 8 flops por ciclo por núcleo para AVX / AVX2. Isso parece ser verificado aqui: Como eu alcanço o máximo teórico de […]

Alinhamento de ramificação for loops envolvendo instruções codificadas em CPUs da família Intel SnB

Isso está relacionado, mas não é o mesmo, como esta pergunta: Otimizações de desempenho do assembly x86-64 – Alinhamento e previsão de ramificação e está um pouco relacionado à minha pergunta anterior: Não assinado 64 bits para conversão dupla: por que esse algoritmo do g ++ O seguinte é um caso de teste não real […]

Como você usa o gcc para gerar código assembly na syntax da Intel?

A opção gcc -S irá gerar o código assembly na syntax da AT & T, existe uma maneira de gerar arquivos na syntax da Intel? Ou existe uma maneira de converter entre os dois?

Como exatamente os registradores parciais no Haswell / Skylake funcionam? Escrever AL parece ter uma dependência falsa do RAX, e o AH é inconsistente

Esse loop é executado em uma iteração por 3 ciclos no Intel Conroe / Merom, com gargalo na imul transferência como esperado. Mas em Haswell / Skylake, ele é executado em uma iteração por 11 ciclos, aparentemente porque a setnz al tem uma dependência do último imul . ; synthetic micro-benchmark to test partial-register renaming […]

Modos de micro fusão e endereçamento

Eu encontrei algo inesperado (para mim) usando o Intel® Architecture Code Analyzer (IACA). As seguintes instruções usando o endereçamento [base+index] addps xmm1, xmmword ptr [rsi+rax*1] não fusiona de acordo com o IACA. No entanto, se eu usar [base+offset] como este addps xmm1, xmmword ptr [rsi] A IACA relata que se funde. A seção 2-11 do […]

Por que a instrução de loop é lenta? A Intel não conseguiu implementá-lo com eficiência?

LOOP ( Intel ref entry manual ) decrementa ecx / rcx e , em seguida, salta se for diferente de zero . É lento, mas a Intel não conseguiu fazer isso rápido? dec/jnz já se funde em um único uop na família Sandybridge; A única diferença é que isso define flags. loop em várias microarquiteturas, […]