# US 10,504,184 B2 · Fast track routing of streaming data as between multiple compute resources

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 10,504,184 B2
- Document ID: US10504184B2
- Status: Granted
- Kind: B2
- Application number: 16/445,879
- Filed: 2019-06-19
- Published: 2019-10-03
- Granted: 2019-12-10
- Earliest claimed: 2006-06-19
- Assignees: IP Reservoir, LLC
- Applicants: IP Reservoir, LLC
- Inventors: Scott Parsons; David E. Taylor; David Vincent Schuehler; Mark A. Franklin; Roger D. Chamberlain
- Web page: https://patentgrep.com/patent/US10504184B2

## CPC

- G06Q 40/04: Trading; Exchange, e.g. stocks, commodities, derivatives or currency exchange
- G06Q 40/00: Finance; Insurance; Tax strategies; Processing of corporate or income taxes
- G06Q 40/06: Asset management; Financial planning or analysis
- G06Q: INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR

## Abstract

Systems and methods are disclosed for fast track routing of streaming data as between multiple compute resources. For example, the system may comprise a first processor, a second processor, a shared memory that is mapped into a kernel and user space of an operating system for the processor, a network protocol stack, and driver code for execution within the kernel space of the operating system while the operating system is in the kernel mode. The driver code can be configured to (1) maintain a kernel level interface into the network protocol stack, (2) copy the streaming data from the network protocol stack into the shared memory, wherein the copy operation is performed by the driver code without the operating system transitioning to the user mode, and (3) facilitate DMA transfers of data from the shared memory into the second processor for processing thereby.

## Claims

### Claim 1

A system for fast track routing of streaming data as between multiple compute resources, the system comprising:
a first processor configured to execute an operating system, the operating system including a user space for a user mode and a kernel space for a kernel mode;
a second processor;
a shared memory that is mapped into the kernel space and the user space of the operating system;
a network protocol stack for execution by the operating system, wherein the network protocol stack is configured to receive streaming data; and
driver code for execution within the kernel space of the operating system while the operating system is in the kernel mode, the driver code configured to (1) maintain a kernel level interface into the network protocol stack, (2) copy the streaming data from the network protocol stack into the shared memory, wherein the copy operation is performed by the driver code without the operating system transitioning to the user mode, and (3) facilitate DMA transfers of data from the shared memory into the second processor for processing thereby.

### Claim 2 (depends on 1)

The system of claim 1 wherein the driver code comprises:
a first driver for execution within the kernel space of the operating system while the operating system is in the kernel mode, the first driver configured to (1) maintain the kernel level interface into the network protocol stack, and (2) copy the streaming data from the network protocol stack into the shared memory, wherein the copy operation is performed by the first driver without the operating system transitioning to the user mode; and
a second driver for execution within the kernel space of the operating system while the operating system is in the kernel mode, the second driver configured to facilitate the DMA transfers of data from the shared memory into the second processor for processing thereby.

### Claim 3 (depends on 2)

The system of claim 2 wherein the shared memory comprises (1) a first shared memory that is mapped into the kernel space and the user space of the operating system, and (2) a second shared memory that is mapped into the kernel space and the user space of the operating system;
wherein the system further comprises user mode code for execution within the user space of the operating system, the user mode code configured to (i) access data from the first shared memory without the operating system transitioning to the kernel mode, (ii) process the accessed data, and (iii) write the processed data to the second shared memory; and
wherein the second driver is configured to facilitate the DMA transfers of data from the second shared memory into the second processor for processing thereby.

### Claim 4 (depends on 3)

The system of claim 3 wherein the first processor comprises a multi-core processor.

### Claim 5 (depends on 4)

The system of claim 4 wherein the user mode code comprises a plurality of processing threads for execution by cores of the multi-core processor.

### Claim 6 (depends on 3)

The system of claim 3 wherein the user mode code is configured to normalize the streaming data and write the normalized data into the second shared memory.

### Claim 7 (depends on 3)

The system of claim 3 wherein the first shared memory comprises a ring buffer, and wherein the second shared memory comprises a ring buffer.

### Claim 8 (depends on 2)

The system of claim 2 wherein the shared memory comprises (1) a first shared memory that is mapped into the kernel space and the user space of the operating system, and (2) a second shared memory that is mapped into the kernel space and the user space of the operating system;
wherein the first processor is loadable with user mode code for execution within the user space of the operating system;
wherein the first shared memory is readable by the user mode code without the operating system transitioning to the kernel mode;
wherein the second shared memory is writeable by the user mode code; and
wherein the second driver is configured to facilitate the DMA transfers of data from the second shared memory into the second processor for processing thereby.

### Claim 9 (depends on 8)

The system of claim 8 further comprising the user mode code.

### Claim 10 (depends on 2)

The system of claim 2 wherein the second driver is further configured to update a plurality of descriptor tables for facilitating the DMA transfers into the second processor.

### Claim 11 (depends on 1)

The system of claim 1 wherein the shared memory comprises a ring buffer.

### Claim 12 (depends on 1)

The system of claim 1 wherein the streaming data comprises data arranged in a plurality of fields.

### Claim 13 (depends on 12)

The system of claim 12 wherein the streaming data comprises a plurality of messages, each message comprising data arranged in a plurality of fields.

### Claim 14 (depends on 12)

The system of claim 12 wherein the streaming data comprises financial market data.

### Claim 15 (depends on 12)

The system of claim 12 wherein the second processor comprises a reconfigurable logic device.

### Claim 16 (depends on 15)

The system of claim 15 wherein the reconfigurable logic device comprises a field programmable gate array (FPGA).

### Claim 17 (depends on 15)

The system of claim 15 wherein the reconfigurable logic device comprises a firmware socket that receives data via the DMA transfers from the shared memory and streams the received data into the reconfigurable logic device for processing thereby.

### Claim 18 (depends on 17)

The system of claim 17 wherein the reconfigurable logic device further comprises a processing pipeline that processes the streaming data from the firmware socket.

### Claim 19 (depends on 1)

The system of claim 1 further comprising:
another memory, wherein the another memory is in the kernel space of the operating system;
additional driver code for execution within the kernel space of the operating system;
wherein the second processor is further configured to stream data into the another memory via DMA transfers; and
wherein the additional driver code is configured to read the data from the another memory.

### Claim 20 (depends on 19)

The system of claim 19 wherein the additional driver code is further configured to communicate the read data for delivery to a consumer.

### Claim 21 (depends on 20)

The system of claim 20 wherein the additional driver code is further configured to communicate the read data to the consumer via the network protocol stack.

### Claim 22 (depends on 21)

The system of claim 21 wherein the additional driver code is further configured to (1) maintain a kernel level interface into the network protocol stack, and (2) communicate the read data to the network protocol stack without the operating system transitioning to the user mode.

### Claim 23 (depends on 20)

The system of claim 20 wherein the additional driver code comprises:
a first driver for execution within the kernel space of the operating system while the operating system is in the kernel mode, the first driver configured to read the DMA-transferred data from the another memory; and
a second driver for execution within the kernel space of the operating system while the operating system is in the kernel mode, the second driver configured to (1) maintain a kernel level interface into the network protocol stack, and (2) communicate the read data to the network protocol stack without the operating system transitioning to the user mode.

### Claim 24

A system for fast track routing of streaming data as between multiple compute resources, the system comprising:
a first processor configured to execute an operating system, the operating system including a user space for a user mode and a kernel space for a kernel mode;
a second processor;
a shared memory that is mapped into the kernel space and the user space of the operating system, wherein the shared memory comprises a first buffer and a second buffer, the first buffer for storing data that is available for processing from the user mode of the operating system, the second buffer for storing data that is for direct transfer into the second processor;
additional memory in the kernel space of the operating system;
a network protocol stack for execution by the operating system, wherein the network protocol stack is configured to receive streaming data; and
driver code for execution within the kernel space of the operating system while the operating system is in the kernel mode;
wherein the driver code is configured to maintain a kernel level interface into the network protocol stack;
wherein the driver code is further configured to copy streaming data from the network protocol stack into the first buffer to make the copied streaming data instantly accessible to the user mode of the operating system, wherein the copy operation is performed by the driver code without the operating system transitioning to the user mode; and
wherein the driver code and the second processor are configured to cooperate with each other to stream data through the second processor via DMA transfers (1) from the second buffer into the second processor, and (2) from the second processor into the additional memory.

### Claim 25 (depends on 24)

The system of claim 24 wherein the first buffer comprises a ring buffer, and wherein the second buffer comprises a ring buffer.

### Claim 26 (depends on 25)

The system of claim 25 wherein the first processor comprises a multi-core processor, and wherein the first buffer comprises a plurality of ring buffers for storing data that is instantly accessible to different cores of the multi-core processor.

### Claim 27 (depends on 24)

The system of claim 24 wherein the driver code comprises:
a first driver for execution within the kernel space of the operating system while the operating system is in the kernel mode, the first driver configured to (1) maintain the kernel level interface into the network protocol stack, and (2) copy streaming data from the network protocol stack into the first buffer to make the copied streaming data instantly accessible to the user mode of the operating system, wherein the copy operation is performed by the first driver without the operating system transitioning to the user mode; and
a second driver for execution within the kernel space of the operating system while the operating system is in the kernel mode, the second driver configured to facilitate the DMA transfers of data from the second buffer into the second processor for processing thereby.

### Claim 28 (depends on 24)

The system of claim 24 further comprising:
user mode code for execution within the user space of the operating system, the user mode code configured to (i) access data in the first buffer without the operating system transitioning to the kernel mode, (ii) process the accessed data, and (iii) write the processed data to the second buffer.

### Claim 29 (depends on 24)

The system of claim 24 wherein the driver code is further configured to communicate outgoing data from the additional memory to the network protocol stack without the operating system transitioning to the user mode.

### Claim 30 (depends on 24)

The system of claim 24 wherein the streaming data comprises data arranged in a plurality of fields, and wherein the second processor comprises a reconfigurable logic device.
