Become a MacRumors Supporter for $50/year with no ads, ability to filter front page stories, and private forums.

badgerbadgerx2

macrumors regular
Sep 4, 2019
118
82
Sure. Its hard to know peeps levels of knowledge here (or any forum) so using terminology can be a crap shoot. and then other peeps come on the forum like "tech police" and remind everyone that one Friday 19 years ago there was a xxx2 variant that had a .0002 difference compared to all others and it was awesome. weird flex.

"SSD" to all of my tech peeps = 2.5" SATA drive. "Flash drive" used to mean "thumb drive", but now NVMe = flash drive/storage to us. Sure its a SSD, but not what we call it. we could say "NVMe" or "PCIe NVME" but cumbersome. ANd of course, I get questions like "is NVMe faster than SSD" or "should I replace my SSD with a NVMe" -- which clearly indicates there is still confusion.

And of course for externals we don't buy 2.5" SSDs anymore, since basic NVMe is about the same cost for 2X the speed. We have started using SSD = NVMe now days, but still have a few peeps look as us with a "huh?" thinking we mean 2.5" SSDs.
 
  • Like
Reactions: Sumo999

quarkysg

macrumors 65816
Oct 12, 2019
1,247
841
What caught my attention, frankly caught me off guard, is that while the core x86 instruction set was built built with the intention of reducing memory footprint of the code (what we now call CISC, though that term was meaningless before RISC arose as an antonym)-- the modern x86 binaries are larger. I'd never thought about it because the trivial differences in code size just don't matter that much anymore.
I guess right about the time when x64 was designed, memory prices came down and is no longer a concern anymore, especially when the dataset that the codes are processing starts to far outweigh the code size.
 

theorist9

macrumors 68040
May 28, 2015
3,880
3,059
Code size no longer matters much relative to RAM size, but what about cache size? I recall from a decade ago there was a some discussion about writing cache-friendly code, which meant doing processor-specific optimizations to chunk data to fit into the data cache, and (less commonly) writing instruction sets that could fit into instruction cache

I don't know whether this continues to be a concern for modern processors, or how ARM vs. x86 executable code sizes would affect this. I also don't know if Apple's chips have separate data and instruction caches (I recall reading Intel's do and AMD's don't).
 

quarkysg

macrumors 65816
Oct 12, 2019
1,247
841
Code size no longer matters much relative to RAM size, but what about cache size? I recall from a decade ago there was a some discussion about writing cache-friendly code, which meant doing processor-specific optimizations to chunk data to fit into the data cache, and (less commonly) writing instruction sets that could fit into instruction cache

I don't know whether this continues to be a concern for modern processors, or how ARM vs. x86 executable code sizes would affect this. I also don't know if Apple's chips have separate data and instruction caches (I recall reading Intel's do and AMD's don't).
Memory access locality became more of a problem when CPU speed is a lot faster than memory. There used to be a time where main memory access time is not a problem when the CPU is slower. With high GHz CPU nowadays, cache became important to keep the CPU busy instead of waiting. Memory tech did not keep up with CPU processing speed. With multi-core CPUs, this became worst. That's why Apple Silicon is big caches.
 

mr_roboto

macrumors 6502a
Sep 30, 2020
856
1,866
What are otool's size units? I couldn't find that in the man file.
Bytes.

These relative sizes are very different from what's seen in Finder. E.g., according to otool, Excel is nearly twice the size of Outlook yet, according to Finder, Excel (2.04 GB) is actually a bit smaller than Outlook (2.12 GB).

The man file seems to say that otool (when run without specific file arguments) shows all executable files, including libraries. Is that right? In that case is the difference because Outlook's non-executables are collectively much larger than Excel's?
The single file you run otool against is interpreted as a Mach-O binary. Finder reports the size of the entire contents of an app bundle, which generally contains lots more stuff than just the binary.

You may find that some applications have a tiny main executable under Appname.app/Contents/MacOS/Appname. This is usually because most of the code actually lives in a shared library (or two, or three).

% otool -fv /Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome
architecture x86_64
size 248528
architecture arm64
size 207248

% otool -fv /Applications/Google\ Chrome.app/Contents/Frameworks/Google\ Chrome\ Framework.framework/Versions/Current/Google\ Chrome\ Framework | egrep '(architecture|size)'
architecture x86_64
size 189805920
architecture arm64
size 171279168
 
  • Like
Reactions: theorist9

mr_roboto

macrumors 6502a
Sep 30, 2020
856
1,866
I don't know whether this continues to be a concern for modern processors, or how ARM vs. x86 executable code sizes would affect this. I also don't know if Apple's chips have separate data and instruction caches (I recall reading Intel's do and AMD's don't).
It's absolutely still a concern; cache has only increased in importance over time since processor cores keep getting faster relative to main memory.

All modern high performance architectures I'm aware of use separate I and D caches at the L1 level, including AMD's. L2 and higher are generally unified. The L1 split allows these things, and more:
  • Instruction fetch runs in parallel with data loads, increasing the total L1 read bandwidth. (You could do this by adding another access port to a unified L1 cache, but extra ports are expensive.)
  • Every time you double the size of a SRAM memory array it gets slower. There's a maximum practical size for a L1 cache for any given clock frequency. With split I and D caches, each cache can be that maximum size, increasing the total size of L1 beyond what would be possible with a unified cache.
  • Icache access patterns often differ from Dcache, making it advantageous to architect the two slightly differently to achieve higher hit rates than you could get from a single unified cache.
Many high performance x86 CPUs (all Intel performance cores, possibly AMD's too? Not sure on the latter) have an additional level of instruction cache below the L1, the uop (micro-op) cache. Sometimes you'll see it referred to as a L0 cache. As the name suggests, the L0 uop cache holds decoded x86 instructions AKA uops rather than raw memory contents.

The x86 decoders still get fed exclusively by the L1 instruction cache; the uop cache is just there so that decoders can sometimes be bypassed. This is done simply because x86 decode is so expensive. When the CPU executes a tight loop small enough to fit in uop cache (they're generally fairly small), the first pass through the loop populates the uop cache and thereafter subsequent passes execute from the cache and the decoders can just shut down. Saves a lot of power.

There isn't as much reason to do this kind of thing in RISC cores, because most RISC ISAs are profoundly less expensive to decode than x86. Apple's cores don't have uop caches.
 
  • Like
Reactions: theorist9

leman

macrumors Core
Oct 14, 2008
19,521
19,673
There isn't as much reason to do this kind of thing in RISC cores, because most RISC ISAs are profoundly less expensive to decode than x86. Apple's cores don't have uop caches.

Interestingly enough, ARM's Cortex-X designs have uop caches.
 

Toutou

macrumors 65816
Jan 6, 2015
1,082
1,575
Prague, Czech Republic
Sure. Its hard to know peeps levels of knowledge here (or any forum) so using terminology can be a crap shoot. and then other peeps come on the forum like "tech police" and remind everyone that one Friday 19 years ago there was a xxx2 variant that had a .0002 difference compared to all others and it was awesome. weird flex.

"SSD" to all of my tech peeps = 2.5" SATA drive. "Flash drive" used to mean "thumb drive", but now NVMe = flash drive/storage to us. Sure its a SSD, but not what we call it. we could say "NVMe" or "PCIe NVME" but cumbersome. ANd of course, I get questions like "is NVMe faster than SSD" or "should I replace my SSD with a NVMe" -- which clearly indicates there is still confusion.

And of course for externals we don't buy 2.5" SSDs anymore, since basic NVMe is about the same cost for 2X the speed. We have started using SSD = NVMe now days, but still have a few peeps look as us with a "huh?" thinking we mean 2.5" SSDs.
I wouldn't mind if you were just simplifying, but literally everything in this post is some kind of weird homegrown alternative terminology that doesn't even make sense and that (hopefully) no one uses.

There are both NVMe and SATA drives in the 2.5" form factor and there are both NVMe and SATA drives in the M.2 form factor, and whatever the form factor is, they're all SSDs (by definition) and they all use flash memory.
 

Sydde

macrumors 68030
Aug 17, 2009
2,563
7,061
IOKWARDI
the core x86 instruction set was built with the intention of reducing memory footprint of the code

No, not really. The 8086 was built to look a lot like an Intel 8080 but with a megabyte memory range instead of 64K. They added registers and some features that they thought would be useful for customer applications but kept byte-based code because a megabyte was still pretty limiting.
 

Analog Kid

macrumors G3
Mar 4, 2003
9,360
12,603
No, not really. The 8086 was built to look a lot like an Intel 8080 but with a megabyte memory range instead of 64K. They added registers and some features that they thought would be useful for customer applications but kept byte-based code because a megabyte was still pretty limiting.
Sorry, I’m not sure how what you’re saying is different…
 

badgerbadgerx2

macrumors regular
Sep 4, 2019
118
82
I wouldn't mind if you were just simplifying, but literally everything in this post is some kind of weird homegrown alternative terminology that doesn't even make sense and that (hopefully) no one uses.

There are both NVMe and SATA drives in the 2.5" form factor and there are both NVMe and SATA drives in the M.2 form factor, and whatever the form factor is, they're all SSDs (by definition) and they all use flash memory.
thanks for proving my point ;)

Im not sure what you do in the world, but again, as a person who does has done mac consulting since the Centris days, terminology depends on who Im talking to. Using a car based analogy that a platter-based HDD goes 40 MPH vs a 2.5" SSD can go up to 450 MPH has happened more times than I care to count, cause things like MB/s is lost on them.

Out of curiosity, what terminology do you use when discussing drives?
 

Sydde

macrumors 68030
Aug 17, 2009
2,563
7,061
IOKWARDI
Sorry, I’m not sure how what you’re saying is different…

I guess what I am saying is that everyone designs for compact, efficient code. The MC68000 was designed right around the same time as the 8086, and despite using a 16-bit-granular variable-length instruction set, code density, compared to the 8086, was quite good. It fit into similar memory footprints as the 8086 but did not suffer from its larger ISA granular.

In the mid '80s, Acorn designed their new processor to maximize the practical functionality of each 32-bit instruction. They use wide opcodes but still designed the memory footprint of program code to be as compact as possible. And it worked quite well.

In reality, Intel did not do anything special when they designed the 8086 ISA. They did pretty much what everyone else was doing, in their own unique way. A few decades later, when they tried to go the other way with the VLIW Merced, the ultimate product turned out to be a bust. It looks like certain design principles work better than others. New concepts are worth trying, but betting the store on them is dangerous practice.
 

VivienM

macrumors 6502
Jun 11, 2022
496
341
Toronto, ON
I am also unhappy with Apple intentionally slowing down the SSD of base models of M2 MACs.
Sorry, but how is it "intentional"? You can build an SSD with one chip or two chips. It's more cost-efficient to use a one-chip design, but a two-chip design allows for more parallelism and therefore performance. So, they switched from two chips in some M1 models to one chip in some (lower-end) M2 models with the same storage capacity. How is that "intentionally" slowing it down? Is there a rule that because the M1 models had a certain amount of storage performance (that I doubt Apple ever documented on a public spec sheet), the M2 models must be architected to offer the same/more storage performance? Maybe it would be a little better if the spec sheet told you that the higher capacity models also have more storage performance, but this is Apple here, they don't put that kind of data on spec sheets...

I know the YouTube folks made a big deal about this, but it's always struck me as unfair...
 

Analog Kid

macrumors G3
Mar 4, 2003
9,360
12,603
I guess what I am saying is that everyone designs for compact, efficient code. The MC68000 was designed right around the same time as the 8086, and despite using a 16-bit-granular variable-length instruction set, code density, compared to the 8086, was quite good. It fit into similar memory footprints as the 8086 but did not suffer from its larger ISA granular.

In the mid '80s, Acorn designed their new processor to maximize the practical functionality of each 32-bit instruction. They use wide opcodes but still designed the memory footprint of program code to be as compact as possible. And it worked quite well.

In reality, Intel did not do anything special when they designed the 8086 ISA. They did pretty much what everyone else was doing, in their own unique way. A few decades later, when they tried to go the other way with the VLIW Merced, the ultimate product turned out to be a bust. It looks like certain design principles work better than others. New concepts are worth trying, but betting the store on them is dangerous practice.
Fair enough: everyone values compact, efficient code. But, Arm made the decision to value fetch and decode efficiency more highly than bytes per instruction while Intel made the decision that letting instruction length vary between 1 and 15 bytes was the way to go.

If you do a quick web search, you'll find any number of sources still arguing that the advantage of the variable length instructions and CISC mentality is higher code density. Having never actually thought about it much, I've happily gone along without questioning that conventional wisdom. What we're seeing in practice though is that it is largely a myth. There's a lesson there.

There remains a difference to discuss between fixed length and variable length instructions. x86 still achieves fewer bytes per instruction compared to Arm, though that advantage appears to have further faded going to 64bit. I think that's two parts of the lesson: fewer bytes per instruction doesn't naturally equate to higher code density, and don't just look at what's best for today look at how the architecture will need to evolve and plan for it.
 

Sydde

macrumors 68030
Aug 17, 2009
2,563
7,061
IOKWARDI
There remains a difference to discuss between fixed length and variable length instructions. x86 still achieves fewer bytes per instruction compared to Arm, though that advantage appears to have further faded going to 64bit. I think that's two parts of the lesson: fewer bytes per instruction doesn't naturally equate to higher code density, and don't just look at what's best for today look at how the architecture will need to evolve and plan for it.
There are a few things to consider about the value you gain from variable-length instructions. On x86, your code can use a 32- or 64-bit immediate value (which is where the potential for 15 byte instructions arises). Because of the 32-bit instruction set, ARM code is not afforded that option. However, a 16-bit constant can be loaded into a register in any of the 4 regular positions of a 64-bit register: this covers the lion's share of immediate constants that one might be likely to use. In most cases, 16-bit resolution is all one should need for values directly embedded in code.

Compilers (which generally generate all of program code) do not put large constants directly into the code stream. They are corralled in a constants table that is adjacent to the program, accessed by PC-relative addressing. Even on x86, where the large-immediates option exists, a compiler will still use a nearby constants table, because it makes the most sense. So you will really never see a 15-byte instruction in actual x86 code (rarely more than 7 bytes). Hence, that particular CISC "advantage" simply will not get used.

One other edge that ARM code has is that you will very rarely see a register-to-register mov operation. The mov operation is somewhat common in x86 because of the dedicated uses of particular registers, and because of the two-register math architecture.

Since the first 32-bit ARM processors, they have striven to maximze the useful functionality of the ISA, in kind of a backwards way. Many opcodes have 2 or three effects but may be encoded so that only one or two of the effects are applied. This greatly simplifies instruction decoding as well as encoding flexibility. On x86, the instruction forms that do two or three things cannot be split to where they only do the part that is needed, and sometimes, the dedicated registers force the code to do set up work that ends up more costly for code density.

I think it was Larry Ellison who said that RISC does not really have a performance advantage over x86 because compilers generate the most efficient code possible. But that kind of leaves us wondering, what is the point of having those CISC features if they are just going to sit on the shelf because compilers will not use them? It looks like Rosetta 2 can do a good job of converting x86 code to ARM, so even the backwards compatibility concern is dubious.
 

Analog Kid

macrumors G3
Mar 4, 2003
9,360
12,603
I think it was Larry Ellison who said that RISC does not really have a performance advantage over x86 because compilers generate the most efficient code possible. But that kind of leaves us wondering, what is the point of having those CISC features if they are just going to sit on the shelf because compilers will not use them? It looks like Rosetta 2 can do a good job of converting x86 code to ARM, so even the backwards compatibility concern is dubious.

Sounds like you're coming to the same conclusion I did:

I'm talking about deprecating the worst offenders in the instruction set and patching over them. Once upon a time I saw estimates of how much of the x86 decoder logic is dedicated to what fraction of the instruction set-- maybe it was in the post-mortem for Itanium. I can't remember the exact numbers but there's a definite Pareto distribution at work. Getting those instructions out of circulation would certainly help.

Announce now that within so many years the worst instructions will no longer have hardware support in the CPU then start cutting them out. [...] New code will still run fine on old hardware because old hardware will be a superset. Old code can run on new hardware through trapping unknown opcodes and emulating the old instructions in software.

The M-series can run translated x86 about as fast as Intel can run it natively. Apple has given them a roadmap to salvation.
 

leman

macrumors Core
Oct 14, 2008
19,521
19,673
Fair enough: everyone values compact, efficient code. But, Arm made the decision to value fetch and decode efficiency more highly than bytes per instruction while Intel made the decision that letting instruction length vary between 1 and 15 bytes was the way to go.

If you do a quick web search, you'll find any number of sources still arguing that the advantage of the variable length instructions and CISC mentality is higher code density. Having never actually thought about it much, I've happily gone along without questioning that conventional wisdom. What we're seeing in practice though is that it is largely a myth. There's a lesson there.

There remains a difference to discuss between fixed length and variable length instructions. x86 still achieves fewer bytes per instruction compared to Arm, though that advantage appears to have further faded going to 64bit. I think that's two parts of the lesson: fewer bytes per instruction doesn't naturally equate to higher code density, and don't just look at what's best for today look at how the architecture will need to evolve and plan for it.

@Sydde's reply is excellent, as usual. From my side, I like to analyse an ISA from two perspectives. One regards information packaging — how much useful information does an instruction carry? how well can the ISA be used to express common algorithmic problems and patterns? Another one is the ease of hardware implementation: how much work does the CPU need to perform to decode an instruction? how much overhead is there in tracking dependencies? special rules the hardware needs to be aware of? how much additional processing/repackaging to be done before the instruction can to be executed?


For example, the big motivating point for early CISC designs (and in fact, their very justification) was to encode common algorithmic patterns as shorter instructions while making special rules for other common patterns (like multiply instruction that hard-coded where the operations result go). This kind of design both improved information packaging (you could express more intent with the same amount of binary code), which was great at the time when the RAM was at high premium, and facilitated simplified hardware implementation (multiplication didn't have to deal with combinatorial complexity of register outputs), which was great when the transistors and die area was at high premium.

But both software and hardware have evolved. On the software side, the algorithms and control flow patterns are vastly more complex compared to what people did in the 70ties and 80ties. On the hardware side, we have superscalar execution, where hundreds of instructions and their dependencies are tracked simultaneously and several are executed in parallel (and that's on single-threaded, serial code). So requirements changed too. What consisted good design in the 80-ties (saving some wires and execution unit complexity) was not a good design anymore in 2010, where register dependencies were already tracked in hardware. So compact and carefully crafted instruction spaces of early CISC ISAs stopped being an advantage and turned into an annoyance. Because the problems they were designed to solve didn't exist anymore, and they didn't do much to help with the new problems — like decoding multiple instructions in parallel to feed all the superscalar machinery or simplifying dependency tracking. And as an effect, the code became more RISC-like. When you look at x86-64 disassembly of modern complex applications, you will barely even see any register-memory operations (probably the signature feature of x86 architecture), simply because it's not that useful in practice. And as @Sydde already mentioned, the more complex "CISC" instructions like ENTER and LEAVE are basically extinct.

This is where the beauty of 64-bit ARM comes in. It has been meticulously designed to optimise both useful information per instruction and ease of implementation, all of it fine-tuned for the needs of both the contemporary software and the superscalar hardware. The ISA is highly complex, because it aims to exploit frequently used software patterns as well as provide expression symmetry for more flexibility. The fact that the ISA is fixed-size is easily misleading — one immediately thinks that this is just for the ease of decoding, the obvious drawback being code density, and leaves it there. But one has to look at what's actually there. ARM64 addressing modes are designed to express common pointer arithmetic as compactly as possible (e.g. fetching a struct field from an array and incrementing a loop counter is one single instruction). It has things like multi-register loads (in one instruction), more architectural registers (reducing memory spills and moves), link register for more efficient calling of small routines, and many other things. And despite all this complexity the instructions can be decoded very efficiently and operations can be issued to the execution hardware swiftly, without extra processing, since the dependencies are clearly inferable from the instruction itself. Just one illustration: ARM64 can perform operand shift as part of an arithmetic instruction (this is a common pattern for address computation, for example). This will be executed in multiple steps on most hardware (first shift and then addition), but cheaper to have it as one instructions, where the operation dependency is clearly specified, than to execute it as a separate instruction pair, where you have to do separate register dependency tracking.

And as a final example (in what ends up being a way too long post) I want to mention is RISC-V. The design focus here is simplicity and ease of implementation on simple hardware. They don't go for the dense information packaging like ARM does, their instructions do only one operation (most of the time at least). This is pretty much the "classical RISC" as it is commonly described and understood. This makes an elegant and minimalist ISA, but it creates a problem, as common software patterns (like addressing into arrays of structs) now require multiple instructions. This problem becomes apparent when you want to make a really fast CPU, because you have to a higher cost for decoding multiple instructions and tracking dependencies to get to the same information state as an ARM CPU can with just a single instruction. And even more, you have to perform some additional information repackaging (aka plumbing) to get the format you need for efficient execution. Say your memory load unit can perform address shifts (it's a common thing as you often have to generate addresses line 8*i + k). Well, RISC-V does not have shifts as part of its load instruction, only immediate offset. The shift has to be done as a preceding arithmetic instruction. So if you want to make use of your fancy hardware address generation unit, you need to track the shift instruction, check if it uses a shift amount your address generation unit supports, eliminate this instruction from the flow, and forward the information to the address generation unit. That's quite a lot of work to do to just get the information parity with ARM!
 
  • Like
Reactions: Sydde

Sydde

macrumors 68030
Aug 17, 2009
2,563
7,061
IOKWARDI
Sounds like you're coming to the same conclusion I did

Not really, though. I have not been a fan of x86 at all for four decades and have been surprised that it has not yet been successfully replaced by something better. The biggest selling point is that it can run 40-year-old code, and if you go decrufting it, you end up ultimately breaking that one advantage for minimal gain. It is primarily the use of special-purpose registers, which worked quite well in 1980 for making compact code but is now more of a liability and is essentially inescapable. The basic architecture is a weakness that defies further optimization.
 
  • Like
Reactions: jdb8167

Analog Kid

macrumors G3
Mar 4, 2003
9,360
12,603
Not really, though. I have not been a fan of x86 at all for four decades and have been surprised that it has not yet been successfully replaced by something better. The biggest selling point is that it can run 40-year-old code, and if you go decrufting it, you end up ultimately breaking that one advantage for minimal gain. It is primarily the use of special-purpose registers, which worked quite well in 1980 for making compact code but is now more of a liability and is essentially inescapable. The basic architecture is a weakness that defies further optimization.

I don't know whether hardware compatibility looking back to the dawn of the integrated microprocessor age was a real advantage of x86 or one that Intel marketed to maintain dominance. It's most likely that it was important until it wasn't. It should have been clear where this was going when Intel themselves dropped hardware support for x86 in favor of a faster software emulation in Montecito, but I think the industry can be forgiven for largely ignoring anything that came from Itanium.

Intel then went back to arguing that you needed legacy hardware support and trying to frame it as a battle between them and AMD because that kept the entire argument focused on x86. That went largely unchallenged in any practical way because no one had the R&D budget and process technology to prove otherwise-- until Apple and TSMC teamed up.

Today, it's clear that the emperor has no clothes. And what you're quoting as an advantage you're also acknowledging can be retained when you emulate away the cruftiest bits. You'd retain full backwards compatibility as a practical matter at the software level, while providing more competitive hardware for new applications.

Otherwise, what reason does Intel have to exist? This isn't matter of tuning up a bad implementation, this is a fundamental limitation of their technology base. If their approach is going to be to keep doing the same thing hoping for different results, then they're going to grow increasingly niche.

Microsoft will, one day, decide it's not worth the loss of performance to stay with Intel. How long will modern applications take on the cost, power and performance burden of maintaining someone else's legacy needs?
 

Sydde

macrumors 68030
Aug 17, 2009
2,563
7,061
IOKWARDI
Otherwise, what reason does Intel have to exist? This isn't matter of tuning up a bad implementation, this is a fundamental limitation of their technology base. If their approach is going to be to keep doing the same thing hoping for different results, then they're going to grow increasingly niche.
Intel does own some IP, like USB, PCIe and Thunderbolt, so they have that kind of reason to exist. And they do make some other stuff, I think. ARM and RISC-V are not quite to the point of dethroning x86 across the board – Apple appears to be the only team with a good lead – but if x86 is still strong in 2030, it will be kind of surprising. Even IBM's POWER10 servers are looking better than x86, hugely more efficient per watt.

Microsoft will, one day, decide it's not worth the loss of performance to stay with Intel. How long will modern applications take on the cost, power and performance burden of maintaining someone else's legacy needs?
They are hedging their bets with Windows-on-ARM. It is not quite yet better than Windows x86, but soon it likely will be.
 

Analog Kid

macrumors G3
Mar 4, 2003
9,360
12,603
Intel does own some IP, like USB, PCIe and Thunderbolt, so they have that kind of reason to exist. And they do make some other stuff, I think. ARM and RISC-V are not quite to the point of dethroning x86 across the board – Apple appears to be the only team with a good lead – but if x86 is still strong in 2030, it will be kind of surprising. Even IBM's POWER10 servers are looking better than x86, hugely more efficient per watt.

Yeah, being an IP clearinghouse will leave them a severely diminished force. That's the type of business that Marvell or Mediatek would buy up and absorb. Fab to the DoD doesn't really live up to their heritage either. They've shown over and over that they don't have it in themselves to make a clean break from the past, and doing so now already starts them from behind the competition-- they don't bring anything of real value to the race.

Evolving x86 to a more efficient architecture under the cover of maintaining legacy compatibility even by hybrid means and the continuity of the Intel Inside branding could give them a new lease on life.

This feels like another place where the institutional arrogance at Intel is going to leave them still trying to turn the existing dials to 11 and pounding on the console until AMD outflanks them with another creative solution though.
 
Last edited:

VivienM

macrumors 6502
Jun 11, 2022
496
341
Toronto, ON
Microsoft will, one day, decide it's not worth the loss of performance to stay with Intel. How long will modern applications take on the cost, power and performance burden of maintaining someone else's legacy needs?
How do you define "modern applications"? For the past decade, maybe more, most new "applications", at least outside the Apple platforms, have been written for Chrome (or Electron, which is basically embedded desktop Chrome). No one writes new, non-web-based desktop software for Windows anymore.

I have never understood why Microsoft has embraced this trend, e.g. with Teams. You'd think Microsoft of all people could write a nice optimized client for Windows, a slightly less optimized one for Mac, etc, instead of just pushing a bloated slow moody piece of trash using Electron.

(Oh, and let's not talk about how they are about to break Outlook for Windows by replacing it with a piece of garbage written in web technologies. Again, one of the main reasons businesses, especially, use Office 365 and Microsoft email is because of the old-fashioned Windows client, its rich ecosystem of "legacy" Windows add-ins, etc. If they are going to throw this away for embedded web garbage, there are lots of other cloud email providers that will give you a slow interface written in web technologies that changes every week...)

If Chrome is the new platform, and Chrome runs on... a lot of things that are not Windows (and things that are cheaper to license than Windows)..., how is this good for Microsoft? The only thing Microsoft's OS business really has going for it is that their OS can run all the software written for Windows on x86 in the past 2-3ish decades. And plug into all the peripherals designed for Windows on x86 in, oh, the last 15 years or so, if not more.

Frankly, I would make a more provocative statement - if Microsoft cared about performance, loss of performance, etc, they wouldn't be in the middle of ripping out their old code that screams on a 2006-era Core 2 Duo and replacing it with embedded Chromiums. If anything, it is the other way around - they are so desperate to sell more licences to Lenovo, HP, Dell & co that they are trying their absolute best to obsolete late-2000s C2Ds, Sandy Bridges, etc that actually continue to be quite functional in the real world. The biggest problem with machines from that era is that they tend not to have enough RAM for modern web stuff... not in an era where each Electron app wants half a gig of RAM or more...
 

jdb8167

macrumors 601
Nov 17, 2008
4,859
4,599
I have never understood why Microsoft has embraced this trend, e.g. with Teams. You'd think Microsoft of all people could write a nice optimized client for Windows, a slightly less optimized one for Mac, etc, instead of just pushing a bloated slow moody piece of trash using Electron.
Since they are working in Edge you would think they have a plan to selectively de-bloat Electron. I get the desire to use the platform but if your app isn’t using the 10,000 different technologies in Chromium, figure out a way to remove them and only keep the stuff you need. JavaScript, HTML rendering, and CSS are probably relatively small parts of the overall package. I’d be happy to be corrected on any of this if anyone has real information on where the Electron bloat comes from.
 

VivienM

macrumors 6502
Jun 11, 2022
496
341
Toronto, ON
Since they are working in Edge you would think they have a plan to selectively de-bloat Electron. I get the desire to use the platform but if your app isn’t using the 10,000 different technologies in Chromium, figure out a way to remove them and only keep the stuff you need. JavaScript, HTML rendering, and CSS are probably relatively small parts of the overall package. I’d be happy to be corrected on any of this if anyone has real information on where the Electron bloat comes from.
Well, they have Edge WebView2 or whatever it's called.. which I believe is a little more efficient than Electron, not that that means that much. They've announced plans to switch Teams to it relatively soon... and they were promising big performance gains which just tells you how bad Electron is.

More importantly, though, why would they have a plan to de-bloat Electron? I don't think anyone other than grumpy old folks like me see its bloat as a problem. And it gets even more ridiculous on Apple Silicon - I've noticed all the Intel apps left on my Mac are Electron, which is highly ironic since Electron apps should be the easiest to port to Apple Silicon. But anyone whose brain function is so challenged that they think Electron is a good idea... clearly doesn't see any problem with running in Rosetta 2. Oh, how I regret having adopted Authy...
 
Register on MacRumors! This sidebar will go away, and you'll see fewer ads.