ใจหน่วยประมวลผลเปรียบเสมือนเป็นสมองของคอมพิวเตอร์ ในการทำหน้าที่ตัดสินหรือคำนวณ จากคำสั่งที่ได้รับมา เช่น การเปรียบเทียบ การกระทำการทางคณิตศาสตร์ ฯลฯ
กระบวนการพื้นฐาน
- อ่านชุดคำสั่ง (fetch)
- สั่งตีความชุด (decode)
- ประมวลผลชุดคำสั่ง (execute)
- อ่านข้อมูลจากหน่วยความจำ (memory)
- มวลการเขียนข้อมูล/ส่งผลการประกอบ (write back) สถาปัตยกรรมของหน่วยประมวลผลกลาง ประกอบไปด้วย ส่วนควบคุมการประมวลผล (control unit) และ ส่วนประมวลผล (execution unit) และจะเก็บข้อมูลระหว่างการคำนวณ ไว้ในระบบเรจิสเตอร์
การทำงานของหน่วยประมวลผลกลาง
การทำงานของหน่วยประมวลผลกลางแบ่งออกตามหน้าที่ได้เป็นห้ากลุ่มใหญ่ ๆ ดังนี้ โดยทำงานทีละคำสั่ง จากคำสั่งที่เรียงลำดับกันไว้ตอนการที่เขียนโปรแกรมFetch - การอ่านชุดคำสั่งขึ้นมา 1 คำสั่งจากโปรแก
รม ในรูปของรหัสเลขฐานสอง (Binary Code from on-off of BIT)
- Decode - การตีความ 1 คำสั่งนั้นด้วยวงจรถอดรหัส (Decoder circuit) ตามจำนวนหลัก (BIT) ว่ารหัสนี้จะให้วงจรอื่นใดทำงานด้วยข้อมูลที่ใด
- Execute - การทำงานตาม 1 คำสั่งนั้น คือ วงจรใดในไมโครโปรเซสเซอร์ทำงาน เช่น วงจรบวก วงจรลบ วงจรเปรียบเทียบ วงจรย้ายข้อมูล ฯลฯ
- Memory - การติดต่อกับหน่วยความจำ การใช้ข้อมูลที่อยู่ในหน่วยจำชั่วคราว (RAM, Register) มาใช้ในคำสั่งนั้นโดยอ้างที่อยู่ (Address)
- Write Back - การเขียนข้อมูลกลับ โดยมีหน่วยจำ Register ช่วยเก็บที่อยู่ของคำสั่งต่อไป ภายหลังมีคำสั่งกระโดดบวกลบที่อยู่
การพัฒนา
การพัฒนาซีพียูก้าวหน้าอย่างรวดเร็ว และถูกพัฒนาให้อยู่ในรูปไมโครชิบที่เรียกว่าไมโครโพรเซสเซอร์ ไมโครโพรเซสเซอร์จึงเป็นหัวใจหลักของระบบคอมพิวเตอร์ตั้งแต่ซูเปอร์คอมพิวเตอร์ถึงไมโครคอมพิวเตอร์ ล้วนแล้วแต่ใช้ไมโครชิปเป็นซีพียูหลัก ในเมนเฟรมคอมพิวเตอร์ เช่น ES9000 ของบริษัทไอบีเอ็มก็ใช้ไมโครชิปเป็น ซีพียู แต่อาจจะมีมากกว่าหนึ่งชิปประกอบรวมเป็นซีพียู
เทคโนโลยีไมโครโพรเซสเซอร์ได้พัฒนาอย่างรวดเร็ว โดยเริ่มจากปี พ.ศ. 2518 บริษัทอินเทลได้พัฒนา ไมโครโพรเซสเซอร์ที่เป็นที่รู้จักกันดีคือ ไมโครโพรเซสเซอร์เบอร์ 8080 ซึ่งเป็นซีพียูขนาด 8 บิต ซีพียูรุ่นนี้จะรับข้อมูล เข้ามาประมวลผลด้วยตัวเลขฐานสองครั้งละ 8 บิต และทำงานภายใต้ระบบปฎิบัติการซีพีเอ็ม (CP/M) ต่อมาบริษัทแอปเปิ้ล ก็เลือก ซีพียู 6502 ของบริษัทมอสเทคมาผลิตเป็นเครื่องแอปเปิ้ลทู ได้รับความนิยมเป็นอย่างมากในยุคนั้น
หน่วยประกอบ
1.หน่วยควบคุม (Arithmetic and logic unit)
ทำหน้าที่ควบคุมการทำงาน ควบคุมการเขียนอ่านข้อมูลระหว่างหน่วยความจำของซีพียู ควบคุมกลไกการทำงาน ทั้งหมดของระบบ ควบคุมจังหวะเวลา โดยมีสัญญาณนาฬิกา เป็นตัวกำหนดจังหวะการทำงาน
2. หน่วยคำนวน (Control Unit)
เป็นหน่วยที่มีหน้าที่นำเอาข้อมูลที่เป็นตัวเลขฐานสองมาประมวลผลทางคณิตศาสตร์ และตรรกะ เช่น
การบวก การลบ การเปรียบเทียบ และ การสลับตัวเลข เป็นต้นการคำนวณทำได้เร็วตามจังหวะการควบคุม
ของหน่วยควบคุม
หน่วยควบคุม
หน่วยควบคุมทำหน้าที่ในการควบคุมลำดับการทำงานภายในหน่วยประมวลผลกลางระหว่างที่ทำการประมวลผลหน่วยควบคุมจะแปลคำสั่งของแต่ละโปรแกรม และสั่งการส่วนต่างๆ ของคอมพิวเตอร์เพื่อให้บรรลุผลตามคำสั่งนั้น ๆ
หน่วยประมวลผลเปรียบเสมือนเป็นสมองของคอมพิวเตอร์ ในการทำหน้าที่ตัดสินใจหรือคำนวณ จากคำสั่งที่ได้รับมา เช่น การเปรียบเทียบ การกระทำการทางคณิตศาสตร์ ฯลฯ
โดยมีกระบวนการพื้นฐานคือ
- อ่านชุดคำสั่ง (fetch)
- ตีความชุดคำสั่ง (decode)
- ประมวลผลชุดคำสั่ง (execute)
- อ่านข้อมูลจากหน่วยความจำ (memory)
- เขียนข้อมูล/ส่งผลการประมวลกลับ (write back)
สถาปัตยกรรมของหน่วยประมวลผลกลาง ประกอบไปด้วย ส่วนควบคุมการประมวลผล (control unit) และ ส่วนประมวลผล (execution unit) และจะเก็บข้อมูลระหว่างการคำนวณ ไว้ในระบบเรจิสเตอร์
การทำงานของหน่วยประมวลผลกลาง[แก้]
การทำงานของหน่วยประมวลผลกลางแบ่งออกตามหน้าที่ได้เป็นห้ากลุ่มใหญ่ ๆ ดังนี้ โดยทำงานทีละคำสั่ง จากคำสั่งที่เรียงลำดับกันไว้ตอนที่เขียนโปรแกรม
- Fetch - การอ่านชุดคำสั่งขึ้นมา 1 คำสั่งจากโปรแกรม ในรูปของรหัสเลขฐานสอง (Binary Code from on-off of BIT)
- Decode - การตีความ 1 คำสั่งนั้นด้วยวงจรถอดรหัส (Decoder circuit) ตามจำนวนหลัก (BIT) ว่ารหัสนี้จะให้วงจรอื่นใดทำงานด้วยข้อมูลที่ใด
- Execute - การทำงานตาม 1 คำสั่งนั้น คือ วงจรใดในไมโครโปรเซสเซอร์ทำงาน เช่น วงจรบวก วงจรลบ วงจรเปรียบเทียบ วงจรย้ายข้อมูล ฯลฯ
- Memory - การติดต่อกับหน่วยความจำ การใช้ข้อมูลที่อยู่ในหน่วยจำชั่วคราว (RAM, Register) มาใช้ในคำสั่งนั้นโดยอ้างที่อยู่ (Address)
L3 Cache - รอคำสั่งระหว่างกระบวนการกำลังประมวลผล*Write Back - การเขียนข้อมูลกลับ โดยมีหน่วยจำ Register ช่วยเก็บที่อยู่ของคำสั่งต่อไป ภายหลังมีคำสั่งกระโดดบวกลบที่อยู่
การทำงานแบบขนานในระดับคำสั่ง (ILP)[แก้]
โดยการทำงานเหล่านี้ถ้าเป็นแบบพื้นฐานก็จะทำงานกันเป็นขั้นตอนเรียงตัวไปเรื่อย ๆ แต่ในหลักความเป็นไปได้คือการทำงานในแต่ละส่วนนั้นค่อนข้างจะเป็นอิสระออกจากกัน จึงได้มีการจับแยกกันให้ทำงานขนานกันของแต่ละส่วนไปได้ หลักการนี้เรียกว่า pipeline เป็นการทำการประมวลผลแบบขนานในระดับการไหลของแต่ละคำสั่ง (ILP: Instruction Level Parallelism) โดยข้อมูลที่เป็นผลจากการคำนวณของชุดก่อนหน้าจะถูกส่งกลับไปให้ชุดคำสั่งที่ตามมาในช่องทางพิเศษภายในหน่วยประมวลผลเอง
การทำงานแบบขนานนี้สามารถทำให้มีความสามารถเพิ่มขึ้นได้อีกคือเพิ่มการทำงานแต่ละส่วนออกเป็นส่วนที่เหมือนกันในทุกกลุ่มแต่ให้ทำงานคนละสายชุดคำสั่งกัน วิธีการนี้เรียกว่าการทำหน่วยประมวลผลให้เป็น superscalar วิธีการนี้ทำให้มีหลาย ๆ ชุดคำสั่งทำงานได้ในขณะเดียวกัน โดยงานหนักของ superscalar อยู่ที่ส่วนดึงชุดคำสั่งออกมา (Dispatcher) เพราะส่วนนี้ต้องตัดสินใจได้ว่าชุดคำสั่งอันไหนสามารถทำการประมวลผลแบบขนานได้ หลักการนี้ก็เป็นการทำการประมวลผลแบบขนานในลำดับการให้ของแต่ละคำสั่ง (ILP: Instruction Level Parallelism) เช่นกัน
การทำงานแบบขนานในระดับกลุ่มชุดคำสั่ง (TLP)[แก้]
การทำงานของโปรแกรมคอมพิวเตอร์แต่ละโปรแกรมสามารถแบ่งตัวออกได้เป็นระดับกลุ่มชุดคำสั่ง (Thread) โดยในแต่ละกลุ่มสามารถทำงานขนานกันได้ (TLP: Thread Level Parallelism) ในระดับ2