วันศุกร์ที่ 29 กรกฎาคม พ.ศ. 2554

Pipeline+CPU

โปรเซสเซอร์ 

ปี 1989 Intel ประกาศตัว 80486 ซึ่งเป็นซีพียูแบบ 32 บิต พร้อมเปิดตัวสิ่งที่เรียกว่า ”ไปป์ไลน์” (Pipeline)  ไปป์ไลน์ช่วยให้ซีพียูสามารถเฟ็ตช์คำสั่งเข้ามาทำงานได้หลาย ๆ คำสั่งในเวลาเดียวกันได้ โดยเอ็กซิคิวต์ ในแต่ละคำสั่งในแต่ละสัญญาณนาฬิกา (Clockcycle) เรียกการทำงานแบบนี้ว่า “สเกลลาร์” (Scalar)ปี 1993 ได้เปิดตัวซีพียูในยุคที่ 5 ที่เรียกว่า “Pentium” โดยนำไปป์ไลน์มาใส่ไว้ในซีพียูถึง 2 ตัวทำงานแบบขนานพร้อม ๆ กัน โดยไม่ขึ้นต่อกัน ทำให้สามารถเอ็กซิคิวต์ได้ 2 คำสั่งใน 1 สัญญาณนาฬิกาเรียกสถาปัตยกรรมนี้ว่า “ซุปเปอร์สเกลลาร์” (Superscalar)

 องค์ประกอบ CPU


 


ขั้นตอนการทำงานของ Pipeline

  - ภาคเฟ็ตช์คำสั่ง หรือ Instruction Fetch ส่วนนี้จะทำหน้าที่รับคำสั่งใหม่ ๆ ทั้งจากหน่วยความจำหลัก
หรือจาก Instruction Cache เข้ามา
  - ภาคถอดรหัสคำสั่ง หรือ Instruction Decode ส่วนนี้จะทำหน้าที่แยกแยะคำสั่งต่าง ๆ ของ  CISC
 - ภาครับข้อมูล หรือ Get Operands  ส่วนนี้ทำหน้าที่รับข้อมูลที่จะใช้ในการเอ็กซิคิวต์เข้ามาเก็บ ไว้
 - ภาคเอ็กซิคิวต์ หรือ Execute ส่วนนี้เป็นขั้นตอนที่ทำการเอ็กวิคิวต์ตามคำสั่งและโอเปอแรนด์
 ที่ได้รับมา
 - ภาคเขียนผลลัพธ์ หรือ Write Result เมื่อทำการเอ็กซิคิวต์เสร็จเรียบร้อยแล้ว ผลลัพธ์ที่ได้
ก็จะนำไปเก็บไว้ในรีจิสเตอร์ หรือในแคช   
โครงส้รางของระบบคอมพิวเตอร์
 เราสามารถแบ่งโครงสร้างหลัก ๆ ของระบบคอมพิวเตอร์ได้เป็น 3 ส่วนดังนี้
 

1.  อินพุต - เอาท์พุต ( Input - Output ) เป็น ส่วนของคอมพิวเตอร์ที่ใช้ติดต่อกับโลกภายนอกโดยรับ-ส่งข้อมูลกับคอมพิวเตอร์ เพื่อให้กลไกภายในตรับไปปฏิบัติโดยผ่านทางอินพุตทำให้ผู้ใช้สามารถรับทราบผล การปฏิบัติงานของเครื่องได้ ตัวอย่างของอุปกรณ์อินพุต ได้แก่ แป้นพิมพ์ ตัวขับดิสก์ เป็นต้น และตัวอย่างของอุปกรณ์เอาท์พุต ได้แก่ จอภาพและเครื่องพิมพ์ เป็นต้น 
2.  หน่วยประมวลผลกลาง หรือ ซีพียู ( Central Processing Unit : CPU ) เป็นส่วนที่ทำหน้าที่ปฏิบัติตามคำสั่งที่ได้รับมาจากอินพุต
หรือนำเอาข้อมูลจากส่วนอินพุตมา ประมวลผล เพื่อให้ได้ผลลัพธ์ที่ต้องการ การปฏิบัติงานตามคำสั่งหรือการประมวลผลนี้เราเรียกว่าการเอ็กซีคิ้ว
(execute)การเอ็กซีคิ้วชุดคำสั่งหรือโปรแกรมเรียกว่าการรัหรืออาจกล่าวว่าโปรแกรมถูกเอ็กซีคิ้ว
หน่วยประมวลผลกลางเราสามารถแบ่งย่อยลงไปได้อีก 2 ส่วนคือ 
-หน่วยควบคุม ( control unit ) มีหน้าที่ควบคุมการทำงานของอุปกรณ์ต่าง ในระบบทั้งหมดให้มีการทำหน้าที่ให้ถูกต้อง 
-หน่วยคำนวณ ( arithmetic logic unit ) มีหน้าที่ในการคำนวณทางด้านคณิตศาสตร์
เช่น บวก ลบ คูณ หาร และงานทางด้านตรรกศาสตร์ เช่น AND OR นอกจากนี้ยังสามารถทำโอเปอร์ชั่นอื่นๆ อีก เช่น การเลื่อนบิต ( shift ) หรือการทำคอมพลีเมนต์ ( complement ) เพื่อสลับค่าตัวเลขจากบวกเป็นลบ หรือจากลบเป็นบวก เช่น -5 หรือ +5 เป็นต้น สำหรับหน่วยควบคุมมีหน้าที่ควบคุมการทำงานส่วนต่างๆ เป็นไปตามลำดับขั้นตอนที่ถูกต้อง อาศัยเทคโนโลยีก้าวหน้าในปัจจุบัน เราสามารถผลิตซีพียู ลงบนแผงวงจรรวมหรือไอซี (Integrated 
Circuit) ที่มีขนาดเล็ก ๆ ได้ และเราเรียกกันว่าไมโครโปรเซสเซอร์ หรือ โปรเซสเซอร์ 
3. หน่วยความจำ (Memory) เป็นอุปกรณ์ที่สร้างขึ้นเพื่อสามารถเก็บข้อมูลหรือคำสั่งที่คอมพิวเตอร์ต้องการใช้เอาไว้ ดังนั้นหน่วยความจำจึงเป็นสิ่งจำเป็นมาก ในคอมพิวเตอร์ขนาดใหญ่ๆ อาจมีหน่วยความจำขนาดหลายเมกกะไบต์ (106 ไบต์) หรือ หลายจิกกะไบต์ (109 ไบต์ ) เราอาจแบ่งหน่วยความจำออกเป็น 2 ประเภทใหญ่ คือ 
- หน่วยความจำปฐมภูมิ เป็นหน่วยความจำที่ติดต่อกับซีพียูโดยตรงมี 2 ชนิดคือ แบบที่ข้อมูลที่เก็บไว้ไม่สูญหายแม้ไม่มีไฟฟ้าป้อน เป็นหน่วยความจำที่เรียกกันทั่วไปว่า รอม ( Read Only Memory : ROM ) ข้อมูลที่เก็บไว้ภายในถูกสร้างขึ้นในขณะที่สร้างหน่วยความจำจากโรงงาน ผู้ผลิต และไม่สามารถแก้ไขได้(แต่ในปัจจุบันหน่วยความจำประเภทนี้ได้รับการพัฒนาให้สามารถบันทึกและลบข้อมูลภายในได้แต่ต้องอาศัยอุปกรณ์พิเศษเฉพาะหน่วยความจำชนิดนี้ ได้แก่ programmeble ROM หรือ PROM และ erasable PROM หรือ EPROM ) ส่วนหน่วยความจำอีกชนิดหนึ่งคือ แรม ( Random Access Momery , RAM ) ข้อมูลที่เก็บไว้จำเป็นต้องใช้กระแสไฟเพื่อรักษาข้อมูลให้คงอยู่ ถ้าไม่มีกระแสไฟฟ้าข้อมูลที่เก็บไว้ก็หายไปหมด 
-หน่วยความจำทุติยภูมิ หน่วยความจำประเภทนี้ เราจะไม่ถือเป็นส่วนหนึ่งของหน่วยประมวลผล แต่เป็นส่วนหนึ่งของอุปกรณ์อินพุต-เอาท์พุตมากกว่า ตัวอย่างของหน่วยความจำ ประเภทนี้ได้แก่ ดิสก์ เทป เป็นต้น
การจัดการหน่วยความจำของ OSนั้นมีการใช้มาตรการหรือยุทธวิธีในการจัดการอยู่ 3 ประการ
 


   1. ยุทธวิธีการเฟตซ์ (fetch strategy)
 
    2. ยุทธวิธีการวาง (placement strategy)
 
    3. ยุทธวิธีการแทนที่ (replacement strategy)  

การจัดการโปรเซสเซอร์  

       โปรเซสเซอร์เป็นทรัพยากรประเภทหนึ่งของระบบ ในบางระบบมีโปรเซสเซอร์
อยู่เพียงตัวเดียวคือซีพียู แต่ในบางระบบก็มี โปรเซสเซอร์หลายตัวช่วยซีพียูทำงานเช่น โปรเซสเซอร์
ช่วยงานคำนวณ ( math-coprocessor ) และ โปรเซสเซอร์ควบคุมอินพุต-เอาต์พุต เป็นต้น เนื่องจาก   โปรเซสเซอร์มีราคาแพงมากเราจึงควรจัดการให้มีการใช้งานโปรเซสเซอร์ ให้คุ้มค่าที่สุด โดยพยายาม   ให้มันทำงานอยู่ตลอดเวลา เมื่อกล่าวถึงตัวจัดคิวในระยะสั้น ก็คงต้องกล่าวถึงตัวจัดคิวในระยะยาวด้วย


ขั้นตอนการทำงานของ CPU
ก่อนที่ CPU จะทำการประมวลผลข้อมูล คำสั่งและข้อมูลจะต้องถูกโหลดมาเก็บไว้ในหน่วยความจำหลักเสียก่อน


การประมวลผลคำสั่งของ CPU
หลังจากคำสั่งและข้อมูลอยู่ในหน่วยความจำแล้ว CPU ก็จะทำการประมวลผลที่ละคำสั่ง ใน 4 ขั้นตอนดังนี้

ขั้นตอนการทำงานของ CPU

จากโปรแกรมที่ประกอบด้วยกลุ่มของคำสั่งที่ต้องการให้คอมพิวเตอร์ทำการประมวลผล แต่ละคำสั่งประกอบด้วย รหัสให้ทำงาน ( OperationCode)หรือ ออปโค้ด (Opcode) เช่น ADD (การบวก) SUB (การลบ)MUL (การคูณ) DIV (การหาร) และสิ่งที่เรียกว่า โอเปอแรนต์ (Operand) ซึ่งจะบอกตำแหน่งของที่เก็บข้อมูลในหน่วยความจำ เช่น สัญลักษณ์ Aหรือ B
ตัวอย่างของคำสั่งหนึ่งๆ ที่มีอยู่ในโปรแกรมภาษาแอสแซมบลี เช่น ADD A,B หมายถึงให้มีการนำข้อมูลที่เก็บอยู่ในหน่วยความจำที่ตำแหน่ง A และข้อมูลที่เก็บอยู่ในหน่วยความจำที่ตำแหน่ง B มาทำการบวกกัน ซึ่งคำสั่งนี้จะต้องถูกแปลให้เป็นภาษาเครื่อง (MachineLanguage) ก่อนการปฏิบัติงานของซีพียูเสมอ

ภาพแสดงขั้นตอนการทำงานของ CPU

ขั้นตอนการทำงานของ CPU และความสัมพันธ์ในการใช้ Resistor
ขั้นตอนการประมวลผลของ CPU

การเฟตช์ (Fetch) เป็นกระบวนการที่หน่วยควบคุม (CU) ไปนำคำสั่งที่ต้องการใช้จากหน่วยความจำมาเพื่อการประมวลผลมาเก็บไว้ที่ Register
การแปลความหมาย ( Decode ) เป็นกระบวนการถอดรหัสหรือแปลความหมายคำสั่งต่างๆ เพื่อส่งไปยังหน่วยคำนวณและตรรกะเพื่อดำเนินการต่อไป
การเอ็กซ์คิวต์ ( Execute ) เป็นกระบวนประมวลผลคำสั่งโดยหน่วยคำนวณและตรรกะ ซึ่งการประมวลผลจะประมวลผลทีละคำสั่ง
การจัดเก็บ ( Store ) เป็นกระบวนการจัดเก็บผลลัพธ์ที่ได้จากการประมวลผลและจัดเก็บไว้ในหน่วยความจำหรือรีจิสเตอร์

วัฏจักรการทำงานของซีพียู หรือวัฏจักรเครื่อง (Machine Cycle)
Machine Cycle & การประมวลผลคำสั่งโปรแกรม

การประมวลผลคำสั่งโปรแกรมระดับเครื่อง (ภาษาเครื่อง) หนึ่งคำสั่ง เกิดขึ้นในระหว่างหนึ่ง Machine Cycle :-
วัฏจักรคำสั่ง Instruction Cycle (I-cycle) l fetch instruction - control unit รับคำสั่งจากแรม l decode instruction - control unit แปลความหมายคำสั่งโปรแกรม และเก็บส่วนที่เป็น คำสั่ง ของคำสั่งโปรแกรมไว้ใน Instruction Register & เก็บส่วนที่เป็นแอดเดรส ของคำสั่งโปรแกรมไว้ใน Address Register เวลาที่ใช้ในการแปลคำสั่ง (Instruction Time)
เวลาทั้งหมดในการประมวลผลแต่ละคำสั่ง ประกอบด้วย 2 ส่วนคือ
การแปลคำสั่ง (fetch and decode) และการประมวลผลคำสั่ง(execute and store)
เวลาที่ใช้แปลคำสั่งเรียกว่า instruction time.

               เวลาที่ใช้ในการประมวลผล เรียกว่า E xecution time.

           เวลาที่ใช้ประมวลผลแต่ละคำสั่ง (Machine Cycle)
The combination of I-time and E-time is called the machine cycle 

หน่วยวัดความเร็วของซีพียู
เมกะเฮิรตซ์ ( Megahertz: MHz ) เป็นหน่วยวัดความเร็วของซีพียูในไมโครคอมพิวเตอร์
หรือ Clock Speed ที่มีความเร็วหนึ่งล้านวัฏจักรเครื่องต่อวินาที( Millions machine cycle per second )
มิปส์ ( Million of Instructions Per Second: MIPS ) เป็นหน่วยวัดความเร็วของซีพียูของคอมพิวเตอร์ขนาดกลางขึ้นไปโดย1 MIPS จะสามารถประมวลผลได้หนึ่งล้านคำสั่งต่อวินาที ( Millionof Instructions Per Second: MIPS )
ฟลอปส์ ( Floating Point Operations Per Second: FLOPS ) เป็นหน่วยวัดความเร็วของซีพียูในซูเปอร์คอมพิวเตอร์ ซึ่งมักวัดความสามารถในการปฏิบัติการคำนวณทางคณิตศาสตร์แบบทศนิยมหรือFloating Point
               รูปแบบการประมวลผลของซีพียู
1. การประมวลผลแบบเดี่ยว ( Singleprocessing) หรือ Sequential Processing เป็นการประมวลผลข้อมูลตามลำดับเนื่องจากมีซีพียูทำงานเพียงตัวเดียว ปัญหาที่เกิดขึ้นคือ การประมวลผลข้อมูลล่าช้า
2. การประมวลผลแบบขนาน (Parallel processing) เป็นการใช้ซีพียูมากกว่า 1 ตัว ( Multiple Processors ) ในการประมวลผลงานๆหนึ่งพร้อมกัน โดยซีพียูจะแตก (break down) ปัญหาออกเป็นส่วนย่อยๆเพื่อแบ่งให้ซีพียูแต่ละตัวประมวลผล ซึ่งสามารถเปรียบเทียบได้กับการประมวลผลแบบซีพียูเดียวและ หลายซีพียูได้ดังภาพ 

ที่มา : www.elecnet.chandra.ac.th/learn/courses/ELTC3401/present/ca_ch06.ppt