O3CPU: Fix iqCount and lsqCount SMT fetch policies.
Fixes two of the SMT fetch policies in O3CPU that were returning the count of instructions in the IQ or LSQ rather than the thread ID to fetch from.
This commit is contained in:
parent
aa0cd52504
commit
a10685ad1e
1 changed files with 12 additions and 6 deletions
|
@ -1404,19 +1404,22 @@ template<class Impl>
|
|||
ThreadID
|
||||
DefaultFetch<Impl>::iqCount()
|
||||
{
|
||||
std::priority_queue<ThreadID> PQ;
|
||||
std::priority_queue<unsigned> PQ;
|
||||
std::map<unsigned, ThreadID> threadMap;
|
||||
|
||||
list<ThreadID>::iterator threads = activeThreads->begin();
|
||||
list<ThreadID>::iterator end = activeThreads->end();
|
||||
|
||||
while (threads != end) {
|
||||
ThreadID tid = *threads++;
|
||||
unsigned iqCount = fromIEW->iewInfo[tid].iqCount;
|
||||
|
||||
PQ.push(fromIEW->iewInfo[tid].iqCount);
|
||||
PQ.push(iqCount);
|
||||
threadMap[iqCount] = tid;
|
||||
}
|
||||
|
||||
while (!PQ.empty()) {
|
||||
ThreadID high_pri = PQ.top();
|
||||
ThreadID high_pri = threadMap[PQ.top()];
|
||||
|
||||
if (fetchStatus[high_pri] == Running ||
|
||||
fetchStatus[high_pri] == IcacheAccessComplete ||
|
||||
|
@ -1434,19 +1437,22 @@ template<class Impl>
|
|||
ThreadID
|
||||
DefaultFetch<Impl>::lsqCount()
|
||||
{
|
||||
std::priority_queue<ThreadID> PQ;
|
||||
std::priority_queue<unsigned> PQ;
|
||||
std::map<unsigned, ThreadID> threadMap;
|
||||
|
||||
list<ThreadID>::iterator threads = activeThreads->begin();
|
||||
list<ThreadID>::iterator end = activeThreads->end();
|
||||
|
||||
while (threads != end) {
|
||||
ThreadID tid = *threads++;
|
||||
unsigned ldstqCount = fromIEW->iewInfo[tid].ldstqCount;
|
||||
|
||||
PQ.push(fromIEW->iewInfo[tid].ldstqCount);
|
||||
PQ.push(ldstqCount);
|
||||
threadMap[ldstqCount] = tid;
|
||||
}
|
||||
|
||||
while (!PQ.empty()) {
|
||||
ThreadID high_pri = PQ.top();
|
||||
ThreadID high_pri = threadMap[PQ.top()];
|
||||
|
||||
if (fetchStatus[high_pri] == Running ||
|
||||
fetchStatus[high_pri] == IcacheAccessComplete ||
|
||||
|
|
Loading…
Reference in a new issue