620 likes | 720 Views
第七章. 輸入 / 輸出和儲存系統. 第七章 教學目的. 了解 I/O 系統如何運作 , 包括 I/O 的方法和架構 . 熟悉儲存媒體 , 並了解他們之間格式的不同 . 了解 RAID 如何增進磁碟的效能和考靠度 . 熟悉資料壓縮和應用的演算法. 7.1 簡介. 電腦系統的主要功能之一就是資料的儲存與攫取 . 遲緩的 I/O 效能會連帶的拖垮整個系統的效能 . 尤其是使用虛擬記憶體時更為顯著 . 世界上最快的處理器如果花很多時間在等待資料的話 , 那它的使用率就會很低. 7.2 Amdahl’s Law.
E N D
第七章 輸入/輸出和儲存系統
第七章教學目的 • 了解I/O系統如何運作, 包括 I/O 的方法和架構. • 熟悉儲存媒體, 並了解他們之間格式的不同. • 了解RAID如何增進磁碟的效能和考靠度. • 熟悉資料壓縮和應用的演算法.
7.1 簡介 • 電腦系統的主要功能之一就是資料的儲存與攫取. • 遲緩的 I/O 效能會連帶的拖垮整個系統的效能. • 尤其是使用虛擬記憶體時更為顯著. • 世界上最快的處理器如果花很多時間在等待資料的話, 那它的使用率就會很低.
7.2 Amdahl’s Law • 系統的整體效能和系統中所有元件互動的結果. • 當我們增進系統中最常使用元件的效能時, 那系統的效能就能有效的增進. • 這個概念可以由Amdahl’s Law來量化: • 這裡 S是整體增速; • f是較快元件的工作比例; • k是這個較快元件的增速.
7.2 Amdahl’s Law • Amdahl’s Law 讓我們可以很容意的估算出當我們昇級某系統元件時所能獲得的增速. • 在一個大型系統中, 假設我們能用$10,000將CPU昇級快 50%, 或者花$7,000讓磁碟快 250%. • 處理器花 70% 的時間在跑, 30% 的時間在等待磁碟服務. • 怎樣花最少錢得到最大的效益?
7.2 Amdahl’s Law • 換處理器能得到130% 的增速: • 換磁碟可以得到122% 的增速: • 處理器每 $333 可得1% 的增速, 而磁碟每$318 可得1% 的增速. 價格/效能是你唯一的考量嗎?
7.3 I/O 架構 • 我們將輸入/輸出定義為一個在外部裝置和主機間移動資料的子系統元件. • I/O 子系統包含: • 用作I/O的主記憶體區塊. • 搬移資料進出系統的匯流排. • 主機和週邊裝置的控制模組 • 外部元件的介面, 像是鍵盤和磁碟. • 主系統和週邊之間的纜線或通訊鏈路.
7.3 I/O 架構 這是一個 I/O 模型的組態
7.3 I/O 架構 • 一般I/O 有四種控制的方式. • 程式化 I/O 為每個I/O裝置保留一個暫存器. 每個暫存器會被輪詢看是否有資料到達. • 中斷-驅動I/O 允許CPU在I/O沒發出要求時去做別的事. • 直接記憶體接達 (Direct Memory Access (DMA)) 將 I/O 交給特殊的晶片來處理. • 通道式(Channel) I/O 使用專屬的 I/O 處理器.
7.3 I/O 架構 這是 DMA的組態. 注意到 DMA 和CPU共享匯流排. DMA的優先權比較高, 會從CPU竊取記憶體週期.
7.3 I/O 架構 • 超大型系統會使用通道式 I/O. • 通道式 I/O 由一或多個I/O 處理器構成 (IOPs), 它們控制不同的通道路徑. • 像終端機和印表機這種較慢的裝置會接到(multiplexed)一個快速的通道. • 在IBM的大型電腦中, 這種多工通道稱為 multiplexor channels, 較快的稱為 selector channels.
7.3 I/O 架構 • 通道式I/O和 DMA 的差別在於智慧型的IOPs. • IOP 會交涉協定, 發出裝置的命令, 翻譯儲存體的編碼方式到記憶體的編碼方式, 並且可以不靠CPU翻譯整個檔案或一群檔案. • 主機只要產生I/O運作所需的程式指令並且告訴IOP那裡可以找到它們.
7.3 I/O 架構 • 這是通道式 I/O 的組態.
7.3 I/O 架構 • I/O匯流排和記憶體匯流排不同, 是以非同步方式運作的. 裝置之間必需決定誰能獲得匯流排的使用權. • 當裝置要使用匯流排時, 會驅動匯流排控制線, 當有錯誤發生時會拉起信號, 當需要時會重置. • 資料線的數目就是匯流排的寬度. • 匯流排時脈會協調上面的運作, 並且提供bit cell 的邊界.
7.3 I/O 架構 匯流排如何連接磁碟.
7.3 I/O 架構 時序圖, 定義匯流排動作的細節.
7.4 磁碟技術 • 磁碟是一種可快速存取的大量持久性儲存體. • 磁碟機稱為隨機 (或直接)存取儲存裝置,因為資料區塊可以根據它們在磁碟上的位置來存取. • 這是和循序 比較所定義出的名詞(磁帶). • 下一張投影片有磁碟的組織圖.
7.4 磁碟技術 磁軌從0開始, 由外向內編號.
7.4 磁碟技術 • 硬碟盤會架在一個軸心上. • 讀/寫頭如圖架在磁臂上.
7.4 磁碟技術 • 讀寫頭下轉動的磁碟形成磁柱. • 資料區塊是由磁柱, 盤面和磁區來定址的.
7.4 磁碟技術 • 硬碟存取資料的速度取決於很多電子機械特性. • 搜尋時間(Seek time)是磁臂移到磁柱的時間. • 旋轉延遲(Rotational delay)是磁區轉到讀寫頭之下的時間. • Seek time + rotational delay = access time.
7.4 磁碟技術 • 傳輸率(Transfer rate)是資料從磁碟讀取的速度. • 平均延遲時間(Average latency)是旋轉速度的函數 : • 平均出錯時間(Mean Time To Failure (MTTF))是一個由實驗求出的統計值. • 它通常不會告訴我們磁碟的壽命, 設計壽命通常實在些. 書中圖7.11 有磁碟的規格範例.
7.4 磁碟技術 • 軟性 (彈性) 磁碟和硬碟的組成相同, 磁軌中心相同, 然後分成好幾個磁區. • 實體和邏輯的限制讓軟碟的密度比硬碟低很多. • DOS/Windows 軟體機主要的邏輯限制是檔案配置表 (file allocation table (FAT)). • FAT 會記錄每個磁區的情況: 可用, 使用中, 損壞, 保留, 等等.
7.4 磁碟技術 • 在一個標準的1.44MB軟碟, FAT 被限制在 512-byte 磁區. • FAT會有二份. • 軟碟每面有80個磁軌, 每個磁軌有18個磁區, 所以共有2880個磁區. 所以每筆 FAT 的記錄需要至少14 bits (214=4096 < 213 = 2048). • FAT 每筆記錄實際上有 16 bits, 稱為 FAT16.
7.4 磁碟技術 • 磁碟目錄會將邏輯檔名對應到實體磁碟位置. • 目錄包含有檔名和檔案的第一筆FAT記錄. • 如果一個檔案大小超過一個磁區(或叢集), FAT 會含有一個指標指向檔案的下一個叢集 (FAT入口). • FAT就像一個鏈結串列, 會一直讀到 <EOF> 算檔案結束.
7.4 磁碟技術 • 假設我們要從磁區121開始讀取, FAT片段如下. • 磁區 121, 124, 126, 和 122 會被讀取. 在每個磁區讀取後, 它的FAT入口會找到下一個磁區. • 在磁區122的FAT中發現檔案結束<EOF>. 讀這個檔案要多少次磁碟存取呢?
7.5 光碟片 • 光碟提供了大量且便宜的儲存空間. • 光碟的種類有 CD-ROM, DVD, 和 WORM. • 很多大型電惱的設備的輸出就是到光碟而不是紙張. 這稱為 COLD-- Computer Output Laser Disk. • 光碟片的壽命預估可達一百年. 其它的媒體頂多就只有60年而已.
7.5 光碟片 • CD-ROMs were designed by the music industry in the 1980s, and later adapted to data. • This history is reflected by the fact that data is recorded in a single spiral track, starting from the center of the disk and spanning outward. • Binary ones and zeros are delineated by bumps in the polycarbonate disk substrate. The transitions between pits and lands define binary ones. • If you could unravel a full CD-ROM track, it would be nearly five miles long!
7.5 光碟片 • CD-ROM的邏輯資料格式比去磁碟來得複雜許多. (細節詳見課文.) • 資料和音樂有不同的格式. • 資料格式有二階的錯誤修正. • 可以把 DVD想成是四倍容量的 CD. • CD-ROM最多可存 650MB 的資料, 而DVD 最多可以存 8.54GB. • DVD 有一天可能會把CD洮汰掉.
7.6 磁帶 • 第一代的磁帶比錄音帶寬沒多少, 容量則是在11MB. • 資料通常是寫在九個垂直的磁軌上:
7.6 磁帶 • 今天的磁帶是數位的, 並且有很多 gigabytes 的儲存空間. • 二種主流的錄製技術為S型和螺旋型掃描, 它們的差別在於讀寫頭是如何經過磁帶的. • S型錄製用在 digital linear tape (DLT) 和 Quarter inch cartridge (QIC) 磁帶系統. • Digital audio tape (DAT) 系統則用螺旋型掃描錄製. 下一張投影片有二種方法的介紹
7.6 磁帶 S型 螺旋掃描
7.7 RAID • RAID, 是獨立磁碟之冗餘陣列(Redundant Array of Independent Disks)的縮寫. 是為了解決磁碟可靠度, 成本和效能的問題而產生的. • 在RAID中, 資料是橫跨儲存在多個磁碟內, 另外會有多的(redundancy)磁碟用來做錯誤修正用 • RAID的發明人, David Patterson, Garth Gibson, 和 Randy Katz, 對 RAID 的分類已經適用了25年之久, 雖然中間有些地方已經重新被定義了.
7.7 RAID 0 • RAID Level 0, 也稱為 drive spanning, 能增進效能, 但沒有冗餘磁碟. • 資料寫入的區塊是橫跨所有磁碟陣列的 • RAID 0 的缺點就是可靠度比較低.
7.7 RAID 1 • RAID Level 1, 也稱為 disk mirroring, 會多一倍的 磁碟空間, 效能也很好. • 有二組相對的磁碟, 擁有相同的資料. • RAID 1 的缺點就是成本太高.
7.7 RAID 2 • RAID Level 2 的組態是由一組資料磁碟和一組 Hamming code磁碟所組成. • Hamming code 磁碟為資料磁碟提供了錯誤修正的能力. • RAID 2 的效能差, 而且成本相對也高.
7.7 RAID 3 • RAID Level 3 將帶狀位元分散在資料磁碟上, 並多了一個同位元磁碟. • 同位元就是資料位元的XOR結果. • RAID 3 並不適合商業用, 但對個人系統來說非常不錯.
7.7 RAID 4 • RAID Level 4 就像是將同位元磁碟加到RAID 0. • 資料寫入的區塊是分散在資料磁碟上的, 而同位元區塊則是寫到額外的磁碟. • 如果所有的區塊大小都一樣的話, 那RAID 4是可行的.
7.7 RAID 5 • RAID Level 5 是將同位元分散的RAID 4. • 當同位元分開儲存時, 某些存取就可以同時的進行了, 提供了不錯的效能和可靠度. • RAID 5 在很多商業系統上使用.
7.7 RAID 6 • RAID Level 6 在帶狀資料上有雙層的資料保護: Reed-Soloman 和 同位元. • 可以容忍二個磁碟發生問題. • RAID 6 寫的動作很頻繁, 但是錯誤容忍度很高.
7.7 RAID • 由很多磁碟陣列所組成的大型系統可以使用不同的RAID levels, 至於要用那一種就看資料重要的程度而定了. • 一個用來執行程式用的磁碟陣列(比方說檔案排序)是不須要高容錯性的. • 重要, 高讀寫性的檔案可以用RAID 0加上 RAID 1, 我們稱為 RAID 10. • 要記得數字越高的RAID level 並不表示 mean 越好. 這完全看磁碟是用在什麼地方, 儲存什麼資料.
7.8 資料壓縮 • 在儲存系統來說, 資料的壓縮非常重要, 因為比起沒壓縮而言, 它能讓系統儲存更多的資料. • 某些儲存裝置 (像磁帶) 會在寫入時自動的將資料先進行壓縮, 如此一來, 所用的磁帶量就比較少, 在備份時也就比較快. • 壓縮也減少了Internet上檔案的傳送時間和通訊頻寬.
7.8 資料壓縮 • 壓縮率 (compression factor或compression ratio)是壓縮效果好壞的一個度量標準: • 如果我們將一個 100KB 的檔案壓成40KB, 那壓縮率就是:
7.8 資料壓縮 • 壓縮是經由將資料多餘的部份去除所達成的效果, 但同時要確保資料的內容才行. • Entropy是一組bytes中所能含的資訊量. • 低entropy的資料比高 entropy的資料能有更高的壓縮率. • Entropy, H, 是一種符號出現頻率的函數. 它是編碼該訊息符號所需位元的平均權重 : H= -P(x) log2P(xi)
7.8 資料壓縮 • 整個訊息的entropy 就是個別符號 entropies的和. -P(x) log2P(xi) • 在長度為 l 的訊息中, 每個字元的平均冗餘為: P(x) li - -P(x) log2P(xi)
7.8 資料壓縮 • 舉例說明: HELLO WORLD! • 字母L出現在這個訊息的機率為 3/12 = 1/4. 編碼這個符號所需的位元數目為 -log2(1/4) = 2. • 利用我們的公式, -P(x) log2P(xi), 整個訊息的平均 entropy 為 3.022. • 這表示, 理論上每個字元編碼所需的最少位元數是 3.022. • 理論上, 這個訊息可以用37 bits 來傳送. (3.022 12 = 36.26)
7.8 資料壓縮 • Entropy是統計資料壓縮上的基本形式. • 有二種統計上的編碼演算法 Huffman coding和 arithmetic coding. • Huffman coding 以字母在訊息中出現的次數來建構出二元樹. • The binary symbols for each character are read directly from the tree. • 出現頻率越高的符號越接近樹根, 所編出來的碼就越短. 下頁有範例說明.
7.8 資料壓縮 HIGGLETY PIGGLTY POP THE DOG HAS EATEN THE MOP THE PIGS IN A HURRY THE CATS IN A FLURRY HIGGLETY PIGGLTY POP
7.8 資料壓縮 • 第二種統計編碼是 arithmetic coding, 它根據符號的機率將0和1之間切分成實數. • 課本中有整個過程的簡短說明. • Arithmetic coding 計算量很大, 而且有除0的危險性存在. • 不同系統的浮點表示方式也可能造成永遠不會產生中止條件(零值遺失)
7.8 資料壓縮 • 對大多數資料而言, 統計編碼有良好的壓縮率. • 它們主要的缺點在於需要讀取資料二次才能進行編碼. • 第一次要統計出現的機率, 第二次對訊息編碼. • 這種方式對儲存系統來說太慢而無法接受, 因為資料必需一次讀寫並壓縮才行.