High Speed Processing of Financial Information Using FPGA Devices
First Claim
Patent Images
1. An apparatus for processing a plurality of financial market data messages, each financial market data message comprising financial market data and being associated with a financial instrument, the apparatus comprising:
- a reconfigurable logic device configured to (1) receive the financial market data messages, and (2) process a plurality of the received financial market data messages to update a plurality of stored records for the financial instruments associated with the processed messages.
4 Assignments
0 Petitions
Accused Products
Abstract
A high speed apparatus and method for processing a plurality of financial market data messages are disclosed. With respect to an exemplary embodiment, a reconfigurable logic device is employed to (1) receive the financial market data messages, and (2) process each received financial market data message to update a stored record for the financial instrument associated with that message.
213 Citations
74 Claims
-
1. An apparatus for processing a plurality of financial market data messages, each financial market data message comprising financial market data and being associated with a financial instrument, the apparatus comprising:
a reconfigurable logic device configured to (1) receive the financial market data messages, and (2) process a plurality of the received financial market data messages to update a plurality of stored records for the financial instruments associated with the processed messages. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36)
-
2. The apparatus of claim 1 wherein the reconfigurable logic device comprises firmware logic deployed thereon as a data processing pipeline, the pipeline comprising a plurality of pipelined firmware application modules, at least one of the firmware application modules configured to update stored records for the financial instruments associated with the financial market data messages based on the financial market data within the financial market data messages.
-
3. The apparatus of claim 2 wherein the processed financial market data messages comprise a plurality of message fields, the plurality of message fields for storing financial market data corresponding to the messages'"'"' associated financial instruments, the message fields including a symbol identifier field, the apparatus further comprising a memory for storing data records associated with a plurality of financial instruments, the data records comprising a plurality of record data fields, wherein the at least one firmware application module is configured to (1) receive a plurality of message fields corresponding to the processed financial market data messages, including the symbol identifier fields, and (2) interact with the memory to retrieve record data fields pertaining to the processed financial market data messages based on the received symbol identifier fields.
-
4. The apparatus of claim 3 wherein the plurality of message fields corresponding to the processed financial market data messages that are received by the at least one firmware application module further include a global exchange identifier field;
-
wherein the memory comprises a record storage memory and a record management memory; the record storage memory for storing a plurality of financial instrument records, the plurality of financial instrument records for storage within the record storage memory comprising (1) a plurality of composite records, (2) a plurality of regional list block records, and (3) a plurality of regional records, each composite record associated with a financial instrument and comprising a plurality of composite record fields for storing composite data for that financial instrument, each regional record associated with a financial instrument and comprising a plurality of regional record fields for storing regional data for that financial instrument, and each regional list block record associated with a financial instrument and storing a pointer to each regional record for that financial instrument; the record management memory for storing a plurality of pointer records, each pointer record for storage in the record management memory being associated with a financial instrument and comprising (1) a composite record pointer that identifies the composite record for that financial instrument, and (2) a regional list block record pointer that identifies the regional list block record for that financial instrument; and wherein the at least one firmware application module is further configured to, for each processed financial market data message having an associated data record stored in the memory, (1) retrieve the composite record pointer and the regional list block record pointer corresponding to the financial instrument identified by the received symbol identifier field for that processed financial market data message, (2) retrieve the regional list block record identified by the retrieved regional list block record pointer, and (3) determine the regional record pointer within the retrieved regional list block record based on the received global exchange identifier field for that processed financial market data message.
-
-
5. The apparatus of claim 4 wherein the at least one firmware application module comprises a plurality of pipelined data processing blocks and at least one processing buffer, the pipelined data processing blocks comprising an address resolution block, a cache determination block, and a record retrieval block;
-
wherein the address resolution block is configured to (1) interact with the record management memory to retrieve and determine the composite record pointer and regional record pointer for each processed financial market data message corresponding to a financial instrument having a stored data record in the record storage memory based on the symbol identifier fields and the global exchange identifier fields for those processed financial market data messages, and (2) provide a data stream comprising the retrieved and determined composite record pointers and regional record pointers to the cache determination block; wherein the cache determination block comprises a cache memory and is configured to (1) maintain, in the cache memory, regional data and composite data from composite and regional records that were previously retrieved from the record storage memory, (2) compare the provided data stream with the cache memory to determine whether the cache memory includes regional data or composite data pertaining to any of the composite record pointers and regional record pointers in the provided data stream, (3) for each regional record pointer in the provided data stream, in response to a determination that the cache memory does not include regional data pertaining to that regional record pointer, provide that regional record pointer to the record retrieval block, and (4) for each composite record pointer in the provided data stream, in response to a determination that the cache memory does not include composite data pertaining to that composite record pointer, provide that composite record pointer to the record retrieval block; and wherein the record retrieval block is configured to (1) receive a plurality of regional record pointers and composite record pointers from the cache determination block, (2) interact with the record storage memory to retrieve a plurality of regional record fields and composite record fields corresponding to the received regional record pointers and composite record pointers, and (3) store the retrieved regional record fields and composite record fields in the at least one processing buffer.
-
-
6. The apparatus of claim 5 wherein the cache memory is resident on the reconfigurable logic device.
-
7. The apparatus of claim 6 wherein the cache memory comprises a portion of the at least one processing buffer.
-
8. The apparatus of claim 5 wherein the reconfigurable logic device is further configured to flush the cache memory after the end of each trading day.
-
9. The apparatus of claim 5 wherein the reconfigurable logic device is further configured to flush the cache memory on a first in first out (FIFO) basis.
-
10. The apparatus of claim 5 wherein the address resolution block comprises a plurality of pipelined sub-blocks, the plurality of pipelined sub-blocks comprising;
-
a first sub-block configured to (1) process the received symbol identifier fields to generate a stream of read commands to the record management memory based on the processed symbol identifier fields, and (2) retrieve composite record pointers and regional list block record pointers from the record management memory in response to the read commands to the record management memory; a second sub-block configured to (1) process the retrieved regional list block record pointers to generate a second stream of read commands to the record storage memory based on the processed regional list block record pointers, and (2) retrieve regional list block records from the record storage memory in response to the read commands to the record storage memory; a third sub-block configured to process the received global exchange identifier fields against the retrieved regional list block records to determine the regional record pointers corresponding to the received global exchange identifier fields; and a fourth sub-block configured to provide the data stream comprising the retrieved and determined composite record pointers and regional record pointers to the cache determination block.
-
-
11. The apparatus of claim 5 wherein the at least one firmware application module is further configured to store a plurality of the received message fields in the at least one processing buffer, and wherein the at least one firmware application module further comprises a plurality of parallel processing engines for communication with the at least one processing buffer, the parallel processing engines configured to read message fields, regional record fields, and composite record fields out of the at least one processing buffer to perform a plurality of different processing operations thereon and generate a plurality of regional record updates, composite record updates, and message updates.
-
12. The apparatus of claim 11 wherein the at least one processing buffer comprises a first buffer for storing composite record fields, a second buffer for storing regional record fields, and a third buffer for storing message fields, and wherein the plurality of parallel processing engines comprise a plurality of parallel composite record update engines and a plurality of parallel regional record update engines, the plurality of parallel composite record update engines for reading composite record fields and message fields out of the first and third buffers, and the plurality of parallel regional record update engines for reading regional record fields and message fields out of the second and third buffers.
-
13. The apparatus of claim 11 wherein the at least one firmware application module further comprises a record updating block, wherein the plurality of parallel processing engines are further configured to (1) provide the message updates to a downstream firmware application module in the pipeline, and (2) provide the regional record updates and the composite record updates to the record updating block, and wherein the record updating block is configured to interact with the record storage memory to store the regional record updates and the composite record updates in the record storage memory in association with the composite and regional records to which they pertain.
-
14. The apparatus of claim 11 wherein the at least one firmware application module is further configured to store the regional record updates and the composite record updates in the cache memory.
-
15. The apparatus of claim 4 wherein the memory is external from the reconfigurable logic device.
-
16. The apparatus of claim 4 wherein the at least one firmware application module comprises a free space pointer for identifying available memory space in the record storage memory, and wherein the at least one firmware application module is further configured to, for a processed financial market data message not having an associated data record stored in the memory, (1) create a new composite record, a new regional record, and a new regional list block record for the financial instrument associated with that processed financial market data message, (2) store the new composite record, the new regional record, and the new regional list block record in the record storage memory based on the free space pointer, and (3) write a new pointer record to the record management memory corresponding to the stored new composite record, the stored new regional record, and the stored new regional list block record.
-
17. The apparatus of claim 2 further comprising a memory for storing a plurality of composite records and a plurality of regional records associated with a plurality of financial instruments, wherein the at least one firmware application module comprises a last value cache (LVC) update module, the LVC update module including a cache memory for storing data from a plurality of the composite records and the regional records that were previously retrieved from the memory, the LVC update module further configured to examine the cache memory to determine whether the cache memory stores any composite record data or any regional record data pertaining to a received financial market data message to thereby avoid accessing the memory to retrieve a composite record or regional record needed for performing an update operation for that received financial market data message.
-
18. The apparatus of claim 2 further comprising a record management memory and a record storage memory, the record storage memory for storing a plurality of composite records and a plurality of regional records associated with a plurality of financial instruments, the record management memory for storing a plurality of pointers that identify the composite records and the regional records in the record storage memory, wherein the at least one firmware application module comprises a last value cache (LVC) update module, the LVC update module comprising a pipelined circuit for (1) receiving a plurality symbol identifiers and a plurality of global exchange identifiers in association with a processed financial market data message, and (2) separately accessing the record management memory and the record storage memory to first retrieve pointers from the record management memory based on the symbol identifiers and global exchange identifiers before retrieving composite and regional records from the record storage memory based on the retrieved pointers.
-
19. The apparatus of claim 2 wherein the reconfigurable logic device comprises a field programmable gate array (FPGA).
-
20. The apparatus of claim 1 further comprising a record memory configured to store a plurality of records for a plurality of financial instruments, and wherein the reconfigurable logic device is further configured to (1) receive a financial instrument symbol identifier in association with each received message, (2) retrieve from the record memory a record for each message based at least in part upon each message'"'"'s associated financial instrument symbol identifier, and (3) update each retrieved record in response to the processing of each financial market data message.
-
21. The apparatus of claim 20 further comprising a record management memory, the record management memory comprising a plurality of record management memory addresses, the record management memory being configured to store a plurality of pointers to records in the record memory, each pointer being stored in a record management memory address, and wherein the reconfigurable logic device is further configured to perform a lookup in the record management memory based at least in part upon each message'"'"'s associated financial instrument symbol identifier to thereby retrieve a pointer to a location in the record memory where a record for that message'"'"'s associated financial instrument is stored.
-
22. The apparatus of claim 21 wherein the record management memory is deployed on a memory device external to the reconfigurable logic device.
-
23. The apparatus of claim 22 wherein the memory device comprises at least one selected from the group consisting of an SRAM device and an SDRAM device.
-
24. The apparatus of claim 20 wherein the record memory is further configured to store, for each of a plurality of financial instruments, a composite record and a regional record for each exchange on which that financial instrument trades, and wherein the reconfigurable logic device is further configured to (1) receive an exchange identifier in association with each received message, and (2) retrieve from the record memory both the composite record and each regional record for the financial instrument associated with each message based at least in part upon each message'"'"'s associated financial instrument symbol identifier and exchange identifier.
-
25. The apparatus of claim 24 further comprising a record management memory, the record management memory comprising a plurality of record management memory addresses, each record management memory address being associated with a financial instrument symbol identifier and storing a composite pointer to the composite record in the record memory for the financial instrument corresponding to that record management memory address'"'"'s associated financial instrument symbol identifier and a regional pointer to a location in the record memory that is associated with each regional record for the financial instrument corresponding to that record management memory address'"'"'s associated financial instrument symbol identifier, and wherein the reconfigurable logic device is further configured to, for each message, (1) retrieve the pointers stored in the record management address associated with that message'"'"'s associated financial instrument symbol identifier, (2) retrieve the composite record from the record memory based at least in part on the retrieved composite pointer, and (3) retrieve each regional record from the record memory based at least in part on the retrieved regional pointer and that message'"'"'s associated exchange identifier.
-
26. The apparatus of claim 24 wherein the reconfigurable logic device comprises a plurality of composite record update engines and a plurality of regional record update engines for performing the processing of each received financial market data message, and wherein the reconfigurable logic device is further configured to (1) provide the retrieved composite records and the financial market data to the composite record update engines for processing thereby, and (2) provide the retrieved regional records and the financial market data to the regional record update engines for processing thereby.
-
27. The apparatus of claim 20 wherein the reconfigurable logic device comprises a plurality of update engines for performing the processing of each received financial market data message, and wherein the reconfigurable logic device is further configured to deliver the retrieved records and the financial market data to the update engines for processing thereby.
-
28. The apparatus of claim 27 further comprising a template memory, the template memory being configured to store business logic for use by the update engines.
-
29. The apparatus of claim 28 wherein the reconfigurable logic device is further configured to select the business logic to be used by the update engines for processing each message in response to at least one of the group consisting of a field in that message and a field in a retrieved record for that message.
-
30. The apparatus of claim 27 wherein the reconfigurable logic device further comprises a pipelined circuit configured to perform the retrieval and delivery operations such that the pipelined circuit can operate on a plurality of the messages simultaneously.
-
31. The apparatus of claim 30 wherein the pipelined circuit is configured to stall processing of a second message associated with a financial instrument in response to detecting that the pipelined circuit is already processing a first message associated with the same financial instrument as the second message, and wherein the pipelined circuit is configured to maintain the stall until processing of the first message is complete.
-
32. The apparatus of claim 30 wherein the reconfigurable logic device is further configured to (1) maintain a cache memory for storing recently updated records, (2) for each message associated with a financial instrument for which a recently-updated record is stored in the cache memory, deliver the cached record to the update engines rather than a record retrieved from the record memory.
-
33. The apparatus of claim 20 wherein the reconfigurable logic device is further configured to (1) detect whether a received message pertains to a financial instrument for which no record is stored in the record memory, and (2) in response to a detecting that a received message pertains to a financial instrument for which no record is stored in the record memory, write a new record for that financial instrument into the record memory based at least in part on that received message.
-
34. The apparatus of claim 20 wherein the reconfigurable logic device is further configured to add a new field to at least a plurality of the records in response to the processing.
-
35. The apparatus of claim 20 wherein the record memory is deployed on a memory device external to the reconfigurable logic device.
-
36. The apparatus of claim 35 wherein the memory device comprises at least one selected from the group consisting of an SRAM device and an SDRAM device.
-
2. The apparatus of claim 1 wherein the reconfigurable logic device comprises firmware logic deployed thereon as a data processing pipeline, the pipeline comprising a plurality of pipelined firmware application modules, at least one of the firmware application modules configured to update stored records for the financial instruments associated with the financial market data messages based on the financial market data within the financial market data messages.
-
37. A method for processing a plurality of financial market data messages, each financial market data message comprising financial market data and being associated with a financial instrument, the method comprising:
-
retrieving a record for a financial instrument associated with a financial market data message; performing at least one financial data processing operation on at least a portion of the financial market data message with reconfigurable logic; and updating the retrieved record in response to the performing step. - View Dependent Claims (38)
-
38. The method of claim 37 wherein the retrieving step comprises retrieving a composite record for the financial instrument and at least one regional record for the financial instrument, and wherein the performing step comprises performing the a plurality of financial data processing operations on at least a portion of the message simultaneously for both the retrieved composite record and the at least one retrieved regional record, and wherein the updating step comprises updating the retrieved composite record and the at least one retrieved regional record in response to the performing step.
-
38. The method of claim 37 wherein the retrieving step comprises retrieving a composite record for the financial instrument and at least one regional record for the financial instrument, and wherein the performing step comprises performing the a plurality of financial data processing operations on at least a portion of the message simultaneously for both the retrieved composite record and the at least one retrieved regional record, and wherein the updating step comprises updating the retrieved composite record and the at least one retrieved regional record in response to the performing step.
-
-
39. A method for processing a plurality of financial market data messages, each financial market data message comprising financial market data and being associated with a financial instrument, the method comprising:
-
receiving the financial market data messages; and processing a plurality of the received financial market data messages to update a plurality of stored records for the financial instruments associated with the processed messages; and wherein the method steps are perform by a reconfigurable logic device. - View Dependent Claims (40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74)
-
40. The method of claim 39 wherein the reconfigurable logic device comprises firmware logic deployed thereon as a data processing pipeline, the pipeline comprising a plurality of pipelined firmware application modules, at least one of the firmware application modules performing the processing step to update stored records for the financial instruments associated with the financial market data messages based on the financial market data within the financial market data messages.
-
41. The method of claim 40 wherein the processed financial market data messages comprise a plurality of message fields, the plurality of message fields for storing financial market data corresponding to the messages'"'"' associated financial instruments, the message fields including a symbol identifier field, the reconfigurable logic device being resident in a ticker plant, the ticker plant further comprising a memory for storing data records associated with a plurality of financial instruments, the data records comprising a plurality of record data fields, the method further comprising:
the at least one firmware application module (1) receiving a plurality of message fields corresponding to the processed financial market data messages, including the symbol identifier fields, and (2) interacting with the memory to retrieve record data fields pertaining to the processed financial market data messages based on the received symbol identifier fields.
-
42. The method of claim 41 wherein the plurality of message fields corresponding to the processed financial market data messages that are received by the at least one firmware application module further include a global exchange identifier field, wherein the memory comprises a record storage memory and a record management memory, the record storage memory for storing a plurality of financial instrument records, the plurality of financial instrument records for storage within the record storage memory comprising (1) a plurality of composite records, (2) a plurality of regional list block records, and (3) a plurality of regional records, each composite record associated with a financial instrument and comprising a plurality of composite record fields for storing composite data for that financial instrument, each regional record associated with a financial instrument and comprising a plurality of regional record fields for storing regional data for that financial instrument, and each regional list block record associated with a financial instrument and storing a pointer to each regional record for that financial instrument, the record management memory for storing a plurality of pointer records, each pointer record for storage in the record management memory being associated with a financial instrument and comprising (1) a composite record pointer that identifies the composite record for that financial instrument, and (2) a regional list block record pointer that identifies the regional list block record for that financial instrument, the method further comprising:
the at least one firmware application module, for each processed financial market data message having an associated data record stored in the memory, (1) retrieving the composite record pointer and the regional list block record pointer corresponding to the financial instrument identified by the received symbol identifier field for that processed financial market data message, (2) retrieving the regional list block record identified by the retrieved regional list block record pointer, and (3) determining the regional record pointer within the retrieved regional list block record based on the received global exchange identifier field for that processed financial market data message.
-
43. The method of claim 42 wherein the at least one firmware application module comprises a plurality of pipelined data processing blocks and at least one processing buffer, the pipelined data processing blocks comprising an address resolution block, a cache determination block, and a record retrieval block, wherein the cache determination block comprises a cache memory, the method further comprising:
-
the address resolution block (1) interacting with the record management memory to retrieve and determine the composite record pointer and regional record pointer for each processed financial market data message corresponding to a financial instrument having a stored data record in the record storage memory based on the symbol identifier fields and the global exchange identifier fields for those processed financial market data messages, and (2) providing a data stream comprising the retrieved and determined composite record pointers and regional record pointers to the cache determination block; the cache determination block (1) maintaining, in the cache memory, regional data and composite data from composite and regional records that were previously retrieved from the record storage memory, (2) comparing the provided data stream with the cache memory to determine whether the cache memory includes regional data or composite data pertaining to any of the composite record pointers and regional record pointers in the provided data stream, (3) for each regional record pointer in the provided data stream, in response to a determination that the cache memory does not include regional data pertaining to that regional record pointer, providing that regional record pointer to the record retrieval block, and (4) for each composite record pointer in the provided data stream, in response to a determination that the cache memory does not include composite data pertaining to that composite record pointer, providing that composite record pointer to the record retrieval block; and the record retrieval block (1) receiving a plurality of regional record pointers and composite record pointers from the cache determination block, (2) interacting with the record storage memory to retrieve a plurality of regional record fields and composite record fields corresponding to the received regional record pointers and composite record pointers, and (3) storing the retrieved regional record fields and composite record fields in the at least one processing buffer.
-
-
44. The method of claim 43 wherein the cache memory is resident on the reconfigurable logic device.
-
45. The method of claim 44 wherein the cache memory comprises a portion of the at least one processing buffer.
-
46. The method of claim 43 further comprising the reconfigurable logic device flushing the cache memory after the end of each trading day.
-
47. The method of claim 43 further comprising the reconfigurable logic device flushing the cache memory on a first in first out (FIFO) basis.
-
48. The method of claim 43 wherein the address resolution block comprises a plurality of pipelined sub-blocks, the plurality of pipelined sub-blocks comprising a first sub-block, a second sub-block, a third sub-block, and a fourth sub-block, the method further comprising:
-
the first sub-block (1) processing the received symbol identifier fields to generate a stream of read commands to the record management memory based on the processed symbol identifier fields, and (2) retrieving composite record pointers and regional list block record pointers from the record management memory in response to the read commands to the record management memory; the second sub-block (1) processing the retrieved regional list block record pointers to generate a second stream of read commands to the record storage memory based on the processed regional list block record pointers, and (2) retrieving regional list block records from the record storage memory in response to the read commands to the record storage memory; the third sub-block processing the received global exchange identifier fields against the retrieved regional list block records to determine the regional record pointers corresponding to the received global exchange identifier fields; and the fourth sub-block providing the data stream comprising the retrieved and determined composite record pointers and regional record pointers to the cache determination block.
-
-
49. The method of claim 43 further comprising the at least one firmware application module storing a plurality of the received message fields in the at least one processing buffer, and wherein the at least one firmware application module further comprises a plurality of parallel processing engines for communication with the at least one processing buffer, the method further comprising:
the parallel processing engines reading message fields, regional record fields, and composite record fields out of the at least one processing buffer to perform a plurality of different processing operations thereon and generate a plurality of regional record updates, composite record updates, and message updates.
-
50. The method of claim 49 wherein the at least one processing buffer comprises a first buffer for storing composite record fields, a second buffer for storing regional record fields, and a third buffer for storing message fields, and wherein the plurality of parallel processing engines comprise a plurality of parallel composite record update engines and a plurality of parallel regional record update engines, the method further comprising:
-
the plurality of parallel composite record update engines reading composite record fields and message fields out of the first and third buffers; and the plurality of parallel regional record update engines for reading regional record fields and message fields out of the second and third buffers.
-
-
51. The method of claim 49 wherein the at least one firmware application module further comprises a record updating block, the method further comprising:
-
the plurality of parallel processing engines (1) providing the message updates to a downstream firmware application module in the pipeline, and (2) providing the regional record updates and the composite record updates to the record updating block; and the record updating block interacting with the record storage memory to store the regional record updates and the composite record updates in the record storage memory in association with the composite and regional records to which they pertain.
-
-
52. The method of claim 49 further comprising the at least one firmware application module storing the regional record updates and the composite record updates in the cache memory.
-
53. The method of claim 42 wherein the memory is external from the reconfigurable logic device.
-
54. The method of claim 42 wherein the at least one firmware application module comprises a free space pointer for identifying available memory space in the record storage memory, the method further comprising:
the at least one firmware application module, for a processed financial market data message not having an associated data record stored in the memory, (1) creating a new composite record, a new regional record, and a new regional list block record for the financial instrument associated with that processed financial market data message, (2) storing the new composite record, the new regional record, and the new regional list block record in the record storage memory based on the free space pointer, and (3) writing a new pointer record to the record management memory corresponding to the stored new composite record, the stored new regional record, and the stored new regional list block record.
-
55. The method of claim 40 further comprising a memory for storing a plurality of composite records and a plurality of regional records associated with a plurality of financial instruments, wherein the at least one firmware application module comprises a last value cache (LVC) update module, the LVC update module including a cache memory for storing data from a plurality of the composite records and the regional records that were previously retrieved from the memory, the method further comprising:
the LVC update module examining the cache memory to determine whether the cache memory stores any composite record data or any regional record data pertaining to a received financial market data message to thereby avoid accessing the memory to retrieve a composite record or regional record needed for performing an update operation for that received financial market data message.
-
56. The method of claim 40 further comprising a record management memory and a record storage memory, the record storage memory for storing a plurality of composite records and a plurality of regional records associated with a plurality of financial instruments, the record management memory for storing a plurality of pointers that identify the composite records and the regional records in the record storage memory, wherein the at least one firmware application module comprises a last value cache (LVC) update module, the LVC update module comprising a pipelined circuit, the method further comprising:
the pipelined circuit (1) receiving a plurality symbol identifiers and a plurality of global exchange identifiers in association with a processed financial market data message, and (2) separately accessing the record management memory and the record storage memory to first retrieve pointers from the record management memory based on the symbol identifiers and global exchange identifiers before retrieving composite and regional records from the record storage memory based on the retrieved pointers.
-
57. The method of claim 40 wherein the reconfigurable logic device comprises a field programmable gate array (FPGA).
-
58. The method of claim 39 further comprising a record memory configured to store a plurality of records for a plurality of financial instruments, the method further comprising:
the reconfigurable logic device (1) receiving a financial instrument symbol identifier in association with each received message, (2) retrieving from the record memory a record for each message based at least in part upon each message'"'"'s associated financial instrument symbol identifier, and (3) updating each retrieved record in response to the processing of each financial market data message.
-
59. The method of claim 58 further comprising a record management memory, the record management memory comprising a plurality of record management memory addresses, the record management memory being configured to store a plurality of pointers to records in the record memory, each pointer being stored in a record management memory address, the method further comprising:
the reconfigurable logic device performing a lookup in the record management memory based at least in part upon each message'"'"'s associated financial instrument symbol identifier to thereby retrieve a pointer to a location in the record memory where a record for that message'"'"'s associated financial instrument is stored.
-
60. The method of claim 59 wherein the record management memory is deployed on a memory device external to the reconfigurable logic device.
-
61. The method of claim 60 wherein the memory device comprises at least one selected from the group consisting of an SRAM device and an SDRAM device.
-
62. The method of claim 58 wherein the record memory is further configured to store, for each of a plurality of financial instruments, a composite record and a regional record for each exchange on which that financial instrument trades, the method further comprising:
the reconfigurable logic device (1) receiving an exchange identifier in association with each received message, and (2) retrieving from the record memory both the composite record and each regional record for the financial instrument associated with each message based at least in part upon each message'"'"'s associated financial instrument symbol identifier and exchange identifier.
-
63. The method of claim 62 further comprising a record management memory, the record management memory comprising a plurality of record management memory addresses, each record management memory address being associated with a financial instrument symbol identifier and storing a composite pointer to the composite record in the record memory for the financial instrument corresponding to that record management memory address'"'"'s associated financial instrument symbol identifier and a regional pointer to a location in the record memory that is associated with each regional record for the financial instrument corresponding to that record management memory address'"'"'s associated financial instrument symbol identifier, the method further comprising:
the reconfigurable logic device, for each message, (1) retrieving the pointers stored in the record management address associated with that message'"'"'s associated financial instrument symbol identifier, (2) retrieving the composite record from the record memory based at least in part on the retrieved composite pointer, and (3) retrieving each regional record from the record memory based at least in part on the retrieved regional pointer and that message'"'"'s associated exchange identifier.
-
64. The method of claim 62 wherein the reconfigurable logic device comprises a plurality of composite record update engines and a plurality of regional record update engines for performing the processing of each received financial market data message, the method further comprising:
the reconfigurable logic device (1) providing the retrieved composite records and the financial market data to the composite record update engines for processing thereby, and (2) providing the retrieved regional records and the financial market data to the regional record update engines for processing thereby.
-
65. The method of claim 58 wherein the reconfigurable logic device comprises a plurality of update engines for performing the processing of each received financial market data message, the method further comprising:
the reconfigurable logic device delivering the retrieved records and the financial market data to the update engines for processing thereby.
-
66. The method of claim 65 further comprising a template memory, the template memory storing business logic for use by the update engines.
-
67. The method of claim 66 further comprising the reconfigurable logic device selecting the business logic to be used by the update engines for processing each message in response to at least one of the group consisting of a field in that message and a field in a retrieved record for that message.
-
68. The method of claim 65 wherein the reconfigurable logic device further comprises a pipelined circuit, the method further comprising:
the pipelined circuit performing the retrieving and delivering steps such that the pipelined circuit can operate on a plurality of the messages simultaneously.
-
69. The method of claim 68 further comprising the pipelined circuit (1) stalling processing of a second message associated with a financial instrument in response to detecting that the pipelined circuit is already processing a first message associated with the same financial instrument as the second message, and (2) maintaining the stall until processing of the first message is complete.
-
70. The method of claim 68 further comprising the reconfigurable logic device (1) maintaining a cache memory for storing recently updated records, (2) for each message associated with a financial instrument for which a recently-updated record is stored in the cache memory, delivering the cached record to the update engines rather than a record retrieved from the record memory.
-
71. The method of claim 58 further comprising the reconfigurable logic device (1) detecting whether a received message pertains to a financial instrument for which no record is stored in the record memory, and (2) in response to a detecting that a received message pertains to a financial instrument for which no record is stored in the record memory, writing a new record for that financial instrument into the record memory based at least in part on that received message.
-
72. The method of claim 58 further comprising the reconfigurable logic device adding a new field to at least a plurality of the records in response to the processing.
-
73. The method of claim 58 wherein the record memory is deployed on a memory device external to the reconfigurable logic device.
-
74. The method of claim 73 wherein the memory device comprises at least one selected from the group consisting of an SRAM device and an SDRAM device.
-
40. The method of claim 39 wherein the reconfigurable logic device comprises firmware logic deployed thereon as a data processing pipeline, the pipeline comprising a plurality of pipelined firmware application modules, at least one of the firmware application modules performing the processing step to update stored records for the financial instruments associated with the financial market data messages based on the financial market data within the financial market data messages.
-
Specification
- Resources
Thank you for your request. You will receive a custom alert email when the Litigation Campaign Assessment is available.
×
-
Current AssigneeExegy Incorporated
-
Original AssigneeExegy Incorporated
-
InventorsParsons, Scott, Chamberlain, Roger D., Taylor, David E., Schuehler, David Vincent, Franklin, Mark A.
-
Granted Patent
-
Time in Patent OfficeDays
-
Field of Search
-
US Class Current705/35
-
CPC Class CodesG06Q 40/00 Finance; Insurance; Tax str...G06Q 40/04 Trading; Exchange, e.g. sto...G06Q 40/06 Asset management; Financial...