🚀 Вийди на новий рівень крипто-торгівлі!
Easy Trade Bot — автоматизуй свій прибуток уже зараз!

Ми пропонуємо перелік перевірених прибуткових стратегій на такі пари як BTC, DOT, TRX, AAVE, ETH, LINK та інші. Ви можете підключити автоматичну торгівлю на своєму акаунті Binance або отримувати торгові рекомендації на email у режимі реального часу. Також можемо створити бота для обраної вами монети.

Всі результати торгів ботів доступні для перегляду у зручних таблицях на головній сторінці. Швидко, динамічно та прозоро!

Перейти до бота + 30$ бонус

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

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

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

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

Рік:
1998
Тип роботи:
Курсова робота
Предмет:
Архітектура обчислювальних машин і систем

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

МІНОСВІТИ УКРАЇНИ ДЕРЖАВНИЙ УНІВЕРСИТЕТ "ЛЬВІВСЬКА ПОЛІТЕХНІКА" Комп'ютерний факультет КАФЕДРА ЕЛЕКТРОННИХ ОБЧИСЛЮВАЛЬНИХ МАШИН КУРСОВА РОБОТА НА ТЕМУ ПРОЕКТУВАННЯ ПРОТОТИПУ СКАЛЯРНОГО RISC-КОМП'ЮТЕРА Курс – “Архітектура обчислювальних машин і систем” Методичні вказівки і завдання на проектування Версія 2.2 від 25 вересня 1998 року Львів - 1998 ЗМІСТ toc \o "1-3" 1. ВСТУП pageref _Toc456356039 \h 2 2. ІНФОРМАЦІЙНИЙ ТРАКТ pageref _Toc456356040 \h 3 2.1. Структура прототипу скалярного RISC-комп'ютера pageref _Toc456356041 \h 3 2.2. Формати інструкцій DLX машини pageref _Toc456356042 \h 8 2.3. Цикл вибирання інструкції (Instruction Fetch cycle - IF) pageref _Toc456356043 \h 9 2.4. Цикл декодування інструкції/вибирання операндів з регістрового файла pageref _Toc456356044 \h 10 (Instruction decode/register fetch cycle - ID) pageref _Toc456356045 \h 10 2.5. Цикл виконання / визначення ефективної адреси pageref _Toc456356046 \h 10 (Execution / effective address cycle - EХ) pageref _Toc456356047 \h 10 2.6. Цикл звернення до пам'яті / завершення умовного переходу pageref _Toc456356048 \h 12 (memory access/branch completion cycle - MEM) pageref _Toc456356049 \h 12 2.7. Цикл зворотнього запису (write-back cycle - WB) pageref _Toc456356050 \h 12 2.8. Система машинних інструкцій pageref _Toc456356051 \h 13 Conditional branches and jumps; PC-relative or through register pageref _Toc456356052 \h 15 3. КЕШ pageref _Toc456356053 \h 17 3.1. Загальні положення pageref _Toc456356054 \h 17 3.2. Характеристики і робота кеша pageref _Toc456356055 \h 18 4. ПАМ’ЯТЬ pageref _Toc456356056 \h 20 5. КЕРУВАННЯ pageref _Toc456356057 \h 21 6. ГЕНЕРАЛЬНА СТРУКТУРА pageref _Toc456356058 \h 23 7. ВИХІДНІ ДАНІ НА ПРОЕКТУВАННЯ pageref _Toc456356059 \h 24 8. ВИМОГИ ЩОДО ОФОРМЛЕННЯ ПОЯСНЮВАЛЬНОЇ ЗАПИСКИ ТА КРЕСЛЕННЯ pageref _Toc456356060 \h 25 9. ЛІТЕРАТУРА pageref _Toc456356061 \h 25  1. ВСТУП Мета курсового проектування полягає в опануванні студентом знань про принципи дії та архітектуру прототипних варіантів сучасних RISC-комп'ютерів (Reduced Instruction Set Computing), систем, розташованих на межі старих CISC (Complex Instruction Set Computing) та нових архітектур. Сутність RISC підходу полягає у перерозподілі складності в парі апаратура – системні програми в спосіб спрощення системи інструкцій процесора, збільшення тактової частоти, уведення конвейєрного принципу виконання інструкцій послідовного програмного потоку з одночасним підвищення складності компілятора,. За рахунок перерозподілу та перекладання додаткової частки часових витрат на етап підготування програми (compile time) скорочують часові витрати на виконання машинного коду (run-time). Цього досягають навіть за умови збільшення кількості спрощених машинних інструкцій в програмі. Проте RISC напрямок вдосконалення комп’ютерних засобів не є безперечним. Зараз він спровокував досить суперечливий напрямок безмежного нарощування складності і апаратури, і системних програм новітніх конвейєрних суперскалярних RISC машин. Наприклад, остання розробка процесора Merced фірми INTEL (ІНТтегрована ЕЛектроніка) свідчить про відмову цієї фірми та її компаньона фірми Hewlett-Packard (промовляти як Х'юлетт-Паккард) від RISC-підходу на користь "не-ріскової" тригер-транспортної архітектури з прямим паралельним, а не лише конвейєрним опрацюванням інструкцій. Але тригер-транспортна архітектура поки що лишається поза межами курсового проектування. Розглянемо ілюстративний приклад програмування RISC машини, а саме, запрограмуємо С-оператор А = B + С. Фрагмент асемблерної програми має вид: LW R1, B LW R2, C ADD R3, R1, R2 SW A, R3 У фрагменті через A, B, C позначено адреси комірок пам/яті даних, де зберігають відповідно збіжні за назвою операнди і результат. LW є інструкцією завантаження операнду з комірки пам’яті до регістра, інструкція SW виконує зворотню дію, ADD є інструкцією додавання. Бачимо, що дії з завантаження операндів до регістрів з комірок пам’яті та збереження результату у комірці пам’яті відокремлено від виконання власне операції додавання. Функції інструкцій різних типів зараз мають наближено однакову складність, що є необхідною передумовою виконання послідовного потоку таких інструкцій на конвеєрі з метою суттєвого прискорення опрацювання програмного коду. Як правило, у RISC-машинах довжини форматів усіх інструкцій є сталими, а кількість адресувальних режимів – мінімальна. Інтуітивно зрозуміло, що обмеження складності є запорукою прискореного опрацювання спрощених інструкцій в процесорі. В основу курсового проектування покладено результати роботи [1]. 2. ІНФОРМАЦІЙНИЙ ТРАКТ 2.1. Структура прототипу скалярного RISC-комп'ютера Перший крок розробки прототипного (неконвейєрного) варіанту скалярного RISC-комп'ютера - це синтез структурної схеми машини.Синтез грунтується на часовій діаграмі виконання репрезентативної інструкції процесора, тобто такої інструкції, що має найбільшу часову складність виконання. В нашому випадку такою інструкцією є інструкція завантаження словного операнду з пам'яті даних до будь-якого регістру з регістрового файла чи різновид цієї інструкції, наприклад, LW R7, 14(R5). Часовий опис виконання відповідних зазначеній інструкції завантаження 32-х бітового слова з комірки пам'яті за адресою ADDRESS=(R5)+14 до регістру R7 надають наступною впорядкованою послідовністю виконання мікродій (тобто, мікропрограмою): вибирання інструкції з пам'яті інструкцій за адресою, яку містить лічильник команд PC Program Counter); вибирання вмістимого комірки R5 з регістрового файла; обрахування значення ефективної адреси (значення змінної ADDRESS); вибирання з пам'яті даних за визначеною ефективною адресою операнда та тимчасовий запис його до програмно недосяжного регістру даних пам'яті LMD Load Memory Data); наступне пересилання вмістимого регістру даних пам'яті LMD до комірки R7 регістрового файла. Якщо кожний окремий мікрокрок у щойно наведеній мікропрограмі назвати циклом мікропрограми, тоді часова діаграма виконання інструкції завантаження операнда складатиметься з припасованої у часі послідовності п'яти циклів (часова складність є п'ять). З аналізу наведеної у таблиці 2 системи інструкцій комп'ютера можна дійти висновку, що теза про найбільшу складність інструкції типу LW є коректною. Зауважимо наступне. По-перше, проектування машини сучасної архітектури щільно пов'язано з її часовою поведінкої. По-друге, з точки зору програміста чи інтелектуального транслятора з мови високого рівня, існує множина регістрів. В нас це програмно досяжні регістри R0,...,R31. Проте комп'ютерний інженер ці регістри не проектує через те, що реально застосовує множину комірок із збіжними до назв регістрів адресами {R0,...,R31} внутрішньої пам'яті. Ця пам’ять має назву регістровий файл. Концепція регістрового файла (з нашої, не програмістської точки зору) є технологічною. Вона дозволяє збільшити кількість логічних регістрів загального призначення Rх (до 256 у процесорах фірми SUN). Водночас, комірки регістрового файла не поступаються у швидкодії "справжнім" регістрам, адже такий файл розташовано на кристалі процесора. Графічне уявлення часових витрат та їхнє впорядкування при виконанні інструкції LW містить рис.1.  EMBED PBrush  Рис.1. Часова діаграма виконання п’ятициклової інструкції “завантаження” LW На рис. 1 застосовано наступні скорочені назви циклів: IF : вибирання поточної інструкції з пам'яті інструкцій (instruction memory чи IM); назва циклу - Instruction Fetch; ID : декодування інструкції (Instruction Decoding) та вибірання операндів; EX : виконання дій, притаманих інструкції, що виконується (EXecution); MEM: читання або запис операндів/результатів (access) з/до пам'яті даних (data memory); наявність відокремлених пристроїв instruction memory та data memory притамане гарвардській архітектурі Harvard Architecture; WB: зворотній запис (Write Back) результатів АЛП-операцій або отриманих з пам'яті кодів операндів до комірок регістрового файла. АЛП - це скорочення назви "арифметичний і логічний пристрій". Застосовані назви циклів (інколи кажуть - фаз) дещо узагальнюють притаману лише інструкції LW семантику кожної окремої фази. Це коректно, бо нашою метою є наближення до такої циклової послідовності, яка задовільняє вимогам будь-якої інструкції з заданої до реалізації множини з метою досягнення найбільшої швидкодії. Водночас, ми орієнтуємося на найскладнішу інструкцію. Зауважимо також, що в нашому випадку фізично кожний цикл у часі відповідає одному тактовому інтервалу, а кількість тактових інтервалів, що має витрачатися на виконання будь-якої інструкції процесора, передбачають сталою (класично – це п'ять інтервалів). Можливо, що при зазначеному підході деякі інструкції матимуть порожні (не потрібні ним, зайві) цикли. Якщо внутрішня тактова частота процесора дорівнюватиме 500 МГц, тоді на кожний такт чи однотактовий цикл припаде 2 нс, а час виконання кожної інструкції складатиме 2*5=10 нс. За цієї умови у прототипному варіанті досягають швидкодії 100 мільйонів інструкцій на секунду (100 MIPS) На рис. 2 наведено варіант (by J. Hennessy and D. Patterson, Stanford University та Berkeley University, USA) побудови інформаційного тракту прототипу скалярного RISC комп'ютера. Останній відомий у світі під назвою DLX (DeLuXe) процесор (машина). Назва інформаційний тракт (Datapath) виникла через інтегральне подання та розгляд регістрової структури процесора разом із пристроями пам'яті даних DM і пам'яті інструкцій (команд) IM. Зрозуміло, що тут реалізовано Гарвардську (Harvard University in the USA) архітектуру.  EMBED PBrush  Рис. 2. Структура інформаційного тракту прототипу скалярного RISC комп'ютера Скороченням PC позначено лічильник інструкцій (Program Counter). Вмістиме РС визначає адресу інструкції в пам'яті інструкцій ІМ. Комбінаційний додавач Adder обраховує адресу (наступної за чергою виконання) інструкції. При цьому враховано, що впорядкована послідовність інструкцій, або програма, складається з чотирьохбайтових і тільки чотирьохбайтових інструкцій (усі інструкції мають формати з довжиною 32 біти), які розміщено в IM за послідовними адресами 0, 4, 8, C і т.д. Через це константа зсуву адреси (пересування покажчика на наступну за чергою інструкцію) дорівнює +4. Визначене за допомогою додавача значення адреси вибирання наступної інструкції зберігають у регістрі NPC (next PC). Зчитаний з ІМ бінарний код поточної інструкції записують до регістру інструкції IR. Поля щойно вибраної інструкції (рис. 6), що містять бінарні коди-ідентифікатори регістрів-операндів, є фактично адресами комірок внутрішньо процесорної пам'яті, яка емулює пул (множину) програмно досяжних (видимих програмісту) регістрів. Вмістиме зазначених полів формату інструкції надсилають на адресні входи регістрового файлу Registers чи Regs, а відповідні надісланим адресам бінарні коди регістрових операндів завантажуються до внутрішних, програмно недосяжних, тобто службових регістрів А і В. Існує ще один тип операнда з назвою “безпосередній” (Immediate чи Imm). Його задають прямо у форматі інструкції. Як правило, довжина безпосереднього операнда не перевищує половини довжини формату інструкції. В нас безпосередній операнд матимеме довжину 32/2 = 16 бітів. В той самий час бажано зафіксувати таку довжину формату даних такою, що дорівнює довжині формату інструкції ( зауважимо без пояснень, що різноманіть довжин форматів суттєво пригальмовує машину). Якщо усі формати даних, як і формати інструкцій, матимуть довжину 32 біти, тоді безпосередньому операнду невистачатиме ще 16 бітів аби бути стандартним за довжиною. Тому знакове розширення 16 бітового безпоседнього операнда до 32-х бітів виконує комбінаційний вузол Sign Extend. Результат знакового розширення тимчасово зберігають у службовому регістрі Immediate (Imm). В цілому можна нарахувати чотири можливі операнди на вході АЛП: з регістрів А, В, Imm; вмістиме регістру адреси наступної для виконання інструкції NPC. Наперед зазначимо, що останній операнд-адресу опрацьовують в АЛП при виконанні інструкцій умовного та безумовного переходів, коли на додаток до натуральної потрібна ще одна адреса, що утворена додаванням до вмістимого NPC деякої константи переходу. Вибирання двох операндів АЛП з чотирьох можливих виконують за допомогою мультиплексорів операндів MUX, розташованих на його входах. Результат операції АЛП тимчасово запам'ятовують у проміжному службовому регістрі ALUoutput (ALUout). Якщо результатом операції є число, тоді його заносять до комірки регістрового файла. Якщо результатом операції є адреса, тоді цю адресу надсилають до (верхнього на рисунку) мультиплексора вибору адреси MUX. За допомогою зазначеного мультиплексора вибирають адресу переходу (чергова чи перехід), яку і надсилають до лічильника інструкцій PC аби коректно продовжити виконання програми. Керування мультиплексором вибору адреси наступної інструкції покладено на вузол Zero?, де вмістиме службового регістра А порівнюють із нулем (дорівнює нулю, більше нуля, менше нуля і т.д., в залежності від виду виконуваної в поточний час операції умовного переходу). Результат порівняння є бінарним логічним значенням (так або ні). Саме цей бінарний результат керує роботою мультиплексора вибирання адреси. Результат-адресу з виходу АЛП можуть надсилати до пам’яті даних як адресу комірки цієї пам’яті в інструкціях збереження/завантаження. Результатом на виході правого на рисунку 2 мультиплексора може бути або вмістиме пам’яті даних (при виконанні інструкції завантаження LW слова з пам’яті даних до регістру регістрового файла), або результат виконання арифметичної, зсувної, логічної чи іншої операції в АЛП (наприклад, при виконанні інструкцій ADD, SUB і т.д.). Такий результат засобами мікропрогрування зберігають в регістрі регістрового файла. Отже, зазначений мультиплексор, керований від регістру поточної інструкції, комутує на вхід регістрового файла потрібну інформацію. При конвейєрному опрацюванні послідовного потоку інструкцій виконуваної програми не враховують 5-ти циклову затримку виконання першої інструкції та вважатють потік інструкцій достатньо довгим. В цьому випадку (див. рис. 3) еквівалентні часові витрати на виконання однієї інструкції складатимуть лише один цикл чи тактовий інтервал, а пікова (гранична зверху) швидкодія, яку забезпечує ідеалізований варіант конвейера, зросте в порівнянні з скалярнім неконвейєрним прототипом до 500 млн. інструкцій за секунду при тактовій частоті 500 МГц Зауважимо, що теоретично обгрунтоване прискорення конвейєра (до значення 5:1 в нашому випадку) є найвищім, тобто піковим. Його досягають лише за ідеальної умови, коли нема жодних залежностей (зв’язків) поміж сусідніми інструкціями послідовного потоку, що вже завантажені на виконання до конвейєра, та коли в цьому потоці відсутні інструкції переходів. Реально до часової діаграми роботи конвейєра мусять уводять затримки (порожні фази), аби результати неконвейєрного і конвейєрного опрацювання потоку інструкцій збігалися. В наслідок цього реальна продуктивність конвейєра зменшена в порівнянні з піковою, а його апаратна реалізація ускладнена.  EMBED PBrush  Рис. 3. Принцип конвейєрного опрацювання послідовного потоку інструкцій На рис. 3 зазначено порядок опрацювання трьох сусідніх інструкцій з послідовного програмного потоку. Часові витрати на кожну інструкцію висвітлено окремими горизонтальними смугами, які, у свою чергу, явно поділено на п’ять фаз чи циклів.  EMBED PBrush  Рис. 3а. Ілюстрація переходу від неконвейєрного до конвейєрного опрацювання послідовного потоку інструкцій (ідеальний погляд на конвейєр) Припустимо, що часові витрати при опрацюванні окремих етапів (циклів) виконання інструкції знаходяться в межах 50-60 нс. Тоді часові витрати на реалізацію конвейєрного способу опрацювання визначаються так, як це зазначено на рис. 3а. Надлишок в 5 нс (наближено 10 %) у кожному циклі конвейєра в порівнянні з неконвейєрною реалізацією додано через дещо сповільнену роботу ускладненої конвейєрним принципом апаратури. Це накладна платня за прискорення. Зрозуміло, що від планованого 100 відсоткового результату лишається лише100 – 10 = 90 відсотків. Конвейєрне використання (завантаження в часі) апаратних засобів ілюструє рис. 4.  EMBED PBrush  Рис. 4. Використання апаратури при конвейєрному опрацюванні (ідеальний пипадок) Конвейєрний варіант побудови інформаційного тракту наведено на рис. 5. Конвейєрні регістри – це звичайні, але програмно “прозорі”, тобто невидимі регістри. Вони містять повне інформаційне “оточення“ інструкції, що вже є на конвейєрі, аби створити їй віртуальне враження про класично-ізольоване від інших сусідніх інструкцій опрацювання.  EMBED PBrush  Рис. 5. Конвейєрний (основний) варіант побудови інформаційного тракту DLX машини. На рис. 5 затемнено так звані “конвейєрні” регістри, які розташовано “на межі циклів”. Вони мають назви, відповідні сусіднім межам, наприклад, IF/ID, ID/EX, EX/MEM, MEM/WB. Кожну поточну інструкцію, що опрацьовують, ніби пересувють сходинками IF, ID, EX, MEM, WB конвейєра. В ідеалі кожна з інструкцій не “відчуває” присутності на інших сходинках конвейєра “сусідів-конкурентів”на використання апаратури інформаційного тракту. Нагадаємо ще раз, що в проекті вимагається розробити спрощений неконвейерний прототип скалярного RISC процесора. Інформацію про конвейєризацію надано з метою досягнення поглибленого розуміння та для оформлення роботи на відмінну оцінку. 2.2. Формати інструкцій DLX машини Формати інструкцій DLX машини наведено на рис. 6. В супровід надано стислий коментар щодо цих форматів.  EMBED PBrush  Рис. 6. Формати інструкцій DLX машини На рисунку 6 застосовано наступні скорочені позначення: 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, RZ та регістр 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- процесорах. Можна казати, що на рівні прозорої, як правило, для програміста кеш-пам'яті, яку поділено на окремі кеші інструкцій та даних відбувається метаморфоза, або пеpeтворення Princeton Computers Arcitecture (чи John von Neumann Arcitecture) на modified Harvard Computers Arcitecture. Проте це перетворення відчуває лише інженер; програміст (чи компілятор) відчуває нойманівську архітектуру. Зауважимо, що у гарвардській архітектурі немає місця такій звичній і необхідній програмісту парадигмі програмування як "дані – компілятор – лінкер – програма". 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 - EХ) Мікродії, що виконують в циклі EX, вже залежать від від типу поточної інструкції. Враховуючи це, бажано поділити усі інструкції процесора на наступні три групи або типи: операції арифметико-логічного пристрою; операції завантаження операндів з головної пам'яті та збереження результатів у головній пам'яті; операції умовних та безумовних переходів. Далі розглядаємо притамані кожному типу інструкцій мікродії. 2.5.1. Операції із зверненням до пам'яті даних (load / store instructions) У циклі EX вказані операції готують значення ефективної адреси, тобто вираховують значення бінарного коду, що безпосередньо визначає адресу комірки пам'яті даних. Виконують наступну мікродію: ALUoutput = A + Imm. Позначене в мікродії додавання безпосереднього операнда (однієї з компонент адреси) з вмістимим робочого регістра А (друго. компоненти) реалізують в АЛП (ALU). Отриману суму (вона завжди ціла і додатня, переносом нехтують) записують до ще одного, прозорого для програміста регістру ALUoutput. Цей регістр має розрядність 32 біти. Він зберігає коди результатів, що з'являються на виході комбінаційної схеми з назвою ALU. Якщо пригадати дію інструкції LW, тоді призначення та форма запису наведеної мікродії стає прозорою. 2.5.2. ALU-інструкція типу регістр-регістр (наприклад, ADD R1,R2,R3) Виконується відповідна до інструкції наступна мікродія: ALUoutput = A op B. Тут узагальнене позначення (op) можна конкретизувати як (add), (sub), і т.д. в залежності від конкретного виду поточної інструкції, яку опрацьовують в інформаційному тракті машини. Підкреслимо, що на попередньому щодо EX циклі, а саме на циклі ID, до службових регістрів вже завантажено вмістиме вибраних комірок пам'яті "регістровий файл" з адресами R2 і R3. Результат дії поки що не збережено в R1, але його тимчасово записано до службового регістру ALUoutput. 2.5.3 ALU - інструкція типу регістр - безпосередній операнд (наприклад, ADD R1,R2,#23) Виконується наступна мікродія: ALUoutput = A op Imm. Ясно, що замість вмістимого R3 в операції приймає участь безпосередній операнд, який з врахуванням "знакового" розширення до 32-х бітів забирають із службового регістру Imm. 2.5.4. Умовний перехід чи branch (наприклад, BNEZ R5, data) Виконуються наступні мікродії: ALUoutput = NPC + Imm; Cond (ition) = (A op 0). Обидві мікродії є сумісними в часі. За допомогою першої мікродії вираховують цільову адресу умовного переходу. При цьому до вже визначеної адреси наступної інструкції (NPC), тобто такої, яка розташована безпосередньо за інструкцією умовного переходу, додають знакову константу зі службового регістру Imm, (саме він містить значення data). Друга мікродія визначає (істинне чи хибне) значення умови Condition умовного переходу. Заради цього вмістиме службового регістру A, що є збіжним із вмістимим R5 (у прикладі інструкції), порівнюють на основі операції (op) з нулем. Згідно семантики інструкції BNEZ отримуємо, що Cond=true, коли вмістиме R5 ненульове, або Cond=false, якщо R5 містить нуль. Фізично Cond являє собою однобітовий регістр у скдаді вузла Zero ?. Звернемо увагу на те, що зараз зформовано лише значення двох необхідних елементів виконання branch, а саме, - однобітовий код умови Cond та цільову адресу переходу, яку тимчасово зберігають у службовому вихідному регістрі АЛП, тобто в ALUoutput. Безпосереднє виконання умовного переходу, що полягає в природній (за чергою) чи неприродній (коли виконують стрибок до цільової адреси) зміні вмістимого PC, виконують наступним циклом. 2.6. Цикл звернення до пам'яті / завершення умовного переходу (memory access/branch completion cycle - MEM) 2.6.1. Звернення до пам'яті Виконують наступні мікродії: 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). 2.6.2. Умовний перехід (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). Увага! Цей цикл змінює програмний стан комп’ютера, після його виконання поновлення попереднього стану унеможливлено! 2.7.1. ALU-операція регістр – регістр Виконують наступну мікродію: Regs[IR16..20] = ALUoutput. Мікродія зберігає результат ALU-операції в регістрі призначення (наприклад, в регістрі R1 на прикладі інструкції ADD). Зрозуміло, що біти 16..20 відповідного формату інструкції містять бінарний номер регістру призначення. 2.7.2. ALU-операція регістр - безпосередній операнд Виконують наступну мікродію: Regs[IR11..15 ] = ALUoutput. Ця мікродія також зберігає результат операції, наприклад, SUB R5, R4, #1002, в комірці R5 регістрового файла. 2.7.3. Інструкція завантаження (наприклад, LW R6, 112(R3 )) Виконують наступну мікродію: Regs[IR 11..15 ] = LMD. Наведена мікроінструкція надсилає до комірки R6 регістрового файла вмістиме комірки пам'яті даних за адресою 112+(R3), яке на попередніх циклах вже було вибране з пам'яті і тимчасово утримувалося в службовому регістрі LMD. На цьому опис мікродій керування роботою DLX машини завершено. Подальший крок полягає у розробці об’єднаного алгоритму функціювання комп'ютера в цілому. Алгоритм треба складати на основі вище розглянутих мікродій. Результат наведено у таблиці 1. Зрозуміло, що інструкція Load вимагає виконання повного ланцюжку зміни циклів, а саме - IF, ID, EX, MEM, WB. Але для branch-інструкцій порожнім виявився цикл WB. Проте уведення деякої надлишковості до циклової діаграми сприяє уніфікації і створює грунт для конвертування нашого прототипу до стандартного конвейєрного RISC-комп'ютера. Таблиця 1. Варіант мікропрограми роботи неконвейєрного прототипу DLX машини У таблиці 1 не відбито, в який спосіб виконують розгалуження на три гілки у циклі ЕХ (в залежності від типу виконуваної інструкції). До речі, слово "or", якщо воно присутнє у клітинці, треба сприймати як "або", а не як "чи". Не відзначено також, що вказані у циклі WB мікродії потрібні лише за умови опрацювання інструкції Load, а не інструкції Store. Наведену мікропрограму треба реалізовати пристроєм керування, який не обговорювався. Проте можна додатково зазначити, що, коректна генерація послідовності мікрокодів досить легко підтримується кодом поточної інструкції, який, починаючи від фази ID, містить регістр IR. 2.8. Система машинних інструкцій Повний перелік множини інструкцій надано таблицею 2. Зауважимо, що нестандартно використовують регістр R31 регістрового файла як такий, що містить адресу повернення у разі виконання деяких типів безумовних переходів. Регістр R0 регістрового файла завжди містить нульові біти (або просто, нуль) і нульове вмістиме не змінює навіть запис до R0. Це дозволяє реалізувати абсолютний режим адресування, коли address = offset + [R0] = offset + 0 = offset. де offset є зсувом. Таблиця 2. Множина інструкцій DLX машини Реалізовано наступні типи інструкцій (це можна зауважити аналізом вмістимого таблиці 2). Пересилання даних поміж регістрами та пам'яттю даних, або поміж регістрами цілих операндів і регістрів операндів з рухомою комою та спеціальними регістрами; адресування пам'яті виконують за допомогою лише однієї адресувальної моди (mode), де 16-бітовий зсув, що міститься у форматі інструкції, додають до вмістимого одного з регістрів загального призначення (тобто регістра, що містить цілий операнд - базову адресу). Ще раз пригорнемо увагу до того, що саме інструкції завантаження (load) чи збереження (store), які належать до цього типу, вивільняють від додаткової функції арифметичного, логічного чи будь-якого іншого опрацювання операндів. Це, по-перше, задовільняє необхідній умові створення множини інструкцій (машинних команд) RISC-архітектури, а по-друге, дозволяє визнати архітектуру, що зараз проектується, як Load/store architecture. Арифметико/логічні інструкції вивільнено від дій з обміну поміж програмно керованими регістрами процесора та комірками пам'яті даних. За допомогою цієї групи інструкцій виконують дії з додавання або віднімання операндів, логічну обробку та різноманітні зсуви операндів. Інструкції керування виконанням програми, до яких належать умовні і безумовні переходи і деякі інші інструкції, наприклад, TRAP (остання тимчасово, на короткий термін ніби "передовіряє" керування системою деякому модулю операційної системи), а також інструкція повернення з виключення (обробка особливої ситуації, що може виникнути при виконанні операції) RFE (Return From Exeption). Інструкції обробки чисел у форматі з рухомою комою, за допомогою яких виконується додавання, віднімання, множення, ділення і низка інших операцій над відповідними кодами, як правило, у двох варіантах, із стандартною та подвійною точністю. Пояснемо на ілюстративному прикладі синтаксис запису алгоритмів виконання окремих машинних інструкцій DLX (див. таблицю 3). Надано запис: Regs[R19] 16..31 = 16(DM[Regs[R8]]0 )8 ## DM[Regs[R8]]. Запис фіксує наступне. Оновлюють лише 16 молодших (правих) бітів регістру R19. До них пересилають двохбайтовий бінарний код, в якому молодший правий байт береться з пам’яті даних DM за адресою, що є збіжною з вмістимим регістру R8. Старший лівий байт утворюють вісімразовим повторюванням нульового (старшого) розряду щойно згаданого правого байта. Парою символів ## позначено операцію конкатенації (зчеплення) двох байтів до двохбайтового напівслова. Наведеного у таблиці 3 достатньо для синтезу відсутніх в ній алгоритмів. Таблиця 3. Приклади алгоритмів виконання інструкцій DLX 3. КЕШ 3.1. Загальні положення Відомий так званий парадокс пам’яті – пам’ять ядра комп’ютера (ядро комп’ютера = процесор + пам’ять) може бути або малою, проте швидкою і задовільняти вимоги процесора щодо швидкодії, або ж відносно великою і повільною. Немає пам’яті відносно великої і, водночас, швидкої. Ставити зараз питання про пам’ять, що власною місткістю задовільняє системного програміста (системні програми) є, безперечно, не реальною задачею. Місткості пам’яті завжди не вистачає і, можливо. не вистачатиме. Аби подалати зазначену невідповідність, вибудовують багаторівневу ієрархічну систему пам’яті комп’ютера, де на верхньому рівні ієрархії знаходяться програмно-керовані регістри процесора, на другому – кеш, потім комірки головної пам’яті в Принстонській архітектурі, або комірки пам’яті даних в Гарвардській архітектурі, потім системи зовнішньої пам’яті (диск, магнітні стрічки, архівна пам”ять з лазерною технологією і т.д.). За рівнями ієрархії, згори додолу, місткість пристроїв пам’яті зростає, а швидкодія зменшується. Керує інформаційними поміжрівневими обмінами операційна система. Коли багаторівневість і ієрархію пам’яті приховано від прикладного програміста, тоді кажуть про реалізацію віртуальної пам’яті, де, ніби, скасовано зазначений вище парадокс пам’яті. В цьому випадку прикдадному програмісту здається, що він використовує єдину відносно велику і швидку пам’ять. Надзвичайно важливим є той факт, що звенення процесора до пам’яті завжди локалізовано в невеликому діапазоні змін її адрес. Саме він і дозволяє застосовувати ієрархічну систему пам’яті, аби розв’язати невідповідність швидкодій процесора і підсистеми пам’яті з одним рівнем ієрархії.  EMBED PBrush  Рис. 7. Кеш в складі ядра комп’ютера (CPU – центральний процесор, Memory – пам’ять, Cache – кеш) Кеш – це швидка буферна пам’ять невеликої місткості, що розташована поміж процесором і основною пам’яттю. Кеш працює на повній швидкості процесора і не пригальмовує його роботу. Кеш (cache в перекладі з англ. – тайник) лишається прозорим для програміста, тому що система інструкцій процесора, як правило, не містить команд роботи з кешем. При поясненні роботи кеша можна прийняти, що процесор також не “бачить” кеш і генерує адреси пам’яті так, ніби кеша немає. Проте кеш, як правило, існує, і на апаратному рівні перехоплює сигнали процесора читання/запис, а коли треба, то надає процесору швидкі копіїі інформаційних кодів, які тимчасово зберігає у власній робочій пам’яті. Якщо кеш спроможний підмінити собою пам’ять (у понад 96-98 відсотків випадків), тоді він за рахунок власних ресурсів задовільняє запит процесора. Процесор не пригальмовується і залишається працювати на повній швидкості. Коли “підміна” пам’яті неможлива (менше від двох-чотирьох відсотків випадків), тоді кеш залучає до роботи пам’ять, обмін з якою суттєво пригальмовує процесор. Усі задачі, пов’язані із перехопленням запитів від процесора на роботу із пам’яттю, вирішує частина апаратури кешу під назвою контролер кешу. Друга частина апаратури кешу містить невелику робочу пам’ять, де зберігають вмістиме копій комірок головної пам’яті, що приймали участь в обслуговуванні останніх, тобто найбільш “свіжих” запитів процесора. Важливо, що вмістиме комірок головної пам’яті копіюється до пам’яті кешу разом із своїми адресами. Саме ці копійовані адреси і дозволяють контролеру кешу приймати рішення про спроможність буферної пам’яті задовільнити конкретний процесорний запит без залучення до обміну повільної головної пам’яті. 3.2. Характеристики і робота кеша Кеш характеризують: функцією проекції блоків пам’яті на блоки кеша (в нас – пряма проекція); алгоритмом заміни блоків кеша на блоки пам’яті (в нас – найпростіший, примусовий алгоритм); алгоритмом виконання запису слова, як результату виконання дій в процесорі, до складної системи кеш-пам’ять (в нас застосовано спрощений алгоритм наскрізного запису). Детальний розгляд системи кеша залишено поза межами цих методичних вказівок. У вказівках пояснено роботу лише одного, спрощеного варіанту, відомого під назвою “кеш із прямою проекцією та наскрізним записом” (рис.8). Пригорнемо увагу до того, що у поясненні фігурує термін блок з трьома можливими тлумаченнями: блок як інформаційна одиниця; він складається сусідніх за адресним принципом розташуванням слів без посилання на тип пам’яті; блок як множина комірок пам’яті даних або пам’яті інструкцій; блок як множина комірок робочої (внутрішньої) пам’яті кеша. Розрізнення тлумачень не є важким, воно забезпечено контекстом пояснення. Кожний блок пам’яті, що складають у середньому з (16 –64) сусідніх з точки зору адресування слів, можна копіювати не до будь-якого, а тільки до наперед визначеного блоку робочої пам’яті кеша. В нас номер блоку кеша, що приймає участь у копіюванні, однозначно визначено за допомогою семи розрядів адреси процесора, які містить поле Block (рис.8). Негайно зауважимо, що процесор “не розуміє” і не “сприймає” структурної інтерпретації адреси, що згенерував. Таку інтерпретацію адресі надає лише і тільки лише контролер кеша, коли “незаконно, без відома процесора” перехоплює цю адресу, що призначена пам’яті даних або пам’яті інструкцій. Нехай адреса, яку генерує процесор при читанні вмістимого однієї комірки пам’яті (тобто, слова) до власного регістра, має довжину 16 бітів. В цьому випадку, контролер кеша за допомогою семи середніх розрядів адресного слова звертається до визначеного цими розрядами блоку власної пам’яті. Зрозуміло, що бінарний номер кеша є збіжним з бінарним наповненням поля Block адреси процесора. Шуканий в такий спосіб блок завжди присутній в робочій пам’яті кеша. При цьому кеш мусять скласти з  EMBED Equation.3  блоків. Але вмістиме винайденого блоку робочої пам’яті кеша може бути копією не одного, а одного з декількох дозволених на копіювання блоків пам’яті. Наприклад, в нас до нульового блоку кеша дозволено копіювати наступні блоки пам’яті: 0, 128, 256, 512 і т.д. Усього до кожного блоку кеша можна скопіювати один з  EMBED Equation.3  блоків пам’яті. Ясно, що інформаційна місткість пам’яті в 32 рази перевищує місткість кеша. Таке співвідношення місткостей є коректним гідно до означення парадоксу пам’яті. Доходимо висновку, що нас задовільнить лише однин з 32-х можливих варіантів копіювання. Питання лише в тому, чи є поточне наповнення визначеного блоку кеша відповідним запитанню процесора? Питання розв’язують за допомогою вмістимогостарших п’яти бітів адреси процесора, які утворюють поле із назвою Tag.  EMBED PBrush  Рис. 8. Внутрішня структура кеша з прямою проекцією; в кеші внутрішню структуру кожного блоку як сукупності множини слів відбито, а пам’яті – приховано Якщо при вже визначеному номері блоку вмістиме блоку кеша є відповідним, тоді вмістиме полів tag з поля адреси процесора і з мітки блоку робочої пам’яті кеша співпадають, тоді у блок кеша в поточний момент містить потрібну копію. В цьому випадку фіксують ситуацію “влучення до кеша” (cache hit). Лишається за допомогою бітів правого поля формату адреси Word визначити шукане слово в межах винайденої в кеші копії блоку, яку щойно знайдено і перевірено на адекватність, та переслати це слово до входу процесора. Бачимо, що адресне запитання процесора на читання вмістимого комірки перехопив та задовільнив швидкий кеш, а повільна пам’ять не працювала. Інша ситуація з назвою промах (cache miss) виникає при розбіжності вище зазначених двох тегів. Контролер кеша вимушений перетранслювати адресне запитання від процесора до повільної пам’яті та перейти (разом із процесором) до стану очікування результатів роботи пам’яті на читання. Аби зменшити кількість звернень до пам’яті навіть у цій ситуації, читають не одне, вказане адресою процесора слово, а цілий інформаційний блок (з 16-64 сусідніх слов), який, безперечно, мусить містити шукане процесором слово пам’яті. Тут спрацьовує принцип локалізації адресних звертань процесора – “ наступне слово, що знадобиться процесору, скорше від усього, буде мати і наступну адресу”. Блок надсилають до кеша, де йогон копіюють до блоку робочої пам’яті із вже відомим номером, і, водночас, потрібне слово з цього блоку, подають до інформаційного входу процесора. Зрозуміло, що при копіюванні інформаційного блоку з пам’яті до блоку робочої пам’яті кеша перевизначають вмістиме відповідного тегового поля. Під час запису (пересилання слова з регістру процесора до комірки пам/яті) робота контролера кеша виконується так. Спочатку визначають присутність або відсутність копії блоку, який містить старе значення, відповідного до наданої процесором адреси. У разі влучення до кеша запис виконують як до блоку кеша, так і до блоку пам’яті, інакше тільки до блоку пам’яті Але в обидвох випадках запис виконують повільно через обов’язкову участь у ньому повільної пам’яті даних. Зазначимо, що пояснений алгоритм запису реалізує так званий кеш із наскрізним записом. Більш складні, але ефективні алгоритми запису, ми не розглядаємо і пропонуємо з цього питання звернутися до літературних джерел. 4. ПАМ’ЯТЬ Розробка структури системи пам’яті, з точки зору курсового проектування, є тривіальною задачею. Спрощену структуру пам’яті наведено на рис. 9.  EMBED PBrush  Рис. 9. Структура пам’яті Пам’ять містить регістр адреси (MAR) і буферний регістр тимчасового збереження даних (MDR). Беспосереднє виконання функції запам’ятовування покладено на матрицю Memory Matrix. До пам’яті надходять два сигнали, що визначають мікродії читання (Memory Read) та запису (Memory Write). Зрозуміло, що потік (Stream) даних є двох направленим, а потік адрес – однонаправленим. Фізичну сутність і фізичні процеси пам’яті не розглядаємо. Реально сучасні варіанти пам’яті мають надскладні функції і структуру. 5. КЕРУВАННЯ Керування побудуємо за математичною моделлю абстрактного автомата Мура (АА), як найпростішою. Мікропрограму роботи пристрою керування можна еквівалентно надати не таблицею, а наступною (рис. 10) граф-схемою алгоритму (ГСА). Зауважимо, що ми надали ілюстративний приклад ГСА, який не містить точної відповідності до табличного подання алгоритма (див. таблицю 1). Забезпечення відповідністі – обов’язок при виконанні студентом курсової роботи. На ГСА позначеннями EMBED Equation.3  закодовано мікродії, що генерує пристрій керування, а за допомогою EMBED Equation.3 –сигнали станів пристроїв інформаційного тракту. Мікродії надсилає пристрій керування до вузлів інформаційного тракту. Зворотній зв’язок (від інформаційного тракту до пристрою керування) здійснюють сигнали станів (див. рис. 13).  EMBED PBrush  Рис. 10. ГСА керуючого пристрою прототипу скалярного RISC процесора DLX Потрібно побудувати абстрактной автомат (АА) Мура, що є еквівалентом кодованої ГСА. АА Мура визначено п’ятіркою з трьох множин: множини внутрішних станів  EMBED Equation.3 ; множини вхідних сигналів  EMBED Equation.3 ; множини вихідних сигналів  EMBED Equation.3 , і двох функцій, а саме, - функції переходів  EMBED Equation.3 і функції виходів  EMBED Equation.3 . Скінчений АА має скінчені множини  EMBED Equation.3 . Ініціальний АА Мура має наперед визначений початковий внутрішний стан  EMBED Equation.3  . EMBED Equation.3 Функція переходів визначає наступний стан в залежності від поточного стану і вхідного сигналу. Функція виходів визначає вихідний сигнал (мікродію) в залежності від внутрішнього стану. Аби перейти від ГСА до АА Мура потрібно визначити усі елементи зазначеної п’ятірки. Множини  EMBED Equation.3 , що складається з 20 елементів (мікродій) та  EMBED Equation.3 , що складається з трьох елементів, вже визначено на етапі кодування ГСА. Множину  EMBED Equation.3  визначають за наступним правилом: стартову вершину позначають символом внутрішнього стану  EMBED Equation.3 ; кожну операторну верщину позначають окремим, незбіжним із вже застосованими, символом внутрішнього стану; результат надає рис. ; в нас множина  EMBED Equation.3  складена 16-ма внутрішними станами, від  EMBED Equation.3  до  EMBED Equation.3  (рис. 11). Лишилося визначити функції переходів і виходів. Ці функції визначаємо безпосередньо при побудові графа АА Мура (рис. 12 ).  EMBED PBrush  Рис. 11 . Закодована ГСА керуючого пристрою прототипу скалярного RISC процесора DLX з позначками станів інтерперетуючого її автомата Мура Рис. 12 містить не цілий граф автомата АА Мура, а лише його фрагмент. Добудова відсутньої частини уявляється тривіальною роботою, але мусить виконуватися.  EMBED Visio.Drawing.4  Рис. 12. Граф АА Мура, що визначає алгоритм роботи пристрою керування Зауважимо наступне. Сигнал Reset змушує автомат перейти до ініціюючого стану. АА Мура починає діяти лише за умови, коли сигнал Reset знято. Перехід з першої до другої вершини виконують безумовно, за тактовим імпульсом. Переходи до вершин а3, а4, а5, а6 виконують за повним набором умов і, зрозуміло, коли є тактовий імпульс. У вершині а0 формують порожній сигнал мікродії у0. У вершині а3 формують сигнали мікрооперацій у5 та у6. Позначені на графі направлені ребра фіксують (чи визначають) функцію переходів. Функцію виходів визначено позначками мікрооперацій біля вершин автомата. Таким чином, всі елементи п’ятірки, якою означено АА Мура, винайдено, тобто автомат побудовано. На цьому проектування керуючого пристрою завершено. Відомі САПР при уведенні графа АА формують конфігураційні файли ПЛІС. Цього достатньо (решту роботи виконує автоматика), аби отримати апаратне втілення пристрою керування. 6. ГЕНЕРАЛЬНА СТРУКТУРА Спрощений варіант генеральної структури прототипу скалярного RISC комп’ютера надано на рис. 13. Пристрій керування (Control Unit) надсилає керуючі сигнали (MicroCode) до інформаційного шляху (DataPath) та пам’яті (Memory). З інформаційного шляху сигнали станів (Signals of States), якими можуть бути біти регістра інструкції і інше, те, що потрібно, надходять до керуючого пристрою, аби реалізувати розгалудження мікропрограми. Розділені пам’яті даних DM і інструкцій IM Гарвардської архітектури, що вище розглядалися, заступили швидкі кеші, відповідно, D-Cache та I_Cache. В свою чергу, кеші зв’язано з єдиною пам’яттю Принстонської архітектури. Ясно, що обмін в підсистемі пам’ять/кеш даних є двобічним, а в підсистемі пам’ять/кеш інструкцій – однобічним.  EMBED PBrush  Рис. 13. Варіант генеральної структури прототипу скалярного RISC комп’ютера Можна бачити, що наведена структура ефективно поєднала риси Принстонської і Гарвардської архітектур. 7. ВИХІДНІ ДАНІ НА ПРОЕКТУВАННЯ Розробити ро
Антиботан аватар за замовчуванням

01.01.1970 03:01-

Коментарі

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

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

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

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

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

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

Admin

26.02.2023 12:38

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