Liste des Groupes | Revenir à c arch |
On Sat, 5 Oct 2024 15:11:29 +0000, EricP wrote:If, instead of nullifying every instruction past a given point, you
>MitchAlsup1 wrote:>On Fri, 4 Oct 2024 18:11:23 +0000, EricP wrote:>On interrupt, if the core starts fetching instructions from the handler>
and
stuffing them into the instruction queue (ROB) while there are still
instructions in flight, and if those older instructions get a branch
mispredict, then the purge of mispredicted older instructions will also
purge the interrupt handler.
Not necessary, you purge all of the younger instructions from the
thread at retirement, but none of the instructions associated with
the new <interrupt> thread at the front.
That's difficult with a circular buffer for the instruction queue/rob
as you can't edit the order. For a branch mispredict you might be able
to mark a circular range of entries as voided, and leave the entries
to be recovered serially at retire.
Every instruction needs a way to place itself before or after
any mispredictable branch. Once you know which branch mispredicted, you
know instructions will not retire, transitively. All you really need to
know is if the instruction will retire, or not. The rest of the
mechanics play out naturally in the pipeline.
But voiding doesn't look like it works for exceptions or conflicting>
interrupt priority adjustments. In those cases purging the interrupt
handler and rejecting the hand-off looks like the only option.
Can you make this statement again and use different words?>>
If one can live with the occasional replay of an interrupt hand-off and
handler execute due to mispredict/exception/interrupt_priority_adjust
then the interrupt pipelining looks much simplified.
You just have to cover the depth of the pipeline.
Les messages affichés proviennent d'usenet.