You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Hi everyone,
I would like to ask a general question about how the coprocessor w/RoCC interface works with the 5-stage in-order pipeline (ex. rocket core), I mean, how the coproc. tells to the main pipeline that the processing has been finished? I know that we have io.resp.* and io.busy interfaces but if I don't release the io.resp.valid/io.cmd.ready the pipeline of the main processor will insert some stalls to fill such coprocessing cycles? or, if in another case (not inserting stalls) the main rocket need to expect some rd value from coproc., will it wait for such answer executing the sequence of instructions and then return back to the coproc. context?
In the Rocket Chip generator paper from April 15/2016 there're few highlights about the RoCC but not so detailed about how it suppose to work, so sorry if I'm wrong but I did not find a lot of information about this subject.
The RoCC interface accepts coprocessor commands generated by committed instructions
executed by the Rocket core. The commands include the instruction word and the values in up to
two integer registers, and commands may write an integer register in response. The RoCC interface
also allows the attached coprocessor to share the Rocket core’s data cache and page table walker,
and provides a facility for the coprocessor to interrupt the core.
Ps.: I'm developing some HA using RoCC but it seems not so clear about how the magic should work in cycle times when using some serial proccessing, i.e if I'm using some coproc. answer I must to take care with the callback data before running the next instructions...
This discussion was converted from issue #1716 on October 15, 2022 08:33.
Heading
Bold
Italic
Quote
Code
Link
Numbered list
Unordered list
Task list
Attach files
Mention
Reference
Menu
reacted with thumbs up emoji reacted with thumbs down emoji reacted with laugh emoji reacted with hooray emoji reacted with confused emoji reacted with heart emoji reacted with rocket emoji reacted with eyes emoji
-
Hi everyone,
I would like to ask a general question about how the coprocessor w/RoCC interface works with the 5-stage in-order pipeline (ex. rocket core), I mean, how the coproc. tells to the main pipeline that the processing has been finished? I know that we have io.resp.* and io.busy interfaces but if I don't release the io.resp.valid/io.cmd.ready the pipeline of the main processor will insert some stalls to fill such coprocessing cycles? or, if in another case (not inserting stalls) the main rocket need to expect some rd value from coproc., will it wait for such answer executing the sequence of instructions and then return back to the coproc. context?
In the Rocket Chip generator paper from April 15/2016 there're few highlights about the RoCC but not so detailed about how it suppose to work, so sorry if I'm wrong but I did not find a lot of information about this subject.
Ps.: I'm developing some HA using RoCC but it seems not so clear about how the magic should work in cycle times when using some serial proccessing, i.e if I'm using some coproc. answer I must to take care with the callback data before running the next instructions...
Beta Was this translation helpful? Give feedback.
All reactions