ScholarGate
Asisten

Model Konsistensi Memori

Model konsistensi memori menentukan nilai-nilai yang dapat diamati oleh operasi baca ketika utas-utas konkuren mengakses memori bersama, mendefinisikan jaminan pengurutan yang dapat diandalkan oleh pemrogram.

Temukan Topik dengan PaperMindSegeraFind papers & topics
Tools & resources
Unduh salindia
Learn & explore
VideoSegera

Definition

Model konsistensi memori adalah spesifikasi formal dari nilai-nilai yang dapat dikembalikan oleh operasi baca dalam eksekusi konkuren, menetapkan urutan akses memori yang harus dihormati oleh bahasa, kompiler, dan perangkat keras.

Scope

Topik ini mencakup spektrum model konsistensi mulai dari konsistensi sekuensial hingga model yang longgar dan lemah, relasi happens-before dan jaminan bebas-data-race, pengurutan memori perangkat keras (seperti total store order), dan model memori tingkat bahasa untuk C++ dan Java. Ini membahas mengapa model yang longgar ada, bagaimana fence dan atomik mengembalikan pengurutan, dan bagaimana bernalar secara tepat tentang memori konkuren.

Core questions

  • Pengurutan operasi memori apa yang secara legal dapat diamati oleh suatu program?
  • Mengapa model memori yang longgar ada dan apa yang diizinkannya?
  • Bagaimana jaminan bebas-data-race menyederhanakan penalaran?
  • Bagaimana fence dan operasi atomik menegakkan pengurutan?

Key theories

Konsistensi sekuensial
Lamport mendefinisikan konsistensi sekuensial, di mana eksekusi multiprosesor harus tampak sebagai beberapa interleave tunggal dari operasi yang menghormati urutan program setiap prosesor, model dasar intuitif terkuat.
Konsistensi longgar dan jaminan SC-for-DRF
Adve dan Gharachorloo menjelaskan model yang longgar dan prinsip bahwa program bebas-data-race berperilaku seolah-olah konsisten secara sekuensial, mendamaikan kinerja dengan kemampuan program.
Model memori tingkat bahasa
Manson, Pugh, dan Adve memformalkan model memori Java menggunakan relasi happens-before, mendefinisikan optimisasi apa yang legal dan jaminan apa yang diterima bahkan oleh program yang racy.

Clinical relevance

Karena prosesor multikore dan kompiler pengoptimal mengurutkan ulang operasi memori, model memori bahasa sangat penting untuk menulis kode konkuren yang benar dan portabel. Model ini memberi tahu pemrogram kapan sinkronisasi diperlukan dan mendefinisikan jaminan yang dapat ditawarkan oleh pustaka dan runtime.

History

Lamport memformalkan konsistensi sekuensial pada tahun 1979. Ketika perangkat keras mengadopsi pengurutan yang longgar untuk kinerja, tutorial Adve dan Gharachorloo tahun 1996 mengkodifikasi lanskap model konsistensi dan kerangka kerja bebas-data-race. Desainer bahasa kemudian membangun model memori ke dalam spesifikasi, dengan model memori Java (2005) dan model memori C++11 menetapkan pendekatan modern.

Debates

Semantik program racy
Pertanyaan sulit adalah jaminan apa, jika ada, yang diberikan kepada program yang mengandung data race; model bahasa harus mencegah nilai 'out-of-thin-air' sambil tetap mengizinkan optimisasi kompiler dan perangkat keras yang agresif.

Key figures

  • Leslie Lamport
  • Sarita Adve
  • Kourosh Gharachorloo
  • William Pugh
  • Jeremy Manson

Related topics

Seminal works

  • lamport1979
  • adve1996
  • manson2005

Frequently asked questions

Mengapa tidak semua sistem hanya menggunakan konsistensi sekuensial?
Konsistensi sekuensial melarang banyak optimisasi kompiler dan perangkat keras yang meningkatkan kinerja, sehingga sebagian besar sistem nyata mengadopsi model yang longgar dan menyediakan primitif sinkronisasi untuk memulihkan pengurutan yang lebih kuat hanya jika diperlukan.
Apa itu jaminan bebas-data-race?
Di bawah banyak model memori bahasa, program yang tidak mengandung data race (semua akses yang bertentangan disinkronkan dengan benar) dijamin berperilaku seolah-olah memori konsisten secara sekuensial.

Methods for this concept

Related concepts