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


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.