Процесът на записване на микрокод за контролната памет на централния процесор на компютър се нарича микропрограмиране. Микрокодът за контролната памет се генерира след конфигуриране на компютър и неговото микро програмирано управление. Контролната памет е част от контролния блок, който съхранява всички микропрограми, които не могат да се променят често. Всеки ред на микропрограмата представлява микроинструкция, която определя една или повече микро операции. Има два различни начина, по които могат да се организират микроинструкции: хоризонтална и вертикална. Хоризонталните микроинструкции представляват няколко микро операции, които се изпълняват едновременно. В краен случай обаче всяка хоризонтална микроинструкция контролира всички хардуерни ресурси на системата. Напротив, вертикалната микроинструкция прилича на конвенционалния формат на машинен език, включващ една операция и няколко операнда. За разлика от хоризонталните микроинструкции, вертикалната микроинструкция представлява единични микро операции.
При хоризонтално микропрограмиране всеки бит се идентифицира специално с една контролна точка, което показва, че трябва да се извърши съответната микро-операция. Тъй като всяка микроинструкция е достатъчно способна да контролира няколко ресурса едновременно, тя има потенциалното предимство от по-ефикасното използване на хардуера и в допълнение, изисква по-малък брой микроинструкции на микропрограма. Той позволява по-висока степен на паралелизъм с минимално количество кодиране и отделни контролни полета. Въпреки това разработването на микропрограми, които използват ресурси оптимално или ефективно, е сложна задача. Хоризонталното микропрограмиране предлага голяма гъвкавост, тъй като всеки контролен бит е независим един от друг. Той има по-голяма дължина, така че обикновено съдържа повече информация от вертикалните микроинструкции.
Вертикалното микропрограмиране използва променлив формат и по-висока степен на кодиране, за разлика от хоризонталното микропрограмиране. Той не само скъсява дължината на микроинструкцията, но също така предотвратява увеличаването на капацитета на паметта да влияе пряко върху дължината на микроинструкцията. Всяка вертикална микроинструкция обикновено представлява една микро-операция. Код се използва за всяка извършена микро операция и декодерът превежда кода в отделни управляващи сигнали. Тъй като се определя само микро операцията, която трябва да се извърши, полетата за микроинструкция се използват напълно. Плюс вертикалните микропрограми се пишат по-лесно от хоризонталните им колеги. Вертикалната микроинструкция наподобява конвенционалния формат на езика на машината, включващ една операция и няколко операнда. Следователно е лесно да се използва за микропрограмиране. Обикновено се състои от четири до шест полета, които изискват приблизително 16 до 32 бита на инструкция.
Вертикалното микропрограмиране използва променлив формат и по-висока степен на кодиране, за разлика от хоризонталното микропрограмиране. При вертикално микропрограмиране контролните битове се кодират с всеки код, който се използва за всяко действие, което се изпълнява, и декодер на инструкции декодира кода в множество контролни сигнали. Напротив, хоризонталното микропрограмиране включва хоризонтални микроинструкции, които изобщо не използват кодиране. Те представляват всеки контролен бит в пътя на данни, назначен с отделен бит във формата на микроинструкция. Всеки бит в контролното поле е прикачен към контролна линия.
Хоризонталното микропрограмиране обикновено следва последователен подход за определяне на следващата микроинструкция в микропрограма, подобно на конвенционалния формат на машинен език. Всеки бит е идентифициран специално с една контролна точка, което показва, че трябва да се извърши съответната микро-операция. След това са необходими специални условни и безусловни микроинструкции за разклонение, за да се прекъсне последователността. Вертикалното микропрограмиране може да използва схема на сравнително адресиране, в която са необходими няколко бита, за да се определи относително преместване напред или назад. Това изисква изчисляване на адреса на всяка стъпка.
- Вертикалните микропрограми имат по-добра плътност на кода, което е от полза за размера на контролния магазин. Вертикалната микроинструкция наподобява конвенционалния формат на езика на машината, включващ една операция и няколко операнда. Всяка вертикална микроинструкция представлява една микро-операция, докато операндите могат да определят мивката и източника на данни. От друга страна, хоризонталните микропрограми обикновено представляват множество микро операции, които се изпълняват едновременно. В крайни случаи всяка хоризонтална микроинструкция контролира едновременно няколко хардуерни ресурси.
- Хоризонталните микропрограми предлагат подобрена гъвкавост, тъй като всеки контролен бит е независим един от друг. Той има по-голяма дължина, така че обикновено съдържа повече информация от вертикалните микроинструкции. Хоризонталните микроинструкции с 48 или повече бита са доста често срещани. Хоризонталните микропрограми имат потенциалното предимство да използват хардуера по-ефективно, а освен това, той изисква по-малък брой микроинструкции на микропрограма. От друга страна, вертикалните микроинструкции са по-компактни, но по-малко гъвкави от хоризонталните микроинструкции. Следователно вертикалният подход е лесен за използване за микропрограмиране.
За разлика от хоризонталните микроинструкции, вертикалната микроинструкция представлява единични микро операции. Хоризонталните микропрограми позволяват по-висока степен на паралелизъм с минимално количество кодиране и отделни контролни полета, докато контролните битове са кодирани във вертикални микропрограми. Изборът между двата подхода трябва да бъде направен внимателно. На практика обаче дизайнерите използват комбинация от хоризонтални и вертикални микроинструкционни формати, така че получената структура да е компактна, но ефикасна.