OpenASIP
2.0
|
#include <TransportPipeline.hh>
Public Member Functions | |
TransportPipeline (GCUState &parent) | |
virtual | ~TransportPipeline () |
virtual int | latency () const |
virtual void | startOperation (Operation &op) |
virtual void | advanceClock () |
virtual OperationExecutor * | copy () |
virtual void | setContext (OperationContext &context) |
bool | hasPendingOperations () const |
Public Member Functions inherited from OperationExecutor | |
OperationExecutor () | |
OperationExecutor (FUState &parent) | |
virtual | ~OperationExecutor () |
FUState & | parent () const |
void | setParent (FUState &parent) |
void | addBinding (int io, PortState &port) |
PortState & | binding (int io) const |
bool | hasPendingOperations () const |
virtual void | reset () |
Private Member Functions | |
TransportPipeline & | operator= (const TransportPipeline &) |
Assignment not allowed. More... | |
Private Attributes | |
Operation * | operation_ |
Operation to be triggered next. More... | |
OperationContext * | context_ |
Operation context used to fetch the values for PC and RA. More... | |
OperationContext | tempContext_ |
Operation context seen by the operation. More... | |
InstructionAddress | PC_ |
Storage for PC value in the context. More... | |
InstructionAddress | IBS_ |
Storage for IRF block start in the context. More... | |
SimValue | RA_ |
Storage for RA value in the context. More... | |
int | branchDelayCycles_ |
Branch delay cycles. More... | |
GCUState & | parent_ |
The owner GCUState. More... | |
Additional Inherited Members | |
Protected Attributes inherited from OperationExecutor | |
std::vector< PortState * > | bindings_ |
PortStates that are bound to a certain input or output operand. More... | |
bool | hasPendingOperations_ |
This is set to true if the OperationExecutor is not in 'idle' mode. More... | |
Models the transport pipeline of global control unit.
Definition at line 49 of file TransportPipeline.hh.
|
explicit |
Constructor.
parent | Parent of the pipeline. |
Definition at line 57 of file TransportPipeline.cc.
References FUState::context(), OperationExecutor::parent(), OperationContext::setStateRegistry(), OperationContext::stateRegistry(), and tempContext_.
Referenced by copy().
|
virtual |
Destructor.
Definition at line 71 of file TransportPipeline.cc.
References tempContext_, and OperationContext::unsetStateRegistry().
|
virtual |
Nothing is done when clock cycle changes.
Implements OperationExecutor.
Definition at line 130 of file TransportPipeline.cc.
|
virtual |
Copies OperationExecutor.
Implements OperationExecutor.
Definition at line 139 of file TransportPipeline.cc.
References TransportPipeline().
|
inline |
Definition at line 59 of file TransportPipeline.hh.
|
virtual |
Returns the latency of the pipeline.
Definition at line 81 of file TransportPipeline.cc.
|
private |
Assignment not allowed.
|
virtual |
Sets the OperationContext of the pipeline.
context | The OperationContext. |
Implements OperationExecutor.
Definition at line 149 of file TransportPipeline.cc.
References context_.
|
virtual |
Start the execution of the operation.
First inputs and outputs of the operation are collected in a vector. Then a new operation context is created. After triggering the operation the registers which values are changed are updated in parent GCU state.
op | Operation to be triggered. |
Implements OperationExecutor.
Definition at line 96 of file TransportPipeline.cc.
References assert, OperationExecutor::binding(), context_, Operation::isBranch(), Operation::isCall(), Operation::numberOfInputs(), Operation::numberOfOutputs(), operation_, parent_, OperationContext::programCounter(), OperationContext::returnAddress(), OperationContext::saveReturnAddress(), GCUState::setProgramCounter(), GCUState::setReturnAddress(), OperationContext::setSaveReturnAddress(), OperationContext::setUpdateProgramCounter(), Operation::simulateTrigger(), tempContext_, and OperationContext::updateProgramCounter().
|
private |
Branch delay cycles.
Definition at line 80 of file TransportPipeline.hh.
|
private |
Operation context used to fetch the values for PC and RA.
Definition at line 70 of file TransportPipeline.hh.
Referenced by setContext(), and startOperation().
|
private |
Storage for IRF block start in the context.
Definition at line 76 of file TransportPipeline.hh.
|
private |
Operation to be triggered next.
Definition at line 68 of file TransportPipeline.hh.
Referenced by startOperation().
|
private |
The owner GCUState.
Definition at line 82 of file TransportPipeline.hh.
Referenced by startOperation().
|
private |
Storage for PC value in the context.
Definition at line 74 of file TransportPipeline.hh.
|
private |
Storage for RA value in the context.
Definition at line 78 of file TransportPipeline.hh.
|
private |
Operation context seen by the operation.
Definition at line 72 of file TransportPipeline.hh.
Referenced by startOperation(), TransportPipeline(), and ~TransportPipeline().