Pertama, ini benar, bukan? Saya merasa bahwa membaca akan selalu lebih cepat dari menulis, juga orang ini di sini melakukan beberapa eksperimen untuk "membuktikan" itu. Dia tidak menjelaskan mengapa, hanya menyebutkan "masalah caching". (dan eksperimennya tampaknya tidak khawatir tentang pengambilan awal)
Tapi saya tidak mengerti kenapa. Jika itu penting, mari kita asumsikan kita sedang berbicara tentang arsitektur Nehalem (seperti i7) yang memiliki cache L1, L2 untuk setiap core dan kemudian cache L3 inklusif bersama.
Mungkin ini karena saya tidak mengerti dengan benar bagaimana membaca dan menulis bekerja, jadi saya akan menulis pemahaman saya. Tolong beritahu saya jika ada sesuatu yang salah.
If I read some memory, following steps should happen: (assume all cache misses)
1. Check if already in L1 cache, miss
2. Check if in L2 cache, miss
3. Check if in L3 cache, miss
4. Fetch from memory into (L1?) cache
Tidak yakin tentang langkah terakhir. Apakah data meresap ke dalam cache, artinya dalam hal cache miss memory dibaca ke L3 / L2 / L1 terlebih dahulu dan kemudian membaca dari sana? Atau dapatkah "memotong" semua cache dan kemudian cache terjadi secara paralel untuk nanti. (baca = akses semua cache + ambil dari RAM ke cache + baca dari cache?)
Then write:
1. All caches have to be checked (read) in this case too
2. If there's a hit, write there and since Nehalem has write through caches,
write to memory immediately and in parallel
3. If all caches miss, write to memory directly?
Sekali lagi tidak yakin tentang langkah terakhir. Dapatkah menulis dilakukan "mem-bypass" semua cache atau penulisan melibatkan selalu membaca ke dalam cache terlebih dahulu, memodifikasi salinan yang di-cache dan membiarkan perangkat keras write-through benar-benar menulis ke lokasi memori dalam RAM? (menulis = membaca semua cache + mengambil dari RAM ke cache + menulis ke cache, menulis ke RAM secara paralel ==> menulis hampir merupakan superset dari membaca?)