← Back to context

Comment by hrmtst93837

2 months ago

[flagged]

The things you are talking about are taken care of by out of order execution and the CPU itself being smart about how it executes. Putting in prefetch instructions rarely beats the actual prefetcher itself. Compilers didn't end up generating perfect pentium asm either. OOO execution is what changed the game in not needing perfect compiler output any more.

While true, it's typically not going to be impactful on system performance.

There's a reason, for example, why the linux distros all target a generic x86 architecture rather than a specific architecture.

  • Some applications may target a generic x86 architecture without any impact on performance.

    However, other applications which must do cryptographic operations, audio/video processing, scientific/technical/engineering computing, etc. may have wildly different performances when compiled for different x86-64 ISA versions, for which dedicated assembly-language functions exist.

    • audio/video processing, scientific/technical/engineering computing, etc. may have wildly different performances when compiled for different x86-64 ISA versions

      This is pretty vague and makes it sounds like there are big differences in instruction sets.

      In actuality it comes down to memory access first which has nothing to with instructions.

      After that it comes down to simple SIMD/AVX instructions and not some exotic entirely different instruction set.

    • Granted, these applications do exist. They are simply becoming more and more rare. I'd also say that there's been a pretty steady dedicated effort to abstracting the assembly. It's still pretty low level, as in you are caring about the specific instructions being used, but it's also not quite assembly in both C++/rust.

      Java, interestingly enough, is somewhat leading the way here with their Vector API. I think they actually have one of the better setups for allowing someone to write fast code that is platform independent.

      C++ is also diving into this realm. 26 just merged in now SIMD instructions.

      That is the bulk of the benefit of diving down into assembly.

      https://en.cppreference.com/w/cpp/numeric/simd.html

      1 reply →