สถานะของศิลปะในทฤษฎีอัลกอริทึมแคชคืออะไร


14

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

ตัวอย่างที่คุ้นเคยคือโปรแกรมที่ตัดสินใจเมื่อจะอ่าน / เขียนไปยังแคชตัวประมวลผล RAM และฮาร์ดไดรฟ์ (ผ่านหน่วยความจำเสมือน)

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

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

  • หลายอย่างเช่น LRU หรือ MRU จะใช้งานได้ก็ต่อเมื่อคุณมีรูทีนย่อยที่เข้าถึงหลายครั้ง หากฉันมีโปรแกรมที่มีรูทีนย่อยจำนวนมากบางโปรแกรมไม่เคยเข้าถึงในการทำงานที่กำหนดและบางโปรแกรมสามารถเข้าถึงได้หนึ่งหรือสองครั้งกลยุทธ์นี้จะไม่ทำงานเพราะมันไม่สามารถสร้างข้อมูลที่เพียงพอ ที่ใช้กันทั่วไปและสิ่งที่ไม่
  • คนอื่น ๆ เช่น CLOCK ดูเหมือนจะจัดการกับลักษณะเฉพาะของการนำไปปฏิบัติแทนที่จะโจมตีรากของปัญหา
  • ฉันรู้ว่ามีกลยุทธ์ที่หนึ่งโปรไฟล์แรกโปรแกรมในระหว่างการทดสอบการทำงานแล้วให้โปรไฟล์สำหรับระบบปฏิบัติการเพื่อเพิ่มประสิทธิภาพตาม อย่างไรก็ตามเรายังต้องแก้ปัญหาในการให้ตัวแทน "การใช้งานตัวอย่าง" อย่างแท้จริงในขณะที่สร้างโปรไฟล์

สิ่งที่ฉันต้องการเรียนรู้เกี่ยวกับเรื่องนี้คือ: เมื่อเราสรุปความรู้ทางเทคนิคทั้งหมดของฮาร์ดแวร์และซอฟต์แวร์และพูดในบริบททางทฤษฎีล้วนๆเป็นไปได้ที่จะวิเคราะห์โครงสร้างของอัลกอริทึมเพื่อหากลยุทธ์แคชที่มีประสิทธิภาพสำหรับ มันขึ้นอยู่กับความเข้าใจในระดับสูงว่าอัลกอริทึมกำลังทำอะไรอยู่?


คุณอาจจะสนใจใน"การเข้าถึงกราฟ" รูปแบบ
Neal Young

คำตอบ:


2

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

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