Originally this blog post was intended to be all-in-one, but I was suggested to split it into smaller parts.
So what I'll do, is that I'll mention the features I'd like in my ARM processor, one at a time, piece by piece.
The purpose of this, is to throw in new ideas (good and bad) to the ARM engineers.
-Features, that may be able to make a difference, especially features, which would help the soft- and hardware developers in getting to new places.
Now let's start...
Currently, the only processor I know of, that supports 128-bit floating point calculation, is the PowerPC (combining two 64-bit registers).
If we had 128-bit floating point registers, we could calculate precision math very quickly.
I'd use such feature to make billions of planet gravity calculations per second.
These mainly include multiply and add, subtract and square-root calculations.
Having a high precision vector unit would definitely make insane performance boosts here.
I know we will get there some day (after Cortex-A57), but the sooner we'll get it, the sooner we'll get the cool end-results.
Perhaps it'll be the next Cortex-A, which can deliver an impressive performance when it comes to precision math, opening up further possibilities.
If you had a 128-bit precision floating point unit, what would you use it for - or what kind of things do you think it could be used for ?
IBM implement 128 bit in decimal floating point as well as binary. In some ways the decimal floating point is more saleable in that it can be used for financial transactions easily. The scaling might not be often used but when places have high inflation you can easily break the long int limit. And you'd also really want to be able to convert to packed decimal for COBOL, how long before ARM starts running COBOL programs? ;-)
For large calculations 128 bit binary floating point can be very useful, it is amazing how hard it is to even get a decent algorithm to find the roots of a quadratic accurately with the way errors can get magnified. They would also make it much easier to get the last bit exact in the maths library routines operating on doubles.
Now if we're talking about the moon how about some direct memory under the SIMD unit turning it into an old style bit array processor like the
ICL Distributed Array Processor - Wikipedia, the free encyclopedia
where all 32 registers would be changed at once, that would make it a supercomputer!
or for something a bit cheaper and more practical how about support for fast programmable associative look up which either quickly finds a match or lets the user fill an entry if it doesn't, this might help things like hash tables, dynamic languages method lookup or JIT branches.