Defines for the Order Preserving Minimal Perfect Hash Map Predictor.
More...
#include <stdint.h>
Defines for the Order Preserving Minimal Perfect Hash Map Predictor.
- Copyright
- BSD License (see doc/COPYING or https://www.libelektra.org)
◆ predictorflag_t
OpmphmPredictor Flags.
Enumerator |
---|
OPMPHM_PREDICTOR_FLAG_MMAP_STRUCT | OpmphmPredictor struct lies inside a mmap region. This flag is set for OpmphmPredictor structs inside a mapped region. It prevents erroneous free() calls on these OpmphmPredictors.
|
OPMPHM_PREDICTOR_FLAG_MMAP_PATTERNTABLE | OpmphmPredictor patternTable lies inside a mmap region. This flag is set for OpmphmPredictor patternTables inside a mapped region. It prevents erroneous free() calls on these patternTables.
|
◆ opmphmPredictor()
int opmphmPredictor |
( |
OpmphmPredictor * |
op, |
|
|
size_t |
n |
|
) |
| |
Predictor functions.
Predictor functions.
Uses the opmphmPredictorWorthOpmphm (...) to check if the previous sequence of ksLookup (...) invocations without alteration was worth using the OPMPHM. Updates the state with the predictionAutomata and the worth information of the previous history. Alters the history with the worth information and makes the prediction for the next sequence of ksLookup (...) invocations.
- Parameters
-
op | the Predictor |
n | the number of elements in the KeySet |
- Return values
-
1 | it is worth using the OPMPHM |
0 | it is not worth using the OPMPHM |
◆ opmphmPredictorCopy()
void opmphmPredictorCopy |
( |
OpmphmPredictor * |
dest, |
|
|
OpmphmPredictor * |
source |
|
) |
| |
Make a copy of the OpmphmPredictor.
- Parameters
-
source | the OpmphmPredictor source |
dest | the OpmphmPredictor destination |
◆ opmphmPredictorDel()
void opmphmPredictorDel |
( |
OpmphmPredictor * |
op | ) |
|
Deletes the OpmphmPredictor.
Clears and frees all memory in OpmphmPredictor.
- Parameters
-
◆ opmphmPredictorIncCountBinarySearch()
int opmphmPredictorIncCountBinarySearch |
( |
OpmphmPredictor * |
op, |
|
|
size_t |
n |
|
) |
| |
|
inline |
Increases the counter when the Binary Search was used for the ksLookup (...) .
Prevents also an endless Binary Search usage by a simple heuristic.
- Parameters
-
op | the Predictor |
n | the number of elements in the KeySet |
- Return values
-
1 | it is worth using the OPMPHM |
0 | it is not worth using the OPMPHM |
◆ opmphmPredictorIncCountOpmphm()
void opmphmPredictorIncCountOpmphm |
( |
OpmphmPredictor * |
op | ) |
|
|
inline |
Increases the counter when the OPMPHM was used for the ksLookup (...) .
- Parameters
-
◆ opmphmPredictorNew()
OpmphmPredictor* opmphmPredictorNew |
( |
void |
| ) |
|
Basic functions.
Basic functions.
Reserves for all possible values of opmphmPredictorHistoryMask two bits to store all 4 states of the Prediction Automata A2. Sets the initial state to 0.
- Return values
-
OpmphmPredictor | * success |
NULL | memory error |
◆ opmphmPredictorWorthOpmphm()
size_t opmphmPredictorWorthOpmphm |
( |
size_t |
n | ) |
|
|
inline |
Heuristic function.
Heuristic function.
This easy and fast computable heuristic function tells how many ksLookup (...) invocations without alteration of the KeySet need to be made to justify the OPMPHM usage. This heuristic function is developed and measured by benchmarks.
- Parameters
-
n | the number of elements in the KeySet |
- Return values
-
size_t | the heuristic value |
◆ opmphmPredictorHistoryMask
const uint16_t opmphmPredictorHistoryMask |
|
extern |
Order Preserving Minimal Perfect Hash Map Predictor.
A modified Global History Register and Global Pattern History Table branch prediction algorithm from
Tse-Yu Yeh and Yale N. Patt "Alternative Implementations of Two-Level Adaptive Branch Prediction" In: The 19th Annual International Symposium on Computer Architecture (1992), pp. 124-134
Maps the event of branch taken or not to a sequence of ksLookup (...) invocations without KeySet alteration that is worth using the OPMPHM or not. The predictor looks at past events to predict the future, to keep track of past events the lookupCount
and the ksSize
must be stored. opmphmPredictorHistoryMask defines the length and extraction mask of the global history register interpreted binary it must be a series of 1, with a minimum value of 0x3 and a maximum value of 0x7FFF.
Order Preserving Minimal Perfect Hash Map Predictor.