Проектування скалярного RISC-комп'ютера

Інформація про навчальний заклад

ВУЗ:
Національний університет Львівська політехніка
Інститут:
Не вказано
Факультет:
ЗІ
Кафедра:
Кафедра СКС

Інформація про роботу

Рік:
2020
Тип роботи:
Курсовий проект
Предмет:
Архітектура комп’ютерів та комп’ютерних систем

Частина тексту файла

Міністерство освіти і науки України Національний
університет «Львівська політехніка» Інститут дистанційного навчання
Кафедра СКС

КУРСОВИЙ ПРОЕКТ з предмету: “Архітектура комп’ютерів” на тему: “ Проектування скалярного RISC-комп'ютера ”
Анотація
Курсовий проект з дисципліни “ Архітектура комп’ютерів. Частина І ” є підсумком освоєння даного курсу. Під час роботи над даним проектом студенти повинні показати всі свої набуті знання, опанувати інформацію про принципи дії та архітектуру прототипних варіантів сучасних RISC-комп'ютерів, виконати поставлене перед ними індивідуальне завдання. Під час виконання курсового проекту будуть пройдені
і виконанні наступні основні етапи:
1.
Розробка формату інструкцій різних типів (I-тип, R-тип, J-тип); 2.
Розрахунок загальної кількість елементів основної пам’яті; 3.
Розрахунок розрядності шини адрес; 4. Визначення кількість процесорних тактів, за якою будуть зчитуватись дані з основної пам’яті. 5.
Визначення значення константи, яке необхідне для обчислення наступного значення програмного лічильника (наступної адреси інструкції в основній пам’яті); 6.
Визначення розрядність регістра інструкцій; 7.
Розрахунок формату адреси для кеш-пам’яті; 8. Відображення послідосності мікродій, які виконуються на різних етапах (циклах) процесора за допомогою трьох команд. схема тестування
Зміст
1.
Конкретизовані та розширені вихідні дані на проектування
4 2. Роз'яснення та аналіз основних принципів побудови скалярних RISC-комп'ютерів на прикладі
визначених на реалізацію інструкцій. 5 3.
Розрахунки відповідно до завдання.. 14 Висновок.21 Список літератури.22 Додаток А
1.Визначення вхідних даних для проектування Для визначення вхідних даних використовується таблиця завдань, де варіант завдань – номер у списку. Оскільки я 16 у списку, у варіантів 15, моїм варіантом буде 1. Таблиця 1. Визначення варіантів завдання вхідних даних. Варіант Набір команд Параметри пам’яті Основна пам’ять Кеш Розмір сторінки 1 LW, SB, SNE, SRL, SUBUI, OR, J. 64 МБ 1 МБ 128 КБ
Конкретизовані та розширені вхідні дані: Кількість регістрів загального призначення в Регістровому Файлі – 32 регістри; Кількість команд, які може виконувати процесор, який розробляєься - 7 команд; Розрядність безпосереднього операнда (Immediate) 16 розрядів(біт); Об’єм основної пам’яті комп’ютера 64 Мб; Елементи на яких побудована основна пам’ять комп’ютера 2Кх16 . 2К - кількість комірок в пам’яті, 16 – розрядність; Розмір кеш-пам’яті даних
128К, кількість блоків у кеш – пам’яті даних -
64;
Розмір кеш-пам’яті команд
1М, кількість блоків у кеш – пам’яті команд -
256;
Команда для демонстрації роботи процесора
Логічна.
2. Роз'яснення та аналіз основних принципів побудови скалярних RISC-комп'ютерів на прикладі
визначених на реалізацію інструкцій Формати RISC інструкцій DLX процесора подано рисунком 1. Рис. 1 - Формати інструкцій RISC-DLX процесора [Hennessy & Patterson, 2003] Пояснення щодо форматів інструкцій. I - тип інструкції опрац, що використовує безпосередній операнд (Immediate ). R - тип інструкції; така інструкція отримує пару операндів із джерельних регістрів (Registers) регістрового файлу процесора і повертає
результат знов таки до регістру призначення з цього файлу. J – тип є інструкцією безумовного переходу (jump). OpCode є полем коду операції, який залежить від кількості виконуваних процесором команд. Розрядність даного поля=Log2N, де N – множина виконуваних процесором команд. В даному випадку довжина поля складає 6 розрядів.
rs1,rs2 є полями, що задають номери регістрів-джерел операндів (register of source), що належать множині регістрів регістрового файла. Розрядність кожного з цих полів
визначається, як Log2N, де N – множина регістрів регістрового файлу. В даному випадку кожне поле має довжину 5 бітів, а множина регістрів від R0 до R31. rd є полем номера регістра призначення (приймача результату дії, register of destination). Розрядність поля
визначається, як Log2N, де N – множина регістрів регістрового файлу. Регістр призначення також обирають з множини регістрів
регістрового файлу.
В даному випадку поле є п'ятибітовим. Immediate - це 16-ти бітове поле, що містить безпосередній операнд; при цьому найлівіший розряд immediate розглядають як знаковий; при використанні безпосередній операнд попередньо знаково розширюють вліво (як доповняльний код) до 32-х бітів. Function - це поле, що визначає функцію, що розширює на 211 – 1 = 2047 комбінацій обмежене число дозволених кодів операції. Offset added
to
PC - це
26-ти бітова константа,
яку додають до вмістимого регістру наступної адреси аби знайти цільову адресу безумовного переходу. Особливості поданих форматів інструкцій: Довжина всіх форматів – 32 біти. Реалізовано дизайн архітектури load/store. Реалізовано фіксовану систему поділу форматів на поля. Всі інструкції з погляду їхньої обробки поділено на три групи: АЛП операції, операції load/store, операції керування виконанням програми. Отже, формати АЛП-операцій є триадресувальними, тобто, завжди подаються як OP RX,RY,RZ. Основою побудови структури інформаційного тракту (data path) є часова діаграма виконання інструкції з найбільшою складністю. До такої інструкції в нашому класичному RISC комп’ютері належить, наприклад,
інструкція завантаження слова з комірки пам’яті до регістра. Тому розглянемо виконання інструкції завантаження слова LW R5, 16(R26) для багатоцикловоїї RISC машини (такий варіант побудови RISC машини є наочнішим в передбаченні подальшого переходу до конвеєрного варіанту). Задля виконання
інструкції завантаження потрібно: вибрати нструкцію з пам’яті (на це витрачаємо перший цикл виконання з назвою IF ), декодувати інструкцію і (паралельно, тобто, незалежно)
вибрати операнди (на це витрачаємо другий цикл виконання з назвою ID), виконати інструкцію, тобто, в нашому випадку розрахувати виконавчу адресу операнда 16 +
(на це витрачаємо третій цикл виконання з назвою EX), вибрати операнд із головної пам’яті (витрачаємо четвертий цикл виконання з назвою MEM), переслати вибраний з пам’яті операнд до регістра R5 регістрового файла (витрачаємо п’ятий цикл виконання з назвою WB). Зауважимо, що (апаратним) циклом ми називаємо один тактовий інтервал. Отже, виконання інструкції, що розглядається, вимагає витрати п’яти циклів. Іншим інструкцїям можуть не знадобитися всі щойно перелічені цикли виконання через їхню меншу часову складність, Проте менш складним інструкціям теж віддають на виконанання п’ять циклів, деякі з яких є робочими, а деякі - порожніми. Ясно, що при рівній довжині кожного машинного циклу ми нехтуємо наявним ефектом парадоксу пам’яті. Адже, наприклад, довжини циклів маніпулювання комірками МЕМ і маніпулювання регістрами ID/OF в нас є рівними. Наступним рисунком подано черговість слідування апаратних циклів (інколи кажуть - фаз, сходинок) при виконанні RISC інструкції. Зауважимо ще раз, що не всі інструкції вимагають виконання усіх фаз. Наприклад, інструкції переходів використовують як роочі лише перши три цикли, а два останні цикли – як порожні. При конвеєрному виконанні інструкції переходу два останні цикли також витрачають як порожні, аби вирівняти час виконання всіх, як складних, так і спрощених інструкцій. При цьому на перших трьох апаратних циклах перехід є переходом, а на два останні він долає
вже як інструкція nop. Рис. 2 – Організація апаратних засобів інформаційного тракту RISCмашини Тут: IF – апаратні засоби вибирання з інструкційної пам’яті ІМ чергової інструкції, ID – апаратні засоби декодування інструкції і паралельного з цим вибирання операндів,
EX – апаратні засоби виконання інструкції, MEM – апаратура запису/читання пам’яті даних МЕМ, WB – зворотній запис до регістрового файла (як мети) результату виконання інструкції. Рисунком 2 подано ще ідеалізовану структуру апаратних засобів, що функціонують на фазі виконання ЕХ, а саме, поокремо показано вузли виконання дій над цілими і над рухомими кодами. Структуру багатоциклового (максимально наближеного до конвеєрного варіанту) прототипу машини подано рисунком 3. Рис. 3 - Багатоцикловий прототип RISC машини [Hennessy & Patterson, 2003]
Скороченням PC позначено лічильник інструкцій (Program Counter). Вмістиме РС визначає адресу інструкції в пам'яті інструкцій ІМ. Комбінаційний додавач Adder обраховує адресу наступної за чергою виконання інструкції. При цьому враховано, що впорядкована послідовність інструкцій (програма)
складається виключно з чотирибайтових інструкцій (усі інструкції мають формати з довжиною 32 біти), які розміщено в IM за адресами 0, 4, 8, C, . . .
тощо. Через це константа зсуву адреси (пересування покажчика на наступну за чергою інструкцію) дорівнює +4. Визначене за допомогою додавача значення адреси наступної інструкції зберігають у регістрі NPC (next PC). Зчитаний з ІМ бінарний код поточної інструкції записують до регістру інструкції IR, розрядність якого така ж як і розрядність інструкції. Якщо шина даних для взаємодії між процесором та основною пам’яттю складає 32 розряди, то, за 1 процесорний такт буде зчитано 1 інструкцію. Поля щойно вибраної інструкції, що містять бінарні коди, ідентифікатори регістрів операндів, є фактично адресами комірок внутрішньо процесорної пам'яті, що емулює пул (множину) програмно керованих (видимих програмісту) регістрів. Вмістиме зазначених полів формату інструкції надсилають до адресувальних входів регістрового файлу Registers чи Regs, а відповідні надісланим адресам бінарні коди регістрових операндів завантажують до внутрішніх, програмно недосяжних службових регістрів А і В. Існує ще один тип операнда з назвою “безпосередній” (Immediate чи Imm). Його задають прямо в інструкції. Як правило, довжина безпосереднього операнда не перевищує половини довжини формату інструкції. В нас безпосередній операнд має довжину 32/2 = 16 бітів. В той самий час бажано зафіксувати таку довжину формату даних, що дорівнює довжині формату інструкції ( зауважимо без пояснень, що збільшення числа різних довжин форматів суттєво пригальмовує машину). Отже, в нас всі формати даних, всі формати інструкцій
мають довжину 32 біти. Зараз ясно, що безпосередньому операнду не вистачає ще 16 бітів, аби використовуватися. Тому знакове розширення 16 бітового безпосереднього операнда до 32-х бітів виконує комбінаційний вузол Sign Extend. Результат знакового розширення тимчасово зберігають у службовому регістрі Imm. Отже, можна нарахувати чотири можливі операнди на вході
АЛП:
з регістрів А, В, Imm; вмістиме регістру адреси наступної для виконання інструкції NPC. Зазначимо, що операнд-адресу NPC опрацьовують в АЛП при виконанні інструкцій умовного переходу, коли на додаток до наступної потрібна ще одна адреса, яку утворюють додаванням до вмістимого NPC певної константи переходу. Вибирання двох операндів АЛП (з чотирьох можливих) виконують за допомогою мультиплексорів операндів mux. Результат операції АЛП тимчасово запам'ятовують у проміжному службовому регістрі ALUoutput (ALUout). Коли результатом операції є число, тоді його заносять до комірки регістрового файлу. Коли результатом операції є адреса, тоді цю адресу надсилають до (верхнього на рисунку) мультиплексора вибору адреси
mux. За допомогою зазначеного мультиплексора вибирають адресу переходу (наступна або цільова адреса перехіду), яку і надсилають до лічильника інструкцій PC, аби коректно продовжити виконання програми. Керування мультиплексором вибору адреси наступної інструкції покладено на вузол Zero?, де вмістиме службового регістра А порівнюють із нулем (дорівнює нулю, більше нуля, менше нуля тощо, в залежності від виду виконуваної операції порівняння). Результат порівняння є бінарним логічним значенням (так або ні). Саме цей бінарний результат керує роботою мультиплексора вибирання адреси наступної інструкції.
Результат з виходу АЛП надсилають до пам’яті даних як обчислену в АЛП адресу певної комірки цієї пам’яті (чого вимагають інструкції обміну регістрів з пам’яттю). Результатом на виході (правий на рисунку) мультиплексора може бути або вмістиме пам’яті даних (під час виконання інструкції завантаження LW слова з комірки пам’яті даних до регістру регістрового файла), або результат виконання арифметичної, зсувної, логічної, іншої операції в АЛП (наприклад, під час виконання інструкцій ADD, SUB тощо). У подальшому цей результат зберігають в регістрі регістрового файла. Отже, зазначений мультиплексор, керований регістром поточної інструкції, комутує на вхід регістрового файла потрібну інформацію. В циклі (Instruction Fetch cycle - IF) виконують наступні мікродії (мікрооперації):
IR
=
IM [PC]; NPC
=
PC+4. Виконання першої мікродії спричинює завантаження до 32-х бітового регістру поточної інструкції IR, тобто, вмістимого чотирьох послідовно розташованих байтів, починаючи від адреси (PC) + 0 і завершуючи адресою (PC) + 3. Як і завжди, через (PC) позначено вмістиме лічильника інструкцій PC. Друга
мікродія (NPC = PC + 4)
обчислює “планову” адресу наступної за чергою інструкції з їхнього послідовного потоку. Тобто в цьому циклі визначають наступне за чергою вмістиме програмного лічильника (його тимчасово зберігають у регістрі Next PC або NPC). “Логічне” вибирання вмістимого чотирьох послідовно розташованих байтових комірок замість однієї 4-х байтової підкреслює те, що навіть на рівні мікродій адресування комірок пам'яті виконують побайтно. Фізично, за умови коли адреса байта кратна чотирьом, тобто дотримано вирівнювання границь адрес інструкцій, з фізичної пам'яті, одразу (за одне звернення) вибирають чотири байти. Отриманий з пам’яті даних код тлумачать як 32-х розрядне слово, а з пам’яті інструкцій – як одну інструкцію. Зауважимо, що обидві наведені мікродії теоретично є сумісними в часі. Саме тому
вони можуть
і
повинні
виконуватися
паралельно.
Ці мікродії утворюють єдину мікроінструкцію;
в нашому випадку (але не завжди !) послідовність запису мікродій у мікроінструкції значення не має. Надзвичайно важливою властивістю циклу IF є те,
що він не бере до уваги існування відомого "парадоксу пам'яті".
Дійсно, у циклі IF за часовими витратами мікродія вибирання з повільних комірок пам'яті інструкцій є тотожною мікродії, що працює з внутрішніми, а саме тому надшвидкими регістрами процесора.
В циклі ID (Instruction decode/register fetch cycle - ID) виконують наступні мікродії (мікрооперації):
A
=
Regs [IR 6..10 ]; B
=
Regs [IR 11..15]; Imm =
((IR16)16 IR 16..31). У наведеному
мікрокоді,
що
складений з трьох сумісних у часі, тобто спроможних до незалежного, паралельного виконання мікродій, вжито наступні позначення: A, B, Imm - внутрішні службові
32-х
бітні
регістри
проміжного збереження кодів можливих операндів;
всі три регістри є "прозорими" для
програміста в тому сенсі,
що вони аж ніяк не відбиті
машинними інструкціями. Regs[address] - комірка внутрішньої пам'яті
процесора із вже відомою назвою назвою регістровий файл;
R x..y - бітове поле регістра
інструкцій,
яке
містить
групу послідовно
розташованих бітів - від біту з номером X до біту з номером Y включно;
звернемо увагу на нумерацію
бітів
у слові процесора - лівий біт має 0-й номер, а правий - 31-й номер. ІR6..10 - бітове поле регістру інструкцій,
що містить бінарний номер регістру операнда
(див. формат інструкцій); довжина поля є 5 бітів, це дозволяє позначати та реалізувати 32 регістра - від R0 до R31. IR11..15 -
також
п'ятибітове
поле номера ще одного регістра операнда (джерела) з множини R0,...,R31. Вже зауважувалося, що поле безпосереднього
операнду
(Immediate
чи
Imm)
у
форматі інструкції має довжину лише 16 бітів.
В цей самий
час,
розрядність інформаційного тракту і усіх трьох службових регістрів є 32. Аби записати 16-бітовий код IR16..31 безпосереднього операнда з регістру інструкцій до службового
регістру
Imm,
цей
код треба розширити з врахуванням знаку (або розряду IR16) до 32-х бітового значення
за
наступним
стандартним алгоритмом знакового розширення:
IR16 IR16 ... IR16 IR16..31. Тут символом позначено операцію зчеплення (конкатенацію).
Важливо, що
в
циклі
ID
виконують декодування (розпізнавання) інструкції та
вибирання усіх можливих варіантів операндів поточної інструкції,
незалежно від її
типу,
з метою збільшення швидкодії. З іншого боку, можливість одночасного вибирання усіх варіантів операндів
потенційно
обумовлено відповідною структурою форматів інструкцій, де фіксовано розташування полів-покажчиків на регістри джерела операндів і регістр приймач
результату. Іншими словами,
формати інструкцій процесора втілюють техніку кодування форматів інструкцій,
що відома під назвою
fixed-field
coding. Мікродії, що виконують в циклі EX (Execution / effective address cycle),
вже залежать від від типу поточної інструкції.
Враховуючи це,
вигідно поділити
усі
інструкції процесора на наступні три групи або типи: операції арифметичного і логічного пристрою; операції
завантаження операндів з головної пам'яті та збереження результатів у головній пам'яті; операції умовних і безумовних переходів. Далі розглядаємо притамані
кожному
типу
інструкцій
мікродії. Операції
звернення
до
пам'яті даних (load / store) У циклі EX вказані операції обчислюють числове значення ефективної адреси, тобто вираховують значення бінарного коду, що безпосередньо визначає адресу комірки пам'яті даних. Отже, виконують наступну мікродію: ALUoutput = A + Imm. Позначене в
мікродії
додавання безпосереднього операнда (однієї з компонент адреси) з вмістимим робочого регістра А (другої компоненти) реалізують в АЛП (ALU).
Отриману суму (її завжди сприймають як натуральний бінарний код, а переносом нехтують) записують до ще одного, прозорого для програміста регістру ALUoutput.
Цей регістр має розрядність 32 біти. Він зберігає коди результатів,
що з'являються
на
виході
комбінаційної схеми з назвою ALU.
Якщо пригадати дію інструкції LW,
тоді
призначення
та
форма
запису
наведеної мікродії стає
ясною. АЛП-інструкція типу регістр-регістр (наприклад, ADD R1,R2,R3) Виконується відповідна інструкції наступна мікродія: ALUoutput =
A op B. Тут узагальнене позначення (op) можна конкретизувати як (add),
(sub)
тощо в залежності від конкретного виду поточної інструкції, яку опрацьовують в інформаційному тракті машини. Підкреслимо, що на попередньому щодо EX циклі, а саме
на циклі
ID,
до
службових
регістрів
вже завантажено вмістиме вибраних комірок пам'яті "регістровий файл" з адресами R2 і R3.
Результат дії поки що не збережено в R1, але його тимчасово розміщують у службовому регістрі ALUoutput. АЛП - інструкція типу регістр - безпосередній операнд (наприклад, ADD R1,R2,23) Виконується наступна мікродія:
ALUoutput =
A op Imm. Ясно, що замість вмістимого R3 в операції
приймає
участь
безпосередній
операнд число 23),
який
з врахуванням "знакового" розширення до 32-х бітів забирають із службового регістру Imm. Умовний перехід (наприклад, BNEZ R5, data) Виконуються наступні мікродії: ALUoutput =
NPC + Imm; Cond (ition)
=
(A op 0). Обидві мікродії є сумісними в часі. За допомогою першої мікродії вираховують цільову адресу умовного переходу.
При цьому
до
вже визначеної адреси наступної
інструкції
(NPC),
тобто такої, яка розташована
безпосередньо
за поточною інструкцією умовного переходу,
додають знакову константу зі службового
регістру
Imm, (саме він містить значення data). Друга мікродія визначає (істинне або хибне) значення умови Condition умовного переходу. Заради цього вмістиме службового регістру A, що є збіжним із вмістимим R5 (у прикладі інструкції), порівнюють на основі операції (op) з нулем. Згідно семантики інструкції BNEZ отримуємо, що Cond = true,
коли
вмістиме
R5
ненульове,
або Cond = false,
якщо R5 містить нуль.
Фізично Cond являє собою однобітовий регістр у складі вузла Zero ?. Важливо,
що обчислюється значення двох необхідних елементів виконання умовного переходу, а саме, однобітова умова Cond та цільова адреса переходу,
яку тимчасово
зберігають у службовому
вихідному регістрі АЛП ALUoutput. Безпосереднє виконання умовного переходу,
що
полягає в природній (за чергою) чи неприродній (коли виконують стрибок до цільової адреси) зміні вмістимого PC, виконують наступним циклом. В циклі (memory access/branch completion cycle - MEM) виконують наступну мікродію: LMD
=
DM [ALUoutput]; або DM [ALUoutput]
=
B. Звернення до пам'яті застосовують в
інструкціях
завантаження (наприклад, LW R6,112(R3)) і в інструкціях збереження (наприклад, SW 112(R3),R6). Першу мікродію
виконують тільки у випадку інструкції Load (завантаження).
Тут за допомогою попередньо розрахованої ефективної адреси пам'яті даних, яку тимчасово зберігають у службовому регістрі ALUoutput, здійснюють доступ до пам'яті,
що і позначено
записом DM[ALUoutput]. Фізично з пам'яті завжди зчитують 32 біти (або навіть цілі пакети з 32-х бітових структурних одиниць). Отриманий з пам’яті даних бінарний код тимчасово завантажують до ще одного службового регістру LMD
(Load Memory Data).
І тільки наступного циклу WB, що поки що не розглядався, пересилають зчитаний код з регістру LMD до конкретної комірки (в нашому прикладі - це комірка з адресою R6) регістрового файла. Другу мікродію реалізують лише в інструкції
Store
(збереження). Тут до комірки пам'яті даних за адресою,
що зберігають в службовому регістрі ALUoutput = (R3) + 112, засилають вмістиме
службового
регістру
B.
При цьому (у наведеному прикладі) для інструкції SW має місце тотожність (В)=(R6). Увага! Цикл змінює програмний стан комп’ютера. Після його виконання поновлення попереднього програмного стану унеможливлено!
Умовний
перехід (branch) Виконують наступну умовну мікродію: if (condition) PC = ALUoutput
else PC = NPC. Здійснюють природну (cond=0) або неприродну (cond =1) заміну вмістимого PC з метою реалізації наступної за branch інструкції. Увага! Тут змінюють програмний стан комп’ютера. Після його виконання поновлення попереднього програмного стану унеможливлено! На останньому
циклі (write-back cycle - WB) виконання інструкції у разі потреби результат,
що отримано на
попередніх
фазах
записують
до
певної комірки RX регістрового файла. Наприклад, до R1, якщо поточною є інструкція ADD R1,R2,R3, або до
R6 для інструкції LW
R6,112(R3). Увага! Тут змінюють програмний стан комп’ютера. Після його виконання поновлення попереднього програмного стану унеможливлено!
АЛП-операція “регістр – регістр” Виконують наступну мікродію: Regs[IR16..20]
=
ALUoutput. Мікродія зберігає
результат
ALU-операції
в
регістрі призначення (наприклад, в регістрі R1 на прикладі інструкції ADD). Зрозуміло, що біти 16..20
з формату
поточно виконуваної інструкції
містять
бінарний
номер регістру призначення. AЛП-операція “регістр - безпосередній операнд” Виконують наступну мікродію: Regs[IR11..15 ]
=
ALUoutput. Ця мікродія також зберігає результат операції, наприклад, SUB R5, R4, 1002, в комірці R5 регістрового файла. Інструкція завантаження (наприклад, LW
R6, 112(R3 )) Виконують наступну мікродію: Regs[IR 11..15 ]
=
LMD. Наведена мікроінструкція надсилає до комірки R6
регістрового файла вмістиме комірки пам'яті даних за адресою 112 + (R3),
яке на попередніх циклах вже було вибране з пам'яті і тимчасово утримувалося
в службовому регістрі LMD. Цим опис мікродій керування роботою RISC машини завершено.
3.
Розрахунки відповідно до завдання Завдання 1 Вдосконалити структуру процесора DLX, яку подано у вступі, відповідно до завдання. Нанести на структурі розрядність адресних ліній, ліній даних та ліній керування (при необхідності), вказати зв’язок з основною пам’яттю. (Дане завдання виконане в додатку А) Розробити формат інструкцій різних типів (I-тип, R-тип, J-тип). Також необхідно врахувати, що процесор оперує 32 розрядними даними.
Дано: Кількість команд які виконує процесор: 4 команд; Кількість регістрів загального призначення в Регістровому Файлі – 32;
Розрядність безпосереднього операнда (Immediate) - 16 розрядів(біт);
Розв'язання: А) Інструкція І-типу:
31
30 29
25 24
20 19
4 3
0 OpCode rs1 rd Immediate
2
5
5
16
4 Рисунок 4 – Формат інструкції І-типу OpCode
= ]log2N[,
де N -
множина команд які може виконувати процессор. OpCode =
]log24 [ = 2
розряди. rs1 = ]log2N[, де N –кількість регістрів регістрового файлу . rs1 = ]log232[ = 5 розрядів. rd = ]log2N[, де N – кількість регістрів регістрового файлу. rd = ]log232[ = 5 розрядів. Immediate – безпосередній операнд. Immediate = 16 розрядів. Отже формат інструкції має 32 розряди. Б) Інструкція R-типу:
31
30 29
25 24
20 19
15 14
0
OpCode rs1 rs2 rd
2
5
5
5
15 Рисунок 5 – Формат інструкції R -типу
OpCode
= ]log2N[,
де N -
кількість команд які може виконувати процесор. OpCode = ] log24[ = 2 розрядів. rs1 = ]log2N[, де N – кількість регістрів загального призначення в регістровому файлі. rs1 = ] log232 [ = 5 розряди. rs2 = ]log2N[, де N – кількість регістрів загального призначення в регістровому файлі. rs2 = ] log232[ = 5 розряди. rd = ]log2N[, де N – кількість регістрів загального призначення в регістровому файлі. rd = ] log232[ = 5 розряди. Формат інструкції
R – типу має 32 – розряди.
В) Інструкція J(jump)-типу: 31
30 29
0
2
30
Рисунок 6 – Формат інструкції J -типу OpCode
= ]log2N[,
де N -
кількість команд які може виконувати процесор. OpCode = ] log24 [ = 2 розрядів. Offset added
to
PC - константа,
яку додають до вмістимого регістру наступної адреси аби знайти цільову адресу безумовного переходу. Оскільки довжина всіх інструкцій процесора повинна бути однаковою (32-розряди), то інструкція
J – типу має 32 розряди, а Offset added
to
PC
складає 29 розрядів. Завдання 2 Розрахувати загальну кількість елементів основної пам’яті, відповідно до елементів на яких вона побудована та загального об’єму основної пам’яті. Дано: Розрядність шини даних :
16 біт; Елементи пам’яті, на яких побудована основна пам’ять комп’ютера: 2Кх16; Об’єм основної пам’яті:
64 Мб
Розв'язання: Позначення елементів пам’яті 2Кх16 слід розуміти таким чином: 2К - кількість комірок в пам’яті; 16 - розрядність. Для побудови основної пам’яті об’ємом 64 Мб
на елеменах пам’яті 2Кх16 нам необхідно:
Визначити об’єм основної пам’яті в Кілобайтах:
ММ=64*1024= 65 536
Кбайт Визначити об’єм одного елемента пам’яті в Кілобайтах:
SM= 2 * x
Кбайт. (х=у/8,де у-розрядність елемента пам’яті).
SM =2* 16/8 = 4
Кбайт Визначення кількість елементів пам’яті N можна поділивши об’єм основної пам’яті ММ на об’єм пам’яті одного елемента SM.
N=65 536
/ 4 = 16 384. Завдання 3 Розрахувати розрядність шини адрес, відповідно до елементів на яких вона побудована та загального об’єму основної пам’яті. (Шина даних основної пам’яті відповідає шині даних одного її елемента). Дано: Елементи пам’яті, на яких побудована основна пам’ять комп’ютера: 2Кх16; Об’єм основної пам’яті: 64 Мб; Розрядність шини даних: 16 біт. Розв'язання: Об’єм основної пам’яті ММ=65 536
Кбайт, розрядність кожної комірки пам’яті R=16. Для визначення кількості комірок NM
потрібно визначити об’єм основної пам’яті в бітах ММb та поділити його на розрядність комірки R.
MMb=MM*1024*8=65 536 *1024*8=536 870 912. NM=MMb/R=536 870 912/16=33 554 432. Розрядність шини адрес RA визначається за формулою: RA = [Log2 NM] = [Log2 33 554 432] = 25. Завдання 4 Визначити кількість процесорних тактів, за якою будуть зчитуватись дані з основної пам’яті. Розв'язання: Оскільки розрядність ШД(шини даних) 16 біт, то для зчитування даних розрядністю 32 біт
потрібно: 32/16 = 2 процесорних такти. Завдання 5 Визначити значення константи, яке необхідне для обчислення наступного значення програмного лічильника (наступної адреси інструкції в основній пам’яті). Розв'язання: Значення константи буде рівне розрядності інструкції
поділеної
на розрядність шини даних (16 біт), оскільки розрядність інструкції = 32, то 32/16=2. Отже константа буде рівною:
Const = 2. Завдання 6 Визначити розрядність регістра інструкцій.
Розв'язання: Розрядність
регістра інструкцій визначається розрядністю інструкції (в моєму випадку вона складає 32 розряди), тобто розрядність регістра інструкцій – 32.
Завдання 7 Розрахувати формат адреси для кеш-пам’яті даних. Дано:
Кеш даних:
128 Кб ,
64 блоків;
Основна пам’ять:
64 МБ.
Розв'язання: - Розмір зовнішньої пам’яті MemSize = 64 МБ = 67 108 864 байт; Розмір пам’яті кешу даних DataCacheSize = 128 Кб = 131 072 байт; Розрядність поля Section рівна:

Кількість блоків рівна BlockNumber = 64; Розрядність поля Block рівна: Розмір блоку
BlockSize = DataCacheSize/BlockNumber = 131 072/ 64 = 2048 Byte; Розрядність поля Byte рівна:


Рисунок 7 - Формат адреси кешу даних. Завдання 8 Розрахувати формат адреси для кеш-пам’яті команд. Дано:
Кеш команд:
1М,
256 блоків;
Основна пам’ять:
64 МБ.
Розв'язання: - Розмір зовнішньої пам’яті MemSize = 64 МБ= 67 108 864 байт; Розмір пам’яті кешу команд InstructionCacheSize = 1М = 1 048 576 Byte; Розрядність поля Section рівна:

Кількість блоків рівна BlockNumber = 256; Розрядність поля Block рівна: Розмір блоку BlockSize = InstructionCacheSize/BlockNumber =
= 1048576 / 256= 4096 байт; Розрядність поля Byte рівна:

Формат адреси кешу даних наведено на рисунок 8 : Рисунок 8 - Формат адреси кешу команд. Завдання 9 Відобразити послідосність мікродій, які виконуються на різних етапах (циклах) процесора за допомогою трьох команд (завантаження даних з ОП, запис даних в ОП, виконання арифметичної/логічної операції з використанням безпосереднього операнду). Розв'язання: Щоб відобразити послідосність мікродій, які виконуються на різних етапах (циклах) процессора, я використаю настунні команди : LW – завантажити слово; SB – зберегти байт;
OR – логічне додавання; SNE – перевірка на рівність нулю; SRL – побітний здвіг вліво; SUBUI – віднімання неввідного (unsigned) та Imm; J – умовний перехід.
Таблиця 2.1 – Відображення послідовності мікродій процесора. Цикли виконання інструкцій LW SB OR IF IR = IM[PC]; NPC = PC+2; IR = IM[PC]; NPC = PC+2; IR = IM[PC]; NPC = PC+2; ID
A=Regs[IR29..25]; B=Regs[IR24..20]; Imm=Regs((IR19)16IR19...4) A=Regs[IR29..25]; B=Regs[IR24..20]; Imm=Regs((IR19)8 IR19...12) A=Regs[IR29..25]; B=Regs[IR24..20];
EX
ALUoutput = A+Imm ALUoutput = A+Imm ALUoutput = A or B.
MEM LMD = DM [ALUoutput] DM [ALUoutput]=B PC=ALUoutput SWB Regs[IR29..25] = LMD
rd Regs[IR19..15] = ALUoutput
Таблиця 2.2 – Відображення послідовності мікродій процесора. Цикли виконання інструкцій SNE SRL SUBUI J IF IR = IM[PC]; NPC = PC+2; IR = IM[PC]; NPC = PC+2; IR = IM[PC]; NPC = PC+2; IR = IM[PC]; NPC = PC+2; ID A=Regs[IR29..25]; A=Regs[IR29..25]; A=Regs[IR29..25]; Imm=Regs((IR19)16IR19...4) Imm=Regs((IR19)16IR19...4) EX
If (A==0) ALUoutput = 1 else ALUoutput = 0 ALUoutput = A>>5
ALUoutput = A -5 – Imm.
ALUoutput = NPC + Imm; MEM PC=ALUoutput PC=ALUoutput PC=ALUoutput PC = ALUoutput SWB rd Regs[IR14..10] = ALUoutput rd Regs[IR9..5] = ALUoutput rd Regs[IR4..0] = ALUoutput Завдання 10 Сформулювати загальні висновки, щодо продуктивності процесора, на підставі отриманих розрахункових даних. Розв'язання: Розрядність шини даних 16 біт і враховуючи формат інструкції, то вибірка інструкції буде складати 2 такти, що є досить непогано. Розрядність поля безпосереднього операнда складає 16 біт, що дає можливість використовувати числа в діапазоні від 0 до 65535 для без знакових чисел, і від – 32768 до +32767 для знакових чисел. Даний процесор може виконувати 7 команди, що є мало для універсальних комп’ютерів. Кількість регістрів в регістровому файлі – 32, що є мало для процесора. Тому, беручи до уваги зроблені вище висновки, як висновок можна сказати що процесор розроблений в даному курсовому проекті має непогану швидкодію і продуктивність. Даний процесор може обробляти досить великі значення, проте має обмежений набір команд, що суттєво звужує можливості його застосування.
Висновок
Під час виконання данного курсового проекту мною були виконанні поставленні завдання, при проектуванні
RISC-комп'ютера. Тобто виконанні наступні етапи:
1. Було розроблено формат інструкцій різних типів (I-тип, R-тип, J-тип); 2. Розраховано загальну кількість елементів основної пам’яті; 3.
Розраховано розрядность шини адрес; 4. Визначенно кількість процесорних тактів, за якою будуть зчитуватись
Антиботан аватар за замовчуванням

01.01.1970 03:01

Коментарі

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

Оголошення від адміністратора

Антиботан аватар за замовчуванням

пропонує роботу

Admin

26.02.2019 12:38

Привіт усім учасникам нашого порталу! Хороші новини - з‘явилась можливість кожному заробити на своїх знаннях та вміннях. Тепер Ви можете продавати свої роботи на сайті заробляючи кошти, рейтинг і довіру користувачів. Потрібно завантажити роботу, вказати ціну і додати один інформативний скріншот з деякими частинами виконаних завдань. Навіть одна якісна і всім необхідна робота може продатися сотні разів. «Головою заробляти» продуктивніше ніж руками! :-)

Завантаження файлу

Якщо Ви маєте на своєму комп'ютері файли, пов'язані з навчанням( розрахункові, лабораторні, практичні, контрольні роботи та інше...), і Вам не шкода ними поділитись - то скористайтесь формою для завантаження файлу, попередньо заархівувавши все в архів .rar або .zip розміром до 100мб, і до нього невдовзі отримають доступ студенти всієї України! Ви отримаєте грошову винагороду в кінці місяця, якщо станете одним з трьох переможців!
Стань активним учасником руху antibotan!
Поділись актуальною інформацією,
і отримай привілеї у користуванні архівом! Детальніше

Новини