On Fri, 14 Dec 2012, Martin Storsjö wrote:
On Fri, 14 Dec 2012, Niels Möller wrote:
Second item is more directly related to Nettle. I will get funding from Internetfonden, for "Adapting GNU Nettle for embedded systems". This will mean two things: Support for elliptic curve signatures (and possibly some other ECC-related things), and optimizations for the ARM architecture. The funding is for 420 hours of work, most of which will be spent during the spring, and the project will be carried out under the umbrella of Southpole Consulting.
A question for the list: Which variants of the ARM family are most important for Nettle applications? I'm not yet very familiar with the ARM world, but the following are some alternatives for testing and benchmarking:
- The current most high-end processor, Cortex-A15, where an affordable
development system seems to be a recent "chromebook". Not sure exactly which model, but I guess it's this one: http://www.amazon.co.uk/Samsung-Chromebook-Wifi-Latest-Model/dp/B009RF0AQ8/r...
- The previous "most high-end" processor, Cortex-A9. An affordable
development system is the PandaBoard. http://www.omappedia.com/wiki/PandaBoard_FAQ
- The Raspberry Pi computer, featuring an older (obsolete?) ARM1176JFZ,
"ARMv6" architecture. http://www.raspberrypi.org/faqs
- The low-end Cortex-M0, competing with less than $1 microcontrollers.
Also "ARMv6" architecture. An affordable development system seems to be LPCXPRESSO board. http://www.embeddedartists.com/products/lpcxpresso/lpc11U14_xpr.php
And if anybody here has some interesting ARM hardware to donate to the project, this is the right time.
As far as I know, for use in smartphones and similar, most current ones run ARMv7, on Cortex-A8/A9.
I forgot to add - one noteworthy detail is that Cortex-A9 has out-of-order execution, which the A8 and earlier lack. So for hand-scheduling of instructions, you'll want an A8 or older (a beagleboard/beaglebone is a good choice for that, especially if you want to hand-schedule NEON instructions).
// Martin