Процес писања микро кода за контролну меморију централне процесне јединице рачунара назива се микропрограмирањем. Микрокод за контролну меморију генерише се након конфигурације рачунара и његове микропрограмиране управљачке јединице. Контролна меморија је део управљачке јединице која чува све микро програме који се не могу често мењати. Свака линија микро програма представља микроинструкцију која специфицира једну или више микро операција. Постоје два различита начина на које се могу организовати микроинструкције: хоризонтална и вертикална. Хоризонталне микроинструкције представљају неколико микро операција које се изводе истовремено. Међутим, у екстремним случајевима, свака хоризонтална микроинструкција контролише све хардверске ресурсе система. Супротно томе, вертикална микроинструкција личи на конвенционални формат машинског језика који садржи једну операцију и неколико операнда. За разлику од хоризонталних микроинструкција, вертикална микроинструкција представља појединачне микро-операције.
У хоризонталном микропрограмирању сваки се бит идентификује посебно са једном контролном тачком, што указује да се мора извршити одговарајућа микро операција. Пошто је свака микроинструкција довољно способна да истовремено контролише више ресурса, она има потенцијалну предност у ефикаснијој употреби хардвера, а уз то јој је потребан и мањи број микроинструкција по микропрограму. Омогућава већи степен паралелизма са минималном количином кодирања и одвојеним контролним пољима. Међутим, развој микропрограма који оптимално или ефикасно користе ресурсе је сложен задатак. Хоризонтално микропрограмирање нуди велику флексибилност јер је сваки контролни бит независан један од другог. Има већу дужину тако да обично садржи више информација од вертикалних микро упутстава.
Вертикално микропрограмирање користи променљиви формат и већи степен кодирања, за разлику од хоризонталног микропрограма. То не само да скраћује дужину микроинструкције, већ спречава да повећани капацитет меморије директно утиче на дужину микроинструкције. Свака вертикална микроинструкција генерално представља једну микро операцију. Код се користи за сваку микро операцију која се изводи и декодер преводи код у појединачне управљачке сигнале. Пошто је наведена само микро операција која ће се извести, поља микроинструкције се у потпуности користе. Плус вертикалне микропрограме је лакше написати од својих хоризонталних колега. Вертикална микроинструкција подсећа на конвенционални формат машинског језика који садржи једну операцију и неколико операнда. Следствено томе, лако се користи за микропрограмирање. Обично се састоји од четири до шест поља којима је потребно око 16 до 32 бита по инструкцији.
Вертикално микропрограмирање користи променљиви формат и већи степен кодирања, за разлику од хоризонталног микропрограма. У вертикалном микропрограмирању, контролни битови се кодирају са сваким кодом који се користи за сваку радњу која се изводи, а декодер са упутством декодира код у више контролних сигнала. Супротно томе, хоризонтално микропрограмирање укључује хоризонталне микроинструкције које уопште не користе кодирање. Представљају сваки контролни бит у податковном путу додељеном засебним битом у микроинструкцијском формату. Сваки комад у контролном пољу прикључен је на контролну линију.
Хоризонтално микропрограмирање углавном следи секвенцијални приступ да би се одредила следећа микроинструкција у микропрограму, слично уобичајеном формату машинског језика. Сваки бит се идентификује посебно са једном контролном тачком, што указује да се мора извршити одговарајућа микро операција. Тада су потребне посебне условне и безусловне гране микроинструкције да би се прекинула секвенца. Вертикално микропрограмирање може користити релативно адресну схему у којој је потребно неколико бита да би се одредио релативни скок напред или назад. Ово захтева израчунавање адресе на сваком кораку.
- Вертикални микропрограми имају бољу густину кода што погодује величини контролне јединице. Вертикална микроинструкција подсећа на конвенционални формат машинског језика који садржи једну операцију и неколико операнда. Свака вертикална микроинструкција представља једну микро-операцију, док операнди могу одредити судопер података и извор. Хоризонтални микропрограми, с друге стране, генерално представљају вишеструке микро операције које се извршавају у исто време. У екстремним случајевима свака хоризонтална микроинструкција контролише истовремено неколико хардверских ресурса.
- Хоризонтални микропрограми нуде бољу флексибилност јер је сваки контролни бит независан један од другог. Има већу дужину тако да обично садржи више информација од вертикалних микро упутстава. Хоризонталне микроинструкције са 48 или више битова су прилично честе. Хоризонтални микропрограми имају потенцијалну предност у ефикаснијој употреби хардвера, а поврх тога, потребан је мањи број микроинструкција по микропрограму. Вертикалне микроинструкције су с друге стране компактније, али мање флексибилне од хоризонталних микроинструкција. Вертикални приступ се лако користи за микропрограмирање.
За разлику од хоризонталних микроинструкција, вертикална микроинструкција представља појединачне микро-операције. Хоризонтални микропрограми омогућавају већи степен паралелизма са минималном количином кодирања и одвојеним контролним пољима док су контролни битови кодирани у вертикалним микропрограмима. Избор између два приступа мора бити пажљиво извршен. Међутим, у пракси, дизајнери користе комбинацију хоризонталних и вертикалних формата микроинструкције тако да је резултирајућа структура компактна, али ефикасна.