Die mathematische Formel will ich doch gerne mal sehen wo eine geringe Speichergröße zu kürzeren Latenzzeiten führt. Zur Info, das eine hat mit dem andern nichts zu tun. Ein 1GB Sram hat die gleiche Latenz wie ein 1KB Sram.
Das will ich mal sehen, wie du Mathematiker ein Adressierungssystem für eine Milliarde Speicherzellen baust, dass so schnell arbeitet, wie eins für 1000....
Zum Speichercontroller ja ich weiß ist ein Wiki Zitat ändert aber nichts an der richtigkeit:
Der Vorteil einer Unterbringung des Speicherkontrollers im Prozessor liegt in den kürzeren Wegen der Zugriffe. Der Chip kann so, im Vergleich zur Unterbringung auf dem Mainboard, direkt adressiert werden – ohne den Umweg über die Northbridge. Allerdings unterstützt ein Speicherkontroller nur bestimmte Speichertypen, somit legt seine Wahl und Bauweise den Speichertyp des Systems fest. Ist der Speicherkontroller im Prozessor integriert, hängt der unterstützte Speichertyp vom Prozessor ab; ist er hingegen auf dem Mainboard integriert, ist der verwendete Speicher vom Prozessor unabhängig, lediglich das Mainboard und dessen Chipsatz bestimmen den Speichertyp.
Nettes Zitat. Und was steht drin? Nichts von Entfernung, sondern von direkter Anbindung ohne eine FSB<->DRAM-Wandlung ala Northbridge.
Die nähe ist durchaus wichtig Licht braucht bekanntlicherweiße 3ns für 1 cm selbst bei einem 1 Ghz Prozessor würde dies schon zu einer Latenz von 3 Zyclen führen, bei einem modernen 3 GHZ Prozessor wären es schon 10 Zyklen, allein durch den Datenweg,
In meinem Universum legt Licht (im Vakuum) knapp 300.000 km/s zurück, d.h. 30 cm pro Nanosekunde. Nicht 3 ns pro Zentimeter. Bei einer 3 GHz CPU wären pro Takt also 10 cm drin. Strom ist nicht ganz so schnell, aber sollte es immer noch problemlos innerhalb eines Taktes 2-3 mal quer übers X1-DIE schaffen. Und du willst aus ein paar mm Entfernugnsunterschied in der Anordnung eine Latenz berechnen??
Du speicherst nicht deinen kompletten Programmcode in die Caches... sondern lediglich die einzelnen Funktionen welche aktuell gebraucht werden
Und was heißt "aktuelle"? Je nach Cache-Größe irgendwas zwischen "die nächsten 10 Zyklen" bis "die nächsten 1M Zyklen". Oder, wenn man nochmal 32 MB extra hat, ggf. auch alles, was in der nächsten halben Minute an ausführbaren Code benötigt wird, so dass der "lahme" Speichercontroller nur noch die zu verarbeitenden Rohdaten bewältigen muss, während er bei der P4 alle naslang andere Programmteile nachlädt. Man kann mit Caches verdammt viel machen, wenn man den Programmcode an jede Stufe anpasst und da liegt bei der X1 eben enormes Potential. Denn wenn ich es schaffe, mein Spiel in einen Spiellogikteil von <32 MB (aber >2 MB) und einen Datenteil von mehreren GB aufzuteilen (und sehr viele Spiele haben bereits eine derartige Verteilung zwischen einer .exe von einigen MB und einer riesigen Sammlung an Textur-, Level-,....... Daten), dann arbeitet sie effektiv mit 60% mehr Speicherbandbreite, als die PS4, bei der auch sich ständig wiederholende Anfragen nach Programcode-Anteilen über das primäre Speicherinterface abgewickelt werden, so dass am Ende mehrere tausend Mal der gleiche Inhalt transferiert wird.
Du betrachtest nur die Endmenge an Daten die nur für das letzendliche Bild da sind... das ist so nicht gut, du hast eine Menge Berechnungen und damit Speicherabfragen wie Kollisionsabfragen, Audio Simulation, Animationen etc. pp. wo viele Zwischenergebnisse benötigt werden und nichts mit dem Pixel Output zu tun haben und somit eine hohe Bandbreite, nur den finalen Frame anschauen ist gradezu ignorant, auch musst du die Farbtiefe von Texturen miteinbeziehen,
Du hast bislang ausschließlich von Framebuffern gesprochen. Die heißen nicht ohne Grund so - da speichere ich einen kompletten Frame zwischen. Gerade im Rahmen von Defferedrendering auch durchaus Zwischenstufen, weil ich eben schon eine komplette Berechnungskategorie für das ganze Bild abgeschlossen habe.
Diverse Zwischenergebnisse (allerdings nicht Audio, Kollision und auch nur Beschränkt Animation, weil das keine GPU-Aufgaben sind

) sind dagegen eben ein Paradebeispiel für Caching. Im Gegensatz zum Inhalt der Framebuffer, die letztlich das Ausgabebild ergeben und solange erhalten bleiben müssen, brauche ich die enorme Menge an Zwischenergebnissen nämlich nur sehr, sehr kurzzeitig.
Wenn ich Z-Tests für einen bestimmten Bereich des Bildes mache, um zu bestimmen, was eigentlich zu sehen ist, dann kann ich die dafür berechneten Informationen wegschmeißen, nachdem die zu rendernde Geometrie ermittelt wurde. Der Cache muss also nicht die gesamte, unsortierte Geometrie zusätzlich zu den Texturen aufnehmen können. Letztere kommen erst ins Spiel, wenn erstere schon wieder raus sind. Genauso muss ich, wenn ich für eine Reflektion das Level in eine Cube-Map rendere, diese nur solange Zwischenspeichern, bis ich die spiegelnde Oberfläche mit dem passenden Ausschnitt texturiert habe. Danach ist der Cache wieder frei.
Genau für solche Aufgaben ist der SRAM der X1 prädestiniert und kann das primäre Speicherinterface extrem entlasten, denn die PS4 spammt mit all diesen Daten ihre großzügigen 176 GB/s dicht, während die X1 ihre mickrigen 68 GB/s tatsächlich nur dafür benutzen muss, Texturen und Geometrie-Basisdaten zu bewegen - und halt die paar MB Framebuffer

.
(WENN die Enginge diese komplexe System angemessen berücksichtigt. Ob das automatisch möglich ist, wage ich zu bezweifeln. Intel hat im Rahmen von Iris Pro gesagt, dass 64 MB Cache "mehr als genug" für alle Renderaufgaben waren, aber das dürfte umgekehrt heißen, dass 32 MB nicht alles cachen können. Es braucht also einen Entwickler, der eindeutig zwischen Daten trennt, bei denen cachen sinnvoll ist, und Daten, die sowieso nicht wieder benötigt werden. Macht man sich diesen Aufwand nicht, läuft der Cache halt über und verliert seine Wirkung - bzw. man muss die Gesamtdatenmenge pauschal mit Auflösung und LOD drücken, wie es die aktuelle Spielegeneration meist macht)