LINE Solver
MATLAB API documentation
Loading...
Searching...
No Matches
retrieval_chain.m
1% Cache with a chained retrieval system (delayed hits).
2clc; clear solver AvgTable;
3
4accessProb = [0.6, 0.3, 0.1]; % per-item access probabilities (3 items)
5nQueues = 2;
6
7model = Network('DelayedHits');
8
9n = numel(accessProb); % number of items
10capacity = [1]; % per-level cache capacity
11
12source = Source(model, 'Source');
13cacheNode = Cache(model, 'Cache', n, capacity, ReplacementStrategy.FIFO);
14queues = cell(1, nQueues);
15for i = 1:nQueues
16 queues{i} = Queue(model, sprintf('Queue_%d', i), SchedStrategy.FCFS);
17end
18sink = Sink(model, 'Sink');
19
20jobClass = OpenClass(model, 'InitClass', 0);
21hitClass = OpenClass(model, 'HitClass', 0);
22missClass = OpenClass(model, 'MissClass', 0);
23
24source.setArrival(jobClass, Exp(1));
25
26% Read class service at each retrieval queue = default per-item fetch service.
27queues{1}.setService(jobClass, Exp(2.0));
28queues{2}.setService(jobClass, Exp(3.0));
29
30pAccess = DiscreteSampler(accessProb);
31cacheNode.setRead(jobClass, pAccess);
32cacheNode.setHitClass(jobClass, hitClass);
33cacheNode.setMissClass(jobClass, missClass);
34
35% No serviceRates and no routingMatrices: both inherited from the read class.
36cacheNode.setRetrievalSystem(jobClass, missClass, queues);
37
38P = model.initRoutingMatrix();
39P{jobClass, jobClass}(source, cacheNode) = 1.0;
40% Retrieval chain drawn once for the read class: Cache -> Queue_1 -> Queue_2 -> Cache
41P{jobClass, jobClass}(cacheNode, queues{1}) = 1.0;
42P{jobClass, jobClass}(queues{1}, queues{2}) = 1.0;
43P{jobClass, jobClass}(queues{2}, cacheNode) = 1.0;
44P{hitClass, hitClass}(cacheNode, sink) = 1.0;
45P{missClass, missClass}(cacheNode, sink) = 1.0;
46model.link(P);
47
48% Simulation
49SSA(model, 'samples', 5000, 'method', 'serial', 'seed', 1).getAvgCacheTable
50LDES(model, 'samples', 1e6, 'seed', 1).getAvgCacheTable
51
52% Analytical
53MVA(model).getAvgCacheTable
54NC(model).getAvgCacheTable
55
56% Item-level cache occupancy
57MVA(model).getAvgItemTable
58NC(model).getAvgItemTable
Definition Station.m:245