Merge remote-tracking branch 'karlis/CHERI' into ks980-prefetch
This commit is contained in:
@@ -46,7 +46,7 @@ SIM_LLC_ARBITER_LAT ?=
|
||||
CHECK_DEADLOCK ?= true
|
||||
RENAME_DEBUG ?= false
|
||||
INSTR_PREFETCHER_LOCATION ?= L1
|
||||
INSTR_PREFETCHER_TYPE ?= MULTI_WINDOW_TARGET
|
||||
INSTR_PREFETCHER_TYPE ?= SINGLE_WINDOW_TARGET
|
||||
DATA_PREFETCHER_LOCATION ?= NONE
|
||||
DATA_PREFETCHER_TYPE ?= MARKOV_ON_HIT_2
|
||||
|
||||
|
||||
@@ -739,17 +739,12 @@ module mkBRAMSingleWindowTargetPrefetcher(Prefetcher) provisos
|
||||
Reg#(LineAddr) nextToAsk <- mkReg(0);
|
||||
|
||||
Reg#(LineAddr) lastChildRequest <- mkReg(0);
|
||||
TargetTableBRAM#(1024, 128) targetTable <- mkTargetTableBRAM;
|
||||
FIFOF#(LineAddr) targetTableReadResp <- mkBypassFIFOF;
|
||||
TargetTableBRAM#(8192, 2048) targetTable <- mkTargetTableBRAM;
|
||||
Fifo#(1, LineAddr) targetTableReadResp <- mkOverflowBypassFifo;
|
||||
|
||||
Reg#(Vector#(numLastRequests, Bit#(32))) lastTargetRequests <- mkReg(replicate(0));
|
||||
Reg#(Vector#(numLastRequests, Bit#(16))) lastTargetRequests <- mkReg(replicate(0));
|
||||
|
||||
rule sendReadReq;
|
||||
if (!elem(hash(lastChildRequest), lastTargetRequests)) begin
|
||||
targetTable.readReq(lastChildRequest);
|
||||
$display("%t Prefetcher sending target read request for %h", $time, lastChildRequest);
|
||||
lastTargetRequests <= shiftInAt0(lastTargetRequests, hash(lastChildRequest));
|
||||
end
|
||||
endrule
|
||||
|
||||
rule getReadResp;
|
||||
@@ -782,6 +777,13 @@ module mkBRAMSingleWindowTargetPrefetcher(Prefetcher) provisos
|
||||
$display("%t Prefetcher add target entry from addr %h to addr %h", $time, Addr'{lastChildRequest, '0}, addr);
|
||||
targetTable.writeReq(lastChildRequest, cl);
|
||||
end
|
||||
|
||||
// Send target request if not in last 16 hits.
|
||||
if (!elem(hash(cl), lastTargetRequests)) begin
|
||||
targetTable.readReq(cl);
|
||||
$display("%t Prefetcher sending target read request for %h", $time, cl);
|
||||
lastTargetRequests <= shiftInAt0(lastTargetRequests, hash(cl));
|
||||
end
|
||||
lastChildRequest <= cl;
|
||||
endmethod
|
||||
|
||||
@@ -1473,8 +1475,6 @@ provisos(
|
||||
Int#(16) strideToUse = signExtend(se.stride);
|
||||
if (abs(strideToUse) < cLineSize) begin
|
||||
strideToUse = (strideToUse < 0) ? -cLineSize : cLineSize;
|
||||
strideToUse = (strideToUse < 0) ? -cLineSize : cLineSize;
|
||||
strideToUse = (strideToUse < 0) ? -cLineSize : cLineSize;
|
||||
end
|
||||
Bit#(16) jumpDist = pack(strideToUse) * zeroExtend(cLinesPrefetched+1);
|
||||
let reqAddr = addr + signExtend(jumpDist);
|
||||
|
||||
Reference in New Issue
Block a user