IP Library › Granted Patent US 12,705,055
Granted Patent B2
US 12,705,055 · App. 17/654,449 · Granted Aug 11, 2026

Repeat instruction for loading and/or executing code in a claimable repeat cache a specified number of times

Inventors: Alan Graham Alexander (Wotton-under-Edge, GB); Simon Christian Knowles (Corston, GB); Mrudula Chidambar Gore (Bath, GB); Jonathan Ferguson (Bristol, GB)
Assignee: GRAPHCORE LIMITED
G06F9/30065G06F9/30076G06F9/3808G06F9/381G06F12/0875
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,705,055
App. No.
17/654,449
Filed
Mar 11, 2022
Granted
Aug 11, 2026
Kind
B2
Art Unit
2183
USPC
712/200
Abstract

A processor is disclosed including: a barrel-threaded execution unit for executing concurrent threads, and a repeat cache shared between the concurrent threads. The processor's instruction set includes a repeat instruction which takes a repeat count operand. When the repeat cache is not claimed and a first repeat instruction is executed in a first thread, a portion of code is cached from the first thread into the repeat cache, the state of the repeat cache is changed to record it as claimed, and the cached code is executed a number of times. When a further repeat instruction is then executed in a further thread, the already-cached portion of code is again executed a respective number of times, each time from the repeat cache. For each of the first and further repeat instructions, the repeat count operand in the respective instruction specifies the number of times to execute the cached code.

Claims (23)

1 . A method of operating a processor having a barrel-threaded execution unit configured to run a plurality of concurrent threads each in a different respective one of a repeating sequence of interleaved time slots, the method comprising:

running a program comprising the plurality of concurrent threads on the processor through the execution unit, a first thread of the threads including a first instance of a repeat instruction, the repeat instruction being a machine code instruction that is defined by an opcode and that takes a repeat count operand;

executing the first instance of the repeat instruction, including, in response to the opcode of the repeat instruction:

determining that a repeat cache of the processor is not claimed;

caching a first portion of code from the first thread into the repeat cache;

recording the repeat cache as claimed; and

executing the first portion of code a first number of times according to the repeat count operand of the first instance of the repeat instruction, taking at least one successive repetition of the first portion of code from the repeat cache; and

resetting a state of the repeat cache as unclaimed once at least the first thread has finished executing the first portion of code the first number of times;

the method further including:

in the first thread, executing a second instance of the repeat instruction in which the repeat count operand is zero, the second instance of the repeat instruction causing the execution unit to cache a second portion of code from the first thread into the repeat cache and skip execution of the second portion of code in the first thread; and

executing a third instance of the repeat instruction included in a second thread of said threads, including, in response to the opcode of the repeat instruction, executing the second portion of code from the repeat cache a second number of times according to the repeat count operand of the third instance of the repeat instruction, taking at least one successive repetition of the second portion of code from the repeat cache.

2 . The method of claim 1 , wherein said first portion of code is a portion following the first instance of the repeat instruction in the first thread.

3 . A processor comprising:

an execution unit configured to execute instances of instructions defined in an instruction set, wherein the execution unit is a barrel-threaded execution unit configured to run a plurality of concurrent threads each in a different respective one of a repeating sequence of interleaved time slots; and

a repeat cache having an associated state recording whether or not the repeat cache is currently claimed by one of the threads;

wherein the instructions defined in the instruction set include a repeat instruction which takes a repeat count operand, the execution unit being configured so as:

in response to the opcode of the repeat instruction and in response to the repeat cache being not currently claimed according to said state and a first instance of the repeat instruction being executed in a first thread of said threads:

to cache a first portion of code from the first thread into the repeat cache, to modify said state to record the repeat cache as claimed, and to execute said first portion of code a respective number of times, taking each successive repetition of the first portion of code from the repeat cache;

wherein the processor is configured to reset said state to record the repeat cache as unclaimed again once at least the first thread has finished executing the first portion of code the respective number of times;

the execution unit further configured to, after the reset of said state:

in the first thread, execute a second instance of the repeat instruction in which the repeat count operand is zero, the second instance of the repeat instruction causing the execution unit to cache a second portion of code from the first thread into the repeat cache and skip execution of the second portion of code in the first thread; and

execute a third instance of the repeat instruction included in a second thread of said threads, including, in response to the opcode of the repeat instruction, executing the second portion of code from the repeat cache a second number of times according to the repeat count operand of the third instance of the repeat instruction, taking at least one successive repetition of the second portion of code from the repeat cache.

4 . The processor of claim 3 , wherein said first portion of code is a portion following the first instance of the repeat instruction in the first thread.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 11, 2022
From: ALEXANDER, ALAN GRAHAM; KNOWLES, SIMON CHRISTIAN; GORE, MRUDULA CHIDAMBAR; FERGUSON, JONATHAN
To: GRAPHCORE LIMITED
Reel/Frame 059237/0829 →
Priority Claims (1)
GB 1821229 · Dec 27, 2018 · national
Continuity (2)
Continuation 16276895 · Feb 15, 2019
Related Publication 20220197645A1 · Jun 23, 2022
References Cited (37)
US 5303355A · Gergen · 1994 [cited by examiner]
US 5511178A · Takeda · 1996 [cited by applicant]
US 5579493A · Kiuchi · 1996 [cited by applicant]
US 7178013B1 · Batcher · 2007 [cited by applicant]
US 9348595B1 · Mizrahi et al. · 2016 [cited by applicant]
US 11567768B2 · Alexander · 2023 [cited by examiner]
US 20020016887A1 · Scales · 2002 [cited by applicant]
US 20020078333A1 · Inoue · 2002 [cited by applicant]
US 20020103847A1 · Potash · 2002 [cited by examiner]
US 20080155236A1 · Wilson et al. · 2008 [cited by applicant]
US 20080294882A1 · Jayapala · 2008 [cited by applicant]
US 20150220347A1 · Glossner et al. · 2015 [cited by applicant]
US 20180181400A1 · Scherbinin et al. · 2018 [cited by applicant]
JP S60241136A · 1985 [cited by applicant]
JP H1173318A · 1999 [cited by applicant]
JP 2002268878A · 2002 [cited by applicant]
JP 2004516571A · 2004 [cited by applicant]
JP 2011070695A · 2011 [cited by applicant]
JP 2013541758A · 2013 [cited by applicant]
JP 2017228213A · 2017 [cited by applicant]
JP 2019079530A · 2019 [cited by applicant]
WO 2008155834A1 · 2010 [cited by applicant]
WO 2018169911A1 · 2018 [cited by applicant]
Dictionary.com, “Buffer”, Jun. 27, 2018, Retrieved from the Internet < URL: https://web.archive.org/web/20180627221850/https://www.dictionary.com/browse/buffer >. [cited by examiner]
Dictionary.com, “Cache”, Jul. 7, 2018, Retrieved from the Internet < URL: https://web.archive.org/web/20180707233220/https://www.dictionary.com/browse/cache >. [cited by examiner]
Merriam-Webster.com, “Buffer”, May 1, 2015, Retrieved from the Internet < URL: https://web.archive.org/web/20150501175913/https://www.merriam-webster.com/dictionary/buffer >. [cited by examiner]
Merriam-Webster.com, “Cache”, Aug. 27, 2016, Retrieved from the Internet < URL: https://web.archive.org/web/20160827184519/https://www.merriam-webster.com/dictionary/cache >. [cited by examiner]
Notice of Allowance dated Aug. 8, 2023 for Chinese Patent Application No. 201910559689.4. [cited by applicant]
Chinese Search Report-Office Action dated Mar. 14, 2023 for Chinese Patent Application No. 201910559689.4. [cited by applicant]
Office Action issued Aug. 18, 2020 for Japanese Patent Application No. 2019-113318. 13 pages. [cited by applicant]
Simultaneous multithreading. In: Wikipedia, the free encyclopedia. Processing status: Dec. 17, 2018. URL: https://en.wikipedia.org/w/index.php?title=Simultaneous_multithreading&oldid=874139330 [retrieved on Mar. 6, 2020… [cited by applicant]
Thread (computing). In: Wikipedia, the free encyclopedia. Processing status: Mar. 12, 2018. URL: https://en.wikipedia.org/w/index.php?title=Thread_(computing)&oldid=871757983 [retrieved on Mar. 6, 2020]. [cited by applicant]
Barrel processor. In: Wikipedia, the free encyclopedia. Processing status: Mar. 26, 2018. URL: https://en.wikipedia.org/w/index.php?title=Barrel_processor&oldid=870708296 [retrieved on Mar. 6, 2020]. [cited by applicant]
Thread pool. In: Wikipedia, the free encyclopedia. Processing status: Nov. 19, 2018. URL: https://en.wikipedia.org/w/index.php?title=Thread_pool&oldid=869616238 [retrieved on Mar. 6, 2020]. [cited by applicant]
Ratkovic Ivan [ et al.]: Chapter One—An Overview of Architecture-Level Power- and Energy-Efficient Design Techniques. In: Advances in Computers, 98, May 2015, pp. 1, 2, 12, 34, 35.—ISSN 0065-2458. http://hdl.handle.net/… [cited by applicant]
Office Action dated Mar. 10, 2020 for German Patent Application No. 10-2019-112-301.1. [cited by applicant]
Combined Search and Examination Report for United Kingdom Patent Application No. GB1821229.0 dated Aug. 22, 2019. 4 pages. [cited by applicant]