Langsung ke konten

Arsip

Memory Ordering

4 artikel
Teknologi 19 Sep 2026 5 min read

Write MMIO Posted PCIe Dapat Bertahan Setelah Store CPU Selesai

CPU dapat menyelesaikan store MMIO sebelum PCIe Memory Write yang terkait mencapai perangkat target. Jarak ini muncul karena request PCIe Memory Write bersifat posted: requester mengirimkannya tanpa menunggu paket completion dari completer. Sifat tersebut membantu throughput, tetapi juga membentuk batas penting. Store instruction yang telah selesai dari sisi software, ordering barrier, dan pengamatan write oleh perangkat bukan otomatis merupakan event yang sama. PCIe Memory Write adalah transaksi posted PCIe mengklasifikasikan Memory Write sebagai posted request. Posted request tidak memiliki Completion TLP normal yang kembali untuk menyatakan keberhasilan kepada requester. Setelah host bridge menerima write MMIO dari CPU, transaksi dapat terus bergerak melalui buffer dan tahap interconnect meski prosesor sudah melanjutkan eksekusi.

Rekayasa Perangkat Lunak 19 Sep 2026 6 min read

Sequence Counter Mendeteksi Write Konkuren Tanpa Lock pada Reader

Sequence counter dapat memungkinkan reader menyalin shared state tanpa mengambil lock milik writer. Reader mengambil nilai counter, menyalin field yang dilindungi, lalu mengambil nilai counter sekali lagi. Nilai genap yang sama pada kedua observasi menandakan tidak ada writer yang overlap dengan proses penyalinan berdasarkan kontrak sinkronisasi. Nilai yang berubah atau ganjil memaksa reader membuang snapshot dan mengulang operasi. Pola ini memindahkan pekerjaan dari kepemilikan lock pada sisi reader, tetapi tidak menghapus sinkronisasi. Writer tetap memerlukan serialisasi, transisi counter memerlukan semantik memory ordering yang terdefinisi, dan data yang dilindungi harus tetap aman diakses selama write yang overlap. Constraint tersebut membuat sequence counter cocok untuk sebagian snapshot yang dominan dibaca, tetapi tidak aman untuk data yang lifetime-nya dapat berakhir saat reader masih mengaksesnya.

Teknologi 19 Sep 2026 4 min read

Memori Perangkat Write-Combining Dapat Menggabungkan Store CPU Sebelum I/O

Memori Perangkat Write-Combining Dapat Menggabungkan Store CPU Sebelum I/O Serangkaian store CPU ke memori perangkat tidak selalu berubah menjadi rangkaian transaksi bus yang identik. Pada mapping write-combining, prosesor dapat menampung store yang berdekatan lalu mengirimkannya sebagai transfer yang lebih besar. Perilaku ini cocok untuk framebuffer dan region perangkat lain yang dirancang menerima penulisan blok, tetapi asumsi tentang ordering dan bentuk transaksi menjadi lebih terbatas. Linux menyediakan kelas mapping ini melalui antarmuka seperti ioremap_wc(). Semantiknya berbeda dari mapping ioremap() default yang digunakan untuk control register biasa.

Rekayasa Perangkat Lunak 19 Sep 2026 6 min read

Linux membarrier Memindahkan Biaya Memory Ordering ke Thread Koordinator

Sebuah runtime concurrent dapat menjalankan ribuan operasi fast path untuk setiap transisi state langka yang membutuhkan koordinasi global. Menempatkan full memory barrier pada setiap fast path membuat seluruh operasi membayar biaya transisi yang jarang terjadi itu. Linux membarrier() mendukung susunan sebaliknya: thread koordinator masuk ke kernel dan memaksakan titik ordering yang terdefinisi pada sekumpulan thread target, sehingga biaya yang lebih besar berpindah ke sisi protokol yang jarang dijalankan. Mekanisme ini bukan pengganti umum untuk atomic, mutex, atau memory model bahasa pemrograman. Ini adalah antarmuka kernel Linux dengan jaminan yang berlaku pada akses memory dan thread target berdasarkan command tertentu. Penggunaan yang benar memerlukan protokol yang sudah menentukan akses mana yang terjadi sebelum dan sesudah titik koordinasi.