1. Тема роботи: Проектування RISC-комп’ютера для набору команд згідно варіанту
2. Вхідні дані:
Індекс
Група інструкцій
Пересилання
Арифметичні та логічні
Керування
24
LW,SW
ADDUI, SUB, SNE
BNEZ
3. Вихідні дані:
Розширена, детальна структурна схема прототипу скалярного RISC-комп'ютера з поданням структури, інформаційних та керуючих зв'язків інформаційного тракту i пристрою керування з врахуванням конкретизованої за завданням підмножини системи інструкцій. Внутрішня структура пристроїв інформаційного тракту, апаратура пристрою керування. Підсистема уводу/виводу інформації. Детальна мікропрограма виконання інструкцій.
Запропонувати принцип конвеєризації структури інформаційного тракту разом із конвеєрною мікропрограмою керування. Детальні креслення структури кешів даних та інструкцій з поясненням принципу побудови цих кешів та їхнього зв'язку з модифікованою гарвардською архітектурою.
4. Пояснювальна записка повинна містити:
- титульну сторінку;
- анотацію;
- зміст;
- конкретизовані та розширені вихідні дані на проектування;
- аналітичний розділ з роз'ясненням та аналізом основних принципів побудови скалярних RISC-комп'ютерів на прикладі визначених на реалізацію інструкцій;
- розділ з описом синтезу та розробки структурної схеми;
- основні результати роботи (висновок);
- перелік наукових першоджерел: монографій, статей, патентів і підручників.
Завдання видано________________________
Термін здачі роботи_____________________
Керівник_______________________________
ЗМІСТ
Вступ 5
1 ТЕОРЕТИЧНА ЧАСТИНА 6
1.1 Структура прототипу скалярного RISC-комп’ютера 6
1.2 Формати інструкцій DLX машини 9
1.3 Цикл вибирання інструкції 10
1.4 Цикл декодування інструкції/вибирання операндів з регістрового файлу 11
1.5 Цикл виконання/визначення ефективної адреси 12
1.6 Цикл звернення до пам’яті 14
1.7 Цикл зворотнього запису 15
1.8 Опис кеш-пам’яті RISC-комп’ютера 15
1.9 Основна пам’ять 17
2 Проектувальний розділ 19
2.1 Розробка мікропрограми роботи DLX машини 19
2.2 Опис мікропрограми на основі граф-схеми 20
2.3 Конвейєризація інформаційного тракту 21
2.4 Визначення реальних керуючих сигналів 23
2.5 Принцип організації пам’яті 25
Висновки 27
Список літератури 28
Додатки 29
Вступ
В даній курсовій роботі проектується прототипний варіант сучасного RISC-комп’ютера. Розробляється розширена, детальна структурна схема прототипу скалярного RISC-комп'ютера з поданням структури, інформаційних та керуючих зв'язків інформаційного тракту i пристроя керування та з врахуванням конкретизованої за завданням підмножини системи інструкцій. Розкривається внутрішня структура пристроїв інформаційного тракту, апаратури пристрою керування. Надається у табличній формі детальні мікропрограми виконання інструкцій. Розглядаються принципи побудови кеш-пам’яті, як невід’ємної частини RISC-машин.
Сутність RISC підходу полягає у перерозподілі складності в парі «апаратура – системні програми» в спосіб спрощення системи інструкцій процесора, збільшення тактової частоти, уведення конвейєрного принципу виконання інструкцій послідовного програмного потоку з одночасним підвищення складності компілятора. За рахунок перерозподілу та перекладання додаткової частки часових витрат на етап підготування програми (compile time) скорочують часові витрати на виконання машинного коду (run-time). Цього досягають навіть за умови збільшення кількості спрощених машинних інструкцій в програмі. Проте RISC напрямок вдосконалення комп’ютерних засобів не є безперечним. Зараз він спровокував досить суперечливий напрямок безмежного нарощування складності і апаратури, і системних програм новітніх конвейєрних суперскалярних RISC машин.
1 ТЕОРЕТИЧНА ЧАСТИНА
1.1 Структура прототипу скалярного RISC-комп’ютера
На першому етапі проектування прототипу(неконвеєрного) варіанту скалярного RISC-комп’ютера синтезуємо структурну схему даної машини. Синтез оснований на часовій діаграмі виконання інструкції, що має найбільшу часову складність. Час виконання кожної інструкцій процесора розбивається на 5 стадій (циклів), тобто часова складність оброблення команди рівна 5. Нижче наведено графічну інтерпретацію часових витрат та їх впорядкування в часі при обробці RISC-процесором інструкцій:
Рис.1.1 Часова діаграма виконання п’ятициклової інструкції
На рис.1.1 використано такі скорочені назви циклів:
IF (instruction fetch) – вибірка поточної інструкції з пам’яті інструкцій;
ID (instruction decoding) – дешифрування інструкції та вибирання операндів;
EX (execution) – виконання специфічних дій, передбачених інструкцією, що виконується;
MEM (memory) – читання/запис даних/результатів з/до пам’яті даних(в даному прототипі комп’ютера використовується Гарвардська архітектура, в якій відокремлені пам’яті даних та команд)
WB (write back) – запис результатів АЛП-операцій або отриманих з пам’яті даних до комірок регістрового файлу.
Розглянута послідовність фаз виконання програми орієнтована на найскладнішу інструкцію, яка охоплює усі 5 циклів (наприклад команда LW). Велика кількість операцій виконується лише в певних циклах.
Розглянемо структуру інформаційного тракту (рис.1.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?, де вміст регістру А порівнюються з нулем. Результат порівняння є бінарне логічне значення (так чи ні), який і здійснює керування.
Рис. 1.2. Структура інформаційного тракту прототипу скалярного RISC комп'ютера.
На виході АЛП також може бути адреса, яка використовується також для звертання до пам’яті даних в командах зберігання/завантаження. В командах збереження вхідні дані зчитуються з регістра В прямо в пам’ять даних, а в командах завантаження отримані дані з пам’яті тимчасово зберігаються в службовому регістрі LMD.
Мультиплексор в правій частині рисунку здійснює комутацію для зберігання або вмістимого пам’яті даних, або результату виконання операцій в АЛП, в регістрі загального призначення. Він є керований від регістру поточної інструкції і комутує на вхід регістрового файла потрібну інформацію.
На кожній частині рисунку зазначено до якого циклу виконання інструкції вона відноситься згідно тих міркувань, які були викладені при описі функцій кожного циклу.
1.2 Формати інструкцій DLX машини
Формати інструкцій DLX машини наведено на рис.1.3, а також надано стислий коментар щодо цих форматів.
Рис.1.3. Формати інструкцій DLX машини
На рис.1.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-ти бітова константа, яку додають до вмістимого регістру наступної адреси під час виконання інструкції безумовного переходу.
1.3 Цикл вибирання інструкції
На цьому циклі виконують наступні мікродії (мікрооперації):
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- процесорах.
1.4 Цикл декодування інструкції/вибирання операндів з регістрового файлу
На цьому циклі виконують наступні мікродії (мікрооперації):
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.
1.5 Цикл виконання/визначення ефективної адреси
Мікродії, що виконують в циклі EX, залежать від від типу поточної інструкції. Враховуючи це, всі інструкції процесора ділять на наступні три групи або типи:
операції арифметико-логічного пристрою;
операції завантаження операндів з головної пам'яті та збереження результатів у головній пам'яті;
операції умовних та безумовних переходів.
Розглянемо притамані кожному типу інструкцій мікродії.
Операції із зверненням до пам'яті даних (load / store instructions)
У циклі EX дані операції готують значення ефективної адреси, тобто вираховують значення бінарного коду, що безпосередньо визначає адресу комірки пам'яті даних. Виконують наступну мікродію:
ALUoutput = A + Imm.
Позначене в мікродії додавання безпосереднього операнда (однієї з компонент адреси) з вмістимим робочого регістра А (друго. компоненти) реалізують в АЛП (ALU). Отриману суму (вона завжди ціла і додатня, переносом нехтують) записують до ще одного, прозорого для програміста регістру ALUoutput. Цей регістр має розрядність 32 біти. Він зберігає коди результатів, що з'являються на виході комбінаційної схеми з назвою ALU.
ALU-інструкція типу регістр-регістр (наприклад, SUB R1,R2,R3)
Виконується відповідна до інструкції наступна мікродія:
ALUoutput = A op B.
Тут узагальнене позначення (op) можна конкретизувати як (add), (sub), і т.д. в залежності від конкретного виду поточної інструкції, яку опрацьовують в інформаційному тракті машини. Підкреслимо, що на попередньому щодо EX циклі, а саме на циклі ID, до службових регістрів вже завантажено вмістиме вибраних комірок пам'яті "регістровий файл" з адресами R2 і R3. Результат дії поки що не збережено в R1, але його тимчасово записано до службового регістру ALUoutput.
ALU - інструкція типу регістр - безпосередній операнд
(наприклад, SUB 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, виконують наступним циклом.
1.6 Цикл звернення до пам’яті
Звернення до пам'яті
Виконують наступні мікродії:
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 інструкції.
1.7 Цикл зворотнього запису
На останньому циклі виконання інструкції у разі потреби результат, що отримано на попередніх фазах записують до деякої комірки RX регістрового файла. Наприклад, в R1, якщо поточною інструкцією SUB 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 регістрового файла.
1.8 Опис кеш-пам’яті RISC-комп’ютера
Кеш-пам’ять це пам'ять для тимчасового зберігання даних, проміжна між різними типами пам'яті. Використовується для підвищення ефективності роботи комп'ютера. Кеш-пам'ять між оперативною пам'яттю й твердим магнітним диском буває двох типів: апаратна й програмна. Апаратна кеш-пам'ять звичайно використовується в мережних серверах у дискових адаптерах (контролерах) і являє собою напівпровідникову, енергозалежну, дуже швидкодіючу пам'ять. Програмна кеш-пам'ять частина оперативної пам'яті — звичайно використовується в настільних системах для підвищення ефективності роботи із зовнішньою пам'яттю.
Принцип роботи наступний: при звертанні до дискової пам'яті контролер кеш-пам'яті копіює зажадані дані у свою пам'ять, крім цих даних копіюються ( відповідно до закладеного алгоритму керування) і найближчі або зв'язані дані. Тому при наступному запиті до дискової пам'яті процесор спочатку переглядає кеш-пам'ять і, якщо потрібних даних там не знаходить, тільки тоді звертається до основної пам'яті.
Процесор генерує адреси пам'яті так, ніби кеш пам'яті не має, а сам кеш на апаратному рівні перехоплює сигнали процесора читання/запису. Якщо кеш пам'ять спроможна підмінити собою основну пам'ять (у понад 96-98 відсотків випадків), тоді вона за рахунок власних ресурсів задовольняє запит процесора.
При поясненні роботи кеша можна прийняти, що процесор також не “бачить” кеш і генерує адреси пам’яті так, ніби кеша немає. Проте кеш, як правило, існує, і на апаратному рівні перехоплює сигнали процесора читання/запис, а коли треба, то надає процесору швидкі копіїі інформаційних кодів, які тимчасово зберігає у власній робочій пам’яті. Якщо кеш спроможний підмінити собою пам’ять (у понад 96-98 відсотків випадків), тоді він за рахунок власних ресурсів задовільняє запит процесора. Процесор не пригальмовується і залишається працювати на повній швидкості. Коли “підміна” пам’яті неможлива (менше від двох-чотирьох відсотків випадків), тоді кеш залучає до роботи пам’ять, обмін з якою суттєво пригальмовує процесор.
Спрощений варіант структури комп'ютера, в якому використовується кеш пам'ять, подано в додатку. Пристрій керування надсилає керуючі сигнали до процесора та основної пам'яті. З процесора сигнали станів, якими можуть бути біти регістра команди і інше. надходять до пристрою керування, аби реалізувати розгалуження мікропрограми.
Кеш характеризують:
функцією проекції блоків пам’яті на блоки кеша (в нас – пряма проекція);
алгоритмом заміни блоків кеша на блоки пам’яті (в нас – найпростіший, примусовий алгоритм);
алгоритмом виконання запису слова, як результату виконання дій в процесорі, до складної системи кеш-пам’ять (в нас застосовано спрощений алгоритм наскрізного запису).
1.9 Основна пам’ять
Основну частину основної пам'яті утворює ОЗП, який називають оперативним, тому що він допускає як запис, так і зчитування інформації, причому обидві операції виконуються подібним чином та практично за той же час. У англомовній літературі ОЗП відповідає абревіатура RAM , тобто "пам'ять з довільним доступом", що не зовсім коректно, оскільки пам'яттю з довільним доступом є також ПЗП і регістровий файл процесора. Для більшості типів напівпровідникових ОЗП характерна енергозалежність - навіть при короткочасному перериванні живлення інформація, що зберігається в цій пам'яті, втрачається. Тому мікросхема ОЗП повинна бути постійно підключеною до джерела живлення, а ця пам'ять може використовуватися тільки як тимчасова пам'ять.
Загальна структурна схема пам’яті наведена в додатку.
В мікросхемах пам'яті реалізується координатний принцип адресації комірок, згідно з яким комірка із заданим номером лежить на перетині відповідних вертикальної та горизонтальної ліній. Запам'ятовуючі елементи, об'єднані загальним горизонтальним провідником, прийнято називати рядком. Запам'ятовуючі елементи, підключені до загального вертикального провідника, називають стовпцем. Кожній горизонтальній лінії відповідає один з кодів адреси рядка, а кожній вертикальній лінії відповідає один з кодів адреси стовпця. Молодші розряди адреси вказують адресу рядка, а старші розряди адреси вказують адресу стовпця.
Адреса комірки, що поступає в мікросхему пам'яті, пропускається через логіку вибору, де вона розділяється на дві складові: адресу рядка і адресу стовпця. Адреси рядка і стовпця запам'ятовуються в буфері адреси. Адреси рядка і стовпця подаються в мікросхему на дешифратори стовпця і рядка відповідно. Виходи дешифраторів утворюють систему горизонтальних і вертикальних провідників, до яких підключені матриці комірок пам'яті, при цьому кожна комірка пам'яті розташована на перетині одного горизонтального й одного вертикального провідників.
Крім адресних вертикальних провідників у мікросхемі повинна бути така ж кількість інформаційних провідників, по яких передаватиметься інформація, яка зчитується та записується до пам'яті. Сукупність запам'ятовуючих елементів і логічних схем, пов'язаних із вибором рядків і стовпців, називають ядром мікросхеми пам'яті.
Крім ядра, в мікросхемі є ще інтерфейсна логіка, що забезпечує взаємодію ядра із зовнішнім світом. У її завдання, зокрема, входить проведення комутації потрібного стовпця на вихід при читанні і на вхід при записі, яка здійснюється через вихідні ключі, що керуються логічними схемами запису і зчитування. При цьому логічна схеми запису і зчитування (логіка запису та логіка зчитування), а також логіка керування, яка задає режими роботи пам'яті, працюють на основі аналізу зовнішніх сигналів керування пам'яттю /RAS, /СЕ, /WE, /CAS.
Для синхронізації процесів фіксації й обробки адресної інформації всередині мікросхеми адреса рядка (RA) супроводжується сигналом RAS (Row Address Strobe - строб рядка), а адреса стовпця (CA) - сигналом CAS (Column Address Strobe - строб стовпця). Щоб стробування було надійним, ці сигнали подаються із затримкою, достатньою для завершення перехідних процесів на шині адреси та в адресних лініях мікросхеми.
Сигнал WE (Write Enable - дозвіл запису) визначає вид виконуваної операції (зчитування або запис).
На фізичну організацію ядра, як матрицю однорозрядних запам'ятовуючих елементів, накладається логічна організація пам'яті, під якою розуміється розрядність мікросхеми, тобто кількість ліній введення-виведення. Розрядність мікросхеми визначає кількість запам'ятовуючих елементів, що мають одну і ту ж адресу (таку сукупність запам'ятовуючих елементів називають коміркою), тобто кожен стовпець містить стільки розрядів, скільки є ліній введення-виведення даних.
2 Проектувальний розділ
2.1 Розробка мікропрограми роботи DLX машини
На даному етапі проектування прототипу скалярного RISC-комп’ютера розробляється мікропрограма його роботи у відповідності до вихідних інструкцій, а також їх кодування. Розглянемо виконання інструкцій окремо для кожного з циклів.
Таблиця 2.1
LW
SW
ADDUI
IF
IR = IM[PC];
NPC=PC+4; а1
ID
A=Regs[IR6..10];
Imm=(IR16)16##IR16..31;
а2
A=Regs[IR6..10];
B=Regs[IR11..15];
Imm=(IR16)16##IR16..31;
а3
A=Regs[IR6..10];
Imm=(IR16)16##IR16..31;
а4
EX
ALUout=A+Imm;
Zero(cond) =0; а8
ALUout=A+Imm;
Zero(cond) =0; а8
ALUout=A + Imm;
Zero(cond)=0; а8
MEM
LMD=DM[ALUout];
PC{ if cond then ALUout else NPC };
а12
DM[ALUout]=B;
PC{ if cond then ALUout else NPC };
а13
PC{ if cond then ALUout else NPC };
WB
Regs[IR11..15]=LMD а14
Нема мікродій
Regs[IR11..15]= ALUout;
а15
Таблиця 2.1
SUB
SNE
BNEZ
IF
IR = IM[PC];
NPC=PC+4; а1
ID
A=Regs[IR6..10];
B=Regs[IR11..15]; а5
A=Regs[IR6..10];
B=Regs[IR11..15]; а6
A=Regs[IR6..10];
а7
EX
ALUout= A - B;
а9
ALUout=!A= B;
а10
ALUout=NPC + Imm;
Zero(cond) = A op 0;
PC {if cond then ALUout else NPC}; а11
MEM
Нема мікродій
WB
Regs[IR16..20]= ALUout; а16
Regs[IR16..20]= ALUout; а16
Нема мікродій
Наведену мікропрограму реалізуємо пристроєм керування, який проектується нижче. Коректна генерація послідовності мікрокодів легко підтримується кодом поточної інструкції (містить регістр IR), який починається від фази ID.
2.2 Опис мікропрограми на основі граф-схеми
Керування побудуємо за математичною моделлю абстрактного автомата(АА) Мура. Задамо мікропрограму роботи пристрою керування граф-схемою алгоритму (рис.8). На ГСА позначено yi закодовано мікродії, що генерує пристрій керування, а за допомогою xj – сигнали станів пристроїв інформаційного тракту (операційний блок). Зворотній зв’язок (від інформаційного тракту до пристрою керування) здійснюють сигнали станів (рис. 12).
Нижче подано таблицю кодування команд.
X0
X1
X2
LW
0
0
0
SW
0
0
1
ADDUI
0
1
0
SUB
0
1
1
SNE
1
0
0
BNEZ
1
0
1
Формально пристрій керування можно розлядати як кінцевий автомат, що визначається:
а) множиною війкових вихідних сигналів 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 -Imm = (IR16)16 ## IR16..31
y4 - B = Regs[IR11..15]
y5 - ALUout = A + Imm
y6 - Zero(cond)=0
y7 - ALUout = A – B
y8 - ALUout = !A = B
y9 - ALUout = NPC + Imm
y10 - Zero(cond) = A op 0
y11 - PC{ if cond then ALUout else NPC }
y12 - LMD=DM[ALUout]
y13 - DM[ALUout]=B
y14 - Regs[IR11..15] = LMD
y15 - Regs[IR11..15] = ALUout
y16 - Regs[IR16..20] = ALUout
Граф-схема алгоритму керуючого пристрою прототипу скалярного RISC-комп’ютера та граф АA Мура, що визначає алгоритм роботи пристрою керування наведено в додатках.
2.3 Конвейєризація інформаційного тракту
При створенні конвейєрного варіанту інформаційного тракту виникають певні труднощі. Так, зокрема, потрібно запам’ятовувати результати виконання команди на кожному етапі, щоб слідуюча за нею команда могла використовувати апаратуру етапу в своїх цілях. Для цього використовуються конвейєрні регістри. Конвейєрні регістри – це звичайні, але програмно “прозорі”, тобто невидимі регістри. Вони містять повне інформаційне “оточення“ інструкції, що вже є на конвейєрі, аби створити їй віртуальне враження про класично-ізольоване від інших сусідніх інструкцій опрацювання. Конвейєрні регістри розташовано “на межі циклів”, які мають назви, відповідні сусіднім межам, наприклад, IF/ID, ID/EX, EX/MEM, MEM/WB. Кожну поточну інструкцію, що опрацьовують, ніби пересувають сходинками IF, ID, EX, MEM, WB конвейєра. В ідеалі кожна з інструкцій не “відчуває” присутності на інших сходинках конвейєра “сусідів-конкурентів”на використання апаратури інформаційного тракту.
Також, слід зазначити, що для виконання команди в DLX процесорі потрібно 5 тактів. Це призводить до того, що при виконанні команд Jmp/Branch (команд переходів), адреса наступної команди буде сформована після виконання чотирьох етапів. Для вирішення цієї проблеми, як один з варіантів, можна домовитися, що наступні чотири команди після команд переходів обов’язково виконуються. Ця домовленість призведе до ускладнення транслятора. Однак можливі випадки, коли програму не можливо буде трансформувати, що призведе до “холостих” тактів, а отже і зникне продуктивність конвейєра. Можливий інший підхід до вирішення проблеми переходів – це зміна інформаційного тракту. Даний варіант побудови інформаційного тракту наведено на рис. 10.
В ньому, при виконанні команд переходів, адреса наступної команди обчислюється вже на другому етапі. Це призведе до зміни попередньої домовленості, а саме – після команд переходів обов’язково слід виконувати одну команду. Даний підхід суттєво зменьшить (у порівнянні з попереднім) складність транслятора і ймовірність виникнення ситуації, коли програму не можливо трансформувати.
Ще однією проблемою, при створенні конвейєрного інформаційного тракту, є випадок, коли наступна команда використовує результати попередньої. Для вирішення даної проблеми можна виділити декілька варіантів. По-перше, можна передбачити у пристрої керування даний випадок і відповідну реакцію на нього – припинення обчислень та очікування потрібного результату (даних). Цей варіант призведе до ускладнення пристрою керування, а також до зменьшення швидкодії конвейєра (або повної втрати конвейєризації). По-друге, можна створити тракт в якому є можливість вибирати інформацію з етапу та поміщати її до будь-якого іншого. Це також призведе до ускладнення пристрою керування, але швидкодію буде збережено або не суттєво (в порівнянні з попереднім варіантом) зменшено. Цей варіант відображено на рис. 10.
Рис.10 Конвеєрний варіант інформаційного трактату
2.4 Визначення реальних керуючих сигналів
Функціональна схема прототипу скалярного RISC процесора приведена в графічній частині курсової роботи. На ній приведено структуру інформаційного тракту DLX процесора з розкриттям внутрішньої структури основних фунцінальних вузлів та вузли запам'ятовуючого пристрою та пристрою керування в узагальненому вигляді (у вигляді "чорного ящика").
Пристрій керування має вхід шестирозрядного коду операції lRo.s та набір вихідних керуючих сигналів. Оскільки в курсовій роботі розроблений конвейєрний варіант прототипу скалярного RISC процесора, то його пристрій керування також повинен мати п'ятиступеневу конвейєрну структуру. Тобто всі керуючі сигнали, що забезпечують виконання біжучої інструкції, видаються в заданій часовій послідовності, в певні моменти часу.
Щоб повністю відобразити роботу інформаційного тракту прототипу скалярного RISC процесора необхідно визначити реальні керуючі сигнали, які забезпечують виконання функціональними вузлами відповідні мікрооперації:
ЕН — строб дозволу запису по активному високому рівню в регістри регістрового файла тільки одного молодшого байта даних, при пасивному високому рівні — відбувається запис всього слова;
МХА — сигнал вибору напрямку передачі комутатора МХА, по низькому рівню в регістр А записується планова наступна адреса NPC, а при високому рівні — вміст заданого регістра регістрового файла;
МХВ — сигнал вибору напрямку передачі комутатора МХВ, по низькому рівню в регістр В записується вміст заданого регістра регістрового файла, а при високому рівні - вміст регістра безпосереднього операнда Imm;
МХРС — сигнал вибору напрямку передачі комутатора МХРС, по низькому рівню в регістр адреси