Dual systemen zijn alleen nuttig in situaties waarbij veel threads tegelijk worden gestart en je die dus over 2 CPU's kunt verdelen ipv ze allemaal op 1 CPU te draaien. Denk hierbij bv aan een database server die bv 20 connecties heeft, en zo'n 20 queries moet draaien. Hij start 20 threads op met per thread 1 query. Een dual bak zal normaliter per processor dan 10 van die threads draaien. Je bent in theorie dan sneller klaar.
Hoe werken spelletjes? Niet met threads

. 9 van de 10 spelletjes hebben een zg. 'gameloop'. In die loop zit je spel zolang het draait en doet het alles: game logic, input/output handling, sound logic en video rendering. Aangezien spelletjes video-driven zijn, dwz je hebt een vrij constante 'feed' van frames nodig (frames per second) en alles in je spelletje is daaraan ondergeschikt, worden spelletjes in hun gameloop zo getweaked dat ze op een 'normaal' systeem vlot draaien. Dit wordt veelal vrij banaal gedaan: men test hoelang op een 'normaal' systeem een (1) gameloop doorloop duurt. Dit is bv 50ms. Dan wordt er bv 10 ms ingeruimd voor de gamelogic, 20ms voor het renderen van de beelden etc. Dit alles gebeurt nogmaals in de gameloop, en dit is 1 thread.
Waarom gebruiken ze niet een soort 'kernel' in spelletjes die verschillende 'threads' scheduled, een thread voor de rendering van beelden, een thread voor de sound, een thread voor de i/o, een thread voor gamelogic etc?. Als men dat zou doen, zou een dual proc in theorie sneller kunnen zijn, immers, je kunt een paar van die threads op een andere processor draaien. Dit werkt echter niet goed om 2 redenen:
1) Je scheduler kan nog zo eerlijk zijn, je ontkomt niet aan zg. thread-starvation, op sommige momenten. Dit houdt in dat 1 taak zoveel 'tijd' vreet dat het de andere threads de processor ontneemt. Dit is in normaal OS gebruik niet zo erg, maar in spelletjes is dit uit den boze: denk je eens in dat je beeld voor 1 seconde volledig stopt of terugvalt naar 2 fps omdat de gamelogic eens even flink wat AI gaat doorrekenen...

. Daarom gebruikt men afgeknepen 'timeslices' voor elk stukje logica van een game, zodat men zeker is dat ieder stukje aan bod komt in 1 frame. Sommige games doen het echter wel hoor, het is echter wel lastig het echt goed te krijgen. Mensen die jarenlang demos voor de PC en amiga hebben gemaakt, weten dat video timing essentieel is voor een goede beleving van wat getoond wordt, of dat nu spellen of grafische animaties zijn.
2) Bij multi-threading zijn veelal de threads onafhankelijk van elkaar, of althans niet zozeer afhankelijk van elkaar dat de een de output van de ander nodig heeft. In mn voorbeeld hierboven over de database met 20 queries zie je dat elke querie in principe onafhankelijk is van een andere query, hooguit via de cache, en dus de threads die die queries uitvoeren dat ook zijn. In een spel als Quake3arena is dat niet het geval. Carmack heeft in een .plan hier uitvoerig over gesproken en hij heeft verschillende dingen geprobeerd: threads in de gameloop en het opdelen van de gameloop in verschillende taken die dedicated op verschillende processoren draaiden. Het laaste was nog het 'snelst', maar nauwelijks interessant. Dit komt omdat in een game de verschillende onderdelen allemaal afhankelijk van elkaar zijn: de videorenderer en de soundlogic wachten op de gamelogic en de gamelogic wacht op de I/O (wat doet de player?). In Q3A heb je wel zoiets als de bsp-culler, die polygoonlijsten samenstelt die gerenderd moeten worden, maar als de renderer niet op dezelfde cpu draait, moeten die complete renderlijsten in memory worden gezet, de thread die die dingen gaat renderen moet alles weer inlezen vanuit memory, alle cache is verloren, en wat je in feite hebt is single CPU. Waar je een beetje snelheid wint zijn op die plekken waar dingen echt parallel kunnen worden uitgevoerd: softwaremixing van soundbuffers tijdens het renderen van videobeelden bijvoorbeeld. Of het bepalen van NPC gedrag per NPC. Maar heb geen illusies dat het met 2 processoren ineens veel sneller gaat.
Ik snap derhalve dan ook echt niet waarom men in vredesnaam met spelletjes die dual bak heeft getest. Geeft imho aan dat de reviewer geen moer begrijpt van 1) gameprogramming, 2) dual systemen en 3) multithreading.
Ik hoop dat het een beetje duidelijk is nu.