Теорія операційної системи

:: Меню ::

Головна
Представлення даних в обчислювальних системах
Машинні мови
Завантаження програм
Управління оперативною пам'яттю
Сегментна і сторінкова віртуальна пам'ять
Комп'ютер і зовнішні події
Паралелізм з точки зору програміста
Реалізація багатозадачності на однопроцесорних комп'ютерах  
Зовнішні пристрої
Драйвери зовнішніх пристроїв
Файлові системи
Безпека
Огляд архітектури сучасних ОС

:: Друзі ::

Карта сайту
 

:: Статистика ::

 

 

 

 

 

Знакомства для брака и создания семьи
 

Адресація оперативної пам'яті

З точки зору процесора, оперативна пам'ять є масивом пронумерованих вічок. Номер кожного елементу пам'яті називається її адресою. Розрядність адреси є одній з найважливіших характеристик процесора і системи команд, що реалізовується ним. Розрядність важлива не як самоціль, а тому, що нею обумовлений об'єм пам'яті, що адресується, — адресного простору. Системи з 16-розрядним адресою здатні адресувати 64 Кбайт (65 536) елементів пам'яті, а з 32-розрядним — 4 Гбайт (4 294 967 296) вічок. Пам'ять, що у наш час адресується, в 4 Гбайт для багатьох застосувань вважається неприйнятний маленькою і потрібний 64-розрядна адресація.
Процесору зазвичай доводиться здійснювати арифметичні операції над адресами, тому розрядність адреси в сучасних процесорів зазвичай збігається з розрядністю основного АЛУ.
В деяких комп'ютерів адресація (нумерація) елементів пам'яті фіксована: один і той же елемент пам'яті завжди має один і той же номер. Така адресація називається фізичною. Адреса при цьому розбита на бітові поля, які безпосередньо використовуються як номер фізичної мікросхеми пам'яті, і номери рядка і стовпця в цій мікросхемі. Навпаки, більшість сучасних процесорів спільного призначення використовують віртуальну адресацію коли номер конкретного елементу пам'яті визначається не фізичним розміщенням цього вічка, а контекстом, в якому відбувається адресація. Способи реалізації віртуальної пам'яті і необхідність її вживання обговорюються в главі 5.
У старих комп'ютерах розмір елементу пам'яті даних, що адресується, збігався з розрядністю АЛУ центрального процесора і розрядністю шини даних. Вічко, що адресується, називалося словом. У процесорах манчестерської архітектури, які можуть використовувати одну і ту ж пам'ять як для команд, так і для даних, обидва розміри визначалися довжиною команди. Через це багато процесорів такого типа мали дивні по сучасних представленнях розрядності — 48, 36, інколи навіть 25 біт.

БЕСМ-6
Так, БЕСМ-6 мала слово розрядністю 48 біт і команди завдовжки 24 біта, що складалися з 15-розрядного адресного поля і 9-розрядного коди операції. Адресне поле дозволяло адресувати 32к слів. У одному слові розміщувалися дві команди, при цьому команди переходу могли вказувати лише на першу з упакованих в одне слово команд.

В процесорів гарвардської архітектури (що мають роздільні пам'яті для команд і даних) розрядність АЛУ і розмір команди не зв'язані.

Microchip PIC
Мікроконтроллери сімейства PIC фірми Microchip мають 8-розрядне АЛУ і накрісталльноє ОЗУ тієї ж розрядності [www.microchip.com Picmicro]. Команди цих мікроконтроллерів розміщуються в ПЗП (також накрісталльном), в якому кожне слово має 12 біт і містить одну команду. Аналогічно БЕСМ-6, команда мікроконтроллера складається з адресного поля (яке може містити як адресу, так і константне значення довжиною 1 байт) і коди операції. Під код операції залишається всього чотири біта, тому команд, що мають повне адресне поле, може бути не більше 16. Адресний простір мікроконтроллера складає 8 біт, тобто всього 256 слів коди і 256 байт даних. Проте за допомогою хитрування, званого банковою адресацією (детальніше про цьому див. в разд. Банки пам'яті), старші моделі сімейства PIC адресують і по декілька кілобайт як коди, так і даних.
Втім, для багатьох цілей і 256 команд цілком достатньо. Найменший в світі Web-сервер [www-ccs.cs.umass.edu] реалізований саме на основі PIC. У 512 слів коди удалося упакувати реалізацію повноцінних підмножин протоколів Rs232 (використана модель мікроконтроллера не має апаратний реалізованого послідовного порту), РРР, Tcp/ip і HTTP. Web-сервер складається з двох мікросхем — власне сервера і кристала флэш-памяти, в якому зберігаються HTML-документы, що експортуються сервером, і зображення. Сервер включається в послідовний порт комп'ютера і отримує живлення від цього порту.
Розробник сервера рекламує його як основу (або, в усякому разі, як демонстрацію технічної можливості) створення Web-интерфейсов для всілякого побутового устаткування.

У сучасних комп'ютерах одиницею адресації є байт — елемент пам'яті розміром 8 біт. При цьому і АЛУ, і шина даних можуть мати велику розрядність (хоча, звичайно, ця розрядність завжди кратна байту -8, 16, 32 або 64 біта). Розрядність АЛУ і шини даних може не збігатися: так, 18088 мав 16-розрядне АЛУ і 8-розрядну шину, Mc68000 і 180386sx — 32-розрядне АЛУ і 16-розрядну шину. Що при цьому розуміється під "словом" - залежить від фантазії виготівників процесора. Наприклад, в цілком 32-розрядного VAX документація називає 16-бітову структуру словом, а 32-бітову — подвійним ілі- довгим словом, хоча, зазвичай, довжиною слова вважається все-таки розрядність АЛУ.
При цьому різні процесори по-різному личать до адресації слів.
По-перше, деякі процесори (Pdp-11, SPARC) забороняють звернення до слів, адреса яких не кратна розміру слова, і генерують при спробах такого звернення виняткову ситуацію помилки шини. Інші процесори, наприклад VAX і х86 такі звернення вирішують, але в документації є чесне запобігання, що звернення до невирівняних слів будуть мінімум в два рази повільніше, ніж до вирівняних (мал. 2.4).

Мал. 2.4. Вирівняні і невирівняні звернення до слів

По-друге, є розбіжності в тому, як слід адресувати (або, як слід інтерпретувати при арифметичних операціях) байти одного слова — за якою адресою знаходяться старші 8 бітів, а по якому — молодші? В одних Процесорів (Ibm/390, Mc68000, SPARC) — старший байт розташовується за меншою адресою (big endian) в інших (VAX, x86) - по більшому (little etidian). Зустрічаються і процесори із змішаним порядком байтів, коли, наприклад, з двох байтів півслова за меншою адресою розташований молодший, а з двох півслів за меншою адресою розташоване старше (мал. 2.5). Деякі сучасні процесори, наприклад POWERPC, MIPS, SPARC V9 можуть працювати і з тим, і з іншим порядком байтів, причому інколи навіть в межах однієї програми.

Мал. 2.5. Порядок байтів в слові

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


:: Реклама ::

 

:: Посилання ::


 

 

 


Copyright © Kivik, 2017