"หลอมรวม" นอกจากนี้ยังสามารถดูได้ที่หลอมรวมรูปแบบการเข้าถึงหน่วยความจำ ในการใช้งานนี้การรวมกันจะใช้เพื่อให้แน่ใจว่าเธรดทำงานพร้อมกันพยายามเข้าถึงหน่วยความจำที่อยู่ใกล้เคียง นี่เป็นเพราะ:
- หน่วยความจำมักจะดึงข้อมูลในบล็อกขนาดใหญ่จาก RAM
- หน่วยประมวลผลบางหน่วยจะพยายามคาดการณ์การเข้าถึงหน่วยความจำในอนาคตและแคชล่วงหน้าในขณะที่ยังประมวลผลส่วนที่เก่ากว่าของหน่วยความจำ
- หน่วยความจำถูกแคชในลำดับชั้นของแคชที่ใหญ่ขึ้น แต่ช้าลงอย่างต่อเนื่อง
ดังนั้นการสร้างโปรแกรมที่สามารถใช้รูปแบบหน่วยความจำที่คาดเดาได้จึงมีความสำคัญ มันมีความสำคัญยิ่งกว่ากับโปรแกรมเธรดดังนั้นการร้องขอหน่วยความจำจะไม่ข้ามไปทั้งหมด มิฉะนั้นหน่วยประมวลผลจะรอการร้องขอหน่วยความจำที่จะปฏิบัติตาม
ไดอะแกรมที่ได้รับแรงบันดาลใจจากความรู้เบื้องต้นเกี่ยวกับการเขียนโปรแกรมแบบขนาน: บทเรียนที่ 2 ฮาร์ดแวร์ GPU และรูปแบบการสื่อสารแบบขนาน :
ด้านล่าง: สี่เธรดพร้อมการเข้าถึงหน่วยความจำแบบเดียวกัน สี่เหลี่ยมประสีดำแสดงถึงคำขอหน่วยความจำ 4 คำเดียว
การเข้าถึงหน่วยความจำใกล้เคียงและสามารถดึงได้ในหนึ่ง go / block (หรือจำนวนคำขอน้อยที่สุด)
อย่างไรก็ตามหากเราเพิ่ม " ก้าวย่าง " ของการเข้าถึงระหว่างเธรดมันจะต้องมีการเข้าถึงหน่วยความจำอีกมากมาย ด้านล่าง: อีกสี่เธรดพร้อมกับสองก้าว
ที่นี่คุณจะเห็นว่า 4 เธรดเหล่านี้ต้องการการร้องขอบล็อกหน่วยความจำ 2 อัน ยิ่งก้าวเล็กลงเท่าไหร่ก็ยิ่งดีเท่านั้น ยิ่งก้าวย่างมากเท่าไหร่ก็ยิ่งต้องการการร้องขอมากเท่านั้น
แน่นอนเลวร้ายยิ่งกว่าก้าวย่างหน่วยความจำขนาดใหญ่เป็นรูปแบบการเข้าถึงหน่วยความจำแบบสุ่ม สิ่งเหล่านี้แทบจะเป็นไปไม่ได้ในการไพพ์แคชหรือทำนาย
แหล่ง TikZ: