1   2   3   4
Ім'я файлу: Курсова робота АК Жукевич І.І..docx
Розширення: docx
Розмір: 994кб.
Дата: 20.08.2022
скачати
Пов'язані файли:
Quiz.docx
Контроль качества металлопродукции - учебное пособие.doc
Лабораторна робота АК №4.docx
Лабораторна робота АК №2.docx

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ

НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ “ЛЬВІВСЬКА ПОЛІТЕХНІКА”

КАФЕДРА ЕЛЕКТРОННИХ ОБЧИСЛЮВАЛЬНИХ МАШИН



ПОЯСНЮВАЛЬНА ЗАПИСКА

до курсової роботи на тему:

ПРОЕКТУВАННЯ КОМП’ЮТЕРА

з дисципліни “Архітектура комп’ютерів”

Варіант № 6

Виконав:

студент групи КІ-34

Жукевич І.І.

Перевірив:

Жолубак І.М.

Львів- 2021

АНОТАЦІЯ


В даній курсові роботі розглядаються принципи проектування комп’ютерів з архітектурою CISC. Здійснено аналіз основних принципів побудови комп’ютерів з використанням вище згаданої архітектури. Здійснено аналіз розроблених інструкцій. Подано схеми спроектованих комп’ютерів, а також опис створених форматів команд. Розглянуто алгоритм роботи розробленого симулятора та асемблера.








Зміст


АНОТАЦІЯ 2

Вхідні дані на проектування. 4

1.Аналіз основних принципів побудови комп’ютерів. 5

2.1. Система команд 9

1.2. Способи адресації 10

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

2.1. Алгоритми роботи розробленого асемблера 12

2.2. Алгоритми роботи розробленого симулятора 13

2.3. Функціональна схема комп’ютера до модифікації 15

2.4. Функціональна схема комп’ютера після модифікації 16

2.6. Опис форматів інструкцій розробленого комп’ютера 17

Потактове виконання команд. 19

Література 21

ТЕСТОВИЙ РОЗДІЛ 22

ДодатокА 23

ДодатокB 31


Вхідні дані на проектування.


Варіант 6

Визначити формати команд згідно розрядності шини даних, розміру пам’яті та регістрового файлу.



Розрядність шини даних

Розмір пам’яті

Байт

Розмір регістрового файлу

6

56

33554432

128


Арифметичні:



Мнемонічний код

Зміст

2

INC regA

regA++

6

XADD regA regB destReg

Додати і обміняти операнди місцями destReg=regA+regB

regA<=>regB

7

SUB regA regB destReg

Віднімання: destReg=regA-regB


Логічні:



Мнемонічний код

Зміст

2

XOR regA regB destReg

Додавання по модулю 2: destReg=regA#regB


6

SAL regA regB destReg

Арифметичний зсув вліво destReg=regA << regB

9

ROL regA regB destReg

Циклічний зсув вліво destReg=regA << regB


Керування. Умовні переходи:



Мнемонічний код

Зміст

1.

JMA regA regB offSet

Беззнакове більше if (regA> regB) PC=PC+1+offSet

8.

JMLE regA regB offSet

Знакове менше/рівно if (regA<= regB) PC=PC+1+offSet





Адресація

6

Індексна (розробити IR – індексний регістр), передбачити команду чи директиву встановлення регістру, регістр має інкрементуватися/ декрементуватися після кожного звернення


Регістр стану: CF –регістр переносу.

Регістр переносу (CF):



Мнемонічний код

Зміст

1

ADC regA regB destReg

Додавання з переносом: destReg=regA+regB+CF

2

SBB regA regB destReg

Віднімання з переносом: destReg=regA-regB-СF

8

CLC

Закинути прапорець CF=0



  1. Аналіз основних принципів побудови комп’ютерів.

CISC (англ. Complex Instruction Set Computer — комп'ютер зі складним набором команд) — це архітектура системи команд, в якій більшість команд є комплексними, тобто реалізують певний набір простіших інструкцій процесора або шляхом зіставлення з кожною CISC-командою певної мікропрограми, або принаймні можуть бути зведені до набору таких простих інструкцій. Крім того, ознаками CISC-архітектури можна вважати також наявність великої кількості методів адресації пам'яті з можливістю безпосередньої роботи з операндами в основній пам'яті комп'ютера. Тобто, CISC-архітектури відносяться, як правило, до класу двохадресних.

Архітектури з комплексними наборами команд, розвиток яких припав на кінець 60-х — 70-ті роки пропонували програмісту досить різноманітний набір порівняно високорівневих інструкцій машинної мови, таких, наприклад, як «виклик підпрограми» або «відняти одиницю та перейти, якщо результат ненульовий», а також велику кількість способів звертання до операндів в пам'яті для полегшення роботи зі складними структурами даних. В ті часи, за відсутності повноцінних мов програмуваннявисокого рівня та відповідних компіляторів, така апаратна підтримка високорівневого інструментарію програмування могла підвищити продуктивність праці програміста. До того ж, програма, складена з таких команд займала небагато в пам'яті комп'ютера.

Типовими прикладами CISC-архітектур були системи VAX, PDP-11, IBM System/360, сімейства мікропроцесорів Motorola 68000 та Intel x86.

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

Зокрема, складні команди потребували багато часу на процедуру декодування, потребували багато апаратурних ресурсів для реалізації, що негативно відображалось на загальній швидкодії та складності системи. Далі, наявність спеціальних команд, таких як «виклик підпрограми» не завжди виправдовувала себе, в багатьох випадках доцільніше було б замість такої загальної команди використати набір елементарніших інструкцій, які в результаті спричиняли б виконання меншої кількості обчислень процесором. Це стосувалось і обчислювальних команд, які підтримували роботу з операндами в повільній пам'яті, що далеко не завжди давало оптимальний результат. Набагато ефективніше було б відокремити процедури роботи з пам'яттю (завантаження та збереження операндів) від проведення обчислень, що дало б можливість оптимізувати процедури звертання до запам'ятовуючого пристрою. Зрозуміло, що ці оптимізації повинні були виконуватись вже компіляторами з мов високого рівня, які до того часу досягли досить високого рівня функціональності.

Ці та інші проблеми CISC-архітектур призвели до створення в 80-ті роки RISC-архітектур (від англ. Reduced Instruction Set Computer — комп'ютер зі скороченим набором команд), які вибудовують прямо протилежну модель системи команд з максимальним спрощенням семантики машинної команди, зведенням її до елементарної, мінімізацією методів адресації пам'яті тощо та принциповою орієнтацією на мови високого рівня й оптимізуючі компілятори з них, аніж на програмування безпосередньо в машинних мовах.

Сучасні CISC-архітектури, такі як останні втілення сімейства процесорів x86, хоч і відповідають CISC-концепції на рівні архітектури системи команд, але всередині процесора реалізують якраз пристосованішу до сьогоднішніх реалій RISC-модель, трансформуючи потік CISC-команд в процесі виконання в набори з простіших RISC-мікрооперацій, які й виконуються процесором.

Для виконання задачі на комп’ютері необхідно:

    • забезпечити вибірку команди програми із його пам’яті в заданій послідовності, організувати звернення до неї за відповідними адресами;

    • забезпечити розпізнавання типів виконуваних операцій;

    • організувати звернення до пам’яті за відповідними адресами для вибірки необхідних для виконання кожної команди даних;

    • організувати виконання над даними операцій відповідно до вказівок команд;

    • запам’ятати результат обчислень.

Комп'ютер виконує кожну команду як послідовність простих операцій:

  1. Вибірка чергової команди із основної пам'яті.

  2. Визначення типу вибраної команди, тобто її дешифрування.

  3. Визначення адрес даних, необхідних для виконання цієї команди.

  4. Виконання операцій пересилання даних (зчитування даних із пам'яті в регістри процесора).

  5. Виконання операції відповідно до її коду в полі коду операції команди.

  6. Визначення адрес, за якими запам'ятовуються результати.

  7. Запам'ятовування результатів.

  8. Підготовка до виконання наступної команди, тобто обчислення її адреси.

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

    • виконання команди за багато тактів, оскільки для цього потрібно здійснити багаторазові операції звернення до основної пам'яті та до програмно-доступних регістрів процесора;

    • орієнтація АЛП на виконання великої кількості операцій, що пов'язано з розширеним складом системи команд;

    • складна система розпізнавання команди, що пов'язано з великою кількістю методів адресації та великою кількістю форматів команд різної розрядності;

    • програмне дешифрування команд з метою зменшення затрат обладнання;

    • складна організація конвеєризації виконання команд, що пов'язано, в першу чергу, з різнотипністю їх виконання;

    • орієнтація структури на виконання команд типу регістр-пам'ять та пам'ять-пам'ять.

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

Структура регістрової (надоперативної) пам'яті процесора складається з регістрів спеціального та зального призначення. До регістрів спеціального призначення належать:

    • регістри адреси (РгА);

    • регістри команд (РгК);

    • програмний лічильник(ПЛ)

    • регістри даних (РгД).

РгА зберігає адресу даного або команди при зверненні до основної пам'яті. РгД зберігає операнд при його запису або зчитуванні з основної пам'яті. В ролі операнда може бути дане, команда або адреса. РгК зберігає команду після її зчитування з основної пам'яті. ПЛ підраховує команди та зберігає адресу поточної команди. Комп'ютер з архітектурою Джона фон Неймана має один програмний лічильник.

2.1. Система команд

Різноманітність типів даних, форм представлення та опрацювання, необхідні дії для обробки та керування ходом виконання обчислень призводить до необхідності використання різноманітних команд – набора команд.

Кожен процесор має власний набір команд, який називається системою команд процесора.

Система команд характеризується трьома аспектами:

    • формат,

    • способи адресації,

    • система операцій.

Форматом команди – є довжина команди, кількість, розмір, положення, призначення та спосіб кодування полів. Команди мають включати наступні види інформації:

    • тип операції, яку необхідно реалізувати в даній команді (поле команду операції - КОП);

    • місце в пам’яті звідки треба взяти перший операнд (А1);

    • місце в пам’яті звідки треба взяти другий операнд (А2);

    • місце в пам’яті куди треба помістити результат (А3).

Кожному з цих видів інформації відповідає своя частина двійкового слова – поле. Реальна система команд зазвичай має команди декількох форматів, тип формату визначає КОП.

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



    1. . Способи адресації

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

    • забезпечення ефективного використання розрядної сітки команди;

    • забезпечення ефективної апаратної підтримки роботи з масивами даних;

    • забезпечення задання параметрів операндів;

    • можливість генерації великих адрес на основі малих.

Існує велика кількість способів адресації. Розглянемо п’ять основних способів адресації операндів в командах.

Пряма – в цьому випадку адресне поле зберігає адресу операнда. Її різновидом є пряма регістрова адресація, яка адресує не комірку пам’яті а номер регістру.

Безпосередня – в поле адреси команди поміщається не адреса, а сам операнд.

Непряма – в полі адреси команди зберігається адреса комірки пам’яті в якій знаходиться адреса операнда. Такій спосіб дозволяє оперувати з адресами як з даними. Різновид непряма-регістрова адресація, адреса адреси зберігається в регістрі загального призначення.

Відносна – адреса формується, як сума з двох доданків: бази, яка зберігається в спеціальному регістрі чи в одному з регістрів спеціального призначення, та зміщення, яке задається в полі адреси команди. Різновид індексна та базова індексна. При індексній замість базового регістра є індексний, який автоматично модифікується (зазвичай збільшується на 1). Базова-індексна адресація формується адреса як сума трьох доданків: бази, індексу та зміщення.

Безадресна – поле адреси в команді відсутнє. Адреса операнда, або немає змісту або є по замовчуванню(наприклад дії на спеціальним регістром - акумулятором). Безадресні команди неможливо використати для інших регістрів чи комірок пам’яті. Одним з різновидів безадресної адресації є використання стеку.
В команду вводяться спеціальні ознаки з тим, щоб пристрій керування міг розпізнати використаний спосіб. Це можуть бути додаткові розряди в команді, або для різних типів команд закріплюватись різні способи адресації.


2.1. Алгоритми роботи розробленого асемблера




Рис. 2.1. Схема роботи асемблера

Загальна схема роботи асемблера (рис. 1) складається з 2 проходів. На першому проході асемблер перевіряє коректність синтаксису команд. На другому виконується генерування відповідних машинних команд, тобто числового представлення асемблерної команди.

Функція readAndParse виконує зчитування рядку асемблерної програми і декодування на відповідні поля: мітка, код операції, операнди. Отримана таким чином і декодована інструкція перевіряється на коректність: існування команди, відповідна кількість аргументів, існування міток та т. п.

Функція testRegArg перевіряє коректність використання назви регістра.

Функція testAddrArg перевіряє коректність використання адреси.

Функція labelArray перетворює відповідну мітку у адресу.

Program.as та program.mc – відповідно вхідний та вихідний файли.

2.2. Алгоритми роботи розробленого симулятора




Рис. 2.2. Схема роботи симулятора
Симулятор починає свою роботу ініціалізацією пам’яті та регістрів 0 значеннями (рис. 2.). Наступним кроком відбувається заванаження програми у машинних кодах в пам’ять. Далі відбувається покрокове виконання інструкцій та вивід стану на зовнішній пристрій (чи на екран консолі чи у файл).

У stateStruct зберігається стан машини – значення регістрів, пам’яті та програмний лічільник. stateStruct

Функція Run виконує обробку інструкцій з пам’яті, функція printState виводить поточний стан машини, а функція convertNum виконує перетворення числа у доповняльний код.


2.3. Функціональна схема комп’ютера до модифікації


В спрощеному комп’ютері (СК) в пам’яті зберігаються, як дані так і інструкції. Кожна інструкція закодована числом. Це число складається з декількох полів: поле назви команди чи код операції (КОП) та полів операндів. В СК є два види пам’яті: загальна пам’ять, та регістрова пам’ять. В загальній пам’яті зберігаються інструкції програми та дані над якими оперують інструкції. В регістровий пам’яті зберігаються дані над якими виконуються інструкції. У реальних комп’ютерах регістрова пам’ять є малою за розмірами та швидкою, працює на швидкості ядра процесора, загальна пам’ять є великою за розміром, але набагато повільніша за ядро процесора. Регістрова пам’ять підтримує лише пряму адресацію, загальна пам’ять підтримує декілька типів адресації. У СК є 8 регістрів по 32 розряди, пам’ять складається з 65536 слів по 32 розряди. Отже СК є 32 розрядним комп’ютером. Він підтримує 8 інструкцій. У СК є спеціальний регістр – лічильник команд (programCounter), в якому зберігається адреса інструкції. За прийнятою домовленістю 0вий регістр завжди містить 0.



Рис. 2.3. Функціональна схема спрощеного комп’ютера до модифікації

В регістрі instReg міститься код інструкції, яка виконується. При роботі з пам’яттю (MEMORY) використовуються два регістри – в memAddress зберігається адреса пам’яті, а в memData значення, яке читається/записується в пам’ять.

Комп’ютер містить арифметико-логічний пристрій (ALU), який може виконувати 3 дії: додавання, логічне І-НЕ і перевірку на рівність. ALU керується двохрозрядним сигналом:

2.4. Функціональна схема комп’ютера після модифікації




Рис. 2.4. Функціональна схема спрощеного комп’ютера після модифікації

Опис адресації

Індексна (розробити IR – індексний регістр), передбачити команду чи директиву встановлення регістру, регістр має інкрементуватися/декрементуватися після кожного звернення *

2.6. Опис форматів інструкцій розробленого комп’ютера


Розроблена машина підтримує наступні формати:

Біти

Призначення

31-25

не використовуються

24-22

код операції

21-19

reg A

18-16

reg B

15-3

не використовуються

2-0

destReg





Біти

Призначення

31-25

не використовуються

24-22

код операції

21-19

reg A

18-16

reg B

15-0

зміщення (16 біт, значення від -32768 до 32767)





Біти

Призначення

31-25

не використовуються

24-22

код операції

21-19

reg A

18-16

reg B

15-0

не використовуються




Інструкції O-типу (halt, noop)

Біти

Призначення

31-25

не використовуються

24-22

код операції

21-0

не використовуються



Окремо слід відзначити інструкцію INC – її також не можна віднести до існуючих типів інструкції, вона містить інформацію про код операції та один регістр.

Біти

Призначення

31-25

не використовуються

24-22

код операції

21-17

reg A

16-0

не використовуються




Система команд.

Всі команди процесора можна поділити, по формату машинного слова, на 5 типів(3r, 2ro, 2r, 1r, 0, 3ino). Враховуючи кількість команд, розрядність шини даних, розмір пам’яті та регістрового файлу формати інструкцій будуть наступні.

regA, regB, destR = 7 біт

КОП = 5 біт

Offset = 25 біт

inOffset = 17 біт



  1   2   3   4

скачати

© Усі права захищені
написати до нас