By: Linus Torvalds (torvalds.delete@this.linux-foundation.org), July 11, 2013 11:52 am
Room: Moderated Discussions
Michael S (already5chosen.delete@this.yahoo.com) on July 11, 2013 11:22 am wrote:
>
> I don't know enough about Android software development to have an educated opinion about
> whether Cortex-A chips without Neon are sufficiently common to cause problems or not (AFAIR,
> Tegra 2 market penetration was under 1%, but may be there are other SoCs like that).
It was pretty common in tablets, though. Also, Tegra-2 wasn't the only non-NEON Cortex-A9, and there's a lot of phones that use weaker chips still. The point is, you can't rely on NEON being available.
Maybe in a few years. The cell-phone upgrade cycle seems to be longer than it used to be, but it's still not *that* long..
> However I like your line of thought.
> What I don't like it's when you come here and defend Intel's decision to omit AVX in the Silvermont!
There's a big difference between SSE and AVX. One is some rather basic vector and FP stuff, the other is pretty esoteric and has much less use.
And yes, I'd also claim that any cellphone benchmark that uses AVX would be just crazy. Even crazier than using NEON.
So I absolutely stand by my point: I think it's absolutely insane to expect/want Atom to have AVX, when it's not even clear that all new Atoms will be 64-bit enabled. AVX is a niche thing that doesn't even make sense in a mobile or microserver environment.
And that is NOT AT ALL inconsistent with me then complaining that ARM doesn't make even basic floating point or the most basic vector support something you can really rely on.
Happily, for the kernel, I don't need to care all that deeply. We avoid the use of FP for other general reasons, and so we don't see that. But the ARM situation annoys me because this whole "incompatible microarchitectures" goes so much deeper than just FP/vector: it's all over (Thumb2 or not? yadda yadda), and the whole architecture specification is a mess.
Cleverly (or not) ARM has made the whole ARM spec so messy that it's basically impossible to even understand unless you're an expert. There's the architecture versions (ARMv6, ARMv7), then you have your subspecies (ARMv7A vs ARMv7R or whatever), and that each tend to have various optional features. And then you have your actual cores (ARM11). So a ARM7 core is ARMv4, while an ARM11 core is ARMv6. Makes perfect sense, right?
End result: it gets so complicated that it can't be explained simply, and everybody just says "ARM". Making people think that it's somehow all one single happy architecture.
There is some good news, though. It does look like we're getting to the point where you can mostly start relying on ARMv7 with NEON, and you do have a somewhat usable base configuration. We're not really there yet (lots of ARMv6 devices still out there), but at least you can see the future...
Linus
>
> I don't know enough about Android software development to have an educated opinion about
> whether Cortex-A chips without Neon are sufficiently common to cause problems or not (AFAIR,
> Tegra 2 market penetration was under 1%, but may be there are other SoCs like that).
It was pretty common in tablets, though. Also, Tegra-2 wasn't the only non-NEON Cortex-A9, and there's a lot of phones that use weaker chips still. The point is, you can't rely on NEON being available.
Maybe in a few years. The cell-phone upgrade cycle seems to be longer than it used to be, but it's still not *that* long..
> However I like your line of thought.
> What I don't like it's when you come here and defend Intel's decision to omit AVX in the Silvermont!
There's a big difference between SSE and AVX. One is some rather basic vector and FP stuff, the other is pretty esoteric and has much less use.
And yes, I'd also claim that any cellphone benchmark that uses AVX would be just crazy. Even crazier than using NEON.
So I absolutely stand by my point: I think it's absolutely insane to expect/want Atom to have AVX, when it's not even clear that all new Atoms will be 64-bit enabled. AVX is a niche thing that doesn't even make sense in a mobile or microserver environment.
And that is NOT AT ALL inconsistent with me then complaining that ARM doesn't make even basic floating point or the most basic vector support something you can really rely on.
Happily, for the kernel, I don't need to care all that deeply. We avoid the use of FP for other general reasons, and so we don't see that. But the ARM situation annoys me because this whole "incompatible microarchitectures" goes so much deeper than just FP/vector: it's all over (Thumb2 or not? yadda yadda), and the whole architecture specification is a mess.
Cleverly (or not) ARM has made the whole ARM spec so messy that it's basically impossible to even understand unless you're an expert. There's the architecture versions (ARMv6, ARMv7), then you have your subspecies (ARMv7A vs ARMv7R or whatever), and that each tend to have various optional features. And then you have your actual cores (ARM11). So a ARM7 core is ARMv4, while an ARM11 core is ARMv6. Makes perfect sense, right?
End result: it gets so complicated that it can't be explained simply, and everybody just says "ARM". Making people think that it's somehow all one single happy architecture.
There is some good news, though. It does look like we're getting to the point where you can mostly start relying on ARMv7 with NEON, and you do have a somewhat usable base configuration. We're not really there yet (lots of ARMv6 devices still out there), but at least you can see the future...
Linus