Specialized microprocessors for smartphones aren’t anything new, but we’re starting to see (from Google, for example) custom processors for smartphones from the phone vendors themselves. Apple has introduced their own microprocessor chip for PCs, and Amazon has used its own customized chip for some cloud services since 2018. NVIDIA GPUs have been available in the cloud for some time, too. Now the story (from Wall Street) is that Alibaba is going to launch a line of chips for use in cloud computing servers. Are we seeing the end of x86 chip dominance, or maybe even the age of merchant microprocessors?
Microprocessors are fundamental to the cloud, of course. If we look at the cloud as a simple utility computing model, with cloud IaaS competing with on-premises VMs, we might expect that having a specialized chip could offer a cloud provider an advantage in cost/performance that could translate into a competitive advantage. But how much of that “if-we-look-at” statement is really true? Could Alibaba have other reasons for wanting their own chip?
Both the AWS and Alibaba chips are based on an ARM CPU (Apple’s M1 chip is also based on the ARM architecture), which is a totally different processor architecture than the classic x86 chips of Intel and AMD. That means that binaries designed for x86 (and/or x64) won’t run on ARM-based chips. If we were to presume that cloud computing was all about “moving existing applications to the cloud”, this would be an almost-insurmountable problem, because most third-party software is delivered in x86 form only. But that’s not what the cloud is about, and we have to start with that truth.
Cloud computing today is dominated by GUI-centric development, either for social-network providers or for enterprises building front-ends to legacy applications that will themselves stay in the data center. This is new coding, and in almost all cases is coding done in a high-level language, rather than in “assembler” or “machine language” that is specific to the microprocessor architecture. You can get a compiler for most popular high-level languages for ARM chips, so new development fits the alternative chip architecture. In fact, GUI-specific apps seem to run much faster on ARM chips, largely because the x86 architecture was designed for general-purpose computing rather than real-time computing, which is what most cloud development really is.
The reason for ARM’s real-time benefit is that the term is an acronym for “Advanced RISC Architecture”, where RISC means “Reduced Instruction Set Computing”. RISC processors are designed to use simple instructions that have a very low execution overhead. There are no complex instructions, which can mean that doing some complicated things will require a whole series of instructions that on an x86 machine would be done in one. Real-time processes usually don’t have those “complicated things” to do, though, and so ARM is a great model for the front-end activities that really dominate the cloud today. It’s also great for mobile phones, which is why RISC/ARM architectures dominate there.
None of this should be a surprise, but perhaps the “move-to-the-cloud” mythology got the best of everyone. NVIDIA is trying (with regulatory push-back) to buy Arm (the company), and I think the reason is that they figured out what was really going on in the market. The majority of new devices, and the majority of new cloud applications, will be great candidates for ARM (the processor). So does this mean that Alibaba is doing the right thing? Yes. Does it mean that it will gain share on Amazon and other cloud giants? No.
Obviously, Amazon is already offering ARM hosting, but so far the other major cloud providers don’t. That’s very likely to change; some sources on Wall Street tell me that both Microsoft and Google will offer ARM/RISC processor instances within six months. Alibaba’s own move would be likely to generate more interest by the second and third of our cloud giants, but I suspect that Amazon’s recent successes with ARM would be enough. There are some extra issues that a cloud provider has to face if they offer ARM hosting, but they’re clearly not deal-breakers.
The most significant issue with ARM hosting is the web services library that the operator offers. If the web services are designed to be run locally with the application, then they’d have to be duplicated in ARM form in order to be used. It’s possible to run x86 on ARM via an emulator, but performance is almost certain to be an issue.
A close second, issue-wise is the possible confusion of cloud users. Some binaries will work on ARM and others on x86/x64, and you can’t mix the two. In cloudbursting situations, this could present issues because data centers rarely have ARM servers, so the data center can’t back up an ARM cloud. Similarly, an ARM cloud can’t back up the data center, and you can’t scale across the ARM/x86 boundary either. All this means taking great care in designing hybrid applications.
Another issue is economy of scale, and this issue is hard to judge because of edge computing. A major cloud provider could almost certainly offer enough ARM hosts to achieve good economy of scale, within a couple percent of what they have overall. However, edge computing necessarily creates smaller resource pools and so further dividing an edge pool could threaten edge economics and ARM benefits. The question is whether edge applications, which are likely real-time in nature, could be so much better served with ARM hosts that the edge would go all-ARM.
The ARM question is really an indicator of a major shift in cloud-think. We’re finally realizing that what runs in the cloud is not only something that was written for the cloud and not moved from the data center, but also something that may have little in common with traditional data center applications. That’s why ARM/RISC systems, GPUs, and perhaps other hardware innovations are coming to light; it’s a different world in the cloud.
The edge is even more so, and there’s still time to figure out what an optimum edge would look like. That’s a useful step in framing out an architecture model for edge applications, something I’ve been advocating for quite a while. The trick is going to be preventing a debate over processor architecture from distracting from the architectural issues. There’s more to software than just the compatibility of the binary image, and I think that the hardware insights we’re now seeing will be followed by software architecture insights, likely as soon as early next year.