20135231 —— 第六周任务总结报告
?
學(xué)習(xí)計(jì)時:共14小時
讀書:4
代碼:2
作業(yè):4
博客:4
?
第六章 存儲器層次結(jié)構(gòu)
存儲器系統(tǒng)是一個具有不同容量、成本和訪問時間的存儲設(shè)備的層次結(jié)構(gòu)。
存儲技術(shù)
一、隨機(jī)訪問存儲器
1.分類:SRAM(靜態(tài))、DRAM(動態(tài))
2.特點(diǎn):存儲單元的內(nèi)容可按需隨意取出或存入,這種存儲器在斷電時將丟失其存儲內(nèi)容,即掉電失憶(常說的電腦內(nèi)存就是RAM的)。
1、靜態(tài)RAM
用來作為高速緩存存儲器,每個位存儲在一個雙穩(wěn)態(tài)的存儲器單元里。
雙穩(wěn)態(tài):電路可以無限期的保持在兩個不同的電壓配置或者狀態(tài)之一。只要供電,就會保持不變。
1.特點(diǎn):
?、?不需要刷新電路即能保存它內(nèi)部存儲的數(shù)據(jù)。
?、?集成度較低,需要很大的體積。
?、?存取快。
④ 抗干擾。
2.優(yōu)點(diǎn):速度快,不必配合內(nèi)存刷新電路,可提高整體的工作效率。 ?
3.缺點(diǎn):集成度低,功耗較大,相同的容量體積較大,而且價格較高,少量用于關(guān)鍵性系統(tǒng)以提高效率。?
2、動態(tài)RAM?
用來作為主存以及圖形系統(tǒng)的幀緩沖區(qū)。將每個位存儲為對一個電容的充電,當(dāng)電容的電壓被擾亂之后,他就永遠(yuǎn)都不會再恢復(fù)了。暴露在光線下會導(dǎo)致電容電壓改變。
1.特點(diǎn):
?、?每個位存儲為對電容的充電。
?、?DRAM存儲器單元對干擾非常敏感。
?、?周期性的用讀出然后寫回的方式刷新存儲器每個位。
3、傳統(tǒng)的DRAM
1.DRAM芯片中的單元(位)被分成了d個超單元,每個超單元都由w個DRAM單元組成, 一個d*w的DRAM共存儲dw位信息。
2.超單元被組織成一個r行c列的長方形陣列,rc=d。每個超單元的地址用(i,j)來表示(從零開始)。設(shè)計(jì)成二維矩陣是為了降低芯片上地址引腳的數(shù)量。
3.信息通過稱為引腳的外部連接器流入/流出芯片,每個引腳攜帶一個1位信號。
4.每個DRAM信號被連接到稱為存儲控制器的電路,電路每次傳輸量為8位。行地址i,RAS請求;列地址j,CAS請求共享相同的DRAM地址引腳。
4、存儲器模塊
雙列直插存儲器模塊(DIMM):168個引腳,以64位為塊傳入/傳出數(shù)據(jù)到存儲控制器。
單列直插存儲器模塊(SIMM):72個引腳,以32位為塊傳入/傳出數(shù)據(jù)到存儲控制器。
5、增強(qiáng)的DRAM
1.快頁模式-FPM DRAM:允許對同一行連續(xù)的訪問可以直接從行緩沖區(qū)得到服務(wù)。(原本的DRAM對同一行的四條指令時,每條指令取完后都會丟棄,然后重新讀取。)
2.擴(kuò)展數(shù)據(jù)輸出-EDO DRAM:允許單獨(dú)的CAS信號在時間上靠的更緊密一點(diǎn)。同步-SDRAM:用與驅(qū)動存儲控制器相同的外部時鐘信號的上升沿來代替許多這樣的控制信號-比異步的更快。
3.雙倍數(shù)據(jù)速率同步-DDR SDRAM:通過使用兩個時鐘沿作為控制信號,從而使DRAM的速度翻倍。
4.分類:DDR(2位),DDR2(4位),DDR3(8位)。
6、非易失性存儲器
DRAM、SRAM斷電丟失數(shù)據(jù),是易失的。
1.PROM(可編程只讀存儲器)
只能被編程一次。每個存儲器單元有一種熔絲,只能用高電流熔斷一次。
2.EPROM(可擦寫可編程只讀存儲器)?
可重復(fù)擦除和編程次數(shù)達(dá)到1000次。
3.EEPROM(E2PROM電子可擦除可編程只讀存儲器)
不需要獨(dú)立編程設(shè)備,可直接在印制電路卡上進(jìn)行。
編程次數(shù)可達(dá)100000次。
4.FLASH(閃存)
非易失性的內(nèi)存,基于EEPROM。
?
二、磁盤存儲
1、磁盤構(gòu)造
磁盤由盤片構(gòu)成,表面覆蓋著磁性記錄材料,中央有一個可以旋轉(zhuǎn)的主軸?,旋轉(zhuǎn)速率大約為5400-15000每分鐘。磁盤的每個表面是一組稱為磁道的同心圓組成,每個磁道被劃分為一組扇區(qū),扇區(qū)之間由一些間隙隔開,間隙存儲用來標(biāo)識扇區(qū)的格式化位。柱面是所有盤片表面上到主軸中心的距離相等的磁道的集合。
2、磁盤容量
1.一個磁盤上可以記錄的最大位數(shù)稱為他的最大容量,簡稱容量。由以下因素決定:
·記錄密度(位/英寸):磁道一英寸的段中可以放入的位數(shù)。
·磁道密度(道/英寸):從盤片中心出發(fā)半徑上一英寸的段內(nèi)可以有的磁道數(shù)。
·面密度(位/平方英寸):記錄密度與磁道密度的乘積。
2.磁盤容量計(jì)算公式:
3、磁盤操作
1.磁盤用讀/寫頭來讀寫存儲在磁性表面的位,而讀寫頭連接到一個傳動臂?一端,通過移動轉(zhuǎn)動臂將讀寫頭定位在磁道上的機(jī)械運(yùn)動稱為尋道。磁盤以扇區(qū)大小的塊來讀寫數(shù)據(jù),對扇區(qū)的訪問時間有三個主要的組成部分:
·尋道時間:轉(zhuǎn)動臂將讀/寫頭定位到包含目標(biāo)扇區(qū)的磁道上所需時間。
·旋轉(zhuǎn)時間:驅(qū)動器等待目標(biāo)扇區(qū)的第一個位旋轉(zhuǎn)到讀/寫頭下的時間。最大為
【平均旋轉(zhuǎn)時間是Tmax的一半?!?/span>
·傳送時間:讀寫并傳送該扇區(qū)內(nèi)容的時間。平均傳送時間為:
4、邏輯磁盤塊
1.磁盤控制器,維護(hù)邏輯塊號和物理磁盤扇區(qū)之間的映射關(guān)系。
2.要執(zhí)行I/O操作時,操作系統(tǒng)發(fā)送一個命令到磁盤控制器,執(zhí)行一個快速表查找,將一個邏輯塊號翻譯成一個三元組(盤面,磁道,扇區(qū)),唯一標(biāo)識列對應(yīng)的物理扇區(qū)。
3.三元組:將讀寫頭移動到適當(dāng)柱面,等待山區(qū)移動到讀寫頭下,將讀寫頭感知到的位放到控制器上的小緩沖區(qū)中,將它們拷貝到主存中。
5、連接到I/O設(shè)備
所有的I/O設(shè)備都是通過I/O總線連接到CPU和主內(nèi)存。有三種不同類型:
·通用串行總線:一個廣泛的使用標(biāo)準(zhǔn),用于連接各種外圍I/O設(shè)備。
·圖形卡(或適配器):包含硬件和軟件邏輯,代表CPU在顯示器上畫像素。
·主機(jī)總線適配器: 將一個或者多個磁盤連接到I/O總線,使用一個特別的主機(jī)總線接口定義的通信協(xié)議。
·訪問磁盤:CPU使用一種稱為存儲器映射I/O的技術(shù)向I/O設(shè)備發(fā)出命令,地址空間中為I/O設(shè)備通信保留的地址稱為I/O端口。
?
三、固態(tài)硬盤
1.固態(tài)硬盤是一種基于閃存的存儲技術(shù)。一個硬盤包由一個或者多個閃存芯片和內(nèi)存翻譯層組成,閃存芯片替代旋轉(zhuǎn)磁盤中的機(jī)械驅(qū)動器,而閃存翻譯層將對邏輯塊的請求翻譯成對底層物理設(shè)備的訪問。
四、存儲技術(shù)趨勢
·不同的存儲技術(shù)有不同的價格和性能折中。
·不同存儲技術(shù)的價格和性能屬性以截然不同的速率變化著。
·DRAM和磁盤的性能滯后于CPU的性能。
?
局部性
1.一個編寫良好的計(jì)算機(jī)程序傾向于引用鄰近于其他最近引用過的數(shù)據(jù)項(xiàng),或者最近引用過的數(shù)據(jù)項(xiàng)本身。有良好局部性的程序比局部性差的程序運(yùn)行的更快,在硬件層引入高速緩存存儲器就體現(xiàn)了局部性原理。
2.時間局部性、空間局部性。
一、對程序數(shù)據(jù)引用的局部性
1.時間局部性(temporal locality):被引用過一次的存儲器位置在未來會被多次引用(通常在循環(huán)中)。
2.空間局部性(spatial locality):如果一個存儲器的位置被引用,那么將來他附近的位置也會被引用。
3.一個連續(xù)向量中,每隔k個元素進(jìn)行訪問,被稱為步長為k的引用模式,具有步長為1的引用模式稱為順序引用模式,隨著步長增加空間局部性下降。
?
二、取指令的局部性
1.程序指令是存放在存儲器中的,CPU讀取這些指令的過程中評價一個程序關(guān)于取指令的局部性。
2.代碼區(qū)別與程序數(shù)據(jù)的一個重要屬性就是在運(yùn)行時指令是不能被修改的。
?
三、局部性小結(jié)
評價一個程序中局部性的簡單原則:
1.重復(fù)引用同一個變量從的程序有良好的時間局部性。
2.對于步長為k的引用模式的程序,步長越小,空間局部性越好。具有步長為1的引用模式的程序有很好的空間局部性。
3.對于取指令來說,循環(huán)有很好的時間和空間局部性。循環(huán)體越小,循環(huán)迭代次數(shù)越多,局部性越好。
?
存儲層次結(jié)構(gòu)
?
一、存儲器層次結(jié)構(gòu)中的緩存
高速緩存是一個小而快速的存儲設(shè)備,作為存儲在更大、更慢的設(shè)備中的數(shù)據(jù)對象的緩沖區(qū)域。每一層存儲器被劃分成連續(xù)的數(shù)據(jù)對象片,稱為塊,每個塊都有唯一的對象和名字。數(shù)據(jù)總是以塊大小為傳送單元在第k層和第k+1層之間來回拷貝。
1、緩存命中
當(dāng)程序需要第k+1層的某個數(shù)據(jù)對象d時,首先在當(dāng)前存儲的第k層的一個塊中查找d,如果d剛好在第k層中,則稱為緩存命中。
2、緩存不命中
如果k層中沒有緩存數(shù)據(jù)d,則稱為緩存不命中,此時要從k+1層取出包含d的塊,可能會覆蓋(替換/驅(qū)逐)現(xiàn)在的一個塊(犧牲塊)。決定該替換哪個快是緩存的替換策略來控制的。(例如,隨機(jī)替換策略/LRU策略)
3、緩存不命中的種類
利用時間局部性: 一旦一個數(shù)據(jù)在第一次不命中時被拷貝到緩存中,我們就會期望后面對該目標(biāo)有一系列的訪問命中。
4、強(qiáng)制性不命中/冷不命中
第k層緩存是空的(冷緩存),只是短暫的狀態(tài),不會在反復(fù)訪問存儲器使得緩存暖身之后的穩(wěn)定狀態(tài)出現(xiàn)。
5、沖突不命中
第k+1層的第i塊,必須放置在第k層的塊(i?mod 4)中,這種限制性的放置策略引起沖突不命中。
6、利用空間局部性
塊通常包含多個數(shù)據(jù)對象,我們通常期望后面對該塊中其他對象的訪問能夠補(bǔ)償不命中后拷貝該塊的花費(fèi)。
二、存儲器層次結(jié)構(gòu)概念小結(jié)
利用時間局部性: 一旦一個數(shù)據(jù)在第一次不命中時被拷貝到緩存中,我們就會期望后面對該目標(biāo)有一系列的訪問命中。
利用空間局部性:塊通常包含多個數(shù)據(jù)對象,我們通常期望后面對該塊中其他對象的訪問能夠補(bǔ)償不命中后拷貝該塊的花費(fèi)。
?
高速緩存存儲器
一、通用的高速緩存存儲器結(jié)構(gòu)
1.一個計(jì)算機(jī)系統(tǒng)每個存儲地址有m位,形成M=2^m個不同的地址。
2.高速緩存被組織成一個有S=2^s個高速緩存組的數(shù)組,每個組包含E個高速緩存行,每個行是由一個B=2^b字節(jié)的數(shù)據(jù)塊、一位有效位以及t=m-(b+s)個標(biāo)記位組成,唯一標(biāo)識存儲在這個高速緩存行中的塊。
3.高速緩存的結(jié)構(gòu)用元組(S,E,B,m)來描述,高速緩存的大小C = S * E * B。
4、地址:?? t位?????????? ? s位?????????? b位 ??????? 標(biāo)記??? ??????? 組索引??? ????? 塊偏移·s個組索引位:一個無符號整數(shù),說明字必須存儲在哪個組中。
·t個標(biāo)記位:組中的哪一行包含這個字。
·b個塊偏移位:在B個字節(jié)的數(shù)據(jù)塊中的字偏移。
二、直接映射的高速緩存
每組只有一行(E=1)的高速緩存稱為直接映射高速緩存。高速緩存確定一個請求是否命中,然后抽取出被請求字的過程分為三步:
1)組選擇
2)行匹配
3)字抽取
1.直接映射高速緩存中的組選擇
高速緩存從要抽取的字的地址中抽取出S個組索引位,這些位被解釋成一個對應(yīng)于一個組號的無符號整數(shù)。
2.直接映射高速緩存中的行匹配
當(dāng)且僅當(dāng)設(shè)置了有效位,而且高速緩存行標(biāo)記與w的地址中的行標(biāo)記相匹配時,這一行中包含w的一個拷貝。
3.直接映射高速緩存中的字抽取
塊偏移位提供了所需要的字的第一個字節(jié)的偏移。
4.直接映射高速緩存中不命中時的行替換
需要從存儲器層次結(jié)構(gòu)中的下一層取出被請求的塊,然后將新的塊存儲在組索引位指示的組中的一個高速緩存行中。
?
三、組相連高速緩存
1.組相連高速緩存中的組選擇
與直接映射高速緩存中的組選擇一樣,組索引位標(biāo)識組。
2.組相連高速緩存中的行匹配和字選擇
把每個組看做一個小的相關(guān)聯(lián)存儲器,是一個(key,value)對的數(shù)組,以key為輸入,返回對應(yīng)數(shù)組中的value值。高速緩存必須搜索組中的每一行,尋找有效的行其標(biāo)記與地址中的相匹配。
3.組相連高速緩存中不命中時的行替換
最簡單的替換策略是隨機(jī)選擇要替換的行,其他復(fù)雜的策略則使用了局部性原理,例如最不常使用、最近最少使用,等。
?
四、全相聯(lián)高速緩存
1.全相連高速緩存中的組選擇
只有一個組,沒有組索引位。
2.全相連高速緩存中的行匹配和字選擇
與組相連高速緩存是一樣的,但規(guī)模大很多,因此只適合做小的高速緩存,例如虛擬存儲系統(tǒng)中的翻譯備用緩沖器。
?
五、高速緩存參數(shù)的性能影響
影響性能的因素:
·高速緩存大小的影響:較大的高速緩存可能會提高命中率,但使大存儲器運(yùn)行的更快是更難一些的。
·塊大小的影響:較大的塊能利用程序中可能存在的空間局部性,幫助提高命中率;但塊越大意味著高速緩存行較少,損害時間局部性。
·相聯(lián)度的影響:相聯(lián)度較大(E值較大)優(yōu)點(diǎn)是降低了高速緩存由于沖突不命中出現(xiàn)抖動的可能性,但成本較高。
·寫策略的影響:直寫高速緩存易實(shí)現(xiàn),而且能使用獨(dú)立于高速緩存的寫緩沖區(qū),用來更新存儲器,不命中開銷小。寫回高速緩存引起的傳送比較少,允許更多的到存儲器的寬帶用于執(zhí)行DMA的I/O設(shè)備。越下層越可能使用寫回。
?
編寫高速緩存友好的代碼
基本方法:
讓最常見的情況運(yùn)行的快?
在每個循環(huán)內(nèi)部緩存不命中數(shù)量最小
?
存儲器山
1.一個程序從存儲系統(tǒng)中讀數(shù)據(jù)的速率稱為讀吞吐量,或者讀帶寬,通常以兆字節(jié)每秒(MB/s)為單位。
2.讀帶寬的時間和空間局部性的二維函數(shù)稱為存儲器山。
?
?
參考資料
1.教材:第六章《處理器體系結(jié)構(gòu)》,詳細(xì)學(xué)習(xí)指導(dǎo):http://group.cnblogs.com/topic/73069.html
2.課程資料:https://www.shiyanlou.com/courses/413?實(shí)驗(yàn)六,課程邀請碼:W7FQKW4Y
3.教材中代碼運(yùn)行、思考一下,讀代碼的學(xué)習(xí)方法:http://www.cnblogs.com/rocedu/p/4837092.html
4.閆佳歆博客:http://www.cnblogs.com/20135202yjx/p/4907828.html
?
轉(zhuǎn)載于:https://www.cnblogs.com/20135231hj/p/4906677.html
總結(jié)
以上是生活随笔為你收集整理的20135231 —— 第六周任务总结报告的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Kenshin Cui's Blog
- 下一篇: Eclipse 工作目录被破坏,导致Ec