void memory_c::push_dram_sch_queue() { /* For Lab #2, you need to fill out this function */ int bank_id; /* For Lab #2, you need to fill out this function */ if(dram_in_queue.empty()) return; mem_req_s *req = dram_in_queue.front(); bank_id=get_dram_bank_id(req->m_addr); dram_in_queue.pop_front(); if(req->m_state==MEM_DRAM_IN) { (req->m_state)=MEM_DRAM_SCH; dram_bank_sch_queue[bank_id].push_back(req); } // if (KNOB(KNOB_PRINT_MEM_DEBUG)->getValue()) // { // printf("Request transferred from in_queue to sch_queue\n"); // printf("IN_Q : %ld \n",dram_in_queue.size()); // for(int bank=0;bank<m_dram_bank_num;bank++) // printf("SCH_Q %d : %ld\n",bank+1,dram_bank_sch_queue[bank].size()); // } }
void memory_c::push_dram_sch_queue() { /* For Lab #2, you need to fill out this function */ if(dram_in_queue.empty()) return; mem_req_s *req = dram_in_queue.front(); if(!req) return; // XXX : shouldn't we iterate till we get a non-null req? dram_in_queue.pop_front(); assert(req->m_state == MEM_DRAM_IN); req->m_state = MEM_DRAM_SCH; int dram_bank_id = get_dram_bank_id(req->m_addr); dram_bank_sch_queue[dram_bank_id].push_back(req); return; }
void memory_c::push_dram_sch_queue() { // If dram_in_queue is empty, return. Else get the first memory request in dram_in_queue, // find out the dram_bank_id and move a memory request from the dram_in_queue to the corresponding // dram_bank_sch_queue int dram_bank_id; if(dram_in_queue.empty()) { return;} mem_req_s* m_req=dram_in_queue.front(); dram_bank_id=get_dram_bank_id(m_req->m_addr); dram_bank_sch_queue[dram_bank_id].push_back(m_req); m_req->m_state=MEM_DRAM_SCH; dram_in_queue.pop_front(); }