# US 11,121,928 B2 · Opportunistic block transmission with time constraints

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

- Number: US 11,121,928 B2
- Document ID: US11121928B2
- Status: Granted
- Kind: B2
- Application number: 16/814,604
- Filed: 2020-03-10
- Published: 2020-10-08
- Granted: 2021-09-14
- Earliest claimed: 2005-03-23
- Assignees: Numecent Holdings, Inc.
- Applicants: Numecent Holdings, Inc.
- Inventors: Jeffrey DeVries; Arthur S. Hitomi
- Web page: https://patentgrep.com/patent/US11121928B2

## CPC

- G06F 12/0862: with prefetch
- H04L 65/612: for unicast
- H04L 65/70: Media network packetisation
- H04L 67/5681: Pre-fetching or pre-delivering data based on network characteristics
- G06F 12/0802: Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F 12/0864: using pseudo-associative means, e.g. set-associative or hashing
- G06F 13/1673: {using buffers}
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)
- H04L: TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION (arrangements common to telegraphic and telephonic communication H04M)

## Abstract

A technique for determining a data window size allows a set of predicted blocks to be transmitted along with requested blocks. A stream enabled application executing in a virtual execution environment may use the blocks when needed.

## Claims

### Claim 1

A method comprising:
receiving, from a virtual execution environment, a first request for a resource of a stream-enabled application executing in the virtual execution environment;
translating the first request for the resource of the stream-enabled application into one or more block IDs of one or more blocks that includes the resource;
determining, using the one or more block IDs, which blocks of the one or more blocks that includes the resource are present in a cache;
in response to determining which blocks of the one or more blocks that includes the resource are present in the cache:
locking the blocks that are present in the cache;
transmitting a second request for the blocks that are not present in the cache to a streaming server;
receiving the blocks that are not present in the cache from the streaming server;
determining one or more predictively streamed blocks that are likely to be requested following the first request for the resource;
transmitting the one or more blocks that includes the resource to the virtual execution environment;
transmitting the one or more predictively streamed blocks to the virtual execution environment;
storing the one or more predictively streamed blocks in the cache;
unlocking the blocks that include the resource that were present in the cache.

### Claim 2 (depends on 1)

The method of claim 1, wherein storing the one or more predictively streamed blocks in the cache comprises replacing one or more blocks in the cache that are not needed for executing the stream-enabled application.

### Claim 3 (depends on 1)

The method of claim 1, further comprising aggregating the one or more predictively streamed blocks prior to transmitting the one or more predictively streamed blocks to the virtual execution environment.

### Claim 4 (depends on 1)

The method of claim 1, wherein the one or more predictively streamed blocks are transmitted in an amount of time that is less than or equal to an interactivity threshold.

### Claim 5 (depends on 4)

The method of claim 4, wherein the interactivity threshold is an amount of time that a user is willing to wait for the virtual execution environment to access the resource.

### Claim 6 (depends on 4)

The method of claim 4, wherein the interactivity threshold is adapted to limit an amount of time for transmitting blocks to preserve a quality of execution of the stream-enabled application.

### Claim 7 (depends on 1)

The method of claim 1, further comprising:
receiving, from the virtual execution environment, a request for a second resource of the stream-enabled application;
determining whether the one or more predictively streamed blocks in the cache at least partially satisfy the request for the second resource;
in response to determining that the one or more predictively streamed blocks in the cache at least partially satisfy the request for the second resource, partially satisfying the request for the second resource using the one or more predictively streamed blocks in the cache;
requesting, from the streaming server, one or more additional blocks to completely satisfy the request for the second resource;
transmitting the one or more additional blocks to the virtual execution environment.

### Claim 8 (depends on 1)

The method of claim 1, wherein the determining the one or more predictively streamed blocks that are likely to be requested is based on an occurrence of an error condition in executing the stream-enabled application.

### Claim 9 (depends on 1)

The method of claim 1, wherein the one or more predictively streamed blocks are transmitted as part of an output buffer, the one or more predictively streamed blocks being organized in the output buffer according to a probability of each of the one or more predictively streamed blocks being requested.

### Claim 10 (depends on 9)

The method of claim 9, wherein the probability of each of the one or more predictively streamed blocks being requested is based on probability data in a logical block probability table.

### Claim 11

A system comprising:
a virtual execution environment;
a cache;
a block granularity caching engine;
wherein, in operation, the block granularity caching engine:
receives, from the virtual execution environment, a first request for a resource of a stream-enabled application executing in the virtual execution environment;
translates the first request for the resource of the stream-enabled application into one or more block IDs of one or more blocks that includes the resource;
determines, using the one or more block IDs, which blocks of the one or more blocks that includes the resource are present in the cache;
in response to determining which blocks of the one or more blocks that includes the resource are present in the cache:
locks the blocks that are present in the cache;
transmits a second request for the blocks that are not present in the cache to a streaming server;
receives the blocks that are not present in the cache from the streaming server;
determines one or more predictively streamed blocks that are likely to be requested following the first request for the resource;
transmits the one or more blocks that includes the resource to the virtual execution environment;
transmits the one or more predictively streamed blocks to the virtual execution environment;
stores the one or more predictively streamed blocks in the cache;
unlocks the blocks that include the resource that were present in the cache.

### Claim 12 (depends on 11)

The system of claim 11, wherein storing the one or more predictively streamed blocks in the cache comprises replacing one or more blocks in the cache that are not needed for executing the stream-enabled application.

### Claim 13 (depends on 11)

The system of claim 11, wherein, in operation, the block granularity caching engine aggregates the one or more predictively streamed blocks prior to transmitting the one or more predictively streamed blocks to the virtual execution environment.

### Claim 14 (depends on 11)

The system of claim 11, wherein the one or more predictively streamed blocks are transmitted in an amount of time that is less than or equal to an interactivity threshold.

### Claim 15 (depends on 14)

The system of claim 14, wherein the interactivity threshold is an amount of time that a user is willing to wait for the virtual execution environment to access the resource.

### Claim 16 (depends on 14)

The system of claim 14, wherein the interactivity threshold is adapted to limit an amount of time for transmitting blocks to preserve a quality of execution of the stream-enabled application.

### Claim 17 (depends on 11)

The system of claim 11, wherein, in operation, the block granularity caching engine:
receives, from the virtual execution environment, a request for a second resource of the stream-enabled application;
determines whether the one or more predictively streamed blocks in the cache at least partially satisfy the request for the second resource;
in response to determining that the one or more predictively streamed blocks in the cache at least partially satisfy the request for the second resource, partially satisfies the request for the second resource using the one or more predictively streamed blocks in the cache;
requests, from the streaming server, one or more additional blocks to completely satisfy the request for the second resource;
transmits the one or more additional blocks to the virtual execution environment.

### Claim 18 (depends on 11)

The system of claim 11, wherein the determining the one or more predictively streamed blocks that are likely to be requested is based on an occurrence of an error condition in executing the stream-enabled application.

### Claim 19 (depends on 11)

The system of claim 11, wherein the one or more predictively streamed blocks are transmitted as part of an output buffer, the one or more predictively streamed blocks being organized in the output buffer according to a probability of each of the one or more predictively streamed blocks being requested.

### Claim 20

A system comprising:
means for receiving, from a virtual execution environment, a first request for a resource of a stream-enabled application executing in the virtual execution environment;
means for translating the first request for the resource of the stream-enabled application into one or more block IDs of one or more blocks that includes the resource;
means for determining, using the one or more block IDs, which blocks of the one or more blocks that includes the resource are present in a cache;
in response to determining which blocks of the one or more blocks that includes the resource are present in the cache:
means for locking the blocks that are present in the cache;
means for transmitting a second request for the blocks that are not present in the cache to a streaming server;
means for receiving the blocks that are not present in the cache from the streaming server;
means for determining one or more predictively streamed blocks that are likely to be requested following the first request for the resource;
means for transmitting the one or more blocks that includes the resource to the virtual execution environment;
means for transmitting the one or more predictively streamed blocks to the virtual execution environment;
means for storing the one or more predictively streamed blocks in the cache;
means for unlocking the blocks that include the resource that were present in the cache.
