0

I feel like the computer market would be a lot better off if it was more feasible for smaller companies to produce processors; the main limitation that I see, is that they'd have to get a license to use x86 in order for any apps to work on it. I'm not sure why an os couldn't have a cpu device driver, that implements the x86 instruction set, and simply translates it into the appropriate opcodes for the processor it is using.

I know this is actually what intel does in hardware.. internally the processors have a RISC design, with the x86 interface laid on top.. Why can't this be done at a software level? Then to port the os to a new architecture, only the device driver needs to be written, and all normal x86 apps will work.

Would it just be too slow? Or is this similar to how something like qemu works already?

iCodeSometime
  • 1,444
  • 15
  • 30
  • 1
    Why should this be closed as off topic? Not sure why it's any more off topic than https://stackoverflow.com/questions/6716946/why-do-64-bit-systems-have-only-a-48-bit-address-space or https://stackoverflow.com/questions/2098149/what-platforms-have-something-other-than-8-bit-char and especially https://stackoverflow.com/questions/19225859/difference-between-core-and-processor. – iCodeSometime Jan 09 '18 at 04:36
  • I'd argue that this is definitely both a specific programming problem and a practical, answerable problem that is unique to software development. Is there anything specific that should be re-worded? – iCodeSometime Jan 09 '18 at 04:44
  • "device driver" is the wrong term, but sure, an OS could transparently run foreign binaries under `qemu`, or an in-kernel equivalent of an emulator with dynamic translation. The problem is performance: x86 is not simple, so it's hard to emulate. Especially with anything approaching the performance of the CPUs that Intel and AMD have spent decades of engineering effort on, with large teams that a startup just couldn't afford. It's just not really practical for a smaller company to design a chip that's competitive with Intel with desktop / laptop power budgets / performance levels. – Peter Cordes Jan 09 '18 at 08:54
  • Be careful to check [**current guidelines**](https://stackoverflow.com/help/on-topic) before claiming a question is *currently* on topic because others like it were 5 or more years ago. – Jongware Jan 09 '18 at 09:26
  • @usr2564301 I literally quoted the current guidelines in my appeal. – iCodeSometime Mar 26 '19 at 15:28

1 Answers1

2

Why can't this be done at a software level?

It can and has been done on some kind of "software level" by Transmeta with the Transmeta Crusoe Processor. Unfortunately today you can speak of THE TRAGEDY OF TRANSMETA. Their failure has so many aspects, so if anybody knows the whole story this would make up another great answer.

zx485
  • 28,498
  • 28
  • 50
  • 59
  • and possible [VAX](https://stackoverflow.com/q/6390036/995714) also – phuclv Jan 09 '18 at 04:29
  • Transmeta is a nice example of another concept. OP wanted to emulate x86 in software, while their model was done by the CPU directly with the help of binary translation (there was some kind of firmware involved but it was a complete co-design). Then they got bought by Intel (in bits). Anyway, their story is interesting, but definitely off topic here. – Leeor Jan 10 '18 at 01:24