1   2   3
Ім'я файлу: Курсова робота_Водько О_КБ43.docx
Розширення: docx
Розмір: 416кб.
Дата: 22.06.2022
скачати

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

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

IKTA

Кафедра БІТ


Курсова робота

з дисципліни: «Архітектура комп’ютерних систем»

на тему: «Прототип скалярного RISC-комп’ютера із заданою підмножиною системи інструкції»

Виконала: ст.гр. КБ-43

Водько О.Е.

Перевірила: Микитин Г.В.

Львів 2021

Зміст

Анотація 3

Завдання на курсове проектування 4

Вступ Error: Reference source not found

Структура RICS комп’ютера 7

1.1 Основні принципи побудови RISC комп’ютера 7

1.2 Побудова інформаційного тракту 7

1.3 Опис інструкцій процесора 11

Пристрій керування 13

Пам’ять 16

2.1 Кеш память 16

2.2 Основна пам’ять Error: Reference source not found

Пристрій введення-виведення 19

Висновок 21

Список використаної літератури 22

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

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

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

Розробити розширену, детальну структурну схему прототипу скалярного RISC-комп'ютера з поданням структури, інформаційних та керуючих зв'язків інформаційного тракту i пристрою керування та з врахуванням конкретизованої за завданням під множини системи інструкцій. Розкрити внутрішню структуру пристроїв інформаційного тракту, апаратури пристрою керування. Розробити підсистему введення/виведення інформації. Надати у табличній чи графічній формах детальні мікропрограми виконання інструкцій. Запропонувати варіант конвеєризації структури інформаційного тракту разом із конвеєрною мікропрограмою керування та пояснити спосіб реалізації цього конвеєрного керування. Відобразити накресленні детальні структури пристрою керування, кешу даних та інструкцій і пояснити принципи їх будови та зв'язок з модифікованою Гарвардською архітектурою.



Пересилання

Арифметичні та логічні

Керування

2

LHI, LW

ADDI,SUBUI,ANDI

J

Вихідні дані:

Розширена, детальна структурна схема прототипу скалярного RISC-комп'ютера з поданням структури, інформаційних та керуючих зв'язків інформаційного тракту i пристрою керування з врахуванням конкретизованої за завданням підмножини системи інструкцій. Внутрішня структура пристроїв інформаційного тракту, апаратура пристрою керування. Підсистема уводу/виводу інформації. Детальна мікропрограма виконання інструкцій.

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

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

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

Треба визнати, що досягнуті на цьому шляху успіхи справді вражали - в останніх версіях ЕОМ виразність асемблерного лістингу часто не поступалася виразності програми, написаної на мові високого рівня. Одною-єдиною машинною інструкцією можна було сказати практично все, що завгодно. Наприклад, такі машини, як DEC VAX, апаратно підтримували інструкції «додати елемент в чергу», «видалити елемент з черги» і навіть «провести інтерполяцію поліномом». А знамените сімейство процесорів Motorola 68k майже для всіх інструкцій підтримувало до дванадцяти режимів адресації пам'яті. Звідси й загальна назва відповідних архітектур: CISC - Complex Instruction Set Computers ( «комп'ютери з набором інструкцій на всі випадки життя»).

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

Точно так само, як колись CISC-процесори проектувалися під потреби asm-програмістів, RISC проектувався в розрахунку на типовий код, що генерується компіляторами. Для початку розробники звели до мінімуму набір інструкцій і до абсолютного мінімуму - кількість режимів адресації пам'яті, упакувавши все, що залишилося, в простий і зручний для декодування регулярний машинний код. Зокрема, в класичному варіанті RISC з інструкцій, які звертаються до оперативної пам'яті, залишено тільки дві (Load - завантажити дані в реєстр і Store - зберегти дані з реєстру, так звана Load/Store-архітектура), і немає жодної інструкції на зразок обчислення синуса, косинуса або квадратного кореня, не кажучи вже про більш складних. Та що там синус з косинусів - у деяких RISC-процесорах намагалися відмовитися навіть від важко реалізується апаратного множення і ділення. Правда, до таких крайнощів ні один комерційний RISC, на щастя, не дійшло, але як мінімум дві спроби (ранні варіанти MIPS і SPARC) зроблені були.

Друге важливе вдосконалення RISC-процесорів, цілком випливає з Load/Store-архітектури, - збільшення числа GPR (регістрів загального призначення). Варіанти, у яких менше шістнадцяти GPR, - велика рідкість, причому майже всі ці регістри повністю рівноправні, що дозволяє компілятору вільно розпоряджатися ними, зберігаючи велику частину проміжних даних саме там, а не в стеку або оперативної пам'яті. У деяких архітектурах, типу SPARC, "регістровість" зведена в абсолют, у деяких - залишена на розумному рівні; проте майже будь-який RISC-процесор володіє куди великим набором регістрів, ніж навіть самий просунутий CISC.

Серед інших удосконалень, внесених до RISC, - такі нетривіальні ідеї, як умовні інструкції ARM або режими роботи команд. Наприклад, якийсь модифікатор в архітектурі PowerPC і деяких інших показує, чи повинна інструкція виставляти за результатами свого виконання певні прапорці, які потім може використовувати інструкція умовного переходу, або не повинна. Це дозволяє рознести в просторі інструкцію, що виконує обчислення умови, і інструкцію власне умовного переходу - що в конвеєрних архітектурах часто дозволяє процесору не «думати», буде здійснено перехід чи ні, а відразу достовірно це знати. У класичному CISC вони майже не зустрічаються, оскільки на момент розробки відповідних наборів інструкцій цінність цих рішень була сумнівною (вони вийдуть на сцену тільки в конвейеризованних процесорах).

Структура комп’ютера

1.1 Основні принципи побудови RISC комп’ютерів

Виділяють наступні вимоги, яких необхідно притримуватися при побудові RISC процесора:

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

  • Система команд має містити мінімальну кількість спрощених команд, що статистично переважають у програмах.

  • Команди обробки даних мають реалізуватися лише у формі "регістр-регістр". Обміни з основною пам'яттю виконуються лише за допомогою команд завантаження/запису.

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

  • Дешифрування команд із спрощеними форматами має виконуватися лише апаратно, аби збільшити швидкодію.

  • У системі команд відносно небагато операцій та режимів адресування операндів (способів адресації).

  • Регістрова пам'ять має включати велику кількість програмно-доступних регістрів.

  • Високий рівень конвеєризації виконання команд.

  • Застосовується багато рівнів ієрархії пам’яті.

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

1.2 Побудова інформаційного тракту

За основу проектування інформаційного тракту використаємо архітектуру комп'ютера, яка була запропонована для навчальних цілей Джоном Хеннессі та Дейвідом Паттерсоном і отримала назву DLX. Ця архітектура узагальнює особливості архітектур наступних сучасних комп'ютерів: AMD 29000, DEC3100, НР850, ІВМ801, Inteli860, MIPS М/120А, MIPS M/1000, M88000, RISCl, SGI 4D/60, SPARCstation-1, SUN-4/110, SUN-4/260.

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

  • вибрати зазначену команду з основної пам'яті (перша фаза виконання команди із назвою IF (Instruction Fetch);

  • декодувати команду та вибрати операнди (друга фаза виконання команди із назвою ID (Instruction Detecting);

  • виконати команду, тобто обрахувати виконавчу адресу операнда (третя фаза виконання команди із назвою EX (Execution);

  • вибрати операнд із основної пам'яті (четверта фаза виконання команди із назвою MEM (Memory);

  • переслати вибраний з основної пам'яті операнд до відповідного регістра регістрового файла (п'ята фаза виконання команди із назвою WB (Write Back).


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

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

Таблиця 1.1




LHI

LW

IF

IR = IM [PC];

NPC = PC + 4;

ID

A = Regs [IR6..10 ];

Imm = ((IR16 )16## IR16..31);


A = Regs [IR6..10 ];

Imm = ((IR16 )16## IR16..31);


EX

ALUout = A + Imm;

ALUout = A + Imm;

Zero(cond) = 0;

MEM

LMD = DM[ALUout];

LMD = DM[ALUout];

PC = NPC;

WB

Regs [ IR11..15 ] = LMD;

Regs [ IR11..15 ] = LMD;

Мікродії виконання команд пересилання

Таблиця 1.2




ADDI

SUBUI

ANDI

IF

IR = IM [PC];

NPC = PC + 4;

IR = IM [PC];

NPC = PC + 4;

IR = IM [PC];

NPC = PC + 4;

ID

A=Regs [ IR6..10 ];

Imm=(IR16 )16 ## IR16..31);

A = Regs[IR6..10 ];

Imm = ((IR16 )16## IR16..31);


A=Regs [ IR6..10 ];

Imm=(IR16 )16 ## IR16..31);

EX

ALUout = A + Imm;

Zero(cond) = 0;

ALUout = A - Imm;

ALUout = A and Imm;

MEM




PC = NPC;




WB

Regs[IR11..15]=ALUout;

Regs[IR11..15] =ALUout;

Regs[IR16..20]=ALUout;

Мікродії виконання команд арифметично-логічних команд

Таблиця 1.3 Мікродії виконання команд керувань




J

IF

IR = IM [PC];

NPC = PC + 4;

ID

Imm = ((IR6 )6## IR6..31);

EX

ALUout = NPC + Imm;

MEM

PC = ALUout;

WB

Немає мікродій

Мікродії виконання команд керувань

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

Схема-процесора DLX



Виконання команд в процесорі комп'ютера з простою системою команд розглянемо на прикладі процесора комп'ютера DLX, структура якого була розглянута.

Фази вибирання команди IF виконуються наступні мікродії (мікрооперації):

IR = IM [PC];

NPC = PC + 4;

Виконання першої мікродії спричинює завантаження до 32-бітового регістра поточної команди IR вмісту чотирьох послідовно розташованих комірок пам'яті команд, починаючи від адреси (PC) + 0 і завершуючи адресою (PC) + 3. Як і завжди, за допомогою (PC) позначено вміст програмного лічильника PC.

Друга мікродія (NPC = PC + 4) вираховує "планову" адресу наступної за чергою команди з послідовного потоку. Тобто тут визначається і тимчасово зберігається у регістрі NPC вміст програмного лічильника. "Логічне" вибирання вмісту чотирьох послідовно розташованих однобайтових комірок замість однієї чотирибайтової підкреслює те, що навіть на рівні мікродій адресування комірок пам'яті вказують логічно. За умови коли адреса байта кратна чотирьом, тобто дотримано вирівнювання границь адрес команд, із пам яті, одразу (за одне звернення) вибирают ь чотири байти і навіть цілі пакети по чотири байти. Отриманий з пам'яті даних код тлумачать як 32-розрядне слово, а з пам'яті команд - як одну команду Зауважимо, що обидві наведені мікродії теоретично є сумісними в часі. Саме тому вони можуть і мають виконуватися паралельно. Ці мікродії утворюють єдину мікрокоманду

Фази декодування команди ID виконуються наступні мікродії (мікрооперації):

A = Regs [IR6..10 ];

Imm = ((IR16 )16## IR16..31);

У наведеному мікрокоді, що складений з двох сумісних у часі, тобто придатних до одночасного (паралельного) виконання мікродій, вжито наступні позначення:

  • А, Imm - внутрішні службові 32-розрядні регістри для проміжного збереження кодів; два регістри є "прозорими" для програміста в тому сенсі, що вони аж ніяк не відбиті в машинних командах.

  • Regs [address] - номер регістра регістрового файла процесора;

  • Rx..y - поле регістра команд, яке містить групу послідовно розташованих бітів - від біта з номером X до біта з номером Y включно; звернемо увагу на нумерацію бітів у слові процесора - лівий біт має 0-й номер, а правий - 31-й номер.

  • IR6..10 - поле регістра команд, що містить бінарний номер регістра - джерела даного (див. формат команд); довжина поля рівна 5 бітам, що дозволяє позначати та адресувати 32 регістри - від R0 до R31

  • IR11..15 - також п'ятибітове поле номера ще одного регістра - джерела даного з множини R11..15 -..R0..31

Поле безпосереднього операнда (Immediate або Imm) у фор ­ маті команди має довжину лише 16 бітів. В той же час, розрядність інформаційного тракту в усіх трьох службових регістрів рівна 32 біти. До того, як записати 16-бітовий код IR16..31 безпосереднього операнда з регістра команд до службового регістра Imm, цей код треба розширити з врахуванням знака (тобто розряду IR] 6 ) до 32-бітового значення а наступним стандартним алгоритмом знакового розширення :

IR16 ## IR16 ##...## IR16 # IR16..31

Тут символом ## позначено операцію зчеплення (конкатенацію).

Важливо, що в рамках фази ID виконується декодування (розпізнавання) команди та вибирання усіх можливих варіантів операндів поточної команди, незалежно від її типу, з метою збільшення швидкодії. З іншого боку, можливіст ь одночасного вибирання усіх варіантів операндів потенційно обумовлено відповідною структурою форматів команд, де фіксовано розташування полів-покажчиків на джерела даних та приймачі операндів і результатів. Іншими словами, формати команд процесора втілюють техніку кодування форматів команд, що відома під назвою "fixed-field coding".

Фази ЕХ операції звернення до пам'яті даних (load/store instructions) готують значення ефективної адреси, тобто вираховують значення бінарного коду, що є адресою комірки пам'яті даних. Виконується наступна мікродія:

ALUoutput = А + Imm

Позначене в мікродії додавання безпосереднього операнда (однієї з компонент адреси) з вмістом робочого регістра А (другої компоненти) реалізується в ALU . Отримана сума (вона завжди ціла і додатна, переносом нехтують) записується до ще одного, прозорого для програміста, регістра ALUoutput. Цей регістр має розрядність 32 біти. Він зберігає коди результатів, що з'являються на виході комбінаційної схеми з назвою ALU . Якщо пригадати дію команди LW, тоді призначення та форма запису наведеної мікродії стає зрозумілою.

Фази звернення до пам'яті MEM виконуються наступні мікродії:

LMD = DM [ALUoutput]

Звернення до пам'яті застосовується в командах завантаження (наприклад, LW R1, 10(R2))

Перша мікродія виконується тільки у випадку команди Load (завантаження). Тут за допомогою попередньо розрахованої адреси пам'яті даних, яка тимчасово зберігається у службовому регістрі ALUoutput, здійснюється доступ до пам'яті, що і позначено записом DM [ALUoutput].

Фаза зворотного запису WB

На цій, вже останній фазі виконання команди, у разі потреби результат, що отримано на попередніх фазах, записується до деякої комірки RX регістрового файла. Наприклад, LW R1, #10(R2)

Команди виконання операції арифметико-логічного пристрою типу "регістр-безпосередній операнд". Ця мікродія зберігає результат операції. Виконується наступна мікродія:

Regs[IR11…15]= ALUoutput

  1   2   3

скачати

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