สิ่งนี้น่างงงวยดังนั้นฉันจะวางมันทั้งหมดที่นี่ เห็นได้ชัดว่าผ่าน MMIO คุณสามารถเข้าถึงอุปกรณ์ภายนอกโดยใช้ที่อยู่หน่วยความจำที่กำหนดซึ่งจะถูกกำหนดเส้นทางไปยังอุปกรณ์นั้นอีกครั้ง (ผ่านการเขียนแพ็คเก็ตคำสั่ง ฯลฯ ) อย่างไรก็ตามฉันเคยได้ยินคำอธิบายที่หลากหลายของทั้งคู่ การลงทะเบียนฮาร์ดแวร์ (เช่นการลงทะเบียน CPU / GPU หรือชิปเสียง) และการลงทะเบียนที่แมปหน่วยความจำใช้สลับกันได้ พวกเขาเป็นสิ่งเดียวกันหรือไม่
เมื่อคุณพูดว่า "หน่วยความจำที่แมปลงทะเบียน" คุณไม่ได้อ้างถึงที่อยู่ซึ่งข้อมูลไบต์จะถูกกำหนดเส้นทางไปยังที่อยู่เฉพาะภายในอุปกรณ์นั้น (เช่นในทางทฤษฎี: ที่อยู่ 0x500 ของ GPU ใช้สำหรับลงทะเบียน TEXTURE_BUFFER) อย่างไรก็ตามอุปกรณ์ที่แมปหน่วยความจำไม่สามารถแมปการลงทะเบียนทางกายภาพภายใน RAM
ดังนั้นโดยทั่วไปแล้วความแตกต่างระหว่างการลงทะเบียนหน่วยความจำแมปและเพียงลงทะเบียนฮาร์ดแวร์คืออะไร?