日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

一个具有20位地址和32位字长的存储器_存储器层次结构(三):高速缓存

發(fā)布時(shí)間:2025/3/21 编程问答 47 豆豆
生活随笔 收集整理的這篇文章主要介紹了 一个具有20位地址和32位字长的存储器_存储器层次结构(三):高速缓存 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

一、高速緩存存儲(chǔ)器組織結(jié)構(gòu)

假設(shè)一個(gè)計(jì)算機(jī)系統(tǒng)每個(gè)存儲(chǔ)器地址有m位,形成M=2^m個(gè)不同的地址。這樣一個(gè)機(jī)器的高速緩存被組織成一個(gè)有S=2^s個(gè)高速緩存組(cache set)。每個(gè)高速緩存組包含E個(gè)高速緩存行(cache line)。每個(gè)高速緩存行由一個(gè)B=2^b字節(jié)的高速緩存塊(block)、一個(gè)有效位(valid bit:指明這個(gè)行是否包含有意義的信息),還有t=m-(b+s)個(gè)標(biāo)記位(唯一的標(biāo)識(shí)存儲(chǔ)在這個(gè)高速緩存行中的高速緩存塊)。

當(dāng)一條加載指令指示CPU從主存地址A中讀取一個(gè)字時(shí),它將地址A發(fā)送到高速緩存。如果高速緩存正保存著地址A處字的副本,它立即將這個(gè)字發(fā)回給CPU。高速緩存的結(jié)構(gòu)能夠通過簡單地檢查地址位,找到所請(qǐng)求的字:

存儲(chǔ)器地址如下所示:

地址A中s個(gè)組索引位是一個(gè)到S個(gè)高速緩存組的索引。組索引位被解釋為一個(gè)無符號(hào)整數(shù),它告訴我們這個(gè)字必須存儲(chǔ)在哪個(gè)告訴緩存組中。地址A中的t個(gè)標(biāo)記位告訴我們高速緩存組中的哪一個(gè)高速緩存行包含這個(gè)字。當(dāng)且僅當(dāng)設(shè)置了有效位并且該行的標(biāo)記位與地址A中的標(biāo)記位相匹配時(shí),組中的這個(gè)高速緩存行才包含這個(gè)字。地址A中的b個(gè)偏移位給出了字在B個(gè)字節(jié)的緩存塊中的字偏移。

二、直接映射高速緩存

根據(jù)每個(gè)高速緩存組中高速緩存行E的行數(shù),高速緩存被分為不同的類。每個(gè)高速緩存組只有一行(E=1)高速緩存行的高速緩存被稱為直接映射高速緩存(direct-mapped cache)。

高速緩存確定一個(gè)請(qǐng)求是否命中,然后抽取出被請(qǐng)求的字的過程,分為三步:1、組選擇;2、行匹配;3、字抽取。

2.1 直接映射高速緩存中組選擇

高速緩存從m個(gè)地址位中間抽取出s個(gè)組索引位。

2.2 直接映射高速緩存中行匹配

當(dāng)且僅當(dāng)高速緩存行設(shè)置了有效位,并且高速緩存行中的標(biāo)記與地址中的標(biāo)記相匹配時(shí),這一高速緩存行包含這個(gè)字的一個(gè)副本。

2.3 直接映射高速緩存中的字選擇

塊偏移提供了所需要的字的第一個(gè)字節(jié)的偏移。本例中塊偏移為100(二進(jìn)制),它表明字的副本是從塊中的字節(jié)4開始的(我們假設(shè)字長為4字節(jié))。

2.4 運(yùn)行中的直接映射高速緩存

假設(shè)我們有一個(gè)直接映射高速緩存,描述如下:(S,E,B,m)=(4,1,2,4)。即:高速緩存有4個(gè)高速緩存組,每個(gè)高速緩存組含有一行高速緩存行,每個(gè)高速緩存塊有2個(gè)字節(jié),存儲(chǔ)器地址為4位。我們假設(shè)每個(gè)字都是單字節(jié)的。

我們模擬CPU執(zhí)行一系列讀的時(shí)候,高速緩存的執(zhí)行情況,我們假設(shè)CPU讀1字節(jié)的字。初始時(shí),高速緩存是空的(即每個(gè)有效位都是0);

表中的每一行都代表一個(gè)高速緩存行。第一列表明該列所屬的組,但是請(qǐng)記住提供這個(gè)位只是為了方便,實(shí)際上它并不是高速緩存的一部分。后面四列代表高速緩存行的實(shí)際位。

1、讀地址0(0000)的字。因?yàn)榻M0的有效位是0,是緩存不命中。高速緩存從內(nèi)存(或低一級(jí)的高速緩存)取出塊0,并把這個(gè)塊存儲(chǔ)在組0中。然后,高速緩存返回新取出的高速緩存行的塊[0]的m[0](內(nèi)存位置0的內(nèi)容)。

2、讀地址1(0001)的字。這次會(huì)是高速緩存命中。高速緩存立即從高速緩存行的塊[1]中返回m[1]。高速緩存的狀態(tài)沒有變化。

3、讀地址13(1100)的字。由于組2中的高速緩存行不是有效的,所以緩存不命中。高速緩存把塊6加載到組2中,然后從新的高速緩存行的塊[1]中返回m[13]。

4、讀地址8(1000)的字。這會(huì)發(fā)生緩存不命中。組0中的高速緩存行確實(shí)是有效的,但是標(biāo)記不匹配。高速緩存將塊4加載到組0中(替換讀地址0時(shí)讀入的高速緩存行),然后從新的高速緩存行的塊[0]中返回m[8]。

5、讀地址0(0000)的字。又會(huì)發(fā)生緩存不命中,因?yàn)榍懊嬉玫刂?時(shí),我們剛好替換了塊0。這就是沖突不命中的例子。也就是我們有足夠的高速緩存空間,但是卻交替的引用映射到同一組的塊。

三、組相聯(lián)高速緩存

直接映射高速緩存中沖突不命中造成的問題源于每個(gè)組只有一行(E=1)這個(gè)限制。組相連高速緩存放松了這條限制,一個(gè)1<E<C/B的高速緩存成為E路組相連高速緩存。下圖為2路組相聯(lián)高速緩存的結(jié)構(gòu)。

1、組相聯(lián)高速緩存中組的選擇

組索引位標(biāo)識(shí)組

2、組相聯(lián)高速緩存中行匹配和字選擇

組中的任何一行都可以包含任何映射到這個(gè)組的內(nèi)存塊。所以高速緩存必須搜索組中的每一行,尋找一個(gè)有效行,其標(biāo)記與地址中的標(biāo)記相匹配。如果高速緩存找到了這樣一行,那么我們就命中,塊偏移從這個(gè)塊中選擇一個(gè)字。

3、組相聯(lián)高速緩存中不命中時(shí)行替換

最簡單的替換策略是隨機(jī)選擇替換。其他更復(fù)雜的策略利用了局部性原理,以使在比較近的將來引用被替換的行的概率最小。例如,最不長使用(LFU)策略會(huì)替換在過去某個(gè)時(shí)間窗口內(nèi)引用次數(shù)最少的那一行。最近最少使用(LRU)策略會(huì)替換最后一次訪問時(shí)間最久遠(yuǎn)的哪一行。

四、全相聯(lián)高速緩存

全相聯(lián)高速緩存是由一個(gè)包含所有高速緩存行的組(E=C/B)組成的。

1、全相聯(lián)高速緩存中的組選擇

全相聯(lián)高速緩存中的組選擇非常簡單,因?yàn)橹挥幸粋€(gè)組。地址中沒有組索引,地址只被劃分為一個(gè)標(biāo)記和一個(gè)塊偏移。

2、全相聯(lián)高速緩存中的行匹配和字選擇

全相聯(lián)高速緩存中的行匹配與字選擇與組相聯(lián)高速緩存中的是一樣的,它們的區(qū)別主要是規(guī)模大小的問題。

因?yàn)楦咚倬彺骐娐繁仨毑⑿械厮阉髟S多相匹配的標(biāo)記,構(gòu)造一個(gè)又大又快的相聯(lián)高速緩存很困難,而且價(jià)格昂貴。

五、高速緩存讀與寫

1、高速緩存讀

首先,在高速緩存中查找所需字w的副本。如果命中,立即返回字w給CPU。如果不命中,從存儲(chǔ)器層次結(jié)構(gòu)中較低層中取出包含字w的塊,將這個(gè)塊存儲(chǔ)到某個(gè)高速緩存行中,然后返回字w。

2、高速緩存寫

寫命中

直寫(write-through),寫一個(gè)已經(jīng)緩存了的字w(寫命中,write hit),立即將w的高速緩存塊寫回到緊接著的低一層中。

寫回(write-back),盡可能的推遲更新,只有當(dāng)替換算法要驅(qū)逐這個(gè)更新過的塊時(shí),才把寫到緊接著的低一層中。高速緩存必須為每一個(gè)高速緩存行維護(hù)一個(gè)額外的修改位(dirty bit),表明這個(gè)高速緩存塊是否被修改過。

寫不命中

寫分配(write-allocate),加載相應(yīng)的低一層中的塊到高速緩存中,然后更新這個(gè)高速緩存塊。

非寫分配(not-write-allocate),避開高速緩存,直接把這個(gè)字寫到低一層中。

六、Intel Core i7處理器的高速緩存層次結(jié)構(gòu)

只保存指令的高速緩存稱為i-cahce,只保存程序數(shù)據(jù)的高速緩存稱為d-cache。即保存指令又保存數(shù)據(jù)的高速緩存稱為統(tǒng)一高速緩存。

Intel Core i7 處理器每個(gè)CPU芯片有四個(gè)核。每個(gè)核有自己私有的L1 i-cache、L1 d-cache和L2統(tǒng)一的高速緩存。所有的核共享片上的L3統(tǒng)一的高速緩存。


參考:

《深入理解計(jì)算機(jī)系統(tǒng)》是2016年機(jī)械工業(yè)出版社的圖書,作者是(美)布賴恩特(Bryant,R.E.)。

《Computer Systems A Programmer's perspective》:CSAPP。

總結(jié)

以上是生活随笔為你收集整理的一个具有20位地址和32位字长的存储器_存储器层次结构(三):高速缓存的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。