1. 16 7月, 2022 2 次提交
    • W
      sta: delay sta to rs feedback for 1 cycle (#1637) · 7114a237
      William Wang 提交于
      It should remove dtlb to rs critical path
      7114a237
    • W
      dcache: use arbiter_with_pipereg for replace_pipe_req (#1657) · 069c72f8
      William Wang 提交于
      replace_pipe_req is causing timing problem as vaddr in it is used to
      generate mainpipe block signal. Unfortunately, vaddr from
      replace_pipe_req is selected form all miss queue entries
      (16 by default), which caused timing problem
      
      refill_pipe_req will not be scheduled until dcache main pipe s3 reports
      that replace_pipe_req has been finished. Thus it is legal to add a
      pipe reg for replace_pipe_req
      
      Now ALL mainpipe req candidates come from pipe reg. At the entry of
      main pipe, 1 req is selected from 4 main pipe reqs, and its vaddr is
      used to calcuate set block condition
      069c72f8
  2. 15 7月, 2022 2 次提交
  3. 14 7月, 2022 5 次提交
  4. 13 7月, 2022 3 次提交
    • Y
      dispatch2: optimize slow path and enqPtr matching timing (#1650) · fd09b64a
      Yinan Xu 提交于
      * dpq: add slow path for non-critical registers
      
      This commit separates the data module in Dispatch to slow and fast path.
      Slow path stores the data with a bad timing at Dispatch but a good timing
      at Dispatch2. Thus should benefit the timing at Dispatch, such as the LFST.
      
      For now, we merge the slow and fast data module. Chisel DCE does not
      eliminate the dead registers. We manully merge the two data modules
      for now.
      
      * dpq: optimize timing for enqPtr/deqPtr matching
      
      This commit optimizes the matching timing between enqPtr and deqPtr,
      which is used further for bypassing enqData to deqData.
      
      Now enqOffset and deqPtr/enqPtr matching work in parallel.
      fd09b64a
    • Y
      decode: move the soft-prefetch decoder to rename (#1646) · f025d715
      Yinan Xu 提交于
      This commit moves the decoder of software prefetch instructions to
      the rename stage.
      
      Previously the decoding of software prefetch instructions affects
      the imm gen and causes a long critical path.
      f025d715
    • Y
      utils: optimize OnesMoreThan and XORFold (#1645) · 2a08c787
      Yinan Xu 提交于
      * utils: optimize the timing of OnesMoreThan
      
      * utils: fix XORFold width
      2a08c787
  5. 12 7月, 2022 8 次提交
    • W
      Merge branch 'master' into nanhu-lsu-timing-220706 · 9230a40d
      William Wang 提交于
      9230a40d
    • W
      ldu: set load to use latency to 4 (#1623) · c837faaa
      William Wang 提交于
      This commit adds an extra cycle for load pipeline. It should fix timing problem caused by load pipeline.
      Huge perf loss is expected. Now load data result is sent to rs in load_s3, load may hit hint
      (fastUop.valid) is sent to rs in load_s2.
      
      We add a 3 cycle load to load fast forward data path. There should be enough time to forward
      data inside memory block.
      
      We will refactor code and add a load_s3 module in the future.
      
      BREAKING CHANGE: load pipeline reorginized
      c837faaa
    • Y
      ctrl: optimize freelist timing (#1633) · 66b2c4a4
      Yinan Xu 提交于
      * rat: map all arch registers to zero when init
      
      * freelist: fix stepBack width
      
      * freelist: fix timing of free offset
      66b2c4a4
    • Z
      MissQueue: use FastArbiter for main pipe req (#1639) · 7cd72b71
      zhanglinjuan 提交于
      7cd72b71
    • Y
      jump: delay pc and jalr_target for one cycle (#1640) · 74515c5a
      Yinan Xu 提交于
      74515c5a
    • Y
      ctrl: optimize the timing of dispatch2 stage (#1632) · 1cee9cb8
      Yinan Xu 提交于
      * ctrl: copy dispatch2 to avoid cross-module loops
      
      This commit makes copies of dispatch2 in CtrlBlock to avoid long
      cross-module timing loop paths. Should be good for timing.
      
      * dpq: re-write queue read logic
      
      This commit adds a Reg-Vec to store the queue read data. Since
      most queues read at most the current numRead and the next numRead
      entries, the read timing can be optimized by reading the data one
      cycle earlier.
      1cee9cb8
    • Y
      rs: optimize timing for dispatch and wakeup (#1621) · bcce877b
      Yinan Xu 提交于
      This commit optimizes the timing of reservation stations.
      
      * dispatched uops are latched and bypassed to s1_out
      
      * wakeup from slowPorts are latched and bypassed to s1_data
      
      * rs: optimize allocation selection
      
      Change select policy for allocation. Should avoid issuing the just
      dispatched instructions in some cases.
      
      * rs: disable load balance for load units
      bcce877b
    • Y
      sim,mmio: remove the vga device (#1638) · 613eddad
      Yinan Xu 提交于
      The VGA device may cause assertions in AXI4SlaveModule because it
      may send arbitrary requests to fb (AXI4RAM).
      613eddad
  6. 11 7月, 2022 2 次提交
  7. 10 7月, 2022 1 次提交
    • Y
      core: optimize redirect timing (#1630) · 0dc4893d
      Yinan Xu 提交于
      This commit adds separated redirect registers in ExuBlock and MemBlock.
      They have one cycle latency compared to redirect in CtrlBlock. This will
      help reduce the fanout of redirect registers.
      0dc4893d
  8. 09 7月, 2022 2 次提交
    • Y
      decode: move fusion decoder result Mux to rename (#1631) · 0febc381
      Yinan Xu 提交于
      This commit moves the fusion decoder to both decode and rename stage.
      
      In the decode stage, fusion decoder determines whether the instruction
      pairs can be fused. Valid bits of decode are not affected by fusion
      decoder. This should fix the timing issues of rename.valid.
      
      In the rename stage, some fields are updated according the result of
      fusion decoder. This will bring a minor timing path to both valid and
      other fields in uop in the rename stage. However, since freelist and
      rat have worse timing. This should not cause timing issues.
      0febc381
    • L
      dtlb: replace sram with SyncDataModule (#1627) · e05a24ab
      Lemover 提交于
      * dtlb: replace sram to SyncDataModule, nWays is useless
      
      * itlb: if miss_sameCycle, regnext ptw resp and block tlb check
      
      * dtlb: for normal_entry, when refill, do not need set miss by force
      e05a24ab
  9. 08 7月, 2022 2 次提交
  10. 07 7月, 2022 4 次提交
  11. 06 7月, 2022 9 次提交