Piktogramm schrieb:
Genau dieses Routing interessiert mich. Es macht einen enormen Unterschied ob da Routen fest vorgesehen sind, ein primitives Routing ohne Lasterkennung oder ein dynamisches Routing unter der Berücksichtigung der Auslastung der Route erfolgt. Gleichzeitig mit der Problematik, dass Kollisionen ja irgendwie auch vermeidet werden sollten bei gleichzeitig geringen Latenzen.
Erstens wird Intel sich dabei schon einiges gedacht und viel simuliert haben und wäre es nicht besser als die Ringbusse wäre man bei denen geblieben. Zweitens werden sie solche Details schon gar nicht verraten, sonst könnte AMD diese Konzept noch leichter übernehmen.
mr_andersson schrieb:
Naja, so spontan werden sie das wohl nicht entwickelt haben...
Das stimmt, trotzdem ist es ein klarer Gegenentwurf zu dem Ansatz den AMD realisiert hat.
mr_andersson schrieb:
Was die Kommunikation zwischen den Kernen betrifft, so muss der Prozessor natürlich einen Kompromiss aus kurzem Weg und guter Lastverteilung wählen.
Und wie soll das gehen? Die Prozesse können zwar den Scheduler in der Hinsicht beeinflussen das sie vorgeben auf welchen Kernen sie ausgeführt werden können, aber ersten müsste der SW Entwickler wie von Piktogramm erwähnt die Auslastung der Kerne kennen und zweiten müsste er bei RYZEN und Derivaten auch noch wissen welches Kern zu welchem CCX gehört? Welches API informiert darüber?
Man kann immer SW so auf eine spezielle HW anpassen, dass sie damit optimal läuft, nur leider läuft sie dann auf anderer HW meist nicht mehr sehr optimal und der Aufwand lohnt sich auch nur in sehr wenigen und speziellen Fälle. Daher ist der weitaus bessere Ansatz immer noch eine HW zu schaffen auf der möglichst viel der bestehenden SW möglichst schnell läuft.
mr_andersson schrieb:
So sollte die Software dafür sorgen, dass Aufgaben mit starker Inter-Core Kommunikation an physisch benachbarte Kerne überwiesen werden.
Auch hier: Wie soll das rein praktisch gehen? Welche API verrät dem SW Entwickler, wozu auch der Entwickler des Task Schedulers im OS gehört, welche Kerne physisch Nachbar sind? Es kann aus dem 18 Kern Die ja auch eine 14 oder 16 Kern CPU werden, dann sind beliebige 2 oder 4 der Kerne deaktiviert und auf jeder CPU hat eine bestimmter Kern dann womöglich andere Nachbarn.
Gibt es einen Weg wie die CPU darüber informieren kann? Mir ist keine bekannt, aber könnte deswegen trotzdem einen geben. Nur der Ansatz Nachteile der HW mit SW Optimierungen ausbügeln zu wollen ist schon falsch, weil er viel Aufwand erfordert und daher kaum je in der Breite gangbar ist. Außerdem ist bei SW bei der viel Kommunikation zwischen den Threads und damit den Kernen der CPU nötig ist, diese meist zwischen allen Kernen nötig oder es ist nicht vorhersehbar zwischen welchen.
Nimm eine Datenbankanwendung z.B. für ein Reservierungssystem für eine Hotelkette. Da sind Dutzende oder Hunderte Clients, aber solange jeder Anfragen für ein anderes Hotel stellt, können sie vermutlich weitgehend unabhängig voneinander arbeiten. Wollen aber zwei für das gleiche Hotel für den gleichen Zeitraum ein Zimmer buchen, müssen sie miteinander koordiniert werden, damit nicht das letzte Zimmer an zwei Gäste vergeben wird. Wie will man da jemals vorhersagen können, welche beiden Clientprozesse nun diese beiden Anfragen um das letzte Zimmer für diese Nacht stellen werden um sie auf benachbarte Kerne zu schedulen? Ok, bei der Hotelreservierung ist die Performance wohl egal, aber an der Börse wäre das Anderes!
dfgdfg schrieb:
Ist bekannt, ob die Technik auch bei Skylake-X verwendet wird? Eigentlich doch schon, da sie von der Server-Sparte stammen, oder?
Genau, die Skylake-X dürften wie schon vorher die Broadwell-E und alle anderen Vorgänger in dem großen Sockel, auf den gleichen Dies wie die entsprechenden basieren und nur einige Funktionen wie (leider) die ECC RAM Unterstützung beschnitten und dafür mit anderen wie dem offenen Multi versehen sein. Da Intel kaum noch nebenbei Ringbusse auf dem Die haben wird, sollten auch die Skylake-X auf das Mesh setzen und damit haben sie mit den kleinen Mainstream Skylake wirklich kaum mehr als den Namen gemeinsam, denn auch was die Cachestruktur angehen unterscheiden sie sich, ebenso haben sie AVX512 und entweder ist das bei den Mainstream CPUs deaktiviert oder die Rechenwerke habe auch unterschiedliche Designs.