eh que nos sistemas SMP a memoria eh compartilhada!
para entender melhor como eh a dinamica de processadores vs memoria, veja o resultado do meu teste com uma thread soh apenas... no caso da memoria, ele chega a 2.5 GB/s:
- Código: Selecionar todos
marcelo@marcelo-samsoniuks-macbook:~$ ./mem_super 1
running 1
memcpy8 5.000 GB R/W in 3558827 us: total bandwidth of 1.405 GB/s
memcpy16 5.000 GB R/W in 2023016 us: total bandwidth of 2.472 GB/s
memcpy32 5.000 GB R/W in 1998478 us: total bandwidth of 2.502 GB/s
memcpy64 5.000 GB R/W in 1968712 us: total bandwidth of 2.540 GB/s
f-vector 600.000 iMACs in 2678413 us (0.224 GMAC/s and 1.344 GB/s)
i-vector 600.000 fMACs in 2487810 us (0.241 GMAC/s and 1.447 GB/s)
mas no processamento bruto ali soh consome 1.4GB/s pq o core2 duo nao eh eficiente o bastante para passar de 241 MMAC/s. no fundo, um unico core nao aproveita totalmente o bandwidth da memoria!

esse processador deveria atingir picos de 4000 MMAC/s rodando a 2.1GHz, porem o resultado de MMAC/s eh baixo assim pq estou simulando uma das operacoes necessarias para calculo 3D em uma superficie gigantesca, de modo que o processador nao consegue guardar na cache de dados e portanto a performance cai lah embaixo. digamos que 4000 MMAC/s eh a performance PMPO e 241 MMAC/s eh a performance RMS!

jah com duas threads, percebe-se claramente uma divisao da ordem de 1.25GB/s para cada core no memcpy, o que mostra que os cores em SMP dividem o bandwidth de 2.5GB/s disponivel para a memoria:
- Código: Selecionar todos
marcelo@marcelo-samsoniuks-macbook:~$ ./mem_super 2
running 1
running 2
memcpy8 2.500 GB R/W in 2327548 us: total bandwidth of 1.074 GB/s
memcpy8 2.500 GB R/W in 2347979 us: total bandwidth of 1.065 GB/s
memcpy16 2.500 GB R/W in 1944252 us: total bandwidth of 1.286 GB/s
memcpy16 2.500 GB R/W in 1998192 us: total bandwidth of 1.251 GB/s
memcpy32 2.500 GB R/W in 1983569 us: total bandwidth of 1.260 GB/s
memcpy32 2.500 GB R/W in 1980182 us: total bandwidth of 1.263 GB/s
memcpy64 2.500 GB R/W in 1936604 us: total bandwidth of 1.291 GB/s
memcpy64 2.500 GB R/W in 2012426 us: total bandwidth of 1.242 GB/s
f-vector 300.000 iMACs in 1518103 us (0.198 GMAC/s and 1.186 GB/s)
f-vector 300.000 iMACs in 1515364 us (0.198 GMAC/s and 1.188 GB/s)
i-vector 300.000 fMACs in 1479384 us (0.203 GMAC/s and 1.217 GB/s)
i-vector 300.000 fMACs in 1484791 us (0.202 GMAC/s and 1.212 GB/s)
existe uma pequena reducao no processamento bruto, mas agora temos praticamente 1.2GB/s por core, portanto temos o aproveitamento total do bandwidth disponivel e atingimos mais de 400MMAC/s somando o procesamento dos dois cores, quase dobrando o desempenho de um core apenas. aqui a nossa performance PMPO deveria ser de 8000 MMAC/s, mas conseguimos uma performance RMS de apenas 400 MMAC/s, nitidamente nivelado pelo bandwidth da memoria.
disso vc conclui tb que adicionar mais cores nao resultaria em nenhuma melhora, pq daih estariamos dividindo 2.5GB/s em 4 e com isso teriamos apenas 0.6 GB/s por core, o que nivelaria a performance em apenas 100 MMAC/s por core e totalizaria os mesmos 400 MMAC/s que se consegue com 2 cores.
bom, eu soh acho engracado o seguinte: em tese cada core consegue 4000 MMAC/s se rodar na cache e 400 MMAC/s se rodar puxando da memoria. soh que mesmo assim, rodando com memoria livre, um core nao passa de 240 MMAC/s.
suspeito e estranho nao?
tem outras coisas suspeitas e estranhas: em single thread, o powerpc P2020 de 1GHz e memoria mais lenta chegou a 300 MMAC/s simplesmente pq ocupou o bandwidth total da memoria da ordem de 1.8GB/s. no teste com duas threads, alguma coisa absolutamente fora da realidade aconteceu: o powerpc somou 520 MMAC/s e totalizou 3GB/s de bandwidth. eu dei uma analisada no codigo e nao consegui entender: nao estou usando threads. as areas de memoria nao sao compartilhadas e estamos falando de areas gigantescas, nao teria como ele cachear isso.
a magica ae eh que estes 3GB/s sao muito maiores que o pico conseguido pelo intel, que foi de 2.5GB/s. detalhe sinistro: o intel possui DDR2 que roda a 30% mais rapido que o do powerpc.
e cade os ARMs "parrudos" do forum para rodar o benchmark?
enigmabox escreveu:Bayoneta, que a ver do PS3 eh muito pobre frente a do 360.
Super Street Fighter 4: Todos os golpes no PS3 tem 2 frames de atraso, o que eh nojento para um jogo de luta.
O PS3 tem mais potencia bruta que o 360, mas nem a Konami em peso conseguiu bons resultados.
Será que o monte de nucleos do Cell do PS3 não estão" batendo cabeças" como o X6 da AMD? Será que para sistemas não profissionais, um monte de nucleos na CPU atrapalha mais e tem menos eficiencia?
