DE102010051477B4 - Verfahren in einer computerplattform sowie computerplattform zum gemeinsamen benutzen von virtuellen speicherbasierten mehrversionsdaten zwischen den verschiedenartigen prozessoren der computerplattform - Google Patents

Verfahren in einer computerplattform sowie computerplattform zum gemeinsamen benutzen von virtuellen speicherbasierten mehrversionsdaten zwischen den verschiedenartigen prozessoren der computerplattform Download PDF

Info

Publication number
DE102010051477B4
DE102010051477B4 DE102010051477.2A DE102010051477A DE102010051477B4 DE 102010051477 B4 DE102010051477 B4 DE 102010051477B4 DE 102010051477 A DE102010051477 A DE 102010051477A DE 102010051477 B4 DE102010051477 B4 DE 102010051477B4
Authority
DE
Germany
Prior art keywords
version
processor
memory
updated
shared
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.)
Active
Application number
DE102010051477.2A
Other languages
English (en)
Other versions
DE102010051477A1 (de
Inventor
Ying Gao
Hu Chen
Shoumeng Yan
Xiaocheng Zhou
Sai Luo
Bratin Saha
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 DE102010051477A1 publication Critical patent/DE102010051477A1/de
Application granted granted Critical
Publication of DE102010051477B4 publication Critical patent/DE102010051477B4/de
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/167Interprocessor communication using a common memory, e.g. mailbox
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/109Address translation for multiple virtual address spaces, e.g. segmentation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/10Requirements analysis; Specification techniques
    • 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/44Arrangements for executing specific programs
    • G06F9/451Execution arrangements for user interfaces
    • 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/466Transaction processing
    • 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/54Interprogram communication
    • G06F9/542Event management; Broadcasting; Multicasting; Notifications
    • 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/54Interprogram communication
    • G06F9/544Buffers; Shared memory; Pipes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/656Address space sharing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/657Virtual address space management

Abstract

Ein Verfahren in einer Computerplattform, umfassend:Erzeugen (210) gemeinsamer Mehrversionsdaten in einem gemeinsamen virtuellen Mehrversionsspeicher unter Verwendung eines ersten Prozessors, wobei das Erzeugen der gemeinsamen Mehrversionsdaten die Erzeugung einer aktualisierten Version von Speicherseiten umfasst, wobei die aktualisierte Version von Speicherseiten einen Differenzinhalt aufweist, der unter Verwendung einer momentanen Versionsseite und einer früheren Versionsseite generiert wird;Speichern der gemeinsamen Mehrversionsdaten an einem physischen geheimen Speicherplatz des ersten Prozessors, umfassend die Speicherung des Differenzinhaltes an einem separaten Speicherplatz innerhalb des physischen Speicherplatzes des ersten Prozessors; undErlangen der gemeinsamen Mehrversionsdaten mindestens teilweise unter Verwendung eines zweiten Prozessors, wobei die Computerplattform eine Vielzahl von heterogenen Prozessoren umfasst, die den ersten Prozessor und den zweiten Prozessor aufweist, wobei das Erlangen der gemeinsamen Mehrversionsdaten die Erzeugung von ersten zusammengeführten Inhalten durch Zusammenführen von Knoten einer Differenz-Liste, wobei die Knoten den Differenzinhalt und eine Versionsnummer aufweisen, von einer Version einer Startseite bis zu einer jüngsten Versionsnummer in die Startseite umfasst.

Description

  • HINTERGRUND
  • Die Erfindung betrifft ein Verfahren in einer Computerplattform sowie eine Computerplattform.
  • Computersysteme können Plattformen umfassen, die heterogene Prozessoren wie beispielsweise ein Hauptprozessor (CPU) und ein Grafikprozessor (GPU) und symmetrische und asymmetrische Prozessoren unterstützen. Eine einzelne Version von Daten kann sich in einem ersten mit einer ersten Seite verbundenen Speicher (z. B. CPU) einer CPU-GPU-Plattform befinden. Die zweite Seite (GPU-Seite) kann befähigt sein, die einzelnen Versionsdaten aufzurufen, die sich in einem ersten mit der ersten Seite (CPU-Seite) verbundenen Speicher der CPU-GPU-Plattform befinden. Außerdem kann die erste Seite nicht befähigt sein, die einzelnen Versionsdaten aufzurufen, die sich in einem zweiten Speicher auf der zweiten Seite (GPU-Seite) befinden. Da die einzelnen Versionsdaten in unterschiedlichen Adressbereichen gespeichert sein können, könnten die bestehenden Kommunikationsmechanismen nur einseitigen Informationsfluss zwischen den heterogenen Prozessoren (CPU und GPU) ermöglichen, um die einzelnen Versionsdaten aufzurufen.
  • US2008109795 A1 betritt eine Mehrzweck-Programmierumgebung, die es dem Benutzer ermöglicht, eine GPU als Mehrzweck-Rechenmaschine zu programmieren, indem er vertraute C/C++-Programmierkonstrukte verwendet. Benutzer können Deklarations-spezifizierer verwenden, um zu identifizieren, welche Teile eines Programms für eine CPU oder eine GPU kompiliert werden sollen. Insbesondere können Funktionen, Objekte und Variablen für die GPU-Binärkompilierung mit Deklarationsspezifizierern angegeben werden. Ein Compiler trennt den GPU-Binärcode und den CPU-Binärcode in einer Quelldatei mit Hilfe der Deklarationsspezifizierer. Die Position von Objekten und Variablen in verschiedenen Datenspeichern im System kann mit Hilfe der Deklarationsspezifizierer identifiziert werden. CTA-Threading-Informationen werden auch für die GPU bereitgestellt, um die Parallelverarbeitung zu unterstützen.
  • Der Artikel „Fast Checkpoint/Recovery to Support Kilo-Instruction Speculation and Hardware Fault Tolerance“, Daniel J. Sorin et al., Part of CS Technical Reports, Citation TR1420, 2000, im Internet:< URL: HTTP://DIGITAL.LIBRARY.VVISC.EDU/1793/60248> beschreibt zur Unterstützung der Spekulation mit Kilo-Anweisungen bei konventionellen Prozessoren wird in diesem Papier Multiversionsspeicher (MVM) vorgeschlagen, eine Prozessor-/Speicherschnittstelle, die es Prozessoren ermöglicht, mehrere Versionen von Datenspeichern zu erstellen und bei Bedarf zu früheren Versionen zurückzukehren.
  • Es ist die Aufgabe der Erfindung ein verbessertes Verfahren zur Handhabung von mehreren unterschiedlichen Versionen von Daten in einer Computerplattform, die für heterogene Prozessoren, wie beispielsweise einen Hauptprozessor (CPU) und einen Grafikprozessor (GPU) einer Plattform bestimmt sind, sowie eine entsprechende Computerplattform bereitzustellen. Die Aufgabe wird gelöst durch ein Verfahren mit den Merkmalen gemäß Hauptanspruch sowie eine Computerplattform mit den Merkmalen gemäß Anspruch 8.
  • Figurenliste
  • Die hierin beschriebene Erfindung wird in den beigefugten Figuren in beispielhafter und nicht einschränkender Weise veranschaulicht. Der Einfachheit halber und zur besseren Veranschaulichung sind in den Figuren veranschaulichte Elemente nicht notwendigerweise maßstabsgetreu. Beispielsweise können die Abmessungen einiger Elemente im Verhältnis zu anderen Elementen zur Verdeutlichung übermäßig groß dargestellt sein. Wo es zweckmäßig erschien, wurden weiterhin Bezugszeichen in den Figuren wiederholt, um entsprechende oder analoge Bauteile zu kennzeichnen.
    • 1 zeigt eine Plattform 100, die das gemeinsame Benutzen von auf virtuellem Speicher basierenden Mehrversionsdaten zwischen heterogenen Prozessoren wie beispielsweise CPU und GPU gemäß einer Ausführungsform unterstützen kann.
    • 2 ist ein Ablaufdiagramm, das eine Operation zeigt, die durch die Plattform 100 gemäß einer Ausführungsform ausgeführt wird.
    • 3 ist ein Ablaufdiagramm, das eine Operation zeigt, die von einem Erzeuger und einem Verbraucher der Plattform 100 ausgeführt wird, um das auf virtuellem Speicher basierende gemeinsame Benutzen von Mehrversionsdaten zwischen heterogenen Prozessoren wie beispielsweise CPU und GPU gemäß einer Ausführungsform zu unterstützen.
    • 4 ist ein Ablaufdiagramm, das eine vom Erzeuger ausgeführte Operation zeigt, um aktualisierte Speicherseiten im gemeinsam benutzten virtuellen Speicherplatz gemäß einer Ausführungsform zu verfolgen.
    • 5 ist ein Liniendiagramm, das eine Diff -Operation ausgeführt vom Erzeuger der Plattform 100 zeigt, um verfügbare Mehrversionsdaten bereitzustellen, die gemäß einer ersten Ausführungsform vom Verbraucher zu erlangen sind.
    • 6 zeigt ein Computersystem, das eine Plattform umfassen kann, die das gemeinsame Benutzen von auf virtuellem Speicher basierenden Mehrversionsdaten zwischen den heterogenen Prozessoren einer Plattform gemäß einer Ausführungsform unterstützen kann.
  • AUSFÜHRLICHE BESCHREIBUNG
  • Die folgende Beschreibung beschreibt Techniken, um auf virtuellem Speicher basierende Mehrversionsdaten zwischen den heterogenen Prozessoren (zum Beispiel CPU und GPU) einer Computerplattform gemeinsam zu benutzen. In der folgenden Beschreibung werden zahlreiche spezifische Einzelheiten wie beispielsweise Logikausführungen, Ressourcenpartitionierung oder gemeinsames Benutzen oder Duplikationsimplementierungen, Arten und Wechselbeziehungen von Systemkomponenten und Logikpartitionierung oder Integrationsentscheidungen erläutert, um ein gründlicheres Verstehen der vorliegenden Erfindung zu ermöglichen. Für den Fachmann ist es jedoch offensichtlich, dass die Erfindung auch ohne diese spezifischen Details realisierbar ist. In anderen Fällen sind Kontrollstrukturen, Gateebenenschaltungen und gesamte Softwarebefehlsfolgen im Detail nicht gezeigt worden, um die Erfindung nicht zu verschleiern. Der Durchschnittsfachmann wird anhand der eingebundenen Beschreibungen in der Lage sein, ohne unangemessenes Experimentieren sachgerechte Funktionalität zu realisieren.
  • Bezugnahmen in der Beschreibung auf „eine Ausführungsform“, „eine beispielhafte Ausführungsform“ weisen darauf hin, dass die beschriebene Ausführungsform ein bestimmtes Merkmal, eine bestimmte Struktur oder eine bestimmte Eigenschaft umfassen kann, aber dass nicht unbedingt jede Ausführungsform das besondere Merkmal, die besondere Struktur oder die bestimmte Eigenschaft umfassen muss. Außerdem beziehen sich solche Ausdrücke nicht unbedingt auf dieselbe Ausführungsform. Wenn ein bestimmtes Merkmal, eine bestimmte Struktur oder eine bestimmte Eigenschaft im Zusammenhang mit einer Ausführungsform beschrieben ist, so wird weiterhin unterstellt, dass der Fachmann die Kenntnis besitzt, solch ein Merkmal, eine Struktur oder Eigenschaft im Zusammenhang mit anderen Ausführungsformen zu beeinflussen, unabhängig davon, ob sie ausführlich beschrieben sind oder nicht.
  • Ausführungsformen der Erfindung können in Hardware, Firmware, Software oder irgendeiner Kombination davon implementiert sein. Ausführungsformen der Erfindung können ebenfalls als auf einem maschinenlesbaren Medium gespeicherte Anweisungen implementiert sein, die gelesen und durch ein oder mehrere Prozessoren ausgeführt werden können. Ein maschinenlesbares Speichermedium kann jeden Mechanismus für das Speichern oder Senden von Information in einer durch eine Maschine (z. B. ein Computing-Gerät) lesbaren Form enthalten.
  • Zum Beispiel kann ein maschinenlesbares Medium Read Only Memory (ROM), Random Access Memory (RAM), Magnetplattenspeichermedien, optische Speichermedien, Flash-Speicher-Geräte und elektrische, optische Formen von Signalen enthalten. Weiter können Firmware, Software, Programme und Anweisungen hier als bestimmte Aktionen ausführend beschrieben sein. Jedoch ist zu verstehen, dass solche Beschreibungen nur zur Annehmlichkeit dienen, und dass sich solche Aktionen tatsächlich aus Computing-Geräten, Prozessoren, Controllern und anderen Geräten ergeben, welche die Firmware, Software, Programme und Anweisungen ausführen.
  • Bei einer Ausführungsform kann eine Computerplattform eine oder mehrere Techniken unterstützen, um auf virtuellem Speicher basierende Mehrversionsdaten zwischen den heterogenen Prozessoren (z. B. eine CPU und eine GPU) zu teilen. Bei einer Ausführungsform kann eine Semantik des gemeinsam genutzten Speichers Grundelemente wie beispielsweise eine Freigabeoperation bereitstellen, die Speicherungen durch die CPU oder GPU „logisch“ in einem gemeinsamen Speicher aufnehmen lässt, und eine Erfassungsoperation, welche den CPU- oder GPU-Speicher veranlassen kann, sich „logisch“ mit dem gemeinsam genutzten Speicher zu synchronisieren.
  • Bei einer Ausführungsform kann die Freigabeoperation die Seiten im gemeinsamen Speicher nachverfolgen, die aktualisiert (oder modifiziert) sein können. Bei einer Ausführungsform kann eine ,Diff-Operation einer Vorgängerversion und einer jetzigen Version der Seiten ausgeführt und das Ergebnis der Diff-Operation und eine zugehörige Versionsnummer können in einer separaten Speicherregion gespeichert werden. Bei einer Ausführungsform können die gemeinsam benutzten Seiten des virtuellen Speichers auf „Schreibschutz‟-Modus bei Freigabe gesetzt werden, um das Nachverfolgen von aktualisierten (oder modifizierten oder ungültigen) Seiten zu ermöglichen, was ebenfalls in einem Auffangen in einem Verarbeiter resultieren kann, der, während die Seite geschrieben wird, zu erzeugen ist. Bei einer Ausführungsform kann der Verarbeiter verwendet werden, um eine Datensicherungskopie der Seite (Doppelseite) zu erstellen. Bei einer Ausführungsform kann ein Zusatzspeicher verwendet werden, um eine Position (oder ein spezifisches Bit) zu kennzeichnen, um anzuzeigen, dass die Seite aktualisiert wird oder ungültig ist. Als ein Resultat können für die auf einem Erzeuger freigegebenen (zum Beispiel CPU) und die bei einem Verbraucher erlangten (zum Beispiel GPU) Datenstrukturen nur modifizierte Bytes für jede Version übertragen werden. Während der Verbraucher eine Erfassungsoperation bei einer bestimmten Versionsnummer ausführt, können die gespeicherten Differenzen in einem privaten Adressraum des Verbrauchers in Reihenfolge zusammengeführt werden. Bei einer Ausführungsform kann der geteilte virtuelle Speicher durch physische private Speicherplätze der heterogenen Prozessoren oder einen physischen von den heterogenen Prozessoren gemeinsam benutzten gemeinsamen Speicher unterstützt werden.
  • Eine Ausführungsform einer Plattform 100, die geteilte Mehrversionsdaten zwischen den heterogenen Prozessoren wie beispielsweise der CPU und der GPU bereitstellt, wird in 1 gezeigt. Bei einer Ausführungsform kann die Plattform 100 einen Hauptprozessor (CPU) 110, ein Betriebssystem (OS) 112 verbunden mit der CPU 110, einen privaten CPU-Platz 115, ein CPU-Compiler 118, einen gemeinsam benutzten virtuellen Speicher (oder gemeinsamer Mehrversionsspeicher) 130, einen Grafikprozessor (GPU) 180, ein Betriebssystem (OS) 182 verbunden mit der GPU 180, einen privaten GPU-Platz 185 und ein GPU-Compiler 188 umfassen. Bei einer Ausführungsform kann das OS 112 Ressourcen der CPU 110 und des privaten CPU-Platzes 115, der GPU 180 und des privaten GPU-Platzes 185 verwalten. Bei einer Ausführungsform können der private CPU-Platz 115 und der private GPU-Platz 185 Kopien von Mehrversionsdaten umfassen, um gemeinsam benutzten virtuellen Speicher 130 zu unterstützen. Bei einer Ausführungsform können die Metadaten wie beispielsweise Objekt 131 zur Aufrecherhaltung der Speicherkonsistenz verwendet werden, um die im privaten CPU-Platz 115 und dem privaten GPU-Platz 185 gespeicherten Kopien zu synchronisieren. Bei einer anderen Ausführungsform können die Mehrversionsdaten in einem physischen gemeinsamen Speicher wie beispielsweise einem gemeinsamen Speicher 650 gespeichert werden (von 6, die nachfolgend beschrieben ist).
  • Bei einer Ausführungsform können der CPU-Compiler 118 und der GPU-Compiler 188 mit CPU 110 und GPU 180 gekoppelt sein oder sie können auch entfernt auf anderen Plattformen oder Computersystemen bereitgestellt werden. Die Compiler 118 verbunden mit CPU 110 können einen kompilierten Code für CPU 110 generieren und die Compiler 188 verbunden mit GPU 180 können einen kompilierten Code für GPU 180 generieren.
  • Bei einer Ausführungsform können der CPU-Compiler 118 und der GPU-Compiler 188 einen kompilierten Code generieren, indem sie eine oder mehrere Elementfunktionen der Objekte, die von einem Benutzer in einer Hochsprache wie beispielsweise einer objektorientierten Sprache bereitgestellt werden, kompilieren. Bei einer Ausführungsform können der Compiler 118 und 188 ein Objekt 131, das gemeinsam benutzte Mehrversionsdaten 132 umfassen kann, veranlassen, von dem gemeinsam benutzten virtuellen Speicher 130 durch einen Erzeuger unterstützt und vom gemeinsam benutzten virtuellen Speicher 130 von einem Verbraucher erlangt zu werden. Bei einer Ausführungsform kann das Objekt 131 unterstützt durch den gemeinsam benutzten virtuellen Speicher 130 die gemeinsam benutzten Mehrversionsdaten 132 und ein oder mehrere Elementfunktionen, wie beispielsweise die virtuellen Funktionen VF 133-A bis 133-K und die nicht virtuellen Funktionen NVF 136-A bis 136-L umfassen. Bei einer Ausführungsform kann die Kommunikation zwischen CPU 110 und GPU 180 durch die Elementfunktionen wie beispielsweise VF 133 und NVF 136 des gemeinsam benutzten Objekts 131 bereitgestellt werden.
  • Eine Ausführungsform einer Operation der Plattform 100, um gemeinsam benutzte auf virtuellem Speicher basierende Mehrversionsdaten zu unterstützen, wird in einem Ablaufdiagramm von 2 gezeigt. Im Block 210 kann CPU 110 (ein Erzeuger) Mehrversionsdaten wie beispielsweise die gemeinsam benutzten Mehrversionsdaten 132 erzeugen, die im gemeinsam benutzten virtuellen Speicher 130 unterstützt werden können. Bei einer Ausführungsform kann CPU 110 den VersionDataCommit-Prozess verwenden, um die gemeinsam benutzten Mehrversionsdaten 132 zu erzeugen. Bei einer Ausführungsform kann CPU 110 die neue Versionsnummer berechnen. Bei einer Ausführungsform kann die neue Versionsnummer generiert werden, indem eine gegenwärtige Versionsnummer (CuVerNo) inkrementiert wird. Bei einer Ausführungsform kann die neue Versionsnummer gleich (CuVerNo +1) sein.
  • Bei einer Ausführungsform kann CPU 110 Differenzinhalt (Diff) zwischen einer Vorgängerversionsseite und einer gegenwärtigen Versionsseite bestimmen, wenn eine durch eine gegenwärtige Versionsnummer identifizierte aktuelle Seite aktualisiert wird. Bei einer Ausführungsform kann CPU 110 einen Diff-Knoten (oder aktualisierten Versionsknoten) konstruieren, der den Differenzinhalt und eine neue Versionsnummer umfassen kann. Bei einer Ausführungsform kann CPU 110 den Diff-Knoten in eine Diff-Liste einsetzen. Bei einer Ausführungsform können die gemeinsam benutzten Mehrversionsdaten 132 Seiten umfassen, die Vorgängerversionsseiten, gegenwärtige Versionsseiten und Speicherseiten mit aktualisierter Version umfassen. Bei einer Ausführungsform kann ein Aktualisieren auf eine gegenwärtige Versionsseite eine Speicherseite mit aktualisierter Version erzeugen. Bei einer Ausführungsform können die gemeinsam benutzten Mehrversionsdaten 132 vom Erzeuger (CPU 110) erzeugt und werden und ein Verbraucher (GPU 180) greift darauf zu.
  • Im Block 250 kann der Verbraucher (GPU 180) befähigt werden, die gemeinsam benutzten Mehrversionsdaten 132 unterstützt durch den gemeinsam benutzten virtuellen Speicher 130 zu erlangen. Bei einer Ausführungsform kann GPU 180 den VersionDataAcquire-Prozess verwenden, um die gemeinsam benutzten Mehrversionsdaten 132 unterstützt durch den gemeinsam benutzten virtuellen Speicher 130 zu erlangen oder auf sie zuzugreifen. Bei einer Ausführungsform kann GPU 180 eine Diff-Liste für die gegenwärtige Versionsseite abfragen und den Inhalt der Vorgängerversionsseiten und der gegenwärtigen Versionsseite zusammenführen. Bei einer Ausführungsform kann die Mergingoperation bei einer Startseite beginnen und alle Knoten der Diff-Liste von der Version der Startseite bis zur Versionsnummer können in der Startseite zusammengeführt werden, welche die VersionDataAcquire-Operation angibt. Bei einer Ausführungsform kann der Inhalt, der von den Vorgängerversionsseiten einschließlich einer Startseite zur gegenwärtigen Versionsseite zusammengeführt wird, in die Speicherseite mit aktualisierter Version zusammengeführt werden, auf die durch GPU 180 zugegriffen werden kann oder die von ihr erlangt werden können.
  • Eine Ausführungsform vom Erzeuger und Verbraucher, welche Funktionen ausführt, um das gemeinsame Benutzen von in einem gemeinsamen Speicher gespeicherten Mehrversionsdaten zu unterstützen, wird in einem Ablaufdiagramm von 3 gezeigt. In Block 310 kann CPU 110 (Erzeuger des gemeinsam benutzten Mehrversionsdatenobjekts 131) die aktualisierten (oder modifizierten) Versionsspeicherseiten im gemeinsamen benutzten virtuellen Speicher 130 verfolgen.
  • Im Block 320 kann CPU 110 eine Diff-Operation an der Vorgängerversionsseite und der gegenwärtigen Versionsseite ausführen, um eine Speicherseite mit aktualisierter Version zu generieren. Bei einer Ausführungsform kann CPU 110 eine aktualisierte Versionsseite LTVP 139 (Versionsnummer = V3) generieren, indem sie eine Diff - Operation an einer Vorgängerversionsseite PVP 137 (Versionsnummer = V1) und einer gegenwärtigen Versionsseite CVP 138 (Versionsnummer = V2) ausführt. Bei einer Ausführungsform kann CPU 110 eine neue Versionsnummer (V3) verbunden mit UVP 139 bereitstellen.
  • Im Block 340 kann CPU 110 die Ergebnisse der Diff-Operation (d. h. UVP 139 und die neue Versionsnummer V3) in einer gemeinsam benutzten (oder virtuellen) Speicherregion logisch speichern, die beispielsweise physisch im privaten CPU-Platz 115 gespeichert sein kann. Im Block 360 kann CPU 110 den modifizierten Bytes jeder Version erlauben, durch GPU 180 erlangt zu werden. Bei einer Ausführungsform kann CPU 110 die modifizierten Bytes und die verbundenen Versionsnummern freigeben, sodass GPU 180 die modifizierten Bytes unter Verwendung des VersionDataAcquire-Prozesses, wie oben beschrieben, erlangen kann.
  • Eine Ausführungsform des Erzeugers, der die aktualisierten (oder modifizierten) Seiten im gemeinsam benutzten virtuellen Speicher 130 verfolgt, wird in einem Ablaufdiagramm von 4 gezeigt. Im Block 410 kann CPU 110 (Erzeuger) die Speicherseiten mit aktualisierter Version im „Schreibschutz‟-Modus bei Freigabe teilen. Bei einer Ausführungsform kann infolge des gemeinsamen Benutzens der Speicherseiten mit aktualisierter Version im „Schreibschutz‟-Modus ein Auffangen in einem Verarbeiter generiert werden, während die Speicherseiten mit aktualisierter Version geschrieben werden können.
  • Im Block 450 kann CPU 110 eine Back-up-Kopie der Speicherseiten mit aktualisierter Version im Verarbeiter erzeugen. Bei einer Ausführungsform kann CPU 110 LTVP 139 auf „Schreibschutz‟-Modus setzen, um das Verfolgen von aktualisierten (oder modifizierten oder ungültigen) Seiten wie beispielsweise LTVP 139 zu ermöglichen. Bei einer Ausführungsform kann CPU 110 einen Verarbeiter verwenden, um eine Datensicherungskopie von LTVP 139 (Doppelseite) zu erzeugen.
  • In Block 480 kann CPU 110 einen Zusatzspeicher kennzeichnen, um anzuzeigen, dass die Speicherseiten mit aktualisierter Version modifiziert (oder ungültig) sein können. Bei einer Ausführungsform kann das Kennzeichen eines Zusatzspeichers der CPU 110 ermöglichen, sich daran zu erinnern, dass die Speicherseite mit aktualisierter Version ungültig ist. Bei einer Ausführungsform kann CPU 110 eine Stelle (oder ein spezifisches Bit) in einem Zusatzspeicher wie beispielsweise eine PCI-Eintrittsfläche kennzeichnen, um anzuzeigen, dass UVP 139 eine aktualisierte oder modifizierte oder ungültige Seite ist.
  • Eine Ausführungsform der CPU 110, die eine Diff-Operation als mindestens einen Teil der Freigabeoperation ausführt und GPU 180, die eine Erfassungsoperation ausführt, sind in 5 abgebildet. Bei einer Ausführungsform kann CPU 110 eine VersionDataCommit()-Funktion (ein Teil der Freigabeoperation) ausführen, um die Speicherseiten mit aktualisierter Version im gemeinsam benutzten virtuellen Speicher 130 logisch aufzunehmen. Bei einer Ausführungsform kann der Verbraucher (GPU 180) auf die Daten von Seite ‚i‘ 540 mit einer Versionsnummer, die V2 gleicht, zugreifen oder diese erlangen. Bei einer Ausführungsform kann CPU 110 eine Diff-Operation dargestellt durch einen Differenzgenerator 570 auf einer Seite ‚i‘ 540 und einer Doppelseite 550 ausführen, welche eine aktualisierte Version der Seite ‚i‘ sein kann, während sie die GetDataRelease()-Funktion ausführt. Bei einer Ausführungsform kann die Seite ‚i‘ 540 eine unmodifizierte Version einer gegenwärtigen Versionsseite darstellen und Doppelseite 550 kann eine aktualisierte (oder modifizierte) Version der Seite ‚i‘ 540 darstellen.
  • Bei einer Ausführungsform kann das Ergebnis generiert durch den Differenzgenerator 570, der nur die modifizierten Bytes umfassen kann, in einem Diff-3-Feld 581 gespeichert sein. Bei einer Ausführungsform kann das Diff-Feld 581 einen Diff-3 umfassen, während GPU 180 Version-3-Daten erlangt, indem Mehrversionsdaten bis zu Version-2 (V2) verwendet werden. Bei einer Ausführungsform kann die neue Versionsnummer wie beispielsweise V3 im Versionsidentifikatorfeld 582 gespeichert sein. Bei einer Ausführungsform kann das Diff-3-Feld 581 und die verbundene neue Versionsnummer (=V3) im Versionsidentifikatorfeld 582 in die Diff-Liste eingesetzt sein.
  • Bei einer Ausführungsform kann GPU 180 die Diff-Liste für die Seite ‚i‘ 540 bis zu Version V2 abfragen, während sie den VersionDataAcquire()-Prozess ausführt. Bei einer Ausführungsform kann die Diff-Liste 520 für die Seite ‚i‘ 540 bis zur Version V2 ein Diff-1-Feld 511 und ein verbundenes Versionsnummernfeld 512, das V1 gleicht und ein Diff-2-Feld 521 und ein verbundenes Versionsnummernfeld 522 das V2 gleicht, umfassen. Bei einer Ausführungsform kann GPU 180 die Diff-Liste 520 mit einer Startseite 501 verbunden mit einem Versionsnummernfeld 502, das V1 gleicht, zusammenführen. Bei einer Ausführungsform kann die Mergingoperation durch den Merginggenerator 530 repräsentiert werden. Bei einer Ausführungsform kann der resultierende Ausgang des Merginggenerators 530 mit dem Inhalt der Seite ‚i‘ 540 zusammengeführt werden.
  • Bei einer Ausführungsform kann die gemeinsam benutzte Mehrversionsdatenstruktur in vielen Programmierbereichen wie beispielsweise Spieleanwendungen verwendet werden. Bei einer Ausführungsform kann ein Aktualisieren auf gemeinsam benutzte Mehrversionsdaten eine neue Version der Daten logisch erzeugen, ohne Kohärenzverkehr zu verursachen. Neben dem Optimieren des Kohärenzverkehrs kann die Verwendung der gemeinsam benutzten Mehrversionsdaten die zeitraubenden Operationen wie beispielsweise explizites Marshalling und Unmarshalling von Daten vermeiden, da ein Zeiger auf gemeinsamen Speicher in unterschiedlichem physischen Adressraum von CPU- und GPU-Seite bedeutungsvoll sein kann.
  • Außerdem kann solch ein Ansatz das Pipelining von Daten zwischen CPU 110 und GPU 180 vereinfachen. Bei einer Ausführungsform könnte der Benutzer die Pipeline nicht aufrechterhalten und implementieren, was gewöhnlich die Quelle von Fehlern darstellt. Bei einer Ausführungsform kann ein gemeinsam benutztes System des virtuellen Speichers einschließlich einer CPU-GPU-Plattform Unterstützung für die Programmierbarkeit bereitstellen und Mehrversionsstrukturen zu einem System von gemeinsamem Speicher erweitern. Bei einer Ausführungsform können die nachfolgend beschriebenen gemeinsam benutzten Mehrversionsdatentechniken sowohl in diskreten als auch in integrierten GPU-Konfigurationen verwendet werden und deshalb das Programmieren von API über unterschiedliche GPU-Konfigurationen vereinheitlichen.
  • Eine Ausführungsform eines Computersystems 600, das die heterogenen Prozessoren umfasst, welche das gemeinsame Benutzen von in einem gemeinsam benutzten virtuellen Speicher gespeicherten Mehrversionsdaten unterstützen, ist in 6 gezeigt. Es wird Bezug genommen auf 6, das Computersystem 600 kann einen Allzweckprozessor (oder CPU) 602 einschließlich einem Single Instruction Multiple Data-(SIMD) -Prozessor und eine Grafikprozessoreinheit (GPU) 605 umfassen. CPU 602 kann bei einer Ausführungsform Verbesserungsoperationen zusätzlich zur Ausführung verschiedener anderer Tasks ausführen oder eine Befehlssequenz speichern, um Verbesserungsoperationen im maschinenlesbaren Speichermedium 625 bereitzustellen. Jedoch kann die Befehlssequenz ebenfalls im privaten CPU-Speicher 620 oder in irgendeinem anderen geeigneten Speichermedium gespeichert werden. Bei einer Ausführungsform kann CPU 602 mit einem CPU-Legacy-Compiler 603 und einem CPU-Verknüpfer/Lader 604 verbunden sein. Bei einer Ausführungsform kann GPU 605 mit einem proprietären GPU-Compiler 606 und GPU-Verknüpfer/Lader 607 verbunden sein.
  • Während eine separate Grafikprozessoreinheit GPU 605 in 6 abgebildet ist, kann bei einigen Ausführungsformen der Prozessor 602 verwendet werden, um als ein weiteres Beispiel Verbesserungsoperationen auszuführen. Prozessor 602, der das Computersystem 600 betreibt, kann ein oder mehrere Prozessorkerne gekoppelt mit Logik 630 sein. Logik 630 kann mit einem oder mehreren I/O-Geräten 660 gekoppelt sein, welche die Schnittstelle des Computersystems 600 bereitstellen können. Logik 630 könnte zum Beispiel bei einer Ausführungsform Chipsatz-Logik sein. Logik 630 ist mit Speicher 620 gekoppelt, der irgendeine Art von Speicher, einschließlich optischen, magnetischen oder Halbleiter-Speichers, sein kann. Grafikprozessor-Einheit 605 ist durch einen Framepuffer mit einer Anzeige 640 gekoppelt.
  • Bei einer Ausführungsform kann CPU 602 (hier Erzeuger) und GPU 605 (hier Verbraucher) das gemeinsame Benutzen der Mehrversionsdatenstruktur gespeichert im gemeinsamen Speicher 650 unterstützen. Bei einer Ausführungsform kann, wie oben beschrieben, CPU 602 Supportvorgänge oder Funktionen wie beispielsweise VersionDataRelease() unterstützen, um gemeinsam benutzte Mehrversionsdaten zu erzeugen und diese Daten im gemeinsamen Speicher 650 zu speichern. Bei einer anderen Ausführungsform können die gemeinsam benutzten Mehrversionsdaten auch im privaten CPU-Speicher 620 und/oder privaten GPU-Speicher 630 gespeichert sein. Bei einer Ausführungsform kann, wie oben beschrieben, GPU 605 (Verbraucher) Prozesse oder Funktionen wie beispielsweise VersionDataAcquire() unterstützen, um die gemeinsam benutzten Mehrversionsdaten zu erlangen.
  • Die hierin beschriebenen Grafikverarbeitungs-Techniken können in verschiedenen Hardware-Architekturen implementiert werden. Beispielsweise kann Grafikfunktionalität innerhalb eines Chipsatzes integriert sein. Alternativ kann ein getrennter Grafikprozessor verwendet werden. Als eine weitere Ausführungsform können die Grafikfunktionen durch einen Allzweckprozessor, einschließlich einem Mehrkernprozessor oder als eine Reihe von in einem maschinell lesbaren Datenträger gespeicherten Softwarebefehlen implementiert sein.

Claims (13)

  1. Ein Verfahren in einer Computerplattform, umfassend: Erzeugen (210) gemeinsamer Mehrversionsdaten in einem gemeinsamen virtuellen Mehrversionsspeicher unter Verwendung eines ersten Prozessors, wobei das Erzeugen der gemeinsamen Mehrversionsdaten die Erzeugung einer aktualisierten Version von Speicherseiten umfasst, wobei die aktualisierte Version von Speicherseiten einen Differenzinhalt aufweist, der unter Verwendung einer momentanen Versionsseite und einer früheren Versionsseite generiert wird; Speichern der gemeinsamen Mehrversionsdaten an einem physischen geheimen Speicherplatz des ersten Prozessors, umfassend die Speicherung des Differenzinhaltes an einem separaten Speicherplatz innerhalb des physischen Speicherplatzes des ersten Prozessors; und Erlangen der gemeinsamen Mehrversionsdaten mindestens teilweise unter Verwendung eines zweiten Prozessors, wobei die Computerplattform eine Vielzahl von heterogenen Prozessoren umfasst, die den ersten Prozessor und den zweiten Prozessor aufweist, wobei das Erlangen der gemeinsamen Mehrversionsdaten die Erzeugung von ersten zusammengeführten Inhalten durch Zusammenführen von Knoten einer Differenz-Liste, wobei die Knoten den Differenzinhalt und eine Versionsnummer aufweisen, von einer Version einer Startseite bis zu einer jüngsten Versionsnummer in die Startseite umfasst.
  2. Verfahren nach Anspruch 1, weiter umfassend das Erzeugen einer neuen Versionsnummer und das Speichern der neuen Versionsnummer mit dem Differenzinhalt an der separaten Speicherstelle innerhalb des gemeinsam benutzten virtuellen Speichers innerhalb vom physischen Speicherplatz des ersten Prozessors.
  3. Verfahren nach Anspruch 1, wobei das Erzeugen der gemeinsam benutzten Mehrversionsdaten das Verfolgen der Speicherseiten mit aktualisierter Version gespeichert im gemeinsam benutzten virtuellen Speicher innerhalb vom physischen Speicherplatz des ersten Prozessors umfasst.
  4. Verfahren nach Anspruch 3, wobei das Verfolgen der Speicherseiten mit aktualisierter Version das gemeinsame Benutzen der Speicherseiten mit aktualisierter Version im Schreibschutz-Modus bei Freigabe umfasst.
  5. Verfahren nach Anspruch 4, wobei das Verfolgen der Speicherseiten mit aktualisierter Version das Erzeugen einer Sicherungskopie der Speicherseiten mit aktualisierter Version in einem Verarbeiter umfasst, wobei der Verarbeiter generiert wird, indem die Speicherseiten mit aktualisierter Version im Schreibschutz-Modus bei Freigabe gemeinsam benutzt werden.
  6. Verfahren nach Anspruch 5, wobei das Verfolgen der Speicherseiten mit aktualisierter Version das Kennzeichen eines Zusatzspeichers umfasst, um anzuzeigen, dass die Speicherseiten mit aktualisierter Version modifiziert werden.
  7. Verfahren nach Anspruch 8, weiter umfassend das Erlangen des ersten zusammengeführten Inhaltes, um die gemeinsam benutzten Mehrversionsdaten zu erlangen.
  8. Eine Computerplattform, umfassend: einen ersten Prozessor, wobei der erste Prozessor eingerichtet ist, gemeinsame Mehrversionsdaten zu erzeugen, einen gemeinsamen virtuellen Speicher und einen zweiten Prozessor, wobei der zweite Prozessor eingerichtet ist, die gemeinsamen Mehrversionsdaten mindestens teilweise unter Verwendung eines zweiten Prozessors zu erlangen, wobei mindestens ein Teil eines geheimen Speichers des zweiten Prozessors verwendet wird, um den gemeinsamen virtuellen Speicher zu speichern, der die gemeinsam benutzten Mehrversionsdaten unterstützt, wobei die Computerplattform eine Vielzahl von heterogenen Prozessoren umfasst, welche den ersten Prozessor und den zweiten Prozessor aufweist, wobei der erste Prozessor eingerichtet ist, eine aktualisierte Version von Speicherseiten zu generieren, und wobei die aktualisierte Version von Speicherseiten einen Differenzinhalt aufweist, der unter Verwendung einer momentanen Versionsseite und einer früheren Versionsseite generiert wurde, wobei der erste Prozessor eingerichtet ist, den Differenzinhalt an einer separaten Speicherstelle innerhalb eines physischen gemeinsamen Speichers zu speichern, der vom ersten Prozessor und zweiten Prozessor gemeinsam benutzt wird, wobei der zweite Prozessor eingerichtet ist, erste zusammengeführte Inhalte durch das Zusammenführen von Knoten einer Differenz-Liste von einer Version einer Startseite zu einer jüngsten Versionsnummer in die Startseite zu generieren, wobei die Knoten den Differenzinhalt und eine Versionsnummer aufweisen, und der zweite Prozessor eingerichtet ist, die ersten zusammengeführten Inhalte zu erhalten, um die gemeinsam benutzten Mehrversionsdaten zu erhalten.
  9. Computerplattform nach Anspruch 8, wobei der erste Prozessor weiter eine neue Versionsnummer generiert und die neue Versionsnummer mit dem Differenzinhalt in der separaten Speicherstelle innerhalb des physischen gemeinsam benutzten Speichers gespeichert wird.
  10. Computerplattform nach Anspruch 8, wobei der erste Prozessor die Speicherseiten mit aktualisierter Version, die in dem physischen gemeinsam genutzten Speicher gespeichert sind, verfolgt.
  11. Computerplattform nach Anspruch 10, wobei der erste Prozessor die Speicherseiten mit aktualisierter Version im Schreibschutz-Modus bei Freigabe teilt.
  12. Computerplattform nach Anspruch 11, wobei der erste Prozessor eine Back-up-Kopie der Speicherseiten mit aktualisierter Version in einem Verarbeiter erzeugt, und wobei der Verarbeiter generiert wird, indem die Speicherseiten mit aktualisierter Version im Schreibschutz-Modus bei Freigabe gemeinsam benutzt werden.
  13. Computerplattform nach Anspruch 12, wobei der erste Prozessor einen Zusatzspeicher kennzeichnet, um anzuzeigen, dass die Speicherseiten mit aktualisierter Version modifiziert werden.
DE102010051477.2A 2009-12-21 2010-11-15 Verfahren in einer computerplattform sowie computerplattform zum gemeinsamen benutzen von virtuellen speicherbasierten mehrversionsdaten zwischen den verschiedenartigen prozessoren der computerplattform Active DE102010051477B4 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US12/643,803 2009-12-21
US12/643,803 US8868848B2 (en) 2009-12-21 2009-12-21 Sharing virtual memory-based multi-version data between the heterogenous processors of a computer platform

Publications (2)

Publication Number Publication Date
DE102010051477A1 DE102010051477A1 (de) 2011-06-22
DE102010051477B4 true DE102010051477B4 (de) 2023-08-03

Family

ID=43531604

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102010051477.2A Active DE102010051477B4 (de) 2009-12-21 2010-11-15 Verfahren in einer computerplattform sowie computerplattform zum gemeinsamen benutzen von virtuellen speicherbasierten mehrversionsdaten zwischen den verschiedenartigen prozessoren der computerplattform

Country Status (6)

Country Link
US (2) US8868848B2 (de)
KR (1) KR101240092B1 (de)
CN (1) CN102103567B (de)
DE (1) DE102010051477B4 (de)
GB (1) GB2476360B (de)
TW (2) TWI550412B (de)

Families Citing this family (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9331869B2 (en) * 2010-03-04 2016-05-03 Nvidia Corporation Input/output request packet handling techniques by a device specific kernel mode driver
US9633407B2 (en) * 2011-07-29 2017-04-25 Intel Corporation CPU/GPU synchronization mechanism
CN102323917B (zh) * 2011-09-06 2013-05-15 中国人民解放军国防科学技术大学 一种基于共享内存实现多进程共享gpu的方法
CN103946824B (zh) 2011-11-22 2016-08-24 英特尔公司 一种用于非易失性随机访问存储器的访问控制方法、装置及系统
KR101355105B1 (ko) * 2012-01-03 2014-01-23 서울대학교산학협력단 캐시 일관성 보장을 위한 공유 가상 메모리 관리 장치
US9009419B2 (en) * 2012-07-31 2015-04-14 Advanced Micro Devices, Inc. Shared memory space in a unified memory model
US9378572B2 (en) 2012-08-17 2016-06-28 Intel Corporation Shared virtual memory
US9373182B2 (en) * 2012-08-17 2016-06-21 Intel Corporation Memory sharing via a unified memory architecture
CN103020149B (zh) * 2012-11-22 2016-01-20 用友网络科技股份有限公司 共享数据更新装置和共享数据更新方法
US10437591B2 (en) 2013-02-26 2019-10-08 Qualcomm Incorporated Executing an operating system on processors having different instruction set architectures
JP2014200075A (ja) * 2013-03-15 2014-10-23 株式会社リコー コンピュータシステム、配信制御システム、配信制御方法、及びプログラム
US9460481B2 (en) * 2013-03-25 2016-10-04 Vmware, Inc. Systems and methods for processing desktop graphics for remote display
CN104111897B (zh) * 2013-04-16 2017-06-13 华为技术有限公司 一种数据处理方法、装置及计算机系统
US20150170317A1 (en) * 2013-12-18 2015-06-18 Eric C. Samson Load Balancing for Consumer-Producer and Concurrent Workloads
US9372752B2 (en) * 2013-12-27 2016-06-21 Intel Corporation Assisted coherent shared memory
KR102114245B1 (ko) 2014-04-10 2020-06-05 삼성전자 주식회사 그래픽스 상태 관리 장치 및 방법
US9507726B2 (en) 2014-04-25 2016-11-29 Apple Inc. GPU shared virtual memory working set management
US9563571B2 (en) 2014-04-25 2017-02-07 Apple Inc. Intelligent GPU memory pre-fetching and GPU translation lookaside buffer management
CN104281636B (zh) * 2014-05-05 2017-09-08 神华集团有限责任公司 海量报表数据并发分布式处理方法
US9342384B1 (en) * 2014-12-18 2016-05-17 Intel Corporation Function callback mechanism between a central processing unit (CPU) and an auxiliary processor
US10019373B2 (en) 2014-12-19 2018-07-10 Mediatek Inc. Memory management method for supporting shared virtual memories with hybrid page table utilization and related machine readable medium
DE102016106939A1 (de) 2015-04-17 2016-10-20 Suunto Oy Eingebettetes Rechengerät
GB2537420B (en) * 2015-04-17 2018-11-28 Suunto Oy Embedded computing device comprising processing units interfaced with a shared information space
CN105022716A (zh) * 2015-06-24 2015-11-04 浪潮电子信息产业股份有限公司 一种多数据链路的gpu服务器
CN105159610B (zh) * 2015-09-01 2018-03-09 浪潮(北京)电子信息产业有限公司 大规模数据处理系统及方法
US10489881B2 (en) * 2017-06-30 2019-11-26 H3 Platform Inc. Direct memory access for co-processor memory
US11436143B2 (en) * 2017-12-22 2022-09-06 Alibaba Group Holding Limited Unified memory organization for neural network processors
CN109308196B (zh) * 2018-08-22 2020-04-14 腾讯科技(深圳)有限公司 一种多机型设备复用方法、装置及存储介质
KR102158877B1 (ko) * 2018-12-17 2020-09-23 성균관대학교 산학협력단 그래픽 프로세싱 유닛 상에서 작업을 프로세싱하기 위한 시스템 및 방법
US11693837B2 (en) * 2020-09-18 2023-07-04 Databricks, Inc. Model ML registry and model serving
US11782835B2 (en) * 2020-11-30 2023-10-10 Electronics And Telecommunications Research Institute Host apparatus, heterogeneous system architecture device, and heterogeneous system based on unified virtual memory

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080109795A1 (en) 2006-11-02 2008-05-08 Nvidia Corporation C/c++ language extensions for general-purpose graphics processing unit

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5745906A (en) * 1995-11-14 1998-04-28 Deltatech Research, Inc. Method and apparatus for merging delta streams to reconstruct a computer file
US6341339B1 (en) * 1998-03-26 2002-01-22 Compaq Computer Corporation Apparatus and method for maintaining data coherence within a cluster of symmetric multiprocessors
US6457021B1 (en) * 1998-08-18 2002-09-24 Microsoft Corporation In-memory database system
US6574749B1 (en) * 1999-10-29 2003-06-03 Nortel Networks Limited Reliable distributed shared memory
US7437662B1 (en) * 2001-06-15 2008-10-14 Oracle International Corporation Representing deltas between XML versions using XSLT
US7287034B2 (en) * 2003-05-08 2007-10-23 Oracle International Corporation On-demand multi-version data dictionary to support distributed applications
US8509051B2 (en) 2003-09-02 2013-08-13 Qualcomm Incorporated Multiplexing and transmission of multiple data streams in a wireless multi-carrier communication system
US20050071578A1 (en) 2003-09-25 2005-03-31 International Business Machines Corporation System and method for manipulating data with a plurality of processors
US7921419B2 (en) * 2004-05-12 2011-04-05 Oracle International Corporation Method and mechanism for managing incompatible changes in a distributed system
US7818513B2 (en) * 2004-08-10 2010-10-19 Oracle America, Inc. Coordinating accesses to shared objects using transactional memory mechanisms and non-transactional software mechanisms
US20060112226A1 (en) 2004-11-19 2006-05-25 Hady Frank T Heterogeneous processors sharing a common cache
US20070088766A1 (en) * 2005-10-17 2007-04-19 Oracle International Corporation Method and system for capturing and storing multiple versions of data item definitions
US7516301B1 (en) * 2005-12-16 2009-04-07 Nvidia Corporation Multiprocessor computing systems with heterogeneous processors
US7404056B1 (en) * 2005-12-07 2008-07-22 Nvidia Corporation Virtual copying scheme for creating multiple versions of state information
GB0606012D0 (en) * 2006-03-25 2006-05-03 Zenopia Ltd Data storage
US7542977B2 (en) * 2006-06-29 2009-06-02 Intel Corporation Transactional memory with automatic object versioning
US8154554B1 (en) * 2006-07-28 2012-04-10 Nvidia Corporation Unified assembly instruction set for graphics processing
JP2008158811A (ja) 2006-12-22 2008-07-10 Toshiba Corp 情報処理装置および情報処理方法
US7941791B2 (en) * 2007-04-13 2011-05-10 Perry Wang Programming environment for heterogeneous processor resource integration
US7996359B2 (en) * 2008-06-16 2011-08-09 International Business Machines Corporation Managing multi-node multi-version systems
US8531471B2 (en) 2008-11-13 2013-09-10 Intel Corporation Shared virtual memory

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080109795A1 (en) 2006-11-02 2008-05-08 Nvidia Corporation C/c++ language extensions for general-purpose graphics processing unit

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Sorin Daniel, Martin Milo, Hill Mark, Wood David: "Fast Checkpoint/Recovery to Support Kilo-Instruction Speculation and Hardware Fault Tolerance", Part of CS Technical Reports, CitationTR1420, 2000, im Internet:<URL: http://digital.library.wisc.edu/1793/60248>

Also Published As

Publication number Publication date
KR101240092B1 (ko) 2013-03-06
CN102103567A (zh) 2011-06-22
TW201512856A (zh) 2015-04-01
US20150019825A1 (en) 2015-01-15
GB2476360B (en) 2012-10-31
TWI550412B (zh) 2016-09-21
US20110153957A1 (en) 2011-06-23
US9710396B2 (en) 2017-07-18
GB2476360A (en) 2011-06-22
US8868848B2 (en) 2014-10-21
TWI451270B (zh) 2014-09-01
CN102103567B (zh) 2014-06-04
KR20110073339A (ko) 2011-06-29
GB201020733D0 (en) 2011-01-19
TW201140334A (en) 2011-11-16
DE102010051477A1 (de) 2011-06-22

Similar Documents

Publication Publication Date Title
DE102010051477B4 (de) Verfahren in einer computerplattform sowie computerplattform zum gemeinsamen benutzen von virtuellen speicherbasierten mehrversionsdaten zwischen den verschiedenartigen prozessoren der computerplattform
DE112012000693B4 (de) Ausführen einer Vielzahl von Instanzen einer Anwendung
DE112005000706B4 (de) Verfahren und System zum Bereitstellen von Multi-Threading auf Nutzerebene
DE112011101364B4 (de) Fehlerbehebung in Multithread-Code
DE112009000741B4 (de) Vektorbefehle zum Ermöglichen von effizienter Synchronisation und parallelen Reduktionsoperationen
DE112006002237B4 (de) Verfahren zur selbstinitiierenden Synchronisierung in einem Computersystem
DE112004002848B4 (de) Mikroprozessor und Verfahren zum Verifizieren einer Speicherdatei in einem derartigen Mikroprozessor
DE112013001711T5 (de) Optimieren von Unterroutine-Aufrufen auf der Grundlage der Architekturebene einer aufgerufenen Unterroutine
DE112011105042B4 (de) Indikatoren zur Aufzeichnung einer letzten Verzweigung für einen Transaktionsspeicher
DE202016008042U1 (de) Infrastruktur für Hosting und Publishing von Softwarepaketen
DE202014010938U1 (de) Omega-Namen: Namenserzeugung und -ableitung
DE112010003750T5 (de) Hardware für parallele Befehlslistenerzeugung
DE112011100258T5 (de) Durchführen von aggressiven Codeoptimierungen mit einer Fähigkeit zum Annulieren derdurch die aggressiven Optimierungen vorgenommenen Änderungen
DE102009012766A1 (de) Ein Zugriffssperrenvorgang, um atomare Aktualisierungen zu einem geteilten Speicher zu ermöglichen
DE112012000303T5 (de) Dynamische binäre Optimierung
DE102018109538A1 (de) Techniken zum umfassenden Synchronisieren einer Ausführung von Threads
DE112019001821B4 (de) Verfahren und vorrichtung zur wiedergabe eines aktivierungsrahmens für unterbrechungsfreie speicherbereinigung (pause-less garbage collection)
DE69727177T2 (de) Emulation von asynchronen Signalen mit Verzweigungsmechanismus
DE102012217315A1 (de) Verwenden von nativen Routinen an Stelle von emulierten Routinen in einer emulierten Anwendung
DE102013019333A1 (de) Registerzuweisung für als cluster vorliegende mehrebenen-registerdaten
DE102018207314A1 (de) Software-definierte mikrodienste
DE102014003687A1 (de) Vorrichtung und verfahren zum schutz von digitalem inhalt
DE102013015658A1 (de) System und Verfahren zum Starten von aufrufbaren Funktionen
DE112016004301T5 (de) Vornehmen einer flüchtigen Fehleratomarität von Isolierungstransaktionen in einem nichtflüchtigen Speicher
DE102018127317B3 (de) Verfahren und vorrichtungen zur computerimplementierten erzeugung eines ausführbaren programmcodes und zur ausführung eines ausführbaren programmcodes

Legal Events

Date Code Title Description
R079 Amendment of ipc main class

Free format text: PREVIOUS MAIN CLASS: G06F0012080000

Ipc: G06F0009450000

R016 Response to examination communication
R130 Divisional application to

Ref document number: 102010064603

Country of ref document: DE

R079 Amendment of ipc main class

Free format text: PREVIOUS MAIN CLASS: G06F0009450000

Ipc: G06F0009440000

R016 Response to examination communication
R016 Response to examination communication
R018 Grant decision by examination section/examining division