diff --git a/dram/resources/configs/memconfigs/fifo.xml b/dram/resources/configs/memconfigs/fifo.xml index 50ee681f..eff47892 100644 --- a/dram/resources/configs/memconfigs/fifo.xml +++ b/dram/resources/configs/memconfigs/fifo.xml @@ -8,5 +8,4 @@ - \ No newline at end of file diff --git a/dram/resources/simulations/sim-batch.xml b/dram/resources/simulations/sim-batch.xml index cd725640..dce15a11 100644 --- a/dram/resources/simulations/sim-batch.xml +++ b/dram/resources/simulations/sim-batch.xml @@ -5,7 +5,7 @@ fr_fcfs.xml + --> fifo.xml diff --git a/dram/src/controller/scheduler/Fifo.cpp b/dram/src/controller/scheduler/Fifo.cpp index aef1ecd9..fa9a7fe1 100644 --- a/dram/src/controller/scheduler/Fifo.cpp +++ b/dram/src/controller/scheduler/Fifo.cpp @@ -17,35 +17,32 @@ bool Fifo::hasPayloads() void Fifo::schedule(gp* payload) { - buffer[DramExtension::getExtension(payload).getBank()].push_back(payload); + buffer.push_back(payload); } gp* Fifo::getNextPayload() { - for(Bank bank: controllerCore.getFreeBanks()) + if(!buffer.empty()) { - if(!buffer[bank].empty()) + DramExtension& frontRequest = DramExtension::getExtension(buffer.front()); + vector freeBanks = controllerCore.getFreeBanks(); + if(std::find(freeBanks.begin(),freeBanks.end(),frontRequest.getBank()) != freeBanks.end()) { - return buffer[bank].front(); + return buffer.front(); } } return NULL; } -void Fifo::removePayload(gp* payload) +void Fifo::removePayload(gp* /*payload*/) { - buffer[DramExtension::getExtension(payload).getBank()].pop_front(); + buffer.pop_front(); } unsigned int Fifo::getNumberOfQueuedPayloads() { - unsigned int numberOfQueuedPayloads = 0; - for(auto& bufferElement : buffer) - { - numberOfQueuedPayloads += bufferElement.second.size(); - } - return numberOfQueuedPayloads; + return buffer.size(); } } /* namespace scheduler */ diff --git a/dram/src/controller/scheduler/Fifo.h b/dram/src/controller/scheduler/Fifo.h index d3c34cae..51e54337 100644 --- a/dram/src/controller/scheduler/Fifo.h +++ b/dram/src/controller/scheduler/Fifo.h @@ -30,7 +30,7 @@ public: virtual void removePayload(gp* payload) override; private: - std::map> buffer; + std::deque buffer; core::ControllerCore &controllerCore; unsigned int getNumberOfQueuedPayloads(); };