2010-07-26 29 views
29

Có đúng là tiền tố lệnh x86 ASM "LOCK" làm cho tất cả các lõi bị đóng băng trong khi lệnh sau "LOCK" đang được thực thi?x86 KHÓA câu hỏi trên CPU đa lõi

Tôi đọc điều này trong bài đăng trên blog và điều đó không có ý nghĩa. Tôi không thể tìm thấy bất cứ điều gì cho biết nếu điều này là đúng hay không.

+0

liên quan: [? Có thể num ++ được nguyên tử cho 'int num'] (https://stackoverflow.com/questions/39393850/can-num-be -atomic-for-int-num) trong đó câu trả lời của tôi giải thích thêm về cách 'các lệnh' lock'ed thực hiện trong nội bộ. –

Trả lời

41

Đó là về khóa bus bộ nhớ cho địa chỉ đó. The Intel 64 and IA-32 Architectures Software Developer's Manual - Volume 3A: System Programming Guide, Part 1 cho chúng tôi biết:

7.1.4 Ảnh hưởng của thao tác khóa trên bộ xử lý nội bộ.

Đối với các bộ vi xử lý Intel486 và Pentium, các tín hiệu # KHÓA luôn khẳng định trên xe buýt trong một hoạt động KHÓA , thậm chí nếu khu vực bộ nhớ bị khóa được lưu trữ trong bộ vi xử lý .

Đối với P6 và nhiều hơn nữa gần đây xử lý gia đình, nếu khu vực bộ nhớ được khóa trong một hoạt động KHÓA được lưu trữ trong bộ xử lý đó là thực hiện hoạt động KHÓA như bộ nhớ ghi lại và hoàn toàn chứa trong một dòng bộ nhớ cache, bộ vi xử lý không thể khẳng định tín hiệu LOCK # trên xe buýt. Thay vào đó, nó sẽ sửa đổi vị trí bộ nhớ trong nội bộ và cho phép [của nó] bộ nhớ cache coherency cơ chế để đảm bảo rằng các hoạt động được thực hiện nguyên tử. Hoạt động này được gọi là "khóa bộ nhớ cache". Cơ chế kết hợp bộ nhớ cache tự động ngăn hai hoặc nhiều bộ xử lý có cùng diện tích là bộ nhớ đồng thời sửa đổi dữ liệu trong khu vực đó. (nhấn mạnh thêm)

Ở đây chúng ta biết rằng các chip P6 và mới hơn đủ thông minh để xác định xem chúng có thực sự chặn bus hay chỉ dựa vào bộ nhớ đệm thông minh. Tôi nghĩ rằng đây là một tối ưu hóa gọn gàng.

tôi đã thảo luận này ở bài viết trên blog của tôi "How Do Locks Lock?"

+0

Cảm ơn Jeff! Đó là một sự trợ giúp lớn :) – IamIC

+0

Jeff, cảm ơn vì đã điền vào chỗ trống và cung cấp tài liệu tham khảo. Thật tuyệt khi thấy rằng các bộ xử lý gần đây có phần thông minh hơn về khóa. –

+0

Cảm ơn bạn, đây chỉ là thông tin tôi mong đợi để tìm khi googling cho tiền tố khóa :) – cib

6

Không, nhưng nó có thể buộc các bộ xử lý khác chờ trong khi bộ xử lý này truy cập bộ nhớ. Cho dù các trạng thái chờ đợi bao giờ thực hiện một sự khác biệt phụ thuộc vào mức độ mà các bộ xử lý đang chạy ra khỏi bộ nhớ cache.

Các vấn đề liên quan