ก่อนอื่น นี่ไม่ใช่สแปมแท็กภาษา แต่คำถามนี้ไม่เฉพาะเจาะจงกับภาษาใดภาษาหนึ่งโดยเฉพาะ และฉันคิดว่าไซต์ stackexchange นี้เหมาะสมที่สุดสำหรับคำถามของฉัน
ฉันกำลังทำงานกับแคชและหน่วยความจำ พยายามทำความเข้าใจวิธีการทำงาน ที่ไม่เข้าใจคือประโยคนี้ (เป็นตัวหนา ไม่ใช่ในรูป) :
ในสถาปัตยกรรม MIPS เนื่องจากคำถูกจัดแนวให้เป็นทวีคูณของสี่ไบต์ สองบิตที่มีนัยสำคัญน้อยที่สุดจะถูกละเว้น เมื่อเลือกคำในบล็อก
สมมติว่าฉันมีที่อยู่สองแห่งนี้:
[1........0]10
[1........0]00
^
|
same 30 bits for boths [31-12] for the tag and [11-2] for the index (see figure below)
ตามที่ฉันเข้าใจอันแรกจะส่งผลให้เกิด MISS (ฉันคิดว่าแคชเริ่มต้นว่างเปล่า) ดังนั้นหนึ่งช่องในแคชจะเต็มไปด้วยข้อมูลที่อยู่ในที่อยู่หน่วยความจำนี้
ตอนนี้เราเอาอันที่สองเนื่องจากมี 30 บิตเท่ากัน มันจะส่งผลให้ HIT ในแคชเพราะเราเข้าถึงสล็อตเดียวกัน (เพราะ 10 บิตเท่ากัน) และ 20 บิตของที่อยู่จะเท่ากับ 20 บิตเก็บไว้ในฟิลด์แท็ก
ดังนั้นเราจะมีข้อมูลอยู่ที่หน่วยความจำ [1........0]10
ไม่ใช่ [1........0]00
ซึ่งผิด !
ดังนั้นฉันคิดว่าสิ่งนี้เกี่ยวข้องกับประโยคที่ฉันยกมาข้างต้น ใครช่วยอธิบายฉันหน่อยได้ไหมว่าทำไมเหตุผลของฉันถึงผิด?
แคชในรูป:
lw
ตัวอย่างและจะมีมัลติเพล็กเซอร์ที่มีไบต์ออฟเซ็ตเป็นสัญญาณควบคุมเมื่อฉันจะใช้lb
เพื่อรับไบต์ที่ถูกต้อง ? - person user2336315   schedule 15.12.2013