Процес написання мікрокоду для пам'яті управління центральним процесорним блоком комп'ютера називається мікропрограмуванням. Мікрокод пам'яті управління формується після конфігурації комп'ютера та встановлення його мікропрограмованого блоку управління. Пам'ять управління - це частина блоку управління, який зберігає всі мікропрограми, які неможливо часто змінювати. Кожен рядок мікропрограми являє собою мікроінструкцію, яка визначає одну або кілька мікрооперацій. Існує два різних способи організації мікроінструкцій: горизонтальний і вертикальний. Горизонтальні мікроінструкції являють собою кілька мікрооперацій, які виконуються одночасно. Однак у крайніх випадках кожна горизонтальна мікроінструкція контролює всі апаратні ресурси системи. Навпаки, вертикальна мікроінструкція нагадує звичайний машинний мовний формат, що включає одну операцію та кілька операндів. На відміну від горизонтальних мікроінструкцій вертикальна мікроінструкція являє собою окремі мікрооперації.
У горизонтальному мікропрограмуванні кожен біт ідентифікується спеціально з єдиною контрольною точкою, що вказує на те, що повинна виконуватися відповідна мікрооперація. Оскільки кожна мікроінструкція здатна керувати кількома ресурсами одночасно, вона має потенційну перевагу в більш ефективному використанні обладнання та, крім того, вимагає меншої кількості мікроінструкцій на мікропрограму. Це дозволяє більш високий ступінь паралелізму з мінімальною кількістю кодування та окремих контрольних полів. Однак розробка мікропрограм, які оптимально чи ефективно використовують ресурси, є складним завданням. Горизонтальне мікропрограмування забезпечує велику гнучкість, оскільки кожен керуючий біт не залежить один від одного. Він має більшу довжину, тому зазвичай містить більше інформації, ніж вертикальні мікроінструкції.
У вертикальному мікропрограмуванні використовується змінний формат і більш високий ступінь кодування, на відміну від горизонтального мікропрограмування. Це не тільки скорочує тривалість мікроінструкції, але й запобігає прямому впливу на довжину мікроінструкції збільшенню ємності пам'яті. Кожна вертикальна мікроінструкція, як правило, являє собою одну мікро-операцію. Код використовується для кожної мікрооперації, що виконується, і декодер переводить код в окремі керуючі сигнали. Оскільки задається лише мікрооперація, яка повинна виконуватися, поля мікроінструкції використовуються повністю. Плюс вертикальні мікропрограми писати простіше, ніж їх горизонтальні аналоги. Вертикальна мікроінструкція нагадує звичайний формат мови машини, що включає одну операцію та кілька операндів. Отже, це легко використовувати для мікропрограмування. Він, як правило, складається з чотирьох-шести полів, яким потрібно приблизно 16 - 32 біт за інструкцію.
У вертикальному мікропрограмуванні використовується змінний формат і більш високий ступінь кодування, на відміну від горизонтального мікропрограмування. У вертикальному мікропрограмуванні керуючі біти кодуються кожним кодом, який використовується для кожної дії, що виконується, і дешифратор інструкції декодує код на кілька керуючих сигналів. Навпаки, горизонтальне мікропрограмування передбачає горизонтальні мікроінструкції, які взагалі не використовують кодування. Вони представляють кожен контрольний біт у трафіку даних, призначений окремим бітом у форматі мікроінструкції. Кожен біт у контрольному полі прикріплюється до контрольної лінії.
Горизонтальне мікропрограмування, як правило, дотримується послідовного підходу для визначення наступної мікроінструкції в мікропрограмі, аналогічно звичайному машинному мовному формату. Кожен біт ідентифікується спеціально з єдиною контрольною точкою, що вказує на те, що повинна виконуватися відповідна мікрооперація. Потім необхідні спеціальні умовні та беззастережні мікроінструкції для розриву послідовності. Вертикальне мікропрограмування може використовувати схему відносної адреси, в якій потрібно декілька біт, щоб вказати відносний стрибок вперед або назад. Для цього потрібні обчислення адреси на кожному кроці.
- Вертикальні мікропрограми мають кращу щільність коду, що вигідно для розміру контрольного сховища. Вертикальна мікроінструкція нагадує звичайний формат мови машини, що включає одну операцію та кілька операндів. Кожна вертикальна мікроінструкція являє собою одну мікро-операцію, тоді як операнди можуть вказувати протокол даних та джерело. З іншого боку, горизонтальні мікропрограми, як правило, представляють собою декілька мікрооперацій, які виконуються одночасно. У крайніх випадках кожна горизонтальна мікроінструкція контролює кілька апаратних ресурсів одночасно.
- Горизонтальні мікропрограми пропонують покращену гнучкість, оскільки кожен керуючий біт не залежить один від одного. Він має більшу довжину, тому зазвичай містить більше інформації, ніж вертикальні мікроінструкції. Горизонтальні мікроінструкції з 48 і більше бітами є досить поширеними. Горизонтальні мікропрограми мають потенційну перевагу в тому, щоб більш ефективно використовувати апаратне забезпечення, а крім того, для нього потрібна менша кількість мікроінструкцій на мікропрограму. З іншого боку, вертикальні мікроінструкції є більш компактними, але менш гнучкими, ніж горизонтальні мікроінструкції. Отже, вертикальний підхід простий у використанні для мікропрограмування.
На відміну від горизонтальних мікроінструкцій вертикальна мікроінструкція являє собою окремі мікрооперації. Горизонтальні мікропрограми дозволяють більш високий ступінь паралелізму з мінімальною кількістю кодування та окремими контрольними полями, тоді як контрольні біти кодуються у вертикальних мікропрограмах. Вибір між двома підходами потрібно робити ретельно. Однак на практиці дизайнери використовують комбінацію горизонтальних та вертикальних форматів мікроінструкції, щоб отримана структура була компактною, але ефективною.