Simulated instruction class. More...
#include <Token.h>
Public Member Functions | |
| Token (InstructionInfo *type, InstructionCount number, CycleCount atCycle, bool isFake) | |
| Constructor. | |
| ~Token () | |
| : Destructor | |
| void | dumpDebugInfo () |
| void | setMemoryLoadInfo (Address address, unsigned int numBytes) |
| Set memory load operation info. | |
| void | setMemoryStoreInfo (Address address, unsigned int numBytes) |
| Set memory store operation info. | |
| void | setInDependency (Dependency *dep) |
| Set link to input dependency record. | |
| void | setOutDependency (Dependency *dep) |
| Set link to output dependency record. | |
| void | setOptionalProb (double p) |
| InstructionInfo * | getType () |
| InstructionCount | instructionNumber () |
| void | fixupInstructionInfo () |
| Adjust instruction info record if necessary. | |
| bool | needsAddressGeneration () |
| Check if instruction needs an address generated. | |
| bool | addressIsReady () |
| Check if address is ready for memory op. | |
| bool | needsFunctionalUnit (FunctionalUnit *fu) |
| Check if instruction can use functional unit now. | |
| bool | aguOperandsReady (CycleCount atCycle) |
| Check if AGU operands are ready. | |
| bool | allOperandsReady (CycleCount atCycle) |
| Check if all operands are available for instruction. | |
| bool | isExecuting (CycleCount currentCycle) |
| True if instruction is executing on functional unit now. | |
| bool | isCompleted (CycleCount currentCycle) |
| True if instruction has been completed. | |
| bool | isLoad () |
| bool | isStore () |
| bool | isFake () |
| bool | wasRetired () |
| bool | wasCanceled () |
| CycleCount | issuedAt () |
| void | setBranchMispredict () |
| void | executionStart (CycleCount currentCycle) |
| Mark the beginning of execution on a functional unit. | |
| void | executionContinue (CycleCount currentCycle) |
| void | loadSatisfiedAt (CycleCount atCycle) |
| void | storeSatisfiedAt (CycleCount atCycle) |
| bool | isMispredictedJump () |
| void | retireInstruction (CycleCount atCycle) |
| Mark instruction as retired. | |
| void | cancelInstruction (CycleCount atCycle) |
| Mark instruction as canceled. | |
Simulated instruction class.
| bool Token::aguOperandsReady | ( | CycleCount | atCycle | ) |
Check if AGU operands are ready.
TODO: We may need separate use-distance tables for AGU operands and ALU operands, since they can execute independently and are quite different. For now we assume AGU operands are ready always
check dependencies but not a load if (inDependency && inDependency->numProducers != inDependency->numReady) { if (Debug>1) fprintf(debugLogFP, "Token %llu still waiting for dependencies %u %u\n", number, inDependency->numProducers, inDependency->numReady); return false; } else { return true; }
Referenced by InstructionQueue::scheduleInstructions().
| void Token::fixupInstructionInfo | ( | ) |
Adjust instruction info record if necessary.
Once the token has load/store's possibly generated, we might need to point at a different instruction info record, because multiple variants of an instruction are handled differently.
1.7.1