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

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

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

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

Рік:
2004
Тип роботи:
Курсова робота
Предмет:
Архітектура комп'ютерів

Частина тексту файла (без зображень, графіків і формул):

Міністерство освіти і науки України Національний університет „Львівська політехніка” Кафедра електронних обчислювальних машин  КУРСОВА РОБОТА на тему Проектування прототипу скалярного RISC-комп’ютера. Львів – 2004 Анотація Наприкінці 70-х років ідея побудови комп'ютера з обмеженим набором команд виявилася у фокусі уваги фахівців практично всіх найбільших наукових центрів світу, однак найбільшу популярність одержали результати досліджень, проведених Девідом Паттерсоном (David Patterson) і Карло Секуіном (Carlo Sequin) у Каліфорнійському університеті Берклі, Джоном Куком (John Сосke) у Дослідницьких лабораторіях IBM (IBM Research Labs) і групою вчених Стендфордского університету. Спочатку Джон Кук за допомогою експериментального комп'ютера "модель 801" продемонстрував, що використання в програмі тільки найпростіших команд формату "регістр-регістр" (операнди вибираються з оперативних регістрів процесора, і результат операції також записується в регістр) дозволяє підвищити швидкість виконання більшості задач обчислювального типу в 2-3 рази. Потім висновки безлічі груп дослідників були узагальнені у виді правила "80/20", що говорить, що в типовому випадку 80% коду програми використовує всего 20% найпростіших команд "регістр-регістр" повного набору інструкцій CISC. Більш того, Джон Дабберпул (John Dubberpuhl) довів, що видалення із системи команд складних операцій дозволяє зменшити обсяг апаратури процесора (природно, за рахунок скорочення центрального керування) приблизно в 10 разів без відчутного уповільнення виконання задач. Нарешті, Паттерсон і Секуін у проекті RISC, від якого пішло назву всього класу процесорів з подібною архітектурою, сформулювали 4 основних принципи RISC: Будь-яка операція, незалежно від її типу, повинна виконуватися за один такт. Система команд повинна містити мінімальну кількість найбільш часто використовуваних найпростіших інструкцій однакової довжини. Операції обробки даних реалізуються тільки у форматі "регістр-регістр". Обмін між оперативними регістрами і пам'яттю (модифікація перемінних у пам'яті) виконується тільки за допомогою команд завантаження/запису. Склад системи команд повинний бути "зручний" для компіляції операторів мов високого рівня. RISC-процесори обов'язково повинні мати конвеєризовані арифметичні пристрої. Сучасні RISC-процесори реалізують близько 150 інструкцій. Але основний закон RISC був і залишається непорушним: обробка даних виконується тільки в рамках реєстрової структури процесора без звертання до пам'яті "усередині" арифметичних і логічних команд. Зміст  TOC \o "1-2" \h \z \u  HYPERLINK \l "_Toc60428769" 1. Вступ 4 1.1. Завдання на проектування 5 2.Теоретична частина 6 2.1. Структура прототипу скалярного RISC-комп’ютера 6 2.2. Формати інструкцій DLX – машини 7 2.3. Цикл вибирання інструкції 8 2.4. Цикл декодування інструкції/вибирання операндів з регістрового файлу 9 2.5. Цикл виконання/визначення ефективної адреси 9 2.6. Цикл звернення до пам’яті 10 2.7. Цикл зворотнього запису 11 2.8. Опис кеш-пам’яті RISC-комп’ютера 11 2.8.1. Концепція кеш-пам’яті 11 2.8.2 Характеристики і робота кеша 12 2.9. Структура пам’яті 13 2.10. Генеральна структура 13 3. Проектувальний розділ 14 3.1. Розробка мікропрограми роботи DLX машини 14 3.2. Опис мікропрограми на основі граф-схеми 14 4. Визначення реальних керуючих сигналів 17 4.1 Принципи організації пам’яті 19 5. Конвеєризація інформаційного тракту 20 6. Висновки 21 7. Використана література 22  1.Вступ Термін "архітектура системи" часто вживається як у вузькому, так і в широкому розумінні цього слова. У вузькому - під архітектурою розуміється архітектура набору команд. Архітектура набору команд служить границею між апаратурою і програмним забезпеченням і представляє ту частину системи, що видна програмісту чи розробнику компіляторів. У широкому змісті архітектура охоплює поняття організації системи, що включає такі аспекти розробки комп'ютера як систему пам'яті, структуру системної шини, організацію вводу/виводу і т.п. Інтерфейси наступних рівнів можуть розмежовувати визначені рівні усередині програмного забезпечення. Наприклад, рівень керування логічними ресурсами може включати реалізацію таких функцій, як керування базою даних, файлами, віртуальною пам'яттю, мережною телеобробкою. До рівня керування фізичними ресурсами відносяться функції керування зовнішньою й оперативною пам'яттю, керування процесами, що виконуються в системі. Наступний рівень відбиває основну лінію розмежування системи, а саме границю між системним програмним забезпеченням і апаратурою. Цю ідею можна розвити і далі і говорити про розподіл функцій між окремими частинами фізичної системи. Наприклад, деякий інтерфейс визначає, які функції реалізують центральні процесори, а які - процесори вводу/виводу. Архітектура наступного рівня визначає розмежування функцій між процесорами вводу/виводу і контролерами зовнішніх пристроїв. У свою чергу можна розмежувати функції, реалізовані контролерами і самими пристроями вводу/виводу (терміналами, модемами, нагромаджувачами на магнітних дисках і стрічках). Архітектура таких рівнів часто називається архітектурою фізичного вводу/виводу. Архітектура набору команд є границею між апаратурою і програмним забезпеченням і представляє ту частину системи, що видна програмісту чи розроблювачу компіляторів. Двома основними архітектурами набору команд, використовуваними комп'ютерною промисловістю на сучасному етапі розвитку обчислювальної техніки є архітектури CІSC і RІSC. Основоположником CіSC-архітектури можна вважати компанію ІBM з її базовою архітектурою /360, ядро якої використовується з1964 року і дійшло до наших днів, наприклад, у таких сучасних мейнфреймах як ІBM ES/9000. Лідером у розробці мікропроцесорів з повним набором команд (CІSC - Complete Іnstructіon Set Computer) вважається компанія Іntel зі своєю серією x86 і Pentіum. Ця архітектура є практичним стандартом для ринку мікрокомп'ютерів. Для CіSC-процесорів характерно: порівняно невелике число регістрів загального призначення; велика кількість машинних команд, деякі з який навантажені семантично аналогічно операторам високорівневих мов програмування і виконуються за багато тактів; велика кількість методів адресації; велика кількість форматів команд різної розрядності; перевага двухадресного формату команд; наявність команд обробки типу регістр-пам'ять. Розробка експериментального проекту компанії ІBM почалася ще наприкінці 70-х років, але його результати ніколи не публікувалися і комп'ютер на його основі в промислових масштабах не виготовлявся. У 1980 році Д. Паттерсон зі своїми колегами з Берклі почали свій проект і виготовили дві машини, що одержали назви RІSC-І і RІSC-ІІ. Головними ідеями цих машин було відділення повільної пам'яті від високошвидкісних регістрів і використання реєстрових вікон. У 1981році Дж. Хеннессі зі своїми колегами опублікував опис стенфордської машини MІPS, основним аспектом розробки якої була ефективна реалізація конвеєрної обробки за допомогою ретельного планування компілятором його завантаження. Слід зазначити, що в останніх розробках компанії Іntel (мається на увазі Pentіum P54C і процесор наступного покоління P6), а також її послідовників-конкурентів (AMD R5, Cyrіx M1, NexGen Nx586 і ін.) широко використовуються ідеї, реалізовані в RІSC-мікропроцесорах, так що багато розходжень між CІSC і RІSC стираються. Однак складність архітектури і системи команд x86 залишається і є головним чинником, що обмежує продуктивність процесорів на її основі. 1.1. Завдання на проектування В даній курсовій роботі необхідно: 1. Побудувати граф автомата Мура керуючого пристрою процесора DLX згідно індивідуального завдання: 2. Визначити керуючі сигнали до всіх функціональних блоків процесора DLX. 3. Розробити функціональну схему та розкрити внутрішню структуру окремих функціональних блоків процесора DLX згідно індивідуального завдання: 2.Теоретична частина 2.1. Структура прототипу скалярного RISC-комп’ютера На першому етапі проектування прототипу (неконвеєрного) варіанту скалярного RISC-комп’ютера синтезуємо структурну схему даної машини. Синтез оснований на часовій діаграмі виконання інструкції, що має найбільшу часову складність. Час виконання кожної інструкцій процесора розбивається на 5 стадій (циклів), тобто часова складність оброблення команди рівна 5. Нижче наведено графічну інтерпретацію часових витрат та їх впорядкування в часі при обробці RISC-процесором інструкцій: EMBED PBrush Рис.1. Часова діаграма виконання п’ятициклової інструкції На рис.1 використано такі скорочені назви циклів: IF (instruction fetch) – вибірка поточної інструкції з пам’яті інструкцій; ID (instruction decoding) – дешифрування інструкції та вибирання операндів; EX (execution) – виконання специфічних дій, передбачених інструкцією, що виконується; MEM (memory) – читання/запис даних/результатів з/до пам’яті даних (в даному прототипі використовується Гарвардська архітектура, в якій відокремлені пам’яті даних та команд) WB (write back) – запис результатів АЛП-операцій або отриманих з пам’яті даних до комірок регістрового файлу. Розглянута послідовність фаз виконання програми орієнтована на найскладнішу інструкцію, яка охоплює усі 5 циклів (наприклад команда LW). Розглянемо структуру інформаційного тракту (рис.2) прототипу скалярного RISC-комп’ютера, відомого під назвою DLX (DeLuXe) процесор (машина). PC (program counter) програмно недоступний регістр (лічильник інструкцій), який визначає адресу інструкції в пам’яті IM (instruction memory). Кожна машинна інструкція є чотирьохбайтною (32 біта) для досягнення максимальної швидкодії та інструкції розташовані в пам’яті послідовно. Тому константа зміни адреси рівна +4. Adder (додавач) визначає адресу наступної інструкції і зберігає тимчасово її у регістрі NPC (new program counter). З IM зчитується бінарний код інструкції і записується до регістру IR (instruction register). Поля вибраної інструкції , містять бінарні коди – ідентифікатори регістрів операндів і вони репрезентують комірки вибраної пам’яті процесора, що базується на регістрах загального призначення (регістровий файл), які є доступні для програміста. Отримані коди регістрів-операндів надсилаються на вхід регістрового файлу Regs, а значення відповідні цим кодам регістрів записуються до внутрішніх регсітрів АЛП А і В (програмно недосяжні). Якщо інструкцією використовується безпосередній операнд, який прямо задається у форматі інструкції то його довжина не перевищує 16 біт. Для того, щоб зробити цей операнд стандартний за довжиною (32 біта) використовують комбінаційний вузол Signed Extend, в якому відбувається розширення знаку операнда. Отриманий результат тимчасово зберігають в службовому регістрі Imm. Таким чином на вході АЛП можна нарахувати 4 можливі операнди: з регістрів А і В, Imm та NPC. Операнд NPC використовується в АЛП при виконанні інструкцій умовного та безмовного переходів, коли до адреси NPC необхідно додати константу зміщення адреси. Мультиплексори MUX на вході АЛП використовуються для вибирання двох операндів із чотирьох можливих. Потім в АЛП виконуються операції, які визначає команда, що виконується і результат записується до службового регістру ALUout. Якщо результатом операції є число, то воно заноситься до комірки регістрового файлу, а якщо адреса то вона подається до мультиплексора вибору адреси MUX для вибору адреси переходу (чергова чи перехід). Керування цим мультиплексором здійснюється за допомогою вузла Zero?, де вміст регістру А порівнюються з 0. Результат порівняння є бінарне логічне значення, він здійснює керування.  Рис. 2. Структура інформаційного тракту прототипу скалярного RISC комп'ютера. На виході АЛП також може бути адреса, яка використовується також для звертання до пам’яті даних в командах зберігання/завантаження. В командах збереження вхідні дані зчитуються з регістра В прямо в пам’ять даних, а в командах завантаження отримані дані з пам’яті тимчасово зберігаються в службовому регістрі LMD. Мультиплексор в правій частині рисунку здійснює комутацію для зберігання вмістимого пам’яті даних або результату з АЛП, в регістрі загального призначення. На кожній частині рисунку зазначено до якого циклу виконання інструкції вона відноситься згідно тих міркувань, які були викладені при описі функцій кожного циклу. 2.2. Формати інструкцій DLX машини Формати інструкцій DLX машини наведено на рис. 3, а також надано стислий коментар щодо цих форматів. EMBED PBrush Рис. 3. Формати інструкцій DLX машини На рисунку 3 застосовано наступні скорочені позначення: I - тип: інструкції, що працюють із безпосереднім операндом (Immediate ). R - тип: інструкції, що отримують пару операндів із регістрів (Registers) регістрового файла процесора та повертають результат знов таки до регістру файла. J - тип: інструкції безумовних переходів (jump). Opcode: поле коду операції, довжина 6 бітів. rs1,rs2: поля довжини 5 бітів, що визначають номери регістрів-постачальників операндів (register of source), а саме, програмно досяжні регістри R0..R31. rd: п'ятибітове поле номера регістра-приймача результату дії (register of destination), також R0..R31. Immediate: 16-ти бітове поле, що містить безпосередній операнд; при цьому найлівіший розряд immediate може розглядатись як знаковий; тоді можливе розширення формату розрядями знакового біту за правилами доповняльного коду. Function: поле, що визначає функцію, яка розширює обмежену кількість (на 211 –1 = 2047 позицій) дозволених різних кодів операції. Offset added to PC: 26-ти бітова константа, яку додають до вмістимого регістру наступної адреси під час виконання інструкції безумовного переходу. Зазначимо наступні особливості форматів інструкцій: Довжина усіх форматів – 32 біти. Реалізовано фіксовану систему поділу форматів на поля. Реалізовано дизайн архітектури load/store. Формати поділено на три групи: формати АЛП операцій, формати операцій load/store, формати операцій керування програмою. Формати АЛП операцій – трьохадресувальні, виду OP RX,RY,RZ. Одна інструкція задає операцію ОР, вказує два регістри операндів RY, RX та регістр RZ збереження результату. 2.3. Цикл вибирання інструкції (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 за часовими витратами мікродія вибирання з повільних комірок пам'яті інструкцій є тотожньою мікродії, що працює з внутрішніми, а саме тому надшвидкими регістрами процесора. Відомо, що статистично "прискорити" повільні комірки головної пам'яті можна за допомогою кеш-пам'яті. Саме тому кеш (cache - прихована від програміста чи компілятора додаткова надшвидка буферна асоціативна чи частково-асоціативна пам'ять) обов'язково використовують у RISC- процесорах. 2.4. Цикл декодування інструкції/вибирання операндів з регістрового файлу (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 or Imm) у форматі інструкції має довжину лише 16 бітів. До того, як записати 16-бітовий код IR16..31 безпосереднього операнда з регістру інструкцій до службового регістру Imm, цей код треба розширити з врахуванням знаку (або розряду IR16) до 32-х бітового значення за наступним стандартним алгоритмом знакового розширення: IR16 ## IR16 ##...## IR16 # IR16..31 , де ## конкатенація. В циклі ID виконують розпізнавання інструкції та вибирання усіх можливих варіантів операндів поточної інструкції, незалежно від її типу з метою збільшення швидкодії. Формати інструкцій процесора втілюють техніку кодування форматів інструкцій, що відома під назвою fixed-field coding (фіксовано розташування полів-покажчиків на джерела та приймачі). 2.5. Цикл виконання/визначення ефективної адреси (Execution/effective address cycle – EX) Мікродії, що виконують в циклі EX, залежать від від типу поточної інструкції. Враховуючи це, всі інструкції процесора ділять на наступні три групи або типи: операції арифметико-логічного пристрою; операції завантаження операндів з головної пам'яті та збереження результатів у головній пам'яті; операції умовних та безумовних переходів. Розглянемо притамані кожному типу інструкцій мікродії. Операції із зверненням до пам'яті даних (load / store instructions) У циклі EX дані операції готують значення ефективної адреси, тобто вираховують значення бінарного коду, що безпосередньо визначає адресу комірки пам'яті даних. Виконують наступну мікродію: ALUoutput = A + Imm. Позначене в мікродії додавання безпосереднього операнда (однієї з компонент адреси) з вмістимим робочого регістра А (друго. компоненти) реалізують в АЛП (ALU). Отриману суму (вона завжди ціла і додатня, переносом нехтують) записують до ще одного, прозорого для програміста регістру ALUoutput. Цей регістр має розрядність 32 біти. Він зберігає коди результатів, що з'являються на виході комбінаційної схеми з назвою ALU. ALU-інструкція типу регістр-регістр (наприклад, SUB R1,R2,R3) Виконується відповідна до інструкції наступна мікродія: ALUoutput = A op B. Тут узагальнене позначення (op) можна конкретизувати як (add), (sub), і т.д. в залежності від конкретного виду поточної інструкції, яку опрацьовують в інформаційному тракті машини. Підкреслимо, що на попередньому щодо EX циклі, а саме на циклі ID, до службових регістрів вже завантажено вмістиме вибраних комірок пам'яті "регістровий файл" з адресами R2 і R3. Результат дії поки що не збережено в R1, але його тимчасово записано до службового регістру ALUoutput. ALU - інструкція типу регістр - безпосередній операнд (наприклад, ADD R1,R2,#23) Виконується наступна мікродія: ALUoutput = A op Imm. Ясно, що замість вмістимого R3 в операції приймає участь безпосередній операнд, який з врахуванням "знакового" розширення до 32-х бітів забирають із службового регістру Imm. Умовний перехід чи branch (наприклад, JR R5, data) Виконуються наступні мікродії: ALUoutput = NPC + Imm; Cond (ition) = (A op 0). Обидві мікродії є сумісними в часі. За допомогою першої мікродії вираховують цільову адресу умовного переходу. При цьому до вже визначеної адреси наступної інструкції (NPC), тобто такої, яка розташована безпосередньо за інструкцією умовного переходу, додають знакову константу зі службового регістру Imm. Друга мікродія визначає (істинне чи хибне) значення умови Condition умовного переходу. Cond являє собою однобітовий регістр у складі вузла Zero?. Звернемо увагу на те, що зараз зформовано лише значення двох необхідних елементів виконання branch, а саме, - однобітовий код умови Cond та цільову адресу переходу, яку тимчасово зберігають у службовому вихідному регістрі АЛП, тобто в ALUoutput. Безпосереднє виконання умовного переходу, що полягає в природній (за чергою) чи неприродній (коли виконують стрибок до цільової адреси) зміні вмістимого PC, виконують наступним циклом. 2.6. Цикл звернення до пам’яті (memory access/branch comletion 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 інструкції. 2.7. Цикл зворотнього запису (write back cycle - WB) На останньому циклі виконання інструкції у разі потреби результат, що отримано на попередніх фазах записують до деякої комірки RX регістрового файла. Наприклад, в R1, якщо поточною інструкцією ADD R1,R2,R3, або в R6, якщо поточною інструкцією є LW R6,#112(R3). ALU-операція регістр – регістр Виконують наступну мікродію: Regs[IR16..20] = ALUoutput. Мікродія зберігає результат ALU-операції в регістрі призначення. ALU-операція регістр - безпосередній операнд Виконують наступну мікродію: Regs[IR11..15 ] = ALUoutput. 2.8 Опис кеш-пам’яті RISC-комп’ютера 2.8.1. Концепція кеш-памяті Відомий так званий парадокс пам’яті – пам’ять ядра комп’ютера може бути або малою та швидкою, або ж відносно великою і повільною. Існує багаторівнева ієрархічна система пам’яті комп’ютера, де на верхньому рівні ієрархії знаходяться програмно-керовані регістри процесора, на другому – кеш, потім комірки головної пам’яті в Принстонській архітектурі, або комірки пам’яті даних в Гарвардській архітектурі, потім системи зовнішньої пам’яті. Звенення процесора до пам’яті завжди локалізовано в невеликому діапазоні змін її адрес. Саме він і дозволяє застосовувати ієрархічну систему пам’яті, аби розв’язати невідповідність швидкодій процесора і підсистеми пам’яті з одним рівнем ієрархії. Особливо дане питання є актуальним для RISC-процесорів, які є машинами гранично високої продуктивності.  Рис. 4. Кеш в складі ядра комп’ютера (CPU – центральний процесор, Memory – пам’ять, Cache – кеш) Кеш – це швидка буферна пам’ять невеликої місткості, що розташована поміж процесором і основною пам’яттю. Кеш працює на повній швидкості процесора і не пригальмовує його роботу. Кеш (cache в перекладі з англ. – тайник) лишається прозорим для програміста, тому що система інструкцій процесора, як правило, не містить команд роботи з кешем. Кеш, як правило, існує, і на апаратному рівні перехоплює сигнали процесора читання/запис, а коли треба, то надає процесору швидкі копіїі інформаційних кодів, які тимчасово зберігає у власній робочій пам’яті. Якщо кеш спроможний підмінити собою пам’ять (у понад 96-98 % випадків), тоді він за рахунок власних ресурсів задовільняє запит процесора, тоді процесор не пригальмовується. Коли “підміна” пам’яті неможлива , тоді кеш залучає до роботи пам’ять, обмін з якою суттєво пригальмовує процесор. Усі задачі, пов’язані із перехопленням запитів від процесора на роботу із пам’яттю, вирішує частина апаратури кешу під назвою контролер кешу. Вміст комірок головної пам’яті копіюється до пам’яті кешу разом із своїми адресами. 2.8.2. Характеристики і робота кеша Кеш характеризують: функцією проекції блоків пам’яті на блоки кеша (в нас – пряма проекція); алгоритмом заміни блоків кеша на блоки пам’яті (в нас – найпростіший, примусовий); алгоритмом виконання запису слова, як результату виконання дій в процесорі, до складної системи кеш-пам’ять (в нас застосовано спрощений алгоритм наскрізного запису). Розглянемо роботу спрощеного варіанту кешу відомого під назвою “кеш із прямою проекцією та наскрізним записом” (рис.5). У поясненні фігурує термін блок з трьома можливими тлумаченнями: блок, складається з сусідніх за адресним розташуванням слів без посилання на тип пам’яті; блок як множина комірок пам’яті даних або пам’яті інструкцій; блок як множина комірок робочої (внутрішньої) пам’яті кеша. Розрізнення тлумачень не є важким, воно забезпечено контекстом пояснення. Кожний блок пам’яті, що складають у середньому з (16 – 64) сусідніх слів, можна копіювати тільки до наперед визначеного блоку робочої пам’яті кеша. В нас номер блоку кеша, що приймає участь у копіюванні, однозначно визначено за допомогою семи розрядів адреси процесора, які містить поле Block (рис.5). Процесор “не розуміє” і не “сприймає” структурної інтерпретації адреси, що згенерував. Нехай адреса, яку генерує процесор при читанні вмістимого однієї комірки пам’яті до власного регістра, має довжину 16 бітів. В цьому випадку, контролер кеша за допомогою семи середніх розрядів адресного слова звертається до визначеного цими розрядами блоку власної пам’яті. Зрозуміло, що бінарний номер кеша є збіжним з бінарним наповненням поля Block адреси процесора. Шуканий в такий спосіб блок завжди присутній в робочій пам’яті кеша. При цьому кеш мусять скласти з 27 = 128 блоків. Але вміст винайденого блоку робочої пам’яті кеша може бути копією не одного, а одного з декількох дозволених на копіювання блоків пам’яті. Питання відповідності поточного наповнення визначеного блоку кеша запитанню процесора розв’язують за допомогою вмісту старших п’яти бітів адреси процесора, які утворюють поле із назвою Tag. EMBED PBrush Рис. 5. Внутрішня структура кеша з прямою проекцією; в кеші внутрішню структуру кожного блоку як сукупності множини слів відбито, а пам’яті – приховано Якщо при визначеному номері блоку вміст блоку кеша є відповідним, тоді вмістиме полів tag з поля адреси процесора і з мітки блоку робочої пам’яті кеша співпадають, тоді у блок кеша в поточний момент містить потрібну копію. В цьому випадку фіксують “влучення до кеша”. Ситуація з назвою промах виникає при розбіжності двох тегів. Контролер кеша вимушений перетранслювати адресне запитання від процесора до повільної пам’яті та перейти до стану очікування результатів роботи пам’яті на читання. Аби зменшити кількість звернень до пам’яті навіть у цій ситуації, читають не одне, вказане адресою процесора слово, а цілий інформаційний блок (з 16 - 64 сусідніх слов), який, безперечно, мусить містити шукане процесором слово пам’яті. Тут спрацьовує принцип локалізації адресних звертань процесора – “ наступне слово, що знадобиться процесору, скорше від усього, буде мати і наступну адресу”. Блок надсилають до кеша, де його копіюють до блоку робочої пам’яті із вже відомим номером, і, водночас, потрібне слово з цього блоку, подають до інформаційного входу процесора. Під час запису спочатку визначають присутність копії блоку, який містить старе значення, відповідного до наданої процесором адреси. У разі влучення до кеша запис виконують як до блоку кеша, так і до блоку пам’яті, інакше тільки до блоку пам’яті Але в обидвох випадках запис виконують повільно. 2.9. Структура пам’яті Розробка структури системи пам’яті в даному проектування, є тривіальною задачею. Тому наведемо спрощену структуру пам’яті(рис.6) EMBED PBrush Рис. 6. Структура пам’яті Пам’ять містить регістр адреси (MAR) і буферний регістр тимчасового збереження даних (MDR). Беспосереднє виконання функції запам’ятовування покладено на матрицю Memory Matrix. До пам’яті надходять два сигнали, що визначають мікродії читання та запису . Потік (Stream) даних є двох направленим, а потік адрес – однонаправленим. Фізичну сутність і процеси пам’яті не розглядаємо. Сучасні варіанти пам’яті мають надскладні функції і структуру. 2.10. Генеральна структура Спрощений варіант генеральної структури прототипу скалярного RISC комп’ютера надано на рис. 8. Пристрій керування (Control Unit) надсилає керуючі сигнали (MicroCode) до інформаційного шляху (DataPath) та пам’яті (Memory). З інформаційного шляху сигнали станів (Signals of States), якими можуть бути біти регістра інструкції і інше, те, що потрібно, надходять до керуючого пристрою, аби реалізувати розгалудження мікропрограми. Розділені пам’яті даних DM і інструкцій IM Гарвардської архітектури, що вище розглядалися, заступили швидкі кеші, відповідно, D-Cache та I_Cache. В свою чергу, кеші зв’язано з єдиною пам’яттю Принстонської архітектури. Ясно, що обмін в підсистемі пам’ять/кеш даних є двобічним, а в підсистемі пам’ять/кеш інструкцій – однобічним. EMBED PBrush Рис. 8. Варіант генеральної структури прототипу скалярного RISC комп’ютера Можна бачити, що наведена структура ефективно поєднала риси Принстонської і Гарвардської архітектур. 3. Проектувальний розділ 3.1.Розробка мікропрограми роботи DLX машини На даному етапі проектування прототипу скалярного RISC-комп’ютера розробляється мікропрограма його роботи у відповідності до вихідних інструкцій, а також їх кодування. Розглянемо виконання інструкцій окремо для кожного з циклів. Наведену мікропрограму реалізуємо пристроєм керування, який проектується нижче. Коректна генерація послідовності мікрокодів легко підтримується кодом поточної інструкції ( містить регістр IR), який починається від фази ID. 3.2. Опис мікропрограми на основі граф-схеми Керування побудуємо за математичною моделлю абстрактного автомата Мура (АА), як найпростішою. Мікропрограму роботи пристрою керування можна еквівалентно надати не таблицею, а граф-схемою алгоритму (ГСА). На ГСА позначеннями уi, закодовано мікродії, що генерує пристрій керування, а за допомогою xj: — сигнали станів пристроїв інформаційного тракту. Мікродії надсилає пристрій керування до вузлів інформаційного тракту. Зворотній зв'язок (від інформаційного тракту до пристрою керування) здійснюють сигнали станів. Потрібно побудувати абстрактной автомат (АА) Мура, що є еквівалентом кодованої ГСА. АА Мура визначено п'ятіркою з трьох множин та двох функцій: множини внутрішних станів А = {ao,al..}; множини вхідних сигналів Х = {x0,x1,...}; множини вихідних сигналів Y = {y0,y1,...}; функції переходів  EMBED Equation.3 ; функції виходів  EMBED Equation.3 . Скінчений АА має скінчені множини A,X,Y. Ініціальний АА Мура має наперед визначений початковий внутрішний стан а0. Функція переходів визначає наступний стан в залежності від поточного стану і вхідного сигналу. Функція виходів визначає вихідний сигнал (мікродію) в залежності від внутрішнього стану. Аби перейти від ГСА до АА Мура потрібно визначити усі елементи зазначеної п'ятірки. Сигнали умови переходу x0, x1, х2, x3, х4 та х5 відповідають розрядам поля коду операції IR0, IR1, IR2, IR3, IR4 та IR5, які міститься в регістрі команди IR. При цьому, як було вказано вище розряди IR0 та IR1 використовуються також для керування режимом формування безпосередньо заданного операнда в регістрі Imm. В наступній табл. З приведено принципи кодування команд, що задані на курсове проектування. Таблиця 3 Множини Y - {y0,y1,...}, що складається з 19 елементів (мікродій) та X = {x0,x1,...}, що складається з чотирьох елементів, визначено на етапі кодування ГСА та буде приведено нижче, при описі графа АА Мура. Функціональне призначення мікрооперацій вказане нижче: y0 - IR = IM [PC] y1 - NPC = PC + 4 y2 - A = Regs [IR6..10] y3 - B = Regs [IR11..15] y4 - Imm = (IR16)16 ## IR16..31 y5 - ALUout = A + Imm y6 - ALUout = A +B y7 - ALUout = A – Imm y8 - ALUout = A & B y9 - ALUout = NPC + Imm y10 - Zero (cond) = 0 y11 - Zero (cond) = 1 y12 - Zero (cond) = (A = 0) y13 - LMD = DM [ALUout] y14 - DM [ALUout] = B24…31 y15 - if (cond = 0 then PC = NPC else PC = ALUout) y16 - Regs [IR11..15] = LMD y17 - Regs [IR11..15] = ALUout y18 - Regs [IR16..20] = ALUout Множину А = {a0,a1..} визначають за наступним правилом: стартову вершину позначають символом внутрішнього стану а0; кожну операторну вершину позначають окремим, незбіжним із вже застосованими, символом внутрішнього стану, в нас множина складена 15-ма внутрішними станами, від a0 до а14. Результат приведений на рис. 8.  EMBED Visio.Drawing.6  Рис.8. Граф-схема алгоритму керуючого пристрою прототипу скалярного RISC-комп’ютера Далі необхідно визначити функції переходів і виходів. Ці функції визначаємо безпосередньо при побудові графа АА Мура (рис. 9).  EMBED Visio.Drawing.6  Рис.9. Граф АA Мура, що визначає алгоритм роботи пристрою керування Позначені на графі направлені ребра визначають функції переходів. Функцію виходів визначено позначками мікрооперацій біля вершин автомата. Оскільки в DLX процесорі кожна команда виконується за п'ять етапів, то на графі абстрактного автомату керуючого пристрою прототипу скалярного RISC процесора можна також виділити п'ять рівнів, причому стан а1 відповідає першому етапу IF; стан а2, а3 — другому етапу ID; стани, а4, а5, а6, а7 та а8 — третьому етапу ЕХ; стани а9, а10, а11— четвертому етапу MEM; стани а12, а13 та а14 - п'ятому етапу WB. У кожній вершині формуються відповідні сигнали мікрооперацій, порядок видачі яких описаний в табл. 1. 3.3. Конвеєризація інформаційного тракту При створенні конвеєрного варіанту інформаційного тракту потрібно запам’ятовувати результати виконання команди на кожному етапі, щоб наступна за нею команда могла використовувати апаратуру етапу в своїх цілях. Для цього використовуються конвеєрні регістри. Конвеєрні регістри – це звичайні, але програмно “прозорі”, регістри. Вони містять повне інформаційне “оточення“ інструкції, що вже є на конвеєрі, аби створити їй віртуальне враження про класично-ізольоване від інших сусідніх інструкцій опрацювання. Конвеєрні регістри розташовано “на межі циклів”, які мають назви, відповідні сусіднім межам, наприклад, IF/ID, ID/EX, EX/MEM, MEM/WB. Кожну поточну інструкцію, що опрацьовують, ніби пересувають сходинками IF, ID, EX, MEM, WB конвеєра. В ідеалі кожна з інструкцій не “відчуває” присутності на інших сходинках конвеєра “сусідів-конкурентів” на використання апаратури інформаційного тракту. Також, слід зазначити, що для виконання команди в DLX процесорі потрібно 5 тактів. Це призводить до того, що при виконанні команд Jmp/Branch (команд переходів), адреса наступної команди буде сформована після виконання чотирьох етапів. Для вирішення цієї проблеми, як один з варіантів, можна домовитися, що наступні чотири команди після команд переходів обов’язково виконуються. Ця домовленість призведе до ускладнення транслятора. Однак можливі випадки, коли програму не можливо буде трансформувати, що призведе до “холостих” тактів, а отже і зникне продуктивність конвеєра. Можливий інший підхід до вирішення проблеми переходів – це зміна інформаційного тракту. Даний варіант побудови інформаційного тракту наведено на рис. 5. В ньому, при виконанні команд переходів, адреса наступної команди обчислюється вже на другому етапі. Це призведе до зміни попередньої домовленості, а саме – після команд переходів обов’язково слід виконувати одну команду. Даний підхід суттєво зменьшить (у порівнянні з попереднім) складність транслятора і ймовірність виникнення ситуації, коли програму не можливо трансформувати. Ще однією проблемою, при створенні конвеєрного інформаційного тракту, є випадок, коли наступна команда використовує результати попередньої. Для вирішення даної проблеми можна виділити декілька варіантів. По-перше, можна передбачити у пристрої керування даний випадок і відповідну реакцію на нього – припинення обчислень та очікування потрібного результату (даних). Цей варіант призведе до ускладнення пристрою керування, а також до зменшення швидкодії конвеєра (або повної втрати конвеєризації). По-друге, можна створити тракт в якому є можливість вибирати інформацію з етапу та поміщати її до будь-якого іншого. Це також призведе до ускладнення пристрою керування, але швидкодію буде збережено або не суттєво (в порівнянні з попереднім варіантом) зменьшено. Цей варіант відображено на рис. 5. Вибір того чи іншого підходу до конвеєризації залежить від таких факторів: Набору команд процесора, що потрібно реалізувати. Цей фактор є одним з основних, оскільки він визначає як буде працювати процесор та які блоки потрібні для його роботи. Для прикладу візьмемо команди умовного переходу. Вони одразу ставлять обмеження: потрібно використати блок порівняння; обчислення адреси наступної команди можливе з другого етапу та інші. Ці обмеження призводять до виникнення критичних ситуацій в яких можливі простої конвеєра. Проте якщо команд умовних переходів не має, то зникають дані проблеми, а отже їх не потрібно вирішувати. Саме тому система команд, які потрібно реалізувати є одним з визначальних факторів при побудові конвеєрних процесорів. Швидкодії, яку потрібно досягнути. Цей фактор суттєво впливає на конвеєризацію. Наприклад, ми маємо в системі команд інструкцію безумовного переходу. Якщо реалізувати визначення адреси переходу на першому етапі це означатиме, що всі потрібні для цього блоки повинні бути розміщенні на першому етапі, а отже швидкодія цього блоку буде впливати на зменшення швидкодії цілого такту. Якщо ж розмістити частину блоку обчислення наступної адреси на першому етапі, а частину на другому, тоді тривалість одного такту буде зменшена, проте виникне проблема вибірки наступної команди (її адреса буде лише на другому етапі). Її вирішення призведе до ускладнення апаратної та програмної частини процесора.  рис.5. Конвеєрний (основний) варіант побудови інформаційного тракту DLX машини. Часу, що виділений для розробників. Цей фактор головним чином впливає на результат роботи. Коли розробники мають багато часу вони можуть проаналізувати багато різних варіантів вирішення певної проблеми конвеєризації та перевірити їх на даній системі команд. А отже ймовірність вибору оптимального варіанту побудови конвеєра є високою. Навпаки, коли часу недостатньо розробник повинен зупинятися на першому варіанті, що входить в межі швидкодії та продуктивності, які потрібно реалізувати. Як наслідок конвеєр буде мати параметри, які задовільняють вхідним...
Антиботан аватар за замовчуванням

01.01.1970 03:01-

Коментарі

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

Ділись своїми роботами та отримуй миттєві бонуси!

Маєш корисні навчальні матеріали, які припадають пилом на твоєму комп'ютері? Розрахункові, лабораторні, практичні чи контрольні роботи — завантажуй їх прямо зараз і одразу отримуй бали на свій рахунок! Заархівуй всі файли в один .zip (до 100 МБ) або завантажуй кожен файл окремо. Внесок у спільноту – це легкий спосіб допомогти іншим та отримати додаткові можливості на сайті. Твої старі роботи можуть приносити тобі нові нагороди!
Нічого не вибрано
0%

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

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

Подякувати Студентському архіву довільною сумою

Admin

26.02.2023 12:38

Дякуємо, що користуєтесь нашим архівом!