1. 程式人生 > >20155234第九周《信息安全系統設計基礎》學習總結

20155234第九周《信息安全系統設計基礎》學習總結

拷貝 4.3 第一條 第六章 標識 增加 組成 包裝 通信

20155234第九周《信息安全系統設計基礎》學習總結

第六章 存儲器結構層次

CPU執行指令,而存儲器系統為CPU存放指令和數據。
存儲器系統是一個線性的字節數組。
實際上,存儲器系統是一個具有不同的容量、成本和訪問時間的存數設備的層次結構。靠近CPU的小的、成本和訪問時間的存儲設備的層次結構。
高速緩存存儲器是作為主存儲器的數據和指令的緩沖區域。
主存暫時存放存儲在容量較大的、慢速磁盤上的數據,而這些磁盤常常又作為存儲在通過網絡連接的其他機器的磁盤或磁帶的數據的緩沖區。
局部性的基本屬性:具有良好局部性的程序傾向於一次又一次地訪問相同的數據集合,或是傾向於訪問鄰近的數據集合。具有良好局部性的程序比局部性差的程序更多地傾向於從存儲器層次結構中較高層次處訪問數據,因此運行的更快。

6.1 存儲技術

  • 6.1.1 隨機訪問存儲
    隨機訪問存儲器分為兩類:靜態和動態。
    SRAM比DRAM更快,但也貴得多。
    SRAM用來作為高速緩存存儲器,既可以在CPU芯片上,也可以在片下。
    DRAM用來作為主存以及圖形系統的幀緩沖區。
    SRAM和DRAM
    SRAM將每個位存儲在一個雙穩態存儲器單元裏。它可以無限期的保存兩個不同的電壓配置。
    DRAM將每位存儲為對一個電容的充電。
    SRAM抗幹擾強,存取比DRAM快,更貴,耗功更大。
    傳統的DRAM
    一個DRAM芯片分為d個超單元切劃分成r行c列,每個超單元有w個DRAM單元組成。DRAM芯片芯片被連接到存儲控制器的電路,這個電路一次可以傳送w位到芯片或從芯片傳出w位。
    電路設計者將DRAM組織成二維列陣而不是線性數組的一個原因降低芯片上引腳的數量。
    DRAM芯片包裝在存儲器模塊中,它是插在主板的擴展槽上的。一個超單元存儲一個字節。
    非易失性存儲器
    如果斷電,SRAM和DRAM都會丟失他們的信息。
    PROM可編程一次
    EPROMM 1000次
    EEPROM 10的5次方
    閃存是一類非易失性存儲器,基於EEPROM,固態硬盤基於EEPROM。
    存儲在ROM設備中的程序稱為固件。
    訪問主存
    總線事物:從主存中傳送到CPU是讀事務,從CPU傳送到主存叫寫事務。
    總線是一組並行的導線,能攜帶地址、數據和控制信號。取決於總線的設計,數據和地址信號可以共享同一組導線,也可以使用不同的。
    系統總線連接CPU和I/O橋,存儲器總線連接I/O橋和主存。
    讀事務三個步驟:
    CPU將地址A放在系統總線上,I/O橋將信號傳遞到存儲器總線。其次主存感覺到存儲器總線上的地址信號,從存儲器總線上讀出地址,從DRAM取出數據字,並將數據寫道存儲器總線。
    I/O橋將存儲器總線信號翻譯成系統總線信號,然後沿著系統總傳遞。
    最後,CPU感覺到系統總線上的數據,並將數據拷貝到相應的寄存器上。
    寫事務三個步驟:
    CPU將地址放到系統總線上,存儲器從存儲總線上讀出地址,並等待數據到達。
    CPU將相應寄存器的數據字拷貝到系統總線。
    主存從存儲器總線上讀出數據字,並將這些位存儲到DRAM中。
  • 6.1.2 磁盤存儲
    磁盤是由一個或多個盤片組成,他們被封裝在一個密封的包裝裏,每個盤片有兩個表面,每個表面有一組成為磁道的同心圓,每個磁道被劃分為一組扇區,每個扇區包含相等數量的數據位。
    磁盤容量=扇區字節數扇區數磁道數表面數盤片數
    Taccess=Tavg seek +Tavg rotation +Tavg transfer
    4.連接到I/O設備
    外圍設備通過I/O總線連接到CPU和主存。
    通用串行總線控制器是連接到USB設備的中轉機構。USB是廣泛使用的一個標準。
    圖形卡(或適配器)也連接I/O總線上。
    主機總線適配器將一個或者多個磁盤連接在I/O總線上,使用的是一個特別的主機總線接口定義的通信協議。
    訪問磁盤
    CPU使用一種稱為存儲器映射I/O的技術來向I/O設備發出命令,在使用存儲映射I/O的系統中,地址空間有一塊地址是為與I/O設備通信保留的。每個這樣的地址稱為端口。當一個設備連接到總線時,它與一個或者多個端口相關聯。
    磁盤讀
    第一條指令是發送一個命令字,告訴磁盤發起一個讀,同時還發送了其它的參數。
    第二條指令應該讀的邏輯塊號。
    第三條指令指明應該存儲盤扇區的內容的主存地址。
    邏輯塊號翻譯一個扇區地址,然後將內容傳送到主存,而不需要CPU幹涉,這個過程稱為直接存儲器訪問。這種數據傳送稱為DMA傳送。
    磁盤扇區的被容被安全存儲在主存以後,磁盤控制器通過給CPU發送一個中斷信號來通知CPU。
  • 6.2 局部性
    良好的計算機程序具有良好的局部性。
    局部性有兩種不同的形式:時間局部性和空間局部性。
    時間局部性:被引用過一次的寄存器位置,在不久的將來多次被引用。
    空間局部性:如果一個存儲器位置被引用了一次,那麽很可能在不遠的將來引用附近的一個存儲器位置。
  • 6.2.1、對程序數據引用的局部性
    步長為k的引用模式:一個連續變量中,每隔k個元素進行訪問,就被稱為步長為k的引用模式。
    步長為1的引用模式:就是順序訪問一個向量的每個元素,有時也被稱為順序引用模式,它是程序中 空間局部性常見和重要的來源。一般來說,隨著步長增加,空間局部性下降。
  • 6.2.2、取指令的局部性
      程序指令是存放在存儲器中的,CPU必須取出(讀出)這些指令。
      代碼區別於程序數據的是在運行時是不能被修改的。
  • 6.2.3、局部性小結
     一個程序中局部性的簡單原則:
     重復引用同一個變量的程序有良好的時間局部性
     對於具有步長為k的引用模式的程序,步長越小,空間局部性越好
     對於取指令來說,循環有好的時間和空間局部性。循環體越小,循環叠代次數越多,局部性越好。
  • 6.3存儲器層次結構
    用相互補充的性質想到的一種組織存儲器系統的方法:存儲器層次結構。一般而言,從高層往底層走,存儲設備變得更慢、更便宜和更大。
    即:每層存儲設備都是下一層的“緩存”
  • 6.3.1 存儲器層次結構中的緩存
    高速緩存是一個小而快速的存儲設備,作為存儲在更大、也更慢的設備中的數據對象的緩沖區域。使用高速緩存的過程稱為緩存。
    存儲器層次結構的中心思想是:層次結構中的每一層都緩存來自較低一層的數據對象。
    第k+1層的存儲器被劃分為連續的數據對象片,稱為塊。每個塊都有唯一的地址和名字。類似第k層也被劃分為較少的塊的集合,塊的大小與k+1層是一樣的,第k層的緩存包含第k+1層塊的一個子集的拷貝。
    數據總是以塊大小為傳送單元在第k層與第k+1層之間來回拷貝。任一對相鄰的層次之間塊大小是固定的,但是其他的層次對之間可以有不同的塊大小。
    緩存命中:當程序需要第k+1層的某個數據對象d時,首先在當前存儲在第k層的一個塊中查找d,如果d剛好緩存在第k層中,就稱為緩存命中。該程序直接從第k層讀取d,比從第k+1層中讀取d更快。
    緩存不命中:即第k層中沒有緩存數據對象d。這時第k層緩存會從第k+1層緩存中取出包含d的那個塊。如果第k層緩存已滿,就可能會覆蓋現存的一個塊。
    決定該替換哪個塊又緩存的替換策略控制,如隨機替換策略,最近最少被使用LRU替換策略。
    緩存不命中的種類
    1、強制性不命中/冷不命中
    第k層的緩存為空(稱為冷緩存),任何訪問都會不命中。這種通常是短暫的事件
    2、沖突不命中
    放置策略為將第k+1層的塊限制放置在第k層塊的一個小的子集中。
    3、容量不命中
    當工作集的大小超過緩存的大小時,緩存會經歷容量不命中,就是說緩存太小了,不能處理這個工作集。
    緩存管理
    存儲器層次結構的本質是每一層存儲設備都是較低一層的緩存。在每一層上,某種形式的邏輯必須管理緩存,而管理緩存的邏輯可以是硬件、軟件,或者兩者的結合。
  • 6.3.2存儲器層次結構概念小結
     基於緩存的存儲器層次結構行之有效,因為較慢的存儲設備更便宜。
     利用時間局部性
     利用空間局部性
  • 6.4 高速緩存存儲器
    CPU和主存之間差距太大,插入一個小的SRAM高速緩存存儲器,稱為L1高速緩存:2-4個時鐘周期。L2高速緩存:10個時鐘周期。L3高速緩存:30~40個時鐘周期
  • 6.4.1通用的高速緩存存儲器結構
    高速緩存的結構可以用元組(S,E,B,m)來描述:
    S:這個數組中有S=2^s個高速緩存組
    E:每個組包含E個高速緩存行
    B:每個行是由一個B=2^b字節的數據塊組成的
    m:每個存儲器地址有m位,形成M=2^m個不同的地址
    有效位:每個行有一個有效位,指明這個行是否包含有意義的信息
    標記位:t=m-(b+s)個,唯一的標識存儲在這個高速緩存行中的塊
    組索引位:s
    塊偏移位:b
    高速緩存的結構將m個地址劃分成了t個標記位,s個組索引位和b個塊偏移位。
    高速緩存的大小/容量C指所有塊的大小的和,不包括標記位和有效位,所以:
    C=SEB
  • 6.4.2直接映射高速緩存
    每個組只有一行的高速緩存稱為直接映射高速緩存。
    高速緩存確定一個請求是否命中,然後抽取出被請求的字的過程:1、組選擇2、行匹配3、字抽取
    直接映射高速緩存中的組選擇
    從地址中抽取s個組索引位,解釋成一個對應於一個組號的無符號整數,選擇相應組。
    直接映射高速緩存中的行匹配
    直接映射高速緩存每個組只有一行,當設置了有效位並且行中的標記與地址中的標記相匹配時,我們得到緩存命中。
    直接映射高速緩存中的字選擇
    塊偏移位b提供了所需要的字的第一個字節的偏移。
    直接映射高速緩存中不命中時的行替換
    緩存不命中時,需要從下一層取出被請求的塊存儲在組索引位指示的組中的高速緩存行中。若組中都是有效行時。需要替換,直接映射高速緩存每組只有一行,就可直接替換。
    綜合:運行中的直接映射高速緩存
    直接映射高速緩存中的沖突不命中
    當程序訪問大小為2的冪的數組時,直接映射高速緩存中通常會發生沖突不命中。
  • 6.4.3 組相聯高速緩存
    一個 1<E<C/B 的高速緩存通常稱為E路組相聯高速緩存。
    組相聯高速緩存中的組選擇
    與直接映射高速緩存的組選擇一樣,組索引位標識組
    組相聯高速緩存中的行匹配和字選擇
    形式是(key, value),用key作為標記和有效位去匹配,匹配上了之後返回value。
    重要思想:組中的任意一行都可以包含任何映射到這個組的存儲器塊,所以告訴緩存必須搜索組中的每一行。
    判斷匹配的標準依舊是兩個充分必要條件:
    1.有效
    2.標記匹配
    四、組相聯高速緩存中不命中時的行替換
    緩存不命中時,高速緩存從存儲器中取出包含這個字的塊,替換行時,如果沒有空行,按照替換策略替換。復雜的局部性利用了局部性原理,以使在比較近的將來引用被替換的行的幾率最小。
  • 6.4.4 全相聯高速緩存(E=C/B)
    一個全相聯高速緩存由一個包含所有高速緩存行的組(即E=C/B)組成的。
    全相聯高速緩存中的組選擇
      只有一個組,地址中沒有組索引位,地址只被劃分成了一個標記和一個塊偏移。
    全相聯高速緩存中的行匹配和字選擇
    與前面的一樣,區別主要是規模大小的問題
    全相聯高速緩存只適合做小的高速緩存,例如虛擬存儲器系統中的翻譯備用緩存器TLB。
  • 6.4.5 有關寫的問題
    更新低一層中的拷貝的方法:
      (1)直寫:立即將w的高速緩存塊協會到緊接著的低一層中
            缺點是每次寫都會引起總線流量。
      (2)寫回:只有當替換算法要驅逐更新過的塊時,才寫到緊接著的低一層中
            優點:由於局部性,寫回能顯著的減少總線流量
            缺點:增加了復雜性,必須為每個高速緩存行維護一個額外的修改位
    寫不命中的處理方法
      (1)寫分配:加載相應的低一層中的塊到高速緩存中,然後更新這個高速緩存塊。
      (2)非寫分配:避開高速緩存,直接把這個字寫在低一層中。
  • 6.4.6 真實的高速緩存層次結構:
    既保存指令又包括數據的高速緩存稱為統一的高速緩存。
  • 6.4.7 高速緩存參數的性能影響
    有許多指標來衡量高速緩存的性能:
      不命中率
      命中率
      命中時間
      不命中處罰

    代碼托管

    結對搭檔

    201555226

    感想

    本次的內容是學習第六章,學習了各種不同的存儲器,了解了不同級別的存儲器之間的區別,理解為什麽計算機最後采用金字塔形狀的存儲結構。

    學習進度條

    代碼行數(新增/累積) 博客量(新增/累積)
    目標 5000行 30篇
    第一周 6/6 1/1
    第三周 150/156 2/3
    第四周 77/233 1/4
    第七周 1988/2221 2/6
    第九周 642/2863 2/6

    參考資料

  • 《深入理解計算機系統V3》學習指導

20155234第九周《信息安全系統設計基礎》學習總結