The present invention is illustrated by way of example and not limitation in the figures of the accompanying drawings, in which like references indicate similar elements and in which:
a) and 2(b) illustrates a portion of an embodiment of an exemplary agent to process an incoming request;
a) and 4(b) illustrates a portion of an embodiment of an exemplary agent to process an outgoing response;
According to the depiction observed in
Because two bi-directional links 113, 114 are coupled to socket 110_1, socket 110_1 includes two separate regions of data link layer and physical layer circuitry 112_1, 112_2. That is, circuitry region 112_1 corresponds to a region of data link layer and physical layer circuitry that services bi-directional link 113; and, circuitry region 112_2 corresponds to a region of data link layer and physical layer circuitry that services bi-directional link 114. As is understood in the art, the physical layer of a network typically forms parallel-to-serial conversion, encoding and transmission functions in the outbound direction and, reception, decoding and serial-to-parallel conversion in the inbound direction.
That data link layer of a network is typically used to ensure the integrity of information being transmitted between points over a point-to-point link (e.g., with CRC code generation on the transmit side and CRC code checking on the receive side). Data link layer circuitry typically includes logic circuitry while physical layer circuitry may include a mixture of digital and mixed-signal (and/or analog) circuitry. Note that the combination of data-link layer and physical layer circuitry may be referred to as a “port” or Media Access Control (MAC) layer. Thus circuitry region 112_1 may be referred to as a first port or MAC layer region and circuitry region 112_2 may be referred to as a second port or MAC layer circuitry region.
Socket 110_1 also includes a region of routing layer circuitry 111. The routing layer of a network is typically responsible for forwarding an inbound packet toward its proper destination amongst a plurality of possible direction choices. For example, if socket 110_2 transmits a packet along link 214 that is destined for socket 110_4, the routing layer 111 of socket 110_1 will receive the packet from port 112_2 and determine that the packet should be forwarded to port 112_1 as an outbound packet (so that it can be transmitted to socket 110_4 along link 213).
By contrast, if socket 110_2 transmits a packet along link 114 that is destined for processor 101_1 within socket 110_1, the routing layer 111 of socket 110_1 will receive the packet from port 212_2 and determine that the packet should be forwarded to processor 101_1. Typically, the routing layer undertakes some analysis of header information within an inbound packet (e.g., destination node ID, connection ID) to “look up” which direction the packet should be forwarded. Routing layer circuitry 111 is typically implemented with logic circuitry and memory circuitry (the memory circuitry being used to implement a “look up table”).
The particular socket 110_1 depicted in detail in
a) illustrates a portion of an embodiment of an exemplary agent to process an incoming request. The agent 241 includes request pattern storage 209, request pattern matching component 219, and a transaction tracker 229.
The request pattern storage 209 stores one or more patterns which are to be matched against the header and/or data of an incoming transaction. Exemplary patterns include a complete (or portion) of a particular header's information, data (or a portion of the data) associated with the header, a combination of header information and data, etc. Header information identifies an address, request type, attribute(s), etc.
The request pattern storage 209 is typically a collection of registers with each register containing one or more patterns. As illustrated in
The patterns stored in the request pattern storage 209 may be stored and/or adjusted at any point during the agent's 241 lifecycle. For example, request pattern[2] 203 may be set prior to boot-up and request pattern[1] 205 may be set during runtime of the agent 241.
A request pattern matching component 219 identifies transactions coming into the agent 241 which match a request pattern from the request pattern storage 209. Masks may be used to perform this identification. Typically, there is a mask per request pattern stored, however, other mask to request pattern ratios may bed used.
Classes of related transactions may generate more than one match for the same pattern. For example, in a system where there are many “read” patterns, a transaction for the generic “read” pattern would generate more than one match, whereas a transaction for a specific “read” pattern would likely generate only one match.
The match or matches generated by the request pattern matching component 219 are marked in a transaction tracker 229. The transaction tracker 229 tracks incoming and outgoing transactions that are associated with the agent 241. An entry in the transaction tracker 229 may include information about what matches 221 were found be the matching component 219, a tag (or transaction ID) 223, other data from the transaction 225, and an valid bit indicating that the entry is already in use 227. While a table is shown in
In the example shown in
A request pattern identifier match 221 is indicated by an N-bit sized entry that is generated by the match component 219. Each bit position in the N-bit entry corresponds to a particular sub-component 211, 213, 215, 217 (such as a mask) from the match component 219 that generates a match between the incoming transaction and a particular pattern. Each request-response pair has an unique match identifier. For example, in entry 233, only sub-component 217 produced a match. By providing multiple request and response match blocks, the mechanism can trigger on one of several request-response pairs. For example, in entry 231, the match is 0110. This indicates that two sub-components of 219 produced matches. In this case, match sub-components 215 and 213 had a match. Of course, other match indicators (not illustrated) may be used.
An incoming transaction is received by the agent at 303. For example, a transaction is received by the match component 219. The transaction may also be received by the transaction tracker 229 at this time.
The received transaction is compared to request patterns to determine if the transaction matches at least one request pattern at 305. If none of the request patterns match the incoming transaction, the agent waits for the next transaction. If a match is found, an identifier associated with the matched request pattern(s) is generated. For example, in
An entry associated with a transaction that produced a match with a request pattern is created or modified at 309.
In the second flow, at 311, at least a portion of the request pattern(s) of the agent are programmed. For example, a portion the request pattern storage 209 is programmed. As described earlier, the programming of request patterns may occur prior to boot or during operation of the agent.
An incoming transaction is received by the agent at 313. For example, a transaction is received by the match component 219. The transaction may also be received by the transaction tracker 229 at this time.
At 315 an entry is created, regardless of whether or not the incoming transaction provided a match. The match bits for the entry are added to the tracker along with the other data the component needs to keep track of. For example, in an embodiment, when all the match bits are 0, then there was no incoming match for the transaction in that entry as shown in entry 243. Typically, not having a match is not seen as an error but we would not create an entry that allows trigger to be generated.
As described earlier, the creation of an entry may include storing such information as: the identifier generated by the match component, a tag associated with the transaction, data from the transaction, an available indicator, etc. In the example of
Typically, the tag associated with each transaction is unique within the agent. Tags are re-used once the entry in the tracker 229 has been cleared. Tags may or may not be unique between agents. For example, two agents may have entries that use the same tag. If the system does not use globally unique tags, extra care must be taken to ensure that the correct tag generates a trigger. For example, the tag and additional identifying information such as identification of the agent that generated the tag may be used to create a very detailed tag.
a) illustrates a portion of an embodiment of an exemplary agent to process an outgoing response. The agent 441 includes response pattern storage 409, response pattern matching component 419, a transaction tracker component 429, and a trigger generation component 443.
The response pattern storage 409 stores one or more patterns which are to be matched against the header and/or data of an outgoing transaction. Exemplary patterns include a complete (or portion) of a particular header information, a data (or a portion of the data) associated with a header, a combination of header information and data, etc. Header information identifies an address, response type, attribute(s), etc.
The response pattern storage 409 is typically a collection of registers with each register containing one or more patterns. As illustrated in
The patterns stored in the response pattern storage 409 may be stored and/or adjusted at any point during the agent's lifecycle. For example, response pattern[1] 405 may be set prior to boot-up and response pattern[0] 407 may be set during runtime of the agent 441.
A response pattern matching component 419 identifies transactions carrying the agent 441 which match a response pattern from the response pattern storage 409. The response pattern matching component 419 works in a manner similar, if not identical, to the matching component 219. However, the generated match identifier does not send the identifier to the transaction tracker 241. Instead, the generated match identifier is sent to the trigger generation component 443.
The majority of entries of the transaction tracker 429 as shown in
The trigger generation component 443 compares a match from the matching component 419 to a value from transaction tracker entry. A response causes a trigger if a corresponding match bit or bits from the response match are set in the request match that is stored in the tracker entry with the same tag as the response, and the valid bit for that entry is set. For example, if the request match is 0110 from the tracker and the response match is 0010 a trigger may be generated (if the validity bit is set) because bit 1 is set in each match. In other words, match bits 421 do not have to be identical to what the match component 419 produces, only corresponding bit positions need to be set in both the request and response matches. However, if the request match or response match is 0000 a trigger will not be created as described above.
Generally, each outgoing response is compared to the response match pattern, and if it matches, the tracker entry is checked to see if it is marked as valid (and therefore valid to generate a trigger. If marked, a trigger signal is generated if any of the corresponding bit positions in the stored request match and the response match are both set. The entry will be marked invalid after it retires (whether or not a trigger is generated) and no future response will be able to match that response. If the entry is not marked as invalid, a subsequent response to a trigger may cause a false trigger to be generated. The trigger signal may be used to cause an internal action, pulse a pin to indicate the trigger occurrence, send an in-band debug message, or any other desirable response.
The trigger generation component 443 of
The portions shown in
An outgoing transaction is generated by the agent and the corresponding entry is looked up by tag in the tracker at 503. For example, a transaction is received by the transaction tracker 429. In an embodiment, if no corresponding entry exists then no trigger will be generated.
The transaction is received by or sent to the matching logic at 505. The matching logic processes the transaction at 507 by comparing the transaction to the stored response patterns. Any matches between the transaction and response patterns are used to generate an indicator. For example, in
The indicator generated by the matching logic is compared to the identifiers stored in the entries of the tracker at 509. The trigger generating component performs this comparison and generates a trigger at 511 if a positive (match) is found and the entry is valid. For example, in
If a positive match is not found, and therefore there no value in the tracker matches the outgoing transaction, then the next transaction is processed. For example, entries 431 and 435 do not match the indicator “0001” and would therefore not generate a trigger. In an embodiment, if multiple request matches occur (as indicated by multiple bits being set in tracker match field 421), triggers are generated if any response match occurs.
The validity indicator in the tracker is cleared at 513 and the entry retired for a response that is returned regardless of whether or not it generates a trigger.
In a system with multiple agents, the above described components (pattern storage, matching logic, transaction tracker, and trigger generation) placed in agents provide a distributed triggering solution that can detect a specific response to a request anywhere in a system. For example, in a four processor system there may be a need to trigger on a dirty snoop response to a read from a specific address block. Each agent of the system would be programmed to look for an incoming snoop to that specific address block and for a dirty snoop response. Any agent of the system providing a dirty snoop response would detect it and signal the outside world by pulsing a pin or sending an in-band debug message. The pulsed pin or debug message trigger external observation agents (such as a logic analyzer) to store the bus traffic around the transaction of interest.
Embodiments of the invention may be implemented in a variety of electronic devices and logic circuits. Furthermore, devices or circuits that include embodiments of the invention may be included within a variety of computer systems, including a point-to-point (p2p) computer system and shared bus computer systems. Embodiments of the invention may also be included in other computer system topologies and architectures.
Illustrated within the processor of
The main memory may be implemented in various memory sources, such as dynamic random-access memory (DRAM), a hard disk drive (HDD) 620, or a memory source located remotely from the computer system via network interface 630 containing various storage devices and technologies. The cache memory may be located either within the processor or in close proximity to the processor, such as on the processor's local bus 607.
Furthermore, the cache memory may contain relatively fast memory cells, such as a six-transistor (6T) cell, or other memory cell of approximately equal or faster access speed. The computer system of
Similarly, at least one embodiment may be implemented within a point-to-point computer system.
The system of
Other embodiments of the invention, however, may exist in other circuits, logic units, or devices within the system of
Each device illustrated in
For the sake of illustration, an embodiment of the invention is discussed below that may be implemented in a p2p computer system, such as the one illustrated in
Portions of what was described above may be implemented with logic circuitry such as a dedicated logic circuit or with a microcontroller or other form of processing core that executes program code instructions. Thus processes taught by the discussion above may be performed with program code such as machine-executable instructions that cause a machine that executes these instructions to perform certain functions. In this context, a “machine” may be a machine that converts intermediate form (or “abstract”) instructions into processor specific instructions (e.g., an abstract execution environment such as a “virtual machine” (e.g., a Java Virtual Machine), an interpreter, a Common Language Runtime, a high-level language virtual machine, etc.)), and/or, electronic circuitry disposed on a semiconductor chip (e.g., “logic circuitry” implemented with transistors) designed to execute instructions such as a general-purpose processor and/or a special-purpose processor. Processes taught by the discussion above may also be performed by (in the alternative to a machine or in combination with a machine) electronic circuitry designed to perform the processes (or a portion thereof) without the execution of program code.
It is believed that processes taught by the discussion above may also be described in source level program code in various object-orientated or non-object-orientated computer programming languages (e.g., Java, C#, VB, Python, C, C++, J#, APL, Cobol, Fortran, Pascal, Perl, etc.) supported by various software development frameworks (e.g., Microsoft Corporation's .NET, Mono, Java, Oracle Corporation's Fusion, etc.). The source level program code may be converted into an intermediate form of program code (such as Java byte code, Microsoft Intermediate Language, etc.) that is understandable to an abstract execution environment (e.g., a Java Virtual Machine, a Common Language Runtime, a high-level language virtual machine, an interpreter, etc.), or a more specific form of program code that is targeted for a specific processor.
An article of manufacture may be used to store program code. An article of manufacture that stores program code may be embodied as, but is not limited to, one or more memories (e.g., one or more flash memories, random access memories (static, dynamic or other)), optical disks, CD-ROMs, DVD ROMs, EPROMs, EEPROMs, magnetic or optical cards or other type of machine-readable media suitable for storing electronic instructions. Program code may also be downloaded from a remote computer (e.g., a server) to a requesting computer (e.g., a client) by way of data signals embodied in a propagation medium (e.g., via a communication link (e.g., a network connection)).
In the foregoing specification, the invention has been described with reference to specific exemplary embodiments thereof. It will, however, be evident that various modifications and changes may be made thereto without departing from the broader spirit and scope of the invention as set forth in the appended claims. The specification and drawings are, accordingly, to be regarded in an illustrative rather than a restrictive sense.