存儲器層次結構
6.1 存儲技術
6.1.1 随機通路存儲器(RAM) 運存
·靜态(SRAM):用來作為高速緩存存儲器。将每個位存儲在一個雙穩态的存儲器單元裡。
并無限期的保持在兩個狀态或配置之一。其他任何狀态都是不穩定的。
在有幹擾的情況下,當幹擾消除電路恢複穩定。
·動态(DRAM):用來作為主存以及圖形系統的幀緩沖區。将每個位存儲為對一個電容的充電。
對幹擾十分敏感,當電容電壓被擾亂之後就不會恢複了。
靜态與動态的差別:
·隻要有供電SRAM就會保持不變,與DRAM不同不需要重新整理
·SRAM的存取比DRAM快
·SRAM對抗幹擾能力比DRAM強,而功耗更大
·傳統的DRAM
DRAM中的單元被分為d個超單元,超單元被分為r行c列的陣型,d=rc。每個超單元都由w個DRAM單元組成。

資訊通過外部引腳連接配接器流入和流出晶片
引腳可以傳送位元組date或者超單元位址addr
行位址i稱為RAS,列位址j稱為CAS,請求共享相同的位址引腳,中間會過渡一個内部行緩沖區
采用二位陣列而不是線性數組的優點是減少位址引腳的數量,缺點是必須分兩步發送位址增加通路時間
·增強的DRAM
快頁模式:傳統模式對同一行連續通路超單元需要發送多次請求,而快頁模式一次RAS或CAS後跟多個CAS請求可直接達到目的,進而時間更快。
擴充資料輸出:快頁模式的增強版,CAS信号在時間上靠的更緊
同步:同步比異步存儲器更快的輸出超單元的内容
雙倍資料速率同步:同步的增強模式,兩個時鐘沿作為控制信号,速度翻倍。
·非易失性存儲器(ROM) 記憶體
區分方式:被重新編寫的次數和重編所用的機制
·可程式設計ROM:隻能編寫一次
·可擦寫可程式設計ROM:多次編寫
·通路主存
資料流在處理器和DRAM中來回通過。讀事物指主存傳送資料到CPU;寫事物指CPU傳送資料到主存
I/O橋的作用:将系統總線的電子信号翻譯成存儲器總線的電子信号
讀寫事物基本分為三步:CPU讀位址→傳送資料字→存儲資料
6.1.2 磁盤存儲
·磁盤構造:由一個或多個盤片構成,盤片表面覆寫磁性記錄材料,通過中央的轉軸旋轉。
盤片上有同心圓圍成的磁道每個磁道劃分為一組扇區
·磁盤容量:可記錄的最大位數。決定因素:記錄密度、磁道密度、面密度
計算磁盤容量:
練習題6.2,可以根據公式算出,其中,有多少個柱面就代表有多少個磁道的集合
·磁盤操作:尋道:沿着半徑軸前後移動傳動臂,可以定位在任何磁道上。
對扇區的通路時間有三個主要的部分:(平均)
尋道時間:移動傳動臂所需的時間,依賴于讀寫頭以前的位置以及讀寫的速度
旋轉時間:驅動器等待目标扇區的第一個旋轉位的到達,依賴于讀寫頭到達目标磁道是盤面的位置和磁盤的旋轉速度
傳送時間:目标扇區第一個位位于讀寫頭下,依賴于旋轉速度和磁道的扇區數目
從公式可以看出:平均傳送時間 = 最大傳送時間 * 1/一個磁道的扇區數
·邏輯磁盤塊:維護着邏輯塊号和實際磁盤扇區之間的映射關系
三元組:盤面,磁道,扇區
·連接配接到I/O裝置:
·通用串行總線:連接配接USB總線,各種外圍I/O裝置。
·圖形卡;硬體和軟體邏輯,代表CPU在顯示器上畫像素。
·主機總線擴充卡:連接配接磁盤
·通路磁盤:CPU使用存儲器映射技術
6.1.3 固态硬碟:處理來自PCU的讀寫邏輯磁盤塊的請求
·順序讀比順序寫稍微快一點,但随即通路寫比讀慢一個數量級,原因:擦除塊需要時間;修改資料需要拷貝到新的塊。
·SSD的優缺點:由半導體儲存器構成,沒有移動的部件,是以通路速度快,能耗低,結實
但是容易磨損
6.2 局部性
時間局部性:被引用過的存儲器的位置在将來可能被多次引用 (同一存儲器)
空間局部性:被引用過的存儲器的位置在将來可能引用附近一個存儲器的位置 (不同存儲器)
6.2.1 對程式資料引用的局部性
·順序引用模式:步長為1的引用模式。随着步長的增加,空間局部性下降
6.2.2 取指令的局部性:程式指令是放在存儲器中的,CPU必去讀取指令,是以能評價程式關于取指令的局部性
CPU隻能讀取指令不能修改或重寫
·對于取指令來說,循環良好的時間和空間局部性,循環體越小,疊代次數越多,局部性越好。
練習題6.8 步長為1,遵循行優先順序來通路,從内到外。
練習題6.9 關鍵是明白數組在存儲器中排列的。
函數1,步長為1,始終遵循從内到外,空間性最好
函數2,N個結構中的每一個局部性最好,但是需要跳轉到下個結構。
函數3,結構内跳轉,結構與結構之間跳轉,是以空間性最差
6.3 存儲器層次結構
6.3.1 存儲器結構中的緩存
·中心思想:位于k層的更小更快的儲存設備作為位于k+1層更大更慢的儲存設備的緩存
資料總是以塊大小為傳送單元在上下層之間來回拷貝。離CPU越遠,使用的塊越大。
·緩存命中:需要k+1層的某個資料d,剛好在k層找到
·緩存不命中:覆寫現象:從k=1層取出包含d的塊到k層,如果k層滿則覆寫
6.3.2 小結
6.4 高速緩存存儲器
6.4.1 通用的高速緩存存儲器結構
·高速緩存包含S個高速緩存組2^s
·每個組包含E個高速緩存行
·每個行有2^b位元組的資料塊
是以高速緩存的大小 C = S * E * B
·練習題6.10 根據6-28的表推理計算
6.4.2 直接映射高速緩存:高速緩存行數隻有一行
·組選擇:高速緩存從w位的位址中抽取s組索引位
·行比對:确定是否有字w的一個拷貝存儲在組i包含的一個高速緩存行中。每個組隻有一行。
·字選擇:确定所需的字在快中從哪裡開始。塊偏移提供了所需的字的第一個位元組的偏移
·不命中時的行替換:從存儲器層次結構中的下一層取出被請求的塊
·綜合
·标記位和索引位連接配接起來唯一的标示了存儲器中的每個塊
·多個塊同一映射到一個高速緩存組
·映射到同一高速緩存組的塊由标記位唯一标示
·CPU執行一系列讀時都發生了什麼
1)讀位址0的字:緩存不命中,從第一層取出塊0并傳回存儲器位置0的内容
2)讀位址1的字:高速緩存命中,立即從高速緩存行的塊1中傳回
3)讀位址13的字:緩存不命中,是以塊6加載到組2
4)讀位址8的字緩存不命中,但是緩存行有效,标記位不比對,塊4加載到組0。
·沖突不命中:即使有良好的空間局部性且好俗緩存中也有足夠的空間,但是引用還是會導緻沖突不命中,因為:
這些塊被映射到了同一個高速緩存組,導緻速度下降
每組隻有一行
6.4.3 組相連的高速緩存
·組選擇:與直接映射高速緩存相同
·行比對和字選擇:高速緩存必須搜尋組中的每一行,尋找一個有效的行标記與位址中的标記相比對
!圖6-36 !
·不命中時對的行替換:替換政策就是随機選擇要替換的行
6.4.4 全相連高速緩存
·是有一個包含所有高速緩存行的組組成
·組選擇:注意位址中沒有組索引位,位址被劃分為标記和塊偏移
·行比對和字選擇:與組相連是規模大小的差別
6.4.5 有關寫的問題
·直寫:立即将w的高速緩存塊寫回到緊挨着的低一層
·寫回:盡可能的推遲存儲器更新直到替換算法要驅逐更新過的塊
·寫配置設定:加載相應的低一層中的塊到高速緩存中,然後更新這個高速緩存塊
6.4.7 高速緩存參數的性能影響
·不命中率:不命中數量/引用數量
·命中率:1-不命中率
·命中時間:高速緩存傳送一個字到CPU的時間
·不命中處罰:
·高速緩存大小的影響、塊大小的影響、相連度的影響、寫政策的影響。
6.5 編寫高速緩存友好的代碼
基本方法:讓最常見的情況運作得快
在每個循環内部緩存不命中數量最小
6.6 綜合:高速緩存對程式性能的影響
6.6.1 存儲山