• Y
    backend, rename: support move elimination (#920) · 8b8e745d
    YikeZhou 提交于
    * Bundle, Rename: Add some comments
    FreeList, RenameTable: Comment out unused variables
    
    * refcnt: Implement AdderTree for reference counter
    
    * build.sc: add testOne method for unit test
    
    * AdderTest: add testbench for Adder (passed)
    
    * AdderTree: Add testbench for AdderTree (passed)
    
    * ReferenceCounter: implement a 2-bit counter
    
    * Rename: remove redundant code
    
    * Rename: prepared for move elimination [WIP]
    
    * Roq: add eliminated move bit in roq entry;
      label elim move inst as writebacked
    AlternativeFreeList: new impl for int free list
    Rename: change io of free list
    Dispatch1: (todo) not send move to intDq
    Bundle: add eliminatedMove bit in roqCommitInfo, uop and debugio
    ReferenceCounter: add debug print msg
    
    * Dispatch1: [BUG FIX] not send move inst to IntDq
    
    * DecodeUnit: [BUG FIX] differentiate li from mv
    
    * Bug fix:
      1. Dispatch1: should not label pdest of move as busy in busy table
      2. Rename: use psrc0 to index bit vec isMax
      3. AlternativeFreeList: fix maxVec calculation logic and ref counter
         increment logic
    Besides, more debug info and assertions were added.
    
    * AlternativeFreeList Bug Fix:
      1. add redirect input - shouldn't allocate reg when redirect is
         valid
      2. handle duplicate preg in roqCommits in int free list
    
    * AlternativeFreeList: Fix value assignment race condition
    
    * Rename: Fix value assignment race condition too
    
    * RenameTable: refactor spec/arch table write process
    
    * Roq: Fix debug_exuData of move(addi) instruction
      (it was trash data before because move needn't enter exu)
    
    * Rename: change intFreeList's redirect process
      (by setting headPtr back) and flush process
    
    * ME: microbench & coremark & linux-hello passed
      1. DecodeUnit: treat `mv x,x` inst as non-move
      2. AlternativeFreeList: handle duplicate walk req correctly
      3. Roq: fix debug_exuData bug (make sure writeback that updates
    debug_exuData happens before ME instruction in program order)
    
    * AlternativeFreeList: License added
    build.sc: remove unused config
    Others: comments added
    
    * package rename: remove unused modules
    
    * Roq: Replace debug_prf with a cleaner fix method
    
    * Disp1/AltFL/Rename: del unnecessary white spaces
    
    * build.sc: change stack size
    AlternativeFreeList: turn off assertions
    
    * build.sc: change stack size for test
    8b8e745d
CtrlBlock.scala 16.6 KB