Ask HN: Vertical and Horizontal Microinstruction Format?
The exact difference between horizontal and vertical microinstructions lies in how the control signals are encoded within the microinstruction word:
*Horizontal Microinstructions:* - Each bit in the microinstruction directly corresponds to a specific control signal - If you have 20 control signals, you need 20 bits in the microinstruction - Each bit position has a dedicated meaning (e.g., bit 0 = ALU enable, bit 1 = register write, bit 2 = memory read, etc.) - The microinstruction is essentially a bit vector where each bit directly controls one hardware component - Example: `101001010...` where each position directly turns on/off a specific control line
*Vertical Microinstructions:* - Control signals are encoded using fewer bits through encoding schemes - Multiple control signals are grouped together and represented by encoded fields - Uses decoders to convert the encoded fields back to individual control signals - Each field in the microinstruction represents a group of mutually exclusive or related operations - Example: Instead of having 8 separate bits for 8 different ALU operations, you use 3 bits to encode which of the 8 operations to perform
*Formation Example:* Say you need to control: ALU operation (8 possibilities), Register selection (4 registers), Memory operation (read/write/none)
- *Horizontal*: Need 8 + 4 + 2 = 14 bits minimum (one bit per control signal) - *Vertical*: Need 3 + 2 + 2 = 7 bits (encoded fields: 3 bits for ALU ops, 2 bits for register, 2 bits for memory)
The key formation difference is: horizontal uses direct bit-to-control mapping, while vertical uses encoded fields that require decoding hardware.
No comments yet