Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Support Concurrent read/write access #1

Open
dpretet opened this issue Sep 5, 2023 · 2 comments
Open

Support Concurrent read/write access #1

dpretet opened this issue Sep 5, 2023 · 2 comments
Assignees
Labels
bug Something isn't working enhancement New feature or request

Comments

@dpretet
Copy link
Owner

dpretet commented Sep 5, 2023

This branch contains updates in memfy and dcache to support concurrent read/write access if no address collision can occur. The updates are the following:

  • memfy: AXI_ORDERING parameter set to 1 generate another circuit to detect the r/w collisions. Look-up tables (LUT) for read and write channels are instantiated to track ongoing requests. AXI_ORDERING=0 follows the previous behaviour, read and write requests can't be issued in parallel. Outstanding read blocks write requests, and vice & versa.
  • dcache pusher: cache write is slightly different, all write needing to update the blocks are packed into a FIFO, emptied once no new write request are issued by memfy. Before this update, read and write were fully parallel.
  • cache blocks: architecture evolved, now having two fully independent port, once for read data path (fetcher), once for write data path (pusher). A port makes write passing before read. Before this update, port 1 was read-only, port 2 write-only.

The branch is not yet merged because two problems encountered during debug, that can't be identified clearly neither understood for the moment:

  • wba-testsuite / core configuration: at some point, memfy generates a log indicating too many write completions have been issued by the dcache. True for both icarus and verilator
  • apps/repl: the benchmark command issued a load_misaligned exception.
dpretet added a commit that referenced this issue Sep 5, 2023
Continue ongoing concurrent request support
@dpretet dpretet self-assigned this Sep 5, 2023
@dpretet dpretet added bug Something isn't working enhancement New feature or request labels Sep 5, 2023
@dpretet
Copy link
Owner Author

dpretet commented Sep 5, 2023

merge_memfy_opt is a temp branch, merging all but new cache blocks, to debug the current problems, without success for the moment.

Pusher update, stacking write request to update the cache lower by 4% the performance. The dCache architecture needs to be better study/planned to avoid that and permit concurrent accesses

@dpretet
Copy link
Owner Author

dpretet commented Oct 22, 2024

Maybe linked to the AXI-Crossbar bug:

dpretet/axi-crossbar#9

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working enhancement New feature or request
Projects
None yet
Development

When branches are created from issues, their pull requests are automatically linked.

1 participant