20155311《信息安全系統設計基礎》第十三周學習總結
20155311《信息安全系統設計基礎》第十三周學習總結
教材學習內容總結
根據自己一個學期的學習,個人覺得本書的第六章存儲器層次結構比較重要。因為本章對整個計算機的硬件和系統都進行了說明,起到了承上啟下的作用,對以後章節的學習頗有幫助,我們可以通過編寫有良好空間和時間局部性的數據的程序能比主要從內存取數據的程序運行的快的多,使我們再以後編寫程序的效率上也有了大大的提高。
存儲技術
隨機訪問存儲器
隨機訪問存儲器分為:靜態RAM(SRAM)和動態RAM(DRAM),靜態RAM(SRAM)比動態RAM(DRAM)更快,但也貴很多。
靜態RAM:
- SRAM將每個位存儲在一個雙穩態的存儲器單元裏,每個單元是用一個六晶體管電路來實現的。
SRAM的特點:存儲器單元具有雙穩態特性,只要有電就會永遠保持它的值,幹擾消除時,電路就會恢復到穩定值。
動態RAM:
- DRAM的特點:每一位的存儲是對一個電容的充電,電容約為30×10-15F;對幹擾非常敏感,當電容的電壓被擾亂之後,它就永遠不會恢復了。暴露在光線下會導致電容電壓改變。
- 用途:數碼照相機和攝像機的傳感器
DRAM存儲不穩定的應對機制:存儲器系統必須周期性地通過讀出,或者重寫來刷新存儲器的每一位;使用糾錯碼。
SRAM和DRAM的區別:
- 只要有電,SRAM就會保持不變,而DRAM需要不斷刷新;
- SRAM比DRAM快;
- SRAM對光和電噪聲等幹擾不敏感;
SRAM比DRAM需要使用更多的晶體管,所以更昂貴。
傳統的DRAM:
- 行地址i:RAS
- 列地址j:CAS DRAM組織成二位陣列而不是線性數組的一個原因是降低芯片上地址引腳的數量。
二維陣列組織的缺點是必須分兩步發送地址,這增加了訪問時間。
存儲器模塊分類:
- 168個引腳的雙列直插存儲器模塊,以64位為塊傳送數據;
72個引腳的單列直插存儲器模塊,以32位為塊傳送數據。
增強的DRAM:
- 快頁模式DRAM(FPM DRAM):異步控制信號,允許對同一行連續的訪問可以直接從行緩沖區得到服務。
- 擴展數據輸出DRAM(EDO DRAM):異步控制信號,允許單獨的CAS信號在時間上靠的更緊密一點
- 同步DRAM(SDRAM):同步的控制信號,比異步的快
- 雙倍數據速率同步DRAM(DDR SDRAM):使用兩個時鐘沿作為控制信號,使DRAM速度翻倍。
- Rambus DRAM(RDRAM):一種私有技術
視頻RAM(VRAM):用在圖形系統的幀緩沖區中。
非易失性存儲器:ROM是以它們能被重編程的次數和對它們進行重編程所用的機制區分的
- 可編程ROM(PROM):只能被編程一次
- 可擦寫可編程ROM(EPROM):使用紫外線實現
- 電子可擦除PROM(EEROM):使用印制電路卡實現
閃存(FM):非易失性存儲設備
訪問主存:
- 讀事務:從主存傳送數據到CPU。
- 寫事務:從CPU傳送數據到主存。
總線:一組並行的導線,能攜帶地址、數據的控制信號。
讀事務語句:
movl A,%eax
寫事務語句:
movl %eax,A
磁盤存儲
磁盤構造:
- 由盤片構成,每個盤片有兩面或者稱為表面,表面覆蓋著磁性記錄材料。盤片中央有一個可以旋轉的主軸,使得盤片以固定的旋轉速率旋轉,通常是5400~15000轉每分鐘(RPM)
- 每個表面是由一組稱為磁道的同心圓組成;每個磁道被劃分成一組扇區;每個扇區包含相等數量的數據位(通常是512字節);這些數據編碼在扇區上的磁性材料中。扇區之間由一些間隙分隔開,這些間隙中不存在數據位。間隙存儲用來標識扇區的格式化位。
磁盤容量:
- 一個磁盤上可以記錄的最大位數稱為它的最大容量/容量。
- 磁盤容量的決定因素:記錄密度:磁道一英寸的段可以放入的位數;磁道密度:從盤片中心出發半徑上一英寸的段內可以有的磁道數;面密度:記錄密度與磁道密度的乘積。
計算磁盤容量的公式:磁盤容量 = 字節數/扇區 X 平均磁盤數/磁道 X 磁道數/表面 X 表面數/盤片 X 盤片數/磁盤
-磁盤操作:
磁盤用讀寫頭來讀寫存儲在磁性表面的位,而讀寫頭連接到一個轉動臂一端。尋道就是通過沿著半徑軸前後移動這個轉動臂,使得驅動器可以將讀寫頭定位在盤面上的任何磁道上。
- 磁盤以扇區大小的塊來讀寫數據。
- 訪問時間=尋道時間+旋轉時間+傳送時間;
- 尋道時間:移動傳送臂所需要的時間
旋轉時間:一旦讀寫頭定位你到了期望的磁道,驅動器等待目標扇區的第一個位旋轉到讀寫頭下。
磁盤控制器:
- 磁盤中一個小的硬件、固件設備,維護著邏輯塊號和實際物理磁盤扇區之間的映射關系。
- 三元組(盤面,磁道,扇區):唯一地表示了對應的物理扇區。
- 連接到I/O設備:
- 外圍設備互連(PCI):連接到CPU和主存 I/O總線的分類
- 通用串行總線(USB):包括鍵盤、鼠標、調制解調器、數碼相機、遊戲操縱桿、打印機、外部磁盤驅動器和固態硬盤等
- 圖形卡(適配器):負責代表CPU在顯示器上畫像素
- 主機總線適配器:使用特別的主機總線接口定義的通信協議
- 訪問磁盤:
- CPU使用一種存儲器映射I/O技術來向I/O設備發出命令,在使用存儲器映射I/O的系統中,地址空間中有一塊地址是為與I/O設備通信保留的,稱為I/O端口。當一個設備連接到總線時,它與一個或多個端口相連。
- 直接存儲器訪問:設備可以自己執行讀或者寫總線事務,而不需要
基本思想:中斷會發信號到CPU芯片的一個外部引腳上。這會導致CPU暫停它當前正在做的工作,跳轉到一個操作系統例程。這個程序會記錄下I/O已經完成,然後將控制返回到CPU被中斷的地方。
固態磁盤
- 固態硬盤是一種基於閃存的存儲技術。
- 一個SSD包由一個或多個閃存芯片和閃存翻譯層組成,閃存芯片替代傳統旋轉磁盤中機械驅動器;閃存翻譯層(一個硬件/固件設備)替代磁盤控制器,將對邏輯塊的請求翻譯成對底層物理設備的訪問。
- 性能特性:順序讀和寫(CPU按順序訪問邏輯磁盤塊)性能相當,順序讀比順序寫稍快一點;隨機順序訪問邏輯塊時,寫比讀慢一個數量級;讀寫性能差別是由底層閃存基本屬性決定的。
- 優點:由半導體構成,沒有移動的部件;隨機訪問時間比旋轉磁盤要快、能耗低、結實。
缺點:易磨損、更貴
存儲技術趨勢
- 不同的存儲技術有不同的價格和性能折中
- 不同存儲技術的價格和性能屬性以截然不同的速率變化著(增加密度從而降低成本比降低訪問時間更容易)
DRAM和磁盤的性能滯後於CPU的性能
局部性
- 局部性:傾向於引用鄰近與其他最近引用過的數據項的數據項,或者最近引用過的數據項本身,這種傾向性,被稱為局部性原理。
局部性包括時間局部性和空間局部性
時間局部性:被引用過一次的存儲器位置很可能在不遠的將來再被多次引用。 - 空間局部性:一個存儲器位置被引用了一次,那麽程序很可能在不遠的將來引用附近的一個存儲器位置。
有良好局部性的程序比局部性差的程序運行得更快 - 硬件層:局部性原理允許計算機設計者通過引入高速緩存存儲器來保存最近被引用的指令和數據項,從而提高對主存的訪問速度。
操作系統級:局部性原理允許系統使用主存作為虛擬地址空間最近被引用塊的高速緩存,用主存來緩存磁盤文件系統中最近被使用的磁盤塊。
應用程序中:例如,Web瀏覽器將最近被引用的文檔放在本地磁盤上。
對程序數據引用的局部性
步長為k的引用模式:一個連續變量中,每隔k個元素進行訪問。
順序引用模式:具有步長為1的引用模式
一般來說,隨著步長增加,空間局部性下降。 取指令的局部性
程序指令是存放在存儲器中的,CPU必須取出(讀出)這些指令。
代碼區別於程序數據的一個重要屬性是在運行時它是不能被修改的。當程序正在執行時,CPU只從存儲器中讀出它的指令,CPU絕不會重寫或修改這些指令。存儲器層次結構
- 存儲技術:不同的存儲技術的訪問時間差異很大,速度較快的技術每字節的成本要比速度較慢的技術高,而且容量較小,CPU和主存之間的速度差距在增大。
計算機軟件:一個編寫良好的程序傾向於展示出良好的局部性。
- 高速緩存存儲器
存儲器層次結構只有三層:CPU寄存器、DRAM主存儲器和磁盤存儲。 - 通用的高速緩存存儲器結構
- 每個存儲器地址有m位,形成M=2^m個不同的地址。
- 高速緩存組:S = 2^m個高速緩存組的數組
- 高速緩存行:B = 2^m字節的數據塊組成
- 有效位:指明這個行是否包含有意義的信息
標記位:唯一地標識存儲在這個高速緩存行中的塊,t = m -(b+s)
直接映射高速緩存
- 直接映射高速緩存:每個組只有一行的高速緩存。
- 高速緩存確定一個請求是否命中,然後抽取出被請求的字的過程,分為三步:(1)組選擇(2)行匹配(3)字抽取
- 組選擇:
- 高速緩存從w的地址中間抽取出s個組索引位
- 組索引位:一個對應於一個組號的無符號整數。
- 行匹配:
- 判斷緩存命中的兩個充分必要條件:該行設置了有效位;高速緩存行中的標記和w的地址中的標記相匹配
- 字選擇:確定所需要的字在塊中是從哪裏開始的。
組相聯高速緩存 - 組選擇:與直接映射高速緩存中的組選擇一樣,組索引位標識組。
行匹配和字選擇: - 把每個組看做一個小的相關聯存儲器,是一個(key,value)對的數組,以key為輸入,返回對應數組中的value值。高速緩存必須搜索組中的每一行,尋找有效的行其標記與地址中的相匹配。
形式是(key, value),用key作為標記和有效位去匹配,匹配上了之後返回value。 - 組中的任意一行都可以包含任何映射到這個組的存儲器塊,所以告訴緩存必須搜索組中的每一行。
- 組相連高速緩存中不命中時的行替換:
隨機替換 - 最不常使用策略LFU:替換在過去某個時間窗口內引用次數最少的那一行。
- 最近最少使用策略LRU:替換最後一次訪問時間最久遠的那一行。
- 全組相連高速緩存:
- 組選擇:只有一個組,沒有組索引位。
- 行匹配和字選擇:與組相連高速緩存是一樣的,但規模大很多,因此只適合做小的高速緩存,例如虛擬存儲系統中的翻譯備用緩沖器。
- 寫命中時,更新低一層中的拷貝的方法
- 直寫:立即將w的高速緩存塊協會到緊接著的低一層中;缺點:每次寫都會引起總線流量。
- 寫回:只有當替換算法要驅逐更新過的塊時,才寫到緊接著的低一層中。優點:符合局部性原理,顯著的減少總線流量;缺點:增加了復雜性,必須為每個高速緩存行維護一個額外的修改位
- 寫不命中的處理方法:
- 寫分配(對應寫回):加載相應的低一層中的塊到高速緩存中,然後更新這個高速緩存塊。
非寫分配(對應直寫):避開高速緩存,直接把這個字寫在低一層中。
本周代碼托管
托管截圖:
代碼托管鏈接
https://gitee.com/gaoziyun11/Linux/tree/master/week13
20155311《信息安全系統設計基礎》第十三周學習總結