Revert changes in scheduler.

This commit is contained in:
Lukas Steiner
2020-09-18 15:43:59 +02:00
parent d6cb1de320
commit 97019bba41
2 changed files with 11 additions and 12 deletions

View File

@@ -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;

View File

@@ -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