DE102010035603A1 - Bereitstellen von Hardwareunterstützung für gemeinsam benutzten virtuellen Speicher zwischen physischem Lokal- und Fernspeicher - Google Patents

Bereitstellen von Hardwareunterstützung für gemeinsam benutzten virtuellen Speicher zwischen physischem Lokal- und Fernspeicher Download PDF

Info

Publication number
DE102010035603A1
DE102010035603A1 DE102010035603A DE102010035603A DE102010035603A1 DE 102010035603 A1 DE102010035603 A1 DE 102010035603A1 DE 102010035603 A DE102010035603 A DE 102010035603A DE 102010035603 A DE102010035603 A DE 102010035603A DE 102010035603 A1 DE102010035603 A1 DE 102010035603A1
Authority
DE
Germany
Prior art keywords
memory
accelerator
processor
remote
entry
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.)
Ceased
Application number
DE102010035603A
Other languages
English (en)
Inventor
Gautham N. Hillsboro Chinya
Ethan Santa Clara Schuchman
Hong Fremont Wang
James P. Portland Held
Deepak A. Santa Clara Mathaikutty
Ajay V. Portland Bhatt
Jamison D. San Jose Collins
Prashant Folsom Sethi
Stephen F. Phoenix Whalley
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of DE102010035603A1 publication Critical patent/DE102010035603A1/de
Ceased 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/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • G06F12/1036Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] for multiple virtual address spaces, e.g. segmentation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • 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/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/25Using a specific main memory architecture
    • G06F2212/254Distributed memory

Landscapes

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

Abstract

Bei einer Ausführungsform beinhaltet die vorliegende Erfindung eine Speichermanagementeinheit (memory management unit, MMU) mit Einträgen, um Übersetzungen von virtuellen Adressen in physische Adressen zu speichern, wobei jeder Eintrag einen Ortsindikator beinhaltet, um anzuzeigen, ob ein Speicherort für den entsprechenden Eintrag in einem Lokal- oder Fernspeicher vorhanden ist. Auf diese Art und Weise kann ein herkömmlicher virtueller Speicherraum zwischen den beiden Speichern, die durch eine oder mehr nicht-kohärente Verbindungen getrennt sein können, gemeinsam benutzt werden. Weitere Ausführungsformen sind beschrieben und werden beansprucht.

Description

  • Hintergrund
  • Da prozessorbasierte Systeme weiterentwickelt werden, ermöglicht die Verfügbarkeit von programmierbaren Beschleunigern, die mit dem System über eine periphere Hochgeschwindigkeitskopplungsstruktur verbunden sind, wie z. B. eine Peripheral Component Interconnect Express (PCIeTM) Kopplungsstruktur, in Übereinstimmung mit Verbindungen, basierend auf der PCI Express Spezification Base Spezifikation Version 2.0 (veröffentlicht am 17. Januar 2007) (nachstehend die PCIeTM Spezifikation) oder einem anderes solches Protokoll, Systemintegratoren, eine höhere Rechenleistung in ein System zu packen. Es bestehen jedoch Herausforderungen zu gewährleisten, dass eine Anwendung die zusätzliche Rechenleistung transparent einsetzen kann, ohne wesentliche Änderungen an der Anwendung vorzunehmen, um die Berechnung zwischen einem Hauptprozessor (z. B. Mehrkern-Hauptprozessor (multicore central processing unit, CPU) und dem/den Beschleuniger(n) manuell aufzuteilen und ein Hin- und Herverschieben von Daten zu verwalten. Traditionell steht nur der Hauptsystemspeicher, der vom Betriebssystem (operating system, OS) verwaltet wird, für zu verwendende Anwendungen zur Verfügung. Der physische Speicher, der sich lokal zu jedem Beschleuniger befindet und über eine periphere Kopplungsstruktur gekoppelt ist, wird separat verwaltet. Insbesondere ist solch ein Lokalspeicher auf dem Beschleuniger nicht als Teil des Systemspeichers sichtbar, der vom OS, das auf dem Hauptprozessor läuft, erkennbar ist. Stattdessen ist Gerätetreibersoftware dafür verantwortlich, die Datenverschiebung zwischen Lokal- und Fernspeicher ausdrücklich zu verwalten.
  • Der physische Speicher, auf den der Prozessor zugreift, wird vom Betriebssystem verwaltet, das einen Zugriff auf diesen physischen Speicher virtualisiert, um einen angrenzenden großen virtuellen Adressraum vorzutäuschen. Das OS verwendet zugrundeliegende Prozessorunterstützung für die Verwaltung des virtuellen Speichers, da der Prozessor der Software ermöglicht, eine Zuordnungstabelle zu erstellen, um virtuelle Seiten physischen Seiten zuzuordnen. Der Prozessor unterstützt eine Übersetzung von virtuellen Speicheradressen indem jedes Mal, wenn ein Speicherzugriff erfolgen soll, die Zuordnungstabelle herangezogen wird. Übersetzungen, auf die oft zugegriffen wird, können vom Prozessor im Cache gespeichert werden, um diesen Vorgang zu beschleunigen. Diese Zuordnungstabellen, herkömmlich als Seitentabellen bezeichnet, beinhalten ebenfalls Attribut-Bits, wie z. B. Lese-/Schreib- und Benutzer-/Supervisor-Privileg-Bits, die den Zugriff auf eine gegebene virtuelle Seite steuern. Während das OS den physischen Speicher verwaltet, der auf der Hauptplatine (der Systemspeicher) verfügbar ist, verwaltet es keinen lokal zu einem Beschleuniger befindlichen und dort verfügbaren Speicher oder weist keinen solchen Speicher zu. Somit erzeugen derzeitige Lösungen ein Model mit gemeinsam benutztem Speicher, aus Sicht des Programmierers, und sind abhängig von Speicherschutzmechanismen, um Seiten zu stören und diese zwischen unterschiedlichen Speichern hin- und herzuverschieben.
  • Kurze Beschreibung der Zeichnungen
  • 1 ist ein Blockdiagramm eines Systems gemäß einer Ausführungsform der vorliegenden Erfindung.
  • 2 ist ein Ablaufdiagramm eines Verfahrens zur Reverse Proxy Execution gemäß einer Ausführungsform der vorliegenden Erfindung.
  • 3 ist ein Blockdiagramm, das Reverse Proxy Execution-Operationen gemäß einer Ausführungsform der vorliegenden Erfindung. veranschaulicht.
  • 4 ist ein Ablaufdiagramm eines Verfahrens zur Proxy Execution gemäß einer Ausführungsform der vorliegenden Erfindun.
  • 5 ist ein Blockdiagramm, das Proxy Execution-Operationen gemäß einer Ausführungsform der vorliegenden Erfindung veranschaulicht.
  • 6 ist ein beispielhafter Eintrag einer Seitentabelle gemäß einer Ausführungsform der vorliegenden Erfindung.
  • 7 ist ein Blockdiagramm eines Prozessors gemäß einer Ausführungsform der vorliegenden Erfindung.
  • 8 ist ein Blockdiagramm eines Systems, einschließlich auf dem Chip integrierten Beschleunigern, gemäß einer Ausführungsform der vorliegenden Erfindung.
  • Ausführliche Beschreibung
  • Ausfhrungsformen ermöglichen es einem Prozessor (z. B. einem Hauptprozessor (central processing unit, CPU) auf einem Sockel), einen vollständig gemeinsam benutzten virtuellen Adressraum mit Beschleunigern, die mit dem System über eine Schnittstelle, z. B. eine Peripheral Component Interconnect Express (PCIeTM) Schnittstelle, verbunden sind, zu erzeugen und zu verwalten, indem auf einen Speicher, der auf dem Beschleuniger vorhanden ist, zugegriffen wird und indem der Speicher unter Verwendung spezieller Lade-/Speicher-Transaktionen adressiert wird. Die Fähigkeit, Fernspeicher direkt zu adressieren, ermöglicht eine Steigerung der tatsächlichen Rechenkapazität, aus Sicht der Anwendungssoftware, und ermöglicht es Anwendungen, Daten problemlos gemeinsam zu benutzen, ohne dass der Programmierer beim Hin- und Herverschieben von Daten die ausdrückliche beteiligt ist. Somit kann der Speicher adressiert werden, ohne auf Speicherschutz zurückgreifen zu müssen und einen Zugriff auf eine virtuelle Adresse zu stören, um den Speicherzugriff, der von einem Störungsverarbeiter ausgeführt werden soll, umzuadressieren. Als solches kann bestehende gemeinsam benutzte Speicher-Mehrkernverarbeitung derart erweitert werden, dass Beschleuniger beinhaltet sind, die sich nicht auf dem Sockel befinden, sondern stattdessen über eine periphere nicht-kohärente Verbindung verbunden sind.
  • Im Gegensatz dazu erzeugen typische Systeme, wie z. B. clusterbasierte Systeme, ein Model eines teilweise gemeinsam benutzen Speichers, aus Sicht des Programmierers, und sind abhängig von Speicherschutzmechanismen, um Seiten zu stören und diese zwischen CPU und Peripheriegeräten hin- und herzuverschieben. Ebenfalls führt bei clusterbasierten Systemen jeder Knoten eine separate Kopie des Betriebssystem-(OS)-Stapels aus, auf dem eine Anwendung ausgeführt wird, und dieser Aspekt des Systems wird Programmierern offengelegt, da nur ein Teil des Adressraums gemeinsam benutzt wird und der Programmierer entweder aus einem gemeinsam benutzten Bereich zuteilt oder ausdrücklich spezifiziert, welcher Teil der Daten in dem gemeinsam benutzten Adressraum platziert wird. Die Ausführungsumgebung unterscheidet sich von einer Ausführungsumgebung mit vollständig gemeinsam benutztem Speicher, die einem Multikernsystem mit einem einzelnen gemeinsam benutzten Speicher ähnelt.
  • Stattdessen kann bei verschiedenen Ausführungsformen ein Prozessor auf einem Sockel Fernspeicher adressieren, der sich lokal zu einem Beschleuniger befindet, wodurch es dem Prozessor ermöglicht wird, Fernspeicheradressen transparent zu nutzen, um auf gemeinsam benutzte Daten zuzugreifen. Um dies auszuführen, können Architekturerweiterungen bereitgestellt werden, die eine Verbesserung eines virtuellen Speichermanagementsystems ermöglichen, sodass spezielle Lade-/Speicher-Transaktionen ausgegeben werden können, um entfernte gemeinsam benutzte Daten zu adressieren, und um dem System weiter zu ermöglichen, Speicherseiten näher an den Ort zu verschieben, von wo aus häufiger auf sie zugegriffen wird, ohne dass eine ausdrückliche Beteiligung des Programmierers hierfür erforderlich ist. Zusätzlich ermöglichen es Speichermanagementerweiterungen dem Programmierer, Anwendungscode direkt auszuführen, ohne dass ausdrücklich angegeben werden muss, welche Teile des Adressraums gemeinsam benutzt werden müssen, oder dass der Programmierer einen herkömmlichen gemeinsam benutzten Datenbereich verwalten muss.
  • Als solches kann ein gemeinsam benutzter virtueller Adressraum zwischen Kernen auf cachekohärenten CPU-Sockeln und Beschleunigern (einschließlich Mehrkern-CPUs), die mit dem System über eine periphere Kopplungsstruktur verbunden sind, erzeugt und verwaltet werden. Somit können CPUs/Beschleuniger auf beiden Seiten der Kopplungsstruktur auf eine gemeinsam benutzte virtuelle Seite, die sich physisch in einem Systemspeicher oder in einem Speicher befinden kann, der sich auf dem Beschleuniger befindet, über eine Kopplungsstruktur, die cachekohärent sein kann oder nicht, zugreifen.
  • Demnach kann der physische Speicher, der sich auf dem Beschleuniger befindet, gegenüber der CPU und wiederum gegenüber dem OS und Anwendungen als zusätzlicher Systemspeicher agieren, obwohl auf den Lokalspeicher des Beschleunigers über eine Kopplungsstruktur und nicht über eine kohärente Struktur (wie z. B. ein Frontside-Bus (front side bus, FSB) oder eine Quick-Path-Kopplungsstruktur (quick path interconnect, QPI) direkt von der CPU zugegriffen werden kann.
  • Ausführungsformen können in vielen unterschiedlichen Arten von Systemen implementiert sein. Es wird Bezug genommen auf 1, die ein Blockdiagramm eines Systems gemäß einer einer Ausführungsform der vorliegenden Erfindung zeigt. Wie in 1 gezeigt, kann System 100 ein beispielhaftes Computersystem mit einer Host-PC-(host personal computer, PC)-Plattform 110 sein, die mit einer Beschleunigerkarte 150 über eine nicht-kohärente Kopplungsstruktur 140 verbunden ist, die beispielsweise eine PCIeTM-Verbindung sein kann. Wie gezeigt, kann Host-Plattform 110 eine CPU 120 und einen Systemspeicher 130 beinhalten, der bei einigen Ausführungsformen ein dynamischer Direktzugriffsspeicher (dynamic random access memory, DRAM) sein kann. Während der Einfachheit halber in 1 lediglich diese minimalen Komponenten gezeigt sind, ist es selbstverständlich, dass eine gegebene Plattform viele weitere typische Komponenten beinhalten kann, einschließlich Eingangs-/Ausgangs-Hubs, Chipsatz-Komponenten, Peripheriegeräte, Massenspeichergeräte, Eingabe-/Ausgabegeräte und so weiter.
  • Wie in 1 gezeigt, kann CPU 120 eine Speichermanagementeinheit (memory management unit, MMU) 125 beinhalten. MMU 125 kann ein Zuordnen von virtuellen Adressen zu physischen Adressen ermöglichen und kann bei einigen Implementierungen ein oder mehr Translation Lookaside-Puffer (translation lookaside buffers, TLBs) beinhalten. Wie nachstehend weiter erörtert wird, können verschiedene Architekturerweiterungen einer MMU gemäß einer erfindungsgemäßen Ausführungsform das Erzeugen und Verwenden eines gemeinsam benutzten virtuellen Speichers zwischen Speichern ermöglichen, die mit Plattform 110 und Beschleunigerkarte 150 verbunden sind.
  • Unter der weiteren Bezugnahme auf 1, kann Beschleunigerkarte 150 einen Intellectual Property-(intellectual property, IP)-Block 160 beinhalten, der jede Art Beschleuniger sein kann, wie z. B. ein Graphikprozessor, CPU oder jedes andere solche Gerät. Wie gezeigt, kann dieser IP-Block selbst eine MMU 165 beinhalten. Um Kommunikationen mit Plattform 110 zu ermöglichen, kann eine Bridge 155 vorhanden sein, um Kommunikationen, die gemäß einem Protokoll für Kopplungsstruktur 140 auftreten, in ein Protokoll umzuwandeln, das mit demjenigen konform ist, das bei einer Ein-Chip-System-(system an a chip, SoC)-Struktur 170 verwendet wird, die wiederum IP-Block 160 mit einem Lokalspeicher 180 koppelt, der erneut bei einigen Ausführungsformen ein DRAM sein kann. Während diese bestimmte Implementierung in der Ausführungsform von 1 gezeigt ist, ist der Umfang der vorliegenden Erfindung in dieser Hinsicht nicht eingeschränkt.
  • Ausführungsformen können Reverse Proxy Execution (RPE) implementieren, die die Fähigkeit einer CPU verbessert, Zugriffe auf physischen Speicher außerhalb von Onboard-Systemspeichern (z. B. Hauptplatine) zu erkennen. Anschließend können Zugriffe auf solche Orte in eine Klasse an Zugriffen umgewandelt werden, die über die periphere Struktur zu dem Beschleuniger getunnelt sind. Der Beschleuniger wiederum bedient die Zugriffe von seinem physischen Lokalspeicher. Unter Verwendung von kombinierter RPE und Proxy Execution (bei der eine CPU bei der Ausführung eines Speicherzugriffs unter Anfrage eines Beschleunigers helfen kann), kann jeder Beschleuniger mit einer separaten MMU, die über eine (kohärente oder nicht-kohärente) Struktur mit einer Multi-Sockel-CPU gekoppelt ist, einen gemeinsam benutzten virtuellen Adressraum für physischen Speicher errichten, einschließlich sowohl Systemspeicher als auch Lokalspeicher auf einem Beschleuniger. Unter Verwendung von RPE und Proxy Execution kann eine Ausführungsform dem gleichen multithreaded gemeinsam benutzten virtuellen speicherbasierten Programm, das für traditionelles symmetrisches Multiprocessing (symmetric multiprocessing, SMP) errichtet wurde, ermöglichen, Threads über CPUs zu verteilen, die sich entweder über mehrere CPU-Sockel oder über mehrere Stops auf einer peripheren Eingangs-/Ausgangs-(I/O)-Struktur befinden.
  • Gemeinsam mit Architekturmechanismen können Ausführungsformen ebenfalls Firmware- und Systemsoftwareerweiterungen beinhalten, die Steuerung und Datentransfers zwischen Kernen auf den Sockeln und dem Beschleuniger (oder CPUs) über eine periphere Kopplungsstruktur ermöglichen, um transparent auf unterschiedlichen Abstraktionsebenen zu arbeiten, die zwischen vollständiger OS-Laie und OS-Profi rangieren, wobei es dafür jeweils unterschiedliche Möglichkeiten zur Optimierung gibt.
  • Daten können, basierend auf Zugriffsmustern auf die gemeinsam benutzten Daten von der CPU-Seite als auch der Beschleuniger-Seite, auf einer Bedarfsbasis gemeinsam benutzt werden. Beschleuniger, die mit virtuellen Adressen arbeiten können und Adressübersetzung unterstützen, können den gleichen Code transparent ausführen, wobei Referenzierungen der Daten und des Codes intakt bleiben, da die gleichen virtuellen Adressen verwendet werden können, wenn auf den Code oder Daten verwiesen wird, wenn der Beschleuniger einen Teil des Anwendungsprogramms ausführt. Die physische Seite, die den Code oder Daten beinhaltet, kann sich entweder lokal zum Beschleuniger befinden oder kann aus dem Systemspeicher abgerufen werden. Die virtuelle Seite kann von einem entfernten Ort zu einem lokalen Ort verschoben werden, basierend auf der Zugriffshäufigkeit, ohne einer ausdrücklichen Beteiligung des Anwendungssoftwarestapels, da die Anwendung keine Datenverschiebung verwalten muss, um auf dem Beschleuniger eine Berechnung aufzubauen.
  • Treibersoftware hat oftmals die Aufgabe, Daten ausdrücklich unter der Verwendung von Direktspeicherzugriff-(direct memory access, DMA)-Transfers zwischen dem Hauptsystemspeicher und Fernspeicher, der sich lokal zum Beschleuniger befindet, mengenweise zu verschieben. Im traditionellen Treibermodel verbleiben ein Anwendungsprogramm, das auf einer CPU läuft, und ein Treiberprogramm, das einen Beschleuniger verwaltet, typischerweise in zwei getrennten virtuellen Adressräumen. Infolgedessen kommt es zu deutlichem Aufwand bei Datenkommunikationen zwischen der Anwendung und dem Treiber und dem Datentransfer zwischen dem Systemspeicher und Lokalspeicher auf dem Beschleuniger. Weiter wird dieser Datentransfer typischerweise von einem Anwendungscode implementiert, der von dem Programmierer geschrieben ist. Beispielsweise kann es erforderlich sein, dass ein Programmierer einen händlerspezifischen Satz an Application Programming Interfaces (APIs) benutzen muss, um Daten manuell vom Systemspeicher in den Beschleunigerspeicher zu verschieben. Stattdessen vereinfacht die Erzeugung eines gemeinsam benutzten virtuellen Adressraums zwischen der CPU und Beschleunigerkernen in Übereinstimmung mit einer Ausführungsform der vorliegenden Erfindung das gemeinsame Benutzen von Daten erheblich, ohne der ausdrücklichen Verwaltung von DMA-Operationen, da der vollständige Anwendungscode und Daten in einem herkömmlichen gemeinsam benutzten virtuellen Adressraum platziert werden können, ohne dass die Daten ausdrücklich durch Ändern des Anwendungsprogramms, z. B. mit einer vom Programmierer ausdrücklichen Orchestration von DMA-Operationen, verschoben werden müssen. Daher sind Datentransfers, obwohl sie weiterhin von DMA sein können, nicht vom Programmierer gesteuert. Mit anderen Worten kann ein Prozessor während der Ausführung einer User Level-Anwendung direkt auf Daten zugreifen, die in einem Fernspeicher vorhanden sind, ohne ausdrückliche Programmierung des Programmierers, die zugrundeliegenden Strukturen zu konfigurieren und zu verwalten, um den Datenzugriff zu ermöglichen.
  • Um einen gemeinsam benutzten Adressraum zwischen der CPU und dem Beschleuniger zu konstruieren, kann eine Speichermanagementeinheit veranlassen, dass Lade-/Speicherzugriffe auf den gemeinsam benutzten virtuellen Adressraum an den Fernspeicher gesendet werden, basierend auf den Inhalten der Seitentabellen, die verwendet werden, um virtuelle Adressen in physische zu übersetzen.
  • Systemsoftwareunterstützung kann einem Laufzeitsystem ermöglichen, transparent und dynamisch den Ort einer virtuellen Seite zu verschieben, sodass ein herkömmlicher gemeinsam benutzter virtueller Adressraum zwischen CPU und Beschleuniger erzeugt werden kann, und das Laufzeit-Arbeitssatz-Lokalitätsverhalten des Programms wird eingesetzt, um die virtuelle Seite entweder entfernt zu lokalisieren, wenn die Zugriffe selten stattfinden, oder diese lokal für Seiten zu lokalisieren, auf die häufig zugegriffen wird.
  • Bei verschiedenen Ausführungsformen können unterschiedliche Mechanismen zur Erweiterung virtueller Speicherunterstützung bereitgestellt werden. Eine Implementierung beinhaltet keine OS-Änderung an dem bestehenden Legacy-Funkrufsystem, während andere Implementierungen den Seitentabelleneinträgen mehr Informationen hinzufügen können. Diese Mechanismen involvieren ähnliche Architekturmechanismen, um Reverse Proxy Execution zu unterstützen, d. h. die Fähigkeit der CPU diese virtuellen Adresszugriffe, die nicht dem Systemspeicher zugeordnet sind, sondern dem physischen Fernspeicher, der sich lokal zu den Beschleunigern befindet, über eine periphere Struktur zu identifizieren und zu bedienen.
  • Um RPE zu unterstützen, kann eine CPU identifizieren, ob eine gegebene virtuelle Adresse einem Systemspeicher oder einem Fernspeicher über eine periphere Struktur zugeordnet ist. Wenn die physische Adresse einem Systemspeicher zugeordnet ist, kann der Zugriff lokal mit einem normalen Speicherzugriff verarbeitet werden, ansonsten kann RPE angewiesen werden, den Zugriff zu verarbeiten. Bei einer Ausführungsform kann die RPE unter Verwendung eines zugeordneten Mikrocode-Flusses umgesetzt werden. RPE kann beginnen, indem der Zugriff (z. B. Laden/Speichern (load/store, LD/ST) mit einer speziellen Störungsbedingung, die von einem Mikrocode-Verarbeiter verarbeitet wird, gekennzeichnet wird. Der Verarbeiter kann den Zugriff in LESE-/SCHREIB-/DMA-Transaktionen über die periphere Struktur umwandeln, obwohl mehrere Variationen möglich sind. Zur Vereinfachung der Beschreibung wird angenommen, dass die periphere Struktur eine PCIeTM-Kopplungsstruktur ist, und jeder einzelne Zugriff auf den physischen Fernspeicher wird in einen nicht-cachespeicherbaren Zugriff und wiederum in PCIeTM-Datentransaktionen umgewandelt, um die Anfrage/Daten über die PCIeTM-Struktur zu tunneln. Die Transaktion kann entweder die ursprüngliche virtuelle Adresse oder die physische Adresse beinhalten. Der CPU-Thread, der den Zugriff ausführt, kann bei einigen Ausführungsformen die ausstehende Ausführung des entfernten Zugriffs blockieren (und kann zu einem anderen Thread schalten). Wenn der Beschleuniger die Benachrichtigung der PCIeTM-Transaktion einer Zugriffsanfrage von der CPU erhält, verarbeitet die Ablaufsteuerung in dem Beschleuniger die Anfrage als ein spezielles Unterbrechungsereignis. Die Ablaufsteuerung extrahiert die Zugriffsadresse und Zugriffsart von der Anfrage. Wenn die Zugriffsadresse eine virtuelle Adresse ist, kann die Ablaufsteuerung die Übersetzung lokal über eine lokale MMU ausführen, um die physische Adresse zu erhalten. Unter Verwendung der physischen Adresse beginnt die Beschleuniger-Ablaufsteuerung entweder mit dem Speichern (bei einer Schreibtransaktion) oder erhält Daten für das Laden (bei einer Lesetransaktion). Die Ablaufsteuerung erstellt eine Antwort (z. B. im Fall eines Ladens) in einer PCIeTM-Transaktion und sendet diese an den Host-Root (d. h. die CPU) zurück. Der CPU-Kern empfängt die PCIeTM-Transaktion und den Status des ausgeführten Zugriffs und nimmt die nachfolgende Operationauf, was einen Zugriffsfehler, basierend auf dem Zugriffsstatus des entfernten Zugriffs, aufwerfen kann.
  • Es wird Bezug genommen auf 2, die ein Ablaufdiagramm für Reverse Proxy Execution gemäß einer Ausführungsform der vorliegenden Erfindung zeigt. Wie in 2 gezeigt, kann Verfahren 200 verwendet werden, um auf Daten zuzugreifen, die in einem Lokalspeicher eines Beschleunigers vorhanden sind, d. h. ein Fernspeicher hinsichtlich einer CPU. Wie in 2 gezeigt, kann Verfahren 200 mit dem Erhalten einer Speicherzugriffsanfrage (Block 210) beginnen. Diese Anfrage kann in einer Host-CPU empfangen werden, die wiederum die Anfrage an eine MMU weiterleitet, z. B. ein TLB, um zu bestimmen, ob der Eintrag für eine virtuelle Adresse ist, die in dem TLB (Raute 220) vorhanden ist. Wenn nicht, kann ein Page Miss-Verarbeiter ausgeführt werden, um den Eintrag zu erhalten und im TLB (Block 225) zu speichern.
  • Wenn der Eintrag im TLB vorhanden ist, kann er analysiert werden, um einen Ort der entsprechenden physischen Adresse (Block 230) zu bestimmen. Beispielsweise, wie nachstehend erörtert, kann jeder TLB-Eintrag Information beinhalten, um anzuzeigen, ob die entsprechende Seite in Lokal- (d. h. Systemspeicher) oder Fernspeicher vorhanden ist. Wenn die physische Adresse in Systemspeicher (Raute 240) vorhanden ist, geht die Steuerung weiter zu Block 245, wo eine Speicherzugriffsanfrage an den Systemspeicher ausgeführt wird, und dementsprechend können die angefragten Daten als eine Antwort an den Anfrager (Block 250) bereitgestellt werden.
  • Wenn stattdessen bei Raute 240 bestimmt wird, dass sich die physische Adresse nicht im Systemspeicher befindet, geht die Steuerung stattdessen weiter zu Block 260. Bei Block 260 kann eine Reverse Proxy Execution-Anfrage erzeugt werden, um die Speicherzugriffsanfrage an den Fernspeicher (z. B. ein Lokalspeicher eines Beschleunigers), der die Daten enthält, zu senden. Bei verschiedenen Implementierungen kann diese Anfrage über eine nicht-kohärente Kopplungsstruktur, z. B. als eine spezialisierte Lade-/Speicheranfrage, getunnelt werden. Nachdem diese Reverse Proxy Execution-Anfrage auf dem Beschleuniger verarbeitet wurde, geht die Steuerung weiter zu Block 270, wo das Ergebnis der Reverse Proxy Execution-Anfrage empfangen wird, nämlich die angefragten Daten werden empfangen und dem Anfrager kann eine Antwort bereitgestellt werden, wie vorstehend mit Bezug auf Block 250 erörtert. Während diese bestimmte Implementierung in der Ausführungsform von 2 gezeigt ist, ist der Umfang der vorliegenden Erfindung in dieser Hinsicht nicht eingeschränkt.
  • Es wird Bezug genommen auf 3, die ein Blockdiagramm zeigt, das Operationen für Reverse Proxy Execution gemäß einer erfindungsgemäßen Ausführungsform zeigt. Wie in 3 gezeigt, wenn eine Anfrage für einen Zugriff (1) auf eine virtuelle Adresse (V.A)X von CPU 120 an MMU 125 fehlschlägt (z. B. der Lookup zeigt an, dass die Seite in dem Lokalspeicher der Beschleunigerkarte vorhanden ist), wird eine Reverse Proxy Execution-Anfrage vorbereitet und an Beschleunigerkarte 150 gesendet (2). Der Beschleuniger 160 wiederum verarbeitet die Anfrage, um die Speicherzugriffsanfrage (3) an MMU 165 zu senden, die wiederum auf die angefragte Seite in Lokalspeicher 180 zugreift (4), sodass die angefragten Daten an CPU 120 zurückgesendet werden können (5). Es ist anzumerken, dass die Daten vom Beschleuniger an die Host-CPU über DMA gesendet werden können, oder alle unter dem Host innerhalb seiner glorifizierten LD/ST-Implementierung (z. B. Mikrocode-Fluss) abgerufen werden. Mit anderen Worten, sobald die CPU einen Zugriff auf einen Fernspeicher sendet, schaltet die CPU den Zugriff auf eine Mikrocode-Routine, um ein glorifiziertes LD/ST durchzuführen, die entweder auf eine DMA-Unterbrechung wartet oder ein aktives Abfragen ausführt, um die „Rücklauf”-Daten vom Beschleuniger zu erhalten. Das Ausführen des Speicherzugriffs auf (V.A)X wird auf eine Art und Weise ausgeführt, die dem Anwendungsprogramm, das auf den Speicherort, der bei virtueller Adresse X identifiziert wurde, zugegriffen hat, gegenüber transparent ist.
  • Im Großen und Ganzen agiert die RPE-Operation wie eine Speicherzugriffsoperation mit langer Latenz über ein nicht-uniformes Speicherarchitektur-(non-uniform memory architecture, NUMA)-System. Der zugrundeliegende Tunnelmechanismus kann variieren, abhängig von der Beschaffenheit der Struktur. Im Falle einer PCIeTM-Struktur, aufgrund der Asymmetrie zwischen Root (System) und Nachfolger (Beschleuniger) Komplex, wo der Beschleuniger auf einen Bereich von Systemspeicher zugreifen kann, obwohl die CPU normalerweise nicht auf einen Lokalspeicher des Beschleunigers zugreifen kann, können verschiedene Optimierungen der RPE-Leistungsmechanismen unter Verwendung eines Teils des Systemspeichers oder des Lokalspeichers des Beschleunigers als Privatspeicher umgesetzt werden. Bei einer Ausführungsform kann ein Teil des Systemspeichers als Cache für den entfernten Lokalspeicher des Beschleunigers reserviert werden. Oder eine Privatspeicherregion kann zugeteilt werden, um als Puffer zu agieren, um die virtuellen Seiten zu halten, auf die von der Ferne aus zugegriffen wird. Denn z. B. der Zugriff auf eine virtuelle Adresse X, die einer entfernten Seite zugeordnet ist, kann darin resultieren, dass die gesamte Seite vorübergehend in den lokalen Puffer eingelesen wird, wo sie für zukünftige Zugriffe verfügbar ist, um Zugriffe auf Fernspeicher zu verringern.
  • Bei einer Ausführungsform kann ein Proxy Execution-Mechanismus verwendet werden, um eine Seitenstörungs-Situation zu verarbeiten, die bei der Beschleuniger-Ablaufsteuerung aufgetreten ist, was bedeutet, dass der Fehler an die CPU zur Verarbeitung gesendet werden kann. Dies bedeutet, dass die MMU bei der Beschleuniger-Ablaufsteuerung mit der MMU der CPU kohärent ist, und dass alle auf die gleiche Seitentabelle des OS verweisen. Eine Seitenstörung einer virtuellen Seite, entweder verursacht durch Operation auf der CPU oder dem Beschleuniger, bringt die CPU dazu, einen traditionellen Seitenverarbeitungsmechanismus zu verwenden, um die Seite in den Speicher zu überführen. Wenn der Fehler von einem Zugriff auf der Beschleuniger-Ablaufsteuerung verursacht wurde, kann die CPU die neue Seite in dem entfernten physischen Lokalspeicher des Beschleunigers anlegen. Ansonsten kann die Seite im Systemspeicher platziert werden. Ein Non Faulting-Zugriff auf der CPU auf eine virtuelle Adresse, die einem entfernten Lokalspeicher des Beschleunigers zugeordnet ist, stellt sicher, dass zu einer physischen Seite auf dem Beschleuniger zugeordnet wird, wodurch sichergestellt wird, dass die Proxy Execution ausgeführt wird.
  • Es wird Bezug genommen auf 4, die ein Ablaufdiagramm eines Verfahrens für Proxy Execution gemäß einer erfindungsgemäßen Ausführungsform zeigt. Wie in 4 gezeigt, kann Verfahren 300 verwendet werden, um Proxy Execution durchzuführen, wenn Daten, die von einem Beschleuniger gewünscht werden, nicht in seinem Lokalspeicher vorhanden sind.
  • Wie in 4 gezeigt, kann Verfahren 300 beginnen, indem eine Speicherzugriffsanfrage von einem Beschleuniger (Block 310) erhalten wird. Es kann sodann bestimmt werden, ob ein Eintrag für eine virtuelle Adresse der Anfrage in einem TLB des Beschleunigers (Raute 350) vorhanden ist. Wenn ja, kann unter Verwendung dieser virtuellen Adresse (Block 370) auf den Lokalspeicher des Beschleunigers zugegriffen werden und eine Antwort an den Anfrager (Block 380) bereitgestellt werden.
  • Wenn andererseits kein Eintrag in dem TLB vorhanden ist, geht die Steuerung weiter zu Block 330, wo eine Proxy Execution-Anfrage an die CPU (Block 330) gesendet werden kann. Wenn angenommen wird, dass die angefragte Übersetzung nicht in der MMU der CPU vorhanden ist, dann kann ein Page Miss-Verarbeiter gestartet werden, um den Eintrag (Block 335) zu erhalten. Des Weiteren kann die Seite, die dieser virtuellen Seite entspricht, aus dem Systemspeicher in den Lokalspeicher des Beschleunigers (Block 340) verschoben werden. Sodann kann eine Wiederaufnahme-Nachricht von der CPU an den Beschleuniger (Block 350) gesendet werden. Dementsprechend kann der Beschleuniger die Speicheranfrage an seinen TLB (Block 360) wiederholen. Da der Eintrag nun in der MMU vorhanden ist, kann eine Speicherzugriffsanfrage an den Lokalspeicher ausgeführt werden, um die angefragten Daten (Block 370) zu erhalten. Dementsprechend kann eine Antwort, die die angefragten Daten enthält, dem Anfrager (Block 380) bereitgestellt werden.
  • Es wird Bezug genommen auf 5, die ein Blockdiagramm zeigt, das Proxy Execution-Operationen gemäß einer Ausführungsform der vorliegenden Erfindung veranschaulicht. Wie in 5 gezeigt, kann Proxy Execution auftreten, wenn ein Beschleuniger Zugriff (1) auf eine virtuelle Adresse (V.A)X anfragt, die nicht in lokaler MMU 165 vorhanden ist. Dementsprechend wird eine Proxy Execution-Anfrage (2) über diese Seitenstörung an die CPU 120 gesendet. 5 zeigt eine Implementierung, bei der MMU 165 die Proxy Execution-Anfrage direkt an die CPU 120 sendet. Wenn jedoch Proxy in Page Walking-Code (Mikrocode, Firmware oder Software, abhängig davon, wie die MMU verwaltet wird) implementiert ist, dann kann dieser Code die Proxy-Anfrage senden. CPU 120 sendet die Anfrage (3) an lokale MMU 125, die wiederum für die angefragte virtuelle Adresse auf die Seite in Systemspeicher 130 zugreift (4). Wie gezeigt, wenn die Anfrage ein Lesen von Daten anfragt, dann kann die gesamte Seite von Systemspeicher 130 an Lokalspeicher 180 gesendet werden (5). Bei einer Ausführungsform kann der Datentransfer über CPU 120 erfolgen, die DMA programmiert, um Daten von einer Region in Systemspeicher 130 in eine Region in Lokalspeicher 180 zu kopieren. Alternativ kann CPU 120 die Kopie ausführen, indem einzelne „glorifizierte” Lade-/Speicherbefehlssequenzen, z. B. unter Verwendung von Mikrocode implementiert, wie vorstehend beschrieben, ausgeführt werden. Anschließend kann CPU 120 eine Wiederaufnahme-Nachricht (6) an Beschleuniger 160 senden, der wiederum den Zugriff (7) auf MMU 165 erneut versucht, die nun die Übersetzung vorliegend findet und die Anfrage (8) sendet, um die entsprechenden Daten von Lokalspeicher 180 zu erhalten. Es ist anzumerken, dass, um Zugriff auf die Daten in Lokalspeicher 180 zu ermöglichen, die MMU 165 adressierbar gemacht wird. CPU 120 kann direkt ein einzelnes „glorifiziertes” LD/ST ausführen, um den Übersetzungseintrag von der Seitentabelle in dem Systemspeicher 130 in MMU 165 zu aktualisieren. Alternativ kann CPU 120 die Seitentabelle oder einen Teilsatz der Seitentabelle, die die Übersetzung enthält, in die Beschleunigerseite über einen Datentransfer zu Lokalspeicher 180 kopieren und sodann den Beschleuniger 160 wiederaufnehmen, dessen Page Walker die Seitentabelle, die nun lokal ist, durchgeht.
  • Die Information zur Unterscheidung, ob eine virtuelle Adresse auf der CPU lokal (im Systemspeicher) oder entfernt (in dem Beschleunigerspeicher) ist, kann vom OS kommen, das diese Information von dem Basis-Ein-/Ausgabe-System (basic input/output system, BIOS) erhält, das über eine Konfiguration des Systemspeichers vollständig in Kenntnis ist. Zur Unterstützung von RPE kann BIOS eine empfohlene Speichergröße auf dem Beschleuniger spezifizieren. Diese Operation ähnelt einer Festspeicher-(read only memory, ROM)/Arbeitsspeicher-(random access memory, RAM)-Bausteinauswahl, die von dem BIOS beim Starten ausgeführt wird. Das BIOS kann sodann die Summe von Systemspeicher und dem lokalen Beschleunigerspeicher melden und das OS darüber informieren, welcher Speicherbereich lokaler Systemspeicher und welcher entfernt ist.
  • Bei verschiedenen Ausführungsformen kann ein Zustand der Systemebene für BIOS, nämlich ein Satz an Deskriptor-Architekturzuständen, genannt Speicherpartitions-Deskriptoren, diesen Bereich an Information aufzeichnen, z. B. zumindest den Bereich an Information für den Systemspeicher, daher würde jede physische Adresse außerhalb dieses Bereichs als entfernt identifiziert werden. Bei einer Ausführungsform kann diese Information in einer in dem BIOS eingebauten Datenstruktur gespeichert werden. Die Speicherdeskriptoren können ebenfalls als Privatzustand in maschinenspezifischen Registern gespeichert werden, die sowohl von Software als auch von Mikrocode genutzt werden können. Es ist anzumerken, dass solche Bereichsinformation zuerst von BIOS erstellt wird, bevor das OS startet, sodass die Verwendung dieser Zustände nicht OS-abhängig ist. Mit anderen Worten kann der RPE-Mechanismus mit einem Legacy-OS arbeiten, dem die Unterscheidung zwischen Fern- und Lokalspeicher nicht einmal bekannt ist.
  • Für jegliches LD/ST, das von der CPU verarbeitet wird, kann es beschwerlich sein, dass jede TLB-Übersetzung ebenfalls die physische Adresse mit einem Speicherpartitions-Deskriptor vergleicht, um zu entscheiden, ob ein Zugriff auf lokalen oder entfernten Systemspeicher vorliegt. Stattdessen kann solch eine Überprüfung weg von dem kritischen Pfad in der MMU stattfinden und kann nur bei einem Durchgehen einer Seite beim Ausfüllen eines neuen TLB-Eintrags stattfinden. Bei einigen Ausführungsformen kann jeder TLB-Eintrag ein Attribut-Bit enthalten, um anzuzeigen, ob sich der entsprechende Eintrag im entfernten oder lokalen Systemspeicher befindet. Wenn ein neuer TLB-Eintrag angelegt wird, kann der Page Walker eine Bereichsüberprüfung des physischen Adressbereichs im Seitentabelleneintrag mit dem Speicherpartitions-Deskriptor ausführen. Es ist anzumerken, dass dieser Mechanismus selbst dann funktioniert, wenn das OS nicht unterscheidet, ob eine Seite lokal oder entfernt zugeordnet ist.
  • Bei einigen Ausführungsformen kann das OS die Richtlinie der Verwendung des Lokalspeicher des Beschleunigers verarbeiten, indem der Lokalspeicher des Beschleunigers verwendet wird, um nur den Teilsatz eines Anwendungscodes und Daten zu halten, auf die der Beschleuniger häufig zugreift. Wenn das OS in Unkenntnis ist, hilft ein Lokalitätsprinzip, z. B. einer Laufzeitschicht oder anderer Einheit, den Arbeitssatz dorthin zu verschieben, wo der Zugriff häufiger geschieht, im Systemspeicher oder Lokalspeicher eines Beschleunigers.
  • Zusätzlich kann, wie vorstehend beschrieben, das OS-Seitentabellenformat ein Attribut-Bit beinhalten, um anzuzeigen, ob die entsprechende Seite im Lokal- oder Fernspeicher gespeichert ist. Dieses Bit kann markiert werden, wenn das OS die Zuordnung der virtuellen Adresse zu der physischen Adresse festlegt, und das OS kann jede physische Seite mit dem Speicherpartitions-Deskriptor überprüfen, um die Seite als lokal oder entfernt zu markieren. Auf diese Art und Weise muss keine Bereichsüberprüfung eines jeden angelegten TLB-Eintrags ausgeführt werden. Um es Anwendungen zu ermöglichen, auf Speicher auf dem Beschleuniger zuzugreifen, kann die CPU Attribut-Bits analysieren, sodass sie ein Laden/Speichern in eine gegebene virtuelle Adresse an einen entfernten physischen Speicherort weiterleiten kann. Außerdem können die Attribut-Bits ebenfalls die Anzahl an Zugriffen zurückverfolgen, die entfernt ausgeführt werden, wodurch es der OS-Software ermöglicht wird, eine Richtlinie, basierend auf der Anzahl der entfernten Zugriffe, zu implementieren, sodass die Seite an einen anderen Ort verschoben werden kann, wenn die Anzahl an entfernten Zugriffen einen bestimmten Grenzwert übersteigt.
  • Obwohl es möglich ist, Fernspeicherzugriff zu implementieren, indem Schutzeinrichtungen einer virtuellen Seite, wie z. B. Markieren einer Seite als nicht zugreifbar oder nicht vorhanden und Verarbeiten sich ergebender Fehler, durchgesetzt werden, steigt die Zugriffslatenz, da der Seitenstörungsverarbeiter jedes Mal laufen muss, wenn ein Speicherzugriff stattfindet. Stattdessen kann unter Verwendung einer erfindungsgemäßen Ausführungsform eine CPU eine Ortsadresse des Fernspeichers an einen Bus-Controller übergeben, der den Zugriff auf den Speicherort des Beschleunigers leitet. Beispielsweise kann die CPU direkt Lade-/Speichervorgänge umleiten, indem auf einen Standardsatz an Registern zugegriffen wird, die in dem Bus-Controller definiert sind, um auf den Fernspeicherort zuzugreifen, ohne der Hilfe von Software bei der Ausführung des Laden/Speicherns. Dieser Datentransfer kann durch DMA (Mengentransfer) sein oder ein skalarer Transfer bei Cacheline-Granularität. Die Fähigkeit, eine virtuelle Seite von einem Fernspeicherort an einen Lokalspeicherort (und umgekehrt) transparent zu verschieben, ermöglicht es Software (z. B. einer Anwendung), Daten mit den Beschleunigern gemeinsam zu benutzten, ohne eine Verschiebung der Daten ausdrücklich zu verwalten. Wenn der Beschleuniger nicht mit dem System verbunden ist oder in einen unempfänglichen Zustand übergeht, erzeugt die Adressübersetzungseinheit Seitenstörung, die den Grund für das Fehlschlagen des Laden/Speicherns anzeigen.
  • Es wird Bezug genommen auf 6, die einen beispielhaften Eintrag 400 in einer Seitentabelle in Übereinstimmung mit einer einer Ausführungsform der vorliegenden Erfindung zeigt. Wie gezeigt, kann jeder Eintrag ein Seitenbasisadress-(page base address, PBA)-Feld 410 beinhalten, das eine PBA speichert, die auf eine erste Adresse einer Seite, die in dem Speicher gespeichert ist, verweist. Zusätzlich kann jeder Eintrag ein Beschleunigerfeld 420 beinhalten, das einen n-Bit Beschleuniger-Identifikator (accelerator identifier, ID) speichert, um auf einen Beschleuniger zu verweisen, der sich in dem System befindet, das die Seite beinhaltet, ein Lokal-/Fernfeld 430, um zu speichern, z. B. einen n-Bit Identifikator, ob die entsprechende virtuelle Seite in Lokalspeicher oder in einem von möglicherweise vielen Fernspeichern gespeichert ist, ein Zählerfeld 440, um einen m-Bit Zähler zu speichern, der die Anzahl an Zugriffen zählt, die auf den Fernspeicher erfolgen (sodass der Zähler nur dann aktiv ist, wenn sich die Seite im Fernspeicher befindet), und ein Attributfeld 450, um verschiedene Bits zu speichern, um unterschiedliche Attribute der Seite anzuzeigen.
  • Bei einer Ausführungsform erfolgt eine Ausnahme, wenn der Wert des Zugriffszählers Null erreicht. Diese Ausnahme ermöglicht der OS-Software, z. B. einem virtuellen Speichermanagement-Kernel, der für Seitenmigration verantwortlich ist, Migrationsrichtlinien, basierend auf der Anzahl der Zugriffe auf die gegebene virtuelle Seite, zu verwalten. Das heißt, die Software kann den virtuellen Adressraum verwalten, in dem die Anwendung läuft, sodass der virtuelle Adressraum physische Speicherseiten, die sich näher zur CPU oder näher zum Beschleuniger befinden, zuordnen kann. Bei Beschleunigern, die mit einem PCIeTM-Bus gekoppelt sind, kann die zugrundeliegende Laufzeitsoftware den softwarebasierten Kohärenzmechanismus implementieren, da der Bus nicht-kohärent ist. Bei einem umkämpften Zugriff auf jegliche gemeinsam benutzte Datenstruktur kann eine Synchronisationssteuerung, wie ein Semaphor, verwendet werden, sodass der Erzeuger-Thread den Semaphor solange nicht freigibt, bis er bereit ist, die Daten an den Verbraucher zu übergeben. Bevor der Erzeuger den Semaphor freigibt, muss er alle ungesicherten Cache-Lines, die die gemeinsam benutzten Daten betreffen, in den Speicher flushen. Dadurch wird sichergestellt, dass, wenn der Verbraucher-Thread auf dem Beschleuniger den Zugriff auf die gemeinsam benutzten Daten von dem Speicher startet, die Daten kohärent sind, sogar wenn die Struktur zwischen dem Host-CPU und dem Beschleuniger Cache-Kohärenz nicht unterstützt. Umgekehrt, wenn der Beschleuniger die Verarbeitung der gemeinsam benutzten Daten ausführt, können ähnliche Synchronisations- und Flush-Mechanismen verwendet werden, um speicherbasierte Daten-Kohärenz sicherzustellen. Sollte die Struktur zwischen der CPU und dem Beschleuniger cachekohärent sein (z. B. eine Zukunftsgeneration von PCIe), ist es nicht erforderlich, bei einer Übergabe ungesicherte Lines in den Speicher zu flushen, bevor der Erzeuger den Semaphor freigibt.
  • Bei Ausführungsformen mit OS-Unterstützung kann die Zuteilung und Verwaltung von Speicher auf dem Beschleuniger zusammen mit dem Speichermanager des OS erledigt werden, der die Systemspeicherseiten, die der Anwendung zugewiesen werden, zuteilt und verwaltet, und der die Seitentabellen verwaltet, die von der CPU eingesetzt werden, um virtuelle Adressen in physische Adressen zu übersetzen. Der Speichermanager verarbeitet ebenfalls Ausnahmen, die aufgrund der Umleitung des Zugriffs auf Fernspeicher auftreten, und verwaltet die Richtlinie hinter der Migration der physischen Seiten zwischen der CPU und dem Beschleuniger. Die Richtlinie der Seitenmigration kann variieren, abhängig von dem Verhalten der Arbeitslast, und kann potentiell verändert werden, um die Anzahl an Fernzugriffen zu verringern (bevor die entsprechende Seite in den Systemspeicher verschoben wird), oder eine erste Tastrichtlinie implementieren, um die Seite an den Ort zu verschieben, an dem es eine maximale Anzahl an Zugriffen gibt. Code und schreibgeschützte Datenseiten können in mehreren Speichern dupliziert werden, um unnötiges Hin- und Herverschieben der physischen Seiten zu verhindern. Nur die Datenseiten, die Daten enthalten, die während der Programmausführung verarbeitet werden, werden hin- und herverschoben, basierend auf der Lokalität des Zugriffs auf Datenseiten.
  • Es wird Bezug genommen auf 7, die ein Blockdiagramm eines Prozessors in Übereinstimmung mit einer Ausführungsform der vorliegenden Erfindung zeigt. Wie in 7 gezeigt, kann Prozessor 500 ein mehrstufiger Out-Of-Order-Prozessor mit Pipeline sein. Prozessor 500 wird in 7 verhältnismäßig vereinfacht gezeigt, um verschiedene Merkmale zu veranschaulichen, die in Verbindung mit Proxy Execution und Reverse Proxy Execution in Übereinstimmung mit einer Ausführungsform der vorliegenden Erfindung verwendet werden.
  • Wie in 7 gezeigt, umfasst Prozessor 500 Front-End-Einheiten 510, die zum Einholen von auszuführenden Makrobefehlen und zu deren Vorbereitung für die spätere Verwendung im Prozessor genutzt werden können. Beispielsweise können Front-End-Einheiten 510 eine Einholeinheit 504, einen Befehls-Cache 506 und einen Befehlsdecoder 508 beinhalten. Bei einigen Ausführungsformen können Front-End-Einheiten 510 weiter einen Trace-Cache beinhalten, zusammen mit Mikrocode-Speicher sowie einem Mikrooperations-Speicher. Einholeinheit 504 kann Makrobefehle, z. B. von Speicher oder Befehls-Cache 506, einholen und diese dem Befehlsdecoder 508 zuführen, um diese in die primitive Form zu entschlüsseln, d. h. Mikrooperationen für die Ausführung durch den Prozessor. Front-End-Einheiten 510 beinhalten weiter eine MMU 509 in Übereinstimmung mit einer Ausführungsform der vorliegenden Erfindung, um Einträge zu speichern, einschließlich zusätzlicher Zustandsinformation, um Proxy Execution und Reverse Proxy Execution, wie hierin beschrieben, zu verarbeiten. Basierend auf solchen Informationen, können Operationen in einem gemeinsam benutzten virtuellen Speicherraum, einschließlich einem Systemspeicher und Lokalspeicher eines oder mehr Beschleunigern, effizient ausgeführt werden, ohne Unterstützung bei der Verschiebung von Daten durch einen Programmierer.
  • Zwischen den Front-End-Einheiten 510 und den Ausführungseinheiten 520 ist eine OOO-(out of Order)-Engine 515 eingekoppelt, die zum Empfangen der Mikrobefehle und deren Vorbereitung für die Ausführung verwendet werden kann. Spezieller kann die OOO-Engine 515 verschiedene Puffer für die Rückordnung des Mikrobefehlsflusses und die Zuteilung verschiedener für die Ausführung benötigter Ressourcen umfassen, u. a. auch für die Bereitstellung der Umbenennung von logischen Registern in den Speicherorten innerhalb verschiedener Registerdateien, wie die Registerdatei 530 und die erweiterte Registerdatei 535. Registerdatei 530 kann separate Registerdateien für Integer- und Floating-Point-Operationen umfassen. Die erweiterte Registerdatei 535 kann als Speicher für Einheiten in Vektorgröße dienen, z. B. 256 oder 512 Bit pro Register.
  • Verschiedene Ressourcen können in Ausführungseinheiten 520 vorhanden sein, u. a. in verschiedenen Logik-Einheiten für Integer, Floating-Point und Single-Instruction-Multiple-Data (SIMD) sowie in anderer spezialisierter Hardware. Die Ergebnisse können einer Rückordnungslogik zugeführt werden, wie einem Rückordnungspuffer (reorder buffer, ROB) 540. Spezieller, umfasst ROB 540 verschiedene Arrays und Logik zum Empfangen der mit den ausgeführten Befehlen verbundenen Informationen. Diese Informationen werden dann von ROB 540 geprüft, um zu bestimmen, ob die Befehle richtig rückgeordnet und die resultierenden Daten in den Architektur-Zustand des Prozessors aufgenommen werden können, oder ob eine oder mehr Ausnahmen eingetreten sind, die eine richtige Rückordnung der Befehlen verhindern. Selbstverständlich kann ROB 540 andere Operationen, die mit Rückordnung verbunden sind, verarbeiten.
  • Wie in 7 gezeigt, ist ROB 540 mit einem Cache 550 gekoppelt, welcher bei einer Ausführungsform ein Low Level Cache sein kann (z. B. ein L1-Cache), der Umfang der vorliegenden Erfindung ist in dieser Hinsicht jedoch nicht eingeschränkt. Auch Ausführungseinheiten 520 können direkt mit dem Cache 550 gekoppelt sein. Von Cache 550 aus kann die Datenkommunikation mit Caches höherer Levels, Systemspeicher usw. erfolgen. Dieser High-Level ist bei der Ausführungsform von 7 gezeigt, wobei der Umfang der vorliegenden Erfindung in dieser Hinsicht nicht eingeschränkt ist.
  • Beispielsweise kann bei einigen Implementierungen ein Beschleuniger mit dem Prozessor auf dem Chip integriert sein. Bei einer Architektur beispielsweise ein Mehrkern-Prozessor, der eine Anzahl an einzelnen Prozessorkernen beinhaltet, zusammen mit Beschleunigern, die heterogene Kerne sein können, z. B. von einem Graphikprozessor, oder andere spezialisierte Verarbeitungseinheit. Im Allgemeinen kann Operation von Proxy Executions und Reverse Proxy Executions auf die gleiche Art und Weise stattfinden, wie vorstehend für auf dem Chip integrierten Beschleunigern beschrieben, die mit Kernen durch jede Art Kopplungsstruktur gekoppelt sein können, einschließlich kohärenter oder nicht-kohärenter Verbindungen.
  • Es wird Bezug genommen auf 8, die ein Blockdiagramm eines Systems in Übereinstimmung mit einer weiteren Ausführungsform der vorliegenden Erfindung zeigt. Wie in 8 gezeigt, beinhaltet System 600 einen Mehrkern-Prozessor 610, der auf einem einzelnen Halbleiter-Die gebildet sein kann und verschiedene Komponenten enthält. Speziell bei der Implementierung von 8, kann Prozessor 610 eine Vielzahl von Kernen 620a620n beinhalten, von denen jeder einen TLB 625a625n beinhalten kann, der Einträge beinhalten kann, die Übersetzungen und zusätzliche Felder, wie vorstehend erörtert, umfassen. Die Kerne wiederum können mit einem gemeinsam benutzten Cache 640 gekoppelt sein, der ein gemeinsam benutzter Last Level Cache sein kann, derart, dass jeder der einzelnen Kerne seinen eigenen Cache beinhalten kann. Wie weiter gezeigt, kann Prozessor 610 ebenfalls Beschleuniger beinhalten. Bei der gezeigten Ausführungsform sind zwei solche Beschleuniger gezeigt, obwohl der Umfang der vorliegenden Erfindung in dieser Hinsicht nicht eingeschränkt ist. Die Verbindung der Beschleuniger mit den Kernen kann durch jede Art Kopplungsstruktur sein, wie z. B. eine kohärente oder nicht-kohärente Verbindung, z. B. eine PCIeTM-Verbindung, eine Kopplungsstruktur mit gemeinsam benutztem Bus und so weiter. Beschleuniger 630a und 630b sind gezeigt und beinhalten jeweils TLBs 635 mit Einträgen, wie vorstehend beschrieben. Außerdem kann Prozessor 610 einen Speicher-Controller 650 beinhalten.
  • Bei einer Implementierung kann Prozessor 610 mit einem Speicher 660 gekoppelt sein, der ein Systemspeicher sein kann, der in mehrere Partitionen aufgeteilt werden kann, z. B. einschließlich einer ersten Partition 665a, die mit den Prozessorkernen verbunden sein kann, und einer zweiten Partition 665b, die mit den Beschleunigern verbunden sein kann. Selbstverständlich können Speicher, die mit den Kernen und Beschleunigern verbunden sind, unterschiedlich konfiguriert sein, z. B. über unterschiedliche Standardschnittstellen und als unterschiedliche Speichermodule und so weiter. Prozessor 610 kann weiter mit einem Chipsatz 670 gekoppelt sein, der wiederum mit verschiedenen Peripheriegeräten, wie z. B. Eingangs-/Ausgangsgeräten, Speichergeräten, anderen Beschleunigern und so weiter, gekoppelt sein kann.
  • Dementsprechend können Ausführungsformen eine Verarbeitung von Proxy Executions und Reverse Proxy Executions in verschiedenen Systemen bereitstellen, die integrierte Beschleuniger oder Beschleuniger, die über eine kohärent oder nicht-kohärente Verbindung gekoppelt sind, beinhalten.
  • Ausführungsformen können als Code implementiert und auf einem Speichermedium gespeichert werden, das Befehle enthält, die zum Programmieren eines Systems für die Ausführung der Befehle verwendet werden können. Das Speichermedium kann beinhalten, ist aber nicht beschränkt auf, jede Art Disks, u. a. Floppy Disks, Optische Disks, Solid State-Laufwerke (SSDs), Compact Disk Read-Only Memories (CD-ROMs), Compact Disk Rewritables (CD-RWs) und magnetooptische Disks (MO), Halbleiter-Geräte, wie Read-Only Memories (ROMS), Random Access Memories (RAMs), wie dynamische Random Access Memories (DRAMs), statische Random Access Memories (SRAMs), Erasable Programmable Read-Only Memories (EPROMs), Flash Memories, Electrically Erasable Programmable Read-Only Memories (EEPROMs), magnetische oder optische Karten oder jede andere Art Speichermedium, das sich für das Speichern von elektronischen Befehlen eignet.
  • Obwohl die vorliegende Erfindung im Hinblick auf eine begrenzte Anzahl an Ausführungsformen beschrieben wurde, sind sich Fachleute bewusst, dass viele weitere Modifikationen und Varianten davon möglich sind. Die beigefügten Ansprüche sollen alle solchen Modifikationen und Varianten abdecken, die dem Sinn und Umfang der vorliegenden Erfindung entsprechen.

Claims (30)

  1. Verfahren, umfassend: Empfangen einer Speicherzugriffsanfrage, die eine virtuelle Adresse enthält; Analysieren eines Eintrags, der der virtuellen Adresse, die in einem Translation Lookaside-Puffer (translation lookaside buffer, TLB) eines Prozessores gespeichert ist, entspricht, um zu bestimmen, ob eine physische Adresse (physical address, PA), die der virtuellen Adresse entspricht, in einem Lokalspeicher, der mit dem Prozessor verbunden ist, oder in einem Fernspeicher, der mit einem Beschleuniger verbunden ist, der mit dem Prozessor über eine nicht-kohärente Verbindung gekoppelt ist, vorhanden ist, wobei der Lokalspeicher und der Fernspeicher zusammen einen gemeinsam benutzten virtuellen Speicherraum bilden; und wenn die PA im Fernspeicher vorhanden ist, Senden einer Reverse Proxy Execution-Anfrage an den Fernspeicher, um die Speicherzugriffsanfrage auszuführen.
  2. Verfahren nach Anspruch 1, weiter umfassend das Bestimmen, ob die PA sich in dem Lokalspeicher oder dem Fernspeicher befindet, basierend auf einem Ortsindikator des TLB-Eintrags.
  3. Verfahren nach Anspruch 2, weiter umfassend das Bestimmen, welcher einer Vielzahl von Fernspeichern, die jeweils mit einem Beschleuniger verbunden sind, in dem sich die PA befindet, unter Verwendung eines Identifikatorfeldes des TLB-Eintrags, das dem Beschleuniger anzeigt, mit welchem Fernspeicher er verbunden ist.
  4. Verfahren nach Anspruch 3, weiter umfassend das Analysieren eines Zählers des TLB-Eintrags, der eine Anzahl an Zugriffen auf die PA des Fernspeichers durch den Prozessor anzeigt.
  5. Verfahren nach Anspruch 4, weiter umfassend das Verschieben von Information von der PA des Fernspeichers in den Lokalspeicher, wenn der Zähler einen Grenzwert erreicht, ohne dass eine Anwendung, die auf dem Prozessor ausgeführt wird, beteiligt ist.
  6. Verfahren nach Anspruch 1, weiter umfassend das Einstellen einer Speicherkonfiguration eines Systems, einschließlich den Lokalspeicher und den Fernspeicher, um einen ersten physischen Adressbereich anzuzeigen, der mit dem Lokalspeicher verbunden ist, und einen zweiten physischen Adressbereich, der mit dem Fernspeicher verbunden ist.
  7. Verfahren nach Anspruch 6, weiter umfassend das Zugreifen auf die Speicherkonfiguration beim Durchgehen einer Seite, um die Übersetzung für die Speicherzugriffsanfrage zu erhalten, und das Speichern eines Eintrags in dem TLB, der die Übersetzung enthält, und eines Ortsindikators, der einen ersten Wert enthält, um anzuzeigen, dass die PA sich im Lokalspeicher befindet, wenn die PA sich innerhalb des ersten physischen Adressbereichs befindet.
  8. Vorrichtung, umfassend: einen Prozessor mit einem ersten Kern, der eine erste Speichermanagementeinheit (memory management unit, MMU) enthält, wobei die erste MMU eine Vielzahl von Einträgen umfasst, um Übersetzungen von virtuellen Adressen in physische Adressen zu speichern, wobei jeder Eintrag ein Ortsfeld beinhaltet, um einen ersten Indikator zu speichern, um anzuzeigen, ob ein Speicherort für den entsprechenden Eintrag in einem Lokalspeicher vorhanden ist, der mit dem Prozessor gekoppelt ist, oder in einem Fernspeicher vorhanden ist, der mit einem Beschleuniger gekoppelt ist, der mit dem Prozessor über eine nicht-kohärente Kopplungsstruktur gekoppelt ist, und ein Identifikatorfeld, um einen Identifikator eines Beschleunigers zu speichern, der mit dem Fernspeicher verbunden ist.
  9. Vorrichtung nach Anspruch 8, wobei jeder Eintrag der ersten MMU weiter einen Zähler beinhaltet, um eine Zählung einer Anzahl an Zugriffen auf den Speicherort des Fernspeichers durch den Prozessor zu speichern.
  10. Vorrichtung nach Anspruch 8, wobei der Lokalspeicher ein Systemspeicher ist und der Fernspeicher ein Lokalspeicher des Beschleunigers ist.
  11. Vorrichtung nach Anspruch 10, wobei der Systemspeicher und der Fernspeicher einen einzelnen virtuellen Adressraum umfassen.
  12. Vorrichtung nach Anspruch 8, wobei ein Eintrag der ersten MMU anzeigt, dass der Speicherort sich im Fernspeicher befindet, wobei der Prozessor eine Speicheranfrage an den Beschleuniger über ein Protokoll der nicht-kohärenten Kopplungsstruktur tunneln soll.
  13. Vorrichtung nach Anspruch 8, wobei der Beschleuniger eine zweite MMU beinhaltet und auf eine Seitenstörung auf der zweiten MMU reagiert, wobei der Beschleuniger bei dem Prozessor anfragen soll, die Seitenstörung zu bereinigen.
  14. Vorrichtung nach Anspruch 13, wobei der Prozessor den Lokalspeicher veranlassen soll, eine Speicherseite, die mit einer Adresse der Seitenstörung verbunden ist, in den Fernspeicher zu übermitteln, und eine Übersetzung für die Speicherseite veranlassen soll, die an den Beschleuniger zur Speicherung in der zweiten MMU gesendet werden soll.
  15. Vorrichtung nach Anspruch 8, wobei der Prozessor einen Speicherort, der im Fernspeicher vorhanden ist, unter Verwendung von Information in einem Eintrag der ersten MMU direkt adressieren soll.
  16. Vorrichtung nach Anspruch 8, wobei der Prozessor eine Reverse Proxy Execution-Anfrage an den Beschleuniger ausgeben soll, um auf Daten zuzugreifen, die im Fernspeicher des Beschleunigers gespeichert sind, unter Verwendung von Information in einem Eintrag der ersten MMU und ohne Verwendung einer User Level-Anwendung, die auf dem Prozessor ausgeführt wird.
  17. System, umfassend: einen Prozessor mit einem ersten Kern, der eine erste Speichermanagementeinheit (memory management unit, MMU) enthält, wobei die erste MMU eine Vielzahl von Einträgen umfasst, um Übersetzungen von virtuellen Adressen in physische Adressen zu speichern, wobei jeder Eintrag ein Ortsfeld beinhaltet, um einen ersten Indikator zu speichern, um anzuzeigen, ob ein Speicherort für den entsprechenden Eintrag in einem Systemspeicher oder in einem zweiten Speicher, der mit einer Beschleunigerkomponente verbunden ist, vorhanden ist, und einen Zähler, um eine Zählung einer Anzahl an Zugriffen auf den Speicherort des zweiten Speichers durch den Prozessor zu speichern; die Beschleunigerkomponente, die mit dem Prozessor über eine Verbindung gekoppelt ist, wobei die Beschleunigerkomponente einen zweiten Prozessor umfasst, und eine zweite MMU; und den Systemspeicher, der mit dem Prozessor gekoppelt ist, wobei der Systemspeicher dynamischen Direktzugriffsspeicher (dynamic random access memory, DRAM) umfasst.
  18. System nach Anspruch 17, wobei der Prozessor einen Speicherort, der im zweiten Speicher vorhanden ist, unter Verwendung von Information in einem Eintrag der ersten MMU direkt adressieren soll.
  19. System nach Anspruch 17, wobei der Systemspeicher und der zweite Speicher einen einzelnen virtuellen Adressraum beinhalten.
  20. System nach Anspruch 18, wobei der Prozessor Information vom Speicherort auf dem zweiten Speicher, in einen Speicherort auf dem Systemspeicher, der auf eine Unterbrechung reagiert, die auftritt, wenn der Zähler einen Grenzwert erreicht, verschieben soll, ohne dass eine Anwendung, die auf dem Prozessor ausgeführt wird, beteiligt ist.
  21. System nach Anspruch 17, wobei der Prozessor und die Beschleunigerkomponente aus einem einzelnen Halbleiter-Die gebildet sind.
  22. System nach Anspruch 21, wobei der zweite Speicher ein aufgeteilter Teil des Systemspeichers ist.
  23. Vorrichtung, umfassend: einen Prozessor mit einem ersten Kern, der erste Logik beinhaltet, um eine Speicherzugriffsanfrage nach Daten an einen Beschleuniger zu senden, der mit dem ersten Kern gekoppelt ist, die transparent gegenüber einer User Level-Anwendung ist, die auf dem ersten Kern, der die Daten anfragt, ausgeführt wird, wenn ein Speicherort der Speicherzugriffsanfrage in einem Speicher vorhanden ist, der mit dem Beschleuniger verbunden ist, und um von dem Beschleuniger, der auf die Speicherzugriffsanfrage reagiert, die Daten zu erhalten, die in dem Speicherort gespeichert sind.
  24. Vorrichtung nach Anspruch 23, wobei der erste Kern einen ersten Speicher, der eine Vielzahl von Einträgen beinhaltet, umfasst, um Übersetzungen einer virtuellen Adresse in eine physische Adresse zu speichern, wobei jeder Eintrag zumindest einen Indikator umfasst, um anzuzeigen, ob ein Speicherort für den entsprechenden Eintrag in einem ersten Speicher, der mit dem ersten Kern verbunden ist, oder in einem Speicher, der mit einem Beschleuniger, der mit dem Prozessor gekoppelt ist, vorhanden ist, und einen Identifikator des Beschleunigers, mit dem der Speicher verbunden ist.
  25. Vorrichtung nach Anspruch 24, wobei jeder Eintrag des ersten Speichers weiter einen Zähler beinhaltet, um eine Zählung der Anzahl an Zugriffen durch den ersten Kern auf den Speicherort des Speichers, der mit dem Beschleuniger verbunden ist, zu speichern.
  26. Vorrichtung nach Anspruch 25, wobei, wenn ein Wert des Zählers größer als ein Grenzwert ist, die Daten, die in dem Speicherort gespeichert sind, in einen zweiten Speicherort im ersten Speicher verschoben werden sollen.
  27. Vorrichtung nach Anspruch 26, wobei das Übertragen der Speicherzugriffsanfrage und das Verschieben der Daten gegenüber der User Level-Anwendung, die die Daten angefragt hat, transparent sind.
  28. Vorrichtung nach Anspruch 24, wobei, wenn ein Eintrag des ersten Speichers anzeigt, dass der Speicherort in dem Speicher ist, der mit dem Beschleuniger verbunden ist, der Prozessor die Speicherzugriffsanfrage an den Beschleuniger über ein Protokoll einer Kopplungsstruktur, die den Prozessor und den Beschleuniger koppelt, tunneln soll.
  29. Vorrichtung nach Anspruch 23, wobei der Prozessor einen Mehrkern-Prozessor umfasst, der den ersten Kern und den Beschleuniger beinhaltet, wobei der Mehrkern-Prozessor auf einem einzelnen Halbleiter-Die gebildet ist.
  30. Vorrichtung nach Anspruch 23, wobei der erste Speicher und der Speicher, der mit dem Beschleuniger verbunden ist, einen einzelnen virtuellen Adressraum umfassen.
DE102010035603A 2009-09-18 2010-08-27 Bereitstellen von Hardwareunterstützung für gemeinsam benutzten virtuellen Speicher zwischen physischem Lokal- und Fernspeicher Ceased DE102010035603A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US12/562,477 US8719547B2 (en) 2009-09-18 2009-09-18 Providing hardware support for shared virtual memory between local and remote physical memory
US12/562,477 2009-09-18

Publications (1)

Publication Number Publication Date
DE102010035603A1 true DE102010035603A1 (de) 2011-04-07

Family

ID=43705804

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102010035603A Ceased DE102010035603A1 (de) 2009-09-18 2010-08-27 Bereitstellen von Hardwareunterstützung für gemeinsam benutzten virtuellen Speicher zwischen physischem Lokal- und Fernspeicher

Country Status (6)

Country Link
US (2) US8719547B2 (de)
JP (3) JP2011065650A (de)
CN (2) CN104123242B (de)
BR (1) BRPI1003466A2 (de)
DE (1) DE102010035603A1 (de)
TW (1) TWI470435B (de)

Families Citing this family (123)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8667249B2 (en) 2004-12-22 2014-03-04 Intel Corporation Systems and methods exchanging data between processors through concurrent shared memory
US8726289B2 (en) * 2008-02-22 2014-05-13 International Business Machines Corporation Streaming attachment of hardware accelerators to computer systems
US8250578B2 (en) * 2008-02-22 2012-08-21 International Business Machines Corporation Pipelining hardware accelerators to computer systems
US8656397B2 (en) * 2010-03-30 2014-02-18 Red Hat Israel, Ltd. Migrating groups of threads across NUMA nodes based on remote page access frequency
US20120236010A1 (en) * 2011-03-15 2012-09-20 Boris Ginzburg Page Fault Handling Mechanism
US9921967B2 (en) * 2011-07-26 2018-03-20 Intel Corporation Multi-core shared page miss handler
US9916257B2 (en) * 2011-07-26 2018-03-13 Intel Corporation Method and apparatus for TLB shoot-down in a heterogeneous computing system supporting shared virtual memory
JP5573829B2 (ja) * 2011-12-20 2014-08-20 富士通株式会社 情報処理装置およびメモリアクセス方法
US8984511B2 (en) * 2012-03-29 2015-03-17 Advanced Micro Devices, Inc. Visibility ordering in a memory model for a unified computing system
CN104204990B (zh) * 2012-03-30 2018-04-10 英特尔公司 在使用共享虚拟存储器的处理器中加速操作的装置和方法
US9164904B2 (en) 2012-08-28 2015-10-20 Hewlett-Packard Development Company, L.P. Accessing remote memory on a memory blade
US9384153B2 (en) * 2012-08-31 2016-07-05 Freescale Semiconductor, Inc. Virtualized local storage
US10270709B2 (en) 2015-06-26 2019-04-23 Microsoft Technology Licensing, Llc Allocating acceleration component functionality for supporting services
CN107402891B (zh) * 2012-12-25 2020-12-22 华为技术有限公司 确定共享虚拟内存页面管理模式的方法和相关设备
US9417873B2 (en) 2012-12-28 2016-08-16 Intel Corporation Apparatus and method for a hybrid latency-throughput processor
US10140129B2 (en) 2012-12-28 2018-11-27 Intel Corporation Processing core having shared front end unit
US9361116B2 (en) 2012-12-28 2016-06-07 Intel Corporation Apparatus and method for low-latency invocation of accelerators
US10346195B2 (en) 2012-12-29 2019-07-09 Intel Corporation Apparatus and method for invocation of a multi threaded accelerator
WO2014116240A1 (en) 2013-01-27 2014-07-31 Hewlett-Packard Development Company, L.P. Socket state transfer
US10114662B2 (en) 2013-02-26 2018-10-30 Red Hat Israel, Ltd. Updating processor topology information for virtual machines
US10061622B2 (en) 2013-02-26 2018-08-28 Red Hat Israel, Ltd. Updating memory topology information for virtual machines
WO2014142836A1 (en) 2013-03-13 2014-09-18 Empire Technology Development, Llc Memory allocation accelerator
US10133677B2 (en) * 2013-03-14 2018-11-20 Nvidia Corporation Opportunistic migration of memory pages in a unified virtual memory system
US20140280669A1 (en) * 2013-03-15 2014-09-18 Microsoft Corporation Memory Sharing Over A Network
WO2014158177A1 (en) * 2013-03-28 2014-10-02 Hewlett-Packard Development Company, L.P. Shared memory system
US9678818B2 (en) * 2014-01-30 2017-06-13 Mellanox Technologies, Ltd. Direct IO access from a CPU's instruction stream
US9785576B2 (en) 2014-03-27 2017-10-10 Intel Corporation Hardware-assisted virtualization for implementing secure video output path
EP3126984A4 (de) 2014-04-03 2017-10-11 Strato Scale Ltd. Clusterweite speicherverwaltung unter verwendung von ähnlichkeitsbewahrenden signaturen
US9766916B2 (en) 2014-05-05 2017-09-19 International Business Machines Corporation Implementing coherent accelerator function isolation for virtualization
US10025715B2 (en) 2014-06-27 2018-07-17 International Business Machines Corporation Conditional inclusion of data in a transactional memory read set
US9342346B2 (en) 2014-07-27 2016-05-17 Strato Scale Ltd. Live migration of virtual machines that use externalized memory pages
US9436601B2 (en) 2014-09-15 2016-09-06 International Business Machines Corporation Categorizing memory pages based on page residences
US9390028B2 (en) 2014-10-19 2016-07-12 Strato Scale Ltd. Coordination between memory-saving mechanisms in computers that run virtual machines
WO2016065610A1 (zh) * 2014-10-31 2016-05-06 华为技术有限公司 访问文件的方法、分布式存储系统和存储节点
US9697370B2 (en) 2014-11-20 2017-07-04 International Business Machines Corporation Implementing and processing extent granularity authorization mechanism in CAPI adapters
US9600428B2 (en) 2014-11-20 2017-03-21 International Business Machines Corporation Implementing extent granularity authorization command flow processing in CAPI adapters
US9710624B2 (en) 2014-11-20 2017-07-18 International Business Machines Corporation Implementing extent granularity authorization initialization processing in CAPI adapters
US20160149909A1 (en) 2014-11-20 2016-05-26 International Business Machines Corporation Implementing block device extent granularity authorization model processing in capi adapters
US9600642B2 (en) 2014-11-20 2017-03-21 International Business Machines Corporation Implementing extent granularity authorization processing in CAPI adapters
US9582659B2 (en) 2014-11-20 2017-02-28 International Business Machines Corporation Implementing extent granularity authorization and deauthorization processing in CAPI adapters
CN104391753B (zh) * 2014-12-16 2017-12-05 浪潮电子信息产业股份有限公司 一种服务器主板内存系统无故障运行方法
US9921768B2 (en) 2014-12-18 2018-03-20 Intel Corporation Low power entry in a shared memory link
JP6380084B2 (ja) * 2014-12-19 2018-08-29 富士ゼロックス株式会社 情報処理装置及び情報処理プログラム
US9524328B2 (en) 2014-12-28 2016-12-20 Strato Scale Ltd. Recovery synchronization in a distributed storage system
US9912748B2 (en) 2015-01-12 2018-03-06 Strato Scale Ltd. Synchronization of snapshots in a distributed storage system
US9495303B2 (en) * 2015-02-03 2016-11-15 Intel Corporation Fine grained address remapping for virtualization
US9727241B2 (en) * 2015-02-06 2017-08-08 Advanced Micro Devices, Inc. Memory page access detection
US9858201B2 (en) * 2015-02-20 2018-01-02 Qualcomm Incorporated Selective translation lookaside buffer search and page fault
US9658793B2 (en) * 2015-02-20 2017-05-23 Qualcomm Incorporated Adaptive mode translation lookaside buffer search and access fault
CN106233265A (zh) 2015-02-26 2016-12-14 斯特拉托斯卡莱有限公司 将访问频率层次结构用于逐出目标的选择
GB2536200B (en) * 2015-03-02 2021-08-18 Advanced Risc Mach Ltd Memory management
GB2536199B (en) * 2015-03-02 2021-07-28 Advanced Risc Mach Ltd Memory management
US10067893B2 (en) * 2015-04-03 2018-09-04 Futurewei Technologies, Inc. Acceleration framework with direct data transfer mechanism
US10198294B2 (en) * 2015-04-17 2019-02-05 Microsoft Licensing Technology, LLC Handling tenant requests in a system that uses hardware acceleration components
US9792154B2 (en) 2015-04-17 2017-10-17 Microsoft Technology Licensing, Llc Data processing system having a hardware acceleration plane and a software plane
WO2016181648A1 (ja) * 2015-05-12 2016-11-17 日本電気株式会社 アクセラレータ制御装置、アクセラレータ制御方法および記録媒体
US10216555B2 (en) 2015-06-26 2019-02-26 Microsoft Technology Licensing, Llc Partially reconfiguring acceleration components
US9858198B2 (en) 2015-06-26 2018-01-02 Intel Corporation 64KB page system that supports 4KB page operations
CN105938461B (zh) * 2015-07-31 2019-02-19 杭州迪普科技股份有限公司 一种dma数据传输方法、装置以及网络设备
US10216662B2 (en) * 2015-09-26 2019-02-26 Intel Corporation Hardware mechanism for performing atomic actions on remote processors
US10025722B2 (en) 2015-10-28 2018-07-17 International Business Machines Corporation Efficient translation reloads for page faults with host accelerator directly accessing process address space without setting up DMA with driver and kernel by process inheriting hardware context from the host accelerator
US9678788B2 (en) 2015-11-10 2017-06-13 International Business Machines Corporation Enabling poll/select style interfaces with coherent accelerators
KR20180088438A (ko) 2015-11-30 2018-08-03 가부시키가이샤 페지 컴퓨팅 다이 및 패키지
US10818638B2 (en) * 2015-11-30 2020-10-27 Pezy Computing K.K. Die and package
WO2017119098A1 (ja) * 2016-01-07 2017-07-13 株式会社日立製作所 計算機システム及び計算機の制御方法
WO2017123208A1 (en) 2016-01-12 2017-07-20 Hewlett Packard Enterprise Development Lp Partially coherent memory transfer
US9934173B1 (en) * 2016-02-24 2018-04-03 Xilinx, Inc. Pseudo cut-through architecture between non-volatile memory storage and remote hosts over a fabric
KR20180009217A (ko) * 2016-07-18 2018-01-26 삼성전자주식회사 데이터 저장 장치의 작동 방법과 이를 포함하는 데이터 처리 시스템의 작동 방법
US10613991B2 (en) 2016-08-01 2020-04-07 Hewlett Packard Enterprise Development Lp Transparent routers to provide services
US10255181B2 (en) * 2016-09-19 2019-04-09 Qualcomm Incorporated Dynamic input/output coherency
TWI645290B (zh) * 2016-10-11 2018-12-21 慧榮科技股份有限公司 資料儲存裝置及其資料寫入方法
US10289553B2 (en) 2016-10-27 2019-05-14 International Business Machines Corporation Accelerator sharing
US10296338B2 (en) * 2016-12-09 2019-05-21 Intel Corporation System, apparatus and method for low overhead control transfer to alternate address space in a processor
CN108572864A (zh) * 2017-03-13 2018-09-25 龙芯中科技术有限公司 触发负载均衡调度的方法、装置及服务器
US11113440B1 (en) * 2017-03-17 2021-09-07 Synopsys, Inc. Memory migration in hybrid emulation
US20180285262A1 (en) * 2017-03-31 2018-10-04 Intel Corporation Techniques for shared virtual memory access protection
US10282811B2 (en) * 2017-04-07 2019-05-07 Intel Corporation Apparatus and method for managing data bias in a graphics processing architecture
US10324858B2 (en) * 2017-06-12 2019-06-18 Arm Limited Access control
JP6927301B2 (ja) * 2017-06-13 2021-08-25 日本電気株式会社 アクセラレータ制御装置、アクセラレータ制御方法、及び、アクセラレータ制御プログラム
US11030117B2 (en) * 2017-07-14 2021-06-08 Advanced Micro Devices, Inc. Protecting host memory from access by untrusted accelerators
US10489304B2 (en) * 2017-07-14 2019-11-26 Arm Limited Memory address translation
US11204867B2 (en) * 2017-09-29 2021-12-21 Intel Corporation PCIe controller with extensions to provide coherent memory mapping between accelerator memory and host memory
US11263143B2 (en) 2017-09-29 2022-03-01 Intel Corporation Coherent accelerator fabric controller
CN109729110B (zh) * 2017-10-27 2022-02-11 伊姆西Ip控股有限责任公司 管理专用处理资源的方法、设备以及计算机可读介质
US11861025B1 (en) 2018-01-08 2024-01-02 Rankin Labs, Llc System and method for receiving and processing a signal within a TCP/IP protocol stack
US11099789B2 (en) 2018-02-05 2021-08-24 Micron Technology, Inc. Remote direct memory access in multi-tier memory systems
US11231927B2 (en) * 2018-03-08 2022-01-25 Intel Corporation System, apparatus and method for providing a fabric for an accelerator
US11689543B2 (en) 2018-08-10 2023-06-27 Rankin Labs, Llc System and method for detecting transmission of a covert payload of data
CN109308270B (zh) * 2018-09-04 2021-07-23 飞腾技术(长沙)有限公司 一种加速虚实地址转换的方法及装置
US11030012B2 (en) * 2018-09-28 2021-06-08 Intel Corporation Methods and apparatus for allocating a workload to an accelerator using machine learning
KR102655094B1 (ko) * 2018-11-16 2024-04-08 삼성전자주식회사 메모리를 공유하는 이종의 프로세서들을 포함하는 스토리지 장치 및 그것의 동작 방법
US11200168B2 (en) 2018-12-10 2021-12-14 International Business Machines Corporation Caching data from remote memories
US10909045B2 (en) * 2018-12-20 2021-02-02 Arm Limited System, method and apparatus for fine granularity access protection
US11108671B2 (en) 2019-01-21 2021-08-31 Rankin Labs, Llc Systems and methods for processing network traffic using dynamic memory
US11023397B2 (en) 2019-03-25 2021-06-01 Alibaba Group Holding Limited System and method for monitoring per virtual machine I/O
US11301396B2 (en) * 2019-03-29 2022-04-12 Intel Corporation Technologies for accelerated data access and physical data security for edge devices
US10852949B2 (en) 2019-04-15 2020-12-01 Micron Technology, Inc. Predictive data pre-fetching in a data storage device
US11487674B2 (en) * 2019-04-17 2022-11-01 Rankin Labs, Llc Virtual memory pool within a network which is accessible from multiple platforms
US11100007B2 (en) 2019-05-28 2021-08-24 Micron Technology, Inc. Memory management unit (MMU) for accessing borrowed memory
US11438414B2 (en) 2019-05-28 2022-09-06 Micron Technology, Inc. Inter operating system memory services over communication network connections
US11256624B2 (en) * 2019-05-28 2022-02-22 Micron Technology, Inc. Intelligent content migration with borrowed memory
US11169930B2 (en) * 2019-05-28 2021-11-09 Micron Technology, Inc. Fine grain data migration to or from borrowed memory
US11372773B2 (en) 2019-05-28 2022-06-28 Rankin Labs, Llc Supporting a virtual memory area at a remote computing machine
US11334387B2 (en) 2019-05-28 2022-05-17 Micron Technology, Inc. Throttle memory as a service based on connectivity bandwidth
US11061819B2 (en) 2019-05-28 2021-07-13 Micron Technology, Inc. Distributed computing based on memory as a service
US20190317802A1 (en) * 2019-06-21 2019-10-17 Intel Corporation Architecture for offload of linked work assignments
US11526290B2 (en) * 2019-06-29 2022-12-13 Intel Corporation System and method to track physical address accesses by a CPU or device
US11226902B2 (en) * 2019-09-30 2022-01-18 International Business Machines Corporation Translation load instruction with access protection
CN111290979B (zh) * 2020-03-23 2021-08-17 优刻得科技股份有限公司 数据传输方法、装置及系统
US11922297B2 (en) * 2020-04-01 2024-03-05 Vmware, Inc. Edge AI accelerator service
US11714755B2 (en) 2020-07-31 2023-08-01 Hewlett Packard Enterprise Development Lp System and method for scalable hardware-coherent memory nodes
US11573898B2 (en) 2020-08-17 2023-02-07 Hewlett Packard Enterprise Development Lp System and method for facilitating hybrid hardware-managed and software-managed cache coherency for distributed computing
TWI766387B (zh) * 2020-10-07 2022-06-01 智捷科技股份有限公司 一種具延遲感知負載平衡的反向代理方法和存儲裝置
US20210075633A1 (en) * 2020-11-18 2021-03-11 Intel Corporation Packet multi-cast for memory pool replication
JP7164267B2 (ja) * 2020-12-07 2022-11-01 インテル・コーポレーション ヘテロジニアスコンピューティングのためのシステム、方法及び装置
CN113014631A (zh) * 2021-02-19 2021-06-22 浙江曲速科技有限公司 基于Hlink的设备缓存推送系统及方法
US20220292027A1 (en) * 2021-03-12 2022-09-15 Micron Technology, Inc. Shared virtual address spaces
US20220292026A1 (en) * 2021-03-12 2022-09-15 Micron Technology, Inc. Virtual addresses for a memory system
CN112948149A (zh) * 2021-03-29 2021-06-11 江苏为是科技有限公司 一种远端内存共享方法、装置、电子设备及存储介质
CN118103824A (zh) * 2021-06-09 2024-05-28 安法布里卡公司 通过网络协议的透明远程存储器访问
US20230036054A1 (en) * 2021-07-29 2023-02-02 International Business Machines Corporation Memory migration within a multi-host data processing environment
US11934279B2 (en) * 2021-10-27 2024-03-19 Dell Products L.P. Sequential file restore performance using filesystem redirection
WO2024073864A1 (en) * 2022-10-02 2024-04-11 Intel Corporation Distributed address translation services

Family Cites Families (47)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4004A (en) * 1845-04-16 Wooden bbidge
IT1228728B (it) 1989-03-15 1991-07-03 Bull Hn Information Syst Sistema multiprocessore con replicazione di dati globali e due livelli di unita' di traduzione indirizzi.
GB2239724B (en) * 1990-01-05 1993-11-24 Sun Microsystems Inc Apparatus for maintaining consistency in a multi-processor computer system using virtual caching
EP0447145B1 (de) 1990-03-12 2000-07-12 Hewlett-Packard Company Durch Anwender festgelegter direkter Speicherzugriff mit Anwendung von virtuellen Adressen
US5450542A (en) * 1993-11-30 1995-09-12 Vlsi Technology, Inc. Bus interface with graphics and system paths for an integrated memory system
JP3889044B2 (ja) * 1995-05-05 2007-03-07 シリコン、グラフィクス、インコーポレイテッド 不均一メモリ・アクセス(numa)システムにおけるページ移動
US6408386B1 (en) 1995-06-07 2002-06-18 Intel Corporation Method and apparatus for providing event handling functionality in a computer system
US5897664A (en) * 1996-07-01 1999-04-27 Sun Microsystems, Inc. Multiprocessor system having mapping table in each node to map global physical addresses to local physical addresses of page copies
US5953741A (en) 1996-11-27 1999-09-14 Vlsi Technology, Inc. Stack cache for stack-based processor and method thereof
US5860116A (en) * 1996-12-11 1999-01-12 Ncr Corporation Memory page location control for multiple memory-multiple processor system
US6249853B1 (en) 1997-06-25 2001-06-19 Micron Electronics, Inc. GART and PTES defined by configuration registers
US5914730A (en) * 1997-09-09 1999-06-22 Compaq Computer Corp. System and method for invalidating and updating individual GART table entries for accelerated graphics port transaction requests
US6252612B1 (en) 1997-12-30 2001-06-26 Micron Electronics, Inc. Accelerated graphics port for multiple memory controller computer system
EP1044411B1 (de) * 1997-12-30 2003-05-02 Micron Technology, Inc. Rechner mit beschleunigtem graphischen port und mit mehreren speichersteuerungen und verfaheren zur herstellung der besagten steuerungen
US7007126B2 (en) * 1998-02-13 2006-02-28 Intel Corporation Accessing a primary bus messaging unit from a secondary bus through a PCI bridge
US6317706B1 (en) 1998-03-31 2001-11-13 Sony Corporation Simulation development tool for an embedded system
US6362826B1 (en) * 1999-01-15 2002-03-26 Intel Corporation Method and apparatus for implementing dynamic display memory
US7065633B1 (en) 1999-01-28 2006-06-20 Ati International Srl System for delivering exception raised in first architecture to operating system coded in second architecture in dual architecture CPU
US6412057B1 (en) 1999-02-08 2002-06-25 Kabushiki Kaisha Toshiba Microprocessor with virtual-to-physical address translation using flags
US6766424B1 (en) * 1999-02-09 2004-07-20 Hewlett-Packard Development Company, L.P. Computer architecture with dynamic sub-page placement
US6282601B1 (en) 1999-03-31 2001-08-28 International Business Machines Corporation Multiprocessor data processing system and method of interrupt handling that facilitate identification of a processor requesting a system management interrupt
US6651163B1 (en) 2000-03-08 2003-11-18 Advanced Micro Devices, Inc. Exception handling with reduced overhead in a multithreaded multiprocessing system
US6604187B1 (en) * 2000-06-19 2003-08-05 Advanced Micro Devices, Inc. Providing global translations with address space numbers
US6925547B2 (en) 2000-12-14 2005-08-02 Silicon Graphics, Inc. Remote address translation in a multiprocessor system
US6658538B2 (en) * 2001-06-21 2003-12-02 International Business Machines Corporation Non-uniform memory access (NUMA) data processing system having a page table including node-specific data storage and coherency control
US6907519B2 (en) 2001-11-29 2005-06-14 Hewlett-Packard Development Company, L.P. Systems and methods for integrating emulated and native code
JP4128467B2 (ja) * 2002-02-25 2008-07-30 株式会社リコー 画像形成装置及びメモリマップ方法
JP4263919B2 (ja) * 2002-02-25 2009-05-13 株式会社リコー 画像形成装置及びメモリ管理方法
US6891543B2 (en) * 2002-05-08 2005-05-10 Intel Corporation Method and system for optimally sharing memory between a host processor and graphics processor
US6922766B2 (en) * 2002-09-04 2005-07-26 Cray Inc. Remote translation mechanism for a multi-node system
US7047320B2 (en) * 2003-01-09 2006-05-16 International Business Machines Corporation Data processing system providing hardware acceleration of input/output (I/O) communication
US8719819B2 (en) 2005-06-30 2014-05-06 Intel Corporation Mechanism for instruction set based thread execution on a plurality of instruction sequencers
US8607235B2 (en) 2004-12-30 2013-12-10 Intel Corporation Mechanism to schedule threads on OS-sequestered sequencers without operating system intervention
US7516449B2 (en) 2005-01-04 2009-04-07 International Business Machines Corporation Run-time type conversion
US7743233B2 (en) 2005-04-05 2010-06-22 Intel Corporation Sequencer address management
US7831780B2 (en) * 2005-06-24 2010-11-09 Nvidia Corporation Operating system supplemental disk caching system and method
US20070005927A1 (en) 2005-06-30 2007-01-04 Khosravi Hormuzd M Systems and methods for remote triggering of page faults
US7793067B2 (en) * 2005-08-12 2010-09-07 Globalfoundries Inc. Translation data prefetch in an IOMMU
US8914618B2 (en) * 2005-12-29 2014-12-16 Intel Corporation Instruction set architecture-based inter-sequencer communications with a heterogeneous resource
US7814279B2 (en) * 2006-03-23 2010-10-12 International Business Machines Corporation Low-cost cache coherency for accelerators
JP2007304747A (ja) * 2006-05-10 2007-11-22 Nec Corp 計算機システム及びメモリアクセス方法
US7487341B2 (en) 2006-06-29 2009-02-03 Intel Corporation Handling address translations and exceptions of a heterogeneous resource of a processor using another processor resource
US7490191B2 (en) 2006-09-22 2009-02-10 Intel Corporation Sharing information between guests in a virtual machine environment
US7506084B2 (en) * 2006-10-17 2009-03-17 International Business Machines Corporation Method for communicating with an I/O adapter using cached address translations
JP4304676B2 (ja) * 2006-10-31 2009-07-29 日本電気株式会社 データ転送装置、データ転送方法、及びコンピュータ装置
US8205064B2 (en) * 2007-05-11 2012-06-19 Advanced Micro Devices, Inc. Latency hiding for a memory management unit page table lookup
US8521919B2 (en) * 2009-06-30 2013-08-27 International Business Machines Corporation Direct memory access in a computing environment

Also Published As

Publication number Publication date
TWI470435B (zh) 2015-01-21
CN102023932A (zh) 2011-04-20
CN104123242A (zh) 2014-10-29
JP2015135696A (ja) 2015-07-27
JP5911985B2 (ja) 2016-04-27
BRPI1003466A2 (pt) 2015-08-18
US20110072234A1 (en) 2011-03-24
CN102023932B (zh) 2014-08-27
US8719547B2 (en) 2014-05-06
US9003164B2 (en) 2015-04-07
US20140208042A1 (en) 2014-07-24
TW201120643A (en) 2011-06-16
CN104123242B (zh) 2017-08-08
JP2011065650A (ja) 2011-03-31
JP2013254524A (ja) 2013-12-19

Similar Documents

Publication Publication Date Title
DE102010035603A1 (de) Bereitstellen von Hardwareunterstützung für gemeinsam benutzten virtuellen Speicher zwischen physischem Lokal- und Fernspeicher
DE102018006756A1 (de) Beschleuniger-Fabric
DE112013002069B4 (de) Hohes Leistungsverbindungskohärenz-Protokoll
DE102018213430A1 (de) Beschleuniger mit geringer Latenzzeit
DE112005002304B4 (de) Adreßumsetzung für Eingabe/Ausgabe- Vorrichtungen mittels hierarchischer Umsetzungstabellen
DE112005002298B4 (de) Leistungssteigerung einer Adreßübersetzung unter Verwendung von Übersetzungstabellen, die große Adreßräume umfassen
DE112017001027B4 (de) Seitenfehlerbehebung
DE102018004327A1 (de) Systeme und Verfahren zum Zugreifen auf Massenspeicher als Arbeitsspeicher
DE112016004303T5 (de) Hardware-Vorhersageelement mit geringem Verwaltungsaufwand zur Verringerung der Leistungsumkehr für Kern-zu-Kern-Datenübertragungsoptimierungsbefehle
DE102018006797A1 (de) Kohärente Speichereinrichtungen über PCIe
DE102019105879A1 (de) Verwaltung von kohärenten Verknüpfungen und Mehr-Ebenen-Speicher
DE112016005910T5 (de) Architechtur für Software-Definierten Interconnect-Switch
DE112010001467B4 (de) Steuerung von Blöcken einer On-Die-System-Struktur
DE102010034555A1 (de) Bereitstellen von Zustandsspeicher in einem Prozessor für Systemmanagement-Modus
DE102015002582A1 (de) Architekturübergreifendes Kompatibilitätsmodul, um zuzulassen, dass ein Codemodul einer Architektur ein Bibliotheksmodul einer anderen Architektur verwendet
DE112013004751T5 (de) Prozessor mit mehreren Kernen, gemeinsam genutzter Kernerweiterungslogik und gemeinsam genutzten Kernerweiterungsnutzungsbefehlen
DE102010053088A1 (de) Sammeln und Streuen mehrerer Datenelemente
DE102013200503A1 (de) Virtualisierungs-Support zum Speichern und Wiederherstellen von Zuständen einer Sprungvorhersage-Logik
DE112010004971T5 (de) Ein System, Verfahren und eine Vorrichtung für einen Cache-Flush eines Seitenbereichs und TLB Invalidierung eines Bereichs von Einträgen
DE202007019502U1 (de) Globaler Überlauf für virtualisierten Transaktionsspeicher
DE112017001148T5 (de) Abflachende portalbrücke .
DE202010018020U1 (de) Opportunistische Verbesserung einer MMIO-Anfrageabwicklung aufgrund eines Zielberichts von Raumerfordernissen
DE102018005039A1 (de) System und verfahren für pro-agent-steuerung und - dienstqualität gemeinsam genutzter ressourcen in chip-mehrprozessor-plattformen
DE112017003332T5 (de) Öffnungszugriffsprozessoren, verfahren, systeme und befehle
DE102013209643A1 (de) Mechanismus für optimierte Nachrichtenaustauschdatenübertragung zwischen Nodelets innerhalb eines Plättchens

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
R016 Response to examination communication
R016 Response to examination communication
R016 Response to examination communication
R002 Refusal decision in examination/registration proceedings
R003 Refusal decision now final