• Y
    core: add buffers for function units across int/fp (#1590) · 5010f3fb
    Yinan Xu 提交于
    This commit adds a buffer after the function unit that operate across
    the integer block and the floating-point block, such as f2i and i2f.
    
    For example, previously the out.ready of f2i depends on whether
    mul/div/csr/jump has a valid instruction out, since f2i has lower
    priority than them. This ready back-propagates from the integer function
    units to the floating-point function units, and finally to the
    floating-point reservation stations (since f2i is fully pipelined).
    
    We add a buffer after the function unit to break this ready
    back-propagation. It incurs one more cycle of execution latency, but we
    leave it not-fully-optimized for now.
    
    Timing can be further optimized if we separates the int writeback and fp
    writeback in function units. In the current version, the ready of f2i
    affects the ready of f2f pipelines, which is unnecessary. This is the
    future work.
    5010f3fb
Exu.scala 8.3 KB