IP Library Granted Patent US 10,229,426
Granted Patent B2
US 10,229,426 · App. 14/502,243 · Granted Mar 12, 2019

Method and a device for decoding data streams in reconfigurable platforms

Inventor: Edward Kodde (Paris, FR)
Assignee: ENYX SA
G06Q30/0201G06F7/76G06Q40/04H04L69/12H04L69/16
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,229,426
App. No.
14/502,243
Granted
Mar 12, 2019
Kind
B2
Abstract

A decoding device is implemented on an integrated circuit, for decoding a market data input stream received in a given data representation format. The decoding device comprises an engine built around a finite state machine, the engine being generated from at least one description file and configured to perform the following steps, in a current state of the finite state machine: i) dividing the market data input stream into a number of tokens and reading a set of tokens, ii) accumulating the set of read tokens in internal registers, iii) generating output commands from the tokens accumulated in the internal registers depending on a condition related to the tokens accumulated in the internal registers, and iv) selecting the next state of the Finite State Machine state based on a triggering condition.

Claims (26)

1. A decoding device, implemented on an integrated circuit, for decoding a market data input stream received in a given data representation format, said decoding device comprising:

an engine built around a finite state machine, the engine being generated from at least one description file and instantiating at least one tokenizer configured to divide the input market data stream into a number of tokens and read a set of tokens in parallel during each clock cycle;

the engine comprising a set of storage elements for accumulating said sets of read tokens;

the engine being configured to generate output commands from the tokens accumulated in said storage elements depending on conditions related to the tokens accumulated in the storage elements derived from said description file; and

the engine being configured to select the next state of the Finite State Machine based on a triggering condition derived from said description file, wherein the engine operates in a current state of the finite state machine.

2. The decoding device of claim 1 , wherein engine executes the division, accumulation, output command generation and next state selection operations in the same clock cycle if the condition related to the tokens accumulated in the storage elements is satisfied.

3. The decoding device of claim 1 , wherein the engine is configured to keep accumulating tokens in the storage element during consecutive clock cycles until the satisfaction of the condition related to the tokens accumulated in the storage elements.

4. The decoding device of claim 1 wherein said condition relates to the number of tokens accumulated in the storage elements.

5. The decoding device of claim 1 , wherein is controlled by the finite state machine which controls the number of tokens read during each clock cycle.

6. The decoding device of claim 5 , wherein said at least one tokenizer comprises a parser for dividing the input stream into tokens depending on the data representation format of the input stream, and a buffer for buffering the tokens provided by the parser.

7. The decoding device of claim 5 , wherein said at least one tokenizer comprises a read management core to read a set of tokens obtained from said division of the input stream, and present the read tokens at its output interface.

8. The decoding device of claim 7 , wherein the set of tokens that are to be read in certain states is determined based on conditions on the number of tokens that are to be read at each clock cycle.

9. The decoding device of claim 8 , wherein said condition on the number of tokens that are to be read depends on the value of a specific token, the Finite State Machine being configured to:

read the value of said specific token in the current clock cycle, and

read a number of tokens among the available tokens depending on the read value of said specific token during the next clock cycles.

10. The decoding device of claim 7 , wherein the tokens that have not been read from the read management core by the finite state machine are appended to new tokens and presented again on the output interface of said read management core during subsequent clock cycle(s).

11. The decoding device of claim 10 , wherein the input stream has a binary format, and the read management core is configured to allow for random byte length reads in the input stream.

12. The decoding device of claim 1 , wherein said triggering condition comprises at least one among the following conditions: a condition related to the result of error checks performed in the current state of said finite state machine to determine if the input data stream comprises formatting errors, a condition depending on the data stored in storage elements, and a condition depending on a back-pressure signal received from a next core in the processing thread.

13. The decoding device of claim 1 , wherein the format of the input stream is either FIX-based, FAST-based or in a Binary format.

14. The decoding device of claim 1 , further comprising a set of conversion units to further normalize the commands output by the engine.

15. A method for decoding an input market data stream, received in a given data representation format, said method being implemented on an integrated circuit, the method comprising, for each received market data stream, providing a finite state machine generated from at least one description file, said method further comprising the following steps, in a current state of the finite state machine:

i) dividing the market data input stream with the integrated circuit into a number of tokens and reading a set of tokens in parallel during each clock cycle,

ii) accumulating said sets of read tokens in storage elements,

iii) generating output commands by the integrated circuit based on the tokens accumulated in said storage elements depending on conditions related to the tokens accumulated in the storage elements derived from said description file, and

iv) selecting with the integrated circuit the next state of the Finite State Machine based on a triggering condition derived from said description file,

wherein steps i to iv are performed in a current state of the finite state machine.

Assignments (5)
CHANGE OF NAME Recorded Apr 14, 2025
From: ENYX SA
To: EXEGY SA
Reel/Frame 070839/0045 →
EMPLOYMENT AGREEMENT Recorded Oct 17, 2017
From: KODDE, EDWARD
To: HPC PLATFORM SAS
Reel/Frame 044218/0869 →
CHANGE OF NAME Recorded Oct 17, 2017
From: HPC PLATFORM SA
To: NOVASPARKS S.A.
Reel/Frame 044333/0115 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 17, 2017
From: KODDE, EDWARD
To: HPC PLATFORM SAS
Reel/Frame 043885/0963 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 30, 2014
From: KODDE, EDWARD
To: ENYX SA
Reel/Frame 033853/0769 →
Priority Claims (1)
EP 13306357 · Oct 1, 2013 · regional
Continuity (1)
Related Publication 20150095109A1 · Apr 2, 2015