Kích thước ERG là quan trọng cân nhắc khi sử dụng ldrex/strex.
Khi một ldrex được ban hành, nếu truy cập bộ nhớ xảy ra trong ERG trong đó ldrex đã đọc xảy ra, thì strex sẽ thất bại. Không có gì lạ khi có cấu trúc chứa mục tiêu ldrex/strex và một số dữ liệu bổ sung, trong đó dữ liệu bổ sung được truy cập giữa cặp ldrex/strex (ví dụ, để lưu trữ giá trị được tải bởi ldex).
Nếu mục tiêu ldrex/strex không có đủ đệm trong cấu trúc (nghĩa là kích thước ERG được chọn quá nhỏ), việc truy cập vào các thành viên khác của cấu trúc sẽ khiến cho LUX luôn thất bại.
Trò chơi kết thúc, tắt đèn.
Về ldrex/strex, ARM triển khai "màn hình cục bộ" và "màn hình toàn cầu". Trên các hệ thống chỉ có một màn hình cục bộ, cách duy nhất một ldrex/strex có thể thất bại là nếu hai ldrex được phát hành trên cùng một địa chỉ trước khi một strex đã được ban hành - chỉ các hệ thống có màn hình toàn cầu mới nhận thấy lưu lượng bus trong ERG của mục tiêu ldrex/strex.
Hệ thống ARM khác nhau rất nhiều và tôi nghi ngờ có các hệ thống chỉ có màn hình cục bộ và do đó không thực sự hỗ trợ ldrex/strex.
Trong khi câu hỏi đúng, tôi hơi hấp dẫn vì sao bạn cần biết mục đích gỡ lỗi? Kích thước của ERG không có gì khác hơn là tác động hiệu suất. Bạn có thể giải thích hành vi bạn đang thấy là gì không, và những gì bạn đang mong đợi để xem thay thế? – unixsmurf
Chúng tôi gặp phải một lỗi khi trình biên dịch tạo ra một mã mà nhấn ERG khi đọc một biến độc quyền truy cập - do đó nhập một vòng lặp vô tận như STREX luôn thất bại. Lỗi này chỉ xảy ra trên các thiết bị A6X. –
Ok. Nhưng mà không thấy mã bị ảnh hưởng, tôi không thể bình luận về việc bạn có thể là một lỗi phần cứng thực sự hay không, hoặc liệu bạn có là một lỗi phần mềm (tinh tế) mà bạn có thể làm việc hay không. một lần nữa trên các bộ vi xử lý khác. ERG _does_not_ ảnh hưởng đến phần mềm kiến trúc chính xác trên phần cứng kiến trúc đúng theo bất kỳ cách nào khác ngoài hiệu suất. – unixsmurf