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