ประเภทของ Processor: การจำแนกตามสถาปัตยกรรมชุดคำสั่ง (ISA)
หัวข้อย่อย: CISC (Complex Instruction Set Computer)
ความหมายและแนวคิดพื้นฐานของ CISC
CISC ย่อมาจาก Complex Instruction Set Computer หรือ "คอมพิวเตอร์ที่มีชุดคำสั่งซับซ้อน" เป็นสถาปัตยกรรมชุดคำสั่ง (ISA) ที่ถูกออกแบบมาให้มีคำสั่งที่ซับซ้อนและทรงพลัง โดยแต่ละคำสั่งสามารถทำงานหลายขั้นตอนในครั้งเดียว ตัวอย่างเช่น คำสั่ง MULT ใน CISC อาจสามารถคูณตัวเลขสองตัวแล้วเก็บผลลัพธ์ในหน่วยความจำได้ในคำสั่งเดียว ในขณะที่สถาปัตยกรรมแบบ RISC (Reduced Instruction Set Computer) จะต้องใช้หลายคำสั่งเพื่อทำงานเดียวกัน
แนวคิดหลักของ CISC คือการลดจำนวนคำสั่งที่โปรแกรมเมอร์ต้องเขียน โดยให้แต่ละคำสั่งทำหน้าที่ได้มากที่สุด ซึ่งช่วยลดความซับซ้อนของโค้ดและประหยัดพื้นที่หน่วยความจำ (ซึ่งในอดีตมีราคาแพงมาก) สถาปัตยกรรมนี้ได้รับความนิยมอย่างมากในช่วงทศวรรษ 1970-1980 โดยเฉพาะในตลาดคอมพิวเตอร์ส่วนบุคคลและเซิร์ฟเวอร์
ข้อสังเกตสำคัญ: แม้ CISC จะมีคำสั่งที่ซับซ้อน แต่การออกแบบฮาร์ดแวร์เพื่อถอดรหัสและดำเนินการตามคำสั่งเหล่านี้ก็มีความซับซ้อนสูงเช่นกัน ส่งผลให้ใช้พลังงานมากและอาจมีประสิทธิภาพต่ำในบางงาน
ตัวอย่างสถาปัตยกรรม CISC ที่โดดเด่น: x86
สถาปัตยกรรม x86 เป็นตัวอย่างที่ชัดเจนที่สุดของ CISC โดยเริ่มพัฒนาจาก Intel 8086 ในปี 1978 และยังคงถูกใช้ในโปรเซสเซอร์ของ Intel และ AMD ในปัจจุบัน (เช่น Intel Core i7, AMD Ryzen) x86 มีชุดคำสั่งที่เติบโตอย่างต่อเนื่อง โดยเพิ่มคำสั่งใหม่ๆ เช่น SSE, AVX, และ AES-NI เพื่อรองรับการทำงานเฉพาะทาง
ตัวอย่างคำสั่ง CISC ใน x86:
MOV(Move): ย้ายข้อมูลระหว่างรีจิสเตอร์ หน่วยความจำ หรือค่าคงที่ADD(Addition): บวกค่าสองค่าและเก็บผลลัพธ์MUL(Multiply): คูณค่าสองค่า (สามารถจัดการตัวเลขขนาดใหญ่ได้)PUSH/POP: จัดการสแต็กสำหรับการเรียกฟังก์ชันLOOP: คำสั่งวนซ้ำที่รวมการลดค่าตัวนับและการตรวจสอบเงื่อนไขในคำสั่งเดียว
ข้อดีของ CISC
- ลดจำนวนคำสั่งในโปรแกรม: เนื่องจากแต่ละคำสั่งทำงานได้หลายอย่าง จึงต้องใช้คำสั่งน้อยลงในการทำงานเดียวกัน ส่งผลให้โค้ดมีขนาดเล็กลง
- ประหยัดหน่วยความจำ: โค้ดที่สั้นกว่าหมายถึงการใช้หน่วยความจำน้อยลง ซึ่งเป็นข้อได้เปรียบในยุคที่หน่วยความจำมีราคาแพง
- ง่ายต่อการเขียนโปรแกรม (ในอดีต): โปรแกรมเมอร์สามารถเขียนคำสั่งที่ซับซ้อนได้โดยตรง โดยไม่ต้องกังวลเกี่ยวกับการแบ่งงานเป็นขั้นตอนย่อย
- ความเข้ากันได้ย้อนหลัง (Backward Compatibility): สถาปัตยกรรม x86 รักษาความเข้ากันได้กับซอฟต์แวร์รุ่นเก่า ทำให้โปรแกรมที่เขียนเมื่อ 30 ปีก่อนยังทำงานบนโปรเซสเซอร์สมัยใหม่ได้
ข้อเสียของ CISC
- ความซับซ้อนของฮาร์ดแวร์: การถอดรหัสคำสั่งที่ซับซ้อนต้องใช้ตรรกะควบคุม (Control Logic) ที่ใหญ่และซับซ้อน ส่งผลให้พื้นที่ชิปใหญ่ขึ้นและใช้พลังงานมากขึ้น
- ประสิทธิภาพไม่แน่นอน: คำสั่งที่ซับซ้อนอาจใช้รอบสัญญาณนาฬิกา (Clock Cycles) หลายรอบในการทำงาน ทำให้คาดการณ์ประสิทธิภาพได้ยาก
- ปัญหาคอขวด: การออกแบบแบบ CISC มักมีปัญหาคอขวดที่การถอดรหัสคำสั่ง เนื่องจากคำสั่งมีความยาวไม่คงที่ (Variable-length instruction) ทำให้ยากต่อการทำ Pipeline
- การใช้พลังงานสูง: เหมาะสำหรับอุปกรณ์ที่เสียบปลั๊ก เช่น คอมพิวเตอร์ตั้งโต๊ะและเซิร์ฟเวอร์ แต่ไม่เหมาะกับอุปกรณ์พกพาที่ใช้แบตเตอรี่
การทำงานของ CISC: ตัวอย่างเปรียบเทียบกับ RISC
| คุณสมบัติ | CISC (x86) | RISC (ARM) |
|---|---|---|
| จำนวนคำสั่ง | มากและซับซ้อน | น้อยและเรียบง่าย |
| ความยาวคำสั่ง | แปรผัน (1-15 ไบต์) | คงที่ (32 บิต) |
| รอบสัญญาณนาฬิกาต่อคำสั่ง | หลายรอบ (โดยเฉลี่ย 2-10) | 1 รอบ (ส่วนใหญ่) |
| การใช้งานหน่วยความจำ | โค้ดกะทัดรัด | โค้ดใหญ่กว่า |
| การออกแบบฮาร์ดแวร์ | ซับซ้อน | เรียบง่าย |
| การใช้พลังงาน | สูง | ต่ำ |
ตัวอย่างการทำงาน: การคูณตัวเลขใน CISC กับ RISC
สมมติว่าเราต้องการคำนวณ A = B * C โดยที่ B และ C อยู่ในหน่วยความจำ
ใน CISC (x86):
MOV EAX, [B] ; โหลดค่า B ลงรีจิสเตอร์ EAX
MUL EAX, [C] ; คูณ EAX ด้วยค่า C (คำสั่งเดียว)
MOV [A], EAX ; เก็บผลลัพธ์กลับไปที่ A
ใช้ 3 คำสั่ง
ใน RISC (ARM):
LDR R1, [B] ; โหลดค่า B
LDR R2, [C] ; โหลดค่า C
MUL R3, R1, R2 ; คูณ R1 และ R2 เก็บใน R3
STR R3, [A] ; เก็บผลลัพธ์
ใช้ 4 คำสั่ง (เนื่องจาก RISC แยกการโหลดข้อมูลและการคำนวณออกจากกัน)
สถาปัตยกรรม CISC ในปัจจุบัน
แม้ CISC จะมีข้อเสียหลายประการ แต่โปรเซสเซอร์สมัยใหม่ เช่น Intel Core และ AMD Ryzen ได้นำเทคนิคต่างๆ มาชดเชย เช่น:
- Microcode: แปลงคำสั่ง CISC ที่ซับซ้อนเป็นไมโครออปเรชัน (Micro-ops) ง่ายๆ ก่อนทำงาน ซึ่งคล้ายกับ RISC
- Out-of-Order Execution: จัดเรียงลำดับการทำงานของคำสั่งใหม่เพื่อใช้ทรัพยากรให้เต็มประสิทธิภาพ
- Branch Prediction: ทำนายทิศทางของคำสั่งกระโดดเพื่อลดการหยุดชะงักของ Pipeline
ด้วยเทคนิคเหล่านี้ ทำให้ CISC ยังคงมีประสิทธิภาพสูงในการทำงานทั่วไป โดยเฉพาะงานที่ต้องใช้การประมวลผลหนัก เช่น การเล่นเกม การตัดต่อวิดีโอ และการจำลองทางวิทยาศาสตร์
สรุป
CISC เป็นสถาปัตยกรรมที่มีชุดคำสั่งซับซ้อน เน้นการทำงานหลายขั้นตอนในคำสั่งเดียว เพื่อลดขนาดโค้ดและเพิ่มความสะดวกในการเขียนโปรแกรมในอดีต แม้จะมีข้อเสียในเรื่องความซับซ้อนของฮาร์ดแวร์และการใช้พลังงาน แต่ด้วยนวัตกรรมทางวิศวกรรม ทำให้ CISC โดยเฉพาะ x86 ยังคงเป็นตัวเลือกหลักในคอมพิวเตอร์ส่วนบุคคลและเซิร์ฟเวอร์จนถึงปัจจุบัน