#include <PipelineNodeBase.h>
Onikiri::PipelineNodeBaseに対する継承グラフ
PipelineNodeBase.h の 48 行で定義されています。
typedef ClockedResourceBase Onikiri::PipelineNodeBase::BaseT [protected] |
PipelineNodeBase.h の 229 行で定義されています。
Onikiri::PipelineNodeBase::PipelineNodeBase | ( | ) | [inline] |
PipelineNodeBase.h の 61 行で定義されています。
参照先 Onikiri::ClockedResourceBase::AddChild()・Onikiri::Pipeline::AddUpperPipelineNode()・m_latch・m_lowerPipeline.
00061 : 00062 m_initialized( false ), 00063 m_enableLatch( true ), 00064 m_upperPipelineNode( NULL ), 00065 m_upperPipeline( NULL ), 00066 m_lowerPipelineNode( NULL ) 00067 { 00068 BaseT::AddChild( &m_latch ); // gcc needs 'BaseT::' 00069 BaseT::AddChild( &m_lowerPipeline ); 00070 m_lowerPipeline.AddUpperPipelineNode( this ); 00071 }
関数の呼び出しグラフ:
virtual Onikiri::PipelineNodeBase::~PipelineNodeBase | ( | ) | [inline, virtual] |
PipelineNodeBase.h の 73 行で定義されています。
参照先 ASSERT・m_initialized.
00074 { 00075 ASSERT( m_initialized, "Initialize() has not been called." ); 00076 }
virtual void Onikiri::PipelineNodeBase::AddLowerPipeline | ( | Pipeline * | pipe | ) | [inline, virtual] |
PipelineNodeBase.h の 180 行で定義されています。
参照先 Onikiri::ClockedResourceBase::AddChild()・Onikiri::Pipeline::AddUpperPipelineNode()・m_exLowerPipelines.
00181 { 00182 this->AddChild( pipe ); // gcc needs 'BaseT::' 00183 pipe->AddUpperPipelineNode( this ); 00184 m_exLowerPipelines.push_back( pipe ); 00185 }
関数の呼び出しグラフ:
virtual bool Onikiri::PipelineNodeBase::CanAllocate | ( | int | ops | ) | [inline, virtual] |
Onikiri::PipelineNodeIFを実装しています。
Onikiri::Schedulerで再定義されています。
PipelineNodeBase.h の 174 行で定義されています。
参照元 Onikiri::Renamer::CanRename().
Here is the caller graph for this function:
virtual void Onikiri::PipelineNodeBase::Cancel | ( | OpIterator | op | ) | [inline, virtual] |
virtual void Onikiri::PipelineNodeBase::Commit | ( | OpIterator | op | ) | [inline, virtual] |
Onikiri::PipelineNodeIFを実装しています。
Onikiri::Fetcher・Onikiri::Renamer・Onikiri::Retirer・Onikiri::Schedulerで再定義されています。
PipelineNodeBase.h の 187 行で定義されています。
参照元 Onikiri::InorderList::NotifyCommit().
Here is the caller graph for this function:
void Onikiri::PipelineNodeBase::DisableLatch | ( | ) | [inline] |
PipelineNodeBase.h の 213 行で定義されています。
参照先 Onikiri::ClockedResourceBase::m_children・m_enableLatch・m_latch.
参照元 Onikiri::Retirer::Initialize()・Onikiri::Fetcher::Initialize()・Onikiri::Cache::Initialize().
00214 { 00215 for( Children::iterator i = m_children.begin(); i != m_children.end(); ++i ){ 00216 if( *i == (ClockedResourceIF*)&m_latch ){ 00217 m_children.erase( i ); 00218 break; 00219 } 00220 } 00221 m_enableLatch = false; 00222 }
Here is the caller graph for this function:
virtual void Onikiri::PipelineNodeBase::ExitLowerPipeline | ( | OpIterator | op | ) | [inline, virtual] |
Onikiri::PipelineNodeIFを実装しています。
Onikiri::Dispatcherで再定義されています。
PipelineNodeBase.h の 138 行で定義されています。
virtual void Onikiri::PipelineNodeBase::ExitUpperPipeline | ( | OpIterator | op | ) | [inline, virtual] |
Onikiri::PipelineNodeIFを実装しています。
Onikiri::Schedulerで再定義されています。
PipelineNodeBase.h の 130 行で定義されています。
参照先 m_enableLatch・m_latch・Onikiri::PipelineLatch::Receive().
00131 { 00132 if( m_enableLatch ){ 00133 m_latch.Receive( op ); 00134 } 00135 };
関数の呼び出しグラフ:
virtual void Onikiri::PipelineNodeBase::Flush | ( | OpIterator | op | ) | [inline, virtual] |
Onikiri::PipelineNodeIFを実装しています。
Onikiri::Dispatcher・Onikiri::Retirer・Onikiri::Schedulerで再定義されています。
PipelineNodeBase.h の 190 行で定義されています。
参照先 Onikiri::PipelineLatch::Delete()・Onikiri::Pipeline::Flush()・m_enableLatch・m_exLowerPipelines・m_latch・m_lowerPipeline.
参照元 Onikiri::Scheduler::Flush()・Onikiri::Dispatcher::Flush()・Onikiri::InorderList::NotifyFlush().
00191 { 00192 if( m_enableLatch ){ 00193 m_latch.Delete( op ); 00194 } 00195 m_lowerPipeline.Flush( op ); 00196 for( size_t i = 0; i < m_exLowerPipelines.size(); i++ ){ 00197 m_exLowerPipelines[i]->Flush( op ); 00198 } 00199 }
関数の呼び出しグラフ:
Here is the caller graph for this function:
Core* Onikiri::PipelineNodeBase::GetCore | ( | int | index = 0 |
) | [inline] |
PipelineNodeBase.h の 225 行で定義されています。
参照先 m_core.
参照元 Onikiri::Fetcher::BackupOnCheckpoint()・Onikiri::Fetcher::CanFetch()・Onikiri::Fetcher::CreateCheckpoint()・Onikiri::Fetcher::Fetch()・Onikiri::Retirer::FinishThread()・Onikiri::Scheduler::Initialize()・Onikiri::Renamer::Initialize()・Onikiri::Dispatcher::Initialize().
00225 { return m_core[index]; }
Here is the caller graph for this function:
virtual Pipeline* Onikiri::PipelineNodeBase::GetLowerPipeline | ( | ) | [inline, virtual] |
Onikiri::PipelineNodeIFを実装しています。
PipelineNodeBase.h の 156 行で定義されています。
参照先 m_lowerPipeline.
参照元 Onikiri::Retirer::Commit()・Onikiri::Dispatcher::Dispatch()・Onikiri::Renamer::EnterPipeline()・Onikiri::Fetcher::EnterPipeline()・Onikiri::Scheduler::Finished()・Onikiri::Scheduler::Initialize()・Onikiri::Cache::Initialize()・Onikiri::ExecUnitBase::RegisterDetectEvent()・Onikiri::Scheduler::RegisterWakeUpEvent()・Onikiri::Scheduler::WriteBackBegin()・Onikiri::Scheduler::WriteBackEnd().
00157 { 00158 return &m_lowerPipeline; 00159 }
Here is the caller graph for this function:
virtual PipelineNodeIF* Onikiri::PipelineNodeBase::GetLowerPipelineNode | ( | ) | [inline, virtual] |
Onikiri::PipelineNodeIFを実装しています。
PipelineNodeBase.h の 162 行で定義されています。
参照先 m_lowerPipelineNode.
参照元 Onikiri::Renamer::EnterPipeline()・Onikiri::Fetcher::EnterPipeline()・Onikiri::Fetcher::Initialize().
00163 { 00164 return m_lowerPipelineNode; 00165 }
Here is the caller graph for this function:
virtual PipelineNodeIF* Onikiri::PipelineNodeBase::GetUpperPipelineNode | ( | ) | [inline, virtual] |
Onikiri::PipelineNodeIFを実装しています。
PipelineNodeBase.h の 168 行で定義されています。
参照先 m_upperPipelineNode.
参照元 StallNextCycle()・StallThisCycle()・StallThisNodeAndUpperThisCycle().
00169 { 00170 return m_upperPipelineNode; 00171 }
Here is the caller graph for this function:
virtual void Onikiri::PipelineNodeBase::Initialize | ( | InitPhase | phase | ) | [inline, virtual] |
Onikiri::Cache・Onikiri::Dispatcher・Onikiri::Fetcher・Onikiri::Renamer・Onikiri::Retirer・Onikiri::Schedulerで再定義されています。
PipelineNodeBase.h の 78 行で定義されています。
参照先 Onikiri::PhysicalResourceNode::INIT_POST_CONNECTION・m_core・m_initialized・m_thread・THROW_RUNTIME_ERROR.
参照元 Onikiri::Scheduler::Initialize()・Onikiri::Retirer::Initialize()・Onikiri::Renamer::Initialize()・Onikiri::Fetcher::Initialize()・Onikiri::Dispatcher::Initialize()・Onikiri::Cache::Initialize().
00079 { 00080 if( phase == INIT_POST_CONNECTION ){ 00081 if( m_thread.GetSize() == 0 ) { 00082 THROW_RUNTIME_ERROR("thread not set."); 00083 } 00084 if( m_core.GetSize() == 0 ) { 00085 THROW_RUNTIME_ERROR("core not set."); 00086 } 00087 } 00088 00089 m_initialized = true; 00090 }
Here is the caller graph for this function:
virtual void Onikiri::PipelineNodeBase::Retire | ( | OpIterator | op | ) | [inline, virtual] |
Onikiri::PipelineNodeIFを実装しています。
Onikiri::Dispatcher・Onikiri::Retirer・Onikiri::Schedulerで再定義されています。
PipelineNodeBase.h の 201 行で定義されています。
参照先 Onikiri::PipelineLatch::Delete()・m_enableLatch・m_exLowerPipelines・m_latch・m_lowerPipeline・Onikiri::Pipeline::Retire().
参照元 Onikiri::InorderList::NotifyRetire()・Onikiri::Scheduler::Retire()・Onikiri::Dispatcher::Retire().
00202 { 00203 if( m_enableLatch ){ 00204 m_latch.Delete( op ); 00205 } 00206 m_lowerPipeline.Retire( op ); 00207 for( size_t i = 0; i < m_exLowerPipelines.size(); i++ ){ 00208 m_exLowerPipelines[i]->Retire( op ); 00209 } 00210 }
関数の呼び出しグラフ:
Here is the caller graph for this function:
virtual void Onikiri::PipelineNodeBase::SetLowerPipelineNode | ( | PipelineNodeIF * | lower | ) | [inline, virtual] |
Onikiri::PipelineNodeIFを実装しています。
PipelineNodeBase.h の 150 行で定義されています。
参照先 m_lowerPipelineNode.
00151 { 00152 m_lowerPipelineNode = lower; 00153 }
virtual void Onikiri::PipelineNodeBase::SetUpperPipelineNode | ( | PipelineNodeIF * | upper | ) | [inline, virtual] |
PipelineNodeBase.h の 143 行で定義されています。
参照先 Onikiri::PipelineNodeIF::GetLowerPipeline()・m_upperPipeline・m_upperPipelineNode・Onikiri::PipelineNodeIF::SetLowerPipelineNode().
00144 { 00145 m_upperPipelineNode = upper; 00146 m_upperPipeline = upper->GetLowerPipeline(); 00147 upper->SetLowerPipelineNode( this ); 00148 }
関数の呼び出しグラフ:
virtual void Onikiri::PipelineNodeBase::StallNextCycle | ( | int | cycle | ) | [inline, virtual] |
Onikiri::ClockedResourceBaseを再定義しています。
PipelineNodeBase.h の 103 行で定義されています。
参照先 GetUpperPipelineNode()・Onikiri::PipelineNodeIF::StallNextCycle()・Onikiri::ClockedResourceBase::StallNextCycle().
参照元 Onikiri::Recoverer::RecoverBPredMiss()・Onikiri::Recoverer::RecoverException()・Onikiri::Fetcher::Update().
00104 { 00105 BaseT::StallNextCycle( cycle ); 00106 00107 PipelineNodeIF* upper = GetUpperPipelineNode(); 00108 if( upper ){ 00109 upper->StallNextCycle( cycle ); 00110 } 00111 }
関数の呼び出しグラフ:
Here is the caller graph for this function:
virtual void Onikiri::PipelineNodeBase::StallThisCycle | ( | ) | [inline, virtual] |
Onikiri::ClockedResourceBaseを再定義しています。
PipelineNodeBase.h の 93 行で定義されています。
参照先 GetUpperPipelineNode()・Onikiri::PipelineNodeIF::StallThisCycle()・Onikiri::ClockedResourceBase::StallThisCycle().
参照元 Onikiri::Core::Evaluate().
00094 { 00095 BaseT::StallThisCycle(); 00096 00097 PipelineNodeIF* upper = GetUpperPipelineNode(); 00098 if( upper ){ 00099 upper->StallThisCycle(); 00100 } 00101 }
関数の呼び出しグラフ:
Here is the caller graph for this function:
virtual void Onikiri::PipelineNodeBase::StallThisNodeAndUpperThisCycle | ( | ) | [inline, virtual] |
PipelineNodeBase.h の 115 行で定義されています。
参照先 GetUpperPipelineNode()・m_enableLatch・m_latch・Onikiri::ClockedResourceBase::StallThisCycle()・Onikiri::PipelineNodeIF::StallThisCycle()・Onikiri::ClockedResourceBase::StallThisCycleExcludingChildren().
参照元 Onikiri::Renamer::Evaluate()・Onikiri::Dispatcher::Evaluate().
00116 { 00117 PipelineNodeIF* upper = GetUpperPipelineNode(); 00118 if( upper ){ 00119 upper->StallThisCycle(); 00120 } 00121 if( m_enableLatch ){ 00122 m_latch.StallThisCycle(); 00123 } 00124 BaseT::StallThisCycleExcludingChildren(); // gcc needs 'BaseT::' 00125 }
関数の呼び出しグラフ:
Here is the caller graph for this function:
const char* Onikiri::PipelineNodeBase::Who | ( | ) | const [inline] |
Onikiri::PhysicalResourceNodeを再定義しています。
PipelineNodeBase.h の 56 行で定義されています。
参照先 Onikiri::PhysicalResourceNode::Who().
00057 { 00058 return PhysicalResourceNode::Who(); 00059 };
関数の呼び出しグラフ:
PhysicalResourceArray<Core> Onikiri::PipelineNodeBase::m_core [protected] |
bool Onikiri::PipelineNodeBase::m_enableLatch [protected] |
std::vector<Pipeline*> Onikiri::PipelineNodeBase::m_exLowerPipelines [protected] |
bool Onikiri::PipelineNodeBase::m_initialized [protected] |
PipelineLatch Onikiri::PipelineNodeBase::m_latch [protected] |
Pipeline Onikiri::PipelineNodeBase::m_lowerPipeline [protected] |
Pipeline* Onikiri::PipelineNodeBase::m_upperPipeline [protected] |