DE102018132781A1 - Heterogenes Rechensystem, welches konfiguriert ist, um eine Cachekohärenz adaptiv zu steuern - Google Patents

Heterogenes Rechensystem, welches konfiguriert ist, um eine Cachekohärenz adaptiv zu steuern Download PDF

Info

Publication number
DE102018132781A1
DE102018132781A1 DE102018132781.1A DE102018132781A DE102018132781A1 DE 102018132781 A1 DE102018132781 A1 DE 102018132781A1 DE 102018132781 A DE102018132781 A DE 102018132781A DE 102018132781 A1 DE102018132781 A1 DE 102018132781A1
Authority
DE
Germany
Prior art keywords
processor
kernels
gpu
cpu
group
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.)
Pending
Application number
DE102018132781.1A
Other languages
English (en)
Inventor
Hyunjun Jang
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.)
Samsung Electronics Co Ltd
Original Assignee
Samsung Electronics Co Ltd
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 Samsung Electronics Co Ltd filed Critical Samsung Electronics Co Ltd
Publication of DE102018132781A1 publication Critical patent/DE102018132781A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • 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/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0817Cache consistency protocols using directory methods
    • 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/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • 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/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/084Multiuser, multiprocessor or multiprocessing cache systems with a shared cache
    • 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/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0842Multiuser, multiprocessor or multiprocessing cache systems for multiprocessing or multitasking
    • 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/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • 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
    • 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/545Interprogram communication where tasks reside in different layers, e.g. user- and kernel-space
    • 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/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0817Cache consistency protocols using directory methods
    • G06F12/0824Distributed directories, e.g. linked lists of caches
    • 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/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0831Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/509Offload
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1024Latency reduction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1028Power efficiency
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/62Details of cache specific to multiprocessor cache arrangements
    • G06F2212/621Coherency control relating to peripheral accessing, e.g. from DMA or I/O device
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

Ein heterogenes Rechensystem (100, 200, 300a, 300b, 300c, 300d, 400, 600) weist einen ersten Prozessor (110, 310a, 310b, 310c, 310d, 410, 510, 610, 710) und einen zweiten Prozessor (120, 320a, 320b, 320c, 320d, 420, 520, 620, 720) auf, welche heterogen sind. Der zweite Prozessor (120, 320a, 320b, 320c, 320d, 420, 520, 620, 720) ist konfiguriert, um nacheinander folgend eine Mehrzahl von Kernels auszuführen, welche von dem ersten Prozessor (110, 310a, 310b, 310c, 310d, 410, 510, 610, 710) abgeladen sind. Ein Kohärenzcontroller (130, 230, 330a, 330b, 330c, 430) ist konfiguriert, um jeden der Mehrzahl von Kernels in eine einer ersten Gruppe und einer zweiten Gruppe zu klassifizieren basierend auf Attributen von Befehlen, welche in jedem der Mehrzahl von Kernels enthalten sind, bevor die Mehrzahl von Kernels ausgeführt wird, und ist ferner konfiguriert, um einen der Mehrzahl von Kernels von der zweiten Gruppe zu der ersten Gruppe zu reklassifizieren basierend auf einer Transaktion, welche zwischen dem ersten Prozessor (110, 310a, 310b, 310c, 310d, 410, 510, 610, 710) und dem zweiten Prozessor (120, 320a, 320b, 320c, 320d, 420, 520, 620, 720) während der Ausführung des einen der Mehrzahl von Kernels erzeugt wird.

Description

  • QUERVERWEIS AUF VERWANDTE ANMELDUNGEN
  • Diese Anmeldung beansprucht die Priorität der koreanischen Patentanmeldung Nummer 10-2018-0009400 , welche am 25. Januar 2018 beim koreanischen Amt für gewerblichen Rechtsschutz (Korean Intellectual Property Office) eingereicht wurde, deren Offenbarung hierin in ihrer Gesamtheit durch Bezugnahme miteingebunden ist.
  • HINTERGRUND
  • Ausführungsformen des erfinderischen Konzepts, welches hierin beschrieben ist, beziehen sich auf heterogene Rechensysteme, welche unterschiedliche Arten von Prozessoren aufweisen, und genauer auf ein Steuern einer Cachekohärenz in heterogenen Rechensystemen.
  • Da die Halbleitertechnologie voranschreitet, werden Rechensysteme, welche eine Mehrzahl von Prozessoren aufweisen, aktiv untersucht. Insbesondere weitet sich ein Anwendungsbereich eines heterogenen Rechensystems aus, welches nichthomogene Prozessoren, jedoch heterogene Prozessoren aufweist, basierend auf verschiedenen Faktoren, einschließlich der Möglichkeit, komplizierte und verschiedene Operationen zu verarbeiten, der Zunahme an Anforderungen eines Nutzers etc. Ein heterogenes Rechensystem kann im Allgemeinen eine zentrale Verbindungseinheit (CPU = Central Processing Unit = zentrale Verbindungseinheit) und eine Grafikverarbeitungseinheit (GPU = Graphic Processing Unit = Grafikverarbeitungseinheit) aufweisen.
  • Die Zuweisung von Aufgaben beziehungsweise Tasks kann wichtig sein, um die Berechnungsfähigkeit von heterogenen Rechensystemen zu verbessern. Relativ komplizierte Operationen wie beispielsweise eine Grafikverarbeitung werden typischerweise durch die GPU durchgeführt. Eine Verarbeitung eines Programms und/oder Kernel durch die GPU kann in einer GPU-Stufe nicht vollendet werden, und ein Ergebnis der Verarbeitung des Programms und/oder Kernels durch die GPU kann mit der CPU geteilt bzw. gemeinsam verwendet werden. In diesem Prozess können, da Daten zwischen der CPU und der GPU geteilt werden, Cachekohärenzprobleme auftreten.
  • Wenn die Cachekohärenz eines heterogenen Rechensystems betrachtet wird, wird eine Arbeitslast eines Programms und/oder Kernel, welches/welcher durch die GPU zu verarbeiten ist, typischerweise nicht betrachtet. Im Allgemeinen wird die Cachekohärenz unter Berücksichtigung eines Cachetreffers oder eines Cachefehlschlages gesteuert. Demnach kann, wenn ein Datenteilen zwischen der CPU und der GPU häufig ist, ein Programm und/oder ein Kernel in einer nicht Cache-kohärenten Art und Weise verarbeitet werden. Wenn Daten selten oder wenig häufig zwischen der CPU und der GPU geteilt werden, kann ein Programm und/oder ein Kernel in einer Cache-kohärenten Art und Weise verarbeitet werden. Die oben beschriebene Datenverarbeitung und Cacheverwaltung kann hinsichtlich von Ressourcenverwaltung, Leistungsverwaltung und Leistungsfähigkeit eines Systems nicht wünschenswert sein.
  • KURZFASSUNG
  • Ausführungsformen des erfinderischen Konzepts sehen ein heterogenes Rechensystem vor, in welchem Cachekohärenz basierend auf Daten, welche durch eine CPU und eine GPU geteilt beziehungsweise gemeinsam verwendet werden, adaptiv gesteuert wird.
  • Gemäß einigen Ausführungsformen des erfinderischen Konzepts kann ein heterogenes Rechensystem einen ersten Prozessor, einen zweiten Prozessor, welcher konfiguriert ist, um nacheinander folgend eine Mehrzahl von Kernels auszuführen, welche von dem ersten Prozessor abgeladen sind, wobei der erste Prozessor und der zweite Prozessor heterogen sind, und einen Kohärenzcontroller aufweisen, welcher konfiguriert ist, um jeden der Mehrzahl von Kernels in eine einer ersten Gruppe und einer zweiten Gruppe basierend auf Attributen von Befehlen zu klassifizieren, welche in jedem der Mehrzahl von Kernels enthalten sind, bevor die Mehrzahl von Kernels ausgeführt wird. Der Kohärenzcontroller ist ferner konfiguriert, um einen der Mehrzahl von Kernels aus der zweiten Gruppe zu der ersten Gruppe basierend auf einer Transaktion zwischen dem ersten Prozessor und dem zweiten Prozessor während der Ausführung des einen der Mehrzahl von Kernels zu reklassifizieren.
  • Gemäß anderen Ausführungsformen des erfinderischen Konzepts kann ein Verfahren zum Betreiben eines heterogenen Rechensystems, welches einen ersten Prozessor und einen zweiten Prozessor aufweist, welche heterogen sind, ein Abladen einer Mehrzahl von Kernels von dem ersten Prozessor zu dem zweiten Prozessor aufweisen, ein Klassifizieren jedes der Mehrzahl von Kernels in eine einer ersten Gruppe und einer zweiten Gruppe basierend auf Attributen von Befehlen, welche in jedem der Mehrzahl von Kernels enthalten sind, ein nacheinander folgendes Ausführen der Mehrzahl von Kernels unter Verwendung des zweiten Prozessors, wobei erste eine der Mehrzahl von Kernels, welche zu der ersten Gruppe gehören, in einer Cache-kohärenten Art und Weise ausgeführt werden können, und zweite eine der Mehrzahl von Kernels, welche zu der zweiten Gruppe gehören, in einer nicht Cache-kohärenten Art und Weise ausgeführt werden können, und ein Reklassifizieren eines der zweiten einen der Mehrzahl von Kernels aus der zweiten Gruppe zu der ersten Gruppe basierend auf einer Transaktion zwischen dem ersten Prozessor und dem zweiten Prozessor während der Ausführung des einen der zweiten einen der Mehrzahl von Kernels.
  • Gemäß weiteren Ausführungsformen des erfinderischen Konzepts kann ein heterogenes Rechensystem eine CPU, eine GPU, welche nacheinander folgend eine Mehrzahl von Kernels, welche von der CPU abgeladen sind, ausführt, und einen Kohärenzcontroller aufweisen, welcher konfiguriert ist, um jeden der Mehrzahl von Kernels in einen einer ersten Gruppe und einer zweiten Gruppe zu klassifizieren basierend auf Attributen von Befehlen, welche in jedem der Mehrzahl von Kernels enthalten sind, bevor die Mehrzahl von Kernels ausgeführt wird, und ferner konfiguriert ist, um einen der Mehrzahl von Kernels aus der zweiten Gruppe zu der ersten Gruppe zu reklassifizieren basierend auf einer Transaktion zwischen der CPU und der GPU während der Ausführung des einen der Mehrzahl von Kernels.
  • Figurenliste
  • Die obigen und andere Aufgaben und Merkmale des erfinderischen Konzepts werden durch ein detailliertes Beschreiben von beispielhaften Ausführungsformen davon unter Bezugnahme auf die beigefügten Zeichnungen offensichtlich werden.
    • 1 ist ein Blockschaltbild, welches eine beispielhafte Konfiguration eines heterogenen Rechensystems gemäß einer Ausführungsform des erfinderischen Konzepts veranschaulicht.
    • 2 ist ein Blockschaltbild, welches eine beispielhafte Konfiguration eines heterogenen Rechensystems gemäß einigen Ausführungsformen des erfinderischen Konzepts veranschaulicht.
    • 3A ist ein Blockschaltbild, welches eine andere beispielhafte Konfiguration eines heterogenen Rechensystems, welches in 2 veranschaulicht ist, gemäß einigen Ausführungsformen des erfinderischen Konzepts veranschaulicht.
    • 3B ist ein Blockschaltbild, welches eine andere beispielhafte Konfiguration eines heterogenen Rechensystems, welches in 2 veranschaulicht ist, gemäß einigen Ausführungsformen des erfinderischen Konzepts veranschaulicht.
    • 3C ist ein Blockschaltbild, welches eine andere beispielhafte Konfiguration eines heterogenen Rechensystems, welches in 2 veranschaulicht ist, gemäß einigen Ausführungsformen des erfinderischen Konzepts veranschaulicht.
    • 3D ist ein Blockschaltbild, welches eine andere beispielhafte Konfiguration eines heterogenen Rechensystems, welches in 2 veranschaulicht ist, gemäß einigen Ausführungsformen des erfinderischen Konzepts veranschaulicht.
    • 4 ist ein Blockschaltbild, welches eine Konfiguration und eine Operation eines heterogenen Rechensystems gemäß einigen Ausführungsformen des erfinderischen Konzepts veranschaulicht.
    • 5 ist eine Ansicht, welche konzeptuell Operationen eines ersten Kohärenzauswirkungsanalysierers, welcher in 4 veranschaulicht ist, gemäß einigen Ausführungsformen des erfinderischen Konzepts veranschaulicht.
    • 6 ist eine Ansicht, welche konzeptuell Operationen eines zweiten Analysierers oder Kohärenzauswirkungsverfolgers, welcher in 4 veranschaulicht ist, gemäß einigen Ausführungsformen des erfinderischen Konzepts veranschaulicht.
    • 7A und 7B sind Ansichten, welche konzeptuell veranschaulichen, wie ein Kernel, welcher von einer zentralen Verarbeitungseinheit (CPU) abgeladen ist, durch eine Grafikverarbeitungseinheit (GPU) gemäß einigen Ausführungsformen des erfinderischen Konzepts ausgeführt wird.
    • 8 ist eine Ansicht, welche ein Beispiel veranschaulicht, in dem ein häufiges Datenteilen (das heißt dynamisches Teilen) zwischen einer CPU und einer GPU gemäß einigen Ausführungsformen des erfinderischen Konzepts getätigt wird.
    • 9 ist ein Blockschaltbild, welches konzeptuell beispielhafte Operationen zum Bestimmen, dass ein dynamisches Teilen von Daten zwischen einer CPU und einer GPU gemäß einigen Ausführungsformen des erfinderischen Konzepts getätigt wird, veranschaulicht.
    • 10 ist ein Blockschaltbild, welches konzeptuell weitere beispielhafte Operationen zum Bestimmen, dass ein dynamisches Teilen von Daten zwischen einer CPU und einer GPU gemäß einigen Ausführungsformen des erfinderischen Konzepts getätigt wird, veranschaulicht.
    • 11 ist ein Blockschaltbild, welches konzeptuell noch weitere beispielhafte Operationen zum Bestimmen, dass ein dynamisches Teilen von Daten zwischen einer CPU und einer GPU gemäß einigen Ausführungsformen des erfinderischen Konzepts getätigt wird, veranschaulicht.
    • 12 ist ein Flussdiagramm, welches Verfahren zum Steuern einer Cachekohärenz eines heterogenen Rechensystems gemäß einigen Ausführungsformen des erfinderischen Konzepts veranschaulicht.
    • 13 ist ein Flussdiagramm, welches Verfahren zum Steuern einer Cachekohärenz eines heterogenen Rechensystems gemäß einigen Ausführungsformen des erfinderischen Konzepts veranschaulicht.
  • DETAILLIERTE BESCHREIBUNG
  • Hierin nachstehend werden Ausführungsformen des erfinderischen Konzepts im Detail unter Bezugnahme auf die beigefügten Zeichnungen beschrieben werden. Gleiche Bezugszeichen bezeichnen gleiche Elemente über die Beschreibung der Figuren hinweg. Es wird angemerkt, dass Aspekte der Erfindung, welche hinsichtlich einer Ausführungsform beschrieben sind, in einer unterschiedlichen Ausführungsform inkorporiert sein können, obwohl nicht spezifisch in Bezug hierzu beschrieben. Das heißt, dass alle Ausführungsformen und/oder Merkmale einer beliebigen Ausführungsform in einem beliebigen Weg und/oder einer beliebigen Kombination kombiniert werden können.
  • Wenn hierin verwendet, bedeutet der Begriff „Echtzeit“ das Durchführen einer Operation ohne das Einfügen einer zeitlich geplanten oder künstlichen Verzögerung.
  • Einige Ausführungsformen des erfinderischen Konzepts stammen von einer Realisierung ab, dass in einem heterogenen Rechensystem einschließlich beispielsweise einer zentralen Verarbeitungseinheit (CPU) und einer Grafikverarbeitungseinheit (GPU) eine Cachekohärenz primär basierend auf Cachetreffern und Cachefehlschlägen durch die unterschiedlichen Prozessoren verwaltet werden kann. Dies kann zu Beispielen führen, in denen ein Kernel in einer nicht Cache-kohärenten Art und Weise ausgeführt wird, auch wenn Daten häufig zwischen den Prozessoren geteilt werden, und zu Beispielen, in denen ein Kernel in einer Cache-kohärenten Art und Weise ausgeführt wird, auch wenn Daten selten zwischen den Prozessoren geteilt werden. Ausführungsformen der vorliegenden Erfindung können einen Cachekohärenzcontroller vorsehen, welcher konfiguriert ist, um Kernels vor der Ausführung als in einer nicht Cache-kohärenten Gruppe oder einer Cache-kohärenten Gruppe befindlich zu klassifizieren, basierend auf einer Analyse ihrer jeweiligen Befehle. Der Cachekohärenzcontroller kann jedoch weiter konfiguriert sein, um Kernels zwischen den zwei Gruppen zu reklassifizieren, wie beispielsweise ein Reklassifizieren eines Kernel von der nicht Cache-kohärenten Gruppe zu der Cache-kohärenten Gruppe basierend auf einer Analyse von Daten, welche zwischen den Prozessoren geteilt werden, wenn der Kernel ausgeführt wird. Als ein Ergebnis kann die Reklassifizierung eine Systemleistungsfähigkeit durch ein adaptives Nutzen des Cachespeichers für diese Kernels, in welchen Daten wahrscheinlicher und/oder häufiger zwischen den Prozessoren geteilt werden, verbessern.
  • 1 ist ein Blockschaltbild, welches eine beispielhafte Konfiguration eines heterogenen Rechensystems 100 gemäß einigen Ausführungsformen des erfinderischen Konzepts veranschaulicht. Das heterogene Rechensystem 100 kann zwei oder mehr heterogene Prozessoren 110 und 120 und einen Kohärenzcontroller 130 aufweisen. Komponenten, welche das heterogene Rechensystem 100 bilden, können kommunikativ durch einen Bus 180 verbunden sein.
  • Zusätzlich kann in einer anderen Ausführungsform ein Ein-Chip-System SoC implementiert sein, um einen Speichercontroller (memory controller) 140, einen Speichercontroller (storage controller) 150, ein Kommunikationsmodul 160 und einen Anzeigeadapter 170 aufzuweisen. Ein Systemspeicher 145 kann mit dem Speichercontroller 140 verbunden sein. Ein Speicher 155 kann mit dem Speichercontroller 150 verbunden sein. Eine Anzeige 175 kann mit dem Anzeigeadapter 170 verbunden sein.
  • Das heterogene Rechensystem 100 kann ein oder mehrere elektronische Vorrichtungen wie beispielsweise einen Desktopcomputer, einen Laptopcomputer, ein Tablet, ein Smartphone, eine tragbare Vorrichtung, eine Videospielekonsole, eine Workstation und einen Server aufweisen. In einigen Ausführungsformen können die zwei oder mehr heterogenen Prozessoren 110 und 120 und der Kohärenzcontroller 130 ein Ein-Chip-System SoC sein, welches in solchen Vorrichtungen implementiert ist.
  • Die zwei oder mehr heterogenen Prozessoren 110 und 120 können in einem Chip vorgesehen sein, um eine heterogene Berechnungsumgebung vorzusehen. Beispielsweise können die zwei oder mehr heterogenen Prozessoren 110 und 120 eine zentrale Verarbeitungseinheit (CPU) 110 und eine Grafikverarbeitungseinheit (GPU) 120 aufweisen.
  • Die CPU 110 kann den Gesamtbetrieb des heterogenen Rechensystems 100 steuern. Die CPU 110 kann verschiedene Arten von arithmetischen Operationen und/oder logischen Operationen verarbeiten. In einigen Ausführungsformen kann die CPU 110 ein Multikernprozessor sein, welcher einen oder mehrere Prozessorkerne aufweist. Die CPU 110 kann Cachespeicher aufweisen, welche durch den einen oder mehrere Prozessorkerne verwendet werden, um verschiedene Operationen durchzuführen. Die Cachespeicher können vorübergehend Befehle und/oder Parameterwerte speichern, welche durch die CPU 110 verwendet werden, um eine Anwendung auszuführen.
  • Die GPU 120 kann eine 2D- und/oder 3D-Verarbeitung durchführen. Die GPU 120 kann verwendet werden, um ein Rendering durchzuführen, um ein Bild durch die Anzeige 175 auszugeben. Zusätzlich kann die GPU 120 verwendet werden, um komplizierte Operationen wie beispielsweise eine Berechnung einer geometrischen Struktur und eine Berechnung eines Skalars und von Vektorgleitpunkten durchzuführen. Die GPU 120 kann verschiedene Befehle ausführen, welche durch ein Verwenden einer Anwendungsprogrammierschnittstelle (API = application programming interface = Anwendungsprogrammierschnittstelle) wie beispielsweise OpenCL, OpenGL oder WebGL verschlüsselt sind. Die GPU 120 kann einen dedizierten Speicher aufweisen. In diesem Fall kann der dedizierte Speicher, welcher in der GPU 120 eingebettet ist oder mit der GPU 120 verbunden ist, als ein Framepuffer, eine Texturkarte und/oder ein Anordnungsspeicherraum verwendet werden.
  • Der Kohärenzcontroller 130 kann konfiguriert sein, um eine Cachekohärenz zwischen der CPU 110 und der GPU 120 aufrecht zu erhalten. Beispielsweise kann der Kohärenzcontroller 130 Information über Daten und/oder Variablen, welche häufig zwischen der CPU 110 und der GPU 120 ausgetauscht werden, steuern. Beispielsweise kann der Kohärenzcontroller 130 es der CPU 110 erlauben, ein Verarbeitungsergebnis von Kernels gemeinsam zu verwenden beziehungsweise zu teilen, welche von der CPU 110 abgeladen werden und durch die GPU 120 verarbeitet werden.
  • Wie vollständiger untenstehend beschrieben werden wird, kann der Kohärenzcontroller 130 im Voraus Kernels analysieren, welche von der CPU 110 abgeladen werden, und durch die GPU 120 ausgeführt werden, und kann die Kernels in zwei Gruppen klassifizieren. Beispielsweise kann eine erste Gruppe der klassifizierten Gruppen Kernels aufweisen, welche eine speichergebundene Charakteristik haben, in welcher ein Datenteilen zwischen der CPU 110 und der GPU 120 häufig auftritt. Eine zweite Gruppe der klassifizierten Gruppen kann Kernels aufweisen, welche eine berechnungsgebundene Charakteristik haben, in welcher ein Datenteilen zwischen der CPU 110 und der GPU 120 selten oder weniger häufig auftritt.
  • Zusätzlich kann der Kohärenzcontroller 130 die Kernels, welche zu der zweiten Gruppe gehören, reklassifizieren, während Kernels durch die GPU 120 ausgeführt werden. Beispielsweise kann der Kohärenzcontroller 130 einen Kernel, welcher als ein Kernel bestimmt ist, welcher zu der zweiten Gruppe gehört, jedoch ein häufiges Datenteilen zwischen der CPU 110 und der GPU 120 erfährt, als die erste Gruppe reklassifizieren. Ein Verarbeitungsergebnis eines Kernel, welche zu der ersten Gruppe gehört, kann durch die CPU 110 und die GPU 120 über Cachespeicher, welche in der CPU 110 und der GPU 120 enthalten sind, geteilt werden. Im Gegensatz dazu kann ein Verarbeitungsergebnis eines Kernel, welcher zu der zweiten Gruppe gehört, durch die CPU 110 und die GPU 120 durch den Systemspeicher 145 geteilt werden.
  • Der Speichercontroller 140 kann den Systemspeicher 145 steuern. Beispielsweise kann der Speichercontroller 140 eine Dateneingabe-/Ausgabe zwischen dem heterogenen Rechensystem 100 und dem Systemspeicher 145 steuern.
  • Der Systemspeicher 145 kann vorübergehend Daten, welche verarbeitet sind oder durch die CPU 110 und/oder die GPU 120 zu verarbeiten sind, speichern. Bei einer Bootoperation werden ein Betriebssystem (OS = Operating System = Betriebssystem), Basisanwendungsprogramme und/oder Firmware in den Systemspeicher 145 geladen. Beispielsweise kann bei einem Booten des heterogenen Rechensystems 100 ein OS-Abbild, welches in dem Speicher 155 gespeichert ist, in den Systemspeicher 145 basierend auf einer Bootsequenz geladen werden. Gesamteingabe-/Ausgabe-Operationen des heterogenen Rechensystems 100 können durch das Betriebssystem OS unterstützt werden. Zusätzlich können Anwendungsprogramme und/oder Firmware (beispielsweise verbunden mit Grafikverarbeitung), welche durch einen Nutzer ausgewählt werden für ein Vorsehen eines Basisdienstes in den Systemspeicher 145 geladen werden.
  • Beispielsweise kann der Systemspeicher 145 einen flüchtigen Speicher wie beispielsweise einen dynamischen Direktzugriffsspeicher (DRAM = Dynamic Random Access Memory = dynamischer Direktzugriffspeicher) oder einen synchronen DRAM (SDRAM = Synchronous DRAM = synchroner DRAM) und/oder einen nichtflüchtigen Speicher wie beispielsweise einen Phasenübergangs-RAM (PRAM = Phase-Change RAM = Phasenübergangs-RAM), einen magnetoresistiven RAM (MRAM = MagnetoResistive RAM = magnetoresistiver RAM), einen resistiven RAM (ReRAM = Resistive RAM = resistiver RAM) oder einen ferroelektrischen RAM (FRAM = Ferro-Electric RAM = ferroelektrischen RAM) aufweisen. Zum Zweck der Beschreibung jedoch wird untenstehend angenommen, dass ein Systemspeicher mit DRAMs implementiert ist, welche auf einer Doppeldatenraten(DDR = Double Data Rate = Doppeldatenraten)-Schnittstelle basiert sind.
  • Der Speichercontroller 150 kann den Speicher 155 steuern. Beispielsweise kann der Speichercontroller 150 eine Dateneingabe-/Ausgabe zwischen dem heterogenen Rechensystem 100 und dem Speicher 155 steuern.
  • Der Speicher 155 kann eine oder mehrere Speichervorrichtungen und einen Controller aufweisen. Die Speichervorrichtungen des Speichers 155 können Daten unabhängig von der Leistungsversorgung beibehalten. Beispielsweise kann der Speicher 155 einen nichtflüchtigen Speicher aufweisen wie beispielsweise einen Flashspeicher, einen PRAM, einen MRAM, einen ReRAM oder einen FRAM. Beispielsweise kann der Speicher 155 ein Speichermedium wie beispielsweise ein Festkörperlaufwerk (SSD = Solid State Drive = Festkörperlaufwerk), einen entfernbaren Speicher, einen eingebetteten Speicher etc. aufweisen.
  • Das Kommunikationsmodul 160 kann mit einer externen Vorrichtung/System des heterogenen Rechensystems 100 kommunizieren. Wie in 1 veranschaulicht ist, kann wenigstens ein Teil der Funktionen des Kommunikationsmoduls 160 in das SoC, welches die CPU 110, die GPU 120 und den Kohärenzcontroller 130 aufweist, zusammengeführt sein. In anderen Ausführungsformen jedoch kann das Kommunikationsmodul 160 ein Funktionsblock, eine Schaltung oder ein Halbleiterchip sein, welcher unabhängig von dem SoC hergestellt ist.
  • Beispielsweise kann das Kommunikationsmodul 160 ein oder mehrere drahtlose Kommunikationsprotokolle unterstützen wie beispielsweise, jedoch nicht beschränkt auf Long Term Evolution (LTE), Worldwide Interoperability for Microwave Access (Wi-Max), Global System for Mobile Communication (GSM), Code Division Multiple Access (CDMA), Bluetooth, Near Field Communication (NFC), Wireless Fidelity (Wi-Fi) und Radio Frequency Identification (RFID) und/oder ein oder mehrere verdrahtete Kommunikationsprotokolle wie beispielsweise, jedoch nicht beschränkt auf Transfer Control Protocol/Internet Protocol (TCP/IP), Universal Serial Bus (USB) und Firewire.
  • Der Bus 180 kann einen Kommunikationspfad zwischen den Komponenten des heterogenen Rechensystems 100 vorsehen. Beispielsweise kann der Bus 180 eine chipexterne Zwischenverbindung (Off-Chip-Interconnect) aufweisen. Die Komponenten des heterogenen Rechensystems 100 können Daten miteinander basierend auf einem Busformat des Busses 180 austauschen. Beispielsweise kann das Busformat ein oder mehrere von verschiedenen Schnittstellenprotokollen wie beispielsweise USB, Small Computer System Interface (SCSI), Peripheral Component Interconnect express (PCIe), mobiles PCIe (M-PCIe), Advanced Technology Attachment (ATA), paralleles ATA (PATA), serielles ATA (SATA), Serial Attached SCSI (SAS), Integrated Drive Electronics (IDE), Enhanced IDE (EIDE), Nonvolatile Memory Express (NVMe) und Universal Flash Storage (UFS) aufweisen.
  • 2 ist ein Blockschaltbild, welches eine beispielhafte Konfiguration eines heterogenen Rechensystems gemäß einigen Ausführungsformen des erfinderischen Konzepts veranschaulicht. Anders als die Ausführungsformen, welche unter Bezugnahme auf 1 beschrieben sind, kann ein heterogenes Rechensystem 200 mit einem Auf-Chip-Netzwerk (NoC = Network on Chip = Auf-Chip-Netzwerk) implementiert sein, welches auf einer Auf-Chip-Zwischenverbindung (on chip interconnect) basiert ist.
  • Das heterogene Rechensystem 200 kann ein oder mehrere Module aufweisen, welche Hardware-Intellectual Properties (IPs) aufweisen. Die Hardware-IPs können zwei oder mehrere heterogene Prozessoren 210 und 220, einen Kohärenzcontroller 230 einen Speichercontroller (Memory Controller) 240, einen Speichercontroller (Storage Controller) 250, ein Kommunikationsmodul 260 und einen Anzeigeadapter 270 aufweisen. Eine Konfiguration des heterogenen Rechensystems 200 ist nicht darauf beschränkt. Beispielsweise kann das heterogene Rechensystem 200 ferner einen Hardware-IP 280 aufweisen. Beispielsweise kann der Hardware-IP 280 eine Nutzerschnittstelle zum Vorsehen von Verbraucherfreundlichkeit für einen Nutzer wie beispielsweise eines Kameramoduls, eines Audiomoduls oder eines Touchpad sein.
  • Ein Systemspeicher 245 kann mit dem Speichercontroller 240 verbunden sein, und ein Speicher 255 kann mit dem Speichercontroller 250 verbunden sein. Eine Anzeige 275 kann mit dem Anzeigeadapter 270 verbunden sein. Die Hardware-IPs sind im Wesentlichen dieselben wie die Komponenten, welche unter Bezugnahme auf 1 beschrieben sind, und demnach wird eine detaillierte Beschreibung davon hier nicht wiederholt werden.
  • Jeder der Hardware-IPs jedoch kann eine Netzwerkschnittstelleneinheit NIU aufweisen. Die Netzwerkschnittstelleneinheit NIU sieht eine Schnittstelle für eine Kommunikation zwischen Hardware-IPs vor. Die Hardware-IPs können miteinander durch die Netzwerkschnittstelleneinheit NIU und einen Router „R“ verbunden sein. Beispielsweise kann der Router „R“ einen Puffer und einen Auf-Chip-Netzwerk-Schalter aufweisen. Die Hardware-IPs können kommunikativ durch eine Schaltoperation des Auf-Chip-Netzwerk-Schalters verbunden sein.
  • Auf Router „R“, physikalische Verbindungen, welche die Router „R“ miteinander verbinden und physikalische Verbindungen, welche die Router „R“ und die Netzwerkschnittstelleneinheit NIU verbinden, wird Bezug genommen als eine „Auf-Chip-Zwischenverbindung “. Eine parallele Kommunikation zwischen den Hardware-IPs kann durch die Auf-Chip-Zwischenverbindung durchgeführt werden.
  • Gemäß den beispielhaften Konfigurationen der heterogenen Rechensysteme 100 und 200, welche obenstehend kurz beschrieben sind, werden Kernels, welche von einer CPU abgeladen werden, im Vorab und in Echtzeit analysiert. Da ein Datenteilen zwischen einer CPU und einer GPU durch einen Cachespeicher basierend auf einem Ergebnis der Analyse getätigt wird, kann eine Geschwindigkeit, unter welcher auf geteilte Daten zugegriffen wird, verbessert werden. Zusätzlich kann, da Daten nicht unnötigerweise durch einen Systemspeicher geteilt werden, eine Verringerung oder Verschlechterung einer Systemleistungsfähigkeit verhindert oder verringert werden.
  • 3A ist ein Blockschaltbild, welches eine beispielhafte Konfiguration des heterogenen Rechensystems 200, welches in 2 veranschaulicht ist, gemäß einigen Ausführungsformen des erfinderischen Konzepts veranschaulicht. Ein heterogenes Rechensystem 300a kann eine CPU 310a, eine GPU 320a, einen Kohärenzcontroller 330a, einen Speichercontroller 340a, einen Systemspeicher 345a, einen Speichercontroller 350a und einen Speicher 355a aufweisen. Die Bestandteile des heterogenen Rechensystems 300a entsprechen jeweils Komponenten, welche in 2 veranschaulicht sind, und haben ähnliche Bezugszeichen. Demnach wird eine Beschreibung, welche obenstehend gegeben ist, untenstehend nicht wiederholt werden, und spezifische Operationen des heterogenen Rechensystems 300a werden basierend auf Unterschieden zwischen den früher beschriebenen Ausführungsformen beschrieben werden.
  • Jede der CPU 310a und der GPU 320a weist wenigstens ein Last-Level-Cache LLC auf. Obwohl in 3A zur Kürze der Veranschaulichung nicht veranschaulicht, kann jede der CPU 310a und der GPU 320a ferner ein Upper-Level-Cache aufweisen. Die CPU 310a und die GPU 320a können mit dem Kohärenzcontroller 330a über eine Auf-Chip-Zwischenverbindung 390a kommunizieren. Die Auf-Chip-Zwischenverbindung 390a kann ein Datenteilen beziehungsweise ein gemeinsames Verwenden von Daten zwischen der CPU 310a und der GPU 320a unterstützen, welches durch ein Verwenden wenigstens eines der Last-Level-Caches LLC durchgeführt wird.
  • Der Kohärenzcontroller 330a kann mit den Komponenten des heterogenen Rechensystems 300a über die Auf-Chip-Zwischenverbindung 390a kommunizieren. Die Auf-Chip-Zwischenverbindung kann sowohl eine Cache-Kohärenz-Zwischenverbindung CCI als auch eine Nicht-Cache-Kohärenz-Zwischenverbindung NCCI unterstützen. Die Auf-Chip-Zwischenverbindung 390a kann einen Auf-Chip-Netzwerk-Schalter aufweisen (beispielsweise in dem Router „R“ der 2 enthalten), welcher eine Schaltoperation zwischen der CCI und der NCCI durchführt, derart, dass Daten, welche durch die CPU 310a und/oder die GPU 320a verarbeitet sind durch eine beliebige andere Hardware-/Software-Komponente verarbeitet werden.
  • Ein GPU-Treiber 346a sieht eine Schnittstelle vor, welche eine Anwendung, welche in den Systemspeicher 345a geladen ist, in die Lage versetzt, mit der GPU 320a zu kommunizieren. Beispielsweise kann der GPU-Treiber 346a ein Programm von einer Anwendung, welche auf dem heterogenen Rechensystem 300a auszuführen ist, oder Framework aufrufen. Das Programm, welches durch den GPU-Treiber 346a aufgerufen wird, kann durch die GPU 320a ausgeführt werden. Das heißt, dass das Programm, welches durch den GPU-Treiber 346a aufgerufen wird, eine Mehrzahl von Kernels (hierin nachstehend wird hierauf Bezug genommen als „GPU-Kernels“) aufweisen kann, welche durch die CPU 310a abgeladen werden, um durch die GPU 320a ausgeführt zu werden. Der GPU-Treiber 346a kann in den Systemspeicher 340a geladen sein.
  • Ein Kernel-Zeitplaner 348a kann Kernels, welche auf der CPU 310a und/oder der GPU 320a auszuführen sind, und Threads jedes Kernel zeitlich planen. Der Kernel-Zeitplaner 348a kann die Kernels, welche auf der CPU 310a und/oder der GPU 320a auszuführen sind, analysieren und identifizieren. Zusätzlich kann der Kernel-Zeitplaner 348a ein Programm sein, welches durch ein Verwenden einer API wie beispielsweise OpenGL erzeugt wird. Der Kernel-Zeitplaner 348a kann ein Programm sein, welches in dem Speicher 355a gespeichert ist und geladen wird in und ausgeführt wird auf dem Systemspeicher 345a.
  • 3B ist ein Blockschaltbild, welches eine andere beispielhafte Konfiguration des heterogenen Rechensystems 200, welches in 2 veranschaulicht ist, gemäß einigen Ausführungsformen des erfinderischen Konzepts veranschaulicht. Eine Konfiguration und Operationen eines heterogenen Rechensystems 300b sind ähnlich zu dem heterogenen Rechensystem 300a, welches in 3A veranschaulicht ist, und Beschreibungen werden basierend auf Unterschieden mit den früher beschriebenen Ausführungsformen gegeben werden.
  • Eine CPU 310b und eine GPU 320b kann mit Hardware und Softwarekomponenten, welche das heterogene Rechensystem 300b bilden über eine Auf-Chip-Zwischenverbindung 390b kommunizieren. Insbesondere kann ein Kohärenzcontroller 330b, welcher eine Datenteilung zwischen der CPU 310b und der GPU 320b steuert, in einem Speichercontroller 340b vorgesehen sein. In der Ausführungsform der 3B kann die Auf-Chip-Zwischenverbindung 390b sowohl die CCI als auch die NCCI unterstützen.
  • Der Kohärenzcontroller 330b kann in dem Speichercontroller 340b implementiert sein. Beispielsweise können Daten, welche einem GPU-Kernel zugeordnet sind, in welchem ein Datenteilen zwischen der CPU 310b und der GPU 320b häufig getätigt wird, durch ein Cachekohärenzverzeichnis des Kohärenzcontrollers 330b referenziert werden. Das heißt, dass, da Daten durch ein Verwenden der Last-Level-Caches LLC der CPU 310b und der GPU 320b anstelle eines Systemspeichers 345b geteilt werden, eine Verarbeitungsgeschwindigkeit eines GPU-Kernel verbessert werden kann und ein unnötiges Verschwenden der Systemspeicher 345b-Resource verhindert oder verringert werden kann.
  • 3C ist ein Blockschaltbild, welches eine andere beispielhafte Konfiguration des heterogenen Rechensystems 200, welches in 2 veranschaulicht ist, gemäß einigen Ausführungsformen des erfinderischen Konzepts veranschaulicht. Eine Konfiguration und Operationen eines heterogenen Rechensystems 300c sind ähnlich zu dem heterogenen Rechensystem 300a oder 300b, welche in 3A oder 3B veranschaulicht sind, und eine Beschreibung wird auf Unterschieden mit den früher beschriebenen Ausführungsformen basiert sein.
  • Ein Kohärenzcontroller 330c kann sowohl in einer CPU 310c als auch einer GPU 320c implementiert sein. Beispielsweise kann ein erster Kohärenzcontroller CH CTRL1 in der CPU 310c implementiert sein, und ein zweiter Kohärenzcontroller CH CTRL2 kann in der GPU 320c implementiert sein. Der erste Kohärenzcontroller CH CTRL1 und der zweite Kohärenzcontroller CH CTRL2 können nicht konfiguriert sein, um dieselben Daten zu speichern. Das heißt, dass der zweite Kohärenzcontroller CH CTRL2 nicht eine Replik beziehungsweise Kopie des ersten Kohärenzcontrollers CH CTRL1 sein kann. Der erste Kohärenzcontroller CH CTRL1 jedoch und der zweite Kohärenzcontroller CH CTRL2 können verbunden sein, um Daten miteinander über eine Auf-Chip-Zwischenverbindung 390c zu teilen.
  • Beispielsweise können Daten, welche einem GPU-Kernel zugeordnet sind, in welchem ein Datenteilen zwischen der CPU 310c und der GPU 320c häufig getätigt wird, durch ein Cachekohärenzverzeichnis des ersten Kohärenzcontrollers CH CTRL1 referenziert werden oder ein Cachekohärenzverzeichnis des zweiten Kohärenzcontrollers CH CTRL2. Das heißt, dass Daten, durch ein Verwenden von Last-Level-Caches LLC der CPU 310c und der GPU 320c anstelle eines Systemspeichers 345c geteilt werden.
  • 3D ist ein Blockschaltbild, welches eine andere beispielhafte Konfiguration des heterogenen Rechensystems 200, welches in 2 veranschaulicht ist, gemäß einigen Ausführungsformen des erfinderischen Konzepts veranschaulicht. Eine Konfiguration und Operationen eines heterogenen Rechensystems 300d sind ähnlich zu dem heterogenen Rechensystem 300a, welches in 3A veranschaulicht ist, und eine Beschreibung wird auf Unterschieden mit den früher beschriebenen Ausführungsformen basiert sein. Das heterogene Rechensystem 300d kann jedoch einen geteilten Last-Level-Cache aufweisen. Beispielsweise kann der geteilte Last-Level-Cache außerhalb einer CPU 310d und einer GPU 320d implementiert sein.
  • Die beispielhaften Konfigurationen des heterogenen Rechensystems 200 der 2 werden unter Bezugnahme auf die 3A bis 3D beschrieben. Das erfinderische Konzept ist jedoch nicht auf ein Auf-Chip-Netzwerk beschränkt, welches auf einer Auf-Chip-Zwischenverbindung basiert ist. Das heißt, dass das erfinderische Konzept auf ein Ein-Chip-System angewandt werden kann, welches auf einem auf Off-Chip, welcher in 1 veranschaulicht ist, basiert ist. In Ausführungsformen jedoch, welche untenstehend zu beschreiben sind, wird eine Beschreibung unter der Annahme gegeben werden, dass das erfinderische Konzept auf ein Auf-Chip-Netzwerk angewandt wird, welches auf einer Auf-Chip-Zwischenverbindung basiert ist.
  • 4 ist ein Blockschaltbild, welches eine Konfiguration und Operationen eines heterogenen Rechensystems gemäß einigen Ausführungsformen des erfinderischen Konzepts veranschaulicht. Ein heterogenes Rechensystem 400 kann eine CPU 410, eine GPU 420, einen Kohärenzcontroller 430 und einen Systemspeicher 445 aufweisen. Wie obenstehend beschrieben ist, können die CPU 410, die GPU 420 und der Kohärenzcontroller 430 ein Auf-Chip-Netzwerk bilden, welches mit einem Chip hergestellt ist.
  • Zuerst wird für Zwecke der Veranschaulichung angenommen, dass ein Programm, welches von der CPU 410 abgeladen ist, eine Mehrzahl von Kernels aufweist, und die Mehrzahl von Kernels nacheinander folgend ausgeführt werden. GPU-Kernels können analysiert werden bevor GPU-Kernels durch die GPU 420 ausgeführt werden. Beispielsweise kann ein Compiler 446, welcher geladen ist auf und ausgeführt wird auf dem Systemspeicher 445 Befehle jedes Kernel analysieren. Die Befehle der Mehrzahl von Kernels können einen arithmetischen Befehl, Lade- und Speicher-Befehle, einen Texturbefehl und/oder beliebige andere Befehle aufweisen. Ein Analyseergebnis (das heißt eine Kernelbefehlsverteilung) des Compilers 446 wird zu einem ersten Analysierer (das heißt Kohärenzauswirkungsanalysierer; CIA) 434 übertragen.
  • Der Kohärenzcontroller 430 kann ein Cachekohärenzverzeichnis 432, den ersten Analysierer 434 und einen zweiten Analysierer (das heißt einen Kohärenzauswirkungsverfolger; CIT) 436 aufweisen. Das Cachekohärenzverzeichnis 432 kann einen Datentyp, eine Cacheadresse, Teilungsinformation und Gültigkeitsinformation, auf welche durch die CPU 410 und/oder die GPU 420 zu referenzieren ist, aufweisen. Hier weist die Teilungsinformation Information darüber auf, ob Daten, welche durch eine Cacheadresse zu referenzieren sind, durch die CPU 410 und die GPU 420 geteilt beziehungsweise gemeinsam verwendet werden.
  • Der erste Analysierer 434 kann jeden Kernel statisch analysieren bevor GPU-Kernels ausgeführt werden. Beispielsweise kann der erste Kohärenzauswirkungsanalysierer 434 bestimmen, ob jeder Kernel eine speichergebundene Charakteristik oder ein berechnungsgebundenes Attribut hat, basierend auf der Kernelbefehlsverteilung, welche von dem Compiler 446 empfangen wird.
  • Wenn ein Verhältnis von Befehlen, welche ein spezifisches Attribut haben, zu allen Befehlen eines Kernel größer ist als oder gleich einem Grenzwert, kann der erste Analysierer 434 den entsprechenden Kernel als einen Kernel klassifizieren, welcher eine speichergebundene Charakteristik hat. Hier kann der Befehl, welcher das spezifische Attribut hat, ein Befehl sein, welcher einem Laden von der CPU 410 und/oder einem Speichern zu der CPU 410 zugeordnet ist. In anderen Worten gesagt kann das Laden von der CPU 410 ein Abladen eines GPU-Kernel und/oder ein Laden eines Zwischenverarbeitungsergebnisses der CPU 410 bedeuten. Das Speichern der CPU 410 kann ein Zwischenverarbeitungsergebnis oder ein Endverarbeitungsergebnis der GPU zurückgeben.
  • Das Analyseergebnis des ersten Kohärenzauswirkungsanalysierers 434 kann in einem Speicher (beispielsweise einem Last-Level-Cache LLC und/oder einem Upper-Level-Cache) der CPU 410 gespeichert werden, die Ausführungsformen des erfinderischen Konzepts sind jedoch nicht darauf beschränkt.
  • In den Ausführungsformen der 4 ist der erste Kohärenzauswirkungsanalysierer 434 als ein Hardwareblock veranschaulicht, welcher in dem Kohärenzcontroller 430 enthalten ist. In anderen Ausführungsformen jedoch kann alternativ oder zusätzlich der Kohärenzcontroller 430 ein Softwaremodul sein, welches geladen wird zu und ausgeführt wird auf dem Systemspeicher 445 oder einem dedizierten Speicher (nicht veranschaulicht), welcher enthalten ist in oder verbunden ist mit der GPU 420.
  • Ein Kernel, welcher durch den ersten Analysierer 434 klassifiziert wird, kann durch die CPU 410 oder die GPU 420 ausgeführt werden. Das heißt, dass ein Kernel, welcher die speichergebundene Charakteristik hat, in einer Cache-kohärenten Art und Weise verarbeitet werden kann, und ein Verarbeitungsergebnis des Kernel durch die Last-Level-Caches LLC geteilt werden kann. Im Gegensatz dazu kann ein Kernel, welcher die berechnungsgebundene Charakteristik hat, in einer nicht Cache-kohärenten Art und Weise verarbeitet werden, und ein Verarbeitungsergebnis des Kernel kann durch den Systemspeicher 445 geteilt werden.
  • Die Effizienz des Datenteilens zwischen der CPU 410 und der GPU 420 kann durch ein einheitliches Analysieren von Kernels basierend auf dem Analyseergebnis des Compilers 446 verbessert werden. Ein Datenaustausch (das heißt Transaktion) jedoch kann zwischen der CPU 410 und der GPU 420 getätigt werden, während ein Kernel, welcher in der nicht Cache-kohärenten Art und Weise zu verarbeiten ist, ausgeführt wird. In diesem Fall kann ein Datenteilen durch die Last-Level-Caches LLC effektiver sein als ein Datenteilen durch den Systemspeicher 445.
  • In einigen Ausführungsformen des erfinderischen Konzepts kann der zweite Analysierer 436 einen Kernel, welcher die berechnungsgebundene Charakteristik hat, reklassifizieren, während ein Kernel ausgeführt wird. Beispielsweise kann der zweite Analysierer 436 einen Datenaustausch zwischen der CPU 410 unter GPU 420 in Echtzeit überwachen. Zusätzlich kann der zweite Kohärenzauswirkungsverfolger 436 zusätzlich verschiedene Faktoren, welche einem Datenaustausch zwischen der CPU 410 und der GPU 420 zugeordnet sind, zusätzlich überwachen. Ein Prozess, in welchem der zweite Kohärenzauswirkungsverfolger 436 einen Kernel, welcher ausgeführt wird, reklassifiziert, wird vollständiger untenstehend beschrieben werden.
  • Wenn bestimmt wird, dass Daten zwischen der CPU 410 und der GPU 420 auf einer häufigen Basis ausgetauscht werden, während ein Kernel, welcher in einer nicht Cache-kohärenten Art und Weise zu verarbeitet ist, ausgeführt wird, kann der zweite Analysierer 436 das Cachekohärenzverzeichnis 432 aktualisieren derart, dass der Kernel, welcher ausgeführt wird, in der Cache-kohärenten Art und Weise verarbeitet wird. Als ein Ergebnis kann ein Datenteilen der CPU 410 und der GPU 420 während der Ausführung eines Kernel durch die Last-Level-Caches LLC getätigt werden. Das heißt, dass geteilte Daten, welche in dem Systemspeicher 445 gespeichert sind, zu einen teilenden Cachebereich repliziert werden können.
  • Die Ausführungsformen der 4, welche obenstehend beschrieben sind, sind auf 3A basiert. Die Ausführungsformen der 4 jedoch können auf die Ausführungsformen der 3B bis 3D durch angemessene Modifikationen/Änderungen angewandt werden.
  • 5 ist eine Ansicht, welche konzeptuell Operationen des ersten Kohärenzauswirkungsanalysierers 434, welcher in 4 veranschaulicht ist, gemäß einigen Ausführungsformen des erfinderischen Konzepts veranschaulicht. Wie obenstehend beschrieben ist, weist ein Programm, welches von einer CPU abgeladen wird, eine Mehrzahl von GPU-Kernels Kernel #1 bis Kernel #N auf, welche nacheinander folgend durch die CPU 410 oder die GPU 420 ausgeführt werden. Für ein besseres Verständnis wird eine Beschreibung unter Bezugnahme auf die 4 und 5 zusammen gegeben werden.
  • Die GPU-Kernels Kernel #1 bis Kernel #N werden durch den Compiler 446 vor der Ausführung analysiert. Der erste Analysierer 434 kann nacheinander folgend einen Kernel, welcher auszuführen ist, basierend auf einem Analyseergebnis (das heißt einer Verteilung von Kernel-Befehlen) klassifizieren. Beispielsweise kann der erste Kohärenzauswirkungsanalysierer 434 Kernels, für welche erwartet wird, dass Datenaustausche zwischen der CPU 410 und der GPU 420 häufig sind, als eine erste Gruppe klassifizieren. Kernels, welche zu der ersten Gruppe, welche durch die CCI angezeigt werden, gehören, können in einer Cache-kohärenten Art und Weise verarbeitet werden. Im Gegensatz dazu kann der erste Analysierer 434 Kernels, für welche erwartet wird, dass Datenaustäusche zwischen der CPU 410 und der GPU 420 selten oder wenig häufig erwartet werden, als eine zweite Gruppe klassifizieren. Kernels der zweiten Gruppe, welche durch die NCCI angezeigt werden, können in einer nicht Cache-kohärenten Art und Weise verarbeitet werden.
  • Danach kann die GPU 420 Kernels von dem Kernel #1 bis zu dem Kernel #N nacheinander folgend auszuführen.
  • 6 ist eine Ansicht, welche konzeptuell Operationen des zweiten Analysierers oder zweiten Kohärenzauswirkungsverfolgers 436, welcher in 4 veranschaulicht ist, veranschaulicht. Für ein besseres Verständnis wird eine Beschreibung unter Bezugnahme auf die 4 und 6 zusammen gegeben werden.
  • Der zweite Kohärenzauswirkungsverfolger 436 kann einen Datenaustausch oder dergleichen zwischen der CPU 410 und der GPU 420 überwachen, während jeder Kernel ausgeführt wird, und kann einen Kernel, welcher ausgeführt wird, basierend auf einem Ergebnis der Überwachung reklassifizieren. Ein Kernel, welcher zum Überwachen und Reklassifizieren angezielt ist, ist ein Kernel der zweiten Gruppe, welche durch die NCCI angezeigt wird. Ein Kernel, für welchen unter den Kernels der zweiten Gruppe bestimmt ist, dass ein Datenaustausch zwischen der CPU 410 und der GPU 420 häufig ist, kann reklassifiziert werden, um zu der ersten Gruppe zu gehören. Beispielsweise kann die Anzahl von Malen eines Austausches und/oder eine Austauschhäufigkeit beziehungsweise Austauschfrequenz berücksichtigt werden. In einer Ausführungsform ist ein Beispiel in 6 veranschaulicht, wenn Kernels Kernel #N-1 und Kernel #N reklassifiziert werden, um zu der ersten Gruppe zu gehören.
  • Der zweite Kohärenzauswirkungsverfolger 436 kann das Cachekohärenzverzeichnis 432 hinsichtlich der reklassifizierten Kernels Kernel #N-1 und Kernel #N aktualisieren. Wenn das Cachekohärenzverzeichnis 432 aktualisiert ist, können ein Datentyp, eine Cacheadresse, Teilungsinformation und Gültigkeitsinformation der reklassifizierten Kernels Kernel #N-1 und Kernel #N aktualisiert werden. Das heißt, dass die CPU 410 und die GPU 420 Daten durch die Last-Level-Caches LLC unter Bezugnahme auf Information des Cachekohärenzverzeichnisses 432 anstelle des Systemspeichers 445 teilen können.
  • Die 7A und 7B sind Ansichten, welche konzeptuell veranschaulichen, wie ein Kernel, welcher von einer CPU abgeladen ist, durch eine GPU gemäß einigen Ausführungsformen des erfinderischen Konzepts ausgeführt wird. Für ein besseres Verständnis wird eine Beschreibung unter Bezugnahme auf die 4 und 6 zusammen gegeben werden.
  • 7A zeigt das Beispiel, in dem Daten nicht zwischen der CPU 410 und der GPU 420 geteilt werden. Ein Kernel, welcher von der CPU 410 abgeladen wird, wird als eine Eingabe der GPU 420 übertragen. Die GPU 420 verarbeitet Threads des abgeladenen Kernel. Beispielsweise können die Ausführungsformen der 7A dem Fall des Initialisierens eines dedizierten Speichers entsprechen, welcher enthalten ist in oder verbunden ist mit der GPU 420. Da die Threads nur durch die GPU 420 verarbeitet werden, werden Daten nicht zwischen der CPU 410 und der GPU 420 geteilt. In diesem Fall kann, da es keine Notwendigkeit gibt, einen Kernel in einer Cache-kohärenten Art und Weise zu verarbeiten, der Kernel in einer nicht Cache-kohärenten Art und Weise verarbeitet werden.
  • 7B zeigt das Beispiel, in dem ein Datenteilen einmal zwischen der CPU 410 und der GPU 420 getätigt wird. Die GPU 420 kann Threads eines Kernel, welcher von der CPU 410 abgeladen wird, verarbeiten, und ein Ergebnis der Verarbeitung wird zu der CPU 410 übertragen. Beispielsweise können die Ausführungsformen der 7B dem Beispiel entsprechen, in dem die GPU 420 alle Operationen durchführt, und die CPU 410 ein Ergebnis der Operationen empfängt und verarbeitet. Auch wenn Daten einmal zwischen der CPU 410 und der GPU 420 geteilt werden, kann ein Kernel, welcher ausgeführt wird, kontinuierlich in der nicht Cache-kohärenten Art und Weise ausgeführt werden.
  • 8 ist eine Ansicht, welche das Beispiel veranschaulicht, in dem Daten häufig zwischen der CPU 410 und der GPU 420 geteilt werden (das heißt dynamisches Teilen). Für ein besseres Verständnis wird eine Beschreibung unter Bezugnahme auf die 4 und 6 zusammen gegeben werden.
  • Beispielsweise wird ein Kernel, welcher von der CPU 410 abgeladen wird, der GPU 420 als eine erste Eingabe Input #1 zugeführt. Die GPU 420 verarbeitet erste Threads #1 gemäß der ersten Eingabe Input #1 und gibt eine erste Ausgabe Output #1 als ein Ergebnis der Verarbeitung aus. Die CPU 410 verarbeitet die erste Ausgabe Output #1, welche ein Zwischenergebnis ist, und das Zwischenergebnis wird der GPU 420 als eine zweite Eingabe Input #2 zugeführt. Eine k-te Ausgabe Output #k, welche durch die GPU 420 verarbeitet wird, kann der CPU 410 durch eine Serie von Prozessen, welche obenstehend beschrieben sind, zugeführt werden.
  • Es wird aus 8 verstanden, dass ein Datenaustausch zwischen der CPU 410 und der GPU 420 häufig ist. Beispielsweise kann, wenn ein Bildframe in eine Mehrzahl von Kacheln unterteilt ist und in einer Einheit einer Kachel verarbeitet wird, ein Datenaustausch zwischen der CPU 410 und der GPU 420 häufig sein. Der Grund ist, dass benachbarte Information einer benachbarten Kachel verwendet werden kann, wenn eine beliebige eine einer Mehrzahl von Kacheln, welche einen Bildframe bilden, verarbeitet wird. Als ein anderes Beispiel kann ein Datenaustausch zwischen der CPU 410 und der GPU 420 häufig sein, wenn eine komplizierte mathematische Operation durchgeführt wird.
  • Der zweite Analysierer oder Kohärenzeingangsverfolger 436 kann einen Datenaustausch zwischen der CPU 410 und der GPU 420 in Echtzeit überwachen. Der zweite Kohärenzauswirkungsverfolger 436 kann bestimmen, dass ein dynamisches Teilen von Daten zwischen der CPU 410 und der GPU 420 getätigt wird basierend auf beispielsweise der Datenmenge, welche zwischen der CPU 410 unter GPU 420 ausgetauscht wird, der Anzahl von Malen, welche Daten ausgetauscht werden etc. Der zweite Analysierer oder zweite Kohärenzauswirkungsverfolger 436 kann einen Kernel, welcher bestimmt ist, Daten dynamisch zu teilen, als die erste Gruppe reklassifizieren. Zusätzlich kann der zweite Analysierer oder zweite Kohärenzauswirkungsverfolger 436 das Cachekohärenzverzeichnis 432 hinsichtlich eines Kernel, welcher ausgeführt wird, aktualisieren.
  • Wenn das Cachekohärenzverzeichnis 432 aktualisiert ist, kann ein Datenteilen zwischen der CPU 410 und der GPU 420 über die Last-Level-Caches LLC anstelle des Systemspeichers 445 durchgeführt werden. Das heißt, dass, auch wenn ein Kernel ausgeführt wird, der Kernel, welcher als zu der ersten Gruppe gehörig reklassifiziert ist, in der Cache-kohärenten Art und Weise verarbeitet werden kann anstelle einer existierenden nicht Cache-kohärenten Art und Weise (das heißt ein Weg zum verarbeiten des reklassifizierten Kernel ändert sich von einer nicht Cache-kohärenten Art und Weise zu einer Cache-kohärenten Art und Weise).
  • Die Beschreibung, welche in 8 gegeben ist, ist auf Ausführungsformen gerichtet, in welchen eine Bestimmung davon, ob Daten dynamisch geteilt werden, auf einem Datenaustausch zwischen der CPU 410 und der GPU 420 basiert ist. Alternativ oder zusätzlich jedoch können andere Kriterien ferner beim Tätigen solch einer Bestimmung angewandt werden. Solche Ausführungsformen werden unter Bezugnahme auf die 9, 10 und 11 beschrieben werden.
  • 9 ist ein Blockschaltbild, welches konzeptuell Operationen zum Bestimmen, dass Daten zwischen einer CPU 510 und einer GPU 520 gemäß einigen Ausführungsformen des erfinderischen Konzepts dynamisch geteilt werden, veranschaulicht. Für ein besseres Verständnis wird eine Beschreibung unter Bezugnahme auf die 4 und 9 zusammen gegeben werden.
  • Zuerst wird angenommen, dass ein Kernel, welcher ausgeführt wird, in einer nicht Cache-kohärenten Art und Weise ausgeführt wird und Verarbeitungsergebnisse Data1 und Data2 der CPU 510 und der GPU 520 in einem Systemspeicher 545 gespeichert werden. Das heißt, dass ein Datenteilen zwischen der CPU 510 und der GPU 520 durch den Systemspeicher 545 ausgeführt wird.
  • Wenn ein Datenaustausch zwischen der CPU 510 und der GPU 520 häufig ist, können ein Befehl und eine Adresse zum Zugreifen auf einen spezifischen Bereich des Systemspeichers 545 häufig erzeugt werden. In diesem Fall kann ein zweiter Analysierer oder zweiter Kohärenzauswirkungsverfolger 536 einen Befehl und/oder eine Adresse zum Zugreifen auf einen Bereich des Systemspeichers 545, in welchem geteilte Daten gespeichert sind, überwachen. Wenn bestimmt wird, dass auf den Bereich des Systemspeichers 545, in welchem geteilte Daten gespeichert sind, häufig zugegriffen wird, kann der zweite Kohärenzauswirkungsverfolger 536 bestimmen, dass ein dynamisches Teilen von Daten durch die CPU 510 und die GPU 520 getätigt wird. Beispielsweise kann die Anzahl von Malen oder die Häufigkeit eines Ausgebens eines Befehls und/oder einer Adresse als ein Kriterium zum Bestimmen eines dynamischen Teilens von Daten betrachtet werden.
  • In dem Beispiel, in dem bestimmt wird, dass ein Verarbeitungsergebnis eines Kernel, welcher durch die GPU 520 ausgeführt wird, häufig durch die CPU 510 geteilt wird, können Daten, welche durch die CPU 510 und die GPU 520 geteilt werden, zu wenigstens einem der Last-Level-Caches LLC der CPU 510 und der GPU 520 repliziert werden. Der zweite Kohärenzauswirkungsverfolger 536 kann ein Cachekohärenzverzeichnis 532 aktualisieren und die CPU 510 und/oder die GPU 520 können auf geteilte Daten unter Bezugnahme auf das aktualisierte Cachekohärenzverzeichnis 532 zugreifen.
  • 10 ist ein Blockschaltbild, welches konzeptuell weitere Operationen zum Bestimmen, dass ein dynamisches Teilen von Daten zwischen einer CPU 610 und einer GPU 620 gemäß einigen Ausführungsformen des erfinderischen Konzepts getätigt wird, veranschaulicht. In den Ausführungsformen der 10 können eine Snoop-Anforderung und eine Antwort, welche ausgegeben wird, um eine Cachekohärenz aufrechtzuerhalten, bei einem Bestimmen verwendet werden, dass ein dynamisches Teilen von Daten zwischen der CPU 610 und der GPU 620 getätigt wird. Für ein besseres Verständnis wird eine Beschreibung unter Bezugnahme auf die 4 und 10 zusammen gegeben werden.
  • Die CPU 610 kann eine Auf-Chip-Zwischenverbindung 690 für den Zweck zum Aufrechterhalten einer Cachekohärenz eines heterogenen Rechensystems 600, welches die CPU 610 und die GPU 620 aufweist, überwachen. Wenn eine Cachekohärenz von Daten, welche in dem Last-Level-Cache LLC der GPU 620 gespeichert sind, aufrechterhalten wird, kann die Auf-Chip-Zwischenverbindung 690 eine Wiederholung, welche der Cachekohärenz entspricht, zu der CPU 610 übertragen, und umgekehrt (das heißt eine Cachekohärenz von Daten, welche in dem Last-Level-Cache LLC der CPU 610 gespeichert sind).
  • Beispielsweise kann, wenn eine Snoop-Anforderung und eine Antwort häufig erzeugt werden, ein Datenteilen durch die Last-Level-Caches LLC der CPU 610 und der GPU 620 getätigt werden. Demnach können geteilte Daten, welche der Snoop-Anforderung und der Antwort zugeordnet sind, Daten sein, welche von einer schnellen Verarbeitung profitieren können.
  • Wenn eine Cachekohärenz in der CPU 610 und/oder der GPU 620 nicht aufrechterhalten wird (das heißt Snoop-Fehlschlag), kann eine Auf-Chip-Zwischenverbindung 690 auf einen Bereich eines Systemspeichers 645 zugreifen, in welchem geteilte Daten gespeichert sind. In diesem Beispiel kann ein zweiter Kohärenzauswirkungsverfolger 636 einen Zugriff auf den Systemspeicher 645, in dem die geteilten Daten gespeichert sind, überwachen. Wie obenstehend beschrieben ist, kann, da der Snoop-Fehlschlag auftreten kann, während Daten häufig zwischen der CPU 610 und der GPU 620 geteilt werden, eine Notwendigkeit vorhanden sein, einen Kernel, welcher in der GPU 620 in einer Cache-kohärenten Art und Weise ausgeführt wird, schnell zu verarbeiten.
  • Der zweite Analysierer 636 kann ein Cachekohärenzverzeichnis (beispielsweise 432 der 4) hinsichtlich der geteilten Daten, welche in dem Systemspeicher 645 gespeichert sind, aktualisieren. Als ein Ergebnis des Aktualisierens können die geteilten Daten, welche in den Systemspeicher 645 gespeichert sind, zu den Last-Level-Caches LLC der CPU 610 und/oder der GPU 620 repliziert werden, und demnach kann eine Cachekohärenz aufrechterhalten werden. Danach kann der Kernel, welcher in der GPU 620 ausgeführt wird, in einer Cache-kohärenten Art und Weise verarbeitet werden.
  • 11 ist ein Blockschaltbild, welches konzeptuell weitere Operationen zum Bestimmen, dass ein dynamisches Teilen von Daten zwischen einer CPU 710 und einer GPU 720 gemäß einigen Ausführungsformen des erfinderischen Konzepts getätigt wird, veranschaulicht. In der Ausführungsform der 11 kann ein geteilter virtueller Speicher (SVM = Shared Virtual Memory = geteilter virtuelle Speicher) bei einem Bestimmen verwendet werden, dass ein dynamisches Teilen von Daten zwischen der CPU 710 und der GPU 720 getätigt wird. Für ein besseres Verständnis wird eine Beschreibung unter Bezugnahme auf die 4 und 11 zusammen gegeben werden.
  • In einem heterogenen Rechensystem, in dem eine Mehrzahl von (insbesondere heterogenen) Prozessoren in einem Chip implementiert sind, kann der geteilte virtuelle Speicher für die heterogenen Prozessoren verwendet werden, um effektiv auf einen Systemspeicher zuzugreifen. Beispielsweise kann ein Datenteilen durch ein Überwachen eines Schreibens von Daten, welche durch die CPU 710 verarbeitet werden, in dem geteilten virtuellen Speicher, und ein Schreiben von Daten, welche durch die GPU 720 verarbeitet werden, in dem geteilten virtuellen Speicher, bestimmt werden. Ähnlich kann ein Lesen von Daten von dem geteilten virtuellen Speicher überwacht werden.
  • Wenn Daten, welche in einem Systemspeicher 745 gespeichert werden, häufig durch die CPU 710 und die GPU 720 geteilt werden, und das Teilen basierend auf einem Ergebnis des Überwachens des Lesens/Schreibens für den geteilten virtuellen Speicher bestimmt wird, kann ein zweiter Kohärenzauswirkungsverfolger 736 ein Cachekohärenzverzeichnis (beispielsweise 432 der 4) hinsichtlich der geteilten Daten, welche in dem Systemspeicher 745 gespeichert sind, aktualisieren. Als ein Ergebnis des Aktualisierens können die geteilten Daten, welche in dem Systemspeicher 745 gespeichert sind, zu den Last-Level-Caches LLC der CPU 710 und/oder der GPU 720 repliziert werden. Danach kann der Kernel, welcher in der GPU 720 ausgeführt wird, in einer Cache-kohärenten Art und Weise verarbeitet werden.
  • Verschiedene Kriterien können verwendet werden, um zu bestimmen, ob ein dynamisches Teilen von Daten zwischen der CPU 710 und der GPU 720 getätigt wird. Beispielsweise kann in dem zweiten Kohärenzauswirkungsverfolger 736 die Anzahl von Malen, welche ein Cache-Fehlschlag auftritt und/oder die Häufigkeit eines Zugriffs auf den Systemspeicher 745 überwacht werden.
  • 12 ist ein Flussdiagramm, welches Verfahren zum Steuern einer Cachekohärenz eines heterogenen Rechensystems gemäß einigen Ausführungsformen des erfinderischen Konzepts veranschaulicht. Für ein besseres Verständnis wird eine Beschreibung unter Bezugnahme auf die 4, 6 und 12 zusammen gegeben werden.
  • Bei Block S110 können GPU-Kernels, welche von der CPU 410 abgeladen werden, der GPU 420 zugeführt werden oder für diese vorgesehen werden. Die Kernels, welche von der CPU 410 abgeladen werden, können ein Programm bilden und die Mehrzahl von Kernels wird nacheinander folgend durch die GPU 420 ausgeführt.
  • Bei Block S120 wird eine erste Analyse durch den ersten Analysierer 434 getätigt bevor die GPU-Kernels ausgeführt werden. Der erste Analysierer 434 kann die Kernels in zwei Gruppen klassifizieren basierend auf einer Kernelbefehlsverteilung, welche von dem Compiler 446 empfangen wird. Beispielsweise kann eine erste Gruppe Kernels aufweisen, in welchen ein Datenteilen häufig zwischen der CPU 410 und der GPU 420 getätigt wird, und eine zweite Gruppe kann Kernels aufweisen, in welchen ein Datenteilen selten oder nicht häufig zwischen der CPU 410 und der GPU 420 getätigt wird. Beispielsweise kann ein Befehl, welcher für eine Bestimmung von dynamischem Teilen angezielt wird, ein Befehl sein, welcher einem Laden von der CPU 410 zu der GPU 420 und/oder einer Eingabe von der GPU 420 zu der CPU 410 zugeordnet ist.
  • Bei Block S130 können die GPU-Kernels ausgeführt werden. Wie obenstehend beschrieben ist, können die GPU-Kernels nacheinander folgend ausgeführt werden. Ebenso können die Kernels der ersten Gruppe in einer Cache-kohärenten Art und Weise ausgeführt werden, und die Kernels der zweiten Gruppe können in einer nicht Cache-kohärenten Art und Weise ausgeführt werden.
  • Bei Block S140 können einer oder mehrere der Kernels der zweiten Gruppe durch den zweiten Analysierer 436 reklassifiziert werden. Auch wenn ein Kernel basierend auf der Kernelbefehlsverteilung, welche von dem Compiler 446 empfangen wird, als zu der zweiten Gruppe gehörend klassifiziert wird, kann ein Kernel, welcher einem dynamischen Teilen von Daten mit der CPU 410 zugeordnet ist, existieren. Demnach kann der zweite Analysierer 436 einen Kernel, welcher als dynamisch datenteilend bestimmt wird, als die erste Gruppe reklassifizieren.
  • Der Kernel, welcher als zu der ersten Gruppe gehörend reklassifiziert wird, kann, auch wenn er durch die GPU 420 verarbeitet wird, derart geändert werden, dass der Kernel in einer Cache-kohärenten Art und Weise verarbeitet wird. Beispielsweise kann in der Ausführungsform der 2 der Auf-Chip-Netzwerkschalter des Routers „R“ eine angemessene Schaltoperation durchführen derart, dass der Kernel, welcher in die erste Gruppe reklassifiziert ist, in der Cache-kohärenten Art und Weise verarbeitet wird.
  • Bei Block S150 können Ergebnisse der Kernels, welche durch die GPU 420 verarbeitet werden, durch die CPU 410 gesammelt und verarbeitet werden, und ein Rendering-Bild oder ein berechnetes Ergebnis, welches mit den GPU-Kernels verbunden ist, kann für einen Nutzer vorgesehen werden.
  • 13 ist ein Flussdiagramm, welches Verfahren zum Steuern einer Cachekohärenz eines heterogenen Rechensystems gemäß einigen Ausführungsformen des erfinderischen Konzepts veranschaulicht. Für ein besseres Verständnis wird eine Beschreibung unter Bezugnahme auf die 4, 6 und 13 zusammen gegeben werden.
  • Bei Block S205 können Kernels, welche von der CPU 410 abgeladen werden, der GPU 420 zugeführt werden oder für diese vorgesehen werden.
  • Bei Block S210 werden die GPU-Kernels vor der Ausführung analysiert, um zu bestimmen, ob jeder Kernel eine speichergebundene Charakteristik hat. Beispielsweise kann der erste Analysierer 434 ein Attribut jedes Kernel basierend auf einer Kernelbefehlsverteilung bestimmen, welche von dem Compiler 446 empfangen wird. Beispielsweise kann ein Attribut, welches für eine Verwendung bei der Bestimmung angezielt wird, ein Befehl sein, welcher einem Laden von der CPU 410 zu der GPU 420 zugeordnet ist, und/oder ein Befehl, welcher einem verarbeiteten Ergebnis, welches von der GPU 420 zu der CPU 410 ausgegeben wird, zugeordnet ist.
  • Wenn bestimmt wird, dass ein Kernel die speichergebundene Charakteristik hat (Ja), wird Block S215 ausgeführt. Dies bedeutet, dass Daten, welche dem Kernel zugeordnet sind, welcher durch die GPU 420 verarbeitet wird, häufig durch die CPU 410 geteilt werden. Im Gegensatz dazu wird, wenn bestimmt wird, dass ein Kernel die berechnungsgebundene Charakteristik hat (Nein), Block S235 ausgeführt. Dies bedeutet, dass Daten, welche dem Kernel zugeordnet sind, welcher durch die GPU 420 verarbeitet wird, selten oder nicht häufig durch die CPU 410 geteilt werden.
  • Bei Block S215 kann ein Kernel in einer Cache-kohärenten Art und Weise verarbeitet werden. Das heißt, dass ein Ergebnis des Verarbeitens eines GPU-Kernel bei der GPU 420 durch die Last-Level-Caches LLC geteilt werden kann. Ein Kernel wird bei Block S210 als die speichergebundene Charakteristik habend bestimmt, da Daten häufig zwischen der CPU 410 und der GPU 420 geteilt werden. Ein Zwischenverarbeitungsergebnis des GPU-Kernel kann der CPU 410 zugeführt werden, und die CPU 410 kann das Verarbeitungsergebnis ansammeln oder kann eine folgende zusätzliche Verarbeitung durchführen (Block S220).
  • Bei Block S225 wird eine Bestimmung getätigt, ob ein Kernel, welcher gegenwärtig ausgeführt wird, der letzte Kernel ist. Wenn bestimmt wird, dass der Kernel, welcher gegenwärtig ausgeführt wird, der letzte Kernel ist (Ja), wird Block S230 ausgeführt. Wenn bestimmt wird, dass der Kernel, welcher gegenwärtig ausgeführt wird, nicht der letzte Kernel ist (Nein), schreitet der Prozess zu Block S205 voran.
  • Bei Block S230 können Ergebnisse der Kernels, welche durch die GPU 420 verarbeitet werden, durch die CPU 410 gesammelt und verarbeitet werden, und ein Renderingbild oder ein berechnetes Ergebnis, welches den GPU-Kernels zugeordnet ist, kann für einen Nutzer vorgesehen werden.
  • Wenn der Kernel die berechnungsgebundene Charakteristik hat, wird bei Block S235 der Kernel in einer nicht Cache-kohärenten Art und Weise verarbeitet. Dies bedeutet, dass Daten, welche dem Kernel zugeordnet sind, welcher durch die GPU 420 verarbeitet wird, selten oder nicht häufig durch die CPU 410 geteilt werden. Daten, welche dem Kernel zugeordnet sind, welcher durch die GPU 420 verarbeitet wird, können durch den Systemspeicher 445 anstelle der Last-Level-Caches LLC geteilt werden.
  • Bei Block S240 kann der zweite Analysierer oder zweite Kohärenzauswirkungsverfolger 136 ein Datenteilen zwischen der CPU 410 und der GPU 420 überwachen.
  • Bei Block S245 kann der zweite Analysierer oder der zweite Kohärenzauswirkungsverfolger 136 bestimmen, ob Daten häufig zwischen der CPU 410 und der GPU 420 ausgetauscht werden (das heißt dynamisches Teilen). Beispielsweise kann der zweite Kohärenzauswirkungsverfolger 436 bestimmen, ob Daten häufig zwischen der CPU 410 und der GPU 420 ausgetauscht werden basierend auf beispielsweise einem Datenaustausch zwischen der CPU 410 und der GPU 420, einer Snoop-Anforderung und Antwort, einer Lese-/Schreiboperation für einen geteilten virtuellen Speicher, einem Zugriff auf einen Systemspeicher aufgrund eines kontinuierlichen Cache-Fehlschlages etc.
  • Wenn bestimmt wird, dass Daten dynamisch geteilt werden (Ja), wird Block S250 ausgeführt; falls nicht (Nein), schreitet der Prozess zu Block S255 voran.
  • Bei Block S250 kann ein Cachekohärenzverzeichnis, welches einem GPU-Kernel zugeordnet ist, welcher ausgeführt wird, aktualisiert werden. Als ein Ergebnis kann der GPU-Kernel in einer Cache-kohärenten Art und Weise verarbeitet werden. Das heißt, ein Ergebnis des Verarbeitens des GPU-Kernel kann durch die CPU 410 und die GPU 420 durch die Last-Level-Caches LLC geteilt werden.
  • Bei Block S255 kann der GPU-Kernel, welcher ausgeführt wird, vollständig verarbeitet werden. Da bestimmt wird, dass Daten, welche dem GPU-Kernel, welcher ausgeführt wird, zugeordnet sind, nicht dynamisch geteilt werden, kann der GPU-Kernel kontinuierlich in einer nicht Cache-kohärenten Art und Weise verarbeitet werden.
  • Gemäß Ausführungsformen des erfinderischen Konzepts kann ein heterogenes Rechensystem vorgesehen sein, welches eine Cachekohärenz adaptiv basierend auf dem Teilen von Daten zwischen einer CPU und einer GPU steuert.
  • Zusätzlich können gemäß Ausführungsformen des erfinderischen Konzepts Kernels basierend auf Attributen von Befehlen von Kernels klassifiziert werden. In einigen Ausführungsformen kann ein Kernel basierend auf dem Austausch von Daten zwischen der CPU und der GPU reklassifiziert werden, während der Kernel ausgeführt wird, wodurch es erlaubt wird, dass eine Cachekohärenz adaptiv gesteuert wird.
  • Weitere Definitionen und Ausführungsformen:
  • In der obigen Beschreibung von verschiedenen Ausführungsformen des vorliegenden erfinderischen Konzepts können Aspekte des vorliegenden erfinderischen Konzepts hierin in einer beliebigen von einer Anzahl von patentierbaren Klassen oder Kontexten, welche einen beliebigen neuen und nützlichen Prozess, Maschine, Herstellung oder Komposition von Gegenständen oder eine beliebige neue und nützliche Verbesserung davon aufweisen veranschaulicht und beschrieben sein. Demzufolge können Aspekte des vorliegenden erfinderischen Konzepts gänzlich durch Hardware, gänzlich durch Software (einschließlich Firmware, residenter Software, Mikrocode etc.) oder ein Kombinieren von Software- und Hardwareimplementation, auf welche alle allgemein Bezug genommen werden kann hierin als „eine Schaltung“, „ein Modul“, „eine Komponente“, „ein Teil“, „eine Einheit“ oder „ein System“ implementiert sein. Beispielsweise kann die Hardware eine elektrische Schaltung, eine elektronische Schaltung, einen Prozessor, einen Computer, eine integrierte Schaltung, integrierte Schaltungskerne, einen Drucksensor, einen Trägheitssensor, ein mikroelektromechanisches System (MEMS), ein passives Element oder eine Kombination davon aufweisen. Ferner können Aspekte des vorliegenden erfinderischen Konzepts die Form eines Computerprogrammprodukts annehmen, welches eine oder mehrere computerlesbare Medien aufweist, welche einen computerlesbaren Programmcode darauf ausgeführt haben.
  • Eine beliebige Kombination von einem oder mehreren computerlesbaren Medien kann verwendet werden. Die computerlesbaren Medien können ein computerlesbares Signalmedium oder ein computerlesbares Speichermedium sein. Ein computerlesbares Speichermedium kann beispielsweise sein, ist jedoch nicht beschränkt auf ein elektronisches, magnetisches, optisches, elektromagnetisches oder Halbleiter-System, -Vorrichtung oder -Gerät oder eine beliebige geeignete Kombination der vorangehenden. Spezifischere Beispiele (eine nicht erschöpfende Liste) des computerlesbaren Speichermediums würden die Folgenden aufweisen: Eine tragbare Computerdiskette, eine Festplatte, einen Direktzugriffspeicher (RAM = Random Access Memory = Direktzugriffsspeicher), einen Nur-Lese-Speicher (ROM = Read Only Memory = Nur-Lese-Speicher), einen löschbaren programmierbaren Nur-Lese-Speicher (EPROM = Erasable Programmable Read Only Memory = nur löschbarer programmierbarer Nur-Lese-Speicher oder Flashspeicher), eine geeignete optische Faser mit einem Repeater, ein tragbarer Kompakt-Disc-Nur-Lese-Speicher (CD-ROM), eine optische Speichervorrichtung, eine magnetische Speichervorrichtung oder eine beliebige geeignete Kombination der vorangehenden. In dem Zusammenhang dieses Dokuments kann ein computerlesbares Speichermedium ein materielles Medium sein, welches ein Programm für eine Verwendung durch oder in Verbindung mit einem Befehlsausführungssystem, Vorrichtung oder Gerät enthalten oder speichern kann.
  • Ein computerlesbares Signalmedium kann ein verbreitetes Datensignal mit computerlesbarem Programmcode, welcher darin ausgeführt ist, aufweisen, beispielsweise in einem Basisband oder als ein Teil einer Trägerwelle. Solch ein verbreitetes Signal kann eine beliebige einer Vielzahl von Formen annehmen einschließlich, jedoch nicht beschränkt auf elektromagnetisch, optisch oder eine beliebige geeignete Kombination davon. Ein computerlesbares Signalmedium kann ein beliebiges computerlesbares Medium sein, welches nicht ein computerlesbares Speichermedium ist und das kommunizieren, sich verbreiten oder ein Programm zur Verwendung durch oder in Verbindung mit einem Befehlsausführungs-System, -Vorrichtung oder -Gerät transportieren kann. Programmcode, welcher auf einem computerlesbaren Signalmedium ausgeführt ist, kann unter Verwendung eines beliebigen geeigneten Mediums ausgeführt sein einschließlich jedoch nicht beschränkt auf drahtlos, festverdrahtet, optisches Faserkabel, RF etc. oder eine beliebige geeignete Kombination der vorangehenden.
  • Computerprogrammcode zum Ausführen von Operationen für Aspekte des vorliegenden erfinderischen Konzepts können in einer beliebigen Kombination von einer oder mehreren Programmiersprachen geschrieben sein einschließlich einer objektorientierten Programmiersprache wie beispielsweise Java, Scala, Smalltalk, Eiffel, JADE, Emerald, C++, C#, VB.NET, Python oder dergleichen, herkömmlicher prozeduraler Programmiersprachen wie beispielsweise die „C“-Programmiersprache, Visual Basic, Fortran 2003, Perl, COBOL 2002, PHP, ABAP, LabVIEW, dynamischer Programmiersprachen wie beispielsweise Python, Ruby und Groovy, oder anderer Programmiersprachen. Der Programmcode kann vollständig auf dem Computer des Nutzers, teilweise auf dem Computer des Nutzers, als ein Stand-Alone-Softwarepaket, teilweise auf dem Computer des Nutzers und teilweise auf einem entfernten Computer oder insgesamt auf dem entfernten Computer oder Server ausgeführt werden. In dem letzteren Szenario kann der entfernte Computer mit dem Computer des Nutzers durch einen beliebigen Typ von Netzwerk verbunden sein einschließlich ein Lokalbereichsnetzwerk (LAN) oder ein Weitbereichsnetzwerk (WAN), oder die Verbindung kann zu einem externen Computer (beispielsweise über das Internet unter Verwendung eines Internetserviceproviders) getätigt sein oder in einer Cloude-Berechnungsumgebung oder als ein Dienst wie beispielsweise ein Software as Service (SaaS) angeboten werden.
  • Aspekte des vorliegenden erfinderischen Konzepts sind hierin unter Bezugnahme auf Flussdiagrammveranschaulichungen und/oder Blockschaltbilder von Verfahren, Vorrichtungen (Systemen) und Computerprogrammprodukten gemäß den Ausführungsformen der Offenbarung beschrieben. Es wird verstanden werden, dass jeder Block der Flussdiagrammveranschaulichungen und/oder Blockschaltbilder und Kombinationen von Blöcken in den Flussdiagrammveranschaulichungen und/oder Blockschaltbildern durch Computerprogrammbefehle implementiert werden können. Diese Computerprogrammbefehle können für einen Prozessor eines Allgemeinzweckcomputers, eines Spezialzweckcomputers oder einer anderen programmierbaren Datenverarbeitungsvorrichtung vorgesehen sein, um eine Maschine zu erzeugen derart, dass die Befehle, welche über den Prozessor des Computers oder eine andere programmierbare Befehlsausführungsvorrichtung ausgeführt werden, einen Mechanismus zum Implementieren der Funktionen/Tätigkeiten, welche in dem Flussdiagramm und/oder Blockschaltbildblöcken oder Blöcken spezifiziert sind, erzeugen.
  • Diese Computerprogrammbefehle können ebenso in einem computerlesbaren Medium gespeichert sein, welches, wenn es ausgeführt wird, einen Computer, andere programmierbare Datenverarbeitungsvorrichtungen oder andere Geräte leiten kann, um in einer bestimmten Art und Weise zu funktionieren derart, dass die Befehle, wenn sie in dem computerlesbaren Medium gespeichert sind, einen Herstellungsgegenstand erzeugen, welcher Befehle aufweist, welche wenn sie ausgeführt werden, einen Computer veranlassen, die Funktion/Tätigkeit, welche in dem Flussdiagramm- und/oder Blockschaltbildblock oder Blöcken spezifiziert sind, zu implementieren. Die Computerprogrammbefehle können ebenso auf einen Computer, andere programmierbare Befehlsausführungsvorrichtungen oder andere Geräte geladen werden, um eine Serie von Operationsschritten, welche auf dem Computer, anderen programmierbaren Vorrichtungen oder anderen Geräten durchzuführen sind, zu veranlassen, einen computerimplementierten Prozess zu erzeugen derart, dass die Befehle, welche auf dem Computer oder anderen programmierbaren Vorrichtungen ausgeführt werden, Prozesse zum Implementieren der Funktionen/Tätigkeiten vorsehen, welche in dem Flussdiagramm- und/oder Blockschaltbild-Block oder Blöcken spezifiziert sind.
  • Das Flussdiagramm und Blockschaltbilder in den Figuren veranschaulichen die Architektur, Funktionalität und den Betrieb von möglichen Implementierungen des Systems, Verfahren und Computerprogrammprodukten gemäß verschiedenen Aspekten des vorliegenden erfinderischen Konzepts. In dieser Hinsicht kann jeder Block in dem Flussdiagramm oder den Blockschaltbildern ein Modul, ein Segment oder einen Abschnitt von Code repräsentieren, welcher eine oder mehrere ausführbare Befehle zum Implementieren der spezifizierten logischen Funktion(en) aufweist. Es sollte ebenso festhalten werden, dass in einigen alternativen Implementierungen die Funktionen, welche in dem Block angemerkt sind, außerhalb der Reihenfolge, welche in den Figuren angemerkt ist, auftreten können. Beispielsweise können zwei Blöcke, welche aufeinander folgend gezeigt sind, in der Tat im Wesentlichen gleichzeitig ausgeführt werden oder die Blöcke können manchmal in der umgekehrten Reihenfolge ausgeführt werden, abhängig von der Funktionalität, welche involviert ist. Es wird ebenso festgehalten werden, dass jeder Block der Blockschaltbilder und/oder Flussdiagrammveranschaulichung und Kombinationen von Blöcken in den Blockschaltbildern und/oder der Flussdiagrammveranschaulichung durch Spezialzweck-hardwarebasierte Systeme implementiert werden kann, welche die spezifizierten Funktionen oder Tätigkeiten durchführen, oder Kombinationen von Spezialzweck-Hardware und Computerbefehlen.
  • Während das erfinderische Konzept unter Bezugnahme auf beispielhafte Ausführungsform davon beschrieben wurde, wird es für Fachleute offensichtlich sein, dass verschiedene Änderungen und Modifikationen daran getätigt werden können, ohne von dem Gedanken und Umfang des erfinderischen Konzepts, wie es in den folgenden Ansprüchen erläutert ist, abzuweichen.
  • ZITATE ENTHALTEN IN DER BESCHREIBUNG
  • Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.
  • Zitierte Patentliteratur
    • KR 1020180009400 [0001]

Claims (10)

  1. Heterogenes Rechensystem (100, 200, 300a, 300b, 300c, 300d, 400, 600) das Folgendes aufweist: einen ersten Prozessor (110, 310a, 310b, 310c, 310d, 410, 510, 610, 710), einen zweiten Prozessor (120, 320a, 320b, 320c, 320d, 420, 520, 620, 720), welcher konfiguriert ist, um nacheinander folgend eine Mehrzahl von Kernels auszuführen, welche von dem ersten Prozessor (110, 310a, 310b, 310c, 310d, 410, 510, 610, 710) abgeladen werden, wobei der erste Prozessor (110, 310a, 310b, 310c, 310d, 410, 510, 610, 710) und der zweite Prozessor (120, 320a, 320b, 320c, 320d, 420, 520, 620, 720) heterogen sind; und einen Kohärenzcontroller (130, 230, 330a, 330b, 330c, 430), welcher konfiguriert ist, um jeden der Mehrzahl von Kernels in eine einer ersten Gruppe und einer zweiten Gruppe zu klassifizieren basierend auf Attributen von Befehlen, welche in jedem der Mehrzahl von Kernels enthalten sind, bevor die Mehrzahl von Kernels ausgeführt wird, und ferner konfiguriert ist, um einen der Mehrzahl von Kernels von der zweiten Gruppe zu der ersten Gruppe zu reklassifizieren basierend auf einer Transaktion zwischen dem ersten Prozessor (110, 310a, 310b, 310c, 310d, 410, 510, 610, 710) und dem zweiten Prozessor (120, 320a, 320b, 320c, 320d, 420, 520, 620, 720) während der Ausführung des einen der Mehrzahl von Kernels.
  2. Heterogenes Rechensystem (100, 200, 300a, 300b, 300c, 300d, 400, 600) nach Anspruch 1, wobei der erste Prozessor (110, 310a, 310b, 310c, 310d, 410, 510, 610, 710) eine zentrale Verarbeitungseinheit (CPU) ist, und der zweite Prozessor (120, 320a, 320b, 320c, 320d, 420, 520, 620, 720) eine Grafikverarbeitungseinheit (GPU) ist.
  3. Heterogenes Rechensystem (100, 200, 300a, 300b, 300c, 300d, 400, 600) nach Anspruch 1, wobei ein erster einer der Mehrzahl von Kernels, welcher in die erste Gruppe klassifiziert ist, in einer Cache-kohärenten Art und Weise ausgeführt wird, in der ein Teilen von ersten Daten durch den ersten Prozessor (110, 310a, 310b, 310c, 310d, 410, 510, 610, 710) und den zweiten Prozessor (120, 320a, 320b, 320c, 320d, 420, 520, 620, 720) durch ein Verwenden wenigstens eines von Last-Level-Caches des ersten Prozessors (110, 310a, 310b, 310c, 310d, 410, 510, 610, 710) und des zweiten Prozessors (120, 320a, 320b, 320c, 320d, 420, 520, 620, 720) durchgeführt wird, und wobei ein zweiter einer der Mehrzahl von Kernels, welcher in die zweite Gruppe klassifiziert ist, in einer nicht Cache-kohärenten Art und Weise ausgeführt wird, in der ein Teilen von zweiten Daten durch den ersten Prozessor (110, 310a, 310b, 310c, 310d, 410, 510, 610, 710) und den zweiten Prozessor (120, 320a, 320b, 320c, 320d, 420, 520, 620, 720) durch ein Verwenden eines externen Systemspeichers durchgeführt wird.
  4. Heterogenes Rechensystem (100, 200, 300a, 300b, 300c, 300d, 400, 600) nach Anspruch 1, wobei der Kohärenzcontroller (130, 230, 330a, 330b, 330c, 430) Folgendes aufweist: einen ersten Analysierer (434), welcher konfiguriert ist, um jeden der Mehrzahl von Kernels in eine der ersten Gruppe und der zweiten Gruppe basierend auf den Attributen der Befehle, welche in jedem der Mehrzahl von Kernels enthalten sind, zu klassifizieren, bevor die Mehrzahl von Kernels ausgeführt wird, einen zweiten Analysierer (136, 436, 536, 636), welcher konfiguriert ist, um den einen der Mehrzahl von Kernels von der zweiten Gruppe zu der ersten Gruppe zu reklassifizieren basierend auf einem Grad, in welchem Daten durch den ersten Prozessor (110, 310a, 310b, 310c, 310d, 410, 510, 610, 710) während der Ausführung des einen der Mehrzahl von Kernels geteilt werden; und ein Cachekohärenzverzeichnis (432, 532), welches konfiguriert ist, um Information über den einen der Mehrzahl von Kernels zu speichern.
  5. Heterogenes Rechensystem (100, 200, 300a, 300b, 300c, 300d, 400, 600) nach Anspruch 4, wobei das Cachekohärenzverzeichnis (432, 532) konfiguriert ist, um wenigstens eines eines Datentyps, einer Cacheadresse, einer Teilungsinformation und einer Gültigkeitsinformation von Daten, welche durch den ersten Prozessor (110, 310a, 310b, 310c, 310d, 410, 510, 610, 710) oder den zweiten Prozessor (120, 320a, 320b, 320c, 320d, 420, 520, 620, 720) referenziert werden, zu speichern.
  6. Heterogenes Rechensystem (100, 200, 300a, 300b, 300c, 300d, 400, 600) nach Anspruch 1, wobei die Befehle einen arithmetischen Befehl, einen Ladebefehl von dem ersten Prozessor (110, 310a, 310b, 310c, 310d, 410, 510, 610, 710) zu dem zweiten Prozessor (120, 320a, 320b, 320c, 320d, 420, 520, 620, 720), einen Speicherbefehl von dem zweiten Prozessor (120, 320a, 320b, 320c, 320d, 420, 520, 620, 720) zu dem ersten Prozessor (110, 310a, 310b, 310c, 310d, 410, 510, 610, 710) und einen Texturbefehl aufweisen.
  7. Heterogenes Rechensystem (100, 200, 300a, 300b, 300c, 300d, 400, 600) nach Anspruch 6, wobei der Kohärenzcontroller (130, 230, 330a, 330b, 330c, 430) ferner konfiguriert ist, um: jeden der Mehrzahl von Kernels in eine der ersten Gruppe und der zweiten Gruppe zu klassifizieren basierend auf einem Verhältnis einer Anzahl der Ladebefehlsinstruktion und der Speicherbefehlsinstruktion aus den Instruktionen, welche in jedem der Mehrzahl von Kernels enthalten sind.
  8. Heterogenes Rechensystem (100, 200, 300a, 300b, 300c, 300d, 400, 600) nach Anspruch 1, wobei der Kohärenzcontroller (130, 230, 330a, 330b, 330c, 430) ferner konfiguriert ist, um den einen der Mehrzahl von Kernels aus der zweiten Gruppe zu der ersten Gruppe zu reklassifizieren basierend auf wenigstens einem einer Häufigkeit, mit welcher Daten, welche dem einen der Mehrzahl von Kernels zugeordnet sind, durch den ersten Prozessor (110, 310a, 310b, 310c, 310d, 410, 510, 610, 710) ausgetauscht werden, und einer Anzahl von Malen, welche die Daten, welche dem einen der Mehrzahl von Kernels zugeordnet sind, durch den ersten Prozessor (110, 310a, 310b, 310c, 310d, 410, 510, 610, 710) ausgetauscht werden.
  9. Verfahren zum Betreiben eines heterogenen Rechensystems (100, 200, 300a, 300b, 300c, 300d, 400, 600), das Folgendes aufweist: ein Abladen einer Mehrzahl von Kernels von dem ersten Prozessor (110, 310a, 310b, 310c, 310d, 410, 510, 610, 710) zu dem zweiten Prozessor (120, 320a, 320b, 320c, 320d, 420, 520, 620, 720), wobei der erste Prozessor (110, 310a, 310b, 310c, 310d, 410, 510, 610, 710) und zweite Prozessor (120, 320a, 320b, 320c, 320d, 420, 520, 620, 720) heterogen sind; ein Klassifizieren jedes der Mehrzahl von Kernels in eine einer ersten Gruppe und einer zweiten Gruppe basierend auf Attributen von Befehlen, welche in jedem der Mehrzahl von Kernels enthalten sind, ein nacheinander folgendes Ausführen der Mehrzahl von Kernels unter Verwendung des zweiten Prozessors (120, 320a, 320b, 320c, 320d, 420, 520, 620, 720), wobei erste eine der Mehrzahl von Kernels, welche zu der ersten Gruppe gehören, in einer Cache-kohärenten Art und Weise ausgeführt werden, und wobei zweite eine der Mehrzahl von Kernels, welche zu der zweiten Gruppe gehören, in einer nicht Cache-kohärenten Art und Weise ausgeführt werden; und ein Reklassifizieren eines der zweiten einen der Mehrzahl von Kernels von der zweiten Gruppe zu der ersten Gruppe basierend auf einer Transaktion zwischen dem ersten Prozessor (110, 310a, 310b, 310c, 310d, 410, 510, 610, 710) und dem zweiten Prozessor (120, 320a, 320b, 320c, 320d, 420, 520, 620, 720) während der Ausführung des einen der zweiten einen der Mehrzahl von Kernels.
  10. Verfahren nach Anspruch 9, wobei erste eine der Mehrzahl von Kernels durch ein Teilen von ersten Daten durch den ersten Prozessor (110, 310a, 310b, 310c, 310d, 410, 510, 610, 710) und den zweiten Prozessor (120, 320a, 320b, 320c, 320d, 420, 520, 620, 720) unter Verwendung wenigstens eines von Last-Level-Caches des ersten Prozessors (110, 310a, 310b, 310c, 310d, 410, 510, 610, 710) und des zweiten Prozessors (120, 320a, 320b, 320c, 320d, 420, 520, 620, 720) ausgeführt werden, und wobei die zweiten einen der Mehrzahl von Kernels durch ein Teilen von zweiten Daten durch den ersten Prozessor (110, 310a, 310b, 310c, 310d, 410, 510, 610, 710) und den zweiten Prozessor (120, 320a, 320b, 320c, 320d, 420, 520, 620, 720) unter Verwendung eines externen Systemspeichers ausgeführt werden.
DE102018132781.1A 2018-01-25 2018-12-19 Heterogenes Rechensystem, welches konfiguriert ist, um eine Cachekohärenz adaptiv zu steuern Pending DE102018132781A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR10-2018-0009400 2018-01-25
KR1020180009400A KR102533241B1 (ko) 2018-01-25 2018-01-25 적응적으로 캐시 일관성을 제어하도록 구성된 이종 컴퓨팅 시스템

Publications (1)

Publication Number Publication Date
DE102018132781A1 true DE102018132781A1 (de) 2019-07-25

Family

ID=67145221

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102018132781.1A Pending DE102018132781A1 (de) 2018-01-25 2018-12-19 Heterogenes Rechensystem, welches konfiguriert ist, um eine Cachekohärenz adaptiv zu steuern

Country Status (4)

Country Link
US (1) US10621093B2 (de)
KR (1) KR102533241B1 (de)
CN (1) CN110083547A (de)
DE (1) DE102018132781A1 (de)

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10474458B2 (en) 2017-04-28 2019-11-12 Intel Corporation Instructions and logic to perform floating-point and integer operations for machine learning
KR102655094B1 (ko) * 2018-11-16 2024-04-08 삼성전자주식회사 메모리를 공유하는 이종의 프로세서들을 포함하는 스토리지 장치 및 그것의 동작 방법
WO2020190807A1 (en) 2019-03-15 2020-09-24 Intel Corporation Systolic disaggregation within a matrix accelerator architecture
CN113396400A (zh) 2019-03-15 2021-09-14 英特尔公司 用于针对高速缓存操作提供层级开放划分扇区和可变扇区大小的系统和方法
US11934342B2 (en) 2019-03-15 2024-03-19 Intel Corporation Assistance for hardware prefetch in cache access
EP4130988A1 (de) 2019-03-15 2023-02-08 INTEL Corporation Systeme und verfahren zur cache-optimierung
CN110381322B (zh) * 2019-07-15 2023-03-14 腾讯科技(深圳)有限公司 视频流解码方法、装置、终端设备及存储介质
CN110990151A (zh) * 2019-11-24 2020-04-10 浪潮电子信息产业股份有限公司 一种基于异构计算平台的业务处理方法
US11716405B1 (en) * 2021-04-14 2023-08-01 Splunk Inc. System and method for identifying cache miss in backend application
CN113609065A (zh) * 2021-07-16 2021-11-05 山东云海国创云计算装备产业创新中心有限公司 一种cpu和gpu数据交互的方法、装置、设备及可读介质
US11899585B2 (en) 2021-12-24 2024-02-13 Western Digital Technologies, Inc. In-kernel caching for distributed cache
US11934663B2 (en) 2022-01-10 2024-03-19 Western Digital Technologies, Inc. Computational acceleration for distributed cache
US11797379B2 (en) 2022-02-04 2023-10-24 Western Digital Technologies, Inc. Error detection and data recovery for distributed cache
CN117215992B (zh) * 2023-11-09 2024-01-30 芯原科技(上海)有限公司 异构内核处理器、异构处理器和电源管理方法
CN118012818B (zh) * 2024-04-10 2024-07-19 山东省计算中心(国家超级计算济南中心) 一种基于新一代申威众核处理器的进程间通信优化方法

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20180009400A (ko) 2016-07-18 2018-01-29 주식회사 포스코 압연 공정용 전단 장치 및 방법

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB9704542D0 (en) 1997-03-05 1997-04-23 Sgs Thomson Microelectronics A cache coherency mechanism
GB9806184D0 (en) 1998-03-23 1998-05-20 Sgs Thomson Microelectronics A cache coherency mechanism
US20040111563A1 (en) * 2002-12-10 2004-06-10 Edirisooriya Samantha J. Method and apparatus for cache coherency between heterogeneous agents and limiting data transfers among symmetric processors
KR100515059B1 (ko) * 2003-07-22 2005-09-14 삼성전자주식회사 멀티프로세서 시스템 및 멀티프로세서 시스템의 캐쉬일관성 유지 방법
US20060112226A1 (en) * 2004-11-19 2006-05-25 Hady Frank T Heterogeneous processors sharing a common cache
US8860741B1 (en) 2006-12-08 2014-10-14 Nvidia Corporation Graphics processor with memory management unit and cache coherent link
US8531471B2 (en) 2008-11-13 2013-09-10 Intel Corporation Shared virtual memory
US8397088B1 (en) 2009-07-21 2013-03-12 The Research Foundation Of State University Of New York Apparatus and method for efficient estimation of the energy dissipation of processor based systems
US8937622B2 (en) 2010-09-20 2015-01-20 Qualcomm Incorporated Inter-processor communication techniques in a multiple-processor computing platform
CN102270180B (zh) * 2011-08-09 2014-04-02 清华大学 一种多核处理器系统的管理方法
US9373182B2 (en) * 2012-08-17 2016-06-21 Intel Corporation Memory sharing via a unified memory architecture
US9170948B2 (en) 2012-12-23 2015-10-27 Advanced Micro Devices, Inc. Cache coherency using die-stacked memory device with logic die
US9563561B2 (en) * 2013-06-25 2017-02-07 Intel Corporation Initiation of cache flushes and invalidations on graphics processors
US9760498B2 (en) * 2014-09-26 2017-09-12 Qualcomm Incorporated Hybrid cache comprising coherent and non-coherent lines
US20160154449A1 (en) 2014-11-27 2016-06-02 Eui Choel LIM System on chips for controlling power using workloads, methods of operating the same, and computing devices including the same
US10146286B2 (en) 2016-01-14 2018-12-04 Intel Corporation Dynamically updating a power management policy of a processor
US10423446B2 (en) * 2016-11-28 2019-09-24 Arm Limited Data processing

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20180009400A (ko) 2016-07-18 2018-01-29 주식회사 포스코 압연 공정용 전단 장치 및 방법

Also Published As

Publication number Publication date
US10621093B2 (en) 2020-04-14
KR102533241B1 (ko) 2023-05-16
US20190227936A1 (en) 2019-07-25
CN110083547A (zh) 2019-08-02
KR20190090558A (ko) 2019-08-02

Similar Documents

Publication Publication Date Title
DE102018132781A1 (de) Heterogenes Rechensystem, welches konfiguriert ist, um eine Cachekohärenz adaptiv zu steuern
DE102016118210A1 (de) Granulare Dienstqualität für Computer-Ressourcen
DE102020119621A1 (de) Verfahren und vorrichtungen zum verwalten der leistungsversorgung von deep-learning-beschleunigersystemen
DE102020114218A1 (de) Verfahren und Vorrichtungen zum Verbessern der Laufzeitleistung auf einem heterogenen System ausgeführter Software
DE102017213160B4 (de) Kompilierung für knotenvorrichtungs-GPU-basierte Parallelverarbeitung
DE102015117066A1 (de) Verfahren zum Betreiben einer Datenspeichervorrichtung, mobile Rechenvorrichtung mit derselben und Verfahren der mobilen Rechenvorrichtung
DE112012005222T5 (de) Halbleiter-Datenspeicherverwaltung
DE112012002905T5 (de) Technik zum Kompilieren und Ausführen von Programmen in höheren Programmiersprachen auf heterogenen Computern
DE102017109239A1 (de) Computerimplementiertes verfahren, computerlesbares medium und heterogenes rechnersystem
DE112013001735T5 (de) Optimieren des Verbindens von Anweisungen
DE102012216029A1 (de) Ein skalierbares anpassungsfähiges map-reduce-rahmenwerk mit verteilten daten
DE102010028259A1 (de) Mikrocontroller mit einer Recheneinheit und einer Logikschaltung sowie Verfahrung zur Durchführung von Rechnungen durch einen Mikrocontroller für eine Regelung oder eine Steuerung in einem Fahrzeug
DE102020110655A1 (de) Verfahren und vorrichtung zum verbessern der verwendung eines heterogenen systems, das software ausführt
DE102020101814A1 (de) Effiziente ausführung anhand von aufgabengraphen festgelegter arbeitslasten
DE102013100179A1 (de) Verfahren und System zum Auflösen von Thread-Divergenzen
DE112018007751T5 (de) Automatisierte Optimierung von Computer-Betriebssystemen
DE102013209643B4 (de) Mechanismus für optimierte Nachrichtenaustauschdatenübertragung zwischen Nodelets innerhalb eines Plättchens
DE112013000687T5 (de) Verteilte Funktionsausführung für Hybridsysteme
DE112012004629T5 (de) Dynamischer Speicheraffinitätsanpasser auf Prozess/Objektebene
DE102013019333A1 (de) Registerzuweisung für als cluster vorliegende mehrebenen-registerdaten
DE102019103279A1 (de) Techniken zur informationsgraphenkomprimierung
DE102018005453A1 (de) Methoden, um Cache-Kohärenz basierend auf Cache-Typ bereitzustellen
DE102020112531A1 (de) Operationelle metrische Berechnung für Arbeitsbelastungstyp
DE112020005789T5 (de) Hierarchische partitionierung von operatoren
DE112020000865T5 (de) Speicherverwaltungssystem

Legal Events

Date Code Title Description
R012 Request for examination validly filed