เหตุใดซีพียู x86 จึงใช้ "วงแหวน" สองในสี่เท่านั้น

Apr 22, 2025
ฮาร์ดแวร์
เนื้อหาที่ไม่ถูกแคช

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

เซสชันคำถามและคำตอบของวันนี้มาถึงเราโดยได้รับความอนุเคราะห์จาก SuperUser ซึ่งเป็นแผนกย่อยของ Stack Exchange ซึ่งเป็นการรวมกลุ่มเว็บไซต์ถาม & ตอบโดยชุมชน

เอื้อเฟื้อภาพโดย Lemsipmatt (Flickr) .

คำถาม

ผู้อ่าน SuperUser AdHominem ต้องการทราบว่าเหตุใดซีพียู x86 จึงใช้วงแหวนสองในสี่วงแหวนเท่านั้น:

ระบบ x86 ที่ใช้ Linux และ Windows ใช้เท่านั้น แหวน 0 สำหรับโหมดเคอร์เนลและ แหวน 3 สำหรับโหมดผู้ใช้ เหตุใดโปรเซสเซอร์ถึงแยกวงแหวนที่แตกต่างกันสี่วงได้หากพวกเขาทั้งหมดใช้เพียงสองวง สิ่งนี้มีการเปลี่ยนแปลงด้วยสถาปัตยกรรม AMD64 หรือไม่?

เหตุใดซีพียู x86 จึงใช้วงแหวนเพียงสองในสี่วงเท่านั้น

คำตอบ

ผู้สนับสนุน SuperUser Jamie Hanrahan มีคำตอบให้เรา:

มีสองสาเหตุหลัก

ประการแรกคือแม้ว่าซีพียู x86 จะมีวงแหวนป้องกันหน่วยความจำสี่วง แต่ความละเอียดของการป้องกันที่มีให้จึงอยู่ที่ระดับต่อส่วน นั่นคือแต่ละส่วนสามารถตั้งค่าเป็นวงแหวนเฉพาะ (ระดับสิทธิ์) พร้อมกับการป้องกันอื่น ๆ เช่นปิดใช้งานการเขียน แต่มีตัวอธิบายกลุ่มไม่มากนัก ระบบปฏิบัติการส่วนใหญ่ต้องการให้มีการป้องกันหน่วยความจำที่ละเอียดกว่านี้มากเช่น ... สำหรับแต่ละหน้า

ดังนั้นป้อนการป้องกันตามตารางของเพจ ส่วนใหญ่ถ้าไม่ใช่ทั้งหมดระบบปฏิบัติการ x86 ที่ทันสมัยไม่มากก็น้อยละเว้นกลไกการแบ่งส่วน (เท่าที่จะทำได้) และพึ่งพาการป้องกันที่มีให้จากบิตลำดับต่ำในรายการตารางหน้า หนึ่งในนั้นเรียกว่าบิต "อภิสิทธิ์" บิตนี้ควบคุมว่าโปรเซสเซอร์จะต้องอยู่ในระดับ“ สิทธิพิเศษ” ระดับใดระดับหนึ่งเพื่อเข้าถึงเพจหรือไม่ ระดับ "สิทธิพิเศษ" คือ PL 0, 1 และ 2 . แต่เป็นเพียงบิตเดียวดังนั้นในระดับการป้องกันทีละหน้าจำนวน "โหมด" ที่มีให้เท่าที่เกี่ยวข้องกับการป้องกันหน่วยความจำมีเพียงสองหน้าเท่านั้น: สามารถเข้าถึงเพจได้จากโหมดที่ไม่ได้รับสิทธิพิเศษหรือไม่ก็ได้ ดังนั้นเพียงสองวง ในการมีวงแหวนที่เป็นไปได้สี่วงสำหรับแต่ละเพจพวกเขาจะต้องมีบิตป้องกันสองบิตในแต่ละรายการของตารางเพจเพื่อเข้ารหัสหนึ่งในสี่ของวงแหวนที่เป็นไปได้ (เช่นเดียวกับตัวอธิบายเซ็กเมนต์) อย่างไรก็ตามพวกเขาทำไม่ได้

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

มีเหตุผลประการที่สามที่เฉพาะเจาะจงสำหรับการพัฒนา Windows NT นักออกแบบของ NT (David Cutler และทีมงานของเขาซึ่ง Microsoft จ้างมาจาก DEC Western Region Labs) มีประสบการณ์เกี่ยวกับ VMS มาก่อน ในความเป็นจริงมีดและคนอื่น ๆ อีกสองสามคนเป็นหนึ่งในนักออกแบบดั้งเดิมของ VMS และโปรเซสเซอร์ VAX ที่ VMS ได้รับการออกแบบมีวงแหวนสี่วง (VMS ใช้วงแหวนสี่วง)

แต่ส่วนประกอบที่ทำงานใน VMS’s วงแหวน 1 และ 2 (บริการจัดการบันทึกและ CLI ตามลำดับ) ถูกทิ้งไว้จากการออกแบบ NT แหวน 2 ใน VMS ไม่ได้เกี่ยวกับความปลอดภัยของระบบปฏิบัติการ แต่เป็นการรักษาสภาพแวดล้อม CLI ของผู้ใช้จากโปรแกรมหนึ่งไปยังอีกโปรแกรมหนึ่งและ Windows ไม่มีแนวคิดนั้น CLI ทำงานเป็นกระบวนการปกติ ส่วน VMS’s แหวน 1 รหัส RMS ใน แหวน 1 ต้องโทรเข้า แหวน 0 ค่อนข้างบ่อยและการเปลี่ยนวงแหวนมีราคาแพง มันมีประสิทธิภาพมากกว่าที่จะไป แหวน 0 และทำกับมันมากกว่าที่จะมีจำนวนมาก แหวน 0 การเปลี่ยนภายใน แหวน 1 รหัส (อีกครั้งไม่ใช่ว่า NT มีอะไรเหมือน RMS อยู่ดี)

สำหรับเหตุผลที่ x86 ใช้วงแหวนสี่วงในขณะที่ระบบปฏิบัติการไม่ได้ใช้งานคุณกำลังพูดถึงระบบปฏิบัติการที่มีการออกแบบล่าสุดมากกว่า x86 คุณสมบัติการเขียนโปรแกรมระบบจำนวนมากของ x86 ได้รับการออกแบบมานานก่อนที่จะใช้เมล็ด NT หรือเมล็ด Unix-ish จริงและพวกเขาไม่รู้จริงๆว่าระบบปฏิบัติการจะใช้อะไร จนกระทั่งเราได้เพจบน x86 เราสามารถใช้เมล็ด Unix-ish หรือ VMS เหมือนจริงได้

ระบบปฏิบัติการ x86 ที่ทันสมัยไม่เพียง แต่เพิกเฉยต่อการแบ่งส่วน (พวกเขาเพียงแค่ตั้งค่าส่วน C, D และ S ด้วยที่อยู่ฐาน 0 และขนาด 4 GB บางครั้งกลุ่ม F และ G จะใช้เพื่อชี้ไปที่โครงสร้างข้อมูลระบบปฏิบัติการที่สำคัญ ) พวกเขายังเพิกเฉยต่อสิ่งต่างๆเช่น "เซ็กเมนต์สถานะงาน" กลไก TSS ได้รับการออกแบบมาอย่างชัดเจนสำหรับการสลับบริบทเธรด แต่ปรากฎว่ามีผลข้างเคียงมากเกินไประบบปฏิบัติการ x86 ที่ทันสมัยจึงทำ "ด้วยมือ" ครั้งเดียวที่ x86 NT เปลี่ยนงานฮาร์ดแวร์สำหรับเงื่อนไขพิเศษบางอย่างเช่นข้อยกเว้นความผิดพลาดสองครั้ง

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


มีสิ่งที่จะเพิ่มคำอธิบาย? ปิดเสียงในความคิดเห็น ต้องการอ่านคำตอบเพิ่มเติมจากผู้ใช้ Stack Exchange ที่เชี่ยวชาญด้านเทคโนโลยีคนอื่น ๆ หรือไม่? ดูกระทู้สนทนาฉบับเต็มได้ที่นี่ .

Why Do X86 CPUs Only Use Two Out Of Four “Rings”?

Why Do X86 CPUs Only Use 2 Out Of 4 Rings?

Lord Of The X86 Rings: A Portable User Mode Privilege Separation Architecture On X86


ฮาร์ดแวร์ - บทความยอดนิยม

VR ดีแค่ไหนในปี 2018? คุ้มไหมที่จะซื้อ

ฮาร์ดแวร์ May 3, 2025

เนื้อหาที่ไม่ถูกแคช ในปี 2018 ชุดหูฟัง VR ดีกว่าและถูกกว่าที่เคยเป็..


อะไรคือความแตกต่างระหว่าง iPad, iPad Pro และ iPad Mini

ฮาร์ดแวร์ Jan 26, 2025

เนื้อหาที่ไม่ถูกแคช สาย iPad ของ Apple มีน้ำหนักค่อนข้างมากระหว่าง iPad Pro..


Amazon Echo กับ Google Home: คุณควรซื้ออันไหน

ฮาร์ดแวร์ Jan 7, 2025

ทั้ง Amazon Echo และ Google Home ได้รับตำแหน่งในอันดับต้น ๆ ของบ้านสมาร์ทโฮม แต�..


อธิบายซีรีส์ X Series ใหม่ของ Intel

ฮาร์ดแวร์ Jul 4, 2025

เนื้อหาที่ไม่ถูกแคช นอกจากโปรเซสเซอร์ระดับผู้บริโภคระดับใหม่�..


การใช้ฮาร์ดไดรฟ์ในขณะที่ rsync ทำงานปลอดภัยหรือไม่

ฮาร์ดแวร์ Feb 21, 2025

เนื้อหาที่ไม่ถูกแคช หากคุณเพิ่งเริ่มต้นใช้งาน rsync เป็นครั้งแรกแ..


เหตุใดจึงดีที่ RAM ของคอมพิวเตอร์ของคุณเต็ม

ฮาร์ดแวร์ Sep 21, 2025

Windows, Linux, Android หรือระบบปฏิบัติการอื่นใช้ RAM จำนวนมากหรือไม่? อย่าตกใจ! ร�..


วิธีติดตั้งอะแดปเตอร์ Wi-Fi ภายนอกบนแล็ปท็อป Windows 10

ฮาร์ดแวร์ Mar 17, 2025

หากอะแดปเตอร์ Wi-Fi ภายในของแล็ปท็อปของคุณหมดสภาพหรือมีพลังงานไม่..


วิธีการเชื่อมต่อ iPhone ของคุณกับพีซี Linux ของคุณ

ฮาร์ดแวร์ Jul 28, 2025

Apple เช่นเดียวกับ บริษัท ส่วนใหญ่ไม่ได้ให้การสนับสนุน Linux จริงๆดังน�..


หมวดหมู่