Methods, apparatus, devices, media, products, and chips for asynchronous notification
By using asynchronous notification methods and leveraging mapping relationships and identification information to trigger task completion notifications, the problems of thread resource waste and out-of-order completion in traditional synchronous object mechanisms are solved, thereby improving processor efficiency and stability.
Patent Information
- Application Number
- CN202611283976.3
- Authority / Receiving Office
- CN · China
- Patent Type
- Applications(China)
- Current Assignee / Owner
- Filing Date
- 2026-08-21
- Publication Date
- 2026-11-03
AI Technical Summary
In traditional synchronization object mechanisms, blocking and waiting for synchronization objects leads to wasted thread resources and an inability to handle out-of-order completion, which is especially noticeable when concurrency levels increase.
An asynchronous notification method is adopted, which obtains the mapping relationship of synchronous objects and triggers a notification of task completion based on the identification information, thereby reducing the occupation of waiting threads and shortening the notification processing latency.
It enables triggering completion notifications based on the actual completion order of tasks, reducing waiting thread usage and processor scheduling overhead, and improving processing efficiency and stability.
Smart Images

Figure CN123030388A_ABST
Abstract
Description
Technical Field
[0001] Examples of this disclosure relate to the field of computers, and specifically to methods, apparatus, electronic devices, computer-readable storage media, program products, and chips for asynchronous notification. Background Technology
[0002] Synchronization object mechanisms are crucial for achieving synchronization between the processor and the graphics processor (GPU), and between the GPU and the display controller. Traditionally, a blocking and waiting approach is used, which leads to wasted thread resources and an inability to handle out-of-order completion. The increased concurrency of screen processing tasks presents new challenges that need to be addressed. Summary of the Invention
[0003] In a first aspect of this document, an asynchronous notification method is provided. The method includes: obtaining a mapping relationship, the mapping relationship indicating at least identification information of at least one synchronization object, the at least one synchronization object corresponding to at least one task to be completed; in response to determining that a first task corresponding to a first synchronization object among the at least one synchronization object has been completed, obtaining first identification information based on the mapping relationship; and triggering a first notification based on the first identification information, the first notification indicating the execution status of the first task corresponding to the first synchronization object.
[0004] In a second aspect of this document, an apparatus for asynchronous notification is provided. The apparatus includes a mapping acquisition module, an identifier acquisition module, and a notification triggering module. The mapping acquisition module is configured to acquire a mapping relationship that indicates identifier information for at least one synchronization object, the at least one synchronization object corresponding to at least one task to be completed. The identifier acquisition module is configured to acquire first identifier information based on the mapping relationship in response to determining that a first task corresponding to a first synchronization object among the at least one synchronization object has been completed. The notification triggering module is configured to trigger a first notification based on the first identifier information, the first notification indicating the execution status of the first task corresponding to the first synchronization object.
[0005] In a third aspect of this document, an electronic device is provided. The electronic device includes at least one processor and at least one memory. The at least one memory is coupled to the at least one processor and stores instructions executable by the at least one processor. When executed, the instructions cause the electronic device to perform the method of the first aspect.
[0006] In a fourth aspect of this document, a computer-readable storage medium is provided. This computer-readable storage medium stores a computer program that can be executed by a processor to implement the method of the first aspect.
[0007] In a fifth aspect of this document, a computer program product is provided. This computer program product is tangibly stored in a computer storage medium and includes computer-executable instructions. When executed by a device, the computer-executable instructions cause the device to perform the method of the first aspect.
[0008] In a sixth aspect of this document, a chip is provided. The chip includes one or more interface circuits and one or more processor circuits. The one or more interface circuits are configured to receive data and / or transmit data. The one or more processor circuits are configured to execute a computer program stored in memory, which, when executed by the processor circuits, causes the chip to perform the methods of the first aspect.
[0009] In this way, the mapping relationship allows completion signals to correspond to pre-registered screen processing tasks. Completion notifications can be triggered according to the actual completion order of tasks, thereby reducing the occupation of waiting threads and shortening notification processing latency.
[0010] It should be understood that the content described in this content section is not intended to limit the key or essential features of the examples in this disclosure, nor is it intended to restrict the scope of the solution. Other features will become readily apparent from the following description. Attached Figure Description
[0011] The above and other features, advantages, and aspects of the various examples in this disclosure will become more apparent from the accompanying drawings and the following detailed description. In the drawings, the same or similar reference numerals denote the same or similar elements, wherein: Figure 1 A schematic diagram of the example environment is shown; Figure 2 A flowchart of an example process for asynchronous notification according to some embodiments is shown; Figure 3 An example process for generating mapping relationships according to some embodiments is shown; Figure 4 A schematic structural block diagram of an example device for asynchronous notification according to some embodiments is shown; and Figure 5 A block diagram of an electronic device capable of implementing embodiments of the present disclosure is shown. Detailed Implementation
[0012] Examples of this disclosure will now be described in more detail with reference to the accompanying drawings. While some examples of this disclosure are shown in the drawings, it should be understood that solutions can be implemented in various forms and should not be construed as limited to the examples set forth herein. Rather, these examples are provided to provide a more thorough and complete understanding of the solutions. It should be understood that the drawings and examples in this disclosure are for illustrative purposes only and are not intended to limit the scope of protection of the solutions.
[0013] It should be noted that the headings of any section / subsection provided in this disclosure are not restrictive. Various examples are described throughout this document, and examples of any type may be included under any section / subsection. Furthermore, examples described in any section / subsection may be combined in any way with any other examples described in the same section / subsection and / or different sections / subsections.
[0014] In the description of examples in this disclosure, the term "comprising" and similar terms should be understood as open inclusion, i.e., "including but not limited to". The term "based on" should be understood as "at least partially based on". The term "an example" or "the example" should be understood as "at least one example". The term "some examples" should be understood as "at least some examples". The terms "first", "second", etc., may refer to different or the same objects. Other explicit and implicit definitions may also be included below. It should be noted that, unless explicitly stated otherwise, performing a step in response to A does not mean that the step is performed immediately after "A", but may include one or more intermediate steps.
[0015] The examples in this document may involve user data, data acquisition, and / or use. All of these aspects comply with relevant laws, regulations, and rules. In the examples, all data collection, acquisition, processing, manipulation, forwarding, and use are conducted with the user's knowledge and confirmation. Accordingly, when implementing each example, the type, scope of use, and usage scenarios of any data or information that may be involved should be communicated to the user and their authorization obtained through appropriate means, in accordance with relevant laws and regulations. The specific methods of notification and / or authorization can vary depending on the actual situation and application scenario; the scope of the solution is not limited in this regard.
[0016] In this manual and the sample solutions, any processing of personal information will be conducted only under legal grounds (such as obtaining the consent of the data subject or being necessary for the performance of a contract) and will only be carried out within the scope stipulated or agreed upon. A user's refusal to process personal information beyond what is necessary for basic functions will not affect the user's use of basic functions.
[0017] As mentioned above, as the complexity of the graphics processing pipeline increases, the number and completion order of synchronized objects may change. Blocking waits prevent related threads from continuing to execute subsequent tasks until a completion signal arrives. Asynchronous notifications allow threads to perform other tasks while waiting and process the corresponding events upon receiving a completion notification.
[0018] The relevant synchronization mechanisms can employ blocking waits, timeline synchronization variables based on monotonically increasing counters, or dedicated synchronization management within the driver. Blocking waits may occupy a waiting thread for each synchronization object. When processing sequentially in a first-in-first-out order, tasks submitted later but completed earlier still need to wait for their predecessors. The upper layer may also maintain the association between file descriptors and screen tasks.
[0019] Timeline synchronization variables can use incrementing counters to represent completion progress. This mechanism may still require user space to actively query the status and lacks a path for pushing completion events from kernel space to the interface layer.
[0020] The driver's internal dedicated synchronization management can handle the coordination of underlying objects. Interfaces between different implementations may differ, and notification scope may be limited to a single processing component. Furthermore, distributing signals from different sources can create duplicate notification paths.
[0021] An asynchronous notification scheme is proposed. According to this scheme, the electronic device obtains a mapping relationship indicating at least one synchronization object, with each synchronization object corresponding to a task to be completed. Upon completion of the first screen processing task corresponding to the first synchronization object, the electronic device obtains the first identification information. The electronic device then triggers a first notification indicating the completion of the first screen processing task based on the first identification information.
[0022] Through the above scheme, the completion signal provider can proactively generate completion events, notifying the consumer to process the corresponding screen task upon receiving the event. Mapping matching ensures that completion events correspond to pre-registered screen tasks and allows different tasks to be processed according to their actual completion order. The number of waiting threads and processor wake-ups can be reduced, and the processing latency of completion notifications can also be shortened.
[0023] The following describes various examples of this scheme in further detail with reference to the accompanying drawings.
[0024] Figure 1 A schematic diagram of example environment 100 is shown. (e.g.) Figure 1 As shown, environment 100 may include terminal device 110. In example environment 100, terminal device 110 may run application 120. User 140 may interact with application 120 through terminal device 110 and / or its attached devices. If application 120 is active, terminal device 110 may present interface 150 through application 120.
[0025] Terminal device 110 can be any type of mobile terminal, fixed terminal, or portable terminal, including mobile phones, desktop computers, laptop computers, notebook computers, netbook computers, tablet computers, media computers, multimedia tablets, handheld computers, portable gaming terminals, virtual reality (VR) / augmented reality (AR) devices, personal communication system (PCS) devices, personal navigation devices, personal digital assistants (PDAs), audio / video players, digital cameras / camcorders, positioning devices, television receivers, radio receivers, e-book devices, gaming devices, or any combination thereof, including accessories and peripherals of these devices or any combination thereof. In some cases, terminal device 110 may also support any type of user-facing interface.
[0026] Server 130 can be a single physical server, a server cluster or distributed system composed of multiple physical servers, or a cloud server providing basic cloud computing services such as cloud services, cloud databases, cloud computing, cloud functions, cloud storage, network services, cloud communication, middleware services, domain name services, security services, content delivery networks, and big data and machine learning platforms. Server 130 may include, for example, a computing system or an edge computing node. Server 130 can provide backend services for application 120 in terminal device 110.
[0027] The server 130 and the terminal device 110 can establish a communication connection via wired or wireless means. The communication connection may include Bluetooth, mobile network, Universal Serial Bus (USB), or Wireless Fidelity (WiFi) connections. The communication method is not limited in this respect.
[0028] It should be understood that the structure and function of the various elements in environment 100 are described for illustrative purposes only and do not imply any limitation on the scope of the scheme.
[0029] The following description of the example will continue with reference to the accompanying drawings.
[0030] Figure 2 A flowchart of an example procedure 200 for asynchronous notification is shown, based on several scenarios. Procedure 200 can be implemented at terminal device 110. See below for reference. Figure 2 To describe process 200. Figure 2Boxes 210, 220, 230, and 240 in the diagram represent mapping acquisition, registration confirmation, identifier acquisition, and notification triggering, respectively.
[0031] In box 210, terminal device 110 obtains the mapping relationship. This mapping relationship indicates at least the identification information of at least one synchronization object, which corresponds to at least one task to be completed. As an example only, the task may include any suitable task such as screen processing task, read / write storage task, or communication synchronization task. In this document, only the screen processing task is used as an example for illustrative description.
[0032] The identification information of a synchronization object may include, for example, the object's name, number, or any other suitable information. In some examples, the mapping relationship may also indicate registration information corresponding to at least one synchronization object. It should be noted that the identification information, registration information, and synchronization object should correspond one-to-one. For example, the mapping relationship may associate and store the identification information and registration information of the same synchronization object. Terminal device 110 can determine the identification information and registration information corresponding to a synchronization object based on the mapping relationship. As an example only, terminal device 110 may also look up the registration information corresponding to the same object from the mapping relationship based on the identification information.
[0033] Registration information includes object characteristic information for the corresponding synchronization object. Object characteristic information refers to the combined characteristics used to identify synchronization objects across layers. Object characteristic information can be generated based at least on storage address, sequence number, and process identifier. Storage address refers to the address information of the synchronization object structure in the storage space. The storage address can be reused by other objects after the object is released. Sequence number refers to the number maintained by the underlying processing component and used to distinguish different synchronization object instances. New and old synchronization objects corresponding to the same storage address can have different sequence numbers. Process identifier refers to information that can distinguish the process handling the synchronization object. The process identifier can participate in the generation of object characteristic information.
[0034] In some examples, the kernel state of terminal device 110 can pre-create and maintain this mapping relationship based on multiple synchronization objects. This will be discussed later. Figure 3 The process of determining the mapping relationship will not be elaborated here. For example, terminal device 110 can store the mapping relationship in kernel memory within kernel mode. Kernel mode refers to the execution domain of the core functions of the operating system of terminal device 110. A synchronization object (which can be represented as a fence) is a synchronization primitive used to represent a task to be completed and to support waiting or notification. In a graphics processing scenario, a synchronization object can represent the completion status of a task.
[0035] This establishes a queryable correspondence between identification information and object characteristic information. Notification processing can then associate completion signals with tasks without remaining blocked in waiting threads. Replacing per-thread waiting with mapping lookups reduces processor scheduling overhead and waiting thread occupancy.
[0036] In block 220, in response to determining that a first task corresponding to a first synchronization object among at least one synchronization object has been completed, terminal device 110 obtains first identification information based on a mapping relationship. The first identification information corresponds to the first synchronization object.
[0037] When the underlying processing component completes its task, it can trigger a completion callback. The completion callback can carry information such as the process identifier, thread identifier, storage address of the synchronization object, and sequence number. Terminal device 110 (specifically, its kernel state) can first determine if the callback meets the processing conditions. If the screen is off, the callback is ignored. If the process is not within the preset processing range, the callback is ignored. If the sequence number is zero, the callback is ignored. If none of the above filtering conditions are met, terminal device 110 continues to perform object feature calculation and matching.
[0038] In some examples, terminal device 110 can directly look up the first identification information corresponding to the first synchronization object from the mapping relationship. In some examples, terminal device 110 first determines the first registration information corresponding to the first synchronization object, and then further determines whether the mapping relationship includes the first registration information. Terminal device 110 can obtain the corresponding first identification information based on the mapping relationship if the mapping relationship includes the first registration information.
[0039] In some scenarios, terminal device 110 (specifically, its kernel mode) can obtain the first process identifier, first memory address, and first sequence number of the first synchronization object. The first process identifier indicates the first process used to process the first synchronization object. Terminal device 110 can generate first address feature information based on the first process identifier and the first memory address. As an example, terminal device 110 can shift the first process identifier (e.g., left shift by 48 bits) to obtain the process feature information corresponding to the first synchronization object. Terminal device 110 can then determine the address feature information corresponding to the first synchronization object based on the process feature information and the first memory address. Terminal device 110 can then generate first object feature information based on the first address feature information and the first sequence number. The first object feature information serves as at least a part of the first registration information.
[0040] By generating first registration information based on the first process identifier, first storage address, and first sequence number, the callback can be matched with the first synchronization object in the corresponding process. The combined comparison of object features reduces the number of matching fields passed across layers and lowers the comparison overhead of mapping queries.
[0041] Regarding the specific method for obtaining the first identification information corresponding to the first registration information based on the mapping relationship, in some examples, the terminal device 110 (specifically, the kernel state of the terminal device 110) can traverse the mapping relationship and compare each piece of registration information in the mapping relationship with the first registration information (the terminal device 110 can specifically compare address feature information, sequence number, etc.). If a piece of registration information in the mapping relationship matches the first registration information (i.e., multiple pieces of information match), the terminal device 110 can determine that the registration information is the first registration information, and then retrieve the first identification information based on the mapping relationship.
[0042] In some cases, if a registration information in the mapping relationship has the same address characteristics as the first registration information but a different sequence number, the terminal device 110 can update the sequence number of the registration information and temporarily not trigger a notification. Specifically, if the mapping relationship includes fourth registration information, which includes second address characteristics and a second sequence number, and the second address characteristics are the same as the first address characteristics but the second sequence number is different from the first sequence number, the terminal device 110 can update the fourth registration information using the first sequence number. When updating the fourth registration information, the terminal device 110 can update the second sequence number. By updating the fourth registration information when the address characteristics are the same but the sequence numbers are different, new and old synchronization objects on the same storage address can be identified. This update avoids receiving incorrect completion results due to address reuse. Using existing entries to complete the update also reduces the number of times new mapping entries are created and reduces the storage write volume of the mapping table. By directly updating the second sequence number, the fourth registration information can continue to represent the current synchronization object instance. The terminal device 110 can then receive the correct completion notification along the original identifier association. Local field updates reduce the reconstruction operation of the entire registration information and reduce the kernel-mode write overhead.
[0043] In some examples, the mapping relationship may also include the status information of each registration information. If the address feature information of a certain registration information in the mapping relationship is the same as that of the first registration information and the status information is both completed, the terminal device 110 may update the sequence number and temporarily not trigger a notification.
[0044] It is important to note that in some examples, if the mapping relationship does not include registration information with the same information as the first registration information, the terminal device 110 can add new registration information containing address feature information and sequence number to the mapping relationship, set its status to complete, and temporarily not trigger a notification. Specifically, in response to the mapping relationship not including the first registration information, the terminal device 110 can add registration information to be matched in the mapping relationship. The registration information to be matched includes the object feature information of the first synchronization object. The status information in the registration information to be matched indicates the execution status of the first task. This entry provides a basis for subsequent matching for the order of pre-registration after the completion signal. By adding the registration information to be matched when the completion signal arrives before the pre-registration, the status of the completed task can be saved. Subsequent pre-registrations can use this status to identify the first task without waiting for underlying processing again. The number of repeated waits and invalid callback processing can be reduced, and the notification stability under out-of-order completion conditions can also be improved.
[0045] Therefore, only completion events that have been pre-registered (i.e. stored in the mapping relationship) and whose sequence numbers match will enter the notification process.
[0046] In box 230, terminal device 110 triggers a first notification based on the first identification information. The first notification indicates the execution status of the first task corresponding to the first synchronization object. This execution status may, for example, indicate that the first task has been completed.
[0047] In some examples, terminal device 110 (specifically, the kernel mode of terminal device 110) can generate a first notification and write it to a buffer for storing notifications to be proxied. The notification may include first identification information, process identifier, thread identifier, time information, and event type.
[0048] In some scenarios, the kernel mode of terminal device 110 updates the event state after writing a notification to the buffer and wakes up the user mode waiting for events. User mode refers to the execution domain of user-level programs. User mode can exchange object description information, identification information, and notifications with the kernel mode via system calls. User mode can obtain the notification readability status through an event wait call. If there is a pending event, the event wait call immediately returns the event type. If there is no pending event, user mode continues to wait until the kernel mode wakes it up. After recognizing a synchronization object event, user mode can read the notification queue via an I / O control call. Terminal device 110 can read at least one notification stored in the buffer in batches and provide these notifications to user mode all at once. At least one notification includes at least a first notification. In response to these notifications being read, kernel mode can remove these notifications from the buffer and clear the corresponding event state. User mode can associate the screen task recorded during pre-registration with the first identification information and execute the processing logic after the task is completed.
[0049] As an example, in response to triggering the first notification, kernel mode can remove the first registration information and the first identifier information from the mapping. Alternatively, kernel mode can mark the corresponding slot as free after a complete match and retrieval of the first identifier information. Both release timings allow the mapping resources occupied by completed objects to be used by subsequent objects. By releasing the first registration information and the first identifier information after notification processing, the slots of completed objects can be used by newly added synchronization objects. The mapping therefore does not need to retain consumed objects for a long time. The total number of entries and the subsequent traversal range can be reduced, and the storage usage of the mapping table is also suppressed. By generating the first notification and writing it to the buffer, the completion signal provider does not have to wait for the user mode to read it immediately. The user mode can choose an appropriate time to consume the notification after obtaining the event status. After decoupling the production path from the consumption path, the waiting thread occupation and the blocking time of the notification path can be reduced. By reading notifications in batches from the buffer, the user mode can handle the out-of-order completion of multiple synchronization objects in a single queue read. Batch reading reduces the number of interaction rounds between user mode and kernel mode. The number of system calls and context switching overhead can be reduced, and buffer cleanup also suppresses the continuous accumulation of notification data.
[0050] Thus, terminal device 110 can receive completion notifications according to the actual completion order of tasks. Mapping matching associates the first notification with the pre-registered first synchronization object and avoids serial waiting dependent on the submission order. The number of waiting threads, processor scheduling overhead, and completion notification latency can be reduced.
[0051] The following is combined Figure 3 This describes the process of generating the mapping relationship. (Reference) Figure 3 , Figure 3 An example process 300 for generating mapping relationships based on certain scenarios is illustrated. Process 300 includes interaction between user mode 301 and kernel mode 302 of terminal device 110. User mode 301 provides object description information of the synchronization object to kernel mode 302. Kernel mode 302 sequentially determines the synchronization object, memory address, sequence number, process identifier, object characteristic information, identification information, and registration information.
[0052] In some scenarios, asynchronous notification processing can be implemented at the terminal device 110. The user space 301 of the terminal device 110 passes the file descriptor of the synchronization object to the kernel space 302. The underlying processing component provides a completion signal to the kernel space 302 when the task is completed. The kernel space 302 then provides a completion notification to the user space 301 via an event path.
[0053] User mode 301, the interface layer, and kernel mode 302 may reference the same synchronization object in different ways. File descriptors may be closed or reallocated, and storage addresses and sequence numbers may be reused. Kernel mode 302 can therefore combine storage address, sequence number, and process identifier into object characteristic information. This combination is used to match the same synchronization object across layers.
[0054] Asynchronous notification processing can include a pre-registration phase, a signal matching phase, and an event consumption phase. The pre-registration phase establishes an association between the synchronous object and its internal identifier. The signal matching phase looks up the corresponding internal identifier based on the completion callback. The event consumption phase provides completion notifications in batches to user space (301 redirects).
[0055] Kernel mode 302 can maintain a mapping table and a notification queue. The mapping table, for example, has 128 slots and is used to record information about pre-registered synchronization objects. The notification queue, for example, is a circular buffer with 20 slots, used to temporarily store completion events waiting to be consumed by user mode 301. Kernel mode 302 can also maintain event states and a wait queue to facilitate the transmission of readable notification states via the event wait interface.
[0056] Specifically, such as Figure 3 As shown, user mode 301 sends (311) object description information of a synchronization object (e.g., a second synchronization object) to kernel mode 302. The object description information includes, for example, the file descriptor (FD, e.g., fence FD) of the synchronization object. The file descriptor is a description value used by user mode to reference objects in kernel mode. The file descriptor can be used to locate the structure of the synchronization object when it is valid. Thus, after the upper layer of the terminal device begins drawing the screen and obtains the file descriptor from the graphics framework or compositing component, the Hardware Abstraction Layer (HAL) can immediately perform pre-registration via input / output control calls. The Hardware Abstraction Layer is the interface layer located between the upper-layer framework and the kernel and hardware. This interface layer shields the differences between the underlying components and the kernel interface through a unified interface.
[0057] Kernel mode 302 determines (312) the synchronization object based on the object description information. The synchronization object can be described by a data structure in kernel mode. This data structure can record the actual file node, storage address, sequence number, current status, and completion information. Kernel mode 302 obtains (313) the storage address and sequence number of the synchronization object based on the object description information. The storage address represents the storage location where the synchronization object structure is located. The sequence number can be an incrementing number maintained by the underlying processing component. Kernel mode 302 determines (314) the process identifier used to process the synchronization object. The process identifier can be provided by user mode 301 or the upper-level framework. This process identifier is used to distinguish synchronization objects in different processes. Kernel mode 302 generates (315) the object feature information of the synchronization object based on the storage address, sequence number, and process identifier. In some examples, kernel mode 302 can perform a bit shift operation on the process identifier to obtain process feature information. Kernel mode 302 then determines the address feature information based on the process feature information and the storage address, and generates the object feature information based on the address feature information and the sequence number. As an example, kernel mode 302 shifts the process identifier left by 48 bits and performs an XOR operation on the resulting process characteristic information and the memory address. The result of the XOR operation serves as the address characteristic information. Therefore, even if different processes obtain the same memory address, the process characteristic information still allows for differentiation of the corresponding address characteristic information.
[0058] By obtaining the storage address and sequence number from the object description information and combining them with the process identifier to generate object feature information, user mode 301 and kernel mode 302 can reference the same synchronization object. This combination avoids relying solely on file descriptors that may be closed or reused. The candidate range required for cross-layer matching can be narrowed, and the number of erroneous comparisons can be reduced. By shifting the process identifier and combining it with the storage address to form address feature information, different processes using the same storage address can still be distinguished. The sequence number further distinguishes different object instances at the same address. Fixed-length features reduce the amount of comparison data during mapping queries and reduce duplicate lookups caused by cross-process address conflicts. By performing an XOR operation on the process feature information and the storage address, address feature information can be formed in a single combination operation. The resulting features retain process differences and can be directly used for mapping queries. The computational steps and temporary storage required for feature generation can be kept at a low level.
[0059] Kernel mode 302 can assign (316) identification information to the synchronization object. This identification information can be an incrementing number maintained by kernel mode 302. The identification information is used to enable user mode 301 to associate the completion notification with the pre-registered screen task. Kernel mode 302 generates (317) registration information based on the object feature information and identification information of the synchronization object. This registration information may also include pre-registration status, current time, event type, etc. Kernel mode 302 returns (318) the identification information of the synchronization object to user mode 301. User mode 301 can record the association between this identification information and a frame or other task. When the file descriptor is subsequently closed or reused, this association can still be referenced through this identification information. Kernel mode 302 stores (319) the identification information and registration information of the synchronization object in a mapping relationship. Kernel mode 302 can select an empty slot in the mapping table and write address feature information, sequence number, current time, and second identification information into the slot. Kernel mode 302 can also set the status of the slot to pre-registered. By generating registration information and associating and storing the identification information with the registration information, user mode 301 can retain the screen task association, while kernel mode 302 can execute completion signal matching. Identifier return and mapping storage eliminate the need for the two execution domains to share the same file descriptor lifecycle. Cross-layer repeated queries and user-mode mapping maintenance can be reduced, and notification matching latency can also be shortened.
[0060] In some cases, the total number of synchronization objects in the mapping relationship does not exceed a threshold. In response to obtaining the object description information of a newly added synchronization object and the total number reaching the threshold, kernel mode 302 determines a third synchronization object from the synchronization objects in the mapping relationship that meets one or more conditions. Kernel mode 302 removes the third identification information and third registration information of the third synchronization object and associates and stores the identification information and registration information of the newly added synchronization object.
[0061] One or more conditions may include at least one of the following: the storage time of the third synchronization object is earlier than that of other objects; the storage duration of the identification and registration information of the third synchronization object reaches a threshold duration; or the access frequency of the third synchronization object is lower than that of other objects. The identification and registration information associated with each other in the mapping relationship can be considered as a single entry. Therefore, the terminal device 110 can prioritize cleaning up entries that have not been used for a preset time, and can select entries to be removed based on time order and access frequency. By removing the third synchronization object and registering new synchronization objects when the total number of synchronization objects reaches a threshold, the mapping table can continuously accept new pre-registration requests. New requests do not need to wait indefinitely due to insufficient slots. Fixed capacity suppresses storage occupation of the mapping relationship, and entry reclamation also reduces traversal overhead during long-term operation. By selecting the third synchronization object based on storage time, storage duration, or access frequency, the mapping table can prioritize retaining more active or newer registration information. Different operating loads can select appropriate replacement conditions. After inactive entries are removed first, the effective mapping hit rate can be improved, and the number of invalid comparisons can be reduced.
[0062] The synchronization object mentioned above can be a Graphics Processing Unit (GPU) synchronization object. A GPU is a processing component used to perform graphics computation or rendering. A GPU synchronization object can represent the completion status of a graphics rendering task. In some examples, Hardware Composer (HWC) synchronization objects can reuse the same pre-registration, signal matching, and event consumption mechanisms. A Hardware Composer is a hardware or hardware co-processor used to perform image compositing. A Hardware Composer synchronization object can represent the completion status of an image compositing task. The difference between the two synchronization objects lies in the source of the completion signal. The former corresponds to a GPU completion callback, while the latter corresponds to a Hardware Composer completion callback. The notification queue can distinguish the signal source through the event type field, and user-space 301 performs corresponding processing accordingly.
[0063] By sharing pre-registered interfaces, mappings, and buffers, different signal sources can reach user space 301 along a unified channel. The event type field allows user space 301 to distinguish completion sources without establishing redundant waiting paths. This reduces the number of interfaces and dispatch code, and also lowers the maintenance overhead of the notification channel.
[0064] In high frame rate rendering scenarios, each frame can correspond to multiple rendering, compositing, or display synchronization objects. Asynchronous notifications can shorten waiting paths and improve the stability of inter-frame processing. In system interface animation scenarios, reducing blocking waits can lower the probability of screen pauses. In multi-task concurrent rendering scenarios, unified management of completion events can reduce resource contention. Event-driven mechanisms can also reduce processor wake-up frequency and power consumption. Overall, the event-driven mechanism decouples the completion signal provider from the notification consumer. A circular buffer allows a single consumer thread to batch process multiple out-of-order completion events. After the kernel mode 302 maintains the mapping relationship, the processing workload of maintaining the file descriptor-to-screen task association in user mode 301 can be reduced. Sequence numbering can identify memory address reuse, and different signal sources can share notification channels. The entry reclamation mechanism further suppresses the accumulation of mapping resources.
[0065] A corresponding apparatus for implementing the above methods or processes is also provided.
[0066] Figure 4 A schematic structural block diagram of an example device 400 for asynchronous notification under certain circumstances is shown. Device 400 can be implemented at terminal device 110 and can perform... Figure 2 The process shown is 200.
[0067] Figure 4 The illustrated apparatus 400 includes a mapping acquisition module 410, an identification acquisition module 420, and a notification triggering module 430. The mapping acquisition module 410 is configured to acquire a mapping relationship. The mapping relationship indicates identification information for at least one synchronization object. Each synchronization object corresponds to at least one task to be completed. The identification acquisition module 420 is configured to acquire first identification information based on the mapping relationship in response to determining that a first task corresponding to a first synchronization object among the at least one objects has been completed. The notification triggering module 440 is configured to trigger a first notification based on the first identification information. The first notification indicates the execution status of the first task corresponding to the first synchronization object.
[0068] In some examples, the apparatus 400 further includes a relationship determination module configured to: in response to obtaining object description information of a second synchronization object in at least one synchronization object, generate object feature information of the second synchronization object based on the object description information; assign second identification information to the second synchronization object; generate second registration information corresponding to the second synchronization object based on the object feature information and the second identification information; and associate and store the second identification information and the second registration information corresponding to the second synchronization object in a mapping relationship.
[0069] In some examples, the relationship determination module is also configured to: obtain the storage address and sequence number of the second synchronization object based on the object description information; and generate object characteristic information of the second synchronization object based on the storage address, sequence number, and process identifier, wherein the process identifier is used to process the second synchronization object.
[0070] In some examples, the relationship determination module is also configured to shift the process identifier to obtain process feature information corresponding to the second synchronization object; determine the address feature information corresponding to the second synchronization object based on the process feature information and the storage address; and generate object feature information of the second synchronization object based on the address feature information and the sequence number.
[0071] In some examples, the relationship determination module is also configured to perform an XOR operation on the process characteristic information and the memory address to obtain the address characteristic information.
[0072] In some examples, the total number of synchronized objects in the mapping relationship does not exceed a threshold number. The relationship determination module is also configured to, in response to obtaining object description information of newly added synchronized objects and the total number reaching the threshold number, determine a third synchronized object from at least one synchronized object that satisfies one or more conditions; remove the third identification information of the third synchronized object and the third registration information corresponding to the third synchronized object from the mapping relationship; and associate and store the identification information of the newly added synchronized object and the registration information corresponding to the newly added synchronized object in the mapping relationship. In some examples, one or more conditions include at least one of the following: the time when the third synchronized object is stored in the mapping relationship is earlier than the time when other objects in at least one synchronized object are stored in the mapping relationship; the storage duration of the identification information and registration information of the third synchronized object in the mapping relationship reaches a threshold duration; or, the access frequency corresponding to the third synchronized object is lower than the access frequency corresponding to other objects in at least one synchronized object.
[0073] In some examples, the mapping relationship also indicates registration information corresponding to at least one synchronization object. The registration information includes object feature information of the corresponding synchronization object. The identifier acquisition module 420 is also configured to: determine the first registration information of the first synchronization object in response to determining that the first task is completed; and obtain the first identifier information corresponding to the first registration information based on the mapping relationship in response to the mapping relationship including the first registration information.
[0074] In some examples, the identifier acquisition module 420 is further configured to acquire a first process identifier, a first storage address, and a first sequence number corresponding to the first task. The first process identifier indicates the first process used to process the first synchronization object. Based on the first process identifier and the first storage address, the identifier acquisition module 420 generates first address feature information corresponding to the first synchronization object. Based on the first address feature information and the first sequence number, the identifier acquisition module 420 generates first object feature information of the first synchronization object. The first object feature information serves as at least a part of the first registration information.
[0075] In some examples, the identifier acquisition module 420 is also configured to update the fourth registration information using the first sequence number in response to the mapping relationship including the fourth registration information. The fourth registration information includes second address feature information and a second sequence number. The second address feature information is the same as the first address feature information. The second sequence number is different from the first sequence number.
[0076] In some examples, the identifier acquisition module 420 is also configured to update the second sequence number when updating the fourth registration information.
[0077] In some examples, the identifier acquisition module 420 is also configured to determine the fifth registration information of the fourth synchronization object in response to determining that the second task corresponding to the fourth synchronization object has been completed. The registration determination module 420 adds registration information to be matched to the mapping relationship in response to the mapping relationship not including the fifth registration information. The registration information to be matched includes object characteristic information of the fourth synchronization object. The status information in the registration information to be matched indicates the execution status of the second task.
[0078] In some examples, the notification triggering module 430 is also configured to remove the first registration information and the first identification information from the mapping relationship in response to triggering the first notification.
[0079] In some examples, the notification triggering module 430 is also configured to generate a first notification and write it to a buffer. The buffer is used to store notifications to be proxied.
[0080] In some examples, the notification triggering module 430 is also configured to read at least one notification stored in a buffer in batches. The at least one notification includes at least a first notification. In response to at least one notification being read, the notification triggering module 430 removes at least one notification from the buffer.
[0081] The modules included in device 400 can be implemented in various ways, including software, hardware, firmware, or any combination thereof. In some cases, one or more modules can be implemented using software and / or firmware, such as machine-executable instructions stored on a storage medium. In addition to or as an alternative to machine-executable instructions, some or all of the units in device 400 can be implemented at least partially by one or more hardware logic components. By way of example, and not limitation, exemplary types of hardware logic components that can be used include field-programmable gate arrays (FPGAs), application-specific integrated circuits (ASICs), application-specific standard parts (ASSPs), systems on a chip (SOCs), complex programmable logic devices (CPLDs), and so on.
[0082] Figure 5 A block diagram of an electronic device 500 in which one or more examples may be implemented is shown. It should be understood that... Figure 5 The electronic device 500 shown is merely exemplary and should not be construed as limiting the functionality and scope of the examples described herein. Figure 5 The electronic device 500 shown can be used to implement the terminal device 110 discussed above.
[0083] like Figure 5 As shown, electronic device 500 is in the form of a general-purpose electronic device. Components of electronic device 500 may include, but are not limited to, one or more processing units or processors 510, memory 520, storage devices 530, one or more communication units 540, one or more input devices 550, and one or more output devices 560. Processor 510 may be a physical or virtual processor and is capable of performing various processes according to programs stored in memory 520. In a multiprocessor system, multiple processors execute computer-executable instructions in parallel to improve the parallel processing capability of electronic device 500.
[0084] Electronic device 500 typically includes multiple computer storage media. Such media can be any accessible media that is accessible to electronic device 500, including but not limited to volatile and non-volatile media, removable and non-removable media. Memory 520 can be volatile memory (e.g., registers, cache, random access memory (RAM)), non-volatile memory (e.g., read-only memory (ROM), electrically erasable programmable read-only memory (EEPROM), flash memory), or some combination thereof). Storage device 530 can be removable or non-removable media and may include machine-readable media, such as flash drives, disks, or any other media capable of storing information and / or data and accessible within electronic device 500.
[0085] Electronic device 500 may further include additional removable / non-removable, volatile / non-volatile storage media. Although not explicitly stated... Figure 5 As shown, disk drives for reading from or writing to removable, non-volatile disks (e.g., floppy disks) and optical disk drives for reading from or writing to removable, non-volatile optical disks can be provided. In these cases, each drive can be connected to a bus (not shown) via one or more data media interfaces. Memory 520 may include computer program product 525 having one or more program modules configured to perform various methods or actions of various examples.
[0086] The communication unit 540 enables communication with other electronic devices via a communication medium. Additionally, the functionality of the components of the electronic device 500 can be implemented using a single computing cluster or multiple computing machines capable of communicating via communication connections. Therefore, the electronic device 500 can operate in a networked environment using logical connections to one or more other servers, networked personal computers, or another network node.
[0087] Input device 550 can be one or more input devices, such as a mouse, keyboard, trackball, etc. Output device 560 can be one or more output devices, such as a monitor, speaker, printer, etc. Electronic device 500 can also communicate with one or more external devices (not shown) via communication unit 540 as needed. These external devices include storage devices, display devices, etc., and can communicate with one or more devices that enable user interaction with electronic device 500, or with any device that enables electronic device 500 to communicate with one or more other electronic devices (e.g., network card, modem, etc.). Such communication can be performed via an input / output (I / O) interface (not shown).
[0088] A computer-readable storage medium is provided that stores computer-executable instructions thereon, wherein the computer-executable instructions are executed by a processor to implement the methods described above. A computer program product is also provided, which is tangibly stored on a non-transitory computer-readable medium and includes computer-executable instructions, which are executed by a processor to implement the methods described above.
[0089] The flowcharts and / or block diagrams of the methods, apparatus, devices, and computer program products referred to herein describe various aspects. It should be understood that each block of the flowcharts and / or block diagrams, as well as combinations of blocks in the flowcharts and / or block diagrams, can be implemented by computer-readable program instructions.
[0090] These computer-readable program instructions can be provided to a processor of a general-purpose computer, a special-purpose computer, or other programmable data processing apparatus to produce a machine such that, when executed by the processor of the computer or other programmable data processing apparatus, they create means for implementing the functions / actions specified in one or more blocks of the flowchart and / or block diagram. These computer-readable program instructions can also be stored in a computer-readable storage medium that causes a computer, programmable data processing apparatus, and / or other device to operate in a particular manner; thus, the computer-readable medium storing the instructions comprises an article of manufacture that includes instructions for implementing aspects of the functions / actions specified in one or more blocks of the flowchart and / or block diagram.
[0091] Computer-readable program instructions can be loaded onto a computer, other programmable data processing apparatus, or other device to cause a series of operational steps to be performed on the computer, other programmable data processing apparatus, or other device to produce a computer-implemented process, thereby causing the instructions that execute on the computer, other programmable data processing apparatus, or other device to perform the functions / actions specified in one or more boxes of a flowchart and / or block diagram.
[0092] The flowcharts and block diagrams in the accompanying figures illustrate the architecture, functionality, and operation of possible implementations of systems, methods, and computer program products under various scenarios. In this respect, each block in a flowchart or block diagram may represent a module, segment, or portion of an instruction, which contains one or more executable instructions for implementing the specified logical function. In some alternative implementations, the functions marked in the blocks may occur in a different order than those shown in the figures. For example, two consecutive blocks may actually be executed substantially in parallel, and they may sometimes be executed in reverse order, depending on the functions involved. It should also be noted that each block in the block diagrams and / or flowcharts, and combinations of blocks in the block diagrams and / or flowcharts, can be implemented using a dedicated hardware-based system that performs the specified function or action, or using a combination of dedicated hardware and computer instructions.
[0093] Various examples have been described above. The foregoing descriptions are exemplary and not exhaustive, nor are they limited to the disclosed implementations. Many modifications and variations will be apparent to those skilled in the art without departing from the scope and spirit of the described implementations. The terminology used herein is chosen to best explain the principles, practical applications, or improvements to technology in the market, or to enable others skilled in the art to understand the various implementations disclosed herein.
Claims
1. An asynchronous notification method, comprising: Obtain a mapping relationship, wherein the mapping relationship indicates at least the identification information of at least one synchronization object, and the at least one synchronization object corresponds to at least one task to be completed; In response to determining that a first task corresponding to a first synchronization object among the at least one synchronization objects has been completed, first identification information is obtained based on the mapping relationship; as well as Based on the first identification information, a first notification is triggered, and the first notification indicates the execution status of the first task corresponding to the first synchronization object.
2. The method of claim 1, wherein the mapping relationship is determined at least based on the following: In response to obtaining object description information of the second synchronization object among the at least one synchronization object, object feature information of the second synchronization object is generated based on the object description information; Assign second identification information to the second synchronization object; Based on the object feature information and the second identification information of the second synchronization object, generate the second registration information corresponding to the second synchronization object; as well as The second identification information and the second registration information corresponding to the second synchronization object are associated and stored in the mapping relationship.
3. The method according to claim 2, wherein generating object feature information of the second synchronization object based on the object description information includes: Based on the object description information, obtain the storage address and sequence number of the second synchronization object; as well as Based on the storage address, the sequence number, and the process identifier, object feature information of the second synchronization object is generated, and the process identifier is used to process the second synchronization object.
4. The method according to claim 3, wherein generating the object feature information of the second synchronization object based on the storage address, the sequence number, and the process identifier includes: The process identifier is shifted to obtain process feature information corresponding to the second synchronization object; Based on the process feature information and the storage address, determine the address feature information corresponding to the second synchronization object; as well as Based on the address feature information and the sequence number, the object feature information of the second synchronization object is generated.
5. The method according to claim 1, wherein the total number of synchronization objects in the mapping relationship does not exceed a threshold number, and the method further comprises: In response to obtaining object description information of a newly added synchronization object and the total number reaching the threshold number, a third synchronization object that meets one or more conditions is determined from the at least one synchronization object; Remove the third identification information of the third synchronization object and the third registration information corresponding to the third synchronization object from the mapping relationship; as well as The identification information of the newly added synchronization object and the registration information corresponding to the newly added synchronization object are associated and stored in the mapping relationship.
6. The method of claim 5, wherein the one or more conditions include at least one of the following: The third synchronization object is stored in the mapping relationship earlier than the other objects in the at least one synchronization object are stored in the mapping relationship. The storage duration of the identification and registration information of the third synchronization object in the mapping relationship reaches a threshold duration, or The access frequency of the third synchronization object is lower than the access frequency of the other objects in the at least one synchronization object.
7. The method according to claim 1, wherein the mapping relationship further indicates registration information corresponding to the at least one synchronization object, the registration information including object characteristic information of the corresponding synchronization object. Furthermore, obtaining the first identifier information corresponding to the first synchronization object based on the mapping relationship includes: In response to determining that the first task is completed, the first registration information of the first synchronization object is determined; as well as In response to the mapping relationship including the first registration information, the first identification information corresponding to the first registration information is obtained based on the mapping relationship.
8. The method according to claim 7, wherein determining the first registration information of the first synchronization object includes: Obtain the first process identifier, first storage address and first sequence number corresponding to the first task, wherein the first process identifier indicates the first process used to process the first synchronization object; Based on the first process identifier and the first storage address, generate first address feature information corresponding to the first synchronization object; as well as First object feature information of the first synchronization object is generated based on the first address feature information and the first sequence number, and serves as at least a part of the first registration information.
9. The method according to claim 8, further comprising: In response to the mapping relationship including fourth registration information, the fourth registration information is updated using the first sequence number, wherein the fourth registration information includes second address feature information and a second sequence number, the second address feature information being the same as the first address feature information, and the second sequence number being different from the first sequence number.
10. The method of claim 7, further comprising: In response to the determination that the second task corresponding to the fourth synchronization object has been completed, the fifth registration information of the fourth synchronization object is determined; as well as In response to the fact that the mapping relationship does not include the fifth registration information, registration information to be matched is added to the mapping relationship. The registration information to be matched includes the object feature information of the fourth synchronization object, and the status information in the registration information to be matched indicates the execution status of the second task.
11. The method of claim 7, further comprising: In response to triggering the first notification, the first registration information and the first identification information are removed from the mapping relationship.
12. The method of claim 1, wherein triggering the first notification comprises: Generate the first notification; as well as The first notification is written to a buffer, which is used to store notifications to be proxied.
13. The method of claim 12, further comprising: From the buffer, at least one notification stored therein is read in batches, wherein the at least one notification includes at least the first notification; as well as In response to the reading of the at least one notification, the at least one notification is removed from the buffer.
14. An apparatus for asynchronous notification, comprising: A mapping acquisition module is configured to acquire a mapping relationship, wherein the mapping relationship indicates at least the identification information of at least one synchronization object, and the at least one synchronization object corresponds to at least one task to be completed; The identifier acquisition module is configured to acquire first identifier information based on the mapping relationship in response to determining that a first task corresponding to a first synchronization object among the at least one synchronization object has been completed. as well as The notification triggering module is configured to trigger a first notification based on the first identification information, wherein the first notification indicates the execution status of the first task corresponding to the first synchronization object.
15. The apparatus of claim 14, further comprising a relationship determination module, the relationship determination module being configured to: In response to obtaining object description information of the second synchronization object among the at least one synchronization object, object feature information of the second synchronization object is generated based on the object description information; Assign second identification information to the second synchronization object; Based on the object feature information and the second identification information of the second synchronization object, generate the second registration information corresponding to the second synchronization object; as well as The second identification information and the second registration information corresponding to the second synchronization object are associated and stored in the mapping relationship.
16. The apparatus of claim 15, wherein the relationship determination module is further configured to: Based on the object description information, obtain the storage address and sequence number of the second synchronization object; and Based on the storage address, the sequence number, and the process identifier, object feature information of the second synchronization object is generated, and the process identifier is used to process the second synchronization object.
17. The apparatus of claim 16, wherein the relationship determination module is further configured to: The process identifier is shifted to obtain process feature information corresponding to the second synchronization object; Based on the process feature information and the storage address, determine the address feature information corresponding to the second synchronization object; as well as Based on the address feature information and the sequence number, the object feature information of the second synchronization object is generated.
18. The apparatus of claim 14, wherein the total number of synchronization objects in the mapping relationship does not exceed a threshold number, and the relationship determination module is further configured to: In response to obtaining object description information of a newly added synchronization object and the total number reaching the threshold number, a third synchronization object that meets one or more conditions is determined from the at least one synchronization object; Remove the third identification information of the third synchronization object and the third registration information corresponding to the third synchronization object from the mapping relationship; and The identification information of the newly added synchronization object and the registration information corresponding to the newly added synchronization object are associated and stored in the mapping relationship.
19. The apparatus of claim 18, wherein said one or more conditions include at least one of the following: The third synchronization object is stored in the mapping relationship earlier than the other objects in the at least one synchronization object are stored in the mapping relationship. The storage duration of the identification and registration information of the third synchronization object in the mapping relationship reaches a threshold duration, or The access frequency of the third synchronization object is lower than the access frequency of the other objects in the at least one synchronization object.
20. The apparatus of claim 14, wherein the mapping relationship further indicates registration information corresponding to the at least one synchronization object, the registration information including object characteristic information of the corresponding synchronization object. Furthermore, the identifier acquisition module is also configured to: In response to determining that the first task is completed, the first registration information of the first synchronization object is determined; and In response to the mapping relationship including the first registration information, the first identification information corresponding to the first registration information is obtained based on the mapping relationship.
21. The apparatus of claim 20, wherein the identifier acquisition module is further configured to: Obtain the first process identifier, first storage address and first sequence number corresponding to the first task, wherein the first process identifier indicates the first process used to process the first synchronization object; Based on the first process identifier and the first storage address, generate first address feature information corresponding to the first synchronization object; as well as First object feature information of the first synchronization object is generated based on the first address feature information and the first sequence number, and serves as at least a part of the first registration information.
22. The apparatus of claim 21, wherein the identifier acquisition module is further configured to: In response to the mapping relationship including fourth registration information, the fourth registration information is updated using the first sequence number, wherein, The fourth registration information includes second address feature information and second sequence number. The second address feature information is the same as the first address feature information, and the second sequence number is different from the first sequence number.
23. The apparatus of claim 20, wherein the identifier acquisition module is further configured to: In response to the determination that the second task corresponding to the fourth synchronization object has been completed, the fifth registration information of the fourth synchronization object is determined; and In response to the fact that the mapping relationship does not include the fifth registration information, registration information to be matched is added to the mapping relationship. The registration information to be matched includes the object feature information of the fourth synchronization object, and the status information in the registration information to be matched indicates the execution status of the second task.
24. The apparatus of claim 20, wherein the notification triggering module is further configured to: In response to triggering the first notification, the first registration information and the first identification information are removed from the mapping relationship.
25. The apparatus of claim 14, wherein the notification triggering module is further configured to: Generate the first notification; and The first notification is written to a buffer, which is used to store notifications to be proxied.
26. The apparatus of claim 25, wherein the notification triggering module is further configured to: From the buffer, at least one notification stored therein is read in batches, the at least one notification including at least the first notification; and In response to the reading of the at least one notification, the at least one notification is removed from the buffer.
27. An electronic device comprising: At least one processor; as well as At least one memory coupled to the at least one processor and storing instructions for execution by the at least one processor, the instructions causing the electronic device to perform the method according to any one of claims 1 to 13 when executed by the at least one processor.
28. A computer-readable storage medium having a computer program stored thereon, the computer program being executable by a processor to implement the method according to any one of claims 1 to 13.
29. A computer program product tangibly stored in a computer storage medium and comprising computer-executable instructions that, when executed by a device, cause the device to perform the method according to any one of claims 1 to 13.
30. A chip, comprising: One or more interface circuits; And one or more processor circuits configured to execute a computer program stored in a memory, which, when executed by the processor circuits, causes the chip to perform the method according to any one of claims 1 to 13.
