2008年9月22日 星期一

淺談硬碟控制介面與硬碟

淺談硬碟控制介面與硬碟
到目前為止,硬碟仍是大容量儲存裝置中效能與價格最理想的儲 存設備。但是,控制介面的效能(Performance)與連接能力 (Connectivity)如何(能接幾顆硬碟)?以及,就一顆硬碟而言,系 統所能存取的最大容量是多少?一個分割區(Partition)最大是多少 ?...等等考量,都是使用者在選擇硬碟,並考慮其與硬碟控制 介面卡及作業系統三者的搭配時,所必須仔細思考的問題。
圖一為DOS系統經由INT 13H中斷呼叫存取IDE或SCSI硬碟的模型, 以下筆者將藉由此一模型來說明上述的問題。
┌───┐ INT 13H│ │←→BIOS←→ATA←→IDE DISK DOS←──→│DEVICE│ │DRIVER│ │ │←→SCSI BIOS←─→SCSI DISK └───┘
圖一 DOS呼叫INT 13H存取IDE或SCSI硬碟
IDE控制介面
IDE是Integrated Drive Electronics的簡稱,它是Computer Association of Manufactures所發展的一種叫ATA(AT Attachement)的規範。這是一種直接將週邊裝置的控制器放在週邊 裝置上,也就是說把控制硬碟的電子電路整合在硬碟中,而介面卡 上只有簡單的緩衝器及傳輸控制邏輯的設計。如此,就可簡化介面 卡的線路,進而加快傳輸速率並降低製造成本。其最大傳輸速率為 3.33M Bytes/Sec。
IDE控制介面是以CHS(Cylinder-Head-Sector)的方式定址,並且 是以16-bit 代表cylinders,4-bit代表heads,8-bit代表sectors ,所以這種ATA/IDE介面最多可驅動65536 cylinders,16 heads與 255 sectors。另外,BIOS是以 10-bit代表cylinders,8-bit代表 heads,6-bit代表sectors,所以最多可驅動1024 cylinders,255 heads與63 sectors。根據圖一,當DOS使用INT 13H服務程式時,實 際上所能驅動的CHS數目及最大容量將如表一所示。
------------------------------------------------- ATA/IDE BIOS COMPROMISE ------------------------------------------------- 最多Sectors/Track 255 63 63 Head數 16 255 16 Cylinder數 65536 1024 1024 最大容量 127.5GB 7.84GB 504MB -------------------------------------------------
表一  BIOS以CHS閬所能存取硬碟的最大容量
而在連接能力方面,IDE控制介面提供一個IDE prot ,該port最 多只可串接兩個IDE裝置。
Enhanced IDE控制介面
Enhanced IDE控制介面就是ATA-2控制介面。此介面改用 LBA(Logical Block Addressing)的方式定址,也就是將CHS的定址 方式依下列的轉換演算法( Translation Algorithm)轉換為邏輯區 塊的定址方式。 LBA=[(cylinder * heads_per_cylinder + heads)* sectors_per_track] + (sector-1)
請注意:ATA/IDE與BIOS都把自己的CHS定址方式轉換成LBA定址方 式,透過LBA 建立ATA/IDE與BIOS溝通的橋樑,而非如前述ATA/IDE 與BIOS各自拿著自己的CHS不放,那只好走上衝突與妥協一途。
LBA使用28bit管理硬碟上的每一個位置(就是sector),所以最大 可以管理到 128GB(約228 sectors)的容量。把ATA/IDE與BIOS個別 的最大CHS轉換成LBA ,或由表一的最大容量即可看出,若ATA/IDE 與BIOS皆以LBA方式定址,則 IDE單顆硬碟的最大容量為7.84GB,瓶 頸還是出在BIOS。
Enhanced IDE控制介面的四個特點(當然要作業系統及BIOS都支援 )如下:
‧高容量位址(High Capacity Addressing): 以LBA的方式定址,可存取硬碟大於528MB。 ‧高資料傳輸率(Fast Data Transfer Rate): 資料傳輸模式為PIO(Programmed I/O) Mode 3或Multi-word DMA Mode 1 ,PIO Mode 3的資料傳輸率為11.1MByte/sec,而 Multiword DMA Mode 1 為13.3MByte/sec,BIOS必須支援至少 其中一種傳輸模式,並且作業系統也要支援才行(所謂傳輸模式 即驅動硬碟的方式,容後說明)。
‧兩個IDE port(Dual ATA Host Adapter): 提供第二個IDE port,且使用IRQ15。
‧非硬碟的ATA週邊 (Non-Hard Disc ATA Peripherals): 對非硬碟的ATA週邊設備如光碟機、磁帶機,為支援ATA-2的傳 輸速度,因此制訂一種叫ATAPI(AT Attachement Peripheral Interface)的規範。
PIO Mode與DMA Mode(Bus Master)驅動方式
簡單的說,PIO(Programmed I/O)就是硬碟與記憶體之間的存取動 作完全由 CPU控制,亦即,每一個大大小小的動作都必須經由CPU才 能完成,如果是區塊資料傳送,那就更耗CPU時間。其動作原理如圖 二所示:
HOST ┌───┐ ┌─────┐ CONTROL ┌────┐ ┌→│DISK1 │ │ │─────→│ │ │ └───┘ │Port 1F0h-│ DATA │ │←┤ │ 1F7h │←────→│ │ │ ┌───┐ └─────┘ └────┘ └→│DISK2 │ ↑ AT I/O BUS AT HD └───┘ │ ADAPTER ↓ ┌────┐ │ RAM │ │ │ └────┘ 圖二  Programmed I/O
所以,當硬碟在動作時,系統的效能就會明顯地慢下來,而所謂 的背景工作也就難以執行,因此以PIO模式較適用在單工的場合。早 期的SCSI介面卡也是採用 PIO的傳輸架構,如Future Domain的 TMC-1680、Adaptec的AHA-1522。表二列出PIO驅動模式的速率 (Tranfer Rate)、週期時間(I/O Cycle time)及規格。
--------------------------------------------------- PIO模式 Mode-0 Mode-1 Mode-2 Mode-3 Mode-4 --------------------------------------------------- 速率(MB/s) 3.33 5.22 8.33 11.1 16.67 週期(ns) 600 383 240 180 120 規格 ATA ATA ATA ATA-2 ATA-2 ---------------------------------------------------
表二  PIO傳送模式
DMA(Direct Memory Acces)是為直接記憶存取,正如其字面上的 意思,DMA 模式的存取使得硬碟與記憶體之間溝通與傳輸作業,絕 大部分由硬碟本身與驅動程式共同完成,兩者間的許多溝通與控制 作業不再需要透過CPU來管理,所以硬碟在動作時,不會像PIO方式 佔住CPU。其動作原理如圖三所示:
HOST ┌───┐ ┌────┐ CONTROL ┌─────┐ ┌→│ DISK1│ │ │─────→│ │ │ └───┘ │ │ │DMA │←┤ │ │ │CONTROLLER│ │ ┌───┐ └────┘ └─────┘ └→│ DISK2│ ↑ AT HD └───┘ │ AT I/O BUS ADAPTER ↓ ↑ ┌────┐ DATA │ │ RAM │←────────┘ │ │ └────┘
圖三  DMA(Bus Master)
SCSI卡後來大多走DMA的驅動方式,新一代的硬碟也都支援DMA方 式的驅動。表三列出DMA的傳送模式,但它只是理論值,畢竟整個硬 碟在資料的傳輸過程中,每一個環節都會有所延遲,所以理想資料 傳輸率是不可能達到的。
┌─────────────────┬───────────┐ │ Single-word DMA │ Multi-word DMA │ │DMA模式 Mode-0 Mode-1 Mode-2 │Mode-0 Mode-1 Mode-2│ ├─────────────────┼───────────┤ │速率(MB/s) 2.08 4.17 8.33 │ 4.17 13.3 16.67│ │週期(ns) 960 480 240 │ 480 150 120 │ │規格 ATA ATA ATA │ ATA ATA-2 ATA-2│ └─────────────────┴───────────┘
表三  DMA傳送模式
在DOS/Windows等單工的環境下比較看不出PIO與DMA方式驅動的差 異,但對多工系統如Linux、Windows 95/NT、OS/2等,DMA所強調的 就是在硬碟動作時節省CPU時間,好讓CPU可以執行其它運算。例如 ,以軟體播放MPEG/Viedo-CD電影,若採DMA方式,則一方面系統由 硬碟讀取壓縮檔進記憶體,CPU同時可以有更多的時間作解壓縮的動 作,因此播放起來會順暢許多,據了解,486DX2-66/8MB RAM就可以 直接播放了。雖然硬碟已支援DAM方式的存取,當然IDE介面卡也要 支援DMA方式驅動才可,並且主機板也要支援,再加上驅動程式,就 可以展現高性能的硬碟與高效益的系統。486後期的主機板及新一代 Pentium主機板已都是所謂的On board EIDE,也就是說這些主機板 所採用的控制晶片組(Control ChipSet),如TRITON、SiS、UMC、 VIA、OPTi等等的晶片組都已內含EIDE介面,所以只要依所使用的作 業系統安裝驅動程式即可。
SCSI控制介面
SCSI全名為Small Computer System Interface,是小型電腦系統 介面的意思,APPLE及PC先後採用SCSI介面。一台PC可以同時插上幾 片SCSI卡,而一片SCSI卡最多可以串接7個SCSI週邊裝置,含卡本身 這一SCSI串(SCSI chain) 上最多有8個裝置(SCSI-3可同時使用16個 SCSI設備),在SCSI串的兩端要加上終端電阻器(terminator),且 SCSI串的長度不能太長。SCSI控制介面大多採用Bus Master DMA模 式,ATA-2使用的DMA模式與此相類似,不過SCSI卡對 SCSI週邊的多 工I/O能力是ATA-2控制卡所無能為力的,尤其在真正的多工系統中 ,更能顯現出SCSI介面的威力。其動作原理如圖四。
HOST ┌───┐ ┌────┐ CONTROL ┌─────┐ ┌→│ DISK1│ │ │─────→│ │ │ └───┘ │ │ │DMA │←┤SCSI BUS │ │ │CONTROLLER│ │ ┌───┐ └────┘ └─────┘ └→│ DISK2│ ↑ SCSI HOST └───┘ │ AT I/O BUS ADAPTER ↓ ↑ ┌────┐ DATA │ │ RAM │←────────┘ │ │ └────┘
圖四 DMA(Bus Master)
SCSI-2僅提供以8bit方式傳輸資料,其傳輸速率為 10MB/sec(SCSI-1只有 5MB/sec),後來又有所謂SCSI Fast或稱為 SCSI Fast Wide的規格,它提供 16bit的傳輸頻寬,因此傳輸速率 可達20MB/sec。SCSI-3(或俗稱Ultra SCSI 或Ultra Wide SCSI)的 傳輸速率在8bit狀態下為20MB/sec,在16bit狀態下傳輸速率達 40MB/sec,如果SCSI BIOS能將雙工傳輸速率設為40MB/sec那麼該卡 就是符合較新之規格的SCSI卡。不過由於Ultra SCSI這個名詞已為 美國一家UltraStor公司登記,其正式名稱不能再使用它,因而改稱 SCSI Fast-20 (因其傳輸速率而來)。SCSI-1卡的外部連接器一般為 25pin,但不論是SCSI-1 內部或SCSI-2其連接器皆為50pin,SCSI Fast-20之連接器則為68pin;而麥金塔的SCSI為25pin。由於SCSI介 面的強大擴充力、傳輸效率與更重要的多工I/O頻道,所以許多週邊 設備如,SCSI硬碟、可讀寫光碟機(MO)、唯讀光碟機 (CD-ROM)、燒 錄機(CD-R)、磁帶機(Tape)、雷射印表機、掃描器、數位錄音帶 (DAT)等都支援SCSI介面。
大多數PC的系統BIOS是不支援SCSI硬碟的,因此大多數的SCSI週 邊裝置控制卡上都有自己的BIOS ROM,開機時BIOS ROM會被安置於 系統中,所以INT 13H 會被攔截至SCSI卡上的BIOS(許多病毒不就是 玩這種把戲),也就是說,所有DOS 磁碟呼叫都會先傳到SCSI卡上的 BIOS,以上所述就是圖一下半部的意義。SCSI 卡上的BIOS的大部份 功能,也可以由存在系統記憶體中的驅動程式來處理,因此,欲直 接由SCSI硬碟開機,SCSI卡上的BIOS是免不了的,且主機板上的 BIOS也要支援由SCSI硬碟開機才可。另外,SCSI介面視SCSI硬碟上 的CHS為一連續性的邏輯區塊,也就是前述的LBA區塊,那麼SCSI卡 上的BIOS最大能夠轉換多少CHS成LBA呢?只知道比7.84GB大很多。
SCSI介面最讓使用者困擾的莫過於相容性的問題。譬如CD-ROM、 磁帶機各有其所附的驅動程式,但是這兩個驅動程式能否在相同的 SCSI卡上動作,是誰也不敢保證的。因此,大家意識到需要有一個 通用的軟體協定,而在這場SCSI 協定之爭中,有三項標準被提出, 它們是:由Microsoft主導的LADDR;由ANSI 所制訂的CAM;由 Adaptec所制訂的ASPI,而ASPI已成為市場主流。基本上,ASPI (Adaptec(Advanced) SCSI Programming Interface)將SCSI軟體區 分成兩個模組,即ASPI Manager(供SCSI卡使用),及ASPI裝置驅動 模組(供SCSI裝置使用的驅動程式)。ASPI Manager只針對卡的I/O做 處理,它會處理卡的硬體資源並提供一個軟體介面,給ASPI裝置驅 動程式使用。所以ASPI裝置驅動程式透過 ASPI Manager與SCSI卡的 驅動程式溝通,讓ASPI裝置驅動程式與硬體獨立開來。通常支援 ASPI Manager的SCSI卡,所提供的驅動程式就已包含ASPI Manager 。圖五描述應用程式、ASPI裝置驅動程式、ASPI Manager及SCSI卡 間的關係。
┌────────────┐ │ APPLICATION │ └────────────┘ ↑ ↑ ↓ ↓ ┌───────┐ ┌───────┐ │ Dev. Driver1 │ │ Dev. Driver2 │ └───────┘ └───────┘ ↑ ↑ ↓ ↓ ┌─────────────┐ │ ASPI MANAGER │ ├─────────────┤ │ Adapter Driver │ └─────────────┘ ↑ ┌───┐ ↓ ┌→│ Dev.1│ ┌────────────┐ │ └───┘ │ SCSI Host Adapter │←→│ └────────────┘ │ ┌───┐ └→│ Dev.2│ └───┘
圖五 ASPI MANGER
Win95/NT、Linux、OS/2等系統似乎沒有上述所謂"通用的軟體協 定"的觀念,也就是說圖五中使少掉ASPI MANAGER那層。
Parallel Port控制介面
接在Parallel Port介面上的裝置最常見的莫過於印表機了。除此 之外,行動碟(Portable Disk或Pocket HD)、ZIP、磁帶機等裝置也 都是走Parallel Port 的。Parallel Port有三種規格分別是:
‧SPP SPP是Standard Printer Port的簡稱,是一個8位元雙向的標準 印表機埠,傳輸速率約為80KB/sec到150KB/sec(單倍速CD-ROM 的速度為150KB/sec)。
‧EPP EPP是Enhanced Printer Port的簡寫,這是一個加強式的印表 機埠,其傳輸速率可達2MB/sec,EIDE卡上的Printer Port或on board EIDE主機板上的Printer Port都支援EPP/ECP規格。目前 大多串接在 Printer Port上的裝置,也大多支援到EPP規格的 速度。
‧ECP ECP是Enhanced Capability Port的簡寫,由Microsoft與HP共 同制訂的規格,主要作為PC與印表機的雙向連接埠,傳輸速率 可達 4MB/sec。
走Printer Port的外接式IDE硬碟、IDE光碟機,聽起來似乎怪怪 的,IDE裝置怎麼與Parallel Port連接?其實IDE還是IDE,Printer Port還是Printer Port ,只是在外接盒上有一個轉換介面,當做 Printer Port介面與IDE介面的轉換。目前市面上有可接一個或兩個 IDE週邊的外接盒約2500元,若安裝一顆1.7GB IDE硬碟(約6000元) ,及12x IDE光碟機(約2700元),總共約11200元,與一顆 1GB的行 動碟約10000元比較,雖然速率因為不同介面間轉換而會慢一點,可 是就價錢與方便性來說也是值得投資的。
分割區(Partition)及配置單位(Allocation Unit)的大小與效率 的關係
硬碟必須先進行分割,再製作該作業系統的檔案系統,才能為作 業系統所用。而在PC上一顆硬碟最多只能分割成4個分割區,並且只 能是4個主要(Primary) 分割區,或是3個主要分割區及1個延伸 (Extended)分割區。作業系統本身都會提供如DOS的FDISK的硬碟分 割程式,但是由DOS的FDISK所劃分出的分割區,受限於當初的定義 (FAT16),一個分割區最大只能分割出65536乘以32KBytes =2048MB 的分割區,所以一顆硬碟DOS的FDISK所能分割出的總容量為8.192GB ,而不幸的是BIOS所能處理的最大容量卻只有7.84GB。Linux或OS/2 的FDISK 所能劃分出的分割區的大小當然還是有限制,但到底多大 ?請教過幾位高手還是得不到確切的答案,不過8、9GB是沒問題的 。
FAT16是DOS的一種檔案系統,Windows 95的檔案系統雖為VFAT, 但其使用的磁區分配格式與FAT16檔案系統相同。FAT16準備了 216=65536個指標用來指向磁碟上存取的最小單位-配置單位(或稱 為磁簇-cluster),並且磁簇的大小是固定的。假設一個磁簇的大 小為4k,如果將一個1k的檔案儲存到硬碟時,此檔案未能佔滿整個 磁簇而所剩下的空間稱為磁簇懸垂(cluster overhang)。小檔案越 多或磁簇越大此現象就越明顯,硬碟上浪費的空間就越多。所以分 割區的大小決定了磁簇的大小,表四列出FAT與VFAT分割區大小與磁 簇大小的關係。
---------------------------------- Partition ClusterSize ---------------------------------- 16MB -127MB 2k 128MB -255MB 4k 256MB -511MB 8k 512MB -1023MB 16k 1G -2047MB 32k 2G -4095MB 64k ----------------------------------
表四 分割區大小與磁簇的關係
Windows NT的NTFS檔案系統限制不論分割區的大小,磁簇的大小 都是4k。 OS/2的HPFS則沒有限制磁簇的大小。Windows 95 OSR2提 供了新的磁碟管理格式FAT32,並且OSR2所提供的FDISK單一分割區 最大為2TeraBytes,不過 FAT32與NTFS及HPFS一樣彼此是不相容的 。
現在的硬碟動輒2GB(十進位)以上,並且裝上兩三個作業系統也是 很平常的事,但是要啟動(boot)那個作業系統,若沒有一個管理者 似乎有些不方便。因此像OS/2就提供一個叫啟動管理員(Boot Manager)的啟動管理程式,這個啟動管理員佔去一個1或2MB的主分 割區,但又不會使用Drive Letter,用起來還蠻方便的。可是如果 四個分割區都用掉了,那不就沒地方裝啟動管理員了?沒錯,這時候 只好在MBR(Master Boot Record)處動手腳,例如System Commander(這是要錢的)或是Linux的LILO就可以處理這個問題。不 管有幾個需要被指定為"C:"才能啟動的主分割區,或者系統是安裝 在邏輯磁碟上,都可由System Commander啟動。
結語
單就傳輸速率的數據來看EIDE控制介面,似乎不輸給SCSI控制介 面,可是SCSI 控制介面的多工能力卻是EIDE所不及的。從價位上也 可看出其間的差別(EIDE 大約值幾百塊,SCSI-2卡最低價位也要兩 千塊左右);同容量的硬碟的價錢,SCSI 大約是EIDE的1.5到2.5倍 。高階應用方面,如檔案伺服器、工作站、主機等,一般均為多用 戶的多工作業環境,必須同時處理大量資料的輸出輸入動作者,大 多採用SCSI控制介面。然而EDIE也是有其較低價位的優點,只要使 用者要求不是太多,並且善用其DMA的特性,其實還是很迷人的啦。

沒有留言: