backend, rename: support move elimination (#920)
* 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
Showing
想要评论请 注册 或 登录