IP Library Granted Patent US 11,809,750
Granted Patent B1
US 11,809,750 · App. 17/729,346 · Granted Nov 7, 2023

Automated overlay regrouping

Inventors: Venkatesh Naidu Pamoti (Bangalore, IN); Sabith B N (Bangalore, IN); Disha Parwani (Bangalore, IN)
Assignee: Western Digital Technologies, Inc.
G06F3/0659G06F3/0604G06F3/0653G06F3/0679
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,809,750
App. No.
17/729,346
Granted
Nov 7, 2023
Kind
B1
Abstract

In one example, a system includes a flash memory, a Random-Access Memory (RAM), and a controller. The flash memory stores first and second initial overlays, where the first initial overlay includes a first overlay function and the second initial overlay includes a second overlay function. The controller copies the first initial overlay into the RAM based on the first overlay function being called, swaps the first initial overlay with the second initial overlay based on the second overlay function being called, and monitors functions calls between the first and second overlay functions over a monitoring period. The controller determines whether a number of the function calls is greater than a threshold value, and based at least in part on the number of function calls being greater than the threshold value, re-groups the first and second overlay functions into a new overlay, and stores the new overlay in the flash memory.

Claims (65)

1. A system for dynamically re-grouping overlay functions, comprising:

a flash memory configured to store a first initial overlay and a second initial overlay, wherein the first initial overlay includes a first overlay function and the second initial overlay includes a second overlay function;

a Random-Access Memory (RAM); and

a controller configured to:

copy the first initial overlay into the RAM based on the first overlay function being called for execution by firmware;

swap the first initial overlay with the second initial overlay based on the second overlay function being called for execution by the firmware;

monitor function calls between the first overlay function and the second overlay function over a monitoring period;

determine whether a number of the function calls is greater than a threshold value; and

based, at least in part, on the number of the function calls being greater than the threshold value, re-group the first overlay function and the second overlay function into a new overlay; and

store the new overlay in the flash memory.

2. The system of claim 1 , wherein the controller is further configured to:

copy the new overlay into the RAM based, at least in part, on either the first overlay function or the second overlay function being called for execution by the firmware.

3. The system of claim 1 wherein the controller is further configured to:

generate a new offset table that maps the first overlay function and the second overlay function to the new overlay; and

store the new offset table in the flash memory.

4. The system of claim 3 , wherein the controller is further configured to:

copy the new overlay into the RAM based, at least in part, on the new offset table.

5. The system of claim 1 , wherein the first initial overlay and the second initial overlay are pre-defined at a compile time or a build time of the firmware, and the new overlay is dynamically defined during a runtime of the firmware.

6. The system of claim 1 , wherein the controller is further configured to:

export the number of the function calls to an external system.

7. The system of claim 6 , wherein the controller is further configured to:

receive, from the external system, an updated first initial overlay and an updated second initial overlay based on the number of the function calls, wherein one of the updated first initial overlay and the updated second initial overlay includes the first overlay function and the second overlay function; and

replace, in the flash memory, the first initial overlay and the second initial overlay with the updated first initial overlay and the updated second initial overlay.

8. A method of dynamically re-grouping overlay functions, comprising:

storing, in a flash memory, a first initial overlay and a second initial overlay, wherein the first initial overlay includes a first overlay function and the second initial overlay includes a second overlay function;

copying the first initial overlay into a Random-Access Memory (RAM) based on the first overlay function being called for execution by firmware;

swapping the first initial overlay with the second initial overlay based on the second overlay function being called for execution by the firmware;

monitoring function calls between the first overlay function and the second overlay function over a monitoring period;

determining whether a number of the function calls is greater than a threshold value; and

based, at least in part, on the number of the function calls being greater than the threshold value, re-grouping the first overlay function and the second overlay function into a new overlay; and

storing the new overlay in the flash memory.

9. The method of claim 8 , further comprising:

copying the new overlay into the RAM based, at least in part, on either the first overlay function or the second overlay function being called for execution by the firmware.

10. The method of claim 8 , further comprising:

generating a new offset table that maps the first overlay function and the second overlay function to the new overlay; and

storing the new offset table in the flash memory.

11. The method of claim 10 , further comprising:

copying the new overlay into the RAM based, at least in part, on the new offset table.

12. The method of claim 8 , the first initial overlay and the second initial overlay are pre-defined at a compile time or a build time of the firmware, and the new overlay is dynamically defined during a runtime of the firmware.

13. The method of claim 8 , further comprising:

exporting the number of the function calls to an external system.

14. The method of claim 13 , further comprising:

receiving, from the external system, an updated first initial overlay and an updated second initial overlay based on the number of the function calls, wherein one of the updated first initial overlay and the updated second initial overlay includes the first overlay function and the second overlay function; and

replacing, in the flash memory, the first initial overlay and the second initial overlay with the updated first initial overlay and the updated second initial overlay.

15. A system for dynamically re-grouping overlay functions, comprising:

a flash memory;

a Random-Access Memory (RAM);

means for storing a first initial overlay and a second initial overlay, wherein the first initial overlay includes a first set of overlay functions and the second initial overlay includes a second set of overlay functions;

means for copying the first initial overlay into the RAM based on at least one overlay function of the first set of overlay functions being called for execution by firmware;

means for swapping the first initial overlay with the second initial overlay based on at least one overlay function of the second set of overlay functions being called for execution by the firmware;

means for determining a number of function calls between each of the first set of overlay functions and the second set of overlay functions over a monitoring period;

based, at least in part, on the number of function calls being greater than a threshold value, means for re-grouping the at least one overlay function from each of the first set of overlay functions and the second set of overlay functions into a new overlay; and

means for storing the new overlay in the flash memory.

16. The system of claim 15 , further comprising:

means for copying the new overlay into the RAM based, at least in part, on the at least one overlay function from each of the first set of overlay functions and the second set of overlay functions being called for execution by the firmware.

17. The system of claim 15 , further comprising:

means for generating a new offset table that maps the at least one overlay function from each of the first set of overlay functions and the second set of overlay functions to the new overlay; and

means for storing the new offset table in the flash memory.

18. The system of claim 17 , further comprising:

means for copying the new overlay into the RAM based, at least in part, on the new offset table.

19. The system of claim 15 , wherein the first initial overlay and the second initial overlay are pre-defined at a compile time or a build time of the firmware, and the new overlay is dynamically defined during a runtime of the firmware.

20. The system of claim 15 , further comprising:

means for exporting the number of function calls between each of the first set of overlay functions and the second set of overlay functions to an external system;

means for receiving, from the external system, an updated first initial overlay and an updated second initial overlay based on the number of function calls, wherein one of the updated first initial overlay and the updated second initial overlay includes the at least one overlay function from each of the first set of overlay functions and the second set of overlay functions; and

means for replacing, in the flash memory, the first initial overlay and the second initial overlay with the updated first initial overlay and the updated second initial overlay.

Assignments (8)
PARTIAL RELEASE OF SECURITY INTERESTS Recorded Apr 25, 2025
From: JPMORGAN CHASE BANK, N.A., AS AGENT
To: SANDISK TECHNOLOGIES, INC.
Reel/Frame 071382/0001 →
SECURITY AGREEMENT Recorded Apr 25, 2025
From: SANDISK TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
Reel/Frame 071050/0001 →
PATENT COLLATERAL AGREEMENT Recorded Aug 23, 2024
From: SANDISK TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A., AS THE AGENT
Reel/Frame 068762/0494 →
CHANGE OF NAME Recorded Jun 27, 2024
From: SANDISK TECHNOLOGIES, INC.
To: SANDISK TECHNOLOGIES, INC.
Reel/Frame 067982/0032 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 29, 2024
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: SANDISK TECHNOLOGIES, INC.
Reel/Frame 067567/0682 →
PATENT COLLATERAL AGREEMENT - DDTL LOAN AGREEMENT Recorded Aug 21, 2023
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A.
Reel/Frame 067045/0156 →
PATENT COLLATERAL AGREEMENT - A&R LOAN AGREEMENT Recorded Aug 21, 2023
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A.
Reel/Frame 064715/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 26, 2022
From: PARWANI, DISHA; PAMOTI, VENKATESH NAIDU; BN, SABITH
To: WESTERN DIGITAL TECHNOLOGIES, INC.
Reel/Frame 059730/0005 →
Cited By (1)
US 12,474,897