Untitled

mail@pastecode.io avatar
unknown
c_cpp
a month ago
1.0 kB
2
Indexable
Never
void ICL::read(Request &req, uint64_t &tick) {

 

  arg = "r";
  calculator.utilFunc(req, arg, tick);


  uint64_t beginAt;
  uint64_t finishedAt = tick;
  uint64_t reqRemain = req.length;
  Request reqInternal;

  reqInternal.reqID = req.reqID;
  reqInternal.offset = req.offset;

  for (uint64_t i = 0; i < req.range.nlp; i++) {
    beginAt = tick;

    reqInternal.reqSubID = i + 1;
    reqInternal.range.slpn = req.range.slpn + i;
    reqInternal.length = MIN(reqRemain, logicalPageSize - reqInternal.offset);

    

    pCache->read(reqInternal, beginAt);
    
    reqRemain -= reqInternal.length;
    reqInternal.offset = 0;

    finishedAt = MAX(finishedAt, beginAt);

    
  }

  debugprint(LOG_ICL,
             "READ  | LCA %" PRIu64 " + %" PRIu64 " | %" PRIu64 " - %" PRIu64
             " (%" PRIu64 ")",
             req.range.slpn, req.range.nlp, tick, finishedAt,
             finishedAt - tick);

  tick = finishedAt;
  tick += applyLatency(CPU::ICL, CPU::READ);
}