Public Member Functions | Static Public Member Functions | Protected Member Functions | Protected Attributes | Private Member Functions | Static Private Attributes

de.fraunhofer.isst.axbench.timing.algorithms.AlgorithmWcdo Class Reference

List of all members.

Public Member Functions

 AlgorithmWcdo (TransactionSet gamma, Class<?extends AbstractAlgorithm > baseAlgoClass, boolean tight)
ResultList calculateAllWcrt () throws AbortedException
void checkAlgorithmCompatibility () throws IncompatibleDataException
void doIterationStep () throws AbortedException
double dyn_O (Task tau_ab)
Map< Task, Double > getDynJitter ()
Map< Task, Double > getDynWcrt ()
double R (Task tauUA) throws AbortedException
double R_b (Task tau_ab)
void requestAbort (boolean abort)
void updateJitter ()

Static Public Member Functions

static TransactionSet createCompatibleGamma (TransactionSet ori)
static void main (String...args) throws IOException, AbortedException

Protected Member Functions

AbstractAlgorithm createInnerAlgorithm ()
double dyn_J (Task tau_ab)
boolean isConvergent ()
Task previousTask (Task tau_ab)

Protected Attributes

Map< Task, Double > dynJitter = new LinkedHashMap<Task, Double>()
Map< Task, Double > dynWcrts = new LinkedHashMap<Task, Double>()
AbstractAlgorithm innerAlgo
final Class<?extends
AbstractAlgorithm
innerAlgoClass
Map< Task, Double > oldJitter
Map< Task, Double > oldWcrts
TransactionSet workingGamma

Private Member Functions

ResultList toResultList ()

Static Private Attributes

static final boolean USE_ORIGINAL_SEQUENCE_PREDECESSOR = false

Detailed Description

This class implements the base functionality of the WCDO algorithm. As a difference to the WCSO and exact algorithm, the WCDO algorithm allows as well the usage of precedence relations as the usage of multiple resources (e.g. processors).

The WCDO algorithm calculates temporary offsets according to the resource IDs and the precenence relations and uses a "lower" algorithm for the calculation of the WCRT. Then it calculates / adjusts a dynamic jitter and iterates the calculation until a fix point is reached.

As "lower" algorithm the WCSO or the exact algorithm can be used, and the WCSO algorithm can also be used in tight mode.

Author:
shanno

Constructor & Destructor Documentation

de.fraunhofer.isst.axbench.timing.algorithms.AlgorithmWcdo.AlgorithmWcdo ( TransactionSet  gamma,
Class<?extends AbstractAlgorithm baseAlgoClass,
boolean  tight 
)
Parameters:
gamma The TransactionSet to use.
baseAlgoClass The class of the Algorithm to use in base calculation. Allowed base algorithms: AlgorithmWcso, AlgorithmExact and the cached variants of them.
tight When using AlgorithmWcso, this parameter determines whether a tight implementation is used.

Member Function Documentation

ResultList de.fraunhofer.isst.axbench.timing.algorithms.AlgorithmWcdo.calculateAllWcrt (  )  throws AbortedException
void de.fraunhofer.isst.axbench.timing.algorithms.AlgorithmWcdo.checkAlgorithmCompatibility (  )  throws IncompatibleDataException [virtual]
static TransactionSet de.fraunhofer.isst.axbench.timing.algorithms.AlgorithmWcdo.createCompatibleGamma ( TransactionSet  ori  )  [static]

Creates a compatible TransactionSet by creating predecessor relation according to task order. Using this method, you can use this WCDO algorithm with WCSO test data

AbstractAlgorithm de.fraunhofer.isst.axbench.timing.algorithms.AlgorithmWcdo.createInnerAlgorithm (  )  [protected]

Creates a instance of the given base algorithm (innerAlgoClass) via reflection. This is a dynamic version of the term "new AlgorithmXXX(gamma, isTight())".

Reimplemented in de.fraunhofer.isst.axbench.timing.algorithms.AlgorithmWcdopsPlusOuter, and de.fraunhofer.isst.axbench.timing.algorithms.cache.CachedAlgorithmWcdopsPlusOuter.

void de.fraunhofer.isst.axbench.timing.algorithms.AlgorithmWcdo.doIterationStep (  )  throws AbortedException

Iteration step of calculating all R values

double de.fraunhofer.isst.axbench.timing.algorithms.AlgorithmWcdo.dyn_J ( Task  tau_ab  )  [protected]

calculates the dynamic jitter, used by jitter update

double de.fraunhofer.isst.axbench.timing.algorithms.AlgorithmWcdo.dyn_O ( Task  tau_ab  ) 

Calculates the dynamic offset using the best case response times of the predecessors according to eq. 3 in WCDOPS+ paper

Reimplemented in de.fraunhofer.isst.axbench.timing.algorithms.AlgorithmWcdoSL.

Map<Task, Double> de.fraunhofer.isst.axbench.timing.algorithms.AlgorithmWcdo.getDynJitter (  ) 
Map<Task, Double> de.fraunhofer.isst.axbench.timing.algorithms.AlgorithmWcdo.getDynWcrt (  ) 
boolean de.fraunhofer.isst.axbench.timing.algorithms.AlgorithmWcdo.isConvergent (  )  [protected]
static void de.fraunhofer.isst.axbench.timing.algorithms.AlgorithmWcdo.main ( String...  args  )  throws IOException, AbortedException [static]
Task de.fraunhofer.isst.axbench.timing.algorithms.AlgorithmWcdo.previousTask ( Task  tau_ab  )  [protected]
double de.fraunhofer.isst.axbench.timing.algorithms.AlgorithmWcdo.R ( Task  tauUA  )  throws AbortedException [virtual]
double de.fraunhofer.isst.axbench.timing.algorithms.AlgorithmWcdo.R_b ( Task  tau_ab  ) 

Best case response time, used for calculation of initial O and dynamic J

Reimplemented in de.fraunhofer.isst.axbench.timing.algorithms.AlgorithmWcdoSL.

void de.fraunhofer.isst.axbench.timing.algorithms.AlgorithmWcdo.requestAbort ( boolean  abort  ) 
ResultList de.fraunhofer.isst.axbench.timing.algorithms.AlgorithmWcdo.toResultList (  )  [private]
void de.fraunhofer.isst.axbench.timing.algorithms.AlgorithmWcdo.updateJitter (  ) 

Creates a temporary transaction set for executing base algorithm. Dynamic offsets are calculated by the best case execution time of the previous task. The dynamic jitter is also filled.

Reimplemented in de.fraunhofer.isst.axbench.timing.algorithms.AlgorithmWcdopsPlusOuter.


Member Data Documentation

Map<Task, Double> de.fraunhofer.isst.axbench.timing.algorithms.AlgorithmWcdo.dynJitter = new LinkedHashMap<Task, Double>() [protected]
Map<Task, Double> de.fraunhofer.isst.axbench.timing.algorithms.AlgorithmWcdo.dynWcrts = new LinkedHashMap<Task, Double>() [protected]