ในตัวประมวลผลแบบมัลติคอร์จะเกิดอะไรขึ้นกับเนื้อหาของแคชของคอร์ (เช่น L1) เมื่อมีการสลับบริบทเกิดขึ้นบนแคชนั้น
พฤติกรรมขึ้นอยู่กับสถาปัตยกรรมหรือเป็นพฤติกรรมทั่วไปตามด้วยผู้ผลิตชิปทั้งหมดหรือไม่
ในตัวประมวลผลแบบมัลติคอร์จะเกิดอะไรขึ้นกับเนื้อหาของแคชของคอร์ (เช่น L1) เมื่อมีการสลับบริบทเกิดขึ้นบนแคชนั้น
พฤติกรรมขึ้นอยู่กับสถาปัตยกรรมหรือเป็นพฤติกรรมทั่วไปตามด้วยผู้ผลิตชิปทั้งหมดหรือไม่
คำตอบ:
ขึ้นอยู่กับทั้งโปรเซสเซอร์ (ไม่ใช่เฉพาะซีรีย์โปรเซสเซอร์ แต่อาจแตกต่างกันในแต่ละรุ่น) และระบบปฏิบัติการ แต่มีหลักการทั่วไป ไม่ว่าจะเป็นหน่วยประมวลผลแบบมัลติคอร์ไม่มีผลกระทบโดยตรงในด้านนี้; กระบวนการเดียวกันอาจดำเนินการหลายแกนพร้อมกัน (ถ้าเป็นแบบมัลติเธรด) และหน่วยความจำสามารถใช้ร่วมกันระหว่างกระบวนการดังนั้นการซิงโครไนซ์แคชไม่สามารถหลีกเลี่ยงได้โดยไม่คำนึงถึงสิ่งที่เกิดขึ้นบนสวิตช์บริบท
เมื่อหน่วยประมวลผลค้นหาตำแหน่งหน่วยความจำในแคชหากมีMMUตัวประมวลผลสามารถใช้ฟิสิคัลหรือที่อยู่เสมือนของตำแหน่งนั้น (บางครั้งอาจเป็นการรวมกันของทั้งคู่ แต่ก็ไม่เกี่ยวข้องกันเลย)
ด้วยที่อยู่จริงมันไม่สำคัญว่ากระบวนการใดกำลังเข้าถึงที่อยู่เนื้อหาสามารถแชร์ได้ ดังนั้นจึงไม่จำเป็นต้องทำให้เนื้อหาแคชใช้ไม่ได้ในระหว่างการสลับบริบท หากทั้งสองกระบวนการจับคู่เพจฟิสิคัลเดียวกันกับแอ็ตทริบิวต์ที่ต่างกัน MMU นี้จะทำหน้าที่จัดการ (ทำหน้าที่เป็นMPU (หน่วยป้องกันหน่วยความจำ)) ข้อเสียของแคชที่ระบุทางกายภาพคือ MMU ต้องอยู่ระหว่างโปรเซสเซอร์และแคชดังนั้นการค้นหาแคชจึงช้า แคช L1 แทบจะไม่เคยพูดถึงเลย แคชระดับสูงอาจเป็น
ที่อยู่เสมือนเดียวกันสามารถแสดงตำแหน่งหน่วยความจำที่แตกต่างกันในกระบวนการที่แตกต่างกัน ดังนั้นด้วยแคชที่จวนจ้องตัวประมวลผลและระบบปฏิบัติการจะต้องร่วมมือเพื่อให้แน่ใจว่ากระบวนการจะพบหน่วยความจำที่เหมาะสม มีเทคนิคทั่วไปหลายประการ โค้ดการสลับบริบทที่จัดเตรียมโดยระบบปฏิบัติการสามารถทำให้แคชทั้งหมดไม่ถูกต้อง สิ่งนี้ถูกต้อง แต่มีราคาแพงมาก สถาปัตยกรรม CPU บางตัวมีที่ว่างในบรรทัดแคชสำหรับ ASID (ตัวระบุพื้นที่ที่อยู่) รุ่นฮาร์ดแวร์ของ ID กระบวนการซึ่งใช้โดย MMU สิ่งนี้จะแยกรายการแคชออกจากกระบวนการต่าง ๆ อย่างมีประสิทธิภาพและหมายความว่ากระบวนการสองอย่างที่แมปหน้าเดียวกันจะมีมุมมองที่ไม่ต่อเนื่องกันของหน้าฟิสิคัลเดียวกัน (โดยปกติจะมีค่า ASID พิเศษที่ระบุหน้าเว็บที่แชร์ แต่ต้องล้างข้อมูลเหล่านี้หากไม่ได้ถูกแมปไปยังที่อยู่เดียวกันในกระบวนการทั้งหมดที่มีการทำแผนที่) หากระบบปฏิบัติการดูแลว่ากระบวนการที่แตกต่างกันใช้พื้นที่ที่อยู่ที่ไม่ทับซ้อนกัน (ซึ่งเอาชนะจุดประสงค์บางส่วนของการใช้หน่วยความจำเสมือน แต่สามารถทำได้ในบางครั้ง) สายแคชจะยังคงใช้งานได้
โปรเซสเซอร์ส่วนใหญ่ที่มี MMU ก็มีTLBเช่นกัน TLB เป็นแคชของการแมปจากที่อยู่เสมือนไปยังที่อยู่ทางกายภาพ TLB จะได้รับการพิจารณาก่อนการค้นหาในแคชที่ระบุทางกายภาพเพื่อพิจารณาที่อยู่ทางกายภาพอย่างรวดเร็วเมื่อเป็นไปได้ ตัวประมวลผลอาจเริ่มต้นการค้นหาแคชก่อนที่การค้นหา TLB จะเสร็จสมบูรณ์เนื่องจากบรรทัดแคชของผู้สมัครสามารถระบุได้จากบิตกลางของที่อยู่ระหว่างบิตที่กำหนดออฟเซ็ตในบรรทัดแคชและบิตที่กำหนดหน้า แคชที่ได้รับการแก้ไขตามความจริงจะข้าม TLB หากมีการเข้าสู่แคชแม้ว่าโปรเซสเซอร์อาจเริ่มต้นการค้นหา TLB ในขณะที่กำลังทำการแคชแคชในกรณีที่พลาด
TLB ต้องถูกจัดการระหว่างการสลับบริบท หากรายการ TLB มี ASID รายการเหล่านั้นสามารถคงอยู่ได้ ระบบปฏิบัติการจำเป็นต้องลบรายการ TLB หาก ASID ของพวกเขาเปลี่ยนความหมาย (เช่นเนื่องจากกระบวนการได้ออก) หากรายการ TLB เป็นรายการโกลบอลรายการเหล่านั้นจะต้องไม่ถูกต้องเมื่อสลับไปใช้บริบทอื่น
โดยทั่วไปแคชจะไม่สนใจสวิตช์บริบท เฉพาะลำดับของที่อยู่หน่วยความจำที่เข้าถึงเท่านั้นที่จะกำหนดว่าจะเปลี่ยนบรรทัดแคชใด
โดยปกติแล้วนโยบายการเปลี่ยนทดแทนจะเป็นแบบฮิวริสติกขึ้นอยู่กับผู้ผลิตและสถาปัตยกรรมขนาดเล็กโดยเฉพาะ ปัญหาคือว่าฮิวริสติกไม่สามารถทำนายอนาคตได้ว่าจะใช้ที่อยู่ใดและจะมีการเข้าถึงบรรทัดแคชต่อไป
ฮิวริสติกสามารถใช้งานได้ง่ายเหมือน LRU (ใช้น้อยที่สุดเมื่อเร็ว ๆ นี้) แต่ด้วย CPU ที่ทันสมัยฮิวริสติกส์นั้นซับซ้อนกว่ามาก
ดูคู่มือผู้พัฒนาซอฟท์แวร์สถาปัตยกรรมIntel® 64 และ IA-32 เล่มที่ 3บทที่ 11 อธิบายถึงแคชหน่วยความจำและกลไกการควบคุมแคช เอเอ็มดีมีในบทที่ 7 ของคู่มือเล่ม 2 AMD64 สถาปัตยกรรมของโปรแกรมเมอร์: การเขียนโปรแกรมระบบ สำหรับซีพียูที่ใช้ ARM นั้นดูเหมือนว่า PDF นั้นจะมีให้สำหรับลูกค้าที่ลงทะเบียนเท่านั้น