<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Hi, in Intel® Moderncode for Parallel Architectures</title>
    <link>https://community.intel.com/t5/Intel-Moderncode-for-Parallel/Questions-about-TSX/m-p/812931#M1065</link>
    <description>Hi,

There is an Intel Developer Forum 2012 presentation on Intel(r) Transactional Synchronization Extensions discussing implementation details. The slides can be downloaded in the technical session catalog: &lt;A href="https://intel.activeevents.com/sf12/scheduler/catalog.do" target="_blank"&gt;https://intel.activeevents.com/sf12/scheduler/catalog.do&lt;/A&gt; or &lt;A href="http://intel.com/go/idfsessions" target="_blank"&gt;http://intel.com/go/idfsessions&lt;/A&gt; (session ARCS004).

Best regards,
Roman</description>
    <pubDate>Wed, 12 Sep 2012 09:02:28 GMT</pubDate>
    <dc:creator>Roman_D_Intel</dc:creator>
    <dc:date>2012-09-12T09:02:28Z</dc:date>
    <item>
      <title>Questions about TSX</title>
      <link>https://community.intel.com/t5/Intel-Moderncode-for-Parallel/Questions-about-TSX/m-p/812925#M1059</link>
      <description>&lt;DIV&gt;Hi,&lt;/DIV&gt;&lt;DIV&gt;&lt;/DIV&gt;&amp;gt; 8.3.5RTM Abort Status Definition&lt;DIV&gt;&lt;/DIV&gt;Feedback and introspection seem to be critical for such systems; is it possible to get to know as to whether the abort was caused by a bad instruction (can't be executed in transactions at all, can't be executed in transactions on this particular processor) or by a memory protection fault (access to NULL), etc? It also would be useful to obtain PC and ADDR associated with abort.&lt;DIV&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;DIV id="_mcePaste"&gt;&amp;gt; 8.3.6RTM Memory Ordering&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;&amp;gt;A successful RTM commit causes all memory operations in the RTM region to appear&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;&amp;gt;to execute atomically. A successfully committed RTM region consisting of an XBEGIN&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;&amp;gt;followed by an XEND, even with no memory operations in the RTM region, has the&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;&amp;gt;same ordering semantics as a LOCK prefixed instruction.&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;I am curious what is the rationale behind that. Does it mean that that adds several dozens of cycles to each trx? If I need MFENCE I can put it after a trx manually.&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;What are approximate sizes of read/write sets? Are we talking about like 4 cache lines? Or 128 cache lines? That critically affects what can be implemenmted with TSX.&lt;/DIV&gt;&lt;DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;/DIV&gt;&lt;DIV&gt;TIA&lt;/DIV&gt;</description>
      <pubDate>Thu, 09 Feb 2012 09:10:19 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Moderncode-for-Parallel/Questions-about-TSX/m-p/812925#M1059</guid>
      <dc:creator>Dmitry_Vyukov</dc:creator>
      <dc:date>2012-02-09T09:10:19Z</dc:date>
    </item>
    <item>
      <title>Questions about TSX</title>
      <link>https://community.intel.com/t5/Intel-Moderncode-for-Parallel/Questions-about-TSX/m-p/812926#M1060</link>
      <description>&lt;DIV id="tiny_quote"&gt;&lt;DIV style="margin-left: 2px; margin-right: 2px;"&gt;Quoting &lt;A jquery1328842399609="55" rel="/en-us/services/profile/quick_profile.php?is_paid=&amp;amp;user_id=347331" href="https://community.intel.com/en-us/profile/347331/" class="basic"&gt;Dmitriy Vyukov&lt;/A&gt;&lt;/DIV&gt;&lt;DIV style="background-color: #e5e5e5; margin-left: 2px; margin-right: 2px; border: 1px inset; padding: 5px;"&gt;&lt;I&gt;&lt;DIV&gt;Hi,&lt;/DIV&gt;&lt;DIV&gt;&lt;/DIV&gt;&amp;gt; 8.3.5RTM Abort Status Definition &lt;DIV&gt;&lt;/DIV&gt;...&lt;STRONG&gt;&lt;SPAN style="text-decoration: underline;"&gt;is it possible to get to know&lt;/SPAN&gt;&lt;/STRONG&gt; as to whether the &lt;SPAN style="text-decoration: underline;"&gt;&lt;STRONG&gt;abort was caused&lt;/STRONG&gt;&lt;/SPAN&gt; by a &lt;STRONG&gt;&lt;SPAN style="text-decoration: underline;"&gt;bad instruction&lt;/SPAN&gt;&lt;/STRONG&gt; (can't be executed in transactions at all, can't be executed in transactions on this particular processor) or by a &lt;STRONG&gt;&lt;SPAN style="text-decoration: underline;"&gt;memory protection fault&lt;/SPAN&gt;&lt;/STRONG&gt; (access to NULL), etc?...&lt;BR /&gt;&lt;/I&gt;&lt;/DIV&gt;&lt;BR /&gt;Could you use an exception handler? If Yes,an exception code could help to understand what really happened.&lt;BR /&gt;For example:&lt;BR /&gt;&lt;BR /&gt;...&lt;BR /&gt;0x80000001 - Guard Page Violation&lt;BR /&gt;0xC0000005 - Access Violation&lt;BR /&gt;0xC0000006 - In Page Error&lt;BR /&gt;0xC000001D - Illegal Instruction&lt;BR /&gt;...&lt;/DIV&gt;</description>
      <pubDate>Fri, 10 Feb 2012 03:03:19 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Moderncode-for-Parallel/Questions-about-TSX/m-p/812926#M1060</guid>
      <dc:creator>SergeyKostrov</dc:creator>
      <dc:date>2012-02-10T03:03:19Z</dc:date>
    </item>
    <item>
      <title>Questions about TSX</title>
      <link>https://community.intel.com/t5/Intel-Moderncode-for-Parallel/Questions-about-TSX/m-p/812927#M1061</link>
      <description>&amp;gt;&amp;gt;Feedback and introspection seem to be critical for such systems; is it possible to get to know as to whether the abort was caused by a bad instruction (can't be executed in transactions at all, can't be executed in transactions on this particular processor) or by a memory protection fault (access to NULL), etc?&lt;BR /&gt;&lt;BR /&gt;If you write the abort path correctly the memory protection fault should be exposed there.&lt;BR /&gt;&lt;BR /&gt;For "bad instruction" I think this warrants a status bit (one of the remaining 23:6 bits in eax/rax).&lt;BR /&gt;&lt;BR /&gt;However, even without this bit you can still write initialization code to test for support. Example, init code run by one thread testsfunction with RTM once or several times,if function always aborts then assume it will never succeed, and therefore set flag or change function dispatchto usealternate pathwhich uses older lock/unlock structure.&lt;BR /&gt;&lt;BR /&gt;--- revision ---&lt;BR /&gt;&lt;BR /&gt;If an unsupported (bad) instruction occures (say in the test code) bit 1 should not be set (indicating retry will not succeed)&lt;BR /&gt;&lt;BR /&gt;Jim Dempsey</description>
      <pubDate>Fri, 10 Feb 2012 16:37:39 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Moderncode-for-Parallel/Questions-about-TSX/m-p/812927#M1061</guid>
      <dc:creator>jimdempseyatthecove</dc:creator>
      <dc:date>2012-02-10T16:37:39Z</dc:date>
    </item>
    <item>
      <title>Questions about TSX</title>
      <link>https://community.intel.com/t5/Intel-Moderncode-for-Parallel/Questions-about-TSX/m-p/812928#M1062</link>
      <description>TSX feature request/query&lt;BR /&gt;&lt;BR /&gt;Consider a processor, say 8 core with HT (16 threads).&lt;BR /&gt;&lt;BR /&gt;Consider maskable interrupts that are not masked OFF.&lt;BR /&gt;&lt;BR /&gt;Any one of these hardware threads could acquire the responsibility of servicing the maskable interrupt.&lt;BR /&gt;It would be unfortunate for a hardware thread within an RTM to service the interrupt, should at the time of the interrupt there be a thread (not masked out) that is capable of servicing the interrupt and which is not in RTM.&lt;BR /&gt;&lt;BR /&gt;The feature request is for the selection chriteria as to which thread processes the interrupt first applies to threads not in RTM. Should the case be all threads in RTM then the preferred choice would be the last thread to enter RTM. This feature would conserve on number of retries.&lt;BR /&gt;&lt;BR /&gt;Jim Dempsey</description>
      <pubDate>Fri, 10 Feb 2012 18:11:10 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Moderncode-for-Parallel/Questions-about-TSX/m-p/812928#M1062</guid>
      <dc:creator>jimdempseyatthecove</dc:creator>
      <dc:date>2012-02-10T18:11:10Z</dc:date>
    </item>
    <item>
      <title>Questions about TSX</title>
      <link>https://community.intel.com/t5/Intel-Moderncode-for-Parallel/Questions-about-TSX/m-p/812929#M1063</link>
      <description>I believe that TSX suppresses all relevant exceptions.&lt;DIV&gt;By "bad instruction" I meant not an illegal instruction, but an instruction that can't be executed in a transaction (unconditionally causes it to abort).&lt;/DIV&gt;</description>
      <pubDate>Thu, 23 Feb 2012 10:49:38 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Moderncode-for-Parallel/Questions-about-TSX/m-p/812929#M1063</guid>
      <dc:creator>Dmitry_Vyukov</dc:creator>
      <dc:date>2012-02-23T10:49:38Z</dc:date>
    </item>
    <item>
      <title>Questions about TSX</title>
      <link>https://community.intel.com/t5/Intel-Moderncode-for-Parallel/Questions-about-TSX/m-p/812930#M1064</link>
      <description>&amp;gt;If an unsupported (bad) instruction occures (say in the test code) bit 1 should not be set (indicating retry will not succeed)&lt;DIV&gt;&lt;/DIV&gt;&lt;DIV&gt;Well, yes, it should be enough to dynamically dispatch to another code path. But it may be not enough for human analysis of what happens and why it happens and how to avoid aborts.&lt;/DIV&gt;&lt;DIV&gt;&lt;/DIV&gt;</description>
      <pubDate>Thu, 23 Feb 2012 10:54:32 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Moderncode-for-Parallel/Questions-about-TSX/m-p/812930#M1064</guid>
      <dc:creator>Dmitry_Vyukov</dc:creator>
      <dc:date>2012-02-23T10:54:32Z</dc:date>
    </item>
    <item>
      <title>Hi,</title>
      <link>https://community.intel.com/t5/Intel-Moderncode-for-Parallel/Questions-about-TSX/m-p/812931#M1065</link>
      <description>Hi,

There is an Intel Developer Forum 2012 presentation on Intel(r) Transactional Synchronization Extensions discussing implementation details. The slides can be downloaded in the technical session catalog: &lt;A href="https://intel.activeevents.com/sf12/scheduler/catalog.do" target="_blank"&gt;https://intel.activeevents.com/sf12/scheduler/catalog.do&lt;/A&gt; or &lt;A href="http://intel.com/go/idfsessions" target="_blank"&gt;http://intel.com/go/idfsessions&lt;/A&gt; (session ARCS004).

Best regards,
Roman</description>
      <pubDate>Wed, 12 Sep 2012 09:02:28 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Moderncode-for-Parallel/Questions-about-TSX/m-p/812931#M1065</guid>
      <dc:creator>Roman_D_Intel</dc:creator>
      <dc:date>2012-09-12T09:02:28Z</dc:date>
    </item>
    <item>
      <title>I posted a blog about</title>
      <link>https://community.intel.com/t5/Intel-Moderncode-for-Parallel/Questions-about-TSX/m-p/812932#M1066</link>
      <description>I posted a blog about &lt;A href="http://software.intel.com/en-us/blogs/2012/11/06/exploring-intel-transactional-synchronization-extensions-with-intel-software"&gt;"Exploring Intel® Transactional Synchronization Extensions with Intel® Software Development Emulator"&lt;/A&gt;

Roman</description>
      <pubDate>Thu, 08 Nov 2012 09:02:20 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Moderncode-for-Parallel/Questions-about-TSX/m-p/812932#M1066</guid>
      <dc:creator>Roman_D_Intel</dc:creator>
      <dc:date>2012-11-08T09:02:20Z</dc:date>
    </item>
  </channel>
</rss>

