Otawa  0.10
otawa::ets::AbstractCacheState Class Reference

This class is used to represent an abstract cache line state. More...

#include <otawa/ets/AbstractCacheState.h>

Public Types

enum  categorisation_t { ALWAYS_MISS = 0, ALWAYS_HIT = 1, FIRST_MISS = 2, CONFLICT = 3 }
 
typedef enum
otawa::ets::AbstractCacheState::categorisation_t 
categorisation_t
 

Public Member Functions

 AbstractCacheState (AbstractCacheState *acs)
 Build a new ACS with an other: acs. More...
 
 AbstractCacheState (int which_line)
 Build a new ACS with the number of the cache line. More...
 
 ~AbstractCacheState (void)
 
bool areDifferent (AbstractCacheState *other)
 Return true if other is not equal whith this, else return false. More...
 
void join (AbstractCacheState *state1, AbstractCacheState *state2)
 Join state1 and state2 to this, according to C. More...
 
void assignment (AbstractCacheState *other)
 A simple assignment from other to this. More...
 
bool byConflict ()
 Look if it is conflict, that is to say if they are many true bit of each set. More...
 

Public Attributes

genstruct::Vector< BitVector * > cache_state
 Represent the cache state (table of set) with all l-blocks being in this line. More...
 
genstruct::HashTable
< address_t, int > 
htable
 <l-block, its index in cache_state> More...
 
int cache_line
 It is the number of the cache line. More...
 
categorisation_t categorisation
 Categorisation (a_h, a_m, f_m, c) according to F. More...
 
genstruct::HashTable
< address_t, int > 
hcat
 <l-block, its categorisation> More...
 

Detailed Description

This class is used to represent an abstract cache line state.

Member Typedef Documentation

Member Enumeration Documentation

Enumerator
ALWAYS_MISS 
ALWAYS_HIT 
FIRST_MISS 
CONFLICT 

Constructor & Destructor Documentation

otawa::ets::AbstractCacheState::AbstractCacheState ( AbstractCacheState acs)
inline

Build a new ACS with an other: acs.

Parameters
acsAbstractCacheState to assign.

References cache_line, cache_state, hcat, and htable.

otawa::ets::AbstractCacheState::AbstractCacheState ( int  which_line)
inline

Build a new ACS with the number of the cache line.

Parameters
which_lineThe cache line to simulate.
otawa::ets::AbstractCacheState::~AbstractCacheState ( void  )
inline

Member Function Documentation

bool otawa::ets::AbstractCacheState::areDifferent ( AbstractCacheState other)

Return true if other is not equal whith this, else return false.

Parameters
otherAbstractCacheState to compare.

References cache_state.

Referenced by otawa::ets::ACSComputation::applyProcess().

void otawa::ets::AbstractCacheState::assignment ( AbstractCacheState other)

A simple assignment from other to this.

Parameters
otherAbstractCacheState to assign.

References cache_line, cache_state, hcat, and htable.

Referenced by otawa::ets::ACSComputation::applyProcess().

bool otawa::ets::AbstractCacheState::byConflict ( )

Look if it is conflict, that is to say if they are many true bit of each set.

References cache_state.

Referenced by otawa::ets::ACSComputation::applyProcess().

void otawa::ets::AbstractCacheState::join ( AbstractCacheState state1,
AbstractCacheState state2 
)

Join state1 and state2 to this, according to C.

Ferdinand (Join - Must).

Parameters
state1AbstractCacheState to merge.
state2AbstractCacheState to merge.
Remarks
Ferdinand's join function in the Must analysis:

\[ I(\hat{c}_1,\hat{c}_2) = \hat{c}, where \indent \hat{c}(l_x)\ =\ \{s_i\ |\ \exists\ l_a,\ l_b\ with\ s_i\ \in\ \hat{c}_1(l_a),\ s_i\ \in\ \hat{c}_2(l_b)\ and\ x\ =\ max(a,\ b)\} \]

References cache_state, clear(), hcat, and htable.

Referenced by otawa::ets::ACSComputation::applyProcess().

Member Data Documentation

otawa::ets::AbstractCacheState::cache_line
otawa::ets::AbstractCacheState::cache_state

Represent the cache state (table of set) with all l-blocks being in this line.

Referenced by AbstractCacheState(), otawa::ets::ACSComputation::applyProcess(), areDifferent(), assignment(), byConflict(), join(), and otawa::ets::ACSComputation::processAST().

otawa::ets::AbstractCacheState::categorisation

Categorisation (a_h, a_m, f_m, c) according to F.

Mueller in 1994.

otawa::ets::AbstractCacheState::hcat

<l-block, its categorisation>

Referenced by AbstractCacheState(), otawa::ets::ACSComputation::applyProcess(), assignment(), and join().


The documentation for this class was generated from the following files: