-
Notifications
You must be signed in to change notification settings - Fork 22
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
DI unit balanced port allocation fix #431
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looks good but we should make sure there's no performance overhead given the more complex logic could be triggered every cycle
I do agree that performance needs to be a concern, but for me this could be a necessary case where the minor performance hit (if apparent) needs to be taken. Without this change, I don't think we are properly or accurately allocating to ports in a true balanced fashion. Having said that, if the performance hit is major, then a different solution should be looked into. |
…port allocation failure but instead cycling through all possible RSs.
7f91ef9
to
282f9ce
Compare
0889f12
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Is there a noticeable performance difference between this and the last implementation? What about accuracy difference as well?
See below for this PR's performance compared to
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@FinnWilkinson Could you open an issue detailing the performance issue that comes with this PR and the discussed high-level solution
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looks all good. A tiny change needed in the a64fx-sst config to update port allocator used, then happy to approve
Currently, the dispatch issue unit will get one port allocation and if the attached Reservation station is full or has exhausted its dispatch rate for that cycle, the port will be unallocated and a stall will occur.
Given many instructions can have multiple ports to go to, we should be cycling through all legal ports and seeing if an instruction can be accepted into any of its reservation stations. This PR makes such a change and improves & balances the port / reservation station utilisation.