Що таке "об'єм пам'яті"?


16

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

Я шукав в Google, але не зміг отримати задовільну відповідь.

Було б корисно, якщо хтось дасть більш вичерпне, просте для розуміння пояснення.


Паралелізм рівня пам’яті (MLP) - це можливість здійснювати декілька транзакцій пам'яті одночасно. У багатьох архітектурах це проявляється як здатність виконувати як операцію читання, так і запис одночасно, хоча це також зазвичай існує як можливість виконувати кілька читання одночасно. Рідко виконувати кілька операцій запису одночасно, через ризик можливих конфліктів (намагаються записати два різних значення в одне місце). Зауважте, що це не те саме, що векторизовані операції з пам'яттю, такі як зчитування 4 окремих, але суміжних 8-бітних значень в одному 32-бітовому зчитуванні.
sai kiran grandhi

Відповіді:


11

"Коаліціонування" може також посилатися на об'єднання моделей доступу до пам'яті . У цьому застосуванні коалесценція використовується для того, щоб переконатися, що потоки працюють одночасно, спробуйте отримати доступ до пам'яті, яка знаходиться поруч. Це зазвичай тому, що:

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

Тому важливим є створення програм, які можуть використовувати передбачувані схеми пам'яті. Це ще важливіше з потоковою програмою, щоб запити на пам'ять не перескакували всюди; інакше процесор буде чекати, коли будуть виконані запити на пам'ять.

Діаграми, натхненні введенням у паралельне програмування: Урок 2 Графічне обладнання та графічне моделювання паралельного зв'язку :

Нижче: чотири потоки, з рівномірним доступом до пам'яті. Чорний пунктирний прямокутник являє собою один запит на 4-словну пам'ять.

введіть тут опис зображення

Доступ до пам’яті близький, і їх можна отримати за один перехід / блок (або найменшу кількість запитів).

Однак, якщо ми збільшимо « крок » доступу між потоками, це вимагатиме набагато більше доступу до пам'яті. Внизу: ще чотири нитки, з кроком двох.

4 об'єднані нитки пам’яті та 4 нитки з кроком 2

Тут ви бачите, що для цих 4-х потоків потрібно 2 запиту блоку пам'яті. Чим менший крок, тим краще. Чим ширший крок, тим більше запитів потенційно потрібно.

Звичайно, гірший, ніж великий крок пам'яті, - це випадковий доступ до пам'яті. Це буде майже неможливо прокласти, кешувати або передбачити.

Джерела TikZ:


2
Кілька потоків можуть також отримувати доступ до одного і того ж елементу даних (не лише до елемента в межах одного більшого фрагмента), дещо подібного до (але більш загального, ніж) SPLAT-операцій у архітектурах SIMD. Як процесори пропускної здатності, стійкі до затримки, GPU можуть дозволити собі збільшити затримку доступу, коли це дозволяє збільшити ефективну пропускну здатність.
Пол А. Клейтон

Дане посилання розривається.
Даніель Соутар

3

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


Об'єднання звільнених виділень пам'яті

При розподілі пам’яті іноді у менеджера пам’яті може виникнути ситуація, коли звільняються два сусідніх блоки пам’яті. Поєднання цих місць зробить їх єдиним звільненим блоком пам'яті - це називається "злиттям". Приклад:

Починаючи з 4 виділених блоків:

4 виділені блоки

Пізніше один із них звільнений:

Тепер 1 безкоштовний блок

А пізніше звільняється інше:

Тепер 2 сусідні вільні блоки

Тепер, навіщо мати два сусідні вільні блоки? Об'єднання їх:

Об'єднання звільнених блоків, тепер 2 виділених блоки, 1 звільнений

Злиття може відбуватися, як тільки це можливо, або, наприклад, у сміттєзбірнику, коли колектор працює.

Джерела TikZ:


Я думаю, що ця відповідь не відповідає тому, що я хочу. З'єднання пам'яті - це зчитування суміжних блоків пам'яті, як ви вказали в іншій відповіді. Якщо можливо, видаліть цю відповідь та посилання, яке ви редагували
sai kiran grandhi

@saikirangrandhi Я відповістиму на те, щоб відповісти. Ви можете переглянути / скасувати редагування свого питання, як хочете; ви можете просто натиснути "редагувати" під запитанням.
Realz Slaw
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.