Lines Matching refs:queue

287     DPRINTF(DRAM, "Read queue limit %d, current size %d, entries needed %d\n",
298 DPRINTF(DRAM, "Write queue limit %d, current size %d, entries needed %d\n",
414 // only add to the read queue here. whenever the request is
425 // check read packets against packets in write queue.
445 // check if the read is subsumed in the write queue
455 "write queue\n",
465 // push it onto the read queue
481 DPRINTF(DRAM, "Adding to read queue\n");
499 // If all packets are serviced by write queue, we send the repsonse back
505 // Update how many split packets are serviced by write queue
510 // queue, do so now
520 // only add to the write queue here. whenever the request is
535 // queue and keep track of whether we have merged or not
547 DPRINTF(DRAM, "Adding to write queue\n");
564 DPRINTF(DRAM, "Merging write burst with existing queue entry\n");
577 // snoop the write queue for any upcoming reads
583 // queue, do so now
595 for (const auto& queue : readQueue) {
596 for (const auto& packet : queue) {
607 for (const auto& queue : writeQueue) {
608 for (const auto& packet : queue) {
650 DPRINTF(DRAM, "Write queue full, not accepting\n");
664 DPRINTF(DRAM, "Read queue full, not accepting\n");
754 // if there is nothing left in any queue, signal a drain
763 // We have made a location in the queue available at this point,
772 DRAMCtrl::chooseNext(DRAMPacketQueue& queue, Tick extra_col_delay)
776 DRAMCtrl::DRAMPacketQueue::iterator ret = queue.end();
778 if (!queue.empty()) {
779 if (queue.size() == 1) {
781 DRAMPacket* dram_pkt = *(queue.begin());
783 ret = queue.begin();
790 for (auto i = queue.begin(); i != queue.end(); ++i) {
798 ret = chooseNextFRFCFS(queue, extra_col_delay);
807 DRAMCtrl::chooseNextFRFCFS(DRAMPacketQueue& queue, Tick extra_col_delay)
832 auto selected_pkt_it = queue.end();
837 for (auto i = queue.begin(); i != queue.end() ; ++i) {
866 // no need to look through the remaining queue entries
883 minBankPrep(queue, min_col_at);
909 if (selected_pkt_it == queue.end()) {
939 // queue the packet in the response queue to be sent out after
1223 // are bank conflicts in the queue
1225 // page, but closes it only if there are no row hits in the queue.
1227 // are no same page hits in the queue
1231 // either look at the read queue or write queue
1232 const std::vector<DRAMPacketQueue>& queue =
1236 auto p = queue[i].begin();
1237 // keep on looking until we find a hit or reach the end of the queue
1241 // conflict request is waiting in the queue
1244 while (!got_more_hits && p != queue[i].end()) {
1424 DPRINTF(DRAM, "Switching to writes due to read queue empty\n");
1448 for (auto queue = readQueue.rbegin();
1449 queue != readQueue.rend(); ++queue) {
1454 "DRAM controller checking READ queue [%d] priority [%d elements]\n",
1455 prio, queue->size());
1460 to_read = chooseNext((*queue), switched_cmd_type ? tCS : 0);
1462 if (to_read != queue->end()) {
1497 // Insert into response queue. It will be sent back to the
1514 // remove the request from the queue - the iterator is no longer valid .
1518 // switching to writes, either because the read queue is empty
1531 for (auto queue = writeQueue.rbegin();
1532 queue != writeQueue.rend(); ++queue) {
1537 "DRAM controller checking WRITE queue [%d] priority [%d elements]\n",
1538 prio, queue->size());
1542 to_write = chooseNext((*queue),
1545 if (to_write != queue->end()) {
1569 // removed write from queue, decrement count
1597 // remove the request from the queue - the iterator is no longer valid
1602 // If we emptied the write queue, or got sufficiently below the
1638 DRAMCtrl::minBankPrep(const DRAMPacketQueue& queue,
1658 for (const auto& p : queue) {
2524 "including those serviced by the write queue");
2529 "including those merged in the write queue");
2533 .desc("Number of DRAM read bursts serviced by the write queue");
2555 .desc("Average read queue length when enqueuing")
2560 .desc("Average write queue length when enqueuing")
2599 .desc("Number of times read queue was full causing retry");
2603 .desc("Number of times write queue was full causing retry");
2640 .desc("What read queue length does an incoming req see");
2645 .desc("What write queue length does an incoming req see");
2671 .desc("Total number of bytes read from write queue");
2872 // the only queue that is not drained automatically over time
2873 // is the write queue, thus kick things into action if needed
2929 : QueuedSlavePort(name, &_memory, queue), queue(_memory, *this, true),
2946 if (!queue.trySatisfyFunctional(pkt)) {