Earlier quoted context omitted.
Microsoft doesn't need to acquire Intel, they need to do what Apple did and acquire a stellar ARM design house that will build a chip with x86 translation, tailored to accelerate the typical workloads on Windows machines and sell those chips to the likes of Dell and Lenovo and tell developers "ARM Windows is the future, x86 Windows will be sunset in 5 years and no longer supported by us, start porting your apps ASAP…
Apple has at most 10% of the computer market and is just one player among many. I am skeptical Microsoft with their 90% dominance would or should be allowed this much power over the industry.
Memory access on the Apple M1 processor
241–250 of 278 posts
Re: Memory access on the Apple M1 processor
#242Earlier quoted context omitted.
Strange on my XPS 15 7590 (i7-9750H), I get N = 1000000000, 953.7 MB starting experiments. two : 12.8 ns two+ : 13.7 ns three: 19.5 ns bogus 1422321000
Yeah, that is strange. Why was it so slow? Trying on a desktop with a 7900X, I get N = 1000000000, 953.7 MB starting experiments. two : 17.7 ns two+ : 19.1 ns three: 26.4 ns bogus 1422321000 This is again close to 50% slower than your time, but nearly twice as fast. I'll try again on the laptop and make sure I don't have other processes running.
Re: Memory access on the Apple M1 processor
#243Earlier quoted context omitted.
Yeah, that is strange. Why was it so slow? Trying on a desktop with a 7900X, I get N = 1000000000, 953.7 MB starting experiments. two : 17.7 ns two+ : 19.1 ns three: 26.4 ns bogus 1422321000 This is again close to 50% slower than your time, but nearly twice as fast. I'll try again on the laptop and make sure I don't have other processes running.
Strange. I suppose the compiler shouldn't matter much here, right? At any rate, I'm using GCC 10.2.1.
Neither did messing with flags, like (I tried -fno-semantic-interposition -march=native and a few others).
Re: Memory access on the Apple M1 processor
#244Re: Memory access on the Apple M1 processor
#245- Warehouse: unified memory
- Workshop: CPU, GPU and other cores
- Product( material): information,data
there’s also a new unified memory architecture that lets the CPU, GPU, and other cores exchange information between one another, and with unified memory, the CPU and GPU can access memory simultaneously rather than copying data between one area and another. Accessing the same pool of memory without the need for copying speeds up information exchange for faster overall performance.
reference:
1. Developer Delves Into Reasons Why Apple’s M1 Chip is So Fast. https://www.macrumors.com/2020/11/30/m1-chip-speed-explanati...
2. The Grand Unified Programming Theory: The Pure Function Pipeline Data Flow with Warehouse/Workshop Model https://github.com/linpengcheng/PurefunctionPipelineDataflow
Re: Memory access on the Apple M1 processor
#246Earlier quoted context omitted.
> What enabled/led them to make those choices where others haven't? Others have to some extent — AMD is certainly not out of the game — so I'd treat this more as the question of how they've been able to go more aggressively down that path. One of the really obvious answers is that they control the whole stack — not just the hardware and OS but also the compilers and high-level frameworks used in many demanding contex…
Intel does lots of contributions across the OS (Linux and glibc) to compilers including their own (gcc, icc, ispc, etc). Their problems aren't their ability, it's that Intel is poorly managed and internal groups are constantly fighting with each other. Also, compiler support for CPUs is very overrated. Heavy compiler investment was attempted with Itanium and debunked; giant OoO CPUs like Intel's or M1 barely care abo…
I wasn't just talking about Intel but the concept of separate CPU and compiler vendors in general. Intel contributes a ton of open source but even if they were perfectly organized it takes time for everything to happen on different schedules before it's generally available: get patches into something like Linux or gcc, wait possibly years for Red Hat to ship a release using the new version, etc. Certain users — e.g. game or scientific developers — might jump on a new compiler or feature faster, of course, but that's far from a given and it means they're not going to get the across-the-board excellent scores that Apple is showing.
> Also, compiler support for CPUs is very overrated. Heavy compiler investment was attempted with Itanium and debunked; giant OoO CPUs like Intel's or M1 barely care about code quality, and the compilers have very little tuning for individual models.
This isn't entirely wrong but it's definitely not complete. Itanium failed because brilliant compilers didn't exist and it was barely faster even with hand-tuned code, especially when you adjusted for cost, but that doesn't mean that it doesn't matter at all. I've definitely seen significant improvements caused by CPU family-specific tuning and, more importantly, when new features are added (e.g. SIMD, dedicated crypto instructions, etc.) a compiler or library which knows how to use those can see huge improvements on specific benchmarks. That was more what I had in mind since those are a great example of where Apple's integration shines: when they have a task like “Make H.265 video cheap on a phone” or “Use ML to analyze a video stream” they can profile the whole stack, decide where it makes sense to add hardware acceleration, and then update their choice of the compiler toolchain and higher-level libraries (e.g. Accelerate.framework) and ship the entire thing at the time of their choosing whereas AMD/Intel/Qualcomm and maybe nVidia have to get Microsoft/Linux and maybe someone like Adobe on board to get the same thing done.
That isn't a certain win — Apple can't work on everything at once and they certainly make mistakes — but it's hard to match unless they do screw up.
Re: Memory access on the Apple M1 processor
#247Earlier quoted context omitted.
Strange on my XPS 15 7590 (i7-9750H), I get N = 1000000000, 953.7 MB starting experiments. two : 12.8 ns two+ : 13.7 ns three: 19.5 ns bogus 1422321000
I just ran it again, and got more or less the same results: N = 1000000000, 953.7 MB starting experiments. two : 29.7 ns two+ : 36.5 ns three: 43.8 ns This surprises me. Normally, it does very well in most benchmarks I run. Looking a little closer at the script, it loads numbers from "random", a vector of 3 million `Int` (this is hard coded, separate from `N`). This vector is about 11.4 MiB. The Tiger Lake CPU has 12…
I'm wondering if the difference is the the number of active memory channels. How many channels does your respective computers support? Do you have enough RAM installed so all channels are in use? Are you able to do a RAM bandwidth test by some other means to verify?
Another possibility is that for some reason the base latency is just different between your machines. A commenter added a pointer-chasing variation of Daniel's test on his blog. Maybe run this to find the full latency and see how the times differ?
Finally, there was one more commenter on the blog who reported anomalously fast times on a Windows laptop. It's possible there is a bug with Daniel's time measurements on windows.
Re: Memory access on the Apple M1 processor
#248Earlier quoted context omitted.
Microsoft has a pretty good relationship with AMD from the Xbox. AMD already made an Arm Opteron. Windows has been multiplatform since NT 3.1 (Alpha, MIPS) and then in 3.51 adding in PowerPC. You can download Windows for Arm for free and run in on a Raspberry Pi. Microsoft has at least one homegrown processor that it has ported Windows and Linux to with the confusingly named 'Edge'. https://www.theregister.com/2018/0…
> Windows has been multiplatform since NT 3.1 (Alpha, MIPS) and then in 3.51 adding in PowerPC. What was the last version of Windows to support either of these platforms?
Re: Memory access on the Apple M1 processor
#249Earlier quoted context omitted.
This seems to be a recurring theme with the M1, and one that, in a sense, actually baffles me even more than the alternative. There is no "magic" at play here, it's just lots and lots of raw muscle. They just seem to have a freakishly successful strategy for choosing what aspects of the processor to throw that muscle at. Why is that strategy simultaneously remarkably efficient and remarkably high-performance? What en…
Apple has been iterating on their proprietary mobile ARM-based processors since 2010, and has gotten really good at it. I would imagine that producing billions of consumer devices with these chips has helped give them a lot of experience in shortened time frame. I also wonder if having the hardware and software both worked on in-house is an advantage. I mean, if you're developing power management software for a mobil…
Re: Memory access on the Apple M1 processor
#250Earlier quoted context omitted.
>that it's "on-die" (it's not) It appears to be mounted on the same chip package. Why did Apple do this if not for speed?
On-package memory is not faster. I suspect it is more power efficient though.