News DX-12-Update erlaubt einen direkten Zugriff der CPU auf den Grafikspeicher

im endeffekt, wie ich das kürzer weiter oben schon erwähnte ^^ nannte sich DMA und war neben Copper und Blitter der grund, wieso man so viel aus den alten kisten rausholen kann und wieso der Amiga auch beim musizieren keine latenz hatte.

ob das am PC aber wirklich so funktioniert, ist aufgrund der hardware-architektur dennoch fraglich. die software ist eine sache, aber wie umgeht man die physischen limits? ginge das mit der API wirklich so einfach?

wenn der "DMA für PC" wirklich kommen sollte, ist es unerheblich, wieviel VRAM verbaut ist - da es generell beschleunigt, wenn die CPU direkt auf den GPU-RAM zugreifen kann und die daten nicht erst über den umweg über den bus, chipsatz und RAM geschickt werden müssen. spielt keine rolle, ob eine karte da dann 4, 8, 16 oder mehr GB hat - die latenz der CPU und GPU würden so oder so gesenkt.
DMA bedeutet nur dass eine separate Hardwareeinheit statt der Recheneinheit den Kopiervorgang vornimmt. Das ist auch beim PC schon seit "immer" Stand der Technik. Über die Anzahl Busse über die die Daten dabei müssen sagt das erstmal gar nichts.
Direct Storage setzt bereits vorraus dass die GPU deutlich mehr direkt über ihren DMA-Controller abwickeln kann. Das wird hier eventuell weiter ausgenutzt.
 
DMA bedeutet nur dass eine separate Hardwareeinheit statt der Recheneinheit den Kopiervorgang vornimmt. Das ist auch beim PC schon seit "immer" Stand der Technik. Über die Anzahl Busse über die die Daten dabei müssen sagt das erstmal gar nichts.
Direct Storage setzt bereits vorraus dass die GPU deutlich mehr direkt über ihren DMA-Controller abwickeln kann. Das wird hier eventuell weiter ausgenutzt.

naja, am PC ist es nicht das gleiche. im unterschied zum PC konnte der Amiga via DMA auch auf zusätzliche geräte zugreifen, im endeffekt auf die gesamte (auch zusätzlich verbaute) hardware. dem PC ist es (physisch) vorbehalten, nur speicherzugriff zu erlangen.

und zwar, weil der Amiga einen speziell dafür ausgelegten DMA-controller hatte. der DMA-controller des PC's ist im chipsatz integriert.

das meinte ich mit physischen limits. du hüpfst ja auch nicht durch ein geschlossenes fenster, sondern umgehst es und nimmst die tür - dauert auch nen tick länger ^^

lag eventuell auch am geschlosseneren aufbau des Amigas, da aber werk jeder A500 baugleich war, wie auch ab werk jeder A4000 und es nicht 893 unterschiedliche boards und CPU's gab. aus einem etwas geschlosseneren system kann man immer mehr rauskitzeln und optimieren wie aus einem offenen, wo alle furz lang eine neue komponente unterschiedlicher hersteller verbaut wird.
 
PCs hatten zu Anfang auch dedizierte DMA-Controller. Die spätere Integration hat Kosten gespart, aber nichts an der Funktion geändert.

In wie weit die Amiga-Lösung technisch überlegen war, kann ich mangels Kenntnis derselben nicht sagen, aber das Direct Memory Access nur direkten Zugriff auf den (Haupt-)Speicher bietet, erklärt sich doch quasi von selbst.^^ Dieser ist beim PC aber prinzipiell allen Geräten möglich, die an einem DMA-tauglichen Bus hängen. In diesem Zusammenhang sei an die Sicherheitsprobleme rund um Thunderbolt erinnert, dass den vollen PCI-E-Feature-Stack externen Geräten zugänglich machen kann – inklusive DMA, aber halt mit einem Sicherheitskonzept, dass wie folgt aussieht: "Wenn Sie Angst vor Angriffen via PCI-E haben, dann machen sie doch ein Schloss ans Gehäuse." :-)
 
In diesem Zusammenhang sei an die Sicherheitsprobleme rund um Thunderbolt erinnert, dass den vollen PCI-E-Feature-Stack externen Geräten zugänglich machen kann – inklusive DMA, aber halt mit einem Sicherheitskonzept, dass wie folgt aussieht: "Wenn Sie Angst vor Angriffen via PCI-E haben, dann machen sie doch ein Schloss ans Gehäuse." :-)
Mein Dell NB fragt bei jedem neuen Gerät am TB erstmal nach ob das irgendwas darf. Allerdings weiß ich nicht ob diese "Sicherheit" über die eines Mac-Filters hinaus geht.
 
Zuletzt bearbeitet:
PCs hatten zu Anfang auch dedizierte DMA-Controller. Die spätere Integration hat Kosten gespart, aber nichts an der Funktion geändert.

In wie weit die Amiga-Lösung technisch überlegen war, kann ich mangels Kenntnis derselben nicht sagen, aber das Direct Memory Access nur direkten Zugriff auf den (Haupt-)Speicher bietet, erklärt sich doch quasi von selbst.^^ Dieser ist beim PC aber prinzipiell allen Geräten möglich, die an einem DMA-tauglichen Bus hängen. In diesem Zusammenhang sei an die Sicherheitsprobleme rund um Thunderbolt erinnert, dass den vollen PCI-E-Feature-Stack externen Geräten zugänglich machen kann – inklusive DMA, aber halt mit einem Sicherheitskonzept, dass wie folgt aussieht: "Wenn Sie Angst vor Angriffen via PCI-E haben, dann machen sie doch ein Schloss ans Gehäuse." :-)

das problem beim (XT- bzw. AT-) PC war ja, dass er damals standarmäßig keine(n) co-prozessor(en) hatte. ab den MMX-prozessoren war das ja dann obsolet.

am Amiga sah das so aus:

400px-Amiga-Chip-Set1.png


hier am beispiel eines OCS/ECS-systems (modelle A500, A500+, A600, A1000, A2000, A3000). hier können als von der CPU aus direkt daten auf sämtliche bereiche und zurück fließen - der chipsatz waren hier co-prozessoren, die das system und vor allem die grafik beschleunigten. auch diese architektur erlaubte bereits eine datenbreite von 32 bit.

hier ein schaubild des datenflusses im PC (ein einfacheres schaubild fand ich auf die schnelle nicht, aber der datenfluss bzw. die kommunikation zw. den komponenten ist hier doch gut zu erkennen):

R.jpeg


es ist zu erkennen, dass hier die daten am PC über mehrere zwischenstationen fließen müssen und nicht alle komponenten direkt miteinander kommunizieren können, sondern es sind controller zwischengeschaltet, um die daten noch einmal an die komponenten zu verteilen und zurück zu senden. das bedeutet natürlich geschwindigkeitsverluste. man beachte den datenweg von der CPU zum grafikspeicher. von langsameren OS und den bremsenden treibern damals fange ich jetzt nicht an, da hat sich ja zum glück einiges getan.

klar, in DMA steckt das wort "Memory", was diesen natürlich betrifft ^^ aber durch die einfachere, direktere hardwarestruktur des Amigas und direkteren zugriffs auf die komponenten von CPU und speicher konnten daten schneller fließen bzw. controller waren erst verbaut, wenn nötig. z.b. brachte oft externe hardware integrierte controller mit, siehe hier:

596bd586f206f2106732ddc5.jpeg

(eine festplatte mit externem A500-controller)

man schaltete zusätzliche controller quasi erst ans ende der daten-/kommunikationsleitungen "hinten ran".

interessant war das auch mit z.b. PPC-erweiterungskarten bei den AGA-Amigas (wie z.B. meinem noch vorhandenen A4000):

man steckte die erweiterungskarte mit PPC direkt auf den prozessorsockel und hatte quasi ein kleineres 2. board auf dem mainboard, auf dem dann PPC, co-prozessor (bei mir 68060), fast RAM und SCSI-schnittstelle stecken.

soweit zu den physischen unterschieden.

deswegen ist hier die frage bzw. der lösungsansatz interessant, wie Microsoft diesen "umweg" vermeidet bzw, wie das technisch umzusetzen ist, damit das funktioniert. dass der system-RAM ausgelassen wird, ist klar, sonst würde das keinen sinn machen. aber funktioniert das ganze so einfach, dass einfach nur der RAM ausgelassen wird oder steckt da mehr dahinter? ich bin auf den lösungsansatz von MS gespannt.
 
Zuletzt bearbeitet:
Dieses PC-Schema entspricht keinem je real existierendem System. Nicht einmal annäherend. Zu Zeiten, in denen ein SATA-Host-Controller verbaut wurde, hattest du schon lange keinen "externen Bus" mehr, an dem auch der RAM hing. Bei den ersten PCs war der Aufbau noch viel primitiver und damit direkter als beim Amiga: Es gab den System-Bus. Da hing alles dran. Fertig. Nur für Disketten- oder gar Festplattenlaufwerke war noch mal ein Controller dahinter, aber dieser hatte direkten Kontakt zur gleichen Leiterbahn an der auch der 8088, oben verlinkter DMA-Controller, das Basic-ROM und jeder einzelne Speicher-Chip hing. Und, lediglich elektrisch entkoppelt und de-multiplexed, sogar sämtliche Erweiterungskarten – man konnte meinem Wissen nach bis einschließlich zum 286 RAM oder sogar ganze CPUs auf Steckkarten nachrüsten und das unterschied sich in der Systemlogik nicht von einem Einbau der gleichen Chips auf den passenden Mainboard-Sockeln.

Die Unterteilung in verschiedene, getrennte Busse hat beim PC erst nach und nach Einzug gehalten, weil die systemweiten Lösungen einfach nicht skalierbar und schnarchlahm waren. Da konnte zwar jeder mit jedem reden, aber die meiste Zeit haben alle auf irgend einen gewartet. Ich hatte das letztes Jahr mal im Rahmen der Sockelgeschichte aufgeschrieben, wie sich aus dem System- über mehrere Zwischenstufen der Front-Side-Bus entwickelt hat.
 
Zurück