Microcode của bộ vi xử lý Intel 80386 đã được giải mã thành công

Công nghệ23 tháng 5, 2026·4 phút đọc

Một nhóm nghiên cứu đã thực hiện được kỳ công giải mã microcode của Intel 80386, sử dụng kết hợp giữa xử lý ảnh, AI và kỹ thuật đảo ngược. Quá trình này không chỉ hé lộ kiến trúc nội tại của CPU huyền thoại mà còn phát hiện một lỗ hổng bảo mật tiềm ẩn trong việc kiểm soát quyền truy cập cổng IO.

Microcode của bộ vi xử lý Intel 80386 đã được giải mã thành công

Một nhóm các nhà nghiên cứu và kỹ sư đã đạt được cột mốc quan trọng trong việc hiểu sâu về kiến trúc máy tính cổ điển bằng cách giải mã thành công microcode của bộ vi xử lý Intel 80386. Đây là một bước tiến lớn so với công việc trước đó trên dòng 8086, mở ra cái nhìn chi tiết về cách một trong những CPU quan trọng nhất lịch sử vận hành.

Thách thức từ một "hộp đen" khổng lồ

Sau khi công bố kết quả giải mã microcode của dòng 8086, tác giả đã nhận được hình ảnh độ phân giải cao của vi mạch ROM microcode thuộc 80386 từ Ken Shirriff. Tuy nhiên, việc giải mã 80386 được dự báo là cực kỳ khó khăn vì kích thước của nó lớn hơn gấp nhiều lần (94.720 bit so với 10.752 bit của 8086). Hơn nữa, khác với 8086 đã có các bằng sáng chế làm tài liệu tham khảo, 80386 gần như là một "hộp đen" hoàn toàn với rất ít thông tin công khai về cấu trúc nội tại.

Quy trình giải mã: Từ ảnh nhị phân đến mã lệnh

Thách thức này đã thu hút sự chú ý của các kỹ sư khác trên Discord, bao gồm GloriousCow và Smartest Blob. Họ đã áp dụng các kỹ thuật xử lý ảnh tiên tiến, trí tuệ nhân tạo (AI) và tự động hóa có sự hỗ trợ của con người để trích xuất dữ liệu nhị phân từ hình ảnh vi mạch chỉ trong vài ngày.

Tuy nhiên, việc dịch ngược (disassemble) dữ liệu đó thành các micro-operation (μ-op) có thể đọc được là một câu chuyện khác. Nhóm đã phải dò tìm các mẫu hình, sắp xếp lại các bit để xác định trục của các μ-op và cách chia nhỏ các trường dữ liệu. Việc so sánh với kiến trúc 8086 và phân tích các luồng dữ liệu ALU (đơn vị logic số học) đã giúp họ dần dần tái tạo lại logic điều khiển trung tâm của CPU.

Ken Shirriff cũng đã đóng góp quan trọng bằng cách truy vết các đường dẫn và mạch logic trên die của 80386, giúp nhóm hiểu rõ hơn về cách các thành phần kết nối với nhau.

Sự khác biệt về kiến trúc phần cứng

Một phát hiện thú vị là 80386 nhanh hơn 8086 nhờ việc sử dụng nhiều transistor hơn để "tăng tốc phần cứng". Nhiều thuật toán được thực hiện hoàn toàn bằng microcode trong 8086 nay đã được ủy thác cho các đơn vị tăng tốc chuyên dụng như bộ nhân chia, bộ dịch thanh ghi (barrel shifter) và đơn vị kiểm tra bảo vệ. Microcode của 80386 chủ yếu đóng vai trò thiết lập và điều phối các đơn vị tăng tốc này thay vì thực hiện trực tiếp các thuật toán.

Phát hiện lỗ hổng bảo mật 40 năm tuổi

Trong quá trình phân tích, tác giả đã phát hiện một lỗi tiềm ẩn trong cách xử lý bitmap quyền truy cập IO (IO permission bitmap) của 80386. Cơ chế này được các hệ điều hành chế độ bảo vệ sử dụng để cấp quyền truy cập hạn chế cho các tiến trình ở chế độ người dùng (user-mode).

Theo đó, khi có một truy cập cổng 4 byte diễn ra, microcode dường như chỉ kiểm tra bit quyền hạn cho 3 địa chỉ đầu tiên. Điều này có nghĩa là byte cuối cùng của thao tác truy cập có thể thành công một cách sai lầm, cho phép truy cập vào thanh ghi phần cứng mà hệ điều hành không mong muốn. Đây là một lỗi bảo mật khá mơ hồ và có thể đã bị bỏ sót trong hơn 40 năm qua, mặc dù tác giả cũng lưu ý rằng cần kiểm tra thêm trên các phiên bản CPU thực tế để xác nhận.

Kết quả và tài liệu tham khảo

Dự án này đã xác định được 215 điểm vào (entry points) từ ROM giải mã lệnh, một sự gia tăng lớn so với 60 điểm của 8086, phản ánh sự phức tạp của các lệnh mới, chế độ bảo vệ và các tiền tố lệnh. Đáng ngạc nhiên, mọi lệnh trên 80386 đều sử dụng microcode, không giống như các CPU hiện đại hay cả người tiền nhiệm 8086.

Những ai muốn tìm hiểu sâu hơn về cách giải mã và cấu trúc của 80386 có thể tham khảo các bài viết trên blog của nand2mario và kho lưu trữ GitHub về x86 microcode.

Chia sẻ:FacebookX
Nội dung tổng hợp bằng AI, mang tính tham khảo. Xem bài gốc ↗