สวิตช์บริบทคืออะไร?

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

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

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

สวิตช์บริบททำงานอย่างไร

สวิตช์บริบทประกอบด้วยสองส่วน การสลับเธรดก่อนหน้าและการสลับในเธรดใหม่ หากต้องการเปลี่ยนเธรดเก่า CPU จะต้องบันทึกสถานะปัจจุบันไปยัง Process Control Block หรือสวิตช์เฟรม ซึ่งรวมถึงค่าของการลงทะเบียน CPU ที่เกี่ยวข้องและประกอบด้วยค่าของตัวนับโปรแกรมเสมอ เมื่อเก็บเธรดแล้ว แฮนเดิลสามารถเพิ่มไปยังคิวที่พร้อมใช้งานเพื่อให้สามารถกู้คืนได้เมื่อจำเป็น

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

ผลกระทบด้านประสิทธิภาพ

กระบวนการอ่านและเขียนข้อมูลเมื่อสลับเธรดเข้าหรือออกนั้นใช้เวลาพอสมควร แต่ไม่มากนัก เนื่องจากหน่วยความจำที่ใช้โดยทั่วไปมีความเร็วสูง อย่างไรก็ตาม ยังมีค่าใช้จ่ายในการดำเนินการเพิ่มเติม เมื่อสลับเธรด ข้อมูลในแคช CPU และบัฟเฟอร์จากเธรดก่อนหน้า อาจไม่เกี่ยวข้องกับเธรดใหม่ สิ่งนี้สามารถนำไปสู่การเพิ่มขึ้นอย่างมากใน TLB ( Translation Lookaside Buffer ) และแคชหายไป

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

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

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

บทสรุป

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



Leave a Comment

วิธีการโคลนฮาร์ดไดรฟ์

วิธีการโคลนฮาร์ดไดรฟ์

ในยุคดิจิทัลสมัยใหม่ ที่ข้อมูลเป็นทรัพย์สินที่มีค่า การโคลนฮาร์ดไดรฟ์บน Windows อาจเป็นกระบวนการที่สำคัญสำหรับหลายๆ คน คู่มือที่ครอบคลุมนี้

วิธีแก้ไขไดรเวอร์ WUDFRd ไม่สามารถโหลดบน Windows 10 ได้

วิธีแก้ไขไดรเวอร์ WUDFRd ไม่สามารถโหลดบน Windows 10 ได้

คุณกำลังเผชิญกับข้อความแสดงข้อผิดพลาดขณะบูตเครื่องคอมพิวเตอร์ซึ่งระบุว่าไดรเวอร์ WUDFRd ไม่สามารถโหลดบนคอมพิวเตอร์ของคุณได้ใช่หรือไม่?

วิธีแก้ไขรหัสข้อผิดพลาด NVIDIA GeForce Experience 0x0003

วิธีแก้ไขรหัสข้อผิดพลาด NVIDIA GeForce Experience 0x0003

คุณพบประสบการณ์รหัสข้อผิดพลาด NVIDIA GeForce 0x0003 บนเดสก์ท็อปของคุณหรือไม่? หากใช่ โปรดอ่านบล็อกเพื่อดูวิธีแก้ไขข้อผิดพลาดนี้อย่างรวดเร็วและง่ายดาย

Roomba Stops, Sticks and Turns Around – Fix

Roomba Stops, Sticks and Turns Around – Fix

Fix a problem where your Roomba robot vacuum stops, sticks, and keeps turning around.

วิธีลบ GPU ออกจากพีซีที่ใช้ Windows ในปี 2023

วิธีลบ GPU ออกจากพีซีที่ใช้ Windows ในปี 2023

คุณจำเป็นต้องลบ GPU ออกจากพีซีของคุณหรือไม่? เข้าร่วมกับฉันในขณะที่ฉันอธิบายวิธีลบ GPU ออกจากพีซีของคุณในคำแนะนำทีละขั้นตอนนี้

วิธีการติดตั้ง NVMe SSD ในเดสก์ท็อปและแล็ปท็อป

วิธีการติดตั้ง NVMe SSD ในเดสก์ท็อปและแล็ปท็อป

ซื้อ NVMe M.2 SSD ใหม่ แต่ไม่รู้ว่าจะติดตั้งอย่างไร? อ่านเพื่อเรียนรู้วิธีติดตั้ง NVMe SSD บนแล็ปท็อปหรือเดสก์ท็อป

Logic Bomb คืออะไร?

Logic Bomb คืออะไร?

ลอจิกบอมบ์คือเหตุการณ์ด้านความปลอดภัยที่ผู้โจมตีดำเนินการล่าช้า อ่านต่อเพื่อหาข้อมูลเพิ่มเติม

SoC คืออะไร?

SoC คืออะไร?

หากคุณเคยดูภายในพีซีทาวเวอร์ คุณจะเห็นว่ามีส่วนประกอบต่างๆ มากมาย แล็ปท็อปทั่วไปของคุณมีส่วนประกอบที่เหมือนกันเป็นส่วนใหญ่

การเข้ารหัสแบบอสมมาตรคืออะไร?

การเข้ารหัสแบบอสมมาตรคืออะไร?

อัลกอริธึมการเข้ารหัสแบบอสมมาตรใช้สองคีย์ที่แตกต่างกัน คีย์หนึ่งใช้สำหรับเข้ารหัสและอีกคีย์หนึ่งสำหรับถอดรหัส

Steam Deck: วิธีฟอร์แมตการ์ด SD

Steam Deck: วิธีฟอร์แมตการ์ด SD

Steam Deck มีตัวเลือกพื้นที่เก็บข้อมูลสามแบบ: 64GB eMMC, 256GB NVMe SSD และ 512GB NVMe SSD ขึ้นอยู่กับคลังเกมของคุณและขนาดของเกม