DE102010051477A1 - Das gemeinsame Benutzen von virtuellen speicherbasierten Mehrversionsdaten zwischen den verschiedenartigen Prozessoren einer Computerplattform - Google Patents

Das gemeinsame Benutzen von virtuellen speicherbasierten Mehrversionsdaten zwischen den verschiedenartigen Prozessoren einer Computerplattform Download PDF

Info

Publication number
DE102010051477A1
DE102010051477A1 DE102010051477A DE102010051477A DE102010051477A1 DE 102010051477 A1 DE102010051477 A1 DE 102010051477A1 DE 102010051477 A DE102010051477 A DE 102010051477A DE 102010051477 A DE102010051477 A DE 102010051477A DE 102010051477 A1 DE102010051477 A1 DE 102010051477A1
Authority
DE
Germany
Prior art keywords
version
processor
memory
shared
computer platform
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
DE102010051477A
Other languages
English (en)
Other versions
DE102010051477B4 (de
Inventor
Ying Gao
Hu Chen
Shoumeng Yan
Xiaocheng Zhou
Sai Luo
Bratin Calif. 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 Computersystem kann eine Computerplattform und Eingabe-/Ausgabegeräte umfassen. Die Computerplattform kann eine Vielzahl von heterogenen Prozessoren umfassen, die einen Hauptprozessor (CPU) und einen Grafikprozessor (GPU) umfasst, und einen gemeinsam benutzten virtuellen Speicher unterstützt durch einen physischen privaten Speicherplatz von mindestens einem heterogenen Prozessor oder einem physischen gemeinsam genutzten Speicher, der durch den heterogenen Prozessor gemeinsam benutzt wird. Die CPU (Erzeuger) kann gemeinsam benutzte Mehrversionsdaten erzeugen und diese gemeinsam benutzten Mehrversionsdaten in dem physischen privaten Speicherplatz oder dem physischen gemeinsam genutzten Speicher speichern. Die GPU (Verbraucher) kann die gemeinsam benutzten Mehrversionsdaten erlangen oder darauf zugreifen.

Description

  • HINTERGRUND
  • 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.
  • KURZE BESCHREIBUNG DER ZEICHNUNGEN
  • Die hierin beschriebene Erfindung wird in den beigefügten 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 UVP 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 UVP 139 auf ,Schreibschutz'-Modus setzen, um das Verfolgen von aktualisierten (oder modifizierten oder ungültigen) Seiten wie beispielsweise UVP 139 zu ermöglichen. Bei einer Ausführungsform kann CPU 110 einen Verarbeiter verwenden, um eine Datensicherungskopie von UVP 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 (20)

  1. Ein Verfahren in einer Computerplattform, umfassend: das Erzeugen gemeinsam benutzter Mehrversionsdaten in einem gemeinsam benutzten virtuellen Mehrversionsspeicher unter Verwendung eines ersten Prozessors, das Speichern der gemeinsam benutzten Mehrversionsdaten in einem physischen privaten Speicherplatz des ersten Prozessors und das Erlangen der gemeinsam benutzten 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 einschließt.
  2. Verfahren nach Anspruch 1, wobei das Erzeugen der gemeinsam benutzten Mehrversionsdaten die Erzeugung von Speicherseiten mit aktualisierter Version umfasst, wobei die Speicherseiten mit aktualisierter Version einen Differenzinhalt umfassen, der unter Verwendung einer gegenwärtigen Versionsseite und einer Vorgängerversionsseite generiert wird.
  3. Verfahren nach Anspruch 2, wobei das Erzeugen der gemeinsam benutzten Mehrversionsdaten die Speicherung des Differenzinhaltes in einem separaten Speicherplatz innerhalb des physischen Speicherplatzes des ersten Prozessors umfasst.
  4. Verfahren nach Anspruch 3, 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.
  5. Verfahren nach Anspruch 2, 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.
  6. Verfahren nach Anspruch 5, wobei das Verfolgen der Speicherseiten mit aktualisierter Version das gemeinsame Benutzen der Speicherseiten mit aktualisierter Version im Schreibschutz-Modus bei Freigabe umfasst.
  7. Verfahren nach Anspruch 6, 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.
  8. Verfahren nach Anspruch 7, wobei das Verfolgen der Speicherseiten mit aktualisierter Version das Kennzeichen eines Zusatzspeichers umfasst, um anzuzeigen, dass die Speicherseiten mit aktualisierter Version modifiziert werden.
  9. Verfahren nach Anspruch 1, wobei das Erlangen der gemeinsam benutzten Mehrversionsdaten zuerst die Erzeugung von zusammengeführtem Inhalt durch das Zusammenführen von Knoten einer Diff-Liste von einer Version einer Startseite zu einer kürzlichen Versionsnummer in die Startseite umfasst.
  10. Verfahren nach Anspruch 9, weiter umfassend das Erlangen des ersten zusammengeführten Inhaltes, um die gemeinsam benutzten Mehrversionsdaten zu erlangen.
  11. Eine Computerplattform, umfassend: ein erster Prozessor, wobei der erste Prozessor gemeinsam benutzte Mehrversionsdaten erzeugt, ein gemeinsam benutzter virtueller Speicher und ein zweiter Prozessor, wobei der zweite Prozessor die gemeinsam benutzten Mehrversionsdaten mindestens teilweise unter Verwendung eines zweiten Prozessors erlangt, wobei mindestens ein Teil eines privaten Speichers des zweiten Prozessors verwendet wird, um den gemeinsam benutzten 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 einschließt.
  12. Computerplattform nach Anspruch 11, wobei der erste Prozessor Speicherseiten mit aktualisierter Version generiert, und wobei die Speicherseiten mit aktualisierter Version einen Differenzinhalt umfassen, der unter Verwendung einer gegenwärtigen Versionsseite und einer Vorgängerversionsseite generiert wird.
  13. Computerplattform nach Anspruch 12, wobei der erste Prozessor den Differenzinhalt in einer separaten Speicherstelle innerhalb eines physischen gemeinsam benutzten Speichers speichert, der vom ersten Prozessor und zweiten Prozessor gemeinsam benutzt wird.
  14. Computerplattform nach Anspruch 13, 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.
  15. Computerplattform nach Anspruch 12, wobei der erste Prozessor die Speicherseiten mit aktualisierter Version, die in dem physischen gemeinsam genutzten Speicher gespeichert sind, verfolgt.
  16. Computerplattform nach Anspruch 15, wobei der erste Prozessor die Speicherseiten mit aktualisierter Version im Schreibschutz-Modus bei Freigabe teilt.
  17. Computerplattform nach Anspruch 16, 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.
  18. Computerplattform nach Anspruch 17, wobei der erste Prozessor einen Zusatzspeicher kennzeichnet, um anzuzeigen, dass die Speicherseiten mit aktualisierter Version modifiziert werden.
  19. Computerplattform nach Anspruch 1, wobei der zweite Prozessor zuerst zusammengeführten Inhalt durch das Zusammenführen von Knoten einer Diff-Liste von einer Version einer Startseite zu einer kürzlichen Versionsnummer in die Startseite generiert.
  20. Computerplattform nach Anspruch 19, wobei der zweite Prozessor den zuerst zusammengeführten Inhalt erlangt, um die gemeinsam benutzten Mehrversionsdaten zu erlangen.
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 US8868848B2 (en) 2009-12-21 2009-12-21 Sharing virtual memory-based multi-version data between the heterogenous processors of a computer platform
US12/643,803 2009-12-21

Publications (2)

Publication Number Publication Date
DE102010051477A1 true DE102010051477A1 (de) 2011-06-22
DE102010051477B4 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) TWI451270B (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的方法
WO2013077867A1 (en) * 2011-11-22 2013-05-30 Intel Corporation Access control for non-volatile random access memory across platform agents
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
US9373182B2 (en) * 2012-08-17 2016-06-21 Intel Corporation Memory sharing via a unified memory architecture
US9378572B2 (en) 2012-08-17 2016-06-28 Intel Corporation Shared virtual memory
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 삼성전자 주식회사 그래픽스 상태 관리 장치 및 방법
US9563571B2 (en) 2014-04-25 2017-02-07 Apple Inc. Intelligent GPU memory pre-fetching and GPU translation lookaside buffer management
US9507726B2 (en) 2014-04-25 2016-11-29 Apple Inc. GPU shared virtual memory working set 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
GB2542988B (en) * 2015-04-17 2019-11-13 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

Family Cites Families (22)

* 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
US8134566B1 (en) * 2006-07-28 2012-03-13 Nvidia Corporation Unified assembly instruction set for graphics processing
US20080109795A1 (en) * 2006-11-02 2008-05-08 Nvidia Corporation C/c++ language extensions for general-purpose graphics processing unit
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
US8397241B2 (en) 2008-11-13 2013-03-12 Intel Corporation Language level support for shared virtual memory

Also Published As

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

Similar Documents

Publication Publication Date Title
DE102010051477A1 (de) Das gemeinsame Benutzen von virtuellen speicherbasierten Mehrversionsdaten zwischen den verschiedenartigen Prozessoren einer Computerplattform
DE112009000741B4 (de) Vektorbefehle zum Ermöglichen von effizienter Synchronisation und parallelen Reduktionsoperationen
DE112012000693B4 (de) Ausführen einer Vielzahl von Instanzen einer Anwendung
DE102013017509A1 (de) Effiziente Speichervirtualisierung in mehrsträngigen Verarbeitungseinheiten
DE102013017510A1 (de) Effiziente Speichervirtualisierung in mehrsträngigen Verarbeitungseinheiten
DE112013001711T5 (de) Optimieren von Unterroutine-Aufrufen auf der Grundlage der Architekturebene einer aufgerufenen Unterroutine
DE112012000214T5 (de) Technik zur inter-prozeduralen Speicheradressenraumoptimierung in GPU-Rechencompiler
DE102013017511A1 (de) Effiziente speichervirtualisierung in mehrsträngigen verarbeitungseinheiten
DE112010003750T5 (de) Hardware für parallele Befehlslistenerzeugung
DE10297624T5 (de) Steuerung von Kompatibilitätsgraden von Binärcode-Übersetzungen zwischen Befehlssatzarchitekturen
DE102009012766A1 (de) Ein Zugriffssperrenvorgang, um atomare Aktualisierungen zu einem geteilten Speicher zu ermöglichen
DE102013202173A1 (de) Einheitliche Lade-Verarbeitung für Teilsätze von parallelen Threads
DE112010005821T5 (de) Kontextwechsel
DE102018109538A1 (de) Techniken zum umfassenden Synchronisieren einer Ausführung von Threads
DE102020101814A1 (de) Effiziente ausführung anhand von aufgabengraphen festgelegter arbeitslasten
DE102013019333A1 (de) Registerzuweisung für als cluster vorliegende mehrebenen-registerdaten
DE102013224160A1 (de) System, Verfahren und Computer-Programm-Produkt zum Optimieren des Managements von Thread-Stapel-Speicher
DE102013020485A1 (de) Technik zur Ausführung von Speicherzugriffsoperationen über eine Textur-Hardware
DE112020000865T5 (de) Speicherverwaltungssystem
DE102013020967A1 (de) Technik zur Ausführung von Speicherzugriffsoperationen über eine Textur-Hardware
DE102013209643A1 (de) Mechanismus für optimierte Nachrichtenaustauschdatenübertragung zwischen Nodelets innerhalb eines Plättchens
DE102016110195A1 (de) Erzeugen von Code in statisch typisierten Programmiersprachen für eine dynamisch typisierte array-basierte Sprache
DE102009060299A1 (de) Das Einführen von Transaktionen, um die Virtualisierung eines physischen Geräte-Controllers zu unterstützen
DE102022129946A1 (de) Verfahren und vorrichtungen zum bestimmen eines verfeinerten kontexts für softwarefehlererkennung und - korrektur
DE102018207314A1 (de) Software-definierte mikrodienste

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