next up previous contents index
Next: การแทนที่และการค้นหาเพจ Up: หน่วยความจำ Previous: ลดอัตราของ Cache Miss โดยให้สามารถเลือกลงช่องได้มากขึ้น   Contents   Index

หน่วยความจำเสมือน

หน่วยความจำเสมือน (Virtual Memory) เป็นเทคนิคในการใช้หน่วยความจำหลัก (Main Memory) ให้เสมือนเป็น Cache สำหรับ แหล่งข้อมูลลำดับที่สอง เพื่อให้โปรแกรมหลายโปรแกรมสามารถใช้หน่วยความจำร่วมกันได้อย่างปลอดภัยและมีประสิทธิภาพ และสามารถถอดหรือสลับ โปรแกรมออกจากหน่วยความจำหลักที่มีขนาดเล็ก และมีความจุอย่างจำกัดได้ หน่วยความจำเสมือนทำหน้าที่ในการแปลงตำแหน่งอ้างอิงของโปรแกรมที่เรียกว่า ตำแหน่งอ้างอิงเสมือน (Virtual Address) ให้เป็นตำแหน่งอ้างอิงแท้จริง (physical address) ซึ่งก็คือตำแหน่งอ้างอิงในหน่วยความจำหลักนั่นเอง กระบวนการแปลงตำแหน่งอ้างอิงนี้เอง ที่ทำให้สามารถให้โปรแกรมหลายโปรแกรมทำงานร่วมกันได้ในระบบ Multitasking และสามารถป้องกันตำแหน่งอ้างอิงของโปรแกรมจากโปรแกรมอื่น

Block ของหน่วยความจำเสมือนจะถูกเรียกว่า เพจ (Page) และเรียกเหตุการณ์ ที่เกิดขึ้นเมื่อเพจที่ต้องการไม่อยู่ในหน่วยความจำหลักว่า Page Fault)

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

Figure 7.13: หน่วยความจำของตำแหน่งอ้างอิงเสมือน ที่ถูกแปลงไปยังหน่วยความจำหลัก
\includegraphics[width=3.65in]{fig/Chapter_7/f0720.eps}

ปัจจุบันนี้ หน่วยความจำทั้งสองลำดับชั้น ที่ถูกควบคุมโดยหน่วยความจำเสมือน ได้แก่ DRAMs และ แผ่นจานแม่เหล็ก (Magnetic disk)

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

หน่วยความจำเสมือนยังทำให้การโหลดโปรแกรมเพื่อการประมวลผลทำได้ง่ายขึ้น โดยการกำหนดตำแหน่งใหม่ (Relocation) ซึ่งจะแปลงตำแหน่งอ้างอิงเสมือนที่ถูกเรียกใช้โดยโปรแกรม ไปเป็นตำแหน่งอ้างอิงแท้จริงก่อนที่จะนำไปเรียกใช้หน่วยความจำ การกำหนดตำแหน่งใหม่นี้ทำให้สามารถโหลดโปรแกรมได้ทุกที่ในหน่วยความจำหลัก หน่วยความจำเสมือนที่ใช้ในปัจจุบัน สามารถกำหนดตำแหน่งของโปรแกรมให้เป็นกลุ่มของบล็อกแบบจำกัดขนาด (Fixed-Size Block) ซึ่งจะทำให้ไม่ต้องทำการค้นหาบล็อกของหน่วยความจำที่อยู่ติดกัน

จากรูปที่ 7.14 ตำแหน่งอ้างอิงเสมือนจะถูกแบ่งออกเป็น หมายเลขเพจเสมือน (Virtual Page Number) และ เพจออฟเซท (Page Offset) หมายเลขเพจเสมือนจะถูกแปลงเป็น หมายเลขเพจแท้จริง (Physical Page Number) ซึ่งจะประกอบเป็นส่วนแรกของตำแหน่งอ้างอิงแท้จริง ในขณะที่เพจออฟเซท ซึ่งไม่มีการเปลี่ยนแปลง จะประกอบเป็นส่วนส่วนหลังของตำแหน่งอ้างอิงแท้จริง ซึ่งจำนวนบิทในเพจออฟเซทนี่เองที่เป็นตัวกำหนดขนาดของแต่ละเพจ

Figure 7.14: การ Mapping ระหว่างแอดเดรส Virtual และ Physical
\includegraphics[width=5in]{fig/Chapter_7/f0721.eps}

รูปที่ 7.14 การแปลงจากตำแหน่งอ้างอิงเสมือนเป็นตำแหน่งอ้างอิงแท้จริง

การออกแบบระบบหน่วยความจำเสมือนนั้น ถูกกำหนดโดยจำนวนของการเกิดเพจฟอล์ท นั่นคือ

บล็อกที่มีขนาดไม่แน่นอนเรียกว่าเซกเมนเตชั่น (Segmentation) ประกอบด้วย 2 ส่วน ได้แก่ หมายเลขเซกเมนต์ (Segment Number) ซึ่งจะถูกแปลงไปเป็นตำแหน่งอ้างอิงแท้จริง และ เซกเมนต์ออฟเซท (Segment Offset) ซึ่งจะถูกเพิ่มเข้าไปเพื่อระบุตำแหน่งอ้างอิงแท้จริง เนื่องจากเซกเมนต์มีขนาดไม่แน่นอน จึงต้องมีการตรวจสอบขอบเขตเพื่อให้แน่ใจว่าออฟเซทนั้นอยู่ในเซกเมนต์

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



Subsections
next up previous contents index
Next: การแทนที่และการค้นหาเพจ Up: หน่วยความจำ Previous: ลดอัตราของ Cache Miss โดยให้สามารถเลือกลงช่องได้มากขึ้น   Contents   Index
Vara Varavithya 2006-11-06