มีบิตจำนวนเท่าใดในฟิลด์ที่อยู่สำหรับแคชที่แมปโดยตรง


0

นี่คือปัญหาที่ฉันกำลังทำงาน:
ปัญหา: "เวิร์กสเตชันความเร็วสูงมีคำ 64 บิตและที่อยู่ 64 บิตที่มีการแก้ไขที่อยู่ในระดับไบต์สมมติว่าแคชที่แมปโดยตรงกับ 8192 64 ไบต์บรรทัดจำนวนบิตในแต่ละ ของฟิลด์ที่อยู่ต่อไปนี้สำหรับแคชหรือไม่ 1) ไบต์ 2) ดัชนี 3) แท็ก "

ก่อนอื่นฉันกำหนดเงื่อนไขในปัญหานี้และใช้คำถามแคชโอเวอร์โฟลว์การแมป Directflow โดยตรงและคำถามอื่น ๆ ของฉันเกี่ยวกับการแคชเป็นข้อมูลอ้างอิง (โปรดแก้ไขให้ฉันถ้าคำจำกัดความใด ๆ ของฉันผิด)

  • คำ 64 บิต - โปรเซสเซอร์สามารถประมวลผลได้ครั้งละ 64 บิต
  • ที่อยู่ 64 บิตที่อยู่ในระดับไบต์ - มีตำแหน่งหน่วยความจำ 2 ^ 64 จุดใน RAM และตำแหน่งหน่วยความจำแต่ละแห่งจัดเก็บแบบไบต์
  • แคชมีความเร็วสูงและแบ่งพาร์ติชันเป็นแคชไลน์
  • แคชที่แมปโดยตรงคือที่ที่บล็อกหน่วยความจำ RAM ถูกแมปไว้ในแคชหนึ่งบรรทัด (ไม่แน่ใจในความสำคัญของสิ่งนี้

ตอนนี้ทำงานกับDirect Mapped Cacheเพื่อเป็นข้อมูลอ้างอิง

  1. ไบต์ - เนื่องจากบรรทัดไบต์ประกอบด้วย 64 ไบต์คุณต้องมี 6 บิตเพื่อระบุไบต์เดียวภายในบรรทัดไบต์นั้น
  2. ดัชนี - เนื่องจากมี 8192 "แถว" ของบรรทัดไบต์คุณต้องการอย่างน้อย 10 บิตเพื่อระบุทุกแถว

ทีนี้นี่คือส่วนที่ฉันติดอยู่ โพสต์อื่น ๆกล่าวว่า "บิตอื่น ๆ ทั้งหมดเป็นบิตแท็ก" ในขณะที่โพสต์การบรรยายนี้กล่าวว่า "แต่ละบรรทัดมีแท็กที่ระบุที่อยู่ใน M ซึ่งมีการคัดลอกบรรทัด" ฉันเดาว่า M หมายถึง RAM

ดังนั้นที่นี่บิตอื่น ๆ ทั้งหมดจะเป็น 64 - 6 - 10 = 48 บิต แต่คุณไม่ต้องการ 64 บิตทั้งหมดในแท็กเพื่อระบุตำแหน่งหน่วยความจำใน RAM ที่ข้อมูลในแคชมาจากไหน บางคนสามารถอธิบายความสับสนที่ฉันมีได้ที่นี่?


คำถามในคำถามนี้มีขนาดใหญ่เท่าใด (โปรดทราบว่าเช่นแคช 256KB จะมีความหมายถึง 18 บิตในการคำนวณของคุณ :))
Hennes

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