IP Library Granted Patent US 10,437,728
Granted Patent B2
US 10,437,728 · App. 16/126,107 · Granted Oct 8, 2019

Branchless instruction paging in reconfigurable fabric

Inventor: Christopher John Nicol (Campbell, CA)
Assignee: Wave Computing, Inc.
G06F12/0875G06F3/06G06F9/3816G06F12/08G06F13/28G06F15/7867G06F9/50G06F2212/1008G06F2212/1016G06N3/0454G06N3/063
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,437,728
App. No.
16/126,107
Granted
Oct 8, 2019
Kind
B2
Abstract

Circular buffers containing instructions that enable the execution of operations on logical elements are described where data in the circular buffers is swapped to storage. The instructions comprise a branchless instruction set. Data stored in circular buffers is paged in and out to a second level memory. State information for each logical element is also saved and restored using paging memory. Instructions are provided to logical elements, such as processing elements, via circular buffers. The instructions enable a group of processing elements to perform operations implementing a desired functionality. That functionality is changed by updating the circular buffers with new instructions that are transferred from paging memory. The previous instructions can be saved off in paging memory before the new instructions are copied over to the circular buffers. This enables the hardware to be rapidly reconfigured amongst multiple functions.

Claims (35)

1. A processor-implemented method for computation comprising:

paging data stored in a plurality of circular buffers, wherein the plurality of circular buffers controls one or more logical elements of a reconfigurable fabric, and where the paging comprises:

copying data from a first storage memory into the plurality of circular buffers where:

each of the plurality of circular buffers is coupled to at least one of the one or more logical elements;

the data provides instructions for the one or more logical elements;

as the circular buffers rotate, the instructions that are provided to the one or more logical elements change; and

the instructions comprise a branchless instruction set.

2. The method of claim 1 wherein instructions from a configuration ROM are used to operate the reconfigurable fabric while the paging is accomplished.

3. The method of claim 1 wherein the paging further comprises copying the data stored in the plurality of circular buffers into a second storage memory.

4. The method of claim 3 further comprising storing state information in the second storage memory.

5. The method of claim 3 wherein the copying, of the data stored in the plurality of circular buffers into a second storage memory, occurs before the copying of the data from a first storage memory into the plurality of circular buffers.

6. The method of claim 3 wherein the first storage memory comprises the second storage memory.

7. The method of claim 3 wherein the first storage memory and the second storage memory are substantially similar.

8. The method of claim 1 wherein the copying of the data from the first storage memory into the plurality of circular buffers causes data previously stored in the plurality of circular buffers to be overwritten.

9. The method of claim 1 wherein the data from the first storage memory includes state information.

10. The method of claim 1 wherein the data from the first storage memory includes instruction information.

11. The method of claim 1 wherein the instructions that change, that are delivered to the logical elements, provide a first sequence of operations by the logical elements.

12. The method of claim 11 wherein the data from the first storage memory provides a second set of instructions to the logical elements.

13. The method of claim 12 wherein the second set of instructions provides a second sequence of operations by the logical elements.

14. The method of claim 1 wherein the plurality of circular buffers comprises circular buffers of differing sizes.

15. The method of claim 14 wherein the circular buffers of differing sizes restart at a same time step.

16. The method of claim 1 wherein the branchless instruction set excludes if statements.

17. The method of claim 1 wherein the branchless instruction set precludes programming loops.

18. The method of claim 1 wherein the branchless instruction set excludes conditional jumps.

19. An apparatus for computation comprising:

a plurality of circular buffers where the plurality of circular buffers contains instructions for logical elements that are coupled to the plurality of circular buffers, and where the plurality of circular buffers contains a first copy of instructions comprising a branchless instruction set;

a storage memory containing a second copy of instructions for the plurality of circular buffers where the storage memory is coupled to the plurality of circular buffers; and

a set of switches and connections, coupled to the plurality of circular buffers, for transferring contents of the storage memory to the plurality of circular buffers.

20. The apparatus of claim 19 further comprising a further storage memory for a third copy of instructions for the plurality of circular buffers where the further storage memory is coupled to the plurality of circular buffers; and a further set of switches and connections for transferring contents of the further storage memory to the plurality of circular buffers.

21. The apparatus of claim 20 wherein the first copy of instructions is copied to a swapping memory before the third copy of instructions is moved into the plurality of circular buffers.

22. A computer program product embodied in a non-transitory computer readable medium for implementation of a logical calculation apparatus comprising:

code for designing a processing architecture including:

a plurality of circular buffers where the plurality of circular buffers contains instructions for logical elements that are coupled to the plurality of circular buffers, and where the plurality of circular buffers contains a first copy of instructions comprising a branchless instruction set;

a storage memory containing a second copy of instructions for the plurality of circular buffers where the storage memory is coupled to the plurality of circular buffers; and

a set of switches and connections, coupled to the plurality of circular buffers, for transferring contents of the storage memory to the plurality of circular buffers.

Assignments (6)
CHANGE OF NAME Recorded May 8, 2024
From: WAVE COMPUTING, INC.
To: MIPS HOLDING, INC.
Reel/Frame 067355/0324 →
RELEASE OF SECURITY INTEREST Recorded Dec 29, 2022
From: CAPITAL FINANCE ADMINISTRATION, LLC, AS ADMINISTRATIVE AGENT
To: MIPS TECH, LLC; WAVE COMPUTING INC.
Reel/Frame 062251/0251 →
SECURITY INTEREST Recorded Jun 14, 2021
From: MIPS TECH, LLC; WAVE COMPUTING, INC.
To: CAPITAL FINANCE ADMINISTRATION, LLC
Reel/Frame 056558/0903 →
RELEASE OF SECURITY INTEREST Recorded Jun 14, 2021
From: WAVE COMPUTING LIQUIDATING TRUST
To: MIPS TECH, INC.; HELLOSOFT, INC.; WAVE COMPUTING (UK) LIMITED; IMAGINATION TECHNOLOGIES, INC.; CAUSTIC GRAPHICS, INC.; MIPS TECH, LLC; WAVE COMPUTING, INC.
Reel/Frame 056589/0606 →
SECURITY INTEREST Recorded Feb 26, 2021
From: WAVE COMPUTING, INC.; MIPS TECH, LLC; MIPS TECH, INC.; HELLOSOFT, INC.; WAVE COMPUTING (UK) LIMITED; IMAGINATION TECHNOLOGIES, INC.; CAUSTIC GRAPHICS, INC.
To: WAVE COMPUTING LIQUIDATING TRUST
Reel/Frame 055429/0532 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 19, 2018
From: NICOL, CHRISTOPHER JOHN
To: WAVE COMPUTING, INC.
Reel/Frame 046914/0307 →
Continuity (17)
Continuation In Part 15048983 · Feb 19, 2016
Provisional Application 62694984 · Jul 7, 2018
Provisional Application 62692993 · Jul 2, 2018
Provisional Application 62679046 · Jun 1, 2018
Provisional Application 62679172 · Jun 1, 2018
Provisional Application 62650758 · Mar 30, 2018
Provisional Application 62650425 · Mar 30, 2018
Provisional Application 62637614 · Mar 2, 2018
Provisional Application 62636309 · Feb 28, 2018
Provisional Application 62611588 · Dec 29, 2017
Provisional Application 62611600 · Dec 29, 2017
Provisional Application 62594563 · Dec 5, 2017
Provisional Application 62594582 · Dec 5, 2017
Provisional Application 62579616 · Oct 31, 2017
Provisional Application 62577902 · Oct 27, 2017
Provisional Application 62119110 · Feb 21, 2015
Related Publication 20190004962A1 · Jan 3, 2019