Load Store Unit Design #71
Replies: 7 comments 7 replies
-
A few questions / comments:
Please share the corresponding pipeline table for Store Ops. Please specify at what pipeline stage the SQ/SB gets allocated and deallocated; what the minimum required fields of SQ/SB for our example uarch and at pipeline stage(s) each of those fields get updated. Thank you for putting this together. |
Beta Was this translation helpful? Give feedback.
-
Another example of a simple LSU unit is described here:
This uarch is different and simpler than Boom. |
Beta Was this translation helpful? Give feedback.
-
The pipeline for BOOM is shown here: https://github.com/riscv-boom/riscv-boom/blob/master/docs/figures/evolution.png A block diagram of the processor is shown here https://github.com/riscv-boom/riscv-boom/raw/master/docs/figures/uarch.png There are following stages for Ld/St op:
This pipeline is similar (but not same) to what we have discussed so far and to current pipeline in Olympia There are references to following structures (the sizes, shown in paranthesis, are irrelevant in our discussion, provided as just examples):
We need to document functions performed in each of those 7 steps, including how each of the structures are allocated/updated/freed. From my reading of BOOM doc https://carrv.github.io/2020/papers/CARRV2020_paper_15_Zhao.pdf, here is my attempt. @h0lyalg0rithm can you please look through latest BOOM code and confirm/correct/update the following, as needed. Pending items are provided below.
Pending questions:
|
Beta Was this translation helpful? Give feedback.
-
@arupc Here is what I understood from the code
Not sure when it gets dellocated but I assume it is once once its commited
LDQ is deallocated once the instruction is committed(the committed field is not present in the load store entry). Valid bit set to false
STQ is deallocated once its committed and sent to memory
During the cache lookup stage, |
Beta Was this translation helpful? Give feedback.
-
Functional requirement of a load instruction:
Functional requirement of a store instruction:
Keeping in mind the above functional requirements and based on previous discussions, we can create a generic LSU unit, with following parameters:
Following structures are needed:
|
Beta Was this translation helpful? Give feedback.
-
Pipeline of the generic LSU unit will have the following stages:
|
Beta Was this translation helpful? Give feedback.
-
Link to the cache documentation Link |
Beta Was this translation helpful? Give feedback.
-
The load/store unit in the RISC-V Performance Model is a simple, single, in-order, pipeline with a fixed number of stages:
The current design has a few drawbacks:
The goal of the redesign is to implement a fully functional LSU, similar to the one present in the BOOM.
Load Pipeline
Store Pipeline
Live document with the timing diagram is available here
The behaviour I would like to model is as follows:
Features/behaviours we could add in the future:
Beta Was this translation helpful? Give feedback.
All reactions