porque i7-860 é duas vezes mais lento que E3-1220?

0

Eu tenho um software de negociação financeira. Ele decodifica mensagens rápidas / fixas. Estou executando mesmos binários em duas máquinas diferentes em um conjunto de dados muito semelhante. O software recebe "mensagens" e as decodifica. A regra geral - a mensagem mais longa leva mais tempo para decodificar:

i7-860, Windows 7:

Debug 18:23:48.8047325 count=51 decoding take microseconds = 300
Debug 18:23:49.7287854 count=53 decoding take microseconds = 349
Debug 18:23:49.7397860 count=110 decoding take microseconds = 516
Debug 18:23:49.7497866 count=92 decoding take microseconds = 512
Debug 18:23:49.7597872 count=49 decoding take microseconds = 267
Debug 18:23:49.7717878 count=194 decoding take microseconds = 823
Debug 18:23:49.7797883 count=49 decoding take microseconds = 296
Debug 18:23:49.7997894 count=50 decoding take microseconds = 299
Debug 18:23:50.7328428 count=101 decoding take microseconds = 583
Debug 18:23:50.7418433 count=42 decoding take microseconds = 281
Debug 18:23:50.7538440 count=151 decoding take microseconds = 764
Debug 18:23:50.7618445 count=57 decoding take microseconds = 279
Debug 18:23:50.7738452 count=122 decoding take microseconds = 712
Debug 18:23:50.8028468 count=52 decoding take microseconds = 281
Debug 18:23:51.7389004 count=137 decoding take microseconds = 696
Debug 18:23:51.7499010 count=100 decoding take microseconds = 485
Debug 18:23:51.7689021 count=185 decoding take microseconds = 872
Debug 18:23:51.8079043 count=49 decoding take microseconds = 315
Debug 18:23:52.7349573 count=90 decoding take microseconds = 532
Debug 18:23:52.7439578 count=53 decoding take microseconds = 277
Debug 18:23:52.7539584 count=134 decoding take microseconds = 623
Debug 18:23:52.7629589 count=47 decoding take microseconds = 294
Debug 18:23:52.7749596 count=198 decoding take microseconds = 868
Debug 18:23:52.8039613 count=52 decoding take microseconds = 291
Debug 18:23:53.7400148 count=132 decoding take microseconds = 666
Debug 18:23:53.7480153 count=81 decoding take microseconds = 430
Debug 18:23:53.7570158 count=49 decoding take microseconds = 301
Debug 18:23:53.7710166 count=156 decoding take microseconds = 752
Debug 18:23:53.7770169 count=45 decoding take microseconds = 270
Debug 18:23:54.7350717 count=108 decoding take microseconds = 578
Debug 18:23:54.7430722 count=52 decoding take microseconds = 286
Debug 18:23:54.7540728 count=138 decoding take microseconds = 567
Debug 18:23:54.7760741 count=160 decoding take microseconds = 753
Debug 18:23:54.8030756 count=53 decoding take microseconds = 292
Debug 18:23:55.7411293 count=110 decoding take microseconds = 629
Debug 18:23:55.7481297 count=48 decoding take microseconds = 294
Debug 18:23:55.7591303 count=84 decoding take microseconds = 386
Debug 18:23:55.7701309 count=90 decoding take microseconds = 484
Debug 18:23:55.7801315 count=120 decoding take microseconds = 527
Debug 18:23:55.8101332 count=53 decoding take microseconds = 290
Debug 18:23:56.7341861 count=121 decoding take microseconds = 667
Debug 18:23:56.7421865 count=53 decoding take microseconds = 293
Debug 18:23:56.7531872 count=127 decoding take microseconds = 586
Debug 18:23:56.7621877 count=58 decoding take microseconds = 306
Debug 18:23:56.7751884 count=138 decoding take microseconds = 649
Debug 18:23:56.8021900 count=53 decoding take microseconds = 288
Debug 18:23:57.7392436 count=139 decoding take microseconds = 699
Debug 18:23:57.7502442 count=121 decoding take microseconds = 548
Debug 18:23:57.7582446 count=61 decoding take microseconds = 301
Debug 18:23:57.7692453 count=98 decoding take microseconds = 500
Debug 18:23:57.7792458 count=94 decoding take microseconds = 460
Debug 18:23:57.8092476 count=41 decoding take microseconds = 274

Xeon E3-1220, base do Windows Server 2008 R2:

Debug 18:28:57.5087967 count=117 decoding take microseconds = 255
Debug 18:28:57.5087967 count=85 decoding take microseconds = 187
Debug 18:28:57.5087967 count=55 decoding take microseconds = 155
Debug 18:28:57.5243967 count=86 decoding take microseconds = 189
Debug 18:28:57.5243967 count=53 decoding take microseconds = 139
Debug 18:28:57.5243967 count=52 decoding take microseconds = 153
Debug 18:28:57.5243967 count=55 decoding take microseconds = 146
Debug 18:28:57.5243967 count=103 decoding take microseconds = 239
Debug 18:28:57.5243967 count=83 decoding take microseconds = 182
Debug 18:28:57.5243967 count=85 decoding take microseconds = 180
Debug 18:28:57.5243967 count=80 decoding take microseconds = 202
Debug 18:28:57.5243967 count=58 decoding take microseconds = 135
Debug 18:28:57.5243967 count=55 decoding take microseconds = 140
Debug 18:28:57.5243967 count=81 decoding take microseconds = 183
Debug 18:28:57.5243967 count=74 decoding take microseconds = 172
Debug 18:28:57.5243967 count=80 decoding take microseconds = 174
Debug 18:28:57.5243967 count=88 decoding take microseconds = 175
Debug 18:28:57.5243967 count=55 decoding take microseconds = 131
Debug 18:28:57.5243967 count=80 decoding take microseconds = 182
Debug 18:28:57.5243967 count=80 decoding take microseconds = 183
Debug 18:28:57.5243967 count=101 decoding take microseconds = 231
Debug 18:28:57.5243967 count=58 decoding take microseconds = 134
Debug 18:28:57.5243967 count=57 decoding take microseconds = 126
Debug 18:28:57.5243967 count=57 decoding take microseconds = 134
Debug 18:28:57.5399967 count=115 decoding take microseconds = 234
Debug 18:28:57.5399967 count=106 decoding take microseconds = 225
Debug 18:28:57.5399967 count=108 decoding take microseconds = 241
Debug 18:28:57.5399967 count=84 decoding take microseconds = 177
Debug 18:28:57.5399967 count=54 decoding take microseconds = 141
Debug 18:28:57.5399967 count=84 decoding take microseconds = 186
Debug 18:28:57.5399967 count=82 decoding take microseconds = 184
Debug 18:28:57.5399967 count=82 decoding take microseconds = 179
Debug 18:28:57.5399967 count=56 decoding take microseconds = 133
Debug 18:28:57.5399967 count=57 decoding take microseconds = 127
Debug 18:28:57.5399967 count=82 decoding take microseconds = 185
Debug 18:28:57.5399967 count=76 decoding take microseconds = 178
Debug 18:28:57.5399967 count=82 decoding take microseconds = 184
Debug 18:28:57.5399967 count=54 decoding take microseconds = 139
Debug 18:28:57.5399967 count=54 decoding take microseconds = 137
Debug 18:28:57.5399967 count=81 decoding take microseconds = 184
Debug 18:28:57.5399967 count=136 decoding take microseconds = 275
Debug 18:28:57.5399967 count=55 decoding take microseconds = 138
Debug 18:28:57.5555968 count=52 decoding take microseconds = 140
Debug 18:28:57.5555968 count=53 decoding take microseconds = 136
Debug 18:28:57.5555968 count=54 decoding take microseconds = 139
Debug 18:28:57.5555968 count=55 decoding take microseconds = 138
Debug 18:28:57.5555968 count=57 decoding take microseconds = 134
Debug 18:28:57.5555968 count=53 decoding take microseconds = 136
Debug 18:28:57.5555968 count=80 decoding take microseconds = 174
Debug 18:28:57.5555968 count=74 decoding take microseconds = 175
Debug 18:28:57.5555968 count=57 decoding take microseconds = 133
Debug 18:28:57.5555968 count=57 decoding take microseconds = 149
Debug 18:28:57.5555968 count=100 decoding take microseconds = 262
Debug 18:28:57.5555968 count=56 decoding take microseconds = 156
Debug 18:28:57.5555968 count=55 decoding take microseconds = 165

Deste teste, vejo que a E3-1220 é duas vezes mais rápida que a i7-860.

Isso é possível? Porque nas classificações dos processadores esses processadores são praticamente os mesmos.

É possível que isso seja por causa do cache ou algo assim? E se sim qual processador eu melhor comprar para decodificar mensagens mais duas vezes mais rápido?

Eu comparei CPUs usando a ferramenta de cálculo Pi, resultados:

Pi 16k
Xeon 00.234 sec
i7-860 00.171s

Pi 512k digits
Xeon 5.31 sec
i7-860(no HT) 5.987 sec.
i7-860(HT)    5.982 sec

Pi 4M digits
Xeon          0.56 min
i7-860(no HT) 1.11 min
i7-860(HT)    1.05 min

Então Xeon é na verdade um pouco mais rápido, mas definitivamente não é duas vezes mais rápido

Desligar o HT no i7-860 não altera a imagem.

i7-860, Windows 7, sem HT:

Debug 10:09:30.7436690 count=58 decoding take microseconds = 351
Debug 10:09:34.9269083 count=47 decoding take microseconds = 347
Debug 10:09:34.9959122 count=50 decoding take microseconds = 309
Debug 10:09:35.0359145 count=45 decoding take microseconds = 297
Debug 10:09:35.1469209 count=57 decoding take microseconds = 344
Debug 10:09:35.1979238 count=54 decoding take microseconds = 460
Debug 10:09:35.2179249 count=61 decoding take microseconds = 372
Debug 10:09:35.3009297 count=51 decoding take microseconds = 275
Debug 10:09:35.3479324 count=45 decoding take microseconds = 305
Debug 10:09:35.3779341 count=58 decoding take microseconds = 311
Debug 10:09:35.3879346 count=50 decoding take microseconds = 286
Debug 10:09:35.4379375 count=48 decoding take microseconds = 290
Debug 10:09:35.4789398 count=48 decoding take microseconds = 277
Debug 10:09:35.5089416 count=49 decoding take microseconds = 286
Debug 10:09:35.5589444 count=74 decoding take microseconds = 382
Debug 10:09:35.5679449 count=47 decoding take microseconds = 298
Debug 10:09:35.7389547 count=50 decoding take microseconds = 304

Comparação de processadores: link

O Xeon tem 50% mais Core Ratio, 100% mais barramento do sistema, AVX, memória ECC, Turbo Boost 2.0, AES, comutação baseada em demanda Intel®, tecnologias de monitoramento térmico, acesso rápido à memória Intel®, Intel® Flex Memory Access

O i7-860 possui tecnologia HT e Enhanced Intel SpeedStep®

Provavelmente devido a muitas tecnologias extras, o Xeon é 2 vezes mais rápido ...

    
por javapowered 28.03.2012 / 16:33

3 respostas

2

Duas coisas que você está perdendo completamente.

O número 1 é uma resposta direta à sua pergunta. A geração Nehalem, também conhecida como i7 1.0, foi um enorme passo em frente do Core 2 Duo, mas depois da Sandy Bridge, a Intel começou a lutar para encontrar melhorias de desempenho e estabilizar. Seu Xeon é cerca de 20% mais rápido para clock na versão i7 da mesma geração, e em cargas de trabalho L2 otimizadas como essa você pode aproximar mais de 40% porque tem um L3 maior que a versão i7. Se este é o processo principal em execução naquele sistema no momento (como acontece com os leões compartilham de recursos) ele fica ainda melhor devido a menos outras coisas que precisam de alguma memória na CPU.

Número 2 e provavelmente o maior fator aqui: tamanho do cache.

A Intel está ciente de que somente as cargas de trabalho menores que o cache L2 estão realmente funcionando na velocidade real do processador, e tudo o mais está funcionando na velocidade que a CPU leva para trocar bits dentro e fora do cache L2. Coisa positiva, de certo modo, porque disciplina os programadores, de modo que eles vêem muito mais benefícios na criação de códigos menores e mais eficientes, mas também suspeito de uma muleta deliberada para a classe de consumidores; como o outro método principal de diferenciar o desempenho do processamento de números do Xeon para o i7 (outro porque os núcleos contam e o AVX são os principais empates). Todas as outras facetas de desempenho que os Xeons têm sobre os i7s estão relacionadas à largura de banda ... dependentes de outras empresas que aprimoram sua tecnologia (para usar essa nova largura de banda) para justificar seu valor em cargas de trabalho gerais (não-AVX / 2).

É por isso que seu Xeon (e a maioria dos Xeons) tem um cache L2 de 1MB muito maior e seu i7 tem um L2 de 256KB (provavelmente uma velocidade menor devido à idade) e eu diria - porque esse processo parece ser um conjunto de tarefas detalhado e facilmente encadeado provavelmente escrito como uma função de loop que se encaixa em uma pequena quantidade de memória - ele será muito propenso a benefícios de velocidade de cache L2 e trocaria menos no Xeon, melhorando muito o desempenho. É claro que por motivos de marketing a estatística do cache L2 foi removida da Arca da Intel e substituída pela estatística 'SmartCache' que é basicamente seu cache L3, também conhecido como cache usado para trocar dados entre núcleos e muito mais lento e menos relevante para o desempenho. p>     
por 07.09.2017 / 15:07
3

Não há dois processadores de diferentes gerações / fabricantes com o mesmo desempenho, independentemente do número de núcleos e da velocidade do clock. O E3-1220 é um processador de 2011, enquanto o i7-860 é um processador de 2009, com uma arquitetura mais antiga.

Mesmo em benchmarks sintéticos, a E3-1220 ( link ) supera o i7-860 ( link )

Se você estiver disposto a gastar alguns dólares extra para obter a E3-1230 ( link ) você também obterá um hyperthreading que oferecerá um considerável aumento de desempenho em relação ao E3-1220 que não possui HT.

    
por 29.03.2012 / 10:15
0

Você executou algum outro utilitário de benchmarking de desempenho? Seria interessante obter uma visão geral do desempenho de ambos os sistemas. Talvez haja uma diferença com algum outro hardware ou software.

Os dois computadores estão executando um sistema operacional de 64 bits?

    
por 28.03.2012 / 18:05