US20190266010A1 - Transaction handling - Google Patents

Transaction handling Download PDF

Info

Publication number
US20190266010A1
US20190266010A1 US16/345,789 US201716345789A US2019266010A1 US 20190266010 A1 US20190266010 A1 US 20190266010A1 US 201716345789 A US201716345789 A US 201716345789A US 2019266010 A1 US2019266010 A1 US 2019266010A1
Authority
US
United States
Prior art keywords
transaction
identifier
circuitry
request
indicator
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
US16/345,789
Inventor
Andrew David Tune
Daniel SARA
Guanghui GENG
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
ARM Ltd
Original Assignee
ARM Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by ARM Ltd filed Critical ARM Ltd
Assigned to ARM LIMITED reassignment ARM LIMITED ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: SARA, DANIEL ADAM, TUNE, ANDREW DAVID, GENG, GUANGHUI
Publication of US20190266010A1 publication Critical patent/US20190266010A1/en
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/466Transaction processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • G06F13/1673Details of memory controller using buffers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/36Handling requests for interconnection or transfer for access to common bus or bus system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/382Information transfer, e.g. on bus using universal interface adapter
    • G06F13/385Information transfer, e.g. on bus using universal interface adapter for adaptation of a particular data processing system to different peripheral devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request

Definitions

  • This disclosure relates to transaction handling.
  • Some transaction handling protocols make use of identifiers associated with data processing transactions, so that an initiator device (which initiates a transaction) can await a response to a transaction and, when the response arrives from a transaction server device, can handle the response appropriately.
  • an ordering requirement is generally applied to such sets of transactions.
  • the ordering requirement may be one or more of a requirement that the transaction is delivered to its destination in the transaction issue order, a requirement that i) a response to the transaction is returned to the initiator of the transaction in the transaction issue order, and a requirement that the transaction is completed in the transaction issue order.
  • ordering techniques can be used to avoid the ordering requirement being compromised. These techniques can include stalling transactions which are received or handled “early” relative to the ordering requirement, and/or buffering information relating to the transactions until the appropriate stage to forward such information.
  • a transaction handling device comprising:
  • transaction handling circuitry to handle a transaction request for a data processing transaction, the transaction request having an associated identifier such that at least an aspect of processing for each of a set of transaction requests having the same identifier must be performed in the order of issue of that set of transactions;
  • detection circuitry to detect the state of an indicator associated with the identifier to indicate whether that identifier relates to more than one concurrently pending transaction request.
  • an initiator device comprising:
  • transaction issue circuitry to issue a transaction request for a data processing transaction, the transaction request having an associated identifier such that at least an aspect of the processing for each of a set of transaction requests having the same identifier must be performed in the order of issue of that set of transactions;
  • the transaction issue circuitry being configured to associate an indicator with the identifier to indicate whether that identifier relates to more than one concurrently pending transaction request.
  • a data signal representing a data handling transaction request comprising an identifier such that at least an aspect of processing for each of a set of transaction requests having the same identifier must be performed in the order of issue of that set of transactions, and an indicator associated with the identifier to indicate whether that identifier relates to more than one concurrently pending transaction request
  • the transaction request having an associated identifier such that at least an aspect of processing for each of a set of transaction requests having the same identifier must be performed in the order of issue of that set of transactions;
  • FIG. 1 schematically illustrates a data processing apparatus
  • FIGS. 2 and 3 schematically illustrate example transaction handling situations
  • FIG. 4 schematically illustrates transaction handling circuitry
  • FIGS. 5 and 6 are schematic flowcharts illustrating methods of operation of an initiator device
  • FIGS. 7 to 9 are schematic flowcharts illustrating methods of operation of transaction handling circuitry
  • FIG. 10 schematically illustrates transaction handling circuitry
  • FIG. 11 schematically illustrates an initiator device
  • FIGS. 12 and 13 are schematic flowcharts illustrating summary methods.
  • transaction handling circuitry to handle a transaction request for a data processing transaction, the transaction request having an associated identifier such that at least an aspect of processing for each of a set of transaction requests having the same identifier must be performed in the order of issue of that set of transactions;
  • detection circuitry to detect the state of an indicator associated with the identifier to indicate whether that identifier relates to more than one concurrently pending transaction request.
  • an indicator is provided to indicate whether an identifier relates to more than one concurrently pending transaction request. If not, then any reordering arrangements can conveniently be ignored or bypassed, because there is no ordering requirement imposed by a transaction identifier which does not relate to more than one concurrently pending transaction request.
  • An ordering requirement applicable to transaction request handling can be such that the aspect of processing comprises one or more selected from the list consisting of:
  • ordering circuitry (as part of the transaction handling device) may comprise buffer circuitry to store data defining a set of requests having the same identifier; and comparator circuitry to detect whether the identifier associated with a newly received transaction is the same as the identifier for any transaction for which data is held by the buffer circuitry.
  • the ordering circuitry is configured to output data defining those transactions held by the buffer circuitry having the same identifier, according to an order of issue of those transactions.
  • the buffer circuitry may be configured to remove buffered data relating to a transaction identifier in response to a completion acknowledgement for that transaction identifier.
  • Re-ordering can be conveniently avoided in the case of transactions which do not share an identifier with another concurrently pending transaction, in arrangements in which the transaction handling circuitry is configured to bypass the ordering circuitry when handling a transaction request for which the detection circuitry detects that the indicator is set to indicate that the request identifier relates to only one concurrently pending request. In turn this allows less powerful (taking up less circuitry space, for example) ordering circuitry to be used, because at least some transaction may bypass it.
  • transaction issue circuitry to issue a transaction request for a data processing transaction, the transaction request having an associated identifier such that at least an aspect of the processing for each of a set of transaction requests having the same identifier must be performed in the order of issue of that set of transactions;
  • the transaction issue circuitry being configured to associate an indicator with the identifier to indicate whether that identifier relates to more than one concurrently pending transaction request.
  • a transaction identifier may be re-used (and still considered not to apply to another concurrently pending transaction) once an earlier transaction having that identifier has completed and (for example) its completion acknowledged to the initiator. Therefore, in example arrangements, the device is responsive to receipt of a completion acknowledgement relating to a transaction identifier, for which the indicator was set to indicate that the transaction related to only one concurrently pending transaction request, to allow the re-use of that transaction identifier for another request.
  • the indicator may be a one bit indicator.
  • interconnect circuitry to connect the one or more initiators to the one or more transaction handling devices.
  • the apparatus is configured to associate the indicator with all transaction messages which include a transaction identifier.
  • Another example embodiment provides a data signal representing a data handling transaction request, the data signal comprising an identifier such that at least an aspect of processing for each of a set of transaction requests having the same identifier must be performed in the order of issue of that set of transactions, and an indicator associated with the identifier to indicate whether that identifier relates to more than one concurrently pending transaction request.
  • the transaction request having an associated identifier such that at least an aspect of processing for each of a set of transaction requests having the same identifier must be performed in the order of issue of that set of transactions;
  • a set of IDs in the initiator may be implicitly known to be unique because of other details of the operation of the initiator; that is there would not need to be two separately or serially implemented steps to encompass this functionality.
  • FIG. 1 schematically illustrates a data processing system comprising a number of master or transaction-initiating devices (otherwise referred to as initiators) 100 , 110 , 120 , 130 .
  • the initiators 100 , 110 operate according to the AXI (Advanced Extensible Interface) protocol.
  • the initiators 120 , 130 operate according to the CHI (Coherent Hub Interface) protocol.
  • the initiators 100 , 110 are connected to an interconnect 140 , and the initiators 120 , 130 are connected to a cache coherent interconnect 150 .
  • the interconnect 140 , 150 are connected via an interconnect 160 to various slave nodes 170 , 180 such as a main memory, a dynamic memory controller accessing a main memory or the like.
  • the data processing apparatus of FIG. 1 can be implemented as a so-called system on chip (SoC) or network on chip (NoC) system.
  • SoC system on chip
  • NoC network on chip
  • the initiators 100 . . . 130 issue so-called transaction requests relating to data processing operations.
  • An example of a transaction request is a request to read data from a particular memory address or range of memory addresses.
  • Another example is a request to write data to a memory address or a range of memory addresses.
  • Other transaction requests may relate to matters such as invalidating a copy of certain data held at a particular node in the apparatus, or the like.
  • the initiators associate with each transaction a transaction identifier.
  • the transaction identifier can be “unique”.
  • the term “unique” does not imply uniqueness across the whole apparatus, nor does it imply uniqueness across the whole of time. Instead, uniqueness is defined as there being just one currently pending transaction from that particular initiator having that identifier.
  • an identifier can be unique even though another initiator uses the same identifier, and an identifier can still be considered unique despite being used multiple times by the same initiator, if there is only one currently pending transaction with that identifier, which is to say, once the transaction with a particular identifier has been completed and its completion has been acknowledged back to the initiator, the same identifier can be used in a subsequent transaction without compromising its unique status.
  • a data processing transaction issued by an initiator is delivered, via the various interconnects, to a destination such as one of the slave nodes 170 , 180 . There, the processing relating to the transaction is performed and an appropriate response sent to the initiator of that transaction. At the end of processing relating to a transaction, a completion acknowledgement is sent to the initiator.
  • the CHI initiators 120 , 130 are bound, by the CHI protocol, always to use unique identifiers as defined above.
  • the AXI initiators 100 , 110 can use either unique identifiers or can issue a set of two or more transactions having the same identifier. Such an arrangement is allowed within the AXI and various other transaction handling protocols.
  • a condition applied to such a set of transactions sharing an identifier is that at least an aspect of processing for each of the set of transaction requests having the same identifier must be performed in the order of issue of that set of transactions. Examples of such an aspect of processing are one or more selected from the list consisting of:
  • FIG. 1 therefore provides an example of data processing apparatus comprising one or more transaction handling devices; one or more initiator devices; and interconnect circuitry to connect the one or more initiators to the one or more transaction handling devices.
  • a transaction handling device can be a slave device. But more generally it is a device downstream of the initiator. So, an interconnect, or a part of an interconnect, can be a transaction handling device.
  • FIG. 2 schematically illustrates a situation in which re-ordering may be required.
  • a master or initiator device 200 sends a set of transaction sharing a transaction identifier to a pair of slave devices 210 , 220 .
  • the set of transaction requests sharing an identifier some are handled by the slave device 210 in this example, and some by the slave device 220 .
  • the responses received from the two slave devices may be independent of one another in terms of their timing and/or ordering. So, in order to comply with the ordering requirement, logic 230 is used to provide re-ordering.
  • the logic 230 provides the functions of tracking identifiers relating to already in-progress transactions, comparing a newly received transaction request with those identifiers, in some instances providing a re-order buffer so that the results of transactions can be temporarily buffered until they can be issued back to the initiator in the appropriate order, and in some instances providing circuitry relating to CDAS (Cyclic Dependency Avoidance Scheme) which again controls the order in which transactions can be forwarded to the slave devices 210 , 220 in this example in order to avoid deadlocks caused by having to stall the responses from the slave devices 210 , 220 .
  • CDAS Cyclic Dependency Avoidance Scheme
  • FIG. 3 Another example arrangement in which such issues can occur is shown in FIG. 3 , in which an AXI-compliant master or initiator 300 is issuing transaction requests to a CHI-compliant slave or other domain 310 .
  • logic 320 is provided with the functionality of the logic 230 as discussed above and in order to act as a bridge between the two protocols.
  • the indicator may be a one-bit indicator (since only a unique/not unique indication is required).
  • the indicator could be multiplexed onto the same connections already used to convey the identifier (or other data field), for speed and convenience the indicator can be carried, in some example arrangements, by an additional connection.
  • the indicator could just be provided from the initiator to the first downstream stage which has a reordering capability, in example arrangements it is associated with all transaction messages (including responses and completion acknowledgements for example) carrying the identifier.
  • An example format of the identifier and indicator is:
  • a transaction-related message carrying this information provides an example of a data signal representing a data handling transaction request, the data signal comprising an identifier such that at least an aspect of processing for each of a set of transaction requests having the same identifier must be performed in the order of issue of that set of transactions, and an indicator associated with the identifier to indicate whether that identifier relates to more than one concurrently pending transaction request.
  • FIG. 4 schematically represents an example of the logic 230 , 320 providing a transaction ordering function.
  • the circuitry 400 receives transactions at a transaction input 410 (also functioning as a response output—to be described below) with their associated indicators.
  • Detection circuitry acting as an indicator detector 420 detects whether the indicator associated with a received transaction request indicates that the identifier is unique as discussed above. If the transaction identifier is unique, then reordering is not required and the transaction can be forwarded via a bypass path 430 to a transaction output 440 (also functioning as a response input, to be discussed below).
  • circuitry including an identifier and/or re-order buffer 450 , a detector and ordering logic 460 and CDAS circuitry 470 are provided to handle the correct ordering of the transaction. The operation of these units will be discussed in detail below.
  • the transaction request is output by the transaction output 440 .
  • a response is generated to be passed back to the initiator.
  • the response may include data provided in response to a read request.
  • the response may include a completion acknowledgement indicating that a processing operation has been carried out.
  • the response input 440 refers the received response to an indicator detector 445 (which is shown separately in FIG. 4 for clarity of the diagram, but which may be implemented by the same logic as the indicator detector 420 ). If the indicator indicates that the response relates to a transaction request having a unique identifier, the response can be passed by the bypass path 430 for output 410 .
  • the indicator indicates that the response relates to a transaction request having a non-unique identifier
  • the response is passed to the buffer 450 , detector/ordering logic 460 , CDAS 470 for handling in a manner to be discussed below before being output, so as (in example arrangements) to output data defining those transactions held by the buffer circuitry having the same identifier, according to an order of issue (by the relevant initiator) of those transactions.
  • FIG. 4 therefore provides an example of ordering circuitry ( 450 , 460 , 470 ) comprising buffer circuitry ( 450 ) to store data defining a set of requests having the same identifier; and comparator circuitry ( 460 ) to detect whether the identifier associated with a newly received transaction is the same as the identifier for any transaction for which data is held by the buffer circuitry.
  • the transaction handling circuitry 400 is configured to bypass the ordering circuitry (for example, by the bypass path 430 ) when handling a transaction request for which the detection circuitry detects that the indicator is set to indicate that the request identifier relates to only one concurrently pending request.
  • FIG. 5 is a schematic flow chart illustrating operations at a transaction initiator.
  • the initiator establishes a transaction to be issued and assigns an identifier to that transaction.
  • the initiator determines whether the identifier is unique, which is to say the identifier is not used in respect of any other currently pending transaction and that the transaction itself is not one of a set of transactions for which the same identifier will need to be reused.
  • a set of IDs in the initiator may be implicitly known to be unique because of other details of the operation of the initiator; that is there would not need to be two separately or serially implemented steps to encompass this functionality.
  • the initiator generates the transaction and is therefore aware of whether the identifier is being used in a unique manner or not.
  • the transaction may be one of a group of transactions to handle data transfers to or from a group of line fill buffers or other cache memory areas at the initiator, in which case the initiator is aware, as the transactions are being assigned a shared identifier, that the identifier is being used non-uniquely in respect of multiple transaction requests.
  • the initiator may be connected to or associated with another domain which provides a set or stream of transactions to be forwarded as requests, all having the same identifier.
  • the transactions may be such that the initiator device does not have a reordering capability (or sufficient capability) to receive transaction responses in any order and so uses the same identifier to ensure that responses are received in a known order.
  • FIG. 6 is a schematic flow chart representing operations at an initiator, in which at a step 600 , the initiator receives a completion acknowledgement in respect of a particular identifier, and at a step 610 allows the re-use of that identifier as a unique identifier.
  • the initiator device being responsive to receipt of a completion acknowledgement relating to a transaction identifier, for which the indicator was set to indicate that the transaction related to only one concurrently pending transaction request, to allow the re-use of that transaction identifier for another request.
  • FIG. 7 is a schematic flow chart relating to the circuitry of FIG. 4 .
  • FIG. 7 relates to the handling of a newly received transaction (a generally downward path as drawn in FIG. 4 ).
  • FIGS. 8 and 9 to be discussed below relate to the handling of a newly received transaction response (a generally upward path as drawn in FIG. 4 ).
  • a new transaction request is received at the input 410 .
  • the detector 420 examines the indicator and, at a step 720 , if the indicator is set to indicate uniqueness, the transaction is routed via the bypass path 430 (as represented by the “yes” branch 725 ) and the transaction is issued by the output 440 at a step 730 .
  • the identifier of the newly received transaction request is compared to a tracking list of identifiers for currently pending transactions held by the buffer 450 . If the identifier is already present in the list, data defining the newly received transaction is added to the list in an ordered position relative to the one or more entries in the list, to indicate that the newly received transaction has been received after those transactions already in the list. If the identifier is not already in the list, then data defining the transaction is added to the list.
  • Entries in the list persist until a completion acknowledgement is subsequently received relating to that identifier, as an example of the buffer circuitry being configured to remove buffered data relating to a transaction identifier in response to a completion acknowledgement for that transaction identifier. Note however that in an arrangement using re-order buffers, the entry may persist until the completion acknowledgement is both received and then sent on from the buffer. This is because it may be received in the wrong order so needs to remain tracked until it is valid to be sent.
  • step 750 the transaction is stalled until, as a “no” outcome of the step 750 , the transaction is prepared for issue by allocating and tracking resources at a step 760 .
  • Control then passes to the step 730 at which the transaction is issued.
  • the transaction request is stalled until the conflict has been resolved (for example, by an earlier-received transaction having the same identifier being completed).
  • the request can be added to a re-order buffer (which may be implemented by the buffer 450 ).
  • the re-order buffer stores the request itself, rather than just storing data defining the request. So, there is no need to stall receipt and processing of the request from the node which provides it; the request can be accepted and then stored by the re-order buffer until the appropriate stage to forward the request.
  • FIG. 8 relates to a similar situation but in respect of a transaction response received (at the input 440 ) from a slave or other node which was destination of the transaction.
  • the indicator field is examined to detect whether the identifier is unique as discussed above. If, at a step 820 , the indicator is unique then (as a “yes” branch 825 ) control passes (by the bypass path 430 ) to a step 830 at which the response is issued back towards the initiator.
  • FIG. 9 schematically illustrates an alternative to stalling the transaction at the “no” outcome of step 850 .
  • the steps shown in FIG. 9 replace the step 850 in FIG. 8 , with the remainder of FIG. 8 remaining the same.
  • the response is added to a re-order buffer (which may be implemented by the buffer 450 ).
  • the re-order buffer stores the response itself, rather than just storing data defining the response. So, there is no need to stall receipt and processing of the response from the node which provides it; the response can be accepted and then stored by the re-order buffer until the appropriate stage to forward the response.
  • the ID tracking list is consulted to detect, at a step 920 , whether the transaction response is valid to be issued. If the answer is “no” then control passes back to the step 910 , whereas if the answer is “yes” then control passes to the step 860 .
  • FIG. 10 schematically illustrates a summary embodiment of a transaction handling device comprising transaction handling circuitry 1000 to handle a transaction request for a data processing transaction, the transaction request having an associated identifier such that at least an aspect of processing for each of a set of transaction requests having the same identifier must be performed in the order of issue of that set of transactions; and detection circuitry 1010 to detect the state of an indicator associated with the identifier to indicate whether that identifier relates to more than one concurrently pending transaction request.
  • FIG. 11 schematically illustrates a summary embodiment of an initiator device comprising transaction issue circuitry 1100 to issue a transaction request for a data processing transaction, the transaction request having an associated identifier such that at least an aspect of the processing for each of a set of transaction requests having the same identifier must be performed in the order of issue of that set of transactions; the transaction issue circuitry being configured to associate an indicator with the identifier to indicate whether that identifier relates to more than one concurrently pending transaction request.
  • FIG. 12 is a schematic flowchart illustrating a method comprising:
  • a transaction request for a data processing transaction the transaction request having an associated identifier such that at least an aspect of processing for each of a set of transaction requests having the same identifier must be performed in the order of issue of that set of transactions;
  • a set of IDs in the initiator may be implicitly known to be unique because of other details of the operation of the initiator; that is there would not need to be two separately or serially implemented steps to encompass this functionality.
  • FIG. 13 is a schematic flowchart illustrating a method comprising:
  • a transaction request for a data processing transaction issuing (at a step 1300 ) a transaction request for a data processing transaction, the transaction request having an associated identifier such that at least an aspect of the processing for each of a set of transaction requests having the same identifier must be performed in the order of issue of that set of transactions;
  • the indicator can be set (or hard-wired) to indicate “not unique”, which will always give the correct ordering behaviour. If the system integrator has prior knowledge that the AXI initiator or subsystem not using these techniques always generates unique IDs, the indicator can be set or hard-wired to “unique” at the input to the interconnect or slave which uses these techniques, rather than it coming with the transactions.
  • the present techniques can contribute to saving circuit area in an integrated circuit implementation. This can be the case if the system architect has some knowledge of the properties of the masters, in particular how much bandwidth they require for transactions that do not use unique IDs.
  • a design tool may help with this decision. For example, the design tool may take input about the requirements and/or unique ID behaviour of a master (for example, from a model or input directly into the design tool as a form of specification) and use this information to configure a more optimal size of, or presence of, ordering circuitry.
  • the words “configured to . . . ” are used to mean that an element of an apparatus has a configuration able to carry out the defined operation.
  • a “configuration” means an arrangement or manner of interconnection of hardware or software.
  • the apparatus may have dedicated hardware which provides the defined operation, or a processor or other processing device (such as a processing element as discussed above) may be programmed to perform the function.
  • Configured to does not imply that the apparatus element needs to be changed in any way in order to provide the defined operation.

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Computer And Data Communications (AREA)
  • Bus Control (AREA)

Abstract

A transaction handling device comprises transaction handling circuitry to handle a transaction request for a data processing transaction, the transaction request having an associated identifier such that at least an aspect of processing for each of a set of transaction requests having the same identifier must be performed in the order of issue of that set of transactions; and detection circuitry to detect the state of an indicator associated with the identifier to indicate whether that identifier relates to more than one concurrently pending transaction request.

Description

    BACKGROUND
  • This disclosure relates to transaction handling.
  • Some transaction handling protocols make use of identifiers associated with data processing transactions, so that an initiator device (which initiates a transaction) can await a response to a transaction and, when the response arrives from a transaction server device, can handle the response appropriately.
  • In some protocols, multiple concurrent transactions are able to be issued by an initiator device having the same identifier. An ordering requirement is generally applied to such sets of transactions. For example, the ordering requirement may be one or more of a requirement that the transaction is delivered to its destination in the transaction issue order, a requirement that i) a response to the transaction is returned to the initiator of the transaction in the transaction issue order, and a requirement that the transaction is completed in the transaction issue order.
  • However, instances can arise in which the ordering could potentially be compromised, for example where the set of transactions is handled by multiple server devices. In such instances, so-called ordering techniques can be used to avoid the ordering requirement being compromised. These techniques can include stalling transactions which are received or handled “early” relative to the ordering requirement, and/or buffering information relating to the transactions until the appropriate stage to forward such information.
  • SUMMARY
  • In an example arrangement there is provided a transaction handling device comprising:
  • transaction handling circuitry to handle a transaction request for a data processing transaction, the transaction request having an associated identifier such that at least an aspect of processing for each of a set of transaction requests having the same identifier must be performed in the order of issue of that set of transactions; and
  • detection circuitry to detect the state of an indicator associated with the identifier to indicate whether that identifier relates to more than one concurrently pending transaction request.
  • In another example arrangement there is provided an initiator device comprising:
  • transaction issue circuitry to issue a transaction request for a data processing transaction, the transaction request having an associated identifier such that at least an aspect of the processing for each of a set of transaction requests having the same identifier must be performed in the order of issue of that set of transactions;
  • the transaction issue circuitry being configured to associate an indicator with the identifier to indicate whether that identifier relates to more than one concurrently pending transaction request.
  • In another example arrangement there is provided a data signal representing a data handling transaction request, the data signal comprising an identifier such that at least an aspect of processing for each of a set of transaction requests having the same identifier must be performed in the order of issue of that set of transactions, and an indicator associated with the identifier to indicate whether that identifier relates to more than one concurrently pending transaction request
  • In another example arrangement there is provided a method comprising:
  • handling a transaction request for a data processing transaction, the transaction request having an associated identifier such that at least an aspect of processing for each of a set of transaction requests having the same identifier must be performed in the order of issue of that set of transactions; and
  • detecting the state of an indicator associated with the identifier to indicate whether that identifier relates to more than one concurrently pending transaction request.
  • In another example arrangement there is provided a method comprising:
  • issuing a transaction request for a data processing transaction, the transaction request having an associated identifier such that at least an aspect of the processing for each of a set of transaction requests having the same identifier must be performed in the order of issue of that set of transactions; and
  • associating an indicator with the identifier to indicate whether that identifier relates to more than one concurrently pending transaction request.
  • Further respective aspects and features of the present technology are defined by the appended claims.
  • BRIEF DESCRIPTION OF THE DRAWINGS
  • The present technique will be described further, by way of example only, with reference to embodiments thereof as illustrated in the accompanying drawings, in which:
  • FIG. 1 schematically illustrates a data processing apparatus;
  • FIGS. 2 and 3 schematically illustrate example transaction handling situations;
  • FIG. 4 schematically illustrates transaction handling circuitry;
  • FIGS. 5 and 6 are schematic flowcharts illustrating methods of operation of an initiator device;
  • FIGS. 7 to 9 are schematic flowcharts illustrating methods of operation of transaction handling circuitry;
  • FIG. 10 schematically illustrates transaction handling circuitry;
  • FIG. 11 schematically illustrates an initiator device; and
  • FIGS. 12 and 13 are schematic flowcharts illustrating summary methods.
  • DESCRIPTION OF EMBODIMENTS
  • Before discussing the embodiments with reference to the accompanying figures, the following description of embodiments is provided.
  • An example embodiment provides a transaction handling device comprising:
  • transaction handling circuitry to handle a transaction request for a data processing transaction, the transaction request having an associated identifier such that at least an aspect of processing for each of a set of transaction requests having the same identifier must be performed in the order of issue of that set of transactions; and
  • detection circuitry to detect the state of an indicator associated with the identifier to indicate whether that identifier relates to more than one concurrently pending transaction request.
  • In the example arrangements, an indicator is provided to indicate whether an identifier relates to more than one concurrently pending transaction request. If not, then any reordering arrangements can conveniently be ignored or bypassed, because there is no ordering requirement imposed by a transaction identifier which does not relate to more than one concurrently pending transaction request.
  • An ordering requirement applicable to transaction request handling can be such that the aspect of processing comprises one or more selected from the list consisting of:
  • (i) the transaction being delivered to its destination;
  • (ii) a response to the transaction being returned to the initiator of the transaction; and
  • (iii) the transaction being completed (for example, all of the processing relating to that transaction having been performed).
  • In example arrangements, ordering circuitry (as part of the transaction handling device) may comprise buffer circuitry to store data defining a set of requests having the same identifier; and comparator circuitry to detect whether the identifier associated with a newly received transaction is the same as the identifier for any transaction for which data is held by the buffer circuitry. In examples, the ordering circuitry is configured to output data defining those transactions held by the buffer circuitry having the same identifier, according to an order of issue of those transactions.
  • In example arrangements, the buffer circuitry may be configured to remove buffered data relating to a transaction identifier in response to a completion acknowledgement for that transaction identifier.
  • Re-ordering can be conveniently avoided in the case of transactions which do not share an identifier with another concurrently pending transaction, in arrangements in which the transaction handling circuitry is configured to bypass the ordering circuitry when handling a transaction request for which the detection circuitry detects that the indicator is set to indicate that the request identifier relates to only one concurrently pending request. In turn this allows less powerful (taking up less circuitry space, for example) ordering circuitry to be used, because at least some transaction may bypass it.
  • Another example embodiment provides an initiator device comprising:
  • transaction issue circuitry to issue a transaction request for a data processing transaction, the transaction request having an associated identifier such that at least an aspect of the processing for each of a set of transaction requests having the same identifier must be performed in the order of issue of that set of transactions;
  • the transaction issue circuitry being configured to associate an indicator with the identifier to indicate whether that identifier relates to more than one concurrently pending transaction request.
  • In example arrangements, a transaction identifier may be re-used (and still considered not to apply to another concurrently pending transaction) once an earlier transaction having that identifier has completed and (for example) its completion acknowledged to the initiator. Therefore, in example arrangements, the device is responsive to receipt of a completion acknowledgement relating to a transaction identifier, for which the indicator was set to indicate that the transaction related to only one concurrently pending transaction request, to allow the re-use of that transaction identifier for another request.
  • Because only a unique/not unique indication is needed in at least example embodiments, the indicator may be a one bit indicator.
  • Another example embodiment provides a data processing apparatus comprising:
  • one or more transaction handling devices as defined above;
  • one or more initiator devices as defined above; and
  • interconnect circuitry to connect the one or more initiators to the one or more transaction handling devices.
  • To allow reordering to be avoided (in the case of unique identifiers) at various stages in the handling of a transaction, in example arrangements the apparatus is configured to associate the indicator with all transaction messages which include a transaction identifier.
  • Another example embodiment provides a data signal representing a data handling transaction request, the data signal comprising an identifier such that at least an aspect of processing for each of a set of transaction requests having the same identifier must be performed in the order of issue of that set of transactions, and an indicator associated with the identifier to indicate whether that identifier relates to more than one concurrently pending transaction request.
  • Another example embodiment provides a method comprising:
  • handling a transaction request for a data processing transaction, the transaction request having an associated identifier such that at least an aspect of processing for each of a set of transaction requests having the same identifier must be performed in the order of issue of that set of transactions; and
  • detecting the state of an indicator associated with the identifier to indicate whether that identifier relates to more than one concurrently pending transaction request.
  • Note that these steps may be carried out in parallel or implicitly. For example, a set of IDs in the initiator may be implicitly known to be unique because of other details of the operation of the initiator; that is there would not need to be two separately or serially implemented steps to encompass this functionality.
  • Another example embodiment provides a method comprising:
  • issuing a transaction request for a data processing transaction, the transaction request having an associated identifier such that at least an aspect of the processing for each of a set of transaction requests having the same identifier must be performed in the order of issue of that set of transactions; and
  • associating an indicator with the identifier to indicate whether that identifier relates to more than one concurrently pending transaction request.
  • Referring to the drawings, FIG. 1 schematically illustrates a data processing system comprising a number of master or transaction-initiating devices (otherwise referred to as initiators) 100, 110, 120, 130. The initiators 100, 110 operate according to the AXI (Advanced Extensible Interface) protocol. The initiators 120, 130 operate according to the CHI (Coherent Hub Interface) protocol.
  • The initiators 100, 110 are connected to an interconnect 140, and the initiators 120, 130 are connected to a cache coherent interconnect 150.
  • The interconnect 140, 150 are connected via an interconnect 160 to various slave nodes 170, 180 such as a main memory, a dynamic memory controller accessing a main memory or the like.
  • The data processing apparatus of FIG. 1 can be implemented as a so-called system on chip (SoC) or network on chip (NoC) system.
  • In operation, the initiators 100 . . . 130 issue so-called transaction requests relating to data processing operations. An example of a transaction request is a request to read data from a particular memory address or range of memory addresses. Another example is a request to write data to a memory address or a range of memory addresses. Other transaction requests may relate to matters such as invalidating a copy of certain data held at a particular node in the apparatus, or the like.
  • The initiators associate with each transaction a transaction identifier. In some instances, the transaction identifier can be “unique”. The term “unique” does not imply uniqueness across the whole apparatus, nor does it imply uniqueness across the whole of time. Instead, uniqueness is defined as there being just one currently pending transaction from that particular initiator having that identifier. So, an identifier can be unique even though another initiator uses the same identifier, and an identifier can still be considered unique despite being used multiple times by the same initiator, if there is only one currently pending transaction with that identifier, which is to say, once the transaction with a particular identifier has been completed and its completion has been acknowledged back to the initiator, the same identifier can be used in a subsequent transaction without compromising its unique status.
  • A data processing transaction issued by an initiator is delivered, via the various interconnects, to a destination such as one of the slave nodes 170, 180. There, the processing relating to the transaction is performed and an appropriate response sent to the initiator of that transaction. At the end of processing relating to a transaction, a completion acknowledgement is sent to the initiator.
  • The CHI initiators 120, 130 are bound, by the CHI protocol, always to use unique identifiers as defined above.
  • However, the AXI initiators 100, 110 can use either unique identifiers or can issue a set of two or more transactions having the same identifier. Such an arrangement is allowed within the AXI and various other transaction handling protocols. A condition applied to such a set of transactions sharing an identifier, however, is that at least an aspect of processing for each of the set of transaction requests having the same identifier must be performed in the order of issue of that set of transactions. Examples of such an aspect of processing are one or more selected from the list consisting of:
      • The transaction being delivered to its destination (such as a slave node);
      • A response to the transaction being returned to the initiator; and
      • The transaction being completed (for example, that all of the processing relating to that transaction has completed being processed at the slave; in the example case of a write, the result of the write is now observable by any subsequent transaction to the same address).
  • It will be understood that more than one of these conditions can apply.
  • Bearing in mind the requirement for at least partially ordered processing of transaction requests sharing a transaction identifier, so-called reordering arrangements can be provided within the apparatus of FIG. 1 to ensure that the ordering requirement is met.
  • So, in order to satisfy the ordering constraint, when transactions with the same identifier are sent to destinations that may re-order them, in some examples arrangements they are either stalled or the system is provided with one or more re-order buffers. Such precautions are appropriate both to satisfy the ordering requirements of the protocol and to try to avoid associated deadlock conditions.
  • FIG. 1 therefore provides an example of data processing apparatus comprising one or more transaction handling devices; one or more initiator devices; and interconnect circuitry to connect the one or more initiators to the one or more transaction handling devices.
  • Note that a transaction handling device can be a slave device. But more generally it is a device downstream of the initiator. So, an interconnect, or a part of an interconnect, can be a transaction handling device.
  • FIG. 2 schematically illustrates a situation in which re-ordering may be required. A master or initiator device 200 sends a set of transaction sharing a transaction identifier to a pair of slave devices 210, 220. In other words, of the set of transaction requests sharing an identifier, some are handled by the slave device 210 in this example, and some by the slave device 220. The responses received from the two slave devices may be independent of one another in terms of their timing and/or ordering. So, in order to comply with the ordering requirement, logic 230 is used to provide re-ordering.
  • The logic 230 provides the functions of tracking identifiers relating to already in-progress transactions, comparing a newly received transaction request with those identifiers, in some instances providing a re-order buffer so that the results of transactions can be temporarily buffered until they can be issued back to the initiator in the appropriate order, and in some instances providing circuitry relating to CDAS (Cyclic Dependency Avoidance Scheme) which again controls the order in which transactions can be forwarded to the slave devices 210, 220 in this example in order to avoid deadlocks caused by having to stall the responses from the slave devices 210, 220.
  • Another example arrangement in which such issues can occur is shown in FIG. 3, in which an AXI-compliant master or initiator 300 is issuing transaction requests to a CHI-compliant slave or other domain 310. Again, between the master device and the slave device (for example as part of interconnect circuitry), logic 320 is provided with the functionality of the logic 230 as discussed above and in order to act as a bridge between the two protocols.
  • Examples of the present technique provide an indicator associated with the transaction identifier to indicate whether that identifier relates to more than one concurrently pending transaction request.
  • In some examples, the indicator may be a one-bit indicator (since only a unique/not unique indication is required). Although the indicator could be multiplexed onto the same connections already used to convey the identifier (or other data field), for speed and convenience the indicator can be carried, in some example arrangements, by an additional connection. Although the indicator could just be provided from the initiator to the first downstream stage which has a reordering capability, in example arrangements it is associated with all transaction messages (including responses and completion acknowledgements for example) carrying the identifier.
  • An example format of the identifier and indicator is:
  • Indicator Identifier
    (1 bit) (6 bits)
    0b1 0b101010
  • A transaction-related message carrying this information provides an example of a data signal representing a data handling transaction request, the data signal comprising an identifier such that at least an aspect of processing for each of a set of transaction requests having the same identifier must be performed in the order of issue of that set of transactions, and an indicator associated with the identifier to indicate whether that identifier relates to more than one concurrently pending transaction request.
  • Techniques for providing the indicator will be discussed below. First, FIG. 4 schematically represents an example of the logic 230, 320 providing a transaction ordering function.
  • Referring to FIG. 4, the circuitry 400 receives transactions at a transaction input 410 (also functioning as a response output—to be described below) with their associated indicators. Detection circuitry acting as an indicator detector 420 detects whether the indicator associated with a received transaction request indicates that the identifier is unique as discussed above. If the transaction identifier is unique, then reordering is not required and the transaction can be forwarded via a bypass path 430 to a transaction output 440 (also functioning as a response input, to be discussed below).
  • If, however, the identifier is not unique (as indicated by the indicator) then circuitry including an identifier and/or re-order buffer 450, a detector and ordering logic 460 and CDAS circuitry 470 are provided to handle the correct ordering of the transaction. The operation of these units will be discussed in detail below. The transaction request is output by the transaction output 440.
  • In response to processing the transaction request by the destination device, a response is generated to be passed back to the initiator. The response may include data provided in response to a read request. The response may include a completion acknowledgement indicating that a processing operation has been carried out.
  • The response input 440 refers the received response to an indicator detector 445 (which is shown separately in FIG. 4 for clarity of the diagram, but which may be implemented by the same logic as the indicator detector 420). If the indicator indicates that the response relates to a transaction request having a unique identifier, the response can be passed by the bypass path 430 for output 410. If, however, the indicator indicates that the response relates to a transaction request having a non-unique identifier, then the response is passed to the buffer 450, detector/ordering logic 460, CDAS 470 for handling in a manner to be discussed below before being output, so as (in example arrangements) to output data defining those transactions held by the buffer circuitry having the same identifier, according to an order of issue (by the relevant initiator) of those transactions.
  • FIG. 4 therefore provides an example of ordering circuitry (450, 460, 470) comprising buffer circuitry (450) to store data defining a set of requests having the same identifier; and comparator circuitry (460) to detect whether the identifier associated with a newly received transaction is the same as the identifier for any transaction for which data is held by the buffer circuitry. The transaction handling circuitry 400 is configured to bypass the ordering circuitry (for example, by the bypass path 430) when handling a transaction request for which the detection circuitry detects that the indicator is set to indicate that the request identifier relates to only one concurrently pending request.
  • FIG. 5 is a schematic flow chart illustrating operations at a transaction initiator.
  • At a step 500, the initiator establishes a transaction to be issued and assigns an identifier to that transaction.
  • At a step 510, the initiator determines whether the identifier is unique, which is to say the identifier is not used in respect of any other currently pending transaction and that the transaction itself is not one of a set of transactions for which the same identifier will need to be reused.
  • Note that these steps may be carried out in parallel or implicitly. For example, a set of IDs in the initiator may be implicitly known to be unique because of other details of the operation of the initiator; that is there would not need to be two separately or serially implemented steps to encompass this functionality.
  • The initiator generates the transaction and is therefore aware of whether the identifier is being used in a unique manner or not. For example, the transaction may be one of a group of transactions to handle data transfers to or from a group of line fill buffers or other cache memory areas at the initiator, in which case the initiator is aware, as the transactions are being assigned a shared identifier, that the identifier is being used non-uniquely in respect of multiple transaction requests. In another example, the initiator may be connected to or associated with another domain which provides a set or stream of transactions to be forwarded as requests, all having the same identifier. In another example, the transactions may be such that the initiator device does not have a reordering capability (or sufficient capability) to receive transaction responses in any order and so uses the same identifier to ensure that responses are received in a known order.
  • If, at a step 520, the identifier is detected to be unique then control passes to a step 530 at which the indicator is set to indicate uniqueness. If not, then control passes to a step 540 at which the indicator is set to indicate a lack of uniqueness.
  • FIG. 6 is a schematic flow chart representing operations at an initiator, in which at a step 600, the initiator receives a completion acknowledgement in respect of a particular identifier, and at a step 610 allows the re-use of that identifier as a unique identifier. This is an example of the initiator device being responsive to receipt of a completion acknowledgement relating to a transaction identifier, for which the indicator was set to indicate that the transaction related to only one concurrently pending transaction request, to allow the re-use of that transaction identifier for another request.
  • FIG. 7 is a schematic flow chart relating to the circuitry of FIG. 4. FIG. 7 relates to the handling of a newly received transaction (a generally downward path as drawn in FIG. 4). FIGS. 8 and 9 to be discussed below relate to the handling of a newly received transaction response (a generally upward path as drawn in FIG. 4).
  • At a step 700, a new transaction request is received at the input 410.
  • At a step 710, the detector 420 examines the indicator and, at a step 720, if the indicator is set to indicate uniqueness, the transaction is routed via the bypass path 430 (as represented by the “yes” branch 725) and the transaction is issued by the output 440 at a step 730.
  • If the unique identifier is not set to indicate uniqueness (or is set to indicate non-uniqueness), then control passes to a step 740, implemented by the buffer 450, the logic 460 and, where appropriate, the CDAS 470. At the step 740 the identifier of the newly received transaction request is compared to a tracking list of identifiers for currently pending transactions held by the buffer 450. If the identifier is already present in the list, data defining the newly received transaction is added to the list in an ordered position relative to the one or more entries in the list, to indicate that the newly received transaction has been received after those transactions already in the list. If the identifier is not already in the list, then data defining the transaction is added to the list. Entries in the list persist until a completion acknowledgement is subsequently received relating to that identifier, as an example of the buffer circuitry being configured to remove buffered data relating to a transaction identifier in response to a completion acknowledgement for that transaction identifier. Note however that in an arrangement using re-order buffers, the entry may persist until the completion acknowledgement is both received and then sent on from the buffer. This is because it may be received in the wrong order so needs to remain tracked until it is valid to be sent.
  • If there is any resource conflict or ordering issue, then at a step 750 the transaction is stalled until, as a “no” outcome of the step 750, the transaction is prepared for issue by allocating and tracking resources at a step 760. Control then passes to the step 730 at which the transaction is issued. If there is a resourcing conflict, then the transaction request is stalled until the conflict has been resolved (for example, by an earlier-received transaction having the same identifier being completed). As an alternative to stalling, the request can be added to a re-order buffer (which may be implemented by the buffer 450). The re-order buffer stores the request itself, rather than just storing data defining the request. So, there is no need to stall receipt and processing of the request from the node which provides it; the request can be accepted and then stored by the re-order buffer until the appropriate stage to forward the request.
  • FIG. 8 relates to a similar situation but in respect of a transaction response received (at the input 440) from a slave or other node which was destination of the transaction.
  • At a step 810, the indicator field is examined to detect whether the identifier is unique as discussed above. If, at a step 820, the indicator is unique then (as a “yes” branch 825) control passes (by the bypass path 430) to a step 830 at which the response is issued back towards the initiator.
  • If, however, the outcome at the step 820 is “no” then control passes to a step 840 at which the identifier of the transaction response is compared to the tracking list held by the buffer 450. If, at a step 850, an ordering requirement is met (for example, either the response has been received in the correct sequence relative to other responses, or there is (in this particular example) no ordering requirement for the order of receipt of responses), then control passes to a step 860 at which the resources used by the transaction are de-allocated and un-linked and the response is issued at the step 830. If, however, the outcome at the step 850 is “no” then control passes back to the step 840 in a stall situation until the ordering requirement is met. that is to say, the response is stalled until responses which are required (by the ordering requirement) to be received by the initiator earlier than the current response are available.
  • FIG. 9 schematically illustrates an alternative to stalling the transaction at the “no” outcome of step 850. The steps shown in FIG. 9 replace the step 850 in FIG. 8, with the remainder of FIG. 8 remaining the same.
  • With control passes from the step 840, at a step 900 the response is added to a re-order buffer (which may be implemented by the buffer 450). The re-order buffer stores the response itself, rather than just storing data defining the response. So, there is no need to stall receipt and processing of the response from the node which provides it; the response can be accepted and then stored by the re-order buffer until the appropriate stage to forward the response. At a step 910 the ID tracking list is consulted to detect, at a step 920, whether the transaction response is valid to be issued. If the answer is “no” then control passes back to the step 910, whereas if the answer is “yes” then control passes to the step 860.
  • FIG. 10 schematically illustrates a summary embodiment of a transaction handling device comprising transaction handling circuitry 1000 to handle a transaction request for a data processing transaction, the transaction request having an associated identifier such that at least an aspect of processing for each of a set of transaction requests having the same identifier must be performed in the order of issue of that set of transactions; and detection circuitry 1010 to detect the state of an indicator associated with the identifier to indicate whether that identifier relates to more than one concurrently pending transaction request.
  • FIG. 11 schematically illustrates a summary embodiment of an initiator device comprising transaction issue circuitry 1100 to issue a transaction request for a data processing transaction, the transaction request having an associated identifier such that at least an aspect of the processing for each of a set of transaction requests having the same identifier must be performed in the order of issue of that set of transactions; the transaction issue circuitry being configured to associate an indicator with the identifier to indicate whether that identifier relates to more than one concurrently pending transaction request.
  • FIG. 12 is a schematic flowchart illustrating a method comprising:
  • handling (at a step 1200) a transaction request for a data processing transaction, the transaction request having an associated identifier such that at least an aspect of processing for each of a set of transaction requests having the same identifier must be performed in the order of issue of that set of transactions; and
  • detecting (at a step 1210) the state of an indicator associated with the identifier to indicate whether that identifier relates to more than one concurrently pending transaction request.
  • Note that these steps may be carried out in parallel or implicitly. For example, a set of IDs in the initiator may be implicitly known to be unique because of other details of the operation of the initiator; that is there would not need to be two separately or serially implemented steps to encompass this functionality.
  • FIG. 13 is a schematic flowchart illustrating a method comprising:
  • issuing (at a step 1300) a transaction request for a data processing transaction, the transaction request having an associated identifier such that at least an aspect of the processing for each of a set of transaction requests having the same identifier must be performed in the order of issue of that set of transactions; and
  • associating (at a step 1310) an indicator with the identifier to indicate whether that identifier relates to more than one concurrently pending transaction request.
  • As an example technique for providing backwards compatibility, when a AXI initiator (or pre-existing subsystem) not implementing these techniques is connected to an interconnect or slave which uses these techniques, the indicator can be set (or hard-wired) to indicate “not unique”, which will always give the correct ordering behaviour. If the system integrator has prior knowledge that the AXI initiator or subsystem not using these techniques always generates unique IDs, the indicator can be set or hard-wired to “unique” at the input to the interconnect or slave which uses these techniques, rather than it coming with the transactions.
  • In example arrangements the present techniques can contribute to saving circuit area in an integrated circuit implementation. This can be the case if the system architect has some knowledge of the properties of the masters, in particular how much bandwidth they require for transactions that do not use unique IDs. A design tool may help with this decision. For example, the design tool may take input about the requirements and/or unique ID behaviour of a master (for example, from a model or input directly into the design tool as a form of specification) and use this information to configure a more optimal size of, or presence of, ordering circuitry.
  • In the present application, the words “configured to . . . ” are used to mean that an element of an apparatus has a configuration able to carry out the defined operation. In this context, a “configuration” means an arrangement or manner of interconnection of hardware or software. For example, the apparatus may have dedicated hardware which provides the defined operation, or a processor or other processing device (such as a processing element as discussed above) may be programmed to perform the function. “Configured to” does not imply that the apparatus element needs to be changed in any way in order to provide the defined operation.
  • Although illustrative embodiments of the present techniques have been described in detail herein with reference to the accompanying drawings, it is to be understood that the present techniques are not limited to those precise embodiments, and that various changes, additions and modifications can be effected therein by one skilled in the art without departing from the scope and spirit of the techniques as defined by the appended claims. For example, various combinations of the features of the dependent claims could be made with the features of the independent claims without departing from the scope of the present techniques.

Claims (16)

1. A transaction handling device comprising:
transaction handling circuitry to handle a transaction request for a data processing transaction, the transaction request having an associated identifier such that at least an aspect of processing for each of a set of transaction requests having the same identifier must be performed in the order of issue of that set of transactions; and
detection circuitry to detect the state of an indicator associated with the identifier to indicate whether that identifier relates to more than one concurrently pending transaction request.
2. A device according to claim 1, in which the aspect of processing comprises one or more selected from the list consisting of:
(i) the transaction being delivered to its destination;
(ii) a response to the transaction being returned to the initiator of the transaction; and
(iii) the transaction being completed.
3. A device according to claim 1, comprising ordering circuitry, the ordering circuitry comprising:
buffer circuitry to store data defining a set of requests having the same identifier; and
comparator circuitry to detect whether the identifier associated with a newly received transaction is the same as the identifier for any transaction for which data is held by the buffer circuitry.
4. A device according to claim 3, in which the ordering circuitry is configured to output data defining those transactions held by the buffer circuitry having the same identifier, according to an order of issue of those transactions.
5. A device according to claim 3, in which the buffer circuitry is configured to remove buffered data relating to a transaction identifier in response to a completion acknowledgement for that transaction identifier.
6. A device according to claim 3, in which the transaction handling circuitry is configured to bypass the ordering circuitry when handling a transaction request for which the detection circuitry detects that the indicator is set to indicate that the request identifier relates to only one concurrently pending request.
7. A device according to claim 1, in which the indicator is a one bit indicator.
8. An initiator device comprising:
transaction issue circuitry to issue a transaction request for a data processing transaction, the transaction request having an associated identifier such that at least an aspect of the processing for each of a set of transaction requests having the same identifier must be performed in the order of issue of that set of transactions;
the transaction issue circuitry being configured to associate an indicator with the identifier to indicate whether that identifier relates to more than one concurrently pending transaction request.
9. A device according to claim 8, in which the aspect of processing comprises one or more selected from the list consisting of:
(i) the transaction being delivered to its destination;
(ii) a response to the transaction being returned to the initiator device; and
(iii) the transaction being completed.
10. A device according to claim 8, the device being responsive to receipt of a completion acknowledgement relating to a transaction identifier, for which the indicator was set to indicate that the transaction related to only one concurrently pending transaction request, to allow the re-use of that transaction identifier for another request.
11. A device according to claim 5, in which the indicator is a one bit indicator.
12. Data processing apparatus comprising:
one or more initiator devices each according to claim 5;
one or more transaction handling devices each comprising:
transaction handling circuitry to handle a transaction request for a data processing transaction, the transaction request having an associated identifier such that at least an aspect of processing for each of a set of transaction requests having the same identifier must be performed in the order of issue of that set of transactions; and
detection circuitry to detect the state of an indicator associated with the identifier to indicate whether that identifier relates to more than one concurrently pending transaction request; and
interconnect circuitry to connect the one or more initiators to the one or more transaction handling devices.
13. Apparatus according to claim 12, in which the apparatus is configured to associate the indicator with all transaction messages which include a transaction identifier.
14. A data signal representing a data handling transaction request, the data signal comprising an identifier such that at least an aspect of processing for each of a set of transaction requests having the same identifier must be performed in the order of issue of that set of transactions, and an indicator associated with the identifier to indicate whether that identifier relates to more than one concurrently pending transaction request
15. A method comprising:
handling a transaction request for a data processing transaction, the transaction request having an associated identifier such that at least an aspect of processing for each of a set of transaction requests having the same identifier must be performed in the order of issue of that set of transactions; and
detecting the state of an indicator associated with the identifier to indicate whether that identifier relates to more than one concurrently pending transaction request.
16. A method comprising:
issuing a transaction request for a data processing transaction, the transaction request having an associated identifier such that at least an aspect of the processing for each of a set of transaction requests having the same identifier must be performed in the order of issue of that set of transactions; and
associating an indicator with the identifier to indicate whether that identifier relates to more than one concurrently pending transaction request.
US16/345,789 2016-12-19 2017-12-13 Transaction handling Pending US20190266010A1 (en)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
GB1621638.4 2016-12-19
GB1621638.4A GB2557944B (en) 2016-12-19 2016-12-19 Transaction handling
PCT/GB2017/053725 WO2018115814A1 (en) 2016-12-19 2017-12-13 Transaction handling

Publications (1)

Publication Number Publication Date
US20190266010A1 true US20190266010A1 (en) 2019-08-29

Family

ID=58284356

Family Applications (1)

Application Number Title Priority Date Filing Date
US16/345,789 Pending US20190266010A1 (en) 2016-12-19 2017-12-13 Transaction handling

Country Status (7)

Country Link
US (1) US20190266010A1 (en)
EP (1) EP3555753B1 (en)
JP (1) JP7084406B2 (en)
KR (1) KR102502304B1 (en)
CN (1) CN110073340B (en)
GB (1) GB2557944B (en)
WO (1) WO2018115814A1 (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2021194787A1 (en) * 2020-03-25 2021-09-30 Xilinx, Inc. Noc relaxed write order scheme

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6295548B1 (en) * 1999-03-12 2001-09-25 Compaq Computer Corporation Detection of an imported transaction for finding the global transaction identifier
US7170989B1 (en) * 2002-09-06 2007-01-30 Sprint Communications Company L.P. Transaction dependency manager
GB2440758B (en) 2006-08-08 2011-03-30 Advanced Risc Mach Ltd Interconnect logic for a data processing apparatus
US7552285B2 (en) * 2006-08-30 2009-06-23 Arm Limited Line fill techniques
US8285908B2 (en) * 2010-01-24 2012-10-09 Freescale Semiconductor, Inc. Bus bridge and method for interfacing out-of-order bus and multiple ordered buses
US8866701B2 (en) * 2011-03-03 2014-10-21 Citrix Systems, Inc. Transparent user interface integration between local and remote computing environments
US8656078B2 (en) * 2011-05-09 2014-02-18 Arm Limited Transaction identifier expansion circuitry and method of operation of such circuitry
US8775754B2 (en) * 2011-06-24 2014-07-08 Arm Limited Memory controller and method of selecting a transaction using a plurality of ordered lists
US9201829B2 (en) * 2012-09-06 2015-12-01 Apple Inc. Low power, area-efficient tracking buffer
US9141546B2 (en) * 2012-11-21 2015-09-22 Annapuma Labs Ltd. System and method for managing transactions
US20150199286A1 (en) * 2014-01-10 2015-07-16 Samsung Electronics Co., Ltd. Network interconnect with reduced congestion
GB2525237B (en) * 2014-04-17 2021-03-17 Advanced Risc Mach Ltd Reorder buffer permitting parallel processing operations with repair on ordering hazard detection within interconnect circuitry

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2021194787A1 (en) * 2020-03-25 2021-09-30 Xilinx, Inc. Noc relaxed write order scheme
US11714779B2 (en) 2020-03-25 2023-08-01 Xilinx, Inc. NoC relaxed write order scheme

Also Published As

Publication number Publication date
CN110073340B (en) 2023-06-20
WO2018115814A1 (en) 2018-06-28
EP3555753A1 (en) 2019-10-23
GB2557944B (en) 2020-02-12
GB2557944A (en) 2018-07-04
CN110073340A (en) 2019-07-30
EP3555753B1 (en) 2022-04-13
GB201621638D0 (en) 2017-02-01
KR20190097092A (en) 2019-08-20
JP7084406B2 (en) 2022-06-14
KR102502304B1 (en) 2023-02-22
JP2020502660A (en) 2020-01-23

Similar Documents

Publication Publication Date Title
US11372680B2 (en) RDMA (remote direct memory access) data transfer in a virtual environment
US8601167B2 (en) Maintaining required ordering of transaction requests in interconnects using barriers and hazard checks
US9244829B2 (en) Method and system for efficient memory region deallocation
JP2018109965A (en) Data processing
US9632955B2 (en) Reorder buffer permitting parallel processing operations with repair on ordering hazard detection within interconnect circuitry
US9442878B2 (en) Parallel snoop and hazard checking with interconnect circuitry
EP3555753B1 (en) Transaction handling
CN106815176B (en) System and method for transmitting access requests via a flexible register access bus
TWI750386B (en) Bus system
EP4022445B1 (en) An apparatus and method for handling ordered transactions
US10255103B2 (en) Transaction handling
US9378159B2 (en) Deadlock detection and recovery in SAS
WO2016095340A1 (en) Method and device for determining that data is sent successfully
US8392621B2 (en) Managing dataflow in a temporary memory
US20190065421A1 (en) Determining timeout values for computing systems
US10529396B2 (en) Preinstall of partial store cache lines
US9852088B2 (en) Hazard checking control within interconnect circuitry
CN116701084A (en) Bus protocol verification method, device, equipment, storage medium and program product

Legal Events

Date Code Title Description
AS Assignment

Owner name: ARM LIMITED, UNITED KINGDOM

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:TUNE, ANDREW DAVID;SARA, DANIEL ADAM;GENG, GUANGHUI;SIGNING DATES FROM 20190415 TO 20190423;REEL/FRAME:049018/0466

STPP Information on status: patent application and granting procedure in general

Free format text: DOCKETED NEW CASE - READY FOR EXAMINATION

STPP Information on status: patent application and granting procedure in general

Free format text: RESPONSE TO NON-FINAL OFFICE ACTION ENTERED AND FORWARDED TO EXAMINER

STPP Information on status: patent application and granting procedure in general

Free format text: FINAL REJECTION MAILED

STPP Information on status: patent application and granting procedure in general

Free format text: DOCKETED NEW CASE - READY FOR EXAMINATION

STPP Information on status: patent application and granting procedure in general

Free format text: NON FINAL ACTION MAILED

STPP Information on status: patent application and granting procedure in general

Free format text: FINAL REJECTION MAILED

STPP Information on status: patent application and granting procedure in general

Free format text: RESPONSE AFTER FINAL ACTION FORWARDED TO EXAMINER

STPP Information on status: patent application and granting procedure in general

Free format text: FINAL REJECTION MAILED

STCV Information on status: appeal procedure

Free format text: NOTICE OF APPEAL FILED

STCV Information on status: appeal procedure

Free format text: APPEAL BRIEF (OR SUPPLEMENTAL BRIEF) ENTERED AND FORWARDED TO EXAMINER

STPP Information on status: patent application and granting procedure in general

Free format text: TC RETURN OF APPEAL

STCV Information on status: appeal procedure

Free format text: ON APPEAL -- AWAITING DECISION BY THE BOARD OF APPEALS

STCV Information on status: appeal procedure

Free format text: BOARD OF APPEALS DECISION RENDERED