คำถามติดแท็ก cpu-cache

หน่วยความจำที่รวดเร็วมีพื้นที่ จำกัด ใกล้กับ CPU แคชถูกออกแบบมาเพื่อลดเวลาเฉลี่ยในการเข้าถึงหน่วยความจำ

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

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

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

5
จะคำนวณจำนวนของแท็กดัชนีและออฟเซ็ตบิตของแคชที่ต่างกันได้อย่างไร
โดยเฉพาะ: 1) แคชที่แมปโดยตรงด้วย 4096 บล็อก / บรรทัดซึ่งแต่ละบล็อกมี 8 คำ 32- บิต จำเป็นต้องมีบิตจำนวนเท่าใดสำหรับฟิลด์แท็กและดัชนีโดยสมมติว่ามีที่อยู่แบบ 32 บิต 2) คำถามเช่นเดียวกับ 1) แต่สำหรับแคชเชื่อมโยงอย่างเต็มที่ ? แก้ไขฉันถ้าฉันผิดมันคือ: บิตแท็ก = ความยาวบิตที่อยู่ - เลขชี้กำลังของดัชนี - เลขชี้กำลังของออฟเซ็ต? [ออฟเซ็ต = 3 เนื่องจาก 2 ^ 3 = 8 หรือเป็น 5 จาก 2 ^ 5 = 32 หรือไม่]

3
การอ่านแบบสุ่มที่ขนานกันดูเหมือนว่าจะทำงานได้ดี - เพราะอะไร
พิจารณาโปรแกรมคอมพิวเตอร์ที่ง่ายมากต่อไปนี้: for i = 1 to n: y[i] = x[p[i]] นี่คือและคืออาร์เรย์ -element ของไบต์และคืออาร์เรย์ของคำศัพท์ -element ที่นี่มีขนาดใหญ่เช่น (เพื่อให้มีเพียงเศษเสี้ยวเล็กน้อยของข้อมูลที่พอดีกับหน่วยความจำแคชทุกประเภท)xxxYYynnnพีพีpnnnnnnn = 2วันที่ 31n=2วันที่ 31n = 2^{31} สมมติว่าประกอบด้วยตัวเลขสุ่มกระจายสม่ำเสมอระหว่างและnพีพีp111nnn จากมุมมองของฮาร์ดแวร์สมัยใหม่สิ่งนี้ควรหมายถึงสิ่งต่อไปนี้: การอ่านราคาถูก (การอ่านตามลำดับ)p [ i ]พี[ผม]p[i] การอ่านมีราคาแพงมาก (การอ่านแบบสุ่ม; การอ่านเกือบทั้งหมดเป็นแคชที่หายไป; เราจะต้องดึงข้อมูลแต่ละไบต์จากหน่วยความจำหลัก)x [ p [ i ] ]x[พี[ผม]]x[p[i]] การเขียนนั้นถูก (การเขียนตามลำดับ)Y[ i ]Y[ผม]y[i] และนี่คือสิ่งที่ฉันสังเกต โปรแกรมช้ามากเมื่อเปรียบเทียบกับโปรแกรมที่อ่านและเขียนตามลำดับเท่านั้น ยิ่งใหญ่ มาถึงคำถาม: โปรแกรมนี้ขนานกับแพลตฟอร์มมัลติคอร์ที่ทันสมัยได้อย่างไร สมมติฐานของฉันคือว่าโปรแกรมนี้ไม่ขนานกัน ท้ายที่สุดคอขวดคือหน่วยความจำหลัก …

1
Memory Consistency vs Cache Coherence
ความจริงที่ว่า Sequential Consistency เป็นคุณสมบัติที่แข็งแกร่งกว่า Cache Coherence หรือไม่? ตามที่ โซรินดาเนียลเจ; Hill, Mark D; Wood, David A: ไพรเมอร์ที่สอดคล้องกับความจำและความสอดคล้องกันของแคช , Morgan & Claypool, 2011 ความต่อเนื่องตามลำดับสามารถอธิบายได้เป็น (ไม่เป็นทางการ): แบบจำลองหน่วยความจำความสอดคล้องตามลำดับระบุว่าระบบต้องปรากฏขึ้นเพื่อดำเนินการโหลดเธรดทั้งหมดและเก็บไปยังตำแหน่งหน่วยความจำทั้งหมดในลำดับทั้งหมดที่เป็นไปตามลำดับโปรแกรมของแต่ละเธรด การโหลดแต่ละครั้งจะได้รับมูลค่าของร้านค้าล่าสุดตามลำดับทั้งหมด ในคำอื่น ๆ ระบบมีความสอดคล้องตามลำดับหากได้รับเหตุการณ์หน่วยความจำ (โหลดและร้านค้า) ของแต่ละหัวข้อเราสามารถสั่งซื้อเหตุการณ์เหล่านี้ทั้งหมดที่: 1) สำหรับแต่ละกระทู้ลำดับของกิจกรรมของมันจะถูกเก็บไว้และ 2) คำสั่งทั่วโลกคือ อนุกรม (โหลดใด ๆ ส่งคืนค่าล่าสุดที่เก็บไว้) ตอนนี้พวกเขาดำเนินการต่อและอธิบายการเชื่อมโยงกัน: คำนิยามของการเชื่อมโยงกันที่คล้ายคลึงกับคำจำกัดความของความสอดคล้องตามลำดับคือระบบที่เชื่อมโยงกันจะต้องปรากฏขึ้นเพื่อดำเนินการโหลดกระทู้และเก็บทั้งหมดไปยังตำแหน่งหน่วยความจำเดียวในลำดับทั้งหมดที่เคารพคำสั่งโปรแกรมของแต่ละกระทู้ กล่าวอีกนัยหนึ่งระบบจะเชื่อมโยงกันหากได้รับเหตุการณ์ความจำของแต่ละเธรดสำหรับแต่ละตำแหน่งเราสามารถจัดลำดับเหตุการณ์สำหรับตำแหน่งนั้นเช่น: 1) สำหรับแต่ละเธรดลำดับของเหตุการณ์ในตำแหน่งนั้นจะถูกเก็บไว้และ 2) สำหรับแต่ละ สถานที่การสั่งซื้อเป็นแบบอนุกรม ในที่สุดพวกเขาชี้ให้เห็นความแตกต่าง: คำจำกัดความนี้เน้นความแตกต่างที่สำคัญระหว่างการเชื่อมโยงและความสอดคล้องกัน: การเชื่อมโยงกันจะถูกระบุบนพื้นฐานที่ตั้งของหน่วยความจำต่อหน่วยความจำในขณะที่มีการระบุความสอดคล้องกับสถานที่หน่วยความจำทั้งหมด ดังนั้นดูเหมือนว่าความแตกต่างคือสำหรับระบบที่เชื่อมโยงกันเราจำเป็นต้องมีคำสั่งทั้งหมดในทุกเหตุการณ์สำหรับแต่ละสถานที่ …

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

6
การหาค่า XOR สูงสุดของตัวเลขสองตัวในช่วงเวลาหนึ่ง: เราจะทำได้ดีกว่าสมการกำลังสองหรือไม่?
สมมติว่าเรากำลังได้รับสองหมายเลขและและที่เราต้องการที่จะหาสำหรับL \ le i, \, J \ le Rlllrrrmax(i⊕j)max(i⊕j)\max{(i\oplus j)}l≤i,j≤rl≤i,j≤rl\le i,\,j\le r อัลกอริทึมnaïveเพียงตรวจสอบคู่ที่เป็นไปได้ทั้งหมด เช่นในทับทิมเรามี: def max_xor(l, r) max = 0 (l..r).each do |i| (i..r).each do |j| if (i ^ j > max) max = i ^ j end end end max end ฉันรู้สึกว่าเราสามารถทำได้ดีกว่าสมการกำลังสอง มีอัลกอริทึมที่ดีกว่าสำหรับปัญหานี้หรือไม่?

1
งานวิจัยเกี่ยวกับการประเมินประสิทธิภาพของการลืมแคชในทางปฏิบัติ
อัลกอริทึมแคชและโครงสร้างข้อมูลที่ลืมเลือนเป็นสิ่งที่ค่อนข้างใหม่แนะนำโดย Frigo et al ในขั้นตอนวิธีการแคชลบเลือน 1999 วิทยานิพนธ์ของ Prokop ในปีเดียวกันนั้นได้เสนอแนวคิดเบื้องต้นเช่นกัน กระดาษโดย Frigo และคณะ นำเสนอผลการทดลองแสดงให้เห็นถึงศักยภาพของทฤษฎีและอัลกอริธึมที่ขาดการแคชและโครงสร้างข้อมูล โครงสร้างข้อมูลที่ลืมแคชจำนวนมากขึ้นอยู่กับโครงสร้างการค้นหาแบบสแตติก วิธีการจัดเก็บและสำรวจต้นไม้เหล่านี้ได้รับการพัฒนามาไม่มากนักโดยเฉพาะอย่างยิ่ง Bender et al และโดย Brodal และคณะ Demaine ให้ดีภาพรวม งานทดลองของการตรวจสอบพฤติกรรมแคชในทางปฏิบัติได้ทำอย่างน้อยโดย Ladner และคณะ ในการเปรียบเทียบแคชรอบรู้และ Cache ลบเลือนคงค้นหาต้นไม้โดยใช้โปรแกรม Instrumentation 2002 Ladner และคณะ เปรียบเทียบพฤติกรรมแคชของอัลกอริทึมในการแก้ปัญหาการค้นหาแบบไบนารีโดยใช้อัลกอริธึมแบบคลาสสิกอัลกอริธึมที่ลืมแคชและอัลกอริธึมที่รับรู้แคช อัลกอริทึมแต่ละตัวถูกเปรียบเทียบกับวิธีการนำทางทั้งทางตรงและทางอ้อม นอกจากนี้วิทยานิพนธ์ของRønn, 2003 ได้วิเคราะห์อัลกอริธึมเดียวกันให้มีรายละเอียดค่อนข้างสูงและยังทำการทดสอบอัลกอริทึมเดียวกันกับ Ladner และคณะ คำถามของฉันคือ มีการวิจัยใหม่ ๆ เกี่ยวกับการเปรียบเทียบพฤติกรรมแคชของอัลกอริธึมการลืมแคชในทางปฏิบัติตั้งแต่นั้นมาหรือไม่? ฉันสนใจโดยเฉพาะอย่างยิ่งในประสิทธิภาพของแผนภูมิการค้นหาแบบคงที่ แต่ฉันก็จะมีความสุขกับอัลกอริทึมและโครงสร้างข้อมูลที่ลืมแคชอื่น ๆ

3
CPU Cache ได้รับการจัดการโดยองค์ประกอบซอฟต์แวร์ใด
แคชของ CPU ถูกใช้โดยหาประโยชน์จากพื้นที่ชั่วคราวและพื้นที่ คำถามของฉันคือใครรับผิดชอบการจัดการแคชเหล่านี้ ระบบปฏิบัติการนี้เป็นตัวระบุรูปแบบการเข้าถึงที่เฉพาะเจาะจงหรือไม่แล้วจัดการ (เช่นเก็บข้อมูลไว้) แคชโดยใช้การเรียกฟังก์ชั่นระบบปฏิบัติการระดับต่ำ
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.