Semi-polling input/output completion mode for non-volatile memory express completion queue

US12579088B2 · US · B2

Patent metadata
FieldValue
Publication numberUS-12579088-B2
Application numberUS-202418592026-A
CountryUS
Kind codeB2
Filing dateFeb 29, 2024
Priority dateNov 13, 2023
Publication dateMar 17, 2026
Grant dateMar 17, 2026

How to read this patent

A practical reading order for non-experts. Skip the full description unless you need deep technical detail.

  1. Title

    What the patent document calls the invention.

  2. Abstract

    A short plain-language summary of the technical disclosure.

  3. Assignees and inventors

    Who owns or filed the patent and who is credited as inventor.

  4. Key dates

    Filing, priority, publication, and grant dates set the timeline.

  5. First independent claim

    The legal scope of protection — read this for what is actually claimed.

  6. CPC / IPC classifications

    Technology tags used to group this patent with similar filings.

  7. Citations and related patents

    Prior art links and similar publications in this corpus.

Abstract

Official abstract text for this publication.

A system and method for using a semi-polling model to monitor a Non-Volatile Memory Express (NVMe) completion queue (CQ). The method, implemented at an interrupt thread, includes receiving an input/output (I/O) request from an application and submitting a submission queue (SQ) entry into an NVMe SQ in response to the I/O request. The method further includes registering for notifications from a polling thread after submitting the SQ entry and receiving, from the polling thread, a notification of the presence of a CQ entry within an NVMe CQ. Additionally, the method involves removing the CQ entry from the NVMe CQ and notifying the application of completion of the I/O request.

First claim

Opening claim text (preview).

What is claimed: 1 . A method, implemented in a computer system that includes a processor system, comprising: receiving, by an interrupt thread, an input/output (I/O) request from an application; submitting, by the interrupt thread, a submission queue (SQ) entry into a Non-Volatile Memory Express (NVMe) SQ in response to the I/O request; registering, by the interrupt thread, for notifications from a polling thread after submitting the SQ entry; responsive to the registering, identifying, by the polling thread, whether an NVMe completion queue (CQ) entry that corresponds to the SQ entry is present within an NVMe CQ without removing the CQ entry from the NVMe CQ; receiving, by the interrupt thread, a software interrupt from the polling thread, the software interrupt signaling a presence of a completion queue (CQ) entry within an NVMe CQ; removing, by the interrupt thread, the CQ entry from the NVMe CQ in response to receiving the software interrupt; and notifying, by the interrupt thread, the application of completion of the I/O request. 2 . The method of claim 1 , wherein the interrupt thread, the polling thread, and the application operate in user mode. 3 . The method of claim 1 , wherein the method further comprises ringing an SQ doorbell after submitting the SQ entry to the NVMe SQ. 4 . The method of claim 1 , wherein the method further comprises sleeping after registering for the notification from the polling thread. 5 . The method of claim 1 , wherein the method further comprises waking after receiving the notification of the presence of the CQ entry within the NVMe CQ. 6 . The method of claim 1 , wherein registering for the notification from the polling thread comprises registering for the software interrupt from the polling thread. 7 . A computer system comprising: a processor system; and a computer storage medium that stores computer-executable instructions that are executable by the processor system to at least: receive, by an interrupt thread, an input/output (I/O) request from an application; submit, by the interrupt thread, a submission queue (SQ) entry into a Non-Volatile Memory Express (NVMe) SQ in response to the I/O request; register, by the interrupt thread, for notifications from a polling thread after submitting the SQ entry, including registering for a software interrupt from the polling thread; responsive to the registering, identifying, by the polling thread, whether an NVMe completion queue (CQ) entry that corresponds to the SQ entry is present within an NVMe CQ without removing the CQ entry from the NVMe CQ; receive, by the interrupt thread, the software interrupt from the polling thread, the software interrupt signaling a presence of a completion queue (CQ) entry within an NVMe CQ, including receiving the software interrupt from the polling thread; remove, by the interrupt thread, the CQ entry from the NVMe CQ in response to receiving the software interrupt; and notify, by the interrupt thread, the application of completion of the I/O request. 8 . The computer system of claim 7 , wherein the interrupt thread, the polling thread, and the application operate in user mode. 9 . The computer system of claim 7 , wherein the computer-executable instructions are also executable by the processor system to ring an SQ doorbell after submitting the SQ entry to the NVMe SQ. 10 . The computer system of claim 7 , wherein the computer-executable instructions are also executable by the processor system to sleep after registering for the notification from the polling thread. 11 . The computer system of claim 7 , wherein the computer-executable instructions are also executable by the processor system to wake after receiving the notification of the presence of the CQ entry within the NVMe CQ. 12 . A computer-readable hardware storage medium that stores computer-executable instructions that are executable by a processor system to implement at an interrupt thread that is configured to at least: receive, by the interrupt thread, an input/output (I/O) request from an application; submit, by the interrupt thread, a submission queue (SQ) entry into a Non-Volatile Memory Express (NVMe) SQ in response to the I/O request; register, by the interrupt thread, for notifications from a polling thread after submitting the SQ entry; responsive to the registering, identify, by the polling thread, whether an NVMe completion queue (CQ) entry that corresponds to the SQ entry is present within an NVMe CQ without removing the CQ entry from the NVMe CQ; receive, by the interrupt thread, a software interrupt from the polling thread, the software interrupt signaling a presence of the CQ entry within the NVMe CQ; remove, by the interrupt thread, the CQ entry from the NVMe CQ in response to receiving the software interrupt; and notify, by the interrupt thread, the application of completion of the I/O request. 13 . The computer-readable hardware storage medium of claim 12 , wherein the computer-executable instructions are also executable by the processor system to ring an SQ doorbell after submitting the SQ entry to the NVMe SQ. 14 . The computer-readable hardware storage medium of claim 12 , wherein the computer-executable instructions are also executable by the processor system to sleep after registering for the notification from the polling thread.

Assignees

Inventors

Classifications

  • with priority control · CPC title

  • using successive scanning, e.g. polling (G06F13/24 takes precedence) · CPC title

  • G06F13/26Primary

    with priority control · CPC title

Patent family

Related publications grouped by family.

External sources

Frequently asked questions

Answers are generated from the same data shown on this page.

What does patent US12579088B2 cover?
A system and method for using a semi-polling model to monitor a Non-Volatile Memory Express (NVMe) completion queue (CQ). The method, implemented at an interrupt thread, includes receiving an input/output (I/O) request from an application and submitting a submission queue (SQ) entry into an NVMe SQ in response to the I/O request. The method further includes registering for notifications from a …
Who is the assignee on this patent?
Microsoft Technology Licensing Llc
What technology area does this patent fall under?
Primary CPC classification G06F13/26. Mapped technology areas include Physics.
When was this patent published?
Publication date Tue Mar 17 2026 00:00:00 GMT+0000 (Coordinated Universal Time) (B2). Legal status and post-grant events are not shown on this page.
What related patents are in patentsdb?
We list 12 related publications on this page (citations in our corpus or others sharing the same primary CPC).