Czy są jakieś zmiany, które można wprowadzić w procesorach, aby działały lepiej w przypadku równoczesnych środowisk uruchomieniowych, takich jak Rust? Na przykład, czy są jakieś zmiany w implementacjach przewidywania gałęzi lub rozmiarach pamięci podręcznej, które pomogłyby w jednoczesnych uruchomieniach?
Mam wrażenie, że obecne konstrukcje procesorów mogą być bardziej zoptymalizowane pod kątem proceduralnych środowisk wykonawczych, takich jak C. Jeśli zamiast tego zamierzalibyśmy zoptymalizować pod kątem równoczesnych uruchomień, w jaki sposób procesory wyglądałyby inaczej?
W przypadku prognozy zaimplementowano przewidywanie gałęzi na podstawie uogólnień przedstawionych w pracach naukowych analizujących kody proceduralne. Zastanawiam się, czy abstrakcja współbieżności doda znaczący zestaw roboczy do środowiska wykonawczego, który negatywnie wpłynie na istniejące algorytmy przewidywania gałęzi. Na przykład przewidywanie w pętli for to jedno, ale gdy celem gałęzi jest zawsze jakaś nowa część pamięci (grafika, tekst itp.), Zawsze będzie brakowało pamięci podręcznej i nigdy nie będzie gałęzi historia za to - bo żadne jeszcze jej nie dotknęło.
Jest to prawdopodobnie głupie pytanie, ponieważ zawartość, choć zawsze może być w pamięci RAM, zostanie rozgałęziona do rzędu wielkości mniejszej niż będzie używana (po załadowaniu do pamięci podręcznej) ... ale nadal tam powinna stanowić możliwą do zaobserwowania granicę czasową kontekstów przechowywanych w pamięci podręcznej i predyktorach rozgałęzień w proceduralnym środowisku wykonawczym, który przejawiałby się jako granica abstrakcji w bardziej zrównoleglonym środowisku. Zastanawiam się więc ... Czy przestrzegano tych granic? Czy jakieś prace badawcze to przeanalizowały?
Czy architektury procesorów są stronnicze w stosunku do kodu proceduralnego w stosunku do kodu współbieżnego; lub czy współczesne procesory są wystarczająco ogólnego przeznaczenia, aby nie ucierpiał wysoce współbieżny język?