ПРОЕКТУВАННЯ ПРОТОТИПУ СКАЛЯРНОГО RISC-КОМП’ЮТЕРА.

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

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

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

Рік:
2004
Тип роботи:
Курсова робота
Предмет:
Інші
Група:
КІ-3

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

Міністерство освіти І науки України національний університет “Львівська політехніка” Кафедра еом Курсова робота на тему ПрОЕКТУВАННЯ ПРОТОТИПУ СКАЛЯРНОГО risc-КОМП’ЮТЕРА Виконав: студент гр. КІ-3 Прийняв: Львів 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-процесори обов'язково повинні мати конвеєризовані арифметичні пристрої. Cучасні RISC-процесори реалізують близько 150 інструкцій. Але основний закон RISC був і залишається непорушним: обробка даних виконується тільки в рамках реєстрової структури процесора без звертання до пам'яті "усередині" арифметичних і логічних команд. Зміст 1. Вступ.................................................................................................................................4 1.1. Завдання на проектування............................................................................................7 2. Теоретична частина......................................................................................................8 2.1. Структура прототипу скалярного RISC-комп’ютера................................................8 2.2. Формати інструкцій DLX – машини.........................................................................11 2.3. Цикл вибирання інструкції .......................................................................................12 2.4. Цикл декодування інструкції/вибирання операндів з регістрового файлу........................13 2.5. Цикл виконання/визначення ефективної адреси.....................................................14 2.6. Цикл звернення до пам’яті.........................................................................................15 2.7. Цикл зворотнього запису...........................................................................................16 2.8. Опис кеш-пам’яті RISC-комп’ютера........................................................................17 2.8.1. Концепція кеш-пам’яті............................................................................................17 2.8.2 Характеристики і робота кеша................................................................................18 2.9. Структура пам’яті.......................................................................................................20 2.10. Пристрій керування..................................................................................................21 2.10.1 Принцип декомпозиції цифрового пристрою академіка В.М.Глушкова.......................21 2.11. Генеральна структура...............................................................................................22 3. Проектувальний розділ..............................................................................................23 3.1. Розробка мікропрограми роботи DLX машини.......................................................23 3.2. Опис мікропрограми на основі граф-схеми.............................................................24 4. Визначення реальних керуючих сигналів..............................................................28 4.1 Принципи організації пам’яті.....................................................................................31 5. Конвейєризація інформаційного тракту………………………………………….32 6. Висновок........................................................................................................................35 7. Використана література.............................................................................................36 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-процессоров характерно: порівняно невелике число регістрів загального призначення; велика кількість машинних команд, деякі з який навантажені семантично аналогічно операторам високорівневих мов програмування і виконуються за багато тактів; велика кількість методів адресації; велика кількість форматів команд різної розрядності; перевага двухадресного формату команд; наявність команд обробки типу регістр-пам'ять. Основою архітектури сучасних робочих станцій і серверів є архітектура комп'ютера зі скороченим набором команд (RІSC - Reduced Іnstructіon Set Computer). Зачатки цієї архітектури ідуть своїми коренями до комп'ютерів CDC6600, розроблювачі яких (Торнтон, Крэй і ін.) усвідомили важливість спрощення набору команд для побудови швидких обчислювальних машин. Цю традицію спрощення архітектури С. Крэй з успіхом застосував при створенні широко відомої серії суперкомп'ютерів компанії Cray Research. Однак остаточне поняття RІSC у сучасному його розумінні сформувалося на базі трьох дослідницьких проектів комп'ютерів: процесора 801 компанії ІBM, процесора RІSC університету Беркли і процесора MІPS Стенфордского університету. Розробка експериментального проекту компанії ІBM почалася ще наприкінці 70-х років, але його результати ніколи не публікувалися і комп'ютер на його основі в промислових масштабах не виготовлявся. У 1980 році Д.Паттерсон зі своїми колегами з Берклі почали свій проект і виготовили дві машини, що одержали назви RІSC-І і RІSC-ІІ. Головними ідеями цих машин було відділення повільної пам'яті від високошвидкісних регістрів і використання реєстрових вікон. У 1981році Дж.Хеннессі зі своїми колегами опублікував опис стенфордської машини MІPS, основним аспектом розробки якої була ефективна реалізація конвеєрної обробки за допомогою ретельного планування компілятором його завантаження. Ці три машини мали багато загального. Усі вони дотримувались архітектури, що відокремлює команди обробки від команд роботи з пам'яттю, і опиралися на ефективну конвеєрну обробку. Система команд розроблялася таким чином, щоб виконання будь-якої команди займало невелику кількість машинних тактів (переважно один машинний такт). Сама логіка виконання команд із метою підвищення продуктивності орієнтувалася на апаратну, а не на мікропрограмну реалізацію. Щоб спростити логіку декодування команд використовувалися команди фіксованої довжини і фіксованого формату. Серед інших особливостей RіSC-архитектур слід зазначити наявність достатньо великого реєстрового файлу (у типових RіSC-процессорах реалізуються 32 чи більше число регістрів у порівнянні з 8 - 16 регістрами в CіSC-архитектурах), що дозволяє більшому обсягу даних зберігатися в регістрах на процесорному кристалі більший час і спрощує роботу компілятора по розподілі регістрів під змінні. Для обробки, як правило, використовуються трьохадресні команди, що крім спрощення дешифрації дає можливість зберігати більше число змінних у регістрах без їхнього наступного перезавантаження. До часу завершення університетських проектів (1983-1984 р.) позначився також прорив у технології виготовлення надвеликих інтегральних схем. Простота архітектури і її ефективність, підтверджена цими проектами, викликали великий інтерес у комп'ютерній індустрії і з 1986 року почалася активна промислова реалізація архітектури RІSC. До сьогоднішніх днів ця архітектура міцно займає лідируючі позиції на світовому комп'ютерному ринку робочих станцій і серверів. Розвиток архітектури RІSC у значній мірі визначався прогресом в області створення оптимізуючих компіляторів. Саме сучасна техніка компіляції дозволяє ефективно використовувати переваги більшого реєстрового файлу, конвеєрної організації і більшої швидкості виконання команд. Сучасні компілятори використовують також переваги іншої оптимізаційної техніки для підвищення продуктивності, зазвичай застосованої в процесорах RІSC: реалізацію затриманих переходів і суперскалярної обробки, що дозволяє в той самий момент часу видавати на виконання кілька команд. Слід зазначити, що в останніх розробках компанії І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 згідно індивідуального завдання: Об'єм зовнішньої пам'яті — 128Мб//-------------------------- Об'єм кеш-пам'яті — 32 Кб.//--------------- Об'єм сторінки — 256 б.//----------------- 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. Цей мультиплексом використовується для вибору адреси переходу (чергова чи перехід), яку потім надсилають до лічильника адрес PC. Керування цим мультиплексором здійснюється за допомогою вузла Zero?, де вміст регістру А порівнюються з нулем. Результат порівняння є бінарне логічне значення (так чи ні), який і здійснює керування. EMBED PBrush Рис. 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, or 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 бітів. В цей самий час, розрядність інформаційного тракту і усіх трьох службових регістрів є 32. До того, як записати 16-бітовий код IR16..31 безпосереднього операнда з регістру інструкцій до службового регістру Imm, цей код треба розширити з врахуванням знаку (або розряду IR16) до 32-х бітового значення за наступним стандартним алгоритмом знакового розширення: IR16 ## IR16 ##...## IR16 # IR16..31. Тут символом ## позначено операцію зчеплення (конкатенацію). Важливо, що в циклі ID виконують декодування (розпізнавання) інструкції та вибирання усіх можливих варіантів операндів поточної інструкції, незалежно від її типу, з метою збільшення швидкодії. З іншого боку, можливість одночасного вибирання усіх варіантів операндів потенційно обумовлено відповідною структурою форматів інструкцій, де фіксовано розташування полів-покажчиків на джерела та приймачі операндів і результатів. Іншими словами, формати інструкцій процесора втілюють техніку кодування форматів інструкцій, що відома під назвоюя1 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 умовного переходу. Заради цього вмістиме службового регістру A, що є збіжним із вмістимим R5 (у прикладі інструкції), порівнюють на основі операції (op) з нулем. Згідно семантики інструкції BNEZ отримуємо, що Cond=true, коли вмістиме R5 ненульове, або Cond=false, якщо R5 містить нуль. Фізично 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-операції в регістрі призначення (наприклад, в регістрі R1 на прикладі інструкції ADD). Зрозуміло, що біти 16..20 відповідного формату інструкції містять бінарний номер регістру призначення. ALU-операція регістр - безпосередній операнд Виконують наступну мікродію: Regs[IR11..15 ] = ALUoutput. Ця мікродія також зберігає результат операції, наприклад, SUB R5, R4, #1002, в комірці R5 регістрового файла. 2.8 Опис кеш-пам’яті RISC-комп’ютера 2.8.1. Концепція кеш-памяті Відомий так званий парадокс пам’яті – пам’ять ядра комп’ютера (ядро комп’ютера = процесор + пам’ять) може бути або малою, проте швидкою і задовільняти вимоги процесора щодо швидкодії, або ж відносно великою і повільною. Немає пам’яті відносно великої і, водночас, швидкої. Аби подалати зазначену невідповідність, вибудовують багаторівневу ієрархічну систему пам’яті комп’ютера, де на верхньому рівні ієрархії знаходяться програмно-керовані регістри процесора, на другому – кеш, потім комірки головної пам’яті в Принстонській архітектурі, або комірки пам’яті даних в Гарвардській архітектурі, потім системи зовнішньої пам’яті (диск, магнітні стрічки, архівна пам”ять з лазерною технологією і т.д.). За рівнями ієрархії, згори додолу, місткість пристроїв пам’яті зростає, а швидкодія зменшується. Керує інформаційними поміжрівневими обмінами операційна система. Надзвичайно важливим є той факт, що звенення процесора до пам’яті завжди локалізовано в невеликому діапазоні змін її адрес. Саме він і дозволяє застосовувати ієрархічну систему пам’яті, аби розв’язати невідповідність швидкодій процесора і підсистеми пам’яті з одним рівнем ієрархії. Особливо дане питання є актуальним для RISC-процесорів, які є машинами гранично високої продуктивності. EMBED PBrush Рис. 4. Кеш в складі ядра комп’ютера (CPU – центральний процесор, Memory – пам’ять, Cache – кеш) Кеш – це швидка буферна пам’ять невеликої місткості, що розташована поміж процесором і основною пам’яттю. Кеш працює на повній швидкості процесора і не пригальмовує його роботу. Кеш (cache в перекладі з англ. – тайник) лишається прозорим для програміста, тому що система інструкцій процесора, як правило, не містить команд роботи з кешем. При поясненні роботи кеша можна прийняти, що процесор також не “бачить” кеш і генерує адреси пам’яті так, ніби кеша немає. Проте кеш, як правило, існує, і на апаратному рівні перехоплює сигнали процесора читання/запис, а коли треба, то надає процесору швидкі копіїі інформаційних кодів, які тимчасово зберігає у власній робочій пам’яті. Якщо кеш спроможний підмінити собою пам’ять (у понад 96-98 відсотків випадків), тоді він за рахунок власних ресурсів задовільняє запит процесора. Процесор не пригальмовується і залишається працювати на повній швидкості. Коли “підміна” пам’яті неможлива (менше від двох-чотирьох відсотків випадків), тоді кеш залучає до роботи пам’ять, обмін з якою суттєво пригальмовує процесор. Усі задачі, пов’язані із перехопленням запитів від процесора на роботу із пам’яттю, вирішує частина апаратури кешу під назвою контролер кешу. Друга частина апаратури кешу містить невелику робочу пам’ять, де зберігають вмістиме копій комірок головної пам’яті, що приймали участь в обслуговуванні останніх, тобто найбільш “свіжих” запитів процесора. Важливо, що вмістиме комірок головної пам’яті копіюється до пам’яті кешу разом із своїми адресами. Саме ці копійовані адреси і дозволяють контролеру кешу приймати рішення про спроможність буферної пам’яті задовільнити конкретний процесорний запит без залучення до обміну повільної головної пам’яті. 2.8.2. Характеристики і робота кеша Кеш характеризують: функцією проекції блоків пам’яті на блоки кеша (в нас – пряма проекція); алгоритмом заміни блоків кеша на блоки пам’яті (в нас – найпростіший, примусовий алгоритм); алгоритмом виконання запису слова, як результату виконання дій в процесорі, до складної системи кеш-пам’ять (в нас застосовано спрощений алгоритм наскрізного запису). Розглянемо роботу спрощеного варіанту кешу відомого під назвою “кеш із прямою проекцією та наскрізним записом” (рис.5). У поясненні фігурує термін блок з трьома можливими тлумаченнями: блок як інформаційна одиниця; він складається з сусідніх за адресним принципом розташуванням слів без посилання на тип пам’яті; блок як множина комірок пам’яті даних або пам’яті інструкцій; блок як множина комірок робочої (внутрішньої) пам’яті кеша. Розрізнення тлумачень не є важким, воно забезпечено контекстом пояснення. Кожний блок пам’яті, що складають у середньому з (16 – 64) сусідніх з точки зору адресування слів, можна копіювати не до будь-якого, а тільки до наперед визначеного блоку робочої пам’яті кеша. В нас номер блоку кеша, що приймає участь у копіюванні, однозначно визначено за допомогою семи розрядів адреси процесора, які містить поле Block (рис.5). Негайно зауважимо, що процесор “не розуміє” і не “сприймає” структурної інтерпретації адреси, що згенерував. Таку інтерпретацію адресі надає лише і тільки лише контролер кеша, коли “незаконно, без відома процесора” перехоплює цю адресу, що призначена пам’яті даних або пам’яті інструкцій. Нехай адреса, яку генерує процесор при читанні вмістимого однієї комірки пам’яті (тобто, слова) до власного регістра, має довжину 16 бітів. В цьому випадку, контролер кеша за допомогою семи середніх розрядів адресного слова звертається до визначеного цими розрядами блоку власної пам’яті. Зрозуміло, що бінарний номер кеша є збіжним з бінарним наповненням поля Block адреси процесора. Шуканий в такий спосіб блок завжди присутній в робочій пам’яті кеша. При цьому кеш мусять скласти з EMBED Unknown блоків. Але вмістиме винайденого блоку робочої пам’яті кеша може бути копією не одного, а одного з декількох дозволених на копіювання блоків пам’яті. Наприклад, в нас до нульового блоку кеша дозволено копіювати наступні блоки пам’яті: 0, 128, 256, 512 і т.д. Усього до кожного блоку кеша можна скопіювати один з EMBED Unknown блоків пам’яті. Ясно, що інформаційна місткість пам’яті в 32 рази перевищує місткість кеша. Таке співвідношення місткостей є коректним гідно до означення парадоксу пам’яті. Доходимо висновку, що нас задовільнить лише однин з 32-х можливих варіантів копіювання. Питання лише в тому, чи є поточне наповнення визначеного блоку кеша відповідним запитанню процесора? Питання розв’язують за допомогою вмістимогостарших п’яти бітів адреси процесора, які утворюють поле із назвою Tag. EMBED PBrush Рис. 5. Внутрішня структура кеша з прямою проекцією; в кеші внутрішню структуру кожного блоку як сукупності множини слів відбито, а пам’яті – приховано Якщо при вже визначеному номері блоку вмістиме блоку кеша є відповідним, тоді вмістиме полів tag з поля адреси процесора і з мітки блоку робочої пам’яті кеша співпадають, тоді у блок кеша в поточний момент містить потрібну копію. В цьому випадку фіксують ситуацію “влучення до кеша” (cache hit). Лишається за допомогою бітів правого поля формату адреси Word визначити шукане слово в межах винайденої в кеші копії блоку, яку щойно знайдено і перевірено на адекватність, та переслати це слово до входу процесора. Бачимо, що адресне запитання процесора на читання вмістимого комірки перехопив та задовільнив швидкий кеш, а повільна пам’ять не працювала. Інша ситуація з назвою промах (cache miss) виникає при розбіжності вище зазначених двох тегів. Контролер кеша вимушений перетранслювати адресне запитання від процесора до повільної пам’яті та перейти (разом із процесором) до стану очікування результатів роботи пам’яті на читання. Аби зменшити кількість звернень до пам’яті навіть у цій ситуації, читають не одне, вказане адресою процесора слово, а цілий інформаційний блок (з 16 - 64 сусідніх слов), який, безперечно, мусить містити шукане процесором слово пам’яті. Тут спрацьовує принцип локалізації адресних звертань процесора – “ наступне слово, що знадобиться процесору, скорше від усього, буде мати і наступну адресу”. Блок надсилають до кеша, де його копіюють до блоку робочої пам’яті із вже відомим номером, і, водночас, потрібне слово з цього блоку, подають до інформаційного входу процесора. Зрозуміло, що при копіюванні інформаційного блоку з пам’яті до блоку робочої пам’яті кеша перевизначають вмістиме відповідного тегового поля. Під час запису (пересилання слова з регістру процесора до комірки пам’яті) робота контролера кеша виконується так. Спочатку визначають присутність або відсутність копії блоку, який містить старе значення, відповідного до наданої процесором адреси. У разі влучення до кеша запис виконують як до блоку кеша, так і до блоку пам’яті, інакше тільки до блоку пам’яті Але в обидвох випадках запис виконують повільно через обов’язкову участь у ньому повільної пам’яті даних. Зазначимо, що пояснений алгоритм запису реалізує так званий кеш із наскрізним записом. 2.9. Структура пам’яті Розробка структури системи пам’яті в даному проектування, є тривіальною задачею. Тому наведемо спрощену структуру пам’яті(рис.6) EMBED PBrush Рис. 6. Структура пам’яті Пам’ять містить регістр адреси (MAR) і буферний регістр тимчасового збереження даних (MDR). Беспосереднє виконання функції запам’ятовування покладено на матрицю Memory Matrix. До пам’яті надходять два сигнали, що визначають мікродії читання (Memory Read) та запису (Memory Write). Потік (Stream) даних є двох направленим, а потік адрес – однонаправленим. Фізичну сутність і фізичні процеси пам’яті не розглядаємо. Реально сучасні варіанти пам’яті мають надскладні функції і структуру. 2.10. Пристрій керування 2.10.1. Принцип декомпозиції цифрового пристрою академіка В.М.Глушкова Як пок...
Антиботан аватар за замовчуванням

01.01.1970 03:01-

Коментарі

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

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

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

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

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

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

Admin

26.02.2023 12:38

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