DETAILED ACTION
Claims 1-11 are cancelled. Claims 12, 21, 22, 24, and 25 are amended. Claims 12-25 are pending in the application.
Notice of Pre-AIA or AIA Status
The present application, filed on or after March 16, 2013, is being examined under the first inventor to file provisions of the AIA .
In the event the determination of the status of the application as subject to AIA 35 U.S.C. 102 and 103 (or as subject to pre-AIA 35 U.S.C. 102 and 103) is incorrect, any correction of the statutory basis (i.e., changing from AIA to pre-AIA ) for the rejection will not be considered a new ground of rejection if the prior art relied upon, and the rationale supporting the rejection, would be the same under either status.
Examiner’s Notes
The Examiner cites particular sections in the references as applied to the claims below for the convenience of the applicant(s). Although the specified citations are representative of the teachings in the art and are applied to the specific limitations within the individual claim, other passages and figures may apply as well. It is respectfully requested that, in preparing responses, the applicant(s) fully consider the references in their entirety as potentially teaching all or part of the claimed invention, as well as the context of the passage as taught by the prior art or disclosed by the Examiner.
Priority
Receipt is acknowledged of certified copies of papers required by 37 CFR 1.55.
Information Disclosure Statement
The listing of references in the specification is not a proper information disclosure statement (see the non-patent literature documents listed on pages 3-4). 37 CFR 1.98(b) requires a list of all patents, publications, or other information submitted for consideration by the Office, and MPEP § 609.04(a) states, "the list may not be incorporated into the specification but must be submitted in a separate paper." Therefore, unless the references have been cited by the examiner on form PTO-892, they have not been considered.
Response to Amendment
Amendments to the specification are fully considered and are satisfactory to overcome the objections directed to the drawings in the previous Office Action.
Amendments to claim 21 are fully considered and are satisfactory to overcome the rejections under 35 U.S.C. §112(b) directed to claims 21-22 in the previous Office Action.
Claim Rejections - 35 USC § 102
The following is a quotation of the appropriate paragraphs of 35 U.S.C. 102 that form the basis for the rejections under this section made in this Office action:
A person shall be entitled to a patent unless –
(a)(1) the claimed invention was patented, described in a printed publication, or in public use, on sale, or otherwise available to the public before the effective filing date of the claimed invention.
Claims 12-20, 24, and 25 are rejected under 35 U.S.C. 102(a)(1) as being anticipated by Nightingale (US 2013/0346985 A1).
With respect to claim 12, Nightingale teaches: A computer-implemented method for dynamically executing at least one application program by a platform (see e.g. Fig. 1: “100”) including a processor (see e.g. Fig. 1: “106”; and paragraph 18: “configuration of a processing unit, co-processor and memory is illustrated in FIG. 1 by dashed line 106”) comprising a program memory (see e.g. Fig. 1: “104”; and paragraph 15: “computing device 100 includes… memory 104”) and a programmable logic unit (see e.g. Fig. 1: “120”; and paragraph 16: “computing device also includes one or more field programmable gate arrays (FPGA), denoted as FPGA unit 120”), the processor and programmable logic unit supporting a programming mode (see e.g. paragraph 24: “The FPGA can be programmed”; and paragraph 26: “when an FPGA functional unit will be programmed”) and an execution mode (see e.g. paragraph 24: “ When the application makes calls to functions performed by the FPGA… executes the function using the FPGA”; and paragraph 27: “leverage the FPGA during execution”), during the programming mode, a first application program (see e.g. Fig. 3: “Application 300”) comprising at least one first module being loaded into at least one of the program memory (see e.g. paragraph 24: “If an application relies on a hardware library 304, then the operating system 306 uses the hardware library to program the FPGA resources 310 to allow the application 300 to use the library”) and the programmable logic unit (see e.g. paragraph 24: “each FPGA can be considered a functional unit”) so as to be executable as at least one first program code from an application database (see e.g. Fig. 3: “Hardware Libraries 304”) and being programmed (see e.g. paragraph 24: “each functional unit is a resource that can be assigned to one or more processes, programmed by the operating system using a hardware library that implements an operation, and then used by the processes assigned to it to perform the operation… uses the hardware library to program the FPGA resources 310 to allow the application 300 to use the library”) and, during the execution mode, the at least one first program code is executed (see e.g. paragraph 24: “When the application makes calls to functions performed by the FPGA, the operating system… executes the function using the FPGA”), the method comprising:
checking during the execution mode (see e.g. paragraph 29: “The association between a functional unit and a process running an application can be made at… runtime”), one of the processor or the programmable logic unit on which the at least one first program code is executed, based on at least one predefined runtime criterion (see e.g. paragraph 30: “associating a functional unit with a process at runtime… determined 608 if the functional unit is being shared”) comprising a resource usage level of the processor or the programmable logic unit (see e.g. paragraph 24: “resources within the FPGA unit is one or more groups of programmable gates, herein called functional units… each functional unit is a resource that can be assigned to one or more processes”; and paragraph 30: “functional unit is associated 606 with the process executing the application. It is then determined 608 if the functional unit is being shared with other processes”), whether a second application program (see e.g. paragraph 30: “other processes”) comprising at least one second module should be loaded from the application database (see e.g. paragraph 30: “It is then determined 608 if the functional unit is being shared with other processes… If there is conflict with other processes sharing this functional unit, then the FPGA library can be queued 614 for loading into the FPGA”);
performing a change to the programming mode (see e.g. paragraph 32: “When programming the FPGA”), and loading at least the at least one second module into at least one of the program memory and the programmable logic unit so as to be executable as at least one second program code (see e.g. paragraph 30: “It is then determined 608 if the functional unit is being shared with other processes…If there is conflict with other processes sharing this functional unit, then the FPGA library can be queued 614 for loading into the FPGA”; paragraph 32: “When programming the FPGA, a scheduler can consider whether other processes are using the FPGA, and whether programming the FPGA involves pausing those other processes (after their use of the FPGA has completed). As an example, the scheduler can wait until a process has become dormant, or has not been using the FPGA, to initiate programming the FPGA”; and Fig. 6, steps 614, 616), if the second application program comprising at least one second module should be loaded from the application database (see e.g. paragraph 30: “If there is conflict with other processes sharing this functional unit, then the FPGA library can be queued 614 for loading into the FPGA”); and
implementing a change to the execution mode, in which the at least one second program code is executed (see e.g. paragraph 30: If there is conflict with other processes sharing this functional unit, then the FPGA library can be queued 614 for loading into the FPGA. A scheduler within the operating system is then invoked 616 to determine when the FPGA library can be loaded to program the functional unit, and subsequently when the application can be executed 612”; and Fig. 6, step 612), if the second application program comprising at least one second module should be loaded from the application database (see e.g. paragraph 30: “If there is conflict with other processes sharing this functional unit, then the FPGA library can be queued 614 for loading into the FPGA”).
Nightingale discloses programming an FPGA and corresponding functional units 202-206 (i.e. programming mode) and executing processes utilizing the FPGA functional units (i.e. execution mode). Nightingale further discloses determining FPGA functional units, which are resources assigned to processes, that are to be shared between the processes (i.e. a criteria to determine functional unit usage levels by the processes) and programming the FPGA functional units by loading corresponding libraries in order to enable the processes to share the functional units during execution.
With respect to claim 13, Nightingale teaches: The method as claimed in claim 12, wherein a usage level of one of (i) the processor (see e.g. paragraph 32: “ When programming the FPGA, a scheduler can consider… whether programming the FPGA involves pausing those other processes… a process has become dormant”), (ii) the working memory and the program memory of the processor and (ii) the programmable logic unit are determined (see e.g. paragraph 32: “When programming the FPGA, a scheduler can consider whether other processes are using the FPGA”; and paragraph 33: “scheduler also can consider how long it takes to program the FPGA, and whether programming the FPGA will result in a functional unit being programmed differently for different processes over time”) and accordingly taken into consideration during the execution of the first application program during the check to determine whether the second application program should be loaded (see e.g. paragraph 30: “This functional unit is associated 606 with the process executing the application. It is then determined 608 if the functional unit is being shared with other processes… If there is conflict with other processes sharing this functional unit, then the FPGA library can be queued 614 for loading into the FPGA”; and paragraph 32: “When programming the FPGA, a scheduler can consider whether other processes are using the FPGA”).
With respect to claim 14, Nightingale teaches: The method as claimed in claim 12, wherein a usage level of one of (i) the processor (see e.g. paragraph 32: “ When programming the FPGA, a scheduler can consider… whether programming the FPGA involves pausing those other processes… a process has become dormant”), (ii) the working memory and program memory of the processor and (iii) the programmable logic unit is calculated, estimated and accordingly taken into consideration (see e.g. paragraph 32: “When programming the FPGA, a scheduler can consider whether other processes are using the FPGA”; and paragraph 33: “scheduler also can consider how long it takes to program the FPGA, and whether programming the FPGA will result in a functional unit being programmed differently for different processes over time”) during the execution of the second application program during the check to determine whether the second application program should be loaded (see e.g. paragraph 30: If there is conflict with other processes sharing this functional unit, then the FPGA library can be queued 614 for loading into the FPGA. A scheduler within the operating system is then invoked 616 to determine when the FPGA library can be loaded to program the functional unit, and subsequently when the application can be executed 612”; and paragraphs 32-33).
With respect to claim 15, Nightingale teaches: The method as claimed in claim 13, wherein at least one of the processor and the programmable logic unit is utilized to define whether at least one of the first and second module should be stored in one of the program memory and the programmable logic unit during the execution mode (see e.g. paragraph 30: “A scheduler within the operating system is then invoked 616 to determine when the FPGA library can be loaded to program the functional unit, and subsequently when the application can be executed 612”; paragraph 32: “a scheduler can consider whether other processes are using the FPGA, and whether programming the FPGA involves pausing those other processes (after their use of the FPGA has completed). As an example, the scheduler can wait until a process has become dormant, or has not been using the FPGA, to initiate programming the FPGA”; and paragraph 27).
With respect to claim 16, Nightingale teaches: The method as claimed in claim 14, wherein at least one of the processor and the programmable logic unit is utilized to define whether at least one of the first and second module should be stored in one of the program memory and the programmable logic unit during the execution mode (see e.g. paragraph 30: “A scheduler within the operating system is then invoked 616 to determine when the FPGA library can be loaded to program the functional unit, and subsequently when the application can be executed 612”; paragraph 32: “a scheduler can consider whether other processes are using the FPGA, and whether programming the FPGA involves pausing those other processes (after their use of the FPGA has completed). As an example, the scheduler can wait until a process has become dormant, or has not been using the FPGA, to initiate programming the FPGA”; and paragraph 27).
With respect to claim 17, Nightingale teaches: The method as claimed in claim 12, wherein an application management module (see e.g. paragraph 26: “a scheduler”), which is executed by a management system (see e.g. paragraph 26: “operating system has a scheduler that determines which process has access to the FPGA resources at each scheduling quantum, i.e., time period, and when an FPGA functional unit will be programmed with a hardware library so that the functional unit is available to be used by that process”) contained in the platform and which is incorporated into a connection between the application database and the processor and the programmable logic unit, defines whether at least one of (i) the first and (ii) the at least one second module is stored in one of the program memory and the programmable logic unit during the execution mode (see e.g. paragraph 30: “A scheduler within the operating system is then invoked 616 to determine when the FPGA library can be loaded to program the functional unit, and subsequently when the application can be executed 612”; paragraph 32: “a scheduler can consider whether other processes are using the FPGA, and whether programming the FPGA involves pausing those other processes (after their use of the FPGA has completed). As an example, the scheduler can wait until a process has become dormant, or has not been using the FPGA, to initiate programming the FPGA”).
With respect to claim 18, Nightingale teaches: The method as claimed in claim 12, wherein the at least one second module loaded so as to be executable comprises a corresponding second processor program code for execution by the processor in the program memory (see e.g. paragraph 23: “running an application on the computer system causes one or more processes to be created, with each process being allocated to different resources over time”; paragraph 25: “another process can start using functional unit”), and a corresponding second logic program code for execution by the programmable logic unit in the programmable logic unit (see e.g. paragraph 24: “each functional unit is a resource that can be assigned to one or more processes, programmed by the operating system using a hardware library that implements an operation, and then used by the processes assigned to it to perform the operation”; and paragraph 30: “If there is conflict with other processes sharing this functional unit, then the FPGA library can be queued 614 for loading into the FPGA. A scheduler within the operating system is then invoked 616 to determine when the FPGA library can be loaded to program the functional unit, and subsequently when the application can be executed 612”).
With respect to claim 19, Nightingale teaches: The method as claimed in claim 12, wherein the predefined criterion comprises one of an exceedance of an operative limit value of the platform, reaching a predefined state for the first application program (see e.g. paragraph 26: “ factor to consider is whether processes can share a hardware library by sharing a functional unit”; and paragraph 30: “It is then determined 608 if the functional unit is being shared with other processes. If not, the FPGA library can be scheduled for loading 610 into this functional unit, after which the application can execute 612. If there is conflict with other processes sharing this functional unit, then the FPGA library can be queued 614 for loading into the FPGA”), triggering an alarm or a fault notification on the platform and reaching a predefined time.
With respect to claim 20, Nightingale teaches: The method as claimed in claim 12, wherein at least two application programs are executed dynamically (see e.g. paragraph 30: “The association between a functional unit and a process running an application can be made at… runtime. The association can be… dynamic”; and paragraph 30: “process executing the application. It is then determined 608 if the functional unit is being shared with other processes… If there is conflict with other processes sharing this functional unit”).
With respect to claims 24-25: Claims 24 and 25 are directed to a system configured to implement active functions corresponding to the method disclosed in claims 12 and 17, respectively; please see the rejections directed to claims 12 and 17 above which also cover the limitations recited in claims 24 and 25. Note that, Nightingale also discloses a system (see e.g. Fig. 1) configured to implement the method disclosed in claims 12 and 17.
Claim Rejections - 35 USC § 103
The following is a quotation of 35 U.S.C. 103 which forms the basis for all obviousness rejections set forth in this Office action:
A patent for a claimed invention may not be obtained, notwithstanding that the claimed invention is not identically disclosed as set forth in section 102, if the differences between the claimed invention and the prior art are such that the claimed invention as a whole would have been obvious before the effective filing date of the claimed invention to a person having ordinary skill in the art to which the claimed invention pertains. Patentability shall not be negated by the manner in which the invention was made.
This application currently names joint inventors. In considering patentability of the claims the examiner presumes that the subject matter of the various claims was commonly owned as of the effective filing date of the claimed invention(s) absent any evidence to the contrary. Applicant is advised of the obligation under 37 CFR 1.56 to point out the inventor and effective filing dates of each claim that was not commonly owned as of the effective filing date of the later invention in order for the examiner to consider the applicability of 35 U.S.C. 102(b)(2)(C) for any potential 35 U.S.C. 102(a)(2) prior art against the later invention.
Claims 21-22 are rejected under 35 U.S.C. 103 as being unpatentable over Nightingale.
With respect to claim 21, Nightingale teaches: The method as claimed in claim 20, wherein at least three application programs are executed dynamically (see e.g. paragraph 30: “The association between a functional unit and a process running an application can be made at… runtime. The association can be… dynamic”; and paragraph 30: “process executing the application. It is then determined 608 if the functional unit is being shared with other processes… If there is conflict with other processes sharing this functional unit”).
Nightingale discloses executing “other processes” dynamically which encompasses any number of additional processes for executing dynamically. As such, it would have been obvious to one of ordinary skill in the art before the effective filing date of the invention to realize at least three processes to execute dynamically. The motivation/suggestion would be to accommodate different number of processes for execution; thus improving the overall processing efficiency.
With respect to claim 22, Nightingale teaches: The method as claimed in claim 21, wherein at least five or at least ten application programs are executed dynamically (see e.g. paragraph 30: “The association between a functional unit and a process running an application can be made at… runtime. The association can be… dynamic”; and paragraph 30: “process executing the application. It is then determined 608 if the functional unit is being shared with other processes… If there is conflict with other processes sharing this functional unit”).
Nightingale discloses executing “other processes” dynamically which encompasses any number of additional processes for executing dynamically. As such, it would have been obvious to one of ordinary skill in the art before the effective filing date of the invention to realize at least five and/or at least ten processes to execute dynamically. The motivation/suggestion would be to accommodate different number of processes for execution; thus improving the overall processing efficiency.
Claim 23 is rejected under 35 U.S.C. 103 as being unpatentable over Nightingale in view of Espinosa et al. (US 2011/0107158 A1; hereinafter Espinosa).
With respect to claim 23, Nightingale teaches: The method as claimed in claim 12, … wherein the at least one first and at least one second program code are different (see e.g. Nightingale, paragraph 25: “use of multiple functional units at the same time by different processes… multiple functional units being used by different processes at the same time”).
Nightingale does not but Espinosa teaches:
wherein the first and the second application program are identical (see e.g. Espinosa, paragraph 36: “the same code, instructions or application is run on two identical components (i.e., the two Xilinx®, FPGAs)”); and
Nightingale and Espinosa are analogous art because they are in the same field of endeavor: managing and distributing FPGA resources. Therefore, it would have been obvious to one with ordinary skill in the art before the effective filing date of the claimed invention to modify Nightingale with the teachings of Espinosa. The motivation/suggestion would be to improve data analysis and possible error corrections associated with application program execution (see e.g. Espinosa, paragraph 36).
Response to Arguments
Applicant's arguments filed 10/29/2025 have been fully considered but they are not persuasive. In detail:
(i) Regarding Applicant’s arguments with respect to the rejections under 35 U.S.C. §102 directed to claims 12 and 24 (Remarks, pages 11-14), note that Nightingale discloses functional units 200-204 of an FPGA (i.e. a programmable logic unit) as resources provided to processes (see e.g. paragraph 24: “resources within the FPGA unit is one or more groups of programmable gates, herein called functional units… each functional unit is a resource that can be assigned to one or more processes”; and Fig. 2).
Nightingale further discloses determining if a functional unit will be utilized by one process or if it will be shared with other processes (see e.g. paragraph 30: “functional unit is associated 606 with the process executing the application. It is then determined 608 if the functional unit is being shared with other processes). That is, Nightingale determines a utilization level for the functional unit.
As such, Nightingale discloses determining functional unit usage level (e.g. individual or shared usage) of the FPGA, which in return teaches the limitation “at least one predefined runtime criterion comprising a resource usage level of the processor or the programmable logic unit” as recited in the claims.
Consequently, the Examiner maintains the rejections directed to claims 12 and 24. For more details, please see the corresponding rejections above.
CONCLUSION
The prior art made of record and not relied upon is considered pertinent to applicant's disclosure:
Sharma et al. (US 2020/0225996 A1) discloses performing a runtime analysis to determine dynamic resource utilization of FPGA resources (see paragraph 178).
THIS ACTION IS MADE FINAL. Applicant is reminded of the extension of time policy as set forth in 37 CFR 1.136(a).
A shortened statutory period for reply to this final action is set to expire THREE MONTHS from the mailing date of this action. In the event a first reply is filed within TWO MONTHS of the mailing date of this final action and the advisory action is not mailed until after the end of the THREE-MONTH shortened statutory period, then the shortened statutory period will expire on the date the advisory action is mailed, and any nonprovisional extension fee (37 CFR 1.17(a)) pursuant to 37 CFR 1.136(a) will be calculated from the mailing date of the advisory action. In no event, however, will the statutory period for reply expire later than SIX MONTHS from the mailing date of this final action.
Contact Information
Any inquiry concerning this communication or earlier communications from the examiner should be directed to Umut Onat whose telephone number is (571)270-1735. The examiner can normally be reached M-Th 9:00-7:30.
Examiner interviews are available via telephone, in-person, and video conferencing using a USPTO supplied web-based collaboration tool. To schedule an interview, applicant is encouraged to use the USPTO Automated Interview Request (AIR) at http://www.uspto.gov/interviewpractice.
If attempts to reach the examiner by telephone are unsuccessful, the examiner’s supervisor, Kevin L Young can be reached at (571) 270-3180. The fax phone number for the organization where this application or proceeding is assigned is 571-273-8300.
Information regarding the status of published or unpublished applications may be obtained from Patent Center. Unpublished application information in Patent Center is available to registered users. To file and manage patent submissions in Patent Center, visit: https://patentcenter.uspto.gov. Visit https://www.uspto.gov/patents/apply/patent-center for more information about Patent Center and https://www.uspto.gov/patents/docx for information about filing in DOCX format. For additional questions, contact the Electronic Business Center (EBC) at 866-217-9197 (toll-free). If you would like assistance from a USPTO Customer Service Representative, call 800-786-9199 (IN USA OR CANADA) or 571-272-1000.
/UMUT ONAT/Primary Examiner, Art Unit 2194