Hello. So what's the deal with computer chips? Let's say, for example, that I wanted to build a brand new Sega Genesis. Ignoring firmware and software, what's stopping me from dissecting their proprietary chips and reverse-engineering them to make new ones? It's just electric connections and such inside, isn't it? If I match the pin ins and outs, shouldn't it be easy? So why don't people do it?
The answer is that people totally used to do this, there's several examples of chips being cloned and used to build compatible third-party hardware, the most famous two examples being famiclones/NESclones and Intel 808X clones.
AMD is now a major processor manufacturer, but they took off in the 70's by reverse-engineering Intel's 8080 processor. Eventually they were called in to officially produce additional 8086 chips under license to meet burgeoning demand for IBM PC's, but that was almost a decade later if I remember correctly.
There were a ton of other 808X clones, like the Soviet-made pin-compatible K1810VM86. Almost anyone with a chip fab was cloning Intel chips back in the 80's, a lot of it was in the grey area of reverse engineering the chips.
Companies kept cloning Intel processors well into the 386 days, but eventually the processors got too complicated to easily clone, and so only companies who licensed designs could make them, slowly reducing the field down to Intel, AMD, and Via, who still exist! Via's CPU division currently works on the Zhaoxin x86_64 processors as part of the ongoing attempts to homebrew a Chinese-only x86 processor.
I wrote about NES clones a while ago, in less detail, so here's that if you want to read it:
Early famiclones worked by essentially reverse-engineering or otherwise cloning the individual chips inside an NES/famicom, and just reconstructing a compatible device from there. Those usually lacked any of the DRM lockout chips built into the original NES, and were often very deeply strange, with integrated clones of official peripherals like the keyboard and mouse simply hardwired directly into the system.
These were sold all over the world, but mostly in developing economies or behind the Iron Curtain where official Nintendo stuff was harder to find. I had a Golden China brand Famiclone growing up, which was a common famiclone brand around South Africa.
Eventually the cost of chip fabbing came down and all those individual chips from the NES were crammed onto one cheap piece of silicon and mass produced for pennies each, the NES-on-a-chip. With this you could turn anything into an NES, and now you could buy a handheld console that ran pirated NES game for twenty dollars in a corner store. In 2002. Lots of edutainment mini-PC's for children were powered by these, although now those are losing out to Linux (and now Android) powered tablets a la Leapfrog.
Nintendo's patents on their hardware designs expired throughout the early 2000's and so now the hardware design was legally above board, even if the pirated games weren't. You can still find companies making systems that rely on these NES chips, and there are still software houses specializing in novel NES games.
Why doesn't this really happen anymore? Well, mostly CPU's and their accoutrements are too complicated. Companies still regularly clone their competitors simpler chips all the time, and I actually don't know if Genesis clones exist, it's only a Motorola 68000k, but absolutely no one is cloning a modern Intel or AMD processor.
The die of a Motorola 68000 (1979)
A classic Intel 8080 is basically the kind of chip you learn about in entry level electrical engineering, a box with logic gates that may be complicated, but pretty straightforwardly fetches things from memory, decodes, executes, and stores. A modern processor is a magic pinball machine that does things backwards and out of order if it'll get you even a little speedup, as Mickens puts it in The Slow Winter:
I think that it used to be fun to be a hardware architect. Anything that you invented would be amazing, and the laws of physics were actively trying to help you succeed. Your friend would say, “I wish that we could predict branches more accurately,” and you’d think, “maybe we can leverage three bits of state per branch to implement a simple saturating counter,” and you’d laugh and declare that such a stupid scheme would never work, but then you’d test it and it would be 94% accurate, and the branches would wake up the next morning and read their newspapers and the headlines would say OUR WORLD HAS BEEN SET ON FIRE. You’d give your buddy a high-five and go celebrate at the bar, and then you’d think, “I wonder if we can make branch predictors even more accurate,” and the next day you’d start XOR’ing the branch’s PC address with a shift register containing the branch’s recent branching history, because in those days, you could XOR anything with anything and get something useful, and you test the new branch predictor, and now you’re up to 96% accuracy, and the branches call you on the phone and say OK, WE GET IT, YOU DO NOT LIKE BRANCHES, but the phone call goes to your voicemail because you’re too busy driving the speed boats and wearing the monocles that you purchased after your promotion at work. You go to work hung-over, and you realize that, during a drunken conference call, you told your boss that your processor has 32 registers when it only has 8, but then you realize THAT YOU CAN TOTALLY LIE ABOUT THE NUMBER OF PHYSICAL REGISTERS, and you invent a crazy hardware mapping scheme from virtual registers to physical ones, and at this point, you start seducing the spouses of the compiler team, because it’s pretty clear that compilers are a thing of the past, and the next generation of processors will run English-level pseudocode directly.
Die shot of a Ryzen 5 2600 core complex (2019)
Nowadays to meet performance parity you can't just be pin-compatible and run at the right frequency, you have to really do a ton of internal logical optimization that is extremely opaque to the reverse engineer. As mentioned, Via is making the Zhaoxin stuff, they are licensed, they have access to all the documentation needed to make an x86_64 processor, and their performance is still barely half of what Intel and AMD can do.
Companies still frequently clone each others simpler chips, charge controllers, sensor filters, etc. but the big stuff is just too complicated.
183 notes
·
View notes