Rezisable Bar bei Ryzen 8000er APUs?

pabu.roar

Ensign
Registriert
Dez. 2017
Beiträge
230
Moin,

hat hier wer eine Ryzen 8000 APU (iGPU in Nutzung) und Rezisable Bar aktiviert?

Laut Specs können die das. Ich vermute aber, das bezieht sich nur darauf, wenn man die APU mit einer dGPU paart. Im Bios ist es zumindest bei mir an, aber laut Windows ist es aus.

Danke!
 
"Resizable BAR" ist eine PCIe-Funktion. Dies ist ein Mechanismus, der es dem PCIe-Gerät, z. B. einer separaten Grafikkarte, ermöglicht, die BAR-Größe (Base Address Register) zu verwenden, um Systemressourcen zu optimieren. Die APU hängt nicht auf PCIE Lanes.
 
  • Gefällt mir
Reaktionen: NerdmitHerz, Ray519 und SpamBot
Hängt die iGPU der APU den intern am PCIe? Ich meine nicht. rBAR ist eine PCIe Funktion.

PS: Laut GPU-Z Screenshots wird sie allerdings mit PCIe Interface und X Lanes angegeben.
 
Die ist ja per PCIe Lane angebunden.

Wenn es nicht so ist, ist sie OK. Dachte nur, hätte was falsch eingestellt, zumal das explizit in den Specs steht.
 
Vermute es liegt daran, dass rBAR nur für VRAM funktioniert, was die APU ja nicht hat.
 
  • Gefällt mir
Reaktionen: SpamBot
  • Gefällt mir
Reaktionen: shysdrag
cvzone schrieb:
Hängt die iGPU der APU den intern am PCIe?
cvzone schrieb:
Vermute es liegt daran, dass rBAR nur für VRAM funktioniert, was die APU ja nicht hat.
Nicht ganz.
ReBar erlaubt es nachträglich, vom OS, nach dem Boot vom BIOS die BAR Größe nochmal zu ändern.
Wichtig ist das für uns nur, weil die GPUs sonst in alten PCs die nicht so viel PCIe Adressraum haben, dass zB 16 GiB VRAM reinpassen, nicht genutzt werden können. So sieht das BIOS die GPUs als klassische GPUs die 256 MiB Adressraum brauchen. Und wenn Treiber und OS mehr kann, gehen die das nachträglich ändern, wie sie es gerne hätten.

Und bei GPUs wollen wir das um den gesamten VRAM direkt in den CPU Adressraum zu mappen. So dass die CPU direkt auf bestimmte Stellen des VRAM zugreifen kann, anstatt das indirekt zu machen. Wobei das nicht nur Vorteile hat. Indirekte Zugriffe sind besser für Bandbreite und CPU Last. Nur für Latenzen bei kleinen Zugriffen sind die direkten Zugriffe wirklich besser.

Bei einer modernen iGPU teilt die sich den RAM mit der CPU. Das heißt hier kann die CPU grundsätzlich schon die ganze Zeit auf jede Ecke vom "VRAM" zugreifen. Weil es alles normaler RAM der CPU ist, der nur auch von der iGPU genutzt wird. Hier gibt es also kein "Mapping"-Problem. Weil es Systembedingt schon immer so adressiert wird.

shysdrag schrieb:
ermöglicht, die BAR-Größe (Base Address Register) zu verwenden
Wie gesagt große BARs waren auch vorher möglich. In der Server-Welt zB habe ich mal alte Xeon-Phi PCIe Karten genutzt. Die hatten 32 GiB RAM drauf und wollten den auch ab Werk mappen. Wenn du die in einen PC steckst der kein 64 Bit PCIe Addressing kann (die oft "above 4G decoding" genannte Option. 4G in dem Fall referenziert 4 GiB, das Maximum das man mit 32 Bit adressieren kann). Oder nicht genügend PCIe Adressraum hat dafür, kriegst du nur ne Fehlermeldung vom BIOS, dass die PCIe Karte nicht gemappt werden kann und das den Boot verhindert. "Remove PCIe device and reboot". ReBar ist nur dafür da, dass die Karte ohne rumzujumpern beides kann. Die klassischen kleinen BARs die alle PCs mit PCIe können. Auch alte vor ReBar. Und riesige BARs für die neuen PCs die es können (und wenn die Treiber und OS es auch nutzen können / wollen. Wobei die großen BARs nicht verhindern dass du die Karte weiterhin klassisch und mit indirekten Speicherzugriffen verwendest. Sie zwingen zu nichts. Aber Treiber muss halt dennoch damit umgehen können).
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: pabu.roar, ropf und ghecko
Ray519 schrieb:
Bei einer modernen iGPU teilt die sich den RAM mit der CPU. Das heißt hier kann die CPU grundsätzlich schon die ganze Zeit auf jede Ecke vom "VRAM" zugreifen. Weil es alles normaler RAM der CPU ist, der nur auch von der iGPU genutzt wird. Hier gibt es also kein "Mapping"-Problem. Weil es Systembedingt schon immer so adressiert wird.
Das ist der Punkt. Danke fürs erklären.
 
Ray519 schrieb:
Wichtig ist das für uns nur, weil die GPUs sonst in alten PCs die nicht so viel PCIe Adressraum haben, dass zB 16 GiB VRAM reinpassen, nicht genutzt werden können. So sieht das BIOS die GPUs als klassische GPUs die 256 MiB Adressraum brauchen. Und wenn Treiber und OS mehr kann, gehen die das nachträglich ändern, wie sie es gerne hätten.
Das ist so auch nicht ganz richtig. Natürlich können OS und Programme auch ohne rBar die volle Größe des Grafikspeichers nutzen. Das OS/Programm sieht dann lediglich immer nur einen 256 MB Adressbereich davon. Sollen beispielsweise 1 GB an Daten in den Grafikspeicher geladen (oder sonstwie damit ausgetauscht werden), müssen 4 mal 256 MB übertragen werden, jeweils mit einem Wechsel des Mappings auf andere 256 MB des Grafikspeichers.

Dieses Wechseln der Adressblöcke kostet halt Performance, erst recht wenn die Daten nicht im gleichen Adressblock liegen. Dann muss noch öfter zwischen verschiedenen adressierbaren 256 MB Blöcken gewechselt werden.

Mit rBar wird dann dieses starre 256 MB Übertragungsfenster aufgehoben und es können beliebig große Adressblöcke direkt angesprochen werden. Damit enfällt dann die Unterteilung der Übertragung in 256 MB Schritte und auch der ständige Wechsel der Adressbereiche, was den Datentransfer insgesamt beschleunigt.
 
mibbio schrieb:
Natürlich können OS und Programme auch ohne rBar die volle Größe des Grafikspeichers nutzen. Das OS/Programm sieht dann lediglich immer nur einen 256 MB Adressbereich davon.
Ich habe nicht gesagt "nutzen". Ich habe gesagt addressieren. Ich habe doch sogar direkt und indirekt Addressieren kurz erklärt. Das "genutzt" in deinem Zitat, bezieht sich explizit darauf das ein PCIe Gerät mit 32 GiB BAR in einem alten PC nicht genutzt werden kann. Der PC kann nicht booten mit der Karte. Deshalb brauchen wir ReBAR um das selbe Ergebnis zu erreichen ohne die Kompatibilität mit alten PCs zu brechen. Weil 32 GiB BAR mit ReBAR nur eine Option ist, aber nicht Vorraussetztung um die Karte zu nutzen.


Und es geht dabei nicht um den kleinen Addressbereich der gemappt wird, sondern es geht darum, dass du der GPU einen Befehl gibst "hol dir folgende Daten von Addresse X aus dem System RAM und pack sie an Addresse Y in deinen VRAM". Damit ist immer alles addressierbar. Den gesamten VRAM zu Mappen, erlaubt der CPU, diese Indirektion zu überspringen wenn sie möchte und kleine Datenmengen direkt zu schreiben. Also anstatt einer Transaktion für den Befehl und dann die eigentliche Transaktion von der GPU aus für den eigentlichen Schreib/Lesevorgang, kannst du die Daten direkt in einem einzigen Paket schreiben.

Die kleine Menge VRAM wird nicht genutzt um dort Daten zwischenzuparken, die die GPU dann nochmal verschiebt etc. Das wäre dämlich vor dem Hintergrund der Funktionsweise von PCIe. Da kannst du halt bisher die wichtigsten Datenstrukturen reinpacken, für die indirekte Zugriffe ein gewaltiger Nachteil wären.

Wie ich gesagt habe, für niedrige CPU Last und hohen Durchsatz willst du DMA Zugriffe nutzen. Da ist die CPU dann für den eigentlichen Transfer nicht mehr involviert, das Gerät redet direkt mit dem Memory Controller.

Und PCIe nutzt einzelne Pakete. Deren Größe in der Praxis auf 256 Byte limitiert sind. Dieser Latenzvorteil der direkten Zugriffe ist also am größten, wenn du nur ein Paket schickst, also alle Daten in max. 256 Byte passen. Wenn du eh mehrere Pakete brauchst für die Datenmengen, werden DMA Transfers immer sinnvoller.
Also 1 GiB an Daten am Stück werden nie und nimmer mit direkten Transfers übertragen. Das wäre viel zu ineffizient und langsam.
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: ropf
Zurück
Oben