Processen med at skrive mikrokode til kontrolhukommelsen på en computers centrale behandlingsenhed kaldes mikroprogrammering. Mikrokoden til kontrolhukommelsen genereres efter konfigurationen af en computer, og dens mikroprogrammerede styreenhed er etableret. Kontrolhukommelse er en del af kontrolenheden, der gemmer alle mikroprogrammer, der ikke ofte kan ændres. Hver linje i mikroprogrammet repræsenterer en mikroinstruktion, der specificerer en eller flere mikrooperationer. Der er to forskellige måder, hvor mikroinstruktioner kan organiseres: vandret og lodret. Horisontale mikroinstruktioner repræsenterer flere mikrooperationer, der udføres på samme tid. I ekstreme tilfælde kontrollerer hver horisontal mikroinstruktion imidlertid alle systemets hardware-ressourcer. Tværtimod ligner den lodrette mikroinstruktion det konventionelle maskinsprogformat, der omfatter en operation og et par operander. I modsætning til vandrette mikroinstruktioner repræsenterer den lodrette mikroinstruktion enkelt mikrooperationer.
Ved horisontal mikroprogrammering identificeres hver bit specifikt med et enkelt kontrolpunkt, hvilket indikerer, at den tilsvarende mikrooperation skal udføres. Da hver mikroinstruktion er i stand nok til at kontrollere flere ressourcer samtidig, har den den potentielle fordel ved mere effektiv hardwareudnyttelse, og derudover kræver den et mindre antal mikroinstruktioner pr. Mikroprogram. Det tillader højere grad af parallelisme med et minimum af kodning og separate kontrolfelter. Imidlertid er udvikling af mikroprogrammer, der bruger ressourcer optimalt eller effektivt, en kompliceret opgave. Horisontal mikroprogrammering giver stor fleksibilitet, fordi hver kontrolbit er uafhængig af hinanden. Det har større længde, så det indeholder typisk mere information end lodrette mikroinstruktioner.
Lodret mikroprogrammering anvender et variabelt format og højere grad af kodning i modsætning til vandret mikroprogrammering. Det forkorter ikke kun længden af mikroinstruktionen, men forhindrer også, at den stigende hukommelseskapacitet direkte påvirker mikroinstruktionslængden. Hver lodret mikroinstruktion repræsenterer generelt en enkelt mikrooperation. En kode bruges til hver mikrooperation, der skal udføres, og dekoderen oversætter koden til individuelle styresignaler. Fordi kun mikrooperationen, der skal udføres, er specificeret, bruges mikroinstruktionsfelterne fuldt ud. Plus vertikale mikroprogrammer er lettere at skrive end deres vandrette modstykker. Lodret mikroinstruktion ligner det konventionelle maskinsprogformat, der omfatter en operation og et par operander. Det er derfor let at bruge til mikroprogrammering. Det består generelt af fire til seks felter, der kræver cirka 16 til 32 bit pr. Instruktion.
Vertikal mikroprogrammering anvender et variabelt format og en højere grad af kodning i modsætning til vandret mikroprogrammering. Ved vertikal mikroprogrammering kodes kontrolbitene med hver kode, der bruges til hver handling, der skal udføres, og en instruktionsdekoder afkoder koden til flere styresignaler. Tværtimod involverer horisontal mikroprogrammering vandrette mikroinstruktioner, der overhovedet ikke bruger nogen kodning. De repræsenterer hver kontrolbit i datapaden, der er tildelt en separat bit i mikroinstruktionsformatet. Hver bit i kontrolfeltet er knyttet til en kontrollinie.
Horisontal mikroprogrammering følger generelt en sekventiel tilgang til at specificere den næste mikroinstruktion i et mikroprogram, der ligner konventionelt maskinsprogformat. Hver bit identificeres specifikt med et enkelt kontrolpunkt, hvilket indikerer, at den tilsvarende mikrooperation skal udføres. Særlige betingede og ubetingede grenmikroinstruktioner kræves derefter for at bryde sekvensen. Vertikal mikroprogrammering kan bruge et relativt adresseringsskema, hvor et par bits er påkrævet for at specificere et relativt fremad eller et bagudspring. Dette kræver adresseberegning på hvert trin.
- Lodrette mikroprogrammer har en bedre kodetæthed, som er fordelagtig for størrelsen på kontrollageret. Lodret mikroinstruktion ligner det konventionelle maskinsprogformat, der omfatter en operation og et par operander. Hver lodret mikroinstruktion repræsenterer en enkelt mikrooperation, mens operander kan specificere dataforekomsten og kilden. Horisontale mikroprogrammer repræsenterer på den anden side generelt flere mikrooperationer, der udføres på samme tid. I ekstreme tilfælde styrer hver horisontal mikroinstruktion flere hardwareressourcer samtidig.
- Horisontale mikroprogrammer giver forbedret fleksibilitet, fordi hver kontrolbit er uafhængig af hinanden. Det har større længde, så det indeholder typisk mere information end lodrette mikroinstruktioner. Horisontale mikroinstruktioner med 48 eller flere bit er ret almindelige. Horisontale mikroprogrammer har den potentielle fordel ved at bruge hardware mere effektivt, og oven på det kræver det mindre antal mikroinstruktioner pr. Mikroprogram. Lodrette mikroinstruktioner er på den anden side mere kompakte, men mindre fleksible end vandrette mikroinstruktioner. Den lodrette tilgang er følgelig let at bruge til mikroprogrammering.
I modsætning til vandrette mikroinstruktioner repræsenterer den lodrette mikroinstruktion enkelt mikrooperationer. Horisontale mikroprogrammer tillader højere grad af parallelitet med en minimumsmængde af kodning og separate kontrolfelter, medens kontrolbitene er kodet i lodrette mikroprogrammer. Valget mellem de to tilgange skal træffes omhyggeligt. I praksis bruger designere imidlertid en kombination af horisontale og lodrette mikroinstruktionsformater, så den resulterende struktur er kompakt, men alligevel effektiv.