2009-12-24 34 views
6

Đọc qua một số bản trình bày tuyệt vời về tính toán độ trễ thấp. Họ đã tham chiếu đến hoạt động bộ nhớ cache dữ liệu trình biên dịch XL C/C++ của IBM __dcbt (Bộ nhớ Cache Khối dữ liệu) cho trình biên dịch cell của họ. Thao tác này tải một khối bộ nhớ vào bộ đệm L1.Visual Studio có hỗ trợ hoạt động của bộ nhớ cache dữ liệu không?

Visual Studio (hoặc G ++ hoặc Intel) có chức năng tương tự cho Bộ xử lý Intel không? Nếu vậy và giải pháp là nền tảng cụ thể (ví dụ: Windows hoặc * nix), hãy nói như vậy.

+1

Tôi muốn chuyên câu hỏi này để bao gồm khái niệm về những gì xảy ra sau khi khối được tải. Nó có phải là cùng một logic nghỉ hưu, hay nó sẽ ở lại trong CPU cho đến khi được dỡ xuống một cách rõ ràng? –

+1

Trong trường hợp của phần cứng Intel hiện tại, một khối được tìm nạp trước sẽ bị rút lui giống như bất kỳ khối nào khác. Nó không bị khóa vào cache. – Crashworks

Trả lời

4

Có, Visual Studio hỗ trợ tất cả các hoạt động nội tại SSE và MMX. Các hoạt động kiểm soát bộ nhớ cache được mô tả ngắn gọn tại đây: http://www.tommesani.com/SSECacheabilityControl.html và được giải thích theo chiều dài trong Intel's instruction set reference.

Microsoft documents their intrinsics for cache control at MSDN. Mặc dù chúng trông giống như các hàm, trình biên dịch thực sự đưa chúng xuống hướng dẫn phần cứng thích hợp. Hãy chắc chắn xem xét cả hai hướng dẫn kiểm soát bộ nhớ cache SSE1 và SSE2 của chúng, chúng liệt kê trong các danh mục riêng biệt (xem cây mở rộng ở phía bên trái của trang của chúng).

Tương đương x86 với dcbt_mm_prefetch. Không có tương đương trực tiếp với dcbz, nhưng tương tự gần nhất là _mm_stream_si128.

Tôi tin rằng GCC sử dụng cùng tên nội tại (khi chúng được lấy từ trình biên dịch Intel).

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