-
HINTERGRUND
-
Die vorliegende Offenbarung betrifft Konnektivität zwischen Dies eines integrierten Schaltungssystems, wie etwa zwischen programmierbaren Fabric-Dies eines modularisierten integrierten Schaltungssystems.
-
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. Diese Besprechung soll dabei hilfreich sein, 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 eines Stands der Technik.
-
Moderne Elektronik, wie etwa Computer, tragbare Vorrichtungen, Netzwerkrouter, Datenzentralen, mit dem Internet verbundene Geräte und so weiter umfassen meist mindestens eine integrierte Schaltungsvorrichtung. Integrierte Schaltungsvorrichtungen können verschiedene Formen annehmen, darunter Prozessoren (z. B. CPUs (Zentralverarbeitungseinheiten)), Speichervorrichtungen und programmierbare Vorrichtungen (FPGA), um nur einige wenige Beispiel zu nennen. Die programmierbaren Vorrichtungen können insbesondere ein programmierbares Fabric von Logik umfassen, die nach der Herstellung programmiert (z. B. konfiguriert) und umprogrammiert (z. B. umkonfiguriert) werden können, um auf der Basis eines Schaltungsentwurfs vielfältige Funktionalität bereitzustellen.
-
Um die Siliziumausbeute zu verbessern, können FPGA disaggregiert oder physisch aufgeteilt und als kleinere programmierbare Logik-Fabric-Dies hergestellt werden. Die kleineren Dies können dann miteinander verbunden werden, um ein größeres FPGA zu erzeugen. In einigen Fällen können die Fabric-Dies mittels einer oder mehrerer eingebetteter Mehrfach-Die-Interconnect-Brücken (EMIB) kommunikativ gekoppelt werden, die Peripherie-Interconnects der kleineren Fabric-Dies verwenden, wie etwa AIB (Advanced Interface Busses) oder UIB (Universal Interface Busses). Die Peripherie-Interconnects können auf einer oder mehreren Uferlinien des Fabric-Die angeordnet werden, um Konsumierung von zu viel Routingschaltkreisen des Fabric-Die zu vermeiden, und können durch horizontale und/oder vertikale Eingangs-/Ausgangsschnittstellen zugänglich sein. Die horizontalen und/oder vertikalen Eingangs-/Ausgangsschnittstellen können jedoch begrenzte Reichweite in den Fabric-Die aufweisen und können aufgrund der endlichen Uferlinien bezüglich Anzahl begrenzt sein. Dementsprechend kann Routingstau auf der Fabric-Die-Uferlinie auftreten, wenn Daten zu anderen Fabric-Dies gesendet oder von diesen empfangen werden, was zu verringerter Vorrichtungsleistungsfähigkeit führt. Außerdem können die Peripherie-Interconnects so gebaut werden, dass eine Speicher- oder Sendeempfängertransaktion hoher Bandbreite unterstützt wird, und können folglich hohe Latenz aufweisen, was für Interconnect-Zwecke von Fabric-Die zu Fabric-Die ineffizient sein kann.
-
Figurenliste
-
Verschiedene Aspekte der vorliegenden Offenbarung werden bei Durchsicht der folgenden ausführlichen Beschreibung und unter Bezugnahme auf die Zeichnungen besser verständlich. Es zeigen:
- 1 eine Blockdarstellung eines Datenverarbeitungssystems, das eine integrierte Schaltungsvorrichtung umfasst, gemäß Ausführungsformen der vorliegenden Offenbarung;
- 2 eine Blockdarstellung einer Entwurfs-Workstation, die Programmierung der integrierten Schaltungsvorrichtung von 1 erleichtern kann, gemäß Ausführungsformen der vorliegenden Offenbarung;
- 3 ein Beispiel für die integrierte Schaltungsvorrichtung von 1 mit mehreren programmierbaren Logik-Fabric-Dies gemäß Ausführungsformen der vorliegenden Offenbarung;
- 4 eine Draufsicht auf die integrierte Schaltungsvorrichtung von 3 gemäß Ausführungsformen der vorliegenden Offenbarung;
- 5 eine Seitenansicht der integrierten Schaltungsvorrichtung von 3 gemäß Ausführungsformen der vorliegenden Offenbarung;
- 6 eine perspektivische Ansicht eines Teils der integrierten Schaltungsvorrichtung von 3, die Zeilen eines Sektors eines Fabric-Dies der integrierten Schaltungsvorrichtung und Micropumps des Fabric-Dies zeigt, gemäß Ausführungsformen der vorliegenden Offenbarung;
- 7 eine Darstellung von Teilen von Zeilen eines programmierbaren Logik-Fabric eine Sektors eines Fabric-Dies der integrierten Schaltungsvorrichtung von 3 mit einer Spalte von Interconnect-Blöcken gemäß Ausführungsformen der vorliegenden Offenbarung; und
- 8 eine Darstellung von Teilen von Zeilen eines programmierbaren Logik-Fabric eines Sektors eines Fabric-Dies der integrierten Schaltungsvorrichtung von 1 mit verteilten Interconnect-Schnittstellen gemäß Ausführungsformen der vorliegenden Offenbarung.
-
AUSFÜHRLICHE BESCHREIBUNG SPEZIFISCHER AUSFÜHRUNGSFORMEN
-
Unten werden eine oder mehrere spezifische Ausführungsformen beschrieben. In dem Bestreben, diese Ausführungsformen prägnant zu beschreiben, werden in der Patentbeschreibung nicht alle Merkmale der jeweiligen konkreten Implementierung beschrieben. Es versteht sich, dass bei der Entwicklung einer solchen konkreten Implementierung, wie bei jedem Projekt in der Konstruktion und Entwicklung, zahlreiche implementationsspezifische Entscheidungen getroffen werden müssen, um die speziellen Vorgaben der Entwickler umzusetzen, etwa um system- und geschäftsrelevanten Einschränkungen, die von Implementierung zu Implementierung anders sein können, gerecht zu werden. Ferner versteht es sich, dass ein solches Entwicklungsvorhaben komplex und zeitaufwendig sein mag, jedoch vom Durchschnittsfachmann unter Zuhilfenahme dieser Offenbarung in den Phasen des Entwurfs, der Vorfertigung und der Fertigung routinemäßig ausgeführt werden könnte.
-
Wenn Elemente verschiedener Ausführungsformen der vorliegenden Offenbarung eingeführt werden, sollen die Artikel „ein“, „eine“ und „der/die/das“ bedeuten, dass es eines oder mehrere der Elemente gibt. Die Ausdrücke „umfassend“, „enthaltend“ und „aufweisend“ sollen inklusiv sein und bedeuten, dass es außer den aufgeführten Elementen zusätzliche Elemente geben kann. Zusätzlich versteht sich, dass Erwähnungen von „einer Ausführungsform“ oder „eine Ausführungsform“ der vorliegenden Offenbarung nicht so aufgefasst werden sollen, dass sie die Existenz zusätzlicher Ausführungsformen ausschließen, die die angeführten Merkmale auch enthalten.
-
Integrierte Schaltungen, wie etwa FPGAs (Field-Programmable Gate Arrays), können ein programmierbares Fabric (z. B. Logikarrayblöcke (LABs), die Log-Elemente aufweisen, wie etwa Blöcke der digitalen Signalverarbeitung (DSP), Routing-Multiplexer (MUX) und so weiter) umfassen, das konfiguriert und in einigen Fällen später umkonfiguriert werden kann, um einen Schaltungsentwurf zu realisieren. Die Herstellung monolithischer FPGA (z. B. eines als ein einzelner Die hergestellten FPGA) kann aufgrund schlechter Siliziumausbeute (z. B. einer Anzahl von nicht ordnungsgemäß arbeitenden Silizium-Dies auf einem Wafer) wirtschaftlich ineffizient und prozessintensiv sein. Um die Siliziumausbeute zu verbessern, können FPGA disaggregiert oder physisch aufgeteilt und als kleinere programmierbare Logik-Fabric-Dies hergestellt werden. Die Fabric-Dies können dann miteinander verbunden werden, um ein größeres FPGA zu erzeugen.
-
Um es Fabric-Dies zu ermöglichen, miteinander zu kommunizieren, umfasst der hier offenbarte programmierbare Fabric-Die eine Spalte eines direkten Interconnect von Fabric-Die zu Fabric-Die (z. B. eine AIB-D-Schnittstelle (Advanced Interface Bus-Direct) (bezeichnet als die „Interconnect-Schnittstelle“ oder „Interconnect-Schnittstelle zwischen Dies“), die in einer oder mehreren Zeilen oder Mengen eines Sektors von programmierbarem Logik-Fabric angeordnet ist. Die Interconnect-Schnittstelle kann über ein Silizium-Zwischenglied (das z. B. Verknüpfungen oder elektrische Signaldurchgänge umfasst) kommunikativ an eine Interconnect-Schnittstelle eines anderen Fabric-Dies angeschlossen sein.
-
Der Fabric-Die kann mehrere Interconnect-Schnittstellenspalten umfassen. Zum Beispiel kann ein Sektor eines programmierbaren Logik-Fabric des Fabric-Dies zehn Interconnect-Schnittstellenspalten umfassen, die sich tief in den Sektor erstrecken können (so dass z. B. mehrere Zeilen des Sektors die Interconnect-Schnittstellenspalten umfassen), wodurch latenzarme Verbindungen zwischen den Fabric-Dies ermöglicht werden. Außerdem kann die Platzierung der Direkt-Interconnectspalten Routingstau verglichen mit den traditionell in monolithischen FPGA-Entwürfen verwendeten HIOs/VIOs verringern.
-
Angesichts des Obigen ist 1 eine Blockdarstellung eines Datenverarbeitungssystems 10, das eine integrierte Schaltungsvorrichtung 12 umfasst, gemäß einer Ausführungsform der vorliegenden Offenbarung. Das Datenverarbeitungssystem 10 kann mehr oder weniger Komponenten als gezeigt umfassen (z. B. elektronische Anzeige, Benutzeroberflächenstrukturen, ASICs (anwendungsspezifische integrierte Schaltungen)). Das Datenverarbeitungssystem 10 kann einen oder mehrere Hostprozessoren 14 umfassen, wie etwa einen Prozessor des Typs INTEL® Xeon® oder einen anweisungsreduzierten Prozessor (z. B. einen RISC (Reduced-Instruction Set Computer), einen ARM-Prozessor (Advanced RISC Machine)), der Datenverarbeitungsanforderungen für das Datenverarbeitungssystem 10 verwalten kann (z. B. um Maschinenlernen, Videoverarbeitung, Spracherkennung, Bilderkennung, Datenkomprimierung, Datenbanksucheinstufung, Bioinformatik, Netzwerksicherheits-Musteridentifikation, räumliche Navigation oder dergleichen durchzuführen).
-
Der Hostprozessor bzw. die Hostprozessoren 14 können mit dem Speicher und/oder Speicherungsschaltkreisen 106 kommunizieren, bei denen es sich um ein greifbares, nichttransitorisches maschinenlesbares Medium handeln kann, wie etwa RAM (Direktzugriffsspeicher), ROM (Festwertspeicher), eine oder mehrere Festplatten, Flash-Speicher oder ein beliebiges anderes geeignetes optisches, magnetisches oder Halbleiter-Speicherungsmedium. Der Speicher und/oder die Speicherungsschaltkreise 16 können Daten halten, die durch das Datenverarbeitungssystem 10 zu verarbeiten sind, wie etwa prozessorausführbare Steuersoftware, Konfigurationssoftware, Systemparameter, Konfigurationsdaten usw.
-
Das Datenverarbeitungssystem 10 kann auch eine Netzwerkschnittstelle 18 umfassen, die es dem Datenverarbeitungssystem 10 erlaubt, mit anderen elektronischen Vorrichtungen zu kommunizieren. Bei einigen Ausführungsformen kann das Datenverarbeitungssystem 10 Teil einer Datenzentrale sein, die vielfältige verschiedene Anforderungen verarbeitet. Zum Beispiel kann das Datenverarbeitungssystem 10 über die Netzwerkschnittstelle 18 eine Datenverarbeitungsanforderung zum Durchführen von Maschinenlernen, Videoverarbeitung, Spracherkennung, Bilderkennung, Datenkomprimierung, Datenbank-Sucheinstufung, Bioinformatik, Netzwerksicherheits-Musteridentifikation, räumlicher Navigation oder einer anderen spezialisierten Aufgabe empfangen. Das Datenverarbeitungssystem 10 kann ferner die integrierte Schaltungsvorrichtung 12 umfassen, die die Ausführung von Datenverarbeitungsaufgaben erleichtert.
-
Ein Entwickler kann eine Entwurfs-Workstation 20 verwenden, um einen Entwurf zu entwickeln, der die integrierte Schaltungsvorrichtung 12 konfigurieren kann, wie in 2 gezeigt, gemäß einer Ausführungsform der vorliegenden Offenbarung. Bei einigen Ausführungsformen kann der Entwickler Entwurfssoftware 24 (z. B. Intel® Quartus® von der INTEL CORPORATION) verwenden, um einen Entwurf zu erzeugen, mit dem die integrierte Schaltungsvorrichtung 12 programmiert (z. B. konfiguriert) werden kann. Zum Beispiel kann ein Entwickler eine modularisierte integrierte Schaltungsvorrichtung 12 programmieren, um eine spezifische Funktionalität so zu implementieren, wie etwa einen Schaltungsentwurf (z. B. Schaltungsentwurf auf höherer Ebene) zu implementieren, als wäre die integrierte Schaltungsvorrichtung 12 monolithisch. Die integrierte Schaltungsvorrichtung 12 kann eine programmierbare integrierte Schaltung sein, wie etwa ein FPGA (Field-Programmable Gate Array), die einen oder mehrere programmierbaren Fabric-Dies umfasst, die zusammen einen oder mehrere Schaltungsentwürfe implementieren können. Jeder programmierbare Fabric-Die kann auch eine oder mehrere Eingangs-/Ausgangs- bzw. E/A-Schnittstellen (z. B. Microbumps und/oder zugeordnete Sende-, Empfangs-, Ansteuer- und/oder Routingkomponenten) umfassen, die es dem programmierbaren Fabric-Die ermöglichen, mit anderen Vorrichtungen oder Komponenten (z. B. intern oder extern bezüglich der integrierten Schaltungsvorrichtung 12) zu kommunizieren.
-
Dementsprechend kann die Entwurfssoftware 24 einen Kompiler 26 verwenden, um eine Schaltungsentwurfskonfiguration auf niedrigerer Ebene für die integrierte Schaltungsvorrichtung 12 zu erzeugen. Das heißt, der Kompiler 26 kann maschinenlesbare Anweisungen, die die vom Entwickler spezifizierte Funktionalität repräsentieren, der integrierten Schaltungsvorrichtung 12 zum Beispiel in Form eines Konfigurationsbitstroms 28 bereitstellen. Der Hostprozessor bzw. die Hostprozessoren 14 können das Laden des Bitstroms 28 auf die integrierte Schaltungsvorrichtung 12 und die nachfolgende Programmierung des programmierbaren Fabric koordinieren.
-
Um die Skalierbarkeit und Siliziumausbeute der integrierten Schaltung 12 (z. B. des FPGA) zu verbessern, kann das programmierbare Logik-Fabric der integrierten Schaltung 12 zu mehreren kleineren programmierbaren Logik-Fabric-Dies modularisiert werden. 3 zeigt ein Beispiel für die integrierte Schaltungsvorrichtung 12 mit mehreren programmierbaren Logik-Fabric-Dies 40 gemäß Ausführungsformen der vorliegenden Offenbarung. Obwohl die integrierte Schaltungsvorrichtung 12 als ein FPGA gezeigt ist, versteht sich, dass die programmierbaren Logik-Fabric-Dies 40 für eine beliebige geeignete Art von integrierter Schaltungsvorrichtung 12 disaggregiert werden können. Die Fabric-Dies 40 können ein programmierbares Logik-Fabric 42 (auch bezeichnet als „programmierbares Fabric“, „programmierbare Logik“, „programmierbare Fabric-Schaltkreise“, „programmierbare Logikschaltkreise“ und so weiter) umfassen, das in einen oder mehrere Sektoren aufgeteilt werden kann, und erleichtern die Programmierung des FPGA 12. Es versteht sich, dass jeder Fabric-Die 40 verschiedene Instanzen des programmierbaren Logik-Fabric umfassen kann (z. B. verglichen mit anderen Fabric-Dies 40). Zum Beispiel kann ein Fabric-Die 40 eine andere (z. B. höhere oder niedrigere) Anzahl von digitalen Signalverarbeitungs- bzw. DSP-Blöcken als andere Fabric-Dies 40, eine andere (z. B. höhere oder niedrigere) Anzahl von Speicherblöcken als die anderen Fabric-Dies 40 und so weiter umfassen. Außerdem kann in einigen Fällen jeder Fabric-Die 40 Instanzen eines Kern-Fabric umfassen, die zum Beispiel Sendeempfänger und/oder Komponenten von harten Geistiges-Eigentum-Kernen umfassen können, wie etwa Prozessorkerne, Ethernetmedium-Zugangskontrolleinheiten, PCI-/PCI-Express-Steuerungen, externe Speichersteuerungen, Transistoren und so weiter.
-
Das programmierbare Logik-Fabric 42 kann in Gruppen (z. B. Spalten) angeordnet werden, die manchmal als konfigurierbare Logikblöcke (CLB) oder Logikarrayblöcke (LAB) bezeichnet werden. Das programmierbare Logik-Fabric 42 kann auch Speicher-LAB (MLAB), DSP-Blöcke, Routing-Multiplexer und so weiter umfassen. Im Betrieb kann das programmierbare Logik-Fabric 42 den Konfigurationsbitstrom 28 von dem/den Hostprozessor(en) 14 empfangen, den Konfigurationsbitstrom 28 in Bit des Konfigurations-Direktzugriffsspeichers (CRAM) der integrierten Schaltungsvorrichtung 12 speichern und kann gemäß dem Schaltungsentwurf konfiguriert werden, der in dem Konfigurationsbitstrom 28 realisiert ist, der in dem CRAM-Bit gespeichert ist. Die Fabric-Dies 40 können zur Laufzeit konfiguriert oder teilweise konfiguriert werden und/oder können zu einem späteren Zeitpunkt umkonfiguriert oder teilweise umkonfiguriert werden, wodurch Entwurfsflexibilität nach der Herstellung entsteht.
-
Kommunikation zwischen den Fabric-Dies 40 auf der integrierten Schaltungsvorrichtung 12 kann über eine eingebettete Schnittstellenbrücke erfolgen, wie etwa ein Silizium-Zwischenglied 44 (z. B. mittels signalleitender Kanäle in dem Silizium-Basismaterial). Das heißt, Fabric-interne Kommunikation in dem Fabric-Die 40 kann ohne Verwendung des Zwischenglieds 44 durchgeführt werden (z. B. ohne in die signalleitenden Kanäle des Zwischenglieds 44 eintretende Signale). Kommunikation zwischen programmierbaren Fabric-Dies (z. B. Kommunikation von Fabric-Die zu Fabric-Die zwischen zwei verschiedenen Fabric-Dies 40) kann mittels der in dem Zwischenglied 44 angeordneten Kanäle und/oder Schnittstellen erfolgen.
-
In 4 ist eine Draufsicht auf die disaggregierte FPGA-Vorrichtung 12 von 3 gemäß Ausführungsformen der vorliegenden Offenbarung gezeigt, die ferner die Konnektivität und Platzierungsarchitektur für die modularisierten programmierbaren Fabric-Dies 40 zeigt, die auch als Kacheln bezeichnet werden können. Es versteht sich, dass, obwohl die FPGA-Vorrichtung 12 mit einer bestimmten Anzahl von Fabric-Dies 40, Verbindungen und Komponenten gezeigt ist, die vorliegende Offenbarung beliebige geeignete Abwandlungen der FPGA-Vorrichtung 12 in Betracht zieht.
-
Wie abgebildet, umfassen die programmierbaren Fabric-Dies 40 der FPGA-Vorrichtung 12 jeweils mehrere Sektoren 60 des programmierbaren Logik-Fabric 62 (das dasselbe wie das oben in 3 beschriebene programmierbare Logik-Fabric 42 ist). Jeder Fabric-Die 40 umfasst auch das direkte Interconnect von Fabric-Die zu Fabric-Die (z. B. die AIB-D-Schnittstelle (Advanced Interface Bus-Direct) (die „Interconnect-Schnittstelle“) 64, die Verbindung zwischen den Dies 40 ohne Verwendung von Kommunikation auf Netzwerkbasis bereitstellt. Jede Interconnect-Schnittstelle 64 kann elektrisch mit einem Routing-Fabric (z. B. RoutingSchaltkreisen, Routing-Multiplexern und/oder anderen geeigneten Routing-Komponenten) des Fabric-Dies 40 gekoppelt sein und kann horizontale Leitungen von dem Fabric-Die 40 zu einem zweiten Fabric-Die 40 überbrücken. Insbesondere können die Interconnect-Schnittstellen 64 mit Microbumps des Fabric-Dies 40 gekoppelt werden, die über das Fabric-Die 40 verteilt sein können. Dementsprechend kann die Anzahl der Interconnect-Schnittstellen 64 für jeden Fabric-Die 40 auf der Anzahl der Microbumps des Fabric-Dies 40 basieren und/oder kann durch eine Spezifikation definiert werden, die mit der Schnittstelle zwischen Fabric-Dies 40 konform ist. Zum Beispiel kann ein Fabric-Die 40 für jeden Microbump eine Interconnect-Schnittstelle 64 aufweisen.
-
Die Interconnect-Schnittstellen 64 können in einer größeren oder kleineren Anzahl von Spalten und/oder breiteren oder dünneren Spalten verteilt werden, um Kommunikation mit vergrößerter Uferlinienreichweite und/oder vergrößerter Routing-Flexibilität zu erleichtern, ohne Kommunikation auf Netzwerkbasis (z. B. Netzwerk-auf-Chip-Komponenten) zu benutzen, so dass die Kommunikation von Fabric-Die zu Fabric-Die erfolgen kann, ohne zu viel Routingschaltkreise des programmierbaren Logik-Fabric 62 in dem Fabric-Die 40 zu konsumieren. Wie dargestellt können zum Beispiel die Interconnect-Schnittstellen 64 in fünf Spalten pro Sektor 60 verteilt werden, um somit die Uferlinienreichweite verglichen mit dem Fall, dass nur horizontale Verbindungen des Fabric-Die 40 zur Kommunikation von Fabric-Die zu Fabric-Die verwendet werden, fünffach zu vergrößern. Es versteht sich, dass eine beliebige geeignete Anzahl von Spalten von Interconnect-Schnittstellen 64 und eine beliebige geeignete Breite von Spalten in den Fabric-Dies 40 enthalten sein können, wie etwa 10 Spalten jeweils mit einer Breite von einer Interconnect-Schnittstelle 64, eine Spalte jeweils mit einer Breite von 2 Interconnect-Schnittstellen 64 und so weiter.
-
4 zeigt außerdem Schnittstellen 66 horizontaler Eingabe/Ausgabe (HIO) und Schnittstellen 68 vertikaler Eingabe/Ausgabe (VIO), die elektrisch mit den Sektoren 60 der Fabric-Dies 40 gekoppelt werden können. Die HIO/VIO-Schnittstellen 66, 68 können das Senden von Signalen von einem ersten Fabric-Die 40 zu einer Vorrichtung oder Komponente außerhalb des ersten Fabric-Dies 40, wie etwa einem zweiten Fabric-Die 40 (z. B. über das Zwischenglied 44) ermöglichen. Da die HIO/VIO-Schnittstellen 66, 68 in der Nähe von Uferlinien (z. B. 70) der Fabric-Dies 40 angeordnet sind, kann jedoch Routingstau an den Uferlinien 70 auftreten, wenn Daten zu anderen Fabric-Dies gesendet oder von diesen empfangen werden, was zu verringerter Vorrichtungsleistungsfähigkeit führt.
-
Außerdem können, wie in 5 gezeigt, die eine Seitenansicht der disaggregierten FPGA-Vorrichtung 12 von 3 gemäß Ausführungsformen der vorliegenden Offenbarung zeigt, die Fabric-Dies 40 auf dem Silizium-Zwischenglied (z. B. passiven Zwischenglied) 44 ruhen. Jede Interconnect-Schnittstelle 64 eines Fabric-Dies 40 kann (z. B. über Routingschaltkreise des Fabric-Dies 40) elektrisch mit dem programmierbaren Logik-Fabric 42 des Fabric-Dies 40 gekoppelt werden. Außerdem kann jede Interconnect-Schnittstelle 64 über einen Draht oder Leiter 82 elektrisch mit einem jeweiligen Microbump 80 des Fabric-Dies 40 gekoppelt werden. Die Microbumps 80 können ihrerseits elektrisch mit anderen Microbumps 80 anderer Fabric-Dies 40 gekoppelt werden. Die anderen Microbumps 80 können elektrisch mit anderen Interconnect-Schnittstellen 64 der anderen Fabric-Dies 40 gekoppelt sein, die (z. B. über andere Routingschaltkreise der anderen Fabric-Dies 40) elektrisch mit dem anderen programmierbaren Logik-Fabric 42 der anderen Fabric-Dies 40 gekoppelt sein können. Wie dargestellt können, obwohl die Interconnect-Schnittstellen 64 auf einer oberen Oberfläche 86 der Fabric-Dies 40 angeordnet werden können, die Microbumps 80 auf einer unteren Oberfläche 88 der Fabric-Dies 40 angeordnet werden. Dementsprechend können sich die Drähte oder Leiter 82, die die Interconnect-Schnittstellen 64 elektrisch mit den Microbumps 80 koppeln, in die Fabric-Dies 60 und zwischen die obere und untere Oberfläche 86, 88 erstrecken. Auf diese Weise können Signale und/oder Daten zwischen Fabric-Dies 40 übertragen werden.
-
Das Silizium-Zwischenglied 44 kann seinerseits durch das Kapselungssubstrat 90 getragen werden, das elektrische Verbindungen der FPGA-Vorrichtung 12 erleichtert. Obwohl das Silizium-Zwischenglied 44 in vielen der Beispielen als passives Zwischenglied beschrieben wird, kann bei einigen Ausführungsformen das Silizium-Zwischenglied 44 auch oder als Alternative aktive Komponenten enthalten und kann ein aktives Zwischenglied sein.
-
Jeder Sektor 60 des Fabric-Dies 40 kann eine oder mehrere Zeilen oder Mengen von Logikblöcken, wie etwa zwischen 1 und 200 Zeilen (z. B. 10 Zeilen, 42 Zeilen, 43 Zeilen, 50 Zeilen, 100 Zeilen und so weiter) von Komponenten umfassen, die Verarbeitung und Routen von Daten erleichtern. Zeile 100, sowie sie in 4 zu sehen ist, kann Teil und parallel zu der Uferlinie 70 (z. B. einem Rand des Fabric-Dies 40) sein und Interconnect-Schnittstellen 64 umfassen. 6 ist eine perspektivische Ansicht eines Teils der FPGA-Vorrichtung 12 von 3 gemäß Ausführungsformen der vorliegenden Offenbarung. Wie dargestellt, können Zeilen (z. B. 100) eines Sektors 60 des Fabric-Dies 40 eine Anzahl von Blöcken mit bestimmten Komponenten, die bestimmte Funktionalitäten ermöglichen, umfassen.
-
Zum Beispiel kann die Zeile 100 Speicher-Logikarrayblöcke 102 (MLAB) umfassen, die programmierbare Funktionalität für den Fabric-Die 40 bereitstellen können und Speicherressourcen umfassen können, die kleine Menge (z. B. Kilobyte) Daten speichern können. Zeilen des Fabric-Dies 40 (einschließlich der Zeile 100) können Logikarrayblöcke (LAB) umfassen, die programmierbare Funktionalität für den Fabric-Die 40 bereitstellen können. Die MLAB 102 und LAB können auf der Basis des implementierten Schaltungsentwurfs (z. B. in Form eines Bitstroms 28, der in CRAM-Bit (Konfigurations-Direktzugriffsspeicher) der FPGA-Vorrichtung 12 entsprechend den MLAB 102 und/oder LAB programmiert ist) Logikfunktionen, arithmetische Funktionen, Registerfunktionen und dergleichen implementieren. Die Zeile 100 kann auch Blöcke 104 eines Logikelement-Eingangsmultiplexers (LEIM) umfassen, die auf der Basis des implementierten Schaltungsentwurfs (z. B. in Form eines Bitstroms 28, der in CRAM-Bit (Konfigurations-Direktzugriffsspeicher) der FPGA-Vorrichtung 12 entsprechend den MLAB 102 und/oder LAB programmiert ist) als Auswahlschaltungen wirken können, die Signale von verschiedenen Teilen des Fabric-Dies 40 routen, wie etwa zu oder von Logikblöcken in den MLAB 102 und/oder LAB.
-
Die Zeile 100 kann einen oder mehrere Interconnect-Blöcke 108 umfassen, in denen eine oder mehrere Interconnect-Schnittstellen 64 angeordnet sein können. Es kann eine beliebige geeignete Anzahl von Interconnect-Schnittstellen 64 in jedem Interconnect-Block 108 angeordnet werden, wie etwa zwischen 1 und 200 Interconnect-Schnittstellen 64, 10 und 14 Interconnect-Schnittstellen 64 und so weiter. Jede Interconnect-Schnittstelle 64 kann elektrisch mit einem jeweiligen Microbump 80 gekoppelt werden. Die Microbumps 80 können unidirektional oder bidirektional sein. Das heißt, wenn die Microbumps 80 unidirektional sind, kann jeder Microbump 80 dafür ausgelegt sein, Signale zu einem anderen Fabric-Die 40 zu senden oder Signale von einem anderen Fabric-Die 40 zu empfangen. Wenn die Microbumps 80 bidirektional sind, kann jeder Microbump 80 dafür ausgelegt sein, sowohl Signale zu einem anderen Fabric-Die 40 zu senden als auch Signale von diesem zu empfangen.
-
Dementsprechend können zum Senden von Daten zu einem anderen Fabric-Die 40 Daten auf dem Fabric-Die 40 zu der einen oder den mehreren Interconnect-Schnittstellen 64 des Interconnect-Blocks 108 gesendet werden, die sich tief in den Sektor 60 hinein erstrecken. Das heißt, Daten auf dem Fabric-Die 40 können zum Beispiel zu einem MLAB 102 der Zeile 100 gesendet werden, der an den Interconnect-Block 108 grenzt oder neben diesem liegt, um verarbeitet zu werden, oder zu einem LEIM-block 104 der Zeile 100, der an den Interconnect-Block 108 angrenzt oder neben diesem liegt, um zum Beispiel über einen RT-Block (Routing-Fabric oder Schaltkreise) 106 der Zeile 100 gemultiplext zu werden. Der RT-Block 106 kann einen oder mehrere programmierbare Interconnect-Blöcke umfassen, die ankommende Datenkanäle mit abgehenden Datenkanälen verbinden, und können somit Datensignale zwischen Blöcken der Zeile 100 routen.
-
Ähnlich können zum Empfangen von Daten von einem anderen Fabric-Die 40 die eine oder mehreren Interconnect-Schnittstellen 64 des Interconnect-Blocks 108 Daten von einem oder mehreren jeweiligen Microbumps 80 empfangen. Der Interconnect-Block 108 kann dann die Daten zum Beispiel zu einem MLAB 102 der Zeile 100 senden, der an dem Interconnect-Block 108 angrenzt oder neben diesem liegt, um verarbeitet zu werden, oder zu einem LEIM-Block 104 der Zeile 100, der an den Interconnect-Block 108 angrenzt oder neben diesem liegt, um gemultiplext zu werden. Ein RT-Block 106 der Zeile 100 kann die Daten von dem MLAB 102 oder dem LEIM-Block 104 empfangen und die Daten zur weiteren Verarbeitung zu zusätzlichen Blöcken der Zeile 100 routen. Bei einer Ausführungsform können Eingaben aus dem Kern-Fabric in die Interconnect-Schnittstellen 64 beim Senden von Daten mittels des LEIM-Blocks 104 erfolgen, und Ausgaben können direkt zu den RT-Blöcken 106 fahren.
-
Wie bereits erwähnt, kann die Interconnect-Schnittstelle 64 die Erfüllung von Konnektivitätsanforderungen zwischen Fabric-Dies 40 mit verringerter Latenz und größerer Reichweite erleichtern. Insbesondere kann die Interconnect-Schnittstelle 64 in einer oder mehreren Spalten (z. B. in dem Interconnect-Block 108) angeordnet sein und einen unidirektionalen oder bidirektionalen Puffer für Eingabe/Ausgabe (E/A) umfassen, der Draht-zu-Draht-Konnektivität erleichtert. Zum Beispiel ist 7 eine Darstellung von Teilen von Zeilen (z. B. 102, 122) des programmierbaren Logik-Fabric 42 eines Sektors 60 des Fabric-Dies 40 der FPGA-Vorrichtung 12 von 3 gemäß Ausführungsformen der vorliegenden Offenbarung. Eine erste Zeile 120 des Sektors 60 kann auf einer Uferlinie 70 des Fabric-Dies 40, als Teil davon und parallel zu dieser (z. B. angrenzend an einen anderen Fabric-Die 40) angeordnet sein, während andere Zeilen des Sektors 60 (wie z. B. die zweite Zeile 122) getrennt und weiter entfernt von (und parallel zu) der Uferlinie 70 angeordnet sein können. Dementsprechend können die Interconnect-Blöcke 108 in einer Spalte (z. B. 110) des Sektors 60 angeordnet sein und (z. B. relativ zu der Uferlinie 70) tief in den Sektor 60 reichen. Zum Beispiel kann ein Sektor 60 42 Zeilen von Logikblöcken umfassen. Wenn eine Spalte 110 von Interconnect-Blöcken 108 über den gesamten Sektor 60 reicht (z. B. von Rand zu Rand oder Uferlinie zu Uferlinie) und es 14 Interconnect-Schnittstellen 64 für jeden Interconnect-Block 108 gibt, kann die Spalte 110 von Interconnect-Blöcken 108 588 Interconnect-Schnittstellen 64 umfassen. Diese größere Reichweite kann es den Interconnect-Schnittstellen 64 ermöglichen, leichter (z. B. mit kürzerer Routing-Länge und somit Latenz) auf horizontale Leitungen des Fabric-Dies 40 zuzugreifen). Die reduzierte Latenz über den Fabric-Die 40 kann sich stark auf die Systemleistungsfähigkeit auswirken. Zum Beispiel können Leitungsverzögerungen über den Fabric-Die 40 innerhalb von 40 Pikosekunden gehalten werden. Es versteht sich, dass diese Zahlen lediglich als Anschauungsbeispiele verwendet werden und jeder Sektor 60 mehr oder weniger Zeilen von Logikblöcken aufweisen kann, jeder Interconnect-Block 108 mehr oder weniger Interconnect-Schnittstellen 64 aufweisen kann und folglich jede Spalte 110 von Interconnect-Blöcken 108 mehr oder weniger Interconnect-Schnittstellen 64 umfassen kann. Auf diese Weise kann die Interconnect-Schnittstelle 64 direkte Konnektivität von Fabric-Die zu Fabric-Die bereitstellen, ohne ein Netzwerk-auf-Chip zu durchqueren. Der Fabric-Die 40 kann auch eine oder mehrere Spalten von LAB-Blöcken 126 umfassen.
-
Dementsprechend kann zur Aufnahme der Interconnect-Schnittstelle 64 in einen Sektor eines Fabric-Dies eine Spalte von Blöcken des Sektors 60 des Fabric-Dies, wie etwa eine LAB- oder MLAB-Spalte, mit der Interconnect-Spalte 110 ersetzt werden. Zum Beispiel können in einigen Fällen fünf LAB- oder MLAB-Spalten in einem Fabric-Die mit einer Interconnect-Spalte 110 ersetzt werden, obwohl eine beliebige geeignete Anzahl von LAB- oder MLAB-Spalten (z. B. 1 bis 100) ersetzt werden kann. In einem solchen Beispiel können ungefähr 2300 Drähte oder Leiter in fünf LAB- oder MLAB-Spalten in einem Sektor einer Fabric-Dies passen. Diese Drähte oder Leiter können unabhängig als Empfangs- und/oder Sendeschaltkreise für die Interconnect-Schnittstellen 64 konfiguriert werden. Für das programmierbare Logik-Fabric 42 des Fabric-Dies 40 kann diese Ersetzung einfach so erscheinen, als wäre die LAB- oder MLAB-Spalte durch eine andere Geistiges-Eigentum-Spalte (wie z. B. eine andere LAB- oder MLAB-Spalte) ersetzt worden. Das heißt, die Interconnect-Schnittstellen 64 können voll in das Kern-Fabric des Fabric-Dies 40 integriert werden und können sich das Konfigurationsschema (z. B. Wiederverwendung von Lokalsektormanagern und/oder CRAM-Bit auf den LAB- oder MLAB-Spalten, die ersetzt werden) und/oder das Taktungsschema des Kern-Fabric teilen.
-
Bei zusätzlichen oder alternativen Ausführungsformen kann die Interconnect-Schnittstelle 64 stärker verteilt werden (z. B. im Gegensatz zur Gruppierung der Interconnect-Schnittstelle 64 in einer oder mehreren Spalten 110 von Interconnect-Blöcken 108). Zum Beispiel kann, wie in 8 gezeigt, eine Interconnect-Schnittstelle 64 gemäß Ausführungsformen der vorliegenden Offenbarung in jedem LAB 126 und MLAB 102 angeordnet werden. Obwohl eine einzige Interconnect-Schnittstelle 64 als in jedem LAB 126 und MLAB 102 angeordnet gezeigt ist, versteht sich, dass jede beliebige geeignete Anzahl von Interconnect-Schnittstellen 64 (z. B. 1 bis 20) in jedem LAB 126 und MLAB 102 angeordnet werden kann und dass die Interconnect-Schnittstellen 64 in einer beliebigen geeigneten Anzahl oder in beliebigen geeigneten Typen von Logikblöcken angeordnet werden können.
-
Das in 8 dargestellte verteilte Schema kann insbesondere für Verbindungen von Fabric-Die zu Fabric-Die nützlich sein, da es eng mit Kern-Fabric-Komponenten, wie etwa LABs 126 und RT-Block 106, gekoppelt ist. Unter bestimmten Umständen kann der mindestens in 7 dargestellte Spaltenförmige Ansatz besser geeignet sein, wie etwa, wenn Datenbusverbindung kritisch ist oder physischer Platz in den LAB 126 und/oder MLAB 102 begrenzt ist. Zum Beispiel können einige Architekturen eine bestimmte Anzahl von Dioden zur elektrostatischen Entladung umfassen, die in den LAB 126 und/oder MLAB 102 anzuordnen sind, und dementsprechend kann es in den LAB 126 und/oder MLAB 102 nicht genug Platz zur Unterbringung der Interconnect-Schnittstellen 64 geben.
-
Die Interconnect-Schnittstelle 64 kann Latenz verringern, da sie eine größere Reichweite (z. B. Verbindung) in das programmierbare Fabric 42 des Fabric-Dies 40 aufweisen kann als die in monolithischen FPGA-Entwürfen verwendeten Schnittstellen zur horizontalen und/oder vertikalen Eingabe/Ausgabe (HIO und/oder VIO), ohne Routing-Schaltkreise des Fabric-Dies 40 zu blockieren oder zu sehr zu benutzen. Das heißt, statt Daten mittels einer übermäßigen Menge an programmierbarem Fabric des Sektors zwischen Quellen-/Ziel-Logikblöcken, die tief im Fabric-Die (z. B. getrennt und weiter entfernt von der Uferlinie des Fabric-Dies) positioniert sind, und der horizontalen und/oder vertikalen Eingabe-/Ausgabeschnittstellen, die typischerweise am Rand des Fabric-Dies (wie etwa der Uferlinie) positioniert sind, routen zu müssen, ermöglicht der hier offenbarte Fabric-Die 40 das Routen von Daten zwischen den Quellen-/Ziellogikblöcken und einer typischerweise näher befindlichen Interconnect-Schnittstelle 64, die die Daten schnell zu einem jeweiligen elektrisch gekoppelten Microbump 80 (der seinerseits elektrisch mit einem Ziel-/Quellen-Fabric-Die gekoppelt sein kann) senden und von diesem empfangen kann. Anders ausgedrückt kann, da die Interconnect-Schnittstellen 64 über den Fabric-Die 40 verteilt werden können, das Routing nicht auf die Ränder des programmierbaren Fabric 42 beschränkt sein, und traditioneller Routingstau kann gemindert werden. Zum Beispiel kann die Interconnect-Schnittstelle 64 mindestens einige der vertikalen Eingabe-/Ausgabeschnittstellen ersetzen und kann zum Beispiel zehnmal mehr Reichweite für Drahtverbindung zu dem Fabric-Die 40 als die horizontalen und/oder vertikalen Eingabe-/Ausgabeschnittstellen bereitstellen.
-
Obgleich die in der vorliegenden Offenbarung dargelegten Ausführungsformen auf verschiedene Arten abwandelbar und alternativ ausführbar sind, wurden in den Zeichnungen konkrete Ausführungsformen rein beispielhaft gezeigt und hierin ausführlich beschrieben. Es versteht sich jedoch, dass die Offenbarung nicht auf die konkreten Ausführungsformen, die offenbart werden, begrenzt sein soll. Die Offenbarung soll sämtliche Abwandlungen, Äquivalente und Alternativen abdecken, die mit dem Gedanken der Offenbarung vereinbar sind und in ihren Schutzbereich fallen, wie von den folgenden beigefügten Ansprüchen definiert.
-
Die hierin dargelegten und beanspruchten Techniken beziehen sich und sind anwendbar auf physische Objekte sowie konkrete Beispiele aus der Praxis, die nachweislich den gegenwärtigen Stand der Technik verbessern, und sind deshalb nicht abstrakt, unkörperhaft oder rein theoretisch. Werden ferner in den am Ende dieser Patentschrift angehängten Ansprüchen ein oder mehrere Elemente als „Mittel zum [z. B. Durchführen einer Funktion] ...“ („means for [perform]ing [a function] ...“) oder „Schritt zum [z. B. Durchführen einer Funktion] ...“ („step for [perform]ing [a function] ...“) bezeichnet, sind diese Elemente nach § 112(f) Bd. 35 U.S.C. auszulegen. Werden in den Ansprüchen Elemente hingegen anders bezeichnet, sind diese Elemente nicht nach § 112(f) Bd. 35 U.S.C. auszulegen.