Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Курсова робота(Мерзляков).doc
Скачиваний:
17
Добавлен:
23.03.2015
Размер:
1.16 Mб
Скачать

1.4Tlb (Буфер асоціативної трансляції)

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

Якщо для кожної операції роботи з пам'яттю був би потрібний такий етап перекладу адрес, то все працювало б занадто повільно. Тому інженери повернулися до принципу фізичної адресації, додавши невелику кеш-пам'ять безпосередньо на процесор, яка зберігає відповідність для декількох недавно запитаних адрес. Кеш-пам'ять називається Translation Lookaside Buffer (TLB). Intel повністю переробила TLB в новій архітектурі. До цих пір Core 2 використав TLB першого рівня дуже маленького розміру (16 записів), але дуже швидкий і тільки для завантажень, а також більший кеш TLB другого рівня (256 записів), який відповідав за завантаження, відсутні в TLB L1, а також і запису.

Nehalem тепер оснастити повноцінним дворівневим TLB: кеш TLB першого рівня розділений для даних і інструкцій. Кеш TLB L1 для даних може зберігати 64 записи для маленьких сторінок (4K) або 32 записи для великих сторінок (2M/4M), а кеш TLB L1 для інструкцій може зберігати 128 записів для маленьких сторінок (як і у випадку Core2), а також сім для великих. Другий рівень складається з уніфікованого кеша, який може зберігати до 512 записів і працює тільки з маленькими сторінками. Мета такого поліпшення полягає в збільшенні продуктивності додатків, які використовують великі масиви даних. Як і у випадку дворівневої системи передбачення розгалужень, перед нами ще одне свідчення серверної орієнтації архітектури.

Давайте на час повернемося до SMT, оскільки ця технологія теж впливає на TLB. Кеш L1 TLB для даних і TLB L2 динамічно розподіляються між двома потоками. Навпаки, кеш L1 TLB для інструкцій статично розподіляється для малих сторінок, а виділений для великих сторінок повністю копіюється - це цілком зрозуміло, враховуючи його малий розмір (сім записів на потік).

1.5Оптимізований доступ до пам'яті (Unaligned Memory Access)

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

Так, читання з пам'яті, при якому відбувався перехлест двох рядків кеша, сповільнювався приблизно на 12 тактів, в порівнянні з 10 тактами для запису. Інженери Intel оптимізували подібний тип звернень, щоб він виконувався швидше. Почнемо з того, що тепер немає падіння продуктивності при використанні невирівняні інструкцій читання / запису у випадках, коли дані вирівняні в пам'яті. В інших випадках Intel теж оптимізувала доступ, знизивши падіння продуктивності в порівнянні з архітектурою Core.