Керiвництво программиста

викликає процедуру step з першим елементом в якості параметру, попередно викликавши його конструктор. Таким чином досягається часткова емуляція передвиборки. Якщо була виконана команда переходу, процедура викличе декодування для обох елементів масиву. Процедура exec_com здійснює також обчислення вмісту регістру eip при лінійному характері коду. При виконанні команд переходу виконуючі засоби цих команд самі виробляють корекцію покажчика команд. Якщо перед строковой командою стояє префікс повторення, процедура не буде інкрементувати покажчик команд до обнулення регістру-лічильника (е)сх. В цьому випадку також не буде вироблятися декодування черговий команди.

В виконавчому механізмі викликає інтерес ще і вибірка операндів. В реальному процесорі стадії 2 декодування команди видається запитання на читання операнда з пам'яті (якщо такий є). Далі команда надходить на стадію виконання. Більшість запитань задовольняється з кэша, тому на цій стадії операнд надходить в АЛУ. В емуляторі обчислення ефективної адреси, сегментація і сторінкове перетворення виконуються на стадії виконання. Процедура conv_adr з модуля structs. cpp виконує компоновку ефективного зміщення операнда в сегменті. Далі зміщення надходить на блок сегментації, реалізований засобами класу _sreg. Виробляється виклик одного з цих засобів шляхом об'єкту, відповідного потрібному сегментному регістру. Після перевірки прав доступу запитання передається засобу типу _mem. Якщо включений сторінковий механізм, засіб pageadr виробляє трансляцію лінійної адреси в фізичний, а також перевірку прав доступу до сторінки. Далі ДОСу передає запитання на читання дільниці своп-файлу. При поверненні по ланцюжку передається безпосереднє значення операнда. Даний механізм доступу уявлений на рисунку 2.1.



Даний ланцюжок може перерватися із-за порушень прав доступу.

Якщо же операнд знаходиться в регістрі, виробляється виклик засобу відповідного об'єкту типу класу, що подає цей регістр.


2.4 Розробка інтерфейсу з користувачем


    2.4.1 Постанова задачі


Проаналізувавши кількість інформації, що повинна бути доступній користувачу, можна сказати, що вивести її на екран всю водночас неможливо.

Для рішення цієї проблеми є два шляху: розбити інформацію на групи і виводити послідовно шляхом зміни зображення на всьому екрані, або розбити інформацію на більш дрібні групи і надати користувачу вирішувати, що буде відображене на екрані водночас. Перший засіб відрізняється простотою реалізації, але погіршує гнучкість програми і, отже, розширяємість в випадку додання нових функцій. Другий засіб вимагає створення багатовіконного інтерфейсу і застосування подійної моделі керування, але зате досягається значне підвищення вигоди користування і спрощується розширяємість.

На підставі вищезгаданого слідує зупинитися на багатовіконному інтерфейсі.

Можна також сформулювати два основних вимога до структури інтерфейсу. Це передусім мінімальне втручання в роботу операційної частини і максимальна легкість додання нових компонент без перекомпіляції старих.

Для прискорення процесу навчання користувача роботі з емулятором слідує використати набір керуючих комбінацій клавіш з якої-нибудь добре відомої програми, наприклад, середи Borland C++.

Слідує також відзначити, що працювати інтерфейс повинен в одному з стандартних режимів адаптерів EGA або VGA, і краще, якщо це буде текстовий режим.

Всіма вищенаведеними вимогою буде володіти інтерфейс побудований на базі бібліотеки Turbo Vision фірми Borland. Але результуючий виконавчий файл після приєднання операційної частини буде дуже більшим, що ускладнить отладку і ужорсточить вимогу до вільної пам'яті.


    2.4.2 Розробка бібліотеки базових класів


Багатовіконний інтерфейс зі спроможністю розширення зручніше будувати з використанням обєктно-орієнтованого підходу.

Допоміжні типи.

Для зберігання координат об'єктів і їхніх розмірів доцільно розробити допоміжні типи.

  • Клас Tpoint. Об'єкт цього типу зберігає двумірні координати або розмір. Конструктор класу виконує перетворення двох чисел X і Y до типу класу. Перевантажені оператори “+” і “-“ дозволяють виконувати арифметичні дії над обома координатами відразу.

  • Клас Trect. Об'єкт цього типу зберігає інформацію про прямокутник: координати верхнього лівого куту, координати правого нижнього куту і розмір (для вигоди). Конструктори дозволяють створювати об'єкт класу на основі або чотирьох координат, або на основі двох об'єктів типу Tpoint. Перевантажені оператори “+” і “-“ дозволяють змінювати розмір і положення прямокутника, а оператори “|” і ”&” - виконувати бульові функції.

  • Клас Tmask. Об'єкт цього типу зберігає область висновку і дозволяє виконувати з нею бульові функції. Справа В Тому, що при перерисовці вмісту вікна воно може частково перекриються іншим вікном, і щоб при висновку не перерисовувати всі вікна верхнє вікно вичте логічні свою область висновку з області висновку перекриваючого вікна. Процедура, що буде позичатися безпосередно висновком, перевірить область і не буде виводити перекриття знакомісця.

  • Клас TEvent. Об'єкт цього типу зберігає інформацію про виниклу подію. Існує два джерела подій: клавiатура і внутрішній об'єкт. При натиску клавіші всім об'єктам передається контейнер події, в якому містяться код клавіші і стан службових клавіш. При Необхідності оновити інформацію в інших вікнах об'єкт генерує подію оновлення, в цьому випадку передається контейнер, в якому міститься код команди оновлення. Тип події (клавіша або команда) зберігається в поле what.


Видні об'єкти.

Для відображення інформації на екрані служать видні об'єкти. Видний об'єкт подає собою область висновку обмежену прямокутником. До видних об'єктів відносяться вікна, рядки введення, колонки вибору і ін. Всі ці класи є нащадками класу TView.

  • Клас TView. Об'єкт даного класу подає на екрані прямокутну область, заповнену яким-або кольорем. Засоби класу дозволяють створювати ієрархічне дерево об'єктів і маніпулювати ними. Всі об'єкти на екрані спадкуються від цього класу. Всі засоби класу проголошені як віртуальні і можуть бути перевантажені в похідних класах. Даний клас дозволяє зосередити всіх дії, зв'язані з прорисовкою і арбітражем подій в одному місці і засобом спадкування встроювати їхн в інші класи. Підлеглі об'єкти розташовуються у кольцевому буфері з дуплексними зв'язками. Об'єкт, що знаходиться в кореневому вузлі буферу вважається поточним і перекриваючим всі інші об'єкти даної групи.

  • Клас TPackMenu. Об'єкт даного класу подає елемент меню. Спадкується від TView і зберігає інформацію про назву пункту меню, гарячому клавіші і покажчик на підміню. Допускається відсутність якого-або параметру. Для функціонування елементів меню необхідні декілька інші відношення в ієрархії, тому деякі функції базового класу перевантажені і додані нові зв'язки.

  • Клас TMenu. Об'єкт даного класу передвизначений для зв'язку елементів меню з іншими об'єктами. Цей об'єкт як правило невидим і служить для передачі подій.

  • Клас TWindow. Об'єкт даного класу подає вікно на екрані. В полях класу знаходяться ім'я вікна, допустимий розмір і покажчик на локальне меню. Засоби класу виконують зміну розміру і положення вікна на екрані. Спадкується від TView.

  • Клас TEdit. Об'єкт цього класу подає собою рядок введення. Поля класу зберігають поточне положення і форму курсору, розмір рядка і покажчик на неї, а також покажчик на рядок зі списком допустимих символів. При надходженні події натиску клавіші даний об'єкт перевіряє можливість введення символу, якщо символ знаходиться в рядку допустимих, те він вставляється в результуючий рядок і виводиться на екран.

  • Клас TList. Об'єкт даного класу подає список об'єктів типу рядка. Список завжди розташується вертикально. Весь список в пам'яті не зберігається. При створенні цього об'єкту конструктору в якості параметру передається покажчик на функцію. При Необхідності висновку рядка на екран Об'єкт списку викликає цю функцію з необхідними параметрами для формування рядка.

  • Клас TSetBox. Об'єкт даного класу подає собою групу настанов. В кожному рядку розміщується ім'я параметру і ліворуч від нього ознака настанови в вигляді хрестика в квадратних дужках. Кожний параметр в групі може бути незалежно встановлений або скинутий.

  • Клас TSelect. Об'єкт даного класу подає собою групу взаємозависимих настанов. Він дозволяє вибрати один пункт з списку можливих. Пункти розміщуються вертикально і мають ліворуч ознаку настанови в вигляді звездочки в круглих дужках.

  • Клас TLabel. Об'єкт цього класу подає собою рядок заголовку над об'єктом на екрані. Він встроюються в кольцевий буфер замість об'єкту і транслює події і команди, відрізняя команду включення або виключення фокуса, те є ознаки поточного об'єкту. При включенні фокуса ім'я помітки підсвічується зеленим кольорем, а при виключенні - кольорем тла.

  • Клас TButton. Об'єкт даного класу подає собою кнопку. Для кнопки існує ім'я і гарячий клавіша при натиску введення, коли фокус знаходиться на кнопці або натиск гарячого клавіші в області чинності кнопки об'єкт даного класу поміщає в чергу подій передопреділену команду.

  • Клас TApp. Об'єкт даного класу здійснює зв'язок з ресурсами комп'ютера: клавiатурою і відеоадаптером. Спадкується від класу TView, але перевантажує всіх віртуальні функції зв'язані з трансляцією подій і запитань на перерисовку. Для реєстрації і зберігання подій є черга з політикою FIFO. Включення інтерфейсу в роботу здійснюється шляхом створення примірника даного класу і виклика засобу run (). При цьому відбувається очистка екрану і створення рядка статусу.


    2.4.3 Опис роботи бібліотеки базових класів


В основі принципу керування лежить концепція взаємодії тільки з найближчими підлеглими об'єктами і безпосереднім родичем. Безпосереднім спілкуванням з ресурсами комп'ютера позичається тільки клас TApp, що дозволяє зберегти контроль над цими ресурсами.

Всі класи видних об'єктів спадкуються від класу TView, в якому зосереджені всі основні функції по керуванню об'єктами.

При створенні об'єкту йому звичайно передаються координати лівого верхнього куту і розмір. При цьому об'єкт включається в кольцевий буфер якого-або вже існуючого об'єкту. Предком об'єктів верхнього рівня є об'єкт класу TApp. Для включення об'єкту в буфер використовується процедура add (). Об'єкт може бути виключений з буферу викликом засобу sub ().

Що виникає подія реєстрація угоди в черзі подій і передається всім підлеглим об'єктам по ієрархії. Першим контейнер події одержує об'єкт, що знаходиться в фокусе те є що є поточним. Він в свою чергу передає контейнер своїм нащадкам. Якщо подія розпізнана виконується його обробка, і керування вертається предку з кодом повернення, що говорять про розпізнанні події. Якщо подія була розпізнана, наступному об'єкту воно не передається.

Кожний об'єкт володіє мінімальним набором функцій висновку. В даний набір входять:

  • Функція висновку рядка з означеним атрибутом;

  • Функція висновку рядка з поточним атрибутом (поточний атрибут формується з кольору тла об'єкту, що задається при створенні, і контрасного йому кольору символів);

  • Функція заповнення прямокутної області певним символом з означеним або поточним атрибутами;

  • Функція заповнення прямокутної області означеним атрибутом без зміни вмісту символьної частини знакомісця.

Виклик будь-який з вищенаведених функцій проводить до передачі керування тієї частини об'єкту, що була наслідувана від класу TView. Базові функції даного класу створюють область висновку типу TMask необхідного розміру і заповнення цієї області переданими символами і атрибутами. Далі покажчик на область висновку передається предку, що виробляє виклик функції workmask () перекриваючих об'єктів. Ця функція виробляє виключення знакомісць, що безпосередно перекриваються даним об'єктом. Так по ієрархічному дереву область висновку доходить до об'єкту класу TApp, що виробляє аналіз області і висновок неперекритых знакомісць на екран.

При необхідності перерисовки будь-якої області на екрані викликається функція draw (), якої в якості параметру передаються координати прямокутної області, що повинна перерисоватись. Якщо ця область не перетинається з прямокутником об'єкту, керування вертається назад без виробництва будь-яких дій. Інакше виробляється виклик функції перерисовки підлеглих об'єктів.

Слідує відзначити, що підлеглий об'єкт не може “вылезти” за область свого предка. Дана обставина не виконується тільки для об'єктів, що подають пункти меню. Їхні нащадки розташуються поверх зі зміщенням.


    2.4.4 Опис об'єктів віконного інтерфейсу


Всі класи, безпосередно стосовні до віконного інтерфейсу емулятора спадкуються від класу TWindow. Це дозволяє зосередитися на створенні функціональності не піклуючись про взаємодію цих об'єктів.

  • Клас TCpu. Об'єкт даного класу подає собою вікно з дізасемблірованим фрагментом коду відлагодживаємої програми. В конструкторі об'єкту створюється примірник списку для висновку рядків команд. Функція handleEvent () перевантажена з метою відспостереження комбінацій клавіш, керуючим процесом виконання програми.

  • Клас TFile. Об'єкт даного класу подає собою вікно зі списком файлів поточного каталогу. Тут також використаний об'єкт типу списку. При створенні об'єкту відбувається читання поточного каталогу і виділення файлів типу“. com” і”. exe”, а також вкладених директорій.

  • Клас TRegs. Об'єкт даного класу подає собою вікно, в якому відображений стан регістрів загального призначення процесора ,що емулюється. Кожний рядок містить метку з ім'ям регістру і рядок введення з вмістом регістру. Натиском клавіші “Tab” виробляється зміна фокуса на наступний по списку регістр. В якості допустимих символів в рядок введення передаються символи, що використаються для відображення шістнадцятеричних чисел.

  • Клас TSregs. Об'єкт даного класу подає собою вікно, в якому відображений стан сегментних регістрів, а також регістру локальної таблиці дескрипторів і регістру сегменту стану задачі. Кожний рядок містить метку з ім'ям регістру і три рядки введення для бази, розміру і атрибутів регістру. Для рядків введення бази і розміру застосовуються символи, що використовуються в написанні шістнадцятеричних чисел, а для рядка введення атрибутів - символи для позначки двоїчних чисел.

  • Клас TSysReg. Об'єкт даного класу подає собою вікно, в якому відображається вміст системних регістрів. В дану групу війшли: покажчик команд EIP, системні регістри CRx, а також регістр таблиця глобальних дескрипторів і регістр таблиці переривань. Для відображення також використовуються метки і рядки введення.

  • Клас TFags. Об'єкт даного класу подає собою вікно, в якому відображається вміст регістру прапорів. Для відображення прапорів і зміни їхнього стану застосований об'єкт типу TSetBox. Коли вікно активно (знаходиться в фокусі) клавішами зі стрілками можна міняти поточний прапор, а клавішею пробілу або встановлювати його, або скидати.

  • Клас TDump. Об'єкт даного класу подає собою вікно, в якому відображається вміст вибраної дільниці пам'яті. Для відображення пам'яті використаний об'єкт типу списку. Це вікно має локальне меню, що викликається по клавішам “Alt+F10”, і служить для підтримання діалога з користувачем при зміні адреси дільниці ,що відображається або засобу подання інформації в вікні.

Клас TStack. Об'єкт даного класу подає собою вікно, в якому відображений поточний кадр стека відлагодживаємої програми. В кожному рядку відображається зміщення і вміст осередка. Розрядність осередка залежить від розрядність сегменту стека (16 або 32 розряду). Для відображення кадру стека використаний об'єкт типу списку. Поточний осередок стека (на яку вказує регістр (e) sp) помічається стрілкою ліворуч від адреси.


3 РОЗРОБКА АПАРАТНОЇ ЧАСТИНИ ЕМУЛЯТОРА


  1. Постанова задачі

При проектуванні материнських плат спецЕОМ виникають труднощі з їхньою отладкою. Застосування же стандартних материнських плат не завжди відповідає поставленій задачі, бо архітектура може і не співпадати. Для перевірки правильності функціонування чипсета на допомогу можуть прийти внутрисхемні емулятори процесорів. Під внутрисхемним емулятором в даному випадку розуміється цифрова схема, що для зовнішньої апаратури веде себе в точності як і реальний процесор, але надає можливості виробляти отладку як в покроковому режимі (одинковими синхроімпульсами), так і в динамічному режимі на частоті синхросигнала або близької по значенню, або відповідної реальної.

Внутрисхемный емулятор необов'язково повинен емулювати весь процесор. Достатньо буде побудувати емулятор інтерфейсного блоку, а емуляцію внутрішніх блоків може взяти на себе програмний емулятор.

В попередніх розділах було доведена оптимальність застосування в спецЕОМ процесора 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 залишається пасивним, сигналізуючи про можливість пакетного циклу.


4 ТЕХНІКО-ЕКОНОМІЧНЕ ОБГРУНТУВАННЯ ДИПЛОМНОГО ПРОЕКТУ


4.1 Вихідні дані і умови


Програмний продукт "Емулятор основних функціональних блоків мікропроцесору i486" (в подальшому "емулятор") подає собою інтегровану середу для вивчення і перевірки знань в області програмування сучасних мікропроцесорів типу i486 на мові Ассемблера на лабораторних роботах по дисципліні "Мікропроцесорні засоби і системи" по темам:

- мікропроцесор i486, захищений режим;

- мікропроцесор i486, сторінкова адресація.

Даний програмний продукт розроблений для роботи на ПЕОМ на базі більш ранніх мікропроцесорів фірми Intel типу 80286 і розрахований на користувачів, що мають необхідні знання в області програмування мікропроцесорів типу i486 в машинних кодах.

Емулятор має простий і зрозумілий інтерфейс з користувачем, достатньо зручний в звертанні.


4.2 Аналіз ринку подібних розробок


В теперішній час відчувається гострий брак системних програмних продуктів вітчизняного виробництва, в тому числі і програм-емуляторів мікропроцесорів і систем побудованих на їхній базі.

Перевага даної розробки полягає в тому, що при існуючому рівні технічної озброєності лабораторій є можливість використання її на застарілому обладнанні, в відзнаці від існуючого на ринку програмного забезпечення, що припускає використання сучасних обчислювальних засобів, що дорого коштують. Не маловажним фактором, також, є затрати зв'язані з оплатою праці на розробку проекту, що будуть набагато менші, ніж на подібні розробки вже існуючого програмного забезпечення, що відповідно знизить ціну на програмний продукт при його розповсюдженні.

Таким чином, дана розробка, при її невисокій ціні, малих апаратурних вимогах і більших технічних можливостях повинна позичити свою нишу на сучасному ринку ПО.


4.3 Проектно-конструкторська документація


Для розробки проекту необхідна наступна документація:

- технічне завдання на розробку емулятора;

- комплект документації на мову програмування C++;

- комплект довідкової документації по архітектурі і програмуванню мікропроцесору i486.

При використання програмного продукту необхідні наступні технічні засоби:

- персональний комп'ютер IBM i80x86 або з ним сумісний;

- оперативна пам'ять обсягом не менше 2 Мб;

- будь-який тип відеоадаптера і дісплею для роботи в текстовому режимі;

- операційна система MS DOS 3.30 або більш пізньої версії;

- наявність накопичувача на гнучких магнітних дисках або жорсткого диску.

До розробленого програмного продукту додається наступна документація:

- опис програми - відомості про логічну структуру і функціонування програми;

- керівництво програміста - відомості для експлуатації програми;

- керівництво оператора - відомості для забезпечення процедури спілкування оператора з обчислювальною системою в процесі виконання програми.


4.4 Планування термінів розробки проекту


Перелік етапів і робіт розробки проекту уявлений в таблиці 1, де прийняті наступні позначки:

А) П - інженер-програміст;

Б) К - керівник розробки;

В) Е - економіст-консультант.

З таблиці видно, що на розробку проекту інженер-програміст з місячним окладом 160 грн. Витрачає 96 днів, керівник з місячним окладом 190 грн. витрачає 35 днів, економіст-консультант з місячним окладом 120 грн. витрачає 3 дні.


Таблиця 1 - Зведена таблиця тривалості і трудомісткості


Найменування етапу Найменування роботи

Виконавець,

Посада, спеціальність

Кількість виконателей Тривалість виконання роботи
1 2 3 4 5
1. Подготови-тельная стадія
  1. Підбір, вивчення літ.

  2. Вивчення і аналіз аналогічних розробок

  3. Економічне обгрунтування доцільності виконання проекту

  4. Укладання ТЗ

  5. Погодження ТЗ

  6. Укладання плану і калькуляція розробки

П, К


П


К, Е


К

К

К, Е

2


1


2


1

1

2

2


5


1


1

3

2

2. Теоретична розробка
  1. Уточнення техніко-економічного обгрунтування

  2. З'ясування принципових шляхів створення системи

  3. Уточнення загального обсягу робіт, термінів виконання і затрат

П, К


П


П, К

2


1


2

1


1


1

3. Практична реалізація
  1. Розробка різноманітних варіантів побудови

  2. Розробка структури

  3. Укладання списку необхідної документації

П, К


П

П, К

2


1

2

5


3

3

4. Доопрацювання системи
  1. Розробка блок-схем програм

  2. Реалізація програм

  3. Розробка блок-схем інтерфейсу

  4. Реалізація бібліотеки інтерфейсу

  5. Тестирование

  6. Розробка комплексу системи допомоги

  7. Підготовка звіту

  8. Підготовка керівництва користувача

П


П

П


П


П

П


П

П

1


1

1


1


1

1


1

1

7


14

7


14


3

3


3

3

5. Заключний етап
  1. Тестування програми на комплексі задач

  2. Навчання персоналу

  3. Досвідчена експлуатація ПО

  4. Аналіз експлуатації ПО

  5. Внесення змін в ПО ітехнічну документацію

П, К


П

П, К


П, К

П

2


1

2


2

1

7


3

7


2

7


4.5 Фінансово-економічна оцінка проекту

В кошторис витрат на розробку проекту включаються:

- затрати на заробітну плату;

- відрахування в фонд соц. страхування (4.5%);

- відрахування в пенсійний фонд (25%);

- відрахування в фонд Чорнобиля (6%);

- відрахування в фонд зайнятості (1%);

- додаткові витрати:

1) затрати на дискети;

2) затрати на літературу;

3) затрати на папір і смугу для принтера;

- видатки на оренду машинного часу.

Затрати на заробітну плату розраховуються по формулі:

Ззп=К* (МО*QДР)/24*Кпр, (7.1)

Де:

Ззп - затрати на заробітну плату;

К - кількість фахівців;

МО - місячний оклад;

Qдр - кількість днів роботи;

Кпр - коефіцієнт премії.

Затрати на заробітну плату інженерів-програмістів:

Зп. Пр=(160*96)/24*1. 25=800 (грн).

Затрати на заробітну плату керівника проекту:

Зкп. Зп=(190*35)/24*1. 25=346.36 (грн).

Затрати на заробітну плату економіста-консультанта:

Зе. Зп=(120*3)/24*1. 25=18.75 (грн).

Загальна заробітна плата:

Ззп=Зп. Пр+Зкп. Зп+Зе. Зп, (7.2)

Ззп=800+346.36+18.75=1165.11 (грн).

Додаткові витрати розраховуються по наступній формулі:

Вд=Здс+Зл+Зб, (7.3)

Де:

Вд - додаткові витрати;

Вдс - витрати на дискети (1 грн);

Вл - витрати на літературу (20 грн);

Вп - витрати на папір і смугу для принтера (15 грн).

Вд=1+20+15=36 (грн).

Вартість машинного часу:

Вмч=K*Qдр*7*Сч, (7.4)


Де:

Вмв - витрати на оренду машинного часу (при роботі програміста 64 дня на машині);

K - кількість фахівців;

Qдр - кількість днів роботи;

Сч - ціна однієї години машинного часу.

Вартість однієї години машинного часу визначається з розрахунку:

- річна заробітна плата основна і додаткова:

1) керування ОЦ - ЗПУ=12 250=3000 (грн);

2) обслуговування - ЗПО=160 12=1920 (грн);

3) ремонт - ЗПР=800 (грн);

- вартість машин і обладнання:

1)

Если Вам нужна помощь с академической работой (курсовая, контрольная, диплом, реферат и т.д.), обратитесь к нашим специалистам. Более 90000 специалистов готовы Вам помочь.
Бесплатные корректировки и доработки. Бесплатная оценка стоимости работы.

Поможем написать работу на аналогичную тему

Получить выполненную работу или консультацию специалиста по вашему учебному проекту

Похожие рефераты: