DE112013007263T5 - Techniken zur Zuweisung von Task-Anteilen bei verteilter Verarbeitung - Google Patents

Techniken zur Zuweisung von Task-Anteilen bei verteilter Verarbeitung Download PDF

Info

Publication number
DE112013007263T5
DE112013007263T5 DE112013007263.7T DE112013007263T DE112013007263T5 DE 112013007263 T5 DE112013007263 T5 DE 112013007263T5 DE 112013007263 T DE112013007263 T DE 112013007263T DE 112013007263 T5 DE112013007263 T5 DE 112013007263T5
Authority
DE
Germany
Prior art keywords
task
component
cores
processor component
execution
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Withdrawn
Application number
DE112013007263.7T
Other languages
English (en)
Inventor
Liang You
Nan Qiao
Jun Jin
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of DE112013007263T5 publication Critical patent/DE112013007263T5/de
Withdrawn legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5094Allocation of resources, e.g. of the central processing unit [CPU] where the allocation takes into account power or heat criteria
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5017Task decomposition
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5066Algorithms for mapping a plurality of inter-dependent sub-tasks onto a plurality of physical CPUs
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Abstract

Verschiedene 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. Eine Vorrichtung, um die Kerne einer Prozessorkomponente zuzuweisen, um Task-Anteile auszuführen, enthält 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 Verarbeitungssystem 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 Ausgleichspunkt zwischen der Rechenzeit und der Leistungsaufnahme, die benötigt werden, um die Instanzen der Routinen der Task-Anteile auszuführen, auszuwählen. Es werden weitere Ausführungsformen beschrieben und beansprucht.

Description

  • 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.
  • 36 veranschaulichen jede einen Anteil einer Ausführungsform eines verteilten Verarbeitungssystems.
  • 79 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.

Claims (25)

  1. Vorrichtung, um die Kerne der Prozessorkomponenten zuzuweisen, um Task-Anteile auszuführen, wobei die Vorrichtung Folgendes umfasst: 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.
  2. Vorrichtung nach Anspruch 1, die eine Betriebsmittelkomponente für die Ausführung durch die Prozessorkomponente umfasst, 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.
  3. Vorrichtung nach Anspruch 2, wobei 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, umfassen.
  4. Vorrichtung nach Anspruch 2, die eine Statuskomponente für die Ausführung durch die Prozessorkomponente umfasst, 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.
  5. Vorrichtung nach Anspruch 1, die eine Statuskomponente für die Ausführung durch die Prozessorkomponente umfasst, 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.
  6. Vorrichtung nach Anspruch 5, wobei die Statuskomponente eine Abfrage von einer Einreichungsvorrichtung nach einem aktuellen Status der Ausführung des Tasks empfängt und 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, sendet.
  7. Vorrichtung nach Anspruch 1, wobei die Kernauswahlkomponente die relativen Zeiträume bestimmt, die erforderlich sind, um jeden Task-Anteil des Tasks auszuführen, 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 auswählt.
  8. Vorrichtung nach Anspruch 7, wobei 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 Ausgleich, der das Bevorzugen der Verringerung der verbrauchten elektrischen Leistung gegenüber der Verringerung des erforderlichen Zeitraums umfasst, auswählt.
  9. Vorrichtung nach Anspruch 1, wobei 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 Ausgleich, der das Bevorzugen der Verringerung des erforderlichen Zeitraums gegenüber dem Verringern der verbrauchten elektrischen Leistung umfasst, auswählt.
  10. Vorrichtung nach Anspruch 1, wobei die Kernauswahlkomponente Angaben der Auswahl der ausgewählten Kerne über die Schnittstelle an die ausgewählten Kerne sendet.
  11. Vorrichtung zum Ausführen der Routinen der Task-Anteile, die Folgendes umfasst: 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.
  12. Vorrichtung nach Anspruch 11, die Folgendes umfasst: 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.
  13. Vorrichtung nach Anspruch 11, die Folgendes umfasst: 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.
  14. Vorrichtung nach Anspruch 13, die Folgendes umfasst: 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.
  15. Vorrichtung nach Anspruch 14, wobei 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 sendet.
  16. Vorrichtung nach Anspruch 15, wobei die zweite Ausführungskomponente zweite Statusdaten, die den Status der Ausführung des zweiten Task-Anteils angeben, an die Weiterleitungskomponente sendet, 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.
  17. Computerimplementiertes Verfahren zum Zuweisen der Kerne von Prozessorkomponenten, um Task-Anteile auszuführen, das Folgendes umfasst: Empfangen von 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; 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 Senden der Angaben der Auswahl der ausgewählten Kerne über die Schnittstelle an die ausgewählten Kerne.
  18. Computerimplementiertes Verfahren nach Anspruch 17, das das Empfangen von Betriebsmitteldaten umfasst, die die Betriebsmittel angeben, die jeder Basisprozessorkomponente und jeder Untersystem-Prozessorkomponente jeder Verarbeitungsvorrichtung des verteilten Verarbeitungssystems zugeordnet sind.
  19. Computerimplementiertes Verfahren nach Anspruch 18, wobei 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, umfassen.
  20. Computerimplementiertes Verfahren nach Anspruch 19, das das Empfangen von Statusdaten umfasst, die eine Teilmenge der Anzahl der Kerne, die in der wenigstens einen Basisprozessorkomponente oder in der wenigstens einen Untersystem-Prozessorkomponente vorhanden ist, die für die Zuweisung eines Task-Anteils verfügbar sind, angeben.
  21. Computerimplementiertes Verfahren nach Anspruch 17, das Folgendes umfasst: 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; Empfangen einer Abfrage von einer Einreichungsvorrichtung für einen aktuellen Status der Ausführung des Tasks; und 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.
  22. Computerimplementiertes Verfahren nach Anspruch 17, das Folgendes umfasst: Bestimmen der relativen Zeiträume, die erforderlich sind, um jeden Task-Anteil des Tasks auszuführen; und 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.
  23. Computerimplementiertes Verfahren nach Anspruch 22, das 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, umfasst.
  24. Computerimplementiertes Verfahren nach Anspruch 17, das 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, umfasst.
  25. Wenigstens ein maschinenlesbares Speichermedium, das Anweisungen umfasst, die, wenn sie durch eine Computer-Vorrichtung ausgeführt werden, die Computer-Vorrichtung veranlassen, das Verfahren nach einem der Ansprüche 17–24 auszuführen.
DE112013007263.7T 2013-09-19 2013-09-19 Techniken zur Zuweisung von Task-Anteilen bei verteilter Verarbeitung Withdrawn DE112013007263T5 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2013/083847 WO2015039320A1 (en) 2013-09-19 2013-09-19 Techniques for distributed processing task portion assignment

Publications (1)

Publication Number Publication Date
DE112013007263T5 true DE112013007263T5 (de) 2016-04-07

Family

ID=52669231

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112013007263.7T Withdrawn DE112013007263T5 (de) 2013-09-19 2013-09-19 Techniken zur Zuweisung von Task-Anteilen bei verteilter Verarbeitung

Country Status (4)

Country Link
US (2) US9652297B2 (de)
CN (1) CN105453044B (de)
DE (1) DE112013007263T5 (de)
WO (1) WO2015039320A1 (de)

Families Citing this family (96)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2015109071A (ja) * 2013-10-25 2015-06-11 トヨタ自動車株式会社 制御装置
US9250953B2 (en) * 2013-11-12 2016-02-02 Oxide Interactive Llc Organizing tasks by a hierarchical task scheduler for execution in a multi-threaded processing system
CN103645954B (zh) * 2013-11-21 2018-12-14 华为技术有限公司 一种基于异构多核体系的cpu调度方法、装置和系统
US9128779B1 (en) 2014-07-31 2015-09-08 Splunk Inc. Distributed tasks for retrieving supplemental job information
CN105446653B (zh) 2014-08-27 2018-12-14 阿里巴巴集团控股有限公司 一种数据合并方法和设备
US9898348B2 (en) * 2014-10-22 2018-02-20 International Business Machines Corporation Resource mapping in multi-threaded central processor units
US9891964B2 (en) 2014-11-19 2018-02-13 International Business Machines Corporation Network traffic processing
US9400685B1 (en) * 2015-01-30 2016-07-26 Huawei Technologies Co., Ltd. Dividing, scheduling, and parallel processing compiled sub-tasks on an asynchronous multi-core processor
US10185547B2 (en) 2015-06-26 2019-01-22 Intel Corporation Techniques for distributed operation of secure controllers
US11169788B2 (en) * 2016-02-05 2021-11-09 Sas Institute Inc. Per task routine distributed resolver
US11513850B2 (en) 2016-02-05 2022-11-29 Sas Institute Inc. Coordinated performance controller failover in many task computing
US10650046B2 (en) 2016-02-05 2020-05-12 Sas Institute Inc. Many task computing with distributed file system
US10795935B2 (en) 2016-02-05 2020-10-06 Sas Institute Inc. Automated generation of job flow definitions
US10642896B2 (en) 2016-02-05 2020-05-05 Sas Institute Inc. Handling of data sets during execution of task routines of multiple languages
US9684543B1 (en) * 2016-02-05 2017-06-20 Sas Institute Inc. Distributed data set storage, retrieval and analysis
US11775341B2 (en) * 2016-02-05 2023-10-03 Sas Institute Inc. Automated job flow generation to provide object views in container-supported many task computing
US11455190B2 (en) 2016-02-05 2022-09-27 Sas Institute Inc. Implicit status in many task computing
US11474863B2 (en) 2018-06-22 2022-10-18 Sas Institute Inc. Federated area coherency across multiple devices in many-task computing
US10650045B2 (en) 2016-02-05 2020-05-12 Sas Institute Inc. Staged training of neural networks for improved time series prediction performance
US10884761B2 (en) 2016-03-22 2021-01-05 Lenovo Enterprise Solutions (Singapore) Pte. Ltd Best performance delivery in heterogeneous computing unit environment
US10203747B2 (en) 2016-03-22 2019-02-12 Lenovo Enterprise Solutions (Singapore) Pte. Ltd. Workload placement based on heterogeneous compute performance per watt
US10860499B2 (en) 2016-03-22 2020-12-08 Lenovo Enterprise Solutions (Singapore) Pte. Ltd Dynamic memory management in workload acceleration
US10372484B2 (en) * 2016-06-27 2019-08-06 Microsoft Technology Licensing, Llc Secured computing system
WO2018018575A1 (en) 2016-07-29 2018-02-01 Microsoft Technology Licensing, Llc Detection of computing resource leakage in cloud computing architectures
EP3370125A1 (de) * 2017-03-01 2018-09-05 PLETHORA IIoT, S.L. Vorrichtung und system mit mehreren vorrichtungen zur überwachung und steuerung von maschinen in einer industriellen anlage
US10359954B2 (en) 2017-05-31 2019-07-23 Alibaba Group Holding Limited Method and system for implementing byte-alterable write cache
US10884926B2 (en) 2017-06-16 2021-01-05 Alibaba Group Holding Limited Method and system for distributed storage using client-side global persistent cache
US10303241B2 (en) * 2017-06-19 2019-05-28 Alibaba Group Holding Limited System and method for fine-grained power control management in a high capacity computer cluster
US10678443B2 (en) 2017-07-06 2020-06-09 Alibaba Group Holding Limited Method and system for high-density converged storage via memory bus
US10564856B2 (en) 2017-07-06 2020-02-18 Alibaba Group Holding Limited Method and system for mitigating write amplification in a phase change memory-based storage device
US10423508B2 (en) 2017-08-11 2019-09-24 Alibaba Group Holding Limited Method and system for a high-priority read based on an in-place suspend/resume write
US10303601B2 (en) 2017-08-11 2019-05-28 Alibaba Group Holding Limited Method and system for rearranging a write operation in a shingled magnetic recording device
US10496829B2 (en) 2017-09-15 2019-12-03 Alibaba Group Holding Limited Method and system for data destruction in a phase change memory-based storage device
US10642522B2 (en) 2017-09-15 2020-05-05 Alibaba Group Holding Limited Method and system for in-line deduplication in a storage drive based on a non-collision hash
US10796350B2 (en) * 2017-09-25 2020-10-06 Oracle International Corporation Systems and methods for using facade API for phased upgrade of core API
US10503409B2 (en) 2017-09-27 2019-12-10 Alibaba Group Holding Limited Low-latency lightweight distributed storage system
US10789011B2 (en) 2017-09-27 2020-09-29 Alibaba Group Holding Limited Performance enhancement of a storage device using an integrated controller-buffer
US10860334B2 (en) 2017-10-25 2020-12-08 Alibaba Group Holding Limited System and method for centralized boot storage in an access switch shared by multiple servers
US10445190B2 (en) 2017-11-08 2019-10-15 Alibaba Group Holding Limited Method and system for enhancing backup efficiency by bypassing encoding and decoding
US10877898B2 (en) 2017-11-16 2020-12-29 Alibaba Group Holding Limited Method and system for enhancing flash translation layer mapping flexibility for performance and lifespan improvements
CN109976899A (zh) * 2017-12-28 2019-07-05 李耀庭 一种分布式运算系统
US10909738B2 (en) * 2018-01-05 2021-02-02 Nvidia Corporation Real-time hardware-assisted GPU tuning using machine learning
US10496548B2 (en) 2018-02-07 2019-12-03 Alibaba Group Holding Limited Method and system for user-space storage I/O stack with user-space flash translation layer
US10891239B2 (en) 2018-02-07 2021-01-12 Alibaba Group Holding Limited Method and system for operating NAND flash physical space to extend memory capacity
US10831404B2 (en) 2018-02-08 2020-11-10 Alibaba Group Holding Limited Method and system for facilitating high-capacity shared memory using DIMM from retired servers
US10402112B1 (en) 2018-02-14 2019-09-03 Alibaba Group Holding Limited Method and system for chunk-wide data organization and placement with real-time calculation
WO2019222958A1 (en) 2018-05-24 2019-11-28 Alibaba Group Holding Limited System and method for flash storage management using multiple open page stripes
US10921992B2 (en) 2018-06-25 2021-02-16 Alibaba Group Holding Limited Method and system for data placement in a hard disk drive based on access frequency for improved IOPS and utilization efficiency
US11816043B2 (en) 2018-06-25 2023-11-14 Alibaba Group Holding Limited System and method for managing resources of a storage device and quantifying the cost of I/O requests
US10871921B2 (en) 2018-07-30 2020-12-22 Alibaba Group Holding Limited Method and system for facilitating atomicity assurance on metadata and data bundled storage
US10996886B2 (en) 2018-08-02 2021-05-04 Alibaba Group Holding Limited Method and system for facilitating atomicity and latency assurance on variable sized I/O
US10747673B2 (en) 2018-08-02 2020-08-18 Alibaba Group Holding Limited System and method for facilitating cluster-level cache and memory space
US11327929B2 (en) 2018-09-17 2022-05-10 Alibaba Group Holding Limited Method and system for reduced data movement compression using in-storage computing and a customized file system
US10852948B2 (en) 2018-10-19 2020-12-01 Alibaba Group Holding System and method for data organization in shingled magnetic recording drive
TWI673610B (zh) * 2018-11-09 2019-10-01 財團法人資訊工業策進會 遠端工作系統及其工作方法
US11327808B2 (en) * 2018-11-13 2022-05-10 Western Digital Technologies, Inc. Decentralized data processing architecture
US10795586B2 (en) 2018-11-19 2020-10-06 Alibaba Group Holding Limited System and method for optimization of global data placement to mitigate wear-out of write cache and NAND flash
US10769018B2 (en) 2018-12-04 2020-09-08 Alibaba Group Holding Limited System and method for handling uncorrectable data errors in high-capacity storage
US10884654B2 (en) 2018-12-31 2021-01-05 Alibaba Group Holding Limited System and method for quality of service assurance of multi-stream scenarios in a hard disk drive
US10977122B2 (en) 2018-12-31 2021-04-13 Alibaba Group Holding Limited System and method for facilitating differentiated error correction in high-density flash devices
US11061735B2 (en) 2019-01-02 2021-07-13 Alibaba Group Holding Limited System and method for offloading computation to storage nodes in distributed system
US11132291B2 (en) 2019-01-04 2021-09-28 Alibaba Group Holding Limited System and method of FPGA-executed flash translation layer in multiple solid state drives
US11200337B2 (en) 2019-02-11 2021-12-14 Alibaba Group Holding Limited System and method for user data isolation
US10922234B2 (en) 2019-04-11 2021-02-16 Alibaba Group Holding Limited Method and system for online recovery of logical-to-physical mapping table affected by noise sources in a solid state drive
US10908960B2 (en) 2019-04-16 2021-02-02 Alibaba Group Holding Limited Resource allocation based on comprehensive I/O monitoring in a distributed storage system
US11169873B2 (en) 2019-05-21 2021-11-09 Alibaba Group Holding Limited Method and system for extending lifespan and enhancing throughput in a high-density solid state drive
US10860223B1 (en) 2019-07-18 2020-12-08 Alibaba Group Holding Limited Method and system for enhancing a distributed storage system by decoupling computation and network tasks
US11126561B2 (en) 2019-10-01 2021-09-21 Alibaba Group Holding Limited Method and system for organizing NAND blocks and placing data to facilitate high-throughput for random writes in a solid state drive
US11042307B1 (en) 2020-01-13 2021-06-22 Alibaba Group Holding Limited System and method for facilitating improved utilization of NAND flash based on page-wise operation
US11449455B2 (en) 2020-01-15 2022-09-20 Alibaba Group Holding Limited Method and system for facilitating a high-capacity object storage system with configuration agility and mixed deployment flexibility
KR20210101071A (ko) 2020-02-07 2021-08-18 삼성전자주식회사 이종의 다중-프로세서에 기반하여 스케줄링을 수행하기 위한 전자 장치 및 그의 동작 방법
US10872622B1 (en) 2020-02-19 2020-12-22 Alibaba Group Holding Limited Method and system for deploying mixed storage products on a uniform storage infrastructure
US10923156B1 (en) 2020-02-19 2021-02-16 Alibaba Group Holding Limited Method and system for facilitating low-cost high-throughput storage for accessing large-size I/O blocks in a hard disk drive
US11150986B2 (en) 2020-02-26 2021-10-19 Alibaba Group Holding Limited Efficient compaction on log-structured distributed file system using erasure coding for resource consumption reduction
US11144250B2 (en) 2020-03-13 2021-10-12 Alibaba Group Holding Limited Method and system for facilitating a persistent memory-centric system
CN111401745B (zh) * 2020-03-16 2024-02-09 合肥科大智能机器人技术有限公司 一种基于5g的巡检机器人集群任务分配方法及系统
US11200114B2 (en) 2020-03-17 2021-12-14 Alibaba Group Holding Limited System and method for facilitating elastic error correction code in memory
US11385833B2 (en) 2020-04-20 2022-07-12 Alibaba Group Holding Limited Method and system for facilitating a light-weight garbage collection with a reduced utilization of resources
US11281575B2 (en) 2020-05-11 2022-03-22 Alibaba Group Holding Limited Method and system for facilitating data placement and control of physical addresses with multi-queue I/O blocks
US11494115B2 (en) 2020-05-13 2022-11-08 Alibaba Group Holding Limited System method for facilitating memory media as file storage device based on real-time hashing by performing integrity check with a cyclical redundancy check (CRC)
US11461262B2 (en) 2020-05-13 2022-10-04 Alibaba Group Holding Limited Method and system for facilitating a converged computation and storage node in a distributed storage system
US11218165B2 (en) 2020-05-15 2022-01-04 Alibaba Group Holding Limited Memory-mapped two-dimensional error correction code for multi-bit error tolerance in DRAM
US11556277B2 (en) 2020-05-19 2023-01-17 Alibaba Group Holding Limited System and method for facilitating improved performance in ordering key-value storage with input/output stack simplification
US11507499B2 (en) 2020-05-19 2022-11-22 Alibaba Group Holding Limited System and method for facilitating mitigation of read/write amplification in data compression
US11263132B2 (en) 2020-06-11 2022-03-01 Alibaba Group Holding Limited Method and system for facilitating log-structure data organization
US11422931B2 (en) 2020-06-17 2022-08-23 Alibaba Group Holding Limited Method and system for facilitating a physically isolated storage unit for multi-tenancy virtualization
US11354200B2 (en) 2020-06-17 2022-06-07 Alibaba Group Holding Limited Method and system for facilitating data recovery and version rollback in a storage device
US11354233B2 (en) 2020-07-27 2022-06-07 Alibaba Group Holding Limited Method and system for facilitating fast crash recovery in a storage device
US11372774B2 (en) 2020-08-24 2022-06-28 Alibaba Group Holding Limited Method and system for a solid state drive with on-chip memory integration
KR20220046221A (ko) * 2020-10-07 2022-04-14 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작 방법
US11487465B2 (en) 2020-12-11 2022-11-01 Alibaba Group Holding Limited Method and system for a local storage engine collaborating with a solid state drive controller
US11734115B2 (en) 2020-12-28 2023-08-22 Alibaba Group Holding Limited Method and system for facilitating write latency reduction in a queue depth of one scenario
US11416365B2 (en) 2020-12-30 2022-08-16 Alibaba Group Holding Limited Method and system for open NAND block detection and correction in an open-channel SSD
US11726699B2 (en) 2021-03-30 2023-08-15 Alibaba Singapore Holding Private Limited Method and system for facilitating multi-stream sequential read performance improvement with reduced read amplification
US11461173B1 (en) 2021-04-21 2022-10-04 Alibaba Singapore Holding Private Limited Method and system for facilitating efficient data compression based on error correction code and reorganization of data placement
US11476874B1 (en) 2021-05-14 2022-10-18 Alibaba Singapore Holding Private Limited Method and system for facilitating a storage server with hybrid memory for journaling and data storage

Family Cites Families (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6779118B1 (en) * 1998-05-04 2004-08-17 Auriq Systems, Inc. User specific automatic data redirection system
US7100020B1 (en) * 1998-05-08 2006-08-29 Freescale Semiconductor, Inc. Digital communications processor
US6370583B1 (en) * 1998-08-17 2002-04-09 Compaq Information Technologies Group, L.P. Method and apparatus for portraying a cluster of computer systems as having a single internet protocol image
JP2001168915A (ja) * 1999-12-10 2001-06-22 Nec Corp Ipパケット転送装置
JP2001251349A (ja) * 2000-03-06 2001-09-14 Fujitsu Ltd パケットプロセッサ
US7360245B1 (en) * 2001-07-18 2008-04-15 Novell, Inc. Method and system for filtering spoofed packets in a network
US6804632B2 (en) * 2001-12-06 2004-10-12 Intel Corporation Distribution of processing activity across processing hardware based on power consumption considerations
US8645954B2 (en) * 2001-12-13 2014-02-04 Intel Corporation Computing system capable of reducing power consumption by distributing execution of instruction across multiple processors and method therefore
US7395354B2 (en) * 2002-02-21 2008-07-01 Corente, Inc. Methods and systems for resolving addressing conflicts based on tunnel information
US8032891B2 (en) * 2002-05-20 2011-10-04 Texas Instruments Incorporated Energy-aware scheduling of application execution
US7093147B2 (en) * 2003-04-25 2006-08-15 Hewlett-Packard Development Company, L.P. Dynamically selecting processor cores for overall power efficiency
KR100601874B1 (ko) * 2004-01-27 2006-07-19 삼성전자주식회사 네트워크 프린팅 기기의 mac 컨트롤러 및 네트워크프린팅 기기의 버스 대역폭 확장방법
US8230426B2 (en) * 2004-10-06 2012-07-24 Digipede Technologies, Llc Multicore distributed processing system using selection of available workunits based on the comparison of concurrency attributes with the parallel processing characteristics
US7788670B2 (en) * 2004-10-26 2010-08-31 Intel Corporation Performance-based workload scheduling in multi-core architectures
US7848332B2 (en) * 2004-11-15 2010-12-07 Cisco Technology, Inc. Method and apparatus for classifying a network protocol and aligning a network protocol header relative to cache line boundary
JP4318664B2 (ja) 2005-05-12 2009-08-26 株式会社ソニー・コンピュータエンタテインメント 情報処理装置およびタスク実行方法
US7490254B2 (en) * 2005-08-02 2009-02-10 Advanced Micro Devices, Inc. Increasing workload performance of one or more cores on multiple core processors
JP3938387B2 (ja) * 2005-08-10 2007-06-27 インターナショナル・ビジネス・マシーンズ・コーポレーション コンパイラ、制御方法、およびコンパイラ・プログラム
US7412353B2 (en) * 2005-09-28 2008-08-12 Intel Corporation Reliable computing with a many-core processor
US7774590B2 (en) * 2006-03-23 2010-08-10 Intel Corporation Resiliently retaining state information of a many-core processor
US8046775B2 (en) * 2006-08-14 2011-10-25 Marvell World Trade Ltd. Event-based bandwidth allocation mode switching method and apparatus
US7616635B2 (en) * 2006-09-29 2009-11-10 Intel Corporation Address mapping for data packet routing
US8490103B1 (en) * 2007-04-30 2013-07-16 Hewlett-Packard Development Company, L.P. Allocating computer processes to processor cores as a function of process utilizations
CN101303657B (zh) * 2008-06-13 2011-08-10 上海大学 一种多处理器实时任务执行功耗优化方法
US8219994B2 (en) * 2008-10-23 2012-07-10 Globalfoundries Inc. Work balancing scheduler for processor cores and methods thereof
CN101403982B (zh) * 2008-11-03 2011-07-20 华为技术有限公司 一种多核处理器的任务分配方法和系统
US9104411B2 (en) * 2009-12-16 2015-08-11 Qualcomm Incorporated System and method for controlling central processing unit power with guaranteed transient deadlines
US20120036398A1 (en) * 2010-04-22 2012-02-09 Freescale Semiconductor, Inc. Multiple core data processor with usage monitoring
US8516493B2 (en) * 2011-02-01 2013-08-20 Futurewei Technologies, Inc. System and method for massively multi-core computing systems
US8875146B2 (en) 2011-08-01 2014-10-28 Honeywell International Inc. Systems and methods for bounding processing times on multiple processing units
CN102710477B (zh) * 2012-05-15 2014-11-05 浙江大学 一种基于vpx总线结构的数据处理系统
EP2972908B1 (de) * 2013-03-15 2019-08-07 Intel Corporation Intraplattformvernetzung

Also Published As

Publication number Publication date
WO2015039320A1 (en) 2015-03-26
CN105453044B (zh) 2020-06-12
US20180004578A1 (en) 2018-01-04
CN105453044A (zh) 2016-03-30
US20150082317A1 (en) 2015-03-19
US9652297B2 (en) 2017-05-16

Similar Documents

Publication Publication Date Title
DE112013007263T5 (de) Techniken zur Zuweisung von Task-Anteilen bei verteilter Verarbeitung
DE102012219907B4 (de) Erhöhen der Speicherkapazität in Systemen mit eingeschränkter elektrischer Leistungsaufnahme
DE102016118210A1 (de) Granulare Dienstqualität für Computer-Ressourcen
DE102018214775A1 (de) Technologien zum Aufteilen der Arbeit über Beschleunigervorrichtungen hinweg
DE112017003688T5 (de) Technologien zur Durchführung einer Orchestrierung mit Online-Analyse von Telemetriedaten
DE102015117066A1 (de) Verfahren zum Betreiben einer Datenspeichervorrichtung, mobile Rechenvorrichtung mit derselben und Verfahren der mobilen Rechenvorrichtung
DE102010044529B4 (de) Autonomes speicher-sub-system mit hardwarebeschleuniger
DE112020006967T5 (de) Performanceüberwachung für kurzlebige funktionen
DE102013017509A1 (de) Effiziente Speichervirtualisierung in mehrsträngigen Verarbeitungseinheiten
DE112012000212T5 (de) Technik für live Analyse-basierte Rematerialisation zur Reduktion von Registerdruck und zur Verbesserung von Parallelität
DE112013006298T5 (de) Verfahren und Einrichtung für einen komprimierten und verdichteten virtuellen Speicher
DE102013017510A1 (de) Effiziente Speichervirtualisierung in mehrsträngigen Verarbeitungseinheiten
DE102017213160B4 (de) Kompilierung für knotenvorrichtungs-GPU-basierte Parallelverarbeitung
DE102013114072A1 (de) System und Verfahren zum Hardware-Scheduling von indexierten Barrieren
DE112011103193T5 (de) Bereitstellung einer Pro-Kern-Spannungs-und Frequenzsteuerung
DE102015119894A1 (de) Techniken für die zusammenarbeitende Ausführung zwischen asymmetrischen Prozessorkernen
DE102015115080A1 (de) Konfigurierbare digitale Schnittstelle für Schaltspannungsregler
DE102013224160A1 (de) System, Verfahren und Computer-Programm-Produkt zum Optimieren des Managements von Thread-Stapel-Speicher
DE102013020485A1 (de) Technik zur Ausführung von Speicherzugriffsoperationen über eine Textur-Hardware
DE102019102883A1 (de) Technologien zum Bewegen von Arbeitslasten zwischen Hardwarewarteschlangenmanagern
DE102013218440A1 (de) Verfahren zum Betreiben eines Flash-Speicherbauelements sowie Bildverarbeitungssystem
DE112012004629T5 (de) Dynamischer Speicheraffinitätsanpasser auf Prozess/Objektebene
DE102020101814A1 (de) Effiziente ausführung anhand von aufgabengraphen festgelegter arbeitslasten
DE102013020967B4 (de) Technik zur Ausführung von Speicherzugriffsoperationen über eine Textur-Hardware
DE102014100031A1 (de) Ein-Chip-System mit Speicherverwaltungseinheit und Speicheradressen-Übersetzungsverfahren hiervon

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R119 Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal fee