IP Library › Granted Patent US 11,803,507
Granted Patent B2
US 11,803,507 · App. 16/654,924 · Granted Oct 31, 2023

Data stream protocol field decoding by a systolic array

Inventors: Jordan Anderson (Centerville, UT); Timothy Paul Abel (Fruit Heights, UT); Derek Owens (Centerville, UT); Sean Little (North Salt Lake, UT)
Assignee: SECTURION SYSTEMS, INC.
G06F15/8046
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 11,803,507
App. No.
16/654,924
Granted
Oct 31, 2023
Kind
B2
Abstract

Systems and methods for protocol processing using a systolic array (e.g., programmed in an FPGA). For example, protocol processing is performed for incoming data (e.g., received for storage) prior to encryption and/or sending to a remote storage device (e.g., cloud storage or server).

Claims (35)

1. A method comprising:

receiving a data stream;

providing a first portion of the data stream as an input to a first processing unit in at least one systolic array, the at least one systolic array performing protocol decoding on the first portion of the data stream;

decoding, by the first processing unit, a first protocol field in the first portion of the data stream;

determining, based on the decoded first protocol field, a second processing unit of the at least one systolic array to decode a second protocol field in the first portion of the data stream;

providing at least one output from the at least one systolic array to a data processing engine, the at least one output including at least one decision from the protocol decoding;

providing a second portion of the data stream to the data processing engine; and

processing the second portion of the data stream by the data processing engine based on the at least one decision.

2. The method of claim 1 , wherein the at least one systolic array comprises a plurality of protocol field decoders, wherein each decoder is connected to at least two other decoders, and wherein a processing result from each decoder determines a route that data being processed moves through the at least one systolic array.

3. The method of claim 1 , wherein the at least one systolic array comprises a two-dimensional array of processing units that receives the first data portion, fans out the first data portion to a pipeline of parallel processing units in the two-dimensional array, and moves the first data portion through the pipeline of parallel processing units.

4. The method of claim 3 , wherein the first portion of the data stream moves through the pipeline by advancing from one processing unit to another processing unit on each of a plurality of clock ticks.

5. The method of claim 1 , further comprising comparing, by the at least one systolic array, a first set of protocol fields in the first portion of the data stream to a plurality of sets of protocol fields.

6. The method of claim 1 , further comprising providing a predetermined delay to the second portion of the data stream, wherein the second portion of the data stream and the at least one output arrive at the data processing engine at a same time.

7. The method of claim 1 , wherein the protocol decoding separates the first portion of the data stream into blocks based on protocols built in the first portion of the data stream.

8. The method of claim 1 , wherein each of the first and second processing units is compiled for a predetermined protocol.

9. A system comprising:

a receiver configured to receive a data stream and output a first and a second portion of the data stream;

a protocol decoding processor configured to receive the first portion of the data stream and output at least one decision based on protocol decoding on the first portion of the data stream, the protocol decoding processor including a first and second processing unit in at least one systolic array to perform the protocol decoding, wherein the first processing unit is configured to decode a first protocol field in the first portion of the data stream and determine, based on the decoded first protocol field, the second processing unit in the at least one systolic array to decode a second protocol field in the first portion of the data stream; and

a data processing engine configured to receive the second portion of the data stream and process the second portion of the data stream based on the at least one decision.

10. The system of claim 9 , wherein the at least one systolic array comprises a plurality of protocol field decoders, wherein each decoder is connected to at least two other decoders, and wherein a processing result from each decoder determines a route that data being processed moves through the at least one systolic array.

11. The system of claim 10 , wherein the at least one systolic array comprises a two-dimensional array of processing units that receives the first data portion, fans out the first data portion to a pipeline of parallel processing units in the two-dimensional array, and moves the first data portion through the pipeline of parallel processing units.

12. The system of claim 11 , wherein the first portion of the data stream moves through the pipeline by advancing from one processing unit to another processing unit on each of a plurality of clock ticks.

13. The system of claim 9 , wherein the protocol decoding processor is further configured to compare, by the at least one systolic array, a first set of protocol fields in the first portion of the data stream to a plurality of sets of protocol fields.

14. The system of claim 9 , wherein the protocol decoding processor is further configured to provide a predetermined delay to the second portion of the data stream, and wherein the second portion of the data stream and the at least one output arrive at the data processing engine at a same time.

15. The system of claim 9 , wherein the protocol decoding separates the first portion of the data stream into blocks based on protocols built in the first portion of the data stream.

16. The system of claim 9 , wherein each of the plurality of processing units is compiled for a predetermined protocol.

17. A method comprising:

receiving a data stream;

providing a first portion of the data stream as an input to a first processing unit in at least one systolic array, the at least one systolic array performing protocol decoding on the first portion of the data stream;

decoding, by the first processing unit, a first protocol field in the first portion of the data stream;

determining, based on the decoded first protocol field, a second processing unit of the at least one systolic array to decode a second protocol field in the first portion of the data stream;

providing at least one output from the at least one systolic array to a data processing engine, the at least one output including at least one decision from the protocol decoding;

providing a second portion of the data stream to the data processing engine with a predetermined delay; and

processing the second portion of the data stream by the data processing engine based on the at least one decision.

18. The method of claim 17 , wherein the second portion of the data stream and the at least one decision arrive at the data processing engine at a same time.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 2, 2020
From: ANDERSON, JORDAN; ABEL, TIMOTHY PAUL; OWENS, DEREK; LITTLE, SEAN
To: SECTURION SYSTEMS, INC.
Reel/Frame 052299/0988 →
Continuity (2)
Provisional Application 62751905 · Oct 29, 2018
Related Publication 20200293487A1 · Sep 17, 2020