Block-STM trong xử lí song song
Block-STM là một thuật toán song song sử dụng optimistic concurrency control để xử lý giao dịch đồng thời trong hệ thống bộ nhớ dùng chia sẻ (shared-memory systems), phổ biến trong hệ thống đa luồng (multi-threaded systems). Thuật toán này xuất hiện trong lĩnh vực Transactional Memory — đặc biệt là Software Transactional Memory (STM).
🧠 Tóm tắt ý tưởng của Block-STM
- Optimistic: các giao dịch (transactions) chạy đồng thời, không khóa tài nguyên từ đầu.
- Validation & Commit: sau khi thực hiện, mỗi giao dịch sẽ được kiểm tra (validate) xem có bị xung đột không, rồi mới cam kết (commit).
- Block-STM chia các giao dịch theo epoch (khoảng thời gian ngắn), và ưu tiên commit những giao dịch không có xung đột.

📐 Biểu diễn Toán học
Giả sử ta có:
- 
Một tập các transaction: 
- 
Mỗi transaction ( T_i ) thực hiện: - Tập đọc: ( R_i )
- Tập ghi: ( W_i )
 
🎯 Điều kiện không xung đột giữa 2 transaction ( T_i ) và ( T_j ):
Nếu tất cả các điều kiện này thỏa mãn → ( T_i ) và ( T_j ) có thể chạy song song mà không xung đột.
🧮 Ví dụ cách tính với 3 transaction
Giả sử có:
- 
Biến chung: x,y,z
- 
Giao dịch: T1: Read(x), Write(y) T2: Read(y), Write(z) T3: Read(z), Write(x)
➕ Tập đọc/ghi:
- ( R_1 = {x}, W_1 = {y} )
- ( R_2 = {y}, W_2 = {z} )
- ( R_3 = {z}, W_3 = {x} )
➕ Kiểm tra xung đột:
- 
( T1 ) vs ( T2 ): 
 ( W_1 \cap R_2 = {y} \Rightarrow ) có xung đột
 → Không thể song song
- 
( T2 ) vs ( T3 ): 
 ( W_2 \cap R_3 = {z} \Rightarrow ) có xung đột
 → Không thể song song
- 
( T1 ) vs ( T3 ): 
 ( R_1 \cap W_3 = {x} \Rightarrow ) có xung đột
 → Không thể song song
✅ Kết luận:
Cả 3 transaction có liên hệ tuần hoàn (circular conflict). Block-STM sẽ phải chia thành nhiều epoch (hoặc batch) để tuần tự commit, tránh xung đột.
📊 Biểu đồ Epoch Execution
Epoch 1: T1  
Epoch 2: T2  
Epoch 3: T3
🚀 So sánh với khóa (locking)
| Thuộc tính | Locking | Block-STM | 
|---|---|---|
| Cạnh tranh tài nguyên | Cao | Thấp | 
| Song song | Hạn chế (do lock) | Tối đa (đến khi commit) | 
| Rollback | Không (trừ deadlock) | Có thể rollback nếu xung đột | 
| Độ phức tạp | Dễ hiểu | Cao hơn | 
🧠 Ứng dụng thực tế
Block-STM thường dùng trong:
- Runtime của ngôn ngữ có hỗ trợ STM (Haskell, Clojure…)
- Multi-threaded simulations
- Game engines (xử lý vật lý, AI hành vi song song)
- Blockchain (xử lý smart contract song song như trong Aptos, Sui...)
All rights reserved
 
  
 