計算機組成原理4.存儲器層次結(jié)構(gòu)_第1頁
計算機組成原理4.存儲器層次結(jié)構(gòu)_第2頁
計算機組成原理4.存儲器層次結(jié)構(gòu)_第3頁
計算機組成原理4.存儲器層次結(jié)構(gòu)_第4頁
計算機組成原理4.存儲器層次結(jié)構(gòu)_第5頁
已閱讀5頁,還剩160頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、1Ch4: Memory Hierarchy 存儲器層次結(jié)構(gòu)第一講 基本概念和主存儲器 第二講 高速緩沖存儲器(Cache)第三講 虛擬存儲器(Virtual Memory) 第一講 基本概念和主存儲器 主 要 內(nèi) 容信息的存儲、傳送、處理單位的含義記憶單元 / 編址單位 / 存儲單位 / 傳輸單位 / 機器字長存儲器分類可按存取方式 / 易失性 / 可更改性 / 元器件 / 功能來分半導體存儲器隨機訪問存儲器SRAM的原理和特點DRAM的原理和特點RAM芯片組織如何由記憶單元構(gòu)成存儲陣列如何讀寫存儲陣列中的信息如何由芯片構(gòu)成存儲器提高存儲器速度的措施:芯片內(nèi)采用行緩存,同行內(nèi)數(shù)據(jù)直接從緩存中

2、取采用多模塊存儲器,多個存儲器交叉存取引入Cache(下一講的主要內(nèi)容)回顧:存儲器基本術(shù)語記憶單元 (存儲基元 / 存儲元 / 位元) (Cell)具有兩種穩(wěn)態(tài)的能夠表示二進制數(shù)碼0和1的物理器件存儲單元 / 編址單位(Addressing Unit) 主存中具有相同地址的那些位構(gòu)成一個存儲單元,也稱為一個編址單位存儲體/ 存儲矩陣 / 存儲陣列(Bank)所有存儲單元構(gòu)成一個存儲陣列編址方式(Addressing Mode) 對存儲體中各存儲單元進行編號的方式按字節(jié)編址(基本上現(xiàn)代計算機都按字節(jié)編址)按字編址(早期有機器按字編址)存儲器地址寄存器(Memory Address Regist

3、er - MAR)用于存放主存單元地址的寄存器存儲器數(shù)據(jù)寄存器( Memory Data Register-MDR(MBR) )用于存放主存單元中的數(shù)據(jù)的寄存器回顧:存儲器基本術(shù)語機器字長運算器中參加運算的寄存器的位數(shù),即:數(shù)據(jù)通路的寬度。存儲字存儲芯片中的一個讀寫單位,一般等于芯片的數(shù)據(jù)線寬度。(注:最好存儲器按機器字長組織成一個“自然”單位。它的長度一般應等于一個數(shù)或指令的位數(shù)。但很多機器的數(shù)據(jù)和指令都是變長的。)編址單位一個存儲單元的位數(shù)?,F(xiàn)在都按字節(jié)編址,即編址單位為8位。傳輸單位對主存而言,指一次從主存讀出或?qū)懭氲臄?shù)的位數(shù),它可以不等于存儲字的長度,也可不等于編址單位。對外存而言,數(shù)

4、據(jù)通常按塊傳輸,傳輸單位為塊。 (例如:386/486等,其編址單位為字節(jié),字長為32位,單字位數(shù)為16位,但傳輸單位可以是8/16/24/32位。)回顧:存儲器分類(1)按工作性質(zhì)/存取方式分類隨機存取存儲器Random Access Memory (RAM) 每個單元的讀寫時間一樣,且與各單元所在位置無關。如:內(nèi)存。(注:原意主要強調(diào)地址譯碼時間相同。現(xiàn)在的DRAM芯片采用行緩沖,因而可能因為位置不同而使訪問時間有所差別。)順序存取存儲器Sequential Access Memory (SAM)數(shù)據(jù)按順序從存儲載體的始端讀出或?qū)懭?,因而存取時間的長短與信息所在位置有關。例如:磁帶。直接存

5、取存儲器Direct Access Memory(DAM)利用一個共享讀寫機制,直接定位到要讀寫的數(shù)據(jù)塊,在讀寫某個數(shù)據(jù)塊時按順序進行。例如:磁盤。相聯(lián)存儲器Associate Memory or Content Addressed Memory (CAM)按內(nèi)容檢索到存儲位置進行讀寫。例如:快表。依據(jù)不同的特性有多種分類方法回顧:存儲器分類(2)按存儲介質(zhì)分類半導體存儲器:雙極型,靜態(tài)MOS型,動態(tài)MOS型磁表面存儲器:磁盤(Disk)、磁帶 (Tape)光存儲器:CD,CD-ROM,DVD(3)按信息的可更改性分類讀寫存儲器(Read / Write Memory):可讀可寫只讀存儲器(R

6、ead Only Memory):只能讀不能寫(4)按斷電后信息的可保存性分類非易失(不揮發(fā))性存儲器(Nonvolatile Memory) 信息可一直保留, 不需電源維持。(如 :ROM、磁表面存儲器、光存儲器等)易失(揮發(fā))性存儲器(Volatile Memory) 電源關閉時信息自動丟失。(如:RAM、Cache等)回顧:存儲器分類(5)按功能/容量/速度/所在位置分類寄存器(Register)封裝在CPU內(nèi),用于存放當前正在執(zhí)行的指令和使用的數(shù)據(jù)用觸發(fā)器實現(xiàn),速度快,容量?。◣资畟€)高速緩存(Cache)位于CPU內(nèi)部或附近,用來存放當前要執(zhí)行的局部程序段和數(shù)據(jù)用SRAM實現(xiàn),速度可

7、與CPU匹配,容量?。◣譓B)內(nèi)存儲器MM(主存儲器Main (Primary) Memory)位于CPU之外,用來存放已被啟動的程序及所用的數(shù)據(jù)用DRAM實現(xiàn),速度較快,容量較大(幾GB)外存儲器AM (輔助存儲器Auxiliary / Secondary Storage)位于主機之外,用來存放暫不運行的程序、數(shù)據(jù)或存檔文件用磁表面或光存儲器實現(xiàn),容量大而速度慢回顧:內(nèi)存與外存的關系及比較內(nèi)存儲器(簡稱內(nèi)存或主存)存取速度快成本高、容量相對較小直接與CPU連接,CPU(指令)可以對內(nèi)存中的指令及數(shù)據(jù)進行讀、寫操作屬于易失性存儲器(volatile),用于臨時存放正在運行的程序和數(shù)據(jù)內(nèi)存儲器外

8、存儲器CPU指令1指令2指令k指令n程序數(shù)據(jù)1數(shù)據(jù)2數(shù)據(jù)m數(shù)據(jù)任務啟動時,執(zhí)行該任務的程序和數(shù)據(jù)從外存成批傳到內(nèi)存CPU從內(nèi)存中逐條讀取該程序的指令及相關的數(shù)據(jù)將指令的運算處理結(jié)果送回內(nèi)存保存任務完成后,將處理得到的全部結(jié)果成批傳送到外存以長久保存逐條執(zhí)行指令,按指令要求完成對數(shù)據(jù)的運算和處理 外存儲器(簡稱外存或輔存) 存取速度慢 成本低、容量很大 不與CPU直接連接,程序運行時,外存中的程序及相關數(shù)據(jù)須先傳送到內(nèi)存,然后才能被CPU使用。 屬于非易失性存儲器(Nonvolatile),用于長久存放系統(tǒng)中幾乎所有的信息主存是CPU可直接訪問的存儲器,用于存放供CPU處理的指令和數(shù)據(jù)性能指標:

9、以字節(jié)為單位進行連續(xù)編址,每個存儲單元為1個字節(jié)(8個二進位)存儲容量:主存儲器中所包含的存儲單元的總數(shù)(單位:MB或GB)存取時間TA:從CPU送出內(nèi)存單元的地址碼開始,到主存讀出數(shù)據(jù)并送到CPU(或者是把CPU數(shù)據(jù)寫入主存)所需要的時間(單位:ns,1 ns = 10-9 s)存儲周期TMC:連讀兩次訪問存儲器所需的最小時間間隔,它應等于存取時間加上下一存取開始前所要求的附加時間,因此,TMC比TA大( 因為存儲器由于讀出放大器、驅(qū)動電路等都有一段穩(wěn)定恢復時間,所以讀出后不能立即進行下一次訪問。 )地址寄存器地址譯碼器讀寫控制電路控制線讀/寫控制信號記憶單元數(shù)據(jù)線讀/寫的數(shù)據(jù)(64位)主存

10、地址地址線(36位)0110100110101010存儲內(nèi)容00001000000001000011001001111011111存儲單元地址MDRMARCPUMM問題:主存中存放的是什么信息?CPU何時會訪問主存?時間、存儲容量(或帶寬)的單位-661HPCA2001Appendix1: Notations and Conventions for NumbersQuintillionEexaQuadrillionPpetaTrillionTteraBillionGgigaMillionMmegaThousandK (or k)kiloOne quintillionthaattaOne qua

11、drillionthffemtoOne trillionthppicoOne billionthnnanoOne millionthmicroOne thousandthmmillNumeric ValueMeaningAbbreviationPrefixNotations and Conventions for Numbers-1810-910-1210-1510206210or103210or309210or4012210or5015210or6018210or-31010-6回顧:內(nèi)存儲器的分類及應用內(nèi)存由半導體存儲器芯片組成,芯片有多種類型:半導體存儲器只 讀存儲器(ROM)隨機存取存

12、儲器(RAM)靜態(tài)隨機存取存儲器SRAM動態(tài)隨機存取存儲器DRAM 不可在線改寫內(nèi)容的ROM快擦除存儲器(Flash ROM)(用作Cache存儲器) (用作主存儲器) 每個存儲單元(cell)由6個晶體管組成 只要加上電源,信息就能一直保持 對電器干擾相對不很敏感 比DRAM更快,也更貴 每個存儲單元由1個電容和1個晶體管組成. 每隔一段時間必須刷新一次 對電器干擾比較敏感 比SRAM慢,但便宜(用作BIOS存儲器)(圖形卡、硬盤控制器)回顧:六管靜態(tài)MOS管電路6管靜態(tài)NMOS記憶單元讀出時: - 置2個位線為高電平 - 置字線為1 - 根據(jù)存儲單元的狀態(tài)改變位線的輸出電平寫入時: - 位

13、線上是被寫入的二進位信息0或1 - 置字線為1 - 存儲單元(觸發(fā)器)按位線的狀態(tài)設置成0或1信息存儲原理: 看作帶時鐘的RS觸發(fā)器存儲單元字線位線D位線DSRAM中數(shù)據(jù)保存在一對正負反饋門電路中,只要供電,數(shù)據(jù)就一直保持,所以不是破環(huán)性讀出,也不需要重寫數(shù)據(jù)來保持數(shù)據(jù)不變。即:無需刷新!回顧:記憶單元的基本原理動態(tài)單管MOS記憶單元電路 構(gòu)造和表示:數(shù)據(jù)記憶在電容CS上,T為門控管,控制數(shù)據(jù)的進出。其柵極接讀/寫選擇線(字線),漏和源分別接數(shù)據(jù)線(位線)和記憶電容CS 。數(shù)據(jù)1或0以電容CS上電荷量的有無來判別。 讀寫原理:在選擇(字)線上加高電平,使T管導通。寫“0”時,在數(shù)據(jù)線上加低電平

14、,使CS上電荷對數(shù)據(jù)線放電;寫“1”時,在數(shù)據(jù)線上加高電平,使數(shù)據(jù)線對CS充電;讀出時,在數(shù)據(jù)線上有一讀出電壓。它與CS上電荷量成正比。 優(yōu)點:電路元件少,功耗小,集成度高,所以被廣泛應用于大容量存儲器中 缺點:速度慢、是破壞性讀出 (讀后狀態(tài)被改變,需讀后再生)、需定時刷新DRAM的一個重要特點是,數(shù)據(jù)以電荷的形式保存在電容中,電容的放電使得電荷通常只能維持幾個毫秒左右,相當于1M個時鐘周期左右,因此要定期進行刷新(讀出后重新寫回),按行進行(所有芯片中的同一行一起進行),刷新操作所需時間通常只占1%2%左右。字線位線接地回顧:半導體RAM的組織存儲器芯片:存儲體+外圍電路(地址譯碼和讀寫控

15、制)記憶單元的組織: 位元字線W位線S0位線S1 讀寫控制Din DoutR/W 位元選擇線(字線)數(shù)據(jù)線(位線)讀寫控制Din DoutR/W存儲體(Memory Bank): 由記憶單元(位元)構(gòu)成的存儲陣列記憶單元(Cell)存儲器芯片(Chip)內(nèi)存條(存儲器模塊)回顧:字片式存儲體陣列組織X向譯碼器一維地址譯碼系統(tǒng)地址驅(qū)動線假定有m位地址,則地址譯碼驅(qū)動(選擇)線的條數(shù)為多少?有2m條!一般SRAM為字片式芯片,只在單方向上譯碼,同時讀出一條字線上的所有位!回顧:位片式存儲體陣列組織假定有m位地址,其地址譯碼驅(qū)動(選擇)線的條數(shù)為多少?有2m/2+1位片式可在字方向和位方向擴充,需要

16、有片選信號!回顧:位片式芯片框圖字擴展為芯片字數(shù)的4倍位擴展為芯片位數(shù)的16倍共12位地址,高兩位用來選片,低10位用于片內(nèi)選址,編址單位為16位。問題:共幾位地址?幾位選片,幾位片內(nèi)選址?編址單位是多少?舉例:TMS4116動態(tài)MOS存儲器芯片總體性能:存儲容量:16K x 1位7根地址線復用(2x7=14)芯片引腳芯片框圖地址緩沖器和地址譯碼器存儲陣列讀出再生放大器基本時序、讀寫操作定時由4116芯片構(gòu)成64K字X16位的存儲器問題:7個地址引腳何時送行地址? 何時送列地址?RAS有效時送行地址CAS有效時送列地址問題:CPU送出的地址有幾位?送到4116芯片的地址有幾位?CPU送出的地址

17、位數(shù)由主存空間大小決定;送4116有14位地址。WE低時寫操作,高時讀操作問題:WE的含義是什么?ST0結(jié)束時,清除地址緩存器中的信息。7個地址緩存器的輸出分別接到地址譯碼器的7個輸入每個輸入可能Ai或Ai,共多少種組合?128種組合!行向和列向共256個譯碼器!ST1或ST4有效所存行或列地址信息。每個譯碼器輸出連到一根行線或列線上。IN16M位=4Mb x 4=2048 x 2048 x 4=211x211x4(1) 地址線:11根分時復用,由RAS和CAS提供控制時序。(2) 存儲字是4位,需四個位平面,對相同行、列交叉點的四個位一起讀/寫(3) 內(nèi)部結(jié)構(gòu)框圖舉例:典型的16M位DRAM

18、(4Mx4)問題:為什么每出現(xiàn)新一代存儲器芯片,容量至少提高到4倍?行地址和列地址分時復用, 每出現(xiàn)新一代存儲器芯片,至少要增加一根地址線每加一根地址線,則行地址和列地址各增加一位,所以行數(shù)和列數(shù)各增加一倍。因而容量至少提高到4倍。SKIP舉例:典型的16M位DRAM(4Mx4)四個位平面所有DRAM芯片同時刷新,由刷新計數(shù)器自動計數(shù),按行刷新(只產(chǎn)生行地址),對CPU透明。讀/寫行地址和刷新行地址被送到一個多路選擇器,由內(nèi)部控制電路選擇哪個地址被送到行譯碼器BACK問題:刷新計數(shù)器的位數(shù)是幾位?DRAM芯片的刷新刷新周期:從上次對整個存儲器刷新結(jié)束到下次對整個存儲器全部刷新一遍為止的時間間隔

19、,為電容數(shù)據(jù)有效保存期的上限(64ms)。有三種刷新方式:集中式、分散式、異步刷新。 集中刷新: 前一段時間正常讀/寫,后一段時間停止讀/寫,集中逐行刷新。 特點:集中刷新時間長,不能正常讀/寫(死區(qū)),很少使用。 分散刷新: 一個存儲周期分為兩段: 前一段用于正常讀/寫操作,后一段用于刷新操作。 特點:不存在死區(qū),但每個存儲周期加長。很少使用。 異步刷新: 結(jié)合上述兩種方式。以4096行為例,在64ms時間內(nèi)必須輪流對每一行刷新一次,即每隔64ms/4096=15.625s刷新一行。 特點:結(jié)合前兩種,效率高,用得較多。CPU與存儲器之間的通信方式CPU和主存之間有同步和異步兩種通信方式異步

20、方式(讀操作)過程(需握手信號)CPU送地址到地址線,主存譯碼CPU發(fā)讀命令,然后等待存儲器發(fā)回“完成”信號 主存接收到讀命令后,讀數(shù)據(jù)送至數(shù)據(jù)線,然后發(fā)“完成”信號給CPUCPU接收到“完成”信號,從數(shù)據(jù)線取數(shù)寫操作過程類似同步方式的特點CPU和主存在同一個時鐘信號控制下工作,不需要應答信號(如“完成”)主存總是在確定的時間內(nèi)準備好數(shù)據(jù),CPU送出地址和讀命令后,總是在確定的幾個時鐘周期后去取數(shù)據(jù) 存儲器芯片必須支持同步方式 SDRAM芯片技術(shù)存儲單元陣列 數(shù)據(jù)總線DDR SDRAM存儲單元陣列 數(shù)據(jù)總線DDR2 SDRAMDDR3:一個時鐘內(nèi)傳送8個數(shù)據(jù)SDRAM是同步存儲芯片每步操作都在

21、系統(tǒng)時鐘控制下進行確定的等待時間(讀命令開始到數(shù)據(jù)線有效的時間,CAS潛伏期)CL,例如CL=2 clks突發(fā)傳送 BL=1/2/4/8多體(緩沖器)交叉存取利用總線時鐘上升沿與下降沿同步傳送 只讀存儲器和Flash存儲器特點:信息只能讀不能寫。非破壞性讀出,無需再生。也以隨機存取方式工作。信息用特殊方式寫入,一經(jīng)寫入,就可長久保存,不受斷電影響。故是非易失性存儲器。用途:用來存放一些固定程序。如監(jiān)控程序、啟動程序等。只要一接通電源,這些程序就能自動地運行;可作為控制存儲器,存放微程序。還可作為函數(shù)發(fā)生器和代碼轉(zhuǎn)換器。在輸入/出設備中,被用作字符發(fā)生器,漢字庫等。在嵌入式設備中用來存放固化的程

22、序?;仡櫍褐蛔x存儲器(Read Only Memory)MROM:腌膜只讀存儲器(Mask ROM)PROM:可編程只讀存儲器(Programmable ROM)EPROM:可擦除可編程只讀存儲器(Erasable PROM)EEPROM (E2PROM) :電可擦除可編程只讀存儲器 (Electrically EPROM)flash memory:閃存 (a)“0”狀態(tài) (b) “1”狀態(tài) (a) 編程:寫“0” (b) 擦除:寫“1” (a) 讀“0” (b) 讀“1” 控制柵加足夠正電壓時,浮空柵儲存大量負電荷,為“0”控制柵不加正電壓時,浮空柵少帶或不帶負電荷,為“1” 有三種操作:編

23、程、讀取、擦除 最初都是1;編程:寫0;擦除:寫1讀出:控制柵加正電壓,若為0,則讀出電路檢測不到電流;若為1,則檢測到電流。閃存的讀取速度與DRAM相近,是磁盤的100倍左右;寫數(shù)據(jù)(快擦編程)則與硬盤相近 存儲器芯片的擴展字擴展位數(shù)不變、擴充容量 例如,用16K8位芯片擴展成64K8位存儲器,需幾個芯片?地址范圍各是多少? 字方向擴展4倍,即4個芯片。0000-3FFFH, 4000-7FFFH, 8000-BFFFH, C000- FFFFH 地址共16位,高兩位由外部譯碼器譯碼生成4個輸出,分別連到4個片選信號,片內(nèi)地址有14位地址線、讀/寫控制線等對應相接,片選信號則分別與外部譯碼器

24、各個譯碼輸出端相連位擴展字數(shù)不變,位數(shù)擴展 例如,用40961位芯片構(gòu)成4K8位存儲器,需幾個芯片?地址范圍各是多少? 位方向擴展8倍,字方向無需擴展。即8個芯片,地址范圍都一樣:000-FFFH 地址共12位,全部作為片內(nèi)地址 芯片的地址線及讀/寫控制線對應相接,而數(shù)據(jù)線單獨引出,沒有外部譯碼器 字位同時擴展字和位同時擴展 例如,用16K4位芯片構(gòu)成64K8位存儲器,需幾個芯片,地址范圍各是多少? 字向4倍、位向2倍,8個芯片。0000-3FFFH, 4000-7FFFH, 8000-BFFFH, C000- FFFFH地址線、讀/寫控制線等對應相接,片選信號則分別與外部譯碼器各個譯碼輸出端

25、相連有兩種容量擴展方式:交叉編址和連續(xù)編址。舉例:128MB的DRAM存儲器: 行、列地址為(i,j)的8個單元總?cè)萘?28 MB 由8片DRAM芯片構(gòu)成每片 16Mx8 bits行地址、列地址各12位為什么呢?每1行共4096列(8位/列)選中某一行并讀出之后再由列地址選擇其中的一列(8個二進位) 送出存儲控制器(行地址i, 列地址j)DRAM 7DRAM 003178151623243263394047485556bits0-7bits8-15bits16-23bits24-31bits32-39bits40-47bits48-55bits56-63最多讀64位03178151623243

26、263394047485556主存儲器地址 A 處的64-bit數(shù)據(jù)地址A4096行問題:地址范圍?存儲器地址位數(shù)27位,片內(nèi)地址24位,與高24位存儲器地址相同。 范圍:000000-FFFFFFH 低3位地址的作用是什么?確定8個字節(jié)中的哪個,用來進行片選。問題:芯片內(nèi)地址是否連續(xù)?不連續(xù),是交叉編址方式!可同時讀寫所有芯片。問題:如果高位地址用作片選,則情況如何?連續(xù)編址,不可同時讀寫多個芯片。SPARCstation 20MemoryControllerMemory BusSIMM Slot 0SIMM Slot 1SIMM Slot 2SIMM Slot 3SIMM Slot 4SI

27、MM Slot 5SIMM Slot 6SIMM Slot 7DRAM SIMMDRAMDRAMDRAMDRAMDRAMDRAMDRAMDRAMDRAMDRAM舉例:SPARCstation 20s Memory Module每個內(nèi)存條最多能同時讀出128位數(shù)據(jù)存儲器總線的寬度為128位每次訪存操作總是在某一個內(nèi)存條內(nèi)進行!舉例:SPARCstation 20s Memory Moduleone memory module (內(nèi)存條)Smallest: 4 MB = 16x 2Mb DRAM chips, 8 KB of Page Mode SRAMBiggest: 64 MB = 32x 1

28、6Mb chips, 16 KB of Page Mode SRAM512 rows512 colsDRAM Chip 0bits8 bits512 8 SRAM256K x 8= 2 MbDRAM Chip 15bits512 8 SRAM256K x 8= 2 MbMemory BusOne page行緩沖16個芯片的行緩沖可以緩存16x512x8位數(shù)據(jù)每個芯片有512行x512列,并有8個位平面每次讀/寫各芯片內(nèi)同行同列的8位,共16x8=128位當CPU訪問一塊連續(xù)的內(nèi)存區(qū)(即:行地址相同)時,可直接從行緩沖讀取,行緩沖用SRAM實現(xiàn),速度極快!Cache行讀要求從內(nèi)存讀一塊連續(xù)區(qū),給

29、定一個首地址,采用突發(fā)傳輸方式問題:行緩沖數(shù)據(jù)的地址有何特點?一定在同行中,故行地址相同!PC機主存儲器的物理結(jié)構(gòu)主存儲器由若干內(nèi)存條組成內(nèi)存條的組成:把若干片DRAM芯片焊裝在一小條印制電路板上制成內(nèi)存條必須插在主板上的內(nèi)存條插槽中才能使用目前流行的是DDR和DDR2內(nèi)存條:均采用雙列直插式,其觸點分布在內(nèi)存條的兩面DDR條有184個引腳,DDR2有240個引腳PC機主板中一般都配備有2個或4個DIMM插槽 存儲器芯片和CPU的連接通過總線連接地址線的連接CPU地址線決定了整個主存空間的尋址范圍,故比存儲芯片地址引腳線多。若進行連續(xù)編址擴展,則將CPU地址線的低位和存儲芯片地址線相連,高位部

30、分用作字擴展時的片選信號的譯碼;交叉編址擴展則相反。數(shù)據(jù)線的連接CPU數(shù)據(jù)線數(shù)決定了一次可讀寫的最大數(shù)據(jù)寬度,故比存儲芯片數(shù)據(jù)引腳線多,通常將CPU數(shù)據(jù)線連到多個進行位擴展的芯片中,使擴展后的位數(shù)與CPU數(shù)據(jù)線數(shù)相等控制線的連接如果CPU讀/寫命令線和存儲芯片的讀/寫控制線都是一根,且電平信號一致,則可直接相連。若CPU讀/寫命令線分開,則需要分別進行連接。ROM區(qū)和RAM區(qū)的劃分主存空間包括ROM和RAM區(qū)ROM區(qū)用來存放BIOS等系統(tǒng)程序等,選用ROM芯片構(gòu)造;RAM區(qū)用來存放用戶程序,選用RAM芯片構(gòu)造選擇存儲芯片的類型和數(shù)量時,必須先確定好ROM區(qū)和RAM區(qū)的地址范圍舉例:CPU和主存

31、的連接 CPU地址線A15A0,數(shù)據(jù)線D7D0,WR為讀/寫信號,MREQ為訪存請求信號。0000H3FFFH為系統(tǒng)程序區(qū),4000HFFFFH為用戶程序區(qū)。用8K4位ROM芯片和16K8位RAM芯片構(gòu)成該存儲器,要求說明地址譯碼方案,并將ROM芯片、RAM芯片與CPU連接。 解:因為0000H3FFFH為系統(tǒng)程序區(qū),ROM區(qū)高兩位總是00,低14位為全譯碼。ROM區(qū)大小為:2148位=16K8位=16KBROM芯片數(shù)為:16K8位 / 8K4位 = 22 = 8,字方向擴展2倍,位方向擴展2倍ROM芯片內(nèi)地址位數(shù)為13位,連到CPU低13位地址線A12A0因為4000HFFFFH為用戶程序區(qū)

32、,RAM區(qū)高兩位是01、10、11,低14位為全譯碼。RAM區(qū)大小為:32148位=316K8位= 48KBRAM芯片數(shù)為:48K8位 / 16K8位 = 31 = 3,字方向上擴展3倍,位方向上不擴展。RAM芯片內(nèi)地址位數(shù)為14位,連到CPU低14位地址線A13A0。片選信號CS是哪一個?問題:為什么WR不連到ROM芯片上?ROM芯片的片選信號由最高三位確定。RAM芯片的片選信號由最高兩位確定。因為ROM芯片只能讀,不能寫,只要選中就是讀,無需讀寫信號。問題:MREQ信號的作用是什么?為有效(低電平)時,表示選中主存讀寫。問題:是交叉還是連續(xù)編址方案?高位地址譯碼作為片選信號,故是連續(xù)編址!

33、00000101X11X回顧:存儲器與CPU速度差距愈來愈大從上圖可以看出什么?DRAM、 硬盤與CPU 之間的速度差距愈來愈大!由于CPU工作速度很快,內(nèi)存速度比較慢(差12個數(shù)量級),從內(nèi)存取數(shù)或向內(nèi)存寫數(shù)時,CPU往往需要等待。解決內(nèi)存訪問速度慢的措施有三個: 提高主存芯片本身的速度 采用多模塊存儲器技術(shù) 在主存和CPU之間加入Cache提高DRAM存儲器速度的措施之一:采用芯片內(nèi)部行緩沖,以提高芯片本身的速度 反復多次使用芯片內(nèi)部緩沖器中的內(nèi)容,不需每次都重復進行“行訪問” DDR SDRAM (Double data-rate synchronous DRAM)和DDR2 SDRAM

34、 時鐘頻率 內(nèi)部頻率 傳輸頻率 =100MHz =200MHz =400MHz 時鐘頻率 內(nèi)部頻率傳輸頻率 =100MHz =100MHz =200MHz存儲單元陣列數(shù)據(jù)總線DDR SDRAM存儲單元陣列數(shù)據(jù)總線DDR2 SDRAM提高DRAM存儲器速度的措施之二:多模塊技術(shù) 2個、4個或多個存儲器同時工作加快訪存速度措施之二:多模塊存儲器多體存儲器和多模塊存儲器多體存儲器 由若干個小體組成 共用地址寄存器MAR和數(shù)據(jù)寄存器MDR 不能提高數(shù)據(jù)訪問速度雙口存儲器 通常作為雙口RAM或指令預取部件 兩套獨立的讀/寫控制電路、地址緩存、地址譯碼及地址線和數(shù)據(jù)線 能同時進行兩個數(shù)據(jù)的讀/寫多模塊存儲

35、器 也包含多個小體 每個體有其自己的MAR、MDR和讀寫電路 可獨立組成一個存儲模塊 能提高數(shù)據(jù)訪問速度 根據(jù)不同的編址方式可分為連續(xù)編址和交叉編址連續(xù)編址多模塊存儲器按高位地址劃分模塊第0模塊第1模塊第7模塊地址在同一模塊內(nèi)連續(xù)編號,稱“連續(xù)編址”程序從某個單元開始訪問后,繼續(xù)在同一模塊訪問,完畢后才跳到下一個。例如:一個模塊執(zhí)行程序,另一個模塊實現(xiàn)DMA訪問,可提高存儲器總的吞吐量。為什么能提高吞吐量?使多個模塊并行存??!交叉編址多模塊存儲器按低位地址劃分模塊第0模塊第1模塊第3模塊地址在不同模塊之間交叉編號,稱“交叉編址”程序從某個單元開始訪問后,總是在所有模塊間交替進行。為什么能提高吞

36、吐量?使多個模塊交叉存?。〉?模塊每隔1/4周期在數(shù)據(jù)總線上得到一個信息,使主存吞吐量提高4倍!在存儲地址“相關”或出現(xiàn)“轉(zhuǎn)移”時,并行性被破壞。Increasing Bandwidth Interleaving(交叉)Access Pattern without Interleaving:CPUMemoryStart Access for D1Start Access for D2D1 availableAccess Bank 0Access Bank 1Access Bank 2Access Bank 3We can Access Bank 0 againCPUMemoryBank 1Me

37、moryBank 0MemoryBank 3MemoryBank 2Access Pattern with Interleaving:第一講小結(jié)信息的存儲、傳送、處理單位記憶單元 / 編址單位 / 存儲單位 / 傳輸單位 / 機器字長存儲器分類可按存取方式 / 易失性 / 可更改性 / 元器件 / 功能來分半導體存儲器隨機訪問存儲器SRAM :速度快,容量小,可做快速小容量存儲器DRAM:速度慢,容量大,用作主存RAM芯片組織:存儲陣列:按行、列排,分別由行地址和列地址指出位置地址譯碼器:分行、列地址譯碼器讀寫邏輯:可控制多個位平面的同一位數(shù)據(jù)一起讀/寫提高存儲器速度的措施:芯片內(nèi)采用行緩存,

38、行內(nèi)數(shù)據(jù)直接從緩存中取采用多模塊存儲器,多個存儲器交叉存取引入Cache(下一講的主要內(nèi)容)第二講 高速緩沖存儲器(Cache) 什么是程序訪問的局部化特性具有Cache機制的CPU的基本訪存過程Cache和主存之間的映射方式直接映射 / 全相聯(lián)映射 / 組相聯(lián)映射cache容量和塊大小的選擇Cache替換算法cache-friendly的程序Cache的寫策略Write Back 和Write ThroughCache失靶處理Cache性能評估主 要 內(nèi) 容What we want in a memory到目前為止,已經(jīng)了解到有以下幾種存儲器:Register,SRAM,DRAM, Hard

39、 Disk,Magnetic Tape and Optical Disk單獨用某一種存儲器,都不能滿足我們的需要!考慮結(jié)合各種存儲器的特點,采用分層存儲器結(jié)構(gòu)來構(gòu)建計算機的存儲體系!1ns2ns10ns10ms1KB1MB1GB100GB100GB1ns問題:你認為哪一種最適合做計算機的存儲器呢?計算機中存儲器的層次結(jié)構(gòu)cache存儲器主存儲器(RAM和ROM)外存儲器(軟盤、硬盤、光盤)后備存儲器(磁帶庫、光盤庫)內(nèi)存儲器外存儲器寄存器典型容量1KB1MB256MB-1GB40GB-200GB10TB-100TB典型存取時間1 ns(0.51cycle)2 ns(13cycle)10 ns(

40、10100cycle)10 ms (10100cycle)10 s分析:速度越快,成本較高為提高性能/價格,各存儲器組成一個層狀塔式結(jié)構(gòu),取長補短,協(xié)調(diào)工作 工作過程:1)CPU運行時,需要的操作數(shù)大部分來自寄存器2)如需要從(向)存儲器中取(存) 數(shù)據(jù)時,先訪問cache,如在,取自cache3)如操作數(shù)不在cache,則訪問RAM,如在RAM中,則取自RAM4)如操作數(shù)不在RAM,則訪問硬盤,操作數(shù)從硬盤中讀出RAM cache回顧:傳統(tǒng)存儲器分級體系結(jié)構(gòu)五層金字塔形分層系統(tǒng)從上到下的特點:1,每位價格降低2,容量增大3,存取時間增大4,訪問頻度降低Traditional Memory H

41、ierarchy傳統(tǒng)結(jié)構(gòu)現(xiàn)代存儲器分級體系結(jié)構(gòu)Contemporary Memory Hierarchy(現(xiàn)代結(jié)構(gòu))開辟一部分內(nèi)存區(qū),用作“Disk Cache”,用于存放將被送到磁盤上的數(shù)據(jù)。引入“Disk Cache”的好處:(1)寫盤時按“簇”進行,以避免頻繁地小塊數(shù)據(jù)寫盤。(2)有些中間結(jié)果數(shù)據(jù)在寫回盤之前可被快速地再次使用。層次化存儲器結(jié)構(gòu)(Memory Hierarchy)時間局部性(Temporal Locality) 含義:剛被訪問過的單元很可能不久又被訪問做法:讓最近被訪問過的信息保留在靠近CPU的存儲器中空間局部性 (Spatial Locality) 含義:剛被訪問過的單

42、元的鄰近單元很可能不久被訪問做法:將剛被訪問過的單元的鄰近單元調(diào)到靠近CPU的存儲器中 Lower LevelMemoryUpper LevelMemoryTo CPUFrom CPUBlock XBlock Y 數(shù)據(jù)總是在相鄰兩層之間復制傳送 Upper Level: 上層更靠CPU Smaller, faster, and uses more expensive technology Lower Level: 下層更遠離CPU Bigger, slower, and uses less expensive technology Block: 最小傳送單位是一個定長塊,互為副本問題:為什么這

43、種層次化結(jié)構(gòu)是有效的?主要是基于“程序訪問局部化”特點!加快訪存速度措施之三:引入Cache大量典型程序的運行情況分析結(jié)果表明在較短時間間隔內(nèi),程序產(chǎn)生的地址往往集中在存儲器的一個很小范圍內(nèi)這種現(xiàn)象稱為程序訪問的局部性程序具有訪問局部性特征的原因指令:指令按序存放,地址連續(xù),循環(huán)程序段或子程序段重復執(zhí)行。數(shù)據(jù):連續(xù)存放,數(shù)組元素重復、按序訪問程序訪問局部性分為空間局部性和時間局部性基于程序訪問的局部性使訪存要求能快速得到響應在CPU和主存之間設置一個快速小容量的存儲器,其中總是存放最活躍(被頻繁訪問)的程序塊和數(shù)據(jù),由于程序訪問的局部性特征,大多數(shù)情況下,CPU能直接從這個高速緩存中取得指令和

44、數(shù)據(jù),而不必訪問主存。這個高速緩存就是位于主存和CPU之間的Cache!SKIP下面用一個例子來說明!Typical Memory Reference Patterns程序的局部性原理舉例1sum = 0;for (i = 0; i n; i+)sum += ai;*v = sum;問題:指令和數(shù)據(jù)的時間局部性和空間局部性各自體現(xiàn)在哪里?指令: 0 x0FC(I0)0 x108(I3)0 x10C(I4)0 x11C(I8) 0 x120(I9) 數(shù)據(jù):只有數(shù)組在主存中:0 x4000 x4040 x4080 x40C0 x7A4 每條指令4個字節(jié);每個數(shù)組元素4字節(jié)指令和數(shù)組元素在內(nèi)存中均連

45、續(xù)存放sum, ap ,i, t 均為通用寄存器;A,V為內(nèi)存地址I0:sum - 0I1:ap - A A是數(shù)組a的起始地址I2:i = n) goto doneI4:loop:t - (ap) 數(shù)組元素ai的值 I5:sum - sum + t 累計在sum中I6:ap - ap + 4 計算下1個數(shù)組元素的地址I7:i - i + 1 I8:if (i n) goto loopI9:done:V - sum 累計結(jié)果保存至地址vI1I2I3I4I5I60 x1000 x1040 x1080 x10C0 x1100 x114a0a1a2a3a4a50 x4000 x4040 x4080 x

46、40C0 x4100 x4140 x7A4主存的布局:I00 x0FC指 令 數(shù) 據(jù)AV高級語言源程序?qū)膮R編語言程序BACK N次若n足夠大,在一段時間內(nèi)就一直在局部區(qū)域內(nèi)執(zhí)行指令,故循環(huán)內(nèi)指令的時間局部性好;按順序執(zhí)行,故程序的空間局部性好!數(shù)組元素按順序存放,也按順序訪問,所以,空間局部性好;每個數(shù)組元素都被訪問1次,所以沒有時間局部性。程序的局部性原理舉例2 以下程序A和B中,哪一個對數(shù)組A引用的空間局部性更好?時間局部性呢?變量sum的空間局部性和時間局部性如何?對于指令來說,for循環(huán)體的空間局部性和時間局部性如何?假定數(shù)組在存儲器中按行優(yōu)先順序存放程序段B: int sumar

47、raycols(int AMN) int i, j, sum=0; for (j=0; jN, j+) for (i=0; iM, i+) sum+=Aij; return sum; 程序段A: int sumarrayrows(int AMN) int i, j, sum=0; for (i=0; iM, i+)for (j=0; jN, j+) sum+=Aij; return sum; M=N=2048時主存的布局:0 x1000 x17C0 x1800 x1840 x4000 x4040 xc000 xc040 x0FC指 令 數(shù) 據(jù)AsumI34I35A00A01A02047A10A

48、11I1I2I33for循環(huán)體程序的局部性原理舉例2程序段A的時間局部性和空間局部性分析(1)數(shù)組A:訪問順序為A00, A01 , A02047; A10, A11, ,A12047; 與存放順序一致, 故空間局部性好! 因為每個Aij都只被訪問一次,所以時間局部性差! (2)變量sum:單個變量不考慮空間局部性; 每次循環(huán)都要訪問sum,所以其時間局部性較好?。?) for循環(huán)體:循環(huán)體內(nèi)指令按序連續(xù)存放,所以空間局部性好! 循環(huán)體被連續(xù)重復執(zhí)行2048x2048次,所以時間局部性好!程序段A: int i, j, sum=0; for (i=0; i2048, i+)for (j=0;

49、j2048, j+) sum+=Aij; return sum; 0 x1000 x17C0 x1800 x1840 x4000 x4040 xc000 xc040 x0FC指 令 數(shù) 據(jù)AsumI34I35A00A01A02047A10A11I1I2I33for循環(huán)體實際上 優(yōu)化的編譯器使循環(huán)中的sum分配在寄存器中,最后才寫回存儲器!程序的局部性原理舉例2程序段B的時間局部性和空間局部性分析(1)數(shù)組A:訪問順序為A00, A10 , A20470; A01, A11, ,A20471; 與存放順序不一致, 每次跳過2048個單元,若交換單位小于2KB,則沒有空間局部性! (時間局部性差,

50、同程序A) (2)變量sum:(同程序A )(3) for循環(huán)體:(同程序A)0 x1000 x17C0 x1800 x1840 x4000 x4040 xc000 xc040 x0FC指 令 數(shù) 據(jù)AsumI34I35A00A01A02047A10A11I1I2I33for循環(huán)體程序段B: int i, j, sum=0; for (j=0; j2048, j+) for (i=0; i2048, i+) sum+=Aij; return sum; 實際運行結(jié)果(2GHz Intel Pentium 4):程序A:59,393,288 時鐘周期程序B:1,277,877,876 時鐘周期程序

51、A比程序B快21.5 倍!Cache(高速緩存)是什么樣的?Cache是一種小容量高速緩沖存儲器,它由SRAM組成Cache直接制作在CPU芯片內(nèi),速度幾乎與CPU一樣快程序運行時,CPU使用的一部分數(shù)據(jù)/指令會預先成批拷貝在Cache中,Cache的內(nèi)容是主存儲器中部分內(nèi)容的映象當CPU需要從內(nèi)存讀(寫)數(shù)據(jù)或指令時,先檢查Cache,若有,就直接從Cache中讀取,而不用訪問主存儲器012345678910111213141589143444101010主存中的部分信息拷貝在Cache存儲器中Cache存儲器主存儲器數(shù)據(jù)訪問過程:問題:要實現(xiàn)Cache機制需要解決哪些問題?如何分塊?主存塊

52、和Cache之間如何映射?Cache已滿時,怎么辦?寫數(shù)據(jù)時怎樣保證Cache和MM的一致性?給出的主存地址怎樣轉(zhuǎn)換為Cache地址?Cache對程序員(編譯器)是否透明?為什么?是透明的,程序員(編譯器)在編寫/生成低級語言程序時無需了解Cache是否存在或如何設置。但是,對Cache深入了解有助于編寫出高效的程序!主存分成若干大小相同的塊,稱為主存塊(Block),Cache也被分成相同大小的塊,稱為Cache行(line)或槽(Slot)Cache 的操作過程如果被訪問的信息不在cache中,稱為缺失或失靶(miss)如果被訪問的信息在cache中,稱為命中(hit)缺失處理問題:什么情

53、況下,CPU產(chǎn)生訪存要求?在執(zhí)行指令過程中,會取指令和讀寫數(shù)據(jù)!Cache映射(Cache Mapping)什么是Cache的映射功能?把訪問的局部主存區(qū)域取到Cache中時,該放到Cache的何處?Cache槽比主存塊少,多個主存塊映射到一個Cache槽中如何進行映射?把主存劃分成大小相等的主存塊(Block)Cache中存放一個主存塊的對應單位稱為槽(Slot)或行(line)或塊(Block)將主存塊和Cache槽按照以下三種方式進行映射直接(Direct):每個主存塊映射到Cache的固定槽中全相聯(lián)(Full Associate):每個主存塊映射到Cache的任意槽中組相聯(lián)(Set A

54、ssociate):每個主存塊映射到Cache的固定組中的任意槽中 The Simplest Cache: Direct Mapped CacheDirect Mapped Cache(直接映射Cache)把主存的每一塊映射到一個固定的Cache槽(行)也稱模映射(Module Mapping)映射關系為: Cache槽號=主存塊號 mod Cache槽數(shù) 舉例:4=100 mod 16 (假定Cache共有16槽) (說明:主存第100塊應映射到Cache的第4槽中。)特點:容易實現(xiàn),命中時間短無需考慮淘汰(替換)問題但不夠靈活,Cache存儲空間得不到充分利用,命中率低 例如,需將主存第0

55、塊與第16塊同時復制到Cache中時,由于它們都只能復制到Cache第0槽,即使Cache其它槽空閑,也有一個主存塊不能寫入Cache。這樣就會產(chǎn)生頻繁的 Cache裝入。SKIP直接映射Cache組織示意圖假定:數(shù)據(jù)在主存和Cache之間按塊傳送的單位為512字。Cache大?。?13字=8K字=16槽 x 512字/ 槽 主存大小: 220字=1024K字=2048塊 x 512字/ 塊Cache標記(tag)指出對應槽取自哪個主存塊群主存tag指出對應地址位于哪個塊群舉例:假定Cache為空,如何對0220CH單元進行訪問?0220CH0000 0010 0010 0000 1100B第

56、1塊群中的0001塊(即第17塊)中第12個單元!0000001Cache Organization: Cache Tag and Cache Index假定主存地址為32位, 按字節(jié)編址假定Cache是塊大小為1B的直接映射CacheCache Index: The lower N bits of the memory addressCache Tag: The upper (32 - N) bits of the memory addressCache Index01232 - 1N:2NBytesByte 0Byte 1Byte 2Byte 3Byte 2 - 10N31:Cache T

57、agExample: 0 x50Ex: 0 x030 x50Cache “tag”Valid Bit:NCache Data =否? =1否?1利用了時間局部性:某字節(jié)不久又可能被用沒有利用空間局部性:某字節(jié)的鄰近字節(jié)不久可能也被用,但沒有被調(diào)到Cache(每次調(diào)入的一塊信息只有一個字節(jié)?。┌l(fā)生沖突概率增大,因為塊小使映射到同一個Cache行的主存塊增加可以通過增大塊的大小來利用空間局部性Ex2: 1 KB Direct Mapped Cache with 32 B BlocksFor a 2N byte cache (N=10 in this example):The uppermost (

58、32 - N) address bits are always the Cache TagThe lowest M address bits are the Byte Select (Block Size = 2M)Cache Index0123: Cache DataByte 005 431:Cache TagExample: 0 x50Ex: 0 x010 x50Valid Bit:31Byte 1Byte 31:Byte 32Byte 33Byte 63:Byte 992Byte 1023: Cache TagByte SelectEx: 0 x0010 9Suppose Block s

59、ize is 32B , M=5 1Ex3: 64 KB Direct Mapped Cache with 16B Blocks假定主存和Cache之間采用直接映射方式,塊大小為16B。Cache的數(shù)據(jù)區(qū)容量為64KB,主存地址為32位,按字節(jié)編址。要求:說明主存地址如何劃分,訪存過程的硬件實現(xiàn)。 1612Byte offsetVtag163212832323223231 DataWord20ByteBlock offsetMemory AddressTagIndexMux4KEntries=Mux16dataHit 共 (64K / 16)= 4K 行問題:Cache有多少行?容量多大?容量

60、 4Kx(1+16)+64Kx8=580Kbits=72.5KB,數(shù)據(jù)占64KB / 72.5KB = 88.3% 如何計算Cache的容量?Consider a cache with 64 Blocks and a block size of 16 bytes. What block number does byte address 1200 map to?答:地址1200對應存放在第11槽。 因為: 1200/16=75 module 64 = 11How many total bits are required for a directed mapped cache with 16K E

溫馨提示

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

評論

0/150

提交評論