Завдання
Побудувати мікропроцесор, що виконує команди, наведені в таблиці 1.
Команди для проектованого процесора
Таблиця 1
Назва команди | КОП16 |
І безпосереднє | 94 |
Додавання з нормалізацією | 3А |
Завантаження та перевірка | 12 |
Завантаження PSW | 82 |
Повинні оброблятися програмні переривання, що виникають у процесі виконання команд.
Керуючий автомат синтезується для частини мікропрограми. Синтез УА необхідно виконувати у вигляді УА програмованою логікою з примусовою адресацією і перевіркою двох логічних умов
Анотація
У ході даного курсового проекту був синтезований мікропроцесор. Принцип його функціонування заснований на принципі функціонування ЕОМ загального призначення IBM/370. Для спрощення синтезу даний процесор реалізує тільки чотири команди з набору команд системи IBM/370. Вони являють собою арифметичну, логічну команду, а також команду переходу і команду пересилання, таким чином, охоплюючи найбільш характерні групи команд. Процесор дозволяє обробляти різні виняткові ситуації, що виникають у ході виконання програми.
Як приклад розглянута реалізація керуючого автомата для окремої ділянки узагальненої мікропрограми. УА був реалізований у вигляді керуючого автомата з програмованою логікою, що дозволило значно спростити його синтез і його структурну схему.
Зміст
Введення
1. Функціональна організація процесора
1.1 Опис команди "І безпосереднє"
1.2 Додавання з нормалізацією
1.3 Завантаження та перевірка
1.4 Завантаження PSW
2. Синтез операцій
2.1 Вибірка команди
2.2 Реалізація команди "І безпосереднє"
2.2 Реалізація команди "Складання з нормалізацією"
2.3 Реалізація команди "Завантаження та перевірка"
2.4 Реалізація команди "Завантаження PSW"
3. Опис структурної схеми процесора
3.1 Процесор
3.2 Оперативна пам'ять
3.3 Реєстрова пам'ять
3.5 мікрооперацій і логічні умови
4. Синтез керуючого автомата
4.1 Розмітка граф схеми
4.2 Розбиття мікрооперацій по полях і кодування логічних умов
4.3 Прошивка МПЗУ
4.4 Опис Структурною і Електричної принципової схеми Керуючої автомата
Перелік використовуваних скорочень
Список використаної літератури
Висновок
Введення
Даний курсовий проект присвячений розробці мікропроцесора, що виконує певний набір команд. Для наближення до структури та функціонування реальних процесорних пристроїв були дані команди і принципи роботи з зовнішніми пристроями аналогічні реально існуючому процесору IBM/370. Розробка процесора - це один з найбільш важливих етапів розробки ЕОМ в цілому. Незважаючи на те, що для функціонування модулів пам'яті та інших зовнішніх по відношенню до процесора пристроїв байдужа внутрішня структура процесора, важливо брати до уваги при виборі набору пристроїв найбільш характерні типи даних оброблювані процесором, типи команд, призначення і функції зовнішніх виводів процесора. У даному випадку, так як команди процесора можуть мати довжину 16 або 32 розряди, то бажано використовувати пам'ять, що дозволяє зчитувати одночасно не менше 32 розрядів. Подібний вибір структури пам'яті добре стикується і з найбільш характерними форматами даних, з якими працює процесор. У даному випадку не позбавлений сенсу був і вибір пам'яті з можливістю вибірки 64-разраядних слів, так як процесор працює і з 64-разраяднимі словами, але так як така розрядність використовується тільки в одній з мікрооперацій, а дані при цьому перебувають у реєстрової пам'яті, то при цьому 64-розрядна пам'ять використовувалася б виключно для вибірки команд, а магістраль велику частину часу простоювала. Таким чином, була обрана структура процесора, що має 32-розрядну зовнішню і 32-розрядну внутрішню структуру.
При виборі структури реєстрової пам'яті враховувалося, то що одночасно не використовуються регістри з плаваючою точкою і регістри загального призначення, тому можливе їх об'єднання в одну реєстрову пам'ять. Різниця у форматі при цьому не є проблемою, так як регістри з плаваючою точкою при цьому подаються у вигляді двох 32-розрядних регістрів. Це не призводить до зменшення продуктивності системи, як було зазначено раніше, магістраль є 32-розрядної і, все одно, потрібно робити зчитування регістра з плаваючою комою за два звернення до реєстрової пам'яті, а конвеєрний спосіб зв'язку з нею дозволив виробляти це зчитування за три машинних такту.
1. Функціональна організація процесора
Процесор повинен виконувати наступні команди:
І безпосереднє
Додавання з нормалізацією
Завантаження та перевірка
Завантаження PSW
1.1 Опис команди "І безпосереднє"
NI D 1 (B 1), I 2 (SI)
9416 | I2 | B 1 | D1 |
0 8 16 20 31
Поразрядное логічне твір (І) першого і другого операндів поміщається на місце першого операнда.
Операнди обробляються як логічні величини, що не мають внутрішньої структури, і до відповідних бітам застосовується операція логічного І. У бите результату встановлюється 1, якщо у відповідних бітах обох операндів містяться одиниці, в іншому випадку - встановлюється 0.
У випадку команди NC поля операндів обробляються зліва направо. Якщо операнди перекриваються, результат виходить таким, як якщо б операнди оброблялися побайтно, кожен байт результат записувався в пам'ять відразу ж після вибірки потрібного байта операнда.
Ознака результату:
0-результат дорівнює 0;
1-результат не дорівнює 0;
2 -
1.2 Додавання з нормалізацією
AER R1, R2 (RR, короткі операнди)
3A16 | R1 | R2 |
0 8 12 15
Другий операнд складається з першим операндом, і нормалізована сума поміщається в комірку першого операнда.
Складання двох чисел з плаваючою точкою полягає у вирівнюванні характеристик і складання мантис. Характеристики обох операндів порівнюються, і мантиса операнда з меншою характеристикою зсувається вправо, при кожному зсуві на шістнадцяткову цифру виробляється збільшення характеристики цього операнда на 1. Зрушення продовжується до тих пір, поки характеристики обох операндів не стануть рівними.
Якщо операнд зрушать вправо під час вирівнювання, то сама ліва шістнадцяткова цифра поля, висунутого за межі розрядної сітки, зберігається в якості додаткової цифри. Вважається, що операнд, який не піддався зрушення, має додаткову молодшу цифру, що дорівнює 0. Якщо вирівнюючий зрушення не виробляється, то вважається, що обидва операнда розширені молодшими шестнадцатерічнимі нулями. Потім проводиться алгебраїчне додавання мантис для отримання проміжної суми.
При складанні коротких операндів мантиса проміжної суми складається з 7 шістнадцяткових цифр і, можливо, цифри переносу. Якщо перенесення має місце, сума зсувається вправо на одну цифру, і характеристика збільшується на 1.
Після складання проміжна сума зсувається вліво таким чином, щоб отримати нормалізоване число, за умови, що мантиса не дорівнює 0. У звільнилися молодші шістнадцяткові позиції записуються нулі, а характеристиці зменшується на число одиниць, яка дорівнює кількості зрушень, потім мантиса проміжної суми усікається таким чином, щоб отримати мантиссу результату потрібної довжини.
Знак суми визначається за правилами алгебри, за винятком випадку, коли всі цифри мантиси проміжної суми рівні 0. У цій ситуації встановлюється позитивний знак.
Якщо перенесення зі старшої позиції мантиси проміжної суми характеристики нормалізованої суми перевищує число 127, то фіксується особливий випадок переповнення порядку. Операція завершується шляхом формування характеристики, яка на 128 менше дійсного значення, і відбувається програмне переривання через переповнення порядку. При цьому результат буде нормалізованим, а знак і мантиса зберігають правильні значення. У випадку команди складання для розширених операндів (AXR) зберігається також правильне значення характеристики молодшої частини.
Якщо характеристика нормалізованої суми менше 0, а мантиса не дорівнює 0, має місце особливий випадок зникнення порядку. Якщо біт маски зникнення порядку дорівнює 1, операція завершується шляхом формування характеристики, яка на 128 більше дійсного значення. Результат нормалізується, а знак і мантиса зберігають правильні значення. Потім відбувається програмне переривання через зникнення порядку. Якщо зникнення порядку має місце, а біт маски зникнення порядку дорівнює 0, то програмне переривання не відбувається. Замість цього операція завершується шляхом формування результату, рівного істинному 0. У випадку команди складання для розширених операндів зникнення порядку не фіксується, якщо характеристика молодшої частини менше 0, а характеристика старшої частини більше або дорівнює 0.
Якщо мантиса проміжної суми, включаючи додаткову цифру, дорівнює 0, має місце особливий випадок втрати значимості. Якщо біт маски втрати значимості дорівнює 1, то характеристика проміжної суми не змінюється і стає характеристикою результату. Нормалізація не проводиться, і відбувається програмне переривання через втрату значимості.
Якщо біт маски втрати значимості дорівнює 0, програмне переривання не відбувається; Замість цього формується результат, рівний істинному 0.
Ознака результату:
0-Мантиса результату дорівнює 0;
1-Результат менше 0;
2-Результат більше 0;
Програмні переривання:
Операція (якщо в даній установці відсутня засіб обробки чисел з плаваючою крапкою або у разі команди AXR відсутня засіб обробки чисел з плаваючою комою з високою точністю)
Специфікація;
Переповнення порядку;
Зникнення порядку;
Втрата значущості.
1.3 Завантаження та перевірка
LTR R1, R2 (RR)
1216 | R1 | R2 |
0 8 12 15
Другий операнд без зміни поміщається на місце першого операнда. Поля R1 і R2 повинні визначати регістри 0,2,4 або 6; в іншому випадку фіксується особливий випадок специфікації.
Ознака результату:
0-результат дорівнює 0;
1-результат менше 0;
2 - результат більше 0;
3 -
Програмні переривання відсутні.
1.4 Завантаження PSW
LPSW D 2 (B 2) (S)
8216 | / / / / / / / / / | B 2 | D 2 |
0 8 16 20 31
Подвійне слово з області, зазначеної адресою другого операнда, заміщає поточний PSW.
Якщо в новому PSW заданий режим BC, то при завантаженні PSW вміст позиції 16-33 нового PSW не зберігається. Коли надалі PSW записується в пам'ять. Ці позиції містять новий код переривання і код довжини команди.
Проводиться тимчасове скасування суміщення. Виконання операції в процесорі затримується до тих пір, поки не буде завершено попередні доступи цього процесора в основну пам'ять по відношенню до інших каналів і процесором.
До тих пір поки виконання даної команди не буде завершено, доступ до подальших командам і їх операндом не проводиться.
Операнд має бути розташований на кордоні подвійного слова, інакше розпізнається особливий випадок специфікації і операція пригнічується і тоді, коли має місце особливий випадок захисту або адресації.
Біти 8-15 команди ігноруються.
Ознака результату визначається вмістом відповідного поля нового PSW.
Програмне переривання:
Привілейована операція;
2. Синтез операцій
2.1 Вибірка команди
Перед виконанням будь-якої команди потрібно вважати її з пам'яті в регістр команд РК. Адреса зчитується команди задається в лічильнику адреси команди СЧАК, що представляє собою біти 40. .62 Зі слова стану програми PSW. З пам'яті одночасно зчитуються 32 розряди - Р егістр ВП, адреса якого знаходиться в А дресном регістрі ОП. Оскільки довжина команди може бути дорівнює 16 чи 32 розрядам, то за одне звернення до пам'яті може бути прочитана одна або дві команди або одна команда і частина наступної.
Щоб не вчинити повторне зчитування, розряди РОП (16: 31) можуть запам'ятати в буферному регістрі БР. Для того, щоб визначити, чи знаходиться в БР корисна інформація, використовується тригер переходів ТП, одиничне значення якого означається, що інформація в БР не може бути використана для формування нової команди. Якщо ТП = 0, то вміст БР може бути використано для формування нової команди.
Якщо обрана команда має формат RR, перше півслова, що представляє собою команду, передається на РК,
а розряди (16: 31) зберігаються на БР. При цьому СЧАК збільшується на "1".
Якщо обрана команда починається з другого півслова
і має довжину в слово, то на РК розряди (0: 15) передаються розряди (16: 31) РОП, СЧАК збільшується на "2" і відбувається повторне звернення до ОП. Розряди (0: 15) РОП передаються на РК (16: 31).
Функціональна мікропрограма вибірки команди наведена на рис.1
у додатку 1. Після вибірки команда знаходиться в РК. Її КОП ми
по черзі порівнюємо з КОП ами наших команд, як тільки вони співпадуть йдемо на виконання. Якщо такого КОП а ні, то викликається програмне переривання.
2.2 Реалізація команди "І безпосереднє"
У команді "І безпосереднє" явно дано другий операнд, довжина якого 1 байт-це поле I 2. Другий операнд знаходиться в ОП. Його адреса
обчислюється таким способом: з РП за адресою В1 витягується РОН який складається зі зміщенням D 1. У результаті отримуємо адресу операнда в ОП. У залежності від останніх 2-х бітів адреси витягаємо відповідний байт і проводимо операцію "І безпосереднє". Потім результат записуємо на місце 1-го операнда і виробляємо запис отриманого регістра в пам'ять. Ознака результату встановлюється відповідно вищеописаного умови.
Блок-схема алгоритму показана на малюнку 2.
2.2 Реалізація команди "Складання з нормалізацією"
Для реалізації команди "Складання з нормалізацією" були використані наступні елементи. Тригера SA, SB, які служать для зберігання знака (модернізований код); тригер DS використовується як прапор переповнення при підрахунках. Чотирирозрядний регістри DOPA і DOPB, де зберігаються додаткові цифри для відповідних операндів . Операнди знаходяться в реєстрової пам'яті за адресами R 1 і R2 відповідно. Виймання операндів перевіряється коректність завдання адрес. Для зручності операнди розбиті по полях: РА і РВ - поля характеристик, МА та МВ - поля мантис. Програма реалізується згідно з описом - підрозділ 1.2 Схема алгоритму програми представлена на малюнку 3.
2.3 Реалізація команди "Завантаження та перевірка"
При виконанні цієї команди перевіряється коректність завдання адрес R 1 і R 2. Відповідно до завдання встановлюється ознака результату.
2.4 Реалізація команди "Завантаження PSW"
Операнд знаходиться в ОП. Його адреса обчислюється таким способом: з РП за адресою В2 витягується РОН який складається зі зміщенням D 2. У результаті отримуємо адресу операнда в ОП. Витягаємо регістр і записуємо його в PSW (0: 31), потім збільшуємо на 1-у і записуємо регістр у PSW (32: 63).
3. Опис структурної схеми процесора
3.1 Процесор
Процесор складається з наступних основних частин:
32-розрядної магістралі М;
32-розрядного регістра Z для сполучення з магістраллю;
32-розрядного ALU
32-розрядних регістрів А, В;
Тригери DS, SA, SB;
4-розрядних регістрів DOPA, DOPB;
16-розрядного буферного регістра БР і 32-розрядного регістра команд РК;
64-розрядного PSW;
Тригера переходу ТП;
Формувачів кодів ФК1-ФК6;
Різних схем порівняння, мультиплексорів і ліній зв'язку.
Крім того, для роботи процесора необхідні РП та ВП, які можуть знаходитися всередині процесора або підключатися у вигляді зовнішніх пристроїв.
Магістраль процесора служить для зв'язку РП і ОП з внутрішніми регістрами. РП підключена до М через регістр РРП. ВП підключена до М через регістр РВП. Z служить для зв'язку РРП і РОП з регістрами процесора. БР та РК пов'язані з М безпосередньо. ALU служить для виконання різних операцій і для зв'язку між внутрішніми регістрами.
3.2 Оперативна пам'ять
В оперативній пам'яті ємністю 256 кілобайт зберігаються 32 - розрядні слова. Слово читається і записується в оперативну пам'ять лише цілком за одне звернення до ОП. Адреса слова, до якого проводиться звернення, вказується на регістрі адреси основної пам'яті АОП. Довжина регістру АОП дорівнює , Де -Ємність ВП в словах. Слово інформації, що записується або читається з ОП, розмішається в регістрі РВП. Операція в ВП збуджується сигналами читання з основної пам'яті ЧТОП і запису в основну пам'ять ЗПОП. Момент закінчення операції в ОП відзначається сигналом . Так як цикл основної пам'яті має тривалість велику такту роботи процесора, то повинна забезпечуватися синхронізація роботи процесора і оперативної пам'яті за рахунок чекають вершин графа мікропрограми.
3.3 Реєстрова пам'ять
Реєстрова пам'ять застосовується для збільшення швидкодії процесора. РП складається з регістрів загального призначення (РОН) і регістрів з плаваючою комою (РПЗ). Рони використовуються як індекс регістрів, базових регістрів, а також для зберігання слів і півслів, що беруть участь в операціях з фіксованою комою. Рони представляють собою 32 - розрядні регістри і адресуються числами від 0 до 15. Для звернення до сторонам у командах будь-якого формату відводиться чотирирозрядний полі R.
При виконанні операцій з плаваючою комою один або обидва операнди можуть розташовуватися на РПЗ. Усього використовується чотири регістри довжиною 8 байтів з адресами 0,2,4,6 відповідно.
Рони і РПЗ структурно об'єднані в 24-реєстрову пам'ять РП, регістри 0-15 представляють собою Рони, а інші 8 регістрів використовується для збереження чотирьох восьмибайтових слів. Довжина регістру РП дорівнює 32 розрядами. Адреса регістра вказується на 5-розрядному регістрі АРП. Операнд, який записується або читається з РП, поміщається на регістр РРП. Читання і запис слова ініціюються відповідно сигналами ЧТРП і ЗПРП.
Для зберігання поточної інформації використовується РК. Дані з нього можуть надходити на АРП і на ALU.
3.4 Слово стану процесора
Слово-стан процесора PSW містить інформацію про стан процесора. У зв'язку з обмеженим набором команд використовуються не всі розряди. Розряди 16-31 містять код помилки, що викликала програмне переривання. У даному випадку використовують
розряди 28-31. Розряди 32-33 зберігають інформацію про довжину останній виконаний команди. У розряди 34-35 записується ознака результату. Розряди 36-39 зберігають маску переривань. Розряди 40-63 використовуються для зберігання адреси команди. ФК1 використовується для формування коду довжини помилки. ФК2 - коду довжини команди, ФК3 - ознаки результату, ФК4 - адреси пам'яті, ФК5 і ФК6 - для формування деякого коду при виконанні унарних операцій.
Схеми порівняння використовуються для генерації логічних умов.
При написанні мікропрограм треба враховувати набір наявного устаткування. Для полегшення визначення необхідного обладнання спочатку пишемо мікропрограму для самої більшої за витратами обладнання команди. Їй є команда з плаваючою комою. Команда порівняння двох операндів з плаваючою комою. числа представляються в короткому форматі.
±
Характеристика
Мантиса
0 1 7 8 31
Негативні числа зображуються в прямому коді. Характеристика Х дорівнює порядку числа, збільшеному на 64, і представляє значення порядку в діапазоні від -64 до +63. Набір символів (_ =) означає привласнення змінної на початку машинного такту, а набір символів (: =) означає привласнення змінної в кінці такту.
Структурна схема процесора (операційна частина) наведена в додатку 2.
3.5 мікрооперацій і логічні умови
Перелік всіх мікрооперацій показано у таблиці 2.
Перелік всіх логічних умов показано у таблиці 3.
Перелік мікрооперацій таблиця 2
Y | ОПЕРАЦІЯ |