iew_impl.hh (4636:afc8da9f526e) | iew_impl.hh (5215:68f719ce5496) |
---|---|
1/* 2 * Copyright (c) 2004-2006 The Regents of The University of Michigan 3 * All rights reserved. 4 * 5 * Redistribution and use in source and binary forms, with or without 6 * modification, are permitted provided that the following conditions are 7 * met: redistributions of source code must retain the above copyright 8 * notice, this list of conditions and the following disclaimer; --- 915 unchanged lines hidden (view full) --- 924 925 // If the status was unblocking, then instructions from the skid 926 // buffer were used. Remove those instructions and handle 927 // the rest of unblocking. 928 dispatchInsts(tid); 929 930 ++iewUnblockCycles; 931 | 1/* 2 * Copyright (c) 2004-2006 The Regents of The University of Michigan 3 * All rights reserved. 4 * 5 * Redistribution and use in source and binary forms, with or without 6 * modification, are permitted provided that the following conditions are 7 * met: redistributions of source code must retain the above copyright 8 * notice, this list of conditions and the following disclaimer; --- 915 unchanged lines hidden (view full) --- 924 925 // If the status was unblocking, then instructions from the skid 926 // buffer were used. Remove those instructions and handle 927 // the rest of unblocking. 928 dispatchInsts(tid); 929 930 ++iewUnblockCycles; 931 |
932 if (validInstsFromRename() && dispatchedAllInsts) { | 932 if (validInstsFromRename()) { |
933 // Add the current inputs to the skid buffer so they can be 934 // reprocessed when this stage unblocks. 935 skidInsert(tid); 936 } 937 938 unblock(tid); 939 } 940} 941 942template <class Impl> 943void 944DefaultIEW<Impl>::dispatchInsts(unsigned tid) 945{ | 933 // Add the current inputs to the skid buffer so they can be 934 // reprocessed when this stage unblocks. 935 skidInsert(tid); 936 } 937 938 unblock(tid); 939 } 940} 941 942template <class Impl> 943void 944DefaultIEW<Impl>::dispatchInsts(unsigned tid) 945{ |
946 dispatchedAllInsts = true; 947 | |
948 // Obtain instructions from skid buffer if unblocking, or queue from rename 949 // otherwise. 950 std::queue<DynInstPtr> &insts_to_dispatch = 951 dispatchStatus[tid] == Unblocking ? 952 skidBuffer[tid] : insts[tid]; 953 954 int insts_to_add = insts_to_dispatch.size(); 955 --- 50 unchanged lines hidden (view full) --- 1006 // Call function to start blocking. 1007 block(tid); 1008 1009 // Set unblock to false. Special case where we are using 1010 // skidbuffer (unblocking) instructions but then we still 1011 // get full in the IQ. 1012 toRename->iewUnblock[tid] = false; 1013 | 946 // Obtain instructions from skid buffer if unblocking, or queue from rename 947 // otherwise. 948 std::queue<DynInstPtr> &insts_to_dispatch = 949 dispatchStatus[tid] == Unblocking ? 950 skidBuffer[tid] : insts[tid]; 951 952 int insts_to_add = insts_to_dispatch.size(); 953 --- 50 unchanged lines hidden (view full) --- 1004 // Call function to start blocking. 1005 block(tid); 1006 1007 // Set unblock to false. Special case where we are using 1008 // skidbuffer (unblocking) instructions but then we still 1009 // get full in the IQ. 1010 toRename->iewUnblock[tid] = false; 1011 |
1014 dispatchedAllInsts = false; 1015 | |
1016 ++iewIQFullEvents; 1017 break; 1018 } else if (ldstQueue.isFull(tid)) { 1019 DPRINTF(IEW, "[tid:%i]: Issue: LSQ has become full.\n",tid); 1020 1021 // Call function to start blocking. 1022 block(tid); 1023 1024 // Set unblock to false. Special case where we are using 1025 // skidbuffer (unblocking) instructions but then we still 1026 // get full in the IQ. 1027 toRename->iewUnblock[tid] = false; 1028 | 1012 ++iewIQFullEvents; 1013 break; 1014 } else if (ldstQueue.isFull(tid)) { 1015 DPRINTF(IEW, "[tid:%i]: Issue: LSQ has become full.\n",tid); 1016 1017 // Call function to start blocking. 1018 block(tid); 1019 1020 // Set unblock to false. Special case where we are using 1021 // skidbuffer (unblocking) instructions but then we still 1022 // get full in the IQ. 1023 toRename->iewUnblock[tid] = false; 1024 |
1029 dispatchedAllInsts = false; 1030 | |
1031 ++iewLSQFullEvents; 1032 break; 1033 } 1034 1035 // Otherwise issue the instruction just fine. 1036 if (inst->isLoad()) { 1037 DPRINTF(IEW, "[tid:%i]: Issue: Memory instruction " 1038 "encountered, adding to LSQ.\n", tid); --- 552 unchanged lines hidden --- | 1025 ++iewLSQFullEvents; 1026 break; 1027 } 1028 1029 // Otherwise issue the instruction just fine. 1030 if (inst->isLoad()) { 1031 DPRINTF(IEW, "[tid:%i]: Issue: Memory instruction " 1032 "encountered, adding to LSQ.\n", tid); --- 552 unchanged lines hidden --- |