Лекции.Орг


Поиск:




Категории:

Астрономия
Биология
География
Другие языки
Интернет
Информатика
История
Культура
Литература
Логика
Математика
Медицина
Механика
Охрана труда
Педагогика
Политика
Право
Психология
Религия
Риторика
Социология
Спорт
Строительство
Технология
Транспорт
Физика
Философия
Финансы
Химия
Экология
Экономика
Электроника

 

 

 

 


Сегментування пам’яті мікропроцесорами




 

Вхідний контроль:

1 Чи використовують сегментування пам’яті 8-розрядні МП фірми Intel?

2 Поясніть, що є адреса комірки пам’яті?

3 Поясніть, що є вміст комірки пам’яті?

 

Мікропроцесори фірми Intel призначені для роботи, перш за все, у складі комп’ютерів, які працюють у мультизадачному режимі, та у складі багатопроцесорних систем, де усі процесори можуть звертатися до спільного пристрою пам’яті. Найбільш незахищеною підсистемою МПС у такому застосуванні є пам’ять, це і призвело до способу організації пам’яті з кількох сегментів, кожний з яких має своє функціональне призначення: сегмент кодів, сегмент даних, сегмент стека, кілька додаткових сегментів даних залежно від моделі МП. МП І 8086 та І 8088 можуть працювати тільки у так званому реальному режимі, адресуючи 1 Мбайт пам’яті. Мікропроцесорам моделей від І 80286 до Pentium 4 є доступні два режими функціонування − реальний та захищений. Реальний режим дозволяє процесору, навіть якщо це Pentium 4, адресувати також тільки 1 Мбайт пам’яті. При включенні живлення комп’ютера та при його повторному пуску всі моделі мікропроцесорів фірми Intel починають працювати саме у реальному режимі.

Таким чином, МП 8086 адресує пам’ять 1 Мбайт, яка являє собою масив з 220 8-розрядних комірок. У пам’яті можуть зберігатись як байти, так і двобайтові слова. Слова розміщуються у двох сусідніх комірках пам’яті за принципом little endian − старший байт розміщується за старшою адресою, а молодший − за молодшою. Адресою слова вважається адреса його молодшого байта. Організація пам’яті, коли кожній адресі відповідає вміст однієї комірки пам’яті, називається лінійною. У реальному режимі адреса пам’яті є комбінацією сегментної адреси та зміщення − двох логічних адрес. Сегментна адреса, задана одним із сегментних регістрів, визначає початок сегмента пам’яті обсягом 64 кбайт. Зміщення задає положення комірки пам’яті усередині сегмента у байтах відносно до початку сегмента, тобто адресування усередині сегмента є лінійним. Складові лінійної адреси − сегмент та зміщення − часто записують парами через двокрапку: CS:IP, SS:SP.

Розмір сегмента становить 64 кбайти. Сегменти можуть бути суміжними, розділеними, перекриватися повністю або частково.

Початкова адреса, тобто найменша адреса у цьому сегменті, вміщується у відповідні сегментні регістри, може установлюватися робочою програмою та завжди починається з 16-байтової межі, наприклад, 0000 Н, 7000 Н.

Сегментні регістри мають 16 розрядів і доступні програмно через команди пересилань типу MOV та POP. Вони мають цільове призначення і не можуть виконувати функції регістрів загального призначення в арифметичних і логічних операціях.

Сегментний регістр команд CS – керувальний регістр, що вказує сегмент, який вміщує адресу поточно виконуваної команди. Його вміст може бути змінений тільки при виконанні команд переходів, зверненні до підпрограм, поверненні з підпрограм або перериваннях із зазначенням іншого сегмента команд.

Сегментний регістр даних DS – керувальний регістр, що вказує сегмент, який вміщує програмно змінювані таблиці, масиви даних та константи. Така організація, за якої дані групуються разом в окремому сегменті і входять до сегмента, що зберігає коди команд, полегшує програмування. Усі прямі та непрямі засоби адресування даних, що використовують регістри ВХ, SI або DI, визначаються відносно регістра DS.

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

Сегментний регістр додаткового сегмента даних ES, а також сегментні регістри додаткових сегментів у МП І 80386 та старших моделях FS та GS, – керувальні регістри. Вміст цих регістрів вказує на початок області пам’яті, яка зазвичай використовується для запам’ятовування проміжних результатів, тобто робочої області пам’яті. За необхідності використання додаткових сегментних регістрів використовуються команди з префіксом заміни сегмента, наприклад, команда

 

MOV AX,ES:[100]

 

звертається до додаткового сегмента даних, початкова адреса якого знаходиться у регістрі ES.

Вказівник команд ІР – регістр, що виконує роль лічильника команд. Його вміст вказує адресу наступного байта команди у сегменті пам’яті, що визначається вмістом регістра сегмента команд CS. Вміст регістрів ІР та CS однозначно визначає адресу байта в усьому адресному просторі. Вміст регістра ІР можна змінити тільки при виконанні команд переходів, виклику та поверненні з підпрограм та перериваннях.

Мікропроцесор І 8086 є 16-розрядний, з 16-розрядними внутрішніми шинами адрес та даних, 16-розрядними регістрами та АЛП. З метою підвищення частоти функціонування МП, яка обмежується також кількістю виводів ВІС, зовнішня шина адреси AD 0… AD 15 даних є мультиплексована і також 16-розрядна. Окремо є 4 виводи ВІС А 16... А 19, які у багатопроцесорному максимальному режимі дозволяють виводити адресні розряди А 16... А 19 або інформацію про використовуваний у програмі на цей час сегментний регістр (ES, SS, CS, DS) та стан прапорця IF дозволу переривань.

Сегментні регістри мають довжину 16 розрядів, зміщення адреси даного у сегменті відносно початкової адреси сегмента (так звана ефективна або виконавча адреса) має також 16 розрядів, а фізична адреса, тобто адреса комірки пам’яті в єдиному адресному просторі МП системи у реальному режимі, що видається на шину адреси, вміщує 20 розрядів, бо треба адресувати 1 Мбайт пам’яті. Фізична адреса усіх МП сім’ї INTEL у реальному режимі складається з суми вмісту одного з сегментних регістрів, зсунутого вліво на чотири розряди, та ефективної адреси або ІР, SР, ВР (рис. 9.1)

 
 

 


Рисунок 9.1 – Принцип формування 20-розрядної фізичної адреси

 

Формування фізичної адреси в усіх моделях до І 80386 здійснюється за схемою, що подана на рис. 9.2.

Ефективна адреса є сумою вмісту вказаного у команді регістра ВХ, ВР, DІ, SI та поданого безпосередньо у формі числа зміщення, або сумою деякої бази, що зберігається у базовому регістрі ВХ або ВР, вмісту індексного регістра або SI та зміщення.

Перенесення зі старшого біта, яке може виникнути при обчисленні фізичної адреси комірки пам’яті, ігнорується. Це призводить до кільцевої організації пам’яті: за коміркою з максимальною адресою FFFFF йде комірка з нульовою адресою. Аналогічну кільцеву структуру має і кожний сегмент. Таким чином, фізична адреса комірки пам’яті однозначно визначається 20-бітовим числом у діапазоні 0 − FFFFF у просторі пам’яті 1 Мбайт. Коди команд та даних можна вільно розміщувати за будь-якою адресою, що дозволяє економити пам’ять завдяки її ущільненню. Але для підвищення швидкості виконання програми доцільно розміщувати слова даних за парними адресами, тому що МП передає такі слова за один цикл шини. Для передачі слова з непарною адресою потрібні два цикли шини, що знижує продуктивність МП. Шинний інтерфейс ініціює необхідну для вибирання слова кількість звернень до пам’яті автоматично, тобто дворазове звернення до пам’яті не потребує спеціальних вказівок у програмі. Вказівник стека SP треба завжди ініціалізовувати на парну адресу, тому що обмін з пам’яттю відбувається тільки словами. Команди завжди вибираються словами за парними адресами. Виняток становить перша вибірка після передачі керування за непарною адресою, коли вибирається один байт. Вирівнювання команд за парною адресою не впливає на продуктивність МП, тому що при заповненні конвеєра (черги команд) вони поділяються на байти.

 
 

 

 


Рисунок 9.2 – Способи формування фізичної адреси

 

Сегментна організація пам’яті характеризується тим, що програмно доступною є не вся пам’ять, а лише організовані сегменти.

У сучасних 32-розрядних МП розмір сегмента може сягати 4 Гбайт.

У сегментах команд розміщено коди команд і при виконанні програми з цього сегмента інформацію можна тільки зчитувати, що є одним зі способів захисту кодів команд. У решті сегментів розміщуються дані, які у процесі виконання програми можна як зчитувати, так і записувати, тобто сегменти мають різні права доступу, а також різне змістовне призначення. При адресуванні операндів у командах з різними способами адресування не треба вказувати кожного разу вміст відповідного сегментного регістра, а оперувати тільки ефективною адресою, що скорочує команду та економить пам’ять.

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

Оскільки у межах сегмента дані адресуються зміщенням, сегмент можна пересувати у будь-яку область адресного простору без корекції зміщень: програма копіюється як єдиний блок пам’яті у нову область, після чого коректуються значення сегментних регістрів.

Кожна програма може складатись з будь-якої кількості сегментів, але безпосередній доступ без перевантаження сегментних регістрів вона має тільки до сегментів коду, даних, стека та одного додаткового сегмента даних для І8086. Програма ніколи не знає, за якими фізичними адресами будуть розміщені її сегменти, це вирішує операційна система.

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

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

– гнучкість способів адресування;

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

– підтримка віртуальної пам’яті при роботі у захищеному режимі.

Старші моделі МП фірми Intel, починаючи з І 80386, підтримують апаратно кілька моделей використання оперативної пам’яті:

– сегментовану модель;

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

Недоліками сегментної організації пам’яті є:

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

– максимальний розмір сегмента для МП І 8086 становить 64 кбайт;

– сегменти можуть перекриватись з дозволу програміста.

Ці недоліки зумовили застосування захищеного режиму у старших моделях МП.

 






Поделиться с друзьями:


Дата добавления: 2015-10-19; Мы поможем в написании ваших работ!; просмотров: 646 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

Студенческая общага - это место, где меня научили готовить 20 блюд из макарон и 40 из доширака. А майонез - это вообще десерт. © Неизвестно
==> читать все изречения...

2316 - | 2272 -


© 2015-2024 lektsii.org - Контакты - Последнее добавление

Ген: 0.012 с.