03.03.2013 Views

Intel® Architecture Instruction Set Extensions Programming Reference

Intel® Architecture Instruction Set Extensions Programming Reference

Intel® Architecture Instruction Set Extensions Programming Reference

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

INTEL® ADVANCED VECTOR EXTENSIONS<br />

Details of enumerating these instruction enhancements are described in detail in Section 2.2.4.<br />

1.7 INTEL ® TRANSACTIONAL SYNCHRONIZATION EXTENSIONS<br />

Multithreaded applications take advantage of increasing number of cores to achieve high performance. However,<br />

writing multi-threaded applications requires programmers to implement various software mechanisms to handle<br />

data sharing among multiple threads. Access to shared data typically requires synchronization mechanisms. These<br />

mechanisms ensure multiple threads update shared data by serializing operations on the shared data, often<br />

through the use of a critical section protected by a lock.<br />

Since serialization limits concurrency, programmers try to limit synchronization overheads. They do this either<br />

through minimizing the use of synchronization or through the use of fine-grain locks; where multiple locks protect<br />

different shared data. Unfortunately, this process is difficult and error prone; a missed or incorrect synchronization<br />

can cause an application to fail.<br />

Conservatively adding synchronization and using coarser granularity locks, where a few locks each protect many<br />

items of shared data, helps avoid correctness problems but limits performance due to excessive serialization. While<br />

programmers must use static information to determine when to serialize, the determination as to whether to actually<br />

serialize is best done dynamically.<br />

Intel ® Transactional Synchronization <strong>Extensions</strong> (Intel ® TSX) allows the processor to determine dynamically<br />

whether threads need to serialize through critical sections, and to perform serialization only when required. This<br />

lets processors expose and exploit concurrency hidden in an application due to dynamically unnecessary synchronization.<br />

1-6 Ref. # 319433-014

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!