การกำหนดนามแฝงบริบทแคชข้อมูล Hyper-Threading

Oct 31 2020

ในคู่มือของ intel ส่วนต่อไปนี้ทำให้ฉันสับสน:

11.5.6.2 โหมดที่ใช้ร่วมกันในโหมดที่ใช้ร่วมกันแคชข้อมูล L1 จะถูกแบ่งใช้ร่วมกันระหว่างตัวประมวลผลแบบลอจิคัล สิ่งนี้เป็นจริงแม้ว่าตัวประมวลผลเชิงตรรกะจะใช้การลงทะเบียน CR3 และโหมดการเพจที่เหมือนกัน ในโหมดที่ใช้ร่วมกันที่อยู่เชิงเส้นในแคชข้อมูล L1 สามารถใช้นามแฝงได้ซึ่งหมายความว่าที่อยู่เชิงเส้นหนึ่งรายการในแคชสามารถชี้ไปยังตำแหน่งทางกายภาพที่แตกต่างกันได้ กลไกในการแก้ไขนามแฝงอาจทำให้เกิดการหวดได้ ด้วยเหตุนี้ IA32_MISC_ENABLE [bit 24] = 0 จึงเป็นการกำหนดค่าที่ต้องการสำหรับโปรเซสเซอร์ที่ใช้ Intel NetBurst microarchitecture ที่รองรับ Intel Hyper-Threading Technology

เนื่องจาก intel ใช้ VIPT (เท่ากับ PIPT) เพื่อเข้าถึงแคช

นามแฝงแคชจะเกิดขึ้นได้อย่างไร?

คำตอบ

1 PaulA.Clayton Nov 01 2020 at 20:18

อ้างอิงจากคู่มืออ้างอิงการปรับแต่งสถาปัตยกรรมIntel® 64 และ IA-32พฤศจิกายน 2009 (248966-020) ส่วน 2.6.1.3:

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

แคชระดับแรกสามารถทำงานได้ในสองโหมดขึ้นอยู่กับบิต ID บริบท:

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

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

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