Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Kursach.docx
Скачиваний:
5
Добавлен:
24.12.2018
Размер:
245.92 Кб
Скачать

Зміст

1. Технічне завдання

1.1. Предмет проектування 1.2. Загальні вимоги до розробляється процесору

1.3. Вихідні дані для курсового проектування 1.4. Результати проектування

2. Послідовність виконання курсового проекту

2.1. Уточнення структури системи

2.2. Розробка архітектури зовнішніх висновків 2.3. Вибір форматів даних 2.4. Визначення структури реєстрової пам'яті 2.5. Вибір форматів команд 2.6. Розробка системи команд 2.7. Внутрішня організація 2.8. Основні алгоритми функціонування 2.9. Алгоритми виконання окремих операцій 2.10. Розробка алгоритмів виконання основних операцій на шині

3. Оформлення курсового проекту

Література.

Змн.

Арк.

докум.

Підпис

Дата

Арк.

2

Комп'ютерна архітектура

Осипенко Д. С.

.

Шевельов Р. Н.

Завдання на курсовий проект.

У процесі виконання курсового проекту розробляються: 1) формати команд і даних; 2) регістрова модель процесора, включаючи користувацькі і системні регістри; 3) структура висновків кристала; 4) система команд, включаючи семантику їх виконання та встановлення прапорців; 5) узагальнений алгоритм функціонування процесора, включаючи алгоритми виконання основних команд; 6) алгоритми виконання основних операцій на шині (читання, запис, введення, виведення, захоплення шини, переривання), необхідно передбачити пакетний режим обміну між і кеш пам'яттю; 7) внутрішня організація (до структурного рівня), включаючи механізми віртуальної пам'яті, механізми захисту пам'яті і механізми роботи з кеш-пам'яттю.

Розробляється процесор призначений для використання в якості ЦП робочої станції (варіанти з традиційною архітектурою) або як вбудованого процесора.

Рисунок. 2.1 Загальна структура робочої станції.

Загальна структура робочої станції показана на рисунку 2.1. До складу станції входять кілька процесорних кристалів, які становлять предмет розробки, ОЗП, системний чіп, контролери зовнішніх пристроїв і відеоадаптер. Є дві шини: швидка системна шина і шина введення-виведення, розділені системним чіпом. Як шина вводу-виводу зазвичай використовується стандартна шина, наприклад PCI. Системний чип (чіпи) містять зовнішню логіку (таймери, RTC, контролери і т.п.).

Рисунок. 2.2 Узагальнена гарвардська архітектура.

Узагальнена структура, відповідна гарвардської архітектури, наведена на рисунку 2.2. Вона являє собою ЕОМ з однією платою, призначену для вбудованих пристроїв. На платі розміщуються: ЦП, пам'ять даних, лічильник-таймер, адаптер інтерфейсу. Крім того, на платі можуть розміщуватися допоміжні схеми та інтерфейсні схеми для підключення зовнішніх пристроїв (на рисунку 2.2 ці схеми не показані).

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

Рисунок 2.3 Рисунок. 2.4

Загальна архітектура зовнішніх виводів кристала ЦП таспівпроцесора.

При розробці архітектури зовнішніх висновків слід орієнтуватися на використання стандартних корпусів, які мають, відповідно, 40, 68, 132, 144. 168, 172 виводів. У випадку, якщо залишаються "зайві" виводи, вони можуть бути використані для наступних цілей: - Дублювання контактів "Живлення" і "Заземлення"; - Збільшення розрядності шини адреси; - Введення декількох рівнів переривання.

Узагальнена архітектура зовнішніх виводів кристала ЦП показана на рисунку 2.3, а співпроцесора - на рисунку 2.4.

Процесор, зображений на рисунку 2.3, має поєднану шину адреси і даних (AD). Сигнал ALE використовується для фіксації адреси на зовнішньому регістрі-клямці. Пара сигналів HLD і HLDA використовується для реалізації механізму захоплення шини. Сигнали INT і INTA є сигналами запиту та підтвердження переривання. Якщо на корпусі є достатня кількість вільних висновків, то доцільно ввести декілька рівнів запиту на переривання.

Лінії RD (Читання), WR (Запис), IN (Введення), OUT (Виведення), BHE (Дозвіл записи старшого байта) задають на шині операцію, яка виконується. Лінія FRAME використовується для організації режиму пакетного обміну між ОЗП і внутрішніми кешами. Поява даного сигналу на шині позначає початок транзакції, а зняття вказує на те, що наступний цикл передачі даних на шині є останнім. Сигнал WAIT використовується для організації взаємодії з зовнішнім математичним співпроцесором.

На контакт WAIT надходить сигнал від співпроцесора про закінчення обчислень. Контакт READY (Готовність) служить для прийому сигналу готовності від повільних зовнішніх пристроїв.

На рисунку 2.4 показаний можливий варіант архітектури зовнішніх виводів співпроцесора. У співпроцесора (рисунок 2.4) на виводі FPBUSY видається одиничний сигнал, вказуючи на те на те, що співпроцесор зайнятий. По лінії FPINT видається сигнал переривання в разі виникнення помилкової ситуації типу спроби поділу на нуль. Призначення інших висновків таке ж, як і однойменних висновків ЦП.

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

виступати порт вводу-виводу, а потім продовжує роботу. При необхідності обчислення пам'яті адреси виконуються в ЦП. Для перевірки доступності ЦП може використовуватися, наприклад, спеціальна команда WAIT.

Регістри процесора

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

  • Регістри даних — використовуються для збереження цілочисельних даних (див.нижче регістри плаваючої коми). В деяких архітектурах, відомих як акумуляторні, такий регістр лише один.

  • Адресні регістри — зберігають адреси (номери комірок) в пам'яті та використовуються в операціях з пам'яттю. Такі регістри іноді називаються індексними або базовими.

  • Регістри загального призначення — можуть зберігати і дані, і адреси

  • Регістри плаваючої коми — призначаються для зберігання даних для обчислень з плаваючою комою

  • Регістри констант — зберігають константи (наприклад в RISC-архітектурах регістр з порядковим номером нуль зазвичай зберігає константу нуля).

  • Векторні регістри — зберігають векторні дані та забезпечують векторні обчислення (наприклад, в мультимедійних розширеннях архітектури x86).

  • vРегістри спеціального призначення — зберігають внутрішню інформацію, необхідну для функціонування процесора (лічильник команд, вказівник стеку, регістр стану процесора та ін.).

У групу регістрів даних включаються регістри AX, BX, CX і DX. Програміст може використати їх на власний розсуд для тимчасового зберігання будь-яких об'єктів(даних або адрес) і виконання над ними необхідних операцій. При цьому регістри допускають незалежне звернення до старших(AH, BH, CH і DH) і молодших(AL, BL, CL і DL) половин. Так команда

mov BL, AH

пересилає старший байт регістра AX в молодший байт регістра BX, не зачіпаючи при цьому других байтів цих регістрів. Ще раз відмітимо, що спочатку вказується операнд-приймач, а після коми - операнд-джерело, тобто команда виконується як би справа наліво. У багатьох випадках регістри

загального призначення цілком еквівалентні, проте прийнятніше в першу чергу використати AX, оскільки багато команд займають в пам'яті менше місця і виконуються швидше, якщо їх операндом є регістр AX(чи його половини AH або AL).

Індексні регістри SI і DI так само, як і регістри даних, можуть використовуватися довільним чином. Проте їх основне призначення - зберігати індекси(зміщення) відносно деякої бази(тобто начала масиву) при вибірці операндів з пам'яті. Адреса бази при цьому зазвичай знаходиться в одному з базових регістрів(BX або BP). Приклади такого роду будуть наведені нижче.

Регістр BP служить покажчиком бази при роботі з даними в стекових структурах, про що буде мова попереду, але може використовуватися і довільним чином у більшості арифметичних і логічних операцій або просто для тимчасового зберігання яких-небудь даних.

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

Регістри SI, DI, BP і SP, на відміну від регістрів даних, не допускають побайтову адресацію.

Чотири сегментні регістри CS, DS, ES і SS зберігають початкові адреси сегментів програми і, тим самим, забезпечують можливість звернення до цих сегментів.

Регістр CS забезпечує адресацію до сегменту, в якому знаходиться код команд програми, регістри DS і ES, - до сегментів даних(таким чином, у будь-якій точці програма може мати доступ до двох сегментів даних, основному і додатковому), а регістр SS - до сегменту стека. Сегментні регістри, природно, не можуть виступати регістрами загального призначення.

Покажчик команд IP " стежить" за ходом виконання програми, вказуючи в кожен момент відносну адресу команди, що йде за виконуваною. Регістр IP програмно недоступний(IP - це просто його скорочена назва, а не мнемонічне позначення, використовуване в мові програмування); нарощування адреси в нім виконує мікропроцесор, враховуючи при цьому довжину поточної команди.

Регістр прапорів, еквівалентний регістру стану процесора інших обчислювальних систем, містить інформацію про поточний стан процесора. Він включає 6 прапорів стану і 3 біта управління станом процесора, які, втім, теж зазвичай називаються прапорами.

Прапор перенесення CF(Carry Flag) відображає перенесення або позику при виконанні арифметичних операцій, а також служить індикатором помилки при зверненні до системних функцій.

Прапор паритету PF(Parity Flag) встановлюється в 1, якщо молодші 8 біт результату операції містять парне число двійкових одиниць.

Прапор допоміжного перенесення AF(Auxiliary Flag) використовується в операціях над упакованими двійково-десятковими числами. Він відображає перенесення або позику із старшої тетради(біта 4).

Прапор нуля ZF(Zero Flag) встановлюється в 1, якщо результат операції дорівнює нулю.

Прапор знаку SF(Sign Flag) показує знак результату операції, встановлюючись в 1 при негативному результаті.

Прапор переповнювання OF(Overflow Flag) фіксує переповнювання, тобто вихід результату операції за межі допустимого для цього процесора діапазону значень.

Прапори стану автоматично встановлюються процесором після виконання кожної команди. Так, якщо в регістрі AX міститься число 1, то після виконання команди декремента(зменшення на 1)

dec AX

вміст AX дорівнюватиме 0, і процесор відразу відмітить цей факт, встановивши в регістрі прапорів біт ZF(прапор нуля). Якщо спробувати скласти два великі числа, наприклад, 58000 і 61000, то встановиться прапор перенесення CF, оскільки число 119000, що виходить в результаті складання, повинні зайняти більше двійкових розрядів, чим поміщається в регістрах або елементах пам'яті, і виникає " перенесення" старшого біта цього числа у біт CF регістра прапорів.

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

jz zero

здійснює перехід на мітку zero, якщо результат виконання попередньої команди дорівнюватиме нулю(тобто прапор ZF встановлений), а команда

jnc okey

виконає перехід на мітку okey, якщо попередня команда скинула прапор перенесення CF(чи залишила його в скинутому стані).

Прапор трасування TF(Trace Flag), що управляє, використовується у відладчиках для здійснення покрокового виконання програми. Якщо TF = 1, то після виконання кожної команди процесор реалізує процедуру переривання 1(через вектор переривання з номером 1).

Прапор дозволу переривань IF(Interrupt Flag), що управляє, дозволяє(якщо рівний 1) або забороняє(якщо рівний 0) процесору реагувати на переривання від зовнішніх пристроїв.

Прапор напряму DF(Direction Flag), що управляє, використовується особливою групою команд, призначених для обробки рядків. Якщо DF = 0, рядок обробляється в прямому напрямі, від менших адрес до великих; якщо DF = 1, обробка рядка йде у зворотному напрямі.

Таким чином, на відміну від бітів стану, прапори, що управляють, встановлює або скидає програміст, якщо він хоче змінити налаштування системи(наприклад, заборонити на якийсь час апаратні переривання або змінити напрям обробки рядків).

Процесор в загальному випадку містить 2 групи регістрів: - Призначені для користувача регістри; - Системні регістри.

Системні регістри доступні тільки при роботі в режимі ядра.На етапі визначення структури регістровий пам'яті обираються:

- Число регістрів різних типів та їх розрядність; - Склад і структура регістра прапорців.

Користувальницькі регістри, в свою чергу, поділяються на адресні, цілочисельні і регістри з ПК.

Часто одні й ті ж регістри використовуються як в якості адресних, так і в якості цілочисельних (РЗП). Крім того, зазвичай є деяка кількість керуючих регістрів.

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

Рисунок. 2.6 Структура зовнішнього співпроцесора

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]