МІНІСТЕРСТВО ОСВІТИ І НАУКИ, МОЛОДІ ТА СПОРТУ УКРАЇНИ
ДЕРЖАВНИЙ ВИЩИЙ НАВЧАЛЬНИЙ ЗАКЛАД
«УЖГОРОДСЬКИЙ НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ»
Інженерно-технічний факультет
Кафедра комп’ютерних систем та мереж
КУРСОВА РОБОТА
Проектування RISC комп’ютера
з дисципліни
«Архітектура комп’ютерів»
Напрям підготовки 6.050102 – «Комп’ютерна інженерія»
МІНІСТЕРСТВО ОСВІТИ І НАУКИ, МОЛОДІ ТА СПОРТУ УКРАЇНИ
ДЕРЖАВНИЙ ВИЩИЙ НАВЧАЛЬНИЙ ЗАКЛАД
«УЖГОРОДСЬКИЙ НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ»
Інженерно-технічний факультет
Кафедра комп’ютерних систем та мереж
ТЕХНІЧНЕ ЗАВДАННЯ
до курсової роботи з дисципліни
«Архітектура комп’ютерів»
студентки 4 курсу
1. Тема роботи: проектування RISC комп’ютера.
2. Вхідні дані:
Індекс
Група інструкцій
Варіант
Пересилання
Арифметичні та логічні
Керування
15
LB, SB
ADD, SUBU, XOR
JAL
3. Вихідні дані:
Розширена, детальна структурна схема прототипу скалярного RISC-комп'ютера з поданням структури, інформаційних та керуючих зв'язків інформаційного тракту i пристрою керування з врахуванням конкретизованої за завданням підмножини системи інструкцій. Внутрішня структура пристроїв інформаційного тракту, апаратура пристрою керування. Підсистема уводу/виводу інформації. Детальна мікропрограма виконання інструкцій.
Запропонувати принцип конвеєризації структури інформаційного тракту разом із конвеєрною мікропрограмою керування. Детальні креслення структури кешів даних та інструкцій з поясненням принципу побудови цих кешів та їхнього зв'язку з модифікованою гарвардською архітектурою.
4. Пояснювальна записка повинна містити:
- титульну сторінку;
- анотацію;
- зміст;
- конкретизовані та розширені вихідні дані на проектування;
- аналітичний розділ з роз'ясненням та аналізом основних принципів побудови скалярних RISC-комп'ютерів на прикладі визначених на реалізацію інструкцій;
- розділ з описом синтезу та розробки структурної схеми;
- основні результати роботи (висновок);
- перелік наукових першоджерел: монографій, статей, патентів і підручників.
Завдання видано________________________
Термін здачі роботи_____________________
Керівник_______________________________
ЗМІСТ
ВСТУП 5
1 СТРУКТУРА RISC КОМП’ЮТЕРА 8
1.1 Основні принципи побудови RISC комп’ютерів 8
1.2 Побудова інформаційного тракту 9
2 ПАМ’ЯТЬ 14
2.1 Кеш пам’ять 14
2.2 Основна пам’ять 17
3 ПРИСТРІЙ КЕРУВАННЯ 21
ВИСНОВОК 25
СПИСОК ВИКОРИСТАНОЇ ЛІТЕРАТУРИ 26
Додатки 27
ВСТУП
У сімдесятих роках минулого століття проектування і виготовлення центральних процесорів було заняттям, принципово доступним кожному. Якщо якому-небудь співробітникові, скажімо, Стенфордського університету приходила в голову цікава ідея, він міг легко набрати команду, заснувати фірму, знайти інвесторів і вже через рік-два викинути на ринок свої CPU.
Через тридцять з невеликим років процесори ускладнилися настільки, що розробка хоч скільки-небудь швидкого за сучасними мірками кристала вимагає величезної армії інженерів, гігантських інвестицій і цілого моря часу. І справа тут аж ніяк не в тонких кремнієвих технологіях і напівпровідникових фабриках, які коштують мільярди доларів - просто вже у вісімдесятих роках розробка принципово нового CPU вимагала двох-трьох, а в дев'яностих - п'яти-шести років напруженої роботи.
Так вже історично склалося, що спочатку вдосконалення процесорів було направлено на те, щоб сконструювати по можливості більш функціональний комп'ютер, який дозволив би виконувати якомога більше різних інструкцій.
Треба визнати, що досягнуті на цьому шляху успіхи справді вражали - в останніх версіях ЕОМ виразність асемблерного лістингу часто не поступалася виразності програми, написаної на мові високого рівня. Одною-єдиною машинною інструкцією можна було сказати практично все, що завгодно. Наприклад, такі машини, як DEC VAX, апаратно підтримували інструкції «додати елемент в чергу», «видалити елемент з черги» і навіть «провести інтерполяцію поліномом». А знамените сімейство процесорів Motorola 68k майже для всіх інструкцій підтримувало до дванадцяти режимів адресації пам'яті. Звідси й загальна назва відповідних архітектур: CISC - Complex Instruction Set Computers ( «комп'ютери з набором інструкцій на всі випадки життя»).
На практиці це призвело до того, що подібні дії виявилося складно не тільки виконувати, а й просто декодувати (виділяти з машинного коду нову інструкцію і відправляти її на виконавчі пристрої). Щоб машинний код CISC-комп'ютерів через складні інструкцій не розростався до величезного розміру, машинні інструкції в більшості цих архітектур мали неоднорідну структуру і сильно різну довжину. Ще однією проблемою стало те, що при збереженні прийнятної складності процесора багато інструкцій виявилося принципово неможливо виконати "чисто апаратно", і пізні CISC-процесори були змушені мати у наявності спеціальні блоки, які "на льоту" замінювали деякі складні команди на послідовність більш простих. В результаті всі CISC-процесори виявилися вельми трудомісткими у проектуванні та виготовленні.
Точно так само, як колись CISC-процесори проектувалися під потреби asm-програмістів, RISC проектувався в розрахунку на типовий код, що генерується компіляторами. Для початку розробники звели до мінімуму набір інструкцій і до абсолютного мінімуму - кількість режимів адресації пам'яті, упакувавши все, що залишилося, в простий і зручний для декодування регулярний машинний код. Зокрема, в класичному варіанті RISC з інструкцій, які звертаються до оперативної пам'яті, залишено тільки дві (Load - завантажити дані в реєстр і Store - зберегти дані з реєстру, так звана Load/Store-архітектура), і немає жодної інструкції на зразок обчислення синуса, косинуса або квадратного кореня, не кажучи вже про більш складних. Та що там синус з косинусів - у деяких RISC-процесорах намагалися відмовитися навіть від важко реалізується апаратного множення і ділення. Правда, до таких крайнощів ні один комерційний RISC, на щастя, не дійшло, але як мінімум дві спроби (ранні варіанти MIPS і SPARC) зроблені були.
Друге важливе вдосконалення RISC-процесорів, цілком випливає з Load/Store-архітектури, - збільшення числа GPR (регістрів загального призначення). Варіанти, у яких менше шістнадцяти GPR, - велика рідкість, причому майже всі ці регістри повністю рівноправні, що дозволяє компілятору вільно розпоряджатися ними, зберігаючи велику частину проміжних даних саме там, а не в стеку або оперативної пам'яті. У деяких архітектурах, типу SPARC, "регістровість" зведена в абсолют, у деяких - залишена на розумному рівні; проте майже будь-який RISC-процесор володіє куди великим набором регістрів, ніж навіть самий просунутий CISC.
Серед інших удосконалень, внесених до RISC, - такі нетривіальні ідеї, як умовні інструкції ARM або режими роботи команд. Наприклад, якийсь модифікатор в архітектурі PowerPC і деяких інших показує, чи повинна інструкція виставляти за результатами свого виконання певні прапорці, які потім може використовувати інструкція умовного переходу, або не повинна. Це дозволяє рознести в просторі інструкцію, що виконує обчислення умови, і інструкцію власне умовного переходу - що в конвеєрних архітектурах часто дозволяє процесору не «думати», буде здійснено перехід чи ні, а відразу достовірно це знати. У класичному CISC вони майже не зустрічаються, оскільки на момент розробки відповідних наборів інструкцій цінність цих рішень була сумнівною (вони вийдуть на сцену тільки в конвейеризованних процесорах).
Метою даної курсової роботи є спроектувати прототип комп’ютера з RISC архітектурою, який містить 6 команд: завантаження і вивантаження в пам'ять, три арифметичні команди і команда переходу. При виконанні курсової роботи слід дотримуватись основних принципів RISC архітектури.
1 СТРУКТУРА RISC КОМП’ЮТЕРА
1.1 Основні принципи побудови RISC комп’ютерів
Виділяють наступні вимоги, яких необхідно притримуватися при побудові RISC процесора:
Довільна комп'ютерна команда, незалежно від її типу, має виконуватися за один такт (чи однотактовий цикл).
Система команд має містити мінімальну кількість спрощених команд, що статистично переважають у програмах.
Команди обробки даних мають реалізуватися лише у формі "регістр-регістр". Обміни з основною пам'яттю виконуються лише за допомогою команд завантаження/запису.
Пристрій керування та арифметико-логічний пристрій процесора мають орієнтуватися на виконання мінімальної кількості спрощених команд, що статистично переважають у програмах, причому в системі команд відносно небагато операцій та режимів адресації операндів (способів адресації).
Дешифрування команд із спрощеними форматами має виконуватися лише апаратно, аби збільшити швидкодію.
У системі команд відносно небагато операцій та режимів адресування операндів (способів адресації).
Регістрова пам'ять має включати велику кількість програмно-доступних регістрів.
Високий рівень конвеєризації виконання команд.
Застосовується багато рівнів ієрархії пам’яті.
При цьому необхідно проводити оптимізацію структури процесора, що проектується, з метою забезпечення найшвидшого виконання обраних команд.1.2 Побудова інформаційного тракту
За основу проектування інформаційного тракту використаємо архітектуру комп'ютера, яка була запропонована для навчальних цілей Джоном Хеннессі та Дейвідом Паттерсоном і отримала назву DLX. Ця архітектура узагальнює особливості архітектур наступних сучасних комп'ютерів: AMD 29000, DEC3100, НР850, ІВМ801, Inteli860, MIPS М/120А, MIPS M/1000, M88000, RISCl, SGI 4D/60, SPARCstation-1, SUN-4/110, SUN-4/260.
Основою проектування структури процесора комп'ютера з простою системою команд є часова діаграма виконання команд з найбільшою складністю, до числа яких належить, зокрема, команда завантаження даних. Розглянемо цикл виконання команди вибірки з основної пам'яті (завантаження) без знакового байту LBU. В комп'ютері DLX командний цикл поділений на п'ять фаз. Тому для виконання вказаної команди потрібно виконати наступні фази:
- вибрати зазначену команду з основної пам'яті (перша фаза виконання команди із назвою IF (Instruction Fetch);
- декодувати команду та вибрати операнди (друга фаза виконання команди із назвою ID (Instruction Detecting);
- виконати команду, тобто обрахувати виконавчу адресу операнда (третя фаза виконання команди із назвою EX (Execution);
- вибрати операнд із основної пам'яті (четверта фаза виконання команди із назвою MEM (Memory);
- переслати вибраний з основної пам'яті операнд до відповідного регістра регістрового файла (п'ята фаза виконання команди із назвою WB (Write Back).
Використані назви фаз дещо узагальнюють притаманну лише команді LBU семантику кожної окремої фази. Це коректно, бо нашою метою є наближення до такої послідовності фаз, яка задовольняє вимогам будь-якої команди із заданої до реалізації множини з метою досягнення найбільшої швидкодії. Інші команди не завжди вимагають реалізації усього переліченого набору фаз, тому що мають меншу часову складність.
Залежно від структури процесора команда може бути виконаною за різний час, який буде складатися з суми проміжків часу, необхідних для виконання кожної фази. Розглянемо підхід до побудови процесора з тим, щоб задовольнити вимогу, згідно з якою довільна комп'ютерна команда, незалежно від її типу, має виконуватися за один такт (чи однотактовий цикл), яка ставиться до процесорів комп'ютера з простою системою команд.
Для того, щоб команда виконувалася за один такт, потрібно апаратно відобразити алгоритм її виконання, тобто поставити у відповідність кожному оператору алгоритму функціональні вузли процесора, які їх виконують, та з'єднати їх між собою. Ця відповідність наведена в таблиці 1.1.
Таблиця 1.1 Мікродії виконання команд
LB
SB
ADD
IF
IR = IM [PC];
NPC = PC + 4;
ID
A=Regs [ IR6..10 ];
Imm=(IR16 )16 ## IR16..31;
A=Regs [ IR6..10 ];
Imm=(IR16 )16 ## IR16..31;
B=Regs [ IR11..15 ];
A=Regs [ IR6..10 ];
B=Regs [ IR11..15 ];
EX
ALUout = A + Imm;
Zero(cond) =0;
ALUout = A + B;
MEM
LMD = DM[ALUout];
DM [ALUout] = B;
WB
Regs [ IR11..15 ] = LMD;
Regs[IR16..20]=ALUout;
SUBU
XOR
JAL
IF
IR = IM [PC];
NPC = PC + 4;
ID
A=Regs [ IR6..10 ];
B=Regs [ IR11..15 ];
A=Regs [ IR6..10 ];
B=Regs [ IR11..15 ];
Imm=(IR16 )16 ## IR16..31;
EX
ALUout = A -B;
ALUout = A xor B;
ALUout =NPC + Imm;
Zero(cond) =0;
MEM
PC=ALUout;
WB
Regs[IR16..20]=ALUout;
Regs [IR31]=PC+4;
Тоді структура процесора комп'ютера з простою системою команд, який виконує названі фази, може бути подана схемою наведеною в додатку. Як бачимо, процесор містить п'ять послідовно з'єднаних блоків: вибірки команди з основної пам'яті, декодування операндів та вибірки команди з регістрової пам'яті, операційний, вибірки та запису даних до основної пам'яті, запису даних до регістрової пам'яті. Кожен з цих блоків виконує відповідну фазу командного циклу та передає результати до наступного блоку. Результатом послідовної роботи цих блоків є виконання команди
Перший оператор IF виконується на наступних елементах: програмному лічильнику PC (Program Counter), суматорі ADD та двох регістрах NPC і IR. Вміст програмного лічильника PC визначає адресу команди в основній пам'яті. Комбінаційний суматор ADD обраховує адресу наступної за чергою виконання команди. При цьому враховано, що впорядкована послідовність команд (програма) складається з чотирибайтових команд (усі команди мають формати довжиною 32 біти), які розміщено в основній пам'яті за послідовними адресами 0, 4, 8, С і т. д. Через це константа зсуву адреси (пересування покажчика на наступну за чергою команду) дорівнює +4. Визначене за допомогою суматора значення адреси вибирання наступної команди зберігається у регістрі NPC (next PC). Зчитаний з пам'яті інструкцій IM код поточної команди записується до регістра команди IR.
Поля щойно вибраної команди містять адреси програмно-доступних регістрів регістрової файла процесора. Вміст зазначених полів формату команди в рамках оператора ID надсилається на адресні входи регістрової пам'яті Regs, а відповідні надісланим адресам коди операндів завантажуються до внутрішніх, програмно-недосяжних, тобто службових, регістрів А і В.
Існує ще один тип операнда з назвою "безпосередній" (Imm). Його задають прямо у форматі команди. Як правило, довжина безпосереднього операнда не перевищує половини довжини формату команди. В комп'ютері DLX безпосередній операнд має довжину 32/2 = 16 бітів. У той самий час бажано зафіксувати довжину формату даних такою, що дорівнює довжині формату команди, адже різноманіть довжин форматів суттєво пригальмовує комп'ютер. Якщо усі формати даних, як і формати команд, матимуть довжину 32 біти, тоді безпосередньому операнду не вистачатиме ще 16 бітів, аби бути стандартним за довжиною. Але оскільки дані команди являються беззнаковими, то старші 16 біт завжди будуть рівні нулю. Отже розширення не потрібно виконувати, а потрібно тільки перезаписати молодші 16 біт операнду в службовому регістрі Imm.
В цілому можна нарахувати чотири можливі операнди на вході арифметико-логічного пристрою ALU процесора: з регістрів А, В, Imm та вміст регістра адреси наступної для виконання команди NPC, над якими виконується функціональний оператор ЕХ. Операнд-адреса NPC опрацьовується в ALU при виконанні команди умовного переходу, коли на додаток до наступної потрібна ще одна адреса, що утвори на додаванням до вмісту NPC деякої константи переходу. Вибирання двох операндів на вхід ALU із чотирьох можливих виконується за допомогою мультиплексорів, розташованих на його входах.
Результат операції з ALU тимчасово запам'ятовується у проміжному службовому регістрі ALUout. Якщо результатом операції є число, тоді воно заноситься до комірок регістрового файла. Якщо результатом операції є адреса, тоді ця адреса надсилається до (верхнього на рисунку) мультиплексора вибору адреси mux. За допомогою зазначено: мультиплексора вибирають адресу переходу (чергова чи перехід), яка і надсилається де програмного лічильника PC, аби коректно продовжити виконання програми.
Керування мультиплексором вибору адреси наступної команди покладено на вузол Zero?, де вміст службового регістра А порівнюється із нулем (дорівнює нулю, більше нуля, менше нуля і т. д., залежно від виду виконуваної у поточний час операції умовно: переходу). Результат порівняння є бінарним логічним значенням (так або ні). Саме цей бінарний результат керує роботою мультиплексора вибирання адреси наступної команди.
При виконанні фази MEM результат-адреса з виходу ALU надсилається до основної пам'яті як отримана адреса комірки цієї нам'яті (для команд збереження/завантаження)
Результатом на виході правого на рисунку мультиплексора може бути або вміст основної пам'яті (при виконанні команди завантаження LB слова з основної пам'яті до регістра регістрового файла), або результат виконання арифметичної(ADD, SUBU, XOR) операції в ALU. Такий результат в рамках виконання фази WB засобами мікропрограмування зберігають в регістрі регістрового файла. Отже, зазначений мультиплексор комутує на вхід регістрового файла потрібну інформацію.
Таким чином, апаратно відобразивши алгоритм виконання команд, вдалося забезпечити вимогу, щоб вони виконувалася за один такт.
2 ПАМ’ЯТЬ
2.1 Кеш пам’ять
Кеш-пам'ять - це швидкодіюча пам'ять, розташована між центральним процесором і основною пам'яттю. Разом з основною пам'яттю вона входить в ієрархічну структуру і її дія еквівалентна швидкому доступу до основної пам'яті. У великих універсальних ЕОМ, основна пам'ять яких має ємність порядку 32-64 Мбайт, зазвичай використовується кеш-пам'ять ємність 64-256 Кбайт, тобто ємність кеш-пам'яті складає близько 1/1000 - 1/500 ємності основної пам'яті, а швидкодія в 5-10 разів вище швидкодії основної пам'яті.
Кеш-пам'ять, що складається з m слів, зберігає копії не менше ніж m-слів з усіх слів основної пам'яті.
Якщо копія, на адресу якої був виконаний доступ ЦП, існує в кеш-пам'яті, то зчитування завершується вже при доступі до кеш-пам'яті. Відзначимо, що використання кеш-пам'яті ґрунтується на принципах просторової і тимчасової локальності. У разі просторової локальності основна пам'ять розбивається на блоки з фіксованим числом слів і обмін даними між основною пам'яттю і кеш-пам'яттю виконується блоками. При доступі за деякою адресою, центральний процесор повинен спочатку визначити чи тримає кеш-пам'ять копію блоку за вказаною адресою, і якщо так, то визначити, з якої адреси кеш-пам'яті починається цей блок. Цю інформацію ЦП отримує за допомогою механізму перетворення адрес.
Про складність цього механізму істотний вплив робить стратегія розміщення, що визначає, в яке місце кеш-пам'яті слід помістити кожен блок з основної пам'яті. Залежно від способу розміщення даних основної пам'яті в кеш-пам'яті передбачено три типи кеш-пам'яті:
кеш з прямим відображенням (розміщенням);
повністю асоціативний кеш;
множинно-асоціативний кеш.
Кеш з прямим відображенням (розміщенням) є найбільш простим типом буфера. Адреса пам'яті однозначно визначає рядок кеша, в який буде поміщений блок інформації. При цьому передбачається, що оперативна пам'ять розбита на блоки і кожному та кому блоку в буфері відводиться всього один рядок.
Кеш-пам'ять не є універсальною альтернативою високої пропускної здатності системної шини та шини пам'яті з тієї простої причини, що різні програмні завдання мають звичай по-різному кешуватися. Оптимально використовують кеш-пам'ять завдання, що випливають принципам тимчасової і просторової локальності (temporal and spatial locality). Якщо точніше, то принцип тимчасової локальності припускає, що інформація, яка була використана в недалекому минулому, з великим ступенем ймовірності буде запрошена і в найближчому майбутньому. Другий слідує гіпотезі, що інформація, що є сусідньою з уже запитаної, також буде потрібно в ході подальшого виконання завдання. У той же час завдання, які використовують потокові дані (наприклад, відео- і аудіоінформацію), кешуються виключно погано, тому що просто забивають кеші інформацією, яка явно не буде потрібно в найближчому майбутньому, хоча спеціальні команди не часового (non-temporal) читання і запису можуть допомогти в справі мінімізації засмічення кеш-пам'яті. Те ж саме відноситься і до завдань, що використовує занадто великі обсяги даних, що перевищують розміри наявної кеш-пам'яті.
Також варто відзначити, що кеш-пам'ять не завжди була стандартним компонентом процесора. Довгий час процесори працювали з тією ж тактовою частотою, що і їх системні шини та оперативна пам'ять, причому через відсутність конвеєризації обчислень середня кількість виконаних команд у розрахунку на такт була низькою, тому яскраво вираженої необхідності в кеш-пам'яті не було. Хоча і в той час на материнські плати іноді встановлювали мікросхеми кеш-пам'яті, що використовуються системною логікою для компенсації великих затримок на доступ до оперативної пам'яті, особливо до масового впровадження сторінкового режиму роботи. Тільки на початку 1990-х, коли тактові частоти процесорів перевищили тактові частоти їх системних шин і оперативної пам'яті, а також почали входити в моду основні принципи конвеєризації, тоді й почалося масове впровадження кеш-пам'яті в процесорні ядра. З іншого боку, приросту продуктивності можна досягти шляхом збільшення ширини системної шини та шини пам'яті. На сьогоднішній день є високопродуктивні системи з 256-бітними або 512-бітними каналами даних шин пам'яті, у той час як долею масових комп'ютерів є 64-бітні або 128-бітні канали даних. Є багато причин, завдяки яким широкі канали даних шин пам'яті і системних шин непопулярні в наш час і ніколи не були популярні в минулому. По-перше, широкі канали обміну даних припускають наявність складної обслуговуючої логіки з великою площею кремнієвої підкладки і великою кількістю вихідних контактів. Природно, це самим безпосереднім чином позначається на виробничих витратах. По-друге, потрібна велика кількість провідників, що з'єднують контролер пам'яті і модулі пам'яті, прокладених на складних друкованих платах з великою кількістю шарів. Дуже бажано, щоб всі ці провідники володіли однаковою довжиною/опором, низькою чутливістю до перешкод і т.д. Повинно бути очевидно, що чим більше шинних провідників буде потрібно розмістити, тим складніше буде забезпечити їх ефективну синхронну роботу. І знову ж таки, все це виливається в збільшення виробничих витрат. З іншого боку, значно легше прокласти шину до вбудованої в процесор кеш-пам'яті в ті ж 256 або навіть 512 біт. Зрештою, комерційно ефективної альтернативи кеш-пам'яті поки не існує.
Спрощений варіант структури комп'ютера, в якому використовується кеш пам'ять, подано в додатку. Пристрій керування надсилає керуючі сигнали до процесора та основної пам'яті. З процесора сигнали станів, якими можуть бути біти регістра команди і інше. надходять до пристрою керування, аби реалізувати розгалуження мікропрограми.
Для зберігання даних і команд використано розділені кеш пам'яті даних і команд Гарвардської архітектури. В свою чергу, кеш пам'яті зв'язані з єдиною пам'яттю Принстонської архітектури. Обмін в підсистемі "основна пам'ять - кеш пам'ять даних» є двостороннім, а в підсистемі «основна пам'ять - кеш пам'ять команд" – одностороннім.
2.2 Основна пам’ять
Основна пам'ять являє собою наступний рівень ієрархії пам'яті. Основна пам'ять задовольняє запити кеш-пам'яті і служить як інтерфейс введення/виведення, оскільки є місцем призначення для введення і джерелом для виведення. Для оцінки продуктивності основної пам'яті використовуються два основних параметри: затримка і смуга пропускання. Традиційно затримка основної пам'яті має відношення до кеш-пам'яті, а смуга пропускання або пропускна здатність - до введення/виведення. У зв'язку із зростанням популярності кеш-пам'яті другого рівня і збільшенням розмірів блоків у такої кеш-пам'яті, смуга пропускання основної пам'яті стає важливою також і для кеш-пам'яті.
Затримка пам'яті традиційно оцінюється двома параметрами: часом доступу (access time) і тривалістю циклу пам'яті (cycle time). Час доступу являє собою проміжок часу між видачею запиту на читання і моментом надходження запитаного слова з пам'яті. Загальна тривалість циклу пам'яті визначається мінімальним часом між двома послідовними зверненнями до пам'яті.
Основна пам'ять сучасних комп'ютерів реалізується на мікросхемах статичних та динамічних ЗПДВ (Запам'ятовуючий Пристрій з довільною вибіркою). Мікросхеми статичних ЗПДВ (СЗПДВ) мають менший час доступу і не вимагають циклів регенерації. Мікросхеми динамічних ЗПДВ (ДЗПДВ) характеризуються більшою ємністю і меншою вартістю, але вимагають схем регенерації і мають значно більший час доступу.
У процесі розвитку ДЗПДВ зі збільшенням їхньої ємності основним питанням вартості таких мікросхем було питання про кількість адресних ліній і вартості відповідного корпусу. У ті роки було прийнято рішення про необхідність мультиплексування адресних ліній, що дозволило скоротити наполовину кількість контактів корпусу, необхідних для передачі адреси. Тому звернення до ДЗПДВ зазвичай відбувається в два етапи: перший етап починається з видачі сигналу RAS - row-access strobe (строб адреси рядка), який фіксує в мікросхемі адресу рядка, яка надійшла, другий етап включає перемикання адреси для вказівки адреси стовпця і подачу сигналу CAS -- column-access stobe (строб адреси стовпця), який фіксує цю адресу і дозволяє роботу вихідних буферів мікросхеми. Назви цих сигналів пов'язані з внутрішньою організацією мікросхеми, що як правило являє собою прямокутну матрицю, до елементів якої можна адресуватися за допомогою вказівки адреси рядка і адреси стовпця.
Для забезпечення збалансованості системи зі зростанням швидкості процесорів повинна лінійно зростати і ємність основної пам'яті. В останні роки ємність мікросхем динамічної пам'яті збільшується у четверо кожні три роки, збільшуючись приблизно на 60% на рік. На жаль швидкість цих схем за цей же період росла набагато меншими темпами (приблизно на 7% на рік). У той же час продуктивність процесорів починаючи з 1987 року практично збільшувалася на 50% на рік.
Основними методами збільшення смуги пропускання пам'яті є: збільшення розрядності або "ширини" пам'яті, використання розшарування пам'яті, використання незалежних банків пам'яті, забезпечення режиму безконфліктного звернення до банків пам'яті, використання спеціальних режимів роботи динамічних мікросхем пам'яті.
Основна пам'ять будується на основі інтегральних мікросхем. Мікросхеми пам'яті організовані у вигляді матриці комірок, кожна з яких має n запам'ятовуючих елементів, де n - розрядність комірки, і має свою адресу. Кожен запам'ятовуючий елемент здатний зберігати один біт інформації, оскільки він має два стабільні стани, які представляють двійкові значення 0 і 1. При запису інформації запам'ятовуючий елемент встановлюється в один із двох можливих станів. Для визначення поточного стану запам'ятовуючого елемента його вміст має бути зчитаний.
Загальна структурна схема пам’яті наведена в додатку.
В мікросхемах пам'яті реалізується координатний принцип адресації комірок, згідно з яким комірка із заданим номером лежить на перетині відповідних вертикальної та горизонтальної ліній. Запам'ятовуючі елементи, об'єднані загальним горизонтальним провідником, прийнято називати рядком. Запам'ятовуючі елементи, підключені до загального вертикального провідника, називають стовпцем. Кожній горизонтальній лінії відповідає один з кодів адреси рядка, а кожній вертикальній лінії відповідає один з кодів адреси стовпця. Молодші розряди адреси вказують адресу рядка, а старші розряди адреси вказують адресу стовпця.
Адреса комірки, що поступає в мікросхему пам'яті, пропускається через логіку вибору, де вона розділяється на дві складові: адресу рядка і адресу стовпця. Адреси рядка і стовпця запам'ятовуються в буфері адреси. Адреси рядка і стовпця подаються в мікросхему на дешифратори стовпця і рядка відповідно. Виходи дешифраторів утворюють систему горизонтальних і вертикальних провідників, до яких підключені матриці комірок пам'яті, при цьому кожна комірка пам'яті розташована на перетині одного горизонтального й одного вертикального провідників.
Крім адресних вертикальних провідників у мікросхемі повинна бути така ж кількість інформаційних провідників, по яких передаватиметься інформація, яка зчитується та записується до пам'яті. Сукупність запам'ятовуючих елементів і логічних схем, пов'язаних із вибором рядків і стовпців, називають ядром мікросхеми пам'яті.
Крім ядра, в мікросхемі є ще інтерфейсна логіка, що забезпечує взаємодію ядра із зовнішнім світом. У її завдання, зокрема, входить проведення комутації потрібного стовпця на вихід при читанні і на вхід при записі, яка здійснюється через вихідні ключі, що керуються логічними схемами запису і зчитування. При цьому логічна схеми запису і зчитування (логіка запису та логіка зчитування), а також логіка керування, яка задає режими роботи пам'яті, працюють на основі аналізу зовнішніх сигналів керування пам'яттю /RAS, /СЕ, /WE, /CAS.
Для синхронізації процесів фіксації й обробки адресної інформації всередині мікросхеми адреса рядка (RA) супроводжується сигналом RAS (Row Address Strobe - строб рядка), а адреса стовпця (CA) - сигналом CAS (Column Address Strobe - строб стовпця). Щоб стробування було надійним, ці сигнали подаються із затримкою, достатньою для завершення перехідних процесів на шині адреси та в адресних лініях мікросхеми.
Сигнал WE (Write Enable - дозвіл запису) визначає вид виконуваної операції (зчитування або запис).
На фізичну організацію ядра, як матрицю однорозрядних запам'ятовуючих елементів, накладається логічна організація пам'яті, під якою розуміється розрядність мікросхеми, тобто кількість ліній введення-виведення. Розрядність мікросхеми визначає кількість запам'ятовуючих елементів, що мають одну і ту ж адресу (таку сукупність запам'ятовуючих елементів називають коміркою), тобто кожен стовпець містить стільки розрядів, скільки є ліній введення-виведення даних.
Для прискорення роботи пам'яті на її інформаційному вході зазвичай встановлюються вхідний та вихідний регістри даних. Записувана інформація, що поступає по шині даних, спочатку заноситься у вхідний регістр даних, а потім у вибрану комірку. При виконанні операції зчитування інформація з комірки до її видачі на шину даних буферизируєтся у вихідному регістрі даних. На весь час, поки мікросхема пам'яті не використовує шину даних, інформаційні виходи мікросхеми переводяться в третій (високоімпедансний) стан. Керування перемиканням в третій стан забезпечується сигналом ОЕ (Output Enable - дозвіл видачі вихідних сигналів). Цей сигнал активізується при виконанні операції зчитування.
Для більшості перерахованих вище сигналів керування активним зазвичай вважається їх низький рівень.
Керування операціями з основною пам'яттю здійснюється контролером пам'яті.
3 ПРИСТРІЙ КЕРУВАННЯ
Задачею пристрою керування є курування принципами організації інформаційного тракту і пам’яті..
Пристрій керування виробляє послідовність сигналів, необхідних для виконання команди, та послідовності команд, тобто програми. Команда в комп'ютері виконується за один або за декілька тактів, в кожному із яких виконується одна або декілька мікрооперацій. Кожна мікрооперація представляє собою деяку елементарну дію передачі або перетворення інформації, яка ініціюється поступленням керуючого сигналу (мікронаказу) на вхід керування відповідного пристрою. Прикладом може бути керуючий сигнал, який встановлює або очищує прапорець стану, керуючий сигнал запису до регістра, керуючий код на вході мультиплексора і т. д. Для реалізації команди необхідно на відповідні керуючі входи подати розподілену в часі послідовність керуючих сигналів.
Пристрій керування є одним з вузлів процесора. В додатку показана взаємодія в процесорі між пристроєм керування та інформаційним трактом, кешем і основною пам'яттю.
Процес функціонування процесора в часі складається з послідовності тактових інтервалів, в яких інформаційний тракт виконує операції над операндами та видає результати обробки. Виконання даних операцій інформаційний тракт здійснює на основі відповідних сигналів керування (мікронаказів) з пристрою керування. Послідовність елементарних мікронаказів пристрій керування формує на основі коду операції та службових сигналів стану з регістрової пам'яті процесора.
В даній курсовій роботі пристрій керування побудований по принципу мікропрограмного керування, який передбачає формування керуючих сигналів за вмістом регістра мікрокоманд, в який мікрокоманди записуються із пам'яті мікрокоманд. Шляхом послідовного зчитування мікрокоманд із пам'яті в цей регістр організується потрібна послідовність керуючих сигналів.
Такий пристрій керування будується на основі автоматів, в нашому випадку це автомат Мура.
Автомат Мура визначено п’ятіркою з трьох множин:
- множини внутрішних станів ;
- множини вхідних сигналів ;
- множини вихідних сигналів ,
і двох функцій, а саме, - функції переходів і функції виходів . Скінчений автомат має скінчені множини . Ініціальний автомат Мура має наперед визначений початковий внутрішний стан .Функція переходів визначає наступний стан в залежності від поточного стану і вхідного сигналу. Функція виходів визначає вихідний сигнал (мікродію) в залежності від внутрішнього стану. Для проектування автомату Мура потрібно визначити усі елементи зазначеної п’ятірки.
Множини (таблиця 3.1), що складається з 17 елементів (мікродій) та , що складається з трьох елементів і визначаються поточною командою, вже визначено на етапі кодування автомату.
Таблиця 3.1 Мікродії виконання команд
LB
SB
ADD
IF
IR = IM [PC];(y0)
NPC = PC + 4;(y1) а1
ID
A=Regs [ IR6..10 ];(y2)
Imm=(IR16)16##IR16..31;(y3)
а2
A=Regs [ IR6..10 ];(y2)
Imm=(IR16 )16 ##IR16..31;(y3)
B=Regs [ IR11..15 ];(y4) а3
A=Regs [ IR6..10 ];(y2)
B=Regs [ IR11..15 ];(y4)
а4
EX
ALUout = A + Imm;(y5)
Zero(cond) =0; (y6) а8
ALUout = A + Imm;(y5)
Zero(cond) =0; (y6) а8
ALUout = A + B;(y7)
а9
MEM
LMD = DM[ALUout]; (y11) а13
DM [ALUout] = B;(y12)
а14
WB
Regs[IR11..15 ] =LMD;(y14)
а16
Regs[IR16..20]=ALUout;(y15)
а17
SUBU
XOR
JAL
IF
IR = IM [PC];(y0)
NPC = PC + 4;(y1) а1
ID
A=Regs [ IR6..10 ];(y2)
B=Regs [ IR11..15 ];(y4) а5
A=Regs [ IR6..10 ];(y2)
B=Regs [ IR11..15 ];(y4) а6
Imm=(IR16)16## IR16..31; (y3) а7
EX
ALUout = A - B;(y8)
а10
ALUout = A xor B;
(y9) а11
ALUout =NPC + Imm;(y10)
Zero(cond) = 0;(y6) а12
MEM
PC =ALUout;(y13) а15
WB
Regs[IR16..20]=ALUout;(y15)
а17
Regs [IR16..20]=ALUout;(y15)
а17
Regs [ IR31] =NPC+4; (y16)
а18
Множину визначають за наступним правилом:
1. Стартову вершину позначають символом внутрішнього стану ;
2. Кожну операторну вершину позначають окремим, незбіжним із вже застосованими, символом внутрішнього стану;
Результат проектування граф схеми автомата Мура наведено в додатку і містить 18 внутрішні стани, від до .
Пристрій керування має 14 керуючих виходів C1..C14. Кожний вихід відповідає за керування власного вузла інформаційного тракту. В таблиці 3.2 наведено які сигнали мають виходи пристрою керування в кожному стані автомата.
Розглянемо призначення кожного з керуючих сигналів:
С1 керує передачею даних з регістра інструкції IR в регістровий файл;
С2 керує передачею даних з регістра інструкції IR в регістр безпосереднього даного Imm;
C3 керує мультиплексором який визначає, що подавати на перший вхід АЛП(регістр нової адреси NPC або службовий регістр А);
С4 керує мультиплексором який визначає, що подавати на другий вхід АЛП(службовий регістр В або регістр безпосереднього даного Imm);
С5,С6 дозволяють ввід даних на перший і другий вхід АЛП відповідно;
С7,С8 визначають яка операція повинна бути виконана в АЛП (00 – додавання, 01 – віднімання, 10 - XOR);
С9 дозволяє передачу адреси комірки пам’яті на шину пам’яті даних, яка повинна бути завантажене в або