จะคำนวณจำนวนของแท็กดัชนีและออฟเซ็ตบิตของแคชที่ต่างกันได้อย่างไร


19

โดยเฉพาะ:

1) แคชที่แมปโดยตรงด้วย 4096 บล็อก / บรรทัดซึ่งแต่ละบล็อกมี 8 คำ 32- บิต จำเป็นต้องมีบิตจำนวนเท่าใดสำหรับฟิลด์แท็กและดัชนีโดยสมมติว่ามีที่อยู่แบบ 32 บิต

2) คำถามเช่นเดียวกับ 1) แต่สำหรับแคชเชื่อมโยงอย่างเต็มที่ ?

แก้ไขฉันถ้าฉันผิดมันคือ:

บิตแท็ก = ความยาวบิตที่อยู่ - เลขชี้กำลังของดัชนี - เลขชี้กำลังของออฟเซ็ต?

[ออฟเซ็ต = 3 เนื่องจาก 2 ^ 3 = 8 หรือเป็น 5 จาก 2 ^ 5 = 32 หรือไม่]


คำอธิบายบางอย่างเกี่ยวกับแท็กดัชนีและออฟเซ็ตในcs.stackexchange.com/questions/33818/…
Ran G.

คำตอบ:


20

คำถามตามที่ระบุไม่ตอบค่อนข้าง คำได้รับการกำหนดให้เป็น 32 บิต เราจำเป็นต้องรู้ว่าระบบนั้นเป็น "ไบต์แอดเดรส" (คุณสามารถเข้าถึงข้อมูลได้ 8 บิต) หรือ "คำแอดเดรส" (เล็กเข้าถึงได้ชิ้นเป็น 32 บิต) หรือแม้กระทั่ง "ครึ่งคำแอดเดรส" ชิ้นข้อมูลที่เล็กที่สุดที่คุณสามารถเข้าถึงได้คือ 16 บิต) คุณจำเป็นต้องรู้สิ่งนี้เพื่อที่จะทราบว่าที่อยู่ลำดับที่ต่ำที่สุดของอะไรบอกคุณบ้าง

จากนั้นคุณทำงานจากล่างขึ้นบน สมมติว่าระบบสามารถกำหนดแอดเดรสแบบไบต์ได้

จากนั้นแต่ละแคชบล็อกจะมี 8 คำ * (4 ไบต์ / คำ) = 32 = 2 5ไบต์เพื่อให้ออฟเซ็ตเป็น 5 บิต

ดัชนีสำหรับแคชแมปโดยตรงเป็นจำนวนของบล็อกในแคช (12 บิตในกรณีนี้เพราะ 2 12 = 4096).

จากนั้นแท็กคือบิตทั้งหมดที่เหลือตามที่คุณระบุ

เมื่อแคชได้รับการเชื่อมโยงมากขึ้น แต่ยังคงมีขนาดเท่ากันจะมีบิตดัชนีน้อยลงและแท็กบิตเพิ่มเติม


yup เป็นไบต์ที่สามารถระบุได้ แต่คำถามที่ฉันดูไม่ได้ระบุอย่างเจาะจง
compski

3

สูตรของคุณสำหรับแท็กบิตถูกต้อง

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


ฉันไม่ทราบว่ามีความแตกต่างเช่นนั้นใช่มันเป็นที่อยู่ไบต์
compski

1
ก่อนกลางปี ​​1970 เราอาจสันนิษฐานว่า "คำ" เป็นขนาดของหน่วยข้อมูลที่เล็กที่สุดที่กำหนดแอดเดรสได้ ตารางนี้ในหน้าคำวิกิพีเดียน่าขบขัน (ถ้าคุณชอบสิ่งนั้น (ซึ่งฉันทำ))
Wandering Logic

1

ฉันกำลังเรียนเพื่อสอบปลายภาควิชาระบบคอมพิวเตอร์ฉันไปสักพักหนึ่งแล้วก็พบคำถามนี้ และคำถามส่วนนี้สับสน: "ซึ่งแต่ละบล็อกมี 8 คำ 32- บิต" คำคือ 4 ไบต์ (หรือ 32 บิต) ดังนั้นคำถามก็ต้องเป็น "... ซึ่งแต่ละบล็อกมี 8 คำ"

คำตอบคือ - แต่ละบล็อกคือ 32 ไบต์ (8 คำ) ดังนั้นเราต้องการ 5 บิตบิตเพื่อกำหนดว่าไบต์ใดในแต่ละบล็อก - Direct-mapped => จำนวนชุด = จำนวนบล็อก = 4096 => เราต้องการ 12 บิตดัชนี ตรวจสอบชุดที่

=> tag bit = 32 - 12 - 5 = 15

สำหรับการเชื่อมโยงอย่างสมบูรณ์จำนวนชุดคือ 1 => no index bit => tag bit = 32 - 0 - 5 = 27


1

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


-1

ในดัชนีการแม็พเชื่อมโยงแบบเต็มคือ 0 b / s เช่นคุณบอกว่า set = 1 ดังนั้น index = log ของ 1 ใน base 2 = 0 set offset = บันทึกของขนาดบล็อกของ byte base 2 ดังนั้นให้ใช้ 8 = 2 ^ 3 หรือ 32 = 2 ^ 5 tag = 32-0-5 = 27 สำหรับ direct index = 2 ^ 12 = 12 offset = 0 bit tag = 32-12-0 = 20


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