Có cách nào để xác định hoặc bất kỳ tài nguyên nào mà tôi có thể tìm thấy kích thước bộ đệm mục tiêu của bộ đệm cho bộ vi xử lý Haswell, Sandy Bridge, Ivy Bridge và Skylake Intel không?Kích thước BTB cho Haswell, Sandy Bridge, Ivy Bridge và Skylake?
Trả lời
Kiểm tra phần mềm nguồn tối ưu hóa bởi Agner Sương mù, http://www.agner.org/optimize/
BTB phải ở trong "The vi kiến trúc của Intel, AMD và CPU VIA: Một hướng dẫn tối ưu hóa cho các lập trình lắp ráp và các nhà sản xuất trình biên dịch", http://www.agner.org/optimize/microarchitecture.pdf
3.7 Dự đoán chi nhánh trong Intel Sandy Bridge và Ivy Bridge
Tổ chức BTB. Bộ đệm đích ở Sandy Bridge lớn hơn so với Nehalem theo những tin đồn không chính thức. Người ta không biết liệu nó có một cấp độ, như trong Core 2 và các bộ vi xử lý trước đó, hoặc hai cấp độ như trong Nehalem. Ứng dụng có thể xử lý tối đa bốn lệnh gọi cho mỗi 16 byte của mã . Các bước nhảy có điều kiện kém hiệu quả hơn nếu có hơn 3 lệnh chi nhánh cho mỗi 16 byte mã.
3.8 dự đoán Chi nhánh tại Intel Haswell, Broadwell và Skylake
tổ chức BTB. Tổ chức bộ đệm mục tiêu chi nhánh không xác định. Nó có vẻ là hợp lý lớn.
Intel có thể mô tả một số dữ liệu trong "Hướng dẫn tham chiếu tối ưu hóa kiến trúc Intel 64 và IA-32" http://www.intel.com/content/www/us/en/architecture-and-technology/64-ia-32-architectures-optimization-manual.html xung quanh "3.4.1 Chi nhánh dự đoán tối ưu hóa" nhưng vẫn không có kích thước.
Có vẻ lạ, nhưng không có thông tin về BTB trong cpuid trong 1998-2000: http://www.installaware.com/forums/oldattachments/02142006163/tstcpuid.c (bởi Gerald J. Heim, Đại học Tübingen, Đức.). Và vẫn không được liệt kê trong http://www.felixcloutier.com/x86/CPUID.html hoặc trong một số vật liệu nào từ nhân viên Intel ...
* This table describes the possible cache and TLB configurations * as documented by Intel. For now AMD doesn't use this but gives * exact cache layout data on CPUID 0x8000000x. * * MAX_CACHE_FEATURES_ITERATIONS limits the possible cache information * to 80 bytes (of which 16 bytes are used in generic Pentii2). * With 80 possible caches we are on the safe side for one or two years. * * Strange enough no BHT, BTB or return stack data is given this way...
Nên có một số đơn vị giám sát hiệu suất (PMU) quầy cho BTB, và có những thí nghiệm để có được kích thước BTB chạy chương trình kiểm tra đặc biệt, kiểm tra http://xania.org/201602/haswell-and-ivy-btb Matt Godbolt
Kết luận
từ những kết quả này, có vẻ như Ivy Bridge (và do đó có lẽ Sandy Bridge) sử dụng khá nhiều chiến lược tương tự cho các tra cứu BTB của các nhánh vô điều kiện, mặc dù với kích thước bảng lớn hơn: 4096 mục phân chia trên 1024 bộ 4 cách.
Đối với Haswell, có vẻ như một cách tiếp cận mới để xác định các bộ đã được thực hiện, cùng với một cách tiếp cận mới để loại bỏ các mục nhập.
và nhiều hơn nữa bài viết của mình về dự đoán rẽ nhánh và các sự kiện của nó:
- http://xania.org/201602/bpu-part-one tĩnh chi nhánh dự đoán trên bộ vi xử lý Intel mới hơn
- http://xania.org/201602/bpu-part-two Chi nhánh dự đoán - phần hai
- http://xania.org/201602/bpu-part-three Các BTB trong chip Intel hiện đại)
- http://xania.org/201602/bpu-part-four Chi nhánh Bộ đệm mục tiêu, phần 2
mã của ông là công khai, dựa trên các bài kiểm tra Agner của: https://github.com/mattgodbolt/agner: https://github.com/mattgodbolt/agner/blob/master/tests/btb_size.py, https://github.com/mattgodbolt/agner/blob/master/tests/branch.py
- 1. Đang tải mã lên GPU (Intel Sandy Bridge)
- 2. OrientDB PHP/Gremlin Bridge
- 3. AbstractFactory Versus Bridge Pattern
- 4. Scala 2,9 Bridge-Phương pháp
- 5. Cách sử dụng log4j2 Commons Logging Bridge
- 6. Trợ giúp truy vấn SQL với bảng bridge
- 7. adb (android debug bridge) sau khi nâng cấp OSX Yosemite
- 8. Python - cách triển khai mẫu thiết kế Bridge (hoặc Adapter)?
- 9. Lỗi bí ẩn khi chạy lệnh makepri cho Desktop Bridge của Windows Universal App
- 10. Cách thêm bản nhạc vào danh sách phát iTunes bằng Python và Scripting Bridge
- 11. Sandboxing ứng dụng của tôi với Scripting Bridge để gửi email
- 12. Thông lượng thời gian chờ SIMD
- 13. Cách chính xác để sử dụng câu lệnh INNER JOIN sử dụng bảng bridge
- 14. Làm thế nào để giải quyết vấn đề Rope Bridge bằng một thuật toán?
- 15. Truy cập bộ nhớ Haswell
- 16. Làm thế nào để cấu hình Log4J khi triển khai một ứng dụng OSGi với Equinox Servle Bridge tới Tomcat?
- 17. Có cách nào để bỏ qua INSTALL_FAILED_VERSION_DOWNGRADE khi cài đặt ứng dụng bằng Android Debug Bridge không?
- 18. Ivy: Lấy Javadocs và Nguồn
- 19. Kích thước khối Hadoop và vấn đề kích thước tệp?
- 20. Kích thước phân chia và kích thước khối trong Hadoop
- 21. eglQuerySurface cho kích thước sai
- 22. Kích thước cho ứng dụngDataCompositeValue
- 23. Kích thước và loại khóa được khuyến nghị cho GnuPG?
- 24. Xác định kích thước và maxlength cho Html.TextBoxFor
- 25. Làm thế nào bạn có thể chỉ ra các tập tin để bỏ qua trong svn khi sử dụng git và git-svn bridge?
- 26. Ivy: <ivy: settings> so với <ivy: configure>
- 27. Tính kích thước cần thiết cho TLabel
- 28. C++ khai kích thước mảng và const
- 29. Thay đổi kích thước bước cho ngRepeat
- 30. Delphi và iOS Kích thước tệp
Chi nhánh dự đoán có vẻ là một phần của "nước sốt bí mật" mà các công ty CPU không công bố chi tiết về. Có lẽ vì sợ giúp đỡ đối thủ cạnh tranh của họ. Hầu hết những gì chúng ta biết dường như dựa trên các thử nghiệm thực nghiệm dựa trên lý thuyết về cách thức hoạt động của mọi thứ. Chắc chắn thú vị bao nhiêu nó có thể tìm ra. –
..và cách triển khai dự đoán nhánh tốt cho lõi cpu OOO mã nguồn mở như https://github.com/ucb-bar/riscv-boom/blob/master/src/main/scala/bpd_pipeline.scala http://riscv.org/wp-content/uploads/2016/01/Wed1345-RISCV-Workshop-3-BOOM.pdf#page=20 https://ccelio.github.io/riscv-boom-doc/ Chương 3 – osgx