【存储知识学习】第三章磁盘原理与技术3.4硬盘接口技术和SCSI硬盘接口--《大话存储》阅读笔记
3.4硬盤接口技術
硬盤的物理接口包括以下幾種:
- 用于ATA指令系統的IDE接口(PATA)
- 用于ATA指令系統的SATA接口
- 用于SCSI指令系統的并行SCSI接口
- 用于SCSI指令系統的串行SCSI(SAS)接口
- 用于SCSI指令系統的IBM專用串行SCSI(SSA)接口
- 用于SCSI指令系統的并且承載于FabreChannel協議的串行FC接口(FCP)
3.4.1 IDE硬盤接口
IDE(Integrated Drive Electronics)電子集成驅動器。把控制電路和磁盤、磁頭等放在一個容器種的硬盤驅動器。廠商不用擔心硬盤于控制器兼容問題,價格也低廉。IDE接口也稱為PATA接口即并行傳輸ATA(Parallel Advanced Technology Attachment)即高級技術附加。
1. 七種ATA物理接口規范
?2.IDE數據傳輸模式
- PIO模式(Programming Input/Output Model):一種通過CPU執行IO端口指令來進行 數據讀寫的數據交換模式,是最早的硬盤數據傳輸模式。這種模式傳輸效率低下,CPU占有率高。硬盤控制器接收到磁盤傳來的數據之后,必須由CPU發送信號將這些數據復制到內存當中。
- DMA模式(Direct Memory Access):直接內存訪問,是一種不經過CPU而直接從內存中存取數據的數據交換模式。DMA模式下,CPU只需要向控制器下達指令,讓DMA控制器來處理數據的傳送。
- Ultra DMA模式:高級直接內存訪問。UDMA模式采用16位多字節DMA模式為基準,可以理解為DMA模式的增強版本,增加了CRC(循環冗余校驗)技術,提高了數據傳輸過程中的準確性。在UDMA中逐漸應用了雙倍傳輸技術,因此數據傳輸速度有了極大的提高。
3.4.2 SATA硬盤接口
Serail ATA 串行傳輸ATA。相對于PATA模式的IDE接口來說,SATA是用串行線路傳輸數據,但指令集不變,仍然是ATA指令集。
1.SATA規范和發展歷程
SATA超過了 ATA甚至高過了IDE最高傳輸速率,SATA同時對指令及數據封包進行循環冗余校驗(CRC),不僅可以檢測出所有單比特和雙比特的錯誤。
2.SATA2.0規范中的新特性
- 3Gb/s的傳輸速率:相當于300MB/s,不過硬盤內部的傳輸速率還達不到于接口速率等同的程度。
- 支持NCQ技術:(Native Command Queuing)自身命令隊列,由硬盤驅動器自身實現排隊技
基于尋道和旋轉優化的命令重排序:對于新加入的命令,考慮目標數據的線性位置,考慮角度位置,對線性位置和角度位置進行優化,使總線的服務時間最小。
NCQ包含如下兩部分內容。一方面,硬盤本身必須有能力針對實體數據的扇區分布對命令緩沖區中的讀寫命令進行排序。同時硬盤內部隊列中的命令可以隨著必要的跟蹤機制動態地重新調整或排序,其中跟蹤機制用于掌握待執行和已完成作業的情況,而命令排隊功能還可以使主機在設備對命令進行排隊的時候,斷開于硬盤間的連接以釋放總線。一旦硬盤準備就緒,就重新連接到主機,盡可能最快的速率傳輸數據,從而消除占用總線的現象。另一方面,通信協議的支持也相當重要。PATA硬盤在傳輸數據時很容易造成眾人,這樣會降低主控制器的效率,所以NCQ規范中定義了中斷聚集機制。相當于一次執行完數個命令后,再對主控制器回傳執行完畢的信息,改善處理隊列命令的效能。
端口選擇器(Port Selector):有兩個SATA接口,同時連接兩個接口到控制器上。一旦某個接口或者連線故障,立即切換到另一個接口和連線上。
端口復用器(Port Multiplier):一個控制器可以擴展多個SATA設備的技術,采用4位(bit)寬度的Port Multiplier端口字段,其中控制端口占用一個地址,最多能輸出15個設備連接。
3.5 SCSI硬盤接口
SCSI的全稱使Small Computer System Interface,即小型計算機系統接口,是一種較為特殊的接口總線,具備于多種類型的外設進行通信的能力,比如硬盤、CD-ROM、磁帶機和掃描儀等。SCSI采用ASPI(高級SCSI編程接口)的標準軟件接口使驅動器和計算機內部安裝的SCSI適配器進行通信。SCSI是一種廣泛應用于小型機上的高速數據傳輸技術。SCSI接口具有應用范圍廣、多任務、帶寬大、CPU占用率低以及熱插拔等優點。
SCSI接口為存儲產品提供了強大、靈活的連接方式,還提供了很高的性能,可以有8個或更多(最多16個)的SCSI設備連接在一個SCSI通道上,缺點是貴。
在系統中應用SCSI必須要有專門的SCSI控制器,也就是一塊SCSI控制卡,才能支持SCSI設備,這與IDE硬盤不同。SCSI控制器上有一個相當于CPU的芯片,它對SCSI設備進行控制,能處理大部分的工作,減少CPU的負擔(CPU占用率)。
SCSI發展過程:SCSI-1? ? ?SCSI-2? ? ?SCSI-3(Ultra 1?SCSI)? ? Ultra 2 SCSI??Ultra 160??SCSI? ? ?Ultra 320?SCSI
1.SCSI協議的鏈路層
SCSI協議中,利用CRC校驗碼來校驗每個指令或者數據的幀,如果發現對方發來的校驗碼與本地計算的不同,則說明這個數據幀再傳輸過程中受到了干擾,那么就會丟棄這個幀,發送方會重傳這個幀。
2.SCSI網絡層
(1)SCSI總線編制機制
SCSI協議利用了一個SCSI ID的概念來區分每個節點。一條SCSI總線上可以存在16個節點,其中SCSI控制器,占用一個節點,SCSIID被恒定設為7。其他15個節點的SCSI ID可以隨便設置,但不能重復。者16個ID中,7具有最高優先級。
由于總線是一種共享的線路,總線上每個節點都會同時感知到這條線路和上的電位信號,所以同一時刻只能由一個節點向這條總線上放數據,也是給這條線路加一個高電位或者低點位。其他所有節點都能感知到這個電位的增降,但是只有接收方節點才會感知到電位增降信號,保存到自己的緩存中。高位保存1,低位保存0,反過來也可以。終結電阻作用是終結導線上的電信號。
?要了解當前線路上是不是自己在通信,自或者自己想爭奪線路的使用權而通告其他節點,這個過程交仲裁。有總線的地方就有仲裁,因為總線是共享的,各個節點都申請使用,所以必須有一個仲裁機制。SCSI接口并不只有8或者16條數據線,還有很多控制信號線。
普通主版一般不集成SCSI控制器,如果想接入SCSI磁盤,必須增加SCSI卡。SCSI一端接入主機的PCI總線,另一端用一個SCSI控制器接入SCSI總線。卡上有自己的CPU,通過執行ROM中的代碼來控制整個SCSI卡的工作。如果這塊卡不只有一個SCSI控制器,則每個控制器可以單獨掌控一條SCSI總線,這就是多通道SCSI卡。
(2)SCSI尋址機制和幾個階段
一、空閑階段
總線一開始就處于空閑狀態,沒有節點要發起通信。總線空閑的時候,BSY和SEL這兩條控制信號都為False狀態,只是任何節點都可以發起通信。
二、仲裁階段
節點通過在自己對應的那條線路的電位來申請總線的使用權。提升自己ID對應線路的電位的同時,這個節點也提升BSY線路的電位。如果同時有多個節點提升了各自線路上的電位,那么所有的發起申請的節點均判斷總線上的這些信號。
SCSI總線尋址的方式,按照控制器--? ? ?通道? ? ?--? ?SCSI ID? ?--? LUN ID來尋址。
控制器就是SCSI控制器,這個控制器集成在南橋上,或者獨立于某個PCI插卡,要連接到主機IO總線上。有IO端口,就可以讓CPU訪問到。一個主機IO總線上,不一定只有一個SCSI控制器,可以有多個。每個控制器又可以多個通道。通道也就是SCSI總線,一條SCSI總線就是一個通道。多條SCSI總線(通道)可以被一個控制器管理,這個物理控制器會被邏輯劃分為多個虛擬的可以管理多個通道(SCSI總線)的控制器,稱為多道控制器。每個通道(總線)上可以接入8或16個SCSI設備, 所以必須區分開每個SCSI設備。SCSI ID就是針對每個設備的編號,每個通道上的設備都有自己的ID。不同通道間的ID可以相同,并不影響他們的區分。因為他們的通道號不同。如圖,這兩個設備就是兩個通道。
SCSI ID并不是網絡中最后一層地址,還有一個LUN ID。每個SCSI ID下可以再分出來若干個LUN ID。控制器初始化的時候,會對SCSI ID上的設備發出一條Report LUN指令,用來收集每個SCSI ID設備的LUN信息。這樣,一條SCSI總線上,可接入的最終邏輯存儲單元數量就打打增加了。
三、選擇節點
仲裁階段之后,獲勝的節點會將BSY和SEL信號置位,然后將8或16他數據總線上對對應它自身ID的線路和對應它有通信的目標ID的線路的電位提升,這樣目的節點就能感知到它自己的線路上來了信號,開始做接收準備。
總線上最常發生的是控制器向其他節點發送和接收數據,而除控制器之外的其他節點之間交互數據,一般是不會發生的。如果要從總線上的一塊硬盤復制數據到另一塊硬盤,那也必須先將數據發送到控制器,控制器再復制到內存,經過CPU運算后再次發送給控制器,然后控制器再發送給另一款硬盤。
3.SCSI協議傳輸層
(1)寫數據
發起方在獲得總線仲裁之后,發送一個SCSI Command寫入命令幀。其中包含了對應的LUN號以及LBA地址段。接收端接收后,就知道下一步對方要傳輸數據了。接收方做好準備后,向發送方發送一個XFER_RDY幀,表示已經做好接收準備,可以隨時發送數據。
發送方收到XRFREE_RDY幀后,會立即發送數據。每發送一幀數據,接收方就回送一個XFER_RDY幀之后,會立即發送數據。每發送一幀數據,接收方就會回送一個XFER_RDY幀,表示上一幀成功收到并且無錯誤,可以立即發送下一幀,直到發送結束。
接收方發送一個RESPONSE幀來表述這條SCSI命令執行完畢。
(2)讀數據
發起方在獲得總線仲裁之后,會發送一個SCSI Command讀命令幀。接收端接收后,立即將該命令中給出的LUN以及LBA地址段所有的扇區數據讀出,傳送給發起端。
所有數據傳輸結束后,目標端發送一個RESPONSE幀來表示這條SCSI命令執行完畢。
SCSI協議語言就是利用這種兩端節點之間相互傳送一些控制幀,來達到保障數據成功傳輸的目的。
4.SCSI協議的會話層、表示層和應用層
與底層通信無關。
?
?
?
總結
以上是生活随笔為你收集整理的【存储知识学习】第三章磁盘原理与技术3.4硬盘接口技术和SCSI硬盘接口--《大话存储》阅读笔记的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【存储知识学习】第三章磁盘原理与技术3.
- 下一篇: 【存储知识学习】第三章磁盘原理与技术3.