ลองดูสิ่งนี้ด้วยความช่วยเหลือของตัวอย่าง สมมติว่าเรามีแคชที่แมปโดยตรงและใช้นโยบายการเขียนกลับ ดังนั้นเราจึงมีบิตที่ถูกต้องบิตสกปรกแท็กและฟิลด์ข้อมูลในบรรทัดแคช สมมติว่าเรามีการดำเนินการ: เขียน A (โดยที่ A ถูกจับคู่กับบรรทัดแรกของแคช)
สิ่งที่เกิดขึ้นคือข้อมูล (A) จากโปรเซสเซอร์ถูกเขียนไปยังบรรทัดแรกของแคช มีการตั้งค่าบิตบิตและแท็กที่ถูกต้อง บิตสกปรกถูกตั้งค่าเป็น 1
Dirty bit บ่งบอกว่าเป็นบรรทัดแคชที่เคยเขียนไว้ตั้งแต่ถูกนำเข้าสู่แคชครั้งล่าสุด
ตอนนี้สมมติว่ามีการดำเนินการอื่น: อ่าน E (โดยที่ E ถูกแมปกับบรรทัดแคชแรกด้วย)
เนื่องจากเรามีแคชที่แมปโดยตรงบรรทัดแรกจึงสามารถถูกแทนที่ด้วยบล็อก E ซึ่งจะนำมาจากหน่วยความจำ แต่เนื่องจากบล็อกล่าสุดที่เขียนลงในบรรทัด (บล็อก A) ยังไม่ถูกเขียนลงในหน่วยความจำ (ระบุด้วยบิตสกปรก) ดังนั้นตัวควบคุมแคชจะออกการเขียนกลับไปยังหน่วยความจำเพื่อถ่ายโอนบล็อก A ไปยังหน่วยความจำก่อน มันจะแทนที่บรรทัดด้วยบล็อก E โดยการดำเนินการอ่านไปยังหน่วยความจำ ตอนนี้บิตสกปรกถูกตั้งค่าเป็น 0
ดังนั้นนโยบายการเขียนกลับจึงไม่รับประกันว่าบล็อกจะเหมือนกันในหน่วยความจำและบรรทัดแคชที่เกี่ยวข้อง อย่างไรก็ตามเมื่อใดก็ตามที่กำลังจะเปลี่ยนบรรทัดการเขียนกลับจะดำเนินการในตอนแรก
การเขียนผ่านนโยบายเป็นสิ่งที่ตรงกันข้าม ตามนี้หน่วยความจำจะมีข้อมูลที่ทันสมัยอยู่เสมอ นั่นคือถ้าบล็อกแคชถูกเขียนหน่วยความจำก็จะถูกเขียนตามไปด้วย (ไม่ใช้บิตสกปรก)
write back
มีประสิทธิภาพที่ดีขึ้น?