Otawa
0.10
|
Classes | |
class | ACS |
Representation of an Abstract Cache State where each data cache block is represented by its age. More... | |
class | ACSBuilder |
This builder performs analysis of the L1 data cache and produces ACS for MUST and, according to the configuration proerties, persistence. More... | |
class | ACSMayBuilder |
This processor computes the ACS for the MAY cache analysis. More... | |
class | Block |
Represents a single block used by the data cache. More... | |
class | BlockAccess |
A block access represents a data memory access of an instruction. More... | |
class | BlockBuilder |
Build the list of blocks used for L1 data cache analysis and decorate each basic block with the list of performed accesses. More... | |
class | BlockCollection |
A block collections stores the list of data blocks used in a task for a specific line. More... | |
class | CATBuilder |
Processor to get the categories for each block access of a data cache. More... | |
class | CatConstraintBuilder |
This processor allocates the variable to count misses of a data cache and makes the constraints for these variables. More... | |
class | CLPBlockBuilder |
Build the list of blocks used for L1 data cache analysis and decorate each basic block with the list of performed accesses, based on a CLP analysis. More... | |
class | DirtyManager |
A dirty manager allows to exploit the results of the dirty analysis (DIRTY_FEATURE). More... | |
class | MAYProblem |
class | MUSTPERS |
class | MUSTProblem |
The MUST problem provides the abstract interpretation of L1 data cache for the MUST case. More... | |
class | PERSProblem |
Problem for computing the PERS ACS of L-blocks. More... | |
class | WCETFunctionBuilder |
Default implementation of feature WCET_FUNCTION_FEATURE. More... | |
Typedefs | |
typedef elm::genstruct::Vector < MAYProblem::Domain * > | may_acs_t |
typedef enum otawa::dcache::data_fmlevel_t | data_fmlevel_t |
typedef genstruct::AllocatedTable< ACS * > | acs_stack_t |
typedef genstruct::Vector< ACS * > | acs_table_t |
typedef genstruct::Vector < acs_stack_t > | acs_stack_table_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 | |
elm::io::Output & | operator<< (elm::io::Output &output, const MUSTProblem::Domain &dom) |
elm::io::Output & | operator<< (elm::io::Output &output, const MAYProblem::Domain &dom) |
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 Pair< int, BlockAccess * > &v) |
io::Output & | operator<< (io::Output &out, BlockAccess::action_t action) |
io::Output & | operator<< (io::Output &out, const DirtyManager::t &v) |
io::Output & | operator<< (io::Output &out, purge_t purge) |
elm::io::Output & | operator<< (elm::io::Output &output, const PERSProblem::Domain &dom) |
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... | |
Identifier< genstruct::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... | |
Identifier< 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... | |
Identifier< 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... | |
Identifier< data_fmlevel_t > | DATA_FIRSTMISS_LEVEL ("otawa::dcache::FIRSTMISS_LEVEL", DFML_MULTI) |
According to its value, select the way the first-miss analysis is performed: – analysis of inner loop (average precision but costly in time),. More... | |
p::feature | PERS_ACS_FEATURE ("otawa::dcache::PERS_ACS_FEATURE", new Maker< ACSBuilder >()) |
Feature ensuring that the persistence analysis has been performed. More... | |
Identifier< genstruct::Vector < ACS * > * > | PERS_ACS ("otawa::dcache::PERS_ACS", 0) |
This identifier gives an array of ACS for the persistence analysis. More... | |
Identifier< genstruct::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... | |
Identifier< 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::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... | |
Identifier< Vector< ACS * > * > | MAY_ACS ("otawa::dcache::MAY_ACS", 0) |
Provide the ACS for the MAY analysis. 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... | |
Identifier< Address > | INITIAL_SP ("otawa::dcache::INITIAL_SP", Address::null) |
Provide the address of the stack pointer at the start of the task. 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... | |
Identifier< const BlockCollection * > | DATA_BLOCK_COLLECTION ("otawa::dcache::DATA_BLOCK_COLLECTION", 0) |
Gives the list of used blocks in the data cache. More... | |
Identifier< Pair< int, BlockAccess * > > | DATA_BLOCKS ("otawa::dcache::DATA_BLOCKS", pair(0,(BlockAccess *) 0)) |
Give the list of accesses to the data cache. 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... | |
Identifier< BasicBlock * > | 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... | |
Identifier< cache::category_t > | CATEGORY ("otawa::dcache::category", cache::INVALID_CATEGORY) |
Gives the category for a data cache block access. 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... | |
Identifier< ilp::Var * > | MISS_VAR ("otawa::dcache::MISS_VAR", 0) |
This property gives the variable counting the number of misses of a BlockAccess. 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::feature | DIRTY_FEATURE ("otawa::dcache::DIRTY_FEATURE", new Maker< DirtyAnalysis >()) |
This feature is only useful for data cache with write-back mechanism. More... | |
Identifier< AllocatedTable < DirtyManager::t > > | DIRTY ("otawa::dcache::DIRTY", AllocatedTable< DirtyManager::t >::EMPTY) |
This property contains information about the dirty state of a block. More... | |
p::feature | PURGE_FEATURE ("otawa::dcache::PURGE_FEATURE", new Maker< PurgeAnalysis >()) |
Identifier< purge_t > | PURGE ("otawa::dcache::PURGE", INV_PURGE) |
Variables | |
p::feature | DATA_BLOCK_FEATURE |
This feature ensures that information about the data cache accesses has been provided on each basic block. More... | |
p::feature | CLP_BLOCK_FEATURE |
Identifier< Pair< int, BlockAccess * > > | DATA_BLOCKS |
Give the list of accesses to the data cache. More... | |
Identifier< const BlockCollection * > | DATA_BLOCK_COLLECTION |
Gives the list of used blocks in the data cache. More... | |
Identifier< Address > | INITIAL_SP |
Provide the address of the stack pointer at the start of the task. 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::feature | PERS_ACS_FEATURE |
Feature ensuring that the persistence analysis has been performed. More... | |
Identifier< 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... | |
Identifier< acs_table_t * > | ENTRY_MUST_ACS |
This configuration property is shared by all processor implementing the MUST_ACS_FEATURE. More... | |
Identifier< acs_table_t * > | PERS_ACS |
This identifier gives an array of ACS for the persistence analysis. More... | |
Identifier< acs_table_t * > | ENTRY_PERS_ACS |
This configuration property allows to provide an non-empty ACS for the persistence analysis. More... | |
Identifier< 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... | |
Identifier< bool > | DATA_PSEUDO_UNROLLING |
This configuration property activates, if set to true (default), the pseudo-unrolling for the cache analysis of ACSBuilder. More... | |
Identifier< data_fmlevel_t > | DATA_FIRSTMISS_LEVEL |
According to its value, select the way the first-miss analysis is performed: – analysis of inner loop (average precision but costly in time),. 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... | |
Identifier< cache::category_t > | CATEGORY |
Gives the category for a data cache block access. More... | |
Identifier< BasicBlock * > | 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 | 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... | |
Identifier< ilp::Var * > | MISS_VAR |
This property gives the variable counting the number of misses of a BlockAccess. More... | |
Identifier< Vector< ACS * > * > | ENTRY_MAY_ACS |
Configuration property giving the ACS at the startup of the task. 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... | |
Identifier< Vector< ACS * > * > | MAY_ACS |
Provide the ACS for the MAY analysis. More... | |
p::feature | DIRTY_FEATURE |
This feature is only useful for data cache with write-back mechanism. More... | |
Identifier< AllocatedTable < DirtyManager::t > > | DIRTY |
This property contains information about the dirty state of a block. More... | |
p::feature | PURGE_FEATURE |
Identifier< purge_t > | PURGE |
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... | |
typedef genstruct::Vector<ACS *> otawa::dcache::acs_table_t |
Identifier<AllocatedTable<DirtyManager::t> > otawa::dcache::DIRTY | ( | "otawa::dcache::DIRTY" | , |
AllocatedTable< DirtyManager::t >::EMPTY | |||
) |
This property contains information about the dirty state of a block.
To use it, creates a DirtyManager with the target row of the data cache, the DIRTY value to methods mayBeDirty() or mustBeDirty() and apply the sequence of BlockAccess of the concerned basic block.
Hook
p::feature otawa::dcache::DIRTY_FEATURE | ( | "otawa::dcache::DIRTY_FEATURE" | , |
new Maker< DirtyAnalysis > | () | ||
) |
This feature is only useful for data cache with write-back mechanism.
In this case, it is needed before wiping out a block if it dirty (modified) or not. If it is dirty, additional time is spent writing its value back to memory. Notice that the dirty state is made of a MAY component (better case dirty) and a MUST component (worst case dirty). If the block is in the MUST set, it is asserted it is dirty. If the block is not in the MAY set, it is asserted it is not dirty. Else it must be dirty or not (not-classified case).
Properties
Default
Processor
Identifier<Address> otawa::dcache::INITIAL_SP | ( | "otawa::dcache::INITIAL_SP" | , |
Address::null | |||
) |
Provide the address of the stack pointer at the start of the task.
|
inline |
References out, and otawa::dcache::ACS::print().
|
inline |
References out, and otawa::dcache::Block::print().
elm::io::Output & otawa::dcache::operator<< | ( | elm::io::Output & | output, |
const MAYProblem::Domain & | dom | ||
) |
References otawa::dcache::ACS::print().
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().
|
inline |
References out, and otawa::dcache::BlockAccess::print().
|
inline |
References out.
io::Output & otawa::dcache::operator<< | ( | io::Output & | out, |
BlockAccess::action_t | action | ||
) |
References out.
|
inline |
References out, and otawa::dcache::DirtyManager::t::print().
io::Output & otawa::dcache::operator<< | ( | io::Output & | out, |
purge_t | purge | ||
) |
References INV_PURGE, MAY_PURGE, MUST_PURGE, NO_PURGE, out, and PERS_PURGE.
Identifier<purge_t> otawa::dcache::PURGE | ( | "otawa::dcache::PURGE" | , |
INV_PURGE | |||
) |
p::feature otawa::dcache::PURGE_FEATURE | ( | "otawa::dcache::PURGE_FEATURE" | , |
new Maker< PurgeAnalysis > | () | ||
) |
p::feature otawa::dcache::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.
p::feature otawa::dcache::CLP_BLOCK_FEATURE |
Identifier<AllocatedTable<DirtyManager::t> > otawa::dcache::DIRTY("otawa::dcache::DIRTY", AllocatedTable< DirtyManager::t >::EMPTY) |
This property contains information about the dirty state of a block.
To use it, creates a DirtyManager with the target row of the data cache, the DIRTY value to methods mayBeDirty() or mustBeDirty() and apply the sequence of BlockAccess of the concerned basic block.
Hook
p::feature otawa::dcache::DIRTY_FEATURE("otawa::dcache::DIRTY_FEATURE", new Maker< DirtyAnalysis >()) |
This feature is only useful for data cache with write-back mechanism.
In this case, it is needed before wiping out a block if it dirty (modified) or not. If it is dirty, additional time is spent writing its value back to memory. Notice that the dirty state is made of a MAY component (better case dirty) and a MUST component (worst case dirty). If the block is in the MUST set, it is asserted it is dirty. If the block is not in the MAY set, it is asserted it is not dirty. Else it must be dirty or not (not-classified case).
Properties
Default
Processor
Identifier<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().
Identifier<purge_t> otawa::dcache::PURGE("otawa::dcache::PURGE", INV_PURGE) |
p::feature otawa::dcache::PURGE_FEATURE("otawa::dcache::PURGE_FEATURE", new Maker< PurgeAnalysis >()) |
p::feature otawa::dcache::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.