pixbillye zei:
mss toch ff toekomstgericht denken aangezien er meer en meer quad ondersteunde games op de markt gaan komen kun je voor die quad gaan.
Games worden niet geschreven voor een single-, dual- of quad-core. Om op meerdere cores tegelijk te draaien moet een game wel multi-threaded zijn.
Een programmeur kan een programma/game onderverdelen in kleinere stukken die naast elkaar (tegelijk) uitgevoerd kunnen worden: threads. Bij het uitvoeren, zal het operating system bepalen hoe het programma het best uitgevoerd kan worden op de beschikbare hardware. Afzonderlijke threads kunnen dan naar afzonderlijke cores gestuurd worden.
Sounds easy, en als je je task manager bekijkt, dan lijkt dat ook zo te zijn: als je de "Thread count" kolom laat zien in de "Processes" tab, dan hebben vrijwel alle processen meer dan 1 thread!
Jammer genoeg is het bestaan van meerdere threads niet voldoende om veel performance-winst te krijgen bij meer cores:
- Enkel wanneer de verschillende threads onafhaneklijk van elkaar zijn, kunnen ze echt in parallel worden uitgevoerd. Als 1 thread moet wachten op het resultaat van een ander, dan zal je die tweede niet samen met de eerste kunnen uitvoeren en win je geen performance met een extra core.
Bij het server-toepassingen is dat niet zo'n probleem (verschillende users van een webserver werken grotendeels onafhankelijk van elkaar), maar bij desktop-toepassingen is dat moeilijk. Als je een game speelt, dan kan je niet zomaar een thread maken per vijand in de game. De vijanden interageren namelijk met elkaar en met hetgeen je zelf ziet (= afhankelijkheden)... Wat meestal gebeurt is dat bijzaken in afzonderlijke threads worden gestopt. Denk hierbij bijvoorbeeld aan het menu-systeem van de game.
- Enkel wanneer de verschillende threads allen ongeveer even zwaar zijn, zal je echt performance winnen.
Bij server-toepassingen (een webserver bijvoorbeeld) is dat vrij makkelijk (1 thread per user en iedere user kan hetzelfde opvragen => alle threads zijn dan ongeveer even zwaar). Bij desktop-toepassingen en games gaat dat niet zo makkelijk. Het menu-systeem uit het vorig punt is (hopelijk) niet zo zwaar als de game zelf. Het zal dus niet erg veel performance toevoegen aan de game.
- Hoe meer cores er in gebruik zijn, hoe zwaarder andere delen van de computer belast zullen worden. Dat gaat op tot het punt waarop een andere component verzadigd raakt en ervoor zorgt dat de cores elkaar voor de voeten lopen.
Vergelijk het met een put graven: met 2 man gaat het ongeveer 2x zo snel als alleen. Met 10 man gaat dat niet noodzakelijk 10x zo snel. Met 100 man wordt het vermoedelijk onmogelijk nog veel te graven...
In een computer zijn schaarse resources de FSB, de geheugenbandbreedte, de IO (harde schijf, netwerk, ...), ...
Dit alles om aan te geven waarom je na al die jaren nog steeds niet zo veel games vindt die goed genieten van extra cores. Dat betekent zeker niet dat er geen werk in gestopt wordt! De kost is vaak echter heel hoog en het is makkelijker om te rekenen op een verhoging van de single-threaded performance (of op het overnemen van taken door de GPU bijvoorbeeld) dan werk te stoppen in de optimalisering van de code.
Wat wel steeds vaker gebeurt is dat er bedrijven zich specialiseren in het ontwikkelen van een game-engine om die dan in licentie te geven aan verschillende game-bouwers. De ontwikkelkosten van de engine worden zo verspreid over meer games wat het mogelijk maakt om meer uit te geven aan het optimaliseren ervan.
[OcMw]Psycho;11117115 zei:
Ik zou voor de Duo gaan, hogere kloksnelheid en meer level 2 cache blijkbaar. Die quad heeft voor de moment nog niet zoveel voordelen, behalve als je veel films zijn decoderen enz, dan kan dit een voordeel blijken.
Voor het
decoderen van films heb je geen nood aan een quad-core boven een dual-core. De zwaarste filmcodering is H.264 (voor HD films) en de codec die het best multi-threaded geschreven is, is
CoreAVC en het is in staat om 1080p films te decoderen op een degelijke dual-core: op een quad-core ga je (in het beste geval) een iets lager CPU belasting hebben per core, maar daar zal je niets van merken...
Voor het
encoderen van films helpen meer cores wel (voor zover je uiteraard een degelijke codec gebruikt) omdat dat een proces is dat vrij goed multi-threaded geschreven kan worden.