inst_queue_impl.hh (8232:b28d06a175be) inst_queue_impl.hh (8240:38befb82b2c9)
1/*
2 * Copyright (c) 2011 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

--- 244 unchanged lines hidden (view full) ---

253 .flags(total | pdf | cdf )
254 ;
255 for (int i = 0; i < Num_OpClasses; ++i) {
256 queueResDist.subname(i, opClassStrings[i]);
257 }
258*/
259 numIssuedDist
260 .init(0,totalWidth,1)
1/*
2 * Copyright (c) 2011 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

--- 244 unchanged lines hidden (view full) ---

253 .flags(total | pdf | cdf )
254 ;
255 for (int i = 0; i < Num_OpClasses; ++i) {
256 queueResDist.subname(i, opClassStrings[i]);
257 }
258*/
259 numIssuedDist
260 .init(0,totalWidth,1)
261 .name(name() + ".ISSUE:issued_per_cycle")
261 .name(name() + ".issued_per_cycle")
262 .desc("Number of insts issued each cycle")
263 .flags(pdf)
264 ;
265/*
266 dist_unissued
267 .init(Num_OpClasses+2)
262 .desc("Number of insts issued each cycle")
263 .flags(pdf)
264 ;
265/*
266 dist_unissued
267 .init(Num_OpClasses+2)
268 .name(name() + ".ISSUE:unissued_cause")
268 .name(name() + ".unissued_cause")
269 .desc("Reason ready instruction not issued")
270 .flags(pdf | dist)
271 ;
272 for (int i=0; i < (Num_OpClasses + 2); ++i) {
273 dist_unissued.subname(i, unissued_names[i]);
274 }
275*/
276 statIssuedInstType
277 .init(numThreads,Enums::Num_OpClass)
269 .desc("Reason ready instruction not issued")
270 .flags(pdf | dist)
271 ;
272 for (int i=0; i < (Num_OpClasses + 2); ++i) {
273 dist_unissued.subname(i, unissued_names[i]);
274 }
275*/
276 statIssuedInstType
277 .init(numThreads,Enums::Num_OpClass)
278 .name(name() + ".ISSUE:FU_type")
278 .name(name() + ".FU_type")
279 .desc("Type of FU issued")
280 .flags(total | pdf | dist)
281 ;
282 statIssuedInstType.ysubnames(Enums::OpClassStrings);
283
284 //
285 // How long did instructions for a particular FU type wait prior to issue
286 //
287/*
288 issueDelayDist
289 .init(Num_OpClasses,0,99,2)
279 .desc("Type of FU issued")
280 .flags(total | pdf | dist)
281 ;
282 statIssuedInstType.ysubnames(Enums::OpClassStrings);
283
284 //
285 // How long did instructions for a particular FU type wait prior to issue
286 //
287/*
288 issueDelayDist
289 .init(Num_OpClasses,0,99,2)
290 .name(name() + ".ISSUE:")
290 .name(name() + ".")
291 .desc("cycles from operands ready to issue")
292 .flags(pdf | cdf)
293 ;
294
295 for (int i=0; i<Num_OpClasses; ++i) {
296 std::stringstream subname;
297 subname << opClassStrings[i] << "_delay";
298 issueDelayDist.subname(i, subname.str());
299 }
300*/
301 issueRate
291 .desc("cycles from operands ready to issue")
292 .flags(pdf | cdf)
293 ;
294
295 for (int i=0; i<Num_OpClasses; ++i) {
296 std::stringstream subname;
297 subname << opClassStrings[i] << "_delay";
298 issueDelayDist.subname(i, subname.str());
299 }
300*/
301 issueRate
302 .name(name() + ".ISSUE:rate")
302 .name(name() + ".rate")
303 .desc("Inst issue rate")
304 .flags(total)
305 ;
306 issueRate = iqInstsIssued / cpu->numCycles;
307
308 statFuBusy
309 .init(Num_OpClasses)
303 .desc("Inst issue rate")
304 .flags(total)
305 ;
306 issueRate = iqInstsIssued / cpu->numCycles;
307
308 statFuBusy
309 .init(Num_OpClasses)
310 .name(name() + ".ISSUE:fu_full")
310 .name(name() + ".fu_full")
311 .desc("attempts to use FU when none available")
312 .flags(pdf | dist)
313 ;
314 for (int i=0; i < Num_OpClasses; ++i) {
315 statFuBusy.subname(i, Enums::OpClassStrings[i]);
316 }
317
318 fuBusy
319 .init(numThreads)
311 .desc("attempts to use FU when none available")
312 .flags(pdf | dist)
313 ;
314 for (int i=0; i < Num_OpClasses; ++i) {
315 statFuBusy.subname(i, Enums::OpClassStrings[i]);
316 }
317
318 fuBusy
319 .init(numThreads)
320 .name(name() + ".ISSUE:fu_busy_cnt")
320 .name(name() + ".fu_busy_cnt")
321 .desc("FU busy when requested")
322 .flags(total)
323 ;
324
325 fuBusyRate
321 .desc("FU busy when requested")
322 .flags(total)
323 ;
324
325 fuBusyRate
326 .name(name() + ".ISSUE:fu_busy_rate")
326 .name(name() + ".fu_busy_rate")
327 .desc("FU busy rate (busy events/executed inst)")
328 .flags(total)
329 ;
330 fuBusyRate = fuBusy / iqInstsIssued;
331
332 for (ThreadID tid = 0; tid < numThreads; tid++) {
333 // Tell mem dependence unit to reg stats as well.
334 memDepUnit[tid].regStats();

--- 1187 unchanged lines hidden ---
327 .desc("FU busy rate (busy events/executed inst)")
328 .flags(total)
329 ;
330 fuBusyRate = fuBusy / iqInstsIssued;
331
332 for (ThreadID tid = 0; tid < numThreads; tid++) {
333 // Tell mem dependence unit to reg stats as well.
334 memDepUnit[tid].regStats();

--- 1187 unchanged lines hidden ---