Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
АОС_лабораторний практикум.doc
Скачиваний:
1
Добавлен:
01.07.2025
Размер:
970 Кб
Скачать
☆

Загальні методичні вказівки

Лабораторні роботи з дисципліни “Архітекрура обчислювальних систем” проводяться у лабораторії, оснащеній персональними комп’ютерами під операційною системою Windows.

До початку лабораторної роботи студент має підготувати протокол даної роботи, який має містити назву, мету, завдання, теоретичну частину даної роботи й текст програми. Перед виконанням роботи студент обов’язково має отримати допуск у викладача.

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

Захист і оцінювання лабораторної роботи має відбуватися по завершенню виконання роботи в кінці навчальної пари. Оцінювання лабораторної роботи здійснюється за теоретичними знаннями, які набувають студенти під час виконання роботи.

Для зарахування роботи студент має представити звіт, оформлений за такимим вимогами:

  1. Назва лабораторної роботи.

  2. Індивідуальне завдання.

  3. Теоретична частина необхідна для виконання індивідуального завдання.

  4. Тексти програм.

  5. Таблиця результатів розрахунку на ЕОМ.

Зауваження: Пункти 1-4 звіту, а також таблиця пункту 5 без чисельних результатів мають бути оформлені до початку виконання лабораторної роботи.

За невчасне виконання роботи або здачу звіту оцінка знижується.

ЛАБОРАТОРНА РОБОТА №1

ОРГАНІЗАЦІЯ ПАМ'ЯТІ ОБЧИСЛЮВАЛЬНОЇ СИСТЕМИ

    1. Мета роботи

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

Триваліть роботи – 2 години

1.2 Теоретичні відомості

Організація підсистеми пам'яті в ПК

Запамятовуючі пристрої (ЗП) підсистеми пам'яті ПК можна розглядати в такій ієрархії (таблиця. 1.1):

Таблиця 1.1 - Ієрархія підсистеми пам'яті ПК

Тип ЗП

Час вибірки

Типовий об'єм

Надоперативні ЗП (регістри)

0,01 -1 нс

32/64/128 біт

Швидкодіючі буферні ЗП (кеш)

0,5 - 2 нс

32Кб 1Мб

Оперативні (основні) ЗП

2 нс - 20 нс

128Мб - 4Гб

Зовнішні ЗП (масова пам'ять)

5 - 20 мс

1Гб - 0,5Тб

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

Кеш використовується для узгодження швидкості роботи ЦП і основної пам'яті. У обчислювальних системах використовують багаторівневий кеш: кеш I рівня (L1), кеш II рівня (L2) і так далі У настільних системах зазвичай використовується дворівневий кеш, в серверних - трирівневий. Кеш зберігає команди або дані, які з великою вірогідністю найближчим часом поступлять процесору на обробку. Робота кеш-пам'яті прозора для програмного забезпечення, тому кеш-пам'ять зазвичай програмно недоступна.

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

Кожному елементу оперативної пам'яті присвоєна унікальна адреса. Організаційні методи розподілу пам'яті надають програмістам можливість ефективного використання всієї комп'ютерної системи. До таких методів відносять суцільну ("плоску") модель пам'яті і сегментовану модель пам'яті. При використанні суцільної моделі (flat model) пам'яті програма оперує єдиним безперервним адресним простором лінійним адресним простором, в якому елементи пам'яті нумеруються послідовно і безперервно від 0 до 2n-1, де n - розрядність ЦП за адресою. При використанні сегментованої моделі (segmented model) для програми пам'ять представляється групою незалежних адресних блоків, званих сегментами. Для адресації байта пам'яті програма повинна використовувати логічну адресу, що складається з селектора сегменту і зсуву. Селектор сегменту вибирає певний сегмент, а зсув вказує на конкретну клітинку в адресному просторі вибраного сегменту.

Організаційні методи розподілу пам'яті дозволяють організувати обчислювальну систему, в якій робочий адресний простір програми перевищує розмір фактично наявної в системі оперативної пам'яті, при цьому недолік оперативної пам'яті заповнюється за рахунок зовнішньої повільнішої або дешевшій пам'яті (вінчестер, флэш-память і тому подібне) Таку концепцію називають віртуальною пам'яттю. При цьому лінійний адресний простір може відображувати на простір фізичних адрес або безпосередньо (лінійна адреса є фізична адреса), або за допомогою механізму сторінкової трансляції. У другому випадку лінійний адресний простір ділиться на сторінки однакового розміру, які складають віртуальну пам'ять. Сторінкова трансляція забезпечує відображення необхідних сторінок віртуальної пам'яті у фізичний адресний простір.

Окрім реалізації системи віртуальної пам'яті зовнішні ЗУ використовуються для довготривалого зберігання програм і даних у вигляді файлів.

Кеш-пам'ять

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

Якщо ЦП звернувся до якого-небудь об'єкту оперативної пам'яті, з високою часткою ймовірності ЦП незабаром знову звернеться до цього об'єкту. Прикладом цієї ситуації може бути код або дані в циклах. Ця концепція описується принципом тимчасової локальності, відповідно до якого часто використовувані об'єкти оперативної пам'яті мають бути "ближче" до ЦП (у кеші).

Для узгодження вмісту кеш-пам'яті і оперативної пам'яті використовують три методи запису:

  • наскрізний запис (write through) - одночасно з кеш-пам'яттю оновлюється оперативна пам'ять.

  • наскрізний запис (buffered write through), що буферизує, - інформація затримується в кеш-буфері перед записом в оперативну пам'ять і переписується в оперативну пам'ять в ті цикли, коли ЦП до неї не звертається.

  • зворотний запис (write back) - використовується біт зміни в полі тега, і рядок переписується в оперативну пам'ять лише в тому випадку, якщо біт зміни дорівнює 1.

Як правило, всі методи запису, окрім крізної, дозволяють для збільшення продуктивності відкладати і групувати операції запису в оперативну пам'ять.

У структурі кеш-пам'яті виділяють двох типів блоків даних:

  • пам'ять відображення даних (власне самі дані, що дублюються з оперативної пам'яті);

  • пам'ять тегів (ознаки, вказуючі на розташування кешированих даних в оперативній пам'яті).

Простір пам'яті відображення даних в кеші розбивається на рядки - блоки фіксованої довжини (наприклад, 32, 64 або 128 байт). Кожен рядок кеша може містити безперервний вирівняний блок байт з оперативної пам'яті. Який саме блок оперативної пам'яті відображує на даний рядок кеша, визначається тегом рядки і алгоритмом відображення. По алгоритмах відображення оперативної пам'яті в кеш виділяють трьох типів кеш-пам'яті:

  • повністю асоціативний кеш;

  • кеш прямого відображення;

  • множинний асоціативний кеш.

Для повністю асоціативного кеша характерний, що кеш-контролер може помістити будь-який блок оперативної пам'яті в будь-який рядок кеш-пам'яті (рис. 1.1). В цьому випадку фізична адреса розбивається на дві частини: зсув в блоці (рядку кеша) і номер блоку. При приміщенні блоку в кеш номер блоку зберігається в теге відповідного рядка. Коли ЦП звертається до кеша за необхідним блоком, кеш-промах буде виявлений лише після порівняння тегов всіх рядків з номером блоку.

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

Рисунок 1.1 - Повністю асоціативний кеш 8х8 для 10-бітової адреси

Альтернативний спосіб відображення оперативної пам'яті в кеш - це кеш прямого відображення (або одновходовий асоціативний кеш). В цьому випадку адреса пам'яті (номер блоку) однозначно визначає рядок кеша, в який буде поміщений даний блок. Фізична адреса розбивається на три частини: зсув в блоці (рядку кеша), номер рядка кеша і тег. Той або інший блок завжди поміщатиметься в строго визначений рядок кешу, при необхідності замінюючи собою що зберігається там інший блок. Коли ЦП звертається до кешу за необхідним блоком, для визначення вдалого звернення або кеш-промаху досить перевірити тег лише одного рядка.

Очевидними перевагами даного алгоритму є простота і дешевизна реалізації. До недоліків слід віднести низьку ефективність такого кеша через вірогідні часті перезавантаження рядків. Наприклад, при зверненні до кожного 64-го вічка пам'яті в системі на рисунку.1.2 кеш-контролер буде вимушений постійно перенавантажувати один і той же рядок кеш-пам'яті, абсолютно не задіявши останні.

Рисунок 1.2 - Кеш прямого відображення 8х8 для 10-бітової адреси

Компромісним варіантом між першими двома алгоритмами є множинний асоціативний кеш або частково-асоціативний кеш (рис. 1.3). При цьому способі організації кеш-пам'яті рядки об'єднуються в групи, в які можуть входити 2, 4, : рядків. Відповідно до кількості рядків в таких групах розрізняють 2-входовый, 4-входовий і т.д. асоціативний кеш. При зверненні до пам'яті фізична адреса розбивається на три частини: зсув в блоці (рядку кеша), номер групи (набору) і тег. Блок пам'яті, адреса якого відповідає певній групі, може бути розміщений в будь-якому рядку цієї групи, і в тезі рядка розміщується відповідне значення. Вочевидь, що в рамках вибраної групи дотримується принцип асоціативності. З іншого боку, той або інший блок може попасти лише в строго певну групу, що перекликається з принципом організації кеша прямого відображення. Для того, щоб процесор зміг ідентифікувати кеш-промах, йому треба буде перевірити теги лише однієї групи (2/4/8/: рядків).

Даний алгоритм відображення поєднує перевагияк повністю асоціативного кеша (хороша утилізація пам'яті, висока швидкість), так і кешу прямого доступу (простота і дешевизна), лише трохи поступаючись по цих характеристиках вихідним алгоритмам. Саме тому множинний асоціативний кеш є найбільш поширеним (таблиця. 1.2).

Рисунок 1.3 - Двохвходовий асоціативний кеш 8х8 для 10-бітової адреси

Таблиця 1.2 - Характеристики підсистеми кеш-пам'яті в ЦП IA-32

Intel486

Pentium

Pentium MMX

P6

Pentium 4

L1 кеш команд

Тип

4-вх. асоц.

2-вх. асоц.

4-вх. асоц.

4-вх. асоц.

8-вх. асоц.

Розмір рядка, байт

16

32

32

32

-

Загальний об'єм, Кбайт

8/16

8

16

8/16

12Кmops

L1 кеш даних

Тип

Загальний з кеш інструкцій

2-вх. асоц.

4-вх. асоц.

2/4-вх. асоц.

4-вх. асоц.

Розмір рядка, байт

32

32

32

64

Загальний об'єм, Кбайт

8

16

8/16

8

Продовження таблиці 1.2

L2 кеш

Тип

Зовнішній

зовнішній 4-вх. асоц.

4-вх. асоц.

8-вх. асоц.

Розмір рядка, байт

32

32

64

Загальний об'єм, Кбайт

256/512

128-2048

256/512

Примітки: У Intel-486 використовується єдиний кеш команд і даних першого рівня. У Pentium Pro L1 кеш даних - 8 Кбайт 2-входовый асоціативний, в останніх моделях P6 - 16 Кбайт 4-входовый асоціативний. У Pentium 4 замість L1 кеша команд використовується L1 кеш мікрооперацій (кеш траси).

Для організації кеш-пам'яті можна використовувати принстонскую архітектуру (змішаний кеш для команд і даних, наприклад, в Intel-486). Це очевидне (і неминуче для нейманівських для фону систем із зовнішньою по відношенню до ЦП кеш-пам'яттю) рішення не завжди буває найефективнішим. Розділення кеш-пам'яті на кеш команд і кеш даних (кеш гарвардської архітектури) дозволяє підвищити ефективність роботи кеша:

  • багато сучасних процесорів мають конвеєрну архітектуру, при якій блоки конвеєра працюють паралельно. Таким чином, вибірка команди і доступ до даних команди здійснюється на різних етапах конвеєра, а використання роздільної кеш-пам'яті дозволяє виконувати ці операції паралельно.

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

Саме тому всі останні моделі IA-32, починаючи з Pentium, для організації кеш-пам'яті першого рівня використовують гарвардську архітектуру.

Критерієм ефективної роботи кеша можна вважати зменшення середнього часу доступу до пам'яті в порівнянні з системою без кеш-пам'яті. В тоді середній час доступу можна оцінити таким чином:

Tср = (Thit x Rhit) + (Tmiss x (1 / Rhit)),

де Thit - час доступу до кеш-пам'яті в разі попадання (включає час на ідентифікацію промаху або попадання), Tmiss - час, необхідне на завантаження блоку з основної пам'яті в рядок кеша в разі кеш-промаху і подальшу доставку запитаних даних в процесор, Rhit - частота попадань.

Вочевидь, що чим ближче значення Rhit до 1, тим ближче значення Tср до Thit. Частота попадань визначається в основному архітектурою кеш-пам'яті і її об'ємом. Вплив наявності і відсутності кеш-пам'яті і її об'єму на зростання продуктивності ЦП показаний в таблиці. 1.3.

Таблиця 1.3 - Розмір і ефективність кеш-пам'яті

Розмір кеш-пам'яті

Частота попадань %

Зростання продуктивності %

Немає кеш-пам'яті, DRAM з 2 TW

-

0

16 Кб

81

35

32 Кб

86

38

64 Кб

88

39

128 Кб

89

39

Немає кеш-пам'яті, SRAM без TW

-

47