Ai đó có thể đăng bất kỳ giải thích đơn giản nào về thuật toán nhận biết bộ nhớ cache không? Có rất nhiều liên kết có sẵn nhưng tài liệu đọc trong các trang web đó mang tính học thuật và tốn thời gian để đọc và hiểu.Một ví dụ đơn giản về thuật toán nhận biết bộ nhớ cache?
Trả lời
Thuật toán nhận biết bộ nhớ cache được thiết kế để giảm thiểu chuyển động của các trang bộ nhớ trong và ngoài bộ nhớ cache trên bộ xử lý của bộ xử lý. Ý tưởng là để tránh những gì được gọi là "cache nhớ", mà gây ra bộ xử lý để gian hàng trong khi nó tải dữ liệu từ RAM vào bộ nhớ cache của bộ xử lý.
Thuật toán nhận biết bộ nhớ cache ít hơn tối ưu trên giấy có thể vượt trội hơn thuật toán truyền thống theo lý thuyết "nhanh hơn" vì thuật toán nhận biết bộ nhớ cache sử dụng bộ nhớ hiệu quả hơn.
Thuật toán nhận biết bộ nhớ cache được mã hóa rõ ràng để tận dụng lợi thế của hành vi bộ nhớ cache của bộ xử lý. Chi tiết thân mật về kích thước trang bộ nhớ của bộ xử lý và "dòng bộ nhớ cache" được mã hóa thành thuật toán. Như vậy, một thuật toán nhận biết bộ nhớ cache sẽ có độ xử lý cao.
Thuật toán không có bộ nhớ đệm được mã hóa để sử dụng bộ nhớ theo cách thân thiện với bộ nhớ cache hơn là thuật toán truyền thống, nhưng không phụ thuộc vào chi tiết thân mật về phần cứng cơ bản.
Tôi nghĩ rằng một trong những ví dụ đơn giản nhất của thuật toán nhận biết bộ nhớ cache là truy cập hàng mảng hai chiều so với cột chính. Như một mảng hai chiều thường được lưu trữ trong bộ nhớ giống như một nối của tất cả các hàng của mảng, truy cập nó theo hàng đặt dữ liệu thích hợp vào bộ nhớ cache vào đúng thời điểm. Tuy nhiên, khi truy cập vào mảng theo thứ tự cột lớn, toàn bộ số lần nhảy trong bộ nhớ và bộ nhớ cache bị thiếu có thể gây ra sự chậm lại lớn.
Để đưa ra một ví dụ, C++ mã:
for (int i = 0; i < MAX_N; ++i) {
for (int j = 0; j < MAX_N; ++j) {
a[i][j] = 10;
}
}
chạy 3-4 lần nhanh hơn trên máy tính của tôi hơn nếu tôi trao đổi các chỉ số của tế bào truy cập (có nghĩa là, truy cập a[j][i]
thay).
Bạn có nghĩa là 'a [j] [i]'? – BeniBela
Tôi cảm ơn. Đã sửa. –
- 1. Thuật toán leo đồi ví dụ đơn giản
- 2. Ví dụ về thuật ngữ LaTeX đơn giản
- 3. Ví dụ đơn giản về DispatcherHelper
- 4. Ví dụ về Paypal IPN đơn giản?
- 5. Ví dụ về Deadlock đơn giản
- 6. Ví dụ về tab kivy đơn giản
- 7. ví dụ đơn giản cho Erlang memoization
- 8. MKAnnotation, ví dụ đơn giản
- 9. Lập trình nhận biết bộ nhớ cache C++
- 10. MVC3 DropDownListFor - một ví dụ đơn giản?
- 11. Ví dụ đơn giản về sử dụng __setstate__ và __getstate__
- 12. Ví dụ về mã của thuật toán fleury hoặc hierholzer?
- 13. Bộ chọn ngày trong jqGrid, ví dụ đơn giản?
- 14. Android Scroller ví dụ đơn giản
- 15. Ví dụ sự kiện luồng đơn giản
- 16. Tìm kiếm ví dụ đơn giản về MVVM Light
- 17. Ví dụ đơn giản oozie về truy vấn hive?
- 18. Ví dụ bfs đơn giản ... Tôi không nhận được nó
- 19. Thuật toán mã hóa đơn giản
- 20. Ví dụ đơn giản với Guice Servlets
- 21. API lược tả bộ nhớ cache đơn giản
- 22. UINavigationController: Ví dụ đơn giản nhất
- 23. Ví dụ rò rỉ bộ nhớ AS3
- 24. Thực hiện bộ nhớ cache C# ASP.NET đơn giản
- 25. Thuật toán giả ngẫu nhiên đơn giản
- 26. Ví dụ đơn giản C++ hash_set
- 27. Qt: Ví dụ đơn giản cho Quazip
- 28. Ví dụ hoạt hình tween đơn giản
- 29. Ví dụ gọi lại RMI đơn giản
- 30. Một ví dụ phân tán đơn giản trong D3.js?
Hm anh ấy không hỏi ví dụ sao ?! – ljs
No. Câu hỏi cho biết, "giải thích đơn giản." –
Dưới đây là một ví dụ kém: http://stackoverflow.com/a/11227902/845092, nơi sắp xếp dữ liệu trước khi chạy chức năng của anh ta làm cho nó nhanh hơn gấp 6 lần. –