<?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 Each thread context (aka  in Software Archive</title>
    <link>https://community.intel.com/t5/Software-Archive/Intel-Xeon-Phi-VPU-registers/m-p/997647#M28806</link>
    <description>&lt;P&gt;Each thread context (aka "logical processor") has its own private set of 32 named vector registers.&amp;nbsp; Since each core supports four thread contexts, there must be (at least) 128 vector registers in each core.&amp;nbsp; This is reasonably clear from the discussion at &lt;A href="https://software.intel.com/en-us/articles/intel-xeon-phi-coprocessor-april-2013-developer-webinar-qa-responses" target="_blank"&gt;https://software.intel.com/en-us/articles/intel-xeon-phi-coprocessor-april-2013-developer-webinar-qa-responses&lt;/A&gt; (search for "renaming" in the page).&lt;/P&gt;

&lt;P&gt;With the current Xeon Phi design, it is probably not possible to need more physical registers than named registers -- the combination of instruction issue rate and pipeline latency is too low.&amp;nbsp; There might still be register renaming to avoid false conflicts, but I don't see a need for the number of physical registers to be larger than the (aggregate) number of named registers.&amp;nbsp;&amp;nbsp; If register renaming is used for this purpose, I can't see any way to determine whether the renaming is from a single set of 128 physical registers or from four sets of 32 physical registers.&lt;/P&gt;

&lt;P&gt;With the doubling of issue rate and the doubling of the number of functional units in the next-generation Xeon Phi, it is possible that more than 32 physical registers will be needed to fully tolerate the pipeline latency for a single thread.&amp;nbsp; In that case it may make more sense to rename from a single pool than from separate pools.&amp;nbsp;&amp;nbsp; It is unlikely that Intel will comment on the implementation at this level of detail, unless it happens to be one of the (few) technology features that they choose to highlight at Hot Chips or some other public event.&lt;/P&gt;</description>
    <pubDate>Wed, 13 May 2015 18:37:03 GMT</pubDate>
    <dc:creator>McCalpinJohn</dc:creator>
    <dc:date>2015-05-13T18:37:03Z</dc:date>
    <item>
      <title>Intel Xeon Phi - VPU registers</title>
      <link>https://community.intel.com/t5/Software-Archive/Intel-Xeon-Phi-VPU-registers/m-p/997644#M28803</link>
      <description>&lt;P&gt;Hi,&lt;/P&gt;

&lt;P&gt;I have a question about VPU. H&lt;SPAN style="color: rgb(34, 34, 34); font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 13px; line-height: 16.8999996185303px;"&gt;ow many registers phisical the MIC VPU has got? 32 or 128?&lt;/SPAN&gt;&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Mon, 11 May 2015 16:56:17 GMT</pubDate>
      <guid>https://community.intel.com/t5/Software-Archive/Intel-Xeon-Phi-VPU-registers/m-p/997644#M28803</guid>
      <dc:creator>H__Kamil</dc:creator>
      <dc:date>2015-05-11T16:56:17Z</dc:date>
    </item>
    <item>
      <title>Each physical thread has 32</title>
      <link>https://community.intel.com/t5/Software-Archive/Intel-Xeon-Phi-VPU-registers/m-p/997645#M28804</link>
      <description>&lt;P&gt;Each physical thread has 32 vpu registers&lt;/P&gt;</description>
      <pubDate>Mon, 11 May 2015 20:51:10 GMT</pubDate>
      <guid>https://community.intel.com/t5/Software-Archive/Intel-Xeon-Phi-VPU-registers/m-p/997645#M28804</guid>
      <dc:creator>TimP</dc:creator>
      <dc:date>2015-05-11T20:51:10Z</dc:date>
    </item>
    <item>
      <title>Ok. I understand it in in</title>
      <link>https://community.intel.com/t5/Software-Archive/Intel-Xeon-Phi-VPU-registers/m-p/997646#M28805</link>
      <description>&lt;P&gt;Ok. I understand it in in this way: VPU have 128 phisycal registers. Each thread have 32 own registers. Am i right?&lt;/P&gt;</description>
      <pubDate>Mon, 11 May 2015 21:28:44 GMT</pubDate>
      <guid>https://community.intel.com/t5/Software-Archive/Intel-Xeon-Phi-VPU-registers/m-p/997646#M28805</guid>
      <dc:creator>H__Kamil</dc:creator>
      <dc:date>2015-05-11T21:28:44Z</dc:date>
    </item>
    <item>
      <title>Each thread context (aka</title>
      <link>https://community.intel.com/t5/Software-Archive/Intel-Xeon-Phi-VPU-registers/m-p/997647#M28806</link>
      <description>&lt;P&gt;Each thread context (aka "logical processor") has its own private set of 32 named vector registers.&amp;nbsp; Since each core supports four thread contexts, there must be (at least) 128 vector registers in each core.&amp;nbsp; This is reasonably clear from the discussion at &lt;A href="https://software.intel.com/en-us/articles/intel-xeon-phi-coprocessor-april-2013-developer-webinar-qa-responses" target="_blank"&gt;https://software.intel.com/en-us/articles/intel-xeon-phi-coprocessor-april-2013-developer-webinar-qa-responses&lt;/A&gt; (search for "renaming" in the page).&lt;/P&gt;

&lt;P&gt;With the current Xeon Phi design, it is probably not possible to need more physical registers than named registers -- the combination of instruction issue rate and pipeline latency is too low.&amp;nbsp; There might still be register renaming to avoid false conflicts, but I don't see a need for the number of physical registers to be larger than the (aggregate) number of named registers.&amp;nbsp;&amp;nbsp; If register renaming is used for this purpose, I can't see any way to determine whether the renaming is from a single set of 128 physical registers or from four sets of 32 physical registers.&lt;/P&gt;

&lt;P&gt;With the doubling of issue rate and the doubling of the number of functional units in the next-generation Xeon Phi, it is possible that more than 32 physical registers will be needed to fully tolerate the pipeline latency for a single thread.&amp;nbsp; In that case it may make more sense to rename from a single pool than from separate pools.&amp;nbsp;&amp;nbsp; It is unlikely that Intel will comment on the implementation at this level of detail, unless it happens to be one of the (few) technology features that they choose to highlight at Hot Chips or some other public event.&lt;/P&gt;</description>
      <pubDate>Wed, 13 May 2015 18:37:03 GMT</pubDate>
      <guid>https://community.intel.com/t5/Software-Archive/Intel-Xeon-Phi-VPU-registers/m-p/997647#M28806</guid>
      <dc:creator>McCalpinJohn</dc:creator>
      <dc:date>2015-05-13T18:37:03Z</dc:date>
    </item>
    <item>
      <title>I thought hardware renaming</title>
      <link>https://community.intel.com/t5/Software-Archive/Intel-Xeon-Phi-VPU-registers/m-p/997648#M28807</link>
      <description>&lt;P&gt;I thought hardware renaming was done to enable out of order instruction execution. &amp;nbsp;That does tend to be associated with longer pipelines and requirements for more registers.&lt;/P&gt;

&lt;P&gt;I have seen Mic applications use 24 vpu registers per thread but then they don't need more than 2 threads. &amp;nbsp;So it seems 128 registers are enough for knc.&lt;/P&gt;

&lt;P&gt;I find that URL John quoted a bit difficult as it answers questions both about coprocessor and host, as well as being outdated sometimes.&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Thu, 14 May 2015 12:39:51 GMT</pubDate>
      <guid>https://community.intel.com/t5/Software-Archive/Intel-Xeon-Phi-VPU-registers/m-p/997648#M28807</guid>
      <dc:creator>TimP</dc:creator>
      <dc:date>2015-05-14T12:39:51Z</dc:date>
    </item>
    <item>
      <title>Each hardware thread context</title>
      <link>https://community.intel.com/t5/Software-Archive/Intel-Xeon-Phi-VPU-registers/m-p/997649#M28808</link>
      <description>&lt;P&gt;Each hardware&amp;nbsp;thread context on KNC additionally has&amp;nbsp;eight 16-bit mask registers (supporting element widths of 4 and 8 bytes). It is unknown (to me) as to if future generations of AVX512 will support 32 or 64 bit mask registers (to cover all supported element widths (short and byte)).&lt;/P&gt;

&lt;P&gt;Jim Dempsey&lt;/P&gt;</description>
      <pubDate>Thu, 14 May 2015 14:10:25 GMT</pubDate>
      <guid>https://community.intel.com/t5/Software-Archive/Intel-Xeon-Phi-VPU-registers/m-p/997649#M28808</guid>
      <dc:creator>jimdempseyatthecove</dc:creator>
      <dc:date>2015-05-14T14:10:25Z</dc:date>
    </item>
    <item>
      <title>According to what I read,</title>
      <link>https://community.intel.com/t5/Software-Archive/Intel-Xeon-Phi-VPU-registers/m-p/997650#M28809</link>
      <description>&lt;P&gt;According to what I read, each implementation of avx512 must be &amp;nbsp;a superset of avx512f. &amp;nbsp;So if that has byte wise mask all must.&lt;/P&gt;</description>
      <pubDate>Thu, 14 May 2015 21:36:05 GMT</pubDate>
      <guid>https://community.intel.com/t5/Software-Archive/Intel-Xeon-Phi-VPU-registers/m-p/997650#M28809</guid>
      <dc:creator>TimP</dc:creator>
      <dc:date>2015-05-14T21:36:05Z</dc:date>
    </item>
    <item>
      <title>Hardware register renaming is</title>
      <link>https://community.intel.com/t5/Software-Archive/Intel-Xeon-Phi-VPU-registers/m-p/997651#M28810</link>
      <description>&lt;P&gt;Hardware register renaming is done to prevent false conflicts from stalling execution --- see the discussion labelled "anti-dependency" at &lt;A href="https://en.wikipedia.org/wiki/Data_dependency" target="_blank"&gt;https://en.wikipedia.org/wiki/Data_dependency&lt;/A&gt;, or the discussion of Data Hazards at&amp;nbsp;https://en.wikipedia.org/wiki/Register_renaming .&amp;nbsp;&amp;nbsp; Both of these note that the anti-dependency can be eliminated by a renaming operation.&amp;nbsp; This renaming can be done either in hardware or in software.&amp;nbsp;&amp;nbsp;&lt;/P&gt;

&lt;P&gt;False dependencies of this type can occur in either in-order or out-of-order processors.&amp;nbsp; For in-order processors the compiler can often use different register names to avoid the false dependency, but it seems like most compilers assume that the hardware can rename registers, so I don't see this happening very often any more.&amp;nbsp; Most academic computer science references assert that false dependencies are rare in in-order processors, but that depends on lots of assumptions about how long registers are "held" by an instruction.&amp;nbsp; Microarchitectures that are designed to detect and recover from errors at any stage of the pipeline may hold on to registers for a lot longer than a textbook might expect, and this can lead to stalls due to false dependencies.&lt;/P&gt;

&lt;P&gt;In any case, for out-of-order processors the false dependencies are much more common because there are a large number of instructions in flight, and all are competing for a limited number of register names.&amp;nbsp; The compiler can still make an effort to remove false dependencies, but it typically does not have enough independent register names to avoid all false conflicts in the out-of-order window.&lt;/P&gt;</description>
      <pubDate>Fri, 15 May 2015 18:17:00 GMT</pubDate>
      <guid>https://community.intel.com/t5/Software-Archive/Intel-Xeon-Phi-VPU-registers/m-p/997651#M28810</guid>
      <dc:creator>McCalpinJohn</dc:creator>
      <dc:date>2015-05-15T18:17:00Z</dc:date>
    </item>
  </channel>
</rss>

