The Lexra/MIPS Story
probell.com
probell.com
There is creativity involved and the original inventors should get due credit but not to the point of being able to sue an equally good competitor with equally good inventors into oblivion. Everyone is worse off because of what happened here.
And the value of the patent isn't "giving inventors credit" but instead enabling a particular sort of business model: the R&D-only company. None of the companies discussed in the article: MIPS, Lexra, and ARM, would exist without IP protection. They'd never make any money if companies could just copy their designs for free. The only viable model would be to vertically integrate and build complete processors like Intel does. And that probably would've made it impossible to build up the rich ecosystem of compatible cores that you see with ARM.
I also did not say there shouldn't be limited forms of protection to enable the license based business model but being able to outmaneuver your competitor legally instead of through proper design and engineering is why progress is hampered and why the patent model is fundamentally broken.
In particular, R&D is expensive. If patents in hardware don't exist, it's going to be much harder for investors to justify putting in the tens or hundreds of millions of dollars that it takes to start a modern tech company. No patents mean that investment in innovation makes much less sense for startups and small companies, because larger players can use their larger resources and deeper relationships to copy that innovation and crush the innovators.
Another way to look at it: sure, the current system has bad outcomes. But so did the previous system, one without patents. That's why we invented patents in the first place. If you want to persuade people to change, it's not enough to say, "patents bad". You have to propose an alternative and say why the total outcomes under your system are substantially better than the total outcomes under the status quo.
This goes back to what I've been arguing in this thread. The design space is very limited and the mathematical, physical, axiomatic nature of the field means there are only so many things you can actually design and implement and as soon as it is implemented everyone else can trace back the design to first principles.
As for R&D. Many of the best innovation in computers came from publicly funded projects. So I don't think the commercial nature of modern computing is actually helping anything. We had a system that worked and it was replaced by what we have now. I could just point people to historical precedent but we all know how well that works.
Slight nit-pick: they actually can, when a company acquires knowledge of another's trade secrets through underhanded means.
I was using "capitalism" by its common meaning. I understand there are fantasy versions of capitalism that might be different.
> Many of the best innovation in computers came from publicly funded projects. So I don't think the commercial nature of modern computing is actually helping anything.
Basic innovation is wildly different than commercialization. I'm a big fan of publicly funded basic research. But going from a scientific discovery to a commercially usable technology is a) often very expensive, and b) not something that academia is good at.
Personally, I think commercial investment helps quite a bit. Look at the wave of mobile hardware innovation we've seen in the decade since the iPhone came out. That took tens of billions of R&D dollars, and investors and shareholders don't put up that kind of money without expecting to get it back.
I also was not arguing for replacing one system with another since that never works out. The new thing ends up being as bad as the old thing but slightly different. I'm arguing for more stringent requirements for patents and higher bars for suing someone based on patent infringement claims. That already goes a long way towards preventing patent abuse.
> shareholders don't put up that kind of money without expecting to get it back.
Therein lies the problem and what I mean by "short term business thinking". MIPS investors could have settled for getting back much less money for their investment but instead they chose the greedy approach and we collectively ended up worse off.
You seem to have an unconventional definition of the word. Again, I am using the common definition: https://en.wikipedia.org/wiki/Capitalism
That said, I'm actually fine with a higher bar for patents.
> MIPS investors could have settled for getting back much less money for their investment but instead they chose the greedy approach and we collectively ended up worse off.
Could you show your math here? I can't find any evidence that MIPS in this incarnation actually returned money to investors. When SGI spun it out, it looks like its market cap was somewhere north of $300m. Eventually it was bought for $100m. I can't find any record of a dividend in between.
I also am not sure you understand how venture capital works. As an asset class, VC doesn't do much better than other investments. The absurdly great hits (e.g., Google) pay for the 80% of companies that don't make it. Without taking the very big payouts on the few successes, it's not clear to me who would put money into VC funds. A lot of their money comes from pension funds, school endowments and the like; those people have long-term obligations to meet. So how do you propose to maintain significant levels of venture funding if it returns "much less money" than it does now?
You seem to think there needs to be a solution to this that somehow maintains the status quo of VC funded ventures. I personally don't. You're welcome to come up with a solution. I'm not the one to brainstorm it with.
And MIPS of course wasn't "doomed from the start". The nature of investment is that there are no sure things. Many good bets don't pay off.
I don't particularly care about VC. I care a lot about investment in technological innovation. Your initial claim was that "we'd be much further along" without patents and greed. I'm saying that I don't think that's the case, because patents and greed are two parts of the mechanism by which we move further along.
If you have an alternative that will actually get us "further along", I'm all ears. Feel free to tell us how you'd achieve similar or greater levels of funding in a better world, preferably with some actual numbers. But without that, it sounds like you're just carping.
I don't understand why these cases weren't immediately thrown out as the garbage they were. MIPS wasn't a mega-corp like Samsung or Apple which can bring lots of pressure on the system. Why did the court make such a boneheaded decision on appeal?
These are very different things. The software fault handler doesn't even do unaligned loads, naturally.
Which is, of course, fucking insane, but nobody seems to want to act on that.
The Oracle v Google trial ended up there thanks to the patent claims Oracle raised. If you've read their decision in that case it doesn't matter if you believe APIs should be copyrighted... the decision is incompetently written on its face.
The appeal was never decided. The patent was invalidated at the USPTO. That decision was appealed. Meanwhile, MIPS got a favorable trial ruling, and the whole thing settled before the Federal Circuit heard the appeal.
I was thinking the I.P. might still be useful depending on acquirer until I saw the name: MIPS Technologies Inc. (sighs) I doubt they'll play ball. So, now I think of using its tricks in a RISC-V CPU instead. ;)
Instead the industry opted to go with smaller and smaller features which led to skyscraper interconnects that act as much like transmission lines as wires, with deep pipelines and large areas of the chip devoted to branch prediction, large percentages of chip area devoted to cache, niche processing units like GPUs on-chip rather than general purpose DSP for multiprocessing, obfuscated microcode rather than RISC, just layers and layers of cruft that were driven more by demands for single-threaded performance and low power consumption than innovation for its own sake.
So it shouldn’t be any real surprise that Moore’s law died somewhere around 2005, give or take. Computers today are still the 3 MHz they were then, transistor counts have gone up but real-world performance has increased mostly due to faster DDR and SSD, not faster cores. To get an idea of how far behind CPUs have fallen, just look at the throughput of any video card vs, say, a Core i7. We’re talking 3 orders of magnitude better performance for GPUs, about what a decade and a half of compounded transistor count for a multicore architecture would predict.
So it saddens me that there never really were other competitors to CISC for consumers. I wonder if something like an ARM or AMD with a MIPS instruction set aiming for more cores like the Teraflops or Kilocore that ran OpenGL (and TensorFlow and other AI libs had they existed) natively might have done for computing back in the day. But it was a strange time in history after the Dot Bomb. The carpet got pulled out of research at a time when it was perhaps needed most. Everyone had to pull themselves up by their bootstraps and we all became entrepreneurs instead of engineers.
Maybe that’s a good thing, maybe it’s not, I don’t really know. But I do know that we’ve had about a 15 year setback in computing and we are roaming the desert of informal methods on some kind of walkabout or vision quest to see where it’s all headed. Personally, I don’t see any future here if we don’t fix the fundamental problems in patents and intellectual property. It’s fun and everything to be hip about technology but at the end of the day someone has to push the state of the art forward.
I know precisely what I want: as many general purpose cores as possible running as fast as possible with a self-organizing interconnect to as many other computers as possible so I can run the simulations I thought we’d be running by now. I want a stream to that computer, no fancy libraries in my way, no proprietary OS. I want to program it with MATLAB, Erlang, Go, Clojure Haskell, Scala, etc etc etc. I don’t want CUDA, I don’t want to have to lease time from the cloud, I don’t want to have to depend on the largess of billion dollar companies’ research programs to innovate in AI. I may have forgotten the details of how to achieve these things but I haven’t forgotten the original dream of ever-cheaper transistors giving every person access to a supercomputer and eventually R2D2. We’ve scaled data but we simply haven’t scaled processing.
And main thing that seems to be required for general purpose computing is binary compatibility, which can be done almost for free on CISC designs while it makes RISC designs into complex nests of special cases.
Micro architectures that are not designed to directly execute user code (GPUs and such) do not have this problem and thus can do anything that makes the hardware go fast regardless of whether the resulting ISA looks sensible and whether it can be implemented in any other way (eg. drop pipeline stalls and forwarding paths, have separate register set for each execution unit...).
Another thing that limits general purpose CPUs is multitasking as it requires context-switches to be reasonably cheap, which means reasonably small and accessible architectural state (ie. not hundreds of architectural registers).
Also, TIMI is probably not good example of how to implement high performance ISA abstraction as it's about abstraction first and performance second. Transmeta's x86 CPUs and things like HP Dynamo have better approach to this problem.
Essentially, the idea is to move all the CISC stuff out to software, and do VLIW internally. That could possibly help?
I think the best way forward is to tightly integrate simple rigidly multi-threaded processors (where the stages of the pipeline ARE the threads - barrel processing) into the memory itself. Screw all the caching, interconnect, branch prediction, etc. - what has is done for us lately?
What have the Romans ever done for us?
- caching: better performance; performance critical code is mostly memory constrained (your CPU is waiting for stuff), so huge caches are huuuge. I think "cache-friendly" code is one of the most important features in code for modern HW.
- branch prediction: again, performance; low-level code is filled with branches that check for mostly unlikely, but nevertheless critical events; if I am correct modern designs go many miles to achieve a high prediction-score
However I agree with you that a different approach might be a good idea that is maybe more useful for modern languages.
> [...] is to tightly integrate simple rigidly multi-threaded processors [...]
AFAIK this has been tried, but the "integrating" or connecting is far from trivial. I've read about a newish design called the Mill (it was on HN some years ago) and it sounded really interesting. Actually, I have to check how far they progressed, last time it was still not production ready and in simulation stage.
//edit: http://millcomputing.com
> I wonder if something like an ARM or AMD with a MIPS instruction set aiming for more cores like the Teraflops or Kilocore that ran OpenGL (and TensorFlow and other AI libs had they existed) natively might have done for computing back in the day.
Intel tried to replace the GPU by lots of cores in the Larrabee project. This project was not as successful as imagined. It was realigned and the result is the Xeon Phi.
This is wrong. Intel owns patents which protect the Itanium ISA. Non-Intel Itanium implementations would infringe on the patents, not that anyone would want to make one.
Hitachi still has patents on SH4 (though they expire this year). IBM has patents on POWER8. Oracle and Fujitsu have patents on SPARC. etc.
Incidentally, I believe HP also owns some of the Itanium patents.
Can you really patent a list of instructions?
I worked on an x86 clone 20 years back, we analysed Intel's patents in depth to make sure we were safe, the biug one for us was Intel's segmentation/MMU patent - they essentially had patented segmentation followed by (unrelated) mmu processing - there was obvious prior art (cough 360, cough) but that's a bit of crap shoot, I came up with a brilliant way around this, only to discover a patent from someone else in the process of doing an x86 clone (Exponential I think). In the end we conflated our segmentation hardware and our TLBs effectively bypassing the core of Intel's patent
You can't patent a list of instructions, you can copyright a bunch of mnemnomics
> Though you can not patent an instruction set, you can patent machines and methods that are necessary to implement a particular unusual instruction that is part of the instruction set. That legally blocks competitors from creating a fully compatible clone of your processor.
The author is making a very clear and correct distinction.
It continues:
> There are four instructions in the MIPS-I instruction set that were protected by one US patent, 4,814,976. These instructions, lwl, lwr, swl, and swr are known as the unaligned load and store instructions.