เปิดเผยเทคนิคฮาร์ดแวร์อัจฉริยะของ ZX Spectrum : วิธีที่ชิปหน่วยความจำเสียและเทคนิคตัวต้านทานสร้างประวัติศาสตร์คอมพิวเตอร์

ทีมบรรณาธิการ BigGo
เปิดเผยเทคนิคฮาร์ดแวร์อัจฉริยะของ ZX Spectrum : วิธีที่ชิปหน่วยความจำเสียและเทคนิคตัวต้านทานสร้างประวัติศาสตร์คอมพิวเตอร์

เครื่อง ZX Spectrum คอมพิวเตอร์ 8-bit เรียบง่ายจากต้นทศวรรษ 1980 ยังคงสร้างความหลงใหลให้กับโปรแกรมเมอร์และผู้ที่ชื่นชอบฮาร์ดแวร์หลายทศวรรษหลังจากเปิดตัว สิ่งที่ทำให้เครื่องนี้โดดเด่นอย่างแท้จริงไม่ใช่แค่ผลกระทบต่อประวัติศาสตร์คอมพิวเตอร์เท่านั้น แต่ยังรวมถึงเทคนิคการลดต้นทุนอันชาญฉลาดที่ทำให้เครื่องนี้เป็นไปได้ตั้งแต่แรก

การอพยพของชุมชนคอมพิวเตอร์ย้อนยุคเมื่อเร็วๆ นี้ได้เผยให้เห็นการตัดสินใจทางวิศวกรรมที่พิเศษสุดซึ่งถูกนำมาใช้ในการสร้างหนึ่งในคอมพิวเตอร์บ้านที่มีอิทธิพลมากที่สุดเท่าที่เคยมีมา สิ่งเหล่านี้ไม่ใช่วิธีแก้ปัญหาที่สง่างาม แต่เป็นวิธีแก้ปัญหาอันชาญฉลาดที่เกิดจากความจำเป็นและข้อจำกัดด้านง예산

มือที่ถือดินสอกำลังเขียนคำว่า " PAPER " เป็นสัญลักษณ์ของความคิดสร้างสรรค์และการจดบันทึกในคอมพิวเตอร์ย้อนยุคที่ได้รับแรงบันดาลใจจากการออกแบบของ ZX Spectrum
มือที่ถือดินสอกำลังเขียนคำว่า " PAPER " เป็นสัญลักษณ์ของความคิดสร้างสรรค์และการจดบันทึกในคอมพิวเตอร์ย้อนยุคที่ได้รับแรงบันดาลใจจากการออกแบบของ ZX Spectrum

กลยุทธ์ชิปหน่วยความจำเสีย

บางทีเทคนิคที่กล้าหาญที่สุดคือแนวทางของ Sinclair ในการจัดหาหน่วยความจำ เครื่อง Spectrum 48K จริงๆ แล้วมีหน่วยความจำทางกายภาพ 96KB แต่ครึ่งหนึ่งของมันถูกทำให้ไม่สามารถใช้งานได้โดยเจตนา Sinclair ซื้อชิปหน่วยความจำที่มีข้อบกพร่องในราคาที่ลดหนักมาก จากนั้นจึงคัดแยกตามส่วนที่ใช้งานได้ ไม่ว่าจะเป็นส่วน 32KB บนหรือล่าง

เครื่องแต่ละเครื่องมาพร้อมกับจัมเปอร์ที่เลือกพื้นที่หน่วยความจำที่ใช้งานได้ แนวทางนี้ทำให้ Sinclair สามารถใช้ชิ้นส่วนที่มีข้อบกพร่องซึ่งผู้ผลิตรายอื่นจะทิ้งไป ลดต้นทุนอย่างมากในขณะที่ยังคงส่งมอบ RAM ที่ใช้งานได้ 48KB ตามที่สัญญาไว้

การกำหนดค่าหน่วยความจำของ ZX Spectrum 48K :

  • หน่วยความจำทางกายภาพทั้งหมด: 96KB
  • RAM ที่ใช้งานได้: 48KB (32KB สำหรับการทำงาน + 16KB ระบบ)
  • ROM: 16KB (ตัวแปลภาษา BASIC )
  • หน่วยความจำที่ไม่ทำงาน: 32KB (ชิปที่มีข้อบกพร่องที่ไม่ได้ใช้งานโดยเจตนา)
  • พื้นที่หน่วยความจำที่เลือกได้ด้วย jumper (32KB ส่วนบนหรือส่วนล่าง)

การต่อสู้ระหว่าง CPU และชิปกราฟิกเพื่อการเข้าถึงหน่วยความจำ

ความสัมพันธ์ระหว่างโปรเซสเซอร์ Z80 และชิปกราฟิก ULA เผยให้เห็นเทคนิคที่น่าสนใจอีกแบบหนึ่ง แทนที่จะใช้มัลติเพล็กเซอร์ราคาแพงในการจัดการการเข้าถึงหน่วยความจำ Sinclair เพียงแค่เชื่อมต่อแอดเดรสบัสทั้งสองผ่านตัวต้านทาน เมื่อชิปทั้งสองพยายามเข้าถึงหน่วยความจำพร้อมกัน ULA จะเอาชนะสัญญาณของ Z80

ชิปกราฟิกจะหยุดนาฬิกาของ CPU ทำการดำเนินการหน่วยความจำ จากนั้นปล่อยการควบคุมกลับไปยังโปรเซสเซอร์ สิ่งนี้สร้างระบบที่การเข้าถึงพื้นที่หน่วยความจำบางส่วน โดยเฉพาะเฟรมบัฟเฟอร์ จะช้าลงอย่างเห็นได้ชัด แต่มันใช้งานได้และช่วยรักษาต้นทุนให้ต่ำ

รายละเอียดสถาปัตยกรรมฮาร์ดแวร์:

  • CPU: โปรเซสเซอร์ Zilog Z80
  • กราฟิก: ชิป ULA (Uncommitted Logic Array)
  • ชิปหน่วยความจำ: 4116 DRAM (16,384 × 1-บิต จัดเรียงเป็น 128×128)
  • การเข้าถึงหน่วยความจำ: การแชร์ address bus แบบใช้ตัวต้านทาน
  • การจัดการสัญญาณนาฬิกา: ULA สามารถหยุดสัญญาณนาฬิกา Z80 ชั่วคราวเมื่อเกิดการขัดแย้งในการเข้าถึงหน่วยความจำ

การจัดวางหน่วยความจำหน้าจอที่แปลกประหลาด

การจัดระเบียบหน่วยความจำหน้าจอที่แปลกของ ZX Spectrum ไม่ใช่เรื่องตามอำเภอใจ แต่ถูกออกแบบมาตามข้อจำกัดของชิป DRAM 4116 ชิปเหล่านี้ต้องการแอดเดรสแถวและคอลัมน์แยกกันเพื่อให้นาฬิกาทำงานตามลำดับ แต่เสนอโหมดเพจเร็วสำหรับการเข้าถึงที่ต่อเนื่องกันภายในแถวเดียวกัน

การจัดวางหน่วยความจำแบบคดเคี้ยวช่วยลดความจำเป็นในการใช้แอดเดรสแถวใหม่ เพิ่มประสิทธิภาพสำหรับรูปแบบการเข้าถึงตามธรรมชาติของฮาร์ดแวร์ สิ่งนี้อธิบายว่าทำไมการวาดกราฟิกต้องใช้การคำนวณแอดเดรสที่ซับซ้อนแทนการเข้าถึงหน่วยความจำเชิงเส้นแบบง่ายๆ

การจัดระเบียบหน่วยความจำหน้าจอ:

  • ความละเอียด: 256×192 พิกเซล
  • ตารางตัวอักษร: 32×24 บล็อก ขนาด 8×8 พิกเซล
  • การจัดเรียงหน่วยความจำ: การจัดเรียงแบบเซอร์เพนไทน์เป็นกลุ่มๆ ละ 8 แถว
  • ข้อจำกัดของสี: 1 สีหมึก + 1 สีกระดาษ ต่อบล็อกพิกเซล 8×8
  • ขนาดเฟรมบัฟเฟอร์: ~7KB
แผนภาพที่วาดด้วยมือแสดงการกำหนดที่อยู่พิกเซลในระบบหน่วยความจำ เน้นการจัดระเบียบหน่วยความจำหน้าจอที่เป็นเอกลักษณ์ของ ZX Spectrum
แผนภาพที่วาดด้วยมือแสดงการกำหนดที่อยู่พิกเซลในระบบหน่วยความจำ เน้นการจัดระเบียบหน่วยความจำหน้าจอที่เป็นเอกลักษณ์ของ ZX Spectrum

เทคนิคการเขียนโปรแกรมขั้นสูง

โปรแกรมเมอร์ที่มีทักษะค้นพบวิธีการผลักดันฮาร์ดแวร์ให้เกินข้อจำกัดที่เห็นได้ชัด เทคนิคยอดนิยมหนึ่งเกี่ยวข้องกับการซิงโครไนซ์กับ ULA เพื่อเปลี่ยนแอตทริบิวต์สีในช่วงเวลาที่หน้าจอว่างในแนวนอน สิ่งนี้ทำให้สามารถแสดงผลที่มีสีสันมากกว่าข้อจำกัดมาตรฐานหนึ่งพาเลตต์ต่อพิกเซล 8x8 ที่จะเสนอแนะ

ด้วยการซิงโครไนซ์กับ ULA คุณสามารถเขียนทับแถวแอตทริบิวต์ในแต่ละช่วงเวลาที่หน้าจอว่างในแนวนอน เวลาเดียวที่คุณจะมีรอบสำรองแน่นอนคือเมื่อคุณไม่ได้ทำอะไรอื่นเลย

เทคนิคที่คล้ายกันสามารถสร้างเอฟเฟกต์ขอบที่มีสีสัน โดยโปรแกรมเมอร์วาดลายเส้นคงที่ด้วยการจับเวลาการเปลี่ยนสีอย่างระมัดระวังในระหว่างรอบการรีเฟรชหน้าจอ

มรดกของนวัตกรรมที่ขับเคลื่อนด้วยข้อจำกัด

ความสำเร็จของ ZX Spectrum เกิดจากการทำให้คอมพิวเตอร์เข้าถึงได้สำหรับคนรุ่นใหม่ทั้งหมดทั่วยุโรป ต้นทุนต่ำที่ได้มาจากเทคนิคฮาร์ดแวร์เหล่านี้ ทำให้คอมพิวเตอร์เข้าไปในบ้านที่ไม่สามารถจ่ายสำหรับทางเลือกที่แพงกว่าได้

นักพัฒนาสมัยใหม่ยังคงสร้างซอฟต์แวร์สำหรับแพลตฟอร์มนี้ ด้วยความดึงดูดใจจากความเรียบง่ายและความท้าทายเชิงสร้างสรรค์ที่ข้อจำกัดของมันนำเสนอ สถาปัตยกรรมของเครื่องสามารถรู้ได้อย่างสมบูรณ์โดยโปรแกรมเมอร์คนเดียว ซึ่งตรงกันข้ามกับระบบที่ซับซ้อนในปัจจุบัน

การประนีประนอมฮาร์ดแวร์เหล่านี้ ซึ่งอาจดูหยาบคายตามมาตรฐานสมัยใหม่ แสดงให้เห็นถึงการเรียนการสอนระดับปรมาจารย์ในการวิศวกรรมภายใต้ข้อจำกัดที่รุนแรง พวกเขาแสดงให้เห็นว่าการแก้ปัญหาเชิงสร้างสรรค์และความเต็มใจที่จะยอมรับวิธีแก้ปัญหาที่ไม่เป็นทางการสามารถสร้างผลิตภัณฑ์ที่เปลี่ยนโลก แม้เมื่อ หรือบางทีเพราะ พวกเขาถูกสร้างจากชิ้นส่วนที่เสียและยึดติดกันด้วยเทคนิคที่ฉลาด

อ้างอิง: ZX Spectrum Graphics Magic: The Basics Every Spectrum Fan Should Know