Currently I know:

About vertical micro programming: The control signals are not immediately passed to the ALU components, but are rather processed first and passed as an compressed function code.

About horizontal micro programming: There is just one wire connecting all ALU components directly. The signal contains for each component a bit indicating whether the component should be activated or not.

I guess H-$\mu$Programs generally runs faster as they have not to be processed extra. However have the disadvantage that the signals are pretty long.

Are there other advantages / disadvantages to each of these two types of micro programming?

EDIT: I saw a comment regarding the question being dated. Yes, it is. Nonetheless, examiners at university want to know such things. I had a hard time finding information, which is why I asked on this StackExchange, sort of as a last resort.


1 Answer 1


This questions seems dated, about the way computers and instruction sets were designed in the 70's.

AFAIK, micro-ops in x86 CPUs have about 100 bits, and are decoded separately in each operation unit (ALU, LSU, FPU...) There is no gigantic flat microcode controlling every multiplexer.

There used to be several layers of microcode and ROM decoding tables instructions are translated into "vertical" micro-ops which are then decoded into "horizontal" signals (IIRC, the MC68000 was like that).

Pure horizontal microcode is impractical in modern chips. Long wires have parasitic capacitance and are "slower" than transistors. Using a large and wide microcode ROM outputting hundreds or thousands of signals to individual adders, multiplexers and registers would make a large and slow chip.

Additionally, nowadays processors are pipelined : A wide microcode would need hundreds of flipflops to propagate instruction decoding along the pipeline.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

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