execute.cc (13964:e4dbd156a640) | execute.cc (13965:347e04956cfe) |
---|---|
1/* 2 * Copyright (c) 2013-2014,2018 ARM Limited 3 * All rights reserved 4 * 5 * The license below extends only to copyright in the software and shall 6 * not be construed as granting a license to any other intellectual 7 * property including but not limited to intellectual property relating 8 * to a hardware implementation of the functionality of the software --- 1669 unchanged lines hidden (view full) --- 1678 priority_list = cpu.randomPriority(); 1679 break; 1680 default: 1681 panic("Invalid thread policy"); 1682 } 1683 1684 for (auto tid : priority_list) { 1685 ExecuteThreadInfo &ex_info = executeInfo[tid]; | 1/* 2 * Copyright (c) 2013-2014,2018 ARM Limited 3 * All rights reserved 4 * 5 * The license below extends only to copyright in the software and shall 6 * not be construed as granting a license to any other intellectual 7 * property including but not limited to intellectual property relating 8 * to a hardware implementation of the functionality of the software --- 1669 unchanged lines hidden (view full) --- 1678 priority_list = cpu.randomPriority(); 1679 break; 1680 default: 1681 panic("Invalid thread policy"); 1682 } 1683 1684 for (auto tid : priority_list) { 1685 ExecuteThreadInfo &ex_info = executeInfo[tid]; |
1686 1687 bool is_thread_active = 1688 cpu.getContext(tid)->status() == ThreadContext::Active; 1689 bool can_commit_insts = !ex_info.inFlightInsts->empty() && 1690 is_thread_active; 1691 | 1686 bool can_commit_insts = !ex_info.inFlightInsts->empty(); |
1692 if (can_commit_insts) { 1693 QueuedInst *head_inflight_inst = &(ex_info.inFlightInsts->front()); 1694 MinorDynInstPtr inst = head_inflight_inst->inst; 1695 1696 can_commit_insts = can_commit_insts && 1697 (!inst->inLSQ || (lsq.findResponse(inst) != NULL)); 1698 1699 if (!inst->inLSQ) { --- 49 unchanged lines hidden (view full) --- 1749 case Enums::Random: 1750 priority_list = cpu.randomPriority(); 1751 break; 1752 default: 1753 panic("Invalid thread scheduling policy."); 1754 } 1755 1756 for (auto tid : priority_list) { | 1687 if (can_commit_insts) { 1688 QueuedInst *head_inflight_inst = &(ex_info.inFlightInsts->front()); 1689 MinorDynInstPtr inst = head_inflight_inst->inst; 1690 1691 can_commit_insts = can_commit_insts && 1692 (!inst->inLSQ || (lsq.findResponse(inst) != NULL)); 1693 1694 if (!inst->inLSQ) { --- 49 unchanged lines hidden (view full) --- 1744 case Enums::Random: 1745 priority_list = cpu.randomPriority(); 1746 break; 1747 default: 1748 panic("Invalid thread scheduling policy."); 1749 } 1750 1751 for (auto tid : priority_list) { |
1757 if (cpu.getContext(tid)->status() == ThreadContext::Active && 1758 getInput(tid)) { | 1752 if (getInput(tid)) { |
1759 issuePriority = tid; 1760 return tid; 1761 } 1762 } 1763 1764 return InvalidThreadID; 1765} 1766 --- 115 unchanged lines hidden --- | 1753 issuePriority = tid; 1754 return tid; 1755 } 1756 } 1757 1758 return InvalidThreadID; 1759} 1760 --- 115 unchanged lines hidden --- |