2 คะแนน โดย GN⁺ 2023-11-06 | 1 ความคิดเห็น | แชร์ทาง WhatsApp
  • Intel 80386 ไม่ได้เป็นเพียง CPU 32 บิตตัวแรกของ x86 แต่ยังมอบหน่วยความจำแบบ flat ขนาด 4GiB พร้อมความเข้ากันได้กับ x86 เดิม จนกลายเป็นรากฐานของระบบปฏิบัติการสมัยใหม่สำหรับ PC
  • ตอนแรก Intel ให้น้ำหนักกับสถาปัตยกรรมอื่นอย่าง iAPX 432 และ P7 มากกว่า แต่เพราะการเติบโตของตลาด PC และ ความเข้ากันได้กับซอฟต์แวร์ x86 จึงหันมาให้การพัฒนา 386 เสร็จสมบูรณ์เป็นความสำคัญสูงสุด
  • สำหรับ 386 นั้น Intel ไม่อนุญาตให้ IBM และ AMD ผลิตแบบ second source และกลายเป็น ผู้จัดหาผูกขาด ขณะที่ Compaq Deskpro 386 ก็สั่นคลอนกระแสมาตรฐาน PC ที่มี IBM เป็นศูนย์กลาง
  • ประสิทธิภาพไม่ได้เหนือกว่าชิป RISC ร่วมยุคอย่างท่วมท้น แต่ MMU ที่อยู่ใน 386 ทุกรุ่นและโหมด Virtual 8086 กลายเป็นหัวใจของการเปลี่ยนผ่านไปสู่ UNIX, OS/2, Windows, NT และ Linux
  • เมื่อ PC ที่ใช้ 386 ถูกผลิตจำนวนมาก MMU จึงแพร่ไปถึง PC สำหรับผู้ใช้ทั่วไป และการได้รับความนิยมของ Windows รวมถึงการถือกำเนิดของ Linux ก็เชื่อมโยงอย่างแน่นแฟ้นกับการแพร่หลายของ 386

x86 32 บิตที่ Intel ไม่ได้ต้องการ

  • Intel 80386 เป็น CPU 32 บิต ตัวแรกของตระกูล x86 แต่ในช่วงแรกไม่ได้อยู่ในแผนหลักของ Intel
  • ช่วงปลายทศวรรษ 1970 โครงการที่สำคัญที่สุดของ Intel คือ iAPX 432 ซึ่งตั้งใจให้เป็นดีไซน์หลักของทศวรรษ 1980
    • iAPX 432 เป็น CPU ที่ทะเยอทะยาน โดยต้องการรองรับการเขียนโปรแกรมเชิงวัตถุและการจัดสรรที่เก็บข้อมูลในฮาร์ดแวร์ให้เหมาะกับภาษาระดับสูงอย่าง ADA
    • เนื่องจากดูเหมือนว่าดีไซน์นี้จะใช้เวลานานกว่าจะสุกงอม Intel จึงเริ่มทำ 8086 ในปี 1976 ในฐานะดีไซน์ชั่วคราว
  • ตระกูล 8086 ได้สัญญากับ IBM PC ส่วน iAPX 432 ปรากฏตัวช้าในปี 1981 แต่ประสิทธิภาพน่าผิดหวัง
    • ใน benchmark มีความเร็วเพียงประมาณ 1/4 ของ 80286 ที่ถูกกว่ามากในความถี่เดียวกัน
  • แม้ในปี 1982 Intel ก็ยังไม่ได้ยอมรับความสำคัญของแพลตฟอร์ม PC และความเข้ากันได้ระดับไบนารีของซอฟต์แวร์อย่างเพียงพอ และ 80286 ก็ยังใกล้เคียงกับการเป็น CPU ชั่วคราวอีกตัวหนึ่ง
  • หลังจากวิศวกร Intel ตระหนักถึงความล้มเหลวของตระกูล 432 ก็เริ่มเตรียมสถาปัตยกรรม RISC 32 บิตใหม่ชื่อ P7

การกำหนดทิศทางการออกแบบ 80386

  • Bob Childs หนึ่งในผู้ออกแบบ 286 ได้รวบรวมแนวคิดการขยาย 286 เป็น 32 บิตอย่างไม่เป็นทางการ
  • ประมาณ 6 เดือนต่อมา Intel ตัดสินว่าจำเป็นต้องมีการทำซ้ำอีกครั้งของตระกูล x86 ก่อนที่ P7 จะพร้อม และอนุมัติการพัฒนา 386
    • ทีมเริ่มต้นมีขนาดเล็กและงบประมาณจำกัด
    • จากการสำรวจความต้องการของลูกค้า x86 พบว่า วิธีหน่วยความจำแบบ segment ของ 8086 ถูกไม่พอใจอย่างกว้างขวาง และ 80286 ก็ยังทิ้งความเสียดายไว้เพราะไม่สามารถกำจัดสิ่งนี้ได้
  • เมื่อ UNIX มีความสำคัญขึ้นบน workstation ที่ถูกลง ทีม 386 จึงตั้งเป้าเป็น CPU ที่เหมาะกับ UNIX
  • ความต้องการสำคัญที่สุดคือการระบุแอดเดรสแบบ flat memory
    • เพื่อรักษาความเข้ากันได้กับ x86 เดิม 386 จึงยังคงโครงสร้าง segment ไว้
    • เมื่อแต่ละ segment สามารถมีขนาดได้ถึง 4GiB การมีอยู่ของ segment จึงลดความสำคัญลงในทางปฏิบัติ
    • การให้บริการ paging และ virtual memory ก็ถูกตัดสินใจในช่วงนี้เช่นกัน
  • ขยายชุดคำสั่งและ register เดิมเป็น 32 บิตเพื่อรักษาความเข้ากันได้ระดับไบนารี
    • ไม่ได้เลือกวิธีใส่ชุดคำสั่งที่ต่างไปโดยสิ้นเชิงไว้หลัง “mode header” แยกต่างหาก
    • แต่ก็ทำให้ไม่สามารถเพิ่ม จำนวน register ที่น้อย ซึ่งเป็นจุดอ่อนของ x86 ได้
  • มีช่วงหนึ่งที่พิจารณาใช้ bus ใหม่สำหรับ P7 แต่ถูกเลิกไป เพราะต่างจาก bus ของ 286 มากเกินไปจนต้องออกแบบ motherboard และชิปสนับสนุนใหม่
    • จึงเลือกแนวทางที่ทะเยอทะยานน้อยกว่า คือขยาย bus เดิมเป็น 32 บิต
  • ราวปี 1984 เมื่อตลาด PC เติบโต Intel ก็เข้าใจความสำคัญของตระกูล x86 และการทำ 80386 ให้เสร็จสมบูรณ์กลายเป็นภารกิจสำคัญสูงสุด
    • โครงการ P7 พัฒนาต่อเป็น i960 ในปี 1988 และเปลี่ยนเป้าหมายไปยังตลาด embedded เพื่อไม่ให้กินยอดขายของ 386

กลยุทธ์ผู้จัดหาผูกขาดของ Intel สำหรับ 386

  • 80386 เปิดตัวใน เดือนตุลาคม 1985
  • ในเวลานั้น เป็นเรื่องปกติที่บริษัทออกแบบชิปอย่าง Intel จะให้ license CPU เพื่อให้บริษัทอื่นผลิตได้ และเตรียม second source ไว้
    • ลูกค้าสามารถหลีกเลี่ยงการขาดแคลน CPU ได้แม้ผู้จัดหาหลักมีปัญหา yield
    • Intel กับ AMD มีความร่วมมือกันยาวนานตั้งแต่ยุค 8085 และ cross-license ผลิตภัณฑ์กัน
    • IBM ก็มี license ผลิต 808x และ 80286 เองตั้งแต่ปี 1983
  • แต่แนวปฏิบัตินี้เปลี่ยนไปกับ 80386
    • Intel มองว่าการเป็น ผู้จัดหาผูกขาด สำคัญต่อการควบคุม CPU ซึ่งเป็นชิ้นส่วนที่มีค่าที่สุดใน PC โดยตรง
    • IBM สนใจการลงทุนขนาดใหญ่ใน 286 มากกว่า 386 ในอนาคต
    • ข้อตกลงระหว่าง Intel กับ IBM ถูกเจรจาใหม่ในทิศทางที่ทำให้ IBM พอใจกับ 286 แต่ IBM ไม่สามารถผลิต 386 ได้
  • AMD ก็ไม่ได้สนใจการผลิต 386 มากนัก และข้อตกลง second source กับ AMD ไม่ได้ขยายไปถึง 386
  • ในช่วงเวลาใกล้เคียงกัน คดี NEC กับ Intel มีคำตัดสินว่า microcode มีลิขสิทธิ์และไม่สามารถคัดลอกได้หากไม่มี license เฉพาะจาก Intel
    • แม้ NEC จะสามารถ reverse microcode ของ 8086 ได้ แต่ 386 ถูกมองว่าแทบเป็นไปไม่ได้เพราะความซับซ้อน
  • หลังจากกระแสนี้ Intel ก็อยู่ในตำแหน่งที่จะควบคุมอนาคตของตลาด PC ร่วมกับ Microsoft

Compaq Deskpro 386 และชัยชนะของ PC clone

  • IBM PC ใช้ชิ้นส่วนสำเร็จรูปเพื่อออกสู่ตลาดอย่างรวดเร็ว ส่งผลให้บริษัทอื่นสามารถซื้อชิ้นส่วนแบบเดียวกันมาทำเครื่องที่เข้ากันได้
  • ผู้ผลิต clone ที่ประสบความสำเร็จและทะเยอทะยานที่สุดคือ Compaq
    • ในเวลานั้น Compaq เป็นบริษัทที่ทำรายได้ถึง 100 ล้านดอลลาร์ได้เร็วที่สุด
  • Compaq เปิดตัว Deskpro 386 ใน เดือนกันยายน 1986 เกือบ 1 ปีหลัง Intel เปิดตัว 80386
    • Deskpro 386 เป็นคอมพิวเตอร์ 386 เครื่องแรก
    • และยังเป็น PC เครื่องแรกที่ไม่เดินตามกระแสที่ IBM พยายามทวงอำนาจควบคุมตลาด PC กลับมาด้วย PC/AT ที่ใช้ 286
  • Bill Gates กล่าวว่า IBM ไม่เชื่อมั่นใน 386 และ Microsoft กระตุ้นให้ Compaq สร้างเครื่อง 386
    • เหตุการณ์นี้กลายเป็นจุดเปลี่ยนที่แสดงให้เห็นว่าไม่ใช่เพียง IBM เท่านั้นที่กำหนดมาตรฐานได้ แต่บริษัทอย่าง Compaq และ Intel ก็ทำสิ่งใหม่ได้เช่นกัน
  • Compaq Deskpro 386 ในช่วงแรกมีราคาแพงมาก แต่ขายได้พอสมควร และแสดงให้เห็นว่า IBM ไม่ได้อยู่ในตำแหน่งผู้นำอีกต่อไป
  • IBM ออกคอมพิวเตอร์ 386 เครื่องแรกของตนคือ PS/2 model 80 เกือบ 1 ปีให้หลัง
    • สาย PS/2 พยายามทวงอำนาจควบคุมกลับมาด้วยการนำ bus กรรมสิทธิ์ที่ก้าวหน้ามากในเวลานั้นมาใช้
    • แต่ IBM ไม่ได้อยู่ในตำแหน่งที่จะบังคับใช้แนวทางของตนเองอีกต่อไป และสาย PS/2 ก็ไม่สามารถทำภารกิจนั้นได้สำเร็จ

สภาพการแข่งขันและประสิทธิภาพของ 386

  • ในปี 1985 คู่แข่งหลักของตระกูล Intel x86 คือ ตระกูล Motorola 680x0
    • หลายคนมองว่า 68000 เป็นชิปที่เหนือกว่า 8086 มาก และเห็นว่า 80286 พลาดโอกาสในการพัฒนาไปสู่สถาปัตยกรรมที่สะอาด
    • 68020 เป็นวิวัฒนาการ 32 บิตตามธรรมชาติของ CPU จาก Motorola
  • ด้วย 80386 Intel จึงมีคู่แข่งที่จริงจังเป็นครั้งแรก
    • ด้วย MMU แบบ integrated และพื้นที่แอดเดรส flat 4GiB จึงสามารถเล็งตลาด workstation ที่ทำกำไรสูงได้ด้วย
  • ในตลาด workstation หลายบริษัทกำลังนำดีไซน์ RISC มาใช้
    • RISC มีจุดดึงดูดตรงที่ทำให้เร็วกว่าและถูกกว่าได้
    • 386 เป็นดีไซน์ CISC ที่พึ่งพา microcode หนาแน่นเพื่อจัดการชุดคำสั่ง x86 ที่ซับซ้อนและโหมดการระบุแอดเดรสของ 80286
  • ใน benchmark 386 แสดงประสิทธิภาพระดับกลาง
    • Intel 803386 16MHz อยู่ที่ 4 MIPS, 25MHz อยู่ที่ 6 MIPS
    • Motorola 68030 25MHz ก็อยู่ที่ 6 MIPS
    • Mips R2000 16MHz อยู่ที่ 16 MIPS, Motorola 88000 16MHz อยู่ที่ 17 MIPS, Intel i960CA 33MHz อยู่ที่ 66 MIPS
  • แม้ประสิทธิภาพไม่ได้เป็นการก้าวกระโดด แต่ก็มีฟังก์ชันที่จำเป็นต่อการแข่งขัน

386SX และการแพร่หลายของซอฟต์แวร์ 32 บิต

  • หลังจาก Intel ทุ่มเทเต็มที่ให้กับ 386 ก็เปิดตัว 386SX ในปี 1988
  • 386SX ภายในเหมือนกับ 386 เดิม และ 386 เดิมถูกเปลี่ยนชื่อเป็น 386DX
    • external data bus เป็น 16 บิต
    • มาพร้อมแพ็กเกจพลาสติกราคาถูก
    • สามารถเสียบกับ motherboard 16 บิตราคาถูกได้
  • เป้าหมายหลักของ 386SX คือแทนที่ 286 ในระดับราคาใกล้เคียงกัน
    • 286 ยังมีผู้จัดหา second source อยู่
  • ช่วงต้นทศวรรษ 1990 ฐานเครื่องที่ติดตั้ง 386 มีขนาดใหญ่พอให้ผู้ผลิตซอฟต์แวร์จำนวนมากขึ้นสามารถใช้ความสามารถ 32 บิตและฟังก์ชันสมัยใหม่ได้
  • จุดชี้ขาดคือ MMU แบบ integrated อยู่ใน 386 ทุกรุ่น รวมถึงรุ่นราคาถูก

MMU ที่เปลี่ยนการจัดการหน่วยความจำ

  • MMU ย่อมาจาก Memory Management Unit เป็นฮาร์ดแวร์ที่แปลง virtual address เป็น physical address โดยอัตโนมัติ
  • โปรแกรมยุคแรกสามารถมองเห็นพื้นที่แอดเดรสทั้งหมดของเครื่อง
    • เมื่อพื้นที่แอดเดรสยังเล็กก็พอจัดการได้ แต่เมื่อหลายโปรแกรมทำงานพร้อมกัน และระบบปฏิบัติการไม่สามารถอยู่ใน ROM ได้อีก ปัญหาการแยกกันจึงใหญ่ขึ้น
  • หนึ่งในวิธีแก้ยุคแรกคือ segmentation
    • segment register ทำหน้าที่เป็น base address
    • เมื่อโปรแกรมเข้าถึง address ค่า 16 บิตจะถูกบวกกับ segment register เพื่อสร้าง physical address
    • หากเกินขีดจำกัดขนาด segment จะเกิด fault ทำให้แยกโปรแกรมออกจากกันได้
    • 8086 ใช้วิธี segment สำหรับการเข้าถึงหน่วยความจำ
  • 80286 มี segment MMU ที่มีฟังก์ชันมากและรองรับการจัดการหน่วยความจำซับซ้อนกว่า สามารถเข้าถึงหน่วยความจำสูงสุด 16MiB
    • OS/2 1.x ใช้ MMU นี้เพื่อมอบประสบการณ์ที่ทันสมัยกว่า
  • สำหรับโปรแกรมเมอร์ PC หน่วยความจำแบบ segment มีข้อจำกัดมากและจัดการยาก
  • ดีไซน์ MMU ที่ทันสมัยกว่ามี paging เป็นศูนย์กลาง
    • MMU แบ่งพื้นที่ virtual address เป็น page ขนาดคงที่
    • เมื่อเข้าถึง page จะอ่าน page descriptor เพื่อรับข้อมูลการแปลงเป็น physical address
    • โดยปกติ page descriptor อยู่ในหน่วยความจำ ดังนั้นเพื่อประสิทธิภาพจึงใช้ TLB cache ที่เก็บ descriptor ที่เพิ่งเข้าถึง
  • OS สมัยใหม่จำนวนมาก โดยเฉพาะ UNIX port เข้ากับ paging ได้ดีกว่า
    • workstation ที่ใช้ 68000 บางรุ่นใช้ external MMU แบบ paging ของตนเองแทน MC68451
    • Motorola เปิดตัว 68851 ซึ่งเป็น external MMU สำหรับ 68020

โครงสร้างและความแตกต่างของ 80386 MMU

  • 386 ต้องเหมาะกับ OS สมัยใหม่ ขณะเดียวกันก็ต้องเข้ากันได้กับ 8086, 80286 และซอฟต์แวร์ x86 เดิม
  • เพื่อสิ่งนี้ 386 MMU จึงถูกจัดวางเหมือนอุปกรณ์สองชิ้นที่แทบแยกจากกัน
    • ชิ้นหนึ่งสำหรับ segment mode
    • อีกชิ้นสำหรับ paging mode
  • อุปกรณ์ทั้งสองทำงานต่อเนื่องกันเป็นลูกโซ่
    • logical address จะผ่านอุปกรณ์ segment ก่อนเพื่อคำนวณเป็น linear address
    • หากปิด paging อยู่ linear address นี้ก็คือ physical address
    • หากเปิด paging อยู่ จะดึง page descriptor จาก TLB หรือหน่วยความจำเพื่อสร้าง physical address จริง
  • อุปกรณ์ segment ไม่สามารถปิดใช้งานได้ แต่สามารถแทนพื้นที่หน่วยความจำทั้งหมดด้วย segment ขนาด 4GiB ที่เริ่มจาก address 0 เพื่อใช้งานเหมือน flat memory ได้
  • อุปกรณ์ paging แบ่ง segment เป็น page ขนาด 4KiB
  • 80386 นำระดับสิทธิ์ 4 ระดับที่เรียกว่า rings มาใช้
    • ใช้ปกป้องหน่วยความจำที่มีสิทธิ์จากการอ่าน·เขียนโดยไม่มีสิทธิ์
    • เป็นหนึ่งในองค์ประกอบพื้นฐานที่ OS แบบ protected สมัยใหม่ใช้เป็นฐาน
  • MMU ยังเกี่ยวข้องกับโหมด Virtual 8086 ด้วย
    • โปรแกรม 8086 ทำงานราวกับควบคุม 8086 ทั้งเครื่องที่มีหน่วยความจำสูงสุด 1MiB
    • virtual machine แบบ V86 หลายตัวสามารถทำงานพร้อมกันได้
    • การกระทำอย่างการเข้าถึงทรัพยากรที่ได้รับการป้องกันจะทำให้เกิด interrupt และซอฟต์แวร์ที่มีสิทธิ์จะจัดการ
  • 386 MMU ถูกออกแบบให้เป็นส่วนหนึ่งของ CPU ที่ integrated และเป็นระเบียบ
    • ในเงื่อนไขที่เหมาะสม จะไม่กระทบประสิทธิภาพการเข้าถึงหน่วยความจำ
    • MC68851 จะเพิ่มความหน่วงอย่างน้อย 1 cycle เสมอ
  • ในตระกูล 68000 ไม่ได้มี MMU อยู่เสมอไป
    • 68020 ต้องการ external MMU
    • รุ่น EC ราคาถูกของ 68030 และ 68040 ไม่มี integrated MMU
  • 80386 มี MMU ในทุกรุ่นจนถึง 386SX ราคาถูก
    • โปรแกรมที่ใช้ MMU และโหมดการทำงานขั้นสูงจึงสามารถรันบน 386 เครื่องใดก็ได้

การเปลี่ยนผ่านระบบปฏิบัติการที่ 386 เปิดทาง

  • อิทธิพลที่แท้จริงของ 386 ไม่ได้อยู่ที่ raw performance แต่อยู่ที่การทำให้ ระบบปฏิบัติการสมัยใหม่ เป็นไปได้บน PC
  • Xenix

    • Xenix เป็นหนึ่งใน UNIX port ยุคแรกสำหรับ microcomputer ที่เริ่มจากความร่วมมือระหว่าง Microsoft กับ SCO
    • มีการประกาศ port สำหรับ 8086 ในปี 1980 แต่เพราะไม่มี MMU จริง จึงไม่สามารถทำ memory protection และแยก user space กับ kernel space ได้
    • เวอร์ชัน 286 ใช้ protected mode จึงใกล้เคียง UNIX บน workstation มากขึ้น
    • port สำหรับ 386 ในปี 1987 ใช้ paging เพื่อลดช่องว่าง และกลายเป็น OS 32 บิตสมัยใหม่ตัวแรกที่รันบน x86
  • OS/2

    • OS/2 เดิมเป็นการพัฒนาร่วมกันระหว่าง Microsoft กับ IBM และต่อมา Microsoft ถอนตัวเพื่อไปโฟกัส Windows
    • เปิดตัวในปี 1987 แต่เวอร์ชันแรกตั้งเป้าที่ 286
    • เพราะเครื่องจำนวนมากในสาย IBM PS/2 ใช้ 286
    • ใช้ protected mode ได้ดี และถูกมองว่าเป็น OS ขั้นสูงในเวลานั้น
    • OS/2 กลายเป็น OS 32 บิตตั้งแต่ เวอร์ชัน 2.0 ในปี 1992
    • ก่อนหน้านั้น การรองรับแอปพลิเคชัน DOS ไม่ดีเพราะวิธีหน่วยความจำแบบ segment และไม่มีโหมด Virtual 8086 และยังตามหลัง Windows/386
    • OS/2 2.0 เป็น OS 32 บิตตัวแรกที่ใช้กันแพร่หลายในคอมพิวเตอร์ส่วนบุคคล
  • Windows

    • Windows เริ่มมีสภาพแวดล้อมการทำงานเฉพาะ 80386 ตั้งแต่ Windows/386 ในปี 1987
    • Windows/386 ยังเป็น OS 16 บิต และไม่ได้เปิดเผยพื้นที่ flat memory 32 บิต
    • แต่ใช้ความสามารถของ 386 เพื่อ virtualize เซสชัน DOS ในโหมด Virtual 8086
    • เซสชัน DOS หลายตัวสามารถรันขนานกันโดยไม่รับรู้กัน
    • สิ่งนี้สำคัญต่อบริษัทจำนวนมากที่พึ่งพาซอฟต์แวร์ DOS
    • ด้วย MMU ยังให้ expanded memory ผ่าน driver แบบ protected mode ที่ emulate EMS ได้
    • กระแสนี้ดีขึ้นใน Windows 3.0 และ Windows 3.1 และ Windows 3.1 ก็ประสบความสำเร็จอย่างมาก
    • Windows for Workgroups 3.11 ในปี 1993 ยุติการรองรับ CPU ต่ำกว่า 386 และการเข้าถึงไฟล์กับ driver จำนวนมากกลายเป็น 32 บิต
    • Windows 95 ใช้ 386 MMU อย่างจริงจัง
      • เปิดเผยพื้นที่ flat memory
      • ใช้ paging และ virtual memory
      • แม้บาง code จะยังเป็น 16 บิต แต่ DOS ถูกลดบทบาทจนแทบเป็นเพียง bootloader
  • Windows NT

    • Windows NT รุ่นแรกเปิดตัวใน เดือนกรกฎาคม 1993
    • ต่างจาก Windows 95 ที่พัฒนามาจาก Windows 3.11 และยังรักษา code legacy 16 บิตบางส่วนไว้ NT ถูกพัฒนาใหม่ตั้งแต่ต้นโดยตั้งเป้าเป็น Windows 32 บิต “บริสุทธิ์”
    • หนึ่งในคุณสมบัติหลักของ NT คือความเป็นอิสระจากฮาร์ดแวร์ แต่ port ที่สำคัญที่สุดคือสำหรับ 80386
    • ใช้ paging, supervisor mode และ memory protection อย่างจริงจัง
    • NT แชร์ API กับ Windows 95 เกือบเหมือนกัน จึงรันแอปพลิเคชัน Win32 จำนวนมากได้
    • NT4 เริ่มส่งผลต่อตลาด Workstation UNIX ในช่วงกลางทศวรรษ 1990
    • Windows 11 เป็นทายาทโดยตรงของ NT kernel
  • Linux

    • ระบบปฏิบัติการที่เชื่อมโยงกับ 386 อย่างใกล้ชิดที่สุดคือ Linux
    • Linus Torvalds ซื้อ PC 386 เครื่องใหม่ราวเดือนมกราคม 1991
    • Linus บอกว่าในฐานะนักบริสุทธิ์นิยมด้านคอมพิวเตอร์ที่เติบโตมากับชิป 68008 เขาไม่ชอบ PC แต่เมื่อ 386 ปรากฏขึ้น PC ก็เริ่มดูน่าสนใจ
    • 386 สามารถทำสิ่งที่ 68020 ทำได้
    • ในปี 1990 การผลิตจำนวนมากและการมี clone ราคาถูกทำให้มันถูกลงมาก
    • PC 386 เครื่องนี้เหมาะกับการรัน Minix ซึ่งเป็น UNIX clone ขนาดเล็กสำหรับสอนภายในระบบปฏิบัติการ
    • Linus ไม่พอใจกับ terminal emulator ของ Minix จึงเริ่มเขียนเอง
    • terminal ที่ดีมีความสำคัญเพื่อเชื่อมต่อกับคอมพิวเตอร์ของมหาวิทยาลัย
    • เขาเขียนแบบ bare-metal เพื่อเรียนรู้ฮาร์ดแวร์ 386
    • สร้างฟังก์ชันรับ input จาก keyboard และ output ไปยังหน้าจอ
    • ระหว่างออกแบบโดยมี thread อิสระสองตัวเป็นศูนย์กลาง เขาก็เขียน task switcher ขนาดเล็ก
    • หากจะดาวน์โหลดโปรแกรมก็ต้องมี disk driver สำหรับจัดเก็บ และเมื่อเพิ่มฟังก์ชันทีละอย่าง ระบบปฏิบัติการที่จะเป็นที่รู้จักในชื่อ Linux ก็เริ่มก่อตัวขึ้น
    • กลางปี 1991 Linus ขอสำเนาข้อกำหนด POSIX และใน วันที่ 25 สิงหาคม 1991 แจ้งใน newsgroup comp.os.minix ว่ากำลังทำระบบปฏิบัติการใหม่อยู่
    • ถ้อยคำในเวลานั้นคือ “just a hobby, won’t be big and professional like gnu”

อิทธิพลระยะยาวของ 80386

  • 80386 ถูกประเมินว่าเป็น CPU ที่สำคัญที่สุดในตระกูล x86
  • ในเชิงเทคนิค 80386 เป็นชิปที่ดี แต่ด้านประสิทธิภาพไม่ได้เป็นการก้าวกระโดด และตามหลังชิป RISC ร่วมยุค
  • แก่นสำคัญคือ MMU สมัยใหม่และรวดเร็ว กับโหมดการทำงานหลายแบบ
    • สามารถเข้าถึง flat memory 4GiB ได้
    • รักษาความเข้ากันได้กับซอฟต์แวร์ x86 เดิม
    • ทำให้ Windows ค่อย ๆ ทันสมัยขึ้นได้
  • ความสามารถด้านการจัดการหน่วยความจำของ 386 ดีพอที่ CPU รุ่นต่อมาจะแรงขึ้นมาก แต่แทบไม่ได้เพิ่มสิ่งใหญ่ในด้านนี้ตลอดเกือบ 20 ปี
  • Linux mainline เพิ่งยุติการรองรับ i386 ใน ปี 2013
  • ในเชิงพาณิชย์ 386 ก็มีความสำคัญมาก
    • ตอนแรก Intel ไม่เชื่อในความต้องการ x86 32 บิต แต่ต่อมาตระหนักว่า x86 คืออนาคต
    • การเปลี่ยนแปลงนี้ส่งสัญญาณต่อตลาดว่า x86 จะยังดำเนินต่อไป
    • การที่ผู้ผลิต clone รายใหญ่รับ 386 ไปใช้ แสดงให้เห็นว่ามีทางเลือกเปิดที่น่าเชื่อถือและผลัก IBM ออกจากศูนย์กลาง
    • Intel กลายเป็นผู้จัดหา CPU x86 ที่ทรงพลังที่สุดเพียงรายเดียว และก้าวสู่ขั้นสำคัญในการครองตลาด CPU
  • เมื่อเครื่องที่ใช้ 386 ถูกผลิตจำนวนมาก ราคาก็ลดลงอย่างรวดเร็ว และการเข้าถึง MMU กลายเป็นเรื่องแพร่หลาย
    • Windows แนะนำการคอมพิวติ้งสมัยใหม่ให้ผู้ใช้หลายล้านคน
    • NT kernel แสดงให้เห็นว่า OS ที่แข็งแกร่งสามารถรันได้แม้บน PC “สีเบจ” ราคาถูก
    • Linux เชื่อมโยงกับ 386 อย่างแน่นแฟ้นถึงขนาดกล่าวได้ว่า หากไม่มี 386 ก็คงไม่มี Linux

1 ความคิดเห็น

 
GN⁺ 2023-11-06
ความคิดเห็นบน Hacker News
  • ผมคิดว่า การออกแบบขั้นสุดท้ายของ 80386 ได้อานิสงส์อย่างมากจาก Motorola 68000 และ m68020 ที่ตามมา
    ถ้า Motorola ไม่ได้ออก CPU 32 บิตเต็มรูปแบบแบบไม่ประนีประนอมออกมา Intel ก็อาจจะออกของแก้ขัดอีกตัวหลัง 80286 ก็เป็นได้ ตัว 80286 เองก็ไม่ได้ตั้งใจให้เป็นผู้สืบทอดที่แท้จริงของ 8086/8088 อยู่แล้ว
    ใน 80386 จริง ๆ ก็มีการประนีประนอมอยู่มาก นอกจากคิวดึงคำสั่งล่วงหน้า 16 ไบต์แล้วก็ไม่มีแคชเลย ขณะที่ m68020 มีแคชคำสั่ง 256 ไบต์ ไม่มีคำสั่งแบบอะตอมิกด้วย และ LOCK ก็ไม่ค่อยมีประโยชน์ในจุดนี้นัก ทำให้ทุกวันนี้ OS หลายตัวรองรับ 80486 แต่ไม่รองรับ 80386 เพราะความเข้ากันได้กับ 8086 ทำให้ต้องมี real mode หรือ VM86 ซอฟต์แวร์จึงใช้เวลาค่อนข้างนานกว่าจะใช้ประโยชน์จากฟีเจอร์ใหม่ของ 80386 ได้
    ถึงอย่างนั้นมันก็เป็นชิปที่สำคัญ และยังแสดงสัญญาณแรก ๆ ของแพตเทิร์นที่ต่อมาคุ้นเคยกันใน Intel เช่น ความพยายามสร้างตลาดอื่นที่ไม่แข่งกับ x86 หรือยอมสละ x86 (iAPX 432, และอีก 20 ปีต่อมาคือ Itanic), ฟีเจอร์ที่รีบแปะเพิ่มเข้ามาเหมือนฟีเจอร์บน 80286 แล้วต้องแบกเป็น legacy support ไปตลอดกาล, และการตามหลังมาชดเชยเมื่อผู้ผลิตรายอื่นมีฟีเจอร์ที่ทุกคนต้องการ (ตอนนั้นคือการรองรับ 32 บิตแบบ flat และอีก 20 ปีต่อมาคือการรองรับ 64 บิต) เป็นต้น

    • เครื่องที่ Linus Torvalds ใช้เขียน เคอร์เนล Linux ตัวแรกคือ 386 และการที่ Linux รองรับฟีเจอร์ใหม่ของ 386 ตั้งแต่แรกก็เป็นหนึ่งในเหตุผลที่มันดังขึ้นอย่างรวดเร็ว
    • ผมสงสัยว่าการที่ 386 ไม่มี คำสั่งแบบอะตอมิก นั้นสำคัญจริง ๆ หรือไม่ เท่าที่รู้ 386 ไม่มี symmetric multiprocessing (SMP) และในสภาพแวดล้อมโปรเซสเซอร์เดี่ยว ถ้าปิด interrupt ก็ทำให้การคำนวณเป็นอะตอมิกได้
  • ตอนนั้น Intel อยู่ในวิกฤตใหญ่ และทั้งบริษัทก็เดิมพันอยู่กับการทำให้ชิปตัวนี้ออกมาดี
    มันอาจหลุดทางไปได้ง่าย ๆ เหมือน Data General, Honeywell, CDC, AST, Tandy, Olivetti, Xerox, DEC Rainbow, AT&T Hobbit, Wang 2200, Unisys ตรงนี้มี survivorship bias อย่างแรง ยักษ์ใหญ่ในอดีตส่วนใหญ่อย่าง SDS, SDC, Fairchild ตอนนี้แทบถูกลืมไปแล้ว
    ประวัติของ Intel เดิมทีใกล้เคียงกับผู้ผลิตหน่วยความจำมากกว่า ตอนนี้ก็อาจมองได้ว่าอยู่ในสถานะลำบากคล้ายกัน ส่วนแบ่งตลาดมือถือและเครื่องใช้ไฟฟ้าแทบเป็น 0% และแม้แต่ฐานที่มั่นหลักที่เหลืออยู่ NVIDIA, AMD, ARM ก็กำลังบุกกดดันเหมือนปล้นปราสาท หวังว่าครั้งนี้จะเอาตัวรอดได้อีก

    • การที่ Andy Grove ย้าย Intel จาก หน่วยความจำไปสู่ไมโครโปรเซสเซอร์ เป็นการตัดสินใจเชิงกลยุทธ์ที่ยอดเยี่ยม
      “ความสำเร็จของธุรกิจมีเมล็ดพันธุ์แห่งการทำลายตนเองอยู่ในตัว ความสำเร็จก่อให้เกิดความชะล่าใจ ความชะล่าใจก่อให้เกิดความล้มเหลว มีแต่คนหวาดระแวงเท่านั้นที่อยู่รอด”
      ผู้บริหาร Intel ในทศวรรษ 2010 ไม่ได้ใส่ใจกับคำพูดนี้มากพอ
    • DEC Rainbow คงจะไปได้ดี ถ้าไม่ทำเรื่องให้ต้องซื้อฟลอปปีดิสก์เฉพาะของตัวเองในราคาแผ่นละ 5 ดอลลาร์
      DEC ควรจะนำ LSI-11 มาห่อเป็นเครื่องสำหรับผู้บริโภค ซอฟต์แวร์ก็มีครบและคุณภาพสูงมาก ผมเคยมี H-11 เป็นเครื่องที่ยอดเยี่ยม
    • NVIDIA ทำ CPU ดี ๆ ไม่ได้ และแม้แต่ SoC ก็เรียกได้ยากว่าอยู่ระดับล่าสุด แทบไม่มีการนำไปใช้ในตลาดแมส นอกจากกลุ่มที่สนใจแค่การจัดหาชิ้นส่วนระยะยาวอย่างอุตสาหกรรมรถยนต์ และ Nintendo Switch
      การที่ Switch ยังใช้ชิปเซ็ต Tegra ยุคปี 2015 ก็มีแนวโน้มสูงว่าแม้แต่บริษัทใหญ่ระดับ Nintendo ก็ยังกดดัน NVIDIA ให้ดึงดีไซน์ใหม่ออกมาไม่ได้ ARM ไม่ได้ทำ CPU เซิร์ฟเวอร์ที่คนทั่วไปซื้อได้อย่างแพร่หลาย และสินค้าที่มีอยู่ก็ถูกผู้ให้บริการคลาวด์กวาดไปหมด นอกเหนือจาก Mac ก็ไม่มี CPU ARM สำหรับเดสก์ท็อป/โน้ตบุ๊กที่ใช้งานได้ดี เพราะ Qualcomm ทำตลาดนั้นพังไปหลายปี
      ตราบใดที่ ARM ยังไม่ออกโซลูชันที่แข่งกับ Rosetta ได้ และ Qualcomm ยังไม่หลุดจากวิธีคิดแบบ “ถ้าพอรันได้ก็ปล่อยขาย” ซึ่งอาจใช้ได้กับผู้ผลิตสมาร์ทโฟน แต่ไม่เหมาะกับตลาด PC/เดสก์ท็อป การยอมรับ ARM ในตลาดนั้นก็ดูจะยาก
      สุดท้ายภัยคุกคามเดียวที่เหลือของ Intel คือ AMD แต่ AMD ไม่มีกำลังการผลิตจาก fab มากพอที่จะคุกคามคูเมืองของ Intel ได้จริง ๆ สถานะการแข่งขันของคอมพิวติ้งทั่วไปอาจจะน่าอึดอัดมาก หรืออาจไม่ใช่ก็ได้
    • ความหวังของ Intel ตอนนี้คืออะไรนะ? มี CPU เดสก์ท็อปสาย Quark แบบเดียวกับ Dothan อะไรทำนองนั้นหรือเปล่า?
  • ผมอยากให้เลิกเอาการตีความแบบคนรุ่นหลังว่า 386 เป็น “32 บิตแบบแบนราบ” ไปครอบมันเสียที นั่นไม่ใช่เป้าหมายที่ชัดเจน และใกล้เคียงกับการรับเอาฟีเจอร์ สถาปัตยกรรมแบบอิง capability สำคัญ ๆ ที่ในเวลานั้นถูกมองว่าเป็นอนาคตมากกว่า
    นี่คือบริบทก่อนที่แนวคิดอย่าง Unix/C/RISC/โมเดล supervisor เดี่ยว จะผลักงานวิจัย OS บนเมนเฟรมและมินิคอมพิวเตอร์ตลอด 30 ปีก่อนหน้าออกไปจากพื้นที่อย่างความปลอดภัย
    จุดที่บทความนี้ไม่ได้ทำให้ชัดเจนพอคือ segment register ตอนนี้โดยพื้นฐานกลายเป็น selector index ของตารางที่มีฟิลด์ base address + length (หน่วยเป็น page หรือ byte) และการควบคุมสิทธิ์การรัน และ selector เหล่านี้ รวมถึง GDT/LDT/IDT/TSS/call gate/task gate ฯลฯ ล้วนถูกออกแบบมาเพื่อรองรับลำดับชั้นสิทธิ์ 4 ระดับ เช่น ผู้ใช้/ไลบรารี/ไดรเวอร์/เคอร์เนล
    ยังสามารถส่ง access selector ไปมาเพื่อบังคับใช้สิ่งอย่างการจำกัดขนาดโครงสร้างข้อมูลได้ด้วย และเพื่อเรื่องนี้จึงเพิ่ม FS/GS เพื่อให้รีจิสเตอร์อเนกประสงค์แต่ละตัวมี permission mask ของตัวเองได้
    ลองคิดย้อนดูสักนิด pointer (capability หรือก็คือ selector) สามารถมีได้ไม่ใช่แค่ base address แต่ยังมีขอบเขตที่ฮาร์ดแวร์บังคับใช้ และด้วยโมเดลสิทธิ์ ฟังก์ชันอย่าง strcpy() ก็สามารถถูกทำให้เขียนลงหน่วยความจำที่ไม่ใช่บัฟเฟอร์ปลายทางหรือพื้นที่ทำงานของตัวเองไม่ได้ ภาษาและ OS สามารถบังคับไม่ให้ฟังก์ชันที่ถูกเรียกเขียนลง stack ของผู้เรียก หรือแม้แต่บังคับให้รันบน stack ที่แยกออกไปโดยสิ้นเชิงก็ได้ นี่เป็นแค่จุดเริ่มต้นเท่านั้น
    แม้ผ่านไปเกือบ 40 ปี วงการก็ยังพยายามฟื้นตัวจากความผิดพลาดในการออกแบบ OS และภาษาโปรแกรมรอบ ๆ โมเดลหน่วยความจำแบบแบน และโมเดลสิทธิ์ผู้ใช้/supervisor แบบเรียบง่าย 386 ให้การรองรับระดับฮาร์ดแวร์สำหรับเขียนฟีเจอร์ของ OS ที่ทุกวันนี้ก็ยังไม่ค่อยพบเห็น เช่น ดู CHERI ได้

    • ถึงจะบอกว่า “pointer (capability หรือก็คือ selector) สามารถมีได้ไม่ใช่แค่ base address แต่ยังมีขอบเขตที่ฮาร์ดแวร์บังคับใช้” แต่ใน LDT มี pointer ที่เป็นไปได้แค่ 8 พันตัว และใน GDT ก็มีแค่ 8 พันตัวเช่นกัน โมเดล segment ของ x86 ไม่ได้เหมาะกับการทำ capability เท่าไรนัก
    • ผมไม่ได้ตาม grsecurity มานานแล้ว แต่คงไม่แปลกใจถ้า segment register ยังถูกใช้อยู่ เช่นกรณี PaX UDEREF
      https://forums.grsecurity.net/viewtopic.php?f=7&t=3046
      https://pax.grsecurity.net/docs/PaXTeam-H2HC12-PaX-kernel-se...
    • protected mode แบบอิง segment โดยรวมถูกนำเข้ามาตั้งแต่ 286 แล้ว 386 ก็แค่เพิ่ม FS/GS และขยาย segment เป็น 32 บิตประมาณนั้น
  • อยากเน้นว่า 386SX สำคัญแค่ไหน พ่อผมอยากได้ PC ให้ผม เลยขอให้เพื่อนประกอบเครื่อง clone 286 ให้ แต่เพื่อนคนนั้นให้ 386SX มาแทน
    เขาบอกว่า “ราคาแทบจะเท่ากับ 286 แต่สิ่งที่ได้ตอนนี้เป็น CPU 32 บิตแน่นอน” และเขาพูดถูก มันรัน Win 3.11 ได้ เป็น CPU 32 บิตที่ซื้อได้ในราคา 286 ค่อนข้างเอื้อมถึง จึงเป็นผลิตภัณฑ์ที่อัจฉริยะมาก

  • ตรงนี้ 286 ก็ควรได้รับการยอมรับบ้าง 286 เป็นชิปที่ถูกประเมินค่าต่ำไปพอสมควร เพราะมี จำนวนคำสั่งที่ประมวลผลได้ต่อคล็อก ดีกว่ารุ่นก่อนหน้ามาก และจุดนี้ก็นำไปสู่ข้อด้อยหลักของ 386
    ตอนรันโค้ด 16 บิตเดิม จำนวนคำสั่งต่อคล็อกของ 386 โดยพื้นฐานแล้วเท่ากับ 286 และคล็อกช่วงแรกก็แค่ 12MHz เลยค่อนข้างจืด จนกว่าคล็อกจะเริ่มขยับขึ้นจริงจังและผู้คนเริ่มใช้ฟีเจอร์ 32 บิต มันก็ไม่ได้มีความหมายมากไปกว่าคู่แข่ง DOS/286 ราคาแพงนัก

  • ไม่นานหลัง 386 เปิดตัว ผมที่ยังเป็นวัยรุ่นก็ซื้อคอมพิวเตอร์เครื่องแรก ตอนนั้นในตลาดมีทั้ง PC 286 และ 386 แต่ 386 มีพรีเมียมด้านราคาสูงมาก
    ตอนนั้นผมยังไม่ค่อยเข้าใจความต่าง เลยซื้อระบบ 286 และภายในไม่กี่ปีหลังจากรู้ความต่าง ก็เสียใจมากที่ไม่ได้เก็บเงินเพิ่มแล้วซื้อ 386 ไม่นานหลังจากนั้นผมเริ่มเขียน assembly ระดับต่ำอย่าง system bootstrap ของ OS ของเล่น แต่ใช้ protected mode 32 บิตไม่ได้ แถมถึงจุดหนึ่งเกมที่ต้องใช้ 386 โดยเฉพาะก็เริ่มออกมา ทำให้ผมรู้สึกถูกทิ้งอยู่พักใหญ่จนกระทั่งซื้อ 486 เครื่องแรก

  • Intel พัฒนาสาย x86 ต่อจาก 386 ไปจนถึง Pentium Pro และ amd64 เลยสงสัยว่าทำไม Motorola ไม่ทำแบบนั้นกับ 68k
    ผมเคยเห็นการถกเถียงที่เหมือนตั้งสมมติฐานไว้ก่อนว่า 68k ล้าสมัยและจำเป็นต้องถูก PowerPC แทนที่ แต่ดูเหมือนเป็นการคาดเดา ผมไม่เคยเห็นเหตุผลเชิงเทคนิค และ 68k ก็ดูเป็นสถาปัตยกรรมที่สะอาดกว่า x86 หลัง 286 สำหรับลากต่อไปข้างหน้า

    • คอมพิวเตอร์ที่ใช้ 68k ขายได้ไม่มากพอ ความต้องการชิปเลยไม่พอ ทำให้แข่งราคากับ Intel ไม่ได้ และยากที่จะหาเหตุผลรองรับการลงทุน วิจัยและพัฒนา ขนาดใหญ่ Intel มีตลาด PC compatible และนั่นทำให้มีความต้องการชิปมหาศาล
    • ปัญหาไม่ใช่เรื่องเทคนิค แต่คือการไม่มี “กองเงิน” แบบที่ Intel เข้าถึงได้ และพร้อมกันนั้นลูกค้าก็ต้องการ ความเข้ากันได้ย้อนหลัง
      Intel เองก็พยายามย้ายไป i860 หรือ Itanic อย่างน้อยสองครั้งแต่ล้มเหลว ดังนั้นการปรับปรุง x86 จึงกลายเป็นทางเลือกที่ชนะ
      https://news.ycombinator.com/item?id=37796469
    • ถ้าถามว่ามีความพยายามเชิงพาณิชย์ในการสร้างระบบ IDE, VESA, PCI บนโปรเซสเซอร์ 68k ไหม ก็มีอยู่ระดับหนึ่ง มี VME bus
      มันเป็นความพยายามสร้างบัสมาตรฐานที่ทำงานข้ามผู้ผลิตหลายรายและเข้ากับ CPU 88k ได้ด้วย ไม่ได้ประสบความสำเร็จมหาศาล แต่ก็สำเร็จอยู่บ้าง
  • คำว่า “สำคัญที่สุด” ฟังดูเหมือนมีการตีความแบบคนรุ่นหลังปนอยู่นิดหน่อย ถ้า 8086/8088 ไม่ได้บังเอิญแพร่หลายผ่าน IBM PC ก็คงอาจไม่มี 80386 ด้วยซ้ำ ไม่ต้องพูดถึง 80286
    ถึงอย่างนั้น 386 ก็เป็นความสำเร็จทางวิศวกรรมที่เปลี่ยนโลก ในไทม์ไลน์ที่ยุติธรรมและเที่ยงตรงกว่านี้ ผมคิดว่า 68030 คงครองโลกไปแล้ว แต่ก็ลดทอนสิ่งที่ Intel ทำสำเร็จไม่ได้

    • 386 อาจเป็นอย่างนั้นได้ แต่ 286 น่าจะเสร็จสมบูรณ์แล้วในช่วงที่ IBM PC เปิดตัว หรืออาจเสร็จก่อนหน้านั้นด้วยซ้ำ
  • 386 เป็นตัวแรกในสายนี้ที่รองรับ demand-paged virtual memory และนั่นเปิดสิ่งที่ OS ทำได้ขึ้นอย่างมาก โดยส่วนตัวผมมองว่านี่คือฟีเจอร์สำคัญที่สุดที่ 386 มอบให้
    PC เครื่องที่สองของผมคือ 386 ที่รัน SCO UNIX ส่วน PC เครื่องแรกคือ Heathkit H-8 ที่ใช้ 8080 และรัน CP/M

  • ส่วนที่บอกว่า Bob Childs เป็นหนึ่งในผู้ออกแบบ 286 และเคยคิดไอเดียการขยาย 286 ให้เป็น 32 บิตแบบไม่เป็นทางการอยู่ราว 6 เดือนนั้นน่าทึ่งมาก
    มันเป็นไปได้ยังไงกัน? ตลอด 30 ปีที่ทำงานมา ผมไม่เคยมีงานไหนเลยที่ไม่มีคนมาคอยบีบคอให้ต้องส่งมอบผลงานที่จับต้องได้ทุกไม่กี่วัน