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 PDFInfo
- 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
Links
- 238000012544 monitoring process Methods 0.000 title claims abstract description 38
- 238000003672 processing method Methods 0.000 title claims abstract description 13
- 238000000034 method Methods 0.000 claims abstract description 78
- 238000012217 deletion Methods 0.000 claims description 10
- 230000037430 deletion Effects 0.000 claims description 10
- 238000012545 processing Methods 0.000 claims description 10
- 239000000284 extract Substances 0.000 claims description 9
- 230000037431 insertion Effects 0.000 claims description 9
- 238000003780 insertion Methods 0.000 claims description 8
- 238000000605 extraction Methods 0.000 claims description 6
- 238000004590 computer program Methods 0.000 claims description 5
- 230000004044 response Effects 0.000 description 29
- 230000005540 biological transmission Effects 0.000 description 14
- 238000004891 communication Methods 0.000 description 12
- 230000008569 process Effects 0.000 description 11
- 238000013461 design Methods 0.000 description 10
- 238000010586 diagram Methods 0.000 description 7
- 230000006870 function Effects 0.000 description 6
- 238000012546 transfer Methods 0.000 description 3
- 238000012938 design process Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 239000006227 byproduct Substances 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 238000012966 insertion method Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3003—Monitoring arrangements specially adapted to the computing system or computing system component being monitored
- G06F11/3027—Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a bus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration of storage systems
- G06F3/0631—Configuration or reconfiguration of storage systems by allocating resources to storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing 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
Description
Claims (25)
- 一种用于系统芯片性能监控的数据处理方法,其特征在于,所述方法包括: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.
- 根据权利要求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.
- 根据权利要求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.
- 根据权利要求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.
- 根据权利要求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.
- 根据权利要求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.
- 根据权利要求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 .
- 根据权利要求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.
- 根据权利要求8所述的方法,其特征在于,所述运算结果为独热码或者为全0值。The method according to claim 8, wherein the operation result is a one-hot code or an all-zero value.
- 根据权利要求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.
- 根据权利要求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.
- 根据权利要求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 .
- 根据权利要求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.
- 根据权利要求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.
- 根据权利要求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.
- 根据权利要求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.
- 根据权利要求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.
- 一种用于系统芯片性能监控的数据处理方法,其特征在于,所述方法包括: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.
- 根据权利要求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.
- 根据权利要求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.
- 根据权利要求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.
- 根据权利要求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.
- 一种用于系统芯片性能监控的数据处理装置,其特征在于,所述装置包括: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.
- 根据权利要求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.
- 一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现权利要求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.
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)
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 |
-
2020
- 2020-08-31 CN CN202010899040.XA patent/CN114116368A/en active Pending
-
2021
- 2021-06-30 WO PCT/CN2021/103606 patent/WO2022042015A1/en active Application Filing
Patent Citations (5)
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) |