De 32-core Threadripper 2290WX van AMD is de snelste consumentenprocessor ooit verkocht. Voor we verder gaan, moeten we opmerken dat we het daar volledig mee eens zijn. Maar dat gezegd hebbende zijn er beperkingen. De opvallendste is het gebrek aan consumentenapplicaties dat gebruik kan maken van die beschikbare cores.

De andere beperking zie je in onderstaande grafiek die laat zien hoe deze cpu is opgebouwd. In plaats van een enkele chip met alle CPU-cores erop, gebruikt AMD vier IC's die zijn verbonden via AMD's high-speed Infinity Fabric. Twee IC's hebben geen eigen geheugencontroller of PCIe, maar moeten communiceren met een aanliggende CPU-IC. Het is in feite alsof je twee appartementen hebt, maar via het tweede kun je alleen de gang bereiken via het eerste appartement.

Maar het belangrijkste is de beschikbare bandbreedte, wat aanvankelijk volgens AMD tussen die vier circuits 25 GBps bi-directional was, maar die documentatie is aangepast om aan te geven dat dit de totale bandbreedte is. Vergelijk dat met Threadripper 2950X, de 16 core-chip die 50 GBps heeft en twee verbindingen tussen twee circuits.

Veel mensen denken dat dit de grootste zwakke plek is van Threadripper 2290WX: een gebrek aan bandbreedte per core wreekt zich bij geheugenrijke taken als compressie en encoding. Nog erger voor de 2990WX is dat de bandbreedte moet worden gedeeld op een CPU met 14 cores meer dan Intels Core i9-7980XE.

Hieronder zie je de resultaten van een geheugenbandbreedtetest met Sisofts Sandra 2018 Titanium en zie je de beschikbare bandbreedte per core. Zoals je ziet daalt die per core van 5GB bij 8 en 16 core tot naar 2GB als je ze alle 32 aanspreekt.

Om dieper in te duiken op de prestaties gebruiken we de nieuwste versie van de gratis compressieapplicatie 7-Zip. Dit is in onze ervaring een uitstekende test voor zulke prestaties. Bij het uitpakken van Cinebench R15.08 en de duizenden bestanden met Windows 10 eigen utility duurt dit proces enkele minuten. Het kost minder tijd om 7-Zip te downloaden en vervolgens Cinebench uit te pakken dan het hele proces van Windows ingebouwde tool.

Met de GUI-versie draaien we twee tests: een voor compressie en eentje voor decompressie. Je kunt meer lezen over de testmethode op de website 7-cpu.com, maar het komt erop neer dat diverse componenten de resultaten beïnvloeden, niet in de minste plaats de RAM-latency, grootte en snelheid van Data Cache en TLB. Ook out-of-order uitvoer is van invloed.

Wat de decompressietest betreft zegt 7-cpu dat dit grotendeels afhankelijk is van integeroperaties van de CPU. Belangrijk daarvoor mislukkingen in branch prediction en latencies van 32-bit instructies. Decompressie heeft een groot aantal onvoorspelbare branches.

Verschillen en overeenkomsten

Voor deze test keken we naar zowel de Threadripper 2290WX van AMD als de Core i9-7980XE op 3 GHz om variabele waarden door de boost-methodes van beide CPU's uit te sluiten. We wilden dat de test minder afhankelijk was van de verschillen in kloksnelheid van de twee. Ze zijn ook allebei op DDR4/3200 gezet en beide draaiden quad-channel, tenzij anders vermeld.

Om eerlijk te zijn: het Threadripper-systeem had een klein voordeel in CAS-latency met CL14 en 1T, terwijl de Core i9 draaide met CL15 en 2T. Beide versies hadden een GTX 1080 Founders Edition-kaart en dezelfde drivers en versie van Windows 10 Enterprise Edition.

Verschillende tests

Omdat veel van de zorgen over Threadripper gaan over de bandbreedteprestaties per core, besloten we elke CPU van één thread tot het maximum te draaien. We wilden ook weten of de prestaties veranderden als we twee IC's uitschakelden, dus we testten met een enkele IC (8 cores, 16 threads), twee stuks (16 cores, 32 threads) en alle vier (32 cores, 64 threads)/

Hoewel je in de grafiek hieronder geen perfecte schaling ziet als je IC's uitschakelt, is er verder niet veel verschil te merken bij decompressieprestaties. (Deze tests voerden we overigens uit met de GUI-versie van 7-Zip 18.05 met een standaard dictionary-grootte van 32 MB, hoewel we ook een eigen versie hebben gecompileerd - daarover straks meer.)

Je bent waarschijnlijk meer geïnteresseerd in de Core i9 versus de Threadripper, dus die hebben we uiteraard ook gedraaid (zie grafiek hieronder). Dat ziet er niet slecht uit. De Threadripper valt wat in prestaties als je meer dan 8 cores gebruikt en de Core i9 heeft het beste prestatievoordeel tot aan 16 cores, maar daarna verslaat de 32-core Threadripper de CPU van Intel.

Dat zou geen grote verrassing moeten zijn: de CPU-prestaties zolang je bandbreedte beschikbaar hebt is een bekend voordeel van de multicore van AMD. Als je kijkt naar onze multithread-tests zie je duidelijk dat dit simpelweg een rekenmonster is.

De vraag is natuurlijk wat er gebeurt onder bandbreedte en latency-tests? Laten we eens kijken naar de 7-Zip-compressietest met de Threadripper 2990X. Dat is minder mooi, maar het goede nieuws is dat het uitschakelen van IC's weinig verschil uitmaakt. De CPU bereikt een plafond bij 26 threads en vanaf daar nemen de relatieve prestaties af.

Het wordt erger als je dit vergelijkt met de Core i9-7980XE. Nogmaals, hierbij zijn beide CPU's vastgesteld op een kloksnelheid van 3 GHz en DDR4/3200:

Dat ziet er niet zo goed uit voor de 32-core chip van AMD en lijkt te bevestigen dat geheugenlatency en bandbreedte-vretende taken lijden.

Is de bandbreedtebeperking ook een issue voor de Core i9? Om daarachter te komen, schakelden we de Core i9 van quad-channel naar single-channel. Helaas voor onze test moesten we het totale geheugen verlagen van 32 GB naar 16 GB vanwege de dichtheid van de modules. Korte antwoord: ja.

Het goede nieuws is dat de 7-Zip-toepassing met de standaardgroottse prima past en we niet geloven dat geheugencapaciteit een issue was. We kunnen stellen dat geheugenbandbreedte zoals gemeten in Sandra daalde van 77 GBps quad-channel naar 18,5 GBps single-channel bij de chip van Intel. De geheugenbandbreedte per core ging van 4,8 GBps in quad-channel naar 1 GBps in single-channel:

Zoals je ziet lijdt de Core i9-7980XE ook flink als de geheugenbandbreedte daalt. Maar belangrijk is het om op te merken is dat dit minder erg is als bij de Threadripper 2990XE en dat dit niet het gevolg lijkt te zijn van pro-Intel code. Waardoor je je wellicht afvraagt hoe het dan buiten Windows zit met Threadripper op Linux?

Want ik zou normaal gesproken nu concluderen dat geheugenbandbreedte en latency het echte probleem zijn, maar Linux roept nieuwe vragen op. Linux-site Phoronix voerde tests uit waarbij de Threadripper 2990WX resultaten geeft die vergelijkbaar zijn met de Core i9-7980. Het lijkt erop dat Linux Threadripper 2990WX uit de brand helpt:

Resultaten van Phoronix

Maar er zijn ook andere tests waarin Windows 10 slechter presteerde dan Linux. Het is daarmee duidelijk dat er een issue is met Windows. Misschien zie je dat niet als een probleem, maar daar ben ik niet zo zeker van, want een test van Techspot voelde de processoren aan de tand in Windows en Linux en laat duidelijk zien dat beide trager zijn in een Windows-omgeving.

Resultaten van Techspot

Dat wekte onze nieuwsgierigheid en we vroegen ons af of de compiler die 7-Zip had samengesteld misschien de oorzaak was. Als een verouderde compiler was gebruikt voor het samenstellen van de excutable, kan dat zeker gevolgen hebben voor de prestaties van nieuwe processoren. Om dit re kunnen testen, downloadden we de broncode van 7-Zip, de nieuwste versie van Visual Studio 2017 en compileerden de code zelf naar een executable.

Onze conclusie? We zagen ongeveer hetzelfde resultaat, dus het lijkt ons niet onwaarschijnlijk dat de nieuwste versie van 7-Zip is gebouwd met de laatste Visual C++ compiler. Dat sluit overigens niet helemaal uit dat de compiler verschil maakt, want al bijvoorbeeld de applicaties op Linux met de GCC of Intel-compiler zijn gebouwd, kan dat de prestatieverschillen verklaren.

Het is ons heel duidelijk geworden dat Windows 10 issues heeft met het Threadripper-ontwerp, maar het zou niet juist zijn om te zeggen dat bandbreedte en latency niet ook een issue zijn. Om te zien hoeveel geheugenbandbreedte helpt of juist niet bij beide CPU's hebben we VeraCrypt gepakt en er een grotere 1 GB workload opgezet.

Net als we zagen met 7-Zip, duiken de prestaties van de Core i9 omlaag bij het gebruik van één core in plaats van vier en is het slechter dan bij de Threadripper, zoals je kunt zien in de onderstaande grafiek (blauw is voor de i9).

De Threadripper 2990WX lijdt stevig onder de 1 GB workload. Maar als het probleem gaat om het chipgeheugen dan zou het beter moeten zijn als je twee IC's uitschakelt, nietwaar? Maar zoals je ziet (groene balken) stijgen de prestaties maar lichtjes als je je beperkt tot 16 cores en twee IC's. Dat is een verwarrend resultaat, want als Windows 10 moeite heeft met het ontwerp van de geheugencontroller, waarom is de Threadripper 2990WX dan niet zo snel als de Core i9?

Onze laatste test ging over het encoderen van een 4K-video met HandBrake 1.1.1 met een 1080p Chromecast-configuratie. Video-encodering heeft sterk te maken met geheugenbandbreedte. Onze resultaten met het beperken van de Threadripper van 4 naar 2 cores heeft geen grote invloed. Sterker nog, het proces is ietsje sneller met twee uitgeschakelde circuits.

Hierdoor denken we dat de enige reden dat de 32-core Threadripper iets langzamer is dan de 18-core Core i9 met dit proces in deze specifieke Handbrake-configuratie te maken heeft met vage details van HandBrake zelf en hoe goed die draait op elke procesoor. We moeten ook vermelden dat de app zelf multi-threaded is, maar niet meeschaalt met het aantal cores.

Kortom, wie hoopte op een eenvoudig antwoord wat betreft de Threadripper-prestaties, helaas. Onze korte versie is: het is ingewikkeld. We hebben zelf geen Linux-tests uitgevoerd, maar het is ons duidelijk dat bepaalde toepassingen suboptimaal presteren in Windows 10 - hoewel dit nog steeds een compiler-issue kan zijn. We denken ook dat voor sommige workloads geheugenbandbreedte en -latency fnuikend kan zijn. Dat is niet meer dan logisch als je het beht over quad-channel op 32 cores versus quad-channel geheugen op 18 cores.

Uiteindelijk komen we altijd op deze gedachte uit: je moet je CPU kiezen op basis van welke taak het moet uitvoeren. Onze eerdere bevindingen blijven gelden: als je threadzware taken als 3D-rendering wilt uitvoeren of veel multitaskt, dan zijn de 64 threads van de 32 cores van een Threadripper 299WX een uitstekende keuze en onvergelijkbaar met wat je eerder had.

Maar als je workloads hebt die dit minder benutten, zoals de meeste video-encoding, en hogere kloksnelheden nodig hebt op applicaties met minder threads, dan is de Core i9-7980XE waarschijnlijk een betere keuze voor jouw doeleinden. In onderstaande grafiek uitgedrukt: bij minder threads en hogere kloksnelheden (links) is de Core i9 logischer. Voor meer cores (rechts) zit je uiteraard bij een Threadripper beter.