[go: up one dir, main page]

US20220100686A1 - Probe interrupt delivery - Google Patents

Probe interrupt delivery Download PDF

Info

Publication number
US20220100686A1
US20220100686A1 US17/548,385 US202117548385A US2022100686A1 US 20220100686 A1 US20220100686 A1 US 20220100686A1 US 202117548385 A US202117548385 A US 202117548385A US 2022100686 A1 US2022100686 A1 US 2022100686A1
Authority
US
United States
Prior art keywords
message
interrupt
coherency
encoding
coherency probe
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.)
Abandoned
Application number
US17/548,385
Inventor
Vydhyanathan Kalyanasundharam
Eric Christopher Morton
Bryan P. Broussard
Paul James Moyer
William Louie Walker
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.)
Advanced Micro Devices Inc
Original Assignee
Advanced Micro Devices Inc
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 Advanced Micro Devices Inc filed Critical Advanced Micro Devices Inc
Priority to US17/548,385 priority Critical patent/US20220100686A1/en
Publication of US20220100686A1 publication Critical patent/US20220100686A1/en
Abandoned legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/24Handling requests for interconnection or transfer for access to input/output bus using interrupt
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4282Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/0026PCI express
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/0042Universal serial bus [USB]
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Definitions

  • an interrupt or exception is an event that changes instruction execution from a currently executing instruction flow to another instruction flow.
  • An interrupt is typically generated by a processor or a device coupled to the processor.
  • a typical interrupt processing mechanism changes program control flow of the interrupted processor to an interrupt handler.
  • I/O Input/output
  • CPU central processing unit
  • I/O device and central processing unit (CPU) to CPU interrupts generally need to be delivered to any CPU thread in a computing system based on the programming of an interrupt controller or the type of interrupt being delivered.
  • delivering interrupts to a core often used sideband wires. Sideband wires are dedicated, per-core wires to deliver the interrupt type and the interrupt vector to each core. However, the sideband wires become difficult to scale as the number of cores increases, leading to a very large number of wires dedicated to interrupt delivery.
  • FIG. 1 is a block diagram of one implementation of a computing system.
  • FIG. 2 is a block diagram of another implementation of a computing system.
  • FIG. 3 is a block diagram of one implementation of a core complex.
  • FIG. 4 illustrates examples of coherency probe messages and interrupt messages in accordance with various implementations.
  • FIG. 5 is a generalized flow diagram illustrating one implementation of a method for generating messages to send over a coherency probe network.
  • FIG. 6 is a generalized flow diagram illustrating one implementation of a method for determining whether a message is a coherency probe message or an interrupt message.
  • FIG. 7 is a generalized flow diagram illustrating one implementation of a method for generating an interrupt message.
  • FIG. 8 is a generalized flow diagram illustrating one implementation of a method for processing a received message at a cache subsystem.
  • a computing system includes at least a plurality of processing nodes, a coherency probe network, and one or more control units.
  • the coherency probe network carries coherency probe messages between coherent agents. Interrupts that are detected by a control unit are converted into messages that are compatible with coherency probe messages and then routed to a target destination via the coherency probe network. Interrupts are generated with a first encoding while coherency probe messages have a second encoding.
  • Cache subsystems determine whether a message received via the coherency probe network is an interrupt message or a coherency probe message based on an encoding embedded in the received message. Interrupt messages are routed to interrupt controller(s) while coherency probe messages are processed in accordance with a coherence probe action field embedded in the message.
  • computing system 100 includes at least core complexes 105 A-N, input/output (I/O) interfaces 120 , bus 125 , memory controller(s) 130 , and network interface 135 .
  • computing system 100 includes other components and/or computing system 100 is arranged differently.
  • each core complex 105 A-N includes one or more general purpose processors, such as central processing units (CPUs). It is noted that a “core complex” is also referred to as a “processing node” or a “CPU” herein.
  • one or more core complexes 105 A-N include a data parallel processor with a highly parallel architecture. Examples of data parallel processors include graphics processing units (GPUs), digital signal processors (DSPs), and so forth.
  • each processor core within core complex 105 A-N includes an interrupt controller and a cache subsystem with one or more levels of caches.
  • each core complex 105 A-N includes a cache (e.g., level three (L3) cache) which is shared between multiple processor cores.
  • L3 cache level three
  • Memory controller(s) 130 are representative of any number and type of memory controllers accessible by core complexes 105 A-N. Memory controller(s) 130 are coupled to any number and type of memory devices (not shown). For example, the type of memory in memory device(s) coupled to memory controller(s) 130 can include Dynamic Random Access Memory (DRAM), Static Random Access Memory (SRAM), NAND Flash memory, NOR flash memory, Ferroelectric Random Access Memory (FeRAM), or others.
  • I/O interfaces 120 are representative of any number and type of I/O interfaces (e.g., peripheral component interconnect (PCI) bus, PCI-Extended (PCI-X), PCIE (PCI Express) bus, gigabit Ethernet (GBE) bus, universal serial bus (USB)).
  • PCI peripheral component interconnect
  • PCI-X PCI-Extended
  • PCIE PCIE
  • GEE gigabit Ethernet
  • USB universal serial bus
  • peripheral devices can be coupled to I/O interfaces 120 .
  • peripheral devices include (but are not limited to) displays, keyboards, mice, printers, scanners, joysticks or other types of game controllers, media recording devices, external storage devices, network interface cards, and so forth.
  • computing system 100 is a computer, laptop, mobile device, game console, server, streaming device, wearable device, or any of various other types of computing systems or devices. It is noted that the number of components of computing system 100 varies from implementation to implementation. For example, in other implementations, there are more or fewer of each component than the number shown in FIG. 1 . It is also noted that in other implementations, computing system 100 includes other components not shown in FIG. 1 . Additionally, in other implementations, computing system 100 is structured in other ways than shown in FIG. 1 .
  • system 200 includes control unit 210 , coherency probe network 215 , interrupt controller 220 , devices 225 A-N, and nodes 230 A-D.
  • control unit 210 is located within a coherence unit. In other implementations, control unit 210 is part of any of various other types of components. Alternatively, in a further implementation, control unit 210 is a standalone component.
  • Devices 225 A-N are representative of any number and type of peripheral or input/output (I/O) devices connected to control unit 210 via interrupt controller 220 .
  • system 200 is a system on chip (SoC). In other implementations, system 200 is any of various other types of computing systems.
  • Nodes 230 A-D are representative of any number and type of processing nodes. Each node 230 A-D includes any number of processor cores 245 A-N, 250 A-N, 255 A-N, and 260 A-N, respectively. Although four nodes 230 A-D are shown in system 200 in FIG. 2 , this is shown merely for illustrative purposes. It should be understood that the number of nodes included in system 200 varies from implementation to implementation. In other implementations, system 200 includes other components and/or is organized in other suitable manners.
  • system 200 enforces a memory coherency protocol to ensure that a processor core or device does not concurrently access data that is being modified by another core or device.
  • the cores and devices of system 200 transmit coherency messages (e.g., coherency probe message and probe responses) over coherency probe network 215 .
  • coherency probe network 215 is designed to carry coherency probe message and probe responses between coherent agents of system 200 .
  • a coherency probe message is a message that seeks the coherency state of data associated with a particular memory location.
  • a probe response is typically sent back to the coherent agent that generated the coherency probe message.
  • a probe response indicates the coherency state of the referenced data, transfers data in response to a probe, or provides other information in response to a probe.
  • a coherency probe network 215 typically carries coherency probe messages and probe responses. However, in system 200 , coherency probe network 215 also carries interrupts targeting one or more of cores 230 A-D. This allows the interrupts to benefit from using a dedicated, low-latency network that spans multiple components within system 200 and is scalable to an arbitrary number of threads.
  • each device 225 A-N is able to generate an interrupt by asserting an interrupt signal which is detected by interrupt controller 220 .
  • interrupt controller 220 In response to detecting the interrupt signal, interrupt controller 220 generates an interrupt message with information such as destination identifier, delivery mode, interrupt vector, or other suitable information.
  • Interrupt controller 220 then conveys the interrupt message to control unit 210 .
  • control unit 210 converts the interrupt message into a coherency probe message with a special encoding, and then control unit 210 conveys the specially encoded coherency probe message on coherency probe network 215 to one or more targets.
  • control unit 210 includes logic for generating, receiving, processing, and forwarding interrupts. This logic also handles the normal processing of coherency probe messages.
  • control unit 210 when control unit 210 detects or receives an interrupt, control unit 210 generates an interrupt message that is compatible with the format of a coherency probe message. Generating the interrupt message in a compatible format allows coherency probe network 215 to carry the interrupt message in a similar fashion to a coherency probe message. While the interrupt message is compatible with a coherency probe message, the interrupt message includes embedded encodings which allow other components to distinguish the interrupt message from a coherency probe message.
  • control unit 210 After generating an interrupt message in a coherency-compatible format, control unit 210 conveys the interrupt message on coherency probe network 215 to one or more nodes 230 A-D targeted by the interrupt. In one implementation, control unit 210 broadcasts the interrupt message on coherency probe network 215 to all nodes 230 A-D. In another implementation, control unit 210 sends the interrupt message on coherency probe network 215 only to the node(s) targeted by the interrupt message.
  • coherency probe network 215 is connected to a cache subsystem 240 A-D in each node 230 A-D, respectively.
  • Each cache subsystem 240 A-D includes any number of cache levels.
  • each cache subsystem 240 A-D includes a level three (L3) cache and a level two (L2) cache.
  • each core includes a local level one (L1) cache.
  • each cache subsystem 240 A-D includes other cache levels.
  • the given cache subsystem 240 A-D sends the interrupt message to the interrupt controller(s) within the corresponding core(s).
  • nodes 230 A-D include interrupt controllers 247 A-N, 252 A-N, 257 A-N, and/or 262 A-N within cores 245 A-N, 250 A-N, 255 A-N, and/or 260 A-N, respectively.
  • a given cache subsystem 240 A-D in response to receiving an interrupt message, broadcasts the interrupt message to all of the cores in the corresponding node.
  • a given cache subsystem 240 A-D in response to receiving an interrupt message, a given cache subsystem 240 A-D sends the interrupt message only to those cores targeted by the interrupt message.
  • the interrupt controller(s) in the core(s) will examine the interrupt message and generate interrupts to send to the targeted core(s).
  • core complex 300 includes four processor cores 310 A-D. In other implementations, core complex 300 includes other numbers of processor cores. It is noted that a “core complex” can also be referred to as a “processing node”, “node”, or “CPU” herein. In one implementation, the components of core complex 300 are included within core complexes 105 A-N (of FIG. 1 ).
  • Each processor core 310 A-D includes a cache subsystem for storing data and instructions retrieved from the memory subsystem (not shown).
  • each core 310 A-D includes a corresponding level one (L1) cache 315 A-D.
  • Each processor core 310 A-D also includes or is coupled to a corresponding level two (L2) cache 320 A-D.
  • core complex 300 includes a level three (L3) cache 330 which is shared by the processor cores 310 A-D. It is noted that in other implementations, core complex 300 can include other types of cache subsystems with other numbers of caches and/or with other configurations of the different cache levels.
  • L3 cache 330 is coupled to a bus/fabric via coherency probe network 340 .
  • L3 cache 330 receives both coherency probes and interrupt messages via coherency probe network 340 .
  • L3 cache 330 forwards coherency probes and interrupt messages to L2 caches 320 A-D.
  • L3 cache 330 broadcasts received coherency probes and interrupt messages to all L2 caches 320 A-D.
  • L3 cache 330 forwards a received coherency probe or interrupt message to only those L2 caches 320 A-D targeted by the probe or interrupt message.
  • L3 cache 330 includes logic to examine coherency probes and interrupt messages to determine their targets.
  • L2 caches 320 A-D Upon receiving messages from L3 cache 330 , L2 caches 320 A-D examine the messages to determine whether the messages are interrupts or coherency probes. The L2 caches 320 A-D forward interrupt messages for processing to interrupt controllers 317 A-D, respectively. The L2 caches 320 A-D process coherency probes according to their embedded coherency probe action fields.
  • Table 400 illustrates examples of the types of messages that can be sent using a hybrid message format.
  • the leftmost column of table 400 indicates the message type 410 , with two different types of messages shown in table 400 : coherency probe message 410 A and interrupt message 410 B.
  • coherency probe message 410 A indicates the message type 410
  • interrupt message 410 B indicates the message type 410 , with two different types of messages shown in table 400 : coherency probe message 410 A and interrupt message 410 B.
  • other numbers of different types of messages are encoded in the hybrid message format.
  • Using a hybrid message format allows interrupt message 410 B to be formatted in a similar manner to coherency probe message 410 A. Accordingly, the fields, or in some cases combinations of fields, of interrupt message 410 B are aligned to match the fields of coherency probe message 410 A.
  • the hybrid message format includes any number of fields, with the number of fields varying from implementation to implementation. As shown in table 400 , the hybrid message format includes a coherency probe action field 415 , address field 420 , response field 425 , and any number of other fields.
  • the first entry of table 400 shows an example of a coherency probe message 410 A.
  • field 415 is encoded with a coherency probe action indicator 415 A.
  • the coherency probe action indicator 415 A can be set equal to any of various different values depending on the probe action type.
  • field 415 is encoded with interrupt delivery indicator 415 B to indicate that the message is an interrupt.
  • control logic in a cache subsystem looks at field 415 to determine if a received message is a coherency probe message or an interrupt message.
  • Field 420 specifies the address of a corresponding memory location being targeted by coherency probe message 415 A.
  • field 420 stores interrupt type indicator 420 B in a first subset of bits and field 420 stores target indicator 420 C in a second subset of bits.
  • address field 420 is repurposed to hold both the interrupt type indicator 420 B and the target indicator 420 C of interrupt message 410 B. This is possible since the combination of interrupt type indicator 420 B and target indicator 420 C is the same size as address field 420 A.
  • Interrupt type indicator 420 B stores the type of interrupt that is being conveyed by interrupt message 410 B and target field 420 C specifies the target of interrupt message 410 B.
  • Field 425 specifies the type of response that should be generated after processing the message.
  • field 425 is encoded with any of various response indicator 425 A values specifying the type of response to send back to the source.
  • response field 425 is encoded with a no response indicator 425 B to indicate that no response needs to be sent back to the source.
  • the hybrid message format includes other fields.
  • the hybrid message format includes an interrupt vector field to store the memory location of an interrupt handler. Other types of fields are possible and are contemplated for the hybrid message format.
  • FIG. 5 one implementation of a method 500 for generating messages to send over a coherency probe network is shown.
  • the steps in this implementation and those of FIG. 6-8 are shown in sequential order. However, it is noted that in various implementations of the described methods, one or more of the elements described are performed concurrently, in a different order than shown, or are omitted entirely. Other additional elements are also performed as desired. Any of the various systems or apparatuses described herein are configured to implement method 500 .
  • Control logic in a fabric interconnect receives a message in a hybrid message format (block 505 ). In response to receiving the message in the hybrid message format, the control logic determines whether the message is a coherency probe message or an interrupt message (block 510 ). One example of how to determine whether a message is a coherency probe message or an interrupt message is described in the discussion regarding method 600 of FIG. 6 . If the received message is an interrupt message (conditional block 515 , “yes” leg), then the control logic retrieves a target field from the interrupt message, wherein the target field is a subset of an address field of the hybrid message format (block 520 ).
  • the control unit routes, via a coherency probe network, the interrupt message to the device(s) specified in the target field (block 525 ). If the received message is a coherency probe message (conditional block 515 , “no” leg), then the control logic retrieves an address field from the coherency probe message (block 530 ). Next, the control logic forwards, via a coherency probe network, the coherency probe message to the device(s) corresponding to an address specified in the address field (block 535 ). After blocks 525 and 535 , method 500 ends.
  • Control logic receives a message via a coherency probe network (block 605 ). In response to receiving the message, the control logic retrieves a coherency probe action field from the received message (block 610 ). If the coherency probe action field is encoded with an interrupt delivery indicator (conditional block 615 , “yes” leg), then the control logic treats the received message as an interrupt message (block 620 ). If the coherency probe action field is encoded with a coherency probe action indicator (conditional block 615 , “no” leg), then the control logic treats the received message as a coherency probe message (block 625 ). In other words, if the coherency probe action field of the message is encoded with any value other than the interrupt delivery indicator, then the control logic treats the received message as a coherency probe message. After blocks 620 and 625 , method 600 ends.
  • Control logic receives an interrupt (block 705 ).
  • the control logic is located in a cache subsystem, coherence point, or other location within a computing system.
  • the control logic In response to receiving the interrupt, the control logic generates an interrupt message that is compatible with a coherency probe message, wherein fields of the generated interrupt message are aligned with fields of the coherency probe message (block 710 ). Then, the control logic forwards the interrupt message to a targeted destination via a coherency probe network (block 715 ). After block 715 , method 700 ends.
  • Control logic in a cache subsystem receives a message via a coherency probe network (block 805 ).
  • the control logic is part of a L2 cache. In other implementations, the control logic is located at other levels of the cache subsystem.
  • the control logic determines whether the message is a coherency probe message or an interrupt message (block 810 ).
  • One example of how to determine whether the message is a coherency probe message or an interrupt message is described in method 600 of FIG. 6 .
  • the control logic retrieves a target field from the message (block 820 ). Then the control logic routes the interrupt message to the interrupt controller(s) of the processor core(s) targeted by the interrupt (block 825 ). Alternatively, in another implementation, the control logic broadcasts the interrupt message to the interrupt controllers of all processor cores in the node. If the message is a coherency probe message (conditional block 815 , “no” leg), then the control logic retrieves a coherency probe action field and an address field from the message (block 830 ). Next, the control logic processes the coherency probe message in accordance with the probe action specified in the coherency probe action field (block 835 ). After blocks 825 and 835 , method 800 ends.
  • program instructions of a software application are used to implement the methods and/or mechanisms described herein.
  • program instructions executable by a general or special purpose processor are contemplated.
  • such program instructions are represented by a high level programming language.
  • the program instructions are compiled from a high level programming language to a binary, intermediate, or other form.
  • program instructions are written that describe the behavior or design of hardware.
  • Such program instructions are represented by a high-level programming language, such as C.
  • a hardware design language such as Verilog is used.
  • the program instructions are stored on any of a variety of non-transitory computer readable storage mediums. The storage medium is accessible by a computing system during use to provide the program instructions to the computing system for program execution.
  • a computing system includes at least one or more memories and one or more processors configured to execute program instructions.

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Bus Control (AREA)
  • Multi Processors (AREA)

Abstract

Systems, apparatuses, and methods for routing interrupts on a coherency probe network are disclosed. A computing system includes a plurality of processing nodes, a coherency probe network, and one or more control units. The coherency probe network carries coherency probe messages between coherent agents. Interrupts that are detected by a control unit are converted into messages that are compatible with coherency probe messages and then routed to a target destination via the coherency probe network. Interrupts are generated with a first encoding while coherency probe messages have a second encoding. Cache subsystems determine whether a message received via the coherency probe network is an interrupt message or a coherency probe message based on an encoding embedded in the received message. Interrupt messages are routed to interrupt controller(s) while coherency probe messages are processed in accordance with a coherence probe action field embedded in the message.

Description

    CROSS REFERENCE TO RELATED APPLICATIONS
  • This application is a continuation of U.S. patent application Ser. No. 16/112,367, now U.S. Pat. No. 11,210,246, entitled “PROBE INTERRUPT DELIVERY”, filed Aug. 24, 2018, the entirety of which is incorporated herein by reference.
  • BACKGROUND Description of the Related Art
  • In general, an interrupt or exception is an event that changes instruction execution from a currently executing instruction flow to another instruction flow. An interrupt is typically generated by a processor or a device coupled to the processor. A typical interrupt processing mechanism changes program control flow of the interrupted processor to an interrupt handler. Input/output (I/O) device and central processing unit (CPU) to CPU interrupts generally need to be delivered to any CPU thread in a computing system based on the programming of an interrupt controller or the type of interrupt being delivered. Historically, delivering interrupts to a core often used sideband wires. Sideband wires are dedicated, per-core wires to deliver the interrupt type and the interrupt vector to each core. However, the sideband wires become difficult to scale as the number of cores increases, leading to a very large number of wires dedicated to interrupt delivery.
  • BRIEF DESCRIPTION OF THE DRAWINGS
  • The advantages of the methods and mechanisms described herein may be better understood by referring to the following description in conjunction with the accompanying drawings, in which:
  • FIG. 1 is a block diagram of one implementation of a computing system.
  • FIG. 2 is a block diagram of another implementation of a computing system.
  • FIG. 3 is a block diagram of one implementation of a core complex.
  • FIG. 4 illustrates examples of coherency probe messages and interrupt messages in accordance with various implementations.
  • FIG. 5 is a generalized flow diagram illustrating one implementation of a method for generating messages to send over a coherency probe network.
  • FIG. 6 is a generalized flow diagram illustrating one implementation of a method for determining whether a message is a coherency probe message or an interrupt message.
  • FIG. 7 is a generalized flow diagram illustrating one implementation of a method for generating an interrupt message.
  • FIG. 8 is a generalized flow diagram illustrating one implementation of a method for processing a received message at a cache subsystem.
  • DETAILED DESCRIPTION OF IMPLEMENTATIONS
  • In the following description, numerous specific details are set forth to provide a thorough understanding of the methods and mechanisms presented herein. However, one having ordinary skill in the art should recognize that the various implementations may be practiced without these specific details. In some instances, well-known structures, components, signals, computer program instructions, and techniques have not been shown in detail to avoid obscuring the approaches described herein. It will be appreciated that for simplicity and clarity of illustration, elements shown in the figures have not necessarily been drawn to scale. For example, the dimensions of some of the elements may be exaggerated relative to other elements.
  • Various systems, apparatuses, and methods for routing interrupts on a coherency probe network are disclosed herein. In one implementation, a computing system includes at least a plurality of processing nodes, a coherency probe network, and one or more control units. The coherency probe network carries coherency probe messages between coherent agents. Interrupts that are detected by a control unit are converted into messages that are compatible with coherency probe messages and then routed to a target destination via the coherency probe network. Interrupts are generated with a first encoding while coherency probe messages have a second encoding. Cache subsystems determine whether a message received via the coherency probe network is an interrupt message or a coherency probe message based on an encoding embedded in the received message. Interrupt messages are routed to interrupt controller(s) while coherency probe messages are processed in accordance with a coherence probe action field embedded in the message.
  • Referring now to FIG. 1, a block diagram of one implementation of a computing system 100 is shown. In one implementation, computing system 100 includes at least core complexes 105A-N, input/output (I/O) interfaces 120, bus 125, memory controller(s) 130, and network interface 135. In other implementations, computing system 100 includes other components and/or computing system 100 is arranged differently. In one implementation, each core complex 105A-N includes one or more general purpose processors, such as central processing units (CPUs). It is noted that a “core complex” is also referred to as a “processing node” or a “CPU” herein. In some implementations, one or more core complexes 105A-N include a data parallel processor with a highly parallel architecture. Examples of data parallel processors include graphics processing units (GPUs), digital signal processors (DSPs), and so forth. In various implementations, each processor core within core complex 105A-N includes an interrupt controller and a cache subsystem with one or more levels of caches. In one implementation, each core complex 105A-N includes a cache (e.g., level three (L3) cache) which is shared between multiple processor cores.
  • Memory controller(s) 130 are representative of any number and type of memory controllers accessible by core complexes 105A-N. Memory controller(s) 130 are coupled to any number and type of memory devices (not shown). For example, the type of memory in memory device(s) coupled to memory controller(s) 130 can include Dynamic Random Access Memory (DRAM), Static Random Access Memory (SRAM), NAND Flash memory, NOR flash memory, Ferroelectric Random Access Memory (FeRAM), or others. I/O interfaces 120 are representative of any number and type of I/O interfaces (e.g., peripheral component interconnect (PCI) bus, PCI-Extended (PCI-X), PCIE (PCI Express) bus, gigabit Ethernet (GBE) bus, universal serial bus (USB)). Various types of peripheral devices can be coupled to I/O interfaces 120. Such peripheral devices include (but are not limited to) displays, keyboards, mice, printers, scanners, joysticks or other types of game controllers, media recording devices, external storage devices, network interface cards, and so forth.
  • In various implementations, computing system 100 is a computer, laptop, mobile device, game console, server, streaming device, wearable device, or any of various other types of computing systems or devices. It is noted that the number of components of computing system 100 varies from implementation to implementation. For example, in other implementations, there are more or fewer of each component than the number shown in FIG. 1. It is also noted that in other implementations, computing system 100 includes other components not shown in FIG. 1. Additionally, in other implementations, computing system 100 is structured in other ways than shown in FIG. 1.
  • Turning now to FIG. 2, a block diagram of another implementation of a computing system 200 is shown. In one implementation, system 200 includes control unit 210, coherency probe network 215, interrupt controller 220, devices 225A-N, and nodes 230A-D. In one implementation, control unit 210 is located within a coherence unit. In other implementations, control unit 210 is part of any of various other types of components. Alternatively, in a further implementation, control unit 210 is a standalone component. Devices 225A-N are representative of any number and type of peripheral or input/output (I/O) devices connected to control unit 210 via interrupt controller 220.
  • In one implementation, system 200 is a system on chip (SoC). In other implementations, system 200 is any of various other types of computing systems. Nodes 230A-D are representative of any number and type of processing nodes. Each node 230A-D includes any number of processor cores 245A-N, 250A-N, 255A-N, and 260A-N, respectively. Although four nodes 230A-D are shown in system 200 in FIG. 2, this is shown merely for illustrative purposes. It should be understood that the number of nodes included in system 200 varies from implementation to implementation. In other implementations, system 200 includes other components and/or is organized in other suitable manners.
  • In one implementation, system 200 enforces a memory coherency protocol to ensure that a processor core or device does not concurrently access data that is being modified by another core or device. To comply with the memory coherency protocol, the cores and devices of system 200 transmit coherency messages (e.g., coherency probe message and probe responses) over coherency probe network 215. Accordingly, coherency probe network 215 is designed to carry coherency probe message and probe responses between coherent agents of system 200. A coherency probe message is a message that seeks the coherency state of data associated with a particular memory location. A probe response is typically sent back to the coherent agent that generated the coherency probe message. A probe response indicates the coherency state of the referenced data, transfers data in response to a probe, or provides other information in response to a probe. Typically, a coherency probe network 215 only carries coherency probe messages and probe responses. However, in system 200, coherency probe network 215 also carries interrupts targeting one or more of cores 230A-D. This allows the interrupts to benefit from using a dedicated, low-latency network that spans multiple components within system 200 and is scalable to an arbitrary number of threads.
  • In various implementations, each device 225A-N is able to generate an interrupt by asserting an interrupt signal which is detected by interrupt controller 220. In response to detecting the interrupt signal, interrupt controller 220 generates an interrupt message with information such as destination identifier, delivery mode, interrupt vector, or other suitable information. Interrupt controller 220 then conveys the interrupt message to control unit 210. In one implementation, control unit 210 converts the interrupt message into a coherency probe message with a special encoding, and then control unit 210 conveys the specially encoded coherency probe message on coherency probe network 215 to one or more targets.
  • To facilitate the transfer of interrupts on coherency probe network 215, control unit 210 includes logic for generating, receiving, processing, and forwarding interrupts. This logic also handles the normal processing of coherency probe messages. In one implementation, when control unit 210 detects or receives an interrupt, control unit 210 generates an interrupt message that is compatible with the format of a coherency probe message. Generating the interrupt message in a compatible format allows coherency probe network 215 to carry the interrupt message in a similar fashion to a coherency probe message. While the interrupt message is compatible with a coherency probe message, the interrupt message includes embedded encodings which allow other components to distinguish the interrupt message from a coherency probe message. After generating an interrupt message in a coherency-compatible format, control unit 210 conveys the interrupt message on coherency probe network 215 to one or more nodes 230A-D targeted by the interrupt. In one implementation, control unit 210 broadcasts the interrupt message on coherency probe network 215 to all nodes 230A-D. In another implementation, control unit 210 sends the interrupt message on coherency probe network 215 only to the node(s) targeted by the interrupt message.
  • In one implementation, coherency probe network 215 is connected to a cache subsystem 240A-D in each node 230A-D, respectively. Each cache subsystem 240A-D includes any number of cache levels. For example, in one implementation, each cache subsystem 240A-D includes a level three (L3) cache and a level two (L2) cache. In this implementation, each core includes a local level one (L1) cache. In other implementations, each cache subsystem 240A-D includes other cache levels. When a given cache subsystem 240A-D receives a message via coherency probe network 215, the given cache subsystem 240A-D determines whether the message is an interrupt message or a coherency probe message. If the message is an interrupt message, the given cache subsystem 240A-D sends the interrupt message to the interrupt controller(s) within the corresponding core(s). As shown in system 200, nodes 230A-D include interrupt controllers 247A-N, 252A-N, 257A-N, and/or 262A-N within cores 245A-N, 250A-N, 255A-N, and/or 260A-N, respectively. In one implementation, in response to receiving an interrupt message, a given cache subsystem 240A-D broadcasts the interrupt message to all of the cores in the corresponding node. In another implementation, in response to receiving an interrupt message, a given cache subsystem 240A-D sends the interrupt message only to those cores targeted by the interrupt message. The interrupt controller(s) in the core(s) will examine the interrupt message and generate interrupts to send to the targeted core(s).
  • Referring now to FIG. 3, a block diagram of one implementation of a core complex 300 is shown. In one implementation, core complex 300 includes four processor cores 310A-D. In other implementations, core complex 300 includes other numbers of processor cores. It is noted that a “core complex” can also be referred to as a “processing node”, “node”, or “CPU” herein. In one implementation, the components of core complex 300 are included within core complexes 105A-N (of FIG. 1).
  • Each processor core 310A-D includes a cache subsystem for storing data and instructions retrieved from the memory subsystem (not shown). For example, in one implementation, each core 310A-D includes a corresponding level one (L1) cache 315A-D. Each processor core 310A-D also includes or is coupled to a corresponding level two (L2) cache 320A-D. Additionally, in one implementation, core complex 300 includes a level three (L3) cache 330 which is shared by the processor cores 310A-D. It is noted that in other implementations, core complex 300 can include other types of cache subsystems with other numbers of caches and/or with other configurations of the different cache levels.
  • L3 cache 330 is coupled to a bus/fabric via coherency probe network 340. L3 cache 330 receives both coherency probes and interrupt messages via coherency probe network 340. L3 cache 330 forwards coherency probes and interrupt messages to L2 caches 320A-D. In one implementation, L3 cache 330 broadcasts received coherency probes and interrupt messages to all L2 caches 320A-D. In another implementation, L3 cache 330 forwards a received coherency probe or interrupt message to only those L2 caches 320A-D targeted by the probe or interrupt message. In this implementation, L3 cache 330 includes logic to examine coherency probes and interrupt messages to determine their targets. Upon receiving messages from L3 cache 330, L2 caches 320A-D examine the messages to determine whether the messages are interrupts or coherency probes. The L2 caches 320A-D forward interrupt messages for processing to interrupt controllers 317A-D, respectively. The L2 caches 320A-D process coherency probes according to their embedded coherency probe action fields.
  • Turning now to FIG. 4, examples of encoding coherency probe messages and interrupt messages in a hybrid message format are shown. Table 400 illustrates examples of the types of messages that can be sent using a hybrid message format. The leftmost column of table 400 indicates the message type 410, with two different types of messages shown in table 400: coherency probe message 410A and interrupt message 410B. In other implementations, other numbers of different types of messages are encoded in the hybrid message format. Using a hybrid message format allows interrupt message 410B to be formatted in a similar manner to coherency probe message 410A. Accordingly, the fields, or in some cases combinations of fields, of interrupt message 410B are aligned to match the fields of coherency probe message 410A. The hybrid message format includes any number of fields, with the number of fields varying from implementation to implementation. As shown in table 400, the hybrid message format includes a coherency probe action field 415, address field 420, response field 425, and any number of other fields.
  • The first entry of table 400 shows an example of a coherency probe message 410A. For coherency probe message 410A, field 415 is encoded with a coherency probe action indicator 415A. The coherency probe action indicator 415A can be set equal to any of various different values depending on the probe action type. For interrupt message 410B, field 415 is encoded with interrupt delivery indicator 415B to indicate that the message is an interrupt. In one implementation, control logic in a cache subsystem (e.g., cache subsystem 240A of FIG. 2) looks at field 415 to determine if a received message is a coherency probe message or an interrupt message.
  • Field 420 specifies the address of a corresponding memory location being targeted by coherency probe message 415A. For interrupt message 410B, field 420 stores interrupt type indicator 420B in a first subset of bits and field 420 stores target indicator 420C in a second subset of bits. In other words, address field 420 is repurposed to hold both the interrupt type indicator 420B and the target indicator 420C of interrupt message 410B. This is possible since the combination of interrupt type indicator 420B and target indicator 420C is the same size as address field 420A. Interrupt type indicator 420B stores the type of interrupt that is being conveyed by interrupt message 410B and target field 420C specifies the target of interrupt message 410B.
  • Field 425 specifies the type of response that should be generated after processing the message. For coherency probe message 410A, field 425 is encoded with any of various response indicator 425A values specifying the type of response to send back to the source. For interrupt message 410B, response field 425 is encoded with a no response indicator 425B to indicate that no response needs to be sent back to the source. In other implementations, the hybrid message format includes other fields. For example, in another implementation, the hybrid message format includes an interrupt vector field to store the memory location of an interrupt handler. Other types of fields are possible and are contemplated for the hybrid message format.
  • Referring now to FIG. 5, one implementation of a method 500 for generating messages to send over a coherency probe network is shown. For purposes of discussion, the steps in this implementation and those of FIG. 6-8 are shown in sequential order. However, it is noted that in various implementations of the described methods, one or more of the elements described are performed concurrently, in a different order than shown, or are omitted entirely. Other additional elements are also performed as desired. Any of the various systems or apparatuses described herein are configured to implement method 500.
  • Control logic in a fabric interconnect receives a message in a hybrid message format (block 505). In response to receiving the message in the hybrid message format, the control logic determines whether the message is a coherency probe message or an interrupt message (block 510). One example of how to determine whether a message is a coherency probe message or an interrupt message is described in the discussion regarding method 600 of FIG. 6. If the received message is an interrupt message (conditional block 515, “yes” leg), then the control logic retrieves a target field from the interrupt message, wherein the target field is a subset of an address field of the hybrid message format (block 520). In other words, if the address field is Y bits long, then the target field is X bits long, wherein X is less than Y, and wherein X and Y are both positive integers. An example of a target field being a subset of an address field is shown in table 400 of FIG. 4. Next, the control unit routes, via a coherency probe network, the interrupt message to the device(s) specified in the target field (block 525). If the received message is a coherency probe message (conditional block 515, “no” leg), then the control logic retrieves an address field from the coherency probe message (block 530). Next, the control logic forwards, via a coherency probe network, the coherency probe message to the device(s) corresponding to an address specified in the address field (block 535). After blocks 525 and 535, method 500 ends.
  • Turning now to FIG. 6, one implementation of a method for determining whether a message is a coherency probe message or an interrupt message is shown. Control logic receives a message via a coherency probe network (block 605). In response to receiving the message, the control logic retrieves a coherency probe action field from the received message (block 610). If the coherency probe action field is encoded with an interrupt delivery indicator (conditional block 615, “yes” leg), then the control logic treats the received message as an interrupt message (block 620). If the coherency probe action field is encoded with a coherency probe action indicator (conditional block 615, “no” leg), then the control logic treats the received message as a coherency probe message (block 625). In other words, if the coherency probe action field of the message is encoded with any value other than the interrupt delivery indicator, then the control logic treats the received message as a coherency probe message. After blocks 620 and 625, method 600 ends.
  • Referring now to FIG. 7, one implementation of a method 700 for generating an interrupt message is shown. Control logic receives an interrupt (block 705). Depending on the implementation, the control logic is located in a cache subsystem, coherence point, or other location within a computing system. In response to receiving the interrupt, the control logic generates an interrupt message that is compatible with a coherency probe message, wherein fields of the generated interrupt message are aligned with fields of the coherency probe message (block 710). Then, the control logic forwards the interrupt message to a targeted destination via a coherency probe network (block 715). After block 715, method 700 ends.
  • Turning now to FIG. 8, one implementation of a method 800 for processing a received message at a cache subsystem is shown. Control logic in a cache subsystem receives a message via a coherency probe network (block 805). In one implementation, the control logic is part of a L2 cache. In other implementations, the control logic is located at other levels of the cache subsystem. In response to receiving the message, the control logic determines whether the message is a coherency probe message or an interrupt message (block 810). One example of how to determine whether the message is a coherency probe message or an interrupt message is described in method 600 of FIG. 6.
  • If the message is an interrupt message (conditional block 815, “yes” leg), then the control logic retrieves a target field from the message (block 820). Then the control logic routes the interrupt message to the interrupt controller(s) of the processor core(s) targeted by the interrupt (block 825). Alternatively, in another implementation, the control logic broadcasts the interrupt message to the interrupt controllers of all processor cores in the node. If the message is a coherency probe message (conditional block 815, “no” leg), then the control logic retrieves a coherency probe action field and an address field from the message (block 830). Next, the control logic processes the coherency probe message in accordance with the probe action specified in the coherency probe action field (block 835). After blocks 825 and 835, method 800 ends.
  • In various implementations, program instructions of a software application are used to implement the methods and/or mechanisms described herein. For example, program instructions executable by a general or special purpose processor are contemplated. In various implementations, such program instructions are represented by a high level programming language. In other implementations, the program instructions are compiled from a high level programming language to a binary, intermediate, or other form. Alternatively, program instructions are written that describe the behavior or design of hardware. Such program instructions are represented by a high-level programming language, such as C. Alternatively, a hardware design language (HDL) such as Verilog is used. In various implementations, the program instructions are stored on any of a variety of non-transitory computer readable storage mediums. The storage medium is accessible by a computing system during use to provide the program instructions to the computing system for program execution. Generally speaking, such a computing system includes at least one or more memories and one or more processors configured to execute program instructions.
  • It should be emphasized that the above-described implementations are only non-limiting examples of implementations. Numerous variations and modifications will become apparent to those skilled in the art once the above disclosure is fully appreciated. It is intended that the following claims be interpreted to embrace all such variations and modifications.

Claims (20)

What is claimed is:
1. A system comprising:
one or more processing nodes;
a control unit; and
a coherency probe network configured to convey coherency probe messages between the one or more processing nodes and the control unit;
wherein the control unit is configured to:
generate an interrupt message that is compatible with a coherency probe message, responsive to detecting an interrupt; and
send, via the coherency probe network, the interrupt message on a path to a target.
2. The system as recited in claim 1, wherein the control unit is further configured to:
generate a first encoding for coherency probe messages;
embed the first encoding in a given field of coherency probe messages sent on the coherency probe network;
generate a second encoding for interrupt messages, wherein the second encoding is different from the first encoding; and
embed the second encoding in the given field of interrupt messages sent on the coherency probe network.
3. The system as recited in claim 1, wherein the interrupt message includes an encoding in a response field that indicates no response needs to be sent.
4. The system as recited in claim 1, wherein the system further comprises one or more cache subsystems, wherein each cache subsystem is configured to determine whether a received message is a coherency probe message or an interrupt message based on an embedded encoding.
5. The system as recited in claim 4, wherein each cache subsystem is further configured to broadcast an interrupt message to a plurality of processor cores of a respective node responsive to determining that the received message is an interrupt message.
6. The system as recited in claim 1, wherein fields of the interrupt message are aligned to match fields of the coherency probe message.
7. The system as recited in claim 1, wherein the control unit is further configured to encode a coherency probe action field of the interrupt message with an interrupt delivery indicator.
8. A method comprising:
generating, by a control unit, an interrupt message that is compatible with a coherency probe message responsive to detecting an interrupt; and
sending, via a coherency probe network, the interrupt message on a path to a target, wherein the coherency probe network is configured to carry coherency probes between one or more processing nodes and the control unit.
9. The method as recited in claim 8, further comprising:
generating a first encoding for coherency probe messages;
embedding the first encoding in a given field of coherency probe messages sent on the coherency probe network;
generating a second encoding for interrupt messages, wherein the second encoding is different from the first encoding; and
embedding the second encoding in the given field of interrupt messages sent on the coherency probe network.
10. The method as recited in claim 8, wherein the interrupt message includes an encoding in a response field that indicates no response needs to be sent.
11. The method as recited in claim 8, further comprising determining, by a cache subsystem, whether a received message is a coherency probe message or an interrupt message based on an embedded encoding.
12. The method as recited in claim 11, further comprising broadcasting, by the cache subsystem, an interrupt message to a plurality of processor cores of a respective node responsive to determining that the message is an interrupt message.
13. The method as recited in claim 8, wherein fields of the interrupt message are aligned to match fields of the coherency probe message.
14. The method as recited in claim 8, further comprising encoding a coherency probe action field of the interrupt message with an interrupt delivery indicator.
15. An apparatus comprising:
a plurality of processor cores; and
a cache subsystem;
wherein the apparatus is configured to:
generate an interrupt message that is compatible with a coherency probe message responsive to detecting an interrupt; and
send, via a coherency probe network, the interrupt message on a path to a target device, wherein the coherency probe network is configured to carry coherency probes between the apparatus and one or more coherent agents.
16. The apparatus as recited in claim 15, wherein the apparatus is further configured to:
generate a first encoding for coherency probe messages;
embed the first encoding in a given field of coherency probe messages sent on the coherency probe network;
generate a second encoding for interrupt messages, wherein the second encoding is different from the first encoding; and
embed the second encoding in the given field of interrupt messages sent on the coherency probe network.
17. The apparatus as recited in claim 15, wherein the interrupt message includes an encoding in a response field that indicates no response needs to be sent.
18. The apparatus as recited in claim 15, wherein the apparatus is further configured to determine whether a received message is a coherency probe message or an interrupt message based on an embedded encoding.
19. The apparatus as recited in claim 18, wherein the apparatus is further configured to broadcast an interrupt message to a plurality of processor cores of a respective node responsive to determining that the received message is an interrupt message.
20. The apparatus as recited in claim 15, wherein fields of the interrupt message are aligned to match fields of the coherency probe message.
US17/548,385 2018-08-24 2021-12-10 Probe interrupt delivery Abandoned US20220100686A1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US17/548,385 US20220100686A1 (en) 2018-08-24 2021-12-10 Probe interrupt delivery

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US16/112,367 US11210246B2 (en) 2018-08-24 2018-08-24 Probe interrupt delivery
US17/548,385 US20220100686A1 (en) 2018-08-24 2021-12-10 Probe interrupt delivery

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
US16/112,367 Continuation US11210246B2 (en) 2018-08-24 2018-08-24 Probe interrupt delivery

Publications (1)

Publication Number Publication Date
US20220100686A1 true US20220100686A1 (en) 2022-03-31

Family

ID=67297342

Family Applications (2)

Application Number Title Priority Date Filing Date
US16/112,367 Active 2038-09-05 US11210246B2 (en) 2018-08-24 2018-08-24 Probe interrupt delivery
US17/548,385 Abandoned US20220100686A1 (en) 2018-08-24 2021-12-10 Probe interrupt delivery

Family Applications Before (1)

Application Number Title Priority Date Filing Date
US16/112,367 Active 2038-09-05 US11210246B2 (en) 2018-08-24 2018-08-24 Probe interrupt delivery

Country Status (6)

Country Link
US (2) US11210246B2 (en)
EP (1) EP3841482B1 (en)
JP (1) JP7182694B2 (en)
KR (1) KR102542492B1 (en)
CN (1) CN112602072B (en)
WO (1) WO2020040874A1 (en)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11341069B2 (en) 2020-10-12 2022-05-24 Advanced Micro Devices, Inc. Distributed interrupt priority and resolution of race conditions
USD1019486S1 (en) * 2021-09-29 2024-03-26 Hyundai Motor Company Hood panel for vehicles

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080222389A1 (en) * 2007-03-06 2008-09-11 Freescale Semiconductor, Inc. Interprocessor message transmission via coherency-based interconnect
US20100146218A1 (en) * 2008-12-09 2010-06-10 Brian Keith Langendorf System And Method For Maintaining Cache Coherency Across A Serial Interface Bus
US8612659B1 (en) * 2010-12-14 2013-12-17 Vmware, Inc. Hardware interrupt arbitration in virtualized computer systems
US20140181557A1 (en) * 2012-12-21 2014-06-26 Advanced Micro Devices, Inc. Methods and apparatus related to processor sleep states
US8990582B2 (en) * 2010-05-27 2015-03-24 Cisco Technology, Inc. Virtual machine memory compartmentalization in multi-core architectures
US20170255560A1 (en) * 2014-09-25 2017-09-07 Intel Corporation Multicore memory data recorder for kernel module
US10055355B1 (en) * 2017-04-19 2018-08-21 International Business Machines Corporation Non-disruptive clearing of varying address ranges from cache

Family Cites Families (54)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5303362A (en) 1991-03-20 1994-04-12 Digital Equipment Corporation Coupled memory multiprocessor computer system including cache coherency management protocols
US5412788A (en) 1992-04-16 1995-05-02 Digital Equipment Corporation Memory bank management and arbitration in multiprocessor computer system
US6049851A (en) 1994-02-14 2000-04-11 Hewlett-Packard Company Method and apparatus for checking cache coherency in a computer architecture
US5537575A (en) 1994-06-30 1996-07-16 Foley; Denis System for handling cache memory victim data which transfers data from cache to the interface while CPU performs a cache lookup using cache status information
US5655140A (en) 1994-07-22 1997-08-05 Network Peripherals Apparatus for translating frames of data transferred between heterogeneous local area networks
US5517494A (en) 1994-09-30 1996-05-14 Apple Computer, Inc. Method and system of multicast routing for groups with a single transmitter
US5659708A (en) 1994-10-03 1997-08-19 International Business Machines Corp. Cache coherency in a multiprocessing system
US5684977A (en) 1995-03-31 1997-11-04 Sun Microsystems, Inc. Writeback cancellation processing system for use in a packet switched cache coherent multiprocessor system
US5987544A (en) 1995-09-08 1999-11-16 Digital Equipment Corporation System interface protocol with optional module cache
US5673413A (en) 1995-12-15 1997-09-30 International Business Machines Corporation Method and apparatus for coherency reporting in a multiprocessing system
US5893144A (en) 1995-12-22 1999-04-06 Sun Microsystems, Inc. Hybrid NUMA COMA caching system and methods for selecting between the caching modes
US6038644A (en) 1996-03-19 2000-03-14 Hitachi, Ltd. Multiprocessor system with partial broadcast capability of a cache coherent processing request
US5859983A (en) 1996-07-01 1999-01-12 Sun Microsystems, Inc Non-hypercube interconnection subsystem having a subset of nodes interconnected using polygonal topology and other nodes connect to the nodes in the subset
US5749095A (en) 1996-07-01 1998-05-05 Sun Microsystems, Inc. Multiprocessing system configured to perform efficient write operations
US5887138A (en) 1996-07-01 1999-03-23 Sun Microsystems, Inc. Multiprocessing computer system employing local and global address spaces and COMA and NUMA access modes
US5878268A (en) 1996-07-01 1999-03-02 Sun Microsystems, Inc. Multiprocessing system configured to store coherency state within multiple subnodes of a processing node
US5991819A (en) 1996-12-03 1999-11-23 Intel Corporation Dual-ported memory controller which maintains cache coherency using a memory line status table
US5924118A (en) 1997-04-14 1999-07-13 International Business Machines Corporation Method and system for speculatively sourcing cache memory data prior to upstream cache invalidation within a multiprocessor data-processing system
US6018791A (en) 1997-04-14 2000-01-25 International Business Machines Corporation Apparatus and method of maintaining cache coherency in a multi-processor computer system with global and local recently read states
US5966729A (en) 1997-06-30 1999-10-12 Sun Microsystems, Inc. Snoop filter for use in multiprocessor computer systems
US6112281A (en) 1997-10-07 2000-08-29 Oracle Corporation I/O forwarding in a cache coherent shared disk computer system
US6085294A (en) 1997-10-24 2000-07-04 Compaq Computer Corporation Distributed data dependency stall mechanism
US6085263A (en) 1997-10-24 2000-07-04 Compaq Computer Corp. Method and apparatus for employing commit-signals and prefetching to maintain inter-reference ordering in a high-performance I/O processor
US6108737A (en) 1997-10-24 2000-08-22 Compaq Computer Corporation Method and apparatus for reducing latency of inter-reference ordering in a multiprocessor system
US6209065B1 (en) 1997-10-24 2001-03-27 Compaq Computer Corporation Mechanism for optimizing generation of commit-signals in a distributed shared-memory system
US6101420A (en) 1997-10-24 2000-08-08 Compaq Computer Corporation Method and apparatus for disambiguating change-to-dirty commands in a switch based multi-processing system with coarse directories
US6108752A (en) 1997-10-24 2000-08-22 Compaq Computer Corporation Method and apparatus for delaying victim writes in a switch-based multi-processor system to maintain data coherency
US6070231A (en) 1997-12-02 2000-05-30 Intel Corporation Method and apparatus for processing memory requests that require coherency transactions
US6292705B1 (en) 1998-09-29 2001-09-18 Conexant Systems, Inc. Method and apparatus for address transfers, system serialization, and centralized cache and transaction control, in a symetric multiprocessor system
US6012127A (en) 1997-12-12 2000-01-04 Intel Corporation Multiprocessor computing apparatus with optional coherency directory
US6138218A (en) 1998-02-17 2000-10-24 International Business Machines Corporation Forward progress on retried snoop hits by altering the coherency state of a local cache
US6098115A (en) 1998-04-08 2000-08-01 International Business Machines Corporation System for reducing storage access latency with accessing main storage and data bus simultaneously
US6286090B1 (en) 1998-05-26 2001-09-04 Compaq Computer Corporation Mechanism for selectively imposing interference order between page-table fetches and corresponding data fetches
US6199153B1 (en) 1998-06-18 2001-03-06 Digital Equipment Corporation Method and apparatus for minimizing pincount needed by external memory control chip for multiprocessors with limited memory size requirements
US6295583B1 (en) 1998-06-18 2001-09-25 Compaq Information Technologies Group, L.P. Method and apparatus for resolving probes in multi-processor systems which do not use external duplicate tags for probe filtering
US6370621B1 (en) 1998-12-21 2002-04-09 Advanced Micro Devices, Inc. Memory cancel response optionally cancelling memory controller's providing of data in response to a read operation
US6275905B1 (en) 1998-12-21 2001-08-14 Advanced Micro Devices, Inc. Messaging scheme to maintain cache coherency and conserve system memory bandwidth during a memory read operation in a multiprocessing computer system
US6631401B1 (en) 1998-12-21 2003-10-07 Advanced Micro Devices, Inc. Flexible probe/probe response routing for maintaining coherency
US6295573B1 (en) * 1999-02-16 2001-09-25 Advanced Micro Devices, Inc. Point-to-point interrupt messaging within a multiprocessing computer system
US6389526B1 (en) * 1999-08-24 2002-05-14 Advanced Micro Devices, Inc. Circuit and method for selectively stalling interrupt requests initiated by devices coupled to a multiprocessor system
US20020083254A1 (en) * 2000-12-22 2002-06-27 Hummel Mark D. System and method of implementing interrupts in a computer processing system having a communication fabric comprising a plurality of point-to-point links
US7536495B2 (en) * 2001-09-28 2009-05-19 Dot Hill Systems Corporation Certified memory-to-memory data transfer between active-active raid controllers
KR100532417B1 (en) * 2003-01-21 2005-11-30 삼성전자주식회사 The low power consumption cache memory device of a digital signal processor and the control method of the cache memory device
US7783811B2 (en) * 2007-12-17 2010-08-24 Microsoft Corporation Efficient interrupt message definition
JP5217929B2 (en) * 2008-11-13 2013-06-19 ソニー株式会社 Interrupt detection device and information processing system
US8914812B2 (en) * 2010-01-08 2014-12-16 International Business Machines Corporation Controlling operations according to another system's architecture
US8468284B2 (en) * 2010-06-23 2013-06-18 International Business Machines Corporation Converting a message signaled interruption into an I/O adapter event notification to a guest operating system
US8631181B2 (en) 2011-09-26 2014-01-14 Oracle International Corporation Validating message-signaled interrupts by tracking interrupt vectors assigned to devices
US9128920B2 (en) * 2011-11-30 2015-09-08 Marvell World Trade Ltd. Interrupt handling systems and methods for PCIE bridges with multiple buses
US10019390B2 (en) * 2012-03-30 2018-07-10 Intel Corporation Using memory cache for a race free interrupt scheme without the use of “read clear” registers
US9311243B2 (en) 2012-11-30 2016-04-12 Intel Corporation Emulated message signaled interrupts in multiprocessor systems
US20160117247A1 (en) * 2014-10-24 2016-04-28 Advanced Micro Devices, Inc. Coherency probe response accumulation
KR101520234B1 (en) * 2014-10-24 2015-05-13 주식회사 엘지씨엔에스 Apparatus and method for detecting interrupt
US10922252B2 (en) * 2015-06-22 2021-02-16 Qualcomm Incorporated Extended message signaled interrupts (MSI) message data

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080222389A1 (en) * 2007-03-06 2008-09-11 Freescale Semiconductor, Inc. Interprocessor message transmission via coherency-based interconnect
US20100146218A1 (en) * 2008-12-09 2010-06-10 Brian Keith Langendorf System And Method For Maintaining Cache Coherency Across A Serial Interface Bus
US8990582B2 (en) * 2010-05-27 2015-03-24 Cisco Technology, Inc. Virtual machine memory compartmentalization in multi-core architectures
US8612659B1 (en) * 2010-12-14 2013-12-17 Vmware, Inc. Hardware interrupt arbitration in virtualized computer systems
US20140181557A1 (en) * 2012-12-21 2014-06-26 Advanced Micro Devices, Inc. Methods and apparatus related to processor sleep states
US20170255560A1 (en) * 2014-09-25 2017-09-07 Intel Corporation Multicore memory data recorder for kernel module
US10055355B1 (en) * 2017-04-19 2018-08-21 International Business Machines Corporation Non-disruptive clearing of varying address ranges from cache

Also Published As

Publication number Publication date
KR20210046060A (en) 2021-04-27
CN112602072B (en) 2024-10-01
CN112602072A (en) 2021-04-02
JP2021534511A (en) 2021-12-09
US20200065275A1 (en) 2020-02-27
US11210246B2 (en) 2021-12-28
EP3841482B1 (en) 2025-06-11
KR102542492B1 (en) 2023-06-13
WO2020040874A1 (en) 2020-02-27
JP7182694B2 (en) 2022-12-02
EP3841482A1 (en) 2021-06-30

Similar Documents

Publication Publication Date Title
US20220100686A1 (en) Probe interrupt delivery
CN112313636B (en) System, device and method for implementing network packet templating
US12079097B2 (en) Techniques for testing semiconductor devices
US11782848B2 (en) Home agent based cache transfer acceleration scheme
US20160179612A1 (en) Direct memory access (dma) unit with error detection
US11275632B2 (en) Broadcast command and response
US11467838B2 (en) Fastpath microcode sequencer
US10540316B2 (en) Cancel and replay protocol scheme to improve ordered bandwidth
US9442819B2 (en) Method and apparatus for storing trace data
US10558489B2 (en) Suspend and restore processor operations
US11341069B2 (en) Distributed interrupt priority and resolution of race conditions
KR20220057572A (en) Service Quality Dirty Line Tracking
US11170462B1 (en) Indirect chaining of command buffers
US11947473B2 (en) Duplicated registers in chiplet processing units
US20250291745A1 (en) Direct connect between network interface and graphics processing unit in self-hosted mode in a multiprocessor system

Legal Events

Date Code Title Description
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: 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: 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

STCB Information on status: application discontinuation

Free format text: ABANDONED -- FAILURE TO RESPOND TO AN OFFICE ACTION