![]() |
OTAWA
2.0
Framework to perform machine analysis and compute WCET.
|
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_t > | acs_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_t > | CATEGORY ("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_t > | DATA_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< bool > | DATA_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< Address > | INITIAL_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::Output & | operator<< (elm::io::Output &output, const MAYProblem::Domain &dom) |
elm::io::Output & | operator<< (elm::io::Output &output, const MUSTPERS::Domain &dom) |
elm::io::Output & | operator<< (elm::io::Output &output, const MUSTProblem::Domain &dom) |
elm::io::Output & | operator<< (elm::io::Output &output, const PERSProblem::Domain &dom) |
io::Output & | operator<< (io::Output &out, BlockAccess::action_t action) |
io::Output & | operator<< (io::Output &out, const ACS &acs) |
io::Output & | operator<< (io::Output &out, const Block &block) |
io::Output & | operator<< (io::Output &out, const BlockAccess &acc) |
io::Output & | operator<< (io::Output &out, const DirtyManager::t &v) |
io::Output & | operator<< (io::Output &out, const NonCachedAccess &acc) |
io::Output & | operator<< (io::Output &out, const Pair< int, BlockAccess * > &v) |
io::Output & | operator<< (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_t > | PURGE ("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::time > | PURGE_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_t > | WRITETHROUGH_DEFAULT_CAT ("otawa::dcache::WRITETHROUGH_DEFAULT_CAT", cache::ALWAYS_HIT) |
Used to configure CATEGORY_FEATURE. More... | |
Variables | |
p::id< cache::category_t > | CATEGORY |
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_t > | DATA_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< bool > | DATA_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< Address > | INITIAL_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_t > | 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 |
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::time > | PURGE_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_t > | WRITETHROUGH_DEFAULT_CAT |
Used to configure CATEGORY_FEATURE. More... | |
typedef AllocArray<ACS *> otawa::dcache::acs_stack_t |
typedef Vector<ACS *> otawa::dcache::acs_table_t |
p::feature otawa::dcache::EVENTS_FEATURE | ( | "otawa::dcache::EVENTS_FEATURE" | , |
p::make< EventBuilder > | () | ||
) |
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.
p::id<Pair<int, NonCachedAccess *> > otawa::dcache::NC_DATA_ACCESSES | ( | "otawa::dcache::NC_DATA_ACCESSES" | , |
pair(0,(NonCachedAccess *) 0) | |||
) |
elm::io::Output & otawa::dcache::operator<< | ( | elm::io::Output & | output, |
const MAYProblem::Domain & | dom | ||
) |
References otawa::dcache::ACS::print().
|
inline |
elm::io::Output & otawa::dcache::operator<< | ( | elm::io::Output & | output, |
const MUSTProblem::Domain & | dom | ||
) |
References otawa::dcache::ACS::print().
elm::io::Output & otawa::dcache::operator<< | ( | elm::io::Output & | output, |
const PERSProblem::Domain & | dom | ||
) |
References otawa::dcache::PERSProblem::Domain::print().
io::Output & otawa::dcache::operator<< | ( | io::Output & | out, |
BlockAccess::action_t | action | ||
) |
|
inline |
References otawa::dcache::ACS::print().
|
inline |
References otawa::PropList::print().
|
inline |
References otawa::dcache::BlockAccess::print().
|
inline |
References otawa::dcache::DirtyManager::t::print().
|
inline |
References otawa::dcache::NonCachedAccess::print().
|
inline |
io::Output & otawa::dcache::operator<< | ( | io::Output & | out, |
purge_t | purge | ||
) |
References INV_PURGE, MAY_PURGE, MUST_PURGE, NO_PURGE, and PERS_PURGE.
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.
p::feature otawa::dcache::EVENTS_FEATURE("otawa::dcache::EVENTS_FEATURE", p::make< EventBuilder >()) |
Provide the address of the stack pointer at the start of the task.
Referenced by otawa::dcache::BlockBuilder::configure().
p::id<Pair<int, NonCachedAccess *> > otawa::dcache::NC_DATA_ACCESSES("otawa::dcache::NC_DATA_ACCESSES", pair(0,(NonCachedAccess *) 0)) |
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().