Is Assembly Still Relevant To Most Linux Software?
Steve McIntyre and the Linaro Enterprise Group recently analyzed Ubuntu and Fedora software packages to see what software was still relying upon hand-written Assembly code. This was done to see how much real Assembly is being used, to see what the code was used for, and whether it was worth porting to 64-bit ARM / AArch64 / ARMv8.
Their findings found that most software doesn't need porting for 64-bit ARM but that "most software in the typical Linux distribution does not contain any assembly." For Ubuntu 13.04, only about 6% of the packages contained any Assembly code.
With packages found containing Assembly, a lot was found to already support ARMv7 and ARMv8 capabilities while some could be better-tuned to take advantage of ARM architectural features.
It was also determined that most of the Assembly code has little value. Packages still using Assembly were doing for either low-level purposes with hardware control or for performance reasons (e.g. SIMD for multimedia). Small amounts of the Assembly being used was for handling atomics, embedded library code, or controlling symbol access.
Among the Linux software packages with Assembly code that will see some love from the Linaro Enterprise Group includes the Linux kernel, GCC, glibc, gdb, binutils, LLVM, OpenJDK, and GMP. Some other important but less critical packages include GRUB2, PHP, PostgreSQL, libaio, zlib, and libjpeg.
For those wanting to see the lengthy Linaro Enterprise Group report on Assembly use in full, it can be viewed via the Linaro Wiki.
Their findings found that most software doesn't need porting for 64-bit ARM but that "most software in the typical Linux distribution does not contain any assembly." For Ubuntu 13.04, only about 6% of the packages contained any Assembly code.
With packages found containing Assembly, a lot was found to already support ARMv7 and ARMv8 capabilities while some could be better-tuned to take advantage of ARM architectural features.
It was also determined that most of the Assembly code has little value. Packages still using Assembly were doing for either low-level purposes with hardware control or for performance reasons (e.g. SIMD for multimedia). Small amounts of the Assembly being used was for handling atomics, embedded library code, or controlling symbol access.
Among the Linux software packages with Assembly code that will see some love from the Linaro Enterprise Group includes the Linux kernel, GCC, glibc, gdb, binutils, LLVM, OpenJDK, and GMP. Some other important but less critical packages include GRUB2, PHP, PostgreSQL, libaio, zlib, and libjpeg.
For those wanting to see the lengthy Linaro Enterprise Group report on Assembly use in full, it can be viewed via the Linaro Wiki.
176 Comments