วันศุกร์ที่ 12 สิงหาคม พ.ศ. 2554

CPU (ไมโครโปรเซสเซอร์)

CPU (ไมโครโปรเซสเซอร์)
 





ประวัติความเป็นมาของไมโครโปรเซสเซอร์
 
     ไมโครโปรเซสเซอร์กำเนิด ขึ้นมาในช่วงต้นทศวรรษที่ 1970 โดยเกิดจากการนำเทคโนโลยี 2 อย่างมาพัฒนาร่วมกันซึ่งก็คือเทคโนโลยีทางด้านดิจิตอลคอมพิวเตอร์และเทคโนโลยี ทางดัานโซลิดสเตต(solidstate) 

ถ้าเปรียบเทียบกับร่างกายของมนุษย์โพรเซสเซอร์ก็น่า จะเปรียบเทียบเป็นเหมือนสมองของมนุษย์นั่งเอง ซึ่งคอยคิดควบคุมการทำงานส่วนต่างๆของร่างกาย ดังนั้นถ้าจัดระดับความสำคัญแล้วโพรเซสเซอร์ก็น่าจะมีความสำคัญเป็นอันดับ แรก
บล็อกไดอะแกรมของโพรเซสเซอร์


ส่วนประกอบของโพรเซสเซอร์มีดังนี้

  Bus Interface Unit (BIU) (Cbox) คือส่วนที่เชื่อมต่อระหว่าง address bus, control bus และ data bus กับภายนอกเช่น หน่วยความจำหลัก (main memory) และอุปกรณ์ภายนอก (peripherals)
  Memory Management Unit (MMU) (Mbox) คือส่วนที่ควบคุมโพรเซสเซอร์ในการใช้งานแคช (cache) และหน่วยความจำ (memory) โดย MMU ยังช่วยในการทำ virtual memory และ paging ซึ่งแปลง virtual addresses ไปเป็น physical addresses โดยใช้ Translation Look-aside Buffer (TLB)
  Integrated on-chip cache เป็นส่วนสำหรับเก็บข้อมูลที่ใช้งานบ่อยๆใน Synchronous RAM (SRAM) เพื่อให้การทำงานของโพรเซสเซอร์มีประสิทธิภาพสูงสุด ใช้งานได้ทั้ง L1 และ L2 on chip cache
  Prefetch Unit (part of Ibox) คือส่วนที่ดึงข้อมูลและคำสั่งจาก instruction cache และ data cache หรือ main memory based เมื่อ Prefetch Unit อ่านข้อมูลและคำสั่งมาแล้วก็จะส่งข้อมูลและคำสั่งเหล่านี้ต่อไปให้ Decode Unit
  Decode Unit or Instruction Unit (part of Ibox) คือส่วนที่แปลความหมาย ถอดรหัส หรือแปลคำสั่ง ให้เป็นรูปแบบที่ ALU และ registers เข้าใจ
  Branch Target Buffer (BTB) คือส่วนที่บรรจุคำสั่งเก่าๆที่เข้ามาสู่โพรเซสเซอร์ ซึ่ง BTB นั้นเป็นส่วนหนึ่งของ Prefetch Unit
  Control Unit or Execution Unit คือส่วนที่เป็นศูนย์กลางคอยควบคุมการทำงานในโพรเซสเซอร์ดังนี้
     อ่านและแปลความหมายของคำสั่งตามลำดับ
     ควบคุม Arithmetic and Logic Unit (ALU), registers และส่วนประกอบอื่นๆของโพรเซสเซอร์ ตามคำสั่ง
     ควบคุมการเคลื่อนย้ายของข้อมูลที่รับ-ส่งจาก primary memory และอุปกรณ์ I/O
  ALU (Ebox) คือส่วนที่ปฎิบัติตามคำสั่งและเปรียบเทียบ operands ในบางโพรเซสเซอร์มีการแยก ALU ออกเป็น 2 ส่วนดังนี้
     Arithmetic Unit (AU)
     Logic Unit (LU)
     operation ที่ ALU ปฎิบัติตามเช่น
     Arithmetic operations (+, -, *, และ /)
     Comparisons (<, >, และ =)
     Logic operations (and, or)
  Floating-Point Unit (FPU) (Fbox) คือส่วนที่ทำการคำนวณเกี่ยวกับจำนวนตัวเลขที่เป็นจุดทศนิยม
  Registers (part of Ibox, Fbox, และ Ebox) คือส่วนที่ใช้สำหรับเก็บข้อมูลสำหรับการคำนวณในโพรเซสเซอร์
     Data register set เก็บข้อมูลที่ใช้งานโดย ALU เพื่อใช้สำหรับการคำนวณที่ได้รับการควบคุมจาก Control Unit ซึ่งข้อมูลนี้อาจส่งมาจาก data cache, main memory, หรือ Control Unit ก็ได้
     Instruction register set เก็บคำสั่งที่กำลังทำงานอยู่ 

หน่วยประมวลผลกลาง (Central Processing Unit : CPU)

     หน่วยประมวลผลกลางหรือซีพียู เรียกอีกชื่อหนึ่งว่า โปรเซสเซอร์ (Processor) หรือ ชิป (chip) นับเป็นอุปกรณ์ ที่มีความสำคัญมากที่สุด ของฮาร์ดแวร์เพราะมีหน้าที่ในการประมวลผลข้อมูลที่ผู้ใช้ป้อน เข้ามาทางอุปกรณ์อินพุต ตามชุดคำสั่งหรือโปรแกรมที่ผู้ใช้ต้องการใช้งาน หน่วยประมวลผลกลาง ประกอบด้วยส่วนประสำคัญ 3 ส่วน คือ 

1. หน่วยคำนวณและตรรกะ (Arithmetic & Logical Unit : ALU)

     หน่วยคำนวณตรรกะ ทำหน้าที่เหมือนกับเครื่องคำนวณอยู่ในเครื่องคอมพิวเตอร์โดยทำงานเกี่ยวข้อง กับ การคำนวณทางคณิตศาสตร์ เช่น บวก ลบ คูณ หาร นอกจากนี้หน่วยคำนวณและตรรกะของคอมพิวเตอร์ ยังมีความสามารถอีกอย่างหนึ่งที่เครื่องคำนวณธรรมดาไม่มี คือ ความสามารถในเชิงตรรกะศาสตร์ หมายถึง ความสามารถในการเปรียบเทียบตามเงื่อนไข และกฏเกณฑ์ทางคณิตศาสตร์ เพื่อให้ได้คำตอบออกมาว่าเงื่อนไข นั้นเป็น จริง หรือ เท็จ เช่น เปรียบเทียบมากว่า น้อยกว่า เท่ากัน ไม่เท่ากัน ของจำนวน 2 จำนวน เป็นต้น ซึ่งการเปรียบเทียบนี้มักจะใช้ในการเลือกทำงานของเครื่องคอมพิวเตอร์ จะทำตามคำสั่งใดของโปรแกรมเป็น คําสั่งต่อไป 

2. หน่วยควบคุม (Control Unit)

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

3. หน่วยความจำหลัก (Main Memory)

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

การทำงานของหน่วยประมวลผลกลาง

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

การทำงานแบบขนานในระดับคำสั่ง (ILP)

การทำงานของหน่วยประมวลผลกลางแบบมี pipeline
โดยการทำงานเหล่านี้ถ้าเป็นแบบพื้นฐานก็จะทำงานกันเป็นขั้นตอนเรียงตัวไป เรื่อยๆ แต่ในหลักความเป็นไปได้คือการทำงานในแต่ละส่วนนั้นค่อนข้างจะเป็นอิสระออก จากกัน จึงได้มีการจับแยกกันให้ทำงานขนานกันของแต่ละส่วนไปได้ หลักการนี้เรียกว่า pipeline เป็นการทำการประมวลผลแบบขนานในระดับการไหลของแต่ละคำสั่ง (ILP: Instruction Level Parallelism) โดยข้อมูลที่เป็นผลจากการคำนวณของชุดก่อนหน้าจะถูกส่งกลับไปให้ชุดคำสั่งที่ ตามมาในช่องทางพิเศษภายในหน่วยประมวลผลเอง
การทำงานของหน่วยประมวลผลกลางแบบมี pipeline และเป็น superscalar
การทำงานแบบขนานนี้สามารถทำให้มีความสามารถเพิ่มขึ้นได้อีกคือเพิ่มการทำ งานแต่ละส่วนออกเป็นส่วนที่เหมือนกันในทุกกลุ่มแต่ให้ทำงานคนละสายชุดคำสั่ง กัน วิธีการนี้เรียกว่าการทำหน่วยประมวลผลให้เป็น superscalar วิธีการนี้ทำให้มีหลายๆ ชุดคำสั่งทำงานได้ในขณะเดียวกัน โดยงานหนักของ superscalar อยู่ที่ส่วนดึงชุดคำสั่งออกมา (Dispatcher) เพราะส่วนนี้ต้องตัดสินใจได้ว่าชุดคำสั่งอันไหนสามารถทำการประมวลผลแบบขนาน ได้ หลักการนี้ก็เป็นการทำการประมวลผลแบบขนานในระดับการไหลของแต่ละคำสั่ง (ILP: Instruction Level Parallelism) เช่นกัน

การทำงานแบบขนานในระดับกลุ่มชุดคำสั่ง (TLP)

การทำงานของโปรแกรมคอมพิวเตอร์แต่ละโปรแกรมสามารถแบ่งตัวออกได้เป็นระดับกลุ่มชุดคำสั่ง (Thread) โดยในแต่ละกลุ่มสามารถทำงานขนานกันได้ (TLP: Thread Level Parallelism) ในระดับ2


ไม่มีความคิดเห็น:

แสดงความคิดเห็น