กลับไปหน้าบทความ

อ่าน 2 นาที

แคชเหยื่อ

แคช เหยื่อ (Victim cache) คือแคชขนาดเล็ก โดยทั่วไปจะ เป็นแคช แบบเชื่อมโยงอย่างสมบูรณ์ (fully associative cache) ที่วางอยู่ในเส้นทางการเติมข้อมูลของ แคช CPU...

แคชเหยื่อ

แคชเหยื่อ (Victim cache)คือแคชขนาดเล็ก โดยทั่วไปจะ เป็นแคช แบบเชื่อมโยงอย่างสมบูรณ์ (fully associative cache) ที่วางอยู่ในเส้นทางการเติมข้อมูลของแคช CPUทำหน้าที่จัดเก็บบล็อกทั้งหมดที่ถูกลบออกจากแคชระดับนั้น และได้รับการเสนอแนวคิดนี้ครั้งแรกในปี 1990 ในสถาปัตยกรรมสมัยใหม่ หน้าที่นี้มักจะดำเนินการโดยแคชระดับ 3 หรือระดับ 4

ภาพรวม

การแคชเหยื่อเป็นเทคนิคฮาร์ดแวร์เพื่อปรับปรุงประสิทธิภาพของแคชที่เสนอโดยNorman Jouppiดังที่กล่าวไว้ในเอกสารของเขา: [ 1 ] 

การแคชแบบ Miss จะวางแคชแบบ Fully-associative ไว้ระหว่างแคชและเส้นทางการเติมใหม่ การพลาดในแคชที่ตรงกับแคชแบบ Miss จะมีค่าปรับหนึ่งรอบการทำงาน ตรงข้ามกับค่าปรับการพลาดหลายรอบการทำงานหากไม่มีแคชแบบ Miss การแคชแบบ Victim Caching เป็นการปรับปรุงการแคชแบบ Miss ที่โหลดแคชแบบ Fully-associative ขนาดเล็กด้วยเหยื่อของการพลาด ไม่ใช่บรรทัดแคชที่ร้องขอ  [ 1 ]

แคชเหยื่อ (Victim cache) คือแคชฮาร์ดแวร์ที่ออกแบบมาเพื่อลดการพลาดข้อมูลเนื่องจากความขัดแย้งและเพิ่มความรวดเร็วในการเข้าถึงข้อมูล (Hit latency) สำหรับแคชแบบ direct-mapped โดยจะถูกใช้ในเส้นทางการเติมข้อมูลของแคชระดับ 1 (Level 1 cache) ซึ่งข้อมูล ใดๆ ที่ถูกลบออกจากแคชหลัก (Level 1 cache) จะถูกเก็บไว้ในแคชเหยื่อ ดังนั้น แคชเหยื่อจะถูกเติมข้อมูลก็ต่อเมื่อมีข้อมูลถูกลบออกจากแคชระดับ 1 เท่านั้น เมื่อเกิดการพลาดข้อมูลในแคชระดับ 1 ข้อมูลที่พลาดไปจะถูกตรวจสอบในแคชเหยื่อ หากการเข้าถึงพบข้อมูลที่ต้องการ ข้อมูลในแคชระดับ 1 และแคชเหยื่อที่เกี่ยวข้องจะถูกสลับกัน

แม้ว่าในตอนแรก Jouppi เสนอให้ปรับปรุงประสิทธิภาพแคชของแคชระดับ 1 แบบ direct-mapped แต่ไมโครโปรเซสเซอร์ในปัจจุบันที่มีลำดับชั้นแคช หลายระดับ จะใช้แคชระดับ 3 หรือระดับ 4 เพื่อทำหน้าที่เป็นแคชเหยื่อสำหรับแคชที่อยู่เหนือกว่าในลำดับชั้นหน่วยความจำ Intel Crystal Well [ 2 ]ของโปรเซสเซอร์ Haswell ได้แนะนำแคชระดับ 4 บนแพ็คเกจซึ่งทำหน้าที่เป็นแคชเหยื่อสำหรับแคชระดับ 3 ของโปรเซสเซอร์[ 3 ]แคชระดับ 3 ขนาด 4–12 MB ถูกใช้เป็นแคชเหยื่อใน ไมโครโปรเซสเซอร์ POWER5 (IBM)

พื้นหลัง

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

แคชแบบ Direct-mapped มี เวลาในการเข้าถึง เร็ว กว่า แคช แบบ Set-associativeอย่างไรก็ตาม ในแคชแบบ Direct-mapped เมื่อบล็อกแคชหลายบล็อกในหน่วยความจำแมปไปยังบรรทัดแคชเดียวกัน พวกมันจะแย่งพื้นที่กันเองเมื่อมีการเข้าถึงบล็อกใดบล็อกหนึ่ง ปัญหานี้เรียกว่าปัญหาความขัดแย้งของแคช เกิดขึ้นเนื่องจากข้อจำกัดของระดับการเชื่อมโยงของแคช การเพิ่มระดับการเชื่อมโยงของแคชสามารถลดปัญหานี้ได้ แต่มีความซับซ้อนในการใช้งานและข้อจำกัดว่าสามารถเพิ่มระดับการเชื่อมโยงได้มากเพียงใด เพื่อแก้ไขปัญหาความขัดแย้งของแคชภายใต้ข้อจำกัดของระดับการเชื่อมโยงของแคช มักจะใช้แคชเหยื่อ (victim cache)

การดำเนินการ

ลักษณะการทำงานของแคชเหยื่อในการโต้ตอบกับแคชระดับที่เกี่ยวข้องมีดังต่อไปนี้:

แคชถูกเรียกใช้งาน:ไม่มีการดำเนินการใดๆ

Cache Miss, Victim Hit:บล็อกที่อยู่ในแคชของเหยื่อและบล็อกในแคชเดิมจะถูกแทนที่ด้วยบล็อกใหม่ รายการใหม่ในแคชของเหยื่อนี้จะกลายเป็นบล็อกที่ถูกใช้งานล่าสุด

ตัวอย่างการใช้งาน

Cache Miss, Victim Miss:บล็อกถูกดึงมายังแคชจากระดับถัดไป บล็อกที่ถูกนำออกจากแคชจะถูกเก็บไว้ในแคชของเหยื่อ (Victim cache)

ตัวอย่าง

พิจารณาแคช L1 แบบ direct-mapped ที่มีบล็อก A และ B ชี้ไปยังชุดข้อมูลเดียวกัน โดยเชื่อมโยงกับแคช victim แบบ fully associative ที่มี 2 รายการ และมีบล็อก C และ D อยู่ภายใน

เส้นทางที่ต้องติดตาม: A, B, A, B...

จากแผนภาพ เราจะเห็นว่า ในกรณีที่แคชเหยื่อ (VC) ถูกโจมตี บล็อก A และ B จะถูกสลับกัน บล็อกที่ใช้งานล่าสุดน้อยที่สุดของ VC จะยังคงอยู่เหมือนเดิม ดังนั้นจึงทำให้เกิดภาพลวงตาของการเชื่อมโยงในแคช L1 แบบ direct-mapped ซึ่งจะช่วยลดการพลาดเนื่องจากความขัดแย้ง

ในกรณีที่มีแคชสองตัว คือ L1 และ L2 ที่ใช้ นโยบาย แคชแบบผูกขาด (L2 ไม่แคชตำแหน่งหน่วยความจำเดียวกับ L1) L2 จะทำหน้าที่เป็นแคชเหยื่อสำหรับ L1

ผลกระทบต่อประสิทธิภาพการทำงาน

ในขณะที่ทำการวัดการปรับปรุงประสิทธิภาพโดยใช้แคชเหยื่อ Jouppi [ 1 ]สมมติว่าแคชแบบแมปโดยตรงระดับ 1 ได้รับการเสริมด้วยแคชแบบเชื่อมโยงอย่างสมบูรณ์ สำหรับชุดทดสอบที่เขาใช้ พบว่าโดยเฉลี่ย 39% ของการพลาดแคชข้อมูลระดับ 1 เป็นการพลาดเนื่องจากความขัดแย้ง ในขณะที่โดยเฉลี่ย 29% ของการพลาดคำสั่งระดับ 1 เป็นการพลาดเนื่องจากความขัดแย้ง[ 1 ]เนื่องจากการพลาดเนื่องจากความขัดแย้งมีสัดส่วนมากเมื่อเทียบกับการพลาดทั้งหมด ดังนั้นการเพิ่มการเชื่อมโยงเพิ่มเติมโดยการเสริมแคชระดับ 1 ด้วยแคชเหยื่อจึงมีแนวโน้มที่จะปรับปรุงอัตราการพลาด ทั้งหมด อย่างมีนัยสำคัญ

ผลการทดลองสรุปได้จากการพิจารณาแคชแบบ Direct-Mapped 2 ทางและ Fully Associative ขนาด 32 กิโลไบต์ ที่เสริมด้วยแคชเหยื่อขนาด 256 บล็อก (8 กิโลไบต์) และรันด้วย ชุดทดสอบ SPEC 95 ที่เลือกแบบสุ่ม 8 ชุด [ 4 ]แม้ว่าผลลัพธ์จะไม่สามารถนำไปใช้กับชุดทดสอบทั้งหมดได้ แต่การเพิ่มแคชเหยื่อจะช่วยลดอัตราการพลาดได้ตั้งแต่ 10% ถึง 100% สำหรับการกำหนดค่าแคชทั้งหมด[ 4 ]ผลตอบแทนดูเหมือนจะคงที่เมื่อขนาดแคชเหยื่อเกิน 50 บล็อก ซึ่งพิสูจน์การสังเกตของ Jouppi [ 1 ]ที่ว่าประโยชน์ของแคชเหยื่อจะถึงจุดอิ่มตัวหลังจากบล็อกเหยื่อไม่กี่บล็อกแรก[ 4 ]

พบว่าการลดอัตราการพลาดสำหรับแคชขนาด 64 KB นั้นต่ำกว่าอย่างมีนัยสำคัญ ซึ่งพิสูจน์ได้ว่าการแคชเหยื่อไม่สามารถปรับขนาดได้อย่างไม่มีที่สิ้นสุด[ 4 ]

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

ดึงข้อมูลมาจาก " https://en.wikipedia.org/w/index.php?title=Victim_cache&oldid=1348957627 "

สรุปเนื้อหา

ข้อมูลสำคัญจากบทความ

ข้อมูลสำคัญเกี่ยวกับ แคชเหยื่อ

แคช เหยื่อ (Victim cache) คือแคชขนาดเล็ก โดยทั่วไปจะ เป็นแคช แบบเชื่อมโยงอย่างสมบูรณ์ (fully associative cache) ที่วางอยู่ในเส้นทางการเติมข้อมูลของ แคช CPU...

ภาพรวม

การแคชเหยื่อเป็นเทคนิคฮาร์ดแวร์เพื่อปรับปรุงประสิทธิภาพของแคชที่เสนอโดย Norman Jouppi ดังที่กล่าวไว้ในเอกสารของเขา: [ 1 ]

พื้นหลัง

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

การดำเนินการ

ลักษณะการทำงานของแคชเหยื่อในการโต้ตอบกับแคชระดับที่เกี่ยวข้องมีดังต่อไปนี้: