คอมพิวเตอร์ในยานอวกาศ

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

พิมพ์ครั้งแรกในนิตยสาร QuickPC ฉบับที่ 123

 

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

 

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

คอมพิวเตอร์ในโครงการ อพอลโล

ความสำเร็จที่น่าทึ่งที่สุดของมนุษย์ในศตวรรษที่ยี่สิบ น่าจะเป็นการส่งคนไปเหยียบดวงจันทร์ ในวันที่ 22 มิถุนายน ค.ศ. 1969 ความสำเร็จนี้ จะเกินขึ้นไม่ได้ ถ้าไม่มีฮาร์ดแวร์ และซอฟท์แวร์ที่เหมาะสม ที่สถานีควบคุมภาคพื้นดินมีการใช้เครื่องคอมพิวเตอร์แบบแมนเฟรม และแบบมินิ ที่มีกำลังประมวลผลสูงหลายเครื่อง สำหรับคำนวณแผนการเดินทาง ทั้งก่อนหน้า ระหว่าง และภายหลังจากยานออกเดินทางพ้นพื้นโลก คอมพิวเตอร์เหล่านี้เป็นคอมพิวเตอร์อเนกประสงค์ที่มีการผลิตและใช้งานกันอยู่ในยุคนั้น ส่วนคอมพิวเตอร์ที่อยู่ในยานอวกาศ มีสองแบบคือ AGC และ HP-65 ดังที่จะเล่าให้ฟังดังต่อไปนี้

คอมพิวเตอร์นำร่อง AGC

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

คอมพิวเตอร์ AGC เป็นอุปกรณ์ที่มีผลต่อความสำเร็จของโครงการมาก ความสำเร็จของมันทำให้มนุษย์สามารถร่อนลงดวงจันทร์ได้ปลอดภัย เข้าเชื่อมต่อกับห้องทดลองอวกาศสกายแลปได้หลายเที่ยวบิน และเข้าเชื่อมกับยานอวกาศโซยุสของรัสเซียเมื่อปี ค.ศ. 1975 ในโครงการอพอลโล-โซยุส ได้อย่างเป็นผลสำเร็จ

ฮาร์ดแวร์ของ AGC

ระบบนี้เป็นระบบกึ่งอัตโนมัติ ถูกใช้งานโดยนักบินอวกาศในยานทั้งสามนาย ฮาร์ดแวร์เป็นดิจิตอลคอมพิวเตอร์อเนกประสงค์ ทำงานแบบ 16 บิต ชุดคำสั่งอนุญาตให้สร้างรูทีนแยกย่อยออกเป็นหลายๆ โหมดได้ ความเร็วรอบของหน่วยความจำเท่ากับ 11.7 มิลิวินาที หน่วยความจำทำจากห่วงเฟอไรท์ ตัวโปรเซสเซอร์ประกอบด้วย IC หลายพันตัว คอมพิวเตอร์ทั้งเครื่องหนัก 29.5 กิโลกรัม

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

สัญญลักษณ์โครงการอพอลโล

เดิมคอมพิวเตอร์ที่คิดสร้างล้วนเป็นแบบอานาลอก จนกระทั้งปี ค.ศ. 1961นาสาเซ็นสัญญาว่าจ้างให้ MIT ศึกษาความเป็นไปได้ ที่จะพัฒนาดิจิตอลคอมพิวเตอร์สำหรับโครงการอพอลโล

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

แต่ถึงกระนั้นโครงการก็ยังดำเนินต่อไปเรื่อย ส่วนมากจะเป็นการสร้างซอฟท์แวร์สำหรับเครื่องใหญ่ เพื่อจำลองสถานการณ์และฝีกบิน ในขณะเดียวกันอุตสาหกรรมการผลิตไอซี ก็ก้าวหน้าไปเร็วพอที่จะทำให้ตัวชิปมีฟังชันซับซ้อนขึ้น การทำงานเชื่อถือได้มากกว่าเดิม และราคาก็ปรับตัวลดลงมามาก ในปี 1964 เมื่อโครงการเริ่มจัดซื้อไอซี (เป็นชิพ NOR เกต) ปรากฏว่าราคาตกลงมาเหลือเพียงตัวละหนึ่งพันบาท

ฮาร์ดแวร์ของ AGC มีส่วนประกอบหลักหกส่วนดังนี้

1. หน่วยจ่ายพลังงาน : เพาเวอร์ซับพลายทำหน้าที่รับไฟกระแสตรงตรง 26 โวลท์ จากยานอวกาศ มาแปลงเป็นไฟ 13 เพื่อจ่ายให้ส่วน DSKY และ 3 โวลต์สำหรับวงจรตรรกะ และวงจรสร้างสัญญาณนาฬิกา ในช่วง สแตนบาย ไฟจะหยุดเลี้ยง DSKY คงมีเฉพาะไฟ 3 โวลต์จ่ายให้วงจรตรรกะ ซึ่งจะลดการสูญเสียได้ประมาณ 100 วัตต์

2. หน่วยรับข้อมูล : ประกอบด้วยรีจิสเตอร์สี่ตัว ทำหน้าที่รับข้อมูลจากอุปกรณ์นำร่อง รับข้อมูลจากศูนย์ควบคุมที่โลก ("อัพลิงค์") รับข้อมูลจากแป้นพิมพ์ รับข้อมูลจากตัว CPU เองที่จะส่งออกมาเมื่อมีความผิดพลาดที่หน่วยความจำ

3. หน่วยส่งข้อมูล : ประกอบด้วยรีจิสเตอร์สี่ตัวเช่นเดียวกับหน่วยรับ ทำหน้าที่ส่งสัญญาณสื่อสารกับนักบิน และอุปกรณ์ต่างๆ ในยานอวกาศ และส่งข้อมูลไปยังศูนย์ควบคุมที่โลกผ่านคลื่นวิทยุ

4. หน่วยประมวลผลกลาง : เป็นส่วนบรรจุวงจรตรรกะ และรีจิสเตอร์ที่ทำให้โปรแกรมทำงานได้ โปรแกรมจะถูกนำเข้ามาทำงานตามลำดับโดยวงจรควบคุมลำดับ



ภาพถ่ายของ คอมพิวเตอร์ AGC


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

1. แอคคิวมูลเตอร์ : เก็บตัวตั้งและผลลัพธ์การคำนวณ
2. LP : เก็บบิตนัยยะสำคัญต่ำสุดที่ได้จากการคุณ
3. B : ใช้เป็นตัวสำรองและบัฟเฟอร์
4. Z : โปรแกรมเคาท์เตอร์
5. Q : สำหรับคำสั่งกระโดด เช่นการขัดจังหวะ
6. Input : ใช้ส่งข้อมูลออก
7. Output : ใช้รับข้อมูลเข้า
8. G : ใช้รับข้อมูลเข้าออกกับหน่วยความจำ
9. S : กำหนดตำแหน่งข้อมูลในหน่วยความจำร่วมกับ Bank
10. Bank : กำหนดชุดของหน่วยความจำที่จะใช้งาน
11. SQ : เก็บรหัสยาวสี่บิตกำหนดลำดับคำสั่ง
12. X, Y, U : ใช้ในการบวกเลข
13 พาริตี : ใช้ตรวจสอบพาริตีของหน่วยความจำเพื่อหาความผิดพลาด

5. หน่วยความจำ : ส่วนที่เป็น ROM มีขนาด 24K ทำจากวงแหวนแม่เหล็กขนาดจิ๋วจำนวนมาก ใช้เก็บคำสั่งและข้อมูลที่ตายตัวเช่นตารางตำแหน่งดาว หน่วยความจำส่วนที่ทำหน้าที่เป็น RAM มีขนาด 1K การอ่านข้อมูลจากหน่วยความจำส่วนนี้ จะทำให้ข้อมูลหายไป ถ้าต้องการรักษาไว้ หลังจากอ่านจะต้องเขียนกลับคืนด้วย

6. หน่วยกำหนดเวลา : เป็นวงจรสร้างฐานสัญญาณนาฬิกาเพื่อใช้ในการกำหนดให้อุปกรณ์ และคอมพิวเตอร์แต่ละตัวที่ทำงานร่วมกัน จะได้ประสานกันถูกจังหวะ (synchronization)




ภาพย่อพิมพ์เขียวของส่วนควบคุมยานอพอลโล สังเกตุ AGC คือส่วนที่เป็นสีฟ้า



ชุดคำสั่งของซีพียูใน AGC

ชุดคำสั่งสำหรับสั่งการทำงานของ AGC เป็นภาษาเครื่อง ที่ผู้ใช้สามารถป้อนเข้าไปเป็นเลขฐานสิบหกผ่านทางแป้นพิมพ์บน DSKY

คำสั่งสามัญ : จะถูกเก็บไว้รวมกับข้อมูลในหน่วยความจำเลย และถูกนำเข้ามาทำงานที่ละคำสั่งไล่ไปตามลำดับก่อนหลัง ตัวควบคุมลำดับก็คือวงจรที่จะทำงานตามจังหวะสัญญาณนาฬิกา เพื่อสร้างแอดเดรสอ้างไปยังตำแหน่งของหน่วยความจำที่มีโปรแกรมเก็บอยู่

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

และคำสั่งสำรอง : ใช้เพื่อทดสอบเครื่องคอมพิวเตอร์เท่านั้น