Basics2310 schrieb:
Bringt Rbar nur was bei Games oder ist es auch bei anderen Anwendungen Sinnvoll?
ReBar ist erstmal nur eine Technik um PCIe Karten zu erlauben große Mengen an Addressraum zu mappen, ohne die Kompatibilität zu alten Betriebsystemen und alten Hosts zu brechen, die so viel Addressraum nicht haben.
Das Feature um dass es sich also eigentlich dreht für eine GPU ist ob der VRAM der GPU vollständig in den Adressraum der CPU gemappt wird (die CPU kann auf jedes Byte im VRAM direkt zugreifen, durch Benennung der spezifischen Adresse in normalen Speicherzugriffen, was klassischerweise nicht geht).
Auf der anderen Seite war das lange aus gutem Grund irrelevant. Weil allgemein willst du nicht, dass die CPU alle Datentransfers zwischen VRAM und RAM des Systems explizit macht. Was man normalerweise will ist der GPU / dem PCIe Gerät einen Befehl geben. Und das Gerät macht dann den Zugriff autonom (vgl. DMA), indem das PCIe Gerät direkt mit dem Memory Controller kommuniziert und die eigentlichen CPU Kerne müssen sich nicht damit beschäftigen.
Nachteil ist, für kleine, latenzkritische Zugriffe ist es unter Umständen ineffizienter, weil du dem PCIe Gerät einen Befehl geben muss und dann initiert das PCIe Gerät erst den eigentlichen Speicherzugriff (Daten von VRAM in den RAM kopieren oder umgekehrt).
Edit:
Also ein feinfühliger Tradeoff, ob Latenz oder CPU-Last / Datenrate gerade wichtiger ist. Was sich von Zugriff zu Zugriff unterscheiden kann. Spiele mit hohen Refreshrates sind hier klassischerweise am Latenzkritischsten. Weil sie brauchen Nutzereingaben und müssen diese dann so schnell wie möglich durch die Verarbeitungskette bis zur GPU schieben. Alles was nicht so sehr an Nutzereingaben hängt oder vorhersehbarer / planbarer ist profitiert davon eher weniger und lässt die Nachteile überwiegen.
/Edit
Andere Programme können also durchaus auch davon profitieren, wenn sie viele kleine, latenzkritische Zugriffe machen.
Allerdings sollten die GPU Treiber hier auch stark involviert sein und für jeden Datentransfer entscheiden, welche Art von Zugriff wohl besser sein wird. Hier haben die Treiber für Spiele oft vorgefertigte Konfigurationen die sagen, dass eine ist immer schlechter als das andere etc. Ich habe keine Ahnung ob die APIs die Programme nutzen, den Programmen die Möglichkeit geben die Umsetzung von einem Datentransfer explizit zu verlangen oder anderweitig Kontrolle haben was gemacht wird oder ob der Treiber einfach immer macht was er will / für richtig hält. Also der Treiber und die Software hat am meisten Einfluss, ob die neuen Möglichkeiten die man durch ReBar hat überhaupt genutzt werden.
Und man könnte das ganze auch ohne ReBar haben, wenn man einfach auf die Rückwärtskompatibilität zu alten Systemen verzichten würde. Wobei es da viele Nischen gibt, wo der Addressraum dann doch nicht da ist, obwohl das System es grundsätzlich könnte... (Thunderbolt eGPUs zB).