コード例 #1
0
ファイル: memory.cpp プロジェクト: pjones23/CS6290_4
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());
// 	}
	
}
コード例 #2
0
ファイル: memory.cpp プロジェクト: rvbelapure/comparch
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;
}
コード例 #3
0
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();
	
	   
}