Co fyzicky znamena skore v CPUmark ( je stupnice linearni? )
Jsem fyzik, a mam rad kdyz si pod jednokama muzu predstavit nejakou realnou velicinu ktera se da scitat, nasobit a delit. Chapu ze ty cisla zalezi na vsem moznem ( konkretnim algoritmu, konfiguraci zbytku pocitace ). Ale co bych od tech cisel chtel je, aby skutecne odpovidaly tomu kolik casu trva provedeni nejakeho programu.
Tzn. jestli ma muj stary Core2 Quad Q9450 skore="3818", a nejaky AMD FX-8350 Eight-Core score="9223" znamena to skutecne ze ty konkretni programy ktere byly v testu pritomne vykonal 2.41x rychleji? Nebo ne?
Kdyz se divam na skore ktere se udavaji v CPUmark mam podezdreni ze nic takoveho neznamenaji.
Asi mi ted budete vsichni nadavat ze tomu nerozumim, ale pripada mi ze vykon procesoru by se dal definovat celkem jednoduse
1) Kazde jadro moderniho procesoru (pocinaje pentiem 3 ) v idealnim pripade dokaze udelat 4 nezavisle atomicke operace simultalne v kazdem hodinovym cyklu. ( kdyz pominu nejake vektorizovane SSE, nebo operace slozene ktere pak trvaji nekolik cyklu ... to se da ale taky zapocitat kdyz udelam test specialne na FPU ). Takze teoreticky vykon procesoru by se dal vyjadrit jako GOPS_ideal = 4 * clock frequency[GHz] * pocet_jader
2) V realnych programech ale procesor nefunguje 100% effektivne z mnoha duvodu ( napr. protoze instrukce na sobe zavisi, protoze podminene vetvani a skoky vyzaduji vyprazdnit pipeline, protoze procesor musi cekat na nacteni dat z RAM kdyz nejsou v cache ). Nebo jeste jednoduseji - nekdy algoritmus neni schopen effektivne vyuzit vyci procesoru.
=> realne bude procesor podavat vykon GOPS_real < GOPS_ideal ... kde by se dal potom pro kazdy algoritmus/benchmark/konfiguraci pameti a zbernice a zakladni desky ... definovat nejaky koeficent EFFICIENCY = GOPS_real/GOPS_ideal
Naivne bych si predstavoval ze bechnmarky se snazi vystihnout neco jako GOPS_real pro nejakou sadu typickych algoritmu. Je jasne ze EFFICIENCY se bude procesor od procesoru menit ( novejsi procesory s vetsi chache, a s lepsimi predikcemi skoku a podobne budou mit vyzsi efektivitu ) ... jenomze typicky (pro jednoduche algoritmy) funguje procesor s efektivitou > 50 % skoro vzdy. Novy procesor muze mit effektivity treba o 20% vyzsi nez stary. Pokud maji stejny pocet jader a priblizne stejne taktovani ( typicky ma dnes vsechno kolem 2.66GHz a 3.5 GHz je zase rozdil jenom 30% )
ale teda kdyz se divam na ty hausnumera tak mi pripada ze o tomhle vubec nic nerikaji ...
Tzn. jestli ma muj stary Core2 Quad Q9450 skore="3818", a nejaky AMD FX-8350 Eight-Core score="9223" znamena to skutecne ze ty konkretni programy ktere byly v testu pritomne vykonal 2.41x rychleji? Nebo ne?
Kdyz se divam na skore ktere se udavaji v CPUmark mam podezdreni ze nic takoveho neznamenaji.
Asi mi ted budete vsichni nadavat ze tomu nerozumim, ale pripada mi ze vykon procesoru by se dal definovat celkem jednoduse
1) Kazde jadro moderniho procesoru (pocinaje pentiem 3 ) v idealnim pripade dokaze udelat 4 nezavisle atomicke operace simultalne v kazdem hodinovym cyklu. ( kdyz pominu nejake vektorizovane SSE, nebo operace slozene ktere pak trvaji nekolik cyklu ... to se da ale taky zapocitat kdyz udelam test specialne na FPU ). Takze teoreticky vykon procesoru by se dal vyjadrit jako GOPS_ideal = 4 * clock frequency[GHz] * pocet_jader
2) V realnych programech ale procesor nefunguje 100% effektivne z mnoha duvodu ( napr. protoze instrukce na sobe zavisi, protoze podminene vetvani a skoky vyzaduji vyprazdnit pipeline, protoze procesor musi cekat na nacteni dat z RAM kdyz nejsou v cache ). Nebo jeste jednoduseji - nekdy algoritmus neni schopen effektivne vyuzit vyci procesoru.
=> realne bude procesor podavat vykon GOPS_real < GOPS_ideal ... kde by se dal potom pro kazdy algoritmus/benchmark/konfiguraci pameti a zbernice a zakladni desky ... definovat nejaky koeficent EFFICIENCY = GOPS_real/GOPS_ideal
Naivne bych si predstavoval ze bechnmarky se snazi vystihnout neco jako GOPS_real pro nejakou sadu typickych algoritmu. Je jasne ze EFFICIENCY se bude procesor od procesoru menit ( novejsi procesory s vetsi chache, a s lepsimi predikcemi skoku a podobne budou mit vyzsi efektivitu ) ... jenomze typicky (pro jednoduche algoritmy) funguje procesor s efektivitou > 50 % skoro vzdy. Novy procesor muze mit effektivity treba o 20% vyzsi nez stary. Pokud maji stejny pocet jader a priblizne stejne taktovani ( typicky ma dnes vsechno kolem 2.66GHz a 3.5 GHz je zase rozdil jenom 30% )
ale teda kdyz se divam na ty hausnumera tak mi pripada ze o tomhle vubec nic nerikaji ...
Ono by to linearni byt melo (to aspon byva snaha). A dokonce to te rovnici i docela odpovida - dvakrat tolik jader, o dost vyssi frekvence.. GFLOPS te rovnici mozna odpovidaly drive, ale uz od dob Athlonu XP pri porovnavani mezi ruznymi architekturami frekvence neodpovidala vykonu (mozna i drive). Samozrejme praxe je trochu jina a valna vetsina aplikaci neskaluje linearne s poctem jader, ale benchmarky jsou ta druha cast, ktera se o to snazi..