第4章主存儲(chǔ)器邏輯設(shè)計(jì)_第1頁
第4章主存儲(chǔ)器邏輯設(shè)計(jì)_第2頁
第4章主存儲(chǔ)器邏輯設(shè)計(jì)_第3頁
第4章主存儲(chǔ)器邏輯設(shè)計(jì)_第4頁
第4章主存儲(chǔ)器邏輯設(shè)計(jì)_第5頁
已閱讀5頁,還剩107頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

計(jì)算機(jī)組成原理——第4章主存儲(chǔ)器邏輯設(shè)計(jì)1.存儲(chǔ)器容量擴(kuò)展位擴(kuò)展字?jǐn)U展字位擴(kuò)展2.存儲(chǔ)控制集中刷新分散刷新異步刷新3.存儲(chǔ)校驗(yàn)線路半導(dǎo)體存儲(chǔ)器的組成與控制復(fù)習(xí)(一)RAM存儲(chǔ)器芯片總結(jié)RAM存儲(chǔ)器芯片有多種型號(hào),每一RAM存儲(chǔ)器芯片具有:地址線Ai:引腳數(shù)與存儲(chǔ)芯片的單元數(shù)有關(guān);數(shù)據(jù)線Di:引腳數(shù)與存儲(chǔ)芯片的字長有關(guān);片選信號(hào)CS:只有CS有效時(shí),芯片才被選中,所連地址線才有效,才能進(jìn)行讀/寫操作。讀/寫信號(hào)WE:為0,控制寫入電路進(jìn)行寫入;為1,控制讀出電路進(jìn)行讀出。電源線、地線復(fù)習(xí)(二)例1:某RAM芯片,其存儲(chǔ)容量為16K×8位,問:(1)該芯片引出線的最小數(shù)目應(yīng)為多少?(2)存儲(chǔ)器芯片的地址范圍是什么?解:(1)16K=214,所以地址線14根;字長8位,所以數(shù)據(jù)線8根。

14+8+1+1+1+1=26地址線數(shù)據(jù)線片選讀/寫電源線地線(2)存儲(chǔ)器芯片的地址范圍為0000H~3FFFH存儲(chǔ)器芯片的地址范圍:地址線從全“0”到全“1”的所有編碼復(fù)習(xí)(三)SRAM芯片2114(1K×4位)外特性:地址端:2114(1K×4)191018A6A5A4A3A0A1A2CSGNDVccA7A8A9D0D1D2D3WEA9~A0(入)數(shù)據(jù)端:D3~D0(入/出)控制端:片選CS=0選中芯片=1未選中芯片寫使能WE=0寫=1讀電源、地1、存儲(chǔ)器容量擴(kuò)展位擴(kuò)展

——擴(kuò)展每個(gè)存儲(chǔ)單元的位數(shù)

(擴(kuò)展寬度)字?jǐn)U展

——擴(kuò)展存儲(chǔ)單元的個(gè)數(shù)

(擴(kuò)展長度)字位擴(kuò)展——兩者的綜合

(擴(kuò)展寬度和長度)假設(shè)擴(kuò)展同種芯片,則需要的芯片:

總片數(shù)=總?cè)萘?(容量/片)………………位擴(kuò)展字?jǐn)U展字位擴(kuò)展1、存儲(chǔ)器容量擴(kuò)展——位擴(kuò)展例2使用8K×1位RAM芯片組成8K×8位的存儲(chǔ)器,畫出邏輯框圖。分析:①芯片位數(shù)小于存儲(chǔ)器所要求的位數(shù),需進(jìn)行位擴(kuò)展。②8個(gè)芯片的關(guān)系是平等的,同時(shí)工作,并聯(lián)的,對(duì)應(yīng)的地址一一相連。③詳細(xì)的連接見下圖:I/OI/OI/OI/OI/OI/OCS8K×1位RAM芯片組成8K×8位的存儲(chǔ)器D0D7數(shù)據(jù)線

I/O8K×1I/OWEA0A12地址線每片一位組成一個(gè)字節(jié)

例:用64K×1b的存儲(chǔ)器芯片組成64K×8b(64KB)的存儲(chǔ)器。

采用位擴(kuò)展方式,需要芯片數(shù)為:

=8片

每片芯片應(yīng)有16根地址線:A0–A15,

8片芯片的地址線A15~A0分別連在一起同CPU的地址線A15~A0相連;每片只有一位數(shù)據(jù)線,8片芯片的8位數(shù)據(jù)線分別和CPU的數(shù)據(jù)線D7~D0相連。

當(dāng)CPU訪問該存儲(chǔ)器時(shí),其發(fā)出的16位地址同時(shí)傳給8個(gè)芯片,選中每個(gè)芯片的同一單元;CPU發(fā)出的讀/寫控制信號(hào)同時(shí)傳給8個(gè)芯片。

該存儲(chǔ)器連接如圖所示。位擴(kuò)展總結(jié):當(dāng)構(gòu)成內(nèi)存的存儲(chǔ)芯片的字長<內(nèi)存單元的字長時(shí),就要進(jìn)行位擴(kuò)展,使每個(gè)單元的字長滿足要求。位擴(kuò)展方法:將每片的地址線、片選CS、讀寫控制線并聯(lián),數(shù)據(jù)線分別引出。位擴(kuò)展特點(diǎn):存儲(chǔ)器的單元數(shù)不變,位數(shù)增加?!鎯?chǔ)器容量擴(kuò)展——字?jǐn)U展例

使用16K×8位的RAM芯片組成一個(gè)64K×8位的存儲(chǔ)器。分析:①芯片的字?jǐn)?shù)不夠,需進(jìn)行字?jǐn)U展。②共需芯片數(shù)目是64K÷16K=4。將4片RAM的地址線、數(shù)據(jù)線、讀寫線一一對(duì)應(yīng)并聯(lián)。③出現(xiàn)地址線不夠問題,如何解決?

可以用高2位地址作為選片端。④詳細(xì)的連接見下圖:CSWECSWECSWECSWE16K×8位的RAM芯片組成一個(gè)64K×8位的存儲(chǔ)器地址端地址端CSWE地址端地址端10

例:用64K×8b的存儲(chǔ)器芯片組成512K×8b(512KB)的存儲(chǔ)器。

采用字?jǐn)U展方式,所需芯片數(shù)為:

=8片

每片芯片應(yīng)有16根地址線:A0-A15

;計(jì)算機(jī)系統(tǒng)有20根地址線:A0-A19

,8片芯片的地址線A15~A0分別連在一起同CPU的20位地址線中

A15~A0相連;采用全譯碼方式時(shí),高4位地址線A16~

A19通過譯碼器譯碼產(chǎn)生

16個(gè)片選信號(hào),其中8個(gè)分別同8片芯片的片選信號(hào)連接;每片只有8位數(shù)據(jù)線,8片芯片的8位數(shù)據(jù)線并聯(lián)分別和CPU的數(shù)據(jù)線D7~D0相連。

采用字?jǐn)U展法的存儲(chǔ)器連接如圖所示。字?jǐn)U展總結(jié):特點(diǎn):地址空間的擴(kuò)展。芯片每個(gè)單元中的字長滿足,但單元數(shù)不滿足。擴(kuò)展原則:每個(gè)芯片的地址線、數(shù)據(jù)線、讀寫控制線并聯(lián),僅片選端分別引出,以實(shí)現(xiàn)每個(gè)芯片占據(jù)不同的地址范圍?!鎯?chǔ)器容量擴(kuò)展——字位擴(kuò)展實(shí)際存儲(chǔ)器往往需要在字向、位向兩個(gè)方向同時(shí)擴(kuò)展。一個(gè)存儲(chǔ)器的容量為M×N位,若使用L×K位的存儲(chǔ)芯片,則該存儲(chǔ)器共需的芯片個(gè)數(shù)為:MNLK×需解決:芯片的選用、地址分配與片選邏輯、信號(hào)線的連接?!螅?、確定整個(gè)存儲(chǔ)器所需的芯片數(shù)及芯片的分組情況;2、確定存儲(chǔ)器及每組芯片的地址范圍;3、說明地址線的分配方法,并畫出存儲(chǔ)器的結(jié)構(gòu)圖。2114(1K×4)SRAM芯片組成容量為4K×8的存儲(chǔ)器例4用2114(1K×4)SRAM芯片組成容量為4K×8的存儲(chǔ)器。2114(1K×4)SRAM芯片組成容量為4K×8的存儲(chǔ)器1.計(jì)算芯片數(shù)先擴(kuò)展位數(shù),再擴(kuò)展單元數(shù)。

2片1K×4

1K×8

4組1K×8

4K×8

8片分析:整個(gè)存儲(chǔ)器所需要芯片數(shù)=(4×8)/(1×4)=8片每組需2114(1K×4)SRAM芯片2片,共4組。位擴(kuò)展2片芯片CS連在一起,4組字?jǐn)U展CS要分開。2114(1K×4)SRAM芯片組成容量為4K×8的存儲(chǔ)器存儲(chǔ)器尋址邏輯2.地址分配與片選邏輯芯片內(nèi)的尋址系統(tǒng)(二級(jí)譯碼)芯片外的地址分配與片選邏輯為芯片分配哪幾位地址,以便尋找片內(nèi)的存儲(chǔ)單元由哪幾位地址形成芯片選擇邏輯,以便尋找芯片存儲(chǔ)空間分配:4KB存儲(chǔ)器在16位地址空間(64KB)中占據(jù)任意連續(xù)區(qū)間。2114(1K×4)SRAM芯片組成容量為4K×8的存儲(chǔ)器A11A10A9

……

A0000……0001……1011……1101……1010……0100……0110……0111……1片選

芯片地址

64KB1K×41K×41K×41K×41K×41K×41K×41K×4需12位地址尋址:4KBA11~A02114芯片為1K×4位,片內(nèi)尋址需要10根地址線,為A0~A9低位地址分配給芯片,高位地址形成片選邏輯。芯片芯片地址片選信號(hào)片選邏輯1K1K1K1KA9~A0A9~A0A9~A0A9~A0CS0CS1CS2CS3A11A10A11A10A11A10A11A10整個(gè)存儲(chǔ)器的地址范圍:000H~FFFH共分為4組,每組的地址范圍為: 第一組:000H~3FFH 第二組:400H~7FFH 第三組:800H~BFFH 第四組:C00H~FFFH2114(1K×4)SRAM芯片組成容量為4K×8的存儲(chǔ)器2114(1K×4)SRAM芯片組成容量為4K×8的存儲(chǔ)器3.連接方式(1)擴(kuò)展位數(shù)(2)擴(kuò)展單元數(shù)(3)連接控制線(4)形成片選邏輯電路11100100例:某半導(dǎo)體存儲(chǔ)器總?cè)萘?K×8位。其中固化區(qū)2K字節(jié),選用EPROM芯片2716(2K×8位);工作區(qū)2K字節(jié),選用SRAM芯片2114(1K×4/片)。地址總線A15~A0(低),雙向數(shù)據(jù)總線D7~D0(低)。2K×81K×41K×41K×41K×4000007FF08000BFF0C000FFF確定芯片:1塊2716,4塊2114,如圖組織邏輯地址位擴(kuò)展就是并聯(lián)多個(gè)芯片的地址線,可以視為多組8位芯片字?jǐn)U展就是確定片選信號(hào),根據(jù)地址線總寬度和地址分配情況,確定片選信號(hào)產(chǎn)生邏輯芯片1:/A11芯片2:A11·/A10芯片3:A11·A101K×81K×8設(shè)計(jì)目標(biāo):4K×8的地址空間片選信號(hào)的產(chǎn)生邏輯—尋找地址空間的特征值4K空間需12位地址,A15~A12不用芯片1:0000~07FF,A10~A0全部占用為地址信號(hào),A11始終為0,此空間外地址的A11必為1,故片選邏輯為/A11芯片2:0800~0BFF,A9~A0全部占用為地址信號(hào),A11始終為1,A10始終為0,故片選邏輯為A11

·/A10芯片3:0C00~0FFF,A9~A0全部占用為地址信號(hào),A11始終為1,A10始終為1,故片選邏輯為A11

·A10字?jǐn)U展:片選邏輯具有排他性,確保同一時(shí)刻只有一個(gè)芯片在工作設(shè)計(jì)結(jié)果芯片1使用11位地址A10~A0,A11用于片選芯片2、3都使用并聯(lián)的10位地址A9~A0,

并將A11、A10用于片選2K×81K×41K×41K×41K×4000007FF08000BFF0C000FFF27162114211421142114D7~4D3~0R/WCS0CS1CS2A11A11A10A11A10A10~0A9~0A9~0地址芯片級(jí)存儲(chǔ)器邏輯圖應(yīng)表示出:所用存儲(chǔ)芯片。各芯片的地址線。片選邏輯。注意,芯片的片選信號(hào)一般是/CS,即低電平有效,設(shè)計(jì)往往先從邏輯命題真寫出邏輯式數(shù)據(jù)線。數(shù)據(jù)總線是雙向總線,數(shù)據(jù)通路寬度8位。ROM芯片數(shù)據(jù)為單向輸出。RAM芯片為雙向連接。2114每片4位,分別連到數(shù)據(jù)線D7~D4和D3~D0,兩組拼接為8位。讀/寫控制R/W。2716沒有R/W輸入端,R/W信號(hào)只送至RAM芯片2114。

思考題:用8K×8位的ROM芯片和8K×4位的RAM芯片組成存儲(chǔ)器,按字節(jié)編址,其中RAM的地址為2000H~7FFFH,ROM的地址為C000H~FFFFH,畫出此存儲(chǔ)器組成結(jié)構(gòu)圖及與CPU的連接圖。解題提示:ROM芯片在聯(lián)機(jī)工作中是只讀不寫,即單向輸出,無WE線。RAM芯片可讀可寫,雙向連接。思考題:1.計(jì)算容量和芯片數(shù)高位地址A15A14A13為001~011,RAM的容量為8K×3=24K,需要8K×4位的RAM芯片6片。RAM區(qū):地址范圍展開為001000000000

0000

011111111111

1111RAM單個(gè)芯片的容量為8K=213011111111111

1111001000000000

0000ROM區(qū):

末地址-首地址=FFFFH-C000H=3FFFH所以ROM的容量為214=16K,需要8K×8位的ROM芯片2片。高位地址A15A14A13為110~111

ROM的地址范圍展開為111111111111

1111110000000000

0000CS1A15A14A13CS3A15A14A13CS6A15A14A13CS7A15A14A13001

1……1思考題:A15A14A13A12……A00010……0

110

1……1

110

0……0低位地址分配給芯片,高位地址形成片選邏輯。選用3:8譯碼器(74LS138)40KB需16位地址尋址:RAMA15~A0ROM64KB8K×88K×48K×48K×48K×48K×48K×48K×8010010011011111111片選信號(hào)片選邏輯CS2A15A14A13存儲(chǔ)系統(tǒng)CPU與主存巨大的性能差距——MemoryWall提高訪存效率的途徑增強(qiáng)存儲(chǔ)器的性能增加存儲(chǔ)器字長采用并行操作的雙端口存儲(chǔ)器每個(gè)周期存取多個(gè)字CPU與主存之間插入高速的Cache存儲(chǔ)系統(tǒng)CACHE主存(內(nèi)存)輔存(外存)根據(jù)各種存儲(chǔ)器的存儲(chǔ)容量、存取速度和價(jià)格比的不同,將它們按照一定的體系結(jié)構(gòu)組織起來,使所放的程序和數(shù)據(jù)按照一定的層次分布在各種存儲(chǔ)器中。CPU

Cache是為彌補(bǔ)主存速度的不足,在CPU和主存之間設(shè)置的高速、小容量的緩沖存儲(chǔ)器。組成:小容量的SRAM和高速緩存控制器組成。功能:將CPU當(dāng)前快要用到的部分?jǐn)?shù)據(jù)塊由主存復(fù)制到容量小、速度快的SRAM中,由SRAM向CPU直接提供它所需要的數(shù)據(jù)。高速緩沖存儲(chǔ)器(Cache)為了使CPU不至因?yàn)榈却鎯?chǔ)器讀寫操作的完成而無事可做,可以采取一些加速CPU和存儲(chǔ)器之間有效傳輸?shù)奶厥獯胧?shí)現(xiàn)的途徑有:主存儲(chǔ)器采用更高速的技術(shù)來縮短存儲(chǔ)器的讀出時(shí)間,或加長存儲(chǔ)器的字長;采用并行操作的雙端口存儲(chǔ)器;在CPU和主存儲(chǔ)器之間插入一個(gè)高速緩沖存儲(chǔ)器(cache),以縮短讀出時(shí)間;在每個(gè)存儲(chǔ)器周期中存取幾個(gè)字。

高速緩沖存儲(chǔ)器(Cache)圖4-39CPU存儲(chǔ)器系統(tǒng)的關(guān)系Cache的基本原理介于CPU與主存之間基于高速的SRAM小容量、高速度硬件實(shí)現(xiàn)的管理功能對(duì)程序員透明可以集成到CPU中一種高速緩沖器,解決CPU與主存之間速度不匹配的一項(xiàng)技術(shù)Cache的基本原理讀操作CPU發(fā)送地址到Cache/主存Cache命中則直接讀出數(shù)據(jù)否則主存將數(shù)據(jù)送至CPU和Cache圖4-40cache原理圖主存→Cache以塊為單位,即:復(fù)制目標(biāo)存取字在內(nèi)的一塊數(shù)據(jù)目的:下次讀取時(shí)可以直接訪問CacheCache的基本原理程序局部性原理CPU訪問存儲(chǔ)器時(shí),無論是取指令還是存取數(shù)據(jù),所訪問的存儲(chǔ)單元都趨于聚集在一個(gè)較小的連續(xù)區(qū)域中。兩種不同類型的局部性時(shí)間局部性(TemporalLocality):如果一個(gè)信息項(xiàng)正在被訪問,那么在近期它很可能還會(huì)被再次訪問。程序循環(huán)、堆棧等是產(chǎn)生時(shí)間局部性的原因??臻g局部性(SpatialLocality):在最近的將來將用到的信息很可能與現(xiàn)在正在使用的信息在空間地址上是臨近的。指令的順序執(zhí)行、數(shù)組的連續(xù)存放等是產(chǎn)生空間局部性的原因。Cache的基本原理帕雷托法則(Paretoprinciple),也稱為80/20法則,此法則指在眾多現(xiàn)象中,80%的結(jié)果取決于20%的原因,而這一法則在很多方面被廣泛的應(yīng)用。在計(jì)算機(jī)科學(xué)里,帕雷托法則可借由觀察80%的資源是由20%所操作使用,來最佳化資源。在軟件工程上,常有接近90%的電腦程序執(zhí)行次數(shù)花費(fèi)在10%的程式源代碼執(zhí)行。在圖書資訊學(xué)里,一間圖書館的20%館藏是由80%的讀者所借閱。Cache的基本原理Cache的組成基于SRAM的存儲(chǔ)實(shí)體硬件控制邏輯存取單位CPU與Cache之間的數(shù)據(jù)交換以字為單位Cache與主存之間的數(shù)據(jù)交換以塊為單位,一個(gè)塊由若干字組成,是定長的。圖4-40cache原理圖Cache的基本原理數(shù)據(jù)塊Cache與主存之間的數(shù)據(jù)交換單位主存單元的邏輯劃分主存中的塊對(duì)應(yīng)Cache中的行,二者長度相等且固定—一一對(duì)應(yīng)數(shù)據(jù)字地址被劃分為塊號(hào)/行標(biāo)記和塊/行內(nèi)部地址兩部分Cache主存標(biāo)記塊行命中:地址的塊號(hào)與某一行的行標(biāo)記匹配主存與Cache的地址映射Cache主存標(biāo)記塊行?主存標(biāo)記Cache塊號(hào)塊內(nèi)地址主存塊號(hào)主存地址7位4位9位Cache塊號(hào)塊內(nèi)地址cache地址4位9位圖4-40cache原理圖主存與Cache的地址映射地址映射建立主存數(shù)據(jù)塊與Cache行,以及主存地址與Cache存儲(chǔ)單元的對(duì)應(yīng)關(guān)系利用硬件實(shí)現(xiàn)對(duì)CPU/程序員透明映射策略全相聯(lián)映射直接映射組相聯(lián)映射主存與Cache的地址映射直接映射主存中的某個(gè)字塊只能緩存與Cache中的特定行利用模運(yùn)算克服Cache與主存的容量差距,模即為Cache中的行數(shù)例如:對(duì)于4行Cache而言,主存中的第0、4、8、16…塊均只能緩存于第0行主存與Cache的地址映射直接映射實(shí)例

主存為1MB,劃分2048塊;Cache容量為8KB,直接映射Cache如何設(shè)計(jì)?主存容量為1MB,塊內(nèi)容量512B。Cache容量為8KB,行容量為512B,共16行。主存可以劃分為2048/16=128個(gè)區(qū),每區(qū)含16塊??偟刂窞?0位;其中塊內(nèi)地址9位,4位地址作為區(qū)內(nèi)編號(hào)(地址),高7位作為區(qū)編號(hào)。區(qū)編號(hào)作為行標(biāo)記存儲(chǔ)。主存與Cache的地址映射直接映射實(shí)例讀過程CPU給出20位地址。Cache利用中間4位的區(qū)內(nèi)編號(hào)確定目標(biāo)行。Cache將高7位的區(qū)編號(hào)與該行的標(biāo)記進(jìn)行比較。命中則利用低9位的塊(行)內(nèi)地址完成訪問。否則從主存讀出數(shù)據(jù)并復(fù)制數(shù)據(jù)塊到Cache。例如:地址00000001000XXXXXXXXX對(duì)應(yīng)某區(qū)的第8塊和Cache的第8行,只要該行標(biāo)記為0000000,則表示第0區(qū)的第8行位于Cache中,即命中主存地址

i=jmodn相當(dāng)于將主存的地址空間按Cache的空間大小分區(qū),每個(gè)區(qū)內(nèi)可按Cache塊號(hào)編號(hào),這樣主存地址結(jié)構(gòu)如下:“區(qū)號(hào)”作為標(biāo)記(表示為Tag)存放在“地址映像表”中,用于判斷是否命中;“塊號(hào)”是區(qū)內(nèi)塊號(hào),同Cache塊號(hào),用于直接查“地址映像表”(用作查表索引),以及在Cache中進(jìn)行“塊尋址”;“塊內(nèi)地址”用于在塊內(nèi)選擇字或字節(jié)(表示為BS);例如一塊有1024個(gè)字(16位)或字節(jié),則塊內(nèi)地址為10位(1024個(gè)字節(jié))或11位(1024個(gè)字)。在上例中,主存地址中區(qū)號(hào)為5位,塊號(hào)為3位,塊內(nèi)地址為10位(塊內(nèi)字地址)共18位。主存塊號(hào)直接映像的訪存過程訪存過程以圖表示。

直接映像方式下的Cache內(nèi)容由調(diào)入數(shù)據(jù)塊的數(shù)據(jù)和調(diào)入塊的主存

區(qū)號(hào)(稱為“標(biāo)記”)組成。訪問存儲(chǔ)器時(shí)給出主存地址,由區(qū)號(hào)(標(biāo)記)、塊號(hào)和塊內(nèi)地址組成,以塊號(hào)到Cache中檢索到該塊號(hào)所對(duì)應(yīng)塊,取出標(biāo)記部分同主存地址中的標(biāo)記(區(qū)號(hào))送比較器進(jìn)行比較:

若相等,說明被命中,由該塊號(hào)加上塊內(nèi)地址構(gòu)成的Cache地址訪問Cache。

若不等,說明未被命中,則以主存地址訪問主存,并把主存中該塊數(shù)據(jù)調(diào)入填補(bǔ)空塊(直接映像只能調(diào)入指定塊內(nèi),不需要采用替換策略)或替換原有的副本,且修改標(biāo)記值。例4-1:設(shè)在直接映像的Cache中,主存地址的區(qū)號(hào)5位,塊號(hào)3位,CPU訪存過程中,依次訪問主存單元高8位地址為:

00010110,00011010,00010110,00011010,00010000,00000011,00010000,00010010。要求寫出每次訪問后Cache中的內(nèi)容。

解:(1)開始工作時(shí)Cache的初始狀態(tài)如表

(2)訪問0010110,Y00010(00010110)

Cache中塊地址為110的塊內(nèi)無數(shù)據(jù)—有效位為N,未命中,訪問主存,將主存塊號(hào)00010110的內(nèi)容調(diào)入Cache塊地址為110的數(shù)據(jù)段中后,Cache中塊地址為110的有效位寫為Y,標(biāo)記字段寫入00010。Cache內(nèi)容如下表所示,((00010110)表示塊內(nèi)容)。(3)訪問00011010,Y00011(00011010)Cache中塊地址為010的塊內(nèi)無數(shù)據(jù)——有效位為N,未命中,訪問主存,將主存塊號(hào)00011010的內(nèi)容調(diào)入Cache

塊地址為010的數(shù)據(jù)段中后,Cache中塊地址為010的有效位寫為Y,標(biāo)記字段寫入00011,Cache內(nèi)容如下表所示,((00011010)表示塊內(nèi)容)。(4)訪問00010110命中,訪問Cache,Cache中內(nèi)容不變;(5)訪問00011010命中,訪問Cache,Cache中內(nèi)容不變;

(6)訪問00010000,Cache中塊地址為000的塊內(nèi)無數(shù)據(jù)——有效位為N,未命中,訪問主存,將主存塊號(hào)00010000的內(nèi)容調(diào)入Cache

塊地址為000的數(shù)據(jù)段中后,Cache中塊地址為000的有效位寫為Y,標(biāo)記字段寫入00010,Cache內(nèi)容如下表所示。,((0001000)表示塊內(nèi)容)。Y00010(00010000)

(7)訪問00000011,Cache中塊地址為011的塊內(nèi)無數(shù)據(jù)—有效位為N,未命中,訪問主存,將主存塊號(hào)00000011的內(nèi)容調(diào)入Cache塊地址為011的數(shù)據(jù)段中后,Cache中塊地址為011的有效位寫為Y,標(biāo)記字段寫入00000,Cache內(nèi)容如下表所示。(00000011)Y00000

(8)訪問00010000命中,訪問Cache,Cache中內(nèi)容不變;(9)訪問00010010,Cache中塊地址為010的塊標(biāo)記為00011≠00010,未命中,訪問主存,以(00010010)替換(00011010),修改標(biāo)記為00010,Cache內(nèi)容如表所示。00010(00010010)直接映像的特點(diǎn)

直接映像的地址變換速度快;不涉及替換策略;實(shí)現(xiàn)的硬件簡單,成本低;缺點(diǎn)是每一主存塊只能調(diào)入Cache中某一指定的區(qū)域,塊沖突的概率高,Cache的效率低;主存與Cache的地址映射全相聯(lián)映射主存中的每一個(gè)字塊映像到cache中的任意一行塊號(hào)即為行標(biāo)記主存與Cache的地址映射全相聯(lián)映射實(shí)例

主存為1MB,劃分2048塊;Cache容量為8KB,全相聯(lián)Cache如何設(shè)計(jì)?主存容量為1MB,塊內(nèi)容量512B。主存地址為20位;其中塊地址11位,塊內(nèi)地址9位。Cache容量為8KB,行容量為512B,共16行。行內(nèi)地址9位。Cache中各行標(biāo)記為11位,對(duì)應(yīng)主存中的數(shù)據(jù)塊編號(hào)(地址)。主存與Cache的地址映射全相聯(lián)映射實(shí)例讀過程CPU給出20位地址。Cache將高11位的塊地址與所有各行的標(biāo)記進(jìn)行比較。命中則將低9位的塊(行)內(nèi)地址送入Cache完成訪問。否則從主存讀出數(shù)據(jù)并復(fù)制數(shù)據(jù)塊到Cache。圖4-40cache原理圖優(yōu)點(diǎn):存放位置靈活,命中率高缺點(diǎn):當(dāng)Cache或主存規(guī)模很大時(shí),塊地址比較過程非常復(fù)雜,硬件實(shí)現(xiàn)復(fù)雜度高。結(jié)論:全相聯(lián)映射僅適用于小容量的Cache設(shè)計(jì)全相聯(lián)映像下的訪存過程訪存過程以圖表示。Cache由存放從主存調(diào)入的數(shù)據(jù)和調(diào)入塊的主存塊號(hào)(作為“標(biāo)記”)組成;CPU訪問存儲(chǔ)器時(shí),給出由“主存塊號(hào)”及“塊內(nèi)地址”組成的主存地址。將主存地址中的標(biāo)記依次分別同Cache中的各標(biāo)記送比較器比較:

若有一個(gè)相等,說明被命中,由主存塊號(hào)轉(zhuǎn)換為Cache塊號(hào),同主存地址中的塊內(nèi)地址組合為Cache地址訪問Cache;

若無一個(gè)相等,說明未被命中,則以主存塊地址訪問主存,并在Cache中各塊未充滿情況下,則將該塊數(shù)據(jù)調(diào)入到Cache任意空塊中,或在Cache中各塊都已充滿情況下,則采用一定的替換算法

替換掉Cache中某一塊,然后把該塊的主存塊號(hào)作為新標(biāo)記寫入到Cache中該塊的標(biāo)記處以修改標(biāo)記。全相聯(lián)映像的特點(diǎn)

全相聯(lián)映像在Cache中各塊全部裝滿時(shí)才會(huì)出現(xiàn)塊沖突,可以靈活地進(jìn)行塊的分配,所以塊沖突概率低;Cache的利用率高;標(biāo)記檢查速度慢,控制復(fù)雜,比較電路較難實(shí)現(xiàn);用硬件來實(shí)現(xiàn)替換算法;適用于容量較小的Cache中,使參與比較的標(biāo)記較少、比較電路相應(yīng)簡單、檢索速度也不會(huì)太長。

例:設(shè)在全相聯(lián)映像的Cache中,主存地址塊號(hào)8位,Cache塊號(hào)3位,CPU在訪存過程中依次訪問主存單元的高8位地址為:

00010110,00011010,00010110,00011010,00010000,00000011,00010000,00010010。要求畫出全相聯(lián)映像下完成上述訪問后Cache的調(diào)入塊的分配情況,并同直接映像的分配情況作對(duì)比。

解:為簡單起見,把被訪問的8個(gè)主存單元的塊地址依次用十進(jìn)制表示為:22、26、22、26、16、3、16、18,省略Cache標(biāo)記等,根據(jù)例4-1的分析,可畫出直接映像方式下Cache中的塊分配情況如圖4-19所示,第8次訪問時(shí),雖然Cache中8塊僅裝入了4塊,但還是發(fā)生了塊沖突,因?yàn)?8mod8=26mod8必須進(jìn)行替換操作。18同樣,可畫出全相聯(lián)映像方式下Cache中的塊分配情況如圖4-20所示,從圖可見,8次訪問后,Cache未被裝滿,不會(huì)發(fā)生塊沖突。222226222622262226162226163

2226163222616318主存與Cache的地址映射組相聯(lián)映射Cache被劃分為u組,每組包含v行(稱為v路)以u(píng)為模確定數(shù)據(jù)塊緩存的目標(biāo)組數(shù)據(jù)塊可以存儲(chǔ)于目標(biāo)組的任意一行與直接映射相比,將行擴(kuò)展為組主存與Cache的地址映射組相聯(lián)映射實(shí)例

主存為1MB,劃分2048塊;Cache容量為8KB,組相聯(lián)Cache如何設(shè)計(jì)?(假設(shè)每組包含2行,即2路組相聯(lián)Cache)主存容量為1MB,塊內(nèi)容量512B。Cache容量為8KB,行容量為512B,共16行,8組。主存可以劃分為2048/8=256個(gè)區(qū)??偟刂窞?0位;其中塊內(nèi)地址9位,3位地址為組編號(hào),高8位地址作為區(qū)編號(hào)(組內(nèi)塊編號(hào))。區(qū)編號(hào)作為行標(biāo)記存儲(chǔ)。主存與Cache的地址映射組相聯(lián)映射實(shí)例讀過程CPU給出20位地址。Cache利用中間3位的組編號(hào)確定目標(biāo)組。Cache將高8位的區(qū)編號(hào)與組內(nèi)各行的標(biāo)記比較。命中則利用低9位的塊(行)內(nèi)地址完成訪問。否則從主存讀出數(shù)據(jù)并復(fù)制數(shù)據(jù)塊到Cache。全相聯(lián)與直接映射的混合體,將逐行匹配工作局限于組內(nèi),兼具靈活性和易于實(shí)現(xiàn)等優(yōu)點(diǎn)例如:地址00000000100XXXXXXXXX對(duì)應(yīng)某區(qū)的第4塊和Cache的第4組(第6、7行),只要兩行標(biāo)記之一為00000000,則表示第0區(qū)的第8行位于Cache中,即命中主存和Cache的地址結(jié)構(gòu)

組相聯(lián)映像中主存地址結(jié)構(gòu)為:

Cache地址結(jié)構(gòu)為:

Cache地址中塊內(nèi)地址和組號(hào)部分直接取自主存地址。組內(nèi)地址即組內(nèi)塊號(hào)是查找地址映像表的結(jié)果。

組相聯(lián)地址映像表又稱為“塊表”。用來檢索Cache是否被命中,形成命中塊的Cache地址,“塊表”如下圖所示。

檢索標(biāo)記包括二部分:

區(qū)號(hào)標(biāo)記和組內(nèi)塊號(hào)標(biāo)記。

訪存時(shí),根據(jù)主存地址中組號(hào)在“地址映像表”中的該組對(duì)應(yīng)的表項(xiàng)中,查找有無和主存地址的區(qū)號(hào)和組內(nèi)塊號(hào)相同的主存區(qū)號(hào)標(biāo)記和組內(nèi)塊號(hào)標(biāo)記:

若有,表示Cache被命中,將對(duì)應(yīng)的Cache塊號(hào)取出,形成Cache地址訪問Cache。

若無,表示Cache未被命中,在對(duì)主存進(jìn)行訪問同時(shí),將主存中對(duì)應(yīng)塊調(diào)入Cache中相應(yīng)組的一塊中,并在地址映像表中對(duì)應(yīng)Cache塊號(hào)標(biāo)記處寫入主存區(qū)號(hào)、組內(nèi)塊號(hào),改變地址映像關(guān)系。主存塊存入Cache中哪一組是由直接映像規(guī)定的,關(guān)于存入該組中哪一塊是由全相聯(lián)映像規(guī)定,這里也涉及替換操作及替換算法。例

設(shè)兩路組相聯(lián)映像Cache中,主存塊地址(塊號(hào))8位,Cache塊號(hào)3位,分區(qū)分組情況同圖4-21,CPU在訪存過程中,依次訪問主存單元的兩8位地址(塊地址)為:00010110(22),00011010(26),00010110(22),00011010(26),00010000(16),00000011(3),00010000(16),00010010(18)。要求畫出兩路組相聯(lián)映像下完成上述訪問后,Cache內(nèi)調(diào)入塊的分配情況。解(1)訪問00010110(22)8位地址中最高5位“00010”為區(qū)號(hào),次2位“11”為組號(hào),末位“0”為組內(nèi)塊號(hào)。開始時(shí),Cache內(nèi)8塊都是空的,未命中,訪問主存,將主存的第22塊數(shù)據(jù)塊內(nèi)容調(diào)入Cache中3組0塊,即Cache塊地址(塊號(hào))“6”;并在地址映像表中Cache塊塊號(hào)為“6”(110)對(duì)應(yīng)區(qū)號(hào)標(biāo)記和組內(nèi)塊號(hào)標(biāo)記分別寫入00010和

0

。2200010

0地址映像表的內(nèi)容為:

(2)訪問00011010(26),

同理,將26塊內(nèi)容調(diào)入1組0塊,

Cache塊地址“2”。26000110地址映像表的內(nèi)容為:在地址映象表的3組對(duì)應(yīng)的標(biāo)記中查到Cache中第6塊的區(qū)號(hào)為00010和組內(nèi)塊號(hào)為0,表明副本在Cache中,命中,從表中查得Cache塊號(hào)為110,可進(jìn)行訪問。(4)訪問0001101

0(26)

查得1組中區(qū)號(hào)為00011,副本在Cache中,命中。

(3)訪問00010110(22)

(5)訪問00001000(16)未命中,調(diào)入到Cache0組0塊,Cache塊地址“0”;(6)訪問00000011(3) 未命中,調(diào)入到1組,但1組0塊已滿,1塊尚空,調(diào)入到1塊,Cache塊地址“3”;162622163

(7)訪問00010000(16)查得0組中區(qū)號(hào)為2,副本在Cache中,命中。

(8)訪問00010010(18)

Cache中1組已滿,0塊中存放3區(qū)(26)及1塊存放0區(qū)(3)的數(shù)據(jù)塊。發(fā)生塊沖突,訪問主存替換1組中任一個(gè),現(xiàn)替換0塊(FIFO替換),得下圖分配情況。184、組相聯(lián)映像的特點(diǎn)

組內(nèi)是全相聯(lián)映像,組間是直接映像。組內(nèi)的容量為1塊時(shí)即為直接映像;組的容量為Cache塊容量時(shí)(只有1組)即為全相聯(lián)映像。

全相聯(lián)和組相聯(lián)可提高命中率,但要涉及替換算法,要應(yīng)用復(fù)雜的多路比較器,硬件電路復(fù)雜并使映像速度降低;直接映像的硬件電路較簡單,無需考慮替換策略,映像速度快,但命中率較低,易發(fā)生塊沖突。在計(jì)算機(jī)系統(tǒng)中,大容量高速Cache采用直接映像,小容量較低速的Cache采用組相聯(lián)映像和全相聯(lián)映像。圖4-40cache原理圖主存與Cache的地址映射地址映射建立主存數(shù)據(jù)塊與Cache行,以及主存地址與Cache存儲(chǔ)單元的對(duì)應(yīng)關(guān)系利用硬件實(shí)現(xiàn)對(duì)CPU/程序員透明映射策略全相聯(lián)映射直接映射組相聯(lián)映射Cache的基本原理讀操作CPU發(fā)送地址到Cache/主存Cache命中則直接讀出數(shù)據(jù)否則主存將數(shù)據(jù)送至CPU和Cache圖4-40cache原理圖問題:如何替換Cache中的陳舊數(shù)據(jù)?替換算法最不經(jīng)常使用算法(LFU)各行配備訪問計(jì)數(shù)器,訪問一次加1(越小越糟糕)替換某行后,所有行計(jì)數(shù)器清0近期最少使用算法(LRU)各行記錄不命中次數(shù),不命中加1(越大越糟糕)該行命中后清0隨機(jī)替換算法隨機(jī)算法并不一定比“有規(guī)則的算法”差硬件實(shí)現(xiàn)Cache讀寫過程讀操作命中:直接讀Cache中的數(shù)據(jù)不命中:從主存讀出數(shù)據(jù),并視情況更新Cache(即:替換Cache中的數(shù)據(jù))寫操作標(biāo)志交換方式(寫回法)在被替換之前僅在Cache中做標(biāo)記。僅更新cache單元,用標(biāo)志位標(biāo)記,直至修改的字塊被從cache中替換出來時(shí),則一次寫入內(nèi)存。寫直達(dá)法(通過式寫入)同時(shí)寫Cache和主存中的數(shù)據(jù)特點(diǎn):寫直達(dá)法簡單,但當(dāng)一個(gè)字被多次更新時(shí),會(huì)引起對(duì)主存的多次寫入,這是不必要的。寫回法速度快,但因在最后寫主存前,主存中的字塊未經(jīng)隨時(shí)修改而可能失效。多層次Cache存儲(chǔ)器獨(dú)立的指令Cache與數(shù)據(jù)Cache哈佛結(jié)構(gòu)多層次Cache結(jié)構(gòu)Core2酷睿2DuoE8200:L1-128K,L2-6MCache一致性問題寫入過程并不同時(shí)修改Ll,L2和主存內(nèi)容,造成了數(shù)據(jù)的不一致——cache一致性問題。Cache的性能Cache的評(píng)價(jià)指標(biāo)——命中率

設(shè)NC表示Cache完成存取的總次數(shù),Nm表示主存完成存取的總次數(shù),h定義為命中率,則有:

h=NC/(NC+Nm)

若tc表示命中時(shí)的Cache訪問時(shí)間,tm表示未命中時(shí)的主存訪問時(shí)間,則Cache—主存系統(tǒng)的平均訪問時(shí)間ta為:若平均訪問時(shí)間ta為:ta=h·tc+(1-h)·tm設(shè)r=tm/tc表示主存慢于Cache的倍率,e表示訪問效率,則:

e=tc/ta=tc/[h·tc+(1-h)·tm]=1/[h+(1-h)·r]為提高訪問效率,命中率h越接近1越好,r值以5—10為宜,不宜太大。命中率h與程序行為、cache的容量、組織方式、塊的大小有關(guān)。Cache的性能例:CPU執(zhí)行一段程序時(shí),Cache完成存取的次數(shù)為1900次,主存完成存取的次數(shù)為100次,已知

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論