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

fix(loadUnit): rollback should be used for flush #3913

Open
wants to merge 1 commit into
base: master
Choose a base branch
from

Conversation

Anzooooo
Copy link
Member

@Anzooooo Anzooooo commented Nov 22, 2024

According to the backend instructions, currently, we have a total of three signals that can notify the backend to generate a flush pipe:

flushPipe, replayInst, and rollback

Among these, flushPipe and replayInst will be combined into the same flush signal in the backend, and the flush will be generated only when the command reaches the Rob dequeue pointer.
The rollback signal will flush as soon as it is sent, so flushing the pipe via the rollback signal is faster.
Currently in MemBlock, store/load MisalignBuffer will flush via flushPipe, RAR violations and mismatch of virtual and physics addresses in the forward will flush via both flushPipe and rollback, and RAW and uncached nack will flush via rollback.
When flushPipe and rollback are triggered at the same time, flushPipe is triggered when the rob dequeue pointer is selected, rather than rollback being triggered immediately.

This commit removes the flushPipe signal in the RAR violation and the mismatch of virtual and physics addresses in the forward, and only triggers flush through rollback.

Any subsequent flushes that may occur should give priority to whether they can be triggered immediately via the rollback signal, and flushPipe/replayInst should only be used if a non-speculative flush is required.
The flushPipe generated by store/load MisalignBuffer is temporarily retained, considering that store/load MisalignBuffer is actually being refactored.

Copy link
Member

@linjuanZ linjuanZ left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

A more straightforward naming is strongly recommended because flushPipe, replayInst and rollback are so friendly confusing.

@XiangShanRobot
Copy link

[Generated by IPC robot]
commit: 240669a

commit astar copy_and_run coremark gcc gromacs lbm linux mcf microbench milc namd povray wrf xalancbmk
240669a 1.918 0.450 2.701 1.223 2.840 2.464 2.398 0.918 1.430 2.069 3.437 2.716 2.387 3.263

master branch:

commit astar copy_and_run coremark gcc gromacs lbm linux mcf microbench milc namd povray wrf xalancbmk
92bcee1 1.917 0.450 2.701 1.230 2.840 2.464 2.398 0.921 1.430 2.069 3.437 2.716 2.387 3.261
09910ab
531dd12
6639e9a

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants