Hello Users, I am trying to understanding write packets queuing in DRAM controller model. I am looking at 'addToWriteQueue' function. From my understanding so far, it merges write requests across burst boundaries. Looking at following if statement:
if ((addr + size) >= (*w)->addr && ((*w)->addr + (*w)->size - addr) <= burstSize) { // the new one is just before or partially // overlapping with the existing one, and together // they fit within a burst .... .... .... } Merging here may make the write request go across burst boundary. Size computation in the beginning of the for loop of this function suggests that packets are split at burst boundaries. For example, if the packet addr is 16, burst size is 32 bytes and packet request size is 25 bytes (all in decimal for ease), then 2 write bursts should be added to the queue: 16-31, 32-40. However, while merging, lets say if there existed a packet already in write queue from 32-40, then a write from 16-40 is added to the queue which is across burst boundary. is that physically possible? Shouldn't there be two write requests in the queue:16-31, 32-40 instead of one single merged request? Thank you, -Rizwana
_______________________________________________ gem5-users mailing list gem5-users@gem5.org http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users