src/Sim/ExecUnit/MemExecUnit.h

説明を見る。
00001 // 
00002 // Copyright (c) 2005-2008 Kenichi Watanabe.
00003 // Copyright (c) 2005-2008 Yasuhiro Watari.
00004 // Copyright (c) 2005-2008 Hironori Ichibayashi.
00005 // Copyright (c) 2008-2009 Kazuo Horio.
00006 // Copyright (c) 2009-2013 Naruki Kurata.
00007 // Copyright (c) 2005-2013 Ryota Shioya.
00008 // Copyright (c) 2005-2013 Masahiro Goshima.
00009 // 
00010 // This software is provided 'as-is', without any express or implied
00011 // warranty. In no event will the authors be held liable for any damages
00012 // arising from the use of this software.
00013 // 
00014 // Permission is granted to anyone to use this software for any purpose,
00015 // including commercial applications, and to alter it and redistribute it
00016 // freely, subject to the following restrictions:
00017 // 
00018 // 1. The origin of this software must not be misrepresented; you must not
00019 // claim that you wrote the original software. If you use this software
00020 // in a product, an acknowledgment in the product documentation would be
00021 // appreciated but is not required.
00022 // 
00023 // 2. Altered source versions must be plainly marked as such, and must not be
00024 // misrepresented as being the original software.
00025 // 
00026 // 3. This notice may not be removed or altered from any source
00027 // distribution.
00028 // 
00029 // 
00030 
00031 
00032 #ifndef SIM_EXEC_UNIT_MEM_EXEC_UNIT_H
00033 #define SIM_EXEC_UNIT_MEM_EXEC_UNIT_H
00034 
00035 #include <utility>
00036 
00037 #include "Env/Param/ParamExchange.h"
00038 
00039 #include "Sim/ExecUnit/PipelinedExecUnit.h"
00040 #include "Sim/Op/OpArray/OpArray.h"
00041 
00042 namespace Onikiri 
00043 {
00044     class Cache;
00045     class CacheSystem;
00046     class MemOrderManager;
00047 
00048     class MemExecUnit : public PipelinedExecUnit
00049     {
00050 
00051     public:
00052         BEGIN_PARAM_MAP("")
00053             BEGIN_PARAM_PATH( GetParamPath() )
00054                 PARAM_ENTRY("@FloatConversionLatency",  m_floatConversionLatency)
00055             END_PARAM_PATH()
00056             CHAIN_BASE_PARAM_MAP( PipelinedExecUnit )
00057         END_PARAM_MAP()
00058 
00059         BEGIN_RESOURCE_MAP()
00060             RESOURCE_ENTRY( MemOrderManager,    "memOrderManager",  m_memOrderManager )
00061             RESOURCE_ENTRY( CacheSystem,        "cacheSystem",      m_cacheSystem )
00062             CHAIN_BASE_RESOURCE_MAP( PipelinedExecUnit )
00063         END_RESOURCE_MAP()
00064 
00065         MemExecUnit();
00066         virtual ~MemExecUnit();
00067 
00068         void Initialize( InitPhase phase );
00069 
00070         // タsCeV FinishEvent o^
00071         virtual void Execute(OpIterator op);
00072 
00073         // OpClass CeV
00074         virtual int GetLatencyCount(const OpClass& opClass);
00075 
00076         // OpClass CfNXCeV
00077         virtual int GetLatency(const OpClass& opClass, int index);
00078 
00079         // accessors
00080         Cache* GetCache(){ return m_cache; }
00081 
00082     protected:
00083         
00084         // LbV
00085         CacheSystem*    m_cacheSystem;
00086         Cache*          m_cache;
00087 
00088         // LbV
00089         int m_cacheCount;
00090         
00091         // float  Load CeV
00092         int m_floatConversionLatency;
00093         PhysicalResourceArray<MemOrderManager> m_memOrderManager;
00094 
00095         // ReadタsCeV
00096         int GetExecutedReadLatency( OpIterator op );
00097 
00098         // WriteタsCeV
00099         int GetExecutedWriteLatency( OpIterator op );
00100 
00101         // Get the actual latency of executed 'op'.
00102         int GetExecutedLatency( OpIterator op );
00103 
00104         // Get a producer store of 'consumer'.
00105         OpIterator GetProducerStore( OpIterator consumer );
00106     };
00107 
00108 }; // namespace Onikiri
00109 
00110 #endif // __MEMEXECUNIT_H__
00111 

Onikiri2に対してTue Jun 18 14:34:22 2013に生成されました。  doxygen 1.4.7