บทที่ 3 เรื่อง หน่วยประมวลผลกลางหรือซีพียู(CPU)
CPU คืออะไร ?
หน่วยประมาลผลกลางหรือซีพียู เรียกอีกชื่อหนึ่งว่า โปรเซสเซอร์ (processor) หรือ ชิป (Chip) นับเป็นอุปกรณ์ที่มีความสำคัญมากที่สุดของฮาร์ดแวร์ เพราะมีหน้าที่ในการประมวลผลข้อมูลที่ผู้ใช้ป้อนเข้ามาทางอุปกรณ์อินพุต ตามชุดคำสั่งหรือโปรแกรมที่ผู้ใช้ต้องการใช้งาน
CPU เปรียบเสมือนสมองของเครื่องคอมพิวเตอร์มีหน้าที่ในการคำนวณประมวลผลข้อมูลและเป็นศูนย์กลางทางการควบคุมการทำงานของอุปกรณ์ต่างๆ โดย CPU ประกอบด้วย 3 ส่วนหลักได้แก่
1. ส่วนการควบคุม (Control Unit) เป็นศูนย์กลางการควบคุมการทำงานภายในหน่วยประมวลผล
2. ส่วนการคำนวณทางคณิตศาสตร์และตรรกะศาสตร์ (Arithmetic/Logic Unit) เป็นส่วนของการคำนวณต่างๆ
3. ส่วนหน่วยความจำและรีจิสเตอร์(Primary Memory/Register) ช่วยในการเก็บข้อมูลชั่วคราวเพื่อนำไปประมวลผลหรือจัดเตรียมข้อมูลก่อนและหลังการจัดเก็บข้อมูล
พัฒนาการของซีพียู
เป็น บริษัทผู้ผลิตซีพียูที่เก่าแก่และมีการพัฒนา มาอย่างต่อเนื่อง นับตั้งแต่ซีพียู 8086 , 8088 และซีพียูในตระกูล 80x86 เรื่อยมา จนมาถึง Celeron , Pentium II และ III ซึ่งได้รับความนิยมอย่างมากในสมัยนั้น ก่อนที่จะก้าวเข้าสู่ยุค Celeron II, Pentium 4 และ Pentium 4 Extreme Edition ที่ได้รับการตอบรับจากผู้ใช้อย่างกว้างขวาง เรื่อยมาจนมาถึงยุคของ Celeron D และ Pentium 4 ภายใต้รหัส Processor Number ใหม่ รวมไปถึงซีพียูในกลุ่ม Dual และ Quad-Core อย่าง Pentium D , Pentium Dual-Core, Pentium Extreme Edition , Core Duo, Core 2 Duo, Core 2 Quad และ Core 2 Extreme ที่ถือได้ว่าเป็นจุดเริ่มต้นของยุคซีพียูในแบบ Dual & Multi-Core บนเครื่องซีพีที่ใช้กันอยู่แพร่หลายในปัจจุบัน รวมทั้งซีพียูบนโครงสร้างทางสถาปัตยกรรมแบบใหม่อย่าง Nehalem ที่จะมาพร้อมกันแบรนด์ใหม่ที่ชื่อว่า Core i7 เป็นต้น
รายชื่อของซีพียูสำหรับเครื่องคอมพิวเตอร์แบบ PC หรือ Desktop แต่ละรุ่นตั่งแต่อดีตจนถึงปัจจุบันของบริษัท อินเทล (Intel) มีดังนี้
- ตระกูล 80x86 เป็นซีพียูรุ่นแรกๆ เช่น 80386,80486 ซึ่งปัจจุบันไม่ใช้กันแล้ว
- Pentium เป็นซีพียูรุ่นแรกที่เปลี่ยนไปใช้วิธีตั้งชื่อเรียกว่า Pentium แทนตัวเลขแบบเดิม
- Pentium MMX เป็นซีพียูที่ได้มีการนำเอาคำสั่ง MMX (Multimedia extension) มาใช้เพื่อเพิ่มขีดความสามารถทางด้านมัลติมีเดีย
- Pentium Pro เป็นซีพียูรุ่นแรกของตระกูล P6 ซีพียูรุ่นนี้ใช้กับชิปเซ็ตรุ่น 440 FX และได้รับความนิยมในเครื่องเซิร์ฟเวอร์เป็นอย่างมากสมัยนั้น
- Pentium II เป็นการนำซีพียู Pentium Pro มาปรับปรุงโดยเพิ่มชุดคำสั่ง MMX เข้าไป และเปลี่ยนไปใช้บรรจุภัณฤฑ์แบบตลับ ซึ่งใช้เสียบลงใน Slot 1 โดย L2 Cache ขนาด 512 ME ที่มีความเร็วเพียงครึ่งเดียวของความเร็วซีพียูCeleron เป็นการนำเอา Pentium II มาลดองค์ประกอบ โดยยุคแรกได้ตัด L2 Cache ออกมาเพื่อให้มีราคาถูกลง
- Pentium III เป็นซีพียูที่ใช้ชื่อรหัสว่า Katmai ซึ่งถูกเพิ่มเติมชุดคำสั่ง SSE เข้าไป
- Celeron II รุ่นแรกเป็นการนำเอา Pentium III ( Coppermine และ Tualatin) มาลด L2 Cache ลงเหลือเพียง 128 KB และ 256 KB ตามลำดับจากนั้นรุ่นถัดมาก็ได้นำเอาซีพียู Pentium 4 (Willamette และ Northwood) โดยยังคงใช้ชื่อเรียกอย่างเป็นทางการว่า Celeron หรือ Celeron II
หลักการทำงานของซีพียู
การทำงานของคอมพิวเตอร์ 1 คำสั่งจะประกอบด้วยขั้นตอนการทำงานหลายขั้นตอน ซึ่งเรียนกแต่ละขั้นตอนว่า "รอบการทำงาน" โดยที่อัตราความเร็วของแต่ละรอบการทำงานจะถูกควบคุมด้วยสัญญาณนาฬิกาภายในเครื่อง ซีพียูจะทำงานตามจังหวะของสัญญาณนาฬิกาโดยหน่วยรับข้อมูลล่วงหน้าจะควบคุมข้อมูลที่เข้าคิวก่อนจะมีการประมวลผล เช่น มีคำสั่งบวกเลขสองจำนวน หน้าที่ของหน่วยงานนี้ก็คือ ส่งข้อมูลให้กับหน่วยแปลรหัสคำสั่งอยู่ตลอดเวลาจนหน่วยแปลรหัสคำสั่งไม่รู้สึกว่าว่างงาน ขณะที่หน่วยจัดการหน่วยความจำแบบเซกเมนต์และแบบหน้าจะทำการเปลี่ยนตำแหน่งเสมือนของคำสั่งบวกนั้นให้เป็นตำแหน่งจริง ทางกายภาพ เพื่อจะให้หน่วยติดต่อบัสเข้าใจหน่วยติดต่อบัส ซึ่งเชื่อมต่อการทำงานที่เหลือเข้าด้วยกันจะดึงคำสั่งจากแรมขึ้นมาแล้วส่งให้กับหน่วยรับข้อมูลล่วงหน้าอีกครั้ง
หน่วยรับข้อมูลล่วงหน้าจะส่งข้อมูลไปให้หน่วยแปลรหัสคำสั่ง จะทำการตรวจสอบข้อมูลที่ส่งมานั้นคืออะไร ซึ่งผลก็คือ เป็นคำสั่งบวกเลข 2 จำนวน เสร็จแล้วก็ถอดรหัสให้อยู่ในรูปแบบคำสั่งที่หน่วยดำเนินงานตามคำสั่งเข้าใจและสามารถทำงานได้ จากนั้นจึงส่งข้อมูลให้กับหน่วยดำเนินงาน
หน่วยทดสอบการป้องกันจะควบคุมการสื่อสารในตัวซีพียู ไม่ให้มีการแก้ไขข้อมูลในหน่วยความจำหรือเข้าใช้อุปกรณ์รอบข้างคอมพิวเตอร์อื่นๆ โดยคำสั่งนั้นไม่มีสิทธ์หรือไม่ได้รับอนุญาติ
เมื่อหน่วยติดต่อบัสพบและดึงข้อมูลจากแรมได้ข้อมูลจะถูกส่งผ่านหน่วยทดสอบการป้องกันแล้วไปยังรีจิสเตอร์ในตัวประมวลผล ซึ่งทำหน้าที่เสมือนกับกระดาษทดเลข ขั้นตอนการดึงข้อมูลต่อไปก็เหมือนเดิม โดยเป็นการดึงข้อมูลตัวหลังเข้าสู่หน่วยดำเนินการแต่จะไม่เก็บลงรีจิสเตอร์
หน่วยคำนวณและตรรกะจะทำหน้าที่เหมือนเครื่องคิดเลขทีหน้าที่บวกเลขตัวแรกที่เก็บอยู่ในรีจิสเตอร์กับตัวเลขหลังที่ดึงมาจากหน่วยความจำโดยตรง
หน่วยการควบคุมจะบอกให้หน่วยติดต่อบัสเก็บผลลัพธ์ที่ได้ไว้ในแรม โดยหน่วยจัดการหน่วยความจำแบบเซกเมนต์และแบบหน้าจะช่วยบอกตำแหน่งจริงของหน่วยความจำทางกายภาพ โดยการแปลงตำแหน่งที่อยู่เสมือนที่ส่งมาจากหน่วยควบคุม ให้เป็นตามตำแหน่งจริงทางกายภาพ จึงเป็นการสิ้นสุด 1 คำสั่ง
การติดต่อระหว่างอุปกรณ์รอบข้างกับซีพียู
การขัดจังหวะหรือการอินเตอร์รัพ (interrupt) ซึ่งมีการติดต่อแบบต่างๆ คือแบบพอลลิ่ง (polling),แบบ อินเตอร์รัพ (interrupt) และแบบเมลบ๊อกซ์ (mailbox) ดังมีรายละเอียดดังนี้
- การติดต่อแบบพอลลิ่ง (polling) ลักษณะการติดต่อแบบนี้คือ ทุกๆ ช่วงเวลาหนึ่ง (Quantum time) ซีพียูจะหยุดงานที่ทำอยู่ชั่วคราวและไปตรวจเช็คที่แต่ละแชนแนลเพื่อดูว่า มีอุปกรณ์ตัวใดบ้างต้องการส่งข้อมูลมาให้ซีพียูจากอุปกรณ์แรกไปถึงอุปกรณ์สุดท้าย ถ้าอุปกรณ์ต้องการส่งข้อมูล ซีพียูก็จะรับข้อมูลมาแต่ถ้าอุปกรณ์นั้นไม่ต้องการส่งข้อมูล ซีพียูก็จะเปลี่ยนไปตรวจสอบอุปกรณ์ตัวอื่นต่อไปจนกระทั่งตรวจสอบครบหมด ซีพียูจะกลับไปทำงานของมันตามเดิม วนรอบ (Loop) การทำงานเช่นนี้เรื่อยไปลักษณะของการพอลลิ่ง อาจยกตัวอย่างของการสอนหนังสือในห้องเรียนมาประกอบเพื่อความเข้าใจ นั่นคือในขณะที่ครูกำลังสอนนักเรียน ทุก ๆ 10 นาที คุณครูจะหยุดสอนและไล่ถามนักเรียนทีละคนว่ามีปัญหาอะไรหรือไม่ ถ้านักเรียนคนที่ถูกถามไม่มีคำถามหรือข้อสงสัยคุณครูก็เปลี่ยนไปถามนักเรียนคนถัดไป แต่ถ้า นักเรียนคนนั้นมีปัญหาจะถาม ครูก็จะอนุญาตให้นักเรียนถามได้ เมื่อถาม-ตอบเสร็จแล้วครูก็จะไปถามนักเรียนคนอื่นต่อจนหมดชั้น แล้วครูจึงกลับไปสอนต่อจนอีก 10 นาทีจึงเริ่มต้นถามใหม ข้อเสียของการพอลลิ่งคือ ในกรณีที่อุปกรณ์ต่างๆ ไม่ต้องการส่งข้อมูลเลย ซีพียูจะเสียเวลาที่ต้องตรวจเช็คอุปกรณ์ทุกตัว (คุณครูเสียเวลาในการถามนักเรียนทุกคน โดยที่อาจไม่มีนักเรียนคนไหนมีคำถามเลย) และอีกประการหนึ่งคืออุปกรณ์ที่ต้องการส่งข้อมูลจะส่งข้อมูลให้ซีพียูได้เฉพาะเมื่อถึงเวลาที่ซีพียูตรวจเช็คมาถึงตัวมันเท่านั้น ทำให้อุปกรณ์นั้นเสียเวลาในการรอ (นักเรียนต้องรอจนกว่าคุณครูถามมาถึงตัวเขา เขาถึงจะถามคำถามได้)
- การติดต่อแบบอินเตอร์รัพ (interrupt) ลักษณะการติดต่อแบบนี้จะลดข้อเสียแบบพอลลิ่งได้มาก มีขั้นตอนดังนี้คือ เมื่ออุปกรณ์ตัวใดต้องการส่งข้อมูล มันจะส่งสัญญาณผ่านทางแชนแนลไปบอกซีพียู เมื่อซีพียูรับทราบแล้วจะหยุดงานที่ทำอยู่ชั่วคราว เพื่อให้อุปกรณ์ทำการส่งข้อมูลจนกระทั่งเสร็จสิ้นลง ซีพียูจึงกลับไปทำงานที่ทำค้างไว้ต่อ เปรียบได้กับการที่คุณครูสอนไปเรื่อยๆ เมื่อนักเรียนคนใดมีคำถามจะถาม ก็ยกมือเป็นการบอกให้คุณครูรับทราบ (ส่งสัญญาณให้ซีพียู) เมื่อคุณครูเห็นนักเรียนยกมือ (CPU รับรู้การต้องการส่งข้อมูล) ก็หยุดสอนชั่วคราวเปิดโอกาสให้นักเรียนได้ถาม (ส่งข้อมูล) และตอบคำถาม เมื่อนักเรียนเข้าใจในปัญหาที่มีอยู่ (การส่ง ข้อมูลสิ้นสุดลง) ครูก็เริ่มสอนนักเรียนต่อไป (ซีพียูกลับมาทำงานที่ค้างไว้) การติดต่อแบบอินเตอร์รัพต์ ซีพียูไม่ต้องเสียเวลาในการตรวจเช็คความต้องการส่งข้อมูลของอุปกรณ์ ทุกตัว และในทำนองเดียวกันอุปกรณ์ก็ไม่ต้องเสียเวลารอแต่อย่างไรก็ตามซีพียูอาจไม่สามารถหยุดงานที่กำลังทำอยู่ได้ในทันที ในกรณีนี้อุปกรณ์ตัวนั้นต้องรอจนกระทั่งงานที่ซีพียูกำลังทำอยู่นี้เสร็จสิ้นลงเสียก่อน มันจึงส่งข้อมูลได้
- การติดต่อแบบเมลบ๊อกซ์ (mailbox) ลักษณะการติดต่อแบบนี้ ระบบต้องเสียเนื้อที่ในหน่วย ความจำบางส่วนเพื่อเป็นที่สำหรับพักข้อมูล เมื่อมีอุปกรณ์บางตัวที่ต้องการส่งข้อมูล มันก็จะส่งข้อมูลไปไว้ที่หน่วยความจำส่วนนี้ และสำหรับซีพียูทุกๆ ช่วงเวลาหนึ่งๆ ซีพียูจะหยุดงานที่ทำไว้เพื่อจะไปตรวจสอบที่หน่วยความจำส่วนนี้เพื่อดูว่ามีข้อมูลอยู่หรือไม่ ถ้าไม่มี ข้อมูลถูกส่งไปไว้ในหน่วยความจำนี้ ซีพียูจะกลับไปทำงานเดิมที่ค้างไว้ แต่ถ้ามีมันก็จะรับข้อมูลเข้ามา จะเห็นได้ว่าการติดต่อแบบเมลบ๊อกซ็นี้เป็นการผสมผสานระหว่างการอินเทอร์รัพต์กับการพอลลิ่ง
ที่อธิบายมานี้เป็นการติดต่อในรูปแบบที่อุปกรณ์ภายนอกต้องการส่งข้อมูลให้ซีพียู ในทำนองเดียวกับ ถ้าซีพียูต้องการส่งข้อมูลให้กับอุปกรณ์ต่างๆ ก็ทำได้ในลักษณะเดียวกัน