IP Library Granted Patent US 10,007,522
Granted Patent B2
US 10,007,522 · App. 14/282,290 · Granted Jun 26, 2018

System and method for selectively allocating entries at a branch target buffer

View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 10,007,522
App. No.
14/282,290
Granted
Jun 26, 2018
Kind
B2
Abstract

A branch instruction and a corresponding branch instruction address are received at a data processing system. A first value is received and is compared to a portion of the branch instruction address. An entry at a branch target buffer corresponding to the branch instruction is selectively allocated based on a result of the comparing.

Claims (45)

1. A data processing system, comprising:

a processor to execute processor instructions;

a branch target buffer having a plurality of entries, each entry to store a branch instruction address and a corresponding branch target address;

programmable storage circuitry to store a first value, the programmable storage circuitry distinct from the plurality of entries of the branch target buffer; and

control circuitry to determine whether to create an entry at the branch target buffer corresponding to a first branch instruction based on comparing the first value to a portion of a branch instruction address of the first branch instruction, wherein the control circuitry is further configured to compare the first value and the portion of a branch instruction address for equality in response to one or more indicator control bits stored in a control register of the programmable storage circuitry having a first value and for inequality in response to the one or more indicator control bits having a second value.

2. A data processing system, comprising:

a processor to execute processor instructions;

a branch target buffer having a plurality of entries, each entry to store a branch instruction address and a corresponding branch target address;

programmable storage circuitry to store a first value, the programmable storage circuitry distinct from the plurality of entries of the branch target buffer; and

control circuitry to determine whether to create an entry at the branch target buffer corresponding to a first branch instruction based on comparing the first value to a portion of a branch instruction address of the first branch instruction and one or more indicator control bits stored in a control register of the programmable control storage circuitry,

wherein determining whether to create an entry at the branch target buffer corresponding to the first branch instruction based on comparing the first value to the portion of the branch instruction address of the first branch instruction further comprises creating the entry based on determining the first value is equal to a value represented by the portion of the branch instruction address when the one or more indicator control bits have a first indicator value and based on determining that the branch target buffer does not include an existing entry corresponding to the first branch instruction.

3. The system of claim 1 , wherein the control register includes a randomize indicator, wherein assertion of the randomize indicator causes the control circuitry to generate the first value.

4. The system of claim 1 , wherein the programmable storage circuitry is further to store a second value specifying a number of bits to represent the first value.

5. The system of claim 1 , wherein the first value and the portion of the branch instruction address each includes four or fewer bits.

6. The system of claim 2 , wherein determining whether to create an entry at the branch target buffer corresponding to the first branch instruction based on comparing the first value to the portion of the branch instruction address of the first branch instruction further comprises creating the entry based on determining the first value is not equal to a value represented by the portion of the branch instruction address when the one or more indicator control bits have a second indicator value and based on determining that the branch target buffer does not include an existing entry corresponding to the first branch instruction.

7. The system of claim 6 , wherein the control register includes a randomize indicator at the programmable storage circuitry, wherein assertion of the randomize indicator causes the control circuitry to generate the first value.

8. The system of claim 6 , wherein the programmable storage circuitry is further to store a second value specifying a number of bits to represent the first value.

9. The system of claim 6 , wherein the first value and the portion of the branch instruction address each includes four or fewer bits.

10. A method comprising:

receiving, by a processor, a branch instruction and a corresponding branch instruction address;

receiving at control circuitry a first value stored in programmable storage circuitry;

comparing, by the control circuitry, the first value to a portion of the branch instruction address; and

determining, by the control circuitry, whether to create an entry at a branch target buffer corresponding to the branch instruction based on a result of the comparing and one or more indicator control bits stored in a control register of the programmable control storage circuitry,

wherein determining whether to create an entry at the branch target buffer corresponding to the branch instruction based on a result of the comparing and the one or more indicator control bits further comprises creating the entry in response to determining the first value is not equal to the portion of the branch instruction address when the one or more indicator control bits have a first indicator value and based on determining that the branch target buffer does not include an existing entry corresponding to the branch instruction.

11. The method of claim 10 , wherein determining whether to create an entry at the branch target buffer corresponding to the branch instruction based on a result of the comparing further comprises creating the entry in response to determining the first value is equal to the portion of the branch instruction address when the one or more indicator control bits have a second indicator value and based on determining that the branch target buffer does not include an existing entry corresponding to the branch instruction.

12. The method of claim 10 , wherein comparing further comprises comparing a predetermined number of bits of the first value to the portion of the branch instruction address, the number of bits specified by a second value at the programmable storage circuitry.

13. The method of claim 10 , wherein the first value is a random value generated in response to assertion of randomize indicator at the programmable storage location.

14. The method of claim 10 , wherein the first value and the portion of the branch instruction address each includes four or fewer bits.

15. The method of claim 10 , wherein the programmable storage circuitry is distinct from the plurality of entries.

16. A method comprising:

receiving, by a processor, a branch instruction and a corresponding branch instruction address;

receiving at control circuitry a first value stored in a programmable storage circuitry;

comparing, by the control circuitry, the first value to a portion of the branch instruction address; and

determining, by the control circuitry, whether to create an entry at a branch target buffer corresponding to the branch instruction based on a result of the comparing, wherein comparing further comprises comparing for equality in response to one or more indicator control bits stored in a control register of the programmable storage circuitry having a first value or comparing for inequality in response to the one or more indicator control bits having a second value.

17. The method of claim 16 , wherein comparing further comprises comparing a predetermined number of bits of the first value to the portion of the branch instruction address, the number of bits specified by a second value at the programmable storage circuitry.

18. The method of claim 16 , wherein the first value is a random value generated in response to assertion of a randomize indicator at the programmable storage circuitry.

19. The method of claim 16 , wherein the first value and the portion of the branch instruction address each includes four or fewer bits.

20. The method of claim 16 , wherein the programmable storage circuitry is distinct from the plurality of entries.

21. A branch target buffer, comprising:

a plurality of entries, each entry including storage locations to store a branch instruction address and a branch target address corresponding to the branch instruction;

an allocation control register to store a first value; and

control circuitry to determine whether to create a first entry of the plurality of entries corresponding to a first branch instruction in response to comparing the first value from said allocation control register to a portion of an instruction address of the first branch instruction, wherein the allocation control register further includes one or more indicator control bits, and wherein comparing further comprises comparing for equality in response to the one or more indicator control bits having a first value or comparing for inequality in response to the one or more indicator control bits having a second value.

22. The branch target buffer of claim 21 , wherein the allocation control register further includes a second value, the second value indicating a number of bits of the first value to compare with the portion of the branch instruction address.

23. The branch target buffer of claim 21 , wherein the allocation control register further includes a randomized control bit, and wherein the first value is a random value generated in response to assertion of the randomized control bit.

24. The branch target buffer of claim 21 , wherein the allocation control register is distinct from the plurality of entries.

Assignments (26)
CORRECTIVE ASSIGNMENT TO CORRECT THE REMOVE APPLICATION 11759915 AND REPLACE IT WITH APPLICATION 11759935 PREVIOUSLY RECORDED ON REEL 040925 FRAME 0001. ASSIGNOR(S) HEREBY CONFIRMS THE RELEASE OF SECURITY INTEREST. Recorded Feb 17, 2020
From: MORGAN STANLEY SENIOR FUNDING, INC.
To: NXP, B.V. F/K/A FREESCALE SEMICONDUCTOR, INC.
Reel/Frame 052917/0001 →
CORRECTIVE ASSIGNMENT TO CORRECT THE REMOVE APPLICATION 11759915 AND REPLACE IT WITH APPLICATION 11759935 PREVIOUSLY RECORDED ON REEL 040928 FRAME 0001. ASSIGNOR(S) HEREBY CONFIRMS THE RELEASE OF SECURITY INTEREST. Recorded Jan 17, 2020
From: MORGAN STANLEY SENIOR FUNDING, INC.
To: NXP B.V.
Reel/Frame 052915/0001 →
CORRECTIVE ASSIGNMENT TO CORRECT THE REMOVE APPLICATION 12298143 PREVIOUSLY RECORDED ON REEL 042985 FRAME 0001. ASSIGNOR(S) HEREBY CONFIRMS THE SECURITY AGREEMENT SUPPLEMENT. Recorded Oct 22, 2019
From: NXP B.V.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 051029/0001 →
CORRECTIVE ASSIGNMENT TO CORRECT THE REMOVE APPLICATION 12298143 PREVIOUSLY RECORDED ON REEL 039361 FRAME 0212. ASSIGNOR(S) HEREBY CONFIRMS THE SECURITY AGREEMENT SUPPLEMENT. Recorded Oct 22, 2019
From: NXP B.V.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 051029/0387 →
CORRECTIVE ASSIGNMENT TO CORRECT THE REMOVE APPLICATION 12298143 PREVIOUSLY RECORDED ON REEL 038017 FRAME 0058. ASSIGNOR(S) HEREBY CONFIRMS THE SECURITY AGREEMENT SUPPLEMENT. Recorded Oct 22, 2019
From: NXP B.V.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 051030/0001 →
CORRECTIVE ASSIGNMENT TO CORRECT THE REMOVE APPLICATION 12298143 PREVIOUSLY RECORDED ON REEL 042762 FRAME 0145. ASSIGNOR(S) HEREBY CONFIRMS THE SECURITY AGREEMENT SUPPLEMENT. Recorded Oct 22, 2019
From: NXP B.V.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 051145/0184 →
RELEASE OF SECURITY INTEREST Recorded Sep 10, 2019
From: MORGAN STANLEY SENIOR FUNDING, INC.
To: NXP B.V.
Reel/Frame 050745/0001 →
RELEASE OF SECURITY INTEREST Recorded Sep 10, 2019
From: MORGAN STANLEY SENIOR FUNDING, INC.
To: NXP B.V.
Reel/Frame 050744/0097 →
CORRECTIVE ASSIGNMENT TO CORRECT THE REMOVE APPLICATION 12681366 PREVIOUSLY RECORDED ON REEL 038017 FRAME 0058. ASSIGNOR(S) HEREBY CONFIRMS THE SECURITY AGREEMENT SUPPLEMENT. Recorded May 9, 2017
From: NXP B.V.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 042985/0001 →
CORRECTIVE ASSIGNMENT TO CORRECT THE REMOVE APPLICATION 12681366 PREVIOUSLY RECORDED ON REEL 039361 FRAME 0212. ASSIGNOR(S) HEREBY CONFIRMS THE SECURITY AGREEMENT SUPPLEMENT. Recorded May 9, 2017
From: NXP B.V.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 042762/0145 →
CORRECTIVE ASSIGNMENT TO CORRECT THE NATURE OF CONVEYANCE PREVIOUSLY RECORDED AT REEL: 040626 FRAME: 0683. ASSIGNOR(S) HEREBY CONFIRMS THE MERGER AND CHANGE OF NAME EFFECTIVE NOVEMBER 7, 2016. Recorded Jan 12, 2017
From: NXP SEMICONDUCTORS USA, INC. (MERGED INTO); FREESCALE SEMICONDUCTOR, INC. (UNDER)
To: NXP USA, INC.
Reel/Frame 041414/0883 →
CHANGE OF NAME Recorded Nov 16, 2016
From: FREESCALE SEMICONDUCTOR INC.
To: NXP USA, INC.
Reel/Frame 040626/0683 →
RELEASE OF SECURITY INTEREST Recorded Nov 7, 2016
From: MORGAN STANLEY SENIOR FUNDING, INC.
To: NXP B.V.
Reel/Frame 040928/0001 →
RELEASE OF SECURITY INTEREST Recorded Sep 21, 2016
From: MORGAN STANLEY SENIOR FUNDING, INC.
To: NXP, B.V., F/K/A FREESCALE SEMICONDUCTOR, INC.
Reel/Frame 040925/0001 →
CORRECTIVE ASSIGNMENT TO CORRECT THE REMOVE APPLICATION 14/258,829 AND REPLACE ITWITH 14/258,629 PREVIOUSLY RECORDED ON REEL 037444 FRAME 0082. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT AND ASSUMPTION OFSECURITY INTEREST IN PATENTS. Recorded Aug 10, 2016
From: CITIBANK, N.A.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 039639/0332 →
CORRECTIVE ASSIGNMENT OF INCORRECT APPLICATION 14/258,829 PREVIOUSLY RECORDED ON REEL 037444 FRAME 0109. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT AND ASSUMPTION OF SECURITY INTEREST IN PATENTS. Recorded Aug 10, 2016
From: CITIBANK, N.A.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 039639/0208 →
CORRECTIVE ASSIGNMENT TO CORRECT THE REMOVE APPLICATION 12092129 PREVIOUSLY RECORDED ON REEL 038017 FRAME 0058. ASSIGNOR(S) HEREBY CONFIRMS THE SECURITY AGREEMENT SUPPLEMENT. Recorded Jul 14, 2016
From: NXP B.V.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 039361/0212 →
SUPPLEMENT TO THE SECURITY AGREEMENT Recorded Jun 16, 2016
From: FREESCALE SEMICONDUCTOR, INC.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 039138/0001 →
SECURITY AGREEMENT SUPPLEMENT Recorded Mar 7, 2016
From: NXP B.V.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 038017/0058 →
ASSIGNMENT AND ASSUMPTION OF SECURITY INTEREST IN PATENTS Recorded Jan 5, 2016
From: CITIBANK, N.A.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 037444/0109 →
ASSIGNMENT AND ASSUMPTION OF SECURITY INTEREST IN PATENTS Recorded Jan 5, 2016
From: CITIBANK, N.A.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 037444/0082 →
PATENT RELEASE Recorded Dec 21, 2015
From: CITIBANK, N.A., AS COLLATERAL AGENT
To: FREESCALE SEMICONDUCTOR, INC.
Reel/Frame 037357/0903 →
SUPPLEMENT TO IP SECURITY AGREEMENT Recorded Aug 1, 2014
From: FREESCALE SEMICONDUCTOR, INC.
To: CITIBANK, N.A., AS NOTES COLLATERAL AGENT
Reel/Frame 033462/0293 →
SUPPLEMENT TO IP SECURITY AGREEMENT Recorded Aug 1, 2014
From: FREESCALE SEMICONDUCTOR, INC.
To: CITIBANK, N.A., AS NOTES COLLATERAL AGENT
Reel/Frame 033462/0267 →
SUPPLEMENT TO IP SECURITY AGREEMENT Recorded Aug 1, 2014
From: FREESCALE SEMICONDUCTOR, INC.
To: CITIBANK, N.A., AS NOTES COLLATERAL AGENT
Reel/Frame 033460/0337 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 20, 2014
From: SCOTT, JEFFREY W.; MOYER, WILLIAM C.
To: FREESCALE SEMICONDUCTOR, INC.
Reel/Frame 032931/0112 →