289 karma · joined November 24, 2014
Sometimes I wonder if IA-64 was just an exercise in killing of Alpha and HP-PA...
Anyway, x64 succeeded because instead of producing something no one asked for, and poorly (IA-64), AMD went to Microsoft, found out what they wanted from a 64-bit chip, and built that.
It's funny, but Microsoft was spot on correct to continue supporting 32-bit x86 on par with x64. Now they can just support BTing 32 x86 on ARM64 instead of being forced to support 64-on-64, which would simply involve more overhead.
The 2017 chips (3rd generation) are Xeon E5 competitive.
The real question is if WSL (Ubuntu for Windows) will be available for AArch64 Windows. Because the only real 64-bit ARM software ecosystem today is Linux (courtesy of Linaro, Redhat, Canonical, Suse, and ARM).
Between WSL and BTing legacy 32-bit x86 apps this could be a decent offering for folks who already have Microsoft infrastructure. Even cooler if Hyper-V is ported.
The ARM server ecosystem has been in the works for a few years. TechCon'16 we saw the announcement that the software is fully there: and this is not hype, all major distributions support all the major players out of the box. Download ISO, install, and use it.
HW-wise we are now in the 3rd gen of chips (QC Centriq, XGene3, ThunderX2) all of which compare with E5, not Atoms. First/Second gen were mostly proving grounds for the specs and software work, excepting for Cavium machines, which have some serious network I/O where the relative wimpyness of any one of the 96 cores simply doesn't matter for certain workloads. In a matter of two years we've seen private datacenters soak up XGene2 and Cavium chips. We've seen ODMs and OEMs get their shit together and start selling real kit (b2b.gigabyte.com).
It's funny, people expect these things to suddenly appear overnight everywhere and competitive with E7s and Power9. It takes decades, but the server guys managed to fit in nicely in about 5 years. I am excited.
There's no real reason why every year everyone needs to go through this pain behind the eyes. And letting accountants do it doesn't really lower the stress level - I still need to hand off all the "state" and paperwork necessary, and I'm still on the hook if the accountant gets it wrong (I've had this happen to me, too, and it's not fun). Doing taxes is not productive.
I hit this realization partially about 7 years ago developing a custom loopback disk driver, capable of handling different image formats. I'd have all these great ideas about caching metadata, but actual measurements would reveal worse performance than seen with just always going straight to the block interface.
And yeah, billg is the quintessential successful "startupper". Yes, he came from a priviledged background. Yes, he had some wonderful partners and colleagues, and yes he had the priviledge to have access to real computers at a tender age. All of this is really pretty typical of american enterpreneurship in a new hot market. And none of this takes away from Bill's own software engineering background and acumen. Remember: he developed and sold real products without finishing college. He started an extremely successful software company, successful in a large part because of Bill's extreme demands for technical and business excellence. He also knew when to move on to create a real difference elsewhere via the Gates Foundation, and doesn't live like the Kardashians or John McCaffee. He is a humble, very learned and hard working guy that all of us have plenty to learn from.
- Ignoring the office politics. I thought, naively, that doing above and beyond technically and being frank about situations around me would get me somewhere. It turned out that someone I had put in a not-so-favorable crosshair, while describing my fairly significant cross-team collab efforts, was chummy with my manager's manager, and it blew up in my face... see next item...
- I had the misfortune of deciding to report to an average-engineer-turned-mediocre-manager. Typical deer-in-headlights-look turnstile manager - i.e. the kind that takes plenty of credit, but doesn't shield you from anything. The guy was laughably terrible, because it was extremely obvious when he was trying to screw you in 1:1s. I was young and stupid and it ended pretty nasty: vindicative passive-agressive bullshit, blame game and damaging rumors that impacted my professional relationship with the rest of my ex-teammates.
- Not setting priorities straight. I had a personal situation that involved a lot of travel. It didn't even matter that I was exceeding expectations - visibly, I was never there, and that is all that ultimately mattered.
But these are all symptoms! The biggest mistake was not identifying a mentor. Not a technical mentor, but someone seasoned, high enough in the social ranking, and vibrant enough (i.e. not semi-retired and clinging to the job) to advise, help and teach how to navigate a large megacorp with its feudal cliques, ol' boy's club politics and Machiavellian egoes.
However I am still looking for a use case to write IR directly, or in place of bits of inline assembly.
So again, I see all the value in IR for compilers. Can someone give me at least a reasonable use case for beginning to write in IR, or even using IR for optimizing cerain code paths?
Doesn't AS/400 use an IR approach as well? Which let IBM seamlessly migrate the underlying CPU a few(?) times now?
If you're starting from a clean slate, what's the benefit of writing IR? Why not use C? After all, IR won't really give you complete control over generated code, and it's still an abstract VM (albeit that obviously allows writing IR that will only sensibly compile on a specific arch - e.g. system register acceses and so on).
A53 is a bit on the slow side, but the worst part is that it's not a great (as in, representative of the architectural requirements on software) chip for porting software to AArch64, because of its simplistic design - you will be able to get away with forgetting a barrier, or TLB or cache maintenance instruction here or there, and your code will work (but blow up on other, more advanced uarches, like A57 or other non-ARM designs). It's basically a minor step above using Foundation Model.