2 điểm bởi GN⁺ 2023-11-06 | 1 bình luận | Chia sẻ qua WhatsApp
  • Intel 80386 không chỉ là CPU 32-bit đầu tiên của x86 mà còn cung cấp bộ nhớ phẳng 4GiB cùng khả năng tương thích với x86 trước đó, trở thành nền tảng cho các hệ điều hành hiện đại trên PC
  • Ban đầu Intel đặt nặng các kiến trúc khác như iAPX 432 và P7 hơn, nhưng vì sự tăng trưởng của thị trường PC và khả năng tương thích phần mềm x86 nên đã ưu tiên hoàn tất 386 lên hàng đầu
  • Với 386, Intel không cho phép IBM·AMD sản xuất theo mô hình second source và trở thành nhà cung cấp duy nhất, còn Compaq Deskpro 386 thì làm lung lay dòng tiêu chuẩn PC vốn xoay quanh IBM
  • Hiệu năng không áp đảo tuyệt đối so với các chip RISC cùng thời, nhưng MMU có mặt trên mọi mẫu 386 cùng chế độ Virtual 8086 đã trở thành yếu tố then chốt cho quá trình chuyển sang UNIX, OS/2, Windows, NT và Linux
  • Khi PC nền tảng 386 được sản xuất hàng loạt, MMU cũng lan rộng tới cả PC dành cho người dùng phổ thông, và sự phổ biến của Windows cũng như sự ra đời của Linux đều gắn chặt với việc 386 được phổ cập

32-bit x86 mà Intel ban đầu không hề mong muốn

  • Intel 80386 là CPU 32-bit đầu tiên của họ x86, nhưng ban đầu không nằm trong kế hoạch trọng tâm của Intel
  • Dự án quan trọng nhất của Intel vào cuối thập niên 1970 là iAPX 432, được định hướng làm thiết kế chủ lực cho thập niên 1980
    • iAPX 432 là một CPU đầy tham vọng, nhằm cung cấp lập trình hướng đối tượng và cấp phát lưu trữ bằng phần cứng để phù hợp với các ngôn ngữ bậc cao như ADA
    • Vì có vẻ sẽ mất nhiều thời gian để thiết kế chín muồi, Intel đã bắt đầu 8086 vào năm 1976 như một thiết kế tạm thời
  • Họ 8086 giành được hợp đồng IBM PC, còn iAPX 432 ra mắt muộn vào năm 1981 nhưng có hiệu năng gây thất vọng
    • Trong benchmark, nó chỉ đạt khoảng 1/4 tốc độ của 80286 rẻ hơn rất nhiều ở cùng xung nhịp
  • Ngay cả năm 1982, Intel vẫn chưa thực sự thừa nhận tầm quan trọng của nền tảng PC và khả năng tương thích nhị phân phần mềm, còn 80286 cũng gần như chỉ là thêm một CPU tạm thời
  • Sau khi nhận ra thất bại của dòng 432, các kỹ sư Intel bắt đầu chuẩn bị một kiến trúc RISC 32-bit mới mang tên P7

Chốt hướng thiết kế của 80386

  • Bob Childs, một trong những nhà thiết kế 286, đã không chính thức tổng hợp các ý tưởng mở rộng 32-bit cho 286
  • Khoảng 6 tháng sau, Intel kết luận rằng họ cần thêm một vòng lặp nữa cho dòng x86 trước khi P7 sẵn sàng, và phê duyệt phát triển 386
    • Nhóm ban đầu nhỏ và ngân sách cũng hạn chế
    • Khi khảo sát nhu cầu khách hàng x86, họ thấy cách dùng bộ nhớ phân đoạn của 8086 bị phàn nàn rộng rãi, và 80286 cũng chưa giải quyết được điều đó
  • Khi UNIX ngày càng quan trọng trên các workstation rẻ hơn, đội ngũ 386 nhắm tới một CPU phù hợp với UNIX
  • Yêu cầu quan trọng nhất là định địa chỉ bộ nhớ phẳng
    • Để giữ khả năng tương thích với x86 trước đó, 386 vẫn duy trì cấu trúc phân đoạn
    • Nhưng khi mỗi segment có thể đạt tới 4GiB, vai trò hiện diện của segment trên thực tế giảm đi rất nhiều
    • Việc cung cấp phân trang và bộ nhớ ảo cũng được quyết định trong giai đoạn này
  • Tập lệnh và thanh ghi hiện có được mở rộng lên 32-bit để giữ tương thích nhị phân
    • Intel không chọn cách đặt một tập lệnh hoàn toàn khác phía sau một “mode header” riêng
    • Vì thế, điểm yếu của x86 là số lượng thanh ghi ít cũng không thể được cải thiện
  • Từng có lúc Intel cân nhắc dùng bus mới của P7, nhưng từ bỏ vì nó quá khác bus 286, đòi hỏi phải thiết kế lại mainboard và chipset hỗ trợ
    • Thay vào đó, họ chọn cách ít tham vọng hơn là mở rộng bus hiện có lên 32-bit
  • Vào khoảng năm 1984, khi thị trường PC tăng trưởng, Intel hiểu được tầm quan trọng của dòng x86 và việc hoàn tất 80386 trở thành ưu tiên số một
    • Dự án P7 sau này tiếp nối thành i960 vào năm 1988, và được đổi mục tiêu sang thị trường nhúng để không ăn vào doanh số của 386

Chiến lược độc quyền nguồn cung 386 của Intel

  • 80386 được công bố vào tháng 10 năm 1985
  • Khi đó, việc các công ty thiết kế chip như Intel cấp phép để công ty khác cũng sản xuất CPU làm second source là chuyện phổ biến
    • Khách hàng có thể tránh thiếu CPU nếu nhà cung cấp chính gặp vấn đề về sản lượng
    • Intel và AMD đã duy trì quan hệ hợp tác lâu dài từ thời 8085 và cấp phép chéo sản phẩm cho nhau
    • IBM cũng có giấy phép sản xuất trực tiếp 808x và 80286 từ năm 1983
  • Với 80386, thông lệ này thay đổi
    • Intel cho rằng để trực tiếp kiểm soát CPU, thành phần giá trị nhất trong PC, thì việc trở thành nhà cung cấp duy nhất là rất quan trọng
    • IBM quan tâm hơn đến việc đầu tư lớn vào 286 thay vì 386 trong tương lai
    • Thỏa thuận giữa Intel và IBM được đàm phán lại theo hướng làm IBM hài lòng với 286, nhưng IBM không thể sản xuất 386
  • AMD cũng không quá quan tâm đến việc sản xuất 386, và thỏa thuận second source với AMD không được mở rộng sang 386
  • Cùng thời gian đó, trong vụ NEC kiện Intel, tòa phán quyết rằng microcode có bản quyền và không thể sao chép nếu không có giấy phép cụ thể từ Intel
    • Dù NEC có thể reverse microcode của 8086, thì 386 cũng được xem là mục tiêu gần như bất khả thi vì độ phức tạp
  • Sau diễn biến này, Intel cùng Microsoft đứng ở vị thế có thể kiểm soát tương lai của thị trường PC

Compaq Deskpro 386 và chiến thắng của PC clone

  • IBM PC dùng các linh kiện có sẵn để ra thị trường nhanh, và kết quả là các công ty khác cũng có thể mua cùng linh kiện để làm máy tương thích
  • Hãng clone thành công và tham vọng nhất là Compaq
    • Khi đó Compaq là công ty đạt doanh thu 100 triệu USD nhanh nhất
  • Compaq công bố Deskpro 386 vào tháng 9 năm 1986, gần một năm sau khi Intel ra mắt 80386
    • Deskpro 386 là chiếc máy tính 386 đầu tiên
    • Đây cũng là PC đầu tiên không đi theo xu hướng để IBM giành lại quyền kiểm soát thị trường PC bằng dòng PC/AT dựa trên 286
  • Bill Gates nói rằng IBM không tin tưởng 386 và Microsoft đã khuyến khích Compaq làm máy 386
    • Sự kiện này là bước ngoặt cho thấy không chỉ IBM mới có thể đặt ra tiêu chuẩn, mà các công ty như Compaq và Intel cũng có thể tạo ra điều mới
  • Compaq Deskpro 386 ban đầu rất đắt nhưng doanh số khá tốt, và cho thấy IBM không còn ở vị trí dẫn đầu nữa
  • IBM gần một năm sau mới tung ra máy tính 386 đầu tiên là PS/2 model 80
    • Dòng PS/2 cố giành lại quyền kiểm soát bằng cách đưa vào một bus độc quyền rất tiên tiến vào thời điểm đó
    • Nhưng IBM không còn ở vị thế có thể áp đặt cách làm của mình, và dòng PS/2 đã không hoàn thành được nhiệm vụ đó

Môi trường cạnh tranh và hiệu năng của 386

  • Năm 1985, đối thủ lớn nhất của dòng Intel x86 là dòng Motorola 680x0
    • Nhiều người cho rằng 68000 vượt trội hơn 8086 rất nhiều, còn 80286 thì đã bỏ lỡ cơ hội tiến hóa thành một kiến trúc gọn gàng hơn
    • 68020 là bước tiến 32-bit tự nhiên của CPU Motorola
  • Với 80386, lần đầu tiên Intel có một đối thủ cạnh tranh thực sự nghiêm túc
    • Nhờ MMU tích hợp và không gian địa chỉ phẳng 4GiB, nó cũng có thể nhắm vào thị trường workstation nhiều lợi nhuận
  • Trong thị trường workstation, nhiều công ty đang áp dụng thiết kế RISC
    • RISC hấp dẫn ở chỗ có thể làm nhanh hơn và rẻ hơn
    • 386 là một thiết kế CISC phụ thuộc vào microcode dày đặc để xử lý tập lệnh x86 phức tạp và các chế độ định địa chỉ của 80286
  • Trong benchmark, 386 cho thấy hiệu năng ở mức trung bình
    • Intel 80386 16MHz đạt 4 MIPS, bản 25MHz đạt 6 MIPS
    • Motorola 68030 25MHz cũng đạt 6 MIPS
    • Mips R2000 16MHz đạt 16 MIPS, Motorola 88000 16MHz đạt 17 MIPS, Intel i960CA 33MHz đạt 66 MIPS
  • Hiệu năng không mang tính đột phá, nhưng nó có đủ tính năng cần thiết để cạnh tranh

386SX và sự lan rộng của phần mềm 32-bit

  • Sau khi dồn toàn lực cho 386, Intel giới thiệu 386SX vào năm 1988
  • 386SX bên trong giống hệt 386 ban đầu, còn 386 ban đầu được đổi tên thành 386DX
    • Bus dữ liệu bên ngoài là 16-bit
    • Được cung cấp trong gói nhựa rẻ hơn
    • Có thể cắm vào mainboard 16-bit giá rẻ
  • Mục tiêu chính của 386SX là thay thế 286 ở cùng tầm giá
    • 286 khi đó vẫn còn có các nhà cung cấp second source
  • Đầu thập niên 1990, cơ sở cài đặt 386 đã đủ lớn để nhiều hãng phần mềm hơn có thể tận dụng các tính năng 32-bit và các khả năng hiện đại
  • Yếu tố quyết định là mọi mẫu 386, kể cả phân khúc giá rẻ, đều có MMU tích hợp

MMU đã thay đổi cách quản lý bộ nhớ

  • MMU là viết tắt của Memory Management Unit, phần cứng tự động chuyển đổi địa chỉ ảo thành địa chỉ vật lý
  • Các chương trình đời đầu có thể nhìn thấy toàn bộ không gian địa chỉ của máy
    • Khi không gian địa chỉ còn nhỏ thì điều đó còn quản lý được, nhưng khi nhiều chương trình chạy đồng thời và hệ điều hành không thể nằm trong ROM nữa, vấn đề cách ly trở nên nghiêm trọng
  • Một trong những lời giải ban đầu là phân đoạn
    • Thanh ghi segment đóng vai trò địa chỉ cơ sở
    • Khi chương trình truy cập địa chỉ, giá trị 16-bit sẽ được cộng vào thanh ghi segment để tạo ra địa chỉ vật lý
    • Nếu vượt quá giới hạn kích thước segment sẽ phát sinh fault, cho phép cách ly giữa các chương trình
    • 8086 dùng phương thức segment cho truy cập bộ nhớ
  • 80286 có MMU phân đoạn giàu tính năng để hỗ trợ quản lý bộ nhớ phức tạp hơn, và có thể truy cập tối đa 16MiB bộ nhớ
    • OS/2 1.x tận dụng MMU này để mang lại trải nghiệm hiện đại hơn
  • Với lập trình viên PC, bộ nhớ phân đoạn có nhiều hạn chế và khó sử dụng
  • Thiết kế MMU hiện đại hơn tập trung vào phân trang
    • MMU chia không gian địa chỉ ảo thành các trang có kích thước cố định
    • Khi truy cập trang, nó đọc page descriptor để lấy thông tin chuyển đổi địa chỉ vật lý
    • Vì page descriptor thường nằm trong bộ nhớ, nên để đạt hiệu năng tốt người ta dùng cache TLB lưu các descriptor được truy cập gần đây
  • Nhiều hệ điều hành hiện đại, đặc biệt là các bản port UNIX, phù hợp với phân trang hơn
    • Workstation nền tảng 68000 đôi khi dùng MMU ngoài tự làm theo kiểu paging thay vì MC68451
    • Motorola cũng đưa ra MMU ngoài 68851 cho 68020

Cấu trúc và điểm khác biệt của MMU trên 80386

  • 386 phải phù hợp với các hệ điều hành hiện đại, đồng thời vẫn tương thích với 8086, 80286 và phần mềm x86 hiện có
  • Vì vậy, MMU của 386 được cấu thành gần như hai thiết bị riêng biệt
    • Một thiết bị cho chế độ phân đoạn
    • Một thiết bị cho chế độ phân trang
  • Hai thiết bị này hoạt động nối tiếp
    • Địa chỉ logic trước hết đi qua thiết bị phân đoạn để tính ra địa chỉ tuyến tính
    • Nếu phân trang tắt, địa chỉ tuyến tính này chính là địa chỉ vật lý
    • Nếu phân trang bật, TLB hoặc bộ nhớ sẽ được dùng để lấy page descriptor và tạo ra địa chỉ vật lý thực sự
  • Thiết bị phân đoạn không thể bị vô hiệu hóa, nhưng có thể dùng một segment 4GiB bắt đầu từ địa chỉ 0 để biểu diễn toàn bộ không gian bộ nhớ như bộ nhớ phẳng
  • Thiết bị phân trang chia các segment thành trang 4KiB
  • 80386 giới thiệu bốn mức đặc quyền gọi là rings
    • Chúng được dùng để bảo vệ bộ nhớ đặc quyền khỏi các thao tác đọc·ghi không đặc quyền
    • Đây là một trong những thành phần cơ bản mà các hệ điều hành bảo vệ hiện đại dựa vào
  • MMU cũng tham gia vào chế độ Virtual 8086
    • Chương trình 8086 chạy như thể đang điều khiển toàn bộ một máy 8086 với tối đa 1MiB bộ nhớ
    • Nhiều máy ảo V86 có thể hoạt động cùng lúc
    • Các hành vi như truy cập tài nguyên đặc quyền sẽ phát sinh interrupt và được phần mềm đặc quyền xử lý
  • MMU của 386 được thiết kế như một phần tích hợp và gọn gàng của CPU
    • Trong điều kiện lý tưởng, nó không ảnh hưởng tới hiệu năng truy cập bộ nhớ
    • MC68851 luôn thêm ít nhất 1 chu kỳ trễ
  • Ở dòng 68000, MMU không phải lúc nào cũng hiện diện
    • 68020 cần MMU ngoài
    • Các phiên bản EC giá rẻ của 68030 và 68040 không có MMU tích hợp
  • 80386 thì có MMU trên mọi model, kể cả 386SX giá rẻ
    • Chương trình tận dụng MMU và các chế độ hoạt động cao cấp có thể chạy trên bất kỳ máy 386 nào

386 đã mở ra quá trình chuyển đổi hệ điều hành

  • Tác động thật sự của 386 không nằm ở hiệu năng thô mà ở việc nó cho phép hệ điều hành hiện đại xuất hiện trên PC
  • Xenix

    • Xenix là một trong những bản port UNIX sớm cho máy vi tính, bắt đầu từ sự hợp tác giữa Microsoft và SCO
    • Bản port 8086 được công bố năm 1980 nhưng không có MMU thực thụ, nên không thể bảo vệ bộ nhớ hay tách biệt user space và kernel space
    • Bản 286 tận dụng protected mode để tiến gần hơn tới UNIX trên workstation
    • Bản port 386 năm 1987 dùng phân trang để thu hẹp khoảng cách và trở thành hệ điều hành 32-bit hiện đại đầu tiên chạy trên x86
  • OS/2

    • OS/2 ban đầu là dự án phát triển chung của Microsoft và IBM, sau đó Microsoft rời đi để tập trung vào Windows
    • Ra mắt năm 1987 nhưng các phiên bản đầu nhắm tới 286
    • Lý do là nhiều máy trong dòng IBM PS/2 dùng 286
    • Nó tận dụng protected mode rất tốt và được xem là hệ điều hành cao cấp thời đó
    • OS/2 chỉ thực sự trở thành hệ điều hành 32-bit từ phiên bản 2.0 năm 1992
    • Trước đó, do mô hình bộ nhớ phân đoạn và thiếu chế độ Virtual 8086, khả năng hỗ trợ ứng dụng DOS của nó không tốt và còn thua Windows/386
    • OS/2 2.0 là hệ điều hành 32-bit đầu tiên được sử dụng rộng rãi trên máy tính cá nhân
  • Windows

    • Windows cung cấp môi trường vận hành chuyên cho 80386 từ Windows/386 năm 1987
    • Windows/386 vẫn là hệ điều hành 16-bit và không phơi bày không gian bộ nhớ phẳng 32-bit
    • Thay vào đó, nó dùng các tính năng của 386 để ảo hóa các phiên DOS trong chế độ Virtual 8086
    • Nhiều phiên DOS có thể chạy song song mà không nhận biết lẫn nhau
    • Điều này rất quan trọng với nhiều doanh nghiệp còn phụ thuộc vào phần mềm DOS
    • Nhờ MMU, nó cũng cung cấp expanded memory thông qua driver protected mode mô phỏng EMS
    • Xu hướng này được cải thiện trong Windows 3.0 và Windows 3.1, còn Windows 3.1 thì rất thành công
    • Windows for Workgroups 3.11 năm 1993 ngừng hỗ trợ CPU thấp hơn 386, và việc truy cập tệp cùng nhiều driver đã trở thành 32-bit
    • Windows 95 tận dụng MMU của 386 một cách nghiêm túc
      • Nó phơi bày không gian bộ nhớ phẳng
      • Nó dùng phân trang và bộ nhớ ảo
      • Một phần mã vẫn còn là 16-bit, nhưng DOS gần như bị thu hẹp thành vai trò giống bootloader
  • Windows NT

    • Windows NT đầu tiên ra mắt vào tháng 7 năm 1993
    • Khác với Windows 95 phát triển từ Windows 3.11 và vẫn giữ lại một phần mã legacy 16-bit, NT được phát triển mới từ đầu nhằm hướng tới Windows 32-bit “thuần”
    • Một trong những đặc điểm chính của NT là độc lập phần cứng, nhưng bản port quan trọng nhất là cho 80386
    • Nó sử dụng đầy đủ phân trang, supervisor mode và bảo vệ bộ nhớ
    • NT chia sẻ gần như cùng API với Windows 95 nên có thể chạy nhiều ứng dụng Win32
    • NT4 bắt đầu tác động tới thị trường Workstation UNIX từ giữa thập niên 1990
    • Windows 11 là hậu duệ trực tiếp của nhân NT
  • Linux

    • Hệ điều hành gắn bó mật thiết nhất với 386 là Linux
    • Linus Torvalds đã mua một PC 386 mới vào khoảng tháng 1 năm 1991
    • Là một người theo chủ nghĩa thuần khiết máy tính lớn lên cùng chip 68008, Linus từng không thích PC, nhưng nói rằng khi 386 xuất hiện thì PC bắt đầu trở nên hấp dẫn
    • 386 có thể làm được những gì 68020 làm được
    • Đến năm 1990, nhờ sản xuất hàng loạt và sự xuất hiện của clone giá rẻ, nó rẻ hơn rất nhiều
    • Chiếc PC 386 này phù hợp để chạy Minix, một bản clone UNIX nhỏ dùng để giảng dạy nội bộ hệ điều hành
    • Linus không hài lòng với terminal emulator của Minix nên bắt đầu tự viết
    • Một terminal tốt rất quan trọng để truy cập máy tính của trường đại học
    • Ông viết theo kiểu bare metal để học phần cứng 386
    • Ông đã tạo ra chức năng nhập từ bàn phím và xuất ra màn hình
    • Khi thiết kế xoay quanh hai thread độc lập, ông viết một task switcher nhỏ
    • Để tải chương trình về thì cần driver đĩa để lưu, và khi các chức năng được thêm dần từng chút một, hệ điều hành sau này được biết đến là Linux đã hình thành
    • Giữa năm 1991, Linus yêu cầu một bản sao đặc tả POSIX và vào ngày 25 tháng 8 năm 1991 đã thông báo trên nhóm tin comp.os.minix rằng mình đang làm một hệ điều hành mới
    • Câu diễn đạt khi đó là “just a hobby, won’t be big and professional like gnu”

Ảnh hưởng dài hạn của 80386

  • 80386 được đánh giá là CPU quan trọng nhất trong họ x86
  • Về mặt kỹ thuật, 80386 là một con chip tốt, nhưng về hiệu năng thì không đột phá và còn thua các chip RISC cùng thời
  • Điểm cốt lõi là MMU hiện đại, nhanh và nhiều chế độ hoạt động
    • Nó có thể truy cập bộ nhớ phẳng 4GiB
    • Nó giữ tương thích với phần mềm x86 hiện có
    • Nó cho phép Windows dần dần được hiện đại hóa
  • Khả năng xử lý bộ nhớ của 386 đủ tốt tới mức các CPU kế tiếp mạnh hơn nhiều nhưng gần 20 năm sau đó hầu như không bổ sung lớn gì trong lĩnh vực này
  • Nhánh chính của Linux chỉ đến năm 2013 mới ngừng hỗ trợ i386
  • Về thương mại, tầm quan trọng của 386 cũng rất lớn
    • Ban đầu Intel không tin vào nhu cầu x86 32-bit, nhưng rồi nhận ra x86 chính là tương lai
    • Sự thay đổi này gửi tín hiệu ra thị trường rằng x86 sẽ tiếp tục tồn tại
    • Việc các hãng clone lớn chấp nhận 386 đã gạt IBM sang một bên và cho thấy có một lựa chọn mở đáng tin cậy
    • Intel trở thành nhà cung cấp duy nhất của CPU x86 mạnh nhất, tiến một bước quan trọng trên con đường thống trị thị trường CPU
  • Khi máy nền tảng 386 được sản xuất hàng loạt, giá giảm rất nhanh và khả năng tiếp cận MMU cũng được phổ cập
    • Windows giới thiệu điện toán hiện đại cho hàng triệu người
    • Nhân NT cho thấy ngay cả trên các PC “màu be” giá rẻ cũng có thể chạy một hệ điều hành vững chắc
    • Có thể nói Linux sẽ không tồn tại nếu không có 386, mức độ gắn bó của Linux với 386 là rất mạnh

1 bình luận

 
GN⁺ 2023-11-06
Các ý kiến trên Hacker News
  • Tôi nghĩ thiết kế cuối cùng của 80386 hưởng lợi rất nhiều từ Motorola 68000 và m68020 sau đó
    Nếu Motorola không tung ra một CPU 32-bit đúng nghĩa, không thỏa hiệp, rất có thể Intel sau 80286 lại đưa ra thêm một giải pháp tạm bợ nữa. Bản thân 80286 cũng không thật sự được định hướng là người kế nhiệm đúng nghĩa của 8086/8088
    Trên thực tế, 80386 cũng có nhiều thỏa hiệp. Ngoài hàng đợi nạp trước lệnh 16 byte thì hoàn toàn không có cache, trong khi m68020 có cache lệnh 256 byte. Nó cũng không có lệnh nguyên tử, và LOCK không mấy hữu ích cho việc này, nên ngày nay nhiều OS vẫn hỗ trợ 80486 nhưng không hỗ trợ 80386. Vì cần chế độ thực và VM86 do tương thích với 8086, phần mềm đã mất khá lâu mới tận dụng được các tính năng mới của 80386
    Dù vậy, đây vẫn là một con chip quan trọng, và cũng cho thấy những dấu hiệu ban đầu của mô thức sau này trở nên quen thuộc ở Intel: các nỗ lực không cạnh tranh với x86 hoặc muốn tạo thị trường khác bằng cách hy sinh x86 (iAPX 432, Itanic 20 năm sau), những tính năng bị gắn thêm vội vã như trên 80286 rồi phải gánh hỗ trợ legacy mãi mãi, và việc muộn màng bắt kịp khi các hãng khác đã có tính năng mà ai cũng muốn (hỗ trợ 32-bit phẳng khi đó, hỗ trợ 64-bit 20 năm sau)

    • Chiếc máy mà Linus Torvalds dùng để viết nhân Linux đầu tiên là 386, và việc Linux ngay từ đầu hỗ trợ các tính năng mới của 386 là một trong những lý do nó nhanh chóng nổi lên
    • Tôi không chắc việc 386 không có lệnh nguyên tử có thật sự quan trọng đến vậy không. Theo tôi biết thì 386 không có xử lý đa nhiệm đối xứng (SMP), và trong môi trường đơn xử lý, có thể tắt ngắt để biến phép toán thành nguyên tử
  • Khi đó Intel đang ở trong một cuộc khủng hoảng lớn, và cả công ty đặt cược vào việc con chip này phải ra đời thật xuất sắc
    Họ rất dễ đi chệch hướng như Data General, Honeywell, CDC, AST, Tandy, Olivetti, Xerox, DEC Rainbow, AT&T Hobbit, Wang 2200, Unisys. Ở đây có thiên kiến sống sót rất mạnh. Phần lớn những gã khổng lồ một thời như SDS, SDC, Fairchild nay gần như đã bị lãng quên
    Lịch sử của Intel ban đầu gần với một nhà sản xuất bộ nhớ hơn. Có thể nói hiện giờ họ cũng đang ở một vị thế khó khăn tương tự. Thị phần di động và điện tử tiêu dùng gần như bằng 0%, còn ngay cả các cứ điểm cốt lõi còn lại cũng đang bị NVIDIA, AMD, ARM tấn công như cướp phá thành trì. Hy vọng lần này họ cũng thoát được

    • Việc Andy Grove chuyển Intel từ bộ nhớ sang vi xử lý là một quyết định chiến lược xuất sắc
      “Thành công của một doanh nghiệp chứa đựng hạt giống tự hủy diệt. Thành công sinh ra tự mãn, tự mãn sinh ra thất bại. Chỉ những kẻ hoang tưởng mới sống sót”
      Ban lãnh đạo Intel thập niên 2010 đã không đủ để tâm đến câu này
    • DEC Rainbow lẽ ra đã ổn nếu họ không bắt người dùng mua đĩa mềm độc quyền với giá 5 đô mỗi chiếc
      DEC đáng ra nên đóng gói LSI-11 thành máy tính tiêu dùng. Phần mềm cũng đã có đầy đủ và chất lượng rất cao. Tôi từng có H-11, đó là một cỗ máy tuyệt vời
    • NVIDIA không làm được CPU tốt, thậm chí SoC của họ cũng khó gọi là hiện đại. Ngoài những nơi chỉ quan tâm đến cung ứng linh kiện dài hạn như ngành ô tô và Nintendo Switch, gần như không có sự chấp nhận nào ở thị trường đại chúng
      Việc Switch vẫn dùng chipset Tegra từ khoảng năm 2015 có lẽ cũng là vì ngay cả một công ty lớn như Nintendo cũng không thể thúc ép NVIDIA đưa ra thiết kế mới. ARM không làm CPU server mà người thường có thể mua rộng rãi, còn các sản phẩm tồn tại thì đều bị các hãng cloud lấy hết. Ngoài Mac ra cũng không có CPU ARM desktop/laptop nào đáng dùng. Vì Qualcomm đã làm hỏng thị trường đó trong nhiều năm
      Chừng nào ARM chưa đưa ra được giải pháp cạnh tranh với Rosetta, và Qualcomm chưa thoát khỏi lối nghĩ “chạy được vừa đủ thì xuất xưởng”, thứ có thể hợp với các hãng smartphone nhưng không phù hợp với thị trường PC/desktop, thì việc ARM được chấp nhận ở thị trường đó có vẻ vẫn khó
      Rốt cuộc mối đe dọa duy nhất còn lại với Intel là AMD, nhưng AMD không có đủ năng lực sản xuất fab để đe dọa con hào của Intel ở mức đủ lớn. Tình trạng cạnh tranh trong điện toán đa dụng có thể rất bức bối, hoặc cũng có thể không
    • Hy vọng hiện nay của Intel là gì? Liệu có CPU desktop phái sinh từ Quark kiểu như Dothan không?
  • Tôi mong mọi người ngừng áp cách diễn giải đời sau rằng 386 là “32-bit phẳng”. Đó không phải là mục tiêu rõ ràng, mà gần hơn với việc tiếp nhận các tính năng kiến trúc dựa trên năng lực quan trọng, vốn khi đó được xem là tương lai
    Đây là bối cảnh trước khi các ý tưởng như Unix/C/RISC/mô hình một giám sát viên duy nhất đẩy lùi 30 năm nghiên cứu OS mainframe và minicomputer trước đó trong các lĩnh vực như bảo mật
    Điều bài viết này chưa làm rõ đúng mức là các thanh ghi segment về cơ bản đã trở thành chỉ mục selector vào một bảng có các trường địa chỉ cơ sở + độ dài (theo trang hoặc theo byte) và kiểm soát quyền thực thi. Và các selector này cùng GDT/LDT/IDT/TSS/call gate/task gate, v.v. đều được thiết kế để hỗ trợ hệ thống phân cấp quyền 4 mức, chẳng hạn người dùng/thư viện/driver/kernel
    Bằng cách truyền qua lại các selector truy cập, cũng có thể cưỡng chế những thứ như giới hạn kích thước cấu trúc dữ liệu; để làm việc này, FS/GS được thêm vào để mỗi thanh ghi đa dụng có thể có mặt nạ quyền riêng
    Nghĩ lại một chút, con trỏ (năng lực, tức selector) có thể không chỉ có địa chỉ cơ sở mà còn có các giới hạn do phần cứng cưỡng chế, và nhờ mô hình quyền, có thể khiến các hàm như strcpy() không thể ghi vào bộ nhớ không phải buffer đích hay vùng làm việc của chính nó. Ngôn ngữ và OS có thể cưỡng chế để hàm được gọi không ghi vào stack của bên gọi, hoặc thậm chí chạy trên một stack hoàn toàn riêng. Đó mới chỉ là khởi đầu
    Gần 40 năm sau, ngành này vẫn đang chật vật phục hồi từ sai lầm thiết kế OS và ngôn ngữ lập trình xoay quanh mô hình bộ nhớ phẳng và mô hình quyền người dùng/giám sát viên đơn giản. 386 cung cấp hỗ trợ phần cứng để viết các tính năng OS mà đến nay vẫn không phổ biến. Có thể nhìn vào CHERI chẳng hạn

    • Dù nói “con trỏ (năng lực, tức selector) có thể không chỉ có địa chỉ cơ sở mà còn có các giới hạn do phần cứng cưỡng chế”, LDT chỉ có 8 nghìn con trỏ khả dĩ, và GDT cũng chỉ có 8 nghìn. Mô hình segment của x86 không thật sự phù hợp để triển khai năng lực
    • Đã lâu tôi không theo dõi grsecurity, nhưng tôi sẽ không ngạc nhiên nếu các thanh ghi segment vẫn còn được dùng. Ví dụ như PaX UDEREF
      https://forums.grsecurity.net/viewtopic.php?f=7&t=3046
      https://pax.grsecurity.net/docs/PaXTeam-H2HC12-PaX-kernel-se...
    • Toàn bộ protected mode dựa trên segment đã được đưa vào từ 286. 386 chủ yếu là thêm FS/GS và mở rộng segment lên 32-bit
  • Tôi muốn nhấn mạnh 386SX quan trọng đến mức nào. Bố tôi muốn mua PC cho tôi nên nhờ một người bạn lắp một máy clone 286, nhưng người bạn đó lại đưa cho chúng tôi 386SX
    Ông ấy nói: “Giá gần như 286, nhưng thứ anh nhận được chắc chắn là CPU 32-bit”, và điều đó đúng. Tôi có thể chạy Win 3.11 trên nó. Một CPU 32-bit có thể mua với giá 286, khá vừa túi tiền — đúng là một sản phẩm thiên tài

  • Ở đây 286 cũng nên được ghi nhận phần nào. 286 là một chip khá bị đánh giá thấp vì số lệnh xử lý trên mỗi xung nhịp tốt hơn nhiều so với thế hệ trước, và điều này dẫn đến một điểm yếu chính của 386
    Khi chạy mã 16-bit hiện có, số lệnh trên mỗi xung nhịp của 386 về cơ bản giống 286, còn xung nhịp ban đầu 12MHz nên khá nhạt. Cho đến khi xung nhịp tăng thật sự và mọi người bắt đầu dùng các tính năng 32-bit, nó không có nhiều ý nghĩa hơn một đối thủ DOS/286 đắt tiền

  • Không lâu sau khi 386 ra mắt, tôi khi đó còn là thiếu niên đã mua chiếc máy tính đầu tiên. Thị trường lúc ấy có cả PC 286 lẫn 386, nhưng 386 có mức giá cao hơn đáng kể
    Khi đó tôi chưa hiểu rõ khác biệt nên đã mua hệ thống 286, và chỉ vài năm sau, khi hiểu ra, tôi rất hối hận vì đã không để dành thêm tiền mua 386. Ít lâu sau tôi bắt đầu viết assembly cấp thấp kiểu bootstrap hệ thống cho một OS đồ chơi, nhưng không thể dùng protected mode 32-bit. Hơn nữa, đến một thời điểm nào đó các game chỉ dành cho 386 cũng bắt đầu xuất hiện, nên tôi cảm thấy khá bị bỏ lại cho đến khi mua chiếc 486 đầu tiên

  • Intel đã phát triển dòng x86 sau 386 lên Pentium Pro rồi amd64, nên tôi thắc mắc tại sao Motorola không làm tương tự với 68k
    Tôi từng thấy các thảo luận coi như tiền đề rằng 68k đã lỗi thời và cần được thay bằng PowerPC, nhưng điều đó nghe giống suy đoán. Tôi chưa thấy lập luận kỹ thuật nào, và 68k trông như một kiến trúc sạch sẽ hơn để tiếp tục kéo dài so với x86 sau 286

    • Không có đủ máy tính dùng 68k được bán ra nên nhu cầu chip không đủ, vì vậy không thể cạnh tranh về giá với Intel và cũng khó biện minh cho khoản đầu tư R&D quy mô lớn. Intel có thị trường PC tương thích, và nhờ đó có nhu cầu khổng lồ đối với chip
    • Vấn đề không phải kỹ thuật, mà là họ không có “núi tiền” mà Intel tiếp cận được, đồng thời khách hàng lại đòi hỏi tương thích ngược
      Intel cũng đã cố chuyển sang i860 hoặc Itanic ít nhất hai lần nhưng thất bại. Vì vậy cải tiến x86 trở thành lựa chọn chiến thắng
      https://news.ycombinator.com/item?id=37796469
    • Nếu hỏi liệu có nỗ lực thương mại nào nhằm tạo ra các hệ thống IDE, VESA, PCI dựa trên bộ xử lý 68k hay không, thì ở một mức độ nào đó là có. Đã có bus VME
      Đó là nỗ lực tạo ra một bus dựa trên tiêu chuẩn, hoạt động giữa nhiều nhà sản xuất và cũng phù hợp với CPU 88k. Nó không thành công vang dội, nhưng cũng thành công ở mức nào đó
  • Cách nói “quan trọng nhất” nghe hơi mang màu sắc diễn giải đời sau. Nếu 8086/8088 không tình cờ trở nên phổ biến nhờ IBM PC, thì có lẽ đã không có 80286, chứ đừng nói 80386
    Dù vậy, 386 là một thành tựu kỹ thuật đã thay đổi thế giới. Trong một dòng thời gian công bằng và chính đáng hơn, tôi nghĩ 68030 đã thống trị thế giới, nhưng không thể phủ nhận những gì Intel đã làm được

    • Với 386 thì có thể như vậy, nhưng 286 có lẽ đã hoàn tất vào khoảng thời điểm IBM PC ra mắt, hoặc thậm chí trước đó
  • 386 là chip đầu tiên trong dòng đó hỗ trợ bộ nhớ ảo demand paging, nhờ đó mở ra rất nhiều việc OS có thể làm. Cá nhân tôi xem đây là tính năng quan trọng nhất mà 386 mang lại
    PC thứ hai của tôi là một máy 386 chạy SCO UNIX. PC đầu tiên của tôi là Heathkit H-8 dùng 8080 chạy CP/M

  • Điều đáng ngạc nhiên là đoạn nói Bob Childs là một trong những người thiết kế 286, và đã không chính thức ấp ủ ý tưởng mở rộng 32-bit cho 286 trong khoảng 6 tháng
    Rốt cuộc làm sao chuyện đó có thể xảy ra được? Trong 30 năm đi làm, tôi chưa từng có một công việc nào mà cứ vài ngày lại không có người thúc ép đòi phải đưa ra một sản phẩm hữu hình nào đó