IOMMU ทำงานอย่างไรเพื่อสื่อสาร CPU และอุปกรณ์ต่อพ่วง

ไอโอมมุ

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

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

IOMMU อยู่ที่ไหน

IOMMU นอร์ธบริดจ์ เซาธ์บริดจ์

ดังที่เห็นในแผนภาพด้านบนอุปกรณ์ต่อพ่วงเชื่อมต่อกับ Southbridge หรือ South Bridge ซึ่งจะเชื่อมต่อกับ Northbridge ซึ่งเป็นฮับที่ส่วนต่อประสานของ RAM และ CPU สื่อสารกันเป็นหลัก แต่ละ. IOMMU ตั้งอยู่ภายใน Southbridge ซึ่งเป็นที่ที่อินเทอร์เฟซ I / O ทั้งหมดเช่น USB, PCI Express, SATA และอื่น ๆ มีความเข้มข้น

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

ดังนั้น IOMMU จึงทำหน้าที่เป็น MMU แต่สำหรับอุปกรณ์ต่อพ่วง I / O

ประโยชน์ของมันคืออะไร?

ไอโอมมุ

อุปกรณ์ต่อพ่วง I / O ไม่แชร์ MMU (หน่วยจัดการหน่วยความจำ) กับ CPU ดังนั้นจึงไม่ดูหน่วยความจำในลักษณะเดียวกับตัวประมวลผลระบบส่วนกลาง ปัญหานี้ทำให้อุปกรณ์ต่อพ่วงสามารถเข้าถึงส่วนต่างๆของหน่วยความจำระบบที่มีความอ่อนไหวเช่นส่วนที่สงวนไว้สำหรับฟังก์ชันของระบบปฏิบัติการซึ่งเป็นปัญหาในสภาพแวดล้อมแบบมัลติทาสก์

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

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

แผนที่หน่วยความจำ PC ดั้งเดิมของ IOMMU

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

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

การใช้ IOMMU ในระบบเสมือน

ผ่านอุปกรณ์ IOMMU

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

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