# US 9,519,593 B2 · Method for increasing cache size

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

- Number: US 9,519,593 B2
- Document ID: US9519593B2
- Status: Granted
- Kind: B2
- Application number: 14/925,437
- Filed: 2015-10-28
- Published: 2016-02-18
- Granted: 2016-12-13
- Earliest claimed: 2009-05-18
- Assignees: Hola Networks Ltd.
- Applicants: Hola Networks Ltd.
- Inventors: Derry Shribman; Ofer Vilenski
- Web page: https://patentgrep.com/patent/US9519593B2

## CPC

- G06F 12/0846: Cache with multiple tag or data arrays being simultaneously accessible
- G06F 12/023: {Free address space management}
- G06F 12/0851: {Cache with interleaved addressing}
- G06F 12/0871: Allocation or management of cache space
- G06F 12/0875: with dedicated cache, e.g. instruction or stack
- G06F 12/12: Replacement control
- G06F 12/128: adapted to multidimensional cache systems, e.g. set-associative, multicache, multiset or multilevel
- G06F 16/172: Caching, prefetching or hoarding of files
- G06F 12/0842: for multiprocessing or multitasking
- G06F 2212/1044: Space efficiency improvement
- G06F 2212/403: Error protection encoding, e.g. using parity or ECC codes
- G06F 2212/452: Instruction code
- G06F 2212/604: Details relating to cache allocation
- G06F 2212/6042: Allocation of cache space to multiple users or processors
- G06F 2212/621: Coherency control relating to peripheral accessing, e.g. from DMA or I/O device
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

A method for increasing storage space in a system containing a block data storage device, a memory, and a processor is provided. Generally, the processor is configured by the memory to tag metadata of a data block of the block storage device indicating the block as free, used, or semifree. The free tag indicates the data block is available to the system for storing data when needed, the used tag indicates the data block contains application data, and the semifree tag indicates the data block contains cache data and is available to the system for storing application data type if no blocks marked with the free tag are available to the system.

## Claims

### Claim 1

A method for using a resource by one or more applications, the resource comprising multiple resource components that are individually accessed and controlled by an operating system for being used by the one or more applications, each of the resource components is tagged using a first tag, a second tag, or a third tag, and each of the resource components is capable of being used by the one or more applications for a first purpose and a second purpose, the method comprising the steps of:
receiving, from an application, a request to use a resource component for the first purpose; and
determining if a first resource component associated with the first tag is available in the resource;
if a first resource component associated with the first tag is available, then:
selecting the first resource component associated with the first tag;
using the selected first resource component by the application for the first purpose; and
tagging the first resource component with the third tag;
if a first resource component associated with the first tag is not available in the resource, then:
selecting a second resource component associated with the second tag; and
using the selected second resource component by the application for the first purpose;
and changing a resource component tag from the second or third tag to the first tag.

### Claim 2 (depends on 1)

The method according to claim 1 further comprising the step of tagging the second resource component with the third tag.

### Claim 3 (depends on 1)

The method according to claim 1 further comprising the steps of:
receiving, from an application, a request to use a resource component for the second purpose; and
determining if a third resource component associated with the first tag is available in the resource;
if a third resource component associated with the first tag is available, then:
selecting the third resource component associated with the first tag;
using the third resource component by the application for the second purpose; and
tagging the third resource component with the second tag.

### Claim 4 (depends on 1)

The method according to claim 1 further comprising the steps of:
determining if a resource component associated with the first tag or with the second tag is available for use; and
notifying the application if no resource component in the resource is associated with the first tag or with the second tag.

### Claim 5 (depends on 4)

The method according to claim 4 wherein the notifying includes returning an error code.

### Claim 6 (depends on 1)

The method according to claim 1 wherein the resource is a data storage device, the resource components are data storage blocks in the data storage device, and the first purpose is storing data in the data storage blocks.

### Claim 7 (depends on 6)

The method according to claim 6 wherein the second purpose is storing cache data in the data storage blocks.

### Claim 8 (depends on 6)

The method according to claim 6 wherein the first tag is associated with a data block available for storing data by the application.

### Claim 9 (depends on 6)

The method according to claim 6 wherein the second and third tags are associated with a data block not available for storing data by the application.

### Claim 10 (depends on 1)

The method according to claim 1 wherein each resource component is associated with an entry that comprises a component identifier.

### Claim 11 (depends on 10)

The method according to claim 10 wherein the resource is a data storage device and the resource components are data storage blocks in the data storage device, and wherein each entry comprises a block index, a block checksum, and a verification field that indicates if the block corresponding to the entry is verified.

### Claim 12 (depends on 11)

The method according to claim 11 further comprising the step of obtaining the entry associated with at least one of the resource components entries.

### Claim 13 (depends on 11)

The method according to claim 11 further comprising the step of calculating a checksum for at least one of the resource components.

### Claim 14 (depends on 13)

The method according to claim 13 further comprising the step of storing the calculated checksum for at least one of the resource components.

### Claim 15 (depends on 13)

The method according to claim 13 further comprising the step of comparing a stored calculated checksum to the calculated checksum.

### Claim 16 (depends on 15)

The method according to claim 15 wherein if the stored calculated checksum of a resource component matches the calculated checksum of the resource component, tagging the respective resource component as verified.

### Claim 17 (depends on 15)

The method according to claim 15 wherein if the stored calculated checksum of a resource component does not match the calculated checksum of the resource component, tagging the respective resource component as non-verified.

### Claim 18 (depends on 1)

The method according to claim 1 wherein at least part of the steps interfaces an operating system using an operating system Application Programming Interface (API).

### Claim 19 (depends on 1)

The method according to claim 1 wherein at least part of the steps are based on, or use, intercepting a communication with an operating system.

### Claim 20 (depends on 19)

The method according to claim 19 wherein at least part of the steps include using transparent proxy to the operating system.

### Claim 21 (depends on 19)

The method according to claim 19 wherein at least part of the steps include communicating with a file system of the operating system.

### Claim 22 (depends on 1)

A non-transitory computer readable medium containing computer instructions that, when executed or interpreted by a processor, cause the processor to perform the steps of claim 1.
