/* * Fifo.cpp * * Created on: Mar 19, 2014 * Author: robert */ #include "Fifo.h" using namespace std; void Fifo::schedule(gp* payload) { buffer[DramExtension::getExtension(payload).getBank()].emplace_back(payload); } pair Fifo::getNextRequest(Bank bank) { if(!buffer[bank].empty()) { gp* payload = buffer[bank].front(); Command command = IScheduler::getNextCommand(*payload); if(command == Command::Read || command == Command::ReadA || command == Command::Write || command == Command::WriteA) { buffer[bank].pop_front(); } return pair(command, payload); } return pair(Command::NOP, NULL); }