Claims Analysis
Total Claims: 23
Claim 1
Independent Claim
220 words
A target finder for predicting a branch target address for a pipelined processor, the branch target address being a target for a branch instruction, an address of the branch instruction being within a current block, the current block having a predetermined blocksize and starting and ending at a multiple of the predetermined blocksize, the current block being identified by a current block number, the target finder comprising: a finder entry which comprises: a predicted target sub-address, the predicted target sub-address being an address within a target block, the target block having the predetermined blocksize and starting and ending at a multiple of the predetermined blocksize; a block encoding indicating if the target block is the current block, a previous block, or a next block, the previous block having the predetermined blocksize and starting and ending at a multiple of the predetermined blocksize, the next block having the predetermined blocksize and starting and ending at a multiple of the predetermined blocksize; and a target generator, receiving the finder entry, for generating a predicted target address from the block encoding and the predicted target sub-address, the predicted target sub-address being an address within the target block encoded by the block encoding, whereby the predicted target address is generated from the predicted target sub-address and the block encoding stored in the finder entry.
Claim 2
Dependent Claim
220 words
A target finder for predicting a branch target address for a pipelined processor, the branch target address being a target for a branch instruction, an address of the branch instruction being within a current block, the current block having a predetermined blocksize and starting and ending at a multiple of the predetermined blocksize, the current block being identified by a current block number, the target finder comprising: a finder entry which comprises: a predicted target sub-address, the predicted target sub-address being an address within a target block, the target block having the predetermined blocksize and starting and ending at a multiple of the predetermined blocksize; a block encoding indicating if the target block is the current block, a previous block, or a next block, the previous block having the predetermined blocksize and starting and ending at a multiple of the predetermined blocksize, the next block having the predetermined blocksize and starting and ending at a multiple of the predetermined blocksize; and a target generator, receiving the finder entry, for generating a predicted target address from the block encoding and the predicted target sub-address, the predicted target sub-address being an address within the target block encoded by the block encoding, whereby the predicted target address is generated from the predicted target sub-address and the block encoding stored in the finder entry.
Claim 3
Dependent Claim
168 words
The target finder of claim 1 wherein the target generator comprises: means for forming a next block number of the next block and a previous block number of the previous block from the current block number; multiplexing means for selecting as an outputted block number the current block number if the block encoding indicates that the target block is the current block, the multiplexing means selecting as the outputted block number the next block number if the block encoding indicates that the target block is the next block, the multiplexing means selecting as the outputted block number the previous block number if the block encoding indicates that the target block is the previous block; and means for generating a predicted target address from the outputted block number and the predicted target sub-address, the predicted target sub-address being an address within a block having the outputted block number, whereby the predicted target address is generated from the predicted target sub-address and the block encoding stored in the finder entry.
Claim 4
Dependent Claim
79 words
The target finder of claim 2 wherein the previous block ends at the start of the current block and the next block starts at the end of the current block, and wherein the means for forming comprises an incrementer for incrementing the current block number to generate the next block number of the next block, the means for forming further comprising a decrementer for decrementing the current block number to generate the previous block number of the previous block.
Claim 5
Dependent Claim
111 words
The target finder of claim 1 further predicting an outcome of the branch instruction, the finder entry further comprising: an outcome prediction of the branch instruction, the outcome prediction indicating if the branch instruction is predicted to be taken or not taken, the pipelined processor fetching a target instruction at the predicted target address if the outcome prediction is to be taken, the pipelined processor fetching a sequential instruction if the outcome prediction is not taken, the sequential instruction immediately following the branch instruction, whereby the target instruction is fetched if the outcome prediction is to be taken, while the sequential instruction is fetched if the outcome prediction is not taken.
Claim 6
Dependent Claim
66 words
The target finder of claim 2 wherein the next block number and the previous block number are formed by the target generator while the branch instruction is being read out of a cache and the predicted target sub-address and the block encoding are being read out of the target finder, whereby the branch instruction and the predicted target address are available at substantially the same time.
Claim 7
Dependent Claim
73 words
The target finder of claim 2 wherein the next block number and the previous block number are formed by the target generator while the branch instruction is being read out of a cache and the predicted target sub-address and the block encoding are being read out of the target finder during the same processor clock period, whereby the branch instruction and the predicted target address are available during the same processor clock period.
Claim 8
Dependent Claim
98 words
The target finder of claim 6 further comprising: resolving means for updating the target finder entry when the branch instruction is resolved by the pipelined processor, the resolving means updating the predicted target sub-address with a sub-address portion of an actual target address generated by execution of the branch instruction by the pipelined processor, and updating the block encoding with an indication of an address of an actual block, the sub-address portion being an address within the actual block, whereby the target finder entry is fault-tolerant, being updated when the branch instruction is executed by the pipelined processor.
Claim 9
Dependent Claim
46 words
The target finder of claim 1 wherein the finder entry is in a target finder array, the target finder array comprising a plurality of finder entries, and wherein a cache comprises a plurality of cache lines, each cache line having at least one corresponding finder entry.
Claim 10
Dependent Claim
25 words
The target finder of claim 8 wherein each cache line comprises a plurality of instructions, and wherein each cache line has a corresponding finder entry.
Claim 11
Dependent Claim
31 words
The target finder of claim 8 wherein the corresponding finder entry is loaded with the predicted target sub-address and the block encoding when each cache line is loaded with an instruction.
Claim 12
Dependent Claim
96 words
The target finder of claim 10 further comprising finder decode means, receiving the instruction when the instruction is being loaded into a cache line, for partially decoding the instruction to determine if the instruction is a branch instruction, the finder decode means calculating the predicted target sub-address and the block encoding, the finder decode means loading the predicted target sub-address and the block encoding into the finder entry when the cache line is loaded with the instruction, whereby the finder entry is initialized with a predicted target address when the instruction is loaded into the cache.
Claim 13
Dependent Claim
35 words
The target finder of claim 8 wherein the finder entry further comprises an end byte identifier, the end byte identifier indicating a location within a cache line of a last byte in the branch instruction.
Claim 14
Dependent Claim
71 words
The target finder of claim 1 wherein the finder entry further comprises: register indirect indicating means for indicating that the branch instruction is a register indirect branch instruction, wherein the target address is a value stored in a register, the register indirect indicating means disabling the target generator and signaling the pipelined processor to fetch the value stored in the register, whereby the finder entry includes prediction for register indirect branches.
Claim 15
Dependent Claim
79 words
The target finder of claim 1 wherein the finder entry further comprises: exception indicating means for indicating that the branch instruction is an exception branch instruction, wherein the predicted target sub-address is a portion of an absolute address, the exception indicating means disabling the target generator and signaling the pipelined processor to store state information, the pipelined processor using the portion of an absolute address to generate the target address, whereby the finder entry includes prediction for exception branches.
Claim 16
Dependent Claim
100 words
The target finder of claim 1 wherein the finder entry further comprises: instruction set indicating means for indicating if the branch instruction belongs to a first instruction set, the first instruction set having a first encoding of operations to opcodes, the instruction set indicating means for indicating if the branch instruction belongs to a second instruction set, the second instruction set having a second encoding of operations to opcodes, the first encoding of operations to opcodes being independent from the second encoding of operations to opcodes, whereby the finder entry includes prediction for the instruction set of the branch instruction.
Claim 17
Dependent Claim
49 words
The target finder of claim 1 wherein the finder entry further comprises: emulation entry indicating means for indicating if the branch instruction is an emulation entry instruction, the emulation entry instruction causing the pipelined processor to enter emulation mode, whereby the finder entry includes prediction for emulation-mode-entry branch instructions.
Claim 18
Independent Claim
328 words
A method for predicting a branch target address for a pipelined processor, the method comprising: loading a cache with a branch instruction, an address of the branch instruction being within a current block, the current block having a predetermined blocksize and starting and ending at a multiple of the predetermined blocksize, the current block having a current block number; loading a target finder entry with a predicted target sub-address, the predicted target sub-address being an offset address within a target block, the target block having the predetermined blocksize and starting and ending at a multiple of the predetermined blocksize; loading the target finder entry with a block encoding indicating if the target block is the current block, a previous block, or a next block, the previous block having the predetermined blocksize and starting and ending at a multiple of the predetermined blocksize, the next block having the predetermined blocksize and starting and ending at a multiple of the predetermined blocksize; reading the branch instruction out of the cache and the predicted target sub-address and the block encoding out of the target finder entry; forming a next block number of the next block and a previous block number of the previous block from the current block number; selecting as an outputted block number the current block number if the block encoding indicates that the target block is the current block, selecting as the outputted block number the next block number if the block encoding indicates that the target block is the next block; selecting as the outputted block number the previous block number if the block encoding indicates that the target block is the previous block; and generating a predicted target address from the outputted block number and the predicted target sub-address, the predicted target sub-address being an address within a block having the outputted block number, whereby the predicted target address is generated from the predicted target sub-address and the block encoding stored in the target finder entry.
Claim 19
Independent Claim
328 words
A method for predicting a branch target address for a pipelined processor, the method comprising: loading a cache with a branch instruction, an address of the branch instruction being within a current block, the current block having a predetermined blocksize and starting and ending at a multiple of the predetermined blocksize, the current block having a current block number; loading a target finder entry with a predicted target sub-address, the predicted target sub-address being an offset address within a target block, the target block having the predetermined blocksize and starting and ending at a multiple of the predetermined blocksize; loading the target finder entry with a block encoding indicating if the target block is the current block, a previous block, or a next block, the previous block having the predetermined blocksize and starting and ending at a multiple of the predetermined blocksize, the next block having the predetermined blocksize and starting and ending at a multiple of the predetermined blocksize; reading the branch instruction out of the cache and the predicted target sub-address and the block encoding out of the target finder entry; forming a next block number of the next block and a previous block number of the previous block from the current block number; selecting as an outputted block number the current block number if the block encoding indicates that the target block is the current block, selecting as the outputted block number the next block number if the block encoding indicates that the target block is the next block; selecting as the outputted block number the previous block number if the block encoding indicates that the target block is the previous block; and generating a predicted target address from the outputted block number and the predicted target sub-address, the predicted target sub-address being an address within a block having the outputted block number, whereby the predicted target address is generated from the predicted target sub-address and the block encoding stored in the target finder entry.
Claim 20
Dependent Claim
29 words
The method of claim 17 wherein the previous block ends at the start of the current block and the next block starts at the end of the current block.
Claim 21
Dependent Claim
113 words
The method of claim 18 further predicting an outcome of the branch instruction, the method further comprising the steps of: loading the target finder entry with an outcome prediction of the branch instruction, the outcome prediction indicating if the branch instruction is predicted to be taken or not taken; fetching a target instruction at the predicted target address if the outcome prediction is to be taken; and fetching a sequential instruction if the outcome prediction is not taken, the sequential instruction immediately following the branch instruction, whereby the target instruction is fetched if the outcome prediction is to be taken, while the sequential instruction is fetched if the outcome prediction is not taken.
Claim 22
Dependent Claim
69 words
The method of claim 18 wherein the next block number and the previous block number are formed while the branch instruction is being read out of the cache and the predicted target sub-address and the block encoding are being read out of the target finder entry during the same processor clock period, whereby the branch instruction and the predicted target address are available during the same processor clock period.
Claim 23
Dependent Claim
94 words
The method of claim 18 further comprising the step of: updating the target finder entry when the branch instruction is resolved by the pipelined processor, updating the predicted target sub-address with a sub-address portion of an actual target address generated by execution of the branch instruction by the pipelined processor, and updating the block encoding with an indication of an address of an actual block, the sub-address portion being an address within the actual block, whereby the target finder entry is fault-tolerant, being updated when the branch instruction is executed by the pipelined processor.