Data processing method, system, electronic device, storage medium and program product
Patent Information
- Application Number
- CN202510435782.X
- Authority / Receiving Office
- CN · China
- Patent Type
- Applications(China)
- Current Assignee / Owner
- Filing Date
- 2025-04-08
- Publication Date
- 2026-10-16
AI Technical Summary
但是,中断聚合条件是作用于智能设备中的所有服务的,而这对于实时性要求高的服务来说,由于需要等待触发中断,因此降低了服务质量
[0016] In the data processing method provided in this application embodiment, at least one queue group priority is preset, and data access requests in each queue group are processed according to the priority. Furthermore, for any queue group, an interrupt request is sent to the host when the corresponding interrupt condition is met. Therefore, by setting the priority of each queue group and the corresponding interrupt condition for each queue group, not only can each data access request be processed according to priority, but interrupts can also be triggered according to the interrupt conditions corresponding to different priorities, rather than all data access requests sharing the same interrupt condition. Thus, while reducing host interrupt overhead, the real-time requirements of different data access requests can be met, which is beneficial to improving the overall performance of the host.
Smart Images

Figure CN122924929A_ABST
Abstract
Description
Technical Field
[0001] This application relates to the field of computer technology, and in particular to a data processing method, system, electronic device, storage medium, and program product. Background Technology
[0002] Solid-state drives (SSDs) are widely used in various smart devices due to their high read / write speeds and low power consumption. When a service running on a smart device needs to read or write data to an SSD, it sends the corresponding I / O request (Input / Output Request) to the SSD. After processing each I / O request, the SSD sends an interrupt request to the smart device. In cases of high concurrency I / O requests, to reduce the interrupt overhead of the smart device, interrupt aggregation conditions are set, such as the SSD sending an interrupt request to the smart device every preset interval. However, interrupt aggregation conditions apply to all services within the smart device. For services with high real-time requirements, waiting for an interrupt to be triggered degrades service quality. Conversely, for services with low real-time requirements, a shorter preset interval increases the number of interrupts, thus increasing the interrupt overhead of the smart device. Summary of the Invention
[0003] This application provides a data processing method, system, electronic device, storage medium, and program product to alleviate or solve one or more technical problems existing in the prior art.
[0004] In a first aspect, embodiments of this application provide a data processing method, the method comprising:
[0005] When at least one queue group stores data access requests, the data access requests in the at least one queue group are processed according to the preset priority of the at least one queue group;
[0006] For any queue group, if the queue group meets the corresponding interruption condition, an interruption request is sent to the host. The interruption request is used to instruct the host to read at least one processing result corresponding to the queue group. The at least one processing result is the processing result of the data access request in the queue group.
[0007] Secondly, embodiments of this application provide a data processing method, the method comprising:
[0008] Receive an interrupt request sent by a storage device, wherein the interrupt request is sent when any queue group in at least one queue group meets the corresponding interrupt condition;
[0009] The interrupt request reads at least one processing result corresponding to the queue group, and the at least one processing result is obtained by processing the data access request in the queue group according to the preset priority of the at least one queue group.
[0010] Thirdly, embodiments of this application provide a data processing system, including: a storage device and a host;
[0011] The storage device is configured to process data access requests in at least one queue group according to a preset priority of the at least one queue group when data access requests are stored in at least one queue group; and to send an interrupt request to the host when the queue group meets the corresponding interrupt condition for any queue group, wherein the interrupt request is used to instruct the host to read at least one processing result corresponding to the queue group, wherein the at least one processing result is the processing result of the data access request in the queue group.
[0012] The host is configured to read at least one processing result from the queue group according to the interrupt request.
[0013] Fourthly, embodiments of this application provide an electronic device, including a memory, a processor, and a computer program stored in the memory, wherein the processor implements any of the methods of embodiments of this application when executing the computer program.
[0014] Fifthly, embodiments of this application provide a computer-readable storage medium storing a computer program, which, when executed by a processor, implements the method of any one of the embodiments of this application.
[0015] Sixthly, embodiments of this application provide a computer program product, including a computer program that, when executed by a processor, implements any of the methods described in the embodiments of this application.
[0016] In the data processing method provided in this application embodiment, at least one queue group priority is preset, and data access requests in each queue group are processed according to the priority. Furthermore, for any queue group, an interrupt request is sent to the host when the corresponding interrupt condition is met. Therefore, by setting the priority of each queue group and the corresponding interrupt condition for each queue group, not only can each data access request be processed according to priority, but interrupts can also be triggered according to the interrupt conditions corresponding to different priorities, rather than all data access requests sharing the same interrupt condition. Thus, while reducing host interrupt overhead, the real-time requirements of different data access requests can be met, which is beneficial to improving the overall performance of the host.
[0017] The above description is only an overview of the technical solution of this application. In order to better understand the technical means of this application, it can be implemented according to the contents of the specification. In order to make the above and other objects, features and advantages of this application more obvious and understandable, specific embodiments of this application are given below. Attached Figure Description
[0018] In the accompanying drawings, unless otherwise specified, the same reference numerals throughout the various drawings denote the same or similar parts or elements. These drawings are not necessarily drawn to scale. It should be understood that these drawings depict only some embodiments according to this application and should not be construed as limiting the scope of this application.
[0019] Figure 1 This illustration shows an application scenario diagram of the data processing method according to an embodiment of this application;
[0020] Figure 2 A first flowchart of a data processing method according to an embodiment of this application is shown;
[0021] Figure 3 A second flowchart of a data processing method according to an embodiment of this application is shown;
[0022] Figure 4 A schematic diagram of a first type of module composition of a data processing apparatus according to an embodiment of this application is shown;
[0023] Figure 5 A schematic diagram of a second type of module composition of a data processing apparatus according to an embodiment of this application is shown;
[0024] Figure 6 A schematic diagram of the composition of a data processing system according to an embodiment of this application is shown;
[0025] Figure 7 A block diagram of an electronic device provided in an embodiment of this application is shown. Detailed Implementation
[0026] In the following description, only certain exemplary embodiments are briefly described. As those skilled in the art will recognize, the described embodiments can be modified in various ways without departing from the concept or scope of this application. Therefore, the drawings and description are considered to be exemplary in nature and not restrictive.
[0027] To facilitate understanding of the technical solutions of the embodiments of this application, the relevant technologies of the embodiments of this application are described below. The following relevant technologies are optional solutions and can be combined with the technical solutions of the embodiments of this application in any way, and all of them fall within the protection scope of the embodiments of this application.
[0028] The following terms will be used in the following text:
[0029] Interrupt Coalescing: An interrupt is generated after the processing results of at least one data access request are accumulated.
[0030] Queue group: consists of multiple submit queues and one complete queue, with multiple submit queues having the same priority.
[0031] The embodiments of this application aim to provide a data processing method, system, electronic device, storage medium, and program product to meet the real-time requirements of different data access requests while reducing host interruption overhead. Figure 1 This is a schematic diagram illustrating an application scenario of a data processing method provided in an embodiment of this application, such as... Figure 1 As shown, this scenario includes storage devices and a host. The storage device can be a solid-state drive (SSD), a hard disk drive (HDD), a USB (Universal Serial Bus) storage device, an optical disc, a hard disk, etc. The host can be a terminal device or a server; terminal devices can be mobile phones, tablets, desktop computers, laptops, smart home devices, in-vehicle terminals, etc.; servers can be physical servers or cloud servers for cloud computing. The storage device can be a device independent of the host and connected to the host externally, such as via a USB interface or a SATA (Serial Advanced Technology Attachment) interface. The storage device can also be integrated into the host as part of it. Figure 1 The example shown is a desktop computer with the storage device independent of the host.
[0032] The host can maintain queue creation policies, request encapsulation policies, and processing result retrieval policies. The queue creation policy instructs the creation of multiple queue groups in response to a start command, assigning priorities and interrupt conditions to each queue group, and sending a first notification message to the storage device to ensure the storage device saves the priorities and interrupt conditions of the queue groups. Alternatively, the queue creation policy instructs the creation of a queue group corresponding to any priority when a data access request for that priority is received and it is determined that no queue group exists for that priority. It also instructs the assignment of interrupt conditions to the created queue group and the sending of a second notification message to the storage device to ensure the storage device saves the priority and interrupt conditions of the created queue group. The request encapsulation policy instructs the encapsulation of input / output requests into a preset format data access request upon receipt, and the data access request is sent to the storage device. This preset format data access request may include a priority or group identifier. The processing result retrieval policy instructs the retrieval of the processing result of the data access request from the corresponding completion queue upon receiving an interrupt request from the storage device.
[0033] The storage device can maintain information management policies, request processing policies, and interruption policies. The information management policy instructs that upon receiving a first notification message from the host, the priorities and interruption conditions of multiple queue groups be saved; or, upon receiving a second notification message from the host, the priorities and interruption conditions of the currently created queue group be saved. The request processing policy instructs that, if at least one queue group stores data access requests, the data access requests in the at least one queue group be processed according to the preset priorities of the at least one queue group. The interruption policy instructs that, for any queue group, an interruption request be sent to the host if the queue group meets its corresponding interruption condition.
[0034] Therefore, by setting the priority of each queue group and the corresponding interrupt conditions for each queue group, not only can each data access request be processed according to priority, but also interrupts can be triggered according to the interrupt conditions corresponding to different priorities, instead of each data access request sharing the same interrupt condition. Thus, while reducing host interrupt overhead, the real-time requirements of different data access requests can be met, which is beneficial to improving the overall performance of the host.
[0035] It should be noted that the application scenarios or examples provided in the embodiments of this application are for ease of understanding, and the embodiments of this application do not specifically limit the application of the technical solutions. In addition, the user information (including but not limited to user device information, user personal information, etc.) and data (including but not limited to data used for analysis, stored data, displayed data, etc.) involved in this application are all information and data authorized by the user or fully authorized by all parties, and the collection, use and processing of related data must comply with the relevant laws, regulations and standards of relevant countries and regions, and corresponding operation entry points are provided for users to choose to authorize or refuse.
[0036] The technical solution of this application and how it solves the aforementioned technical problems are described in detail below with specific embodiments. The listed specific embodiments can be combined with each other, and the same or similar concepts or processes may not be described again in some embodiments. The embodiments of this application will be described in detail below with reference to the accompanying drawings.
[0037] Figure 2 A flowchart of a data processing method according to an embodiment of this application is shown. Figure 2 The method shown can be used by Figure 1 Execute on the storage device in, such as Figure 2 As shown, the method may include steps S201 and S202.
[0038] Step S201: When at least one queue group stores data access requests, process the data access requests in at least one queue group according to the preset priority of at least one queue group.
[0039] Step S202: For any queue group, if the queue group meets the corresponding interrupt condition, send an interrupt request to the host. The interrupt request is used to instruct the host to read at least one processing result corresponding to the queue group. The at least one processing result is the processing result of the data access request in the queue group.
[0040] To meet the real-time requirements of different data access requests while reducing host interrupt overhead, in this embodiment, after creating each queue group, the host can assign a priority and corresponding interrupt conditions to each queue group. In some implementations, the host can set the priority of each queue group based on the NVME (Non-Volatile Memory Express) protocol. For example, priorities include Urgent, High, Medium, and Low, where Urgent can be represented as 00b, High as 01b, Medium as 10b, and Low as 11b. The host can set the interrupt conditions of queue groups based on the `set feature` command. In the NVME protocol, the `set feature` command is used to enable, disable, or adjust the function or parameters of a feature.
[0041] Any queue group may include at least one commit queue, which stores pending data access requests of corresponding priorities. Higher-priority data access requests have stricter real-time requirements, while lower-priority requests have lower real-time requirements. The priority of a data access request can be pre-configured by the user or by the host based on the service type of the service to which the request belongs. Data access requests can include reading, writing, and deleting data.
[0042] In some implementations, the interrupt conditions for high-priority queue groups can differ from those for low-priority queue groups; that is, the interrupt conditions for data access requests with high real-time requirements differ from those for data access requests with low real-time requirements. For example, the relevant threshold for the interrupt condition of a high-priority queue group is lower than the relevant threshold for the interrupt condition of a low-priority queue group. In this case, since the storage device processes data access requests stored in each queue group according to the queue group's priority and sends an interrupt request to the host when any queue group meets its corresponding interrupt condition, instead of sharing the same interrupt condition for data access requests with different real-time requirements, the performance degradation caused by waiting for the interrupt condition to be met is avoided for data access requests with high real-time requirements. For data access requests with low real-time requirements, the host resources are not consumed due to multiple interrupts triggered together with data access requests with high real-time requirements, thus reducing the host's interrupt overhead.
[0043] In some implementations, the interrupt conditions for high-priority queue groups can be the same as those for low-priority queue groups. For example, priorities include high, medium, and low, and the interrupt conditions for medium-priority queue groups can be the same as those for low-priority queue groups. In this case, since medium-priority queues are higher than low-priority queues, data access requests in medium-priority queue groups will be processed before those in low-priority queue groups. Furthermore, although the interrupt conditions for medium-priority and low-priority queue groups are the same, each queue group is judged independently to determine whether its corresponding interrupt condition is met. This means that queue groups do not affect each other, thus ensuring the high real-time requirements of data access requests in medium-priority queue groups. This also achieves the goal of meeting the real-time requirements of different data access requests while reducing host interrupt overhead.
[0044] Understandably, when the host-maintained queue creation policy instructs the creation of a queue group corresponding to a given priority when a data access request for that priority is received and it is determined that no queue group exists for that priority, there may be only one queue group at any given time. The storage device, upon determining that a data access request is stored in that queue group, processes the data access request within that queue group. Over time, the host may create multiple queue groups. In this case, if the storage device determines that at least one of these queue groups contains a data access request, it processes the data access requests in that at least one queue group according to its preset priority.
[0045] Furthermore, when the queue creation policy maintained by the host is used to instruct the creation of multiple queue groups in response to a startup command, the storage device, upon determining that at least one of the multiple queue groups stores a data access request, processes the data access request in the at least one queue group according to the preset priority of the at least one queue group.
[0046] As can be seen, in the data processing method provided in this application embodiment, by setting the priority of each queue group and the interrupt conditions corresponding to each queue group, not only can each data access request be processed according to the priority, but also interrupts can be triggered according to the interrupt conditions corresponding to different priorities, instead of each data access request sharing the same interrupt condition. Therefore, it can meet the real-time requirements of different data access requests while reducing host interrupt overhead, which is beneficial to improving the overall performance of the host.
[0047] To facilitate the storage device in processing each pending data access request, in some embodiments, the method may further include: upon receiving a data access request sent by the host, determining a target queue for storing the data access request in at least one queue group based on storage rules, and storing the data access request in the target queue.
[0048] Specifically, upon receiving an input / output request, the host encapsulates the request into a data access request in a preset format and sends it to the storage device. Upon receiving the data access request from the host, the storage device determines, according to preset storage rules, the target queue for storing the data access request from among the queues in at least one queue group created by the host, and stores the data access request in the target queue. The input / output request can originate from either the user or the host system.
[0049] To ensure that the real-time requirements of each data access request are met, the data access request in the preset format may include the target priority of the data access request or the group identifier of the queue group with the target priority. Accordingly, the above-mentioned determination of the target queue for storing data access requests in at least one queue group based on storage rules may include:
[0050] Obtain the target priority from the data access request, and select at least one queue group with a priority equal to the target priority as the target queue group. Then, identify the target queues within the target queue group that meet the storage conditions. Alternatively, obtain the group identifier from the data access request, select the queue group corresponding to the group identifier as the target queue group, and then identify the target queues within the target queue group that meet the storage conditions.
[0051] In some implementations, the data access request may include a target priority. Accordingly, when the storage device receives a data access request, it obtains the target priority from the data access request and determines the queue group with the target priority as the target queue group.
[0052] In other implementations, the data access request may include a group identifier. Accordingly, when the storage device receives a data access request, it retrieves the group identifier from the data access request and identifies the queue group corresponding to the group identifier as the target queue group.
[0053] Therefore, by carrying the target priority or the group identifier of the queue group with the target priority in the data access request, it can be ensured that the data access request is stored in the target queue group with the target priority, thereby ensuring that the processing of the data access request can meet its real-time requirements.
[0054] In some implementations, when the target queue group includes multiple submission queues, the target queue for storing data access requests can be determined based on a minimum load strategy. That is, determining the target queue in the target queue group that meets the storage conditions can include: determining the number of data access requests stored in each submission queue of the target queue group, and determining the submission queue corresponding to the minimum number as the target queue.
[0055] Specifically, the number of data access requests stored in each submission queue in the target queue group is counted, the minimum number is obtained by comparing each number, and the submission queue corresponding to the minimum number is determined as the target queue.
[0056] In other implementations, when the target queue group includes multiple submission queues, the target queue for storing data access requests can be determined based on a sequential storage strategy. That is, determining the target queue that meets the storage conditions within the target queue group can include: sorting the submission queues according to their preset numbers, and determining the submission queue corresponding to the next number after the target number as the target queue, where the target number is the number of the submission queue that previously stored the data access request.
[0057] Specifically, for any queue group, the numbers of each submission queue in the queue group can be pre-defined and sorted. After storing a data access request, the target number of the submission queue for that data access request is recorded. Correspondingly, after determining the target queue group, the submission queue corresponding to the next number after the target number can be determined as the target queue, sorted according to the preset numbers.
[0058] It should be noted that the numbers of each submission queue in any queue group can be sequential (e.g., 1, 2, 3, etc.), skipped (e.g., 1, 3, 5), or random (e.g., 2, 7, 0, etc.). The numbering method can be set as needed in practical applications. As long as the numbering order is preset, it is sufficient. For example, a queue group includes 4 submission queues, numbered 2, 7, 0, and 9, with the numbering order being a cycle of 9, 7, 2, 0. When the target number is 0, the submission queue corresponding to number 9 is determined as the target queue.
[0059] In practical applications, for any given queue group, the storage device can launch multiple processing processes. These processing processes can have a one-to-one correspondence with the multiple submission queues in the queue group, or a one-to-many correspondence. Multiple processing processes can handle data access requests in their respective submission queues in parallel, thereby improving the processing speed of data access requests. Alternatively, when the storage device determines that the priority of the queue group is a preset priority, it can launch multiple processing processes, which can then handle data access requests stored in the submission queues of their respective queue groups in parallel.
[0060] Therefore, whether the target queue is determined according to the minimum load strategy or the sequential storage strategy, it avoids data access requests being centrally stored in a single submission queue, ensuring the balance of requests across the submission queues in the queue group. Especially when multiple processing processes handle data access requests in parallel, it avoids problems such as low processing efficiency caused by data access requests being centrally stored in a single submission queue.
[0061] It can be seen that by pre-setting storage rules and determining the target queue for storing data access requests based on the storage rules, the real-time requirements of data access requests can be guaranteed, and the processing efficiency of data access requests can be improved.
[0062] To reduce host interrupt overhead, in some implementations, interrupt conditions may include quantity conditions and time conditions. Quantity conditions indicate that an interrupt is triggered when the number of processed results of data access requests reaches a quantity threshold, and time conditions indicate that an interrupt is triggered when the statistical duration reaches a duration threshold. Accordingly, to facilitate determining whether each queue group meets the corresponding interrupt conditions, in some implementations, each queue group also includes a completion queue. For any data access request stored in this queue group, after processing the data access request, the process may further include: saving the processing result of the data access request to the completion queue of the queue group; and determining whether the queue group meets the corresponding interrupt conditions based on the total number of processing results currently to be read in the completion queue and the corresponding time duration of the queue group.
[0063] In some implementations, a timer can be set for each queue group, and a start pointer can be set in the completion queue to indicate the first processing result to be read, i.e., the first processing result to be read in the current interrupt round. Accordingly, after the storage device saves the processing result of the data access request to the completion queue of the queue group, the processing result indicated by the start pointer can be used as the starting result. The total number of the starting result and all processing results stored after the starting result is counted, and this total number is determined as the total number of processing results to be read in the completion queue. The timer value corresponding to the queue group is used as the timing duration corresponding to the queue group. Based on the determined total number and timing duration, it is determined whether the queue group meets the corresponding interrupt condition.
[0064] In some implementations, a timer can be set for each queue group, and an end pointer can be set in the completion queue to indicate the last processing result corresponding to the previous interrupt request. Accordingly, after the storage device saves the processing result of the data access request to the completion queue of the queue group, the processing result indicated by the end pointer can be determined as the end result, and the total number of processing results stored after the end result can be counted and determined as the total number of processing results currently to be read in the completion queue; and the timer value corresponding to the queue group can be read as the timer duration corresponding to the queue group; based on the determined total number and timer duration, it can be determined whether the queue group meets the corresponding interrupt condition.
[0065] The timer can start counting from zero, and after sending an interrupt request to the host, it updates the countdown value of the timer in the corresponding queue group to zero.
[0066] Therefore, by setting up a completion queue in each queue group and storing the processing results of data access requests in the corresponding queue group through the completion queue, the total number of processing results to be read can be accurately determined based on the completion queue. Then, based on the total number and the timer duration corresponding to the queue group, it can be accurately determined whether the corresponding interruption condition is met.
[0067] Since the interrupt conditions for different queue groups may be the same or different, in order to enable the storage device to accurately determine the interrupt conditions, in some implementations, the storage device stores the correspondence between the group identifier of each queue group and the interrupt condition parameters. Accordingly, the above-mentioned determination of whether a queue group meets the corresponding interrupt condition based on the determined total number and timing duration may include:
[0068] In the correspondence between group identifiers and interrupt condition parameters, obtain the target interrupt condition parameter corresponding to the group identifier of the queue group; determine whether the total quantity has reached the quantity threshold in the target interrupt condition parameter, and determine whether the timing duration has reached the duration threshold in the target interrupt condition parameter; if at least one determination result is yes, determine that the queue group meets the corresponding interrupt condition.
[0069] Specifically, the aforementioned first notification message may include group identifiers, priorities, and interrupt condition parameters corresponding to multiple queue groups. Accordingly, upon receiving the first notification message, the storage device can establish a correspondence between the group identifiers, priorities, and interrupt condition parameters of each queue group based on the first notification message. Alternatively, the aforementioned second notification message may include group identifiers, priorities, and interrupt condition parameters corresponding to at least one queue group. Accordingly, upon receiving the second notification message, the storage device can establish a correspondence between the group identifiers, priorities, and interrupt condition parameters of the at least one queue group based on the second notification message. Furthermore, for any queue group, after determining the total number of processing results currently to be read in the completion queue of that queue group, the target interrupt condition parameter corresponding to the group identifier of that queue group can be obtained from the correspondence between the group identifier and the interrupt condition parameter. It is then determined whether the total number has reached the quantity threshold in the target interrupt condition parameter. If the total number reaches the quantity threshold in the target interrupt condition parameter, it is determined that the queue group meets the corresponding interrupt condition. If the total number has not reached the quantity threshold in the target interrupt condition parameter, it is determined whether the timing duration has reached the duration threshold in the target interrupt condition parameter. If the timeout duration reaches the target interrupt condition parameter's duration threshold, the queue group is determined to meet the corresponding interrupt condition. If the timeout duration does not reach the target interrupt condition parameter's duration threshold, the queue group is determined not to meet the corresponding interrupt condition. Alternatively, based on the correspondence between group identifiers and interrupt condition parameters, after obtaining the target interrupt condition parameter corresponding to the queue group's group identifier, first determine if the timeout duration has reached the target interrupt condition parameter's duration threshold. If the timeout duration reaches the target interrupt condition parameter's duration threshold, the queue group is determined to meet the corresponding interrupt condition. If the timeout duration does not reach the target interrupt condition parameter's duration threshold, determine if the total number of items has reached the target interrupt condition parameter's quantity threshold. If the total number of items reaches the target interrupt condition parameter's quantity threshold, the queue group is determined to meet the corresponding interrupt condition. If the total number of items does not reach the target interrupt condition parameter's quantity threshold, the queue group is determined not to meet the corresponding interrupt condition.
[0070] Understandably, interrupt condition parameters are used to determine whether an interrupt condition is met, and the quantity condition and time condition in the interrupt condition take precedence over the one that comes first; meeting either one determines that the interrupt condition is met.
[0071] Therefore, by maintaining the correspondence between group identifiers and interrupt condition parameters, the interrupt condition parameters of each queue group can be accurately obtained based on this correspondence. This allows for accurate determination of whether the interrupt condition is met based on the interrupt condition parameters, ensuring the accuracy of interrupt triggering.
[0072] Considering that in practical applications, the data access requirements for a particular service provided by the host are often dynamically changing, in order to ensure the rationality of the interruption conditions, in some implementations, the host can also detect the performance index data of each queue group according to a preset detection period. If the performance index data indicates that the interruption condition parameters of the corresponding queue group meet the update conditions, new interruption condition parameters for that queue group are generated, and an update command is sent to the storage device. The performance index data of the queue group can be the average queue depth of each submission queue (i.e., the average number of stored data access requests), the average latency within the detection period, the number of data access requests processed per unit time, etc. Latency refers to the time from when a data access request is stored in the submission queue to when the processing result is saved in the completion queue. The average latency is the average of the latency times of each data access request processed in the queue group within the detection period. Correspondingly, the method may also include:
[0073] Upon receiving an update command from the host, the group identifier and new interrupt condition parameters are obtained from the update command. The new interrupt condition parameters are generated by the host after determining that the interrupt condition parameters meet the update conditions. The interrupt condition parameters stored corresponding to the group identifier are then updated to the new interrupt condition parameters.
[0074] Specifically, when the storage device receives an update command, it retrieves the group identifier and the new interrupt condition parameters from the update command. Based on the retrieved group identifier, it queries the corresponding interrupt condition parameter in the correspondence between group identifiers and interrupt condition parameters, and updates the retrieved interrupt condition parameter with the new interrupt condition parameter.
[0075] For example, the performance metric data of the queue group is the average queue depth of each submission queue. When the average queue depth is greater than the first depth threshold, the interruption frequency can be reduced, that is, the number threshold and duration threshold in the interruption condition parameters can be increased. When the average queue depth is less than the second depth threshold, the interruption frequency can be increased, that is, the number threshold and duration threshold in the interruption condition parameters can be decreased. The first depth threshold is greater than the second depth threshold.
[0076] Therefore, by dynamically updating the interrupt condition parameters of the queue group, the rationality of the interrupt condition parameters can be ensured, and the data processing efficiency can be improved.
[0077] Corresponding to the application scenarios and methods provided in the embodiments of this application, the embodiments of this application also provide a data processing method, which can be applied to... Figure 1 The host shown is as follows: Figure 3 As shown, the method includes the following steps S301 and S302.
[0078] Step S301: Receive an interrupt request sent by the storage device. The interrupt request is sent when any queue in at least one queue group meets the corresponding interrupt condition.
[0079] Step S302: Read at least one processing result corresponding to the corresponding queue group according to the interrupt request. The at least one processing result is obtained by processing the data access request in the queue group according to the preset priority of the at least one queue group.
[0080] For example, there are three queue groups, denoted as queue group 1, queue group 2, and queue group 3, respectively. Queue group 1 has a higher priority than queue group 2, and queue group 2 has a higher priority than queue group 3. The storage device processes data processing requests stored in each queue group according to their priority. If queue group 2 meets the corresponding interrupt condition, the storage device sends an interrupt request to the host. Accordingly, the host reads at least one processing result from queue group 2 based on the interrupt request.
[0081] In some implementations, step S301 is preceded by:
[0082] In response to a startup command, multiple queue groups are created, and priorities and interrupt conditions are assigned to each queue group. A first notification message is sent to the storage device, instructing the storage device to save the priorities and interrupt conditions of the multiple queue groups. Alternatively, for any priority, if a data access request corresponding to that priority is received and it is determined that no queue group exists for that priority, a queue group corresponding to that priority is created, an interrupt condition is assigned to the created queue group, and a second notification message is sent to the storage device, instructing the storage device to save the priority and interrupt conditions of that queue group.
[0083] In some implementations, the method may further include:
[0084] Upon receiving an input / output request, the input / output request is encapsulated into a data access request in a preset format and sent to the storage device. The preset format data access request includes a priority or group identifier.
[0085] In some implementations, any queue group includes multiple submission queues. Accordingly, the method may further include: detecting the performance index data of the queue group according to a detection period; generating new interrupt condition parameters for the queue group when the performance index data indicates that the interrupt condition parameters of the queue group meet the update conditions; and sending an update instruction to the storage device, the update instruction including the new interrupt condition parameters and the group identifier of the queue group, so that the storage device updates the interrupt condition parameters of the queue group to the new interrupt condition parameters.
[0086] It should be noted that the specific implementation methods of the above steps can be found in the relevant descriptions above, and the repeated parts will not be repeated here.
[0087] As can be seen, in the data processing method provided in this application embodiment, by setting the priority of each queue group and the interrupt conditions corresponding to each queue group, not only can each data access request be processed according to the priority, but also interrupts can be triggered according to the interrupt conditions corresponding to different priorities, instead of each data access request sharing the same interrupt condition. Therefore, it can meet the real-time requirements of different data access requests while reducing host interrupt overhead, which is beneficial to improving the overall performance of the host.
[0088] Corresponding to the application scenarios and methods provided in the embodiments of this application, the embodiments of this application also provide a data processing apparatus, which can be applied to... Figure 1 In the storage device shown, such as Figure 4 As shown, the device includes:
[0089] Processing module 401 is used to process data access requests in at least one queue group according to the preset priority of the at least one queue group when data access requests are stored in at least one queue group.
[0090] Interrupt module 402 is used to send an interrupt request to the host for any queue group when the queue group meets the corresponding interrupt condition. The interrupt request is used to instruct the host to read at least one processing result corresponding to the queue group. The at least one processing result is the processing result of the data access request in the queue group.
[0091] In some implementations, any queue group includes a completion queue, and the apparatus further includes a first storage module and a first determination module.
[0092] The first storage module is used to save the processing result of any data access request stored in the queue group to the completion queue of the queue group after the processing module 401 processes the data access request.
[0093] The first determining module is used to determine whether the queue group meets the corresponding interruption condition based on the total number of processing results to be read in the completion queue and the time duration corresponding to the queue group.
[0094] In some implementations, the first determining module is specifically used for:
[0095] In the correspondence between group identifiers and interrupt condition parameters, the target interrupt condition parameter corresponding to the group identifier of the queue group is obtained.
[0096] Determine whether the total quantity has reached the quantity threshold in the target interruption condition parameter.
[0097] Determine whether the timing duration has reached the duration threshold in the target interruption condition parameter.
[0098] If at least one determination result is yes, the queue group is determined to meet the corresponding interruption condition.
[0099] In some embodiments, the apparatus further includes a second determining module and a second storage module.
[0100] The second determining module is used to determine, based on storage rules, the target queue in the at least one queue group for storing the data access request when a data access request is received from the host.
[0101] The second storage module is used to store the data access request in the target queue.
[0102] In some implementations, the second determining module is specifically used for:
[0103] The target priority is obtained from the data access request. The queue group with the target priority among the at least one queue group is selected as the target queue group, and the target queues within the target queue group that meet the storage conditions are determined. Alternatively, a group identifier is obtained from the data access request. The queue group corresponding to the group identifier is selected as the target queue group, and the target queues within the target queue group that meet the storage conditions are determined.
[0104] In some implementations, any queue group includes multiple submission queues, and the second determining module is further specifically used for:
[0105] Determine the number of data access requests stored in each submission queue of the target queue group, and designate the submission queue with the minimum number as the target queue. Alternatively, sort the submission queues in the target queue group according to their preset numbers, and designate the submission queue corresponding to the next target number as the target queue, where the target number is the number of the submission queue that previously stored the data access request.
[0106] In some embodiments, the apparatus further includes:
[0107] The update module is used to, upon receiving an update instruction sent by the host, obtain a group identifier and a new interrupt condition parameter from the update instruction, wherein the new interrupt condition parameter is generated by the host when it determines that the interrupt condition parameter meets the update condition; and update the interrupt condition parameter stored corresponding to the group identifier to the new interrupt condition parameter.
[0108] The functions of each module in each device in the embodiments of this application can be found in the corresponding description in the above method, and they have corresponding beneficial effects, which will not be repeated here.
[0109] Corresponding to the application scenarios and methods provided in the embodiments of this application, the embodiments of this application also provide a data processing apparatus, which can be applied to... Figure 1 In the host shown, such as Figure 5 As shown, the device includes:
[0110] The receiving module 501 is used to receive an interrupt request sent by the storage device, wherein the interrupt request is sent when any queue group in at least one queue group meets the corresponding interrupt condition.
[0111] The reading module 502 is used to read at least one processing result corresponding to the queue group according to the interrupt request. The at least one processing result is obtained by processing the data access request in the queue group according to the preset priority of the at least one queue group.
[0112] In some implementations, the apparatus also includes a creation module.
[0113] The creation module is configured to, before the receiving module 501 receives an interrupt request sent by the storage device, create multiple queue groups in response to a start command, assign priorities and interrupt conditions to the multiple queue groups respectively, and send a first notification message to the storage device. The first notification message is used to notify the storage device to save the priorities and interrupt conditions of the multiple queue groups. Alternatively, for any priority, if a data access request corresponding to the priority is obtained and it is determined that there is no queue group corresponding to the priority, the module creates the queue group corresponding to the priority, assigns an interrupt condition to the created queue group, and sends a second notification message to the storage device. The second notification message is used to notify the storage device to save the priority and interrupt conditions of the queue group.
[0114] In some embodiments, the apparatus further includes a conversion module and a transmission module.
[0115] The conversion module is used to encapsulate the input / output request into a data access request in a preset format when an input / output request is received. The data access request in the preset format includes a priority or group identifier.
[0116] The sending module is used to send the data access request to the storage device.
[0117] In some implementations, any queue group includes multiple submission queues, and the apparatus further includes a detection module and a generation module.
[0118] The detection module is used to detect the performance index data of the queue group according to the detection cycle.
[0119] The generation module is configured to generate new interrupt condition parameters for the queue group when the performance index data indicates that the interrupt condition parameters of the queue group meet the update conditions; and send an update instruction to the storage device, the update instruction including the new interrupt condition parameters and the group identifier of the queue group, so that the storage device updates the interrupt condition parameters of the queue group to the new interrupt condition parameters.
[0120] The functions of each module in each device in the embodiments of this application can be found in the corresponding description in the above method, and they have corresponding beneficial effects, which will not be repeated here.
[0121] Furthermore, the device embodiments described above are merely illustrative. The modules described as separate components may or may not be physically separate. The components illustrated as modules may or may not be physical modules; that is, they may be located in one place or distributed across multiple network units. Some or all of the modules can be selected to achieve the purpose of this application according to actual needs.
[0122] Corresponding to the application scenarios and methods provided in the embodiments of this application, the embodiments of this application also provide a data processing system, such as... Figure 6 As shown, the system includes: a storage device 601 and a host 602;
[0123] The storage device 601 is configured to process data access requests in at least one queue group according to a preset priority of the at least one queue group when the queue group stores data access requests; and to send an interrupt request to the host 602 when the queue group meets the corresponding interrupt condition for any queue group, the interrupt request being used to instruct the host 602 to read at least one processing result corresponding to the queue group, the at least one processing result being the processing result of the data access request in the queue group.
[0124] The host 602 is configured to read at least one processing result from the queue group according to the interrupt request.
[0125] In some embodiments, the host 602 is further configured to create multiple queue groups in response to a startup command, assign priorities and interrupt conditions to the multiple queue groups respectively, and send a first notification message to the storage device 601. Correspondingly, the storage device 601 is further configured to save the priorities and interrupt conditions of the multiple queue groups according to the first notification message.
[0126] Alternatively, the host 602 is further configured to, for any priority, upon receiving a data access request corresponding to the priority and determining that no queue group exists corresponding to the priority, create a queue group corresponding to the priority, assign an interrupt condition to the created queue group, and send a second notification message to the storage device 601. The storage device 601 is further configured to, based on the second notification message, save the priority and interrupt condition of the queue group.
[0127] In some embodiments, the host 602 is further configured to, upon receiving an input / output request, encapsulate the input / output request into a data access request of a preset format and send the data access request to the storage device 601, wherein the data access request of the preset format includes a priority or group identifier;
[0128] The storage device 601 is further configured to, upon receiving a data access request sent by the host 602, determine, based on storage rules, a target queue in the at least one queue group for storing the data access request, and save the data access request to the target queue.
[0129] In some implementations, any queue group includes multiple submission queues. Accordingly, the host 602 is further configured to detect the performance index data of the queue group according to a detection cycle, and if the performance index data indicates that the interrupt condition parameters of the queue group meet the update conditions, generate new interrupt condition parameters for the queue group, and send an update instruction to the storage device 601, the update instruction including the new interrupt condition parameters and the group identifier of the queue group.
[0130] The storage device 601 is further configured to, upon receiving the update instruction, obtain the group identifier and the new interrupt condition parameter from the update instruction, and replace the interrupt condition parameter stored corresponding to the group identifier with the new interrupt condition parameter.
[0131] The functions of each component in the data processing system provided in this application embodiment can be found in the corresponding descriptions in the above methods, and they have corresponding beneficial effects, which will not be repeated here.
[0132] Figure 7 This is a block diagram of an electronic device used to implement embodiments of this application. For example... Figure 7As shown, the electronic device includes a memory 701 and a processor 702. The memory 701 stores a computer program that can run on the processor 702. When the processor 702 executes the computer program, it implements the method described in the above embodiments. The number of memories 701 and processors 702 can be one or more. In a specific implementation, the electronic device may also include a communication interface 703 for communicating with external devices and performing data exchange and transmission.
[0133] In practical implementation, if the memory 701, processor 702, and communication interface 703 are implemented independently, they can be interconnected via a bus to communicate with each other. This bus can be an Industry Standard Architecture (ISA) bus, a Peripheral Component Interconnect (PCI) bus, or an Extended Industry Standard Architecture (EISA) bus, etc. This bus can be divided into an address bus, a data bus, a control bus, etc. For ease of representation, Figure 7 The bus is represented by a single thick line, but this does not mean that there is only one bus or one type of bus.
[0134] Optionally, in a specific implementation, if the memory 701, processor 702, and communication interface 703 are integrated on a single chip, the memory 701, processor 702, and communication interface 703 can communicate with each other through an internal interface.
[0135] This application provides a computer-readable storage medium storing a computer program that, when executed by a processor, implements the method provided in this application.
[0136] This application provides a computer program product, including a computer program that, when executed by a processor, implements the method provided in this application.
[0137] This application also provides a chip including a processor for calling and executing instructions stored in a memory, causing a communication device with the chip installed to perform the method provided in this application.
[0138] This application also provides a chip, including: an input interface, an output interface, a processor, and a memory. The input interface, output interface, processor, and memory are connected through an internal connection path. The processor is used to execute code in the memory. When the code is executed, the processor is used to execute the method provided in the application embodiment.
[0139] It should be understood that the aforementioned processor can be a Central Processing Unit (CPU), or other general-purpose processors, Digital Signal Processors (DSPs), Application Specific Integrated Circuits (ASICs), Field-Programmable Gate Arrays (FPGAs), or other programmable logic devices, discrete gate or transistor logic devices, discrete hardware components, etc. General-purpose processors can be microprocessors or any conventional processor. It is worth noting that the processor can be a processor supporting Advanced Reduced Instruction Set Machines (ARM) architecture.
[0140] Further, optionally, the aforementioned memory may include read-only memory and random access memory. The memory may be volatile memory or non-volatile memory, or may include both. Non-volatile memory may include read-only memory (ROM), programmable read-only memory (PROM), erasable programmable read-only memory (EPROM), electrically erasable programmable read-only memory (EEPROM), or flash memory. Volatile memory may include random access memory (RAM), which serves as an external cache. By way of example, but not limitation, many forms of RAM are available. Examples include Static Random Access Memory (SRAM), Dynamic Random Access Memory (DRAM), Synchronous DRAM (SDRAM), Double Data Rate SDRAM (DDR SDRAM), Enhanced Synchronous DRAM (ESDRAM), Synchronous Link DRAM (SLDRAM), and Direct Rambus RAM (DR RAM).
[0141] In the above embodiments, implementation can be achieved, in whole or in part, through software, hardware, firmware, or any combination thereof. When implemented in software, it can be implemented, in whole or in part, as a computer program product. A computer program product includes one or more computer instructions. When the computer program instructions are loaded and executed on a computer, all or part of the processes or functions according to this application are generated. The computer can be a general-purpose computer, a special-purpose computer, a computer network, or other programmable device. The computer instructions can be stored in a computer-readable storage medium or transferred from one computer-readable storage medium to another.
[0142] In the description of this specification, the references to terms such as "one embodiment," "some embodiments," "example," "specific example," or "some examples," etc., indicate that a specific feature, structure, material, or characteristic described in connection with that embodiment or example is included in at least one embodiment or example of this application. Furthermore, the specific features, structures, materials, or characteristics described may be combined in any suitable manner in one or more embodiments or examples. Moreover, without contradiction, those skilled in the art can combine and integrate the different embodiments or examples described in this specification, as well as the features of those different embodiments or examples.
[0143] Furthermore, the terms "first" and "second" are used for descriptive purposes only and should not be construed as indicating or implying relative importance or implicitly specifying the number of technical features indicated. Thus, a feature defined as "first" or "second" may explicitly or implicitly include at least one of that feature. In the description of this application, "a plurality of" means two or more, unless otherwise explicitly specified.
[0144] Any process or method described in the flowchart or otherwise herein can be understood as representing a module, segment, or portion of code comprising one or more executable instructions for implementing a particular logical function or process. Furthermore, the scope of the preferred embodiments of this application includes additional implementations in which functions may be performed not in the order shown or discussed, including substantially simultaneously or in reverse order depending on the functionality involved.
[0145] The logic and / or steps described in the flowchart or otherwise herein, for example, can be considered as a sequenced list of executable instructions for implementing logical functions, and can be embodied in any computer-readable medium for use by, or in conjunction with, an instruction execution system, apparatus or device (such as a computer-based system, a processor-included system or other system that can fetch and execute instructions from, an instruction execution system, apparatus or device).
[0146] It should be understood that various parts of this application can be implemented using hardware, software, firmware, or a combination thereof. In the above embodiments, multiple steps or methods can be implemented using software or firmware stored in memory and executed by a suitable instruction execution system. All or part of the steps of the methods in the above embodiments can be implemented by a program instructing related hardware, the program being stored in a computer-readable storage medium, which, when executed, includes one or a combination of the steps of the method embodiments.
[0147] Furthermore, the functional units in the various embodiments of this application can be integrated into a processing module, or each unit can exist physically separately, or two or more units can be integrated into a module. The integrated module can be implemented in hardware or as a software functional module. If the integrated module is implemented as a software functional module and sold or used as an independent product, it can also be stored in a computer-readable storage medium. This storage medium can be a read-only memory, a disk, or an optical disk, etc.
[0148] The above description is merely an exemplary embodiment of this application, but the scope of protection of this application is not limited thereto. Any person skilled in the art can easily conceive of various variations or substitutions within the technical scope described in this application, and these should all be included within the scope of protection of this application. Therefore, the scope of protection of this application should be determined by the scope of the claims.
Claims
1. A data processing method, the method comprising: When at least one queue group stores data access requests, the data access requests in the at least one queue group are processed according to the preset priority of the at least one queue group; For any queue group, if the queue group meets the corresponding interruption condition, an interruption request is sent to the host. The interruption request is used to instruct the host to read at least one processing result corresponding to the queue group. The at least one processing result is the processing result of the data access request in the queue group.
2. The method according to claim 1, wherein any queue group includes a completion queue, and for any data access request stored in the queue group, after processing the data access request, the method further includes: The processing result of the data access request is saved to the completion queue of the queue group; Based on the total number of processing results currently to be read in the completion queue and the timeout duration corresponding to the queue group, determine whether the queue group meets the corresponding interruption condition.
3. The method according to claim 2, wherein determining whether the queue group meets the corresponding interruption condition based on the total number of processing results currently to be read in the completion queue and the timeout duration corresponding to the queue group includes: In the correspondence between group identifiers and interrupt condition parameters, obtain the target interrupt condition parameter corresponding to the group identifier of the queue group; Determine whether the total quantity has reached the quantity threshold in the target interruption condition parameter; Determine whether the timing duration has reached the duration threshold in the target interruption condition parameter; If at least one determination result is yes, the queue group is determined to meet the corresponding interruption condition.
4. The method according to any one of claims 1-3, further comprising: Upon receiving a data access request from the host, a target queue for storing the data access request is determined from the at least one queue group based on storage rules. The data access request is stored in the target queue.
5. The method according to claim 4, wherein determining the target queue for storing the data access request in the at least one queue group based on storage rules comprises: Obtain the target priority from the data access request, select the queue group with the priority of the target priority in the at least one queue group as the target queue group, and determine the target queue in the target queue group that meets the storage conditions; Alternatively, obtain the group identifier from the data access request, take the queue group corresponding to the group identifier as the target queue group, and determine the target queue in the target queue group that meets the storage conditions.
6. The method according to claim 5, wherein any queue group includes multiple submission queues, and determining the target queue in the target queue group that meets the storage conditions includes: Determine the number of data access requests stored in each submission queue in the target queue group, and determine the submission queue corresponding to the minimum number as the target queue; Alternatively, the target queue can be determined by sorting the submission queues in the target queue group according to their preset numbers, and then identifying the submission queue corresponding to the next number after the target number. The target number is the number of the submission queue that previously saved the data access request.
7. The method according to any one of claims 1-3, further comprising: Upon receiving an update instruction from the host, the group identifier and a new interruption condition parameter are obtained from the update instruction. The new interruption condition parameter is generated by the host when it determines that the interruption condition parameter meets the update condition. Update the interrupt condition parameters stored corresponding to the group identifier to the new interrupt condition parameters.
8. A data processing method, the method comprising: Receive an interrupt request sent by a storage device, wherein the interrupt request is sent when any queue group in at least one queue group meets the corresponding interrupt condition; The interrupt request reads at least one processing result corresponding to the queue group, and the at least one processing result is obtained by processing the data access request in the queue group according to the preset priority of the at least one queue group.
9. The method according to claim 8, wherein before receiving the interrupt request sent by the storage device, the method further comprises: In response to a startup command, multiple queue groups are created, priorities and interrupt conditions are assigned to the multiple queue groups respectively, and a first notification message is sent to the storage device. The first notification message is used to notify the storage device to save the priorities and interrupt conditions of the multiple queue groups. Alternatively, for any priority, if a data access request corresponding to the priority is obtained and it is determined that there is no queue group corresponding to the priority, a queue group corresponding to the priority is created, an interrupt condition is assigned to the created queue group, and a second notification message is sent to the storage device. The second notification message is used to notify the storage device to save the priority and interrupt condition of the queue group.
10. The method according to claim 8, further comprising: Upon receiving an input / output request, the input / output request is encapsulated into a data access request in a preset format, which includes a priority or group identifier. The data access request is sent to the storage device.
11. The method according to any one of claims 8-10, wherein any queue group comprises a plurality of submission queues, and the method further comprises: The performance index data of the queue group are detected according to the detection cycle; If the performance index data indicates that the interruption condition parameters of the queue group meet the update conditions, new interruption condition parameters for the queue group are generated. An update instruction is sent to the storage device, the update instruction including the new interrupt condition parameter and the group identifier of the queue group, so that the storage device updates the interrupt condition parameter of the queue group to the new interrupt condition parameter.
12. A data processing system, comprising: Storage devices and hosts; The storage device is configured to process data access requests in at least one queue group according to a preset priority of the at least one queue group when the queue group stores data access requests; and to send an interrupt request to the host when the queue group meets the corresponding interrupt condition for any queue group, the interrupt request being used to instruct the host to read at least one processing result corresponding to the queue group, the at least one processing result being the processing result of the data access request in the queue group. The host is configured to read at least one processing result from the queue group according to the interrupt request.
13. The system according to claim 12, wherein, The host is also configured to create multiple queue groups in response to a startup command, assign priorities and interrupt conditions to the multiple queue groups respectively, and send a first notification message to the storage device; The storage device is further configured to save the priority and interrupt conditions of the plurality of queue groups according to the first notification message; or, The host is further configured to, for any priority, when a data access request corresponding to the priority is obtained and it is determined that there is no queue group corresponding to the priority, create a queue group corresponding to the priority, allocate an interrupt condition to the created queue group, and send a second notification message to the storage device; The storage device is further configured to save the priority and interruption conditions of the queue group according to the second notification message.
14. The system according to claim 12 or 13, wherein, The host is further configured to, upon receiving an input / output request, encapsulate the input / output request into a data access request of a preset format, and send the data access request to the storage device, wherein the data access request of the preset format includes a priority or group identifier; The storage device is further configured to, upon receiving a data access request sent by the host, determine, based on storage rules, a target queue in the at least one queue group for storing the data access request, and save the data access request to the target queue.
15. The system according to claim 12 or 13, wherein any queue group comprises multiple submission queues; The host is also configured to detect the performance index data of the queue group according to the detection cycle, and when the performance index data indicates that the interrupt condition parameters of the queue group meet the update conditions, generate new interrupt condition parameters for the queue group and send an update instruction to the storage device. The update instruction includes the new interrupt condition parameters and the group identifier of the queue group. The storage device is further configured to, upon receiving the update instruction, obtain the group identifier and the new interrupt condition parameter from the update instruction, and replace the interrupt condition parameter stored corresponding to the group identifier with the new interrupt condition parameter.
16. An electronic device comprising a memory, a processor, and a computer program stored in the memory, wherein the processor, when executing the computer program, implements the method of any one of claims 1 to 11.
17. A computer-readable storage medium storing a computer program that, when executed by a processor, implements the method of any one of claims 1 to 11.
18. A computer program product comprising a computer program that, when executed by a processor, implements the method according to any one of claims 1 to 11.