OTAWA  2.0
Framework to perform machine analysis and compute WCET.
otawa::dcache Namespace Reference

Classes

class  ACS
 
class  ACSBuilder
 
class  ACSMayBuilder
 
class  Block
 
class  BlockAccess
 
class  BlockBuilder
 
class  BlockCollection
 
class  CATBuilder
 
class  CatConstraintBuilder
 
class  CLPBlockBuilder
 
class  DirtyManager
 
class  MAYProblem
 
class  MUSTPERS
 
class  MUSTProblem
 
class  NonCachedAccess
 
class  PERSProblem
 
class  WCETFunctionBuilder
 

Typedefs

typedef AllocArray< ACS * > acs_stack_t
 
typedef Vector< acs_stack_tacs_stack_table_t
 
typedef Vector< ACS * > acs_table_t
 
typedef enum otawa::dcache::data_fmlevel_t data_fmlevel_t
 
typedef elm::Vector< MAYProblem::Domain * > may_acs_t
 

Enumerations

enum  data_fmlevel_t { DFML_INNER = 0, DFML_OUTER = 1, DFML_MULTI = 2, DFML_NONE }
 
enum  purge_t {
  INV_PURGE = 0, NO_PURGE = 1, PERS_PURGE = 2, MAY_PURGE = 3,
  MUST_PURGE = 4
}
 

Functions

p::id< cache::category_tCATEGORY ("otawa::dcache::CATEGORY", cache::NOT_CLASSIFIED)
 Gives the category for a data cache block access. More...
 
p::feature CATEGORY_FEATURE ("otawa::dcache::CATEGORY_FEATURE", new Maker< CATBuilder >())
 This features ensures that a category each data block access have received a category describing its hit/miss behavior. More...
 
p::id< otawa::Block * > CATEGORY_HEADER ("otawa::dcache::CATEGORY_HEADER", 0)
 When a cache access has a category of cache::FIRST_MISS, the "first" part is relative to a particular loop whose header is given by this property. More...
 
p::feature CLP_BLOCK_FEATURE ("otawa::dcache::CLP_BLOCK_FEATURE", new Maker< CLPBlockBuilder >())
 This feature ensures that accessed data blocks have been built for data cache analysis based on the reference obtaine from CLP analysis. More...
 
p::feature CONSTRAINTS_FEATURE ("otawa::dcache::CONSTRAINTS_FEATURE", new Maker< CatConstraintBuilder >())
 This feature ensures that the constraints associated with each data cache block categories has been translated to ILP constraints and that miss count variables are declared. More...
 
p::id< const BlockCollection * > DATA_BLOCK_COLLECTION ("otawa::dcache::DATA_BLOCK_COLLECTION", 0)
 Gives the list of used blocks in the data cache. More...
 
p::feature DATA_BLOCK_FEATURE ("otawa::dcache::DATA_BLOCK_FEATURE", new Maker< BlockBuilder >())
 This feature ensures that information about the data cache accesses has been provided on each basic block. More...
 
p::id< Bag< BlockAccess > > DATA_BLOCKS ("otawa::dcache::DATA_BLOCKS")
 Give the list of accesses to the data cache. More...
 
p::id< data_fmlevel_tDATA_FIRSTMISS_LEVEL ("otawa::dcache::DATA_FIRSTMISS_LEVEL", DFML_MULTI)
 According to its value, select the way the first-miss analysis is performed: @liDFML_INNER – analysis of inner loop (average precision but costly in time),. More...
 
p::id< boolDATA_PSEUDO_UNROLLING ("otawa::dcache::PSEUDO_UNROLLING", false)
 This configuration property activates, if set to true (default), the pseudo-unrolling for the cache analysis of ACSBuilder. More...
 
p::id< AllocArray< DirtyManager::t > > DIRTY ("otawa::dcache::DIRTY", AllocArray< DirtyManager::t >::null)
 This property contains information about the dirty state of a block. More...
 
p::feature DIRTY_FEATURE ("otawa::dcache::DIRTY_FEATURE", new Maker< DirtyAnalysis >())
 This feature is only useful for data cache with write-back mechanism. More...
 
Identifier< Vector< ACS * > * > ENTRY_MAY_ACS ("otawa::dcache::ENTRY_MAY_ACS", 0)
 Configuration property giving the ACS at the startup of the task. More...
 
p::id< Vector< ACS * > * > ENTRY_MUST_ACS ("otawa::dcache::ENTRY_MUST_ACS", 0)
 This configuration property is shared by all processor implementing the MUST_ACS_FEATURE. More...
 
p::id< Vector< ACS * > * > ENTRY_PERS_ACS ("otawa::dcache::ENTRY_PERS_ACS", 0)
 This configuration property allows to provide an non-empty ACS for the persistence analysis. More...
 
p::feature EVENTS_FEATURE ("otawa::dcache::EVENTS_FEATURE", p::make< EventBuilder >())
 
p::id< AddressINITIAL_SP ("otawa::dcache::INITIAL_SP", Address::null)
 Provide the address of the stack pointer at the start of the task. More...
 
p::id< acs_stack_table_t * > LEVEL_PERS_ACS ("otawa::dcache::LEVEL_PERS_ACS", 0)
 This identifier allows to get an array on a stack of ACS, one entry for each set of the analyzed cache. More...
 
p::id< Vector< ACS * > * > MAY_ACS ("otawa::dcache::MAY_ACS", 0)
 Provide the ACS for the MAY analysis. More...
 
p::feature MAY_ACS_FEATURE ("otawa::dcache::MAY_ACS_FEATURE", new Maker< ACSMayBuilder >())
 This feature that the MAY analysis has been performed for the L1 data cache and that the ACS are provided at the entry of each basic block. More...
 
p::id< ilp::Var * > MISS_VAR ("otawa::dcache::MISS_VAR", 0)
 This property gives the variable counting the number of misses of a BlockAccess. More...
 
p::id< Vector< ACS * > * > MUST_ACS ("otawa::dcache::MUST_ACS", 0)
 Provide for each basic block the ACS (Abstract Cache State) of the data cache for each set of the cache. More...
 
p::feature MUST_ACS_FEATURE ("otawa::dcache::MUST_ACS_FEATURE", new Maker< ACSBuilder >())
 This feature ensures that the ACS (Abstract Cache State) for the MUST data cache analysis has been built. More...
 
p::id< Pair< int, NonCachedAccess * > > NC_DATA_ACCESSES ("otawa::dcache::NC_DATA_ACCESSES", pair(0,(NonCachedAccess *) 0))
 
elm::io::Outputoperator<< (elm::io::Output &output, const MAYProblem::Domain &dom)
 
elm::io::Outputoperator<< (elm::io::Output &output, const MUSTPERS::Domain &dom)
 
elm::io::Outputoperator<< (elm::io::Output &output, const MUSTProblem::Domain &dom)
 
elm::io::Outputoperator<< (elm::io::Output &output, const PERSProblem::Domain &dom)
 
io::Outputoperator<< (io::Output &out, BlockAccess::action_t action)
 
io::Outputoperator<< (io::Output &out, const ACS &acs)
 
io::Outputoperator<< (io::Output &out, const Block &block)
 
io::Outputoperator<< (io::Output &out, const BlockAccess &acc)
 
io::Outputoperator<< (io::Output &out, const DirtyManager::t &v)
 
io::Outputoperator<< (io::Output &out, const NonCachedAccess &acc)
 
io::Outputoperator<< (io::Output &out, const Pair< int, BlockAccess * > &v)
 
io::Outputoperator<< (io::Output &out, purge_t purge)
 
p::id< Vector< ACS * > * > PERS_ACS ("otawa::dcache::PERS_ACS", 0)
 This identifier gives an array of ACS for the persistence analysis. More...
 
p::feature PERS_ACS_FEATURE ("otawa::dcache::PERS_ACS_FEATURE", new Maker< ACSBuilder >())
 Feature ensuring that the persistence analysis has been performed. More...
 
p::id< purge_tPURGE ("otawa::dcache::PURGE", INV_PURGE)
 This property is set to data cache cache (BlockAccess) to inform if the corresponding data cache block needs to be written-back or not. More...
 
p::feature PURGE_FEATURE ("otawa::dcache::PURGE_FEATURE", new Maker< PurgeAnalysis >())
 The purge features use the dirtyness analysis for a write-back cache to categorize cache miss in order to know if a write back to memory of the cache block content is needed. More...
 
p::id< ot::timePURGE_TIME ("otawa::dcache::PURGE_TIME", -1)
 For memory accesses not categorized as NO_PURGE, gives the a pair <M, m> where M is the maximum purge time and m the minimum purge time. More...
 
p::feature WCET_FUNCTION_FEATURE ("otawa::dcache::WCET_FUNCTION_FEATURE", new Maker< WCETFunctionBuilder >())
 This feature provides an easy and naive way to add data cache time to the WCET computation by adding to the objective function representing the WCET the miss time multiplied by the number of occurrences of the miss. More...
 
p::id< cache::category_tWRITETHROUGH_DEFAULT_CAT ("otawa::dcache::WRITETHROUGH_DEFAULT_CAT", cache::ALWAYS_HIT)
 Used to configure CATEGORY_FEATURE. More...
 

Variables

p::id< cache::category_tCATEGORY
 Gives the category for a data cache block access. More...
 
p::feature CATEGORY_FEATURE
 This features ensures that a category each data block access have received a category describing its hit/miss behavior. More...
 
p::id< otawa::Block * > CATEGORY_HEADER
 When a cache access has a category of cache::FIRST_MISS, the "first" part is relative to a particular loop whose header is given by this property. More...
 
p::feature CLP_BLOCK_FEATURE
 This feature ensures that accessed data blocks have been built for data cache analysis based on the reference obtaine from CLP analysis. More...
 
p::feature CONSTRAINTS_FEATURE
 This feature ensures that the constraints associated with each data cache block categories has been translated to ILP constraints and that miss count variables are declared. More...
 
p::id< const BlockCollection * > DATA_BLOCK_COLLECTION
 Gives the list of used blocks in the data cache. More...
 
p::feature DATA_BLOCK_FEATURE
 This feature ensures that information about the data cache accesses has been provided on each basic block. More...
 
p::id< Bag< BlockAccess > > DATA_BLOCKS
 Give the list of accesses to the data cache. More...
 
p::id< data_fmlevel_tDATA_FIRSTMISS_LEVEL
 According to its value, select the way the first-miss analysis is performed: @liDFML_INNER – analysis of inner loop (average precision but costly in time),. More...
 
p::id< boolDATA_PSEUDO_UNROLLING
 This configuration property activates, if set to true (default), the pseudo-unrolling for the cache analysis of ACSBuilder. More...
 
p::id< AllocArray< DirtyManager::t > > DIRTY
 This property contains information about the dirty state of a block. More...
 
p::feature DIRTY_FEATURE
 This feature is only useful for data cache with write-back mechanism. More...
 
Identifier< Vector< ACS * > * > ENTRY_MAY_ACS
 Configuration property giving the ACS at the startup of the task. More...
 
p::id< acs_table_t * > ENTRY_MUST_ACS
 This configuration property is shared by all processor implementing the MUST_ACS_FEATURE. More...
 
p::id< acs_table_t * > ENTRY_PERS_ACS
 This configuration property allows to provide an non-empty ACS for the persistence analysis. More...
 
p::feature EVENTS_FEATURE
 
p::id< AddressINITIAL_SP
 Provide the address of the stack pointer at the start of the task. More...
 
p::id< acs_stack_table_t * > LEVEL_PERS_ACS
 This identifier allows to get an array on a stack of ACS, one entry for each set of the analyzed cache. More...
 
p::id< Vector< ACS * > * > MAY_ACS
 Provide the ACS for the MAY analysis. More...
 
p::feature MAY_ACS_FEATURE
 This feature that the MAY analysis has been performed for the L1 data cache and that the ACS are provided at the entry of each basic block. More...
 
p::id< ilp::Var * > MISS_VAR
 This property gives the variable counting the number of misses of a BlockAccess. More...
 
p::id< acs_table_t * > MUST_ACS
 Provide for each basic block the ACS (Abstract Cache State) of the data cache for each set of the cache. More...
 
p::feature MUST_ACS_FEATURE
 This feature ensures that the ACS (Abstract Cache State) for the MUST data cache analysis has been built. More...
 
p::id< Pair< int, NonCachedAccess * > > NC_DATA_ACCESSES
 
p::id< acs_table_t * > PERS_ACS
 This identifier gives an array of ACS for the persistence analysis. More...
 
p::feature PERS_ACS_FEATURE
 Feature ensuring that the persistence analysis has been performed. More...
 
p::id< purge_tPURGE
 This property is set to data cache cache (BlockAccess) to inform if the corresponding data cache block needs to be written-back or not. More...
 
p::feature PURGE_FEATURE
 The purge features use the dirtyness analysis for a write-back cache to categorize cache miss in order to know if a write back to memory of the cache block content is needed. More...
 
p::id< ot::timePURGE_TIME
 For memory accesses not categorized as NO_PURGE, gives the a pair <M, m> where M is the maximum purge time and m the minimum purge time. More...
 
p::feature WCET_FUNCTION_FEATURE
 This feature provides an easy and naive way to add data cache time to the WCET computation by adding to the objective function representing the WCET the miss time multiplied by the number of occurrences of the miss. More...
 
p::id< cache::category_tWRITETHROUGH_DEFAULT_CAT
 Used to configure CATEGORY_FEATURE. More...
 

Typedef Documentation

◆ acs_stack_t

◆ acs_stack_table_t

◆ acs_table_t

◆ data_fmlevel_t

◆ may_acs_t

Enumeration Type Documentation

◆ data_fmlevel_t

Enumerator
DFML_INNER 
DFML_OUTER 
DFML_MULTI 
DFML_NONE 

◆ purge_t

Enumerator
INV_PURGE 
NO_PURGE 
PERS_PURGE 
MAY_PURGE 
MUST_PURGE 

Function Documentation

◆ EVENTS_FEATURE()

p::feature otawa::dcache::EVENTS_FEATURE ( "otawa::dcache::EVENTS_FEATURE"  ,
p::make< EventBuilder >  () 
)

◆ INITIAL_SP()

p::id<Address> otawa::dcache::INITIAL_SP ( "otawa::dcache::INITIAL_SP"  ,
Address::null   
)

Provide the address of the stack pointer at the start of the task.

◆ NC_DATA_ACCESSES()

p::id<Pair<int, NonCachedAccess *> > otawa::dcache::NC_DATA_ACCESSES ( "otawa::dcache::NC_DATA_ACCESSES"  ,
pair(0,(NonCachedAccess *) 0)   
)

◆ operator<<() [1/12]

elm::io::Output & otawa::dcache::operator<< ( elm::io::Output output,
const MAYProblem::Domain dom 
)

◆ operator<<() [2/12]

elm::io::Output& otawa::dcache::operator<< ( elm::io::Output output,
const MUSTPERS::Domain dom 
)
inline

◆ operator<<() [3/12]

elm::io::Output & otawa::dcache::operator<< ( elm::io::Output output,
const MUSTProblem::Domain dom 
)

◆ operator<<() [4/12]

elm::io::Output & otawa::dcache::operator<< ( elm::io::Output output,
const PERSProblem::Domain dom 
)

◆ operator<<() [5/12]

io::Output & otawa::dcache::operator<< ( io::Output out,
BlockAccess::action_t  action 
)

◆ operator<<() [6/12]

io::Output& otawa::dcache::operator<< ( io::Output out,
const ACS acs 
)
inline

◆ operator<<() [7/12]

io::Output& otawa::dcache::operator<< ( io::Output out,
const Block block 
)
inline

◆ operator<<() [8/12]

io::Output& otawa::dcache::operator<< ( io::Output out,
const BlockAccess acc 
)
inline

◆ operator<<() [9/12]

io::Output& otawa::dcache::operator<< ( io::Output out,
const DirtyManager::t v 
)
inline

◆ operator<<() [10/12]

io::Output& otawa::dcache::operator<< ( io::Output out,
const NonCachedAccess acc 
)
inline

◆ operator<<() [11/12]

io::Output& otawa::dcache::operator<< ( io::Output out,
const Pair< int, BlockAccess * > &  v 
)
inline

◆ operator<<() [12/12]

io::Output & otawa::dcache::operator<< ( io::Output out,
purge_t  purge 
)

◆ WRITETHROUGH_DEFAULT_CAT()

p::id<cache::category_t> otawa::dcache::WRITETHROUGH_DEFAULT_CAT ( "otawa::dcache::WRITETHROUGH_DEFAULT_CAT"  ,
cache::ALWAYS_HIT   
)

Used to configure CATEGORY_FEATURE.

Specify the category of a store access when the cache supports write-through policy. As a default, the category is ALWAYS_HIT assuming that there is a Write Buffer to hide the memory write time. If there is no Write Buffer, you can use this identifier to configure category as ALWAYS_MISS.

Variable Documentation

◆ EVENTS_FEATURE

p::feature otawa::dcache::EVENTS_FEATURE("otawa::dcache::EVENTS_FEATURE", p::make< EventBuilder >())

◆ INITIAL_SP

p::id<Address> otawa::dcache::INITIAL_SP("otawa::dcache::INITIAL_SP", Address::null)

Provide the address of the stack pointer at the start of the task.

Referenced by otawa::dcache::BlockBuilder::configure().

◆ NC_DATA_ACCESSES

p::id<Pair<int, NonCachedAccess *> > otawa::dcache::NC_DATA_ACCESSES("otawa::dcache::NC_DATA_ACCESSES", pair(0,(NonCachedAccess *) 0))

◆ WRITETHROUGH_DEFAULT_CAT

p::id<cache::category_t> otawa::dcache::WRITETHROUGH_DEFAULT_CAT("otawa::dcache::WRITETHROUGH_DEFAULT_CAT", cache::ALWAYS_HIT)

Used to configure CATEGORY_FEATURE.

Specify the category of a store access when the cache supports write-through policy. As a default, the category is ALWAYS_HIT assuming that there is a Write Buffer to hide the memory write time. If there is no Write Buffer, you can use this identifier to configure category as ALWAYS_MISS.

Referenced by otawa::dcache::CATBuilder::configure().