-
HINTERGRUND DER ERFINDUNG
-
Gebiet der Erfindung
-
Die vorliegende Erfindung betrifft allgemein Datenverarbeitungssysteme und insbesondere verschiedene Ausführungsformen zur Verwendung kohärent verbundener Schnittstellen in einem Netzwerkstapelrahmen in einer Datenverarbeitungsumgebung.
-
Beschreibung des Stands der Technik
-
In der heutigen Gesellschaft benutzen Verbraucher, Geschäftsleute, Lehrer und andere verschiedene Datenverarbeitungs-Netzwerksysteme in zunehmender Häufigkeit in einer Vielzahl von Situationen. Computersysteme finden sich am Arbeitsplatz, zuhause oder in der Schule. Computersysteme können Datenspeichersysteme oder Plattenspeichersysteme zum Verarbeiten und Speichern von Daten umfassen. In den letzten Jahren haben sowohl Software- als auch Hardware-Technologien erstaunliche Fortschritte durchlaufen. Mit der neuen Technologie kommen immer mehr Funktionen hinzu und diese Datenverarbeitungssysteme sorgen für größeren Anwendungskomfort.
-
KURZDARSTELLUNG DER ERFINDUNG
-
Es werden verschiedene Ausführungsformen zur Verwendung kohärent verbundener Schnittstellen in einem Netzwerkstapelrahmen in einer Datenverarbeitungsumgebung bereitgestellt. Eine Mehrzahl von Netzwerkpuffern, die kohärent zwischen einer oder mehreren Anwendungen und einer Netzwerk-Schnittstelle verbunden sind, kann gemeinsam benutzt werden, während unter Verwendung eines Anwendungspuffers, eines Ringpuffers und einer Queuing- und Pooling-Operation ein oder mehrere Treiber und ein Betriebssystem umgangen werden.
-
Unter einem ersten Aspekt betrachtet, stellt die vorliegende Erfindung ein Verfahren zur Verwendung eines verbesserten Netzwerkstapelrahmens in einer Datenverarbeitungsumgebung durch einen Prozessor bereit, umfassend: gemeinsames Benutzen einer Mehrzahl von Netzwerkpuffern, die kohärent zwischen einer oder mehreren Anwendungen und einer Netzwerk-Schnittstelle verbunden sind, während unter Verwendung eines Anwendungspuffers, eines Ringpuffers und einer Queuing- und Pooling-Operation ein oder mehrere Treiber und ein Betriebssystem umgangen werden.
-
Vorzugsweise stellt die vorliegende Erfindung ein Verfahren bereit, welches ferner Steuern der Mehrzahl von Netzwerkpuffern durch eine gemeinsam genutzte Bibliothek umfasst.
-
Vorzugsweise stellt die vorliegende Erfindung ein Verfahren bereit, welches ferner gemeinsames Benutzen eines oder mehrerer Adressräume der Mehrzahl von Netzwerkpuffern zwischen der einen oder den mehreren Anwendungen unter Verwendung der Netzwerk-Schnittstelle umfasst, wobei die Mehrzahl von Netzwerkpuffern für Eingabe/Ausgabe-Steuerung (I/O-Steuerung) benutzt wird.
-
Vorzugsweise stellt die vorliegende Erfindung ein Verfahren bereit, welches ferner Austauschen von Speicherzeigern mit kohärent verbundenen Einheiten unter Verwendung des Ringpuffers umfasst.
-
Vorzugsweise stellt die vorliegende Erfindung ein Verfahren bereit, welches ferner Ausführen der Queuing- und Pooling-Operation für die Mehrzahl von Netzwerkpuffern zur Netzwerkpuffer-Übertragung, zum Netzwerkpuffer-Empfang und zur Netzwerkpuffer-Manipulation umfasst.
-
Vorzugsweise stellt die vorliegende Erfindung ein Verfahren bereit, wobei die Queuing- und Pooling-Operation ferner Verschieben, Zuordnen oder Neuzuordnen eines der Mehrzahl von Netzwerkpuffern aus einer oder mehreren Warteschlangen und einem oder mehreren Pools umfasst.
-
Vorzugsweise stellt die vorliegende Erfindung ein Verfahren bereit, welches ferner Einrichten einer gemeinsam genutzten Speicherzone und einer privaten Speicherzone unter Verwendung der Mehrzahl von Netzwerkspeichern umfasst.
-
Unter einem anderen Aspekt betrachtet, stellt die vorliegende Erfindung ein System zur Verwendung eines verbesserten Netzwerkstapelrahmens bereit, umfassend: einen oder mehrere Computer mit ausführbaren Anweisungen, welche, wenn sie ausgeführt werden, bewirken, dass das System Folgendes ausführt: gemeinsames Benutzen einer Mehrzahl von Netzwerkpuffern, die kohärent zwischen einer oder mehreren Anwendungen und einer Netzwerk-Schnittstelle verbunden sind, während unter Verwendung eines Anwendungspuffers, eines Ringpuffers und einer Queuing- und Pooling-Operation ein oder mehrere Treiber und ein Betriebssystem umgangen werden.
-
Vorzugsweise stellt die vorliegende Erfindung ein System bereit, wobei die ausführbaren Anweisungen, wenn sie ausgeführt werden, bewirken, dass das System die Mehrzahl von Netzwerkpuffern durch eine gemeinsam genutzte Bibliothek steuert.
-
Vorzugsweise stellt die vorliegende Erfindung ein System bereit, wobei die ausführbaren Anweisungen, wenn sie ausgeführt werden, bewirken, dass das System einen oder mehrere Adressräume der Mehrzahl von Netzwerkpuffern zwischen der einen oder den mehreren Anwendungen unter Verwendung der Netzwerk-Schnittstelle gemeinsam benutzt, wobei die Mehrzahl von Netzwerkpuffern zur Eingabe/Ausgabe-Steuerung (I/O-Steuerung) benutzt wird.
-
Vorzugsweise stellt die vorliegende Erfindung ein System bereit, wobei die ausführbaren Anweisungen, wenn sie ausgeführt werden, bewirken, dass das System unter Verwendung des Ringpuffers Speicherzeiger mit kohärent verbundenen Einheiten austauscht.
-
Vorzugsweise stellt die vorliegende Erfindung ein System bereit, wobei die ausführbaren Anweisungen, wenn sie ausgeführt werden, bewirken, dass das System die Queuing- und Pooling-Operation für die Mehrzahl von Netzwerkpuffern zur Netzwerkpuffer-Übertragung, zum Netzwerkpuffer-Empfang und zur Netzwerkpuffer-Manipulation ausführt.
-
Vorzugsweise stellt die vorliegende Erfindung ein System bereit, wobei die ausführbaren Anweisungen, wenn sie ausgeführt werden, bewirken, dass das System einen der Mehrzahl von Netzwerkpuffern aus einer oder mehreren Warteschlangen und einem oder mehreren Pools zur Ausführung der Queuing- und Pooling-Operation verschiebt, zuordnet oder neu zuordnet.
-
Vorzugsweise stellt die vorliegende Erfindung ein System bereit, wobei die ausführbaren Anweisungen, wenn sie ausgeführt werden, bewirken, dass das System unter Verwendung der Mehrzahl von Netzwerkpuffern eine gemeinsam genutzte Speicherzone und eine private Speicherzone einrichtet.
-
Unter einem weiteren Aspekt betrachtet, stellt die vorliegende Erfindung ein Computerprogrammprodukt zur Verwendung eines verbesserten Netzwerkstapelrahmens durch einen Prozessor bereit, wobei das Computerprogrammprodukt ein nichtflüchtiges computerlesbares Speichermedium mit darauf gespeicherten computerlesbaren Programmcodeteilen aufweist, wobei die computerlesbaren Programmcodeteile umfassen: einen ausführbaren Teil, mit welchem eine Mehrzahl von Netzwerkpuffern, die kohärent zwischen einer oder mehreren Anwendungen und einer Netzwerk-Schnittstelle verbunden sind, gemeinsam benutzt wird, während unter Verwendung eines Anwendungspuffers, eines Ringpuffers und einer Queuing- und Pooling-Operation ein oder mehrere Treiber und ein Betriebssystem umgangen werden.
-
Vorzugsweise stellt die vorliegende Erfindung ein Computerprogrammprodukt bereit, welches ferner einen ausführbaren Teil umfasst, mit welchem die Mehrzahl von Netzwerkpuffern durch eine gemeinsam genutzte Bibliothek gesteuert wird.
-
Vorzugsweise stellt die vorliegende Erfindung ein Computerprogrammprodukt bereit, welches ferner einen ausführbaren Teil umfasst, mit welchem ein oder mehrere Adressräume der Mehrzahl von Netzwerkpuffern zwischen der einen oder den mehreren Anwendungen unter Verwendung der Netzwerk-Schnittstelle gemeinsam genutzt werden, wobei die Mehrzahl von Netzwerkpuffern zur Eingabe/Ausgabe-Steuerung (I/O-Steuerung) benutzt wird.
-
Vorzugsweise stellt die vorliegende Erfindung ein Computerprogrammprodukt bereit, welches ferner einen ausführbaren Teil umfasst, mit welchem: unter Verwendung des Ringpuffers Speicherzeiger mit kohärent verbundenen Einheiten ausgetauscht werden; und die Queuing- und Pooling-Operation für die Mehrzahl von Netzwerkpuffern zur Netzwerkpuffer-Übertragung, zum Netzwerkpuffer-Empfang und zur Netzwerkpuffer-Manipulation ausgeführt wird.
-
Vorzugsweise stellt die vorliegende Erfindung ein Computerprogrammprodukt bereit, welches ferner einen ausführbaren Teil umfasst, mit welchem einer der Mehrzahl von Netzwerkpuffern aus einer oder mehreren Warteschlangen und einem oder mehreren Pools zur Ausführung der Queuing- und Pooling-Operation verschoben, zugeordnet oder neu zugeordnet wird.
-
Vorzugsweise stellt die vorliegende Erfindung ein Computerprogrammprodukt bereit, welches ferner einen ausführbaren Teil umfasst, mit welchem unter Verwendung der Mehrzahl von Netzwerkpuffern eine gemeinsam genutzte Speicherzone und eine private Speicherzone eingerichtet werden.
-
Figurenliste
-
Damit die Vorteile der Erfindung einfach zu verstehen sind, wird unter Bezugnahme auf spezielle Ausführungsformen, die in den beigefügten Zeichnungen veranschaulicht werden, eine genauere Beschreibung der oben kurz beschriebenen Erfindung gegeben. In dem Verständnis, dass diese Zeichnungen lediglich typische Ausführungsformen der Erfindung zeigen und deswegen nicht als deren Umfang beschränkend anzusehen sind, wird die Erfindung in zusätzlicher Genauigkeit und Ausführlichkeit durch die Verwendung der beigefügten Zeichnungen beschrieben und erläutert, in welchen:
- 1 ein Blockschaubild ist, welches einen beispielhaften Cloud-Computing-Knoten gemäß einer Ausführungsform der vorliegenden Erfindung zeigt;
- 2 ein weiteres Blockschaubild ist, welches eine beispielhafte Cloud-Computing-Umgebung gemäß einer Ausführungsform der vorliegenden Erfindung zeigt;
- 3 ein weiteres Blockschaubild ist, welches Abstraktionsmodellschichten gemäß einer Ausführungsform der vorliegenden Erfindung zeigt;
- 4 ein Blockschaubild ist, welches einen Betriebsmodus zur Verwendung kohärent verbundener Schnittstellen in einem Netzwerkstapelrahmen in einer Datenverarbeitungsumgebung zeigt, in welchem verschiedene Aspekte der vorliegenden Erfindung realisiert werden können;
- 5A bis 5B Schaubilder sind, welche die Verwendung kohärent verbundener Schnittstellen in einem Netzwerkstapelrahmen in einer Datenverarbeitungsumgebung gemäß Aspekten der vorliegenden Erfindung zeigt;
- 6A bis 6B Schaubilder der Nutzung eines Ringpuffers zur Verwendung kohärent verbundener Schnittstellen in einem Netzwerkstapelrahmen in einer Datenverarbeitungsumgebung gemäß Aspekten der vorliegenden Erfindung sind;
- 7 ein Blockschaubild ist, welches einen Betriebsmodus zur Verwendung kohärent verbundener Schnittstellen in einem Netzwerkstapelrahmen in einer Datenverarbeitungsumgebung zeigt, in welchem Aspekte der vorliegenden Erfindung realisiert werden können; und
- 8 ein Ablaufplan ist, welcher ein weiteres beispielhaftes Verfahren zur Verwendung kohärent verbundener Schnittstellen in einem Netzwerkstapelrahmen in einer Datenverarbeitungsumgebung zeigt, in welchem Aspekte der vorliegenden Erfindung realisiert werden können.
-
DETAILLIERTE BESCHREIBUNG DER ZEICHNUNGEN
-
Vorab ist Cache-Kohärenz, auch als Speicherkohärenz bezeichnet, ein Problem, welches die Ausgestaltung von Computersystemen beeinflusst, in welchem zwei oder mehr Prozessoren oder Kerne einen gemeinsamen Speicherbereich nutzen. In einem Ein-Prozessor-System gibt es nur ein Verarbeitungselement, welches die gesamte Arbeit verrichtet, und deswegen nur ein Verarbeitungselement, welches eine gegebene Speicherstelle auslesen oder beschreiben kann. Als ein Ergebnis wird, wenn ein Wert geändert wird, bei allen folgenden Leseoperationen der entsprechenden Speicherstelle der aktualisierte Wert gesehen, auch wenn er cache-gespeichert ist.
-
In Multiprozessorsystemen (oder Multikernsystemen) gibt es hingegen zwei oder mehr Verarbeitungselemente, die gleichzeitig arbeiten, und so ist es möglich, dass sie gleichzeitig auf dieselbe Speicherstelle zugreifen. Wenn keiner der Prozessoren die Daten an dieser Stelle ändert, kann der Prozessor die Daten zeitlich unbegrenzt gemeinsam nutzen und die Daten nach Belieben cache-speichern. Sobald aber ein Prozessor die Stelle aktualisiert, könnte der andere Prozessor an einer veralteten Kopie arbeiten, die sich in seinem lokalen Cache befindet. Demzufolge wird ein Schema benötigt, um alle Verarbeitungselemente über Änderungen gemeinsam genutzter Werte zu benachrichtigen; ein solches Schema ist als ein „Cache-Kohärenz-Protokoll“ bekannt, und wenn ein solches Protokoll eingesetzt wird, wird dem System „Cache-Kohärenz“ zugesprochen. Die genaue Natur und Bedeutung der Cache-Kohärenz wird durch das Konsistenzmodell bestimmt, welches das Kohärenzprotokoll implementiert.
-
Ein Cache-Kohärenz-Protokoll definiert typischerweise eine Gruppe von Cache-Zuständen, die in Verbindung mit cache-gespeicherten Kopien von Speicherblöcken gespeichert werden, sowie die Ereignisse, die Übergänge zwischen den Cache-Zuständen auslösen, und die Cache-Zustände, an welchen Übergänge vorgenommen werden. Somit wird, um die Kohärenz von Daten überall in dem System zu bewahren, das Cache-Kohärenz-Protokoll verwendet, wie zum Beispiel ein verzeichnisbasiertes Protokoll, ein snoopbasiertes Protokoll, Kombinationen davon oder andere Variationen, um zumindest ein minimales erforderliches Maß an Kohärenz zwischen den „Ansichten“ der Inhalte des Systemspeichers der verschiedenen Prozessorkerne sicherzustellen.
-
Außerdem weisen heutige Datenverarbeitungssysteme mit verschiedenen Systembussen, Systemverbindungen und Verbindungen zwischen verschiedenen Anwendungen und lokalen oder benachbarten Systemen verschiedene Protokolle zum Übertragen von Daten und gemeinsames Nutzen von Speicher zwischen verschiedenen Komponenten auf. Beispielsweise ist es das Ziel von Datenverarbeitungssystemen, eine erhöhte Leistungsfähigkeit unter Verwendung von Cache-Kohärenz bereitzustellen, um kohärente Verbindungen zwischen Universalprozessoren und Beschleunigungseinheiten für eine heterogene Datenverarbeitung zu ermöglichen, wobei versucht wird, die Bandbreitebeschränkungen oder die Latenzzeit zu vermeiden, die einigen Verbindungen innewohnen, wie zum Beispiel auf einem PCI-Express-Bus (PCIe-Bus) (wo die PCIe eine mehrspurige Punkt-zu-Punkt-Verbindung ist, die von einer Spur auf viele erweitert werden kann). Das heißt, Datenverarbeitungssysteme versuchen, eine erhöhte Datenverarbeitungseffizienz bereitzustellen und dabei die Cache-Kohärenz zu bewahren, wenn sie für Datenzugriff über Speicherräume verschiedener Arten von Prozessoren sorgen. Beispielsweise ist die offene Coherent Accelerator Processor Interface (CAPI) eine Schnittstelle zwischen Prozessor und Beschleunigern zum Erhöhen der Bandbreite und Bereitstellen einer kürzeren Latenzzeit. Als ein anderes Beispiel kann eine Cache Coherent Interconnect for Accelerators („CCIX“) genutzt werden, welche auf einer PCI-Express (PCIe) basiert, um eine Chip-zu-Chip-Verbindung für Hochgeschwindigkeits-Hardware-Beschleuniger bereitzustellen, und auf bestimmte Anwendungen abzielt.
-
Jedoch durchlaufen auch innerhalb dieser modernen Datenverarbeitungssysteme ein Übertragen, Austauschen und/oder Empfangen von Daten zwischen verschiedenen Anwendungen und lokalen oder benachbarten Systemen immer noch Netzwerk-Latenzzeit entlang dem Netzwerkpfad. Beispielsweise umfasst im Kontext dicht integrierter High-Performance-Computersysteme („HPC"-Systeme) mit wenigen Schaltschichten ein Übermitteln von Daten an die Zielanwendung eine Netzwerk-Pfadverzögerung (sobald innerhalb einer Zieleinheit), welche mehrere Nanosekunden (ns) länger als beim Übertragen der Daten zwischen Servern sein kann (z.B. zumindest innerhalb eines Maßstabs weniger an der gleichen Stelle angeordneter Racks, insbesondere wenn ein Netzwerkstapel überquert werden muss). Somit besteht ein Bedarf, ein cache-kohärentes Verbindungssystem bereitzustellen, um die Cache-Kohärenz zu bewahren, die Bandbreite zu erhöhen und den Netzwerkzugriffs-Latenzpfad in HPC-Datenverarbeitungssystemen/heterogenen Datenverarbeitungssystemen zu verringern/eliminieren, wo die Netzwerkzugriffs-Latenzzeit zu der Zeit beginnt, wenn ein Datensignal an einer Netzwerk-Schnittstelle ankommt, und damit endet, dass ein gemeinsam genutzter Speicher die Daten aufweist (z.B. mit einer tatsächlichen Datenkopie der Daten in den Zielspeicher/die Zielspeicherzellen endet), um empfangenden Anwendungen zu ermöglichen, die Daten zu nutzen.
-
Somit stellen verschiedene Ausführungsformen, wie hierin beschrieben, eine verbesserte Netzwerkarchitektur bereit, welche die cache-kohärente Verbindung von Prozessoren nutzt, die eine direkte Bewältigung von lokalen Systembusarchitekturagnostischen Lasten ermöglichen, und Operationen am Systemspeicher durch Peripheriegeräte außerhalb des Chips speichert. Auf diese Weise werden Speichertransaktionen von einer speziellen Busarchitektur entkoppelt und dieselbe unmodifizierte kohärent-verbundene Logik (von Beschleunigern, Netzwerk-Schnittstellen usw.) kann mit verschiedenen SoC-Architekturen verbunden werden. In einem Aspekt verbessern die verschiedenen Ausführungsformen einen Netzwerkzugriffs-Latenzpfad und sorgen für ein gemeinsames Nutzen von Speicher zwischen einer oder mehreren Anwendungen und einer oder mehreren Netzwerk-Schnittstellen, während ein oder mehrere Treiber und das Betriebssystem umgangen werden.
-
Die Mechanismen der veranschaulichten Ausführungsformen der verbesserten Netzwerkarchitektur ermöglichen Beschleunigern außerhalb des Chips zu erreichen, mit einem System-on-a-Chip („SoC“) integriert zu werden und unter Verwendung desselben Speicherzugriffs-Datenpfads (z.B. eines Hardware-Datenpfads ähnlich On-Chip-Einheiten (z.B. Prozessoren, Coprozessoren), welcher vergleichbare Latenzzeit und Bandbreite aufweist) direkt zu beherrschen und cache-kohärent in Systemspeicher zu laden und zu speichern.
-
In einem weiteren Aspekt stellt die vorliegende Erfindung einen direkten Zugriff auf die Daten im Speicher bereit, die Erzeugung von Unterbrechungen und die Fähigkeit zum atomaren Konkurrieren um Spinlocks mit CPUs werden ebenfalls durch kohärent verbundene Ports bereitgestellt. Dies bedeutet, dass es, wenn eine Anwendung und eine kohärent verbundene Einheit in einem Datenformat übereinstimmen, kein Erfordernis dafür gibt, dass eine Einheitentreiberunterstützung eines Betriebssystems und eine DMAprogrammierbare Hardware für Streu/Sammel-Datenübertragungen verwendet werden. Durch Ermöglichen und Bereitstellen einer treiberlosen Integration werden das Programmierungsmodell und die Anwendungsprogrammierungs-Schnittstelle („API“), welche als ein gegenseitiger Thread-Ausschluss erscheint, d.h. die Netzwerk-I/O ist als eine spezielle Form eines Hardware-Thread integriert, weiter vereinfacht, wodurch für eine erhöhte Effizienz der Datenverarbeitung gesorgt wird.
-
Dementsprechend stellt die vorliegende Erfindung einen Netzwerkrahmenstapel bereit, wobei Speicherpuffer (z.B. „Netzwerkpuffer“) zwischen den verschiedenen Anwendungen und der Netzwerk-Schnittstelle (den Netzwerk-Schnittstellen) gemeinsam benutzt werden. In einem Aspekt können die Speicherpuffer austauschbar mit Netzwerkpuffern verwendet werden. Die Netzwerkpuffer können durch ein Betriebssystem („OS“) für eine oder mehrere Anwendungen zugeordnet werden und unter der Steuerung durch eine Bibliothek (z.B. eine gemeinsam genutzte Bibliothek) angeboten werden. In einem Aspekt kann ein zwischen allen teilnehmenden Anwendungen gemeinsam genutzter Adressraum, der über einen gemeinsamen Speichermechanismus eingerichtet wird, bereitgestellt werden und zur Eingabe/Ausgabe-Steuerung („I/O“-Steuerung) genutzt werden (d.h. Austausch von Zeigern und Spinlock-Handling). Dann kann jede Anwendung einen durch eine Speicher-Management-Einheit (Memory Management Unit, „MMU“) geschützten gemeinsamen Zugriff haben, wobei sich der Beschleuniger auf einem gemeinsam genutzten Adressraum befindet, welcher die Anwendungs-Netzwerkpuffer enthält.
-
Auf diese Weise ermöglicht die vorliegende Erfindung, dass Anwendungen lediglich durch Handling von Zeigern und Spinlocks nahtlos in einem Speicher befindliche Daten über ein Netzwerk austauschen, um eine Netzwerkkommunikation des Remote-Direct-Memory-Access-Stils („RDMA"-Stils) weiter zu vereinfachen, indem sie eine Technologie kohärent verbundener Ports anwenden, wodurch eine unvorhergesehene Latenzzeit (z.B. beträgt eine aktuelle RDMA-Gesamtlatenzzeit 1,2 Mikrosekunden „µs“ mit einer Schaltschicht, während kohärent verbundene Schnittstellen diese Latenzzeit bis auf 600 bis 700 Nanosekunden „ns“ herunterbringen können) für die Datenübermittlung innerhalb einer „Black Box“ erreicht wird und ermöglicht wird, dass die Netzwerkmedien ultrahohe Bursts nutzen (d.h. nun ist ein einzelner Burst auf Hardware-Ebene für die gesamte Größe einer Meldung auf Anwendungsebene möglich). Bei den veranschaulichten Ausführungsformen des Netzwerkstapelrahmen-Systems handelt es sich um einen Rahmen, der agnostisch für alle Medium-Access-Netzwerkprotokolle („MAC"-Netzwerkprotokolle) oder Link-Layer-Control-Netzwerkprotokolle („LLC"-Netzwerkprotokolle) ist und somit potenziell in jede beliebige Paket- oder Schaltungs-Netzwerktechnologie integriert werden kann.
-
Es versteht sich vorab, dass das Umsetzen der hierin angeführten Lehren nicht auf eine Cloud-Computing-Umgebung beschränkt ist, obwohl diese Offenbarung eine ausführliche Beschreibung von Cloud-Computing umfasst. Stattdessen können Ausführungsformen der vorliegenden Erfindung gemeinsam mit jeder beliebigen Art von jetzt bekannter oder später erfundener Datenverarbeitungsumgebung umgesetzt werden.
-
Cloud-Computing ist ein Dienstbereitstellungsmodell zum Ermöglichen eines problemlosen bedarfsgesteuerten Netzwerkzugriffs auf einen gemeinsam genutzten Pool von konfigurierbaren Datenverarbeitungsressourcen (z.B. Netzwerke, Netzwerkbandbreite, Server, Verarbeitung, Hauptspeicher, Speicher, Anwendungen, virtuelle Maschinen und Dienste), die mit minimalem Verwaltungsaufwand bzw. minimaler Interaktion mit einem Anbieter des Diensts schnell bereitgestellt und freigegeben werden können. Dieses Cloud-Modell kann mindestens fünf Eigenschaften umfassen, mindestens drei Dienstmodelle und mindestens vier Einsatzmodelle.
-
Bei den Eigenschaften handelt es sich um die folgenden:
- On-Demand Self-Service: Ein Cloud-Nutzer kann einseitig automatisch nach Bedarf für Datenverarbeitungsfunktionen wie Serverzeit und Netzwerkspeicher sorgen, ohne dass eine menschliche Interaktion mit dem Anbieter der Dienste erforderlich ist.
- Broad Network Access: Es sind Funktionen über ein Netzwerk verfügbar, auf die durch Standardmechanismen zugegriffen wird, welche die Verwendung durch heterogene Thin- oder Thick-Client-Plattformen (z.B. Mobiltelefone, Laptops und PDAs) unterstützen.
- Resource-Pooling: Die Datenverarbeitungsressourcen des Anbieters werden zusammengeschlossen, um mehreren Nutzern unter Verwendung eines Multi-Tenant-Modells zu dienen, wobei verschiedene physische und virtuelle Ressourcen dynamisch nach Bedarf zugewiesen und neu zugewiesen werden. Es gibt eine gefühlte Standortunabhängigkeit, da der Nutzer allgemein keine Kontrolle oder Kenntnis über den genauen Standort der bereitgestellten Ressourcen hat, aber in der Lage sein kann, einen Standort auf einer höheren Abstraktionsebene festzulegen (z.B. Land, Staat oder Rechenzentrum).
- Rapid Elasticity: Funktionen können für eine schnelle horizontale Skalierung (Scale-out) schnell und elastisch bereitgestellt werden, in einigen Fällen auch automatisch, und für ein schnelles Scale-in schnell freigegeben werden. Für den Nutzer erscheinen die für das Bereitstellen verfügbaren Funktionen häufig unbegrenzt und sie können jederzeit in jeder beliebigen Menge gekauft werden.
- Measured Service: Cloud-Systeme steuern und optimieren die Verwendung von Ressourcen automatisch, indem sie eine Messfunktion auf einer gewissen Abstraktionsebene nutzen, die für die Art von Dienst geeignet ist (z.B. Speicher, Verarbeitung, Bandbreite sowie aktive Benutzerkonten). Die Nutzung von Ressourcen kann überwacht, gesteuert und gemeldet werden, wodurch sowohl für den Anbieter als auch für den Nutzer des verwendeten Dienstes Transparenz geschaffen wird.
-
Bei den Dienstmodellen handelt es sich um die folgenden:
- Software as a Service (SaaS): Die dem Nutzer bereitgestellte Funktion besteht darin, die in einer Cloud-Infrastruktur ablaufenden Anwendungen des Anbieters zu verwenden. Auf die Anwendungen kann über eine Thin-Client-Schnittstelle wie z.B. einen Web-Browser von verschiedenen Client-Einheiten aus zugegriffen werden (z.B. auf dem Web basierende E-Mail). Der Nutzer verwaltet oder steuert die zugrunde liegende Cloud-Infrastruktur nicht, darunter das Netzwerk, Server, Betriebssysteme, Speicher bzw. sogar einzelne Anwendungsfunktionen, mit der möglichen Ausnahme von eingeschränkten benutzerspezifischen Anwendungskonfigurationseinstellungen.
- Platform as a Service (PaaS): Die dem Nutzer bereitgestellte Funktion besteht darin, durch einen Nutzer erstellte oder erhaltene Anwendungen, die unter Verwendung von durch den Anbieter unterstützten Programmiersprachen und Tools erstellt wurden, in der Cloud-Infrastruktur einzusetzen. Der Nutzer verwaltet oder steuert die zugrunde liegende Cloud-Infrastruktur nicht, darunter Netzwerke, Server, Betriebssysteme bzw. Speicher, hat aber die Kontrolle über die eingesetzten Anwendungen und möglicherweise über Konfigurationen der Application Hosting Environment.
- Infrastructure as a Service (laaS): Die dem Nutzer bereitgestellte Funktion besteht darin, ein Verarbeiten, Speicher, Netzwerke und andere grundlegende Datenverarbeitungsressourcen bereitzustellen, wobei der Nutzer in der Lage ist, beliebige Software einzusetzen und auszuführen, zu der Betriebssysteme und Anwendungen gehören können. Der Nutzer verwaltet oder steuert die zugrunde liegende Cloud-Infrastruktur nicht, hat aber die Kontrolle über Betriebssysteme, Speicher, eingesetzte Anwendungen und möglicherweise eine eingeschränkte Kontrolle über ausgewählte Netzwerkkomponenten (z.B. Host-Firewalls).
-
Bei den Einsatzmodellen handelt es sich um die folgenden:
- Private Cloud: Die Cloud-Infrastruktur wird einzig und allein für eine Organisation betrieben. Sie kann durch die Organisation oder einen Dritten verwaltet werden und kann sich in den eigenen Räumen oder in fremden Räumen befinden.
- Community Cloud: Die Cloud-Infrastruktur wird von mehreren Organisationen gemeinsam genutzt und unterstützt eine spezielle Benutzergemeinschaft, die gemeinsame Angelegenheiten hat (z.B. Mission, Sicherheitsanforderungen, Richtlinien sowie Überlegungen bezüglich der Einhaltung von Vorschriften). Sie kann durch die Organisationen oder einen Dritten verwaltet werden und kann sich in den eigenen Räumen oder in fremden Räumen befinden.
- Public Cloud: Die Cloud-Infrastruktur wird der allgemeinen Öffentlichkeit oder einer großen Industriegruppe zur Verfügung gestellt und sie gehört einer Cloud-Dienste verkaufenden Organisation.
- Hybrid Cloud: Die Cloud-Infrastruktur ist eine Zusammensetzung aus zwei oder mehreren Clouds (Private, Community oder Public), die zwar einzelne Einheiten bleiben, aber durch eine standardisierte oder proprietäre Technologie miteinander verbunden sind, die Daten- und Anwendungsportierbarkeit ermöglicht (z.B. Cloud-Bursting für den Lastenausgleich zwischen Clouds).
- Eine Cloud-Computing-Umgebung ist dienstorientiert mit Fokus auf Statusunabhängigkeit, geringer Kopplung, Modularität und semantischer Interoperabilität. Im Zentrum des Cloud-Computing steht eine Infrastruktur, die ein Netzwerk aus zusammengeschalteten Knoten aufweist.
-
Nun Bezug nehmend auf 1, ist dort ein Schema eines Beispiels eines Cloud-Computing-Knotens dargestellt. Der Cloud-Computing-Knoten 10 ist lediglich ein Beispiel eines geeigneten Cloud-Computing-Knotens und soll keine Beschränkung des Verwendungs- oder Funktionalitätsumfangs von Ausführungsformen der hierin beschriebenen Erfindung nahelegen. Dennoch kann der Cloud-Computing-Knoten 10 implementiert werden und/oder jede der oben angeführten Funktionalitäten ausführen.
-
In dem Cloud-Computing-Knoten 10 gibt es ein Computersystem/einen Server 12, welches/welcher mit zahlreichen anderen Universal- oder Spezial-Datenverarbeitungssystem-Umgebungen oder-Konfigurationen betriebsfähig ist. Beispiele für gut bekannte Datenverarbeitungssysteme, Umgebungen und/oder Konfigurationen, die für eine Verwendung mit dem Computersystem/Server 12 geeignet sein können, umfassen, ohne darauf beschränkt zu sein, Personal-Computersysteme, Server-Computersysteme, Thin Clients, Thick Clients, Hand- oder Laptop-Einheiten, Multiprozessorsysteme, Systeme auf Mikroprozessor-Basis, Set-top-Boxes, programmierbare Verbraucherelektronik, Netzwerk-PCs, Minicomputersysteme, Mainframe-Computersysteme und verteilte Cloud-Computing-Umgebungen, welche beliebige der obigen Systeme oder Einheiten umfassen, und dergleichen.
-
Das Computersystem/der Server 12 kann im allgemeinen Kontext von computersystem-ausführbaren Anweisungen beschrieben werden, z.B. Programmmodulen, die von einem Computersystem ausgeführt werden. Allgemein können Programmmodule Routinen, Programme, Objekte, Komponenten, Logik, Datenstrukturen usw. umfassen, welche bestimmte Aufgaben erfüllen oder bestimmte abstrakte Datentypen implementieren. Das Computersystem/der Server 12 kann in verteilten Cloud-Computing-Umgebungen ausgeführt werden, wo Aufgaben durch entfernt angeordnete Verarbeitungseinheiten erfüllt werden, welche durch ein Kommunikationsnetzwerk verbunden sind. In einer verteilten Cloud-Computing-Umgebung können Programmmodule sowohl in lokalen als auch in entfernt angeordneten Computersystem-Speichermedien angeordnet sein, umfassend Speichereinheiten.
-
Wie in 1 dargestellt, ist das Computersystem/der Server 12 im Cloud-Computing-Knoten 10 in der Form einer Universal-Datenverarbeitungseinheit dargestellt. Die Komponenten des Computersystems/Servers 12 können, ohne darauf beschränkt zu sein, einen oder mehrere Prozessoren oder eine oder mehrere Verarbeitungseinheiten 16, einen Systemspeicher 28 und einen Bus 18 umfassen, welcher verschiedene Systemkomponenten einschließlich des Systemspeichers 28 mit dem Prozessor 16 verbindet.
-
Der Bus 18 repräsentiert eine oder mehrere von mehreren Arten von Busstrukturen, umfassend einen Speicherbus oder eine Speichersteuerung, einen Peripheriebus, einen beschleunigten Graphik-Port und einen Prozessor- oder lokalen Bus, wobei eine beliebige aus einer Vielfalt von Busarchitekturen verwendet wird. Als Beispiel umfassen solche Architekturen, ohne darauf beschränkt zu sein, einen Industry-Standard-Architecture-Bus (ISA-Bus), einen Micro-Channel-Architecture-Bus (MCA-Bus), einen Enhanced-ISA-Bus (EISA-Bus), einen lokalen Video-Electronics-Standards-Architecture-Bus (VESA-Bus) und einen Peripheral-Component-Interconnect-Bus (PCI-Bus).
-
Das Computersystem/der Server 12 umfasst typischerweise eine Vielfalt von durch ein Computersystem lesbaren Medien. Solche Medien können beliebige verfügbare Medien sein, auf die das Computersystem/der Server 12 zugreifen kann, und es umfasst sowohl flüchtige als auch nicht-flüchtige Medien, entnehmbare und nicht-entnehmbare Medien.
-
Der Systemspeicher 28 kann durch ein Computersystem lesbare Medien in der Form eines flüchtigen Speichers umfassen, wie z.B. eines Direktzugriffsspeichers (RAM) 30 und/oder eines Cache-Speichers 32. Das Computersystem/der Server 12 kann ferner andere entnehmbare/nicht-entnehmbare, flüchtige/nicht-flüchtige Computersystem-Speichermedien umfassen. Lediglich beispielhaft kann das Speichersystem 34 zum Auslesen aus einem nicht-entnehmbaren nicht-flüchtigen magnetischen Medium (nicht dargestellt und typischerweise als ein „Festplattenlaufwerk“ bezeichnet) und zum Schreiben in selbiges bereitgestellt werden. Wenngleich nicht dargestellt, können ein magnetisches Plattenlaufwerk zum Auslesen aus einer entnehmbaren nicht-flüchtigen Magnetplatte (z.B. einer „Diskette“) und zum Schreiben in selbige und ein optisches Plattenlaufwerk zum Auslesen aus einer entnehmbaren nicht-flüchtigen optischen Platte, z.B. einer CD-ROM, einer DVD-ROM oder anderer optischer Medien, und zum Schreiben in selbige bereitgestellt werden. In solchen Fällen kann jedes durch eine oder mehrere Datenmedien-Schnittstellen mit dem Bus 18 verbunden sein. Wie nachstehend weiter dargestellt und beschrieben wird, kann der Systemspeicher 28 mindestens ein Programmprodukt umfassen, welches einen Satz von Programmmodulen (z.B. mindestens eines) aufweist, die so konfiguriert sind, dass sie die Funktionen von Ausführungsformen der Erfindung ausführen.
-
Das Programm/Hilfsprogramm 40, welches eine Gruppe von Programmmodulen 42 (mindestens eines) aufweist, kann beispielsweise, ohne darauf beschränkt zu sein, im Systemspeicher 28 gespeichert sein, ebenso wie ein Betriebssystem, ein oder mehrere Anwendungsprogramme, andere Programmmodule und Programmdaten. Jedes aus dem Betriebssystem, dem einen oder den mehreren Anwendungsprogrammen, den anderen Programmmodulen und den Programmdaten oder eine Kombination davon kann eine Implementierung einer Netzwerkumgebung umfassen. Die Programmmodule 42 führen allgemein die Funktionen und/oder Methoden von Ausführungsformen der Erfindung aus, wie hierin beschrieben.
-
Das Computersystem/der Server 12 kann auch mit einer oder mehreren externen Einheiten 14, wie z.B. einer Tastatur, einer Zeigeeinheit, einer Anzeigevorrichtung 24 usw.; mit einer oder mehreren Einheiten, welche einem Benutzer ermöglichen, mit dem Computersystem/Server 12 zu interagieren; und/oder mit beliebigen Einheiten (z.B. Netzwerkkarte, Modem usw.) Daten austauschen, welche ermöglichen, dass das Computersystem/der Server 12 mit einer oder mehreren anderen Datenverarbeitungseinheiten Daten austauscht. Ein solcher Datenaustausch kann über Eingabe/Ausgabe-Schnittstellen (I/O-Schnittstellen) 22 erfolgen. Außerdem kann das Computersystem/der Server 12 über einen Netzwerkadapter 20 mit einem oder mehreren Netzwerken wie einem lokalen Netzwerk (LAN), einem allgemeinen Fernbereichsnetz (WAN) und/oder einem öffentlichen Netzwerk (z.B. dem Internet) Daten austauschen. Wie dargestellt, tauscht der Netzwerkadapter 20 über einen Bus 18 mit den anderen Komponenten des Computersystems/Servers 12 Daten aus. Es versteht sich, dass, wenngleich nicht dargestellt, andere Hardware- und/oder Software-Komponenten in Verbindung mit dem Computersystem/Server 12 verwendet werden könnten. Beispiele umfassen, ohne darauf beschränkt zu sein: Mikrocode, Einheitentreiber, redundante Verarbeitungseinheiten, externe Plattenlaufwerk-Arrays, RAID-Systeme, Bandlaufwerke und Datenarchivierungs-Speichersysteme usw.
-
Im Kontext der vorliegenden Erfindung, und wie der Fachmann erkennt, können verschiedene Komponenten, die in 1 dargestellt sind, in einem fahrenden Fahrzeug angeordnet sein. Beispielsweise können einige der Verarbeitungs- und Datenspeicherungsfunktionen, die mit Mechanismen der veranschaulichten Ausführungsformen in Verbindung stehen, lokal über lokale Verarbeitungskomponenten stattfinden, während die gleichen Komponenten über ein Netzwerk mit entfernt angeordneten Datenverarbeitungs- und Speicherungskomponenten der verteilten Datenverarbeitung verbunden sind, um verschiedene Zwecke der vorliegenden Erfindung zu erfüllen. Wie wiederum der Fachmann erkennt, soll die vorliegende Veranschaulichung lediglich eine Teilmenge von dem übermitteln, was ein vollständiges verbundenes Netzwerk von Komponenten einer verteilten Datenverarbeitung sein kann, die zusammen verschiedene erfinderische Aspekte ausführen.
-
Bezug nehmend auf 2, ist dort die veranschaulichende Cloud-Computing-Umgebung 50 abgebildet. Wie dargestellt, umfasst die Cloud-Computing-Umgebung 50 einen oder mehrere Cloud-Computing-Knoten 10, mit denen von Cloud-Nutzern verwendete lokale Datenverarbeitungseinheiten wie zum Beispiel ein elektronischer Assistent (PDA, Personal Digital Assistant) oder ein Mobiltelefon 54A, ein Desktop-Computer 54B, ein Laptop-Computer 54C und/oder ein Automobil-Computersystem 54N Daten austauschen können. Die Knoten 10 können miteinander Daten austauschen. Sie können physisch oder virtuell in ein oder mehrere Netzwerke wie Private, Community, Public oder Hybrid-Clouds, wie oben beschrieben, oder eine Kombination davon gruppiert sein (nicht dargestellt). Dies ermöglicht es der Cloud-Computing-Umgebung 50, Infrastructure, Platform und/oder Software as a Service anzubieten, für die ein Cloud-Nutzer keine Ressourcen auf einer lokalen Datenverarbeitungseinheit vorhalten muss. Es versteht sich, dass die Arten der in 2 dargestellten Datenverarbeitungseinheiten 54A bis N lediglich veranschaulichend sein sollen und dass die Datenverarbeitungsknoten 10 und die Cloud-Computing-Umgebung 50 über eine beliebige Art von Netzwerk und/oder über eine beliebige Art von über ein Netzwerk aufrufbarer Verbindung (z.B. unter Verwendung eines Web-Browsers) mit einer beliebigen Art von computergestützter Einheit Daten austauschen können.
-
Nun Bezug nehmend auf 3, ist dort ein Satz von funktionalen Abstraktionsschichten dargestellt, die durch die Cloud-Computing-Umgebung 50 (2) bereitgestellt werden. Es versteht sich vorab, dass die in 3 dargestellten Komponenten, Schichten und Funktionen lediglich veranschaulichend sein sollen und dass Ausführungsformen der Erfindung nicht darauf beschränkt sind. Wie dargestellt, werden die folgenden Schichten und entsprechenden Funktionen bereitgestellt:
-
Die Einheitenschicht 55 umfasst physische und/oder virtuelle Einheiten, eingebettet mit Elektronik, Sensoren, Betätigungselementen und anderen Objekten zum Erfüllen verschiedener Aufgaben in einer Cloud-Computing-Umgebung 50 und/oder diese sind selbständig. Jede der Einheiten in der Einheitenschicht 55 beinhaltet eine Vernetzungsfunktion mit anderen funktionellen Abstraktionsschichten, derart, dass Informationen, die von den Einheiten erhalten werden, dahin bereitgestellt werden können und/oder Informationen aus den anderen Abstraktionsschichten den Einheiten bereitgestellt werden können. In einer Ausführungsform können die verschiedenen Einheiten, die zu der Einheitenschicht 55 gehören, ein Netzwerk von Einheiten umfassen, die zusammen als das „Internet der Dinge“ (Internet of Things, loT) bezeichnet werden. Ein solches Netzwerk von Einheiten ermöglicht einen gegenseitigen Datenaustausch, eine Zusammenstellung und eine Verbreitung von Daten zum Erfüllen einer großen Vielfalt von Zwecken, wie der Fachmann erkennt.
-
Die Einheitenschicht 55, wie dargestellt umfasst einen Sensor 52, ein Betätigungselement 53, einen „lernenden“ Thermostat 56 mit integrierter Verarbeitungs-, Sensor- und Netzwerkelektronik, eine Kamera 57, einen steuerbaren Haushaltsanschluss/eine steuerbare Haushaltssteckdose 58 und einen steuerbaren elektrischen Schalter 59, wie dargestellt. Andere mögliche Einheiten können, ohne darauf beschränkt zu sein, verschiedene weitere Sensoreinheiten, Netzwerkeinheiten, Elektronikeinheiten (z.B. eine entfernt angeordnete Steuereinheit), weitere Betätigungseinheiten, so genannte „smarte“ Anwendungen wie einen Kühlschrank oder eine Waschmaschine/einen Trockner und eine breite Vielfalt anderer möglicher verbundener Objekte umfassen.
-
Eine Hardware- und Software-Schicht 60 umfasst Hardware- und Software-Komponenten. Zu Beispielen für Hardware-Komponenten gehören: Mainframe-Computer 61; auf der RISC-Architektur (Reduced Instruction Set Computer Architecture) beruhende Server 62; Server 63; Blade-Server 64; Speichereinheiten 65; und Netzwerke sowie Netzwerkkomponenten 66. In einigen Ausführungsformen umfassen Software-Komponenten eine Netzwerk-Anwendungsserver-Software 67 und eine Datenbank-Software 68.
-
Eine Virtualisierungsschicht 870 stellt eine Abstraktionsschicht bereit, aus der die folgenden Beispiele für virtuelle Einheiten bereitgestellt werden können: virtuelle Server 71, virtueller Speicher 72, virtuelle Netzwerke 73, darunter virtuelle private Netzwerke, virtuelle Anwendungen und Betriebssysteme 74 und virtuelle Clients 75.
-
In einem Beispiel kann eine Verwaltungsschicht 80 die nachfolgend beschriebenen Funktionen bereitstellen. Eine Ressourcen-Bereitstellung 81 stellt eine dynamische Beschaffung von Datenverarbeitungsressourcen sowie anderen Ressourcen bereit, die zum Durchführen von Aufgaben innerhalb der Cloud-Computing-Umgebung verwendet werden. Messen und Preisfindung 82 stellt eine Kostenverfolgung beim Verwenden von Ressourcen innerhalb der Cloud-Computing-Umgebung sowie eine Abrechnung oder Rechnungsstellung für den Verbrauch dieser Ressourcen bereit. In einem Beispiel können diese Ressourcen Anwendungs-Software-Lizenzen umfassen. Sicherheit stellt eine Identitätsüberprüfung für Cloud-Nutzer und -Aufgaben sowie Schutz für Daten und andere Ressourcen bereit. Ein Benutzerportal 83 stellt Nutzern und Systemadministratoren den Zugriff auf die Cloud-Computing-Umgebung bereit. Eine Dienstumfangsverwaltung 84 stellt eine Zuordnung und Verwaltung von Cloud-Computing-Ressourcen bereit, so dass die benötigten Dienstumfänge erreicht werden. Planen und Erfüllen von Vereinbarungen zum Dienstumfang (SLA, Service Level Agreement) 85 stellt eine Vorausbestimmung und eine Beschaffung von Cloud-Computing-Ressourcen, für die ein zukünftiges Erfordernis vorausgesehen wird, gemäß einer SLA bereit.
-
Eine Arbeitslastschicht 90 stellt Beispiele für die Funktionalität bereit, für welche die Cloud-Computing-Umgebung verwendet werden kann. Zu Beispielen für Arbeitslasten und Funktionen, die von dieser Schicht bereitgestellt werden können, gehören: Abbildung und Navigation 91; Software-Entwicklung und Lebenszyklusverwaltung 92; Bereitstellung von Ausbildung in virtuellen Klassenzimmern 93; Datenanalyseverarbeitung 94; Transaktionsverarbeitung 95; und im Kontext der veranschaulichten Ausführungsformen der vorliegenden Erfindung verschiedene Arbeitslasten und Funktionen 96 zur Verwendung kohärent verbundener Schnittstellen in einem Netzwerkstapelrahmen. Außerdem können Arbeitslasten und Funktionen 96 zur Verwendung kohärent verbundener Schnittstellen in einem Netzwerkstapelrahmen solche Operationen wie Datenanalyse umfassen. Der Fachmann erkennt, dass die Arbeitslasten und Funktionen 96 zur Verwendung kohärent verbundener Schnittstellen in einem Netzwerkstapelrahmen auch in Verbindung mit anderen Teilen der verschiedenen Abstraktionsschichten arbeiten können, z.B. jenen in Hardware und Software 60, Virtualisierung 70, Verwaltung 80 und anderen Arbeitslasten 90 (wie zum Beispiel Datenanalyseverarbeitung 94), um die verschiedenen Zwecke der veranschaulichten Ausführungsformen der vorliegenden Erfindung zu erfüllen.
-
Nun übergehend zu 4, ist dort ein Blockschaubild dargestellt, welches beispielhafte funktionelle Komponenten 400 gemäß verschiedenen Mechanismen der veranschaulichten Ausführungsformen zeigt. 4 veranschaulicht ein System 400 zur Verwendung kohärent verbundener Schnittstellen in einem Netzwerkstapelrahmen. Wie man sehen wird, können viele der funktionellen Blöcke auch als „Module“ oder „Komponenten“ einer Funktionalität angesehen werden, in demselben beschreibenden Sinn, wie zuvor in 1 bis 3 beschrieben. In Anbetracht dessen können die Modul/Komponenten-Blöcke 400 auch in verschiedene Hardware- und Software-Komponenten eines Systems zur intelligenten kausalen Wissensextraktion gemäß der vorliegenden Erfindung integriert sein. Viele der funktionellen Blöcke 400 können als Hintergrundverfahren auf verschiedenen Komponenten ablaufen, entweder in Komponenten einer verteilten Datenverarbeitung oder auf der Benutzereinheit oder woanders.
-
Wie in 4 veranschaulicht, ist dort ein Dienst zum gemeinsamen Benutzen von Netzwerkstapeln 410 dargestellt, welcher eine Verarbeitungseinheit 420 („Prozessoren“) und einen Speicher 430, welche auch die Verarbeitungseinheit 16 („Prozessor“) und der Speicher 28 der 1 sein können, zum Ausführen verschiedener Rechen-, Datenverarbeitungs- und anderer Funktionalitäten gemäß verschiedenen Aspekten der vorliegenden Erfindung umfasst. Die Verarbeitungseinheit 420 kann mit dem Speicher 430 Daten austauschen. Der Dienst zum gemeinsamen Benutzen von Netzwerkstapeln 410 kann von dem Computersystem/Server 12 der 1 bereitgestellt werden.
-
Wie der Fachmann erkennt, dient die Abbildung der verschiedenen funktionellen Einheiten in dem Dienst zum gemeinsamen Benutzen von Netzwerkstapeln 410 der Veranschaulichung, da die funktionellen Einheiten innerhalb des Diensts zum gemeinsamen Benutzen von Netzwerkstapeln 410 oder woanders innerhalb und/oder zwischen Komponenten einer verteilten Datenverarbeitung angeordnet sein können.
-
Der Dienst zum gemeinsamen Benutzen von Netzwerkstapeln 410 kann eine Komponente zum gemeinsamen Benutzen 440, eine Anwendungspufferkomponente 450, eine Ringpufferkomponente 460 und eine Queuing- und Pooling-Komponente 470 umfassen. So ermöglicht der Dienst zum gemeinsamen Benutzen von Netzwerkstapeln 410 eine kohärente Verbindung von Netzwerk-Schnittstellen mit einem Systemspeicher, wobei Treiber und ein OS vollständig umgangen werden.
-
In einer Ausführungsform kann lediglich beispielhaft die Komponente zum gemeinsamen Benutzen 440 (und/oder in Verbindung mit der Anwendungspufferkomponente, der Ringpufferkomponente 460, der Queuing- und Pooling-Komponente 470 oder einer Kombination davon) eine Mehrzahl von Netzwerkpuffern, die kohärent zwischen einer oder mehreren Anwendungen und einer Netzwerk-Schnittstelle verbunden sind, gleichzeitig benutzen, während unter Verwendung eines Anwendungspuffers, eines Ringpuffers und einer Queuing- und Pooling-Operation ein oder mehrere Treiber und ein Betriebssystem umgangen werden.
-
Die Komponente zum gemeinsamen Benutzen 440 kann eine gemeinsam genutzte Bibliothek (siehe auch gemeinsam genutzte Bibliothek 504 der 5A bis 5B) umfassen und/oder damit verbunden sein, die Mehrzahl von Netzwerkpuffern durch eine gemeinsam genutzte Bibliothek steuern.
-
Die Komponente zum gemeinsamen Benutzen 440 kann einen oder mehrere Adressräume der Mehrzahl von Netzwerkpuffern zwischen der einen oder den mehreren Anwendungen unter Verwendung der Netzwerk-Schnittstelle gemeinsam nutzen, wobei die Mehrzahl von Netzwerkpuffern zur Eingabe/Ausgabe-Steuerung (I/O-Steuerung) benutzt wird.
-
Die Anwendungspufferkomponente 450 kann mit der kohärent verbundenen Netzwerk-Schnittstelle (siehe die kohärent verbundene Netzwerk-Schnittstelle 512 der 5) einen oder mehrere virtuelle Anwendungsadressräume mehrerer Netzwerkpuffer sicher gemeinsam nutzen. Die Ringpufferkomponente 460 kann Speicherzeiger mit einer oder mehreren kohärent verbundenen Einheiten austauschen.
-
Die Queuing- und Pooling-Komponente 470 kann die Queuing- und Pooling-Operation für die Mehrzahl von Netzwerkpuffern zur Netzwerkpufferübertragung, zum Netzwerkpufferempfang und zur Netzwerkpuffer-Manipulation ausführen. Die Queuing- und Pooling-Komponente 470 kann zur Ausführung der Queuing- und Pooling-Operation einen der Mehrzahl von Netzwerkpuffern aus einer oder mehreren Warteschlangen und einem oder mehreren Pools verschieben, zuordnen oder neu zuordnen. Das heißt, die Queuing- und Pooling-Komponente 470 kann für eine Netzwerkpufferübertragung, einen Netzwerkpufferempfang und eine Netzwerkpuffer-Manipulation sorgen und Puffer, die zu verschiedenen virtuellen Anwendungsadressräumen gehören, mit einer Netzwerk-Schnittstelle in einer kohärenten Domäne gemeinsam nutzen.
-
Die Komponente zum gemeinsamen Benutzen 440 kann unter Verwendung der Mehrzahl von Netzwerkpuffern einen gemeinsam genutzten Speicherbereich und einen privaten Speicherbereich einrichten.
-
Nun übergehend zu 5A bis 5B, zeigt ein Schaubild ein Schema eines Netzwerkstapelrahmens 500 und 515 zur Verwendung kohärent verbundener Schnittstellen. Wie man sehen wird, können viele der funktionellen Blöcke auch als „Module“ oder „Komponenten“ einer Funktionalität angesehen werden, in demselben beschreibenden Sinn, wie zuvor in 1 bis 4 beschrieben. Außerdem können auch eine oder mehrere der Operationen und Schritte der 1 bis 4 in einer oder mehreren Operationen oder Handlungen der 5A bis 5B enthalten sein. Zugunsten einer kurzen Darstellung wird hier eine wiederholte Beschreibung gleicher Elemente, Komponenten, Module, Dienste, Anwendungen und/oder Funktionen, die in anderen hierin beschriebenen Ausführungsformen eingesetzt werden, weggelassen.
-
Wie dargestellt, umfasst der Netzwerkstapelrahmen 500 eine oder mehrere Anwendungen (z.B. die App 1 oder die „Anwendung 502A“ und die App N oder die „Anwendung 502N“) und/oder ist damit verbunden. Außerdem können die eine oder die mehreren Anwendungen 502A bis 502N mit einer gemeinsam genutzten Bibliothek 504 Daten austauschen. Der Netzwerkstapelrahmen 500 kann auch einen oder mehrere Netzwerkpuffer umfassen, wie zum Beispiel die Netzwerkpuffer 510A bis 510C. In einem Aspekt können die Netzwerkpuffer 510A bis 510C gemeinsam genutzt werden oder als „privat“ beschränkt sein. Zum Beispiel kann der Netzwerkpuffer 510A ein gemeinsam genutzter Netzwerkpuffer sein, während die Netzwerkpuffer 510B und 510C private Netzwerkpuffer sein können. Die Netzwerkpuffer 510A bis 510C können mit einer kohärent verbundenen Netzwerk-Schnittstelle 512 Daten austauschen/in Verbindung stehen. So können die Netzwerkpuffer 510A bis 510C zwischen einer oder mehreren Anwendungen (z.B. den Anwendungen 502A bis 502N) und einer Netzwerk-Schnittstelle (z.B. der kohärent verbundenen Netzwerk-Schnittstelle 512) kohärent verbunden sein, während unter Verwendung eines Anwendungspuffers, eines Ringpuffers (siehe auch 6A bis 6B) und einer Queuing- und Pooling-Operation (siehe auch 6A bis 6B) ein oder mehrere Treiber und ein Betriebssystem umgangen werden.
-
In einem Aspekt ist lediglich beispielhaft die Einrichtung der Adressräume für die Netzwerkpuffer 510A bis 510C für N beispielhafte Anwendungen, wie zum Beispiel die Anwendungen 502A bis 502N, dargestellt. Die gemeinsam genutzte Bibliothek 504 kann einen gemeinsamen Bereich über gemeinsam genutztem Speicher (z.B. „APP_SHARED“ zum gemeinsamen Nutzen eines Zugriffs für eine Anwendung in den Netzwerkpuffern 510A) und einen privaten Bereich (z.B. „APP_PRIVATE“ zum Bereitstellen eines privaten Zugriffs für eine Anwendung in den Netzwerkpuffern 510B bis 510C) einrichten. Außerdem beziehen sich, wie hierin beschrieben, die verschiedenen Konstrukte, welche den Netzwerkpufferstapel aufweisen, ebenfalls auf den benutzten Adressraum und die kohärent verbundene(n) Netzwerkschnittstelle(n) 512 kann (können) unter Nutzung einer Unterstützung auf Hardware-Ebene, wie zum Beispiel PCI PASID („Peripheral Component Interface („PCI“) Process Address Space Identifier („PASID“)) und dergleichen, gleichzeitig mit individuellen Anwendungsadressräumen verbunden werden.
-
In einem Aspekt kann als Teil der Verbindungseinrichtung mit einem oder mehreren entfernt angeordneten Gegenstücken eine Anwendung (z.B. die Anwendungen 502A bis 502N, bei welchen es sich um eine Benutzeranwendung handeln kann), eine Anzahl von verbundenen Netzwerkpuffern zum Datenaustausch reservieren, welche sich in einem privaten Bereich befinden (z.B. „APP_PRIVATE“ zum Bereitstellen eines privaten Zugriffs für eine Anwendung in den Netzwerkpuffern 510B bis 510C). Im Kontext jeder Anwendung kann ein Netzwerkpuffer (z.B. einer der Netzwerkpuffer 510A bis 510C) zu einem gegebenen Zeitpunkt zu nur einem der folgenden 6 Konstrukte gehören, welche von der gemeinsam genutzten Bibliothek 504 für jede Anwendung separat unterhalten werden können. Außerdem kann jede/jeder der Warteschlangen und Pools, wie hierin beschrieben, zum Ausführen und Durchführen der verschiedenen Funktionen jeder/jedes der beschriebenen Warteschlangen und Pools die Ringpuffer 620A bis 620N der 6A bis 6B benutzen.
-
In einem ersten Konstrukt oder einem „ersten Pool“ kann ein freier globaler Software-Pool („s/w"-Pool) (z.B. Standardzustand) ein gemeinsamer Pool für alle Verbindungen über alle Anwendungen sein und alle Netzwerkpuffer gehören während der Initialisierung hierher, bis eine Handlung vorgenommen wird. Die Zeiger auf all diese Netzwerkpuffer werden von der gemeinsam genutzten Bibliothek 504 im „APP_SHARED“-Bereich in dem Netzwerkpuffer 510A unterhalten, klassifiziert je aktiver Anwendung, und enthält nur die Netzwerkpufferzeiger.
-
In einem zweiten Konstrukt oder einem „zweiten Pool“ kann es sich bei einem freien globalen Hardware-Pool („h/w"-Pool) proaktiv um eine Anzahl freier Netzwerkpuffer handeln, die in diesen freien globalen Hardware-Pool verschoben werden, und die freien Netzwerkpuffer können aus dem freien globalen Software-Pool („s/w"-Pool) verschoben werden. Jede Anwendung kann Puffer zu diesem Pool (z.B. dem freien globalen Software-Pool („s/w"-Pool)) beigetragen haben und sollte den freien globalen Software-Pool („s/w“-Pool) immer wieder auffüllen, wenn Netzwerkpuffer für eine Datenaufnahme verbraucht werden. Wenn der freie globale Software-Pool („s/w"-Pool) für eine gegebene Anwendung leer wird, stoppt der freie globale Software-Pool („s/w"-Pool) die Annahme von Netzwerkpuffern von entfernt angeordneten Knoten, die für diese Anwendung vorgesehen sind. Die Zeiger für diesen freien globalen Software-Pool („s/w"-Pool) befinden sich im „APP_SHARED“-Bereich in dem Netzwerkpuffer 510A und enthält nur die Netzwerkpufferzeiger.
-
In einem dritten Konstrukt oder einem „dritten Pool“ kann ein Verarbeitungs-Pool (können Verarbeitungs-Pools) Netzwerkpuffer umfassen, welche durch lokale Prozessoren, Graphikverarbeitungseinheiten („GPUs“), Beschleuniger usw. aktiv modifiziert werden, was „je Anwendungs-Pool“ erfolgt und für Zwecke der Zusammenstellung von Datenmüll unterhalten wird. Wenn die Netzwerkpuffer nicht zurückgesendet werden, werden die Netzwerkpuffer von der gemeinsam genutzten Bibliothek 504 nach Beendigung der Besitzeranwendung als Datenmüll zusammengestellt. Der Verarbeitungs-Pool kann (Die Verarbeitungs-Pools können) sich in dem „APP_SHARED“-Bereich in dem Netzwerkpuffer 510A befinden und enthält nur die Netzwerkpufferzeiger.
-
In einem dritten Konstrukt oder einer „dritten Warteschlange“ kann eine Empfangswarteschlange (können Empfangswarteschlangen) Netzwerkpuffer umfassen, welche mit Inhalten aktualisiert werden, die von dem entfernt angeordneten Host gesendet werden, mit welchem der Datenaustausch eingerichtet ist, wobei je Fernverbindung in dem „APP_SHARED“-Bereich in dem Netzwerkpuffer 510A nur eine Empfangswarteschlange erzeugt wird (beherbergt z.B. nur die Pufferzeiger). Bei der (den) Empfangswarteschlange(n) kann es sich um eine First-In-First-Out-Warteschlange („FIFO“-Warteschlange) handeln.
-
In einem vierten Konstrukt oder einer „vierten Warteschlange“ kann eine globale Sendewarteschlange Netzwerkpuffer umfassen, welche zum Senden markiert sind, und die globale Sendewarteschlange wird zwischen allen Verbindungen über alle Anwendungen gemeinsam genutzt, so dass Hardware auf alle Netzwerkpuffer zugreift und eine Übertragung durchführt (z.B. beherbergt die globale Sendewarteschlange nur die Netzwerkpufferzeiger). Die globale Sendewarteschlange ist eine FIFO-Warteschlange, welche Zeiger enthält und sich im „APP_SHARED“-Bereich im Netzwerkpuffer 510A befindet.
-
In einem fünften Konstrukt oder einer „fünften Warteschlange“ kann eine Gesendet-Warteschlange (können Gesendet-Warteschlangen) Netzwerkpuffer umfassen, für welche das Senden abgeschlossen ist und welche über diese Warteschlange an die Besitzeranwendung zurückgesendet werden können. Bei der (den) Gesendet-Warteschlange(n) kann es sich um eine FIFO-Warteschlange mit Zeigern handeln, die im „APP_SHARED“-Bereich im Netzwerkpuffer 510A angeordnet sind (welche ein geschützter Netzwerkpufferraum sind).
-
In einem weiteren Aspekt, wie in 5B abgebildet, können alle Warteschlangen und Pools zum Beispiel im „APP_SHARED“-Bereich im Netzwerkpuffer 510A unterhalten werden und können virtuelle Adresszeiger enthalten, welche auf verschiedene Anwendungspuffer (z.B. APP-1-Puffer und APP-N-Puffer) zeigen, die in jedem Anwendungsadressraum (des „APP_PRIVATE“-Bereichs in den Netzwerkpuffern 510B bis 510C) angeordnet sind.
-
Die Anwendungspuffer (z.B. APP-1-Puffer und APP-N-Puffer) können in Reaktion auf Aufforderungen von einer oder mehreren Anwendungsprogrammierungs-Schnittstellen („APIs“) und/oder auf Hardware-Ereignisse zwischen den verschiedenen Pools und Warteschlangen (wie oben beschrieben) transferiert/verschoben werden. Das heißt, Anwendungen können Netzwerkpuffer von einem freien globalen s/w-Pool zu ihrem Verarbeitungs-Pool verschieben. Jeder Netzwerkpuffer, der zu einem Anwendungsverarbeitungs-Pool gehört, kann durch die Besitzeranwendung in die globale Sendewarteschlange verschoben werden. Eine Anwendung kann einen oder mehrere Netzwerkpuffer aus der Gesendet-Warteschlange einer Anwendung wiederverwenden, indem sie den einen oder die mehreren Netzwerkpuffer zurück in den Verarbeitungs-Pool transferiert/verschiebt. Die Gesendet-Warteschlange kann für jede Anwendung eine feste Größe aufweisen, so dass, wenn die Gesendet-Warteschlange die Anwendung ignoriert, die Gesendet-Warteschlange beginnen kann, die Puffer in den freien globalen s/w-Pool zurückzusenden, wenn die Gesendet-Warteschlange voll ist. Jeder Netzwerkpuffer in der Empfangswarteschlange kann nach dem Lesen durch die gemeinsam genutzte Bibliothek 504 in den Verarbeitungs-Pool entfernt werden. Für jeden Netzwerkpuffer, der an die Empfangswarteschlange zurückgesendet wird, verschiebt die gemeinsam genutzte Bibliothek 504 einen Netzwerkpuffer aus dem freien globalen s/w-Pool in den freien globalen h/w-Pool, so dass die Hardware weiter Daten von dem entfernt angeordneten Host empfangen kann.
-
In einem weiteren Aspekt unterhält die gemeinsam genutzte Bibliothek 504 (welche eine Software-Bibliothek sein kann) zur Netzwerkadressierung und für logische Verbindungen (d.h. einen eingerichteten Datenaustausch zwischen einer lokalen Anwendung, die auf einem lokalen Host abläuft, und einer entfernt angeordneten Anwendung, die auf einem entfernt angeordneten Host abläuft) einen Verbindungsstapel, der all die aktiven Verbindungen von lokalen zu entfernt angeordneten Anwendungen aufweist. Verbindungs-Tupel (d.h. Tupel, welche all die erforderlichen Routing- und Kennungsinformationen zum Einrichten eines bidirektionalen Datenaustauschs zwischen einer lokalen Anwendung, die auf dem lokalen Host abläuft, und einer entfernt angeordneten Anwendung enthalten, die auf einem entfernt angeordneten Host abläuft) können eine feste Größe aufweisen und es kann über eindeutige Kennungen auf sie zugegriffen werden, welche auch als Versetzungen auf einem dedizierten Stapel fungieren, wo sie gespeichert werden. Jedes Verbindungs-Tupel kann 1) eine Zielverbindungskennung („ID“) und eine Netzwerkkennung (welche während einer Verbindungseinrichtung und spezifisch für die zugrunde liegende Netzwerkarchitektur/-technologie erhalten werden kann), 2) lokale Kennungen zum Zugreifen auf die verschiedenen Warteschlangen, 3) Anmeldedaten für die verschiedenen Warteschlangen, auf die das Verbindungs-Tupel Zugriff hat, und/oder 4) interne Port-Informationen aufweisen, so dass Netzwerkpuffer an eine Anwendung übermittelt werden können.
-
6A bis 6B sind Schaubilder 600 und 615 der Verwendung eines Ringpuffers zur Verwendung kohärent verbundener Schnittstellen in einem Netzwerkstapelrahmen in einer Datenverarbeitungsumgebung. Wie man sehen wird, können viele der funktionellen Blöcke auch als „Module“ oder „Komponenten“ einer Funktionalität angesehen werden, in demselben beschreibenden Sinn, wie zuvor in 1 bis 5A-5B beschrieben. Außerdem können auch eine oder mehrere der Operationen und Schritte der 1 bis 5A-5B in einer oder mehreren Operationen oder Handlungen der 6A bis 6B enthalten sein. Zugunsten einer kurzen Darstellung wird hier eine wiederholte Beschreibung gleicher Elemente, Komponenten, Module, Dienste, Anwendungen und/oder Funktionen, die in anderen hierin beschriebenen Ausführungsformen eingesetzt werden, weggelassen.
-
Wie dargestellt, ist ein Ringpuffer 620 (z.B. der Ringpuffer 620 der 6A und die Ringpuffer 620 bis 620N der 6B) abgebildet, welcher auf einem Systemspeicher angeordnet sein kann. In einem Aspekt kann, wenn eine Hardware-Komponente in der Lage ist, atomar um Spinlocks zu konkurrieren, für einen Ringpuffer-Datenaustausch mit dem Ringpuffer 620 ein Hardware-Software-Co-Design verwendet werden.
-
In einem Aspekt kann der Ringpuffer 620 einem Prozessor ähneln/Operationen ähnlich dem Verhalten eines Prozessors spiegeln (z.B. wie CPUs konkurrieren), aber ein Nur-Hardware-Thread kann von der Netzwerk-Schnittstelle (z.B. einer Netzwerk-Schnittstellen-Hardware 630) implementiert werden und kann erforderlich sein, um Daten aus dem Systemspeicher zu/aus der Netzwerk-Schnittstelle (z.B. der Netzwerk-Schnittstellen-Hardware 630) zu verschieben. Ein CPU-Thread kann ebenfalls für eine Übermittlung an Anwendungen erforderlich sein und wird von einer Bibliothek 610 hervorgebracht. Beispielsweise kann ein bestimmter atomarer Befehl (z.B. atomare eingebaute Befehle einer speziellen Prozessorarchitektur, die Bits in einem Register atomar aktivieren und deaktivieren können) verwendet werden, um einen gemeinsamen Zugriff auf den Ringpuffer 620 zu implementieren. Jedes Ringpufferexemplar weist ein einzelnes Register auf, welches darstellt, welche Felder des Ringpuffers gültige Einträge aufweisen. Spezieller stellt jede Bitposition dar, dass der entsprechende spezielle Ringpuffereintrag gültige Daten aufweist, wenn der Bitpositionswert gleich einem logischen ist, und er keine Daten enthält, wenn der Bitpositionswert gleich Null ist. Unter Nutzung der atomaren Operationen an dem zuvor erwähnten Register, welches anzeigt, welche Einträge in dem Ringpuffer 620 gültig sind, kann die kohärent verbundene Netzwerk-Schnittstelle den Puffer sicher mit der entsprechenden CPU (auf welcher die Software-Bibliothek abläuft) gemeinsam benutzen und Daten austauschen.
-
Wie in 6B klarer abgebildet, zeigen die Ringpuffer 620A bis 620N eine Ende-zu-Ende-Verbindung zwischen der gemeinsam genutzten Bibliothek 610 (z.B. Software-Bibliothek oder „Software-Seite“) und der Netzwerk-Schnittstellen-Hardware 630 (z.B. Hardware-Puffer, Netzwerkpuffer, Netzwerkpuffer-Zuteiler oder „Hardware-Seite“). Bei den Ringpuffern 620A bis 620N kann es sich um einen unidirektionalen gemeinsam genutzten Hardware-Software-Ringpuffer handeln (z.B. nutzen die Software-Bibliothek 610 und die Netzwerk-Schnittstellen -Hardware 630 den Ringpuffer gemeinsam) und für Interaktionen verwendet werden (z.B. zum Zeigeraustausch verwendet werden).
-
Die Ringpuffer 620A bis 620N können unidirektional sein und für verschiedene Pool/Warteschlangen-Typen müssen verschiedene Exemplare verwendet werden, wie zum Beispiel für den freien globalen Software-Pool („s/w"-Pool) 602A, den freien globalen Hardware-Pool („h/w"-Pool) 602B, den (die) Verarbeitungs-Pool(s) (d.h. Pools von Puffern, die aktuell von Anwendungs-Code manipuliert werden, der auf dem lokalen Host abläuft), die Empfangswarteschlange(n) 608A bis 606B (z.B. Empfangswarteschlangen je Verbindung), die globale Sendewarteschlange (d.h. eine einzelne Host-weite Warteschlange, die zwischen allen Anwendungen auf einem Host gemeinsam genutzt wird und welche all die Puffer enthält, die von der kohärent verbundenen Netzwerk-Schnittstelle gesendet werden müssen, aber noch nicht gesendet worden sind) 604A und 604B und/oder die globale(n) Gesendet-Warteschlange(n) 606A bis 606B (d.h. eine Gesendet-Warteschlange je Verbindung, enthält die Puffer, die durch die kohärent verbundene Netzwerk-Schnittstelle an den entfernt angeordneten Host gesendet worden sind, und daher kann die Anwendung sie wiederverwenden).
-
In einem Aspekt kann auf der Software-Seite ein Zuteiler-Thread 640 und auf der Hardware-Seite ein Prioritäts-Vermittler/Zuteiler 640 (z.B. ein Hardware-Puffer-Zuteiler) verwendet werden, welcher von den Ringpuffern 620A bis 620N zum Verschieben von Daten zwischen Systemspeicher und (zu/von) der Netzwerk-Schnittstelle verwendet werden kann. Somit kann jeder der Ringpuffer 620A bis 620N sowohl für Software-Funktionen als auch für Hardware-Funktionen verwendet werden.
-
Somit kann, lediglich beispielhaft, jeder der Ringpuffer 620A bis 620N Spinlocks von der Hardware-Seite (z.B. der Netzwerk-Schnittstellen-Hardware 630) ziehen und Hardware-Threads können sich gegenseitig von Software-Threads zum Erhalten der Daten ausschließen.
-
In einem Aspekt können die Ringpuffer 620A bis 620N nur zum unmittelbaren Transfer verwendet werden, so dass sowohl die Software- (z.B. Anwendung) als auch die Hardware-Seite (Netzwerk/Speicher) First-In-First-Out-Operationen („FIFO"-Operationen) zum Unterstützen asynchroner Operationen aufweisen können. Somit können die Ringpuffer 620A bis 620N Zeiger auf einen Adressraum abrufen und die verschiedenen Warteschlangen und Pools zum Entfernen, Verschieben und/oder Transferieren von Netzwerkpuffern von innerhalb Anwendungen und des Netzwerks verwenden.
-
Im Betrieb weist jede Anwendung beispielhaft einen Zustand auf und der Zustand kann der Zustand der Warteschlangen und Pools sein, welcher anzeigt, wo sich die Netzwerkpuffer in den Warteschlangen und Pools befinden (z.B. dem freien globalen Software-Pool („s/w"-Pool) 602A, dem freien globalen Hardware-Pool („h/w"-Pool) 602B, dem (den) Verarbeitungs-Pool(s) (diese sind virtuelle Pools, da sie sich auf Puffer beziehen, die nicht zu einem anderen Pool gehören und deswegen von Anwendungen manipuliert werden), der (den) Empfangswarteschlange(n) 608A bis 606B, der globalen Sendewarteschlange 604A und 604B und/oder der (den) globalen Gesendet-Warteschlange(n) 606A bis 606. Unter Verwendung des Zuteiler-Threads 640 wird jeder Zustand der Warteschlangen und der Pools gespiegelt, indem lediglich die Zeiger von der Software-Seite (s/w) gegen die der Hardware-Seite (h/w) ausgetauscht werden. Das Spiegeln des Zustands der Warteschlangen und der Pools ermöglicht eine Wahrnehmung etwaiger Veränderungen und etwaiger Aktualisierungen. Die Hardware-Seite weist nun dieselbe Sicht wie die Software-Bibliothek 610 auf und führt Handlungen durch, die auf die Hardware abgeladen werden können. Auf diese Weise verstehen sowohl die Software-Seite (s/w) als auch die Hardware-Seite (h/w), welcher der Netzwerkpuffer ausgesendet, transferiert/empfangen werden oder frei sein kann, indem Zeiger von der Software-Seite gegen die der Hardware-Seite ausgetauscht werden und die Zeiger auf die Warteschlangen und die Pools verwendet werden. So kann zum Beispiel die Hardware eine Entscheidung ausführen, eine Operation durchführen und Daten aus der Anwendung abrufen und die Ergebnisse mit Transparenz an die Anwendungen zurücksenden.
-
7 ist ein Blockschaubild, welches ein beispielhaftes treiberloses Ende-zu-Ende-Verbindungssystem 700 zur Verwendung kohärent verbundener Schnittstellen in einem Netzwerkstapelrahmen in einer Datenverarbeitungsumgebung darstellt. Wie man sehen wird, können viele der funktionellen Blöcke auch als „Module“ oder „Komponenten“ einer Funktionalität angesehen werden, in demselben beschreibenden Sinn, wie zuvor in 1 bis 6A-6B beschrieben. Außerdem können auch eine oder mehrere der Operationen und Schritte der 1 bis 6A-6B in einer oder mehreren Operationen oder Handlungen der 7 enthalten sein. Zugunsten einer kurzen Darstellung wird hier eine wiederholte Beschreibung gleicher Elemente, Komponenten, Module, Dienste, Anwendungen und/oder Funktionen, die in anderen hierin beschriebenen Ausführungsformen eingesetzt werden, weggelassen.
-
Wie abgebildet, kann das System 700 zur Verwendung kohärent verbundener Schnittstellen in einem Netzwerkstapelrahmen eine oder mehrere Systemverbindungen 710A und 710B umfassen. Die Systemverbindung 710A (welche die Kohärenzdomäne 1 aufweist) und 710B (welche die Kohärenzdomäne 2 aufweist) verbindet einen oder mehrere Anwendungspuffer 710C mit der Netzwerkpuffer-Hardware 710A und 710B (z.B. der Hardware-Seite), was über die Netzwerk-Schnittstellen-Hardware 730 ermöglicht werden kann, die auch mit den Netzwerk-Schaltschichten 712 verbunden ist. Außerdem kann die lokale Schnittstelle 712 auch verwendet werden, um jede Netzwerkpuffer-Hardware 710A und 710B mit den Netzwerk-Schaltschichten 712 (z.B. einer lokalen Netzwerk-Schnittstelle) zu verbinden. Kurzum, die Netzwerk-Schnittstellen-Hardware 730 ermöglicht, dass die Anwendungen 702A bis N (z.B. App 1, ..., App N, und dies ist die Software-Seite), die Bibliothek 704 und die Puffer 710 Ende-zu-Ende über die Netzwerk-Schnittstellen-Hardware 730 verbunden geleitet werden. Somit ermöglicht das System eine kohärente Verbindung der Netzwerk-Schnittstellen-Hardware 730 über die Systemverbindungen 710A bis 710B, wobei Treiber und OS vollständig umgangen werden. Die Anwendungspuffer werden direkt in die Netzwerk-Schnittstellen-Hardware-Ausgabepuffer kopiert, ohne jegliche Intervention durch das Betriebssystem.
-
8 ist ein Ablaufplan, welcher ein beispielhaftes Verfahren 800 zur Verwendung kohärent verbundener Schnittstellen in einem Netzwerkstapelrahmen in einer Datenverarbeitungsumgebung darstellt, in welcher verschiedene Aspekte der veranschaulichten Ausführungsformen implementiert werden können. Die Funktionalität 800 kann als ein Verfahren implementiert werden, welches als Anweisungen auf einer Maschine ausgeführt wird, wobei die Anweisungen auf mindestens einem computerlesbaren Speichermedium oder einem nichtflüchtigen maschinenlesbaren Speichermedium enthalten sind. Die Funktionalität 800 kann im Block 802 beginnen.
-
Ein oder mehrere Netzwerkpuffer, die kohärent zwischen einer oder mehreren Anwendungen und einer Netzwerk-Schnittstelle verbunden sind, wie im Block 804. Netzwerkpuffer, die kohärent zwischen einer oder mehreren Anwendungen und einer Netzwerk-Schnittstelle verbunden sind, können gemeinsam genutzt werden, während unter Verwendung eines Anwendungspuffers, eines Ringpuffers und einer Queuing- und Pooling-Operation zur Netzwerkkommunikation ein oder mehrere Treiber und ein Betriebssystem umgangen werden, wie im Block 806. Die Funktionalität 800 kann im Block 808 enden.
-
In einem Aspekt können die Operationen des Verfahrens 800 in Verbindung mit und/oder als Teil mindestens eines Blocks der 8 eines oder mehreres aus Folgendem umfassen. Durch die Operationen des Verfahrens 800 kann die Mehrzahl von Netzwerkpuffern durch eine gemeinsam genutzte Bibliothek gesteuert werden.
-
Durch die Operationen des Verfahrens 800 können ein oder mehrere Adressräume der Mehrzahl von Netzwerkpuffern zwischen der einen oder den mehreren Anwendungen unter Verwendung der Netzwerk-Schnittstelle gemeinsam genutzt werden. Die Mehrzahl von Netzwerkpuffern kann zur Eingabe/Ausgabe-Steuerung (I/O-Steuerung) verwendet werden. Ein Ringpuffer kann Speicherzeiger mit kohärent verbundenen Einheiten austauschen.
-
Durch die Operationen des Verfahrens 800 kann die Queuing- und Pooling-Operation für die Mehrzahl von Netzwerkpuffern zur Netzwerkpuffer-Übertragung, zum Netzwerkpuffer-Empfang und zur Netzwerkpuffer-Manipulation ausgeführt werden. Durch die Operationen des Verfahrens 800 kann einer der Mehrzahl von Netzwerkpuffern zur Ausführung der Queuing- und Pooling-Operation aus einer oder mehreren Warteschlangen und einem oder mehreren Pools verschoben, zugeordnet oder neu zugeordnet werden. Durch die Operationen des Verfahrens 800 können unter Verwendung der Mehrzahl von Netzwerkpuffern ein gemeinsam genutzter Speicherbereich und ein privater Speicherbereich eingerichtet werden.
-
Bei der vorliegenden Erfindung kann es sich um ein System, ein Verfahren und/oder ein Computerprogrammprodukt handeln. Das Computerprogrammprodukt kann ein computerlesbares Speichermedium (oder -medien) mit computerlesbaren Programmanweisungen darauf umfassen, um einen Prozessor dazu zu veranlassen, Aspekte der vorliegenden Erfindung auszuführen.
-
Bei dem computerlesbaren Speichermedium kann es sich um eine physische Einheit handeln, die Anweisungen zur Verwendung durch ein System zur Ausführung von Anweisungen behalten und speichern kann. Bei dem computerlesbaren Speichermedium kann es sich zum Beispiel um eine elektronische Speichereinheit, eine magnetische Speichereinheit, eine optische Speichereinheit, eine elektromagnetische Speichereinheit, eine Halbleiterspeichereinheit oder jede geeignete Kombination daraus handeln, ohne auf diese beschränkt zu sein. Zu einer nicht erschöpfenden Liste speziellerer Beispiele des computerlesbaren Speichermediums gehören die Folgenden: eine auswechselbare Computerdiskette, eine Festplatte, ein Direktzugriffsspeicher (RAM), ein Nur-Lese-Speicher (ROM), ein löschbarer programmierbarer Nur-Lese-Speicher (EPROM bzw. Flash-Speicher), ein statischer Direktzugriffsspeicher (SRAM), ein auswechselbarer Compact-Disk-Nur-Lese-Speicher (CD-ROM), eine Digital Versatile Disc (DVD), ein Speicher-Stick, eine Diskette, eine mechanisch codierte Einheit wie zum Beispiel Lochkarten oder erhabene Strukturen in einer Rille, auf denen Anweisungen gespeichert sind, und jede geeignete Kombination daraus. Ein computerlesbares Speichermedium soll in der Verwendung hierin nicht als flüchtige Signale an sich aufgefasst werden, wie zum Beispiel Funkwellen oder andere sich frei ausbreitende elektromagnetische Wellen, elektromagnetische Wellen, die sich durch einen Wellenleiter oder ein anderes Übertragungsmedium ausbreiten (z.B. Lichtwellenleiterkabel durchlaufende Lichtimpulse) oder durch einen Draht übertragene elektrische Signale.
-
Hierin beschriebene, computerlesbare Programmanweisungen können von einem computerlesbaren Speichermedium auf jeweilige Datenverarbeitungs-/ Verarbeitungseinheiten oder über ein Netzwerk wie zum Beispiel das Internet, ein lokales Netzwerk, ein Fernbereichsnetz und/oder ein drahtloses Netzwerk auf einen externen Computer oder eine externe Speichereinheit heruntergeladen werden. Das Netzwerk kann Kupferübertragungskabel, Lichtwellenleiter, drahtlose Übertragung, Router, Firewalls, Vermittlungseinheiten, Gateway-Computer und/oder Edge-Server umfassen. Eine Netzwerk-Adapterkarte oder Netzwerk-Schnittstelle in jeder Datenverarbeitungs-/ Verarbeitungseinheit empfängt computerlesbare Programmanweisungen aus dem Netzwerk und leitet die computerlesbaren Programmanweisungen zur Speicherung in einem computerlesbaren Speichermedium innerhalb der entsprechenden Datenverarbeitungs-/ Verarbeitungseinheit weiter.
-
Bei computerlesbaren Programmanweisungen zum Ausführen von Arbeitsschritten der vorliegenden Erfindung kann es sich um Assembler-Anweisungen, ISA-Anweisungen (Instruction-Set-Architecture), Maschinenanweisungen, maschinenabhängige Anweisungen, Mikrocode, Firmware-Anweisungen, zustandssetzende Daten oder entweder Quellcode oder Objektcode handeln, die in einer beliebigen Kombination aus einer oder mehreren Programmiersprachen geschrieben werden, darunter objektorientierte Programmiersprachen wie Smalltalk, C++ o.ä. sowie herkömmliche prozedurale Programmiersprachen wie die Programmiersprache „C“ oder ähnliche Programmiersprachen. Die computerlesbaren Programmanweisungen können vollständig auf dem Computer des Benutzers, teilweise auf dem Computer des Benutzers, als eigenständiges Software-Paket, teilweise auf dem Computer des Benutzers und teilweise auf einem entfernt angeordneten Computer oder vollständig auf dem entfernt angeordneten Computer oder Server ausgeführt werden. In letzterem Fall kann der entfernt angeordnete Computer mit dem Computer des Benutzers durch eine beliebige Art Netzwerk verbunden sein, darunter ein lokales Netzwerk (LAN) oder ein Fernbereichsnetz (WAN), oder die Verbindung kann mit einem externen Computer hergestellt werden (zum Beispiel über das Internet unter Verwendung eines Internet-Dienstanbieters). In einigen Ausführungsformen können elektronische Schaltungen, darunter zum Beispiel programmierbare Logikschaltungen, vor Ort programmierbare Gate-Arrays (FPGA, Field Programmable Gate Arrays) oder programmierbare Logik-Arrays (PLA, Programmable Logic Arrays) die computerlesbaren Programmanweisungen ausführen, indem sie Zustandsinformationen der computerlesbaren Programmanweisungen nutzen, um die elektronischen Schaltungen zu personalisieren, um Aspekte der vorliegenden Erfindung auszuführen.
-
Aspekte der vorliegenden Erfindung sind hierin unter Bezugnahme auf Ablaufpläne und/oder Blockschaubilder von Verfahren, Vorrichtungen (Systemen) und Computerprogrammprodukten gemäß Ausführungsformen der Erfindung beschrieben. Es wird darauf hingewiesen, dass jeder Block der Ablaufpläne und/oder der Blockschaubilder sowie Kombinationen von Blöcken in den Ablaufplänen und/oder den Blockschaubildern mittels computerlesbarer Programmanweisungen ausgeführt werden können.
-
Diese computerlesbaren Programmanweisungen können einem Prozessor eines Universalcomputers, eines Spezialcomputers oder einer anderen programmierbaren Datenverarbeitungsvorrichtung bereitgestellt werden, um eine Maschine zu erzeugen, so dass die über den Prozessor des Computers bzw. der anderen programmierbaren Datenverarbeitungsvorrichtung ausgeführten Anweisungen Mittel zur Umsetzung der in den Ablaufplänen und/oder dem Block oder den Blöcken der Blockschaubilder festgelegten Funktionen/Schritte erzeugen. Diese computerlesbaren Programmanweisungen können auch auf einem computerlesbaren Speichermedium gespeichert sein, das einen Computer, eine programmierbare Datenverarbeitungsvorrichtung und/oder andere Einheiten so steuern kann, dass sie auf eine bestimmte Art funktionieren, so dass das computerlesbare Speichermedium, auf dem Anweisungen gespeichert sind, ein Herstellungsprodukt umfasst, darunter Anweisungen, welche Aspekte der in den Ablaufplänen und/oder dem Block oder den Blöcken der Blockschaubilder festgelegten Funktion/Handlung umsetzen.
-
Die computerlesbaren Programmanweisungen können auch auf einen Computer, eine andere programmierbare Datenverarbeitungsvorrichtung oder eine andere Einheit geladen werden, um das Ausführen einer Reihe von Prozessschritten auf dem Computer bzw. der anderen programmierbaren Vorrichtung oder anderen Einheit zu verursachen, um einen auf einem Computer ausgeführten Prozess zu erzeugen, so dass die auf dem Computer, einer anderen programmierbaren Vorrichtung oder einer anderen Einheit ausgeführten Anweisungen die in den Ablaufplänen und/oder dem Block oder den Blöcken der Blockschaubilder festgelegten Funktionen/Handlungen umsetzen.
-
Die Ablaufpläne und die Blockschaubilder in den Figuren veranschaulichen die Architektur, die Funktionalität und den Betrieb möglicher Ausführungen von Systemen, Verfahren und Computerprogrammprodukten gemäß verschiedenen Ausführungsformen der vorliegenden Erfindung. In diesem Zusammenhang kann jeder Block in den Ablaufplänen oder Blockschaubildern ein Modul, ein Segment oder einen Teil von Anweisungen darstellen, die eine oder mehrere ausführbare Anweisungen zur Ausführung der festgelegten logischen Funktion(en) umfassen. In einigen alternativen Ausführungen können die in dem Block angegebenen Funktionen in einer anderen Reihenfolge als in den Figuren dargestellt stattfinden. Zwei nacheinander dargestellte Blöcke können zum Beispiel in Wirklichkeit im Wesentlichen gleichzeitig ausgeführt werden, oder die Blöcke können manchmal je nach entsprechender Funktionalität in umgekehrter Reihenfolge ausgeführt werden. Es ist ferner anzumerken, dass jeder Block der Blockschaubilder und/oder der Ablaufpläne sowie Kombinationen aus Blöcken in den Blockschaubildern und/oder den Ablaufplänen durch spezielle auf Hardware beruhende Systeme umgesetzt werden können, welche die festgelegten Funktionen oder Schritte ausführen oder Kombinationen aus Spezial-Hardware und Computeranweisungen ausführen.