DE102022109273A1 - Unabhängige on-chip-mehrfachverschaltung - Google Patents

Unabhängige on-chip-mehrfachverschaltung Download PDF

Info

Publication number
DE102022109273A1
DE102022109273A1 DE102022109273.9A DE102022109273A DE102022109273A1 DE 102022109273 A1 DE102022109273 A1 DE 102022109273A1 DE 102022109273 A DE102022109273 A DE 102022109273A DE 102022109273 A1 DE102022109273 A1 DE 102022109273A1
Authority
DE
Germany
Prior art keywords
network
soc
physically
topology
networks
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
DE102022109273.9A
Other languages
English (en)
Inventor
Sergio Kolor
Sergio V. Tota
Tzach Zemer
Sagi Lahav
Jonathan M. Redshaw
Per H. Hammarlund
Eran Tamari
James Vash
Gaurav Garg
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.)
Apple Inc
Original Assignee
Apple Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Apple Inc filed Critical Apple Inc
Publication of DE102022109273A1 publication Critical patent/DE102022109273A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7807System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
    • G06F15/7825Globally asynchronous, locally synchronous, e.g. network on chip
    • 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
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7807System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/36Handling requests for interconnection or transfer for access to common bus or bus system
    • G06F13/368Handling requests for interconnection or transfer for access to common bus or bus system with decentralised access control
    • 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
    • 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/4027Coupling between buses using bus bridges
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/173Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
    • G06F15/17356Indirect interconnection networks
    • G06F15/17362Indirect interconnection networks hierarchical topologies
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/173Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
    • G06F15/17356Indirect interconnection networks
    • G06F15/17368Indirect interconnection networks non hierarchical topologies
    • G06F15/17375One dimensional, e.g. linear array, ring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/173Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
    • G06F15/17356Indirect interconnection networks
    • G06F15/17368Indirect interconnection networks non hierarchical topologies
    • G06F15/17381Two dimensional, e.g. mesh, torus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7807System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
    • G06F15/7821Tightly coupled to memory, e.g. computational memory, smart memory, processor in memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2115/00Details relating to the type of the circuit
    • G06F2115/02System on chip [SoC] design
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/0022Multibus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/0038System on Chip
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Computing Systems (AREA)
  • Software Systems (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Multi Processors (AREA)

Abstract

In einer Ausführungsform umfasst ein System-on-a-Chip (SOC) einen Halbleiter-Die, auf dem eine Schaltlogik gebildet ist, wobei die Schaltlogik eine Vielzahl von Agenten und eine Vielzahl von Netzwerkschaltern, die mit der Vielzahl von Agenten gekoppelt sind, umfasst. Die Vielzahl von Netzwerkschaltern sind miteinander verbunden, um eine Vielzahl von physisch und logisch unabhängigen Netzwerken zu bilden. Ein erstes Netzwerk der Vielzahl von physisch und logisch unabhängigen Netzwerken ist gemäß einer ersten Topologie aufgebaut, und ein zweites Netzwerk der Vielzahl von physisch und logisch unabhängigen Netzwerken ist gemäß einer zweiten Topologie, die sich von der ersten Topologie unterscheidet, aufgebaut. Zum Beispiel kann die erste Topologie eine Ringtopologie und kann die zweite Topologie eine Maschentopologie sein. In einer Ausführungsform kann eine Kohärenz auf dem ersten Netzwerk durchgesetzt werden, und das zweite Netzwerk kann ein Netzwerk mit gelockerter Sortierung sein.

Description

  • HINTERGRUND
  • Technisches Gebiet
  • Hierin beschriebene Ausführungsformen beziehen sich auf integrierte Schaltungen eines System-on-a-Chip (SOC) und insbesondere auf eine Verschaltung zwischen Komponenten in einem SOC.
  • Beschreibung des Stands der Technik
  • Die integrierten Schaltungen eines System-on-a-Chip (SOC) schließen im Allgemeinen einen oder mehrere Prozessoren, die als zentrale Verarbeitungseinheiten (CPUs) für ein System dienen, zusammen mit verschiedenen anderen Komponenten, wie Speichersteuerungen und Peripheriekomponenten, ein. Zusätzliche Komponenten können im SOC eingeschlossen sein, um eine gegebene Vorrichtung zu bilden. Da jedoch die Anzahl von Transistoren, die auf einem Die mit integrierter Schaltung erreicht werden können, weiterhin zunimmt, ist es möglich, erhöhte Anzahlen von Prozessoren und anderen Komponenten auf einem gegebenen SOC zu integrieren und somit die Anzahl anderer Komponenten zu reduzieren, die benötigt werden, um die gegebene Vorrichtung zu bilden.
  • Das Erhöhen der Anzahlen von Prozessoren und anderen diskreten Komponenten auf einem SOC ist für eine erhöhte Leistung wünschenswert. Zusätzlich können Kosteneinsparungen in einer Vorrichtung erreicht werden, indem die Anzahl anderer Komponenten reduziert wird, die zusätzlich zum SOC benötigt werden, um die gegebene Vorrichtung zu bilden. Die Vorrichtung kann kompakter (von einer kleineren Größe) sein, wenn mehr vom Gesamtsystem in das SOC integriert ist. Durch das Integrieren von mehr Komponenten in das SOC kann ein reduzierter Stromverbrauch für die Vorrichtung als Ganzes erreicht werden.
  • Andererseits erhöht das Erhöhen der Anzahl von Prozessoren und anderen Komponenten auf dem SOC die Bandbreitenanforderungen zwischen den Speichersteuerungen und den Komponenten und kann die Verschaltung, die zur Kommunikation auf dem SOC verwendet wird, überfordern, was zu Latenzerhöhungen führen kann. Das Fehlen von verfügbarer Bandbreite und die Erhöhung der Latenz können die Leistungsvorteile reduzieren, die durch das Integrieren der Komponenten in das SOC erreicht werden sollten.
  • Figurenliste
  • Die folgende detaillierte Beschreibung nimmt Bezug auf die begleitenden Zeichnungen, die nun kurz beschrieben werden.
    • 1 ist ein Blockdiagramm eines Systems, das eine Ausführungsform von mehreren Netzwerkverschaltungsagenten einschließt.
    • 2 ist ein Blockdiagramm einer Ausführungsform eines Netzwerks, das eine Ringtopologie verwendet.
    • 3 ist ein Blockdiagramm einer Ausführungsform eines Netzwerks, das eine Maschentopologie verwendet.
    • 4 ist ein Blockdiagramm einer Ausführungsform eines Netzwerks, das eine Baumtopologie verwendet.
    • 5 ist ein Blockdiagramm einer Ausführungsform eines System-on-a-Chip (SOC), das mehrere Netzwerke für eine Ausführungsform aufweist.
    • 6 ist ein Blockdiagramm einer Ausführungsform eines System-on-a-Chip (SOC), das eines der unabhängigen Netzwerke veranschaulicht, die in 5 für eine Ausführungsform gezeigt sind.
    • 7 ist ein Blockdiagramm einer Ausführungsform eines System-on-a-Chip (SOC), das ein weiteres der unabhängigen Netzwerke veranschaulicht, die in 5 für eine Ausführungsform gezeigt sind.
    • 8 ist ein Blockdiagramm einer Ausführungsform eines System-on-a-Chip (SOC), das noch ein weiteres der unabhängigen Netzwerke veranschaulicht, die in 5 für eine Ausführungsform gezeigt sind.
    • 9 ist ein Blockdiagramm einer Ausführungsform eines Multi-Die-Systems, das zwei Halbleiter-Dies einschließt.
    • 10 ist ein Blockdiagramm einer Ausführungsform eines Eingabe/Ausgabe-Clusters (E/A-Clusters).
    • 11 ist ein Blockdiagramm einer Ausführungsform eines Prozessor-Clusters.
    • 12 ist ein Paar von Tabellen, die virtuelle Kanäle und Verkehrstypen und Netzwerke veranschaulichen, die in 5 bis 8 gezeigt sind, in denen sie für eine Ausführungsform verwendet werden.
    • 13 ist ein Flussdiagramm, das eine Ausführungsform des Initiierens einer Transaktion auf einem Netzwerk veranschaulicht.
    • 14 ist ein Blockdiagramm einer Ausführungsform eines Systems.
    • 15 ist ein Blockdiagramm einer Ausführungsform eines computerzugänglichen Speicherungsmediums.
  • Während in dieser Offenbarung beschriebene Ausführungsformen verschiedenen Abänderungen und alternativen Formen unterliegen können, sind spezifische Ausführungsformen davon beispielhaft in den Zeichnungen gezeigt und werden hierin detailliert beschrieben. Es versteht sich jedoch, dass die Zeichnungen und die detaillierte Beschreibung dazu die Ausführungsformen der offenbarten besonderen Form nicht einschränken sollen, sondern dass im Gegenteil alle Modifikationen, Äquivalente und Alternativen, die innerhalb des Wesens und Schutzumfangs der beiliegenden Patentansprüche sind, abgedeckt werden sollen. Die hierin verwendeten Überschriften dienen nur organisatorischen Zwecken und sollen nicht verwendet werden, um den Umfang der Beschreibung einzuschränken.
  • DETAILLIERTE BESCHREIBUNG VON AUSFÜHRUNGSFORMEN
  • In einer Ausführungsform kann ein System-on-a-Chip (SOC) eine Vielzahl unabhängiger Netzwerke einschließen. Die Netzwerke können physisch unabhängig (z. B. dedizierte Drähte und andere Schaltlogik aufweisen, die das Netzwerk bilden) und logisch unabhängig (z. B. können durch Agenten im SOC bereitgestellte Kommunikationen logisch definiert werden, um auf einem ausgewählten Netzwerk der Vielzahl von Netzwerken übertragen zu werden, und können nicht durch eine Übertragung auf anderen Netzwerken beeinflusst werden) sein. In einigen Ausführungsformen können Netzwerkschalter eingeschlossen sein, um Pakete auf einem gegebenen Netzwerk zu übertragen. Die Netzwerkschalter können physisch Teil des Netzwerks sein (z. B. können dedizierte Netzwerkschalter für jedes Netzwerk vorhanden sein). In anderen Ausführungsformen kann ein Netzwerkschalter zwischen physisch unabhängigen Netzwerken geteilt werden und kann somit sicherstellen, dass eine Kommunikation, die auf einem der Netzwerke empfangen wird, auf diesem Netzwerk bleibt.
  • Durch Bereitstellen von physisch und logisch unabhängigen Netzwerken kann eine hohe Bandbreite über eine parallele Kommunikation auf den verschiedenen Netzwerken erreicht werden. Zusätzlich kann ein anderer Verkehr auf verschiedenen Netzwerken übertragen werden, und somit kann ein gegebenes Netzwerk für einen gegebenen Verkehrstyp optimiert werden. Zum Beispiel können Prozessoren, wie zentrale Verarbeitungseinheiten (CPUs), in einem SOC für eine Speicherlatenz empfindlich sein und können Daten zwischenspeichern, die voraussichtlich zwischen den Prozessoren und dem Speicher kohärent sind. Entsprechend kann ein CPU-Netzwerk bereitgestellt werden, auf dem die CPUs und die Speichersteuerungen in einem System Agenten sind. Das CPU-Netzwerk kann optimiert werden, um eine niedrige Latenz bereitzustellen. Zum Beispiel können in einer Ausführungsform virtuelle Kanäle für Anforderungen mit niedriger Latenz und Massenanforderungen vorhanden sein. Die Anforderungen mit niedriger Latenz können beim Weiterleiten in der Fabric und durch die Speichersteuerungen im Vergleich zu den Massenanforderungen bevorzugt sein. Das CPU-Netzwerk kann auch eine Cache-Kohärenz unterstützen, wobei Nachrichten und Protokolle definiert sind, um kohärent zu kommunizieren. Ein anderes Netzwerk kann ein Eingabe/Ausgabe-Netzwerk (E/A-Netzwerk) sein. Dieses Netzwerk kann durch verschiedene Peripherievorrichtungen („Peripheriegeräte“) verwendet werden, um mit Speicher zu kommunizieren. Das Netzwerk kann die von den Peripheriegeräten benötigte Bandbreite unterstützen und kann auch eine Cache-Kohärenz unterstützen. E/A-Verkehr kann jedoch manchmal eine deutlich höhere Latenz als CPU-Verkehr aufweisen. Durch Trennen des E/A-Verkehrs vom CPU-zu-Speicher-Verkehr kann der CPU-Verkehr weniger durch den E/A-Verkehr beeinflusst werden. Die CPUs können auch als Agenten auf dem E/A-Netzwerk eingeschlossen sein, um die Kohärenz zu verwalten und mit den Peripheriegeräten zu kommunizieren. Noch ein weiteres Netzwerk kann in einer Ausführungsform ein Netzwerk mit gelockerter Sortierung sein. Die CPU- und E/A-Netzwerke können beide Sortierungsmodelle unter den Kommunikationen auf diesen Netzwerken unterstützen, die das von den CPUs und Peripheriegeräten erwartete Sortieren bereitstellen. Das Netzwerk mit gelockerter Sortierung kann jedoch nichtkohärent sein und kann möglicherweise nicht so viele Sortierungsbeschränkungen durchsetzen. Das Netzwerk mit gelockerter Sortierung kann durch Grafikverarbeitungseinheiten (GPUs) verwendet werden, um mit Speichersteuerungen zu kommunizieren. Somit können die GPUs eine dedizierte Bandbreite in den Netzwerken aufweisen und können nicht durch das Sortieren, das die CPUs und/oder Peripheriegeräte erfordern, beschränkt sein. Andere Ausführungsformen können wie gewünscht eine beliebige Teilmenge der vorstehenden Netzwerke und/oder beliebige zusätzliche Netzwerke einsetzen.
  • Ein Netzwerkschalter kann eine Schaltung sein, die konfiguriert ist, um Kommunikationen auf einem Netzwerk zu empfangen und die Kommunikationen auf dem Netzwerk in Richtung des Ziels der Kommunikation weiterzuleiten. Zum Beispiel kann eine durch einen Prozessor bereitgestellte Kommunikation an eine Speichersteuerung übertragen werden, die den Speicher steuert, der der Adresse der Kommunikation zugeordnet ist. Bei jedem Netzwerkschalter kann die Kommunikation vorwärts in Richtung der Speichersteuerung übertragen werden. Wenn die Kommunikation ein Lesevorgang ist, kann die Speichersteuerung die Daten zurück an die Quelle kommunizieren und kann jeder Netzwerkschalter die Daten auf dem Netzwerk in Richtung der Quelle weiterleiten. In einer Ausführungsfonn kann das Netzwerk eine Vielzahl von virtuellen Kanälen unterstützen. Der Netzwerkschalter kann Ressourcen einsetzen, die für jeden virtuellen Kanal (z. B. Puffer) dediziert sind, sodass Kommunikationen auf den virtuellen Kanälen logisch unabhängig bleiben können. Der Netzwerkschalter kann auch eine Arbitrierungsschaltlogik einsetzen, um zwischen gepufferten Kommunikationen auszuwählen, die auf dem Netzwerk weitergeleitet werden sollen. Virtuelle Kanäle können Kanäle sein, die physisch ein Netzwerk teilen, die jedoch auf dem Netzwerk logisch unabhängig sind (z. B. blockieren Kommunikationen in einem virtuellen Kanal nicht den Fortschritt von Kommunikationen auf einem anderen virtuellen Kanal).
  • Ein Agent kann im Allgemeinen eine beliebige Vorrichtung (z. B. Prozessor, Peripheriegerät, Speichersteuerung usw.) sein, die Kommunikationen auf einem Netzwerk bereitstellen und/oder aufnehmen kann. Ein Quellagent erzeugt eine Kommunikation (stellt diese bereit) und ein Zielagent empfängt die Kommunikation (nimmt diese auf). Ein gegebener Agent kann ein Quellagent für einige Kommunikationen und ein Zielagent für andere Kommunikationen sein.
  • Nun Bezug nehmend auf die Figuren ist 1 ein generisches Diagramm, das physisch und logisch unabhängige Netzwerke veranschaulicht. 2-4 sind Beispiele verschiedener Netzwerktopologien. 5 ist ein Beispiel eines SOC mit einer Vielzahl physisch und logisch unabhängiger Netzwerke. 6-8 veranschaulichen die verschiedenen Netzwerke von 5 zusätzlicher Klarheit halber getrennt. 9 ist ein Blockdiagramm eines Systems, einschließlich zwei Halbleiter-Dies, das eine Skalierbarkeit der Netzwerke auf mehrere Instanzen des SOC veranschaulicht. 10 und 11 sind beispielhafte Agenten, die detaillierter gezeigt sind. 12 zeigt verschiedene virtuelle Kanäle und Kommunikationstypen und welche Netzwerke in 5, auf die die virtuellen Kanäle und Kommunikationstypen anwendbar sind. 13 ist ein Flussdiagramm, das ein Verfahren veranschaulicht, und 14 und 15 sind beispielhafte Ausführungsformen eines Systems und eines computerzugänglichen Speicherungsmediums. Die nachstehende Beschreibung stellt weitere Details basierend auf den Zeichnungen bereit.
  • 1 ist ein Blockdiagramm eines Systems, das eine Ausführungsform von mehreren Netzwerkverschaltungsagenten einschließt. In 1 sind Agenten 10A, 10B und 10C veranschaulicht, obwohl in verschiedenen Ausführungsformen eine beliebige Anzahl von Agenten eingeschlossen sein kann. Die Agenten 10A-10B sind mit einem Netzwerk 12A gekoppelt, und die Agenten 10A und 10C sind mit einem Netzwerk 12B gekoppelt. Eine beliebige Anzahl von Netzwerken 12A-12B kann ebenfalls in verschiedenen Ausführungsformen eingeschlossen sein. Das Netzwerk 12A schließt eine Vielzahl von Netzwerkschaltern, einschließlich Netzwerkschaltern 14AA, 14AB, 14AM und 14AN (zusammen Netzwerkschalter 14A), ein; und in ähnlicher Weise schließt das Netzwerk 12B eine Vielzahl von Netzwerkschaltern, einschließlich Netzwerkschaltern 14BA, 14BB, 14BM und 14BN (zusammen Netzwerkschalter 14B), ein. Verschiedene Netzwerke 12A-12B können verschiedene Anzahlen von Netzwerkschaltern 14A-14B einschließen. Zusätzlich schließen die Netzwerke 12A-12B physisch getrennte Verbindungen („Drähte“, „Busse“ oder „Verschaltung“) ein, die in 1 als verschiedene Pfeile veranschaulicht sind.
  • Da jedes Netzwerk 12A-12B seine eigene(n) physisch und logisch getrennte(n) Verschaltung und Netzwerkschalter aufweist, sind die Netzwerke 12A-12B physisch und logisch getrennt. Eine Kommunikation auf dem Netzwerk 12A ist von einer Kommunikation im Netzwerk 12B unbeeinflusst und umgekehrt. Selbst die Bandbreite an der Verschaltung in den jeweiligen Netzwerken 12A-12B ist getrennt und unabhängig.
  • Optional kann ein Agent 10A-10C eine Netzwerkschnittstellenschaltung (Bezugszeichen 16A-16C) einschließen oder damit gekoppelt sein. Einige Agenten 10A-10C können die Netzwerkschnittstellen 16A-16C einschließen oder damit gekoppelt sein, während andere Agenten 10A-10C die Netzwerkschnittstellen 16A-16C nicht einschließen können oder nicht damit gekoppelt sein können. Die Netzwerkschnittstellen 16A-16C können konfiguriert sein, um Verkehr auf den Netzwerken 12A-12B für die entsprechenden Agenten 10A-10C zu übertragen und zu empfangen. Die Netzwerkschnittstellen 16A-16C können konfiguriert sein, um Kommunikationen, die durch die entsprechenden Agenten 10A-10C ausgegeben werden, umzuwandeln oder zu modifizieren, um dem Protokoll/Format der Netzwerke 12A-12B zu entsprechen, und um Modifikationen zu entfernen oder empfangene Kommunikationen in das Protokoll/Format, das durch die Agenten 10A-10C verwendet wird, umzuwandeln. Somit können die Netzwerkschnittstellen 16A-16C für die Agenten 10A-10C verwendet werden, die nicht speziell dafür ausgelegt sind, mit den Netzwerken 12A-12B direkt verbunden zu werden. In einigen Fällen kann ein Agent 10A-10C auf mehr als einem Netzwerk kommunizieren (z. B. kommuniziert der Agent 10A auf beiden Netzwerken 12A-12B in 1). Die entsprechende Netzwerkschnittstelle 16A kann konfiguriert sein, um durch den Agenten 10A an die Netzwerke 12A-12B ausgegebenen Verkehr danach zu trennen, welchem Netzwerk 12A-12B jede Kommunikation zugewiesen ist; und die Netzwerkschnittstelle 16A kann konfiguriert sein, um von den Netzwerken 12A-12B empfangenen Verkehr für den entsprechenden Agenten 10A zu kombinieren. Ein beliebiger Mechanismus zum Bestimmen, welches Netzwerk 12A-12B eine gegebene Kommunikation tragen soll, kann verwendet werden (z. B. basierend auf dem Typ der Kommunikation, dem Zielagenten 10B-10C für die Kommunikation, einer Adresse usw. in verschiedenen Ausführungsformen).
  • Da die Netzwerkschnittstellenschaltungen optional sind und viele nicht für Agenten benötigt werden, die die Netzwerke 12A-12B direkt unterstützen, werden die Netzwerkschnittstellenschaltungen der Einfachheit halber aus den übrigen Zeichnungen weggelassen. Es versteht sich jedoch, dass die Netzwerkschnittstellenschaltungen in einer beliebigen der veranschaulichten Ausführungsformen durch einen beliebigen Agenten oder eine beliebige Teilmenge von Agenten oder sogar alle der Agenten eingesetzt werden können.
  • In einer Ausführungsform kann das System von 1 als ein SOC implementiert sein, und die in 1 veranschaulichten Komponenten können auf einem einzelnen Halbleitersubstrat-Die gebildet sein. Die im SOC eingeschlossene Schaltlogik kann die Vielzahl von Agenten 10A-10C und die Vielzahl von Netzwerkschaltern 14A-14B, die mit der Vielzahl von Agenten 10A-10C gekoppelt sind, einschließen. Die Vielzahl von Netzwerkschaltern 14A-14B sind miteinander verbunden, um eine Vielzahl von physischen und logisch unabhängigen Netzwerken 12A-12B zu bilden.
  • Da die Netzwerke 12A-12B physisch und logisch unabhängig sind, können verschiedene Netzwerke verschiedene Topologien aufweisen. Zum Beispiel kann ein gegebenes Netzwerk einen Ring, eine Masche, einen Baum, einen Stern, einen vollständig verbundenen Satz von Netzwerkschaltern (z. B. einen Schalter, der mit jedem anderen Schalter im Netzwerk direkt verbunden ist), einen geteilten Bus mit mehreren Agenten, die mit dem Bus gekoppelt sind, usw. oder Hybride einer oder mehrerer der Topologien aufweisen. Jedes Netzwerk 12A-12B kann eine Topologie einsetzen, die zum Beispiel die für dieses Netzwerk gewünschten Bandbreiten- und Latenzattribute bereitstellt oder ein beliebiges gewünschtes Attribut für das Netzwerk bereitstellt. Somit kann das SOC allgemein ein erstes Netzwerk, das gemäß einer ersten Topologie aufgebaut ist, und ein zweites Netzwerk, das gemäß einer zweiten Topologie, die sich von der ersten Topologie unterscheidet, aufgebaut ist, einschließen.
  • 2-4 veranschaulichen beispielhafte Topologien. 2 ist ein Blockdiagramm einer Ausführungsform eines Netzwerks, das eine Ringtopologie verwendet, um die Agenten 10A-10C zu koppeln. Im Beispiel von 2 ist der Ring aus den Netzwerkschaltern 14AA-14AH gebildet. Der Agent 10A ist mit dem Netzwerkschalter 14AA gekoppelt; der Agent 10B ist mit dem Netzwerkschalter 14AB gekoppelt und der Agent 10C ist mit dem Netzwerkschalter 14AE gekoppelt.
  • In einer Ringtopologie kann jeder Netzwerkschalter 14AA-14AH mit zwei anderen Netzwerkschaltern 14AA-14AH verbunden sein, und die Schalter bilden einen Ring, sodass ein beliebiger Netzwerkschalter 14AA-14AH einen beliebigen anderen Netzwerkschalter im Ring erreichen kann, indem er eine Kommunikation auf dem Ring in Richtung des anderen Netzwerkschalters überträgt. Eine gegebene Kommunikation kann einen oder mehrere Zwischennetzwerkschalter im Ring passieren, um den Zielnetzwerkschalter zu erreichen. Wenn ein gegebener Netzwerkschalter 14AA-14AH eine Kommunikation von einem benachbarten Netzwerkschalter 14AA-14AH auf dem Ring empfängt, kann der gegebene Netzwerkschalter die Kommunikation untersuchen, um zu bestimmen, dass in einem Agenten 10A-10C, mit dem der gegebene Netzwerkschalter gekoppelt ist, das Ziel der Kommunikation ist. Wenn dies der Fall ist, kann der gegebene Netzwerkschalter die Kommunikation beenden und die Kommunikation an den Agenten weiterleiten. Wenn nicht, kann der gegebene Netzwerkschalter die Kommunikation an den nächsten Netzwerkschalter auf dem Ring weiterleiten (z. B. den anderen Netzwerkschalter 14AA-14AH, der zu dem gegebenen Netzwerkschalter benachbart ist und nicht der benachbarte Netzwerkschalter ist, von dem der gegebene Netzwerkschalter die Kommunikation empfangen hat). Ein zu einem gegebenen Netzwerkschalter benachbarter Netzwerkschalter kann ein Netzwerkschalter sein, an den der gegebene Netzwerkschalter eine Kommunikation direkt übertragen kann, ohne dass sich die Kommunikation durch beliebige Zwischennetzwerkschalter bewegt.
  • 3 ist ein Blockdiagramm einer Ausführungsform eines Netzwerks, das eine Maschentopologie verwendet, um die Agenten 10A-10P zu koppeln. Wie in 3 gezeigt, kann das Netzwerk die Netzwerkschalter 14AA-14AH einschließen. Jeder Netzwerkschalter 14AA-14AH ist mit zwei oder mehr anderen Netzwerkschaltern gekoppelt. Zum Beispiel ist der Netzwerkschalter 14AA mit den Netzwerkschaltern 14AB und 14AE gekoppelt; ist der Netzwerkschalter 14AB mit den Netzwerkschaltern 14AA, 14AF und 14AC gekoppelt usw., wie in 3 veranschaulicht. Somit können verschiedene Netzwerkschalter in einem Maschennetzwerk mit verschiedenen Anzahlen anderer Netzwerkschalter gekoppelt sein. Des Weiteren, während die Ausführungsform von 3 eine relativ symmetrische Struktur aufweist, können andere Maschennetzwerke z. B. abhängig von den verschiedenen Verkehrsmustern, die voraussichtlich im Netzwerk vorherrschen, asymmetrisch sein. An jedem Netzwerkschalter 14AA-14AH können ein oder mehrere Attribute einer empfangenen Kommunikation verwendet werden, um den benachbarten Netzwerkschalter 14AA-14AH zu bestimmen, an den der empfangende Netzwerkschalter 14AA-14AH die Kommunikation überträgt (sofern nicht ein Agent 10A-10P, mit dem der empfangende Netzwerkschalter 14AA-14AH gekoppelt ist, das Ziel der Kommunikation ist, wobei in diesem Fall der empfangende Netzwerkschalter 14AA-14AH die Kommunikation auf dem Netzwerk beenden und diese an den Zielagenten 10A-10P bereitstellen kann). Zum Beispiel können in einer Ausführungsform die Netzwerkschalter 14AA-14AH bei der Systeminitialisierung programmiert werden, um Kommunikationen basierend auf verschiedenen Attributen umzuleiten.
  • In einer Ausführungsform können Kommunikationen basierend auf dem Zielagenten umgeleitet werden. Die Umleitungen können konfiguriert sein, um die Kommunikationen durch die geringste Anzahl von Netzwerkschaltern (den „kürzesten Pfad) zwischen dem Quell- und Zielagenten zu transportieren, die in der Maschentopologie unterstützt werden kann. Alternativ können verschiedene Kommunikationen für einen gegebenen Quellagenten zu einem gegebenen Zielagenten verschiedene Wege durch die Masche nehmen. Zum Beispiel können latenzempfindliche Kommunikationen über einen kürzeren Pfad übertragen werden, während weniger kritische Kommunikationen einen anderen Pfad nehmen können, um ein Verbrauchen von Bandbreite auf dem kurzen Pfad zu vermeiden, wobei der andere Pfad während der Verwendung zum Beispiel weniger stark belastet sein kann.
  • 3 kann ein Beispiel einer teilweise verbundenen Masche sein: mindestens einige Kommunikationen können einen oder mehrere Zwischennetzwerkschalter in der Masche passieren. Ein vollständig verbundenes Netzwerk kann eine Verbindung von jedem Netzwerkschalter zu jedem anderen Netzwerkschalter aufweisen, und somit kann jede Kommunikation übertragen werden, ohne dass Zwischennetzwerkschalter durchquert werden. In verschiedenen Ausführungsformen kann ein beliebiger Grad an Verbindung miteinander verwendet werden.
  • 4 ist ein Blockdiagramm einer Ausführungsform eines Netzwerks, das eine Baumtopologie verwendet, um die Agenten 10A-10E zu koppeln. Die Netzwerkschalter 14AA-14AG sind in diesem Beispiel miteinander verbunden, um den Baum zu bilden.
  • Der Baum ist eine Form eines hierarchischen Netzwerks, in dem Randnetzwerkschalter (z. B. 14AA, 14AB, 14AC, 14AD und 14AG in 4), die mit den Agenten 10A-10E koppeln, und Zwischennetzwerkschalter (z. B. 14AE und 14AF in 4), die nur mit anderen Netzwerkschaltern koppeln, vorhanden sind. Ein Baumnetzwerk kann z. B. verwendet werden, wenn ein bestimmter Agent häufig ein Ziel für Kommunikationen ist, die durch andere Agenten ausgegeben werden, oder häufig ein Quellagent für Kommunikationen ist. Somit kann zum Beispiel das Baumnetzwerk von 4 für den Agenten 10E verwendet werden, der eine Hauptquelle oder ein Hauptziel für Kommunikationen ist. Zum Beispiel kann der Agent 10E eine Speichersteuerung sein, die häufig ein Ziel für Speichertransaktionen wäre.
  • Es gibt viele andere mögliche Topologien, die in anderen Ausführungsformen verwendet werden können. Zum Beispiel weist eine Sterntopologie einen Quell- /Zielagenten in der „Mitte“ eines Netzwerks auf, und andere Agenten können direkt oder durch eine Reihe von Netzwerkschaltern mit dem mittleren Agenten koppeln. Wie eine Baumtopologie kann eine Sterntopologie in einem Fall verwendet werden, in dem der mittlere Agent häufig eine Quelle oder ein Ziel von Kommunikationen ist. Es kann eine geteilte Bustopologie verwendet werden, und Hybride von zwei oder mehr einer beliebigen der Topologien können verwendet werden.
  • 5 ist ein Blockdiagramm einer Ausführungsform eines System-on-a-Chip (SOC) 20, das mehrere Netzwerke für eine Ausführungsform aufweist. In der Ausführungsform von 5 schließt das SOC 20 eine Vielzahl von Prozessor-Clustern (P-Clustern) 22A-22B, eine Vielzahl von Eingabe/Ausgabe-Clustern (E/A-Clustern) 24A-24D, eine Vielzahl von Speichersteuerungen 26A-26D und eine Vielzahl von Grafikverarbeitungseinheiten (GPUs) 28A-28D ein. Wie durch den Namen (SOC) impliziert, können die in 5 veranschaulichten Komponenten (außer den Speichern 30A-30D in dieser Ausführungsform) auf einem einzelnen Halbleiter-Die oder „Chip“ integriert sein. Andere Ausführungsformen können jedoch zwei oder mehr Dies einsetzen, die auf eine beliebige gewünschte Weise gekoppelt oder gehäust sind. Zusätzlich, während spezifische Anzahlen von P-Clustern 22A-22B, E/A-Clustern 24A-24D, Speichersteuerungen 26A-26D und GPUs 28A-28D im Beispiel von 5 gezeigt sind, können die Anzahl und Anordnung einer beliebigen der vorstehenden Komponenten variiert werden und können mehr oder weniger als die in 5 gezeigte Anzahl sein. Die Speicher 30A-30D sind mit dem SOC 20 und genauer mit den Speichersteuerungen 26A-26D gekoppelt, wie in 5 gezeigt.
  • In der veranschaulichten Ausführungsform schließt das SOC 20 drei physisch und logisch unabhängige Netzwerke, die aus einer Vielzahl von Netzwerkschaltern 32, 34 und 36 gebildet sind, wie in 5 gezeigt, und eine Verschaltung dazwischen, die als Pfeile zwischen den Netzwerkschaltern und anderen Komponenten veranschaulicht ist, ein. Andere Ausführungsformen können mehr oder weniger Netzwerke einschließen. Die Netzwerkschalter 32, 34 und 36 können zum Beispiel Instanzen von Netzwerkschaltern sein, die den Netzwerkschaltern 14A-14B ähnlich sind, wie vorstehend in Bezug auf 1-4 beschrieben. Die Vielzahl von Netzwerkschaltern 32, 34 und 36 sind mit der Vielzahl von P-Clustern 22A-22B, der Vielzahl von GPUs 28A-28D, der Vielzahl von Speichersteuerungen 26A-25B und der Vielzahl von E/A-Clustern 24A-24D gekoppelt, wie in 5 gezeigt. Die P-Cluster 22A-22B, die GPUs 28A-28B, die Speichersteuerungen 26A-26B und die E/A-Cluster 24A-24D können alle Beispiele von Agenten sein, die auf den verschiedenen Netzwerken des SOC 20 kommunizieren. Andere Agenten können wie gewünscht eingeschlossen sein.
  • In 5 ist ein Netzwerk einer zentralen Verarbeitungseinheit (CPU) aus einer ersten Teilmenge der Vielzahl von Netzwerkschaltern (z. B. den Netzwerkschaltern 32) und einer Verschaltung dazwischen, die als kurze/lange gestrichelte Linien veranschaulicht ist, wie Bezugszeichen 38, gebildet. Das CPU-Netzwerk koppelt die P-Cluster 22A-22B und die Speichersteuerungen 26A-26D. Ein E/A-Netzwerk wird aus einer zweiten Teilmenge der Vielzahl von Netzwerkschaltern (z. B. den Netzwerkschaltern 34) und einer Verschaltung dazwischen, die als durchgezogene Linien veranschaulicht ist, wie Bezugszeichen 40, gebildet. Das E/A-Netzwerk koppelt die P-Cluster 22A-22B, die E/A-Cluster 24A-24D und die Speichersteuerungen 26A-26B. Ein Netzwerk mit gelockerter Sortierung wird aus einer dritten Teilmenge der Vielzahl von Netzwerkschaltern (z. B. den Netzwerkschaltern 36) und einer Verschaltung dazwischen, die als kurze gestrichelte Linien veranschaulicht ist, wie Bezugszeichen 42, gebildet. Das Netzwerk mit gelockerter Sortierung koppelt die GPUs 28A-28D und die Speichersteuerungen 26A-26D. In einer Ausführungsform kann das Netzwerk mit gelockerter Sortierung außerdem auch ausgewählte der E/A-Cluster 24A-24D koppeln. Wie vorstehend erwähnt, sind das CPU-Netzwerk, das E/A-Netzwerk und das Netzwerk mit gelockerter Sortierung voneinander unabhängig (z. B. logisch und physisch unabhängig). In einer Ausführungsform unterstützen das Protokoll auf dem CPU-Netzwerk und das E/A-Netzwerk eine Cache-Kohärenz (z. B. sind die Netzwerke kohärent). Das Netzwerk mit gelockerter Sortierung unterstützt möglicherweise keine Cache-Kohärenz (z. B. ist das Netzwerk nichtkohärent). Das Netzwerk mit gelockerter Sortierung weist im Vergleich zum CPU-Netzwerk und zum E/A-Netzwerk auch reduzierte Sortierungsbeschränkungen auf. Zum Beispiel wird in einer Ausführungsform für jedes Netzwerk ein Satz von virtuellen Kanälen und Unterkanälen innerhalb der virtuellen Kanäle definiert. Für die CPU- und E/A-Netzwerke können Kommunikationen, die zwischen dem gleichen Quell- und Zielagenten und im gleichen virtuellen Kanal und Unterkanal sind, sortiert werden. Für das Netzwerk mit gelockerter Sortierung können Kommunikationen zwischen dem gleichen Quell- und Zielagenten sortiert werden. In einer Ausführungsform können nur Kommunikationen an die gleiche Adresse (bei einer gegebenen Granularität, wie einem Cache-Block) zwischen dem gleichen Quell- und Zielagenten sortiert werden. Da auf dem Netzwerk mit gelockerter Sortierung eine weniger strenge Sortierung durchgesetzt wird, kann im Durchschnitt eine höhere Bandbreite erreicht werden, weil es zum Beispiel Transaktionen ermöglicht werden kann, in anderer Reihenfolge abgeschlossen zu werden, wenn jüngere Transaktionen vor älteren Transaktionen zum Abschluss bereit sind.
  • Die Verschaltung zwischen den Netzwerkschaltern 32, 34 und 36 kann in verschiedenen Ausführungsformen eine beliebige Form und Konfiguration aufweisen. Zum Beispiel kann die Verschaltung in einer Ausführungsform in unidirektionalen Punkt-zu-Punkt-Links (z. B. Bussen oder seriellen Links) bestehen. Pakete können auf den Links übertragen werden, wobei das Paketformat Daten einschließen kann, die den virtuellen Kanal und Unterkanal, in dem sich ein Paket bewegt, eine Speicheradresse, Quell- und Zielagenten-Kennungen, Daten (falls zutreffend) usw. angeben. Mehrere Pakete können eine gegebene Transaktion bilden. Eine Transaktion kann eine vollständige Kommunikation zwischen einem Quellagenten und einem Zielagenten sein. Zum Beispiel kann eine Lesetransaktion in Abhängigkeit vom Protokoll ein Leseanforderungspaket vom Quellagenten zum Zielagenten, ein oder mehrere Kohärenznachrichtenpakete unter Zwischenspeicherungsagenten und dem Zielagenten und/oder Quellagenten, wenn die Transaktion kohärent ist, ein Datenantwortpaket vom Zielagenten zum Quellagenten und möglicherweise ein Abschlusspaket vom Quellagenten zum Zielagenten einschließen. Eine Schreibtransaktion kann ein Schreibanforderungspaket vom Quellagenten zum Zielagenten, ein oder mehrere Kohärenznachrichtenpakete wie bei der Lesetransaktion, wenn die Transaktion kohärent ist, und möglicherweise ein Abschlusspaket vom Zielagenten zum Quellagenten einschließen. Die Schreibdaten können in einer Ausführungsform im Schreibanforderungspaket eingeschlossen sein oder können in einem getrennten Schreibdatenpaket vom Quellagenten an den Zielagenten übertragen werden.
  • Die Anordnung von Agenten in 5 kann in einer Ausführungsform die physische Anordnung von Agenten auf dem Halbleiter-Die, das den SOC 20 bildet, angeben. Das heißt, dass 5 als der Oberflächenbereich des Halbleiter-Dies betrachtet werden kann und sich die Orte verschiedener Komponenten in 5 ihren physischen Orten mit dem Bereich annähern können. Somit können zum Beispiel die E/A-Cluster 24A-24D im Halbleiter-Die-Bereich angeordnet sein, der durch die Oberseite des SOC 20 (wie in 5 ausgerichtet) dargestellt ist. Die P-Cluster 22A-22B können im Bereich, der durch den Abschnitt des SOC 20 unterhalb und zwischen der Anordnung der E/A-Cluster 24A-24D dargestellt ist, wie in 5 ausgerichtet angeordnet sein. Die GPUs 24A-28D können zentral angeordnet sein und sich in Richtung des durch die Unterseite des SOC 20 dargestellten Bereichs wie in 5 ausgerichtet erstrecken. Die Speichersteuerungen 26A-26D können auf den Bereichen, die durch die rechte und die linke Seite des SOC 20 dargestellt sind, wie in 5 ausgerichtet angeordnet sein.
  • In einer Ausführungsform kann das SOC 20 dazu ausgelegt sein, direkt mit einer oder mehreren anderen Instanzen des SOC 20 zu koppeln, wodurch ein gegebenes Netzwerk auf den Instanzen als logisch ein Netzwerk gekoppelt wird, auf dem ein Agent auf einem Die in der gleichen Weise, in der der Agent innerhalb eines anderen Agenten auf dem gleichen Die kommuniziert, logisch über das Netzwerk mit einem Agenten auf einem anderen Die kommunizieren kann. Während die Latenz verschieden sein kann, kann die Kommunikation auf die gleiche Weise durchgeführt werden. Somit, wie in 5 veranschaulicht, erstrecken sich die Netzwerke zur Unterseite des SOC 20, wie in 5 ausgerichtet. Schnittstellenschaltlogik (z. B. Serialisierer/Deserialisierer-Schaltungen (SERDES-Schaltungen)), die in 5 nicht gezeigt ist, kann verwendet werden, um über die Die-Grenze hinweg mit einem anderen Die zu kommunizieren. Somit können die Netzwerke auf zwei oder mehr Halbleiter-Dies skalierbar sein. Zum Beispiel können die zwei oder mehr Halbleiter-Dies als ein einzelnes System konfiguriert sein, in dem das Vorhandensein mehrerer Halbleiter-Dies für Software, die auf dem einzelnen System ausgeführt wird, transparent ist. In einer Ausführungsform können die Verzögerungen als ein Gesichtspunkt von Softwaretransparenz für das Multi-Die-System in einer Kommunikation von Die zu Die minimiert werden, sodass eine Die-zu-Die-Kommunikation im Vergleich zu einer Intra-Die-Kommunikation in der Regel keine signifikante zusätzliche Latenz aufweist. In anderen Ausführungsformen können die Netzwerke geschlossene Netzwerke sein, die nur intra-Die kommunizieren.
  • Wie vorstehend erwähnt, können verschiedene Netzwerke verschiedene Topologien aufweisen. In der Ausführungsform von 5 implementieren die CPU- und E/A-Netzwerke zum Beispiel eine Ringtopologie, und die gelockerte Sortierung kann eine Maschentopologie implementieren. In anderen Ausführungsformen können jedoch andere Topologien verwendet werden. 6, 7 und 8 veranschaulichen Abschnitte des SOC 30, die die verschiedenen Netzwerke einschließen: CPU (6), E/A (7) und gelockerte Sortierung (8). Wie in 6 und 7 zu sehen ist, bilden die Netzwerkschalter 32 bzw. 34 einen Ring, wenn sie mit den entsprechenden Schaltern auf einem anderen Die gekoppelt sind. Wenn nur ein einzelner Die verwendet wird, kann eine Verbindung zwischen den beiden Netzwerkschaltern 32 oder 34 an der Unterseite des SOC 20 hergestellt werden, wie in 6 und 7 ausgerichtet (z. B. über eine externe Verbindung an den Stiften des SOC 20). Alternativ können die zwei Netzwerkschalter 32 oder 34 an der Unterseite Links zwischeneinander aufweisen, die in einer Konfiguration mit einem einzelnen Die verwendet werden können, oder das Netzwerk kann mit einer Daisy-Chain-Topologie arbeiten.
  • In ähnlicher Weise ist in 8 die Verbindung der Netzwerkschalter 36 in einer Maschentopologie zwischen den GPUs 28A-28D und den Speichersteuerungen 26A-26D gezeigt. Wie zuvor erwähnt, können in einer Ausführungsform auch einer oder mehrere der E/A-Cluster 24A-24D mit dem Netzwerk mit gelockerter Sortierung gekoppelt sein. Zum Beispiel können die E/A-Cluster 24A-24D, die Videoperipheriegeräte (z. B. eine Anzeigesteuerung, einen Speicherskalierer/-rotator, einen Videocodierer/-decodierer usw.) einschließen, Zugriff auf das Netzwerk mit gelockerter Sortierung für Videodaten haben.
  • Die Netzwerkschalter 36 nahe der Unterseite des SOC 30, wie in 8 ausgerichtet, können Verbindungen einschließen, die zu einer anderen Instanz des SOC 30 umgeleitet werden können, wodurch es dem Maschennetzwerk ermöglicht wird, sich über mehrere Dies zu erstrecken, wie vorstehend in Bezug auf die CPU- und E/A-Netzwerke erörtert. In einer Konfiguration mit einem einzelnen Die können die Pfade, die sich aus dem Die heraus erstrecken, nicht verwendet werden. 9 ist ein Blockdiagramm eines Zwei-Die-Systems, in dem sich jedes Netzwerk über die zwei SOC-Dies 20A-20B erstreckt, wodurch Netzwerke gebildet werden, die logisch gleich sind, obwohl sie sich über zwei Dies erstrecken. Die Netzwerkschalter 32, 34 und 36 wurden der Einfachheit halber in 9 entfernt, und das Netzwerk mit gelockerter Sortierung wurde auf eine Linie vereinfacht, kann jedoch in einer Ausführungsform eine Masche sein. Das E/A-Netzwerk 44 ist als durchgezogene Linie gezeigt, das CPU-Netzwerk 46 ist als eine alternierende lange und kurze gestrichelte Linie gezeigt und das Netzwerk mit gelockerter Sortierung 48 ist als gestrichelte Linie gezeigt. Die Ringstruktur der Netzwerke 44 und 46 ist auch in 9 ersichtlich. Während zwei Dies in 9 gezeigt sind, können andere Ausführungsformen mehr als zwei Dies einsetzen.
  • Die Netzwerke können in verschiedenen Ausführungsformen per Daisy-Chain miteinander verbunden sein, mit Punkt-zu-Punkt-Links zwischen jedem Die-Paar vollständig verbunden sein oder eine beliebige andere Verbindungsstruktur aufweisen.
  • In einer Ausführungsform kann die physische Trennung des E/A-Netzwerks vom CPU-Netzwerk das System dabei unterstützen, einen Speicherzugriff mit niedriger Latenz durch die Prozessor-Cluster 22A-22B bereitzustellen, da der E/A-Datenverkehr auf das E/A-Netzwerk verlagert werden kann. Die Netzwerke verwenden die gleichen Speichersteuerungen für einen Speicherzugriff, sodass die Speichersteuerungen dazu ausgelegt sein können, den Speicherverkehr vom CPU-Netzwerk bis zu einem gewissen Grad gegenüber dem Speicherverkehr vom E/A-Netzwerk zu begünstigen. Die Prozessor-Cluster 22A-22B können ebenfalls Teil des E/A-Netzwerks sein, um auf Vorrichtungsplatz in den E/A-Clustern 24A-24D zuzugreifen (z. B. mit programmierten Eingabe/Ausgabe-Transaktionen (PIO-Transaktionen)). Speichertransaktionen, die durch die Prozessor-Cluster 22A-22B initiiert werden, können jedoch über das CPU-Netzwerk übertragen werden. Somit können die CPU-Cluster 22A-22B Beispiele eines Agenten sein, der mit mindestens zwei der Vielzahl von physisch und logisch unabhängigen Netzwerken gekoppelt ist. Der Agent kann konfiguriert sein, um eine zu übertragende Transaktion zu erzeugen und einen der mindestens zwei der Vielzahl von physisch und logisch unabhängigen Netzwerken auszuwählen, auf denen die Transaktion basierend auf einem Typ der Transaktion (z. B. Speicher oder PIO) übertragen werden soll.
  • Verschiedene Netzwerke können verschiedene Anzahlen von physischen Kanälen und/oder virtuellen Kanälen einschließen. Zum Beispiel kann das E/A-Netzwerk mehrere Anforderungskanäle und Abschlusskanäle aufweisen, während das CPU-Netzwerk einen Anforderungskanal und einen Abschlusskanal aufweisen kann (oder umgekehrt). Die Anforderungen, die auf einem gegebenen Anforderungskanal übertragen werden, wenn mehr als einer vorhanden ist, können auf eine beliebige gewünschte Weise bestimmt werden (z. B. durch einen Typ der Anforderung, durch eine Priorität der Anforderung, um Bandbreite über die physischen Kanäle auszugleichen, usw.). In ähnlicher Weise können die E/A- und CPU-Netzwerke einen virtuellen Snoop-Kanal einschließen, um Snoop-Anforderungen zu übertragen, aber das Netzwerk mit gelockerter Sortierung schließt den virtuellen Snoop-Kanal unter Umständen nicht ein, da es in dieser Ausführungsform nichtkohärent ist.
  • 10 ist ein Blockdiagramm einer Ausführungsform eines Eingabe/Ausgabe-Clusters (E/A-Clusters) 24A, das detaillierter veranschaulicht ist. Andere E/A-Cluster 24B-24D können ähnlich sein. In der Ausführungsform von 10 schließt der E/A-Cluster 24A Peripheriegeräte 50 und 52, eine Peripheriegeräteschnittstellensteuerung 54, eine lokale Verschaltung 56 und eine Brücke 58 ein. Das Peripheriegerät 52 kann mit einer externen Komponente 60 gekoppelt sein. Die Peripheriegeräteschnittstellensteuerung 54 kann mit einer Peripheriegeräteschnittstelle 62 gekoppelt sein. Die Brücke 58 kann mit einem Netzwerkschalter 34 (oder mit einer Netzwerkschnittstelle, die mit dem Netzwerkschalter 34 koppelt) gekoppelt sein.
  • Die Peripheriegeräte 50 und 52 können einen beliebigen Satz zusätzlicher Hardwarefunktionalität (z. B. über CPUs, GPUs und Speichersteuerungen hinaus) einschließen, der in dem SOC 20 eingeschlossen ist. Zum Beispiel können die Peripheriegeräte 50 und 52 Videoperipheriegeräte einschließen, wie einen Bildsignalprozessor, der konfiguriert ist, um Bilderfassungsdaten von einer Kamera oder einem anderen Bildsensor, Videocodierer/-decodierern, Skalierern, Rotatoren, Mixern, einer Anzeigesteuerung usw. zu verarbeiten. Die Peripheriegeräte können Audioperipheriegeräte, wie Mikrofone, Lautsprecher, Schnittstellen zu Mikrofonen und Lautsprechern, Audioprozessoren, Digitalsignalprozessoren, Mischer usw., einschließen. Die Peripheriegeräte können Netzwerkperipheriegeräte, wie Medienzugriffssteuerungen (MACs), einschließen. Die Peripheriegeräte können andere Typen von Speichersteuerungen, wie nichtflüchtige Speichersteuerungen, einschließen. Einige Peripheriegeräte 52 können eine chipinterne Komponente und eine chipexterne Komponente 60 einschließen. Die Peripheriegeräteschnittstellensteuerung 54 kann Schnittstellensteuerungen für verschiedene Schnittstellen 62 einschließen, die außerhalb des SOC 20 sind, einschließlich Schnittstellen, wie Universal Serial Bus (USB), Peripheral Component Interconnect (PCI), einschließlich PCI Express (PCIe), serieller und paralleler Anschlüsse usw.
  • Die lokale Verschaltung 56 kann eine Verschaltung sein, auf der die verschiedenen Peripheriegeräte 50, 52 und 54 kommunizieren. Die lokale Verschaltung 56 kann sich von der in 5 gezeigten systemweiten Verschaltung (z. B. der CPU, E/A und gelockerten Netzwerken) unterscheiden. Die Brücke 58 kann konfiguriert sein, um Kommunikationen auf der lokalen Verschaltung in Kommunikationen auf der systemweiten Verschaltung umzuwandeln und umgekehrt. Die Brücke 58 kann in einer Ausführungsform mit einem der Netzwerkschalter 34 gekoppelt sein. Die Brücke 58 kann auch ein Sortieren unter den von den Peripheriegeräten 50, 52 und 54 ausgegebenen Transaktionen verwalten. Zum Beispiel kann die Brücke 58 ein Cache-Kohärenz-Protokoll verwenden, das auf den Netzwerken unterstützt wird, um das Sortieren der Transaktionen für die Peripheriegeräte 50, 52 und 54 usw. sicherzustellen. Verschiedene Peripheriegeräte 50, 52 und 54 können verschiedene Sortierungsanforderungen aufweisen, und die Brücke 58 kann konfiguriert sein, um sich an die verschiedenen Anforderungen anzupassen. Die Brücke 58 kann in einigen Ausführungsformen auch verschiedene leistungssteigernde Merkmale implementieren. Zum Beispiel kann die Brücke 58 Daten für eine gegebene Anforderung vorabrufen. Die Brücke 58 kann eine kohärente Kopie eines Cache-Blocks (z. B. im exklusiven Zustand) erfassen, an die eine oder mehrere Transaktionen von den Peripheriegeräten 50, 52 und 54 gerichtet sind, um zu ermöglichen, dass die Transaktionen lokal abgeschlossen werden, und um ein Sortieren durchzusetzen. Die Brücke 58 kann spekulativ eine exklusive Kopie eines oder mehrerer Cache-Blöcke erfassen, auf die nachfolgende Transaktionen gerichtet sind, und kann den Cache-Block verwenden, um die nachfolgenden Transaktionen abzuschließen, wenn der exklusive Zustand erfolgreich beibehalten wird, bis die nachfolgenden Transaktionen abgeschlossen werden können (z. B., nachdem Sortierungsbeschränkungen mit früheren Transaktionen erfüllt werden). Somit können in einer Ausführungsform mehrere Anforderungen innerhalb eines Cache-Blocks von der zwischengespeicherten Kopie bedient werden. Verschiedene Details sind in den vorläufigen US-Patentanmeldungen mit den laufenden Nrn. 63/170.868 , eingereicht am 5. April 2021, 63/175.868 , eingereicht am 16. April 2021, und 63/175.877 , eingereicht am 16. April 2021, zu finden. Diese Patentanmeldungen werden hierin durch Bezugnahme in ihrer Gesamtheit aufgenommen. Insoweit als ein beliebiges des aufgenommenen Materials mit dem hierin ausdrücklich dargelegten Material in Widerspruch steht, hat das hierin ausdrücklich dargelegte Material Vorrang.
  • 11 ist ein Blockdiagramm einer bestimmten Ausführungsform eines Prozessor-Clusters 22A. Andere Ausführungsformen können ähnlich sein. In der Ausführungsform von 10 schließt der Prozessor-Cluster 22A einen oder mehrere Prozessoren 70 ein, die mit einem Last-Level-Cache (LLC) 72 gekoppelt sind. Der LLC 72 kann eine Schnittstellenschaltlogik zur Verbindung mit den Netzwerkschaltern 32 und 34 einschließen, um Transaktionen auf dem CPU-Netzwerk und dem E/A-Netzwerk wie es geeignet ist zu übertragen.
  • Die Prozessoren 70 können eine beliebige Schaltlogik und oder einen beliebigen Mikrocode einschließen, die/der konfiguriert ist, um Anweisungen auszuführen, die in einer durch die Prozessoren 70 implementierten Anweisungssatzarchitektur definiert sind. Die Prozessoren 70 können eine beliebige Mikroarchitekturimplementierung, eine beliebige Leistung und beliebige Leistungseigenschaften usw. aufweisen. Zum Beispiel können Prozessoren Inorder-Ausführung, Out-of-order-Ausführung, superskalar, superpipelined usw. sein.
  • Der LLC 72 und alle Caches innerhalb der Prozessoren 70 können eine beliebige Kapazität und Konfiguration aufweisen, wie Set-assoziativ, direkt zugeordnet oder vollständig assoziativ. Die Cache-Block-Größe kann eine beliebige gewünschte Größe (z. B. 32 Bytes, 64 Bytes, 128 Bytes usw.) sein. Der Cache-Block kann die Einheit einer Zuordnung und Aufhebung der Zuordnung in dem LLC 70 sein. Zusätzlich kann der Cache-Block die Einheit sein, über die in dieser Ausführungsform eine Kohärenz beibehalten wird. Der Cache-Block kann in einigen Fällen auch als Cache-Zeile bezeichnet werden. In einer Ausführungsform kann ein verteiltes, verzeichnisbasiertes Kohärenzschema mit einem Kohärenzpunkt an jeder Speichersteuerung 26 im System implementiert werden, wobei der Kohärenzpunkt für Speicheradressen gilt, die der an der Speichersteuerung zugeordnet sind. Das Verzeichnis kann den Zustand von Cache-Blöcken verfolgen, die in einem beliebigen kohärenten Agenten zwischengespeichert werden. Das Kohärenzschema kann auf viele Speichersteuerungen über möglicherweise mehrere Halbleiter-Dies skalierbar sein. Zum Beispiel kann das Kohärenzschema eines oder mehrere der folgenden Merkmale einsetzen: genaues Verzeichnis für Snoop-Filtern und Race-Auflösung an kohärenten und Speicheragenten; Sortierungspunkt (Zugriffsreihenfolge), am Speicheragenten bestimmt, Serialisierungspunkt migriert zwischen kohärenten Agenten und Speicheragenten; sekundäre Sammlung des Abschlusses (Invalidierungsbestätigung) an anforderndem kohärentem Agenten, mit Abschlusszählung verfolgt, die durch einen Speicheragenten bereitgestellt wird; Fill/Snoop- und Snoop/Victim-Ack Race-Auflösung, an kohärentem Agenten durch Verzeichniszustand gehandhabt, der durch den Speicheragenten bereitgestellt wird; Distinkte primäre/sekundäre geteilte Zustände zur Unterstützung der Race-Auflösung und zum Begrenzen von In-Flight-Snoops auf die gleiche Adresse/das gleiche Ziel; Absorption in Konflikt stehender Snoops an einem kohärenten Agenten, um ein Deadlock zu vermeiden, ohne zusätzliche Nack-/Konflikt-/Wiederholungsnachrichten oder Aktionen; Serialisierungsminimierung (eine zusätzliche Nachrichtenlatenz pro Accessor zur Übertragung der Inhaberschaft durch eine Konfliktkette); Nachrichtenminimierung (Nachrichten direkt zwischen relevanten Agenten und keine zusätzlichen Nachrichten, um Konflikte/Races handzuhaben (z. B. keine Nachrichten zurück an einen Speicheragenten); Store-conditional ohne Überinvalidierung bei Fehler durch Race; Exklusive Inhaberschaftsanforderung mit Absicht, die gesamte Cache-Leitung mit minimierter Datenübertragung (nur im schmutzigen Fall) und zugehörigen Cache-/Verzeichniszuständen zu modifizieren; Distinkte Snoop-back und Snoop-forward-Nachrichtstypen, um sowohl zwischenspeicherbare als auch nichtzwischenspeicherbare Ströme handzuhaben (z. B. 3-Sprung- und 4-Sprung-Protokolle). Zusätzliche Details sind in der vorläufigen US-Patentanmeldung mit der laufenden Nr. 63/077.371, eingereicht am 11. September 2020, zu finden. Diese Patentanmeldung wird hierin durch Bezugnahme in ihrer Gesamtheit aufgenommen. Insoweit als ein beliebiges des aufgenommenen Materials mit dem hierin ausdrücklich dargelegten Material in Widerspruch steht, hat das hierin ausdrücklich dargelegte Material Vorrang.
  • 12 ist ein Paar von Tabellen 80 und 82, die virtuelle Kanäle und Verkehrstypen und die Netzwerke veranschaulichen, die in 5 bis 8 gezeigt sind, in denen sie für eine Ausführungsform verwendet werden. Wie in Tabelle 80 gezeigt, können die virtuellen Kanäle den virtuellen Massenkanal, den virtuellen Kanal mit niedriger Latenz (LLT), die Echtzeit (virtueller RT-Kanal) und den virtuellen Kanal für Nicht-DRAM-Nachrichten (VCP) einschließen. Der virtuelle Massenkanal kann der standardmäßige virtuelle Kanal für Speicherzugriffe sein. Der virtuelle Massenkanal kann zum Beispiel eine geringere Dienstgüte als die virtuellen LLT- und RT-Kanäle empfangen. Der virtuelle LLT-Kanal kann für Speichertransaktionen verwendet werden, für die eine niedrige Latenz für einen Hochleistungsbetrieb benötigt wird. Der virtuelle RT-Kanal kann für Speichertransaktionen verwendet werden, die Latenz- und/oder Bandbreitenanforderungen für einen korrekten Betrieb aufweisen (z. B. Videoströme). Der VCP-Kanal kann verwendet werden, um Verkehr zu trennen, der nicht auf Speicher gerichtet ist, um eine Beeinflussung von Speichertransaktionen zu verhindern.
  • In einer Ausführungsform können die virtuellen Masse- und LLT-Kanäle auf allen drei Netzwerken (CPU, E/A und gelockerte Sortierung) unterstützt werden. Der virtuelle RT-Kanal kann auf dem E/A-Netzwerk unterstützt werden, aber nicht auf den CPU-Netzwerken oder Netzwerken mit gelockerter Sortierung. In ähnlicher Weise kann der virtuelle VCP-Kanal auf dem E/A-Netzwerk unterstützt werden, aber nicht auf den CPU-Netzwerken oder Netzwerken mit gelockerter Sortierung. In einer Ausführungsform kann der virtuelle VCP-Kanal auf dem CPU-Netzwerk und Netzwerk mit gelockerter Sortierung nur für Transaktionen unterstützt werden, die auf die Netzwerkschalter auf diesem Netzwerk (z. B. zur Konfiguration) gerichtet sind, und kann somit nicht während des normalen Betriebs verwendet werden. Somit können, wie Tabelle 80 veranschaulicht, verschiedene Netzwerke verschiedene Anzahlen von virtuellen Kanälen unterstützen.
  • Tabelle 82 veranschaulicht verschiedene Verkehrstypen und welche Netzwerke diesen Verkehrstyp tragen. Die Verkehrstypen können kohärenten Speicherverkehr, nichtkohärenten Speicherverkehr, Echtzeitspeicherverkehr (RT-Speicherverkehr) und VCP-Verkehr (Nichtspeicher-Verkehr) einschließen. Die CPU- und E/A-Netzwerke können beide kohärenten Verkehr tragen. In einer Ausführungsform kann kohärenter Speicherverkehr, der durch die Prozessor-Cluster 22A-22B bereitgestellt wird, auf dem CPU-Netzwerk getragen werden, während das E/A-Netzwerk kohärenten Speicherverkehr tragen kann, der durch die E/A-Cluster 24A-24D bereitgestellt wird. Nichtkohärenter Speicherverkehr kann auf dem Netzwerk mit gelockerter Sortierung getragen werden, und der RT- und VCP-Verkehr können auf dem E/A-Netzwerk getragen werden.
  • 13 ist ein Flussdiagramm, das eine Ausführungsform eines Verfahrens zum Initiieren einer Transaktion auf einem Netzwerk veranschaulicht. In einer Ausführungsform kann ein Agent eine zu übertragende Transaktion erzeugen (Block 90). Die Transaktion soll auf einem von einer Vielzahl von physisch und logisch unabhängigen Netzwerken übertragen werden. Ein erstes Netzwerk der Vielzahl von physisch und logisch unabhängigen Netzwerken ist gemäß einer ersten Topologie aufgebaut, und ein zweites Netzwerk der Vielzahl von physisch und logisch unabhängigen Netzwerken ist gemäß einer zweiten Topologie, die sich von der ersten Topologie unterscheidet, aufgebaut. Eines der Vielzahl von physisch und logisch unabhängigen Netzwerken wird ausgewählt, auf dem die Transaktion basierend auf einem Typ der Transaktion übertragen werden soll (Block 92). Zum Beispiel können die Prozessor-Cluster 22A-22B kohärenten Speicherverkehr auf dem CPU-Netzwerk und PIO-Verkehr auf dem E/A-Netzwerk übertragen. In einer Ausführungsform kann der Agent basierend auf einem oder mehreren Attributen der Transaktion, die von dem Typ abweicht, einen virtuellen Kanal einen virtuellen Kanal einer Vielzahl von virtuellen Kanälen auswählen, die auf dem ausgewählten Netzwerk der Vielzahl von physisch und logisch unabhängigen Netzwerken unterstützt werden (Block 94). Zum Beispiel kann eine CPU den virtuellen LLT-Kanal für eine Teilmenge von Speichertransaktionen (z. B. die ältesten Speichertransaktionen, die Cache-Misses sind, oder eine Anzahl von Cache-Misses bis zu einer Schwellenanzahl, wonach der Massenkanal ausgewählt werden kann) auswählen. Eine GPU kann basierend auf der Dringlichkeit, mit der die Daten benötigt werden, zwischen den virtuellen LLT- und Massenkanälen auswählen. Videovorrichtungen können den virtuellen RT-Kanal nach Bedarf verwenden (z. B. kann die Anzeigesteuerung Rahmendatenlesevorgänge auf dem virtuellen RT-Kanal ausgeben). Der virtuelle VCP-Kanal kann für Transaktionen ausgewählt werden, die keine Speichertransaktionen sind. Der Agent kann ein Transaktionspaket auf dem ausgewählten Netzwerk und dem virtuellen Kanal übertragen. In einer Ausführungsform können Transaktionspakete in verschiedenen virtuellen Kanälen verschiedene Pfade durch die Netzwerke annehmen. In einer Ausführungsform können Transaktionspakete verschiedene Pfade basierend auf einem Typ des Transaktionspakets (z. B. Anforderung gegenüber Antwort) annehmen. In einer Ausführungsform können verschiedene Pfade sowohl für verschiedene virtuelle Kanäle als auch für verschiedene Typen von Transaktionen unterstützt werden. Andere Ausführungsformen können ein oder mehrere zusätzliche Attribute von Transaktionspaketen einsetzen, um einen Pfad durch das Netzwerk für diese Pakete zu bestimmen. Auf andere Weise betrachtet, bilden die Netzwerkschalter das Netzwerk, können Pakete, die sich basierend auf dem virtuellen Kanal, dem Typ oder beliebigen anderen Attributen unterscheiden, umleiten. Ein anderer Pfad kann sich auf das Durchqueren mindestens eines Segments zwischen Netzwerkschaltern beziehen, das nicht auf dem anderen Pfad durchquert wird, obwohl sich die Transaktionspakete unter Verwendung der verschiedenen Pfade von einer gleichen Quelle zu einem gleichen Ziel bewegen. Die Verwendung verschiedener Pfade kann einen Lastausgleich in den Netzwerken und/oder eine reduzierte Latenz für die Transaktionen bereitstellen.
  • Computersystem
  • Als Nächstes Bezug nehmend auf 14 ist ein Blockdiagramm einer Ausführungsform eines Systems 700 gezeigt. In der veranschaulichten Ausführungsform schließt das System 700 mindestens eine Instanz eines System-on-a-Chip (SOC) 20 ein, das mit einem oder mehreren Peripheriegeräten 704 und einem externen Speicher 702 gekoppelt ist. Es wird eine Energieversorgung (PMU) 708 bereitgestellt, die dem SOC 10 Versorgungsspannungen sowie dem Speicher 702 und/oder den Peripheriegeräten 154 eine oder mehrere Versorgungsspannungen zuführt. In einigen Ausführungsformen kann mehr als eine Instanz des SOC 20 eingeschlossen sein (und es kann auch mehr als ein Speicher 702 eingeschlossen sein). Der Speicher 702 kann in einer Ausführungsform die in 5 veranschaulichten Speicher 30A-30D einschließen.
  • Die Peripherieeinheiten 704 können abhängig von der Art des Systems 700 eine beliebige gewünschte Schaltlogik einschließen. Zum Beispiel kann in einer Ausführungsform das System 704 eine mobile Vorrichtung (z. B. ein persönlicher digitaler Assistent (PDA), ein Smartphone usw.) sein, und die Peripheriegeräte 704 können Vorrichtungen für verschiedene Typen von drahtloser Kommunikation, wie WiFi, Bluetooth, Mobilfunk, globales Positionsbestimmungssystem usw., einschließen. Die Peripheriegeräte 704 können auch eine zusätzliche Speicherung, einschließlich einer RAM-Speicherung, Solid-State-Speicherung oder Plattenspeicherung, einschließen. Die Peripheriegeräte 704 können Benutzerschnittstellenvorrichtungen, wie einen Anzeigebildschirm, einschließlich Berührungsanzeigebildschirmen oder Mehrfachberührungsanzeigebildschirmen, Tastatur- oder anderer Eingabevorrichtungen, Mikrofonen, Lautsprechern usw., einschließen. In anderen Ausführungsformen kann das System 700 ein beliebiger Typ von Rechensystem (z. B. Desktop-Personal-Computer, Laptop, Arbeitsstation, Nettop usw.) sein.
  • Der externe Speicher 702 kann einen beliebigen Typ von Speicher einschließen. Zum Beispiel kann der externe Speicher 702 SRAM, dynamischer RAM (DRAM), wie synchroner DRAM (SDRAM), SDRAM mit doppelter Datenrate (DDR, DDR2, DDR3 usw.), RAMBUS DRAM, weniger Leistung verbrauchende Versionen des DDR DRAM (z. B. LPDDR, mDDR usw.) usw. sein. Der externe Speicher 702 kann ein oder mehrere Speichermodule einschließen, an denen die Speichervorrichtungen befestigt sind, wie einzelreihige Speichermodule (SIMMs), zweireihige Speichermodule (DIMMs) usw. Alternativ kann der externe Speicher 702 eine oder mehrere Speichervorrichtungen einschließen, die an dem SOC 20 in einer Chip-on-Chip- oder Package-on-Package-Implementierung befestigt sind.
  • Wie veranschaulicht, ist das System 700 derart gezeigt, dass es Anwendung in einem breiten Spektrum von Bereichen findet. Zum Beispiel kann das System 700 als Teil der Chips, Schaltlogik, Komponenten usw. eines Desktop-Computers 710, Laptop-Computers 720, Tablet-Computers 730, Mobilfunk- oder Mobiltelefons 740 oder Fernsehgeräts 750 (oder einer Set-Top-Box, die mit einem Fernsehgerät gekoppelt ist) genutzt werden. Ebenfalls veranschaulicht sind eine Smartwatch und eine Gesundheitsüberwachungsvorrichtung 760. In einigen Ausführungsformen kann eine Smartwatch eine Vielfalt von universalrechnenbezogenen Funktionen einschließen. Zum Beispiel kann eine Smartwatch Zugriff auf E-Mail, einen Mobiltelefondienst, einen Benutzerkalender und so weiter bereitstellen. In verschiedenen Ausführungsformen kann eine Gesundheitsüberwachungsvorrichtung eine dedizierte medizinische Vorrichtung sein oder anderweitig eine dedizierte gesundheitsbezogene Funktionalität einschließen. Zum Beispiel kann eine Gesundheitsüberwachungsvorrichtung die Vitalparameter eines Benutzers überwachen, die Nähe eines Benutzers zu anderen Benutzern zum Zweck der epidemiologischen Abstandswahrung, Kontaktverfolgung verfolgen, die Kommunikation im Fall einer Gesundheitsnotlage an einen Notfalldienst bereitstellen und so weiter. In verschiedenen Ausführungsformen kann die vorstehend erwähnte Smartwatch einige oder keine gesundheitsüberwachungsbezogenen Funktionen einschließen. Andere am Körper tragbare Vorrichtungen werden ebenfalls in Betracht gezogen, wie Vorrichtungen, die um den Hals getragen werden, Vorrichtungen, die im menschlichen Körper implantierbar sind, Brillen, die dazu ausgelegt sind, eine Erfahrung einer erweiterten und/oder virtuellen Realität bereitzustellen, und so weiter.
  • Das System 700 kann ferner als Teil eines Cloud-basierten Diensts/von Cloud-basierten Diensten 770 verwendet werden. Zum Beispiel können die zuvor erwähnten Vorrichtungen und/oder andere Vorrichtungen auf Rechenressourcen in der Cloud (d. h. entfernt angeordnete Hardware- und/oder Softwareressourcen) zugreifen. Ferner noch kann das System 700 in einer oder mehreren anderen Vorrichtungen einer Wohnung als den zuvor erwähnten genutzt werden. Zum Beispiel können Geräte innerhalb der Wohnung Zustände überwachen und erkennen, die Aufmerksamkeit erfordern. Zum Beispiel können verschiedene Vorrichtungen innerhalb der Wohnung (z. B. ein Kühlschrank, ein Kühlsystem usw.) den Status der Vorrichtung überwachen und eine Warnung an den Wohnungseigentümer (oder zum Beispiel eine Reparatureinrichtung) bereitstellen, sollte ein bestimmtes Ereignis erkannt werden. Alternativ kann ein Thermostat die Temperatur in der Wohnung überwachen und kann Einstellungen eines Heiz-/Kühlsystems basierend auf einem Verlauf von Reaktionen auf verschiedene Zustände durch den Wohnungseigentümer automatisieren. Ebenfalls in 14 veranschaulicht ist die Anwendung des Systems 700 auf verschiedene Transportmodi. Zum Beispiel kann das System 700 in den Steuer- und/oder Unterhaltungssystemen von Flugzeugen, Zügen, Bussen, Mietautos, Personenkraftwagen, Wasserfahrzeugen von Privatbooten bis zu Kreuzfahrtschiffen, (Miet- oder eigenen) Rollern und so weiter verwendet werden. In verschiedenen Fällen kann das System 700 verwendet werden, um eine automatisierte Führung (z. B. selbstfahrende Fahrzeuge), eine allgemeine Systemsteuerung und etwas anderes bereitzustellen. Diese beliebigen vielen anderen Ausführungsformen sind möglich und werden in Betracht gezogen. Es wird darauf hingewiesen, dass die in 14 veranschaulichten Vorrichtungen und Anwendungen nur veranschaulichend sind und nicht einschränkend sein sollen. Andere Vorrichtungen sind möglich und werden in Betracht gezogen.
  • Computerlesbares Speicherungsmedium
  • Nun Bezug nehmend auf 15 ist ein Blockdiagramm einer Ausführungsform eines computerlesbaren Speicherungsmediums 800 gezeigt. Allgemein ausgedrückt, kann ein computerzugängliches Speichermedium ein beliebiges Speichermedium einschließen, auf das durch einen Computer während der Verwendung zugegriffen werden kann, um Anweisungen und/oder Daten zum Computer bereitzustellen. Beispielsweise kann ein computerzugängliches Speichermedium Speichermedien einschließen wie z. B. magnetische oder optische Medien, z. B. Platten (fest oder portabel), Bänder, CD-ROM, DVD-ROM, CD-R, CD-RW, DVD-R, DVD-RW oder Blu-Ray. Speicherungsmedien können ferner flüchtige oder nichtflüchtige Speichermedien, wie RAM (z. B. synchronen dynamischen RAM (SDRAM), Rambus-DRAM (RDRAM), statischen RAM (SRAM) usw.), ROM oder Flash-Speicher, einschließen. Die Speichermedien können physisch innerhalb des Computers eingeschlossen sein, für den die Speichermedien Anweisungen/Daten bereitstellen. Alternativ dazu können die Speichermedien mit dem Computer verbunden sein. Beispielsweise können die Speichermedien über ein Netzwerk oder eine drahtlose Verbindung wie z. B. Netzwerk-Speicher mit dem Computer verbunden sein. Die Speichermedien können über eine Peripherieschnittstelle wie z. B. den Universal Serial Bus (USB) angeschlossen sein. Allgemein kann das computerzugängliche Speicherungsmedium 800 Daten in einer nicht-transitorischen Weise speichern, wobei sich nicht-transitorisch in diesem Kontext darauf beziehen kann, dass die Anweisungen/Daten nicht auf einem Signal übertragen werden. Beispielsweise kann die nicht-transitorische Speicherung flüchtig sein (und die gespeicherten Anweisungen/Daten als Reaktion auf ein Herunterfahren verlieren), oder sie kann nichtflüchtig sein.
  • Das computerzugängliche Speicherungsmedium 800 in 15 kann eine Datenbank 804 speichern, die für das SOC 20 repräsentativ ist. Allgemein kann die Datenbank 804 eine Datenbank sein, die durch ein Programm gelesen und direkt oder indirekt verwendet werden kann, um die Hardware, die das SOC 20 umfasst, herzustellen. Zum Beispiel kann die Datenbank eine Beschreibung auf Verhaltensebene oder eine Beschreibung auf Register-Transfer-Ebene (RTL) der Hardwarefunktionalität in einer Sprache für ein Design auf hoher Ebene (HDL), wie Verilog oder VHDL, sein. Die Beschreibung kann von einem Synthesewerkzeug gelesen werden, das die Beschreibung synthetisieren kann, um eine Netzliste zu erzeugen, die eine Liste von Gattern aus einer Synthesebibliothek umfasst. Die Netzliste umfasst einen Satz von Gattern, die auch die Funktionalität der Hardware darstellen, die das SOC 20 umfasst. Die Netzliste kann dann platziert und geroutet werden, um einen Datensatz zu erzeugen, der geometrische Formen beschreibt, die auf Masken anzuwenden sind. Die Masken können dann in verschiedenen Halbleiterherstellungsschritten verwendet werden, um (eine) Halbleiterschaltung oder -schaltungen herzustellen, die dem SOC 20 entsprechen. Alternativ kann die Datenbank 804 auf dem computerzugänglichen Speicherungsmedium 800 wie gewünscht die Netzliste (mit oder ohne Synthesebibliothek) oder der Datensatz sein.
  • Während das computerzugängliche Speicherungsmedium 800 eine Darstellung des SOC 10 speichert, können andere Ausführungsformen eine Darstellung eines beliebigen Abschnitts des SOC 20, wie gewünscht einschließlich einer beliebigen Teilmenge der in 5 gezeigten Komponenten, tragen. Die Datenbank 804 kann einen beliebigen Abschnitt des Vorstehenden darstellen.
  • In einer Ausführungsform umfasst ein System eine Vielzahl von Prozessor-Clustern, eine Vielzahl von Speichersteuerungen, eine Vielzahl von Grafikverarbeitungseinheiten, eine Vielzahl von Agenten und eine Vielzahl von Netzwerkschaltern, die mit der Vielzahl von Prozessor-Clustern, der Vielzahl von Grafikverarbeitungseinheiten, der Vielzahl von Speichersteuerungen und der Vielzahl von Agenten gekoppelt sind. Ein gegebener Prozessor-Cluster umfasst einen oder mehrere Prozessoren. Die Speichersteuerungen sind konfiguriert, um den Zugriff auf Speichervorrichtungen zu steuern. Eine erste Teilmenge der Vielzahl von Netzwerkschaltern ist miteinander verbunden, um ein Netzwerk einer zentralen Verarbeitungseinheit (CPU) zwischen der Vielzahl von Prozessor-Clustern und der Vielzahl von Speichersteuerungen zu bilden. Eine zweite Teilmenge der Vielzahl von Netzwerkschaltern ist miteinander verbunden, um ein Eingabe/Ausgabe-Netzwerk (E/A-Netzwerk) zwischen der Vielzahl von Prozessor-Clustern, der Vielzahl von Agenten und der Vielzahl von Speichersteuerungen zu bilden. Eine dritte Teilmenge der Vielzahl von Netzwerkschaltern ist miteinander verbunden, um ein Netzwerk mit gelockerter Sortierung zwischen der Vielzahl von Grafikverarbeitungseinheiten, ausgewählten der Vielzahl von Agenten und der Vielzahl von Speichersteuerungen zu bilden. Das CPU-Netzwerk, das E/A-Netzwerk und das Netzwerk mit gelockerter Sortierung sind voneinander unabhängig. Das CPU-Netzwerk und das E/A-Netzwerk sind kohärent. Das Netzwerk mit gelockerter Sortierung ist nichtkohärent und weist im Vergleich zum CPU-Netzwerk und zum E/A-Netzwerk reduzierte Sortierungsbeschränkungen auf. In einer Ausführungsform weist mindestens eines vom CPU-Netzwerk, vom E/A-Netzwerk und vom Netzwerk mit gelockerter Sortierung eine Anzahl von physischen Kanälen auf, die sich von einer Anzahl von physischen Kanälen auf einem anderen vom CPU-Netzwerk, vom E/A-Netzwerk und vom Netzwerk mit gelockerter Sortierung unterscheidet. In einer Ausführungsform ist das CPU-Netzwerk ein Ringnetzwerk. In einer Ausführungsform ist das E/A-Netzwerk ein Ringnetzwerk. In einer Ausführungsform ist das Netzwerk mit gelockerter Sortierung ein Maschennetzwerk. In einer Ausführungsform umfasst ein erster Agent der Vielzahl von Agenten einen E/A-Cluster, der eine Vielzahl von Peripherievorrichtungen umfasst. In einer Ausführungsform umfasst der E/A-Cluster ferner eine Brücke, die mit der Vielzahl von Peripherievorrichtungen gekoppelt ist und ferner mit einem ersten Netzwerkschalter in der zweiten Teilmenge gekoppelt ist. In einer Ausführungsform umfasst das System ferner eine Netzwerkschnittstellenschaltung, die konfiguriert ist, um Kommunikationen von einem gegebenen Agenten in Kommunikationen für ein gegebenes Netzwerk eines CPU-Netzwerks, des E/A-Netzwerks und des Netzwerks mit gelockerter Sortierung umzuwandeln, wobei die Netzwerkschnittstellenschaltung mit einem der Vielzahl von Netzwerkschaltern im gegebenen Netzwerk gekoppelt ist.
  • In einer Ausführungsform umfasst ein System-on-a-Chip (SOC) einen Halbleiter-Die, auf dem eine Schaltlogik gebildet ist. Die Schaltlogik umfasst eine Vielzahl von Agenten und eine Vielzahl von Netzwerkschaltern, die mit der Vielzahl von Agenten gekoppelt sind. Die Vielzahl von Netzwerkschaltern sind miteinander verbunden, um eine Vielzahl von physisch und logisch unabhängigen Netzwerken zu bilden. Ein erstes Netzwerk der Vielzahl von physisch und logisch unabhängigen Netzwerken ist gemäß einer ersten Topologie aufgebaut, und ein zweites Netzwerk der Vielzahl von physisch und logisch unabhängigen Netzwerken ist gemäß einer zweiten Topologie, die sich von der ersten Topologie unterscheidet, aufgebaut. In einer Ausführungsform ist die erste Topologie eine Ringtopologie. In einer Ausführungsform ist die zweite Topologie eine Maschentopologie. In einer Ausführungsform wird eine Kohärenz auf dem ersten Netzwerk durchgesetzt. In einer Ausführungsform ist das zweite Netzwerk ein Netzwerk mit gelockerter Sortierung. In einer Ausführungsform implementiert mindestens eines der Vielzahl von physisch und logisch unabhängigen Netzwerken eine erste Anzahl von physischen Kanälen und implementiert mindestens ein anderes der Vielzahl von physisch und logisch unabhängigen Netzwerken eine zweite Anzahl von physischen Kanälen, wobei sich die erste Anzahl von der zweiten Anzahl unterscheidet. In einer Ausführungsform schließt das erste Netzwerk einen oder mehrere erste virtuelle Kanäle ein und schließt das zweite Netzwerk einen oder mehrere zweite virtuelle Kanäle ein. Mindestens einer von dem einen oder den mehreren ersten virtuellen Kanälen unterscheidet sich von dem einen oder den mehreren zweiten virtuellen Kanälen. In einer Ausführungsform umfasst das SOC ferner eine Netzwerkschnittstellenschaltung, die konfiguriert ist, um Kommunikationen von einem gegebenen Agenten der Vielzahl von Agenten in Kommunikationen für ein gegebenes Netzwerk der Vielzahl von physisch und logisch unabhängigen Netzwerken umzuwandeln. Die Netzwerkschnittstellenschaltung ist mit einem der Vielzahl von Netzwerkschaltern im gegebenen Netzwerk gekoppelt. In einer Ausführungsform ist ein erster Agent der Vielzahl von Agenten mit mindestens zwei der Vielzahl von physisch und logisch unabhängigen Netzwerken gekoppelt. Der erste Agent ist konfiguriert, um eine zu übertragende Transaktion zu erzeugen. Der erste Agent ist konfiguriert, um eines der mindestens zwei der Vielzahl von physisch und logisch unabhängigen Netzwerke, auf denen die Transaktion basierend auf einem Typ der Transaktion übertragen werden soll, auszuwählen. In einer Ausführungsform ist eines der mindestens zwei Netzwerke ein E/A-Netzwerk, auf dem E/A-Transaktionen übertragen werden.
  • In einer Ausführungsform umfasst ein Verfahren ein Erzeugen einer Transaktion in einem Agenten, der mit einer Vielzahl von physisch und logisch unabhängigen Netzwerken gekoppelt ist, wobei ein erstes Netzwerk der Vielzahl von physisch und logisch unabhängigen Netzwerken gemäß einer ersten Topologie aufgebaut ist und ein zweites Netzwerk der Vielzahl von physisch und logisch unabhängigen Netzwerken gemäß einer zweiten Topologie, die sich von der ersten Topologie unterscheidet, aufgebaut ist; und ein Auswählen von einem der Vielzahl von physisch und logisch unabhängigen Netzwerken, auf denen die Transaktion basierend auf einem Typ der Transaktion übertragen werden soll. In einer Ausführungsform umfasst das Verfahren ferner ein Auswählen, basierend auf einem oder mehreren Attributen der Transaktion, die von dem Typ abweicht, eines virtuellen Kanals einer Vielzahl von virtuellen Kanälen, die auf dem einen der Vielzahl von physisch und logisch unabhängigen Netzwerken unterstützt werden.
  • Die vorliegende Offenbarung schließt Bezugnahmen auf „eine“ Ausführungsform oder Gruppen von „Ausführungsformen“ (z. B. „einige Ausführungsformen“ oder „verschiedene Ausführungsformen“) ein. Ausführungsformen sind verschiedene Implementierungen oder Instanzen der offenbarten Konzepte. Bezugnahmen auf „Ausführungsform“, „eine Ausführungsform“, „eine bestimmte Ausführungsform“ und dergleichen beziehen sich nicht notwendigerweise auf die gleiche Ausführungsform. Eine große Anzahl möglicher Ausführungsformen wird in Betracht gezogen, einschließlich der speziell offenbarten, sowie Modifikationen oder Alternativen, die in das Wesen oder den Schutzumfang der Offenbarung fallen.
  • Diese Offenbarung kann potenzielle Vorteile erörtern, die sich aus den offenbarten Ausführungsformen ergeben können. Nicht alle Implementierungen dieser Ausführungsformen weisen notwendigerweise alle potenziellen Vorteile auf. Ob ein Vorteil für eine bestimmte Implementierung erreicht wird, hängt von vielen Faktoren ab, von denen einige außerhalb des Schutzumfangs dieser Offenbarung liegen. Tatsächlich gibt es eine Reihe von Gründen dafür, warum eine Implementierung, die innerhalb des Schutzumfangs der Ansprüche fällt, möglicherweise einige oder alle der offenbarten Vorteile nicht aufweist. Zum Beispiel könnte eine bestimmte Implementierung eine andere Schaltlogik außerhalb des Schutzumfangs der Offenbarung einschließen, die in Verbindung mit einer der offenbarten Ausführungsformen einen oder mehrere der offenbarten Vorteile aufhebt oder verringert. Des Weiteren könnte auch eine suboptimale Designausführung einer bestimmten Implementierung (z. B. Implementierungstechniken oder -werkzeuge) offenbarte Vorteile aufheben oder verringern. Selbst unter der Annahme einer qualifizierten Implementierung kann die Erreichung von Vorteilen weiterhin von anderen Faktoren, wie den Umgebungsumständen, in denen die Implementierung bereitgestellt wird, abhängen. Zum Beispiel können Eingaben, die einer bestimmten Implementierung bereitgestellt werden, verhindern, dass ein oder mehrere Probleme, die in dieser Offenbarung behandelt werden, bei einer bestimmten Gelegenheit auftreten, wodurch der Vorteil seiner Lösung möglicherweise nicht erreicht wird. Aufgrund des Vorhandenseins möglicher Faktoren außerhalb dieser Offenbarung ist es ausdrücklich beabsichtigt, dass alle hierin beschriebenen potenziellen Vorteile nicht als Anspruchseinschränkungen ausgelegt werden sollen, die erfüllt werden müssen, um eine Verletzung nachzuweisen. Vielmehr soll die Identifizierung solcher potenziellen Vorteile den Typ/die Typen von Verbesserung veranschaulichen, der/die für Designer verfügbar sind, die den Nutzen dieser Offenbarung haben. Dass solche Vorteile in einem erlaubenden Sinn beschrieben werden (z. B. unter der Angabe, dass ein bestimmter Vorteil „auftreten kann“), soll keinen Zweifel daran vermitteln, ob solche Vorteile tatsächlich erreicht werden können, sondern es soll stattdessen die technische Realität anerkannt werden, dass die Erreichung solcher Vorteile häufig von zusätzlichen Faktoren abhängt.
  • Sofern nicht anders angegeben, sind Ausführungsformen nicht einschränkend. Das heißt, dass die offenbarten Ausführungsformen den Schutzumfang von Ansprüchen, die basierend auf dieser Offenbarung formuliert werden, nicht einschränken sollen, selbst wenn nur ein einzelnes Beispiel in Bezug auf ein bestimmtes Merkmal beschrieben wird. Die offenbarten Ausführungsformen sollen veranschaulichend und nicht einschränkend sein, sofern in der Offenbarung keine gegenteiligen Aussagen vorhanden sind. Die Anmeldung soll es somit ermöglichen, dass Ansprüche offenbarte Ausführungsformen sowie die Alternativen, Modifikationen und Äquivalente, die für einen Fachmann, der den Nutzen dieser Offenbarung hat, offensichtlich sind, abdecken.
  • Zum Beispiel können Merkmale in dieser Anmeldung auf jede geeignete Weise kombiniert werden. Dementsprechend können während der Weiterverfolgung dieser Anwendung (oder einer Anwendung, welche die Priorität dieser beansprucht) neue Ansprüche auf eine beliebige solche Kombination von Merkmalen formuliert werden. Insbesondere können unter Bezugnahme auf die beiliegenden Ansprüche Merkmale aus abhängigen Ansprüchen mit denen anderer abhängiger Ansprüche kombiniert werden, wo dies geeignet ist, einschließlich Ansprüchen, die von anderen unabhängigen Ansprüchen abhängen. In ähnlicher Weise können Merkmale aus jeweiligen unabhängigen Ansprüchen wo dies geeignet ist kombiniert werden.
  • Während die beiliegenden abhängigen Ansprüche derart formuliert sein können, dass jeder von einem einzigen anderen Anspruch abhängt, werden entsprechend auch zusätzliche Abhängigkeiten in Betracht gezogen. Alle Kombinationen von Merkmalen im abhängigen, die mit dieser Offenbarung übereinstimmen, werden in dieser Offenbarung in Betracht gezogen und können in dieser oder einer anderen Anmeldung beansprucht werden. Zusammengefasst sind Kombinationen nicht auf diejenigen beschränkt, die in den beiliegenden Ansprüchen speziell aufgezählt sind.
  • Wo dies geeignet ist, wird auch in Betracht gezogen, dass in einem Format oder einem gesetzlichen Typ formulierte Ansprüche (z. B. Einrichtung) entsprechende Ansprüche eines anderen Formats oder gesetzlichen Typs (z. B. Verfahren) unterstützen sollen.
  • Da diese Offenbarung ein rechtliches Dokument ist, können verschiedene Begriffe und Phrasen einer behördlichen und rechtlichen Auslegung unterliegen. Es wird hiermit bekannt gemacht, dass die folgenden Absätze sowie Definitionen, die in der Offenbarung bereitgestellt werden, beim Bestimmen, wie basierend auf dieser Offenbarung formulierte Ansprüche auszulegen sind, verwendet werden sollen.
  • Bezugnahmen auf eine Singularform eines Elements (d. h. ein Substantiv oder eine Nominalphrase, vor dem/der ein „ein/e/r“ oder „der/die/das“ steht) sollen, sofern der Kontext nicht eindeutig etwas anderes vorschreibt, „ein/e/r oder mehrere“ bedeuten. Eine Bezugnahme auf „ein Element“ in einem Anspruch schließt somit ohne einen Begleitkontext keine zusätzlichen Instanzen des Elements aus. Eine „Vielzahl“ von Elementen bezieht sich auf einen Satz von zwei oder mehr der Elemente.
  • Das Wort „kann/können“ wird hierin in einem erlaubenden Sinn (d. h. das Potenzial aufweisend, in der Lage sein) und nicht in einem obligatorischen Sinn (d. h. muss/müssen) verwendet.
  • Die Begriffe „umfassend“ und „einschließlich“ und Formen davon sind offen und bedeuten „einschließlich, ohne darauf beschränkt zu sein“.
  • Wenn der Begriff „oder“ in dieser Offenbarung in Bezug auf eine Liste von Optionen verwendet wird, wird er im Allgemeinen derart verstanden, dass er in dem einschließenden Sinn verwendet wird, sofern nicht der Kontext etwas anderes vorsieht. Somit ist eine Angabe von „x oder y“ äquivalent zu „x oder y oder beide“ und deckt somit 1) x, aber nicht y, 2) y, aber nicht x, und 3) sowohl x als auch y ab. Andererseits macht eine Phrase, wie „entweder x oder y, aber nicht beide“ deutlich, dass „oder“ im exklusiven Sinn verwendet wird.
  • Eine Angabe von „w, x, y oder z oder eine beliebige Kombination davon“ oder „mindestens eines von ... w, x, y und z“ soll alle Möglichkeiten abdecken, die ein einzelnes Element bis zur Gesamtanzahl von Elementen im Satz beinhalten. Bei dem Satz [w, x, y, z] decken diese Phrasen zum Beispiel jedes einzelne Element des Satzes (z. B. w, aber nicht x, y oder z), beliebige zwei Elemente (z. B. w und x, aber nicht y oder z), beliebige drei Elemente (z. B. w, x und y, aber nicht z) und alle vier Elemente ab. Die Phrase „mindestens eines von ... x, y und z“ bezieht sich somit auf mindestens ein Element des Satzes [w, x, y, z], wodurch alle möglichen Kombinationen in dieser Liste von Elementen abgedeckt werden. Diese Phrase darf nicht derart ausgelegt werden, dass es erforderlich ist, dass mindestens eine Instanz von w, mindestens eine Instanz von x, mindestens eine Instanz von y und mindestens eine Instanz von z vorhanden sind.
  • Verschiedene „Kennzeichnungen“ können in dieser Offenbarung vor Substantiven oder Substantivphrasen stehen. Sofern nicht der Kontext etwas anderes vorsieht, beziehen sich verschiedene Kennzeichnungen, die für ein Merkmal (z. B. „erste Schaltung“, „zweite Schaltung“, „bestimmte Schaltung“, „gegebene Schaltung“ usw.) verwendet werden, auf verschiedene Instanzen des Merkmals. Zusätzlich implizieren die Kennzeichnungen „erste/r/s“, „zweite/r/s“ und „dritte/r/s“, wenn sie auf ein Merkmal angewendet werden, keinen Typ von Sortierung (z. B. räumlich, zeitlich, logisch usw.), sofern nicht anders angegeben.
  • Die Phrase „basierend auf‟ oder wird verwendet, um einen oder mehrere Faktoren zu beschreiben, die eine Bestimmung beeinflussen. Dieser Begriff schließt nicht die Möglichkeit aus, dass zusätzliche Faktoren die Bestimmung beeinflussen können. Das heißt, eine Bestimmung kann ausschließlich auf angegebenen Faktoren basieren oder auf den angegebenen Faktoren sowie anderen, nicht angegebenen Faktoren basieren. Man betrachte die Wendung „A basierend auf B bestimmen“. Diese Wendung gibt an, dass B ein Faktor ist, der verwendet wird, um A zu bestimmen, oder der die Bestimmung von A beeinflusst. Diese Wendung schließt nicht aus, dass die Bestimmung von A auch auf einem anderen Faktor, wie C, basieren kann. Diese Wendung soll auch eine Ausführungsform abdecken, in der A ausschließlich basierend auf B bestimmt wird. Wie hierin verwendet, ist die Wendung „basierend auf‟ gleichbedeutend mit der Wendung „basierend mindestens teilweise auf.
  • Die Phrasen „als Reaktion auf und „in Reaktion auf beschreiben einen oder mehrere Faktoren, die eine Wirkung auslösen. Diese Phrase schließt nicht die Möglichkeit aus, dass zusätzliche Faktoren die Wirkung beeinflussen oder anderweitig auslösen können, entweder gemeinsam mit den angegebenen Faktoren oder unabhängig von den angegebenen Faktoren. Das heißt, eine Wirkung kann ausschließlich als Reaktion auf diese Faktoren erfolgen oder kann als Reaktion auf die angegebenen Faktoren sowie andere, nicht angegebene Faktoren erfolgen. Man betrachte die Phrase „A als Reaktion auf B durchführen“. Diese Phrase gibt an, dass B ein Faktor ist, der die Durchführung von A auslöst oder der ein bestimmtes Ergebnis für A auslöst. Diese Phrase schließt nicht aus, dass ein Durchführen von A auch als Reaktion auf einen anderen Faktor, wie C, erfolgen kann. Diese Phrase schließt auch nicht aus, dass ein Durchführen von A als Reaktion auf B und C gemeinsam erfolgen kann. Diese Phrase soll auch eine Ausführungsform abdecken, in der A ausschließlich basierend auf B durchgeführt wird. Wie hierin verwendet, ist die Phrase „basierend auf‟ gleichbedeutend mit der Phrase „basierend mindestens teilweise auf‟. In ähnlicher Weise ist die Phrase „als Reaktion auf gleichbedeutend mit der Phrase „mindestens teilweise als Reaktion auf‟.
  • Innerhalb dieser Offenbarung können verschiedene Entitäten (die verschiedentlich als „Einheiten“, „Schaltungen“, andere Komponenten usw. bezeichnet werden können) als „konfiguriert“, um eine oder mehrere Aufgaben oder Operationen durchzuführen, beschrieben oder beansprucht werden. Diese Formulierung - [Entität], die konfiguriert ist, um [eine oder mehrere Aufgaben durchzuführen] - wird hierin verwendet, um sich auf eine Struktur (d. h. etwas Physisches) zu beziehen. Insbesondere wird diese Formulierung verwendet, um anzugeben, dass diese Struktur angeordnet ist, um die eine oder die mehreren Aufgaben während des Betriebs durchzuführen. Eine Struktur kann als „konfiguriert, um“ eine Aufgabe durchzuführen, bezeichnet werden, selbst wenn die Struktur aktuell nicht betrieben wird. Somit bezieht sich eine Entität, die als „konfiguriert, um“ eine Aufgabe durchzuführen, beschrieben oder angegeben wird, auf etwas Physisches, wie eine Vorrichtung, eine Schaltung, ein System mit einer Prozessoreinheit und einem Speicher, der Programmanweisungen speichert, die ausführbar sind, um die Aufgabe zu implementieren, usw. Diese Phrase wird hierin nicht verwendet, um auf etwas nicht Greifbares Bezug zu nehmen.
  • In einigen Fällen können verschiedene Einheiten/Schaltungen/Komponenten hierin als Durchführen eines Satzes von Aufgaben oder Vorgängen beschrieben werden. Es versteht sich, dass diese Entitäten „konfiguriert sind, um“ diese Aufgaben/Vorgänge durchzuführen, selbst wenn dies nicht spezifisch angegeben ist.
  • Der Begriff „konfiguriert, um“ soll nicht „konfigurierbar, um“ bedeuten. Eine unprogrammierte FPGA würde zum Beispiel nicht als „konfiguriert, um“ eine bestimmte Funktion durchzuführen, betrachtet werden. Diese unprogrammierte FPGA kann jedoch „konfigurierbar, um“ diese Funktion durchzuführen, sein. Nach geeigneter Programmierung kann die FPGA dann als „konfiguriert, um“ die bestimmte Funktion durchzuführen, bezeichnet werden.
  • Für Zwecke von US-Patentanmeldungen basierend auf dieser Offenbarung soll sich in einem Anspruch, dass eine Struktur „konfiguriert, um“ eine oder mehrere Aufgaben durchzuführen, ist, ausdrücklich nicht auf die Anwendung von 35 U.S.C. § 112(f) für dieses Anspruchselement berufen werden. Wenn sich der Anmelder während des Erteilungsverfahrens einer US-Patentanmeldung basierend auf dieser Offenbarung auf die Anwendung von Abschnitt 112(f) berufen möchte, gibt er Anspruchselemente unter Verwendung des Konstrukts „Mittel zum“ [Durchführen einer Funktion] an.
  • Verschiedene „Schaltungen“ können in dieser Offenbarung beschrieben werden. Diese Schaltungen oder „Schaltlogik“ bilden Hardware, die verschiedene Typen von Schaltungselementen, wie kombinatorische Logik, getaktete Speicherungsvorrichtungen (z. B. Flip-Flops, Register, Latches usw.), endliche Automaten, Speicher (z. B. Direktzugriffsspeicher, eingebetteten dynamischen Direktzugriffsspeicher), programmierbare logische Anordnungen und so weiter, einschließt. Schaltlogik kann individuell gestaltet oder aus Standardbibliotheken entnommen sein. In verschiedenen Implementierungen kann Schaltlogik, wie es geeignet ist, digitale Komponenten, analoge Komponenten oder eine Kombination von beiden einschließen. Bestimmte Typen von Schaltungen können allgemein als „Einheiten“ (z. B. eine Decodiereinheit, eine arithmetisch-logische Einheit (ALU), eine Funktionseinheit, eine Speicherverwaltungseinheit (MMU) usw.) bezeichnet werden. Solche Einheiten beziehen sich ebenfalls auf Schaltungen oder Schaltlogik.
  • Die offenbarten Schaltungen/Komponenten und andere Elemente, die in den Zeichnungen veranschaulicht und hierin beschrieben sind, schließen somit Hardwareelemente, wie die im vorstehenden Absatz beschriebenen, ein. In vielen Fällen kann die interne Anordnung von Hardwareelementen innerhalb einer bestimmten Schaltung durch Beschreiben der Funktion dieser Schaltung angegeben werden. Zum Beispiel kann eine bestimmte „Decodiereinheit“ als die Funktion des „Verarbeitens eines Opcodes einer Anweisung und Umleitens dieser Anweisung zu einer oder mehreren einer Vielzahl von Funktionseinheiten“ durchführend beschrieben werden, was bedeutet, dass die Decodiereinheit „konfiguriert ist, um“ diese Funktion durchzuführen. Diese Funktionsangabe ist für einen Fachmann auf dem Computergebiet ausreichend, um einen Satz möglicher Strukturen für die Schaltung näher zu bezeichnen.
  • In verschiedenen Ausführungsformen, wie im vorstehenden Absatz erörtert, Schaltungen, Einheiten und andere Elemente, die durch die Funktionen oder Vorgänge definiert sind, zu deren Implementierung sie konfiguriert sind, Die Anordnung und solche Schaltungen/Einheiten/Komponenten in Bezug aufeinander und die Weise, in der sie interagieren, bilden eine Mikroarchitekturdefinition der Hardware, die letztendlich in einer integrierten Schaltung hergestellt oder in eine FPGA programmiert wird, um eine physische Implementierung der Mikroarchitekturdefinition zu bilden. Somit wird die Mikroarchitekturdefinition von einem Fachmann als Struktur erkannt, aus der viele physische Implementierungen abgeleitet werden können, die alle in die breitere Struktur fallen, die durch die Mikroarchitekturdefinition beschrieben wird. Das heißt, dass ein Fachmann, dem die gemäß dieser Offenbarung bereitgestellten Mikroarchitekturdefinition präsentiert wird, ohne unangemessenes Experimentieren und durch Anwendung durchschnittlicher Fähigkeiten die Struktur implementieren kann, indem er die Beschreibung der Schaltungen/Einheiten/Komponenten in einer Hardwarebeschreibungssprache (HDL), wie Verilog oder VHDL, codiert. Die HDL-Beschreibung wird häufig in einer Weise ausgedrückt, die als funktional erscheinen kann. Für einen Fachmann auf diesem Gebiet ist diese HDL-Beschreibung jedoch die Weise, die verwendet wird, um die Struktur einer Schaltung, Einheit oder Komponente auf die nächste Implementierungsdetailebene zu transformieren. Eine solche HDL-Beschreibung kann die Form von Verhaltenscode (der üblicherweise nicht synthetisierbar ist), Register-Transfer-Sprache-Code (RTL-Code) (der im Gegensatz zu Verhaltenscode üblicherweise synthetisierbar ist) oder Strukturcode (z. B. eine Netzliste, die Logikgatter und deren Konnektivität angibt) annehmen. Die HDL-Beschreibung kann anschließend gegenüber einer Bibliothek von Zellen synthetisiert werden, die für eine gegebene Technologie zur Herstellung integrierter Schaltungen gestaltet ist, und kann aus Gründen der Zeittaktung, Energie und anderen Gründen modifiziert werden, um zu einer endgültigen Designdatenbank zu führen, die an eine Gießerei übermittelt wird, um Masken zu erzeugen und letztendlich die integrierte Schaltung herzustellen. Manche Hardware-Schaltungen oder Abschnitte davon können auch in einem schematischen Editor benutzerspezifisch gestaltet und zusammen mit synthetisierter Schaltlogik in der Gestaltung der integrierten Schaltung erfasst werden. Die integrierten Schaltungen können Transistoren und andere Schaltungselemente (z. B. passive Elemente, wie Kondensatoren, Widerstände, Spulen usw.) einschließen und eine Verbindung zwischen den Transistoren und Schaltungselementen herstellen. Manche Ausführungsformen können mehrere integrierte Schaltungen implementieren, die miteinander gekoppelt sind, um die Hardware-Schaltungen zu implementieren, und/oder diskrete Elemente können in manchen Ausführungsformen verwendet werden. Alternativ dazu kann die HDL-Gestaltung zu einer programmierbaren Logikanordnung, wie beispielsweise einer anwenderprogrammierbaren Gatteranordnung (field programmable gate array (FPGA)), synthetisiert werden und kann in der FPGA implementiert werden. Dieses Entkoppeln zwischen dem Design einer Gruppe von Schaltungen und der anschließenden Implementierung auf niedriger Ebene dieser Schaltungen führt üblicherweise zu dem Szenario, in dem der Schaltungs- oder Logikdesigner nie einen bestimmten Satz von Strukturen für die Implementierung auf niedriger Ebene angibt, der über eine Beschreibung dessen hinausgeht, wozu die Schaltung konfiguriert ist, da dieser Prozess auf einer anderen Stufe des Schaltungsimplementierungsprozesses durchgeführt wird.
  • Die Tatsache, dass viele verschiedene Kombinationen auf niedriger Ebene von Schaltungselementen verwendet werden können, um die gleiche Spezifikation einer Schaltung zu implementieren, führt zu einer großen Anzahl von äquivalenten Strukturen für diese Schaltung. Wie angegeben, können diese Schaltungen auf niedriger Ebene gemäß Änderungen in der Herstellungstechnologie, der zur Herstellung ausgewählten Gießerei, der Bibliothek von Zellen, die für ein bestimmtes Projekt bereitgestellt wird, usw. variieren. In vielen Fällen können die durch verschiedene Designwerkzeuge oder -methodiken zur Herstellung dieser verschiedenen Implementierungen vorgenommenen Auswahlen beliebig sein.
  • Darüber hinaus ist es für eine einzelne Implementierung einer bestimmten Funktionsspezifikation einer Schaltung üblich, für eine gegebene Ausführungsform eine große Anzahl von Vorrichtungen (z. B. Millionen von Transistoren) einzuschließen. Entsprechend macht es das bloße Volumen dieser Informationen undurchführbar, eine vollständige Angabe der Struktur auf niedriger Ebene, die verwendet wird, um eine einzelne Ausführungsform zu implementieren, geschweige denn die enorme Anordnung äquivalenter möglicher Implementierungen bereitzustellen. Aus diesem Grund beschreibt die vorliegende Offenbarung eine Struktur von Schaltungen unter Verwendung der Funktionskurzschrift, die üblicherweise in der Industrie eingesetzt wird.
  • Zahlreiche Variationen und Modifikationen werden für den Fachmann ersichtlich, sobald die vorstehende Offenbarung vollständig verstanden ist. Es ist beabsichtigt, dass die folgenden Ansprüche derart interpretiert werden, dass alle solchen Variationen und Modifikationen eingeschlossen sind.
  • ZITATE ENTHALTEN IN DER BESCHREIBUNG
  • Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.
  • Zitierte Patentliteratur
    • US 63/170868 [0040]
    • US 63/175868 [0040]
    • US 63/175877 [0040]

Claims (15)

  1. System-on-a-Chip (SOC), umfassend einen Halbleiter-Die, auf dem eine Schaltlogik ausgebildet ist, wobei die Schaltlogik umfasst: eine Vielzahl von Agenten; eine Vielzahl von Netzwerkschaltern, die mit der Vielzahl von Agenten gekoppelt sind, wobei: die Vielzahl von Netzwerkschaltern miteinander verbunden sind, um eine Vielzahl von physisch und logisch unabhängigen Netzwerken zu bilden; und ein erstes Netzwerk der Vielzahl von physisch und logisch unabhängigen Netzwerken gemäß einer ersten Topologie aufgebaut ist und ein zweites Netzwerk der Vielzahl von physisch und logisch unabhängigen Netzwerken gemäß einer zweiten Topologie aufgebaut ist, die sich von der ersten Topologie unterscheidet.
  2. SOC nach Anspruch 1, wobei die erste Topologie eine Ringtopologie ist.
  3. SOC nach Anspruch 2, wobei die zweite Topologie eine Maschentopologie ist.
  4. SOC nach einem der Ansprüche 1 bis 3, wobei: mindestens eines der Vielzahl von physisch und logisch unabhängigen Netzwerken eine erste Anzahl von physischen Kanälen implementiert und mindestens ein anderes der Vielzahl von physisch und logisch unabhängigen Netzwerken eine zweite Anzahl von physischen Kanälen implementiert; und sich die erste Anzahl von der zweiten Anzahl unterscheidet.
  5. SOC nach einem der Ansprüche 1 bis 4, wobei: das erste Netzwerk einen oder mehrere erste virtuelle Kanäle einschließt und das zweite Netzwerk einen oder mehrere zweite virtuelle Kanäle einschließt; und mindestens einer des einen oder der mehreren ersten virtuellen Kanäle sich von dem einen oder den mehreren zweiten virtuellen Kanälen unterscheidet.
  6. SOC nach einem der Ansprüche 1 bis 5, ferner umfassend eine Netzwerkschnittstellenschaltung, die konfiguriert ist, um Kommunikationen von einem gegebenen Agenten der Vielzahl von Agenten in Kommunikationen für ein gegebenes Netzwerk der Vielzahl von physisch und logisch unabhängigen Netzwerken umzuwandeln, wobei die Netzwerkschnittstellenschaltung mit einem der Vielzahl von Netzwerkschaltern in dem gegebenen Netzwerk gekoppelt ist.
  7. SOC nach einem der Ansprüche 1 bis 6, wobei ein erster Agent der Vielzahl von Agenten mit mindestens zwei der Vielzahl von physisch und logisch unabhängigen Netzwerken gekoppelt ist, wobei der erste Agent konfiguriert ist, um eine zu übertragende Transaktion zu erzeugen, und wobei der erste Agent konfiguriert ist, um eines der mindestens zwei der Vielzahl von physisch und logisch unabhängigen Netzwerke, auf denen die Transaktion basierend auf einem Typ der Transaktion übertragen werden soll, auszuwählen.
  8. SOC nach Anspruch 7, wobei eines der mindestens zwei Netzwerke ein E/A-Netzwerk ist, auf dem E/A-Transaktionen übertragen werden.
  9. SOC nach Anspruch 1, wobei: das erste Netzwerk eine Vielzahl von virtuellen Kanälen einschließt; und Transaktionen in verschiedenen virtuellen Kanälen der Vielzahl von virtuellen Kanälen verschiedene Pfade durch das erste Netzwerk von einer gegebenen Quelle zu einem gegebenen Ziel nehmen.
  10. SOC nach einem der Ansprüche 1 bis 9, wobei: das erste Netzwerk konfiguriert ist, um Transaktionen von einer gegebenen Quelle zu einem gegebenen Ziel umzuleiten, und wobei verschiedene Pfade, die von der gegebenen Quelle zu dem gegebenen Ziel gedacht sind, für die Transaktionen basierend auf einem oder mehreren Attributen der Transaktionen ausgewählt werden.
  11. SOC nach einem der Ansprüche 1 bis 10, ferner umfassend: eine Vielzahl von Prozessor-Clustern, wobei ein gegebener Prozessor-Cluster einen oder mehrere Prozessoren umfasst; eine Vielzahl von Grafikverarbeitungseinheiten; und eine Vielzahl von Speichersteuerungen, die konfiguriert sind, um den Zugriff auf Speichervorrichtungen zu steuern; wobei: eine erste Teilmenge der Vielzahl von Netzwerkschaltern miteinander verbunden ist, um ein Netzwerk einer zentralen Verarbeitungseinheit (CPU) zwischen der Vielzahl von Prozessor-Clustern und der Vielzahl von Speichersteuerungen zu bilden, eine zweite Teilmenge der Vielzahl von Netzwerkschaltern miteinander verbunden ist, um ein Eingabe/Ausgabe-Netzwerk (E/A-Netzwerk) zwischen der Vielzahl von Prozessor-Clustern, der Vielzahl von Agenten und der Vielzahl von Speichersteuerungen zu bilden, eine dritte Teilmenge der Vielzahl von Netzwerkschaltern miteinander verbunden ist, um ein Netzwerk mit gelockerter Sortierung zwischen der Vielzahl von Grafikverarbeitungseinheiten, ausgewählten Agenten der Vielzahl von Agenten und der Vielzahl von Speichersteuerungen zu bilden, das CPU-Netzwerk, das E/A-Netzwerk und das Netzwerk mit gelockerter Sortierung voneinander unabhängig sind, das CPU-Netzwerk und das E/A-Netzwerk kohärent sind und das Netzwerk mit gelockerter Sortierung nichtkohärent ist und im Vergleich zum CPU-Netzwerk und zum E/A-Netzwerk reduzierte Sortierungsbeschränkungen aufweist.
  12. SOC nach Anspruch 11, wobei das CPU-Netzwerk ein Ringnetzwerk ist, das E/A-Netzwerk ein Ringnetzwerk ist und das Netzwerk mit gelockerter Sortierung ein Maschennetzwerk ist.
  13. SOC nach einem der Ansprüche 11 bis 12, wobei ein erster Agent der Vielzahl von Agenten einen E/A-Cluster umfasst, der eine Vielzahl von Peripherievorrichtungen umfasst, und wobei der E/A-Cluster ferner eine Brücke umfasst, die mit der Vielzahl von Peripherievorrichtungen gekoppelt ist und ferner mit einem ersten Netzwerkschalter in der zweiten Teilmenge gekoppelt ist.
  14. Verfahren, umfassend: Erzeugen einer Transaktion in einem Agenten, der mit einer Vielzahl von physisch und logisch unabhängigen Netzwerken gekoppelt ist, wobei ein erstes Netzwerk der Vielzahl von physisch und logisch unabhängigen Netzwerken gemäß einer ersten Topologie aufgebaut ist und ein zweites Netzwerk der Vielzahl von physisch und logisch unabhängigen Netzwerken gemäß einer zweiten Topologie aufgebaut ist, die sich von der ersten Topologie unterscheidet; und Auswählen von einem der Vielzahl von physisch und logisch unabhängigen Netzwerken, auf denen die Transaktion basierend auf einem Typ der Transaktion übertragen werden soll.
  15. Verfahren nach Anspruch 14, ferner umfassend das Auswählen eines virtuellen Kanals aus einer Vielzahl von virtuellen Kanälen, die auf dem einen der Vielzahl von physisch und logisch unabhängigen Netzwerken unterstützt werden, basierend auf einem oder mehreren Attributen der Transaktion, die von dem Typ abweicht.
DE102022109273.9A 2021-04-16 2022-04-14 Unabhängige on-chip-mehrfachverschaltung Pending DE102022109273A1 (de)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US202163176075P 2021-04-16 2021-04-16
US63/176,075 2021-04-16
US17/337,805 US11675722B2 (en) 2021-04-16 2021-06-03 Multiple independent on-chip interconnect
US17/337,805 2021-06-03

Publications (1)

Publication Number Publication Date
DE102022109273A1 true DE102022109273A1 (de) 2022-10-20

Family

ID=81653128

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102022109273.9A Pending DE102022109273A1 (de) 2021-04-16 2022-04-14 Unabhängige on-chip-mehrfachverschaltung

Country Status (5)

Country Link
US (2) US11675722B2 (de)
KR (2) KR102604573B1 (de)
CN (1) CN115221108A (de)
DE (1) DE102022109273A1 (de)
GB (1) GB2609693A (de)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11983133B2 (en) * 2022-08-22 2024-05-14 Xilinx, Inc. Adaptive integrated programmable data processing unit
CN116578523B (zh) * 2023-07-12 2023-09-29 上海芯高峰微电子有限公司 片上网络系统及其控制方法

Family Cites Families (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7340548B2 (en) * 2003-12-17 2008-03-04 Microsoft Corporation On-chip bus
US7720054B2 (en) * 2004-03-02 2010-05-18 Cisco Technology, Inc. Router configured for outputting update messages specifying a detected attribute change of a connected active path according to a prescribed routing protocol
US7636835B1 (en) 2006-04-14 2009-12-22 Tilera Corporation Coupling data in a parallel processing environment
US9075952B2 (en) 2013-01-17 2015-07-07 Intel Corporation Controlling bandwidth allocations in a system on a chip (SoC)
US9160627B2 (en) * 2013-04-04 2015-10-13 Netspeed Systems Multiple heterogeneous NoC layers
EP2997482A4 (de) 2013-05-16 2016-11-16 Hewlett Packard Development Co Multimodales mittel
US9244874B2 (en) 2013-06-14 2016-01-26 National Instruments Corporation Selectively transparent bridge for peripheral component interconnect express bus systems
US9054977B2 (en) * 2013-08-05 2015-06-09 Netspeed Systems Automatic NoC topology generation
KR20150019457A (ko) * 2013-08-14 2015-02-25 삼성전자주식회사 시스템 온 칩, 이의 동작 방법, 및 이를 포함하는 시스템
US9825779B2 (en) * 2014-05-23 2017-11-21 Arteris, Inc. Network-on-chip (NoC) topology generation
US10523585B2 (en) 2014-12-19 2019-12-31 Amazon Technologies, Inc. System on a chip comprising multiple compute sub-systems
US9996487B2 (en) * 2015-06-26 2018-06-12 Intel Corporation Coherent fabric interconnect for use in multiple topologies
US9940423B2 (en) * 2015-12-20 2018-04-10 Arteris, Inc. Editing a NoC topology on top of a floorplan
US10191877B2 (en) 2015-12-22 2019-01-29 Intel Corporation Architecture for software defined interconnect switch
US10733350B1 (en) * 2015-12-30 2020-08-04 Sharat C Prasad On-chip and system-area multi-processor interconnection networks in advanced processes for maximizing performance minimizing cost and energy
EP3400688B1 (de) 2016-01-04 2020-05-20 Gray Research LLC Massiv-paralleler computer, beschleunigte computercluster und zweidimensionaler router und verbindungsnetzwerk für feldprogrammierbare gate-arrays und anwendungen
US11562115B2 (en) 2017-01-04 2023-01-24 Stmicroelectronics S.R.L. Configurable accelerator framework including a stream switch having a plurality of unidirectional stream links
US10769080B2 (en) * 2017-03-30 2020-09-08 Futurewei Technologies, Inc. Distributed and shared memory controller
US10043232B1 (en) 2017-04-09 2018-08-07 Intel Corporation Compute cluster preemption within a general-purpose graphics processing unit
US10719651B2 (en) * 2017-12-30 2020-07-21 Arteris, Inc. Synthesizing topology for an interconnect network of a system-on-chip with intellectual property blocks
JP7457654B2 (ja) * 2018-03-30 2024-03-28 グーグル エルエルシー システムオンチップ上の相互接続ファブリック内でソースベースルーティングを実施するための手順
US10579469B2 (en) 2018-05-25 2020-03-03 Arm Limited Interconnection network for integrated circuit
US10997771B2 (en) 2018-08-29 2021-05-04 Intel Corporation Position-based rendering apparatus and method for multi-die/GPU graphics processing
KR102641520B1 (ko) 2018-11-09 2024-02-28 삼성전자주식회사 멀티-코어 프로세서를 포함하는 시스템 온 칩 및 그것의 태스크 스케줄링 방법
US10944693B2 (en) * 2018-11-13 2021-03-09 Advanced Micro Devices, Inc. Routing flits in a network-on-chip based on operating states of routers
US10673439B1 (en) * 2019-03-27 2020-06-02 Xilinx, Inc. Adaptive integrated programmable device platform
US11016810B1 (en) * 2019-11-26 2021-05-25 Mythic, Inc. Tile subsystem and method for automated data flow and data processing within an integrated circuit architecture

Also Published As

Publication number Publication date
CN115221108A (zh) 2022-10-21
US11675722B2 (en) 2023-06-13
KR20230160767A (ko) 2023-11-24
US20230350828A1 (en) 2023-11-02
KR20220143590A (ko) 2022-10-25
GB2609693A (en) 2023-02-15
US20220334997A1 (en) 2022-10-20
GB202205129D0 (en) 2022-05-25
KR102604573B1 (ko) 2023-11-22

Similar Documents

Publication Publication Date Title
DE102018006756A1 (de) Beschleuniger-Fabric
DE102022109273A1 (de) Unabhängige on-chip-mehrfachverschaltung
DE102019104394A1 (de) Befehlssatzarchitektur zum ermöglichen von energieeffizientem rechnen für exascalearchitekturen
DE102016109363A1 (de) Host-port für serielle periphere schnittstellen
DE202022002976U1 (de) Skalierbares System-on-a-Chip
DE112012005700T5 (de) Externe Hilfsausführungseinheiten-Schnittstelle zur ausserhalb des Chips angeordneten Hilfsausführungseinheit
DE102019109119A1 (de) Host-verwalteter kohärenter gerätespeicher
DE60132424T2 (de) Taktschutz für gemeinsame Komponenten einer Multiprozessor-DSP Vorrichtung
DE102015102135A1 (de) Unterbrechbares Exklusivspeichern
US11868258B2 (en) Scalable cache coherency protocol
DE102022107196A1 (de) Sichere direkte Peer-to-Peer-Speicherzugriffsanforderung zwischen Geräten
DE112022001472T5 (de) Dynamisches takt- und leistungs-gating von chip zu chip
US11609878B2 (en) Programmed input/output message control circuit
DE112021004724T5 (de) Skalierbare Interrupts
DE112021004758T5 (de) Dsb-operation mit ausgeschlossenem bereich
DE112022000318T5 (de) Gemeinsam genutzter steuerbus für grafikprozessoren
DE112022001978T5 (de) E/a-agent
DE112022003361T5 (de) Über kritikalität informierte caching-richtlinien
DE112022002956T5 (de) Multi-die-leistungssynchronisation
US20230239252A1 (en) Segment to Segment Network Interface
DE112022003258T5 (de) Vorhersagebestätigung für cache-subsystem
US20240085968A1 (en) Dynamic Interface Circuit to Reduce Power Consumption
DE112021004761T5 (de) Rechen-kernel-parsen mit grenzen in einer oder mehreren dimensionen
DE112022002417T5 (de) Adress-hashing in einem mehrfachspeichersteuerungssystem
DE112022003371T5 (de) Bandbreitenoptimierung für speichervorrichtung

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R079 Amendment of ipc main class

Free format text: PREVIOUS MAIN CLASS: H04L0049150000

Ipc: H04L0012280000