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 --- |