From 829a787be55be7f98fe2393bdf553b60dda2cd34 Mon Sep 17 00:00:00 2001 From: Jonathan Woodruff Date: Wed, 17 Jan 2024 13:41:43 +0000 Subject: [PATCH] Move to vector functions as it's cleaner. --- src_Core/RISCY_OOO/procs/RV64G_OOO/FetchStage.bsv | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/src_Core/RISCY_OOO/procs/RV64G_OOO/FetchStage.bsv b/src_Core/RISCY_OOO/procs/RV64G_OOO/FetchStage.bsv index 8180192..50dbcb0 100644 --- a/src_Core/RISCY_OOO/procs/RV64G_OOO/FetchStage.bsv +++ b/src_Core/RISCY_OOO/procs/RV64G_OOO/FetchStage.bsv @@ -546,10 +546,7 @@ module mkFetchStage(FetchStage); TlbResp tr <- tlb_server.response.get; translateAddress.deq; // Check if, because of pipelining, we already have this vpn. - Bool found = False; - for (Integer i = 0; i < valueOf(PageBuffSize); i=i+1) - if (buffered_translation_virt_pc[i] matches tagged Valid .vpn &&& getVpn(translateAddress.first) == vpn) - found = True; + Bool found = elem(Valid(getVpn(translateAddress.first)), buffered_translation_virt_pc); if (!found) begin buffered_translation_virt_pc[buffered_translation_count] <= Valid(getVpn(translateAddress.first)); buffered_translation_tlb_resp[buffered_translation_count] <= tr; @@ -586,10 +583,10 @@ module mkFetchStage(FetchStage); `endif // Search the last few translations to look for a match. - Maybe#(Bit#(TLog#(PageBuffSize))) m_buff_match_idx = Invalid; - for (Integer i = 0; i < valueOf(PageBuffSize); i=i+1) + Maybe#(UInt#(TLog#(PageBuffSize))) m_buff_match_idx = findElem(Valid(getVpn(getAddr(pc))), buffered_translation_virt_pc); + /*for (Integer i = 0; i < valueOf(PageBuffSize); i=i+1) if (buffered_translation_virt_pc[i] matches tagged Valid .vpn &&& getVpn(getAddr(pc)) == vpn) - m_buff_match_idx = tagged Valid fromInteger(i); + m_buff_match_idx = tagged Valid fromInteger(i);*/ if (m_buff_match_idx matches tagged Valid .buff_match_idx) begin let next_fetch_pc = fromMaybe(addPc(pc, 2 * (zeroExtend(posLastSupX2) + 1)), pred_next_pc); let pc_idxs <- pcBlocks.insertAndReserve(truncateLSB(pc), truncateLSB(next_fetch_pc));