2008年9月21日 星期日

進階主機控制器介面 ( Advanced Host Controller Interface(AHCI) )

1. 簡介AHCI:

1.1.中文:
「進階主機控制器介面 (AHCI)」是一種介面規格,可讓儲存裝置的驅動程式啟用進階的序列 ATA 功能,例如原生指令佇列( Native Command Queuing(NCQ) )及熱插拔(hot-plugging)。

1.2. 英文:
The Advanced Host Controller Interface (AHCI) is a hardware mechanism that allows software to communicate with Serial ATA (SATA) devices (such as host bus adapters) that are designed to offer features not offered by Parallel ATA (PATA) controllers, such as hot-plugging and native command queuing. The specification details a system memory structure for computer hardware vendors in order to transfer data between system memory and the device. As of June 2008, the current version of the specification is v1.3.

2. 何謂熱插拔?

熱插拔是進階主機控制器介面 (AHCI) 與 IntelR 組合儲存技術支援的功能。 熱插拔功能可以在系統執行的同時,進行裝置的移除及插入。

3. 何謂原生指令佇列?

原生指令佇列 (NCQ) 是進階主機控制器介面 (AHCI) 的一種功能,為一硬碟讀取加速技術。透過硬碟韌體、硬碟控制器以及作業系統三者的互相配合,可以讓 ATA 磁碟機一次接受多個指令並動態重新排列指令,以達到最高的效率。 NCQ 若搭配支援 NCQ 的硬碟機共同使用,可以提高隨機工作負載的儲存效能,約略可以提高硬碟效能約30%。

3.1. NCQ原理

一般硬碟使用的硬碟格式通常為Windows 98核心所使用的FAT32系列,或是Windows NT所使用的NTFS,此種硬碟格式在存放資料時,時常會出現散亂的情況,導致一個檔案分散成許多區段於磁盤上面,時間長久之後,由於檔案散亂的程度日趨嚴重,便會導致硬碟讀取效能逐漸下降。一旦發生這樣的問題,解決方案便是使用硬碟重組軟體重組硬碟,將散亂的檔案重新排列為連續的區塊。有鑑於此,NCQ原本的概念其實是應用在伺服器中的SCSI介面上,不過NCQ可以說是專門提供給SATA介面使用。傳統的硬碟讀取方式,會從檔案的開頭依序讀取到結尾;換句話說,如果檔案的開頭在磁盤最外圈,而結尾在磁盤的最內圈時,機械臂便會先移動到最外圈,再移至最內圈讀取,若檔案散亂的程度愈嚴重,則機械臂需要移動的距離就越長。而啟用NCQ技術的硬碟,在讀取檔案時,會依照檔案在硬碟上的分佈,將存取的順序作最有效率的排序,以減少機械臂移動的距離,進而達到省時以及延長硬碟壽命的效果。

如圖


3.2. NCQ優勢

於 SATA II NCQ 協定中,新增3個功能,分別是:

3.2.1. Race-free status return mechanism:
硬碟在完成任一指令後,可以無須再進行Handshake即可繼續另一個指令,以便讓多個指令快速接序或同時執行。

3.2.2. Interrupt aggregation:
硬碟由於以NCQ模式執行多個指令,所以原本每一個指令完成後必須中斷(interrupt) 以便讓系統接續處理的模式,轉成可以在多個指令完成後再一次提出(interrupt) ,故介面控制器(host controller) 對於多個指令只須處理一次中斷即可。

3.2.3. First party DMA(FPDMA):
當硬碟完成資料讀取後,無須靠 host controller 的DMA動作取得特定記憶體位置,而是由硬碟本身建立 DMA setup FIS (Frame Information Block)直接對 host controller 送出記憶體存取通知,如此無須驅動程式的運作,可以有效提升存取效率。

ref:
http://en.wikipedia.org/wiki/Advanced_Host_Controller_Interface
http://www.intel.com/technology/serialata/ahci.htm
http://www.intel.com/support/tw/chipsets/imst/sb/CS-012305.htm
http://www.intel.com/support/tw/chipsets/imst/sb/CS-012308.htm
http://www.intel.com/support/tw/chipsets/imst/sb/CS-012304.htm

沒有留言: