แคชของ CPU ถูกล้างกลับไปยังหน่วยความจำหลักเมื่อใด


18

หากฉันมี CPU ที่มีสองคอร์แต่ละคอร์มีแคช L1 ของตัวเองเป็นไปได้หรือไม่ที่ Core1 และ Core2 แคชหน่วยความจำส่วนเดียวกันพร้อมกันหรือไม่
หากเป็นไปได้มูลค่าของหน่วยความจำหลักจะเป็นอย่างไรถ้าทั้ง Core1 และ Core2 ได้แก้ไขค่าในแคชแล้ว?

คำตอบ:


26

หากฉันมี CPU ที่มีสองคอร์แต่ละคอร์มีแคช L1 ของตัวเองเป็นไปได้หรือไม่ที่ Core1 และ Core2 แคชหน่วยความจำส่วนเดียวกันในเวลาเดียวกันได้หรือไม่

ใช่. ประสิทธิภาพจะแย่มากหากไม่ใช่ในกรณีนี้ พิจารณาสองเธรดที่รันโค้ดเดียวกัน คุณต้องการรหัสนั้นทั้งแคช L1

หากเป็นไปได้มูลค่าของหน่วยความจำหลักจะเป็นอย่างไรถ้าทั้ง Core1 และ Core2 ได้แก้ไขค่าในแคชแล้ว?

ค่าเก่าจะอยู่ในหน่วยความจำหลักซึ่งไม่สำคัญเพราะทั้ง CPU จะอ่าน ก่อนที่จะนำค่าที่แก้ไขจากแคชออกจะต้องถูกเขียนลงในหน่วยความจำ โดยปกติแตกต่างจากบางโปรโตคอล MESIถูกนำมาใช้ ในการใช้งานแบบดั้งเดิมของ MESI หากค่าถูกแก้ไขในแคชหนึ่งค่าจะไม่สามารถแสดงได้ในแคชอื่นใดในระดับเดียวกัน


15

ใช่สิ่งนี้ (มีสองแคชแคชในขอบเขตหน่วยความจำเดียวกัน) สามารถเกิดขึ้นได้จริง ๆ แล้วมันเป็นปัญหาที่เกิดขึ้นในทางปฏิบัติมาก มีวิธีแก้ไขปัญหาต่าง ๆ เช่น:

  • แคชทั้งสองสามารถสื่อสารกันเพื่อให้แน่ใจว่าพวกเขาจะไม่เห็นด้วย
  • คุณสามารถมีหัวหน้างานบางประเภทที่คอยตรวจสอบแคชทั้งหมดและอัพเดตให้เหมาะสม
  • โปรเซสเซอร์แต่ละตัวตรวจสอบพื้นที่หน่วยความจำที่แคชไว้และเมื่อตรวจพบการเขียนก็จะส่งแคช (ตอนนี้ไม่ถูกต้อง) ออกไป

ปัญหาที่เรียกว่าแคชการเชื่อมโยงกัน บทความวิกิพีเดียในหัวข้อมีภาพรวมที่ดีของปัญหาและการแก้ปัญหาที่เป็นไปได้


2

ในการตอบคำถามในชื่อเรื่องของคุณขึ้นอยู่กับว่าโปรโตคอลแคชคืออะไร หากเป็นการเขียนกลับแคชจะถูกล้างกลับไปยังหน่วยความจำหลักเท่านั้นเมื่อตัวควบคุมแคชไม่มีทางเลือกนอกจากใส่บล็อกแคชใหม่ในพื้นที่ว่างที่ถูกครอบครองแล้ว บล็อกที่ครอบครองพื้นที่ก่อนหน้านี้จะถูกลบออกและค่าของมันจะถูกเขียนกลับไปยังหน่วยความจำหลัก

โปรโตคอลอื่นคือการเขียนผ่าน ในกรณีนั้นเมื่อใดก็ตามที่แคชบล็อกถูกเขียนในระดับ n บล็อกที่สอดคล้องกันในระดับ (n + 1) จะถูกอัพเดต (คล้ายกับแนวคิดในการกรอกแบบฟอร์มของเราด้วยกระดาษคาร์บอนด้านล่างสิ่งที่คุณเขียนด้านบนจะถูกคัดลอกบนแผ่นด้านล่าง) สิ่งนี้ช้ากว่าเพราะเห็นได้ชัดว่ามันเกี่ยวข้องกับการเขียนมากกว่า แต่ค่าระหว่างแคชมีความสอดคล้องมากกว่า ในรูปแบบการเขียนกลับเฉพาะแคชระดับสูงสุดเท่านั้นที่จะมีค่าที่ทันสมัยที่สุดสำหรับบล็อกหน่วยความจำที่เฉพาะเจาะจง


1
ฉันสงสัยว่าร้อยละของผู้อ่านที่นี่เคยใช้กระดาษคาร์บอน :)
Barmar
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.