Transactional Synchronization Extensions: differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
+ citazioni |
ripristino lineetta enne Etichetta: Ripristino manuale |
||
(7 versioni intermedie di 7 utenti non mostrate) | |||
Riga 1:
'''Transactional Synchronization Extensions''' ('''TSX-NI''') è un'estensione all'architettura del [[Instruction set|set di istruzioni x86]] (ISA) che aggiunge il supporto alla [[memoria transazionale]] hardware, velocizzando l'esecuzione di software multi-threaded attraverso l'elisione della serratura. In base a diversi benchmark, TSX è in grado di fornire circa il 40% di esecuzione più veloce delle applicazioni in specifici carichi di lavoro, e 4-5 volte di più di [[Transazioni al secondo|transazioni di database al secondo]] (TPS).<ref>{{Cita web|url=http://pcl.intel-research.net/publications/SC13-TSX.pdf|titolo=Performance Evaluation of Intel R Transactional Synchronization Extensions for High-Performance Computing|cognome=Yoo|nome=Richard M.|editore=[[Intel]]|data=novembre 2013|lingua=en|formato=PDF|accesso=15 novembre 2018|urlarchivio=https://web.archive.org/web/20161110144922/http://pcl.intel-research.net/publications/SC13-TSX.pdf|dataarchivio=10 novembre 2016|urlmorto=sì|cognome2=Hughes|nome2=Christopher J.|cognome3=Lai|nome3=Konrad|cognome4=Rajwar|nome4=Ravi}}</ref><ref>{{Cita web|url=https://software.intel.com/sites/default/files/managed/4d/2a/hpca_TSX.pdf|titolo=Improving In-Memory Database Index Performance with Intel R Transactional Synchronization Extensions|cognome=Karnagel|nome=Tomas|cognome2=Dementiev|nome2=Roman|cognome3=Rajwar|nome3=Ravi|cognome4=Lai|nome4=Konrad|cognome5=Legler|nome5=Thomas|cognome6=Schlegel|nome6=Benjamin|cognome7=Lehner|nome7=Wolfgang|editore=[[Intel]]|data=febbraio 2014|lingua=en|formato=PDF|accesso=15 novembre 2018}}</ref><ref>{{Cita conferenza|titolo=Performance Evaluation of Intel Transactional Synchronization Extensions for High Performance Computing|conferenza=SC13|data=21 novembre 2013|url=
TSX è stato documentato da Intel nel febbraio 2012, e ha debuttato nel giugno 2013 su [[Microprocessore|microprocessori]] [[Intel]] selezionati basati sulla microarchitettura [[Haswell (hardware)|Haswell]].<ref>{{Cita web|url=
Il supporto per l'emulazione TSX è fornito come parte dell'emulatore di sviluppo software di Intel.<ref>{{Cita web|url=https://software.intel.com/en-us/blogs/2013/07/25/fun-with-intel-transactional-synchronization-extensions|titolo=Fun with Intel Transactional Synchronization Extensions|cognome=Wooyoung|nome=Kim|editore=[[Intel]]|data=25 luglio 2013|lingua=en|accesso=15 novembre 2015}}</ref> C'è anche un supporto sperimentale per l'emulazione TSX in [[QEMU]].<ref>{{Cita web|url=
== Caratteristiche ==
Riga 13:
=== {{anchor|HLE}}Hardware Lock Elision ===
'''Hardware Lock Elision''' (HLE) aggiunge due nuovi prefissi di istruzioni, <code>XACQUIRE</code> e <code>XRELEASE</code>. Questi due prefissi riutilizzano gli [[opcode]] dei prefissi <code>REPNE</code> / <code>REPE</code> esistenti (<code>F2H</code> / <code>F3H</code>). Sui processori che non supportano TSX, i prefissi <code>REPNE</code> / <code>REPE</code> vengono ignorati sulle istruzioni per le quali sono validi i prefissi <code>XACQUIRE</code> / <code>XRELEASE</code>, consentendo così una retrocompatibilità.<ref>{{Cita web|url=
Il suggerimento del prefisso <code>XACQUIRE</code> può essere utilizzato solo con le seguenti istruzioni con un esplicito prefisso <code>LOCK</code>: <code>ADD</code>, <code>ADC</code>, <code>AND</code>, <code>BTC</code>, <code>BTR</code>, <code>BTS</code>, <code>CMPXCHG</code>, <code>CMPXCHG8B</code>, <code>DEC</code>, <code>INC</code>, <code>NEG</code>, <code>NOT</code>, <code>OR</code>, <code>SBB</code>, <code>SUB</code>, <code>XOR</code>, <code>XADD</code> e <code>XCHG</code>. L'istruzione <code>XCHG</code> può essere utilizzata anche senza il prefisso <code>LOCK</code>.
Il suggerimento del prefisso <code>XRELEASE</code> può essere utilizzato sia con le istruzioni sopra elencate, sia con le istruzioni <code>MOV mem, reg</code> e <code>MOV mem, imm</code>.
Riga 24:
La '''Restricted Transactional Memory''' (RTM) è un'implementazione alternativa a HLE che offre al programmatore la flessibilità di specificare un percorso del codice di riserva che viene eseguito quando una transazione non può essere eseguita correttamente.
RTM aggiunge tre nuove istruzioni: <code>XBEGIN</code>, <code>XEND</code> and <code>XABORT</code>. Le istruzioni <code>XBEGIN</code> e <code>XEND</code> segnano l'inizio e la fine di una regione di codice transazionale; l'istruzione <code>XABORT</code> interrompe esplicitamente una transazione. Il fallimento della
{| class="wikitable"
!Posizione del bit di registro EAX
Riga 73:
== Note ==
<references />
==Bibliografia==
*{{Cita pubblicazione|nome=Yehuda|cognome=Afek|data=15 luglio 2014|titolo=Software-improved hardware lock elision|rivista=Proceedings of the 2014 ACM symposium on Principles of distributed computing|editore=ACM|volume=|numero=|pp=212–221|accesso=15 novembre 2018|doi=10.1145/2611462.2611482|url=https://dl.acm.org/citation.cfm?id=2611462.2611482|nome2=Amir|cognome2=Levy|nome3=Adam|cognome3=Morrison|ISBN=978-1-4503-2944-6}}
== Voci correlate ==
Riga 81 ⟶ 84:
{{Multimedia extensions}}
{{Portale|Informatica}}
[[Categoria:Calcolo parallelo]]
[[Categoria:Controllo della concorrenza]]
[[Categoria:Istruzioni x86]]
|