#include <PipelineLatch.h>
Onikiri::PipelineLatchに対する継承グラフ
Public 型 | |
typedef List::iterator | iterator |
typedef fixed_sized_buffer< OpIterator, MAX_LATCH_SIZE, MaxLatchSize > | List |
MAX_LATCH_SIZE = 256 | |
enum | MaxLatchSize { MAX_LATCH_SIZE = 256 } |
Public メソッド | |
iterator | begin () |
virtual void | BeginStall () |
virtual void | Delete (OpIterator op) |
void | EnableDumpStall (bool enable) |
virtual void | End () |
iterator | end () |
virtual void | EndStall () |
iterator | erase (iterator i) |
PipelineLatch (const char *name="") | |
void | pop_front () |
virtual void | Receive (OpIterator op) |
size_t | size () |
virtual void | Transition () |
Protected 型 | |
typedef ClockedResourceBase | BaseType |
Protected メソッド | |
void | DumpStallBegin () |
void | DumpStallEnd () |
bool | FindAndEraseFromLatch (List *latch, OpIterator op) |
void | UpdateLatch () |
Protected 変数 | |
bool | m_enableDumpStall |
List | m_latchIn |
List | m_latchOut |
bool | m_latchOutIsStalled |
PipelineLatch.h の 42 行で定義されています。
typedef ClockedResourceBase Onikiri::PipelineLatch::BaseType [protected] |
PipelineLatch.h の 61 行で定義されています。
PipelineLatch.h の 51 行で定義されています。
typedef fixed_sized_buffer< OpIterator, MAX_LATCH_SIZE, MaxLatchSize > Onikiri::PipelineLatch::List |
PipelineLatch.h の 50 行で定義されています。
PipelineLatch::PipelineLatch | ( | const char * | name = "" |
) |
PipelineLatch.cpp の 85 行で定義されています。
00085 : 00086 BaseType( name ), 00087 m_enableDumpStall( true ), 00088 m_latchOutIsStalled( false ) 00089 { 00090 }
iterator Onikiri::PipelineLatch::begin | ( | ) | [inline] |
PipelineLatch.h の 53 行で定義されています。
参照先 Onikiri::fixed_sized_buffer< T, SIZE, Tag >::begin()・m_latchOut.
参照元 Onikiri::Renamer::Evaluate()・Onikiri::Dispatcher::Evaluate()・Onikiri::Renamer::Update()・Onikiri::Dispatcher::Update().
00053 { return m_latchOut.begin(); }
関数の呼び出しグラフ:
Here is the caller graph for this function:
void PipelineLatch::BeginStall | ( | ) | [virtual] |
Onikiri::ClockedResourceBaseを再定義しています。
PipelineLatch.cpp の 130 行で定義されています。
参照先 Onikiri::ClockedResourceBase::BeginStall()・DumpStallBegin().
00131 { 00132 BaseType::BeginStall(); 00133 DumpStallBegin(); 00134 }
関数の呼び出しグラフ:
void PipelineLatch::Delete | ( | OpIterator | op | ) | [virtual] |
PipelineLatch.cpp の 142 行で定義されています。
参照先 FindAndEraseFromLatch()・m_latchIn・m_latchOut.
参照元 Onikiri::PipelineNodeBase::Flush()・Onikiri::PipelineNodeBase::Retire().
00143 { 00144 if( FindAndEraseFromLatch( &m_latchIn, op ) ){ 00145 return; 00146 } 00147 if( FindAndEraseFromLatch( &m_latchOut, op ) ){ 00148 return; 00149 } 00150 }
関数の呼び出しグラフ:
Here is the caller graph for this function:
void PipelineLatch::DumpStallBegin | ( | ) | [protected] |
PipelineLatch.cpp の 54 行で定義されています。
参照先 Onikiri::fixed_sized_buffer< T, SIZE, Tag >::begin()・Onikiri::Dumper::DumpStallBegin()・Onikiri::fixed_sized_buffer< T, SIZE, Tag >::end()・Onikiri::g_dumper・m_enableDumpStall・m_latchOut・m_latchOutIsStalled.
参照元 BeginStall()・Transition().
00055 { 00056 if( m_enableDumpStall && !m_latchOutIsStalled ){ 00057 for( iterator i = m_latchOut.begin(); i != m_latchOut.end(); ++i ){ 00058 g_dumper.DumpStallBegin( *i ); 00059 } 00060 m_latchOutIsStalled = true; 00061 } 00062 }
関数の呼び出しグラフ:
Here is the caller graph for this function:
void PipelineLatch::DumpStallEnd | ( | ) | [protected] |
PipelineLatch.cpp の 64 行で定義されています。
参照先 Onikiri::fixed_sized_buffer< T, SIZE, Tag >::begin()・Onikiri::Dumper::DumpStallEnd()・Onikiri::fixed_sized_buffer< T, SIZE, Tag >::end()・Onikiri::g_dumper・m_enableDumpStall・m_latchOut・m_latchOutIsStalled.
参照元 EndStall().
00065 { 00066 if( m_enableDumpStall && m_latchOutIsStalled ){ 00067 for( iterator i = m_latchOut.begin(); i != m_latchOut.end(); ++i ){ 00068 g_dumper.DumpStallEnd( *i ); 00069 } 00070 m_latchOutIsStalled = false; 00071 } 00072 }
関数の呼び出しグラフ:
Here is the caller graph for this function:
void PipelineLatch::EnableDumpStall | ( | bool | enable | ) |
PipelineLatch.cpp の 152 行で定義されています。
参照先 m_enableDumpStall.
00153 { 00154 m_enableDumpStall = enable; 00155 }
void PipelineLatch::End | ( | ) | [virtual] |
Onikiri::ClockedResourceBaseを再定義しています。
PipelineLatch.cpp の 103 行で定義されています。
参照先 ASSERT・Onikiri::ClockedResourceBase::End()・Onikiri::ClockedResourceBase::IsStalledThisCycle()・m_latchIn・m_latchOut・Onikiri::fixed_sized_buffer< T, SIZE, Tag >::size()・UpdateLatch().
00104 { 00105 ASSERT( 00106 !( !IsStalledThisCycle() && m_latchOut.size() > 0 ), 00107 "Outputs are not picked on an un-stalled cycle." 00108 ); 00109 00110 ASSERT( 00111 !( m_latchIn.size() > 0 && m_latchOut.size() > 0 ), 00112 "Data on the pipeline latch is overwritten by a upper pipeline. " 00113 "The data has not processed for pipeline stall." 00114 ); 00115 00116 UpdateLatch(); 00117 BaseType::End(); 00118 }
関数の呼び出しグラフ:
iterator Onikiri::PipelineLatch::end | ( | ) | [inline] |
PipelineLatch.h の 54 行で定義されています。
参照先 Onikiri::fixed_sized_buffer< T, SIZE, Tag >::end()・m_latchOut.
参照元 Onikiri::Renamer::Evaluate()・Onikiri::Dispatcher::Evaluate()・Onikiri::Renamer::Update()・Onikiri::Dispatcher::Update().
00054 { return m_latchOut.end(); }
関数の呼び出しグラフ:
Here is the caller graph for this function:
void PipelineLatch::EndStall | ( | ) | [virtual] |
Onikiri::ClockedResourceBaseを再定義しています。
PipelineLatch.cpp の 136 行で定義されています。
参照先 DumpStallEnd()・Onikiri::ClockedResourceBase::EndStall().
00137 { 00138 BaseType::EndStall(); 00139 DumpStallEnd(); 00140 };
関数の呼び出しグラフ:
PipelineLatch.h の 55 行で定義されています。
参照先 Onikiri::fixed_sized_buffer< T, SIZE, Tag >::erase()・m_latchOut.
参照元 Onikiri::Renamer::Update()・Onikiri::Dispatcher::Update().
00056 { return m_latchOut.erase( i ); }
関数の呼び出しグラフ:
Here is the caller graph for this function:
bool PipelineLatch::FindAndEraseFromLatch | ( | List * | latch, | |
OpIterator | op | |||
) | [protected] |
PipelineLatch.cpp の 40 行で定義されています。
参照先 Onikiri::fixed_sized_buffer< T, SIZE, Tag >::begin()・Onikiri::fixed_sized_buffer< T, SIZE, Tag >::end()・Onikiri::fixed_sized_buffer< T, SIZE, Tag >::erase().
参照元 Delete().
00041 { 00042 iterator target = 00043 std::find( latch->begin(), latch->end(), op ); 00044 00045 if( target != latch->end() ){ 00046 latch->erase( target ); 00047 return true; 00048 } 00049 else{ 00050 return false; 00051 } 00052 }
関数の呼び出しグラフ:
Here is the caller graph for this function:
void Onikiri::PipelineLatch::pop_front | ( | ) | [inline] |
PipelineLatch.h の 57 行で定義されています。
参照先 m_latchOut・Onikiri::fixed_sized_buffer< T, SIZE, Tag >::pop_front().
00057 { m_latchOut.pop_front(); }
関数の呼び出しグラフ:
void PipelineLatch::Receive | ( | OpIterator | op | ) | [virtual] |
PipelineLatch.cpp の 92 行で定義されています。
参照先 ASSERT・Onikiri::ClockedResourceBase::IsStalledThisCycle()・m_latchIn・Onikiri::fixed_sized_buffer< T, SIZE, Tag >::push_back().
参照元 Onikiri::PipelineNodeBase::ExitUpperPipeline().
00093 { 00094 ASSERT( 00095 !IsStalledThisCycle(), 00096 "The latch is written on a stalled cycle." 00097 ); 00098 m_latchIn.push_back( op ); 00099 }
関数の呼び出しグラフ:
Here is the caller graph for this function:
size_t Onikiri::PipelineLatch::size | ( | ) | [inline] |
PipelineLatch.h の 58 行で定義されています。
参照先 m_latchOut・Onikiri::fixed_sized_buffer< T, SIZE, Tag >::size().
参照元 Onikiri::Scheduler::Begin().
00058 { return m_latchOut.size(); }
関数の呼び出しグラフ:
Here is the caller graph for this function:
void PipelineLatch::Transition | ( | ) | [virtual] |
Onikiri::ClockedResourceBaseを再定義しています。
PipelineLatch.cpp の 120 行で定義されています。
参照先 DumpStallBegin()・Onikiri::ClockedResourceBase::IsStalledThisCycle()・Onikiri::ClockedResourceBase::Transition().
00121 { 00122 BaseType::Transition(); 00123 if( IsStalledThisCycle() ){ 00124 // BeginStall is only called 00125 DumpStallBegin(); 00126 } 00127 }
関数の呼び出しグラフ:
void PipelineLatch::UpdateLatch | ( | ) | [protected] |
PipelineLatch.cpp の 75 行で定義されています。
参照先 Onikiri::fixed_sized_buffer< T, SIZE, Tag >::begin()・Onikiri::fixed_sized_buffer< T, SIZE, Tag >::end()・Onikiri::fixed_sized_buffer< T, SIZE, Tag >::erase()・m_latchIn・m_latchOut・Onikiri::fixed_sized_buffer< T, SIZE, Tag >::push_back().
参照元 End().
00076 { 00077 typedef List::iterator iterator; 00078 for( iterator i = m_latchIn.begin(); i != m_latchIn.end(); ){ 00079 m_latchOut.push_back( *i ); 00080 i = m_latchIn.erase( i ); 00081 } 00082 }
関数の呼び出しグラフ:
Here is the caller graph for this function:
bool Onikiri::PipelineLatch::m_enableDumpStall [protected] |
List Onikiri::PipelineLatch::m_latchIn [protected] |
List Onikiri::PipelineLatch::m_latchOut [protected] |
PipelineLatch.h の 64 行で定義されています。
参照元 begin()・Delete()・DumpStallBegin()・DumpStallEnd()・end()・End()・erase()・pop_front()・size()・UpdateLatch().
bool Onikiri::PipelineLatch::m_latchOutIsStalled [protected] |