WO2022042015A1 - Data processing method and apparatus for performance monitoring of system on a chip - Google Patents

Data processing method and apparatus for performance monitoring of system on a chip Download PDF

Info

Publication number
WO2022042015A1
WO2022042015A1 PCT/CN2021/103606 CN2021103606W WO2022042015A1 WO 2022042015 A1 WO2022042015 A1 WO 2022042015A1 CN 2021103606 W CN2021103606 W CN 2021103606W WO 2022042015 A1 WO2022042015 A1 WO 2022042015A1
Authority
WO
WIPO (PCT)
Prior art keywords
node
linked list
storage unit
transaction request
information
Prior art date
Application number
PCT/CN2021/103606
Other languages
French (fr)
Chinese (zh)
Inventor
戴亮
王伟
陈健
徐凌芸
Original Assignee
上海阵量智能科技有限公司
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 上海阵量智能科技有限公司 filed Critical 上海阵量智能科技有限公司
Publication of WO2022042015A1 publication Critical patent/WO2022042015A1/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/3027Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0631Configuration or reconfiguration of storage systems by allocating resources to storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data

Definitions

  • the present disclosure relates to the technical field of chip design, and in particular, to a data processing method and apparatus for system chip performance monitoring.
  • the main system and each subsystem are connected through the data path to realize the functions of the entire chip system.
  • the data path is implemented as a bus, one subsystem can send a transaction request to another subsystem through the data path, and the other subsystem can respond to the transaction request.
  • Various information can be counted through the system bus performance monitoring module, such as the delay information of each transaction request and the data bandwidth occupied by each subsystem.
  • each time the system bus performance monitoring module monitors a transaction request it stores the information of the transaction request in the storage space.
  • each subsystem has a different period of preparing data for different transmission transactions, and the number of requests supported by the chip system is large.
  • a large number of arithmetic operations and logical operations are required. To determine the storage location of the information requested by each transaction from the storage space, the complexity of the system bus performance monitoring module is high.
  • the present disclosure provides a data processing method and device for system chip performance monitoring.
  • a data processing method for system chip performance monitoring comprising: when a first transaction request is detected, acquiring information of the first transaction request, The information includes a first tag of the first transaction request; based on the first tag of the first transaction request, the information of the first transaction request is stored in a first linked list corresponding to the first tag , wherein the first linked list includes at least one node, and a storage unit corresponding to each node of the first linked list stores information about a transaction request with the first label.
  • a data processing method for system chip performance monitoring comprising: when a first transaction request is detected, in the first linked list, the first The transaction request creates a first node; and the information of the first transaction request is stored in a storage unit allocated for the first node, wherein the nodes of at least two linked lists share a plurality of storage units.
  • a data processing apparatus for monitoring system chip performance comprising: a controller module, an insert polling module, and a linked list storage unit, wherein the controller modules are respectively Connected with the insert polling module and the linked list storage unit, the linked list storage unit is connected with the insert polling module; the controller module is configured to obtain all the information when the first transaction request is detected.
  • the information of the first transaction request includes the first tag of the first transaction request;
  • the insertion polling module module is configured to, based on the first tag of the first transaction request,
  • the information of the transaction request is stored in the first linked list corresponding to the first label in the linked list storage unit; wherein, the first linked list includes at least one node, and the storage unit corresponding to each node of the first linked list Information about a transaction request with the first tag is stored.
  • a data processing apparatus for system chip performance monitoring comprising: a creation module for, when a first transaction request is detected, in the first linked list Create a first node for the first transaction request; a storage module, configured to store the information of the first transaction request in a storage unit allocated for the first node, wherein the nodes of at least two linked lists share multiple storage unit.
  • a computer-readable storage medium on which a computer program is stored, and when the program is executed by a processor, implements the method of the first aspect or the second aspect.
  • a computer device including a memory, a processor, and a computer program stored in the memory and executable on the processor, the processor implementing the first aspect when the program is executed or the method described in the second aspect.
  • the information of the transaction request is stored in the linked list based on the tag of the transaction request, wherein the information of multiple transaction requests with the same tag is stored in multiple nodes of the same linked list, so that complex arithmetic and logical operations are not required.
  • the transaction request information of the same tag can be read from the same linked list, which reduces the complexity and storage space requirements of the system bus performance monitoring module, and at the same time improves the efficiency of system bus performance monitoring.
  • FIG. 1 is a flowchart of a data processing method for system chip performance monitoring according to an embodiment of the present disclosure.
  • FIG. 2 is a schematic diagram of a linked list structure according to an embodiment of the present disclosure.
  • FIG. 3 is a schematic diagram of a process of inserting and extracting a transaction request according to an embodiment of the present disclosure.
  • FIG. 4 is a schematic diagram of a tail node of a parallel polling linked list according to an embodiment of the present disclosure.
  • FIG. 5 is a flowchart of a data processing method for system chip performance monitoring according to another embodiment of the present disclosure.
  • FIG. 6 is a block diagram of a data processing apparatus for system chip performance monitoring according to an embodiment of the present disclosure.
  • FIG. 7 is a block diagram of a data processing apparatus for SoC performance monitoring according to another embodiment of the present disclosure.
  • FIG. 8 is a schematic structural diagram of a computer device according to an embodiment of the present disclosure.
  • first, second, third, etc. may be used in this disclosure to describe various pieces of information, such information should not be limited by these terms. These terms are only used to distinguish the same type of information from each other.
  • first information may also be referred to as the second information, and similarly, the second information may also be referred to as the first information, without departing from the scope of the present disclosure.
  • word "if” as used herein can be interpreted as "at the time of” or "when” or "in response to determining.”
  • the system bus performance monitoring module is often used to monitor the performance of the chip system.
  • Each subsystem in the chip system will generate transaction requests when working.
  • Each time a transaction request is generated the information of the transaction request will be stored in a storage unit.
  • the system bus performance monitoring module reads the transaction request from the storage unit. information, and statistics the information in a specific way, so as to monitor the performance of the chip system.
  • Each transaction request may be assigned a corresponding label for identifying the transaction request. In the event that a transaction request fails to receive a timely response, the same transaction request may be repeatedly generated and sent multiple times, in which case these repeatedly generated transaction requests may be assigned the same tag.
  • the maximum number of unanswered transaction requests supported by the chip system is also different.
  • the above-mentioned unanswered transaction requests may all be transaction requests of the same label, or may include multiple transaction requests of different labels.
  • the solution of the embodiment of the present disclosure will be described below by taking an example that the maximum number of unanswered transaction requests may be 128. Those skilled in the art can understand that the maximum number is only an exemplary illustration and is not intended to limit the present disclosure.
  • the maximum number of unanswered transaction requests may be called an outstanding number in the bus protocol, and the bus protocol may be AXI (Advanced eXtensible Interface) that supports outstanding transaction and multi-transaction out-of-order. ) bus protocol.
  • the processor subsystem can start the next transfer transaction before the current transfer transaction is completed. Therefore, there may be multiple transmission transactions in progress in the system, that is, advanced transmissions.
  • the time for preparing data is different, and it is possible that the data ready order is inconsistent with the transaction arrival order. Therefore, the processor subsystem needs a corresponding mechanism to identify the transaction to which the data belongs, such as using tags to identify transactions. , and the label can be defined according to the attribute of the bus, wherein the attribute of the bus can be the transmission channel information. In this way, the chip system can support out-of-order (no ordering restriction) requests and responses for transactions of different tags.
  • each time the system bus performance monitoring module monitors a transaction request it stores the information of the transaction request in the storage space.
  • each subsystem has a different period of preparing data for different transmission transactions, and the number of requests supported by the chip system is large.
  • the storage location and/or storage information of the information requested by each transaction is determined from the storage space, resulting in low monitoring efficiency. For example, when calculating the delay between the response time and the generation time of the transaction request of the same tag, it is necessary to determine the time when the first transaction request of the tag occurs.
  • the system bus performance monitoring module generally determines the order in which the transaction requests are generated according to the time stamps of each transaction request of the same tag. Therefore, it is necessary to determine the type of the first transaction request based on the timestamps of all valid transaction requests of the same tag in the storage space. In the worst case, the transaction request with the smallest timestamp needs to be selected from 128 transaction requests, that is, 127 comparison operations need to be performed. A large number of arithmetic operations and logical operations will consume more hardware resources and computing power, and the time required for statistical information is long, resulting in low monitoring efficiency.
  • an embodiment of the present disclosure provides a data processing method for system chip performance monitoring. As shown in FIG. 1 , the method includes the following steps.
  • Step 101 In the case of detecting a first transaction request, obtain information of the first transaction request, where the information includes a first tag of the first transaction request.
  • Step 102 Based on the first label of the first transaction request, store the information of the first transaction request in a first linked list corresponding to the first label, wherein the first linked list includes at least one node, and the first linked list includes at least one node.
  • a storage unit corresponding to each node of a linked list stores information of a transaction request with the first label.
  • the method of the embodiment of the present disclosure can be applied to a system bus performance monitoring module.
  • the design of the module focuses on the transmission of large amounts of data.
  • the design will consider a variety of bus protocols.
  • the bus protocol with tags (TAG ID, abbreviated as xID) is supported here.
  • the bus protocol supports out-of-order requests and responses of different xID transactions. And sequential requests and replies for the same xID transaction.
  • the out-of-order requests and responses of different xID transactions mean that the response sequences of different xID transactions may be different from their request sequences.
  • the sequential request and response of the same xID transaction means that multiple transaction requests of the same xID are answered in sequence according to the order in which the requests are generated.
  • a transaction request with xID of 1 includes transaction request 1, transaction request 2 and transaction request 3.
  • a transaction request with xID of 2 can also be generated, for example, including transaction request 4 and transaction request Request 5.
  • the generation process of transaction requests of different xIDs may be independent of each other. Assuming that the order of generation of the above transaction requests is from early to late: transaction request 1, transaction request 4, transaction request 2, transaction request 3 and transaction request 5, then the transaction requests of the same xID need to be answered in order, for example, The response time of transaction request 1 should be earlier than transaction request 2, the response time of transaction request 2 should be earlier than transaction request 3, and the response time of transaction request 4 should be earlier than transaction request 5.
  • the response times of transaction requests with different xIDs may be in any order.
  • the response time of transaction request 4 may be earlier than transaction request 1, or may be later than transaction request 2. Therefore, the response sequence of each of the above transaction requests can be: transaction request 1, transaction request 2, transaction request 4, transaction request 5 and transaction request 3, or transaction request 4, transaction request 5, transaction request 1, transaction request 2 and Transaction request 3 and so on.
  • the information of the transaction request can be stored in a node of the linked list, that is, in a storage unit corresponding to the node.
  • the linked list is a non-consecutive and non-sequential storage structure on the physical storage unit, and the logical order of data elements is realized by the link order of pointers in the linked list.
  • Each node in a linked list can store the information of multiple transaction requests of the same label.
  • the information may include one or more kinds of information, wherein one kind of information represents the information of the bus transaction request, including but not limited to at least one of the type of the transaction request, the tag, and the timestamp when the event is requested. .
  • the information may also include information indicating the position of the next node, that is, the pointer of the linked list. If the node is the tail of the linked list, the content of the pointer is not considered.
  • the information requested by multiple transactions of the same tag may be stored in storage units corresponding to each node of the linked list in a specific order.
  • the specific order may be a chronological order in which the plurality of transaction requests are detected. For example, for the same label, the detected information of the first transaction request is stored in the first node in the linked list, and the first node is represented as the header node; the detected information of the second transaction request is stored in the linked list and add the address of the second node in the header node, that is, the pointer of the header node points to the second node; and so on.
  • the information of multiple transaction requests with the first tag is sequentially extracted according to the sequence of the multiple transaction requests in the first linked list. For example, first extract the information of the transaction request from the header node of the first linked list; find the next node according to the pointer of the header node, and set the next node as the new header node; extract the first label when needed When the information requested by the next transaction is obtained, the information requested by the transaction is extracted from the new header node, and so on.
  • the depths of each linked list may be the same or different.
  • the information of the transaction request is stored in the linked list, and if a response to the transaction request is detected, the information of the transaction request is removed from the linked list Extracted from , therefore, the linked list can store information about currently unanswered transaction requests.
  • each node in the linked list may be used to store information of one or more transaction requests, wherein, in the case where each node is used to store information of one transaction request, the first linked list currently includes
  • the number of nodes may be equal to the number of currently unanswered transaction requests with the first label. For example, if there are currently 4 unanswered transaction requests with xID of 1, the depth of the linked list corresponding to the transaction request with xID of 1 is 4, that is, the linked list includes 4 nodes. For another example, if there are currently 5 unanswered transaction requests with xID of 2, the depth of the linked list corresponding to the transaction request with xID of 2 is 5.
  • the communication bus can be allowed to support a maximum of 128 unanswered transaction requests, and these 128 transaction requests can be either transaction requests with the same xID, or 128 transaction requests with different xIDs, or less than 128 xID transaction requests.
  • 128 transaction requests are transaction requests with the same xID
  • each linked list is required to support a maximum of 128 nodes; in the case where 128 transaction requests are transaction requests with different xIDs , that is, a maximum of 128 linked lists are required.
  • the storage unit of one node may be a row of flip-flop storage arrays.
  • the number of xIDs contained in unanswered transaction requests is between 1 and 128, and the depth of each link is between 128 and 1, and the number of trigger storage array rows is 128*128.
  • the maximum number of trigger storage array rows used at the same time is 128, and the remaining (128-1)*128 trigger storage array rows are empty, but in the case of different transaction requests, this (128-1)* 128 flip-flop memory array row distribution is different.
  • the 128 trigger storage array rows may store the linked list corresponding to 128 transaction requests of the same xID, then the trigger storage array row of (128-1)*128 is the other 127 xID storage units.
  • the 128 trigger storage array rows can store the linked list corresponding to 128 xID transaction requests, then the (128-1)*128 trigger storage array row is the 128 xIDs except the header node. storage unit.
  • the nodes of at least two linked lists may share a plurality of storage units, wherein each storage unit is used to store one node of the linked list. That is to say, the above-mentioned multiple storage units can be allocated to each node of the linked list with xID of 1, can also be allocated to each node of the linked list of xID of 2, or can be allocated to nodes in different linked lists respectively.
  • the allocation is dynamic, and nodes are allocated/reclaimed from time to time based on each transaction request and response.
  • a storage unit may be allocated to the node corresponding to the first transaction request, so that the storage unit allocated to the first linked list
  • the number of cells matches the number of nodes currently included in the first linked list.
  • a linked list includes several nodes, several storage units are allocated for the linked list.
  • the total number of all allocated storage units is equal to the maximum number of unanswered transaction requests. That is, the number of the plurality of storage units is equal to the maximum number of unanswered transaction requests supported by the bus protocol.
  • the information stored by each node in the linked list must include the tag xID of the transaction request. Further, the stored information may also include other indication information, such as information indicating whether the storage unit is valid, information indicating whether it is a header, information indicating whether it is a footer, information indicating the location of the next node, and the like.
  • a storage unit may be allocated to the new node, and the information of the transaction request included in a certain node in the linked list is extracted.
  • the storage unit allocated to the node can be reclaimed, for example, an information field indicating whether the storage unit is valid or not is set in the storage unit, and the information field includes indication information indicating whether the storage unit is valid or invalid, so as to facilitate If necessary, the storage unit indicating that the information is invalid can be allocated to other nodes.
  • the present disclosure adopts multiple linked lists, and the depth of the linked list allocated to the hardware is not fixed, but is dynamically allocated based on the xID transaction request, and the depth support of a linked list varies from 1 to 128.
  • the bus system supports a maximum of 128 unanswered transaction requests, which are allocated as a maximum of 128 xID linked lists.
  • the nodes corresponding to transaction requests of different xIDs share storage space, and the size of the shared storage space is 128 storage units, such as trigger storage array rows. , through the linked list to complete the sequential request and response of the transaction and the out-of-order request and response of the transaction.
  • the present disclosure does not limit the hardware form for realizing the storage unit, which may be a flip-flop storage array row, a register storage array row, or other hardware circuits.
  • the following is an example of a flip-flop storage array row.
  • 128 trigger storage array rows (referred to as array rows) are used to store the transaction request information of all xIDs, when extracting the transaction request information, it is necessary to start from 128 triggers.
  • the memory array row extracts valid rows, filters the xIDs corresponding to the transaction requests in each valid row, and finally selects the array row corresponding to the minimum timestamp from the filtered array rows.
  • each step including extracting valid rows, selecting the array row corresponding to the minimum timestamp value, etc.
  • the logic design is very complicated, and the amount of operations Also very large.
  • the nodes in the linked list can be dynamically adjusted, and when the first transaction request is detected, a new node can be created for the first transaction request; and the created node can be linked to the current tail node of the first linked list. That is to say, every time a transaction request is detected, a new node is created in the corresponding linked list for the transaction request, and the created new node is linked to the tail node of the corresponding linked list to become the new tail node of the linked list.
  • the transaction requests corresponding to each node in the linked list are arranged in the order of the detected time.
  • the storage unit corresponding to the head node of the linked list can be directly extracted without going through complex arithmetic operations and Logical operations improve processing efficiency.
  • the controller of the system bus performance monitoring module may determine a corresponding linked list of the transaction request for which the transaction response is directed based on the tag contained in the transaction response, and retrieve the corresponding linked list from the corresponding linked list.
  • the header node extracts the information requested by the transaction. For example, the generation time of the transaction request labeled xIDn can be extracted from the storage unit corresponding to the head node of the linked list, and the time interval between the response time of the transaction response labeled xIDn and the generation time of the transaction request labeled xIDn can be calculated. , so as to count the delay between the transaction request with the tag xIDn and the transaction response with the tag xIDn.
  • the delay between each transaction request and the transaction response can be counted, and the average delay between the transaction request of each tag and the transaction response of the corresponding tag generated within a period of time can also be counted.
  • the delay between each transaction request and the transaction response can be counted, and the average delay between the transaction request of each tag and the transaction response of the corresponding tag generated within a period of time can also be counted.
  • other parameters may also be counted according to the transaction request information included in the linked list, which will not be repeated here.
  • one of the allocated storage units stores the tag of the transaction request, the information of the system bus transaction request, and the indication information.
  • the indication information includes: first indication information for indicating whether the storage unit is a valid storage unit, second indication information for indicating whether the current node is the tail node of the linked list to which it belongs, and second indication information for indicating whether the current node is a
  • the third indication information of the header node of the linked list is used to indicate the fourth indication information of the address of the storage unit storing the next node of the current node, wherein the current node is the node corresponding to the storage unit.
  • the above indication information may be carried in the nodes of the linked list.
  • the linked list structure of some embodiments is shown in FIG. 2.
  • a shared storage multi-linked list structure is used to store these information.
  • the area in the box in the figure is the information space that needs to be stored in the transaction request, and the rest are the extension fields added to realize the shared storage.
  • a row in Fig. 2 such as the row marked as 0, indicates a row of the flip-flop memory array, which is composed of a plurality of flip-flops.
  • the bit width of the flip-flop array row is determined by the specific information content.
  • the information space may include the label xID corresponding to the node and the information AXI INFO of the system bus transaction request.
  • xID can be a 16-bit transaction request identifier, any xID value supported by the bus.
  • the width of AXI INFO depends on the design needs, generally including the time stamp (TIMESLOT) when the transaction request is generated, the type of the bus, the granularity of the burst transmission (BURST SIZE), the type of the burst transmission (BURST TYPE), and the protection type (PROT) , cache type (CACHE), request address (ADDRESS), etc.
  • the granularity of burst transmission is used to determine the size of the transaction request transmitted in a burst transmission process; the type of burst transmission is used to indicate the attribute of the transaction request transmitted in a burst transmission process; the protection type is used to indicate the transaction request in the system chip The security mode and level of access; the cache type is used to indicate the storage method of the transaction request, whether it is cached first and then stored in the storage unit from the cache, or directly stored in the storage unit; the request address is used to indicate the transaction request of the burst transmission. Start storage location.
  • the extension fields may include V fields, T fields, H fields and pointer (Next Pointer, NPTR) fields.
  • the first indication information is included in the V domain of the node
  • the second indication information is included in the T domain of the node
  • the third indication information is included in the H domain of the node
  • the fourth indication information is included in the pointer domain of the node.
  • the V field may be represented by 1 bit, eg, "0" to indicate that the memory cell is invalid, and "1" to indicate that the memory cell is valid. In the case where the information stored in the storage unit is extracted, or when the storage unit is not allocated, such as during initialization, the storage unit is an invalid storage unit. If the stored information is not extracted, the storage unit is an effective storage unit.
  • the T field can also be represented by 1 bit, for example, "0" is used to indicate that it is not a footer node, and "1" is used to indicate that it is a footer node.
  • the H field can also be represented by 1 bit, for example, "0" is used to indicate that it is not a header node, and "1" is used to indicate that it is a header node.
  • the width of the NPTR field is determined by the depth of the storage unit shared by each linked list. For example, when the total number of available storage spaces is 128, the length of the fourth indication information may be 7 bits, and when the total number of available storage spaces is 256, the length of the fourth indication information may be is 8 bits. If the node is the tail node of the linked list, the content of the NPTR field in the node is not concerned. After a new node is linked to the current tail node of the linked list, the NPTR field of the current tail node may be updated based on the address of the storage unit in which the new node is stored.
  • the first linked list to be stored for the first transaction request and the current tail node of the first linked list can be determined according to the information stored in the storage unit. If the insertion of the first transaction request is detected, a new node is created for the first transaction request, the storage unit corresponding to the created node is determined, and the created node is linked to the current tail node of the first linked list.
  • the first indication information, the second indication information and the label information stored in each of the plurality of storage units may be queried in parallel to determine whether the first linked list is empty, and to determine whether the first linked list is empty. The first storage unit corresponding to the current footer node.
  • the information of the first transaction request included in the created node may be stored in an invalid storage unit in the plurality of storage units according to the first indication information stored in each of the plurality of storage units , the invalid storage unit is the storage unit corresponding to the created node.
  • the created node may be randomly stored in any invalid storage unit among the plurality of invalid storage units.
  • the created node may be stored in the lowest numbered invalid storage location.
  • the created node may be stored in the highest numbered invalid storage unit. This disclosure does not limit this.
  • the tag xID in each storage unit can be compared with the tag requested by the first transaction to obtain a comparison result.
  • the comparison result may be 1, and if the two tags are different, the comparison result may be 0.
  • logical operations such as logical AND operation, are respectively performed, thereby obtaining the footer node.
  • the created node may be linked to the current tail node of the first linked list in the following manner.
  • the fourth indication information of the first storage unit may be updated to the information of the created node, that is, the storage unit corresponding to the created node.
  • the second indication information of the first storage unit may be updated to a first indication state, where the first indication state indicates that the corresponding node is not the tail node of the linked list to which it belongs. Assuming that the first linked list currently includes N nodes, and node N is the current tail node of the first linked list, after the created node is linked to the tail node of the first linked list, node N is no longer a member of the first linked list.
  • the second indication information corresponding to the node N can be updated to the first indication state.
  • the second indication information in the storage unit corresponding to the created node may be set to a second indication state, and the second indication state indicates that the corresponding node is the tail node of the linked list to which it belongs. Assuming that the first linked list currently includes N nodes, and node N is the current tail node of the first linked list, after the created node is linked to the tail node of the first linked list, the created node becomes the first linked list Therefore, the second indication information corresponding to the created node can be updated to the second indication state.
  • each transaction request can be stored in each node of the linked list in the order in which it is detected, so that when extracting the information of the transaction request, only the header node of the linked list can be found, and then the data can be extracted from the header node. Information about the transaction request.
  • the middle NPTR field of the table footer node of the update xIDn transaction request is a storage unit for storing the node corresponding to the first transaction request, and the T field of the current table footer node is set to 0 at the same time.
  • step (2) can be realized by the following way: compare the label stored in each storage unit and the first label of the first transaction request respectively, obtain the first comparison result, compare the first indication information of each storage unit, the first label of the first transaction request.
  • the second indication information and the first comparison result are respectively logically ANDed to obtain the operation result, the position of "1" in the operation result is determined, and the end node of the table is determined according to the position of "1".
  • a one-dimensional array V can be generated from the first indication information corresponding to each node.
  • the length of the one-dimensional array V is 128, and each element in the array is 1 or 0, which are respectively used to store the corresponding The storage unit is or is not a valid storage unit.
  • a one-dimensional array T can be generated from the second indication information corresponding to each node, the length of the one-dimensional array T is 128, and each element in the array is 1 or 0, which are used to indicate whether the corresponding node is or not. Footer node.
  • a first comparison result is obtained by comparing the tag carried in each node with the tag of the transaction request, and the first comparison result is also represented by a one-dimensional first comparison array, and the length of the one-dimensional first comparison array is 128.
  • An AND operation is performed on the one-dimensional first comparison array, the one-dimensional array V, and the one-dimensional array T, and the end node of the table can be determined according to the position of 1 in the operation result of the AND operation. If the linked list corresponding to the first transaction request exists, that is, if it is not empty, the operation result is a 128-bit one-hot code, and the position of "1" is the 127th bit at the maximum, and the minimum is The 0th bit; when the linked list corresponding to the transaction request does not exist, that is, when it is empty, the operation result is a value of all 0s, and the address of the tail node obtained in step (2) can be used as one 7-bit pointer to represent.
  • the process of obtaining the 7-bit pointer through arithmetic operation is as follows:
  • the operation result is not a one-hot code, but a 0 value, when the first linked list is empty. In this case, subtract 1 from the operation result, that is, the 128-bit value of all 0s, to obtain the first operation result, which is the 128-bit value of all "1", and add 128 "1"s 128 is obtained.
  • the first operation result after subtracting 1 from the one-hot code [0 0 0... 0. Therefore, when the 7-bit pointer is 0, it will correspond to the above two situations, resulting in a conflict.
  • step (3) it is also necessary to set the third indication information in the storage unit corresponding to the created node to a third indication state, wherein the third indication state is used to indicate that the corresponding node belongs to the linked list header node.
  • the method provided by the present disclosure further includes: in the case of detecting the extraction of the first transaction request, obtaining a first tag of the first transaction request; based on the first tag of the first transaction request, Extracting the information of the first transaction request from the header node of the first linked list.
  • the first indication information, the third indication information and the label information stored in each of the multiple storage units can be queried in parallel to determine the current header of the first linked list
  • the second storage unit corresponding to the node then extracts the transaction information of xIDn from the information requested by the system bus transaction in the second storage unit, and changes the indication information in the storage unit involved in the operation.
  • step (1) can be implemented in the following manner: comparing the tags of each storage unit and the first tag of the first transaction request respectively, obtaining a second comparison result, and comparing the stored first indication information, The three indication information and the second comparison result are respectively ANDed to obtain an initial operation result, the position of "1" in the initial operation result is determined, and the header node is determined according to the position of "1". For example, 1 is subtracted from the initial operation result to obtain a second operation result; each bit in the second operation result is summed; and the second storage unit is determined according to the summation result.
  • the second storage unit corresponding to the header node may be determined by referring to the method of determining the first storage unit corresponding to the footer node, which will not be further described here.
  • the method provided by the present disclosure judges the earliest transaction request in the same xIDn (transaction tag with xID n) transaction request according to the header node of the linked list, and avoids obtaining the earliest transaction request by comparing the value of the real-time counter of the timestamps of each transaction request. Transaction requests, thus saving a lot of computational logic.
  • the process of inserting and extracting transaction requests is shown in Figure 3.
  • a storage unit 310 is mainly composed of a storage unit 310 and two parallel polling modules, including one for inserting detected transaction requests into the linked list.
  • the deletion polling module 322 is configured to execute the method for extracting transaction request information from the linked list in any of the foregoing embodiments
  • the insertion polling module 321 is configured to execute the method for extracting transaction request information from any of the foregoing embodiments.
  • the method of inserting the information into the linked list The specific insertion and extraction methods are detailed in the foregoing embodiments, which will not be repeated here.
  • the storage space of the embodiment of the present disclosure may be implemented by using a flip-flop storage array, the depth of the storage space may be 128, and the width is defined according to the bus protocol and statistical requirements.
  • the peripheral circuits of the memory array such as the circuits associated with the insert polling module 321 and the delete polling module 322
  • the V domain, H domain, xID domain and T domain of the flip-flop memory array are accessed in a parallel traversal polling manner Part or all of the state in the domain, so as to determine the current tail node or head node of the first linked list.
  • the parallel polling method is adopted for the transaction request to write the linked list corresponding to xID (or create a new linked list corresponding to xID), and to read the linked list whose response transaction is xID.
  • the logic design is shown in Figure 4, and its input is 128 bits.
  • V-domain one-dimensional array namely V[0:127], 128-bit node xID, namely xID[0:127]; and 128-bit T-domain one-dimensional array or H-domain one-dimensional array, namely T[0: 127] or H[0:127].
  • xID is represented as [0:127] for simplicity, since the xID of each node is represented by multiple bits, the xID of a node is a multi-dimensional array.
  • the judgment process is as follows (i takes value from 0 to 127):
  • (S2) Determine whether the data in the i-th row of the storage array belongs to the linked list corresponding to xIDn by comparing whether the tag xIDn of the transaction request is equal to the xID[i] of the node.
  • (S3) Determine whether the i-th row data of the storage array is the tail node of the linked list through T[i], or determine whether the i-th row data of the storage array is the head node of the linked list through H[i].
  • this method can support the statistics of delay information of different xIDs, and support the statistics of different types of transaction requests.
  • the hardware design requires less storage and less computing delay.
  • an embodiment of the present disclosure further provides a data processing method for system chip performance monitoring, and the method includes the following steps.
  • Step 501 In the case of detecting the first transaction request, create a first node in the first linked list for the first transaction request.
  • Step 502 Store the information requested by the first transaction in a storage unit allocated for the first node, wherein at least two nodes of the linked list share a plurality of storage units.
  • the number of the plurality of storage units is equal to the maximum number of unacknowledged transaction requests supported in the bus protocol included in the system chip.
  • each storage unit is used to store one node of the linked list, and the number of storage units allocated to the first linked list matches the number of nodes currently included in the first linked list.
  • the storage unit storage allocated for the first node includes the following indication information: first indication information for indicating whether the storage unit is a valid storage unit, for indicating whether the first node is a valid storage unit.
  • the second indication information of the tail node of the first linked list is used to indicate whether the first node is the head node of the first linked list.
  • the third indication information is used to indicate that the first node is used to store the first
  • the storage unit allocated for the first node further stores the tag of the transaction request and the information of the system bus transaction request.
  • the method further includes: querying the first indication information, the second indication information and the label information stored in each of the plurality of storage units in parallel to determine the current tail node of the first linked list and/or query the first indication information, the third indication information and the label information stored in each of the plurality of storage units in parallel to determine the current header node of the first linked list.
  • the method further includes: allocating an invalid storage unit of the plurality of storage units to the first node based on the first indication information stored in the plurality of storage units.
  • the method further includes: querying the first indication information stored in the plurality of storage units respectively, so as to determine the invalid storage unit from the plurality of storage units, the first indication information of the storage unit is to indicate whether the storage unit is a valid storage unit.
  • each linked list includes at least one node for storing information about a transaction request with a tag.
  • the linked list 1 is used to store the information of the transaction request with the tag xID1
  • the linked list 2 is used to store the information of the transaction request with the tag xID2.
  • the information of the multiple transaction requests with the first tag is sequentially stored in each node of the first linked list according to the time when the multiple transaction requests are detected; and/or the information with the first tag is The information of multiple transaction requests of a tag is sequentially extracted according to the sequence of the multiple transaction requests in the first linked list.
  • the number of nodes currently included in the first linked list is the number of currently unanswered transaction requests with the first label.
  • the creating a first node for the first transaction request in the first linked list includes: creating a new node for the first transaction request; linking the created node to the first linked list The current footer node.
  • the linking the created node to the current tail node of the first linked list includes: querying in parallel the first indication information, all the stored information stored in each of the plurality of storage units
  • the second indication information and the label are used to determine whether the first linked list is empty and the first storage unit corresponding to the current tail node of the first linked list; when the first linked list is not empty , update the fourth indication information corresponding to the first storage unit to the storage unit of the created node; when the first linked list is not empty, update the second storage unit of the first first storage unit
  • the indication information is updated to the first indication state, wherein the first indication state of the second indication information is used to indicate that the corresponding node is not the tail node of the linked list to which it belongs; the second indication information in the storage unit corresponding to the created node is It is set to the second indication state, and the second indication state of the second indication information is used to indicate that the corresponding node is the tail node of the linked list to which it belongs.
  • the method further comprises: in the case of detecting the extraction of the first transaction request, obtaining a first tag of the first transaction request; based on the first tag of the first transaction request, The information of the first transaction request is extracted from the header node of the first linked list.
  • extracting the information of the first transaction request from the header node of the first linked list includes: including: querying the first data stored in each of the plurality of storage units in parallel
  • the indication information, the third indication information and the label are used to determine the second storage unit corresponding to the current header node of the first linked list; extracted from the information of the system bus transaction request in the second storage unit the information requested by the first transaction;
  • the first indication information for updating the storage unit is a fourth indication state, wherein the fourth indication state is used to indicate that the second storage space is an invalid storage space;
  • the third indication information of the second storage unit is updated to a fifth indication state, wherein the fifth indication state of the third indication information is used to indicate that the corresponding node is not the head node of the linked list to which it belongs;
  • the fourth indication information determine the storage unit corresponding to the next node of the current header node, and update the third indication information in the determined storage unit to the third indication state, the third indication information
  • the third indication state is used to indicate that the corresponding node
  • the writing order of each step does not mean a strict execution order but constitutes any limitation on the implementation process, and the specific execution order of each step should be based on its function and possible Internal logic is determined.
  • the present disclosure further provides a data processing apparatus for system chip performance monitoring, the apparatus includes: a controller module 330 , an insertion polling module 321 and a linked list storage unit 310 .
  • the controller module 330 is respectively connected to the insert polling module 321 and the linked list storage unit 310
  • the linked list storage unit 310 is connected to the insert polling module 321 .
  • the controller module 330 is configured to acquire information of the first transaction request when the first transaction request is detected, where the information includes the first tag of the first transaction request.
  • the insertion polling module 321 is configured to store the information of the first transaction request in the first linked list corresponding to the first tag in the linked list storage unit 310 based on the first tag of the first transaction request, wherein, the first linked list includes at least one node, and a storage unit corresponding to each node of the first linked list stores information of a transaction request with the first label.
  • the information of the multiple transaction requests with the first tag is sequentially stored in each node of the first linked list according to the time when the multiple transaction requests are detected; and/or the information with the first tag is The information of multiple transaction requests of a tag is sequentially extracted according to the sequence of the multiple transaction requests in the first linked list.
  • the number of nodes currently included in the first linked list is the number of currently unanswered transaction requests with the first label; and/or the information of transaction requests with different labels is stored in different in the linked list.
  • the nodes of at least two linked lists share a plurality of storage units, wherein each storage unit is used to store one node of the linked list, and each storage unit includes a tag of a transaction request, information of a system bus transaction request, and the following Indication information: the first indication information used to indicate whether the storage unit is a valid storage unit, the second indication information used to indicate whether the current node is the tail node of the linked list to which it belongs, and the second indication information used to indicate whether the current node is a table of the linked list to which it belongs.
  • the third indication information of the head node is used to indicate the fourth indication information of the address of the storage unit that stores the next node of the current node, wherein the current node is the node corresponding to the storage unit.
  • the apparatus further includes: an allocation module, the allocation module is connected to the controller module and the linked list storage unit, and the allocation module is configured to store the information requested by the first transaction when When reaching the first linked list, allocate storage units to the nodes corresponding to the first transaction request, so that the number of storage units allocated to the first linked list is equal to the number of nodes currently included in the first linked list. match.
  • the allocation module is further configured to create a new node for the first transaction request, and determine a storage unit corresponding to the created node; the insertion polling module is further configured to modify the storage unit in the linked list The indication information of the corresponding storage unit, so as to link the created node to the current tail node of the first linked list.
  • the insert polling module is further configured to: query the first indication information, the second indication information and the tag stored in each of the plurality of storage units in parallel, so as to Determine whether the first linked list is empty and the first storage unit corresponding to the current tail node of the first linked list; when the first linked list is not empty, store the first storage unit in the first storage unit 4.
  • the indication information is updated to the storage unit corresponding to the created node; when the first linked list is not empty, the second indication information in the first storage unit is updated to the first indication state, wherein the The first indication state is used to indicate that the corresponding node is not the tail node of the linked list; the second indication information in the storage unit corresponding to the created node is set to the second indication state, and the second indication state is used to indicate that the corresponding The node is the tail node of the linked list to which it belongs.
  • the insert polling module is further configured to compare the tags stored in the plurality of storage units with the first tags of the first transaction request, respectively, to obtain the first tags of the plurality of storage units. a comparison result; respectively perform logical operations on the first indication information, the second indication information and the first comparison result stored in the plurality of storage units to determine whether the first linked list is empty and the first storage unit.
  • the insert polling module is further configured to perform a logical AND operation on the first indication information, the second indication information and the first comparison result stored in the plurality of storage units, respectively, Obtain an operation result; subtract 1 from the operation result to obtain a first operation result; sum each bit in the first operation result; determine whether the first linked list is at least according to the summation result empty and the first storage unit.
  • the operation result is a one-hot code or an all-zero value.
  • the insert polling module is further configured to, when the result of the summation is not 0, determine that the address of the first storage unit is equal to the result of the summation, and determine the first The linked list is not empty; when the result of the summation is equal to 0, the operation result is compared with 0, and if the operation result is different from 0, it is determined that the address of the first storage unit is equal to the summation As a result, it is determined that the first linked list is not empty.
  • the insertion polling module is further configured to, if the operation result is the same as 0, determine that the first linked list is empty, and set the third indication information in the storage unit corresponding to the created node is a third indication state, wherein the third indication state is used to indicate that the corresponding node is the head node of the linked list to which it belongs.
  • the allocating module is further configured to store, according to the first indication information stored in each of the plurality of storage units, the information of the first transaction request included in the created node to in an invalid storage unit of the plurality of storage units.
  • the apparatus further includes a deletion polling module 322 , and the deletion polling module 322 is connected to the controller module 330 and the linked list storage unit 310 .
  • the controller module 330 is further configured to obtain the first tag of the first transaction request in the case of detecting the extraction of the first transaction request;
  • the deletion polling module 322 is configured to obtain the first tag of the first transaction request based on the The first tag extracts the information of the first transaction request from the header node of the first linked list in the linked list storage unit 310 .
  • the deletion polling module is further configured to query the first indication information, the third indication information and the label stored in each of the plurality of storage units in parallel to determine the the second storage unit corresponding to the current header node of the first linked list; extract the information of the first transaction request from the information of the system bus transaction request in the second storage unit; update the second storage unit
  • the first indication information in is a fourth indication state, wherein the fourth indication state is used to indicate that the second storage space is an invalid storage space; update the third indication information in the second storage unit to the first Five indication states, wherein the fifth indication state is used to indicate that the corresponding node is not the header node of the linked list; according to the fourth indication information in the second storage unit, determine the next one of the current header node
  • the storage unit corresponding to the node, and the third indication information in the determined storage unit is updated to a third indication state, where the third indication state is used to indicate that the corresponding node is the head node of the linked list to which it belongs.
  • the deletion polling module is further configured to compare the tags stored in the plurality of storage units with the first tags of the first transaction request, respectively, to obtain the first tags of the plurality of storage units. 2. Comparison results; respectively perform logical operations on the first indication information, the third indication information and the second comparison results stored in the plurality of storage units to determine the second storage unit.
  • the deletion polling module is further configured to perform a logical AND operation on the first indication information, the third indication information and the second comparison result stored in the plurality of storage units, respectively, Obtain an initial operation result; subtract 1 from the initial operation result to obtain a second operation result; sum each bit in the second operation result; determine the second storage unit according to the summation result .
  • the number of the plurality of storage units is equal to the maximum number of unacknowledged transaction requests supported by the bus protocol.
  • the present disclosure also provides a data processing apparatus for system chip performance monitoring, the apparatus includes: a creation module 701 for, when a first transaction request is detected, in the first linked list creating a first node for the first transaction request; a storage module 702, configured to store the information of the first transaction request in a storage unit allocated for the first node, wherein the nodes of at least two linked lists share the same multiple storage units.
  • each storage unit is used to store one node of the linked list, and the number of storage units allocated to the first linked list matches the number of nodes currently included in the first linked list.
  • the storage unit allocated to the first node stores the following indication information: first indication information used to indicate whether the storage unit is a valid storage unit, used to indicate whether the first node is a valid storage unit.
  • the second indication information of the tail node of the first linked list is used to indicate whether the first node is the head node of the first linked list.
  • the third indication information is used to indicate that the first node is used to store the first
  • the apparatus further includes: a third query module, configured to query the first indication information, the second indication information and the label stored in each of the plurality of storage units in parallel, so as to determine the first indication information the current tail node of the linked list; and/or a fourth query module, configured to query the first indication information, the third indication information and the label stored in each storage unit in the plurality of storage units in parallel, so as to determine the current state of the first linked list the header node.
  • a third query module configured to query the first indication information, the second indication information and the label stored in each of the plurality of storage units in parallel, so as to determine the first indication information the current tail node of the linked list
  • a fourth query module configured to query the first indication information, the third indication information and the label stored in each storage unit in the plurality of storage units in parallel, so as to determine the current state of the first linked list the header node.
  • the apparatus further includes: an allocation module configured to allocate an invalid storage unit in the plurality of storage units to the first node based on the first indication information stored in the plurality of storage units .
  • the functions or modules included in the apparatuses provided in the embodiments of the present disclosure may be used to execute the methods described in the above method embodiments.
  • each module and unit of the above device can also be implemented by being embedded on a certain chip in the form of an integrated circuit. And they can be implemented individually or integrated together. That is, the above modules and units can be configured as one or more integrated circuits that implement the above methods, such as: one or more specific integrated circuits (Application Specific Integrated Circuit, ASIC), or one or more microprocessors (Digital Singnal Processor, DSP), or, one or more Field Programmable Gate Array (Field Programmable Gate Array, FPGA), etc.
  • ASIC Application Specific Integrated Circuit
  • DSP Digital Singnal Processor
  • FPGA Field Programmable Gate Array
  • the embodiments of the present specification further provide a computer device, which at least includes a memory, a processor, and a computer program stored in the memory and executable on the processor, wherein the processor implements any of the foregoing embodiments when executing the program. method described.
  • FIG. 8 shows a more specific schematic diagram of the hardware structure of a computer device provided by an embodiment of this specification.
  • the device may include: a processor 801 , a memory 802 , an input/output interface 803 , a communication interface 804 and a bus 805 .
  • the processor 801 , the memory 802 , the input/output interface 803 and the communication interface 804 realize the communication connection among each other within the device through the bus 805 .
  • the processor 801 can be implemented by a general-purpose CPU (Central Processing Unit, central processing unit), a microprocessor, an application specific integrated circuit (Application Specific Integrated Circuit, ASIC), or one or more integrated circuits, etc. program to implement the technical solutions provided by the embodiments of this specification.
  • a general-purpose CPU Central Processing Unit, central processing unit
  • a microprocessor central processing unit
  • an application specific integrated circuit Application Specific Integrated Circuit, ASIC
  • ASIC Application Specific Integrated Circuit
  • the memory 802 can be implemented in the form of a ROM (Read Only Memory, read-only memory), a RAM (Random Access Memory, random access memory), a static storage device, a dynamic storage device, and the like.
  • the memory 802 may store an operating system and other application programs. When implementing the technical solutions provided by the embodiments of this specification through software or firmware, relevant program codes are stored in the memory 802 and invoked by the processor 801 for execution.
  • the input/output interface 803 is used for connecting input/output modules to realize information input and output.
  • the input/output/module can be configured in the device as a component (not shown in the figure), or can be externally connected to the device to provide corresponding functions.
  • the input device may include a keyboard, a mouse, a touch screen, a microphone, various sensors, etc.
  • the output device may include a display, a speaker, a vibrator, an indicator light, and the like.
  • the communication interface 804 is used to connect a communication module (not shown in the figure), so as to realize the communication interaction between the device and other devices.
  • the communication module may implement communication through wired means (eg, USB, network cable, etc.), or may implement communication through wireless means (eg, mobile network, WIFI, Bluetooth, etc.).
  • Bus 805 includes a path to transfer information between the various components of the device (eg, processor 801, memory 802, input/output interface 803, and communication interface 804).
  • the above-mentioned device only shows the processor 801, the memory 802, the input/output interface 803, the communication interface 804 and the bus 805, in the specific implementation process, the device may also include necessary components for normal operation. other components.
  • the above-mentioned device may only include the components necessary to realize the solutions of the embodiments of the present specification, and does not necessarily include all the components shown in the figures.
  • An embodiment of the present disclosure further provides a computer-readable storage medium, on which a computer program is stored, and when the program is executed by a processor, implements the method described in any of the foregoing embodiments.
  • Computer-readable media includes both persistent and non-permanent, removable and non-removable media, and storage of information may be implemented by any method or technology.
  • Information may be computer readable instructions, data structures, modules of programs, or other data.
  • Examples of computer storage media include, but are not limited to, phase-change memory (PRAM), static random access memory (SRAM), dynamic random access memory (DRAM), other types of random access memory (RAM), read only memory (ROM), Electrically Erasable Programmable Read Only Memory (EEPROM), Flash Memory or other memory technology, Compact Disc Read Only Memory (CD-ROM), Digital Versatile Disc (DVD) or other optical storage, Magnetic tape cassettes, magnetic tape magnetic disk storage or other magnetic storage devices or any other non-transmission medium that can be used to store information that can be accessed by a computing device.
  • computer-readable media does not include transitory computer-readable media, such as modulated data signals and carrier waves.
  • a typical implementation device is a computer, which may be in the form of a personal computer, laptop computer, cellular phone, camera phone, smart phone, personal digital assistant, media player, navigation device, e-mail device, game control desktop, tablet, wearable device, or a combination of any of these devices.
  • each embodiment in this specification is described in a progressive manner, and the same and similar parts between the various embodiments may be referred to each other, and each embodiment focuses on the differences from other embodiments.
  • the description is relatively simple, and reference may be made to the partial description of the method embodiment for related parts.
  • the device embodiments described above are only illustrative, wherein the modules described as separate components may or may not be physically separated.
  • the functions of each module may be integrated into the same module. or multiple software and/or hardware implementations. Some or all of the modules may also be selected according to actual needs to achieve the purpose of the solution in this embodiment. Those of ordinary skill in the art can understand and implement it without creative effort.

Abstract

A data processing method and apparatus for performance monitoring of a system on a chip. The method comprises: when a first transaction request is detected, obtaining information of the first transaction request, the information comprising a first tag of the first transaction request (101); and on the basis of the first tag of the first transaction request, storing the information of the first transaction request in a first linked list corresponding to the first tag, wherein the first linked list comprises at least one node, and a storage unit corresponding to each node of the first linked list stores information of one transaction request having the first tag (102).

Description

用于系统芯片性能监控的数据处理方法和装置Data processing method and device for system chip performance monitoring
相关申请的交叉引用CROSS-REFERENCE TO RELATED APPLICATIONS
本公开要求2020年8月31日提交的题为“用于系统芯片性能监控的数据处理方法和装置”、申请号为202010899040.X的中国专利申请的优先权,以上申请的全部内容通过引用并入本文。The present disclosure claims the priority of the Chinese patent application entitled "Data Processing Method and Apparatus for System-on-Chip Performance Monitoring", filed on August 31, 2020, with application number 202010899040.X, the entire contents of which are hereby incorporated by reference. into this article.
技术领域technical field
本公开涉及芯片设计技术领域,尤其涉及用于系统芯片性能监控的数据处理方法和装置。The present disclosure relates to the technical field of chip design, and in particular, to a data processing method and apparatus for system chip performance monitoring.
背景技术Background technique
在系统芯片设计过程中,通过数据通路连接主系统和各个子系统,以实现整个芯片系统的功能。数据通路以总线方式实现,一个子系统可以通过数据通路向另一个子系统发送事务请求,另一个子系统可以响应该事务请求。可以通过系统总线性能监控模块来统计各种信息,如各个事务请求的延迟信息,各子系统占用的数据带宽等。在一个例子中,系统总线性能监控模块每监测到一个事务请求,就将该事务请求的信息存储到存储空间中。但由于子系统较多,每个子系统对不同传输事务准备数据的周期也不同,芯片系统所支持的请求数又很多,在对芯片系统的性能进行监控时,需要通过大量的算术运算和逻辑运算来从存储空间中确定每个事务请求的信息的存储位置,导致系统总线性能监控模块的复杂度较高。In the system chip design process, the main system and each subsystem are connected through the data path to realize the functions of the entire chip system. The data path is implemented as a bus, one subsystem can send a transaction request to another subsystem through the data path, and the other subsystem can respond to the transaction request. Various information can be counted through the system bus performance monitoring module, such as the delay information of each transaction request and the data bandwidth occupied by each subsystem. In one example, each time the system bus performance monitoring module monitors a transaction request, it stores the information of the transaction request in the storage space. However, due to the large number of subsystems, each subsystem has a different period of preparing data for different transmission transactions, and the number of requests supported by the chip system is large. When monitoring the performance of the chip system, a large number of arithmetic operations and logical operations are required. To determine the storage location of the information requested by each transaction from the storage space, the complexity of the system bus performance monitoring module is high.
发明内容SUMMARY OF THE INVENTION
本公开提供一种用于系统芯片性能监控的数据处理方法和装置。The present disclosure provides a data processing method and device for system chip performance monitoring.
根据本公开实施例的第一方面,提供一种用于系统芯片性能监控的数据处理方法,所述方法包括:在检测到第一事务请求的情况下,获取所述第一事务请求的信息,所述信息包括所述第一事务请求的第一标签;基于所述第一事务请求的第一标签,将所述第一事务请求的信息存储到与所述第一标签对应的第一链表中,其中,所述第一链表包括至少一个节点,所述第一链表的每个节点对应的存储单元存储一个具有所述第一标签的事务请求的信息。According to a first aspect of the embodiments of the present disclosure, there is provided a data processing method for system chip performance monitoring, the method comprising: when a first transaction request is detected, acquiring information of the first transaction request, The information includes a first tag of the first transaction request; based on the first tag of the first transaction request, the information of the first transaction request is stored in a first linked list corresponding to the first tag , wherein the first linked list includes at least one node, and a storage unit corresponding to each node of the first linked list stores information about a transaction request with the first label.
根据本公开实施例的第二方面,提供一种用于系统芯片性能监控的数据处理方法,所述方法包括:在检测到第一事务请求的情况下,在第一链表中为所述第一事务请求创建第一节点;将所述第一事务请求的信息存储到为所述第一节点分配的存储单元中,其中,至少两个链表的节点共用多个存储单元。According to a second aspect of the embodiments of the present disclosure, there is provided a data processing method for system chip performance monitoring, the method comprising: when a first transaction request is detected, in the first linked list, the first The transaction request creates a first node; and the information of the first transaction request is stored in a storage unit allocated for the first node, wherein the nodes of at least two linked lists share a plurality of storage units.
根据本公开实施例的第三方面,提供一种用于系统芯片性能监控的数据处理装置, 所述装置包括:控制器模块、插入轮询模块以及链表存储单元,其中,所述控制器模块分别与所述插入轮询模块和所述链表存储单元相连,所述链表存储单元与所述插入轮询模块相连;所述控制器模块,用于在检测到第一事务请求的情况下,获取所述第一事务请求的信息,所述信息包括所述第一事务请求的第一标签;所述插入轮询模块模块,用于基于所述第一事务请求的第一标签,将所述第一事务请求的信息存储到所述链表存储单元中与所述第一标签对应的第一链表中;其中,所述第一链表包括至少一个节点,所述第一链表的每个节点对应的存储单元存储一个具有所述第一标签的事务请求的信息。According to a third aspect of the embodiments of the present disclosure, there is provided a data processing apparatus for monitoring system chip performance, the apparatus comprising: a controller module, an insert polling module, and a linked list storage unit, wherein the controller modules are respectively Connected with the insert polling module and the linked list storage unit, the linked list storage unit is connected with the insert polling module; the controller module is configured to obtain all the information when the first transaction request is detected. the information of the first transaction request, the information includes the first tag of the first transaction request; the insertion polling module module is configured to, based on the first tag of the first transaction request, The information of the transaction request is stored in the first linked list corresponding to the first label in the linked list storage unit; wherein, the first linked list includes at least one node, and the storage unit corresponding to each node of the first linked list Information about a transaction request with the first tag is stored.
根据本公开实施例的第四方面,提供一种用于系统芯片性能监控的数据处理装置,所述装置包括:创建模块,用于在检测到第一事务请求的情况下,在第一链表中为所述第一事务请求创建第一节点;存储模块,用于将所述第一事务请求的信息存储到为所述第一节点分配的存储单元中,其中,至少两个链表的节点共用多个存储单元。According to a fourth aspect of the embodiments of the present disclosure, there is provided a data processing apparatus for system chip performance monitoring, the apparatus comprising: a creation module for, when a first transaction request is detected, in the first linked list Create a first node for the first transaction request; a storage module, configured to store the information of the first transaction request in a storage unit allocated for the first node, wherein the nodes of at least two linked lists share multiple storage unit.
根据本公开实施例的第五方面,提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现第一方面或第二方面所述的方法。According to a fifth aspect of the embodiments of the present disclosure, there is provided a computer-readable storage medium on which a computer program is stored, and when the program is executed by a processor, implements the method of the first aspect or the second aspect.
根据本公开实施例的第六方面,提供一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现第一方面或第二方面所述的方法。According to a sixth aspect of the embodiments of the present disclosure, there is provided a computer device including a memory, a processor, and a computer program stored in the memory and executable on the processor, the processor implementing the first aspect when the program is executed or the method described in the second aspect.
本公开实施例基于事务请求的标签将事务请求的信息存储到链表中,其中,标签相同的多个事务请求的信息存储在同一链表的多个节点中,从而无需经过复杂的算术运算和逻辑运算,即可从同一链表中读取到同一标签的事务请求的信息,降低了系统总线性能监控模块的复杂度和存储空间的需求,同时,也提高了系统总线性能监控的效率。In the embodiment of the present disclosure, the information of the transaction request is stored in the linked list based on the tag of the transaction request, wherein the information of multiple transaction requests with the same tag is stored in multiple nodes of the same linked list, so that complex arithmetic and logical operations are not required. , the transaction request information of the same tag can be read from the same linked list, which reduces the complexity and storage space requirements of the system bus performance monitoring module, and at the same time improves the efficiency of system bus performance monitoring.
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,而非限制本公开。It is to be understood that the foregoing general description and the following detailed description are exemplary and explanatory only and are not restrictive of the present disclosure.
附图说明Description of drawings
图1是本公开实施例的用于系统芯片性能监控的数据处理方法的流程图。FIG. 1 is a flowchart of a data processing method for system chip performance monitoring according to an embodiment of the present disclosure.
图2是本公开实施例的链表结构的示意图。FIG. 2 is a schematic diagram of a linked list structure according to an embodiment of the present disclosure.
图3是本公开实施例的事务请求的插入和提取过程的示意图。FIG. 3 is a schematic diagram of a process of inserting and extracting a transaction request according to an embodiment of the present disclosure.
图4是本公开实施例的并行轮询链表的表尾节点的示意图。FIG. 4 is a schematic diagram of a tail node of a parallel polling linked list according to an embodiment of the present disclosure.
图5是本公开另一实施例的用于系统芯片性能监控的数据处理方法的流程图。FIG. 5 is a flowchart of a data processing method for system chip performance monitoring according to another embodiment of the present disclosure.
图6是本公开实施例的用于系统芯片性能监控的数据处理装置的框图。FIG. 6 is a block diagram of a data processing apparatus for system chip performance monitoring according to an embodiment of the present disclosure.
图7是本公开另一实施例的用于系统芯片性能监控的数据处理装置的框图。FIG. 7 is a block diagram of a data processing apparatus for SoC performance monitoring according to another embodiment of the present disclosure.
图8是本公开实施例的计算机设备的结构示意图。FIG. 8 is a schematic structural diagram of a computer device according to an embodiment of the present disclosure.
具体实施方式detailed description
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。Exemplary embodiments will be described in detail herein, examples of which are illustrated in the accompanying drawings. Where the following description refers to the drawings, the same numerals in different drawings refer to the same or similar elements unless otherwise indicated. The implementations described in the illustrative examples below are not intended to represent all implementations consistent with this disclosure. Rather, they are merely examples of apparatus and methods consistent with some aspects of the present disclosure as recited in the appended claims.
在本公开使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本公开。在本公开和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。另外,本文中术语“至少一种”表示多种中的任意一种或多种中的至少两种的任意组合。The terminology used in the present disclosure is for the purpose of describing particular embodiments only and is not intended to limit the present disclosure. As used in this disclosure and the appended claims, the singular forms "a," "the," and "the" are intended to include the plural forms as well, unless the context clearly dictates otherwise. It will also be understood that the term "and/or" as used herein refers to and includes any and all possible combinations of one or more of the associated listed items. Additionally, the term "at least one" herein refers to any one of a plurality or any combination of at least two of a plurality.
应当理解,尽管在本公开可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本公开范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。It should be understood that although the terms first, second, third, etc. may be used in this disclosure to describe various pieces of information, such information should not be limited by these terms. These terms are only used to distinguish the same type of information from each other. For example, the first information may also be referred to as the second information, and similarly, the second information may also be referred to as the first information, without departing from the scope of the present disclosure. Depending on the context, the word "if" as used herein can be interpreted as "at the time of" or "when" or "in response to determining."
为了使本技术领域的人员更好的理解本公开实施例中的技术方案,并使本公开实施例的上述目的、特征和优点能够更加明显易懂,下面结合附图对本公开实施例中的技术方案作进一步详细的说明。In order for those skilled in the art to better understand the technical solutions in the embodiments of the present disclosure, and to make the above objects, features and advantages of the embodiments of the present disclosure more clearly understood, the following describes the technical solutions in the embodiments of the present disclosure with reference to the accompanying drawings. The program is described in further detail.
在系统芯片设计过程中,常常会采用系统总线性能监控模块来对芯片系统的性能进行监控。芯片系统中的各个子系统在工作时会产生事务请求,每产生一个事务请求,就会将该事务请求的信息存储到一个存储单元中,系统总线性能监控模块通过到存储单元中读取事务请求的信息,并按照特定方式对信息进行统计,从而对芯片系统的性能进行监控。每个事务请求可以被分配相应的标签,用于标识该事务请求。在事务请求未能得到及时响应的情况下,同一事务请求可能被重复多次产生和发送,在这种情况下这些重复产生的事务请求可以被分配相同的标签。在芯片系统所采用的协议不同的情况下,芯片系统所支持的未应答的事务请求的最大数量也不同。上述未应答的事务请求可以均为同一标签的事务请求,也可以包括多个不同标签的事务请求。下面以所述未应答的事务请求的最大数量可以是128为例,对本公开实施例的方案进行说明。本领域技术人员可以理解,该最大数量仅为一种示例性说明,并非用于限制本公开。In the system chip design process, the system bus performance monitoring module is often used to monitor the performance of the chip system. Each subsystem in the chip system will generate transaction requests when working. Each time a transaction request is generated, the information of the transaction request will be stored in a storage unit. The system bus performance monitoring module reads the transaction request from the storage unit. information, and statistics the information in a specific way, so as to monitor the performance of the chip system. Each transaction request may be assigned a corresponding label for identifying the transaction request. In the event that a transaction request fails to receive a timely response, the same transaction request may be repeatedly generated and sent multiple times, in which case these repeatedly generated transaction requests may be assigned the same tag. When the protocols adopted by the chip system are different, the maximum number of unanswered transaction requests supported by the chip system is also different. The above-mentioned unanswered transaction requests may all be transaction requests of the same label, or may include multiple transaction requests of different labels. The solution of the embodiment of the present disclosure will be described below by taking an example that the maximum number of unanswered transaction requests may be 128. Those skilled in the art can understand that the maximum number is only an exemplary illustration and is not intended to limit the present disclosure.
示例性的,未应答的事务请求的最大数量在总线协议中可以被称为未清数(outstanding number),总线协议可以是支持超前传输(outstanding transaction)和多事务乱序的AXI(Advanced eXtensible Interface)总线协议。为提高系统性能,处理器子系统可以在当前传输事务完成前,就可以开始下一个传输事务。因此系统中可能存在多个进行中的传输事务,也就是超前传输。但对于不同的子系统来讲,其准备数据的时间不同,数据就绪顺序与事务到达顺序不一致是可能的,因此处理器子系统需要相应的机制来标识数据所属的事务,如用标签来标识事务,而标签可以根据总线的属性来定义, 其中总线的属性可以是传输通道信息。这样的话,芯片系统就可以支持不同标签的事务的乱序(no ordering restriction)请求与应答。Exemplarily, the maximum number of unanswered transaction requests may be called an outstanding number in the bus protocol, and the bus protocol may be AXI (Advanced eXtensible Interface) that supports outstanding transaction and multi-transaction out-of-order. ) bus protocol. To improve system performance, the processor subsystem can start the next transfer transaction before the current transfer transaction is completed. Therefore, there may be multiple transmission transactions in progress in the system, that is, advanced transmissions. However, for different subsystems, the time for preparing data is different, and it is possible that the data ready order is inconsistent with the transaction arrival order. Therefore, the processor subsystem needs a corresponding mechanism to identify the transaction to which the data belongs, such as using tags to identify transactions. , and the label can be defined according to the attribute of the bus, wherein the attribute of the bus can be the transmission channel information. In this way, the chip system can support out-of-order (no ordering restriction) requests and responses for transactions of different tags.
在一个例子中,系统总线性能监控模块每监测到一个事务请求,就将该事务请求的信息存储到存储空间中。但由于子系统较多,每个子系统对不同传输事务准备数据的周期也不同,芯片系统所支持的请求数又很多,在对芯片系统的性能进行监控时,需要通过大量的算术运算和逻辑运算来从存储空间中确定每个事务请求的信息的存储位置和/或存储信息,导致监控效率较低。例如,在统计同一标签的事务请求的应答时间与产生时间之间的延迟时,需要先确定该标签的第一个事务请求发生的时间。系统总线性能监控模块一般是依据同一标签的各个事务请求的时间戳来确定事务请求产生的顺序。因此,需要基于存储空间内同一标签的所有有效的事务请求的时间戳,判断出最先产生的事务请求类型。在最恶劣的情况下,需要从128个事务请求中选择出最小时间戳的事务请求,即需要执行127次的比较操作。大量的算术运算和逻辑运算会耗费较多的硬件资源以及计算能力,而且统计信息所需的时间较长,导致监控效率较低。In one example, each time the system bus performance monitoring module monitors a transaction request, it stores the information of the transaction request in the storage space. However, due to the large number of subsystems, each subsystem has a different period of preparing data for different transmission transactions, and the number of requests supported by the chip system is large. When monitoring the performance of the chip system, a large number of arithmetic operations and logical operations are required. The storage location and/or storage information of the information requested by each transaction is determined from the storage space, resulting in low monitoring efficiency. For example, when calculating the delay between the response time and the generation time of the transaction request of the same tag, it is necessary to determine the time when the first transaction request of the tag occurs. The system bus performance monitoring module generally determines the order in which the transaction requests are generated according to the time stamps of each transaction request of the same tag. Therefore, it is necessary to determine the type of the first transaction request based on the timestamps of all valid transaction requests of the same tag in the storage space. In the worst case, the transaction request with the smallest timestamp needs to be selected from 128 transaction requests, that is, 127 comparison operations need to be performed. A large number of arithmetic operations and logical operations will consume more hardware resources and computing power, and the time required for statistical information is long, resulting in low monitoring efficiency.
基于此,本公开实施例提供一种用于系统芯片性能监控的数据处理方法,如图1所示,所述方法包括以下步骤。Based on this, an embodiment of the present disclosure provides a data processing method for system chip performance monitoring. As shown in FIG. 1 , the method includes the following steps.
步骤101:在检测到第一事务请求的情况下,获取所述第一事务请求的信息,所述信息包括第一事务请求的第一标签。Step 101: In the case of detecting a first transaction request, obtain information of the first transaction request, where the information includes a first tag of the first transaction request.
步骤102:基于所述第一事务请求的第一标签,将所述第一事务请求的信息存储到与第一标签对应的第一链表中,其中,所述第一链表包括至少一个节点,第一链表的每个节点对应的存储单元存储一个具有所述第一标签的事务请求的信息。Step 102: Based on the first label of the first transaction request, store the information of the first transaction request in a first linked list corresponding to the first label, wherein the first linked list includes at least one node, and the first linked list includes at least one node. A storage unit corresponding to each node of a linked list stores information of a transaction request with the first label.
本公开实施例的方法可应用于系统总线性能监控模块。模块的设计关注于大数据量的传输,设计会考虑多种总线协议,此处支持含有标签(TAG ID,本文后续简写为xID)的总线协议,总线协议支持不同xID事务的乱序请求与应答以及同一xID事务的顺序请求与应答。其中,不同xID事务的乱序请求与应答,是指不同xID事务的应答顺序可以与其请求顺序不同。同一xID事务的顺序请求与应答是指同一xID的多个事务请求按照其产生请求的先后顺序依次被应答。The method of the embodiment of the present disclosure can be applied to a system bus performance monitoring module. The design of the module focuses on the transmission of large amounts of data. The design will consider a variety of bus protocols. Here, the bus protocol with tags (TAG ID, abbreviated as xID) is supported here. The bus protocol supports out-of-order requests and responses of different xID transactions. And sequential requests and replies for the same xID transaction. Among them, the out-of-order requests and responses of different xID transactions mean that the response sequences of different xID transactions may be different from their request sequences. The sequential request and response of the same xID transaction means that multiple transaction requests of the same xID are answered in sequence according to the order in which the requests are generated.
例如,xID为1的事务请求包括事务请求1、事务请求2和事务请求3,在上述3个事务请求的产生过程中,还可以产生xID为2的事务请求,例如,包括事务请求4和事务请求5。不同xID的事务请求的产生过程可以是相互独立的。假设上述各个事务请求的产生顺序从早到晚依次为:事务请求1、事务请求4、事务请求2、事务请求3和事务请求5,则同一xID的事务请求需要按照次序依次被应答,例如,事务请求1的应答时间应早于事务请求2,事务请求2的应答时间应早于事务请求3,事务请求4的应答时间应早于事务请求5。不同xID的事务请求的应答时间可以按照任意次序,例如,事务请求4的应答时间可以早于事务请求1,也可以晚于事务请求2。因此,上述各个事务请求的应答顺序可以是:事务请求1、事务请求2、事务请求4、事务请求5和事务请求3,或者是事务请求4、事务请求5、事务请求1、事务请求2和事务请求3等情况。For example, a transaction request with xID of 1 includes transaction request 1, transaction request 2 and transaction request 3. During the generation process of the above three transaction requests, a transaction request with xID of 2 can also be generated, for example, including transaction request 4 and transaction request Request 5. The generation process of transaction requests of different xIDs may be independent of each other. Assuming that the order of generation of the above transaction requests is from early to late: transaction request 1, transaction request 4, transaction request 2, transaction request 3 and transaction request 5, then the transaction requests of the same xID need to be answered in order, for example, The response time of transaction request 1 should be earlier than transaction request 2, the response time of transaction request 2 should be earlier than transaction request 3, and the response time of transaction request 4 should be earlier than transaction request 5. The response times of transaction requests with different xIDs may be in any order. For example, the response time of transaction request 4 may be earlier than transaction request 1, or may be later than transaction request 2. Therefore, the response sequence of each of the above transaction requests can be: transaction request 1, transaction request 2, transaction request 4, transaction request 5 and transaction request 3, or transaction request 4, transaction request 5, transaction request 1, transaction request 2 and Transaction request 3 and so on.
每接收到一个事务请求,可以将这个事务请求的信息存储到链表的一个节点中,也就是存储到该节点对应的存储单元中。其中,链表是一种在物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。一个链表中的各个节点可以存储同一标签的多个事务请求的信息。示例性的,所述信息可以包括一种或多种信息,其中,一种信息表示总线事务请求的信息,包括但不限于事务请求的类型、标签、事件请求时的时间戳中的至少一者。所述信息还可以包括指示下一个节点的位置的信息,也就是链表的指针,若该节点是链表的尾部,则不考虑指针的内容。通过将同一标签的各个事务请求的信息存储在同一链表的不同节点,由于链表的各个节点通过指针相互链接,因此,在对系统芯片进行性能监控时,无需对各个事务请求的标签进行逐一比较,只需先找到该事务请求对应的链表,再从链表的各个节点中查找信息,提高了监控效率。进一步地,具有不同标签的多个事务请求的信息可以存储在不同的链表中。Each time a transaction request is received, the information of the transaction request can be stored in a node of the linked list, that is, in a storage unit corresponding to the node. Among them, the linked list is a non-consecutive and non-sequential storage structure on the physical storage unit, and the logical order of data elements is realized by the link order of pointers in the linked list. Each node in a linked list can store the information of multiple transaction requests of the same label. Exemplarily, the information may include one or more kinds of information, wherein one kind of information represents the information of the bus transaction request, including but not limited to at least one of the type of the transaction request, the tag, and the timestamp when the event is requested. . The information may also include information indicating the position of the next node, that is, the pointer of the linked list. If the node is the tail of the linked list, the content of the pointer is not considered. By storing the information requested by each transaction of the same label in different nodes of the same linked list, since the nodes of the linked list are linked to each other through pointers, when monitoring the performance of the system chip, there is no need to compare the labels of each transaction request one by one. It is only necessary to find the linked list corresponding to the transaction request, and then search for information from each node of the linked list, which improves the monitoring efficiency. Further, information of multiple transaction requests with different tags can be stored in different linked lists.
在一些实施例中,为了便于从链表中查找信息,可以将同一标签的多个事务请求的信息按照特定顺序存储到链表的各个节点分别对应的存储单元中。所述特定顺序可以是检测到所述多个事务请求的时间先后顺序。例如,对于同一标签,检测到的第一次事务请求的信息存储在链表中的第一节点,并将第一节点表示为表头节点;检测到的第二次事务请求的信息存储在链表中的第二节点中,并在表头节点中添加第二节点的地址,也即将表头节点的指针指向第二节点;以此类推。类似地,为了便于从链表中提取信息,具有所述第一标签的多个事务请求的信息按照所述多个事务请求在所述第一链表中的顺序依次被提取。例如,先从所述第一链表的表头节点提取事务请求的信息;根据该表头节点的指针找到下一节点,并将下一节点设置为新的表头节点;在需要提取第一标签的下一个事务请求的信息时,再从新的表头节点提取该事务请求的信息,以此类推。In some embodiments, in order to facilitate searching for information from the linked list, the information requested by multiple transactions of the same tag may be stored in storage units corresponding to each node of the linked list in a specific order. The specific order may be a chronological order in which the plurality of transaction requests are detected. For example, for the same label, the detected information of the first transaction request is stored in the first node in the linked list, and the first node is represented as the header node; the detected information of the second transaction request is stored in the linked list and add the address of the second node in the header node, that is, the pointer of the header node points to the second node; and so on. Similarly, in order to facilitate extracting information from the linked list, the information of multiple transaction requests with the first tag is sequentially extracted according to the sequence of the multiple transaction requests in the first linked list. For example, first extract the information of the transaction request from the header node of the first linked list; find the next node according to the pointer of the header node, and set the next node as the new header node; extract the first label when needed When the information requested by the next transaction is obtained, the information requested by the transaction is extracted from the new header node, and so on.
在每条链表中仅存储一个标签的事务请求的信息的情况下,本公开实施例的各条链表的深度(即链表包括的节点的数量)可以相同,也可以不同。在一些实施例中,在检测到某个事物请求的情况下,将该事物请求的信息存储到链表中,而在检测到针对该事物请求的应答的情况下,将该事物请求的信息从链表中提取出来,因此,链表可以存储当前未应答的事物请求的信息。In the case where only one tag's transaction request information is stored in each linked list, the depths of each linked list (ie, the number of nodes included in the linked list) in the embodiments of the present disclosure may be the same or different. In some embodiments, if a transaction request is detected, the information of the transaction request is stored in the linked list, and if a response to the transaction request is detected, the information of the transaction request is removed from the linked list Extracted from , therefore, the linked list can store information about currently unanswered transaction requests.
在一些实施例中,链表中每个节点可以用于存储一个或多个事务请求的信息,其中,在每个节点用于存储一个事务请求的信息的情况下,所述第一链表中当前包括的节点的数量可以等于当前未应答的、具有所述第一标签的事务请求的数量。例如,当前未应答的xID为1的事务请求有4条,则xID为1的事务请求对应的链表的深度为4,即,该链表包括4个节点。又例如,当前未应答的xID为2的事务请求有5条,则xID为2的事务请求对应的链表的深度为5。In some embodiments, each node in the linked list may be used to store information of one or more transaction requests, wherein, in the case where each node is used to store information of one transaction request, the first linked list currently includes The number of nodes may be equal to the number of currently unanswered transaction requests with the first label. For example, if there are currently 4 unanswered transaction requests with xID of 1, the depth of the linked list corresponding to the transaction request with xID of 1 is 4, that is, the linked list includes 4 nodes. For another example, if there are currently 5 unanswered transaction requests with xID of 2, the depth of the linked list corresponding to the transaction request with xID of 2 is 5.
在芯片系统设计中,可以允许通信总线最大支持128个未应答的事务请求,而这128个事务请求既可以是同一xID的事务请求,也可以128个不同xID的事务请求,还可以是少于128个xID的事务请求。在采用链表结构存储事务请求时,在128个事务请求为同一个xID的事务请求的情况下,则要求每条链表最多支持128个节点;在128个事务 请求为不同xID的事务请求的情况下,即要求最多支持128条链表。如果为每个xID的事务请求设计一个固定深度为128个节点的存储单元,则需要128*128个存储单元,以满足同一xID事务的顺序请求与应答和不同xID事务的乱序请求与应答的要求。其中,一个节点的存储单元可以是一个触发器存储阵列行。在这种情况下,未应答的事务请求包含的xID的数量在1到128之间,同时每条链路的深度在128到1之间,则触发器存储阵列行的数量为128*128。其中,同时使用的触发器存储阵列行最多为128个,剩余的(128-1)*128个触发器存储阵列行都空着的,但是不同的事务请求情况下,这(128-1)*128的触发器存储阵列行分布状况不同。例如,这128个触发器存储阵列行存储的可以是同一xID的128个事务请求对应的链表,则(128-1)*128的触发器存储阵列行是其他127个xID的存储单元。又例如,这128个触发器存储阵列行存储的可以是128个xID的事务请求对应的链表,则(128-1)*128的触发器存储阵列行是这128个xID除了表头节点外的存储单元。In the chip system design, the communication bus can be allowed to support a maximum of 128 unanswered transaction requests, and these 128 transaction requests can be either transaction requests with the same xID, or 128 transaction requests with different xIDs, or less than 128 xID transaction requests. When using a linked list structure to store transaction requests, if 128 transaction requests are transaction requests with the same xID, each linked list is required to support a maximum of 128 nodes; in the case where 128 transaction requests are transaction requests with different xIDs , that is, a maximum of 128 linked lists are required. If a storage unit with a fixed depth of 128 nodes is designed for each xID transaction request, 128*128 storage units are required to satisfy the sequential request and response of the same xID transaction and the out-of-order request and response of different xID transactions. Require. The storage unit of one node may be a row of flip-flop storage arrays. In this case, the number of xIDs contained in unanswered transaction requests is between 1 and 128, and the depth of each link is between 128 and 1, and the number of trigger storage array rows is 128*128. Among them, the maximum number of trigger storage array rows used at the same time is 128, and the remaining (128-1)*128 trigger storage array rows are empty, but in the case of different transaction requests, this (128-1)* 128 flip-flop memory array row distribution is different. For example, the 128 trigger storage array rows may store the linked list corresponding to 128 transaction requests of the same xID, then the trigger storage array row of (128-1)*128 is the other 127 xID storage units. For another example, the 128 trigger storage array rows can store the linked list corresponding to 128 xID transaction requests, then the (128-1)*128 trigger storage array row is the 128 xIDs except the header node. storage unit.
在一些实施例中,为了进一步节省存储单元,可以使至少两个链表的节点共用多个存储单元,其中,每个存储单元用于存储链表的一个节点。也就是说,上述多个存储单元既可以分配给xID为1的链表的各个节点,也可以分配给xID为2的链表的各个节点,也可以分别分配给不同链表中的节点。该分配是动态的,根据每个事务请求以及应答,时时分配/回收节点。具体来说,在将所述第一事务请求的信息存储到所述第一链表时,可以为所述第一事务请求所对应的节点分配存储单元,以使分配给所述第一链表的存储单元的数量与所述第一链表当前包括的节点的数量相匹配。一个链表中包括几个节点,就为该链表分配几个存储单元。所有可供分配的存储单元的总数与未应答的事务请求的最大数量相等。也就是所述多个存储单元的个数与总线协议支持的未应答的事务请求的最大数量相等。In some embodiments, in order to further save storage units, the nodes of at least two linked lists may share a plurality of storage units, wherein each storage unit is used to store one node of the linked list. That is to say, the above-mentioned multiple storage units can be allocated to each node of the linked list with xID of 1, can also be allocated to each node of the linked list of xID of 2, or can be allocated to nodes in different linked lists respectively. The allocation is dynamic, and nodes are allocated/reclaimed from time to time based on each transaction request and response. Specifically, when the information of the first transaction request is stored in the first linked list, a storage unit may be allocated to the node corresponding to the first transaction request, so that the storage unit allocated to the first linked list The number of cells matches the number of nodes currently included in the first linked list. When a linked list includes several nodes, several storage units are allocated for the linked list. The total number of all allocated storage units is equal to the maximum number of unanswered transaction requests. That is, the number of the plurality of storage units is equal to the maximum number of unanswered transaction requests supported by the bus protocol.
在这种情况下,链表中每个节点存储的信息必须包括事务请求的标签xID。更进一步的,存储的信息还可以包括其他指示信息,如指示存储单元是否有效的信息、指示是否为表头的信息、指示是否为表尾的信息、指示下一个节点的位置的信息等。In this case, the information stored by each node in the linked list must include the tag xID of the transaction request. Further, the stored information may also include other indication information, such as information indicating whether the storage unit is valid, information indicating whether it is a header, information indicating whether it is a footer, information indicating the location of the next node, and the like.
在本公开实施例中,在一个链表创建了一个新的节点的情况下,可以为该新的节点分配一个存储单元,而在一个链表中的某个节点中包括的事物请求的信息被提取的情况下,可以将为该节点分配的存储单元回收,例如,在存储单元中设置指示存储单元是否有效的一个信息域,该信息域包括指示该存储单元有效或无效的指示信息,以便于在有需要的情况下,可以将指示信息为无效的存储单元分配给其他节点。In the embodiment of the present disclosure, when a new node is created in a linked list, a storage unit may be allocated to the new node, and the information of the transaction request included in a certain node in the linked list is extracted. In this case, the storage unit allocated to the node can be reclaimed, for example, an information field indicating whether the storage unit is valid or not is set in the storage unit, and the information field includes indication information indicating whether the storage unit is valid or invalid, so as to facilitate If necessary, the storage unit indicating that the information is invalid can be allocated to other nodes.
本公开采用多条链表,分配给硬件的链表深度是不固定的,基于xID事务请求而动态分配,一条链表的深度支持在1到128范围变化。同时,总线系统最大支持128个未应答事务请求,分配为最多的128条xID链表,不同xID的事务请求对应的节点共享存储空间,共享存储空间大小为128个存储单元,如触发器存储阵列行,通过链表完成事务的顺序请求与应答和事务的乱序请求与应答。这样,既能够为不同的链表分配足够的存储单元,又能够减少系统总线性能监控模块所需的存储单元的数量,从而降低了芯片的硬件成本。这种由多个链表共享存储空间的方式称为基于共享存储的多链表结构。The present disclosure adopts multiple linked lists, and the depth of the linked list allocated to the hardware is not fixed, but is dynamically allocated based on the xID transaction request, and the depth support of a linked list varies from 1 to 128. At the same time, the bus system supports a maximum of 128 unanswered transaction requests, which are allocated as a maximum of 128 xID linked lists. The nodes corresponding to transaction requests of different xIDs share storage space, and the size of the shared storage space is 128 storage units, such as trigger storage array rows. , through the linked list to complete the sequential request and response of the transaction and the out-of-order request and response of the transaction. In this way, not only enough storage units can be allocated for different linked lists, but also the number of storage units required by the system bus performance monitoring module can be reduced, thereby reducing the hardware cost of the chip. This way of sharing storage space by multiple linked lists is called a multi-linked list structure based on shared storage.
需要说明的是,本公开不限定实现存储单元的硬件形式,可以是触发器存储阵列行,可以是寄存器存储阵列行,还可以是其他硬件电路。以下为简单起见,以触发器存储阵列行为例进行说明。It should be noted that the present disclosure does not limit the hardware form for realizing the storage unit, which may be a flip-flop storage array row, a register storage array row, or other hardware circuits. For the sake of simplicity, the following is an example of a flip-flop storage array row.
在未采用链表结构存储事务请求的信息的情况下,如采用128个触发器存储阵列行(简称阵列行)存储所有xID的事务请求的信息,在提取事务请求的信息时,需要从128个触发器存储阵列行提取有效行,对各个有效行中的事务请求对应的xID进行筛选,最后再从筛选出的阵列行中,选择时间戳最小值对应的阵列行。在此过程中,会引入大量的算术运算和/或逻辑运算,每一步(包括提取有效行、选择时间戳最小值对应的阵列行等)都需要考虑128种情况,逻辑设计非常复杂,运算量也非常大。In the case where the linked list structure is not used to store the transaction request information, if 128 trigger storage array rows (referred to as array rows) are used to store the transaction request information of all xIDs, when extracting the transaction request information, it is necessary to start from 128 triggers. The memory array row extracts valid rows, filters the xIDs corresponding to the transaction requests in each valid row, and finally selects the array row corresponding to the minimum timestamp from the filtered array rows. In this process, a large number of arithmetic operations and/or logical operations will be introduced, and each step (including extracting valid rows, selecting the array row corresponding to the minimum timestamp value, etc.) needs to consider 128 cases. The logic design is very complicated, and the amount of operations Also very large.
在本公开的一些实施例中,可以动态地调节链表中的节点,在检测到所述第一事务请求的情况下,可以为所述第一事务请求创建新的节点;并将创建的节点链接到所述第一链表当前的表尾节点。也就是说,每检测到一个事务请求,就在对应链表中为该事务请求创建新的节点,将创建的新的节点链接到对应链表的表尾节点,成为该链表的新的表尾节点。这样,链表中的各个节点所对应的事务请求按照检测到的时间顺序排列,在提取事务请求的信息时,可以直接将链表的表头节点对应的存储单元提取出来,无需经过复杂的算术运算和逻辑运算,提高了处理效率。In some embodiments of the present disclosure, the nodes in the linked list can be dynamically adjusted, and when the first transaction request is detected, a new node can be created for the first transaction request; and the created node can be linked to the current tail node of the first linked list. That is to say, every time a transaction request is detected, a new node is created in the corresponding linked list for the transaction request, and the created new node is linked to the tail node of the corresponding linked list to become the new tail node of the linked list. In this way, the transaction requests corresponding to each node in the linked list are arranged in the order of the detected time. When extracting the information of the transaction request, the storage unit corresponding to the head node of the linked list can be directly extracted without going through complex arithmetic operations and Logical operations improve processing efficiency.
在一些实施例中,系统总线性能监控模块的控制器在检测到事务应答的情况下,可以基于该事务应答包含的标签,确定该事务应答针对的事务请求的对应链表,并从该对应链表的表头节点提取该事务请求的信息。例如,可以从链表的表头节点对应的存储单元提取标签为xIDn的事务请求的产生时间,并计算标签为xIDn的事务应答的应答时间与标签为xIDn的事务请求的产生时间之间的时间间隔,从而统计出标签为xIDn的事务请求与标签为xIDn的事务应答之间的延迟。在实际应用中,可以统计每个事务请求与事务应答之间的延迟,也可以统计一段时间内产生的各个标签的事务请求与对应标签的事务应答之间的平均延迟。本领域技术人员可以理解,根据链表中包括的事务请求的信息,还可以统计其他参数,此处不再赘述。In some embodiments, when detecting a transaction response, the controller of the system bus performance monitoring module may determine a corresponding linked list of the transaction request for which the transaction response is directed based on the tag contained in the transaction response, and retrieve the corresponding linked list from the corresponding linked list. The header node extracts the information requested by the transaction. For example, the generation time of the transaction request labeled xIDn can be extracted from the storage unit corresponding to the head node of the linked list, and the time interval between the response time of the transaction response labeled xIDn and the generation time of the transaction request labeled xIDn can be calculated. , so as to count the delay between the transaction request with the tag xIDn and the transaction response with the tag xIDn. In practical applications, the delay between each transaction request and the transaction response can be counted, and the average delay between the transaction request of each tag and the transaction response of the corresponding tag generated within a period of time can also be counted. Those skilled in the art can understand that other parameters may also be counted according to the transaction request information included in the linked list, which will not be repeated here.
在一些实施例中,已分配的一个存储单元存储有事务请求的标签、系统总线事务请求的信息以及指示信息。其中,指示信息包括:用于指示所述存储单元是否为有效存储单元的第一指示信息,用于指示当前节点是否为所属链表的表尾节点的第二指示信息,用于指示当前节点是否为所属链表的表头节点的第三指示信息,用于指示存储当前节点的下一个节点的存储单元的地址的第四指示信息,其中,当前节点为与该存储单元对应的节点。In some embodiments, one of the allocated storage units stores the tag of the transaction request, the information of the system bus transaction request, and the indication information. The indication information includes: first indication information for indicating whether the storage unit is a valid storage unit, second indication information for indicating whether the current node is the tail node of the linked list to which it belongs, and second indication information for indicating whether the current node is a The third indication information of the header node of the linked list is used to indicate the fourth indication information of the address of the storage unit storing the next node of the current node, wherein the current node is the node corresponding to the storage unit.
上述指示信息可以携带在链表的节点中。一些实施例的链表结构如图2所示,为了灵活利用128个触发器存储阵列行,也就是共享存储的多链表结构的触发器存储阵列行,采用共享存储的多链表结构来存储这些信息,图中方框内区域为事务请求需要存储的信息空间,其余是为实现共享存储而添加的扩展域。The above indication information may be carried in the nodes of the linked list. The linked list structure of some embodiments is shown in FIG. 2. In order to flexibly utilize 128 trigger storage array rows, that is, trigger storage array rows of a shared storage multi-linked list structure, a shared storage multi-linked list structure is used to store these information, The area in the box in the figure is the information space that needs to be stored in the transaction request, and the rest are the extension fields added to realize the shared storage.
图2中的一行,如标识为0的一行,标识一个触发器存储阵列行,由多个触发器构 成。触发器阵列行的位宽由具体的信息内容确定。A row in Fig. 2, such as the row marked as 0, indicates a row of the flip-flop memory array, which is composed of a plurality of flip-flops. The bit width of the flip-flop array row is determined by the specific information content.
信息空间中可包括节点对应的标签xID以及系统总线事务请求的信息AXI INFO。xID可以是16位事务请求的标识符,为总线支持的任一xID值。AXI INFO的宽度依照设计需要而定,一般包括事务请求产生时的时间戳(TIMESLOT)、总线的类型、猝发传输的粒度(BURST SIZE)、猝发传输的类型(BURST TYPE)、保护类型(PROT)、缓存类型(CACHE)、请求地址(ADDRESS)等。其中,猝发传输的粒度用于确定一次猝发传输过程中传输的事务请求的大小;猝发传输的类型用于表示一次猝发传输过程中传输的事务请求的属性;保护类型用于指示系统芯片中的事务访问的安全模式以及等级;缓存类型用于指示事务请求的存储方式,是先缓存再从缓存中存储到存储单元中,还是直接存储到存储单元中;请求地址用于指示猝发传输的事务请求的起始存储位置。The information space may include the label xID corresponding to the node and the information AXI INFO of the system bus transaction request. xID can be a 16-bit transaction request identifier, any xID value supported by the bus. The width of AXI INFO depends on the design needs, generally including the time stamp (TIMESLOT) when the transaction request is generated, the type of the bus, the granularity of the burst transmission (BURST SIZE), the type of the burst transmission (BURST TYPE), and the protection type (PROT) , cache type (CACHE), request address (ADDRESS), etc. Among them, the granularity of burst transmission is used to determine the size of the transaction request transmitted in a burst transmission process; the type of burst transmission is used to indicate the attribute of the transaction request transmitted in a burst transmission process; the protection type is used to indicate the transaction request in the system chip The security mode and level of access; the cache type is used to indicate the storage method of the transaction request, whether it is cached first and then stored in the storage unit from the cache, or directly stored in the storage unit; the request address is used to indicate the transaction request of the burst transmission. Start storage location.
扩展域可包括V域、T域、H域和指针(Next Pointer,NPTR)域。其中,第一指示信息包括在节点的V域中,第二指示信息包括在节点的T域中,第三指示信息包括在节点的H域中,第四指示信息包括在节点的指针域中。The extension fields may include V fields, T fields, H fields and pointer (Next Pointer, NPTR) fields. The first indication information is included in the V domain of the node, the second indication information is included in the T domain of the node, the third indication information is included in the H domain of the node, and the fourth indication information is included in the pointer domain of the node.
在一些实施例中,V域可以用1比特来表示,例如,用“0”表示存储单元无效,用“1”表示存储单元有效。在存储单元中存储的信息被提取的情况下,或在该存储单元未被分配的情况下,如初始化时,所述存储单元为无效存储单元,在将存储单元分配给节点,且存储单元中存储的信息未被提取的情况下,所述存储单元为有效存储单元。T域也可以用1比特来表示,例如,用“0”表示不是表尾节点,用“1”表示是表尾节点。H域也可以用1比特来表示,例如,用“0”表示不是表头节点,用“1”表示是表头节点。NPTR域的宽度由各个链表所共享的存储单元的深度决定。例如,在可用的存储空间总数为128个的情况下,所述第四指示信息的长度可以是7比特,在可用的存储空间总数为256个的情况下,所述第四指示信息的长度可以是8比特。在节点为链表的表尾节点的情况下,则不关心该节点中NPTR域的内容。在将一个新的节点链接到链表当前的表尾节点之后,可以基于存储该新的节点的存储单元的地址,对当前的表尾节点的NPTR域进行更新。In some embodiments, the V field may be represented by 1 bit, eg, "0" to indicate that the memory cell is invalid, and "1" to indicate that the memory cell is valid. In the case where the information stored in the storage unit is extracted, or when the storage unit is not allocated, such as during initialization, the storage unit is an invalid storage unit. If the stored information is not extracted, the storage unit is an effective storage unit. The T field can also be represented by 1 bit, for example, "0" is used to indicate that it is not a footer node, and "1" is used to indicate that it is a footer node. The H field can also be represented by 1 bit, for example, "0" is used to indicate that it is not a header node, and "1" is used to indicate that it is a header node. The width of the NPTR field is determined by the depth of the storage unit shared by each linked list. For example, when the total number of available storage spaces is 128, the length of the fourth indication information may be 7 bits, and when the total number of available storage spaces is 256, the length of the fourth indication information may be is 8 bits. If the node is the tail node of the linked list, the content of the NPTR field in the node is not concerned. After a new node is linked to the current tail node of the linked list, the NPTR field of the current tail node may be updated based on the address of the storage unit in which the new node is stored.
通过上述扩展,为事务请求存储成链表提供了基础。当有新的事务请求需要存储时,可以根据存储单元中存储的信息确定第一事务请求所需存储的第一链表以及第一链表当前的表尾节点。如检测到插入第一事务请求时,为第一事务请求创建新的节点,确定所创建的节点对应的存储单元,并将所创建的节点链接到第一链表当前的表尾节点。在确定表尾节点时,可以并行查询多个存储单元中每个存储单元存储的第一指示信息、第二指示信息和标签信息,以确定第一链表是否为空,以及确定所述第一链表当前的表尾节点对应的第一存储单元。Through the above expansion, it provides a basis for storing transaction requests as a linked list. When a new transaction request needs to be stored, the first linked list to be stored for the first transaction request and the current tail node of the first linked list can be determined according to the information stored in the storage unit. If the insertion of the first transaction request is detected, a new node is created for the first transaction request, the storage unit corresponding to the created node is determined, and the created node is linked to the current tail node of the first linked list. When determining the footer node, the first indication information, the second indication information and the label information stored in each of the plurality of storage units may be queried in parallel to determine whether the first linked list is empty, and to determine whether the first linked list is empty. The first storage unit corresponding to the current footer node.
可以根据所述多个存储单元中每个存储单元存储的第一指示信息,将所创建的节点中包括的所述第一事务请求的信息存储至所述多个存储单元中的一个无效存储单元中,该无效存储单元即为所创建的节点对应的存储单元。在一些实施例中,可以将创建的节点随机存储到多个无效存储单元中的任意一个无效存储单元。在另一些实施例中,可以 将创建的节点存储到编号最小的无效存储单元中。在再一些实施例中,可以将创建的节点存储到编号最大的无效存储单元中。本公开对此不做限制。The information of the first transaction request included in the created node may be stored in an invalid storage unit in the plurality of storage units according to the first indication information stored in each of the plurality of storage units , the invalid storage unit is the storage unit corresponding to the created node. In some embodiments, the created node may be randomly stored in any invalid storage unit among the plurality of invalid storage units. In other embodiments, the created node may be stored in the lowest numbered invalid storage location. In still other embodiments, the created node may be stored in the highest numbered invalid storage unit. This disclosure does not limit this.
可选地,可以将各个存储单元中的标签xID与第一事务请求的标签进行比较,得到比较结果,例如两个标签相同则比较结果可以是1,两个标签不同则比较结果可以是0,根据各个存储单元中存储的第一指示信息、各个存储单元的比较结果和各个存储单元的第二指示信息,分别进行逻辑操作,如逻辑与操作,从而得到表尾节点。Optionally, the tag xID in each storage unit can be compared with the tag requested by the first transaction to obtain a comparison result. For example, if the two tags are the same, the comparison result may be 1, and if the two tags are different, the comparison result may be 0. According to the first indication information stored in each storage unit, the comparison result of each storage unit, and the second indication information of each storage unit, logical operations, such as logical AND operation, are respectively performed, thereby obtaining the footer node.
在确定表尾节点之后,当所述第一链表不为空的情况下,可以通过以下方式来将创建的节点链接到所述第一链表当前的表尾节点。例如,可以将第一存储单元的第四指示信息更新为所创建的节点的信息,也就是该创建的节点对应的存储单元。并且,可以将第一存储单元的第二指示信息更新为第一指示状态,第一指示状态表示对应的节点不是所属链表的表尾节点。假设第一链表当前包括N个节点,节点N为第一链表当前的表尾节点,在将创建的节点链接到第一链表的表尾节点之后,节点N就不再是所述第一链表的表尾节点了,因此,可以将节点N对应的第二指示信息更新为第一指示状态。进一步的,可以将所述创建的节点对应的存储单元中的第二指示信息设置为第二指示状态,第二指示状态表示对应的节点是是所属链表的表尾节点。假设第一链表当前包括N个节点,节点N为第一链表当前的表尾节点,在将创建的节点链接到第一链表的表尾节点之后,创建的节点即成为了所述第一链表的表尾节点,因此可以将创建的节点对应的第二指示信息更新为第二指示状态。After the tail node is determined, when the first linked list is not empty, the created node may be linked to the current tail node of the first linked list in the following manner. For example, the fourth indication information of the first storage unit may be updated to the information of the created node, that is, the storage unit corresponding to the created node. In addition, the second indication information of the first storage unit may be updated to a first indication state, where the first indication state indicates that the corresponding node is not the tail node of the linked list to which it belongs. Assuming that the first linked list currently includes N nodes, and node N is the current tail node of the first linked list, after the created node is linked to the tail node of the first linked list, node N is no longer a member of the first linked list. The end node of the table is reached. Therefore, the second indication information corresponding to the node N can be updated to the first indication state. Further, the second indication information in the storage unit corresponding to the created node may be set to a second indication state, and the second indication state indicates that the corresponding node is the tail node of the linked list to which it belongs. Assuming that the first linked list currently includes N nodes, and node N is the current tail node of the first linked list, after the created node is linked to the tail node of the first linked list, the created node becomes the first linked list Therefore, the second indication information corresponding to the created node can be updated to the second indication state.
通过上述方式,能够使各个事务请求按照被检测到的顺序依次存储到链表的各个节点中,从而在提取事务请求的信息时,只需找到链表的表头节点,即可从表头节点中提取事务请求的信息。Through the above method, each transaction request can be stored in each node of the linked list in the order in which it is detected, so that when extracting the information of the transaction request, only the header node of the linked list can be found, and then the data can be extracted from the header node. Information about the transaction request.
上述确定表尾以及将节点链接到表尾节点的具体执行的过程如下。The specific execution process of determining the table footer and linking the node to the table footer node is as follows.
(1)基于各个触发器存储阵列行中的V域,通过低(高)位优先译码的方法,确定标签为xIDn的第一事务请求需要存储的位置。(1) Based on the V field in each flip-flop storage array row, determine the location where the first transaction request tagged as xIDn needs to be stored by means of low (high) bit priority decoding.
(2)基于并行轮询的方法,找到xIDn对应的链表的表尾节点。(2) Based on the parallel polling method, find the tail node of the linked list corresponding to xIDn.
(3)更新xIDn事务请求的表尾节点的中NPTR域为存储第一事务请求对应的节点的存储单元,同时将当前的表尾节点的T域置0。(3) The middle NPTR field of the table footer node of the update xIDn transaction request is a storage unit for storing the node corresponding to the first transaction request, and the T field of the current table footer node is set to 0 at the same time.
(4)基于第一事务请求的信息,更新对应存储单元的内容,将第一事务请求对应的节点的V域置1,T域置1,NPTR域不做更新。(4) Based on the information requested by the first transaction, update the content of the corresponding storage unit, set the V field of the node corresponding to the first transaction request to 1, set the T field to 1, and do not update the NPTR field.
在实际应用中,上述步骤(1)的实现方法前面已经进行了描述,此处不再赘述。和步骤(2)可以通过以下方式实现:将各个存储单元中存储的标签和第一事务请求的第一标签分别进行比较,得到第一比较结果,将每个存储单元的第一指示信息、第二指示信息和第一比较结果分别进行逻辑与运算,得到运算结果,确定该运算结果中“1”的位置,并根据“1”的位置确定表尾节点。具体来说,可以将各个节点对应的第一指示信息生成一个一维数组V,该一维数组V的长度为128,数组中的每个元素为1或者0, 分别用于表示存储对应节点的存储单元是或者不是有效存储单元。同理,可以将各个节点对应的第二指示信息生成一个一维数组T,该一维数组T的长度为128,数组中的每个元素为1或者0,分别用于表示对应节点是或者不是表尾节点。将各个节点中携带的标签与所述事务请求的标签进行比较得到第一比较结果,该第一比较结果也是用一个一维第一比较数组表示,该一维第一比较数组的长度为128。将该一维第一比较数组、一维数组V和一维数组T进行与运算,根据与运算的运算结果中1的位置,即可确定表尾节点。在所述第一事务请求对应的链表存在的情况下,也就是不为空的情况下,则该运算结果为128位的独热码,其“1”所在的位置最大为第127bit,最小为第0bit;在所述事务请求对应的链表不存在的情况下,也就是为空的情况下,则该运算结果为一个全0的值,步骤(2)中得到的表尾节点的地址可用一个7位指针来表示。通过算术运算得到所述7位指针的过程如下:In practical applications, the implementation method of the above step (1) has been described above, and will not be repeated here. And step (2) can be realized by the following way: compare the label stored in each storage unit and the first label of the first transaction request respectively, obtain the first comparison result, compare the first indication information of each storage unit, the first label of the first transaction request. The second indication information and the first comparison result are respectively logically ANDed to obtain the operation result, the position of "1" in the operation result is determined, and the end node of the table is determined according to the position of "1". Specifically, a one-dimensional array V can be generated from the first indication information corresponding to each node. The length of the one-dimensional array V is 128, and each element in the array is 1 or 0, which are respectively used to store the corresponding The storage unit is or is not a valid storage unit. Similarly, a one-dimensional array T can be generated from the second indication information corresponding to each node, the length of the one-dimensional array T is 128, and each element in the array is 1 or 0, which are used to indicate whether the corresponding node is or not. Footer node. A first comparison result is obtained by comparing the tag carried in each node with the tag of the transaction request, and the first comparison result is also represented by a one-dimensional first comparison array, and the length of the one-dimensional first comparison array is 128. An AND operation is performed on the one-dimensional first comparison array, the one-dimensional array V, and the one-dimensional array T, and the end node of the table can be determined according to the position of 1 in the operation result of the AND operation. If the linked list corresponding to the first transaction request exists, that is, if it is not empty, the operation result is a 128-bit one-hot code, and the position of "1" is the 127th bit at the maximum, and the minimum is The 0th bit; when the linked list corresponding to the transaction request does not exist, that is, when it is empty, the operation result is a value of all 0s, and the address of the tail node obtained in step (2) can be used as one 7-bit pointer to represent. The process of obtaining the 7-bit pointer through arithmetic operation is as follows:
当所述第一链表不为空,将与运算的运算结果减去1,得到第一运算结果。则在所述第一运算结果中,对应于独热码中“1”所在的位以及高于该位的值全部为0,而低于独热码“1”的位则全为1。对第一运算结果中的各个位进行求和,得到独热码中“1”的位置,最终得到的“1”所在的位数即为表尾节点所在存储单元的位置。例如,加法后得到28,表示第一运算结果中有28个“1”,则进一步表示独热码中的“1”的位置是第28bit,也就意味着第28个存储单元中存储的为所述第一目标链表的表尾节点。这样也就是得到了xIDn对应的第一存储单元的地址,该地址可以用一个7位指针来表示。When the first linked list is not empty, subtract 1 from the operation result of the AND operation to obtain the first operation result. Then, in the first operation result, the bit corresponding to "1" in the one-hot code and the value higher than the bit are all 0, and the bits lower than the one-hot code "1" are all 1. Each bit in the first operation result is summed to obtain the position of "1" in the one-hot code, and the final bit of "1" is the position of the storage unit where the tail node is located. For example, 28 is obtained after addition, which means that there are 28 "1"s in the first operation result, which further indicates that the position of "1" in the one-hot code is the 28th bit, which means that the 28th storage unit stores as The tail node of the first target linked list. In this way, the address of the first storage unit corresponding to xIDn is obtained, and the address can be represented by a 7-bit pointer.
如果所述运算结果不是独热码,而是0值,当所述第一链表为空。对于这种情况,将运算结果,也就是128位的全0值减去1,得到第一运算结果,该第一运算结果为128位的全“1”值,将128个“1”相加得到128,对于7位的指针,高位溢出,该7位指针中的每个比特均为0,也就是该7位指针的数值为0。由于独热码[0 0 0 …… 0 1]减去1之后的第一运算结果为128位的全0值,将第一运算结果中的各个位进行求和,得到的7位指针也为0。因此,7位指针为0时会对应上述两种情况,造成冲突。为解决冲突,将数值为0的7位指针填充链表时,需要将运算结果与128位的0进行比较,如果二者不同,则判定该7位指针所指示的节点为独热码[0 0 0 …… 0 1]对应的节点。若两者相同,则判定运算结果是0值,从而确定所述第一链表为空。在这种情况下,可以不执行上述步骤(3),而直接执行上述步骤(4)。此外,在步骤(4)中,还需要将所创建的节点对应的存储单元中的第三指示信息设置为第三指示状态,其中,所述第三指示状态用于表示对应节点是所属链表的表头节点。If the operation result is not a one-hot code, but a 0 value, when the first linked list is empty. In this case, subtract 1 from the operation result, that is, the 128-bit value of all 0s, to obtain the first operation result, which is the 128-bit value of all "1", and add 128 "1"s 128 is obtained. For a 7-bit pointer, if the high bit overflows, each bit in the 7-bit pointer is 0, that is, the value of the 7-bit pointer is 0. Since the first operation result after subtracting 1 from the one-hot code [0 0 0... 0. Therefore, when the 7-bit pointer is 0, it will correspond to the above two situations, resulting in a conflict. In order to resolve the conflict, when filling the linked list with a 7-bit pointer with a value of 0, it is necessary to compare the operation result with 128-bit 0. If the two are different, it is determined that the node indicated by the 7-bit pointer is a one-hot code [0 0 0 ... 0 1] corresponds to the node. If the two are the same, it is determined that the operation result is a 0 value, thereby determining that the first linked list is empty. In this case, the above-mentioned step (3) may not be performed, and the above-mentioned step (4) may be directly performed. In addition, in step (4), it is also necessary to set the third indication information in the storage unit corresponding to the created node to a third indication state, wherein the third indication state is used to indicate that the corresponding node belongs to the linked list header node.
在一些实施例中,本公开提供的方法还包括:在检测到提取第一事务请求的情况下,获取所述第一事务请求的第一标签;基于所述第一事务请求的第一标签,将所述第一事务请求的信息从所述第一链表的表头节点提取出来。In some embodiments, the method provided by the present disclosure further includes: in the case of detecting the extraction of the first transaction request, obtaining a first tag of the first transaction request; based on the first tag of the first transaction request, Extracting the information of the first transaction request from the header node of the first linked list.
类似地,当需要提取xIDn的事务信息时,可以并行查询多个存储单元中每个存储单元存储的第一指示信息、第三指示信息和标签信息,以确定所述第一链表当前的表头节点对应的第二存储单元,然后从第二存储单元中的系统总线事务请求的信息中提取xIDn的事务信息,并对操作中涉及的存储单位中的指示信息进行更改。其具体执行的 过程如下。Similarly, when the transaction information of xIDn needs to be extracted, the first indication information, the third indication information and the label information stored in each of the multiple storage units can be queried in parallel to determine the current header of the first linked list The second storage unit corresponding to the node then extracts the transaction information of xIDn from the information requested by the system bus transaction in the second storage unit, and changes the indication information in the storage unit involved in the operation. The specific implementation process is as follows.
(一)基于并行轮询的方法,找到标签为xIDn的第一事务请求的链表的表头节点所在的第二存储单元。(1) Based on the parallel polling method, find the second storage unit where the header node of the linked list of the first transaction request with the label xIDn is located.
(二)从该第二存储单元中提取标签为xIDn的事务请求的信息,并通过NPTR域获得下一个节点的位置,并将已提取信息的第二存储单元的V域置为0,H域置0。(2) Extract the information of the transaction request with the label xIDn from the second storage unit, and obtain the position of the next node through the NPTR field, and set the V field of the second storage unit of the extracted information to 0, and the H field Set to 0.
(三)将下一个节点的H域更新为1,指示下一个节点为xIDn对应的链表的表头节点。(3) Update the H field of the next node to 1, indicating that the next node is the head node of the linked list corresponding to xIDn.
在实际应用中,步骤(一)可以通过以下方式实现:将各个存储单元的标签和第一事务请求的第一标签分别进行比较,得到第二比较结果,将各个存储的第一指示信息、第三指示信息和第二比较结果分别进行与运算,得到初始运算结果,确定该初始运算结果中“1”的位置,并根据“1”的位置确定表头节点。如将所述初始运算结果减去1,得到第二运算结果;对第二运算结果中的各个位进行求和;根据所述求和的结果确定所述第二存储单元。具体可参照确定表尾节点对应的第一存储单元的方式来确定表头节点对应的第二存储单元,此处不再展开说明。In practical applications, step (1) can be implemented in the following manner: comparing the tags of each storage unit and the first tag of the first transaction request respectively, obtaining a second comparison result, and comparing the stored first indication information, The three indication information and the second comparison result are respectively ANDed to obtain an initial operation result, the position of "1" in the initial operation result is determined, and the header node is determined according to the position of "1". For example, 1 is subtracted from the initial operation result to obtain a second operation result; each bit in the second operation result is summed; and the second storage unit is determined according to the summation result. Specifically, the second storage unit corresponding to the header node may be determined by referring to the method of determining the first storage unit corresponding to the footer node, which will not be further described here.
本公开提供的方法,依据链表的表头节点判断在同一xIDn(xID为n的事务标签)事务请求中最早的事务请求,避免通过比较各事务请求的时间戳的实时计数器的值来获得最早的事务请求,从而节约了大量的运算逻辑。The method provided by the present disclosure judges the earliest transaction request in the same xIDn (transaction tag with xID n) transaction request according to the header node of the linked list, and avoids obtaining the earliest transaction request by comparing the value of the real-time counter of the timestamps of each transaction request. Transaction requests, thus saving a lot of computational logic.
事务请求的插入和提取过程如图3所示,基于共享存储的多链表结构的设计实现,主要由存储单元310和两个并行轮询模块构成,包括一个用于将检测到的事务请求插入链表的插入轮询模块321,和一个用于从链表中提取事务请求的信息的删除轮询模块322。其中,删除轮询模块322用于执行上述任一实施例中的用于从链表中提取事务请求的信息的方法,插入轮询模块321用于执行上述任一实施例中的用于将事务请求的信息插入链表的方法。具体的插入和提取方法详见上述实施例,此处不再赘述。The process of inserting and extracting transaction requests is shown in Figure 3. Based on the design and implementation of a multi-linked list structure with shared storage, it is mainly composed of a storage unit 310 and two parallel polling modules, including one for inserting detected transaction requests into the linked list. The insert polling module 321, and a delete polling module 322 for extracting transaction request information from the linked list. The deletion polling module 322 is configured to execute the method for extracting transaction request information from the linked list in any of the foregoing embodiments, and the insertion polling module 321 is configured to execute the method for extracting transaction request information from any of the foregoing embodiments. The method of inserting the information into the linked list. The specific insertion and extraction methods are detailed in the foregoing embodiments, which will not be repeated here.
本公开实施例的存储空间可以通过使用触发器存储阵列来实现,该存储空间的深度可以是128,宽度则依据总线协议以及统计需求定义。通过设计该存储阵列的外围电路,如与插入轮询模块321和删除轮询模块322相关联的电路,以并行遍历轮询的方式访问触发器存储阵列的V域,H域,xID域和T域中的部分或全部的状态,从而确定所述第一链表当前的表尾节点或者表头节点。对于事务请求写入xID对应的链表(或创建xID对应的新链表),以及读取应答事务为xID的链表,采用并行轮询的方式,逻辑设计如图4所示,其输入为128位的V域一维数组,即V[0:127],128位的节点的xID,即xID[0:127];以及128位的T域一维数组或者H域一维数组,即T[0:127]或者H[0:127]。需要注意的是,虽然为了简单起见xID表示为[0:127],但由于每个节点的xID是由多个比特来进行表示,所以节点的xID是多维数组。判断的过程如下(i取值0到127):The storage space of the embodiment of the present disclosure may be implemented by using a flip-flop storage array, the depth of the storage space may be 128, and the width is defined according to the bus protocol and statistical requirements. By designing the peripheral circuits of the memory array, such as the circuits associated with the insert polling module 321 and the delete polling module 322, the V domain, H domain, xID domain and T domain of the flip-flop memory array are accessed in a parallel traversal polling manner Part or all of the state in the domain, so as to determine the current tail node or head node of the first linked list. For the transaction request to write the linked list corresponding to xID (or create a new linked list corresponding to xID), and to read the linked list whose response transaction is xID, the parallel polling method is adopted. The logic design is shown in Figure 4, and its input is 128 bits. V-domain one-dimensional array, namely V[0:127], 128-bit node xID, namely xID[0:127]; and 128-bit T-domain one-dimensional array or H-domain one-dimensional array, namely T[0: 127] or H[0:127]. It should be noted that although xID is represented as [0:127] for simplicity, since the xID of each node is represented by multiple bits, the xID of a node is a multi-dimensional array. The judgment process is as follows (i takes value from 0 to 127):
(S1)通过V[i]判断存储阵列的第i行数据是否有效。(S1) Determine whether the data of the i-th row of the storage array is valid through V[i].
(S2)通过比较事务请求的标签xIDn与节点的xID[i]是否相等,判断存储阵列第i 行数据是否属于xIDn对应的链表。(S2) Determine whether the data in the i-th row of the storage array belongs to the linked list corresponding to xIDn by comparing whether the tag xIDn of the transaction request is equal to the xID[i] of the node.
(S3)通过T[i]判断存储阵列的第i行数据是否为链表的表尾节点,或通过H[i]判断存储阵列的第i行数据是否为链表的表头节点。(S3) Determine whether the i-th row data of the storage array is the tail node of the linked list through T[i], or determine whether the i-th row data of the storage array is the head node of the linked list through H[i].
(S4)经过上述三步后,得到128比特的独热码或者全0值,各个比特位分别记为Bit[0],Bit[1],……,Bit[127]。独热码中1的位置,即需要插入的链表的表尾节点或者需要提取的链表的表头节点。(S4) After the above three steps, a 128-bit one-hot code or an all-zero value is obtained, and each bit is recorded as Bit[0], Bit[1], . . . , Bit[127]. The position of 1 in the one-hot code, that is, the tail node of the linked list to be inserted or the head node of the linked list to be extracted.
(S5)基于128比特的独热码或者0值,执行减1操作,将得到的128比特Bit[0]’,Bit[1]’,……,Bit[127]’进行累加,即得到7位的链表的表头指针或者表尾指针PTR[6:0],该指针的取值范围为0到127,该指针指示表头节点或者表尾节点的地址/位置。(S5) Based on the 128-bit one-hot code or 0 value, a subtraction operation is performed, and the obtained 128-bit Bit[0]', Bit[1]', ..., Bit[127]' are accumulated, that is, 7 The head pointer or the tail pointer PTR[6:0] of the linked list of bits. The value of the pointer ranges from 0 to 127. The pointer indicates the address/location of the head node or the tail node.
需要说明的是,上述步骤(S1)到(S3)的执行顺序只是示意,本公开对此并不做限定。It should be noted that, the execution sequence of the above steps (S1) to (S3) is only for illustration, which is not limited in the present disclosure.
基于该方法的设计实现,可以支持统计不同xID的延迟信息,并支持不同类型的事务请求的统计,硬件设计的存储需求量少,计算延迟也较少。Based on the design and implementation of this method, it can support the statistics of delay information of different xIDs, and support the statistics of different types of transaction requests. The hardware design requires less storage and less computing delay.
如图5所示,本公开实施例还提供一种用于系统芯片性能监控的数据处理方法,所述方法包括以下步骤。As shown in FIG. 5 , an embodiment of the present disclosure further provides a data processing method for system chip performance monitoring, and the method includes the following steps.
步骤501:在检测到第一事务请求的情况下,在第一链表中为所述第一事务请求创建第一节点。Step 501: In the case of detecting the first transaction request, create a first node in the first linked list for the first transaction request.
步骤502:将所述第一事务请求的信息存储到为所述第一节点分配的存储单元中,其中,至少两个链表的节点共用多个存储单元。Step 502 : Store the information requested by the first transaction in a storage unit allocated for the first node, wherein at least two nodes of the linked list share a plurality of storage units.
在一些实施例中,所述多个存储单元的个数与系统芯片包括的总线协议中支持的未应答的事务请求的最大数量相等。In some embodiments, the number of the plurality of storage units is equal to the maximum number of unacknowledged transaction requests supported in the bus protocol included in the system chip.
在一些实施例中,每个存储单元用于存储链表的一个节点,分配给所述第一链表的存储单元的数量与所述第一链表当前包括的节点的数量相匹配。In some embodiments, each storage unit is used to store one node of the linked list, and the number of storage units allocated to the first linked list matches the number of nodes currently included in the first linked list.
在一些实施例中,为所述第一节点分配的存储单元存储包括以下指示信息:用于指示所述存储单元是否为有效存储单元的第一指示信息,用于指示所述第一节点是否为所述第一链表的表尾节点的第二指示信息,用于指示所述第一节点是否为所述第一链表的表头节点的第三指示信息,用于指示用于存储所述第一节点的下一个节点的存储单元的第四指示信息。In some embodiments, the storage unit storage allocated for the first node includes the following indication information: first indication information for indicating whether the storage unit is a valid storage unit, for indicating whether the first node is a valid storage unit The second indication information of the tail node of the first linked list is used to indicate whether the first node is the head node of the first linked list. The third indication information is used to indicate that the first node is used to store the first The fourth indication information of the storage unit of the next node of the node.
在一些实施例中,为所述第一节点分配的存储单元还存储事务请求的标签、系统总线事务请求的信息。In some embodiments, the storage unit allocated for the first node further stores the tag of the transaction request and the information of the system bus transaction request.
在一些实施例中,所述方法还包括:并行查询多个存储单元中每个存储单元存储的第一指示信息、第二指示信息和标签信息,以确定所述第一链表当前的表尾节点;和/或并行查询多个存储单元中每个存储单元存储的第一指示信息、第三指示信息和标签信息,以确定所述第一链表当前的表头节点。In some embodiments, the method further includes: querying the first indication information, the second indication information and the label information stored in each of the plurality of storage units in parallel to determine the current tail node of the first linked list and/or query the first indication information, the third indication information and the label information stored in each of the plurality of storage units in parallel to determine the current header node of the first linked list.
在一些实施例中,所述方法还包括:基于所述多个存储单元中存储的第一指示信息,为所述第一节点分配所述多个存储单元中的无效存储单元。In some embodiments, the method further includes: allocating an invalid storage unit of the plurality of storage units to the first node based on the first indication information stored in the plurality of storage units.
在一些实施例中,所述方法还包括:分别查询多个存储单元中存储的第一指示信息,以从所述多个存储单元中确定无效存储单元,所述存储单元的第一指示信息用于表示所述存储单元是否为有效存储单元。In some embodiments, the method further includes: querying the first indication information stored in the plurality of storage units respectively, so as to determine the invalid storage unit from the plurality of storage units, the first indication information of the storage unit is to indicate whether the storage unit is a valid storage unit.
在一些实施例中,每条链表均包括至少一个节点,用于存储具有一个标签的事务请求的信息。例如,链表1用于存储标签为xID1的事务请求的信息,链表2用于存储标签为xID2的事务请求的信息。In some embodiments, each linked list includes at least one node for storing information about a transaction request with a tag. For example, the linked list 1 is used to store the information of the transaction request with the tag xID1, and the linked list 2 is used to store the information of the transaction request with the tag xID2.
在一些实施例中,具有所述第一标签的多个事务请求的信息按照检测到所述多个事务请求的时间依次存储到所述第一链表的各个节点中;和/或具有所述第一标签的多个事务请求的信息按照所述多个事务请求在所述第一链表中的顺序依次被提取。In some embodiments, the information of the multiple transaction requests with the first tag is sequentially stored in each node of the first linked list according to the time when the multiple transaction requests are detected; and/or the information with the first tag is The information of multiple transaction requests of a tag is sequentially extracted according to the sequence of the multiple transaction requests in the first linked list.
在一些实施例中,所述第一链表中当前包括的节点的数量为当前未应答的、具有所述第一标签的事务请求的数量。In some embodiments, the number of nodes currently included in the first linked list is the number of currently unanswered transaction requests with the first label.
在一些实施例中,所述在第一链表中为所述第一事务请求创建第一节点,包括:为所述第一事务请求创建新的节点;将创建的节点链接到所述第一链表当前的表尾节点。In some embodiments, the creating a first node for the first transaction request in the first linked list includes: creating a new node for the first transaction request; linking the created node to the first linked list The current footer node.
在一些实施例中,所述将创建的节点链接到所述第一链表当前的表尾节点,包括:并行查询所述多个存储单元中每个存储单元存储的所述第一指示信息、所述第二指示信息和所述标签,以确定所述第一链表是否为空以及所述第一链表当前的表尾节点对应的第一存储单元;当所述第一链表不为空的情况下,将所述第一存储单元对应的第四指示信息更新为所述创的节点的存储单元;当所述第一链表不为空的情况下,将所述第一第一存储单元的第二指示信息更新为第一指示状态,其中,所述第二指示信息的第一指示状态用于表示对应节点不是所属链表的表尾节点;将所创建的节点对应的存储单元中的第二指示信息设置为第二指示状态,所述第二指示信息的第二指示状态用于表示对应节点为所属链表的表尾节点。In some embodiments, the linking the created node to the current tail node of the first linked list includes: querying in parallel the first indication information, all the stored information stored in each of the plurality of storage units The second indication information and the label are used to determine whether the first linked list is empty and the first storage unit corresponding to the current tail node of the first linked list; when the first linked list is not empty , update the fourth indication information corresponding to the first storage unit to the storage unit of the created node; when the first linked list is not empty, update the second storage unit of the first first storage unit The indication information is updated to the first indication state, wherein the first indication state of the second indication information is used to indicate that the corresponding node is not the tail node of the linked list to which it belongs; the second indication information in the storage unit corresponding to the created node is It is set to the second indication state, and the second indication state of the second indication information is used to indicate that the corresponding node is the tail node of the linked list to which it belongs.
在一些实施例中,所述方法还包括:在检测到提取第一事务请求的情况下,获取所述第一事务请求的第一标签;基于所述第一事务请求的第一标签,将所述第一事务请求的信息从所述第一链表的表头节点提取出来。In some embodiments, the method further comprises: in the case of detecting the extraction of the first transaction request, obtaining a first tag of the first transaction request; based on the first tag of the first transaction request, The information of the first transaction request is extracted from the header node of the first linked list.
在一些实施例中,将所述第一事务请求的信息从所述第一链表的表头节点提取出来包括:包括:并行查询所述多个存储单元中每个存储单元存储的所述第一指示信息、所述第三指示信息和所述标签,以确定所述第一链表当前的表头节点对应的第二存储单元;从所述第二存储单元中的系统总线事务请求的信息中提取所述第一事务请求的信息;更新所述存储单元的第一指示信息为第四指示状态,其中,所述第四指示状态用于表示所述第二存储空间是无效存储空间;将所述第二存储单元的第三指示信息更新为第五指示状态,其中,所述第三指示信息的第五指示状态用于表示对应节点不是所属链表的表头节点;根据所述第二存储单元中的第四指示信息,确定所述当前的表头节点的下一个节 点对应的存储单元,并将所确定的存储单元中的第三指示信息更新为第三指示状态,所述第三指示信息的第三指示状态用于表示对应节点是所属链表的表头节点。In some embodiments, extracting the information of the first transaction request from the header node of the first linked list includes: including: querying the first data stored in each of the plurality of storage units in parallel The indication information, the third indication information and the label are used to determine the second storage unit corresponding to the current header node of the first linked list; extracted from the information of the system bus transaction request in the second storage unit the information requested by the first transaction; the first indication information for updating the storage unit is a fourth indication state, wherein the fourth indication state is used to indicate that the second storage space is an invalid storage space; The third indication information of the second storage unit is updated to a fifth indication state, wherein the fifth indication state of the third indication information is used to indicate that the corresponding node is not the head node of the linked list to which it belongs; the fourth indication information, determine the storage unit corresponding to the next node of the current header node, and update the third indication information in the determined storage unit to the third indication state, the third indication information The third indication state is used to indicate that the corresponding node is the head node of the linked list to which it belongs.
本方法实施例中各步骤的细节详见前一方法实施例,此处不再赘述。For details of each step in this method embodiment, refer to the previous method embodiment, which is not repeated here.
本领域技术人员可以理解,在具体实施方式的上述方法中,各步骤的撰写顺序并不意味着严格的执行顺序而对实施过程构成任何限定,各步骤的具体执行顺序应当以其功能和可能的内在逻辑确定。Those skilled in the art can understand that in the above method of the specific implementation, the writing order of each step does not mean a strict execution order but constitutes any limitation on the implementation process, and the specific execution order of each step should be based on its function and possible Internal logic is determined.
如图6所示,本公开还提供一种用于系统芯片性能监控的数据处理装置,所述装置包括:控制器模块330,插入轮询模块321和链表存储单元310。其中,所述控制器模块330分别与所述插入轮询模块321和所述链表存储单元310相连,所述链表存储单元310与所述插入轮询模块321相连。所述控制器模块330用于在检测到第一事务请求的情况下,获取所述第一事务请求的信息,所述信息包括第一事务请求的第一标签。所述插入轮询模块321用于基于所述第一事务请求的第一标签,将所述第一事务请求的信息存储到链表存储单元310中与所述第一标签对应的第一链表中,其中,所述第一链表包括至少一个节点,所述第一链表的每个节点对应的存储单元存储一个具有所述第一标签的事务请求的信息。As shown in FIG. 6 , the present disclosure further provides a data processing apparatus for system chip performance monitoring, the apparatus includes: a controller module 330 , an insertion polling module 321 and a linked list storage unit 310 . Wherein, the controller module 330 is respectively connected to the insert polling module 321 and the linked list storage unit 310 , and the linked list storage unit 310 is connected to the insert polling module 321 . The controller module 330 is configured to acquire information of the first transaction request when the first transaction request is detected, where the information includes the first tag of the first transaction request. The insertion polling module 321 is configured to store the information of the first transaction request in the first linked list corresponding to the first tag in the linked list storage unit 310 based on the first tag of the first transaction request, Wherein, the first linked list includes at least one node, and a storage unit corresponding to each node of the first linked list stores information of a transaction request with the first label.
在一些实施例中,具有所述第一标签的多个事务请求的信息按照检测到所述多个事务请求的时间依次存储到所述第一链表的各个节点中;和/或具有所述第一标签的多个事务请求的信息按照所述多个事务请求在所述第一链表中的顺序依次被提取。In some embodiments, the information of the multiple transaction requests with the first tag is sequentially stored in each node of the first linked list according to the time when the multiple transaction requests are detected; and/or the information with the first tag is The information of multiple transaction requests of a tag is sequentially extracted according to the sequence of the multiple transaction requests in the first linked list.
在一些实施例中,所述第一链表中当前包括的节点的数量为当前未应答的、具有所述第一标签的事务请求的数量;和/或具有不同标签的事务请求的信息存储在不同的链表中。In some embodiments, the number of nodes currently included in the first linked list is the number of currently unanswered transaction requests with the first label; and/or the information of transaction requests with different labels is stored in different in the linked list.
在一些实施例中,至少两个链表的节点共用多个存储单元,其中,每个存储单元用于存储链表的一个节点,每个存储单元包括事务请求的标签、系统总线事务请求的信息以及以下指示信息:用于指示该存储单元是否为有效存储单元的第一指示信息,用于指示当前节点是否为所属链表的表尾节点的第二指示信息,用于指示当前节点是否为所属链表的表头节点的第三指示信息,用于指示存储当前节点的下一个节点的存储单元的地址的第四指示信息,其中,当前节点为与该存储单元对应的节点。In some embodiments, the nodes of at least two linked lists share a plurality of storage units, wherein each storage unit is used to store one node of the linked list, and each storage unit includes a tag of a transaction request, information of a system bus transaction request, and the following Indication information: the first indication information used to indicate whether the storage unit is a valid storage unit, the second indication information used to indicate whether the current node is the tail node of the linked list to which it belongs, and the second indication information used to indicate whether the current node is a table of the linked list to which it belongs The third indication information of the head node is used to indicate the fourth indication information of the address of the storage unit that stores the next node of the current node, wherein the current node is the node corresponding to the storage unit.
在一些实施例中,所述装置还包括:分配模块,所述分配模块与所述控制器模块和所述链表存储单元相连,所述分配模块用于在将所述第一事务请求的信息存储到所述第一链表时,为所述第一事务请求所对应的节点分配存储单元,以使分配给所述第一链表的存储单元的数量与所述第一链表当前包括的节点的数量相匹配。In some embodiments, the apparatus further includes: an allocation module, the allocation module is connected to the controller module and the linked list storage unit, and the allocation module is configured to store the information requested by the first transaction when When reaching the first linked list, allocate storage units to the nodes corresponding to the first transaction request, so that the number of storage units allocated to the first linked list is equal to the number of nodes currently included in the first linked list. match.
在一些实施例中,所述分配模块还用于为所述第一事务请求创建新的节点,并确定所创建的节点对应的存储单元;所述插入轮询模块还用于修改链表存储单元中相应的存储单元的指示信息,以将创建的节点链接到所述第一链表当前的表尾节点。In some embodiments, the allocation module is further configured to create a new node for the first transaction request, and determine a storage unit corresponding to the created node; the insertion polling module is further configured to modify the storage unit in the linked list The indication information of the corresponding storage unit, so as to link the created node to the current tail node of the first linked list.
在一些实施例中,所述插入轮询模块还用于:并行查询所述多个存储单元中每 个存储单元存储的所述第一指示信息、所述第二指示信息和所述标签,以确定所述第一链表是否为空以及所述第一链表当前的表尾节点对应的第一存储单元;当所述第一链表不为空的情况下,将所述第一存储单元中的第四指示信息更新为所创建的节点对应的存储单元;当所述第一链表不为空的情况下,将所述第一存储单元中的第二指示信息更新为第一指示状态,其中,所述第一指示状态用于表示对应节点不是所属链表的表尾节点;将所创建的节点对应的存储单元中的第二指示信息设置为第二指示状态,所述第二指示状态用于表示对应节点为所属链表的表尾节点。In some embodiments, the insert polling module is further configured to: query the first indication information, the second indication information and the tag stored in each of the plurality of storage units in parallel, so as to Determine whether the first linked list is empty and the first storage unit corresponding to the current tail node of the first linked list; when the first linked list is not empty, store the first storage unit in the first storage unit 4. The indication information is updated to the storage unit corresponding to the created node; when the first linked list is not empty, the second indication information in the first storage unit is updated to the first indication state, wherein the The first indication state is used to indicate that the corresponding node is not the tail node of the linked list; the second indication information in the storage unit corresponding to the created node is set to the second indication state, and the second indication state is used to indicate that the corresponding The node is the tail node of the linked list to which it belongs.
在一些实施例中,所述插入轮询模块还用于将所述多个存储单元中存储的标签与所述第一事务请求的第一标签分别进行比较,得到所述多个存储单元的第一比较结果;对所述多个存储单元存储的所述第一指示信息、所述第二指示信息以及所述第一比较结果分别进行逻辑运算,确定所述第一链表是否为空以及所述第一存储单元。In some embodiments, the insert polling module is further configured to compare the tags stored in the plurality of storage units with the first tags of the first transaction request, respectively, to obtain the first tags of the plurality of storage units. a comparison result; respectively perform logical operations on the first indication information, the second indication information and the first comparison result stored in the plurality of storage units to determine whether the first linked list is empty and the first storage unit.
在一些实施例中,所述插入轮询模块还用于对所述多个存储单元存储的所述第一指示信息、所述第二指示信息以及所述第一比较结果分别进行逻辑与运算,得到运算结果;将所述运算结果减去1,得到第一运算结果;对所述第一运算结果中的各个位进行求和;至少根据所述求和的结果确定所述第一链表是否为空以及所述第一存储单元。In some embodiments, the insert polling module is further configured to perform a logical AND operation on the first indication information, the second indication information and the first comparison result stored in the plurality of storage units, respectively, Obtain an operation result; subtract 1 from the operation result to obtain a first operation result; sum each bit in the first operation result; determine whether the first linked list is at least according to the summation result empty and the first storage unit.
在一些实施例中,所述运算结果为独热码或者为全0值。In some embodiments, the operation result is a one-hot code or an all-zero value.
在一些实施例中,所述插入轮询模块还用于当所述求和的结果不为0时,确定所述第一存储单元的地址等于所述求和的结果,并且确定所述第一链表不为空;当所述求和的结果等于0时,将所述运算结果与0进行比较,若所述运算结果与0不同,确定所述第一存储单元的地址等于所述求和的结果,并且确定所述第一链表不为空。In some embodiments, the insert polling module is further configured to, when the result of the summation is not 0, determine that the address of the first storage unit is equal to the result of the summation, and determine the first The linked list is not empty; when the result of the summation is equal to 0, the operation result is compared with 0, and if the operation result is different from 0, it is determined that the address of the first storage unit is equal to the summation As a result, it is determined that the first linked list is not empty.
在一些实施例中,所述插入轮询模块还用于若所述运算结果与0相同,确定所述第一链表为空,并将所创建的节点对应的存储单元中的第三指示信息设置为第三指示状态,其中,所述第三指示状态用于表示对应节点是所属链表的表头节点。In some embodiments, the insertion polling module is further configured to, if the operation result is the same as 0, determine that the first linked list is empty, and set the third indication information in the storage unit corresponding to the created node is a third indication state, wherein the third indication state is used to indicate that the corresponding node is the head node of the linked list to which it belongs.
在一些实施例中,所述分配模块还用于根据所述多个存储单元中每个存储单元存储的第一指示信息,将所创建的节点中包括的所述第一事务请求的信息存储至所述多个存储单元中的一个无效存储单元中。In some embodiments, the allocating module is further configured to store, according to the first indication information stored in each of the plurality of storage units, the information of the first transaction request included in the created node to in an invalid storage unit of the plurality of storage units.
在一些实施例中,所述装置还包括删除轮询模块322,所述删除轮询模块322与所述控制器模块330和所述链表存储单元310相连。所述控制器模块330还用于在检测到提取第一事务请求的情况下,获取所述第一事务请求的第一标签;所述删除轮询模块322用于基于所述第一事务请求的第一标签,将所述第一事务请求的信息从所述链表存储单元310中的所述第一链表的表头节点提取出来。In some embodiments, the apparatus further includes a deletion polling module 322 , and the deletion polling module 322 is connected to the controller module 330 and the linked list storage unit 310 . The controller module 330 is further configured to obtain the first tag of the first transaction request in the case of detecting the extraction of the first transaction request; the deletion polling module 322 is configured to obtain the first tag of the first transaction request based on the The first tag extracts the information of the first transaction request from the header node of the first linked list in the linked list storage unit 310 .
在一些实施例中,所述删除轮询模块还用于并行查询所述多个存储单元中每个存储单元存储的所述第一指示信息、所述第三指示信息和所述标签,以确定所述第一链表当前的表头节点对应的第二存储单元;从所述第二存储单元中的系统总线事务请求的信息中提取所述第一事务请求的信息;更新所述第二存储单元中的第一指示信息为第四 指示状态,其中,所述第四指示状态用于表示所述第二存储空间是无效存储空间;将所述第二存储单元中的第三指示信息更新为第五指示状态,其中,所述第五指示状态用于表示对应节点不是所属链表的表头节点;根据所述第二存储单元中的第四指示信息,确定所述当前的表头节点的下一个节点对应的存储单元,并将所确定的存储单元中的第三指示信息更新为第三指示状态,所述第三指示状态用于表示对应节点是所属链表的表头节点。In some embodiments, the deletion polling module is further configured to query the first indication information, the third indication information and the label stored in each of the plurality of storage units in parallel to determine the the second storage unit corresponding to the current header node of the first linked list; extract the information of the first transaction request from the information of the system bus transaction request in the second storage unit; update the second storage unit The first indication information in is a fourth indication state, wherein the fourth indication state is used to indicate that the second storage space is an invalid storage space; update the third indication information in the second storage unit to the first Five indication states, wherein the fifth indication state is used to indicate that the corresponding node is not the header node of the linked list; according to the fourth indication information in the second storage unit, determine the next one of the current header node The storage unit corresponding to the node, and the third indication information in the determined storage unit is updated to a third indication state, where the third indication state is used to indicate that the corresponding node is the head node of the linked list to which it belongs.
在一些实施例中,所述删除轮询模块还用于将所述多个存储单元中存储的标签与所述第一事务请求的第一标签分别进行比较,得到所述多个存储单元的第二比较结果;对所述多个存储单元存储的所述第一指示信息、所述第三指示信息以及所述第二比较结果分别进行逻辑运算,确定所述第二存储单元。In some embodiments, the deletion polling module is further configured to compare the tags stored in the plurality of storage units with the first tags of the first transaction request, respectively, to obtain the first tags of the plurality of storage units. 2. Comparison results; respectively perform logical operations on the first indication information, the third indication information and the second comparison results stored in the plurality of storage units to determine the second storage unit.
在一些实施例中,所述删除轮询模块还用于对所述多个存储单元存储的所述第一指示信息、所述第三指示信息以及所述第二比较结果分别进行逻辑与运算,得到初始运算结果;将所述初始运算结果减去1,得到第二运算结果;对所述第二运算结果中的各个位进行求和;根据所述求和的结果确定所述第二存储单元。In some embodiments, the deletion polling module is further configured to perform a logical AND operation on the first indication information, the third indication information and the second comparison result stored in the plurality of storage units, respectively, Obtain an initial operation result; subtract 1 from the initial operation result to obtain a second operation result; sum each bit in the second operation result; determine the second storage unit according to the summation result .
在一些实施例中,所述多个存储单元的个数与所述总线协议支持的未应答的事务请求的最大数量相等。In some embodiments, the number of the plurality of storage units is equal to the maximum number of unacknowledged transaction requests supported by the bus protocol.
如图7所示,本公开还提供一种用于系统芯片性能监控的数据处理装置,所述装置包括:创建模块701,用于在检测到第一事务请求的情况下,在第一链表中为所述第一事务请求创建第一节点;存储模块702,用于将所述第一事务请求的信息存储到为所述第一节点分配的存储单元中,其中,至少两个链表的节点共用多个存储单元。As shown in FIG. 7 , the present disclosure also provides a data processing apparatus for system chip performance monitoring, the apparatus includes: a creation module 701 for, when a first transaction request is detected, in the first linked list creating a first node for the first transaction request; a storage module 702, configured to store the information of the first transaction request in a storage unit allocated for the first node, wherein the nodes of at least two linked lists share the same multiple storage units.
在一些实施例中,每个存储单元用于存储链表的一个节点,分配给所述第一链表的存储单元的数量与所述第一链表当前包括的节点的数量相匹配。In some embodiments, each storage unit is used to store one node of the linked list, and the number of storage units allocated to the first linked list matches the number of nodes currently included in the first linked list.
在一些实施例中,为所述第一节点分配的存储单元存储有以下指示信息:用于指示所述存储单元是否为有效存储单元的第一指示信息,用于指示所述第一节点是否为所述第一链表的表尾节点的第二指示信息,用于指示所述第一节点是否为所述第一链表的表头节点的第三指示信息,用于指示用于存储所述第一节点的下一个节点的存储单元的第四指示信息。In some embodiments, the storage unit allocated to the first node stores the following indication information: first indication information used to indicate whether the storage unit is a valid storage unit, used to indicate whether the first node is a valid storage unit The second indication information of the tail node of the first linked list is used to indicate whether the first node is the head node of the first linked list. The third indication information is used to indicate that the first node is used to store the first The fourth indication information of the storage unit of the next node of the node.
在一些实施例中,所述装置还包括:第三查询模块,用于并行查询多个存储单元中每个存储单元存储的第一指示信息、第二指示信息和标签,以确定所述第一链表当前的表尾节点;和/或第四查询模块,用于并行查询多个存储单元中每个存储单元存储的第一指示信息、第三指示信息和标签,以确定所述第一链表当前的表头节点。In some embodiments, the apparatus further includes: a third query module, configured to query the first indication information, the second indication information and the label stored in each of the plurality of storage units in parallel, so as to determine the first indication information the current tail node of the linked list; and/or a fourth query module, configured to query the first indication information, the third indication information and the label stored in each storage unit in the plurality of storage units in parallel, so as to determine the current state of the first linked list the header node.
在一些实施例中,所述装置还包括:分配模块,用于基于所述多个存储单元中存储的第一指示信息,为所述第一节点分配所述多个存储单元中的无效存储单元。In some embodiments, the apparatus further includes: an allocation module configured to allocate an invalid storage unit in the plurality of storage units to the first node based on the first indication information stored in the plurality of storage units .
在一些实施例中,本公开实施例提供的装置具有的功能或包含的模块可以用于执行上文方法实施例描述的方法,其具体实现可以参照上文方法实施例的描述,为了简 洁,这里不再赘述。In some embodiments, the functions or modules included in the apparatuses provided in the embodiments of the present disclosure may be used to execute the methods described in the above method embodiments. For specific implementation, reference may be made to the descriptions of the above method embodiments. For brevity, here No longer.
以上装置的各个模块、单元的部分或全部也可以通过集成电路的形式内嵌于某一个芯片上来实现。且它们可以单独实现,也可以集成在一起。即以上这些模块、单元可以被配置成实施以上方法的一个或多个集成电路,例如:一个或多个特定集成电路(Application Specific Integrated Circuit,ASIC),或,一个或多个微处理器(Digital Singnal Processor,DSP),或,一个或者多个现场可编程门阵列(Field Programmable Gate Array,FPGA)等。Part or all of each module and unit of the above device can also be implemented by being embedded on a certain chip in the form of an integrated circuit. And they can be implemented individually or integrated together. That is, the above modules and units can be configured as one or more integrated circuits that implement the above methods, such as: one or more specific integrated circuits (Application Specific Integrated Circuit, ASIC), or one or more microprocessors (Digital Singnal Processor, DSP), or, one or more Field Programmable Gate Array (Field Programmable Gate Array, FPGA), etc.
本说明书实施例还提供一种计算机设备,其至少包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其中,处理器执行所述程序时实现前述任一实施例所述的方法。The embodiments of the present specification further provide a computer device, which at least includes a memory, a processor, and a computer program stored in the memory and executable on the processor, wherein the processor implements any of the foregoing embodiments when executing the program. method described.
图8示出了本说明书实施例所提供的一种更为具体的计算机设备硬件结构示意图,该设备可以包括:处理器801、存储器802、输入/输出接口803、通信接口804和总线805。其中处理器801、存储器802、输入/输出接口803和通信接口804通过总线805实现彼此之间在设备内部的通信连接。FIG. 8 shows a more specific schematic diagram of the hardware structure of a computer device provided by an embodiment of this specification. The device may include: a processor 801 , a memory 802 , an input/output interface 803 , a communication interface 804 and a bus 805 . The processor 801 , the memory 802 , the input/output interface 803 and the communication interface 804 realize the communication connection among each other within the device through the bus 805 .
处理器801可以采用通用的CPU(Central Processing Unit,中央处理器)、微处理器、应用专用集成电路(Application Specific Integrated Circuit,ASIC)、或者一个或多个集成电路等方式实现,用于执行相关程序,以实现本说明书实施例所提供的技术方案。The processor 801 can be implemented by a general-purpose CPU (Central Processing Unit, central processing unit), a microprocessor, an application specific integrated circuit (Application Specific Integrated Circuit, ASIC), or one or more integrated circuits, etc. program to implement the technical solutions provided by the embodiments of this specification.
存储器802可以采用ROM(Read Only Memory,只读存储器)、RAM(Random Access Memory,随机存取存储器)、静态存储设备,动态存储设备等形式实现。存储器802可以存储操作系统和其他应用程序,在通过软件或者固件来实现本说明书实施例所提供的技术方案时,相关的程序代码保存在存储器802中,并由处理器801来调用执行。The memory 802 can be implemented in the form of a ROM (Read Only Memory, read-only memory), a RAM (Random Access Memory, random access memory), a static storage device, a dynamic storage device, and the like. The memory 802 may store an operating system and other application programs. When implementing the technical solutions provided by the embodiments of this specification through software or firmware, relevant program codes are stored in the memory 802 and invoked by the processor 801 for execution.
输入/输出接口803用于连接输入/输出模块,以实现信息输入及输出。输入输出/模块可以作为组件配置在设备中(图中未示出),也可以外接于设备以提供相应功能。其中输入设备可以包括键盘、鼠标、触摸屏、麦克风、各类传感器等,输出设备可以包括显示器、扬声器、振动器、指示灯等。The input/output interface 803 is used for connecting input/output modules to realize information input and output. The input/output/module can be configured in the device as a component (not shown in the figure), or can be externally connected to the device to provide corresponding functions. The input device may include a keyboard, a mouse, a touch screen, a microphone, various sensors, etc., and the output device may include a display, a speaker, a vibrator, an indicator light, and the like.
通信接口804用于连接通信模块(图中未示出),以实现本设备与其他设备的通信交互。其中通信模块可以通过有线方式(例如USB、网线等)实现通信,也可以通过无线方式(例如移动网络、WIFI、蓝牙等)实现通信。The communication interface 804 is used to connect a communication module (not shown in the figure), so as to realize the communication interaction between the device and other devices. The communication module may implement communication through wired means (eg, USB, network cable, etc.), or may implement communication through wireless means (eg, mobile network, WIFI, Bluetooth, etc.).
总线805包括一通路,在设备的各个组件(例如处理器801、存储器802、输入/输出接口803和通信接口804)之间传输信息。 Bus 805 includes a path to transfer information between the various components of the device (eg, processor 801, memory 802, input/output interface 803, and communication interface 804).
需要说明的是,尽管上述设备仅示出了处理器801、存储器802、输入/输出接口803、通信接口804以及总线805,但是在具体实施过程中,该设备还可以包括实现正常运行所必需的其他组件。此外,本领域的技术人员可以理解的是,上述设备中也可以仅 包含实现本说明书实施例方案所必需的组件,而不必包含图中所示的全部组件。It should be noted that although the above-mentioned device only shows the processor 801, the memory 802, the input/output interface 803, the communication interface 804 and the bus 805, in the specific implementation process, the device may also include necessary components for normal operation. other components. In addition, those skilled in the art can understand that, the above-mentioned device may only include the components necessary to realize the solutions of the embodiments of the present specification, and does not necessarily include all the components shown in the figures.
本公开实施例还提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现前述任一实施例所述的方法。An embodiment of the present disclosure further provides a computer-readable storage medium, on which a computer program is stored, and when the program is executed by a processor, implements the method described in any of the foregoing embodiments.
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。Computer-readable media includes both persistent and non-permanent, removable and non-removable media, and storage of information may be implemented by any method or technology. Information may be computer readable instructions, data structures, modules of programs, or other data. Examples of computer storage media include, but are not limited to, phase-change memory (PRAM), static random access memory (SRAM), dynamic random access memory (DRAM), other types of random access memory (RAM), read only memory (ROM), Electrically Erasable Programmable Read Only Memory (EEPROM), Flash Memory or other memory technology, Compact Disc Read Only Memory (CD-ROM), Digital Versatile Disc (DVD) or other optical storage, Magnetic tape cassettes, magnetic tape magnetic disk storage or other magnetic storage devices or any other non-transmission medium that can be used to store information that can be accessed by a computing device. As defined herein, computer-readable media does not include transitory computer-readable media, such as modulated data signals and carrier waves.
通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本说明书实施例可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本说明书实施例的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本说明书实施例各个实施例或者实施例的某些部分所述的方法。From the description of the above embodiments, those skilled in the art can clearly understand that the embodiments of the present specification can be implemented by means of software plus a necessary general hardware platform. Based on such understanding, the technical solutions of the embodiments of this specification or the parts that make contributions to the prior art may be embodied in the form of software products, and the computer software products may be stored in storage media, such as ROM/RAM, A magnetic disk, an optical disk, etc., includes several instructions for causing a computer device (which may be a personal computer, a server, or a network device, etc.) to execute the methods described in various embodiments or some parts of the embodiments in this specification.
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机,计算机的具体形式可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任意几种设备的组合。The systems, devices, modules or units described in the above embodiments may be specifically implemented by computer chips or entities, or by products with certain functions. A typical implementation device is a computer, which may be in the form of a personal computer, laptop computer, cellular phone, camera phone, smart phone, personal digital assistant, media player, navigation device, e-mail device, game control desktop, tablet, wearable device, or a combination of any of these devices.
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,在实施本说明书实施例方案时可以把各模块的功能在同一个或多个软件和/或硬件中实现。也可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。Each embodiment in this specification is described in a progressive manner, and the same and similar parts between the various embodiments may be referred to each other, and each embodiment focuses on the differences from other embodiments. In particular, for the apparatus embodiment, since it is basically similar to the method embodiment, the description is relatively simple, and reference may be made to the partial description of the method embodiment for related parts. The device embodiments described above are only illustrative, wherein the modules described as separate components may or may not be physically separated. When implementing the solutions of the embodiments of the present specification, the functions of each module may be integrated into the same module. or multiple software and/or hardware implementations. Some or all of the modules may also be selected according to actual needs to achieve the purpose of the solution in this embodiment. Those of ordinary skill in the art can understand and implement it without creative effort.
以上所述仅是本说明书实施例的具体实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本说明书实施例原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本说明书实施例的保护范围。The above are only specific implementations of the embodiments of the present specification. It should be pointed out that for those skilled in the art, without departing from the principles of the embodiments of the present specification, several improvements and modifications can be made. These Improvements and modifications should also be regarded as the protection scope of the embodiments of the present specification.

Claims (25)

  1. 一种用于系统芯片性能监控的数据处理方法,其特征在于,所述方法包括:A data processing method for system chip performance monitoring, characterized in that the method comprises:
    在检测到第一事务请求的情况下,获取所述第一事务请求的信息,所述信息包括所述第一事务请求的第一标签;In the case of detecting the first transaction request, obtain information of the first transaction request, the information including the first tag of the first transaction request;
    基于所述第一事务请求的第一标签,将所述第一事务请求的信息存储到与所述第一标签对应的第一链表中,其中,所述第一链表包括至少一个节点,所述第一链表的每个节点对应的存储单元存储一个具有所述第一标签的事务请求的信息。Based on the first tag of the first transaction request, the information of the first transaction request is stored in a first linked list corresponding to the first tag, wherein the first linked list includes at least one node, and the A storage unit corresponding to each node of the first linked list stores information of a transaction request with the first label.
  2. 根据权利要求1所述的方法,其特征在于,The method of claim 1, wherein:
    具有所述第一标签的多个事务请求的信息按照检测到所述多个事务请求的时间依次存储到所述第一链表的各个节点分别对应的存储单元中;和/或The information of the multiple transaction requests with the first label is sequentially stored in the storage units corresponding to each node of the first linked list according to the time when the multiple transaction requests are detected; and/or
    具有所述第一标签的多个事务请求的信息按照所述多个事务请求在所述第一链表中的顺序依次被提取。The information of the multiple transaction requests with the first tag is sequentially extracted according to the sequence of the multiple transaction requests in the first linked list.
  3. 根据权利要求1或2所述的方法,其特征在于,The method according to claim 1 or 2, characterized in that,
    所述第一链表中当前包括的节点的数量为当前未应答的、具有所述第一标签的事务请求的数量;和/或The number of nodes currently included in the first linked list is the number of currently unanswered transaction requests with the first label; and/or
    具有不同标签的事务请求的信息存储在不同的链表中。Information for transaction requests with different labels is stored in different linked lists.
  4. 根据权利要求1至3中任一项所述的方法,其特征在于,The method according to any one of claims 1 to 3, characterized in that:
    至少两个链表的节点共用多个存储单元,其中,每个存储单元用于存储链表的一个节点,每个存储单元包括事务请求的标签、系统总线事务请求的信息以及以下指示信息:用于指示该存储单元是否为有效存储单元的第一指示信息,用于指示当前节点是否为所属链表的表尾节点的第二指示信息,用于指示当前节点是否为所属链表的表头节点的第三指示信息,用于指示存储当前节点的下一个节点的存储单元的地址的第四指示信息,其中,当前节点为与该存储单元对应的节点。The nodes of at least two linked lists share a plurality of storage units, wherein each storage unit is used to store a node of the linked list, and each storage unit includes the label of the transaction request, the information of the system bus transaction request and the following indication information: used to indicate The first indication information for whether the storage unit is a valid storage unit, the second indication information for indicating whether the current node is the tail node of the linked list to which it belongs, and the third indication information for indicating whether the current node is the head node of the linked list to which it belongs information, which is used to indicate fourth indication information that stores the address of the storage unit of the next node of the current node, where the current node is the node corresponding to the storage unit.
  5. 根据权利要求4所述的方法,其特征在于,所述基于所述第一事务请求的第一标签,将所述第一事务请求的信息存储到第一链表中,包括:The method according to claim 4, wherein the storing the information of the first transaction request in the first linked list based on the first tag of the first transaction request comprises:
    为所述第一事务请求创建新的节点,并确定所创建的节点对应的存储单元;creating a new node for the first transaction request, and determining a storage unit corresponding to the created node;
    将所创建的节点链接到所述第一链表当前的表尾节点。The created node is linked to the current tail node of the first linked list.
  6. 根据权利要求5所述的方法,其特征在于,所述将所创建的节点链接到所述第一链表当前的表尾节点,包括:The method according to claim 5, wherein the linking the created node to the current tail node of the first linked list comprises:
    并行查询所述多个存储单元中每个存储单元存储的所述第一指示信息、所述第二指示信息和所述标签,以确定所述第一链表是否为空以及所述第一链表当前的表尾节点对应的第一存储单元;Querying the first indication information, the second indication information and the label stored in each of the plurality of storage units in parallel to determine whether the first linked list is empty and the current state of the first linked list The first storage unit corresponding to the footer node of ;
    当所述第一链表不为空的情况下,将所述第一存储单元中的第四指示信息更新为所创建的节点对应的存储单元;When the first linked list is not empty, the fourth indication information in the first storage unit is updated to the storage unit corresponding to the created node;
    当所述第一链表不为空的情况下,将所述第一存储单元中的第二指示信息更新为第一指示状态,其中,所述第一指示状态用于表示对应节点不是所属链表的表尾节点;When the first linked list is not empty, the second indication information in the first storage unit is updated to a first indication state, where the first indication state is used to indicate that the corresponding node does not belong to the linked list footer node;
    将所创建的节点对应的存储单元中的第二指示信息设置为第二指示状态,所述第二指示状态用于表示对应节点为所属链表的表尾节点。The second indication information in the storage unit corresponding to the created node is set to a second indication state, where the second indication state is used to indicate that the corresponding node is the tail node of the linked list to which it belongs.
  7. 根据权利要求6所述的方法,其特征在于,所述确定所述第一链表是否为空以及所述第一链表当前的表尾节点对应的第一存储单元,包括:The method according to claim 6, wherein the determining whether the first linked list is empty and the first storage unit corresponding to the current tail node of the first linked list comprises:
    将所述多个存储单元中存储的标签与所述第一事务请求的第一标签分别进行比较,得到所述多个存储单元的第一比较结果;comparing the tags stored in the plurality of storage units with the first tags of the first transaction request, respectively, to obtain a first comparison result of the plurality of storage units;
    对所述多个存储单元存储的所述第一指示信息、所述第二指示信息以及所述第一比较结果分别进行逻辑运算,确定所述第一链表是否为空以及所述第一存储单元。Perform logical operations on the first indication information, the second indication information, and the first comparison result stored in the plurality of storage units, respectively, to determine whether the first linked list is empty and whether the first storage unit is empty .
  8. 根据权利要求7所述的方法,其特征在于,所述确定所述第一链表是否为空以及所述第一存储单元包括:The method according to claim 7, wherein the determining whether the first linked list is empty and the first storage unit comprises:
    对所述多个存储单元存储的所述第一指示信息、所述第二指示信息以及所述第一比较结果分别进行逻辑与运算,得到运算结果;Perform a logical AND operation on the first indication information, the second indication information and the first comparison result stored in the plurality of storage units, respectively, to obtain an operation result;
    将所述运算结果减去1,得到第一运算结果;Subtract 1 from the operation result to obtain the first operation result;
    对所述第一运算结果中的各个位进行求和;summing each bit in the first operation result;
    至少根据所述求和的结果确定所述第一链表是否为空以及所述第一存储单元。Whether the first linked list is empty and the first storage unit is determined at least according to the result of the summation.
  9. 根据权利要求8所述的方法,其特征在于,所述运算结果为独热码或者为全0值。The method according to claim 8, wherein the operation result is a one-hot code or an all-zero value.
  10. 根据权利要求8所述的方法,其特征在于,所述至少根据所述求和的结果确定所述第一链表是否为空以及所述第一存储单元包括:The method according to claim 8, wherein the determining whether the first linked list is empty and the first storage unit comprises at least according to the result of the summation:
    当所述求和的结果不为0时,确定所述第一存储单元的地址等于所述求和的结果,并且确定所述第一链表不为空;When the result of the summation is not 0, determine that the address of the first storage unit is equal to the result of the summation, and determine that the first linked list is not empty;
    当所述求和的结果等于0时,将所述运算结果与0进行比较,若所述运算结果与0不同,确定所述第一存储单元的地址等于所述求和的结果,并且确定所述第一链表不为空。When the result of the summation is equal to 0, the result of the operation is compared with 0, and if the result of the operation is different from 0, it is determined that the address of the first storage unit is equal to the result of the summation, and it is determined that the The first linked list is not empty.
  11. 根据权利要求10所述的方法,其特征在于,所述方法还包括:The method of claim 10, wherein the method further comprises:
    若所述运算结果与0相同,确定所述第一链表为空,并将所创建的节点对应的存储单元中的第三指示信息设置为第三指示状态,其中,所述第三指示状态用于表示对应节点是所属链表的表头节点。If the operation result is the same as 0, it is determined that the first linked list is empty, and the third indication information in the storage unit corresponding to the created node is set to a third indication state, wherein the third indication state uses Indicates that the corresponding node is the head node of the linked list to which it belongs.
  12. 根据权利要求5所述的方法,其特征在于,所述确定所创建的节点对应的存储单元包括:The method according to claim 5, wherein the determining the storage unit corresponding to the created node comprises:
    根据所述多个存储单元中每个存储单元存储的第一指示信息,将所创建的节点中包括的所述第一事务请求的信息存储至所述多个存储单元中的一个无效存储单元中。According to the first indication information stored in each of the plurality of storage units, the information of the first transaction request included in the created node is stored in an invalid storage unit of the plurality of storage units .
  13. 根据权利要求4所述的方法,其特征在于,所述方法还包括:The method according to claim 4, wherein the method further comprises:
    在检测到提取第一事务请求的情况下,获取所述第一事务请求的第一标签;In the case of detecting the extraction of the first transaction request, acquiring the first tag of the first transaction request;
    基于所述第一事务请求的第一标签,将所述第一事务请求的信息从所述第一链表的表头节点提取出来。Based on the first tag of the first transaction request, the information of the first transaction request is extracted from the header node of the first linked list.
  14. 根据权利要求13所述的方法,其特征在于,所述将所述第一事务请求的信息从所述第一链表的表头节点提取出来包括:The method according to claim 13, wherein the extracting the information of the first transaction request from the header node of the first linked list comprises:
    并行查询所述多个存储单元中每个存储单元存储的所述第一指示信息、所述第三指示信息和所述标签,以确定所述第一链表当前的表头节点对应的第二存储单元;Querying the first indication information, the third indication information and the label stored in each of the plurality of storage units in parallel to determine the second storage corresponding to the current header node of the first linked list unit;
    从所述第二存储单元中的系统总线事务请求的信息中提取所述第一事务请求的信息;Extract the information of the first transaction request from the information of the system bus transaction request in the second storage unit;
    更新所述第二存储单元中的第一指示信息为第四指示状态,其中,所述第四指示状态用于表示所述第二存储空间是无效存储空间;updating the first indication information in the second storage unit to a fourth indication state, wherein the fourth indication state is used to indicate that the second storage space is an invalid storage space;
    将所述第二存储单元中的第三指示信息更新为第五指示状态,其中,所述第五指示状态用于表示对应节点不是所属链表的表头节点;updating the third indication information in the second storage unit to a fifth indication state, wherein the fifth indication state is used to indicate that the corresponding node is not the header node of the linked list to which it belongs;
    根据所述第二存储单元中的第四指示信息,确定所述当前的表头节点的下一个节点对应的存储单元,并将所确定的存储单元中的第三指示信息更新为第三指示状态,所述第三指示状态用于表示对应节点是所属链表的表头节点。According to the fourth indication information in the second storage unit, determine the storage unit corresponding to the next node of the current header node, and update the third indication information in the determined storage unit to a third indication state , and the third indication state is used to indicate that the corresponding node is the head node of the linked list to which it belongs.
  15. 根据权利要求14所述的方法,其特征在于,所述确定所述第一链表当前的表头节点对应的第二存储单元,包括:The method according to claim 14, wherein the determining the second storage unit corresponding to the current header node of the first linked list comprises:
    将所述多个存储单元中存储的标签与所述第一事务请求的第一标签分别进行比较,得到所述多个存储单元的第二比较结果;respectively comparing the tags stored in the plurality of storage units with the first tags requested by the first transaction to obtain second comparison results of the plurality of storage units;
    对所述多个存储单元存储的所述第一指示信息、所述第三指示信息以及所述第二比较结果分别进行逻辑运算,确定所述第二存储单元。The second storage unit is determined by performing logical operations on the first indication information, the third indication information and the second comparison result stored in the plurality of storage units respectively.
  16. 根据权利要求15所述的方法,其特征在于,所述确定所述第二存储单元包括:The method according to claim 15, wherein the determining the second storage unit comprises:
    对所述多个存储单元存储的所述第一指示信息、所述第三指示信息以及所述第二比较结果分别进行逻辑与运算,得到初始运算结果;Perform a logical AND operation on the first indication information, the third indication information and the second comparison result stored in the plurality of storage units respectively to obtain an initial operation result;
    将所述初始运算结果减去1,得到第二运算结果;Subtract 1 from the initial operation result to obtain a second operation result;
    对所述第二运算结果中的各个位进行求和;summing each bit in the second operation result;
    根据所述求和的结果确定所述第二存储单元。The second storage unit is determined according to the result of the summation.
  17. 根据权利要求4所述的方法,其特征在于,所述多个存储单元的个数与所述系统芯片包括的总线协议中支持的未应答的事务请求的最大数量相等。The method according to claim 4, wherein the number of the plurality of storage units is equal to the maximum number of unanswered transaction requests supported in a bus protocol included in the system chip.
  18. 一种用于系统芯片性能监控的数据处理方法,其特征在于,所述方法包括:A data processing method for system chip performance monitoring, characterized in that the method comprises:
    在检测到第一事务请求的情况下,在第一链表中为所述第一事务请求创建第一节点;In the case of detecting the first transaction request, creating a first node in the first linked list for the first transaction request;
    将所述第一事务请求的信息存储到为所述第一节点分配的存储单元中,其中,至少两个链表的节点共用多个存储单元。The information requested by the first transaction is stored in a storage unit allocated for the first node, wherein the nodes of at least two linked lists share a plurality of storage units.
  19. 根据权利要求18所述的方法,其特征在于,每个存储单元用于存储链表的一个节点,分配给所述第一链表的存储单元的数量与所述第一链表当前包括的节点的数量相匹配。The method according to claim 18, wherein each storage unit is used to store a node of the linked list, and the number of storage units allocated to the first linked list is the same as the number of nodes currently included in the first linked list match.
  20. 根据权利要求18或19所述的方法,其特征在于,为所述第一节点分配的存储单元存储有以下指示信息:The method according to claim 18 or 19, wherein the storage unit allocated for the first node stores the following indication information:
    用于指示所述存储单元是否为有效存储单元的第一指示信息,the first indication information for indicating whether the storage unit is a valid storage unit,
    用于指示所述第一节点是否为所述第一链表的表尾节点的第二指示信息,second indication information for indicating whether the first node is the tail node of the first linked list,
    用于指示所述第一节点是否为所述第一链表的表头节点的第三指示信息,third indication information for indicating whether the first node is the header node of the first linked list,
    用于指示用于存储所述第一节点的下一个节点的存储单元的第四指示信息。Fourth indication information for indicating a storage unit for storing the next node of the first node.
  21. 根据权利要求20所述的方法,其特征在于,所述方法还包括:The method of claim 20, wherein the method further comprises:
    并行查询所述多个存储单元中每个存储单元存储的所述第一指示信息、所述第二指 示信息和标签,以确定所述第一链表当前的表尾节点;和/或Query the first indication information, the second indication information and the label stored in each storage unit in the plurality of storage units in parallel to determine the current tail node of the first linked list; and/or
    并行查询所述多个存储单元中每个存储单元存储的所述第一指示信息、所述第三指示信息和所述标签,以确定所述第一链表当前的表头节点。The first indication information, the third indication information and the label stored in each of the plurality of storage units are queried in parallel to determine the current head node of the first linked list.
  22. 根据权利要求20或21所述的方法,其特征在于,所述方法还包括:The method according to claim 20 or 21, wherein the method further comprises:
    基于所述多个存储单元中存储的所述第一指示信息,为所述第一节点分配所述多个存储单元中的无效存储单元。Based on the first indication information stored in the plurality of storage units, an invalid storage unit in the plurality of storage units is allocated to the first node.
  23. 一种用于系统芯片性能监控的数据处理装置,其特征在于,所述装置包括:A data processing device for system chip performance monitoring, characterized in that the device comprises:
    控制器模块、插入轮询模块以及链表存储单元,其中,所述控制器模块分别与所述插入轮询模块和所述链表存储单元相连,所述链表存储单元与所述插入轮询模块相连;a controller module, a plug-in polling module, and a linked list storage unit, wherein the controller module is respectively connected with the plug-in polling module and the linked list storage unit, and the linked list storage unit is connected with the plug-in polling module;
    所述控制器模块,用于在检测到第一事务请求的情况下,获取所述第一事务请求的信息,所述信息包括所述第一事务请求的第一标签;the controller module, configured to acquire information of the first transaction request when the first transaction request is detected, the information including the first tag of the first transaction request;
    所述插入轮询模块,用于基于所述第一事务请求的第一标签,将所述第一事务请求的信息存储到所述链表存储单元中与所述第一标签对应的第一链表中,其中,所述第一链表包括至少一个节点,所述第一链表的每个节点对应的存储单元存储一个具有所述第一标签的事务请求的信息。The insertion polling module is configured to, based on the first tag of the first transaction request, store the information of the first transaction request in the first linked list corresponding to the first tag in the linked list storage unit , wherein the first linked list includes at least one node, and a storage unit corresponding to each node of the first linked list stores information about a transaction request with the first label.
  24. 根据权利要求23所述的装置,其特征在于,所述装置还包括删除轮询模块,所述删除轮询模块与所述控制器模块和所述链表存储单元相连,The device according to claim 23, wherein the device further comprises a deletion polling module, the deletion polling module is connected to the controller module and the linked list storage unit,
    所述控制器模块还用于在检测到提取第一事务请求的情况下,获取所述第一事务请求的第一标签;The controller module is further configured to acquire the first tag of the first transaction request in the case of detecting the extraction of the first transaction request;
    所述删除轮询模块,用于基于所述第一事务请求的第一标签,将所述第一事务请求的信息从所述链表存储单元中的所述第一链表的表头节点提取出来。The deletion polling module is configured to extract the information of the first transaction request from the header node of the first linked list in the linked list storage unit based on the first tag of the first transaction request.
  25. 一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现权利要求1至22任意一项所述的方法。A computer-readable storage medium on which a computer program is stored, characterized in that, when the program is executed by a processor, the method described in any one of claims 1 to 22 is implemented.
PCT/CN2021/103606 2020-08-31 2021-06-30 Data processing method and apparatus for performance monitoring of system on a chip WO2022042015A1 (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN202010899040.XA CN114116368A (en) 2020-08-31 2020-08-31 Data processing method and device for system chip performance monitoring
CN202010899040.X 2020-08-31

Publications (1)

Publication Number Publication Date
WO2022042015A1 true WO2022042015A1 (en) 2022-03-03

Family

ID=80352560

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/CN2021/103606 WO2022042015A1 (en) 2020-08-31 2021-06-30 Data processing method and apparatus for performance monitoring of system on a chip

Country Status (2)

Country Link
CN (1) CN114116368A (en)
WO (1) WO2022042015A1 (en)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060031643A1 (en) * 2004-05-21 2006-02-09 Nortel Networks Limited Implementing FIFOs in shared memory using linked lists and interleaved linked lists
US7343513B1 (en) * 2003-09-24 2008-03-11 Juniper Networks, Inc. Systems and methods for recovering memory
CN101291546A (en) * 2008-06-11 2008-10-22 清华大学 Switching structure coprocessor of core router
CN109189793A (en) * 2018-09-13 2019-01-11 杭州晨晓科技股份有限公司 A kind of storage of linked list method and device of business datum
CN110569399A (en) * 2019-11-07 2019-12-13 四川新网银行股份有限公司 Link construction method based on pinpoint log

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7343513B1 (en) * 2003-09-24 2008-03-11 Juniper Networks, Inc. Systems and methods for recovering memory
US20060031643A1 (en) * 2004-05-21 2006-02-09 Nortel Networks Limited Implementing FIFOs in shared memory using linked lists and interleaved linked lists
CN101291546A (en) * 2008-06-11 2008-10-22 清华大学 Switching structure coprocessor of core router
CN109189793A (en) * 2018-09-13 2019-01-11 杭州晨晓科技股份有限公司 A kind of storage of linked list method and device of business datum
CN110569399A (en) * 2019-11-07 2019-12-13 四川新网银行股份有限公司 Link construction method based on pinpoint log

Also Published As

Publication number Publication date
CN114116368A (en) 2022-03-01

Similar Documents

Publication Publication Date Title
WO2019114128A1 (en) Block chain transaction block processing method, electronic device and readable storage medium
TWI662426B (en) Method and device for distributed stream data processing
US10606806B2 (en) Method and apparatus for storing time series data
WO2015172533A1 (en) Database query method and server
CN111949568B (en) Message processing method, device and network chip
US10331499B2 (en) Method, apparatus, and chip for implementing mutually-exclusive operation of multiple threads
US8281103B2 (en) Method and apparatus for allocating storage addresses
CN111061758B (en) Data storage method, device and storage medium
CN108762915B (en) Method for caching RDF data in GPU memory
CN111708894B (en) Knowledge graph creation method
CN110851474A (en) Data query method, database middleware, data query device and storage medium
WO2021174763A1 (en) Database management method and apparatus based on lookup table
WO2023020247A1 (en) Method and apparatus for precision reduction of time series index data, and computer device
US9836491B1 (en) Method and apparatus for hardware-implemented AVL tree updates
CN110928900B (en) Multi-table data query method, device, terminal and computer storage medium
CN109947667B (en) Data access prediction method and device
WO2021164560A1 (en) Multi-core chip and scheduling method therefor
WO2014190700A1 (en) Method of memory access, buffer scheduler and memory module
WO2022042015A1 (en) Data processing method and apparatus for performance monitoring of system on a chip
CN111259014B (en) Method and system for storing data of one-way linked list of FPGA (field programmable Gate array)
WO2016049807A1 (en) Cache directory processing method and directory controller of multi-core processor system
US20140067751A1 (en) Compressed set representation for sets as measures in olap cubes
WO2022257575A1 (en) Data processing method, apparatus, and device
US10095765B1 (en) Method and apparatus for a hardware-implemented AVL tree module
WO2022206170A1 (en) Data processing method, server and system

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 21859857

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 21859857

Country of ref document: EP

Kind code of ref document: A1

122 Ep: pct application non-entry in european phase

Ref document number: 21859857

Country of ref document: EP

Kind code of ref document: A1

32PN Ep: public notification in the ep bulletin as address of the adressee cannot be established

Free format text: NOTING OF LOSS OF RIGHTS PURSUANT TO RULE 112(1) EPC (EPO FORM 1205A DATED 180923)