Microsoft test ondersteuning voor Intel Advanced Performance Extensions (APX) in Windows 11. Deze nieuwe technologie is ontworpen om de prestaties en efficiëntie van 64-bits software te verbeteren door de mogelijkheden van moderne processors uit te breiden. In een recente testversie van Windows 11 heeft Microsoft een instelling toegevoegd waarmee ontwikkelaars APX-ondersteuning kunnen inschakelen. Daarmee lijkt het bedrijf zich voor te bereiden op een toekomstige integratie van deze technologie in Windows.
De ondersteuning bevindt zich vooralsnog in de testfase. Dat betekent dat de functie nog niet algemeen beschikbaar is en dat het niet zeker is wanneer reguliere Windows 11-gebruikers ervan kunnen profiteren. Wel is de ontwikkeling interessant, omdat APX de manier waarop processors instructies verwerken en gegevens tijdelijk opslaan, aanzienlijk kan verbeteren. Vooral programma's die intensief gebruikmaken van berekeningen en veel gegevens verwerken, zouden op termijn voordeel kunnen hebben.
Wat is Intel APX en waarom is deze technologie belangrijk?
APX staat voor Advanced Performance Extensions. Het is een uitbreiding van de bestaande x86-64-instructiesetarchitectuur van Intel. Deze architectuur vormt de basis voor de manier waarop 64-bits processors instructies uitvoeren en waarop software met de processor communiceert.
Intel introduceerde APX in 2023 als een manier om de efficiëntie van 64-bits software te verhogen zonder dat daarvoor een compleet nieuwe processorarchitectuur nodig is. De uitbreiding richt zich onder meer op het verminderen van onnodige geheugenbewerkingen, het beperken van het aantal uit te voeren instructies en het efficiënter verwerken van berekeningen.
Een van de belangrijkste veranderingen is de uitbreiding van het aantal algemene registers van de processor. Waar de bestaande x86-64-architectuur zestien algemene registers beschikbaar stelt, verdubbelt APX dat aantal naar 32.
Registers zijn kleine, uiterst snelle opslaglocaties in de processor. Ze worden gebruikt om tijdelijke gegevens, adressen en tussenresultaten van berekeningen vast te houden. Wanneer een programma gegevens in registers kan bewaren, hoeft de processor minder vaak gegevens uit het werkgeheugen of uit andere geheugenniveaus op te halen.
Dat kan de uitvoering van programma's versnellen, omdat toegang tot registers doorgaans aanzienlijk sneller is dan toegang tot het werkgeheugen.
Waarom zijn meer processorregisters gunstig?
Bij het uitvoeren van software moet een processor voortdurend gegevens verwerken. Denk bijvoorbeeld aan een toepassing die grote hoeveelheden getallen berekent, een database doorzoekt, een spelwereld simuleert of complexe instructies uitvoert.
De processor bewaart veel van de benodigde gegevens tijdelijk in registers. Het aantal beschikbare registers is echter beperkt. Wanneer een programma meer tijdelijke waarden nodig heeft dan er registers beschikbaar zijn, moet de compiler soms gegevens tijdelijk naar het geheugen verplaatsen en ze later opnieuw ophalen.
Dit proces veroorzaakt extra geheugenbewerkingen en instructies. Het kan ook leiden tot aanvullende verplaatsingen van gegevens tussen registers.
APX vermindert deze beperkingen door het aantal beschikbare algemene registers te verdubbelen. Hierdoor kan de compiler meer gegevens rechtstreeks in de processor laten bewaren. Dat kan verschillende voordelen opleveren:
- Minder gegevens hoeven tijdelijk naar het geheugen te worden weggeschreven.
- Gegevens hoeven minder vaak opnieuw uit het geheugen te worden geladen.
- Er zijn mogelijk minder instructies nodig om waarden tussen registers te verplaatsen.
- De processor kan berekeningen efficiënter uitvoeren doordat meer tijdelijke gegevens direct beschikbaar blijven.
- Compilers krijgen meer mogelijkheden om instructies op een efficiënte manier te ordenen.
De daadwerkelijke prestatiewinst hangt wel af van de gebruikte software, de kwaliteit van de compiler en de processor waarop het programma wordt uitgevoerd. Meer registers leveren dus niet automatisch bij iedere toepassing een merkbare snelheidsverbetering op.
Intel APX wordt getest in een toekomstige versie van Windows 11
Microsoft heeft in een recente Insider-testversie van Windows 11, met buildnummer 29695.1001 uit de toekomstige Rubidium-ontwikkeltak, een instelling toegevoegd voor APX-ondersteuning.
De instelling bevat een omschrijving die aangeeft dat Windows APX kan gebruiken om betere prestaties te leveren. Wanneer de optie wordt ingeschakeld, vraagt het besturingssysteem om opnieuw op te starten.
Dit wijst erop dat Microsoft de ondersteuning actief aan het ontwikkelen en testen is. De aanwezigheid van een dergelijke instelling betekent echter niet automatisch dat alle onderdelen van Windows voortaan APX-instructies gebruiken. Daarvoor moeten ook de relevante softwarecomponenten, uitvoeringspaden en eventuele controles op de beschikbare hardware correct zijn ingericht.
De testfunctie lijkt vooral bedoeld om de werking van APX te onderzoeken en ontwikkelaars de mogelijkheid te geven om de ondersteuning te evalueren. Het is nog niet duidelijk welke onderdelen van Windows er uiteindelijk gebruik van zullen maken, hoeveel prestatiewinst dit oplevert of welke voorwaarden Microsoft aan de uiteindelijke beschikbaarheid zal verbinden.
Omdat de functie momenteel in een toekomstige ontwikkeltak wordt getest, is het mogelijk dat de ondersteuning pas in een latere grote Windows 11-update verschijnt. Een release rond Windows 11 27H2 is een mogelijkheid, maar zolang Microsoft geen definitieve planning heeft bevestigd, blijft dat speculatief.
Ook is het belangrijk om onderscheid te maken tussen ondersteuning door Windows en ondersteuning door afzonderlijke programma's. Zelfs wanneer het besturingssysteem APX volledig ondersteunt, moeten programma's en compilers de nieuwe instructies op een geschikte manier benutten om er daadwerkelijk voordeel uit te halen.
Welke prestatieverbeteringen belooft Intel?
Intel heeft de mogelijke voordelen van APX onderzocht met behulp van simulaties en workloads uit de SPEC CPU 2017 Integer-benchmarksuite. Deze benchmark bevat uiteenlopende rekenintensieve taken waarmee onder meer de prestaties van processors en software kunnen worden vergeleken.
Volgens de door Intel gepubliceerde schattingen kan software die met APX-ondersteuning is gecompileerd, de volgende verbeteringen laten zien:
- Ongeveer 10% minder laadbewerkingen: het programma hoeft minder vaak gegevens op te halen.
- Meer dan 20% minder opslagbewerkingen: het aantal bewerkingen waarbij gegevens worden weggeschreven, kan aanzienlijk afnemen.
- Ongeveer 10% minder instructies: bepaalde programma's kunnen met minder processorinstructies hetzelfde werk uitvoeren.
Deze cijfers zijn gebaseerd op specifieke simulaties en benchmarks. Ze betekenen niet dat een computer na het inschakelen van APX automatisch 10% sneller wordt. Minder instructies of geheugenbewerkingen kunnen bijdragen aan betere prestaties, maar de uiteindelijke snelheid wordt ook bepaald door factoren zoals de kloksnelheid, de geheugenarchitectuur, de uitvoeringseenheden van de processor, de software en de aard van de belasting.
Bij sommige programma's kan het voordeel klein zijn, terwijl andere toepassingen meer profijt kunnen hebben. Ook kunnen de resultaten verschillen tussen verschillende processorgeneraties en compilerinstellingen.
Wat is SPEC CPU 2017?
SPEC CPU 2017 is een benchmarkpakket van de Standard Performance Evaluation Corporation. Het bevat verschillende programma's die representatieve rekenbelastingen uitvoeren. De resultaten kunnen worden gebruikt om de prestaties van processors en complete systemen onder gestandaardiseerde omstandigheden te beoordelen.
De benchmark bevat onder andere workloads die de verwerking van gehele getallen en andere computationele taken testen. De integer-tests zijn relevant voor het beoordelen van APX, omdat veel algemene software bestaat uit berekeningen met gehele getallen, controles, gegevensverwerking en logische bewerkingen.
Bij processorvergelijkingen wordt vaak ook gekeken naar IPC, oftewel instructions per cycle. Dit geeft aan hoeveel instructies een processor gemiddeld per klokcyclus kan uitvoeren. IPC is een belangrijke prestatie-indicator, maar geen volledige maatstaf voor de snelheid van een computer. Het aantal uitgevoerde instructies, de kloksnelheid, wachttijden en het type workload spelen eveneens een rol.
Wanneer APX een programma in staat stelt om minder instructies uit te voeren en minder vaak op gegevens uit het geheugen te wachten, kan dat bijdragen aan een efficiëntere uitvoering. Hoe groot de winst is, moet echter per workload en systeem worden vastgesteld.
Welke technische verbeteringen brengt APX met zich mee?
De verdubbeling van het aantal algemene registers is een belangrijk onderdeel van APX, maar de uitbreiding omvat ook verschillende nieuwe instructiemogelijkheden. Deze zijn bedoeld om compilers meer vrijheid te geven bij het optimaliseren van software.
1. Meer algemene registers: van 16 naar 32
De uitbreiding naar 32 algemene registers is een van de belangrijkste veranderingen binnen APX.
Registers worden gebruikt om tijdelijke waarden en tussenresultaten vast te houden. Bij complexe berekeningen kan het aantal benodigde tijdelijke waarden snel oplopen. Wanneer er onvoldoende registers beschikbaar zijn, moet een compiler bepaalde waarden tijdelijk in het geheugen bewaren.
Met meer registers kan de compiler vaker alle benodigde waarden in de processor houden. Daardoor kunnen extra laad- en opslagbewerkingen worden vermeden.
Dit kan vooral gunstig zijn voor programma's met veel variabelen, complexe berekeningen, intensieve gegevensverwerking en code waarin veel waarden tegelijkertijd actief zijn.
2. Nieuwe drie-operand-instructies met een afzonderlijk bestemmingsregister
APX introduceert ondersteuning voor instructies waarbij een berekening een afzonderlijk bestemmingsregister kan gebruiken. Dit wordt aangeduid als New Data Destination (NDD).
Bij bepaalde bestaande x86-instructies wordt een van de invoerregisters ook gebruikt als bestemming voor het resultaat. Daardoor kan de oorspronkelijke waarde verloren gaan en moet een compiler soms eerst een kopie van die waarde maken.
Met NDD kan een instructie twee invoerwaarden gebruiken en het resultaat in een ander register plaatsen. Hierdoor blijven de oorspronkelijke waarden beschikbaar wanneer dat nodig is.
Dit kan onnodige registerverplaatsingen voorkomen en het voor compilers eenvoudiger maken om efficiënte instructiereeksen te genereren.
Het voordeel is niet dat iedere berekening automatisch sneller wordt, maar dat de compiler meer mogelijkheden krijgt om gegevens op een gunstige manier te organiseren.
3. Instructies die statusvlaggen niet onnodig aanpassen
Processors gebruiken statusvlaggen om informatie over uitgevoerde bewerkingen vast te leggen. Die informatie kan bijvoorbeeld aangeven of een berekening nul opleverde, een carry genereerde of een andere relevante conditie veroorzaakte.
Sommige instructies passen deze vlaggen aan, ook wanneer een programma die informatie niet nodig heeft. Dat kan beperkingen opleggen aan de manier waarop een compiler instructies kan combineren of herschikken.
APX introduceert daarom zogenoemde No Flags-instructievarianten, afgekort als NF. Deze kunnen een bewerking uitvoeren zonder de statusvlaggen op de gebruikelijke manier te wijzigen.
Daardoor krijgen compilers meer vrijheid om bepaalde instructies efficiënt te ordenen en kunnen onnodige afhankelijkheden tussen opeenvolgende bewerkingen worden vermeden.
4. Nieuwe conditionele laad-, opslag- en vergelijkingsinstructies
APX breidt ook de mogelijkheden voor conditionele bewerkingen uit. Het gaat onder meer om nieuwe instructies voor het conditioneel laden en opslaan van gegevens en voor het uitvoeren van vergelijkingen.
Deze mogelijkheden kunnen compilers helpen om bepaalde controles en vertakkingen efficiënter te implementeren.
Een vertakking ontstaat bijvoorbeeld wanneer een programma afhankelijk van een voorwaarde verschillende codepaden uitvoert. De processor probeert vaak vooraf te voorspellen welk pad zal worden gevolgd. Wanneer die voorspelling onjuist is, kan een deel van de reeds voorbereide verwerking verloren gaan en moet de processor de uitvoering corrigeren.
Dit wordt een branch misprediction genoemd.
Door bepaalde bewerkingen conditioneel uit te voeren zonder dezelfde traditionele vertakkingsstructuur te gebruiken, kunnen sommige programma's minder gevoelig worden voor dergelijke voorspelfouten.
De winst hangt af van de situatie: niet iedere vertakking is inefficiënt en niet iedere conditionele instructie is sneller dan een traditionele oplossing. De compiler moet daarom bepalen welke aanpak voor een bepaalde workload het meest geschikt is.
5. Efficiënter registers opslaan en herstellen met PUSH2 en POP2
Wanneer een functie registers gebruikt die volgens de toepasselijke aanroepconventie behouden moeten blijven, kan het nodig zijn om de oorspronkelijke waarden tijdelijk op de stack op te slaan en na afloop terug te zetten.
De stack is een speciaal geheugengebied dat onder meer wordt gebruikt voor functieaanroepen, lokale gegevens en het bewaren van registerwaarden.
APX voegt de instructies PUSH2 en POP2 toe. Hiermee kunnen bepaalde registeropslag- en herstelbewerkingen efficiënter worden uitgevoerd doordat twee registers in één instructiehandeling kunnen worden verwerkt.
Dit kan de overhead van functies verminderen die meerdere registers moeten bewaren en herstellen. Vooral in code met veel functieaanroepen of registerbeheer kan dat nuttig zijn.
De uiteindelijke winst is afhankelijk van hoe vaak dergelijke bewerkingen voorkomen en hoe de compiler en het programma de nieuwe instructies gebruiken.
6. Een nieuwe directe spronginstructie voor 64-bits code
APX breidt ook de mogelijkheden voor directe sprongen in 64-bits code uit met een nieuwe instructie voor een absolute sprong van 64 bits.
Spronginstructies worden gebruikt om de normale opeenvolging van instructies te doorbreken en de uitvoering naar een andere locatie in het programma te verplaatsen. Dat gebeurt bijvoorbeeld bij functieaanroepen, het afhandelen van uitzonderingen en het overdragen van de controle tussen verschillende codegebieden.
De nieuwe instructie biedt extra mogelijkheden om bepaalde sprongen te coderen en kan in specifieke situaties nuttig zijn voor compilers en softwaretools.
Dit betekent niet dat alle sprongen sneller worden. Het voordeel hangt af van de manier waarop de instructie wordt gebruikt en van de omstandigheden waarin het programma wordt uitgevoerd.
Heeft APX een nieuwe Intel-processor nodig?
Om APX daadwerkelijk uit te voeren, moet de gebruikte processor de betreffende instructieset ondersteunen. Alleen een Windows-update installeren is daarom niet voldoende wanneer de processor de benodigde hardwaremogelijkheden niet bezit.
Ook moeten het besturingssysteem, de compiler en de software correct met de uitbreiding kunnen omgaan. Een programma dat niet voor APX is gecompileerd, profiteert niet automatisch van alle nieuwe instructies.
Bovendien moet software rekening houden met de mogelijkheden van het systeem waarop zij draait. Programma's kunnen bijvoorbeeld gebruikmaken van hardwaredetectie en verschillende codepaden aanbieden voor processors met uiteenlopende instructiesets.
De ondersteuning in Windows is dus een belangrijke stap, maar vormt slechts één onderdeel van de volledige keten die nodig is om APX in de praktijk te benutten.
Het is eveneens belangrijk om te beseffen dat APX een uitbreiding van de x86-64-instructieset is. Het is geen zelfstandige technologie die los van de processorarchitectuur werkt, en het is ook geen algemene Windows-optimalisatie die op iedere bestaande processor dezelfde resultaten oplevert.
Wat betekent dit voor gamers en gewone Windows-gebruikers?
Voor de gemiddelde gebruiker zal APX waarschijnlijk niet direct na de introductie een grote, overal zichtbare snelheidsverbetering opleveren. Het effect zal vooral afhangen van de vraag of softwareontwikkelaars de uitbreiding daadwerkelijk benutten.
Gaming
Games voeren veel berekeningen uit voor onder meer kunstmatige intelligentie, spelregels, natuurkundige simulaties en de verwerking van objecten in de spelwereld. Een efficiëntere verwerking van bepaalde CPU-taken kan daardoor mogelijk bijdragen aan betere prestaties.
Toch zal APX niet automatisch leiden tot hogere framerates in alle games. De prestaties worden ook beïnvloed door de grafische kaart, de engine, de geheugenprestaties, de resolutie en de manier waarop de game de processor belast.
Wanneer een game voornamelijk wordt beperkt door de GPU, zal een efficiëntere CPU mogelijk weinig verschil maken. Als een game juist sterk afhankelijk is van de processor en de ontwikkelaars APX goed benutten, kan het voordeel groter zijn.
Dagelijks gebruik
Voor toepassingen zoals webbrowsers, kantoorsoftware, videobewerking en multitasking is de uitkomst eveneens afhankelijk van de software.
Programma's die veel rekenwerk uitvoeren of profiteren van efficiëntere instructiesequenties kunnen voordeel hebben. Andere programma's zullen mogelijk nauwelijks verschil laten zien, bijvoorbeeld wanneer ze vooral wachten op netwerkgegevens, opslagapparaten of andere externe processen.
Het is daarom te vroeg om APX als een algemene snelheidsupgrade voor iedere Windows 11-computer te beschouwen.
Oudere computers
Op bestaande computers zonder APX-compatibele processor kan de uitbreiding niet rechtstreeks worden uitgevoerd. Windows kan niet uitsluitend door middel van een software-update nieuwe hardware-instructies aan een processor toevoegen.
Oudere systemen kunnen uiteraard nog steeds profiteren van andere Windows-optimalisaties, maar voor de APX-instructies zelf is compatibele hardware noodzakelijk.
Hoe past APX in de verdere ontwikkeling van Windows 11?
De test van APX past in een bredere ontwikkeling waarin Microsoft probeert de prestaties en efficiëntie van Windows 11 verder te verbeteren.
Het besturingssysteem kan daarbij op verschillende niveaus worden geoptimaliseerd. Denk aan efficiëntere planning van processortaken, verbeteringen in het geheugenbeheer, optimalisaties voor opslagapparaten en ondersteuning voor nieuwe processormogelijkheden.
APX richt zich specifiek op de instructies die software gebruikt om berekeningen uit te voeren. Door het besturingssysteem en de ontwikkelhulpmiddelen geschikt te maken voor deze uitbreiding, kan het voor softwareontwikkelaars eenvoudiger worden om toekomstige compatibele processors beter te benutten.
De daadwerkelijke prestatiewinst zal echter niet alleen van Microsoft of Intel afhangen. Ook ontwikkelaars van compilers, applicaties, games en andere software moeten de nieuwe mogelijkheden ondersteunen en testen.
Dat APX nu zichtbaar wordt in een toekomstige Windows-ontwikkelversie, is daarom vooral een aanwijzing dat Microsoft voorbereidingen treft voor een bredere ondersteuning van moderne processortechnologieën. Het is nog geen bewijs dat gebruikers op korte termijn een vaste prestatieverbetering zullen merken.
Door: Drifter
Aanbevolen Reacties
Er zijn geen reacties om weer te geven.
Log in om te reageren
Je kunt een reactie achterlaten na het inloggen
Login met de gegevens die u gebruikt bij softtrack