Serial ATA II硬碟的NCQ功能簡介
由於系統在存取硬碟磁盤(discs)上的資料鮮少是以順序方式進行,只要了解硬碟資料在各磁盤或磁軌(sectors)的分佈方式,都可以理解一個有效 的存取動作,都會有一些額外的時間消耗在磁盤運轉至磁頭可以讀取的位置,也就是磁頭搜尋前置時間(seek latencies)或磁盤轉動前置時間(rotational lantencies)。所以要有效減少類似的前置時間,除了可以用增加磁盤轉速(spindle RPM)來解決外,也可以將各個存取資料重新排序(sorting),以最有效的方式設法在最少的轉動時間內完成一串的存取資料指令。由於增加主軸轉速會 同時產生成本、軸承磨耗、熱量與震動等不利因子,而NCQ的概念,就在此技術背景中被提出。
NCQ(Native Command Queuing)是 Serial ATA II phase 1 硬碟產品非常重要的改變,是由硬碟本身就指令來重新排序,以達成更高的效能提升。換句話說,NCQ 是指磁碟機內部控制器對於來自外部程式所下的多個資料區塊的存取指令,進行最佳化處理,也就是配合在磁軌上的讀寫機構的最佳(負載最小化)存取方式,在各 個時間點就所接收的指令動態地將其重新排序或排程(rescheduled or re-ordered)。它除了可提昇整體效能,也同時延長了硬碟的使用期限 (因為降低了許多無謂的機械耗損)。
至於在現有的 SATA II NCQ 協定中,另有 3 個新增功能可以來強化 NCQ 的優勢,分別是:
1. Race-free status return mechanism:硬碟在完成任一指令後,可以無須再進行「Handshake」即可繼續另一個指令,以便讓多個指令快速接序或同時執行。
2. Interrupt aggregation:硬碟由於以 NCQ 模式執行多個指令,所以原本每一個指令完成後必須中斷(interrupt)以便讓系統接續處理的模式,轉成可以在多個指令完成後再一次提出 interrupt,故介面控制器(host controller)對於多個指令只須處理一次中斷即可。
3. First party DMA(FPDMA):當硬碟完成資料讀取後,無須靠 host controller 的 DMA 動作取得特定記憶體位置,而是由硬碟本身建立 DMA setup FIS (Frame Information Block)直接對 host controller 送出記憶體存取通知,如此無須驅動程式的運作,可以有效提升存取效率。
在應用方面,當然除了硬碟本身必須支援 NCQ 外,作業系統與介面控制器(controller)的支援也是不可或缺的條件。特別是目前所流行的多執行緒系統環境或是處理器的 Hyper Threading 功能,都可能會大幅增加對於硬碟的工作負載,一旦硬碟能針對此潛在需求支援 NCQ,整體效能才能有明顯合乎預期的提升。在目前的 Serial ATA 主流產品的主軸轉速多為 7200 RPM,一旦有了 NCQ 的支援,甚至可以逼近部分 10000 RPM 硬碟的效能。所以在硬碟的選購與使用上,NCQ 的支援與否是一個值得特別注意的功能。
※註:支援 NCQ 的 Seagate 硬碟型號為:
ST380817AS:80GB
ST3120827AS:120GB
ST3160827AS:160GB
ST3200826AS:200GB
ST3250823AS:250GB
ST3300831AS:300GB
ST3400832AS:400GB