-
HINTERGRUND
-
Der Entwurf und die Architektur von höchstintegrierten (VLSI für engl. very large scale integrated) Schaltungen, wie beispielsweise Prozessoren, sind ziemlich kompliziert. Es ist allgemein bekannt, dass oft Leistung geopfert wird, um einen zuverlässigen Betrieb des Prozessors zu gewährleisten. Mit der Entwicklung von Mehrkernprozessoren erlangt die Fähigkeit zur zuverlässigen Datenübermittlung eine größere Bedeutung.
-
Die Entwicklung von Mehrkernprozessoren führt zu zusätzlichen Verbindungen und zusätzlicher struktureller Komplexität. Die Verbindungsabschnitte zwischen Kernen können länger werden und die Ausbreitungszeit für Spannungspegel nimmt typischerweise zu. Außerdem machen es die starke Zunahme von Komponenten in Mehrkernprozessoren, das kleinere Format und die erhöhte Dichte von Transistoren und dergleichen zum Beispiel wahrscheinlich, dass chipintegrierte Schalter und Verbindungsabschnitte entweder periodisch oder dauerhaft ausfallen. Als Folge wird die Fähigkeit zur Datenübermittlung im chipintegrierten Netzwerk des Mehrkernprozessors unzuverlässiger.
-
Gleichzeitig gibt es viele Anwendungen, bei welchen eine zuverlässige Kommunikation eine Voraussetzung ist. Parallelisierte Anwendungen, welche über mehrere Kerne verteilt sind und von diesen ausgeführt werden, sind oft darauf angewiesen, dass, bevor sie weiterlaufen, die Aufgaben, die von diesen Kernen ausgeführt werden, abgeschlossen sind. Wenn die Kommunikation im chipintegrierten Netzwerk ausfällt, kann das System oder die Anwendung hängen bleiben oder anderweitig versagen.
-
Die Fähigkeit zur zuverlässigen Kommunikation zwischen Kernen ist eine wichtige Angelegenheit beim Entwurf von Mehrkernprozessoren. Wie bereits erwähnt, opfert die Entwicklung eines hochzuverlässigen Prozessors jedoch wahrscheinlich Leistung und erhöht wahrscheinlich die Kosten. Um die Leistung zu verbessern, müssen Anwendungen, die auf Mehrkernprozessoren ausgeführt werden, mit der Möglichkeit rechnen, eine zuverlässige Kommunikation bei einem verhältnismäßig unzuverlässigen chipintegrierten Netzwerk zu erreichen.
-
KURZE BESCHREIBUNG DER FIGUREN
-
1 stellt eine veranschaulichende Ausführungsform eines Mehrkernprozessors dar;
-
2 stellt ein Blockdiagramm einer veranschaulichenden Ausführungsform eines Kerns dar, der im Mehrkernprozessor enthalten ist;
-
3 stellt einen Pfad eines Pakets mit Zuverlässigkeitsanforderungen von einem Ursprungskern zu einem Zielkern im Mehrkernprozessor dar;
-
4 stellt ein Blockdiagramm einer veranschaulichenden Ausführungsform eines Kerns und der Einstellungen des Kerns dar, die gemäß der Zuverlässigkeitsanforderung von Pfaden, die den Kern umfassen, oder gemäß der Zuverlässigkeitsanforderung von Daten, die vom Kern empfangen bzw. gesendet werden, dynamisch angepasst werden können;
-
5 stellt ein Flussdiagramm einer veranschaulichenden Ausführungsform eines Verfahrens zur Leitweglenkung eines Pakets in einem chipintegrierten Netzwerk dar;
-
6 stellt ein Flussdiagramm einer veranschaulichenden Ausführungsform eines Verfahrens zur Leitweglenkung eines Pakets im chipintegrierten Netzwerk eines Mehrkernprozessors dar; und
-
7 stellt eine beispielhafte Rechenvorrichtung dar, das einen Mehrkernprozessor umfasst.
-
AUSFÜHRLICHE BESCHREIBUNG
-
In der folgenden, ausführlichen Beschreibung wird auf die beiliegenden Zeichnungen Bezug genommen, die einen Teil hiervon bilden. In den Zeichnungen bezeichnen ähnliche Symbole typischerweise ähnliche Komponenten, sofern der Kontext nichts anderes vorschreibt. Die veranschaulichenden Ausführungsformen, die in der ausführlichen Beschreibung, den Zeichnungen und den Ansprüchen beschrieben werden, sind nicht als Einschränkung gedacht. Es können auch andere Ausführungsformen verwendet werden, und es können Änderungen vorgenommen werden, ohne vom Geist oder Schutzumfang des hierin dargelegten Gegenstands abzuweichen. Es versteht sich von selbst, dass die Aspekte der vorliegenden Offenbarung, wie hierin im Allgemeinen beschrieben und in den Figuren veranschaulicht, in einer großen Vielfalt von verschiedenen Konfigurationen, die allesamt hierin ausdrücklich in Erwägung gezogen werden, angeordnet, ersetzt, kombiniert, getrennt und entworfen werden können.
-
Die hierin beschriebenen Ausführungsformen betreffen die Bereitstellung von zuverlässigen Kommunikationen in chipintegrierten Netzwerken. Eine zuverlässige Kommunikation kann durch Verbinden von Zuverlässigkeitsanforderungen mit Paketen erreicht werden, die im chipintegrierten Netzwerk übertragen werden. Die Zuverlässigkeitsanforderungen können zum Beispiel unter Verwendung von Etiketten, welche die Zuverlässigkeitsanforderungen für die Pakete definieren, mit Paketen verbunden werden. Die Zuverlässigkeitsanforderdungen, die mit dem Etikett verbunden sind, können vor, während und/oder nach der Übertragung interpretiert und vor, während und/oder nach der Übertragung implementiert werden.
-
Alternativ oder zusätzlich zum Etikett können Zuverlässigkeitsanforderungen außerdem Einstellungen der Kerne oder anderer Komponenten im chipintegrierten Netzwerk eines Mehrkernprozessors umfassen. Die Einstellungen können gemäß der Zuverlässigkeitsanforderung eines Pakets in einigen Fällen dynamisch geändert oder so festgelegt werden, dass die Zuverlässigkeitsanforderung erfüllt wird. Die Leistung von chipinternen Kommunikationen kann dynamisch angepasst werden, wenn Pakete im chipintegrierten Netzwerk übertragen werden, wobei das Etikett und/oder die Einstellungen verwendet werden, um ein gewünschtes Leistungsniveau für die Paketübermittlung zu erreichen.
-
1 stellt eine veranschaulichende Ausführungsform eines Mehrkernprozessors 100 dar, der in einem Computer oder einer anderen Rechenvorrichtung enthalten sein kann und der so konfiguriert ist, dass er eine zuverlässige Kommunikation innerhalb des Mehrkernprozessors 100 bereitstellt. Der Mehrkernprozessor 100 kann in Computern oder anderen Vorrichtungen zu Verarbeitungszwecken verwendet werden. Der Mehrkernprozessor 100 ist für den Betrieb oder die Ausführung von Software oder anderen ausführbaren Befehlen verantwortlich, die auf den Computer geladen, darauf gespeichert oder diesem anderweitig zugänglich gemacht wurden.
-
Der in 1 veranschaulichte Mehrkernprozessor 100 ist ein Mehrkernprozessor und umfasst Prozessorkerne 140. Die Prozessorkerne 140 führen Befehle aus, nehmen Berechnungen vor und versehen einen Computer oder ein Computersystem anderweitig mit Rechen- und Verarbeitungsfähigkeit. Die Prozessorkerne 140 können mit anderen Modulen oder Komponente in einem Computer über ein Eingangs-/Ausgangsmodul 104 kommunizieren. Die Eingangs-/Ausgangsmodule 104 können Daten empfangen bzw. senden, die oft über einen Systembus 106 übertragen werden, und mit anderen Komponenten eines Rechensystems verbinden. Die Eingangs-/Ausgangsmodule 104 können konfiguriert oder in der Lage sein, gemäß mehreren Protokollen zu funktionieren, die, ohne darauf beschränkt zu sein, Gigabit Ethernet, XAUI, PCIe, JTA, TWI oder dergleichen umfassen, und sie können eine Parallel-Seriell- bzw. Seriell-Parallel-Umsetzung eines Datenstroms, eine asynchrone Übertragung oder dergleichen bereitstellen.
-
Die Eingangs-/Ausgangsmodule 104 können separate Module, die konfigurierbar sein können, für jedes Protokoll umfassen. Die Eingangs-/Ausgangsmodule 104 können den Mehrkernprozessor 100 oder den Computer befähigen, mit anderen Computern über solche Netzwerke wie beispielsweise ein lokales Netzwerk, das Internet und dergleichen zu kommunizieren. Zum Beispiel kann ein Server-Computer mit dem Mehrkernprozessor 100 über ein Netzwerk mit einem Client-Computer kommunizieren. Im vorstehenden Beispiel kann der Client-Computer den Mehrkernprozessor 100 aufweisen oder auch nicht.
-
Der Mehrkernprozessor 100 umfasst außerdem Steuerungen 102. Die Steuerungen 102, welche mehrere Steuerungen 102 umfassen können, können Zugriff auf Systemspeicher wie beispielsweise verschiedene Cache-Stufen, RAM oder dergleichen oder jegliche Kombination davon ermöglichen. Selbstverständlich kann jeder der Prozessorkerne 140 auch seinen eigenen Cache umfassen. Für einen Fachmann ist zu erkennen, dass der Mehrkernprozessor 100 auch andere Module (z. B. Befehlsdecoder, Busschnittstelleneinheit, Adressgenerator, Gleitkommaeinheiten, Ganzzahlausführungseinheiten, Register usw.) umfassen kann.
-
Ferner kann der Mehrkernprozessor 100 in einen einzigen Chip integriert sein. Alternativ können einige Module oder Komponenten des Mehrkernprozessors 100 in separaten Chips sein, die miteinander interagieren.
-
1 veranschaulicht auch eine genauere Ansicht der Prozessorkerne 140 im Mehrkernprozessor 100. Die Prozessorkerne 140 sind so konfiguriert, das sie über ein chipintegriertes Netzwerk 130 kommunizieren. Die Prozessorkerne 140 und insbesondere das chipintegrierte Netzwerk 130 umfassen einzelne Kerne 150, welche einen Kern 150a, einen Kern 150b und einen Kern 150c umfassen. In Abhängigkeit vom Kontext kann die Bezugnahme auf den Kern 150 oder seine Beschreibung auf jeden der Kerne 150a, 150b und 150c angewendet werden. Ähnlich kann auch die Bezugnahme auf die Kerne 150a, 150b und 150c oder ihre Beschreibung je nach dem Kontext gleichermaßen auf die anderen Kerne 150 angewendet werden.
-
Jeder Kern 150 ist im Allgemeinen gleich, obwohl es Fälle geben kann, in welche einige der Kerne 150 sich strukturell von anderen Kernen unterscheiden. Zum Beispiel können einige der Kerne 150 direkt mit den Eingangs-/Ausgangsmodulen 104 oder der Steuerung 102 gekoppelt sein, während einige der Kerne durch andere Kerne mit diesen Modulen kommunizieren. Einige der Kerne können mehr Verarbeitungsfähigkeiten oder Leistung als andere haben. Der Kern 150a, welcher in diesem Beispiel in den Kernen 150 enthalten ist und sich im Inneren der Prozessorkerne 140 befindet, kann durch andere Kerne 150 mit Modulen oder Komponenten kommunizieren, obwohl für einen Fachmann zu erkennen ist, dass auch eine direkte Kommunikation möglich sein kann.
-
Die Kerne 150 können in verschiedenen Konfigurationen oder Topologien angeordnet sein. Maschentopologien, Torustopologien oder Fat-Tree-Topologien sind Beispiele von Kerntopologien, die im Mehrkernprozessor 100 verwendet werden können.
-
Jeder Kern 150 umfasst einen Prozessor, der unabhängig von anderen Keren in den Prozessorkernen 140 funktionieren kann. Jeder Kern 150 kann typischerweise ein Computerprogramm nötigenfalls selbst ausführen. Ein Vorteil des Mehrkernprozessors 100 liegt darin, dass die Kerne 150 gemeinsam arbeiten können, um eine Anwendung oder Befehle auszuführen usw.
-
Bei der gemeinsamen Ausführung einer Anwendung können die Kerne 150 innerhalb der Ausführung, die ausgeführt wird, verschiedene Verantwortlichkeiten haben. Folglich ist der Mehrkernprozessor 100 in der Lage, eine Anwendung schneller als beim Verarbeiten der gleichen Anwendung mit einem einzigen Kern oder als ein Einzelkernprozessor auszuführen. Außerdem können die Kerne 150 gleichzeitig an verschiedenen Anwendungen oder Prozessen in einem Rechensystem arbeiten. Dies ermöglicht es zum Beispiel einigen der Kerne 150, eine Anwendung auszuführen, während andere Kerne 150 andere Anwendungen oder Prozesse aus- bzw. durchführen. Außerdem können die Kerne 150 auch zwischen Anwendungsprozessen umschalten. Demnach kann ein spezifischer Kern, wie beispielsweise der Kern 150a, mehrere Prozesse für eine oder mehrere Anwendungen durchführen.
-
Beim Ausführen eines Prozesses oder einer Anwendung in der Mehrkernumgebung, wie beispielsweise durch die Prozessorkerne 140 veranschaulicht, müssen oft Daten (z. B. Anwendungsdaten, Adressen, Befehle usw.) von einem der Kerne 150 an einen anderen der Kerne 150 (z. B. vom Kern 150b an den Kern 150c) übertragen werden. Dies kann häufig unter Verwendung des chipintegrierten Netzwerks 130 geschehen, welche die Verbindungen 152 umfasst.
-
In 1 werden die Verbindungen 152 verwendet, um die Kerne 150 miteinander zu verbinden. Obwohl nicht alle der Kerne 150 direkt miteinander verbunden werden können (z. B. kann der Kern 150b nicht direkt mit dem Kern 150a verbunden werden), gewährleisten die Verbindungen 152, dass jeder der Kerne 150 mit jedem anderen der Kerne 150 kommunizieren kann.
-
Wenn zum Beispiel die Kerne 150 in einer Gitterkonfiguration angeordnet sind, können die Kerne 150 Verbindungen 152 in den Richtungen aufwärts, nach rechts, nach links und abwärts haben. In diesem Beispiel kann jede Verbindung 152 mehrere Kanäle 154 umfassen. Die Kanäle 154 können die physikalischen Verbindungen zwischen den Kernen 150 umfassen. In diesem Beispiel können mehrere Kanäle zwischen direkt verbundenen Kernen 150 bestehen.
-
2 stellt ein Blockdiagramm einer veranschaulichenden Ausführungsform eines Kerns 150a dar, der im Mehrkernprozessor 100 enthaften ist. Der Kern 150a ist einer der Prozessorkerne 140. Die Fähigkeit zur Übermittlung oder Übertragung von Daten unter Verwendung der Verbindungen 152 wird durch Versehen jedes der Kerne 150 mit einem Netzwerkschalter 200 erreicht, wie durch den Netzwerkschalter 200 im Kern 150a von 2 veranschaulicht. Der Kern 150a umfasst einen Prozessor 220, einen Cache 222 und den Netzwerkschalter 200. Der Netzwerkschalter 200 kann über eine Verbindung 202, eine Verbindung 204, eine Verbindung 206 und eine Verbindung 208, welche Beispiele für die Verbindungen 152 sind, mit benachbarten Netzwerkschaltern verbunden sein. Wie bereits erwähnt, umfasst jede der Verbindungen 152, welche die Verbindungen 202, 204, 206 und 208 umfassen, typischerweise mehrere Kanäle. Folglich ist der Kern 150a in der Lage, über mehrere Kanäle mit benachbarten oder direkt verbundenen Kernen 150 zu kommunizieren.
-
Der Netzwerkschalter 200 ist durch Anschlüsse 210 mit 202, 204, 206 und 208 gekoppelt. Genauer gesagt, sind die Kanäle, die durch jede der Verbindungen 202, 204, 206 und 208 dargestellt werden, mit spezifischen Anschlüssen verbunden, die zu den Anschlüssen 210 gehören. Im veranschaulichten Beispiel weist der Kern 150a direkte Verbindungen zu vier anderen Kernen auf. Jede Verbindung kann zum Beispiel fünf Kanäle umfassen. Jede der Verbindungen 202, 204, 206 und 208 kann auch weniger oder mehr Kanäle umfassen. Außerdem kann der Netzwerkschalter 200 über Kanäle 214 mit dem Prozessor 220 verbunden sein. Die Kanäle 214 können zur Kommunikation zwischen dem Prozessor 220 und dem Netzwerkschalter 200 verwendet werden. Zum Beispiel können Pakete, die vom Kern 150a verarbeitet werden sollen, über die Kanäle 214 an den Kern 150a übertragen werden.
-
Der Kern 150a umfasst außerdem den Cache 222. Der Cache 222 kann für den Kern 150a spezifisch sein (z. B. kann der Cache 222 der L1- und L2-Cache für den Prozessor 220 sein), oder er kann von mehreren Kernen 150 gemeinsam benutzt werden. Alternativ kann der Cache 222 auch im Netzwerkschalter 200 enthalten sein oder für den Netzwerkschalter 200 zugänglich sein. Alternativ kann der Netzwerkschalter 200 eine Steuerung und einen Cache aufweisen, die den Netzwerkschalter 200 zur Ausführung von Leitweglenkungsfunktionen befähigen.
-
Der Netzwerkschalter 200 umfasst außerdem Einstellungen 212. Die Einstellungen 212 können verwendet werden, um einige der betrieblichen Aspekte des Netzwerkschalters 200 zu steuern. Zum Beispiel können die Einstellungen 212 zum Steuern von Spannungspegeln des Netzwerkschalters 200, Taktfrequenzen des Netzwerkschalters 200, Pipeline-Steuerungen oder dergleichen verwendet werden. Die Einstellungen 212 können außerdem in einigen Fällen zum Steuern von betrieblichen Aspekten des Prozessors 220 verwendet werden.
-
Die gewünschte Leistung des Kerns 150a oder des Netzwerkschalters 200 kann durch dynamisches Anpassen der Einstellungen 212 erreicht werden. Zum Beispiel kann das Erhöhen der Taktfrequenz den Durchsatz steigern, während das Senken von Spannungspegeln Energie sparen kann. Die Einstellungen 212 können zum Anpassen von Spannungspegeln, der Taktfrequenz oder dergleichen verwendet werden, um die Leistung des Netzwerkschalters 200 oder der Kerns 150a dynamisch zu ändern.
-
3 stellt einen Pfad 306 eines Pakets 310 mit Zuverlässigkeitsanforderungen von einem Ursprungskern 302 zu einem Zielkern 304 im Mehrkernprozessor 100 dar. In dem in 3 veranschaulichten Beispiel sendet der Ursprungskern 302 (der einer der Kerne 150 sein kann) das Paket 310 an den Zielkern 304 (der ebenfalls einer der Kerne 150 sein kann). Das Paket 310 wird über den Pfad 306 übertragen, der (i) direkt zwischen dem Ursprungskern 302 und dem Zielkern 304 sein oder (ii) einen oder mehrere Sprünge über andere Kerne 150 im Mehrkernprozessor 100 umfassen kann. Ferner ist beabsichtigt, dass das Paket 310 verschiedene Typen von Daten sowie mehrere Pakete von Daten darstellt. Zum Beispiel kann das Paket 310 Anwendungsdaten, Streaming-Pakete, Befehle, Adressen, andere Daten, Steuernachrichten oder dergleichen oder jegliche Kombination davon umfassen. Die Zuverlässigkeitsanforderungen können auf das Paket 310, einen Strom von Paketen, mindestens ein Paket in einem Strom, alle Pakete aus einem Strom von Paketen in einer Anwendung, alle mit der Anwendung verbundenen Pakete, alle Pakete vom Ursprungskern oder dergleichen angewendet werden.
-
Der Pfad 306 kann dynamisch bestimmt werden, während das Paket 310 unterwegs ist, wenn der Pfad 306 unbekannt ist, wobei der nächste Knoten oder Sprung im Pfad 306 an jedem Kern 150 bestimmt wird. Der nächste Knoten oder Sprung im Pfad 306 kann am aktuellen Netzwerkschalter 200 in Echtzeit oder in Quasi-Echtzeit bestimmt werden. Der Zielkern kann bekannt sein, aber der Pfad 306 zum Zielkern ist möglicherweise nicht bekannt und wird bestimmt, während das Paket 310 unterwegs ist.
-
Alternativ kann der Pfad 306 im Voraus bestimmt und als ein virtueller Pfad vor der Übertragung des Pakets 310 festgelegt sein.
-
Das Paket 310 umfasst ein Etikett 312. Das Etikett 312 kann dem Paket 310 als eine Methode zum Identifizieren mindestens einer Zuverlässigkeitsanforderung für das Paket 310 hinzugefügt werden. Alternativ kann das Etikett 312 separat vom Paket 310 (d. h. nicht als Teil desselben darin enthalten) sein. Wenn zum Beispiel das Paket 310 an den Zielkern 304 übermittelt werden muss, zeigt das Etikett 312 diese Anforderung (z. B. Übermittlungsbestätigung) für das Paket 310 an. Das Etikett 312 kann verwendet werden, um sicherzustellen, dass die Übermittlung des Pakets 310 zuverlässig ist, selbst wenn das zugrunde liegende chipintegrierte Netzwerk möglicherweise weniger zuverlässig ist.
-
In einem anderen Beispiel kann das Etikett 312 spezifizieren, dass das Paket 310 in einem spezifizierten Zeitraum übermittelt werden sollte. Die Durchlaufzeit des Pakets 310 kann an jedem Knoten aktualisiert und beurteilt werden. Wenn der spezifizierte Zeitraum abläuft, bevor das Paket 310 übermittelt ist, dann kann es verworfen werden, oder es kann eine Fehlernachricht an den Ursprungskern zurückgesendet werden.
-
In einem anderen Beispiel kann das Etikett 312 spezifizieren, dass eine Kopie eines Pakets an einem der Kerne 150 zwischengespeichert oder gepuffert werden soll, bis das Paket 310 übermittelt wird. Das Etikett 312 kann auch die Einstellungen 212 spezifizieren, die durch den Netzwerkschalter 200 verwendet werden können. Das Etikett 312 kann verwendet werden, um die Zuverlässigkeit des Netzwerkschalters 200 zu fördern, indem die Taktfrequenz verlangsamt oder die Spannung erhöht wird, und auf diese Weise die Zuverlässigkeit des Transfers des Pakets 310 zu verbessern.
-
In einem anderen Beispiel kann das Etikett 312 anfordern, dass jeder Kern im Pfad 306 dem vorhergehenden Kern die erfolgreiche Übermittlung des Pakets 310 an den nächsten oder nachfolgenden Kern im Pfad 306 bestätigt. Alternativ kann dies erreicht werden, indem der Zielkern 304 veranlasst wird, eine Empfangsmeldung an den Ursprungskern 302 oder an einen anderen Kern im Pfad 306 zurückzusenden. Außerdem kann das Etikett 312 verwendet werden, um einen Schaltkreis im Netzwerk aufzubauen, durch welche das Paket durchlaufen sollte, um unzuverlässige Verbindungsabschnitte und Router im Netzwerk zu vermeiden.
-
Diese Beispiele veranschaulichen, dass das Etikett 312 ein gewünschtes Zuverlässigkeitsniveau spezifizieren kann, das Fälle bewältigen kann, in welchen das chipintegrierte Netzwerk 130 oder die chipintegrierten Kerne 150 unzuverlässig sind.
-
Die Zuverlässigkeitsanforderung, die im Etikett 312 des Pakets 310 spezifiziert oder definiert ist, kann auf verschiedene Arten und Weisen ausgedrückt werden. Zum Beispiel kann das Etikett 312 anzeigen, dass das Paket 310 innerhalb eines vorgegebenen Zeitraums übermittelt werden sollte. Das Etikett 312 kann an jedem Kern im Pfad 306 beurteilt werden. Wenn die Zuverlässigkeitsanforderung im Etikett 312 nicht erfüllt werden kann, dann kann die Übertragung aufgegeben (oder abgebrochen) werden, und/oder es kann eine andere Aktion oder ein anderer Vorgang, die ebenfalls im Etikett 312 identifiziert sein können, durchgeführt werden. Zum Beispiel kann der Ursprungsknoten 302 verständigt werden, dass das Paket 310 nicht an den Zielknoten 304 übermittelt oder dass es verworfen wurde. Andere Aktionen, die stattfinden können, wenn die Zuverlässigkeitsanforderung nicht erfüllt wird oder nicht erfüllt werden kann, umfassen ein Abbrechen der Übermittlung des Pakets, ein Ersetzen des Pakets durch ein aktualisiertes Paket oder dergleichen.
-
In einem anderen Beispiel können die Zuverlässigkeitsanforderungen im Etikett 312 ungeachtet des Pfades 306 oder der Zeitelemente einfach eine Benachrichtigung der Übermittlung an den Zielknoten 304 anfordern. Das Etikett 312 kann anzeigen, dass das Paket 310 einem vorgegebenen Pfad folgt – wie beispielsweise einem virtuellen Pfad, der im Voraus festgelegt wurde. Das Etikett 312 kann außerdem verwendet werden, um Zuverlässigkeitsanforderungen für nachfolgende Pakete zu identifizieren. In einem Strom von Paketen zum Beispiel können die Zuverlässigkeitsanforderungen für alle der Pakete im Strom im Etikett 312 spezifiziert oder definiert sein, das einem Teilsatz der Pakete im Strom von Paketen angehängt sein kann. In diesem Fall kann das Etikett 312 auf mehrere Pakete angewendet werden, ohne dass das Etikett 312 tatsächlich in allen der Pakete enthalten ist.
-
In einem anderen Beispiel kann das Etikett 312 eine annehmbare Fehlerrate für die Übertragung des Pakets 310 (oder eine Gruppe von Paketen) spezifizieren. Zum Beispiel können Videodaten erfolgreich übermittelt werden, selbst wenn einige der Pakete nicht übermittelt werden. Andererseits sind Audiodaten stärker von Datenverlust betroffen. Folglich können sich die Zuverlässigkeitsanforderungen für Audiodaten von den Zuverlässigkeitsanforderungen für Videodaten unterscheiden.
-
Das Etikett 312 kann die Zuverlässigkeitsanforderung auch im Sinne von Zeit ausdrücken. Das Etikett 312 kann ausdrücken, dass das Paket 310 innerhalb eines bestimmten Zeitraums übermittelt werden sollte. Dies kann an jedem Kern im Pfad 306 überprüft und/oder in jedem Kern aktualisiert werden.
-
Diese Beispiele veranschaulichen, dass das Etikett 312 die Zuverlässigkeitsanforderungen im Hinblick auf Datentyp, Anfragetyp, Fehlerprozentsatz, annehmbare Fehlerrate, Übermittlungszeiträume, Pfadidentifikation, Maßnahmen, die bei Ablauf des Übermittlungszeitraums ergriffen werden, oder dergleichen oder jegliche Kombination davon definieren kann.
-
Das Etikett 312 kann durch ein Bit oder eine Folge von Bits im Paket 310 dargestellt oder in einem Kopf des Pakets 310 enthalten oder ein anderes Schema sein. Das Bit oder der Kopf können zum Beispiel anzeigen, ob ein zuverlässiger Transport des Pakets 310 erforderlich ist. Der Folge von Bits kann verwendet werden, um spezifische Niveaus zu identifizieren oder spezifische Zuverlässigkeitsanforderungen für das Paket 310 zu identifizieren. Außerdem kann das Etikett 312 durch eine Anwendung, durch ein Betriebssystem, durch einen Kern oder durch einen Virtuelle-Maschine-Monitor gesetzt werden. Der Ursprung der Zuverlässigkeitsanforderungen, die durch das Etikett 312 definiert sind, kann daher je nach den Umständen variieren. Zum Beispiel kann es Fälle geben, in welchen das Betriebssystem die Zuverlässigkeitsanforderungen unabhängig von der Anwendung oder im Widerspruch zur Anwendung festlegen kann.
-
4 stellt ein Blockdiagramm einer veranschaulichenden Ausführungsform eines Kerns 150a und der Einstellungen des Kerns (einschließlich der Einstellungen des Netzwerkschalters) dar, die gemäß der Zuverlässigkeitsanforderung von Paketen, die Pfaden folgen, die den Kern 150a umfassen, oder gemäß der Zuverlässigkeitsanforderung von Paketen, die vom Kern 150a empfangen bzw. gesendet werden, dynamisch angepasst werden können. 4 veranschaulicht die dynamische Anpassung der Leistung des chipintegrierten Netzwerks 130 des Mehrkernprozessors 100. Die Leistung des Kerns 150a, einschließlich des Netzwerkschalters 200, kann durch Modifizieren der Einstellungen 212 geändert werden.
-
4 veranschaulicht ein Beispiel für das Festlegen der Einstellungen 212 gemäß Zuverlässigkeitsanforderungen. In 4 sind einige der Kanäle veranschaulicht, die mit den Anschlüssen 210 verbunden sind. In diesem Beispiel wurden diese Anschlüsse und die entsprechenden Verbindungen als virtuelle Pfade 402, 404, 406 und 408 eingerichtet.
-
Da der Kern 150a gegenwärtig für die virtuellen Pfade 402, 404, 406, 408 und 410 eingerichtet ist, können die Einstellungen 212 gemäß dem Pfad bestimmt werden, dessen Zuverlässigkeitsanforderungen die höchsten sein können oder die größte Zuverlässigkeit anzeigen können. Zum Beispiel können Pakete, die im virtuellen Pfad 402 übertragen werden, in der Lage sein, einen bestimmten Prozentsatz von Datenverlust zu tolerieren, während der virtuelle Pfad 404 möglicherweise nicht in der Lage ist, Datenverlust zu tolerieren, oder möglicherweise einen niedrigeren Prozentsatz von Datenverlust toleriert. Folglich können die Einstellungen 212 des Kerns 150a so festgelegt sein, dass sie den Zuverlässigkeitsanforderungen für den virtuellen Pfad 404 Rechnung tragen.
-
Die Einstellungen 212 können so festgelegt sein, dass sie die Leistung des Mehrkernprozessors 100 ändern. Die Einstellungen 212 können auch verwendet werden, um Schaltgeschwindigkeiten des Netzwerkschalters 200, Tatfrequenz, Spannungspegel oder dergleichen auszuwählen. Obwohl zum Beispiel das Erhöhen der Taktfrequenz zu einer Fehlerrate bei der Datenübertragung führen kann, kann die Fehlerrate unter gewissen Umständen annehmbar sein. Ähnlich kann das Ändern des Spannungspegels einen Einfluss auf die Fehlerrate haben. Im Austausch für eine leichte Zunahme von vorübergehenden Fehlern können die Einstellungen 212 so angepasst werden, dass sie die Taktfrequenz erhöhen oder die Betriebsspannung senken, um Energie zu sparen. Die Zuverlässigkeitsanforderungen, die mit dem Etikett 312 verbunden sind, können verwendet werden, um die Einstellungen 212 festzulegen oder andere Übermittlungsanforderungen an das Paket 310 so festzulegen, dass ein gewünschtes Zuverlässigkeitsniveau bereitgestellt wird, selbst wenn das chipintegrierte Netzwerk vorübergehende Fehler erleidet oder anderweitig unzuverlässig ist. Das Etikett 312 kann bestimmte Einstellungen 212 gemäß den Zuverlässigkeitsanforderungen identifizieren oder spezifizieren.
-
5 stellt ein Flussdiagramm einer veranschaulichenden Ausführungsform eines Verfahrens zur Leitweglenkung eines Pakets in einem chipintegrierten Netzwerk dar. In Block 502 kann ein Kern ein Paket erzeugen, das in einem chipintegrierten Netzwerk übertragen werden soll. Bei Block 504 wird das Paket vom Kern, dem Betriebssystem oder einer anderen Komponente mit dem Etikett versehen. Das Etikett kann Zuverlässigkeitsinformationen im Zusammenhang mit der Übermittlung und/oder Übertragung des Pakets spezifizieren oder definieren. In Block 506 wird das Paket gemäß den Zuverlässigkeitsanforderungen übermittelt, die durch das Etikett definiert sind. Das Paket wird vom Ursprungskern an einen anderen Kern übermittelt. Jeder Kern im Pfad kann das Etikett beurteilen und entsprechend den darin spezifizierten Zuverlässigkeitsanforderungen handeln. Schließlich wird das Paket an den Zielkern übermittelt.
-
Demnach kann das Paket mit einem gewünschten Zuverlässigkeitsniveau weitergeleitet werden, das im Etikett widergespiegelt ist. Wie bereits erwähnt, kann das gewünschte Zuverlässigkeitsniveau gemäß dem Etikett erreicht werden.
-
Für einen Fachmann ist zu erkennen, dass für diesen und andere hierin offenbarte Prozesse und Verfahren die in den Prozessen und Verfahren ausgeführten Funktionen in verschiedener Reihenfolge implementiert werden können. Außerdem sind die dargelegten Schritte und Vorgänge nur als Beispiel vorgesehen, und einige der Schritte und Vorgänge können optional sein, zu weniger Schritten und Vorgängen kombiniert werden oder auf zusätzliche Schritte und Vorgänge erweitert werden, ohne das Wesentliche der offenbarten Ausführungsformen zu schmälern.
-
6 stellt ein Flussdiagramm einer veranschaulichenden Ausführungsform eines Verfahrens zur Leitweglenkung eines Pakets im chipintegrierten Netzwerk des Mehrkernprozessors dar. In Block 602 wird das Paket an einem Kern des Mehrkernprozessors empfangen. In Block 604 überprüft der Kern oder eine Komponente davon die Zuverlässigkeitsanforderung, die mit dem Etikett verbunden ist. Wie bereits erwähnt, ist die Zuverlässigkeitsanforderung typischerweise in dem Etikett, welches das Paket begleiten kann, definiert oder spezifiziert. In Block 606 kann der Kern dann das Paket in Übereinstimmung mit der Zuverlässigkeitsanforderung übertragen. Dies kann, wie zuvor bereits nur als Beispiel erwähnt, das Ändern der Einstellungen des Kerns oder von Komponenten, die im Kern enthalten sind, Speichern des Pakets im Cache des Kerns, bis die Übermittlung bestätigt wird, Senden einer Übermittlungsbestätigungsnachricht, welche die Bestätigung des Empfangs des Pakets sein kann, oder einer Übermittlungsfehlernachricht oder dergleichen oder jegliche Kombination davon umfassen. In einigen Fällen kann die Zuverlässigkeitsanforderung implementiert werden, bevor das Paket gesendet wird. Wenn zum Beispiel die Einstellungen geändert werden, können Kerne im Pfad benachrichtigt werden, bevor sie mit dem Empfang des Pakets beginnen.
-
Außerdem kann das Antworten auf einen Übermittlungsfehler unter Verwendung einer Anwendungsprogrammierungsschnittstelle (API für engl. application programming interface) bewerkstelligt werden. Dies kann es der Anwendung ermöglichen, den Übermittlungsfehler des Pakets zu handhaben. Zum Beispiel kann eine Anwendung bestimmen, dass das Paket zu alt ist, und die Übermittlung gemäß dem Alter des Pakets oder gemäß einer Ablaufzeit oder einer Ablaufperiode des Pakets abbrechen. Alternativ kann die Anwendung ein Ersatzpaket aussenden oder das Paket erneut absenden. Die Anwendung selbst kann bestimmen, wann das Ersatz- oder das erneut gesendete Paket verschickt wird.
-
Die API kann außerdem Zugriff auf einen Datensatz von Paketübermittlungsfehlern haben, die früher erfolgten. Dieser Datensatz kann mit der Zeit für eine spezifische Anwendung oder dergleichen zugänglich sein. Dieser Datensatz kann es der Anwendung oder dem Verarbeitungskern oder dem Betriebssystem ermöglichen, die Zuverlässigkeitsanforderungen für künftige Pakete zu bestimmen. Der Datensatz kann außerdem verwendet werden, um die Zuordnung von verschiedenen Aufgaben zu verschiedenen Schaltern oder Kernen im chipintegrierten Netzwerk anzupassen. Dies kann es ermöglichen, die Leistung unter Verwendung von verschiedenen Einstellungen zu verbessern. Zum Beispiel kann der Datensatz bestimmen, dass bestimmte Schalter bei gleichzeitiger Erfüllung der Zuverlässigkeitsanforderung mit höheren Taktfrequenzen als andere Schalter oder Kerne arbeiten können. Das Zuordnen von Aufgaben oder Anfordern, dass die Paketleitweglenkung bestimmte Kerne und/oder Schalter verwendet, kann daher die Leistung verbessern. Diese Aufgaben können im Speicher des Mehrkernprozessors 100, in der Anwendung oder im Betriebssystem implementiert werden.
-
Die vorliegende Erfindung ist nicht im Sinne der konkreten Ausführungsformen einzuschränken, die in dieser Anmeldung beschrieben werden und die als Veranschaulichung von verschiedenen Aspekten gedacht sind. Es können viele Modifikationen und Änderungen vorgenommen werden, ohne vom Geist und Schutzumfang abzuweichen, wie für Fachleute ersichtlich ist. Für Fachleute sind aus den vorstehenden Beschreibungen funktionell gleichwertige Verfahren und Vorrichtungen innerhalb des Schutzumfangs dieser Offenbarung zusätzlich zu den hierin aufgeführten zu erkennen. Es ist beabsichtigt, dass solche Modifikationen und Änderungen in den Schutzumfang der angehängten Ansprüche fallen. Die vorliegende Offenbarung soll nur durch die Begriffe der angehängten Ansprüche zusammen mit dem vollen Umfang von Äquivalenten beschränkt sein, zu welchen solche Ansprüche das Recht geben. Es versteht sich von selbst, dass diese Offenbarung nicht auf konkrete Verfahren, Reagenzien, Verbindungen, Zusammensetzungen oder biologische Systeme beschränkt ist, die selbstverständlich variieren können. Es versteht sich außerdem von selbst, dass die hierin verwendete Terminologie lediglich dem Zwecke der Beschreibung von konkreten Ausführungsformen dient und nicht als Einschränkung gedacht ist.
-
7 ist ein Blockdiagramm, das eine beispielhafte Rechenvorrichtung 700 veranschaulicht, die für eine zuverlässige Kommunikation über chipintegrierte Netzwerke in einem Mehrkernprozessor gemäß der vorliegenden Offenbarung ausgelegt ist. In einer sehr grundlegenden Konfiguration 702 umfasst die Rechenvorrichtung 700 typischerweise einen oder mehrere Kerne 704 und einen Systemspeicher 706. Ein Speicherbus 708 kann zur Kommunikation zwischen den Kernen 704 und dem Systemspeicher 706 verwendet werden.
-
In Abhängigkeit von der gewünschten Konfiguration kann jeder der Kerne 704 von einem beliebigen Typ, einschließlich, ohne darauf beschränkt zu sein, eines Mikroprozessors (μP), einer Mikrosteuerung (μC), eines Digitalsignalprozessors (DSP) oder jeglicher Kombination davon sein. Die Kerne 704 können eine oder mehrere Ebenen der Zwischenspeicherung, wie beispielsweise einen Cache 710 einer ersten Ebene und einen Cache 712 einer zweiten Ebene, einen Prozessor 714 und Register 716 umfassen. Ein beispielhafter Prozessor 714 kann eine arithmetische Logikeinheit (ALU), eine Gleitkommaeinheit (FPU), einen Digitalsignalverarbeitungskern (DSP-Kern) oder jegliche Kombination davon umfassen. Eine beispielhafte Speichersteuerung 718 kann ebenfalls mit den Kernen 704 verwendet werden, oder in einigen Implementierungen kann die Speichersteuerung 718 ein internes Teil der Kerne 704 sein.
-
In Abhängigkeit von der gewünschten Konfiguration kann der Systemspeicher 706 von einem beliebigen Typ, einschließlich, ohne darauf beschränkt zu sein, eines flüchtigen Speichers (wie beispielsweise eines RAM), eines nichtflüchtigen Speichers (wie beispielsweise eines ROM, eines Flash-Speichers usw.) oder jegliche Kombination davon sein. Der Systemspeicher 706 kann ein Betriebssystem 720, eine oder mehrere Anwendungen 722 und Programmdaten 724 umfassen. Die Anwendung 722 kann Algorithmen 726 umfassen, die so ausgelegt sind, dass sie Pakete im chipintegrierten Netzwerk eines Mehrkernprozessors zuverlässig leiten und übermitteln. Die Programmdaten 724 können Zuverlässigkeitsanforderungen 728 umfassen oder definieren, die für eine zuverlässige Übertragung von Paketen im chipintegrierten Netzwerk verwendet werden können, wie im Folgenden ausführlicher beschrieben wird. In einigen Ausführungsformen kann die Anwendung 722 so ausgelegt sein, dass sie mit den Programmdaten 724 das Betriebssystem 720 derart steuert, das die Pakete gemäß den Zuverlässigkeitsanforderungen übermittelt werden, selbst wenn das zugrunde liegende chipintegrierte Netzwerk möglicherweise unzuverlässig ist. Diese beschriebene Grundkonfiguration 702 ist in 7 durch die Komponenten innerhalb der gestrichelten Linie veranschaulicht.
-
Die Rechenvorrichtung 700 kann zusätzliche Merkmale oder Funktionalität und zusätzliche Schnittstellen zum Ermöglichen von Kommunikationen zwischen der Grundkonfiguration 702 und jeglichen erforderlichen Vorrichtungen und Schnittstellen aufweisen. Zum Beispiel kann die Bus-/Schnittstellen-Steuerung 730 verwendet werden, um Kommunikationen zwischen der Grundkonfiguration 702 und einem oder mehreren Datenspeichervorrichtungen 732 über einen Speicherschnittstellenbus 734 zu ermöglichen. Die Datenspeichervorrichtungen 732 können Wechselspeichervorrichtungen 736, fest eingebaute Speichervorrichtungen 738 oder eine Kombination davon sein. Beispiele für Wechselspeicher- und fest eingebaute Speichervorrichtungen umfassen Magnetplattenvorrichtungen, wie beispielsweise Diskettenspeicher und Festplattenspeicher (HDD), Bildplattenspeicher, wie beispielsweise Kompaktspeicherplatten (CD) oder Digitalvideoplattenspeicher (DVD), Festkörperspeicher (SSD) und Magnetbandspeicher, um nur einige zu nennen. Beispielhafte Computerspeichermedien können flüchtige und nichtflüchtige sowie Wechsel- und fest eingebaute Medien umfassen, die in einem beliebigen Verfahren oder einer beliebigen Technologie zum Speichern von Informationen, wie beispielsweise computerlesbaren Befehlen, Datenstrukturen, Programmmodulen oder anderen Daten, implementiert werden.
-
Der Systemspeicher 706, die Wechselspeichervorrichtungen 736 und die fest eingebauten Speichervorrichtungen 738 sind Beispiele für Computerspeichermedien. Die Computerspeichermedien umfassen, ohne darauf beschränkt zu sein, RAM, ROM, EEPROM, Flash-Speicher oder eine andere Speichertechnologie, CD-ROM, Digitalvideoplatten (DVD) oder einen anderen optischen Speicher, Magnetbandkassetten, Magnetband, Magnetplattenspeicher, oder andere Magnetspeichervorrichtungen, oder beliebige andere Medien, die verwendet werden können, um die gewünschten Informationen zu speichern und auf welche die Rechenvorrichtung 700 zugreifen kann. Jedes solche Computerspeichermedium kann Teil der Rechenvorrichtung 700 sein.
-
Die Rechenvorrichtung 700 kann außerdem einen Schnittstellenbus 740 zum Ermöglichen der Kommunikation von verschiedenen Schnittstellenvorrichtungen (z. B. Ausgabevorrichtungen 742, peripheren Schnittstellen 744 und Kommunikationsvorrichtungen 746) mit der Grundkonfiguration 702 über die Bus-/Schnittstellen-Steuerung 730 umfassen. Beispielhafte Ausgabevorrichtungen 742 umfassen einen Grafik-Mehrkernprozessor 748 und einen Audio-Mehrkernprozessor 750, die so konfiguriert sein können, dass sie mit verschiedenen externen Vorrichtungen, wie beispielsweise einer Anzeige oder Lautsprechern, über einen oder mehrere A/V-Anschlüsse 752 kommunizieren. Beispielhafte periphere Schnittstellen 744 umfassen eine Serienschnittstellensteuerung 754 oder eine Parallelschnittstellensteuerung 756, die so konfiguriert sein können, dass sie mit externen Vorrichtungen, wie beispielsweise Eingabevorrichtungen (z. B. Tastatur, Maus, Stift, Spracheingabevorrichtung, Berührungseingabevorrichtung usw.), oder anderen peripheren Vorrichtungen (z. B. Drucker, Scanner usw.) über einen oder mehrere I/O-Anschlüsse 758 kommunizieren. Eine beispielhafte Kommunikationsvorrichtung 746 umfasst eine Netzwerksteuerung 760, die so ausgelegt sein kann, dass sie Kommunikationen mit einem oder mehreren anderen Rechenvorrichtungen 762 über eine Netzkommunikationsverbindung über einen oder mehrere Kommunikationsanschlüsse 764 ermöglicht.
-
Die Netzkommunikationsverbindung kann ein Beispiel für ein Kommunikationsmedium sein. Kommunikationsmedien können typischerweise durch computerlesbare Befehle, Datenstrukturen, Programmmodule oder andere Daten in einem modulierten Datensignal, wie beispielsweise einer Trägerwelle oder einem anderen Transportmechanismen realisiert sein und jegliches Informationsübermittlungsmedium umfassen. Ein „moduliertes Datensignal” kann ein Signal sein, das eine oder mehrere seiner Charakteristiken derart festgelegt oder geändert aufweist, dass es Informationen im Signal codiert. Kommunikationsmedien können als Beispiel und ohne Einschränkung drahtgebundene Medien, wie beispielsweise eine drahtgebundene Netz- oder direkt verdrahtete Verbindung, oder drahtlose Medien, wie beispielsweise akustische, Hochfrequenz- (HF), Mikrowellen-, Infrarot- und andere drahtlose Medien umfassen. Der Begriff computerlesbare Medien, wie hierin verwendet, kann sowohl Speichermedien als auch Kommunikationsmedien umfassen.
-
Die Rechenvorrichtung 700 kann als ein Teil einer tragbaren (oder mobilen) elektronischen Vorrichtung mit kleinem Formfaktor, wie beispielsweise eines Zellulartelefons, eines persönlichen Datenassistenten (PDA), einer persönlichen Media-Player-Vorrichtung, einer drahtlosen Web-Watch-Vorrichtung, einer persönlichen Headset-Vorrichtung, einer anwendungsspezifischen Vorrichtung oder einer hybriden Vorrichtung, die beliebige der vorstehenden Funktionen umfasst, implementiert sein. Die Rechenvorrichtung 700 kann außerdem als ein Personalcomputer, einschließlich Laptop-Computer- und Nicht-Laptop-Computerkonfigurationen, implementiert sein.
-
In Bezug auf die Verwendung im Wesentlichen aller Begriffe in der Mehrzahl und/oder Einzahl hierin können Fachleute von der Mehrzahl in die Einzahl und/oder von der Einzahl in die Mehrzahl übersetzen, wie es für den Kontext und/oder die Anwendung geeignet ist. Die verschiedenen Einzahl-/Mehrzahl-Vertauschungen können hierin der Klarheit halber ausdrücklich dargelegt sein.
-
Für Fachleute ist zu erkennen, dass im Allgemeinen Begriffe, die hierin und insbesondere in den angehängten Ansprüchen (z. B. Körpern der angehängten Ansprüche) verwendet werden, im Allgemeinen als „offene” Begriffe gedacht sind (z. B. sollte der Begriff „einschließlich” als „einschließlich, ohne darauf beschränkt zu sein” ausgelegt werden, der Begriff „aufweisend” sollte als „mindestens aufweisend” ausgelegt werden, der Begriff „umfasst” sollte als „umfasst, ohne darauf beschränkt zu sein” ausgelegt werden usw.). Für Fachleute ist außerdem zu erkennen, dass, wenn eine spezifische Anzahl einer eingeleiteten Anspruchsaufzählung beabsichtigt ist, solch eine Absicht im Anspruch ausdrücklich zitiert wird, und bei Fehlen solch einer Aufzählung solch eine Absicht nicht besteht. Für ein besseres Verständnis können zum Beispiel die folgenden angehängten Ansprüche die Verwendung der einleitenden Ausdrücke „mindestens ein” und „ein oder mehr” enthalten, um Anspruchsaufzählungen einzuleiten. Die Verwendung solcher Ausdrücke sollte jedoch nicht dahingehend ausgelegt werden, dass sie voraussetzt, dass die Einleitung einer Anspruchsaufzählung durch die unbestimmten Artikel „ein” oder „eine” einen konkreten Anspruch, der solch eine eingeleitete Anspruchsaufzählung enthält, auf Ausführungsformen beschränkt, die nur eine solche Aufzählung enthalten, selbst wenn der gleiche Anspruch die einleitenden Ausdrücke „ein oder mehr” oder „mindestens ein” und unbestimmte Artikel, wie beispielsweise „ein” oder „eine” enthält (z. B. sollten „ein” und/oder „eine” so ausgelegt werden, dass sie „mindestens ein” oder „ein oder mehr” bedeuten); das gleiche gilt für die Verwendung von bestimmten Artikeln, die verwendet werden, um Anspruchsaufzählungen einzuleiten. Außerdem ist für Fachleute zu erkennen, dass, wenn eine spezifische Anzahl einer eingeleiteten Anspruchsaufzählung ausdrücklich zitiert wird, solch eine Aufzählung dahingehend ausgelegt werden sollte, dass sie mindestens die zitierte Anzahl bedeutet (z. B. bedeutet die bloße Aufzählung von „zwei Aufzählungen” ohne andere Modifikatoren mindestens zwei Aufzählung oder zwei oder mehr Aufzählungen). Außerdem ist in jenen Fällen, in welchen eine Konvention analog zu „mindestens eines von A, B und C usw.” verwendet wird, solch eine Konstruktion im Allgemeinen in dem Sinne gedacht, in dem ein Fachmann die Konvention verstehen würde (z. B. würde „ein System mit mindestens einem von A, B und C” Systeme umfassen, ohne darauf beschränkt zu sein, die A allein, B allein, C allein, A und B zusammen, A und C zusammen, B und C zusammen und/oder A, B und C zusammen aufweisen, usw.). In jenen Fällen, in welchen eine Konvention analog zu „mindestens eines von A, B oder C usw.” verwendet wird, ist solch eine Konstruktion im Allgemeinen in dem Sinne gedacht, in dem ein Fachmann die Konvention verstehen würde (z. B. würde „ein System mit mindestens einem von A, B oder C” Systeme umfassen, ohne darauf beschränkt zu sein, die A allein, B allein, C allein, A und B zusammen, A und C zusammen, B und C zusammen und/oder A, B und C zusammen aufweisen, usw.). Für Fachleute ist ferner zu erkennen, dass praktisch alle disjunktiven Wörter und/oder Ausdrücke, die zwei oder mehr ausschließende Begriffe darstellen, einerlei ob in der Beschreibung, den Ansprüchen oder den Zeichnungen, so zu verstehen sind, dass sie die Möglichkeiten des Einbeziehens eines der Begriffe, eines von beiden Begriffen oder beider Begriffe vorsehen. Zum Beispiel ist der Ausdruck „A oder B” so zu verstehen, dass er die Möglichkeiten von „A” oder „B” oder „A” und „B” umfasst.
-
Außerdem ist für die Fachleute zu erkennen, dass, wenn Merkmale oder Aspekte der Offenbarung im Hinblick auf Markush-Gruppen beschrieben werden, die Offenbarung dadurch auch im Hinblick auf jedes einzelne Mitglied oder jede einzelne Teilgruppe der Markush-Gruppe beschrieben wird.
-
Wie für die Fachleute zu erkennen ist, umfassen für jeglichen Zweck, wie beispielsweise im Hinblick auf die Bereitstellung einer schriftlichen Beschreibung, alle hierin offenbarten Bereiche auch alle möglichen Teilbereiche und Kombinationen von Teilbereichen davon. Es ist leicht zu verstehen, dass jeder aufgeführte Bereich ausreichend beschreibend ist und es ermöglicht, dass der gleiche Bereich in mindestens gleiche Hälften, Drittel, Viertel, Fünftel, Zehntel usw. unterteilt werden kann. Als nicht einschränkendes Beispiel kann jeder hierin erörterte Bereich leicht in ein unteres Drittel, mittleres Drittel und oberes Drittel usw. unterteilt werden. Wir für einen Fachmann zu erkennen ist, umfassen alle Ausdrücke wie beispielsweise „bis zu”, „mindestens” und dergleichen die zitierte Anzahl und beziehen sich auf Bereiche, welche anschließend in Teilbereiche unterteilt werden können, wie zuvor erörtert. Schließlich ist für einen Fachmann zu erkennen, dass ein Bereich jedes einzelne Mitglied umfasst. Demnach betrifft zum Beispiel eine Gruppe mit 1 bis 3 Zellen Gruppen mit 1, 2 oder Zellen. Ähnlich bezieht sich eine Gruppe mit 1 bis 5 Zellen auf Gruppen mit 1, 2, 3, 4 oder 5 Zellen und so weiter.
-
Aus den vorstehenden Ausführungen ist zu erkennen, dass verschiedene Ausführungsformen der vorliegenden Offenbarung hierin zu Veranschaulichungszwecken beschrieben wurden, und dass verschiedene Modifikationen vorgenommen werden können, ohne vorn Schutzumfang und Geist der vorliegenden Offenbarung abzuweichen. Demgemäß sind die verschiedenen, hierin offenbarten Ausführungsformen nicht als einschränkend gedacht, wobei der wahre Schutzumfang und Geist durch die folgenden Ansprüche angezeigt wird.