← กลับไปยังบทความทั้งหมด

สถาปัตยกรรมคอมพิวเตอร์ พื้นฐาน การออกแบบ และวิวัฒนาการ

สรุปใจความสำคัญ

  • สถาปัตยกรรมคอมพิวเตอร์ครอบคลุม 3 ส่วนหลักคือ ISA, ไมโครอาร์คิเทคเจอร์ และการออกแบบระบบ
  • แนวคิด Stored-program concept คือการเก็บคำสั่งและข้อมูลไว้ในหน่วยความจำเดียวกัน
  • ไมโครโค้ด (Microcode) ช่วยให้ฮาร์ดแวร์มีความยืดหยุ่นและสามารถรองรับชุดคำสั่งที่หลากหลายได้

ในทางวิทยาการคอมพิวเตอร์และวิศวกรรมคอมพิวเตอร์ สถาปัตยกรรมคอมพิวเตอร์ คือการออกแบบเชิงแนวคิดและโครงสร้างการทำงานของระบบคอมพิวเตอร์ ซึ่งกำหนดวิธีการจัดระเบียบและการโต้ตอบกันของส่วนประกอบต่างๆ เพื่อให้สามารถรันโปรแกรมได้อย่างมีประสิทธิภาพ โดยทั่วไปจะเป็นคำอธิบายในภาพรวมที่ไม่ได้ลงลึกถึงรายละเอียดการนำไปใช้งานจริง ซึ่งครอบคลุมตั้งแต่ชุดคำสั่ง (Instruction Set Architecture), ไมโครอาร์คิเทคเจอร์ของ CPU, หน่วยความจำ และระบบอินพุต/เอาต์พุต

นอกจากนี้ สถาปัตยกรรมคอมพิวเตอร์ยังต้องพิจารณาถึงการแลกเปลี่ยน (Trade-offs) ระหว่างประสิทธิภาพ, ต้นทุน, พลังงาน, ความน่าเชื่อถือ และความปลอดภัย

ประวัติความเป็นมา

สถาปัตยกรรมคอมพิวเตอร์เครื่องแรกที่มีการบันทึกไว้ปรากฏอยู่ในจดหมายโต้ตอบระหว่าง Charles Babbage และ Ada Lovelace ซึ่งอธิบายถึงเครื่อง Analytical Engine ต่อมาในปี 1936 Konrad Zuse ได้บรรยายในคำขอสิทธิบัตรสำหรับการสร้างคอมพิวเตอร์ Z1 ว่าคำสั่งของเครื่องสามารถจัดเก็บไว้ในหน่วยความจำเดียวกับที่ใช้เก็บข้อมูล ซึ่งเป็นแนวคิดของ Stored-program concept

ตัวอย่างสำคัญอื่นๆ ในยุคแรก ได้แก่:

  • เอกสารปี 1945 ของ John von Neumann เรื่อง First Draft of a Report on the EDVAC ซึ่งอธิบายการจัดระเบียบองค์ประกอบทางตรรกะ
  • ข้อเสนอ Electronic Calculator สำหรับ Automatic Computing Engine ของ Alan Turing ในปี 1945 ซึ่งมีการอ้างอิงถึงงานของ von Neumann

คำว่า "Architecture" เริ่มถูกนำมาใช้ในวรรณกรรมคอมพิวเตอร์โดย Lyle R. Johnson และ Frederick P. Brooks, Jr. จาก IBM ในปี 1959 เพื่ออธิบายระดับรายละเอียดของซูเปอร์คอมพิวเตอร์ Stretch โดย Johnson ระบุว่าการอธิบายรูปแบบ ประเภทคำสั่ง พารามิเตอร์ฮาร์ดแวร์ และการเพิ่มความเร็ว อยู่ในระดับของ "System Architecture" ซึ่งมีประโยชน์มากกว่าคำว่า "Machine Organization"

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

ประเภทของสถาปัตยกรรมคอมพิวเตอร์

วินัยด้านสถาปัตยกรรมคอมพิวเตอร์แบ่งออกเป็น 3 หมวดหมู่หลัก ดังนี้:

1. สถาปัตยกรรมชุดคำสั่ง (Instruction Set Architecture - ISA)

กำหนดรหัสเครื่อง (Machine Code) ที่ตัวประมวลผลอ่านและทำงาน รวมถึงขนาดของคำ (Word size), โหมดการระบุตำแหน่งหน่วยความจำ, รีจิสเตอร์ของตัวประมวลผล และประเภทของข้อมูล

2. ไมโครอาร์คิเทคเจอร์ (Microarchitecture)

หรือเรียกว่า "การจัดระเบียบคอมพิวเตอร์" (Computer Organization) ซึ่งอธิบายว่าตัวประมวลผลเฉพาะรุ่นจะนำ ISA ไปใช้งานจริงอย่างไร เช่น ขนาดของ CPU Cache เป็นเรื่องของไมโครอาร์คิเทคเจอร์ ไม่ใช่ ISA

3. การออกแบบระบบ (Systems Design)

ครอบคลุมส่วนประกอบฮาร์ดแวร์อื่นๆ ทั้งหมดในระบบคอมพิวเตอร์ เช่น การประมวลผลข้อมูลนอกเหนือจาก CPU (เช่น Direct Memory Access - DMA), การทำ Virtualization และการประมวลผลแบบหลายโปรเซสเซอร์ (Multiprocessing)

เทคโนโลยีขั้นสูงในสถาปัตยกรรมคอมพิวเตอร์

ในบริษัทเทคโนโลยีขนาดใหญ่ เช่น Intel มีการใช้เทคโนโลยีเพิ่มเติม เช่น:

  • Macroarchitecture: ชั้นของสถาปัตยกรรมที่มีความนามธรรมมากกว่าไมโครอาร์คิเทคเจอร์
  • Assembly ISA: การใช้ Assembler ที่ชาญฉลาดเพื่อแปลงภาษา Assembly ที่เป็นมาตรฐานกลางให้เป็นภาษารหัสเครื่องที่แตกต่างกันตามการนำไปใช้งาน
  • Programmer-visible Macroarchitecture: เครื่องมือระดับสูง เช่น คอมไพเลอร์ ที่กำหนดอินเทอร์เฟซมาตรฐานให้กับโปรแกรมเมอร์ เพื่อลดความแตกต่างระหว่าง ISA และไมโครอาร์คิเทคเจอร์ที่อยู่เบื้องหลัง (เช่น มาตรฐานของภาษา C, C++ หรือ Java)
  • Microcode: ซอฟต์แวร์ที่แปลคำสั่งเพื่อให้ทำงานบนชิปได้ ทำหน้าที่เป็นตัวหุ้ม (Wrapper) รอบฮาร์ดแวร์ ช่วยให้ผู้ออกแบบชิปมีความยืดหยุ่น เช่น การทำให้ชิปรุ่นใหม่รองรับชุดคำสั่งของรุ่นเก่าได้โดยไม่ต้องแก้ไขซอฟต์แวร์
  • Pin Architecture: ฟังก์ชันฮาร์ดแวร์ที่ไมโครโปรเซสเซอร์ต้องมีเพื่อให้รองรับกับแพลตฟอร์มฮาร์ดแวร์ เช่น พิน A20M ใน x86

คำถามที่พบบ่อย

ISA และ Microarchitecture ต่างกันอย่างไร?

ISA คือข้อกำหนดหรือ 'สัญญา' ระหว่างซอฟต์แวร์และฮาร์ดแวร์ (เช่น ชุดคำสั่งที่ CPU รองรับ) ส่วน Microarchitecture คือวิธีการที่ฮาร์ดแวร์นำ ISA นั้นไปสร้างให้เกิดขึ้นจริงในทางกายภาพ (เช่น การออกแบบวงจรหรือขนาดแคช)

ใครคือผู้บุกเบิกแนวคิดสถาปัตยกรรมคอมพิวเตอร์?

มีผู้บุกเบิกหลายท่าน เช่น Charles Babbage และ Ada Lovelace ในยุคแรก ตามด้วย Konrad Zuse, John von Neumann และ Alan Turing ที่วางรากฐานระบบคอมพิวเตอร์สมัยใหม่

ทำไมต้องมีการใช้ Microcode ใน CPU?

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