"Коаліціонування" може також посилатися на об'єднання моделей доступу до пам'яті . У цьому застосуванні коалесценція використовується для того, щоб переконатися, що потоки працюють одночасно, спробуйте отримати доступ до пам'яті, яка знаходиться поруч. Це зазвичай тому, що:
- Пам'ять зазвичай витягується у великих блоках з оперативної пам'яті.
- Деякі процесорні блоки намагатимуться передбачити майбутні доступ до пам’яті та кеш-пам'ять вперед, при цьому обробляючи старіші частини пам'яті.
- Пам'ять кешується в ієрархії послідовно більше, але повільніших кешів.
Тому важливим є створення програм, які можуть використовувати передбачувані схеми пам'яті. Це ще важливіше з потоковою програмою, щоб запити на пам'ять не перескакували всюди; інакше процесор буде чекати, коли будуть виконані запити на пам'ять.
Діаграми, натхненні введенням у паралельне програмування: Урок 2 Графічне обладнання та графічне моделювання паралельного зв'язку :
Нижче: чотири потоки, з рівномірним доступом до пам'яті. Чорний пунктирний прямокутник являє собою один запит на 4-словну пам'ять.
Доступ до пам’яті близький, і їх можна отримати за один перехід / блок (або найменшу кількість запитів).
Однак, якщо ми збільшимо « крок » доступу між потоками, це вимагатиме набагато більше доступу до пам'яті. Внизу: ще чотири нитки, з кроком двох.
Тут ви бачите, що для цих 4-х потоків потрібно 2 запиту блоку пам'яті. Чим менший крок, тим краще. Чим ширший крок, тим більше запитів потенційно потрібно.
Звичайно, гірший, ніж великий крок пам'яті, - це випадковий доступ до пам'яті. Це буде майже неможливо прокласти, кешувати або передбачити.
Джерела TikZ: