Принципово інший підхід, що дозволяє подолати складність УУ з жорсткою логікою, був запропонований британським вченим М. Уилксом на початку 50-х років. В основі ідеї лежить той факт, що для ініціювання будь микрооперации досить сформувати відповідний сигнал управління (СУ) на відповідній лінії управління, тобто перевести таку лінію в активний стан. Це може бути представлено за допомогою двійкових цифр 1 (активний стан - є СУ) і 0 (пасивний стан - немає СУ). Для вказівки микроопераций, виконуваних в даному такті, можна сформувати керуюче слово, в якому кожен біт відповідає одній лінії напряму. Таке котра управляє слово називають мікрокоманда (МК). Таким чином, мікрокоманда може бути представлена керуючим словом зі своєю комбінацією нулів і одиниць. Послідовність мікрокоманд, що реалізують певний етап машинного циклу, утворює микропрограмму. У термінології англійською мовою микропрограмму часто називають firmware, підкреслюючи той факт, що це щось середнє між апаратурою (hardware) і програмним забезпеченням (software). Вбудованого програмного забезпечення для кожної команди ВМ і для кожного етапу циклу команди розміщуються в спеціальному ЗУ, званому пам'яттю мікропрограм (ПМК). Процес формування СУ можна реалізувати, послідовно (з кожним тактовим імпульсом) витягуючи мікрокоманд вбудованого з пам'яті і інтерпретуючи міститься в них інформацію про сигнали управління. Ідея зацікавила багатьох конструкторів ВМ, але була нереалізована, оскільки вимагала використання швидкої пам'яті щодо великої місткості. Знову повернулися до неї в 1964 році, в ході створення системи IBM 360. З тих пір пристрої управління з програмованою логікою стали надзвичайно популярними і були вбудовані в багато ВМ.
Відмінною особливістю мікропрограмного автомата з програмованою логікою є зберігання мікрокоманд у вигляді кодів в спеціалізованому пристрої зберігання даних - пам'яті мікропрограм. Кожній команді ВМ в цьому ЗУ в явній формі відповідає вбудоване, тому часто пристрою управління, до складу яких входить мікропрограмний автомат з програмованої логікою, називають мікропрограмні.
Мал. 1. мікропрограмного автомата з програмованою логікою.
де NMK - загальна кількість мікрокоманд; NСУ - загальна кількість формованих сигналів управління.
У свою чергу, необхідна ємність пам'яті мікропрограм дорівнює
Інформація про те, які сигнали управління повинні бути сформовані в процесі виконання поточної МК, в закодованому вигляді міститься в мікроопераціонной частини (МО) мікрокоманд. Спосіб кодування мікрооперацій багато в чому визначає складність апаратних засобів керування та його швидкісні характеристики. Застосовувані в мікрокоманда варіанти кодування сигналів управління можна звести до трьох груп: мінімальне кодування (горизонтальне мікропрограмування), максимальне кодування (вертикальне мікропрограмування) і групове кодування (змішане мікропрограмування). Структури мікропрограмних автоматів при різних способах кодування мікрооперацій показані на рис. 2.
При горизонтальному мікропрограмування (див. Рис. 2, а) під кожен сигнал управління в мікроопераціонной частини мікрокоманд виділений один розряд (RMO = NСУ). Це дозволяє в рамках однієї мікрокоманд формувати будь-які поєднання СУ, чим забезпечується максимальний паралелізм виконання мікрооперацій. Крім того, відсутня необхідність в декодуванні МО і виходи регістра мікрокоманд можуть бути безпосередньо підключені до відповідних керованим точкам ВМ. Широкому поширенню горизонтального микропрограммирования проте перешкоджають великі витрати на зберігання мікроопераціонних частин микрокоманд (ЕПМП = NMK 'NСУ), причому ефективність використання ПМП виходить низькою, так як при великому числі микроопераций в кожній окремій МК реалізується лише одна або кілька з них, тобто переважна частина розрядів МО містить нулі.
Мал. 2. Структури МПА при різних способах кодування мікрооперацій:
а - мінімальному; б - максимальному; в - максимальному з шифратором;
г - горизонтально-вертикальному; д - вертикально-горизонтальному.
При максимальному (вертикальному) кодуванні (див.
Мал. 2, б) кожної мікрооперації присвоюється певний код, наприклад, її порядковий номер в повному списку можливих мікрооперацій. Цей код і заноситься в МО. Мікроопераціонная частина МК має мінімальну довжину, яка визначається як двійковий логарифм від числа керуючих сигналів (микроопераций). Такий спосіб кодування вимагає мінімальних апаратних витрат в ПМП на зберігання мікрокоманд, проте виникає необхідність в дешифраторі ДшМК, який повинен перетворити код мікрооперації в відповідний сигнал управління. При великій кількості СУ дешифратор вносить значну часову затримку, а головне - в кожній МК вказується лише один сигнал управління, який ініціює тільки одну микрооперацию, за рахунок чого збільшуються довжина прошивки і час її реалізації.
Останній недолік усувається при підключенні до виходів ДшМК шифратора (Ш) (див. Рис. 2, в), що призводить до збільшення кількості СУ, які формуються одночасно. Природно, що крім кодів окремих мікрооперацій повинні бути передбачені коди, що представляють і певні комбінації микроопераций. Для підвищення універсальності шифратор доцільно будувати на базі пристрою, що запам'ятовує.
Мінімальна і максимальна кодування є двома крайніми точками широкого спектру можливих рішень задачі кодування СУ. Проміжне становище займає групове або змішане кодування.
Тут все сигнали управління (мікрооперації) розбиваються на До непересічних груп. Найчастіше застосовується горизонтально-вертикальний метод (див. Рис. 2, г) При цьому в кожну групу включаються взаємно несумісні сигнали управління (мікрооперації), тобто СУ, які ніколи не зустрічаються разом в одній мікрокоманді. При цьому сигнали, зазвичай формуються в одному і тому ж такті, виявляються в різних групах.
Нанопрограммное пристрій управління
Такий підхід, зберігаючи всі достоїнства горизонтального микропрограммирования, дозволяє значно скоротити сумарну ємність керуючої пам'яті. Основним недоліком нанопрограммірованія є невисока швидкодія, оскільки для виконання мікрокоманд потрібні два звернення до пам'яті, що, однак, частково компенсується винятком зі схеми дешифратора, властивого вертикальному мікропрограмування.
Пам'ять мікропрограм може бути реалізована запам'ятовують різних типів. Залежно від типу застосовуваного ЗУ розрізняють МПА зі статичним і динамічним мікропрограмування. У першому випадку в якості ПМП використовується постійне ЗУ (ПЗУ) або програмована логи-чна матриця (ПЛМ), у другому - оперативне ЗУ.
Динамічне мікропрограмування на відміну від статичного дозволяє оперативно модифікувати прошивки УУ, змінюючи тим самим функцио-нальні властивості ВМ. Основна перешкода на шляху широкого використання динамічного микропрограммирования - енергозалежність і відносно невисоку швидкодію ОЗУ.
Мал. 4. Організація керуючої пам'яті
На рис. 4 показано можливе розміщення мікрокоманд в пам'яті мікропрограм. Вміст ПМП визначає послідовність мікрооперацій, які повинні виконуватися на кожному етапі циклу команди, а також послідовність етапів. Кожен етап представлений відповідної прошивки. Мікропрограми завершуються мікрокоманда переходу, що визначає подальші дії. У керуючій пам'яті є також спеціальна мікропрограма-перемикач: в залежності від поточного коду операції вона вказує, етап виконання якої команди повинен бути виконаний.
Здебільшого мікрокоманд вбудованого виконуються послідовно, проте в загальному випадку черговість микроопераций не є фіксованою. З цієї причини в УУ необхідно передбачити ефективну систему реалізації переходів. Переходи, як безумовні, так і умовні, є невід'ємною частиною будь-якої прошивки.