20135223何伟钦—信息安全系统设计基础第七周学习总结
第六章 存儲器層次結構
?【學習時間:6小時】
?【學習任務:《深入理解計算機系統》第六章】
6.1存儲技術?
6.1.1隨機訪問存儲器
分為兩類:靜態(SRAM)和動態(DRAM)。
(1)SRAM:高速緩存存儲器,既可以在CPU芯片上,也可以在片下。
(2)DRAM:主存以及圖形系統的幀緩沖區。
1.靜態RAM
SRAM將每個位存儲在一個雙穩態的存儲器單元里。每個單元是用一個六晶體管電路來實現的。該電路有一個屬性:可以無限期地保持在兩個不同的電壓配置或狀態之一。
2.動態RAM
| ? | 每位晶體管數 | 相對訪問時間 | 持續的? | 敏感的? | 相對花費 | 應用 |
| SRAM | 6 | 1x | 是 | 否 | 100xx | 高速緩存存儲器 |
| DRAM | 1 | 10x | 否 | 是 | 1x | 主存,幀緩沖器 |
3.傳統的DRAM
(1)單元(位)被分成d個超單元,每個超單元都由w個DRAM單元組成。
(2)一個d*w的DRAM總共存儲了dw位信息。
(3)超單元被組織成一個r行c列的長方形陣列,rc=d.每個超單元有形如(i,j)的地址。
(4)行地址i:RAS? ;列地址:CAS
注意:RAS和CAS請求共享相同的DRAM地址引腳。
4.存儲器模塊
(1)雙列直插存儲器模塊:168個引腳,以64位為塊傳送數據到存儲控制器和從存儲控制器傳出數據。
(2)單列直插存儲器模塊:72個引腳,以32位為塊傳送數據。
5.增強的DRAM
- ?快頁模式DRAM
- ?擴展數據輸出DRAM
- ?同步DRAM
- ?雙倍數據速率同步DRAM
- ?Rambus DRAM
- ?視頻DRAM
6.非易失性存儲器
只讀存儲器ROM
(1) 區分:以它們能夠被重編程的次數和對他們進行重編程所用的機制來區分的。
PROM(可編程ROM):只能被編程一次。
EPROM(可擦寫可編程ROM):
(1) 紫外線光照射過窗口,EPROM單元就被清除為0.
(2) 通過使用一種把1寫入EPROM的特殊設備來完成對EPROM編程。
EEPROM(電子可擦除PROM):
(1) 不需要一個物理上獨立的編程設備。
(2) 能夠被編程的次數的數量級可以達到10^5.
FLASH(閃存):
固態硬盤:基于閃存的磁盤驅動器。
7.訪問主存
(1)總線:一組并行的導線,能攜帶地址、數據、和控制信號。
?
6.1.2磁盤存儲
1.磁盤構造
(1)由盤片構成,每個盤片有兩面或者稱為表面,表面覆蓋著磁性記錄材料,盤中央有一個可以旋轉的主軸,使得盤片以固定的旋轉速率旋轉,磁盤通常包含一個或者多個這樣的盤片,冰封裝在一個密封的容器內。
(2)每個表面由一組稱為磁道的同心圓組成的。每個磁道被劃分為一組扇區,每個扇區包含相等數量的數據位(512字節),扇區之間由一些間隙分隔開,間隙間不存儲數據位。間隙存儲用來標識扇區的格式化位。
2.磁盤容量
(1)最大容量(容量):一個磁盤上可以記錄的最大位數。
(2)決定因素:
- ?記錄密度:磁道一英寸的段中可以放入的位數。
- ?磁道密度:從盤片中心出發半徑上一英寸的段內可以有的磁道數。
- ?面密度:記錄密度與磁道密度的乘積。
(1)公式:
3.磁盤操作
(1)磁盤是以扇區大小的塊來讀寫數據。
(2)訪問時間:
- ? 尋道時間:移動傳動臂所需的時間。通常3~9ms,一次尋道的最大時間可達20ms。
- ? 旋轉時間:依賴于當讀/寫頭到達目標磁道時盤面的位置和磁盤的旋轉速度。
最大旋轉延遲:T(max rotation) = (1/RPM)*(60secs/1min)
平均旋轉時間:T(avg rotation)=1/2T(max rotation)
l? 傳送時間:一個扇區的傳送時間依賴于旋轉速度和每條磁道的扇區數目。
T(avg transfer)= (1/RPM)*(1/(平均扇區數/磁道))*(60secs/1min)
注意:
- ? 訪問一個磁盤扇區中512個字節的時間主要是尋道時間和旋轉延遲。
- ? 尋道時間和旋轉延遲大致相等,估計磁盤訪問時間可將尋道時間x2
4.邏輯磁盤塊
(1)一個B個扇區大小的邏輯快的序列,編號為0,1,….,B-1。
(2)磁盤中有一個小的硬件/固件設備,稱為磁盤控制器。維護著邏輯塊號和實際磁盤扇區之間的映射關系。
?
5.連接到I/O設備
(1)系統總線和存儲器總線是與CPU相關的。
(2)第三方I/O設備
- ? 通用串行總線控制器:是一個連接到USB總線的設備的中轉機構。
- ? 圖形卡(適配器):包含硬件和軟件邏輯,負責CPU在顯示器上畫像素。
- ? 主機總線適配器:將一個或多個磁盤連接到IO總線,使用的是一個特別的主機總線接口定義的通信協議。
6.訪問磁盤
a)CUP通過將命令、邏輯塊號和目的存儲器地址寫到與磁盤相關聯的存儲器映射地址,發起一個磁盤讀。
b)直接存儲器訪問:磁盤控制器讀扇區,并執行到主存的DMA傳送
c)當DMA傳送完成時,磁盤控制器用中斷的方式通知CPU
6.2局部性
兩種形式:時間局部性和空間局部性
6.2.1對程序數據引用的局部性
1.順序引用模式:步長為1的引用模式。
2.c數組在存儲器中是按照行順序來存放的。
6.2.2取指令的局部性
1.代碼區別于程序數據的一個重要屬性是在運行時它是不能被修改的。
2.當程序正在執行時,CPU只從存儲器中讀出它的指令。CPU決不會重寫或修改這些指令。
6.2.3局部性小結
- ? 重復引用同一個變量的程序有良好的時間局部性。
- ? 對于具有步長為k的引用模式的程序,步長越小,空間局部性越好。具有步長為1的引用模式的程序有很好的空間局部性。在存儲器中以大步長跳來跳去的程序空間局部性會很差。
- ? 對于取指令來說,循環有好的空間和時間局部性。循環體越小,循環迭代次數越多,局部性越好。
6.3存儲器層次結構
存儲技術:不同存儲技術的訪問時間差異很大。速度較快的技術每字節的成本要比速度較慢的技術高,而且容量較小。CPU和主存之間的速度差距子在增大。
計算機軟件:一個編寫良好的程序傾向于展示出良好的局部性。
6.3.1存儲器層次結構中的緩存
存儲器層次結構的中心思想:對于每個k,位于k層的更快更小的存儲設備作為位于k+1層的更大更慢的存儲設備的緩存。
1.緩存命中
當程序需要第k+1層的某個數據對象d時,首先在當前存儲在第k層的一個塊中查找d,如果d剛好緩存在第k層中,就稱為緩存命中。
2.緩存不命中
(1)即第k層中沒有緩存數據對象d。
這時第k層緩存會從第k+1層緩存中取出包含d的那個塊。如果第k層緩存已滿,就可能會覆蓋現存的一個塊
覆蓋一個現存的塊的過程稱為替換或驅逐。
3.緩存不命中的種類
(1)強制性不命中/冷不命中
即第k層的緩存是空的(稱為冷緩存),對任何數據對象的訪問都不會命中。
(2)沖突不命中
由于一個放置策略:將第k+1層的某個塊限制放置在第k層塊的一個小的子集中,這就會導致緩存沒有滿,但是那個對應的塊滿了,就會不命中。
(3)容量不命中
當工作集的大小超過緩存的大小時,緩存會經歷容量不命中,就是說緩存太小了,不能處理這個工作集。
4.緩存管理
某種形式的邏輯必須管理緩存,而管理緩存的邏輯可以是硬件、軟件,或者兩者的集合。
6.3.2存儲器層次結構概念小結
6.4高速緩存存儲器
早期計算機系統的存儲器層次結構只有三層:CPU寄存器、DRAM主存儲器和磁盤存儲。
L1高速緩存(一級緩存):SRAM高速緩存存儲器。位于CPU寄存器文件和主存之間,訪問速度2-4個時鐘周期。
L2高速緩存:位于L1高速緩存和主存之間,訪問速度10個時鐘周期
L3高速緩存:位于L2高速緩存和主存之間,訪問速度30或40個時鐘周期
6.4.1通用的高速緩存存儲器結構
1.高速緩存是一個高速緩存組的數組(S,E,B,m)
S:這個數組中有S=2^s個高速緩存組
E:每個組包含E個高速緩存行
B:每個行是由一個B=2^b字節的數據塊組成的
m:每個存儲器地址有m位,形成M=2^m個不同的地址
2.標記位和有效位
(1)有效位:每個行有一個有效位,指明這個行是否包含有意義的信息
(2)標記位:t=m-(b+s)個,唯一的標識存儲在這個高速緩存行中的塊
(3)組索引位:s
(4)塊偏移位:b
6.4.2直接映射高速緩存
每個組只有一行(E=1)的高速緩存稱為直接映射高速緩存。
高速緩存確定一個請求是否命中,然后取出被請求的字的過程,分為三步:
- ? 組選擇
- ? 行匹配
- ? 字抽取
1.組選擇
(1)高速緩存從w的地址中間抽取出s個組索引位。
組索引位:一個對應于一個組號的無符號整數。
2.行匹配
注意,判斷緩存命中有兩個充分必要條件:
- 該行設置了有效位
- 高速緩存行中的標記和w的地址中的標記相匹配
3.字選擇
4.緩存不命中時的行替換
5.后臺運行中的直接映射高速緩存
- 標記位和索引位連起來唯一的標識了存儲器中的每個塊
- 映射到同一個高速緩存組的塊由標記位唯一地標識
6直接映射高速緩存中的沖突不命中
(1)抖動:高速緩存反復的加載和驅逐相同的高速緩存塊的組。
(2)原因:這些塊被映射到了同一個高速緩存組。
(3)解決方法:在每個數組的結尾放B字節的填充(B字節是一個塊的長度,一行是一個塊,相當于分開了行)從而使得他們映射到不同的組。
6.4.3組相聯高速緩存
E路組相聯高速緩存:1<E<C/B
1.組選擇
和直接的一樣。
2.行匹配和字選擇
(1) key:標記和有效位。
(2) value:塊的內容。
3.不命中時的行替換
有空行替換空行,沒有空行,應用替換策略:
(1)?? 隨機替換
(2)?? 最不常使用策略LFU:替換在過去某個時間窗口內引用次數最少的那一行。
(3)?? 最近最少使用策略LRU:替換最后一次訪問時間最久遠的那一行。
6.4.4全相聯高速緩存
1.組選擇
只有一個組,默認組0,沒有索引位,地址只被劃分成了一個標記和一個塊偏移。
2.行匹配和字選擇
(1)同組相聯。
(2)只適合做小的高速緩存。
6.4.5有關寫的問題
1.直寫:立即將w的高速緩存塊寫回到緊接著的低一層中。
(1)缺點:每次寫都會引起總線流量。
2.寫回;盡可能的推遲存儲器更新,只有當替換算法要驅逐更新過的塊時,才把它寫到緊接著的低一層中。
(1)優點:由于局部性,顯著得減少總線流量。
(2)缺點:增加了復雜性。
3.寫不命中的處理方法
(1)寫分配:加載相應的低一層中的塊到高速緩存中,然后更新這個高速緩存塊。
(2)非寫分配:避開高速緩存,直接把這個字寫在低一層中。
6.4.6一個真實的高速緩存層次結構的解剖
1.高速緩存既保存數據,也保存指令。
- ?只保存指令的:i-cache
- ?只保存程序數據的:d-cache
- ?既保存指令又保存數據的:統一的高速緩存
6.4.7高速緩存參數的性能影響
- 不命中率 = 不命中數量/引用數量
- 命中率 = 1 - 不命中率
- 命中時間
- 不命中處罰:因為不命中所需要的額外的時間
?
6.5編寫高速緩存友好的代碼
1.基本方法:
- 讓最常見的情況運行的快
- 在每個循環內部緩存不命中數量最小
2.重要問題:
- 對局部變量的反復引用是好的(時間局部性)
- 步長為1的引用模式是好的(空間局部性)
6.6存儲器山
每臺計算機都有表明他存儲器系統的能力特色的唯一的存儲器山。
——就是把存儲器系統的性能用關于時間和空間局部性的山表示。
想要達成的目的:使得程序運行在山峰而不是低谷
目標:利用時間局部性,使得頻繁使用的字從L1中取出;利用空間局部性,使得盡可能多的字從一個L1高速緩存行中訪問到
?
?
?
學習體會:
這一章雖然沒有很多需要動手操作的代碼編譯和實現,可是概念和理論太多,雖然書本編輯得很有條理,可是個人覺得還是需要保持極大地耐心去瀏覽和理解。參考資料
1.《深入理解計算機系統》書本和PDF第六章
2.http://www.cnblogs.com/lwr-/p/4908540.htm? 司馬歐陽博客
轉載于:https://www.cnblogs.com/20135223heweiqin/p/4916132.html
總結
以上是生活随笔為你收集整理的20135223何伟钦—信息安全系统设计基础第七周学习总结的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【随机过程】随机过程之泊松过程的推广
- 下一篇: SVN基于Maven的Web项目更新,本