Hacker News new | past | comments | ask | show | jobs | submit login

We're past the time that a human needs to understand assembly instructions.

In the future, instructions will be designed by machine, for example by considering millions of permutations of possible instruction "combined add with shift with multiply by 8 and set the 6th bit", "double indirect program counter jump with offset 63", etc.

Each permutation will be added to various compilers and simulated by running benchmarks on complete architecture simulators to find out which new instruction adds the most to the power to die area to performance to code size tradeoff.

I predict there will be many more future instructions with 'fuzzy' effects which don't affect correctness, only performance. Eg. 'Set the branch predictor state to favor the next branch for the number of times in register EAX', or 'go start executing the following code speculatively, because you'll jump to it in a few hundred clock cycles and it would be handy to have it all pre-executed'.




"We're past the time that a human needs to understand assembly instructions."

Until you're debugging broken compiler/JIT output, which I've had to do multiple times in the last year while using .NET Core.


And how did you fix it? Did you patch the compiler?


Nah, that's just not true. Auto-vectorisation just isn't good enough at the moment.

You don't normally need to write assembly, but you do need to use compiler intrinsics, which map 1-1 with assembly.


Security may throw a wrench into that. Preventing Spectre et al in such an environment would be a challenge. Not mathematically insurmountable, but possibly unsurmountable with real humans and real economics.

Really neat idea, though!


Itanium had a lot of instructions like that IIRC. But has been awhile since I read anything about that.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: