Transactional Synchronization Extensions - Transactional Synchronization Extensions
Transactional Synchronization Extensions (TSX), také zvaný Transactional Synchronization Extensions Nové pokyny (TSX-NI), je rozšíření k x86 architektura sady instrukcí (ISA), který přidává hardware transakční paměť podpora, zrychlení provádění vícevláknového softwaru prostřednictvím zamykací eliminace. Podle různých měřítek může TSX / TSX-NI poskytnout přibližně 40% rychlejší provádění aplikací v konkrétních úlohách a 4–5krát více databáze transakce za sekundu (TPS).[1][2][3][4]
TSX / TSX-NI dokumentoval Intel v únoru 2012 a debutoval v červnu 2013 u vybraného Intelu mikroprocesory založeno na Haswell mikroarchitektura.[5][6][7] Procesory Haswell pod 45xx, jakož i řady R a K (s odemčeným multiplikátorem) SKU nepodporují TSX / TSX-NI.[8] V srpnu 2014 společnost Intel oznámila chybu v implementaci TSX / TSX-NI u současných kroků Haswell, Haswell-E, Haswell-EP a brzy Broadwell CPU, což mělo za následek deaktivaci funkce TSX / TSX-NI na postižených CPU přes a mikrokód Aktualizace.[9][10]
V roce 2016 postranní kanál načasování útoku bylo zjištěno zneužitím způsobu, jakým TSX / TSX-NI zpracovává transakční chyby (tj. chyby stránky ), aby se zlomil KASLR na všech hlavních operačních systémech[11].
Podpora emulace TSX / TSX-NI je poskytována jako součást emulátoru Intel Software Development Emulator.[12] K dispozici je také experimentální podpora emulace TSX / TSX-NI v a QEMU Vidlička.[13]
Funkce
TSX / TSX-NI poskytuje dvě softwarová rozhraní pro označení oblastí kódu pro provádění transakcí. Vyloučení hardwarového zámku (HLE) je rozhraní založené na prefixu instrukcí navržené tak, aby bylo zpětně kompatibilní s procesory bez podpory TSX / TSX-NI. Omezená transakční paměť (RTM) je nové rozhraní instrukční sady, které poskytuje programátorům větší flexibilitu.[14]
TSX / TSX-NI umožňuje optimistické provedení oblastí transakčního kódu. Hardware sleduje více vláken pro konfliktní přístupy do paměti, zatímco ruší a odvolává transakce, které nelze úspěšně dokončit. Software poskytuje mechanismy pro detekci a zpracování neúspěšných transakcí.[14]
Jinými slovy, zamykání zámku pomocí transakčního provádění používá paměťové transakce jako rychlou cestu, kde je to možné, zatímco pomalá (záložní) cesta je stále normální zámek.
Vyloučení hardwarového zámku
Hardware Lock Elision (HLE) přidává dvě nové předpony instrukcí, XACQUIRE
a XRELEASE
. Tyto dvě předpony znovu používají opcodes ze stávajících REPNE
/ REPE
předpony (F2H
/ F3H
). U procesorů, které nepodporují HLE, REPNE
/ REPE
předpony jsou ignorovány podle pokynů, pro které XACQUIRE
/ XRELEASE
jsou platné, což umožňuje zpětnou kompatibilitu.[15]
The XACQUIRE
nápovědu k předponě lze použít pouze s následujícími pokyny s explicitní ZÁMEK
předpona: PŘIDAT
, ADC
, A
, BTC
, BTR
, BTS
, CMPXCHG
, CMPXCHG8B
, DEC
, INC
, NEG
, NE
, NEBO
, SBB
, SUB
, XOR
, XADD
, a XCHG
. The XCHG
instrukci lze použít bez ZÁMEK
také prefix.
The XRELEASE
nápovědu k předponě lze použít jak s výše uvedenými pokyny, tak s MOV mem, reg
a MOV mem, imm
instrukce.
HLE umožňuje optimistické provedení kritické sekce přeskočením zápisu na zámek, takže zámek se zdá být volný pro další vlákna. Neúspěšná transakce má za následek restartování spuštění z XACQUIRE
-předponovaná instrukce, ale zachází s instrukcí, jako by XACQUIRE
předpony nebyly k dispozici.
Omezená transakční paměť
Omezená transakční paměť (RTM) je alternativní implementace k HLE, která dává programátorovi flexibilitu při určování cesty záložního kódu, která se provede, když transakci nelze úspěšně provést. Na rozdíl od HLE není RTM zpětně kompatibilní s procesory, které jej nepodporují. Z důvodu zpětné kompatibility jsou programy nutné k detekci podpory RTM v CPU před použitím nových pokynů.
RTM přidává tři nové pokyny: ZAČNĚTE
, XEND
a XABORT
. The ZAČNĚTE
a XEND
instrukce označují začátek a konec oblasti transakčního kódu; the XABORT
instrukce výslovně přeruší transakci. Selhání transakce přesměruje procesor na cestu záložního kódu určenou ZAČNĚTE
instrukce se stavem přerušení vráceným v EAX
Registrovat.
Registr EAX bitová pozice | Význam |
---|---|
0 | Nastavit, pokud je přerušení způsobeno XABORT návod. |
1 | Pokud je nastavena, transakce může při opakování proběhnout úspěšně. Tento bit je vždy jasný, pokud je nastaven bit 0. |
2 | Nastavit, pokud došlo ke konfliktu jiného logického procesoru s adresou paměti, která byla součástí transakce, která byla přerušena. |
3 | Nastavte, pokud došlo k přetečení interní vyrovnávací paměti. |
4 | Nastavit, pokud byl zasažen bod přerušení ladění. |
5 | Nastavit, pokud došlo k přerušení během provádění vnořené transakce. |
23:6 | Rezervováno. |
31:24 | XABORT argument (platný pouze v případě, že je nastaven bit 0, jinak vyhrazeno). |
XTEST
návod
TSX / TSX-NI poskytuje nový XTEST
instrukce, která vrací, zda procesor provádí transakční oblast. Tato instrukce podporuje procesor, pokud podporuje HLE nebo RTM nebo obojí.
Sledování adresy pozastavení načítání TSX
TSX / TSX-NI Suspend Load Address Tracking (TSXLDTRK) je rozšíření sady instrukcí, které umožňuje dočasně zakázat sledování načítání z paměti v části kódu v transakční oblasti. Tato funkce rozšiřuje HLE a RTM a její podpora v procesoru musí být detekována samostatně.
TSXLDTRK představuje dvě nové instrukce, XSUSLDTRK
a XRESLDTRK
, pro pozastavení a obnovení sledování adresy načítání. Když je sledování pozastaveno, žádné načtení z paměti nebude přidáno do sady čtení transakce. To znamená, že pokud tato paměťová umístění nebyla přidána do sady pro čtení nebo zápis transakcí mimo pozastavenou oblast, zápisy v těchto umístěních jinými vlákny nezpůsobí přerušení transakce. Pozastavení sledování adresy načítání pro část kódu v transakční oblasti umožňuje snížit množství paměti, kterou je třeba sledovat pro konflikty čtení a zápisu, a proto zvýšit pravděpodobnost úspěšného potvrzení transakce.
Implementace
![]() | Tato část musí být aktualizováno.Červen 2017) ( |
Specifikace Intel TSX / TSX-NI popisuje, jak je transakční paměť vystavena programátorům, ale zadržuje podrobnosti o skutečné implementaci transakční paměti.[16] Společnost Intel ve svých příručkách pro vývojáře a optimalizaci uvádí, že Haswell udržuje sady čtení i sady zápisu na granularitě řádku mezipaměti a sleduje adresy v datové mezipaměti L1 procesoru.[17][18][19][20] Intel také uvádí, že konflikty dat jsou detekovány prostřednictvím soudržnost mezipaměti protokol.[18]
Mezipaměť dat Haswell L1 má asociativitu osm. To znamená, že v této implementaci dojde k přerušení transakčního provedení, které zapisuje na devět odlišných umístění mapujících na stejnou sadu mezipaměti. Kvůli mikroarchitektonickým implementacím to však neznamená, že je zaručeno, že se nikdy nepřeruší méně přístupů ke stejné sadě. Navíc v konfiguracích CPU s Technologie Hyper-Threading, mezipaměť L1 je sdílena mezi dvěma vlákny na stejném jádru, takže operace v sourozeneckém logickém procesoru se stejným jádrem mohou způsobit vystěhování.[18]
Nezávislé výzkumy poukazují na transakční paměť Haswell, s největší pravděpodobností jde o odložený aktualizační systém využívající mezipaměti mezipaměti pro transakční data a registrační kontrolní body.[16] Jinými slovy, Haswell pravděpodobně použije transakční paměťový systém založený na mezipaměti, protože je to mnohem méně riskantní volba implementace. Na druhou stranu, Intel Skylake nebo novější může kombinovat tento přístup založený na mezipaměti s vyrovnávací paměť pro objednávání paměti (MOB) pro stejný účel, případně také poskytující transakční paměť s více verzemi, která je lépe přístupná spekulativní multithreading.[21]
V srpnu 2014 společnost Intel oznámila, že existuje chyba v implementaci TSX / TSX-NI na procesorech Haswell, Haswell-E, Haswell-EP a časných Broadwell, což mělo za následek deaktivaci funkce TSX / TSX-NI na postižených CPU prostřednictvím mikrokódu Aktualizace.[9][10][22] Chyba byla opravena v kroku F-0 CPU Core M-5Y70 Broadwell s povoleným vPro v listopadu 2014.[23]
Chyba byla nalezena a poté nahlášena během diplomové práce na Fakultě elektrotechniky a výpočetní techniky Národní technická univerzita v Aténách.[24]
Podle referenční příručky pro optimalizaci architektur Intel 64 a IA-32 z května 2020, svazek 1, kapitola 2.5 Byla odstraněna architektura instrukčních sad Intel a funkce[17], HLE byl odstraněn z produktů Intel vydaných v roce 2019 a novějších. RTM není dokumentován jako odstraněný. Intel 10. generace Kometské jezero a Ledové jezero CPU, které byly vydány v roce 2020, nepodporují TSX / TSX-NI[25][26][27][28][29], včetně HLE i RTM.
V Intel Architecture Instruction Set Extensions Programming Reference revize 41 z října 2020[30], bylo zdokumentováno a rozšířeno nové rozšíření instrukční sady TSXLDTRK Safírové peřeje procesory.
Aplikace
Viz také
- Zařízení pro pokročilou synchronizaci (AMD konkurenční technologie)
- Transakční paměť
Reference
- ^ Richard M. Yoo; Christopher J. Hughes; Konrad Lai; Ravi Rajwar (listopad 2013). „Vyhodnocení výkonu rozšíření transakční synchronizace Intel pro vysoce výkonné výpočty“ (PDF). intel-research.net. Archivovány od originál (PDF) dne 24. 10. 2016. Citováno 2013-11-14.
- ^ Tomáš Karnagel; Roman Dementiev; Ravi Rajwar; Konrad Lai; Thomas Legler; Benjamin Schlegel; Wolfgang Lehner (únor 2014). „Zlepšení výkonu indexu databáze v paměti pomocí rozšíření transakční synchronizace Intel“ (PDF). software.intel.com. Citováno 2014-03-03.
- ^ „Vyhodnocení výkonu rozšíření transakční synchronizace Intel pro vysoce výkonné výpočty“. supercomputing.org. listopad 2013. Citováno 2013-11-14.
- ^ „Benchmarks: Haswell's TSX and Memory Transaction Throughput (HLE and RTM)“. sisoftware.co.uk. Citováno 2013-11-14.
- ^ „Transactional Synchronization in Haswell“. Software.intel.com. Citováno 2012-02-07.
- ^ „Transakční paměť jde do hlavního proudu s Intel Haswell“. Ars Technica. 2012-02-08. Citováno 2012-02-09.
- ^ „Recenze Core i7-4770K“. Tomův hardware. 01.06.2013. Citováno 2012-06-03.
- ^ „Srovnávací tabulka Intel u modelů Haswell Pentium, i3, i5 a i7“. intel.com. Citováno 2014-02-11.
- ^ A b Scott Wasson (12.8.2014). „Errata vyzve Intel, aby zakázal TSX v Haswell, raných procesorech Broadwell“. techreport.com. Citováno 2014-08-12.
- ^ A b „Stolní řada procesorů Intel Core 4. generace, řada procesorů Intel Pentium pro stolní počítače a řada procesorů Intel Celeron pro stolní počítače: aktualizace specifikace (revize 014)“ (PDF). Intel. Červen 2014. str. 46. Citováno 2014-08-13.
Za složité sady podmínek vnitřního časování a systémových událostí může software využívající pokyny Intel TSX / TSX-NI (Transactional Synchronization Extensions) sledovat nepředvídatelné chování systému.
- ^ „Rozbití náhodného rozložení adresního prostoru jádra s Intel TSX“ (PDF). 2016.
- ^ Wooyoung Kim (25. 7. 2013). „Zábava s rozšířeními transakční synchronizace Intel“. Intel. Citováno 2013-11-12.
- ^ Sebastien Dabdoub; Stephen Tu. „Podpora rozšíření transakční synchronizace Intel v QEMU“ (PDF). mit.edu. Citováno 2013-11-12.
- ^ A b Johan De Gelas (2012-09-20). „Vyzvednutí rozšíření transakční synchronizace Intel Haswell“. AnandTech. Citováno 2013-10-20.
- ^ „Přehled vyloučení hardwarového zámku“. intel.com. Archivovány od originál dne 29. 10. 2013. Citováno 2013-10-27.
- ^ A b David Kanter (2012-08-21). „Analýza transakční paměti Haswell“. Technologie skutečného světa. Citováno 2013-11-19.
- ^ A b „Příručka pro vývojáře softwaru Intel 64 a IA-32 Architectures Kombinované svazky: 1, 2A, 2B, 2C, 3A, 3B a 3C“ (PDF). Intel. Září 2013. str. 342. Citováno 2013-11-19.
- ^ A b C „Referenční příručka k optimalizaci architektury Intel 64 a IA-32“ (PDF). Intel. Září 2013. str. 446. Citováno 2013-11-19.
- ^ „Vlastnosti implementace Intel TSX“. Intel. 2013. Citováno 2013-11-14.
Procesor sleduje adresy sady čtení i adresy sady zápisu v datové mezipaměti první úrovně (mezipaměť L1) procesoru.
- ^ De Gelas, Johan (20. září 2012). „Vyzvednutí rozšíření transakční synchronizace Intel Haswell“. AnandTech. Citováno 23. prosince 2013.
Celý „CPU provádí jemnozrnné zámky“ je založen na označování mezipamětí L1 (64 B) a konkrétních je 512 (64 x 512 = 32 KB). Na jednu mezipaměť je pouze jedna „značka zámku“.
- ^ David Kanter (2012-08-21). „Alternativy transakční paměti Haswell“. Technologie skutečného světa. Citováno 2013-11-14.
- ^ Ian Cutress (12.8.2014). „Intel zakazuje pokyny TSX: Erratum nalezeno v Haswell, Haswell-E / EP, Broadwell-Y“. AnandTech. Citováno 2014-08-30.
- ^ „Rodina procesorů Intel Core M. Aktualizace specifikace. Prosinec 2014. Revize 003. 330836-003“ (PDF). Intel. Prosince 2014. str. 10. Citováno 2014-12-28.
BDM53 1 E-0: X, F-0 :, Stav: Opraveno CHYBA: Pokyny Intel TSX nejsou k dispozici. 1. Platí pro procesor Intel Core M-5Y70. Intel TSX je podporován na procesoru Intel Core M-5Y70 s technologií Intel vPro. Intel TSX není podporován na jiných SKU procesorů.
- ^ „HiPEAC informace“ (PDF). str. 12. Archivovány od originál (PDF) dne 2017-03-05.
- ^ „Specifikace procesoru Intel® Core ™ i9-10900K“. Intel. 2020. Citováno 2020-10-10.
- ^ „Specifikace procesoru Intel® Core ™ i9-10980HK“. Intel. 2020. Citováno 2020-10-10.
- ^ „Specifikace procesoru Intel® Core ™ i7-10810U“. Intel. 2020. Citováno 2020-10-10.
- ^ „Specifikace procesoru Intel® Xeon® W-1290P“. Intel. 2020. Citováno 2020-10-10.
- ^ „Specifikace procesoru Intel® Core ™ i7-1068NG7“. Intel. 2020. Citováno 2020-10-10.
- ^ „Referenční příručka k programování rozšíření architektury Intel® (PDF)“ (PDF). Intel. 2020. Citováno 2020-10-21.
- ^ „Vylepšená podpora pro TSX“.
Další čtení
- Afek, Y .; Levy, A .; Morrison, A. (2014). „Proceedings of the ACM symposium 2014 on Principles of distributed computing - PODC '14“. Softwarově vylepšená eliminace hardwarového zámku, str. 212. doi:10.1145/2611462.2611482. ISBN 9781450329446. Citovat deník vyžaduje
| deník =
(Pomoc). Softwarová vylepšení eliminace hardwarového zámku v Intel TSX.
externí odkazy
- Prezentace z IDF 2012 (PDF)
- Přidání zamčení zámku do Linuxu, Linux Instalatéři Konference 2012 (PDF)
- Zamkněte elisi v knihovně GNU C., LWN.net 30. ledna 2013, autor: Andi Kleen
- Průvodce optimalizací TSX, Kapitola 12 (PDF)
- Příručka pro vývojáře softwaru, Svazek 1, Kapitola 2.5 (PDF)
- Webové zdroje o rozšířeních pro transakční synchronizaci Intel
- x86, microcode: BUG: aktualizace mikrokódu, která mění x86_capability, LKML Září 2014 (existuje také další podobné hlášení o chybě )
- Mikrokód Intel, Gentoo, 19. září 2015