Renderingstider/microstuttering

Introduktion - läs detta först!

Då intresset för problemet "microstuttering" är stort har redaktionen beslutat att ha med ett (mycket) komprimerat avsnitt om ämnet till recensionen av Geforce GTX 690, trots att vi ännu inte känner oss helt torra om fötterna med resultaten.

Observera alltså att det handlar om en ännu ej helt finslipad metod med snabbt ihopkastad redovisning och presentation, som vi gärna tar emot feedback runt. För den som vill experimentera på egen hand finns även all rådata tillgänglig.

Microstuttering - ojämnheter i bildfrekvensen

Flera sammankopplade grafikkort i SLI eller Crossfire är en populär lösning för att nå högre bildfrekvens. Metoderna innebär dock vissa nackdelar, varav speciellt så kallad "microstuttering" hamnat i fokus rejält det senaste året.

Fenomenet beror i korthet på att bilduppdateringar kommer i stötar, då processorn är snabbare på att leverera information än de sammankopplade grafikkorten. Resultatet är att bildrutorna påbörjas i stort sett samtidigt för att färdigställas med mycket litet mellanrum, vilket ger en paus till nästa omgång.

Exempel på renderingstider (i millisekunder)

GTX680

GTX 680 (SLI)

HD 7970

HD 7970 (CF)

1

13,68

7,00

12,35

9,66

2

11,23

6,40

12,61

3,81

3

12,96

7,14

12,72

11,00

4

13,08

5,29

13,16

4,04

5

12,44

7,17

12,47

10,82

6

12,81

6,62

13,13

3,95

7

12,67

5,60

12,67

11,46

8

12,99

6,89

14,11

3,50

9

12,76

7,27

11,89

11,53

10

12,88

6,85

11,99

4,16

En snabb titt på renderingstider ("frametimes") inhämtade under SweClockers testsekvens för Battlefield 3 ger en bra fingervisning om var problemet ligger. I optimala fall är skillnaden i tid mellan en bildruta och nästa minimal, något som ger en jämn upplevelse och väl motsvarar ett snittvärde för bilder per sekund.

För speciellt Radeon HD 7970 i Crossfire syns dock helt andra resultat. Precis som teorin förespråkar levereras bildrutorna i par med väldigt kort tid mellan, för att sedan ha en längre paus till nästa klump. Resultatet är en mer ojämn upplevelse, som trots höga FPS-värden upplevs ryckig och hackig.

amd.png

Ett diagram med utsnitt av renderingstiderna belyser problemet ännu tydligare. Där ett ensamt AMD Radeon HD 7970 har en relativt jämn linje med förhållandevis små variationer visar de Crossfire-kopplade korten snarast en matta av variationer.

nvidia.png

För Nvidia Geforce GTX 680 är det dock annorlunda. Ett ensamt kort ger visserligen jämnare resultat än två sammankopplade med SLI, men resultatet är långt ifrån lika illa som för Radeon HD 7970.

SweClockers metod

Även om ovanstående metoder på ett effektivt sätt visar problemet finns det vissa nackdelar. Den första handlar om problem att jämföra flera grafikkort, så diagrammen efter endast ett fåtal modeller blir kladdiga och svåröverskådliga.

Alternativet är att försöka få ned variationerna till ett enda värde, vilket på ett bra sätt representerar hur jämn eller ojämn bildfrekvensen är. Det värdet kan sedan jämföras i vanliga stapeldiagram, och därmed ge en uppfattning om hur konfigurationerna står sig mot varandra.

För att komma dit finns olika metoder, och redaktionen har experimenterat med allt från percentil till standardavvikelse och derivator. De flesta varianter ger dock liknande förhållanden mellan konfigurationerna, om än med olika värden. Det preliminära valet föll därför på den av alternativen matematiskt enklaste uträkningen.

I korthet tittar vi på skillnaden i renderingstid mellan två olika bildrutor, vilken i optimala fall ska vara så liten som möjligt. Det värdet är dock inte riktigt bra, då skillnadens påverkan är beroende av de ursprungliga värdena. En variation på 5 millisekunder är mycket mer allvarlig om ursprungsvärdena är 20 och 25 än om de är 120 och 125, till exempel.

Den uppmätta variationen ställs därför mot ett lokalt medelvärde, bestående av renderingstiderna 9 bildrutor runt den aktuella. Med hjälp av det kan vi få ut hur stor skillnaden är i procent, jämfört med vad bildfrekvensen "borde" ligga på enligt en tänkt "FPS-mätare". Dessa procentvärden summeras sedan för hela testsekvensen, för att ge ett medelvärde för avvikelsen.

Sammanfattningsvis representerar alltså den slutgiltiga siffran hur många procent bildfrekvensen svänger från medelvärdet under olika delar av testsekvensen. En låg siffra innebär stabil bildfrekvens utan "microstuttering", en hög siffra innebär instabila värden som snabbt svänger fram och tillbaka.

Resultatet

Med värdena i hand kan vi snabbt notera intressanta resultat. Ensamma grafikkort ger i stort mycket bra resultat med värden långt under 10 procent, vilket i princip innebär omärkbara ojämnheter. På riktigt bra nivå hamnar även Nvidia Geforce GTX 680 SLI och GTX 690, trots dubbla grafikprocessorer.

Värre ser det ut för AMD Crossfire, och i viss mån även Nvidia SLI med Geforce GTX 580. Här handlar det bitvis om enorma variationer, med svängningar hela vägen över 120 procent för jumboplatstagaren Radeon HD 6990. Det innebär klart märkbara problem, och trots en visad bildfrekvens uppåt 80 FPS upplevs sekvensen som hackig.