jdb wrote: ↑
Mon Mar 19, 2018 9:22 pm
In what way is the current ARMv7 Raspbian bottlenecked or limited compared to a theoretical ARMv8 Raspbian?
I see there is kernel7.img, but the user space programs are all ARMv6 are they not? so they can run on the Pi Zero.
ejolson wrote: ↑
Tue Mar 20, 2018 6:46 am
The advantage of 64-bit mode is not only 64-bit memory addresses, but also 64-bit integers in general. Any compute-bound program that makes heavy use of 64-bit integers will show significantly better performance in 64-bit mode.
Its more than that, much more.
1) There are double the number of registers, both integer and floating point. That is 31 64-bit integer registers plus the zero register, compared to 16 32-bit integer registers. (The zero register on 64-bit is very useful
One example: if you think about how many scalar variables and arguments you typically have in your functions, you will see that the number of cases where the stack needs to be adjusted is far less in 64-bit mode.
2) The modern IEEE compliant version of NEON is used in 64-bit mode. The SIMD registers now have the obvious sensible layout. The presence of NEON is now guaranteed, it is no longer a co-processor.
3) The instruction set has been streamlined and modernized, and in particular is now suitable for the higher performance arm processors.
4) The assembly language has been cleaned up, the historical cruft removed, and is generally easier to read and use.
To be fair 64-bit integers work fine in 32-bit mode and are very usable, they are just slow.
YMMV but programs seem smaller, presumably because of the more powerful ISA, or larger register file.
One program I have in front of me is 78k for 32-bits and 72k for 64 bits (but it does do a little 64-bit arithmetic).