系統架構設計師(九)——計算機組成與體系結構-緩存-地址映射1

地址映射

還是先說概念吧,雖然沒什麼用,而且也不考概念,但是……也沒什麼但是

cpu發出請求後,存儲器地址先到cache控制器,確定數據是不是在cache,內容在,則直接訪問cache,這就是地址映射。

映射方法:直接映射、全相聯映射、組相聯映射

1、直接映射

通常以隨機存儲器作為cache,電路簡單,但是不靈活,cache不能充分使用。

why?

首先,我們先假定一些條件(映射和內存、系統都有直接關係),內存1G,cache大小8MB,頁面大小512KB。

(以下包括計算和映射,這些可能是一個考點,雖然不難)

在直接映射中,內存地址劃為3部分,區號、頁號及頁內地址。通常先分區,在分頁。

OK,繼續,有了已知條件,並且我們知道一個區的大小就是cache的大小,so,我們能夠計算出1GB/8MB=128個區,所以區號就是7位(知道為什麼是7位,而不是8、9、10位不?客官:趕緊地,嘚瑟啥!……128=2^7,知道不?明白了嗎?親吶)每個區就有8MB/512KB=16個頁=2^4,so,頁號是4位

那麼,親吶,內存地址就是這樣滴,

系統架構設計師(九)——計算機組成與體系結構-緩存-地址映射1

cache地址就是這樣滴:

系統架構設計師(九)——計算機組成與體系結構-緩存-地址映射1

客官:你TMD頁內地址19,咋個來滴?你丫生出來滴?說不清楚你別走啊,削你

ok,請出題,不,不,不……,請看題,內存1GB,什麼概念?=2^30,30-7-4=19,所以頁內地址是19位。不信你用計算器試試,調到科學型,你按按,先按2,再按x^y,然後按30,最後按=,你看是不是1073741824=1G*1024(變成M)*1024(變成K)*1024。累死我滴娘誒

這樣我們把可能需要的數據從內存映射到cache中,有個前提就是要直接映射(客官:和沒說一樣),一一對應(行了吧),內存中的每個區,你是第幾頁的就只能映射到cache的第幾頁,想想小時候的扣釦子,有兒歌,不記得啦,來和叔叔一起念:

  • 扣紐扣
  • 一個眼, 一個扣
  • 我幫它們手拉手
  • 結成一對好朋友

客官:說重點!

好嘞,內存是紐扣,cache是釦眼(客官:你想死是不),內存是N排紐扣,cache是一排扣眼,如圖:

系統架構設計師(九)——計算機組成與體系結構-緩存-地址映射1

各自只能進入對應頁,明白不,比如0區0頁,進入cache0頁,供我們程序使用,這是,當我們需要1區16頁數據時,會發現cache0頁已經有數據了,其他頁數據可能不用,但是直接映射的機制會讓cache0頁,滾蛋,裝入內存的1區16頁,這就造成了衝突現象,並且這種衝突可能還會非常高。

當然,內存不是像我們上圖這樣的橫排方式,而是豎直的縱向線性排列,那麼,映射圖片自己腦補(打死我也不畫了)

so,我們引出了第二種方式,全相聯映射,

嗯………………………………

我們下一章講吧,累了,不管你說什麼,騙貼也好,騙粉也罷,騙流量也行,反正今天到這裡啦,啦啦啦啦啦啦啦,88您啦


分享到:


相關文章: