Proto se taky říká, že využití jednotek v dnešním CPU je v průměru asi 30%. A můžu to potvrdit, většina aplikací má IPC kolem 1, tedy na úrovni 486ky. Z aplikací, které mají IPC 3 (tj. maximum u mého CPU) znám jen BurnK7 a Prime95 (Burn má víc).
Auto-paralelizátor je vcelku na prd. Spouští thready pro loopy, což je moc krátké na nějaký speed-gain. Složitost něčeho takového je extrémní.
BTW, ten kompilátor měl obsahovat speculative-precomputation, což by výkonu mohlo pomoct extrémně. Výsledek? Obsahuje prdlajs. Přepínač tam je, ale evidentně to nefunguje.
To vysloveně závisí na typu vytížení. Mně by to určitě nepomohlo, mám hodně random access.
Jakou jinou alternativu mám, která splní následující požadavky:
- přijatelná spotřeba (včetně změny PStates)
- cache min. 1 MB, lépe 2+ MB s nízkou latencí
- 64bit
- stabilní platforma
Myslím, že tyhle požadavky nejsou tak extrémní. Bohužel jim vyhoví jen C2D. Všimni si, že ani netrvám na nějakém nárůstu výkonu, protože je mi jasné, že se žádný převratný s novým CPU nekoná. Když za novou platformu vypláznu 20 tisíc (tj. víc, než kolik jsem kdysi dal za tu současnou a to i po zohlednění inflace), kolik procent výkonu navíc dostanu? 20 %? C2D má nízkou frekvenci, v některých aplikacích mi poskytne stejný výkon jako moje XP-M. Jediné, z čeho získám hodně výkonu navíc, bude ta velká rychlá cache. Abych získal i něco na první pohled viditelného, budu muset taktovat.
Ano, to opravdu mám. Mám to totiž podepřeno testy. A jelikož se jedná o objektivní, nikoli subjektivní věc...
... což jinými slovy znamená, že to zas tak moc nepotřebovali. Spousta lidí tady tvrdí, jak si život bez DC už nedokážou představit a že v multitaskingu je to něco úžasného. Pak se tedy ptám - proč si to nekoupili už tehdy, když je to tak úžasné?
Bohužel se nebude zvyšovat výkon obecně. Ať se ti to líbí nebo ne, velká část dnešních aplikací nejde převést na multithreaded nebo by to stálo moc peněz nebo jsou omezeny jinými faktory (velikost RAM, rychlost RAM, rychlost disku). Multicore pomůže jen ve zlomku aplikací.
Např. tohle napsal vývojář Photoshopu k tomu, proč Photoshop stále nevyužívá multicore tak intenzivně:
"Photoshop has taken advantage of multiple processors since the very early days, but yes, memory bandwidth prevents us (and any memory bandwidth bound application) from taking full advantage of multiple processors / multiple cores except for limited cases (e.g., Radial Blur is still compute bound). Unfortunately, it's not something you or I can do much about. The performance topic would be a good one for after the break. - Scott"
Dodám, že já změřil nárůst výkonu jen +8 %. A víš co? On má pravdu. Když ve Photoshopu pracuješ s velkými obrázky (u malých tě čas většinou moc nepálí, protože to běhá rychle dost), tak na pozadí probíhá rapidní komunikace s RAMkou a cache hit rate je nízký. Přesně ten samý problém mám i u Civ III (hit rate je jen 40 %). U multitaskingu, antivirů a podobných věcí jsi zase omezen kapacitou RAM a rychlostí disku. Proč měl A64 ve hrách oproti AXP takový nárůst výkonu, přestože jádro CPU je prakticky stejné? Díky integrovanému paměťovému řadiči. Proč má nyní C2D ještě větší rychlost? Protože má velkou rychlou cache. Výkon dneska nestojí na paralelizaci, protože už i na instrukční úrovni je to u majority programů hodně slabé (IPC 1, někdy dokonce i menší), ale naopak na frekvenci a rychlosti komunikace s RAM.
Už se to tady řešilo a dospěli jsme k závěru, že udělat kolizní proces paralelně je dost obtížné.