As an electrical engineer who often works alongside hardware (in C), I have always been interested in extracting maximum performance from any computer architecture. I have always been interested in competing performance analysis architectures .
I'm interested in speculating if changes in the mild or moderate degree would be justified in such things as, for example, implementing branch prediction or cache sizes on processors, which can be more effective in parallel work sessions, such as Rust, on procedural ones. e.g. C. Prediction of branches was performed on generalizations made in research papers analyzing procedural codes. I am wondering if the concurrency abstraction will add a significant working set at runtime, which will adversely affect existing forecasting algorithms. For example, predicting in a for loop is one thing, but when the branch’s goal is always some new part of memory (graphics, text, etc.), it will always be absent from the cache, and there will never be a history branch for it - because did not touch her.
This is probably a stupid question, because the content, although it can always be in RAM, will be branched out an order of magnitude less than it will be used (as soon as it is loaded into the cache) ... but nevertheless, there should be an observable temporary the boundary for contexts stored in the cache and branch predictors in the procedural runtime, which will appear as an abstraction boundary in a more parallel environment.
-
So I wonder ...
Have these boundaries been observed?
What studies have analyzed this?
Are CPU architectures a common enough goal so that a highly competitive language does not experience the inherent procedural biases that may exist in the architecture of modern processors?
source share