การทำงานของหน่วยประมวลผลกลางแบ่งออกตามหน้าที่ได้เป็นห้ากลุ่มใหญ่ๆ ดังนี้ โดยทำงานทีละคำสั่ง จากคำสั่งที่เรียงลำดับกันไว้ตอนที่เขียนโปรแกรม
Fetch -การอ่านชุดคำสั่งขึ้นมา
1 คำสั่งจากโปรแกรม ในรูปของรหัสเลขฐานสอง (Binary
Code from on-off of BIT)
Decode -การตีความ
1 คำสั่งนั้นด้วยวงจรถอดรหัส (Decoder
circuit) ตามจำนวนหลัก (BIT) ว่ารหัสนี้จะให้วงจรอื่นใดทำงานด้วยข้อมูลที่ใด
Execute -การทำงานตาม
1 คำสั่งนั้น คือ วงจรใดในไมโครโปรเซสเซอร์ทำงาน
เช่น วงจรบวก วงจรลบ วงจรเปรียบเทียบ วงจรย้ายข้อมูล ฯลฯ
Memory -การติดต่อกับหน่วยความจำ
การใช้ข้อมูลที่อยู่ในหน่วยจำชั่วคราว (RAM, Register) มาใช้ในคำสั่งนั้นโดยอ้างที่อยู่
(Address)
Write Back -การเขียนข้อมูลกลับ
โดยมีหน่วยจำ Register ช่วยเก็บที่อยู่ของคำสั่งต่อไป ภายหลังมีคำสั่งกระโดดบวกลบที่อยู่
1. การทำงานแบบขนานในระดับคำสั่ง (ILP)
โดยการทำงานเหล่านี้ถ้าเป็นแบบพื้นฐานก็จะทำงานกันเป็นขั้นตอนเรียงตัวไปเรื่อยๆ
แต่ในหลักความเป็นไปได้คือการทำงานในแต่ละส่วนนั้นค่อนข้างจะเป็นอิสระออกจากกัน จึงได้มีการจับแยกกันให้ทำงานขนานกันของแต่ละส่วนไปได้
หลักการนี้เรียกว่า pipeline เป็นการทำการประมวลผลแบบขนานในระดับการไหลของแต่ละคำสั่ง
(ILP: Instruction Level Parallelism) โดยข้อมูลที่เป็นผลจากการคำนวณของชุดก่อนหน้าจะถูกส่งกลับไปให้ชุดคำสั่งที่ตามมาในช่องทางพิเศษภายในหน่วยประมวลผลเอง
การทำงานแบบขนานนี้สามารถทำให้มีความสามารถเพิ่มขึ้นได้อีกคือเพิ่มการทำงานแต่ละส่วนออกเป็นส่วนที่เหมือนกันในทุกกลุ่มแต่ให้ทำงานคนละสายชุดคำสั่งกัน
วิธีการนี้เรียกว่าการทำหน่วยประมวลผลให้เป็น superscalar วิธีการนี้ทำให้มีหลายๆ
ชุดคำสั่งทำงานได้ในขณะเดียวกัน โดยงานหนักของ superscalar อยู่ที่ส่วนดึงชุดคำสั่งออกมา
(Dispatcher) เพราะส่วนนี้ต้องตัดสินใจได้ว่าชุดคำสั่งอันไหนสามารถทำการประมวลผลแบบขนานได้
หลักการนี้ก็เป็นการทำการประมวลผลแบบขนานในระดับการไหลของแต่ละคำสั่ง (ILP:
Instruction Level Parallelism) เช่นกัน
2. การทำงานแบบขนานในระดับกลุ่มชุดคำสั่ง (TLP)
ไม่มีความคิดเห็น:
แสดงความคิดเห็น