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

下載本文檔

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

文檔簡介

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

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

——擴展每個存儲單元的位數(shù)

(擴展寬度)字擴展

——擴展存儲單元的個數(shù)

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

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

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

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

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

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

=8片

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

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

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

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

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

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

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

采用字擴展方式,所需芯片數(shù)為:

=8片

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

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

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

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

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

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

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

2片1K×4

1K×8

4組1K×8

4K×8

8片分析:整個存儲器所需要芯片數(shù)=(4×8)/(1×4)=8片每組需2114(1K×4)SRAM芯片2片,共4組。位擴展2片芯片CS連在一起,4組字擴展CS要分開。2114(1K×4)SRAM芯片組成容量為4K×8的存儲器存儲器尋址邏輯2.地址分配與片選邏輯芯片內(nèi)的尋址系統(tǒng)(二級譯碼)芯片外的地址分配與片選邏輯為芯片分配哪幾位地址,以便尋找片內(nèi)的存儲單元由哪幾位地址形成芯片選擇邏輯,以便尋找芯片存儲空間分配:4KB存儲器在16位地址空間(64KB)中占據(jù)任意連續(xù)區(qū)間。2114(1K×4)SRAM芯片組成容量為4K×8的存儲器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低位地址分配給芯片,高位地址形成片選邏輯。芯片芯片地址片選信號片選邏輯1K1K1K1KA9~A0A9~A0A9~A0A9~A0CS0CS1CS2CS3A11A10A11A10A11A10A11A10整個存儲器的地址范圍:000H~FFFH共分為4組,每組的地址范圍為: 第一組:000H~3FFH 第二組:400H~7FFH 第三組:800H~BFFH 第四組:C00H~FFFH2114(1K×4)SRAM芯片組成容量為4K×8的存儲器2114(1K×4)SRAM芯片組成容量為4K×8的存儲器3.連接方式(1)擴展位數(shù)(2)擴展單元數(shù)(3)連接控制線(4)形成片選邏輯電路11100100例:某半導(dǎo)體存儲器總?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,如圖組織邏輯地址位擴展就是并聯(lián)多個芯片的地址線,可以視為多組8位芯片字擴展就是確定片選信號,根據(jù)地址線總寬度和地址分配情況,確定片選信號產(chǎn)生邏輯芯片1:/A11芯片2:A11·/A10芯片3:A11·A101K×81K×8設(shè)計目標:4K×8的地址空間片選信號的產(chǎn)生邏輯—尋找地址空間的特征值4K空間需12位地址,A15~A12不用芯片1:0000~07FF,A10~A0全部占用為地址信號,A11始終為0,此空間外地址的A11必為1,故片選邏輯為/A11芯片2:0800~0BFF,A9~A0全部占用為地址信號,A11始終為1,A10始終為0,故片選邏輯為A11

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

·A10字擴展:片選邏輯具有排他性,確保同一時刻只有一個芯片在工作設(shè)計結(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地址芯片級存儲器邏輯圖應(yīng)表示出:所用存儲芯片。各芯片的地址線。片選邏輯。注意,芯片的片選信號一般是/CS,即低電平有效,設(shè)計往往先從邏輯命題真寫出邏輯式數(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信號只送至RAM芯片2114。

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

0000

011111111111

1111RAM單個芯片的容量為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片選信號片選邏輯CS2A15A14A13存儲系統(tǒng)CPU與主存巨大的性能差距——MemoryWall提高訪存效率的途徑增強存儲器的性能增加存儲器字長采用并行操作的雙端口存儲器每個周期存取多個字CPU與主存之間插入高速的Cache存儲系統(tǒng)CACHE主存(內(nèi)存)輔存(外存)根據(jù)各種存儲器的存儲容量、存取速度和價格比的不同,將它們按照一定的體系結(jié)構(gòu)組織起來,使所放的程序和數(shù)據(jù)按照一定的層次分布在各種存儲器中。CPU

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

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

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

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

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

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

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

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

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

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

(2)訪問0010110,Y00010(00010110)

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

塊地址為010的數(shù)據(jù)段中后,Cache中塊地址為010的有效位寫為Y,標記字段寫入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,未命中,訪問主存,將主存塊號00010000的內(nèi)容調(diào)入Cache

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

檢索標記包括二部分:

區(qū)號標記和組內(nèi)塊號標記。

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

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

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

設(shè)兩路組相聯(lián)映像Cache中,主存塊地址(塊號)8位,Cache塊號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ū)號,次2位“11”為組號,末位“0”為組內(nèi)塊號。開始時,Cache內(nèi)8塊都是空的,未命中,訪問主存,將主存的第22塊數(shù)據(jù)塊內(nèi)容調(diào)入Cache中3組0塊,即Cache塊地址(塊號)“6”;并在地址映像表中Cache塊塊號為“6”(110)對應(yīng)區(qū)號標記和組內(nèi)塊號標記分別寫入00010和

0

。2200010

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

(2)訪問00011010(26),

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

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

0(26)

查得1組中區(qū)號為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ū)號為2,副本在Cache中,命中。

(8)訪問00010010(18)

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

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

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

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

h=NC/(NC+Nm)

若tc表示命中時的Cache訪問時間,tm表示未命中時的主存訪問時間,則Cache—主存系統(tǒng)的平均訪問時間ta為:若平均訪問時間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í)行一段程序時,Cache完成存取的次數(shù)為1900次,主存完成存取的次數(shù)為100次,已知

溫馨提示

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

最新文檔

評論

0/150

提交評論