2010-08-10 22 views
5

Các bước lập trình được viết bằng "C" được kết hợp với việc xóa bộ đệm L2 trên máy tính Linux OS là gì?"C" cache L2 có lập trình rõ ràng trên các máy Linux

/sys/thiết bị/hệ thống/cpu/CPU0/cache/index2/size = 6144K x 8CPUs

+0

Related: http://stackoverflow.com/questions/1756825/cpu-cache-flush – quantumSoup

+0

và một liên quan khác: http://stackoverflow.com/questions/3446138/how-to-clear-cpu-l1-and -l2-cache – ennuikiller

+3

Đây là CPU phụ thuộc và không thể chuyển đổi. Vui lòng thêm mô tả về nền tảng/thẻ tương ứng của bạn. Việc thêm thẻ "assembly" có thể giúp thu hút sự chú ý của những người có trải nghiệm phát triển hệ thống có thể có kinh nghiệm. Bởi vì cuối cùng bạn sẽ cần phải mã một số lắp ráp anyway. – Dummy00001

Trả lời

2

Gần nhất bạn có thể nhận được trong bất kỳ cách xa sạch/di động:

char dummy[L2_CACHE_SIZE]; 
memset(dummy, 0, sizeof dummy); 

Tùy thuộc vào CPU của bạn, có thể có các opcodes đặc quyền có thể xóa bộ nhớ cache, nhưng tôi không biết gì về chúng hoặc cách bạn có thể truy cập chúng. Có khả năng là nếu chúng tồn tại, bạn vẫn có thể cần mã cấp hạt nhân để sử dụng chúng.

+0

Và điều đó có nghĩa là chúng ta có thể tìm thấy một syscall để thực hiện nhiệm vụ được đề cập. – Basilevs

+2

Memset() trong lịch sử sử dụng các hướng dẫn không bận tâm để đọc dòng bộ nhớ cache đích và dòng ghi kết hợp trên dòng bộ nhớ cache được ghi. Tuy nhiên, có những hướng dẫn truyền dữ liệu trực tiếp vào bộ nhớ (chúng có dòng bộ nhớ cache riêng của chúng, bên ngoài bộ đệm). Một trình biên dịch thông minh có thể sử dụng các hướng dẫn như vậy, để bảo vệ bộ đệm L2 khỏi bị xóa bởi một memset(). –

+0

Tôi tự hỏi có bao nhiêu kết nối bộ nhớ cache sẽ nhận được trong cách xóa bộ nhớ cache? hãy tưởng tượng bạn đã có một bộ đệm L2 kết hợp hoàn toàn; LRU thay thế là thứ duy nhất đang xảy ra. Các quy trình khác đang chạy, giữ các dòng bộ nhớ cache nói chung được sử dụng gần đây - nhưng tất nhiên, bản ghi nhớ không ghi lại các dòng bộ nhớ cache mà nó sử dụng để ghi. Chúng sẽ sớm trở thành các dòng LRU ... do đó, memset() sẽ kết thúc bằng cách sử dụng và tái sử dụng một tập hợp nhỏ các dòng bộ nhớ cache để ghi. –

0

Bạn không thể truy cập bộ nhớ mức thấp từ không gian người dùng, bạn phải triển khai trình điều khiển thiết bị của riêng mình để có quyền truy cập vào bộ nhớ vật lý trong Linux.

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