DE112013005086T5 - Kohärenzprotokoll für Hochleistungszwischenverbindung - Google Patents

Kohärenzprotokoll für Hochleistungszwischenverbindung Download PDF

Info

Publication number
DE112013005086T5
DE112013005086T5 DE112013005086.2T DE112013005086T DE112013005086T5 DE 112013005086 T5 DE112013005086 T5 DE 112013005086T5 DE 112013005086 T DE112013005086 T DE 112013005086T DE 112013005086 T5 DE112013005086 T5 DE 112013005086T5
Authority
DE
Germany
Prior art keywords
request
agent
response
forwarding
protocol
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
DE112013005086.2T
Other languages
English (en)
Inventor
Robert Beers
Robert G. Blankenship
Robert J. Safranek
Robert A. Maddox
Aaron T. Spink
Jeff Willey
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.)
Intel Corp
Original Assignee
Intel Corp
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 Intel Corp filed Critical Intel Corp
Publication of DE112013005086T5 publication Critical patent/DE112013005086T5/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4204Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
    • G06F13/4221Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being an input/output bus, e.g. ISA bus, EISA bus, PCI bus, SCSI bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/3287Power saving characterised by the action undertaken by switching off individual functional units in the computer system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1004Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's to protect a block of data words, e.g. CRC or checksum
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0808Multiuser, multiprocessor or multiprocessing cache systems with cache invalidating means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0831Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0831Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
    • G06F12/0833Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means in combination with broadcast means (e.g. for invalidation or updating)
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/1652Handling requests for interconnection or transfer for access to memory bus based on arbitration in a multiprocessor architecture
    • G06F13/1657Access to multiple memories
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • G06F13/1689Synchronisation and timing concerns
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/22Handling requests for interconnection or transfer for access to input/output bus using successive scanning, e.g. polling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4063Device-to-bus coupling
    • G06F13/4068Electrical coupling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/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; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/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
    • G06F13/4286Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus using a handshaking protocol, e.g. RS232C link
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/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
    • G06F13/4291Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus using a clocked protocol
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/71Version control; Configuration management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/77Software metrics
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44505Configuring for program initiating, e.g. using registry, configuration files
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/466Transaction processing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/54Store-and-forward switching systems 
    • H04L12/56Packet switching systems
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/15Interconnection of switching modules
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/065Encryption by serially and continuously modifying data stream elements, e.g. stream cipher systems, RC4, SEAL or A5/3
    • H04L9/0656Pseudorandom key sequence combined element-for-element with data sequence, e.g. one-time-pad [OTP] or Vernam's cipher
    • H04L9/0662Pseudorandom key sequence combined element-for-element with data sequence, e.g. one-time-pad [OTP] or Vernam's cipher with particular pseudorandom sequence generator
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0813Multiuser, multiprocessor or multiprocessing cache systems with a network or matrix configuration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4004Coupling between buses
    • G06F13/4022Coupling between buses using switching circuits, e.g. switching matrix, connection or expansion network
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4265Bus transfer protocol, e.g. handshake; Synchronisation on a point to point bus
    • G06F13/4273Bus transfer protocol, e.g. handshake; Synchronisation on a point to point bus using a clocked protocol
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/25Using a specific main memory architecture
    • G06F2212/254Distributed memory
    • G06F2212/2542Non-uniform memory access [NUMA] architecture
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/62Details of cache specific to multiprocessor cache arrangements
    • G06F2212/622State-only directory, i.e. not recording identity of sharing or owning nodes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/73Program documentation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/28Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
    • H04L12/46Interconnection of networks
    • H04L12/4641Virtual LANs, VLANs, e.g. virtual private networks [VPN]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/74Address processing for routing
    • 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
    • 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
    • Y02D30/00Reducing energy consumption in communication networks

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Mathematical Physics (AREA)
  • Computer Security & Cryptography (AREA)
  • Computing Systems (AREA)
  • Quality & Reliability (AREA)
  • Information Transfer Systems (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Communication Control (AREA)
  • Computer And Data Communications (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Multi Processors (AREA)
  • Bus Control (AREA)
  • Mobile Radio Communication Systems (AREA)

Abstract

Es wird eine Kohärenzprotokollnachricht gesendet, die einer bestimmten Cache-Zeile entspricht. Ein potenzieller Konflikt, der die bestimmte Cache-Zeile einbezieht, wird identifiziert, und eine Weiterleitungsanforderung wird an einen Home-Agenten gesendet, um den potenziellen Konflikt zu identifizieren. Eine Weiterleitungsantwort wird in Reaktion auf die Weiterleitungsanforderung vom Home-Agenten empfangen, und es kann eine Antwort für den Konflikt bestimmt werden.

Description

  • GEBIET
  • Die vorliegende Offenbarung betrifft im Allgemeinen das Gebiet der Computerentwicklung und insbesondere die Softwareentwicklung unter Einbeziehung der Koordination von sich gegenseitig bedingenden beschränkten Systemen.
  • HINTERGRUND
  • Fortschritte in der Halbleiterverarbeitung und im Logikentwurf haben eine Zunahme der Menge von Logik ermöglicht, die auf integrierten Schaltungseinrichtungen vorhanden sein kann. Als Begleiterscheinung entwickelten sich Computersystemkonfigurationen von einer einzigen oder mehreren integrierten Schaltungen in einem System zu mehreren Kernen, mehreren Hardwarethreads und mehreren logischen Prozessoren, die auf einzelnen integrierten Schaltungen vorhanden sind, sowie anderen Schnittstellen, die in solche Prozessoren integriert sind. Ein Prozessor oder eine integrierte Schaltung umfasst typischerweise einen einzigen physikalischen Prozessorchip, wobei der Prozessorchip eine beliebige Anzahl von Kernen, Hardwarethreads, logischen Prozessoren, Schnittstellen, Speichern, Controllerhubs usw. umfassen kann.
  • Infolge der größeren Fähigkeit zur Unterbringung von mehr Verarbeitungsleistung in kleineren Packungen sind kleinere Computereinrichtungen beliebter geworden. Smartphones, Tablets, ultradünne Notebooks und andere Benutzergeräte haben exponentiell zugenommen. Diese kleineren Einrichtungen hängen jedoch sowohl für die Datenspeicherung als auch komplexe Verarbeitung, die den Formfaktor überschreitet, von Server ab. Folglich ist auch die Nachfrage auf dem Hochleistungs-Computermarkt (d. h. im Serverbereich) gestiegen. Zum Beispiel gibt es in modernen Servern typischerweise nicht nur einen einzigen Prozessor mit mehreren Kernen, sondern auch mehrere physikalische Prozessoren (auch als mehrere Sockel bezeichnet), um die Rechenleistung zu erhöhen. Da jedoch die Verarbeitungsleistung zusammen mit der Anzahl von Einrichtungen in einem Computersystem zunimmt, wird die Kommunikation zwischen Sockeln und anderen Einrichtungen kritischer.
  • In der Tat haben sich Zwischenverbindungen von traditionelleren Mehrpunktverbindungsbussen, die in erster Linie elektrische Kommunikationen abwickelten, zu kompletten Zwischenverbindungsarchitekturen entwickelt, welche schnelle Kommunikation ermöglichen. Unglücklicherweise wird als Anforderung an zukünftige Prozessoren für Verbrauch bei noch höheren Geschwindigkeiten eine entsprechende Anforderung an die Fähigkeiten von bestehenden Zwischenverbindungsarchitekturen gestellt.
  • KURZE BESCHREIBUNG DER ZEICHNUNGEN
  • 1 veranschaulicht ein vereinfachtes Blockdiagramm eines Systems, das eine Punkt-zu-Punkt-Zwischenverbindung zum Verbinden von E-/A-Einrichtungen in einem Computersystem gemäß einer Ausführungsform umfasst;
  • 2 veranschaulicht ein vereinfachtes Blockdiagramm eines Schichtprotokollstapels gemäß einer Ausführungsform;
  • 3 veranschaulicht eine Ausführungsform eines Transaktionsdeskriptors;
  • 4 veranschaulicht eine Ausführungsform eines seriellen Punkt-zu-Punkt-Links;
  • 5 veranschaulicht Ausführungsformen von potenziellen Hochleistungszwischenverbindungs(HPI)-Systemkonfigurationen;
  • 6 veranschaulicht einen mit HPI assoziierten Schichtprotokollstapel.
  • 7 veranschaulicht ein Flussdiagramm einer beispielhaften Kohärenzprotokollkonflikthandhabung;
  • 8 veranschaulicht ein Flussdiagramm einer anderen beispielhaften Kohärenzprotokollkonflikthandhabung;
  • 9 veranschaulicht ein Flussdiagramm einer anderen beispielhaften Kohärenzprotokollkonflikthandhabung;
  • 10 veranschaulicht eine Ausführungsform eines Blockdiagramms für ein Computersystem, das einen Mehrkernprozessor umfasst.
  • Gleiche Bezugszeichen und Benennungen in den verschiedenen Zeichnungen bezeichnen gleiche Elemente.
  • AUSFÜHRLICHE BESCHREIBUNG
  • In der folgenden Beschreibung werden zahlreiche spezifische Einzelheiten dargelegt, wie etwa Beispiele von spezifischen Typen von Prozessoren und Systemkonfigurationen, spezifischen Hardwarestrukturen, spezifischen architektonischen und mikroarchitektonischen Einzelheiten, spezifischen Registerkonfigurationen, spezifischen Anweisungstypen, spezifischen Systemkomponenten, spezifischen Prozessor-Pipelinestufen, spezifischen Zwischenverbindungsschichten, spezifischen Paket-/Transaktionskonfigurationen, spezifischen Transaktionsnamen, spezifischen Protokollaustauschvorgängen, spezifischen Linkbreiten, spezifischen Implementierungen und spezifischem Betrieb usw., um ein umfassendes Verständnis der vorliegenden Erfindung zu vermitteln. Für einen Fachmann ist jedoch möglicherweise zu erkennen, dass diese spezifischen Einzelheiten nicht unbedingt eingesetzt werden müssen, um den Gegenstand der vorliegenden Offenbarung in die Praxis umzusetzen. In anderen Fällen wurde eine ausführliche Beschreibung von bekannten Komponenten und Verfahren, wie beispielsweise spezifischen und alternativen Prozessorarchitekturen, spezifischen Logikschaltungen bzw. spezifischem Logikcode für beschriebene Algorithmen, spezifischem Firmwarecode, Zwischenverbindungsbetrieb auf niedriger Ebene, spezifischen logischen Konfigurationen, spezifischen Herstellungstechniken und -materialien, spezifischen Compiler-Implementierungen, spezifischem Ausdruck von Algorithmen in Code, spezifischen Abschalt- und Gattersteuerungstechniken bzw. spezifischer Abschalt- und Gattersteuerungslogik, und anderen spezifischen betrieblichen Einzelheiten eines Computersystems, vermieden, um eine unnötige Verkomplizierung der vorliegenden Offenbarung zu vermeiden.
  • Obwohl die folgenden Ausführungsformen unter Bezugnahme auf Energieersparnis, Energieeffizienz, Verarbeitungseffizienz usw. in spezifischen integrierten Schaltungen, wie beispielsweise Computerplattformen oder Mikroprozessoren, beschrieben sein können, sind andere Ausführungsformen auf andere Typen von integrierten Schaltungen und Logikbausteinen anwendbar. Ähnliche Techniken und Lehren von Ausführungsformen, die hierin beschrieben werden, können auf andere Typen von Schaltungen oder Halbleiterbauelementen angewendet werden, die ebenfalls von solchen Merkmalen profitieren. Zum Beispiel sind die offenbarten Ausführungsformen nicht auf Server-Computersysteme, Tischcomputersysteme, Laptops, UltrabooksTM beschränkt, sondern können auch in anderen Einrichtungen, wie beispielsweise tragbaren Einrichtungen, Smartphones, Tablets, anderen dünnen Notebooks, Systemchip(SOC)-Bauelementen und eingebetteten Anwendungen, verwendet werden. Einige Beispiele von tragbaren Einrichtungen umfassen Zellulartelefone, Internetprotokoll-Einrichtungen, Digitalkameras, persönliche digitale Assistenten (PDAs) und tragbare PCs. Hierbei können ähnliche Techniken für eine Hochleistungszwischenverbindung angewendet werden, um die Leistung in einer leistungsarmen Zwischenverbindung zu erhöhen (oder sogar Energie einzusparen). Eingebettete Anwendungen umfassen typischerweise einen Mikrocontroller, einen Digitalsignalprozessor (DSP), einen Systemchip, Netzcomputer (NetPC), Set-Top-Boxen, Netzwerkhubs, Weitverkehrsnetz(WAN für engl. wide area network)-Switches oder jedes andere System, das die im Folgenden gelehrten Funktionen und Operationen ausführen kann. Außerdem sind die hierin beschriebenen Vorrichtungen, Verfahren und Systeme nicht auf physikalische Computervorrichtungen beschränkt, sondern können sich auch auf Softwareoptimierungen zur Energieersparnis und -effizienz beziehen. Wie möglicherweise aus der folgenden Beschreibung hervorgeht, können die hierin beschriebenen Ausführungsformen von Verfahren, Vorrichtungen und Systemen (einerlei, ob in Bezug auf Hardware, Firmware, Software oder eine Kombination davon) als unerlässlich für eine Zukunft angesehen werden, in welcher umweltfreundliche Technik und Leistungsüberlegungen im Gleichgewicht sind.
  • Mit zunehmendem Fortschritt von Computersystemen werden die Komponenten darin komplexer. Die Zwischenverbindungsarchitektur zum Koppeln von und Kommunizieren zwischen den Komponenten hat ebenfalls an Komplexität zugenommen, um zu gewährleisten, dass der Bandbreitenbedarf für optimalen Komponentenbetrieb gedeckt wird. Außerdem verlangen verschiedene Marktsegmente eine Anpassung verschiedener Aspekte von Zwischenverbindungsarchitekturen an den jeweiligen Markt. Zum Beispiel benötigen Server eine höhere Leistung, während das mobile Ökosystem manchmal imstande ist, für Energieeinsparungen Gesamtleistung zu opfern. Dennoch ist es ein besonderes Ziel der meisten Fabrics, die höchstmögliche Leistung bei maximaler Energieeinsparung bereitzustellen. Ferner kann eine Vielzahl von verschiedenen Zwischenverbindungen potenziell von dem hierin beschriebenen Gegenstand profitieren. Zum Beispiel können unter anderen Beispielen die PCIe(Peripheral Component Interconnect (PCI) Express)-Zwischenverbindungs-Fabric-Architektur und die QPI(QuickPath Interconnect)-Fabric-Architektur u. a. gemäß einem oder mehreren der hierin beschriebenen Prinzipien potenziell verbessert werden.
  • 1 veranschaulicht eine Ausführungsform einer Fabric, die aus Punkt-zu-Punkt-Links besteht, welche einen Satz von Komponenten miteinander verbinden. Ein System 100 umfasst einen Prozessor 105 und einen Systemspeicher 110, der mit einem Controllerhub 115 gekoppelt ist. Der Prozessor 105 kann ein beliebiges Verarbeitungselement, wie beispielsweise einen Mikroprozessor, einen Hostprozessor, einen eingebetteten Prozessor, einen Coprozessor oder einen anderen Prozessor, umfassen. Der Prozessor 105 ist mit dem Controllerhub 115 durch einen Frontside-Bus (FSB) 106 gekoppelt. In einer Ausführungsform ist der FSB 106 eine serielle Punkt-zu-Punkt-Zwischenverbindung, wie im Folgenden beschrieben. In einer anderen Ausführungsform umfasst der Link 106 eine serielle, differenzielle Zwischenverbindungsarchitektur, die mit einem anderen Zwischenverbindungsstandard kompatibel ist.
  • Der Systemspeicher 110 umfasst eine beliebige Speichereinrichtung, wie beispielsweise einen Direktzugriffsspeicher (RAM), einen nichtflüchtigen (NV) Speicher oder einen anderen Speicher, auf den durch Einrichtungen im System 100 zugegriffen werden kann. Der Systemspeicher 110 ist mit dem Controllerhub 115 durch eine Speicherschnittstelle 116 gekoppelt. Beispiele einer Speicherschnittstelle umfassen eine Doppeldatenraten(DDR)-Speicherschnittstelle, eine Zweikanal-DDR-Speicherschnittstelle und eine DRAM(dynamischer RAM)-Speicherschnittstelle.
  • In einer Ausführungsform kann der Controllerhub 115 einen Stammhub, Stammkomplex oder Stammcontroller umfassen, wie beispielsweise in einer PCIe-Zwischenverbindungshierarchie. Beispiele des Controllerhubs 115 umfassen einen Chipsatz, einen Speicher-Controllerhub (MCH für engl. memory controller hub), eine Northbridge, einen Zwischenverbindungs-Controllerhub (ICH für engl. interconnect controller hub), eine Southbridge und einen Stammcontroller/-hub. Der Begriff Chipsatz bezieht sich häufig auf zwei physisch getrennte Controllerhubs, z. B. einen Speicher-Controllerhub (MCH), der mit einem Zwischenverbindungs-Controllerhub (ICH) gekoppelt ist. Es ist zu erwähnen, dass aktuelle Systeme den MCH oft in den Prozessor 105 integriert aufweisen, während der Controller 115 zum Kommunizieren mit E-/A-Einrichtungen in ähnlicher Weise dient, wie im Folgenden beschrieben. In einigen Ausführungsformen wird Partner-zu-Partner-Routing optional durch den Stammkomplex 115 unterstützt.
  • Hierbei ist der Controllerhub 115 durch einen seriellen Link 119 mit einem Switch bzw. einer Brücke 120 gekoppelt. Eingangs-/Ausgangsmodule 117 und 121, die auch als Schnittstellen/Ports 117 und 121 bezeichnet werden können, können einen Schichtprotokollstapel umfassen/implementieren, um Kommunikation zwischen dem Controllerhub 115 und dem Switch 120 bereitzustellen. In einer Ausführungsform sind mehrere Einrichtungen imstande, mit dem Switch 120 gekoppelt zu werden.
  • Der Switch bzw. die Brücke 120 leitet Pakete/Nachrichten von einer Einrichtung 125 stromaufwärts, d. h. eine Hierarchie nach oben zu einem Stammkomplex, zum Controllerhub 115, und stromabwärts, d. h. eine Hierarchie nach unten weg von einem Stammcontroller, vom Prozessor 105 oder dem Systemspeicher 110 zur Einrichtung 125. Der Switch 120 wird in einer Ausführungsform als logische Anordnung von mehreren virtuellen PCI-zu-PCI-Brückeneinrichtungen bezeichnet. Die Einrichtung 125 umfasst eine beliebige interne oder externe Einrichtung oder Komponente, die mit einem elektronischen System gekoppelt werden soll, wie beispielsweise eine E-/A-Einrichtung, einen Netzschnittstellencontroller (NIC für engl. Network Interface Controller), eine Add-in-Karte, einen Audioprozessor, einen Netzwerkprozessor, ein Festplattenlaufwerk, eine Speichereinrichtung, eine CD-/DVD-ROM, einen Monitor, einen Drucker, eine Maus, eine Tastatur, einen Router, eine tragbare Speichereinrichtung, eine Firewire-Einrichtung, eine USB(Universal Serial Bus)-Einrichtung, einen Scanner und andere Eingabe-/Ausgabe-Einrichtungen. In der PCIe-Sprache wird solch eine Vorrichtung häufig als Endpunkt bezeichnet. Obwohl nicht spezifisch dargestellt, kann die Einrichtung 125 eine Brücke (z. B. eine PCIe-zu-PCI/PCI-X-Brücke) umfassen, um Legacy- oder andere Versionen von Einrichtungen oder Zwischenverbindungs-Fabrics zu unterstützen, die von solchen Einrichtungen unterstützt werden.
  • Auch ein Grafikbeschleuniger 130 kann durch einen seriellen Link 132 mit dem Controllerhub 115 gekoppelt sein. In einer Ausführungsform ist der Grafikbeschleuniger 130 mit einem MCH gekoppelt, der mit einem ICH gekoppelt ist. Der Switch 120 und demgemäß die E-/A-Einrichtung 125 sind dann mit dem ICH gekoppelt. Außerdem dienen E-/A-Module 131 und 118 zum Implementieren eines Schichtprotokollstapels und von zugehöriger Logik, um zwischen dem Grafikbeschleuniger 130 und dem Controllerhub 115 zu kommunizieren. Ähnlich der vorstehenden MCH-Erörterung kann ein Grafikcontroller oder der Grafikbeschleuniger 130 selbst in den Prozessor 105 integriert sein.
  • Unter Hinwendung zu 2 ist eine Ausführungsform eines Schichtprotokollstapels veranschaulicht. Der Schichtprotokollstapel 200 kann jede Form von geschichtetem Kommunikationsstapel, wie beispielsweise einen QPI-Stapel, einen PCIe-Stapel, einen Hochleistungs-Computerzwischenverbindungs(HPI)-Stapel der nächsten Generation oder einen anderen geschichteten Stapel, umfassen. In einer Ausführungsform kann der Protokollstapel 200 eine Transaktionsschicht 205, eine Linkschicht 210 und eine physikalische Schicht 220 umfassen. Eine Schnittstelle, wie beispielsweise die Schnittstellen 117, 118, 121, 122, 126 und 131 in 1, kann als ein Kommunikationsprotokollstapel 200 dargestellt werden. Die Darstellung als Kommunikationsprotokollstapel kann auch als Modul oder Schnittstelle bezeichnet werden, das/die einen Protokollstapel implementiert/umfasst.
  • Pakete können zum Kommunizieren von Informationen zwischen Komponenten verwendet werden. Pakete können in der Transaktionsschicht 205 und der Data-Link-Schicht 210 gebildet werden, um die Informationen von der sendenden Komponente an die empfangende Komponente zu übertragen. Während die gesendeten Pakete durch die anderen Schichten laufen, werden sie mit zusätzlichen Informationen erweitert, die zur Handhabung der Pakete auf diesen Schichten verwendet werden. Auf der Empfangsseite findet der umgekehrte Prozess statt, und die Pakete werden aus ihrer Darstellung der physikalischen Schicht 220 in die Darstellung der Data-Link-Schicht 210 und schließlich (für Transaktionsschichtpakete) in die Form umgewandelt, die von der Transaktionsschicht 205 der Empfangseinrichtung verarbeitet werden kann.
  • In einer Ausführungsform kann die Transaktionsschicht 205 eine Schnittstelle zwischen einem Verarbeitungskern einer Einrichtung und der Zwischenverbindungsarchitektur bereitstellen, wie beispielsweise die Data-Link-Schicht 210 und die physikalische Schicht 220. In dieser Hinsicht kann eine Hauptverantwortung der Transaktionsschicht 205 die Paketierung und Depaketierung von Paketen (d. h. Transaktionsschichtpaketen oder TLPs) umfassen. Die Transaktionsschicht 205 kann außerdem kreditbasierte Flusskontrolle für TLPs steuern. In einigen Implementierungen können geteilte Transaktionen, d. h. Transaktionen mit zeitlich getrennter Anforderung und Antwort, verwendet werden, die es einem Link u. a. ermöglichen, anderen Verkehr zu übertragen, während die Zieleinrichtung Daten für die Antwort sammelt.
  • Kreditbasierte Flusskontrolle kann verwendet werden, um virtuelle Kanäle und Netze zu realisieren, welche die Zwischenverbindungs-Fabric verwenden. In einem Beispiel kann eine Einrichtung eine anfängliche Menge von Krediten für jeden der Empfangspuffer in der Transaktionsschicht 205 anzeigen. Eine externe Einrichtung am gegenüberliegenden Ende des Links, wie beispielsweise der Controllerhub 115 in 1, kann die Anzahl von Krediten zählen, die von jedem TLP verbraucht werden. Eine Transaktion kann gesendet werden, wenn die Transaktion eine Kreditgrenze nicht überschreitet. Bei Empfang einer Antwort wird eine Kreditmenge wiederhergestellt. Ein Beispiel eines Vorteils unter anderen potenziellen Vorteilen solch eines Kreditschemas ist, dass die Latenzzeit der Kreditrückgabe die Leistung nicht beeinträchtigt, vorausgesetzt, dass die Kreditgrenze nicht erreicht wird.
  • In einer Ausführungsform können vier Transaktionsadressräume einen Konfigurationsadressraum, einen Speicheradressraum, einen Eingabe-/Ausgabe-Adressraum und einen Nachrichtenadressraum umfassen. Speicherraumtransaktionen umfassen eine oder mehrere von Leseanforderungen und Schreibanforderungen, um Daten an einen bzw. von einem im Speicher zugeordneten Speicherort zu übertragen. In einer Ausführungsform sind Speicherraumtransaktionen imstande, zwei verschiedene Adressformate, z. B. ein kurzes Adressformat, wie beispielsweise eine 32-Bit-Adresse, oder ein langes Adressformat, wie beispielsweise eine 64-Bit-Adresse, zu verwenden. Konfigurationsraumtransaktionen können zum Zugreifen auf den Konfigurationsraum von verschiedenen Einrichtungen verwendet werden, die mit der Zwischenverbindung verbunden sind. Transaktionen für den Konfigurationsraum können Leseanforderungen und Schreibanforderungen umfassen. Nachrichtenraumtransaktionen (oder einfach Nachrichten) können ebenfalls definiert werden, um Inband-Kommunikation zwischen Zwischenverbindungsagenten zu unterstützen. Daher kann die Transaktionsschicht 205 in einer beispielhaften Ausführungsform Paketheader/Nutzdaten 206 paketieren.
  • Kurz unter Bezugnahme auf 3 ist eine beispielhafte Ausführungsform eines Deskriptors eines Transaktionsschichtpakets veranschaulicht. In einer Ausführungsform kann der Transaktionsdeskriptor 300 ein Mechanismus zum Übertragen von Transaktionsinformationen sein. In dieser Hinsicht unterstützt der Transaktionsdeskriptor 300 die Identifikation von Transaktionen in einem System. Andere potenzielle Verwendungsmöglichkeiten umfassen ein Verfolgen von Modifikationen der Standardtransaktionsreihenfolge und Transaktionsassoziation mit Kanälen. Zum Beispiel kann der Transaktionsdeskriptor 300 ein globales Kennungsfeld 302, ein Attributfeld 304 und ein Kanalkennungsfeld 306 umfassen. Im veranschaulichten Beispiel ist das globale Kennungsfeld 302 so dargestellt, dass es ein lokales Transaktionskennungsfeld 308 und ein Quellenkennungsfeld 310 umfasst. In einer Ausführungsform ist die globale Transaktionskennung 302 für alle unerledigten Anforderungen eindeutig.
  • Gemäß einer Implementierung ist das lokale Transaktionskennungsfeld 308 ein Feld, das durch einen anfordernden Agenten erzeugt wird, und kann für alle unerledigten Anforderungen eindeutig sein, die eine Fertigstellung für diesen anfordernden Agenten erfordern. Außerdem identifiziert in diesem Beispiel die Quellenkennung 310 den Requester-Agenten innerhalb der Zwischenverbindungshierarchie eindeutig. Demgemäß stellt das lokale Transaktionskennungsfeld 308 zusammen mit der Quellen-ID 310 eine globale Identifikation einer Transaktion innerhalb eines Hierarchiebereichs bereit.
  • Das Attributfeld 304 spezifiziert Charakteristiken und Beziehungen der Transaktion. In dieser Hinsicht wird das Attributfeld 304 potenziell verwendet, um zusätzliche Informationen bereitzustellen, welche eine Modifikation der Standardhandhabung von Transaktionen ermöglichen. In einer Ausführungsform umfasst das Attributfeld 304 ein Prioritätsfeld 312, ein reserviertes Feld 314, ein Reihenfolge-Feld 316 und ein Nicht-Schnüffel-Feld 318. Hierbei kann das Prioritäts-Teilfeld 312 durch einen Initiator modifiziert werden, um der Transaktion eine Priorität zuzuordnen. Das reservierte Attributfeld 314 wird zur zukünftigen oder anbieterdefinierten Nutzung reserviert gelassen. Mögliche Nutzungsmodelle, welche Prioritäts- und Sicherheitsattribute verwenden, können unter Verwendung des reservierten Attributfelds implementiert werden.
  • In diesem Beispiel wird das Reihenfolge-Attributfeld 316 verwendet, um optionale Informationen zu liefern, die den Reihenfolgetyp übertragen, welcher Standardreihenfolgeregeln modifizieren kann. Gemäß einer beispielhaften Implementierung bedeutet ein Reihenfolgeattribut von „0”, dass Standardreihenfolgeregeln angewendet werden sollen, wobei ein Reihenfolgeattribut von „1” eine zwanglose Reihenfolge bedeutet, wobei Schreiboperationen Schreiboperationen in der gleichen Richtung überholen können und Lesefertigstellungen Schreiboperationen in der gleichen Richtung überholen können. Das Schnüffel-Attributfeld 318 wird verwendet, um zu bestimmen, ob Transaktionen beschnüffelt werden. Wie dargestellt, identifiziert das Kanal-ID-Feld 306 einen Kanal, mit dem eine Transaktion assoziiert ist.
  • Zurück zur Erörterung von 2 kann eine Linkschicht 210, die auch als Data-Link-Schicht 210 bezeichnet wird, als eine Zwischenstufe zwischen der Transaktionsschicht 205 und der physikalischen Schicht 220 fungieren. In einer Ausführungsform ist eine Zuständigkeit der Data-Link-Schicht 210 die Bereitstellung eines zuverlässigen Mechanismus zum Austauschen von Transaktionsschichtpaketen (TLPs für engl. Transaction Layer Packets) zwischen zwei Komponenten auf einem Link. Eine Seite der Data-Link-Schicht 210 akzeptiert von der Transaktionsschicht 205 paketierte TLPs, wendet eine Paketsequenzkennung 211, d. h. eine Identifikationsnummer oder Paketnummer an, berechnet einen Fehlererkennungscode, d. h. CRC 212, und wendet diesen an und übermittelt die modifizierten TLPs an die physikalische Schicht 220 zur Übertragung über eine physikalische an eine externe Einrichtung.
  • In einem Beispiel umfasst die physikalische Schicht 220 einen logischen Teilblock 221 und einen elektrischen Teilblock 222, um ein Paket physikalisch an eine externe Einrichtung zu senden. Hierbei ist der logische Teilblock 221 für die „digitalen” Funktionen der physikalischen Schicht 221 zuständig. In dieser Hinsicht kann der logische Teilblock einen Sendeabschnitt zum Vorbereiten von abgehenden Informationen zur Übertragung durch den physikalischen Teilblock 222 und einen Empfangsabschnitt zum Identifizieren und Vorbereiten von empfangenen Informationen vor ihrer Weitergabe an die Linkschicht 210 umfassen.
  • Der physikalische Block 222 umfasst einen Sender und einen Empfänger. Der Sender wird durch den logischen Teilblock 221 mit Symbolen versorgt, welche der Sender serialisiert und an eine externe Einrichtung weitersendet. Der Empfänger wird mit serialisierten Symbolen von einer externen Einrichtung versorgt und wandelt die empfangenen Signale in einen Bitstrom um. Der Bitstrom wird deserialisiert und an den logischen Teilblock 221 geliefert. In einer beispielhaften Ausführungsform wird ein 8b/10b-Übertragungscode eingesetzt, wobei Zehn-Bit-Symbole gesendet/empfangen werden. Hierbei werden spezielle Symbole zum Einrahmen eines Pakets mit Rahmen 223 verwendet. Außerdem stellt der Empfänger in einem Beispiel auch einen Symboltakt bereit, der aus dem ankommenden seriellen Strom rückgewonnen wird.
  • Obwohl, wie bereits erwähnt, die Transaktionsschicht 205, die Linkschicht 210 und die physikalische Schicht 220 in Bezug auf eine spezifische Ausführungsform eines Protokollstapels (wie beispielsweise eines PCIe-Protokollstapels) erörtert werden, ist ein Schichtprotokollstapel nicht darauf beschränkt. In Wirklichkeit kann jedes Schichtprotokoll enthalten sein bzw. implementiert werden und die hierin erörterten Merkmale übernehmen. Als ein Beispiel kann ein Port bzw. eine Schnittstelle, der/die als ein Schichtprotokoll dargestellt ist, umfassen: (1) eine erste Schicht zum Paketieren von Paketen, d. h. eine Transaktionsschicht; eine zweite Schicht zum Sequenzieren von Paketen, d. h. eine Linkschicht; und eine dritte Schicht zum Senden der Pakete, d. h. eine physikalische Schicht. Als ein spezifisches Beispiel wird ein Hochleistungszwischenverbindungs-Schichtprotokoll, wie hierin beschrieben, verwendet.
  • Als Nächstes ist unter Bezugnahme auf 4 ist eine beispielhafte Ausführungsform einer seriellen Punkt-zu-Punkt-Fabric veranschaulicht. Ein serieller Punkt-zu-Punkt-Link kann jeden Übertragungspfad zum Senden von seriellen Daten umfassen. In der dargestellten Ausführungsform kann ein Link zwei differenziell gesteuerte Niederspannungssignalpaare umfassen: ein Sendepaar 406/411 und ein Empfangspaar 412/407. Demgemäß umfasst eine Einrichtung 405 Übertragungslogik 406, um Daten an eine Einrichtung 410 zu senden, und Empfangslogik 407, um Daten von der Einrichtung 410 zu empfangen. Mit anderen Worten sind in einigen Implementierungen eines Links zwei Sendepfade, d. h. Pfade 416, 417, und zwei Empfangsfade, d. h. Pfade 418 und 419, enthalten.
  • „Übertragungspfad” bezieht sich auf jeden Pfad zum Senden von Daten, wie beispielsweise eine Übertragungsleitung, eine Kupferleitung, eine optische Leitung, einen drahtlosen Kommunikationskanal, einen Infrarotkommunikationslink oder einen anderen Kommunikationspfad. Eine Verbindung zwischen zwei Einrichtungen, wie beispielsweise Einrichtung 405 und Einrichtung 410, wird als Link, wie beispielsweise Link 415, bezeichnet. Ein Link kann eine Lane unterstützen – wobei jede Lane einen Satz von differenziellen Signalpaaren (ein Paar zum Senden, ein Paar zum Empfangen) darstellt. Zum Skalieren der Bandbreite kann ein Link mehrere Lanes aggregieren, die mit xN bezeichnet werden, wobei N jede unterstützte Linkbreite ist, wie beispielsweise 1, 2, 4, 8, 12, 16, 32, 64 oder breiter.
  • „Differenzielles Paar” kann sich auf zwei Übertragungspfade, wie beispielsweise die Leitungen 416 und 417, zum Senden von differenziellen Signalen beziehen. Als ein Beispiel steuert die Leitung 417 von einem logischen H-Pegel auf einen logischen L-Pegel, d. h. abfallende Flanke, wenn die Leitung 416 von einem Niederspannungspegel auf einen Hochspannungspegel umschaltet, d. h. ansteigende Flanke. Differenzielle Signale weisen potenziell bessere elektrische Charakteristiken, wie beispielsweise eine bessere Signalintegrität, d. h. Kreuzkopplung, Spannungsüberschreitung/-unterschreitung, Nachschwingen, unter anderen beispielhaften Vorteilen auf. Dies ermöglicht ein besseres Taktfenster, welches schnellere Übertragungsfrequenzen ermöglicht.
  • In einer Ausführungsform wird eine neue Hochleistungszwischenverbindung (HPI für engl. High Performance Interconnect) bereitgestellt. HPI kann eine cache-kohärente, linkbasierte Zwischenverbindung der nächsten Generation umfassen. Als ein Beispiel kann HPI in Hochleistungs-Computerplattformen, wie beispielsweise Workstations oder Servern, verwendet werden, einschließlich Systemen, in welchen typischerweise PCIe oder ein anderes Zwischenverbindungsprotokoll zum Verbinden von Prozessoren, Beschleunigern, E-/A-Einrichtungen und dergleichen verwendet wird. HPI ist jedoch nicht darauf beschränkt. Stattdessen kann HPI in jedem bzw. jeder der hierin beschriebenen Systeme oder Plattformen verwendet werden. Außerdem können die einzelnen entwickelten Ideen auf andere Zwischenverbindungen und Plattformen, wie beispielsweise PCIe, MIPI, QPI usw. angewendet werden.
  • Um mehrere Einrichtungen zu unterstützen, kann HPI in einer beispielhaften Ausführungsform eine Anweisungssatz-Architektur (ISA für engl. Instruction Set Architecture) agnostisch umfassen (d. h. die HPI kann in mehreren verschiedenen Einrichtungen implementiert werden). In einem anderen Szenario kann HPI auch zum Verbinden von Hochleistungs-E-/A-Einrichtungen und nicht nur Prozessoren oder Beschleunigern verwendet werden. Zum Beispiel kann eine Hochleistungs-PCIe-Einrichtung durch eine entsprechende Übersetzungsbrücke (d. h. HPI zu PCIe) mit HPI gekoppelt werden. Darüber hinaus können die HPI-Links durch viele HPI-basierte Einrichtungen, wie beispielsweise Prozessoren, auf verschiedene Arten und Weisen (z. B. Sterne, Ringe, Maschen usw.) verwendet werden. 5 veranschaulicht beispielhafte Implementierungen von mehreren potenziellen Mehrsockelkonfigurationen. Eine Zwei-Sockel-Konfiguration 505, wie dargestellt, kann zwei HPI-Links umfassen; in anderen Implementierungen kann jedoch ein HPI-Link verwendet werden. Für größere Topologien kann jede Konfiguration verwendet werden, solange neben anderen zusätzlichen oder Ersatzmerkmalen eine Kennung (ID) zugeordnet werden kann und es eine gewisse Form von virtuellem Pfad gibt. Wie dargestellt, weist in einem Beispiel eine Vier-Sockel-Konfiguration 510 einen HPI-Link von jedem Prozessor zu einem anderen auf. Aber in der Acht-Sockel-Implementierung, die in Konfiguration 515 dargestellt ist, sind nicht alle Sockel durch einen HPI-Link direkt miteinander verbunden. Wenn jedoch ein virtueller Pfad oder Kanal zwischen den Prozessoren vorhanden ist, wird die Konfiguration unterstützt. Ein Bereich von unterstützen Prozessoren umfasst 2 bis 32 in einer systemeigenen Domäne. Höhere Anzahlen von Prozessoren können u. a. durch die Verwendung von mehreren Domänen oder anderen Zwischenverbindungen zwischen Knotencontrollern erreicht werden.
  • Die HPI-Architektur umfasst eine Definition einer Schichtprotokollarchitektur, die in einigen Beispielen Protokollschichten (kohärente, nichtkohärente und optional speicherbasierte Protokolle), eine Routingschicht, eine Linkschicht und eine physikalische Schicht mit zugehöriger E-/A-Logik umfasst. Außerdem kann HPI ferner Erweiterungen in Bezug auf Leistungsverwalter (wie beispielsweise Leistungssteuereinheiten (PCUs für engl. power control units)), Entwurf für Test und Fehler (DFT für engl. design for test and debug), Störungsbehandlung, Register, Sicherheit u. a. umfassen. 6 veranschaulicht eine Ausführungsform eines beispielhaften HPI-Schichtprotokollstapels. In einigen Implementierungen kann mindestens eine der in 6 veranschaulichten Schichten optional sein. Jede Schicht hat mit ihrem eigenen Granularitätsgrad oder Informationsquantum zu tun (die Protokollschicht 605a, b mit Paketen 630, die Linkschicht 610a, b mit Flits 635 und die physikalische Schicht 605a, b mit Phits 640). Es ist zu erwähnen, dass ein Paket in einigen Ausführungsformen basierend auf der Implementierung Teilflits, ein einziges Flit oder mehrere Flits umfassen kann.
  • Als ein erstes Beispiel umfasst eine Breite eines Phits 640 eine 1-zu-1-Zuordnung von Linkbreite zu Bits (z. B. umfasst eine 20-Bit-Lenkbreite ein Phit von 20 Bits usw.). Flits können eine größere Größe, wie beispielsweise 184, 192 oder 200 Bits, aufweisen. Es ist zu erwähnen, dass dann, wenn ein Phit 640 20 Bits breit ist, und die Größe eines Flits 635 184 Bits ist, eine Bruchzahl von Phits 640 nötig ist, um ein Flit 635 zu senden (unter anderen Beispielen z. B. 9,2 Phits bei 20 Bits, um ein 184-Bit-Flit 635 zu senden, oder 9,6 bei 20 Bits, um ein 192-Bit-Flit zu senden). Es ist zu erwähnen, dass Breiten des Basislinks auf der physikalischen Schicht variieren können. Die Anzahl von Lanes pro Richtung kann zum Beispiel 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24 usw. umfassen. In einer Ausführungsform ist die Linkschicht 610a, b imstande, mehrere Teile von verschiedenen Transaktionen in ein einziges Flit einzubetten, und es können ein oder mehrere Header (z. B. 1, 2, 3, 4) in das Flit eingebettet sein. In einem Beispiel teilt HPI die Header in entsprechende Schlitze, um mehrere Nachrichten im Flit zu ermöglichen, die für verschiedene Knoten bestimmt sind.
  • Die physikalische Schicht 605a, b kann in einer Ausführungsform für die schnelle Übertragung von Informationen auf dem physikalischen Medium (elektrisch oder optisch usw.) zuständig sein. Der physikalische Link kann zwischen zwei Linkschichtinstanzen, wie beispielsweise Schicht 605a und 650b, von Punkt zu Punkt sein. Die Linkschicht 610a, b kann die physikalische Schicht 605a, b von den oberen Schichten abstrahieren und stellt die Fähigkeit zur zuverlässigen Übertragung von Daten (sowie Anforderungen) und Steuerung der Flusskontrolle zwischen zwei direkt verbundenen Instanzen bereit. Die Linkschicht kann außerdem für das Virtualisieren des physikalischen Kanals zu mehreren virtuellen Kanälen und Nachrichtenklassen zuständig sein. Die Protokollschicht 620a, b ist auf die Linkschicht 610a, b angewiesen, um Protokollnachrichten vor ihrer Übergabe an die physikalische Schicht 605a, b zur Übertragung über die physikalischen Links entsprechenden Nachrichtenklassen und virtuellen Kanälen zuzuordnen. Die Linkschicht 610a, b kann mehrere Nachrichten unterstützen, wie beispielsweise Anforderung, Schnüffeln, Antwort, Rückschreiben, nichtkohärente Daten u. a.
  • Die physikalische Schicht 605a, b (oder PHY) der HPI kann über der elektrischen Schicht (d. h. den elektrischen Verbindern, die zwei Komponenten verbinden) und unter der Linkschicht 610a, b implementiert sein, wie in 6 veranschaulicht. Die physikalische Schicht und entsprechende Logik können sich auf jedem Agenten befinden und verbinden die Linkschichten auf zwei Agenten (A und B), die voneinander getrennt sind (z. B. auf Einrichtungen auf jeder Seite von einem Link). Die lokalen und abgesetzten elektrischen Schichten sind durch physikalische Medien (z. B. Drähte, Leiter, optisch usw.) verbunden. Die physikalische Schicht 605a, b weist in einer Ausführungsform zwei Hauptphasen, Initialisierung und Betrieb, auf. Während der Initialisierung ist die Verbindung opak für die Linkschicht, und die Signalisierung kann eine Kombination von zeitlich gesteuerten Zuständen und Handshake-Ereignissen umfassen. Während des Betriebs ist die Verbindung transparent für die Linkschicht, und die Signalisierung ist bei einer Geschwindigkeit, wobei alle Lanes zusammen als ein einziger Link funktionieren. Während der Betriebsphase transportiert die physikalische Schicht Flits von Agent A zu Agent B und von Agent B zu Agent A. Die Verbindung wird auch als Link bezeichnet und abstrahiert einige physikalische Aspekte, einschließlich Medien, Breite und Geschwindigkeit, von den Linkschichten während des Austausches von Flits und Kontrolle/Status der aktuellen Konfiguration (z. B. Breite) mit der Linkschicht. Die Initialisierungsphase umfasst kleinere Phasen, z. B. Abfrage, Konfiguration. Auch die Betriebsphase umfasst kleinere Phasen (z. B. Link-Energieverwaltungsstatus).
  • In einer Ausführungsform kann die Linkschicht 610a, b so implementiert sein, dass sie zuverlässige Datenübertragung zwischen zwei Protokoll- oder Routing-Instanzen bereitstellt. Die Linkschicht kann die physikalische Schicht 605a, b von der Protokollschicht 620a, b abstrahieren, und sie kann für die Flusskontrolle zwischen zwei Protokoll-Agenten (A, B) zuständig sein und Dienste virtueller Kanäle für die Protokollschicht (Nachrichtenklassen) und Routingschicht (virtuelle Netze) bereitstellen. Die Schnittstelle zwischen der Protokollschicht 620a, b und der Linkschicht 610a, b kann typischerweise auf der Paketebene sein. In einer Ausführungsform wird die kleinste Übertragungseinheit auf der Linkschicht als Flit, wobei es sich um eine spezifizierte Anzahl von Bits, wie beispielsweise 192 Bits, handelt, oder mit einer anderen Benennung bezeichnet. Die Linkschicht 610a, b ist auf die physikalische Schicht 605a, b angewiesen, um die Übertragungseinheit (Phit) der physikalischen Schicht 605a, b in die Übertragungseinheit (Flit) der Linkschicht 610a, b einzurahmen. Außerdem kann die Linkschicht 610a, b logisch in zwei Teile, einen Sender und einen Empfänger, zerlegt werden. Ein Sender/Empfänger-Paar auf einer Instanz kann mit einem Sender/Empfänger-Paar auf einer anderen Instanz verbunden werden. Flusskontrolle erfolgt häufig sowohl auf einer Flit- als auch einer Paketbasis. Die Erkennung und die Korrektur von Fehlern werden ebenfalls potenziell auf einer Flit-Ebenen-Basis durchgeführt.
  • In einer Ausführungsform kann die Routingschicht 615a, b ein flexibles und verteiltes Verfahren zum Leiten von HPI-Transaktionen von einem Ursprung zu einem Ziel bereitstellen. Das Schema ist flexibel, da Routing-Algorithmen für mehrere Topologien durch programmierbare Routingtabellen an jedem Router spezifiziert sein können (die Programmierung erfolgt in einer Ausführungsform durch Firmware, Software oder eine Kombination davon). Die Routingfunktionalität kann verteilt sein: das Routing kann durch eine Reihe von Routingschritten erfolgen, wobei jeder Routingschritt durch ein Nachschlagen einer Tabelle an jedem Ursprungs-, Zwischen- oder Zielrouter definiert ist. Das Nachschlagen an einem Ursprung kann verwendet werden, um ein HPI-Paket in die HPI-Fabric zu injizieren. Das Nachschlagen an einem Zwischenrouter kann verwendet werden, um ein HPI-Paket von einem Eingangsport zu einem Ausgangsport zu leiten. Das Nachschlagen an einem Zielport kann verwendet werden, um den Ziel-HPI-Protokoll-Agenten vorherzubestimmen. Es ist zu erwähnen, dass die Routingschicht in einigen Implementierungen dünn sein kann, da die Routingtabellen und infolgedessen die Routing-Algorithmen nicht speziell durch Spezifikation definiert sind. Dies ermöglicht Flexibilität und, dass eine Vielzahl von Nutzungsmodellen, einschließlich flexibler architektonischer Plattformtopologien, durch die Systemimplementierung definiert wird. Die Routingschicht 615a, b ist auf die Linkschicht 610a, b angewiesen, um die Verwendung von bis zu drei (oder mehr) virtuellen Netzen (VNs) – in einem Beispiel zwei blockierungsfreien VNs, VN0 und VN1, mit verschiedenen Nachrichtenklassen, die in jedem virtuellen Netz definiert sind – bereitzustellen. Ein gemeinsam genutztes virtuelles Netz (VNA für engl. adaptive virtual network) kann in der Linkschicht definiert sein, aber dieses adaptive Netz kann nicht direkt in Routingkonzepten dargelegt werden, da jede Nachrichtenklasse und jedes virtuelle Netz unter anderen Merkmalen und Beispielen dedizierte Ressourcen und garantierten Weiterleitungsfortschritt aufweisen können.
  • In einer Ausführungsform kann HPI eine Kohärenzprotokollschicht 620a, b umfassen, um Agenten zu unterstützen, welche Zeilen von Daten aus einem Speicher zwischenspeichern. Ein Agent, der Speicherdaten zwischenzuspeichern wünscht, kann das Kohärenzprotokoll verwenden, um die Zeile von Daten auszulesen und in seinen Cache zu laden. Ein Agent, der eine Zeile von Daten in seinem Cache zu modifizieren wünscht, kann das Kohärenzprotokoll verwenden, um das Eigentum an der Zeile vor dem Modifizieren der Daten zu erwerben. Nach dem Modifizieren einer Zeile kann ein Agent sie entsprechend Protokollvorgaben in seinem Cache halten, bis er die Zeile entweder in den Speicher zurückschreibt oder die Zeile in eine Antwort auf eine externe Anforderung aufnimmt. Schließlich kann ein Agent externe Anforderungen zum Annullieren einer Zeile in seinem Cache erfüllen. Das Protokoll stellt die Kohärenz der Daten durch Vorschreiben der Regeln sicher, die alle Caching-Agenten befolgen können. Es stellt außerdem die Mittel für Agenten ohne Caches zum kohärenten Lesen und Schreiben von Speicherdaten bereit.
  • Zwei Bedingungen können zum Unterstützen von Transaktionen unter Verwendung des HPI-Kohärenzprotokolls durchgesetzt werden. Erstens kann das Protokoll als ein Beispiel die Datenkonsistenz auf einer Pro-Adresse-Basis unter den Daten in den Caches von Agenten und zwischen diesen Daten und den Daten im Speicher aufrechterhalten. Informell ausgedrückt kann sich Datenkonsistenz auf jede gültige Zeile von Daten in einem Cache eines Agenten beziehen, die einen aktuellsten Wert der Daten darstellt, und Daten, die in einem Kohärenzprotokollpaket gesendet werden, können den aktuellsten Wert der Daten zum Zeitpunkt ihres Versands darstellen. Wenn keine gültige Kopie von Daten in Caches vorhanden ist oder übertragen wird, kann das Protokoll den aktuellsten Wert der Daten gewährleisten, die sich im Speicher befinden. Zweitens kann das Protokoll gut definierte Verpflichtungspunkte für Anforderungen bereitstellen. Verpflichtungspunkte für Leseoperationen können anzeigen, wann die Daten verwendbar sind; und für Schreiboperationen können sie anzeigen, wann die geschriebenen Daten global beobachtbar sind und durch anschließende Leseoperationen geladen werden. Das Protokoll kann diese Verpflichtungspunkte sowohl für zwischenspeicherbare als auch nicht zwischenspeicherbare (UC für engl. uncacheable) Anforderungen im kohärenten Speicherbereich unterstützen.
  • Das HPI-Kohärenzprotokoll kann außerdem den Weiterleitungsfortschritt von Kohärenzanforderungen gewährleisten, die von einem Agenten für eine Adresse im kohärenten Speicherbereich gestellt werden. Transaktionen können schließlich zuverlässig erfüllt und für einen korrekten Systembetrieb ausgemustert werden. Das HPI-Kohärenzprotokoll hat in einigen Ausführungsformen möglicherweise keine Ahnung von einem Wiederholungsversuch zum Lösen von Ressourcenzuweisungskonflikten. Daher kann das Protokoll selbst so definiert werden, dass es keine zyklischen Ressourcenabhängigkeiten enthält, und Implementierungen können in ihren Entwürfen darauf achten, dass keine Abhängigkeiten eingeführt werden, die zu Blockierungen führen können. Außerdem kann das Protokoll darauf hinweisen, wenn Entwürfe imstande sind, fairen Zugriff auf Protokollressourcen bereitzustellen.
  • Logisch kann das HPI-Kohärenzprotokoll in einer Ausführungsform drei Elemente umfassen: Kohärenz(oder Zwischenspeicher)-Agenten, Home-Agenten und die HPI-Zwischenverbindungs-Fabric, welche die Agenten verbindet. Kohärenzagenten und Home-Agenten können zusammenarbeiten, um Datenkonsistenz durch Austauschen von Nachrichten über die Zwischenverbindung zu erreichen. Die Linkschicht 610a, b und ihre zugehörige Beschreibung können die Einzelheiten der Zwischenverbindungs-Fabric bereitstellen, einschließlich dessen, wie es die Vorgaben des hierin erörterten Kohärenzprotokolls befolgt. (Es ist zu erwähnen, dass die Teilung in Kohärenzagenten und Home-Agenten der Klarheit halber erfolgt. Ein Entwurf kann u. a. mehrere Agenten von beiden Typen innerhalb eines Sockels enthalten oder sogar das Verhalten von Agenten zu einer einzigen Entwurfseinheit kombinieren.)
  • In einer Ausführungsform können Home-Agenten so konfiguriert sein, dass sie physikalischen Speicher schützen. Jeder Home-Agent kann für eine Region des kohärenten Speicherbereichs zuständig sein. Regionen können nichtüberlappend sein, insofern als eine einzige Adresse durch einen Home-Agenten geschützt wird, und zusammen umfassen die Home-Agent-Regionen in einem System den kohärenten Speicherbereich. Zum Beispiel kann jede Adresse durch mindestens einen Home-Agenten geschützt werden. Daher kann in einer Ausführungsform jede Adresse in einem kohärenten Speicherbereich eines HPI-Systems genau einem Home-Agenten zugeordnet werden.
  • Home-Agenten im HPI-Kohärenzprotokoll können in einer Ausführungsform für das Bearbeiten von Anforderungen für den kohärenten Speicherbereich zuständig sein. Für Lese(Rd)-Anforderungen können Home-Agenten Schnüffler (Snp für engl. snoop) erzeugen, ihre Antworten verarbeiten, eine Datenantwort senden und eine Fertigstellungsantwort senden. Für Annullierungs(Inv)-Anforderungen können Home-Agenten notwendige Schnüffler erzeugen, ihre Antworten verarbeiten und eine Fertigstellungsantwort senden. Für Schreibanforderungen können Home-Agenten die Daten in den Speicher schreiben und eine Fertigstellungsantwort senden.
  • Home-Agenten können Schnüffler im HPI-Kohärenzprotokoll bereitstellen und Schnüfflerantworten von Kohärenzagenten verarbeiten. Home-Agenten können auch Weiterleitungsanforderungen, bei welchen es sich um eine spezielle Schnüfflerantwort handelt, von Kohärenzagenten zur Konfliktlösung verarbeiten. Wenn ein Home-Agent eine Weiterleitungsanforderung empfängt, kann er eine Weiterleitungsantwort an den Kohärenzagenten senden, der die Weiterleitungsanforderung erzeugte (d. h. den Agenten, der eine in Konflikt stehende Schnüffelanforderung erkannte). Kohärenzagenten können die Reihenfolge dieser Weiterleitungsantworten und Fertigstellungsantworten vom Home-Agenten verwenden, um Konflikte zu lösen.
  • Ein Kohärenzagent kann unterstützte Kohärenzprotokollanforderungen ausgeben. Anforderungen können an eine Adresse im kohärenten Speicherbereich ausgegeben werden. Daten, die für Leseanforderungen (Rd) empfangen werden, können mit Ausnahme von RdCur konsistent sein. Daten für RdCur-Anforderungen können konsistent gewesen sein, als das Datenpaket erzeugt wurde (obwohl sie während der Lieferung abgelaufen sein können).
  • Tabelle 1 stellt eine beispielhafte, nicht erschöpfende Liste von potenziellen unterstützten Anforderungen dar: TABELLE 1
    Name Semantik Cache-Zustand
    RdCode Anfordern einer Cache-Zeile im F- oder S-Zustand. F oder S
    RdData Anfordern einer Cache-Zeile im E-, F- oder S-Zustand. F oder S
    RdMigr Anfordern einer Cache-Zeile im M-, E-, F- oder S-Zustand. M und (F oder S)
    RdInv Anfordern einer Cache-Zeile im E-Zustand. Wenn eine Zeile vorher im M-Zustand zwischengespeichert wurde, wird die Zeile vor der Lieferung von E-Daten in den Speicher geschrieben. E
    RdInvOwn Anfordern einer Cache-Zeile im M- oder E-Zustand. M
    RdCur Anfordern eines nicht zwischenspeicherbaren Schnappschusses einer Cache-Zeile.
    InvItoE Anfordern von exklusivem Eigentum an einer Cache-Zeile ohne Empfang von Daten. M oder E
    InvItoM Anfordern von exklusivem Eigentum an einer Cache-Zeile ohne Empfang von Daten und mit der Absicht, kurz danach Rückschreiben durchzuführen. M oder E
    InvXtoI Entleeren einer Cache-Zeile aus allen Caches. Der anfordernde Agent hat die Zeile in seinem Cache zu annullieren, bevor er diese Anforderung ausgibt.
    WbMtoI Rückschreiben einer Cache-Zeile im M-Zustand in den Speicher und Annullieren der Zeile im Cache. M
    WbMtoS Rückschreiben einer Cache-Zeile im M-Zustand in den Speicher und Überführen der Zeile in den S-Zustand. M und S
    WbMtoE Rückschreiben einer Cache-Zeile im M-Zustand in den Speicher und Überführen der Zeile in den E-Zustand. M und E
    WbMtoIPtl Rückschreiben einer Cache-Zeile im M-Zustand in den Speicher gemäß einer Byte-Aktivierungsmaske und Überführen der Zeile in den I-Zustand. M
    WbMtoEPtl Rückschreiben einer Cache-Zeile im M-Zustand in den Speicher gemäß einer Byte-Aktivierungsmaske, Überführen der Zeile in den E-Zustand und Löschen der Maske der Zeile im Cache. M und E
    EvctCln Meldung an einen Home-Agenten, dass eine Cache-Zeile im E-Zustand im Cache annulliert wurde. E
    WbPushMtoI Senden einer Zeile im M-Zustand an einen Home-Agenten und Annullieren der Zeile im Cache; der Home-Agent kann entweder die Zeile in den Speicher zurückschreiben oder sie an einen lokalen Cache-Agenten mit M-Zustand senden. M
    WbFlush Anfordern, dass Home Schreiboperation in implementierungsspezifische Adressen in seiner Speicherhierarchie entleeren. Es werden keine Daten mit der Anforderung gesendet.
  • Die HPI kann ein Kohärenzprotokoll unterstützen, das von Prinzipien des MESI-Protokolls Gebrauch macht. Jede Cache-Zeile kann mit einem oder mehreren unterstützten Zuständen markiert (z. B. in der Cache-Zeile codiert) werden. Ein Zustand „M” oder „modifiziert” kann anzeigen, dass der Cache-Zeilenwert von dem Wert modifiziert wurde, der im Hauptspeicher ist. Eine Zeile im M-Zustand ist nur im Besonderen vorhanden, und der entsprechende Cache-Agent kann aufgefordert werden, die modifizierten Daten zu einem gewissen Zeitpunkt in der Zukunft, zum Beispiel vor dem Ermöglichen jeder anderen Leseoperation des (nicht mehr gültigen) Hauptspeicherzustands, in den Speicher zurückzuschreiben. Ein Rückschreiben kann die Zeile vom M-Zustand in den E-Zustand überführen. Der Zustand „E” oder „exklusiv” kann anzeigen, dass die Cache-Zeile nur im aktuellen Cache vorhanden ist, dass aber ihr Wert dem im Hauptspeicher entspricht. Die Cache-Zeile im E-Zustand kann in Reaktion auf eine Leseanforderung jederzeit in den S-Zustand übergehen, oder sie kann durch Schreiben in die Zeile in den M-Zustand gewechselt werden. Der Zustand „S” (für engl. shared) oder „gemeinsam/geteilt” kann anzeigen, dass die Cache-Zeile in anderen Caches der Maschine gespeichert sein kann und einen Wert aufweist, der dem des Hauptspeichers entspricht. Die Zeile kann jederzeit verworfen (in den I-Zustand gewechselt) werden. Der Zustand „I” (für engl. invalid) oder „ungültig” kann anzeigen, dass eine Cache-Zeile ungültig oder ungenutzt ist. Es können auch andere Zustände in HPI unterstützt werden, wie u. a. beispielsweise ein gemeinsamer Zustand „F” (für engl. forward) oder „Weiterleitung”, der anzeigt, dass der jeweilige gemeinsame Zeilenwert an andere Caches weitergeleitet werden soll, welche sich ebenfalls die Zeile teilen sollen.
  • Tabelle 2 umfasst beispielhafte Informationen, die in einige Kohärenzprotokollnachrichten aufgenommen werden können und u. a. Schnüffel-, Lese- und Schreibanforderungen umfassen: TABELLE 2
    Feld Verwendung
    cmd Nachrichtenbefehl (oder Name oder Opcode).
    addr Adresse einer kohärenten Cache-Zeile.
    destNID Knoten-ID (NID) eines Ziel(Heim- oder Kohärenz)-Agenten.
    reqNID ND eines anfordernden Kohärenzagenten.
    peerNID NID eines Kohärenzagenten, der die (Weiterleitungsanforderungs-)Nachricht sandte.
    reqTID ID der Ressource, die durch den anfordernden Agenten für die Transaktion zugewiesen wird, auch bekannt als RTID (oder Anforderungstransaktionskennung).
    homeTID ID der Ressource, die durch den Home-Agenten zum Verarbeiten der Transaktion zugewiesen wird, auch bekannt als HTID (oder Home-Transaktionskennung).
    data Eine Cache-Zeile von Daten.
    mask Byte-Maske zum Qualifizieren der Daten.
  • Schnüffelnachrichten können durch Home-Agenten erzeugt und zu Kohärenzagenten geleitet werden. Ein virtueller Schnüffel(SNP)-Kanal kann für Schnüffler verwendet werden, und in einer Ausführungsform sind es die einzigen Nachrichten, die den virtuellen SNP-Kanal verwenden. Schnüffler können die NID des anfordernden Agenten und die RTID umfassen, die er Anforderung zuwies, falls die Schnüffelergebnisse in Daten direkt an den anfordernden Agenten gesendet werden. Schnüffler können in einer Ausführungsform auch die HTID umfassen, die durch den Home-Agenten zum Verarbeiten der Anforderung zugewiesen wurde. Der Kohärenzagent, der den Schnüffler verarbeitet, kann die HTID in die Schnüfflerantwort aufnehmen, die er an den Home-Agenten zurücksendet. Schnüffler umfassen die NID des Home-Agenten in einigen Fällen möglicherweise nicht, da sie aus der enthaltenen Adresse abgeleitet werden kann, was der Ziel-Kohärenzagent macht, wenn er seine Antwort sendet. Fanout-Schnüffler (jene mit dem Präfix „SnpF”) enthalten möglicherweise keine Ziel-NID, da die Routing-Schicht für das Erzeugen der entsprechenden Schnüffelnachrichten an alle Partner in der Fanout-Region zuständig ist. Eine beispielhafte Liste von Schnüffelkanalnachrichten ist in Tabelle 3 aufgeführt: TABELLE 3
    Befehl Semantik Felder
    SnpCode Schnüffeln, um Daten im F- oder S-Zustand zu erhalten. cmd, addr, destNID, reqNID, reqTID, homeTID
    SnpData Schnüffeln, um Daten im E-, F- oder S-Zustand zu erhalten.
    SnpMigr Schnüffeln, um Daten im M-, E-, F- oder S-Zustand zu erhalten.
    SnpInv Schnüffeln, um den Cache des Partners zu annullieren, Entleeren jeglicher M-Kopien in Speicher.
    SnpInvOwn Schnüffeln, um Daten im M- oder E-Zustand zu erhalten.
    SnpCur Schnüffeln, um einen nicht zwischenspeicherbaren Schnappschuss einer Cache-Zeile zu erhalten.
    SnpFCode Schnüffeln, um Daten im F- oder S-Zustand zu erhalten; Routingschicht wickelt Verteilung an alle Fanout-Partner ab. cmd, addr, reqNID, reqTID, homeTID
    SnpFData Schnüffeln, um Daten im E-, F- oder S-Zustand zu erhalten; Routingschicht wickelt Verteilung an alle Fanout-Partner ab.
    SnpFMigr Schnüffeln, um Daten im M-, E-, F- oder S-Zustand zu erhalten; Routingschicht wickelt Verteilung an alle Fanout-Partner ab.
    SnpFInvOwn Schnüffeln, um Daten im M- oder E-Zustand zu erhalten; Routingschicht wickelt Verteilung an alle Fanout-Partner ab.
    SnpFInv Schnüffeln, um den Cache des Partners zu annullieren, Entleeren jeglicher M-Kopien in Speicher; Routingschicht wickelt Verteilung an alle Fanout-Partner ab.
    SnpCur Schnüffeln, um einen nicht zwischenspeicherbaren Schnappschuss einer Cache-Zeile zu erhalten; Routingschicht wickelt Verteilung an alle Fanout-Partner ab.
  • Die HPI kann außerdem Nicht-Schnüffel-Anforderungen unterstützen, die sie an eine Adresse ausgeben können, wie beispielsweise jene, die als nichtkohärente Anforderungen implementiert werden. Beispiele solcher Anforderungen können unter anderen potenziellen Beispielen eine Nicht-Schnüffel-Leseoperation zum Anfordern einer Nur-Lese-Zeile aus dem Speicher, eine Nicht-Schnüffel-Schreiboperation zum Schreiben einer Zeile in den Speicher und ein Schreiben einer Zeile in den Speicher gemäß einer Maske umfassen.
  • In einem Beispiel können vier allgemeine Typen von Antwortnachrichten im HPI-Kohärenzprotokoll definiert sein: Daten, Fertigstellung, Schnüffeln und Weiterleitung. Bestimmte Datennachrichten können eine zusätzliche Fertigstellungsanzeige übertragen, und bestimmte Schnüfflerantworten können Daten übertragen. Antwortnachrichten können den virtuellen RSP-Kanal verwenden, und die Kommunikations-Fabric kann eine korrekte Nachrichtenlieferreihenfolge unter geordneten Fertigstellungsantworten und Weiterleitungsantworten aufrechterhalten.
  • Tabelle 4 umfasst eine Liste mindestens einiger potenzieller Antwortnachrichten, die durch ein beispielhaftes HPI-Kohärenzprotokoll unterstützt werden: TABELLE 4
    Name Semantik Felder
    Data_M Daten sind im M-Zustand. cmd, destNID, reqTID, data
    Data_E Daten sind im E-Zustand.
    Data_F Daten sind im F-Zustand.
    Data_SI Je nach der Anforderung sind Daten im S-Zustand oder nicht zwischenspeicherbare „Schnappschuss”-Daten.
    Data_M Daten sind im M-Zustand mit einer geordneten Fertigstellungsantwort.
    Data_E Daten sind im E-Zustand mit einer geordneten Fertigstellungsantwort.
    Data_F Daten sind im F-Zustand mit einer geordneten Fertigstellungsantwort.
    Data_SI: Je nach der Anforderung sind Daten im S-Zustand oder nicht zwischenspeicherbare „Schnappschuss”-Daten mit einer geordneten Fertigstellungsantwort.
    CmpU Fertigstellungsnachricht ohne Reihenfolgevorgaben. cmd, destNID, reqTID
    CmpO Fertigstellungsantwort, die mit Weiterleitungsantworten geordnet werden soll.
    RspI Cache ist im I-Zustand. cmd, destNID, homeTID
    RspS Cache ist im S-Zustand.
    RspFwd Kopie von Cache-Zeile wurde an einen anfordernden Agenten gesendet, Cache-Zustand hat sich nicht geändert.
    RspFwdI Kopie von Cache-Zeile wurde an einen anfordernden Agenten gesendet, Cache geht in I-Zustand über.
    RspFwdS Kopie von Cache-Zeile wurde an einen anfordernden Agenten gesendet, Cache geht in S-Zustand über.
    RspIWb Modifizierte Zeile wird implizit in den Speicher zurückgeschrieben, Cache wurde in I-Zustand übergeführt. cmd, destNID, homeTID, data
    RspSWb Modifizierte Zeile wird implizit in den Speicher zurückgeschrieben, Cache wurde in S-Zustand übergeführt.
    RspFwdIWb Modifizierte Zeile wird implizit in den Speicher zurückgeschrieben, Kopie von Cache-Zeile wurde an einen anfordernden Agenten gesendet, Cache wurde in I-Zustand übergeführt.
    RspFwdSWb Modifizierte Zeile wird implizit in den Speicher zurückgeschrieben, Kopie von Cache-Zeile wurde an einen anfordernden Agenten gesendet, Cache wurde in S-Zustand übergeführt.
    RspCnflt Partner hat eine unerledigte Anforderung für die gleiche Adresse, fordert eine geordnete Weiterleitungsantwort an und hat eine Ressource für die Weiterleitung zugewiesen. cmd, destNID, homeTID, peerNID
  • In einem Beispiel können Datenantworten an einen anfordernden Kohärenzagenten gerichtet sein. Ein Home-Agent kann jede der Datenantworten senden. Ein Kohärenzagent kann nur Datenantworten senden, die keine geordnete Fertigstellungsanzeige enthalten. Außerdem können Kohärenzagenten darauf beschränkt sein, Datenantworten nur als Ergebnis der Verarbeitung einer Schnüffelanforderung zu senden. Kombinierte Daten- und Fertigstellungsantworten können immer vom Typ geordneter Fertigstellung sein und mit Weiterleitungsantworten durch die Kommunikations-Fabric geordnet gehalten werden.
  • Das HPI-Kohärenzprotokoll kann die allgemeine ungeordnete Fertigstellungsnachricht und eine kohärenzspezifische geordnete Fertigstellungsnachricht verwenden. Ein Home-Agent kann Fertigstellungsantworten auf kohärente Anforderungen senden, und Fertigstellungsantworten können typischerweise für einen Kohärenzagenten bestimmt sein. Die geordnete Fertigstellungsantwort kann mit Weiterleitungsantworten durch die Kommunikations-Fabric geordnet gehalten werden.
  • Schnüfflerantworten können durch Kohärenzagenten insbesondere in Reaktion auf das Verarbeiten einer Schnüffelanforderung gesendet werden und richten sich an den Home-Agenten, der die Schnüffelanforderung bearbeitet. Die destNID ist üblicherweise ein Home-Agent (bestimmt aus der Adresse in der Schnüffelanforderung), und die enthaltene TID ist für die Ressource des Home-Agenten, die zum Verarbeiten der Anforderung zugewiesen ist. Schnüfflerantworten mit „Wb” im Befehl sind für implizite Rückschreiboperationen von modifizierten Cache-Zeilen, und sie übertragen die Cache-Zeilendaten. (Implizite Rückschreiboperationen können jene umfassen, die ein Kohärenzagent infolge einer Anforderung eines anderen Agenten ausführt, während die anderen Anforderungen vom Kohärenzagenten unter Verwendung seiner Anforderungsressourcen explizit gestellt werden.)
  • Kohärenzagenten können eine Weiterleitungsanforderung erzeugen, wenn eine Schnüffelanforderung mit einer unerledigten Anforderung in Konflikt gerät. Weiterleitungsanforderungen richten sich an den Home-Agenten, der den Schnüffler erzeugte und der aus der Adresse in der Schnüfflerantwort bestimmt wird. Demnach ist die destNID ein Home-Agent. Die Weiterleitungsanforderung kann außerdem die TID für die Ressource des Home-Agenten, die zum Verarbeiten der Originalanforderung zugewiesen ist, und die NID des Kohärenzagenten umfassen, der die Weiterleitungsanforderung erzeugt.
  • Das HPI-Kohärenzprotokoll kann eine einzige Weiterleitungsantwort, FwdCnfltO, unterstützen. Home-Agenten können eine Weiterleitungsantwort für jede empfangene Weiterleitungsanforderung und an den Kohärenzagenten im peerNID-Feld der Weiterleitungsanforderung senden. Weiterleitungsantworten übertragen die Cache-Zeilenadresse, so dass der Kohärenzagent die Nachricht mit der Weiterleitungsressource vergleichen kann, die er zuwies. Eine Weiterleitungsantwortnachricht kann die NID des anfordernden Agenten übertragen, aber in einigen Fällen möglicherweise nicht die TID des anfordernden Agenten. Wenn ein Kohärenzagent Cache-zu-Cache-Übertragungen für Weiterleitungsantworten unterstützen möchte, kann er die TID des anfordernden Agenten speichern, wenn er den Schnüffler verarbeitet, und eine Weiterleitungsanforderung senden. Um Konfliktlösung zu unterstützen, kann die Kommunikations-Fabric eine Reihenfolge zwischen der Weiterleitungsantwort und allen geordneten Fertigstellungen aufrechterhalten, die davor an den gleichen Ziel-Kohärenzagenten gesendet wurden.
  • In einigen Systemen werden Home-Agent-Ressourcen im Voraus zugewiesen, insofern als „RTIDs” Ressourcen in den Home-Agenten darstellen und die Caching-Agenten RTIDs aus systemkonfigurierten Pools zuweisen, wenn sie neue Kohärenzanforderungen erzeugen. Solche Schemata können die Anzahl von aktiven Anforderungen, die jeder Caching-Agent für einen Home-Agenten haben kann, auf die Anzahl von RTIDs begrenzen, die ihm vom System verliehen wurden, wodurch Home-Ressourcen unter Caching-Agenten effektiv statisch aufgeteilt werden. Solche Schemata können zu einer ineffizienten Zuweisung von Ressourcen führen, und unter anderen potenziellen Problemen kann das korrekte Bemessen eines Home-Agenten zum Unterstützen von Anforderungsdurchsatz für große Systeme unpraktisch werden. Solche Schemata können zum Beispiel RTID-Poolverwaltung an den Caching-Agenten erzwingen. Außerdem verwendet in einigen Systemen ein Caching-Agent die RTID möglicherweise nicht wieder, bis der Home-Agent die Transaktion vollständig verarbeitet hat. Das Warten, bis ein Home-Agent die gesamte Verarbeitung abschließt, kann Caching-Agenten jedoch unnötig drosseln. Außerdem können bestimmte Flüsse im Protokoll u. a. mit sich bringen, dass Caching-Agenten RTIDs über die Benachrichtigung der Freigabe des Home-Agenten hinaus festhalten, wodurch ihre Leistung weiter gedrosselt wird.
  • In einer Implementierung kann es Home-Agenten erlaubt werden, ihre Ressourcen zuzuweisen, wenn Anforderungen von Cache-Agenten ankommen. In solchen Fällen kann die Home-Agent-Ressourcenverwaltung von der Kohärenzagentenlogik getrennt gehalten werden. In einigen Implementierungen können Home-Ressourcenverwaltung und Kohärenzagentenlogik wenigstens teilweise vermischt sein. In einigen Fällen können Kohärenzagenten mehr unerledigte Anforderungen für einen Home-Agenten haben, als der Home-Agent gleichzeitig bearbeiten kann. Zum Beispiel kann die HPI erlauben, dass Anforderungen in der Kommunikations-Fabric eine Warteschlange bilden. Das HPI-Kohärenzprotokoll kann ferner so konfiguriert sein, dass es zum Vermeiden von Blockierungen, die dadurch verursacht werden, dass der Home-Agent eingehende Anforderungen blockiert, bis Ressourcen verfügbar werden, sicherstellt, dass andere Nachrichten um die blockierten Anforderungen herum fortschreiten können, um zu gewährleisten, dass aktive Transaktionen Fertigstellung erreichen.
  • In einem Beispiel kann Ressourcenverwaltung unterstützt werden, indem einem Agenten, der eine Anforderung empfängt, erlaubt wird, Ressourcen zu ihrer Verarbeitung zuzuweisen, wobei der Agent die Anforderung unter Zuweisung entsprechender Ressourcen für alle Antworten auf die Anforderung sendet. Die RTID kann die Ressource darstellen, die ein Home-Agent für eine bestimmte Anforderung zuweist, die in einigen Protokollnachrichten enthalten ist. Die RTID (zusammen mit der RNID/RTID) in Schnüffelanforderungen und Weiterleitungsantworten kann u. a. verwendet werden, um Antworten für einen Home-Agenten sowie Datenweiterleitung an einen anfordernden Agenten zu unterstützen. Ferner kann HPI die Fähigkeit eines Agenten unterstützen, eine geordnete Fertigstellung (CmpO) früh, d. h. bevor der Home-Agent die Verarbeitung der Anforderung abgeschlossen hat, zu senden, wenn bestimmt wird, dass es für einen anfordernden Agenten sicher ist, seine RTID-Ressource wiederzuverwenden. Die allgemeine Handhabung von Schnüfflern mit ähnlicher RNID/RTID kann ebenfalls durch das Protokoll definiert werden.
  • In einem veranschaulichenden Beispiel kann, wenn ein Tracker-Zustand einer bestimmten Anforderung „beschäftigt” ist, ein Verzeichniszustand verwendet werden, um zu bestimmen, wann der Home-Agent eine Antwort senden kann. Zum Beispiel kann ein Verzeichniszustand „Ungültig” das Senden einer Antwort mit Ausnahme für RdCur-Anforderungen erlauben, was anzeigt, dass es keine unerledigten Schnüfflerantworten gibt. Ein Verzeichniszustand „Unbekannt” kann vorschreiben, dass alle Partner-Agenten beschnüffelt und alle ihre Antworten gesammelt wurden, bevor eine Antwort gesendet werden kann. Der Verzeichniszustand „Exklusiv” kann vorschreiben, dass der Eigentümer beschnüffelt wird und alle Antworten gesammelt werden, bevor eine Antwort gesendet wird, oder dass dann, wenn der anfordernde Agent der Eigentümer ist, unverzüglich eine Antwort gesendet werden kann. Der Verzeichniszustand „Gemeinsam/Geteilt” kann spezifizieren, dass eine annullierende Anforderung (z. B. RdInv* oder Inv*) alle Partner-Agenten beschnüffelt und alle Schnüfflerantworten gesammelt hat. Wenn ein Tracker-Zustand einer bestimmten Anforderung „rückschreibgepuffert” (WbBuffered) ist, kann der Home-Agent eine Datenantwort senden. Wenn der Tracker-Zustand der Anforderung „DataSent” (was anzeigt, dass der Home-Agent bereits eine Datenantwort gesendet hat) oder „DataXfrd” (was anzeigt, dass ein Partner eine Kopie der Zeile übertragen hat) ist, kann der Home-Agent die Fertigstellungsantwort senden.
  • In solchen Fällen, wie den zuvor beschriebenen, kann ein Home-Agent Daten- und Fertigstellungsantworten senden, bevor alle Schnüfflerantworten gesammelt wurden. Die HPI-Schnittstelle ermöglicht diese „frühen” Antworten. Wenn Daten und Fertigstellungen früh gesendet werden, kann der Home-Agent alle unerledigten Schnüfflerantworten sammeln, bevor er die Ressource freigibt, die er für die Anforderung zuwies. Der Home-Agent kann außerdem fortfahren, weitere Standardanforderungen an die gleiche Adresse zu blockieren, bis alle Schnüfflerantworten gesammelt wurden, und dann die Ressource freigeben. Ein Home-Agent, der eine Antwortnachricht aus einem Zustand „Busy” (beschäftigt) oder „WbBuffered” (rückschreibgepuffert) sendet, kann u. a. eine Teilaktionstabelle (die z. B. in einem Satz von Protokolltabellen enthalten ist, welche die formelle Spezifikation des HPI-Kohärenzprotokolls verkörpern) dafür verwenden, welche Nachricht gesendet werden soll, und eine Teilaktionstabelle dafür verwenden, wie der Verzeichnungszustand aktualisiert werden soll. In einigen Fällen kann eine frühe Fertigstellung ohne Vorauszuweisung durch einen Home-Knoten durchgeführt werden.
  • In einer Ausführungsform kann das HPI-Kohärenzprotokoll entweder die Verwendung von im Voraus zugewiesenen Home-Ressourcen oder geordneten Anforderungskanälen oder sowohl als auch weglassen. In solchen Implementierungen können bestimmte Nachrichten auf dem HPI-RSP-Kommunikationskanal geordnet sein. Zum Beispiel können insbesondere „geordnete Fertigstellungs”- und „Weiterleitungsantwort”-Nachrichten bereitgestellt werden, die vom Home-Agenten an den Kohärenzagenten gesendet werden können. Home-Agenten können eine geordnete Fertigstellung (CmpO oder Data_*_CmpO) für alle kohärenten Lese- und Annullierungsanforderungen (sowie andere Anforderungen, wie beispielsweise NonSnpRd-Anforderungen, die nicht an Cache-Kohärenzkonflikten beteiligt sind) senden.
  • Home-Agenten können Weiterleitungsantworten (FwdCnfltO) an Kohärenzagenten senden, welche Weiterleitungsanforderungen (RspCnflt) senden, um Konflikte anzuzeigen. Ein Kohärenzagent kann eine Weiterleitungsanforderung erzeugen, wann immer er eine unerledigte Lese- oder Annullierungsanforderung aufweist und eine eingehende Schnüffelanforderung für die gleiche Cache-Zeile wie die Anforderung erkennt. Wenn der Kohärenzagent die Weiterleitungsantwort empfängt, überprüft er den aktuellen Zustand der unerledigten Anforderung, um zu bestimmen, wie der Originalschnüffler verarbeitet werden soll. Der Home-Agent kann die Weiterleitungsantwort so senden, dass sie mit einer Fertigstellung (z. B. CmpO oder Data_*_CmpO) geordnet wird. Der Kohärenzagent kann Informationen verwenden, die im Schnüffler enthalten sind, um dem Kohärenzagenten beim Verarbeiten einer Weiterleitungsantwort zu helfen. Zum Beispiel kann eine Weiterleitungsantwort jeden „Typ” von Information und keine RTID umfassen. Die Beschaffenheit der Weiterleitungsantwort kann von Informationen abgeleitet werden, die aus dem bzw. den vorhergehenden Schnüffler(n) erhalten werden. Ferner kann ein Kohärenzagent unerledigte Schnüffelanforderungen blockieren, wenn alle seine „Weiterleitungsressourcen” auf Weiterleitungsantworten warten. In einigen Implementierungen kann jeder Kohärenzagent so ausgelegt sein, dass er mindestens eine Weiterleitungsressource aufweist.
  • In einigen Implementierungen können Kommunikations-Fabric-Vorgaben auf der Routingschicht sein. In einer Ausführungsform kann das HPI-Kohärenzprotokoll eine Kommunikations-Fabric-Vorgabe aufweisen, die für die Routingschicht spezifisch ist. Das Kohärenzprotokoll kann von der Routingschicht abhängen, um einen Fanout-Schnüffler (SnpF* Opcodes – Schnüffel(SNP)-Kanalnachrichten”) in die entsprechenden Schnüffler für alle Partner der Anforderung im Fanout-Satz von Kohärenzagenten umzuwandeln. Der Fanout-Satz ist ein Konfigurationsparamater der Routingschicht, der mit der Protokollschicht gemeinsam benutzt wird. In dieser Kohärenzprotokollspezifikation wird er als Home-Agent-Konfigurationsparameter beschrieben.
  • In einigen vorstehenden Implementierungen kann das HPI-Kohärenzprotokoll vier der virtuellen Kanäle verwenden: REQ, WB, SNP und RSP. Die virtuellen Kanäle können verwendet werden, um Abhängigkeitszyklen rückgängig zu machen und Blockierungen zu vermeiden. In einer Ausführungsform kann jede Nachricht ohne Duplizierung auf allen virtuellen Kanälen und Reihenfolgevorgaben auf dem virtuellen RSP-Kanal geliefert werden.
  • In einigen Ausführungsformen kann die Kommunikations-Fabric so konfiguriert sein, dass sie eine Reihenfolge unter bestimmten Fertigstellungsnachrichten und der FwdCnfltO-Nachricht bewahrt. Die Fertigstellungsnachrichten sind die CmpO-Nachricht und jede Datennachricht mit CmpO angehängt (Data_*_CmpO). Zusammen sind alle dieser Nachrichten die „geordneten Fertigstellungsantworten”. Die konzeptionelle Vorgabe zwischen geordneten Fertigstellungsantworten und der FwdCnfltO-Nachricht ist, dass eine FwdCnfltO eine geordnete Fertigstellung nicht „überholt”. Genauer gesagt liefert die Kommunikations-Fabric unter anderen potenziellen Beispielen die geordnete Fertigstellungsantwort vor der FwdCnfltO, wenn ein Home-Agent eine geordnete Fertigstellungsantwort sendet, auf die eine FwdCnfltO-Nachricht folgt, und beide Nachrichten für den gleichen Kohärenzagenten bestimmt sind.
  • Es versteht sich von selbst, dass, obwohl einige Beispiele des Protokollflusses hierin offenbart werden, die beschriebenen Beispiele lediglich dazu dienen, ein intuitives Gefühl für das Protokoll zu vermitteln, und nicht unbedingt alle möglichen Szenarios und Verhaltensmöglichkeiten erfassen, die das Protokoll aufweisen kann.
  • Ein Konflikt kann auftreten, wenn Anforderungen an die gleiche Cache-Zeilenadresse von mehr als einem Kohärenzagenten etwa um dieselbe Zeit stattfinden. Als ein spezifisches Beispiel kann ein Konflikt auftreten, wenn ein Schnüffler für eine Standardanforderung eines Kohärenzagenten bei einem Partner-Kohärenzagenten mit einer unerledigten Anforderung für die gleiche Adresse ankommt. Da jeder Schnüffler zu einem Konflikt führen kann, kann eine einzige Anforderung mehrere Konflikte aufweisen. Das Lösen von Konflikten kann eine koordinierte Bemühung zwischen dem Home-Agenten, den Kohärenzagenten und der Kommunikations-Fabric sein. Die Hauptverantwortung liegt jedoch bei den Kohärenzagenten, welche in Konflikt stehende Schnüffler erkennen.
  • In einer Ausführungsform können Home-Agenten, Kohärenzagenten und die Kommunikations-Fabric so konfiguriert sein, dass sie zum erfolgreichen Lösen von Konflikten beitragen. Zum Beispiel können Home-Agenten unerledigte Schnüffler für nur jeweils eine Anforderung pro Adresse haben, derart dass ein Home-Agent für eine bestimmte Adresse möglicherweise nur für eine Anforderung unerledigte Schnüffler aufweist. Dies kann dazu dienen, die Möglichkeit von Wettlaufsituationen auszuschließen, in welche zwei miteinander in Konflikt stehende Anforderungen verwickelt werden. Es kann außerdem sicherstellen, dass ein Kohärenzagent keinen anderen Schnüffler für die gleiche Adresse sieht, nachdem er einen Konflikt zwar erkannt, aber noch nicht gelöst hat.
  • In einem anderen Beispiel kann ein Kohärenzagent, wenn er einen Schnüffler mit einer Adresse verarbeitet, die einer aktiven Standardanforderung entspricht, eine Weiterleitungsressource zuweisen und sendet eine Weiterleitungsanforderung an den Home-Agenten. Ein Kohärenzagent mit einer unerledigten Standardanforderung, der einen Schnüffler für die gleiche Adresse empfängt, kann mit einer RspCnflt-Schnüfflerantwort antworten. Diese Antwort kann eine Weiterleitungsanforderung an den Home-Agenten sein. Da die Nachricht eine Anforderung ist, kann der Kohärenzagent, bevor er sie sendet, eine Ressource zum Verarbeiten der Antwort zuweisen, die der Home-Agent sendet. (Das Kohärenzprotokoll erlaubt in einigen Fällen ein Blockieren von in Konflikt stehenden Schnüfflern, wenn der Kohärenzagent keine Weiterleitungsressourcen mehr hat.) Der Kohärenzagent kann Informationen über den in Konflikt stehenden Schnüffler speichern, um sie beim Verarbeiten der Weiterleitungsantwort zu verwenden. Es kann garantiert werden, dass ein Kohärenzagent nach dem Erkennen eines Konflikts und bis zur Verarbeitung der Weiterleitungsantwort keinen anderen Schnüffler für die gleiche Adresse sieht.
  • In einigen Beispielen zeichnet ein Home-Agent die Schnüfflerantwort nicht auf, wenn er eine Weiterleitungsantwort empfängt. Stattdessen kann der Home-Agent eine Weiterleitungsantwort an den in Konflikt stehenden Kohärenzagenten senden. Eine Weiterleitungsanforderung (RspCnflt) sieht in einem Beispiel wie eine Schnüfflerantwort aus, aber der Home-Agent behandelt sie nicht als solche. Er zeichnet die Nachricht nicht als eine Schnüfflerantwort auf, sondern sendet stattdessen eine Weiterleitungsantwort. Insbesondere sendet der Home-Agent für jede Weiterleitungsanforderung (RspCnflt), die er empfängt, eine Weiterleitungsantwort (FwdCnfltO) an den anfordernden Kohärenzagenten.
  • Die HPI-Kommunikations-Fabric ordnet Weiterleitungsantworten und geordnete Fertigstellungen zwischen dem Home-Agenten und dem Ziel-Kohärenzagenten. Die Fabric kann dadurch dazu dienen, einen frühen Konflikt von einem späten Konflikt an dem in Konflikt stehenden Kohärenzagenten zu unterscheiden. Aus der Perspektive der Systemebene tritt ein früher Konflikt auf, wenn ein Schnüffler eine Anforderung findet, die der Home-Agent noch nicht verarbeitet hat, und ein später Konflikt tritt auf, wenn ein Schnüffler eine Anforderung findet, die der Home-Agent bereits verarbeitet hat. Aus der Perspektive eines Home-Agenten ist ein früher Konflikt, wenn ein Schnüffler für die gegenwärtig aktive Anforderung eine Anforderung findet, die der Home-Agent noch nicht empfangen oder zu verarbeiten begonnen hat, und ein später Konflikt ist, wenn ein Schnüffler eine Anforderung findet, die er bereits verarbeitet hat. Mit anderen Worten weist ein später Konflikt eine Anforderung auf, für welche der Home-Agent bereits eine Fertigstellungsantwort gesendet hat. Wenn daher ein Home-Agent eine Weiterleitungsanforderung für einen späten Konflikt empfängt, hat er bereits die Fertigstellungsantwort für die unerledigte Anforderung des in Konflikt stehenden Agenten gesendet. Durch Ordnen der Weiterleitungsantworten und geordneten Fertigstellungsantworten vom Home-Agenten an den Kohärenzagenten kann der Kohärenzagent durch den Verarbeitungszustand seiner in Konflikt stehenden Anforderung bestimmen, ob der Konflikt früh oder spät war.
  • Wenn ein Kohärenzagent eine Weiterleitungsantwort empfängt, verwendet er den Zustand seiner in Konflikt stehenden Anforderung, um zu bestimmen, ob der Konflikt früh oder spät war und wann der Originalschnüffler verarbeitet werden soll. Aufgrund der Reihenfolgevorgabe der Kommunikations-Fabric zeigt der Zustand der in Konflikt stehenden Anforderung an, ob der Konflikt früh oder spät war. Wenn der Anforderungszustand anzeigt, dass die Fertigstellung empfangen wurde, dann war es ein später Konflikt, andernfalls war es ein früher Konflikt. Wenn dagegen der Anforderungszustand anzeigt, dass die Anforderung noch auf ihre Antwort(en) wartet, dann war es ein früher Konflikt, andernfalls war es ein später Konflikt. Der Konflikttyp bestimmt, wann der Schnüffler verarbeitet werden soll: Aus der Perspektive eines Kohärenzagenten bedeutet ein früher Konflikt, dass der Schnüffler für eine Anforderung ist, die vor der in Konflikt stehenden Anforderung des Agenten verarbeitet wird, und ein später Konflikt bedeutet, dass der Schnüffler für eine Anforderung ist, die nach der in Konflikt stehenden Anforderung des Agenten verarbeitet wird. Angesichts dieser Reihenfolge verarbeitet der Kohärenzagent für einen frühen Konflikt den Originalschnüffler unverzüglich; und für einen späten Konflikt wartet der Kohärenzagent, bis die in Konflikt stehende Anforderung ihre Daten (für Leseoperationen) empfangen hat und sein Prozessor eine Gelegenheit hatte, auf die abgeschlossene Anforderung vor der Verarbeitung des Schnüfflers einzuwirken. Wenn der in Konflikt stehende Schnüffler verarbeitet wird, erzeugt der Kohärenzagent eine Schnüfflerantwort für den Home-Agenten zum endgültigen Aufzeichnen.
  • Alle Konflikte mit Rückschreibanforderungen können späte Konflikte sein. Ein später Konflikt aus der Perspektive des Kohärenzagenten ist, wenn die Anforderung des Agenten vor der Anforderung des Schnüfflers verarbeitet wird. Durch diese Definition können alle Konflikte mit Rückschreibanforderungen als späte Konflikte behandelt werden, da die Rückschreiboperation zuerst verarbeitet wird. Andernfalls könnten Datenkonsistenz und -kohärenz verletzt werden, wenn der Home-Agent die Anforderung verarbeiten würde, bevor das Rückschreiben in den Speicher erfolgt. Da alle Konflikte mit Rückschreiboperationen als späte Konflikte gelten, können Kohärenzagenten so konfiguriert sein, dass sie in Konflikt stehende Schnüffler blockieren, bis eine unerledigte Rückschreibanforderung fertiggestellt ist. Ferner können Rückschreiboperationen auch die Verarbeitung von Weiterleitungen blockieren. Das Blockieren von Weiterleitungen durch eine aktive Rückschreiboperation kann u. a. auch als eine Protokollvorgabe zum Unterstützen von nicht zwischenspeicherbaren Speicherungen implementiert werden.
  • Wenn ein Kohärenzagent eine Anforderung zum Beschnüffeln seines Caches empfängt, kann er zuerst überprüfen, ob das Kohärenzprotokoll es erlaubt, und dann den Schnüffler verarbeiten und eine Antwort erzeugen. Eine oder mehrere Zustandstabellen können innerhalb eines Satzes von Zustandstabellen definiert werden, der die Protokollspezifikation definiert. Eine oder mehrere Zustandstabellen können spezifizieren, wann ein Kohärenzagent einen Schnüffler verarbeiten kann und ob er den Cache beschnüffelt oder stattdessen eine in Konflikt stehende Weiterleitungsanforderung erzeugt. In einem Beispiel gibt es zwei Bedingungen, unter welchen ein Kohärenzagent einen Schnüffler verarbeitet. Die erste Bedingung ist, wenn der Kohärenzagent eine REQ-Anforderung (Rd* oder Inv*) für die Schnüffeladresse hat, und er eine verfügbare Weiterleitungsressource aufweist. In diesem Fall muss der Kohärenzagent eine Weiterleitungsanforderung (RspCnflt) erzeugen. Die zweite Bedingung ist, dass der Kohärenzagent keine REQ-, Wb*- oder EvctCln-Anforderung für die Schnüffeladresse hat. Eine Zustandstabelle kann definieren, wie ein Kohärenzagent den Schnüffler gemäß diesen jeweiligen Bedingungen verarbeiten soll. In einem Beispiel unter anderen Bedingungen kann der Kohärenzagent den Schnüffler blockieren, bis entweder eine Weiterleitungsressource verfügbar wird (erste Bedingung) oder die blockierende Wb* oder EvctCln ihre CmpU-Antwort empfängt (zweite Bedingung). Es ist zu erwähnen, dass NonSnp*-Anforderungen die Schnüfflerverarbeitung möglicherweise nicht beeinflussen, und ein Kohärenzagent NonSnp*-Einträge außer Acht lassen kann, wenn er bestimmt, wie ein Schnüffler verarbeitet oder blockiert werden soll.
  • Beim Erzeugen einer Weiterleitungsanforderung kann ein Kohärenzagent eine Ressource für die Weiterleitungsantwort reservieren. Das HPI-Kohärenzprotokoll erfordert in einem Beispiel möglicherweise keine Mindestanzahl von Weiterleitungsantwortressourcen (über das Aufweisen mindestens einer hinaus), und kann es einem Kohärenzagenten erlauben, Schnüffler zu blockieren, wenn er keine Weiterleitungsantwortressourcen verfügbar hat.
  • Wie ein Kohärenzagent einen Schnüffler in seinem Cache verarbeitet, kann vom Schnüfflertyp und dem aktuellen Cache-Zustand abhängen. Für einen bestimmten Schnüfflertyp und Cache-Zustand kann es jedoch viele erlaubte Antworten geben. Zum Beispiel kann ein Kohärenzagent mit einer voll modifizierten Zeile, der eine nicht in Konflikt stehende SnpMigr empfängt (oder nach einer SnpMigr eine Weiterleitungsantwort verarbeitet), unter anderen potenziellen Beispielen beliebiges von Folgendem durchführen: Herunterstufen auf S, Senden von impliziter Rückschreiboperation an Home und Data_F an Requester; Herunterstufen auf S, Senden von impliziter Rückschreiboperation an Home; Herunterstufen auf I, Senden von Data_M an Requester; Herunterstufen auf I, Senden von impliziter Rückschreiboperation an Home und Data_E an Requester; Herunterstufen auf I, Senden von impliziter Rückschreiboperation an Home.
  • Das HPI-Kohärenzprotokoll erlaubt es einem Kohärenzagenten, modifizierte Zeilen mit partiellen Masken in seinem Cache zu speichern. Alle Reihen für M-Kopien können eine volle oder leere Maske erfordern. Das HPI-Kohärenzprotokoll kann in einem Beispiel implizites Rückschreiben von partiellen Zeilen beschränken. Ein Kohärenzagent, der eine partielle M-Zeile infolge einer Schnüffelanforderung (oder einer Weiterleitungsantwort) entfernen möchte, kann zuerst eine explizite Rückschreiboperation initiieren und den Schnüffler (oder die Weiterleitung) blockieren, bis die explizite Rückschreiboperation fertiggestellt ist.
  • Speichern von Informationen für Weiterleitungsantworten: Das HPI-Kohärenzprotokoll erlaubt es einem Kohärenzagenten in einem Beispiel, Weiterleitungsantwortinformationen getrennt vom Puffer für abgehende Anforderungen (ORB für engl. outgoing request buffer) zu speichern. Das Trennen von Informationen ermöglicht es dem ORB, ORB-Ressourcen und RTID freizugeben, wenn alle Antworten gesammelt sind, ungeachtet des Eintrags, der an einem Konflikt beteiligt ist. Zustandstabellen können verwendet werden, um zu spezifizieren, welche Informationen für Weiterleitungsantworten und unter welchen Bedingungen gespeichert werden sollen.
  • Weiterleitungsantworten im HPI-Kohärenzprotokoll können die Adresse, die NID des anfordernden Agenten und die Home-TID enthalten. Sie enthält weder den Originalschnüfflertyp noch die RTID. Ein Kohärenzagent kann den Weiterleitungstyp und die RTID speichern, wenn er wünscht, sie mit der Weiterleitungsantwort zu verwenden, und er kann die Adresse verwenden, um die eingehende Weiterleitungsantwort mit dem passenden Weiterleitungseintrag zu vergleichen (und die Home-NID zu erzeugen). Das Speichern des Weiterleitungstyps kann optional sein. Wenn kein Typ gespeichert ist, kann der Kohärenzagent eine Weiterleitungsantwort als einen FwdInv-Typ aufweisend behandeln. Gleichermaßen kann das Speichern der RTID optional sein und nur dann erfolgen, wenn der Kohärenzagent beim Verarbeiten von Weiterleitungsantworten Cache-zu-Cache-Übertragungen unterstützen soll.
  • Wie bereits erwähnt, können Kohärenzagenten eine Weiterleitungsanforderung erzeugen, wenn eine Schnüffelanforderung mit einer unerledigten Anforderung in Konflikt gerät. Weiterleitungsanforderungen richten sich an den Home-Agenten, der den Schnüffler erzeugte und der aus der Adresse in der Schnüfflerantwort bestimmt werden kann. Demnach kann die destNID einen Home-Agenten identifizieren. Die Weiterleitungsanforderung kann außerdem die TID für die Ressource des Home-Agenten, die zum Verarbeiten der Originalanforderung zugewiesen ist, und die NID des Kohärenzagenten umfassen, der die Weiterleitungsanforderung erzeugt.
  • In einer Ausführungsform kann ein Kohärenzagent Weiterleitungen für Rückschreibanforderungen blockieren, um die Datenkonsistenz aufrechtzuerhalten. Kohärenzagenten können eine Rückschreibanforderung auch verwenden, um einen Commit für nicht zwischenspeicherbare (UC) Daten vor dem Verarbeiten einer Weiterleitung auszuführen, und dem Kohärenzagenten erlauben, partielle Cache-Zeilen statt des Protokolls zurückzuschreiben, das eine partielle implizite Rückschreiboperation für Weiterleitungen unterstützt. In der Tat kann es einem Kohärenzagenten in einer Ausführungsform erlaubt werden, modifizierte Zeilen mit partiellen Masken in seinem Cache zu speichern (obwohl M-Kopien eine volle oder leere Maske umfassen sollen).
  • In einem Beispiel können frühe Konflikte durch eine Weiterleitungsantwort gelöst werden, die auf eine unerledigte Standardanforderung trifft, bevor sie irgendeine Antwort empfangen hat. Eine entsprechende Protokollzustandstabelle kann in einem Beispiel spezifizieren, dass eine Weiterleitungsantwort verarbeitet werden kann, solange der Standardanforderungseintrag noch im ReqSent-Zustand ist. Späte Konflikte können durch eine Weiterleitungsantwort gelöst werden, die ankommt, nachdem die unerledigte Anforderung ihre Fertigstellungsantwort empfangen hat. Wenn dies geschieht, ist entweder die Anforderung abgeschlossen (hat bereits ihre Daten empfangen oder war eine Inv*-Anforderung) oder der Eintrag ist in seinem RcvdCmp-Zustand. Wenn die Anforderung noch auf ihre Daten wartet, dann muss der Kohärenzagent die Weiterleitung blockieren, bis die Daten empfangen (und verwendet) werden. Wenn die in Konflikt stehende Rd*- oder Inv*-Anforderung abgeschlossen ist, dann kann die Weiterleitungsantwort verarbeitet werden, solange der Kohärenzagent kein explizites Rückschreiben der Cache-Zeile initiiert hat. Es kann für einen Kohärenzagenten zulässig sein, eine explizite Rückschreiboperation zu initiieren, während er eine Weiterleitungsantwort (oder Schnüffelanforderung) für die gleiche Adresse hat, wodurch ermöglicht wird, dass partielle Zeilen (z. B. Schnüffelanforderungen für teilweise modifizierte Zeilen) oder nicht zwischenspeicherbare Speicherungen korrekt in den Speicher geschrieben werden.
  • Unter Hinwendung zu 7 ist ein erstes Beispiel eines beispielhaften Konflikthandhabungsschemas veranschaulicht. Ein erster Cache(oder Kohärenz)-Agent 705 kann eine Leseanforderung für eine bestimmte Zeile von Daten an einen Home-Agenten 710 senden, was zu einem Lesen von Speicher 715 führt. Kurz nach der Leseanforderung durch den Cache-Agenten 705 stellt ein anderer Cache-Agent 720 eine Anforderung auf Eigentum (RFO für engl. request for ownership) an der gleichen Zeile. Der Home-Agent 710 hat die Data_S_CmpO jedoch vor Empfang der RFO vom Cache-Agenten 720 an den ersten Cache-Agenten 705 gesendet. Die RFO kann dazu führen, dass ein Schnüffler (SnpFO) an den Cache-Agenten 705 (sowie an andere Cache-Agenten) gesendet wird, wobei der Schnüffler durch den ersten Cache-Agenten 705 vor dem Empfangen der Fertigstellungsnachricht Data_S_CmpO empfangen wird. Der Cache-Agent 705 kann bei Empfang des Schnüfflers SnpO einen potenziellen Konflikt identifizieren, der die in seiner Original-Leseanforderung angeforderte Speicherzeile einbezieht, und den Home-Agenten 710 durch Antworten auf den SnpO mit einer Weiterleitungsantwortkonfliktnachricht (RspCnflt) von dem Konflikt benachrichtigen. Der Home-Agent 710 kann auf die Weiterleitungsantwort RspCnflt durch Senden einer Weiterleitungsantwort (FwdCnfltO) antworten. Der Cache-Agent 705 kann dann die Geteilte-Daten-Fertig-Nachricht Data_S_CmpO empfangen und von einem I-Zustand in einen S-Zustand übergehen. Die Weiterleitungsantwort FwdCnfltO kann dann durch den Cache-Agenten 705 empfangen werden, und der Cache-Agent 705 kann basierend auf dem Schnüffler SnpFO, der das Senden der Weiterleitungsantwort RspCnflt ausgelöst hat, bestimmen, wie auf die Weiterleitungsantwortnachricht FwdClfltO geantwortet werden soll. In diesem Beispiel kann der Cache-Agent 705 zum Beispiel eine Protokollzustandstabelle konsultieren, um eine Antwort auf die Weiterleitungsantwortnachricht FwdClftO zu bestimmen. In dem konkreten Beispiel von 7 kann der Cache-Agent 705 in einen F-Zustand übergehen und die S-Kopie der Daten, die er vom Home-Agenten 710 in der Data_S_CmpO-Nachricht empfangen hat, in einer Data_F-Nachricht an den zweiten Cache-Agenten 720 senden. Der erste Cache-Agent 705 kann außerdem eine Antwortnachricht RspFwdS an den Home-Agenten 710 senden, die den Home-Agenten 710 benachrichtigt, dass der erste Cache-Agent seine Kopie der Daten mit dem zweiten Cache-Agenten geteilt hat.
  • In einem anderen veranschaulichenden Beispiel, das im vereinfachten Flussdiagramm von 8 dargestellt ist, kann der erste Cache-Agent 705 eine Anforderung auf Eigentum (RFO) an einer bestimmten Zeile des Speichers an den Home-Agenten 710 senden. Kurz danach kann ein zweiter Agent eine RdInvOwn-Nachricht als eine Anforderung für die gleiche Zeile des Speichers in einem M-Zustand an den Home-Agenten 710 senden. In Verbindung mit der RFO-Nachricht vom ersten Cache-Agenten 705 kann der Home-Agent 710 einen Schnüffler (SnpFO) an den zweiten Cache-Agenten 720 senden, den der zweite Cache-Agent 720 als möglichen Konflikt identifizieren kann, der die Speicherzeile einbezieht, die sowohl den RFO- als auch RdInvOwn-Anforderungen ausgesetzt ist. Demgemäß kann der zweite Cache-Agent 720 eine Weiterleitungsanforderung RspCnflt an den Home-Agenten 720 senden. Der Home-Agent 720 antwortet auf die Weiterleitungsanforderung des zweiten Cache-Agenten 720 mit einer Weiterleitungsantwort. Der zweite Cache-Agent 720 bestimmt eine Antwort auf die Weiterleitungsantwort basierend auf Informationen, die im Originalschnüffler SnpFO enthalten sind. In diesem Beispiel antwortet der zweite Cache-Agent 720 mit einer Schnüfflerantwort RspI, welche anzeigt, dass der zweite Cache-Agent 720 in einem I-Zustand ist. Der Home-Agent 710 empfängt die Schnüfflerantwort RspI und bestimmt, dass es angebracht ist, die Daten-Fertig-Exklusiv-Nachricht (Data_E_CmpO) an den ersten Cache-Agenten 705 zu senden, was bewirkt, dass der erste Cache-Agent in einen E-Zustand übergeht. Nach dem Senden der Fertigstellung kann der Home-Agent 710 dann mit dem Beantworten der RdInvOwn-Anforderung des zweiten Cache-Agenten beginnen, wobei er mit einer Schnüffelanforderung SnpInvO des ersten Cache-Agenten 705 beginnt. Der erste Cache-Agent 705 kann identifizieren, dass der Schnüffler zu einer Anforderung durch den zweiten Cache-Agenten 720 führt, um eine exklusive M-Zustands-Kopie der Zeile zu erhalten. Folglich geht der erste Cache-Agent 705 in den M-Zustand über, um seine Kopie der Zeile als eine M-Zustands-Kopie (mit einer Data_M-Nachricht) an den zweiten Cache-Agenten 720 zu senden. Außerdem sendet der erste Cache-Agent 705 auch eine Antwortnachricht RspFwdI, um anzuzeigen, dass die Kopie der Zeile an den zweiten Cache-Agenten 720 gesendet wurde und dass der erste Cache-Agent in einen I-Zustand übergegangen ist (und das Eigentum an der Kopie an den zweiten Cache-Agenten 720 abgegeben hat).
  • Als Nächstes ist unter Hinwendung zu 9 ein anderes vereinfachtes Flussdiagramm dargestellt. In diesem Beispiel versucht ein Cache-Agent 720, exklusives Eigentum an einer nicht zwischenspeicherbaren (UC) Zeile ohne Empfangen von Daten (z. B. durch eine InvItoE-Nachricht) anzufordern. Ein erster Cache-Agent 705 sendet eine konkurrierende Nachricht (RdInv) für die Cache-Zeile im E-Zustand. Das HPI-Kohärenzprotokoll kann spezifizieren, dass, wenn die angeforderte Zeile vorher im M-Zustand zwischengespeichert wurde, die Zeile in den Speicher geschrieben wird, bevor E-Daten in Reaktion auf die RDInv des ersten Cache-Agenten 705 geliefert werden. Der Home-Agent 710 kann eine Fertigstellungsnachricht (CmpO) an die InvItoE-Anforderung senden und einen Schnüffler (SnpInv) basierend auf der RdInv-Anforderung an den Cache-Agenten 720 senden. Wenn der Cache-Agent 720 den Schnüffler vor der Fertigstellungsnachricht empfängt, kann der Cache-Agent 720 identifizieren, dass der Schnüffler die gleiche Cache-Zeile betrifft wie seine Anforderung des exklusiven Eigentums, und durch eine Weiterleitungsanforderung RspCnflt einen Konflikt anzeigen. Wie in vorherigen Beispielen kann der Home-Agent 710 so konfiguriert sein, dass er auf die Weiterleitungsanforderung mit einer Weiterleitungsantwort (FwdCnfltO) antwortet. Es können mehrere zulässige Antworten für die Weiterleitungsantwort möglich sein. Zum Beispiel kann der Cache-Agent 720 eine explizite Rückschreiboperation (z. B. WbMtoI) initiieren und den Schnüffler (oder die Weiterleitung) blockieren, bis die explizite Rückschreiboperation fertiggestellt ist (z. B. CmpU), wie im Beispiel von 9 dargestellt. Der Cache-Agent kann dann die Schnüfflerantwort (RspI) fertigstellen. Unter anderen Beispielen kann der Home-Agent 710 die RdInv-Anforderung des erste Cache-Agenten 705 verarbeiten und eine Fertigstellungsnachricht Data_E_CmpO zurücksenden.
  • In Beispielen, wie beispielsweise dem Beispiel von 9, in denen ein Cache-Agent einen Schnüffler empfängt, wenn der Agent eine unerledigte Lese- oder Annullierungsanforderung für die gleiche Adresse aufweist und eine teilweise modifizierte Zeile zwischengespeichert hat (häufig als „vergraben-M” bezeichnet), erlaubt das HPI-Kohärenzprotokoll dem Agenten in einer Implementierung, entweder 1) ein explizites Rückschreiben (partiell) der Zeile während des Blockierens des Schnüfflers auszuführen, oder 2) eine Weiterleitungsanforderung (RspCnflt) an den Home-Agenten zu senden. Wenn (1) gewählt wird, verarbeitet der Agent den Schnüffler nach dem Empfang der Fertigstellungsnachricht für die Rückschreiboperation. Wenn (2) gewählt wird, ist es möglich, dass der Agent eine Weiterleitungsantwort (FwdCnfltO) empfängt, während seine unerledigte Lese- oder Annullierungsanforderung noch auf Antworten wartet, und der Agent noch eine teilweise modifizierte Zeile hat. Wenn dies der Fall ist, erlaubt das Protokoll es dem Agenten, die Weiterleitung während des Ausführens eines expliziten Rückschreibens (partiell) der Zeile zu blockieren. Das Protokoll garantiert, dass der Agent während des Rückschreibens keine Antworten für unerledigte Lese- oder Annullierungsanforderungen empfängt. Der zuvor beschrieben Mechanismus (der es Kohärenzagenten erlaubt, explizite Rückschreiboperationen auszugeben und Schnüffler und Weiterleitungen zu blockieren, selbst wenn der Agent eine unerledigte Lese- oder Annullierungsanforderung aufweist) wird auch verwendet, um sicherzustellen, dass partielle oder UC-Schreiboperationen in den Speicher getätigt werden, bevor der Schreiber globale Beobachtbarkeit erwirbt.
  • Kohärenzagenten verwenden einen zweistufigen Prozess für partielle bzw. UC-Schreiboperationen. Erstens überprüfen sie, ob sie Eigentum an der Cache-Zeile haben, und geben eine Eigentums(Annullierungs)-Anforderung im Protokoll aus, wenn dies nicht der Fall ist. Zweitens führen sie die Schreiboperation aus. Wenn sie im ersten Schritt eine Eigentumsanforderung durchführten, ist es möglich, dass die Anforderung mit Anforderungen anderer Agenten für die Zeile in Konflikt gerät, was bedeutet, dass der Agent einen Schnüffler empfangen könnte, während die Eigentumsanforderung unerledigt ist. Gemäß Kohärenzprotokollvorgaben gibt der Agent eine Weiterleitungsanforderung für den in Konflikt stehenden Schnüffler aus. Während der Agent auf die Weiterleitungsantwort wartet, kann er die Fertigstellung der Eigentumsanforderung empfangen, welche dem Agenten das Eigentum an der Zeile erteilt und es dem Agenten ermöglicht, das Rückschreiben für die partielle bzw. UC-Schreiboperation zu initiieren. Während dies geschieht, könnte der Agent die Weiterleitungsantwort empfangen, die er ebenfalls verarbeiten muss. Der Kohärenzagent kann die beiden Aktivitäten nicht kombinieren. Der Kohärenzagent soll stattdessen die partiellen bzw. UC-Schreibdaten getrennt von der Verarbeitung der Weiterleitung zurückschreiben und die Rückschreiboperation zuerst ausführen. Zum Beispiel kann ein Cache-Agent unter anderen Beispielen und Merkmalen eine Rückschreibanforderung verwenden, um einen Commit für UC-Daten vor dem Verarbeiten von Weiterleitung und Zurückschreiben von partiellen Cache-Zeilen auszuführen.
  • Die HPI kann in eine Vielzahl von Computereinrichtungen und -systemen, welche Mainframes, Serversysteme, Personalcomputer, mobile Computer (wie beispielsweise Tablets, Smartphones, persönliche digitale Systeme usw.), intelligente Geräte, Spiel- und Unterhaltungskonsolen sowie Set-Top-Boxen u. a. umfassen. Zum Beispiel ist unter Bezugnahme auf 10 eine Ausführungsform eines Blockdiagramms für ein Computersystem dargestellt, dass einen Mehrkernprozessor umfasst. Der Prozessor 1000 umfasst einen beliebigen Prozessor oder eine beliebige Verarbeitungseinrichtung wie beispielsweise einen Mikroprozessor, einen eingebetteten Prozessor, einen Digitalsignalprozessor (DSP), einen Netzwerkprozessor, einen Handprozessor, einen Anwendungsprozessor, einen Coprozessor, einen Systemchip (SOC) oder eine andere Einrichtung zum Ausführen von Code. Der Prozessor 1000 umfasst in einer Ausführungsform mindestens zwei Kerne, Kern 1001 und 1002, welche asymmetrische Kerne oder symmetrische Kerne (die veranschaulichte Ausführungsform) umfassen können. Der Prozessor 1000 kann jedoch eine beliebige Anzahl von Verarbeitungselementen umfassen, die symmetrisch oder asymmetrisch sein können.
  • In einer Ausführungsform bezieht sich ein Verarbeitungselement auf Hardware oder Logik, um einen Softwarethread zu unterstützen. Beispiele für Hardware-Verarbeitungselemente umfassen: eine Thread-Einheit, einen Threadslot, eine Prozesseinheit, einen Kontext, eine Kontexteinheit, einen logischen Prozessor, einen Hardwarethread, einen Kern und/oder jedes beliebige andere Element, das zum Halten eines Zustands für einen Prozessor, wie beispielsweise einen Ausführungszustand oder einen architektonischen Zustand, imstande ist. Mit anderen Worten bezieht sich ein Verarbeitungselement in einer Ausführungsform auf eine beliebige Hardware, die mit Code, wie beispielsweise einem Softwarethread, einem Betriebssystem, einer Anwendung, oder einem anderen Code unabhängig assoziiert sein kann. Ein physikalischer Prozessor (oder Prozessorsockel) bezieht sich typischerweise auf eine integrierte Schaltung, die potenziell eine beliebige Anzahl von anderen Verarbeitungselementen, wie beispielsweise Kernen oder Hardwarethreads, umfasst.
  • Ein Kern bezieht sich häufig auf Logik, die sich auf einer integrierten Schaltung befindet und zum Aufrechterhalten eines unabhängigen architektonischen Zustands imstande ist, wobei jeder unabhängig aufrechterhaltene architektonische Zustand mindestens mit einigen dedizierten Ausführungsressourcen assoziiert ist. Im Gegensatz zu Kernen bezieht sich ein Hardwarethread typischerweise auf eine beliebige Logik, die sich auf einer integrierten Schaltung befindet und zum Aufrechterhalten eines unabhängigen architektonischen Zustands imstande ist, wobei sich die unabhängig aufrechterhaltenen architektonischen Zustände Zugriff auf Ausführungsressourcen teilen. Wie zu sehen ist, überschneidet sich die Linie zwischen der Nomenklatur eines Hardwarethreads und eines Kerns, wenn bestimmte Ressourcen gemeinsam genutzt werden und andere fest einem architektonischen Zustand zugeordnet sind. Dennoch werden ein Kern und ein Hardwarethread von einem Betriebssystem oft als individuelle logische Prozessoren angesehen, wobei das Betriebssystem imstande ist, Operationen auf jedem logischen Prozessor individuell zu planen.
  • Der physikalische Prozessor 1000 umfasst, wie in 10 veranschaulicht, zwei Kerne, Kern 1001 und 1002. Hierbei werden Kern 1001 und 1002 als symmetrische Kerne, d. h. Kerne mit den gleichen Konfigurationen, Funktionseinheiten und/oder der gleichen Logik, angesehen. In einer anderen Ausführungsform umfasst der Kern 1001 einen Out-of-Order-Prozessorkern, während der Kern 1002 einen In-Order-Prozessorkern umfasst. Die Kerne 1001 und 1002 können jedoch individuell aus jedem beliebigen Kerntyp, wie beispielsweise einem nativen Kern, einem softwaregesteuerten Kern, einem zum Ausführen einer nativen Anweisungssatz-Architektur (ISA für engl. Instruction Set Architecture) ausgelegten Kern, einem zum Ausführen einer übersetzten Anweisungssatz-Architektur (ISA) ausgelegten Kern, einem in Kooperation entwickelten Kern oder einem anderen bekannten Kern, ausgewählt sein. In einer heterogenen Kernumgebung (d. h. bei asymmetrischen Kernen) kann eine gewisse Form von Übersetzung, wie beispielsweise eine binäre Übersetzung verwendet werden, um Code auf einem oder beiden Kernen zu disponieren oder auszuführen. Um die Erörterung noch weiter zu führen, werden die in Kern 1001 veranschaulichten Funktionseinheiten im Folgenden ausführlicher beschrieben, da die Einheiten in Kern 1002 in der dargestellten Ausführungsform auf ähnliche Weise funktionieren.
  • Wie dargestellt, umfasst der Kern 1001 zwei Hardwarethreads 1001a und 1001b, die auch als Hardware-Threadslots 1001a und 1001b bezeichnet werden können. Daher sehen Softwareinstanzen, wie beispielsweise ein Betriebssystem, in einer Ausführungsform den Prozessor 1000 potenziell als vier separate Prozessoren, d. h. vier logische Prozessoren oder Verarbeitungselemente, an, die zum gleichzeitigen Ausführen von vier Softwarethreads imstande sind. Wie zuvor angesprochen, ist ein erster Thread mit Architekturzustandsregistern 1001a assoziiert, ein zweiter Thread ist mit Architekturzustandsregistern 1001b assoziiert, ein dritter Thread kann mit Architekturzustandsregistern 1002a assoziiert sein, und ein vierter Thread kann mit Architekturzustandsregistern 1002b assoziiert sein. Hierbei kann jedes der Architekturzustandsregister (1001a, 1001b, 1002a und 1002b) als Verarbeitungselement, Threadslot oder Thread-Einheit bezeichnet werden, wie zuvor beschrieben. Wie veranschaulicht, sind die Architekturzustandsregister 1001a in den Architekturzustandsregistern 1001b repliziert, so dass einzelne Architekturzustände/-kontexte für den logischen Prozessor 1001a und den logischen Prozessor 1001b gespeichert werden können. In Kern 1001 können außerdem andere, kleinere Ressourcen, wie beispielsweise Anweisungszeiger und Umbenennungslogik in einem Zuweisungs- und Umbenennungsblock 1030, für Thread 1001a und 1001b repliziert sein. Einige Ressourcen, wie beispielsweise Neuordnungspuffer in einer Neuordnungs-/Ausmusterungseinheit 1035, ILTB 1020, Lade-/Speicherpuffer und Warteschlangen, können durch Partitionierung gemeinsam genutzt werden. Andere Ressourcen, wie beispielsweise interne Universalregister, seitentabellenbasierte Register, ein untergeordneter Datencache und Daten-TLB 1051, Ausführungseinheit(en) 1040 und Teile einer Out-of-Order-Einheit 1035, werden potenziell zur Gänze gemeinsam genutzt.
  • Der Prozessor 1000 umfasst häufig Ressourcen, die zur Gänze gemeinsam genutzt werden können, durch Partitionierung gemeinsam genutzt werden können oder von/für Verarbeitungselemente(n) dediziert sein können. In 10 ist eine Veranschaulichungsform eines rein beispielhaften Prozessors mit veranschaulichenden logischen Einheiten/Ressourcen eines Prozessors veranschaulicht. Es ist zu erwähnen, dass ein Prozessor jede dieser Funktionseinheiten umfassen oder weglassen kann sowie er jede andere nicht dargestellte bekannte Funktionseinheit, Logik oder Firmware umfassen kann. Wie veranschaulicht, umfasst der Kern 1001 einen vereinfachten repräsentativen Out-of-Order(OOO)-Prozessorkern. Aber in verschiedenen Ausführungsformen kann ein In-Order-Prozessor verwendet werden. Der OOO-Kern umfasst einen Verzweigungszielpuffer (BTB für engl. branch target buffer) 1020, um Verzweigungen vorherzusagen, die ausgeführt/genommen werden sollen, und einen Anweisungsübersetzungspuffer (I-TLB für engl. Instruction-translation buffer) 1020 zum Speichern von Adressübersetzungseinträgen für Anweisungen.
  • Der Kern 1001 umfasst ferner ein Decodiermodul 1025, das mit einer Abrufeinheit 1020 gekoppelt ist, um abgerufene Elemente zu decodieren. Die Abruflogik umfasst in einer Ausführungsform einzelne Sequencer, die mit den Threadslots 1001a bzw. 1001b assoziiert sind. Üblicherweise ist der Kern 1001 mit einer ersten ISA assoziiert, die auf dem Prozessor 1000 ausführbare Anweisungen definiert/spezifiziert. Hierbei umfassen Maschinencodeanweisungen, die Teil der ersten ISA sind, oft einen Teil der Anweisung (als Opcode bezeichnet), die eine auszuführende Anweisung oder Operation referenziert/spezifiziert. Die Decodierlogik 1025 umfasst eine Schaltungsanordnung, die diese Anweisungen an ihren Opcodes erkennt und die decodierten Anweisungen auf der Pipeline weiterleitet, um sie zu verarbeiten, wie durch die erste ISA definiert. Wie im Folgenden ausführlicher erläutert, weisen die Decoder 1025 zum Beispiel in einer Ausführungsform Logik auf, die so konzipiert oder ausgelegt ist, dass sie spezifische Anweisungen, wie beispielweise eine Transaktionsanweisung, erkennt. Als Ergebnis der Erkennung durch die Decoder 1025 nimmt die Architektur oder der Kern 1001 spezifische vordefinierte Aktionen vor, um Aufgaben auszuführen, die mit der entsprechenden Anweisung assoziiert sind. Es ist wichtig, zu erwähnen, dass alle hierin beschriebenen Aufgaben, Blöcke, Operationen und Verfahren in Reaktion auf eine einzige oder mehrere Anweisungen, von welchen einige neue oder alte Anweisungen sein können, ausgeführt werden können. Es ist zu erwähnen, dass die Decoder 1026 in einer Ausführungsform die gleiche ISA (oder einen Teilsatz davon) erkennen. Alternativ können die Decoder 1026 in einer heterogenen Kernumgebung eine zweite ISA (entweder einen Teilsatz der ersten ISA oder eine andere ISA) erkennen.
  • In einem Beispiel umfasst der Zuweisungs- und Umbenennungsblock 1030 einen Zuweiser zum Reservieren von Ressourcen, wie beispielsweise Registerdateien zum Speichern von Ergebnissen der Bearbeitung von Anweisungen. Die Threads 1001a und 1001b sind jedoch potentiell zu einer Out-of-Order-Ausführung imstande, wobei der Zuweisungs- und Umbenennungsblock 1030 auch andere Ressourcen reserviert, wie beispielsweise einen Neuordnungspuffer zum Nachverfolgen von Anweisungsergebnissen. Die Einheit 1030 kann außerdem einen Registerumbenenner aufweisen, um Programm-/Anweisungsreferenzregister in andere, dem Prozessor 1000 interne Register umzubenennen. Eine Neuordnungs-/Ausmusterungseinheit 1035 umfasst Komponenten, wie beispielsweise die zuvor erwähnten Neuordnungspuffer, Ladepuffer und Speicherpuffer, um Out-of-Order-Ausführung und später In-Order-Ausmusterung von Out-of-Order-ausgeführten Anweisungen zu unterstützen.
  • Ein Scheduler- und Ausführungseinheit(en)-Block 1040 umfasst in einer Ausführungsform eine Scheduler-Einheit zum Disponieren von Anweisungen/Operationen auf Ausführungseinheiten. Zum Beispiel wird eine Gleitkomma-Anweisung an einem Port einer Ausführungseinheit disponiert, die eine verfügbare Gleitkomma-Ausführungseinheit aufweist. Registerdateien, welche mit den Ausführungseinheiten assoziiert sind, werden ebenfalls einbezogen, um Ergebnisse der Verarbeitung von Informationsanweisungen zu speichern. Beispielhafte Ausführungseinheiten umfassen eine Gleitkomma-Ausführungseinheit, eine Ganzzahl-Ausführungseinheit, eine Sprungausführungseinheit, eine Ladeausführungseinheit, eine Speicherausführungseinheit und andere bekannte Ausführungseinheiten.
  • Ein Datencache und Datenübersetzungspuffer (D-TLB) 1050 auf niedrigerer Ebene sind mit der bzw. den Ausführungseinheit(en) 1040 gekoppelt. Der Datencache dient zum Speichern der zuletzt verwendeten/bearbeiteten Elemente, wie beispielsweise Datenoperanden, die potentiell in Speicherkohärenzzuständen gehalten werden. Der D-TLB dient zum Speichern der letzten Übersetzungen von virtuellen/linearen in physikalische Adressen. Als ein spezifisches Beispiel kann ein Prozessor eine Seitentabellenstruktur zum Aufgliedern eines physikalischen Speichers in eine Mehrzahl von virtuellen Seiten umfassen.
  • Hierbei teilen sich die Kerne 1001 und 1002 den Zugriff auf Caches auf höhere Ebene oder weiter entfernte Caches, wie beispielsweise einen Cache der zweiten Ebene, der mit einer chipinternen Schnittstelle 1010 assoziiert ist. Es ist zu erwähnen, dass sich „auf höherer Ebene” oder „weiter entfernt” auf Cache-Ebenen bezieht, die höher werden oder sich von der bzw. den Ausführungseinheit(en) weiter entfernen. In einer Ausführungsform ist der Cache auf höherer Ebene ein Datencache auf einer letzten Ebene – ein letzter Cache in der Speicherhierarchie auf dem Prozessor 1000 – wie beispielsweise ein Datencache auf der zweiten oder dritten Ebene. Der Cache auf höherer Ebene ist jedoch nicht darauf beschränkt, da er mit einem Anweisungscache assoziiert sein kann oder einen solchen umfassen kann. Ein Ablaufverfolgungscache – ein Typ von Anweisungscache – kann stattdessen nach dem Decoder 1025 zum Speichern der letzten decodierten Ablaufverfolgungen gekoppelt sein. Hierbei bezieht sich eine Anweisung potenziell auf eine Makroanweisung (d. h. eine allgemeine Anweisung, die von den Decoder erkannt wird), welche in eine Anzahl von Mikroanweisungen (Mikrooperationen) decodieren kann.
  • In der dargestellten Konfiguration umfasst der Prozessor 1000 außerdem ein chipinternes Schnittstellenmodul 1010. Historisch war ein Speichercontroller, der im Folgenden ausführlicher beschrieben wird, in einem Computersystem außerhalb des Prozessors 1000 enthalten. In diesem Szenario dient die chipinterne Schnittstelle 1010 zum Kommunizieren mit Einrichtungen außerhalb des Prozessors 1000, wie beispielsweise einem Systemspeicher 1075, einem Chipsatz (der häufig einen Speicher-Controllerhub zum Verbinden mit dem Speicher 1075 und einen E-/A-Controllerhub zum Anschließen von Peripherieeinrichtungen umfasst), einem Speicher-Controllerhub, einer Northbridge oder einer anderen integrierten Schaltung. Und in diesem Szenario kann der Bus 1005 jede bekannte Zwischenverbindung, wie beispielsweise einen Mehrpunktverbindungsbus, eine Punkt-zu-Punkt-Zwischenverbindung, eine serielle Zwischenverbindung, einen parallelen Bus, einen kohärenten (z. B. cache-kohärenten) Bus, eine Schichtprotokollarchitektur, einen differenziellen Bus und einen GTL-Bus, umfassen.
  • Der Speicher 1075 kann dem Prozessor 1000 fest zugeordnet sein oder mit anderen Einrichtungen in einem System gemeinsam genutzt werden. Übliche Beispiele von Typen von Speichern 1075 umfassen DRAM, SRAM, nichtflüchtigen Speicher (NV-Speicher) und andere bekannte Speichereinrichtungen. Es ist zu erwähnen, dass die Einrichtung 1080 einen Grafikbeschleuniger, einen Grafikprozessor oder eine Grafikkarte, der/die mit einem Speicher-Controllerhub gekoppelt ist, einen Datenspeicher, der mit einem E-/A-Controllerhub gekoppelt ist, einen drahtlosen Sendeempfänger, eine Flash-Einrichtung, einen Audiocontroller, einen Netzwerkcontroller oder andere bekannte Einrichtungen umfassen kann.
  • Seit einiger Zeit jedoch kann jede dieser Einrichtungen in einen Prozessor 1000 integriert werden, da mehr Logik und Einrichtungen in einen Einzelchip wie beispielsweise SOC, integriert werden. Zum Beispiel ist ein Speicher-Controllerhub in einer Ausführungsform auf der gleichen Packung und/oder dem gleichen Chip mit dem Prozessor 1000. Hierbei umfasst ein Teil des Kerns (ein kerninterner Teil) 1010 einen oder mehrere Controller zum Herstellen einer Verbindung mit anderen Einrichtungen, wie beispielsweise dem Speicher 1075 oder einer Grafikeinrichtung 1080, über eine Schnittstelle. Die Konfiguration, die eine Zwischenverbindung und Controller zum Herstellen einer Verbindung mit solchen Einrichtungen über eine Schnittstelle umfasst, wird oft als kernintern (oder kernexterne Konfiguration) bezeichnet. Als ein Beispiel umfasst die chipinterne Schnittstelle 1010 eine Ring-Zwischenverbindung für chipinterne Kommunikation und einen seriellen Punkt-zu-Punkt-Hochgeschwindigkeitslink 1005 für chipexterne Kommunikation. In der SOC-Umgebung können jedoch noch mehr Einrichtungen, wie beispielsweise die Netzschnittstelle, Coprozessoren, der Speicher 1075, der Grafikprozessor 1080 und andere bekannte Computereinrichtungen/-schnittstellen, in einen Einzelchip oder eine integrierte Schaltung integriert werden, um einen kleinen Formfaktor mit hoher Funktionalität und niedrigem Energieverbrauch bereitzustellen.
  • In einer Ausführungsform ist der Prozessor 1000 zum Ausführen eines Compilers, einer Optimierung und/oder eines Übersetzercodes 1077 zum Kompilieren, Übersetzen und/oder Optimieren von Anwendungscode 1076 imstande, um die hierin beschriebenen Vorrichtungen und Verfahren zu unterstützen oder über eine Schnittstelle eine Verbindung damit herzustellen. Ein Compiler umfasst oft ein Programm oder einen Satz von Programmen zum Übersetzen von Quelltext/-code in Zieltext/-code. Üblicherweise erfolgt die Kompilierung von Programm-/Anwendungscode mit einem Compiler in mehreren Phasen und Durchgängen, um eine höhere Programmiersprache in einen maschinenorientierten Maschinen- oder Assemblersprachcode umzuwandeln. Für einfache Kompilierungen können dennoch noch Compiler mit einem einzigen Durchgang verwendet werden. Ein Compiler kann jede bekannte Kompiliertechnik verwenden und alle bekannten Compiler-Operationen ausführen, wie beispielsweise lexikalische Analyse, Vorverarbeitung, syntaktische Analyse, semantische Analyse, Codeerzeugung, Codeumwandlung und Codeoptimierung.
  • Größere Compiler umfassen oft mehrere Phasen, aber am häufigsten sind diese Phasen in zwei Hauptphasen enthalten: (1) Frontend, d. h. wo im Allgemeinen die syntaktische Verarbeitung, semantische Verarbeitung und eine gewisse Umwandlung/Optimierung stattfinden kann, und (2) Backend, d. h. wo im Allgemeinen Analyse, Umwandlungen, Optimierungen und Codeerzeugung stattfinden. Einige Compiler beziehen sich auf eine Mitte, welche die Verwischung der Abgrenzung zwischen einem Frontend und einem Backend eines Compilers veranschaulicht. Als Ergebnis kann die Bezugnahme auf Einfügung, Assoziierung, Erzeugung oder andere Operationen eines Compilers in jeder der zuvor erwähnten Phasen oder in jedem der zuvor erwähnten Durchgänge sowie in allen anderen bekannten Phasen oder Durchgangen eines Compilers erfolgen. Als ein veranschaulichendes Beispiel fügt ein Compiler potenziell Operationen, Aufrufe, Funktionen usw. in einer oder mehreren Kompilierphasen ein, wie beispielsweise eine Einfügung von Aufrufen/Operationen in einer Frontend-Kompilierphase und anschließend Umwandlung der Aufrufe/Operationen in Code auf niedrigerer Ebene während einer Umwandlungsphase. Es ist zu erwähnen, dass während dynamischer Kompilierung Compilercode oder dynamischer Optimierungscode solche Operationen/Aufrufe einfügen sowie den Code zur Ausführung während der Laufzeit optimieren kann. Als ein spezifisches Beispiel kann Binärcode (bereits kompilierter Code) während der Laufzeit dynamisch optimiert werden. Hierbei kann der Programmcode den dynamischen Optimierungscode, den Binärcode oder eine Kombination davon umfassen.
  • Ähnlich einem Compiler übersetzt ein Übersetzer, wie beispielsweise ein Binärübersetzer, Code entweder statisch oder dynamisch, um Code zu optimieren und/oder zu übersetzen. Daher kann sich die Bezugnahme auf die Ausführung von Code, Anwendungscode, Programmcode oder andere Softwareumgebung auf Folgendes beziehen: (1) entweder dynamische oder statische Ausführung von Compilerprogramm(en), Optimierungscode-Optimierern oder Übersetzern zum Kompilieren von Programmcode, Pflegen von Softwarestrukturen, Ausführen von anderen Operationen, Optimieren von Code oder Übersetzen von Code; (2) Ausführung von Hauptprogrammcode, der Operationen/Aufrufe umfasst, wie beispielsweise Anwendungscode, der optimiert/kompiliert wurde; (3) Ausführung von anderem Programmcode, wie beispielsweise Bibliotheken, der mit dem Hauptprogrammcode assoziiert ist, um Softwarestrukturen zu pflegen, andere softwarebezogene Operationen auszufahren oder Code zu optimieren; oder (4) eine Kombination davon.
  • Obwohl die vorliegende Erfindung in Bezug auf eine begrenzte Anzahl von Ausführungsformen beschrieben wurde, sind für Fachleute zahlreiche Modifikationen und Abwandlungen davon zu erkennen. Es ist beabsichtigt, dass die angehängten Ansprüche alle solche Modifikationen Abwandlungen erfassen, die unter das wahre Wesen und in den Schutzbereich dieser vorliegenden Erfindung fallen.
  • Ein Entwurf kann von der Schaffung über die Simulation zur Herstellung verschiedene Stufen durchlaufen. Daten, die einen Entwurf darstellen, können den Entwurf in einer Anzahl von Arten und Weisen darstellen. Zunächst kann, wie in Simulationen verwendbar, die Hardware unter Verwendung einer Hardware-Beschreibungssprache oder einer anderen Funktionsbeschreibungssprache dargestellt werden. Außerdem kann ein Modell auf Schaltungsebene mit Logik- und/oder Transistorgattern auf einigen Stufen des Entwurfsprozesses erzeugt werden. Ferner erreichen die meisten Entwürfe auf einer bestimmten Stufe eine Ebene von Daten, welche die physikalische Anordnung von verschiedenen Einrichtungen im Hardwaremodell darstellen. Falls herkömmliche Halbleiterfertigungstechniken angewendet werden, können die Daten, die das Hardwaremodell darstellen, die Daten sein, die das Vorhandensein oder Nichtvorhandensein von verschiedenen Merkmalen auf verschiedenen Maskenschichten für Masken spezifizieren, die zum Erzeugen der integrierten Schaltung verwendet werden. Bei jeder Darstellung des Entwurfs können die Daten in jeder Form eines maschinenlesbaren Mediums gespeichert werden. Ein Arbeitsspeicher oder ein magnetischer oder optischer Speicher, so wie beispielsweise eine Platte, kann das maschinenlesbare Medium zum Speichern von Informationen sein, die über optische oder elektrische Wellen übertragen werden, die moduliert oder anderweitig zum Senden solcher Informationen erzeugt werden. Wenn eine elektrische Trägerwelle, die den Code oder den Entwurf anzeigt oder überträgt, gesendet wird, wird insofern, als Kopieren, Puffern oder Wiederholungssendung des elektrischen Signals durchgeführt wird, eine neue Kopie erstellt. Demnach kann ein Kommunikationsanbieter oder ein Netzanbieter einen Gegenstand, wie beispielsweise in eine Trägerwelle codierte Informationen, unter Realisierung von Techniken von Ausführungsformen der vorliegenden Erfindung wenigstens vorübergehend auf einem dinglichen maschinenlesbaren Medium speichern.
  • Ein Modul, wie hierin verwendet, bezieht sich auf jede Kombination von Hardware, Software und/oder Firmware. Als ein Beispiel umfasst ein Modul Hardware, wie beispielsweise einen Mikrocontroller, der mit einem nicht-transitorischen Medium zum Speichern von Code assoziiert ist, der so ausgelegt ist, dass er durch den Mikrocontroller ausgeführt wird. Daher bezieht sich die Bezugnahme auf ein Modul in einer Ausführungsform auf die Hardware, welche speziell so konfiguriert ist, dass sie den Code, der auf einem nicht-transitorischen Medium gespeichert werden soll, erkennt und/oder ausführt. Außerdem bezieht sich die Verwendung eines Moduls in einer anderen Ausführungsform auf das nicht-transitorische Medium, das den Code umfasst, der speziell so ausgelegt ist, dass er durch den Mikrocontroller ausgeführt werden soll, um vorbestimmte Operationen durchzuführen. Und folglich kann sich der Begriff „Modul” (in diesem Beispiel) in noch einer anderen Ausführungsform auf die Kombination des Mikrocontrollers und des nicht-transitorischen Mediums beziehen. Modulgrenzen, die als getrennt veranschaulicht sind, variieren üblicherweise häufig und überschneiden sich potenziell. Zum Beispiel können ein erstes und ein zweites Modul Hardware, Software, Firmware oder eine Kombination davon miteinander teilen, während sie eine gewisse unabhängige Hardware, Software oder Firmware potenziell für sich behalten. In einer Ausführungsform umfasst der Begriff „Logik” Hardware, wie beispielsweise Transistoren, Register oder andere Hardware, wie beispielsweise programmierbare Logikbausteine.
  • Die Verwendung des Ausdrucks „konfiguriert zum/um zu/dass” bezieht sich in einer Ausführungsform auf Auslegen, Zusammenstellen, Herstellen, Zum-Verkauf-anbieten, Importieren und/oder Entwerfen einer Vorrichtung, Hardware, Logik oder eines Elements zum Ausführen einer vorgesehenen oder bestimmten Aufgabe. In diesem Beispiel ist eine Vorrichtung oder ein Element, die/das nicht in Betrieb ist, dennoch so „konfiguriert, dass” sie/es eine vorgesehene Aufgabe ausführt, wenn sie/es zum Ausführen der vorgesehenen Aufgabe konzipiert, gekoppelt und/oder verbunden ist. Als rein veranschaulichendes Beispiel kann ein Logikgatter während des Betriebs eine 0 oder eine 1 bereitstellen. Aber ein Logikgatter, das „konfiguriert ist, um” ein Freigabesignal für einen Takt bereitzustellen, umfasst nicht jedes potenzielle Logikgatter, das eine 1 oder eine 0 bereitstellen kann. Stattdessen ist ein Logikgatter eines, das derart gekoppelt ist, dass die Ausgabe von 1 oder 0 während des Betriebs zum Freigeben des Taktes ist. Es ist abermals zu erwähnen, dass der Begriff „konfiguriert zum/um zu/dass” keinen Betrieb erfordert, sondern stattdessen den Akzent auf den latenten Zustand einer Vorrichtung, einer Hardware und/oder eines Elements setzt, wobei die Vorrichtung, die Hardware und/oder das Element im latenten Zustand so konzipiert ist, dass sie/es eine bestimmte Aufgabe ausführt, wenn die Vorrichtung, die Hardware und/oder das Element in Betrieb ist.
  • Außerdem beziehen sich die Ausdrücke „zu”, „imstande zu” und/oder „ausgelegt zu” in einer Ausführungsform auf eine Vorrichtung, eine Logik, eine Hardware und/oder ein Element, die/das derart konzipiert ist, dass sie/es die Verwendung der Vorrichtung, der Logik, der Hardware und/oder des Elements in einer spezifizierten Art und Weise ermöglicht. Es ist zu erwähnen, dass, wie zuvor, die Verwendung von „zu”, „imstande zu” oder „ausgelegt zu” sich auf den latenten Zustand einer Vorrichtung, einer Logik, einer Hardware und/oder eines Elements bezieht, wobei die Vorrichtung, die Logik, die Hardware und/oder das Element nicht in Betrieb, aber derart konzipiert ist, dass sie/es die Verwendung einer Vorrichtung in einer spezifizierten Art und Weise ermöglicht.
  • Ein Wert, wie hierin verwendet, umfasst jede bekannte Darstellung einer Zahl, eines Zustands, eines logischen Zustands oder eines logischen Binärzustands. Die Verwendung von logischen Pegeln, logischen Werten oder Logikwerten bezieht sich häufig auch auf 1sen und 0en, welche einfach logische Binärzustände darstellen. Zum Beispiel bezieht sich eine 1 auf den logischen Zustand H, und 0 bezieht sich auf den logischen Zustand L. In einer Ausführungsform kann eine Speicherzelle, wie beispielsweise eine Transistor- oder Flash-Zelle, imstande sein, einen einzigen logischen Wert oder mehrere logische Werte zu halten. Es wurden jedoch andere Darstellungen von Werten in Computersystemen verwendet. Zum Beispiel kann die Dezimalzahl zehn auch als ein Binärwert von 1010 und ein hexadezimaler Buchstabe A dargestellt werden. Daher umfasst ein Wert jede Darstellung von Informationen, die in einem Computersystem gehalten werden kann.
  • Darüber hinaus können Zustände durch Werte oder Teile von Werten dargestellt werden. Als ein Beispiel kann ein erster Wert, wie beispielsweise eine logische Eins, einen Standard- oder Anfangszustand darstellen, während ein zweiter Wert, wie beispielsweise eine logische Null, einen Nicht-Standardwert darstellen kann. Außerdem beziehen sich die Begriffe „rückgesetzt” und „gesetzt” in einer Ausführungsform auf einen Standard- und einen aktualisierten Wert bzw. Zustand. Zum Beispiel umfasst ein Standardwert potenziell einen logischen H-Wert, d. h. rückgesetzt, während ein aktualisierter Wert potenziell einen logischen L-Wert umfasst, d. h. gesetzt. Es ist zu erwähnen, dass jede Kombination von Werten verwendet werden kann, um eine beliebige Anzahl von Zuständen darzustellen.
  • Die vorstehend dargelegten Ausführungsformen von Verfahren, Hardware, Software, Firmware oder Code können über Anweisungen oder Code implementiert werden, die auf einem maschinenzugreifbaren, maschinenlesbaren, computerzugreifbaren oder computerlesbaren Medium gespeichert sind und die von einem Verarbeitungselement ausgeführt werden können. Ein nicht-transitorisches, maschinenzugreifbares/-lesbares Medium umfasst jeden Mechanismus, der Informationen in einer Form bereitstellt (d. h. speichert und/oder sendet), die von einer Maschine, wie beispielsweise einem Computer- oder elektronischen System, gelesen werden können. Ein nicht-transitorisches maschinenzugreifbares Medium umfasst zum Beispiel einen Direktzugriffsspeicher (RAM für engl. random-access memory), wie beispielsweise einen statischen RAM (SRAM) oder einen dynamischen RAM (DRAM); ROM; ein magnetisches oder optisches Speichermedium; Flash-Speichereinrichtungen; elektrische Speichereinrichtungen; optische Speichereinrichtungen; akustische Speichereinrichtungen; eine andere Form von Speichereinrichtungen, die von den nicht-transitorischen Medien zu unterscheiden sind, die Informationen davon empfangen können, zum Halten von Informationen, die von transitorischen (ausgebreiteten) Signalen (z. B. Trägerwellen, Infrarotsignalen, Digitalsignalen) empfangen werden, usw.
  • Anweisungen, die verwendet werden, um Logik zum Durchführen von Ausführungen der Erfindung zu programmieren, können in einem Speicher im System, wie beispielsweise einem DRAM, Cache, Flash-Speicher oder anderen Speicher, gespeichert werden. Außerdem können die Anweisungen über ein Netz oder durch andere computerlesbare Medien verteilt werden. Demnach kann ein maschinenlesbares Medium jeden Mechanismus zum Speichern oder Senden von Informationen in einer Form, die von einer Maschine (z. B. einem Computer) gelesen werden kann, umfassen, wie beispielsweise, ohne darauf beschränkt zu sein, Floppy-Disks, optische Platten, CD-Festwertspeicher (CD-ROMs) und magnetooptische Platten, Festwertspeicher (ROMs), Direktzugriffspeicher (RAM), löschbare programmierbare Festwertspeicher (EPROM), elektrisch löschbare programmierbare Festwertspeicher (EEPROM), magnetische oder optische Karten, Flash-Speicher oder einen dinglichen maschinenlesbaren Speicher, der bei der Übertragung von Informationen über das Internet durch elektrische, optische, akustische oder andere Formen von ausgebreiteten Signalen (z. B. Trägerwellen, Infrarotsignalen, Digitalsignalen usw.) verwendet wird. Demgemäß umfasst das computerlesbare Medium alle Typen von dinglichen maschinenlesbaren Medien, die zum Speichern oder Senden von elektronischen Anweisungen oder Informationen in einer Form geeignet sind, die von einer Maschine (z. B. einem Computer) gelesen werden kann.
  • Die folgenden Beispiele betreffen Ausführungsformen gemäß dieser Spezifikation. Eine oder mehrere Ausführungsformen können eine Vorrichtung, ein System, einen maschinenlesbaren Speicher, ein maschinenlesbares Medium und ein Verfahren zum Senden einer Kohärenzprotokollnachricht, die einer bestimmten Cache-Zeile entspricht, Identifizieren eines potenziellen Konflikts, der die bestimmte Cache-Zeile einbezieht, und Senden einer Weiterleitungsanforderung an einen Home-Agenten zum Identifizieren des potenziellen Konflikts bereitstellen.
  • Ein oder mehrere Beispiele können ferner ein Empfangen eines Schnüfflers bereitstellen, welcher der bestimmten Cache-Zeile entspricht.
  • Ein oder mehrere Beispiele können ferner ein Identifizieren bereitstellen, dass der Schnüffler empfangen wird, während eine Anforderung unerledigt ist, und der potenzielle Konflikt wird basierend auf dem Identifizieren identifiziert, dass der Schnüffler empfangen wird, während die Anforderung unerledigt ist.
  • Ein oder mehrere Beispiele können ferner ein Empfangen einer Weiterleitungsantwort vom Home-Agenten bereitstellen, die auf der Weiterleitungsanforderung basiert.
  • Ein oder mehrere Beispiele können ferner ein Bestimmen einer Antwort auf die Weiterleitungsantwort basierend wenigstens zum Teil auf Attributen des Schnüfflers bereitstellen.
  • In mindestens einem Beispiel entspricht der Schnüffler einer anderen Kohärenzprotokollnachricht durch einen anderen Agenten, welche der bestimmten Cache-Zeile entspricht, und die Attribute des Schnüfflers umfassen eine Identifikation des anderen Agenten, eine Identifikation eines Befehls, der in der anderen Kohärenzprotokollnachricht enthalten ist, und eine Transaktionskennung der anderen Kohärenzprotokollnachricht.
  • In mindestens einem Beispiel umfasst die Antwort auf die Weiterleitungsantwort eine Schnüfflerantwort, und die Protokollschichtlogik dient ferner zum Senden der Schnüfflerantwort an den Home-Agenten nach dem Empfang einer Fertigstellung der Kohärenzprotokollnachricht.
  • In mindestens einem Beispiel umfasst die Antwort ein Durchführen eines Rückschreibens in den Speicher vor dem Senden einer Schnüfflerantwort an den Home-Agenten.
  • In mindestens einem Beispiel wird die bestimmte Cache-Zeile am Agenten teilweise modifiziert.
  • Ein oder mehrere Beispiele können ferner ein Empfangen einer Fertigstellung nach dem Empfang der Weiterleitungsantwort bereitstellen.
  • Ein oder mehrere Beispiele können ferner ein Empfangen einer Fertigstellung vor dem Empfang der Weiterleitungsantwort bereitstellen.
  • Ein oder mehrere Beispiele können ferner ein Zuweisen einer Ressource für Antworten auf die Anforderung bereitstellen.
  • Ein oder mehrere Beispiele können ferner ein Zuweisen einer Weiterleitungsressource für eine Weiterleitungsantwort auf die Weiterleitungsanforderung bereitstellen.
  • Eine oder mehrere Ausführungsformen können eine Vorrichtung, ein System, einen maschinenlesbaren Speicher, ein maschinenlesbares Medium und ein Verfahren zum Empfangen einer ersten Kohärenzprotokollanforderung von einem ersten Cache-Agenten, Senden einer Schnüffelanforderung an einen zweiten Cache-Agenten, wobei die Schnüffelanforderung der ersten Kohärenzprotokollanforderung entspricht, Empfangen einer Weiterleitungsanforderung vom zweiten Cache-Agenten, die der Schnüffelanforderung entspricht, wobei die Weiterleitungsanforderung einen potenziellen Konflikt mit der ersten Kohärenzprotokollanforderung identifiziert, und Senden einer Weiterleitungsantwort an den zweiten Cache-Agenten in Reaktion auf die Weiterleitungsanforderung bereitstellen.
  • Ein oder mehrere Beispiele können ferner ein Empfangen einer anderen Kohärenzprotokollanforderung vom zweiten Cache-Agenten bereitstellen, wobei die erste Kohärenzprotokollanforderung und die andere Kohärenzprotokollanforderung jeweils eine gemeinsame Cache-Zeile betreffen.
  • In mindestens einem Beispiel wird die andere Kohärenzprotokollanforderung durch den Agenten vor der ersten Kohärenzprotokollanforderung empfangen, und die Protokollschichtlogik dient ferner zum Verarbeiten der anderen Kohärenzprotokollanforderung und Zurücksenden einer Fertigstellungsnachricht für die andere Kohärenzprotokollanforderung.
  • Ein oder mehrere Beispiele können ferner ein Empfangen einer Antwort vom zweiten Agenten auf die Weiterleitungsantwort und Erzeugen einer Fertigstellung für die erste Kohärenzprotokollanforderung bei Empfang der Antwort auf die Weiterleitungsantwort bereitstellen.
  • In mindestens einem Beispiel umfasst der Agent einen Home-Agenten.
  • Ein oder mehrere Beispiele können ferner ein System mit einer Zwischenverbindungs-Fabric, einem Home-Agenten zum Bearbeiten von Anforderungen für einen kohärenten Speicherbereich, und einen Cache-Agenten bereitstellen, der über die Zwischenverbindungs-Fabric kommunikativ mit dem Home-Agenten gekoppelt ist. Die Zwischenverbindungs-Fabric kann eine Reihenfolge der Antwort auf den Schnüffler und der Fertigstellung für die andere Kohärenzprotokollanforderung sicherstellen. Der Home-Agent kann einen Satz von Ressourcen aufweisen, und der Satz von Ressourcen ist Cache-Agenten im System nicht im Voraus zugewiesen.
  • Ein oder mehrere Beispiele können ferner einen Agenten mit einem Schichtprotokollstapel bereitstellen, der eine Protokollschicht umfasst, wobei die Protokollschicht zum Initiieren einer Zuweisung von Ressourcen ohne Eingriff seitens des Home-Agenten dient, zum Verarbeiten der ersten Anforderung in Reaktion darauf dient, dass der Agent die erste Anforderung empfängt, und zum Initiieren einer Zuweisung von Ressourcen ohne Eingriff seitens des Home-Agenten dient, um Antworten auf eine zweite Anforderung in Reaktion darauf zu verarbeiten, dass der Agent die zweite Anforderung sendet.
  • In mindestens einem Beispiel umfasst die Zuweisung von Ressourcen eine von HTID, RNID, RTID oder einer Kombination davon.
  • In mindestens einem Beispiel umfasst die Zuweisung von Ressourcen eine von Ressourcen zum Verarbeiten von Schnüffelanforderungen und Weiterleitungsanforderungen.
  • Ein oder mehrere Beispiele können ferner einen Agenten mit einem Schichtprotokollstapel bereitstellen, der eine Protokollschicht umfasst, wobei die Protokollschicht zum Imitieren der Verwendung eines geordneten Antwortkanals zum Durchführen von Konfliktlösung dient.
  • Ein oder mehrere Beispiele können ferner einen Kohärenzagenten mit einem Schichtprotokollstapel bereitstellen, der eine Protokollschicht umfasst, wobei die Protokollschicht zum Blockieren einer Weiterleitung für eine Rückschreibanforderung dient, um Datenkonsistenz aufrechtzuerhalten.
  • In mindestens einem Beispiel dient die Protokollschicht zum Initiieren einer Rückschreibanforderung, um einen Commit für nicht zwischenspeicherbare Daten vor dem Verarbeiten der Weiterleitung auszuführen.
  • In mindestens einem Beispiel dient die Protokollschicht ferner zum Unterstützen von explizitem Rückschreiben von partiellen Cache-Zeilen.
  • Die Bezugnahme auf „eine bestimmte Ausführungsform” oder „eine beliebige Ausführungsform” bedeutet die gesamte Spezifikation hindurch, dass ein bestimmtes Merkmal, eine bestimmte Struktur oder eine bestimmte Charakteristik, die in Verbindung mit der Ausführungsform beschrieben wird, in mindestens einer Ausführungsform der vorliegenden Erfindung enthalten ist. Demnach bezieht sich das Vorkommen der Ausdrücke „in einer bestimmten Ausführungsform” oder „in einer beliebigen Ausführungsform” an verschiedenen Stellen in der gesamten Spezifikation nicht unbedingt immer auf die gleiche Ausführungsform. Außerdem können die jeweiligen Merkmale, Strukturen oder Charakteristiken in einer oder mehreren Ausführungsformen in geeigneter Weise kombiniert werden.
  • In der vorstehenden Spezifikation erfolgte eine ausführliche Beschreibung unter Bezugnahme auf spezifische beispielhafte Ausführungsformen. Es ist jedoch offensichtlich, dass verschiedene Modifikationen und Änderungen daran vorgenommen werden können, ohne vom weiter gefassten Wesen und Schutzbereich der Erfindung, wie in den angehängten Ansprüchen dargelegt, abzuweichen. Demgemäß sind die Spezifikation und die Zeichnungen vielmehr in einem veranschaulichenden Sinn als einem einschränkenden Sinn zu betrachten. Außerdem bezieht sich die vorstehende Verwendung von „Ausführungsform” und anderer exemplarischer Ausdrucksweise nicht unbedingt auf die gleiche Ausführungsform oder das gleiche Beispiel, sondern kann sich auf andere und unterschiedliche Ausführungsformen sowie potenziell auf die gleiche Ausführungsform beziehen.

Claims (35)

  1. Vorrichtung, umfassend: einen Agenten, der eine Protokollschichtlogik umfasst zum: Senden einer Kohärenzprotokollnachricht, die einer bestimmten Cache-Zeile entspricht; Identifizieren eines potenziellen Konflikts, der die bestimmte Cache-Zeile einbezieht; und Senden einer Weiterleitungsanforderung an einen Home-Agenten, um den potenziellen Konflikt zu identifizieren.
  2. Vorrichtung nach Anspruch 1, wobei die Protokollschichtlogik ferner zum Empfangen eines Schnüfflers dient, welcher der bestimmten Cache-Zeile entspricht.
  3. Vorrichtung nach Anspruch 2, wobei die Nachricht eine Anforderung umfasst, welche die bestimmte Cache-Zeile einbezieht, die Protokollschichtlogik zum Identifizieren dient, dass der Schnüffler empfangen wird, während die Anforderung unerledigt ist, und der potenzielle Konflikt basierend auf dem Identifizieren, dass der Schnüffler empfangen wird, während die Anforderung unerledigt ist, identifiziert wird.
  4. Vorrichtung nach Anspruch 2, wobei die Protokollschichtlogik ferner zum Empfangen einer Weiterleitungsantwort vom Home-Agenten dient, die auf der Weiterleitungsanforderung basiert.
  5. Vorrichtung nach Anspruch 4, wobei die Protokollschichtlogik ferner zum Bestimmen einer Antwort auf die Weiterleitungsantwort wenigstens zum Teil basierend auf Attributen des Schnüfflers dient.
  6. Vorrichtung nach Anspruch 5, wobei der Schnüffler einer anderen Kohärenzprotokollnachricht durch einen anderen Agenten entspricht, welche der bestimmten Cache-Zeile entspricht, und die Attribute des Schnüfflers eine Identifikation des anderen Agenten, eine Identifikation eines Befehls, der in der anderen Kohärenzprotokollnachricht enthalten ist, und eine Transaktionskennung der anderen Kohärenzprotokollnachricht umfassen.
  7. Vorrichtung nach Anspruch 5, wobei die Antwort auf die Weiterleitungsantwort eine Schnüfflerantwort umfasst, und die Protokollschichtlogik ferner zum Senden der Schnüfflerantwort an den Home-Agenten nach dem Empfang einer Fertigstellung der Kohärenzprotokollnachricht dient.
  8. Vorrichtung nach Anspruch 5, wobei die Antwort ein Durchführen eines Rückschreibens in den Speicher vor dem Senden einer Schnüfflerantwort an den Home-Agenten umfasst.
  9. Vorrichtung nach Anspruch 8, wobei die bestimmte Cache-Zeile am Agenten teilweise modifiziert wird.
  10. Vorrichtung nach Anspruch 4, wobei die Protokollschichtlogik ferner zum Empfangen einer Fertigstellung nach dem Empfang der Weiterleitungsantwort dient.
  11. Vorrichtung nach Anspruch 4, wobei die Protokollschichtlogik ferner zum Empfangen einer Fertigstellung vor dem Empfang der Weiterleitungsantwort dient.
  12. Vorrichtung nach Anspruch 1, wobei die Protokollschichtlogik ferner zum Zuweisen einer Ressource für Antworten auf die Anforderung dient.
  13. Vorrichtung nach Anspruch 12, wobei die Protokollschichtlogik ferner zum Zuweisen einer Weiterleitungsressource für Weiterleitungsantworten auf die Weiterleitungsanforderung dient.
  14. Vorrichtung, umfassend: einen Agenten, der eine Protokollschichtlogik umfasst zum: Empfangen einer ersten Kohärenzprotokollanforderung von einem ersten Cache-Agenten; Senden einer Schnüffelanforderung an einen zweiten Cache-Agenten, wobei die Schnüffelanforderung der ersten Kohärenzprotokollanforderung entspricht; Empfangen einer Weiterleitungsanforderung vom zweiten Cache-Agenten, die der Schnüffelanforderung entspricht, wobei die Weiterleitungsanforderung einen potenziellen Konflikt mit der ersten Kohärenzprotokollanforderung identifiziert; und Senden einer Weiterleitungsantwort an den zweiten Cache-Agenten in Reaktion auf die Weiterleitungsanforderung.
  15. Vorrichtung nach Anspruch 14, wobei die Protokollschichtlogik ferner zum Empfangen einer anderen Kohärenzprotokollanforderung vom zweiten Cache-Agenten dient, wobei die erste Kohärenzprotokollanforderung und die andere Kohärenzprotokollanforderung jeweils eine gemeinsame Cache-Zeile betreffen.
  16. Vorrichtung nach Anspruch 15, wobei die andere Kohärenzprotokollanforderung durch den Agenten vor der ersten Kohärenzprotokollanforderung empfangen wird, und die Protokollschichtlogik ferner zum Verarbeiten der anderen Kohärenzprotokollanforderung und Zurücksenden einer Fertigstellungsnachricht für die andere Kohärenzprotokollanforderung dient.
  17. Vorrichtung nach Anspruch 15, wobei die Protokollschichtlogik ferner zum Empfangen einer Antwort vom zweiten Agenten auf die Weiterleitungsantwort und Erzeugen einer Fertigstellung für die erste Kohärenzprotokollanforderung bei Empfang der Antwort auf die Weiterleitungsantwort dient.
  18. Vorrichtung nach Anspruch 14, wobei der Agent einen Home-Agenten umfasst.
  19. Vorrichtung nach Anspruch 14, wobei die Protokollschichtlogik ferner zum Zuweisen einer Ressource für Antworten auf die Anforderung und Zuweisen einer Weiterleitungsressource für die Weiterleitungsantwort basierend auf der empfangenen Weiterleitungsanforderung dient.
  20. Verfahren, umfassend: Empfangen einer ersten Kohärenzprotokollanforderung von einem ersten Cache-Agenten; Senden einer Schnüffelanforderung an einen zweiten Cache-Agenten, wobei die Schnüffelanforderung der ersten Kohärenzprotokollanforderung entspricht; Empfangen einer Weiterleitungsanforderung vom zweiten Cache-Agenten, die der Schnüffelanforderung entspricht, wobei die Weiterleitungsanforderung einen potenziellen Konflikt mit der ersten Kohärenzprotokollanforderung identifiziert; und Senden einer Weiterleitungsantwort an den zweiten Cache-Agenten in Reaktion auf die Weiterleitungsanforderung.
  21. Verfahren nach Anspruch 20, ferner umfassend ein Empfangen einer anderen Kohärenzprotokollanforderung vom zweiten Cache-Agenten, wobei die erste Kohärenzprotokollanforderung und die andere Kohärenzprotokollanforderung jeweils eine gemeinsame Cache-Zeile betreffen.
  22. Verfahren nach Anspruch 21, wobei die andere Kohärenzprotokollanforderung vor der ersten Kohärenzprotokollanforderung empfangen wird, wobei das Verfahren ferner umfasst: Verarbeiten der anderen Kohärenzprotokollanforderung; und Zurücksenden einer Fertigstellungsnachricht für die andere Kohärenzprotokollanforderung.
  23. Verfahren nach Anspruch 21, ferner umfassend: Empfangen einer Antwort vom zweiten Agenten auf die Weiterleitungsantwort; und Erzeugen einer Fertigstellung für die erste Kohärenzprotokollanforderung in Reaktion auf den Empfang der Antwort auf die Weiterleitungsantwort.
  24. System, umfassend: eine Zwischenverbindungs-Fabric; einen Home-Agenten, der Anforderungen für einen kohärenten Speicherbereich bearbeitet; einen Cache-Agenten, der über die Zwischenverbindungs-Fabric kommunikativ mit dem Home-Agenten gekoppelt ist, wobei der Cache-Agent dient zum: Senden einer Kohärenzprotokollnachricht, die einer bestimmten Cache-Zeile entspricht; und Empfangen eines Schnüfflers von einem Home-Agenten, welcher der bestimmten Cache-Zeile entspricht, basierend wenigstens zum Teil auf dem Schnüffler; Identifizieren eines potenziellen Konflikts, der die bestimmte Cache-Zeile einbezieht; und Senden einer Weiterleitungsanforderung an einen Home-Agenten, um den potenziellen Konflikt zu identifizieren.
  25. System nach Anspruch 24, wobei der Home-Agent dient zum: Empfangen einer anderen Kohärenzprotokollanforderung von einem anderen Cache-Agenten; Senden des Schnüfflers, wobei der Schnüffler der Kohärenzprotokollanforderung entspricht; Empfangen der Weiterleitungsanforderung; Senden einer Weiterleitungsantwort an den Cache-Agenten in Reaktion auf die Weiterleitungsanforderung; Erzeugen einer Fertigstellung für die Kohärenzprotokollanforderung; und Erzeugen einer Fertigstellung für die andere Kohärenzprotokollanforderung.
  26. System nach Anspruch 25, wobei der Cache-Agent ferner zum Bestimmen einer Antwort auf die Weiterleitungsantwort dient, wobei die Antwort auf die Weiterleitungsantwort so ist, dass sie ein Senden einer Antwort auf den Schnüffler an den Home-Agenten umfasst.
  27. System nach Anspruch 26, wobei die Zwischenverbindungs-Fabric zum Sicherstellen der Reihenfolge der Antwort auf den Schnüffler und der Fertigstellung für die andere Kohärenzprotokollanforderung dient.
  28. System nach Anspruch 24, wobei der Home-Agent einen Satz von Ressourcen aufweist, und der Satz von Ressourcen Cache-Agenten im System nicht im Voraus zugewiesen ist.
  29. Vorrichtung, umfassend: einen Agenten mit einem Schichtprotokollstapel, der eine Protokollschicht umfasst, wobei die Protokollschicht zum Initiieren einer Zuweisung von Ressourcen ohne Eingriff seitens des Home-Agenten dient zum Verarbeiten einer ersten Anforderung in Reaktion darauf, dass der Agent die erste Anforderung empfängt, und zum Initiieren einer Zuweisung von Ressourcen ohne Eingriff seitens des Home-Agenten dient, um Antworten auf eine zweite Anforderung in Reaktion darauf zu verarbeiten, dass der Agent die zweite Anforderung sendet.
  30. Vorrichtung nach Anspruch 29, wobei die Zuweisung von Ressourcen eine von HTID, RNID, RTID oder einer Kombination davon umfasst.
  31. Vorrichtung nach Anspruch 29, wobei die Zuweisung von Ressourcen eine von Ressourcen zum Verarbeiten von Schnüffelanforderungen und Weiterleitungsanforderungen umfasst.
  32. Vorrichtung, umfassend: einen Agenten mit einem Schichtprotokollstapel, der eine Protokollschicht umfasst, wobei die Protokollschicht zum Imitieren der Verwendung eines geordneten Antwortkanals zum Durchführen von Konfliktlösung dient.
  33. Vorrichtung, umfassend: einen Kohärenzagenten mit einem Schichtprotokollstapel, der eine Protokollschicht umfasst, wobei die Protokollschicht zum Blockieren einer Weiterleitung für eine Rückschreibanforderung ist, um Datenkonsistenz aufrechtzuerhalten.
  34. Vorrichtung nach Anspruch 33, wobei die Protokollschicht zum Initiieren einer Rückschreibanforderung dient, um einen Commit für nicht zwischenspeicherbare Daten vor dem Verarbeiten der Weiterleitung auszuführen.
  35. Vorrichtung nach Anspruch 33, wobei die Protokollschicht ferner zum Unterstützen von explizitem Rückschreiben von partiellen Cache-Zeilen ist.
DE112013005086.2T 2012-10-22 2013-03-15 Kohärenzprotokoll für Hochleistungszwischenverbindung Pending DE112013005086T5 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201261717091P 2012-10-22 2012-10-22
US61/717,091 2012-10-22
PCT/US2013/032670 WO2014065876A1 (en) 2012-10-22 2013-03-15 High performance interconnect coherence protocol

Publications (1)

Publication Number Publication Date
DE112013005086T5 true DE112013005086T5 (de) 2015-09-03

Family

ID=50485278

Family Applications (14)

Application Number Title Priority Date Filing Date
DE112013004105.7T Pending DE112013004105T5 (de) 2012-10-22 2013-03-15 Kohärenzprotokolltabellen
DE112013003723.8T Active DE112013003723B4 (de) 2012-10-22 2013-03-15 Hochleistungsfähige physikalische Kopplungsstrukturschicht
DE112013005086.2T Pending DE112013005086T5 (de) 2012-10-22 2013-03-15 Kohärenzprotokoll für Hochleistungszwischenverbindung
DE112013007751.5T Active DE112013007751B3 (de) 2012-10-22 2013-03-15 Hochleistungs-Zusammenschaltungs-Bitübertragungsschicht
DE112013002069.6T Active DE112013002069B4 (de) 2012-10-22 2013-03-15 Hohes Leistungsverbindungskohärenz-Protokoll
DE112013004094.8T Active DE112013004094B4 (de) 2012-10-22 2013-03-15 Hochleistungs-Zusammenschaltungs-Bitübertragungsschicht
DE112013005093.5T Pending DE112013005093T5 (de) 2012-10-22 2013-03-15 Hochleistungszusammenschaltungsbitübertragungsschicht
DE112013005090.0T Pending DE112013005090T5 (de) 2012-10-22 2013-03-15 Steuernachrichtenübermittlung in einem mehrfach-Slot-Verbindungsschicht-Flit
DE112013002090.4T Pending DE112013002090T5 (de) 2012-10-22 2013-03-27 Hochleistungsfähige physikalische Kopplungsstrukturschicht
DE112013007752.3T Active DE112013007752B3 (de) 2012-10-22 2013-03-27 Hochleistungsverdrahtungs-Bitübertragungsschicht
DE201311002880 Pending DE112013002880T5 (de) 2012-10-22 2013-03-27 Hochleistungsfähige physikslische Kopplungsstrukturschicht
DE112013005104.4T Pending DE112013005104T5 (de) 2012-10-22 2013-03-27 Hochleistungsverdrahtungs-Bitübertragungsschicht
DE112013001360.6T Active DE112013001360B4 (de) 2012-10-22 2013-03-28 Vorrichtung, verfahren und system zum bereitstellen einer kopplungsstruktur-linkschicht
DE112013007767.1T Active DE112013007767B3 (de) 2012-10-22 2013-03-28 Vorrichtung und system zur verbesserten nutzung von datenverbindungen

Family Applications Before (2)

Application Number Title Priority Date Filing Date
DE112013004105.7T Pending DE112013004105T5 (de) 2012-10-22 2013-03-15 Kohärenzprotokolltabellen
DE112013003723.8T Active DE112013003723B4 (de) 2012-10-22 2013-03-15 Hochleistungsfähige physikalische Kopplungsstrukturschicht

Family Applications After (11)

Application Number Title Priority Date Filing Date
DE112013007751.5T Active DE112013007751B3 (de) 2012-10-22 2013-03-15 Hochleistungs-Zusammenschaltungs-Bitübertragungsschicht
DE112013002069.6T Active DE112013002069B4 (de) 2012-10-22 2013-03-15 Hohes Leistungsverbindungskohärenz-Protokoll
DE112013004094.8T Active DE112013004094B4 (de) 2012-10-22 2013-03-15 Hochleistungs-Zusammenschaltungs-Bitübertragungsschicht
DE112013005093.5T Pending DE112013005093T5 (de) 2012-10-22 2013-03-15 Hochleistungszusammenschaltungsbitübertragungsschicht
DE112013005090.0T Pending DE112013005090T5 (de) 2012-10-22 2013-03-15 Steuernachrichtenübermittlung in einem mehrfach-Slot-Verbindungsschicht-Flit
DE112013002090.4T Pending DE112013002090T5 (de) 2012-10-22 2013-03-27 Hochleistungsfähige physikalische Kopplungsstrukturschicht
DE112013007752.3T Active DE112013007752B3 (de) 2012-10-22 2013-03-27 Hochleistungsverdrahtungs-Bitübertragungsschicht
DE201311002880 Pending DE112013002880T5 (de) 2012-10-22 2013-03-27 Hochleistungsfähige physikslische Kopplungsstrukturschicht
DE112013005104.4T Pending DE112013005104T5 (de) 2012-10-22 2013-03-27 Hochleistungsverdrahtungs-Bitübertragungsschicht
DE112013001360.6T Active DE112013001360B4 (de) 2012-10-22 2013-03-28 Vorrichtung, verfahren und system zum bereitstellen einer kopplungsstruktur-linkschicht
DE112013007767.1T Active DE112013007767B3 (de) 2012-10-22 2013-03-28 Vorrichtung und system zur verbesserten nutzung von datenverbindungen

Country Status (9)

Country Link
US (20) US20140201463A1 (de)
EP (2) EP3410304B1 (de)
JP (2) JP6139689B2 (de)
KR (27) KR101700261B1 (de)
CN (26) CN104737147B (de)
BR (1) BR112015006432A2 (de)
DE (14) DE112013004105T5 (de)
RU (2) RU2579140C1 (de)
WO (11) WO2014065879A1 (de)

Families Citing this family (204)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2013105967A1 (en) * 2012-01-13 2013-07-18 Intel Corporation Efficient peer-to-peer communication support in soc fabrics
US8943255B2 (en) * 2012-05-29 2015-01-27 Lsi Corporation Methods and structure for accounting for connection resets between peripheral component interconnect express bridges and host devices
US9355058B2 (en) 2012-10-22 2016-05-31 Intel Corporation High performance interconnect physical layer
US9280507B2 (en) 2012-10-22 2016-03-08 Intel Corporation High performance interconnect physical layer
US9479196B2 (en) 2012-10-22 2016-10-25 Intel Corporation High performance interconnect link layer
WO2014065879A1 (en) 2012-10-22 2014-05-01 Venkatraman Iyer High performance interconnect physical layer
US9367474B2 (en) * 2013-06-12 2016-06-14 Apple Inc. Translating cache hints
US20150006962A1 (en) * 2013-06-27 2015-01-01 Robert C. Swanson Memory dump without error containment loss
CN104579605B (zh) * 2013-10-23 2018-04-10 华为技术有限公司 一种数据传输方法及装置
US9325449B2 (en) 2013-12-06 2016-04-26 Intel Corporation Lane error detection and lane removal mechanism to reduce the probability of data corruption
US9397792B2 (en) 2013-12-06 2016-07-19 Intel Corporation Efficient link layer retry protocol utilizing implicit acknowledgements
US9306863B2 (en) * 2013-12-06 2016-04-05 Intel Corporation Link transfer, bit error detection and link retry using flit bundles asynchronous to link fabric packets
JP6221717B2 (ja) * 2013-12-12 2017-11-01 富士通株式会社 ストレージ装置、ストレージシステム及びデータ管理プログラム
KR101874726B1 (ko) 2013-12-26 2018-07-04 인텔 코포레이션 Pci 익스프레스 강화
JP6461959B2 (ja) * 2013-12-26 2019-01-30 インテル コーポレイション マルチチップパッケージリンク
US9594719B2 (en) 2014-02-03 2017-03-14 Valens Semiconductor Ltd. Seamless addition of high bandwidth lanes
US9628382B2 (en) 2014-02-05 2017-04-18 Intel Corporation Reliable transport of ethernet packet data with wire-speed and packet data rate match
CN105095147B (zh) * 2014-05-21 2018-03-13 华为技术有限公司 片上网络的Flit传输方法及装置
RU2608881C2 (ru) 2014-05-28 2017-01-25 Общество С Ограниченной Ответственностью "Яндекс" Способ и система для управления турборежимом
US9747048B2 (en) 2014-06-02 2017-08-29 Micron Technology, Inc. Systems and methods for packing data in a scalable memory system protocol
US9619214B2 (en) 2014-08-13 2017-04-11 International Business Machines Corporation Compiler optimizations for vector instructions
US9571465B1 (en) 2014-09-18 2017-02-14 Amazon Technologies, Inc. Security verification by message interception and modification
US9904645B2 (en) * 2014-10-31 2018-02-27 Texas Instruments Incorporated Multicore bus architecture with non-blocking high performance transaction credit system
US9665505B2 (en) 2014-11-14 2017-05-30 Cavium, Inc. Managing buffered communication between sockets
US10082538B2 (en) 2014-11-14 2018-09-25 Cavium, Inc. Testbench builder, system, device and method
US9870328B2 (en) * 2014-11-14 2018-01-16 Cavium, Inc. Managing buffered communication between cores
US20160173398A1 (en) 2014-12-12 2016-06-16 Intel Corporation Method, Apparatus And System For Encoding Command Information In a Packet-Based Network
US9921768B2 (en) * 2014-12-18 2018-03-20 Intel Corporation Low power entry in a shared memory link
US9444551B2 (en) * 2014-12-19 2016-09-13 Intel Corporation High performance optical repeater
US9632862B2 (en) 2014-12-20 2017-04-25 Intel Corporation Error handling in transactional buffered memory
US9740646B2 (en) * 2014-12-20 2017-08-22 Intel Corporation Early identification in transactional buffered memory
US10025746B2 (en) * 2014-12-20 2018-07-17 Intel Corporation High performance interconnect
US9785556B2 (en) * 2014-12-23 2017-10-10 Intel Corporation Cross-die interface snoop or global observation message ordering
US20160188519A1 (en) * 2014-12-27 2016-06-30 Intel Corporation Method, apparatus, system for embedded stream lanes in a high-performance interconnect
CN104536929A (zh) * 2015-01-14 2015-04-22 浪潮(北京)电子信息产业有限公司 一种物理层初始化方法及客户端
US9998434B2 (en) * 2015-01-26 2018-06-12 Listat Ltd. Secure dynamic communication network and protocol
US9946676B2 (en) * 2015-03-26 2018-04-17 Intel Corporation Multichip package link
US20160285624A1 (en) * 2015-03-26 2016-09-29 Intel Corporation Pseudorandom bit sequences in an interconnect
US9639276B2 (en) * 2015-03-27 2017-05-02 Intel Corporation Implied directory state updates
US9619396B2 (en) * 2015-03-27 2017-04-11 Intel Corporation Two level memory full line writes
US10282315B2 (en) 2015-03-27 2019-05-07 Cavium, Llc Software assisted hardware configuration for software defined network system-on-chip
US9720838B2 (en) 2015-03-27 2017-08-01 Intel Corporation Shared buffered memory routing
US9760515B2 (en) 2015-04-06 2017-09-12 Qualcomm Incorporated Shared control of a phase locked loop (PLL) for a multi-port physical layer (PHY)
US10417128B2 (en) 2015-05-06 2019-09-17 Oracle International Corporation Memory coherence in a multi-core, multi-level, heterogeneous computer architecture implementing hardware-managed and software managed caches
US20160353357A1 (en) * 2015-05-27 2016-12-01 Qualcomm Incorporated Methods and systems for multiplexed communication in dense wireless environments
WO2016197345A1 (zh) * 2015-06-10 2016-12-15 华为技术有限公司 一种信号传输方法、控制器和信号传输系统
US9697145B2 (en) * 2015-06-12 2017-07-04 Apple Inc. Memory interface system
US20160371222A1 (en) * 2015-06-22 2016-12-22 Qualcomm Incorporated COHERENCY DRIVEN ENHANCEMENTS TO A PERIPHERAL COMPONENT INTERCONNECT (PCI) EXPRESS (PCIe) TRANSACTION LAYER
US10089275B2 (en) 2015-06-22 2018-10-02 Qualcomm Incorporated Communicating transaction-specific attributes in a peripheral component interconnect express (PCIe) system
KR102485999B1 (ko) * 2015-07-01 2023-01-06 삼성전자주식회사 마스터-사이드 필터를 포함하는 캐시 코히런트 시스템과 이를 포함하는 데이터 처리 시스템
US9692589B2 (en) 2015-07-17 2017-06-27 Intel Corporation Redriver link testing
EP3329381B1 (de) * 2015-07-30 2020-02-26 Valens Semiconductor Ltd. Nahtlose zugabe von spuren mit hoher bandbreite
JP6674085B2 (ja) * 2015-08-12 2020-04-01 富士通株式会社 演算処理装置及び演算処理装置の制御方法
US9990291B2 (en) * 2015-09-24 2018-06-05 Qualcomm Incorporated Avoiding deadlocks in processor-based systems employing retry and in-order-response non-retry bus coherency protocols
US20200244397A1 (en) * 2015-09-26 2020-07-30 Intel Corporation Stream identifier lane protection
US9720439B2 (en) 2015-09-26 2017-08-01 Intel Corporation Methods, apparatuses, and systems for deskewing link splits
CN107925507B (zh) * 2015-09-26 2021-05-11 英特尔公司 多芯片封装链路错误检测
WO2017052663A1 (en) * 2015-09-26 2017-03-30 Intel Corporation Valid lane training
WO2017052665A1 (en) * 2015-09-26 2017-03-30 Intel Corporation In-band margin probing on an operational interconnect
GB2543745B (en) * 2015-10-15 2018-07-04 Advanced Risc Mach Ltd An apparatus and method for operating a virtually indexed physically tagged cache
US10198384B2 (en) 2016-03-01 2019-02-05 Qorvo Us, Inc. One wire bus to RFFE translation system
US10128964B2 (en) 2016-03-10 2018-11-13 Qualcomm Incorporated Multiphase preamble data sequences for receiver calibration and mode data signaling
US9779028B1 (en) 2016-04-01 2017-10-03 Cavium, Inc. Managing translation invalidation
CN105933286B (zh) * 2016-04-05 2019-08-02 浪潮电子信息产业股份有限公司 一种验证协议的方法及装置
RU2643620C2 (ru) * 2016-05-11 2018-02-02 федеральное государственное автономное образовательное учреждение высшего образования "Санкт-Петербургский политехнический университет Петра Великого" (ФГАОУ ВО "СПбПУ") Способ планирования задач предобработки данных Интернета Вещей для систем анализа
US10713202B2 (en) * 2016-05-25 2020-07-14 Samsung Electronics Co., Ltd. Quality of service (QOS)-aware input/output (IO) management for peripheral component interconnect express (PCIE) storage system with reconfigurable multi-ports
US10503641B2 (en) * 2016-05-31 2019-12-10 Advanced Micro Devices, Inc. Cache coherence for processing in memory
US11144691B2 (en) * 2016-06-02 2021-10-12 Siemens Industry Software Inc. Virtual Ethernet mutable port group transactor
TWI613547B (zh) * 2016-06-16 2018-02-01 新漢股份有限公司 具有pci-e增強器的電腦系統,及其pci-e增強器的設定方法
US10103837B2 (en) * 2016-06-23 2018-10-16 Advanced Micro Devices, Inc. Asynchronous feedback training
US10484361B2 (en) * 2016-06-30 2019-11-19 Intel Corporation Systems, methods, and apparatuses for implementing a virtual device observation and debug network for high speed serial IOS
US10303605B2 (en) * 2016-07-20 2019-05-28 Intel Corporation Increasing invalid to modified protocol occurrences in a computing system
US10929059B2 (en) 2016-07-26 2021-02-23 MemRay Corporation Resistance switching memory-based accelerator
US10379904B2 (en) * 2016-08-31 2019-08-13 Intel Corporation Controlling a performance state of a processor using a combination of package and thread hint information
RU2016137176A (ru) * 2016-09-16 2018-03-19 Оракл Интернэйшнл Корпорейшн Связывание преобразованного исходного кода с первоначальным исходным кодом с помощью метаданных
US10255181B2 (en) * 2016-09-19 2019-04-09 Qualcomm Incorporated Dynamic input/output coherency
US10936045B2 (en) 2016-09-26 2021-03-02 Hewlett-Packard Development Company, L.P. Update memory management information to boot an electronic device from a reduced power mode
US10846258B2 (en) * 2016-09-30 2020-11-24 Intel Corporation Voltage modulated control lane
US10152446B2 (en) * 2016-10-01 2018-12-11 Intel Corporation Link-physical layer interface adapter
CN108121842B (zh) * 2016-11-30 2021-04-27 深圳市中兴微电子技术有限公司 多处理器系统芯片的低功耗工作方式的验证方法和装置
CN106527576A (zh) * 2016-12-01 2017-03-22 郑州云海信息技术有限公司 一种pcie设备的时钟分离设计方法和系统
CN108170370B (zh) 2016-12-07 2021-01-26 慧荣科技股份有限公司 数据储存装置与数据传输速率控制方法
TWI610179B (zh) 2016-12-07 2018-01-01 慧榮科技股份有限公司 主機裝置與資料傳輸速率控制方法
TWI633777B (zh) * 2016-12-13 2018-08-21 威盛電子股份有限公司 傳輸介面晶片以及其測試方法
KR20180071598A (ko) 2016-12-20 2018-06-28 주식회사 포스코 중장비 위치 추적 시스템
KR101946135B1 (ko) * 2017-01-11 2019-02-08 울산과학기술원 비휘발성 메모리를 이용하는 데이터베이스 관리 시스템 및 방법
US11159636B2 (en) * 2017-02-08 2021-10-26 Arm Limited Forwarding responses to snoop requests
US11182315B2 (en) * 2017-02-10 2021-11-23 Intel Corporation Apparatuses, methods, and systems for hardware control of processor performance levels
US10572434B2 (en) 2017-02-27 2020-02-25 International Business Machines Corporation Intelligent certificate discovery in physical and virtualized networks
US10784986B2 (en) 2017-02-28 2020-09-22 Intel Corporation Forward error correction mechanism for peripheral component interconnect-express (PCI-e)
CN107491407B (zh) * 2017-07-03 2019-07-12 西安空间无线电技术研究所 基于fpga内serdes的自适应高速传输系统
US11030126B2 (en) * 2017-07-14 2021-06-08 Intel Corporation Techniques for managing access to hardware accelerator memory
US11249808B2 (en) * 2017-08-22 2022-02-15 Intel Corporation Connecting accelerator resources using a switch
CN107678854A (zh) * 2017-08-31 2018-02-09 郑州云海信息技术有限公司 一种解决计算机缓存一致性冲突的方法
US10474611B2 (en) 2017-09-19 2019-11-12 International Business Machines Corporation Aligning received bad data indicators (BDIS) with received data on a cross-chip link
CN107589698B (zh) * 2017-09-20 2021-05-25 友达光电股份有限公司 应用于物联网中的感测装置及控制方法
US20190095273A1 (en) * 2017-09-27 2019-03-28 Qualcomm Incorporated Parity bits location on i3c multilane bus
US10963035B2 (en) * 2017-10-11 2021-03-30 Qualcomm Incorporated Low power PCIe
WO2019100238A1 (zh) * 2017-11-22 2019-05-31 深圳市大疆创新科技有限公司 一种断链恢复的方法及飞行器
CN107894963B (zh) * 2017-11-27 2021-07-27 上海兆芯集成电路有限公司 用于系统单芯片的通信控制器与通信方法
US10466911B2 (en) * 2017-12-18 2019-11-05 Western Digital Technologies, Inc. Method using logical based addressing for latency reduction
US10853212B2 (en) * 2018-01-08 2020-12-01 Intel Corporation Cross-talk generation in a multi-lane link during lane testing
WO2019140049A1 (en) 2018-01-10 2019-07-18 Lumeova, Inc. Method, devices and system for wireless communication channels fso
US20190227971A1 (en) * 2018-01-23 2019-07-25 Qualcomm Incorporated Architecture for consolidating multiple sources of low-bandwidth data over a serial bus
US20190294777A1 (en) * 2018-03-26 2019-09-26 Lenovo Enterprise Solutions (Singapore) Pte. Ltd. Systems and methods for managing access to host computing devices by external devices
US10534881B2 (en) * 2018-04-10 2020-01-14 Advanced Micro Devices, Inc. Method of debugging a processor
US20190042455A1 (en) * 2018-05-04 2019-02-07 Intel Corporation Globally addressable memory for devices linked to hosts
CN108563510B (zh) * 2018-05-04 2021-07-13 湖南大学 面向e级计算的体系结构感知优化方法
US20190356412A1 (en) * 2018-05-16 2019-11-21 Qualcomm Incorporated Fast termination of multilane double data rate transactions
CN108762747B (zh) * 2018-05-30 2022-02-18 郑州云海信息技术有限公司 数据处理方法以及计算机设备
WO2019237130A1 (en) * 2018-06-04 2019-12-12 Lightfleet Corporation Routing and control protocol for high-performance interconnect fabrics
CN110609866B (zh) * 2018-06-15 2023-08-11 伊姆西Ip控股有限责任公司 用于协商事务的方法、设备和计算机程序产品
US10693589B2 (en) * 2018-06-18 2020-06-23 Huawei Technologies Co., Ltd. Serdes with jitter injection self stress mechanism
US11301160B2 (en) * 2018-06-20 2022-04-12 Genesys Telecommunications Laboratories, Inc. System and method for a replication protocol in a real-time statistical engine
CN109144943A (zh) * 2018-06-26 2019-01-04 深圳市安信智控科技有限公司 基于高速串行通道互连的计算芯片与存储器芯片组合系统
GB2575294B8 (en) * 2018-07-04 2022-07-20 Graphcore Ltd Host Proxy On Gateway
US10841355B2 (en) * 2018-07-13 2020-11-17 Apple Inc. Methods and apparatus for streaming media conversion with reduced buffering memories
US10541841B1 (en) * 2018-09-13 2020-01-21 Advanced Micro Devices, Inc. Hardware transmit equalization for high speed
CN109558122B (zh) * 2018-11-29 2022-08-19 湖南国科微电子股份有限公司 一种提升物理层兼容性的系统与方法
US10761939B1 (en) * 2018-12-13 2020-09-01 Amazon Technologies, Inc. Powering-down or rebooting a device in a system fabric
TWI706257B (zh) * 2018-12-13 2020-10-01 新唐科技股份有限公司 匯流排系統
US10771189B2 (en) * 2018-12-18 2020-09-08 Intel Corporation Forward error correction mechanism for data transmission across multi-lane links
KR102165860B1 (ko) * 2018-12-31 2020-10-14 성균관대학교산학협력단 슬로티드 페이지의 더블 헤더 로깅 방법 및 데이터베이스 장치
US10599601B1 (en) 2019-01-16 2020-03-24 Qorvo Us, Inc. Single-wire bus (SuBUS) slave circuit and related apparatus
US11099991B2 (en) 2019-01-24 2021-08-24 Vmware, Inc. Programming interfaces for accurate dirty data tracking
US11068400B2 (en) * 2019-01-24 2021-07-20 Vmware, Inc. Failure-atomic logging for persistent memory systems with cache-coherent FPGAs
KR20210119422A (ko) 2019-01-31 2021-10-05 텍트로닉스 인코포레이티드 고속 입력/출력 마진 테스팅을 위한 시스템, 방법 및 디바이스
US11940483B2 (en) 2019-01-31 2024-03-26 Tektronix, Inc. Systems, methods and devices for high-speed input/output margin testing
US10713209B2 (en) 2019-02-08 2020-07-14 Intel Corporation Recalibration of PHY circuitry for the PCI Express (PIPE) interface based on using a message bus interface
US10802966B2 (en) * 2019-02-14 2020-10-13 International Business Machines Corporation Simultaneous, non-atomic request processing within an SMP environment broadcast scope for multiply-requested data elements using real-time parallelization
US11637657B2 (en) 2019-02-15 2023-04-25 Intel Corporation Low-latency forward error correction for high-speed serial links
US11099905B2 (en) 2019-02-26 2021-08-24 International Business Machines Corporation Efficient remote resource allocation within an SMP broadcast scope maintaining fairness between operation types
US11249837B2 (en) 2019-03-01 2022-02-15 Intel Corporation Flit-based parallel-forward error correction and parity
WO2020180300A1 (en) * 2019-03-05 2020-09-10 Mentor Graphics Corporation Machine learning-based anomaly detections for embedded software applications
CN109947551B (zh) * 2019-03-19 2021-04-23 中南大学 一种多轮次任务分配方法、边缘计算系统及其存储介质
US11055221B2 (en) * 2019-03-22 2021-07-06 Samsung Electronics Co., Ltd. Speculative DRAM read, in parallel with cache level search, leveraging interconnect directory
EP3723345A1 (de) * 2019-04-10 2020-10-14 ABB Schweiz AG Aggregationsserver und verfahren zur weiterleitung von knotendaten
US10698842B1 (en) * 2019-04-10 2020-06-30 Xilinx, Inc. Domain assist processor-peer for coherent acceleration
IT201900005822A1 (it) * 2019-04-15 2020-10-15 Phoenix Ict S R L S Adattore di periferiche general purpose per computer
US11119958B2 (en) 2019-04-18 2021-09-14 Qorvo Us, Inc. Hybrid bus apparatus
US11226924B2 (en) 2019-04-24 2022-01-18 Qorvo Us, Inc. Single-wire bus apparatus supporting slave-initiated operation in a master circuit
CN110138761B (zh) * 2019-05-09 2021-10-15 豪威触控与显示科技(深圳)有限公司 基于mipi协议的设备间通信方法及设备拓扑结构
US11296994B2 (en) 2019-05-13 2022-04-05 Intel Corporation Ordered sets for high-speed interconnects
JP7259537B2 (ja) * 2019-05-16 2023-04-18 オムロン株式会社 情報処理装置
US10802967B1 (en) * 2019-06-28 2020-10-13 Intel Corporation Partial write management in a multi-tiled compute engine
US11144469B2 (en) * 2019-07-02 2021-10-12 Microsoft Technology Licensing, Llc Per-tenant incremental outward distributed proactive caching
US11444829B2 (en) 2019-09-09 2022-09-13 Intel Corporation Link layer communication by multiple link layer encodings for computer buses
US11271860B1 (en) * 2019-11-15 2022-03-08 Xilinx, Inc. Compressed tag coherency messaging
US11967985B2 (en) * 2019-11-20 2024-04-23 Mitsubishi Electric Corporation Optical communication device and communication system
US11740958B2 (en) 2019-11-27 2023-08-29 Intel Corporation Multi-protocol support on common physical layer
RU2738955C1 (ru) * 2019-11-27 2020-12-21 Федеральное государственное бюджетное образовательное учреждение высшего образования "Томский государственный университет систем управления и радиоэлектроники" (ТУСУР) Способ трёхкратного резервирования межсоединений
US10983942B1 (en) 2019-12-11 2021-04-20 Qorvo Us, Inc. Multi-master hybrid bus apparatus
US11132321B2 (en) * 2020-02-26 2021-09-28 Quanta Computer Inc. Method and system for automatic bifurcation of PCIe in BIOS
WO2021174223A1 (en) * 2020-02-28 2021-09-02 Riera Michael F C2mpi: a hardware-agnostic message passing interface for heterogeneous computing systems
US11115176B1 (en) * 2020-03-04 2021-09-07 Qualcomm Incorporated System and method for adjusting clock-data timing in a multi-lane data communication link
US11126585B1 (en) 2020-03-09 2021-09-21 Western Digital Technologies, Inc. Data storage device with improved interface transmitter training
US11886312B2 (en) 2020-04-07 2024-01-30 Intel Corporation Characterizing error correlation based on error logging for computer buses
CN111400232B (zh) * 2020-04-10 2024-01-16 芯启源(上海)半导体科技有限公司 一种基于数据位宽展开的scramble与descramble硬件实现方法
US11288225B2 (en) 2020-04-14 2022-03-29 Western Digital Technologies, Inc. Adapting transmitter training behavior based upon assumed identity of training partner
US11309013B2 (en) 2020-04-29 2022-04-19 Samsung Electronics Co., Ltd. Memory device for reducing resources used for training
US11513981B2 (en) * 2020-04-29 2022-11-29 Dell Products L.P. PCIe link management without sideband signals
LU101767B1 (en) * 2020-05-05 2021-11-05 Microsoft Technology Licensing Llc Recording a memory value trace for use with a separate cache coherency protocol trace
US11586446B1 (en) * 2020-05-20 2023-02-21 Marvell Asia Pte Ltd System and methods for hardware-based PCIe link up based on post silicon characterization
US11263137B2 (en) * 2020-05-27 2022-03-01 Arm Limited Core-to-core cache stashing and target discovery
EP4158486A4 (de) * 2020-05-29 2024-07-10 Netlist Inc Rechnerspeichererweiterungsvorrichtung und betriebsverfahren
US20210013999A1 (en) * 2020-06-04 2021-01-14 Intel Corporation Latency-Optimized Mechanisms for Handling Errors or Mis-Routed Packets for Computer Buses
IL298759A (en) * 2020-06-05 2023-02-01 Schwaderer William David Methods and systems for encrypting shapeshifting data
KR102254337B1 (ko) * 2020-06-22 2021-05-21 한양대학교 산학협력단 Dc-밸런싱을 고려한 pam4 5b3q 코딩 방법 및 장치
US11360906B2 (en) * 2020-08-14 2022-06-14 Alibaba Group Holding Limited Inter-device processing system with cache coherency
US11580044B2 (en) * 2020-08-31 2023-02-14 Micron Technology, Inc. Network credit return mechanisms
US11588745B2 (en) 2020-08-31 2023-02-21 Micron Technology, Inc. Early credit return for credit-based flow control
US11362939B2 (en) 2020-08-31 2022-06-14 Micron Technology, Inc. Flow control for a multiple flow control unit interface
CN112134859B (zh) * 2020-09-09 2021-07-06 上海沈德医疗器械科技有限公司 一种基于arm架构的聚焦超声治疗设备控制方法
DE102021121105A1 (de) * 2020-09-28 2022-03-31 Samsung Electronics Co., Ltd. Intelligente ablagespeichervorrichtung
TWI783293B (zh) * 2020-11-09 2022-11-11 瑞昱半導體股份有限公司 訊號傳輸裝置識別方法與訊號處理系統
US11409677B2 (en) 2020-11-11 2022-08-09 Qorvo Us, Inc. Bus slave circuit and related single-wire bus apparatus
US11489695B2 (en) 2020-11-24 2022-11-01 Qorvo Us, Inc. Full-duplex communications over a single-wire bus
TWI809570B (zh) 2020-11-24 2023-07-21 美商泰克特洛尼克斯公司 用於高速輸入/輸出裕度測試的系統、方法和裝置
CN112579479B (zh) * 2020-12-07 2022-07-08 成都海光微电子技术有限公司 在维护缓存一致性时维护事务次序的处理器及其方法
US20220182098A1 (en) * 2020-12-09 2022-06-09 Texas Instruments Incorporated Low power digital modes for duty-cycled integrated transceivers
US11636037B2 (en) 2020-12-21 2023-04-25 Nxp Usa, Inc. Methods and apparatuses involving radar system data paths
CN112953556A (zh) * 2021-02-05 2021-06-11 南京大学 基于斐波那契数列的抗串扰互联的编解码器及编码方法
CN112631989A (zh) * 2021-03-08 2021-04-09 南京蓝洋智能科技有限公司 一种小芯片间、芯片间、小芯片与芯片间的数据传输方法
US11431649B1 (en) * 2021-03-26 2022-08-30 Arm Limited Interconnect resource allocation
CN113019479A (zh) * 2021-03-31 2021-06-25 中国人民解放军空军军医大学 一种用于模拟井下工作环境的试验箱
IT202100008723A1 (it) 2021-04-08 2022-10-08 Phoenix ICT Sistema per la gestione in sicurezza dei documenti digitali
KR102518317B1 (ko) 2021-04-13 2023-04-06 에스케이하이닉스 주식회사 PCIe 인터페이스 장치 및 그 동작 방법
KR102668564B1 (ko) 2021-06-01 2024-05-24 에스케이하이닉스 주식회사 PCIe 인터페이스 장치 및 그 동작 방법
US20220327074A1 (en) * 2021-04-13 2022-10-13 SK Hynix Inc. PERIPHERAL COMPONENT INTERCONNECT EXPRESS (PCIe) SYSTEM AND METHOD OF OPERATING THE SAME
US11789658B2 (en) 2021-04-13 2023-10-17 SK Hynix Inc. Peripheral component interconnect express (PCIe) interface system and method of operating the same
TWI773395B (zh) * 2021-06-22 2022-08-01 慧榮科技股份有限公司 記憶體控制器與連結識別方法
CN113971143B (zh) * 2021-10-22 2023-12-05 展讯半导体(成都)有限公司 一种内存控制器、物联网芯片及电子设备
US11755494B2 (en) 2021-10-29 2023-09-12 Advanced Micro Devices, Inc. Cache line coherence state downgrade
US11706048B1 (en) 2021-12-16 2023-07-18 Qorvo Us, Inc. Multi-protocol bus circuit
CN114510268B (zh) * 2021-12-24 2022-09-20 中国人民解放军战略支援部队航天工程大学 一种基于gpu实现下变频中单精度浮点数累积误差控制方法
US20220342840A1 (en) * 2021-12-30 2022-10-27 Intel Corporation Die-to-die interconnect
US20220327084A1 (en) * 2021-12-30 2022-10-13 Intel Corporation Die-to-die interconnect protocol layer
US11907132B2 (en) 2022-03-23 2024-02-20 International Business Machines Corporation Final cache directory state indication
US11726660B1 (en) * 2022-04-15 2023-08-15 Dell Products L.P. Techniques for flexible physical drive expansion using a loop back connection
WO2023205316A1 (en) * 2022-04-22 2023-10-26 Western Digital Technologies, Inc. Reducing link up time in pcie systems
CN114942814B (zh) * 2022-06-01 2023-07-11 咪咕视讯科技有限公司 页面组件的聚焦方法、系统、终端设备及介质
US11880686B2 (en) * 2022-06-16 2024-01-23 Ampere Computing Llc Devices transferring cache lines, including metadata on external links
CN115238619B (zh) * 2022-09-20 2023-06-27 北京数字光芯集成电路设计有限公司 数字芯片的子模块后仿真方法和系统
US11914473B1 (en) * 2022-10-20 2024-02-27 Micron Technology, Inc. Data recovery using ordered data requests

Family Cites Families (271)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4228496A (en) 1976-09-07 1980-10-14 Tandem Computers Incorporated Multiprocessor system
US4191941A (en) 1978-04-03 1980-03-04 Rca Corporation Switch matrix for data transfers
US4716523A (en) 1985-06-14 1987-12-29 International Business Machines Corporation Multiple port integrated DMA and interrupt controller and arbitrator
US5537640A (en) * 1988-12-30 1996-07-16 Intel Corporation Asynchronous modular bus architecture with cache consistency
NZ232223A (en) * 1989-01-27 1993-03-26 British Telecomm Alternate burst communication for cordless phones re-established after channel failure
US4959833A (en) * 1989-03-08 1990-09-25 Ics Electronics Corporation Data transmission method and bus extender
CA2045756C (en) * 1990-06-29 1996-08-20 Gregg Bouchard Combined queue for invalidates and return data in multiprocessor system
WO1992006436A2 (en) * 1990-10-03 1992-04-16 Thinking Machines Corporation Parallel computer system
US5222062A (en) 1991-10-03 1993-06-22 Compaq Computer Corporation Expandable communication system with automatic data concentrator detection
US5434993A (en) * 1992-11-09 1995-07-18 Sun Microsystems, Inc. Methods and apparatus for creating a pending write-back controller for a cache controller on a packet switched memory bus employing dual directories
EP0600626A1 (de) * 1992-11-13 1994-06-08 Cyrix Corporation Kohärenz eines Nachschreibcachespeicher in einem für Durchschreibcachespeicher bestimmten System
US5325360A (en) * 1992-12-09 1994-06-28 National Semiconductor Corporation Controllable PCM state machine user interface
US5394555A (en) * 1992-12-23 1995-02-28 Bull Hn Information Systems Inc. Multi-node cluster computer system incorporating an external coherency unit at each node to insure integrity of information stored in a shared, distributed memory
US5432775A (en) 1993-12-03 1995-07-11 Advanced Micro Devices, Inc. Auto negotiation system for a communications network
US5551005A (en) * 1994-02-25 1996-08-27 Intel Corporation Apparatus and method of handling race conditions in mesi-based multiprocessor system with private caches
US5572703A (en) * 1994-03-01 1996-11-05 Intel Corporation Method and apparatus for snoop stretching using signals that convey snoop results
US5383143A (en) 1994-03-30 1995-01-17 Motorola, Inc. Self re-seeding linear feedback shift register (LFSR) data processing system for generating a pseudo-random test bit stream and method of operation
EP0706138A1 (de) * 1994-10-03 1996-04-10 International Business Machines Corporation Abwechselnde Datengültigkeitssteuerungssignale für Hochgeschwindigkeitsdatenübertragung
EP0707269A1 (de) * 1994-10-11 1996-04-17 International Business Machines Corporation Cachespeicherkohärenznetzwerk für Multiprozessor-Datenverarbeitungssystem
EP0735480B1 (de) * 1995-03-31 2003-06-04 Sun Microsystems, Inc. Cache-kohärentes Computersystem, das Entwertungs- und Rückschreiboperationen minimiert
DE69616402T2 (de) * 1995-03-31 2002-07-18 Sun Microsystems Inc Schnelle Zweitor-Cachesteuerungsschaltung für Datenprozessoren in einem paketvermittelten cachekohärenten Multiprozessorsystem
US5898826A (en) * 1995-11-22 1999-04-27 Intel Corporation Method and apparatus for deadlock-free routing around an unusable routing component in an N-dimensional network
US5983326A (en) * 1996-07-01 1999-11-09 Sun Microsystems, Inc. Multiprocessing system including an enhanced blocking mechanism for read-to-share-transactions in a NUMA mode
CN1179043A (zh) * 1996-09-20 1998-04-15 摩托罗拉公司 Tdm/tdma系统中离散可变的时隙宽度
US5991819A (en) * 1996-12-03 1999-11-23 Intel Corporation Dual-ported memory controller which maintains cache coherency using a memory line status table
US6249520B1 (en) * 1997-10-24 2001-06-19 Compaq Computer Corporation High-performance non-blocking switch with multiple channel ordering constraints
US6052760A (en) * 1997-11-05 2000-04-18 Unisys Corporation Computer system including plural caches and utilizing access history or patterns to determine data ownership for efficient handling of software locks
US5987056A (en) * 1997-11-13 1999-11-16 Lsi Logic Corporation PN sequence hopping method and system
US6163608A (en) * 1998-01-09 2000-12-19 Ericsson Inc. Methods and apparatus for providing comfort noise in communications systems
US6141733A (en) * 1998-02-17 2000-10-31 International Business Machines Corporation Cache coherency protocol with independent implementation of optimized cache operations
US6334172B1 (en) * 1998-02-17 2001-12-25 International Business Machines Corporation Cache coherency protocol with tagged state for modified values
US6345339B1 (en) * 1998-02-17 2002-02-05 International Business Machines Corporation Pseudo precise I-cache inclusivity for vertical caches
US6631448B2 (en) * 1998-03-12 2003-10-07 Fujitsu Limited Cache coherence unit for interconnecting multiprocessor nodes having pipelined snoopy protocol
US7471075B2 (en) 1998-04-17 2008-12-30 Unique Technologies, Llc Multi-test Arc fault circuit interrupter tester
ES2194287T3 (es) * 1998-09-30 2003-11-16 Cit Alcatel Metodo y disposicion para transicion entre un estado de baja potencia y un estado de plena otencia en un sistema de comunicacion.
GB2342823B (en) * 1998-10-16 2000-11-29 Marconi Comm Ltd Communication system
US6526481B1 (en) * 1998-12-17 2003-02-25 Massachusetts Institute Of Technology Adaptive cache coherence protocols
US6393529B1 (en) * 1998-12-21 2002-05-21 Advanced Micro Devices, Inc. Conversation of distributed memory bandwidth in multiprocessor system with cache coherency by transmitting cancel subsequent to victim write
US6556634B1 (en) * 1999-02-10 2003-04-29 Ericsson, Inc. Maximum likelihood rake receiver for use in a code division, multiple access wireless communication system
US6185250B1 (en) * 1999-03-10 2001-02-06 Lucent Technologies Inc. Training of level learning modems
AU5161900A (en) 1999-05-28 2000-12-18 Afx Technology Group International, Inc. Wireless transceiver network employing node-to-node data messaging
US6487621B1 (en) * 1999-08-17 2002-11-26 Compaq Information Technologies Group, L.P. Architecture, system and method for ensuring an ordered transaction on at least one of a plurality of multi-processor buses that experience a hit-to-modified snoop cycle
KR100566289B1 (ko) * 1999-09-03 2006-03-30 삼성전자주식회사 데이타 링크 맵을 이용한 브이5.2 계층 2의 비활성화 제어 방법 및 장치
US7010607B1 (en) * 1999-09-15 2006-03-07 Hewlett-Packard Development Company, L.P. Method for training a communication link between ports to correct for errors
US6754185B1 (en) * 1999-09-27 2004-06-22 Koninklijke Philips Electronics N.V. Multi link layer to single physical layer interface in a node of a data communication system
US6751698B1 (en) * 1999-09-29 2004-06-15 Silicon Graphics, Inc. Multiprocessor node controller circuit and method
US6674720B1 (en) * 1999-09-29 2004-01-06 Silicon Graphics, Inc. Age-based network arbitration system and method
US6763034B1 (en) * 1999-10-01 2004-07-13 Stmicroelectronics, Ltd. Connection ports for interconnecting modules in an integrated circuit
US6320406B1 (en) 1999-10-04 2001-11-20 Texas Instruments Incorporated Methods and apparatus for a terminated fail-safe circuit
US6665832B1 (en) * 2000-03-31 2003-12-16 Qualcomm, Incorporated Slotted mode decoder state metric initialization
US6961347B1 (en) * 2000-06-20 2005-11-01 Hewlett-Packard Development Company, L.P. High-speed interconnection link having automated lane reordering
US6865231B1 (en) * 2000-06-20 2005-03-08 Hewlett-Packard Development Company, L.P. High-speed interconnection adapter having automated crossed differential pair correction
US7124252B1 (en) * 2000-08-21 2006-10-17 Intel Corporation Method and apparatus for pipelining ordered input/output transactions to coherent memory in a distributed memory, cache coherent, multi-processor system
US6668335B1 (en) 2000-08-31 2003-12-23 Hewlett-Packard Company, L.P. System for recovering data in a multiprocessor system comprising a conduction path for each bit between processors where the paths are grouped into separate bundles and routed along different paths
US6892319B2 (en) * 2000-09-08 2005-05-10 Hewlett-Packard Development Company, L.P. Method for verifying abstract memory models of shared memory multiprocessors
US7327754B2 (en) 2000-09-28 2008-02-05 Teridian Semiconductor, Corp. Apparatus and method for freezing the states of a receiver during silent line state operation of a network device
US7596139B2 (en) * 2000-11-17 2009-09-29 Foundry Networks, Inc. Backplane interface adapter with error control and redundant fabric
US7236490B2 (en) * 2000-11-17 2007-06-26 Foundry Networks, Inc. Backplane interface adapter
EP1211837A1 (de) * 2000-12-04 2002-06-05 Telefonaktiebolaget Lm Ericsson Ungleicher Fehlerschutz in ein Paketübertragungssystem
EP1217613A1 (de) * 2000-12-19 2002-06-26 Koninklijke Philips Electronics N.V. Wiederherstellung von schlechten oder fehlenden Rahmen in zellularer Telefonie
US6859864B2 (en) * 2000-12-29 2005-02-22 Intel Corporation Mechanism for initiating an implicit write-back in response to a read or snoop of a modified cache line
US20020161975A1 (en) * 2001-02-23 2002-10-31 Zilavy Daniel V. Cache to cache copying of clean data
US7231500B2 (en) * 2001-03-22 2007-06-12 Sony Computer Entertainment Inc. External data interface in a computer architecture for broadband networks
US6987947B2 (en) 2001-10-30 2006-01-17 Unwired Technology Llc Multiple channel wireless communication system
US20030093632A1 (en) * 2001-11-12 2003-05-15 Intel Corporation Method and apparatus for sideband read return header in memory interconnect
US6941425B2 (en) * 2001-11-12 2005-09-06 Intel Corporation Method and apparatus for read launch optimizations in memory interconnect
US7227845B2 (en) * 2001-12-11 2007-06-05 Motorola, Inc. Method and apparatus for enabling a communication resource reset
US7117311B1 (en) * 2001-12-19 2006-10-03 Intel Corporation Hot plug cache coherent interface method and apparatus
US7030737B2 (en) 2002-03-01 2006-04-18 Hewlett-Packard Development Company, L.P. Apparatus, system, and method for indicating a level of network activity
US7200186B2 (en) 2002-03-14 2007-04-03 Intel Corporation Methods and apparatus for reducing power usage of a transmitter and receiver coupled via a differential serial data link
US7334047B1 (en) * 2002-03-18 2008-02-19 Cisco Technology, Inc. Method and system for selective link state advertisement blocking over a data network area
US7653790B2 (en) * 2002-05-13 2010-01-26 Glasco David B Methods and apparatus for responding to a request cluster
US7020729B2 (en) * 2002-05-16 2006-03-28 Intel Corporation Protocol independent data transmission interface
US6973545B2 (en) * 2002-06-28 2005-12-06 Sun Microsystems, Inc. System with a directory based coherency protocol and split ownership and access right coherence mechanism
US20040028074A1 (en) * 2002-07-26 2004-02-12 Gary Huff Physical layer device with line state encoding
US7093172B2 (en) * 2002-08-07 2006-08-15 Broadcom Corporation System and method for determining on-chip bit error rate (BER) in a communication system
US8037224B2 (en) * 2002-10-08 2011-10-11 Netlogic Microsystems, Inc. Delegating network processor operations to star topology serial bus interfaces
US7720135B2 (en) * 2002-11-07 2010-05-18 Intel Corporation System, method and device for autonegotiation
US7505486B2 (en) * 2002-11-19 2009-03-17 Hewlett-Packard Development Company, L.P. Degradable network data path transmission scheme
US7203853B2 (en) * 2002-11-22 2007-04-10 Intel Corporation Apparatus and method for low latency power management on a serial data link
US20040174570A1 (en) 2002-12-02 2004-09-09 Plunkett Richard Thomas Variable size dither matrix usage
US6892283B2 (en) * 2002-12-05 2005-05-10 International Business Machines Corporation High speed memory cloner with extended cache coherency protocols and responses
US7525989B2 (en) * 2002-12-16 2009-04-28 Intel Corporation System, method and device for time slot status messaging among SONET nodes
US6922756B2 (en) * 2002-12-19 2005-07-26 Intel Corporation Forward state for use in cache coherency in a multiprocessor system
US7047475B2 (en) * 2003-02-04 2006-05-16 Hewlett-Packard Development Company, L.P. CRC encoding scheme for conveying status information
US7535836B2 (en) * 2003-02-12 2009-05-19 Broadcom Corporation Method and system to provide word-level flow control using spare link bandwidth
GB2399722A (en) * 2003-03-21 2004-09-22 Sony Uk Ltd Data communication synchronisation
US7464307B2 (en) * 2003-03-25 2008-12-09 Intel Corporation High performance serial bus testing methodology
US7136953B1 (en) 2003-05-07 2006-11-14 Nvidia Corporation Apparatus, system, and method for bus link width optimization
US7426597B1 (en) * 2003-05-07 2008-09-16 Nvidia Corporation Apparatus, system, and method for bus link width optimization of a graphics system
US7792118B2 (en) * 2003-06-19 2010-09-07 Polytechnic University Switch module memory structure and per-destination queue flow control for use in a switch
US7577727B2 (en) * 2003-06-27 2009-08-18 Newisys, Inc. Dynamic multiple cluster system reconfiguration
US20050027876A1 (en) * 2003-07-29 2005-02-03 Toshitomo Umei Data transmission method, data transmission system, and data transmission apparatus
CN1320464C (zh) * 2003-10-23 2007-06-06 英特尔公司 用于维持共享高速缓存一致性的方法和设备
US7146284B2 (en) * 2003-11-07 2006-12-05 Texas Instruments Incorporated Method of testing phase lock loop status during a Serializer/Deserializer internal loopback built-in self-test
RU2341906C2 (ru) * 2003-11-12 2008-12-20 Квэлкомм Инкорпорейтед Интерфейс высокоскоростной передачи данных с улучшенным управлением соединением
US8090857B2 (en) * 2003-11-24 2012-01-03 Qualcomm Atheros, Inc. Medium access control layer that encapsulates data from a plurality of received data units into a plurality of independently transmittable blocks
US7440468B2 (en) * 2003-12-11 2008-10-21 International Business Machines Corporation Queue management of a global link control byte in an input/output subsystem
US8009563B2 (en) * 2003-12-19 2011-08-30 Broadcom Corporation Method and system for transmit scheduling for multi-layer network interface controller (NIC) operation
US7631118B2 (en) * 2003-12-31 2009-12-08 Intel Corporation Lane to lane deskewing via non-data symbol processing for a serial point to point link
JP4005974B2 (ja) * 2004-01-09 2007-11-14 株式会社東芝 通信装置、通信方法、および通信システム
US7856534B2 (en) * 2004-01-15 2010-12-21 Hewlett-Packard Development Company, L.P. Transaction references for requests in a multi-processor network
US8176259B2 (en) * 2004-01-20 2012-05-08 Hewlett-Packard Development Company, L.P. System and method for resolving transactions in a cache coherency protocol
US7620696B2 (en) * 2004-01-20 2009-11-17 Hewlett-Packard Development Company, L.P. System and method for conflict responses in a cache coherency protocol
US7177987B2 (en) * 2004-01-20 2007-02-13 Hewlett-Packard Development Company, L.P. System and method for responses between different cache coherency protocols
US20050172091A1 (en) * 2004-01-29 2005-08-04 Rotithor Hemant G. Method and an apparatus for interleaving read data return in a packetized interconnect to memory
US20050240734A1 (en) * 2004-04-27 2005-10-27 Batson Brannon J Cache coherence protocol
US20050262250A1 (en) * 2004-04-27 2005-11-24 Batson Brannon J Messaging protocol
US7210000B2 (en) * 2004-04-27 2007-04-24 Intel Corporation Transmitting peer-to-peer transactions through a coherent interface
US7716409B2 (en) * 2004-04-27 2010-05-11 Intel Corporation Globally unique transaction identifiers
CN101902433B (zh) * 2004-04-30 2013-04-10 夏普株式会社 无线通信系统
US7219220B2 (en) * 2004-05-21 2007-05-15 Intel Corporation Methods and apparatuses for resetting the physical layers of two agents interconnected through a link-based interconnection
CN1700639A (zh) * 2004-05-21 2005-11-23 华为技术有限公司 导出和导入无线局域网鉴别与保密基础结构证书信息方法
US8046488B2 (en) * 2004-05-21 2011-10-25 Intel Corporation Dynamically modulating link width
US7957428B2 (en) * 2004-05-21 2011-06-07 Intel Corporation Methods and apparatuses to effect a variable-width link
US20060041696A1 (en) * 2004-05-21 2006-02-23 Naveen Cherukuri Methods and apparatuses for the physical layer initialization of a link-based system interconnect
US7313712B2 (en) * 2004-05-21 2007-12-25 Intel Corporation Link power saving state
US20060041715A1 (en) * 2004-05-28 2006-02-23 Chrysos George Z Multiprocessor chip having bidirectional ring interconnect
US7467358B2 (en) * 2004-06-03 2008-12-16 Gwangju Institute Of Science And Technology Asynchronous switch based on butterfly fat-tree for network on chip application
US7295618B2 (en) * 2004-06-16 2007-11-13 International Business Machines Corporation Automatic adaptive equalization method and system for high-speed serial transmission link
US7436836B2 (en) * 2004-06-30 2008-10-14 Cisco Technology, Inc. Method and apparatus for detecting support for a protocol defining supplemental headers
US8161429B1 (en) * 2004-08-20 2012-04-17 Altera Corporation Methods and apparatus for initializing serial links
KR100579053B1 (ko) 2004-08-26 2006-05-12 삼성전자주식회사 스마트 카드와 메모리 카드간의 멀티 인터페이스 방법 및멀티 인터페이스 카드
US20060047862A1 (en) * 2004-09-02 2006-03-02 International Business Machines Corporation Automatic hardware data link initialization
US9727468B2 (en) * 2004-09-09 2017-08-08 Intel Corporation Resolving multi-core shared cache access conflicts
US7191255B2 (en) * 2004-10-27 2007-03-13 Intel Corporation Transaction layer link down handling for PCI express
CN100384118C (zh) * 2004-11-03 2008-04-23 上海贝尔阿尔卡特股份有限公司 处理通用成帧规程帧的方法和装置
US7738484B2 (en) * 2004-12-13 2010-06-15 Intel Corporation Method, system, and apparatus for system level initialization
US7761719B2 (en) 2005-03-28 2010-07-20 Akros Silicon Inc. Ethernet module
EP1875681A1 (de) * 2005-04-13 2008-01-09 Koninklijke Philips Electronics N.V. Elektronische vorrichtung und verfahren zur durchflussregelung
US7613864B2 (en) * 2005-04-22 2009-11-03 Sun Microsystems, Inc. Device sharing
US7564904B2 (en) 2005-05-03 2009-07-21 Texas Instruments Incorporated Apparatus for and method of detection of powered devices over a network
US7539801B2 (en) * 2005-05-27 2009-05-26 Ati Technologies Ulc Computing device with flexibly configurable expansion slots, and method of operation
US7694060B2 (en) * 2005-06-17 2010-04-06 Intel Corporation Systems with variable link widths based on estimated activity levels
US7620694B2 (en) * 2005-09-27 2009-11-17 Intel Corporation Early issue of transaction ID
US7633877B2 (en) 2005-11-18 2009-12-15 Intel Corporation Method and apparatus for meeting compliance for debugging and testing a multi-speed, point-to-point link
US20070239922A1 (en) * 2005-12-09 2007-10-11 Horigan John W Technique for link reconfiguration
US7924708B2 (en) * 2005-12-13 2011-04-12 Intel Corporation Method and apparatus for flow control initialization
US7606981B2 (en) * 2005-12-19 2009-10-20 Intel Corporation System and method for reducing store latency
CN1996782B (zh) * 2005-12-26 2010-05-05 中兴通讯股份有限公司 一种空域自适应链路的天线选择指示方法
US7430628B2 (en) * 2006-01-10 2008-09-30 Kabushiki Kaisha Toshiba System and method for optimized allocation of shared processing resources
US7512741B1 (en) * 2006-01-11 2009-03-31 Intel Corporation Two-hop source snoop based messaging protocol
US7543115B1 (en) * 2006-01-11 2009-06-02 Intel Corporation Two-hop source snoop based cache coherence protocol
JP4572169B2 (ja) * 2006-01-26 2010-10-27 エヌイーシーコンピュータテクノ株式会社 マルチプロセッサシステム及びその動作方法
US9390015B2 (en) * 2006-03-16 2016-07-12 International Business Machines Corporation Method for performing cacheline polling utilizing a store and reserve instruction
US7783959B2 (en) * 2006-03-23 2010-08-24 Intel Corporation Apparatus and method for reduced power consumption communications over a physical interconnect
US7681093B2 (en) * 2006-03-31 2010-03-16 Intel Corporation Redundant acknowledgment in loopback entry
US7743129B2 (en) 2006-05-01 2010-06-22 International Business Machines Corporation Methods and arrangements to detect a failure in a communication network
US20070260615A1 (en) * 2006-05-08 2007-11-08 Eran Shen Media with Pluggable Codec
US7721050B2 (en) * 2006-06-30 2010-05-18 Intel Corporation Re-snoop for conflict resolution in a cache coherency protocol
US7506108B2 (en) * 2006-06-30 2009-03-17 Intel Corporation Requester-generated forward for late conflicts in a cache coherency protocol
US7536515B2 (en) * 2006-06-30 2009-05-19 Intel Corporation Repeated conflict acknowledgements in a cache coherency protocol
EP2052330A2 (de) * 2006-08-08 2009-04-29 Koninklijke Philips Electronics N.V. Elektronische vorrichtung und verfahren zur synchronisierung einer kommunikation
US8059011B2 (en) * 2006-09-15 2011-11-15 Itron, Inc. Outage notification system
US7600080B1 (en) * 2006-09-22 2009-10-06 Intel Corporation Avoiding deadlocks in a multiprocessor system
GB2443465A (en) * 2006-11-06 2008-05-07 Fujitsu Ltd Communication systems
KR20090102789A (ko) * 2006-12-06 2009-09-30 퓨전 멀티시스템즈, 인크.(디비에이 퓨전-아이오) 프로그레시브 raid를 이용한 데이터 저장 장치, 시스템 및 방법
WO2008087579A2 (en) 2007-01-15 2008-07-24 Koninklijke Philips Electronics N.V. Method of generating low peak-to-average power ratio ( papr) binary preamble sequences for ofdm systems
DE102007007136B3 (de) 2007-02-09 2008-08-28 Siemens Ag Radelektronik und Verfahren zum Betreiben einer Radelektronik
US8428175B2 (en) * 2007-03-09 2013-04-23 Qualcomm Incorporated Quadrature modulation rotating training sequence
US7978635B2 (en) 2007-03-21 2011-07-12 Qualcomm Incorporated H-ARQ acknowledgment detection validation by re-decoding
DE602007001576D1 (de) * 2007-03-22 2009-08-27 Research In Motion Ltd Vorrichtung und Verfahren zur verbesserten Maskierung von Rahmenverlusten
KR101188001B1 (ko) * 2007-05-08 2012-10-05 인터디지탈 테크날러지 코포레이션 피기백 긍정 ack/부정 ack 필드 표시자 및 폴링 표시자를 제공하기 위한 방법 및 장치
US7827357B2 (en) * 2007-07-31 2010-11-02 Intel Corporation Providing an inclusive shared cache among multiple core-cache clusters
US7899111B2 (en) 2007-08-07 2011-03-01 Intel Corporation Link interface technique including data indicator symbols
CA2632031A1 (en) * 2007-09-05 2009-03-05 Faisal Dada Aligning data on parallel transmission lines
US20090125363A1 (en) * 2007-10-22 2009-05-14 Nokia Siemens Networks Oy Method, apparatus and computer program for employing a frame structure in wireless communication
EP2063581A1 (de) * 2007-11-20 2009-05-27 STMicroelectronics (Grenoble) SAS Übertragung eines Datenstroms zwischen zwei elektronischen Geräten mittels eines Netzwerk-on-chip
US8392663B2 (en) * 2007-12-12 2013-03-05 Mips Technologies, Inc. Coherent instruction cache utilizing cache-op execution resources
US8179901B2 (en) * 2008-02-11 2012-05-15 Vitesse Semiconductor Corporation System and method for squelching a recovered clock in an ethernet network
CN101960677A (zh) 2008-02-29 2011-01-26 惠普开发有限公司 用于电子装置的模块系统和可缩回组件
DE102008012979A1 (de) * 2008-03-06 2009-09-10 Gip Ag Verfahren und Programm zum Bereitstellen von Datenkohärenz in Netzwerken
US7492807B1 (en) 2008-04-07 2009-02-17 International Business Machines Corporation Pseudo-random bit sequence (PRBS) synchronization for interconnects with dual-tap scrambling devices and methods
JP5108975B2 (ja) * 2008-04-28 2012-12-26 ヒューレット−パッカード デベロップメント カンパニー エル.ピー. 仮想割り込みモードインターフェース及び割り込みモードを仮想化するための方法
US8762652B2 (en) * 2008-04-30 2014-06-24 Freescale Semiconductor, Inc. Cache coherency protocol in a data processing system
CN101599811B (zh) * 2008-06-02 2011-04-06 华为技术有限公司 一种数据处理装置,通信设备以及数据处理方法
US7769048B2 (en) * 2008-06-25 2010-08-03 Intel Corporation Link and lane level packetization scheme of encoding in serial links
US8201069B2 (en) * 2008-07-01 2012-06-12 International Business Machines Corporation Cyclical redundancy code for use in a high-speed serial link
US8250311B2 (en) * 2008-07-07 2012-08-21 Intel Corporation Satisfying memory ordering requirements between partial reads and non-snoop accesses
US8205045B2 (en) * 2008-07-07 2012-06-19 Intel Corporation Satisfying memory ordering requirements between partial writes and non-snoop accesses
CN101325461B (zh) * 2008-07-25 2011-04-27 浙江大学 基于无速率码的认知无线电通信链路的建立和维护方法
KR101493921B1 (ko) * 2008-09-08 2015-02-16 삼성전자주식회사 이동/핸드헬드 신호 수신을 위해 설계된 디지탈 텔레비전 수신기의 서브-채널 획득
US8917209B2 (en) * 2009-09-10 2014-12-23 Nextnav, Llc Coding in a wide area positioning system (WAPS)
KR101774202B1 (ko) * 2008-09-10 2017-09-01 넥스트나브, 엘엘씨 지상 비컨 네트워크 및 이를 이용한 위치 결정 신호 생성 및 송신 방법
US8265071B2 (en) * 2008-09-11 2012-09-11 Juniper Networks, Inc. Methods and apparatus related to a flexible data center security architecture
CN101430664B (zh) * 2008-09-12 2010-07-28 中国科学院计算技术研究所 一种多处理器系统及Cache一致性消息传输方法
EP2173066B1 (de) 2008-10-01 2012-05-16 STMicroelectronics Srl Verfahren zum Austauschen von Informationen in einem Network-on-Chip-Kommunikationsnetzwerk, entsprechendes Network-on-Chip-Kommunikationsnetzwerk und Computerprogrammprodukt
US8531943B2 (en) * 2008-10-29 2013-09-10 Adapteva Incorporated Mesh network
KR100988809B1 (ko) * 2008-11-06 2010-10-20 주식회사 하이닉스반도체 반도체 메모리 장치 및 출력인에이블 신호 생성 방법
US8706479B2 (en) * 2008-11-14 2014-04-22 Broadcom Corporation Packet loss concealment for sub-band codecs
CN101437033B (zh) * 2008-12-16 2012-07-11 杭州华三通信技术有限公司 一种支持可变速率的方法和网络设备
US8401038B2 (en) * 2008-12-17 2013-03-19 Viasat, Inc. False lock detection for physical layer frame synchronization
US8799582B2 (en) * 2008-12-30 2014-08-05 Intel Corporation Extending cache coherency protocols to support locally buffered data
US8026726B2 (en) * 2009-01-23 2011-09-27 Silicon Image, Inc. Fault testing for interconnections
KR101598093B1 (ko) * 2009-02-02 2016-02-26 엘지전자 주식회사 송/수신 시스템 및 데이터 처리 방법
KR20100092353A (ko) * 2009-02-12 2010-08-20 엘지전자 주식회사 트래픽 암호화 키 관리방법 및 장치
WO2010096969A1 (zh) * 2009-02-27 2010-09-02 华为技术有限公司 无源光网络中发送上行传送帧的方法及设备
KR101133256B1 (ko) * 2009-02-27 2012-04-09 한국과학기술원 시그니처 정보를 이용한 물리계층에서의 타임스탬프 처리장치 및 그 방법
US20100228922A1 (en) 2009-03-09 2010-09-09 Deepak Limaye Method and system to perform background evictions of cache memory lines
US8401400B2 (en) * 2009-03-10 2013-03-19 Tyco Electronics Subsea Communications Llc Detection of data in signals with data pattern dependent signal distortion
CN101854331A (zh) * 2009-04-02 2010-10-06 天际微芯(北京)科技有限公司 训练序列结构及训练方法
US9690625B2 (en) * 2009-06-16 2017-06-27 Oracle America, Inc. System and method for out-of-order resource allocation and deallocation in a threaded machine
US8335911B2 (en) * 2009-05-21 2012-12-18 Oracle America, Inc. Dynamic allocation of resources in a threaded, heterogeneous processor
US8199759B2 (en) 2009-05-29 2012-06-12 Intel Corporation Method and apparatus for enabling ID based streams over PCI express
CN101561794B (zh) * 2009-06-05 2012-07-04 威盛电子股份有限公司 通用串行总线装置
US8239704B2 (en) * 2009-06-12 2012-08-07 Cray Inc. Global clock via embedded spanning tree
WO2010147264A1 (en) * 2009-06-16 2010-12-23 Lg Electronics Inc. Method of exchanging messages and transmitting and receiving devices
US8782347B2 (en) * 2009-06-26 2014-07-15 Intel Corporation Controllably exiting an unknown state of a cache coherency directory
US20100332877A1 (en) 2009-06-30 2010-12-30 Yarch Mark A Method and apparatus for reducing power consumption
US8831666B2 (en) * 2009-06-30 2014-09-09 Intel Corporation Link power savings with state retention
CN101695193A (zh) * 2009-09-27 2010-04-14 上海华为技术有限公司 一种下行数据发送和下行数据接收的方法和装置
US8327228B2 (en) * 2009-09-30 2012-12-04 Intel Corporation Home agent data and memory management
US8799586B2 (en) 2009-09-30 2014-08-05 Intel Corporation Memory mirroring and migration at home agent
US8819305B2 (en) * 2009-11-16 2014-08-26 Intel Corporation Directly providing data messages to a protocol layer
US8621128B2 (en) 2009-12-04 2013-12-31 St-Ericsson Sa Methods and systems for reliable link startup
US9100809B2 (en) * 2009-12-21 2015-08-04 Julia Olincy Olincy Automatic response option mobile system for responding to incoming texts or calls or both
US8301813B2 (en) * 2009-12-24 2012-10-30 Ati Technologies Ulc Method and device for disabling a higher version of a computer bus and interconnection protocol for interoperability with a device compliant to a lower version of the computer bus and interconnection protocol
US20120227045A1 (en) 2009-12-26 2012-09-06 Knauth Laura A Method, apparatus, and system for speculative execution event counter checkpointing and restoring
US8804960B2 (en) * 2010-02-22 2014-08-12 International Business Machines Corporation Implementing known scrambling relationship among multiple serial links
US8868846B2 (en) * 2010-03-19 2014-10-21 Netapp, Inc. Method and system for maintaining data coherency across a network
US8473567B2 (en) 2010-03-29 2013-06-25 Intel Corporation Generating a packet including multiple operation codes
US8514885B2 (en) * 2010-03-30 2013-08-20 International Business Machines Corporation Using variable length packets to embed extra network control information
US8539260B2 (en) * 2010-04-05 2013-09-17 Intel Corporation Method, apparatus, and system for enabling platform power states
CN101867401B (zh) * 2010-05-04 2013-11-20 西安交通大学 一种遮挡躲避的60GHz多天线系统及其信号处理方法
CN102238623B (zh) * 2010-05-06 2014-04-09 中兴通讯股份有限公司 加快无线链路控制窗口状态应答的方法及基站子系统
JP2011248814A (ja) * 2010-05-31 2011-12-08 Nec Corp PCIExpressリンクエラー検出及び自動復旧機能を備えたデバイス
US9448938B2 (en) * 2010-06-09 2016-09-20 Micron Technology, Inc. Cache coherence protocol for persistent memories
CN101867452B (zh) 2010-06-10 2013-07-17 国网电力科学研究院 一种电力专用串行实时总线的通信方法
KR101323055B1 (ko) * 2010-06-17 2013-10-29 엘지디스플레이 주식회사 내부 디스플레이 포트 인터페이스 테스트 방법 및 장치
CN102315917B (zh) * 2010-07-06 2014-12-17 瑞昱半导体股份有限公司 一种用于信号传输的省电方法及装置
CN102377608B (zh) * 2010-08-12 2014-07-09 盛科网络(苏州)有限公司 物理层故障模拟系统及方法
US8656115B2 (en) * 2010-08-20 2014-02-18 Intel Corporation Extending a cache coherency snoop broadcast protocol with directory information
WO2012038546A1 (en) * 2010-09-23 2012-03-29 St-Ericsson Sa Multi-lane data transmission de-skew
US8751714B2 (en) * 2010-09-24 2014-06-10 Intel Corporation Implementing quickpath interconnect protocol over a PCIe interface
US9104793B2 (en) * 2010-09-24 2015-08-11 Intel Corporation Method and system of adapting communication links to link conditions on a platform
US9146610B2 (en) 2010-09-25 2015-09-29 Intel Corporation Throttling integrated link
US8805196B2 (en) * 2010-09-30 2014-08-12 Teradyne, Inc. Electro-optical communications link
JP5597104B2 (ja) * 2010-11-16 2014-10-01 キヤノン株式会社 データ転送装置及びその制御方法
CN102142987B (zh) * 2010-12-09 2014-01-08 浪潮(北京)电子信息产业有限公司 一种高速串行总线设备及其传输数据的方法
JP2012146041A (ja) * 2011-01-11 2012-08-02 Hitachi Ltd 計算機装置及び信号伝送方法
JP2012155650A (ja) * 2011-01-28 2012-08-16 Toshiba Corp ルータ及びメニーコアシステム
EP2482196B1 (de) * 2011-01-31 2016-06-29 Canon Kabushiki Kaisha Bildverarbeitungsvorrichtung, Druckvorrichtung und Steuerverfahren in einer Bildverarbeitungsvorrichtung
US8924672B2 (en) * 2011-02-08 2014-12-30 Infineon Technologies Ag Device with processing unit and information storage
US8756378B2 (en) * 2011-02-17 2014-06-17 Oracle International Corporation Broadcast protocol for a network of caches
US8824489B1 (en) * 2011-04-26 2014-09-02 Marvell International Ltd. Physical layer (PHY) devices for use in automotive and industrial applications
US9189424B2 (en) 2011-05-31 2015-11-17 Hewlett-Packard Development Company, L.P. External cache operation based on clean castout messages
US8868955B2 (en) 2011-07-01 2014-10-21 Intel Corporation Enhanced interconnect link width modulation for power savings
US8788890B2 (en) * 2011-08-05 2014-07-22 Apple Inc. Devices and methods for bit error rate monitoring of intra-panel data link
US8514889B2 (en) * 2011-08-26 2013-08-20 Sonics, Inc. Use of common data format to facilitate link width conversion in a router with flexible link widths
US9208110B2 (en) * 2011-11-29 2015-12-08 Intel Corporation Raw memory transaction support
WO2013085501A1 (en) * 2011-12-07 2013-06-13 Intel Corporation Multiple transaction data flow control unit for high-speed interconnect
CN103188059A (zh) 2011-12-28 2013-07-03 华为技术有限公司 快速通道互联系统中数据包重传方法、装置和系统
CN102571571A (zh) * 2011-12-28 2012-07-11 南京邮电大学 一种应用于时延容忍网络的多层次有效路由方法
CN102594745B (zh) * 2011-12-29 2015-02-04 东南大学 单载波频域均衡系统中的同步方法及其实现电路
US8892269B2 (en) 2012-03-30 2014-11-18 Intel Corporation Power down and quick start of thermal sensor
CN102685128B (zh) * 2012-05-09 2015-09-30 东南大学 一种基于状态机的协议构造方法
US10102170B2 (en) 2012-05-18 2018-10-16 Dell Products, Lp System and method for providing input/output functionality by an I/O complex switch
US8856573B2 (en) * 2012-06-27 2014-10-07 Intel Corporation Setting a number (N) of fast training sequences (FTS) automatically to an optimal value
US9280504B2 (en) 2012-08-24 2016-03-08 Intel Corporation Methods and apparatus for sharing a network interface controller
US8984313B2 (en) 2012-08-31 2015-03-17 Intel Corporation Configuring power management functionality in a processor including a plurality of cores by utilizing a register to store a power domain indicator
US8935578B2 (en) 2012-09-29 2015-01-13 Intel Corporation Method and apparatus for optimizing power and latency on a link
US8996757B2 (en) * 2012-09-29 2015-03-31 Intel Corporation Method and apparatus to generate platform correctable TX-RX
US9003091B2 (en) 2012-10-18 2015-04-07 Hewlett-Packard Development Company, L.P. Flow control for a Serial Peripheral Interface bus
US9600431B2 (en) * 2012-10-22 2017-03-21 Intel Corporation High performance interconnect physical layer
US9479196B2 (en) * 2012-10-22 2016-10-25 Intel Corporation High performance interconnect link layer
WO2014065879A1 (en) 2012-10-22 2014-05-01 Venkatraman Iyer High performance interconnect physical layer
US9280507B2 (en) * 2012-10-22 2016-03-08 Intel Corporation High performance interconnect physical layer
BR112015017867A2 (pt) 2013-02-28 2018-12-18 Intel Corp aproveitamento de um mecanismo de enumeração e/ou configuração de um protocolo de interconexão para um protocolo de interconexão diferente
US9436244B2 (en) * 2013-03-15 2016-09-06 Intel Corporation Adaptive control loop protection for fast and robust recovery from low-power states in high speed serial I/O applications
JP6461959B2 (ja) * 2013-12-26 2019-01-30 インテル コーポレイション マルチチップパッケージリンク
US9946676B2 (en) * 2015-03-26 2018-04-17 Intel Corporation Multichip package link

Also Published As

Publication number Publication date
KR20180018853A (ko) 2018-02-21
CN107102960A (zh) 2017-08-29
KR101700261B1 (ko) 2017-01-26
DE112013004094B4 (de) 2018-03-29
KR20170012581A (ko) 2017-02-02
US9626321B2 (en) 2017-04-18
CN106815151A (zh) 2017-06-09
KR20150063044A (ko) 2015-06-08
EP3410304A1 (de) 2018-12-05
CN108614783B (zh) 2022-11-18
WO2014065883A1 (en) 2014-05-01
DE112013005104T5 (de) 2015-07-02
US20170109315A1 (en) 2017-04-20
CN108132892A (zh) 2018-06-08
KR20170081728A (ko) 2017-07-12
KR20170042379A (ko) 2017-04-18
CN106681938A (zh) 2017-05-17
CN108055214A (zh) 2018-05-18
KR101847943B1 (ko) 2018-04-11
KR101861312B1 (ko) 2018-05-28
CN104737142A (zh) 2015-06-24
US9892086B2 (en) 2018-02-13
RU2599971C2 (ru) 2016-10-20
DE112013004105T5 (de) 2015-04-30
CN104380269B (zh) 2018-01-30
KR20170007865A (ko) 2017-01-20
DE112013003723T5 (de) 2015-04-16
KR101754890B1 (ko) 2017-07-06
WO2014065880A1 (en) 2014-05-01
KR101700545B1 (ko) 2017-01-26
KR101815178B1 (ko) 2018-01-04
WO2014065882A1 (en) 2014-05-01
DE112013001360T5 (de) 2014-11-27
CN108055214B (zh) 2021-04-13
JP2016506548A (ja) 2016-03-03
US20190347226A1 (en) 2019-11-14
DE112013003723B4 (de) 2018-09-13
CN104335196A (zh) 2015-02-04
CN107968756B (zh) 2021-10-01
KR20150047552A (ko) 2015-05-04
KR101828756B1 (ko) 2018-02-12
JP6423040B2 (ja) 2018-11-14
CN104303166B (zh) 2018-01-09
CN104769570A (zh) 2015-07-08
KR20170005897A (ko) 2017-01-16
CN111737167B (zh) 2024-05-28
CN107968756A (zh) 2018-04-27
DE112013005090T5 (de) 2015-07-02
CN107015924B (zh) 2020-10-30
WO2014065878A1 (en) 2014-05-01
US10216661B2 (en) 2019-02-26
KR101861452B1 (ko) 2018-05-25
DE112013005093T5 (de) 2015-10-22
KR101598746B1 (ko) 2016-02-29
DE112013002090T5 (de) 2015-01-15
KR101815180B1 (ko) 2018-01-04
CN104536933A (zh) 2015-04-22
JP2017188909A (ja) 2017-10-12
DE112013004094T5 (de) 2015-07-23
US10204064B2 (en) 2019-02-12
KR101772037B1 (ko) 2017-08-28
US20190391939A1 (en) 2019-12-26
CN104969206A (zh) 2015-10-07
KR20180049192A (ko) 2018-05-10
CN107045479A (zh) 2017-08-15
KR20150047550A (ko) 2015-05-04
WO2014065873A1 (en) 2014-05-01
US20240012772A1 (en) 2024-01-11
US20170109286A1 (en) 2017-04-20
KR101689998B1 (ko) 2016-12-26
KR20160145197A (ko) 2016-12-19
KR20160144510A (ko) 2016-12-16
KR20150070107A (ko) 2015-06-24
CN104391816A (zh) 2015-03-04
CN106815151B (zh) 2021-04-20
KR101912074B1 (ko) 2018-10-25
CN107092565B (zh) 2021-03-12
US20140112339A1 (en) 2014-04-24
CN104391816B (zh) 2018-11-09
KR20150003363A (ko) 2015-01-08
CN104335196B (zh) 2017-10-13
CN104769570B (zh) 2018-05-15
US20200356502A1 (en) 2020-11-12
CN104487958B (zh) 2018-05-22
US20220114122A1 (en) 2022-04-14
CN104487958A (zh) 2015-04-01
US20180203811A1 (en) 2018-07-19
CN107092565A (zh) 2017-08-25
KR101695340B1 (ko) 2017-01-11
KR101681509B1 (ko) 2016-12-01
KR101686360B1 (ko) 2016-12-13
KR20150077398A (ko) 2015-07-07
KR101599852B1 (ko) 2016-03-07
WO2014065877A1 (en) 2014-05-01
US20170083476A1 (en) 2017-03-23
WO2014065881A1 (en) 2014-05-01
US9753885B2 (en) 2017-09-05
CN106776364B (zh) 2020-07-17
CN106681938B (zh) 2020-08-18
US20150067207A1 (en) 2015-03-05
US20180095927A1 (en) 2018-04-05
CN104756097A (zh) 2015-07-01
CN104737147A (zh) 2015-06-24
CN106776364A (zh) 2017-05-31
CN104737142B (zh) 2018-03-23
KR101831550B1 (ko) 2018-02-22
KR20150059721A (ko) 2015-06-02
KR101905055B1 (ko) 2018-10-08
KR20150059775A (ko) 2015-06-02
KR20150052102A (ko) 2015-05-13
KR20140141616A (ko) 2014-12-10
CN104969207A (zh) 2015-10-07
US20140215437A1 (en) 2014-07-31
KR101686359B1 (ko) 2016-12-13
KR20140137398A (ko) 2014-12-02
CN104995614B (zh) 2018-04-06
CN104303166A (zh) 2015-01-21
CN104969206B (zh) 2017-12-26
US9418035B2 (en) 2016-08-16
KR101815173B1 (ko) 2018-01-30
EP3410304B1 (de) 2021-09-22
US20210117350A1 (en) 2021-04-22
KR101755005B1 (ko) 2017-07-06
CN107045479B (zh) 2020-09-01
DE112013002880T5 (de) 2015-03-05
KR20160150653A (ko) 2016-12-30
CN104995614A (zh) 2015-10-21
US10248591B2 (en) 2019-04-02
US20140201463A1 (en) 2014-07-17
KR101691756B1 (ko) 2016-12-30
KR20170081730A (ko) 2017-07-12
US20170097907A1 (en) 2017-04-06
US9916266B2 (en) 2018-03-13
US10380046B2 (en) 2019-08-13
US20150261711A1 (en) 2015-09-17
US20150081984A1 (en) 2015-03-19
CN108228495A (zh) 2018-06-29
KR20160089541A (ko) 2016-07-27
BR112015006432A2 (pt) 2017-07-04
DE112013002069B4 (de) 2022-12-01
DE112013007751B3 (de) 2023-01-12
KR20150077397A (ko) 2015-07-07
US20180143937A1 (en) 2018-05-24
KR20170007523A (ko) 2017-01-18
DE112013007767B3 (de) 2023-04-20
RU2579140C1 (ru) 2016-03-27
US11269793B2 (en) 2022-03-08
WO2014065884A1 (en) 2014-05-01
EP2909728A1 (de) 2015-08-26
DE112013001360B4 (de) 2023-03-23
US10909055B2 (en) 2021-02-02
KR101615908B1 (ko) 2016-04-27
KR101985120B1 (ko) 2019-05-31
CN104737147B (zh) 2018-11-06
CN108132892B (zh) 2022-02-11
KR101696124B1 (ko) 2017-01-12
CN104380269A (zh) 2015-02-25
CN107015924A (zh) 2017-08-04
KR20160046928A (ko) 2016-04-29
US20140215112A1 (en) 2014-07-31
RU2014145179A (ru) 2016-05-27
KR20150047551A (ko) 2015-05-04
CN104756097B (zh) 2018-05-15
JP6139689B2 (ja) 2017-05-31
WO2014065873A8 (en) 2014-07-10
CN108614783A (zh) 2018-10-02
US9378171B2 (en) 2016-06-28
WO2014065876A1 (en) 2014-05-01
CN108228495B (zh) 2021-05-25
DE112013002069T5 (de) 2015-01-08
DE112013007752B3 (de) 2023-04-27
WO2014065875A1 (en) 2014-05-01
US11741030B2 (en) 2023-08-29
WO2014065879A1 (en) 2014-05-01
CN104536933B (zh) 2018-02-13
CN107102960B (zh) 2021-07-09
WO2014065876A9 (en) 2015-02-26
KR101642086B1 (ko) 2016-07-22
CN111737167A (zh) 2020-10-02
EP2909728A4 (de) 2016-06-22

Similar Documents

Publication Publication Date Title
DE112013005086T5 (de) Kohärenzprotokoll für Hochleistungszwischenverbindung
DE102018004327A1 (de) Systeme und Verfahren zum Zugreifen auf Massenspeicher als Arbeitsspeicher
DE102020120102A1 (de) Globale dauerhafte Speicherleerung
DE112013007732B4 (de) System und Vorrichtung zum Bestimmen und Melden eines Fehlers auf einer Bahn
US10268583B2 (en) High performance interconnect coherence protocol resolving conflict based on home transaction identifier different from requester transaction identifier
DE102020116195A1 (de) Leistungsmanagement für neu-treiber-vorrichtungen
DE112016005910T5 (de) Architechtur für Software-Definierten Interconnect-Switch
DE112017001430T5 (de) In-band-retimer-registerzugriff
DE102018006797A1 (de) Kohärente Speichereinrichtungen über PCIe
DE102018005753A1 (de) Serdes link training
US10120774B2 (en) Coherence protocol tables
DE112016006065T5 (de) Spekulative nummerierung von adressräumen für bus-einrichtungsfunktionen
DE112017001148T5 (de) Abflachende portalbrücke .
DE102019132213A1 (de) Adressenübersetzung für skalierbare verlinkte Vorrichtungen
DE112015006516T5 (de) BUS-Einrichtung-Funktion-Adressraumabbildung
DE112017004897T5 (de) Schreib-Semantik für persistenten Speicher auf PCIe mit vorhandener TLP-Definition
DE112018001088T5 (de) Anwendung von framing-regeln für eine hochgeschwindigkeitsdatenverbindung
DE112014006490T5 (de) Verfahren, Vorrichtung und System zur Regelung von Leistung ungenutzter Hardware einer Linkschnittstelle
DE102018006849A1 (de) Verfahren, Vorrichtung, System für frühe granulare Seitenhinweise anhand einer PCIE-Vorrichtung
DE102022119705A1 (de) Cluster-identifikatorneuabbildung für asymmetrische topologien
DE102022101490A1 (de) Technologien zur echtzeitaktualisierung von verschlüsselungsschlüsseln
DE102020134763A1 (de) Closed chassis debugging through tunneling
DE112013007769B3 (de) System, Vorrichtung und Verfahren zum Erzeugen und Senden von SKP geordneten Sätzen

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R016 Response to examination communication
R130 Divisional application to

Ref document number: 112013007848

Country of ref document: DE