2012-07-06 11 views
8

Wie wird 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äutern, was durch Referenzartikel unterstützt wird?GPU - Systemspeicherzuordnung

Antwort

10

fand ich die folgenden Foliensatz ganz nützlich: http://developer.amd.com/afds/assets/presentations/1004_final.pdf

MEMORY SYSTEM AUF FUSION APUS Die Vorteile von Zero-Copy Pierre Boudier AMD Fellow von OpenGL/OpenCL Graham Sellers AMD -Manager von OpenGL

AMD Fusion Developer Summit Juni 2011

Seien Sie sich jedoch bewusst, dass dies eine schnelle Bewegung ist rea. Nicht so sehr, um neue Konzepte zu entwickeln, als Konzepte (wie zB virtuellen Speicher) auf GPUs anzuwenden. Lass mich zusammenfassen.

In den alten Tagen, sagen wir vor 2010, waren GPUs in der Regel separate PCI oder PCI-express Karten oder Boards. 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.

In der Regel wurde nur ein kleiner Teil des CPU-DRAM von der GPU angesprochen - 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 der CPU-Speicher ordnungsgemäß virtuellen Speicher, paged, sicher übersetzt und zwischengespeichert. Es ist nur, dass die GPU nicht sicher zugreifen kann, da die GPU nicht Zugriff auf den virtuellen Speicher hat Subsystem und das Cache-Kohärenz-System

Jetzt funktioniert das oben, aber es ist ein Schmerz.Bearbeiten auf etwas zuerst in der CPU dann innerhalb der GPU ist langsam.Fehler anfällig.Auch ein großes Sicherheitsrisiko: Benutzer bereitgestellten GPU-Code Englisch: www.mplayerhq.hu/DOCS/HTML/en/menc-...d-mpeg4.html AMD kann oft (langsam und unsicher) auf alle CPU - DRAMs zugreifen und könnte daher auch von Malware verwendet werden

AMD hat sich zum Ziel gesetzt, GPUs und CPUs enger zu integrieren "Fusion" APUs, Chips, die sowohl CPUs als auch GPUs enthalten. (Intel hat das ähnlich mit Sandybridge gemacht; ich erwarte, dass ARM das auch tut.)

AMD hat auch angekündigt, dass sie beabsichtigen, dass die GPU das virtuelle Speichersubsystem verwendet und Caches verwendet.

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

Systeme, bei denen sich CPU und GPU auf demselben Chip befinden, haben typischerweise CPU und GPU, die auf dieselben DRAM-Chips zugreifen. Es gibt also kein "On-GPU-Board" und "Off-GPU-CPU" DRAM mehr.

Aber es ist in der Regel immer noch eine Aufteilung, eine Partition, des DRAM auf dem System Motherboard in Speicher hauptsächlich von der CPU verwendet, und Speicher hauptsächlich von der GPU verwendet. 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 sein - 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 Sie verweisen, gibt es verschiedene interne Busse: Zwiebel für "System" Speicher, und "Knoblauch" für den schnelleren Zugriff auf die Grafikspeicherpartition. Knoblauchspeicher ist typischerweise 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, sodass Sie ihn nicht kopieren müssen.

etc., etc.,

Dieser Bereich des Systems entwickelt sich schnell, so dass die 2011 Papier ist schon fast obsolet. Aber Sie sollten die Trends beachten

(a) Software WILL einheitlichen Zugriff auf CPU und GPU-Speicher - virtuellen Speicher und Cache gespeichert werden

aber

(b), obwohl Hardware zur Verfügung zu stellen versucht, (a), spezielle Grafik Speicherfunktionen machen fast immer dedizierten Grafikspeicher, auch wenn sie nur eine Partition derselben DRAMs sind, deutlich schneller oder stromsparender.

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