{"id":81378,"date":"2025-03-18T10:00:58","date_gmt":"2025-03-18T14:00:58","guid":{"rendered":"http:\/\/pappp.net\/?guid=ed01a23f2054f16bc879c467a73b5e78"},"modified":"2025-03-18T10:00:58","modified_gmt":"2025-03-18T14:00:58","slug":"checking-in-on-the-isa-wars-and-its-impact-on-cpu-architectures","status":"publish","type":"post","link":"https:\/\/pappp.net\/?p=81378","title":{"rendered":"Checking In On the ISA Wars and Its Impact on CPU Architectures"},"content":{"rendered":"<p class=\"syndicated-attribution\">Source: <a href=\"https:\/\/hackaday.com\/2025\/03\/18\/checking-in-on-the-isa-wars-and-its-impact-on-cpu-architectures\/\">Hack a Day<\/a><\/p>\n<div style=\"background-color : #fff7d5;\n\t\t\tborder-width : 1px; padding : 5px; border-style : dashed; border-color : #e7d796;margin-bottom : 1em; color : #9a8c59;\">Article note: This is a nice set of links\/explanation that mostly matches my take on why RISC-V isn't really working out, explained in that critical post-ISA lens that a lot of pieces miss despite it being the status quo for close to 30 years.\nBunch of questionable design decisions in the ISA, PLUS way too much divergence to make the toolchain situation tractable... which is the only way in which ISAs are still relevant.<\/div><div><img src=\"https:\/\/hackaday.com\/wp-content\/uploads\/2017\/10\/computers.jpg?w=800\" alt=\"\" decoding=\"async\" loading=\"lazy\" srcset=\"https:\/\/hackaday.com\/wp-content\/uploads\/2017\/10\/computers.jpg 3000w,https:\/\/hackaday.com\/wp-content\/uploads\/2017\/10\/computers.jpg?resize=250,151 250w,https:\/\/hackaday.com\/wp-content\/uploads\/2017\/10\/computers.jpg?resize=400,242 400w,https:\/\/hackaday.com\/wp-content\/uploads\/2017\/10\/computers.jpg?resize=800,484 800w,https:\/\/hackaday.com\/wp-content\/uploads\/2017\/10\/computers.jpg?resize=1536,929 1536w,https:\/\/hackaday.com\/wp-content\/uploads\/2017\/10\/computers.jpg?resize=2048,1239 2048w,https:\/\/hackaday.com\/wp-content\/uploads\/2017\/10\/computers.jpg 3000w,https:\/\/hackaday.com\/wp-content\/uploads\/2017\/10\/computers.jpg?resize=250,151 250w,https:\/\/hackaday.com\/wp-content\/uploads\/2017\/10\/computers.jpg?resize=400,242 400w,https:\/\/hackaday.com\/wp-content\/uploads\/2017\/10\/computers.jpg?resize=800,484 800w,https:\/\/hackaday.com\/wp-content\/uploads\/2017\/10\/computers.jpg?resize=1536,929 1536w,https:\/\/hackaday.com\/wp-content\/uploads\/2017\/10\/computers.jpg?resize=2048,1239 2048w\" sizes=\"auto, (max-width: 800px) 100vw, 800px\" referrerpolicy=\"no-referrer\"\/><\/div><p>An Instruction Set Architecture (ISA) defines the software interface through which for example a central processor unit (CPU) is controlled. Unlike early computer systems which didn&rsquo;t define a standard ISA as such, over time the compatibility and portability benefits of having a standard ISA became obvious. But of course the best part about standards is that there are so many of them, and thus every CPU manufacturer came up with their own.<\/p>\n<p>Throughout the 1980s and 1990s, the number of mainstream ISAs dropped sharply as the computer industry coalesced around a few major ones in each type of application. Intel&rsquo;s x86 won out on desktop and smaller servers while ARM proclaimed victory in low-power and portable devices, and for Big Iron you always had IBM&rsquo;s Power ISA. Since we <a href=\"https:\/\/hackaday.com\/2019\/11\/12\/risc-v-why-the-isa-battles-arent-over-yet\/\" rel=\"noopener noreferrer\">last covered the ISA Wars<\/a> in 2019, quite a lot of things have changed, including <a href=\"https:\/\/hackaday.com\/2020\/07\/13\/changing-system-architectures-and-the-complexities-of-apples-butterfly-approach-to-isas\/\" rel=\"noopener noreferrer\">Apple shifting its desktop systems to ARM<\/a> from x86 with Apple Silicon and finally MIPS experiencing an afterlife in&nbsp; the form of LoongArch.<\/p>\n<p>Meanwhile, six years after the aforementioned ISA Wars article in which newcomer RISC-V was covered, this ISA seems to have not made the splash some had expected. This raises questions about what we can expect from RISC-V and other ISAs in the future, as well as how relevant having different ISAs is when it comes to aspects like CPU performance and their microarchitecture.<\/p>\n<p><span><\/span><\/p>\n<h2>RISC Everywhere<\/h2>\n<p>Unlike in the past when CPU microarchitectures were still rather in flux, these days they all seem to coalesce around a similar set of features, including out-of-order execution, prefetching, superscalar parallelism, speculative execution, branch prediction and multi-core designs. Most of the performance these days is gained from addressing specific bottlenecks and optimization for specific usage scenarios, which has resulted in such things like simultaneous multithreading&nbsp; (SMT) and various pipelining and instruction decoder designs.<\/p>\n<p>CPUs today are almost all what in the olden days would have been called RISC (reduced instruction set computer) architectures, with a relatively small number of heavily optimized instructions. Using approaches like register renaming, CPUs can handle many simultaneous threads of execution, which for the software side that talks to the ISA is completely invisible. For the software, there is just the one register file, and unless something breaks the illusion, like when speculative execution has a bad day, each thread of execution is only aware of its own context and nothing else.<\/p>\n<p>So if CPU microarchitectures have pretty much merged at this point, what difference does the ISA make?<\/p>\n<h2>Instruction Set Nitpicking<\/h2>\n<p><a href=\"https:\/\/hackaday.com\/wp-content\/uploads\/2023\/04\/risc5-esp32-c3-featured.jpg\"  rel=\"noopener noreferrer\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/hackaday.com\/wp-content\/uploads\/2023\/04\/risc5-esp32-c3-featured.jpg?w=250\" alt=\"\" srcset=\"https:\/\/hackaday.com\/wp-content\/uploads\/2023\/04\/risc5-esp32-c3-featured.jpg 600w,https:\/\/hackaday.com\/wp-content\/uploads\/2023\/04\/risc5-esp32-c3-featured.jpg?resize=250,250 250w,https:\/\/hackaday.com\/wp-content\/uploads\/2023\/04\/risc5-esp32-c3-featured.jpg?resize=400,400 400w,https:\/\/hackaday.com\/wp-content\/uploads\/2023\/04\/risc5-esp32-c3-featured.jpg 600w,https:\/\/hackaday.com\/wp-content\/uploads\/2023\/04\/risc5-esp32-c3-featured.jpg?resize=250,250 250w,https:\/\/hackaday.com\/wp-content\/uploads\/2023\/04\/risc5-esp32-c3-featured.jpg?resize=400,400 400w\" sizes=\"auto, (max-width: 250px) 100vw, 250px\" referrerpolicy=\"no-referrer\"\/><\/a>Within the world of ISA flamewars, the battle lines have currently mostly coalesced around topics like the pros and cons of delay slots, as well as those of compressed instructions, and setting status flags versus checking results in a branch. It is incredibly hard to compare ISAs in an apple-vs-apples fashion, as the underlying microarchitecture of a commercially available ARMv8-based CPU will differ from a similar x86_64- or RV64I- or RV64IMAC-based CPU. Here the highly modular nature of RISC-V adds significant complications as well.<\/p>\n<p>If we look at where RISC-V is being used today in a commercial setting, it is primarily as simple embedded controllers where this modularity is an advantage, and compatibility with the zillion other possible RISC-V extension combinations is of no concern. Here, using RISC-V has an obvious advantage over in-house proprietary ISAs, due to the savings from outsourcing it to an open standard project. This is however also one of the major weaknesses of this ISA, as the lack of a fixed ISA along the pattern of ARMv8 and x86_64 makes tasks like supporting a Linux kernel for it much more complicated than it should be.<\/p>\n<p>This has led Google to <a href=\"https:\/\/hackaday.com\/2024\/05\/03\/google-removes-risc-v-support-from-android\/\" rel=\"noopener noreferrer\">pull initial RISC-V support from Android<\/a> due to the ballooning support complexity. Since every RISC-V-based CPU is only required to support the base integer instruction set, and so many things are left optional, from integer multiplication (M), atomics (A), bit manipulation (B), and beyond, all software targeting RISC-V has to explicitly test that the required instructions and functionality is present, or use a fallback.<\/p>\n<p>Tempers are also <a href=\"https:\/\/news.ycombinator.com\/item?id=30740433\"  rel=\"noopener noreferrer\">running hot<\/a> when it comes to RISC-V&rsquo;s lack of integer overflow traps and <a href=\"https:\/\/stackoverflow.com\/questions\/70999565\/why-does-risc-v-not-have-an-instruction-to-calculate-carry-out\"  rel=\"noopener noreferrer\">carry instructions<\/a>. As for whether compressed instructions are a good idea, the ARMv8 camp does not see any need for them, while the RISC-V camp is happy to defend them, and meanwhile x86_64 still happily uses double the number of instruction lengths courtesy of its CISC legacy, which would make x86_64 twice as bad or twice as good as RISC-V depending on who you ask.<\/p>\n<p>Meanwhile an engineer with strong experience on the ARM side of things <a href=\"https:\/\/gist.github.com\/erincandescent\/8a10eeeea1918ee4f9d9982f7618ef68\"  rel=\"noopener noreferrer\">wrote a lengthy dissertation<\/a> a while back on the pros and cons of these three ISAs. Their conclusion is that RISC-V is &lsquo;minimalist to a fault&rsquo;, with overlapping instructions and no condition codes or flags, instead requiring compare-and-branch instructions. This latter point cascades into a number of compromises, which is one of the major reasons why RISC-V is seen as problematic by many.<\/p>\n<p>In summary, in lieu of clear advantages of RISC-V against fields where other ISAs are already established, its strong points seem to be mostly where its extreme modularity and lack of licensing requirements are seen as convincing arguments, which should not keep anyone from enjoying a good flame war now and then.<\/p>\n<h2>The China Angle<\/h2>\n<figure aria-describedby=\"caption-attachment-767494\"><a href=\"https:\/\/hackaday.com\/wp-content\/uploads\/2025\/03\/Video_uber_den_Loongson_3A6000_%E6%9E%81%E5%AE%A2%E6%B9%BEGeekerwan_44.png\" rel=\"noopener noreferrer\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/hackaday.com\/wp-content\/uploads\/2025\/03\/Video_uber_den_Loongson_3A6000_%E6%9E%81%E5%AE%A2%E6%B9%BEGeekerwan_44.png?w=800\" alt=\"The Loongson 3A6000 (LS3A6000) CPU. (Credit: Geekerwan, Wikimedia)\" srcset=\"https:\/\/hackaday.com\/wp-content\/uploads\/2025\/03\/Video_uber_den_Loongson_3A6000_&#26497;&#23458;&#28286;Geekerwan_44.png 3840w,https:\/\/hackaday.com\/wp-content\/uploads\/2025\/03\/Video_uber_den_Loongson_3A6000_&#26497;&#23458;&#28286;Geekerwan_44.png?resize=250,141 250w,https:\/\/hackaday.com\/wp-content\/uploads\/2025\/03\/Video_uber_den_Loongson_3A6000_&#26497;&#23458;&#28286;Geekerwan_44.png?resize=400,225 400w,https:\/\/hackaday.com\/wp-content\/uploads\/2025\/03\/Video_uber_den_Loongson_3A6000_&#26497;&#23458;&#28286;Geekerwan_44.png?resize=800,450 800w,https:\/\/hackaday.com\/wp-content\/uploads\/2025\/03\/Video_uber_den_Loongson_3A6000_&#26497;&#23458;&#28286;Geekerwan_44.png?resize=1536,864 1536w,https:\/\/hackaday.com\/wp-content\/uploads\/2025\/03\/Video_uber_den_Loongson_3A6000_&#26497;&#23458;&#28286;Geekerwan_44.png?resize=2048,1152 2048w,https:\/\/hackaday.com\/wp-content\/uploads\/2025\/03\/Video_uber_den_Loongson_3A6000_&#26497;&#23458;&#28286;Geekerwan_44.png 3840w,https:\/\/hackaday.com\/wp-content\/uploads\/2025\/03\/Video_uber_den_Loongson_3A6000_&#26497;&#23458;&#28286;Geekerwan_44.png?resize=250,141 250w,https:\/\/hackaday.com\/wp-content\/uploads\/2025\/03\/Video_uber_den_Loongson_3A6000_&#26497;&#23458;&#28286;Geekerwan_44.png?resize=400,225 400w,https:\/\/hackaday.com\/wp-content\/uploads\/2025\/03\/Video_uber_den_Loongson_3A6000_&#26497;&#23458;&#28286;Geekerwan_44.png?resize=800,450 800w,https:\/\/hackaday.com\/wp-content\/uploads\/2025\/03\/Video_uber_den_Loongson_3A6000_&#26497;&#23458;&#28286;Geekerwan_44.png?resize=1536,864 1536w,https:\/\/hackaday.com\/wp-content\/uploads\/2025\/03\/Video_uber_den_Loongson_3A6000_&#26497;&#23458;&#28286;Geekerwan_44.png?resize=2048,1152 2048w\" sizes=\"auto, (max-width: 800px) 100vw, 800px\" referrerpolicy=\"no-referrer\"\/><\/a><figcaption>The Loongson 3A6000 (LS3A6000) CPU. (Credit: Geekerwan, <a href=\"https:\/\/commons.wikimedia.org\/wiki\/File:Video_%C3%BCber_den_Loongson_3A6000_(%E6%9E%81%E5%AE%A2%E6%B9%BEGeekerwan)_44.png\"  rel=\"noopener noreferrer\">Wikimedia<\/a>)<\/figcaption><\/figure>\n<p>Although everywhere that is not China has pretty much coalesced around the three ISAs already described, there are always exceptions. Unlike Russia&rsquo;s ill-fated very-large-instruction-word <a href=\"https:\/\/en.wikipedia.org\/wiki\/Elbrus-8S\"  rel=\"noopener noreferrer\">Elbrus<\/a> architecture, China&rsquo;s CPU-related efforts have borne significantly more fruit. Starting with the <a href=\"https:\/\/en.wikipedia.org\/wiki\/Loongson\"  rel=\"noopener noreferrer\">Loongson<\/a> CPUs, China&rsquo;s home-grown microprocessor architecture scene began to take on real shape.<\/p>\n<p>Originally these were MIPS-compatible CPUs. But starting with the 3A5000 in 2021, Chinese CPUs began to use the new LoongArch ISA. Described as being a &lsquo;bit like MIPS or RISC-V&rsquo; in the <a href=\"https:\/\/docs.kernel.org\/arch\/loongarch\/introduction.html\"  rel=\"noopener noreferrer\">Linux kernel documentation<\/a> on this ISA, it features three variants, ranging from a reduced 32-bit version (LA32R) and standard 32-bit (LA32S) to a 64-bit version (LA64). In the current LS3A6000 CPU there are 16 cores with SMT support. In <a href=\"https:\/\/wccftech.com\/china-loongson-3a6000-cpu-review-shows-better-ipc-intel-10th-gen-amd-zen-2-chips\/\"  rel=\"noopener noreferrer\">reviews<\/a> these chips are shown to be rapidly catching up to modern x86_64 CPUs, including when it <a href=\"https:\/\/www.tomshardware.com\/news\/loongson-launches-3a6000-cpu-matches-14600k-ipc\"  rel=\"noopener noreferrer\">comes to overclocking<\/a>.<\/p>\n<p>Of course, these being China-only hardware, few Western reviewers have subjected the LS3A6000, or its upcoming successor the LS3A7000, to an independent test.<\/p>\n<p>In addition to LoongArch, other Chinese companies are using RISC-V for their own microprocessors, such as <a href=\"https:\/\/en.wikipedia.org\/wiki\/SpacemiT\"  rel=\"noopener noreferrer\">SpacemiT<\/a>, an AI-focused company, whose products also include more generic processors. This includes the K1 octa-core CPU which saw use in the <a href=\"https:\/\/www.tomshardware.com\/laptops\/chinese-startup-launching-risc-v-laptop-for-devs-and-engineers-priced-at-around-dollar300\"  rel=\"noopener noreferrer\">MuseBook<\/a> laptop. As with all commercial RISC-V-based cores out today, this is no speed monsters, and even the SiFive Premier P550 SoC gets <a href=\"https:\/\/www.tomshardware.com\/maker-stem\/rp2040-boards\/hifive-premier-p550-review\"  rel=\"noopener noreferrer\">soundly beaten<\/a> by even a Raspberry Pi 4&rsquo;s already rather long-in-the-tooth ARM-based SoC.<\/p>\n<p>Perhaps the most successful use of RISC-V in China are the cores in Espressif&rsquo;s popular ESP32-C range of MCUs, although here too they are the lower-end designs relative to the Xtensa Lx6 and Lx7 cores that power Espressif&rsquo;s higher-end MCUs.<\/p>\n<p>Considering all this, it wouldn&rsquo;t be surprising if China&rsquo;s ISA scene outside of embedded will feature mostly LoongArch, a lot of ARM, some x86_64 and a sprinkling of RISC-V to round it all out.<\/p>\n<h2>It&rsquo;s All About The IP<\/h2>\n<p>The distinction between ISAs and microarchitecture can be clearly seen by contrasting Apple Silicon with other ARMv8-based CPUs. Although these all support a version of the same ARMv8 ISA, the magic sauce is in the <a href=\"https:\/\/en.wikipedia.org\/wiki\/Semiconductor_intellectual_property_core\"  rel=\"noopener noreferrer\">intellectual property<\/a> (IP) blocks that are integrated into the chip. These range from memory controllers, PCIe SerDes blocks, and integrated graphics (iGPU), to encryption and security features. Unless you are an Apple or Intel with your own GPU-solution, you will be licensing the iGPU block along with other IP blocks from IP vendors.<\/p>\n<p>These IP blocks offer the benefit of being able to use off-the-shelf functionality with known performance characteristics, but they are also where much of the cost of a microprocessor design ends up going. Developing such functionality from scratch can pay for itself if you reuse the same blocks over and over like Apple or Qualcomm do. For a start-up hardware company this is one of the biggest investments, which is why they tend to license a fully manufacturable design from Arm.<\/p>\n<p>The actual cost of the ISA in terms of licensing is effectively a rounding error, while the benefit of being able to leverage existing software and tooling is the main driver. This is why a new ISA like LoongArch may very well pose a real challenge to established ISAs in the long run, beacause it is being given a chance to develop in a very large market with guaranteed demand.<\/p>\n<h2>Spoiled For Choice<\/h2>\n<p>Meanwhile, the <a href=\"https:\/\/en.wikipedia.org\/wiki\/OpenPOWER_Foundation\"  rel=\"noopener noreferrer\">Power ISA<\/a> is also freely available for anyone to use without licensing costs; the only major requirement is compliance with the Power ISA. The OpenPOWER Foundation is now also <a href=\"https:\/\/openpower.foundation\/blog\/the-next-step-in-the-openpower-foundation-journey\/\"  rel=\"noopener noreferrer\">part of the Linux Foundation<\/a>, with a range of IBM Power cores open sourced. These include the <a href=\"https:\/\/en.wikipedia.org\/wiki\/IBM_A2\"  rel=\"noopener noreferrer\">A2O core<\/a> that&rsquo;s based on the A2I core which powered the XBox 360 and Playstation 3&rsquo;s Cell processor, as well as the <a href=\"https:\/\/en.wikipedia.org\/wiki\/OpenPOWER_Microwatt\"  rel=\"noopener noreferrer\">Microwatt reference design<\/a> that&rsquo;s based on the much newer Power ISA 3.0.<\/p>\n<p>Whatever your fancy is, and regardless of whether you&rsquo;re just tinkering on a hobby or commercial project, it would seem that there is plenty of diversity in the ISA space to go around. Although it&rsquo;s only human to pick a favorite and favor it, there&rsquo;s something to be said for each ISA. Whether it&rsquo;s a better teaching tool, more suitable for highly customized embedded designs, or simply because it runs decades worth of software without fuss, they all have their place.<\/p>","protected":false},"excerpt":{"rendered":"<p>An Instruction Set Architecture (ISA) defines the software interface through which for example a cen&#8230;<\/p>\n<p> <a href=\"https:\/\/pappp.net\/?p=81378\">Continue reading <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[226],"tags":[],"class_list":["post-81378","post","type-post","status-publish","format-standard","hentry","category-news-2"],"_links":{"self":[{"href":"https:\/\/pappp.net\/index.php?rest_route=\/wp\/v2\/posts\/81378","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/pappp.net\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/pappp.net\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/pappp.net\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/pappp.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=81378"}],"version-history":[{"count":0,"href":"https:\/\/pappp.net\/index.php?rest_route=\/wp\/v2\/posts\/81378\/revisions"}],"wp:attachment":[{"href":"https:\/\/pappp.net\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=81378"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/pappp.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=81378"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/pappp.net\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=81378"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}