Log in

No account? Create an account

Previous Entry | Next Entry

The computing field has had its share of holy wars over the decades, with the subject of one famous 1970s/1980s holy war being endianness. Of course, endianness within a system refers to the mapping between numerical values and character arrays, so that for little-endian the numerical value 1 results in the first character of the corresponding array being non-zero, while for big-endian it results in the last character of the corresponding array being non-zero. For more on endianness, see the Wikipedia article.

Although many of the “cool kids” of the 1980s (such as Apple and Sun) were big-endian, the vast majority of today's Linux-capable systems are little-endian. This of course includes x86, but it also includes ARM, whose partners shipped enough ARM CPUs to give one to each man, woman, and child on this planet—and that only counts the ARM CPUs shipped in 2012.

Although most modern software is endian-neutral, device drivers and related software do sometimes make assumptions about endianness. In addition, someone considering creating special-purpose hardware would likely do a little-endian implementation first and foremost, and a big-endian implementation later, if at all. Furthermore, because single-threaded CPU throughput is not rising anywhere near as quickly as it was back in the 1980s and 1990s, special-purpose hardware is becoming increasingly important.

So what is a big-endian architecture like Power supposed to do?

The answer turns out to be “Both!!!”

Power hardware has long supported both big-endian and little-endian byte ordering, and the toolchain has had prototype little-endian support for some years. Furthermore, if you have been paying close attention, you will have noticed that the toolchain's little-endian support has received significant care and feeding over the past few months. Expect to see patches for the Linux kernel, QEMU, and other packages soon, from IBM and from others. IBM's partners in this effort include Google, Mellanox, NVIDIA, and Tyan.

Should be exciting! ;-)


Aug. 6th, 2013 05:33 pm (UTC)
big-endian ARM
It's interesting how this coincides with the renewed interest in big-endian ARM systems. Patches for those are getting merged upstream at the moment, mostly for use with legacy networking code ported from PowerPC and MIPS.
Aug. 6th, 2013 05:43 pm (UTC)
Re: big-endian ARM
I guess bi-endian is the flavor of the month! ;-)