2016-07-21 48 views

Trả lời

8

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ó:

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

+3

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. –

+2

..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

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