Міністерство освіти І науки України
НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ “ЛЬВІВСЬКА ПОЛІТЕХНІКА”
ІКТАМ
Кафедра електронних обчислювальних машин
КУРСОВА РОБОТА
з дисципліни
“Архітектура комп’ютерів”
на тему:
Проектування прототипу скалярного RISC-комп’ютера
Львів 2004
Зміст
1. Вступ.................................................................................................................................3
1.1. Завдання на проектування............................................................................................4
2. Теоретична частина......................................................................................................5
2.1. Структура прототипу скалярного RISC-комп’ютера................................................5
2.2. Формати інструкцій DLX – машини...........................................................................6
2.3. Цикл вибирання інструкції .......................................................................................7
2.4. Цикл декодування інструкції/вибирання операндів з регістрового файлу...............................7
2.5. Цикл виконання/визначення ефективної адреси.....................................................7
2.6. Цикл звернення до пам’яті.........................................................................................8
2.7. Цикл зворотнього запису...........................................................................................9
2.8. Опис кеш-пам’яті RISC-комп’ютера........................................................................9
2.8.1. Концепція кеш-пам’яті............................................................................................9
2.8.2 Характеристики і робота кеша................................................................................10
2.9. Структура пам’яті.......................................................................................................11
2.10. Генеральна структура...............................................................................................11
3. Проектувальний розділ...............................................................................................12
3.1. Розробка мікропрограми роботи DLX машини........................................................12
3.2. Опис мікропрограми на основі граф-схеми..............................................................13
3.3. Граф автомата Мура....................................................................................................15
3.4. Конвейєризація інформаційного тракту....................................................................16
4. Визначення реальних керуючих сигналів...............................................................17
4.1 Принципи організації пам’яті......................................................................................17
5. Висновок.........................................................................................................................19
6. Використана література..............................................................................................20
1.Вступ
В даній курсовій роботі проектується прототипний варіант сучасного RISC-комп’ютера. Розробляється розширена, детальну структурна схема прототипу скалярного RISC-комп'ютера з поданням структури, інформаційних та керуючих зв'язків інформаційного тракту i пристроя керування та з врахуванням конкретизованої за завданням підмножини системи інструкцій. Розкривається внутрішня структуру пристроїв інформаційного тракту, апаратури пристрою керування. Надається у табличній формі детальні мікропрограми виконання інструкцій.Розглядаються принципи побудови кеш-пам’яті, як невід’ємної частини RISC-машин.
Сутність RISC підходу полягає у перерозподілі складності в парі апаратура – системні програми в спосіб спрощення системи інструкцій процесора, збільшення тактової частоти, уведення конвейєрного принципу виконання інструкцій послідовного програмного потоку з одночасним підвищення складності компілятора,. За рахунок перерозподілу та перекладання додаткової частки часових витрат на етап підготування програми (compile time) скорочують часові витрати на виконання машинного коду (run-time). Цього досягають навіть за умови збільшення кількості спрощених машинних інструкцій в програмі. Проте RISC напрямок вдосконалення комп’ютерних засобів не є безперечним. Зараз він спровокував досить суперечливий напрямок безмежного нарощування складності і апаратури, і системних програм новітніх конвейєрних суперскалярних RISC машин.
1.1Завдання на проектування
Розробити розширену, детальну структурну схему прототипу скалярного RISC-комп'ютера з поданням структури, інформаційних та керуючих зв'язків інформаційного тракту i пристроя керування та з врахуванням конкретизованої за завданням підмножини системи інструкцій. Розкрити внутрішню структуру пристроїв інформаційного тракту, апаратури пристрою керування. Розробити підсистему уводу/виводу інформації. Надати у табличній чи графічній формах детальні мікропрограми виконання інструкцій.
Варіант завдання:
Варіант команди пересилань арифметичні та логічні команди команди переходів
Розробити організацію кеш-пам”яті. Визначити довжину полів TAG, ADDR, якщо:
Об”єм ЗЗП 2Gb
Об”єм кеш-пам”яті 16Mb
DATA= 4Kb
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-ти бітова константа, яку додають до вмістимого регістру наступної адреси під час виконання інструкції безумовного переходу.
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.
2.5. Цикл виконання/визначення ефективної адреси
(Execution/effective address cycle – EX)
Мікродії, що виконують в циклі EX, залежать від від типу поточної інструкції. Враховуючи це, всі інструкції процесора ділять на наступні три групи або типи:
операції арифметико-логічного пристрою;
операції завантаження операндів з головної пам'яті та збереження результатів у головній пам'яті;
операції умовних та безумовних переходів.
Розглянемо притамані кожному типу інструкцій мікродії.
Операції із зверненням до пам'яті даних (load / store instructions)
У циклі EX дані операції готують значення ефективної адреси, тобто вираховують значення бінарного коду, що безпосередньо визначає адресу комірки пам'яті даних. Виконують наступну мікродію:
ALUoutput = A + Imm.
Позначене в мікродії додавання безпосереднього операнда (однієї з компонент адреси) з вмістимим робочого регістра А (друго. компоненти) реалізують в АЛП (ALU). Отриману суму (вона завжди ціла і додатня, переносом нехтують) записують до ще одного, прозорого для програміста регістру ALUoutput. Цей регістр має розрядність 32 біти. Він зберігає коди результатів, що з'являються на виході комбінаційної схеми з назвою ALU.
ALU-інструкція типу регістр-регістр (наприклад, ADD 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 (наприклад, BNEZ 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. Генеральна структура
Спрощений варіант генеральної структури прототипу скалярного RISC комп’ютера надано на рис. 8. Пристрій керування (Control Unit) надсилає керуючі сигнали (MicroCode) до інформаційного шляху (DataPath) та пам’яті (Memory). З інформаційного шляху сигнали станів (Signals of States), якими можуть бути біти регістра інструкції і інше, те, що потрібно, надходять до керуючого пристрою, аби реалізувати розгалудження мікропрограми.
Розділені пам’яті даних DM і інструкцій IM Гарвардської архітектури, що вище розглядалися, заступили швидкі кеші, відповідно, D-Cache та I_Cache. В свою чергу, кеші зв’язано з єдиною пам’яттю Принстонської архітектури. Ясно, що обмін в підсистемі пам’ять/кеш даних є двобічним, а в підсистемі пам’ять/кеш інструкцій – однобічним.
EMBED PBrush
Рис. 7. Варіант генеральної структури прототипу скалярного RISC комп’ютера
Можна бачити, що наведена структура ефективно поєднала риси Принстонської і Гарвардської архітектур.
3. Проектувальний розділ
3.1.Розробка мікропрограми роботи DLX машини
На даному етапі проектування прототипу скалярного RISC-комп’ютера розробляється мікропрограма його роботи у відповідності до вихідних інструкцій, а також їх кодування. Розглянемо виконання інструкцій окремо для кожного з циклів.
Таблиця 1.
Наведену мікропрограму реалізуємо пристроєм керування, який проектується нижче. Коректна генерація послідовності мікрокодів легко підтримується кодом поточної інструкції ( містить регістр IR), який починається від фази ID.
3.2. Опис мікропрограми на основі граф-схеми
Керування побудуємо за математичною моделлю абстрактного автомата(АА) Мура. Задамо мікропрограму роботи пристрою керування граф-схемою алгоритму (рис.8). На ГСА позначено yi закодовано мікродії, що генерує пристрій керування, а за допомогою xj – сигнали станів пристроїв інформаційного тракту (операційний блок). Зворотній зв’язок (від інформаційного тракту до пристрою керування) здійснюють сигнали станів (рис. 12).
Нижче подано таблицю кодування команд.
Формально пристрій керування можно розлядати як кінцевий автомат, що визначається:
а) множиною війкових вихідних сигналів Y = {y1, y2, … , ym}, що відповідають множині мікро операцій операційного пристрою. При yi генерується і-та операція;
б) множинами вхідних сигналів Z та Х:
Z = {z1, z2, … , zp}
X = {x1, x2, … , xn},
що відповідаються двійковому коду операції (Z) і двійковими повідомляючими сигналами(X);
в) множиною мікропрограм, які необхідно реалізувати, що встановлюють в залежності від значень вхідних сигналів керуючі сигнали, які видаються блоком у визначені такти.
По множинам вхідних і вихідних сигналів і мікропрограм визначається множина внутрішніх станів блоку: Q = {q1, q2, … , qn} потужність якої (об’єм пам’яті пристрою керування) в процесі проектування намагаються мінімізувати.
Управляючий автомат може бути заданий як автомат Мура:
Q(t) = A[Q(t), x(t)]
Y(t) = B[Q(t)]
де t=0, 1, 2…; Q(0) = q0,
де А – функція переходів і В – функція виходів визначаються заданою мікропрограмою.
Поставимо у відповідність керуючим сигналам yi мікродію:
y0 - IR = IM[PC]
y1 - NPC = PC + 4
y2 - A = Regs[IR6..10]
y3 -B = Regs[IR11..15]
y4 - Imm = (IR16)16 ## IR16..31
y5 - ALUout = A + B
y6 - Zero(cond)=0
y7 - ALUout = A – Imm
y8 - ALUout = A or B
y9 - ALUout = A + Imm
y10 - ALUout =NPC + Imm
y11 - Zero(cond)=1
y12 - Zero(cond)=(A=0)
y13 - PC{ if cond then ALUout else NPC }
y14 - DM[ALUout] = B24..31
y15 - LMD=DM[ALUout];
y16 - Regs[IR16..20] = ALUout
y17 - Regs[IR11..15] = ALUout
y18 - Regs[IR11..15] = LMD
Початок
A0
A1
y0, y1
A2
y2, y3,y4
X0
X1
+
+
X2
X3
A3
+
y6, y9
X4
+
y5, y6
y6, y7
X5
A4
+
X0
A5
+
y6, y8
+
y10, y12
y10, y11
A6
A7
A8
y15
y14
A11
A9
A10
X3
X2VX4
y18
+
+
y17
y16
A12
A14
A13
Рис.8.Граф-схема алгоритму керуючого пристрою прототипу скалярного RISC-комп’ютера
3.3Граф автомата Мура
Побудуємо граф автомата Мура, що інтерпретує мікропрограму.
EMBED Visio.Drawing.6
Рис.9. Граф АA Мура, що визначає алгоритм роботи пристрою керування
3.4Конвейєризація інформаційного тракту
При створенні конвейєрного варіанту інформаційного тракту виникають певні труднощі. Так,
зокрема, потрібно запам’ятовувати результати виконання команди на кожному етапі, щоб слідуюча
за нею команда могла використовувати апаратуру етапу в своїх цілях. Для цього використовуються
конвейєрні регістри. Конвейєрні регістри – це звичайні, але програмно “прозорі”, тобто невидимі
регістри. Вони містять повне інформаційне “оточення“ інструкції, що вже є на конвейєрі, аби
створити їй віртуальне враження про класично-ізольоване від інших сусідніх інструкцій
опрацювання. Конвейєрні регістри розташовано “на межі циклів”, які мають назви, відповідні сусіднім межам, наприклад, IF/ID, ID/EX, EX/MEM, MEM/WB. Кожну поточну інструкцію, що опрацьовують, ніби пересувають сходинками IF, ID, EX, MEM, WB конвейєра. В ідеалі кожна з інструкцій не “відчуває” присутності на інших сходинках конвейєра “сусідів-конкурентів”на використання апаратури інформаційного тракту.
Також, слід зазначити, що для виконання команди в DLX процесорі потрібно 5 тактів. Це призводить до того, що при виконанні команд Jmp/Branch (команд переходів), адреса наступної команди буде сформована після виконання чотирьох етапів. Для вирішення цієї проблеми, як один з варіантів, можна домовитися, що наступні чотири команди після команд переходів обов’язково виконуються. Ця домовленість призведе до ускладнення транслятора. Однак можливі випадки, коли програму не можливо буде трансформувати, що призведе до “холостих” тактів, а отже і зникне продуктивність конвейєра. Можливий інший підхід до вирішення проблеми переходів – це зміна інформаційного тракту. Даний варіант побудови інформаційного тракту наведено на рис. 10.
В ньому, при виконанні команд переходів, адреса наступної команди обчислюється вже на другому етапі. Це призведе до зміни попередньої домовленості, а саме – після команд переходів обов’язково слід виконувати одну команду. Даний підхід суттєво зменьшить (у порівнянні з попереднім) складність транслятора і ймовірність виникнення ситуації, коли програму не можливо трансформувати.
Ще однією проблемою, при створенні конвейєрного інформаційного тракту, є випадок, коли наступна команда використовує результати попередньої. Для вирішення даної проблеми можна виділити декілька варіантів. По-перше, можна передбачити у пристрої керування даний випадок і відповідну реакцію на нього – припинення обчислень та очікування потрібного результату (даних). Цей варіант призведе до ускладнення пристрою керування, а також до зменьшення швидкодії конвейєра (або повної втрати конвейєризації). По-друге, можна створити тракт в якому є можливість вибирати інформацію з етапу та поміщати її до будь-якого іншого. Це також призведе до ускладнення пристрою керування, але швидкодію буде збережено або не суттєво (в порівнянні з попереднім варіантом) зменшено. Цей варіант відображено на рис. 10.
EMBED PBrush
Рис.10 Конвеєрний варіант інформаційного трактату
4.Визначення реальних керуючих сигналів
Функціональна схема прототипу скалярного RISC процесора приведена в графічній частині курсової роботи. На ній приведено структуру інформаційного тракту DLX процесора з розкриттям внутрішньої структури основних фунцінальних вузлів та вузли запам'ятовуючого пристрою та пристрою керування в узагальненому вигляді (у вигляді "чорного ящика").
Пристрій керування має вхід шестирозрядного коду операції lRo.s та набір вихідних керуючих сигналів. Оскільки в курсовій роботі розроблений конвейєрний варіант прототипу скалярного RISC процесора, то його пристрій керування також повинен мати п'ятиступеневу конвейєрну структуру. Тобто всі керуючі сигнали, що забезпечують виконання біжучої інструкції, видаються в заданій часовій послідовності, в певні моменти часу.
Щоб повністю відобразити роботу інформаційного тракту прототипу скалярного RISC процесора необхідно визначити реальні керуючі сигнали, які забезпечують виконання функціональними вузлами відповідні мікрооперації:
ЕН — строб дозволу запису по активному високому рівню в регістри регістрового файла тільки одного молодшого байта даних, при пасивному високому рівні — відбувається запис всього слова;
МХА — сигнал вибору напрямку передачі комутатора МХА, по низькому рівню в регістр А записується планова наступна адреса NPC, а при високому рівні — вміст заданого регістра регістрового файла;
МХВ — сигнал вибору напрямку передачі комутатора МХВ, по низькому рівню в регістр В записується вміст заданого регістра регістрового файла, а при високому рівні - вміст регістра безпосереднього операнда Imm;
МХРС — сигнал вибору напрямку передачі комутатора МХРС, по низькому рівню в регістр адреси PC записується планова наступна адреса NPC, а по високому рівню — вміст вихідного регістра ALUout;
MXWB — сигнал вибору напрямку передачі комутатора MXWB, по низькому рівню на входи дешифратора DCRG вибору регістра-приймача регістрового файлу передаються розряди IR11...IR15, а по високому — IR16-..IR20;
E31 — сигнал дозволу запису в регістр RG31 регістрового файла, має активний високий рівень;
EWB — сигнал дозволу запису в заданий регістр-приймач регістрового файлу результату виконання відповідної інструкції, має активний високий рівень;
ОР1, 2 — два керуючі сигнали дешифратора, що визначає результат
якої операцій буде записаний в регістр ALUout: ОР1, ОР2
додавання, ОР1, ОР2 — віднімання, ОР1, ОР2 — порозрядне логічне множення;
LMD1, 2 — два керуючі сигнали, що визначають напрямок передачі даних мультиплексором MXLMD на входи регістра LMD:
LMD1, LMD2 — передається наступна адреса NPC, LMD1,LMD2 — вміст регістра ALUout, LMD1, LMD2 — вміст регістра В;
RD_DM — сигнал дозволу читання пам'яті даних DM, має активний високий рівень, який додатково забороняє видачу даних з виходів мультиплексора MXLMD; WRDM — сигнал дозволу запису пам'яті даних DM, має активний
високий рівень;
RDIM — сигнал дозволу читання пам'яті інструкцій IМ, має
активний високий рівень.
4.1.Принцип організації пам’яті
Відомий так званий парадокс пам'яті - пам'ять ядра комп'ютера (ядро комп'ютера = процесор + пам'ять) може бути або малою, проте швидкою і задовільняти вимоги процесора щодо швидкодії, або ж відносно великою і повільною. Немає пам'яті відносно великої і, водночас, швидкої. Ставити зараз питання про пам'ять, що власною місткістю задовільняє системного програміста (системні програми) є, безперечно, не реальною задачею. Місткості пам'яті завжди не вистачає і, можливо, не вистачатиме.
Аби подалати зазначену невідповідність, вибудовують багаторівневу ієрархічну систему пам'яті комп'ютера, де на верхньому рівні ієрархії знаходяться програмно-...