Apakah pemahaman saya tentang memori transaksional seperti yang dijelaskan di bawah ini benar?
Saya mencoba memahami TM. Saya telah membaca jawaban Ben di sini dan mencoba memahami beberapa artikel lain di Internet. Saya masih belum yakin apakah saya mengerti dengan benar. Dalam pemahaman saya dalam memori transaksional, utas dapat mengeksekusi transaksi secara paralel. Jika dua (atau lebih) utas mencoba mengakses variabel transaksi yang sama, semua utas kecuali satu akan membatalkan transaksi dan memulai kembali (pada titik tertentu, tidak harus segera). Yang tidak membatalkan memperbarui variabel transaksi.
Jadi secara singkat di TM semua utas berjalan secara paralel dan kami berharap tidak akan ada akses yang tumpang tindih ke variabel transaksional dan jika ada, kami hanya membiarkan satu utas melanjutkan, sementara utas lainnya memutar kembali dan mencoba lagi. Apakah pemahaman tentang TM ini benar?
Jawaban
Itu adalah sinopsis yang cukup bagus. Detailnya cukup berbelit-belit, dan ada kemungkinan bahwa beberapa transaksi tidak dapat diekspresikan dalam monitor TM tertentu; yang berarti Anda mungkin harus menyertakan dua implementasi transaksi Anda - yang optimis dan pesimis.
Cache adalah implementasi yang mendasarinya; ketika Anda membuat referensi transaksional ke memori, cache mencatat hal ini, dan menghasilkan alarm (restart) ketika salah satu referensi tersebut diubah, atau menolak penutupan transaksi jika ada yang telah dimodifikasi.
Jumlah variabel transaksional mungkin harus, secara umum, lebih rendah daripada keterkaitan cache Anda; jika tidak, mereka akan mengeluarkan satu sama lain dari cache, menghasilkan transaksi yang tidak akan pernah bisa diselesaikan.
Bagaimana interupsi berfungsi di tengah-tengah transaksi tetap menjadi masalah terbuka.
Singkatnya, itu adalah ide yang sedikit menarik 20 tahun yang lalu. Karena mendekati kegunaan umum, tampaknya persyaratan perangkat kerasnya berkembang pesat. Ini mungkin lebih berguna untuk menghangatkan iklim dingin daripada mempercepat sistem komputer.