Sự khác biệt giữa tính nhất quán nghiêm ngặt và tính nhất quán tuần tự


8

Tôi hiểu sự nhất quán nghiêm ngặt và tuần tự độc lập khá tốt.

Strict C về cơ bản thực thi thứ tự thực tế trong đó các hướng dẫn chạy trên đồng hồ toàn cầu.

Tính nhất quán tuần tự về cơ bản thực thi lệnh chỉ trên một bộ xử lý.

Tôi đang gặp khó khăn để tập hợp một số tài liệu mặc dù. http://www.cs.nmsu.edu/~pfeiffer/groupes / 573 / notes / consistency.html mô tả tính nhất quán tuần tự như cho phép bộ nhớ 'lag'. Có thể mất thời gian để ghi để truyền trên tất cả các bộ xử lý. Nhưng khi nó làm, nó đạt đến tất cả chúng cùng một lúc là tốt. Do đó, những điều sau đây là hợp lệ theo Tính nhất quán tuần tự

P1:  W(x)1
-----------------------
P2:        R(x)0 R(x)1

Điều tôi quan tâm bây giờ là các quy trình sau, giống như thuật toán của Dekker.

P1:  W(x)1  R(y)0
-----------------
P2:  W(y)1  R(x)0

Điều này chắc chắn KHÔNG nên có thể theo tính nhất quán tuần tự ( http://portal.acm.org/citation.cfm?id=1787234.1787255 pg 2). Không có tổng thứ tự có thể cho kết quả này.

Nhưng nó có ý nghĩa từ ý tưởng rằng tính nhất quán tuần tự cho phép ghi lan truyền chậm và một luồng có thể không có ý tưởng nào về những gì các bộ xử lý khác đang làm.

Tôi đang thiếu gì ở đây?


Tôi nghĩ rằng bạn đang nhầm lẫn tính nhất quán tuần tự và tính nhất quán nguyên nhân. SC là một điều kiện mạnh mẽ hơn so với phrasing trực quan của bạn ... nếu tôi hiểu bạn chính xác. Lần thực hiện thứ hai của bạn là CC (và PRAM C) chứ không phải SC.
Aaron Sterling

Có lẽ. Câu hỏi của tôi là cụ thể tại sao việc thực hiện thứ hai KHÔNG nhất quán tuần tự? Nếu điều thứ nhất là, lý do đặc biệt nào khiến cho việc thực thi 2 không nhất quán?
jetru

Cảm ơn tất cả các câu trả lời. Tôi cũng đọc về tính nhất quán nhân quả và hiểu rằng những gì tôi đang nghĩ về chính xác là như vậy.
jetru

Câu trả lời:


8

Bạn không thiếu thứ gì :)

Thuật toán của Dekker sẽ không nhất quán liên tục trên bộ đa xử lý dựa trên phân cấp bộ nhớ được phân phối nhưng rất có thể vì các bản cập nhật bộ nhớ lan truyền không theo từng bước với cập nhật bộ nhớ cục bộ (bộ đệm) mà không đồng bộ thông qua các giao thức Bộ nhớ cache như MESI (mô hình bộ nhớ Weaker).

Trên một bộ xử lý uni mà thuật toán của Dekker không phải là trường hợp này và nó sẽ hoàn toàn phù hợp.


Vì vậy, bằng cách xem xét việc truyền bá bộ nhớ, tôi thực sự đang thư giãn mô hình bộ nhớ, do đó trong mô hình bộ nhớ tưởng tượng của tôi, thực thi 2 là có thể. Trong một kho lưu trữ bộ nhớ phù hợp tuần tự đúng, ghi sẽ lan truyền ngay lập tức. Thê nay đung không?
jetru

1
Có .. Nếu mọi quá trình chỉ nhìn vào thực thi bộ nhớ cục bộ 2 của nó là có thể. Trong một sự thống nhất tuần tự đúng, ghi không cần phải truyền ngay lập tức mà khi vị trí khác tham chiếu hoặc cập nhật đến vị trí được viết thông thường.
Sai Venkat

4

Bạn đã có câu trả lời đúng. Việc thực hiện thứ hai không nhất quán theo tuần tự vì "không có tổng thứ tự nào có thể cho kết quả này".

Tôi đoán sự nhầm lẫn của bạn xuất phát từ ý tưởng này:

ý tưởng rằng tính nhất quán tuần tự cho phép ghi lan truyền chậm và một luồng có thể không có ý tưởng nào về các bộ xử lý khác đang làm gì.

Chính xác. Việc nhân giống có thể chậm. Tính nhất quán tuần tự cho phép một luồng không nhận thức được các quy trình khác là gì (đối với bất kỳ chương trình nào). Tuy nhiên, tính nhất quán tuần tự không cho phép mọi luồng không nhận thức được các quy trình khác là gì (đối với một số chương trình, bao gồm cả thuật toán của Dekker).

Cụm từ trên "cho một số chương trình" xuất phát từ sự cân nhắc này: ngay cả dưới sự thống nhất tuần tự, nếu các luồng không sử dụng bộ nhớ dùng chung, không có luồng nào nhận thức được hành vi của luồng khác.


3

Bài viết này cũng có thể giúp hiểu, vì tiêu đề của nó cho thấy sự khác biệt giữa hai tính nhất quán mà bạn đề cập. (Tuy nhiên, phần lớn là về việc triển khai các đối tượng chia sẻ SeqCon và StrictCon trong truyền tin, đây là một cách để suy nghĩ về độ trễ mà bạn đã đề cập.)

Để trả lời câu hỏi cụ thể của bạn: Tính nhất quán tuần tự đòi hỏi tất cả các sự kiện xảy ra theo một thứ tự tuần tự và rằng những gì xảy ra trên một quy trình luôn phù hợp với thời gian.

Vậy lý do tại sao

P1:  W1(x,1)  R2(y)0
-------------------
P2:  W2(y,1)  R2(x)0

là không thể, là phải có một số chuỗi toàn cầu, ví dụ W1(x,1) R1(y)0 W2(y,1) R2(x)?. Trong trình tự này, lần đọc cuối cùng rõ ràng không thể trả về 0. Trình tự này không nhất thiết phải phù hợp với thời gian thực. Hoàn toàn có thể (tính nhất quán tuần tự) rằng trong thời gian thực, chuỗi các sự kiện là W1(x,1) W2(y,1) R1(y)0 R2(x)1. Trình tự này là bất hợp pháp vì tính nhất quán nghiêm ngặt (vì R1 (y) không trả về giá trị của lần ghi trước).


Xin lỗi về nhận xét muộn, nhưng có thể W1 (x, 1) W2 (y, 1) R1 (y) 1 R2 (x) 1 cũng xảy ra trong một môi trường nhất quán liên tục không? Nếu thứ tự thực hiện được sắp xếp để xảy ra theo thứ tự này trước khi nó xảy ra trong thời gian?
William

Việc thực hiện W1 (x, 1) W2 (y, 1) R1 (y) 1 R2 (x) 1 là nhất quán liên tục, thậm chí nhất quán nghiêm ngặt, nếu tôi không nhầm lẫn (hôm nay tôi hơi mệt).
Martin B.

Như những gì bạn muốn nói chính xác là "thứ tự thực hiện được sắp xếp để xảy ra", tôi không chắc là tôi hiểu.
Martin B.
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.