Skip to content

problem of out of order retire #434

@AD738560581

Description

@AD738560581

@mp-17 @suehtamacv Hello,
thank you very much for your open source project, which has brought great help to our team. I see that you have recently updated many small flaws in the past, such as vstart support, tlb support, and support for seg, compress, vrgather and other instructions.However, we have also discovered an ill-considered point. Because ara adopts the strategy of sequential issue and out-of-order retirement, RAR has also become a potential data risk. For example, vdiv v0, v1, v2; vadd v3, v1, v2; vsub v1, v5, v6 code segment, vadd and vdiv are not risky, but it is RAR, vsub, vdiv and vadd are all WAR. However, when vadd is issued, the read_list in main_sequencer will be updated. At this time, vsub builds an adventure with vadd. When vadd retires, the vdiv may not have retired. At this time, vsub can start writing back. If vset is m8, at this time vdiv will read the result written back of vsub.

Therefore, we simply adopt a sequential retirement structure, and use a reorder structure in main_sequencer to ensure that retirement in the scoreboard of main_sequencer is sequential, and the writeback order is not modified, thereby extending the blocking time of the hazard. As in the above example, vadd needs to wait for vdiv to retire before vadd can retire from the scoreboard.

However, this is not necessarily the best way to repair it. If you have completed this part of the repair, can you share it?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions