หากฉันมี CPU ที่มีสองคอร์แต่ละคอร์มีแคช L1 ของตัวเองเป็นไปได้หรือไม่ที่ Core1 และ Core2 แคชหน่วยความจำส่วนเดียวกันพร้อมกันหรือไม่
หากเป็นไปได้มูลค่าของหน่วยความจำหลักจะเป็นอย่างไรถ้าทั้ง Core1 และ Core2 ได้แก้ไขค่าในแคชแล้ว?
หากฉันมี CPU ที่มีสองคอร์แต่ละคอร์มีแคช L1 ของตัวเองเป็นไปได้หรือไม่ที่ Core1 และ Core2 แคชหน่วยความจำส่วนเดียวกันพร้อมกันหรือไม่
หากเป็นไปได้มูลค่าของหน่วยความจำหลักจะเป็นอย่างไรถ้าทั้ง Core1 และ Core2 ได้แก้ไขค่าในแคชแล้ว?
คำตอบ:
หากฉันมี CPU ที่มีสองคอร์แต่ละคอร์มีแคช L1 ของตัวเองเป็นไปได้หรือไม่ที่ Core1 และ Core2 แคชหน่วยความจำส่วนเดียวกันในเวลาเดียวกันได้หรือไม่
ใช่. ประสิทธิภาพจะแย่มากหากไม่ใช่ในกรณีนี้ พิจารณาสองเธรดที่รันโค้ดเดียวกัน คุณต้องการรหัสนั้นทั้งแคช L1
หากเป็นไปได้มูลค่าของหน่วยความจำหลักจะเป็นอย่างไรถ้าทั้ง Core1 และ Core2 ได้แก้ไขค่าในแคชแล้ว?
ค่าเก่าจะอยู่ในหน่วยความจำหลักซึ่งไม่สำคัญเพราะทั้ง CPU จะอ่าน ก่อนที่จะนำค่าที่แก้ไขจากแคชออกจะต้องถูกเขียนลงในหน่วยความจำ โดยปกติแตกต่างจากบางโปรโตคอล MESIถูกนำมาใช้ ในการใช้งานแบบดั้งเดิมของ MESI หากค่าถูกแก้ไขในแคชหนึ่งค่าจะไม่สามารถแสดงได้ในแคชอื่นใดในระดับเดียวกัน
ใช่สิ่งนี้ (มีสองแคชแคชในขอบเขตหน่วยความจำเดียวกัน) สามารถเกิดขึ้นได้จริง ๆ แล้วมันเป็นปัญหาที่เกิดขึ้นในทางปฏิบัติมาก มีวิธีแก้ไขปัญหาต่าง ๆ เช่น:
ปัญหาที่เรียกว่าแคชการเชื่อมโยงกัน บทความวิกิพีเดียในหัวข้อมีภาพรวมที่ดีของปัญหาและการแก้ปัญหาที่เป็นไปได้
ในการตอบคำถามในชื่อเรื่องของคุณขึ้นอยู่กับว่าโปรโตคอลแคชคืออะไร หากเป็นการเขียนกลับแคชจะถูกล้างกลับไปยังหน่วยความจำหลักเท่านั้นเมื่อตัวควบคุมแคชไม่มีทางเลือกนอกจากใส่บล็อกแคชใหม่ในพื้นที่ว่างที่ถูกครอบครองแล้ว บล็อกที่ครอบครองพื้นที่ก่อนหน้านี้จะถูกลบออกและค่าของมันจะถูกเขียนกลับไปยังหน่วยความจำหลัก
โปรโตคอลอื่นคือการเขียนผ่าน ในกรณีนั้นเมื่อใดก็ตามที่แคชบล็อกถูกเขียนในระดับ n บล็อกที่สอดคล้องกันในระดับ (n + 1) จะถูกอัพเดต (คล้ายกับแนวคิดในการกรอกแบบฟอร์มของเราด้วยกระดาษคาร์บอนด้านล่างสิ่งที่คุณเขียนด้านบนจะถูกคัดลอกบนแผ่นด้านล่าง) สิ่งนี้ช้ากว่าเพราะเห็นได้ชัดว่ามันเกี่ยวข้องกับการเขียนมากกว่า แต่ค่าระหว่างแคชมีความสอดคล้องมากกว่า ในรูปแบบการเขียนกลับเฉพาะแคชระดับสูงสุดเท่านั้นที่จะมีค่าที่ทันสมัยที่สุดสำหรับบล็อกหน่วยความจำที่เฉพาะเจาะจง