DE102019135728A1 - Netzwerk-auf-Chip (NOC) mit flexibler Datenbreite - Google Patents

Netzwerk-auf-Chip (NOC) mit flexibler Datenbreite Download PDF

Info

Publication number
DE102019135728A1
DE102019135728A1 DE102019135728.4A DE102019135728A DE102019135728A1 DE 102019135728 A1 DE102019135728 A1 DE 102019135728A1 DE 102019135728 A DE102019135728 A DE 102019135728A DE 102019135728 A1 DE102019135728 A1 DE 102019135728A1
Authority
DE
Germany
Prior art keywords
data
bonded
programmable
chip
data channel
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
DE102019135728.4A
Other languages
English (en)
Inventor
Dheeraj Subbareddy
Kavitha Prasad
Ankireddy Nalamalpu
Harsha Gupta
Sean R. Atsatt
James Ball
Sharath Raghava
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of DE102019135728A1 publication Critical patent/DE102019135728A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03KPULSE TECHNIQUE
    • H03K19/00Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
    • H03K19/02Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components
    • H03K19/173Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components
    • H03K19/177Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components arranged in matrix form
    • H03K19/17736Structural details of routing resources
    • 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
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03KPULSE TECHNIQUE
    • H03K19/00Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
    • H03K19/02Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components
    • H03K19/173Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components
    • H03K19/177Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components arranged in matrix form
    • H03K19/1778Structural details for adapting physical parameters
    • H03K19/17796Structural details for adapting physical parameters for physical disposition of blocks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/50Network service management, e.g. ensuring proper service fulfilment according to agreements
    • H04L41/5003Managing SLA; Interaction between SLA and QoS
    • H04L41/5019Ensuring fulfilment of SLA
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/50Network service management, e.g. ensuring proper service fulfilment according to agreements
    • H04L41/5003Managing SLA; Interaction between SLA and QoS
    • 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)
  • Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Logic Circuits (AREA)

Abstract

[0073] Hier beschriebene Techniken können die Bereitstellung eines programmierbaren Verbindungsnetzwerks (z. B. eines programmierbaren Netzwerk-auf-Chip (NOC) betreffen. Ein Verfahren kann Bestimmen eines Übertragungsparameters, Bonden eines oder mehrerer Kanäle eines Verbindungsnetzwerks mindestens teilweise auf der Basis des Übertragungsparameters und Stromversorgungs-Torschalten etwaiger unbenutzter Kanäle nach dem Boden umfassen.

Description

  • Hintergrund
  • Die vorliegende Offenbarung betrifft allgemein NOC-Schaltungen (Netzwerk-auf-Chip) für integrierte Schaltungsvorrichtungen und insbesondere ein Netzwerk-auf-Chip (NOC), das flexibel verschiedene Datenbreiten unterstützen kann.
  • Dieser Abschnitt soll den Leser in verschiedene Aspekte der Technik einführen, die verschiedene Aspekte der vorliegenden Offenbarung betreffen können, die nachfolgend beschrieben und/oder beansprucht werden. Es wird vermutet, dass diese Besprechung dabei hilfreich sein wird, dem Leser Hintergrundinformationen bereitzustellen, um ein besseres Verständnis der verschiedenen Aspekte der vorliegenden Offenbarung zu erleichtern. Dementsprechend versteht sich, dass diese Aussagen in dieser Hinsicht aufzufassen sind und nicht als Zulassungen des Stands der Technik.
  • Fortschritte in der Mikroelektronik haben die fortgesetzte Zunahme der Transistordichten für vielfältige integrierte Schaltungsvorrichtungen ermöglicht. Tatsächlich können einige fortschrittliche integrierte Schaltungen, wie etwa FPGA (Field Programmable Gate Arrays) oder andere programmierbare Logikvorrichtungen eine größere Anzahl von Transistoren umfassen, die eine zunehmende Vielfalt von Entwürfen programmierbarer Schaltungen ermöglicht, die eine große Anzahl verschiedener Funktionen implementieren können. Bei einigen programmierbaren Logikvorrichtungen können Daten unter Verwendung von Datentransferprotokollen über eine Festverbindungs-Netzwerkschaltung, die als Netzwerk-auf-Chip (NOC) bekannt ist, paketiert und zu oder von diesen verschiedenen Funktionen geroutet werden. Da ein Schaltungsentwurf für eine programmierbare Logikvorrichtung möglicherweise nicht im Voraus bekannt ist, kann das Netzwerk-auf-Chip (NOC) jedoch in der Zukunft auf der Basis wahrscheinlicher Benutzungsfälle eines Schaltungsentwurfs entworfen werden. Wenn also das Netzwerk-auf-Chip (NOC) zum Beispiel für bestimmte Breitbandprotokolle keine ausreichend breite Bandbreite aufweist, kann das Netzwerk-auf-Chip (NOC) nicht in der Lage sein, mit diesen Protokollen zu arbeiten. Ähnlich kann, wenn ein Schaltungsentwurf ein Protokoll mit einer Bandbreite verwendet, die kleiner als die Bandbreite des Netzwerk-auf-Chip (NOC) ist, das Netzwerk-auf-Chip (NOC) zu wenig ausgelastet werden. Diese Unterauslastung kann beim FPGA-Entwurf Ineffizienzen verursachen und zu höherem Stromverbrauch führen.
  • Figurenliste
  • Vorteile der vorliegenden Offenbarung werden bei Durchsicht der folgenden ausführlichen Beschreibung und unter Bezugnahme auf die Zeichnungen ersichtlich. Es zeigen:
    • 1 eine Blockdarstellung eines Datenverarbeitungssystems, mit dem ein integriertes Schaltungssystem programmiert werden kann, das ein programmierbares Verbindungsnetzwerk aufweist, gemäß einer Ausführungsform;
    • 2 eine Blockdarstellung der integrierten Schaltung von 1 gemäß einer Ausführungsform;
    • 3 eine Blockdarstellung des integrierten Schaltungssystems von 1, das durch das Datenverarbeitungssystem programmiert wird, gemäß einer Ausführungsform;
    • 4 eine Blockdarstellung eines Beispiels für das programmierbare Logikkoppelfeld und das programmierbare Verbindungsnetzwerk von 3, so wie sie in einem FPGA (Field Programmable Gate Array) verwendet werden, gemäß einer Ausführungsform;
    • 5A eine Blockdarstellung eines verallgemeinerten Beispiels für das programmierbare Verbindungsnetzwerk von 3 gemäß einer Ausführungsform;
    • 5B eine Blockdarstellung des programmierbaren Verbindungsnetzwerks von 5A, das zu einem ersten Zeitpunkt genommen und zum Senden von Datenpaketen durch logisch gebondete Datenkanäle verwendet wird, gemäß einer Ausführungsform;
    • 5C eine Blockdarstellung des programmierbaren Verbindungsnetzwerks von 5A, das zu einem zweiten Zeitpunkt genommen und zum Senden von Datenpaketen durch logisch gebondete Datenkanäle verwendet wird, gemäß einer Ausführungsform;
    • 6 eine Blockdarstellung von dem programmierbaren Verbindungsnetzwerk von 5A zugeordneten Brücken gemäß einer Ausführungsform;
    • 7 eine schematische Darstellung eines beispielhaften programmierbaren Verbindungsnetzwerks von 3 gemäß einer Ausführungsform;
    • 8 eine schematische Darstellung eines anderen beispielhaften programmierbaren Verbindungsnetzwerks von 3 gemäß einer Ausführungsform;
    • 9A eine schematische Darstellung einer Probekonfiguration des programmierbaren Verbindungsnetzwerks von 8 gemäß einer Ausführungsform;
    • 9B eine schematische Darstellung einer Probekonfiguration des programmierbaren Verbindungsnetzwerks von 8 gemäß einer Ausführungsform;
    • 10 eine schematische Darstellung einer Probekonfiguration des programmierbaren Verbindungsnetzwerks von 8 gemäß einer Ausführungsform;
    • 11 eine schematische Darstellung einer Probekonfiguration des programmierbaren Verbindungsnetzwerks von 8 gemäß einer Ausführungsform; und
    • 12 ein Verfahren zur Bestimmung einer Konfiguration des programmierbaren Verbindungsnetzwerks von 8 gemäß einer Ausführungsform.
  • AUSFÜHRLICHE BESCHREIBUNG SPEZIFISCHER AUSFÜHRUNGSFORMEN
  • Im Folgenden werden eine oder mehrere spezifische Ausführungsformen der vorliegenden Offenbarung beschrieben. Als Versuch, eine straffe Beschreibung dieser Ausführungsformen bereitzustellen, werden nicht alle Merkmale einer tatsächlichen Implementierung in der Patentschrift beschrieben. Es versteht sich, dass bei der Entwicklung jeder solchen tatsächlichen Implementierung wie bei jedem technischen oder Entwicklungsprojekt zahlreiche implementierungsspezifische Entscheidungen vorgenommen werden müssen, um die spezifischen Ziele der Entwickler zu erreichen, wie etwa Einhaltung von systembezogenen und geschäftsbezogenen Einschränkungen, die von einer Implementierung zur anderen unterschiedlich sein können. Außerdem versteht sich, dass ein solcher Entwicklungsversuch komplex und zeitaufwändig sein könnte, aber dennoch für Durchschnittsfachleute anhand der vorliegenden Offenbarung ein routinemäßiges Unterfangen der Entwicklung, Fabrikation und Herstellung wäre. Die hier dargestellten und beanspruchten Techniken werden auf materielle Objekte und konkrete Beispiele praktischer Natur bezogen und angewandt, die nachweislich das derzeitige technische Gebiet verbessern, und somit sind sie nicht abstrakt, nicht greifbar oder rein theoretisch.
  • Bei der Einführung von Elementen verschiedener Ausführungsformen der vorliegenden Offenbarung sollen die Artikel „ein“, „eine“ und „der/die/das“ bedeuten, dass ein oder mehrere der Elemente vorliegen. Die Ausdrücke „umfassend“, „beinhaltend“ und „aufweisend“ sollen inklusive sein und bedeuten, dass es zusätzliche Elemente außer den aufgelisteten Elementen geben kann. Außerdem versteht sich, dass Erwähnungen von „einer Ausführungsform“ oder „eine Ausführungsform“ der vorliegenden Offenbarung nicht so aufgefasst werden sollen, dass sie das Vorliegen zusätzlicher Ausführungsformen, die die angeführten Merkmale auch enthalten, ausschließen. Ferner soll der Ausdruck A „basierend auf“ B bedeuten, dass A mindestens teilweise auf B basiert. Sofern es nicht ausdrücklich anders angegeben wird, soll ferner der Ausdruck „oder“ inklusive sein (z. B. logisches OR) und nicht exklusive (logisches XOR). Anders ausgedrückt, soll der Ausdruck A „oder“ B A, B oder sowohl A als auch B bedeuten.
  • Programmierbare Logikvorrichtungen wie FPGA (Field Programmable Gate Arrays) sind fortschrittliche integrierte Schaltungen, die ihren Wert für Verarbeitungsoperationen bewiesen haben, und folglich haben sich viele neue Benutzungsfälle für programmierbare Logikvorrichtungen entwickelt und sind hervorgetreten. Daten können unter Verwendung einer festen Verbindungsnetzwerkschaltung, die als Netzwerk-auf-Chip (NOC) bekannt ist, zu oder von verschiedenen Bereichen einer programmierbaren Logikvorrichtung geroutet werden. Programmierbare Logikvorrichtungen sowie andere integrierte Schaltungen können jedoch feste Verbindungsnetzwerke zu wenig auslasten.
  • Ein programmierbares Verbindungsnetzwerk (z. B. ein programmierbares Netzwerk-auf-Chip (NOC)) mit flexiblen Datenpfaden kann vielfältige mögliche Bandbreiten unterstützen, was zu effizienterer Auslastung und Skalierbarkeit führt und es Herstellern integrierter Schaltungen gestatten kann, Metriken der Dienstgüte (QoS) und/oder Entwurfsparameter (wenn z. B. ein Kunde eine gewünschte Bandbreite oder Übertragungseigenschaft spezifizieren kann) einzuhalten. Wenn zum Beispiel eine Verbindung eine feste Datenpfadbreite von 64 Byte (64 B) verwendet und die feste Datenpfadbreite Nutzinformationen mit einer Breite von 16 Byte (16 B) überträgt, wird die Verbindung zu wenig ausgelastet betrachtet, und es können Energie und/oder Ressourcen verschwendet werden. Im Gegensatz dazu kann ein programmierbares Verbindungsnetzwerk, das eine programmierbare Datenpfadbreite aufweist, dafür programmiert werden, auf der Basis der Anwendung der integrierten Schaltung eine höhere oder niedrigere Datenpfadbreite zuzuteilen.
  • Das programmierbare Verbindungsnetzwerk kann einen oder mehrere Datenpfade (die auf der Basis des Typs von Daten, die der Datenpfad überträgt, auch als Datenkanäle und/oder Adressenkanäle bezeichnet werden) umfassen und kann Daten zwischen einem oder mehreren Schaltungselementen der integrierten Schaltung über die Datenpfade übertragen. Zum Beispiel können der eine oder mehreren Datenpfade Daten zwischen einer oder mehreren Anwendungs-Funktionseinheiten übertragen, die über die Datenpfade in ein programmierbares Logikfeld programmiert sind. Eine Anwendungs-Funktionseinheit kann eine Transaktion in ein Datenpaket (ein Befehlspaket) einkapseln und kann das Datenpaket unter Verwendung einer Transportschicht des programmierbaren Verbindungsnetzwerks und von Brückenschaltkreisen zu einer zusätzlichen Anwendungs-Funktionseinheit oder einer anderen Komponente senden. Auf diese Weise können sich die Brückenschaltkreise in oder an einer Grenze zwischen der Anwendungs-Funktionseinheit, die Daten erzeugt, und dem programmierbaren Verbindungsnetzwerk befinden. Es wird angemerkt, dass es sich in Schaltungen wie ASIC (anwendungsspezifischen integrierten Schaltungen) oder andern programmierbaren Schaltungen außer programmierbaren Logikvorrichtungen bei einer Anwendungs-Funktionseinheit um Schaltkreise handeln kann, die Daten erzeugt, die über das programmierbare Verbindungsnetzwerk zu anderen Schaltkreisen zu übertragen sind.
  • Router des programmierbaren Verbindungsnetzwerks können basierend auf Übertragungsparametern, die den zwischen den Anwendungs-Funktionseinheiten zu übertragenden Daten zugeordnet sind (z. B. auf der Basis erwarteter Übertragungsmuster) logisch miteinander gebondet sein. Das logische Bonden kann zum Zeitpunkt der Konfiguration für das programmierbare Verbindungsnetzwerk basierend auf Übertragungsparametern geschehen. Einzelne Router können während einer Konfigurationszeit dafür programmiert werden, Master- oder Slave-Konfigurationen aufzuweisen. Router arbeiten dann zusammen (z. B. ein Master mit einem oder mehreren Slaves), um ein empfangenes Datenpaket gemäß einem Gleichschritt-Übertragungsformat zu übertragen. Übertragungsparameter wären zum Beispiel eine Übertragungsrichtung, Energie- und/oder Latenzbetrachtungen, die den zu übertragenden Daten zugeordnete Übertragungsbandbreite und/oder eine Priorisierungsangabe, die beschreibt, welcher jeweilige Übertragungsparameter Priorität aufweisen soll, oder dergleichen. Übertragungsparameter können durch Software während des Schaltungsentwicklungsprozesses abgeleitet werden oder können als Angaben in einer Datei oder als Teil eines zu optimierenden, zu platzierenden und/oder zu routenden Schaltungsentwurfs enthalten sein. Auf diese Weise können die Übertragungsparameter mindestens teilweise auf einer Übertragungsrichtungsangabe, einer Zielanwendungs-Funktionseinheit-Angabe, einer Zielortsangabe, Energiebetrachtungen, Latenzbetrachtungen und/oder einer Priorisierungsangabe oder dergleichen basieren.
  • Die Router und zugeordneten Datenpfade werden mindestens teilweise auf der Basis der Übertragungsparameter logisch miteinander gebondet, die Übertragungseigenschaften von zwischen Routern zu übertragenden Daten (z. B. wie etwa von einer Anwendungs-Funktionseinheit zu einer anderen Anwendungs-Funktionseinheit) definieren. Somit können mehr Datenkanäle miteinander gebondet werden, um Daten, die eine relativ größere Bandbreite aufweisen, zu übertragen, aber mit einer niedrigeren Anzahl von Datenpfaden zum Übertragen von Daten, die eine kleinere Bandbreite aufweisen. Diese Implementierungen, die hier beschrieben werden, können in programmierbaren Logikvorrichtungen (z. B. FPGA), anwendungsspezifischen integrierten Schaltungen (ASIC) oder einer beliebigen anderen geeigneten Vorrichtung (z. B. einem geeigneten Prozessor, der Anweisungen ausführt, um die Implementierungen des programmierbaren Verbindungsnetzwerks der vorliegenden Offenbarung auszuführen) ausgeführt werden.
  • Angesichts des Obigen zeigt 1 eine Blockdarstellung eines Systems 10, das zum Programmieren einer integrierten Schaltung 12 verwendet werden kann. Die integrierte Schaltung 12 kann umkonfigurierbar sein (z. B. FPGA) oder kann eine anwendungsspezifische integrierte Schaltung (ASIC) sein. Ein Benutzer kann einen auf die integrierte Schaltung 12 zu programmierenden Schaltungsentwurf unter Verwendung von Entwurfssoftware 14, wie etwa einer Version von Quartus by Intel®, implementieren.
  • Die Entwurfssoftware 14 kann durch einen oder mehrere Prozessoren 16 eines Datenverarbeitungssystems 18 ausgeführt werden. Das Datenverarbeitungssystem 18 kann eine beliebige geeignete Vorrichtung umfassen, die in der Lage ist, die Entwurfssoftware 14 auszuführen, wie etwa ein Desktop-Computer, ein Laptop, eine mobile elektronische Vorrichtung, ein Server oder dergleichen. Das Datenverarbeitungssystem 18 kann auf die integrierte Schaltung 12 zugreifen, sie konfigurieren und/oder mit ihr kommunizieren. Der Prozessor bzw. die Prozessoren 16 können mehrere Mikroprozessoren, eine oder mehrere andere integrierte Schaltungen (z. B. ASIC, FPGA, Prozessoren mit reduziertem Anweisungssatz und dergleichen) oder eine gewisse Kombination dieser umfassen.
  • Eine oder mehrere Speichervorrichtungen 20 können die Entwurfssoftware 14 speichern. Außerdem kann die Speichervorrichtung bzw. können die Speichervorrichtungen 20 Informationen in Bezug auf die integrierte Schaltung 12 speichern, wie etwa Steuersoftware, Konfigurationssoftware, Nachschlagetabellen, Konfigurationsdaten usw. Bei einigen Ausführungsformen kann der Prozessor 16 und/oder die Speichervorrichtung 20 bzw. können die Prozessoren 16 und/oder die Speichervorrichtungen 20 sich außerhalb des Datenverarbeitungssystems 18 befinden. Die Speichervorrichtung(en) 20 kann bzw. können ein greifbares, nichttransitorisches maschinenlesbares Medium umfassen, wie etwa einen flüchtigen Speicher (z. B. Direktzugriffsspeicher (RAM)) und/oder einen nichtflüchtigen Speicher (z. B. einen Festwertspeicher (ROM)). Die Speichervorrichtung(en) 20 kann bzw. können vielfältige Informationen speichern, die für verschiedene Zwecke verwendet werden können. Zum Beispiel kann die Speichervorrichtung bzw. können die Speichervorrichtungen 20 maschinenlesbare und/oder prozessorausführbare Anweisungen (z. B. Firmware oder Software) für den Prozessor 16 bzw. die Prozessoren 16 zur Ausführung speichern, wie etwa Anweisungen zur Bestimmung einer Geschwindigkeit der integrierten Schaltung 12 oder einer Region der integrierten Schaltung 12, Bestimmen einer Kritizität eines Pfads eines Entwurfs, der in die integrierte Schaltung 12 oder eine Region der integrierten Schaltung 12 programmiert wird, Programmieren des Entwurfs in der integrierten Schaltung 12 oder einer Region der integrierten Schaltung 12 und dergleichen. Die Speichervorrichtung(en) 20 kann bzw. können eine oder mehrere Speicherungsvorrichtungen (z. B. nichtflüchtige Speicherungsvorrichtung) umfassen, die Festwertspeicher (ROM), Flash-Speicher, eine Festplatte oder ein beliebiges anderes geeignetes optisches, magnetisches oder Halbleiter-Speicherungsmedium oder eine beliebige Kombination davon umfassen können.
  • Die Entwurfssoftware 14 kann einen Compiler 22 zur Erzeugung eines Schaltungsentwurfsprogramms 24 auf niedriger Ebene (Bitstrom) verwenden, das manchmal als Programmobjektdatei bekannt ist, das die integrierte Schaltung 12 programmiert. Das heißt, der Compiler 22 kann maschinenlesbare Anweisungen, die den Schaltungsentwurf repräsentieren, der integrierten Schaltung 12 bereitstellen. Zum Beispiel kann die integrierte Schaltung 12 ein oder mehrere Programme 24 als Bitströme empfangen, die die Hardwareimplementierungen beschreiben, die in der integrierten Schaltung gespeichert werden sollten. Die Programme 24 (Bitströme) können als Programmkonfiguration 26 in die integrierte Schaltung 12 programmiert werden.
  • Eine Steuerung kann die Programme 24 (Bitströme) empfangen und wirken, um die integrierte Schaltung 12 gemäß den Programmen 24 (Bitströmen) zu konfigurieren. Zum Beispiel kann die integrierte Schaltung 12 wie in 2 abgebildet ein FPGA sein, das gemäß den Programmen 24 (Bitströmen) umkonfiguriert werden kann, um vielfältige Aufgaben und/oder Funktionen auszuführen.
  • 2 ist eine Blockdarstellung der integrierten Schaltung 12 von 1 und umfasst ein programmierbares Verbindungsnetzwerk 28 (z. B. Netzwerk-auf-Chip (NOC)) und ein programmierbares Logikfeld 30, das auf der Basis der Programme 24 (Bitströme) programmierbar (und umprogrammierbar) ist. Das programmierbare Logikfeld 30 kann eine Anzahl programmierbarer Logikelemente umfassen, die Operationen aufweisen, die durch Konfigurationsspeicher (z. B. Konfigurationsdirektzugriffsspeicher (CRAM)) definiert werden. Die programmierbaren Logikelemente können Nachschlagetabellen, Register, Multiplexer, Routing-Leitungen und so weiter umfassen. Ein Entwickler kann das programmierbare Logikfeld 30 programmieren, um vielfältige gewünschte Funktionen auszuführen. Das programmierbare Verbindungsnetzwerk 28 und das programmierbare Logikfeld 30 können zu einer ähnlichen oder zur selben Zeit programmiert werden. Teile oder Regionen des programmierbaren Logikfelds 30 können dafür programmiert werden, verschiedene Funktionen und/oder Replikationen derselben Funktionen auszuführen. Manchmal wird das programmierbare Logikfeld 30 dafür programmiert, über Verbindungsgrenzenschaltkreise 31 und einen Verbindungsblock 32 mit anderen Schaltkreisen in Interaktion zu treten. Die anderen Schaltkreise wären zum Beispiel eine beliebige Kombination von Speicher, Sendeempfänger, ASIC und/oder beliebigen geeigneten Schaltkreisen, die auch zusätzlich zu dem programmierbaren Logikfeld 30 benutzt werden können, um Verarbeitungs- oder Funktionsoperationen auszuführen, die der integrierten Schaltung 12 zugeordnet sind. Das programmierbare Verbindungsnetzwerk 28 kann verwendet werden, um Speichertransaktionen zwischen mehreren Sektoren, mehreren Bausteinen und/oder zwischen der integrierten Schaltung 12 und externen Systemen zu erleichtern. Das programmierbare Verbindungsnetzwerk 28 kann ferner zum Entschlüsseln von Konfigurationsprogrammen (Bitströmen) 24 (z. B. Konfigurationsdaten) zum lokalen Sequenzieren von Lesevorgängen und Schreibvorgängen zur Implementierung von Fehlerdetektion und -korrektur am Speicher und/oder zum Sequenzieren von Teststeuersignalen zur Bewirkung verschiedener Testmodi dienen.
  • Wie oben beschrieben kann das programmierbare Logikfeld 30 zwei getrennt programmierte Teile aufweisen, Teil 33A und Teil 33B. Der Teil 33A kann eine von dem Teil 33B getrennte Verarbeitungsoperation ausführen. Die Verarbeitungsoperation des Teils 33A kann einzigartig sein, und deshalb von der Verarbeitungsoperation des Teils 33B verschieden. In einigen Fällen können die Teile 33 Daten untereinander übertragen, um die Verarbeitungsoperation abzuschließen. Zum Beispiel kann der Teil 33A ein Gesicht in einem Bild identifizieren, und der Teil 33B kann Verarbeitung an dem Bild ausschließlich Gesichts ausführen. Auf diese Weise kann es wünschenswert sein, Daten von dem Teil 33A zu dem Teil 33B zu übertragen, um die Verarbeitungsoperation abzuschließen.
  • Hierfür kann es zwei Weisen geben. Die erste Technik kann verwendet werden, um die Daten über einen Datenpfad 34 des programmierbaren Verbindungsnetzwerks 28 von dem Teil 33A zu dem Teil 33B zu senden. Die zweite Technik kann verwendet werden, um die Daten über einen Datenpfad 35 des programmierbaren Logikfelds 30 von dem Teil 33A zu dem Teil 33B zu senden. Verwendung des Datenpfads 35 kann ein langsameres, weniger effizientes Verfahren zum Übertragen der Daten von dem Teil 33A zu dem Teil 33B sein. Außerdem kann der Datenpfad 35 das wertvolle programmierbare Logikfeld 30 in dem Pfad benutzen, wodurch er eine kostspieligere Option als der Datenpfad 34 des programmierbaren Verbindungsnetzwerks 28 wird. Der Teil 33A kann Daten über die Verbindungsgrenzschaltkreise 31 zu dem Datenpfad 34 übertragen. Es versteht sich, dass die Verbindungsgrenzschaltkreise 31 vielfältige Schaltkreise umfassen können, um die Paketierung und/oder Übertragung der Daten zwischen den Teilen 33 zu ermöglichen. Zum Beispiel können die Verbindungsgrenzschaltkreise 31 an Anwendungs-Funktionseinheiten der integrierten Schaltung 12 angeschlossen sein und können Brückenschaltkreise verwenden, um Daten zwischen den Teilen 33 und dem programmierbaren Verbindungsnetzwerk 28 zu überführen.
  • Wie in 3 gezeigt, kann die integrierte Schaltung 12 in einem Datenverarbeitungssystem 36 wirken, um bei der Verarbeitung einer Datenmenge 38 zu helfen. Das Datenverarbeitungssystem 36 kann zum Beispiel eine Datenverarbeitungsvorrichtung in einer Datenzentrale repräsentieren, die Netzwerkverkehr wie Bilddaten, Videodaten, Finanzdaten oder eine beliebige andere geeignete Form von Daten verarbeiten kann. In einigen Beispielen kann die Datenmenge 38 unter Verwendung eines Maschinenlern- oder Neuronalnetzwerkalgorithmus verarbeitet werden, der das programmierbare Verbindungsnetzwerk 28 der vorliegenden Offenbarung verwenden kann, um Daten von einem ersten Ort zu einem zweiten Ort in der integrierten Schaltung 12 und/oder dem Datenverarbeitungssystem 36 zu übertragen und zu übermitteln. Ein Prozessorkomplex 40 kann Anweisungen (z. B. Software oder Firmware), die in dem Speicher 42 gespeichert sind, ausführen, um die Datenmenge 38 zu empfangen und zu routen und auch um die integrierte Schaltung 12 zu steuern. Zum Beispiel kann auf dem Prozessorkomplex 40 Software laufen, um Prozessnetzwerkverkehr, Bilddaten, Videodaten, Finanzdaten oder eine beliebige andere geeignete Form von Daten zu analysieren, wodurch auf die integrierte Schaltung 12 Operationen abgeladen werden, die für die Verarbeitung auf der integrierten Schaltung 12 gut geeignet sind. Der Speicher 42 kann das eine oder die mehreren Programme 24 (Bitströme), die verwendet werden können, um ein programmierbares Logikfeld 30 der integrierten Schaltung 12 zu programmieren (z. B., wenn die integrierte Schaltung 12 eine programmierbare Logikvorrichtung (PLD), wie etwa ein FPGA ist) speichern.
  • 4 ist eine Blockdarstellung, die das programmierbare Verbindungsnetzwerk 28, einen oder mehrere Router 62, einen oder mehrere physische Pfade 64 (z. B. Datenkanäle) und Verbindungsgrenzschaltkreise 31 abbildet, die jeweils eine oder mehrere Anwendungs-Funktionseinheiten (AFU) 65 und Brücken 70 umfassen. Dieses abgebildete Beispiel zeigt das programmierbare Verbindungsnetzwerk 28, so wie es in einer programmierbaren Logikvorrichtung verwendet wird. Jede der AFU 65 repräsentiert eine programmierte Funktion der programmierbaren Logikvorrichtung und wurde somit mittels Laden des einen oder der mehreren Programme 24 (Bitströme) in Logikblöcken des programmierbaren Logikfelds 30 zugeordneten CRAM konfiguriert. Somit können die AFU 65 beliebige geeignete paketierte Daten erzeugen und/oder entweder von externen Schaltkreisen oder von anderen AFU 65 über das programmierbare Verbindungsnetzwerk 28 empfangen. Bei einigen Ausführungsformen ist das programmierbare Verbindungsnetzwerk 28 um eine Umgrenzung des programmierbaren Logikfelds 30 der integrierten Schaltung 12 herum angeordnet. Wenn das programmierbare Verbindungsnetzwerk 28 nicht in das programmierbare Logikfeld 30 integriert ist, kann die integrierte Schaltung 12 Schaltkreise zum Transfer paketierter Daten von einem ersten Teil des programmierbaren Logikfelds 30 zu einem zweiten Teil der programmierbaren Logik über die physischen Pfade 64 umfassen. Die integrierte Schaltung 12 kann die Brücke 70 zum Durchführen der Übertragung von Daten von dem programmierbaren Logikfeld 30 zu dem programmierbaren Verbindungsnetzwerk 28 umfassen.
  • Zur Erleichterung des Transfers von Daten zwischen den AFU 65 können der eine oder die mehreren Router 62 Daten zwischen jeweiligen Routern 62 übertragen. Um zum Beispiel Daten von der Brücke 70A zu der Brücke 70D zu übertragen, kann der Router 62A Daten zu dem Router 62B übertragen, der die Daten dann zu dem Router 62C übertragen kann. Übertragung der Daten durch die anderen Router 62 kann einem Pfad folgen, der die Router 62C, 62D, 62E, 62F, 62G umfasst.
  • Bei einigen Ausführungsformen kann ein beispielhaftes Verbindungsnetzwerk einen gehärteten Übertragungspfad aufweisen, der eine festgesetzte Bandbreite bereitstellt. Wenn das entsprechende FPGA dafür programmiert ist, das Verbindungsnetzwerk aufzuweisen und zu verwenden, kann das FPGA Daten verwenden, die eine kleinere Bandbreite als die festgesetzte Bandbreite aufweisen. Wenn diese Daten durch das Verbindungsnetzwerk übertragen werden, wird das Verbindungsnetzwerk als zu wenig ausgelastet oder zu viel bereitgestellt (z. B. als Beispiel für Überbereitstellung) betrachtet, da die Bandbreite des programmierbaren Verbindungsnetzwerks 28 größer als eine wahre Bandbreite ist, die für eine erfolgreiche Übertragung benötigt wird. Überbereitstellung der Bandbreite des programmierbaren Verbindungsnetzwerks 28 kann bewirken, dass die Übertragung von Daten zumindest im Hinblick auf Energieverbrauch und Auslastung weniger effizient ist, da mehr physische Pfade des gehärteten Übertragungspfads eingeschaltet sind als für die Übertragung ausreicht.
  • Um dies zu korrigieren, kann ein programmierbares Verbindungsnetzwerk 28 zum Zeitpunkt der Konfiguration des programmierbaren Logikfelds 30 dafür programmiert werden, eine anwendungsabhängige Bandbreite aufzuweisen. Auf diese Weise können die Router 62 dafür konfiguriert werden, Teilmengen der physischen Pfade 64 zur Bildung größerer Pfade miteinander logisch zu bonden. Somit können aus den physischen Pfaden 64, die einzeln kleinere Bandbreiten aufweisen, Pfade größerer Bandbreite gebildet werden. Die physischen Pfade 64 können auf der Basis der konkreten Datenbenutzungserwartungen für den auf die integrierte Schaltung 12 geladenen (z. B. in Konfigurationsspeicher, wie etwa CRAM, gespeicherten) konkreten Entwurf gebondet werden. Zum Beispiel kann zum Zeitpunkt der Konfiguration (z. B. Programmierung des programmierbaren Logikfelds 30 (z. B. zum Zeitpunkt der Vorrichtungskonfiguration) bestimmt werden (wie etwa durch den Compiler 22 oder das Datenverarbeitungssystem 18), dass eine geeignete Bandbreite für das programmierbare Verbindungsnetzwerk für einen Pfad 16 Byte und für einen anderen Pfad 32 Byte betragen soll. Als Reaktion auf diese Bestimmung kann somit das programmierbare Verbindungsnetzwerk 28 dafür programmiert werden, einen physischen Pfad mit einer Bandbreite von 16 Byte und einen anderen mit einer Bandbreite von 32 Byte aufzuweisen, statt dass das gesamte programmierbare Verbindungsnetzwerk 28 so programmiert wird, dass es eine Bandbreite von 32 Byte aufweist.
  • Während 4 einen spezifischen Benutzungsfall des programmierbaren Verbindungsnetzwerks 28 abbildet, ist 5A eine Blockdarstellung eines verallgemeinerten Beispiels für das programmierbare Verbindungsnetzwerk 28. Das abgebildete programmierbare Verbindungsnetzwerk 28 kann somit in vielfältigen Ausführungsformen verwendet werden. Wie oben beschrieben sind die Router 62 jeweils miteinander und mit den Brücken 70 verbunden, um das programmierbare Verbindungsnetzwerk 28 zu bilden. Jeder Router kann einzeln konfigurierbar sein, um das logische Bonden zu gewährleisten. Zum Beispiel kann jeder Router während einer Konfiguration der integrierten Schaltung 12 auf der Basis der Anzahl und des Musters des logischen Bondens, das aus den physischen Pfaden 64 vorgenommen werden soll, entweder als Master oder Slave programmiert werden.
  • Während des Betriebs und nach der Konfiguration können eine oder mehrere der AFU 65 Daten über die mit den übertragenden AFU 65 gekoppelten Brücken 70 in das programmierbare Verbindungsnetzwerk 28 übertragen. Die Brücken 70 können wirken, um die Daten aus dem Datenpaket in das programmierbare Verbindungsnetzwerk 28 zu takten (z. B. auf der Basis eines die Zeit der Übertragung definierenden Taktsignals zu übertragen). Beim Empfang der paketierten Daten analysiert jeder Router 62 die Daten, schlägt eine den Daten zugeordnete Kennung in einer Nachschlagetabelle nach und überträgt die Daten auf der Basis der Ergebnisse aus der Nachschlagetabellenanfrage zu einem anderen Router 62 oder gekoppelten Schaltkreisen der Brücke 70.
  • In einigen Fällen sollen die Brücken 70 ein oder mehrere Datenpakete über den Verbindungsblock 32 zu einer externen Schaltung übertragen. Hierzu übertragen die Brücken 70 die Daten zu dem Verbindungsblock 32. Der Verbindungsblock 32 kann Schaltkreise zum Übertragen der paketierten Daten zwischen der integrierten Schaltung 12 und den externen Schaltkreisen umfassen. Der Verbindungsblock 32 kann zur Interpretation durch die Router 62 zu einem zukünftigen Zeitpunkt während der Nachschlageoperation die Kennung an das Datenpaket vergeben.
  • Das abgebildete Beispiel für das programmierbare Verbindungsnetzwerk 38 ist ein verallgemeinertes Beispiel für das programmierbare Verbindungsnetzwerk 28. Auf diese Weise kann das abgebildete programmierbare Verbindungsnetzwerk 28 auf vielfältige Netzwerktopologien angewandt werden. Zum Beispiel kann das programmierbare Verbindungsnetzwerk 28 auf Mesh-Topologien, Würfeltopologien, Hyperwürfel-Topologien, ausgeglichene und/oder unausgeglichene Baumtopologien, Ringtopologien, aufgeteilte Topologien und so weiter angewandt werden.
  • Um die Funktionsweise des programmierbaren Verbindungsnetzwerks 28 weiter zu erläutern, ist 5B eine Blockdarstellung des beispielhaften programmierbaren Verbindungsnetzwerks 28 von 5A, das zu einem ersten Zeitpunkt eine Übertragungsoperation ausführt, und 5C ist eine Blockdarstellung des beispielhaften programmierbaren Verbindungsnetzwerks 28 von 5A, das eine Übertragungsoperation zu einem zweiten Zeitpunkt ausführt. 5B und 5C werden zur leichteren Erklärung in Verbindung mit der vorliegenden 5A erläutert.
  • 5A, 5B und 5C zeigen zusammen eine Gleichschritt-Übertragungsoperation. Das Datenpaket 71 wird in 5A an dem Verbindungsblock 32 empfangen und zur Übertragung durch das programmierbare Verbindungsnetzwerk 28 in kleinere Datenpakete 71A und 71B aufgeteilt. Das Datenpaket 71 kann auf der Basis der Anzahl der logisch gebondeten physischen Pfade 64 des programmierbaren Verbindungsnetzwerks 28 aufgeteilt werden. Die Datenpakete 71A, 71B werden über die Brücke 70 zu dem programmierbaren Verbindungsnetzwerk 28 übertragen.
  • Von der Brücke 70 aus werden die Datenpakete 71A und 71B im Gleichschritt über die Router 62 zu der Ziel-AFU 65 übertragen. Gleichschritt-Übertragung ist ein Übertragungsschema, bei dem Latenzen mittels inhärenter Verzögerungen, die durch die Anordnungen der physischen Pfade 64 eingeführt werden, kompensiert werden. Zum Beispiel wird das Datenpaket 71A über eine Kombination der Router 62 übertragen, die am Ende der Übertragung gleich einer Anzahl der Router 62 ist, die der Übertragung des Datenpakets 71B zugeordnet sind. Somit wird eine selbe Taktungsverzögerungsanzahl zu der Übertragung des Datenpakets 71 vor dem Erreichen der mit der Zielbrücke 70 gekoppelten Router 62 hinzugefügt.
  • In dieser Hinsicht ist 6 eine Blockdarstellung der Brücken 70, die durch das programmierbare Verbindungsnetzwerk 28 (z. B. NOC-Verbindung) miteinander gekoppelt sind. Es versteht sich, dass es zusätzliche zwischen die Brücken 70 und das programmierbare Verbindungsnetzwerk 28 geschaltete Komponenten geben kann. Außerdem versteht sich, dass viele andere Topologien aus den offenbarten Techniken Nutzen ziehen können, obwohl hier eine konkrete Verbindungstopologie besprochen wird.
  • Ein zu übertragendes Datenpaket kann durch eine oder mehrere der Brücken 70 und/oder andere Verarbeitungsschaltkreise verarbeitet werden, bevor die Übertragung des Datenpaktes von einem ersten Ort zu einem zweiten Ort abgeschlossen ist. Zum Beispiel kann ein Zieldecodierer über eine Kennung mit einem Router 62 kommunizieren, um zu übermitteln, wohin das Datenpaket zu übertragen ist. Der Router 62 kann die Kennung bei der Bezugnahme auf eine Nachschlagetabelle zur Bestimmung einer Zieladresse verwenden, wobei die Zieladresse mindestens teilweise eine dem Datenpaket zugeordnete Übertragungsrichtung angibt (einen Speicherort, einen Slave, an den das Datenpaket zu übertragen ist, oder beliebige geeignete Übertragungsrichtungsinformationen). Auf diese Weise kann der Router 62 konfigurierbare Komponenten umfassen, wie etwa, aber ohne Beschränkung darauf, Konfigurationsspeicher (z. B. CRAM) und Speicher, der mindestens die Nachschlagetabelle speichert.
  • Nach der Bestimmung des Zielbestimmungsorts (z. B. Router 62 oder Brücke 70) kann die Brücke 70 das Datenpaket zur Übertragung und zum Routen zu einer anderen Brücke 70 übertragen. Zum Beispiel wird ein Datenpaket von Brücke 70A durch das programmierbare Verbindungsnetzwerk 28 zu der Brücke 70B übertragen. Diese Übertragung wird wie oben beschrieben durch die Router 62 ermöglicht, die Datenpakete über die physischen Pfade 64 übertragen.
  • Die physischen Pfade 64 des programmierbaren Verbindungsnetzwerks 28 können einen Datenkanal 72 und einen Adressenkanal 74 umfassen. Die Brücken 70 können Nutzinformationen des Datenpakets getrennt von mindestens einer Adresse, die den Nutzinformationen entspricht und in dem Datenpaket gespeichert ist, übertragen. Die Brücken 70 können die Adresse (die z. B. durch die Router 62 synthetisiert wird und interpretierbar ist) über den Adressenkanal 74 übertragen und die Nutzinformationen über den Datenkanal 72 übertragen.
  • Manchmal erfolgt Datenübertragung zwischen Brücken 70. Eine Weise zur Kopplung mehrerer physischer Pfade 64 miteinander umfasst Verwendung mehrerer Punkt-zu-Punkt-Verbindungen, so dass jede Brücke 70 mit jeder anderen Brücke 70 gekoppelt ist, wie in 7 gezeigt. 7 ist eine schematische Darstellung 84, die ein beispielhaftes Verbindungsnetzwerk 82 darstellt. Es versteht sich, dass Verbindungen und Datenpfade zur leichteren Besprechung vereinfacht wurden, dass aber beliebige geeignete Komponenten auch zusammen mit den Brücken 70 oder zwischen dem programmierbare Verbindungsnetzwerk 87 vorgesehen sein können.
  • In dem abgebildeten Beispiel kann jede der Brücken 70 Datenpakettransfer zwischen jeder anderen übermitteln und/oder ermöglichen. Zum Beispiel kann die Brücke 70A mit der Brücke 70B und/oder der Brücke 70E, 70F, 70G kommunizieren. Die Brücken 70 können mittels der fest verdrahteten Punkt-zu-Punkt-Datenpfade 88 (z. B. Kanäle, physische Pfade) kommunizieren (z. B. Datenpakete übertragen). Auf diese Weise bleiben jedes Mal, wenn eine Transaktion auftritt, einige Datenpfade unbenutzt. Wenn zum Beispiel die Brücke 70A ein Datenpaket zu der Brücke 70B übertragen soll, überträgt die Brücke 70A die Nutzinformationen über einen fest verdrahteten Datenpfad 86, der den Datenkanal 72 umfasst, und den oben beschriebenen Adressenkanal 74. Deshalb können Verluste und Ineffizienzen in die integrierte Schaltung eingeführt werden, zusätzlich zu der Verwendung einer relativ großen Anzahl von Verbindungen und des physischen Routens durch Verwendung dieses beispielhaften Verbindungsnetzwerks 87.
  • Im Gegensatz zu dem Verbindungsnetzwerk 87 ist in 8 ein Beispiel für ein programmierbares Verbindungsnetzwerk 28 abgebildet. 8 ist eine schematische Darstellung eines beispielhaften programmierbaren Verbindungsnetzwerks 28. Es versteht sich, dass Verbindungen und Datenpfade zur leichteren Besprechung vereinfacht wurden, dass beliebige geeignete Komponenten auch zusammen mit den Brücken 70 oder zwischen Komponenten des programmierbaren Verbindungsnetzwerks 28 enthalten sein können, zum Router 62, Decodierer oder beliebige andere geeignete Schaltkreise und/oder Verarbeitungsfunktionen zum Erleichtern des Routing und der Übertragung von Datenpaketen. Das programmierbare Verbindungsnetzwerk 28 kann einen oder mehrere Datenkanäle 72 (z. B. 72A, 72B, 72C, 72D) und einen oder mehrere Adressenkanäle 74 (z. B. 74A, 74B) umfassen. Jeder der Datenkanäle 72 kann jeweils in einer beliebigen geeigneten Kombination von Teilgruppen zusammengebondet (z. B. logisch gebondet) sein. Zum Beispiel können der Datenkanal 72A und der Datenkanal 72B logisch miteinander gebondet sein.
  • Um die Vorteile, die der Bondungstechnik zugeordnet sind, hervorzuheben, betrachte man, wie ein einzelner Datenkanal 72 eine bestimmte Bandbreite aufweisen kann. Zum Beispiel kann der Datenkanal 72A eine Bandbreite von 16 Byte (16 B) aufweisen. Es versteht sich, dass beliebige der Datenpfade (z. B. der Datenkanal 72 und/oder der Adressenkanal 74) eine beliebige geeignete Größe aufweisen können. Wenn zwei Datenkanäle miteinander gebondet werden, kann die Gesamtbandbreite additiv sein. Wenn zum Beispiel der Datenkanal 72A mit dem Datenkanal 72B gebondet werden sollte, kann die Gesamtbandbreite 32 Byte (32 B) sein. Auf ähnliche Weise kann, wenn alle vier Datenkanäle 72 gebondet würden, die Gesamtbandbreite 64 Byte (64 B) sein. Somit können die jeweiligen Datenkanäle 72 selektiv miteinander gebondet werden, um Datenpakete verschiedener Bandbreiten zu übertragen. Auf diese Weise werden die zum Übertragen der Daten ausreichenden Datenkanäle 72 freigegeben und beim Übertragen der Daten verwendet.
  • Ähnlich können die Adressenkanäle 74 jeweils eine bestimmte Bandbreite aufweisen, wie etwa 8 Byte (8 B). Die Adressenkanäle 74 können auch zum Zeitpunkt der Programmierung des programmierbaren Logikfelds 30 selektiv mit Strom versorgt werden. Wenn der Compiler 22 oder das Datenverarbeitungssystem 18 bestimmt, welche Kanäle 72, 74 zu bonden sind und welche Kanäle 72, 74 unbenutzt zu lassen sind, können die unbenutzten Kanäle, 72, 74 Stromversorgungs-torgeschaltet werden (z. B. Verringerung der dem Kanal 72, 74 zugeführten Stromversorgung), oder die Stromversorgung kann von ihnen entfernt werden (z. B. Trennung von einer Stromversorgung der integrierten Schaltung 12). Wenn zum Beispiel der Datenkanal 72A mit dem Datenkanal 72B gebondet werden soll und der Datenkanal 72C und der Datenkanal 72D unbenutzt bleiben sollen, kann der Datenkanal 72D Stromversorgungs-torgeschaltet werden (z. B. bei einer Stromversorgungsentfernung reduziert, auf null reduziert). Mittels Stromversorgungs-Torschaltung oder Entfernung der den unbenutzten Kanälen der Kanäle 72, 74 zugeführten Stromversorgung kann der durch das programmierbare Verbindungsnetzwerk 28 verbrauchte Strom verringert werden, um dadurch auch den durch die integrierte Schaltung 12 verbrauchten Strom zu verringern. Zu den Vorteilen der hier beschriebenen Techniken gehört somit nicht nur verbesserte Auslastung des programmierbaren Verbindungsnetzwerks 28, sondern auch die Verringerung des von dem programmierbaren Verbindungsnetzwerks 28 verbrauchten Stroms.
  • Bondung kann unter Verwendung einer beliebigen geeigneten logischen (z. B. auf Logik basierenden) Bondungstechnik gestattet werden. Zum Beispiel können ein oder mehrere jeweilige Datenkanäle 72 durch Verwendung von Master-Slave-Techniken oder einer beliebigen geeigneten Technik oder Kombination von Techniken gebondet werden. Die Master-Slave-Technik verwendet Gleichschritt-Betrieb zum logischen Bonden jeweiliger Datenkanäle 72. Der Gleichschritt-Betrieb gestattet es den logisch gebondeten Datenkanälen 72, Teile desselben Datenpakets parallel miteinander, aber bezüglich Position versetzt (wie oben mit Bezug auf 5A, 5B und 5C beschrieben) zu übertragen. Die Master-Slave-Technik kann einen oder mehrere wohldefinierte Zustände (die z. B. Automaten zugeordnet sind) verwenden, um als Reaktion auf eine bestimmte Eingabe in den bestimmten Datenkanal 72 eine vorhersehbare Ausgabe zu erzeugen. Genauer gesagt können ein oder mehrere Router 62, die den gebondeten Datenkanälen 72 zugeordnet sind, im Gleichschritt miteinander arbeiten, so dass der eine oder die mehreren Router 62 auf dieselbe Eingabe hin dasselbe ausgeben (z. B. antworten) können. Wenn die Datenkanäle logisch miteinander gebondet werden, kann dieselbe bestimmte Eingabe in einen oder mehrere logisch gebondete Router 62 eine selbe vorhersehbare Ausgabe erzeugen, so dass jeder gebondete Datenkanal im Gleichschritt wirkt, um eine Übertragung abzuschließen (z. B. zu erfüllen). Auf diese Weise kann ein Master-Router 62 eine Eingabe empfangen, die Ausgabe erzeugen und einen oder mehrere Slave-Router 62 anweisen, dieselbe Ausgabe auszugeben (z. B., wenn der Datenkanal 72, der die Anweisung empfängt, der Slave-Datenkanal 72 ist), aber bezüglich Position versetzt, um über die Zeit hinweg Gleichschritt-Betrieb zu gestatten. Somit überträgt der Master-Router 62 äquivalent zu den Slave-Routern 62, um dadurch das Stattfinden des logischen Bondens zu ermöglichen.
  • In dieser Hinsicht ist 9A eine schematische Darstellung einer beispielhaften Konfiguration des programmierbaren Verbindungsnetzwerks 28. 9B ist eine schematische Darstellung einer Ausführungsform der Probekonfiguration von 9A. Es wird angemerkt, dass jede in 9A oder 9B abgebildete Probekonfiguration eine gültige Konfiguration zur Anwendung auf das programmierbare Verbindungsnetzwerk 28 zum Zeitpunkt der Konfiguration des programmierbaren Logikfelds 30 sein kann, um Übertragungsparameter der durchzuführenden Transaktionen zu erfüllen. Zum leichteren Vergleich werden 9A und 9B nachfolgend zusammen beschrieben.
  • In diesem Benutzungsfallbeispiel ist eine erste Transaktion der Größe 32 Byte von der Brücke 70B zu der Brücke 70A zu senden und eine zweite Transaktion der Größe 32 Byte ist sich gegenseitig ausschließend von der ersten Transaktion von der Brücke 70C zu der Brücke 70D zu senden. Bei beiden Transaktionen wird Bandbreitenauslastung priorisiert, aber der Stromverbrauch auch noch berücksichtigt. Der Compiler 22 und/oder das Datenverarbeitungssystem 18 können diese Übertragungsparameter zum Zeitpunkt der Entwurfsanalyse für die Konfiguration des programmierbaren Logikfelds 30 bestimmen.
  • 9A zeigt eine erste Lösungsoption, bei der ein erster logischer Kanal durch Bonden des Datenkanals 72A mit dem Datenkanal 72B (z. B. insgesamt 32 Byte) bereitgestellt wird. Der Compiler 22 und/oder das Datenverarbeitungssystem 18 können bestimmen, die übrigen Datenkanäle, das heißt, den Datenkanal 72C und den Datenkanal 72D, Stromversorgungs-torzuschalten oder Stromversorgungs-abzuschalten. Der Adressenkanal 74A kann zum Übertragen der der Transaktion zugeordneten Adresse verwendet werden und der Adressenkanal 74B kann Stromversorgungs-torschaltet oder in einigen Fällen Stromversorgungs-abgeschaltet werden. Die Transaktion zwischen der Brücke 70C und der Brücke 70D kann dieselben gebondeten Datenkanäle 72A, 72B und denselben Adressenkanal 74A verwenden (wie z. B. in 9A abgebildet). Oder die Transaktion zwischen der Brücke 70C und der Brücke 70D kann verschieden gebondete Datenkanäle verwenden.
  • 9B zeigt eine zweite Lösungsoption bei der ein erster logischer Kanal durch Bonden des Datenkanals 72A mit dem Datenkanal 72B (z. B. 32 Byte) bereitgestellt wird und ein zweiter logischer Kanal (z. B. 32 Byte) durch Bonden des Datenkanals 72C mit dem Datenkanal 72C bereitgestellt wird. Da getrennte Datenkanäle 72 zu getrennten Teilgruppen gebondet werden, sind beide Adressenkanäle 72 während der Übertragung zu verwenden, und somit kann weder der Adressenkanal 72A noch der Adressenkanal 74B Stromversorgungs-torgeschaltet werden. Es wird angemerkt, dass in diesem Beispiel keine der abgebildeten Datenkanäle 72 Stromversorgungs-torgeschaltet oder Stromversorgungs-abgeschaltet werden, da sie alle verwendet werden.
  • Um ein anderes Benutzungsfallbeispiel zu erläutern, ist 10 eine schematische Darstellung einer Probekonfiguration des programmierbaren Verbindungsnetzwerks 28. In diesem Benutzungsfallbeispiel ist eine erste Transaktion der Größe 32 Byte von der Brücke 70B zu der Brücke 70C zu senden, eine zweite Transaktion der Größe 16 Byte von der Brücke 70A zu der Brücke 70C zu senden und eine dritte Transaktion der Größe 16 Byte von der Brücke 70E zu der Brücke 70F zu senden. Bei der ersten Transaktion werden Bandbreitenauslastung und Latenzprobleme priorisiert, während bei der zweiten und dritten Transaktion die Latenzprobleme über der Bandbreitenauslastung priorisiert werden. Der Compiler 22 und/oder das Datenverarbeitungssystem 18 können diese Übertragungsparameter zum Zeitpunkt der Analyse der zu übertragenden Datenpakete bestimmen.
  • Die abgebildete Lösung umfasst einen logischen 32-Byte-Kanal und einen logischen 16-Byte-Kanal für die drei Transaktionen. Die erste Transaktion verwendet den durch Bonden des Datenkanals 72A mit dem Datenkanal 72B bereitgestellten logischen 32-Byte-Kanal. Die erste Transaktion verwendet den Adressenkanal 74A. Die zweite Transaktion und die dritte Transaktion teilen sich den Datenkanal 72C. Da beide Transaktionen (z. B. die zweite Transaktion und die dritte Transaktion) stattfinden können, ohne irgendwelche Transaktionspfade zu unterbrechen, kann derselbe Adressenkanal 74B und derselbe Datenkanal 72C verwendet werden. Der Datenkanal 72D kann unbenutzt sein und kann somit Stromversorgungs-torgeschaltet oder in einigen Fällen Stromversorgungs-abgeschaltet werden.
  • Um ein weiteres Benutzungsfallbeispiel zu erläutern, ist 11 eine schematische Darstellung einer anderen Probekonfiguration des programmierbaren Verbindungsnetzwerks 28. In diesem Benutzungsfallbeispiel ist eine Transaktion der Größe 64 Byte von der Brücke 70B zu der Brücke 70C, Brücke 70A und Brücke 70D zu senden. Bei dieser Transaktion wird Bandbreitenauslastung priorisiert. Der Compiler 22 und/oder das Datenverarbeitungssystem 18 können diese Übertragungsparameter zum Zeitpunkt der Analyse der zu übertragenden Datenpakete bestimmen.
  • Die abgebildete Lösung umfasst einen logischen 64-Byte-Kanal der Transaktion. Die Transaktion verwendet den durch Bonden des Datenkanals 72A mit dem Datenkanal 72B, dem Datenkanal 72C und dem Datenkanal 72D bereitgestellten logischen 64-Byte-Kanal. Diese Transaktion ist als den Adressenkanal 74A verwendend abgebildet. Der Adressenkanal 74B kann unbenutzt sein und kann somit Stromversorgungs-torgeschaltet oder in einigen Fällen Stromversorgungs-abgeschaltet werden. Es wird angemerkt, dass in diesem Beispiel keine der abgebildeten Datenkanäle 72 Stromversorgungs-torgeschaltet oder Stromversorgungs-abgeschaltet werden, da sie alle verwendet werden.
  • Um den Prozess des Konfigurierens des programmierbaren Verbindungsnetzwerks 28 wie oben beschrieben zu erläutern, ist 12 ein Verfahren 90 zur Bestimmung einer Konfiguration des programmierbaren Verbindungsnetzwerks 28. Das Verfahren 90 umfasst im Allgemeinen Bestimmen von Übertragungsparametern (Block 92), Bonden des programmierbaren Verbindungsnetzwerks 28 mindestens teilweise auf der Basis der Übertragungsparameter (Block 94) und Stromversorgungs-Torschalten etwaiger unbenutzter Kanäle (Block 96). Bei einigen Ausführungsformen kann das Verfahren 90 mindestens teilweise durch Ausführen von Anweisungen implementiert werden, die in einem greifbaren, nichttransitorischen computerlesbaren Medium, wie etwa dem Speicher 42, gespeichert sind, unter Verwendung von Verarbeitungsschaltkreisen, wie etwa des Compilers 22 und/oder des Datenverarbeitungssystems 18.
  • Somit können bei einigen Ausführungsformen der Compiler 22 und/oder das Datenverarbeitungssystem 18 Übertragungsparameter bestimmen, die einer aktuellen Konfiguration zugeordnet sind, die zu verarbeiten und in die integrierte Schaltung 12 zu laden ist, die dem programmierbaren Verbindungsnetzwerk 28 zugeordnet ist (z. B. das programmierbare Logikfeld 30) (Block 92). Wie oben definiert können Übertragungsparameter eine beliebige Einstellung oder Konfigurationsoption umfassen, die bei der Bestimmung, wie ein Datenpaket durch das programmierbare Verbindungsnetzwerk 28 zu routen ist und zu welchen Brücken 70 die Datenpakete zu routen sind, berücksichtigt wird. Auf diese Weise umfassen Übertragungsparameter eine Richtung der Übertragung, eine Angabe der Zielbrücke 70 oder eines Zielorts, Stromversorgungs- und/oder Latenzbetrachtungen, Übertragungsbandbreite, die den zu übertragenden Daten zugeordnet ist, oder dergleichen. Bei einigen Ausführungsformen umfassen Übertragungsparameter auch eine Priorisierungsangabe, die angibt, welcher der Übertragungsparameter die Priorität ist (z. B. eine Erfüllungspriorität), wenn die Konfiguration des programmierbaren Verbindungsnetzwerks 28 finalisiert wird. Die Übertragungsparameter können durch eine oder mehrere der Brücken 70 oder durch beliebige andere geeignete Verarbeitungsschaltkreise, die der integrierten Schaltung 12 zugeordnet sind, bestimmt werden.
  • Nach der Bestimmung der Übertragungsparameter können der Compiler 22 und/oder das Datenverarbeitungssystem 18 das programmierbare Verbindungsnetzwerk 28 mindestens teilweise auf der Basis der Übertragungsparameter bonden (Block 94). Das programmierbare Verbindungsnetzwerk 28 ist ein dynamisch konfigurierbares Verbindungsnetzwerk, das benutzungsweise (z. B. einrichtungskonfigurationsweise) selektiv gebondet und verwendet wird. Auf diese Weise kann das programmierbare Verbindungsnetzwerk 28 justiert werden, um Änderungen der Übertragungsparameter verschiedener Vorrichtungskonfigurationen zu berücksichtigen. Die Übertragungsparameter können als Reaktion auf Umkonfiguration des programmierbaren Logikfelds 30 oder eine teilweise Umkonfiguration des programmierbaren Logikfelds 30 oder als Reaktion auf eine beliebige geeignete Änderung in der integrierten Schaltung 12 neu bestimmt und zum Neubonden des programmierbaren Verbindungsnetzwerks 28 verwendet werden. In dem spezifischen Benutzungsfall eines FPGA oder einer programmierbaren Logikvorrichtung kann teilweise Umkonfiguration des programmierbaren Logikfelds 30 auftreten, wenn ein Teil des programmierbaren Logikfelds 30 mit einer Konfigurationsdatei aktualisiert wird, um eine modifizierte Funktion auszuführen. Dementsprechend können sich dem Teil des programmierbaren Logikfelds 30 zugeordnete Übertragungsparameter auch mit der teilweisen Umkonfiguration ändern. Somit können die geänderten Übertragungsparameter zum Umprogrammieren des programmierbaren Verbindungsnetzwerks 28 verwendet werden.
  • Zum Beispiel kann das Bonden auf der Basis der Übertragungsparameter Analysieren einer Datenbandbreite für eine oder mehrere potentielle Transaktionen und Bestimmen, welche Datenkanäle 72 für Bondung oder Zuweisung verfügbar sind, um additiv die Datenbandbreite für die der höchsten Bandbreitenbenutzung entsprechende Transaktion zu erzeugen, umfassen. Es wird angemerkt, dass das Bonden einschließt, zu entscheiden, nicht zu bonden oder selbst zu bonden, was zu einer Datenkanalbondung von 1 führt (siehe z. B. 10, Datenkanal 72C als Beispiel für einen selbstgebondeten Datenkanal 72). Auf der Basis der Priorität jedes Übertragungsparameters kann sich ferner die Bondung ändern. Man nehme zum Beispiel das in 10 abgebildete programmierbare Verbindungsnetzwerk 28. In diesem Beispiel hat die erste Transaktion Bandbreite priorisiert, während die zweite und dritte Transaktion der Bandbreite weniger Priorität geben. Die Bondungsentscheidung wurde hierdurch beeinflusst und somit wurden der ersten Transaktion die Datenkanäle 72A, 72B und der Adressenkanal 74A zugewiesen, während die zweite und dritte Transaktion zugewiesen wurden, sich den Datenkanal 72C zu teilen.
  • Weiter mit Bezug auf das Verfahren 90 können, sobald die bestimmten Kanäle 72, 74 auf der Basis der Übertragungsparameter gebondet sind, der Compiler 22 und/oder das Datenverarbeitungssystem 18 die integrierte Schaltung 12 konfigurieren, etwaige unbenutzte Kanäle 72, 74 Stromversorgungs-torzuschalten (Block 96). Stromversorgungs-Torschaltung kann gleichzeitig mit dem Abschluss der Transaktion (z. B. mit dem Senden der Daten über das programmierbare Verbindungsnetzwerk 28) erfolgen (oder gleichzeitig damit starten). Es sollte beachtet werden, dass sich Stromversorgungs-Torschaltung auf die Verringerung der Stromversorgung für beliebige der unbenutzten Kanäle 72, 74 bezieht. Die Stromversorgung kann auf null torgeschaltet werden, wobei an diesem Punkt die unbenutzten Kanäle 72, 74 als Stromversorgungs-abgeschaltet betrachtet werden können. Der Compiler 22 und/oder das Datenverarbeitungssystem 18 können die integrierte Schaltung 12 dafür programmieren, das Auftreten der Stromversorgungs-Torschaltung oder Stromversorgungs-Abschaltung zum Beispiel über Aktivierung eines oder mehrerer Steuersignale für Betriebsschaltkreise, wie etwa Schaltnetzwerkschaltkreise einzuleiten, um die Stromversorgungseinstellungen zu verursachen. Das eine oder die mehreren Steuersignale können im Wesentlichen ähnlich wie eine Startzeit einer dem Abschluss der Transaktionsanforderung zugeordneten Datenübertragung eingeleitet werden. Da die unbenutzten Kanäle 72, 74 Stromversorgungs-torgeschaltet oder Stromversorgungs-abgeschaltet werden können, kann die Auslastung und der Stromverbrauch auf der tatsächlichen Verwendung des programmierbaren Verbindungsnetzwerks 28 basieren, statt auf einer Gesamtgröße des programmierbaren Verbindungsnetzwerks 28 (da z. B. mehr Kanäle mehr Strom verbrauchen können, wenn keine Stromversorgungs-torgeschaltet werden.
  • Durch Verwendung der oben beschriebenen Techniken und Beispiele kann ein programmierbares Verbindungsnetzwerk bereitgestellt werden, das dynamische Konfigurierbarkeit aufweist. Das programmierbare Verbindungsnetzwerk kann anwendungsspezifische Konfiguration und/oder benutzungsfallspezifische Programmierung des programmierbaren Verbindungsnetzwerks gestatten. Weitere Vorteile wären die Realisierung von Stromersparnissen von FPGA und/oder integrierten Schaltungssystemen mittels Stromversorgungs-Torschaltung oder Stromversorgungs-Abschaltung unbenutzter Kanäle und Realisierung von Footprint-Verbesserungen, da ein dynamisches programmierbares Verbindungsnetzwerk in einem kleineren Footprint als andere programmierbare Verbindungsnetzwerke residieren können, die mehrere Punkt-zu-Punkt-Kanäle verwenden (wie z. B. in 7 abgebildet). Ferner gestatten diese hier beschriebenen Techniken ein benutzungsweises Zurechtschneiden der Konfigurationen der Bondung und des programmierbaren Verbindungsnetzwerks basierend auf Übertragungsparametern, die Bandbreiten- und/oder Latenzbetrachtungen für die Transaktion definieren.
  • Während bei den in der vorliegenden Offenbarung dargelegten Ausführungsformen verschiedene Modifikationen und alternative Formen möglich sind, wurden in den Zeichnungen als Beispiel spezifische Ausführungsformen gezeigt und hier ausführlich beschrieben. Es versteht sich jedoch, dass die Offenbarung nicht auf die konkreten offenbarten Formen beschränkt werden soll. Die Offenbarung soll alle Modifikationen, Äquivalente und Alternativen abdecken, die in den durch die folgenden angefügten Ansprüche definierten Gedanken und Schutzumfang der Offenbarung fallen.
  • Die hier dargestellten und beanspruchten Techniken werden auf materielle Objekte und konkrete Beispiele praktischer Natur bezogen und angewandt, die nachweislich das derzeitige technische Gebiet verbessern, und somit sind sie nicht abstrakt, nicht greifbar oder rein theoretisch. Wenn ferner irgendwelche an das Ende der vorliegenden Beschreibung angefügte Ansprüche ein oder mehrere Elemente enthalten, die als „Mittel zum Ausführen (einer Funktion)...“ oder „Schritt zum Ausführen (einer Funktion)...“ designiert sind, ist beabsichtigt, dass solche Elemente unter 35 U.S.C. 112(f) zu deuten sind. Für alle Ansprüche, die auf beliebige andere Weise designierte Elemente enthalten, ist jedoch beabsichtigt, dass solche Elemente nicht unter 35 U.S.C 112(f) zu deuten sind.

Claims (25)

  1. Integrierte Schaltung, umfassend: einen ersten Teil von Schaltkreisen der integrierten Schaltung; einen zweiten Teil von Schaltkreisen der integrierten Schaltung; und ein programmierbares Netzwerk-auf-Chip, das mehrere Datenkanäle umfasst, wobei das programmierbare Netzwerk-auf-Chip dafür konfigurierbar ist, eine Teilmenge der mehreren Datenkanäle miteinander zu bonden, um einen gebondeten Datenkanal zu erzeugen, der eine Bandbreite aufweist, die mindestens teilweise auf der Basis einer Größe der Teilmenge der mehreren Datenkanäle, die miteinander gebondet werden, variiert, und wobei das programmierbare Netzwerk-auf-Chip dafür konfigurierbar ist, Daten über den gebondeten Datenkanal über den ersten Teil von Schaltkreisen zu dem zweiten Teil von Schaltkreisen zu übermitteln.
  2. Integrierte Schaltung nach Anspruch 1, wobei das programmierbare Netzwerk-auf-Chip einen oder mehrere dem gebondeten Datenkanal zugeordnete Router umfasst, wobei der eine oder die mehreren Router dafür ausgelegt sind, Daten im Gleichschritt zu übertragen.
  3. Integrierte Schaltung nach Anspruch 1, wobei die Bandbreite des gebondeten Datenkanals mindestens teilweise auf der Basis des additiven Erzeugens einer größeren Bandbreite als jeder jeweilige dem gebondeten Datenkanal zugeordnete Datenkanal basiert.
  4. Integrierte Schaltung nach Anspruch 1, wobei die mehreren Datenkanäle einen unbenutzten Datenkanal umfassen, der beim Übertragen eines Datenpakets ausgeschlossen wird.
  5. Integrierte Schaltung nach Anspruch 1, wobei die mehreren Datenkanäle einen unbenutzten Datenkanal umfassen, der dafür ausgelegt ist, beim Übertragen eines Datenpakets Stromversorgungs-torgeschaltet zu werden.
  6. Integrierte Schaltung nach Anspruch 1 mit Brückenschaltkreisen, die zur Kopplung zwischen dem ersten Teil von Schaltkreisen und dem programmierbaren Netzwerk-auf-Chip ausgelegt sind, wobei die Brückenschaltkreise ausgelegt sind zum: Empfangen eines Datenpakets von dem ersten Teil von Schaltkreisen; und Übertragen des Datenpakets zu dem zweiten Teil von Schaltkreisen über die mehreren Datenkanäle.
  7. Integrierte Schaltung nach Anspruch 1, wobei das programmierbare Netzwerk-auf-Chip einen ersten Router und einen zweiten Router, der dem gebondeten Datenkanal zugeordnet ist, umfasst, wobei der erste Router dafür ausgelegt ist, als Master-Router zu wirken, und wobei der zweite Router dafür ausgelegt ist, als Slave-Router für den ersten Router zu wirken.
  8. Integrierte Schaltung nach Anspruch 1, wobei ein erster gebondeter Datenkanal der Teilmenge der mehreren Datenkanäle, die miteinander gebondet sind, dafür ausgelegt ist, als Reaktion auf ein erstes erwartetes Datenübertragungsmuster zum Übertragen eines Datenpakets verwendet zu werden, und wobei ein zweiter gebondeter Datenkanal der Teilmenge der mehreren Datenkanäle, die miteinander gebondet sind, dafür ausgelegt ist, als Reaktion auf ein zweites erwartetes Datenübertragungsmuster, das von dem ersten erwarteten Datenübertragungsmuster verschieden ist, zum Übertragen des Datenpakets verwendet zu werden.
  9. Vorrichtung, umfassend: ein programmierbares Logikfeld mit einem ersten Teil von Schaltkreisen und einem zweiten Teil von Schaltkreisen; und ein programmierbares Netzwerk-auf-Chip, ausgelegt zur Kopplung mit dem programmierbaren Logikfeld, wobei das programmierbare Netzwerk-auf-Chip dafür konfigurierbar ist, auf der Basis einer Anzahl von Datenkanälen in einer Teilmenge der mehreren Datenkanäle, die miteinander gebondet sind, variable Übertragungseigenschaften aufzuweisen, und wobei das programmierbare Netzwerk-auf-Chip dafür konfigurierbar ist, Daten mindestens teilweise auf der Basis der variablen Übertragungseigenschaften von dem ersten Teil von Schaltkreisen zu dem zweiten Teil von Schaltkreisen zu übermitteln.
  10. Vorrichtung nach Anspruch 9, wobei die variablen Übertragungseigenschaften eine Mindestbandbreite eines Datenkanals zum Gestatten der Übertragung der Daten durch das programmierbare Netzwerk-auf-Chip spezifizieren.
  11. Vorrichtung nach Anspruch 9, wobei die variablen Übertragungseigenschaften Metriken der Dienstgüte (QoS) umfassen.
  12. Vorrichtung nach Anspruch 9, wobei die variablen Übertragungseigenschaften eine Übertragungsbandbreite umfassen.
  13. Vorrichtung nach Anspruch 9, wobei die variablen Übertragungseigenschaften Verringern der Stromversorgung für eine zusätzliche Teilmenge der mehreren Datenkanäle auf der Basis der unbenutzten zusätzlichen Teilmenge der mehreren Datenkanäle umfassen.
  14. Vorrichtung nach Anspruch 9, wobei eine Bandbreite eines jeweiligen Datenkanals der mehreren Datenkanäle kleiner als eine Bandbreite des gebondeten Datenkanals ist.
  15. Vorrichtung nach Anspruch 9, wobei das programmierbare Netzwerk-auf-Chip einen zusätzlichen Kanal umfasst, der mindestens teilweise auf der Basis der variablen Übertragungseigenschaften nicht mit Strom versorgt wird.
  16. Vorrichtung nach Anspruch 15, wobei der zusätzliche Kanal einen Adressenkanal umfasst, der dafür ausgelegt ist, Adressendaten zu übertragen, die den Daten zugeordnet sind, die von dem ersten Teil von Schaltkreisen zu dem zweiten Teil von Schaltkreisen übermittelt werden.
  17. Verfahren, umfassend: Bestimmen, zwei oder mehr Datenkanäle zu bonden, um einen gebondeten Datenkanal zu bilden oder zu erzeugen, mindestens teilweise auf der Basis eines Übertragungsparameters, wobei die zwei oder mehr Datenkanäle ausgelegt sind zur Kopplung eines ersten Teils von Schaltkreisen mit einem zweiten Teil von Schaltkreisen einer programmierbaren Logikvorrichtung; und Programmieren der programmierbaren Logikvorrichtung, um ein programmierbares Netzwerk-auf-Chip zu konfigurieren, wobei das Konfigurieren des programmierbaren Netzwerk-auf-Chip den gebondeten Datenkanal erzeugt.
  18. Verfahren nach Anspruch 17, wobei der gebondete Datenkanal mindestens einen Datenkanal des Netzwerk-auf-Chip ausschließt und wobei die Programmierung der programmierbaren Logikvorrichtung Einleiten einer Stromversorgungs-Torschaltung des mindestens einen Datenkanals, der aus dem gebondeten Datenkanal ausgeschlossen wird, umfasst.
  19. Verfahren nach Anspruch 17, wobei der Übertragungsparameter Übertragungsrichtung, Zielschaltkreise, Zielort, Stromversorgungsbetrachtungen, Latenzbetrachtungen, Übertragungsbandbreite, Priorisierungsangabe oder eine beliebige Kombination davon umfasst.
  20. Verfahren nach Anspruch 19, umfassend: Priorisieren einer Erfüllung zusätzlicher Übertragungsparameter, die den Übertragungsparameter umfassen, wenn mindestens teilweise auf der Basis einer Angabe einer jedem der Übertragungsparameter zugeordneten jeweiligen Priorität bestimmt wird, ob zwei oder mehr Datenkanäle zu bonden sind.
  21. System, umfassend: Mittel zum Bestimmen, zwei oder mehr Datenkanäle zu bonden, um einen gebondeten Datenkanal zu bilden oder zu erzeugen, mindestens teilweise auf der Basis eines Übertragungsparameters, wobei die zwei oder mehr Datenkanäle ausgelegt sind zur Kopplung eines ersten Teils von Schaltkreisen mit einem zweiten Teil von Schaltkreisen einer programmierbaren Logikvorrichtung; und Mittel zum Programmieren der programmierbaren Logikvorrichtung, um ein programmierbares Netzwerk-auf-Chip zu konfigurieren, wobei das Konfigurieren des programmierbaren Netzwerk-auf-Chip den gebondeten Datenkanal erzeugt
  22. System nach Anspruch 21, wobei der gebondete Datenkanal mindestens einen Datenkanal des Netzwerk-auf-Chip ausschließt und wobei die Mittel zum Programmieren der programmierbaren Logikvorrichtung Mittel zum Einleiten einer Stromversorgungs-Torschaltung des mindestens einen aus dem gebondeten Datenkanal ausgeschlossenen Datenkanals umfassen.
  23. System nach Anspruch 21, wobei der Übertragungsparameter Übertragungsrichtung, Zielschaltkreise, Zielort, Stromversorgungsbetrachtungen, Latenzbetrachtungen, Übertragungsbandbreite, Priorisierungsangabe oder eine beliebige Kombination davon umfasst.
  24. System nach Anspruch 21 mit Mitteln zum Priorisieren einer Erfüllung zusätzlicher Übertragungsparameter, die den Übertragungsparameter umfassen, wenn mindestens teilweise auf der Basis einer Angabe einer jedem der Übertragungsparameter zugeordneten jeweiligen Priorität bestimmt wird, ob zwei oder mehr Datenkanäle zu bonden sind.
  25. Herstellungsartikel, der eine oder mehrere greifbare, nichttransitorische maschinenlesbare Anweisungen umfasst, die, wenn sie ausgeführt werden, bewirken, dass ein Netzwerk-auf-Chip der programmierbaren Logikvorrichtung dafür konfiguriert wird, zwei oder mehr Datenkanäle des Netzwerk-auf-Chip der programmierbaren Logikvorrichtung zu bonden, um einen gebondeten Datenkanal zu bilden.
DE102019135728.4A 2018-12-27 2019-12-23 Netzwerk-auf-Chip (NOC) mit flexibler Datenbreite Pending DE102019135728A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US16/234,212 US10790827B2 (en) 2018-12-27 2018-12-27 Network-on-chip (NOC) with flexible data width
US16/234,212 2018-12-27

Publications (1)

Publication Number Publication Date
DE102019135728A1 true DE102019135728A1 (de) 2020-07-02

Family

ID=66243365

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102019135728.4A Pending DE102019135728A1 (de) 2018-12-27 2019-12-23 Netzwerk-auf-Chip (NOC) mit flexibler Datenbreite

Country Status (3)

Country Link
US (4) US10790827B2 (de)
CN (3) CN117873939A (de)
DE (1) DE102019135728A1 (de)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11579894B2 (en) * 2020-10-27 2023-02-14 Nokia Solutions And Networks Oy Deterministic dynamic reconfiguration of interconnects within programmable network-based devices
CN113722266B (zh) * 2021-11-02 2022-03-01 上海埃瓦智能科技有限公司 一种桥接器、加速设备互连系统及数据加速处理方法
CN114817110B (zh) * 2022-04-26 2023-04-25 地平线(上海)人工智能技术有限公司 一种数据传输方法及装置
CN117235007B (zh) * 2023-11-13 2024-01-26 中科芯磁科技(珠海)有限责任公司 互连模块控制方法、互连模块及存储介质

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7106760B1 (en) * 2002-03-29 2006-09-12 Centillium Communications, Inc. Channel bonding in SHDSL systems
US9722850B2 (en) * 2004-08-09 2017-08-01 Arris Enterprises Llc Method and system for transforming video streams using a multi-channel flow-bonded traffic stream
US7710979B2 (en) * 2004-11-12 2010-05-04 Infineon Technologies Ag ATM bonding
DE102005058982B4 (de) * 2005-12-09 2008-02-28 Infineon Technologies Ag Bündelungsschaltung für eine Leitungstreiberkarte und Verfahren zum Bündeln von Datenfragmenten
US8189623B2 (en) * 2008-10-01 2012-05-29 Infinera Corporation Digital framer architecture with a framing marker
US8861554B1 (en) * 2009-07-17 2014-10-14 Adtran, Inc. Systems and methods for powering a service unit
US8548034B2 (en) * 2010-02-08 2013-10-01 Maxlinear, Inc. Methods and apparatus for intelligent power reduction in communications systems
US8488623B2 (en) * 2010-07-28 2013-07-16 Altera Corporation Scalable interconnect modules with flexible channel bonding
US8464088B1 (en) * 2010-10-29 2013-06-11 Altera Corporation Multiple channel bonding in a high speed clock network
US9432298B1 (en) * 2011-12-09 2016-08-30 P4tents1, LLC System, method, and computer program product for improving memory systems
US9143195B2 (en) * 2011-07-07 2015-09-22 Adtran, Inc. Systems and methods for communicating among network distribution points
US8693314B1 (en) * 2011-08-25 2014-04-08 Adtran, Inc. Systems and methods for protecting bonding groups
US8701152B2 (en) * 2012-03-11 2014-04-15 Broadcom Corporation Cross layer coordinated channel bonding
US10503690B2 (en) * 2018-02-23 2019-12-10 Xilinx, Inc. Programmable NOC compatible with multiple interface communication protocol
US10505548B1 (en) * 2018-05-25 2019-12-10 Xilinx, Inc. Multi-chip structure having configurable network-on-chip

Also Published As

Publication number Publication date
US20230370068A1 (en) 2023-11-16
CN115203113A (zh) 2022-10-18
US20190131975A1 (en) 2019-05-02
US20220116044A1 (en) 2022-04-14
CN117873939A (zh) 2024-04-12
US11700002B2 (en) 2023-07-11
CN111382108A (zh) 2020-07-07
US11342918B2 (en) 2022-05-24
US10790827B2 (en) 2020-09-29
US20210013887A1 (en) 2021-01-14

Similar Documents

Publication Publication Date Title
DE102019135728A1 (de) Netzwerk-auf-Chip (NOC) mit flexibler Datenbreite
DE102019122363A1 (de) Programmierbare doppelreihige arbeitsspeichermodul-beschleunigerkarte (dimm-beschleunigerkarte)
DE4416881C2 (de) Verfahren zum Betrieb einer Datenverarbeitungseinrichtung
DE102019110023A1 (de) System mit programmierbarer Multi-Kontext-Beschleuniger-Schaltung
DE102020113347A1 (de) Ausführung von containerisierten prozessen innerhalb der beschränkungen der verfügbaren host-knoten
EP1342158A2 (de) Pipeline ct-protokolle und -kommunikation
DE4208924A1 (de) Verfahren zur kommunikation zwischen prozessoren und parallelverarbeitungscomputer hierfuer
DE112010005041T5 (de) Gemeinsam genutzte Speicher für energieeffiziente Mehrkernprozessoren
DE112007000659T5 (de) Flexibles Halten von Zustandsinformationen eines Mehrkernprozessors
DE112013000752T5 (de) Verwalten von Verarbeitungselementen in einem Streaming-Datensystem
DE112010004006T5 (de) Zuverlässige kommunikationen in chipintegrierten netzwerken
EP0948842A1 (de) VERFAHREN ZUM SELBSTÄNDIGEN DYNAMISCHEN UMLADEN VON DATENFLUSSPROZESSOREN (DFPs) SOWIE BAUSTEINEN MIT ZWEI- ODER MEHRDIMENSIONALEN PROGRAMMIERBAREN ZELLSTRUKTUREN (FPGAs, DPGAs, o.dgl.)
WO1998028697A1 (de) IO- UND SPEICHERBUSSYSTEM FÜR DFPs SOWIE BAUSTEINE MIT ZWEI- ODER MEHRDIMENSIONALEN PROGRAMMIERBAREN ZELLSTRUKTUREN
DE112012004957T5 (de) Flexibles und skalierbares Enhanced-Transmission-Selection-Verfahren für Netzwerkstrukturen
DE112011105911T5 (de) Server mit Switch-Schaltungen
DE102010044529A1 (de) Autonome Subsystem-Architektur
EP2954440A2 (de) Verändern eines signalwerts eines fpga zur laufzeit
DE102017214068A1 (de) Verfahren, Vorrichtung und Computerprogramm zur dynamischen Ressourcenzuweisung in einem Mehrprozessor-Computersystem
DE102022205478A1 (de) Busübergreifende speicherabbildung
DE102018204577A1 (de) Techniken zum Erfüllen von Dienstgüteanforderungen für eine Fabric-Punkt-zu-Punkt-Verbindung
DE102021127325A1 (de) Flexibles hochverfügbarkeits-computing mit parallel konfigurierbaren geweben
DE102020131677A1 (de) Prozessorgesteuerte modifikation programmierbarer logikvorrichtungen
DE102005005073A1 (de) Rekonfigurierbare Architektur zur parallelen Berechnung beliebiger Algorithmen
EP1599794A2 (de) Prozessor mit verschiedenartigen steuerwerken für gemeinsam genutzte ressourcen
DE102020132767A1 (de) Verwaltung der Dienstgüte (QoS) eines Speichersystems

Legal Events

Date Code Title Description
R130 Divisional application to

Ref document number: 102019009438

Country of ref document: DE

R082 Change of representative

Representative=s name: SAMSON & PARTNER PATENTANWAELTE MBB, DE