《電子技術應用》
您所在的位置:首頁 > 其他 > 業界動態 > 本機命令隊列運行機制和性能分析

本機命令隊列運行機制和性能分析

2010-01-13
作者:李 冬1,2,汪東升2,王耀才1

摘   要: 分析了FPDMA數據傳輸、隊列讀/寫命令的動態運行機制、支持高速特性的隊列和協議性能,給出了NCQ的性能優勢和存在的問題。
關鍵詞: 本機命令隊列  運行機制  性能

  本機命令隊列NCQ(Native Command Queuing)[1]是SATAⅡ接口中引入的命令協議,是對SATA 1.0所做的諸多功能擴展中惟一與性能密切相關的技術。其原型是1998年發布的ATA/ATAPI-4的命令隊列(CQ)技術。在PATA(Parallel ATA)中采用非對等輪詢訪問結構,其控制器計算能力弱,無法支撐復雜的最優化命令排序算法,致使基于CQ的應用性能改善和協議增加的開銷相當。隨著ASIC、串行技術、多線程和超線程系統等技術的發展,在SATA中引入NCQ用于增強磁盤整體性能的條件已經具備。
1  NCQ結構
1.1 工作模型
  NCQ處理的對象是隊列命令,核心是隊列機制,包括創建、排隊和在主適配器與盤體控制器的協調等,工作模型如圖1[2]所示。模型分為兩個功能相對獨立的部分,它們通過串行總線交換數據,通過FIS(Frame Information Structure)來交換LBA、地址偏移、命令和狀態信息。其中,標記Tag是一個重要的元素,在驅動器緩存中有一個含有Tag的命令隊列,在主機控制器緩存中有與它對應的Tag標志位表,值域[0,n],其中n(≤31)是隊列的深度,每一條命令都有惟一的標記值,應用于隊列化命令的數據操作。

1.2 功能部件
  NCQ主要由命令隊列建立部件、數據傳輸部件和命令完成狀態返回部件組成。其中命令隊列建立部件的功能是使磁盤控制器按照命令協議(如NCQ、DMA、PIO等)的語義(OpCode)確定是把該命令送到隊列排隊(Tag有效)還是立即執行(Tag無效);數據傳輸部件使用FPDMA(First Parity DMA)傳輸機制完成驅動器和主機數據的傳輸;命令完成狀態返回部件的功能是當數據讀寫操作命令發送或在數據傳輸完畢后,將磁盤命令的執行狀態返回給主機。
1.3 命令格式
  FPDMA包含RFQ(Read FPDMA Queued)和WFQ(Write FPDMA Queued)兩條命令,命令格式見參考文獻[2]。格式中的扇區計數寄存器包含的Tag由主機驅動程序指定,命令域區分為RFQ和WFQ(RFQ.Command=60h,WFQ.Command=61h),支持LBA模式和48位地址格式。
1.4 內部寄存器結構
  把NCQ隊列機制應用于系統時采用AHCI[5](Advanced Host Controller Interface)接口技術,適配器建立在PCI-HBA基礎上,AHCI內部的寄存器由HBA寄存器和系統內存兩部分組成。HBA寄存器從結構上又可分為AHCI-PCI配置空間寄存器和HBA內存寄存器。其中前者定義了與PCI接口的標準PCI寄存器,后者用于通用主機控制和端口控制,它們通過AHCI-BAR或PCI配置空間的寄存器BAR聯系。AHCI系統內存通過端口00~31和控制寄存器相連,每個端口控制寄存器同時指向內存的Px命令列表基址(PxCLB)和Px FIS基址(PxFB)。其中Px命令列表系統內存是為包括命令信息和PRD表的命令表地址的命令列表結構設計的,Px FIS系統內存是面向接收端口的FIS結構設計的。
2  NCQ運行機制研究
  由圖1的工作模型和SATA磁盤模型,可以抽象出如圖2所示的NCQ支持SATA磁盤的原理分析模型。其中的命令排隊邏輯和算法包括命令的讀取、命令分析、排隊策略、算法代碼等;FPDAM引擎任務處理單元包括從控制器獲得命令、從高速緩存獲得空間或數據、與SATA總線進行數據交換等;磁盤任務處理單元包括從控制器獲得命令,執行磁盤的旋轉、尋道和定位等操作,與高速緩存進行數據交換等。其中與NCQ運行直接相關的部分在圖2中用重背景標出。
2.1 FPDMA運行
  PATA在內存和硬盤之間采用Ultra DMA數據傳輸機制。SATA充分借鑒了PATA的技術思路,引入了一種新型的數據傳輸機制FPDMA,其運行原理如下:
  (1)設置主機非頁面化內存中的FPDMA矢量表,這個表有32個入口,每個表入口含命令分散/聚合列表的物理地址(PRD表),它們都與Tag數字相對應。其中隊列化命令的分散/聚集列表是描述數據傳輸的主機內存結構。(2)驅動程序把主機控制器的隊列表基址寄存器設置為FPDMA矢量表的起始物理地址,主機驅動器軟件填充隊列化命令的PRD表,并在向設備發布一條命令前適當設置FPDMA的矢量入口。(3)當主機控制器從設備收到一DMA設置FIS后,它將使用Tag域作為對FPDMA 矢量表的索引,并設置DMA引擎PRD指針到FPDMA 矢量表中的特定值,同時應用DMA設置FIS中的D位來設置DMA的傳輸方向。(4)進行FPDMA數據傳輸,并返回傳輸狀態信息。
2.2 RFQ/WFQ
  讀操作(RFQ)是由主機向磁盤控制器發出的數據請求,主機驅動軟件一旦發出讀寄存器FIS,主機控制器的硬件將自主執行FPDMA操作,不需要主機驅動軟件的參與,直到本條命令執行完畢(即捕捉到執行完畢的中斷請求位SActive)。
  寫操作完成隊列化的命令把數據寫回驅動器,命令操作原理與讀操作類似。
2.3 錯誤處理
  在SATA協議棧中,每層都有錯誤發現、錯誤控制和錯誤報告恢復功能[4]。NCQ工作于傳輸層,其錯誤處理機制簡單有效。
  在主機發送給設備的寄存器FIS中,狀態寄存器BSY位出現了錯誤,設備將傳輸一個設置了ERR、BSY和錯誤寄存器為適當錯誤代碼的寄存器FIS到主機控制器;然后,設備等待地址為10h的日志頁讀日志擴展(Read Log Ext)命令(若收到主機發送的復位寄存器FIS,將立即停止等待)。當收到該命令后,設備控制器將放棄所有未執行的隊列命令、清空隊列,返回詳細的錯誤信息,發送Set Device Bits FIS清除主機所有的Sactive寄存器位。至此,主機可以重新發送放棄的命令和新的命令。
3  NCQ工作性能分析
3.1 隊列性能
3.1.1 隊列分析
  NCQ的核心是隊列機制,關鍵是命令的執行次序排列和重排。在NCQ中,命令在隊列中的分布是采用旋轉位置排序(Rotational Position Ordering,RPO)算法實現的。具體的策略是綜合考慮減少磁盤的尋道和旋轉延遲,得到一個全局時間最短、執行最優的命令執行序列。另外,為適應磁盤隨機動態存儲,NCQ支持RPO動態重排命令序列,弱化命令存取位置的“震蕩”,保證設備最優性能狀態的魯棒性。常用的減少尋道延遲的策略有SSTF(Shortest Seek Time First)[7]、SCAN[6]~[8]。這些算法都是基于面向企業高中端的SCSI隊列TCQ(Tagged Command Queue)設計的。而SATA定位于桌面、移動存儲、低端服務器和網絡存儲模型的近線和低端層次,所以隊列性能、精度、時間抖動等要求相對低一些,加上控制器計算性能的大幅提高,算法的運行開銷遠遠小于磁盤尋道和定位的代價。所以,在磁盤本體上,使用SSTF、SCAN和其改進算法對隊列中的命令進行排序和重排序是完全可行的。
  需要注意的是:SSTF和SCAN算法的依據一般是數據塊的邏輯塊號;而SATF計算的依據是物理塊號,但由于操作系統沒有磁盤結構的物理信息,所以該類算法實現起來相對復雜。改進的策略一是通過邏輯塊號-物理塊號之間的關系轉換,二是使用“最近塊數優先”近似。但它們都削弱了算法性能,增大了時間誤差。
3.1.2 隊列仿真比較
  使用UTSA的磁盤頭調度模擬器(DiskHead)[9]模擬上述主要隊列算法的NCQ性能情況。DiskHead既是一個磁盤負載產生器,也是一個負載調度器,通過仿真配置腳本程序,可以產生兩個不同的負載源。第一個負載源(L1)包括16個塊訪問,集中于低磁道區(100~2000磁道);第二個負載源(L2)也包括16個塊訪問,集中于高磁道區(10 000~14 000磁道)。然后把負載按照周期性和隨機性組合成四種類型的混合負載,輸入模擬器進行仿真。為了顯示隊列的優勢,削弱CACHE的影響,盡可能加大了負載的密度和震蕩。
  鑒于SCAN算法每次要回歸0道,所以需要把相應的尋道時間和訪問時間去除掉。仿真結果如圖3、圖4所示。

  從圖3、圖4看出,是否支持隊列的命令重排對存儲系統的性能影響很大,不同的負載特性對系統的性能影響也不盡相同。另外,排隊算法對隨機負載的性能要優于周期負載,請求排隊能大大減少尋道時間,從而提高存儲系統的整體I/O性能。
3.2 協議性能
  NCQ屬于一種“輕型”的接口協議。與PATA比較,協議的優化性能具體表現在:
  (1)引入性能優于Ultra DMA和DMA的FPDMA簡單傳輸機制,其初始化設置由主機驅動器軟件完成,設備自動選擇DMA狀態參數,完成驅動器和主機數據的傳輸。在傳輸數據的過程中不需要主機驅動器軟件的參與。
  (2)協議隊列空間調整采用類“滑動窗口”策略,設備與主機之間的握手相對“弱化”。設備方收到設備命令請求后,就立即返回復位BSY信號,從而保持命令發送窗口的大小,而不是等待請求完成才返回,這樣為系統實現局部并行化提供了條件。這與PATA的設備請求“封閉”運行完全不一樣,它的設備請求命令執行嚴格的握手程序,只有整個命令請求完成后才返回中斷信號,系統在接收到中斷返回后,才能繼續下一條設備命令的執行周期。
  (3)命令的排序在設備中完成,只要有新的設備請求命令被送入設備隊列,設備就要啟動一次排序算法進行重排序,保持命令序列執行策略的一致性。算法的結果形成一個命令執行索引表,該表包含了隊列命令新的執行順序和相關參數。
  (4)Race-free狀態返回機制實現了命令完成返回信息的高度管線化。NCQ允許各磁盤隨時返回命令執行狀態,特別是使用中斷聚合把數條命令的中斷聚合在一起,達到數個命令執行狀態同時返回的效果。
通過對協議的改進和優化,減少了接口事務,降低了協議運行開銷,提高了NCQ協議工作的性能。
4  結束語
  NCQ是SATA設備請求命令的隊列協議,它應用了隊列智能重排序、協議流化、硬件自動FPDMA設置等技術,減少了主機和設備的握手次數和接口事務數量,提高了隊列負載性能,減少了尋道和旋轉延遲時間,使協議操作高效化,大大提高了SATA磁盤系統的性能。Intel的測試數據表明:使用基于AHCI的SATA HDD是ATA HDD綜合性能的1.51倍[5]。盡管如此,NCQ還存在排隊命令與非排隊命令不能混合使用,一旦發生錯誤,硬盤將放棄隊列中的全部命令,專用的接口協議AHCI發布滯后等不足之處。
參考文獻
1   Huffman A,Clark J.Serial ATA Native Command QueuingAn Exciting New Performance Feature for Serial ATA.www.serialata.org,2003
2   Intel Corporation.Serial ATA Ⅱ Native Command Queuing Overview www.intel.com,Apr 2003
3   Intel Corporation.Serial ATA:Advanced Host Controller Interface(Revision 1.0).www.intel.com,May 2004
4   Taylor R.Serial ATA:Application Consideration for the Enterprise[S].www.agilysys.com,Apr 2004
5   Huffman A,Garzik J.AHCI-Take advantage of Serial ATA Features.IDF Fall 2003,San Jose,Sep 2003
6   Worthington B L,Ganger G R,Patt Y L.Scheduling for modern disk drives and non-random workload.In:Michael Ley proceedings.Perfarmance Evaluation Review22(1).proc ACM SIGMETRICS conf.Vanderbilt University,Nashviue Tennessee,USA,1994
7   Geist R,Daniel S.A Continuum of Disk Scheduling Algorithms.ACM Trans On Computer System,1987;5(1)
8   Thomasian A,Liu C.Some New Disk Scheduling Policies and Their Performance.In:Marina Del Rey,Proceedings of the International Conference on Measurements and Modeling of Computer Systems(SIGMETRICS 2002),California USA,2002
9   Robbins S.A Disk Head Scheduling Simulator.In:Proc.35th SIGCSE Technical Symposium on Computer Science Education,Norfolk Virgina,2004

本站內容除特別聲明的原創文章之外,轉載內容只為傳遞更多信息,并不代表本網站贊同其觀點。轉載的所有的文章、圖片、音/視頻文件等資料的版權歸版權所有權人所有。本站采用的非本站原創文章及圖片等內容無法一一聯系確認版權者。如涉及作品內容、版權和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當措施,避免給雙方造成不必要的經濟損失。聯系電話:010-82306118;郵箱:[email protected]。
主站蜘蛛池模板: 欧美精品亚洲一区二区在线播放 | 欧美日韩国产一区三区 | 国产亚洲精品美女一区二区 | 中日韩一区二区三区 | 欧美一级在线毛片免费观看 | 欧美怡红院在线 | 久99久精品视频免费观看v | 国产成人精品免费视 | 精品成人在线观看 | 成人在线观看午夜 | 99视频在线国产 | 久久久久无码国产精品一区 | m男亚洲一区中文字幕 | 国产男女爽爽爽免费视频 | 欧美国产成人在线 | 欧美性色xo影院在线观看 | 中文日韩字幕一区在线观看 | 韩国在线精品福利视频在线观看 | 99精品久久99久久久久 | 一区二区三区精品国产 | www.av在线.com | 一区二区三区精品国产 | 日韩一级| 久草在线在线观看 | 综合91| 日本成人免费观看 | 大焦伊人| 手机看成人免费大片 | 国产欧美一区二区三区在线 | 2020国产成人免费视频 | 欧美色综合高清视频在线 | 99精品久久99久久久久 | 免费看特级淫片日本 | 成人看片黄a免费看视频 | 欧美一级大片免费观看 | 日韩欧美国产精品第一页不卡 | 综合亚洲欧美日韩一区二区 | 久久福利国产 | 在线精品视频在线观看高清 | 久久影院一区二区三区 | 国产日韩精品欧美一区视频 |