หน่วยจัดการหน่วยความจำ

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

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

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

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

ในการออกแบบไมโครโพรเซสเซอร์ยุคแรก ๆ บางรุ่น การจัดการหน่วยความจำจะดำเนินการโดยวงจรรวมแยกต่างหาก เช่น วีแอลเอสไอเทคโนโลยี วีไอ475 (1986), โมโตโรลา 68851 (1984) ซึ่งใช้กับซีพียูโมโตโรลา 68020 ในแมคอินทอช II หรือแซด8010 และแซด8015 (1985) ซึ่งใช้กับหน่วยประมวลผลตระกูลไซล็อก แซด8000 ไมโครโพรเซสเซอร์ยุคต่อมา (เช่น โมโตโรลา 68030 และไซล็อก แซด280) ได้นำหน่วยจัดการหน่วยความจำมาไว้ด้วยกันกับซีพียูบนวงจรรวมเดียวกัน เช่นเดียวกับอินเทล 80286 และไมโครโพรเซสเซอร์เอกซ์86 ยุคต่อมา

ระบบรุ่นแรก ๆ บางระบบ โดยเฉพาะระบบ 8 บิต จะใช้หน่วยจัดการหน่วยความจำที่เรียบง่ายมากในการสลับแบงก์ (bank switching)

 อ้างอิง 

หมวดหมู่:หน่วยประมวลผลกลาง
หมวดหมู่:วงจรดิจิทัล
หมวดหมู่:การจัดการหน่วยความจำ
หมวดหมู่:หน่วยความจำเสมือน