<?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 Re: DRAM slowdown on 3010 chipset in Graphics</title>
    <link>https://community.intel.com/t5/Graphics/DRAM-slowdown-on-3010-chipset/m-p/353953#M23063</link>
    <description>&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  Intel 3010 MCH has some undocumented memory base arrdess map control register that related to the DRAM Throttling function.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  One is the C0DTC(Channel 0 DRAM Throttling Control) offset is 0x158h.&lt;/P&gt;&lt;P&gt;  Another is the C1DTC(Channel 1 DRAM Throttling Control) offset is 0x1D8h.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  Their Bit 21(),  Bit 17, Bit 16 are related to control the enable or disable of the (DRAM Throttling function) &amp;amp; (DDR2 400 or DDR2 533 DRAM Throttling) &amp;amp; (DDR2 667 DRAM Throttling).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  When DRAM Throttling function is ebabled and if dram work with single channel mode or full channel are populated drams configuration,&lt;/P&gt;&lt;P&gt;  in our experiments we found the DRAM Throttling function began to work and saw the memory performance will go slow down and ERRSTS bit 7 will be   assreted also.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  So if we manually to disable the Bit 21 &amp;amp; Bit 17 &amp;amp; Bit 16 of the Channel 0 &amp;amp; Channel 1 DRAM Throttling control register then the memory copy performance will not go to slow down.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  I wrote a tool to manually disable the DRAM Throttling function under Linux call disDT.c for your verification.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/P&gt;&lt;P&gt;/*&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;Author: Lorence Chen 2010/03/30&lt;P&gt;&amp;nbsp;&lt;/P&gt;*/&lt;P&gt;# include &lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;# include &lt;P&gt;&amp;nbsp;&lt;/P&gt;# include &lt;P&gt;&amp;nbsp;&lt;/P&gt;# include &lt;P&gt;&amp;nbsp;&lt;/P&gt;# include &lt;P&gt;&amp;nbsp;&lt;/P&gt;# include &lt;P&gt;&amp;nbsp;&lt;/P&gt;# include &lt;P&gt;&amp;nbsp;&lt;/P&gt;# include &lt;P&gt;# define u8 unsigned char&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;# define u16 unsigned short&lt;P&gt;&amp;nbsp;&lt;/P&gt;# define u32 unsigned int&lt;P&gt;//4.2 MCHBAR Configuration Register Details&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;// The MCHBAR registers are offset from the MCHBAR base address. Table 4-2 provides an&lt;P&gt;&amp;nbsp;&lt;/P&gt;// address map of the registers listed by address offset in ascending order. Detailed bit&lt;P&gt;&amp;nbsp;&lt;/P&gt;// descriptions of the registers follow the table.&lt;P&gt;&amp;nbsp;&lt;/P&gt;//&lt;P&gt;&amp;nbsp;&lt;/P&gt;// Table 4-2. Undocumented MCHBAR Register Address Map&lt;P&gt;&amp;nbsp;&lt;/P&gt;// Address Offset    Register Symbol    Register Name&lt;P&gt;&amp;nbsp;&lt;/P&gt;//   &lt;P&gt;&amp;nbsp;&lt;/P&gt;// 158h              C0DTC              Channel 0 DRAM Throttling Control&lt;P&gt;&amp;nbsp;&lt;/P&gt;// 1D8h              C1DTC              Channel 1 DRAM Throttling Control&lt;P&gt;# define MCHBAR_ADDR      0xFED14000&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;# define MCHBAR_C0DTC     0x158&lt;P&gt;&amp;nbsp;&lt;/P&gt;# define MCHBAR_C1DTC     0x1D8&lt;P&gt;# define MSM_MDP_PHYS MCHBAR_ADDR&lt;/P&gt;&lt;P&gt;# define MSM_MDP_SIZE 0x00001000&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;# define MSM_MDP_MASK (MSM_MDP_SIZE-1) &lt;P&gt;&amp;nbsp;&lt;/P&gt;int main(){&lt;P&gt;  void *vaddr1, *vaddr2;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;  int errors = 0;&lt;P&gt;&amp;nbsp;&lt;/P&gt;  int fd;&lt;P&gt;  fd = open("/dev/mem", O_RDWR | O_SYNC);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;  printf("/dev/mem opened.\n");&lt;P&gt;&amp;nbsp;&lt;/P&gt;  fflush(stdout);&lt;P&gt;  printf("MCHBAR ADDRESS is 0x%8Xh\n", MSM_MDP_PHYS &amp;amp; ~MSM_MDP_MASK);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;  vaddr1 = mmap(0, MSM_MDP_SIZE, PROT_READ | PROT_WRITE, MAP_SHARED,\&lt;P&gt;&amp;nbsp;&lt;/P&gt;  fd, MSM_MDP_PHYS &amp;amp; ~MSM_MDP_MASK);&lt;P&gt;  if(vaddr1 == (void *) -1) {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;  printf("mapping error!!\n");&lt;P&gt;&amp;nbsp;&lt;/P&gt;  return -1;&lt;P&gt;&amp;nbsp;&lt;/P&gt;  } &lt;P&gt;//MCHBAR_C0DTC    0x158  &lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;  vaddr2 = vaddr1 + MCHBAR_C0DTC;&lt;P&gt;&amp;nbsp;&lt;/P&gt;  *(volatile u32 *)(vaddr2) = 0x2300; //Here please to make sure to set Bit 21, Bit 17 &amp;amp; Bit 16 to value 0 to disable the DRAM Throttlink function.&lt;P&gt;&amp;nbsp;&lt;/P&gt;  printf("MCHBAR_C0DTC (offset MCHBAR + 0x158) value is 0x%8Xh\n", *(volatile u32 *)(vaddr2));&lt;P&gt;&amp;nbsp;&lt;/P&gt;//MCHBAR_C1DTC    0x1D8  &lt;P&gt;&amp;nbsp;&lt;/P&gt;  vaddr2 = vaddr1 + MCHBAR_C1DTC ;&lt;P&gt;&amp;nbsp;&lt;/P&gt;  *(volatile u32 *)(vaddr2) = 0x2300; //Here please to make sure to set Bit 21, Bit 17 &amp;amp; Bit 16 to value 0 to disable the DRAM Throttlink function.&lt;P&gt;&amp;nbsp;&lt;/P&gt;  printf("MCHBAR_C1DTC (offset MCHBAR + 0x1D8) value is 0x%8Xh\n", *(volatile u32 *)(vaddr2));                           &lt;P&gt;&amp;nbsp;&lt;/P&gt;  fflush(stdout);&lt;P&gt;&amp;nbsp;&lt;/P&gt;//&amp;lt;&amp;lt;&amp;lt;p&amp;gt;&amp;nbsp;  munmap(vaddr1, MSM_MDP_SIZE);&lt;P&gt;  close(fd);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;  return errors;&lt;P&gt;&amp;nbsp;&lt;/P&gt;}&lt;P&gt;&amp;lt;&amp;lt;&amp;lt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;to compile it please use command:&lt;/P&gt;&lt;P&gt;gcc -O2 -o disDT disDT.c&lt;/P&gt;&lt;P&gt;to run it please use&lt;/P&gt;&lt;P&gt;./disDT&lt;/P&gt;&lt;P&gt;before you run the combo.c&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;please check it.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Lorence&lt;/P&gt;&lt;P&gt;2010/03/30&lt;/P&gt;</description>
    <pubDate>Tue, 30 Mar 2010 14:40:53 GMT</pubDate>
    <dc:creator>idata</dc:creator>
    <dc:date>2010-03-30T14:40:53Z</dc:date>
    <item>
      <title>DRAM slowdown on 3010 chipset</title>
      <link>https://community.intel.com/t5/Graphics/DRAM-slowdown-on-3010-chipset/m-p/353952#M23062</link>
      <description>&lt;P&gt;Hello.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;We've found a condition on one of our 3010-based systems such that when it is populated with 8GB of RAM, then heavily exercising main memory causes a dramatic slowdown in speed after a few seconds.  Note that if the system is populated with less than 8 ranks of memory (i.e., if we load it with 4 single sided or 2 double sided DIMMs), then the slowdown does NOT occur.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;We have noticed that when the slowdown occurs, bit 7 becomes set in the MCH ERRSTS register (i.e., value = 0080h).  If we try to clear the bit, it stays set, but if we stop exercising RAM for a moment, then we can clear the bit and it stays cleared until we begin exercising RAM again.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The exercise is simple, just copying a buffer repeatedly that is larger than the L2 cache so that it's forced to go to main memory all the time.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Unfortunately ERRSTS bit 7 is "reserved".  Can anyone tell us what this bit means and what might cause this?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks,&lt;/P&gt;&lt;P&gt;lew&lt;/P&gt;</description>
      <pubDate>Fri, 19 Feb 2010 04:00:54 GMT</pubDate>
      <guid>https://community.intel.com/t5/Graphics/DRAM-slowdown-on-3010-chipset/m-p/353952#M23062</guid>
      <dc:creator>LDonz</dc:creator>
      <dc:date>2010-02-19T04:00:54Z</dc:date>
    </item>
    <item>
      <title>Re: DRAM slowdown on 3010 chipset</title>
      <link>https://community.intel.com/t5/Graphics/DRAM-slowdown-on-3010-chipset/m-p/353953#M23063</link>
      <description>&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  Intel 3010 MCH has some undocumented memory base arrdess map control register that related to the DRAM Throttling function.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  One is the C0DTC(Channel 0 DRAM Throttling Control) offset is 0x158h.&lt;/P&gt;&lt;P&gt;  Another is the C1DTC(Channel 1 DRAM Throttling Control) offset is 0x1D8h.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  Their Bit 21(),  Bit 17, Bit 16 are related to control the enable or disable of the (DRAM Throttling function) &amp;amp; (DDR2 400 or DDR2 533 DRAM Throttling) &amp;amp; (DDR2 667 DRAM Throttling).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  When DRAM Throttling function is ebabled and if dram work with single channel mode or full channel are populated drams configuration,&lt;/P&gt;&lt;P&gt;  in our experiments we found the DRAM Throttling function began to work and saw the memory performance will go slow down and ERRSTS bit 7 will be   assreted also.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  So if we manually to disable the Bit 21 &amp;amp; Bit 17 &amp;amp; Bit 16 of the Channel 0 &amp;amp; Channel 1 DRAM Throttling control register then the memory copy performance will not go to slow down.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  I wrote a tool to manually disable the DRAM Throttling function under Linux call disDT.c for your verification.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/P&gt;&lt;P&gt;/*&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;Author: Lorence Chen 2010/03/30&lt;P&gt;&amp;nbsp;&lt;/P&gt;*/&lt;P&gt;# include &lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;# include &lt;P&gt;&amp;nbsp;&lt;/P&gt;# include &lt;P&gt;&amp;nbsp;&lt;/P&gt;# include &lt;P&gt;&amp;nbsp;&lt;/P&gt;# include &lt;P&gt;&amp;nbsp;&lt;/P&gt;# include &lt;P&gt;&amp;nbsp;&lt;/P&gt;# include &lt;P&gt;&amp;nbsp;&lt;/P&gt;# include &lt;P&gt;# define u8 unsigned char&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;# define u16 unsigned short&lt;P&gt;&amp;nbsp;&lt;/P&gt;# define u32 unsigned int&lt;P&gt;//4.2 MCHBAR Configuration Register Details&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;// The MCHBAR registers are offset from the MCHBAR base address. Table 4-2 provides an&lt;P&gt;&amp;nbsp;&lt;/P&gt;// address map of the registers listed by address offset in ascending order. Detailed bit&lt;P&gt;&amp;nbsp;&lt;/P&gt;// descriptions of the registers follow the table.&lt;P&gt;&amp;nbsp;&lt;/P&gt;//&lt;P&gt;&amp;nbsp;&lt;/P&gt;// Table 4-2. Undocumented MCHBAR Register Address Map&lt;P&gt;&amp;nbsp;&lt;/P&gt;// Address Offset    Register Symbol    Register Name&lt;P&gt;&amp;nbsp;&lt;/P&gt;//   &lt;P&gt;&amp;nbsp;&lt;/P&gt;// 158h              C0DTC              Channel 0 DRAM Throttling Control&lt;P&gt;&amp;nbsp;&lt;/P&gt;// 1D8h              C1DTC              Channel 1 DRAM Throttling Control&lt;P&gt;# define MCHBAR_ADDR      0xFED14000&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;# define MCHBAR_C0DTC     0x158&lt;P&gt;&amp;nbsp;&lt;/P&gt;# define MCHBAR_C1DTC     0x1D8&lt;P&gt;# define MSM_MDP_PHYS MCHBAR_ADDR&lt;/P&gt;&lt;P&gt;# define MSM_MDP_SIZE 0x00001000&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;# define MSM_MDP_MASK (MSM_MDP_SIZE-1) &lt;P&gt;&amp;nbsp;&lt;/P&gt;int main(){&lt;P&gt;  void *vaddr1, *vaddr2;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;  int errors = 0;&lt;P&gt;&amp;nbsp;&lt;/P&gt;  int fd;&lt;P&gt;  fd = open("/dev/mem", O_RDWR | O_SYNC);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;  printf("/dev/mem opened.\n");&lt;P&gt;&amp;nbsp;&lt;/P&gt;  fflush(stdout);&lt;P&gt;  printf("MCHBAR ADDRESS is 0x%8Xh\n", MSM_MDP_PHYS &amp;amp; ~MSM_MDP_MASK);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;  vaddr1 = mmap(0, MSM_MDP_SIZE, PROT_READ | PROT_WRITE, MAP_SHARED,\&lt;P&gt;&amp;nbsp;&lt;/P&gt;  fd, MSM_MDP_PHYS &amp;amp; ~MSM_MDP_MASK);&lt;P&gt;  if(vaddr1 == (void *) -1) {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;  printf("mapping error!!\n");&lt;P&gt;&amp;nbsp;&lt;/P&gt;  return -1;&lt;P&gt;&amp;nbsp;&lt;/P&gt;  } &lt;P&gt;//MCHBAR_C0DTC    0x158  &lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;  vaddr2 = vaddr1 + MCHBAR_C0DTC;&lt;P&gt;&amp;nbsp;&lt;/P&gt;  *(volatile u32 *)(vaddr2) = 0x2300; //Here please to make sure to set Bit 21, Bit 17 &amp;amp; Bit 16 to value 0 to disable the DRAM Throttlink function.&lt;P&gt;&amp;nbsp;&lt;/P&gt;  printf("MCHBAR_C0DTC (offset MCHBAR + 0x158) value is 0x%8Xh\n", *(volatile u32 *)(vaddr2));&lt;P&gt;&amp;nbsp;&lt;/P&gt;//MCHBAR_C1DTC    0x1D8  &lt;P&gt;&amp;nbsp;&lt;/P&gt;  vaddr2 = vaddr1 + MCHBAR_C1DTC ;&lt;P&gt;&amp;nbsp;&lt;/P&gt;  *(volatile u32 *)(vaddr2) = 0x2300; //Here please to make sure to set Bit 21, Bit 17 &amp;amp; Bit 16 to value 0 to disable the DRAM Throttlink function.&lt;P&gt;&amp;nbsp;&lt;/P&gt;  printf("MCHBAR_C1DTC (offset MCHBAR + 0x1D8) value is 0x%8Xh\n", *(volatile u32 *)(vaddr2));                           &lt;P&gt;&amp;nbsp;&lt;/P&gt;  fflush(stdout);&lt;P&gt;&amp;nbsp;&lt;/P&gt;//&amp;lt;&amp;lt;&amp;lt;p&amp;gt;&amp;nbsp;  munmap(vaddr1, MSM_MDP_SIZE);&lt;P&gt;  close(fd);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;  return errors;&lt;P&gt;&amp;nbsp;&lt;/P&gt;}&lt;P&gt;&amp;lt;&amp;lt;&amp;lt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;to compile it please use command:&lt;/P&gt;&lt;P&gt;gcc -O2 -o disDT disDT.c&lt;/P&gt;&lt;P&gt;to run it please use&lt;/P&gt;&lt;P&gt;./disDT&lt;/P&gt;&lt;P&gt;before you run the combo.c&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;please check it.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Lorence&lt;/P&gt;&lt;P&gt;2010/03/30&lt;/P&gt;</description>
      <pubDate>Tue, 30 Mar 2010 14:40:53 GMT</pubDate>
      <guid>https://community.intel.com/t5/Graphics/DRAM-slowdown-on-3010-chipset/m-p/353953#M23063</guid>
      <dc:creator>idata</dc:creator>
      <dc:date>2010-03-30T14:40:53Z</dc:date>
    </item>
  </channel>
</rss>

