What is Horizontal Microcode?


In horizontal microcode, each micro-operation is represented by one bit in each microinstruction. Horizontal microcode is generally included in a fairly wide control save it is not exceptional for each work to be 56 bits or more. On each click of a sequencer clock, a microcode word is read, decoded, and used to control the functional components which create up the CPU. The micro-operations and their mnemonics are shown in the table.

Microoperations and their mnemonics for the very simple CPU

MnemonicMicro-Operation
ARPCAR←PC
ARDRAR←DR[5….0]
PCINPC←PC+1
PCDRPC←DR[5…0]
DRMDR←M
IRDRIR←DR[7…6]
PLUSAC←AC+DR
ANDAC←AC ^ DR
ACINAC←AC+1

Since there are nine micro-operations, each word of microcode requires 9 bits to represent them, 1 bit per micro-operation. A value of 1 means the micro-operation is to occur and a value of 0 means that it does not. To complete the microcode, it can simply fill in the values for the micro-operations. The resultant microcode is shown in the table.

Preliminary horizontal microcode for the very simple microsequencer

StateAddressSELARPCARDRPCINPCDRDRMIRDRPLUSANDACINADDR
FETCH10000 (0)01000000000001
FETCH20001(1)00010100000010
FETCH30010(2)1010001000XXXX
ADD11000(8)00000100001001
ADD21001(9)00000001000000
AND11010(10)00000100001011
AND21011(11)00000000100000
JMP11100(12)00001000000000
INC11110(14)00000000010000

Before generating the control signals, it reviews the microcode to see how it can be optimized. ARDR and IRDR have the same value. It cannot require two outputs to represent the same value, it can use one output to derive both micro-operations, AIDR, which combines both microoperations AR←DR[5….0]and IR←DR[7…6]. The revised microcode is displayed in the table.

Optimized horizontal microcode for the very simple microsequencer

StateAddressSELARPCARDRPCINPCDRDRMIRDRPLUSANDACINADDR
FETCH10000 (0)01000000000001
FETCH20001(1)00010100000010
FETCH30010(2)1010001000XXXX
ADD11000(8)00000100001001
ADD21001(9)00000001000000
AND11010(10)00000100001011
AND21011(11)00000000100000
JMP11100(12)00001000000000
INC11110(14)00000000010000

Updated on: 27-Jul-2021

397 Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements