IP Library › Granted Patent US 10,817,434
Granted Patent B2
US 10,817,434 · App. 16/225,803 · Granted Oct 27, 2020

Interruptible translation entry invalidation in a multithreaded data processing system

Inventors: Derek E. Williams (Round Rock, TX); Benjamin Herrenschmidt (Lyneham, AU); Cathy May (Ossining, NY); Bradly G. Frey (Austin, TX)
Assignee: International Business Machines Corporation
G06F12/1027G06F9/30058G06F9/3808G06F9/4881G06F9/52G06F12/0815G06F12/0842G06F2212/683
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,817,434
App. No.
16/225,803
Granted
Oct 27, 2020
Kind
B2
Abstract

A processor core among the plurality of processor cores initiates invalidation of translation entries buffered in the plurality of processor cores by executing a translation invalidation instruction in an initiating hardware thread. The processor core also executes, in the initiating hardware thread, a synchronization instruction following the translation invalidation instruction in program order that determines completion of invalidation, at all of the plurality of processor cores, of the translation entries specified by the translation invalidation instruction and draining of any memory referent instructions whose target addresses have been translated by reference to the translation entries. A register is updated to a state based on a result of the determination. The processor core branches execution to re-execute the synchronization instruction based on the state of the register indicating that the translation entries are not invalidated at all of the plurality of processor cores.

Claims (60)

1. A method of invalidating translation entries in a multithreaded data processing system including a plurality of processor cores, the method comprising:

a processor core among the plurality of processor cores initiating invalidation of translation entries buffered in the plurality of processor cores by executing a translation invalidation instruction in an initiating hardware thread;

the processor core executing, in the initiating hardware thread, a synchronization instruction following the translation invalidation instruction in program order that determines completion of invalidation, at all of the plurality of processor cores, of the translation entries specified by the translation invalidation instruction;

updating a register to a state based on a result of the synchronization instruction;

interrupting execution of the initiating hardware thread following execution of the synchronization instruction and before the translation entries specified by the translation invalidation instruction are invalidated at all of the plurality of processor cores; and

the processor core branching execution to re-execute the synchronization instruction based on the state of the register indicating that the translation entries are not invalidated at all of the plurality of processor cores.

2. The method of claim 1 , wherein:

the register is a condition register in the processor core; and

the branching includes executing a conditional branch instruction based on the state in the condition register.

3. The method of claim 2 , wherein:

the synchronization instruction is a first synchronization instruction; and

the processor core ordering execution of subsequent memory referent instructions with respect to the first synchronization instruction through execution of a second synchronization instruction.

4. The method of claim 1 , wherein:

the processor core has an associated coherence agent that issues a synchronization request corresponding to the synchronization instruction on a system fabric; and

the coherence agent communicates a signal utilized to update the register based on a coherence response to the synchronization request.

5. The method of claim 1 , and further comprising the processor core ordering performance of a store request ahead of completion of the synchronization instruction responsive to execution of the synchronization instruction.

6. A processing unit for a multithreaded data processing system including a plurality of processor cores, the processing unit comprising:

a processor core including:

a register;

a translation structure that caches address translations;

a memory management unit that translates effective addresses to real addresses by reference to the translation structure;

an execution unit that executes an initiating hardware thread including, in program order, a translation invalidation instruction, a synchronization instruction, and a branch instruction;

wherein the processor core is configured to perform:

initiating invalidation of translation entries buffered in the plurality of processor cores responsive to execution of the translation invalidation instruction;

determining completion of invalidation, at all of the plurality of processor cores, of the translation entries specified by the translation invalidation instruction responsive to execution of the synchronization instruction;

updating the register to a state based on a result of the synchronization instruction;

interrupting execution of the initiating hardware thread following execution of the synchronization instruction and before the translation entries specified by the translation invalidation instruction are invalidated at all of the plurality of processor cores; and

responsive to execution of the branch instruction, branching execution to re-execute the synchronization instruction based on the state of the register indicating that the translation entries are not invalidated at all of the plurality of processor cores.

7. The processing unit of claim 6 , wherein:

the register is a condition register; and

the branch instruction is a conditional branch instruction based on the state in the condition register.

8. The processing unit of claim 7 , wherein:

the synchronization instruction is a first synchronization instruction; and

the processor core is configured to order execution of subsequent memory referent instructions with respect to the branch instruction responsive to execution of a second synchronization instruction.

9. The processing unit of claim 6 , and further comprising:

a coherence agent, coupled to the processor core, that issues a synchronization request corresponding to the synchronization instruction on a system fabric, wherein the coherence agent communicates to the processor core a signal utilized to update the register based on a coherence response to the synchronization request.

10. The processing unit of claim 6 , wherein the processor core is configured to order performance of a store request ahead of completion of the synchronization instruction responsive to execution of the synchronization instruction.

11. A data processing system including a plurality of processing units according to claim 6 and a system fabric coupling the plurality of processing units.

12. A machine-readable storage device comprising a design structure tangibly embodied in the machine readable-storage device for designing, manufacturing, or testing an integrated circuit, the design structure including:

a processing unit for a multithreaded data processing system including a plurality of processor cores, the processing unit including:

a processor core including:

a register;

a translation structure that caches address translations;

a memory management unit that translates effective addresses to real addresses by reference to the translation structure;

an execution unit that executes an initiating hardware thread including, in program order, a translation invalidation instruction, a synchronization instruction, and a branch instruction;

wherein the processor core is configured to perform:

initiating invalidation of translation entries buffered in the plurality of processor cores responsive to execution of the translation invalidation instruction;

determining completion of invalidation, at all of the plurality of processor cores, of the translation entries specified by the translation invalidation instruction responsive to execution of the synchronization instruction;

updating the register to a state based on a result of the synchronization instruction;

interrupting execution of the initiating hardware thread following execution of the synchronization instruction and before the translation entries specified by the translation invalidation instruction are invalidated at all of the plurality of processor cores; and

responsive to execution of the branch instruction, branching execution to re-execute the synchronization instruction based on the state of the register indicating that the translation entries are not invalidated at all of the plurality of processor cores.

13. The machine-readable storage device of claim 12 , wherein:

the register is a condition register; and

the branch instruction is a conditional branch instruction based on the state in the condition register.

14. The machine-readable storage device of claim 13 , wherein:

the synchronization instruction is a first synchronization instruction; and

the processor core is configured to order execution of subsequent memory referent instructions with respect to the branch instruction responsive to execution of a second synchronization instruction.

15. The machine-readable storage device of claim 12 , the design structure further comprising:

a coherence agent, coupled to the processor core, that issues a synchronization request corresponding to the synchronization instruction on a system fabric, wherein the coherence agent communicates to the processor core a signal utilized to update the register based on a coherence response to the synchronization request.

16. The machine-readable storage device of claim 12 , wherein the processor core is configured to order performance of a store request ahead of completion of the synchronization instruction responsive to execution of the synchronization instruction.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 19, 2018
From: WILLIAMS, DEREK E.; HERRENSCHMIDT, BENJAMIN; MAY, CATHY; FREY, BRADLY G.
To: INTERNATIONAL BUSINESS MACHINES CORPORATION
Reel/Frame 047818/0912 →
Continuity (1)
Related Publication 20200201780A1 · Jun 25, 2020