Gibt es irgendwelche Änderungen, die an CPUs vorgenommen werden könnten, um sie für gleichzeitige Laufzeiten wie Rust leistungsfähiger zu machen? Gibt es beispielsweise Änderungen an Implementierungen für die Verzweigungsvorhersage oder an den Cachegrößen, die zu gleichzeitigen Laufzeiten führen könnten?
Ich habe den Eindruck, dass die aktuellen CPU-Designs mehr für prozedurale Laufzeiten wie C optimiert werden könnten. Wenn wir stattdessen für gleichzeitige Laufzeiten optimieren würden, wie würden CPUs anders aussehen?
Für isntance wurde eine Verzweigungsvorhersage auf der Grundlage von Verallgemeinerungen implementiert, die in Forschungsarbeiten zur Analyse von Verfahrenscodes erstellt wurden. Ich frage mich, ob die Nebenläufigkeitsabstraktion der Laufzeit eine erhebliche Menge an Funktionen hinzufügt, die sich nachteilig auf vorhandene Algorithmen zur Verzweigungsvorhersage auswirkt. Das Vorhersagen in einer for-Schleife ist beispielsweise eine Sache, aber wenn das Ziel des Zweigs immer ein neuer Teil des Speichers (Grafik, Text usw.) ist, wird es immer einen Cache-Fehler geben und es wird nie einen Zweig geben Geschichte dafür - weil noch keiner davon angefasst hat.
Dies ist wahrscheinlich eine dumme Frage, da der Inhalt, obwohl er sich möglicherweise immer im RAM befindet, in einer Größenordnung verzweigt wird, die geringer ist als die, die er verwendet (sobald er in den Cache geladen wurde) sollte eine beobachtbare zeitliche Grenze zu den Kontexten sein, die im Cache und in Verzweigungsvorhersagen in einer prozeduralen Laufzeit gespeichert sind, die sich als Abstraktionsgrenze in einer stärker parallelisierten Umgebung manifestieren würde. Ich frage mich also ... Wurden diese Grenzen eingehalten? Haben Forschungsarbeiten dies analysiert?
Sind CPU-Architekturen gegenüber gleichzeitigem Code auf prozeduralen Code ausgerichtet? Oder sind moderne CPUs so universell einsetzbar, dass eine hochkonkurrierende Sprache nicht darunter leidet?