-
Technisches Gebiet
-
Die hier beschriebenen Ausführungsformen beziehen sich im Allgemeinen auf die Verteilung von Anteilen eines Tasks unter den Kernen der Prozessorkomponenten der Verarbeitungsvorrichtungen eines verteilten Verarbeitungssystems.
-
Hintergrund
-
Es ist alltäglich geworden, sogenannte "Server-Farmen" aus zahlreichen Verarbeitungsvorrichtungen, die durch ein oder mehrere Netze gekoppelt sind, zu verwenden, um einen Task durch das Zuweisen mehrerer Anteile dieses Tasks unter mehreren Verarbeitungsvorrichtungen dieser Verarbeitungsvorrichtungen auszuführen, um diese Anteile parallel auszuführen. Derartige weitverbreitete Praktiken beinhalten jedoch eine Granularität der Zuweisung der Task-Anteile, die nur pro Verarbeitungsvorrichtung geschieht. Folglich wird jeder Task-Anteil einer ganzen Computer-Vorrichtung zugewiesen, wobei jede Verarbeitungsvorrichtung nur dem einen Task-Anteil, der ihr zugewiesen ist, vollständig gewidmet ist.
-
Das Erreichen eines feineren Grades der Granularität beim Zuweisen der Task-Anteile zu den einzelnen Prozessorkomponenten und/oder einzelnen Kernen der Prozessorkomponenten innerhalb einer Verarbeitungsvorrichtung ist durch das Einbeziehen einer Planungsroutine in eine Routine, die die Logik eines Task-Anteils, der einer Verarbeitungsvorrichtung zugewiesen ist, implementiert, möglich geworden. Diese Anforderung des Einbeziehens einer Planungsroutine innerhalb eines Task-Anteils, um eine derartige Granularität zu erreichen, erfordert jedoch irgendeinen Betrag der Kenntnis der speziellen Konfiguration der Prozessorkomponente(n) der Verarbeitungsvorrichtung, um eine effektive Zuweisung von Unterabschnitten zu ermöglichen, was eine unerwünschte Belastung für jene hinzufügt, die den Code für jeden Task schreiben. Insbesondere muss in Verarbeitungsvorrichtungen, die eine Basisprozessorkomponente aufweisen, die von mehreren Koprozessorkomponenten begleitet ist, die Planungsroutine oft spezifisch kompiliert werden, um durch die Basisprozessorkomponente ausgeführt zu werden, während die Anteile der Routine, die die Logik der Unterabschnitte eines Task-Anteils implementieren, für die Koprozessorkomponenten spezifisch kompiliert werden müssen.
-
Ferner ist die Tatsache, dass jede Verarbeitungsvorrichtung nur einem Task-Anteil vollständig gewidmet ist, oft für die verfügbaren Verarbeitungsbetriebsmittel innerhalb wenigstens einiger der Verarbeitungsvorrichtungen verschwenderisch, da es selten der Fall ist, dass jeder Task-Anteil angepasst werden kann, um von allen Kernen innerhalb jeder der Verarbeitungsvorrichtungen effektiv Gebrauch zu machen. Dies führt zwangsläufig zu der Verwendung von mehreren der Verarbeitungsvorrichtungen, um jeden Task auszuführen, wobei dadurch den anderen Tasks die Gelegenheit entzogen wird, von diesen Verarbeitungsvorrichtungen Gebrauch zu machen. Ferner führt eine derartige ineffiziente Verwendung der Verarbeitungs- und/oder anderen Betriebsmittel der Verarbeitungsvorrichtungen schließlich zu einer beträchtlichen Verschwendung von elektrischer Leistung.
-
Kurzbeschreibung der Zeichnungen
-
1 veranschaulicht eine Ausführungsform eines verteilten Verarbeitungssystems.
-
2A und 2B veranschaulichen jede eine Ausführungsform eines verteilten Verarbeitungssystems.
-
3–6 veranschaulichen jede einen Anteil einer Ausführungsform eines verteilten Verarbeitungssystems.
-
7–9 veranschaulichen jede einen logischen Ablauf gemäß einer Ausführungsform.
-
10 veranschaulicht eine Verarbeitungsarchitektur gemäß einer Ausführungsform.
-
Ausführliche Beschreibung
-
Die verschiedenen Ausführungsformen sind im Allgemeinen auf Techniken zum Zuweisen von Anteilen eines Tasks unter einzelnen Kernen einer oder mehrerer Prozessorkomponenten jeder Verarbeitungsvorrichtung eines verteilten Verarbeitungssystems gerichtet. Spezifischer werden die Task-Anteile eines Tasks zwischen den Kernen sowohl der Basisprozessorkomponenten als auch der Untersystem-Prozessorkomponenten der Verarbeitungsvorrichtungen eines verteilten Verarbeitungssystems verteilt. In Unterstützung einer derartigen Verteilung wird der Code des Task-Anteils für jeden Task-Anteil eines Tasks unter Verwendung mehrerer Kompilierer kompiliert, um Versionen der Routinen der Task-Anteile zu erzeugen, die durch die Kerne jedes Typs einer Prozessorkomponente, der in jeder der Verarbeitungsvorrichtungen vorhanden ist, ausführbar sind. Die mehreren Versionen jeder der Routinen der Task-Anteile werden zusammen mit irgendwelchen Task-Eingangsdaten, die erforderlich sein können, um den Task auszuführen, in einem Speicher-Server gespeichert, wo sie durch eine oder mehrere der Verarbeitungsvorrichtungen abgerufen werden können. Es werden Task-Beschreibungsdaten, die verschiedene Parameter des Tasks transportieren, einem Planungs-Server bereitgestellt, um es dem Planungs-Server zu ermöglichen, die Kerne der Prozessorkomponenten von einer oder mehreren der Verarbeitungsvorrichtungen auszuwählen und zuzuweisen, um die Task-Anteile des Tasks auszuführen.
-
Der Planungs-Server empfängt außerdem die Betriebsmitteldaten von jeder der Verarbeitungsvorrichtungen, die die Verarbeitungs- und anderen Betriebsmittel jeder Prozessorkomponente jeder Verarbeitungsvorrichtung des verteilten Verarbeitungssystems spezifizieren. Derartige Betriebsmitteldaten können Angaben der Anzahl und/oder der Typen der Kerne jeder Prozessorkomponente, die Größe der Caches, die Geschwindigkeiten der Kerne, die Leistungsaufnahmeraten der Kerne, die Größe der Speicher, die für die Prozessorkomponenten verfügbar sind, usw. enthalten.
-
Der Planungs-Server kann durch die Daten einer vorgegebenen Konfiguration und/oder Konfigurationsdaten, die dem Task zugeordnet sind, konfiguriert sein, um die Kerne, denen die Task-Anteile zuzuweisen sind, basierend auf einem gewählten Kompromiss zwischen dem Verringern des Zeitraums, um den Task auszuführen, und dem Verringern des Verbrauchs elektrischer Leistung, um den Task auszuführen, auszuwählen. Beispielhaft kann der Planungs-Server die Kerne der Prozessorkomponenten der Verarbeitungsvorrichtungen, die weniger Leistung verbrauchen, zuweisen, wann immer es möglich ist, um den Gesamtverbrauch elektrischer Leistung bei der Ausführung des Tasks zu verringern, wobei er dies auf Kosten der Geschwindigkeit beim Ausführen des Tasks ausführen kann. Als ein weiteres Beispiel kann der Planungs-Server schnellere Kerne der Prozessorkomponenten (z. B. Kerne der Prozessorkomponenten, die bei höheren Taktraten arbeiten oder Zugriff auf größere Caches haben) zuweisen, wann immer es möglich ist, um den Gesamtzeitraum zu verringern, der erforderlich ist, um den Task auszuführen. Alternativ oder zusätzlich kann der Planungs-Server die Kerne der Prozessorkomponenten derselben Prozessorkomponente und/oder der Prozessorkomponenten derselben Verarbeitungsvorrichtung zuweisen, wann immer es möglich ist, um den Zeitraum zum Ausführen des Tasks durch das Verringern der Fälle der Notwendigkeit, dass eine Interprozesskommunikation über ein Netz zwischen den Verarbeitungsvorrichtungen ausgeführt wird, zu verringern.
-
Der Planungs-Server sendet eine Angabe der Zuweisungen der Task-Anteile an jene der Verarbeitungsvorrichtungen, die einen oder mehrere Kerne der Prozessorkomponenten aufweisen, denen die Task-Anteile zugewiesen sind. Derartige Angaben können einen Zeiger darauf enthalten, wo die Routinen der Task-Anteile und irgendwelche Eingangsdaten abgerufen werden können (z. B. von dem Speicher-Server, in dem sie gespeichert sind). Beim Empfang derartiger Angaben verwenden die Kerne der Prozessorkomponenten, denen diese Task-Anteile zugewiesen worden sind, derartige Zeiger, um die entsprechenden Versionen der Versionen der Routinen der Task-Anteile zusammen mit den Eingangsdaten, welche auch immer erforderlich sein können, abzurufen und dann ihre jeweiligen Routinen der Routinen der Task-Anteile auszuführen.
-
Während der Ausführung der Routinen der Task-Anteile sendet jeder der Kerne der Prozessorkomponenten, die einer Routine eines Task-Anteils zugewiesen sind, Statusdaten, die einen oder mehrere Aspekte ihres Fortschritts beim Ausführen ihrer jeweiligen Task-Anteile des Tasks angeben, an den Planungs-Server. Dies kann in Reaktion auf Statusabfragen von dem Planungs-Server ausgeführt werden oder nicht. Der Planungs-Server kann dann auf die Statusabfragen hinsichtlich des Fortschritts beim Ausführen des Tasks mit einer Angabe des Gesamtfortschritts, der beim Ausführen des Tasks bis zu diesem Zeitpunkt gemacht worden ist, antworten.
-
Die Kerne der Prozessorkomponenten können außerdem während des Ausführens der Task-Routinen und in Abhängigkeit von der Art des Tasks Anteile der Ausgangsdaten von ihren Ausführungen ihrer zugewiesenen Task-Anteile an den Speicher-Server senden, von dem die Routinen der Task-Anteile und/oder die Eingangsdaten früher abgerufen wurden. Der Speicher-Server kann die Anteile derartiger Ausgangsdaten in einzige Ausgangsdaten oder einen Datensatz zusammenstellen oder formatieren, die bzw. der für die Überprüfung durch andere Computer-Vorrichtungen abgerufen werden können bzw. kann, wenn die Ausführung des Tasks abgeschlossen ist.
-
Innerhalb wenigstens einiger der Verarbeitungsvorrichtungen kann es eine Basisprozessorkomponente und eine oder mehrere Untersystem-Prozessorkomponenten geben. Jede der Untersystem-Prozessorkomponenten kann an einen Speicher gekoppelt sein, der von einem Speicher, der an die Basisprozessorkomponente gekoppelt ist, getrennt ist, wobei dadurch ein oder mehrere im Wesentlichen unabhängige Verarbeitungs-Untersysteme ausgebildet sind. In einigen Ausführungsformen können die Basisprozessorkomponente und die eine oder die mehreren Untersystem-Prozessorkomponenten verschiedene Typen sein, für es erforderlich sein kann, dass der Code mit verschiedenen Kompilieren kompiliert werden muss. Die Basisprozessorkomponente kann direkter an eine Schnittstelle der Verarbeitungsvorrichtung zu einem Netz gekoppelt sein und kann mit jeder der Untersystem-Prozessorkomponenten zusammenarbeiten, um jeder der Untersystem-Prozessorkomponenten eine getrennt adressierbare "virtuelle Präsenz" in dem Netz bereitzustellen.
-
Unter allgemeiner Bezugnahme auf die hier verwendeten Schreibweisen und die hier verwendete Nomenklatur können die Abschnitte der folgenden ausführlichen Beschreibung hinsichtlich von Programmprozeduren dargestellt sein, die in einem Computer oder einem Netz von Computern ausgeführt werden. Diese prozeduralen Beschreibungen und Darstellungen werden durch die Fachleute auf dem Gebiet verwendet, um das Wesen ihrer Arbeit am effektivsten anderen Fachleuten auf dem Gebiet zu übermitteln. Eine Prozedur ist hier und im Allgemeinen als eine selbstkonsistente Folge von Operationen, die zu einem gewünschten Ergebnis führt, konzipiert. Diese Operationen sind jene, die die physikalischen Beeinflussungen physikalischer Größen erfordern. Diese Größen nehmen normalerweise, obwohl nicht notwendigerweise, die Form elektrischer, magnetischer oder optischer Signale an, die gespeichert, übertragen, kombiniert, verglichen und anderweitig beeinflusst werden können. Es erweist sich gelegentlich als zweckmäßig, prinzipiell aus Gründen der gemeinsamen Verwendung, diese Signale als Bits, Werte, Elemente, Symbole, Zeichen, Terme, Zahlen oder dergleichen zu bezeichnen. Es sollte jedoch angegeben werden, dass alle von diesen und ähnlichen Begriffe den geeigneten physikalischen Größen zuzuordnen sind und lediglich zweckmäßige Bezeichnungen sind, die auf diese Größen angewendet werden.
-
Ferner werden diese Beeinflussungen oft in Begriffen, wie z. B. Addieren oder Vergleichen, bezeichnet, die im Allgemeinen gedanklichen Operationen zugeordnet sind, die von einer menschlichen Bedienungsperson ausgeführt werden. In den meisten Fällen ist jedoch in jeder der hier beschriebenen Operationen, die einen Teil einer oder mehrerer Ausführungsformen bilden, eine derartige Fähigkeit einer menschlichen Bedienungsperson nicht notwendig oder erwünscht. Stattdessen sind diese Operationen Maschinenoperationen. Nützliche Maschinen zum Ausführen der Operationen der verschiedenen Ausführungsformen enthalten digitale Universal-Computer, die durch ein darin gespeichertes Computerprogramm, das gemäß den Lehren hier geschrieben ist, selektiv aktiviert oder konfiguriert werden, und/oder enthalten speziell für den erforderlichen Zweck konstruierte Vorrichtungen. Verschiedene Ausführungsformen beziehen sich außerdem auf Vorrichtungen oder Systeme zum Ausführen dieser Operationen. Diese Vorrichtungen können für den erforderlichen Zweck spezifisch konstruiert sein oder können einen Universal-Computer enthalten. Die erforderliche Struktur für verschiedene dieser Maschinen wird aus der gegebenen Beschreibung offensichtlich.
-
Nun wird auf die Zeichnungen Bezug genommen, in denen gleiche Bezugszeichen verwendet werden, um überall auf gleiche Elemente zu verweisen. In der folgenden Beschreibung sind für die Zwecke der Erklärung zahlreiche spezifische Einzelheiten dargelegt, um deren umfassendes Verständnis bereitzustellen. Es kann jedoch offensichtlich sein, dass die neuartigen Ausführungsformen ohne diese spezifischen Einzelheiten praktiziert werden können. In anderen Fällen sind wohlbekannte Strukturen und Vorrichtungen in der Form von Blockschaltplänen gezeigt, um deren Beschreibung zu fördern. Es besteht die Absicht, alle Modifikationen, Äquivalente und Alternativen innerhalb des Schutzumfangs der Ansprüche abzudecken.
-
1 ist ein Blockschaltplan einer Ausführungsform eines verteilten Verarbeitungssystems 1000, das eine oder mehrere Einreichungsvorrichtungen 100, einen Speicher-Server 300, einen Planungs-Server 400 und mehrere Verarbeitungsvorrichtungen 600 enthält. Jede dieser Computer-Vorrichtungen 100, 300, 400 und 600 kann irgendeiner von verschiedenen Typen einer Computer-Vorrichtung sein, einschließlich ohne Einschränkung eines Desktop-Computer-Systems, eines Dateneingabe-Endgeräts, eines Laptop-Computers, eines Netbook-Computers, eines Tablet-Computers, eines handgehaltenen persönlichen Datenassistenten, eines Smartphones, einer Digitalkamera, einer körpergetragenen Computer-Vorrichtung, die in die Kleidung eingearbeitet ist, einer Computer-Vorrichtung, die in ein Fahrzeug (z. B. ein Auto, ein Fahrrad, einen Rollstuhl usw.) integriert ist, eines Servers, eines Clusters von Servern, einer Server-Farm usw.
-
Wie dargestellt ist, tauschen Teilmengen dieser Computer-Vorrichtungen 100, 300, 400 und 600 Signale, die der verteilten Ausführung eines Tasks zugeordnet sind, über ein Netz 999 aus. Ein oder mehrere dieser Computer-Vorrichtungen können jedoch andere Daten, die vollständig ohne Bezug zu der verteilten Verarbeitung sind, miteinander und/oder mit noch weiteren (nicht gezeigten) Computer-Vorrichtungen über das Netz 999 austauschen. Das Netz 999 kann in verschiedenen Ausführungsformen ein einziges Netz sein, das möglicherweise auf die Ausdehnung innerhalb eines einzigen Gebäudes oder eines anderen relativ begrenzten Bereichs eingeschränkt ist, eine Kombination verbundener Netze, die sich möglicherweise über eine beträchtliche Entfernung erstrecken, sein und/oder das Internet enthalten. Folglich kann das Netz 999 auf irgendeiner von verschiedenen (oder einer Kombination aus) Kommunikationstechniken basieren, durch die Signale ausgetauscht werden können, einschließlich ohne Einschränkung verdrahteten Techniken, die eine elektrisch und/oder optisch leitfähige Verkabelung verwenden, und drahtloser Techniken, die Infrarot-, Hochfrequenz- oder andere Formen der drahtlosen Übertragung verwenden.
-
In verschiedenen Ausführungsformen enthält die Einreichungsvorrichtung 100 eine Prozessorkomponente 150 und/oder einen Speicher 160 und/oder die Steuerelemente 120 und/oder eine Anzeige 180 und/oder eine Schnittstelle 190, um die Einreichungsvorrichtung 100 an das Netz 999 zu koppeln. Der Speicher 160 speichert eine Steuerroutine 140 und/oder die Task-Eingangsdaten 133 und/oder die Task-Beschreibungsdaten 134 und/oder die Task-Konfigurationsdaten 135 und/oder einen Task-Code 110 und/oder die Routinen 171a–b und 172a–b der Task-Anteile. Der Task-Code 110 enthält die Codes 111 und 112 der Task-Anteile. Die Steuerroutine 140 enthält eine Folge von Anweisungen, die in der Prozessorkomponente 150 in ihrer Rolle als eine Hauptprozessorkomponente der Einreichungsvorrichtung 100 betriebsfähig sind, um eine Logik zu implementieren, um verschiedene Funktionen auszuführen. Wie ausführlicher erklärt wird, enthält jede der Routinen 171a–b und 172a–b der Task-Anteile eine Folge von Anweisungen, die in verschiedenen Prozessorkomponenten der Verarbeitungsvorrichtungen 600 betriebsfähig sind, um eine Logik zu implementieren, um verschiedene Funktionen eines gemeinsamen Tasks auszuführen.
-
Beim Ausführen der Steuerroutine 140 kann die Prozessorkomponente 150 den Code 111 des Task-Anteils mit getrennten Kompilierern kompilieren, um die Routine 171a des Task-Anteils für die Ausführung durch einen Typ des Kerns der Prozessorkomponenten und die Routine 171b des Task-Anteils für die Ausführung durch einen anderen Typ des Kerns der Prozessorkomponenten zu erzeugen. Mit anderen Worten, jede der Routinen 171a und 171b des Task-Anteils ist eine kompilierte Version des Codes 111 des Task-Anteils, wobei jede die gleiche Logik implementiert, wobei aber beabsichtigt ist, dass jede durch einen anderen Prozessorkern ausgeführt wird. Beim Ausführen der Steuerroutine 140 kann die Prozessorkomponente 150 ähnlich den Code 112 des Task-Anteils mit getrennten Kompilierern kompilieren, um die Routine 172a des Task-Anteils für die Ausführung durch den gleichen Typ des Kerns der Prozessorkomponenten wie die Routine 171a des Task-Anteils und die Routine 172b des Task-Anteils für die Ausführung durch den gleichen Typ des Kerns der Prozessorkomponenten wie die Routine 171b des Task-Anteils zu erzeugen.
-
Es sollte angegeben werden, dass, obwohl dargestellt ist, dass der Task-Code 110 nur zwei getrennte Codes 111 und 112 der Task-Anteile enthält, dies um der Einfachheit der Veranschaulichung und Erörterung willen hier ausgeführt wird. Es sind andere Ausführungsformen möglich, in denen der Task-Code 110 nur den Code eines einzigen Task-Anteils enthält oder die Codes mehrerer Task-Anteile in einer anderen Anzahl als zwei enthält. Allgemeiner sollte angegeben werden, dass die Anzahl der verschiedenen Task-Anteile, in die ein Task aufgeteilt werden kann, von der Art des Tasks abhängt. Einige Tasks können durch das Aufteilen des Tasks in mehrere Instanzen nur eines einzigen Task-Anteils, die parallel ausgeführt werden können, parallel ausgeführt werden. In einer entsprechenden Ausführungsform kann der Task-Code 110 nur den Task-Anteil 111 enthalten, wobei es mehrere Instanzen der kompilierten Routine 171a und/oder 171b des Task-Anteils geben kann, die durch mehrere Kerne der Prozessorkomponenten parallel ausgeführt werden. Alternativ können andere Tasks durch das Aufteilen der Tasks in mehrere verschiedene Task-Anteile parallel ausgeführt werden, so dass der Task-Code 110 entsprechend mehrere verschiedene Codes der Task-Anteile enthält. Es kann nur eine Instanz von einer oder mehreren dieser verschiedenen Task-Anteile geben und/oder es kann mehrere Instanzen eines oder mehrerer anderer dieser verschiedenen Task-Anteile geben.
-
Bei der weiteren Ausführung der Steuerroutine 140 kann die Prozessorkomponente 150 die Schnittstelle 190 betreiben, um die Routinen 171a–b und 172a–b der Task-Anteile über das Netz 999 an den Speicher-Server 300 zu senden. In den Ausführungsformen, in denen die Ausführung des Tasks, der dem Task-Code 110 zugeordnet ist, Daten als eine Eingabe erfordert, kann die Prozessorkomponente 150 außerdem die Task-Eingangsdaten 133, die derartige Daten enthalten, an den Speicher-Server 300 senden. Die Prozessorkomponente 150 betreibt ferner die Schnittstelle 190, um wenigstens die Task-Beschreibungsdaten 134 über das Netz 999 an den Planungs-Server 400 zu senden. Die Task-Beschreibungsdaten 134 stellen verschiedene Parameter des Tasks, der dem Task-Code 110 zugeordnet ist, bereit, die eine Anzahl der verschiedenen Task-Anteile und/oder die Anzahl der Instanzen jedes der verschiedenen Task-Anteile, die parallel auszuführen sind, und/oder die Typen der Kerne der Prozessorkomponenten, für die jeder verschiedene Task-Anteil kompiliert worden ist, und/oder die Angaben, wo die Routinen der Task-Anteile und/oder irgendwelche Eingangsdaten (z. B. die Task-Eingangsdaten 133) gefunden werden können, und/oder Angaben, wo irgendwelche Ausgangsdaten gespeichert werden sollen, enthalten können. In den Ausführungsformen, in denen die Weise, in der die Kerne der Prozessorkomponenten für die Zuweisung zu den Task-Anteilen ausgewählt werden, für jeden Task spezifiziert werden kann, kann die Prozessorkomponente 150 außerdem die Task-Konfigurationsdaten 135 an den Planungs-Server 400 senden, um dies auszuführen. Beim Senden der Routinen 171a–b und 172a–b der Task-Anteile und/oder der Eingangsdaten 133 an den Speicher-Server 300 und beim Senden der Task-Beschreibungsdaten 134 und/oder der Task-Konfigurationsdaten 135 an den Planungs-Server 400 "reicht" die Prozessorkomponente 150 den Task, der dem Task-Code 110 zugeordnet ist, effektiv bei dem verteilten Verarbeitungssystem 1000 für die Ausführung "ein".
-
In verschiedenen Ausführungsformen enthält der Planungs-Server 400 eine Prozessorkomponente 450 und/oder einen Speicher 460 und/oder eine Schnittstelle 490, um den Planungs-Server 400 an das Netz 999 zu koppeln. Der Speicher 460 speichert sowohl eine Steuerroutine 440 und/oder die Task-Betriebsmitteldaten 430 und/oder die Daten 435 der vorgegebenen Konfiguration und/oder die Statusdaten 437 als auch die Task-Beschreibungsdaten 134 und/oder die Task-Konfigurationsdaten 135, die von der Einreichungsvorrichtung 100 empfangen werden. Die Steuerroutine 440 enthält eine Folge von Anweisungen, die in der Prozessorkomponente 450 in ihrer Rolle als eine Hauptprozessorkomponente des Planungs-Servers 400 betriebsfähig sind, um eine Logik zu implementieren, um verschiedene Funktionen auszuführen.
-
Beim Ausführen der Steuerroutine 440 kann die Prozessorkomponente 450 das verteilte Verarbeitungssystem 1000 für die Verwendung durch das Betreiben der Schnittstelle 490 vorbereiten, um über das Netz 999 von jeder der Verarbeitungsvorrichtungen 600 die Stücke der Betriebsmitteldaten, die die Verarbeitungs- und anderen Betriebsmittel angeben, die innerhalb jeder vorhanden sind, zu empfangen. Die Stücke der Betriebsmitteldaten können einzeln von jeder Prozessorkomponente innerhalb jeder der Verarbeitungsvorrichtungen 600 empfangen werden und können die Verarbeitungs- und anderen Betriebsmittel, die jeder Prozessorkomponente zugeordnet sind, angeben. Alternativ können die Stücke der Betriebsmitteldaten eines je Stück von jeder der Verarbeitungsvorrichtungen 600 empfangen werden, wobei sie die Verarbeitungs- und anderen Betriebsmittel, die allen Prozessorkomponenten innerhalb jeder der Verarbeitungsvorrichtungen 600 zugeordnet sind, angeben können. Die Prozessorkomponente 450 kann die Bereitstellung dieser Stücke der Betriebsmitteldaten durch die Verarbeitungsvorrichtungen 600 durch das Senden von Abfragen, welche Betriebsmittel vorhanden sind, an jede der Verarbeitungsvorrichtungen 600 abgefragt haben. Ein derartiges Abfragen kann durch die Prozessorkomponente 450 periodisch (z. B. in regelmäßigen Intervallen) ausgeführt werden, kann in Reaktion auf die Initialisierung (z. B. das Rücksetzen oder das "Einschalten") des Planungs-Servers 400 ausgeführt werden oder kann in Reaktion auf das Empfangen einer Angabe einer Änderung, die an einem oder mehreren der Verarbeitungssysteme 600 und/oder an dem Netz 999, durch das der Planungs-Server 400 an die Verarbeitungssysteme 600 gekoppelt ist, ausgeführt worden ist, ausgeführt werden. Die Prozessorkomponente 450 kann diese Stücke der empfangenen Betriebsmitteldaten als die Betriebsmitteldaten 430 ansammeln und speichern.
-
Die Prozessorkomponente 450 kann außerdem beim Ausführen der Steuerroutine 440 die Schnittstelle 490 betreiben, um die Task-Beschreibungsdaten 134 und/oder die Task-Konfigurationsdaten 135 von der Einreichungsvorrichtung 100 zu empfangen und zu speichern. Wie vorher erörtert worden ist, stellen die Task-Beschreibungsdaten 134 Angaben der verschiedenen Parameter des Tasks, der dem Task-Code 110 zugeordnet ist, bereit, wobei sie dadurch dem Planungs-Server 400 effektiv Angaben bereitstellen, welche Betriebsmittel des verteilten Verarbeitungssystems 1000 erforderlich sind, um den Task auszuführen. Die Steuerroutine 440 weist die Anzahl der Kerne der Prozessorkomponenten und die anderen Betriebsmittel wenigstens einiger der Verarbeitungsvorrichtungen 600 des verteilten Verarbeitungssystems 1000 zu, wie sie erforderlich sind, um den in den Task-Beschreibungsdaten 134 angegebenen Parametern zu entsprechen.
-
Die Task-Konfigurationsdaten 135, falls sie durch die Einreichungsvorrichtung 100 bereitgestellt werden, können die Weise angeben, in der wenigstens die Kerne der Prozessorkomponenten für die Zuweisung ausgewählt werden sollen, um die Task-Anteile des Tasks auszuführen. Die Bereitstellung der Task-Konfigurationsdaten 135 für den Planungs-Server 400 kann optional sein, wobei sie bereitgestellt werden können, um eine Angabe einer Weise, in der wenigstens die Kerne der Prozessorkomponenten für die Zuweisung ausgewählt werden sollen, außer Kraft zu setzen, welche auch immer in den Daten 435 der vorgegebenen Konfiguration bereitgestellt ist. Wie ausführlicher erklärt wird, kann die Weise der Auswahl, die durch die Prozessorkomponente 440 verwendet wird, einen Kompromiss zwischen der Auswahl, um den Zeitraum zu verringern, um den Task auszuführen, und der Auswahl, um den Verbrauch elektrischer Leistung beim Ausführen des Tasks zu verringern, repräsentieren.
-
Ungeachtet der Weise, in der die Kerne der Prozessorkomponenten ausgewählt werden, kann die Prozessorkomponente 450 die Schnittstelle 490 betreiben, um an eine oder mehrere Prozessorkomponenten die Angaben, welche von ihren Kernen für die Zuweisung ausgewählt worden sind, um die Task-Anteile des Tasks auszuführen, zu senden. Diese Angaben können eine Teilmenge dessen enthalten, was in den Task-Beschreibungsdaten 134 transportiert wird, einschließlich der Angaben, wo die geeignete der Routinen 171a–b und 172a–b der Task-Anteile gefunden werden kann, wo die Eingangsdaten 133 (erforderlichenfalls) gefunden werden können und wo die Ausgangsdaten gespeichert werden sollen, aber nicht darauf eingeschränkt. Einfacher stellt die Prozessorkomponente 450 jedem der ausgewählten Kerne der Prozessorkomponenten eine Angabe dessen bereit, welcher Task-Anteil ausgeführt werden soll, welcher Anteil der Eingangsdaten (falls es irgendwelche gibt) als eine Eingabe zu verwenden ist und wohin irgendwelche Ausgangsdaten zu leiten sind.
-
In verschiedenen Ausführungsformen enthält jede der Verarbeitungsvorrichtungen 600 eine Prozessorkomponente 650 und/oder einen Speicher 660 und/oder eine Schnittstelle 690, die eine Kopplung an das Netz 999 bereitstellt, und/oder ein oder mehrere Verarbeitungs-Untersysteme 700. Die Prozessorkomponente 650 enthält einen oder mehrere Kerne 655, in denen die Verarbeitungsfunktionen der Prozessorkomponente 650 ausgeführt werden. Der Speicher 660 speichert wenigstens eine Steuerroutine 640. Jedes der Verarbeitungs-Untersysteme 700 enthält eine Prozessorkomponente 750 und/oder einen Speicher 760. Die Prozessorkomponente 750 enthält einen oder mehrere Kerne 755, in denen die Verarbeitungsfunktionen der Prozessorkomponente 750 ausgeführt werden. Der Speicher 760 speichert wenigstens eine Steuerroutine 740.
-
Die 2A und 2B stellen Beispiele des Betriebs einer Ausführungsform des verteilten Verarbeitungssystems 1000 dar. Diese spezielle dargestellte Ausführungsform enthält drei Instanzen der Verarbeitungsvorrichtung 600, nämlich die Verarbeitungsvorrichtungen 600x, 600y und 600z. Wie dargestellt ist, enthält jede der Verarbeitungsvorrichtungen 600x–z eine jeder der Prozessorkomponenten 650 und 750, wobei die Prozessorkomponente 650 zwei Kerne 655 enthält und die Prozessorkomponente 750 vier Kerne 755 enthält. Um der Erörterung dieser Beispiele willen wird angenommen, dass die Kerne 655 und 755 der Verarbeitungsvorrichtung 600x bei einer beträchtlich höheren Taktfrequenz als die Kerne 655 und 755 der Verarbeitungsvorrichtungen 600y–z arbeiten und elektrische Leistung mit einer beträchtlich höheren Rate als die Kerne 655 und 755 der Verarbeitungsvorrichtungen 600y–z verbrauchen. Es wird außerdem angenommen, dass die Routinen 171a und 172a der Task-Anteile in den Kernen 655 der Prozessorkomponenten 650 betriebsfähig sind und dass die Routinen 171b und 172b der Task-Anteile in den Kernen 755 der Prozessorkomponenten 750 betriebsfähig sind.
-
Es sollte angegeben werden, dass nicht alle der Kerne 655 und/oder 755 der Verarbeitungsvorrichtungen 600x–z verfügbar sein können, wenn die Prozessorkomponente 450 einen der Kerne 655 und/oder 755 für die Zuweisung auswählt, um die Task-Anteile eines Tasks auszuführen. Einer oder mehrere der Kerne 655 und/oder 755 können bereits mit dem Ausführen des Task-Anteils (der Task-Anteile) eines oder mehrerer anderer Tasks beschäftigt sein.
-
In 2A führt das verteilte Verarbeitungssystem 1000 die Task-Anteile einer Version des Tasks, der dem Task-Code 110 zugeordnet ist, aus, in denen nur eine Instanz des Task-Anteils, der dem Code 111 des Task-Anteils zugeordnet ist, ausgeführt wird und in denen mehrere Instanzen des Task-Anteils, der dem Code 112 des Task-Anteils zugeordnet ist, ausgeführt werden. Ferner stellen die Daten 435 der vorgegebenen Konfiguration und/oder die Task-Konfigurationsdaten 135 eine Angabe bereit, dass die verfügbaren Betriebsmittel des verteilten Verarbeitungssystems 1000 in einer Weise, die verursacht, dass der Task so schnell wie möglich und erforderlichenfalls auf Kosten der Anstrengungen, um den Verbrauch von Leistung zu verringern, ausgeführt wird, zuzuweisen sind. In Reaktion wählt die Prozessorkomponente 450 jene der Kerne 655 und 755 der Prozessorkomponenten unter den Verarbeitungsvorrichtungen 600x–z für die Zuweisung zu den Task-Anteilen in einer Weise aus, die das Verringern des Zeitraums, der erforderlich ist, um den Task auszuführen, in irgendeinem Kompromiss zwischen dem Verringern des Zeitraums und dem Verringern der Leistungsaufnahme bevorzugt.
-
Folglich kann die Prozessorkomponente 450 bewerten, welche der Prozessorkomponenten 650 und 750 einen gegebenen Task-Anteil schneller als andere ausführen, wobei sie versuchen kann, jene der Routinen 171a–b und/oder 172a–b der Task-Anteile den Kernen 655 und 755 zuzuweisen, welche auch immer die schnellere Ausführung bewerkstelligen. Alternativ können die Angaben, welche der Kerne 655 und 755 imstande sind, welche Task-Anteile in einem geringeren Zeitraum auszuführen, zusammen mit oder als Teil der Beschreibungsdaten 134 und/oder der Task-Konfigurationsdaten 135 zu dem Planungs-Server 400 befördert werden. Vorausgesetzt, dass die Prozessorkomponente 450 bestimmt, dass einer der Kerne 655 beim Ausführen der einzigen erforderlichen Instanz des Task-Anteils, der dem Code 111 des Task-Anteils zugeordnet ist, schneller sein würde, wählt die Prozessorkomponente 450 einen einzigen der Kerne 655 aus, um die eine erforderliche Instanz der Routine 171a des Task-Anteils auszuführen, die aus dem Code 111 des Task-Anteils kompiliert wurde. Außerdem vorausgesetzt, dass die Prozessorkomponente 450 bestimmt, dass die Kerne 755 beim Ausführen der mehreren Instanzen des Task-Anteils, der dem Code 112 des Task-Anteils zugeordnet ist, schneller sein würden, wählt die Prozessorkomponente 450 einige der Kerne 755 aus, um die erforderlichen Instanzen der Routine 172b des Task-Anteils auszuführen, die aus dem Code 112 des Task-Anteils kompiliert wurde.
-
Beim Auswählen eines der Kerne 655 und 755 in einer Weise, die den Zeitraum, der erforderlich ist, um den Task auszuführen, gegenüber dem Verringern der Leistungsaufnahme verringert, kann die Prozessorkomponente 450 alternativ oder zusätzlich die Kerne 655 und/oder 755 von jenen der Verarbeitungsvorrichtungen 600x–z, in der größere Anzahlen der Kerne 655 und/oder 755 verfügbar sind, auswählen, um die Anzahl der verwendeten Verarbeitungsvorrichtungen zu begrenzen. Das Begrenzen der Anzahl der verwendeten Verarbeitungsvorrichtungen begrenzt entsprechend die Anzahl der Interprozesskommunikationen, die zwischen den Verarbeitungsvorrichtungen über das Netz 999 stattfinden müssen, um die Ausführung der Routinen der Task-Anteile zwischen einzelnen der Kerne 655 und/oder 755 zu koordinieren. Anders dargelegt, wenn mehr der Kerne 655 und/oder 755 innerhalb einer geringeren Anzahl von Verarbeitungsvorrichtungen ausgewählt sind, finden mehr der Interprozesskommunikationen über einen oder mehrere Busse innerhalb dieser Verarbeitungsvorrichtungen statt, die typischerweise beträchtlich schneller als die über ein Netz stattfinden Kommunikationen sind. Dies erreicht eine Verringerung des Zeitraums, um den Task auszuführen, durch das Erhöhen des Grades der Lokalität der Prozessorkerne 655 und/oder 755, die zugewiesen sind, um die Anteile des Tasks auszuführen, so dass mehr Interprozesskommunikationen zwischen einzelnen der Kerne 655 und/oder 755 stattfinden, die sich physikalisch "lokal" beieinander befinden (z. B. innerhalb derselben Verarbeitungsvorrichtung angeordnet sind).
-
Folglich befindet sich die Mehrheit der Prozessorkerne 655 und 755, die ausgewählt sind, um den Task auszuführen, der dieser Version des Task-Codes 110 zugeordnet ist, innerhalb der einzigen Verarbeitungsvorrichtung 600x, wie in 2A dargestellt ist. Im Ergebnis sind die Mehrheit der Kerne 655 und 755, die ausgewählt sind, um die Task-Anteile dieses Tasks auszuführen, jene, die bei der schnelleren Taktfrequenz arbeiten und die sich lokal beieinander befinden, so dass die Mehrheit der Interprozesskommunikationen nicht über das Netz 999 transportiert werden muss.
-
In 2B führt das verteilte Verarbeitungssystem 1000 die Task-Anteile einer Version des Tasks, der dem Task-Code 110 zugeordnet ist, aus, in dem mehrere Instanzen der Task-Anteile, die beiden Codes 111 und 112 der Task-Anteile zugeordnet sind, ausgeführt werden. Ferner stellen die Daten 435 der vorgegebenen Konfiguration und/oder die Task-Konfigurationsdaten 135 eine Angabe bereit, dass die verfügbaren Betriebsmittel des verteilten Verarbeitungssystems 1000 in einer Weise, die den Verbrauch elektrischer Leistung minimiert, und erforderlichenfalls auf Kosten der Anstrengungen, den Zeitraum, der erforderlich ist, um den Task auszuführen, zu verringern, zuzuweisen sind. In Reaktion wählt die Prozessorkomponente 450 jene der Kerne 655 und 755 der Prozessorkomponenten unter den Verarbeitungsvorrichtungen 600x–z zur Zuweisung zu den Task-Anteilen in einer Weise aus, die das Verringern der Leistungsaufnahme, um den Task auszuführen, in irgendeinem Kompromiss zwischen dem Verringern des Zeitraums und dem Verringern der Leistungsaufnahme bevorzugt.
-
Folglich kann die Prozessorkomponente 450 bewerten, welche der Prozessorkomponenten 650 und 750 weniger elektrische Leistung als andere verbrauchen, um einen gegebenen Task-Anteil auszuführen, wobei sie versuchen kann, einigen der Routinen 171a–b und/oder 172a–b des Task-Anteils jene der Kerne 655 und 755 zuzuweisen, welche auch immer weniger elektrische Leistung verbrauchen. Alternativ können die Angaben, welche der Kerne 655 und 755 die Task-Anteile mit einer geringeren Leistungsaufnahme ausführen können, zusammen mit den oder als Teil der Beschreibungsdaten 134 und/oder der Task-Konfigurationsdaten 135 zu dem Planungs-Server 400 transportiert werden. Vorausgesetzt, dass die Prozessorkomponente 450 bestimmt, dass die Kerne 655 und 755 der Verarbeitungsvorrichtungen 600y und 600z beim Ausführen der Instanzen der Task-Anteile, die den Codes 111 und 112 der Task-Anteile zugeordnet sind, weniger Leistung verbrauchen würden, wählt die Prozessorkomponente 450 so viele der Kerne 655 und 755 der Verarbeitungsvorrichtungen 600y–z aus, wie verfügbar sind. Folglich wird eine Mischung der Kerne 655 und 755, größtenteils der Verarbeitungsvorrichtungen 600y–z, ausgewählt, um die Task-Anteile auszuführen, die jedem der Codes 111 und 112 der Task-Anteile zugeordnet sind, wie dargestellt ist. Folglich wird ungleich zu dem Beispiel nach 2A jede der Routinen 171a–b und 172a–b der Task-Anteile durch wenigstens einen entsprechenden der Kerne 655 und 755 ausgeführt.
-
Beim Auswählen einiger der Kerne 655 und 755 in einer Weise, um gegenüber dem Verringern des erforderlichen Zeitraums die elektrische Leistungsaufnahme beim Ausführen des Tasks zu verringern, kann die Prozessorkomponente 450 alternativ oder zusätzlich die Kerne 655 und/oder 755 einiger der Verarbeitungsvorrichtungen 600x–z in einer Weise auswählen, die die Lokalität unter den ausgewählten Kernen völlig ignoriert. Folglich kann die Prozessorkomponente einige der Kerne 655 und 755, die über mehrere oder alle der Verarbeitungsvorrichtungen 600x–z verfügbar sind, ungeachtet der Tatsache auswählen, dass dies die Anzahl der Interprozesskommunikationen vergrößert, die anstatt über die wahrscheinlich schnelleren internen Busse innerhalb jeder der Verarbeitungsvorrichtungen 600x–z über das Netz 999 stattfinden müssen. Folglich sind die Prozessorkerne 655 und 755, die ausgewählt sind, um den Task auszuführen, der dieser Version des Task-Codes 110 zugeordnet ist, über alle Verarbeitungsvorrichtungen 600x–z verteilt, obwohl dem Auswählen einiger der Kerne 655 und 755 der Verarbeitungsvorrichtungen 600y–z der Vorzug gegeben ist, weil sie weniger elektrische Leistung als jene der Verarbeitungsvorrichtung 600x verbrauchen, wie in 2B dargestellt ist.
-
Es sollte angegeben werden, dass ungeachtet der spezifischen Darstellung einer Anzahl von drei Verarbeitungsvorrichtungen andere Ausführungsformen mehr oder weniger Verarbeitungsvorrichtungen aufweisen können. Es sollte außerdem angegeben werden, dass ungeachtet der spezifischen Darstellung einer einzigen von jeder der Prozessorkomponenten 650 und 750 andere Ausführungsformen mehr von einer oder beiden dieser Prozessorkomponenten aufweisen können. Andere Ausführungsformen können ferner nur einen Typ von Prozessorkomponente enthalten oder können eine Anzahl verschiedener Typen von Prozessorkomponenten, die größer als zwei ist, enthalten. Es sollte ferner angegeben werden, dass ungeachtet der spezifischen Darstellung von zwei Kernen 655 innerhalb der Prozessorkomponente 650 und von vier Kernen 755 innerhalb der Prozessorkomponente 750 andere Ausführungsformen abweichende Anzahlen von Kernen innerhalb jeder Prozessorkomponente aufweisen können. Es sollte ferner angegeben werden, dass ungeachtet der spezifischen Darstellung jeder der Verarbeitungsvorrichtungen 600x–z, die von einer im Wesentlichen ähnlichen Konfiguration der Prozessorkomponenten und Kerne sind, andere Ausführungsformen Verarbeitungsvorrichtungen von beträchtlich unähnlichen Konfigurationen enthalten können.
-
Zurück zu den Verarbeitungsvorrichtungen 600 in 1 enthält innerhalb jeder der Verarbeitungsvorrichtungen 600 die Steuerroutine 640 eine Folge von Anweisungen, die in der Prozessorkomponente 650 in ihrer Rolle als Basisprozessorkomponente dieser Verarbeitungsvorrichtung 600 betriebsfähig sind, um eine Logik zu implementieren, um verschiedene Funktionen auszuführen. Ähnlich enthält innerhalb jedes der Verarbeitungs-Untersysteme 700 die Steuerroutine 740 eine Folge von Anweisungen, die in der Prozessorkomponente 750 in ihrer Rolle als eine Untersystem-Prozessorkomponente dieses Verarbeitungs-Untersystem 700 betriebsfähig sind, um eine Logik zu implementieren, um verschiedene Funktionen auszuführen.
-
Beim Ausführen der Steuerroutine 640 kann die Prozessorkomponente 650 das Vorbereiten des verteilten Verarbeitungssystems 1000 für die Verwendung durch das Betreiben der Schnittstelle 690 unterstützen, um die Betriebsmitteldaten über das Netz 999 an den Planungs-Server 400 zu senden, die die Verarbeitungs- und anderen Betriebsmittel angeben, die sich innerhalb einer der Verarbeitungsvorrichtungen 600 befinden. In einigen Ausführungsformen kann ein einziges Stück der Betriebsmitteldaten Informationen hinsichtlich der Betriebsmittel, die allen Prozessorkomponenten 650 und/oder 750 innerhalb einer der Verarbeitungsvorrichtungen 600 zugeordnet sind, transportieren. In derartigen Ausführungsformen können die Prozessorkomponenten 650 und 750 beim Ausführen der Steuerroutinen 640 bzw. 740 zusammenarbeiten, um derartige Betriebsmitteldaten zu erzeugen. In anderen Ausführungsformen können separate Stücke der Betriebsmitteldaten, die jedes Informationen hinsichtlich der Betriebsmittel, die einer separaten der Prozessorkomponenten 650 und 750 zugeordnet sind, transportieren, separat an den Planungs-Server 400 gesendet werden. In derartigen Ausführungsformen kann der Prozessor 650 durch seine Ausführung der Steuerroutine 640 veranlasst werden, ein Stück derartiger Daten von einer Prozessorkomponente 750 zu empfangen, wobei er die Schnittstelle 690 betreiben kann, um es an den Planungs-Server 400 weiterzuleiten. Wie vorher erörtert worden ist, kann die Bereitstellung der Betriebsmitteldaten für den Planungs-Server 400 in Reaktion auf von dem Betriebsmittels-Server 400 empfangene Abfragen für derartige Daten geschehen.
-
Die Prozessor-Komponente 650 kann beim weiteren Ausführen der Steuerroutine 640 die Schnittstelle 690 betreiben, um die Angaben der Task-Anteile, die einem oder mehreren der Kerne 655 und/oder 755 zugewiesen sind, über das Netz 999 von dem Planungs-Server 400 zu empfangen. Wenn die Angaben der Task-Anteile, die einem oder mehreren der Kerne 755 zugewiesen sind, empfangen werden, können die Prozessorkomponenten 650 und 750 beim Ausführen der Steuerroutinen 640 bzw. 740 zusammenarbeiten, um diese Angaben von der Prozessorkomponente 650 an die Prozessorkomponente 750 weiterzuleiten.
-
Beim noch weiteren Ausführen der Steuerroutine 640 kann die Prozessorkomponente 650 die Schnittstelle 690 betreiben, um die Statusdaten über das Netz 999 an den Planungs-Server 400 zu senden, die den aktuellen Status eines oder mehrerer der Kerne 655 und/oder 755 beim Ausführen einer Routine des Task-Anteils angeben, um den ihnen zugewiesenen Task-Anteil auszuführen. Wenn die Statusdaten des Status der Ausführung einer Routine des Task-Anteils durch einen oder mehrere der Kerne 755 an den Planungs-Server 400 gesendet werden sollen, können die Prozessorkomponenten 650 und 750 beim Ausführen der Steuerroutinen 640 bzw. 740 zusammenarbeiten, um derartige Statusdaten von der Prozessorkomponente 750 an die Prozessorkomponente 650 für die Sendung weiterzuleiten.
-
Wie ausführlicher erklärt wird, dient in verschiedenen Ausführungsformen die Prozessorkomponente 650 als eine Basisprozessorkomponente in jeder der Verarbeitungsvorrichtungen 600, während die Prozessorkomponenten 750 als die Untersystem-Prozessorkomponenten darin dienen. Die Verarbeitungs-Untersysteme 700, in die jede der Prozessorkomponenten 750 Zusatzleiterplatten sein können, können in der Tat selektiv in jeder der Verarbeitungsvorrichtungen 600 installierbar oder von jeder der Verarbeitungsvorrichtungen 600 abnehmbar sein, um die Prozessorkomponenten 650 mit einer oder mehreren der Prozessorkomponenten 750 selektiv zu erweitern. Im Ergebnis kann die Prozessorkomponente 650 einen direkteren Zugriff auf die Schnittstelle 690 haben, so dass die Prozessorkomponente 650 durch die Ausführung der Steuerroutine 640 veranlasst wird, es zu unterstützen, jeder der Prozessorkomponenten 750 Zugang zu dem Netz 999 bereitzustellen. In dieser Weise kann die Prozessorkomponente 650 jeder der Prozessorkomponenten 750 eine "virtuelle Präsenz" effektiv bereitstellen, durch die jede der Prozessorkomponenten 750 in dem Netz 999 eindeutig adressierbar ist. Folglich kann der Transport von Betriebsmitteldaten, Eingangsdaten, Routinen der Task-Anteile, Statusdaten und/oder Ausgangsdaten zwischen irgendwelchen der Prozessorkomponenten 750 und dem Planungs-Server 400 durch die Prozessorkomponente 650 geschehen.
-
Zurück zum Planungs-Server 400 in 1 kann die Prozessorkomponente 450 beim Ausführen der Steuerroutine 440 die Schnittstelle 490 betreiben, um über das Netz 999 von jeder der Verarbeitungsvorrichtungen 600 Stücke der Statusdaten zu empfangen, die den aktuellen Status der Ausführung der Routinen der Task-Anteile durch einen oder mehrere der Kerne 655 und/oder 755 angeben. Die Stücke der Statusdaten können von jeder Prozessorkomponente 650 und/oder 750 innerhalb jeder der Verarbeitungsvorrichtungen 600 einzeln empfangen werden und den Status der Ausführung jeder Task-Routine durch alle Kerne einer Verarbeitungskomponente angeben. Alternativ können die Stücke der Betriebsmitteldaten von jedem der Kerne 655 und/oder 755 der Prozessorkomponenten einzeln empfangen werden, wobei sie den Status der Ausführung einer Task-Routine durch den einen der Kerne 655 und/oder 755 der Prozessorkomponenten angeben können.
-
Die Prozessorkomponente 450 kann die Bereitstellung dieser Stücke der Statusdaten durch das Senden von Abfragen des aktuellen Status der Ausführung jeder Routine der Task-Anteile angefordert haben. Ein derartiges Anfordern kann durch die Prozessorkomponente 450 periodisch (z. B. in regelmäßigen Intervallen) ausgeführt werden oder kann in Reaktion auf das Empfangen von Abfragen für den Status der Ausführung eines Tasks über das Netz 999 ausgeführt werden.
-
Beim weiteren Ausführen der Steuerroutine 440 kann die Prozessorkomponente 450 die Stücke der empfangenen Statusdaten als die Statusdaten 437 ansammeln und speichern. Noch weiter kann die Prozessorkomponente 450 die Schnittstelle 490 betreiben, um das Netz 999 nach einer Abfrage des aktuellen Status der Ausführung des Tasks, der dem Task-Code 110 zugeordnet ist, von der Einreichungsvorrichtung 100 zu überwachen. Die Prozessorkomponente 450 kann auf eine derartige Abfrage durch das Betreiben der Schnittstelle 490 reagieren, um wenigstens einen Anteil der Statusdaten 437 an die Einreichungsvorrichtung 100 zu senden, die den aktuellen Status der Ausführung des Tasks angeben.
-
Zurück zur Einreichungsvorrichtung 100 in 1 kann die Prozessorkomponente 150 beim Ausführen der Steuerroutine 140 die Anzeige 180 und die Steuerelemente 120 betreiben, um einer Bedienungsperson der Einreichungsvorrichtung 100 eine Anwenderschnittstelle (UI) bereitzustellen. Die Prozessorkomponente 150 kann die Steuerelemente 120 bezüglich einer Angabe der Betätigung der Steuerelemente 120 überwachen, um den aktuellen Status der Ausführung des Tasks, der dem Task-Code 110 zugeordnet ist, anzufordern, und kann die Schnittstelle 190 betreiben, um in Reaktion eine Abfrage für einen derartigen Status an die Planungs-Vorrichtung 400 zu senden. Die Prozessorkomponente 150 kann außerdem die Schnittstelle 190 betreiben, um eine Angabe eines derartigen aktuellen Status zu empfangen, und kann die Anzeige 180 betreiben, um eine Angabe eines derartigen Status der Bedienungsperson visuell darzustellen.
-
In verschiedenen Ausführungsformen kann jede der Prozessorkomponenten 150, 450, 650 und 750 eine umfassende Vielfalt kommerziell verfügbarer Prozessoren enthalten. Ferner können eine oder mehrere dieser Prozessorkomponenten mehrerer Prozessoren, einen Multithreading-Prozessor, einen Mehrkernprozessor (sei es, dass die mehreren Kerne auf demselben oder auf separaten Dies nebeneinander bestehen) und/oder eine Mehrprozessorarchitektur irgendeiner anderen Vielfalt, durch die mehrere physikalisch getrennte Prozessoren in irgendeiner Weise verknüpft sind, enthalten.
-
In verschiedenen Ausführungsformen kann jeder der Speicher 160, 460, 660 und 760 auf irgendeiner von einer umfassenden Vielfalt von Informationsspeichertechniken basieren, möglicherweise einschließlich flüchtiger Techniken, die die ununterbrochene Bereitstellung elektrischer Leistung erfordern, und möglicherweise einschließlich von Techniken, die die Verwendung von maschinenlesbaren Speichermedien beinhalten, die abnehmbar sein können oder nicht. Folglich kann jeder dieser Speicher irgendeinen von einer umfassenden Vielfalt von Typen (oder eine Kombination der Typen) der Speichervorrichtung enthalten, einschließlich ohne Einschränkung Festwertspeicher (ROM), Schreib-Lese-Speicher (RAM), dynamischen RAM (DRAM), RAM mit doppelter Datenrate (DDR-DRAM), synchronen DRAM (SDRAM), statischen RAM (SRAM), programmierbaren ROM (PROM), löschbaren programmierbaren ROM (EPROM), elektrisch löschbaren programmierbaren ROM (EEPROM), Flash-Speicher, Polymerspeicher (z. B. ferroelektrischen Polymerspeicher), Ovonic-Speicher, Phasenänderungs- oder ferroelektrischen Speicher, Silicium-Oxid-Nitrid-Oxid-Silicium-Speicher (SONOS-Speicher), magnetischer oder optischer Karten, eines oder mehrerer einzelner ferromagnetischer Plattenlaufwerke oder mehrerer Speichervorrichtungen, die in einer oder mehreren Anordnungen (z. B. mehrere ferromagnetische Plattenlaufwerke, die in einer Anordnung einer redundanten Anordnung unabhängiger Platten oder RAID-Anordnung organisiert sind). Es sollte angegeben werden, dass, obwohl jeder dieser Speicher als ein einziger Block dargestellt ist, eine oder mehrere von diesen mehrere Speichervorrichtungen enthalten kann bzw. können, die auf verschiedenen Speichertechniken basieren können. Folglich können einer oder mehrere dieser dargestellten Speicher z. B. eine Kombination aus einem optischen Laufwerk oder einem Flash-Speicherkarten-Leser, durch das bzw. den Programme und/oder Daten auf irgendeiner Form maschinenlesbarer Speichermedien gespeichert und transportiert werden können, einem ferromagnetischen Plattenlaufwerk, um Programme und/oder Daten während eines relativ ausgedehnten Zeitraums lokal zu speichern, und einer oder mehreren flüchtigen Halbleiterspeichervorrichtungen, die einen relativ schnellen Zugriff auf Programme und/oder Daten ermöglichen (z. B. SRAM oder DRAM), repräsentieren. Es sollte außerdem angegeben werden, dass jeder dieser Speicher aus mehreren Speicherkomponenten, die auf einer völlig gleichen Speichertechnik basieren, aufgebaut sein kann, die aber im Ergebnis einer Spezialisierung der Verwendung getrennt aufrechterhalten werden können (z. B. einige DRAM-Vorrichtungen, die als ein Hauptspeicher verwendet werden, während andere DRAM-Vorrichtungen als ein getrennter Rahmenpuffer eines Graphik-Controllers verwendet werden).
-
In verschiedenen Ausführungsformen kann jede der Schnittstellen 190, 490 und 690 irgendeine einer umfassenden Vielfalt von Signalisierungstechniken verwenden, die es ermöglichen, dass die Computer-Vorrichtungen an andere Vorrichtungen gekoppelt sind, wie beschrieben worden ist. Jede dieser Schnittstellen kann eine Schaltungsanordnung enthalten, die wenigstens irgendeine der erforderlichen Funktionalität bereitstellt, um eine derartige Kopplung zu ermöglichen. Jeder dieser Schnittstellen kann jedoch außerdem wenigstens teilweise mit Folgen von Anweisungen implementiert sein, die durch entsprechende der Prozessorkomponenten ausgeführt werden (z. B. um einen Protokollstapel oder andere Merkmale zu implementieren). Wo eine elektrisch und/oder optisch leitfähige Verkabelung verwendet wird, können diese Schnittstellen eine Signalisierung und/oder Protokolle verwenden, die irgendeinem von verschiedenen Industriestandards entsprechen, einschließlich ohne Einschränkung RS-232C, RS-422, USB, Ethernet (IEEE-802.3) oder IEEE-1394. Wo die Verwendung drahtloser Signalübertragung beinhaltet ist, können diese Schnittstellen eine Signalisierung und/oder Protokolle verwenden, die irgendeinem von verschiedenen Industriestandards entsprechen, einschließlich ohne Einschränkung IEEE 802.11a, 802.11b, 802.11g, 802.16, 802.20 (die üblicherweise als "mobiler drahtloser Breitbandzugriff" bezeichnet werden); Bluetooth; ZigBee; oder eines Zellen-Funktelephondienstes, wie z. B. GSM mit dem allgemeinen Paketfunkdienst (GSM/GPRS), CDMA/1xRTT, erhöhter Datenraten für die globale Entwicklung (EDGE), Entwicklung nur Daten/optimiert (EV-DO), Entwicklung für Daten und Sprache (EV-DV), Hochgeschwindigkeits-Abwärtsstrecken-Paketzugriff (HSPDA), Hochgeschwindigkeits-Aufwärtsstrecken-Paketzugriff (HSUPA), 4G LTE usw.
-
Die 3, 4, 5 und 6 veranschaulichen jede einen Blockschaltplan eines Abschnitts einer Ausführungsform des verteilten Verarbeitungssystems 1000 nach den 1 oder 2A–B ausführlicher. Spezifischer stellt 3 die Aspekte der Betriebsumgebung der Einreichungsvorrichtung 100 dar, in der die Prozessorkomponente 150 beim Ausführen der Steuerroutine 140 einen Task, der dem Task-Code 110 zugeordnet ist, bei dem verteilten Verarbeitungssystem 1000 einreicht, um ausgeführt zu werden. 4 stellt die Aspekte der Betriebsumgebung des Planungs-Servers 400 dar, in dem die Prozessorkomponente 450 beim Ausführen der Steuerroutine 440 einige der Kerne 655 und/oder 755, die innerhalb der Verarbeitungsvorrichtungen 600 des verteilten Verarbeitungssystem 1000 verfügbar sind, für die Zuweisung der Task-Anteile des Tasks auswählt. 5 stellt die Aspekte der Betriebsumgebung einer der Verarbeitungsvorrichtungen 600 dar, in der ein oder mehrere Kerne 655 der Prozessorkomponente 650 beim Ausführen der Steuerroutine 640 eine oder mehrere Routinen der Task-Anteile, die einem oder mehreren Task-Anteilen, die ihnen zugewiesen sind, entsprechen, ausführen. 6 stellt ähnlich die Aspekte der Betriebsumgebung eines der Verarbeitungs-Untersysteme 700 dar, in dem ein oder mehrere Kerne 755 der Prozessorkomponente 750 beim Ausführen der Steuerroutine 740 eine oder mehrere Routinen der Task-Anteile, die einem oder mehreren Task-Anteilen, die ihnen zugewiesen sind, entsprechen, ausführen.
-
Wie durch die Fachleute auf dem Gebiet erkennbar ist, werden die Steuerroutinen 140, 440, 640 und 740, einschließlich der Komponenten, aus denen jede zusammengesetzt ist, ausgewählt, um in dem Typ des Prozessors oder der Prozessoren betriebsfähig zu sein, welcher oder welche auch immer ausgewählt wird bzw. werden, um die anwendbaren Prozessorkomponenten der Prozessorkomponenten 150, 450, 650 oder 750 zu implementieren. In verschiedenen Ausführungsformen kann jede der Steuerroutinen 140, 440, 640 und 740 ein Betriebssystem und/oder Vorrichtungstreiber und/oder Routinen auf Anwendungsebene (sogenannte "Software-Pakete", die auf Plattenmedien bereitgestellt werden, "Applets", die von einem entfernten Server erhalten werden, usw.) enthalten. Wenn ein Betriebssystem enthalten ist, kann das Betriebssystem irgendeines von verschiedenen verfügbaren Betriebssystemen sein, die für die Prozessorkomponenten geeignet sind, welche auch immer den Prozessorkomponenten 150, 450, 650 oder 750 entsprechen. Wenn ein oder mehrere Vorrichtungstreiber enthalten sind, können diese Vorrichtungstreiber eine Unterstützung für irgendwelche von verschiedenen anderen Komponenten, entweder Hardware- oder Software-Komponenten, der entsprechenden der Computer-Vorrichtungen 100, 400 oder 600 oder des Verarbeitungs-Untersystems 700 bereitstellen.
-
Jede der Steuerroutinen 140, 440 oder 640 kann eine Kommunikationskomponente 149, 449 oder 649 enthalten, die durch die Prozessorkomponente 150, 450 oder 650 ausführbar ist, um die Schnittstelle 190, 490 bzw. 690 zu betreiben, um Signale über das Netz 999 zu senden und zu empfangen, wie beschrieben worden ist. Unter den empfangenen Signalen können sich Signale befinden, die die Task-Eingangsdaten 133, die Task-Beschreibungsdaten 134, die Task-Konfigurationsdaten 135, die Task-Ausgangsdaten 337, eine oder mehrere der Routinen 171a–b und/oder 172a–b der Task-Anteile, Stücke der Betriebsmitteldaten und/oder Stücke der Statusdaten zwischen einer oder mehreren der Computer-Vorrichtungen 100, 400 und/oder 600 über das Netz 999 transportieren. Wie durch die Fachleute auf dem Gebiet erkannt wird, sind diese Kommunikationskomponenten ausgewählt, um mit dem Typ der Schnittstellentechnik betriebsfähig zu sein, welcher auch immer ausgewählt wird, um die entsprechenden Schnittstellen der Schnittstellen 190, 490 und 690 zu implementieren. Entsprechend kann die Steuerroutine 740 außerdem eine Kommunikationskomponente 749 enthalten, die durch die Prozessorkomponente 750 ausführbar ist, um außerdem derartige Daten und Routinen über das Netz 999 auszutauschen. Wie kurz erklärt wird, muss die Kommunikationskomponente 749 jedoch mit einer oder mehreren Komponenten der Steuerroutine 640 zusammenarbeiten, um die Schnittstelle 690 zu verwenden, um sich an derartigen Austauschen zu beteiligen.
-
Spezifischer in 3 kann die Steuerroutine 140 die Kompilierer 141a und 141b enthalten, die durch die Prozessorkomponente 150 ausführbar sind, um die Codes 111 und 112 der Task-Anteile des Task-Codes 110 in kompilierte Versionen für die Ausführung durch die Kerne der Prozessorkomponenten verschiedener Typen der Prozessorkomponente zu kompilieren. Es sollte abermals angegeben werden, dass, weil nur zwei Typen der Prozessorkomponente (z. B. die Prozessorkomponenten 650 und 750) unter den Verarbeitungsvorrichtungen 600 des verteilten Verarbeitungssystems 1000 dargestellt sind, nur zwei Kompilierer 141a und 141b dargestellt sind. Es sind jedoch Ausführungsformen möglich, in denen die Verarbeitungsvorrichtungen 600 nur einen Typ der Prozessorkomponente aufweisen, und es sind Ausführungsformen möglich, in denen wenigstens einige der Verarbeitungsvorrichtungen 600 mehr als zwei Typen der Prozessorkomponente aufweisen. Ferner sind Ausführungsformen möglich, in denen ein oder mehrere Typen der Prozessorkomponente mehr als einen Typ des Kerns der Prozessorkomponenten enthalten. Folglich kann in derartigen anderen Ausführungsformen die Steuerroutine 140 unterschiedliche Anzahlen von Kompilierern enthalten, wie sie erforderlich sind, um kompilierte Versionen der Routinen der Task-Anteile für die Ausführung durch verschiedene Kerntypen zu erzeugen, die unter den Prozessorkomponenten des verteilten Verarbeitungssystems 1000 vorhanden sind.
-
In Anbetracht dessen, dass die dargestellte Version des Task-Codes 110 nur die beiden Codes 111 und 112 der Task-Anteile (gerade zwei getrennten Task-Anteilen entsprechend) enthält, kompiliert der Kompilierer 141a die Codes 111 und 112 der Task-Anteile, um die Routinen 171a bzw. 172a der Task-Anteile für die Ausführung durch einige der Prozessorkerne 655 zu erzeugen. Außerdem kompiliert der Kompilierer 141b dieselben beiden Codes 111 und 112 der Task-Anteile, um die Routinen 171b bzw. 172b der Task-Anteile für die Ausführung durch die einigen der Prozessorkerne 755 zu erzeugen. In dieser Weise können die Instanzen jedes der beiden Task-Anteile, die jedem der Codes 111 und 112 der Task-Anteile zugeordnet sind, durch irgendeinen der Kerne 655 oder 755 ausgeführt werden. Um den Task-Anteil auszuführen, der dem Code 111 des Task-Anteils zugeordnet ist, würde der Kern 655 die Routine 171a des Task-Anteils ausführen, und/oder würde der Kern 755 die Routine 171b des Task-Anteils ausführen. Um den Task-Anteil auszuführen, der dem Code 112 des Task-Anteils zugeordnet ist, würde der Kern 655 entsprechend die Routine 172a des Task-Anteils ausführen und/oder würde der Kern 755 die Routine 172b des Task-Anteils ausführen.
-
Die Steuerroutine 140 kann eine Einreichungskomponente 144 enthalten, die durch die Prozessorkomponente 150 ausführbar ist, um den Task für die Ausführung durch das verteilte Verarbeitungssystem 1000 durch das Senden (in Zusammenarbeit mit der Kommunikationskomponente 149) der Daten und/oder der Routinen an den Speicher-Server 300 und/oder den Planungs-Server 400 einzureichen. Spezifisch stellt die Einreichungskomponente 144 die Routinen 171a–b und 172a–b der Task-Anteile zusammen mit den Task-Eingangsdaten 133 (falls vorhanden) dem Speicher-Server 300 bereit. Ferner stellt die Einreichungskomponente 144 die Task-Beschreibungsdaten 134 zusammen mit den Task-Konfigurationsdaten 135 (falls vorhanden) dem Planungs-Server 400 bereit. Die Einreichungskomponente 144 kann die Steuerelemente 120 überwachen und kann den Task in Reaktion auf eine Angabe der Betätigung der Steuerelemente 120 durch eine Bedienungsperson der Einreichungsvorrichtung 100, um einen Befehl bereitzustellen, um dies auszuführen, einreichen. Alternativ oder zusätzlich kann die Einreichungskomponente 144 Angaben des Fortschritts und/oder des Abschlusses einer derartigen Einreichung auf der Anzeige 180 visuell darstellen.
-
Die Steuerroutine 140 kann eine Statuskomponente 147 enthalten, die durch die Prozessorkomponente 150 ausführbar ist, um (in Zusammenarbeit mit der Kommunikationskomponente 149) Abfragen für Angaben eines aktuellen Status der Ausführung des Tasks an den Planungs-Server 300 zu senden. Die Statuskomponente 147 kann die Steuerelemente 120 überwachen und eine derartige Abfrage in Reaktion auf eine Angabe der Betätigung der Steuerelemente 120 durch eine Bedienungsperson der Einreichungsvorrichtung 100, um einen Befehl bereitzustellen, um dies auszuführen, senden. Alternativ oder zusätzlich kann die Statuskomponente 147 beim Empfang einer Angabe eines aktuellen Status der Ausführung des Tasks von dem Planungs-Server 400 eine derartige Angabe dieses Status auf der Anzeige 180 visuell darstellen.
-
Spezifischer in 4 kann die Steuerroutine 440 eine Betriebsmittelkomponente 443 enthalten, die durch die Prozessorkomponente 450 ausführbar ist, um (in Zusammenarbeit mit der Kommunikationskomponente 449) die Betriebsmitteldaten von jeder der Verarbeitungsvorrichtungen 600 zu empfangen. Wie vorher erklärt worden ist, können die Stücke der Betriebsmitteldaten von den einzelnen Verarbeitungsvorrichtungen 600 empfangen werden und die Betriebsmittel, die allen Prozessorkomponenten darin zugeordnet sind, ausführlich beschreiben. Wie jedoch außerdem vorher erklärt worden ist, können die Stücke der Betriebsmitteldaten von einzelnen Prozessorkomponenten 650 und/oder 750 jeder der Verarbeitungsvorrichtungen 600 empfangen werden, wobei sie die jeder dieser Prozessorkomponenten zugeordneten Betriebsmittel einzeln ausführlich beschreiben können. Derartige Betriebsmittel können abermals die Anzahl und/oder die Typen der Kerne jeder Prozessorkomponente, die Größe der Caches, die Geschwindigkeiten der Kerne, die Leistungsaufnahmeraten der Kerne, die Größe der für die Prozessorkomponenten verfügbaren Speicher usw. enthalten, wobei sie nicht darauf eingeschränkt sind. Die Betriebsmittelkomponente 443 kann die empfangenen Stücke der Betriebsmitteldaten in den Betriebsmitteldaten 430 ansammeln.
-
Die Steuerroutine 440 kann eine Einreichungskomponente 444 enthalten, die durch die Prozessorkomponente 450 ausführbar ist, um (in Zusammenarbeit mit der Kommunikationskomponente 449) die Task-Beschreibungsdaten 134 und/oder die Task-Konfigurationsdaten 135 als Teil der Einreichungsvorrichtung 100 zu empfangen, die wirkt, um den Task, der dem Task-Code 110 zugeordnet ist, der auszuführen ist, einzureichen. Wie vorher erörtert worden ist, stellen die Task-Beschreibungsdaten 134 Angaben der Parameter des Tasks bereit, einschließlich der Anzahl der Instanzen jedes Task-Anteils, die auszuführen sind, des Ortes (der Orte), an denen sich die Routinen der Task-Anteile und/oder die Eingangsdaten befinden, und/oder eines Ortes, an dem irgendwelche Ausgangsdaten gespeichert werden sollen. Wie außerdem vorher erörtert worden ist, können die Task-Konfigurationsdaten 135 (falls sie empfangen werden) Angaben der Weise bereitstellen, in der die Kerne für die Zuweisung zu den Task-Anteilen ausgewählt werden sollen, wobei diese Angaben jene der Daten 435 der vorgegebenen Konfiguration (falls vorhanden) außer Kraft setzen können.
-
Die Steuerroutine 440 kann eine Kernauswahlkomponente 445 enthalten, die durch die Prozessorkomponente 450 ausführbar ist, um die Kerne der Prozessorkomponenten (z. B. einen oder mehrere der Kerne 655 und/oder 755) des verteilten Verarbeitungssystems 1000 für die Zuweisung der anzuführenden Task-Anteile auszuwählen. Wie erörtert worden ist, können die Kerne der Prozessorkomponenten in einer Weise ausgewählt werden, die einem ausgewählten Kompromiss zwischen dem Verringern des Zeitraums, der erforderlich ist, um einen Task auszuführen, und dem Verringern eines Betrags der elektrischen Leistung, der verbraucht wird, um den Task auszuführen, entspricht. Mit anderen Worten, die Auswahl der Kerne, um die Instanzen der Routinen der Task-Anteile, die ihnen zugewiesen sind, auszuführen, kann auf einem ausgewählten Ausgleichspunkt zwischen der Rechenzeit und dem Leistungsaufnahme-Zeitraum, die benötigt werden, um die Instanzen der Task-Routinen auszuführen, basieren. Die Daten 435 der vorgegebenen Konfiguration (falls vorhanden) können eine vorgegebene Auswahl angeben, um entweder das Verringern des Zeitraums oder das Verringern der Leistungsaufnahme gegenüber dem Anderen zu bevorzugen. Ferner kann die Task-Einreichung des Tasks das Senden der Task-Konfigurationsdaten 135 an den Planungs-Server 400 enthalten, wobei die Task-Konfigurationsdaten 135 eine Angabe einer Auswahl, um entweder das Verringern des Zeitraums oder das Verringern der Leistungsaufnahme zu bevorzugen, enthalten, die sich von der Auswahl, die in den Daten 435 der vorgegebenen Konfiguration angegeben ist, unterscheiden kann und die Auswahl, die in den Daten 435 der vorgegebenen Konfiguration angegeben ist, außer Kraft setzen kann.
-
Wie vorher erörtert worden ist, werden in den Ausführungsformen, in denen die Auswahl getroffen wird, um das Verringern des Zeitraums, um den Task auszuführen, gegenüber dem Verringern des Verbrauchs von elektrischer Leistung, um den Task auszuführen, zu bevorzugen, einige der Kerne 655 und/oder 755 basierend auf einer Bestimmung ausgewählt, welche Kerne imstande sind, jeden Task-Anteil schneller auszuführen. Die Betrachtungen bezüglich dessen, welche der Kerne 655 und/oder 755 imstande sind, einen Task-Anteil schneller auszuführen, enthalten die Taktfrequenz jedes Kerns, die Größe des (der) Caches, der (die) für jeden Kern verfügbar ist (sind), und eine Analyse der wahrscheinlichen Ausführung jedes Task-Anteils in jedem Kerntyp, wobei sie nicht darauf eingeschränkt sind. Alternativ oder zusätzlich werden einige der Kerne 655 und/oder 755 ausgewählt, um den Grad der Lokalität zwischen den ausgewählten Kernen zu vergrößern, um den Zeitraum, um den Task auszuführen, durch das Verringern der Menge der Interprozesskommunikation, die durch das Netz 999 stattfinden muss, gegenüber der Menge der Interprozesskommunikation, durch die internen Busse innerhalb der Verarbeitungsvorrichtungen 600 stattfinden muss, zu verringern. Es wird abermals erwartet, dass die Busse, die die Kerne innerhalb der Verarbeitungsvorrichtungen 600 und innerhalb jeder der Prozessorkomponenten 650 und 750 selbst koppeln, imstande sind, die Daten mit einer höheren Rate zu transportieren, als es über das Netz 999 möglich ist.
-
Wie vorher erörtert worden ist, werden in den Ausführungsformen, in denen die Auswahl getroffen wird, um das Verringern des Verbrauchs elektrischer Leistung, um den Task auszuführen, gegenüber dem Verringern des Zeitraums, der erforderlich ist, um den Task auszuführen, zu bevorzugen, einige der Kerne 655 und/oder 755 basierend auf ihren relativen Leistungsaufnahmeraten ausgewählt. Unter einigen der Kerne 655 und/oder 755 mit relativ ähnlichen Leistungsaufnahmeraten kann eine Bestimmung bezüglich dessen ausgeführt werden, welche imstande sind, einen gegebenen Task-Anteil der Task-Anteile schneller als die anderen auszuführen, so dass weniger Zeit erforderlich ist, um den Task-Anteil bei der relativ ähnlichen Leistungsaufnahmerate unter diesen Kernen auszuführen, um die Gesamt-Leistungsaufnahme zu verringern. Alternativ oder zusätzlich können die Task-Anteile des Tasks analysiert werden, um zu bestimmen, welcher länger für die Ausführung braucht, wobei jene Task-Anteile denjenigen der Kerne 655 und/oder 755 mit niedrigeren Leistungsaufnahmeraten zugewiesen werden können, um zu verursachen, dass mehr des Tasks durch die Kerne ausgeführt wird, die die Leistung mit einer niedrigeren Rate verbrauchen. Im Gegensatz dazu, wenn die Kerne in einer Weise ausgewählt werden, die das Verringern des Zeitraums, um den Task auszuführen, bevorzugen, können die Kerne ohne Rücksicht auf ihre Lokalität beim Auswählen der Kerne, um die Leistungsaufnahme zu verringern, ausgewählt werden. Dies kann auf einer Annahme basieren, dass die Interprozesskommunikationen meistens aus relativ kurzen Austauschen von Signalen aufgebaut sind, so dass der Unterschied der Leistungsaufnahme zwischen dem Senden jener Signale innerhalb einer der Verarbeitungsvorrichtungen 600 gegenüber dem Senden jener Signale zwischen den Verarbeitungsvorrichtungen 600 als relativ vernachlässigbar beachtet wird.
-
Die Steuerroutine 440 kann eine Statuskomponente 447 enthalten, die durch die Prozessorkomponente 450 ausführbar ist, um (in Zusammenarbeit mit der Kommunikationskomponente 449) die Stücke der Statusdaten zu empfangen, die den aktuellen Status der Ausführung der Task-Anteile angeben. Wie vorher erklärt worden ist, können die Stücke der Statusdaten von einzelnen Kernen 655 und/oder 755 der Prozessorkomponenten empfangen werden und den aktuellen Zustand der Ausführung der entsprechenden Routinen der Routinen 171a–b und 172a–b der Task-Anteile ausführlich beschreiben. Die Kerne 655 und/oder 755 der Prozessorkomponenten können derartige Statusdaten dem Planungs-Server 400 bereitstellen, ohne durch Abfragen vom Planungs-Server 400 aufgefordert zu werden, dies auszuführen, so dass gesagt werden kann, dass die Kerne 655 und/oder 755 der Prozessorkomponenten ihre Statusdaten "schieben". Die Statuskomponente 447 kann die empfangenen Stücke der Betriebsmitteldaten in den Status-Betriebsmitteldaten 437 ansammeln. Ferner kann die Statuskomponente 447 auf den Empfang einer Abfrage von der Einreichungsvorrichtung 100 (die in Zusammenarbeit mit der Kommunikationskomponente 449 empfangen wird) über das Netz 999 durch das Senden wenigstens eines Anteils der Statusdaten 437 an die Einreichungsvorrichtung 100 reagieren, um eine Angabe des aktuellen Status des Ausführens des Tasks zu ihr zu transportieren.
-
Spezifischer in 5 kann die Steuerroutine 640 einer der Verarbeitungsvorrichtungen 600 eine Weiterleitungskomponente 648 enthalten, um die Schnittstelle 690 zu betreiben, um die Prozessorkomponente(n) 750 des einen oder der mehreren Verarbeitungs-Untersysteme 700 zusammen mit der Prozessorkomponente 650 an das Netz 999 zu koppeln. Wie dargestellt ist, kann die Weiterleitungskomponente 648 einen Abschnitt der Kommunikationskomponente 649 bilden. Wie vorher erörtert worden ist, kann in einigen Ausführungsformen die Prozessorkomponente 650 eine Basisprozessorkomponente einer der Verarbeitungsvorrichtungen 600 sein, wobei sie als solche direkter als andere Prozessorkomponenten an die Schnittstelle 690 gekoppelt sein kann, so dass die Prozessorkomponente 650 die Schnittstelle 690 direkt betreiben kann. Im Gegensatz kann in derartigen Ausführungsformen die Prozessorkomponente 750 eine Untersystem-Prozessorkomponente sein, die in einem Verarbeitungs-Untersystem 700 enthalten ist, das außerdem den Speicher 760 und/oder andere Betriebsmittel enthält, die von dem Speicher 660 und/oder den anderen Betriebsmitteln, die der Prozessorkomponente 650 zugeordnet sind, völlig getrennt und unabhängig sind. Spezifischer kann jedes der Verarbeitungs-Untersysteme 700 als ein oder mehrere Zusatzleiterplatten implementiert sein, die an ein oder mehrere Busse 659 gekoppelt sind, durch die derartige Zusatzleiterplatten typischerweise an die Prozessorkomponente 650 und/oder die Unterstützungsschaltungen der Prozessorkomponente 650 gekoppelt sind.
-
Die Weiterleitungskomponente 648 kann die Schnittstelle 690 betreiben, um jedem der Verarbeitungs-Untersysteme 700 zusätzlich dazu, welche IP-Adresse der Prozessorkomponente 650 als die Basisprozessorkomponente, die die Schnittstelle 690 direkt betreibt, auch immer bereitgestellt sein kann, eine getrennte Internetprotokolladresse (IP-Adresse) in dem Netz 999 bereitzustellen. Im Wesentlichen ist jedem der Verarbeitungs-Untersysteme 700 mit der Zusammenarbeit der Prozessorkomponente 650 ungeachtet dessen, dass keine der Prozessorkomponenten 750 des Verarbeitungs-Untersystem 700 direkt auf die Schnittstelle 690 zugreifen kann, eine "virtuelle Präsenz" in dem Netz 999 gegeben. Wenn IP-Pakete von dem Netz 999 empfangen werden, die an die IP-Adresse gerichtet sind, die der Prozessorkomponente 650 zugeordnet ist, nimmt die Kommunikationskomponente 649 diese IP-Pakete einfach an, wobei sie ihre Inhalte entkapselt, um es der Prozessorkomponente 650 zu ermöglichen, mit diesen Inhalten zu arbeiten. Wenn jedoch IP-Pakete von dem Netz 999 empfangen werden, die an eine IP-Adresse gerichtet sind, die einem der Verarbeitungs-Untersysteme 700 zugeordnet ist, leitet die Weiterleitungskomponente 648 diese IP-Pakete mit wenig oder keiner Änderung an die geeigneten der Verarbeitungs-Untersysteme 700 weiter. Innerhalb jedes der Verarbeitungs-Untersysteme 700 entkapselt die Kommunikationskomponente 749 die IP-Pakete, die durch die Weiterleitungskomponente 648 an sie weitergeleitet wurden, um es ihrer entsprechenden Prozessorkomponente 750 zu ermöglichen, mit deren Inhalten zu arbeiten.
-
Die Steuerroutine 640 einer der Verarbeitungsvorrichtungen 600 kann eine Betriebsmittelkomponente 643 enthalten, die durch die Prozessorkomponente 650 ausführbar ist, um (in Zusammenarbeit mit der Kommunikationskomponente 449) die Betriebsmitteldaten an den Planungs-Server 400 zu senden. In einigen Ausführungsformen kann die Betriebsmittelkomponente einen oder mehrere Tests der Prozessorkomponente 650 und/oder der Verarbeitungsvorrichtung 600 ausführen, um dynamisch zu bestimmen, welche Verarbeitungs- und/oder anderen Betriebsmittel verfügbar sind. Dies kann in den Ausführungsformen ausgeführt werden, in denen diese Betriebsmittel von Zeit zu Zeit geändert werden können.
-
Die Steuerroutine 640 einer der Verarbeitungsvorrichtungen 600 kann mehrere Instanzen einer Ausführungskomponente 645 enthalten, die durch separate Kerne 655 der Prozessorkomponente 650 separat ausführbar sind, um einen zugewiesenen Task-Anteil durch das Ermöglichen der Ausführung einer der verschiedenen Routinen des Task-Anteils (z. B. einer der Routinen 171a oder 172a des Task-Anteils) auszuführen. Jede Instanz der Ausführungskomponente 645 kann wenigstens einen separat ausführbaren Abschnitt eines Betriebssystems, eine oder mehrere Bibliotheken von Bibliotheksfunktionen und/oder Vorrichtungstreiber enthalten. Wenn der Planungs-Server 400 die Angaben an jeder der Kerne 655 sendet, die ausgewählt worden sind, um den Task-Anteil auszuführen, können derartige Angaben als einzelne Instanzen der Beschreibungsdaten 434 des Task-Anteils empfangen werden. Für jeden der Kerne 655 kann seine entsprechende Instanz der Beschreibungsdaten 434 des Task-Anteils die spezielle Routine der Routinen 171a oder 172a des Task-Anteils, die auszuführen ist, und wo eine Kopie von ihr abzurufen ist, angeben. Jede Instanz der Beschreibungsdaten 434 des Task-Anteils kann außerdem angeben, wo wenigstens ein entsprechender Abschnitt der Task-Eingangsdaten 133 (falls vorhanden) abzurufen ist und/oder wo die Task-Ausgangsdaten 337 (falls irgendwelche vorhanden sind) zu speichern sind. Jede Instanz der Beschreibungsdaten 434 des Task-Anteils kann außerdem angeben, wohin die Instanzen der Statusdaten 637, die den aktuellen Status des Fortschritts beim Ausführen einer Instanz einer Routine des Task-Anteils angeben, zu senden sind.
-
Spezifischer erwartet ein Kern 655 beim Ausführen seiner entsprechenden Instanz der Ausführungskomponente 645 den Empfang einer Instanz der Beschreibungsdaten 434 des Task-Anteils. Beim Empfangen einer Instanz der Beschreibungsdaten 434 des Task-Anteils ruft der Kern 655 eine geeignete Routine der Routinen 171a oder 172a des Task-Anteils zusammen mit den Task-Eingangsdaten 133 von dem Speicher-Server 300 ab, wie in den Beschreibungsdaten 434 des Task-Anteils angegeben ist. Die weitere Ausführung der Instanz der Ausführungskomponente 645 verursacht, dass der Kern 655 die Ausführung seiner zugeordneten Instanz einer Routine der Routinen 171a oder 172a des Task-Anteils beginnt, (wobei sie z. B. den Kern 655 veranlasst, zu einer Anweisung dieser Instanz einer Routine des Task-Anteils zu "springen"). Während der Ausführung der Instanz entweder der Routine 171a oder der Routine 172a des Task-Anteils veranlassen entweder die Anweisungen der einen Routine der Routinen 171a und 172a des Task-Anteils oder die Anweisungen der Instanz der Ausführungskomponente 645 den Kern 655, die Statustaten 637 (in Zusammenarbeit mit der Kommunikationskomponente 649) an den Planungs-Server 400 zu senden. Außerdem wird während der Ausführung der Instanz entweder der Routine 171a oder der Routine 172a des Task-Anteils der Kern 655 veranlasst, die Task-Ausgangsdaten 337 (falls irgendwelche vorhanden sind) (abermals in Zusammenarbeit mit der Kommunikationskomponente 649) an den Speicher-Server 300 zu senden. Beim Abschluss der Ausführung der Routine 171a oder 172a des Task-Anteils wird der Kern 655 durch die Ausführung der Ausführungskomponente 645 veranlasst, abermals den Empfang einer neuen Instanz der Beschreibungsdaten 434 des Task-Anteils zu erwarten, die die Aspekte des nächsten Task-Anteils, der auszuführen ist, angeben.
-
Spezifischer in 6 kann die Steuerroutine 740 eines der Verarbeitungs-Untersysteme 700 Komponenten enthalten, die im Wesentlichen den Komponenten der Steuerroutine 640 entsprechen, die im Wesentlichen die gleichen Funktionen ausführen. Spezifisch kann die Steuerroutine 740 zusätzlich zu der Kommunikationskomponente 749 (wie vorher erörtert worden ist) eine Betriebsmittelkomponente 743 und mehrere Instanzen einer Ausführungskomponente 745 für die getrennte Ausführung durch jeden der Kerne 755 enthalten.
-
7 veranschaulicht eine Ausführungsform eines logischen Ablaufs 2100. Der logische Ablauf 2100 kann einige oder alle der Operationen repräsentieren, die durch eine oder mehrere hier beschriebene Ausführungsformen ausgeführt werden. Spezifischer kann der logische Ablauf 2100 die Operationen veranschaulichen, die durch die Prozessorkomponente 450 beim Ausführen wenigstens der Steuerroutine 440 ausgeführt werden und/oder durch eine andere Komponente(n) des Planungs-Servers 400 ausgeführt werden.
-
Bei 2110 empfängt eine Prozessorkomponente eines Planungs-Servers eines verteilten Verarbeitungssystems (z. B. die Prozessorkomponente 450 des Planungs-Servers 400 des verteilten Verarbeitungssystem 1000) die Betriebsmitteldaten von verschiedenen Verarbeitungsvorrichtungen des verteilten Verarbeitungssystems (z. B. den Verarbeitungsvorrichtungen 600). Wie vorher erörtert worden ist, geben die Betriebsmitteldaten die Verarbeitungs- und/oder anderen Betriebsmittel an, die jeder Prozessorkomponente innerhalb jeder der Verarbeitungsvorrichtungen (z. B. jeder der Basisprozessorkomponenten 650 und/oder der Untersystem-Verarbeitungskomponenten 750) zugeordnet sind. Wie außerdem vorher erörtert worden ist, können derartige Betriebsmitteldaten pro Verarbeitungsvorrichtung oder pro Prozessorkomponente empfangen werden.
-
Bei 2120 werden die Daten, die einen Task beschreiben, der durch die Verarbeitungsvorrichtungen des verteilten Verarbeitungssystems auszuführen ist, (z. B. die Task-Beschreibungsdaten 134) empfangen. Wie vorher erörtert worden ist, spezifizieren derartige Task-Beschreibungsdaten die verschiedenen Parameter des auszuführenden Tasks, einschließlich der Anzahl der verschiedenen Task-Anteile, die auszuführen sind, der Anzahl der Instanzen jedes Task-Anteils, die auszuführen sind, der Orte, wo die Routinen der Task-Anteile und/oder (gegebenenfalls) die Eingangsdaten gefunden werden können, eines Orts, wohin die Statusdaten gesendet werden sollen, und/oder eines Orts, wo die Ausgangsdaten gespeichert werden sollen, wobei sie nicht darauf eingeschränkt sind.
-
Bei 2130 wird eine Angabe empfangen, um die Prozessorkerne für die Zuweisung der Task-Anteile des Tasks in einer Weise auszuwählen, die das Verringern des Zeitraums, um den Task auszuführen, gegenüber dem Verringern des Verbrauchs elektrischer Leistung beim Ausführen des Tasks bevorzugt. Spezifischer werden die Auswahlen der Kerne, um die elektrische Leistungsaufnahme zu verringern, nur ausgeführt, falls die Auswahl, dies auszuführen, den Zeitraum, um den Task auszuführen, nicht vergrößert oder den Zeitraum, um den Task auszuführen, um einen relativ vernachlässigbaren Grad vergrößert. Wie vorher erörtert worden ist, kann die Prozessorkomponente des Planungs-Servers eine derartige Angabe von den Konfigurationsdaten (z. B. den Daten 435 der vorgegebenen Konfiguration, die bereits in dem Speicher 460 gespeichert sind, oder den Task-Konfigurationsdaten 135, die von der Einreichungsvorrichtung 100 empfangen werden) empfangen.
-
Bei 2140 werden in Reaktion auf eine derartige Angabe die Anzahlen jedes Kerntyps, die gegenwärtig von jeder Basisprozessorkomponente (z. B. einer der Prozessorkomponenten 650) und jeder Untersystem-Prozessorkomponente (z. B. einer der Prozessorkomponenten 750) jeder der Verarbeitungsvorrichtungen verfügbar sind, bestimmt. Wie vorher erörtert worden ist, können ein oder mehrere Kerne entweder der Basis- oder der Untersystem-Prozessorkomponenten in einer oder mehreren der Verarbeitungsvorrichtungen immer noch mit dem Ausführen einer Routine eines Task-Anteils beschäftigt sein, die die Logik eines Task-Anteils eines weiteren Tasks implementiert, wobei sie deshalb noch nicht verfügbar sein können, um sie einem Task-Anteil eines neuen Tasks zuzuweisen.
-
Bei 2150 werden die verfügbaren Typen der Prozessorkerne für jeden der Task-Anteile des Tasks ausgewählt, um den Zeitraum zu verringern, der erforderlich ist, um jeden Task-Anteil auszuführen. Anders dargelegt, für jeden auszuführenden Task-Anteil wird jeder der verfügbaren verschiedenen Kerntypen bewertet, um zu bestimmen, welcher den Task-Anteil schneller ausführen kann. Dann werden, falls möglich (z. B. falls ausreichend Kerne des Typs, welcher auch immer schneller ausführt, verfügbar sind) die Kerne des Typs, der den Task-Anteil schneller ausführen kann, ausgewählt, um die Instanzen dieses Task-Anteils auszuführen.
-
Bei 2160 wird beim Auswählen zwischen den verfügbaren Kernen die Auswahl der Kerne außerdem ausgeführt, um die Auftreten der Interprozesskommunikationen über das Netz, das die Verarbeitungsvorrichtungen koppelt, (z. B. das Netz 999) zu minimieren. Anders dargelegt, die Kerne werden ausgewählt, um den Grad der Lokalität zwischen den ausgewählten Kernen zu vergrößern, so dass sich mehr der ausgewählten Kerne physikalisch innerhalb weniger separater Verarbeitungsvorrichtungen befinden. Wie vorher erörtert worden ist, wird vergegenwärtigt, dass Interprozesskommunikationen, die zwischen den Kernen über die Busse und/oder innerhalb der Prozessorkomponenten innerhalb jeder Verarbeitungsvorrichtung stattfinden, schneller als die Interprozesskommunikationen über ein Netz zwischen den Verarbeitungsvorrichtungen ausgeführt werden können.
-
Bei 2170 werden den Verarbeitungsvorrichtungen, die die Kerne aufweisen, die ausgewählt werden, um zugewiesen zu werden, um den Task-Anteil des Tasks auszuführen, die Angaben dieser Auswahlen signalisiert. Wie vorher erörtert worden ist, können die Kerne, die in jeder der Verarbeitungsvorrichtungen, die Kerne aufweisen, die so ausgewählt werden, ausgewählt werden, die Kerne einer Basisprozessorkomponente oder die Kerne einer Untersystem-Prozessorkomponente oder beides sein. Wie außerdem vorher erörtert worden ist, können derartige Angaben durch das Senden der Beschreibungsdaten der Task-Anteile an jeden ausgewählten Kern bereitgestellt werden, um dadurch jedem Kern die Informationen bereitzustellen, die erforderlich sind, um eine entsprechende Routine eines Task-Anteils und/oder irgendwelche Task-Eingangsdaten usw. abzurufen.
-
8 veranschaulicht eine Ausführungsform eines logischen Ablaufs 2200. Der logische Ablauf 2200 kann einige oder alle der Operationen repräsentieren, die durch eine oder mehrere der hier beschriebenen Ausführungsformen ausgeführt werden. Spezifischer kann der logische Ablauf 2200 die Operationen veranschaulichen, die durch die Prozessorkomponente 450 beim Ausführen wenigstens der Steuerroutine 440 ausgeführt werden und/oder durch eine andere Komponente(n) des Planungs-Servers 400 ausgeführt werden.
-
Bei 2210 empfängt eine Prozessorkomponente eines Planungs-Servers eines verteilten Verarbeitungssystems (z. B. die Prozessorkomponente 450 des Planungs-Servers 400 des verteilten Verarbeitungssystem 1000) die Betriebsmitteldaten von verschiedenen Verarbeitungsvorrichtungen des verteilten Verarbeitungssystems (z. B. den Verarbeitungsvorrichtungen 600). Bei 2220 werden die Daten, die einen durch die Verarbeitungsvorrichtungen des verteilten Verarbeitungssystems auszuführenden Task beschreiben, (z. B. die Task-Beschreibungsdaten 134) außerdem empfangen.
-
Bei 2230 wird eine Angabe empfangen, um die Prozessorkerne für die Zuweisung der Task-Anteile des Tasks in einer Weise auszuwählen, die das Verringern des Verbrauchs elektrischer Leistung, um den Task auszuführen, gegenüber dem Verringern des Zeitraums, der erforderlich ist, um den Task auszuführen, bevorzugt. Spezifischer werden die Auswahlen der Kerne, um den erforderlichen Zeitraum zu verringern, nur ausgeführt, falls die Auswahl, dies auszuführen, den Betrag der elektrischen Leistung, der verbraucht wird, um den Task auszuführen, nicht vergrößert oder den Verbrauch elektrischer Leistung, um den Task auszuführen, nur um einen relativ vernachlässigbaren Grad vergrößert. Wie vorher erörtert worden ist, kann die Prozessorkomponente des Planungs-Servers eine derartige Angabe von den Konfigurationsdaten (z. B. den Daten 435 der vorgegebenen Konfiguration, die bereits in dem Speicher 460 gespeichert sind, oder den Task-Konfigurationsdaten 135, die von der Einreichungsvorrichtung 100 empfangen werden) empfangen.
-
Bei 2240 werden die Kerne der Basisprozessorkomponenten (z. B. die Kerne 655 der Prozessorkomponenten 650) und der Untersystem-Prozessorkomponenten (z. B. die Kerne 755 der Prozessorkomponenten 750), die gegenwärtig verfügbar sind, durch ihre relativen Leistungsaufnahmeraten eingeordnet, um jene mit niedrigeren Leistungsaufnahmeraten zu identifizieren. Bei 2250 werden die relativen Zeitdauern, die erforderlich sind, um jeden Task-Anteil auszuführen, analysiert, um die Task-Anteile zu identifizieren, die mehr Zeit für die Ausführung erfordern.
-
Bei 2260 werden die Task-Anteile, die mehr Zeit für die Ausführung erfordern, den Kernen mit den niedrigsten Leistungsaufnahmeraten zugewiesen. Wie vorher erörtert worden ist, führt dies effektiv dazu, dass mehr des Tasks insgesamt den Kernen mit dem niedrigsten Leistungsaufnahmeraten zugewiesen wird, um dadurch die Gesamt-Leistungsaufnahme zu verringern. Bei 2270 werden den Verarbeitungsvorrichtungen, die die Kerne aufweisen, die ausgewählt werden, um zugewiesen zu werden, um einen Task-Anteil des Tasks auszuführen, die Angaben jener Auswahlen signalisiert.
-
9 veranschaulicht eine Ausführungsform eines logischen Ablaufs 2300. Der logische Ablauf 2300 kann einige oder alle der Operationen repräsentieren, die durch eine oder mehrere der hier beschriebenen Ausführungsformen ausgeführt werden. Spezifischer kann der logische Ablauf 2300 die Operationen veranschaulichen, die durch die Prozessorkomponente 650 beim Ausführen wenigstens der Steuerroutine 640 ausgeführt werden und/oder durch eine andere Komponente(n) von wenigstens einer der Verarbeitungsvorrichtungen 600 ausgeführt werden.
-
Bei 2310 betreibt eine Basisprozessorkomponente einer Verarbeitungsvorrichtung eines verteilten Verarbeitungssystems (z. B. eine der Prozessorkomponenten 650 einer der Verarbeitungsvorrichtungen 600 des verteilten Verarbeitungssystems 1000) eine Schnittstelle der Verarbeitungsvorrichtung zu einem Netz (z. B. die Schnittstelle 690, die eine der Verarbeitungsvorrichtungen 600 an das Netz 999 koppelt), um das Netz nach Paketen zu überwachen, die zu mehreren IP-Adressen gerichtet sind, die den Prozessorkomponenten der Verarbeitungsvorrichtung zugeordnet sind. Wie vorher erörtert worden ist, kann eine Prozessorkomponente 650, die als die Basisprozessorkomponente einer der Verarbeitungsvorrichtungen 600 dient, die Schnittstelle 690 dieser Verarbeitungsvorrichtung 600 betreiben, um für jede der Prozessorkomponenten 750, die als eine Untersystem-Prozessorkomponente dienen, "virtuelle Präsenzen" bereitzustellen. Folglich können der einen Verarbeitungsvorrichtung 600 mehrere IP-Adressen zugeordnet sein. Bei 2320 wird ein Paket in dem Netz detektiert, das an eine der IP-Adressen gerichtet ist.
-
Bei 2330 wird eine Prüfung bezüglich dessen ausgeführt, ob das Paket an die IP-Adresse der Basisprozessorkomponente gerichtet ist. Wenn ja, dann wird das Paket durch die Basisprozessorkomponente angenommen (und anschließend durch die Basisprozessorkomponente auf das Paket gewirkt). Wenn jedoch das Paket nicht an die IP-Adresse der Basisprozessorkomponente gerichtet ist, dann wird das Paket bei 2340 an eine der Untersystem-Prozessorkomponenten weitergeleitet, welcher auch immer eine IP-Adresse in dem Netz bereitgestellt worden ist, die der IP-Adresse entspricht, an die das Paket gerichtet ist. Dieses Weiterleiten des Pakets geschieht durch einen oder mehrere Busse (z. B. den Bus 659), der die Untersystem-Prozessorkomponente an die Basisprozessorkomponente koppelt.
-
10 veranschaulicht eine Ausführungsform einer Verarbeitungsarchitektur 3000, die zum Implementieren der vorher beschriebenen verschiedenen Ausführungsformen geeignet ist. Spezifischer kann die Verarbeitungsarchitektur 3000 (oder deren Varianten) als Teil einer oder mehrerer der Computer-Vorrichtungen 100, 400 oder 600 und/oder durch das Verarbeitungs-Untersystem 700 implementiert sein. Es sollte angegeben werden, dass den Komponenten der Verarbeitungsarchitektur 3000 Bezugszeichen gegeben sind, in denen die letzten beiden Ziffern den letzten beiden Ziffern der Bezugszeichen von wenigstens einigen der Komponenten entsprechen, die früher als Teil dieser Computer-Vorrichtungen dargestellt und beschrieben worden sind. Dies wird als eine Unterstützung beim Korrelieren der Komponenten von jeder ausgeführt.
-
Die Verarbeitungsarchitektur 3000 kann verschiedene Elemente enthalten, die im Allgemeinen bei der digitalen Verarbeitung eingesetzt werden, einschließlich ohne Einschränkung eines oder mehrerer Prozessoren, Mehrkernprozessoren, Koprozessoren, Speichereinheiten, Chip-Sätzen, Controllern, Peripherievorrichtungen, Schnittstellen, Oszillatoren, Zeitsteuerungsvorrichtungen, Videokarten, Audiokarten, Multimedia-Eingabe/Ausgabe-Komponenten (Multimedia-E/A-Komponenten), Leistungsversorgungen usw. Wie die Begriffe "System" und "Komponente" in dieser Anmeldung verwendet werden, sind sie vorgesehen, auf eine Entität einer Computer-Vorrichtung zu verweisen, in der eine digitale Verarbeitung ausgeführt wird, wobei diese Entität Hardware, eine Kombination aus Hardware und Software, Software oder Software in Ausführung ist, wobei deren Beispiele durch diese dargestellte beispielhafte Verarbeitungsarchitektur bereitgestellt sind. Eine Komponente kann z. B. ein Prozess, der in einer Prozessorkomponente abläuft, die Prozessorkomponente selbst, eine Speichervorrichtung (z. B. ein Festplattenlaufwerk, mehrere Speicherlaufwerke in einer Anordnung usw.), die ein optisches und/oder magnetische Speichermedium verwenden kann, ein Software-Objekt, eine ausführbare Folge von Anweisungen, ein Ausführungs-Thread, ein Programm und/oder eine gesamte Computer-Vorrichtung (z. B. ein gesamter Computer) sein, ist aber nicht darauf eingeschränkt. Zur Veranschaulichung können sowohl eine Anwendung, die in einem Server abläuft, und der Server eine Komponente sein. Ein oder mehrere Komponenten können sich innerhalb eines Prozesses und/oder eines Ausführungs-Threads befinden, wobei eine Komponente in einer Computer-Vorrichtung lokalisiert und/oder zwischen zwei oder mehr Computer-Vorrichtungen verteilt sein kann. Ferner können die Komponenten kommunikationstechnisch durch verschiedene Typen von Kommunikationsmedien miteinander gekoppelt sein, um die Operationen zu koordinieren. Die Koordination kann den unidirektionalen oder den bidirektionalen Austausch von Informationen umfassen. Die Komponenten können z. B. Informationen in der Form von Signalen, die über die Kommunikationsmedien übertragen werden, übertragen. Die Informationen können als Signale implementiert sein, die einer oder mehreren Signalleitungen zugewiesen sind. Eine Nachricht (einschließlich einer Befehls-, einer Status-, einer Adressen- oder einer Datennachricht) kann eines der derartigen Signale sein oder kann eine Vielzahl derartiger Signale sein und kann entweder seriell oder im Wesentlichen parallel durch irgendwelche von verschiedenen Verbindungen und/oder Schnittstellen übertragen werden.
-
Wie dargestellt ist, kann beim Implementieren der Verarbeitungsarchitektur 3000 eine Computer-Vorrichtung wenigstens eine Prozessorkomponente 950, einen Speicher 960, eine Schnittstelle 990 zu anderen Vorrichtungen und eine Kopplung 959 enthalten. Wie erklärt wird, kann in Abhängigkeit von den verschiedenen Aspekten einer Computer-Vorrichtung, die die Verarbeitungsarchitektur 3000 implementiert, einschließlich ihrer vorgesehenen Verwendung und/oder der Bedingungen der Verwendung, eine derartige Computer-Vorrichtung ferner zusätzliche Komponenten enthalten, wie z. B. ohne Einschränkung eine Anzeigeschnittstelle 985 oder ein oder mehrere Verarbeitungs-Untersysteme 900.
-
Die Kopplung 959 kann einen oder mehrere Busse, Punkt-zu-Punkt-Verbindungen, Sender/Empfänger, Puffer, Koppelpunktschalter und/oder andere Leiter und/oder eine andere Logik, die wenigstens die Prozessorkomponente 950 kommunikationstechnisch an den Speicher 960 koppelt, enthalten. Die Kopplung 959 kann ferner die Prozessorkomponente 950 an die Schnittstelle 990 und/oder das Audio-Untersystem 970 und/oder die Anzeigeschnittstelle 985 (in Abhängigkeit davon, welche von diesen und/oder anderen Komponenten außerdem vorhanden sind) koppeln. Wenn die Prozessorkomponente 950 so durch die Kopplungen 959 gekoppelt ist, kann die Prozessorkomponente 950 verschiedene der oben ausführlich beschriebenen Tasks ausführen, für welchen (welche) auch immer die oben beschriebenen Computer-Vorrichtungen die Verarbeitungsarchitektur 3000 implementieren. Die Kopplung 959 kann mit irgendeiner von verschiedenen Techniken oder Kombinationen von Techniken, durch die Signale optisch und/oder elektrisch transportiert werden, implementiert sein. Wenigstens Abschnitte der Kopplungen 959 können ferner Zeitsteuerungen und/oder Protokolle verwenden, die irgendeinem aus einer umfassenden Vielfalt von Industriestandards entsprechen, einschließlich ohne Einschränkung eines beschleunigten Graphik-Ports (AGP), Card-Bus, einer erweiterten Industriestandard-Architektur (E-ISA), einer Mikrokanalarchitektur (MCA), NuBus, einer (erweiterten) Peripheriekomponenten-Zusammenschaltung (PCI-X), PCI-Express (PCI-E), des Busses der internationalen Vereinigung der Speicherkarten der Personal-Computer (PCMCIA-Busses), HyperTransportTM, QuickPath und dergleichen.
-
Wie vorher erörtert worden ist, kann die Prozessorkomponente 950 (die einer oder mehreren der Prozessorkomponenten 150, 450, 650 oder 750 entspricht) eine umfassende Vielfalt kommerziell verfügbarer Prozessoren enthalten, die irgendeine von einer umfassenden Vielfalt von Techniken verwenden und mit einem oder mehreren Kernen implementiert sind, die in irgendeiner von einer Anzahl von Weisen physikalisch kombiniert sind.
-
Wie vorher erörtert worden ist, kann der Speicher 960 (der einem oder mehreren der Speicher 160, 460, 660 oder 760 entspricht) aus einer oder mehreren getrennten Speichervorrichtungen basierend auf irgendeiner von einer umfassenden Vielfalt von Techniken oder Kombinationen von Techniken aufgebaut sein. Spezifischer kann der Speicher 960 einen flüchtigen Speicher 961 (z. B. einen Halbleiterspeicher basierend auf einer oder mehreren Formen der RAM-Technik) und/oder einen nichtflüchtigen Speicher 962 (z. B. einen Halbleiter-, ferromagnetischen oder anderen Speicher, der keine ständige Bereitstellung elektrischer Leistung erfordert, um seine Inhalte zu bewahren) und/oder einen Speicher 963 mit abnehmbaren Medien (z. B. eine abnehmbare Platte oder einen Halbleiterspeicher-Kartenspeicher, durch die Informationen zwischen Computer-Vorrichtungen transportiert werden können) enthalten, wie dargestellt ist. Diese Darstellung des Speichers 960 als möglicherweise mehrere verschiedene Typen des Speichers enthaltend geschieht in Erkennung der alltäglichen Verwendung von mehr als einem Typ der Speichervorrichtung in den Computer-Vorrichtungen, in denen ein Typ die Fähigkeiten des relativ schnellen Lesens und Schreibens bereitstellt, die eine schnellere Verarbeitung der Daten durch die Prozessorkomponente 950 ermöglichen (aber möglicherweise unter Verwendung einer "flüchtigen" Technik, die ständig elektrische Leistung erfordert), während ein weiterer Typ eine relativ hohe Dichte des nichtflüchtigen Speichers bereitstellt (aber wahrscheinlich die Fähigkeiten eines relativ langsamen Lesens und Schreibens bereitstellt).
-
In Anbetracht der oft verschiedenen Eigenschaften der verschiedenen Speichervorrichtungen, die verschiedene Techniken verwenden, ist es außerdem alltäglich, dass derartige verschiedene Speichervorrichtungen durch verschiedene Speicher-Controller, die durch verschiedene Schnittstellen an ihre unterschiedlichen Speichervorrichtungen gekoppelt sind, an andere Abschnitte der Computer-Vorrichtung gekoppelt sind. Wo beispielhaft der flüchtige Speicher 961 vorhanden ist und auf der RAM-Technik basiert, kann der flüchtige Speicher 961 durch einen Speicher-Controller 965a, der eine geeignete Schnittstelle zu dem flüchtigen Speicher 961 bereitstellt, die vielleicht eine Zeilen- und Spaltenadressierung verwendet, kommunikationstechnisch an die Kopplung 959 gekoppelt sein, wobei der Speicher-Controller 965a Zeilenauffrischungs- und/oder andere Wartungs-Tasks ausführen kann, um das Bewahren der innerhalb des flüchtigen Speichers 961 gespeicherten Informationen zu unterstützen. Als ein weiteres Beispiel kann, wo der nichtflüchtige Speicher 962 vorhanden ist und eine oder mehrere ferromagnetische und/oder Halbleiter-Plattenlaufwerke enthält, der nichtflüchtige Speicher 962 durch einen Speicher-Controller 965b, der eine geeignete Schnittstelle zu dem nichtflüchtigen Speicher 962 bereitstellt, die vielleicht das Adressieren von Blöcken der Informationen und/oder von Zylindern und Sektoren verwendet, kommunikationstechnisch an die Kopplung 959 gekoppelt sein. Als ein noch weiteres Beispiel kann, wo der Speicher 963 mit abnehmbaren Medien vorhanden ist und ein oder mehrere optische und/oder Halbleiter-Plattenlaufwerke enthält, die eine oder mehrere Stücke des maschinenlesbaren Speichermediums 969 verwenden, der Speicher 963 mit abnehmbaren Medien durch einen Speicher-Controller 965c, der eine geeignete Schnittstelle zu dem Speicher 963 mit abnehmbaren Medien bereitstellt, die vielleicht die Adressierung von Blöcken der Informationen verwendet, wobei der Speicher-Controller 965c die Lese-, Lösch- und Schreiboperationen in einer Weise koordinieren kann, die für die Lebensdauer des maschinenlesbaren Speichermediums 969 spezifisch ist, kommunikationstechnisch an die Kopplung 959 gekoppelt sein.
-
Der eine oder der andere des flüchtigen Speichers 961 oder des nichtflüchtigen Speichers 962 kann in Abhängigkeit von den Techniken, auf denen er basiert, einen Herstellungsartikel in der Form eines maschinenlesbaren Speichermediums enthalten, auf dem eine Routine, die eine Folge von Anweisungen enthält, die durch die Prozessorkomponente 950 ausführbar ist, um die verschiedenen Ausführungsformen zu implementieren, gespeichert sein kann. Wo der nichtflüchtige Speicher 962 ferromagnetisch basierte Plattenlaufwerke (z. B. sogenannte "Festplattenlaufwerke") enthält, verwendet beispielhaft jedes derartige Plattenlaufwerk typischerweise eine oder mehrere rotierende Platten, auf denen magnetisch reagierende Partikel aufgebracht sind und magnetisch in verschiedenen Mustern orientiert sind, um Informationen, wie z. B. eine Folge von Anweisungen, in einer zu einem Speichermedium, wie z. B. einer Diskette, ähnlichen Weise zu speichern. Als ein weiteres Beispiel kann der nichtflüchtige Speicher 962 aus Bänken von Halbleiter-Speichervorrichtungen aufgebaut sein, um Informationen, wie z. B. Folgen von Anweisungen, in einer zu einer Kompakt-Flash-Karte ähnlichen Weise zu speichern. Abermals ist es alltäglich, unterschiedliche Typen von Speichervorrichtungen in einer Computer-Vorrichtung zu verschiedenen Zeitpunkten zu verwenden, um ausführbare Routinen und/oder Daten zu speichern. Folglich kann eine Routine, die eine Folge von Anweisungen enthält, um durch die Prozessorkomponente 950 ausgeführt zu werden, um verschiedene Ausführungsformen zu implementieren, anfänglich in dem maschinenlesbaren Speichermedium 969 gespeichert sein, wobei der Speicher 963 mit abnehmbaren Medien anschließend beim Kopieren dieser Routine in den nichtflüchtigen Speicher 962 für die längerfristige Speicherung, die das kontinuierliche Vorhandensein des maschinenlesbaren Speichermediums 969 nicht erfordert, und/oder in den flüchtigen Speicher 961, um einen schnelleren Zugriff durch die Prozessorkomponente 950 zu ermöglichen, wenn diese Routine ausgeführt wird, verwendet werden kann.
-
Wie vorher erörtert worden ist, kann die Schnittstelle 990 (entsprechend einer oder mehreren der Schnittstellen 190, 490, 690 oder 790) irgendeine von verschiedenen Signalisierungstechniken verwenden, die irgendeiner von verschiedenen Kommunikationstechniken entspricht, die verwendet werden können, um die Computer-Vorrichtung kommunikationstechnisch an eine oder mehrere andere Vorrichtungen zu koppeln. Abermals können eine oder beide von verschiedenen Formen der verdrahteten oder drahtlosen Signalisierung verwendet werden, um es der Prozessorkomponente 950 zu ermöglichen, mit Eingabe/Ausgabe-Vorrichtungen (z. B. der dargestellten beispielhaften Tastatur 920 oder einem Drucker 925) und/oder anderen Computer-Vorrichtungen, möglicherweise durch ein Netz (z. B. das Netz 999) oder einen untereinander verbundenen Satz von Netzen, in Wechselwirkung zu treten. In Erkennung des oft im hohen Maße verschiedenen Charakters der mehreren Typen der Signalisierung und/oder der Protokolle, die oft durch irgendeine Computer-Vorrichtung unterstützt werden müssen, ist die Schnittstelle 990 als mehrere verschiedene Schnittstellen-Controller 995a, 995b und 995c enthaltend dargestellt. Der Schnittstellen-Controller 995a kann irgendeinen von verschiedenen Typen der verdrahteten digitalen seriellen Schnittstelle oder der drahtlosen Hochfrequenz-Schnittstelle verwenden, um seriell gesendete Nachrichten von den Anwendereingabevorrichtungen, wie z. B. der dargestellten Tastatur 920, zu empfangen. Der Schnittstellen-Controller 995b kann irgendeine von verschiedenen verkabelungsbasierten oder drahtlosen Signalisierungen, Zeitsteuerungen und/oder Protokollen verwenden, um durch das dargestellte Netz 999 (vielleicht ein Netz, das aus einer oder mehreren Verbindungen, kleineren Netzen oder vielleicht dem Internet aufgebaut ist) auf andere Computer-Vorrichtungen zu zugreifen. Die Schnittstelle 995c kann irgendeine von verschiedenen elektrisch leitfähigen Verkabelungen verwenden, die die Verwendung entweder der seriellen oder der parallelen Signalübertragung ermöglichen, um Daten zu dem dargestellten Drucker 925 zu transportieren. Andere Beispiele von Vorrichtungen, die durch einen oder mehrere Schnittstellen-Controller der Schnittstelle 990 kommunikationstechnisch gekoppelt sein können, enthalten ohne Einschränkung Mikrophone, Fernsteuerungen, Eingabestifte, Kartenleser, Fingerabdruckleser, Wechselwirkungshandschuhe der virtuellen Realität, graphische Eingabetabletts, Joysticks, andere Tastaturen, Netzhaut-Scanner, die Berührungseingabekomponente von Berührungsschirmen, Rollkugeln, verschiedene Sensoren, eine Kamera oder eine Kameraanordnung, um die Bewegung von Personen zu überwachen, um Befehle und/oder Daten, die durch diese Personen über Gesten und/oder Gesichtsausdrücke signalisiert werden, anzunehmen, Laserdrucker, Tintenstrahldrucker, mechanische Roboter, Fräsmaschinen usw.
-
Wo eine Computer-Vorrichtung kommunikationstechnisch an eine Anzeige (z. B. die dargestellte beispielhafte Anzeige 980, die einer oder mehreren der Anzeigen 180 und 380 entspricht) gekoppelt ist (oder vielleicht tatsächlich eine Anzeige enthält), kann eine derartige Computer-Vorrichtung, die die Verarbeitungsarchitektur 3000 implementiert, außerdem die Anzeigeschnittstelle 985 enthalten. Obwohl mehr verallgemeinerte Schnittstellentypen beim kommunikationstechnischen Koppeln an eine Anzeige verwendet werden können, machen sowohl die etwas spezialisierte zusätzliche Verarbeitung, die oft beim visuellen Anzeigen verschiedener Formen des Inhalts auf einer Anzeige erforderlich ist, als auch die etwas spezialisierte Art der verwendeten verkabelungsbasierten Schnittstellen oft die Bereitstellung einer getrennten Anzeigeschnittstelle erwünscht. Die verdrahteten und/oder drahtlosen Signalisierungstechniken, die durch die Anzeigeschnittstelle 985 beim kommunikationstechnischen Ankoppeln der Anzeige 980 verwendet werden können, machen von einer Signalisierung und/oder Protokollen Gebrauch, die irgendeinem von verschiedenen Industriestandards entsprechen, einschließlich ohne Einschränkung irgendeiner von verschiedenen analogen Videoschnittstellen, einer digitalen Videoschnittstelle (DVI), DisplayPort usw.
-
Allgemeiner können die verschiedenen Elemente der Computer-Vorrichtungen, die hier beschrieben und dargestellt sind, verschiedene Hardware-Elemente, Software-Elemente oder eine Kombination aus beiden enthalten. Beispiele der Hardware-Elemente können Vorrichtungen, Logikvorrichtungen, Komponenten, Prozessoren, Mikroprozessoren, Schaltungen, Prozessorkomponenten, Schaltungselemente (z. B. Transistoren, Widerstände, Kondensatoren, Spulen usw.), integrierte Schaltungen, anwendungsspezifische integrierte Schaltungen (ASIC), programmierbare Logikvorrichtungen (PLD), digitale Signalprozessoren (DSP), feldprogrammierbare Gatteranordnungen (FPGA), Speichereinheiten, logische Gatter, Register, Halbleitervorrichtungen, Chips, Mikrochips, Chip-Sätze usw. enthalten. Beispiele der Software-Elemente können Software-Komponenten, Programme, Anwendungen, Computer-Programme, Anwendungsprogramme, Systemprogramme, Software-Entwicklungsprogramme, Maschinenprogramme, Betriebssystem-Software, Middleware, Firmware, Software-Module, Routinen, Subroutinen, Funktionen, Verfahren, Prozeduren, Software-Schnittstellen, Anwendungsprogrammschnittstellen (API), Befehlssätze, Berechnungs-Code, Computer-Code, Codesegmente, Computer-Codesegmente, Wörter, Werte, Symbole oder irgendeine Kombination daraus enthalten. Das Bestimmen, ob eine Ausführungsform unter Verwendung von Hardware-Elementen und/oder Software-Elementen implementiert wird, kann jedoch gemäß irgendeiner Anzahl von Faktoren variieren, wie z. B. einer gewünschten Rechengeschwindigkeit, den Leistungspegeln, den Wärmetoleranzen, dem Verarbeitungszyklusbudget, den Eingangsdatenraten, den Ausgangsdatenraten, den Speicherbetriebsmitteln, den Datenbusgeschwindigkeiten und anderen Entwurfs- und Leistungseinschränkungen, wie für eine gegebene Implementierung gewünscht ist.
-
Einige Ausführungsformen können unter Verwendung des Ausdrucks "eine Ausführungsform" oder "eine Ausführungsform" zusammen mit ihren Ableitungen beschrieben werden. Diese Begriffe bedeuten, dass ein spezielles Merkmal, eine spezielle Struktur oder eine spezielle Eigenschaft, die im Zusammenhang mit der Ausführungsform beschrieben wird, in wenigstens einer Ausführungsform enthalten ist. Die Auftreten der Redewendung "in einer Ausführungsform" an verschiedenen Stellen in der Beschreibung beziehen sich nicht notwendigerweise alle auf dieselbe Ausführungsform. Ferner können einige Ausführungsformen unter Verwendung des Ausdrucks "gekoppelt" und "verbunden" zusammen mit ihren Ableitungen beschrieben werden. Diese Begriffe sind nicht notwendigerweise als Synonyme füreinander vorgesehen. Einige Ausführungsformen können z. B. unter Verwendung der Begriffe "verbunden" und/oder "gekoppelt" beschrieben werden, um anzugeben, dass sich zwei oder mehr Elemente in direktem physikalischen oder elektrischen Kontakt miteinander befinden. Der Begriff "gekoppelt" kann jedoch außerdem bedeuten, dass sich zwei oder mehr Elemente nicht in direktem Kontakt miteinander befinden, aber dennoch immer noch zusammenarbeiten oder miteinander in Wechselwirkung treten. Außerdem können die Aspekte oder Elemente aus verschiedenen Ausführungsformen kombiniert werden.
-
Es wird hervorgehoben, dass die Zusammenfassung der Offenbarung bereitgestellt ist, um es einem Leser zu ermöglichen, die Art der technischen Offenbarung schnell zu ermitteln. Sie ist mit dem Verständnis vorgelegt, dass sie nicht verwendet wird, um den Schutzumfang oder die Bedeutung der Ansprüche zu interpretieren oder einzuschränken. Außerdem kann in der vorhergehenden ausführlichen Beschreibung gesehen werden, dass verschiedene Merkmale für den Zweck der Optimierung der Offenbarung in einer einzigen Ausführungsform zusammen gruppiert sind. Dieses Verfahren der Offenbarung ist nicht als eine Absicht widerspiegelnd zu interpretieren, dass die beanspruchten Ausführungsformen mehr Merkmale erfordern, als ausdrücklich in jedem Anspruch dargelegt sind. Stattdessen liegt der erfindungsgemäße Gegenstand, wie es die folgenden Ansprüche widerspiegeln, in weniger als allen Merkmalen einer einzigen offenbarten Ausführungsform. Folglich sind die folgenden Ansprüche hierdurch in die ausführliche Beschreibung aufgenommen, wobei jeder Anspruch für sich allein als eine separate Ausführungsform steht. In den beigefügten Ansprüchen werden die Begriffe "enthaltend" und "bei denen" als die Äquivalente im einfachen Englisch der jeweiligen Begriffe "umfassend" bzw. "worin" verwendet. Außerdem werden die Begriffe "erster", "zweiter", "dritter" usw. lediglich als Bezeichnungen verwendet, wobei sie nicht vorgesehen sind, ihren Objekten numerische Anforderungen aufzuerlegen.
-
Das, was oben beschrieben worden ist, enthält Beispiele der offenbarten Architektur. Es ist selbstverständlich nicht möglich, jede denkbare Kombination der Komponenten und/oder Methodologien zu beschreiben, wobei aber ein Durchschnittsfachmann auf dem Gebiet erkennen kann, dass viele weitere Kombinationen und Permutationen möglich sind. Entsprechend ist vorgesehen, dass die neuartige Architektur alle derartigen Änderungen, Modifikationen und Variationen, die in den Erfindungsgedanken und Schutzumfang der beigefügten Ansprüche fallen, umschließt. Die ausführliche Offenbarung wendet sich nun dem Bereitstellen von Beispielen zu, die weitere Ausführungsformen betreffen. Die im Folgenden bereitgestellten Beispiele sind nicht als einschränkend vorgesehen.
-
In einigen Beispielen kann eine Vorrichtung, um die Kerne der Prozessorkomponenten zuzuweisen, um Task-Anteile auszuführen, eine Prozessorkomponente; eine Schnittstelle, um die Prozessorkomponente an ein Netz zu koppeln, um Daten zu empfangen, die die verfügbaren Kerne der Basis- und Untersystem-Prozessorkomponenten der Verarbeitungsvorrichtungen eines verteilten Verarbeitungssystems angeben, wobei die Untersystem-Prozessorkomponenten durch die Basisprozessorkomponenten in dem Netz zugänglich gemacht werden; und eine Kernauswahlkomponente für die Ausführung durch die Prozessorkomponente, um die Kerne unter den verfügbaren Kernen, um die Instanzen der Routinen der Task-Anteile eines Tasks auszuführen, basierend auf einem ausgewählten Ausgleich zwischen der Rechenzeit und der Leistungsaufnahme, die benötigt werden, um die Instanzen der Routinen der Task-Anteile auszuführen, auszuwählen, enthalten.
-
Zusätzlich oder alternativ kann die Vorrichtung eine Betriebsmittelkomponente für die Ausführung durch die Prozessorkomponente enthalten, um die Betriebsmitteldaten zu empfangen, die eine Anzahl der Kerne, die in wenigstens einer Basisprozessorkomponente vorhanden ist, und eine Anzahl der Kerne, die in wenigstens einer Untersystem-Prozessorkomponente einer Verarbeitungsvorrichtung des verteilten Verarbeitungssystems vorhanden ist, angeben.
-
Zusätzlich oder alternativ können die Betriebsmitteldaten eine Angabe einer Menge des Speichers, die der wenigstens einen Basisprozessorkomponente zugeordnet ist, und einer Menge des Speichers, die der wenigstens einen Untersystem-Prozessorkomponente zugeordnet ist, enthalten.
-
Zusätzlich oder alternativ kann die Vorrichtung eine Statuskomponente für die Ausführung durch die Prozessorkomponente enthalten, um Statusdaten zu empfangen, die eine Teilmenge der Anzahl der Kerne, die in der wenigstens einen Basisprozessorkomponente vorhanden sind, angeben, die für die Zuweisung eines Task-Anteils verfügbar sind, und die eine Teilmenge der Anzahl der Kerne, die in der wenigstens einen Untersystem-Prozessorkomponente vorhanden sind, angeben, die für die Zuweisung eines Task-Anteils verfügbar sind.
-
Zusätzlich oder alternativ kann die Vorrichtung eine Statuskomponente für die Ausführung durch die Prozessorkomponente enthalten, um erste Statusdaten zu empfangen, die einen aktuellen Status der Ausführung einer Instanz einer Routine eines Task-Anteils des Tasks durch einen der ausgewählten Kerne angeben.
-
Zusätzlich oder alternativ kann die Statuskomponente eine Abfrage von einer Einreichungsvorrichtung nach einem aktuellen Status der Ausführung des Tasks empfangen, wobei sie zweite Statusdaten, die den aktuellen Status der Ausführung des Tasks basierend auf dem aktuellen Status der Ausführung der Instanzen der Routinen der Task-Anteile durch die ausgewählten Kerne angeben, senden kann.
-
Zusätzlich oder alternativ kann die Kernauswahlkomponente die relativen Zeiträume bestimmen, die erforderlich sind, um jeden Task-Anteil des Tasks auszuführen, wobei sie einen Kerntyp unter den Kerntypen, die in den verfügbaren Kernen enthalten sind, um jeden Task-Anteil auszuführen, basierend auf den relativen Zeiträumen auswählen kann.
-
Zusätzlich oder alternativ kann die Kernauswahlkomponente die ausgewählten Kerne unter den verfügbaren Kernen, um sie zuzuweisen, um die Instanzen eines Task-Anteils, der einen relativ langen Zeitraum für die Ausführung erfordert, auszuführen, in Reaktion auf den ausgewählten Kompromiss, der das Bevorzugen der Verringerung der verbrauchten elektrischen Leistung gegenüber der Verringerung des erforderlichen Zeitraums umfasst, auswählen.
-
Zusätzlich oder alternativ kann die Kernauswahlkomponente die ausgewählten Kerne unter den verfügbaren Kernen, um einen Grad der Lokalität zwischen den ausgewählten Kernen zu vergrößern, um die Interprozesskommunikationen zwischen einigen der Verarbeitungsvorrichtungen zu minimieren, in Reaktion auf den ausgewählten Kompromiss, der das Bevorzugen der Verringerung des erforderlichen Zeitraums gegenüber dem Verringern der verbrauchten elektrischen Leistung umfasst, auswählen.
-
Zusätzlich oder alternativ kann die Kernauswahlkomponente Angaben der Auswahl der ausgewählten Kerne über die Schnittstelle an die ausgewählten Kerne senden.
-
In einigen Beispielen kann eine Vorrichtung zum Ausführen der Routinen der Task-Anteile eine Basisprozessorkomponente; eine Schnittstelle, um die Basisprozessorkomponente an ein Netz zu koppeln; eine Untersystem-Prozessorkomponente; einen Bus, um die Untersystem-Prozessorkomponente kommunikationstechnisch an die Basisprozessorkomponente zu koppeln; und eine Weiterleitungskomponente für die Ausführung durch die Basisprozessorkomponente, um ein Paket vom Netz zu empfangen, um die Internetprotokolladresse (IP-Adresse), an die das Paket gerichtet ist, zu bestimmen und um das Paket basierend auf der IP-Adresse über den Bus an die Untersystem-Prozessorkomponente weiterzuleiten, enthalten.
-
Zusätzlich oder alternativ kann die Vorrichtung eine erste Betriebsmittelkomponente für die Ausführung durch die Basisprozessorkomponente, um erste Betriebsmitteldaten, die eine Anzahl der Kerne, die in dem Basisprozessor vorhanden ist, in einem ersten Paket an das Netz zu senden, wobei das erste Paket eine erste IP-Adresse, die dem Basisprozessor zugeordnet ist, als seine Quelle angibt; und eine zweite Betriebsmittelkomponente für die Ausführung durch die Untersystem-Prozessorkomponente, um zweite Betriebsmitteldaten, die eine Menge der Kerne, die in dem Untersystem-Prozessor vorhanden ist, angibt, in einem zweiten Paket über den Bus an die Weiterleitungskomponente zu senden, wobei die Weiterleitungskomponente das zweite Paket an das Netz sendet, wobei das zweite Paket eine zweite IP-Adresse, die dem Untersystem-Prozessor zugeordnet ist, als seine Quelle angibt, enthalten.
-
Zusätzlich oder alternativ kann die Vorrichtung eine erste Kommunikationskomponente für die Ausführung durch die Basisprozessorkomponente, um die Basisprozessorkomponente in dem Netz bei einer ersten IP-Adresse zu präsentieren, um es der Basisprozessorkomponente zu ermöglichen, an die erste IP-Adresse gerichtete Pakete zu empfangen, und um das Paket basierend auf der IP-Adresse, an die das Paket gerichtet ist, an der Basisprozessorkomponente, die die erste IP-Adresse umfasst, anzunehmen; und eine zweite Kommunikationskomponente für die Ausführung durch die Untersystem-Prozessorkomponente, um das Paket basierend auf der IP-Adresse, an die das Paket gerichtet ist, an der Untersystem-Prozessorkomponente, die eine zweite IP-Adresse umfasst, anzunehmen, wobei die Weiterleitungskomponente die Untersystem-Prozessorkomponente bei der zweiten IP-Adresse in dem Netz präsentiert, um es zu ermöglichen, dass die Untersystem-Prozessorkomponente die an die zweite IP-Adresse gerichteten Pakete empfängt.
-
Zusätzlich oder alternativ kann die Vorrichtung eine erste Ausführungskomponente für die Ausführung durch die Basisprozessorkomponente, um eine erste Routine eines Task-Anteils, die in wenigstens einem Paket, das an die erste IP-Adresse gerichtet ist, von dem Netz empfangen wird, auszuführen; und eine zweite Ausführungskomponente für die Ausführung durch die Untersystem-Prozessorkomponente, um eine zweite Routine eines Task-Anteils, die in wenigstens einem Paket, das an die zweite IP-Adresse gerichtet ist, von dem Netz empfangen wird, auszuführen, enthalten.
-
Zusätzlich oder alternativ kann die erste Ausführungskomponente erste Statusdaten, die den Status der Ausführung des ersten Task-Anteils angeben, in einem Paket, das die erste IP-Adresse als eine Quelle angibt, über das Netz an einen Planungs-Server senden.
-
Zusätzlich oder alternativ kann die zweite Ausführungskomponente zweite Statusdaten, die den Status der Ausführung des zweiten Task-Anteils angeben, an die Weiterleitungskomponente senden, wobei die Weiterleitungskomponente die zweiten Statusdaten, die den Status der Ausführung des zweiten Task-Anteils angeben, in einem Paket, das die zweite IP-Adresse als eine Quelle angibt, über das Netz an den Planungs-Server sendet.
-
In einigen Beispielen kann ein computerimplementiertes Verfahren zum Zuweisen der Kerne von Prozessorkomponenten, um Task-Anteile auszuführen, das Empfangen von Statusdaten, die die verfügbaren Kerne der Basis- und Untersystem-Prozessorkomponenten der Verarbeitungsvorrichtungen eines verteilten Verarbeitungssystem angeben, wobei die Untersystem-Prozessorkomponenten durch die Basisprozessorkomponenten in dem Netz zugänglich gemacht werden; das Auswählen der Kerne unter den verfügbaren Kernen, um die Instanzen der Routinen der Task-Anteile eines Tasks auszuführen, basierend auf einem ausgewählten Kompromiss zwischen dem Verringern des erforderlichen Zeitraums und dem Verringern der verbrauchten elektrischen Leistung, um die Instanzen der Routinen der Task-Anteile auszuführen; und das Senden der Angaben der Auswahl der ausgewählten Kerne über die Schnittstelle an die ausgewählten Kerne enthalten.
-
Zusätzlich oder alternativ kann das Verfahren das Empfangen von Betriebsmitteldaten enthalten, die die Betriebsmittel angeben, die jeder Basisprozessorkomponente und jeder Untersystem-Prozessorkomponente jeder Verarbeitungsvorrichtung des verteilten Verarbeitungssystems zugeordnet sind.
-
Zusätzlich oder alternativ können die Betriebsmittel, die jeder Basisprozessorkomponente und jeder Untersystem-Prozessorkomponente zugeordnet sind, entweder eine Anzahl von Kernen, die in wenigstens einer Basisprozessorkomponente oder in wenigstens einer Untersystem-Prozessorkomponente vorhanden sind, eine Größe eines Caches eines Kerns einer Basisprozessorkomponente oder einer Untersystem-Prozessorkomponente oder eine Menge des Speichers, die einer Basisprozessorkomponente oder einer Untersystem-Prozessorkomponente zugeordnet ist, enthalten.
-
Zusätzlich oder alternativ kann das Verfahren das Empfangen von Statusdaten enthalten, die eine Teilmenge der Anzahl der Kerne, die in der wenigstens einen Basisprozessorkomponente oder der wenigstens einen Untersystem-Prozessorkomponente vorhanden sind, die für die Zuweisung eines Task-Anteils verfügbar sind, angeben.
-
Zusätzlich oder alternativ kann das Verfahren das Empfangen erster Statusdaten, die einen aktuellen Status der Ausführung einer Instanz einer Routine eines Task-Anteils des Tasks durch einen der ausgewählten Kerne angeben, das Empfangen einer Abfrage von einer Einreichungsvorrichtung für einen aktuellen Status der Ausführung des Tasks und das Senden über die Schnittstelle zweiter Statusdaten, die den aktuellen Status der Ausführung des Tasks basierend auf einem aktuellen Status der Ausführung der Instanzen der Routinen der Task-Anteile durch die ausgewählten Kerne angeben, enthalten.
-
Zusätzlich oder alternativ kann das Verfahren das Bestimmen der relativen Zeiträume, die erforderlich sind, um jeden Task-Anteil des Tasks auszuführen, und das Auswählen eines Kerntyps unter den Kerntypen, die in den verfügbaren Kernen enthalten sind, um jeden Task-Anteil auszuführen, basierend auf den relativen Zeiträumen enthalten.
-
Zusätzlich oder alternativ kann das Verfahren das Auswählen der ausgewählten Kerne unter den verfügbaren Kernen, um sie zuzuweisen, um die Instanzen eines Task-Anteils, der einen relativ langen Zeitraum für die Ausführung erfordert, auszuführen, in Reaktion auf den ausgewählten Kompromiss, der das Bevorzugen des Verringerns der verbrauchten elektrischen Leistung gegenüber dem Verringern des erforderlichen Zeitraums umfasst, enthalten.
-
Zusätzlich oder alternativ kann das Verfahren das Auswählen der ausgewählten Kerne unter den verfügbaren Kernen, um einen Grad der Lokalität zwischen den ausgewählten Kernen zu vergrößern, um die Interprozesskommunikationen zwischen einigen der Verarbeitungsvorrichtungen zu verringern, in Reaktion auf den ausgewählten Kompromiss, der das Bevorzugen des Verringerns des erforderlichen Zeitraums gegenüber dem Verringern der verbrauchten elektrischen Leistung umfasst, enthalten.
-
In einigen Beispielen kann wenigstens ein maschinenlesbares Speichermedium Anweisungen enthalten, die, wenn sie durch eine Computer-Vorrichtung ausgeführt werden, die Computer-Vorrichtung veranlassen, Statusdaten, die die verfügbaren Kerne der Basis- und Untersystem-Prozessorkomponenten der Verarbeitungsvorrichtungen eines verteilten Verarbeitungssystems angeben, wobei die Untersystem-Prozessorkomponenten durch die Basisprozessorkomponenten in dem Netz zugänglich gemacht werden, zu empfangen; die Kerne unter den verfügbaren Kernen, um die Instanzen der Routinen der Task-Anteile eines Tasks auszuführen, basierend auf einem ausgewählten Kompromiss zwischen dem Verringern des erforderlichen Zeitraums und dem Verringern der verbrauchten elektrischen Leistung, um die Instanzen der Routinen der Task-Anteile auszuführen, auszuwählen; und Angaben der Auswahl der ausgewählten Kerne über die Schnittstelle an die ausgewählten Kerne zu senden.
-
Zusätzlich oder alternativ kann die Computer-Vorrichtung veranlasst werden, Betriebsmitteldaten zu empfangen, die die Betriebsmittel angeben, die jeder Basisprozessorkomponente und jeder Untersystem-Prozessorkomponente jeder Verarbeitungsvorrichtung des verteilten Verarbeitungssystems zugeordnet sind.
-
Zusätzlich oder alternativ können die Betriebsmittel, die jeder Basisprozessorkomponente und jeder Untersystem-Prozessorkomponente zugeordnet sind, entweder eine Anzahl von Kernen, die in wenigstens einer Basisprozessorkomponente oder in wenigstens einer Untersystem-Prozessorkomponente vorhanden sind, eine Größe eines Caches eines Kerns einer Basisprozessorkomponente oder einer Untersystem-Prozessorkomponente oder eine Menge des Speichers, die einer Basisprozessorkomponente oder einer Untersystem-Prozessorkomponente zugeordnet ist, enthalten.
-
Zusätzlich oder alternativ kann die Computer-Vorrichtung veranlasst werden, Statusdaten zu empfangen, die eine Teilmenge der Anzahl der Kerne, die in der wenigstens einen Basisprozessorkomponente oder in der wenigstens einen Untersystem-Prozessorkomponente vorhanden sind, die für die Zuweisung eines Task-Anteils verfügbar ist, angeben.
-
Zusätzlich oder alternativ kann die Computer-Vorrichtung veranlasst werden, erste Statusdaten, die einen aktuellen Status der Ausführung einer Instanz einer Routine eines Task-Anteils des Tasks durch einen der ausgewählten Kerne angeben, zu empfangen, eine Abfrage von einer Einreichungsvorrichtung für einen aktuellen Status der Ausführung des Tasks zu empfangen und zweite Statusdaten, die den aktuellen Status der Ausführung des Tasks basierend auf einem aktuellen Status der Ausführung der Instanzen der Routinen der Task-Anteile durch die ausgewählten Kerne angeben, über die Schnittstelle zu senden.
-
Zusätzlich oder alternativ kann die Computer-Vorrichtung veranlasst werden, die relativen Zeiträume, die erforderlich sind, um jeden Task-Anteil des Tasks auszuführen, zu bestimmen und einen Kerntyp unter den Kerntypen, die in den verfügbaren Kernen enthalten sind, um jeden Task-Anteil auszuführen, basierend auf den relativen Zeiträumen auszuwählen.
-
Zusätzlich oder alternativ kann die Computer-Vorrichtung veranlasst werden, die ausgewählten Kerne unter den verfügbaren Kernen, um sie zuzuweisen, um die Instanzen eines Task-Anteils, der einen relativ langen Zeitraum für die Ausführung erfordert, auszuführen, in Reaktion auf den ausgewählten Kompromiss, der das Verringern der verbrauchten elektrischen Leistung gegenüber dem Verringern des erforderlichen Zeitraums bevorzugt, auszuwählen.
-
Zusätzlich oder alternativ kann die Computer-Vorrichtung veranlasst werden, die ausgewählten Kerne unter den verfügbaren Kernen, um einen Grad der Lokalität zwischen den ausgewählten Kernen zu vergrößern, um die Interprozesskommunikationen zwischen einigen der Verarbeitungsvorrichtungen zu minimieren, in Reaktion auf den ausgewählten Kompromiss, der das Verringern des erforderlichen Zeitraums gegenüber dem Verringern der verbrauchten elektrischen Leistung bevorzugt, auszuwählen.
-
In einigen Beispielen kann wenigstens ein maschinenlesbares Speichermedium Anweisungen enthalten, die, wenn sie durch eine Computer-Vorrichtung ausgeführt werden, die Computer-Vorrichtung veranlassen, irgendetwas des Obigen auszuführen.
-
In einigen Beispielen kann eine Vorrichtung, um die Kerne von Prozessorkomponenten zuzuweisen, um Task-Anteile auszuführen, Mittel zum Ausführen irgendetwas des Obigen enthalten.