By: Linus Torvalds (torvalds.delete@this.linux-foundation.org), May 18, 2013 11:31 am
Room: Moderated Discussions
aaron spink (aaronspink.delete@this.notearthlink.net) on May 17, 2013 8:55 pm wrote:
>
> Things like lack of byte addressing and lack of integer divide are
> extremely minor and in many cases have little to no impact.
Bullshit.
By "in many cases" you apparently mean "SpecInt".
The lack of byte operations was imho a huge part of what killed early Alpha performance. It was visible everywhere, from the system level to just about every single application. It was a noticeable part of the huge I$ problems (Alpha had horrible code density even for RISC), and it resulted in major headaches (support and performance) on the OS side, where porting drivers etc became much harder and basically not worth the time.
The only place where it didn't matter was for simple applications that had been optimized to hell and back and didn't really work with text to begin with. In other words, SpecInt.
I guarantee you the lack of byte ops held back system people (having to map the same IO in four different chunks: "byte access", "half-word access", "word access" and "linear access" was a f*cking disaster). And that's exactly what Alpha didn't need early on.
By the time they fixed it, it was pretty much too late, and people had already been burned.
I'll agree that the lack of an integer divider was relatively much less painful. It was bad, but it impacted much fewer apps, and generally in much smaller ways.
The other really major mistake in Alpha was lack of PC-relative addressing. The GP crap really hurt pretty much everything. A simple function call turned from a single instruction into an unholy crappy mess of GP accesses and updates. Again, not a problem for SpecInt where you could link everything statically and just throw all the normal complicated cases away (and say things like "this app is small, so compile without GP" with magic compiler flags). But every single real app ended up doing it the expensive way.
I liked alpha, but you shouldn't ignore the very real problems it had. You can argue that DEC killed it with non-technical issues, and maybe you'd be right, but it had some serious technical problems too. And the byte op mess was a big part of it originally.
Linus
>
> Things like lack of byte addressing and lack of integer divide are
> extremely minor and in many cases have little to no impact.
Bullshit.
By "in many cases" you apparently mean "SpecInt".
The lack of byte operations was imho a huge part of what killed early Alpha performance. It was visible everywhere, from the system level to just about every single application. It was a noticeable part of the huge I$ problems (Alpha had horrible code density even for RISC), and it resulted in major headaches (support and performance) on the OS side, where porting drivers etc became much harder and basically not worth the time.
The only place where it didn't matter was for simple applications that had been optimized to hell and back and didn't really work with text to begin with. In other words, SpecInt.
I guarantee you the lack of byte ops held back system people (having to map the same IO in four different chunks: "byte access", "half-word access", "word access" and "linear access" was a f*cking disaster). And that's exactly what Alpha didn't need early on.
By the time they fixed it, it was pretty much too late, and people had already been burned.
I'll agree that the lack of an integer divider was relatively much less painful. It was bad, but it impacted much fewer apps, and generally in much smaller ways.
The other really major mistake in Alpha was lack of PC-relative addressing. The GP crap really hurt pretty much everything. A simple function call turned from a single instruction into an unholy crappy mess of GP accesses and updates. Again, not a problem for SpecInt where you could link everything statically and just throw all the normal complicated cases away (and say things like "this app is small, so compile without GP" with magic compiler flags). But every single real app ended up doing it the expensive way.
I liked alpha, but you shouldn't ignore the very real problems it had. You can argue that DEC killed it with non-technical issues, and maybe you'd be right, but it had some serious technical problems too. And the byte op mess was a big part of it originally.
Linus