Changed FR_FCFS_RP to C++11 style

This commit is contained in:
Matthias Jung
2017-07-19 11:22:46 +03:00
parent 7eebbf3bdf
commit e3450687c8
2 changed files with 16 additions and 28 deletions

View File

@@ -52,21 +52,10 @@ std::pair<Command, gp*> FR_FCFS_RP::getNextRequest(Bank bank)
// 3. Read Miss (Hazard Check) TODO
// 4. Write Miss TODO
if(DebugManager::getInstance().writeToConsole == true)
{
for(unsigned long i=0; i < buffer[bank].size(); i++)
{
gp* trans = buffer[bank].at(i);
cout << ((trans->get_command() == tlm::TLM_READ_COMMAND)?"R":"W");
}
cout << endl;
cout.flush();
}
// 1. Seach for read hit:
for(unsigned long i=0; i < buffer[bank].size(); i++)
for(auto it = buffer[bank].begin(); it!=buffer[bank].end(); it++)
{
gp* read = buffer[bank].at(i);
gp* read = *it;
if(read->get_command() == tlm::TLM_READ_COMMAND)
{
@@ -74,20 +63,19 @@ std::pair<Command, gp*> FR_FCFS_RP::getNextRequest(Bank bank)
if(DramExtension::getRow(read)
== controllerCore.getRowBufferStates().getRowInRowBuffer(bank))
{
if(hazardDetection(bank, i) == false)
if(hazardDetection(bank, it) == false)
{
buffer[bank].erase(buffer[bank].begin() + i);
return pair<Command, gp*>(getReadWriteCommand(*read),
read);
buffer[bank].erase(it);
return pair<Command, gp*>(getReadWriteCommand(*read),read);
}
}
}
}
// 2. Search for write hit:
for(unsigned long i=0; i < buffer[bank].size(); i++)
// 2. Seach for write hit:
for(auto it = buffer[bank].begin(); it!=buffer[bank].end(); it++)
{
gp* write = buffer[bank].at(i);
gp* write = *it;
if(write->get_command() == tlm::TLM_WRITE_COMMAND)
{
@@ -95,9 +83,8 @@ std::pair<Command, gp*> FR_FCFS_RP::getNextRequest(Bank bank)
if(DramExtension::getRow(write)
== controllerCore.getRowBufferStates().getRowInRowBuffer(bank))
{
buffer[bank].erase(buffer[bank].begin() + i);
return pair<Command, gp*>(getReadWriteCommand(*write),
write);
buffer[bank].erase(it);
return pair<Command, gp*>(getReadWriteCommand(*write),write);
}
}
}
@@ -111,13 +98,14 @@ std::pair<Command, gp*> FR_FCFS_RP::getNextRequest(Bank bank)
// There is a hazard if a read is found which will be scheduled before a write
// to the same column and the same row of the same bank:
bool FR_FCFS_RP::hazardDetection(Bank bank, unsigned long id)
bool FR_FCFS_RP::hazardDetection(Bank bank, std::deque<gp*>::iterator ext)
{
gp* read = buffer[bank].at(id);
gp* read = *ext;
for(unsigned long i=0; i < id; i++)
//for(unsigned long i=0; i < id; i++)
for(auto it = buffer[bank].begin(); it!=ext; it++)
{
gp* write = buffer[bank].at(i);
gp* write = *it;
if(write->get_command() == tlm::TLM_WRITE_COMMAND)
{
if((DramExtension::getExtension(read).getColumn()

View File

@@ -48,7 +48,7 @@ public:
private:
bool hazardDetection(Bank bank, unsigned long id);
bool hazardDetection(Bank bank, std::deque<gp*>::iterator ext);
void printDebugMessage(std::string message);
};