This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

DDR2 Maximum Speed

Hello,

 

I'm trying to figure out how fast I can write/read from the DDR2 with C6472 (using one core only, for now).

My program write in blocks using memset. I've tried many sizes, but starting from 1024 bytes there doesn't seem to be much difference.

To get maximal speed, I use maximum cache (L1 and L2), and compile my program with release settings.

Still, the speed I get (for writing) is around 400 MByte/sec, and I understand it should be more.

 

What is, theoretically, the highest speed I can achieve?

Also, what else can I do to make it quicker? Are there any DMA settings I can use?

 

Thanks.

  • It's a 32-bit DDR2-533 interface.  So 4 bytes x 533 MHz = 2132 MByte/sec.

    A couple thoughts:

    • Have you enabled the MAR bits for the cache?  See this article for more info.
    • Have you tried with DMA instead of CPU?  Even if you've correctly enabled the cache/MAR bits, a straight-up throughput test may be misleading when using the CPU.  Specifically as you start writing to an address range you'll first "miss" the address range which will stall the CPU as it pulls a line into cache.  Eventually you'll fill up the cache (assuming you're writing to a huge range for your test) and then it will start evicting older lines you wrote to in order to pull in other lines.  This will also cause some CPU stalls while all these operations are happening.
  • There is a app note which has detailed information about emif throughput on C6472. You can download it from TI website. The app note is:

     

    Throughput Application Report for the TMS320C6472/TMS320TCI6486 (Rev. A) (PDF 403 KB)

     

    regards,

    ywu