• W
    backend,mem: add Store Sets memory dependence predictor (#796) · de169c67
    William Wang 提交于
    * LoadQueue: send stFtqIdx via rollback request
    
    * It will make it possible for setore set to update its SSIT
    
    * StoreSet: setup store set update req
    
    * StoreSet: add store set identifier table (SSIT)
    
    * StoreSet: add last fetched store table (LFST)
    
    * StoreSet: put SSIT into decode stage
    
    * StoreSet: put LFST into dispatch1
    
    * Future work: optimize timing
    
    * RS: store rs now supports delayed issue
    
    * StoreSet: add perf counter
    
    * StoreSet: fix SSIT update logic
    
    * StoreSet: delay LFST update input for 1 cycle
    
    * StoreSet: fix LFST update logic
    
    * StoreSet: fix LFST raddr width
    
    * StoreSet: do not force store in ss issue in order
    
    Classic store set requires store in the same store set issue in seq.
    However, in current micro-architecture, such restrict will lead to
    severe perf lost. We choose to disable it until we find another way
    to fix it.
    
    * StoreSet: support ooo store in the same store set
    
    * StoreSet: fix store set merge logic
    
    * StoreSet: check earlier store when read LFST
    
    * If store-load pair is in the same dispatch bundle, loadWaitBit should
    also be set for load
    
    * StoreSet: increase default SSIT flush period
    
    * StoreSet: fix LFST read logic
    
    * Fix commit c0e541d1
    
    * StoreSet: add StoreSetEnable parameter
    
    * RSFeedback: add source type
    
    * StoreQueue: split store addr and store data
    
    * StoreQueue: update ls forward logic
    
    * Now it supports splited addr and data
    
    * Chore: force assign name for load/store unit
    
    * RS: add rs'support for store a-d split
    
    * StoreQueue: fix stlf logic
    
    * StoreQueue: fix addr wb sq update logic
    
    * AtomicsUnit: support splited a/d
    
    * Parameters: disable store set by default
    
    * WaitTable: wait table will not cause store delay
    
    * WaitTable: recover default reset period to 2^17
    
    * Fix dev-stad merge conflict
    
    * StoreSet: enable storeset
    
    * RS: disable store rs delay logic
    
    CI perf shows that current delay logic will cause perf loss. Disable
    unnecessary delay logic will help.
    
    To be more specific, `io.readyVec` caused the problem. It will be
    updated in future commits.
    
    * RS: opt select logic with load delay (ldWait)
    
    * StoreSet: disable 2-bit lwt
    Co-authored-by: NZhangZifei <zhangzifei20z@ict.ac.cn>
    de169c67
LoadQueue.scala 28.0 KB