vad det är och integration via Intel TSX –

Ett av de största problemen med flerkärniga processorer. Systemen som våra datorer använder är att de är baserade på von Neumann-modellen, som går ut på att det bara finns ett delat minne. När antalet exekveringsenheter, kärnor, trådar och andra element som körs parallellt i CPU:n ökar, ökar det. Fler och fler konflikter uppstår mellan dem. Inte bara när det gäller tillgång till data, utan också till information som finns i olika minnesadresser, och därför till värdena för variabler som används av program. Det finns många sätt att undvika dessa konflikter, ett av dem är transaktionsminne, som vi kommer att beskriva i den här artikeln.

Introduktion till problemet

När ett program skrivs kodas det i en serie instruktioner som ser ut att exekveras sekventiellt. Men redan med parallellism av instruktioner med en kärna kan olika exekveringsenheter komma in i mitten av exekveringen. Till detta måste vi komma ihåg att exekvering i oordning lägger till komplexitet eftersom minne och dataåtkomst är kaotisk under körning.

Med ett stort antal förfrågningar är det konkurrens om tillgång till samma minne. Detta gör att förfrågningar dröjer sig kvar längre och längre, vilket ökar minneslatensen från CPU:n när vissa instruktioner utförs och påverkar genomströmningen. För detta finns det mekanismer som maximalt undviker dessa konflikter vid åtkomst till minne, så att processer får tillgång till minne från beställt minne. Detta undviker konflikter när data ändras i dess hierarki, och minskar också konfliktproblem och, som ett resultat, åtkomstlatens.

Det enklaste sättet att åstadkomma detta är att använda lås, som är bitar av kod där vi noterar att de inte bör exekveras samtidigt av olika CPU-trådar. Det vill säga att endast en kärna kan vara ansvarig för denna del av koden. Så vi har blockerat resten av kärnorna, och resten kommer att kunna börja köras först när instruktionen som avslutar låset nås. Vad händer när koden som allokerats till alla utom en kärna är klar.

Vad är transaktionsminne?

Färg Código binario

Ett sätt att undvika problemen som beskrivs i föregående avsnitt är att använda transaktionsminne. Det är inte en typ av minne eller lagring, så vi pratar inte om ren hårdvara. Dess ursprung är i databastransaktioner, det är en typ av instruktioner som körs i Load-Store-moduler.

Transaktionssystemet i processorn fungerar enligt följande:

  1. En kopia görs av en bit minne som flera kärnor vill komma åt, en för varje instans.
  2. Varje kopia ändrar sin privata kopia oberoende av de andra privata kopiorna.
  3. Om uppgifterna ändrades i den privata kopian, och inte i resten, kopieras ändringen också till resten av de privata kopiorna.
  4. Om två instanser gör ändringar i samma data samtidigt, och detta skapar en inkonsekvens i datan, raderas båda privata kopiorna. och privata kopior av resten kopieras

Den fjärde punkten är viktig, eftersom det är i denna del som det blir tydligt att det är nödvändigt att serialisera denna del av koden. Detta innebär att resten av instanserna slutar ändra sina personliga kopior, och endast en av instanserna gör ändringar. När det är slut kopieras ändringarna till resten av de privata kopiorna. När en kod som markerats som transaktionell redan har utförts och alla privata kopior innehåller samma information, kopieras resultatet till lämpliga cache-rader och minnesadresser.

Intel TSX transaktionsminnessystem

Memoria Transaccional utrustning

Förkortning TSX, Transaktionssynkroniseringstillägg, hänvisar till en serie ytterligare instruktioner för x86 ISA som är utformade för att lägga till stöd för transaktionsminne till en Intel-processor. Därför är det en serie instruktioner och relaterade mekanismer som gör att vissa delar av koden kan avgränsas som transaktionella, och Intel-processorn kan utföra den process som vi diskuterade i föregående process. Men i det här fallet är Intels implementering lite mer komplicerad. Eftersom, som vi såg tidigare, i händelse av en konflikt mellan två data, avbryts hela processen av en av de körande instanserna.

Dess implementering i hårdvara uppnås genom att lägga till en ny typ av cache, kallad en transaktionscache, där olika operationer utförs på olika data. Var medveten om att transaktionsminne tenderar att minska minneskonflikt. Även om cacher stöder fler förfrågningar än RAM i allmänhet, är de också begränsade, särskilt på nivåerna längst bort från kärnorna. Allt detta kombineras med användningen av internminne och privata register, som tjänar till att stödja privata kopior som utförs av olika kärnor.

Intel TSX-instruktioner är inte en komplex uppsättning, vi har å ena sidan en XBEGIN-instruktion som markerar oss när en transaktionsdel av minnet börjar, en XEND-instruktion som markerar slutet och en XABORT-instruktion som markerar en processutgång. när en exceptionell situation inträffar.

Slutet på Intel TSX instruktioner?

Intel TSX Avbryt

Dagens CPU-styrenheter är faktiskt fullfjädrade mikrokontroller, vilket innebär att hur instruktionerna avkodas och listan med instruktioner kan uppdateras. Intel gjorde den första implementeringen av Haswell-arkitekturen, och hittills har den varit kvar i Intel-processorer. Eftersom det nyligen inaktiverades via firmware på Intels egna 6:e, 7:e och 8:e generationens kärnor.

Då och då utför Intel fjärruppdateringar av sina CPU:er, som görs genom Intel Management Engine som vi har på vår PC, utan vår vetskap. Dessa är vanligtvis inte vanliga, men kan innebära att optimera utförandet av vissa instruktioner, eller till och med eliminera stöd för andra. Elimineringen av Intel TSX i Intel Core beror på det faktum att med de senaste ändringarna av kontrollenhetens interna mikrokod innebär detta en programvarukonflikt, vilket innebär att CPU:n inte fungerar korrekt.

Men den verkliga anledningen är att Intel TSX tillåter skadlig kod att köras under radarn av klassiska säkerhetssystem, särskilt ett som påverkar operativsystemet. Eftersom privata kopior inte matchar användarens miljö eller operativsystem. Så detta är fortfarande ett problem som liknar det med spekulativ avrättning.