mem: Fix address interleaving bug in DRAM controller
Review Request #2325 - Created Aug. 13, 2014 and submitted
| Information | |
|---|---|
| Andreas Hansson | |
| gem5 | |
| default | |
| Reviewers | |
| Default | |
Changeset 10286:08c7971d5f0a --------------------------- mem: Fix address interleaving bug in DRAM controller This patch fixes a bug in the DRAM controller address decoding. In cases where the DRAM burst size was smaller than the interleaving stripe size (e.g. LPDDR3 x32 with a 64 byte cache line) one address bit effectively got used as a channel bit when it should have been a low-order column bit. This patch adds a notion of "columns per stripe", and more clearly deals with the low-order column bits and high-order column bits. The patch also relaxes the granularity check such that it is possible to use interleaving granularities other than the cache line size. The patch also adds a missing M5_CLASS_VAR_USED to the tCK member as it is only used in the debug build for now.
Posted (Aug. 15, 2014, 7:13 p.m.)
While I don't understand why there are column bits at the lower end of the address, I suggest we change the name of the addressing policy to reflect that column address bits have two subsets.
-
src/mem/dram_ctrl.cc (Diff revision 1) -
at least as large as, instead of larger.
-
src/mem/dram_ctrl.cc (Diff revision 1) -
at most as large as instead of smaller.
Review request changed
Updated (Aug. 18, 2014, 5:27 a.m.)
Description: |
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Diff: |
Revision 2 (+40 -15) |
Not important, but I'd suggest changing the description to: "In cases where the DRAM burst size (e.g. 32 bytes in a rank with a single LPDDR3 x32) was smaller than the channel interleaving size (e.g. systems with a 64-byte cache line) ..." I'd also use the "channel interleaving/striping" term instead of just simply "interleaving/striping" if that is what you mean.
