ดูของจริงก่อน
เปิด examples/10_dma_cache_sim.c — จำลองหน่วยความจำจริงที่ "DMA" เขียน และ cache ที่ CPU อ่านผ่าน เหมือน Cortex-M55 ที่มี data cache ทายก่อนรัน: บรรทัด frame 2, stale cache: จะพิมพ์ค่าอะไร
gcc -std=c11 -Wall -Wextra -o dma_cache_sim examples/10_dma_cache_sim.c
./dma_cache_sim
DMA เขียน BB ครบแล้ว แต่ CPU ยังเห็น AA เพราะอ่านจากสำเนาใน cache จนกว่าจะ invalidate และบรรทัด frame 3, read too early: แสดงบั๊กอีกแบบ — CPU อ่านตอน DMA เขียนไปครึ่งเดียว ได้ CC ครึ่งหนึ่งกับ BB อีกครึ่ง บั๊กทั้งสองแบบไม่ทำให้โปรแกรมล้ม มันแค่ให้ข้อมูลผิดอย่างเงียบ ๆ