IP Library Granted Patent US 8,381,224
Granted Patent B2
US 8,381,224 · App. 13/525,036 · Granted Feb 19, 2013

Software virtual machine for data ingestion

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 8,381,224
App. No.
13/525,036
Granted
Feb 19, 2013
Kind
B2
Abstract

In general, this disclosure is directed to a software virtual machine that provides high-performance transactional data acceleration optimized for multi-core computing platforms. The virtual machine utilizes an underlying parallelization engine that seeks to maximize the efficiencies of multi-core computing platforms to provide a highly scalable, high performance (lowest latency), virtual machine. In some embodiments, the virtual machine may be viewed as an in-memory virtual machine with an ability in its operational state to self organize and self seek, in real time, available memory work boundaries to automatically optimize maximum available throughput for data processing acceleration and content delivery of massive amounts of data.

Claims (72)

1. A device comprising:

a multi-core hardware processor having a plurality of execution cores;

an in-memory database comprising data stored within a plurality of memory partitions, wherein each of the memory partitions is associated with a different one of the execution cores;

a data ingest engine that establishes a plurality of concurrent network connections to external devices to receive incoming transactions; and

a parallelization engine that decomposes incoming transactions for the in-memory database into sub-transactions, deploys the sub-transactions to the execution cores associated with the respective memory partitions that store data for the sub-transactions, and concurrently executes the sub-transactions of the incoming transactions on the respective execution cores to which the sub-transactions are deployed, wherein the incoming transactions include a first transaction and a second transaction, wherein the first transaction and the second transaction include first data and second data, respectively, for insertion to the in-memory database,

wherein the parallelization engine comprises a first compiler task and a second compiler task that execute concurrently to decompose, respectively, the first transaction into a first set of sub-transactions and the second transaction into a second set of sub-transactions;

a first statement execution task that applies an assignment algorithm to the first data to identify a first one of the execution cores to execute one of the first set of sub-transactions; and

a second statement execution task that applies the assignment algorithm to the second data to identify a second one of the execution cores to execute one of the second set of sub-transactions,

wherein the one of the first set of sub-transactions and the one of the second set of sub-transactions execute concurrently on the first one of the execution cores and the second one of the execution cores, respectively.

2. The device of claim 1 , further comprising: a plurality of virtual machines that each operate in accordance with a virtual instruction set, wherein each of the virtual machines executes on a different one of the execution cores,

wherein the first statement execution task executes on one of the virtual machines to spawn and deploy, for each of the first set of sub-transactions, a sub-execution task to execute the sub-transaction on the identified one of the execution cores for the sub-transaction.

3. The device of claim 2 ,

wherein each of the virtual machines comprises a scheduler for the corresponding execution core, and

wherein each of the schedulers maintains a separate run list data structure that stores a reference to tasks scheduled for execution by the corresponding one of the plurality of execution cores.

4. The device of claim 2 ,

wherein each of the virtual machines includes a cross-queue data structure that stores references to tasks migrated to the virtual machine by a scheduler of a different one of the virtual machines.

5. The device of claim 1 ,

wherein the first statement execution task spawns a sub-execution task for each of the first set of sub-transactions; and

wherein the second statement execution task spawns a sub-execution task for each of the second set of sub-transactions,

wherein the sub-execution task for each of the first set of sub-transactions and the sub-execution task for each of the second set of sub-transactions execute concurrently on different ones of the execution cores.

6. The device of claim 1 , further comprising:

a content delivery engine that directs the parallelization engine to execute an aggregate transaction to aggregate respective data received in the incoming transactions,

wherein the content delivery engine outputs the data aggregated by the parallelization engine.

7. The device of claim 6 , wherein the parallelization engine decomposes the aggregate transaction into aggregate sub-transactions, the device further comprising:

a plurality of virtual machines that each operate in accordance with a virtual instruction set, wherein each of the virtual machines executes on a different one of the execution cores,

wherein the first statement execution task executes on one of the virtual machines to apply the assignment algorithm to the aggregate sub-transactions to identify the execution cores associated with the respective memory partitions that store respective data for the aggregate sub-transactions,

wherein the first statement execution task spawns and deploys, for each of the aggregate sub-transactions, a sub-execution task to execute the aggregate sub-transaction on the identified one of the execution cores for the aggregate sub-transaction,

wherein the sub-execution task for each of the aggregate sub-transactions executes concurrently to retrieve the respective data for the aggregate sub-transactions, and

wherein the first statement execution task receives and aggregates the respective data and sends the aggregated data to the content delivery engine.

8. A method comprising:

establishing a plurality of concurrent network connections to external devices with a data ingest engine;

receiving incoming transactions with the data ingest engine by the concurrent network connections;

decomposing, with a parallelization engine executing on a multi-core hardware processor having a plurality of execution cores, incoming transactions for an in-memory database into sub-transactions, wherein the in-memory database comprises data stored within a plurality of memory partitions, wherein each of the memory partitions is associated with a different one of the execution cores;

deploying, with the parallelization engine, the sub-transactions to the execution cores associated with respective memory partitions that store data for the sub-transactions; and

concurrently executing the sub-transactions of the incoming transactions on the respective execution cores to which the sub-transactions are deployed, wherein the incoming transactions include a first transaction and a second transaction, wherein the first transaction and the second transaction include first data and second data, respectively, for insertion to the in-memory database;

concurrently executing a first compiler task and a second compiler task of the parallelization engine in parallel to decompose, respectively, the first transaction into a first set of sub-transactions and the second transaction into a second set of sub-transactions;

executing a first statement execution task that applies an assignment algorithm to the first data to identify a first one of the execution cores to execute one of the first set of sub-transactions;

executing a second statement execution task that applies the assignment algorithm to the second data to identify a second one of the execution cores to execute one of the second set of sub-transactions; and

executing the one of the first set of sub-transactions and the one of the second set of sub-transactions concurrently on the first one of the execution cores and the second one of the execution cores, respectively.

9. The method of claim 8 , further comprising:

executing a plurality of virtual machines that each operate in accordance with a virtual instruction set, wherein each of the virtual machines executes on a different one of a plurality of execution cores of the multi-core hardware processor,

wherein the first statement execution task executes on one of the virtual machines to spawn and deploy, for each of the first set of sub-transactions, a sub-execution task to execute the sub-transaction on the identified one of the execution cores for the sub-transaction.

10. The method of claim 9 ,

wherein each of the virtual machines comprises a scheduler for the corresponding execution core, and

wherein each of the schedulers maintains a separate run list data structure that stores a reference to tasks scheduled for execution by the corresponding one of the plurality of execution cores.

11. The method of claim 10 ,

wherein each of the virtual machines includes a cross-queue data structure that stores references to tasks migrated to the virtual machine by a scheduler of a different one of the virtual machines.

12. The method of claim 8 , further comprising:

spawning, with the first statement execution task, a sub-execution task for each of the first set of sub-transactions; and

spawning, with the second statement execution task, a sub-execution task for each of the second set of sub-transactions,

wherein the sub-execution task for each of the first set of sub-transactions and the sub-execution task for each of the second set of sub-transactions execute concurrently on different ones of the execution cores.

13. The method of claim 8 , further comprising:

directing, with a content delivery engine, the parallelization engine to execute an aggregate transaction to aggregate respective data received in the incoming transactions;

outputting, with the content delivery engine, the data aggregated by the parallelization engine.

14. The method of claim 13 , wherein the parallelization engine decomposes the aggregate transaction into aggregate sub-transactions, the method further comprising:

executing a plurality of virtual machines that each operate in accordance with a virtual instruction set, wherein each of the virtual machines executes on a different one of a plurality of execution cores of the multi-core hardware processor;

executing the statement execution task on one of the virtual machines to apply an assignment algorithm to the aggregate sub-transactions to identify the execution cores associated with the respective memory partitions that store respective data for the aggregate sub-transactions,

wherein the first statement execution task spawns and deploys, for each of the aggregate sub-transactions, a sub-execution task to execute the aggregate sub-transaction on the identified one of the execution cores for the aggregate sub-transaction,

wherein the sub-execution task for each of the aggregate sub-transactions executes concurrently to retrieve the respective data for the aggregate sub-transactions, and

wherein the first statement execution task receives and aggregates the respective data and sends the aggregated data to the content delivery engine.

15. A computer-readable storage media comprising instructions that, when executed, cause a multi-core hardware processor having a plurality of execution cores to:

establish a plurality of concurrent network connections to external devices with a data ingest engine;

receive incoming transactions with the data ingest engine by the concurrent network connections;

decompose, with a parallelization engine, incoming transactions for an in-memory database into sub-transactions, wherein the in-memory database comprises data stored within a plurality of memory partitions, wherein each of the memory partitions is associated with a different one of the execution cores;

deploy, with the parallelization engine, the sub-transactions to the execution cores associated with respective memory partitions that store data for the sub-transactions; and

concurrently execute the sub-transactions of the incoming transactions on the respective execution cores to which the sub-transactions are deployed, wherein the incoming transactions include a first transaction and a second transaction, wherein the first transaction and the second transaction include first data and second data, respectively, for insertion to the in-memory database;

concurrently execute a first compiler task and a second compiler task of the parallelization engine to decompose, respectively, the first transaction into a first set of sub-transactions and the second transaction into a second set of sub-transactions;

execute a first statement execution task that applies an assignment algorithm to the first data to identify a first one of the execution cores to execute one of the first set of sub-transactions;

execute a second statement execution task that applies the assignment algorithm to the second data to identify a second one of the execution cores to execute one of the second set of sub-transactions; and

execute the one of the first set of sub-transactions and the one of the second set of sub-transactions concurrently on the first one of the execution cores and the second one of the execution cores, respectively.

16. The computer-readable storage media of claim 15 , wherein the instructions, when executed, further cause the multi-core hardware processor to: execute a plurality of virtual machines that each operate in accordance with a virtual instruction set, wherein each of the virtual machines executes on a different one of a plurality of execution cores of the multi-core hardware processor,

wherein the first statement execution task executes on one of the virtual machines to spawn and deploy, for each of the first set of sub-transactions, a sub-execution task to execute the sub-transaction on the identified one of the execution cores for the sub-transaction.

Assignments (16)
RELEASE OF SECURITY INTEREST IN ADDITIONAL COLLATERAL RECORDED AT REEL 069116 AND FRAME 0093 Recorded Jul 31, 2025
From: GLAS USA LLC
To: ARGYLE DATA, INC.
Reel/Frame 072306/0567 →
GRANT OF SECURITY INTEREST - PATENTS Recorded Jul 29, 2025
From: MAVENIR NETWORKS, INC.; MAVENIR SYSTEMS, INC.; ARGYLE DATA, INC.; MAVENIR, INC.; AQUTO CORPORATION; MAVENIR IPA UK LIMITED; MAVENIR SYSTEMS UK LIMITED; MAVENIR LTD.; MAVENIR US INC.
To: GLAS USA LLC
Reel/Frame 072245/0764 →
RELEASE (REEL 060640 / FRAME 0085) Recorded Jul 29, 2025
From: JPMORGAN CHASE BANK, N.A.
To: ARGYLE DATA, INC.
Reel/Frame 072262/0323 →
RELEASE (REEL 057221 / FRAME 0847) Recorded Jul 29, 2025
From: JPMORGAN CHASE BANK, N.A.
To: ARGYLE DATA, INC.
Reel/Frame 072262/0337 →
RELEASE OF SECURITY INTEREST IN COLLATERAL RECORDED AT REEL 067554 AND FRAME 0526 Recorded Jul 29, 2025
From: WILMINGTON SAVINGS FUND SOCIETY, FSB
To: ARGYLE DATA, INC
Reel/Frame 072263/0036 →
SECURITY INTEREST Recorded Jul 28, 2025
From: MAVENIR NETWORKS, INC.; MAVENIR SYSTEMS, INC.; ARGYLE DATA, INC.; MAVENIR, INC.; AQUTO CORPORATION; MAVENIR IPA UK LIMITED; MAVENIR SYSTEMS UK LIMITED; MAVENIR LTD.; MAVENIR US INC.
To: BLUE TORCH FINANCE LLC
Reel/Frame 072268/0439 →
RELEASE OF SECURITY INTEREST RECORDED AT R/F 068453/0451 Recorded Oct 4, 2024
From: WILMINGTON SAVINGS FUND SOCIETY, FSB
To: ARGYLE DATA, INC.
Reel/Frame 069116/0031 →
INTELLECTUAL PROPERTY SECURITY AGREEMENT Recorded Oct 4, 2024
From: ARGYLE DATA, INC.
To: GLAS USA LLC
Reel/Frame 069116/0093 →
SECURITY INTEREST Recorded Aug 30, 2024
From: ARGYLE DATA, INC.
To: WILMINGTON SAVINGS FUND SOCIETY, FSB
Reel/Frame 068453/0451 →
SECURITY INTEREST Recorded May 29, 2024
From: ARGYLE DATA, INC.
To: WILMINGTON SAVINGS FUND SOCIETY, FSB
Reel/Frame 067554/0526 →
SECURITY AGREEMENT Recorded Jul 13, 2022
From: ARGYLE DATA, INC.
To: JPMORGAN CHASE BANK, N.A.
Reel/Frame 060640/0085 →
TERMINATION AND RELEASE OF SECURITY INTEREST IN PATENT COLLATERAL - RELEASE OF 046139.0274 Recorded Aug 18, 2021
From: GOLDMAN SACHS LENDING PARTNERS LLC, AS COLLATERAL AGENT
To: ARGYLE DATA, INC.
Reel/Frame 057222/0462 →
SECURITY AGREEMENT Recorded Aug 18, 2021
From: ARGYLE DATA, INC.
To: JPMORGAN CHASE BANK, N.A.
Reel/Frame 057221/0847 →
GRANT OF SECURITY INTEREST IN PATENTS Recorded May 14, 2018
From: ARGYLE DATA, INC.
To: GOLDMAN SACHS LENDING PARTNERS LLC, AS COLLATERAL AGENT
Reel/Frame 046139/0274 →
CHANGE OF NAME Recorded Jul 10, 2014
From: UCIRRUS CORPORATION
To: ARGYLE DATA, INC.
Reel/Frame 033290/0945 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 15, 2012
From: HUETTER, RAYMOND J.; YAMARTI, ALKA
To: UCIRRUS
Reel/Frame 028387/0642 →