Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Метод упоряд-ПОСЛЕДНЯЯ-МП.doc
Скачиваний:
34
Добавлен:
20.02.2016
Размер:
5 Mб
Скачать

2.1.3. Структура мікропроцесора

Укрупнена структурна схема МП (ВМ86) (мал. 1.2) містить дві відносно незалежні частини: операційний пристрій, що реалізує задані командою операції, і пристрій шинного інтерфейсу, що здійснює вибірку команд із пам'яті, а також звертання до пам'яті й зовнішніх пристроїв для зчитування операндів і запису результатів. Обидва пристрої можуть працювати паралельно, що забезпечує сполучення в часі процесів вибірки й виконання команд. Це підвищує швидкодію МП, тому що операційний пристрій, як правило, виконує команди, коди яких уже перебувають у МП, і тому такти вибірки команди не включаються в її цикл.

Операційний пристрій МП містить групу загальних регістрів, арифметико-логічний пристрій (АЛП), регістр прапорів F і блок керування.

Вісім 16-бітових регістрів загального призначення беруть участь у багатьох командах. У цих випадках регістри загального призначення кодуються трьохбітовим кодом, що розміщається у відповідному полі (або полях) формату команди.

Відповідно до основного призначення розглянутих регістрів виділяють регістри АХ, ВХ, СХ, DX, використовувані насамперед для зберігання даних, і регістри SP, BP, SI, DI, які зберігають головним чином адресну інформацію. Особливістю регістрів АХ, ВХ, СХ, DX є те, що вони допускають роздільне використання їхніх молодших байтів AL, BL, CL, DL і старших байтів АН, ВН, СН, DH. Тим самим забезпечується можливість обробки як слів, так і байтів і створюються необхідні умови для програмної сумісності ВМ86 і ВМ80. Відповідність регістрів цих двох мікропроцесорів зазначене в табл. 1.12, де FL – молодший байт регістра F.

Арифметично-Логічний пристрій (АЛП) містить 16-бітовий комбінаційний суматор, за допомогою якого виконуються арифметичні операції, набори комбінаційних схем для виконання логічних операцій, схеми для операцій зрушень і десяткової корекції, а також регістри для тимчасового зберігання операндів і результатів.

Всі інші регістри є неподільними й оперують 16-бітовими словами, навіть у випадку використання тільки старшого або молодшого байтів. Вказівні регістри SP і ВР зберігають зсув адреси в межах поточного стекового сегмента пам'яті, а індексні регістри SI і DI зберігають зсув адреси відповідно в поточному сегменті даних і в поточному додатковому сегменті. Однак при використанні цих регістрів для адресації операндів можлива зміна сегментів пам'яті (див. у табл. 1.14).

Таблиця 1.12

Регістр ВМ80

A

B

C

D

E

B

L

SP

PC

F

Регістр ВМ86

AL

CH

CL

DH

DL

ВH

BL

SP

IP

FL

Крім основних функцій, що відповідають назві регістрів, загальні регістри виконують спеціальні функції, зазначені в табл. 1.13.

Таблиця 1.13

Регістр

Назва

Спеціальна функція регістру

AX

Акумулятор

Множення, ділення і ввід – вивід слів

AL

Акумулятор (молодший байт)

Множення, ділення і ввід – вивід байтів; перетворювач байтів; десяткова арифметика

AH

Акумулятор (старший байт)

Множення і ділення слів;

BX

Базовій регістр

Адресація по базі;перетворювач адресів

CX

Лічильник

Підрахунок циклів; підрахунок елементів кіл

CL

Лічильник (молодший байт)

Реалізація параметричних здвигів

DX

Регістр даних

Множення і ділення слів; косвенний ввід – вивід

SP

Вказівник стечу

Операції з використанням стечу

BP

Вказівник бази

Базовій регістр

SI

Індекс джерела

Вказівник ланцюга – джерела індексний регістр

DI

Індекс приймача

Вказівник ланцюга – приймача індексний регістр

До АЛП примикає регістр прапорів F (мал. 1.3, де X позначає невизначений стан біта). Його молодший байт FL повністю відповідає регістру прапорів, а старший байт FH містить чотири прапори, відсутні. Шість арифметичних прапорів фіксують певні ознаки результату виконання операції (арифметичного, логічної, зрушення або завантаження регістра прапорів). Значення цих прапорів (крім прапора AF) використовуються для реалізації умовних переходів, що змінюють хід виконання програми. Різні команди впливають на прапори по-різному (див. табл. 2.7).

Призначення арифметичних прапорів.

CF – прапор переносу, фіксує значення переносу (займу), що виникає при додаванні (вирахуванні) байтів або слів, а також значення висунутого біта при зрушенні операнда.

PF – прапор парності (або паритету), фіксує наявність парного числа одиниць у молодшому байті результату операції, може бути використаний, наприклад, для контролю правильності передачі даних.

AF – прапор допоміжного переносу, фіксує перенос (позика) з молодшої тетради, тобто з біта аз, у старшу при додаванню (вирахуванні), використовується тільки для двоїчно-десяткової арифметики, що оперує винятково молодшими байтами.

ZF – прапор нуля, сигналізує про одержання нульового результату операції.

SF – прапор знака, дублює значення старшого біта результату, що при використанні додаткового коду відповідає знаку числа.

OF – прапор переповнення, сигналізує про втрату старшого біта результату додавання або вирахування у зв'язку з переповненням розрядної сітки при роботі зі знаковими числами. При додаванню цей прапор установлюється в одиницю, якщо відбувається перенос у старший біт і немає переносу зі старшого біта або є перенос зі старшого біта, але відсутній перенос у нього; у противному випадку прапор OF установлюється в нуль. При вирахуванні він установлюється в одиницю, коли виникає позика зі старшого біта, але позика в старший біт відсутня або є позика в старший біт, але відсутній позика з нього. Є спеціальна команда переривання при переповненні, що у зазначених випадках генерує програмне переривання.

Для керування деякими діями МП призначені три додаткових прапори.

DF – прапор напрямку, керований командами CLD і STD; визначає порядок обробки ланцюжків у відповідних командах: від менших адрес (DF = 0) або від більших (DF=1).

IF – прапор дозволу переривань, керований за допомогою команд CLI і STI; при IF=1 мікропроцесор сприймає (розпізнає) і відповідно реагує на запит переривання по входу INTR; при IF = 0 переривання по цьому вході забороняються (маскуються) і МП ігнорує вступні запити переривань. Значення прапора IF не впливає на сприйняття зовнішніх немаскуємих переривань по входу NMI, а також внутрішніх (програмних) переривань, виконуваних по команді INT.

TF – прапор трасування (простежування). При TF=1 МП переходить у покомандний (покроковий) режим роботи, застосовуваний при налагодженні програм, коли автоматично генерується сигнал внутрішнього переривання типу 1 (див. мал. 1.5) після виконання кожної команди з метою переходу до відповідної підпрограми, що звичайно забезпечує індикацію вмісту внутрішніх регістрів МП. Команди установки або скидання прапора TF відсутні, так що керування цим прапором здійснюється опосередковано, шляхом пересилання вмісту регістра прапорів F через стек у загальний регістр, установки необхідного значення восьмого біта й зворотного пересилання сформованого слова в регістр F.

Керуючий пристрій (КП) дешифрує команди, а також сприймає й виробляє необхідні керуючі сигнали. У його состав входить блок мікро-програмного керування, у якому реалізоване програмування МП на мікро-командному рівні.

Пристрій шинного інтерфейсу (або просто шинний інтерфейс) містить блок сегментних регістрів, покажчик команд, суматор адрес, черга команд і буфери, що забезпечують зв'язок із шиною. Шинний інтерфейс виконує операції обміну між МП і пам'яттю або портами уведення – виводу по запитах операційного пристрою. Коли операційний пристрій зайнятий виконанням команди, шинний інтерфейс самостійно ініціює випереджальну вибірку кодів чергових команд із пам'яті.

Черга команд являє собою набір байтових регістрів і виконує роль регістра команд, у якому зберігаються коди, обрані із програмної пам'яті. довжина черги становить 6 байт, що відповідає максимально довгому формату команд. Наявність черги команд, а також здатність операційного пристрою й шинного інтерфейсу працювати паралельно дозволяють сполучити в часі фази вибірки команди й виконання заданої операції: поки одна команда виконується в операційному пристрої, шинний інтерфейс здійснює вибірку наступної команди. У такий спосіб досягаються висока щільність завантаження шини й підвищення швидкості виконання програми. Приклад, що ілюструє реалізацію описаного конвеєрного принципу, даний на мал. 1.4, де TI позначає холості такти роботи шини, коли черга команд заповнена, а операційний пристрій зайнятий виконанням поточної команди й не запитує виконання циклу шини.

Шинний інтерфейс ініціює вибірку наступного командного слова автоматично, як тільки в черзі звільняться два байти. Як правило, у черзі перебуває мінімум один байт потоку команд, так що операційний пристрій не очікує вибірки команди. Ясно, що випереджальна вибірка команд дозволяє заощаджувати час тільки при природному порядку виконання команд. Коли операційний пристрій виконує команду передачі керування (переходу) у програмі, шинний інтерфейс скидає черга, вибирає команду по новій адресі, передає її в операційний пристрій, а потім починає заповнення (реініціалізацію) черги з наступних комірок пам'яті. Ці дії вживають в умовних і безумовних переходах, викликах підпрограм, поверненнях з підпрограм і при обробці переривань.

У міру необхідності операційний пристрій зчитує байт із черги й виконує запропоновану командою операцію. При многобайтових командах із черги зчитуються й інші байти команди. У тих рідких випадках, коли до моменту зчитування черга виявляється порожньою, операційний пристрій очікує вибірку чергового командного слова, що ініціює шинний інтерфейс. Якщо команда вимагає звертання до пам'яті або порту уведення – виводу, операційний пристрій запитує шинний інтерфейс на виконання необхідного циклу шини для передачі даних. Коли шинний інтерфейс не зайнятий вибіркою команди, він задовольняє запит негайно; у противному випадку операційний пристрій очікує завершення поточного циклу шини. Зі своєї сторони, шинний інтерфейс припиняє вибірку команд під час обміну даними між операційним пристроєм і пам'яттю або портами уведення – виводу.

Буфер шини адреси/даних (БАД) містить 16 двонаправлених керованих підсилювачів із трьома вихідними станами й забезпечує номінальну навантажувальну здатність ліній AD15 – AD0.

Буфер шини пекло реї а/стану (БАС) містить чотири односпрямованих підсилювачі із трьома вихідними станами й забезпечує номінальну навантажувальну здатність ліній A19/S6 – A16/S3.

Сегментні регістри зберігають базові (початкові) адреси сегментів пам'яті: кодового сегмента CS, у якому втримується програма; стекового сегмента SS; сегмента даних DS; додаткового сегмента ES, у якому звичайно втримуються дані. Наявність сегментних регістрів обумовлено поділом пам'яті на сегменти й використовуваний спосіб формування адрес пам'яті. Хоча МП має 20-бітову шину фізичної адреси пам'яті, він оперує 16-бітовими логічними адресами, що складаються з базової адреси сегмента і внутрішньо-сегментного зсуву. Внутрішньоьосегментний зсув може бути обчислене відповідно до зазначеного в команді способом адресації, може перебувати у форматі команди або втримуватися в загальному регістрі. Фізична адреса формується шляхом підсумовування зсуву й умісту відповідного сегментного регістра, що доповнюється чотирма нульовими молодшими розрядами.

Суматор адрес здійснює обчислення 20-бітових фізичних адрес.

Покажчик команд IP зберігає зсув наступної команди в поточному кодовому сегменті, тобто вказує на наступну один по одному команду. Він є аналогом стандартного програмного лічильника з тією лише різницею, що його вміст визначає адресу команди лише в сукупності із умістом регістра CS; якщо ж CS заповнений нулями, аналогія стає повною. Модифікація IP здійснюється шинним інтерфейсом так, що при звичайній роботі IP містить зсув того командного слова, що шинний інтерфейс буде вибирати з пам'яті. Воно не збігається зі зсувом чергової команди ( що перебуває в цей момент на виході черги команд), що буде виконувати операційний пристрій. Тому при запам'ятовуванні вмісту IP у стеці, наприклад при виклику підпрограм, воно автоматично коректується, щоб адресувати наступну команду, що буде виконуватися. Ця особливість є наслідком випереджальної вибірки команд, реалізованої у ВМ86. Безпосередній доступ до IP мають команди передачі керування.