ВІКІСТОРІНКА
Навигация:
Інформатика
Історія
Автоматизація
Адміністрування
Антропологія
Архітектура
Біологія
Будівництво
Бухгалтерія
Військова наука
Виробництво
Географія
Геологія
Господарство
Демографія
Екологія
Економіка
Електроніка
Енергетика
Журналістика
Кінематографія
Комп'ютеризація
Креслення
Кулінарія
Культура
Культура
Лінгвістика
Література
Лексикологія
Логіка
Маркетинг
Математика
Медицина
Менеджмент
Металургія
Метрологія
Мистецтво
Музика
Наукознавство
Освіта
Охорона Праці
Підприємництво
Педагогіка
Поліграфія
Право
Приладобудування
Програмування
Психологія
Радіозв'язок
Релігія
Риторика
Соціологія
Спорт
Стандартизація
Статистика
Технології
Торгівля
Транспорт
Фізіологія
Фізика
Філософія
Фінанси
Фармакологія


Регістри загального призначення

 

Регістри загального призначення використовуються в програмах для збереження:

операндів логічних і арифметичних операцій;

компонентів адреси;

покажчиків на комірки пам‘яті.

Всі ці регістри доступні для зберігання операндів без особливих обмежень, хоча за певних умов деякі з них все ж мають жорстке функціональне призначення, закріплене на рівні логіки роботи машинних команд. Серед цих всіх регістрів особливо слід виділити регістр ESP. Його не слід використовувати для збереження будь-яких операндів програми, оскільки в ньому зберігається покажчик на розташування вершини стеку програми. Всі регістри цієї групи дозволяють звертатися до своїх “молодших” частин. Використовувати для самостійної адресації можна тільки молодші 16- і 8-бітові частини цих регістрів. Старші 16 бітів цих регістрів як самостійні об‘єкти не доступні. Це зроблено для сумісності з молодшими 16-розрядними моделями мікропроцесорів фірми Intel. Перерахуємо регістри, що відносяться до групи регістрів загального призначення. Оскільки ці регістри знаходяться всередині арифметично-логічного пристрою (АЛП), то їх ще називають регістрами АЛП.

EAX/AX/AH/AL (Accumulator register) – акумулятор. Застосовується для зберігання проміжних даних. В деяких командах використання цього регістра обов‘язкове;

EBX/BX/BH/BL (Base register) – базовий регістр. Застосовується для зберігання базової адреси деякого об‘єкта в пам‘яті;

ECX/CX/CH/CL (Count register) – регістр-лічильник. Застосовується в командах, що здійснюють деякі повторні дії. Його використання часто неявне і сховане в алгоритмі роботи відповідної команди. На приклад, команда організації циклу loop, крім передачі керування команді, що знаходиться за деякою адресою, аналізує і зменшує на одиницю значення регістра ECX/CX;

EDX/DX/DH/DL (Data register) – регістр даних. Як і регістр EAX/AX/AH/AL, він зберігає проміжні дані. В деяких командах його використання обов’язкове; для деяких команд це відбувається неявно.

Наступні два регістри використовують для підтримки так званих ланцюжкових операцій, тобто операцій, що здійснюють послідовну обробку ланцюжка елементів, кожен з яких може мати довжину 32, 16 або 8 біт:

ESI/SI (Source Index register) – індекс джерела. Цей регістр в ланцюжкових операціях містить поточну адресу елемента в ланцюзжку-джерелі;

EDI/DI (Destination Index register) – індекс приймачі. Цей регістр в ланцюжкових операціях містить поточну адресу в ланцюжку-приймачі.

В архітектурі мікропроцесора на програмно-апаратному рівні підтримується така структура даних як стек. Для роботи зі стеком в системі команд мікропроцесора є спеціальні команди, а в програмній моделі мікропроцесора для цього існують спеціальні регістри:

ESP/SP (Stack Pointer register) – регістр покажчика стека. Містить покажчик вершини стека в поточному сегменті стека;

EBP/BP (Base Pointer register) – регістр покажчика бази кадру стека. Застосовується для організації довільного доступу до даних всередині стека.

 

Сегментні регістри

 

В програмній моделі мікропроцесора є шість сегментних регістрів: CS, SS, DS, ES, GS, FS. Їх існування обумовлене специфікою використання сегментної організації оперативної пам‘яті мікропроцесорами Intel. Призначення цих регістрів вже раніше розглядалось. Відмітимо лише те, що в нових типах мікропроцесорів з’явились два додаткових сегментних регістри: GS, FS.

 

Регістри стану і керування

 

В мікропроцесор включені декілька регістрів, які постійно містять інформацію про стан як самого мікропроцесора, так і програми, команди якої в даний момент завантажені на конвеєр.

До цих регістрів відносяться:

- регістр прапорців EFLAGS/FLAGS;

- регістр покажчика команди EIP/IP.

Використовуючи ці регістри, можна отримувати інформацію про результати виконання команд і впливати на стан самого мікропроцесора. Розглянемо детальніше призначення і вміст цих регістрів.

Регістр прапорців. Розрядність EFLAGS/FLAGS – 32/16 біт. Певні біти даного регістра мають певне функціональне призначення і називаються прапорцями. Молодша частина цього регістра повністю аналогічна регістру прапорців FLAGS для і8086.

Виходячи з особливостей використання, прапорці регістра EFLAGS/FLAGS можна розділити на три групи:

- 8 прапорців стану. Ці прапорці можуть змінюватися після виконання машинних команд. Прапорці стану регістра еflags містять особливості результату виконання арифметичних або логічних операцій. Це надає можливість аналізувати стан обчислювального процесу і реагувати на нього за допомогою команд умовних переходів і викликів підпрограм;

- 1 прапорець керування. Позначається як df (Directory Flags). Він знаходиться в десятому біті регістра еflags і використовується ланцюжковими командами. Значення прапорця df визначає напрям поелементарної обробки в цих операціях: від початку рядка до кінця (df = 0) або, навпаки, від кінця рядка до його початку (df = 1). Для роботи з прапорцем df існують спеціальні команди clf (зняти прапорець df) і std (встановити прапорець df). Застосування цих команд дозволяє встановити прапорець df в стан у відповідності до алгоритму і забезпечити автоматичне збільшення або зменшення лічильників при виконанні операцій з рядками;

- 5 системних прапорців, що керують введенням/виведенням, маскованими перериваннями, налагодженням, переключенням між задачами і віртуальним режимом 8086. Прикладним програмам не рекомендовано модифікувати без необхідності ці прапорці, оскільки в багатьох випадках це призведе до переривання роботи програми.

Покажчик команд. Регістр EIP/IP має розрядність 32/16 бітів і містить зміщення наступної до виконання команди в поточному сегменті команд. Цей регістр безпосередньо не доступний програмісту, але завантаження і зміна його значення здійснюється різними командами керування, до яких відносяться команди умовних і безумовних переходів, виклик процедур і повернення з процедур. Виникнення переривань також приводить до модифікації регістра EIP/IP.

 

2.4.5 Організація оперативної пам‘яті

 

Діапазон значень фізичної адреси залежить від розрядності шини адреси мікропроцесора. Для і486 та Pentium він знаходиться в межах від 0 до 232 –1 (4 Гбайт). Для мікропроцесорів сімейства Р6 (Pentium Pro/ІІ/ІІІ) цей діапазон ширший – від 0 до 236 – 1 (64 Гбайт).

Механізм керування пам‘яттю повністю апаратний. Це означає, що програма не може сама сформувати фізичну адресу пам‘яті на адресній шині. Їй доводиться “грати” за правилами мікропроцесора. Що за правила, ми дізнаємося трохи нижче. Поки що відмітимо, що в кінцевому підсумку цей механізм дозволяє забезпечити:

компактність збереження адреси в машинній команді;

гнучкість механізму адресації;

захист адресних просторів задач в багатозадачній системі;

підтримку віртуальної пам‘яті.

Мікропроцесор апаратно підтримує дві моделі використання оперативної пам‘яті:

- сегментна модель. В цій моделі програмі виділяються неперервні області пам‘яті (сегменти), а сама програма може звертатися тільки до даних, які знаходяться в цих сегментах;

- сторінкова модель. Її можна розглядати як надбудову над сегментною моделлю. У випадку використання цієї моделі оперативна пам‘ять розглядається як сукупність блоків фіксованого розміру (4 Кбайта). Основне застосування цієї моделі пов‘язане з організацією віртуальної пам’яті, що дозволяє операційній системі використовувати для роботи програм більший простір пам‘яті, ніж об‘єм фізичної пам‘яті. Для мікропроцесорів і486 і Pentium розмір можливої віртуальної пам‘яті може досягати 4 Тбайт.

Особливості використання і реалізації цих моделей залежать від режиму роботи мікропроцесора.

Реальний режим. Цей режим, в якому працював і8086. Наявність його в і486 і Pentium обумовлено тим, що фірма Intel прагне забезпечити в нових моделях мікропроцесорів функціонування програм, розроблених для ранніх моделей мікропроцесорів.

Захищений режим. Цей режим дозволяє максимально реалізувати всі архітектурні ідеї, закладені в моделі мікропроцесорів Intel, починаючи з і80286. Програми, розроблені для і8086 (реального режиму) не можуть функціонувати в захищеному режимі. Одна з причин цього пов‘язана саме з особливостями формування фізичної адреси в захищеному режимі.

Режим віртуального 8086. Перехід в цей режим можливий, якщо мікропроцесор вже знаходиться в захищеному режимі. Помітна особливість цього режиму – це можливість одночасної роботи декількох програм, розроблених для і8086. Незважаючи на те що мікропроцесор знаходиться в захищеному режимі, в режимі віртуального і8086 можлива робота програм реального режиму. Це пояснюється тим, що процес формування фізичної адреси для цих програм здійснюється за правилами реального режиму.

Режим системного керування. Це новий режим роботи мікропроцесора, вперше з’явився в мікропроцесорі Pentium. Він забезпечує операційну систему механізмом для виконання машинно-залежних функцій, таких як переведення комп‘ютера в режим пониженого енергоспоживання або виконання дій для захисту системи. Для переходу в даний режим мікропроцесор повинен отримати спеціальний сигнал SMI – від удосконаленого програмованого контролера переривань APIC (Advanced Programmable Interrupt Controller), при цьому зберігається стан обчислювального середовища мікропроцесора. Функціонування мікропроцесора в цьому режимі подібне до його роботи в режимі реальних адрес. Повернення в цей режим здійснюється спеціальною командою мікропроцесора.

 

© 2013 wikipage.com.ua - Дякуємо за посилання на wikipage.com.ua | Контакти