IP Library Granted Patent US 12,498,965
Granted Patent B2
US 12,498,965 · App. 18/212,888 · Granted Dec 16, 2025

Dynamic reconfiguration of applications on a multi-processor embedded system

Inventors: Wilbur William Kaku (Sunnyvale, CA); Michael Lyle Purnell (Scotts Valley, CA); Geoffrey Neil Ellis (Santa Cruz, CA); John Mark Beardslee (Menlo Park, CA); Zhong Qing Shang (Cupertino, CA); Teng-I Wang (Yorba Linda, CA); Stephen E. Lim (Scotts Valley, CA)
Assignee: HyperX Holdings LLC
G06F9/4843G06F8/656G06F9/445G06F9/461G06F9/4856G06F12/00
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 12,498,965
App. No.
18/212,888
Granted
Dec 16, 2025
Kind
B2
Abstract

A multiprocessor system and method for swapping applications executing on the multiprocessor system are disclosed. The plurality of applications may include a first application and a plurality of other applications. The first application may be dynamically swapped with a second application. The swapping may be performed without stopping the plurality of other applications. The plurality of other applications may continue to execute during the swapping to perform a real-time operation and process real-time data. After the swapping, the plurality of other applications may continue to execute with the second application, and at least a subset of the plurality of other applications may communicate with the second application to perform the real time operation and process the real time data.

Claims (73)

1 . A method, comprising:

loading a plurality of applications on a multiprocessor system, wherein the plurality of applications includes a first application and a plurality of other applications;

wherein the multiprocessor system includes a plurality of processors and a plurality of memories interspersed among the plurality of processors;

wherein loading the plurality of applications includes distributing instructions and data from the plurality of applications among different respective ones of the plurality of memories for execution by associated processors;

executing the plurality of applications on the multiprocessor system, wherein the plurality of applications executes together and communicate with each other to perform a real time operation;

swapping out the first application with a second application, wherein the second application is not one of the plurality of applications previously loaded and executing on the multiprocessor system, and wherein swapping out the first application with the second application comprises stopping the first application on a subset of processors of the multiprocessor system, decoupling communication of the first application with the plurality of other applications, loading the second application into a subset of the plurality of memories, and continuing execution of each application of the plurality of other applications;

determining whether the first application is currently being swapped with the second application; and

performing a debugging procedure based at least in part on the determination whether the first application is currently being swapped with the second application, wherein performing the debugging procedure comprises:

setting one or more breakpoints in the first application while it is swapped out, wherein the one or more breakpoints are active immediately for the first application and not for the plurality of other applications when the first application that is swapped out is swapped back in.

2 . The method of claim 1 , further comprising:

displaying, on a display, an indication of whether the first application is executing, the second application is executing, or the first application is currently being swapped with the second application during the debugging procedure,

wherein performing the debugging procedure comprises enabling a user to manually select an executing application for debugging.

3 . The method of claim 1 ,

wherein performing the debugging procedure based at least in part on the determination whether the first application is currently being swapped with the second application comprises:

applying a breakpoint to stop all executing applications and implement debugging commands.

4 . The method of claim 1 ,

wherein performing the debugging procedure based at least in part on the determination whether the first application is currently being swapped with the second application comprises:

debugging each application independently.

5 . The method of claim 1 ,

wherein performing the debugging procedure based at least in part on the determination whether the first application is currently being swapped with the second application comprises:

setting breakpoints in applications that are currently swapped out, wherein the breakpoints are active immediately when the applications that are currently swapped out are swapped back in.

6 . The method of claim 1 , wherein prior to swapping the first application with the second application, the first application executes on a first subset of the plurality of processors; and wherein swapping the first application with the second application includes:

stopping the first application on the first subset of the plurality of processors;

saving a state of the first application; and

loading the second application into memories associated with the first subset of the plurality of processors.

7 . The method of claim 1 , wherein swapping the first application with the second application includes loading the second application into two or more of the memories, wherein loading the second application includes sending program instructions of the second application through the multiprocessor system along two or more swapping routes, and wherein each of the swapping routes is associated with one of the two or more memories.

8 . A multiprocessor system, comprising:

a plurality of processors;

a plurality of memories interspersed among the processors, wherein the multiprocessor system is configured to:

load a plurality of applications on the multiprocessor system, wherein the plurality of applications includes a first application and a plurality of other applications, wherein loading the plurality of applications includes distributing instructions and data from the plurality of applications among different respective ones of the plurality of memories for execution by associated processors;

execute the plurality of applications on the multiprocessor system, wherein the plurality of applications executes together and communicate with each other to perform a real time operation;

swap out the first application with a second application, wherein the second application is not one of the plurality of applications previously loaded and executing on the multiprocessor system, wherein swapping out the first application with the second application comprises stopping the first application on a subset of processors of the multiprocessor system, decoupling communication of the first application with the plurality of other applications, loading the second application into a subset of the plurality of memories, and continuing execution of each application of the plurality of other applications;

determine whether the first application is currently being swapped with the second application; and

perform a debugging procedure based at least in part on the determination whether the first application is currently being swapped with the second application, wherein performing the debugging procedure based at least in part on the determination whether the first application is currently being swapped with the second application comprises setting one or more breakpoints in the first application while it is swapped out, wherein the one or more breakpoints are active immediately for the first application and not for the plurality of other applications when the first application that is swapped out is swapped back in.

9 . The multiprocessor system of claim 8 , wherein the multiprocessor is further configured to:

display, on a display, an indication of whether the first application is executing, the second application is executing, or the first application is currently being swapped with the second application during the debugging procedure,

wherein performing the debugging procedure comprises enabling a user to manually select an executing application for debugging.

10 . The multiprocessor system of claim 8 ,

wherein, in performing the debugging procedure based at least in part on the determination whether the first application is currently being swapped with the second application, the multiprocessor system is further configured to:

apply a breakpoint to stop all executing applications and implement debugging commands.

11 . The multiprocessor system of claim 8 ,

wherein, in performing the debugging procedure based at least in part on the determination whether the first application is currently being swapped with the second application, the multiprocessor system is further configured to:

debug each application independently.

12 . The multiprocessor system of claim 8 ,

wherein, in performing the debugging procedure based at least in part on the determination whether the first application is currently being swapped with the second application, the multiprocessor system is further configured to:

set breakpoints in applications that are currently swapped out, wherein the breakpoints are active immediately when the applications that are currently swapped out are swapped back in.

13 . The multiprocessor system of claim 8 , wherein prior to swapping the first application with the second application, the first application communicates structured data elements via a first buffer memory, wherein each data element has a beginning boundary and an ending boundary, and wherein the first buffer memory is configured to:

receive a request to discontinue data communication after transmission of a first data element has been initiated; and

continue transmission of the first data element up to the ending boundary of the first data element.

14 . The multiprocessor system of claim 8 , further comprising a plurality of data memory routers coupled between the plurality of processors, wherein the data memory routers include the plurality of memories interspersed among the processors.

15 . A non-transitory computer-accessible storage medium having program instructions stored therein that, in response to execution by a multiprocessor system comprising a plurality of memories interspersed among a plurality of respective associated processors, cause the multiprocessor system to:

load a plurality of applications on the multiprocessor system, wherein the plurality of applications includes a first application and a plurality of other applications, wherein loading the plurality of applications includes distributing instructions and data from the plurality of applications among different respective ones of the plurality of memories for execution by associated processors;

execute the plurality of applications on the multiprocessor system, wherein the plurality of applications executes together and communicate with each other to perform a real time operation;

swap out the first application with a second application, wherein the second application is not one of the plurality of applications previously loaded and executing on the multiprocessor system, wherein swapping out the first application with the second application includes continuing execution of each application of the plurality of other applications;

determine whether the first application is currently being swapped with the second application; and

perform a debugging procedure based at least in part on the determination whether the first application is currently being swapped with the second application, wherein performing the debugging procedure comprises:

setting one or more breakpoints in the first application while it is swapped out, wherein the one or more breakpoints are active immediately for the first application and not for the plurality of other applications when the first application that is swapped out is swapped back in.

16 . The non-transitory computer-accessible storage medium of claim 15 , wherein the program instructions are further executable to cause the multiprocessor system to:

display, on a display, an indication of whether the first application is executing, the second application is executing, or the first application is currently being swapped with the second application during the debugging procedure,

wherein performing the debugging procedure comprises enabling a user to manually select an executing application for debugging.

17 . The non-transitory computer-accessible storage medium of claim 15 ,

wherein, in performing the debugging procedure based at least in part on the determination whether the first application is currently being swapped with the second application, the program instructions are further executable to cause the multiprocessor system to:

apply a breakpoint to stop all executing applications and implement debugging commands.

18 . The non-transitory computer-accessible storage medium of claim 15 ,

wherein, in performing the debugging procedure based at least in part on the determination whether the first application is currently being swapped with the second application, the program instructions are further executable to cause the multiprocessor system to

debug each application independently.

19 . The non-transitory computer-accessible storage medium of claim 15 ,

wherein, in performing the debugging procedure based at least in part on the determination whether the first application is currently being swapped with the second application, the program instructions are further executable to cause the multiprocessor system to:

set breakpoints in applications that are currently swapped out, wherein the breakpoints are active immediately when the applications that are currently swapped out are swapped back in.

20 . The non-transitory computer-accessible storage medium of claim 15 , wherein prior to swapping the first application with the second application, the first application executes on a first subset of the plurality of processors; and wherein swapping the first application with the second application includes:

stopping the first application on the first subset of the plurality of processors;

saving a state of the first application; and

loading the second application into memories associated with the first subset of the plurality of processors.

Assignments (4)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 8, 2025
From: PACIFIC CAP ACQUISITION FUND, LLC
To: HYPERX HOLDINGS LLC
Reel/Frame 072342/0090 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 6, 2025
From: COHERENT LOGIX, INC.
To: PACIFIC CAP ACQUISITION FUND, LLC
Reel/Frame 072370/0394 →
SECURITY INTEREST Recorded May 6, 2024
From: COHERENT LOGIX, INCORPORATED
To: PACIFIC CAP ACQUISITION FUND, LLC
Reel/Frame 067325/0476 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 22, 2023
From: KAKU, WILBUR WILLIAM; PURNELL, MICHAEL LYLE; ELLIS, GEOFFREY NEIL; BEARDSLEE, JOHN MARK; SHANG, ZHONG QING; WANG, TENG-I; LIM, STEPHEN E.
To: COHERENT LOGIX, INCORPORATED
Reel/Frame 064030/0207 →
Continuity (5)
Continuation 17243890 · Apr 29, 2021
Continuation 15976021 · May 10, 2018
Continuation 14921281 · Oct 23, 2015
Continuation 13896577 · May 17, 2013
Related Publication 20230409380A1 · Dec 21, 2023
References Cited (46)
US 5649112A · Yeager et al. · 1997 [cited by applicant]
US 6708326B1 · Bhattacarya · 2004 [cited by examiner]
US 7360221B2 · Alverson · 2008 [cited by applicant]
US 7853934B2 · Partamian · 2010 [cited by applicant]
US 8140829B2 · Eickemeyer · 2012 [cited by applicant]
US 8561078B2 · Sandstrom · 2013 [cited by applicant]
US 8924619B2 · Cohen et al. · 2014 [cited by applicant]
US 20020178274A1 · Kovacevic · 2002 [cited by examiner]
US 20050188372A1 · Inoue et al. · 2005 [cited by applicant]
US 20070226686A1 · Beardslee et al. · 2007 [cited by applicant]
US 20120137119A1 · Doerr et al. · 2012 [cited by applicant]
US 20120210103A1 · Liao · 2012 [cited by examiner]
US 20130007718A1 · Bates · 2013 [cited by examiner]
US 20130081044A1 · Sandstrom · 2013 [cited by examiner]
US 20130111158A1 · Suzuki et al. · 2013 [cited by applicant]
US 20130117168A1 · Sandstrom · 2013 [cited by applicant]
US 20140281057A1 · Cohen · 2014 [cited by examiner]
CN 1549964A · 2004 [cited by applicant]
CN 1910554 · 2007 [cited by applicant]
CN 101479704A · 2009 [cited by applicant]
CN 101667138 · 2010 [cited by applicant]
EP 1326165A2 · 2003 [cited by applicant]
JP H10326195A · 1998 [cited by applicant]
JP 2001189387A · 2001 [cited by applicant]
JP 2002215712A · 2002 [cited by applicant]
WO 0072528A1 · 2000 [cited by applicant]
WO 2004003781A2 · 2004 [cited by applicant]
WO 2012051577A1 · 2012 [cited by applicant]
NPL Mitchell “Multi-core and Multi-threaded SoCs Present New Debugging Challenges”, MIPS Technologies, Aug. 2003. (Year: 2003). [cited by examiner]
Wahlah, Muhammad Aqeel and Kees Goossens, “Composable and Persistent-State Application Swapping on FPGAs Using Hardwired Network on Chip,” IEEE 2009 International Conference on Reconfigurable Computing and FPGAs; Dec. 9… [cited by applicant]
Office Action, Chinese Application for Invention No. 201380077900.X, mailed Jun. 19, 2018, 26 pages. [cited by applicant]
European Search Report, Application No. 19158284.0, mailed Oct. 29, 2019, 12 pages. [cited by applicant]
Notice of Reason for Refusal, Application No. JP 2018-233478, mailed Nov. 19, 2019, 7 pages. [cited by applicant]
Fujikura, Toshiyuki “Introduction to Embedded Programming Knowhow, Part 1: What is a multi-task system?”, Interface, Japan, CQ Publishing Co.,Ltd., Mar. 1, 2002, vol. 28, No. 3, pp. 132-140. [cited by applicant]
Intemational Search Report and Written Opinion for PCT/US2013/041942, date mailed Jan. 30, 2014, 10 pgs. [cited by applicant]
Written Opinion for PCT/US2013/041942, date mailed Jan. 6, 2015, 5 pgs. [cited by applicant]
Office Action dated Mar. 28, 2017 in JP Appln No. JP2016-513913, 10 pgs. [cited by applicant]
Extended European Search Report for EP Appln. No. 17185840.0 dated Dec. 12, 2017, 11 pgs. [cited by applicant]
Office Action in JP Appln. No. 2017-198250 dated Aug. 28, 2018, 3 pgs. [cited by applicant]
Office Action in JP Appln. No. 2018-233478 dated Nov. 19, 2019, 7 pgs. [cited by applicant]
Toshiyuki Fukijura, “Introduction to Embedded Programming Knowhow, Part 1: What is a multi-task system?”, Interface, Japan, CQ Publishing Co., Ltd., Mar. 1, 2002, vol. 28, No. 3, pp. 132-140. [cited by applicant]
Atsushi Sawada, “Built-in Software Development Technology”; vol. 3, No. 1; CQ Publishing Company; Japan; May 24, 2021; pp. 228-235. [cited by applicant]
Japanese Office Action; Application No. 2020-126852; mailed Aug. 31, 2021; 10 pgs. [cited by applicant]
Simmler, H., et al., “Multitasking on FPGA Coprocessors”, Electronic Publishing, Artistic Imaging, and Digital Typography; Springer Verlag, Germany; Aug. 2000, 10 pgs. [cited by applicant]
Kalte, Heiko, et al., “Context Saving and Restoring for Multitasking in Reconfigurable Systems”, Proceedings / 2005 International Conference on Field Programmable Logic and Applications; Tampere Hall, Tampere, Finland; … [cited by applicant]
Extended European Search Report; European Application No. 23156978.1; mailed Aug. 28, 2023; 13 pgs. [cited by applicant]