On Wed, Mar 27, 2024 at 03:57:12PM -0700, Linus Torvalds wrote: > On Wed, 27 Mar 2024 at 14:41, Kent Overstreet <kent.overstreet@xxxxxxxxx> wrote: > > > > > > On the hardware end, the Mill guys were pointing out years ago that > > register renaming is a big power bottleneck in modern processors; > > LOL. > > The Mill guys took the arguments from the Itanium people, and turned > the crazy up to 11, with "the belt" and seemingly trying to do a > dataflow machine but not worrying over-much about memory accesses etc. > > The whole "we'll deal with it in the compiler" is crazy talk. And Itanium did way better on Fortran, but all those spills and reloads due to aliasing that an OoO processor can hide are death when you're statically scheduled. Unrestricted pointers are fundamentally a real barrier to improved ILP. It's not _all_ branches and cache effects, though I will grant you that cache effects do dominate. But I think there's hope for improvement on that one too. A _lot_ of kernel code defaults to lists instead of vectors even though we know that vectors are better for performance - beacuse people are afraid of memory allocations and error paths. Rust makes it way harder to fuck up your error paths, and also makes it safer to refactor to improve your data structures.