inst_queue.hh (5529:9ae69b9cd7fd) inst_queue.hh (5999:3cf8e71257e0)
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;

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

438 void dumpLists();
439
440 /** Debugging function to dump out all instructions that are in the
441 * IQ.
442 */
443 void dumpInsts();
444
445 /** Stat for number of instructions added. */
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;

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

438 void dumpLists();
439
440 /** Debugging function to dump out all instructions that are in the
441 * IQ.
442 */
443 void dumpInsts();
444
445 /** Stat for number of instructions added. */
446 Stats::Scalar<> iqInstsAdded;
446 Stats::Scalar iqInstsAdded;
447 /** Stat for number of non-speculative instructions added. */
447 /** Stat for number of non-speculative instructions added. */
448 Stats::Scalar<> iqNonSpecInstsAdded;
448 Stats::Scalar iqNonSpecInstsAdded;
449
449
450 Stats::Scalar<> iqInstsIssued;
450 Stats::Scalar iqInstsIssued;
451 /** Stat for number of integer instructions issued. */
451 /** Stat for number of integer instructions issued. */
452 Stats::Scalar<> iqIntInstsIssued;
452 Stats::Scalar iqIntInstsIssued;
453 /** Stat for number of floating point instructions issued. */
453 /** Stat for number of floating point instructions issued. */
454 Stats::Scalar<> iqFloatInstsIssued;
454 Stats::Scalar iqFloatInstsIssued;
455 /** Stat for number of branch instructions issued. */
455 /** Stat for number of branch instructions issued. */
456 Stats::Scalar<> iqBranchInstsIssued;
456 Stats::Scalar iqBranchInstsIssued;
457 /** Stat for number of memory instructions issued. */
457 /** Stat for number of memory instructions issued. */
458 Stats::Scalar<> iqMemInstsIssued;
458 Stats::Scalar iqMemInstsIssued;
459 /** Stat for number of miscellaneous instructions issued. */
459 /** Stat for number of miscellaneous instructions issued. */
460 Stats::Scalar<> iqMiscInstsIssued;
460 Stats::Scalar iqMiscInstsIssued;
461 /** Stat for number of squashed instructions that were ready to issue. */
461 /** Stat for number of squashed instructions that were ready to issue. */
462 Stats::Scalar<> iqSquashedInstsIssued;
462 Stats::Scalar iqSquashedInstsIssued;
463 /** Stat for number of squashed instructions examined when squashing. */
463 /** Stat for number of squashed instructions examined when squashing. */
464 Stats::Scalar<> iqSquashedInstsExamined;
464 Stats::Scalar iqSquashedInstsExamined;
465 /** Stat for number of squashed instruction operands examined when
466 * squashing.
467 */
465 /** Stat for number of squashed instruction operands examined when
466 * squashing.
467 */
468 Stats::Scalar<> iqSquashedOperandsExamined;
468 Stats::Scalar iqSquashedOperandsExamined;
469 /** Stat for number of non-speculative instructions removed due to a squash.
470 */
469 /** Stat for number of non-speculative instructions removed due to a squash.
470 */
471 Stats::Scalar<> iqSquashedNonSpecRemoved;
471 Stats::Scalar iqSquashedNonSpecRemoved;
472 // Also include number of instructions rescheduled and replayed.
473
474 /** Distribution of number of instructions in the queue.
475 * @todo: Need to create struct to track the entry time for each
476 * instruction. */
472 // Also include number of instructions rescheduled and replayed.
473
474 /** Distribution of number of instructions in the queue.
475 * @todo: Need to create struct to track the entry time for each
476 * instruction. */
477// Stats::VectorDistribution<> queueResDist;
477// Stats::VectorDistribution queueResDist;
478 /** Distribution of the number of instructions issued. */
478 /** Distribution of the number of instructions issued. */
479 Stats::Distribution<> numIssuedDist;
479 Stats::Distribution numIssuedDist;
480 /** Distribution of the cycles it takes to issue an instruction.
481 * @todo: Need to create struct to track the ready time for each
482 * instruction. */
480 /** Distribution of the cycles it takes to issue an instruction.
481 * @todo: Need to create struct to track the ready time for each
482 * instruction. */
483// Stats::VectorDistribution<> issueDelayDist;
483// Stats::VectorDistribution issueDelayDist;
484
485 /** Number of times an instruction could not be issued because a
486 * FU was busy.
487 */
484
485 /** Number of times an instruction could not be issued because a
486 * FU was busy.
487 */
488 Stats::Vector<> statFuBusy;
489// Stats::Vector<> dist_unissued;
488 Stats::Vector statFuBusy;
489// Stats::Vector dist_unissued;
490 /** Stat for total number issued for each instruction type. */
490 /** Stat for total number issued for each instruction type. */
491 Stats::Vector2d<> statIssuedInstType;
491 Stats::Vector2d statIssuedInstType;
492
493 /** Number of instructions issued per cycle. */
494 Stats::Formula issueRate;
495
496 /** Number of times the FU was busy. */
492
493 /** Number of instructions issued per cycle. */
494 Stats::Formula issueRate;
495
496 /** Number of times the FU was busy. */
497 Stats::Vector<> fuBusy;
497 Stats::Vector fuBusy;
498 /** Number of times the FU was busy per instruction issued. */
499 Stats::Formula fuBusyRate;
500};
501
502#endif //__CPU_O3_INST_QUEUE_HH__
498 /** Number of times the FU was busy per instruction issued. */
499 Stats::Formula fuBusyRate;
500};
501
502#endif //__CPU_O3_INST_QUEUE_HH__