• W
    mem: reduce refill to use latency (#1401) · 09203307
    William Wang 提交于
    * mem: optimize missq reject to lq timing
    
    DCache replay request is quite slow to generate, as it need to compare
    load address with address in all valid miss queue entries.
    
    Now we delay the usage of replay request from data cache.
    Now replay request will not influence normal execuation flow until
    load_s3 (1 cycle after load_s2, load result writeback to RS).
    
    It is worth mentioning that "select refilling inst for load
    writeback" will be disabled if dcacheRequireReplay in the
    last cycle.
    
    * dcache: compare probe block addr instead of full addr
    
    * mem: do not replay from RS when ldld vio or fwd failed
    
    ld-ld violation or forward failure will let an normal load inst replay
    from fetch. If TLB hit and ld-ld violation / forward failure happens,
    we write back that inst immediately. Meanwhile, such insts will not be
    replayed from rs.
    
    It should fix "mem: optimize missq reject to lq timing"
    
    * mem: fix replay from rs condition
    
    * mem: reduce refill to use latency
    
    This commit update lq entry flag carefully in load_s3 to avoid extra
    refill delay. It will remove the extra refill delay introduced by #1375
    without harming memblock timing.
    
    In #1375, we delayed load refill when dcache miss queue entry fails
    to accept a miss. #1375 exchanges performance for better timing.
    
    * mem: fix rs feedback priority
    
    When dataInvalid && mshrFull, a succeed refill should not cancel
    rs replay.
    09203307
LoadQueue.scala 36.9 KB