EFFICIENTLY IMPLEMENTING A PLURALITY OF FINITE STATE MACHINES
First Claim
1. A logic circuit-implemented method of processing data by a pipeline of a virtual multiple instance finite state machine (VMI FSM), said method comprising:
- receiving a plurality of input tokens referencing a plurality of FSM instances included in said VMI FSM, wherein said VMI FSM is a single hardware implementation;
selecting a first input token of said plurality of input tokens to enter said pipeline of said VMI FSM, wherein said first input token includes a first field that includes a reference to a first set of one or more FSM instances (first FSM instance) of said plurality of FSM instances and a second field that includes a first input value;
receiving said first input token at said pipeline of said VMI FSM;
fetching a current state of said first FSM instance and a context of said first FSM instance from an array based on said reference included in said first field of said first input token;
inserting said current state of said first FSM instance and said context of said first FSM instance into one or more other fields of said first input token;
said VMI FSM switching to said first FSM instance of said plurality of FSM instances included in said VMI FSM by receiving said first input token including said current state of said first FSM instance and said context of said first FSM instance inserted into said one or more other fields of said first input token;
determining a new state of said first FSM instance based on said current state of said first FSM instance, said context of said first FSM instance, said first input value, and a status of an environment;
generating a first output token based on said current state of said first FSM instance, said context of said first FSM instance, said first input value, and said status of said environment;
writing said new state and said context of said first FSM instance to said array; and
subsequent to said pipeline of said VMI FSM receiving said first input token and prior to said determining said new state and said determining said first output token, selecting a second input token of said plurality of input tokens to enter said pipeline of said VMI FSM, wherein said second input token includes a first field that includes a reference to a second set of one or more FSM instances (second FSM instance) of said plurality of FSM instances and a second field that includes a second input value.
1 Assignment
0 Petitions
Accused Products
Abstract
A method and program product for processing data by a pipeline of a single hardware-implemented virtual multiple instance finite state machine (VMI FSM). An input token of multiple input tokens is selected to enter a pipeline of the VMI FSM. The input token includes a reference to an FSM instance. In one embodiment, the reference is an InfiniBand QP number. After being received at the pipeline, a current state and context of the FSM instance are fetched from an array based on the reference and inserted into a field of the input token. A new state of the FSM instance is determined and an output token is generated. The new state and the output token are based on the current state, context, a first input value, and an availability of a resource. The new state of the first FSM instance is written to the array.
24 Citations
20 Claims
-
1. A logic circuit-implemented method of processing data by a pipeline of a virtual multiple instance finite state machine (VMI FSM), said method comprising:
-
receiving a plurality of input tokens referencing a plurality of FSM instances included in said VMI FSM, wherein said VMI FSM is a single hardware implementation; selecting a first input token of said plurality of input tokens to enter said pipeline of said VMI FSM, wherein said first input token includes a first field that includes a reference to a first set of one or more FSM instances (first FSM instance) of said plurality of FSM instances and a second field that includes a first input value; receiving said first input token at said pipeline of said VMI FSM; fetching a current state of said first FSM instance and a context of said first FSM instance from an array based on said reference included in said first field of said first input token; inserting said current state of said first FSM instance and said context of said first FSM instance into one or more other fields of said first input token; said VMI FSM switching to said first FSM instance of said plurality of FSM instances included in said VMI FSM by receiving said first input token including said current state of said first FSM instance and said context of said first FSM instance inserted into said one or more other fields of said first input token; determining a new state of said first FSM instance based on said current state of said first FSM instance, said context of said first FSM instance, said first input value, and a status of an environment; generating a first output token based on said current state of said first FSM instance, said context of said first FSM instance, said first input value, and said status of said environment; writing said new state and said context of said first FSM instance to said array; and subsequent to said pipeline of said VMI FSM receiving said first input token and prior to said determining said new state and said determining said first output token, selecting a second input token of said plurality of input tokens to enter said pipeline of said VMI FSM, wherein said second input token includes a first field that includes a reference to a second set of one or more FSM instances (second FSM instance) of said plurality of FSM instances and a second field that includes a second input value. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9)
-
-
10. A logic circuit of multiple interconnected electrically conductive elements configured to perform a method of processing data by a pipeline of a virtual multiple instance finite state machine (VMI FSM), said method comprising:
-
receiving a plurality of input tokens referencing a plurality of FSM instances included in said VMI FSM, wherein said VMI FSM is a single hardware implementation; selecting a first input token of said plurality of input tokens to enter said pipeline of said VMI FSM, wherein said first input token includes a first field that includes a reference to a first set of one or more FSM instances (first FSM instance) of said plurality of FSM instances and a second field that includes a first input value; receiving said first input token at said pipeline of said VMI FSM; fetching a current state of said first FSM instance and a context of said first FSM instance from an array based on said reference included in said first field of said first input token; inserting said current state of said first FSM instance and said context of said first FSM instance into one or more other fields of said first input token; said VMI FSM switching to said first FSM instance of said plurality of FSM instances included in said VMI FSM by receiving said first input token including said current state of said first FSM instance and said context of said first FSM instance inserted into said one or more other fields of said first input token; determining a new state of said first FSM instance based on said current state of said first FSM instance, said context of said first FSM instance, said first input value, and a status of an environment; generating a first output token based on said current state of said first FSM instance, said context of said first FSM instance, said first input value, and said status of said environment; writing said new state and said context of said first FSM instance to said array; and subsequent to said pipeline of said VMI FSM receiving said first input token and prior to said determining said new state and said determining said first output token, selecting a second input token of said plurality of input tokens to enter said pipeline of said VMI FSM, wherein said second input token includes a first field that includes a reference to a second set of one or more FSM instances (second FSM instance) of said plurality of FSM instances and a second field that includes a second input value. - View Dependent Claims (11, 12, 13, 14, 15, 16, 17, 18, 19)
-
-
20. A computer system comprising:
-
a processor; and a computer-readable storage medium coupled to said processor, wherein said processor includes one or more logic circuits including combinational logic that when executed by said processor implement a method of processing data by a pipeline of a virtual multiple instance finite state machine (VMI FSM), said method comprising; receiving a plurality of input tokens referencing a plurality of FSM instances included in said VMI FSM, wherein said VMI FSM is a single hardware implementation; selecting a first input token of said plurality of input tokens to enter said pipeline of said VMI FSM, wherein said first input token includes a first field that includes a reference to a first set of one or more FSM instances (first FSM instance) of said plurality of FSM instances and a second field that includes a first input value; receiving said first input token at said pipeline of said VMI FSM; fetching a current state of said first FSM instance and a context of said first FSM instance from an array based on said reference included in said first field of said first input token; inserting said current state of said first FSM instance and said context of said first FSM instance into one or more other fields of said first input token; said VMI FSM switching to said first FSM instance of said plurality of FSM instances included in said VMI FSM by receiving said first input token including said current state of said first FSM instance and said context of said first FSM instance inserted into said one or more other fields of said first input token; determining a new state of said first FSM instance based on said current state of said first FSM instance, said context of said first FSM instance, said first input value, and a status of an environment; generating a first output token based on said current state of said first FSM instance, said context of said first FSM instance, said first input value, and said status of said environment; writing said new state and said context of said first FSM instance to said array; and subsequent to said pipeline of said VMI FSM receiving said first input token and prior to said determining said new state and said determining said first output token, selecting a second input token of said plurality of input tokens to enter said pipeline of said VMI FSM, wherein said second input token includes a first field that includes a reference to a second set of one or more FSM instances (second FSM instance) of said plurality of FSM instances and a second field that includes a second input value.
-
Specification