Ned Flanders schrieb:
Ganz ehrlich, ich empfinde das Intel Mesh konzept als einen Rohrkrepierer. Ich hab noch keinen Anwendungsfall gesehen bei dem das sinnvoll gewesen wäre.
Das kann man sich mit etwas Logik eigentlich selbst überlegen wann es sinnvoll ist und wann nicht. Wenn man davon ausgeht dass jeder Core selbst sein Workset abarbeitet und der nötige Speicher lokal in einem L Cache unabhängig von anderen Cores liegt geb ich dir recht... dann eigentlich nie. Wenn man aber möglichst homogen jede Logik im Scheduler vermeiden will, also Arbeitslast willkürlich auf die Kerne legen will, dann hat man die Ansicht dass jeder Kern möglichst gleich schnell, auf den RAM / den gemeinsamen Speicher zugreifen kann. Das geht Intel wie auch AMD so.
Dann gibt es also mehrere Strategien, Ringbus ist eine davon. Bei TR 1/2 sah man schon gut wie manche Arbeitslast unter den Hops von Die zu Die litten da die Latenz zum Ram nicht konstant niedrig ist.
AMD hat reagiert und ein zentrales Management in der IO Die implementiert. Hier kann man quasi jeden Kern mit jedem verbinden bzw jedes Chiplet mit anderen Chiplets. Der L3 ist also gemeinsam zugreifbar, das erleichtert anders als bei Epyc 1 viele Worsets denn man will ja ungern auf den langsamen Ram zugreifen.
Anders gesagt wäre es ja optimal wenn jeder Kern auf den gleichen super schnellen L1 zugreifen könnte, geht halt nicht da es schlicht zu viele Bahnen und lange Wege bedeuten würde.
Anandtech analysiert immer recht gut die Latenz wie in einer Art Baum, L1, L2, L3, Ram...
Wo kommt jetzt das Mesh ins spiel? Es geht darum was im Schnitt den kürzesten Weg von Core zu Core bedeutet. Und genau das macht Mesh recht gut. Vor allem aber bei vielen Kernen, zB 10x10 Cores.
Bei AMD können meines Wissens 4 Cores in einem CCX direkt miteinander reden, von CCX zu CCX über den gemeinsamen L3. Das ist schon etwas langsamer. Von Chiplet L3 zu Chiplet L3 kommuniziert man nun über die IO Die und hat hier konstante Zeiten. Und erst dann geht man zum Ram.
Wie realisiert AMD nun mehr Kerne? Naheliegend wären ggf 4 CCX und ein gemeinsamer L3 also 16C pro Chiplet. Bedeutet aber immer etwas mehr Verdrahtungsaufand und Latenz. Es hat schon seinen Grund wieso 4 Kerne pro CCX da eben 4! Interconnects. Bei 8C wären es 8!, also viel mehr Verbindungen. Und das zieht sich in jeder Ebene bis zum Ram fort. Beim Ringbus wird's ab 10C auch kernig.
Man wird zB auch kaum 16 oder 32 Chiplets am IO die sehen, das macht diese IO Die noch X fach komplexer. Irgendwann führt man da eher nen L4 und damit ein neues Layer ein, also quasi 4 IO Die. Rein in Theorie gesprochen.
Beim Mesh vermeidet man eine weitere Layer da man innerhalb dieser möglichst viele Unterknoten anbinden will. Vorstellbar wäre das auch in 3D. Im Prinzip bedeutet das Links Rechts Hoch Runter schieben im Mesh auch immer gesteigerte Latenz aber im Mittel also also Funktion f = Latenz über die Anzahl der Kerne ist diese mit steigender Kern Zahl eben besser als bisherige Modelle.
Man kann es sicher besser erklären, Fakt ist dass Mesh erst mit 3 stelligen Kernzahlen wirklich vorteilhaft sein dürfte.
Im Prinzip gilt dasselbe wie für alle Netzwerk Topologien und die Mathematik dahinter. Also von fully connected über Star, Mesh, Ring, Tree...