GPU - Systemspeicherzuordnung

8

Wie ist der Systemspeicher (RAM) für den GPU-Zugriff zugeordnet? Mir ist klar, wie virtueller Speicher für CPU funktioniert, aber ich bin mir nicht sicher, wie das funktionieren würde, wenn GPU auf GPU-zugeordneten Systemspeicher (Host) zugreift. Im Grunde etwas, das damit zusammenhängt, wie Daten vom Systemspeicher zum Hostspeicher und umgekehrt kopiert werden. Können Sie bitte erläuternde Artikel bereitstellen?

    
Abhinav 06.07.2012, 03:27
quelle

1 Antwort

11

Ich fand die folgende Folie sehr nützlich: Ссылка

SPEICHERSYSTEM AUF FUSION APUS Die Vorteile der Nullkopie Pierre Boudier AMD Fellow von OpenGL / OpenCL Graham Verkäufer AMD Manager von OpenGL

AMD Fusion Entwicklergipfel Juni 2011

Beachten Sie jedoch, dass dies ein sich schnell bewegender Bereich ist. Nicht so sehr, um neue Konzepte zu entwickeln, als Konzepte (wie zB virtuellen Speicher) auf GPUs anzuwenden. Lass mich zusammenfassen.

In früheren Zeiten, sagen wir vor 2010, waren GPUs normalerweise separate PCI- oder PCI-Express-Karten oder -Platinen. Sie hatten etwas DRAM an Bord der GPU-Karte. Dieser On-Board-DRAM ist ziemlich schnell. Sie könnten auch auf DRAM auf der CPU-Seite zugreifen, typischerweise über DMA-Kopiermaschinen über PCI. GPU-Zugriff auf CPU-Speicher ist in der Regel ziemlich langsam.

Der GPU-Speicher wurde nicht ausgelagert. In diesem Fall ist der GPU-Speicher normalerweise nicht zwischengespeichert, mit Ausnahme der softwaregesteuerten Caches innerhalb der GPU, wie die Textur-Caches. "Software verwaltet" bedeutet, dass diese Caches nicht kohärent sind und manuell gelöscht werden müssen.

Normalerweise hat die GPU nur auf einen kleinen Teil des CPU-DRAM zugegriffen - eine Blende. In der Regel wurde es angeheftet - ohne Paging. Gewöhnlich nicht einmal einer virtuellen Adressumsetzung unterworfen - typischerweise virtuelle Adresse = physikalische Adresse, + vielleicht ein Offset.

(Natürlich ist der Rest des CPU-Speichers ordnungsgemäß virtueller Speicher, paged, sicher übersetzt und zwischengespeichert. Es ist nur, dass die GPU nicht sicher darauf zugreifen kann, weil die GPU keinen Zugriff auf das virtuelle Speichersubsystem hat) und das Cachekohärenzsystem.

Nun, das obige funktioniert, aber es ist ein Schmerz. Wenn man auf etwas zuerst in der CPU arbeitet, dann ist es innerhalb der GPU langsam. Fehleranfällig. Und auch ein großes Sicherheitsrisiko: Benutzer bereitgestellten GPU-Code könnte oft (langsam und unsicher) alle CPU-DRAM zugreifen, könnte also von Malware verwendet werden.

AMD hat ein Ziel angekündigt, GPUs und CPUs enger zu integrieren. Einer der ersten Schritte bestand darin, die "Fusion" APUs zu erstellen, Chips, die sowohl CPUs als auch GPUs enthalten. (Intel hat Sandybridge ähnlich gemacht; ich erwarte, dass ARM das auch tut.)

AMD hat auch angekündigt, dass die GPU das virtuelle Speichersubsystem verwenden und Caches verwenden soll.

Ein Schritt in die Richtung, in der die GPU virtuellen Speicher verwendet, ist die AMD IOMMU. Intel hat Ähnliches. Obwohl die IOMMUs mehr auf virtuelle Maschinen ausgerichtet sind als virtueller Speicher für nicht-virtuelle Maschinen-Betriebssysteme.

Systeme, bei denen die CPU und die GPU sich auf demselben Chip befinden, haben typischerweise CPU und GPU, die auf dieselben DRAM-Chips zugreifen. Es gibt also nicht mehr "on-GPU-board" und "off-GPU-CPU" DRAM.

Aber normalerweise gibt es immer noch eine Aufteilung, eine Partition des DRAM auf der System-Hauptplatine in den Hauptspeicher, der hauptsächlich von der CPU verwendet wird, und Speicher, der hauptsächlich von der GPU verwendet wird. Obwohl der Speicher innerhalb derselben DRAM-Chips leben kann, ist ein großer Chunk typischerweise "Grafik". In dem obigen Papier wird aus historischen Gründen "lokaler" Speicher genannt. CPU- und Grafikspeicher können unterschiedlich eingestellt werden - normalerweise hat der GPU-Speicher mit Ausnahme von Videoaktualisierungen eine niedrigere Priorität und weist längere Bursts auf.

In dem Papier, auf das ich dich beziehe, gibt es verschiedene interne Busse: Zwiebel für "System" Speicher, und "Knoblauch" für schnelleren Zugriff auf die Grafikspeicherpartition. Knoblauch Speicher ist in der Regel nicht zwischengespeichert.

Das Papier, auf das ich mich beziehe, spricht darüber, wie die CPU und die GPU verschiedene Seitentabellen haben. Ihr Untertitel "Die Vorteile von Nullkopie" bezieht sich auf das Zuordnen eines CPU-Datenstrukturers in die GPU-Seitentabellen, so dass Sie ihn nicht kopieren müssen.

usw., usw.,

Dieser Bereich des Systems entwickelt sich schnell, so dass das Papier von 2011 bereits fast veraltet ist. Aber Sie sollten die Trends beachten

(a) Software WANTS einheitlichen Zugriff auf CPU-und GPU-Speicher - virtuellen Speicher und cachefähig

aber

(b) Obwohl Hardware versucht, (a) zu liefern, machen spezielle Grafikspeicher-Funktionen fast immer dedizierten Grafikspeicher, selbst wenn sie nur eine Partition derselben DRAMs sind, deutlich schneller oder leistungsfähiger.

Die Lücke mag sich verengen, aber jedes Mal, wenn Sie denken, dass es weggehen wird, kann ein weiterer Hardware-Trick gespielt werden.

    
Krazy Glew 06.08.2012, 23:23
quelle