โครงสร้างและหน้าที่ของซีพียู

                 การทำงานของซีพียู มีหน้าที่ดังนี้-อ่านและแปลคำสั่งที่เขียนไว้ในโปรแกรม

-ประมวลผลตามคำสั่งที่เขียนไว้ในโปรแกรม


-ติดต่อรับส่งข้อมูลกับผู้ใช้โดยผ่านหน่วยนำข้อมูลเข้า/ออก


-รับส่งข้อมูลโดยติดต่อกับหน่วยความจำภายในเครื่อง


-ย้ายข้อมูลและคำสั่งจากหน่วยงานหนึ่งไปยังอีกหน่วยงานหนึ่ง จากส่วนประกอบของซีพียูประกอบไปด้วย 2 ส่วน คือ หน่วยควบคุม


                 (Control Unit หรือ CU) ดังกล่าวนั้น โดยที่การทำงานของหน่วยควบคุมจะอยู่ภายใต้คำสั่งของโปรแกรมที่เก็บไว้ในหน่วยความจำหลัก
โดยหน่วยควบคุมจะมีหน้าที่ในการสั่งงานและประสานงานการดำเนินการทั้งหมดของระบบ อันได้แก่

-ติดต่อสื่อสารกับ ALU และหน่วยความจำหลัก                                  

-ตัดสินใจในการนำข่าวสารใดเข้าและออกจากหน่วยความจำหลัก


-กำหนดเส้นทางการส่งสารจากหน่วยความจำไปยัง ALU และ ALU ไปยังหน่วยความจำหลัก


-มีหน่วยที่ทำหน้าที่ในการถอดรหัสว่าจะให้เครื่องคอมพิวเตอร์ทำอะไร

-ควบคุมการถอดรหัสให้เป็นไปตามขั้นตอนการทำงาน เพื่อให้ได้ผลลัพธ์ออกมา

-หน่วยคำนวณทางคณิตศาสตร์และตรรกวิทยา ( Arihimetic and Logic Unit ) ALU หน่วยคำนวณนี้ประกอบด้วยวงจรไฟฟ้า ที่ทำหน้าที่ 2 อย่างคือ

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

การทำงานของซีพียูมีรายละเอียดดังนี้


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


-Instruction Register เป็นรีจีสเตอร์ที่ทำหน้าที่เก็บคำสั่งในโปรแกรมที่กำลังถูกประมวลผล


-Address Register เป็นรีจีสเตอร์ที่ทำหน้าเก็บที่อยู่ของคำสั่งหรือชิ้นของข้อมูลที่ถูกเก็บอยู่ในความจำ ซึ่งที่อยู่นั้นจะเป็นการระบุคำสั่งหรือข้อมูลนั้นถูก
เก็บอู่ในตำแหน่งใดในความจำ
       
- General-purpose Register เป็นรีจีสเตอร์ที่ใช้ทำงานหลายอย่างแล้วแต่โปรแกรมจะเรียกใช้

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

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


       ปฏิบัติงานของการซีพียู

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



รูปการปฏิบัติการของซีพียู


     

                        ก่อนที่คำสั่งและคำสั่งจะถูกประมวลผลต้องมีการอ่านโปรแกรมซึ่งประกอบด้วยชุดคำสั่งต่างๆ รวมทั้งที่จะถูกนำไปใช้ในโปรแกรมนำเข้าไปเก็บไว้ใน
หน่วยความจำหลักก่อนโดยข้อมูลหรือโปรแกรมนี้อาจนำเข้ามาจากอุปกรณ์นำข้อมูลเข้า/ออก หรือจากหน่ายความจำสำรองอย่างใดอย่างหนึ่งการประมวลผลคำสั่งแต่ละคำสั่งของซีพียูจะมีขั้นตอนการทำงานพอสรุปได้ดั้งนี้
                1.หน่วยควบคุม (CU) จะเข้าไปอ่านคำสั่งมาจากหน่วยความจำหลัก 1 คำสั่ง             
                2.หน่วยควบคุมจะทำการถอนรหัสคำสั่งนั้นว่าอย่างไร ให้เป็นรหัสการทำงาน (Operation Code) โดยจะแปลส่วนของส่วนของรหัสการทำงานก่อนว่า
 คืออะไร แล้วจึงแปลส่วนของ โอเปอร์แรนด์ เมื่อแปลเสร็จเรียบร้อยก็จะดึงข้อมูลจากหน่วยความจำส่งไปให้หน่วยคำนวณ (ALU) เพื่อปฏิบัติงานตามคำสั่งต่อไป
                3.หน่วยคำนวณ (ALU) จะประมวลผลคำสั่งและข้อมูลข้อมูลที่เกี่ยวกับการคำนวณหรือการตรวจสอบเงื่อนไขที่หน่วยความจำส่งมาให้               
                4.ผลลัพธ์ที่ได้จากการประมวลผลจะถูกนำไปเก็บอยู่ในหน่วยความจำ

       การปฏิบัติงานของหน่วยควบคุม (CU)

                 หลังจากที่มีการนำโปรแกรมและข้อมูลเข้ามาเก็บไว้ในหน่วยความจำหลักแล้ว เมื่อจะมีการประมวลผลคำสั่งแต่ละคำสั่งในโปรแกรม หน่วยควบคุมจะทำการดึงสั่งจากหน่วยความจำหลักขึ้นมา 1 คำสั่ง แล้วส่งส่วนที่รหัสทำงานหรือออปโคด ไปเก็บยังรีจีสเตอร์ที่เรียกว่า Instruction Register และส่วนที่เป็นโอเปอร์แรนด์ซึ่งเก็บต่ำแหน่งที่อยู่ของข้อมูลจะถูกนำไปเก็บไว้ใน Address Register หลังจากนั้นจะมีวงจรที่เรียกว่า Instruction Register นี้ แล้วส่งสัญญาณการแปลนี้ต่อให้กับหน่วยคำนวณ และหน่วยอื่นที่เกี่ยวข้องซึ่งอาจได้แก่หน่วยความจำ หน่วยนำข้อมูลหรือหน่วยเก็บข้อมูลสำรอง เพื่อดึงข้อมูลที่จะใช้สั่งนั้นเข้ามา
     
การปฏิบัติงานของหน่วยคำนวณทางคณิตศาสตร์และทางตรรกวิทยา(ALU)
                     ภายใน ALUจะมีวงจรการคำนวณการบวก ลบ หาร และวงจรทางตรรกวิทยาที่ทำหน้าที่ที่ตัดสินใจเปรียบเทียบค่าของตัวเลข2จำนวนว่ามีค่ามากกว่า น้อยกว่า หรือเท่ากับใน ALU จะถูกเก็บข้อมูลชั่วคราวที่เรียกว่า Accumulator Register สำหรับเก็บข้อมูลตัวเลขที่จะถูกใช้ในการคำนวณและเปรียบเทียบ และ Accumulator Registerที่จะทำหน้าที่เก็บผลลัพธ์ที่จะได้จากการคำนวณอีกด้วย เมื่อมีการคำนวณหรือเปรียบเทียบตัวเลขใดๆตัวเลขนั้นจะถูกนำเข้ามาจากหน่วยความจำหลักตามค่าตำแหน่งที่อยู่ของข้อมูลที่เก็บอยู่ใน Address Registerและจะถูกนำไปเก็บไว้ใน Storage Register ใน ALU ถ้าจะทำการคำนวณก็จะสางข้อมูลต่อไปยังวงจรคำนวณและกลบหน่วยความจำหลัก




รูปโครงสร้างการทำงานของซีพียู

                       การจักสรร (Allocateหรือ Assign) หมายถึง การจัดหน่วยประมวลผลหรือการสับหลีก (Scheduling) หน่วยประมวลผลหรือระบบให้กับโปรเซสหรืองาน โดยหาจัดการหน่วยประมวลผลและระบบต้องคำนึงถึงความต้องการโดยทั่วไป ดังนี้
            1. ความยุติธรรม แม้ว่าลำดับความสำคัญของงานที่เข้าสู่ระบบจะไม่มีทางเท่ากันได้แต่ระบบปฏิบัติการต้องระมัดระวัง
            2. ประโยชน์ใช้สอย โดยปกติระบบคอมพิวเตอร์มีขนาดใหญ่จำพวก Mainframe มีราคาแพงและค่าใช้จ่ายสูงมากจึงต้องควบคุมให้ระดับการใช้งานให้คุ้มค่า
            3.อัตราตอบสนองในระบบปฏิบัติการบางประเภท เช่น แบบโต้ตอบจำเป็นต้องใช้เวลาสนองตอบไม่เกินความรำคาญแก่ผู้ใช้
            4.การคาดคะเนได้ พฤติกรรมของปฏิบัติระบบการมัลติโปรแกรมมิ่ง จำต้องไม่ผันแปรตามสภาพของระบบมากนัก หมายความว่าสำหรับวันๆหนึ่งเวลาใช้จ่ายที่ใช้การดำเนินแต่ละคราวใกล้เคียงกัน           
            5.ลดค่าโสหุ้ย โดยปกติผู้ออกแบบระบบพยายามจำค่าโสหุ้ย (Overhead) เป็นงานของระบบปฏิบัติการที่ต้องกระทำ แต่ไม่เกิดเป็นผลลัพธ์อะไรในสาย
ตาของผู้ใช้ระบบเนื่องจากโสหุ้ยเป็นงานหรือโปรเซสประเภทหนึ่งซึ่งต้องการใช้ทรัพยากรของระบบในทางกลับกัน เช่น ในระบบมัลติโปรแกรมมิ่งเพื่อให้ประโยชน์ใช้สอยของระบบดีขึ้น
            6.กระจายการใช้ทรัพยากร ระบบปฏิบัติการต้องพยายามดึงงานเข้าสู้ระบบในลักษณะที่กระจายให้ทรัพยากรทุกชิ้นในระบบได้ใช้ประโยชน์อย่างเสมอกัน
            7.ลำดับความสำคัญ การจัดการหน่วยประมวลผลต้องเอื้ออำนวยผู้ใช้ให้สามารถกำหนดลำดับความสำคัญหรือบุริมภาพ (Priority) ของงานตนได้
            8.สาใจกับทรัพยากรที่สำคัญ บางครั้งระบบปฏิบัติการต้องยกลำดับความสำคัญของงานที่ไม่สำคัญให้สูงขึ้น หากงานนั้นจับจองทรัพยากรที่ต้องใช้งานอื่นที่มีลำดับความสำคัญ ที่สูงลงโดยเร็ว
            9.ใส่ใจกับโปรเซสที่ดี ระบบปฏิบัติการควรให้ความสำคัญต่อโปรเซสที่ทำประโยชน์ให้กับระบบคอมพิวเตอร์ เช่น เป็นงานที่ใช้ทรัพยากรที่ไม่ค่อยมีผู้ใช้หรือเป็นงานที่เสร็จเร็วโดยใช้ทรัพยากรน้อยมาก         
          10.เสื่อมถอยโดยบรรจง ระบบคอมพิวเตอร์ควรมีพฤติกรรมที่เสื่อมถอยลงอย่างค่อยเป็นค่อยไปเมื่อมีงานโหมเข้าสู่ระบบต่างๆอยู่ดีๆอัตราตอบสนอง
ก็เกิดเลวลงอย่างกะทันหันเพียงเพราะมีงานเข้าสู้ระบบเพียงสองสามงานเท่านั้น แต่ในระบบปฏิบัติการบางประเภทใช้วิธีป้องกันปัญหานี้โดยจำกัดจำนวนงานที่จะโหมเข้าสู่ระบบแต่มิให้งานล้มระบบ
                   จุดประสงค์ต่างๆดังกล่าวนี้ ทำให้ระบบปฏิบัติการสำหรับระบบคอมพิวเตอร์ขนาดใหญ่ซับซ้อนมากเพราะความต้องการดังกล่าวมักขัดแย้งกัน เช่น
                   ประโยชน์ใช้สอยของระบบจะตกลงหากต้องการให้อัตราสนองดีขึ้น โดยเฉพาะงานที่มีการตอบโต้ผ่านทางเทอร์มินัลเพราะงานเหล่านี้ไม่ค่อยใช้เครื่อง



 เรามาพิจารณาการเปลี่ยนสถานะของโปรเซส ดังในรูป

รูปการเปลี่ยนสถานะของโปรเซส



                       มีโปรเซสอยู่ในสถานะพร้อมเพื่อรอให้ซีพียู เมื่อซีพียูว่างโปรเซสที่อยู่ต้นคิวในสถานะพร้อมจะได้ครอบครองซีพียูเข้าไปอยู่ในสถานะรัน โปรเซสอยู่ในสถานะรันได้นานไม่เกินเวลาควอนตัม ถ้าโปรเซสต้องรอเหตุการณ์บางอย่างโดยไม่มีความจำเป็นต้องใช้ซีพียูโปรเซสนั้นจะถูกย้ายไปอยู่ในสถานะติดขัดแต่ถ้าโปรเซสอยู่ในสถานะรันจนครบเวลาควอนตัม โปรเซสนั้นจะต้องออกไปรอใช้งานซีพียูในสถานะพร้อมเปิดโอกาสให้โปรเซสอื่นได้ครอบครองซีพียูบ้างไม่ว่าโปรเซสจะปลดปล่อยซีพียูเนื่องจากหมดเวลาควอนตัม หรือมีการรอเหตุการณ์บางเหตุการณ์ ซีพียูจะต้องถูกครอบครองโดยโปรเซสอื่นที่รออยู่ในสถานะพร้อม นั้นหมายความว่าซีพียูต้องเปลี่ยนจากการทำงานหนึ่งไปเป็นอีกงานหนึ่ง เราเรียกเหตุการณ์นี้ว่าการเปลี่ยนสถานะ (Context switching) ของซีพียู การเปลี่ยนสถานะซีพีถือได้ว่าเป็น”ค่าใช้จ่าย”(Overhead)ของระบบค่าใช้จ่ายนี้หมายถึงงานที่ระบบจำเป็นต้องกระทำเพื่อจุดประสงค์บางอย่าง ระบบต้องใช้เวลาในการทำงานเหล่านี้ ทำให้เสียเวลาในการทำงานของโปรเซสของผู้ใช้ไปด้วย ดังนั้นถ้าระบบมีงานที่จำเป็นต้องทำมากระบบก็จะเสียเวลาไปมาก สำหรับการเปลี่ยนสถานะของซีพียูจะมีการสูญเสียเวลาสำหรับหลักๆ 3 งาน คือ
                   1.เก็บค่ารีจีสเตอร์และสถานะของเครื่องไว้ใน PCB ของโปรเซสที่กำลังจะปล่อยซีพียู
                   2.คัดเลือกโปรเซสในสถานะพร้อมเพื่อให้มาครอบครองซีพียู
                   3.โหลดค่ารีจีสเตอร์และสถานะของเครื่องจากPCBของโปรเซสใหม่การคัดเลือกหาโปรเซสที่จะเข้าไปอยู่ในสถานะรันเมื่อซีพียูว่างนั้น ถือได้ว่าเป็นการจักสรรซีพียูให้กับโปรเซสต่างๆซึ่งเป็นหน้าที่ของระบบปฏิบัติการ













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

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