iew_impl.hh (13453:4a7a060ea26e) | iew_impl.hh (13590:d7e018859709) |
---|---|
1/* | 1/* |
2 * Copyright (c) 2010-2013 ARM Limited | 2 * Copyright (c) 2010-2013, 2018 ARM Limited |
3 * Copyright (c) 2013 Advanced Micro Devices, Inc. 4 * All rights reserved. 5 * 6 * The license below extends only to copyright in the software and shall 7 * not be construed as granting a license to any other intellectual 8 * property including but not limited to intellectual property relating 9 * to a hardware implementation of the functionality of the software 10 * licensed hereunder. You may use the software subject to the license --- 728 unchanged lines hidden (view full) --- 739 740 activateStage(); 741 742 _status = Active; 743 } 744} 745 746template <class Impl> | 3 * Copyright (c) 2013 Advanced Micro Devices, Inc. 4 * All rights reserved. 5 * 6 * The license below extends only to copyright in the software and shall 7 * not be construed as granting a license to any other intellectual 8 * property including but not limited to intellectual property relating 9 * to a hardware implementation of the functionality of the software 10 * licensed hereunder. You may use the software subject to the license --- 728 unchanged lines hidden (view full) --- 739 740 activateStage(); 741 742 _status = Active; 743 } 744} 745 746template <class Impl> |
747void 748DefaultIEW<Impl>::resetEntries() 749{ 750 instQueue.resetEntries(); 751 ldstQueue.resetEntries(); 752} 753 754template <class Impl> | |
755bool 756DefaultIEW<Impl>::checkStall(ThreadID tid) 757{ 758 bool ret_val(false); 759 760 if (fromCommit->commitInfo[tid].robSquashing) { 761 DPRINTF(IEW,"[tid:%i]: Stall from Commit stage detected.\n",tid); 762 ret_val = true; --- 585 unchanged lines hidden (view full) --- 1348 // DynInst that caused the violation. Note that this 1349 // clears the violation signal. 1350 DynInstPtr violator; 1351 violator = ldstQueue.getMemDepViolator(tid); 1352 1353 DPRINTF(IEW, "LDSTQ detected a violation. Violator PC: %s " 1354 "[sn:%lli], inst PC: %s [sn:%lli]. Addr is: %#x.\n", 1355 violator->pcState(), violator->seqNum, | 747bool 748DefaultIEW<Impl>::checkStall(ThreadID tid) 749{ 750 bool ret_val(false); 751 752 if (fromCommit->commitInfo[tid].robSquashing) { 753 DPRINTF(IEW,"[tid:%i]: Stall from Commit stage detected.\n",tid); 754 ret_val = true; --- 585 unchanged lines hidden (view full) --- 1340 // DynInst that caused the violation. Note that this 1341 // clears the violation signal. 1342 DynInstPtr violator; 1343 violator = ldstQueue.getMemDepViolator(tid); 1344 1345 DPRINTF(IEW, "LDSTQ detected a violation. Violator PC: %s " 1346 "[sn:%lli], inst PC: %s [sn:%lli]. Addr is: %#x.\n", 1347 violator->pcState(), violator->seqNum, |
1356 inst->pcState(), inst->seqNum, inst->physEffAddrLow); | 1348 inst->pcState(), inst->seqNum, inst->physEffAddr); |
1357 1358 fetchRedirect[tid] = true; 1359 1360 // Tell the instruction queue that a violation has occured. 1361 instQueue.violation(inst, violator); 1362 1363 // Squash. 1364 squashDueToMemOrder(violator, tid); --- 6 unchanged lines hidden (view full) --- 1371 if (ldstQueue.violation(tid)) { 1372 assert(inst->isMemRef()); 1373 1374 DynInstPtr violator = ldstQueue.getMemDepViolator(tid); 1375 1376 DPRINTF(IEW, "LDSTQ detected a violation. Violator PC: " 1377 "%s, inst PC: %s. Addr is: %#x.\n", 1378 violator->pcState(), inst->pcState(), | 1349 1350 fetchRedirect[tid] = true; 1351 1352 // Tell the instruction queue that a violation has occured. 1353 instQueue.violation(inst, violator); 1354 1355 // Squash. 1356 squashDueToMemOrder(violator, tid); --- 6 unchanged lines hidden (view full) --- 1363 if (ldstQueue.violation(tid)) { 1364 assert(inst->isMemRef()); 1365 1366 DynInstPtr violator = ldstQueue.getMemDepViolator(tid); 1367 1368 DPRINTF(IEW, "LDSTQ detected a violation. Violator PC: " 1369 "%s, inst PC: %s. Addr is: %#x.\n", 1370 violator->pcState(), inst->pcState(), |
1379 inst->physEffAddrLow); | 1371 inst->physEffAddr); |
1380 DPRINTF(IEW, "Violation will not be handled because " 1381 "already squashing\n"); 1382 1383 ++memOrderViolationEvents; 1384 } 1385 } 1386 } 1387 --- 67 unchanged lines hidden (view full) --- 1455DefaultIEW<Impl>::tick() 1456{ 1457 wbNumInst = 0; 1458 wbCycle = 0; 1459 1460 wroteToTimeBuffer = false; 1461 updatedQueues = false; 1462 | 1372 DPRINTF(IEW, "Violation will not be handled because " 1373 "already squashing\n"); 1374 1375 ++memOrderViolationEvents; 1376 } 1377 } 1378 } 1379 --- 67 unchanged lines hidden (view full) --- 1447DefaultIEW<Impl>::tick() 1448{ 1449 wbNumInst = 0; 1450 wbCycle = 0; 1451 1452 wroteToTimeBuffer = false; 1453 updatedQueues = false; 1454 |
1455 ldstQueue.tick(); 1456 |
|
1463 sortInsts(); 1464 1465 // Free function units marked as being freed this cycle. 1466 fuPool->processFreeUnits(); 1467 1468 list<ThreadID>::iterator threads = activeThreads->begin(); 1469 list<ThreadID>::iterator end = activeThreads->end(); 1470 --- 174 unchanged lines hidden --- | 1457 sortInsts(); 1458 1459 // Free function units marked as being freed this cycle. 1460 fuPool->processFreeUnits(); 1461 1462 list<ThreadID>::iterator threads = activeThreads->begin(); 1463 list<ThreadID>::iterator end = activeThreads->end(); 1464 --- 174 unchanged lines hidden --- |