IP Library › Granted Patent US 9,372,695
Granted Patent B2
US 9,372,695 · App. 13/931,680 · Granted Jun 21, 2016

Optimization of instruction groups across group boundaries

Inventor: Michael K. Gschwind (Chappaqua, NY)
Assignee: GLOBALFOUNDRIES Inc.
G06F9/30145G06F8/41G06F8/433G06F8/443G06F9/3822G06F9/3853G06F9/455
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 9,372,695
App. No.
13/931,680
Granted
Jun 21, 2016
Kind
B2
Abstract

Instructions grouped into instruction groups are optimized across group boundaries. Instruction sequences spanning multiple groups are optimized by retaining information relating to an instruction at the end of one instruction group to be co-optimized with an instruction at the beginning of a subsequent instruction group. This retained information is then used in optimization of one or more instructions of the subsequent group. Optimization may be performed across n group boundaries, where n is equal to two or greater. Additionally, optimization of instructions within a group may be performed, in addition to the optimizations across group boundaries.

Claims (39)

1. A computer program product for facilitating processing in a processing environment, said computer program product comprising:

a non-transitory computer readable storage medium readable by a processing circuit and storing instructions for execution by the processing circuit for performing a method comprising:

obtaining a first group of instructions;

determining whether one or more instructions of the first group of instructions are to be optimized with one or more instructions of a second group of instructions, the determining comprising determining that an instruction of the one or more instructions of the first group of instructions is a start of a spanning optimization sequence of instructions, the spanning optimization sequence of instructions spanning at least the first group of instructions and the second group of instructions;

based on determining that the instruction of the one or more instructions of the first group of instructions is the start of a spanning optimization sequence of instructions, retaining information regarding at least one instruction of the first group of instructions;

based on determining that the one or more instructions of the first group of instructions are to be optimized with one or more instructions of the second group of instructions, performing optimization across the first group of instructions and the second group of instructions, the performing optimization using the retained information; and

executing at least one instruction resulting from performing the optimization.

2. The computer program product of claim 1 , wherein the performing optimization comprises generating at least one internal operation that represents at least a portion of an instruction in the first group of instructions and at least a portion of an instruction in the second group of instructions.

3. The computer program product of claim 1 , wherein the information includes a thread identifier of a thread associated with executing the one or more instructions of the first group of instructions.

4. The computer program product of claim 1 , wherein the determining comprises:

checking whether the one or more instructions of the first group of instructions is associated with a same thread of execution as the one or more instructions of the second group of instructions; and

preventing optimization to be performed across the first group of instructions and the second group of instructions based on the checking indicating different threads of execution are being used.

5. The computer program product of claim 1 , wherein the method further comprises performing optimization within the first group of instructions, wherein optimization is performed within the first group of instructions and across the first group of instructions and the second group of instructions.

6. The computer program product of claim 1 , wherein the performing optimization comprises using one or more templates to perform the optimization.

7. The computer program product of claim 1 , wherein the optimization is performed at decode time.

8. A computer system for facilitating processing in a processing environment, said computer system comprising:

a memory; and

a processor in communications with the memory, wherein the computer system is configured to perform a method, said method comprising:

obtaining a first group of instructions;

determining whether one or more instructions of the first group of instructions are to be optimized with one or more instructions of a second group of instructions, the determining comprising determining that an instruction of the one or more instructions of the first group of instructions is a start of a spanning optimization sequence of instructions, the spanning optimization sequence of instructions spanning at least the first group of instructions and the second group of instructions;

based on determining that the instruction of the one or more instructions of the first group of instructions is the start of a spanning optimization sequence of instructions, retaining information regarding at least one instruction of the first group of instructions;

based on determining that the one or more instructions of the first group of instructions are to be optimized with one or more instructions of the second group of instructions, performing optimization across the first group of instructions and the second group of instructions, the performing optimization using the retained information; and

executing at least one instruction resulting from performing the optimization.

9. The computer system of claim 8 , wherein the performing optimization comprises generating at least one internal operation that represents at least a portion of an instruction in the first group of instructions and at least a portion of an instruction in the second group of instructions.

10. The computer system of claim 8 , wherein the information includes a thread identifier of a thread associated with executing the one or more instructions of the first group of instructions.

11. The computer system of claim 8 , wherein the determining comprises:

checking whether the one or more instructions of the first group of instructions is associated with a same thread of execution as the one or more instructions of the second group of instructions; and

preventing optimization to be performed across the first group of instructions and the second group of instructions based on the checking indicating different threads of execution are being used.

12. The computer system of claim 8 , wherein the method further comprises performing optimization within the first group of instructions, wherein optimization is performed within the first group of instructions and across the first group of instructions and the second group of instructions.

13. The computer system of claim 8 , wherein the optimization is performed at decode time.

14. A method of facilitating processing in a processing environment, said method comprising:

obtaining, by a processor, a first group of instructions;

determining whether one or more instructions of the first group of instructions are to be optimized with one or more instructions of a second group of instructions, the determining comprising determining that an instruction of the one or more instructions of the first group of instructions is a start of a spanning optimization sequence of instructions, the spanning optimization sequence of instructions spanning at least the first group of instructions and the second group of instructions;

based on determining that the instruction of the one or more instructions of the first group of instructions is the start of a spanning optimization sequence of instructions, retaining information regarding at least one instruction of the first group of instructions;

based on determining that the one or more instructions of the first group of instructions are to be optimized with one or more instructions of the second group of instructions, performing optimization across the first group of instructions and the second group of instructions, the performing optimization using the retained information; and

executing at least one instruction resulting from performing the optimization.

15. The method of claim 14 , wherein the determining comprises:

checking whether the one or more instructions of the first group of instructions is associated with a same thread of execution as the one or more instructions of the second group of instructions; and

preventing optimization to be performed across the first group of instructions and the second group of instructions based on the checking indicating different threads of execution are being used.

Assignments (6)
RELEASE OF SECURITY INTEREST Recorded May 12, 2021
From: WILMINGTON TRUST, NATIONAL ASSOCIATION
To: GLOBALFOUNDRIES U.S. INC.
Reel/Frame 056987/0001 →
RELEASE OF SECURITY INTEREST Recorded Nov 20, 2020
From: WILMINGTON TRUST, NATIONAL ASSOCIATION
To: GLOBALFOUNDRIES INC.
Reel/Frame 054636/0001 →
SECURITY AGREEMENT Recorded Nov 29, 2018
From: GLOBALFOUNDRIES INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION
Reel/Frame 049490/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 5, 2015
From: GLOBALFOUNDRIES U.S. 2 LLC; GLOBALFOUNDRIES U.S. INC.
To: GLOBALFOUNDRIES INC.
Reel/Frame 036779/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 3, 2015
From: INTERNATIONAL BUSINESS MACHINES CORPORATION
To: GLOBALFOUNDRIES U.S. 2 LLC
Reel/Frame 036550/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 28, 2013
From: GSCHWIND, MICHAEL K.
To: INTERNATIONAL BUSINESS MACHINES CORPORATION
Reel/Frame 030715/0307 →
Continuity (1)
Related Publication 20150006866A1 · Jan 1, 2015