IP Library Granted Patent US 12,229,565
Granted Patent B2
US 12,229,565 · App. 18/042,845 · Granted Feb 18, 2025

In-core parallelization in a data processing apparatus and method

Inventors: Syed Ali Mustafa Zaidi (Cambridge, GB); Giacomo Gabrielli (Cambridge, GB)
Assignee: Arm Limited
G06F9/3851G06F9/3016G06F9/4843
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 12,229,565
App. No.
18/042,845
Granted
Feb 18, 2025
Kind
B2
Abstract

A data processing apparatus and a method for processing data are disclosed. The data processing apparatus comprises: multithreaded processing circuitry to perform processing operations of a plurality of micro-threads, each micro-thread operating in a corresponding execution context defining an architectural state. Thread control circuitry collects runtime data indicative of a performance metric relating to the processing operations. Decoder circuitry is responsive to a detach instruction in a first micro-thread of instructions executed in a first execution context defining a first architectural state, the detach instruction specifying an address, to provide detach control signals to the thread control circuitry. When the runtime data meet a parallelization criterion, the thread control circuitry is responsive to the detach control signals to spawn a second micro-thread of instructions executed in a second execution context defining a second architectural state based on the first architectural state, the second micro-thread of instructions comprising a subset of instructions of the first micro-thread of instructions starting at the address.

Claims (38)

1. A data processing apparatus comprising:

multithreaded processing circuitry to perform processing operations of a plurality of micro-threads, each micro-thread operating in a corresponding execution context defining an architectural state;

thread control circuitry to collect runtime data indicative of a performance metric relating to the processing operations; and

decoder circuitry responsive to a detach instruction in a first micro-thread of instructions executed in a first execution context defining a first architectural state, the detach instruction specifying an address, when the runtime data meet a parallelization criterion at a point where the detach instruction is decoded, to provide detach control signals to the thread control circuitry,

wherein the thread control circuitry is responsive to the detach control signals to spawn a second micro-thread of instructions executed in a second execution context defining a second architectural state based on the first architectural state, the second micro-thread of instructions comprising a subset of instructions of the first micro-thread of instructions starting at the address.

2. The data processing apparatus of claim 1 , wherein the address is a first address, the subset of instructions is a first subset of instructions, and the detach instruction further comprises a second address, and

wherein when the runtime data meet the parallelization criterion, the thread control circuitry is responsive to the detach control signals to cause the first micro-thread of instructions to execute a second subset of instructions starting at the second address.

3. The data processing apparatus of claim 2 , wherein the first subset of instructions and the second subset of instructions are subsets of the first micro-thread of instructions that are non-overlapping during dynamic execution.

4. The data processing apparatus of claim 1 , wherein when the runtime data does not meet the parallelization criterion, the thread control circuitry is adapted to interpret the detach instruction as one of: an unconditional branch instruction, and a no-operation.

5. The data processing apparatus of claim 1 , wherein the decoder circuitry is responsive to a reattach instruction in a particular micro-thread of instructions, to provide reattach control signals to the thread control circuitry, and

wherein the thread control circuitry is responsive to the reattach control signals to terminate the particular micro-thread of instructions.

6. The data processing apparatus of claim 5 , wherein the thread control circuitry is responsive to occurrence of a data hazard between the particular micro-thread of instructions and another micro-thread of instructions to indicate an unsuccessful termination of the particular micro-thread; and

the thread control circuitry is responsive to the indication of the unsuccessful termination to re-spawn the particular micro-thread of instructions.

7. The data processing apparatus of claim 5 , wherein when the runtime data does not meet the parallelization criterion, the thread control circuitry is adapted to interpret the reattach instruction as one of: an unconditional branch instruction, and a no-operation.

8. The data processing apparatus of claim 5 , wherein each micro-thread is identified by an epoch identifier.

9. The data processing apparatus of claim 5 , wherein the particular micro-thread of instructions is the first micro-thread of instructions, and

wherein in response to the detach instruction the thread control circuitry is adapted to assign a new epoch identifier to the second micro-thread of instructions.

10. The data processing apparatus of claim 5 , wherein the particular micro-thread of instructions is the second micro-thread of instructions, and

wherein prior to the detach instruction the first micro-thread was assigned a first epoch identifier and, in response to the detach instruction, the thread control circuitry is adapted to assign a new epoch identifier to the first micro-thread of instructions and to assign the first epoch identifier to the second micro-thread of instructions.

11. The data processing apparatus of claim 5 , wherein the detach instruction specifies a region identifier and at least one subsequent reattach instruction specifies the region identifier.

12. The data processing apparatus of claim 11 , wherein the region identifier is a first region identifier, a subsequent detach instruction specifies a second region identifier and a subsequent reattach instruction specifies the second region identifier,

wherein the epoch identifier comprises an outer epoch identifier and an inner epoch identifier, and

wherein when the subsequent detach instruction and the subsequent reattach instruction are between the detach instruction and the reattach instruction in program order, the outer epoch identifier is assigned in association with the detach instruction, and the inner epoch identifier is assigned in association with the subsequent detach instruction.

13. The data processing apparatus of claim 12 , wherein the runtime data is first runtime data and the performance metric is a first performance metric associated with the first region identifier, and

wherein the thread control circuitry is adapted to collect second runtime data indicative of a second performance metric associated with the second region identifier.

14. The data processing apparatus of claim 11 , wherein the decoder circuitry is responsive to a sync instruction in a micro-thread of instructions with a youngest epoch identifier to pause execution of subsequent instructions in the youngest micro-thread of instructions until all spawned micro-threads with older epoch identifiers and a same region identifier have terminated.

15. The data processing apparatus of claim 14 , wherein the decoder circuitry is further responsive to the sync instruction in the micro-thread of instructions with the youngest epoch identifier to pause execution of subsequent instructions in the youngest micro-thread of instructions until all spawned micro threads with older epoch identifiers and a different region identifier have terminated.

16. The data processing apparatus of claim 5 , wherein, based on a scheduling factor n, the thread control circuitry is adapted to interpret occurrences of the detach instruction and occurrences of the reattach instruction as one of an unconditional branch instruction and a no-operation.

17. The data processing apparatus of claim 16 , wherein the thread control circuitry is adapted to spawn the second micro-thread of instructions in response to every n th occurrence of the detach instruction and to interpret all other occurrences of the detach instruction as one of the unconditional branch instruction and the no-operation, and

wherein the thread control circuitry is adapted to terminate the particular micro-thread of instructions in response to every (n-1) th occurrence of the reattach instruction and to interpret all other occurrences of the reattach instruction as one of the unconditional branch instruction and the no-operation.

18. The data processing apparatus of claim 16 , wherein the scheduling factor n is based on the runtime data.

19. The data processing apparatus of claim 14 , wherein the decoder circuitry is further responsive to the detach instruction specifying an alternative address, and wherein, when n is greater than 1, the thread control circuitry is configured to:

begin execution in the second execution context from the alternative address; or

cause the first micro-thread of instructions to continue execution from the alternative address.

20. A data processing method comprising:

collecting runtime data indicative of a performance metric relating to processing operations of a plurality of micro-threads in a corresponding execution context defining an architectural state on multithreaded processing circuitry;

generating, when the runtime data meet a parallelization criterion at a point where the detach instruction is decoded, detach control signals in response to a detach instruction in a first micro-thread of instructions executed in a first execution context defining a first architectural state, the detach instruction specifying an address; and

spawning, in response to the detach control signals, a second micro-thread of instructions executed in a second execution context defining a second architectural state based on the first architectural state, the second micro-thread of instructions comprising a subset of instructions of the first micro-thread of instructions starting at the address.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 1, 2023
From: ZAIDI, SYED ALI MUSTAFA; GABRIELLI, GIACOMO
To: ARM LIMITED
Reel/Frame 064449/0881 →
Priority Claims (2)
GB 2013702 · Sep 1, 2020 · national
GB 2013770 · Sep 2, 2020 · national
Continuity (1)
Related Publication 20230325194A1 · Oct 12, 2023
References Cited (37)
US 6256775B1 · Flynn · 2001 [cited by examiner]
US 6401155B1 · Saville · 2002 [cited by examiner]
US 7587584B2 · Enright · 2009 [cited by examiner]
US 7631307B2 · Wang · 2009 [cited by examiner]
US 7650485B1 · Chou · 2010 [cited by applicant]
US 7941646B2 · Holloway · 2011 [cited by examiner]
US 8667253B2 · Frazier · 2014 [cited by examiner]
US 9910796B2 · Wang · 2018 [cited by examiner]
US 10459858B2 · Wang · 2019 [cited by examiner]
US 10877910B2 · Wang · 2020 [cited by examiner]
US 20040163083A1 · Wang et al. · 2004 [cited by applicant]
US 20050050395A1 · Kissell · 2005 [cited by examiner]
US 20050125802A1 · Wang · 2005 [cited by examiner]
US 20050144602A1 · Ngai · 2005 [cited by examiner]
US 20050149697A1 · Enright · 2005 [cited by examiner]
US 20050149931A1 · Lin · 2005 [cited by examiner]
US 20050160254A1 · Lin · 2005 [cited by examiner]
US 20050188189A1 · Yeung et al. · 2005 [cited by applicant]
US 20070113055A1 · Dale · 2007 [cited by examiner]
US 20090172361A1 · Holloway · 2009 [cited by examiner]
US 20120036339A1 · Frazier · 2012 [cited by examiner]
US 20130219096A1 · Wang · 2013 [cited by examiner]
US 20170132011A1 · Caulfield · 2017 [cited by examiner]
US 20170206083A1 · Wang · 2017 [cited by examiner]
US 20180060258A1 · Wang · 2018 [cited by examiner]
US 20180276046A1 · Joao et al. · 2018 [cited by applicant]
CA 2680597C · 2011 [cited by examiner]
‘Helper Threads via Virtual Multithreading on an Experimental Itanium 2 Processor-based Platform’ by Wang et al., 2004. (Year: 2004). [cited by examiner]
Hong Wang et al., “Speculative precomputation: exploring the use of multithreading for latency”, Intel Technology Journal, XX, US, No. 1, Feb. 14, 2002 (Feb. 14, 2002), pp. 1-14, XP002303432. whole document. [cited by applicant]
Tao B. Schardl, et al., “Tapir: Embedding Fork-Join Parallelism into LLVM's Intermediate Representation”, MIT Computer Science and Artificial Intelligence Laboratory, 32 Vassar Street, Cambridge, MA 02139; Feb. 4-8, 201… [cited by applicant]
Paraskevas Yiapanis, et al., “Compiler-Driven Software Speculation for Thread-Level Parallelism”, University of Manchester, Dec. 2015. [cited by applicant]
Alvaro Estebanez, et al., “A Survey on Thread-Level Speculation Techniques”, Universidad de Valladolid, ACM Computing Surveys, vol. 49, No. 2, Article 22, Publication date: Jun. 2016. [cited by applicant]
Simone Campanoni, et al., “HELIX-RC: An Architecture-Compiler Co-Design for Automatic Parallelization of Irregular Programs”,c 2014 IEEE. [cited by applicant]
J. Gregory Steffan, “Hardware Support for Thread-Level Speculation”, CMU-CS-03-122, Apr. 2003. [cited by applicant]
J. Gregory Steffan, et al., “The STAMPede Approach to Thread-Level Speculation”, ACM Transactions on Computer Systems, vol. 23, No. 3, Aug. 2005, pp. 253-300. [cited by applicant]
Taku Ohsawa, et al., “Pinot: Speculative Multi-threading Processor Architecture Exploiting Parallelism over a Wide Range of Granularities”, NEC Corporation, 2005. [cited by applicant]
“MIPS® MT Principles of Operation” Document No. MD00452, Revision 1.02, Sep. 9, 2013. [cited by applicant]
Cited By (1)
US 12,743,339