- •Розділ 9. Структурна схема ком’ютерів. Стандарти шинного інтерфейсу
- •9.1. Загальні стандарти сучасних комп’ютерів
- •9.2. Структурна схема комп’ютерів
- •9.3. Шинний інтерфейс
- •9.4. Організація функціонування комп’ютерів з магістральною архітектурою
- •Розділ 10. Материнська плата. Центральний процесор
- •10.1. Основні компоненти материнської плати
- •10.2. Характеристики материнської плати
- •10.3. Центральний процесор
- •Розділ 11. Пам’ять комп’ютера
- •11.1. Внутрішня пам'ять
- •11.2. Зовнішня пам'ять
- •11.3. Способи адресації
- •11.4. Доступ до пам'яті
- •Розділ 12. Відеосистема комп’ютера
- •12.1. Характеристики монітора
- •12.2. Відеокарти (відеоадаптери)
- •12.3. Пристрої обробки відеоданих
- •Розділ 13. Аудіосистема ком’пютера
- •13.1. Основні складові звукової карти
- •13.2. Мікрофон
- •13.3. Акустична система
- •Розділ 14. Периферійне обладнання комп’ютера
- •14.1. Клавіатура. Принцип роботи клавіатури
- •14.2. Маніпулятори
- •14.3. Сканер
- •14.4. Принтер
- •Розділ 15. Комп’ютерні мережі
- •15.1. Загальні поняття про комп'ютерні мережі
- •15.2. Класифікація комп'ютерних мереж
- •15.3. Конфігурації мереж
- •15.4. Сервери і робочі станції
- •15.5. Програмне забезпечення і протоколи
- •15.6. Комунікаційне устаткування
- •15.7. Лінії зв’язку
- •15.8. Мережні адаптери і модеми. Типи доступу
- •15.9. Концентратори, комутатори, маршрутизатори
11.3. Способи адресації
Раніше пам'ять була дуже маленькою і для її адресації використовувалися 2 байти (так зване "слово"). Такий підхід дозволяв адресувати 64 Кб пам'яті, і адресація була лінійною – для вказівки адреси використовувалося одне-єдине число. Пізніше, з удосконаленням техніки, виробники зрозуміли, що є можливість підтримувати великі обсяги пам'яті, але для цього потрібно зробити розмір адреси більшим. Для сумісності з вже написаним програмним забезпеченням було вирішено зробити так: адресація тепер двокомпонентна (сегмент і зсув), кожна з яких 16-бітова, а старі програми як використовували одну 16-бітову компоненту, так і продовжують працювати. Фізична адреса в такій моделі обчислюється так: <сегментна адреса > · 16 + <зсув>. Таким чином, модель дозволяє адресувати від 0 до 65 535 · 16 + 65 535 байтів, тобто 1 114 095 байтів, що трохи більше 1 Мб. Одна важлива властивість сегментної адресації: одну і ту ж саму фізичну адресу можна подати різними комбінаціями <сегмент + зсув>. При цьому зсуви можуть вказуватися в процесорних командах як безпосередньо, так і за допомогою змінних і вмісту регістрів, а сегменти вказуються безпосередньо, або для вказівки сегментів використовуються спеціальні 16-бітові сегментні регістри. Спочатку їх було 4: CS, DS, SS, ES (сегмент команд, сегмент даних, сегмент стека, додатковий сегмент).
З появою 32-бітових процесорів завдяки принципу сумісності, якого дотримується Intel як "законодавець" архітектури, сегментну модель було вирішено модифікувати і залишити.
Сегментна частина адреси залишилася 16-бітовою, а ось зсув став 32-бітовим, а також усі регістри, окрім сегментних, стали 32-бітовими. Змінився і принцип обчислення фізичної адреси: сегментна частина ні на що не помножується, а є спеціальна таблиця, адреса і розмір якої відомі процесору. Ця таблиця містить для кожного сегмента стартову адресу. Саме поняття "сегмент" тепер означає деяку область даних, що починається з довільної 32-бітової адреси і що закінчується так само довільною 32-бітовою адресою, а вищезазначена таблиця зберігає дані про ці сегменти – власне стартові адреси і розміри. Елементи цієї таблиці називаються дескрипторами. Порядковий номер дескриптора (нумерація починається з нуля) міститься в полі “Індекс” в селекторі. Значення селектора заздалегідь заноситься до відповідногоо сегментного регістру. Програміст, вказуючи сегмент і зсув, насправді вказує селектор і зсув. 32-бітові процесори мають два режими роботи – реальний і захищений. Стара модель сегментації працює в реальному режимі процесора, а нова – в захищеному. Більшість сучасного програмного забезпечення взагалі не чіпає сегментні регістри – операційна система виділяє один-єдиний сегмент, який починається з нульової адреси і має розмір (232 – 1) байтів (таким чином охоплюючи всю можливу оперативну пам'ять), – і завантажує відповідно регістри CS, DS, SS, ES.
З появою перших версій мультизадачності (на 286-х процесорах фірми Intel зокрема) перед розробниками ПО постала проблема. Оперативної пам'яті стало недостатньо для всіх програм, що повинні виконуватись одночасно. Більш того, не було чіткого механізму розподілу пам'яті між програмами. Використовувались загальні ділянки пам'яті, куди потім будь-яка „недружня” програма могла записати все що завгодно, зіпсувавши дані іншої програми. Це надавало можливості для дії вірусів і інших шкідливих програм. Потрібно було, по-перше, забезпечити повну ізоляцію процесів один від одного, по-друге, реалізувати механізми "підкачки" – скидання невживаних у даний час ділянок пам'яті одного процесу на диск, за рахунок чого звільнялася так необхідна другому процесу оперативна пам'ять. Все це привело до появи механізму сторінкової трансляції.
З появою сторінкової трансляції виникло дві адреси – фізична і віртуальна (або лінійна). Пам'ять (як фізична, так і віртуальна) розбита на рівного розміру блоки – сторінки. Кожна віртуальна сторінка пам'яті фізично зберігається в деякій фізичній сторінці, причому на одну фізичну сторінку можуть у різний час розподілятися різні віртуальні. Найцікавіше те, що програма користується віртуальними адресами і нічого не знає про те, де фізично знаходиться елемент, до якого вона звертається за віртуальною адресою. Власне трансляція (перетворення віртуальної адреси у фізичну) виконується апаратним процесором. Крім того, механізм сторінкової трансляції передбачає можливість реалізації "підкачки".
При сторінковій адресації використовуються таблиці сторінок. Фізично є дворівнева таблиця. Вона містить каталог таблиць сторінок з 1024 рядками. Кожний рядок містить адресу таблиці сторінок. Кожна таблиця сторінок складається з 1024 рядків, що містять кожний інформацію про одну сторінку розміром 4 Кб. Останні процесори дозволяють реалізувати таблицю з одним рівнем – є таблиця сторінок, що містить 1024 рядки, кожний з яких зберігає інформацію про сторінку розміром 4 Мб.
Таким чином, при зверненні до пам'яті використовуються три способи адресації:
лінійна;
сегментна;
сторінкова.
За першим способом адреса є окремим цілочисельним значенням. Обчислення адреси здійснюється за допомогою операції приросту і зменшення. Архітектура мікропроцесора досить складна, та зате зручна, оскільки весь адресний простір використовується як єдине ціле.
При іншому способі адресації адресний простір ділиться на безліч сегментів і називається сегментованим простором. Початковий нульовий сегмент адреси називається базовим. При сегментній адресації адреса подається у вигляді двох цілочисельних величин – номера сегмента і зсуву. При формуванні фізичної адреси підсумовуються коди, які задають адресу сегмента і значення зсуву в заданому сегменті.
При сторінковій організації пам'яті фізична адреса визначається за спеціальними таблицями.
Способи адресації можна класифікувати за наступними характеристиками:
наявністю адресної інформації в команді;
наявністю звернення до оперативної пам'яті;
формуванням адрес елементів пам'яті.
За наявністю адресної інформації в команді розрізняють явну і неявну адресацію. При явній адресації в команді є поле адреси операнда і в ньому заданий адресний код. При неявній адресації в команді відсутнє поле адреси операнда, а адреса визначається кодом операції. Використовування неявної адресації простіше, проте призводить до ускладнення команд процесора і його фізичної реалізації.
За наявністю звернення до оперативної пам'яті використовують наступні способи адресації:
безпосередня адресація;
пряма адресація;
непряма адресація.
При безпосередній адресації операнд розташовується в адресному полі команди. При цьому зменшується час виконання операції, скорочується використовуваний обсяг пам'яті, але виникають труднощі в реалізації цього способу. Використовується для завдання недовгих констант.
При прямій адресації в адресному полі команди вказується адреса операнда. Спосіб малоефективний при адресації до пам'яті великого обсягу. Використовується в поєднанні з іншими методами. Найбільш ефективний при адресації регістрової пам'яті.
При непрямій адресації в полі команди міститься адреса елемента пам'яті, в якому знаходиться не сам операнд, а лише його адреса. Адресація до операнда здійснюється через ланцюжок покажчиків, тому спосіб називається непрямим.
Формування адрес елементів пам'яті можна розділити на абсолютні і відносні. Абсолютні способи формування не вимагають перетворення виконавчого коду. При формуванні відносних адрес відбувається підсумовування кодів бази і зсуву.
