发明名称 Microprocessor that refrains from executing a mispredicted branch in the presence of an older unretired cache-missing load instruction
摘要 A pipelined out-of-order execution in-order retire microprocessor includes a branch predictor that predicts a target address of a branch instruction, a fetch unit that fetches instructions at the predicted target address, and an execution unit that: resolves a target address of the branch instruction and detects that the predicted and resolved target addresses are different; determines whether there is an unretired instruction that must be corrected and that is older in program order than the branch instruction, in response to detecting that the predicted and resolved target addresses are different; execute the branch instruction by flushing instructions fetched at the predicted target address and causing the fetch unit to fetch from the resolved target address, if there is not an unretired instruction that must be corrected and that is older in program order than the branch instruction; and otherwise, refrain from executing the branch instruction.
申请公布号 US8909908(B2) 申请公布日期 2014.12.09
申请号 US200912582975 申请日期 2009.10.21
申请人 VIA Technologies, Inc. 发明人 Hooker Rodney E.;Col Gerard M.;Pogor Bryan Wayne
分类号 G06F9/30;G06F9/38 主分类号 G06F9/30
代理机构 代理人 Davis E. Alan;Huffman James W.
主权项 1. A pipelined out-of-order execution in-order retire microprocessor, comprising: a cache memory; a branch predictor, configured to predict a target address of a branch instruction; a fetch unit, coupled to the branch predictor, configured to fetch instructions at the predicted target address; and an execution unit, coupled to the fetch unit, configured to: resolve a target address of the branch instruction and detect that the predicted and resolved target addresses are different;determine whether there is an unretired load instruction that missed in the cache memory and that is older in program order than the branch instruction, in response to detecting that the predicted and resolved target addresses are different;execute the branch instruction by flushing instructions fetched at the predicted target address and causing the fetch unit to fetch from the resolved target address, if there is not an unretired load instruction that missed in the cache memory and that is older in program order than the branch instruction; andrefrain from executing the branch instruction, if there is an unretired load instruction older than the branch instruction in program order and that missed in the cache memory; wherein the microprocessor further comprises a pipeline having a top portion, wherein the top portion includes the cache memory, the branch predictor and the fetch unit and excludes the execution unit; wherein the microprocessor is configured to: refrain from retiring the mispredicted branch instruction as resolved; andreplay the load instruction and the branch instruction without re-fetching them from the cache memory and without re-processing them in the top portion of the pipeline.
地址 New Taipei TW