time FR-FCFS chooses RD3 as it first prioritizes row-hit column commands (i.e., RD) over other commands (i.e., PRE, ACT).

When read requests are pipelined, the processing time of each read is $tBURST$. Therefore, the delay caused by previously arrived read commands $L_{rq}$ is $$L_{rq} = N_{rq} \times tBURST.$$

Note that if a read request under analysis needs to execute PRE or ACT commands (closing the previous row and open a new row, respectively), they can be executed in parallel by the time the data bus becomes free, without adding to the total delay.

### Write Draining and Bus Turn-around Delay {#sec:wqdrain}

When there is no pending reads or the write request buffer is full, the DRAM controller switches the mode to process pending writes. It is called write draining and once the drain process begins, new incoming read requests must wait until at least $N_{wq}$ writes are drained to amortize the bus switching cost $tWTR$ [@chatterjee2012staged].

In draining writes, the worst-case happens when all writes access different rows in the same bank, forcing the memory controller to close and open a new row for each write. In this case, the required time between two successive writes is determined by the 