-
HINTERGRUND
-
Multicore-Prozessoren sind integrierte Schaltungen, die mehrere Prozessorkerne enthalten. Generell handelt es sich bei einem Kern um eine Verarbeitungseinheit wie z. B. eine zentrale Recheneinheit (CPU), die ausführbare Module (Anweisungen oder Code) verarbeitet, um eine oder mehrere gewünschte Funktionen bzw. Anwendungen bereitzustellen. Multicore-Prozessoren müssen häufig von einer oder mehreren externen Datenquellen wie z. B. Analog-zu-Digital-Wandlern (ADC), Sensorarrays, usw. erzeugte Daten empfangen und verarbeiten. Einfache Prozessorschnittstellen auf Busbasis sind u. U. nicht in der Lage, die Sammlung von Daten aus einer großen Anzahl Quellen zu ermöglichen, v. a. wenn dies im Wesentlichen parallel erfolgen muss.
-
ZUSAMMENFASSUNG
-
In einem Ausführungsbeispiel wird eine integrierte Schaltung bereitgestellt. Die integrierte Schaltung umfasst eine Mehrzahl Eingabedatenschnittstellen, wobei jede Eingabedatenschnittstelle mit einer Datenquelle mit variabler Geschwindigkeit und einem Datenschalter verbunden ist, wobei jede Eingabedatenschnittstelle ferner Spannungspegelwandler und verteilte FIFO-Elemente umfasst; eine Mehrzahl Ausgabedatenschnittstellen, wobei jede Ausgabedatenschnittstelle mit einem einer Mehrzahl datenverbrauchender Prozessoren verbunden ist, und wobei jede Ausgabedatenschnittstelle ferner Datenpegelwandler, verteilte FIFO-Elemente und Reorder-Puffer umfasst; sowie einen ersten Raumschalter und einen zweiten Raumschalter, die jeweils die Mehrzahl Eingabedatenschnittstellen an die Mehrzahl Ausgabeschnittstellen knüpfen, und ferner umfassend eine Mehrzahl Schnitstellen, die mehrere gleichzeitige Verbindungen zwischen Eingabe- und Ausgabeports des Raumschalters bereitstellen können, wobei der Raumschalter eine der Anzahl Eingabedatenschnittstellen gleiche Anzahl Eingangsports und eine der Anzahl Ausgabedatenschnittstellen gleiche Anzahl Ausgangsports aufweist, wobei die Bitbreite jedes Eingangsports auf dem Raumschalter mit der Bitbreite jeder Eingabeschnittstelle übereinstimmt; wobei die Bitbreite jedes Ausgangsports auf dem Raumschalter mit der Bitbreite jeder Ausgabeschnittstelle übereinstimmt; und wobei der zweite Raumschalter aktiviert wird, um den ersten Raumschalter im Falle dessen Ausfalls zu ersetzen.
-
In einer alternativen Ausführungsform der integrierten Schaltung befinden sich eine oder mehrere datenverbrauchende Prozessoren auf einer ersten physikalischen Siliziumschicht und sind über eine Kombination aus Verbindungsverdrahtung und TSV (Through Silicon Vias) mit den auf einer zweiten physikalischen Siliziumschicht angeordneten entsprechenden Ausgabeschnittstellen verbunden. In einer weiteren Ausführungsform der integrierten Schaltung umfassen die Eingabedatenschnittstellen ferner eine Mehrzahl FIFO-Puffer, von denen jeder an einen der Spannungspegelwandler gekoppelt ist, wobei dei FIFO-Puffer jeweils einen oder mehrere Unterblöcken umfasst, die ein verteiltes FIFO-Element bilden. In einer weiteren Ausführungsform sind die variablen Datenquellen und das verteilte FIFO-Element über die Spannungspegelwandler verbunden, und jedes verteilte FIFO-Element nimmt eine verschiedene physikalische Stelle auf einem Siliziumchip ein, und umfasst ferner eine oder mehrere Speicherstellen. In einer weiteren Ausführungsform ist jeder Spannungspegelwandler im single-ended-Betrieb verbunden, wo er unipolare oder bipolare digitale Signale in einen mit den verteilten FIFO-Elementen vereinbaren Spannungspegel umwandeln kann.
-
In einem weiteren Ausführungsbeispiel wird eine integrierte Schaltung bereitgestellt. Die integrierte Schaltung umfasst eine Mehrzahl Eingabeschnittstellen, die Spannungspegelwandler und durch Leitungssegmente miteinander verbundene verteilte FIFO-Eingabeelemente, wobei jede Eingabeschnittstelle an eine Datenquelle mit variabler Geschwindigkeit einer Mehrzahl Datenquellen mit variabler Geschwindigkeit, die jeweils gleiche Logikebenen aufweisen, sowie einen an die Mehrzahl Eingabeschnittstellen gekoppelten Raumschalter, der mehrere blockierungsfreie Verbindungen mit einer Mehrzahl Ausgabeschnittstellen bereitstellt, die seriell über Leitungen miteinander verbundene Ausgabespannungswandler, verteilte FIFO-Elemente und Reorderpuffer umfassen.
-
In einer weiteren Ausführungsform können die verteilten FIFO-Elemente auf einer aktiven Siliziumschicht einer zweidimensionalen integrierten Schaltung, oder auf verschiedenen Schichten einer dreidimensionalen Silizium-integrierten Schaltung ausgeführt werden. In einer Ausführungsform sind die Ausgabeschnittstellen an Datensenken gekoppelt, die ferner eine Mehrzahl auf demselben Chip wie die integrierte Schaltung oder auf einem von der integrierten Schaltung getrennten Chip ausgeführter multipler Prozessorkerne umfassen können. In einer weiteren Ausführungsform umfasst der Raumschalter einen Fixpunkt-Raumschalter bzw. einen Floating-Point-Schalter, wobei die Eingabe- und Ausgabeschnittstellen des Raumschalters ferner Mantissen- und Exponentenbits mit Breiten, die größer oder gleich 1 sind, umfassen können.
-
In einer weiteren Ausführungsform können die Datensenken jeweils unterschiedliche Speisespannungen und Betriebsfrequenzen aufweisen, und können einzelne Mikroprozessoren, digitale Signalprozessoren sowie feldprogrammierbare Gate Arrays umfassen, wobei eine oder mehrere der Datensenken an einen der Reorder-Puffer gekoppelt sein kann. In einer weiteren Ausführungsform kann jeder brückbare Reorder-Puffer der Mehrzahl Reorder-Puffer unabhängig von den anderen Reorder-Puffern eine variable Tiefe aufweisen, wobei der einzelne Reorder-Puffer ferner einen Eingabeport mit einer von einem Schreibzeiger aufrechterhaltenen Adresse sowie einen oder mehrere Ausgabeports mit von Schreibzeigern aufrechterhaltenen Adressen, und jeder Reorder-Puffer mehrere Ausgabeports umfasst, die jeweils mit einem anderen Ausgabespannungspegelwandler zur Ausgabe an verschiedene Ausgabesenken verbunden sind.
-
In einer weiteren Ausführungsform empfangt die Ausgabeschnittstelle Daten, die eine erste Übertragungsrate und einen ersten Spannungspegel vom Ausgangsschalter umfassen, und wandelt die erste Übertragungsrate in eine zweite Übertragungsrate und den ersten Spannungspegel in einen zweiten Spannungspegel um, wobei die zweite Übertragungsrate und der zweite Spannungspegel mit den Datensenken vereinbar sind. In einer Ausführungsform ist ein erstes Segment der verteilten FIFO-Segmente physikalisch auf einer Schicht einer dreidimensionalen integrierten Schaltung angeordnet, während ein zweites Segment der verteilten FIFO-Segmente physikalisch auf einer anderen Schicht der dreidimensionalen integrierten Schaltung angeordnet ist, und wobei das erste und zweite Segment über senkrechte TSV-Leitungen miteinander verbunden sind.
-
In einer weiteren Ausführungsform können die ersten und zweiten Segmente der verteilten FIFO-Segmente Differenzsignale oder asymmetrische Signale übertragen. In einer weiteren Ausführungsform werden die über die Leitungen, die die verteilten FIFO-Eingabe- und Ausgabeelemente miteinander verbinden, übertragenen Daten auf der Grundlage von Gray-Codierung oder Bitumkehrung codiert. In einer weiteren Ausführungsform kann der Raumschalter einen Koordinatenschalter mit N-Eingangsports und N-Ausgangsports, ein Shuffle-Exchange-Netzwerk mit N Eingangsports und N Ausgangsports und log(N) Stufen oder ein Banyan-Netzwerk mit log2(N) Stufen und N Eingangsports und N Ausgangsports umfassen.
-
In einer weiteren Ausführungsform wird ein zweiter Raumschalter bereitgestellt, der sich beim Ausfall des Raumschalters eingchaltet, wobei der zweite Raumschalter an die Eingabe- und Ausgabeschnittstellen auf eine der Kopplung des Raumschalters an Ein- und Ausgabeschnittstelle ähnliche Weise gekoppelt ist.
-
In einer weiteren Ausführungsform weist ein verteiltes FIFO-Element der verteilten FIFO-Elemente eine Ausgabe eines stromsparenden Codierers auf, der mit einer stromsparenden Decodierereingabe eines anderen verteilten FIFO-Elements der verteilten FIFO-Elemente verbunden ist, wobei die verteilten FIFO-Elemente über optionale stromsparende Gray-codierte Codierer und Decodierer mit den Pegelwandlern verbunden sind und wobei Datenquellen mit variabler Geschwindigkeit über eine Mehrzahl paralleler Pfade auf den verteilten FIFO-Eingabeelementen schreiben können.
-
Die vorstehende Zusammenfassung dient lediglich der Veranschaulichung und hat keinesfalls als Einschränkung der vorliegenden Erfindung zu gelten. Ausser den oben beschriebenen veranschaulichenden Aspekten, Ausführungsbeispielen und Merkmalen werden unter Bezugnahme auf die Zeichnungen und die nachfolgende ausführliche Beschreibung weitere Aspekte, Ausführungsformen und Merkmale in Erscheinung treten.
-
KURZBESCHREIBUNG DER ZEICHNUNGEN
-
1 zeigt ein Ausführungsbeispiel einer Datenschnittstellenschaltung.
-
2 zeigt ein alternatives Ausführungsbeispiel einer Datenschnittstellenschaltung mit Pegelwandlern und verteilten FIFO-Puffern.
-
3 ist ein veranschaulichendes Blockdiagramm eines verteilten FIFO-Puffers.
-
3b ist ein veranschaulichendes Blockdiagramm eines verteilten FIFO-Puffers, wobei der Pegelwandler sich unter verteilten FIFO-Puffersegmenten befindet.
-
3c ist ein veranschaulichendes Blockdiagramm eines traditionellen lokalen FIFO-Puffers.
-
3d ist ein veranschaulichendes Blockdiagramm verschiedener Datenpfade einer Ausführungsform eines verteilten FIFO-Puffers.
-
3e ist ein veranschaulichendes Diagramm, in dem gezeigt wird, wie mehrere Abschnitte eines verteilten FIFO-Puffers miteinander verbunden werden können, um einen vollständigen verteilten FIFO-Puffer auszubilden.
-
3f ist ein veranschaulichendes Blockdiagramm, in dem die Segmente eines über differentielle Signalübertragung angebundenen verteilten FIFO-Puffers, was zu einem niedrigeren Stromverbrauch und höheren Übertragungsraten führt.
-
3g zeigt ein Zeitdiagramm für die Komponenten der Eingabeblöcke einer Datenschnittstellenschaltung.
-
3h ist ein veranschaulichendes Blockdiagramm verteilter FIFO-Puffersegmente, jeweils umfassend zwei Speicherelemente.
-
3i ist ein veranschaulichendes Flussdiagramm des Fortschritts eines Datums durch die verteilten Puffersegmente.
-
4a ist ein veranschaulichendes Blockdiagramm eines über einen Reorder-Puffer an einen Prozessorkern gekoppelten FIFO-Ausgabepuffers.
-
4b ist eine schematische Darstellung eines Beispiels eines Reorder-Puffers, der eine Schreibzeigerein- und -ausgabe aufweist.
-
4c ist eine schematische Darstellung eines Beispiels eines Reorder-Puffers, in der die Umordnung der Schreibzeigereingabe für Ausgabe gezeigt wird.
-
4d ist ein Veranschaulichungsbeispiel des Schreibens und Ablesens eines Reorderpuffers, der N Eingangsports und N Ausgangsports aufweist.
-
4e zeigt ein alternatives Ausführungsbeispiel einer Datenschnittstellenschaltung mit Pegelwandlern und verteilten FIFO-Puffern, die über Reorder-Pufer mit Prozessorkernen verbunden sind und mit Multiplexern brückbar sind.
-
5a ist ein veranschaulichendes Blockdiagramm eines Ausgabepufferblocks mit Fehlercodekorrektur und niedrigerem Stromverbrauch.
-
5b Wie in 5b gezeigt wird, kann es sich beim Raumschalter um einen Shuffle-Exchange-Koordinatenschalter mit N Stufen auf einem Banyan handeln.
-
5c ein zweiter Raumschalter wird für den Fall des Ausfalls des ersten Raumschalters bereitgestellt.
-
6 ist ein veranschaulichendes Blockdiagramm eines Eingabeblocks mit niedrigerem Stromverbrauch infolge der Umwandlung paralleler Dateneingaben in serielle Daten während der Übertragung.
-
7a ist ein Ausführungsbeispiel des Schalterblocks, der eine N-mal-N-Kreuzschiene verwendet.
-
7b ist eine Darstellung einer 4×4-Kreuzschiene, in der die Ein- und Ausgangsports gezeigt werden.
-
7c ist eine Darstellung der 4×4-Kreuzschiene mit zwei gleichzeitigen Datenflüssen.
-
8a ist ein Ausführungsbeispiel des Schalterblocks mit einem Shuffle-Exchange-Netzwerk (S/E).
-
8b ist ein Beispiel eines Datenpfads der Ausführung des Schalterblocks als S/E-Netzwerk.
-
9 ist ein Blockdiagramm eines Beispiels einer Rechenvorrichtung, die erfindungsgemäß für Datenschnittstellen-Multipath-Routing angeordnet ist.
-
AUSFÜHRLICHE BESCHREIBUNG
-
In der nachfolgenden ausführlichen Beschreibung wird auf die beigefügten Zeichnungen, die Bestandteil der vorliegenden Anmeldung sind, Bezug genommen. In den Zeichnungen werden ähnliche Komponenten typischerweise von ähnlichen Zeichen gekennzeichnet, sofern sich nicht etwas anderes aus dem Zusammenhang ergibt. Die in der ausführlichen Beschreibung, Zeichnungen und Patentansprüchen beschriebenen Ausführungsbeispiele sollen nicht als Einschränkung gelten. Weitere Ausführungsformen können eingesetzt werden, und weitere Änderungen können gemacht werden, ohne ausserhalb des Umfangs des vorliegend beschriebenen Gegenstandes zu fallen. Es versteht sich, dass die allgemein beschriebenen und in den Zeichnungen veranschaulichten Aspekte der vorliegenden Erfindung ein breites Spektrum an verschiedenen Anordnungen, Ersätzen, Kombinationen und Konstruktionen zulassen, die allesamt ausdrücklich in die vorliegende Erfindung mit aufgenommen werden.
-
1 zeigt ein Ausführungsbeispiel einer Datenschnittstellenschaltung 100. Die dargestellte Datenschnittstellenschaltung 100 umfasst eine Reihe von Datenquellen 102, Eingabeblöcke 104, einen Schalterblock 106, Ausgabeblöcke 108 und Prozessorblöcke 110. Die Datenquellen 102 und die Eingabeblöcke 104 werden von einem Datenpfad 112 miteinander verkoppelt. Die Eingabeblöcke 104 und der Schalterblock 106 werden von einem Datenpfad 114 miteinander verkoppelt. Der Schalterblock 106 und die Ausgabeblöcke 108 werden von einem Datenpfad 116 miteinander verkoppelt. Die Eingabeblöcke 108 und der Schalterblock 110 werden von einem Datenpfad 118 miteinander verkoppelt. Die Eingabeblöcke 104, der Schalterblock 106 und Ausgabeblöcke 108 können in Kombination als Datenschnittstellenschaltung zum Empfang von Daten von den Datenquellen 102 über den Datenpfad 112 und zur Weiterleitung der Daten an entsprechende Prozessorblöcke über den Datenpfad 118 betrachtet werden. Hierbei ist anzumerken, dass jeder der einzelnen Pfade (als Linien dargestellt und nachfolgend als Unterpfade bezeichnet) in den Datenpfaden 112, 114, 116 und 118 mehrere Signalleitungen umfassen kann. Die Linien können asymmetrische oder differentielle elektrische Signale sein. In einer Ausführungsform handelt es sich bei den Prozessorblöcken 110 um Datensenken, die eine Mehrzahl Kerne eines Multicore-Prozessors oder eine Mehrzahl Speicherblöcke, die einem Multicore-Prozessor entsprechen, umfassen, die jeweils Daten aus einem entsprechenden Ausgabeschnittstellenblock innerhalb der Ausgabeblöcke 108 über den Datenpfad 118 empfangen. In einer Ausführungsform können die Komponenten der Datenschnittstellenschaltung 100 auf einer einzigen integrierten Schaltung oder FPGA ausgeführt werden. In einer weiteren Ausführungsform können die Komponenten der Datenschnittstellenschaltung 100 auf mehreren integrierten Schaltungen oder FPGA ausgeführt werden.
-
Die Eingabeblöcke umfassen Eingabeschnittstellenblöcke, die Pufferblöcke umfassen können und jeweils aus einer Datenquelle über Eingabepfade 112 empfangene Eingabedaten speichern. Gemäß einer Ausführungsform können die Puffer des Speicherelements als FIFO ausgeführt werden. Speicherelemente der Pufferblöcke der Eingabeschnittstelle leiten entsprechende Ausgaben an den Schalterblock 106 über Ausgabepfade 114 weiter. Datenquellen 112, die über Pfade 112 Daten übertragen, können Analog-zu-Digital-Umwandler (ADC) sein. Dadurch, dass Eingabeblöcke 104 vorgesehen sind, wird die Verbindung von ADC mit weit auseinandergehenden Samplefrequenzen mit ADC-Ausgangsspannungen ermöglicht. Ferner wird es durch dieses Verfahren einem ADC ermöglicht, dem Schalterblock 106 selbst dann Daten zuzusenden, wenn die Samplefrequenz des ADC (Frequenz, mit der der ADC digitale Ausgaben liefert) höher ist als die Betriebsgeschwindigkeit des Schalterblocks 106.
-
Analogerweise wird von den Zwischenspeicherelementen innerhalb von Ausgabeschnitstellen in den Ausgabeblöcken 108 der Betrieb der Kerne bei verschiedenen Taktraten ermöglicht. Jede Ausgabeschnittstelle der Ausgageblöcke 108 kann gemäß einem Ausführungsbeispiel als Ringspeicher ausgeführt werden. Die Tiefe der Ringspeicher des Ausgabepuffer kann je nach den gewünschten Betriebsfrequenzen der Kerne gewählt werden. Weiter unten wird eine Ausführungsform mit einem derartigen Ringspeicher unter Bezugnahme auf 4 beschrieben und erläutert. Generell ermöglicht es der Schalterblock 106, dass verschiedene ADC-Kanäle (Datenquellen 102) mit verschiedenen (und gewünschten) Ringspeichern der Ausgabeblöcke 108 und somit mit den Prozessorkerne der Prozessorblöcke 110 oder den Speicherstellen (allgemein: Zieldatenblöcke) verbunden sind. Der Schalterblock 106 empfängt Daten über die Pfade 114 von den Eingabeblöcken 104, und kann über den gewünschten/erforderlichen Pfad die Ausgaben in den Ausgabenpfaden 116 selektiv ausgeben. Zur Veranschaulichung können Daten, die von einem ersten Speicherelement in den Eingabeblöcken 102 über einen gewünschten Pfad in den Ausgabepfaden 116 an ein beliebiges Speicherelement innerhalb der Ausgabeblöcke 108 und somit an den gewünschten Prozessorkern innerhalb der Prozessorblöcke 110 geleitet werden. Ähnlich kann der Schalterblock 106 Daten über einen beliebigen Pfad der Datenfpade 114 an einen beliebigen Pfad der Datenpfade 116 weiterleiten. Der Betrieb des Schalterblocks 106 zur Leitung auf Pfaden in den Datenpfladen 114 und 116 empfangener Daten ringmäßig oder mit gleichmäßiger Gewichtung ausgestaltet werden. In einer Ausführungsform kann der Schalterblock 106 mit einem Fixpunkt-Raumschalter oder einem Floating-Point-Raumschalter versehen werden. Beim Raumschalter kann es sich, wie in 5b gezeigt, um einen Shuffle-Exchange-Koordinatenschalter mit N Stufen auf einem Banyan handeln. In noch einer weiteren Ausführungsform wird ein zweiter Raumschalter für den Fall des Ausfalls des ersten Raumschalters bereitgestellt. Ein Beispiel dieser Ausführungsform wird in 5c gezeigt, wo die Eingabeblöcke 104 und die Ausgabeblöcke 108 mit zwei vollständig verbundenen Raumschaltern 106a und 106b verbunden sind. In einer Ausführungsform ist der Raumschalter 106a eingeschaltet, während der Raumschalter 106b im Normalbetrieb ausgeschaltet ist. Wenn also der Raumschalter 106a ausfällt, wird der Raumschalter 106b als Ersatz für den ausgefallenen Raumschalter 106a eingeschaltet.
-
In einer Ausführungsform umfasst die Datenschnittstellenschaltung 100 einen mehrkanaligen Interrupt-Controller (nicht dargestellt), der einen Interrupt an den entsprechenden Kern in den Prozessorblöcken 110 sendet, wenn in einem entsprechenden Ringspeicher im Ausgabepufferblock neue Daten verfügbar sind. Einige Ausführungsformen der Datenschnittstellenschaltung 100 können ohne Ausgabeblöcke 108 ausgeführt werden. In derartigen Ausführungsformen können die Ausgaben des Schalterblocks 106 direkt an die jeweiligen Kerne der Prozessorblöcke 110 geleitet werden.
-
2 zeigt ein alternatives Ausführungsbeispiel einer Datenschnittstellenschaltung 200. Wie gezeigt, umfassen die Eingabenschnittstellenblöcke 104 der Datenschnittstellenschaltung 200 eine Mehrzahl Eingabepegelwandler LSi1, LSi2, ... LSin, die an eine Mehrzahl verteilter FIFO-Eingabepuffer DISTRIBUTED INPUT FIFO1, DISTRIBUTED INPUT FIFO2, ... DISTRIBUTED INPUT FIFOn gekoppelt sind. Wie gezeigt, umfassen die Eingabenschnittstellenblöcke 108 der Datenschnittstellenschaltung 200 eine Mehrzahl Ausgabepegelwandler LSo1, LSo2, ... LSon, die an eine Mehrzahl verteilter FIFO-Ausgabepuffer DISTRIBUTED OUTPUT FIFO1, DISTRIBUTED OUTPUT FIFO2, ... DISTRIBUTED OUTPUT FIFOn gekoppelt sind, die wiederum an eine Mehrzahl Reorder-Puffer RBI, RBI, ... RBn gekoppelt sind. Nachfolgend werden die in der in 2 dargestellten Ausführungsform der Datenschnittstellenschaltung 200 gezeigten Funktionen der Pegelwandler und Puffer erläutert.
-
Die Datenschnittstellenschaltungen 100 und 200 sind mit einem breiten Spektrum an Datenquellen (z. B., ADC-Ausgangsspannungen) vereinbar. Typischerweise liefern die Datenquellen 102 die Daten mit variablen Übertragungsraten, wie z. B. ADC, die mit verschiedenen Samplefrequenzen funktionieren, um analoge Eingabe aus der Aussenwelt zu empfangen und diese in digitale Datenstichproben umzuwandeln, die zur Verarbeitung durch den Mikroprozessor geeignet sind. Die digitalen Datenstichproben werden mit einer für jede Datenquelle spezifische Übertragunsrate ausgegeben. Unterschiedliche Datenquellen können weit auseinandegehende Samplefrequenzen aufweisen und stoßartig funktionieren. Ausserdem weisen die verschiedenen Datenquellen vermutlich auch verschiedene Spannungspegel auf. Die Stichproben mit variabler Spannung und Frequenz aus den verschiedenen Quellen werden in eine Frequenz und Spannung umgewandelt, die für den Multicore-Prozessor geeignet sind. Wie in 2 gezeigt, umfasst die Datenschnittstellenschaltung 200 Pegelwandler oder Spannungsebenenumsetzer. Die Pegelwandler LSo1, LSo2, ... LSon sind an die Ausgabe jeder der Datenquellen 102 gekoppelt.
-
Typischerweise liefern die Datenquellen Daten mit verschiedenen Spannungen und Übertragungsraten. In einem Betriebsbeispiel gibt der ADC digitale Datenstichproben bei einer Spannung von 3,3 Volt und einer Frequenz von 10 MHz aus. Die Pegelwandler wandeln die Spannung der digitalen Datenstichproben auf zwischen O V–1 V, damit sie mit der Spannung des Raumschalterblocks übereinstimmen. Der Schalterblock 106 funktioniert bei einer für minimalen Stromverbrauch optimierten Spannung. Die digitalen Datenstichproben, die eine Spannung zwischen 0 und 1 V aufweisen, kommen in die entsprechende Warteschlange des verteilten FIFO-Eingabepuffers. Die Umwandlung der Spannung von der ADC-Ausgangsspannung zu einem für den verteilten FIFO-Eingabepuffer 300a geeigneten Pegel erfolgt durch einen in der Nähe des verteilten FIFO-Puffers angeordneten Spannungspegelwandler. Der Spannungspegelwandler (LS) kann verschiedene Positionen in der Eingangsleitung einnehmen. In einer Ausführungsform (2) wird der LS vor dem verteilten FIFO-Puffer gezeigt. Ist die ADC-Ausgangsspannung niedrig, so kann der verteilte FIFO zwischen der variablen Datenquelle 102 und dem Pegelwandler angeordnet werden. In diesem Fall wird der Pegelwandler in der Nähe des Raumschalters 106 angeordnet.
-
In einer Ausführungsform werden FIFO-Puffer zur Umwandlung digitaler Datensamplefrequenzen eingesetzt. Bei diesen FIFO-Puffern kann es sich um verteilte FIFO-Puffer handeln, die hinsichtlich des Stromverbrauchs Vorteile gegenüber traditionellen lokalen FIFO-Puffern aufweisen. 3a ist ein veranschaulichendes Blockdiagramm eines verteilten FIFO-Puffers 302a, der von einem Pegelwandler 304a Eingaben empfängt und Ausgaben an einen Raumschalterblock ausgibt. In einer ausführungsform kann es sich beim Raumschalterblock um den Schalterblock 106, wie jeweils in den Datenschnittstellenschaltungen 100 und 200 der 1 und 2 gezeigt wird. Der verteilte FIFO-Puffer 302a weist entlang der Leitung 306a verteilte Speicherelemente auf. In einem Ausführungsbeispiel kann es sich bei den Speicherelementen um Register handeln. 3b ist ein veranschaulichendes Blockdiagramm eines verteilten FIFO-Puffers 302ba, wobei ein Pegelwandler 304b sich unter Teilen der verteilten FIFO-Puffersegmente 308b befindet. In dieser Ausführungsform können die FIFO-Puffer zwischen dem Pegelwandler 304b und dem ADC-Ausgang mit demselben Spannungspegel wie die ADC-Ausgangsspannung funktionieren, und die FIFO-Puffer zwischen dem Pegelwandler 304b und dem Raumschalterblock können mit demselben Spannungspegel wie der Schalterblock funktionieren.
-
Zum Vergleich ist 3c ist ein veranschaulichendes Blockdiagramm eines traditionellen konzentrierten FIFO-Puffers 302c, der von einem Pegelwandler 304b Eingaben empfängt und Ausgaben an einen Raumschalterblock ausgibt. Der konzentrierte FIFO-Puffer 302c weist entlang der Leitung 306c verteilte Speicherelemente 308c auf.
-
Die mithilfe eines verteilten FIFO-Puffers gegenüber einem konzentrierten FIFO-Puffer zu erzielenden Stromersparnisse sind auf den Unterschied hinsichtlich der Speisespannung und der Verteilung der Leitungskapazität zurückzuführen. Die zur Übertragung von N Wörtern über eine einzige Leitung für einen konzentrierten FIFO Cline erforderliche Energie ist die Kapazität der Leitung und: Vdd1 ist der Speisespannungspegel.
-
Andererseits lässt sich die zur Übertragung von N Wörtern über eine einzige Leitung für einen verteilten FIFO-Puffer erforderliche Energie wie folgt darstellen:
-
So gesehen lässt das Verhältnis der für einen verteilten FIFO-Puffer erforderlichen Energie zu der für einen konzentrierten FIFO-Puffer erforderliche Energie wie folgt darstellen:
-
Da die Leitungssegmentlängen zwischen den verteilten Speicherelementen kürzer ist als die Leitungslänge eines konzentrierten FIFO-Puffers, ist Vdd2 kleiner als Vdd1. Diese Faktor führt neben der Verteilung der Leitungskapazität zum geringeren Stromverbrauch der verteilten FIFO-Puffer gegenüber den traditionellen konzentrierten FIFO-Puffern.
-
Im Sinne der nachfolgenden Ausführungen wird auf eine Ausführungsform, bei der der verteilte FIFO der 3a innerhalb der Datenschnittstellenschaltung 100 der 1 allgemein Bezug genommen. Der Stromwirkungsgrad des verteilten FIFO liegt an dessen Fähigkeit, Datenwörter über mehrere kurze Strecken von der Datenquelle 302a zum Schalterblock 106 zu übertragen. Die Datenwörter werden zwischen mehreren kleinen FIFO-Puffern 308a übertragen. Die Kapazität zwischen jedem kleineren FIFO-Pufferelement ist ein Bruchteil der Kapazität. Zwischen der Datenquelle 102 und dem Schalterblock 106 kann die Datenquelle 102 Daten an den Pegelwandler 304a und von dem Pegelwandler 304a zu übertragen; so entstehen mehrere Pfade. Die Ausgabe des Pegelwandlers 304a kann auf mehreren Adressen innerhalb der verteilten FIFO-Puffer 308a geschrieben werden.
-
3 ist ein veranschaulichendes Blockdiagramm verschiedener Datenpfade einer Ausführungsform eines verteilten FIFO-Puffers. Konkret zeigt 3d zwei Datenpfade, die zu unterschiedlichen Stellen in den verteilten FIFO-Puffern führen. In einer Ausführungsform wird, sofern zwei Wörter geschrieben werden, das oberste Wort von W1 auf W2 übertragen. Hierzu gehört die Beladung einer ersten Segmentkapazität beim Schreiben auf einem ersten Teil der verteilten FIFO-Puffer, sowie die Beladung sowohl der ersten Segmentkapazität und einer zweiten Segmentkapazität beim Schreiben auf dem zweiten teil der verteilten FIFO-Puffer. 3e ist ein veranschaulichendes Diagramm, in dem gezeigt wird, wie zu mehreren Teilen eines verteilten FIFO-Puffers die Beladung einer ersten Segmentkapazität beim Schreiben auf einem ersten Teil der verteilten FIFO-Puffer, sowie die Beladung sowohl der ersten Segmentkapazität und einer zweiten Segmentkapazität beim Schreiben auf dem zweiten teil der verteilten FIFO-Puffer gehört. 3e ist ein veranschaulichendes Diagramm, in dem gezeigt wird, wie mehrere Abschnitte eines verteilten FIFO-Puffers miteinander verbunden werden können, um einen vollständigen verteilten FIFO-Puffer auszubilden. Wie gezeigt, weisen die verschiedenen Abschnitte der verteilten FIFO-Puffer jeweils eine Mehrzahl Stellen auf, die mehrere Datenpfade ermöglichen.
-
Für M Anzahlen paralleler Pfade, durch die die Datenquelle 102 auf den verteilten FIFO-Puffern schreiben kann, lässt sich die Übertragungsenergie wie folgt darstellen: E = p1 1 / 4CsV 2 / DD1 + p2 1 / 4(2Cs)V 2 / DD1 + p3 1 / 4(3Cs)V 2 / DD1 ... + pm 1 / 4(mCs)V 2 / DD1, (5) wobei pi die Wahrscheinlichkeit darstellt, dass eine Datenübertragung über einen bestimmten Datenpfad i erfolgt, Cs die Kapazität am jeweiligen Segment darstellt, und VDD die Speisespannung aus der Datenquelle 102 darstellt. Wie oben erwähnt kann eine Ausführungsform der verteilten FIFO-Puffer 308d stromsparende Vorteile gegenüber herkömmlichen FIFO-Puffern aufweisen.
-
Der reduzierte Stromverbrauch resultiert aus mehreren Faktoren wie z. B. reduzierter Kapazität und Speisespannung. Erstens, da der Pegelwandler 304d vor den verteilten FIFO-Puffern 308d angeordnet ist, kann die Spannung, bei der die Eingabedatenwörter geschrieben werden, niedriger sein als die Ausgangsspannung der Datenquelle 102. Zweitens, da die Datenwörter zwischen den Segmenten der verteilten FIFO-Puffer 308d Teilstrecken zurücklegen, wird die gesamte Leitungskapazität um einen Faktor C/N reduziert, wobei N die Anzahl gesonderter Pufferelemente in den verteilten FIFO-Puffern 308d darstellt. Die niedrigere Kapazität führt zu einer Reduzierung der zur Übertragung von Daten über eine einzelne Teilstrecke erforderlichen Energie um einen Faktor N. Drittens können die Datenübertragungselemente mit niedriger Differenzspannung zwischen jedem Segment der verteilten FIFO-Puffer 308d asymmetrisch sein, wodurch der Stromverbrauch weiter reduziert wird. 3f ist ein veranschaulichendes Blockdiagramm, in dem die Segmente eines über differentielle Signalübertragung angebundenen verteilten FIFO-Puffers, was zu einem niedrigeren Stromverbrauch und höheren Übertragungsraten führt. In dieser Ausführungsform kann die Schnittstelle zwischen den Segmenten ferner in einer parallelen Differentialkonfiguration vorliegen, wodurch die Übertragungsrate über eine serielle Differentialschnittstelle erhöht wird.
-
In einem realistischen Szenario kann die Wahrscheinlichkeit des Schreibens auf einem ersten Teil der verteilten FIFO-Puffer höher sein als die des Schreibens auf einem zweiten Teil der verteilten FIFO-Puffer, usw. In einem Ausführungsbeispiel gilt p1 = 0,8, P2 = 0,1, p3 = 0,04 und p4 = 0,01. In diesem Fall, sofern auf den Segmenten 2, 3 und 4 zu schreiben wäre, erschienen die zur Beladung der Segmente erforderliche zusätzliche Kapazität sowie der zusätzliche Energieverbrauch als Spitzen im Stromsignal.
-
Zur weiteren Erläuterung des reduzierten Energieverbrauchs eines verteilten FIFO-Puffers wird eine mathematische Ableitung gezeigt, in der der Energieverbrauch eines herkömmlichen FIFO-Puffers und der eines verteilten FIFO-Puffers, die jeweils in einem Multi-Hop-Netzwerk, das einem Raumschalter eine Ausgabe zuleitet, miteinander verglichen werden. Der Energieverbrauch eines herkömmlichen FIFO-Puffers lässt sich wie folgt darstellen:
wobei N die Anzahl zu schreibender Wörter, C
L die gesamte Leitungskapazität (einschließlich N Segmente), C
S die Kapazität eines einzelnen Segments und V
DD den Signalspannungspegel darstellt.
-
Zur Ermittlung des Energieverbrauchs eines verteilten FIFO-Puffers nach einer Ausführungsform der vorliegenden Erfindung wird davon ausgegangen, dass die zum Schreiben eines einzigen Worts erforderliche Energie zwei Komponenten umfasst. Bei der ersten Komponente handelt es sich um die zum Schreiben in den verteilten FIFO-Puffer erforderliche Energie, und bei der zweiten Komponente handelt es sich um die zur Übertragung eines Datenworts auf das äußere Ende des verteilten FIFO-Puffers erforderliche Energie. Dementsprechen lässt sich der Energieverbrauch eines verteilten FIFO-Puffers wie folgt darstellen:
![Figure 00130002](https://patentimages.storage.googleapis.com/26/fd/0c/88ed136933e2be/00130002.png)
wobei N die Anzahl zu schreibender Wörter, CL die Leitungskapazität und k die k-ste Datenquelle mit variabler Geschinwindigkeit darstellt, die den verteilten FIFO beliefert. Für eine einheitliche Verteilung der Übertragungswahrscheinlichkeit, wobei jedes Segment mit gleicher Wahrscheinlichkeit ein Wort überträgt, ist die Wahrscheinlichkeit des Übertragungs eines Wortes durch jedes Segment aus einer Gesamtmenge von N Wörtern p = 1/N – 1.
-
So gesehen lässt das Verhältnis des Energieverbrauchs eines verteilten FIFO-Puffers zum Energieverbrauch eines konzentrierten FIFO-Puffers wie folgt darstellen:
wobei k die Anzahl Datenquellen mit variabler Geschwindigkeit und der Faktor (N – k)·C
L die Kapazität der eingeschlossenen Segmente darstellt. Aufgrund der zur Be- bzw. Entladung beim Schreiben auf einem Puffer erforderlichen geringeren Kapazität lässt sich V
DD2 als (1 – κ)·V
DD darstellen. Die Größe κ ist ein Faktor, der die Reduzierung der Speisespannung im Falle der Einfgung eines verteilten FIFO gegenüber einem herkömmlichen FIFO berücksichtigt.
-
Sollten die Kapazitätsausdrücke im Zähler des Energieverbrauchsverhältnisses vorherrschen, ist die zum Schreiben auf dem verteilten FIFO erforderliche Energie geringer als die zur Übertragung der Daten erforderliche Energie um den Faktor B, wobei B ≤ 0,5. So kann die Gleichung 8 wie folgt weiter vereinfacht werden:
-
Unter Ausgleich von V
DD 2 aus dem Nenner und Zähler des ersten Ausdrucks ergibt sich dann:
-
Im Falle einer großen Menge N verteilter FIFO-Segmente gilt κ ≈ 0,9, und dementsprechend liegt das Energieverbrauchsverhältnis bei etwa 0,81 × 0,5 × 1,5 = 0,6. Mit anderen Worten lässt sich eine 40%ige Reduktion des Energieverbrauchs durch den Einsatz verteilter FIFO-Puffer mit einer großen Anzahl Segmente erzielen. Zusammengefasst heißt dies, dass für eine einheitliche Verteilung der Übertragungswahrscheinlichkeit ein verteilter FIFO-Puffer mit Leitungssegmenten zwischen den Puffer zur Datenübertragung weniger Strom benötigt als ein herkömmlicher FIFO-Puffer mit einer einzigen, längeren Übertragungsleitung.
-
In einer Ausführungsform wandeln die verteilten FIFO-Eingabepuffer die digitalen Datenstichproben mit variabler Frequenz (z. B. 8 MHz) in digitale Stichproben mit fester Frequenz um. Die feste Frequenz kann eine Frequenz von 25 MHz sein. Die feste Frequenz kann eine mit dem Raumschalterblock vereinbare Frequenz sein. Der Raumschalterblock leitet den i-sten ADC-Kanal dem Kern zu. Der Raumschalterblock kann mehrere unabhängige Kanäle unterstützen. Beispielsweise kann der Raumschalterblock Eingaben von 8 ADC empfangen und die 8 Eingaben gleichzeitig dem jeweiligen Kern zuleiten. Zur weiteren Reduzieren des Energieverbrauchs können die auf den Leitungssegmenten zwischen den Puffer übertragenen Daten auf Gray-Codierung oder Bitumkehrung basieren. Dementsprechen können die verteilten FIFO-Segmenten in einer weiteren Ausführungsform mit einem Pegelwandler verbunden sein, der stromsparende Gray-codierte Codierer und Decodierer einsetzt.
-
3g zeigt ein Zeitdiagramm 330 für die Komponenten der Eingabeblöcke 104 der 1 und 2. Das Zeitdiagramm 330 zeigt einen ADC-Write-Clock 332, der die Geschwindigkeit, mit der die Daten in verteilte FIFO-Eingabepuffer geschrieben werden, bestimmt, ein entsprechendes ADC-Ausgabedatensignal 334, der die
in die verteilten FIFO-Eingabepuffer geschriebenen Daten darstellt, einen entsprechenden Read-Clock 336 eines verteilten FIFO-Eingabepuffers, der mit der Schaltuhr des Schalters 106 übereinstimmt und einen Read-Clock 338 des Schalters, der das Ablesen von Daten aus den verteilten FIFO-Eingabepuffern durch den Schalter 106 andeutet.
-
Wie in 1 und 2 gezeigt wird jede Ausgabe (digitale Datenstichproben mit einer Frequenz von 25 MHz und einer Spannung zwischen 0 und 1 V) des Raumschalterblocks einem verteilten FIFO-Ausgabepuffer zugespeist. Da jeder Kern des Multicore-Prozessors mit einer anderen Frequenz funktioniert, wandelt der verteilte FIFO-Ausgabepuffer die digitalen Datenstichproben mit fester Frequenz in eine mit dem entsprechenden Kern des Multicore-Prozessors vereinbare Frequenz um.
-
3h ist ein veranschaulichendes Blockdiagramm verteilter FIFO-Puffersegmente 340, 342, jeweils umfassend zwei Speicherelemente, die über einen Interconnectbus 346 miteinander verbunden sind. In dieser Ausführungsform weist jedes Segment einen 3-Bit-Identifier auf, wobei das erste Bit die Segmentnummer darstellt und das zweite und dritte Bit die Stellen innerhalb des Segments darstellen. 3i ist ein veranschaulichendes Flussdiagramm des Fortschritts eines Datums durch die verteilten Puffersegmente (für jedes der beiden Speicherelemente) zum Schalterblock 106. Wie gezeigt wird das Datum auf das nächste Segment übertragen, sobald ein Puffersegment voll ist.
-
Hierbei ist anzumerken, dass jeder Kern selbst mit den verschiedenen Frequenzen funktioniert, und die verschiedenen Kerne mit verschiedenen Frequenzen funktionieren, da jeder Kern auf eine bestimmte Spannung und Frequenz durch einen DVFS-Controller abgestimmt ist. Ferner werden die von den verteilten FIFO-Ausgabepuffern ausgegebenen digitalen Datenstichproben einem Pegelwandler zugespeist. Der Pegelwandler wandelt die mit den digitalen Datenstichproben verbundene Spannung (0 bis 1 V) in eine mit dem entsprechenden Kern des Multicore-Prozessors vereinbare Spannung um. Die digitalen Datenstichproben, die eine geeignete Frequenz und Spannung aufweisen, kommen in die Warteschlange des Reorder-Puffers.
-
4a ist ein veranschaulichendes Blockdiagramm 400 eines über einen Reorder-Puffer 404 an einen Prozessorkern 406 gekoppelten FIFO-Ausgabepuffers 402. Der Reorder-Puffer ist fakultativ, und die Stromdatenschnittstellenschaltung benötigt u. U. keinen Reorder-Puffer; stattdessen werden in diesem Fall die digitalen Datenstichproben aus dem Pegelwandler direkt an den entsprechenden Kern des Multicore-Prozessors weitergeleitet. Die Wichtigkeit eines Reorder-Puffers nach dem Pegelwandler besteht darin, dass der Reorder-Puffer die Verarbeitung anstehender digitaler Datenstichproben durch den entsprechenden Kern in einer anderen Reihenfolge (Departure- oder Ablesesequenz) als die Schreib- bzw. Arrival-Sequenz (mit der die Stichproben geschrieben wurden) ermöglicht. 4b ist eine schematische Darstellung eines Beispiels eines Reorder-Puffers, der eine Schreibzeigerein- und -ausgabe aufweist. 4c zeigt dementsprechend ein Beispiel eines Reorder-Puffers, in der die Umordnung der Schreibzeigereingabe für Ausgabe gezeigt wird. 4d ist ein Veranschaulichungsbeispiel des Schreibens und Ablesens eines Reorderpuffers, der N Eingangsports und N Ausgangsports aufweist. In einer weiteren Ausführungsform können die Reorder-Puffer unter Einsatz von Multiplexern 108a überbrückt werden, wie in 4e gezeigt.
-
Wenn jedoch die Sequenz der digitalen Datenstichproben unwichtig ist, kann der Reorder-Puffer aus der Datenschnittstellenschaltung ausgelassen werden. Auf diese Weise werden die digitalen Datenstichproben aus den ADC von der Datenschnittstellenschaltung verarbeitet, die die verarbeiteten Datenstichproben dem entsprechenden Kern des Multicore-Prozessors zur Verarbeitung zuleitet.
-
5 ist ein veranschaulichendes Blockdiagramm eines Ausgabepufferblocks mit Fehlercodekorrektur (ECC) und niedrigerem Stromverbrauch. In einer Ausführungsform codiert der Schalterblock 106 (durch den in 5a gezeigten Codiererblock 502) die empfangenen Daten als Eingabe (Pfad 116) in einen Datenstring, um die Anzahl Bitübergänge zu minimieren. Dies hat den Vorteil eines geringeren Stromverbrauchs bei der Datenübertragung (aufgrund der reduzierten Anzahl Bitübergänge). In einer Ausführungsform wendet der Codiererblock 502 Run-Length-Codierung an. In einer weiteren Ausführungsform wendet der Codiererblock 502 Gray-Codierung an.
-
Um eine zuverlässigere Datenübertragung auf die Zielgeräte zu gewährleisten, können die Datenschnittstellenschaltungen 100 und 200 der 1 und 2 jeweils so konstruiert werden, dass das Daten-Striping-Verfahren anwenden. Wie in 5a gezeigt, werden die von einer einzigen Datenquelle (z. B. ADC) ermpfangenen logisch sequentiellen Daten über den Schalterblock 106 mehreren Ringspeichern (FIFO) im Ausgabepufferblock zugeleitet, d. h. aufeinander folgende Datenwörter m, m + 1, m + 2 bis hin zu m + k aus der Datenquelle werden über das FIFO-Array im Ausgabepufferblock gestript.
-
In 5a wird davon ausgegangen, dass die Daten über vier der FIFO im Ausgabepufferblock gestript werden, wobei aufeinander folgende Datenwörter (oder allgemein Dateneinheiten) m, m + 1, m + 2 und m + 3 aus derselben Quelle durch den Schalterblock 106 vier verschiedenen FIFO zugeleitet werden. Der entsprechende Kern (im Beispiel MP1) kann die schließlichen Datenwörter aufgrund der Information, dass die erste Dateneinheit in die 2. Stelle des ersten FIFO, die 2. Dateneinheit in die 3. Stelle des zweiten FIFO geschrieben wird, usw. wiederherstellen.
-
Der ECC-FIFO im Ausgabepufferblock 108 speichert einen vom Codiererblock 502 empfangenen Fehlerkorrekturcode (z. B. Paritätsbits), der den vier Dateneinheiten m bis m + 3 entspricht, und ermöglicht eine Vorwärtsfehlerkorrektur (FEC) im Kern MP1 selbst dann, wenn die Fehler in einer oder mehreren der vier Dateneinheiten auftreten. Mehr als ein ECC-FIFO kann vorgesehen werden, um Daten aus mehreren ADC aufnehmen zu können. Ähnlich den obigen Ausführungen können die Codierung und das Daten-Striping für Daten erfolgen, die aus allen Datenquellen empfangen werden.
-
In einer Ausführungsform enthält der Eingabeblock 104 der Datenschnittstellenschaltung 100 der 1 einen Parallel-zu-Seriell-Umwandler 602, einen Seriell-zu-Parallel-Umwandler 608 sowie Differentialrepeater 604 und 606, wie in 6 gezeigt. Der Parallel-zu-Seriell-Umwandler 602 empfangt Daten im Parallelformat aus einer Daten quelle und gibt die Daten in serieller Differentialform wieder aus. Die Daten in serieller Differentialform können über meherere Differentialrepeaterstufen (in 6 als mehrstufiger Differentialrepeater 604 dargestellt) übertragen und in asymmetrische Form durch einen differential-asymmetrischen Umwandler 606 in asymmetrische Form umgewandelt werden. Der Seriell-zu-Parallel-Umwandler 608 wandelt die asymmetrische Ausgabe des differential-asymmetrischen Umwandlers 606 um und leitet die Daten im Parallelformat dem Eingabepufferblock zu. In 6 werden Verbindungen gezeigt, die nur einem Datenpfad entsprechen und für soviele Datenquellen/-pfade nachgemacht werden wie die Datenschnittstellenschaltung 100 sie unterstützt. Der Stromverbrauch wird aufgrund der bei der Übertragung der Daten in differentiell-serieller Form eingesetzten stromsparenden Signalübertragung reduziert. In einer Ausführungsform wird die Energieeinsparung bei minimaler Komplexität optimiert, wenn die Anzahl Prozessoren im Prozessorblock 110 zwischen sechs und acht liegt.
-
7a ist ein Ausführungsbeispiel 700 des Schalterblocks 106, der eine N-mal-N-Kreuzschiene 704 verwendet. Die N-×-N-Kreuzschiene 704 empfangt Eingaben über einen Datenpfad 114 und gibt über die Datenpfade 116 eine Ausgabe aus. In dieser Ausführungsform wird der Schalterblock 106 als nichtblockierender Schalter ausgeführt, d. h., er verfügt jederzeit im Betrieb über genügend freie Pfade, dass eine Eingabe immer an der Ausgabe geliefert werden kann. Unter der Voraussetzung, dass die Datenpfade 114 und 116 jeweils N Unterfpade enthalten (die jeweils so breit sind wie die Datenbreite der Datenquelle (ADC)), kann ein beliebiger Unterpfad in den Eingabepfaden 114 mit einem gewünschten Unterpfad in den Ausgabedatenpfaden 116 verbunden werden. Der Betrieb der Schalter SW1 bis SWn im Ausführungsbeispiel führt zur Verbindung des IN-Unterpfades 1 mit einem beliebigen Unterpfad in den Datenpfaden 116. 7b zeigt eine 4×4-Kreuzschiene 730 mit den Ein- und Ausgangsports, und 7c zeigt die 4×4-Kreuzschiene 730 mit zwei gleichzeitigen Datenflüssen. Wie gezeigt, ermöglicht es eine Ausführungsform der Kreuzschiene, dass ein beliebiger der N Eingabeports mit einem beliebigen der N Ausgabeports verbunden wird, und ermöglicht so das Bestehen mehr als einer Verbindung auf einmal. Die N×N-Kreuzschiene 704 der 7a kann eine erweiterte Ausführung der 4×4-Kreuzschiene 730 sein.
-
Ein weiteres Ausführungsbeispiel des Schalterblocks 106 mit einem Shuffle-Exchange-Netzwerk (S/E) 800 zeigt 8a. In einer Ausführungsform kann das S/E-Netzwerk 800 mit Kreuzschienen ausgeführt werden. In dieser Ausführung ermöglicht es das S/E-Netzwerk, dass ein beliebiger Eingabeknoten mit einem beliebigen Ausgabeknoten verbunden wird, und ermöglicht so die Herstellung einer großen Anzahl gleichzeitiger Verbindungen. Jede Kreuzschiene ermöglicht die Leitung mehrerer Ströme innerhalb des Shuffle-Exchange-Netzwerks. 8b ist ein Beispiel eines Datenpfads der Ausführung des Schalterblocks als S/E-Netzwerk.
-
Der als S/E-Netzwerk ausgeführte Schalterblock 106 hat den Vorteil eines geringeren Stromverbrauchs im Vergleich zur Ausführung als Kreuzschiene; diese Ausführung weist ebenfalls eine bessere Skalierbarkeit auf, die die Aufnahme von mehr Prozessorkernen und Eingabedatenquellen ermöglicht. Gemäß noch einer Ausführungsform kann der Schalterblock 106 als Benes-Netzwerk ausgeführt werden. Um die Funktionsfähigkeit der Datenschnittstellenschaltung 100 der 1 noch weiter zu verbessern, kann eine Ditherstufe am Eingabeblock 104 oder dem Ausgabeblock 108 eingefügt werden.
-
9 ist ein Blockdiagramm eines Beispiels einer Rechenvorrichtung 900, die erfindungsgemäß für Datenschnittstellen-Multipath-Routing angeordnet ist. In einer sehr rudimentären Konfiguraton 901 umfasst die Rechenvorrichtung 900 typischerweise einen oder mehrere Prozessoren 910 und einen Systemspeicher 920. Ein Speicherbus 930 kann zur Kommunikation zwischen dem Prozessor 910 und dem Systemspeicher 920 eingesetzt werden.
-
Je nach der gewünschten Konfiguration kann es sich beim Prozessor 910 um einen Prozessor einer beliebigen Art, insbesondere um einen Mikroprozessor (μP), einen Mikrocontroller (μθ), einen digitalen Signalprozessor (DSP), oder eine beliebigen Kombination davon handeln. Der Prozessor 910 kann eine oder meherere Zwischenspeicherstufen umfassen, z. B. eine Cache einer ersten Stufe 911 und eine Cache einer zweiten Stufe 912, einen Prozessorkern 913 und Register 914. Der Prozessorkern 913 kann ein Rechenwerk (ALU), einen Fließkommaprozessor (FPU), einen DSP-Kern oder eine beliebige Kombination davon umfassen. Ein Speichercontroller 915 kann auch mit dem Prozessor 910 eingesetzt werden, oder aber kann es sich beim Speichercontroller 915 in einigen Ausführungen um einen internen Teil des Prozessors 910 handeln.
-
Je nach der gewünschten Konfiguration kann es sich beim Systemspeicher 920 um einen Systemspecicher einer beliebigen Art, insbesondere um einen flüchtigen Speicher (z. B. RAM), nicht flüchtigen Speicher (z. B. ROM, Flash-Speicher, usw.), oder eine beliebigen Kombination davon handeln. Typischerweise umfasst der Systemspeicher 920 ein Betriebssystem 921, eine oder mehrere Anwendungen 922 und Programmdaten 924. Die Anwendung 922 umfasst einen Multipath-Datenschnittstellenverarbeitungsalgorithmus 923, der bis ... angeordnet ist. Die Programmdaten 924 umfassen Multipath-Routing-Daten 925 der Datenschnittstelle, die zur Unterstützung der Datenerfassung aus einer großen Anzahl Quellen mit verschiedenen Spannungsbereichen und Frequenzen nützlich ist, wie weiter unten beschrieben wird. In einigen Ausführungsbeispielen kann die Anwendung 922 derart angeordnet werden, dass sie mit Programmdaten 924 auf einem Betriebssystem 921 funktioniert, so dass eine große Anzahl Quellen mit verschiedenen Spannungsbereichen und Frequenzen unterstützt werden kann. Diese beschriebene Grundkombination wird in 9 durch die Komponenten innerhalb der gestrichelten Linie 901 veranschaulicht.
-
Die Rechenvorrichtung 900 kann weitere Merkmale oder Funktionen, sowie zusätzliche Schnittstellen zur Ermöglichung der Kommunikation zwischen der Grundkonfiguration 901 und etwaigen erforderlichen Geräten und Schnittstellen aufweisen. Beispielsweise kann ein Bus-/Schnittstellencontroller 940 zur Ermöglichung der Kommunikation zwischen der Grundkonfiguration 901 und einem oder mehreren Datenspeichergeräten 950 über einen Speicherschnittstellenbus 941 eingesetzt werden. Bei den Datenspeichergeräten 950 kann es sich um Wechselspeicher 951, nicht-entfernbare Speichergeräte 952 oder eine Kombination davon handeln. Beispiele von Wechsel- und nicht erntfernbaren Speichergeräten sind insbesondere Magnetplattengeräte wie z. B. Diskettenlaufwerke und Festplatten (HDD), optische Laufwerke wie z. B. CD-Laufwerke oder DVD-Laufwerke, Solid-State-Laufwerke (SSD) und Bandlaufwerke. Zu Beispielen von Computerspeichermedien gehören insbesondere flüchtige und nicht flüchtige, abnehmbare und nicht abnehmbare Medien, die in einem beliebigen Verfahren bzw. Technologie zur Speicherung von Informationen wie z. B. computerlesbaren Anweisungen, Datenstrukturen, Programmmodulen und sonstigen Daten ausgeführt sind.
-
Der Systemspeicher 920, der Wechselspeicher 951 und der nicht abnehmbare Speicher 952 sind alle Beispiele von Computerspeichermedien. Zu den Computerspeichermedien gehören insbesondere RAM, ROM, EEPROM, Flash-Speicher oder eine sonstige Speichertechnologie, CD-ROM, DVD oder sonstige optische Speichergeräte, Magnetkassetten, Magnetbänder, Plattenspeicher oder sonstige magnetische Speichergeräte sowie ein beliebiges anderes Medium, das zur Speicherung der gewünschten Daten engesetzt werden kann und auf den die Rechenvorrichtung 900 zugreifen kann. Ein beliebiges Computerspeichermedium dieser Art kann Teil der Vorrichtung 900 sein.
-
Die Rechenvorrichtung 900 kann auch einen Schnittstellenbus 942 zur Kommunikation verschiedener Schnittstellengeräte (z. B. Ausgabeschnittstellen, Peripherieschnittstellen und Kommunikationsschnittstellen) mit der Grundkonfiguration 901 über den Bus-/Schnittstellencontroller 940 umfassen. Zu den Ausgabeschnittstellen 960 gehören insbesondere Graphikprozessoren 961 und Audioprozessoren 962, die derart konfiguriert werden können, dass sie über einen oder mehrere A/V-Ports 963 mit verschiedenen externen Geräten, z. B. Anzeige oder Lautsprecher, kommunizieren können. Zu den Peripherieschnittstellen 960 gehören insbesondere serielle Schnittstellencontroller 971 oder parallele Schnittstellencontroller 972, die derart konfiguriert werden, dass sie über einen oder mehrere I/O-Ports 973 mit externen Geräten (z. B. Tastatur, Maus, Stift, Spracheingabegerät, Touch-Eingabegerät, usw.) oder sonstigen Peripheriegeräten kommunizieren können. Zu den Beispielen von Kommunikationsschnittstellen 980 gehören insbesondere Netzwerkcontroller 981, die derart angeordnet werden können, dass sie die Kommunikation mit einer oder mehreren Rechenvorrichtungen 990 über eine Netzwerkkommunikation über einen oder mehrere Kommunikationsports 982 ermöglichen. Die Kommunikationsverbindung ist ein Beispiel eines Kommunikationsmediums. Kommunikationsmedien sind typischerweise durch computerlesbare Anweisungen, Datenstrukturen, Programmmodule oder sonstige Daten in einem modulierten Datensignal, z. B. Trägerwellen oder sonstige Übertragungsmechanismen, verkörpert; hierzu gehört ein beliebiges Datenübertragungsmedium. Bei einem ”modulierten Datensignal” kann es sich um ein Signal handeln, bei dem ein oder mehrere Merkmale derart eingestellt bzw. verändert werden, dass sie in das Signal Daten codieren. Beispielsweise gehören zu den Kommunikationsmedien insbesondere drahtgebundene Medien, z. B. drahtgebundene Netzwerk bzw. direkt verdrahtete Verbindung, sowie drahtlose Medien, z. B. akustische, Radiofrequenz-(RF), Infrarot-(IR) und sonstige drahtlose Medien. Unter ”computerlesbares Medium” können vorliegend sowohl Speicher- als auch Kommunikationsmedien verstanden werden.
-
Die Rechenvorrichtung 900 kann als Teil eines tragbaren (bzw. mobilen) elektronischen Small-Form-Factor-Geräts wie z. B. ein Handy, PDA, PMP, ein drahtloses Web-Watch-Gerät, ein persönliches Kopfhörergerät, ein anwendungsspezifisches Gerät oder ein hybrides Gerät, in das beliebige der vorstehenden Funktionen integriert sind, ausgeführt werden. Die Rechenvorrichtung 900 kann auch als PC ausgeführt werden, wobei sowohl Notebook- als auch Desktop-Konfigurationen zulässig sind. Vorliegend ist der Ausdruck ”eine Ausführungsform” o. ä. dahingehend auszulegen, dass ein in Verbindung mit der Ausführungsform beschriebenes bestimmtes Merkmal bzw. Struktur in mindestens einer Ausführungsform vorliegt. Der Ausdruck ”in einer Ausführungsform” o. ä. beziehen sich also nicht unbedingt auf dieselbe Ausführungsform.
-
Vorliegend sind zwar verschiedene Aspekte und Ausführungsforme offenbart worden; weitere Aspekte und Ausführungsformen sind jedoch für den Fachmann ersichtlich. Die vorliegend beschriebenen verschiedenen Aspekte und Ausführungsformen dienen lediglich der Veranschaulichung, und sind nicht als Einschränkung aufzufassen; der wahre Umfang der Erfindung geht aus den nachfolgenden Patentansprüchen hervor.
-
Die vorliegende Erfindung wird nicht durch die einzelnen vorliegend beschriebenen Ausführungsformen beschärnkt; diese sollen lediglich verschiedene Aspekte veranschaulichen. Zahlreiche Modifikationen und Varianten der Erfindung können vom Fachmann ohne Abweichung vom Geist und Umfang der Erfindung ausgeführt werden. Funktional gleichwertige Verfahren und Vorrichtungen innerhalb des Umfangs der Beschreibung sind neben den vorliegend aufgezählten dem Fachmann aufgrund der vorstehenden Beschreibung ersichtlich. Derartige Modifikationen sollen vom Umfang der beigefügten Patentansprüche mit umfasst werden. Deshalb wird die Erfindung lediglich durch den Wortlaut der beigefügten Patentansprüche sowie den vollen Umfang der den Patentansprüchen entsprechenden Äquivalenten eingeschränkt. Hierbei versteht sich, dass die vorliegende Beschreibung nicht auf konkrete Methoden, Reagenzien, Verbindungen, Zusammensetzungen oder biologische Systeme beschränkt; diese können natürlich variieren. Ebenfalls versteht sich, dass die vorliegend verwendeten Begriffe lediglich der Beschreibung einzelner Ausführungsformen dienen und nicht als Einschränkung gelten soll.
-
Hinsichtlich der Verwendung im Wesentlichen jeder Plural- bzw. Singularform kann der Fachmann dem Zusammenhang und/oder der Anwendung entsprechend die Plural- und Singularformen austauschen (und umgekehrt). Die verschiedenen Singular/Pluralvarianten können der Klarheit halber vorliegend ausdrücklich erwähnt werden.
-
Dem Fachmann ist klar, dass die vorliegend verwendeten Begriffe generell, und besonders die in den beigefügten Patentansprüchen (z. B. beigefügte Patentanspruchsgruppen) verwendeten Begriffe generell als ”offene” Begriffe gelten sollen (z. B. ”einschließlich” o. ä. ist ohne Einschränkung aufzufassen; ”aufweisen” ist als ”mindestens aufweisen” zu verstehen, usw.). Ferner versteht der Fachmann, dass, sofern eine konkrete Anspruchsnummer gemeint ist, diese ausdrücklich im Anspruchswortlaut erwähnt wird, und ansonsten keine derartige Absicht vorliegt. Zum besseren Verständnis können die nachfolgend beigefügten Patentansprüche die einleitenden Ausdrücke ”mindestens ein” und ”ein oder mehrere” zur Einleitung von Bestandteile der Ansprüche enthalten. Die Verwendung dieser Ausdrücke ist jedoch nicht dahingehend auszulegen, dass die Einleitung eines Anspruchsteils durch die unbestimmten Artikel ”ein(e)” einen bestimmten diese enthaltenen Anspruch auf Ausführungsformen mit nur einem der aufgeführten Gegenstande beschränken soll, und zwar selbst dann, wenn derselbe Anspruch die Einleitungsausdrücke ”ein(e) oder mehrere” oder ”mindestens eine(e)” und unbestimmte Artikel wie ”ein(e)” (z. B. ”ein(e)” ist als ”mindestens ein(e)” oder ”ein(e) oder mehrere”) aufzufassen) enthält; gleiches gilt für die Verwendung der bestimmten Artikel zur Einleitung von Anspruchsteilen. Ferner gilt: Selbst wenn eine konkrete Anzahl eines eingeleiteten Anspruchsteils ausdrücklich aufgeführt wird, erkennt der Fachmann, dass diese Aufführung dahingehend auszlegen ist, dass mindestens die aufgeführte Anzahl gemeint ist (z. B. die bloße Aufzählung ”zwei Teile” ohne weitere Modifikation heißt mindestens zwei Teile, oder zwei oder mehr Teile). Ausserdem gilt: In den Fällen, in denen ein Ausdruck wie ”mindestens ein(e) von A, B und C” usw. verwendet wird, ist der Ausdruck generell so aufzufassen, wie es vom Fachmann verstanden würde (z. B. ”ein System, das mindestens eines von A, B und C aufweist” schlöße insbesondere Systeme mit nur A, nur B, nur C, A und B zusammen, A und C zusammen, B und C zusammen und/oder A, B und C zusammen, usw. mit ein). In den Fällen, in denen ein Ausdruck wie ”mindestens ein(e) von A, B oder C” usw. verwendet wird, ist der Ausdruck generell so aufzufassen, wie es vom Fachmann verstanden würde (z. B. ”ein System, das mindestens eines von A, B oder C aufweist” schlöße insbesondere Systeme mit nur A, nur B, nur C, A und B zusammen, A und C zusammen, B und C zusammen und/oder A, B und C zusammen, usw. mit ein). Ferner versteht der Fachmann, dass beinahe jeder trennende Audruck, in dem zwei oder mehr alternative Begriffe enthalten sind, gleich ob in der Beschreibung, den Ansprüchen oder den Zeichnungen so zu verstehen ist, dass die Möglichkeit des Vorliegens eines der Begriffe, jedwedes der Begriffe oder beider Begriffe besteht. Beispielsweise ist ”A oder B” so zu verstehen, dass ”A” oder ”B” oder ”A und B” umfasst sind.
-
Ausserdem: Werden Merkmale oder Aspekte der Beschreibung als Markush-Gruppen beschrieben, erkennt der Fachmann, dass die Beschreibung hinsichtlich eines beliebigen einzelnen Mitglieds oder einer beliebigen einzelnen Untergruppe von Mitgliedern der Markush-Gruppe beschrieben wird.
-
Der Fachmann versteht, dass in jedem Sinne, z. B. im Sinne einer schriftlichen Beschreibung, alle vorliegend beschriebenen Bereiche ebenfalls alle möglichen Unterbereiche und Kombinationen von Unterbereichen umfassen. Jeder aufgeführte Bereich ist ohne weiteres als hinreichende Beschreibung und Ermöglichung der Einteilung des Bereichs in mindestens gleiche Hälften, Dritte, Viertel, Fünftel, Zehntel, usw. erkennbar. Als nichteinschränkendes Beispiel lässt sich jeder vorliegend beschriebene Bereich in ein unteres Drittel, mittleres Drittel und oberes Drittel, usw. einteilen. Dem Fachmann ist ebenfalls bekannt, dass alle Ausdrücke wie z. B. ”bis”, ”mindestens”, ”größer”, ”kleiner” u. dgl. den aufgeführten Zahlenwert umfassen und Bereiche bezeichnen, die anschließend, wie oben beschrieben, in Unterbereiche eingeteilt werden können. Schließlich ist dem Fachmann bekannt, das ein Bereich jedes einzelne Glied umfasst. So sind z. B. unter einer Gruppe mit 1 bis 3 Zellen auch Gruppen mit 1, 2 oder 3 Zellen zu verstehen. Ebenfalls sind z. B. unter einer Gruppe mit 1 bis 5 Zellen auch Gruppen mit 1, 2, 3, 4 oder 5 Zellen, usw. zu verstehen.
-
Vorliegend sind zwar verschiedene Aspekte und Ausführungsforme offenbart worden; weitere Aspekte und Ausführungsformen sind jedoch für den Fachmann ersichtlich. Die vorliegend beschriebenen verschiedenen Aspekte und Ausführungsformen dienen lediglich der Veranschaulichung, und sind nicht als Einschränkung aufzufassen; der wahre Umfang der Erfindung geht aus den nachfolgenden Patentansprüchen hervor.