рівні кешу
Кеш центрального процесора розділений на кілька рівнів. Максимальна кількість кешей - чотири. У універсальномпроцессоре в даний час число рівнів може досягати трьох. Кеш-пам'ять рівня N + 1, як правило, більше за розміром і повільніше за швидкістю доступу і передачі даних, ніж кеш-пам'ять рівня N.
Найшвидшим є кеш першого рівня - L1 cache (level 1 cache). По суті, вона є невід'ємною частиною процесора, оскільки розташована на одному з ним кристалі і входить до складу функціональних блоків. У сучасних процесорах зазвичай L1 розділений на два кеша - кеш команд (інструкцій) і кеш даних (Гарвардська архітектура). Більшість процесорів без L1 не можуть функціонувати. L1 працює на частоті процесора, і, в загальному випадку, звернення до нього може проводитися каждийтакт. Найчастіше є можливим виконувати декілька операцій читання / запису одночасно.
Другим за швидкодією є кеш другого рівня - L2 cache, який зазвичай, як і L1, розташований на одному кристалі з процесором. У ранніх версіях процесорів L2 реалізований у вигляді окремого набору мікросхем пам'яті на материнській платі. Обсяг L2 від 128 кбайт до 1-12 Мбайт. В сучасних багатоядерних процесорах кеш другого рівня, перебуваючи на тому ж кристалі, є пам'яттю роздільного користування - при загальному обсязі кеша в nM Мбайт на кожне ядро доводиться по nM / nCМбайта, де nC - кількість ядер процесора.
Кеш третього рівня найменш швидкодіючий, але він може бути дуже великим - понад 24 Мбайт. L3 повільніше попередніх кешей, але все одно значно швидше, ніж оперативна пам'ять. У багатопроцесорних системах знаходиться в загальному користуванні і призначений для синхронізації даних різних L2.
Існує четвертий рівень кеша, застосування якого виправдане тільки для багатопроцесорних високопроізводітельнихсерверов і мейнфреймів. Звичайно він реалізований у вигляді окремої мікросхеми.
31.Сегментная і сторінкова організація доступу до пам'яті.
Сторінкова організація пам'яті (paging) - найбільш поширена стратегія управління пам'яттю, яка використовується практично у всіх операційних системах, при якій:
- логічна пам'ять ділиться на сторінки - суміжні області однакової довжини, зазвичай - ступінь 2 (наприклад, 512 слів);
- фізична пам'ять, відповідно, ділиться на фрейми такого ж розміру;
- розподіл логічної пам'яті відбувається з точністю до сторінки;
- фізична пам'ять процесу може не бути безперервною;
Цілі сторінкової організації - забезпечити можливість не суміжного розподілу фізичної пам'яті для процесів, а також розширити простір логічної пам'яті.
Таким чином, при сторінкової організації будь-який доступ до пам'яті вимагає фактично не одного, а двох звернень в пам'ять - одне в таблицю сторінок, інше - безпосередньо до даних або команді. У цьому - деякий недолік і неефективність сторінкової організації, в порівнянні з більш простими методами управління пам'яттю.
Таблиці сторінок в операційних системах можуть бути по-різному організовані, при збереженні загальних принципів їх використання.


Спільні (спільно використовувані) сторінки - логічні сторінки, що використовуються декількома процесами і мають один і той же номер в таблиці сторінок кожного з процесів. Даний механізм корисний для економії пам'яті, так як дозволяє завантажувати в пам'ять в єдиному екземплярі коли змінювану інформацію, необхідну декільком процесам - наприклад, код і масиви констант.
Сегментна організація пам'яті (segmentation) - схема розподілу пам'яті у вигляді сегментів змінної довжини, відповідна користувальницької трактуванні розподілу пам'яті, тобто логічну структуру програм і даних. З точки зору користувача (розробника програми), програма - це набір модулів коду і даних, кожному з яких повинен відповідати свій сегмент в пам'яті.
Сегмент - логічна одиниця розподілу пам'яті, призначена для розміщення в пам'яті одного модуля програмного коду або даних. Наприклад, у вигляді сегментів пам'яті можуть бути представлені:
набір локальних змінних;
набір глобальних змінних;
загальний блок даних (наприклад, COMMON-блок в мові FORTRAN);
При завантаженні процесу частина сегментів міститься в ОП, а частина на дискової пам'яті. Сегменти однієї програми можна записати в несуміжні ділянки.
Багато принципів архітектури сегментной організації схожі з принципами сторінкової організації, однак у всіх випадках доводиться враховувати, що довжина сегмента змінна, і зберігати її в явному вигляді в таблицях.
де segment-number - номер сегмента, offset - зміщення в сегменті.
Регістр довжини таблиці сегментів - містить число сегментів, що використовується програмою.
Переміщення (relocation) програм і даних при сегментної організації динамічне, тобто виконується під час виконання програми за допомогою таблиці сегментів. Можливий загальний доступ (sharing) кількох процесів до одного і того ж сегменту, тобто підтримується концепція поділюваних сегментів. При цьому логічний номер загального сегмента для різних процесів буде одним і тим же.