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

New out-of-order vlsu for better vector performance #2944

Merged
merged 163 commits into from
May 21, 2024

Conversation

good-circle
Copy link
Contributor

@good-circle good-circle commented May 4, 2024

Support out-of-order non-Segment Unit-Strdie load/store instructions
Support out-of-order non-Segment Stride load/store instructions
Support out-of-order non-Segment Order/Unorder Index load/store instructions
Use LSQ to ensure memory access order of order index instructions
Use FSM to achieve Segment Load/Store instructions, which can ensure segment access order

TODO: Except Segment order index, other segment instructions can execute out-of-order, don't need to use FSM to ensure memory access order.

Ziyue-Zhang and others added 30 commits March 18, 2024 17:34
Co-authored-by: chengguanghui <wissycgh@gmail.com>
* remove isreverse from vecfuncunit

* fix a bug: first uop of vrsub donot need reverse; delete uuid

* fix vipu timing : add one cycle delay to vmask and reduction

* add yunsuan change
uop split in V*SplitImp, flow merge in V*MergeBufferImp, uop issued out of order
add LSQ backpressure logic and 'uop' continuous application LSQ entries logic
* Todo: add more IQs for vector load&store
* Todo: make vector memory inst issue out of order
* Todo: fix bugs
Anzooooo and others added 5 commits May 15, 2024 20:56
This commit fix the situation that inactive element will not send to pipeline, which cause stAddrReadyVec always false.
Because segment instructions may send 8 uop to issue queue in order by enq 0. However, excluding enq 1, issue queue only have 7 entries.
@XiangShanRobot
Copy link

[Generated by IPC robot]
commit: 29ca19d

commit astar copy_and_run coremark gcc gromacs lbm linux mcf microbench milc namd povray wrf xalancbmk
29ca19d 1.857 0.449 2.091 1.188 2.476 2.588 2.331 0.956 1.392 1.365 3.124 2.630 2.432 2.954

master branch:

commit astar copy_and_run coremark gcc gromacs lbm linux mcf microbench milc namd povray wrf xalancbmk
c83747b
d7a3496
5961467 1.855 0.450 2.103 1.177 2.478 2.594 2.333 0.957 1.398 1.421 3.117 2.655 2.454 2.952
4b40434
9eee369 1.854 0.450 2.103 1.190 2.468 2.593 2.330 0.960 1.377 1.427 3.123 2.639 2.451 2.960
006b878 1.854 0.450 2.103 1.190 2.468 2.593 2.330 0.960 1.377 1.427 3.123 2.639 2.451 2.960
7299828 1.854 0.450 2.103 1.190 2.468 2.593 2.330 0.960 1.377 1.427 3.123 2.639 2.451 2.960
0c70648 1.854 0.450 2.103 1.190 2.468 2.593 2.330 0.960 1.377 1.427 3.123 2.639 2.451 2.960
b628978 1.854 0.450 2.103 1.190 2.468 2.593 2.329 0.960 1.377 1.427 3.123 2.639 2.451 2.960
5e237ba 0.450 2.103 2.328 1.377 2.639

@XiangShanRobot
Copy link

[Generated by IPC robot]
commit: d5fb5cf

commit astar copy_and_run coremark gcc gromacs lbm linux mcf microbench milc namd povray wrf xalancbmk
d5fb5cf 1.857 0.449 2.091 1.188 2.476 2.588 2.331 0.956 1.392 1.365 3.124 2.630 2.432 2.954

master branch:

commit astar copy_and_run coremark gcc gromacs lbm linux mcf microbench milc namd povray wrf xalancbmk
c83747b 1.855 0.450 2.103 1.177 2.478 2.594 2.328 0.957 1.398 1.421 3.117 2.655 2.454 2.952
d7a3496 1.855 0.450 2.103 1.177 2.478 2.594 2.332 0.957 1.398 1.421 3.117 2.655 2.454 2.952
5961467 1.855 0.450 2.103 1.177 2.478 2.594 2.333 0.957 1.398 1.421 3.117 2.655 2.454 2.952
4b40434
9eee369 1.854 0.450 2.103 1.190 2.468 2.593 2.330 0.960 1.377 1.427 3.123 2.639 2.451 2.960
006b878 1.854 0.450 2.103 1.190 2.468 2.593 2.330 0.960 1.377 1.427 3.123 2.639 2.451 2.960
7299828 1.854 0.450 2.103 1.190 2.468 2.593 2.330 0.960 1.377 1.427 3.123 2.639 2.451 2.960
0c70648 1.854 0.450 2.103 1.190 2.468 2.593 2.330 0.960 1.377 1.427 3.123 2.639 2.451 2.960
b628978 1.854 0.450 2.103 1.190 2.468 2.593 2.329 0.960 1.377 1.427 3.123 2.639 2.451 2.960
5e237ba 0.450 2.103 2.328 1.377 2.639

@good-circle good-circle marked this pull request as ready for review May 17, 2024 02:56
@good-circle good-circle requested a review from linjuanZ May 17, 2024 02:56
@good-circle good-circle changed the title New vlsu New out-of-order vlsu for better performance May 17, 2024
@good-circle good-circle changed the title New out-of-order vlsu for better performance New out-of-order vlsu for better vector performance May 17, 2024
@Anzooooo Anzooooo changed the title New out-of-order vlsu for better vector performance New out-of-order vlsu for better vector performance" May 17, 2024
@weidingliu
Copy link
Contributor

  • Support out-of-order non-Segment Unit-Strdie load/store instructions
  • Support out-of-order non-Segment Stride load/store instructions
  • Support out-of-order non-Segment Order/Unorder Index load/store instructions
  • Use LSQ to ensure memory access order of order index instructions
  • Use FSM to achieve Segment Load/Store instructions, which can ensure segment access order
    
    TODO: Except Segment order index, other segment instructions can execute out-of-order, don't need to use FSM to ensure memory access order.

@Anzooooo Anzooooo changed the title New out-of-order vlsu for better vector performance" New out-of-order vlsu for better vector performance May 17, 2024
@weidingliu weidingliu self-requested a review May 17, 2024 10:34
@XiangShanRobot
Copy link

[Generated by IPC robot]
commit: c11f007

commit astar copy_and_run coremark gcc gromacs lbm linux mcf microbench milc namd povray wrf xalancbmk
c11f007 1.857 0.449 2.091 1.188 2.476 2.588 2.331 0.956 1.392 1.365 3.124 2.630 2.432 2.954

master branch:

commit astar copy_and_run coremark gcc gromacs lbm linux mcf microbench milc namd povray wrf xalancbmk
2316cea 1.855 0.450 2.103 1.177 2.478 2.594 2.328 0.957 1.398 1.421 3.117 2.655 2.454 2.952
e778bb8 1.855 0.450 2.103 1.177 2.478 2.594 2.328 0.957 1.398 1.421 3.117 2.655 2.454 2.952
c83747b 1.855 0.450 2.103 1.177 2.478 2.594 2.328 0.957 1.398 1.421 3.117 2.655 2.454 2.952
d7a3496 1.855 0.450 2.103 1.177 2.478 2.594 2.332 0.957 1.398 1.421 3.117 2.655 2.454 2.952
5961467 1.855 0.450 2.103 1.177 2.478 2.594 2.333 0.957 1.398 1.421 3.117 2.655 2.454 2.952
4b40434 1.855 0.450 2.103 1.177 2.478 2.594 2.328 0.957 1.398 1.421 3.117 2.655 2.454 2.952
9eee369 1.854 0.450 2.103 1.190 2.468 2.593 2.330 0.960 1.377 1.427 3.123 2.639 2.451 2.960
006b878 1.854 0.450 2.103 1.190 2.468 2.593 2.330 0.960 1.377 1.427 3.123 2.639 2.451 2.960
7299828 1.854 0.450 2.103 1.190 2.468 2.593 2.330 0.960 1.377 1.427 3.123 2.639 2.451 2.960
0c70648 1.854 0.450 2.103 1.190 2.468 2.593 2.330 0.960 1.377 1.427 3.123 2.639 2.451 2.960

@Tang-Haojin Tang-Haojin merged commit 9f2c7f7 into master May 21, 2024
4 checks passed
@Tang-Haojin Tang-Haojin deleted the vlsu-merge-master-0504 branch May 21, 2024 01:20
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.

None yet