Transaktiomuisti: mitä se on ja integrointi Intel TSX: n kautta

Kaupallinen muisti

Hyvä osa tietokoneidemme tehosta perustuu työn jakamiseen, jossa useat elementit jakavat osan koodista toimiakseen sen kanssa. Mutta joskus tietojen ja ohjeiden saatavuudessa on ristiriitoja, joista tulee suorituskykyongelma. Yksi tapa korjata se on transaktiomuisti.

Yksi suurimmista monisydämen ongelmista prosessori tietokoneiden käyttämien järjestelmien perustana ovat Von Neumann -malli, toisin sanoen jaettua muistia on vain yksi. Kun suoritinyksiköiden, ytimien, ketjujen ja muiden CPU: ssa rinnakkain toimivien elementtien määrä kasvaa. Niiden välille syntyy yhä enemmän konflikteja. Ei vain tietojen, vaan myös eri muistiosoitteiden sisältämien tietojen ja siten ohjelmien käyttämien muuttujien arvon suhteen. On olemassa monia menetelmiä näiden konfliktien välttämiseksi, yksi niistä on transaktiomuisti, jonka aiomme kuvata tässä artikkelissa.

Johdanto ongelmaan

Cerrojos

Kun kirjoitat ohjelmaa, se koodataan sarjaan käskyjä, jotka suoritetaan ilmeisesti peräkkäin. Mutta jo samalla kun ohjeet ovat rinnakkain yhden ytimen kanssa keskellä suoritusta, eri suoritusyksiköt voivat tulla sisään. Tähän on otettava huomioon, että epäkunnossa oleva toteutus lisää sen monimutkaisuuden, että pääsy muistiin ja dataan ajon aikana tapahtuu häiriötetyllä tavalla.

Kun pyyntöjä on paljon, se lopulta luo kilpailun päästäksesi samaan muistiin. Tämä aiheuttaa pyyntöjen viivästymisen yhä pidempään, mikä lisää muistin viivettä CPU: n kanssa tietyissä ohjeissa ja vaikuttaa kaistanleveyteen. Tätä varten on olemassa mekanismeja, jotka välttävät nämä ristiriidat muistin käytössä niin paljon kuin mahdollista, niin että prosessit pääsevät muistiin järjestetystä muistista. Tämä välttää ristiriitoja, kun muokkaat tietoja sen hierarkiassa, sekä vähentää kilpailuongelmia ja siten käyttää viiveitä.

Yksinkertaisin tapa saavuttaa tämä on lukot, jotka ovat koodin osia, joissa merkitsemme, että niitä ei tarvitse suorittaa samanaikaisesti suorittimen eri säikeillä. Toisin sanoen vain yksi sen ydin voi olla vastuussa koodin tästä osasta. Joten olemme tehneet lukituksen muille ytimille ja loput pääsevät suorittamaan vasta, kun lukituksen päättävä käsky on saavutettu. Mikä tapahtuu, kun koodin osa, joka on eristetty kaikkiin ytimiin lukuun ottamatta yhtä, on valmis.

Mikä on transaktiomuisti?

Código binario -väri

Yksi tapa välttää edellisessä osassa kuvatut ongelmat on käyttää transaktiomuistia. Mikä ei ole eräänlainen muisti tai tallennustila, joten emme puhu puhtaasta laitteistosta. Sen alkuperä on tietokantojen tapahtumissa, se on eräänlainen käsky, joka suoritetaan Load-Store-yksiköissä.

Prosessorin tapahtumajärjestelmä toimii seuraavasti:

  1. Luo kopio muistin osasta, jota useat ytimet haluavat käyttää, yksi kullekin esiintymälle.
  2. Kukin esiintymä muokkaa yksityistä kopiota muista yksityisistä kopioista riippumatta.
  3. Jos tietoja on muokattu yksityisessä kopiossa eikä muissa, muutos kopioidaan myös muihin yksityisiin kopioihin.
  4. Jos kaksi instanssia muuttaa muutoksia samoihin tietoihin samanaikaisesti ja se aiheuttaa epäjohdonmukaisuuden tiedoissa, molemmat yksityiset kopiot poistetaan. ja loput yksityiset kopiot kopioidaan

Neljäs kohta on tärkeä, koska juuri siinä osassa käy selväksi, että koodin kyseinen osa on välttämätöntä sarjata. Tämä tarkoittaa, että loput instansseista lopettavat yksityisten kopioidensa muokkaamisen ja muokkauksia tekee vain yksi instansseista. Kun se päättyy, muutokset kopioidaan sitten muihin yksityisiin kopioihin. Kun tapahtumaksi merkitty koodin osa on jo suoritettu ja kaikki yksityiset kopiot sisältävät samat tiedot, tulos kopioidaan vastaaville välimuistiriveille ja muistiosoitteille.

Transaktiomuistijärjestelmät, Intel TSX

Transaccional Memoria -laitteisto

Lyhenne TSX, Tapahtumien synkronointilaajennukset, viittaa sarjaan lisäohjeita x86 ISA: lle, joiden on tarkoitus lisätä transaktiomuistitukea Intel Suorittimet. Siksi niihin liittyy joukko ohjeita ja mekanismeja, jotka mahdollistavat koodin tiettyjen osien rajaamisen tapahtumaksi ja Intel-suorittimen suorittamaan prosessin, josta olemme keskustelleet edellisessä prosessissa. Mutta tässä tapauksessa Intelin toteutus on hieman monimutkaisempi. Koska kuten aiemmin olemme nähneet, jos kahden datan välillä on ristiriita, yksi käynnissä olevista instansseista keskeyttää koko prosessin.

Sen toteutus laitteistossa saavutetaan lisäämällä uuden tyyppinen välimuisti, nimeltään transaktiovälimuisti, jossa eri toiminnot suoritetaan eri tiedoille. Muista, että transaktiomuisti pyrkii vähentämään ristiriitoja muistia käytettäessä. Vaikka välimuistit tukevat suurempaa määrää pyyntöjä kuin RAM yleensä nämä ovat myös rajallisia ja etenkin ytimistä kauimpana olevilla tasoilla. Kaikki tämä yhdistetään sisäisten muistien ja yksityisten rekistereiden käyttöön, jotka tukevat eri ytimien suorittamia yksityisiä kopioita.

Intel TSX -ohjeet eivät ole monimutkaisia, meillä on toisaalta XBEGIN-käsky, joka merkitsee meidät, kun transaktio-osa muistista alkaa, XEND-käsky, joka merkitsee loppua, ja XABORT, joka merkitsee poistumista prosessista kun tapahtuu poikkeuksellinen tilanne.

Intel TSX -ohjeiden loppu?

Intel TSX Peruuta

Nykyiset suorittimen ohjausyksiköt ovat itse asiassa täysimittaisia ​​mikrokontrollereita, mikä tarkoittaa, että tapa, jolla se purkaa ohjeet ja ohjeiden luettelon, voidaan päivittää. Intel toteutti ensimmäisen Haswell-arkkitehtuurin, ja se on pysynyt Intelin suorittimissa toistaiseksi. Koska se on hiljattain poistettu käytöstä kiinteän ohjelmiston avulla Intelin omissa kuudennen, seitsemännen ja kahdeksannen sukupolven ytimissä.

Intel suorittaa ajoittain suorittimiensa etäpäivityksiä, jotka suoritetaan tietokoneessamme olevan Intel Management Engine -järjestelmän kautta tietämättä siitä. Ne eivät yleensä ole yleisiä, mutta ne voivat sisältää optimointeja tiettyjen ohjeiden suorittamiseen tai jopa tuen poistamiseen toisille. Intel TSX: n poistaminen Intel Core -järjestelmässä johtuu siitä, että ohjausyksikön sisäisen mikrokoodin uusimmilla muutoksilla se merkitsee ristiriitaa ohjelmiston toiminnassa, mikä tarkoittaa, että keskusyksikkö ei toimi niin kuin sen pitäisi.

Todellinen syy on kuitenkin se, että Intel TSX sallii haitallisen koodin suorittamisen klassisten turvajärjestelmien tutkan alla, etenkin sen, joka vaikuttaa käyttöjärjestelmään. Koska yksityiset kopiot eivät vastaa käyttäjän ympäristöä tai käyttöjärjestelmää. Joten se on edelleen samanlainen ongelma kuin spekulatiivinen toteutus.