Chuyên gia phần cứng Ken Shirriff đã viết blog của mình để khám phá bộ tính năng và các hoạt động khả thi mà người ta có thể mang lại từ CPU x86 lâu đời nhất thế giới – Intel 8086. Bằng cách theo dõi các hoạt động vi mã của 8086, Shirriff đã tìm thấy một số “lựa chọn” thiết kế bất ngờ: từ vi mã độc quyền có nghĩa là gài bẫy những tên trộm IP thông qua các quyết định thiết kế đáng ngờ (nhưng cần thiết) cho phép bộ xử lý 8086 chạy các lệnh không xác định (với kết quả ít được biết đến), công việc thám tử đã làm sáng tỏ những gì có thể là bản phát hành CPU quan trọng nhất trong 50 năm trở lại đây. nhiều năm như vậy.
Lần triển khai tập lệnh x86 đầu tiên trên thế giới trên 8086 của Intel giống như những gì bạn mong đợi từ một CPU được phát hành vào cuối những năm 70. Trong khi các chip hàng đầu hiện nay có thể mang hàng trăm tỷ bóng bán dẫn (các khối xây dựng cơ bản cho các mạch phức tạp hơn), thì CPU x86 thương mại đầu tiên của Intel, Intel 8086 5-10 MHz, chỉ phải sản xuất với vỏn vẹn 29 nghìn bóng bán dẫn trong số đó.
Bộ xử lý hiện đại chặn bạn thực hiện các hướng dẫn không tồn tại. Nhưng các bộ vi xử lý đời đầu như Intel 8086 (1978) đã không kiểm tra các hướng dẫn bất hợp pháp. Việc chạy một cái có thể cung cấp chức năng ẩn hoặc thậm chí cấp quyền truy cập vào các thanh ghi ẩn mà bạn không thể truy cập bằng cách khác.🧵 pic.twitter.com/BCdp7ZBY6VNgày 16 tháng 7 năm 2023
Nhiều bóng bán dẫn hơn thường tương đương với hiệu suất cao hơn và đặc biệt là nhiều chức năng hơn (tăng cường hỗ trợ cho các hướng dẫn phức tạp và đa dạng hơn cũng như khả năng tăng tốc dựa trên phần cứng là con đẻ ở đây). Sau đó, giống như bây giờ, sự cân bằng giữa hiệu suất, hiệu suất năng lượng và số lượng bóng bán dẫn/khu vực chết đã tạo ra những hạn chế khó khăn về cách xử lý phân bổ bóng bán dẫn – và cuối cùng, những tính năng nào được coi là “cần thiết” và “dùng một lần”.
Theo phát hiện của Shirriff, một điểm đặc biệt của 8086 của Intel là CPU không có bất kỳ kiểm tra và cân bằng nào để chạy vi mã – lớp gần kim loại nhất giữa phần mềm và phần cứng chịu trách nhiệm phân chia các lệnh phức tạp thành một loạt các đơn giản hơn, từng bước một mà CPU có thể thực thi. Nhưng với số lượng bóng bán dẫn bị giới hạn ở 29.000, Intel đã chọn không bao gồm khóa cấp phần cứng đối với những lệnh nào có thể và không thể chạy. Thông thường, các hướng dẫn hoạt động trên cơ sở danh sách trắng – CPU cho phép thực thi các vi mã mà nó đã biết có thể được xử lý trong thiết kế phần cứng của nó.
Nhưng vì 8086 của Intel quá chật đối với không gian dành cho bóng bán dẫn, nên công ty thực sự đã không đưa vào danh sách trắng hoạt động của vi mã mà CPU có thể xử lý, nghĩa là nếu có sự hiện diện của hoạt động vi mã “bất hợp pháp” (đọc: không được hỗ trợ), 8086 của Intel đã cố gắng hết sức để giải quyết thao tác vi mã – mà không chỉ định kết quả của thao tác “được yêu cầu bất hợp pháp”.
Nói chung, Intel 8086 hỗ trợ 521 hướng dẫn, được giữ trong chip Microcode ROM (Bộ nhớ chỉ đọc). Một số trong số 512 hướng dẫn đó là bản sao (như cơ chế dự phòng và các lý do khác), nhưng những hướng dẫn khác không bao giờ được công khai: một số hoạt động vi mã nhất định không được ghi lại – cho dù chức năng đã lên kế hoạch chưa bao giờ được triển khai hay vì lý do nào khác.
Tuy nhiên, một vi mã thú vị, như được xác minh bởi Shirriff, đã hỗ trợ Intel bảo vệ IP của mình khỏi những kẻ có thể là kẻ trộm IP. Điền vào một danh sách hướng dẫn từ 512 có sẵn trong ROM của 8086, Shirring có thể phân biệt các mã lệnh với các chức năng đã biết (màu trắng); những màu cam, vàng và xanh lục được để trống cho 8086, nhưng được phổ biến trên các bộ xử lý tiếp theo của Intel, 80186, 80286 và 80386 tương ứng; và cuối cùng, ngoại lệ màu tím: một opcode đã được triển khai trong bộ xử lý 8086 và các bộ xử lý tiếp theo của Intel, nhưng điều đó chưa bao giờ được ghi nhận công khai.
Shirriff nhận cờ tím không có giấy tờ – chỉ được đưa ra ánh sáng trong các tài liệu của Intel vào cuối năm 2017, mặc dù sống trong thiết kế x86 của công ty kể từ 8086 – là nó phục vụ như một loại hũ mật cho bất kỳ ai muốn sao chép công nghệ của Intel. Nếu một công ty đã đi tắt đón đầu trong việc phát triển các giải pháp CPU của riêng họ và thay vào đó ăn cắp IP vi mã của Intel, thì CPU của họ sẽ thực hiện cùng hoạt động SALC (Đặt AL thành Thực hiện) khi được cung cấp các bit mã máy có liên quan – nó tương đương với nhận dạng mã vạch điều đó sẽ cho phép Intel truy tố bất kỳ kẻ ăn cắp IP nào hiệu quả hơn.
Thật không may, vi mã “bẫy bản quyền” không phục vụ nhiều cho Intel, ngay cả trong những ngày đầu của 8086 khi sự cạnh tranh đa dạng hơn: Intel hy vọng rằng hướng dẫn SALC của họ đã được thực hiện theo cách riêng của NEC (và tốt hơn) Bộ xử lý x86 của Intel ở dạng bộ xử lý NEC V20 và NEC V30. Nhưng không phải vậy: một phán quyết liên bang từ năm 1989 khẳng định rằng NEC không vi phạm bản quyền của Intel (và do đó, hướng dẫn SALC không có ở đó). Nhưng những điều khác xảy ra khi một vụ kiện vi phạm bản quyền được đưa ra, những điều ít liên quan đến bản thân bản quyền. Quyết định kiện và chặn NEC của Intel cũng như việc bán bộ vi xử lý V20 và V30 của họ là một phần lý do tại sao không có nhiều người chơi hơn trong bối cảnh cạnh tranh khốc liệt về thiết kế chip x86.