Структурний синтез цифрових автоматів, керуючі автомати
Керуючий автомат (УА) можна будувати двома способами.
Керуючий автомат з жорсткою логікою - спеціальна логічна мережа з елементами пам'яті, що реалізує микропрограмму виконання команди. Структура мережі визначається тими мікропрограмами, які повинні виконуватися цим пристроєм. При цьому способі можна звести до мінімуму обсяг обладнання і, що буває набагато важливіше, забезпечити максимально можливе швидкодію. Зате проектування такого управління є справою довгим і складним, а перепрограмування УА на іншу роботу взагалі неможливо.
Мікропрограмний УА, або керуючий автомат з програмованої логікою, будується з використанням спеціальної вбудованої пам'яті мікропрограмм.В цю пам'ять записуються всі необхідні прошивки, а від схеми управління потрібно тільки організація читання мікропрограм. Проектування мікропрограмного автомата незрівнянно простіше, так як в ньому використовуються типові апаратні модулі. Єдиною спеціальної завданням, розв'язуваної в рамках теорії автоматів, залишається абстрактний синтез і складання таблиць програмування пам'яті. Недоліками мікропрограмного управління є деяка надмірність обладнання і менше швидкодія.
Насправді обидва принципи побудови УА поєднуються в тій чи іншій пропорції, причому в найбільш продуктивних супер-ЕОМ використовується схемна логіка, а в малих - переважає мікропрограмного управління. Надалі ми займемося питанням побудови мікропрограмних УА, а тут будемо мати на увазі тільки схемне управління.
Визначимо деякі загальні поняття і функціональне призначення пристрою управління. Визначимо, перш за все, поняття мікрокоманд, а також взаємопов'язаних з ним понять микрооперации і прошивки.
Програма представляє собою сукупність команд, записаних в певній послідовності, яка забезпечує вирішення даного конкретного завдання на комп'ютері.
Команда - це інструкція для виконання чергового етапу в обчисленнях, а також відповідне позначення цієї інструкції.
Операція - дія, що виконується в комп'ютері або процесорі під впливом команди. При цьому кожній команді відповідає операція, яка виконується процесором.
Практично в будь-якому процесорі операція не є елементарним дією. Вона складається з послідовності декількох інших елементарних дій, які називають мікрооперацій. При цьому одна або кілька сумісних в часі мікрооперацій виконуються за один елементарний інтервал часу, який представляє собою період синхронізуючих (тактових) імпульсів і званий тактом.
Таким чином, операція, яка виконується в процесорі під впливом будь-якої команди, являє собою ряд мікрооперацій. Кожна з микроопераций або декілька з них, які виконуються в один такт, реалізується в пристроях комп'ютера або процесора під впливом мікрокоманд. Отже, кожній команді відповідає своя сукупність микрокоманд. Цю сукупність микрокоманд, або мікроінструкцій, що реалізують цю команду, називають мікропрограмою.
З викладеного видно, що в кожному такті в будь-якому процесорі повинна бути сформована своя мікрокоманда, або мікроінструкцій, яка і забезпечує виконання необхідних мікрооперацій. На рис. 3.4 представлена діаграма, на якій по горизонтальній осі відображена послідовність тактів, а по вертикальній - номери ланцюгів управління процесора при виконанні ним якоїсь команди. Кожному такту і кожному ланцюзі управління поставлений у відповідність певний рівень сигналу, що управляє. Наприклад, одиничний рівень сигналу є що дозволяє, а нульовий - забороняє. Слід зауважити, що для деяких ланцюгів за розв'язний може бути прийнятий і нульовий рівень.
Мал. 3.4. Діаграма розподілу керуючих сигналів процесора по ланцюгах управління і за тактам: u 1, u 2, u 3 - коди команд
З діаграми видно, що в кожному такті на керуючі ланцюги процесора (загальне число їх може становити 40 - 60 і більше) повинна бути подана своя сукупність сигналів управління, які дозволяють або забороняють якусь микрооперацию. Цю сукупність сигналів управління і називають мікрокоманда, або керуючим словом. Вважають, що в тих тактах, в яких є кілька дозвільних сигналів, одночасно виконується кілька елементарних дій - микроопераций. Але при цьому в кожному такті є тільки одне керуюче слово, тобто реалізується одна мікрокоманда.
Таким чином, при виконанні будь-якої команди в процесорі повинна бути сформована сукупність керуючих сигналів, розподілених в просторі (по ланцюгах управління) і в часі (по тактам). Ця сукупність керуючих сигналів і являє собою микропрограмму, що реалізує дану команду.
Формування керуючих сигналів для всіх ланцюгів управління в кожному такті здійснюється пристроєм управління процесора. Як бачимо, завдання формування керуючих сигналів є досить складною і громіздкою, якщо взяти до уваги при цьому, що в процесорі є досить велика кількість ланцюгів управління і значне число команд (до 130 і більше), причому кожна команда виконується за кілька тактів (до 5 - 10 і більше). Крім того, пристрій управління має реагувати також на зовнішні сигнали управління.
В даний час для побудови пристрою управління в процесорах використовуються два принципи: 1) на основі апаратної реалізації або «жорсткої» логіки управління і 2) на основі мікропрограмного реалізації або «гнучкою» логіки управління. Розглянемо коротко обидва ці принципи. Але спочатку необхідно розглянути деякі загальні вузли, які використовуються при реалізації обох принципів побудови пристрою управління.
Дешифратор команди є обов'язковим вузлом будь-якого пристрою управління процесора. Це функціональне комбінаційний пристрій, призначене для розшифрування коду операції команди для використання в інших вузлах пристрою управління.
У пристроях управління і на основі «жорсткої» логіки, і на основі «гнучкої» логіки часто використовуються так звані програмовані логічні матриці (ПЛМ). Це логічна мережа, що складається з двох ступенів: матриці логічних елементів «І», пов'язаної з матрицею логічних елементів «АБО», зв'язку між елементами задаються одноразово шляхом «пропалювання» окремих «непотрібних» перемичок.
Розглянемо спрощену структуру цього вузла (рис. 3.5). Елементи "І" і "АБО" умовно показані на малюнку, а їх входи (входи змінних) - сполучними точками. Для отримання не тільки прямих, але і інверсних значень вхідних змінних (х1, х 2. хn) на входах ПЛМ включені інвертори.
Як відомо, будь-яку функцію можна представити у диз'юнктивній нормальній формі, використовуючи дворівневу комбінаційну схему, що складається з елементів "І" і "АБО". Як приклад можна записати функції y 1, y 2, що реалізуються відповідно до сполуками, показаними на рис. 3.5:
Мал. 3.5. Спрощена структурна схема програмованої логічної матриці
Необхідні з'єднання входів елементів "І" і "АБО", що входять в матриці цих елементів, здійснюються або на заводі-виробнику - масочное програмування, або шляхом програмування користувачем - при застосуванні мікросхем ПЛМ з можливістю одноразового або багаторазового програмування.
З наведеного вище прикладу і загального принципу побудови ПЛМ, слід, що вихідним змінним y 1 - ym можна поставити у відповідність практично будь-який набір вхідних змінних x 1 - xn і їх функцій "І" і "АБО".
У багатьох сучасних процесорах є вузол, який називають чергою команд. Черга команд представляє собою пристрій, призначений для зберігання чергових, які підлягають виконанню команд.
Заповнення буферної пам'яті команд проводиться в інтервали часу, коли шина даних процесора не зайнята їм для обміну даними з основною пам'яттю або зовнішніми пристроями. Вибірка команд з черги команд проводиться процесором в міру їх виконання. Таким чином забезпечується підвищення загальної продуктивності процесора, оскільки практично не потрібно додаткових витрат часу на вибірку команд з оперативного пристрою, що запам'ятовує - чергові команди вже знаходяться у внутрішній буферної пам'яті процесора. Повний час на вибірку команди зі зверненням до оперативного запам'ятовуючого пристрою витрачається лише в тих випадках, коли проводиться передача управління при реалізації умовних переходів в програмі. У цих випадках проводиться Реініціалізація черзі команд і завантаження її нової послідовністю команд. При цьому перша ж обрана з ОЗУ команда стає відразу доступною для виконання. Однією з різновидів реалізації черги команд є так звана Кеш-пам'ять, що розміщується безпосередньо на кристалі процесора. У ряді сучасних процесорів Кеш-пам'ять використовується при цьому як буферну пристрій не тільки для потоку команд, але також і для потоку даних. Ємність такого буферного пристрою, що запам'ятовує досягає 256 байт і більше.