- vừa được xem lúc

Block-STM trong xử lí song song

0 0 2

Người đăng: Phan Ngoc

Theo Viblo Asia

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:

    T={T1,T2,...,Tn}T = \{T_1, T_2, ..., T_n\}

  • 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 ):

WiWj=WiRj=RiWj=W_i \cap W_j = \emptyset \\ W_i \cap R_j = \emptyset \\ R_i \cap W_j = \emptyset

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...)

Bình luận

Bài viết tương tự

- vừa được xem lúc

[Blockchain] Road to Bitcoin

. Chắc mọi người hẳn đã không còn xa lạ gì với anh chàng tỷ phú đã ném vỡ cửa kính ô tô nhà mình cùng với siêu năng lực điều khiển vật giá chỉ bằng lời nói, người đã đẩy định giá Bitcoin trên thị trường vượt ngưỡng 50K dolar/coin với những bài twitter để đời . .

0 0 66

- vừa được xem lúc

Khi Ethereum có chi phí giao dịch quá đắt đỏ - Tương lai cho layer2 ?

Với sự phát triển như vũ bão của Blockchain, ETH dường như đang quá tải và hệ quả là chi phí Gas đã lên đến 1000Gwei, phí để tạo những transaction phức tạp đã xấp xỉ 500$ . Và một giải pháp cứu cánh cho các sản phẩm Defi trên ETH chính là Layer2, và trong nhiệm vụ lần này Matic đang thể hiện khả năn

0 0 93

- vừa được xem lúc

Blockchain với Java - Tại sao không?

Cuộc cách mạng công nghiệp 4.0 ra đời kéo theo nhiều sự thay đổi và xu hướng mới được hình thành. Riêng đối với lĩnh vực CNTT cũng không nằm ngoài vùng ảnh hưởng mạnh mẽ. Chính làn sóng 4.

0 0 100

- vừa được xem lúc

Phân loại và tầm quan trọng của các node trong mạng blockchain

Trước khi đi vào phân loại và nêu rõ được tầm quan trọng của các node trọng mạng blockchain thì mình xin được trích dẫn khái niệm về blockchain từ Wikipedia như sau:. .

0 1 73

- vừa được xem lúc

Code Smart Contract bằng Assembly ?

Introduction. Hồi còn học trong ghế nhà trường bộ môn lập trình tốn nhiều não nhất của mình là code assembly. Nôm na thì bất cứ ngôn ngữ bậc cao nào như C , Go, Java,... được sinh ra để người dễ hiểu và dễ code , tuy nhiên chúng đều sẽ được compiled down xuống assembly một ngôn ngữ bậc thấp để máy h

0 0 64

- vừa được xem lúc

Dextool - Công cụ phân tích Decentralized Exchange tuyệt vời

. Trend Defi mặc dù đã bớt nhiệt nhưng những sản phẩm nổi bật của làn sóng này mang lại thì vẫn rất được người dùng ưa chuộng. Đặc biệt là các nền tảng Decentralized Exchange, tiêu biểu là Uniswap, SushiSwap, 1inch Exchange, FalconSwap,... Nhưng khi đã sử dụng các nền tảng DEx này mà không biết đến

0 0 113