I'm trying the neorv32 CPU on AXI4-lite bus. AXI_ACLK is 100MHz. I have connected BRAM memory block by AXI BRAM Controller and DDR2 memory interface by MIG. Input clock sys_clk_i connected to MIG is 200MHz.
I wrote a simple test to measure the speed of reading:
When program is running from BRAM, so access time to BRAM is approx 70 ticks and to DDR2 120 ticks.
When program is running from DDR2, so access time to BRAM is approx 995 ticks and to DDR2 1100 ticks.
Why is there such a big difference and why is the program running from DDR2 so slow?
The DDR2 memory is so saturated by random read access connections?
Is it possible to activate some DDR2 cache that would speed it up?
Or is DDR2 is not suitable to use by CPU instruction and data memory?
Question
Michal Hucik
I'm trying the neorv32 CPU on AXI4-lite bus. AXI_ACLK is 100MHz. I have connected BRAM memory block by AXI BRAM Controller and DDR2 memory interface by MIG. Input clock sys_clk_i connected to MIG is 200MHz.
I wrote a simple test to measure the speed of reading:
uint64_t start_time = neorv32_mtime_get_time ( );
uint32_t value = *(uint32_t*) addr;
uint64_t end_time = neorv32_mtime_get_time ( );
When program is running from BRAM, so access time to BRAM is approx 70 ticks and to DDR2 120 ticks.
When program is running from DDR2, so access time to BRAM is approx 995 ticks and to DDR2 1100 ticks.
Why is there such a big difference and why is the program running from DDR2 so slow?
The DDR2 memory is so saturated by random read access connections?
Is it possible to activate some DDR2 cache that would speed it up?
Or is DDR2 is not suitable to use by CPU instruction and data memory?
Link to comment
Share on other sites
3 answers to this question
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now