IP Library Granted Patent US 8,458,447
Granted Patent B2
US 8,458,447 · App. 13/162,835 · Granted Jun 4, 2013

Branch target buffer addressing in a data processor

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 8,458,447
App. No.
13/162,835
Granted
Jun 4, 2013
Kind
B2
Abstract

A data processor includes a branch target buffer (BTB) having a plurality of BTB entries grouped in ways. The BTB entries in one of the ways include a short tag address and the BTB entries in another one of the ways include a full tag address.

Claims (55)

1. A data processor comprising:

a branch target buffer (BTB) including a plurality of BTB entries grouped in ways, wherein the BTB entries in one of the ways include a short tag address and the BTB entries in another one of the ways include a full tag address; and

a page address buffer that includes entries for page address portions of a plurality of previously-received branch instructions in relation to the short tag address;

wherein the entries in the BTB that include the short tag address further include a select field that is used to select one of the entries in a page address buffer.

2. The processor of claim 1 , further comprising:

the BTB entries in one of the ways include a short target address and the BTB entries in another one of the ways include a full target address.

3. The processor of claim 1 , further comprising:

a control and interface unit configured to:

keep track of a number of branch instruction entries allocated in the BTB that are on the same page;

maintain a same page status counter to indicate a number of the previously-received branch instructions that were on the same page;

wherein the BTB allocates an entry in a page address buffer if an entry is not already in the page address buffer when the number of branch instruction entries reaches a threshold number.

4. The processor of claim 1 , further comprising,

the BTB entries include a short target address;

a page target address buffer that includes entries for page address portions of a plurality of previously-received target addresses of branch instructions; and

the BTB entries include a target select field that is used to select one of the entries in the page target address buffer.

5. The processor of claim 2 , wherein:

the BTB is configured to:

for the short target address, concatenate a page address portion of a current branch instruction having a same page address with a selected short target address to determine a branch target address for the instruction.

6. The processor of claim 4 , wherein the BTB is configured to:

concatenate a page address portion of a current branch instruction or previously-received page address portion from the page target address buffer having a same page address with a selected short target address to determine a branch target address for the current branch instruction.

7. A data processor comprising:

a set associative branch target buffer (BTB) array including sets of BTB entries grouped in ways, wherein the BTB entries in the sets of a first one of the ways include a short tag address field and the BTB entries in the sets of a second one of the ways include a full tag address field;

a first comparator configured to receive a short tag address from an incoming instruction and a short tag address from a selected set in the ways that include the short tag address field, the comparator is further configured to output a short way tag match signal that indicates whether the short tag address from the incoming instruction was equal to one of the short tags from the selected set in the ways that include the short tag address field;

a page address buffer configured to store entries that include page addresses from previously received instruction addresses; and

a match indicator select unit configured to receive the entries from the page address buffer and the select field from the selected set in the ways that include the short tag address field; and

wherein the BTB entries in the sets of the first one of the ways include a select field that indicates an entry in a page address buffer for the selected set.

8. The processor of claim 7 , further comprising:

a control and interface unit configured to:

maintain a same page status counter to indicate a number of branch instructions that are on a same page; and

a page address buffer that includes page address entries for the branch instructions that are on the same page.

9. The processor of claim 7 , wherein the number of bits allotted for the short tag address field is one of the group consisting of: less than the number of bits allotted for the full tag address field, and based on a page address of a memory management unit (MMU).

10. The processor of claim 7 , further comprising:

a second comparator configured to receive a full tag address from the incoming instruction and a full tag address from the selected set in the ways that include the full tag address field, the second comparator is further configured to output a long hit way signal indicating whether the full tag address from the incoming instruction was equal to one of the full tag addresses from the selected set in the ways that include the full tag address field.

11. The processor of claim 7 , further comprising:

a logic circuit configured to receive a short way tag match signal from the first comparator and a way page match signal from the match indicator select unit, the logic circuit is further configured to output a short hit way signal indicating whether the page address of the incoming instruction address is already present in the page address buffer.

12. In a processor having a branch target buffer (BTB) including sets of BTB entries grouped in ways, a method comprising:

receiving a branch instruction address;

using an index portion of the instruction address to select one of the sets, wherein the BTB entries in the sets of a first group of the ways include a short tag address portion and the BTB entries in the sets of a second group of the ways include a full tag address portion; and

for the first group of the ways,

determining whether the short tag address portions in the selected set match a tag portion of the branch instruction address;

generating page address match indicators by comparing a page address portion of the instruction address to entries in a page address buffer, wherein the entries in the page address buffer include page addresses from previously-received instruction addresses; and

generating way page matches from the page address match indicators based on select fields of the selected set.

13. The method of claim 12 , further comprising:

for the first group of the ways,

generating hit way signals based on the way tag matches and way page matches; and

generating a way branch target address by concatenating the page address portion of the instruction address with a target address of the selected set.

14. The method of claim 12 , further comprising:

keeping track of a number of branch instruction entries allocated in the BTB that are on the same page; and

allocating an entry in a page address buffer if an entry is not already in the page address buffer when the number of branch instruction entries reaches a threshold number.

15. The method of claim 14 , further comprising:

for the second group of the ways,

generating hit way signals for the selected set by determining whether a page address portion and a tag portion of the instruction address is equal to the full tag address portion of the selected set; and

providing a target address of the selected set as a way branch target address.

16. The method of claim 15 , further comprising:

providing a same page indicator and prediction information with the way branch target address to the processor.

Assignments (24)
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 11759915 AND REPLACE IT WITH APPLICATION 11759935 PREVIOUSLY RECORDED ON REEL 037486 FRAME 0517. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT AND ASSUMPTION OF SECURITY INTEREST IN PATENTS. Recorded Dec 10, 2019
From: CITIBANK, N.A.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 053547/0421 →
RELEASE OF SECURITY INTEREST Recorded Sep 10, 2019
From: MORGAN STANLEY SENIOR FUNDING, INC.
To: NXP B.V.
Reel/Frame 050744/0097 →
RELEASE OF SECURITY INTEREST Recorded Feb 20, 2019
From: MORGAN STANLEY SENIOR FUNDING, INC.
To: NXP B.V.
Reel/Frame 048387/0771 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 20, 2019
From: NXP USA, INC.
To: VLSI TECHNOLOGY LLC
Reel/Frame 048389/0072 →
CORRECTIVE ASSIGNMENT TO CORRECT THE TO CORRECT THE APPLICATION NO. FROM 13,883,290 TO 13,833,290 PREVIOUSLY RECORDED ON REEL 041703 FRAME 0536. ASSIGNOR(S) HEREBY CONFIRMS THE THE ASSIGNMENT AND ASSUMPTION OF SECURITY INTEREST IN PATENTS.. Recorded Feb 20, 2019
From: MORGAN STANLEY SENIOR FUNDING, INC.
To: SHENZHEN XINGUODU TECHNOLOGY CO., LTD.
Reel/Frame 048734/0001 →
CORRECTIVE ASSIGNMENT TO CORRECT THE REMOVE PATENTS 8108266 AND 8062324 AND REPLACE THEM WITH 6108266 AND 8060324 PREVIOUSLY RECORDED ON REEL 037518 FRAME 0292. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT AND ASSUMPTION OF SECURITY INTEREST IN PATENTS. Recorded Feb 1, 2017
From: CITIBANK, N.A.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 041703/0536 →
CORRECTIVE ASSIGNMENT TO CORRECT THE NATURE OF CONVEYANCE PREVIOUSLY RECORDED AT REEL: 040652 FRAME: 0241. ASSIGNOR(S) HEREBY CONFIRMS THE MERGER AND CHANGE OF NAME. Recorded Jan 5, 2017
From: FREESCALE SEMICONDUCTOR, INC.
To: NXP USA, INC.
Reel/Frame 041260/0850 →
MERGER Recorded Nov 8, 2016
From: FREESCALE SEMICONDUCTOR, INC.
To: NXP USA, INC.
Reel/Frame 040652/0241 →
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 →
SUPPLEMENT TO THE SECURITY AGREEMENT Recorded Jun 16, 2016
From: FREESCALE SEMICONDUCTOR, INC.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 039138/0001 →
ASSIGNMENT AND ASSUMPTION OF SECURITY INTEREST IN PATENTS Recorded Jan 13, 2016
From: CITIBANK, N.A.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 037518/0292 →
ASSIGNMENT AND ASSUMPTION OF SECURITY INTEREST IN PATENTS Recorded Jan 12, 2016
From: CITIBANK, N.A.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 037486/0517 →
PATENT RELEASE Recorded Dec 21, 2015
From: CITIBANK, N.A., AS COLLATERAL AGENT
To: FREESCALE SEMICONDUCTOR, INC.
Reel/Frame 037357/0387 →
PATENT RELEASE Recorded Dec 21, 2015
From: CITIBANK, N.A., AS COLLATERAL AGENT
To: FREESCALE SEMICONDUCTOR, INC.
Reel/Frame 037357/0334 →
PATENT RELEASE Recorded Dec 21, 2015
From: CITIBANK, N.A., AS COLLATERAL AGENT
To: FREESCALE SEMICONDUCTOR, INC.
Reel/Frame 037357/0285 →
SECURITY AGREEMENT Recorded Nov 6, 2013
From: FREESCALE SEMICONDUCTOR, INC.
To: CITIBANK, N.A., AS NOTES COLLATERAL AGENT
Reel/Frame 031591/0266 →
SECURITY AGREEMENT Recorded Jun 18, 2013
From: FREESCALE SEMICONDUCTOR, INC.
To: CITIBANK, N.A., AS NOTES COLLATERAL AGENT
Reel/Frame 030633/0424 →
SECURITY AGREEMENT Recorded Jan 31, 2012
From: FREESCALE SEMICONDUCTOR, INC.
To: CITIBANK, N.A., AS COLLATERAL AGENT
Reel/Frame 027621/0928 →
SECURITY AGREEMENT Recorded Jan 31, 2012
From: FREESCALE SEMICONDUCTOR, INC.
To: CITIBANK, N.A., AS COLLATERAL AGENT
Reel/Frame 027622/0477 →
SECURITY AGREEMENT Recorded Jan 31, 2012
From: FREESCALE SEMICONDUCTOR, INC.
To: CITIBANK, N.A., AS COLLATERAL AGENT
Reel/Frame 027622/0075 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 17, 2011
From: TRAN, THANG M.; GIESKE, EDMUND J.; SCHINZLER, MICHAEL B.
To: FREESCALE SEMICONDUCTOR, INC.
Reel/Frame 026453/0163 →