inst_queue_impl.hh (4284:c8800319ed0c) | inst_queue_impl.hh (4318:eb4241362a80) |
---|---|
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; --- 67 unchanged lines hidden (view full) --- 76 77 switchedOut = false; 78 79 numThreads = params->numberOfThreads; 80 81 // Set the number of physical registers as the number of int + float 82 numPhysRegs = numPhysIntRegs + numPhysFloatRegs; 83 | 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; --- 67 unchanged lines hidden (view full) --- 76 77 switchedOut = false; 78 79 numThreads = params->numberOfThreads; 80 81 // Set the number of physical registers as the number of int + float 82 numPhysRegs = numPhysIntRegs + numPhysFloatRegs; 83 |
84 DPRINTF(IQ, "There are %i physical registers.\n", numPhysRegs); 85 | |
86 //Create an entry for each physical register within the 87 //dependency graph. 88 dependGraph.resize(numPhysRegs); 89 90 // Resize the register scoreboard. 91 regScoreboard.resize(numPhysRegs); 92 93 //Initialize Mem Dependence Units --- 25 unchanged lines hidden (view full) --- 119 //@todo:make work if part_amt doesnt divide evenly. 120 int part_amt = numEntries / numThreads; 121 122 //Divide ROB up evenly 123 for (int i = 0; i < numThreads; i++) { 124 maxEntries[i] = part_amt; 125 } 126 | 84 //Create an entry for each physical register within the 85 //dependency graph. 86 dependGraph.resize(numPhysRegs); 87 88 // Resize the register scoreboard. 89 regScoreboard.resize(numPhysRegs); 90 91 //Initialize Mem Dependence Units --- 25 unchanged lines hidden (view full) --- 117 //@todo:make work if part_amt doesnt divide evenly. 118 int part_amt = numEntries / numThreads; 119 120 //Divide ROB up evenly 121 for (int i = 0; i < numThreads; i++) { 122 maxEntries[i] = part_amt; 123 } 124 |
125/* |
|
127 DPRINTF(IQ, "IQ sharing policy set to Partitioned:" 128 "%i entries per thread.\n",part_amt); | 126 DPRINTF(IQ, "IQ sharing policy set to Partitioned:" 127 "%i entries per thread.\n",part_amt); |
128*/ |
|
129 130 } else if (policy == "threshold") { 131 iqPolicy = Threshold; 132 133 double threshold = (double)params->smtIQThreshold / 100; 134 135 int thresholdIQ = (int)((double)threshold * numEntries); 136 137 //Divide up by threshold amount 138 for (int i = 0; i < numThreads; i++) { 139 maxEntries[i] = thresholdIQ; 140 } 141 | 129 130 } else if (policy == "threshold") { 131 iqPolicy = Threshold; 132 133 double threshold = (double)params->smtIQThreshold / 100; 134 135 int thresholdIQ = (int)((double)threshold * numEntries); 136 137 //Divide up by threshold amount 138 for (int i = 0; i < numThreads; i++) { 139 maxEntries[i] = thresholdIQ; 140 } 141 |
142/* |
|
142 DPRINTF(IQ, "IQ sharing policy set to Threshold:" 143 "%i entries per thread.\n",thresholdIQ); | 143 DPRINTF(IQ, "IQ sharing policy set to Threshold:" 144 "%i entries per thread.\n",thresholdIQ); |
145*/ |
|
144 } else { 145 assert(0 && "Invalid IQ Sharing Policy.Options Are:{Dynamic," 146 "Partitioned, Threshold}"); 147 } 148} 149 150template <class Impl> 151InstructionQueue<Impl>::~InstructionQueue() --- 203 unchanged lines hidden (view full) --- 355 nonSpecInsts.clear(); 356 listOrder.clear(); 357} 358 359template <class Impl> 360void 361InstructionQueue<Impl>::setActiveThreads(std::list<unsigned> *at_ptr) 362{ | 146 } else { 147 assert(0 && "Invalid IQ Sharing Policy.Options Are:{Dynamic," 148 "Partitioned, Threshold}"); 149 } 150} 151 152template <class Impl> 153InstructionQueue<Impl>::~InstructionQueue() --- 203 unchanged lines hidden (view full) --- 357 nonSpecInsts.clear(); 358 listOrder.clear(); 359} 360 361template <class Impl> 362void 363InstructionQueue<Impl>::setActiveThreads(std::list<unsigned> *at_ptr) 364{ |
363 DPRINTF(IQ, "Setting active threads list pointer.\n"); | |
364 activeThreads = at_ptr; 365} 366 367template <class Impl> 368void 369InstructionQueue<Impl>::setIssueToExecuteQueue(TimeBuffer<IssueStruct> *i2e_ptr) 370{ | 365 activeThreads = at_ptr; 366} 367 368template <class Impl> 369void 370InstructionQueue<Impl>::setIssueToExecuteQueue(TimeBuffer<IssueStruct> *i2e_ptr) 371{ |
371 DPRINTF(IQ, "Set the issue to execute queue.\n"); 372 issueToExecuteQueue = i2e_ptr; | 372 issueToExecuteQueue = i2e_ptr; |
373} 374 375template <class Impl> 376void 377InstructionQueue<Impl>::setTimeBuffer(TimeBuffer<TimeStruct> *tb_ptr) 378{ | 373} 374 375template <class Impl> 376void 377InstructionQueue<Impl>::setTimeBuffer(TimeBuffer<TimeStruct> *tb_ptr) 378{ |
379 DPRINTF(IQ, "Set the time buffer.\n"); | |
380 timeBuffer = tb_ptr; 381 382 fromCommit = timeBuffer->getWire(-commitToIEWDelay); 383} 384 385template <class Impl> 386void 387InstructionQueue<Impl>::switchOut() --- 1028 unchanged lines hidden --- | 379 timeBuffer = tb_ptr; 380 381 fromCommit = timeBuffer->getWire(-commitToIEWDelay); 382} 383 384template <class Impl> 385void 386InstructionQueue<Impl>::switchOut() --- 1028 unchanged lines hidden --- |