2014-05-08 108 views
2

我正在學習即將到來的考試的舊考試,最終問題包括題目描述的內容。現在,我熟悉彙編語言指令,並且我知道代碼的含義。但考試問題實際上讓我做的是令人困惑。如果有人能爲我解釋這個問題,我會非常感激。 因此,問題然後:計算緩存內存命中和Miss,並計算緩存中的行數

我給了一個緩存內存,有512個字節的空間,每行是8個字節長。內存直接配置,地址長度爲32位。此外,緩存內存從一開始就是空的。 之後,我得到一些指示,我會解釋它是否會緩存命中或-miss。還應該假定順序指令和指令中添加的所有數據都存在於下一個指令中。

我得到的指令是

  1. MOVIA R8,0xBEDA12C4
  2. LDW R10,0(R 8)
  3. LDW R11,8(R 8)
  4. STW R10,16(R 8)
  5. LDW R10,24(R 8)
  6. LDW R18,32(R 8)

現在,如果有人能夠向我解釋詳細信息,我將非常感激: - 緩存內存共有512字節空間。這是什麼?它能存儲的總內存是多少?另外,我從某處聽說,這是您在緩存中計算行的方式。例如512字節的內存和每一行是16字節。緩存中512/16 = 32行。對於這個例子512/8 = 64行。這是什麼意思!?

  • 它還規定每行是16字節長。我看過TAG,ROW,BYTE的例子,他們試圖說明緩存。但是,我怎麼在這裏理解每行16個字節?至少它似乎沒有佔用TAG,ROW,BYTE的一部分長度。這個是來做什麼的?

  • 直接配置緩存。我對此有所瞭解。它只是一排排空的或不是耶?我在這裏找到了一些關於這方面的信 http://www.cs.umd.edu/class/sum2003/cmsc311/Notes/Memory/direct.html

  • 現在的主要部分。如果每條指令都是緩存缺失或命中,我該如何計算?可能第一條指令應該是一個錯過,因爲問題表明高速緩存從一開始就是空的。第二個也必須是cachemiss,但從這一點上我不確定如果我的實際緩存命中或未命中,我將如何計算。說實話,我甚至不知道會有什麼打擊。

我真的很感激有人可以告訴我如何計算每一步,以及我如何知道它的緩存命中或錯過。我們得到的用於計算這個指令的指令非常混亂。非常感謝!

回答

0

通常,您必須將其視爲單獨的內存空間,只有512字節,可尋址,可讀和可寫數組,每個8字節。如果您需要字節2,地址將爲0,您將讀取整個數組並從中選擇字節3。如果您需要字節8,地址將爲1,並從陣列中選擇字節0。這樣的小內存有一個巨大的優勢 - 速度很快。它本身可以存儲一些較大內存空間的內容,只有前512個字節。如果你存儲了一些東西來解決更大內存空間的問題,那麼它就會進入那個較小的內存空間,而地址將變爲0並且偏移1,在內部用於少量的內存。如果您訪問超出該範圍(例如1000),則需要等待更多。在這種情況下,它只是內存映射的「寄存器」 - 在某些情況下,它實際上會比「緩存」更快,更好 - 不幸的是,由於某些原因,處理器製造商通常不會讓您以這種方式使用緩存(可能是市場營銷並支持原因 - 將其他產品作爲獨立的市場份額出售,價格更高)。
如果你添加更多的空間,每個陣列存儲一些其它的值,可以存儲地址的一部分存在。如果沒有硬件支持,你幾乎可以存儲任何東西,第二部分稱爲標籤。現在,如果你有一些地址fffff000,可以讀取所述第二空間(假設你有命令這樣做),從地址0 - 爲了簡化和速度可以通過掩蔽所有位,除了獲得從主存儲器空間中的地址位3..8和0-2(用於獲取8字節數組中的偏移量),並檢查該地址的標籤部分。該標籤中的一位可用於指示是否存儲某些內容,其他位可用於存儲來自主內存的部分地址。如果您想要保存某處緩存的內容,請設置該位指示該數組不是「空」,並在其中分配主地址的高位,然後從主內存中複製8個字節。下一次,在讀取該範圍內的內容之前,先讀取較小內存數組的標籤部分,然後再決定是從慢主內存讀取還是從較小但較快的部分讀取(這將是緩存命中)。
如果你寫與地址的東西(+ - )在主內存中x512字節,你必須閱讀的8個字節已經提到的陣列,將其複製到主存儲器,整個8個字節,寫你要到什麼非常相同的單元格,然後用新值修改地址。但是你會在較小的內存區域丟失之前的數據副本(但速度更快)。如果您再次需要以前的值(這8個字節中的任何一個),則必須從主內存中再次複製它(緩存未命中)。 對於「高速緩存」內存的所有其他陣列也是如此。所以我們有一系列的緩存檢查,寫入,讀取和拷貝數據到主內存或從主內存拷貝數據。
這就是所謂的1名方式關聯,對於2種方式將有一個以上的陣列的512個字節,其可以存儲不同的地址,但(帶有512從主存儲器中的步驟)(相同),這2個陣列的標籤可以是同時進行檢查,並且如果某個陣列具有該存儲器範圍的副本,則它可以返回而不是從主存儲器中讀取它。如果沒有標籤檢查(額外的週期),「緩存」本質上是少量的內存。