• Palmer Dabbelt's avatar
    Merge patch series "RISC-V: Probe for misaligned access speed" · 580253b5
    Palmer Dabbelt authored
    Evan Green <evan@rivosinc.com> says:
    
    The current setting for the hwprobe bit indicating misaligned access
    speed is controlled by a vendor-specific feature probe function. This is
    essentially a per-SoC table we have to maintain on behalf of each vendor
    going forward. Let's convert that instead to something we detect at
    runtime.
    
    We have two assembly routines at the heart of our probe: one that
    does a bunch of word-sized accesses (without aligning its input buffer),
    and the other that does byte accesses. If we can move a larger number of
    bytes using misaligned word accesses than we can with the same amount of
    time doing byte accesses, then we can declare misaligned accesses as
    "fast".
    
    The tradeoff of reducing this maintenance burden is boot time. We spend
    4-6 jiffies per core doing this measurement (0-2 on jiffie edge
    alignment, and 4 on measurement). The timing loop was based on
    raid6_choose_gen(), which uses (16+1)*N jiffies (where N is the number
    of algorithms). By taking only the fastest iteration out of all
    attempts for use in the comparison, variance between runs is very low.
    On my THead C906, it looks like this:
    
    [    0.047563] cpu0: Ratio of byte access time to unaligned word access is 4.34, unaligned accesses are fast
    
    Several others have chimed in with results on slow machines with the
    older algorithm, which took all runs into account, including noise like
    interrupts. Even with this variation, results indicate that in all cases
    (fast, slow, and emulated) the measured numbers are nowhere near each
    other (always multiple factors away).
    
    * b4-shazam-merge:
      RISC-V: alternative: Remove feature_probe_func
      RISC-V: Probe for unaligned access speed
    
    Link: https://lore.kernel.org/r/20230818194136.4084400-1-evan@rivosinc.comSigned-off-by: default avatarPalmer Dabbelt <palmer@rivosinc.com>
    580253b5
Makefile 2.76 KB