МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ
НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ “ЛЬВІВСЬКА ПОЛІТЕХНІКА”
КАФЕДРА «ЕЛЕКТРОННІ ОБЧИСЛЮВАЛЬНІ МАШИНИ»
Пояснювальна записка
до курсової роботи з дисципліни
“Архітектура комп’ютерів” на тему:
“Проектування комп’ютера”
Виконав:
ст. гр. КІ-34
Тітко М. І.
Прийняла:
ст. викл.
Ногаль М. В.
Львів 2010
Анотація
Курсовий проект з дисципліни «Архітектуракомп’ютера являє собою підсумок у вивченні предмету „Архітектура комп’ютерівч.1“. Протягом його виконання необхідно засвоїти знання про принципи дії таархітектуру прототипних варіантів CISC — комп’ютера. Також під час виконання курсовоїроботи необхідно зрозуміти та опанувати інструкції асемблерної мови і принцип трансляціїасемблерної програми у машинний код.
Даний курсовий проект складається з трьох частин:
ü Розробка програми-асемблера, якаперетворює вхідний асемблерний код програми у відповідний код на мові машинних інструкцій.
ü Розробка поведінкового симуляторарезультуючого машинного коду.
ü Розробка тестової програми наасемблерній мові.
Також до записки з курсової роботи входять додатки,з вихідними кодами програми-асемблера, симулятора і кодом тестової програми з результатамиїї виконання.
Зміст
Вступ
Система команд
Способи адресації
Вихідні дані на проектування
Роз'яснення та аналіз основних принципів побудовикомп'ютерів на прикладі визначених на реалізаціюінструкцій
Перевірка правильності роботи реалізованих команд уприкладах
Висновок
Література
Додатки
Вступ/>
Архітектурні принципи
В ході виконання даного курсового проекту студентмає ознайомитись та опанувати архітектуру CISC — комп’ютера. Приведемо основні принципиданої архітектури, які запропонував Джон фон Нейман:
1. Інформація кодується в двійковому представленні.
2. Інформація в комп’ютері ділиться на команди і дані.
3. Різнотипні за змістом слова розрізняються за способомзастосування, а не по способу кодування.
4. Слова інформації розміщаються в комірках пам’яті таідентифікуються номерами комірок — адресами слів.
5. Пам’ять є лінійною.
6. Пам’ять має довільну адресацію.
7. Команди і дані зберігаються в одній пам’яті.
8. Алгоритми представляються у вигляді послідовності керуючихслів, як називаються командами. Команда визначається найменуванням операції та слівінформації, які в ній приймають участь. Алгоритм записаний у вигляді послідовностікоманд, називається програмою.
9. Весь набір виконуваних комп’ютером команд називаєтьсясистемою команд комп’ютера.
10. Виконання обчислень, які визначені алгоритмом, являютьсобою послідовне виконання команд в порядку визначеному програмою.
Для виконання задачі на комп’ютері необхідно:
- забезпечитивибірку команди програми із його пам’яті в заданій послідовності, організувати зверненнядо неї за відповідними адресами;
- забезпечитирозпізнавання типів виконуваних операцій;
- організуватизвернення до пам’яті за відповідними адресами для вибірки необхідних для виконаннякожної команди даних;
- організувативиконання над даними операцій відповідно до вказівок команд;
- запам’ятатирезультат обчислень.
Комп'ютер виконує кожну команду як послідовністьпростих операцій:
1. Вибірка чергової команди із основної пам'яті.
2. Визначення типу вибраної команди, тобто її дешифрування.
3. Визначення адрес даних, необхідних для виконання цієїкоманди.
4. Виконання операцій пересилання даних (зчитування данихіз пам'яті в регістри процесора).
5. Виконання операції відповідно до її коду в полі кодуоперації команди.
6. Визначення адрес, за якими запам'ятовуються результати.
7. Запам'ятовування результатів.
8. Підготовка до виконання наступної команди, тобто обчисленняїї адреси.
Для процесора комп'ютера із складною системою командхарактерні наступні
особливості:
- виконаннякоманди за багато тактів, оскільки для цього потрібно здійснити багаторазові операціїзвернення до основної пам'яті та до програмно-доступних регістрів процесора;
- орієнтаціяАЛП на виконання великої кількості операцій, що пов'язано з розширеним складом системикоманд;
- складна системарозпізнавання команди, що пов'язано з великою кількістю методів адресації та великоюкількістю форматів команд різної розрядності;
- програмнедешифрування команд з метою зменшення затрат обладнання;
- складна організаціяконвеєризації виконання команд, що пов'язано, в першу чергу, з різнотипністю їхвиконання;
- орієнтаціяструктури на виконання команд типу регістр-пам'ять та пам'ять-пам'ять.
Основні елементи процесора — арифметико-логічнийпристрій, пристрій керування і регістрова пам'ять або, як її ще називають, надоперативнийзапам'ятовуючий пристрій. До складу регістрової пам'яті, в свою чергу, входять наступнівузли — програмний лічильник, регістри: адреси, команди, даних, слова стану програми,а також регістровий файл, який складається з програмно доступних регістрів.
Структура регістрової (надоперативної) пам'ятіпроцесора складається з регістрів спеціального та зального призначення. До регістрівспеціального призначення належать:
- регістри адреси(РгА);
- регістри команд(РгК);
- програмнийлічильник (ПЛ)
- регістри даних(РгД).
РгА зберігає адресу даного або команди при зверненнідо основної пам'яті. РгД зберігає операнд при його запису або зчитуванні з основноїпам'яті. В ролі операнда може бути дане, команда або адреса. РгК зберігає командупісля її зчитування з основної пам'яті. ПЛ підраховує команди та зберігає адресупоточної команди. Комп'ютер з архітектурою Джона фон Неймана має один програмнийлічильник.
Більшість комп'ютерів мають в складі процесоратригери для зберігання бітів стану процесора, або, як їх іще називають, прапорців.Кожен прапорець має спеціальне призначення. Частина прапорців вказує на результатиарифметичних і логічних операцій: додатній результат (Р), від'ємний результат (N),нульовий результат (Z), перенос (С), арифметичне переповнення (V), і т.д. В системікоманд комп'ютера є команди, які вказують процесору коли встановити чи скинути цітригери. Інша частина прапорців вказує режими захисту пам'яті. Існують також прапорці,які вказують пріоритети виконуваних програм. В деяких процесорах додаткові тригерислужать для зберігання кодів умов, формуючи регістр кодів умов. Взяті разом описаніпрапорці формують слово стану програми (ССП), а відповідні тригери — регістр ССП.Регістри загального призначення (РЗП) є програмно доступними. Зазвичай їх називаютьрегістровим файлом. Вони можуть використовуватись програмістом в якості регістрівдля зберігання даних.
/>Система команд
Різноманітність типів даних, форм представленнята опрацювання, необхідні дії для обробки та керування ходом виконання обчисленьпризводить до необхідності використання різноманітних команд — набора команд.
Кожен процесор має власний набір команд, який називаєтьсясистемою команд процесора.
Система команд характеризується трьома аспектами:
- формат,
- способи адресації,
- система операцій.
Форматом команди — є довжина команди, кількість,розмір, положення, призначення та спосіб кодування полів. Команди мають включатинаступні види інформації:
- тип операції,яку необхідно реалізувати в даній команді (поле команду операції — КОП);
- місце в пам’ятізвідки треба взяти перший операнд (А1);
- місце в пам’ятізвідки треба взяти другий операнд (А2);
- місце в пам’ятікуди треба помістити результат (А3).
Кожному з цих видівінформації відповідає своя частина двійкового слова — поле. Реальна система командзазвичай має команди декількох форматів, тип формату визначає КОП.
Команда в комп'ютері зберігається в двійковій формі.Вона вказує тип операції, яка має бути виконаною, адреси операндів, над якими виконуєтьсяоперація, та адреси розміщення результатів виконання операції. Відповідно до цьогокоманда складається з двох частин, коду операції та адресної частини.
КОП займає k розрядів. Ним може бути закодованодо N = 2k різних операцій. Кількість двійкових розрядів, які відводятьсяпід код операції, вибирається таким чином, щоб ними можна було закодувати всі виконуванів даному комп'ютері операції. Якщо деякий комп'ютер може виконувати Ncрізних операцій, то мінімальна розрядність поля коду операції k визначається наступнимчином: k = [log Nc], де вираз в дужках означає заокруглення до більшогоцілого.
Поле адреси (адресна частина) займає m розрядів.В ньому знаходяться адреси операндів. Кожна адреса займає mi розрядів,де і — номер адреси (і=1,2,. n), n — кількість адресних полів. Кожною адресою можнаадресувати пам'ять ємністю 2nі слів.
Розмір команди k + m повинен бути узгодженим зрозміром даних, тобто бути з ним однаковим або кратним цілому числу, що спрощуєорганізацію роботи з пам'яттю. Як правило, розмір команди рівний 8, 16, 32 біти.
При написанні програми крім двійкової можуть використовуватисьй інші форми представлення команд: вісімкова, шістнадцяткова, символьна (мнемонічна).Використання вісімкового і шістнадцяткового кодування дозволяє скоротити записиі спростити роботу програміста. Як відомо 3 двійкових розряди (тріада) замінюютьсяна 1 вісімковий, а 4 двійкових розряди (тетрада) — на 1 шістнадцятковий. Приклад:
(000011111111) 2= (0377) 8=(0FF) 16;
Мнемонічне кодування спрощуєпроцес написання, читання і відлагодження програми. Основний принцип такого кодування- кожна команда представляється 3-х або 4-х буквеним символом, який показує назвукоманди. Деякі приклади мнемонічного кодування:
ADD — додати (add),
SUB — відняти (subtract),
MPY — перемножити (multiply),
DIV — поділити (divide).
Операнди також представляються символічно. Наприкладкоманда ADD R Y означає додавання вмісту комірки пам'яті Y до вмісту регістра R.Зауважимо, що операція виконується над вмістом, а не над адресою комірки пам'ятіта регістра.
Таким чином, з'являється можливість написання машиннихпрограм в символічній формі. Повний набір символічних назв і правила їх використанняутворюють мову програмування, відому як асемблерна мова. Символічні імена називаютьсямнемонічними, а правила їх використання для створення команд і програм називаютьсясинтаксисом мови.
Програма, яка переводить із мнемонічного коду асемблерноїмови в машинний, називається асемблером. Команди, які використовуються для переводувихідної програми в асемблерну, називаються командами асемблера. Ці команди вказуютьяк інтерпретувати назви, де розмістити програму в пам'яті, яка кількість комірокпам'яті необхідна для зберігання даних.
Способи адресації
Варіанти інтерпретації бітів (розрядів) поля адреси з метою знаходженняоперанда називаються способами адресації. Коли команда вказує на операнд, він можезнаходитись в самій команді, в основній або зовнішній пам'яті чи в регістровій пам'ятіпроцесора. За роки існування комп'ютерів була створена своєрідна технологія адресації,яка передбачає реалізацію різних способів адресації, чому послужило ряд причин:забезпечення ефективного використання розрядної сітки команди; забезпечення ефективноїапаратної підтримки роботи з масивами даних; забезпечення задання параметрів операндів;можливість генерації великих адрес на основі малих. Існує велика кількістьспособів адресації. Розглянемо п’ять основних способів адресації операндів в командах.
Пряма — в цьому випадкуадресне поле зберігає адресу операнда. Її різновидом є пряма регістрова адресація,яка адресує не комірку пам’яті а номер регістру.
Безпосередня — в полеадреси команди поміщається не адреса, а сам операнд.
Непряма — в полі адресикоманди зберігається адреса комірки пам’яті в якій знаходиться адреса операнда.Такій спосіб дозволяє оперувати з адресами як з даними. Різновид непряма-регістроваадресація, адреса адреси зберігається в регістрі загального призначення.
Відносна — адреса формується,як сума з двох доданків: бази, яка зберігається в спеціальному регістрі чи в одномуз регістрів спеціального призначення, та зміщення, яке задається в полі адреси команди.Різновид індексна та базова індексна. При індексній замість базового регістра єіндексний, який автоматично модифікується (зазвичай збільшується на 1). Базова-індекснаадресація формується адреса як сума трьох доданків: бази, індексу та зміщення.
Безадресна — поле адресив команді відсутнє. Адреса операнда, або немає змісту або є по замовчуванню (наприкладдії на спеціальним регістром — акумулятором). Безадресні команди неможливо використатидля інших регістрів чи комірок пам’яті. Одним з різновидів безадресної адресаціїє використання стеку. В команду вводяться спеціальні ознаки з тим, щоб пристрійкерування міг розпізнати використаний спосіб. Це можуть бути додаткові розряди вкоманді, або для різних типів команд закріплюватись різні способи адресації./>/>/>Вихідні дані на проектуванняВаріант №9 № Арифметичні Логічні Керування Прапорці Адресація 1 2 3 4 5 6 7 8 1 2 3 9 3 5 9 1 2 17 2 10 ZF 2 3 5 1
1. Реалізація додаткових команд. Необхідно реалізувати8 додаткових команд. Серед них 3 арифметичні, 3 логічні та 2 команди керування згідноваріанту. В таблиці представлено повний перелік множини інструкцій. № Код інструкції Двійкове значення Зміст Тип
/>/>1 ADD 00000 Додає вміст регістру regA до вмісту regB, та зберігає в destReg R 2 DIV 01000 Беззнакове ділення destReg=regA/regB R 3 IMUL 01001 Знакове множення destReg=regA*regB R 4 XIDIV 01010 Знакове ділення і обмін операндів місцями destReg=regA/regB R
/>/>5 AND 01011 Побітове логічне І: destReg=regA & regB R 6 NAND 00001
Виконує логічне побітове І-НЕ вмісту regA з вмістом regB, та
зберігає в destReg R 7 XOR 01100 Додавання по модулю 2: destReg=regA # regB R 8 CMPGE 01101 Порівняти regA regB destReg= regA >= regB R
Інструкції R-типу:
біти 24-22: код операції
біти 21-19: reg A
біти18-16: reg B
біти15-3: не використовуються (=0)
біти 2-0: destReg
/>№
Код
інструкції
Двійкове
значення Зміст Тип
/>9 LW 00010
Завантажує regB з пам’яті. Адреса пам’яті формується
додаванням зміщення до вмісту regA. I
/>10 SW 00011
Зберігає вміст регістру regB в пам’ять. Адреса пам’яті
формується додаванням зміщення до вмісту regA. I 11 BEQ 00100
Якщо вміст регістрів regA та regB однаковий, виконується
перехід на адресу програмний лічильник (ПЛ) + 1+зміщення, в ПЛ зберігається адреса поточної тобто beq інструкції. I 12 JMAE 01110 Беззнакове більше/рівно if (regA>= regB) PC=PC+1+offSet I 13 JMNAE 01111 Беззнакове не більше/рівно if (regA! >= regB) PC=PC+1+offSet I 14 JNE 10010
Перейти, якщо більше чи рівно, if (ZF!
=0) PC=offset I
I-тип інструкцій:
біти 24-22: код операції
біти 21-19: reg A
біти18-16: reg B
біти 15-0: зміщення (16 біт, значеннявід — 32768 до 32767)
offset />№ Код інструкції Двійкове значення Зміст Тип 15 JARL 00101
Спочатку зберігає ПЛ+1 в regB, в ПЛ адреса поточної (jalr)
інструкції. Виконує перехід на адресу, яка зберігається в regA. Якщо в якості regA regB задано один і той самий регістр, то спочатку в цей регістр запишеться ПЛ+1, потім виконається перехід до ПЛ+1. J 16 BSF 10000 Побітове сканування в прямому (від молодших до старших) напрямку regA в пошуках біта з 1, повертає номер позиції в destReg. Якщо 1 знайдено ZF=1, інакше ZF=0 J 17 BSR 10001
Побітове сканування в зворотньому напрямку (від старших до молодших) regA в пошуках біта з 1, повертає номер позиції в destReg. Якщо 1
знайдено ZF=1, інакше ZF=0 J
J-тип інструкцій:
біти 24-22: код операції
біти 21-19: reg A
біти 18-16: reg B
біти 15-0: не використовуються(=0)
unused />
Додатковий тип адресації — безадресна (реалізаціястеку). Ця адресація имагає двох додаткових інструкцій: PUSH, POP. № Код інструкції Двійкове значення Зміст Тип 18 HALT 00110
Збільшує значення ПЛ на 1, потім припиняє виконання,
стимулятор має повідомляти, що виконано зупинку. O 19 NOOP 00111 Нічого не виконується O 20 PUSH 10011 Записати в стек з 1 регістру O 21 POP 10100 Зчитати з стеку в 1 регістр O
O-тип інструкцій:
біти24-22: код операції
біти21-0: не використовуються (=0)
unused />\Роз'яснення та аналіз основних принципівпобудови комп'ютерів на прикладі визначених на реалізацію інструкцій
Структура СК після модифікації:
/>
Рис 1. Функціональна схема СК після модифікації
В СК було додано 13 інструкцій, внаслідок чогополе КОП збільшилося на 2 біти до 5 біт (максимально 32 інструкції з яких використано21). Решта частина коду операції не зазнала зміни. Був доданий стек глибиною 32слова по 32 біти, покажчик вершини стеку, прапорець стану ZF.
Перевірка правильності роботиреалізованих команд у прикладах
1. div: 45/5=9.