The M1 has been out for a month and we already have hundreds/thousands of natively compiled binaries—and Windows and Linux are up and running.
Choice is not a problem and competition is good.
Can you create a single build for all ARM chips for the same OS? If not, its all the same. At work we're using binaries built for XP that work without modification on W10. No doubt, its a testament to the massive backwards compat. effort by MS, but also from Intel. This is a massive, massive benefit to actual customers who just want to keep running software that they purchased/developed/commissioned on the replacement hardware when their current hardware fails. ARM/M1 brings a lot of benefits too, but as always, each person has to decide what they're willing to give up.
>The M1 has been out for a month and we already have hundreds/thousands of natively compiled binaries—and Windows and Linux are up and running.
Assuming the vendor is still in business, you have to rely on the good faith of the vendor to gift you the new version for free.
The OP raises very valid points, I don't know what is 'utter nonsense' about it. It's only tech, not a tribal war :)
I would add that mac osx does have universal binaries for some years.
>Firestorm can do 4 FADDs and 4 FMULs per cycle with respectively 3 and 4 cycles latency. That’s quadruple the per-cycle throughput of Intel CPUs and previous AMD CPUs, and still double that of the recent Zen3, of course, still running at lower frequency. This might be one reason why Apples does so well in browser benchmarks (JavaScript numbers are floating-point doubles).
https://www.anandtech.com/show/16226/apple-silicon-m1-a14-de...
>Apple has confirmed that it’s a massive 192KB instruction cache. That’s absolutely enormous and is 3x larger than the competing Arm designs, and 6x larger than current x86 designs, which yet again might explain why Apple does extremely well in very high instruction pressure workloads, such as the popular JavaScript benchmarks.
https://www.anandtech.com/show/16226/apple-silicon-m1-a14-de...
A major reason it does so well is the native Javascript support added in ARMv8.3-A.
Specifically, FJCVTZS (Floating-point Javascript Convert to Signed fixed-point, rounding toward Zero)[1] which is a Javascript-specific variant of FCVTZS implementing the overflow and exception handling behaviour that Javascript wants.
Javascript needs to do these conversions a lot, since it doesn't have integer types, and it's much faster to have it implemented in silicon rather than using the old instructions and having to handle the overflow/error checking.
[1] https://developer.arm.com/documentation/100076/0100/a64-inst...
https://mobile.twitter.com/saambarati/status/104920213252247...
I'm sure it doesn't hurt, but the performance advantage predates the instruction's use.
Here's another theory.
>Finally doing perf counters on a dedicated test bench... 9900K having 60% worse branch misprediction than Apple's A12.
Also apparently most JS engines do not actually use the FP unit but can do most computations on the integer units (unless is really FP math) which normally have much lower latency (but also lower bandwidth).
Another difference between x86 and ARM is that, for historical reasons, on x86 there is no need to invalidate the instruction cache explicitly when writing instructions to memory. That is, on x86, when a core writes to memory, the corresponding line in the instruction cache has to be invalidated. Since the instruction cache is usually VIPT for performance reasons, it has to be indexed only by bits which don't change in the virtual to physical mapping, otherwise there's a risk of cache aliases. For an instruction cache, an alias should not be a problem (it just wastes space with duplicated data), except that all aliases have to be flushed when invalidating by physical address.
IIRC, in 64-bit ARM user space (EL0) the only available instruction to invalidate the instruction cache is an "invalidate by virtual address" instruction. Since calling that instruction (after calling an instruction to flush the data cache to the point of unification) is required on ARM, there's no need to be able to invalidate all aliases of a physical address, like would be required on x86. That means it would be easier on ARM to have much larger instruction caches than on x86.
The m1 _does_ have one weird non-ARM extension; it can adopt an x86 memory model on demand.
https://developer.arm.com/documentation/dui0801/g/A64-Floati...
Not Apple Silicon specific though
1. If you can increase the performance of a language by adding language specific instruction sets to the processor, how much of a boost would we see on average?
2. Instead of building in instructions for say Python, C#, Java, etc, what if you built it in a language designed to create other languages I.E Racket? (I like Racket but another language that specialized in this would be fine). Since languages built on Racket ultimately compile to valid Racket code, you'll still get the speed up, and can program with the features and syntax you want (within reason obv constrained by the limitations of the base language).
3. I wasn't around for this, but isn't this what made Lisp faster on Lisp Machines? Since they had dedicated hardware for interpreting Lisp instructions?
Hardware can parallelize type checks. For instance, you can have an add instruction which proceeds on the assumption that the two arguments are numbers. In parallel, a type checking unit in the hardware can abort that instruction and cause a branch to some handler if the operand types are wrong.
Function calls in dynamic languages can be expensive partly due to the dynamic checking that there are not too few or too many arguments. This affects code that doesn't otherwise require type checking (like logic that is doing nothing more than just passing arguments through several layers of functions and capturing return values). Hardware can help here also.
The industry moved toward general-purpose hardware. The Lisp people figured out ways to compile Lisp well to general-purpose hardware.
The thing about hardware is that it also needs optimization: a machine designed for ideal execution of Lisp is going to be expected to produce new revisions that are faster and faster, keeping up with advances in general-purpose machines. If it fails to do so, its performance will be overtaken by Lisp that is compiled to the general-purpose machines.
A PlayStation 4 is x86_64 but is NOT a PC. Watch the Fail0ver video on their PS4 kernel port to understand how different it is.
ARM is a god damn clusterfuck of random pins soldered to random shit and every Android kernel patched to hell in non-upstreamable ways. Look at all the work PostmarketOS has to do in order to get mainline Linux to work on all the random ARM e-waste out there.
DeviceTree is a joke. Microsoft at least forces ARM+UEFI, but they have locked bootloaders and even though people have found exploits to unlock them, there's virtually no reversed engineered drivers. All those hundreds of thousands of Lumina phones? Now they're e-waste. Worthless.
Linux grew because IBM created the PC. Compaq reversed engineered the BIOS and everyone started making compatibles. Over time, BIOS and later UEFI became solid standards.
ARM may be fast, but the non-standard Basic Input/Output and device detection makes it nothing but potential e-waste.
This isn't how ARM's architecture license works. All ARM implementations are required to pass the same standard test suite.
>Architectural licensees get a set of specs and a testing suite that they have to pass, the rest is up to them. If they want to make a processor that is faster, slower, more efficient, smaller, or anything else than the one ARM supplies, this is what they have to do.
https://semiaccurate.com/2013/08/07/a-long-look-at-how-arm-l...
I think this is overstated. There are quite a few differences between Intel and AMD extensions these days and they don’t create much of a problem. Apple’s architecture isn’t reliant on accelerators or special instructions to get good performance on general purpose code.
There is little evidence that Apple has built anything truly non-standard in the M1 so far, the closest thing they have is the TSO mode, and that's not an optimisation since it provides stronger guarantees (and thus lower performances) than normal. That cost happens to be recouped tenfolds when emulating a TSO architecture (aka x86) rather than having to do it in software, but that's got nothing to do with ARM workloads.
Nothing stops other ARM manufacturers from doing that, but it's expensive, and most manufacturers don't really have a reason to work this hard at it, they have a fairly low-margin biz and their clients aren't going to pay big bucks. For Apple however, these chips are completely structural, they already underlie huge amounts of their business and with the switch of Macs to ARM are slated to do so even more.
It may not be possible for x86 though, because of the architecture's complexity limits e.g. how wide you can decode, and more generally how much hardware you can keep fed concurrently.
Isn't that the only thing we care about?
Anything else is a lot like saying that Intel based PCs aren't really compatible with each other because they can use different implementations of things like graphics chips, sound chips, and NICs.
I mean, so have Intel and AMD, for decades.
It's also not much different from the PC world where you have video cards and Nvidia's CUDA.
At least Amazon (Graviton) and Google (TPUs) already are. Google is also reportedly looking into its own ARM CPUs for its own mobile devices (Pixel line); if it does, I can’t imagine Cloud would be far behind.
> At least Microsoft is likely to sell their chips to third parties (they used to sell their software).
I would expect MS would keep its chips for its hardware, rather than selling them. But, sure, either they or Google might sell to partners, to help out the ecosystem for their OS's.
> If you want to develop for AWS you’ll be safer to have a laptop with an Amazon chip, if you want to develop for Google Cloud a Google Chip, for Azure a Microsoft chip.
In either case, cloud-as-dev environment is being actively pushed by all players, and negates that issue. It doesn’t matter what chip (or OS, or much of anything else) I have on my laptop if my dev environment is in the same cloud that I’m deploying to.
https://aws.amazon.com/ec2/graviton/
> 5. If you want to develop for AWS you'll be safer to have a laptop with an Amazon chip,
Since I mostly work on Java that runs at Amazon, I develop locally using Amazon Corretto (https://aws.amazon.com/corretto/), less for performance than for greater confidence I won't run issues between JVM differences when deploying at AWS.
> Or we'll end up with 5 different laptops (unlikely) or one that connects to a remote desktop running in the appropriate cloud with the correct chip.
We're already there when deploying Python with dependencies that need to be compiled from a different OS. The options that I've used so far are 1. Only using pure Python dependencies, which mostly works, and 2. Running a container locally. Thinking about the CPU you're going to be running on might make sense if you're working on native code, but it probably won't be a big deal.
I'm not so sure. Or at least, I don't think a balkanized landscape like that would last very long before the market converges on some type of de-facto standard, much like things ultimately did in the 80's/90's, and late alternative ::ahem, Itanium:: failed to gain traction in the market.
Also, instead of a variety of (often vendor-specific) OS's, we're really only dealing with two major candidates: Windows & Linux. Linux with its multiple distributions is more complicated, although AFAIK the main server distros there are Ubuntu, Red Hat, Debian, and CentOS. So the chips that best support these OS's would likely be the one the industry converges on, assuming it's available as a commodity component. (i.e., not just in a propriety cloud) And it would be smart to make sure desktops/laptops can run the flavor of chips running in clouds because that's where much development/coding happens.
What makes you think you’d have to have a local laptop? In fact, it’s in every behemoth’s interest to keep the good hardware managed and let the plebs work remotely using inferior technology.
Microsoft and Oracle is partnering with Ampere. And Google is all over the map as usual, OpenPOWER, ARM, RISC-V. And I would not be surprised if they roll their own just like AWS. Marvell has ARM offering as well. ( They really should consider buying Ampere ) So it does seems like Server ARM CPU are consolidating to a few players anyway. And Despite what they claim, Ampere and Graviton 2 are pretty much customised from ARM's Server SoC reference design.
Apple will have a super large M1 like design for future Mac Pro. What I am interested in is if Apple would use this, assuming rack mountable Mac Pro for their own DataCenter usage? ( i.e Installing Linux ) Or Bring back Xserve?
At the big corps that I've worked, my laptop is just a client to the machine that hosts the code & does the builds (that machine has been a giant Linux desktop & an ec2 instance)
We already see Apple chips in ec2. Today it's ostensibly "rent a machine to run your test suite" (although iiuc there's a 24h minimum rental), but I don't see any reason why it won't eventually be "just run your server on an apple cloud instance on ec2" (or develop locally in a container and deploy to that)
Software is actually reducing the friction of deploying to a different machine than you develop on, and the proliferation of high end custom chips isn't going to change that
I don't think the most important thing here is the ISA. A64 is a pretty nice and I don't see any reason you would want to be incompatible with it, especially since getting an ARM architecture license requires you to be compatible with other ARM chips. But Amazon isn't going with Apple's very wide and deep pipeline strategy and there's nothing to say that other ARM chips would either.
I don’t think that other computers manufacturers are going to follow Apple’s lead. Maybe Microsoft will do it if they decide to get serious with their Surface line.
The one company I see benefiting the most from this is Qualcomm. They have the customers and the money to invest in R&D.
You own nothing but the locked-down terminal that connects you to the AWS virtual desktop cloud.
You pay 529.99$ upfront, or a monthly subscription, in order to remove the ads and enjoy your O.S. powered by AWS Workspaces.
If one were to add more ARM extensions and actually push them for third-party usage, that might change though.
The M1 is a 5nm chip, while the i9 is a 14nm chip! The M1 has about 16b transistor, the i9 has only about half of that amount.
No surprise the M1 is faster. Most credit should go to TSMC for being able to manufacture 5nm chips.
That it has zero to do with the architecture is a bold assertion (and seems unlikely).
In any event Apple would not have been able to manufacture / buy an x86 on 5nm so the architecture has quite a lot of influence on the performance of the latest Apple laptops.
- The TDP of the M1 and the i9
- How each has utilised die area (e.g how much is devoted to CPU / GPU and accelerators)
When we see the version of the M1 for the larger MacBook Pros then the gap will become even bigger.
This post is good reading on the matter: https://news.ycombinator.com/item?id=25257932
Back to the entirely proprietary mainframe of 1970 with dumb remote terminals.
But this time the mainframe performs pervasive surveillance.
But in the world of software things are far more complicated.
1. Amazon, Google, Microsoft start building their own chips for their own clouds. The most efficient chip could translate into the cheapest cloud, or the fastest one at the same price. Their choice.
2. There will be N somewhat compatible ARM chips, that is to say they are somewhat incompatible. Remember the home computing landscape of the 80s / early 90s but also the diversity in server architectures and OSes.
3. At least Microsoft is likely to sell their chips to third parties (they used to sell their software). Probably Amazon and Google have reasons to sell their chips too (Google -> Chromebooks)
4. Some of those chips will end up in development laptops and desktops.
5. If you want to develop for AWS you'll be safer to have a laptop with an Amazon chip, if you want to develop for Google Cloud a Google Chip, for Azure a Microsoft chip. This is not unheard of because if you want to develop for iOS you must have Apple hardware since 10+ years ago.
6. The chip manufacturer that wins the war for the developers' machines wins the war for the cloud, because it won't be possible for (let's say) Google to compete with (let's say) Amazon if Google has to buy chips from Amazon because 90% of the developers have a laptop with an Amazon chip.
Or we'll end up with 5 different laptops (unlikely) or one that connects to a remote desktop running in the appropriate cloud with the correct chip. That laptop could be a Mac or anything else, something powerful or a thin client.
So: fragmentation and then remote desktops? Back to mainframe / time sharing?