Чи можуть бути внесені зміни в процесори, щоб зробити їх ефективнішими для одночасних циклів виконання, таких як Rust? Наприклад, чи є зміни у впровадженні передбачення гілок чи розмірах кешу, які допоможуть одночасно виконуватись?
У мене складається враження, що поточні конструкції процесора можуть бути оптимізовані більше для процедурних процесів, таких як C. Якби ми замість цього збиралися оптимізувати для одночасного виконання, як би виглядали процесори по-різному?
Для прогнозування, галузеве прогнозування було здійснено на основі узагальнень, проведених у наукових роботах, що аналізують процедурні кодекси. Мені цікаво, чи абстракція одночасності додасть значного робочого періоду часу виконання, що негативно вплине на існуючі алгоритми прогнозування галузей. Наприклад, передбачення в циклі for for - це одне, але коли ціль гілки - це завжди якась нова частина пам'яті (графіка, текст тощо), вона завжди буде пропускати кеш, і ніколи не буде гілки історія для цього - тому що жоден її ще не торкнувся.
Це, мабуть, дурне питання, оскільки вміст, хоча він завжди може бути в оперативній пам'яті, буде розгалужений на порядок менший, ніж він буде використаний (як тільки він буде завантажений у кеш) ... але все ж, там має бути спостережуваною часовою межею для контекстів, що зберігаються в кеші та передбачувачах гілок в процедурний час виконання, що буде виявлятися як межа абстракції в більш паралелізованому середовищі. Тож мені цікаво ... Чи дотримувалися ці межі? Чи аналізували це якісь дослідницькі роботи?
Чи архітектури процесора упереджені до процесуального коду над паралельним кодом; чи сучасні процесори достатньо загального призначення, щоб не страждала високомовна мова?