3 ms·
I think the missing premise in this article is that they control the operating system in lockstep with the CPU, and so when they optimize frameworks and objecti
by floatingatoll 5y ago
I think the missing premise in this article is that they control the operating system in lockstep with the CPU, and so when they optimize frameworks and objective-C internals for CPU hardware acceleration, they can require those OS optimizations for each revision of their CPU, with no backward compatability whatsoever.
The best analogy I can think of is to imagine if epoll or dbus were hardware-accelerated, and every year a silicon update and a kernel update added more or improved acceleration for more and more components.
We don’t yet know what the speed gains possible from reducing OS overhead are, but I bet Apple does, and I bet it doesn’t require frequency bumps at all. If someone has compiled vmlinuz into FPGA tapeout somehow, that would be a good point of comparison. (“Inconceivable!”, except not so much nowadays..)
[I can’t find the tweet linked in the past few weeks about CPU-accelerated ObjC calls, but there’s an HN discussion about it that’s worth reading.]
- saagarjha 5y agoApple’s OS optimization for their processors doesn’t really look like what you’re describing, it’s more general-purpose than that except for a handful of hardware accelerators for extremely hot code.
- b9a2cab5 5y agoIf that were the case Safari wouldn't perform much better than Chrome on certain benchmarks on Apple ARM based devices. But I think "optimization" is more making commonly used instructions really fast (such as uncontended atomics) and providing custom instruction extensions to accelerate common use cases in hardware (for example, I believe there is an undocumented branch prediction hint capability, whereas afaik for x86 you can only tell your compiler to order branches according to compile-time hints).
- floatingatoll 5y agoIt’s definitely only M1, that’s for sure. But I suspect it’ll be more than that over time. We’ll see, I suppose!