<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:clearspace="http://www.jivesoftware.com/xmlns/clearspace/rss" xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0">
  <channel>
    <title>Intel Communities: Message List - Strange behaviour when reading MPB</title>
    <link>http://communities.intel.com/community/marc?view=discussions</link>
    <description>Most recent forum messages</description>
    <language>en</language>
    <pubDate>Tue, 26 Jul 2011 23:01:53 GMT</pubDate>
    <generator>Jive SBS 5.0.2.0  (http://jivesoftware.com/products/clearspace/)</generator>
    <dc:date>2011-07-26T23:01:53Z</dc:date>
    <dc:language>en</dc:language>
    <item>
      <title>Re: Strange behaviour when reading MPB</title>
      <link>http://communities.intel.com/message/133803?tstart=0#133803</link>
      <description>&lt;!-- [DocumentBodyStart:fdfb91e3-1be8-451c-8403-27d71fdf8310] --&gt;&lt;div class="jive-rendered-content"&gt;&lt;p&gt;We actually ran a test today for all possible configurations of the PCD, PWT and MPBT flags. Only when both PCD and MPBT are set this situation occurs, so not when using uncached shared memory. Therefore I suspect that the M-unit makes a wrong request (always a whole cacheline) in MPBT mode.&lt;/p&gt;&lt;p style="min-height: 8pt; height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;Perhaps we should also test if the data ends up in L1 at the same time even though PCD is set, but I don't really have time to write such tests at the moment unfortunately - and if PCD + MPBT is broken anyway, it's not very important either, it's more a curiosity thing &lt;img height="16px" src="http://communities.intel.com/5.0.2/images/emoticons/wink.gif" width="16px"/&gt;&lt;/p&gt;&lt;/div&gt;&lt;!-- [DocumentBodyEnd:fdfb91e3-1be8-451c-8403-27d71fdf8310] --&gt;</description>
      <pubDate>Tue, 26 Jul 2011 22:59:09 GMT</pubDate>
      <author>webadmin@intel.com</author>
      <guid>http://communities.intel.com/message/133803?tstart=0#133803</guid>
      <dc:date>2011-07-26T22:59:09Z</dc:date>
      <clearspace:dateToText>1 year, 10 months ago</clearspace:dateToText>
      <clearspace:objectType>0</clearspace:objectType>
    </item>
    <item>
      <title>Re: Strange behaviour when reading MPB</title>
      <link>http://communities.intel.com/message/133800?tstart=0#133800</link>
      <description>&lt;!-- [DocumentBodyStart:355c7a42-17fc-4312-a5f4-6f7140bd4062] --&gt;&lt;div class="jive-rendered-content"&gt;&lt;p&gt;Yes, Michiel's suggestion does seem logical. I do know though that when we have uncacheable shared memory we can access all the locations. The problem you are experiencing seems specific to&amp;nbsp; MPBT memory, and I don't understand why that would be true.&lt;/p&gt;&lt;/div&gt;&lt;!-- [DocumentBodyEnd:355c7a42-17fc-4312-a5f4-6f7140bd4062] --&gt;</description>
      <pubDate>Tue, 26 Jul 2011 22:05:10 GMT</pubDate>
      <author>webadmin@intel.com</author>
      <guid>http://communities.intel.com/message/133800?tstart=0#133800</guid>
      <dc:date>2011-07-26T22:05:10Z</dc:date>
      <clearspace:dateToText>1 year, 10 months ago</clearspace:dateToText>
      <clearspace:replyCount>1</clearspace:replyCount>
      <clearspace:objectType>0</clearspace:objectType>
    </item>
    <item>
      <title>Re: Strange behaviour when reading MPB</title>
      <link>http://communities.intel.com/message/133797?tstart=0#133797</link>
      <description>&lt;!-- [DocumentBodyStart:7871ecfd-629c-49d3-979c-563d412fd5a9] --&gt;&lt;div class="jive-rendered-content"&gt;&lt;p&gt;Yes, that's the behaviour I'm experiencing. No matter what 8-byte offset of a cacheline I read, I get always the value of the first eight bytes. There's no way to get the other 24 bytes of the cacheline.&lt;/p&gt;&lt;p style="min-height: 8pt; height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;Michiels suggestion sounds very reasonable to me. Maybe that's the thing to investigate.&lt;/p&gt;&lt;/div&gt;&lt;!-- [DocumentBodyEnd:7871ecfd-629c-49d3-979c-563d412fd5a9] --&gt;</description>
      <pubDate>Tue, 26 Jul 2011 21:01:07 GMT</pubDate>
      <author>webadmin@intel.com</author>
      <guid>http://communities.intel.com/message/133797?tstart=0#133797</guid>
      <dc:date>2011-07-26T21:01:07Z</dc:date>
      <clearspace:dateToText>1 year, 10 months ago</clearspace:dateToText>
      <clearspace:replyCount>2</clearspace:replyCount>
      <clearspace:objectType>0</clearspace:objectType>
    </item>
    <item>
      <title>Re: Strange behaviour when reading MPB</title>
      <link>http://communities.intel.com/message/133795?tstart=0#133795</link>
      <description>&lt;!-- [DocumentBodyStart:70b1db39-2ab3-45b9-a01d-856f32cdb1b7] --&gt;&lt;div class="jive-rendered-content"&gt;&lt;p&gt;So does this mean that Markus cannot get at the other values? His MPB contains the following&lt;/p&gt;&lt;p&gt;00000020&amp;nbsp; |&amp;nbsp; 00 01 02 03 04 05 06 07&lt;/p&gt;&lt;p&gt;00000028&amp;nbsp; |&amp;nbsp; 08 09 0a 0b 0c 0d 0e 0f&lt;/p&gt;&lt;p&gt;00000030&amp;nbsp; |&amp;nbsp; 10 11 12 13 14 15 16 17&lt;/p&gt;&lt;p&gt;00000038&amp;nbsp; |&amp;nbsp; 18 19 1a 1b 1c 1d 1e 1f&lt;/p&gt;&lt;p style="min-height: 8pt; height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;And he reads&lt;/p&gt;&lt;p&gt;00 01 02 03 04 05 06 07&lt;/p&gt;&lt;p&gt;00 01 02 03 04 05 06 07&lt;/p&gt;&lt;p&gt;00 01 02 03 04 05 06 07&lt;/p&gt;&lt;p&gt;00 01 02 03 04 05 06 07&lt;/p&gt;&lt;p style="min-height: 8pt; height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;Markus, is that what you get when you read 0x20 and then 0x28 and then 0x30 and then 0x38? Does that mean that it&amp;#8217;s not possible to read the correct value in 0x28 ... that, for example,&amp;nbsp; 0x28 really does contain 08 09 0a 0b 0c 0d 0e 0f but your&amp;nbsp; read returns 00 01 02 03 04 05 06 07&lt;/p&gt;&lt;p style="min-height: 8pt; height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;Is the reason ... that the P54C always returns the cacheline that contains the address we are reading (whether or not the memory is cacheable), but if it is not cacheable then only the first 8 bytes get put on the bus. And so you cannot access the other addresses.&lt;/p&gt;&lt;p style="min-height: 8pt; height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;But we access uncacheable shared memory just fine. Is this strange behavior only for the MPB and MPBT memory?&lt;/p&gt;&lt;p style="min-height: 8pt; height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;We'll of course try out some example here, but I wanted to understand the specifics of the issue first.&lt;/p&gt;&lt;/div&gt;&lt;!-- [DocumentBodyEnd:70b1db39-2ab3-45b9-a01d-856f32cdb1b7] --&gt;</description>
      <pubDate>Tue, 26 Jul 2011 20:13:20 GMT</pubDate>
      <author>webadmin@intel.com</author>
      <guid>http://communities.intel.com/message/133795?tstart=0#133795</guid>
      <dc:date>2011-07-26T20:13:20Z</dc:date>
      <clearspace:dateToText>1 year, 10 months ago</clearspace:dateToText>
      <clearspace:replyCount>3</clearspace:replyCount>
      <clearspace:objectType>0</clearspace:objectType>
    </item>
    <item>
      <title>Re: Strange behaviour when reading MPB</title>
      <link>http://communities.intel.com/message/133740?tstart=0#133740</link>
      <description>&lt;!-- [DocumentBodyStart:fe8bfc2a-2aaf-42f8-a57c-56a9fdbe50ee] --&gt;&lt;div class="jive-rendered-content"&gt;&lt;p&gt;We have just investigated this problem, and we can confirm that this behavior indeed happens when both the uncacheable and MPBT flags are set, and only occurs when reading data. Not only from the MPB, but also when reading data from main memory with these two flags set.&lt;/p&gt;&lt;p style="min-height: 8pt; height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;What happens (I think) is the following;&lt;/p&gt;&lt;p&gt;- A read request of uncachable MPBT type arrives at either the MPB or the memory controller,&lt;/p&gt;&lt;p&gt;- For some reason, not a 32-bit value, but a whole cacheline is sent back as reply&lt;/p&gt;&lt;p&gt;- Then, as the P54C bus is 64bits wide, the data read by the core is always the first 64 bits of the cacheline (this is what you see in your example)&lt;/p&gt;&lt;p style="min-height: 8pt; height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;My assumption is that the M-unit sends a request for a whole cacheline when issuing a read reqeust of MPBT data, not checking the uncacheable flag. However when the data comes back the data is not put in the cache, but just on the P54C bus.&lt;/p&gt;&lt;p style="min-height: 8pt; height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;Is this a viable explanation? At least it fits exactly the behavior that we have observed...&lt;/p&gt;&lt;/div&gt;&lt;!-- [DocumentBodyEnd:fe8bfc2a-2aaf-42f8-a57c-56a9fdbe50ee] --&gt;</description>
      <pubDate>Tue, 26 Jul 2011 14:39:24 GMT</pubDate>
      <author>webadmin@intel.com</author>
      <guid>http://communities.intel.com/message/133740?tstart=0#133740</guid>
      <dc:date>2011-07-26T14:39:24Z</dc:date>
      <clearspace:dateToText>1 year, 10 months ago</clearspace:dateToText>
      <clearspace:replyCount>4</clearspace:replyCount>
      <clearspace:objectType>0</clearspace:objectType>
    </item>
    <item>
      <title>Re: Strange behaviour when reading MPB</title>
      <link>http://communities.intel.com/message/133660?tstart=0#133660</link>
      <description>&lt;!-- [DocumentBodyStart:4cdc2cd7-009c-42aa-8668-63a161a607c5] --&gt;&lt;div class="jive-rendered-content"&gt;&lt;p&gt;As far as I can tell, they never use uncached access to the MPB (or MPBT-tagged memory).&lt;/p&gt;&lt;p style="min-height: 8pt; height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;But I also can't really see the problem when doing so, so I would be glad to hear from the hardware experts what exactly happens with these flags.&lt;/p&gt;&lt;p style="min-height: 8pt; height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;For now, I'll stick with MPBT+cached memory.&lt;/p&gt;&lt;/div&gt;&lt;!-- [DocumentBodyEnd:4cdc2cd7-009c-42aa-8668-63a161a607c5] --&gt;</description>
      <pubDate>Mon, 25 Jul 2011 20:43:37 GMT</pubDate>
      <author>webadmin@intel.com</author>
      <guid>http://communities.intel.com/message/133660?tstart=0#133660</guid>
      <dc:date>2011-07-25T20:43:37Z</dc:date>
      <clearspace:dateToText>1 year, 10 months ago</clearspace:dateToText>
      <clearspace:objectType>0</clearspace:objectType>
    </item>
    <item>
      <title>Re: Strange behaviour when reading MPB</title>
      <link>http://communities.intel.com/message/133667?tstart=0#133667</link>
      <description>&lt;!-- [DocumentBodyStart:361ee57b-287b-40f9-a738-3161d0143f64] --&gt;&lt;div class="jive-rendered-content"&gt;&lt;p&gt;I did check with the implementers as Jim suggested. In theory one should be able to use the WCB without enabling L1.&lt;/p&gt;&lt;p style="min-height: 8pt; height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;There is some related work that you can look at. Have you seen &lt;em&gt;Efficient Memory Copy Operations on the 48-core Intel SCC Processor&lt;/em&gt;?&lt;/p&gt;&lt;p&gt;&lt;a class="jive-link-wiki-small" data-containerId="2289" data-containerType="14" data-objectId="6872" data-objectType="102" href="http://communities.intel.com/docs/DOC-6872"&gt;http://communities.intel.com/docs/DOC-6872&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;&lt;!-- [DocumentBodyEnd:361ee57b-287b-40f9-a738-3161d0143f64] --&gt;</description>
      <pubDate>Mon, 25 Jul 2011 19:00:17 GMT</pubDate>
      <author>webadmin@intel.com</author>
      <guid>http://communities.intel.com/message/133667?tstart=0#133667</guid>
      <dc:date>2011-07-25T19:00:17Z</dc:date>
      <clearspace:dateToText>1 year, 10 months ago</clearspace:dateToText>
      <clearspace:replyCount>1</clearspace:replyCount>
      <clearspace:objectType>0</clearspace:objectType>
    </item>
    <item>
      <title>Re: Strange behaviour when reading MPB</title>
      <link>http://communities.intel.com/message/133298?tstart=0#133298</link>
      <description>&lt;!-- [DocumentBodyStart:28339c05-2253-40d0-a0ea-de8e84cde279] --&gt;&lt;div class="jive-rendered-content"&gt;&lt;p&gt;I see what you mean.&amp;nbsp; The WCB consolidates the write accesses when MPBT is on, which is an enhancement given the 'write-around' behavior of P54C.&lt;/p&gt;&lt;p&gt;The EAS suggests you can trigger the WCB without side effects from the cache aspects of MPBT and use it with UC.&amp;nbsp; I'm suspicious - we'll check with the folks who did the MPBT implementation to see if they have tested that mode.&lt;/p&gt;&lt;/div&gt;&lt;!-- [DocumentBodyEnd:28339c05-2253-40d0-a0ea-de8e84cde279] --&gt;</description>
      <pubDate>Fri, 22 Jul 2011 16:13:14 GMT</pubDate>
      <author>webadmin@intel.com</author>
      <guid>http://communities.intel.com/message/133298?tstart=0#133298</guid>
      <dc:date>2011-07-22T16:13:14Z</dc:date>
      <clearspace:dateToText>1 year, 10 months ago</clearspace:dateToText>
      <clearspace:replyCount>2</clearspace:replyCount>
      <clearspace:objectType>0</clearspace:objectType>
    </item>
    <item>
      <title>Re: Strange behaviour when reading MPB</title>
      <link>http://communities.intel.com/message/133246?tstart=0#133246</link>
      <description>&lt;!-- [DocumentBodyStart:031fa709-3efe-4d6a-9bc0-a6b54b5224ec] --&gt;&lt;div class="jive-rendered-content"&gt;&lt;blockquote class="jive-quote"&gt;How are you allocating MPB memory as uncacheable?&lt;/blockquote&gt;&lt;p&gt;I just map memory from MPB and make sure that in the pagetable entry there is bit 3 set.&lt;/p&gt;&lt;p style="min-height: 8pt; height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;blockquote class="jive-quote"&gt;&lt;p&gt;I'm not sure if this is appropriate but have you looked at Bug 46? There is a known hw SCC bug in the MPB bypass logic.&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;No, I'm not using this bypass bit, never considered using it because of this hardware bug.&lt;/p&gt;&lt;p style="min-height: 8pt; height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p style="min-height: 8pt; height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;Jim, Page 31 of the EAS says&lt;/p&gt;&lt;blockquote class="jive-quote"&gt;&lt;p&gt;Defining data as UC + MPBT could be used to accelerate UC writes to the DDR3 memory because the hardware uses the write combine buffer when the MPBT bit is set.&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;There's no mention of undefined behaviour of MPB memory. So if this is really no valid configuration for MPB, I think it should be mentioned somewhere in the manual. Or did I just miss it somewhere else?&lt;/p&gt;&lt;/div&gt;&lt;!-- [DocumentBodyEnd:031fa709-3efe-4d6a-9bc0-a6b54b5224ec] --&gt;</description>
      <pubDate>Fri, 22 Jul 2011 07:24:26 GMT</pubDate>
      <author>webadmin@intel.com</author>
      <guid>http://communities.intel.com/message/133246?tstart=0#133246</guid>
      <dc:date>2011-07-22T07:24:26Z</dc:date>
      <clearspace:dateToText>1 year, 10 months ago</clearspace:dateToText>
      <clearspace:replyCount>3</clearspace:replyCount>
      <clearspace:objectType>0</clearspace:objectType>
    </item>
    <item>
      <title>Re: Strange behaviour when reading MPB</title>
      <link>http://communities.intel.com/message/133188?tstart=0#133188</link>
      <description>&lt;!-- [DocumentBodyStart:f0f941a0-be35-4f1f-9528-bb991cb86e16] --&gt;&lt;div class="jive-rendered-content"&gt;&lt;p&gt;How are you allocating MPB memory as uncacheable?&lt;/p&gt;&lt;p style="min-height: 8pt; height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;If I understand your post correctly ... you allocate some MPB memory as uncacheable, set MPBT, write to that memory; but then when you read a cacheline, you see the first 8 bytes of that 32-byte line repeated thoughout the line. Is this all happening on one core?&amp;nbsp; It seems to me that if it's one core doing the writing and reading, it shouldn't matter whether the memory is cacheable or not; but if you are having one core read what another has written, then the operation of L1 is important.&lt;/p&gt;&lt;p style="min-height: 8pt; height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;MPBT memory is intended to bypass L2, so it must be L1 that your allocated memory is not using. You tried using CL1INVD ... I assume just to see what happens, but if you are truly not using L1, CL1INVD isn't going to do anything.&lt;/p&gt;&lt;p style="min-height: 8pt; height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;You see the same problem if you disable L1, which is actually not the same as allocating uncacheable memory because L1 is non-unified.&lt;/p&gt;&lt;p style="min-height: 8pt; height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;You don't see the problem when you use MBPT and allocate MPB as cacheable. That part is encouraging. This is what I would see as typical operation.&lt;/p&gt;&lt;p style="min-height: 8pt; height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;I'm not sure if this is appropriate but have you looked at Bug 46? There is a known hw SCC bug in the MPB bypass logic.&lt;/p&gt;&lt;/div&gt;&lt;!-- [DocumentBodyEnd:f0f941a0-be35-4f1f-9528-bb991cb86e16] --&gt;</description>
      <pubDate>Thu, 21 Jul 2011 23:08:16 GMT</pubDate>
      <author>webadmin@intel.com</author>
      <guid>http://communities.intel.com/message/133188?tstart=0#133188</guid>
      <dc:date>2011-07-21T23:08:16Z</dc:date>
      <clearspace:dateToText>1 year, 10 months ago</clearspace:dateToText>
      <clearspace:replyCount>4</clearspace:replyCount>
      <clearspace:objectType>0</clearspace:objectType>
    </item>
  </channel>
</rss>

