Reinstate out-of-order multiplexer in streamer#56
Open
FrancescoConti wants to merge 2 commits intoab/xif-1.0from
Open
Reinstate out-of-order multiplexer in streamer#56FrancescoConti wants to merge 2 commits intoab/xif-1.0from
FrancescoConti wants to merge 2 commits intoab/xif-1.0from
Conversation
Switch back to OoO mux instead of static redmule_mux. This is compliant to HCI specifications and should be a bit faster in real use-cases. On an ideal test with no stall, an extremely small slowdown (<1%) is possible; however, the rotating priority mechanism should handle better the possible stalls encountered in practical situations.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This pull request makes several changes/fixes to the scheduler and streamer modules in the RTL codebase, with the main change being that
redmule_mux(static) is replaced byhci_core_mux_ooo(dynamic). The static mux is "optimal" in a performance sense but not compliant: switching a static mux when requests or responses are pending can cause protocol violations in HCI (visible in MAGIA integration). The out-of-order mux does not have this issue. Moreover,hci_core_mux_ooocan be configured to the identical behavior ofredmule_muxby appropriately wiring thepriorityinputs. However, in the current version ofhci_core_mux_ooothis is also static and will still cause the same violations asredmule_mux: a future version ofhci_core_mux_ooomay change this behavior, using the priority not statically but dynamically reordering the internal round-robin mechanism (which would be an hybrid of the static and current out-of-order mux behaviors).As it is, the performance of RedMulE is very marginally lower with the "correct" mux (+5 cycles on a test of ~2000 cycles), but a more thorough performance comparison would require a testbench with configurable stalls.
Other changes include correcting signal names for FIFO flush signals, refactoring pop signal logic for better clarity, updating the instantiation and configuration of HCI interface modules, and adding a new filter module for ID handling.
Todo before merge:
FIFO Signal Corrections and Refactoring:
flush_isignals fromclear(undefined) toclear_iin theredmule_schedulermodule. [1] [2] [3]y_config_fifoandy_config_fast_fifoby introducing intermediate logic signals (y_config_pop,y_config_fast_pop).Streamer Module Updates:
virt_tcdmarray inredmule_streamer.svto use the correct size (NumStreamSourcesinstead ofNumStreamSources+1).redmule_muxwithhci_core_mux_ooo, updated the number of channels, and added new priority-related signals for more flexible muxing.HCI Core Filter Enhancements:
hci_core_r_id_filtermodule to provide additional filtering on TCDM read IDs.