1 คะแนน โดย GN⁺ 2024-09-21 | 2 ความคิดเห็น | แชร์ทาง WhatsApp

เริ่มต้น

  • ในปี 2012 มีการรัน Linux บนไมโครคอนโทรลเลอร์ 8 บิต (AVR) และสร้างสถิติโลกในการรัน Linux บนเครื่องที่มีสเปกต่ำที่สุด
  • ในปี 2023 มีโปรเจ็กต์ที่บูต Linux บน MOS 6510 ซึ่งมีสเปกต่ำกว่า AVR อีก
  • Intel 4004 เป็นไมโครโปรเซสเซอร์เชิงพาณิชย์ตัวแรกของโลก เป็นชิป 4 บิต จึงเริ่มโปรเจ็กต์นี้เพื่อสร้างมาตรฐานใหม่ของสเปกต่ำที่สุด

4004

  • 4004 ทำงานเป็นหน่วย 4 บิต และพัฒนามาเพื่อใช้กับเครื่องคิดเลขเป็นหลัก
  • ไม่มีการดำเนินการเชิงตรรกะ และมีคำสั่งหลักเพียง ADD กับ SUB
  • มีรูปแบบการคำนวณที่เป็นเอกลักษณ์โดยใช้ carry flag
  • มีรีจิสเตอร์ 4 บิต 16 ตัว, program counter 12 บิต และฮาร์ดแวร์สแตก 4 ระดับ
  • ต้องการความเร็วสัญญาณนาฬิกาขั้นต่ำ และไม่รองรับ interrupt
  • มีคำสั่งบางอย่างที่สามารถดำเนินการกับหน่วยความจำได้โดยตรง

การควบคุมลำดับการทำงาน

  • ใช้ฮาร์ดแวร์สแตกสำหรับการเรียกและคืนค่าซับรูทีน
  • มีคำสั่งกระโดดแบบมีเงื่อนไข และสามารถตรวจจับเหตุการณ์ภายนอกผ่านขา TEST
  • ใช้แนวคิด code page เพื่อจัดการพื้นที่โค้ดขนาด 4096 ไบต์

หน่วยความจำและ I/O

  • 4004 ไม่ประมวลผลคำสั่งหน่วยความจำโดยตรง แต่ให้ชิปหน่วยความจำเป็นผู้จัดการ
  • รองรับ RAM bank ได้สูงสุด 8 ชุด โดยแต่ละชุดประกอบด้วยชิป 4002 จำนวน 4 ตัว
  • 4001 มี ROM ขนาด 256 ไบต์และพอร์ต I/O 4 บิต
  • 4265 เป็นอุปกรณ์ I/O ทั่วไปที่มีพอร์ต I/O 4 บิต 4 พอร์ต

4008, 4009, 4289

  • 4008 และ 4009 ถูกออกแบบมาเพื่อเชื่อมต่อกับชิปหน่วยความจำทั่วไป
  • 4289 เป็นชิปที่รวม 4008 และ 4009 เข้าด้วยกัน และสื่อสารได้ที่ระดับสัญญาณ 5V

การใช้หน่วยความจำและ state nibble

  • ใช้คำสั่ง DCL เพื่อเลือก memory bank
  • RAM bank แต่ละชุดประกอบด้วยชิป 4002 จำนวน 4 ตัว โดยแต่ละชิปมี nibble ที่ระบุตำแหน่งได้ 16 ค่า และ state nibble 4 ค่า

สรุปโดย GN⁺

  • โปรเจ็กต์นี้ช่วยให้เข้าใจวิธีการทำงานของไมโครโปรเซสเซอร์ยุคแรกอย่าง Intel 4004 ได้เป็นอย่างดี
  • แสดงให้เห็นวิธีเอาชนะการออกแบบที่เป็นเอกลักษณ์และข้อจำกัดของ 4004
  • เปิดโอกาสให้ได้สัมผัสข้อจำกัดของไมโครโปรเซสเซอร์ยุคแรกเมื่อเทียบกับไมโครคอนโทรลเลอร์สมัยใหม่
  • โปรเจ็กต์ที่มีลักษณะคล้ายกันคือโปรเจ็กต์บูต Linux บน MOS 6510

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

 
y15un 2024-09-21

คนเขียนต้นฉบับคือคนนั้นเองที่เพิ่งถูกพาตัวลงจากเวทีในงาน DEF CON เพราะเรื่องแบดจ์ครั้งนี้ ผมจะไม่เข้าข้างฝ่ายไหน แต่ถึงอย่างนั้นฝีมือของเขาก็น่าทึ่งจริง ๆ

 
GN⁺ 2024-09-21
ความคิดเห็นจาก Hacker News
  • เคยคิดว่า NetBSD บน m68030 15 MHz ก็ช้าแล้ว แต่โปรเจกต์นี้สุดยอดจริงๆ

    • ช่วงปลายยุค 80 ถึงต้นยุค 90 คอมพิวเตอร์เริ่มมีอุปกรณ์เก็บข้อมูลถาวร, พื้นที่แอดเดรสแบบเปิด, และ MMU จนไปถึงจุดที่เรียกว่าคอมพิวเตอร์สมัยใหม่
    • Amiga 3000 หรือคอมพิวเตอร์ i80486 ก็สามารถทำสิ่งเดียวกับคอมพิวเตอร์สมัยใหม่ได้
    • Dmitry แสดงให้เห็นว่าเราจะนิยามคำว่า "ใช้งานได้จริง" ให้กว้างได้แค่ไหน
  • อยากเพิ่มพูนความรู้จนสามารถเข้าใจโปรเจกต์นี้ได้

    • เข้าใจส่วน "Section 14.b & 14.c - Getting the data..." อย่างถ่องแท้เลย
    • ประมวลผลไฟล์ 400K files เป็นเวลา 4 ปี (ประมาณวันละ 275 รูป)
    • ทั้งที่มีพลังประมวลผล, พื้นที่เก็บข้อมูล, และเครือข่ายมากมาย แอปซิงก์สื่อก็ยังล่มหรือซิงก์ได้ช้า
    • AirDrop ล้มเหลว และ UI ก็ไม่มีฟังก์ชัน 'Select-All'
  • ชอบตัวอย่าง AVR อยู่แล้ว และตอนนี้ก็มีตัวอย่างใหม่เพิ่มมาอีก

    • เมื่อดูจากความถี่และการใช้พลังงาน ก็สงสัยว่ามันปล่อย RF ออกมามากแค่ไหน
    • คำว่า "soubroutine" อาจเป็นการพิมพ์ผิด
  • โปรเจกต์นี้ไม่ได้ถูกเลย ต้องขอบคุณนักสะสมบน Ebay

    • คงจะเลือก VFD แทน LCD แต่ VFD อาจเสียหายได้ถ้าคอมไพล์นานๆ
  • เป็นโปรเจกต์ที่น่าทึ่งมาก

    • มองเห็นได้จากบิตสูงของ PC ว่าตอนนี้กำลังรันอะไรอยู่
    • P.S.: โหลดเคอร์เนลได้เร็วกกว่า IPMI ของเซิร์ฟเวอร์ผ่านอินเทอร์เน็ตเสียอีก
  • ใช้เวลาถ่ายวิดีโอ 9 วัน, อีมูเลชันได้ 4 ชั่วโมงต่อ 1 วินาที

    • สงสัยว่าทำไมถึงใช้ Windows 95
  • โปรเจกต์แบบนี้ควรมีรางวัลโนเบล

  • เป็นบทความที่น่าสนใจมาก

    • รู้เรื่อง 4004 มาบ้างเล็กน้อย แต่ระดับความพิสดารนั้นน่าทึ่งมาก
    • ทำให้อยากรู้ว่าจะสร้าง CPU ด้วยจำนวนทรานซิสเตอร์เท่ากันได้ไหม
    • 8 บิตทำให้การเขียนโปรแกรมง่ายขึ้นมาก
    • ขอบคุณที่ทำเอกสารประกอบงานนี้ไว้ดีมาก
  • บนไมโครคอมพิวเตอร์ยุคแรกๆ มี virtual machine (Z-machine หรือ JVM) ที่ทำงานได้

    • มีประโยชน์เมื่อใช้เป็นเป้าหมายของคอมไพเลอร์ไม่ได้
    • SWEET16
    • UCSD Pascal
  • ในส่วน "Why MIPS?":

    • บางตัวมี addressing mode ที่ช้า (RISCV)
    • สงสัยว่ามีอะไรเป็นปัญหากับ addressing mode ของ RISC-V