Материалы сайта
Это интересно
Керiвництво программиста
3 РОЗРОБКА АПАРАТНОЇ ЧАСТИНИ ЕМУЛЯТОРА Постанова задачі При проектуванні материнських плат спецЕОМ виникають труднощі з їхньою отладкою. Застосування же стандартних материнських плат не завжди відповідає поставленій задачі, бо архітектура може і не співпадати. Для перевірки правильності функціонування чипсета на допомогу можуть прийти внутрисхемні емулятори процесорів. Під внутрисхемним емулятором в даному випадку розуміється цифрова схема, що для зовнішньої апаратури веде себе в точності як і реальний процесор, але надає можливості виробляти отладку як в покроковому режимі (одинковими синхроімпульсами), так і в динамічному режимі на частоті синхросигнала або близької по значенню, або відповідної реальної. Внутрисхемный емулятор необов'язково повинен емулювати весь процесор. Достатньо буде побудувати емулятор інтерфейсного блоку, а емуляцію внутрішніх блоків може взяти на себе програмний емулятор. В попередніх розділах було доведена оптимальність застосування в спецЕОМ процесора i486. Отже і внутрисхемний емулятор повинен емулювати роботу іменно цього процесора. Вивчивши протокол роботи інтерфейсу процесора можна сформулювати вимогу до внутрисхемного емулятора: . Максимальна частота синхросигнала повинна бути якомога ближче до реальної частоти (33МГц); . Протокол роботи з материнською платою повинен повністю відповідати реальному протоколу; . Максимальна частота анулювання рядків кеш-пам'яті першого рівня складає 16МГц (цикл анулювання позичає два такту). Жодна шина не зможить підтримувати таку інтенсивність запитань. Отже кеш-пам'ять першого рівня необхідно виконати апаратно; . Плата емулятора повинна працювати з будь-яким IBM-сумісним комп'ютером і підтримувати з ним найбільшу можливу швидкість обміну. Проаналізувавши вищенаведені вимога можна зробити наступні висновки: . В якості элементної бази слідує застосовувати серію логічних мікросхем, що забезпечують типовий час затримки не більш 3-4 нс. . Час вибірки для мікросхем статичної пам'яті, що буде використовуватися в кэше не повинно перевищувати 15 нс. . Для забезпечення необхідної швидкості обміну може використовуватися шина ISA, а влаштування на ній повинно працювати як влаштування пам'яті. Це дозволить розвивати піковую швидкість передачі до 50Мб/з. . Зважаючи на обмеженість розмірів плати слідує вибирати мікросхеми середнього і великий ступеню інтеграції. 3.2 Розробка структури Аналіз необхідного обладнання. В обов'язку інтерфейсного блоку процесора входить формування молодших розрядів адреси А3-А2, розрядів вибору байтів ВЕ3-ВЕ0 і керуючих сигналів. Інформація що надходить на старші розряди шини адреси і шину даних не змінюється. Отже блок буде обробляти чотири розряди адреси. Запитання, що надходять в блок від програмної частини повинні включати в себе: . 32-розрядну фізичну адресу запитання; . 16 байт даних запитання; . Довжину запитання; . Тип запитання. Апаратна частина повинна вертати сигнал готовності до прийому чергового запитання і результат попереднього. Максимальна довжина запитання може складати 16 байт. Значить необхідно мати регістровий файл на 16 байт з можливістю одночасної видачі вирівненого подвійного слова. Цей файл повинен працювати як на запис (трансляція даних з емулятора на зовнішні виходи), так і на читання (трансляція даних в емулятор). Адреса запитання транслюється тільки в одному направленні. Але в циклах анулювання рядків кеш-пам'яті 28 старших розрядів повинні читатись з зовнішньої шини адреси. Кэш-пам'ять є чотирьохвходовою. Вона має 128 банків по чотири рядки в кожному. В рядку міститься тег і 16 байт даних. При цьому цикл анулювання рядка не повинен перевищувати двох тактів зовнішньої шини. Щоб анулювати рядок її необхідно спочатку знайти, причому пошук не повинен позичати більш одного такту. Значить схема повинна водночас аналізувати чотири тега по 21 розряду. Такий аналізатор позичить значне місце, а значить скоріше усього не підійде для рішення задачі. В зв'язку з цим можна зробити допущення. Обмежитися двохвходовим кешем і збільшити кількість банків до 256. При цьому водночас будуть аналізуватися два тега по 20 розрядів. Ця обставина значно зменшує апаратурні витрати і незначно погіршує ефективність кеша, а значить допущення прийнятно. При системному скиді або при надходженні запитання на очистку всієї кеш- пам'яті необхідно послідовно перебрати 256 банків і скинути в них біти вірогідності. Для цієї мети краще усього підійде двоїчний восьмирозрядний лічильник. Використавши лічильник з передустановою, можна скоротити розрядність регістру адреси. Якщо довжина запитання перевищує довжину подвійного слова або перетинає його межу, реальний процесор виробляє декілька циклів обміну, починаючи зі старшої частини. На підставі цього можна запропонувати наступну структуру блоку формування адреси. Параметри запитання надходять з шини ISA і запам'ятовуються на регістрі. Далі відбувається підсумовування довжини запитання з базовою адресою, і результат запам'ятовується на наступному регістрі. По мірі обробки запитання довжина зменшується, а адреса може або збільшуватися, або зменшуватися в залежності від дозволу пакетного обміну і початкової довжини запитання. Для реалізації такої структури знадобиться суматор, декрементор і ікрементор/декрементор. Опис структури. На підставі усього вищезгаданого можна попередно скласти структуру апаратної частини. Влаштування має дві основні шини: шину адреси на 28 розрядів і шину даних на 32 розряду. На шині адреси є два джерела: регістр адреси запитання і зовнішня шина адреси. Молодші вісім розрядів регістру адреси запитання реалізовані на двоїчном лічильникові. На шині даних присутні чотири джерела: регістр даних запитання, матриця пам'яті даних кеша, зовнішня шина даних і шина даних ISA. Матриця пам'яті тегів має довжину 40 розрядів, на що може надходити інформація з шини адреси. Два влаштування порівняння виконують порівняння тегів з інформацією на шині адреси. Результати порівняння разом з бітами вірогідності і бітами LRU надходять на вхід контролера кеш-пам'яті, реалізованого в вигляді автомату з жорсткою логікою. Молодші розряди адреси, довжина запитання і дані типу запитання надходять з шини даних ISA і запам'ятовуються на регістрі. Далі знаходиться суматор для обчислення стартової адреси запитання і регістри поточної адреси і довжини. На виходах цих регістрів стояє схема, що на підставі поточної довжини і адреси, а також сигналів динамічної зміни розрядність формує молодші розряди адреси і сигнали вибору байтів. Всім цим управляє центральний контролер, собою автомат ,що подає на жорсткій логіці. Сигнали керування кешем формуються комбинаційною схемою на підставі стану автомату контролера і внутрішніх змінних. Сигнали керування всім влаштуванням формуються комбинаційною схемою на підставі стану автомату центрального контролера і сигналів зовнішньої шини керування. Для збігу неправдивих спрацюваннь майже всі сигнали зовнішньої шини керування заклацуються на регістрі в кінці кожного такту. Що виробляються контролером відповідні сигнали з'являються в наступному такті. Все вищезгадане не суперечить логіці роботи реального блоку процесора. З точки зору шини ISA влаштування є швидкою пам'яттю обсягом 21 байт і що починається за адресою 0C8000h. 3.3 Розробка принципової схеми Елементи, що забезпечують трансляцію і зберігання параметрів запитання, а також елементи пам'яті можуть бути виконані на мікросхемах середньому ступені інтеграції, бо корпуса мікросхем, як правило, використовуються максимально. Інше діло - комбинаційні схеми формування керуючих сигналів. В них використовується безліч різнотипних простих логічних елементів. Для зменшення кількості корпусів на платі доцільно застосувати для побудови комбинаційних керуючих схем мікросхеми великий ступеню інтеграції. До таких схем відносяться логічні матриці, що програмуються. В вітчизняній елементній базі присутня полузаказна мікросхема К1520ХМ2, виконана по технології ЕЗЛ з двоступінчастим переключенням струмів. Микросхема подає собою набір з 72 топологічних осередків, в яких можуть бути реалізовані практично будь-які елементи. Є сенс застосувати дану мікросхему для реалізації керуючих автоматів і комбинаційних схем. 3.4 Опис роботи влаштування Формування запитань на обмін з периферійним обладнанням системної плати спецЕОМ лежить на програмной частині емулятора. Апаратна частина виконує роль транслятора запитань і формування керуючих сигналів, що залежать від часу і не можуть бути задані заздалегідь. Всі запитання повинні поміщатись в виравнену шістнадцятибайтну область адрес пам'яті або введення-виведення. Перед видаванням запитання бажано переконатися в тому, що апаратура готова їхн прийняти. Біт готовності можна отримати за адресою 0C8014h. Інакше цикл обміну по шині ISA буде затриманий до приведення апаратури в стан готовності. В таблиці 3.1 наведена область пам'яті для обміну з влаштуванням. Таблиця 3.1 Область пам'яті обміну. |Адреса |Довжина, |Тип обміну |Вміст | | |байт | | | |0C8000h |16 |Запис |Дані для запису | |0C8000h |16 |Читання |Дані для читання | |0C8010h |4 |Запис |Адреса запитання | |0C8014h |1 |Запис |Тип запитання | |0C8014h |1 |Читання |Байт стану | |0C8015h |1 |Запис |Довжина запитання | Дані слідує читати і записувати тільки вирівненими словами. Те же відноситься до запису адреси, типу запитання і його довжини. Читання байта стану можна виробляти будь-яким засобом, але адреса повинна відповідати. Запис довжини і типу запитання наводить до запуску механізму трансляції і скиду прапора готовності. Запитання читання операндів. Після запуску механізму трансляції відбувається підсумовування початкової адреси і довжини запитання для одержання стартової адреси. Водночас відбувається пошук даних в кеш-пам'яті. Якщо дані знайдені, всі 16 байт за чотири такту синхронізації переписуються в файл даних, і обслуговування запитання закінчується. Після цього дані можна прочитати з файлу даних. Якщо відбувся кеш-промах і зовнішня шина вільна, генерується запитання на читання даних і активізується сигнал ADS. Якщо за такт до прибутку сигналу RDY або BRDY прийшов сигнал KEN і заповнення кеша розв'язане, довжина запитання автоматичні збільшується до 16, і дані що надходять з зовнішньої шини даних записуються окрім файлу даних ще і в рядок кеш-пам'яті. Якщо стартова адреса запитання непарний або довжина запитання перевищує 12 байт, формується неактивний сигнал BLAST, в відповідь на що чипсет повинен відповісти сигналом BRDY замість RDY. Якщо це відбулося цикл вважається пакетним, сигнал ADS більш не видається, а формування наступної адреси відбувається автоматичні по наступному правилу: якщо стартова адреса непарна - поточна адреса зменшується, інакше - поточна адреса збільшується. Запитання запису операндів. При записі операндів запитання на пакетний цикл не робиться, бо реальний процесор не може зібрати пакет довжини більш ніж 32 біта. Виключення складає випадок, коли відбувається зміна розрядність шини даних. В цьому випадку сигнал BLAST залишається пасивним, сигналізуючи про можливість пакетного циклу.