![]() |
LINE Solver (C++)
Templated C++ port of the LINE queueing solver
|
Port of solver_mva_cacheqn_retrieval_analyzer.m: a CLOSED integrated cache-queueing model whose Cache carries a delayed-hit retrieval system. More...
#include <cstddef>#include <functional>#include <limits>#include <vector>#include "line/api/da/da_cacheqn_retrieval.h"#include "line/lang/qn/network_struct.h"#include "line/solvers/mva/mva_types.h"#include "line/solvers/mva/solver_mva.h"#include "line/util/error.h"#include "line/util/matrix.h"Go to the source code of this file.
Classes | |
| struct | line::mva::MvaCacheqnRetrievalSolution< T > |
| What the closed delayed-hit analyzer returns. More... | |
Namespaces | |
| namespace | line |
| namespace | line::mva |
Functions | |
| template<class T> | |
| MvaCacheqnRetrievalSolution< T > | line::mva::solver_mva_cacheqn_retrieval_analyzer (const qn::NetworkStruct< T > &L, const MvaOptions &opt) |
| Port of solver_mva_cacheqn_retrieval_analyzer.m. | |
Port of solver_mva_cacheqn_retrieval_analyzer.m: a CLOSED integrated cache-queueing model whose Cache carries a delayed-hit retrieval system.
THIS FILE IS GLUE, and the twin of solver_nc_cacheqn_retrieval.h. All the work is in da_cacheqn_retrieval, which alternates the isolated-cache solve with the network solve; this supplies only the NETWORK SOLVER and unpacks the result. The two analyzers differ in that one line and in nothing else, which is why the driver takes netfun as its only handle: the isolated-cache miss algorithm is cache_miss_fpi in both, and both report method = 'fpi'.
THE LOAD-DEPENDENT BRANCH IS NOT OPTIONAL. The driver installs a coupon-collector lldscaling on the fetch station before the first sweep, so netsolve's scaling test is true on every call and the network solve is always solver_mvald_analyzer. The solver_mva_analyzer arm is kept because the reference keeps it – it is what runs if a future driver stops installing the scaling – not because a model reaches it today.
THE THREE-WAY SPLIT COLLAPSES ON THIS PATH, deliberately. The reference reports hitprob as P(item cached) and folds the delayed-hit fraction into missprob, returning delayedprob = 0. Only the OPEN analyzer (solver_mva_retrieval.h) separates true hits from delayed hits. That is why hitproblist and latency are NaN here and there is no itemprob: they are quantities this path does not compute, and reporting a number for them would be inventing one.
EXPERIMENTAL, in the reference's own words (da_cacheqn_retrieval.m, LIMITATIONS): the coalescing throughput benefit is captured in DIRECTION and understated in magnitude, and no closed retrieval example ships in the suite. The port reproduces the method rather than repairing it, so a closed model should be validated against LDES before its absolute numbers are trusted.
ARITHMETIC: transcendental. The fixed point stops on a tolerance and the coupon-collector rate is a real power, so this refuses under Rational by name.
Definition in file solver_mva_cacheqn_retrieval.h.