Data storage device and interrupt handling process thereof
Optimizing the ESI data format in UFS devices by mapping interrupt IDs to LPIs at the least significant bit position addresses inefficiencies in interrupt handling, enhancing efficiency and reducing hardware complexity.
Patent Information
- Application Number
- PCT/CN2024/095954
- Authority / Receiving Office
- WO · WO
- Patent Type
- Applications
- Current Assignee / Owner
- Filing Date
- 2024-05-29
- Publication Date
- 2025-12-04
AI Technical Summary
Existing data storage devices, such as Universal Flash Storage (UFS) devices, face inefficiencies in handling event-specific interrupts due to the lack of a defined data format for interrupt messages, leading to wasted resources and increased hardware complexity.
Implementing an event-specific interrupt (ESI) message with an interrupt ID mapped to a locality-specific peripheral interrupt (LPI) starting at the least significant bit position, optimizing the ESI data format to minimize reserved bits and efficiently allocate interrupt IDs, thereby reducing hardware complexity and resource waste.
Enhances interrupt handling efficiency by optimizing interrupt data format, reducing unnecessary resource allocation, and simplifying hardware design in UFS devices.
Smart Images

Figure CN2024095954_04122025_PF_FP_ABST
Abstract
Description
DATA STORAGE DEVICE AND INTERRUPT HANDLING PROCESS THEREOFTECHNICAL FIELD
[0001] The present disclosure relates generally to a data storage device and more particularly to an interrupt handling process of the data storage device.BACKGROUND
[0002] Data storage devices (DSDs) -such as solid state devices (SSDs) with non-volatile memories (NVMs) -are utilized in a wide variety of devices in stationary and mobile computing environments. Examples of such devices include desktop computers, portable notebook computers, tablets, portable hard disk drives, mobile devices, cellular phones, portable media players, wearable devices, etc. One example of SSDs is the Universal Flash Storage (UFS) device. A UFS device is commonly used as data storage in mobile devices (e.g., mobile phones, smartphones, tablets, vehicles, drones, portable computers, etc. ) because the UFS device can provide high performance and low power storage memory. Specifications for UFS and its associated UFS Host Controller Interface (UFSHCI) are included in the Joint Electron Device Engineering Council (JEDEC) standards. The UFS Host Controller is responsible for managing communication between a host and UFS devices, for example, data transfer between the host and the UFS device, ensuring efficient and reliable storage operations.SUMMARY
[0003] The following presents a summary of one or more implementations in order to provide a basic understanding of such implementations. This summary is not an extensive overview of all contemplated implementations and is intended to neither identify key or critical elements of all implementations nor delineate the scope of any or all implementations. Its sole purpose is to present some concepts of one or more implementations in a form as a prelude to the more detailed description that is presented later.
[0004] Aspects of the disclosure provides various systems, apparatuses, and techniques for handling event specific interrupt (ESI) in Universal Flash Storage (UFS) devices using UFS Multi Circular Queue (MCQ) . An ESI message contains an address and interrupt data. The interrupt data includes an interrupt ID mapped to a locality specific peripheral interrupt (LPI) associated with the interrupt event, and the interrupt ID starts at a least significant bit position of the interrupt data. In some aspects, the ESI interrupt data can compact all meaningful bits and / or fields such that there is no reserved bits between the meaningful bits / fields.
[0005] One aspect of the disclosure provides a method of handling an interrupt in a processing device. The method includes generating an interrupt message in response to an interrupt event, the interrupt message including an address and interrupt data, the interrupt data including an interrupt ID mapped to a locality specific peripheral interrupt (LPI) associated with the interrupt event, the interrupt ID starting at a least significant bit position of the interrupt data. The method further includes sending the interrupt message to an interrupt translation service (ITS) mapped on the address to initiate an interrupt handling process corresponding to the LPI.
[0006] One aspect of the disclosure provides a computing system that includes a Universal Flash Storage (UFS) device and a UFS host connected to the UFS device. The UFS host is configured to generate an interrupt message in response to an interrupt event corresponding to the UFS device, the interrupt message including an address and interrupt data, the interrupt data including an interrupt ID mapped to a locality specific peripheral interrupt (LPI) associated with the interrupt event, the interrupt ID starting at a least significant bit position of the interrupt data. Th UFS host is further configured to send the interrupt message to an interrupt translation service (ITS) mapped on the address to initiate an interrupt handling process corresponding to the LPI.
[0007] One aspect of the disclosure provides a computing system including means for generating an interrupt message in response to an interrupt event, the interrupt message including an address and interrupt data, the interrupt data including an interrupt ID mapped to a locality specific peripheral interrupt (LPI) associated with the interrupt event, the interrupt ID starting at a least significant bit position of the interrupt data. The computing system further includes means for sending the interrupt message to an interrupt translation service (ITS) mapped on the address to initiate an interrupt handling process corresponding to the LPI.BRIEF DESCRIPTION OF THE DRAWINGS
[0008] FIG. 1 is a schematic block diagram illustrating an apparatus including a Universal Flash Storage (UFS) in accordance with some aspects of the disclosure.
[0009] FIG. 2 is a schematic diagram illustrating an exemplary architecture of a UFS host controller interface (UFSHCI) in accordance with some aspects of the disclosure.
[0010] FIG. 3 is a diagram illustrating an exemplary submission queue (SQ) and an exemplary completion queue (CQ) in accordance with some aspects of the disclosure.
[0011] FIG. 4 is a diagram illustrating an exemplary interrupt topology in accordance with some aspects of the disclosure.
[0012] FIG. 5 illustrates an exemplary locality-specific peripheral interrupt (LPI) and event specific interrupt (ESI) data mapping in accordance with some aspects of the disclosure.
[0013] FIG. 6 is a diagram illustrating an exemplary ESI message in accordance with some aspects of the disclosure.
[0014] FIG. 7 is a diagram illustrating an exemplary UFS ESI message procedure in accordance with some aspects of the disclosure.
[0015] FIG. 8 is a diagram illustrating a first exemplary ESI data field format in accordance with some aspects of the disclosure.
[0016] FIG. 9 is a diagram illustrating a second exemplary ESI data field format according to some aspects of the disclosure.
[0017] FIG. 10 is a flow chart illustrating a method of handling an interrupt in a processing device according to some aspects of the disclosure.DETAILED DESCRIPTION
[0018] The detailed description set forth below in connection with the appended drawings is intended as a description of various configurations and is not intended to represent the only configurations in which the concepts described herein may be practiced. The detailed description includes specific details for the purpose of providing a thorough understanding of various concepts. However, it will be apparent to those skilled in the art that these concepts may be practiced without these specific details. In some instances, well-known structures and components are shown in block diagram form in order to avoid obscuring such concepts.
[0019] Several aspects of the invention will now be presented with reference to various apparatus and methods. These apparatus and methods will be described in the following detailed description and illustrated in the accompanying drawings by various blocks, modules, components, circuits, steps, processes, algorithms, etc. (collectively referred to as “elements” ) . These elements may be implemented using electronic hardware, computer software, firmware, or any combination thereof. Whether such elements are implemented as hardware or software depends upon the particular application and design constraints imposed on the overall system.
[0020] Aspects of the disclosure provide various systems, apparatuses, and techniques for handling event specific interrupt (ESI) in Universal Flash Storage (UFS) devices. ESI is a message signaled interrupt (MSI) that is an interrupt topology used for UFS Multi Circular Queue (MCQ) . MCQ enables multiple processer cores to handle data transfer simultaneously to boost performance of multi-core systems.
[0021] FIG. 1 is a schematic block diagram illustrating an apparatus 100 including an Universal Flash Storage (UFS) in accordance with some aspects of the disclosure. In this example, the apparatus 100 can be a computer system or a part thereof. The apparatus 100 includes one or more processors (e.g., one exemplary processor 102 shown in FIG. 1) that can be configured to perform various functions of the apparatus, including, for example, functions typically performed by portable devices like mobile devices, tablets, portable computers, wearable devices (e.g., earbuds, headphones, etc. ) , smartwatches, and other such devices. These functions can include wireless communications with other devices (e.g., smartphones, computers, etc. ) and application specific functions. The apparatus 100 can include a data storage system for storing various data at the apparatus. In one aspect, the data storage system can be a UFS system that includes a UFS host 104 and one or more UFS devices (e.g., one exemplary UFS device 106 shown in FIG. 1) . In some examples, the UFS host 104 can be included in or implemented by the processor 102.
[0022] The processor 102 can perform various functions (e.g., using software / application 108) and can communicate with the UFS host 104 using a UFS driver 110. Using the UFS driver 110, the processor 102 can communicate, control, and exchange data with the UFS host 104, for example, via a UFS host controller 112 that provides a UFS host controller interface (UFSHCI) to the processor 102. The UFS host controller is responsible for managing the interface and data transfer between host software (e.g., application 108) and the UFS device. This can include interface management, power management, and control functions. The host controller 112 (e.g., the UFSHCI) provides a set of registers that can be accessed by the processor 102 using the UFS driver 110. The UFS host 104 and UFS device 106 are connected through a UFS interface 114. For example, each of the UFS host 104 and UFS device 106 has a UFS interconnect interface 116 that transfers data and control signals between the UFS host and UFS device. The UFS driver 110 can use a combination of registers and transfer request descriptors in system memory 111 (e.g., one or more memories (e.g., random access memory) ) to communicate with host controller hardware. In some examples, the UFS device 106 can be a memory card, an embedded bootable mass storage device, an input-output (IO) device, etc. In some aspects, the UFS device 106 includes a data storage 118 that can include a non-volatile memory (NVM) for storing data. In one example, the NVM may be NAND Flash memory or the like. However, the UFS device 106 is not limited to using only NAND Flash and can use other types of NVM.
[0023] In some aspects, some or all of the functions described herein can be performed by the apparatus 100 using the processor 102, UFS host 104, and / or UFS device 106. In some examples, the processor 102, UFS host 104, and UFS device 106 may each include a microprocessor, a microcontroller, an embedded controller, a logic circuit, software, firmware, ASIC, or any kind of processing device, for performing one or more of the functions described herein as being performed by the apparatus 100.
[0024] FIG. 2 illustrates an exemplary architecture of a UFS host controller interface (UFSHCI) 200 according to some aspects of the disclosure. The processor 102 can use the UFSHCI to communicate with the UFS device 106 through a set of memory-mapped I / O (MMIO) registers (e.g., registers 0, 1, 2, …n) in a MMIO space 202 and transfer descriptors in a host memory space 204. The transfer descriptors are data structures organized in the form of transfer lists in the host memory. The UFS driver 110 can access these lists and submit commands to the UFS device in the form of UFS protocol information units (UPIUs) . When a response is received from the UFS device in the form of a UPIU, the host controller passes the response to the UFSHCI using the transfer lists.
[0025] The data transfer between a UFSHCI and the UFS device can go through an array of data structures referred to herein as UFS transport protocol (UTP) transfer request descriptors (UTRD) . In some examples, the UFSHCI may be included in the UFS driver 110 shown in FIG. 1. In this disclosure, the terms UFSHCI and UFS driver can be used interchangeably. These descriptors (UTRDs) can be contained in a data structure (e.g., one or more lists) referred to as a UTP transfer request list (UTRL) 206 in the host memory. In this example, the list includes 32 UTRDs (e.g., UTRD0 to UTRD31) . Each UTRD (e.g., UTRD1 208) contains the command UPIU 210 that can be used to send the command to the UFS device. The UTRD also includes the response UPIU 212 that is used by the UFS device to pass the response to the host controller. The UTRD also includes a physical region description table (PRDT) 214 that contains the data associated with both the command UPIU and the response UPIU. The PRDT 214 can include an array of pointer and size of data buffers. The UTRL has an associated doorbell register 216 to indicate which UTRDs are available for processing. The UFSHCI writes (rings) to the doorbell register to signal the host controller that a new work item has been added to the list. When the host controller has received the response from the UFS device, it can generate an interrupt that allows the UFSHCI to handle the completion, by, for example, triggering an interrupt handling routine.
[0026] The UFSHCI prepares a UTRD, places it on the UTRL 206 and rings (write) the doorbell 216 indicating to the host controller that the UTRD is ready for processing. The host controller parses the UTRDs in the order they were placed on the UTRL 206 and issues the commands to the UFS device. On receiving the response from the UFS device, the host controller updates the response UPIU field 212 of the corresponding UTRD on the list and notifies the UFSHCI through interrupt if applicable. In response to the interrupt, the UFSHCI (e.g., UFS driver 110 shown in FIG. 1) reads the UTRL doorbell register and compares the value to the list of commands that have been submitted by the driver and not yet completed. Finally, it completes the commands that are outstanding and makes room for the successive commands in the list.
[0027] In some aspects, the apparatus 100 can use a plurality of circular queues. For example, the MMIO space 202 can include a multi-circular queue (MCQ) capability register 218 that provides the description of host controller capabilities specific for using MCQ. A MCQ is a communication mechanism for passing messages from a producer to a consumer. In some examples, referring again to FIG. 1, the processor 102 (e.g., UFS driver 110) is the producer and the host controller 112 is the consumer. In some examples, the processor 102 (e.g., UFS driver) is the consumer and the host controller 112 is the producer. The apparatus 100 can be configured to provide a plurality of circular queues including one or more submission queues and one or more completion queues.
[0028] FIG. 3 is a diagram illustrating an exemplary submission queue (SQ) 302 and an exemplary completion queue (CQ) 304 used in the apparatus 100 of FIG. 1 according to some aspects.
[0029] In other examples, referring again to FIG. 1, the apparatus 100 may have more than one SQ and / or more than one CQ. Using a SQ, the processor 102 (e.g., UFS driver 110) can pass messages or commands to the UFS host controller 112, for example, to indicate submission of new commands to be processed by the UFS device. Each SQ identifies the associated CQ which will receive its command completion notification once the host controller has completed command processing. Using a CQ, the UFS host controller can pass messages inside one or more CQ entries to the UFS driver indicating completion of commands. Each CQ entry identifies which SQ the command originated in, and the unique identifier for that command, and command completion status. A completion of the command can result in a command completion interrupt event that can cause the processor 102 to perform an interrupt handling routine.
[0030] FIG. 4 is a diagram illustrating an exemplary interrupt topology according to some aspects of the disclosure. When a UFS interrupt event occurs on a CQ or SQ, a UFS host controller 402 can send an event specific interrupt (ESI) message 404 to an interrupt controller 406, for example via a system bus. In one example, the UFS host controller 402 may be the UFS host controller 112 of FIG. 1. ESI is a message-based interrupt (MSI) that can be used for interrupts associated with UFS MCQ operations. A message-based interrupt (e.g., ESI) is an interrupt that is set and cleared by a write to a register in the interrupt controller. Using a message to forward the interrupt from a peripheral (e.g., UFS device 106 shown in FIG. 1) to the interrupt controller removes the need for a dedicated signal per interrupt source. In this case, the use of MSI enables the UFS host controller to send multiple interrupt requests to the processor (e.g., interrupt controller 406) without using dedicated interrupt pins / lines, reducing the complexity and cost of the hardware design.
[0031] In some aspects, the interrupt controller 406 may be implemented at the processor 102 or as a subsystem of the processor 102 of FIG. 1. In some aspects, the interrupt controller 406 can be a generic interrupt controller (GIC) that provides interrupt translation service (ITS) 408 for translating message-based interrupts (e.g., ESI message 404) from the UFS host controller into locality-specific peripheral interrupts (LPIs) that can then be handled by the processor 102. Each interrupt source (e.g., an interrupt event from a UFS device) can be identified by an ID number. The IDs can be grouped into ranges, and each range can be assigned to a particular type of interrupt (e.g., LPIs) . In some examples, the range 8192 and greater can be assigned to LPI type interrupts. The LPIs can be mapped to ESIs corresponding to different interrupts.
[0032] FIG. 5 illustrates an exemplary LPI and ESI data mapping 500 according to some aspects of the disclosure. When a UFS driver requests N number of LPIs from the ITS, the ITS allocates N consecutive LPIs (e.g., starting from 8192 to 8192+N-1) and maps these LPIs to interrupt IDs (contained in ESI data) in a linear way. In some aspects, the UFS driver can decide how many UFS MCQ events it wants to be notified via ESI. For example, if four CQs (CQ #0, CQ #1, CQ #2, and CQ #3) are configured at the apparatus, and the UFS ESI handler can handle the completion events on the four CQs, then four LPIs are sufficient. In this case, LPI 8192 can be mapped to interrupt ID 0x0 corresponding to an MCQ event on the CQ #0. LPI 8193 can be mapped to interrupt ID 0x1 corresponding to an MCQ event on the CQ #1. LPI 8194 can be mapped to interrupt ID 0x2 corresponding to an MCQ event on the CQ #2. LPI 8195 can be mapped to interrupt ID 0x3 corresponding to an MCQ event on the CQ #3.
[0033] FIG. 6 is a diagram illustrating an exemplary ESI message 600 according to some aspects of the disclosure. An ESI message contains an address field 602 and a data field 604. The address field contains the input output virtual address (IOVA) of the interrupt translation service (ITS) at the interrupt controller. The data field contains ESI data (e.g., interrupt ID) . In one example, the ESI message 600 may be the ESI message 404 of FIG. 4 described above. The UFS host controller can send the ESI message 600 to the IOVA of the ITS in response to an interrupt event occurring at a UFS device. For example, the interrupt event may be an MCQ event on a CQ or SQ.
[0034] FIG. 7 is a diagram illustrating an example of an UFS ESI procedure 700 according to some aspects of the disclosure. In one example, the UFS ESI procedure 700 can be performed at the apparatus 100 of FIG. 1. At 702, a UFS host controller completes one or more requests on a CQ. For example, the UFS host controller performs a tail push event on CQ #2. At 704, the UFS host controller writes an ESI message to an address (e.g., IOVA) corresponding to the ITS at the interrupt controller. For example, the ESI message includes ESI data that indicates the interrupt ID 0x2 corresponding to the tail push event on CQ #2. In some examples, the ESI message may include a device ID that identifies the peripheral device (e.g., UFS device) that causes the interrupt event. At 706, the ITS translates the interrupt ID to the corresponding LPI. In one example, the interrupt ID is 0x2. In this case, the ITS can translate the interrupt ID 0x2 to LPI 8194. Then, the ITS can send the translated LPI to the processor (e.g., processor 102 shown in FIG. 1) that can service the interrupt by executing the corresponding interrupt handling routine. At 708, the processor (e.g., UFS driver) can execute an ESI handler routine that is designed and registered for handling the LPI, for example, corresponding to a request completion on CQ #2. Using LPI, for example, the processor knows that the interrupt source is a tail entry push event that happens on CQ #2 without reading any registers.
[0035] The data format of the UFS ESI is not currently defined in the Joint Electron Device Engineering Council (JEDEC) standard. However, UFS ESI handler software implementation highly depends on ESI’s data format. For example, the ESI data format can affect the number of LPIs needed to be allocated, and which ESI handlers to be registered to which LPIs. For example, when the interrupt ID field is located at the most significant bits of the ESI data field, the UFS driver may have to allocate more than four LPIs and waste numerous LPIs just to map four MCQ events on 4 CQs, whereas LPI resources are limited in the apparatus.
[0036] FIG. 8 is a diagram illustrating an exemplary ESI data field format 800 according to some aspects of the disclosure. The ESI data field format 800 may be used for the data field 604 in the ESI message of FIG. 6 or used in other ESI messages. In this example, the ESI data field has 32 bits (bits [0] to
[0031] ) . Bit [0] is the least significant bit and bit
[0031] is the most significant bit. The ESI data field 800 has a queue ID field that starts from bit [0] (the least significant bit) . The queue ID can be used to indicate a CQ or a SQ among the CQs and SQs configured at the apparatus. Each queue ID corresponds to the interrupt ID associated with the queue (e.g., CQ or SQ) . In some aspects, queue IDs of CQs can come before queue IDs of SQs. In this case, the queue IDs of CQs are allocated to lower bit values than the queue IDs of SQs. For example, the apparatus can be configured to support 32 CQs and 32 SQs, and 6 bits are used to encode 32 CQs plus 32 SQs. By placing the queue ID at the least significant bit positions (e.g., bits [0] to [5] ) , the UFS driver can avoid wasting LPIs to map the configured CQs and SQs. For example, if the queue ID field is allocated to bits
[0030] and
[0031] to map four MCQs, the apparatus will allocate LPI 8192 to interrupt ID 0x0, LPI 134225920 to interrupt ID 0x8000000, LPI 134225921 to interrupt ID 0x10000000, and LPI 134225922 to interrupt ID 0x18000000 because the apparatus allocates LPI consecutively. In this case, LPIs 8192 to 134225919 are wasted because no interrupt IDs or MCQs are mapped to these LPIs.
[0037] In one example, the queue ID can have six bits (bit [0] to bit [5] ) that start at the least significant bit positions in ESI data 800. Six bits can encode 32 CQs plus 32 SQs, but the apparatus may not need to use all 64 queues (32 CQs and 32 SQs) . For example, the apparatus can configure and use four CQs plus four SQs, and get ESIs for events on SQs. In this case, if the queue ID field is of a fixed length (e.g., bits [0] to [5] ) , plus there are reserved bits (e.g., bits [6] to [8] ) between queue ID and interrupt status bits (e.g., bits 9 to 12) , the apparatus will allocate more LPIs than actually needed. For example, the apparatus can allocate LPIs 8192 to 8195 to interrupt IDs 0x0 to 0x3 corresponding to tail entry push events on CQ #0 to CQ #3, LPIs 8736 to 8739 to interrupt IDs 0x220 to 0x223 corresponding to head entry fetch events on SQ #0 to SQ #3, and LPIs 9248 to 9251 to interrupt IDs 0x420 to 0x423 corresponding to SQ stop events on SQ #0 to SQ #3. Therefore, LPIs 8196 –8736 and 8740 –9247 are wasted (not mapped to any ESI data or MCQ events) .
[0038] FIG. 9 is a diagram illustrating an exemplary ESI data field format 900 according to some aspects of the disclosure. The ESI data field format 900 may be used for the data field 604 in the ESI message of FIG. 6 or used in other ESI messages. In this example, the ESI data field has 32 bits (bits [0] to
[0031] ) . The queue ID field length can be determined based on the number (n) of CQs and number (m) of SQs that are configured by the apparatus (e.g., UFS host software) . In this example, queue ID #i corresponds to CQ #i when i < n. Queue ID #i corresponds to SQ # (i –n) when i >= n. The queue ID length S is equal to ceil (log2 (n+m) ) , which is the ceiling of n+m. For example, for 4 CQs and 4 SQs, S is equal to 3 (i.e., ceiling (log2 8) ) . In some aspects, the ESI data field format 900 can compact all meaningful bits and / or fields such that there is no reserved bits between the meaningful bits / fields. For example, the ESI data field format 900 has no reserved bits between SQ interrupt status field and queue ID field, which are the meaningful fields in the ESI data field 900.
[0039] FIG. 10 is a flow chart illustrating a method of handling an interrupt in a processing device according to some aspects of the present disclosure. For example, the interrupt may be an event specific interrupt (ESI) as described above in relation to FIGs. 1–9. The method can be performed at the apparatus 100 of FIG. 1 or any processing devices (e.g., a system on a chip (SoC) device) .
[0040] At 1002, the device can generate an interrupt message in response to an interrupt event. The interrupt message includes an address and interrupt data. For example, the interrupt message is an ESI message including an input output virtual address (IOVA) of an ITS (e.g., ITS 408) and ESI data. The interrupt data can include an interrupt ID (e.g., queue ID) mapped to a locality specific peripheral interrupt (LPI) associated with the interrupt event. For example, the interrupt event can be a tail entry push event on a CQ, a head entry fetch event on an SQ, or a SQ stop event on a SQ. The interrupt ID can start at the least significant bit position (e.g., 0x0) of the interrupt data. In some aspects, the UFS host controller 112 of FIG. 1 can provide a means to generate the interrupt message.
[0041] At 1004, the device can send the interrupt message to an interrupt controller mapped to the address (e.g., IOVA of the ITS) to initiate an interrupt handling process corresponding to the LPI. For example, the host controller 112 can provide a means to send the interrupt message to an interrupt controller (e.g., interrupt controller 406) . In some aspects, the processor 102 (e.g., UFS driver 110) can provide a means to perform the interrupt handling process.
[0042] In one aspect, the interrupt ID can start at the least significant bit position (e.g., 0x0) of the interrupt data to indicate the interrupt event originated from a UFS device of the processing device. In one aspect, the interrupt data can be configured to represent events corresponding to a plurality of first circular queues (e.g., CQs) using a plurality of first bit values of the interrupt data. In one aspect, the interrupt data can be further configured to represent events corresponding to a plurality of second circular queues (e.g., SQs) using a plurality of second bit values of the interrupt data, the plurality of second bit values being greater than the plurality of first bit values. The first bit values and the second bits values are consecutive bit values.
[0043] In one aspect, the interrupt ID can have a bit-length that is determined (e.g., minimized) based on a quantity of submission queues and a quantity of completion queues configured at the processing device. The bit-length can be determined using a ceiling function of the total quantity of the submission queues and completion queues.
[0044] In one aspect, the interrupt data can further include an interrupt status field located at one or more bit positions that are immediately next to the interrupt ID (i.e., no other bit is between the interrupt status field and the interrupt ID) . There is no reserved bit between the interrupt status field and the interrupt ID. In one aspect, the interrupt status field can be located at the one or more bit positions that are more significant than bit positions of the interrupt ID.
[0045] Some implementation examples are described in the following numbered clauses:
[0046] Clause 1: A method of handling an interrupt in a processing device, the method comprising: generating an interrupt message in response to an interrupt event, the interrupt message comprising an address and interrupt data, the interrupt data comprising an interrupt ID mapped to a locality specific peripheral interrupt (LPI) associated with the interrupt event, the interrupt ID starting at a least significant bit position of the interrupt data; and sending the interrupt message to an interrupt translation service (ITS) mapped on the address to initiate an interrupt handling process corresponding to the LPI.
[0047] Clause 2. The method of clause 1, wherein the interrupt ID starts at the least significant bit position of the interrupt data to indicate the interrupt event being originated from a Universal Flash Storage device.
[0048] Clause 3. The method of clause 1, wherein the interrupt data is configured to represent events corresponding to a plurality of completion queues using a plurality of first bit values of the interrupt data.
[0049] Clause 4. The method of clause 3, wherein the interrupt data is further configured to represent events corresponding to a plurality of submission queues using a plurality of second bit values of the interrupt data, the plurality of second bit values being greater than the plurality of first bit values.
[0050] Clause 5. The method of clause 1, 2, 3, or 4, wherein the interrupt ID has a bit-length that is determined based on a quantity of submission queues and a quantity of completion queues configured at the processing device.
[0051] Clause 6. The method of clause 5, wherein the interrupt data further comprises an interrupt status field located at one or more bit positions that are immediately next to the interrupt ID.
[0052] Clause 7. The method of clause 6, wherein the interrupt status field is located at the one or more bit positions that are more significant than bit positions of the interrupt ID.
[0053] Clause 8. A computing system comprising: a Universal Flash Storage (UFS) device; and a UFS host connected to the UFS device, the UFS host configured to: generate an interrupt message in response to an interrupt event corresponding to the UFS device, the interrupt message comprising an address and interrupt data, the interrupt data comprising an interrupt ID mapped to a locality specific peripheral interrupt (LPI) associated with the interrupt event, the interrupt ID starting at a least significant bit position of the interrupt data; and send the interrupt message to an interrupt translation service (ITS) mapped on the address to initiate an interrupt handling process corresponding to the LPI.
[0054] Clause 9. The computing system of clause 8, wherein the interrupt ID starts at the least significant bit position of the interrupt data to indicate the interrupt event originated from the UFS device.
[0055] Clause 10. The computing system of clause 8, wherein the interrupt data is configured to represent events corresponding to a plurality of completion queues using a plurality of first bit values of the interrupt data.
[0056] Clause 11. The computing system of clause 10, wherein the interrupt data is further configured to represent events corresponding to a plurality of submission queues using a plurality of second bit values of the interrupt data, the plurality of second bit values being greater than the plurality of first bit values.
[0057] Clause 12. The computing system of clause 8, 9, 10, or 11, wherein the interrupt ID has a bit-length that is determined based on a quantity of submission queues and a quantity of completion queues configured at the computing system.
[0058] Clause 13. The computing system of clause 12, wherein the interrupt data further comprises an interrupt status field located at one or more bit positions that are immediately next to the interrupt ID.
[0059] Clause 14. The computing system of clause 13, wherein the interrupt status field is located at the one or more bit positions that are more significant than bit positions of the interrupt ID.
[0060] Clause 15. A computing system comprising: means for generating an interrupt message in response to an interrupt event, the interrupt message comprising an address and interrupt data, the interrupt data comprising an interrupt ID mapped to a locality specific peripheral interrupt (LPI) associated with the interrupt event, the interrupt ID starting at a least significant bit position of the interrupt data; and means for sending the interrupt message to an interrupt translation service (ITS) mapped on the address to initiate an interrupt handling process corresponding to the LPI.
[0061] Clause 16. The computing system of clause 15, wherein the interrupt ID starts at the least significant bit position of the interrupt data to indicate the interrupt event originated from a Universal Flash Storage device.
[0062] Clause 17. The computing system of clause 15, wherein the interrupt data is configured to represent events corresponding to a plurality of completion queues using a plurality of first bit values of the interrupt data.
[0063] Clause 18. The computing system of clause 17, wherein the interrupt data is further configured to represent events corresponding to a plurality of submission queues using a plurality of second bit values of the interrupt data, the plurality of second bit values being greater than the plurality of first bit values.
[0064] Clause 19. The computing system of clause 15, 16, 17, or 18, wherein the interrupt ID has a bit-length that is determined based on a quantity of submission queues and a quantity of completion queues configured at the computing system.
[0065] Clause 20. The computing system of clause 19, wherein the interrupt data further comprises an interrupt status field located at one or more bit positions that are immediately next to the interrupt ID, and the interrupt status field is located at the one or more bit positions that are more significant than bit positions of the interrupt ID.
[0066] It is understood that the specific order or hierarchy of steps in the processes disclosed is an illustration of exemplary approaches. Based upon design preferences, it is understood that the specific order or hierarchy of steps in the processes may be rearranged. Further, some steps may be combined or omitted. The accompanying method claims present elements of the various steps in a sample order, and are not meant to be limited to the specific order or hierarchy presented.
[0067] The previous description is provided to enable any person skilled in the art to practice the various aspects described herein. Various modifications to these aspects will be readily apparent to those skilled in the art, and the generic principles defined herein may be applied to other aspects. Thus, the claims are not intended to be limited to the aspects shown herein, but is to be accorded the full scope consistent with the language claims, wherein reference to an element in the singular is not intended to mean “one and only one” unless specifically so stated, but rather “one or more. ” Unless specifically stated otherwise, the term “some” refers to one or more. All structural and functional equivalents to the elements of the various aspects described throughout this disclosure that are known or later come to be known to those of ordinary skill in the art are expressly incorporated herein by reference and are intended to be encompassed by the claims. Moreover, nothing disclosed herein is intended to be dedicated to the public regardless of whether such disclosure is explicitly recited in the claims. No claim element is to be construed as a means plus function unless the element is expressly recited using the phrase “means for. ”
[0068] It is understood that the specific order or hierarchy of steps in the processes disclosed is an illustration of exemplary approaches. Based upon design preferences, it is understood that the specific order or hierarchy of steps in the processes may be rearranged. Further, some steps may be combined or omitted. The accompanying method claims present elements of the various steps in a sample order, and are not meant to be limited to the specific order or hierarchy presented.
Claims
1.A method of handling an interrupt in a processing device, the method comprising:generating an interrupt message in response to an interrupt event, the interrupt message comprising an address and interrupt data, the interrupt data comprising an interrupt ID mapped to a locality specific peripheral interrupt (LPI) associated with the interrupt event, the interrupt ID starting at a least significant bit position of the interrupt data; andsending the interrupt message to an interrupt translation service (ITS) mapped on the address to initiate an interrupt handling process corresponding to the LPI.2.The method of claim 1, wherein the interrupt ID starts at the least significant bit position of the interrupt data to indicate the interrupt event being originated from a Universal Flash Storage device.3.The method of claim 1, wherein the interrupt data is configured to represent events corresponding to a plurality of completion queues using a plurality of first bit values of the interrupt data.4.The method of claim 3, wherein the interrupt data is further configured to represent events corresponding to a plurality of submission queues using a plurality of second bit values of the interrupt data, the plurality of second bit values being greater than the plurality of first bit values.5.The method of claim 1, wherein the interrupt ID has a bit-length that is determined based on a quantity of submission queues and a quantity of completion queues configured at the processing device.6.The method of claim 5, wherein the interrupt data further comprises an interrupt status field located at one or more bit positions that are immediately next to the interrupt ID.7.The method of claim 6, wherein the interrupt status field is located at the one or more bit positions that are more significant than bit positions of the interrupt ID.8.A computing system comprising:a Universal Flash Storage (UFS) device; anda UFS host connected to the UFS device,the UFS host configured to:generate an interrupt message in response to an interrupt event corresponding to the UFS device, the interrupt message comprising an address and interrupt data, the interrupt data comprising an interrupt ID mapped to a locality specific peripheral interrupt (LPI) associated with the interrupt event, the interrupt ID starting at a least significant bit position of the interrupt data; andsend the interrupt message to an interrupt translation service (ITS) mapped on the address to initiate an interrupt handling process corresponding to the LPI.9.The computing system of claim 8, wherein the interrupt ID starts at the least significant bit position of the interrupt data to indicate the interrupt event being originated from the UFS device.10.The computing system of claim 8, wherein the interrupt data is configured to represent events corresponding to a plurality of completion queues using a plurality of first bit values of the interrupt data.11.The computing system of claim 10, wherein the interrupt data is further configured to represent events corresponding to a plurality of submission queues using a plurality of second bit values of the interrupt data, the plurality of second bit values being greater than the plurality of first bit values.12.The computing system of claim 8, wherein the interrupt ID has a bit-length that is determined based on a quantity of submission queues and a quantity of completion queues configured at the computing system.13.The computing system of claim 12, wherein the interrupt data further comprises an interrupt status field located at one or more bit positions that are immediately next to the interrupt ID.14.The computing system of claim 13, wherein the interrupt status field is located at the one or more bit positions that are more significant than bit positions of the interrupt ID.15.A computing system comprising:means for generating an interrupt message in response to an interrupt event, the interrupt message comprising an address and interrupt data, the interrupt data comprising an interrupt ID mapped to a locality specific peripheral interrupt (LPI) associated with the interrupt event, the interrupt ID starting at a least significant bit position of the interrupt data; andmeans for sending the interrupt message to an interrupt translation service (ITS) mapped on the address to initiate an interrupt handling process corresponding to the LPI.16.The computing system of claim 15, wherein the interrupt ID starts at the least significant bit position of the interrupt data to indicate the interrupt event being originated from a Universal Flash Storage device.17.The computing system of claim 15, wherein the interrupt data is configured to represent events corresponding to a plurality of completion queues using a plurality of first bit values of the interrupt data.18.The computing system of claim 17, wherein the interrupt data is further configured to represent events corresponding to a plurality of submission queues using a plurality of second bit values of the interrupt data, the plurality of second bit values being greater than the plurality of first bit values.19.The computing system of claim 15, wherein the interrupt ID has a bit-length that is determined based on a quantity of submission queues and a quantity of completion queues configured at the computing system.20.The computing system of claim 19, wherein the interrupt data further comprises an interrupt status field located at one or more bit positions that are immediately next to the interrupt ID, and the interrupt status field is located at the one or more bit positions that are more significant than bit positions of the interrupt ID.
Citation Information
Patent Citations
Method and apparatus for processing adaptive interrupt, host employing the same, I / O device and system
CN106201937A
Storage device and interrupt generation method thereof
CN106528461A
Inter-core communication method and device, computer device and computer readable storage medium
CN117312009A
LPI interrupt virtualization method and device, operating system and storage medium
CN117762560A
Interrupt controller and method of operation of an interrupt controller
US10545893B1