Proces zapisywania mikrokodu dla pamięci sterującej centralnej jednostki komputerowej nazywa się mikroprogramowaniem. Mikrokod pamięci sterującej jest generowany po skonfigurowaniu komputera i ustanowieniu jego mikroprogramowanej jednostki sterującej. Pamięć sterowania jest częścią jednostki sterującej, która przechowuje wszystkie mikroprogramy, których nie można często modyfikować. Każda linia mikroprogramu reprezentuje mikroinstrukcję, która określa jedną lub więcej mikrooperacji. Istnieją dwa różne sposoby organizowania mikroinstrukcji: pozioma i pionowa. Mikroinstrukcje poziome reprezentują kilka mikrooperacji wykonywanych jednocześnie. Jednak w skrajnych przypadkach każda mikroinstrukcja pozioma kontroluje wszystkie zasoby sprzętowe systemu. Przeciwnie, pionowa mikroinstrukcja przypomina konwencjonalny format języka maszynowego obejmujący jedną operację i kilka operandów. W przeciwieństwie do mikroinstrukcji poziomych mikroinstrukcja pionowa reprezentuje pojedyncze mikrooperacje.
W mikroprogramowaniu poziomym każdy bit jest identyfikowany konkretnie za pomocą pojedynczego punktu kontrolnego, co wskazuje, że należy wykonać odpowiednią mikrooperację. Ponieważ każda mikroinstrukcja może jednocześnie kontrolować kilka zasobów, ma potencjalną zaletę bardziej wydajnego wykorzystania sprzętu, a ponadto wymaga mniejszej liczby mikroinstrukcji na mikroprogram. Umożliwia wyższy stopień równoległości przy minimalnej ilości kodowania i oddzielnych polach kontrolnych. Jednak opracowanie mikroprogramów, które optymalnie lub wydajnie wykorzystują zasoby, jest złożonym zadaniem. Mikroprogramowanie w poziomie oferuje dużą elastyczność, ponieważ każdy bit kontrolny jest od siebie niezależny. Ma większą długość, więc zazwyczaj zawiera więcej informacji niż mikroinstrukcje pionowe.
Mikroprogramowanie pionowe wykorzystuje zmienny format i wyższy stopień kodowania, w przeciwieństwie do mikroprogramowania poziomego. Nie tylko skraca długość mikroinstrukcji, ale także zapobiega bezpośredniemu wpływowi zwiększonej pojemności pamięci na długość mikroinstrukcji. Każda pionowa mikroinstrukcja na ogół reprezentuje pojedynczą mikrooperację. Kod jest wykorzystywany dla każdej mikroprocesji, która ma zostać wykonana, a dekoder przekształca kod w indywidualne sygnały sterujące. Ponieważ określono tylko mikrooperację, którą należy wykonać, pola mikroinstrukcji są w pełni wykorzystywane. Plus pionowe mikroprogramy są łatwiejsze do zapisu niż ich poziome odpowiedniki. Mikroinstrukcja pionowa przypomina konwencjonalny format języka maszynowego obejmujący jedną operację i kilka operandów. W związku z tym jest łatwy w użyciu do mikroprogramowania. Zwykle składa się z czterech do sześciu pól, które wymagają około 16 do 32 bitów na instrukcję.
Mikroprogramowanie pionowe wykorzystuje zmienny format i wyższy stopień kodowania, w przeciwieństwie do mikroprogramowania poziomego. W pionowym mikroprogramowaniu bity sterujące są kodowane przy użyciu każdego kodu dla każdej czynności, która ma zostać wykonana, a dekoder instrukcji dekoduje kod na wiele sygnałów sterujących. Przeciwnie, mikroprogramowanie w poziomie obejmuje poziome mikroinstrukcje, które w ogóle nie używają kodowania. Reprezentują każdy bit kontrolny w ścieżce danych, której przypisano osobny bit w formacie mikroinstrukcji. Każdy bit w polu kontrolnym jest dołączony do linii kontrolnej.
Mikroprogramowanie poziome zasadniczo stosuje sekwencyjne podejście do określania następnej mikroinstrukcji w mikroprogramie, podobnie jak w konwencjonalnym formacie języka maszynowego. Każdy bit jest identyfikowany konkretnie za pomocą pojedynczego punktu kontrolnego, co wskazuje, że należy wykonać odpowiednią mikrooperację. Aby złamać sekwencję, wymagane są specjalne warunkowe i bezwarunkowe mikroinstrukcje gałęzi. Mikroprogramowanie pionowe może wykorzystywać schemat względnego adresowania, w którym kilka bitów jest wymaganych do określenia względnego skoku do przodu lub do tyłu. Wymaga to obliczenia adresu na każdym etapie.
- Mikroprogramy pionowe mają lepszą gęstość kodu, co jest korzystne dla wielkości magazynu kontrolnego. Mikroinstrukcja pionowa przypomina konwencjonalny format języka maszynowego obejmujący jedną operację i kilka operandów. Każda mikroinstrukcja pionowa reprezentuje pojedynczą mikrooperację, podczas gdy operandy mogą określać ujście danych i źródło. Natomiast mikroprogramy poziome zwykle reprezentują wiele mikroprocesorów, które są wykonywane jednocześnie. W skrajnych przypadkach każda mikroinstrukcja pozioma kontroluje jednocześnie kilka zasobów sprzętowych.
- Mikroprogramy poziome oferują większą elastyczność, ponieważ każdy bit kontrolny jest od siebie niezależny. Ma większą długość, więc zazwyczaj zawiera więcej informacji niż mikroinstrukcje pionowe. Poziome mikroinstrukcje z 48 lub więcej bitami są dość powszechne. Mikroprogramy poziome mają potencjalną zaletę bardziej wydajnego wykorzystania sprzętu, a ponadto wymagają mniejszej liczby mikroinstrukcji na mikroprogram. Z drugiej strony mikroinstrukcje pionowe są bardziej kompaktowe, ale mniej elastyczne niż mikroinstrukcje poziome. W związku z tym podejście pionowe jest łatwe w użyciu w przypadku mikroprogramowania.
W przeciwieństwie do mikroinstrukcji poziomych mikroinstrukcja pionowa reprezentuje pojedyncze mikrooperacje. Poziome mikroprogramy umożliwiają wyższy stopień równoległości z minimalną ilością kodowania i oddzielnymi polami kontrolnymi, podczas gdy bity kontrolne są kodowane w pionowych mikroprogramach. Wyboru między tymi dwoma podejściami należy dokonać ostrożnie. Jednak w praktyce projektanci stosują kombinację formatów mikroinstrukcji poziomej i pionowej, dzięki czemu uzyskana struktura jest zwarta, ale wydajna.