|
|||||||
АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция |
Управління мікрокомандами: Mic-1Дотепер ми розказували про те, як відбувається управління трактом даних, але ми ще не торкалися того, яким чином розв'язується, який саме сигнал управління і на якому циклі повинен запускатися. Для цього існує контролер послідовності, який відповідає за послідовність операцій, необхідних для виконання однієї команди. Контролер послідовності в кожному циклі повинен видавати наступну інформацію: 1. Полягання кожного сигналу управління в системи. 2. Адреса мікрокоманди, яка виконуватиметься наступною. Рис. 7.5 є докладною діаграмою повної мікроархітектури нашої машини, яку ми назвемо Mic-i. На перший погляд вона може показатися значною, але проте її потрібно детально вивчити. Якщо ви розберетеся у всіх прямокутниках і лініях, зображених на цьому малюнку, вам легше буде зрозуміти структуру мікроархітектурного рівня. Діаграма складається з двох частин: тракту даних (зліва), який ми вже детально обговорили, і блоку управління (справа), який ми розглянемо зараз. Найбільшою і найважливішою частиною блоку управління є управляюча пам'ять. Зручно розглядати її як пам'ять, в якій бережеться повна мікропрограма, хоча іноді вона реалізується у вигляді набору логічних вентилів. Ми називатимемо її управляючою пам'яттю, щоб не плутати з основною пам'яттю, доступ до якої здійснюється через регістри MBR і MDR. Функціонально управляюча пам'ять є пам'яттю, яка містить мікрокоманди замість звичних команд. В нашому прикладі вона містить 512 слів, кожне з яких складається з однієї 32-бітової мікрокоманди з форматом, зображеним на рис. 7.4. Насправді не всі ці слова потрібні, але з ряду причин нам потрібні адреси для 512 окремих слів. Управляюча пам'ять відрізняється від основної пам'яті тим, що команди, що бережуться в основній пам'яті, виконуються в порядку адрес (за винятком галужень), а мікрокоманди — немає. Збільшення лічильника команд в лістингу 2.1 означає, що команда, яка виконуватиметься після поточної, — це команда, яка йде вслід за поточною в пам'яті. Мікропрограми повинні володіти більшою гнучкістю (оскільки послідовності мікрокоманд звично короткі), тому вони не володіють цією властивістю. Натомість кожна мікрокоманда сама указує на наступну мікрокоманду. Оскільки управляюча пам'ять функціонально є ПЗП, їй потрібен власний адресний регістр і власний регістр даних. Їй не потрібні сигнали читання і запису, оскільки тут постійно відбувається процес прочитування. Ми назвемо адресний регістр управляючої пам'яті МРС (Microprogram Counter — мікропрограмний лічильник). Назва не дуже відповідна, оскільки мікропрограми не впорядковані явним чином і поняття лічильника тут недоречне, але ми не можемо піти проти традицій. Регістр даних ми назвемо MIR (Microinstruction Register — регістр мікрокоманд). Він містить поточну мікрокоманду, біти якої запускають сигнали управління, що впливають на роботу тракту даних. Рис.7.5. Повна діаграма мікроархітектури МС-1 Групи Addr і J (те ж, що JAM) контролюють вибір наступної мікрокоманди. Ми обговоримо їх трохи пізніше. Група ALU містить 8 бітів, які вибирають функцію АЛЛУ і запускають схему зсуву. Біти Із завантажують окремі регістри з шини С. Сигнали М управляють роботою пам'яті. Нарешті, останні 4 біти запускають декодер, який визначає, значення якого регістра буде передано на шину В. В даному випадку ми вибрали декодер, який містить 4 входи і 16 виходів, хоча є всього 9 різних регістрів. В моделі, що більш пропрацювала, міг би використовуватися декодер, що має 4 входи і 9 виходів. Ми використовуємо стандартну схему, щоб не розробляти свою власну. Використовувати стандартну схему набагато простіше, і крім того, ви зможете уникнути помилок. Ваша власна мікросхема займе менше місця. Схема, зображена на рис. 7.5, працює таким чином. На качану шкірного циклу (задній фронт синхронізуючого сигналу на рис. 7.2) в регістр MIR завантажується слово із управляючої пам'яті, що на малюнку відмічена буквами MPC. Завантаження регістра MIR займає період, тобто перший під цикл (див. рис. 7.2). Коли мікрокоманда потрапляє в MIR, в тракт даних поступають різні сигнали. Значення певного регістра поміщається на шину В, а АЛЛУ дізнається, яку операцію потрібно виконувати. Все це відбувається півгодину іншого підциклу. Після періоду + вхідні сигнали АЛЛУ стабілізуються. Після періоду стабілізуються сигнали АЛЛУ N і Z і вихідний сигнал схеми зсуву. Потім значення N і Z зберігаються в двох 1-бітових тригерах. Ці біти, як і всі регістри, які завантажуються з шини З і з пам'яті, зберігаються на наростаючому фронті синхронізуючого сигналу, ближче до кінця циклу тракту даних. Вихідний сигнал АЛЛУ не зберігається, а просте передається в схему зсуву. Робота АЛЛУ і схеми зсуву відбувається під година під циклу 3. Після наступного інтервалу, вихідний сигнал схеми зсуву, пройшовши через шину З, досягає регістрів. Регістри завантажуються в кінці циклу на наростаючому фронті синхронізуючого сигналу (див. рис. 7.2). Півгодину підциклу 4 відбувається завантаження регістрів і тригерів N і Z. Він завершується відразу після наростаючого фронту, коли всі значення збережені, результати попередніх операцій пам'яті доступні і регістр MРС завантажений. Цей процес продовжується знову і знову, поки ви не втомитеся і не вимкнете комп'ютер. Мікропрограмі доводитися не тільки керувати трактом даних, але й визначати, яка мікрокоманда повинна бути виконана наступною, оскільки сморід не впорядковані в керуючій пам'яті. Обчислення адреси наступної мікрокоманди починається після завантаження регістра MIR. Спочатку в регістр MРС копіюється 9-бітове полі NEXT_ADDRESS (наступна адреси). Поки відбувається копіювання, перевіряється поле JAM. Якщо воно містить значення 000, то більше робити не потрібно; коли копіювання поля NEXT_ADDRESS завершитися, регістр MРС вкаже на наступну мікрокоманду. Якщо один або декілька біт в полі JAM рівні 1, то потрібні ще деякі дії. Якщо біт JAMN рівний 1, то тригер N з'єднується через схему АБО із старшим бітом регістра MРС. Якщо біт JAMZ рівний 1, то тригер Z з'єднується через схему АБО із старшим бітом регістра MРС. Якщо обидва біта рівні 1, сморід обидва з'єднуються через схему АБО з тим же бітом. А заразом пояснимо, навіщо потрібні тригери N і Z. Річ біля тому, що після наростаючого фронту сигналу (і аж до заднього фронту) шина В більше не запускається, тому вихідні сигнали АЛЛУ вже не можуть вважатися за правильне. Збереження прапорів стану АЛЛУ в регістрах N і Z робить правильні значення стабільними і доступними для обчислення регістра MРС, незалежно від того, що відбувається навколо АЛЛУ. На рис. 7.5 схема, яка виконує це обчислення, називається «старший біт». Вона обчислює наступну булеву функцію: F=((JAMZ І Z) АБО (JAMN І N)) АБО NEXT_ADDRESS[8] Відзначимо, що біля будь-якому випадку регістр MРС може прийняти тільки одне з двох можливих значень:
Інших значень не існує. Якщо старший біт значення NEXT_ADDRESS вже рівний 1, немає сенсу використовувати JAMN або JAMZ. Відзначимо, що якщо всі біти JAM рівні 0, то адреси наступної команди — просто 9-бітовий номер в полі NEXT_ADDRESS. Якщо JAMN або JAMZ рівні 1, то існує два потенційно можливих адреси наступної мікрокоманди: NEXT_ADDRESS і NEXT_ADDRESS, сполучений операцією АБО з 0x100 (вважається, що NEXT_ADDRESS<0xFF). (Відзначимо, що 0х вказує, що число, наступне за ним, дається в шістнадцятковій системі числення). Це проілюстровано рис. 4.6. Потокова мікрокоманда з адресою 0x75 містить поле NEXT_ADDRESS=0x92, причому біт JAMZ встановлений на 1. Отже, наступна адреси мікрокоманди залежить від значення біта Z, збереженого при попередній операції АЛЛУ. Якщо біт Z рівний 0, те наступна мікрокоманда має адресі 0x92. Якщо біт Z рівний 1, те наступна мікрокоманда має адресі 0x192. Третій біт в полі JAM — JMPC. Якщо він встановлений, то 8 бітів регістра MBR порозрядно зв'язуються операцією АБО з 8 молодшими бітами поля NEXT_ADDRESS з поточної мікрокоманди. Результат відправляється в регістр MРС. На рис. 4.5 значком «АБО» позначена схема, яка виконує операцію АБО над MBR і NEXT_ADDRESS, якщо біт JMPC рівний 1, і просте відправляє NEXT_ADDRESS в регістр MРС, якщо біт JMPC рівний 0. Якщо JMPC рівний 1, те молодші 8 бітів поля NEXT_ADDRESS рівні 0. Старший біт може бути 0 або 1, тому значення поля NEXT_ADDRESS звичайно 0x000 або 0x100. Чому іноді використовується 0x000, а іноді — 0x100, мі обговоримо пізніше.
Адрес ADDR JAM Біти керування треком даних Набір 0х75 бітів JAMZ . . Один із цих 0х92 адресів . слідує . за 0х73 залежно 0х192 від Z
Рис. 7.6. Мікрокоманда з бітом JAMZ, рівним 1, вказує на дві потенційні подальші мікрокоманди Можливість виконувати операцію АБО над MBR і NEXT_ADDRESS і зберігати результат в регістрі MРС дозволяє реалізовувати міжрівневі переходи. Відзначимо, що по бітах, що знаходяться в регістрі MBR, можна визначити будь-яку адресі з 256 можливих. Регістр MBR містить код операції, тому використання JMPC приведе до єдино можливому вибору наступної мікрокоманди. Цей метод дозволяє здійснювати швидкий перехід біля функції, відповідної викликаному коду операції. Для того, щоб продовжити читання цього розділу, дуже важливо розуміти принципи синхронізації машини, тому повторювано їх ще раз. Синхронізуючий сигнал ділиться на підцикли, хоча зовнішні зміни цього сигналу відбуваються тільки на задньому фронті, з якого починається цикл, і на наростаючому фронті, який завантажує регістри і тригери N і Z. Подивіться ще раз на рис. 7.2. Півгодина підциклу 1, який ініціюється заднім фронтом сигналу, адреси, що знаходиться в даний момент в регістрі MРС, завантажується в регістр MIR. Підчас підциклу 2 регістр MIR видає сигнали і в шину В завантажується вибраний регістр. Під година підциклу 3 відбувається робота АЛЛУ і схеми зсуву. Під година підциклу 4 стабілізуються значення шини С, шин пам'яті і АЛЛУ. На наростаючому фронті сигналу завантажуються регістри з шини З, завантажуються тригери N і Z, а регістри MBR і MDR одержують результати роботи пам'яті, що почалася в кінці попереднього циклу (якщо ці результати взагалі є). Як тільки регістр MBR набуває свого значення, завантажується регістр MРС. Це відбувається десь біля середині відрізка між наростаючим і заднім фронтами, але вже після завантаження MBR/MDR. Він може завантажуватися рівнем сигналу (але не фронтом сигналу) або завантажуватися через фіксований відрізок годині після наростаючого фронту. Все це означає, що регістр MРС не набуває свого значення до тихий пір, поки не будуть готові регістри MBR, N і Z, від яких він залежить. На задньому фронті сигналу, коли починається новий цикл, регістр MРС може звертатися до пам'яті. Відзначимо, що кожен цикл є самодостатнім. Біля шкірного циклі визначається, значення якого регістра повинне поступати на шину В, що повинні робити АЛЛУ і схема зсуву, куди потрібно зберегти значення шини, і, нарешті, яким повинне бути наступне значення регістра MРС. Слід зробити ще одне зауваження з приводу рис. 7.5. Дотепер мі вважали MРС регістром, який складається з 9 бітів і завантажується на високому рівні сигналу. Насправді цей регістр взагалі не потрібен. Всі його вхідні сигнали можна безпосередньо пов'язати з управляючою пам'яттю. Оскільки сморід знаходяться в управляючій пам'яті, на задньому фронті синхронізуючого сигналу, коли вибирається і прочитується регістр MIR, цього достатньо. Їх не потрібно зберігати в регістрі MРС. З цієї заподій MРС може бути реалізований біля вигляді віртуального регістра, який є просте місцем скупчення сигналів і схожий швидше на комутаційне полі, чим на справжній регістр. Якщо MРС зробити віртуальним регістром, то процедура синхронізації сильне спрощується: тепер події відбуваються тільки на наростаючому фронті і задньому фронті сигналу. Аллі якщо вам простіше вважати MРС реальним регістром, то такий підхід теж цілком допустимий.
Поиск по сайту: |
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.006 сек.) |