Transaktiomuisti
Transaktiomuisti on tietotekniikassa termi laitteistopohjaiselle tuelle tietokoneen muistin käsittelylle transaktioiden avulla.
Termi on verrattavissa tietokantamoottorien käyttämälle transaktiomekanismille, mutta ohjelmiston sijaan kyse on suorittimen ja muistipiirien toimintaan liittyvästä ratkaisusta. Ohjelmistopohjaiset ratkaisuvat ovat olleet liian hitaita todelliselle toteutukselle.[1] Toimintamekanismit ovat best effort perusteisia ja takeita lukituksen välttämiselle ei ole.[1]
Tavoitteena tekniikan toteuttamisella laitteistossa on rinnakkaisuuden tuottamien ongelmien yksinkertaisempi ja tehokkaampi ratkaisu.[2] Varhaiset suunnitelmat perustuivat lukituksen väistämiseen (engl. lock elision).[2]
Ongelmakohtia
muokkaaTransaktiomuisti ei ratkaise kaikkia ohjelmistokehityksen ongelmia:[3]
- ei deadlockia, mutta sen sijaan livelock mahdollinen
- reaaliaikasuustakeiden puuttuminen
- kaikki algoritmit eivät sovellu rinnakkaisuuteen
- mobiilialustoilla hukattu energia spekulaation epäonnistuessa
Toteutukset
muokkaaYksi varhaisimmista käyttökohteista tekniikalle oli Transmetan suorittimissa, mutta käyttö oli rajattu suorittimen sisäiseen toimintaan.[2]
AMD on ehdottanut Advanced Synchronization Facility (ASF) käskykantalaajennuksen x86-64 arkkitehtuuriin.[4] Intelillä on vastaavasti Transactional Synchronization Extensions (TSX) laajennus.[5][6]
IBM Blue Gene/Q tietokoneessa on vuodesta 2011 lähtien Power-arkkitehtuurin POWER8-suorittimissa tuki transaktiomuistille.[7]
QEMUn kehittäjät ovat esittäneet transaktiomuistin käyttöön synkronointimekanismia muistuttavan rajapinnan.[8]
Lähteet
muokkaa- ↑ a b Kleen, Andi: Lock elision in the GNU C library LWN. Viitattu 7.3.2017.
- ↑ a b c Kanter, David: Analysis of Haswell’s Transactional Memory realworldtech.com. Viitattu 7.3.2017.
- ↑ Kiminki, Sami: Introduction to Transactional Memory cs.hut.fi. Arkistoitu 8.3.2017. Viitattu 7.3.2017.
- ↑ Advanced Synchronization Facility AMD. Viitattu 7.3.2017.
- ↑ Transactional Synchronization in Haswell Intel. Viitattu 7.3.2017.
- ↑ Coarse-grained locks and Transactional Synchronization explained Intel. Viitattu 7.3.2017.
- ↑ Li, Wei: IBM XL compiler hardware transactional memory built-in functions for IBM AIX on IBM POWER8 processor-based systems IBM. Viitattu 7.3.2017.
- ↑ Dabdoub, Sebastien & Tu, Stephen: Supporting Intel Transactional Synchronization Extensions in QEMU people.eecs.berkeley.edu. Arkistoitu 7.3.2017. Viitattu 7.3.2017.