"Dus" van Intel. Nieuwe energiebesparende modi

Datum: 13-08-2014 22:26

In 2007 bracht AMD een nieuwe generatie Phenom-processors uit. Deze processors bevatten, zo bleek later, een fout in het TLB-blok (translation look-aside buffer, een buffer voor het snel omzetten van virtuele adressen naar fysieke). Het bedrijf had geen andere keuze dan dit probleem op te lossen via een patch in de vorm van een BIOS-patch, maar dit verminderde de processorprestaties met ongeveer 15%.

Iets soortgelijks is nu met Intel gebeurd. In processors van de Haswell-generatie implementeerde het bedrijf ondersteuning voor TSX-instructies (Transactional Synchronization Extension). Ze zijn ontworpen om multi-threaded applicaties te versnellen en hadden voornamelijk in het serversegment moeten worden gebruikt. Ondanks het feit dat Haswell CPU's al geruime tijd op de markt zijn, dit setje Er werden vrijwel geen instructies gebruikt. Kennelijk zal dat in de nabije toekomst niet gebeuren.

Feit is dat Intel een ‘typefout’ heeft gemaakt, zoals het bedrijf het zelf noemt, in de TSX-instructies. De fout werd overigens niet ontdekt door specialisten van de processorgigant. Het kan leiden tot systeeminstabiliteit. Het bedrijf kan dit probleem maar op één manier oplossen: door het BIOS bij te werken, waardoor deze reeks instructies wordt uitgeschakeld.

Trouwens, TSX is niet alleen geïmplementeerd in Haswell-processors, maar ook in de eerste Broadwell CPU-modellen, die onder de naam Core M zouden moeten verschijnen. Een bedrijfsvertegenwoordiger bevestigde dat Intel van plan is een "foutvrije" versie van TSX-instructies te implementeren in zijn volgende producten in de toekomst.

Trefwoorden: commentaar

Vorig nieuws

2014-08-13 22:23
Sony Xperia Z2 “overleefde” na een verblijf van zes weken op de bodem van een zoute vijver

Smartphones worden vaak de helden van ongelooflijke verhalen waarin ze de rol van kogelvrije vesten uitproberen, een kogel tegenhouden en redden

2014-08-13 21:46
iPhone 6 is de laatste testfase ingegaan

Volgens de laatste gegevens van persbureau Gforgames is de iPhone 6 de laatste testfase ingegaan vóór de massale lancering van de nieuwe smartphone in productie. Laten we u eraan herinneren dat de iPhone 6 zal worden geassembleerd in fabrieken in China...

2014-08-12 16:38
Octa-core iRU M720G-tablet ondersteunt dubbele simkaarten

De tablet heeft 2 GB RAM en 16 GB ingebouwd flashgeheugen. Er zijn twee camera's aan boord: de hoofdcamera van 8 megapixel en de voorkant van 2 megapixel. iRU M720G is uitgerust met 3G-, GPS-, Wi-Fi-, Bluetooth-, FM-radiomodules en een slot voor twee simkaarten, waardoor hij kan presteren...

2014-08-10 18:57
LG heeft in Rusland een goedkope smartphone L60 uitgebracht

Zonder veel pracht en praal introduceerde LG Electronics in Rusland een nieuw model van de L Series III: LG L60. Dit goedkope smartphone gepresenteerd in de prijsklasse van 4 tot 5 duizend roebel van de grootste Russische...

Met elke nieuwe generatie bevatten Intel-processors steeds meer technologieën en functies. Sommigen van hen zijn bekend (wie kent bijvoorbeeld niet hyperthreading?), Terwijl de meeste niet-specialisten niet eens van het bestaan ​​van anderen op de hoogte zijn. Laten we het voor iedereen openstellen bekende basis kennis over Intel Automated Relational Knowledge Base (ARK)-producten en selecteer daar een processor. We zullen een flinke lijst met functies en technologieën zien. Wat zit er achter hun mysterieuze marketingnamen? We raden aan om je in het probleem te verdiepen en speciale aandacht te besteden aan weinig bekende technologieën- er zullen daar zeker veel interessante dingen zijn.

Intel vraaggestuurd schakelen

Samen met Enhanced Intel SpeedStep Technology zorgt Intel Demand Based Switching-technologie ervoor dat de processor op elk moment tijdens de huidige belasting op de optimale frequentie werkt en voldoende elektrisch vermogen ontvangt: niet meer en niet minder dan nodig. Dit vermindert het energieverbruik en de warmteopwekking, wat niet alleen belangrijk is voor draagbare apparaten, maar ook voor servers: daar wordt Demand Based Switching gebruikt.

Intel snelle geheugentoegang

Geheugencontrollerfunctie om de RAM-prestaties te optimaliseren. Het is een combinatie van technologieën die het mogelijk maakt, door een diepgaande analyse van de commandowachtrij, ‘overlappende’ commando’s te identificeren (bijvoorbeeld lezen vanaf dezelfde geheugenpagina) en vervolgens de daadwerkelijke uitvoering opnieuw te ordenen, zodat de ‘overlappende’ commando’s worden achter elkaar uitgevoerd. Bovendien worden geheugenschrijfbewerkingen met een lagere prioriteit gepland op momenten waarop wordt voorspeld dat de leeswachtrij leeg zal zijn, waardoor het geheugenschrijfproces nog minder beperkend is voor de leessnelheid.

Toegang tot Intel Flex-geheugen

Een andere functie van de geheugencontroller, die verscheen in de tijd dat het een afzonderlijke chip was, in 2004. Biedt de mogelijkheid om tegelijkertijd in synchrone modus te werken met twee geheugenmodules, en in tegenstelling tot de eenvoudige tweekanaalsmodus die voorheen bestond, kunnen geheugenmodules worden verschillende maten. Op deze manier werd flexibiliteit bereikt bij het uitrusten van de computer met geheugen, wat terugkomt in de naam.

Intel-instructie opnieuw afspelen

Een zeer diepgaande technologie die voor het eerst verscheen in Intel Itanium-processors. Tijdens de werking van processorpijplijnen kan zich een situatie voordoen waarin instructies al moeten worden uitgevoerd, maar de benodigde gegevens nog niet beschikbaar zijn. De instructie moet dan opnieuw worden afgespeeld: van de lopende band worden verwijderd en vanaf het begin worden uitgevoerd. Dat is precies wat er gebeurt. Een andere belangrijke functie van IRT is de correctie van willekeurige fouten in processorpijplijnen. Lees meer over deze zeer interessante functie.

Intel My WiFi-technologie

Virtualisatietechnologie waarmee u een virtuele WiFi-adapter kunt toevoegen aan een bestaande fysieke adapter; Zo kan uw ultrabook of laptop een volwaardig toegangspunt of repeater worden. Mijn WiFi-softwarecomponenten zijn inbegrepen in Intel-stuurprogramma's PROSet Wireless-software versie 13.2 en hoger; Houd er rekening mee dat slechts enkele technologieën compatibel zijn WiFi-adapters. Installatie-instructies, evenals een lijst met software- en hardwarecompatibiliteit, zijn te vinden op de Intel-website.

Intel Smart Idle-technologie

Nog een energiebesparende technologie. Hiermee kunt u momenteel ongebruikte processorblokken uitschakelen of de frequentie ervan verlagen. Een onvervangbaar iets voor de smartphone-CPU, en dat is precies waar deze verscheen: in Intel Atom-processors.

Intel Stabiel Imageplatform

Een term die verwijst naar bedrijfsprocessen in plaats van naar technologie. Het Intel SIPP-programma garandeert softwarestabiliteit door ervoor te zorgen dat de kernplatformcomponenten en stuurprogramma's gedurende minimaal 15 maanden ongewijzigd blijven. Zakelijke klanten hebben dus de mogelijkheid om gedurende deze periode dezelfde geïmplementeerde systeemimages te gebruiken.

Intel QuickAssist

Een reeks hardware-geïmplementeerde functies die grote hoeveelheden rekenwerk vereisen, bijvoorbeeld encryptie, compressie en patroonherkenning. Het doel van QuickAssist is om het ontwikkelaars gemakkelijker te maken door hen functionele bouwstenen te bieden en hun applicaties te versnellen. Aan de andere kant stelt technologie je in staat om ‘zware’ taken aan niet de meesten toe te vertrouwen krachtige processors, wat vooral waardevol is in embedded systemen die ernstig beperkt zijn qua prestaties en energieverbruik.

Intel snel hervatten

Technologie ontwikkeld voor computers gebaseerd op het Intel Viiv-platform, waardoor ze vrijwel onmiddellijk kunnen worden in- en uitgeschakeld, zoals tv-ontvangers of dvd-spelers; Tegelijkertijd kon de computer, in de “uit”-status, bepaalde taken blijven uitvoeren waarvoor geen tussenkomst van de gebruiker nodig was. En hoewel het platform zelf soepel overging naar andere vormen, samen met de ontwikkelingen die daarmee gepaard gingen, is de lijn nog steeds aanwezig in ARK, omdat het nog niet zo lang geleden was.

Intel Secure-sleutel

Een algemene naam voor de 32- en 64-bits RDRAND-instructies die een hardware-implementatie van de Digital Random Number Generator (DRNG) gebruiken. De instructie wordt gebruikt voor cryptografische doeleinden om mooie en hoogwaardige willekeurige sleutels te genereren.

Intel TSX-NI

De technologie met de complexe naam Intel Transactional Synchronization Extensions - New Instructions impliceert een add-on voor het processorcachesysteem dat de uitvoeringsomgeving van multi-threaded applicaties optimaliseert, maar uiteraard alleen als deze applicaties TSX-NI-programmeerinterfaces gebruiken. Van de kant van de gebruiker deze technologie niet direct zichtbaar, maar iedereen kan de beschrijving ervan lezen toegankelijke taal op de blog van Stepan Koltsov.

Tot slot willen we u er nogmaals aan herinneren dat Intel ARK niet alleen als website bestaat, maar ook als offline applicatie voor iOS en Android. Blijf bij het onderwerp!

#Xeon

Heel vaak bij het kiezen van een server met één processor of werkstation De vraag rijst welke processor je moet gebruiken: een server Xeon of een gewone Core ix. Aangezien deze processors op dezelfde kernen zijn gebouwd, valt de keuze vaak op desktopprocessors, die meestal lagere kosten hebben met vergelijkbare prestaties. Waarom brengt Intel dan Xeon E3-processors uit? Laten we het uitzoeken.

Specificaties

Laten we om te beginnen het juniormodel van de Xeon-processor uit het huidige modellengamma nemen: Xeon E3-1220 V3. De tegenstander zal de Core i5-4440-processor zijn. Beide processors zijn gebaseerd op de Haswell-kern, hebben dezelfde basiskloksnelheid en vergelijkbare prijzen. De verschillen tussen deze twee processors worden weergegeven in de tabel:

Beschikbaarheid van geïntegreerde grafische afbeeldingen. Op het eerste gezicht heeft de Core i5 een voordeel, maar alle servermoederborden hebben een geïntegreerde grafische kaart waarvoor geen grafische chip in de processor nodig is, en werkstations gebruiken doorgaans geen geïntegreerde grafische kaart vanwege hun relatief lage prestaties.

ECC-ondersteuning. Hoge snelheid en groot volume RAM vergroot de kans op optreden softwarefouten. Dergelijke fouten zijn doorgaans onzichtbaar, maar desondanks kunnen ze leiden tot gegevenswijzigingen of systeemcrashes. Als dergelijke fouten vanwege hun zeldzame voorkomen niet gevaarlijk zijn voor desktopcomputers, dan zijn ze onaanvaardbaar op servers die meerdere jaren de klok rond draaien. Om ze te corrigeren wordt ECC-technologie (error-correcting code) gebruikt, waarvan de efficiëntie 99,988% is.

Thermisch ontwerpvermogen (TDP). In wezen het stroomverbruik van de processor bij maximale belasting. Xeons hebben doorgaans een kleiner thermisch omhulsel en slimmere energiebesparende algoritmen, wat uiteindelijk resulteert in lagere elektriciteitsrekeningen en efficiëntere koeling.

L3-cache. Cachegeheugen is een soort laag tussen de processor en het RAM-geheugen, die een zeer hoge snelheid. Hoe groter de cachegrootte, hoe sneller de processor werkt, aangezien zelfs zeer snel RAM aanzienlijk langzamer is dan cachegeheugen. Xeon-processors hebben doorgaans grotere cachegroottes, waardoor ze de voorkeur verdienen voor resource-intensieve applicaties.

Frequentie / Frequentie in Turbo-modus Boost. Alles is hier eenvoudig: hoe hoger de frequentie, hoe sneller de processor werkt, terwijl alle andere dingen gelijk blijven. Basisfrequentie, dat wil zeggen, de frequentie waarmee de processors onder volledige belasting werken is hetzelfde, maar in de Turbo Boost-modus, dat wil zeggen, bij het werken met applicaties die niet zijn ontworpen voor multi-coreprocessors, is Xeon sneller.

Intel TSX-NI-ondersteuning. Intel Transactional Synchronization Extensions New Instructions (Intel TSX-NI) is een add-on voor het processorcachesysteem dat de uitvoeringsomgeving van multi-threaded applicaties optimaliseert, maar uiteraard alleen als deze applicaties TSX-NI-programmeerinterfaces gebruiken. Met TSX-NI-instructiesets kunt u efficiënter werken met Big Data en databases implementeren - in gevallen waarin veel threads toegang hebben tot dezelfde gegevens en er situaties met threadblokkering optreden. Speculatieve gegevenstoegang, die in TSX is geïmplementeerd, stelt u in staat dergelijke toepassingen efficiënter te bouwen en de prestaties dynamischer te schalen door het aantal gelijktijdig uitgevoerde threads te vergroten door conflicten op te lossen bij het verkrijgen van toegang tot gedeelde gegevens.


Trusted Execution-ondersteuning. Intel-technologie Trusted Execution verbetert de veilige uitvoering van opdrachten door hardwareverbeteringen aan Intel-processors en chipsets. Deze technologie biedt digitale kantoorplatforms beveiligingsfuncties zoals het gecontroleerd starten van applicaties en het veilig uitvoeren van opdrachten. Dit wordt bereikt door een omgeving te creëren waarin applicaties geïsoleerd van andere applicaties op het systeem worden uitgevoerd.

Naar de voordelen Xeon-processors oudere modellen kunnen nog meer L3-volume toevoegen, tot 45 MB, meer kernen, tot 18, en meer ondersteund RAM, tot 768 GB per processor. Tegelijkertijd bedraagt ​​het verbruik niet meer dan 160 W. Op het eerste gezicht is dit een zeer grote waarde, maar aangezien de prestaties van dergelijke processors meerdere malen hoger zijn dan die van dezelfde Xeon E3-1220 V3 met een TDP van 80 W, worden de besparingen duidelijk. Er moet ook worden opgemerkt dat geen van de Core-familieprocessors multiprocessing ondersteunt, dat wil zeggen dat het mogelijk is om niet meer dan één processor op één computer te installeren. De meeste server- en werkstationapplicaties zijn goed schaalbaar over cores, threads en fysieke verwerkers, dus het installeren van twee processors zal de prestaties bijna verdubbelen.

Is de architectuur van Haswell het waard om nieuw en opnieuw ontworpen te worden genoemd?

Al meer dan vijf jaar volgt Intel een tick-tock-strategie, waarbij de overgang van een specifieke architectuur naar meer geavanceerde technologische normen wordt afgewisseld met de release van een nieuwe architectuur.

Als gevolg hiervan krijgen we elk jaar óf een nieuwe architectuur óf een transitie naar een nieuw technisch proces. "Dus" was gepland voor 2013, dat wil zeggen de release van een nieuwe architectuur - Haswell. Processoren met de nieuwe architectuur worden geproduceerd met dezelfde procestechnologie als de vorige generatie Ivy Bridge: 22 nm, Tri-gate. Het technische proces is niet veranderd, maar het aantal transistors is toegenomen, wat betekent dat het laatste oppervlak van het kristal van de nieuwe processor ook is toegenomen - en daarna het stroomverbruik.

Volgens traditie presenteerde Intel op de dag van de Haswell-aankondiging alleen krachtige en dure processors Kern lijnen i5 en i7. De aankondiging van dual-coreprocessors van lagere lijnen is, zoals altijd, vertraagd. Het is vermeldenswaard dat de prijzen voor nieuwe processors op hetzelfde niveau bleven als die van Ivy Bridge.

Laten we de gebieden van de kristallen vergelijken verschillende generaties quad-coreprocessors:

Zoals je kunt zien heeft de quad-core Haswell een oppervlakte van slechts 177 mm², terwijl de north bridge, RAM-controller en grafische kern erin zijn geïntegreerd. Het aantal transistors is dus met 200 miljoen toegenomen en het oppervlak is met 17 mm² toegenomen. Als we Haswell vergelijken met 32 ​​nm Sandy Bridge, dan is het aantal transistors met 440 miljoen toegenomen (38%), en is het oppervlak als gevolg van de overgang naar de 22 nm-procestechnologie afgenomen met 39 mm² (18%). De warmteafvoer is al die jaren vrijwel op hetzelfde niveau gebleven (95 W voor SB en 84 W voor Haswell) en het oppervlak is afgenomen.

Dit alles heeft ertoe geleid dat er meer warmte uit elke vierkante millimeter van het kristal moet worden verwijderd. Als het eerder nodig was om vanaf 216 mm² 95 W te nemen, dat wil zeggen 0,44 W/mm², is het nu vanaf een oppervlakte van 177 mm² nodig om 84 W - 0,47 W/mm² te nemen, wat 6,8% meer is dan voorheen . Als deze trend zich voortzet, zal het binnenkort simpelweg fysiek moeilijk zijn om warmte uit zulke kleine gebieden te verwijderen.

Puur theoretisch kunnen we aannemen dat als in Broadwell, dat zal worden geproduceerd met behulp van een 14 nm-procestechnologie, het aantal transistors met 21% zal toenemen, zoals bij de overgang van 32 naar 22 nm, en het oppervlak met 26 zal worden verkleind. % (met dezelfde hoeveelheid als bij de overgang van 32 naar 22 nm), krijgen we 1,9 miljard transistors op een oppervlakte van 131 mm². Als de warmtedissipatie ook met 19% daalt, krijgen we 68 W, of 0,52 W/mm².

Dit zijn theoretische berekeningen, in de praktijk zal het anders zijn - de overgang van het technologische proces van 32 naar 22 nm werd ook gekenmerkt door de introductie van 3D-transistors, die de lekstromen verminderden, en daarmee de warmteontwikkeling. Over de overgang van 22 nm naar 14 nm is echter nog niets gehoord, dus in de praktijk zullen de warmtedissipatiewaarden hoogstwaarschijnlijk nog slechter zijn en moet je niet hopen op 0,52 W/mm². Maar zelfs als het warmtedissipatieniveau 0,52 W/mm² bedraagt, zal het probleem van lokale oververhitting en de moeilijkheid om warmte uit een klein kristal te verwijderen nog ernstiger worden.

Het zijn overigens juist de problemen met de warmteafvoer met een warmteafvoerniveau van 0,52 W/mm² die ten grondslag kunnen liggen aan Intels wens om over te stappen op BGA of aan pogingen om de socket af te schaffen. Als de processor op het moederbord wordt gesoldeerd, wordt de warmte rechtstreeks van de chip naar het koellichaam overgedragen, zonder tussenafdekking. Dit lijkt nog relevanter in het licht van de vervanging van soldeer door koelpasta onder de covers van moderne processors. We kunnen opnieuw het verschijnen verwachten van “naakte” processors met open kristallen naar het voorbeeld van de Athlon XP, dus zonder deksel als tussenschakel in het koellichaam.

Bij videokaarten wordt dit al heel lang gedaan, en het gevaar van chippen van het kristal wordt verzacht door het ijzeren frame eromheen, waardoor videokaarten niet zulke ‘dringende problemen’ hebben als koelpasta onder de processorkap. Overklokken zal echter nog moeilijker worden, en een goede koeling van "dunnere" processors zal bijna een wetenschap worden. En dit alles staat ons binnenkort te wachten, tenzij er natuurlijk een wonder gebeurt...

Maar laten we met beide benen op de grond komen en weer over Haswell praten. Zoals we weten heeft Haswell een aantal “verbeteringen/veranderingen” ondergaan ten opzichte van Sandy Bridge (en dienovereenkomstig Ivy Bridge, wat in grote lijnen een overdracht van SB naar een subtieler technisch proces was):

  • ingebouwde spanningsregelaar;
  • nieuwe energiebesparende modi;
  • het vergroten van het volume van buffers en wachtrijen;
  • het vergroten van de cachecapaciteit;
  • het vergroten van het aantal lanceerhavens;
  • het toevoegen van nieuwe blokken, functies en API's in de geïntegreerde grafische kern;
  • het vergroten van het aantal pijpleidingen in de grafische kern.

De beoordeling van het nieuwe platform kan dus in drie delen worden verdeeld: processor, geïntegreerde grafische versneller, chipset.

Processorgedeelte

Wijzigingen aan de processor omvatten de toevoeging van nieuwe instructies en nieuwe energiebesparende modi, de opname van een spanningsregelaar en wijzigingen aan de processorkern zelf.

Instructiesets

De Haswell-architectuur heeft nieuwe instructiesets. Ze kunnen worden onderverdeeld in twee grote groepen: groepen die gericht zijn op het verbeteren van de vectorprestaties en groepen die gericht zijn op het serversegment. De eerste omvatten AVX en FMA3, de laatste - virtualisatie en transactioneel geheugen.

Geavanceerde vectorextensies 2 (AVX2)

De AVX-suite is uitgebreid naar versie AVX 2.0. De AVX2-kit biedt:

  • ondersteuning voor 256-bit gehele vectoren (voorheen was er alleen ondersteuning voor 128-bit);
  • ondersteuning voor het verzamelen van instructies, waardoor de vereiste voor aaneengesloten gegevenslocatie in het geheugen wordt weggenomen; nu worden gegevens "verzameld" van verschillende geheugenadressen - het zal interessant zijn om te zien hoe dit de prestaties beïnvloedt;
  • het toevoegen van instructies voor manipulatie/bewerkingen op bits.

Over het algemeen is de nieuwe set meer gericht op het rekenen met gehele getallen, en het belangrijkste voordeel van AVX 2.0 zal alleen zichtbaar zijn bij bewerkingen met gehele getallen.

Gezekerd vermenigvuldigen toevoegen (FMA3)

FMA is een gecombineerde vermenigvuldig-optelbewerking waarbij twee getallen worden vermenigvuldigd en aan de accumulator worden toegevoegd. Dit type bewerking is vrij gebruikelijk en stelt u in staat om de vermenigvuldiging van vectoren en matrices efficiënter te implementeren. Ondersteuning voor deze uitbreiding zou de prestaties van vectoroperaties aanzienlijk moeten verbeteren. FMA3 wordt al ondersteund AMD-processors met de Piledriver-kern en FMA4 in Bulldozer.

FMA is een combinatie van vermenigvuldigen en optellen: a=b×c+d.

Wat FMA3 betreft, dit zijn instructies met drie operanden, dat wil zeggen dat het resultaat wordt geschreven naar een van de drie operanden die aan de instructie deelnemen. Als resultaat krijgen we een bewerking als a=b×c+a, a=a×b+c, a=b×a+c.

FMA4 zijn instructies met vier operanden waarvan het resultaat naar de vierde operand wordt geschreven. De instructie heeft de vorm: a=b×c+d.

Over FMA3 gesproken: deze innovatie zal de productiviteit met ruim 30% verhogen als de code wordt aangepast aan FMA3. Het is vermeldenswaard dat Intel, toen Haswell nog ver in het verschiet lag, van plan was FMA4 te implementeren in plaats van FMA3, maar later zijn beslissing veranderde ten gunste van FMA3. Hoogstwaarschijnlijk was het om deze reden dat Bulldozer FMA4-ondersteuning uitbracht: ze zeggen dat ze geen tijd hadden om het naar Intel te converteren (maar Piledriver kwam met FMA3 uit). Bovendien was Bulldozer aanvankelijk in 2007 gepland met FMA3, maar na de aankondiging van Intel's plannen om FMA4 in 2008 te introduceren jaar AMD veranderde van gedachten door Bulldozer uit te brengen met FMA4. En Intel veranderde vervolgens in zijn plannen FMA4 in FMA3, omdat de winst van FMA4 vergeleken met FMA3 klein is en de complicatie van elektrische logische circuits aanzienlijk is, waardoor ook het transistorbudget toeneemt.

De winsten van AVX2 en FMA3 zullen verschijnen nadat de software is aangepast aan deze instructiesets, dus je moet ‘hier en nu’ geen prestatiewinst verwachten. En aangezien softwarefabrikanten nogal inert zijn, zullen ‘extra’ prestaties moeten wachten.

Transactioneel geheugen

De evolutie van microprocessors heeft geleid tot een toename van het aantal threads - een moderne desktopprocessor heeft er acht of meer. Grote hoeveelheid threads zorgt voor steeds meer problemen bij het implementeren van multi-threaded geheugentoegang. Het is noodzakelijk om de relevantie van variabelen in het RAM-geheugen te controleren: het is noodzakelijk om voor sommige threads tijdig gegevens te blokkeren voor schrijven, en voor andere threads het lezen of wijzigen van gegevens mogelijk te maken. Dit is een moeilijke taak, en transactioneel geheugen is ontwikkeld om gegevens actueel te houden in programma's met meerdere threads. Maar tot nu toe werd het geïmplementeerd in software, wat de productiviteit verminderde.

Haswell heeft een nieuwe Transactional Synchronization Extensions (TSX) - transactioneel geheugen, dat is ontworpen om multi-threaded programma's efficiënt te implementeren en hun betrouwbaarheid te vergroten. Deze uitbreiding Hiermee kunt u transactioneel geheugen “in de hardware” implementeren, waardoor de algehele prestaties toenemen.

Wat is transactioneel geheugen? Dit is een geheugen dat een mechanisme in zich heeft voor het beheren van parallelle processen om toegang te bieden tot gedeelde gegevens. De TSX-extensie bestaat uit twee componenten: Hardware Lock Elision (HLE) en Restricted Transaction Memory (RTM).

De RTM-component is een reeks instructies waarmee de programmeur een transactie kan starten, beëindigen en afbreken. De HLE-component introduceert voorvoegsels die worden genegeerd door processors zonder TSX-ondersteuning. Voorvoegsels bieden variabele vergrendeling, waardoor andere processen vergrendelde variabelen kunnen gebruiken (lezen) en hun code kunnen uitvoeren totdat er een vergrendeld gegevensschrijfconflict optreedt.

Op dit moment zijn er al applicaties verschenen die deze extensie gebruiken.

Virtualisatie

Het belang van virtualisatie wordt steeds groter: steeds meer virtuele servers bevinden zich op één fysieke server en clouddiensten worden steeds wijdverspreider. Daarom is het verhogen van de snelheid van virtualisatietechnologieën en gevirtualiseerde omgevingen een zeer urgente taak in het serversegment. Haswell bevat verschillende verbeteringen die specifiek gericht zijn op het verbeteren van de prestaties van gevirtualiseerde omgevingen. Laten we ze opsommen:

  • verbeteringen om de overgangstijd van gastsystemen naar het hostsysteem te verkorten;
  • toegangsbits toegevoegd aan de Extended Page Table (EPT);
  • TLB-toegangstijd is verkort;
  • nieuwe instructies voor het aanroepen van de hypervisor zonder de opdracht vmexit uit te voeren;

Als gevolg hiervan is de overgangstijd tussen gevirtualiseerde omgevingen teruggebracht tot minder dan 500 processorcycli. Dit zou moeten leiden tot een vermindering van de algehele prestatieoverhead die gepaard gaat met virtualisatie. En de nieuwe Xeon E3-12xx-v3 zal vermoedelijk sneller zijn in deze klasse van taken dan de Xeon E3-12xx-v2.

Ingebouwde spanningsregelaar

Bij Haswell werd de spanningsregelaar van het moederbord onder de processorkap verplaatst. Voorheen (Sandy Bridge) moest de processor worden voorzien van verschillende spanningen voor de grafische kern, voor de systeemagent, voor processorkernen, enz. Nu wordt er slechts één spanning Vccin 1,75 V aan de processor geleverd via de socket, die wordt geleverd naar de ingebouwde spanningsregelaar. De spanningsregelaar bestaat uit 20 cellen, elke cel creëert 16 fasen met een totale stroomsterkte van 25 A. In totaal krijgen we 320 fasen, wat aanzienlijk meer is dan zelfs de meest geavanceerde moederborden. Deze aanpak maakt het niet alleen mogelijk om de lay-out van moederborden te vereenvoudigen (en dus de kosten ervan te verlagen), maar ook om de spanningen in de processor nauwkeuriger te regelen, wat op zijn beurt tot grotere energiebesparingen leidt.

Dit is een van de belangrijkste redenen waarom Haswell fysiek niet compatibel kan zijn met de oude LGA1155-socket. Ja, we kunnen praten over de wens van Intel om geld te verdienen door elk jaar een nieuw platform (nieuwe chipset) uit te brengen en elke twee jaar een nieuwe socket, maar in dit geval is er een manier om de socket te veranderen objectieve redenen: fysieke/elektrische incompatibiliteit.

Alles heeft echter een prijs. De spanningsregelaar is een andere opvallende warmtebron in de nieuwe processor. En aangezien Haswell is vervaardigd met behulp van dezelfde procestechnologie als zijn voorganger Ivy Bridge, mogen we verwachten dat de processor heter zal zijn.

Over het geheel genomen is dit een verbetering. meer voordeel zal het mobiele segment binnenbrengen: snellere en nauwkeurigere spanningsveranderingen zullen het energieverbruik verminderen en de frequentie van processorkernen effectiever controleren. En blijkbaar is dit geen loze marketingverklaring, want Intel gaat mobiele processors aankondigen met een ultralaag stroomverbruik.

Nieuwe energiebesparende modi

Haswell heeft nieuwe S0ix-slaaptoestanden geïntroduceerd, die vergelijkbaar zijn met de S3/S4-toestanden, maar met een veel kortere tijd voor de processor om over te schakelen naar de werkende staat. Er is ook een nieuwe inactieve status van de C7 toegevoegd.

De C7-modus gaat gepaard met het uitschakelen van het hoofdgedeelte van de processor, terwijl het beeld op het scherm actief blijft.

De minimale inactieve frequentie van de processors bedraagt ​​800 MHz, wat ook het stroomverbruik zou moeten verminderen.

Processorarchitectuur

Voorkant

De Haswell-pijplijn heeft, net als in SB, 14-19 fasen: 14 fasen voor een μop-cachehit, 19 voor een misser. De grootte van de µop-cache is niet veranderd vergeleken met SB - 1536 µop. De organisatie van de uop-cache bleef hetzelfde als in SB: 32 sets van acht regels, elk met zes uops. Hoewel je, vanwege de toename van het aantal uitvoeringsapparaten, evenals de daaropvolgende buffers na de uop-cache, een toename van de uop-cache zou kunnen verwachten - tot 1776 uops (waarom precies dit volume hieronder wordt besproken).

Decoder

Je zou kunnen zeggen dat de decoder niet is veranderd - hij blijft vierwegs, net als de SB. Het bestaat uit vier parallelle kanalen: één complexe vertaler (complexe decoder) en drie eenvoudige (eenvoudige decoder). Een complexe vertaler kan complexe instructies verwerken/decoderen die meer dan één uop genereren. De overige drie kanalen worden gedecodeerd eenvoudige instructies. Trouwens, vanwege de aanwezigheid van samenvoegingen van macrobewerkingen genereren laad- en ontlaadinstructies bijvoorbeeld één uop en kunnen ze worden gedecodeerd in "eenvoudige" decoderkanalen. SSE-instructies genereren ook één uop, zodat ze in een van de drie kunnen worden gedecodeerd eenvoudige kanalen. Gezien de komst van 256-bit AVX, FMA3 en het toegenomen aantal triggerpoorten en functie-apparaten, is deze decodersnelheid misschien gewoonweg niet genoeg - en kan het een knelpunt worden. Gedeeltelijk wordt dit knelpunt "uitgebreid" door de L0m uop-cache, maar toch zou Intel, met een processor met 8 lanceerpoorten, moeten nadenken over het uitbreiden van de decoder - in het bijzonder zou het geen kwaad kunnen om het aantal complexe kanalen te vergroten.

Planner, herschikkingsbuffer, uitvoeringseenheden

Na de decoder komt een rij gedecodeerde instructies, en hier zien we de eerste verandering. SB had twee wachtrijen van 28 vermeldingen: één wachtrij per virtuele Hyper-Threading (HT)-thread. In Haswell werden twee wachtrijen gecombineerd tot één gemeenschappelijke voor twee HT-threads met 56 vermeldingen, dat wil zeggen dat het volume van de wachtrij niet veranderde, maar het concept veranderde. Nu is het volledige volume van 56 records beschikbaar voor één thread, terwijl er geen tweede is. Daarom kunnen we een toename verwachten van zowel low-threaded applicaties als multi-threaded applicaties (dit komt door het feit dat twee threads een enkele wachtrij efficiënter).

De herschikkingsbuffer werd ook gewijzigd: deze werd verhoogd van 168 naar 192 vermeldingen. Dit zou de efficiëntie van HT moeten verbeteren vanwege de grotere kans op UOP's die "onafhankelijk" van elkaar zijn. De gedecodeerde micro-op-wachtrij is vergroot van 54 naar 60. De fysieke registerbestanden die in SB verschenen zijn ook vergroot - van 160 naar 168 registers voor integer-operands en van 144 naar 168 voor drijvende-komma-operands, die een positieve waarde zouden moeten hebben effect op de prestaties van vectorberekeningen.

Laten we alle gegevens over wijzigingen in buffers en wachtrijen samenvatten in één tabel.

In principe zien de veranderingen in parameters in Haswell er gezien het gegeven redelijk verwacht uit algemene logica ontwikkeling van Intel-processorarchitectuur. Op basis van dezelfde logica kunnen we ervan uitgaan dat dit ook voor de volgende generatie het geval zal zijn Kern maten buffers en wachtrijen zullen met niet meer dan 14% toenemen, dat wil zeggen dat de omvang van de herschikkingsbuffer ongeveer 218 zal zijn. Maar dit zijn puur theoretische aannames.

Na de rij gedecodeerde bewerkingen volgen de triggerpoorten en de functionele apparaten die daaraan zijn gekoppeld. In dit stadium zullen we er dieper op ingaan.

Zoals we weten had Sandy Bridge zes lanceerhavens, die het erfde van Nehalem, die op zijn beurt van Conroe. Dat wil zeggen, sinds 2006, toen Intel nog twee poorten toevoegde aan de vier beschikbare poorten voor de Pentium 4, is het aantal lanceerpoorten niet veranderd - er zijn alleen nieuwe functionele apparaten toegevoegd. Het is echter de moeite waard te vermelden dat de P4 een soort originele NetBurst-architectuur had, waarbij de twee poorten twee bewerkingen in één klokcyclus konden uitvoeren (hoewel niet met alle bewerkingen). Maar het zou het meest correct zijn om de evolutie van het aantal lanceerpoorten te volgen, niet aan de hand van het voorbeeld van P4, maar aan de hand van het voorbeeld van PIII, aangezien P4 een lange pijplijn heeft en lanceerpoorten met “dubbele” prestaties en een traceercache. , en de hele architectuur ervan verschilt merkbaar van de algemeen aanvaarde architectuur. En de Pentium III is heel dichtbij functioneel diagram lanceerhavens naar Conroe, en heeft ook een korte container. Over het algemeen kunnen we dus zeggen dat Conroe de directe opvolger is van PIII. Op basis hiervan kan worden gesteld dat er in 2006 slechts één lanceerpoort is toegevoegd vergeleken met de PIII, die over vijf lanceerpoorten beschikte.

Het aantal lanceerpoorten groeit dus vrij langzaam, en als er nieuwe worden toegevoegd, dan één voor één. Haswell heeft er twee tegelijk toegevoegd, wat een totaal van acht poorten oplevert - nog een beetje meer, en we komen bij Itanium. Dienovereenkomstig toont Haswell een theoretische prestatie op het uitvoeringspad van 8 UOP's/cyclus, waarvan 4 UOP's worden besteed aan rekenkundige bewerkingen en de overige 4 aan geheugenbewerkingen. Bedenk dat Conroe/Nehalem/SB 6 dweilen/slag had: 3 dweilen rekenkundige bewerkingen en 3 geheugenbewerkingsmodules. Deze verbetering zou de IPC-score moeten verhogen, en dus zijn er inderdaad zeer serieuze veranderingen in de Haswell-architectuur die de plaats "zo" in Intel's ontwikkelingsplan volledig rechtvaardigen.

FU-veranderingen in Haswell

Ook het aantal actuatoren is vergroot. De nieuwe zesde (zevende) poort voegde twee extra actuatoren toe: een reken- en schakelapparaat voor gehele getallen en een aftakkingsvoorspellingsapparaat. De zevende (achtste) haven is verantwoordelijk voor het lossen van het adres.

We krijgen dus vier rekenkundige uitvoeringseenheden met gehele getallen, terwijl Sandy Bridge ons er slechts drie gaf. Daarom kunnen we een toename van de snelheid van het rekenen met gehele getallen verwachten. Bovendien zou dit ons in theorie in staat moeten stellen om zowel drijvende-komma- als gehele getallenberekeningen tegelijkertijd uit te voeren, wat op zijn beurt de efficiëntie van NT zou kunnen vergroten. In SB werden drijvende-kommaberekeningen uitgevoerd op dezelfde poorten waar apparaten met integer-functies werden gebruikt, dus er trad over het algemeen blokkering op, d.w.z. je kon geen "heterogene" belasting hebben. Er moet ook worden opgemerkt dat het toevoegen extra apparaat transitie in Haswell zal het mogelijk maken om de transitie te voorspellen zonder te “blokkeren” tijdens rekenkundige berekeningen - voorheen werd tijdens berekeningen met gehele getallen de enige takvoorspeller geblokkeerd, dat wil zeggen dat het mogelijk was om de rekenkundige uitvoeringseenheid of de voorspeller te bedienen. Poorten 0 en 1 hebben ook wijzigingen ondergaan: ze ondersteunen nu FMA3. Intel introduceerde de zevende (achtste) poort om de efficiëntie te vergroten en “blokkering” te verwijderen - wanneer de tweede en derde poort werken voor downloaden, kan de zevende (achtste) poort worden gebruikt voor uploaden, wat voorheen eenvoudigweg onmogelijk was. Deze oplossing is nodig om een ​​hoge uitvoeringssnelheid van AVX/FMA3-code te garanderen.

Over het algemeen kan zo'n breed managementpad heel goed leiden tot een verandering in HT, waardoor het een vierdraads karakter krijgt. In Intel Xeon Phi-coprocessors met een veel smaller uitvoeringspad is de HT vier-threaded, en zoals uit onderzoeken en tests blijkt, schaalt de coprocessor vrij goed. Dat wil zeggen dat zelfs een smaller uitvoeringspad u in principe in staat stelt effectief met vier threads te werken. En een pad met acht lanceerpoorten kan heel efficiënt vier threads uitvoeren, en bovendien kan de aanwezigheid van vier threads acht lanceerpoorten beter laden. Klopt, voor grotere efficiëntie Het zal nodig zijn om de buffers (voornamelijk de herschikkingsbuffer) te vergroten om de kans op “onafhankelijke” gegevens te vergroten.

Haswell verdubbelde ook de L1-L2-doorvoer, terwijl dezelfde latentiewaarden behouden bleven. Deze maatregel was eenvoudigweg noodzakelijk, aangezien 32 bytes schrijven en 16 bytes lezen simpelweg niet voldoende zouden zijn gezien de aanwezigheid van acht lanceerpoorten, evenals 256-bit AVX en FMA3.

Zandige brugHaswell
L1i32k, 8-weg32k, 8-weg
L1d32k, 8-weg32k, 8-weg
Latentie4 maatregelen4 maatregelen
Downloadsnelheid32 bytes/klok64 bytes/klok
Schrijfsnelheid16 bytes/cyclus32 bytes/klok
L2256k, 8-voudig256k, 8-voudig
Latentie11 balken11 balken
Bandbreedte tussen L2 en L132 bytes/klok64 bytes/klok
L1i TLB4k: 128, 4-weg
2M/4M: 8/draad
4k: 128, 4-weg
2M/4M: 8/draad
L1d TLB4k: 128, 4-weg
2M/4M: 7/draad
1G: 4, 4-weg
4k: 128, 4-weg
2M/4M: 7/draad
1G: 4, 4-weg
L2 TLB4k: 512, 4-weg4k+2M gedeeld: 1024, 8-weg

TLB L2 werd verhoogd tot 1024 vermeldingen en er verscheen ondersteuning voor pagina's van twee megabytes. De toename van TLB L2 bracht ook een toename van de associativiteit met zich mee van vier naar acht.

Wat de cache op het derde niveau betreft, is de situatie daarmee dubbelzinnig: in de nieuwe processor zou de toegangslatentie moeten toenemen als gevolg van synchronisatieverliezen, omdat de L3-cache nu werkt op natuurlijke frequentie, en niet met de frequentie van processorkernen, zoals voorheen. Hoewel de toegang nog steeds wordt uitgevoerd met 32 ​​bytes per klokcyclus. Aan de andere kant heeft Intel het over wijzigingen aan de System Agent en verbeteringen aan het Load Balancer-blok, dat nu meerdere L3-cacheverzoeken parallel kan verwerken en deze kan scheiden in data- en niet-dataverzoeken. Dit zou de doorvoer van de L3-cache moeten verhogen (sommige tests bevestigen dit, de bandbreedte van de L3-cache is iets hoger dan die van IB).

Het werkingsprincipe van de L3-cache in Haswell lijkt enigszins op Nehalem. In Nehalem bevond de L3-cache zich in Uncore en had zijn eigen vaste frequentie, terwijl in SB de L3-cache was gekoppeld aan de processorkernen - de frequentie werd gelijk aan de frequentie van de processorkernen. Hierdoor ontstonden er problemen - bijvoorbeeld toen de processorkernen op lagere frequenties werkten als er geen belasting was (en de LLC "in slaap viel"), en de GPU een hoge LLC PS nodig had. Dat wil zeggen, deze beslissing is beperkt GPU-prestaties, en bovendien was het nodig om de processorkernen uit de inactieve status te halen, alleen maar om de LLC wakker te maken. Nieuwe processor om het stroomverbruik en de efficiëntie te verbeteren GPU-werking in de bovenstaande situaties werkt de L3-cache op zijn eigen frequentie. Mobiele in plaats van desktopoplossingen zouden het meeste van deze oplossing moeten profiteren.

Het is vermeldenswaard dat cachegroottes een zekere afhankelijkheid hebben. De cache op het derde niveau is twee megabytes per core, de cache op het tweede niveau is 256 KB, wat acht keer minder is dan het L3-volume per core. Het volume van de cache op het eerste niveau is op zijn beurt acht keer kleiner dan L2 en bedraagt ​​32 KB. De uop-cache past perfect in deze afhankelijkheid: het volume van 1536 uops is 7-9 keer kleiner dan L1 (het is onmogelijk om dit precies te bepalen, aangezien de bitgrootte van een uop onbekend is en het onwaarschijnlijk is dat Intel over dit onderwerp zal uitweiden ). Op zijn beurt is de herschikkingsbuffer van 168 uops precies acht keer kleiner dan de uop-cache van 1536 uops, hoewel men op basis van de wijdverbreide toename van buffers en wachtrijen een toename van de uop-cache met 14% zou verwachten, dat wil zeggen: tot 1776. De volumes van buffers en caches hebben dus proportionele afmetingen. Dit is waarschijnlijk nog een reden waarom Intel de L1/L2-caches niet vergroot, aangezien dergelijke verhoudingen in volumes het meest effectief zijn in termen van toenemende prestaties per gebiedstoename. Het is vermeldenswaard dat processors met een ingebouwde grafische kern van topklasse een gemiddeld snel geheugen hebben met een brede toegangsbus, die alle verzoeken in het RAM-geheugen opslaat - zowel de processor als de videoversneller. De omvang van dit geheugen bedraagt ​​128 MB. Voor processorkernen: als we dit geheugen als L4-cache beschouwen, had het volume 64 megabytes moeten zijn, en met de toevoeging van een grafische kern lijkt het gebruik van 128 MB vrij logisch.

Wat de geheugencontroller betreft, deze ontving noch een toename van het aantal kanalen, noch een toename van de werkingsfrequentie van RAM, dat wil zeggen, het is nog steeds dezelfde geheugencontroller met tweekanaalstoegang op een frequentie van 1600 MHz. Deze beslissing ziet er nogal vreemd uit, omdat de overgang van SB naar IB de werkfrequentie van de ICP verhoogde van 1333 MHz naar 1600 MHz, hoewel dit slechts een overgang was van de architectuur naar een nieuw technisch proces. En nu hebben we een nieuwe architectuur, terwijl de frequentie van de geheugenbewerking op hetzelfde niveau blijft.

Dit ziet er nog vreemder uit als we ons de verbeteringen in de grafische kern herinneren - we herinneren ons immers dat zelfs de low-end HD2500-videokaart in IB de bandbreedte van 25 GB/s volledig benutte. Nu zijn zowel de CPU- als de grafische prestaties verbeterd, terwijl de geheugenbandbreedte hetzelfde blijft. Op bredere schaal vergroot de concurrent voortdurend de geheugenbandbreedte in zijn APU's, en deze is hoger dan die van Intel. Het zou logisch zijn om te verwachten dat Haswell geheugen ondersteunt met een frequentie van 1866 MHz of 2133 MHz, wat de bandbreedte zou vergroten tot respectievelijk 30 en 34 GB/s.

Als gevolg hiervan dit besluit Intel is niet helemaal duidelijk. Eerst introduceerde een concurrent ondersteuning voor sneller geheugen zonder bijzondere problemen. Ten tweede zijn de kosten van geheugenmodules die op een frequentie van 1866 MHz werken niet veel hoger dan die van 1600 MHz-modules, en bovendien verplicht niemand je om 1866 MHz-geheugen te kopen - de keuze is aan de gebruiker. Ten derde kunnen er geen problemen zijn met ondersteuning voor niet alleen 1866 MHz, maar ook 2133 MHz: sinds de aankondiging van Haswell zijn wereldrecords voor het overklokken van RAM gevestigd, dat wil zeggen dat de IKP zonder problemen sneller geheugen zou hebben "getrokken" . Ten vierde claimt de Xeon E5-2500 V2 (Ivy Bridge-EP) serverlijn ondersteuning voor 1866 MHz, maar Intel introduceert ondersteuning voor snellere geheugenstandaarden in deze markt doorgaans veel later dan desktopoplossingen.

In principe zou je kunnen aannemen dat Intel bij gebrek aan concurrentie niet “zomaar” zijn spieren hoeft op te bouwen en zijn superioriteit verder moet vergroten, maar deze veronderstelling is absoluut onjuist, aangezien het vergroten van de geheugenbandbreedte in de regel de de prestaties van de geïntegreerde grafische kern en verhoogt de processorprestaties vrijwel niet. Tegelijkertijd blijft Intel nog steeds achter bij AMD op het gebied van grafische prestaties, en de afgelopen jaren heeft Intel zelf steeds meer aandacht besteed aan grafische prestaties, en het tempo van verbetering daarvoor is veel hoger dan voor processor kern. Als we bovendien vertrouwen op de resultaten van het testen van de geïntegreerde grafische kern van de vorige generatie HD4000, waaruit bleek dat een toename van de geheugenbandbreedte leidt tot een toename van de grafische prestaties met maximaal 30%, en ook rekening houdend met het feit dat de nieuwe grafische kern HD4600 is merkbaar sneller dan de HD4000, waarna de afhankelijkheid van de grafische kernprestaties van PSP nog duidelijker wordt. De nieuwe grafische kern zal nog meer worden beperkt door de “smalle” geheugenbandbreedte. Als we alle feiten samenvatten, is de beslissing van Intel volkomen onbegrijpelijk: het bedrijf heeft zelf de grafische kaart 'gewurgd', maar een toename van de geheugenbandbreedte had de prestaties kunnen verbeteren.

Terugkomend op de cache-architectuur, laten we een gedachte in de leegte gooien: aangezien er een tussenliggende cache (mop-cache) is toegevoegd, waarom dan niet een tussenliggende datacache toevoegen met een volume van ongeveer 4-8 KB en met een lagere toegang latentie tussen de L1d-cache en actuatoren, zoals P4 (aangezien het concept van de uop-cache van Netburst is overgenomen)? Bedenk dat in P4 deze tussenliggende datacache een toegangstijd had van twee klokcycli, en één P4-cyclus was gelijk aan ongeveer 0,75 klokcycli van een conventionele processor, dat wil zeggen dat de toegangstijd ongeveer anderhalve klokcycli was. Maar misschien zien we nog eens iets soortgelijks: Intel onthoudt graag de vergeten oude dingen.

Zoals u kunt zien, richtte Intel de meeste architectonische veranderingen op het verbeteren van de prestaties van de AVX/FMA3-code: dit omvatte een toename van de cachedoorvoer, een toename van het aantal poorten en een toename van de upload-/laadsnelheid in de uitvoering pad. Als gevolg hiervan zou de belangrijkste prestatiewinst moeten komen van software die is geschreven met behulp van AVX/FMA3. Afgaande op de testresultaten lijkt het er in principe op dat dit het geval is. Droge prestaties bij dezelfde frequentie in “oude” applicaties kregen een stijging van ongeveer 10% vergeleken met de vorige core, en applicaties geschreven met de nieuwe instructiesets laten een stijging zien van meer dan 30%. De voordelen van de Haswell-architectuur zullen dus worden onthuld naarmate applicaties worden geoptimaliseerd voor nieuwe instructiesets. Dat is het moment waarop Haswells superioriteit ten opzichte van SB duidelijk zal worden.

Het belangrijkste voordeel van een aanzienlijk deel van de innovaties zal zijn mobiele apparaten. Ze zullen worden geholpen door een nieuwe benadering van de L3-cache, een ingebouwde spanningsregelaar, nieuwe slaapmodi en lagere minimale werkfrequenties van processorkernen.

Conclusie (processorgedeelte)

Wat kun je van Haswell verwachten?

Vanwege de toename van het aantal lanceerpoorten kunnen we een toename van de IPC verwachten, dus de nieuwe Haswell-architectuur zal zelfs nu met dezelfde frequentie een klein voordeel hebben ten opzichte van Sandy Bridge, zelfs met niet-geoptimaliseerde software. AVX2/FMA3-instructies vormen een basis voor de toekomst, en deze toekomst hangt af van softwareontwikkelaars: hoe sneller zij hun applicaties aanpassen, hoe sneller eindgebruiker krijgt een prestatieverbetering. Je moet echter geen groei in alles en overal verwachten: SIMD-instructies worden voornamelijk gebruikt bij het werken met multimediagegevens en bij wetenschappelijke berekeningen, dus bij deze taken mag je prestatiegroei verwachten. Het belangrijkste voordeel van het vergroten van de energie-efficiëntie zal liggen in mobiele systemen, waar dit probleem echt belangrijk is. Dit zijn dus de twee hoofdrichtingen waarin de nieuwe architectuur zich ontwikkelt Intel Haswell Het aanzienlijke voordeel is een toename van de SIMD-prestaties en een toename van de energie-efficiëntie.

Wat de toepasbaarheid van de nieuwe Haswell-processors betreft, is het de moeite waard om verschillende opties voor hun gebruik te onderzoeken: op desktopcomputers, in servers, in mobiele oplossingen, voor gamers, voor overklokkers.

Bureaublad

Stroomverbruik is geen belangrijk aspect voor een desktopprocessor, dus zelfs in Europa met zijn dure elektriciteit is het onwaarschijnlijk dat iemand alleen daarom van vorige generaties naar Haswell zal overstappen. Bovendien is de TDP van Haswell hoger dan die van IB, waardoor de besparing alleen zal optreden bij minimale belastingen. Wanneer de vraag op deze manier wordt gesteld, kan er geen twijfel over bestaan: het is het niet waard.

Vanuit prestatieoogpunt lijkt de transitie ook niet zo'n winstgevende deal: de maximale snelheidsverhoging bij processortaken zal nu niet meer dan 10% bedragen. Overstappen van Sandy Bridge of Ivy Bridge naar Haswell is alleen gerechtvaardigd als u van plan bent applicaties te gebruiken met competente ondersteuning voor FMA3 en AVX2: FMA3-ondersteuning kan bij sommige applicaties een verhoging van 30% naar 70% opleveren. Verbeteringen met betrekking tot virtualisatie en de implementatie van transactioneel geheugen zijn van weinig belang en nut voor de desktop.

Servers en werkstations

Gezien het feit dat de servers 24 uur per dag continu draaien en een vrij hoge constante belasting van de processor hebben, is het onwaarschijnlijk dat Haswell beter zal zijn dan IB in termen van puur energieverbruik, hoewel het enige winst kan opleveren in termen van prestaties per watt. Het is onwaarschijnlijk dat AVX2/FMA3-ondersteuning nuttig zal zijn op servers, maar op werkstations die betrokken zijn bij wetenschappelijke berekeningen zal deze ondersteuning zeer, zeer nuttig zijn - maar alleen als de nieuwe instructies worden ondersteund in de gebruikte software. Transactioneel geheugen is een behoorlijk nuttig iets, maar ook niet altijd: het kan een toename opleveren van programma's met meerdere threads en van programma's die met databases werken, maar software-optimalisatie is ook noodzakelijk voor het effectieve gebruik ervan.

Maar alle verbeteringen die verband houden met virtualisatie zullen hoogstwaarschijnlijk een goed effect hebben, aangezien virtuele omgevingen nu zeer actief worden gebruikt en de meeste fysieke servers meerdere virtuele hebben. Bovendien wordt de prevalentie van virtualisatie niet alleen verklaard door een merkbare kostenverlaging virtuele omgeving qua prestaties, maar ook economische efficiëntie: Het bevatten van veel virtuele servers op één fysieke server is goedkoper en maakt een efficiënter gebruik van bronnen mogelijk, inclusief processorbronnen.

De verschijning van Haswell moet dus positief worden onthaald op de servermarkt. Na het veranderen van servers op basis van Xeon E3-1200v1 en Xeon E3-1200v2 naar servers met Xeon E3-1200v3 (Haswell), krijgt u direct een verhoging van de efficiëntie en na het optimaliseren van de software voor AVX2/FMA3 en transactioneel geheugen zullen de prestaties toenemen zelfs meer.

Mobiele oplossingen

Het belangrijkste voordeel van de introductie van Haswell in het mobiele segment ligt uiteraard op het gebied van een verbeterd stroomverbruik. Afgaande op de presentaties van Intel en de testresultaten die al op internet verschijnen, is er echt een effect, en wel merkbaar.

In termen van pure prestaties lijkt de overstap van Ivy Bridge naar Haswell niet zo'n redelijke onderneming: de nettowinst zou relatief klein moeten zijn, en de verbeteringen in de individuele componenten(dezelfde virtualisatie of multimedia-instructies) zullen de gebruiker van een mobiel systeem waarschijnlijk niet veel opleveren, aangezien laptops en tablets zelden worden gebruikt voor het creëren van omgevingen of complexe wetenschappelijke berekeningen.

Over het algemeen mag je op het gebied van processorprestaties niet veel verwachten, maar mobiele systemen zullen zeker een verhoging van de prestaties van de grafische kern vereisen. Daarom, als problemen met het energieverbruik niet van cruciaal belang voor u zijn, moet u niet serieus overwegen om te upgraden van Sandy Bridge of Ivy Bridge. Het is beter om de bestaande systemen te blijven gebruiken totdat ze volledig verouderd zijn. Werk je vaak aan batterijen, dan kan Haswell zorgen voor een aanzienlijke verlenging van de levensduur van de batterij.

Gamers

De kwestie van het energieverbruik onder gamers in Rusland is in de regel geen probleem - en waarom zou dat wel het geval zijn als gaming-videokaarten 200 watt of meer verbruiken? Gamers hebben ook geen virtualisatie en transactioneel geheugen nodig. Het is geen feit dat er specifiek vraag is naar AVX2/FMA3 voor games, hoewel ze nuttig kunnen zijn bij natuurkundige berekeningen. Wat overblijft zijn de pure prestaties van de processor, en hier is het verschil met dezelfde Ivy Bridge klein. Hierdoor lijkt voor deze categorie gebruikers ook een directe overstap van SB of IB naar Haswell niet relevant. Maar het is logisch om over te schakelen naar nieuwe processors van Nehalem en Lynifield, en nog meer Conroe.

Overklokkers

Voor overklokkers kan de nieuwe processor (maar natuurlijk alleen de "ontgrendelde" K-versie) interessant zijn, vooral als het mogelijk is om hem te "scalpen", dat wil zeggen, de metalen kap te verwijderen en het kristal direct af te koelen. Gebeurt dit niet, dan zien de overklokresultaten er nog bescheidener uit dan die van Ivy Bridge. Bovendien kan de geïntegreerde spanningsregelaar een beperkende factor zijn. Lees hier meer over

Wij vertalen... Vertalen Chinees (vereenvoudigd) Chinees (traditioneel) Engels Frans Duits Italiaans Portugees Russisch Spaans Turks

Helaas kunnen we deze informatie momenteel niet vertalen. Probeer het later opnieuw.

Invoering

Software die is ontworpen voor communicatie en gegevensoverdracht vereist zeer hoge prestaties omdat deze enorme aantallen kleine gegevenspakketten kan overdragen. Een van de uitdagingen bij het ontwikkelen van toepassingen voor netwerkfunctievirtualisatie (NFV) is dat u virtualisatie zoveel mogelijk moet gebruiken, maar waar nodig ook de toepassing moet optimaliseren voor de hardware die u gebruikt.

In dit artikel belicht ik drie kenmerken van Intel®-processors die nuttig zijn voor het optimaliseren van de prestaties van NFV-applicaties: Cache Allocation Technologies (CAT), Intel® Advanced Vector Extensions 2 (Intel® AVX2) voor vectorverwerking en Intel® Uitbreidingen voor transactionele synchronisatie (Intel® TSX).

Het probleem van prioriteitsinversie oplossen met behulp van CAT

Wanneer een functie met lage prioriteit bronnen steelt van een functie met hoge prioriteit, noemen we dit ‘prioriteitinversie’.

Niet alle virtuele functies zijn gelijk gemaakt. De routeringsfunctie is bijvoorbeeld gevoelig voor verwerkingstijd en prestaties, terwijl de mediacoderingsfunctie niet zo belangrijk is. Het is heel goed mogelijk dat deze functie periodiek pakketten verliest zonder de gebruikerservaring te beïnvloeden, aangezien niemand de afname van de videoframesnelheid van 20 naar 19 frames per seconde toch zal opmerken.

De standaardcache is zo ontworpen dat de meest actieve consument deze ontvangt het grootste deel. Maar de meest actieve consument is niet altijd de belangrijkste toepassing. Sterker nog, het tegenovergestelde is vaak waar. Toepassingen met hoge prioriteit worden geoptimaliseerd en hun datavolume wordt teruggebracht tot de kleinst mogelijke set. Toepassingen met een lage prioriteit vergen niet zoveel optimalisatie-inspanningen en verbruiken dus doorgaans meer geheugen. Sommige van deze functies verbruiken veel geheugen. Bijvoorbeeld de pakketweergavefunctie voor statistische analyse heeft een lage prioriteit, maar verbruikt veel geheugen en gebruikt de cache zwaar.

Ontwikkelaars gaan er vaak van uit dat als ze één applicatie met hoge prioriteit in een specifieke kernel plaatsen, de applicatie daar veilig zal zijn en niet zal worden beïnvloed door applicaties met lage prioriteit. Helaas is dit niet het geval. Elke core heeft zijn eigen Level 1-cache (L1, de snelste maar kleinste cache) en een Level 2-cache (L2, iets groter maar langzamer). Er zijn aparte L1-cachegebieden voor gegevens (L1D) en programmacode (L1I, "I" staat voor instructies). De cache op het derde niveau (de langzaamste) is gemeenschappelijk voor alle processorkernen. Op Intel®-processorarchitecturen tot en met de Broadwell-familie is de L3-cache volledig inclusief, wat betekent dat deze alles bevat wat zich in de L1- en L2-caches bevindt. Vanwege de manier waarop de inclusiecache werkt, wordt iets dat uit de cache van het derde niveau wordt verwijderd, ook verwijderd uit de overeenkomstige caches van het eerste en tweede niveau. Dit betekent dat een applicatie met lage prioriteit die ruimte in de L3-cache nodig heeft, gegevens uit de L1- en L2-caches van een applicatie met hoge prioriteit kan verplaatsen, zelfs als deze op een andere core draait.

In het verleden was er een aanpak om dit probleem te omzeilen, genaamd ‘opwarming’. Wanneer de toegang tot de L3-cache concurreert, is de "winnaar" de applicatie die het vaakst toegang heeft tot het geheugen. Daarom is de oplossing om een ​​functie met hoge prioriteit voortdurend toegang te geven tot de cache, zelfs als deze niet actief is. Dit is geen erg elegante oplossing, maar vaak was deze zeer acceptabel en tot voor kort waren er geen alternatieven. Maar nu is er een alternatief: de Intel® Xeon® E5 v3-processorfamilie introduceert Cache Allocation Technology (CAT), waarmee u cache kunt toewijzen op basis van applicaties en serviceklassen.

Impact van prioriteitsomkering

Om de impact van prioriteitsinversie aan te tonen, heb ik een eenvoudige microbench geschreven die periodiek een gekoppelde lijsttraversal uitvoert op een thread met hoge prioriteit, terwijl de thread met lage prioriteit voortdurend de geheugenkopieerfunctie uitvoert. Deze threads zijn toegewezen aan verschillende kernen van dezelfde processor. Dit simuleert het slechtste scenario voor bronconflicten: de kopieerbewerking vereist veel geheugen, dus het is waarschijnlijk dat de belangrijkste thread die toegang heeft tot de lijst wordt verstoord.

Hier is de code in C.

// Bouw een gekoppelde lijst van grootte N met een pseudo-willekeurig patroon void init_pool(list_item *head, int N, int A, int B) ( int C = B; list_item *current = head; for (int i = 0; i< N - 1; i++) { current->vinkje = 0;< N - 1; i++) { current = current->C = (A*C + B) % N;< 50; j++) { list_item* current = head; #if WARMUP_ON while(in_copy) warmup_list(head, N); #else while(in_copy) spin_sleep(1); #endif i1 = __rdtsc(); for(int i = 0; i < N; i++) { current->huidige->volgende = (lijst_item*)&(hoofd[C]);

huidige = huidige->volgende;

  • ) ) // Raak de eerste N elementen aan in een gekoppelde lijst void warmup_list(list_item* current, int N) ( bool write = (N > POOL_SIZE_L2_LINES) ? true: false; for(int i = 0; i
  • volgende; if (schrijven) huidige->vinkje++;
  • ) ) void Measure(list_item* head, int N) ( unsigned __long long i1, i2, avg = 0; for (int j = 0; j

vinkje++;

De basisindicator is de roodbruine lijn, deze komt overeen met een programma zonder kopieerthread in het geheugen, dat wil zeggen zonder twist. De blauwe lijn toont de gevolgen van prioriteitsomkering: dankzij de geheugenkopieerfunctie duurt het openen van de lijst aanzienlijk langer. De impact is vooral groot als de lijst in een snelle L1- of L2-cache past. Als de lijst zo groot is dat deze niet in de cache van het derde niveau past, is de impact verwaarloosbaar.

De groene lijn toont het opwarmeffect wanneer de geheugenkopieerfunctie actief is: de toegangstijd neemt sterk af en nadert de basiswaarde.

Als we CAT inschakelen en delen van de L3-cache aan elke core toewijzen voor exclusief gebruik, zullen de resultaten zeer dicht bij de basislijn liggen (te dichtbij om in het diagram weer te geven), wat ons doel is.

InschakelenKAT

Zorg er allereerst voor dat het platform CAT ondersteunt. U kunt de CPUID-instructie gebruiken door adresblad 7 te controleren, subblad 0 toegevoegd om de CAT-beschikbaarheid aan te geven.

Als CAT is ingeschakeld en ondersteund, zijn er MSR-registers die kunnen worden geprogrammeerd om verschillende delen van de L3-cache aan verschillende cores toe te wijzen.

Elke processorsocket heeft MSR-registers IA32_L3_MASKn (bijvoorbeeld 0xc90, 0xc91, 0xc92, 0xc93). Deze registers slaan een bitmasker op dat aangeeft hoeveel L3-cache moet worden toegewezen voor elke serviceklasse (COS). 0xc90 slaat de cachetoewijzing voor COS0 op, 0xc91 voor COS1, enz.

Dit diagram toont bijvoorbeeld enkele mogelijke bitmaskers voor verschillende serviceklassen om aan te tonen hoe de cache kan worden gesplitst: COS0 krijgt de helft, COS1 krijgt een kwart, en COS2 en COS3 krijgen elk een achtste. 0xc90 zou bijvoorbeeld 11110000 bevatten en 0xc93 zou 00000001 bevatten.

Het Direct Data Input/Output (DDIO)-algoritme heeft een eigen verborgen bitmasker waarmee de gegevensstroom van snelle PCIe-apparaten zoals netwerkadapters naar specifieke gebieden van de L3-cache kan worden overgedragen. Er bestaat een kans op conflicten met de serviceklassen die worden gedefinieerd, dus hiermee moet rekening worden gehouden bij het maken van NFV-toepassingen met hoge doorvoer. Gebruik om cache-missers te detecteren om te testen op conflicten. Sommige BIOS hebben een instelling waarmee u het DDIO-masker kunt bekijken en wijzigen.

Elke kern heeft een MSR-register IA32_PQR_ASSOC (0xc8f) dat aangeeft welke serviceklasse van toepassing is op die kern. De standaard serviceklasse is 0, wat betekent dat het bitmasker in MSR 0xc90 wordt gebruikt. (Standaard is bitmask 0xc90 ingesteld op 1 om maximale cachebeschikbaarheid te garanderen.)

Het meest eenvoudig model met behulp van KAT in NFV, het toewijzen van L3-cache-chunks aan verschillende kernen met behulp van geïsoleerde bitmaskers, en vervolgens het toewijzen van threads of virtuele machines aan de kernen. Als virtuele machines dit vereisen algemene toegang om de kernels uit te voeren, is het ook mogelijk om een ​​triviale oplossing te maken voor de OS-planner, een cachemasker toe te voegen aan de threads waarin de virtuele machines draaien, en dit dynamisch in te schakelen bij elke planningsgebeurtenis.

Er is er nog één ongebruikelijke manier CAT gebruiken om gegevens in de cache te vergrendelen. Maak eerst een actief cachemasker en open de gegevens in het geheugen om deze in de L3-cache te laden. Schakel vervolgens de bits uit die dit deel van de L3-cache vertegenwoordigen in elk CAT-bitmasker dat in de toekomst wordt gebruikt. De gegevens worden vergrendeld in de cache van het derde niveau, omdat het nu onmogelijk is om ze daar vandaan te verwijderen (behalve DDIO). In een NFV-toepassing maakt dit mechanisme het mogelijk dat middelgrote opzoektabellen voor routering en pakketparsing in de L3-cache worden vergrendeld om permanente toegang te garanderen.

Intel AVX2 gebruiken voor vectorverwerking

Met SIMD-instructies (één instructie, veel data) kunt u dezelfde bewerking tegelijkertijd op verschillende gegevensstukken uitvoeren. Deze instructies worden vaak gebruikt om drijvende-kommaberekeningen te versnellen, maar er zijn ook gehele, Booleaanse en dataversies van de instructies beschikbaar.

Afhankelijk van de processor die u gebruikt, zijn er verschillende families SIMD-instructies tot uw beschikking. De grootte van de vector die door de opdrachten wordt verwerkt, zal ook verschillen:

  • SSE ondersteunt 128-bits vectoren.
  • Intel AVX2 ondersteunt gehele instructies voor 256-bit vectoren en implementeert instructies voor verzamelbewerkingen.
  • AVX3-extensies op toekomstige Intel®-architecturen zullen 512-bit vectoren ondersteunen.

Eén 128-bits vector kan worden gebruikt voor twee 64-bits variabelen, vier 32-bits variabelen of acht 16-bits variabelen (afhankelijk van de gebruikte SIMD-instructies). Past in grotere vectoren meer elementen gegevens. Gezien de hoge doorvoervereisten van NFV-applicaties moet u altijd de krachtigste SIMD-instructies (en bijbehorende hardware) gebruiken, momenteel Intel AVX2.

SIMD-instructies worden meestal gebruikt om dezelfde bewerking uit te voeren op een vector van waarden, zoals weergegeven in de afbeelding. Hier is de creatiebewerking X1opY1 tot X4opY4 een enkele instructie, waarbij tegelijkertijd de gegevensitems X1 tot X4 en Y1 tot Y4 worden verwerkt. In dit voorbeeld zal de versnelling vier keer sneller zijn dan bij normale (scalaire) uitvoering, omdat er vier bewerkingen tegelijkertijd worden verwerkt. De versnelling kan zo groot zijn als de SIMD-vector groot is. NFV-applicaties verwerken vaak meerdere pakketstromen op dezelfde manier, dus SIMD-instructies bieden een natuurlijke manier om de prestaties te optimaliseren.

Voor eenvoudige lussen zal de compiler vaak automatisch bewerkingen vectoriseren door gebruik te maken van de nieuwste SIMD-instructies die beschikbaar zijn voor een bepaalde CPU (als u de juiste compilervlaggen gebruikt). U kunt uw code optimaliseren om de modernste instructieset te gebruiken die tijdens runtime door de hardware wordt ondersteund, of u kunt de code compileren voor een specifieke doelarchitectuur.

SIMD-bewerkingen ondersteunen ook geheugenbelasting, waarbij maximaal 32 bytes (256 bits) van het geheugen naar een register worden gekopieerd. Hierdoor kunnen gegevens worden overgedragen tussen geheugen en registers, waarbij de cache wordt omzeild, en kunnen gegevens van verschillende locaties in het geheugen worden verzameld. Je kunt het ook doen diverse operaties met vectoren (gegevens binnen één register wijzigen) en vectoren opslaan (tot 32 bytes van een register naar geheugen schrijven).

Memcpy en memmov - op grote schaal bekende voorbeelden kernroutines die vanaf het begin met SIMD-instructies werden geïmplementeerd omdat de REP MOV-instructie te traag was. De memcpy-code werd regelmatig bijgewerkt in de systeembibliotheken om deze optimaal te kunnen gebruiken laatste instructies SIMD. De CPUID-managertabel werd gebruikt om informatie te verkrijgen over welke van de nieuwste versies beschikbaar was voor gebruik. Tegelijkertijd loopt de implementatie van nieuwe generaties SIMD-instructies in bibliotheken doorgaans vertraging op.

De volgende memcpy-routine, die een eenvoudige lus gebruikt, is bijvoorbeeld gebaseerd op ingebouwde functies (in plaats van bibliotheekcode), zodat de compiler deze kan optimaliseren voor nieuwste versie SIMD-instructies.

Mm256_store_si256((__m256i*) (dest++), (__m256i*) (src++))

Het compileert naar de volgende assemblagecode en presteert tweemaal zo goed als recente bibliotheken.

C5 fd 6f 04 04 vmovdqa (%rsp,%rax,1),%ymm0 c5 fd 7f 84 04 00 00 vmovdqa %ymm0.0x10000(%rsp,%rax,1)

Assemblagecode van een inline-functie kopieert 32 bytes (256 bits) met behulp van de nieuwste beschikbare SIMD-instructies, terwijl bibliotheekcode die SSE gebruikt slechts 16 bytes (128 bits) kopieert.

NFV-applicaties moeten vaak een verzamelbewerking uitvoeren door gegevens van meerdere locaties in te laden verschillende plaatsen niet-opeenvolgende herinneringen. Bijvoorbeeld, netwerkadapter kan inkomende pakketten in de cache opslaan met behulp van DDIO. Een NFV-toepassing heeft mogelijk alleen toegang nodig tot het bestemmings-IP-gedeelte van de netwerkheader. Met de verzamelbewerking kan de applicatie tegelijkertijd gegevens verzamelen voor 8 pakketten.

Het is niet nodig om inline-functies of assemblagecode te gebruiken voor de verzamelbewerking, omdat de compiler de code kan vectoriseren, zoals voor het hieronder getoonde programma, op basis van een test waarbij getallen van pseudo-willekeurige locaties in het geheugen worden opgeteld.

Int een; int b; voor (i = 0; ik< 1024; i++) a[i] = i; for (i = 0; i < 64; i++) b[i] = (i*1051) % 1024; for (i = 0; i < 64; i++) sum += a]; // This line is vectorized using gather.

Laatste regel is gecompileerd in de volgende assembly-code.

C5 fe 6f 40 80 vmovdqu -0x80(%rax),%ymm0 c5 ed fe f3 vpaddd %ymm3,%ymm2,%ymm6 c5 e5 ef db vpxor %ymm3,%ymm3,%ymm3 c5 d5 76 ed vpcmpeqd %ymm5,% ymm5,%ymm5 c4 e2 55 90 3c a0 vpgatherdd %ymm5,(%rax,%ymm4,4),%ymm7

Een enkele verzamelbewerking is aanzienlijk sneller dan een reeks downloads, maar dit heeft alleen zin als de gegevens al in de cache staan. Anders moeten de gegevens uit het geheugen worden opgehaald, wat honderden of duizenden CPU-cycli vereist. Als de gegevens zich in de cache bevinden, is een versnelling van 10x mogelijk
(d.w.z. 1000%). Als de gegevens niet in de cache staan, is de versnelling slechts 5%.

Bij het gebruik van dit soort technieken is het belangrijk om de applicatie te analyseren om knelpunten te identificeren en om te begrijpen of de applicatie te veel tijd besteedt aan het kopiëren of verzamelen van gegevens. Je kunt gebruiken.

Een andere handige functie voor NFV in Intel AVX2 en andere SIMD-bewerkingen is bitgewijs en logische bewerkingen. Ze worden gebruikt om niet-standaard coderingscodes te versnellen, en bitcontrole is handig voor ASN.1-ontwikkelaars en wordt vaak gebruikt voor gegevens in de telecommunicatie. Intel AVX2 kan worden gebruikt voor snellere stringvergelijkingen met behulp van geavanceerde algoritmen zoals MPSSEF.

Intel AVX2-extensies werken goed virtuele machines. De prestaties zijn hetzelfde en er zijn geen foutieve uitgangen van de virtuele machine.

Gebruik Intel TSX voor hogere schaalbaarheid

Een van de uitdagingen van parallelle programma's is het vermijden van gegevensconflicten, die kunnen optreden wanneer meerdere threads hetzelfde gegevensitem proberen te gebruiken en, ten minste, probeert één thread de gegevens te wijzigen. Om onvoorspelbare frequentieresultaten te voorkomen, wordt vergrendeling gebruikt: de eerste thread die een gegevensitem gebruikt, blokkeert het van andere threads totdat het werk is voltooid. Maar deze aanpak is mogelijk niet effectief als er regelmatig concurrerende sloten zijn of als de sloten een groter geheugengebied beheren dan feitelijk nodig is.

Intel Transactional Synchronization Extensions (TSX) bieden processorinstructies om vergrendelingen te omzeilen tijdens transacties in het hardwaregeheugen. Dit helpt een hogere schaalbaarheid te bereiken. De manier waarop het werkt is dat wanneer een programma een sectie binnengaat die Intel TSX gebruikt om geheugenlocaties te beschermen, alle pogingen tot geheugentoegang worden geregistreerd en aan het einde van de beveiligde sessie worden ze automatisch vastgelegd of automatisch teruggedraaid. Er wordt een rollback uitgevoerd als er tijdens het uitvoeren vanuit een andere thread een geheugentoegangsconflict is opgetreden dat een race condition zou kunnen veroorzaken (bijvoorbeeld schrijven naar een locatie vanwaar een andere transactie gegevens leest). Een rollback kan ook plaatsvinden als het geheugentoegangsrecord te groot wordt voor de Intel TSX-implementatie, als er een I/O-instructie of systeemaanroep plaatsvindt, of als er uitzonderingen optreden of virtuele machines worden afgesloten. I/O-oproepen worden teruggedraaid als ze niet speculatief kunnen worden uitgevoerd vanwege externe interferentie. Een systeemaanroep is een zeer complexe bewerking waarbij belsignalen en geheugenhandvatten worden gewijzigd en die zeer moeilijk ongedaan kan worden gemaakt.

Een veelvoorkomend gebruiksscenario voor Intel TSX is toegangscontrole op een hashtabel. Normaal gesproken wordt een cachetabelvergrendeling gebruikt om toegang tot de cachetabel te garanderen, maar dit verhoogt de latentie voor threads die strijden om toegang. Het vergrendelen is vaak te grof: de hele tabel is vergrendeld, hoewel het uiterst zelden voorkomt dat threads proberen toegang te krijgen tot dezelfde elementen. Naarmate het aantal cores (en threads) toeneemt, belemmert grove vergrendeling de schaalbaarheid.

Zoals in het onderstaande diagram te zien is, kan grove blokkering ervoor zorgen dat de ene thread wacht tot een andere thread de hashtabel vrijgeeft, ook al gebruiken de threads verschillende elementen. Door het gebruik van Intel TSX kunnen beide threads werken, hun resultaten worden geregistreerd nadat het einde van de transactie succesvol is bereikt. De hardware detecteert conflicten direct en breekt inbreukmakende transacties af. Bij gebruik van Intel TSX hoeft thread 2 niet te wachten, beide threads worden veel eerder uitgevoerd. Het vergrendelen op hashtabellen wordt omgezet in nauwkeurig afgestemde vergrendeling, wat resulteert in verbeterde prestaties. Intel TSX ondersteunt de nauwkeurigheid van het volgen van conflicten op het niveau van een enkele cacheregel (64 bytes).

Intel TSX gebruikt twee programmeerinterfaces om delen van de code te specificeren om transacties uit te voeren.

  • Hardware Lock Bypass (HLE) is achterwaarts compatibel en kan eenvoudig worden gebruikt om de schaalbaarheid te verbeteren zonder grote wijzigingen aan te brengen in de slotbibliotheek. HLE heeft nu voorvoegsels voor geblokkeerde instructies. Het HLE-instructievoorvoegsel geeft aan dat de hardware de status van het slot moet controleren zonder het te verwerven. In het bovenstaande voorbeeld zal het uitvoeren van de beschreven stappen ervoor zorgen dat toegang tot andere hashtabelgegevens niet langer resulteert in een vergrendeling, tenzij er sprake is van conflicterende schrijftoegang tot een waarde die is opgeslagen in de hashtabel. Als gevolg hiervan wordt de toegang geparalleliseerd, waardoor de schaalbaarheid over alle vier de threads wordt vergroot.
  • De RTM-interface bevat expliciete instructies om transacties te starten (XBEGIN), vast te leggen (XEND), te annuleren (XABORT) en de status (XTEST) te testen. Deze instructies bieden sluitbibliotheken een flexibelere manier om het omzeilen van sloten te implementeren. Dankzij de RTM-interface kunnen bibliotheken flexibele algoritmen voor het annuleren van transacties gebruiken. Deze functie kan worden gebruikt om de prestaties van Intel TSX te verbeteren met behulp van optimistische herstart van transacties, terugdraaien van transacties en andere geavanceerde technieken. Met behulp van de CPUID-instructie kan de bibliotheek terugvallen op een oudere implementatie van niet-RTM-vergrendelingen, terwijl de achterwaartse compatibiliteit met code op gebruikersniveau behouden blijft.
  • Voor meer informatie over HLE en RTM raad ik aan de volgende Intel Developer Zone-artikelen te lezen.

Net als het optimaliseren van synchronisatieprimitieven met behulp van HLE of RTM, kunnen NFV-dataplanfuncties profiteren van Intel TSX bij gebruik van de Data Plane Development Kit (DPDK).

Bij het gebruik van Intel TSX ligt de grootste uitdaging niet in het implementeren van deze extensies, maar in het evalueren en bepalen van hun prestaties. Er zijn prestatietellers die kunnen worden gebruikt in Linux* perf-programma's en om het succes van de Intel TSX-uitvoering te meten (aantal uitgevoerde lussen en aantal afgebroken lussen).

Intel TSX moet met voorzichtigheid worden gebruikt en zorgvuldig worden getest in NFV-toepassingen, omdat I/O-bewerkingen in een gebied dat wordt beschermd door Intel TSX altijd rollback met zich meebrengen, en veel NFV-functies veel I/O-bewerkingen gebruiken. Gelijktijdige vergrendeling moet worden vermeden in NFV-toepassingen. Als vergrendelingen nodig zijn, kunnen algoritmen voor het omzeilen van vergrendelingen de schaalbaarheid helpen verbeteren.

Over de auteur

Alexander Komarov werkt als applicatie-ontwikkelingsingenieur bij de Software and Services Group van Intel Corporation. De afgelopen tien jaar bestond Alexanders belangrijkste werk uit het optimaliseren van code om de hoogste prestaties te bereiken op bestaande en toekomstige systemen. serverplatforms Intel. Dit werk omvat het gebruik van Intel-softwareontwikkelingstools zoals profilers, compilers, bibliotheken, de nieuwste instructiesets, nanoarchitectuur en architecturale verbeteringen aan de nieuwste x86-processors en chipsets.

Meer informatie

Zie de volgende video's voor meer informatie over NFV.