Upcoming DSP architectures
Did you know...?The Linux-3.2 merge window may be the first time that two new CPU architectures get merged at the same time: the c6x architecture from Texas Instruments and the Hexagon architecture from Qualcomm. Following the recently merged OpenRisc platform, the two submissions look very solid and should see no major obstacles getting merged into Linux after the usual review comments have been resolved, but there is still some debate over how to best add glibc support for the architectures.LWN.net is a subscriber-supported publication; we rely on subscribers to keep the entire operation going. Please help out by buying a subscription and keeping LWN on the net.
Interestingly, there is a lot that these two architectures have in common, far beyond coincidentally implementing the same bugs. Both are not regular CPU cores designed to run an operating systems but instead are essentially digital signal processors, similar to the Blackfin architecture that was merged into linux-2.6.22 a few years ago. Further, both Hexagon and c6x are already widely available in systems running Linux on the ARM core of a TI OMAP or Qualcomm MSM system-on-a-chip, where they are used for offloading CPU intensive work such as that required for video codecs.
It will be interesting to see how Linux can coexist in the long run when the same SoC can run Linux on either of the two CPU architectures. The ARM architecture is currently transitioning to probing based on the dts device tree format and all new architectures merged into Linux will have to use that format as well when they have devices that cannot be automatically detected. If the device tree vision comes true, a single board will actually be able to use the same device tree binary on either one, independent of which CPU actually runs the kernel.
Another intriguing scenario is running Linux on both architectures (ARM and DSP) simultaneously, using shared memory to communicate between them. Ohad Ben-Cohen has recently posted a framework based on virtio to allow just that on the TI platform. While virtio was intended to be used for communication between a virtual machine and the host operating system, it turns out to be flexible enough to allow the same drivers for communication between operating system instances on the same hardware.
Looking closer at the actual DSP architectures, there are some major differences between Hexagon and C6x. The former is quite capable, with support for symmetric multiprocessing, a memory management unit and even a hypervisor. It can be seen as a competitor to established CPU architectures like ARM, x86 or powerpc, at least in the embedded space. In contrast, C6x is a rather minimalistic architecture dating back to the TMS320 introduced in 1983. So far, its kernel supports neither SMP nor an MMU, which means it is restricted to running μClibc instead of glibc, and it has a very limited set of applications that can be supported as long as it is missing the MMU.
Beyond Linux 3.2, there are still more architectures that have been
around for a long time and could get merged if the respective maintainers
were interested. FPGA-based Nios2 is
apparently close to getting submitted, while the similar lm32 architecture
saw a lot
of activity in 2010 but does not seem to be actively worked on now.
Synopsys ARC
and Imagination META are
both claimed
to have Linux and Android support, but there is no indication that the
authors are actively working on upstream submission or even on making
the patches for current kernels easily available.
Finally, Donald Knuth's MMIX
architecture has seen some occasional work in
the past but
now appears to be stalled, the latest kernel source version being 2.6.18.
| Index entries for this article | |
|---|---|
| Kernel | Architectures |
| GuestArticles | Bergmann, Arnd |
Upcoming DSP architectures
Posted Sep 9, 2011 18:42 UTC (Fri)
by larsc (guest, #54300)
[Link] (1 responses)
Posted Sep 9, 2011 18:42 UTC (Fri) by larsc (guest, #54300) [Link] (1 responses)
As part of the Milkymist project[1] we did some serious rework of the lm32 linux port[2]. It now actually works and doesn't crash due to some race conditions after ~3 minutes anymore. It also has device tree support and uses generic code where possible which allowed us to roughly cut the code size for the architecture support in half.
So while Theobroma Systems doesn't really seem to do any work on it anymore, there is still some activity in regards to porting linux to the lm32 architecture.
[1] http://milkymist.org
[2] https://github.com/milkymist/linux-milkymist/
Upcoming DSP architectures
Posted Sep 9, 2011 21:02 UTC (Fri)
by arnd (subscriber, #8866)
[Link]
Posted Sep 9, 2011 21:02 UTC (Fri) by arnd (subscriber, #8866) [Link]
Upcoming DSP architectures
Posted Oct 3, 2011 6:09 UTC (Mon)
by jcm (subscriber, #18262)
[Link]
Posted Oct 3, 2011 6:09 UTC (Mon) by jcm (subscriber, #18262) [Link]
Synopsys Arc latest versions
Posted Jan 12, 2012 7:14 UTC (Thu)
by gby (guest, #23264)
[Link]
Posted Jan 12, 2012 7:14 UTC (Thu) by gby (guest, #23264) [Link]
The latest update is from the 10/2012 and the kernel version there is 2.6.35.
If someone needs an unofficial port to 3.2, drop me a note :-)
