Du siehst doch sofort wie fett die Relation ist.
Das eine Ding ist ein Monster mit über 2000 ALUs und das andere ein kleiner Chip mit weniger als 700.
2MB Cache für das Ding sprengt auf jeden Fall alles, was bisher verbaut wurde, relativ gesehen.
Ich denke zwar nicht das nicht Nvidia den Cache bei größeren GPUs linear skalieren wird, da ich denke das frisst zuviel Platz, aber wenn da noch ein paar MB dazu kommen, sollte es ähnlich helfen.
Also für eine High-Endkarte wie deine GTX*70/*80 muss Nvidia mindestens den bisherigen Cache verdoppeln. DAs wären dann mindestens 3MB Cache für die großen Brummer. Immerhin benötigen sie mehr Bandbreite wie eine kleine Einstiegskarte à la GTX750.
Also an welcher Bandbreite sparen sie?
Die Kommunikation findet durch PCIe statt, was könnte der ARM-Chip also dort sparen und dennoch schneller sein?
Angenommen ein verbauter ARM-Chip verarbeitet Daten, die über den PCIe-Bus übermittelt werden und vermittelt diese dann anschließend innerhalb der Grafikkarte. Gleichzeitig können weitere Sätze von der CPU angefordert werden.
Die Verarbeitung läuft innerhalb der Grafikkarte, deren interne Leitungen schneller sind als über den langsamen Weg zu CPU/Arbeitsspeicher und zurück. Damit wird der limitierte PCIe-Bus nicht so stark belastet und es werden nur die Datensätze angefordert, die die Grafikkarte wirklich braucht.
Welche Befehle z.B?
Was könnte man bypassen?
Die Art der Befehle kann man im Vorfeld im ARM-Chip definieren. In einem Spiel bräuchte nur eine bestimmte Funktion aufgerufen werden. Der ARM-Chip erkennt diese dann und führt sie direkt aus. Man umgeht damit die abstrakten Schichten im Betriebssystem wie Treiber und anderen Kommunikationsschichten im Betriebssystem, die für die Verwaltung Overhead erzeugen.
Im Prinzip wäre das nichts anderes als ein Low-Level-Zugriff, direkt auf die Hardware. Anders als bei Mantle bräuchte Nvidia dafür keine extra API, sondern könnte das direkt über CUDA regeln. Entwickler hätten dann direkten Zugriff mit minimalem Codeaufwand.
Ich lege mal meine Laiensicht dar, die Application verwendet DX als Interface, wir haben eine x86 Host CPU und der Code ist entsprechend für die Maschinensprache übersetzt.
Also wo kann sich da ein ARM-Chip logisch einschalten und wie Mantle Overhead zu reduzieren, wo der gesamte Renderer speziell dafür angepasst ist?
Einfache Antwort, natürlich gar nicht.
Das stimmt so nicht! Eine CPU kann nur eine bestimmte Anzahl an Code gleichzeitig übersetzen. Irgendwo ist dafür das (CPU-)limt. Die CPU kann einfach nicht mehr abarbeiten. Die Grafikkarte könnte theoretisch mehr leisten, bekommt aber nicht genug Daten von der CPU geschaufelt.
Hier schaltet man dann einen ARM-Co-Prozessor dazwischen, der die CPU bei ihren Aufgaben unterstützt und somit Last reduziert. Der Rest ist wie oben schon beschrieben. Direkter Zugriff von Programmebene auf die Hardware ohne den langen weg über DX-Schnittstelle -> Betriebssystem -> Bus-/RAM-> CPU -> Bus/PCI-Express -> Grafikkarte.
Beispielsweise hättest du dann stark vereinfacht:
Programm --> CUDA --> Grafikkarte (ARM) mit Direktweg über den schnellsten Bus. Spart dir Verwaltung = Overhead => schneller!
Eine GTX870 wäre mit ARM-Chip wesentlich schneller als ohne! Die Frage wäre jedoch, ob und wie sich das auch auf synthetische Benchmarks auswirkt.
Ist mir ehrlich gesagt vollkommen egal wofür, da ich keine Magic dahinter spekuliere.
Spielt letztendlich auch keine Rolle wofür, denn als Gamer bekommt man davon eh nichts mit außer vielleicht mehr FPS oder zusätzlicher Effekte. Maxwell ist angeblich die erste Generation mit ARM-Chip. Ungeklärt ist noch, ob NVidia es in der ersten Generation (also GTX870+) einsetzt, oder erst bei den Nachfolgern in 2015.