IP Library Granted Patent US 11,100,001
Granted Patent B2
US 11,100,001 · App. 15/971,569 · Granted Aug 24, 2021

Techniques for improving space utilization in a cache

Inventors: Ariel Yaroshevich (Tel Aviv, IL); Jonathan Goldfeld (Omer, IL)
Assignee: Sisense Ltd.
G06F12/0875G06F9/3017G06F9/3808G06F12/0871G06F12/0891G06F16/00G06F2212/452
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 11,100,001
App. No.
15/971,569
Granted
Aug 24, 2021
Kind
B2
Abstract

A system and method for efficient cache space utilization by a processing circuitry having a cache. The method includes determining, among a plurality of instructions executed by the processing circuitry, a cacheable block of instructions for execution by the processing circuitry, wherein the cacheable block of instructions has an input, an output, and an intermediary result confined locally to the cacheable block of instructions; generating a unified instruction based on the cacheable block of instructions, wherein the unified instruction results in the same output as the cacheable block of instructions when the same input is received; and storing the unified instruction in the cache.

Claims (37)

1. A method for efficient cache space utilization by a processing circuitry including a cache, the method comprising:

determining whether a number of executions of a first instruction is at or above a first threshold, wherein the first threshold is at least 2;

determining whether a number of executions of a second instruction is at or above a second threshold when it is determined that the number of executions of the first instruction is at or above the first threshold;

determining, among a plurality of instructions executed by the processing circuitry, a cacheable block of instructions for execution by the processing circuitry, wherein the cacheable block of instructions has an input, an output, and an intermediary result confined locally to the cacheable block of instructions, wherein the cacheable block of instructions includes the first instruction and the second instruction when it is determined that the number of executions of the first instruction is at or above the first threshold and that the number of executions of the second instruction is at or above the second threshold, wherein the first instruction generates the intermediary result based on the input, wherein the second instruction generates the output based on the intermediary result;

generating a unified instruction based on the cacheable block of instructions, wherein the unified instruction results in the same output as the cacheable block of instructions when the same input is received; and

storing the unified instruction in the cache.

2. The method of claim 1 , wherein the unified instruction is stored in the cache for a predetermined amount of time.

3. The method of claim 1 , wherein the unified instruction is removed from the cache when it is determined that a number of executions of the unified instruction is below a predetermined threshold for a period of time.

4. The method of claim 1 , wherein determining the cacheable block of instructions further comprises:

identifying a potentially cacheable block of instructions including the first instruction, the second instruction, and the intermediary result of the first instruction used by the second instruction that is locally confined to the identified block of instructions.

5. The method of claim 4 , wherein the identified block of instructions is determined to be cacheable when the number of executions of the first instruction is at or above the first threshold.

6. The method of claim 4 , wherein the identified block of instructions is determined to be cacheable when the number of executions of the second instruction is at or above the second threshold.

7. The method of claim 4 , wherein the identified block of instructions is determined to be cacheable when the number of executions of the first instruction is above the first threshold and the number of executions of the second instruction is at or above the second threshold.

8. The method of claim 1 , wherein the plurality of instructions is performed on a columnar database.

9. The method of claim 1 , wherein the first threshold is different from the second threshold.

10. A non-transitory computer readable medium having stored thereon instructions for causing a processor to execute a process for efficient cache space utilization by a processing circuitry including a cache, the process comprising:

determining whether a number of executions of a first instruction is at or above a first threshold, wherein the first threshold is at least 2;

determining whether a number of executions of a second instruction is above a second threshold when it is determined that the number of executions of the first instruction is at or above the first threshold;

determining, among a plurality of instructions executed by the processing circuitry, a cacheable block of instructions for execution by the processing circuitry, wherein the cacheable block of instructions has an input, an output, and an intermediary result confined locally to the cacheable block of instructions, wherein the cacheable block of instructions includes the first instruction and the second instruction when it is determined that the number of executions of the first instruction is at or above the first threshold and that the number of executions of the second instruction is at or above the second threshold, wherein the first instruction generates the intermediary result based on the input, wherein the second instruction generates the output based on the intermediary result;

generating a unified instruction based on the cacheable block of instructions, wherein the unified instruction results in the same output as the cacheable block of instructions when the same input is received; and

storing the unified instruction in the cache.

11. A system for efficient cache space utilization, comprising:

a processing circuitry including a cache, wherein the processing circuitry is configured to execute at least a plurality of instructions; and

a memory, the memory containing instructions that, when executed by the processing circuitry, configure the system to:

determine whether a number of executions of a first instruction is at or above a first threshold, wherein the first threshold is at least 2;

determine whether a number of executions of a second instruction is at or above a second threshold when it is determined that the number of executions of the first instruction is at or above the first threshold;

determine, among a plurality of instructions executed by the processing circuitry, a cacheable block of instructions for execution by the processing circuitry, wherein the cacheable block of instructions has an input, an output, and an intermediary result confined locally to the cacheable block of instructions, wherein the cacheable block of instructions includes the first instruction and the second instruction when it is determined that the number of executions of the first instruction is at or above the first threshold and that the number of executions of the second instruction is at or above the second threshold, wherein the first instruction generates the intermediary result based on the input, wherein the second instruction generates the output based on the intermediary result;

generate a unified instruction based on the cacheable block of instructions, wherein the unified instruction results in the same output as the cacheable block of instructions when the same input is received; and

store the unified instruction in the cache.

12. The system of claim 11 , wherein the unified instruction is stored in the cache for a predetermined amount of time.

13. The system of claim 11 , wherein the unified instruction is removed from the cache when it is determined that a number of executions of the unified instruction is below a predetermined threshold for a period of time.

14. The system of claim 11 , wherein the system is further configured to:

identify a potentially cacheable block of instructions including the first instruction, the second instruction, and the intermediary result of the first instruction used by the second instruction that is locally confined to the identified block of instructions.

15. The system of claim 14 , wherein the identified block of instructions is determined to be cacheable when the number of executions of the first instruction is at or above the first threshold.

16. The system of claim 14 , wherein the identified block of instructions is determined to be cacheable when the number of executions of the second instruction is at or above the second threshold.

17. The system of claim 14 , wherein the identified block of instructions is determined to be cacheable when the number of executions of the first instruction is at or above the first threshold and the number of executions of the second instruction is at or above the second threshold.

18. The system of claim 11 , wherein the plurality of instructions is performed on a columnar database.

Assignments (8)
RELEASE OF SECURITY INTEREST Recorded Jun 16, 2023
From: TRIPLEPOINT VENTURE GROWTH BDC CORP
To: SISENSE SF, INC.; SISENSE LTD.
Reel/Frame 063980/0047 →
SECURITY INTEREST Recorded Jun 14, 2023
From: SISENSE LTD; SISENSE SF INC.
To: HERCULES CAPITAL, INC.
Reel/Frame 063948/0662 →
RELEASE OF SECURITY INTEREST Recorded Jun 9, 2023
From: COMERICA BANK
To: SISENSE LTD.
Reel/Frame 063915/0257 →
RELEASE OF SECURITY INTEREST Recorded Sep 24, 2021
From: SILICON VALLEY BANK, AS AGENT
To: SISENSE LTD
Reel/Frame 057594/0926 →
SECURITY INTEREST Recorded Sep 24, 2021
From: SISENSE LTD.
To: COMERICA BANK
Reel/Frame 057588/0698 →
RELEASE OF SECURITY INTEREST Recorded Sep 24, 2021
From: SILICON VALLEY BANK
To: SISENSE LTD
Reel/Frame 057594/0867 →
INTELLECTUAL PROPERTY SECURITY AGREEMENT Recorded Mar 30, 2020
From: SISENSE LTD
To: SILICON VALLEY BANK
Reel/Frame 052267/0313 →
INTELLECTUAL PROPERTY SECURITY AGREEMENT Recorded Mar 30, 2020
From: SISENSE LTD
To: SILICON VALLEY BANK, AS AGENT
Reel/Frame 052267/0325 →
Continuity (2)
Provisional Application 62501135 · May 4, 2017
Related Publication 20180322065A1 · Nov 8, 2018