Cookies op Tweakers

Tweakers maakt gebruik van cookies, onder andere om de website te analyseren, het gebruiksgemak te vergroten en advertenties te tonen. Door gebruik te maken van deze website, of door op 'Ga verder' te klikken, geef je toestemming voor het gebruik van cookies. Wil je meer informatie over cookies en hoe ze worden gebruikt, bekijk dan ons cookiebeleid.

Meer informatie

Door , , 26 reacties
Bron: Xbit Labs

Intel heeft duidelijkheid gegeven over de functie van een mysterieuze nieuwe optie in het BIOS voor de 975X-chipset, genaamd 'Core Multiplexing'. Volgens een woordvoerder van het bedrijf gaat het om het uitschakelen van één van de twee cores, zodat de andere het volledige L2-cache tot zijn beschikking krijgt. Op die manier zouden de prestaties van een programma dat geen gebruik maakt van meerdere threads beter kunnen worden. Dit is een enigszins vreemd verhaal, want tijdens de presentatie van de nieuwe architectuur werd hetzelfde gedrag omschreven als 'Advanced Smart Cache Technology', en werd gezegd dat het helemaal niet nodig was om de tweede core daarvoor uit te schakelen. Het preciese verschil tussen Core Multiplexing en Advanced Smart Cache - als dat er überhaupt is - blijft dus nog onduidelijk, maar de achterliggende gedachte lijkt in ieder geval hetzelfde te zijn.

In ons recente artikel over 'omgekeerde HyperThreading' - dat volgens geruchten in de nieuwe AMD-processors met DDR2-controller verwerkt zit - werd Core Multiplexing genoemd als het mogelijke Intel-equivalent hiervan. Hoewel het nog steeds een raadsel blijft hoe 'omgekeerde HyperThreading' zou kunnen werken zonder drastische wijzigingen aan de core, kan het in ieder geval niet meer precies hetzelfde zijn: de AMD-chips hebben geen cache om te delen.

Core Multiplexing

Lees meer over

Moderatie-faq Wijzig weergave

Reacties (26)

Wat ik tot nu toe van deze optie heb begrepen is dat Core Multiplexing er eigenlijk voor zorgt dat een thread over twee cores wordt verdeeld. Echter, zonder complexe onderliggende hardware die ver vooruit kan kijken en moeilijke synchronisatie mechanismen is dit niet zomaar in hardware uit te voeren. (Dit in tegenstelling tot Cluster Thread Multiplexing, waar executionunits geclusterd kunnen worden om zo een virtuele cpu te vormen, de techniek die AMD waarschijnlijk gaat gebruiken). Intel heeft echter een voordeel: het schrijft ook compilers en daar is het heel goed in. Zo goed dat geen enkele andere x86-compiler in de buurt kan komen van die van Intel. Core Multiplexing hangt af van je instructiestroom. Dus als je hier in je compiler rekening mee houdt, heb je dus minder hardware nodig en zou je dus een feature kunnen toevoegen die op sommige momenten voor een stevige performance boost kan zorgen. Vergeet trouwens niet dat Intel heel wat ervaring heeft met het bouwen van compilers hiervoor. Een Itanium kan namelijk tot drie instructies parallel uitvoeren die tot dezelfde instructiestroom horen! Daarnaast hebben processors zonder Core Multiplexing vaak ook baat bij het optimaliseren van de instructiestroom voor Core Multiplexing. Grote kans dus, dat alle programma's die de laatste jaren zijn geschreven en de Intel compiler gebruiken (Microsoft Visual C en dergelijke maken gebruik van de Intel compiler) al lang geoptimaliseerd zijn voor Core Multiplexing.
Hoe ik het lees is :

Dat intel core 0 of 1 moet uitschakelen om zodat de core die aan blijft heel het cache voor zichzelf heeft.

Niet bepaald 1 thread op 2 cores, maar gewoon 1 thread op een core die de L2-cache volledig benut.
als je even de link bekijkt die Siris hierboven gaf dan zie je dat:
multiplexing ervoor zorgt dat 1 thread over 2 cores kan worden berekend.
en met Single processor mode, er één core word uitgeschakeld
De link van Siris is puur speculatie, het bericht hierboven komt van Intel zelf...
Intel heeft echter een voordeel: het schrijft ook compilers en daar is het heel goed in. Zo goed dat geen enkele andere x86-compiler in de buurt kan komen van die van Intel.
Dat is niet mijn ervaring. Ik merk dat Visual Studio.NET 2005 vaak betere code genereert dan de Intel C/C++ compiler. Het lijkt erop dat de 'standaard'-code beter door MS gedaan wordt. Intel heeft waarschijnlijk wel meer foefjes voor SSE, HT etc, maar dat is maar beperkt toepasbaar. Mijn code is meestal sneller met de MS-compiler (en mijn code heeft toch vaak veel floating-point berekeningen, recursie, en andere dingen waar een goede compiler zich op zou kunnen uitleven).
Een Itanium kan namelijk tot drie instructies parallel uitvoeren die tot dezelfde instructiestroom horen!
Zoals al opgemerkt zijn dat er dus 6, niet 3.
Een bundle bevat maximaal 3 instructies, en de Itanium heeft 2 pipelines, waardoor je dus 2 bundles, dus 2*3 = 6 instructies tegelijk kunt uitvoeren.
Maar inderdaad, de compiler moet daar het optimalisatie-werk voor doen, want er zitten regels aan wat voor instructies je in een bundle doet... Ze mogen niet afhankelijk zijn etc.
De x86-instructieset werkt heel anders, en daarom zit er dus logica in de processors om de instructies te reorderen. Je kunt vanwege de legacy van x86 er niet vanuit gaan dat de instructies al in een redelijk optimale vorm staan. Bij de bundles van de Itanium weet je al per definitie dat de instructies erin aan bepaalde voorwaarden voldoen, dus is dat een probleem minder voor de CPU, en een probleem meer voor de compiler :)
Grote kans dus, dat alle programma's die de laatste jaren zijn geschreven en de Intel compiler gebruiken (Microsoft Visual C en dergelijke maken gebruik van de Intel compiler) al lang geoptimaliseerd zijn voor Core Multiplexing.
Zoals al gezegd, Microsoft heeft dus z'n eigen compiler... Die is ook populairder, omdat ie ten eerste prima prestaties levert, dus de vraag naar de Intel-compiler daardoor niet groot is, en ten tweede omdat je deze compiler toch al bij Visual Studio krijgt, en de Intel-compiler eigenlijk alleen echt bruikbaar is als je hem in Visual Studio integreert, dus de Microsoft-compiler heb je dan toch al gekocht... waardoor het alleen maar duurder wordt om de Intel-compiler te kopen.
Hmmm misschien dat de MS compiler voor Windows goede zaken doet, maar op linux is de Intel compiler toch wel de koning van de compilers...

De MS compiler zal misschien wat handiger zijn in het compilen van code die is gebaseerd op API's van Microsoft zelf, niet zo gek op zich...
Hmmm misschien dat de MS compiler voor Windows goede zaken doet, maar op linux is de Intel compiler toch wel de koning van de compilers...
Code-generatie is niet OS-gebonden hoor. Als je de MS-compiler gebruikt om code te genereren die je vervolgens op linux gebruikt (wat best mogelijk is met de juiste linker, of desnoods door de code te disassemblen en in linux als assembly-code in te voeren), dan is de MS-compiler nog steeds sneller dan de Intel-compiler.
De Intel-compiler is inderdaad wel sneller dan gcc en andere linux-compilers.
De MS compiler zal misschien wat handiger zijn in het compilen van code die is gebaseerd op API's van Microsoft zelf, niet zo gek op zich...
Nee hoor. Mijn code was heel erg rekenintensief, en de enige API-calls die er waren, waren om de resultaten op het beeld te krijgen. Die waren verwaarloosbaar.
Verder zie ik niet hoe je API calls kunt optimaliseren... Het zijn gewoon functie-aanroepen, en je kunt er niet meer of minder aan optimaliseren dan aan 'gewone' functies.
Je kunt ze ook niet inlinen, want de code is specifiek voor jouw build van Windows. Als je het zou inlinen op een Windows XP-systeem, zou het niet werken op Windows NT/2000, en vice versa.
Wat ik tot nu toe van deze optie heb begrepen is dat Core Multiplexing er eigenlijk voor zorgt dat een thread over twee cores wordt verdeeld.
Het plaatje over de 'werking' van Core Multiplexing is in elkaar geknutseld door een of andere fanboy die er de ballen verstand van heeft. Dat moet je niet 'begrijpen', dat moet je gewoon negeren en in plaats daarvan zelf logisch na gaan denken.
(Dit in tegenstelling tot Cluster Thread Multiplexing, waar executionunits geclusterd kunnen worden om zo een virtuele cpu te vormen, de techniek die AMD waarschijnlijk gaat gebruiken).
Op zijn vroegst in 2010, wat totaal niet strookt met de recente geruchten.
Intel heeft echter een voordeel: het schrijft ook compilers en daar is het heel goed in. Zo goed dat geen enkele andere x86-compiler in de buurt kan komen van die van Intel. Core Multiplexing hangt af van je instructiestroom. Dus als je hier in je compiler rekening mee houdt, heb je dus minder hardware nodig en zou je dus een feature kunnen toevoegen die op sommige momenten voor een stevige performance boost kan zorgen.
Autoparallellisatie en het genereren van Helper Threads door een compiler is niets nieuws, maar dat werkt gewoon met normale threads en daar is dus geen obscure 'opsplitshardware' of wat dan ook voor nodig. Zelfs als een compiler op een of andere manier binnen één thread hints zou willen geven over welke instuctie op welke core uitgevoerd moet dan kan het nog niet: x86 heeft daar simpelweg geen ruimte voor. Het zou een EPIC-achtige uitbreiding van de instructieset vergen om dat voor elkaar te krijgen, en dat hou je echt niet jaren verborgen :).
Vergeet trouwens niet dat Intel heel wat ervaring heeft met het bouwen van compilers hiervoor. Een Itanium kan namelijk tot drie instructies parallel uitvoeren die tot dezelfde instructiestroom horen!
Zes zelfs.
Grote kans dus, dat alle programma's die de laatste jaren zijn geschreven en de Intel compiler gebruiken (Microsoft Visual C en dergelijke maken gebruik van de Intel compiler)
Microsoft heeft zijn eigen compiler, die van Intel kan er wel ingeplugd worden maar daar moet je flink voor betalen.
Als je wil dat de software gebruik maakt van 1 core, dan zet je toch die optie onder multiplexing aan (Sofware Single Processor Mode) ... lijkt me? :?
Dat is SOFTware Single processor, misschien heb je bij core multiplexing HARDware Single processor of zo iets.
Als je het softwarematig doet blijft de 2e core beslag leggen op de cache. Als je hardwarematig de 2e core uitschakeld weet je zeker dat de 2e core geen gebruik maakt van de cache en kun je die cache dus effectiever gebruiken voor de enkele core die over is.

Eerlijk gezegd ben ik wel benieuwd hoeveel prestatiewinst dit nu werkelijk oplevert bij single threaded applicaties. Ik denk niet echt veel maar dat zal vast wel in een paar reviews getest gaan worden :)
Maar heb je dan ook alle cache tot je beschikking en niet alleen de helft die toegewezen is aan die core?
Ik zie wel wat in 1 core uitzetten, bij amd nog meer dan intel.

Intel heeft geen interne-controller.
Daar zie je meer 2 CPU's naast elkaar.
AMD heeft meer 1 CPU met 2 core's.

Je maakt dan dus alles beschikbaar voor 1 CPU met 1 kern.

die 2e kern helemaal niks laten doen of enkel als doorgeef-luikje.
Veel meer informatie en plaatjes zijn te vinden op Xtreme:
http://www.xtremesystems.org/forums/showthread.php?t=104178

Een manier op single threaded apps toch over 2 cores te kunnen verdelen en zo performance winst te krijgen :9
Klinkt allemaal wel mooi maar zo makkelijk gaat dat niet:

a=b*c
d=f*g
is makkelijk te verdelen. Maar elke processor heeft al een aantal (verschilt per chipbakker en model) parallelle pipes, het wordt dus steeds moeilijker om statements te vinden die parallel gedaan kunnen worden. Eist veel van de compiler en de schedular die er voor zit. Dit is op dit moment al het drukste onderdeel van een processor. Nu moet er weer een voor geplaatst worden.
Die plaatjes zijn door iemand gemaakt om zijn persoonlijke theorie te illustreren, niet bepaald wat je betrouwbare informatie kunt noemen (ook al heeft hij goed zijn best gedaan om het officieel te laten lijken door maar veel ® e.d. te gebruiken).
De naam dekt de inhoudt niet echt.
Klinkt als een 'cover up'.
Of het stelen van buzzwords om de aandacht af te trekken van de concurrent.
De reden waarom intel het doet is veel simpeler: om sneller te zijn op benchmarks single cpu.

Dus voor bijna alle gebruikers, behalve zij die die onnozele spec sets benchen, is het uitschakelen van 1 core zeer onhandig.

De truuk om dus level caches van andere cpu's (in dit geval dus van een andere core) te misbruiken bij een single cpu benchmark is niet nieuw overigens.

Sun deed dat al jaren.
euh, is dit opheldering??? ik weet nu nog minder wat multiplexing is.. :?
Multiplexing is het samenvoegen van verschillende datasporen.

In dit geval is het dus het samenvoegen van 2 datasporen van de 2 cores over 1 datapad en met demultiplexing kan je die ene weer uit elkaar rafelen in 2.

Dus multiplexing is een manier van vervoer van data over 1 pad.
En misschien is het gewoon een leugen van intel en is het toch omgekeerde hyperthreading maar willen ze om de geruchtenmolen,het gezeur van de pers, en de concurrentie,buiten te houden gewoon nog niet te veel kwijt, en zetten ze je zo op het verkeerde been...
Klinkt als een rookscherm.....

De techniek die ze beschrijven heeft helemaal niets met mulitplexen te maken. Ik denk dan ook dat de feature anders is als ze ons en wellicht de concurrentie willen laten geloven. Ben wel benieuwd wat het wel is :)
Misschien krijg je zo dan meer prestatie per watt, door de tweede kern helemaal de prik te ontzeggen... ( int tegenstelling tot bij smart cache waarbij er een kreupele (want van cache ontdane) tweede core overblijft...
een mysterieuze nieuwe optie in het BIOS voor de 975X-chipset, genaamd 'Core Multiplexing'
De moederborden met het 975X-chipset zullen wel weer heel erg duur worden (200euro+). Hopelijk hebben ze ook een variant op het goedkopere 965P-chipset. (zo niet: dat moet maar!)
Hmmm.. misschiens dat die verklaring van Intel helemaal niet fout is. Ik werd zelf door Core Multiplexing Technology op het verkeerde been gezet omdat Core Multiplexing Threading (wat ik hierboven als mogelijkheid gaf) goed ken.

Anyway, wat weten we:
1) het heeft betrekking op het L2-cache
2) het heeft betrekking op het aantal cores dat hun werk doet.
3) Als een enkele thread wordt gedraaid en dus maar een core aan het werk is, worden de prestaties hoger
4) Advance Smart Cache zou normaal gesproken voor een goede verdeling van het L2-cache moeten zorgen

Ik weet uit ervaring dat het maken van een dual-ported L2-cache complexer is dan het maken van een superscaler out-of-order processor. Vooral het verifieren of het cache zijn werk wel goed doet onder alle indenkbare omstandigheden (en dat zijn er veel) is erg moeilijk. Dus wat als Intel een single-ported L2-cache heeft gebruikt met een eenvoudige multiplexer ervoor waar ook nog wat controlle logica aan hangt om te bepalen welke processor de hand krijgt. Dat betekent een ietwat hogere latentie richting L2-cache. Wat als deze optie niets anders betekent dan het vastzetten van de multiplexer in een stand: de core die gebruikt wordt. Gevolg latentie wordt iets lager, wat in sommige gevallen tot betere prestaties kan leiden. Het is een tweak, meer niet.

Op dit item kan niet meer gereageerd worden.



Apple iOS 10 Google Pixel Apple iPhone 7 Sony PlayStation VR AMD Radeon RX 480 4GB Battlefield 1 Google Android Nougat Watch Dogs 2

© 1998 - 2016 de Persgroep Online Services B.V. Tweakers vormt samen met o.a. Autotrack en Carsom.nl de Persgroep Online Services B.V. Hosting door True