DE112010004735T5 - Auf einem Computer ausgeführtes Verfahren für das Verarbeiten der Ressourcen-Verwaltung - Google Patents

Auf einem Computer ausgeführtes Verfahren für das Verarbeiten der Ressourcen-Verwaltung Download PDF

Info

Publication number
DE112010004735T5
DE112010004735T5 DE112010004735T DE112010004735T DE112010004735T5 DE 112010004735 T5 DE112010004735 T5 DE 112010004735T5 DE 112010004735 T DE112010004735 T DE 112010004735T DE 112010004735 T DE112010004735 T DE 112010004735T DE 112010004735 T5 DE112010004735 T5 DE 112010004735T5
Authority
DE
Germany
Prior art keywords
processor
data
computer
instructing
implemented method
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.)
Granted
Application number
DE112010004735T
Other languages
English (en)
Other versions
DE112010004735B4 (de
Inventor
Hillery C. Hunter
Ronald P. Luijten
Phillip Stanley-Marbell
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.)
International Business Machines Corp
Original Assignee
International Business Machines 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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of DE112010004735T5 publication Critical patent/DE112010004735T5/de
Application granted granted Critical
Publication of DE112010004735B4 publication Critical patent/DE112010004735B4/de
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/485Task life-cycle, e.g. stopping, restarting, resuming execution
    • G06F9/4856Task life-cycle, e.g. stopping, restarting, resuming execution resumption being on a different machine, e.g. task migration, virtual machine migration
    • 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/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5033Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering data affinity
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/27Using a specific cache architecture
    • G06F2212/271Non-uniform cache access [NUCA] architecture

Abstract

Ein auf einem Computer ausgeführtes Verfahren zum Verwalten der Verarbeitung von Ressourcen eines computergestützten Systems, das mindestens einen ersten Prozessor und einen zweiten Prozessor aufweist, wobei jeder der Prozessoren funktionsmäßig mit einem Speicher verbunden ist, der einen von einem Prozessor zu verarbeitenden Datensatz speichert, wobei das Verfahren Folgendes umfasst: Überwachen von Daten auf die der erste Prozessor während des Ausführens zugreift; und, wenn der zweite Prozessor weniger weit von den überwachten Daten entfernt ist als der erste Prozessor, Anweisen, einen Ablauf in dem ersten Prozessor zu unterbrechen und den Ablauf in dem zweiten Prozessor wieder aufzunehmen.

Description

  • HINTERGRUND
  • Computer sind Maschinen, die Daten gemäß Anweisungen verarbeiten. Heutzutage sind sie meistens so konfiguriert, dass sie ihre Arbeit auf mehrere CPUs verteilen, wodurch Mehrfachverarbeitungsfunktionen bereitgestellt werden. Mehrprozessor- und Mehrkernsysteme sind heute für Personal und Laptop-Computer verfügbar und nicht mehr auf Supercomputer, Mainframe-Computer bzw. Server beschränkt. Trotzdem profitieren die größten Computer noch immer von einzigartigen Architekturen, die sich erheblich von gewöhnlichen Computern unterscheiden. Sie weisen zum Beispiel häufig tausende Prozessoren, Hochgeschwindigkeitsanschlüsse und spezialisierte Hardware auf.
  • Sei es im Zusammenhang mit Mehrprozessoren oder nicht, eine Herausforderung für Computersysteme besteht darin, ihre Gesamtleistungsfähigkeit zu verbessern und dabei gleichzeitig die elektrische Gesamtleistungsaufnahme zu verringern. Außerdem tendieren die meisten CPUs heute dazu, Zeit mit dem Warten auf Speicher, E/A, Grafiken usw. zu verbringen, so dass das Verbessern der Leistungsfähigkeit bei dem Ausführen von CPU-Anweisungen alleine nicht mehr die hauptsächlich infrage kommende Entwicklungsachse ist.
  • Ein Dokument von Brown, J. A. und Tullsen, D. M („The shared-thread multiprocessor." In „Proceedings of the 22nd Annual international Conference an Supercomputing" (Insel Kos, Griechenland, 07. bis 12. Juni 2008). ICS '08. ACM, New York, NY, 73–82. DOI= http://doi.acm.org/10.1145/1375527.1375541), beschreibt Ergebnisse für eine Architektur eines Mehrprozessors mit gemeinsam genutzten Prozesssträngen („shared-thread multiprocessor” (STMP)). Der STMP vereint Funktionen eines mehrere Prozessstränge gleichzeitig ausführenden Prozessors und eines Chip-Mehrprozessors. Insbesondere ermöglicht es einzelnen Kernen auf einem Chip-Mehrprozessor, einen Prozessstrangzustand gemeinsam zu nutzen. Dieser gemeinsam genutzte Prozessstrangzustand ermöglicht es dem System, Prozessstränge aus einem gemeinsam genutzten Pool auf einzelne Kerne festzulegen, wodurch eine schnelle Verschiebung von Prozesssträngen zwischen Kernen ermöglicht wird. Das Dokument zeigt Vorteile dieser Architektur auf und wertet diese aus.
  • Andere Ansätze konzentrieren sich auf:
    Mehrere in eine Speicheranordnungsstruktur integrierte Prozessoren, siehe z. B. Duncan G. Elliott, W. Martin Snelgrove und Michael Stumm. „Computational RAM: A Memory-SIMD Hybrid and its Application to DSP." In „Custom Integrated Circuits Conference", Seiten 30.6.1 bis 30.6.4, Boston, MA, Mai 1992;
    Mehrere in einem Chip integrierte Prozessoren und Speichermakros (PIM), siehe z. B. Maya Gokhale, Bill Holmes und Ken Iobst. „Processing in Memory: the Terasys Massively Parallel PIM Array." Computer, 28(3): 23–31, April 1995;
    Mehrere in einem Chip integrierte Prozessoren und Speichermakros (Execube), siehe z. B. Peter M. Kogge. „EXECUBE – A New Architecture for Scalable MPPs." In „1994 International Conference an Parallel Processing", Seiten I77 bis I84, August 1994; und
    IRAM, siehe z. B. David Patterson, Thomas Anderson, Neal Cardwell, Richard Fromm, Kimberly Keeton, Christoforos Kozyrakis, Randi Thomas und Katherine Yelick. „Intelligenter RAN (IRAM): Chips that Remember and Compute" vorgestellt auf der „1997 IEEE International Solid-State Circuits Conference (ISSCC)" 6. bis 8. Februar 1997, San Francisco, CA.
  • ZUSAMMENFASSUNG
  • Es werden Ausführungsformen eines auf einem Computer ausgeführten Verfahrens zum Verwalten der Verarbeitung von Ressourcen eines computergestützten Systems beschrieben. In einigen Ausführungsformen enthält das computergestützte System mindestens einen ersten Prozessor und einen zweiten Prozessor, wobei jeder der Prozessoren funktionsmäßig mit einem Speicher verbunden ist, der so eingerichtet ist, dass er einen Datensatz speichern kann. In einer Ausführungsform beinhaltet das auf einem Computer ausgeführte Verfahren das Überwachen von Daten eines Satzes, die von dem ersten Prozessor während des Ausführens als zumindest entweder Eingabedaten oder Ausgabedaten verarbeitet werden. Das auf einem Computer ausgeführte Verfahren beinhaltet auch das Anweisen, einen Ablauf in dem ersten Prozessor zu unterbrechen und den Ablauf in dem zweiten Prozessor wieder aufzunehmen, wenn auf Grundlage der Überwachung herausgefunden wird, dass der zweite Prozessor weniger weit von den überwachten Daten entfernt ist als der erste Prozessor.
  • Es werden Ausführungsformen eines anderen auf einem Computer ausgeführten Verfahrens zum Verwalten der Verarbeitung von Ressourcen eines computergestützten Systems beschrieben. In einigen Ausführungsformen enthält das computergestützte System eine Vielzahl von Prozessoren, darunter ein erster Prozessor und ein zweiter Prozessor, wobei jeder der Prozessoren funktionsmäßig mit einem Speicher verbunden ist, der so eingerichtet ist, dass er einen von einem Prozessor zu verarbeitenden Datensatz speichern kann. In einer Ausführungsform beinhaltet das auf einem Computer ausgeführte Verfahren das Überwachen von Daten des Satzes, die von dem ersten Prozessor während des Ausführens als zumindest entweder Eingabedaten oder Ausgabedaten verarbeitet werden. Des Weiteren beinhaltet das auf einem Computer ausgeführte Verfahren, wenn herausgefunden wird, dass sich der zweite Prozessor näher an den überwachten Daten befindet als der erste Prozessor, das Anweisen, einen Ablauf in dem ersten Prozessor zu unterbrechen, wobei sich der erste Prozessor in einem bestimmten Prozessorzustand befindet, und den Ablauf in dem zweiten Prozessor beginnend mit einem zumindest teilweise aus dem bestimmten Prozessorzustand ermittelten Prozessorzustand wieder aufzunehmen.
  • Andere Aspekte und Vorteile von Ausführungsformen der vorliegenden Erfindung ergeben sich aus der folgenden ausführlichen Beschreibung in Verbindung mit den beigefügten Zeichnungen, die beispielhaft für die Grundgedanken der Erfindung veranschaulicht sind.
  • KURZE BESCHREIBUNG DER ZEICHNUNGEN
  • 1 zeigt einen Ablaufplan einer Ausführungsform eines Verfahrens zum Verwalten der Verarbeitung von Ressourcen eines computergestützten Systems;
  • 2 zeigt einen ausführlicheren Ablaufplan, der eine bestimmte Ausführungsform eines Verfahrens zum Verwalten der Verarbeitung von Ressourcen eines computergestützten Systems veranschaulicht;
  • 3 veranschaulicht schematisch eine Ausführungsform des Unterbrechens/Fortsetzens eines Ausführungsstrangs;
  • 4 zeigt eine schematische Darstellung eines Computersystems, das eine Ausführungsform eines Verfahrens zum Verwalten der Verarbeitung von Ressourcen eines computergestützten Systems umsetzt; und
  • 5 und 6 sind von 4 abweichende Ausführungsformen.
  • AUSFÜHRLICHE BESCHREIBUNG
  • In der folgenden Beschreibung werden spezifische Einzelheiten verschiedener Ausführungsformen bereitgestellt. Einige Ausführungsformen können jedoch mit weniger als all diesen spezifischen Einzelheiten angewendet werden. In anderen Fällen werden bestimmte Verfahren, Abläufe, Komponenten, Strukturen und/oder Funktionen der Kürze und Klarheit halber nicht ausführlicher beschrieben, als für die Ermöglichung der verschiedenen Ausführungsformen der Erfindung nötig ist.
  • In einigen Ausführungsformen bricht ein auf einem Computer ausgeführtes Verfahren zum Verwalten der Verarbeitung von Ressourcen eines computergestützten Systems mit einem klassischen Paradigma, gemäß dessen Prozessoren den Mittelpunkt der Welt darstellen und Eingabe-/Ausgabedaten zu/von den Prozessoren transportiert werden. Im Gegenteil, Ausführungsformen des auf einem Computer ausgeführten Verfahrens schlagen vor, die „Berechnen”-Zustandsinformationen dahin zu verschieben, wo sich die Daten befinden, z. B. durch Verschieben eines Kernzustands zu einem sich am nächsten befindlichen Kern anstatt des Verschiebens von Daten zu der CPU. Im Grunde ergibt sich daraus in der Praxis eine Verschiebung von Kilobytes an Stelle von Megabytes.
  • Um dieses umgekehrte Paradigma zu erreichen, haben die Erfinder Folgendes erkannt:
    • – Beim Verschieben von Daten wird eine erhebliche Menge an elektrischer Leistung aufgenommen;
    • – In einem DIMM-Speichermodul (Dual In-Line Memory Module) wird die Hälfte der elektrischen Leistung z. B. bei der Eingabe/Ausgabe (E/A) aufgenommen;
    • – Bald wird es nicht mehr möglich sein, noch mehr Kerne auf einem einzelnen großen Die unterzubringen, ganz zu schweigen von dem Problem der Bandbreite pro Kern, der elektrischen Leistungsaufnahme und den Herausforderungen bezüglich der Kühlung; und
    • – Cachespeicher verbrauchen viel Platz und elektrische Leistung;
  • Dementsprechend wird der Aufwand für das Verschieben der Daten zu einem bedeutenderen Problem als das Verschieben des Berechnens, woraus sich der Vorteil des vorliegenden Ansatzes ergibt.
  • 1 zeigt einen Ablaufplan einer Ausführungsform eines Verfahrens zum Verwalten der Verarbeitung von Ressourcen eines computergestützten Systems. Das Verfahren zielt darauf ab, eine neue Art des Verwaltens der Verarbeitung von Ressourcen in einem computergestützten System vorzuschlagen, in dem mehrere Prozessoren funktionsmäßig mit einem Speicher verbunden sind. Letzterer ist so eingerichtet, dass er einen Datensatz speichern kann, der von einem oder mehreren Prozessoren verwendet werden kann. Üblicherweise werden die fraglichen Daten gelesen (,Eingabedaten') und/oder durch den Kern erzeugt und zurück geschrieben (,Ausgabedaten'). Das Verfahren umfasst zwei Hauptschritte, die nun erörtert werden.
  • Der Einfachheit halber gehen wir zunächst von lediglich zwei Prozessoren aus.
  • Als erstes werden Eingabe- und/oder Ausgabedaten von einem ersten der Prozessoren überwacht, Schritt 100.
  • Als zweites wird bei Ermittlung, dass sich ein zweiter Prozessor weniger weit entfernt von den überwachten Daten befindet als der erste Prozessor (Prüfung 110), der Ablauf in dem ersten Prozessor unterbrochen, Schritt 120, und der Ablauf in dem zweiten Prozessor wieder aufgenommen, Schritt 130. Somit greift ein näherer Prozessor auf Daten zu bzw. erzeugt diese, wodurch Datenverschiebungen über unnötig längere Entfernungen von/zu dem ersten Prozessor (bzw. einem L1- bis L3-Cachespeicher davon) vermieden werden.
  • Allgemeiner ausgedrückt werden Daten, auf die von N Prozessoren zugegriffen wird, gleichzeitig überwacht. Der Ablaufplan aus 1 dient dazu, des Verständnisses halber eine Übersichtsdarstellung der Erfindung bereitstellen.
  • Wie angeführt, kann es sich bei den überwachten Daten um Eingabe- und/oder Ausgabedaten handeln. Im Folgenden beruhen Ausführungsformen der Einfachheit halber jedoch lediglich auf Beispielen der Überwachung von Eingabedaten, d. h. von dem Prozessor gelesenen Daten. Trotzdem bleiben die Grundgedanken der Erfindung unabhängig davon, ob es sich um Eingabe- und/oder Ausgabedaten handelt, gleich.
  • Die Anweisung wird in einem Prozessor wieder aufgenommen, der sich näher an den überwachten Daten befindet. Bei der fraglichen Entfernung kann es sich zum Beispiel um eine Messung handeln, wie weit ein Prozessor von den von ihm verarbeiteten Daten entfernt ist. In einer unten erörterten Ausführungsform befinden sich die CPU-Kerne zum Beispiel auf 3D-Stacks mit Speicher: hier ist die Entfernung zwischen einem bestimmten Kern und seinem entsprechenden Speicher physisch kurz, während die Entfernung zu dem Speicher eines anderen 3D-Stack wesentlich größer ist. Allgemeiner ausgedrückt spiegelt die fragliche Entfernung einen Aufwand wider, z. B. in Bezug auf Energie oder Zeit.
  • Je weiter die Daten entfernt sind, desto mehr elektrische Leistung muss zum Beispiel für deren Transport aufgenommen werden (daher der Aufwand).
  • Die Entfernung kann ferner einen Zeitaufwand widerspiegeln. In diesem Zusammenhang kann die betrachtete Entfernung wie eine Latenzzeit (bzw. eine erwartete Latenzzeit) schwanken, die Daten zum Erreichen eines bestimmten Prozessors benötigen. Bei der Latenzzeit (d. h. Zugriffszeit) handelt es sich um die Zeit, um die der Speicher das Bereitstellen von von einem Prozessor angeforderten Daten verzögert. Ganz allgemein gesagt dauert es umso länger, einen Prozessor zu erreichen, je weiter er entfernt ist. Das Warten vermindert die Leistungsfähigkeit des Prozessors: wenn ein Prozessor fünf Speichertaktzyklen auf das Empfangen von angeforderten Daten warten muss, beträgt seine Leistungsfähigkeit lediglich 1/5 der Leistungsfähigkeit, die er hätte, wenn ein Speicher verwendet werden würde, der Daten unverzögert liefern kann. Somit kann das Wiederaufnehmen des Ablaufs in einem näheren Prozessor zu besseren Leistungsfähigkeiten führen.
  • Die Entfernung zu bestimmten Daten kann zum Beispiel auf Grundlage deren Speicheradressen und den Positionen der Prozessoren geschätzt werden.
  • Des Weiteren kann das Überwachen von Eingabedaten, auf die ein erster Prozessor zugreift, auf Grundlage der in Anschlüssen wie einem Bus gespeicherten Speicheradressen der Eingabedaten durchgeführt werden. Es werden zum Beispiel die letzten 100 Speicheradressen überwacht, auf die zugegriffen wurde. Wenn sich herausstellt, dass z. B. eine Mehrheit der überwachten Adressen zu einem Speicher bzw. Speicherbereich gehört, die sich näher an einem zweiten Prozessor befinden, wird die Entscheidung getroffen, den Ablauf in dem zweiten Prozessor wieder aufzunehmen. Das Überwachen, auf welche Daten von einem Prozessor zugegriffen wird, kann außerdem über die Register des Prozessors oder mit anderen Mitteln durchgeführt werden.
  • Die Entfernung kann zum Beispiel als Vektor bestimmt werden, der mit mehreren von dem Prozessor gelesenen/geschriebenen Daten einhergeht (z. B. die letzten 100 gelesenen/geschriebenen Speicheradressen), um zu ermitteln, ob der zweite Prozessor näher als der erste Prozessor ist.
  • Die Entscheidung darüber, ob der Ablauf zu einem anderen Prozessor verschoben wird, kann an einer oder mehreren Steuereinheiten getroffen werden. Bei den fraglichen Steuereinheiten kann es sich um Software oder Hardware handeln, z. B. eine Hardware-Schaltung. In letzterem Fall ist die Hardware-Schaltung (z. B. über eine oder mehrere Vermittlungseinheiten) entsprechend sowohl mit den Prozessoren als auch mit dem Speicher verbunden. Die Steuerlogik kann ferner, wie später veranschaulicht wird, zentralisiert (eine Steuereinheit entscheidet) oder verteilt sein, d. h. mehrere Steuereinheiten (z. B. eine pro Prozessor) konkurrieren um die Entscheidung.
  • Man betrachte zur Klarstellung von Ideen das folgende Beispiel. Ein erster Prozessor P1 wird aufgefordert, einen Code auszuführen. Das Ausführen des Codes erfordert es an einem gewissen Punkt, zwei (sehr) große Zahlen N1 und N2 (d. h. Eingabedaten) zu addieren, wobei angemerkt sei, dass die fragliche Addition sehr wohl in einem Zyklus ausgeführt werden könnte, wenn stattdessen ausreichend kleine Zahlen beteiligt wären. Wir nehmen an, dass der in P1 ausgeführte Code einen Algorithmus widerspiegelt, der so ausgelegt ist, dass er Zahlen addieren kann, die größer als der verfügbare RAM sind. In dem vorliegenden Fall ruft P1 zu Beginn der Addition seinen Speichercachespeicher in Bezug auf N1 oder zumindest einen Teil davon ab. Für den aktuellen Zweck nehmen wir der Einfachheit halber an, dass lediglich eine Cachespeicherebene, sagen wir L1, vorliegt. Da N1 jedoch äußerst groß ist, sie belegt z. B. 8 Terabyte an Speicher, ist N1 in dem Speichercachespeicher nicht ohne Weiteres verfügbar, um die Anforderung von P1 zu erwidern (die Größe einer Cachezeile beträgt üblicherweise 64 Bytes bis 1 Kilobyte). Folglich muss L1 nacheinander Speicherplätze abrufen, in denen unterschiedliche Teile von N1 gespeichert sind (z. B. in benachbarten Blöcken), um P1 während des Ausführens ordnungsgemäß Daten zuzuführen. Die Adressen der Teile von N1 werden entsprechend protokolliert, z. B. in einem Bus (oder einem anderen Anschluss). Mittlerweile werden die gespeicherten Adressen überwacht (dasselbe würde für Ausgabedaten an Stelle von Eingabedaten geschehen). Wenn derartige Adressen einer entfernt angeordneten Speicherstelle entsprechen, die sich näher an einem anderen Prozessor P2 befinden, wird der Ablauf wie oben angeführt zu P2 verschoben.
  • Im Übrigen können Ausführungsformen des Verfahrens auch sehr gut ohne Cachespeicher Anwendung finden, obwohl das obige Beispiel von Cachespeicher ausgeht. Tatsächlich bleiben Grundgedanken von Ausführungsformen des Verfahrens gleich, wenn kein Cachespeicher verwendet wird, d. h., wenn ein Prozessor die Eingabedaten direkt von dem Speicher abruft. Adressen der abgerufenen Daten können zum Beispiel im Wesentlichen auf dieselbe Art überwacht werden. Außerdem können Register des Prozessors als Ebene innerhalb des Cachespeichers angesehen werden, der sich „näher” an dem Prozessor befindet, so dass das obige Beispiel sich auch auf einen Fall bezieht, in dem man auf keinen Cachespeicher (im herkömmlichen Sinne) angewiesen ist.
  • In einer Abwandlung können einige der Prozessoren Cachespeicher aufweisen, während ein oder mehrere andere Prozessoren keinen aufweisen. Die Prozessoren mit Cachespeicher können dazu dienen, das Einrichten der Berechnung in anderen Prozessoren auf dieselbe Weise abzudecken, in der ein Hauptspeicher einem Prozessor für sich anfänglich nicht im Cachespeicher befindliche Daten (initial cold misses) dient. Somit kann der Ablauf in P1 beginnen (wobei letzterer mit Cachespeicher ausgestattet ist) und bei Ermitteln eines besser geeigneten Prozessors Pn zu letzterem verschoben werden (die am besten geeigneten Prozessoren sind im Vorfeld nicht bekannt).
  • Als nächstes kann man einen nahtlosen Übergang zum Beispiel dadurch erreichen, indem der Ablauf in dem zweiten Prozessor wieder aufgenommen wird, wobei mit einem Prozessorzustand begonnen wird, der (zumindest teilweise) von dem des ersten Prozessors ermittelt wird, d. h. als der Ablauf unterbrochen wurde.
  • Der „Prozessorzustand” bezieht sich normalerweise auf einen Zustand des Prozessors, der zu einem bestimmten Zeitpunkt (mindestens) von den Registern des Prozessors widergespiegelt wird, darunter z. B. die Zustandsmerker (state flags). Allgemeiner ausgedrückt kann er sich auf Register von Prozessoren, Auffangspeicher (latches) und Speicher (z. B. Cachespeicher) u. a. beziehen. Üblicherweise handelt es sich bei dem in dem Prozessor ausgeführten Code und den Eingabedaten, auf die der Prozessor zugreift, um einen Teil eines aktuellen Zustands dieses Prozessors.
  • Entsprechend kann die Wiederaufnahme des Ablaufs in dem zweiten Prozessor erreicht werden, indem Registerdaten in den zweiten Prozessor importiert werden, angenommen, dass letzterer diese auswerten kann (wie es bei zwei identischen Prozessoren der Fall ist).
  • In diesem Zusammenhang kann man interessante Einzelheiten darüber herausfinden, wie Daten zwischen Prozessoren verschoben werden können (wenn auch in einem unterschiedlichen Zusammenhang), z. B. in P. Stanley-Marbell, K. Lahiri, A. Raghunathan, „Adaptive Data Placement in an Embedded Multiprocessor Thread Library", Datum, Vol. 1, Seite 151, Proceedings of the Design Automation & Test in Europe Conference Vol. 1, 2006.
  • In einer Ausführungsform wird in den Fällen, in denen bekannt ist, dass Zustandsinformationsdaten teilweise gleich sind, eine Teilmenge der Registerdaten in den zweiten Prozessor importiert. Es bleibt jedoch, dass der Zustand des zweiten Prozessors bei Wiederaufnahme zumindest teilweise aus dem Zustand des ersten (ursprünglichen) Prozessors ermittelt wird. In einer abgewandelten Ausführungsform können Zustandsinformationsdaten vor dem Importieren in den zweiten Prozessor teilweise oder vollständig mit den Daten aus Registern des ersten Prozessors gefüllt und z. B. problemlos formatiert werden.
  • Allgemeiner ausgedrückt kann man sich auf alle beliebigen Daten verlassen, welche die Prozessorzustände teilweise oder vollständig passend erfassen (nachfolgend Zustandsinformationsdaten bzw. kurz Zustandsdaten genannt). Somit wird der Ablauf in dem zweiten Prozessor wieder aufgenommen, nachdem einige passende Zustandsinformationsdaten in den zweiten Prozessor geladen wurden, wobei der Hauptpunkt das Verschieben der „Berechnen”-Zustandsdaten in die (Eingabe-/Ausgabe-) Daten anstatt des Verschiebens der Daten zum Berechnen hin bleibt. Wie angeführt hat dies das Verschieben von ein paar Dutzend, möglicherweise hunderten von Kilobytes im Vergleich zu den Megabytes zur Folge, die beim Verschieben der (Eingabe-)Daten, auf die bei der Verarbeitung zugegriffen wird, nötig wären.
  • 2 zeigt einen ausführlicheren Ablaufplan, der eine ausführliche Ausführungsform eines Verfahrens zum Verwalten der Verarbeitung von Ressourcen eines computergestützten Systems veranschaulicht. Zusätzlich zu den bereits in Bezug auf 1 erörterten Schritten kann man hier verzögerte Migrationen (lazy migrations) erwägen, um die Wirksamkeit des Schemas der in Bezug auf 1 beschriebenen Ausführungsform weiter zu verbessern. Insbesondere kann angewiesen werden, Zustandsdaten aus Registern des ersten Prozessors zu befüllen (Schritt 112); wobei das Laden der befüllten Daten vor dem eigentlichen Unterbrechen des Ablaufs in dem ersten Prozessor beginnt (Schritte 112, 114). Wenn eine Steuereinheit zum Beispiel Daten erkennt, auf die ein (zu) weit entfernter Prozessor zugreift, kann sie die Register des Prozessors durchsuchen, die dauerhaftesten Zustandsdaten kennzeichnen und eine Entscheidung treffen, derartige Daten zu einem näheren Prozessor zu verschieben.
  • In einer abweichenden Ausführungsform wird eine frühe Version des Zustands des ersten Prozessors an den zweiten Prozessor gesendet. Beim Unterbrechen des Ablaufs in dem ersten Prozessor wird eine Delta-Datei gesendet, welche die Unterschiede zwischen dem frühen und dem allerletzten Zustand codiert. Somit müssen kurzum äußerst wenige Daten verschoben werden (einige Kilobyte oder weniger), wodurch schnelle Übergänge sichergestellt werden.
  • Des Weiteren müssen beim zweiten Mal nicht alle Registerdaten erneut gesendet werden, wenn der zweite Prozessor später voraussichtlich erneut verwendet wird. Die Steuereinheit würde entsprechend anweisen, dass Zustandsdaten, die einen Teil des Zustands des ersten Prozessors erfassen, migriert werden (Schritte 112, 114).
  • Nach Abschluss der Migration (Schritt 114) kann der Ablauf in dem zweiten Prozessor wieder aufgenommen werden (Schritt 130).
  • Ausführungsformen der vorliegenden Erfindung ermöglichen es, sicher auf Datencachespeicher verzichten zu können, weil eine hohe Speicherbandbreite äußerst kurze Verbindungen zulassen. Trotzdem muss es in der Praxis nicht unbedingt so sein.
  • Eine weitere Verfeinerung erreicht man zum Beispiel durch Migration eines von dem ersten Prozessor verwendeten Cachespeichers zusätzlich zu den Zustandsdaten. Die „Umgebung” des ersten Prozessors wird dadurch in dem zweiten Prozessor vollständiger wieder hergestellt. Ausführlicher ausgedrückt können Daten eines Speichercachespeichers, der Kopien von Daten speichert, auf die der erste Prozessor am häufigsten zugreift, in einen von dem zweiten Prozessor verwendeten Speichercachespeicher geschrieben werden (Schritt 116). Die Synchronisierung wäre der Einheitlichkeit halber vorzugsweise gleich der für die Zustandsdaten verwendeten Synchronisierung.
  • Der migrierte Speichercachespeicher ist üblicherweise der kleinste, d. h. L1-Speichercachespeicher, der von dem ersten Prozessor verwendet wird. Effizienter kann man sich an Stelle der üblichen L1- bis L3-Trilogie auf einen Speichercachespeicher (L1) verlassen. Tatsächlich ermöglicht es die in Ausführungsformen der Erfindung erzielte hohe Speicherbandbreite, auf Datencachespeicher sicher verzichten zu können. Indem man sich z. B. auf Technologien wie ,Silizium-Durchkontaktierung' (,through silicon via') oder TSV verlässt, werden sehr kurze Verbindungen möglich. Im Übrigen kann die frei gewordene Fläche für weitere Kerne verwendet werden.
  • Des Weiteren kann der Berechnungskernzustand selbst wie eine Zeile in einem Cachespeicher behandelt werden. Der Berechnungskern weist Kilobyte an Zuständen auf. Somit können der Ablauf in einem ersten Prozessor unterbrochen und Kernregister sowie L1-Cachespeicher in einen besser geeigneten Kern verschoben werden.
  • Als nächstes kann der Prozessorzustand des ersten Prozessors nach Unterbrechen des Ablaufs in dem ersten Prozessor beibehalten werden, bis andere Zustandsdaten in diesen geladen werden (Schritt 112'). Dabei könnte es sich zum Beispiel um ein Standardverhalten handeln. Wiederum könnte die Steuereinheit das rechtzeitige Aktualisieren des Zustands in dem ersten Prozessor bei Bedarf über eine Delta-Datei sicherstellen.
  • Möglicherweise kann der erste Prozessor nach einer Abwartungsverzögerung abgeschaltet werden (Schritt 140), wenn kein Laden eines neuen Zustands in diesen angewiesen wird. Dadurch wird die elektrische Leistungsaufnahme optimiert.
  • Interessanterweise hängt die am besten geeignete Größenordnung von zu unterbrechenden und fortzusetzenden Berechnungsaufgaben z. B. von der Reaktionsfähigkeit des Überwachungsalgorithmus ab. Das Ermitteln der wirksamsten Größenordnung hängt von dem Zusammenhang, der Anzahl von Prozessoren, der Architektur, der Art von Prozessen, den Aufgaben, der Art der Eingabedaten usw. ab. Die Verfügbarkeit eines wirksamen Überwachungsschemas vorausgesetzt, wird die Erfindung vorteilhafterweise in der Größenordnung eines einzelnen Ausführungsstrangs umgesetzt. Man würde entsprechend das Fortführen eines Ausführungsstrangs in dem zweiten Prozessor anweisen (Schritt 130), nachdem ein Ausführungsstrang in dem ersten Prozessor (Schritt 120) unterbrochen wurde.
  • Ein Ausführungsstrang kann als Teil einer laufenden Aufgabe angesehen werden. In den meisten Betriebssystemen ist ein Prozessstrang in einem Prozess enthalten, und mehrere Prozessstränge können in einem gleichen Prozess auftreten, wobei Ressourcen wie ein Speicher gemeinsam genutzt werden, im Widerspruch zu Prozessen. Von Techniken für das gleichzeitige Bearbeiten von Prozesssträngen (multithreading techniques) ist bekannt, wie man einen Einzelprozessor dazu bringen kann, zwischen unterschiedlichen Prozesssträngen umzuschalten (wie bei Mehrprogrammfähigkeit (multitasking)). Hier verursachen Ausführungsformen der Erfindung in ähnlicher Weise, dass ein Prozessstrang in einem Prozessor unterbrochen wird. Jedoch wird der Prozessstrang nicht in demselben Prozessor wiederaufgenommen, sondern in einem anderen fortgesetzt.
  • Dieser Punkt ist in 3 veranschaulicht. Die Y-Achse gibt die Zeitachse an. Die zwei parallelen Linien innerhalb des Kreises geben einen entsprechenden Prozessor P1 bzw. P2 an. Wie die Figur impliziert gehört der Prozessstrang t zu einem bestimmten Prozess p. Als erstes wird ein Prozessstrang t in P1 begonnen und ausgeführt. An irgend einem Punkt erkennt die Steuereinheit (nicht gezeigt), dass P1 Ressourcen nutzt, die sich näher an P2 befinden, und entscheidet, den Prozessstrang t zu unterbrechen, wobei sich der Prozessor P1 in Zustand s1 befindet. Wie vorher erörtert wird der Prozessstrang t dann in P2 wieder aufgenommen, wobei von dem Zustand s1 begonnen wird. Der Ablauf fährt so lange fort, bis der Prozessstrang beendet oder sogar in P2 (in Zustand s2) unterbrochen wird, um wie in 3 veranschaulicht zurück zu P1 importiert zu werden, wenn es aus dem Zusammenhang heraus vorteilhaft ist. Einzelheiten bezüglich der Prozessstrangverwaltung können zum Beispiel in der oben angeführten Veröffentlichung namens „Adaptive Data Placement in an Embedded Multiprocessor Thread Library” gefunden werden.
  • Somit ermöglichen es Ausführungsformen der vorliegenden Erfindung, Berechnungszustände in den Speicher zu verschieben, anstatt eine Sammlung hierarchischer Cachespeicher die Daten aus dem Hauptspeicher verschieben zu lassen. Wie angeführt werden einige Ausführungsformen des Verfahrens unter der Steuerung durch Hardware durchgeführt (die Steuereinheit ist als Hardware-Schaltung ausgeführt), um für Software transparent zu sein.
  • 4 zeigt eine schematische Darstellung eines Computersystems, das eine Ausführungsform eines Verfahrens zum Verwalten der Verarbeitung von Ressourcen eines computergestützten Systems umsetzt. Hier sind die Prozessoren P1 bis PN über geeignete Anschlüsse B mit einem Speicher M verbunden, wobei die Anschlüsse B einen Bus B oder eine Kreuzschiene (crossbar) und möglicherweise einen Schalter (switch) umfassen. Anderweitig sind sie mit einem Speicher D (z. B. einer Festplatte) verbunden und werden von der Steuereinheit C gesteuert. In einer abweichenden Ausführungsform sind Schalter verteilt, z. B. ein Schalter pro Kern bzw. Teilmenge von Kernen. In noch einer anderen abweichenden Ausführungsform ist die Steuereinheit C Teil des Anschlusses. In allen Fällen ist die Steuereinheit C entsprechend mit Prozessoren und Speichern verbunden, damit sie in der Lage ist, das Verschieben des Ablaufs von einem Prozessor zu einem anderen anzuweisen.
  • In dem abgebildeten Beispiel sind spezifische Eingabedaten d physisch näher an dem Punkt gespeichert, an dem P2 auf M zugreift, als an dem Punkt, an dem P1 darauf zugreift. Wenn P1 während des Betriebs zu häufig auf d zugreift, kann es die Steuereinheit wünschen, den Zustand von P1 auf P2 zu verschieben, wodurch weniger Daten verschoben werden.
  • 5 zeigt eine von 4 abweichende Ausführungsform, in der die Steuereinheiten C1 bis CN unter den Prozessoren verteilt sind, z. B. eine Steuereinheit Cn pro Prozessor. Hier können Steuereinheiten gleichzeitig entscheiden, Prozessorzustände von einem Prozessor zu einem anderen zu verschieben bzw. zu empfangen. Eine auf der Überwachung von Eingabedaten beruhende Prüfung, die bei C1 durchgeführt wird, kann somit eine Verschiebung des Zustands von P1 zu P2 verursachen. C2 kann dann beruhend auf einer aktuellen Aktivität (bzw. einem Zustand) von P2 entscheiden, ob sie annimmt. Wenn P2 zum Beispiel inaktiv ist, bestätigt C2 das Verschieben des Zustands von P1 zu P2. Entsprechend und wie zum Ausdruck gebracht können Schalter verteilt werden.
  • 6 zeigt eine andere von 4 abweichende Ausführungsform, in welcher der Speicher nun mindestens zwei Speicherchips M1, ... MN umfasst, es sich bei dem ersten und zweiten Prozessor P1, P2 jeweils um einen Prozessorkern handelt, der funktionsmäßig mit einem Chip M1, M2 des Speichers wie einem DIMM verbunden ist, und die Steuereinheit über einen geeigneten Anschluss mit den Prozessoren verbunden ist.
  • Ausführlicher ausgeführt handelt es sich bei den Prozessoren P1 bis PN in einigen Ausführungsformen um eine Vierkernanordnung auf entsprechenden 3D-Speicher-Stacks M1 bis MN, z. B. DIMM-Speicherchips. Der allgemeine Grundgedanke bleibt jedoch gleich: wenn ein erster, bestimmter Kern von P1 (den wir P11 nennen) während des Betriebs häufig auf bestimmte Daten d zugreift, kann die Steuereinheit den Zustand von P11 zu einem Kern von P2 verschieben. Ein hierbei erreichtes Ziel besteht darin, eine angemessene Menge an Berechnungen äußerst nahe an dem DRAM zu platzieren und z. B. mit ,Silizium-Durchkontaktierung' (TSV) Technologie 3D-Stacking auszunutzen, was zu schnelleren und kleineren Baugruppen, die weniger elektrischen Strom aufnehmen, und zu einem wirklich verteilten System führt.
  • Betrachten wir den folgenden beispielhaften Aufbau der Veranschaulichung halber. Hier befinden sich Prozessorkerne auf entsprechenden DIMM-Speicherpuffern. Eine Anwendung betrifft zum Beispiel eine Datenbankdurchsuchung, in der Prozessoren einen großen Bruchteil von Speicher untersuchen müssen. Die Folge von Arbeitsschritten kann zum Beispiel wie folgt lauten:
    • – Erstens beginnen die Speicherdurchsuchungen, und Zähler überwachen die Speicherzugriffe.
    • – Zweitens wird ein verzögerter Migrationscode zwischen den DIMMs gestartet (d. h. die Steuereinheit weist an, das Laden von Zustandsdaten in einem zweiten Prozessorkern zu beginnen, bevor das Unterbrechen des Ablaufs in einem ersten Kern angewiesen wird); und
    • – Drittens löst die Steuereinheit die Migration eines Prozessstrangzustands aus und hält den Ablauf in dem ersten Kern an.
  • In einigen Ausführungsformen löst das Verfahren zumindest teilweise das Problem mit der Speicherbandbreite sowie Probleme mit der Speicherkapazität. Die Grundgedanken im Kern einiger Ausführungsformen des Verfahrens sind ferner von vornherein skalierbar. Da einige Ausführungsformen des Verfahrens weniger Cachespeicherebenen ermöglichen, sind sie deshalb auch von einfacherer Art.
  • Schließlich ist der hierin vorgeschlagene Ansatz zumindest für einige Anwendungen transparent, wenngleich er auch erfordern kann, das Betriebssystem und die Ausführung der Speichersteuereinheit in einigen Fällen anzupassen. Trotzdem ist eine Anpassung des Betriebssystems nicht von vornherein notwendig. Des Weiteren muss das Anpassen der Speichersteuereinheit zusätzliche Hardware z. B. zum Überwachen von Zugriffen pro Kern und zum Verschieben des Ablaufs von einem Prozessor zu einem anderen umfassen, und zwar, wenn die Steuereinheit als Hardware-Schaltung ausgeführt ist. In einer reinen „Software”-Umsetzung des Verfahrens ist jedoch keine Anpassung erforderlich.
  • In einer Software-Umsetzung können von der Steuereinheit ausgeführte Anweisungsschritte in Programmen umgesetzt werden, die auf einem mindestens zwei programmierbare Prozessoren beinhaltenden System ausgeführt werden können. Jedes Computerprogramm kann, falls gewünscht, in einer höheren (z. B. prozeduralen oder objektorientierten) Programmiersprache oder in Assembler- bzw. Maschinensprache ausgeführt werden; und in jedem Fall kann es sich bei der Sprache um eine kompilierte oder interpretierte Sprache handeln. Geeignete Prozessoren beinhalten als Beispiel sowohl allgemeine als auch Spezial-Mikroprozessoren. In einer anderen abweichenden Ausführungsform können von der Steuereinheit durchgeführte Anweisungen, in einem physisch in einer maschinenlesbaren Speichereinheit enthaltenen Computerprogrammprodukt zur Ausführung durch einen programmierbaren Prozessor gespeichert sein; und Verfahrensschritte der Erfindung können durch einen programmierbaren Prozessor durchgeführt werden, der Anweisungen zur Durchführung von Funktionen der Erfindung ausführt. In allen Fällen umfasst die vorliegende Erfindung das sich ergebende Computersystem.
  • Allgemeiner ausgedrückt können Ausführungsformen des obigen Verfahrens in digitalen elektronischen Schaltungen oder in Computer-Hardware, Firmware, Software bzw. Kombinationen daraus umgesetzt werden.
  • Allgemein empfängt ein Prozessor Anweisungen und Daten von einem Nur-Lese-Speicher und/oder einem Direktzugriffsspeicher. Zu Speichereinheiten, die für das physische Enthalten von Computerprogrammanweisungen und Daten geeignet sind gehören alle Formen nichtflüchtigen Speichers, darunter zum Beispiel Halbleiterspeichereinheiten wie EPROM, EEPROM und Flash-Speichereinheiten; Magnetplatten wie interne Festplatten und austauschbare Platten; magnetooptische Platten; und CD-ROM-Platten und ähnliches.
  • Die vorliegende Erfindung wird vorteilhafterweise auf große Computer mit bis zu mehreren tausenden Prozessoren, Hochgeschwindigkeitsanschlüssen und spezialisierter Hardware angewendet.
  • Obwohl die vorliegende Erfindung unter Bezugnahme auf bestimmte Ausführungsformen beschrieben wurde, werden Fachleute verstehen, dass diverse Änderungen durchgeführt und Elemente durch gleichwertige ersetzt werden können, ohne von dem Umfang der vorliegenden Erfindung abzuweichen. Außerdem können viele Abwandlungen vorgenommen werden, um eine bestimmte Situation oder ein bestimmtes Material den Lehren der vorliegenden Erfindung anzupassen, ohne von dem wesentlichen Umfang dieser abzuweichen. Deshalb ist es beabsichtigt, dass die vorliegende Erfindung nicht auf die bestimmte beschriebene Ausführungsform beschränkt ist, sondern dass die vorliegende Erfindung sämtliche Ausführungsformen beinhaltet, die in den Umfang der beigefügten Ansprüche fallen. Der hierin beschriebene Grundgedanke des Unterbrechens/Wiederaufnehmens kann zum Beispiel in einer anderen Größenordnung als auf Prozessstrangebene umgesetzt werden.
  • ZITATE ENTHALTEN IN DER BESCHREIBUNG
  • Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.
  • Zitierte Nicht-Patentliteratur
    • Brown, J. A. und Tullsen, D. M („The shared-thread multiprocessor.” In „Proceedings of the 22nd Annual international Conference an Supercomputing” (Insel Kos, Griechenland, 07. bis 12. Juni 2008). ICS '08. ACM, New York, NY, 73–82. DOI= http://doi.acm.org/10.1145/1375527.1375541) [0003]
    • Duncan G. Elliott, W. Martin Snelgrove und Michael Stumm. „Computational RAM: A Memory-SIMD Hybrid and its Application to DSP.” In „Custom Integrated Circuits Conference”, Seiten 30.6.1 bis 30.6.4, Boston, MA, Mai 1992 [0004]
    • Maya Gokhale, Bill Holmes und Ken Iobst. „Processing in Memory: the Terasys Massively Parallel PIM Array.” Computer, 28(3): 23–31, April 1995 [0004]
    • Peter M. Kogge. „EXECUBE – A New Architecture for Scalable MPPs.” In „1994 International Conference an Parallel Processing”, Seiten I77 bis I84, August 1994 [0004]
    • David Patterson, Thomas Anderson, Neal Cardwell, Richard Fromm, Kimberly Keeton, Christoforos Kozyrakis, Randi Thomas und Katherine Yelick. „Intelligenter RAN (IRAM): Chips that Remember and Compute” vorgestellt auf der „1997 IEEE International Solid-State Circuits Conference (ISSCC)” 6. bis 8. Februar 1997, San Francisco, CA [0004]
    • P. Stanley-Marbell, K. Lahiri, A. Raghunathan, „Adaptive Data Placement in an Embedded Multiprocessor Thread Library”, Datum, Vol. 1, Seite 151, Proceedings of the Design Automation & Test in Europe Conference Vol. 1, 2006 [0036]

Claims (25)

  1. Auf einem Computer ausgeführtes Verfahren zum Verwalten der Verarbeitung von Ressourcen eines computergestützten Systems, das mindestens einen ersten Prozessor und einen zweiten Prozessor aufweist, wobei jeder der Prozessoren funktionsmäßig mit einem Speicher verbunden ist, der so eingerichtet ist, dass er einen Datensatz speichern kann, wobei das auf einem Computer ausgeführte Verfahren Folgendes umfasst: Überwachen von Daten eines Satzes, die von dem ersten Prozessor während des Ausführens als zumindest entweder Eingabedaten oder Ausgabedaten verarbeitet werden; und Anweisen, einen Ablauf in dem ersten Prozessor zu unterbrechen und den Ablauf in dem zweiten Prozessor wieder aufzunehmen, wenn auf Grundlage der Überwachung herausgefunden wird, dass der zweite Prozessor weniger weit von den überwachten Daten entfernt ist als der erste Prozessor.
  2. Auf einem Computer ausgeführtes Verfahren nach Anspruch 1, bei dem während des Schritts des Anweisens ferner angewiesen wird, einen Ablauf in dem ersten Prozessor zu unterbrechen, wobei sich der erste Prozessor in einem bestimmten Prozessorzustand befindet, und den Ablauf in dem zweiten Prozessor beginnend mit einem zumindest teilweise aus dem bestimmten Prozessorzustand ermittelten Prozessorzustand wieder aufzunehmen.
  3. Auf einem Computer ausgeführtes Verfahren nach Anspruch 2, bei dem während des Schritts des Anweisens ferner Folgendes angewiesen wird: Laden von Zustandsdaten in den zweiten Prozessor, die den bestimmten Prozessorzustand teilweise oder vollständig erfassen, und Wiederaufnehmen des Ablaufs in dem zweiten Prozessor gemäß der geladenen Zustandsdaten.
  4. Auf einem Computer ausgeführtes Verfahren nach Anspruch 3, bei dem während des Schritts des Anweisens ferner angewiesen wird, das Laden von Zustandsdaten in den zweiten Prozessor zu beginnen, bevor das Unterbrechen des Ablaufs in einem ersten Kern angewiesen wird.
  5. Auf einem Computer ausgeführtes Verfahren nach Anspruch 4, bei dem während des Schritts des Anweisens ferner angewiesen wird, auf der Grundlage von Daten von zumindest einem Register des ersten Prozessors das Laden von Zustandsdaten in den zweiten Prozessor zu beginnen.
  6. Auf einem Computer ausgeführtes Verfahren nach Anspruch 4, bei dem die Zustandsdaten einen Teil des bestimmten Prozessorzustands erfassen, und bei dem während des Schritts des Anweisens Folgendes angewiesen wird: Beginnen mit dem Laden von befüllten Zustandsdaten in den zweiten Prozessor, wobei ein Teil von Daten in zumindest einem Register des zweiten Prozessors unverändert bleiben; und Wiederaufnehmen des Ablaufs in dem zweiten Prozessor gemäß sowohl der geladenen Zustandsdaten als auch der unveränderten Daten.
  7. Auf einem Computer ausgeführtes Verfahren nach Anspruch 1, bei dem der Schritt des Anweisens ferner das Anweisen umfasst, nach dem Unterbrechen eines Ausführungsstrangs in dem ersten Prozessor den Ausführungsstrang in dem zweiten Prozessor fortzusetzen.
  8. Auf einem Computer ausgeführtes Verfahren nach Anspruch 1, das nach dem Anweisen, einen Ablauf in dem ersten Prozessor zu unterbrechen, einen Schritt des Anweisens umfasst, einen Prozessorzustand des ersten Prozessors so lange beizubehalten, bis angewiesen wird, dass zumindest einen Teil eines Zustands eines dritten Prozessors erfassende Zustandsdaten in den ersten Prozessor geladen werden.
  9. Auf einem Computer ausgeführtes Verfahren nach Anspruch 8, das nach dem Anweisen, einen Ablauf in dem ersten Prozessor zu unterbrechen, ferner einen Schritt des Anweisens umfasst, den ersten Prozessor nach einer Abwartungsverzögerung abzuschalten.
  10. Auf einem Computer ausgeführtes Verfahren nach Anspruch 1, das ferner einen Schritt des Anweisens umfasst, Daten eines ersten Speichercachespeichers, der Kopien von Daten in dem Speicher speichert, auf die der erste Prozessor am häufigsten zugreift, in einen zweiten von dem zweiten Prozessor verwendeten Speichercachespeicher zu schreiben.
  11. Auf einem Computer ausgeführtes Verfahren nach Anspruch 1, wobei das Verfahren in einem computergestützten System umgesetzt wird, in dem die Prozessoren über einen Anschluss funktionsmäßig mit dem Speicher verbunden sind, wobei das Überwachen von Daten ferner das Überwachen von auf dem Anschluss gespeicherten Adressen der verarbeiteten Daten umfasst.
  12. Auf einem Computer ausgeführtes Verfahren nach Anspruch 1, bei dem die Entfernung von einem bestimmten Datenelement des Datensatzes zu entweder dem ersten Prozessor oder dem zweiten Prozessor eine Funktion einer Latenzzeit von dem bestimmten in dem Speicher gespeicherten Datenelement zu entweder dem ersten Prozessor oder dem zweiten Prozessor ist.
  13. Sich auf einem durch einen Computer lesbaren Medium befindliches Computerprogramm, das Anweisungen zum Veranlassen eines Computersystems zum Umsetzen des auf einem Computer ausgeführten Verfahrens nach Anspruch 1 umfasst.
  14. Hardware-Schaltung, die so ausgelegt ist, dass sie ein Computersystem dazu veranlasst, das auf einem Computer ausgeführte Verfahren nach Anspruch 1 umzusetzen.
  15. Computersystem, das Folgendes aufweist: einen ersten Prozessor; einen zweiten Prozessor; eine oder mehrere Steuereinheiten; und einen Speicher, der so eingerichtet ist, dass er einen Datensatz so speichert, dass ein bestimmtes Datenelement des Satzes nicht die gleiche Entfernung zu jedem der Prozessoren aufweist, in dem die Steuereinheiten, die Prozessoren und die Speicher funktionsmäßig miteinander verbunden sind und die eine oder mehrere Steuereinheiten so konfiguriert sind, dass sie das auf einem Computer ausgeführte Verfahren nach Anspruch 1 umsetzen.
  16. Auf einem Computer ausgeführtes Verfahren zum Verwalten der Verarbeitung von Ressourcen eines computergestützten Systems, das eine Vielzahl von Prozessoren umfasst, darunter ein erster Prozessor und ein zweiter Prozessor, wobei jeder der Prozessoren funktionsmäßig mit einem Speicher verbunden ist, der so eingerichtet ist, dass er einen von einem Prozessor zu verarbeitenden Datensatz speichern kann, wobei das Verfahren Folgendes umfasst: Überwachen von Daten des Satzes, die von dem ersten Prozessor während des Ausführens als zumindest entweder Eingabedaten oder Ausgabedaten verarbeitet werden; und wenn sich der zweite Prozessor näher an den überwachten Daten befindet als der erste Prozessor, Anweisen, einen Ablauf in dem ersten Prozessor zu unterbrechen, wobei sich der erste Prozessor in einem bestimmten Prozessorzustand befindet; und den Ablauf in dem zweiten Prozessor beginnend mit einem zumindest teilweise aus dem bestimmten Prozessorzustand ermittelten Prozessorzustand wieder aufzunehmen.
  17. Auf einem Computer ausgeführtes Verfahren nach Anspruch 16, bei dem während des Schritts des Anweisens ferner angewiesen wird, in den zweiten Prozessor Zustandsdaten zu laden, die zumindest einen Teil des bestimmten Prozessorzustands erfassen, und den Ablauf in dem zweiten Prozessor gemäß der geladenen Zustandsdaten wieder aufzunehmen.
  18. Auf einem Computer ausgeführtes Verfahren nach Anspruch 17, bei dem während des Schritts des Anweisens ferner angewiesen wird, das Laden der Zustandsdaten in den zweiten Prozessor zu beginnen, bevor der Ablauf in dem ersten Prozessor unterbrochen wird.
  19. Auf einem Computer ausgeführtes Verfahren nach Anspruch 16, bei dem während des Schritts des Anweisens ferner angewiesen wird, nach dem Unterbrechen eines Ausführungsstrangs in dem ersten Prozessor einen Ausführungsstrang in dem zweiten Prozessor fortzusetzen.
  20. Auf einem Computer ausgeführtes Verfahren nach Anspruch 16, bei dem der Schritt des Anweisens ferner das Anweisen umfasst, zumindest einen Teil eines ersten Speichercachespeichers, der Kopien von Daten speichert, auf die der erste Prozessor am häufigsten zugreift, in einen zweiten von dem zweiten Prozessor verwendeten Speichercachespeicher zu übertragen.
  21. Auf einem Computer ausgeführtes Verfahren nach Anspruch 20, bei dem der erste und der zweite Speichercachespeicher die kleinsten Cachespeicher sind, die von dem ersten Prozessor bzw. dem zweiten Prozessor verwendet werden.
  22. Auf einem Computer ausgeführtes Verfahren nach Anspruch 20, bei dem der erste und der zweite Speichercachespeicher die einzigen Cachespeicher sind, die von dem ersten Prozessor bzw. dem zweiten Prozessor verwendet werden.
  23. Auf einem Computer ausgeführtes Verfahren nach Anspruch 20, bei dem weder der erste noch der zweite Prozessor einen Speichercachespeicher verwenden.
  24. Auf einem Computer ausgeführtes Verfahren nach Anspruch 20, das in einem computergestützten System umgesetzt wird, in dem die Prozessoren über einen Anschluss funktionsmäßig mit dem Speicher verbunden sind, wobei das Überwachen von Daten durch den ersten Prozessor verarbeitet wird und ferner das Überwachen von auf dem Anschluss gespeicherten Adressen der verarbeiteten Daten umfasst, wobei eine Entfernung von den verarbeiteten Daten zu entweder dem ersten Prozessor oder dem zweiten Prozessor ermittelt werden kann.
  25. Auf einem Computer ausgeführtes Verfahren nach Anspruch 20, bei dem die Entfernung im Wesentlichen einer Messung dessen entspricht, wie weit entfernt sich ein Prozessor von den überwachten Daten befindet.
DE112010004735.9T 2009-12-10 2010-12-07 Auf einem Computer ausgeführtes Verfahren für das Verarbeiten der Ressourcen-Verwaltung Active DE112010004735B4 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/635,544 US8473723B2 (en) 2009-12-10 2009-12-10 Computer program product for managing processing resources
US12/635,544 2009-12-10
PCT/IB2010/055626 WO2011070506A2 (en) 2009-12-10 2010-12-07 Computer-implemented method of processing resource management

Publications (2)

Publication Number Publication Date
DE112010004735T5 true DE112010004735T5 (de) 2013-04-18
DE112010004735B4 DE112010004735B4 (de) 2017-01-26

Family

ID=43982369

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112010004735.9T Active DE112010004735B4 (de) 2009-12-10 2010-12-07 Auf einem Computer ausgeführtes Verfahren für das Verarbeiten der Ressourcen-Verwaltung

Country Status (5)

Country Link
US (2) US8473723B2 (de)
CN (1) CN102652309B (de)
DE (1) DE112010004735B4 (de)
GB (1) GB2488260B (de)
WO (1) WO2011070506A2 (de)

Families Citing this family (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102955716B (zh) * 2011-08-19 2016-05-18 苏州简约纳电子有限公司 一种多线程处理器和处理方法
US8756601B2 (en) 2011-09-23 2014-06-17 Qualcomm Incorporated Memory coherency acceleration via virtual machine migration
US9575806B2 (en) * 2012-06-29 2017-02-21 Intel Corporation Monitoring accesses of a thread to multiple memory controllers and selecting a thread processor for the thread based on the monitoring
US9804896B2 (en) * 2012-07-31 2017-10-31 Empire Technology Development Llc Thread migration across cores of a multi-core processor
US9063906B2 (en) * 2012-09-27 2015-06-23 International Business Machines Corporation Thread sparing between cores in a multi-threaded processor
US20150095614A1 (en) * 2013-09-27 2015-04-02 Bret L. Toll Apparatus and method for efficient migration of architectural state between processor cores
RU2633985C2 (ru) * 2014-09-30 2017-10-20 Общество С Ограниченной Ответственностью "Яндекс" Способ и система обработки данных
CN105607891A (zh) * 2014-11-14 2016-05-25 中国航空工业第六一八研究所 一种基于虚拟中断的处理器资源使用解藕方法
US9582329B2 (en) * 2015-02-17 2017-02-28 Qualcomm Incorporated Process scheduling to improve victim cache mode
RU2632416C2 (ru) * 2015-05-14 2017-10-04 Общество С Ограниченной Ответственностью "Яндекс" Способ (варианты) передачи объекта от первого процесса на второй процесс, машиночитаемый носитель (варианты) и система обработки данных
US10261690B1 (en) * 2016-05-03 2019-04-16 Pure Storage, Inc. Systems and methods for operating a storage system
EP3282357B1 (de) * 2016-08-09 2023-10-11 Huawei Technologies Co., Ltd. Vorrichtung und verfahren zum führen mehrerer fäden
US10963310B2 (en) * 2018-07-19 2021-03-30 International Business Machines Corporation Intelligent contentionless processing resource reduction in a multiprocessing system
US10915493B2 (en) 2018-09-25 2021-02-09 International Business Machines Corporation Component building blocks and optimized compositions thereof in disaggregated datacenters
US11182322B2 (en) * 2018-09-25 2021-11-23 International Business Machines Corporation Efficient component communication through resource rewiring in disaggregated datacenters
US10831698B2 (en) * 2018-09-25 2020-11-10 International Business Machines Corporation Maximizing high link bandwidth utilization through efficient component communication in disaggregated datacenters
US10802988B2 (en) 2018-09-25 2020-10-13 International Business Machines Corporation Dynamic memory-based communication in disaggregated datacenters
US10637733B2 (en) 2018-09-25 2020-04-28 International Business Machines Corporation Dynamic grouping and repurposing of general purpose links in disaggregated datacenters
US11163713B2 (en) 2018-09-25 2021-11-02 International Business Machines Corporation Efficient component communication through protocol switching in disaggregated datacenters
US10671557B2 (en) 2018-09-25 2020-06-02 International Business Machines Corporation Dynamic component communication using general purpose links between respectively pooled together of like typed devices in disaggregated datacenters
US11650849B2 (en) 2018-09-25 2023-05-16 International Business Machines Corporation Efficient component communication through accelerator switching in disaggregated datacenters
US11012423B2 (en) 2018-09-25 2021-05-18 International Business Machines Corporation Maximizing resource utilization through efficient component communication in disaggregated datacenters

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6105053A (en) * 1995-06-23 2000-08-15 Emc Corporation Operating system for a non-uniform memory access multiprocessor system
US5860116A (en) 1996-12-11 1999-01-12 Ncr Corporation Memory page location control for multiple memory-multiple processor system
US8055588B2 (en) * 1999-05-19 2011-11-08 Digimarc Corporation Digital media methods
US7493478B2 (en) * 2002-12-05 2009-02-17 International Business Machines Corporation Enhanced processor virtualization mechanism via saving and restoring soft processor/system states
US7093147B2 (en) * 2003-04-25 2006-08-15 Hewlett-Packard Development Company, L.P. Dynamically selecting processor cores for overall power efficiency
US7584327B2 (en) * 2005-12-30 2009-09-01 Intel Corporation Method and system for proximity caching in a multiple-core system
US7533316B2 (en) * 2006-03-31 2009-05-12 Intel Corporation Method and apparatus for disabling and swapping cores in a multi-core microprocessor
US20070294693A1 (en) * 2006-06-16 2007-12-20 Microsoft Corporation Scheduling thread execution among a plurality of processors based on evaluation of memory access data
US20080005504A1 (en) * 2006-06-30 2008-01-03 Jesse Barnes Global overflow method for virtualized transactional memory
US7571285B2 (en) * 2006-07-21 2009-08-04 Intel Corporation Data classification in shared cache of multiple-core processor
US20080127182A1 (en) * 2006-11-29 2008-05-29 Newport William T Managing Memory Pages During Virtual Machine Migration
US8612973B2 (en) * 2007-09-26 2013-12-17 Hewlett-Packard Development Company, L.P. Method and system for handling interrupts within computer system during hardware resource migration
US7783811B2 (en) * 2007-12-17 2010-08-24 Microsoft Corporation Efficient interrupt message definition
KR101366075B1 (ko) * 2007-12-20 2014-02-21 삼성전자주식회사 멀티코어 플랫폼에서의 태스크 이동 방법 및 장치
US7930574B2 (en) * 2007-12-31 2011-04-19 Intel Corporation Thread migration to improve power efficiency in a parallel processing environment
US8065485B2 (en) * 2009-05-22 2011-11-22 Oracle America, Inc. Method and apparatus for determining cache storage locations based on latency requirements

Non-Patent Citations (6)

* Cited by examiner, † Cited by third party
Title
Brown, J. A. und Tullsen, D. M ("The shared-thread multiprocessor." In "Proceedings of the 22nd Annual international Conference an Supercomputing" (Insel Kos, Griechenland, 07. bis 12. Juni 2008). ICS '08. ACM, New York, NY, 73-82. DOI= http://doi.acm.org/10.1145/1375527.1375541)
David Patterson, Thomas Anderson, Neal Cardwell, Richard Fromm, Kimberly Keeton, Christoforos Kozyrakis, Randi Thomas und Katherine Yelick. "Intelligenter RAN (IRAM): Chips that Remember and Compute" vorgestellt auf der "1997 IEEE International Solid-State Circuits Conference (ISSCC)" 6. bis 8. Februar 1997, San Francisco, CA
Duncan G. Elliott, W. Martin Snelgrove und Michael Stumm. "Computational RAM: A Memory-SIMD Hybrid and its Application to DSP." In "Custom Integrated Circuits Conference", Seiten 30.6.1 bis 30.6.4, Boston, MA, Mai 1992
Maya Gokhale, Bill Holmes und Ken Iobst. "Processing in Memory: the Terasys Massively Parallel PIM Array." Computer, 28(3): 23-31, April 1995
P. Stanley-Marbell, K. Lahiri, A. Raghunathan, "Adaptive Data Placement in an Embedded Multiprocessor Thread Library", Datum, Vol. 1, Seite 151, Proceedings of the Design Automation & Test in Europe Conference Vol. 1, 2006
Peter M. Kogge. "EXECUBE - A New Architecture for Scalable MPPs." In "1994 International Conference an Parallel Processing", Seiten I77 bis I84, August 1994

Also Published As

Publication number Publication date
WO2011070506A2 (en) 2011-06-16
US8473723B2 (en) 2013-06-25
CN102652309B (zh) 2015-11-25
US20110145545A1 (en) 2011-06-16
WO2011070506A3 (en) 2011-08-11
DE112010004735B4 (de) 2017-01-26
GB201207124D0 (en) 2012-06-06
US8549268B2 (en) 2013-10-01
US20120324166A1 (en) 2012-12-20
GB2488260A (en) 2012-08-22
CN102652309A (zh) 2012-08-29
GB2488260B (en) 2016-07-06

Similar Documents

Publication Publication Date Title
DE112010004735B4 (de) Auf einem Computer ausgeführtes Verfahren für das Verarbeiten der Ressourcen-Verwaltung
DE102013014169B4 (de) Dynamisch grössenveränderbare Zirkularpuffer
DE60210633T2 (de) Verfahren und vorrichtungen zur verbesserung des durchsatzes von eingebetteten prozessoren auf cache-basis durch umschalten von tasks als reaktion auf eine cache-verfehlung
DE112006003444B4 (de) Verfahren und Vorrichtung zum Erfassen von Prozessorzustands-Übergängen
DE102007059784A1 (de) Vorladen aus einem dynamischen wahlfreien Zugriffsspeicher in einen statischen wahlfreien Zugriffsspeicher
DE102011076895B4 (de) Cachekohärenzprotokoll für persistente Speicher
DE102012224265A1 (de) Gemeinsame Nutzung dicht benachbarter Daten-Cachespeicher
DE102018126004A1 (de) Synchronisation in einer Multi-Kachel-Verarbeitungsanordnung
DE112004001133T5 (de) Warteschlangen-Sperren mit Monitor-Memory-Wait
DE112011100744T5 (de) Datenverarbeitungsvorrichtung und -Verfahren zum Schalten einer Arbeitslast zwischen ersten und zweiten Verarbeitungsschaltkreisen
DE102009031125A1 (de) Nand-Fehlerbehandlung
DE102014000372A1 (de) Verbesserte steuerung des prefetch-traffics
DE112014002754T5 (de) Effiziente Aufgabenplanung unter Verwendung eines Sperrmechanismus
DE112017001700T5 (de) Prozessoren, Verfahren, Systeme und Anweisungen zum Abruf von Daten auf der angegebenen Cache-Ebene mit garantiertem Abschluss
DE102009012409A1 (de) Systeme und Verfahren zum Zusammenfügen von Speicherzugriffen von parallelen Threads
DE102022119777A1 (de) VERFAHREN ZUM MINIMIEREN VON MEHRAUFWAND BEI DETEKTION VON HEIßEN/KALTEN SEITEN BEI LAUFENDEN ARBEITSLASTEN
DE102013202992A1 (de) Energieeinsparung bei Verzweigungsvorhersage
DE102019105881A1 (de) Technologien zur bereitstellung von effizienter detektion leerlaufender abfrageschleifen
DE102020133261A1 (de) Techniken zum Vorhersagen der Zeit bis zur Bereitschaft für eine Speichervorrichtung
DE102013202995A1 (de) Energieeinsparung in Verzweigungsvorhersagen
DE102021108478B4 (de) Vorrichtung und Steuerung zur Cache-Verzeichnis-CAM-Fehlererkennung und - Korrektur
DE102012222391B4 (de) Mehrkanal-Zeitscheibengruppen
DE112017007865T5 (de) Netzgebundener shuffle-datenspeicher
DE102012220365A1 (de) Aufgabe-Thread-Feld-Granularität-Ausführung-Präemption
DE112010004982B4 (de) Fortschrittliche Stromverwaltung von Plattenlaufwerken auf der Grundlage des höchsten Systemdurchsatzes

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R016 Response to examination communication
R016 Response to examination communication
R018 Grant decision by examination section/examining division
R084 Declaration of willingness to licence
R020 Patent grant now final