How I understand microcode translate an instruction to microinstructions. And CPU has a unit that stores all possible of microinstructions. These microinstructions can be changed, because it load every time after boot from motherboard. Can instruction set be changed?

I am sorry if i ask strange question, if I misunderstood , please correct , thanks and again I am sorry if my English grammar is bad. (google translate)


3 Answers 3


That depends completely on the CPU. Some CPUs don't use microcode at all. Some CPUs use a mixture of hardcoded instructions and microcoded instructions. This mixture can be anywhere between almost all hardcoded and only a few microcoded instructions to almost all microcoded and only a few hardcoded instructions.

For CPUs that have microcode, the microcode could be either modifiable or not modifiable.

If all instructions are microcoded (there are no hardcoded instructions) and the microcode is stored and loaded in such a way that you can load a different one at will, then it would theoretically be possible to load microcode that implements a completely different instruction set.

However, the feasibility of that still depends on the internal design of the CPU. An extreme example would be the Transmeta Crusoe and Efficeon CPUs. These were 128 bit VLIW designs internally, and in order to execute x86 code, they had a software layer called Code Morphing Software, which was essentially an interpreter and JIT compiler from x86 to the internal VLIW code. The Code Morphing Software was running entirely in the standard RAM. This makes it sound like it should have been very easy to just load a different version of the Code Morphing Software and turn the CPU into an ARM or PowerPC or SPARC or MIPS CPU, right?

Well, not according to Linus Torvalds, who worked for Transmeta at the time. He was asked this exact question, and his answer was that the internals of the CPU are so specifically optimized for interpreting x86 code that writing a CMS implementation for, say, MIPS would be no different (and no more performant) than simply writing a MIPS emulator for x86 … which already exist anyway.

On the other hand, the CPUs of the Xerox Alto, Dandelion, Dolphin, and Dorado workstations were explicitly designed to be microcoded for different use cases. They would run completely different microcode depending on whether they were running Interlisp, Smalltalk, or the Star system. For example, the Smalltalk system implemented the most important instructions of their VM in microcode, so that in some sense, the CPU could directly execute (parts of) Smalltalk byte code. You could say that when running the Smalltalk system, Smalltalk byte code was the ISA!


x86 CPUs (Intel, AMD) use a large amount of microcode, a part of this microcode can be downloaded in RAM and can be updated, principally for fixing bugs (and maybe for more hidden purposes such as disabling some parts of the CPU depending on the part number).

I doubt using different microcode would be enough to completely change the instruction set, because of the highly optimised nature of modern CPUs with very complex instruction decode.

There are a few other examples of CPUs with a complex internal microcode, for example the nVidia Denver with has an internal processor which dynamically translates the ARM instruction set, some rumors pretended that this project was initially targeting x86 before being redesigned as an ARM CPU, and I doubt supporting both x86 and ARM compatibility would be reasonably achievable.

There are a few historical examples of CPUs in the 60's and 70's which had all their microcode in RAM (for example IIRC DataGeneral Eclipse).


I very much doubt that any modern CPU will use microinstructions nowadays, and the ability to change this would be an incredible security risk. Absolutely totally unacceptable.

Being able to change the microcode would mean you cannot trust any code in your computer at all.

  • 3
    $\begingroup$ This answer is completely wrong. Modern x86 CPUs most certainly do use microinstructions, and the ability to update the microcode is not only there, it is in fact routinely used by CPU manufacturers to fix bugs in the CPU (such as Spectre). See e.g. software.intel.com/security-software-guidance/best-practices/…, support.microsoft.com/en-us/topic/…. I don’t know to what extent this can be used to substantially change the instruction set, as the OP asks. $\endgroup$ Mar 16, 2021 at 16:15
  • 1
    $\begingroup$ As for security risks, it’s actually far worse than you might think. Consider that there’s a stand-alone UNIX-like operating system, virtually undocumented, running hidden inside your CPU at the most privileged level: en.wikipedia.org/wiki/Intel_Management_Engine. $\endgroup$ Mar 16, 2021 at 16:42

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.