Closed enjoy-digital closed 2 months ago
With @ultraembedded l2_cache
There is realy something else which isn't right. if i remember well the logic analyser on the AXI port which was going to the DDR was showing very high latencies, right ? Overall, if that inferface show more than 200 ns latency (avg), i think there is a miss-configuration somewere.
Wtih L2_cache Linux is booting on Vexriscv-SMP with a boot time ¹ 19s
-> No needs to test/impement second optio and axi_interface module may be removed
axi_adapter is removed: core_axi_cache is now used by default.
This is now done and working, we can close.
Currently, initial LPDDR4 accesses are being handled by a simple AXI 32-bit to 256-bit UpConverter. While this solution functions correctly, it is inefficient because each 32-bit access is expanded to a 256-bit transfer. This results in suboptimal utilization of the memory bandwidth.
To enhance access efficiency, we propose two possible improvements:
Add an L2 Cache to the LiteX SoC:
Introducing an L2 cache would not only act as a cache to reduce memory access latency but also handle the 32-bit to 256-bit conversion directly. This approach would improve efficiency for all CPUs.
verilog-axi
.Increase the Memory Interface Width on the CPU:
Alternatively, we could increase the memory interface width directly on the CPU to 256 bits. This involves a custom call to the CPU's
add_memory_buses
with a 256-bit width, connecting these interfaces directly to the DRAM in 256-bit mode.This code would need to be adapted to connect the buses directly to the LPDDR4 core instead of the SoC's main bus.