Báo cáo Nghiên cứu về Lịch sử Chơi Cờ Tướng (Xiangqi) Trên Máy Tính

Tổng hợp có hệ thống lịch sử phát triển engine cờ tướng từ thập niên 1980 đến năm 2026, bao gồm các engine tiêu biểu, giao thức và hệ sinh thái công cụ. Tối Ưu Hóa Theo Kiến Trúc → Chuyển Đổi Giữa Ký Hiệu Nước Đi Trung Quốc và Quốc Tế

☰ Mục lục

Tối Ưu Hóa Theo Kiến Trúc

Tối ưu hóa biên dịch cho các kiến trúc CPU khác nhau:

x86-64 tổng quát: ARCH=x86-64 x86-64 hiện đại (hỗ trợ SSE4.2 và POPCNT): ARCH=x86-64-modern x86-64 AVX2 (Intel Haswell/AMD Ryzen sau 2013): ARCH=x86-64-avx2 x86-64 BMI2 (tập lệnh thao tác bit): ARCH=x86-64-bmi2 x86-64 AVX512 (CPU cao cấp): ARCH=x86-64-avx512 ARMv8 tổng quát: ARCH=armv8 ARMv8 NEON (Apple Silicon, v.v.): ARCH=armv8-neon

Tối Ưu Hóa Liên Kết (LTO)

Tối ưu hóa liên kết có thể cải thiện đáng kể hiệu suất engine tìm kiếm:

  • Bật: -flto (GCC/Clang)
  • Tác dụng: Tối ưu hóa chéo mô-đun ở giai đoạn liên kết
  • Lợi ích hiệu năng: cải thiện sức mạnh khoảng 5-15%
  • Thời gian biên dịch: tăng đáng kể

Tối Ưu Hóa Hướng Dẫn Hồ Sơ (PGO)

PGO sử dụng dữ liệu hồ sơ thời gian chạy để hướng dẫn tối ưu hóa biên dịch:

Giai đoạn 1: Biên dịch với tùy chọn -pg để tạo dữ liệu hồ sơ Giai đoạn 2: Chạy engine trên phân tích ván cờ đại diện Giai đoạn 3: Biên dịch lại sử dụng dữ liệu hồ sơ để tạo tệp nhị phân tối ưu hóa Lợi ích hiệu năng: cải thiện sức mạnh khoảng 5-10%

Lựa Chọn Mô Hình Bộ Nhớ Khi Biên Dịch

Các lựa chọn mô hình bộ nhớ khác nhau ảnh hưởng đến hiệu suất engine:

Mô hình bộ nhớ tiêu chuẩn: std::memory_order_seq_cst (nghiêm ngặt nhất, hiệu suất thấp nhất) Mô hình bộ nhớ nới lỏng: std::memory_order_relaxed (nới lỏng nhất, hiệu suất cao nhất) Nguyên tắc lựa chọn: Sử dụng mô hình bộ nhớ nới lỏng nhất trong khi đảm bảo tính đúng đắn

Tập XXII: Thích Ứng Ngôn Ngữ Engine Cờ Tướng

Chuyển Đổi Giữa Ký Hiệu Nước Đi Trung Quốc và Quốc Tế

Đầu ra nước đi của engine cờ tướng cần hỗ trợ chuyển đổi giữa định dạng Trung Quốc và quốc tế:

Định dạng nước đi Trung Quốc (truyền thống): Pháo nhị bình ngũ, Mã bát tiến thất, Xa nhất bình nhị, v.v. Định dạng nước đi quốc tế (định dạng tọa độ): a0a1, b0b3, v.v. Định dạng nước đi đại số: R1+2, N2+3, v.v.