- •Загальні положення
- •Завдання на проектування
- •Вимоги до змісту пояснювальної записки
- •Вимоги до окремих розділів
- •Вимоги щодо оформлення пояснювальної записки
- •Аналіз системи інструкцій процесора Gnome
- •Інформаційний тракт процесора Gnome
- •Проектування блоку основної пам’яті
- •Цикл if (вибірка інструкції)
- •Цикл ex (обчислення результату)
- •Проектування пристрою керування виконання команд
- •Проектування Операційного пристрою
- •Інтеграція складових проекту
- •Моделювання роботи комп’ютера
- •Список рекомендованої літератури
Проектування пристрою керування виконання команд
Інформаційний тракт традиційного мікропроцесора Gnome виконує інструкції почергово, кожна інструкція виконується за декілька циклів. Після виконання поточної інструкції мікропроцесор переходить до виконання наступної, тобто в основу закладено принцип послідовного неконвеєрного опрацювання інструкцій.
Оскільки в даному курсовому проекті проектування мікропроцесора виконується на функціональному рівні, то при синтезі VHDL-моделі увага часовим витратам виконання кожного циклу не приділяється. Вважатимемо, що час виконання кожного з циклів є однаковий і дорівнює тривалості тактового інтервалу clock.
Проектований процесор має трирівневу систему пам’яті и (акумулятор, регістровий файл, зовнішня пам’ять). При цьому обмін даними в межах однієї інструкції можливий лише між суміжними рівнями ієрархічної системи пам’яті. Така система команд є традиційною для RISC - машин.
Реалізувавши читання за адресою (без очікування керуючого сигналу) з регістрового файлу та зовнішньої пам’яті, а також враховуючи сказане вище, ми ліквідуємо необхідність виконання додаткового такту для вибирання операндів. Таким чином інструкція може бути виконана за два такти, як описано далі.
Цикл if (вибірка інструкції)
Виконання цього циклу передбачає читання інструкції із зовнішньої пам’яті програм за адресою, що зберігається в регістрі - вказівнику команд. Зчитане значення зберігається у регістрі інструкцій. Після цього обчислюється значення адреси наступної інструкції. Обчислене значення може бути змінене на фазі EX під час виконання інструкцій переходу. Таблиця 2 ілюструє мікрокоманди керуючого пристрою, що забезпечують виконання цих дій. Мікродії виконуються паралельно в часі і можуть розглядатись як одна сукупна мікродія. Зовнішня відносно ядра процесора пам’ять повинна виконувати читання та запис за один тактовий інтервал.
Таблиця 2. Виконання циклу IF.
-
Інструкція
Дії
Мікрооперації
IR=IM[PC]
read <= '1'
Всі інструкції
ld_ir <= '1'
NPC=PC+1
inc_pc <= '1'
Цикл ex (обчислення результату)
Цей цикл передбачає виконання дій, специфічних для кожної інструкції. Тут можемо виділити шість груп інструкцій.
Інструкції АЛП (CLEAR_C, SET_C, LDA_IMM, ADDA_IMM, LDA_RG, ADDA_RG, XORA_RG, TESTA_RG) виконують певну дію над вхідним операндом та вмістом акумулятора АЛП. Виконання таких інструкцій ініціюється передачею відповідного коду операції (alu_op) до АЛП. Для інструкцій, операндом яких є значення з регістрового файлу, генерується також сигнал Rg_op.
Таблиця 3. Виконання циклу EX для АЛП - інструкцій.
-
Інструкція
Дії
Мікрооперації
CLEAR_C
C=’0’
alu_op <= CLR_C_OP;
SET_C
C=’1’
alu_op <= SET_C_OP;
LDA_IMM
ACC=[IR3...IR0]
alu_op <= LOAD_OP;
ADDA_IMM
ACC=ACC+[IR3...IR0]
alu_op <= ADD_OP;
LDA_RG
ACC= R[IR3...IR0]
alu_op <= LOAD_OP;
Rg_op <= '1';
ADDA_RG
ACC=B
alu_op <= ADD_OP;
Rg_op <= '1';
XORA_RG
ACC=ACC XOR B
alu_op <= XOR_OP;
Rg_op <= '1';
TESTA_RG
Z=ACC AND B
alu_op <= AND_OP;
Rg_op <= '1';
Інструкції звертання до зовнішньої пам’яті (LOAD, STORE) реалізують обмін даними між регістровим файлом та пам’яттю даних.
Таблиця 4. Виконання циклу EX для інструкцій звертання до пам’яті.
-
Інструкція
Дії
Мікрооперації
LOAD
R[IR3...IR0]=MEM[IX]
alu_op <= NOP_OP;
sel_dm <= '1';
read <= '1';
ld_op<= '1';
RgWrite <= '1';
STORE
MEM[IX]=R[IR3...IR0]
alu_op <= NOP_OP;
Rg_op <= '1';
sel_dm <= '1';
data_out <= '1';
write <= '1';
Інструкції завантаження індексного регістру значенням із регістрового файлу (SET_IXH, SET_IXL) виконуються активацією відповідних сигналів запису.
Таблиця 5. Виконання циклу EX для інструкцій завантаження РСП IX.
-
Інструкція
Дії
Мікрооперації
SET_IXH
IX[7...4]= R[IR3...IR0]
alu_op <= NOP_OP;
Rg_op <= '1';
write_ixh <='1';
SET_IXL
IX[3...0]= R[IR3...IR0]
alu_op <= NOP_OP;
Rg_op <= '1';
write_ixl <='1';
Інструкція збереження значення акумулятора в регістровому файлі (STA_RG) потребує сигналу запису до регістрового файлу (Rg_write).
Таблиця 6 Виконання циклу EX для інструкції збереження акумулятора.
-
Інструкція
Дії
Мікрооперації
STA_RG
R[IR3...IR0]= ACC
alu_op <= NOP_OP;
RgWrite <= '1';
Інструкції умовного переходу (SKIP_C, SKIP_Z) - виконують інкремент вказівника інструкцій за умови активності відповідної ознаки АЛП.
Таблиця 7. Виконання циклу EX для інструкцій завантаження РСП IX.
-
Інструкція
Дії
Мікрооперації
SKIP_C
If (C) Then PC= PC+1
inc_pc <= C;
SKIP_Z
If (Z) Then PC= PC+1
inc_pc <= Z;
Інструкція безумовного переходу (JMP_IX) присвоює вказівнику інструкцій значення індексного регістру IX, активуючи сигнал jump_pc.
Таблиця 8. Виконання циклу EX для інструкції збереження акумулятора.
-
Інструкція
Дії
Мікрооперації
JMP_IX
PC]= IX
jump_pc <= '1';
Проектування керуючого автомата (автомата Мілі) засобами VHDL вимагає реалізації функції переходів та функції виходів у вигляді двох процесів. Функція переходів забезпечуватиме коректне встановлення стану керуючого пристрою при надходженні сигналу початкового скиду та подальше переключення станів. Функція виходів активує потрібні керуючі сигнали на кожному такті згідно правил описаних вище. Керуючі сигнали надходять до інформаційного тракту та зовнішньої пам’яті й забезпечують виконання кожної інструкції з набору мікропроцесора.
