Patent ID: 9378020
Filing Date: 2016-06-28
CPC Classification: G06F

Claim Text:
1. A computer-implemented method for asynchronous lookahead hierarchical branch prediction using a second-level branch target buffer in a system comprising a first-level branch target buffer, a second-level branch target buffer, a lookaside buffer, and a branch prediction and eviction logic processing circuit, the method comprising: receiving a search request to locate branch prediction information associated with a search address; searching, by the branch prediction and eviction logic processing circuit, for an entry corresponding to the search request in the first-level branch target buffer; based on failing to locate a matching entry in the first-level branch target buffer corresponding to the search request, initiating, by the branch prediction and eviction logic processing circuit, a secondary search to locate a plurality of entries in the second-level branch target buffer having a memory region corresponding to the search request; determining priority information based on the lookaside buffer that collects information about a program execution path indicating locations of the second-level branch target buffer referenced as executed code and indicating locations that were unreferenced as executed code during program execution in a plurality of sub-blocks of a block of entries in the second-level branch target buffer, wherein the lookaside buffer further tracks references between a plurality of segments of the block, wherein the segments group the sub-blocks, and further wherein the lookaside buffer indicates which of the segments were transitioned to and which of the segments of were not transitioned to by each of the segments of the block; and based on locating the entries in the second-level branch target buffer, performing a bulk transfer of the entries from the second-level branch target buffer to the first-level branch target buffer as a sequence of transfers for the block of entries based on the priority information as applied across the segments of the sub-blocks in transferring both the locations that were referenced and the locations that were unreferenced from the block of the second-level branch target buffer.