TLB และแคชข้อมูลทำงานอย่างไร


15

ฉันพยายามศึกษาเพื่อสอบและฉันก็รู้ว่าฉันสับสนเกี่ยวกับการทำงานของ TLB และแคชข้อมูล

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

ฉันขอโทษสำหรับความไม่รู้ของฉันล่วงหน้า แต่หนังสือเล่มนี้ครอบคลุม TLB's (มันเหมือนกับหน้ามากกว่าหนึ่งหน้า) และมันก็ทำงานได้ไม่ดีนักในการอธิบายความสัมพันธ์ระหว่าง TLB และแคช

รูป


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

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

@DW นั้นดีกว่าเหรอ?
audiFanatic

audiFanatic คุณอาจตีความหรือตีความความคิดเห็นของฉันผิดและความคิด "แสดงความพยายาม" ข้อเสนอแนะของฉันคือคุณระบุคำถามแคบ ๆ - เช่น "TLB ทำงานอย่างไรฉันไม่เข้าใจ" - แล้วให้ความสนใจกับคำถามนั้นอีกครั้ง ใช่คุณต้องใช้ความพยายามอย่างจริงจังในการตอบคำถามนั้นและคุณควรแสดงความพยายามในการตอบคำถามนั้น แต่ความพยายามในเรื่องที่ไม่เกี่ยวข้องนั้นไม่เกี่ยวข้อง (เช่นความจริงที่คุณพยายามอย่างหนักที่จะทำ ความคืบหน้าของคำถามการบ้านซึ่งทำให้คุณคิดถึงคำถามนี้)
DW

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

คำตอบ:


23

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

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

    ดังนั้น TLB จึงทำหน้าที่เป็นแคชเฉพาะสำหรับการค้นหานี้ TLB มีรายการ TLB สองสามรายการโดยที่รายการ TLB แต่ละรายการมีทั้งที่อยู่เสมือนและที่อยู่จริงที่สอดคล้องกัน

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

  • data cache เป็นแคชสำหรับเนื้อหาของหน่วยความจำ หน่วยความจำหลักให้คุณระบุที่อยู่จริงและอ่านค่าที่อยู่จริงนั้นได้ อย่างไรก็ตามหน่วยความจำหลักช้า หากเราต้องไปที่หน่วยความจำหลักทุกครั้งที่เราต้องการดำเนินการกับหน่วยความจำตัวประมวลผลของเราจะช้ามาก

    ดังนั้นแคชข้อมูลทำหน้าที่เป็นแคชเฉพาะสำหรับการอ่านหน่วยความจำ แคชข้อมูลมีรายการแคชบางรายการซึ่งแต่ละรายการแคชมีที่อยู่จริงและมูลค่าหน่วยความจำที่อยู่นั้น

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

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

สำหรับรายละเอียดเพิ่มเติมคุณสามารถอ่านบทความวิกิพีเดีย TLBs หากคุณทำการค้นหามีข้อมูลอื่นมากมายใน TLB และแคชข้อมูล ฉันขอแนะนำให้ค้นหา "TLB" และ "L1 cache" หรือ "L2 cache" (ส่วนหลัง 2 เป็นชนิดของแคชข้อมูล)

(สำหรับการอ้างอิงในอนาคต: เราคาดว่าคุณจะทำการวิจัยเกี่ยวกับคำถามของคุณก่อนที่จะถามที่นี่และเพื่อตรวจสอบแหล่งอินเทอร์เน็ตมาตรฐานหากคำตอบสามารถพบได้ใน Wikipedia คุณยังไม่ได้ทำการวิจัยด้วยตัวเองมากพอ โชคดีกว่าถ้าคุณตรวจสอบแหล่งข้อมูลทางอินเทอร์เน็ตเกี่ยวกับวิธี TLB ก่อนถามที่นี่ดูความพยายามในการวิจัยที่คาดหวังของผู้ใช้ Stack Overflow เท่าไหร่ดังนั้นลองใช้โอกาสนี้เป็นบทเรียนในการปรับปรุงตัวคุณเอง ทักษะการวิจัย - สิ่งที่จะเป็นประโยชน์ต่อคุณตลอดการทำงาน)


1
ขอขอบคุณ! ที่ล้างส่วนใหญ่ทุกอย่าง ฉันใช้เวลาค้นคว้าหลายวัน (หลายวัน) ฉันไม่สามารถหาข้อมูลที่ชัดเจนและกระชับที่เชื่อมโยงเข้าด้วยกัน (รวมทั้งความสับสนของฉันอาจไม่ช่วยในการค้นหา) ในการเปรียบเทียบฉันรู้สึกเหมือนอยู่ในร้านขายยาที่กำลังมองหาวิธีรักษาโรคที่ไม่ได้รับการวินิจฉัย ใช้อาการเท่านั้นเป็นแนวทาง
audiFanatic

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

1
VPV+1P+1V+2P+2V+4095P+4095

ผมผมผม

โอเคเยี่ยมเลย ขอบคุณ ฉันเดาว่ามันเป็นการแยกที่ทำให้ฉันสับสนมากที่สุด
audiFanatic
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.