1. 程式人生 > >2017-2018-1 20155315 《信息安全系統設計基礎》第14周學習總結

2017-2018-1 20155315 《信息安全系統設計基礎》第14周學習總結

第一個 包括 磁盤驅動器 基礎 一點 維護 cti 存儲 移動

2017-2018-1 20155315 《信息安全系統設計基礎》第14周學習總結

教材學習內容總結

  • 上一周我學習了I/O設備,這一周我學習了第六章,知道了內在的存儲設備及磁盤構造,也更明白程序運行的道理,對我之後設計程序有很大的幫助。
  • 在簡單模型中,存儲器系統是一個線性的字節數組,而CPU能夠在一個常數時間內訪問每個存儲器位置。實際上,存儲器系統是一個具有不同容量、成本和訪問時間的存儲設備的層次結構。CPU寄存器保存著最常用的數據。靠近CPU的小的、快速的高度緩存存儲器作為一部分存儲在相對慢速的主存儲器中的數據和指令的緩沖區域。 存儲器層次結構是可行的。

RAM

  • SRAM(靜態):SRAM將每個位存儲在一個雙穩態的存儲單元裏。只要有電,他就會永遠保持他的值。即使有幹擾來擾亂電壓,當幹擾消除時,電路就會恢復穩定值。
  • DRAM(動態):DRAM將每個位存儲為對一個電容的充電。與SRAM不同,DRAM存儲單元易受幹擾。當電容的電壓被擾亂後,他就永遠不會恢復了。
  • 特性:
    • 只要供電SRAM就會保持不變。
    • SRAM的存取比DRAM快。
    • SRAM對幹擾不敏感。
    • SRAM單元比DRAM單元使用更多晶體管,密度較低,更貴,功耗更大。
  • 傳統的DRAM
    • 行地址i:RAS
    • 列地址j:CAS
    • DRAM組織成二位陣列而不是線性數組的一個原因是降低芯片上地址引腳的數量。
    • 二維陣列組織的缺點是必須分兩步發送地址,這增加了訪問時間。
  • 存儲器模塊
    • DRAM芯片包裝在存儲器模塊中,他是插到主板的擴展槽位上的。常見的包括168個引腳的雙列直插存儲器模塊,以64位為塊傳送數據到存儲控制器和從存儲控制器傳出數據,還包括72個引腳的單列直插存儲器模塊,以32位為塊傳送數據。
    • 通過將多個存儲器模塊連接到存儲控制器,能夠聚合主存,當控制器收到一個地址A時,控制器選擇包含A的模塊k,將A轉換為它的(i, j)的模式,並將(i, j)發送到模塊k。
  • 增強的DRAM
    • 快頁模式DRAM(FPM DRAM):異步控制信號,允許對同一行連續的訪問可以直接從行緩沖區得到服務。
    • 擴展數據輸出DRAM(EDO DRAM):異步控制信號,允許單獨的CAS信號在時間上靠的更緊密一點。
    • 同步DRAM(SDRAM):同步的控制信號,比異步的快。
    • 雙倍數據速率同步DRAM(DDR SDRAM):使用兩個時鐘沿作為控制信號,使DRAM速度翻倍。
    • Rambus DRAM(RDRAM):一種私有技術。
    • 視頻RAM(VRAM):用在圖形系統的幀緩沖區中。

ROM,非易失性存儲器

  • 如果斷電,DRAM和SRAM會丟失他們的信息,所以他們是易失的。
  • 非易失性存儲器,即使是在關電以後,也仍然保存著他們的信息。他們整體上都稱為只讀存儲器(ROM)。
  • ROM以他們能夠被重新編程的次數和對他們進行重編程所用的機制來區分的。
  • PROM 只能被編程一次。
  • 可擦可編程ROM,有個透明的石英窗口,允許光到達存儲單元。
  • 閃存,是一類非易失性存儲器,基於EEPROM,他已經成為了一種重要的存儲技術。
  • 存儲在ROM中的程序通常稱為固件。

磁盤

磁盤是由盤片構成的。每個盤片有兩個盤面,表面覆蓋著磁性記錄材料。盤片中央有個可以旋轉的主軸,使得盤片以固定的旋轉速率旋轉。

  • 旋轉速率:通常5400~15000/min
  • 磁道:同心圓們
  • 扇區:每個磁道被劃分為一組扇區
  • 數據位:每個扇區包含相等數量的~,通常為512字節
  • 間隙:存儲用來標識扇區的格式化位
  • 磁盤驅動器-磁盤-旋轉磁盤
  • 柱面:所有盤片表面上到主軸中心的距離相等的磁道的集合。

  • 磁盤容量是由以下技術因素決定的:記錄密度、磁道密度、面密度
    • 記錄密度:磁道一英寸的段可以放入的位數。
    • 磁道密度:從盤片中心出發半徑上一英寸的段內可以有的磁道數。
    • 面密度:記錄密度與磁道密度的乘積。
    • 磁盤容量計算公式:
      技術分享圖片

磁盤操作

  • 磁盤以扇區大小的塊來讀寫數據。
  • 對扇區的訪問時間有三個主要部分組成:
    • 尋道時間:移動傳動臂所用的時間。依賴於讀/寫頭以前的位置和傳動臂在盤面上移動的速度。通常為3-9ms,最大可達20ms。
    • 旋轉時間:驅動器等待目標扇區的第一個位旋轉到讀/寫頭下,依賴於盤面位置和旋轉速度。最大旋轉延遲=1/RPM X 0secs/min (s),
      平均旋轉時間是最大值的一半。
    • 傳送時間:依賴於旋轉速度和每條磁道的扇區數目,平均傳送時間= 1/RPM x 1/(平均扇區數/磁道) x 60s/1min,訪問一個磁盤扇區內容的平均時間為平均尋道時間,平均旋轉延遲和平均傳送時間之和。
      訪問一個磁盤扇區的512字節的主要時間在於尋道和旋轉延遲。訪問時間:磁盤>DRAM>SRAM

邏輯磁盤塊

  • 現代磁盤構造復雜,有多個盤面,這些盤面上有不同的記錄區。為了對操作系統隱藏這樣的復雜性,現代磁盤將它們的構造簡化為一個b個扇區大小的邏輯塊的序列,編號為0,1,2,...b-1。磁盤中有一個小的硬件/固件設備,稱為磁盤控制器,維護著邏輯塊號的和實際(物理)磁盤扇區之間的映射關系。

局部性

  • 循環體裏的指令是按照連續的存儲器順序執行的,因此循環有良好的空間局部性,因為循環體會被執行多次,所以它也有良好的時間局部性。
  • 代碼區別於程序數據的一個重要屬性時在運行時是不能被修改的。
  • 評價一個程序中局部性的簡單原則:
    • 重復引用同一個變量的程序有良好的時間局部性。
    • 對於具有步長為k的引用模式的程序,步長越小,空間局部性越好;在存儲器中以大步長跳來跳去的程序空間局部性會很差。
    • 對於取指令來說,循環有很好的時間和空間局部性。循環體越小,循環叠代次數越多,局部性越好。
    • 有良好局部性的程序比局部性差的程序運行得更快
  • 概括來說,基於緩存的存儲層次結構行之有效,是因為較慢的存儲設備比較快的存儲設備更便宜,還因為程序傾向於展示局部性。
    • 利用時間局部性

      由於時間局部性,同一數據對象可能會被多次使用。因為緩存比第一層的存儲設備更快,對後面的命中的服務回避最開始的不命中的更快。

    • 利用空間局部性

      塊通常包含有多個對象。由於空間局部性,我們會期望後面對該快中其他對象的訪問能夠補償不命中後復制該塊的花費。
      現代系統中到處都使用了緩存。

存儲器層次結構——緩存

技術分享圖片

  • 對於每個k,位於k層的更快更小的存儲設備作為位於(k+1)層的更大更慢的存儲設備的緩存。
  • 第(k+1)層的存儲器被劃分成連續的數據對象片,稱為塊;數據總是以塊大小為傳送單元在相鄰兩層之間來回拷貝的;在任何時刻,第k層的緩存包括第(k+1)層塊的一個子集的拷貝。
  • 緩存命中及緩存不命中
    • 緩存命中:當程序需要第(k+1)層的數據對象d的時候,首先會在第k層找d;如果d剛好緩存在第k層,那麽就叫做緩存命中;反之,不命中
    • 如果緩存不命中,那麽第k層緩存就從第(k+1)層取出包含該數據的塊,有可能會覆蓋現有的塊。覆=決定替換哪個塊是由緩存的替換策略來控制的;例如,一個具有隨機替換策略的緩存會隨機選擇;而LRU替換策略會選擇被訪問時間距今最遠的塊
  • 緩存管理
    • 在每一層上,某種形式的邏輯必須管理緩存;
    • 可以是硬件也可以是硬件、軟件的結合。
  • 高速緩存存儲器(S,E,B,m)
    • 作用:連接CPU和主存
    • 每個存儲器地址有m位,形成M=2^m個不同地址。這m位被劃分成t個標記位、s個組索引位和b個塊偏移位。
    • 一個機器的高速緩存被組織成S=2^s個高速緩存組的數組;每個數組包含E個高速緩存行;每行由一個B=2^b字節的數據塊、一個有效位(指明這個行是否包含有效信息)、t=m-(b+s)個標記位(唯一標識存儲在這個高速緩存行中的塊)組成。
    理解:從高向低來看,M=2^m個地址平均分給S=2^s個組,每組獲得2^(m-s)個地址,即(m-s)位;減去t位用於標記塊,還有2^(m-t-s)個地址可以表示一個塊,也就是說,一個塊可以有2^(m-t-s)個字節的信息。
  • 直接映射高速緩存
    • 高速緩存確定一個請求是否命中,然後抽搐被請求字的過程,分為:組選擇,行匹配,字抽取
    • 組選擇:從w的地址中抽取組索引;這些位被解釋成對應於一個組號的無符號整數
    • 行匹配:對於直接映射高速緩存,行匹配是容易而且快的;因為每個組只有一行
    • 字匹配:塊偏移提供的是這個字的第一個字節是從哪個位置開始的

緩存不沖突的種類

  • 強制性不命中/冷不命中:即第k層的緩存是空的(稱為冷緩存),對任何數據對象的訪問都不會命中。通常是短暫事件,不會在反復訪問存儲器使得緩存暖身之後的穩定狀態中出現。
  • 沖突不命中:由於一個放置策略:將第k+1層的某個塊限制放置在第k層塊的一個小的子集中,這就會導致緩存沒有滿,但是那個對應的塊滿了,就會不命中。
  • 容量不命中:當工作集的大小超過緩存的大小時,緩存會經歷容量不命中,就是說緩存太小了,不能處理這個工作集。

練習題

6.1

  • 接下來,設r表示一個DRAM陣列中的行數,c表示列數,br表示行尋址所需的位數,bc表示列尋址所需的位數。對於下面每個DRAM,確定2的冪數的陣列維數,使得max(br,bc)是對陣列的行或列尋址所需的位數中較大的值。
  • 答案
組織 r c br bc max(br,bc)
16x1 4 4 2 2 2
16x4 4 4 2 2 2
128x8 16 8 4 3 4
512x4 32 16 5 4 5
1024x4 32 32 5 5 5

6.2

  • 計算這樣一個磁盤的容量,它有2個盤片,10000個柱面,每條磁道平均有400個扇區,而每個扇區有512個字節。
  • 答案:

    磁盤容量=512字節/扇區x400扇區/磁道x10000磁道/表面x2表面/盤片x2盤片/磁盤
        =8192000000字節
        =8.192GB

6.3

  • 估計訪問下面這個磁盤上一個扇區的訪問時間(以ms為單位):
參數
旋轉速率 15000RPM
Tavgseek 8ms
每條磁道的平均扇區數 500
  • 答案:

    平均旋轉時間為:1/2x(60s/15000RPM)x1000ms/s=2ms
    平均傳送時間為:(60s/15000RPM)x1/500扇區/磁道x1000ms/s=0.008ms
    總的預計訪問時間為:8ms+2ms+0.008ms=10ms

教材學習中的問題和解決過程

問題1: 書本402頁中圖6-4所示,如果示例的128位DRAM被組織成一個16個超單元的線性數組,地址為0~15,為什麽芯片會需要4個地址引腳而不是2個?

解決1:

DRAM組成二維陣列而不是一維線性數組的一個原因是降低芯片上地址引腳的數量。

例如,16個超單元組成的陣列,二維和一維分別需要2個和4個地址引腳。二維組織的缺點是,地址必須分兩步發送,增加了訪問時間。(一個行地址,一個列地址)。

問題2: 為什麽要用中間的位作為組的索引,而不是組索引,標記位,和偏移量來定義地址

解決2:
如果用高位做索引,那麽一些連續的內存塊就會映射到相同的高速緩存塊。這樣的話,順序掃描一個數組的元素,任何時刻,高速緩存都只保存著一個塊的大小的數組內容,對高速緩存的使用效率很低。

代碼托管

(statistics.sh腳本的運行結果截圖)
技術分享圖片

結對及互評

其他(感悟、思考等,可選)

學習了磁盤管理之後,對一些較為簡單的知識如存儲覆蓋等的理解都更深入了,對我之後處理程序也有幫助。

學習進度條

代碼行數(新增/累積) 博客量(新增/累積) 學習時間(新增/累積) 重要成長
目標 5000行 30篇 400小時
第一周 5/5 1/1 25/25
第二周 236/241 3/4 30/55
第三周 169/410 2/6 30/85
第四周 169/410 2/8 50/135
第五周 1177/1587 2/10 30/165
第六周 1826/3413 2/12 30/195
第七周 977/4390 3/15 30/225
第八周 977/4390 2/17 30/255
第九周 977/4390 2/19 30/285
第十周 977/4390 0/15 30/315
第十一周 977/4390 2/21 25/335
第十二周 977/4390 0/21 25/360
第十三周 977/4390 2/23 30/390
第十四周 865/5255 1/24 30/420
  • 計劃學習時間:20小時
  • 實際學習時間:30小時

(有空多看看現代軟件工程 課件
軟件工程師能力自我評價表)

參考資料

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

2017-2018-1 20155315 《信息安全系統設計基礎》第14周學習總結