Files
DRAMSys/DRAM/dram/core/refresh/BankwiseRefreshManager.cpp
2014-03-15 18:31:16 +01:00

50 lines
1.2 KiB
C++

/*
* BankwiseRefreshManager.cpp
*
* Created on: Mar 9, 2014
* Author: jonny
*/
#include <core/refresh/BankwiseRefreshManager.h>
using namespace std;
namespace controller {
BankwiseRefreshManager::BankwiseRefreshManager(vector<RefreshTiming> refreshTimings,
IInternalScheduler& internalScheduler)
{
assert(!refreshTimings.empty());
for (unsigned int i = 0; i < refreshTimings.size(); ++i)
{
RefreshManager* manager = new RefreshManager(refreshTimings.at(i), internalScheduler, Bank(i));
refreshManagerForBanks.push_back(manager);
}
}
BankwiseRefreshManager::~BankwiseRefreshManager()
{
for (unsigned int i = 0; i < refreshManagerForBanks.size(); ++i)
{
delete(refreshManagerForBanks.at(i));
}
}
bool BankwiseRefreshManager::hasCollision(const CommandSchedule& schedule)
{
RefreshManager& manager = *refreshManagerForBanks.at(schedule.getBank().ID());
return manager.hasCollision(schedule);
}
void BankwiseRefreshManager::scheduleRefresh(sc_time time)
{
for (unsigned int i = 0; i < refreshManagerForBanks.size(); ++i)
{
RefreshManager& manager = *refreshManagerForBanks.at(i);
manager.scheduleRefresh(time);
}
}
} /* namespace controller */