FPGA Intellectual Property
PCI Express*, Networking and Connectivity, Memory Interfaces, DSP IP, and Video IP
6356 Discussions

DDR2 IP Controller Write Performance Question

Altera_Forum
Honored Contributor II
1,453 Views

Simple performance question: What is the performance improvement (in general terms) of doing 4W burst writes vs. 4 single writes to consecutive addresses? Since 4 data words need to be written in either case and the controller should figure out that the addresses are consecutive, is there a performance difference? Thanks!

0 Kudos
4 Replies
Altera_Forum
Honored Contributor II
593 Views

Are you talking about the Altera DDR2 controller? I don't think your assumption is valid that the controller will queue up 4 single-word writes on the host side, recognize that the word addresses are consecutive, then generate one 4-word burst to the memory. I think it will generate a separate burst write to memory in reponse to each single-word write. So one 4-word burst on the host side will be way more efficient than 4 single-word writes. At least 4x faster I would think. You should try both approaches and see what you get.

0 Kudos
Altera_Forum
Honored Contributor II
593 Views

 

--- Quote Start ---  

Are you talking about the Altera DDR2 controller? I don't think your assumption is valid that the controller will queue up 4 single-word writes on the host side, recognize that the word addresses are consecutive, then generate one 4-word burst to the memory. I think it will generate a separate burst write to memory in response to each single-word write. So one 4-word burst on the host side will be way more efficient than 4 single-word writes. At least 4x faster I would think. You should try both approaches and see what you get. 

--- Quote End ---  

 

 

Yes, it's the Altera DDR2 full-rate controller running at 133MHz.  

 

I assume burst writes are there for a reason, so I guess I'm asking if someone can explain where the improvement comes from and how much. Assuming the controller won't create an SDRAM burst write command from multiple single requests, I can see where one SDRAM command with 4 data words (2 clocks for data transfer) would be faster. Does anyone know what the Altera DDR2 controller will or will not do for writes in terms if efficiency?
0 Kudos
Altera_Forum
Honored Contributor II
593 Views

The controller itself is pretty efficient on the host interface. How effecient is partly under your control in how you interact with it. There's a lot more overhead on the memory side, especially for short bursts. The longer your bursts are on the host side, the more efficient the interactions with the memory will be. You can configure the controller to allow bursts up to 64 words on the host side (in my case anyway for a 128-bit wide full-rate DDR2 controller). This is the "Local Maximum Burst Count" setting on the "Controller Settings" tab in the MegaWizard. We stream data from a high-speed image sensor to DDR2 memory (pair of SODIMMs) and I use the maximum burst size allowed whenever possible (1k bytes per burst on the host side). When doing this we achieve > 90% of the theoretical write bandwidth of the memory (2*mem_width*mem_clk_frequency). Short bursts, interleaving writes and reads, jumping aorund to different banks, etc, will all hurt your throughput.

0 Kudos
Altera_Forum
Honored Contributor II
593 Views

Thanks for the valuable feedback. Unfortunately, the burst size is limited to 4 per the board vendor (Opal-Kelly ZEM4310 board with a Cyclone IV E). I'm not sure where this constraint comes from, the on-board SDRAM (16-bit IO) or the Altera DDR2 controller, or a combination. The Altera documentation says 4 in places, 8 in other places, and up to 64 in yet others, depending on the context. A larger burst size sure would be helpful.

0 Kudos
Reply