Могут ли быть внесены какие-либо изменения в ЦП, чтобы они работали лучше для одновременных сред выполнения, таких как Rust? Например, есть ли изменения в реализациях прогнозирования ветвлений или размерах кэша, которые могли бы помочь одновременным выполнениям?
У меня сложилось впечатление, что текущие конструкции ЦП могут быть оптимизированы в большей степени для процедурных сред выполнения, таких как C. Если бы вместо этого мы собирались оптимизировать параллельные среды выполнения, как бы ЦП выглядели иначе?
Для этого прогноз ветвлений был реализован на основе обобщений, сделанных в научных работах и анализирующих процедурные коды. Мне интересно, добавит ли абстракция параллелизма значительный рабочий набор к среде выполнения, что отрицательно скажется на существующих алгоритмах прогнозирования ветвлений. Например, предсказание в цикле for - это одно, но когда целью ветви всегда является какая-то новая часть памяти (графическая, текстовая и т. Д.), Это всегда будет пропуском кэша, и никогда не будет перехода история для этого - потому что ни один еще не коснулся этого.
Это, вероятно, глупый вопрос, потому что контент, хотя он всегда может быть в ОЗУ, будет разветвлен на порядок меньше, чем он будет использоваться (как только он будет загружен в кэш) ... но все же, там должна быть наблюдаемой временной границей с контекстами, хранящимися в кэш-памяти и предикторах ветвления в процедурной среде выполнения, что будет проявляться как граница абстракции в более параллельной среде. Поэтому мне интересно ... Были ли соблюдены эти границы? Какие-нибудь исследовательские работы проанализировали это?
Ориентированы ли архитектуры ЦП на процедурный код поверх параллельного кода; или современные процессоры достаточно универсальны, чтобы язык с высокой степенью параллелизма не пострадал?