Configurable logic constructs in a loop buffer
First Claim
1. A method for executing a loop on a computing system, the method comprising:
- programming, into hardware of a configurable hardware block, a hardware circuit that performs one or more target functions within the loop, wherein programming reconfigures one or more of;
a programmable interconnect to change how a plurality of logic blocks are connected,a lookup table, for a particular logic block, to change the output of the particular logic block for a given input, anda plurality of multiplexors and based on a particular value for a set of bits of a pre-defined plurality of acceptable values for the set of bits, wherein each value of the plurality of acceptable values designates a particular configuration of a pre-defined plurality of configurations of the plurality of multiplexors;
wherein the configurable hardware block is associated with a plurality of registers;
wherein the plurality of registers includes a loopcount register, an input register and an output register;
for each iteration of the loop,(a) updating, in the loopcount register, a counter value that tracks a number of iterations in the loop; and
(b) updating a target value in the output register based at least in part by loading a value from the input register into the hardware circuit of the programmed configurable hardware block.
1 Assignment
0 Petitions
Accused Products
Abstract
Techniques are described herein for using configurable logic constructs in a loop buffer. In an embodiment, a configurable hardware block is programmed based on one or more target functions within a loop. The configurable hardware block is associated with a plurality of registers, including a loopcount register and a first output register. For each iteration of the loop, a counter value in the loopcount register is updated and a target value in the first output register is updated using the programmed configurable hardware block. For each iteration of the loop, a set of one or more instructions may be fetched from the instruction buffer and executed based on the updated target value in the first output value.
-
Citations
30 Claims
-
1. A method for executing a loop on a computing system, the method comprising:
-
programming, into hardware of a configurable hardware block, a hardware circuit that performs one or more target functions within the loop, wherein programming reconfigures one or more of; a programmable interconnect to change how a plurality of logic blocks are connected, a lookup table, for a particular logic block, to change the output of the particular logic block for a given input, and a plurality of multiplexors and based on a particular value for a set of bits of a pre-defined plurality of acceptable values for the set of bits, wherein each value of the plurality of acceptable values designates a particular configuration of a pre-defined plurality of configurations of the plurality of multiplexors; wherein the configurable hardware block is associated with a plurality of registers; wherein the plurality of registers includes a loopcount register, an input register and an output register; for each iteration of the loop, (a) updating, in the loopcount register, a counter value that tracks a number of iterations in the loop; and (b) updating a target value in the output register based at least in part by loading a value from the input register into the hardware circuit of the programmed configurable hardware block. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 28, 29, 30)
-
-
10. One or more non-transitory computer-readable media storing instructions for executing a loop on a computer system, the instructions, in response to being executed by one or more processors, causing the computing system to perform operations comprising:
-
programming, into hardware of a configurable hardware block, a hardware circuit that performs one or more target functions within the loop, wherein programming reconfigures one or more of; a programmable interconnect to change how a plurality of logic blocks are connected, a lookup table, for a particular logic block, to change the output of the particular logic block for a given input, and a plurality of multiplexors and based on a particular value for a set of bits of a pre-defined plurality of acceptable values for the set of bits, wherein each value of the plurality of acceptable values designates a particular configuration of a pre-defined plurality of configurations of the plurality of multiplexors; wherein the configurable hardware block is associated with a plurality of registers; wherein the plurality of registers includes a loopcount register, an input register and an output register; for each iteration of the loop, (a) updating, in the loopcount register, a counter value that tracks a number of iterations in the loop; and (b) updating a target value in the output register based at least in part by loading a value from the input register into the hardware circuit of the programmed configurable hardware block. - View Dependent Claims (11, 12, 13, 14, 15, 16, 17, 18)
-
-
19. A system for executing a loop, the system comprising:
-
one or more processors; a configurable hardware block that is programmable by the one or more processors; wherein the configurable hardware block is associated with a plurality of registers; wherein the plurality of registers includes a loopcount register, an input register, and an output register; one or more non-transitory computer-readable media storing instructions which, in response to being executed by the one or more processors, cause operations comprising; programming, into hardware of a configurable hardware block, a hardware circuit that performs one or more target functions within the loop, wherein programming reconfigures one or more of; a programmable interconnect to change how a plurality of logic blocks are connected, a lookup table, for a particular logic block, to change the output of the particular logic block for a given input, and a plurality of multiplexors and based on a particular value for a set of bits of a pre-defined plurality of acceptable values for the set of bits, wherein each value of the plurality of acceptable values designates a particular configuration of a pre-defined plurality of configurations of the plurality of multiplexors; for each iteration of the loop, (a) updating, in the loopcount register, a counter value that tracks a number of iterations in the loop; and (b) updating a target value in the output register based at least in part by loading a value from the input register into the hardware circuit of the programmed configurable hardware block. - View Dependent Claims (20, 21, 22, 23, 24, 25, 26, 27)
-
Specification