¿Hay algún cambio que se pueda hacer en las CPU para que funcionen mejor en tiempos de ejecución concurrentes como Rust? Por ejemplo, ¿hay cambios en las implementaciones de predicción de sucursales o en los tamaños de caché que ayudarían a los tiempos de ejecución concurrentes?
Tengo la impresión de que los diseños actuales de CPU podrían optimizarse más para tiempos de ejecución de procedimiento como C. Si en lugar de eso optimizáramos para tiempos de ejecución concurrentes, ¿cómo se verían diferentes las CPU?
Por ejemplo, la predicción de rama se implementó en base a generalizaciones dibujadas en trabajos de investigación que analizan códigos de procedimiento. Me pregunto si la abstracción de concurrencia agregará un conjunto de trabajo significativo al tiempo de ejecución que afecta negativamente a los algoritmos de predicción de rama existentes. Por ejemplo, predecir en un bucle for es una cosa, pero cuando el objetivo de la rama siempre es una nueva porción de memoria (gráfico, texto, etc.), siempre será una falta de caché, y nunca habrá una rama historia para ello, porque ninguno lo ha tocado todavía.
Esta es probablemente una pregunta tonta porque el contenido, aunque siempre puede estar en RAM, se ramificará a un orden de magnitud menor de lo que se usará (una vez que se haya cargado en la memoria caché) ... pero aún así, allí debería ser un límite temporal observable para los contextos almacenados en la memoria caché y los predictores de ramificación en un tiempo de ejecución de procedimiento, que se manifestaría como un límite de abstracción en un entorno más paralelo. Entonces me pregunto ... ¿Se han observado estos límites? ¿Algún trabajo de investigación ha analizado esto?
¿Las arquitecturas de la CPU están sesgadas hacia el código de procedimiento sobre el código concurrente; ¿O son las CPU modernas lo suficientemente generales para que un lenguaje altamente concurrente no sufra?