Hoe hebben ze dat vroeger dan gedaan met co-processors en tegenwoordig met dual-procs en dual-cores? Ging dat niet eerst ook door een load balancer of één of andere chip die bepaalt wat waar naartoe gaat.
Co-processors zijn simpel... Er zijn gewoon een aantal instructies die automatisch naar de co-processor worden doorgestuurd, wanneer deze aanwezig is. Zo niet, dan krijg je een exception (en kun je via een exception handler de co-processor emuleren). De splitsing is dus van tevoren al gemaakt, in de instructies zelf.
Bij dual-proc/core is er weinig verschil met een single-core... Multitasking gaat nog steeds met timeslices, dus om de zoveel tijd wordt er van context geswitcht door de thread scheduler van het OS. Load balancing ed. is eenvoudig in te bouwen in de scheduler.
k neem aan dat die pixels eerst door die AMR chip heen gaan ofzo. Waarbij ze een soort tag krijgen waarop staat dat die pixel voor een bepaalde kaart is. Of niet eens een tag, deze AMR doet gewoon aan load balancing.
Je kunt nooit op zo'n laag niveau de workload proberen te verdelen... Stel je voor dat je bij een dualcore-systeem voor iedere instructie gaat kijken op welke core deze het best uitgevoerd zou kunnen worden... Dat is ongeveer hetzelfde idee. Dan ben je veel meer tijd kwijt met het verdelen van de workload, dan met het daadwerkelijk uitvoeren ervan.
Dat verdelen moet op een zo hoog mogelijk niveau. In het geval van AMR/SLI/Volari dual wordt het door de driver gedaan. De driver deelt ofwel het scherm op in meerdere delen, en laat iedere kaart een deel renderen, of hij laat de kaarten om en om een frame renderen... dus de even frames gaan naar kaart A, en de oneven frames naar kaart B.
Wat Jan Groothuijse zegt, klopt dus. De kaarten kunnen alleen samenwerken als ze dezelfde features gebruiken.
De applicatie weet namelijk niet dat er twee kaarten gebruikt worden, dus gaat hij ervanuit dat het 1 kaart is, en dus 1 set features (de driver voegt de kaarten samen tot 1 virtuele kaart, voor de applicaties).
Als twee verschillende kaarten al samen kunnen werken, dan zou dus de minste van de twee bepalen welke features er gebruikt kunnen worden.
Het lijkt me persoonlijk niet zo waarschijnlijk dat dat gaat gebeuren... verschillende cores berekenen dingen meestal ook net even anders, verschillen in precisie en dergelijke... Dus dan zou je misschien kleurverschillen zien, of polys die niet meer netjes op elkaar aansluiten en dergelijke.