Had RISC-V not been born, MIPS wouldn't have made this announcement.
Had RISC-V not been born, MIPS wouldn't have made this announcement.
RISC-V may have hastened its demise, but the writing was on the wall for a long time.
https://www.jwhitham.org/2016/02/risc-instruction-sets-i-hav...
Sun opened the SPARC T2 a decade ago, and it certainly has not become popular:
https://www.oracle.com/technetwork/systems/opensparc/openspa...
It does seem that RISC-V corrects a number of these design eccentricities. SPARC did not move the market an inch with an open release - perhaps MIPS will fail just as spectacularly.
Future iterations of MIPS can be governed by a multi-stakeholder community, avoiding past mistakes and designing for future requirements, including AI/ML and other domain-specific use cases.
> Security and Hardening by Steven Barth - OpenWrt Summit
> Introducing new and ongoing security improvements to bleeding edge OpenWrt. This talk describes the new default toolchain featuring musl libc, enabled hardening including ASLR, SSP as well as OpenWrt's novel jailing (jailfs and seccomp) and package signing features (based on Curve25519).
> https://www.youtube.com/watch?v=DNYvIrI5Bbs
On the other hand, OpenWrt implemented full system-wide ASLR recently. NX and jailfs is still a WIP.
SPARC is beyond crazy (esp. with its delays), ARM hopelessly balkanized, Intel more than crazy, RISC-V immature. POWER is the only other pretty good assembly ISA, but too expensive.
The worst MIPS problem is the softfloat compiler crazyness (executable stack), but that's a gcc/binutils sin from a decade ago.
???
I disagree. I'm not really a MIPS user, but I've managed to encounter some branch delay slot issues, and, as an x86 system programmer, I can only imagine how unpleasant they must be. Here are some reasons:
- The program counter does not adequately describe the execution state of the CPU. In other words, starting or resuming execution with a given set of register values and a given address will do the wrong thing if you're resuming in a branch delay slot.
- Handling a fault due to an instruction in a branch delay slot seems highly problematic. Suppose you have a load in a delay slot and the load touches swapped-out memory. How is the operating system supposed to page in that memory and resume?
- Linux, and probably other operating systems, will emulate FPU instructions if the CPU doesn't support them. Emulating FPU branch instructions is deeply problematic because of delay slots.
The third one I imagine is a pain in the ass, but I've been lucky enough to always compile MIPS for the exact CPU I was running it on.
You have to make sure you can map two pages at once in case the branch/delay pair straddles a TLB boundary, but you have to screw up pretty bad to not allow that.
If you try this on hardware that also supports software single stepping (which x86 does, but MIPS seems not to by default), then you have to be extra creative to guarantee forward progress. The same issue arises if you have data breakpoints. And if the branch loads from MMIO space, you have a problem.
One is basically necessary to get decent code density (and thus better cache utilisation and memory bandwidth minimisation, something that x86 was winning at for a long time --- and one of the worst parts of traditional RISC), the other is purely syntactic sugar (see the horrible GAS/AT&T syntax) and an order which I find most sensible (especially considering comparison and subtraction, as well as the direction of the assignment operator in the majority of programming languages that exist.)
I'm not saying it would have become any more popular without this, but the fact that Oracle purchased Sun probably didn't help adoption here, at all.
At least with luck those features are coming to ARM v8.3+ as well.
What do you mean? That it includes protection modes which make C "safe"?
https://swisdev.oracle.com/_files/What-Is-ADI.html
https://swisdev.oracle.com/_files/M7_Preso.pdf
This is enabled by default in Solaris since version 11.
"Secure Software - Made Simple with Software in Silicon"
https://www.youtube.com/watch?v=krOhcjF5Fsw
https://lazytyped.blogspot.com/2016/12/hardware-buffer-overf...
ARM v8.5 memory tagging extensions aims to try to achieve parity with it.
https://www.youtube.com/watch?v=IbisEjzoxTY
Google is planning to make use of them on the native layer of Android when they eventually became available.
Meanwhile Intel has decided to remove MPX from x86/x64 because no one is adopting them on Intel/AMD CPUs.
EDIT: Got the ARM version wrong.
https://news.ycombinator.com/item?id=18705340
You need to be a bit comfortable with Solaris and enterprise web sites to dig it out.
In all likelihood, MIPS would have changed hands a few more times then been shelved indefinitely by an ultimate licensor that saw no further value in it.
In any case it's good news - MIPS support in Linux is already fairly decent so having multiple, credible open-source vendors in the space should be good for competition and adoption.
The people who think "there's still time" completely misread the situation. Same with the "maturity" argument.
None of these plans are a surprise to anyone. MIPS has been working on this for quite a while.
Yet they have exactly zero announcement partners saying they plan on doing something with it.
That's because none of them care at this point.
(Also, it will take a year or two before any of this is real in a way a partner might be able to use/contribute to/care about etc)
The only meaningful thing that will happen here is people will try to use it to leverage the stuff they want out of risc-v to happen.
I'm very biased against companies/tech projects that go open source as a last ditch attempt to stay in competition when it's clear that an open source solution is gaining steam/mindshare -- it always seems disingenuous.
I have no way of knowing of course, but if MIPS simply went open source but don't actually think the same way RISC-V does, then they might lure enthusiasts that would have worked on RISC-V. That's the point I hoped to make -- if the result is fragmentation and slowed progress on RISC-V because of a muddying of the waters as to who thinks what about F/OSS then that is a bad outcome in my eyes.
> Linley Gwennap, principal analyst at the Linley Group, told EE Times, “MIPS is certainly behind RISC-V in mindshare in the open-source community.” He noted that MIPS was “unable to make this move sooner due to its various ownership transitions.”
Just minus a lot of the "legacy baggage"
https://stackoverflow.com/questions/27893526/mips-are-some-a...
> Programming Notes:
> In some processors the integer multiply operation may proceed asynchronously and allow other CPU instructions to execute before it is complete. An attempt to read LO or HI before the results are written interlocks until the results are ready. Asynchronous execution does not affect the program result, but offers an opportunity for performance improvement by scheduling the multiply so that other instructions can execute in parallel. Programs that require overflow detection must check for it explicitly.
> Where the size of the operands are known, software should place the shorter operand in GPR rt. This may reduce the latency of the instruction on those processors which implement data-dependent instruction latencies.
(MIPS32TM Architecture For Programmers Volume II: The MIPS32TM Instruction Set, mul / mult instrutions)
It's... a bit more low-level than assembly ISAs are typically designed to be these days.
More important is the lack of a branch delay slot (i.e. it doesn't bake in a particular pipeline stage design into the ISA), and the existence of hardware paging (MIPS tried to cheat here by letting software handle page faults, and in hindsight made a poor decision).
Pre-R6 MIPS cores have the MUL instruction which hide the usage of the HI/LO registers, but do clobber those registers.
It's just a pain and adds complexity to exactly the parts that are hardest to get right as it is. For instance the state unwinding on hardware exceptions and the like.
IIRC nanomips(?) doesn't have delay slots either?
However it would be wrong to say it just, removed baggage, it also has and will add a lot of interesting ideas.
They also spend a lot of time fiddling with details, how small you can make the decoder, op code layout for a modular design, how to avoid backing micro-architecture decisions into the ISA.
I guess the thing that has put me off of RISCV is The emphasis on for peripherals, they’re just doesn’t seem to be a lot. Yeah, there’s a peripheral bus, And I’m sure it works great but…
This is where I could see MIPS going open source to have a serious advantage. There are people out there that already have experience with how MIPS peripherals should work.