主存與cache的位址對映 習題

2021-10-11 03:09:31 字數 2030 閱讀 3109

有乙個處理器,主存容量1mb,字長1b,cache容量16kb,塊大小32b。

1.採用全相連對映方式,寫出記憶體的位址格式。

2.採用直接對映方式,請寫出記憶體的位址格式

3.採用組相連對映方式(每組有4行),請寫出記憶體的位址格式

4.設cache初態為空,cpu依次從記憶體第1000,1001,1002,…,1499號單元讀出500個字(主存一次讀出乙個字),並重複按此次序讀8次,問命中率

已經知道一共有20位

一共20位

(2)直接對映方式(先說第二問,別問為啥懂的都懂)

標記字塊位址

字塊內位址

s-rr

w塊大小=行大小=2^w字

2^w = 32b =2^5 得出 w=5

標記 = 主存 - 快取

s-r=20-14=6,這樣就只剩字塊位址r,一共20位,已經知道5+6位,所以r=9(當然你也可以通過計算來求出r)

標記字塊位址

字塊內位址

6位9位

5位到這裡如果還不太明白那就再去看遍書吧(我無能為力了)

(噓,偷圖小能手)

(1)全相連對映方式

標記字塊內位址sw

首先介紹一下全相連對映方式

在全相連對映中,將主存的乙個塊的位址與塊的內容一起存於cache的行中,其中塊位址存於cache行的標記部分。也就是說在全相連對映中的標記等於直接對映的標記加字塊位址(懂了吧)

所以這就好辦了

標記字塊內位址

15位5位

(3)組相連對映方式

先看圖

我認為組相連對映其實是直接對映的一種延伸,組相連對映(2路組相連)其實就是把直接對映的字塊0和字塊1拼接成乙個新的字塊0,我們把這個新的字塊叫做組。

標記組位址

字塊內位址

s-dd

w字塊內位址不變,我們不用管。組位址呢就是我上面所說的(其實就是由直接對映的一列字塊變成了組相連對映的兩列對映 、、、可能不太嚴謹管他呢會做題就行了)所以我們把直接對映的字塊位址直接除以2就行了(四路組相連就除以4)標記也就出來了

標記組位址

字塊內位址

8位7位

5位(4)可算是到第四問了

命中率 = 命中cache的次數/(命中cache次數+命中主存的次數)

咳咳補充一下:cpu與cache之間的資料交換是以字為單位的,cache與主存之間的資料交換是以塊為單位的,當cpu讀取記憶體中的乙個字時,便發出此字的記憶體位址到cache和主存,若此字在cache中,則cache命中,若不在則用主存讀週期把此字從主存中讀出來送到cpu,(重點來了)與此同時,把含有此字的整個資料塊送到cache中

進入正題,題目說一開始cache為空,而且要讀8次,所以說我們只要算出第一次cache命中的次數就行了,後面7次的資料已經在cache中,必中。

第一次:cpu讀1000,去cache找,沒有,再去主存中去找,好的找到1000了,這時候就要用到補充的重點了,我們要把1000所在的整個資料塊送到cache中,塊大小32b(題目給出了),所以從1000、1001、1002…1031都被送到cache中,當cpu讀1001時,1001已經在cache中了,一直到1032,cache中沒有了,再重複之前的步驟。從1000、1001、1002…1499共500字一共需要去主存16次(500/32大於15小於16 我們要取16)再套用給出的公式就ok了,等等這個16是讀主存的次數,別帶錯了。

完結,好累

如果文章中有什麼錯誤,大哥們就告訴我吧,小弟立馬去更正

主存與cache的位址對映

1.cache是一種高速緩衝儲存器,是為了解決cpu和主存之間速度不匹配而採用的一項重要技術。其原理基於程式執行中具有空間區域性性和時間區域性性特徵。cache是介於cpu和主存之間的小容量儲存器,由高速的sram組成。2.個人感覺需要在這裡提一下的知識。1 儲存單元的編址方式 字編址方式 位元組編...

主存cache的位址對映

cpu對儲存器的訪問,通常是一次讀寫乙個字單元。當 cpu訪 cache 不命中時,需將儲存在主存中的字單元連同其後若干個字一同調入 cache 中,之所以這樣做,是為了使其後的訪存能在 cache 中命中。因此,主存和 cache 之間一次交換的資料單位應該是乙個資料塊。資料塊的大小是固定的,由若...

主存和cache的位址對映

cache是一種高速緩衝暫存器,是為解決cpu和主存之間速度不匹配而採用的一項重要技術。主存與cache的位址對映方式有全相聯方式 直接方式和組相聯方式三種。多對一的對映關係,但乙個主存塊只能拷貝到cache的乙個特定行位置上去。cache的行號i和主存的塊號j有如下函式關係 i j mod m m...