Revert changes in scheduler.
This commit is contained in:
@@ -41,13 +41,9 @@ using namespace tlm;
|
||||
|
||||
SchedulerFrFcfs::SchedulerFrFcfs()
|
||||
{
|
||||
buffer = std::vector<std::vector<tlm_generic_payload *>>
|
||||
buffer = std::vector<std::list<tlm_generic_payload *>>
|
||||
(Configuration::getInstance().memSpec->numberOfBanks);
|
||||
requestBufferSize = Configuration::getInstance().requestBufferSize;
|
||||
lastRequest = std::vector<std::vector<tlm::tlm_generic_payload *>::iterator>
|
||||
(Configuration::getInstance().memSpec->numberOfBanks);
|
||||
for (auto it : buffer)
|
||||
it.reserve(requestBufferSize);
|
||||
}
|
||||
|
||||
bool SchedulerFrFcfs::hasBufferSpace()
|
||||
@@ -67,7 +63,15 @@ void SchedulerFrFcfs::storeRequest(tlm_generic_payload *payload)
|
||||
void SchedulerFrFcfs::removeRequest(tlm_generic_payload *payload)
|
||||
{
|
||||
unsigned bankID = DramExtension::getBank(payload).ID();
|
||||
buffer[bankID].erase(lastRequest[bankID]);
|
||||
for (auto it = buffer[bankID].begin(); it != buffer[bankID].end(); it++)
|
||||
{
|
||||
if (*it == payload)
|
||||
{
|
||||
buffer[bankID].erase(it);
|
||||
return;
|
||||
}
|
||||
}
|
||||
SC_REPORT_FATAL("SchedulerFrFcfs", "removeRequest failed!");
|
||||
}
|
||||
|
||||
tlm_generic_payload *SchedulerFrFcfs::getNextRequest(BankMachine *bankMachine)
|
||||
@@ -82,14 +86,10 @@ tlm_generic_payload *SchedulerFrFcfs::getNextRequest(BankMachine *bankMachine)
|
||||
for (auto it = buffer[bankID].begin(); it != buffer[bankID].end(); it++)
|
||||
{
|
||||
if (DramExtension::getRow(*it) == openRow)
|
||||
{
|
||||
lastRequest[bankID] = it;
|
||||
return *it;
|
||||
}
|
||||
}
|
||||
}
|
||||
// No row hit found or bank precharged
|
||||
lastRequest[bankID] = buffer[bankID].begin();
|
||||
return buffer[bankID].front();
|
||||
}
|
||||
return nullptr;
|
||||
|
||||
@@ -53,10 +53,9 @@ public:
|
||||
virtual bool hasFurtherRowHit(Bank, Row) override;
|
||||
virtual bool hasFurtherRequest(Bank) override;
|
||||
private:
|
||||
std::vector<std::vector<tlm::tlm_generic_payload *>> buffer;
|
||||
std::vector<std::list<tlm::tlm_generic_payload *>> buffer;
|
||||
unsigned requestBufferSize;
|
||||
unsigned lastBankID;
|
||||
std::vector<std::vector<tlm::tlm_generic_payload *>::iterator> lastRequest;
|
||||
};
|
||||
|
||||
#endif // SCHEDULERFRFCFS_H
|
||||
|
||||
Reference in New Issue
Block a user