NCQ
改進硬碟性能和穩定性的技術
NCQ(Native Command Queuing,原生命令隊列)是被設計用於改進在日益增加的負荷情況下硬碟的性能和穩定性的技術。當用戶的應用程序發送多條指令到用戶的硬碟,NCQ硬碟可以優化完成這些指令的順序,從而降低機械負荷達到提升性能的目的。 NCQ技術是一種使硬碟內部優化工作負荷執行順序,通過對內部隊列中的命令進行重新排序實現智能數據管理,改善硬碟因機械部件而受到的各種性能制約。
NCQ
首先讓我們來看一下硬碟是怎樣讀寫信息的。硬碟通過將信息寫入磁碟磁軌上的特定位置進行信息存儲,硬碟訪問磁碟上信息的過程如下:
● 尋找存儲數據的目標磁碟(platter),訪問該磁碟。
● 尋找磁碟上存儲數據的目標磁軌(track),訪問磁軌。
● 尋找磁軌上存儲數據的目標簇(cluster),訪問簇。
● 尋找簇上存儲數據的目標扇區(sector),訪問扇區。
● 尋找目標數據,讀取數據。
通過上面的步驟,硬碟即可獲取所需要的數據信息。硬碟寫入數據的步驟也是如此,區別僅僅在於讀操作變為寫操作。大多數情況下數據存入硬碟並非是順序存入,而是隨機存入,甚至有可能一個文件被分配在不同碟片上。對於不支持NCQ的硬碟來說,大量的數據讀寫需要反覆重複上面的步驟,而對於不同位置的數據存取,磁頭需要更多的操作,降低了存取效率。支持NCQ技術的硬碟對接收到的指令按照他們訪問的地址的距離進行了重排列,這樣對硬碟機械動作的執行過程實施智能化的內部管理,大大地提高整個工作流程的效率:即取出隊列中的命令,然後重新排序,以便有效地獲取和發送主機請求的數據,在硬碟執行某一命令的同時,隊列中可以加入新的命令並排在等待執行的作業中。顯然,指令排列后減少了磁頭臂來回移動的時間,使數據讀取更有效。
如圖所示,如果新的命令恰好是處理起來機械效率最高的,那麼它就是隊列中要處理的下一個命令。舉個例子:比如向硬碟下達一組數據傳送指令,由於數據在磁碟上分佈位不同,磁頭可能會先讀取260扇區,再讀取7660扇區,然後又讀取261扇區……如果我們對指令進行優化排列,可以先讀260扇區,接著依次讀261扇區,最後讀取7660扇區……顯然,指令排列后減少了磁頭臂來回移動的時間,使數據讀取更有效。並且有效的排序演演算法除了考慮目標數據的線性位置,也會考慮其角度位置,並且還要對線性位置和角度位置進行優化,以使匯流排的服務時間最小,這個過程也稱做“基於尋道和旋轉優化的命令重新排序”。
不過,要充分享用NCQ技術,光硬碟支持是不行的,還要對應的硬碟控制器(如南橋晶元中的磁碟控制器)支持才行。例如Intel從945晶元組的ICH7南橋開始支持NCQ技術,nVidia從nForce4 SLI晶元組開始支持NCQ技術。
下面是seagate官方關於支持NCQ硬碟的數據。
從seagate推出高端NCQ硬碟以來,一直深受廣大用戶擁戴,這次NCQ硬碟向低端發展,體現了seagate對用戶的全方位考慮。據相關媒體報道,擁有NCQ技術的新款硬碟相對沒有NCQ技術的舊版硬碟產品。整體性能可以提升5%~20%,而擁有NCQ技術的這款低端產品的上市無疑是普及硬碟領域最新技術的最好途徑。