inst_queue_impl.hh (5100:7a0180040755) | inst_queue_impl.hh (5327:3390941f0643) |
---|---|
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; --- 653 unchanged lines hidden (view full) --- 662 iewStage->wakeCPU(); 663 664 if (fu_idx > -1) 665 fuPool->freeUnitNextCycle(fu_idx); 666 667 // @todo: Ensure that these FU Completions happen at the beginning 668 // of a cycle, otherwise they could add too many instructions to 669 // the queue. | 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; --- 653 unchanged lines hidden (view full) --- 662 iewStage->wakeCPU(); 663 664 if (fu_idx > -1) 665 fuPool->freeUnitNextCycle(fu_idx); 666 667 // @todo: Ensure that these FU Completions happen at the beginning 668 // of a cycle, otherwise they could add too many instructions to 669 // the queue. |
670 issueToExecuteQueue->access(0)->size++; | 670 issueToExecuteQueue->access(-1)->size++; |
671 instsToExecute.push_back(inst); 672} 673 674// @todo: Figure out a better way to remove the squashed items from the 675// lists. Checking the top item of each list to see if it's squashed 676// wastes time and forces jumps. 677template <class Impl> 678void --- 68 unchanged lines hidden (view full) --- 747 if (idx >= 0) 748 fuPool->freeUnitNextCycle(idx); 749 } else { 750 int issue_latency = fuPool->getIssueLatency(op_class); 751 // Generate completion event for the FU 752 FUCompletion *execution = new FUCompletion(issuing_inst, 753 idx, this); 754 | 671 instsToExecute.push_back(inst); 672} 673 674// @todo: Figure out a better way to remove the squashed items from the 675// lists. Checking the top item of each list to see if it's squashed 676// wastes time and forces jumps. 677template <class Impl> 678void --- 68 unchanged lines hidden (view full) --- 747 if (idx >= 0) 748 fuPool->freeUnitNextCycle(idx); 749 } else { 750 int issue_latency = fuPool->getIssueLatency(op_class); 751 // Generate completion event for the FU 752 FUCompletion *execution = new FUCompletion(issuing_inst, 753 idx, this); 754 |
755 execution->schedule(curTick + cpu->ticks(issue_latency - 1)); | 755 execution->schedule(curTick + cpu->ticks(op_latency - 1)); |
756 757 // @todo: Enforce that issue_latency == 1 or op_latency 758 if (issue_latency > 1) { 759 // If FU isn't pipelined, then it must be freed 760 // upon the execution completing. 761 execution->setFreeFU(); 762 } else { 763 // Add the FU onto the list of FU's to be freed next cycle. --- 645 unchanged lines hidden --- | 756 757 // @todo: Enforce that issue_latency == 1 or op_latency 758 if (issue_latency > 1) { 759 // If FU isn't pipelined, then it must be freed 760 // upon the execution completing. 761 execution->setFreeFU(); 762 } else { 763 // Add the FU onto the list of FU's to be freed next cycle. --- 645 unchanged lines hidden --- |