Міністерство освіти і науки України
Національний університет "Львівська Політехніка"
Кафедра ЕОМ
/
Пояснювальна записка
до курсової роботи
з курсу:
«Архітектура комп’ютерів.Частина І»
на тему :
«ПРОЕКТУВАННЯ RISC-КОМП'ЮТЕРА»
Анотація
В ході виконання курсової роботи вивчається принцип дії та архітектура прототипних варіантів сучасних RISC-комп'ютерів.
Також проводиться розробка форматів інструкцій різних типів (I-тип, R-тип, J-тип), розрахунок:
1) загальної кількісті елементів основної пам’яті;
2) загального об’єму основної пам’яті;
3) розрядність шини адрес;
4) кількості процесорних тактів;
5) значення константи, яке необхідне для обчислення наступного значення програмного лічильника (наступної адреси інструкції в основній пам’яті);
6) формат адреси для кеш-пам’яті даних;
7) формат адреси для кеш-пам’яті команд.
Зміст
1)Конкретизовані та розширені вихідні дані на проектування…………..… ..3
2)Основні принципи побудови скалярних RISC-комп'ютерів………….…… .4
3)Розділ з розрахунками відповідно до завданя………………………….… ...7
4)Основні результати роботи (висновок)……………………………………..13
5)Використана література……………………………………………………...14
6)Додаток………………………………………………………………………..15
Конкретизовані та розширені вихідні дані на проектування
Літера прізвища
Позиція літери прізвища
№ Завдання
Варіант завдання
Л
1
1
15
Е
2
2
6
В
3
3
3
Л
1
4
15
Е
2
5
6
В
3
6
3
Л
1
7
15
Е
2
8
6
Кількість регістрів загального призначен-ня в РФ
К-ть команд, які може виконувати процесор
Розрядність безпосеред-нього операнда
Об’єм основної пам’яті комп’юте-ра
Елементи на яких побудована основна пам’ять комп’ютера
Розмір кеш-пам’яті даних / розмір блоку
Розмір кеш-пам’яті команд / розмір блоку
Команда для демострації роботи процесора
16
32
16
64 Мб
4Кх16
256K / 128
1М / 64
Логічна.
Основні принципи побудови скалярних RISC-комп'ютерів
RISC (reduced instruction set computer) архітектура має наступні властивості:
Одноциклові операції (кожну інструкцію еквівалентно виконують за один тактовий інтервал, цикл).
Архітектурний дизайн системи інструкцій має назву load/storе, де інструкції звернення до комірок пам’яті розвантажені від виконання операцій (арифметичних, логічних, зсувних тощо).
Скорочену систему інструкцій і адресувальних режимів, що спрощує апаратуру керування.
Фіксований формат інструкцій і майже фіксований поділ цього формату на окремі поля.
Зменшення пригальмувань конвеєра інструкцій через застосування оптимізуючих компіляторів, що раціонально диспетчеризують виконуваний машинний код.
Формати 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 + <R26> (на це витрачаємо третій цикл виконання з назвою EX),
вибрати операнд із головної пам’яті (витрачаємо четвертий цикл виконання з назвою MEM),
переслати вибраний з пам’яті операнд до регістра R5 регістрового файла (витрачаємо п’ятий цикл виконання з назвою WB).
Зауважимо, що (апаратним) циклом ми називаємо один тактовий інтервал. Отже, виконання інструкції, що розглядається, вимагає витрати п’яти циклів. Іншим інструкцїям можуть не знадобитися всі щойно перелічені цикли виконання через їхню меншу часову складність, Проте менш складним інструкціям теж віддають на виконанання п’ять циклів, деякі з яких є робочими, а деякі - порожніми. Ясно, що при рівній довжині кожного машинного циклу ми нехтуємо наявним ефектом парадоксу пам’яті. Адже, наприклад, довжини циклів маніпулювання комірками МЕМ і маніпулювання регістрами ID/OF в нас є рівними.
Наступним рисунком подано черговість слідування апаратних циклів (інколи кажуть - фаз, сходинок) при виконанні RISC інструкції. Зауважимо ще раз, що не всі інструкції вимагають виконання усіх фаз. Наприклад, інструкції переходів використовують як роочі лише перши три цикли, а два останні цикли – як порожні. При конвеєрному виконанні інструкції переходу два останні цикли також витрачають як порожні, аби вирівняти час виконання всіх, як складних, так і спрощених інструкцій. При цьому на перших трьох апаратних циклах перехід є переходом, а на два останні він долає вже як інструкція nop.
/
Рис. 2 – Організація апаратних засобів інформаційного тракту RISCмашини
Тут:
IF – апаратні засоби вибирання з інструкційної пам’яті ІМ чергової інструкції,
ID – апаратні засоби декодування інструкції і паралельного з цим вибирання операндів,
EX – апаратні засоби виконання інструкції,
MEM – апаратура запису/читання пам’яті даних МЕМ,
WB – зворотній запис до регістрового файла (як мети) результату виконання інструкції.
3) Розрахунки відповідно до завдання
1. Вдосконалити структуру процесора DLX, яку подано у вступі, відповідно до завдання. Нанести на структурі розрядність адресних ліній, ліній даних та ліній керування (при необхідності), вказати зв’язок з основною пам’яттю. (Дане завдання виконане в додатку А)
Розробити формат інструкцій різних типів (I-тип, R-тип, J-тип). Також необхідно врахувати, що процесор оперує 32 розрядними даними.
Дано:
Кількість команд які виконує процесор: 8 команд;
Кількість регістрів загального призначення в Регістровому Файлі – 4;
Розрядність безпосереднього операнда (Immediate) – 16 розрядів(біт);
Розв'язання:
А) Інструкція І-типу:
31 26 25 21 20 16 15 3 2 0
OpCode
rs1
rd
Immediate
free
5 4 4 16 3
OpCode = ]log2N[, де N - множина команд які може виконувати процесор.
OpCode = ]log232[ = 5 розрядів.
rs1 = ]log2N[, де N –кількість регістрів регістрового файлу .
rs1 = ]log216[ = 4 розряди.
rd = ]log2N[, де N – кількість регістрів регістрового файлу.
rd = ]log216[ = 4 розряди.
Immediate – безпосередній операнд.
Immediate = 16 розрядів.
Відповідно формат інструкції І – типу має 32 – розряди, доповнюємо 3 розрядами для повноти.
Б) Інструкція R-типу:
31 26 25 21 20 16 15 11 10 0
5 4 4 4 10
OpCode = ]log2N[, де N - множина команд які може виконувати процесор.
OpCode = ]log232[ = 5 розрядів.
rs1 = ]log2N[, де N – кількість регістрів загального призначення в регістровому файлі.
rs1 = ]log216[ = 4 розряди.
rs2 = ]log2N[, де N – кількість регістрів загального призначення в регістровому файлі.
rs2 = ]log216[ = 4 розряди.
rd = ]log2N[, де N – кількість регістрів загального призначення в регістровому файлі.
rd = ] log216[ = 4 розряди.
Формат інструкції R–типу має 22 розряди. Оскільки даний процесор потребує, щоб інструкції були однакового розміру, формат інструкції треба доповнити 10-ма бітами справа.
Формат інструкції після доповнення - 32 розряди.
В) Інструкція J(jump)-типу:
31 26 25 0
5 26
OpCode = ]log2N[, де N - кількість команд які може виконувати процесор.
OpCode = ]log216[ = 5 розрядів.
Offset added to PC - константа, яку додають до вмістимого регістру наступної адреси аби знайти цільову адресу безумовного переходу.
Оскільки довжина всіх інструкцій процесора повинна бути однаковою (32 розряди), то інструкція J – типу має 32 розрядів, а Offset added to PC складає 29 розрядів.
2. Розрахувати загальну кількість елементів основної пам’яті, відповідно до елементів на яких вона побудована та загального об’єму основної пам’яті.
Дано:
Розрядність шини даних: 16 біт;
Елементи пам’яті, на яких побудована основна пам’ять комп’ютера: 2Кх16;
Об’єм основної пам’яті: 512 МБ.
Розв'язання:
Позначення елементів пам’яті 2Кх16 слід розуміти таким чином:
2К - кількість комірок в пам’яті;
16 - розрядність (кратна 2-ом байтам).
Для побудови основної пам’яті об’ємом 512 МБ на елементах пам’яті 2Кх16 нам необхідно:
Визначити об’єм основної пам’яті в кілобайтах:
ММ=512*1024=524288 Кбайт
Визначити об’єм одного елемента пам’яті в кілобайтах:
SM= 2 * x Кбайт. (х=у/8,де у-розрядність елемента пам’яті). SM =2*(16/8)
8
8
=4 Кбайти
Визначення кількість елементів пам’яті N можна поділивши об’єм основної пам’яті ММ на об’єм пам’яті одного елемента SM.
N=524288 / 4 = 131072.
3. Розрахувати розрядність шини адрес, відповідно до елементів на яких вона побудована та загального об’єму основної пам’яті. (Шина даних основної пам’яті відповідає шині даних одного її елемента).
Дано:
Елементи пам’яті, на яких побудована основна пам’ять комп’ютера: 16Кх8;
Об’єм основної пам’яті: 512 Мб;
Розрядність шини даних: 16 біт.
Розв'язання:
Об’єм основної пам’яті ММ=524288 Кбайт, розрядність кожної комірки пам’яті R=16.
Для визначення кількості комірок NM потрібно визначити об’єм основної пам’яті в бітах ММb та поділити його на розрядність комірки R.
MMb=MM*1024*8=524288*1024*8=4294967296.
NM=MMb/R=4294967296/16=268435456.
Розрядність шини адрес RA визначається за формулою:
RA = ]Log2NM[ = ]Log2268435456[= 28.
4. Визначити кількість процесорних тактів, за якою будуть зчитуватись дані з основної пам’яті.
Розв'язання:
Оскільки розрядність ШД(шини даних) 16 біт, то для зчитування даних розрядністю 32 біти потрібно: 32/16 = 2 процесорних такти.
5. Визначити значення константи, яке необхідне для обчислення наступного значення програмного лічильника (наступної адреси інструкції в основній пам’яті).
Розв'язання:
Значення константи буде рівне розрядності інструкції поділеної на розрядність шини даних (16 біт), оскільки розрядність інструкції = 32, то 32/16=2. Отже константа буде рівною: Const=+2.
6. Визначити розрядність регістра інструкцій.
Розв'язання:
Розрядність регістра інструкцій визначається розрядністю інструкції (в моєму випадку вона складає 32 розряди), тобто розрядність регістра інструкцій – 32.
7. Розрахувати формат адреси для кеш-пам’яті даних.
Дано:
Кеш даних: 64К, 64 блоки;
Основна пам’ять: 512 МБ.
Розв'язання:
Розмір зовнішньої пам’яті MemSize = 512 МБ = 536 870 912 байт;
Розмір пам’яті кешу даних DataChacheSize = 64 К = 65 536 байт;
Розрядність поля Section рівна:
13;
NSection=
log
2
MemSize
DataChacheSize
log
2
536 870 912
65536
Кількість блоків рівна BlockNumber = 64;
Розрядність поля Block рівна:
6;
NBlock=
log
2
BlockNumber
log
2
64
Розмір блоку BlockSize = DataChacheSize/BlockNumber = 65536/64=1024 байт = 1КБ;
Розрядність поля Byte рівна:
10;
NByte=
log
2
BlockSize
log
2
1024
31 22
21 16
15 3
2 0
Byte(10)
Block(6)
Section(13)
8. Розрахувати формат адреси для кеш-пам’яті команд.
Дано:
Кеш команд: 64K, 64 блоки;
Основна пам’ять: 512 МБ.
Розв'язання:
Розмір зовнішньої пам’яті MemSize = 512 Мб = 536 870 912 байт;
Розмір пам’яті кешу команд InstructionCacheSize = 64К = 65 536 байт;
Розрядність поля Section рівна:
13;
NSection=
log
2
MemSize
InstructionChacheSize
log
2
536 870 912
65 536
Кількість блоків рівна BlockNumber = 64;
Розрядність поля Block рівна:
6;
NBlock=
log
2
BlockNumber
log
2
64
Розмір блоку BlockSize = InstructionChacheSize/BlockNumber =
65536/64=1024 байт = 1КБ;
Розрядність поля Byte рівна:
10;
NByte=
log
2
BlockSize
log
2
1024
31 22
21 16
15 3
2 0
Byte(10)
Block(6)
Section(13)
9. Відобразити послідосність мікродій, які виконуються на різних етапах (циклах) процесора за допомогою трьох команд (завантаження даних з ОП, запис даних в ОП, виконання арифметичної/логічної операції з використанням безпосереднього операнду).
Розв'язання:
Щоб відобразити послідосність мікродій, які виконуються на різних етапах (циклах) процессора, я використаю настунні команди :
LW – завантажити слово;
SW – зберегти слово;
Цикли
виконання
інструкцій
LW
SW
AND
IF
IR = IM[PC];
NPC = PC+2;
IR = IM[PC];
NPC = PC+2;
IR = IM[PC];
NPC = PC+2;
ID
A=Regs[IR28..27];
B=Regs[IR26..25];
Imm=Regs((IR16)16##IR24...9)
A=Regs[IR28..27];
B=Regs[IR26..15];
Imm=Regs((IR16)16##IR24...9)
A=Regs[IR28..27];
B=Regs[IR26..25];
EX
ALUoutput = A+Imm
ALUoutput = A+Imm
ALUoutput = A and B.
MEM
LMD = DM [ALUoutput]
DM [ALUotput]=B
8WB
Regs[IR28..27] = LMD
Regs[IR24..23] = ALUoutput
10. Сформулювати загальні висновки, щодо продуктивності процесора, на підставі отриманих розрахункових даних.
Розв'язання:
Розрядність шини даних 16 біт, що є вже достатньо, враховуючи формат інструкції, то вибірка інструкції буде складати 2 такти, що є досить добре.
Розрядність поля безпосереднього операнда складає 16 біт, що дає можливість використовувати числа в діапазоні від 0 до 65535 для беззнакових чисел, і від – 32 768 до 32 767 для знакових чисел.
Даний процесор може виконувати 8 команд, що є дуже мало для універсальних комп’ютерів, але може бути достатньо для вузькоспеціалізованих.
3) Висновок
Під час виконання данного курсового проекту були виконанні поставленні завдання, при проектуванні RISC-комп'ютера.
Тобто виконанні наступні етапи:
1. Було розроблено формат інструкцій різних типів (I-тип, R-тип, J-тип);
2. Розраховано загальну кількість елементів основної пам’яті;
3. Розраховано розрядность шини адрес;
4. Визначенно кількість процесорних тактів, за якою будуть зчитуватись дані з основної пам’яті.
5.Визначенно значення константи, яке необхідне для обчислення наступного значення програмного лічильника (наступної адреси інструкції в основній пам’яті);
6. Визначенно розрядність регістра інструкцій;
7. Розраховано формат адреси для кеш-пам’яті;
4)Література
Майоров С.А., Новиков Г.И. Принципы организации цифровых машин. - Л., Машиностроение, 1974.
Баранов С.И. Синтез микропрограммных автоматов. - Л.: Машиностроение, 1980.
Hamacher V., Vranesic Z., and Safwat G. Computer Organization. - McGraw-Hill Publishing Company, International Edition, 1990. - 617 p.
Мотоока Е., Томита С., Танака Т., Сайто Е., Уэхара Т. Компьютеры на СБИС. В двух книгах. - М.: Мир, 1988.
Искусственный интеллект: В 3-х книгах. Кн. 3. Программные и аппаратные средства: Справочник/Под ред. В.Н. Захарова, В.Ф., Хорошевского. - М.: Радио и связь. - 1990. - 368 с.
Microprocessors, Volume I. - Intel Corp., 1992.
Пом А., Агравал О. Быстродействующие системы памяти. - М.: Мир, 1987. - 264 с.
Додаток