DETAILED ACTION
This is the initial Office action based on the application filed April 11, 2024.
Claims 16-19 have been cancelled by preliminary amendment.
Claims 1-15 are pending and have been examined.
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 .
Priority
Receipt is acknowledged of certified copies of papers required by 37 CFR 1.55.
Information Disclosure Statement
The Information Disclosure Statement filed 04/11/2024 has been considered. An initialed copy of Form 1449 is enclosed herewith.
Specification
The title of the invention is not descriptive. A new title is required that is clearly indicative of the invention to which the claims are directed.
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.
1-15 are rejected under 35 U.S.C. 103 as being unpatentable over Simionescu (US 2024/0202030) in view of Halaharivi (US 2024/0160553).
Regarding claim 8, Simionescu discloses:
performed by a storage device, wherein the storage device comprises a memory (see at least figure 1; paragraph 24, memory device, controller, memory), the memory comprising a plurality of virtual function (VF) apparatuses (see at least figure 6A; paragraph 45, each physical function may have one or more virtual functions associated therewith; paragraph 46, each physical function can be assigned to a virtual machine),
the method comprising: initializing a bandwidth credit of a (…) queue corresponding to each VF apparatus of the plurality of VF apparatuses (see at least paragraph 56, submission queues associated with entries which can be performed by a PF such as a read or write operation; paragraph 45, each PF has VFs associated; paragraph 57, the PF has a credit counter associated with it and the memory device may only fetch commands from the submission queues of the PFs that have available credits; paragraphs 22 and 106, reset credit counters); and
controlling reading of an I/O command from the (…) queue corresponding to each VF apparatus, based on the bandwidth credit and the data size of the I/O command (see at least paragraph 57, the PF has a credit counter associated with it and the memory device may only fetch commands from the submission queues of the PFs that have available credits, if the PF does not have sufficient available credits then the memory device or controller refrains from obtaining a command from the submission queues; paragraph 57, the memory device or controller may decrement the credits based on size or quantity of logical blocks associated with the command)
However, Simionescu does not explicitly disclose, but Halaharivi discloses:
VF queue (see at least paragraph 18, using physical or virtual functions the memory subsystem maintains a dedicated credit counter for each physical or virtual function; paragraph 43, an original command received from the host system from a queue associated with a physical or virtual function)
It would have been obvious to one of ordinary skill in the art before the effective filing date of the claimed invention to modify Simionescu by adapting the teachings of Halaharivi to include a queue of commands associated with the virtual function. The combination allows for the QoS and bandwidth credit flow process to apply to virtual functions as well as physical functions providing improved bandwidth performance by implementing QoS to each physical or virtual function and improved adaptability (Halaharivi ¶25).
Regarding claim 9, the rejection of claim 8 is incorporated, and Simionescu further discloses:
wherein the initializing the bandwidth credit of the VF queue corresponding to each VF apparatus of the plurality of VF apparatuses comprises: initializing the bandwidth credit of the VF queue corresponding to each VF apparatus based on a capacity ratio of each VF apparatus occupying the memory (see at least paragraph 21, allocations of credits may correspond to performance metrics; paragraph 17, memory device capacity provisioned among PFs and each PF may be configured with a capacity; paragraph 82, memory device performs operations using arbitration considering ratios of credit amounts of the PFs and/or various ratios of QoS limits of the PFs)
Regarding claim 10 the rejection of claim 9 is incorporated, and Simionescu further discloses:
wherein the initializing the bandwidth credit of the VF queues corresponding to each VF apparatus based on the capacity ratio of each VF apparatus occupying the memory comprises: initializing the bandwidth credit of the VF queue corresponding to each VF apparatus based on the capacity ratio and a weight value for each VF apparatus (see at least paragraph 82, memory device performs operations using weighted round-robin arbitration, weighted based on ratios of the credit amounts of the PFs and/or various ratios of QoS limits of the PFs)
Regarding claim 11, the rejection of claim 8 is incorporated, and Simionescu further discloses:
wherein the controlling the reading of the I/O command from the VF queue corresponding to each VF apparatus based on the bandwidth credit and the data size of the I/O commands comprises: polling each VF queue to read the I/O command from a non-empty VF queue with a current bandwidth credit greater than a threshold based on initializing the bandwidth credit of the VF queue corresponding to each VF apparatus; and in response to the I/O command being read out of the non-empty VF queue, updating the current bandwidth credit of the VF queue by subtracting the data size of the read command from the current bandwidth credit of the VF queue, and in response to the updated current bandwidth credit of the VF queue being no longer greater than the threshold, stopping reading of the I/O command from the VF queue (see at least paragraph 19, each PF configured with a quantity of credits that can be used for performing operations within a time window, a credit can be used to process a portion of the data associated with an input/output command, in some cases one credit can be used for one command data block, so for example if the I/O operation is associated with 10 command data blocks then 10 credits can be used to complete the operation, each PF may perform operations until allocated credits are consumed)
Regarding claim 12, the rejection of claim 11 is incorporated, and Simionescu further discloses:
in response to each VF queue being polled once, determine whether current bandwidth credits of all VF queues are all less than or equal to the threshold; in response to the current bandwidth credits of all the VF queues all being less than or equal to the threshold, initializing the bandwidth credit of each VF queue again, otherwise continuing to read I/O commands from non-empty VF queues with the current bandwidth credit greater than the threshold (see at least figure 9, 920 and paragraph 106, have all PFs consumed all credits for the current virtual window, if yes, then reset counters for the virtual window; paragraph 108, if the current time window is not expired and there are still credits to be consumed, the control and memory device continue to perform operations)
Regarding claim 13, the rejection of claim 12 is incorporated, and Simionescu further discloses:
setting the current bandwidth credit of a VF queue to the threshold if the VF queue is empty (see at least paragraph 90, if a PF has no commands available the virtual window may close)
Regarding claim 14, the rejection of claim 12 is incorporated, and Simionescu further discloses:
wherein the initializing the bandwidth credit of each VF queue again comprises: initializing the bandwidth credit of each VF queue again by adding the current bandwidth credit of each VF queue to a first initialized bandwidth credit of each VF queue (see at least paragraph 100, if all PFs have consumed created before time window ends, PFs may potentially borrow from a next or future time window, which uses throughput that otherwise would have been unused, the credit amount for the next time window is decreased by an amount if credit used or borrowed during the opportunistic phase; paragraph 106, have all PFs consumed all credits for the current virtual window, if yes, then reset counters for the virtual window. Examiner note: In this case, all credit counters will be zero and or less than zero and the initialization will reset the counters that were zero (zero credits plus the reset will be the reset amount) and for the counters that are less than zero (or have borrowed credits) the counter will reset and have the borrowed credits subtracted (or credit reset amount plus the negative borrowed credits).)
Regarding claim 1, the instant claim contains several limitations of the same scope as claim 8. The corresponding limitations are rejected for the same reasons as seen in claim 8 above, in addition to the following limitations:
Simionescu further discloses:
a controller (see at least figure 3)
Regarding claim 7, the instant claim contains several limitations of the same scope as claim 14. The corresponding limitations are rejected for the same reasons as seen in claim 1 above, in addition to the following limitations:
Simionescu further discloses:
in response to the current bandwidth credits of all the VF queues being less than or equal to the threshold (see at least paragraph 100, if all PFs have consumed created before time window ends, PFs may potentially borrow from a next or future time window; paragraph 106, have all PFs consumed all credits for the current virtual window, if yes, then reset counters for the virtual window.)
Regarding claim 15, the instant claim contains several limitations of the same scope as claim 8. The corresponding limitations are rejected for the same reasons as seen in claim 8 above, in addition to the following limitations:
Simionescu further discloses:
a main processor; (…); and a storage device, wherein the storage device is configured to perform the method according to claim 8 (see at least figure 1; paragraph 25, host device has processor)
However, Simionescu does not explicitly disclose, but Halaharivi discloses:
a main memory (see at least figure 7, 704)
It would have been obvious to one of ordinary skill in the art before the effective filing date of the claimed invention to modify Simionescu by adapting the teachings of Halaharivi to include a queue of commands associated with the virtual function. The combination allows for the QoS and bandwidth credit flow process to apply to virtual functions as well as physical functions providing improved bandwidth performance by implementing QoS to each physical or virtual function and improved adaptability (Halaharivi ¶25).
Regarding claims 2-6, the scope of the instant claims does not differ substantially from that of claims 9-13, so they are rejected for the same reasons, respectively.
Conclusion
The prior art made of record and not relied upon is considered pertinent to applicant's disclosure. Lee is commonly owned and discloses a credit-based bandwidth allocation method. Zhou discloses when a VF queue is empty it enters an idle state ¶26. Segev discloses bandwidth balancing in submission queues associated with virtual functions. Paulzagade discloses apportioning bandwidth in storage systems by assigning credits to workloads. Benisty discloses a credit-based arbitration scheme for virtual functions.
Any inquiry concerning this communication or earlier communications from the examiner should be directed to KIMBERLY L JORDAN whose telephone number is (571)270-5481. The examiner can normally be reached Monday, Tuesday, and Thursday 9am-3pm.
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 Young can be reached on (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.
/KIMBERLY L JORDAN/Examiner, Art Unit 2194