Зміст
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 пристроя керування та з врахуванням конкретизованої за завданням підмножини системи інструкцій. Розкрити внутрішню структуру пристроїв інформаційного тракту, апаратури пристрою керування. Розробити підсистему уводу/виводу інформації. Надати у табличній чи графічній формах детальні мікропрограми виконання інструкцій.
Варіант завдання:
Варіант команди пересилань арифметичні та логічні команди команди переходів
2
SB, LW
ADDU, SUBUI, OR
J, BEQZ
Розробити організацію кеш-пам”яті. Визначити довжину полів TAG, ADDR, якщо:
Об”єм ЗЗП 2Gb
Об”єм кеш-пам”яті 16Mb
DATA= 4Kb
2.Теоретична частина
2.1. Структура прототипу скалярного RISC-комп’ютера
На першому етапі проектування прототипу(неконвеєрного) варіанту скалярного RISC-комп’ютера синтезуємо структурну схему даної машини. Синтез оснований на часовій діаграмі виконання інструкції, що має найбільшу часову складність. Час виконання кожної інструкцій процесора розбивається на 5 стадій (циклів), тобто часова складність оброблення команди рівна 5. Нижче наведено графічну інтерпретацію часових витрат та їх впорядкування в часі при обробці RISC-процесором інструкцій:
Рис.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?, де вміст регістру А порівнюються з нулем. Результат порівняння є бінарне логічне значення (так чи ні), який і здійснює керування.
Рис. 2. Структура інформаційного тракту прототипу скалярного RISC комп'ютера
На виході АЛП також може бути адреса, яка використовується також для звертання до пам’яті даних в командах зберігання/завантаження. В командах збереження вхідні дані зчитуються з регістра В прямо в пам’ять даних, а в командах завантаження отримані дані з пам’яті тимчасово зберігаються в службовому регістрі LMD.
Мультиплексор в правій частині рисунку здійснює комутацію для зберігання або вмістимого пам’яті даних, або результату виконання операцій в АЛП, в регістрі загального призначення. Він є керований від регістру поточної інструкції і комутує на вхід регістрового файла потрібну інформацію.
На кожній частині рисунку зазначено до якого циклу виконання інструкції вона відноситься згідно тих міркувань, які були викладені при описі функцій кожного циклу.
2.2. Формати інструкцій DLX машини
Формати інструкцій DLX машини наведено на рис. 3, а також надано стислий коментар щодо цих форматів.
Рис. 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-процесорів, які є машинами гранично високої продуктивності.
Рис. 4. Кеш в складі ядра комп’ютера
(CPU – центральний процесор, Memory – пам’ять, Cache – кеш)
Кеш – це швидка буферна пам’ять невеликої місткості, що розташована поміж процесором і основною пам’яттю. Кеш працює на повній швидкості процесора і не пригальмовує його роботу. Кеш (cache в перекладі з англ. – тайник) лишається прозорим для програміста, тому що система інструкцій процесора, як правило, не містить команд роботи з кешем.
При поясненні роботи кеша можна прийняти, що процесор також не “бачить” кеш і генерує адреси пам’яті так, ніби кеша немає. Проте кеш, як правило, існує, і на апаратному рівні перехоплює сигнали процесора читання/запис, а коли треба, то надає процесору швидкі копіїі інформаційних кодів, які тимчасово зберігає у власній робочій пам’яті. Якщо кеш спроможний підмінити собою пам’ять (у понад 96-98 відсотків випадків), тоді він за рахунок власних ресурсів задовільняє запит процесора. Процесор не пригальмовується і залишається працювати на повній швидкості. Коли “підміна” пам’яті неможлива (менше від двох-чотирьох відсотків випадків), тоді кеш залучає до роботи пам’ять, обмін з якою суттєво пригальмовує процесор.
2.8.2. Характеристики і робота кеша
Кеш характеризують:
функцією проекції блоків пам’яті на блоки кеша (в нас – пряма проекція);
алгоритмом заміни блоків кеша на блоки пам’яті (в нас – найпростіший, примусовий алгоритм);
алгоритмом виконання запису слова, як результату виконання дій в процесорі, до складної системи кеш-пам’ять (в нас застосовано спрощений алгоритм наскрізного запису).
Розглянемо роботу спрощеного варіанту кешу відомого під назвою “кеш із прямою проекцією та наскрізним записом” (рис.5). У поясненні фігурує термін блок з трьома можливими тлумаченнями:
блок як інформаційна одиниця; він складається з сусідніх за адресним принципом розташуванням слів без посилання на тип пам’яті;
блок як множина комірок пам’яті даних або пам’яті інструкцій;
блок як множина комірок робочої (внутрішньої) пам’яті кеша.
Розрізнення тлумачень не є важким, воно забезпечено контекстом пояснення.
Кожний блок пам’яті, що складають у середньому з (16 – 64) сусідніх з точки зору адресування слів, можна копіювати не до будь-якого, а тільки до наперед визначеного блоку робочої пам’яті кеша. В нас номер блоку кеша, що приймає участь у копіюванні, однозначно визначено за допомогою семи розрядів адреси процесора, які містить поле Block (рис.5). Негайно зауважимо, що процесор “не розуміє” і не “сприймає” структурної інтерпретації адреси, що згенерував. Таку інтерпретацію адресі надає лише і тільки лише контролер кеша, коли “незаконно, без відома процесора” перехоплює цю адресу, що призначена пам’яті даних або пам’яті інструкцій.
Нехай адреса, яку генерує процесор при читанні вмістимого однієї комірки пам’яті (тобто, слова) до власного регістра, має довжину 16 бітів. В цьому випадку, контролер кеша за допомогою семи середніх розрядів адресного слова звертається до визначеного цими розрядами блоку власної пам’яті. Зрозуміло, що бінарний номер кеша є збіжним з бінарним наповненням поля Block адреси процесора. Шуканий в такий спосіб блок завжди присутній в робочій пам’яті кеша. При цьому кеш мусять скласти з блоків.
Але вмістиме винайденого блоку робочої пам’яті кеша може бути копією не одного, а одного з декількох дозволених на копіювання блоків пам’яті. Наприклад, в нас до нульового блоку кеша дозволено копіювати наступні блоки пам’яті: 0, 128, 256, 512 і т.д. Усього до кожного блоку кеша можна скопіювати один з блоків пам’яті. Ясно, що інформаційна місткість пам’яті в 32 рази перевищує місткість кеша. Таке співвідношення місткостей є коректним гідно до означення парадоксу пам’яті. Доходимо висновку, що нас задовільнить лише однин з 32-х можливих варіантів копіювання. Питання лише в тому, чи є поточне наповнення визначеного блоку кеша відповідним запитанню процесора? Питання розв’язують за допомогою вмістимогостарших п’яти бітів адреси процесора, які утворюють поле із назвою Tag.
Рис. 5. Внутрішня структура кеша з прямою проекцією; в кеші внутрішню структуру кожного блоку як сукупності множини слів відбито, а пам’яті – приховано
Якщо при вже визначеному номері блоку вмістиме блоку кеша є відповідним, тоді вмістиме полів tag з поля адреси процесора і з мітки блоку робочої пам’яті кеша співпадають, тоді у блок кеша в поточний момент містить потрібну копію. В цьому випадку фіксують ситуацію “влучення до кеша” (cache hit). Лишається за допомогою бітів правого поля формату адреси Word визначити шукане слово в межах винайденої в кеші копії блоку, яку щойно знайдено і перевірено на адекватність, та переслати це слово до входу процесора. Бачимо, що адресне запитання процесора на читання вмістимого комірки перехопив та задовільнив швидкий кеш, а повільна пам’ять не працювала.
Інша ситуація з назвою промах (cache miss) виникає при розбіжності вище зазначених двох тегів. Контролер кеша вимушений перетранслювати адресне запитання від процесора до повільної пам’яті та перейти (разом із процесором) до стану очікування результатів роботи пам’яті на читання. Аби зменшити кількість звернень до пам’яті навіть у цій ситуації, читають не одне, вказане адресою процесора слово, а цілий інформаційний блок (з 16 - 64 сусідніх слов), який, безперечно, мусить містити шукане процесором слово пам’яті. Під час запису (пересилання слова з регістру процесора до комірки пам’яті) робота контролера кеша виконується так. Спочатку визначають присутність або відсутність копії блоку, який містить старе значення, відповідного до наданої процесором адреси. У разі влучення до кеша запис виконують як до блоку кеша, так і до блоку пам’яті, інакше тільки до блоку пам’яті Але в обидвох випадках запис виконують повільно через обов’язкову участь у ньому повільної пам’яті даних. Зазначимо, що пояснений алгоритм запису реалізує так званий кеш із наскрізним записом.
2.9. Структура пам’яті
Розробка структури системи пам’яті в даному проектування, є тривіальною задачею. Тому наведемо спрощену структуру пам’яті(рис.6)
Рис. 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. В свою чергу, кеші зв’язано з єдиною пам’яттю Принстонської архітектури. Ясно, що обмін в підсистемі пам’ять/кеш даних є двобічним, а в підсистемі пам’ять/кеш інструкцій – однобічним.
Рис. 7. Варіант генеральної структури прототипу скалярного RISC комп’ютера
Можна бачити, що наведена структура ефективно поєднала риси Принстонської і Гарвардської архітектур.
3. Проектувальний розділ
3.1.Розробка мікропрограми роботи DLX машини
На даному етапі проектування прототипу скалярного RISC-комп’ютера розробляється мікропрограма його роботи у відповідності до вихідних інструкцій, а також їх кодування. Розглянемо виконання інструкцій окремо для кожного з циклів.
Таблиця 1.
LW
SB
IF
IR = IM[PC];
NPC=PC+4;
ID
A=Regs[IR6..10];
B=Regs[IR11..15];
Imm=(IR16)16##IR16..31;
EX
ALUout=A+Imm;
Zero(cond) =0;
MEM
LMD=DM[ALUout];
PC{ if cond then ALUout else NPC };
DM[ALUout]=B24…31;
PC{ if cond then ALUout else NPC };
WB
Regs[IR11..15]=LMD
Нема мікродій
ADDU
SUBUI
OR
IF
IR = IM[PC];
NPC=PC+4;
ID
A=Regs[IR6..10];
B=Regs[IR11..15];
Imm=(IR16)16##IR16..31;
EX
ALUout=A + B;
Zero(cond)=0;
ALUout= A - Imm;
Zero(cond)=0;
ALUout=A V B;
Zero(cond)=0;
MEM
PC{ if cond then ALUout else NPC };
WB
Regs[IR16..20]= ALUout;
Regs[IR11..15]= ALUout;
Regs[IR16..20]= ALUout;
J
BEQZ
IF
IR = IM[PC];
NPC=PC+4;
ID
A=Regs[IR6..10];
B=Regs[IR11..15];
Imm=(IR16)16##IR16..31;
EX
ALUout= NPC + Imm;
Zero(cond)=1;
ALUout= NPC + Imm;
Zero(cond)=(A=0);
MEM
PC{ if cond then ALUout else NPC };
WB
Нема мікродій
Наведену мікропрограму реалізуємо пристроєм керування, який проектується нижче. Коректна генерація послідовності мікрокодів легко підтримується кодом поточної інструкції ( містить регістр IR), який починається від фази ID.
3.2. Опис мікропрограми на основі граф-схеми
Керування побудуємо за математичною моделлю абстрактного автомата(АА) Мура. Задамо мікропрограму роботи пристрою керування граф-схемою алгоритму (рис.8). На ГСА позначено yi закодовано мікродії, що генерує пристрій керування, а за допомогою xj – сигнали станів пристроїв інформаційного тракту (операційний блок). Зворотній зв’язок (від інформаційного тракту до пристрою керування) здійснюють сигнали станів (рис. 12).
Нижче подано таблицю кодування команд.
X0
X1
X2
LW
0
0
0
SB
0
0
1
ADDU
0
1
0
SUBUI
0
1
1
OR
1
0
0
J
1
0
1
BEQZ
1
1
0
Формально пристрій керування можно розлядати як кінцевий автомат, що визначається:
а) множиною війкових вихідних сигналів 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
Рис.8.Граф-схема алгоритму керуючого пристрою прототипу скалярного RISC-комп’ютера
3.3Граф автомата Мура
Побудуємо граф автомата Мура, що інтерпретує мікропрограму.
Рис.9. Граф АA Мура, що визначає алгоритм роботи пристрою керування
3.4Конвейєризація інформаційного тракту
При створенні конвейєрного варіанту інформаційного тракту виникають певні труднощі. Так,
зокрема, потрібно запам’ятовувати результати виконання команди на кожному етапі, щоб слідуюча
за нею команда могла використовувати апаратуру етапу в своїх цілях. Для цього використовуються
конвейєрні регістри. Конвейєрні регістри – це звичайні, але програмно “прозорі”, тобто невидимі
регістри. Вони містять повне інформаційне “оточення“ інструкції, що вже є на конвейєрі, аби
створити їй віртуальне враження про класично-