แคช TLB การใช้และคำจำกัดความของ Translate Lookaside Buffer

แคช TLB

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

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

TLB, แปลบัฟเฟอร์ Lookaside

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

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

  • เพจขนาดคงที่ที่เก็บหน่วยความจำไม่กี่กิโลไบต์
  • เห็นได้ชัดว่าตารางหน้าเป็นตารางที่เก็บหน้าต่างๆ
  • ไดเร็กทอรีของเพจ ซึ่งรวมถึงตารางเพจทั้งหมด

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

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

กระบวนการรันแคช TLB

เข้าถึง TLB

ในวิธีที่ง่ายมาก มันเกิดขึ้นดังนี้:

  • CPU ร้องขอไปยังที่อยู่หน่วยความจำ
  • MMU ที่ใช้แคช TLB จะสร้างที่อยู่จริง
  • แคชระดับแรกจะถูกถามว่ามีข้อมูลของที่อยู่ทางกายภาพของ RAM อยู่ข้างในหรือไม่ หากพบข้อมูล ข้อมูลนั้นจะถูกทำเครื่องหมายเป็น "hit" และข้อมูลจะถูกแก้ไขหรือส่งคืนไปยัง CPU ตามความจำเป็น
  • ในกรณีที่ไม่พบที่อยู่ที่ต้องการใน TLB จะมีการเข้าถึงตารางหน้าใน RAM และหน้าถัดไปจะถูกคัดลอกไปยัง TLB เพื่อดูว่ามีที่อยู่นั้นหรือไม่

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

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

แคชเสมือน, TLB และมัลติคอร์

แคชเสมือน

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

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

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