CMU-SAFARI/ramulator

Why is update_serving_requests for WRITE requests called at the time when they are issued to the DRAM?

Opened this issue · 0 comments

update_serving_requests is called at line 465 in src/Controller.h. At this point the WRITE request has just been issued. Shouldn't the function be called after the WRITE request has finished writing data to the DRAM?

Compare this with how a READ request is dealt with: after issuing the READ command, the depart field of the request is set to clk + channel->spec->read_latency, and the request is placed on the pending buffer. Only after the specified time has elapsed is update_serving_requests called for the said READ request. So shouldn't the same be followed for a WRITE request? (with its own corresponding write_latency, of course)

One possible reason that I could think of: the Controller need not wait for the WRITE request to complete before returning a completion indication, because ultimately it does not need any data from the DRAM, unlike a READ request.

If that is the case, can't the completion indication be returned as soon as the ACT for the corresponding WRITE request is issued?