นี่คือปัญหาที่ฉันกำลังทำงาน:
ปัญหา: "เวิร์กสเตชันความเร็วสูงมีคำ 64 บิตและที่อยู่ 64 บิตที่มีการแก้ไขที่อยู่ในระดับไบต์สมมติว่าแคชที่แมปโดยตรงกับ 8192 64 ไบต์บรรทัดจำนวนบิตในแต่ละ ของฟิลด์ที่อยู่ต่อไปนี้สำหรับแคชหรือไม่ 1) ไบต์ 2) ดัชนี 3) แท็ก "
ก่อนอื่นฉันกำหนดเงื่อนไขในปัญหานี้และใช้คำถามแคชโอเวอร์โฟลว์การแมป Directflow โดยตรงและคำถามอื่น ๆ ของฉันเกี่ยวกับการแคชเป็นข้อมูลอ้างอิง (โปรดแก้ไขให้ฉันถ้าคำจำกัดความใด ๆ ของฉันผิด)
- คำ 64 บิต - โปรเซสเซอร์สามารถประมวลผลได้ครั้งละ 64 บิต
- ที่อยู่ 64 บิตที่อยู่ในระดับไบต์ - มีตำแหน่งหน่วยความจำ 2 ^ 64 จุดใน RAM และตำแหน่งหน่วยความจำแต่ละแห่งจัดเก็บแบบไบต์
- แคชมีความเร็วสูงและแบ่งพาร์ติชันเป็นแคชไลน์
- แคชที่แมปโดยตรงคือที่ที่บล็อกหน่วยความจำ RAM ถูกแมปไว้ในแคชหนึ่งบรรทัด (ไม่แน่ใจในความสำคัญของสิ่งนี้
ตอนนี้ทำงานกับDirect Mapped Cacheเพื่อเป็นข้อมูลอ้างอิง
- ไบต์ - เนื่องจากบรรทัดไบต์ประกอบด้วย 64 ไบต์คุณต้องมี 6 บิตเพื่อระบุไบต์เดียวภายในบรรทัดไบต์นั้น
- ดัชนี - เนื่องจากมี 8192 "แถว" ของบรรทัดไบต์คุณต้องการอย่างน้อย 10 บิตเพื่อระบุทุกแถว
ทีนี้นี่คือส่วนที่ฉันติดอยู่ โพสต์อื่น ๆกล่าวว่า "บิตอื่น ๆ ทั้งหมดเป็นบิตแท็ก" ในขณะที่โพสต์การบรรยายนี้กล่าวว่า "แต่ละบรรทัดมีแท็กที่ระบุที่อยู่ใน M ซึ่งมีการคัดลอกบรรทัด" ฉันเดาว่า M หมายถึง RAM
ดังนั้นที่นี่บิตอื่น ๆ ทั้งหมดจะเป็น 64 - 6 - 10 = 48 บิต แต่คุณไม่ต้องการ 64 บิตทั้งหมดในแท็กเพื่อระบุตำแหน่งหน่วยความจำใน RAM ที่ข้อมูลในแคชมาจากไหน บางคนสามารถอธิบายความสับสนที่ฉันมีได้ที่นี่?