新四季網

一種固態硬碟及其控制裝置、系統、方法

2023-07-04 14:08:51

一種固態硬碟及其控制裝置、系統、方法
【專利摘要】本發明提供一種固態硬碟及其對應的控制裝置、控制系統和控制方法,該方法包括:創建一條原生命令隊列NCQ,並將VendorSpecific指令寫入NCQ的LBAField欄位;向固態硬碟下發該NCQ命令;固態硬碟接收NCQ命令後,解析其LBAField欄位,判斷LBAField欄位是否攜帶VendorSpecific指令代碼;若判斷為是,則根據VendorSpecific指令執行相應的操作,並反饋執行結果。本發明利用NCQ下發VendorSpecific指令,在不支持VendorSpecific命令的主機環境上同樣實現VendorSpecific對應的功能。
【專利說明】一種固態硬碟及其控制裝置、系統、方法
【技術領域】
[0001]本發明涉及計算機領域,尤其涉及一種固態硬碟及其對應的控制裝置、控制系統和控制方法。
【背景技術】
[0002]固態硬碟(Nand Flash)由控制單元和存儲單元(FLASH晶片)組成,簡單的說就是用固態電子存儲晶片陣列而製成的硬碟,固態硬碟的接口規範和定義、功能及使用方法上與普通硬碟的相同,在產品外形和尺寸上也與普通硬碟一致(參見中國專利申請「基於固態硬碟的計算機系統」 CN201210000778.3)。
[0003]目前固態硬碟廣泛應用於軍事、車載、工控、視頻監控、網絡監控、網絡終端、電力、醫療、航空、導航設備等領域。雖然目前成本較高,但也正在逐漸普及到DIY市場。固態硬碟相對於傳統硬碟,具有速度快、響應延時低、抗震動、靜音等優點。
[0004]但是由於存儲介質的改變,需要根據固態硬碟的特性提供一些功能,供主機調用以獲取高的性能及增加可靠性。這些功能一般都是採用Vendor Specific命令進行實現(參見中國專利申請「原生SATA的固態硬碟控制器」CN200810032053.6、美國專利「NAND flashmemory,,US8233325 以及「Increased NAND flash memory read throughput,,US8174892)。
[0005]但是在實際應用中,部分RAID卡、HBA卡、SPS (SATA Port Selector)晶片存在對ATA命令部分支持的情況,特別是對於ATA協議(ATA串行傳輸是一種高速的ATA協議。串行傳輸使用了 G比特技術和8b/10b編碼)中規定的Vendor Specif ic命令會出現不支持的情況。導致在這種主機環境下這些Vendor Specific命令無法下發,固態硬碟不能得到合適的配置,從而不能發揮出應有的性能及獲得可靠性的提升。
[0006]即使在支持Vendor Specif ic命令的主機環境中。由於SATA (Serial AdvancedTechnology Attachment, 一種基於行業標準的串行硬體驅動器接口)協議規定,NCQ(NativeCommand Queue)命令和非NCQ命令不能混合執行,當下發這些為固態硬碟設計的VendorSpecific命令時,必須先停止業務(即NCQ命令),這樣會造成性能的短暫下降。

【發明內容】

[0007]為解決上述現有技術中存在的技術問題,本發明提供一種固態硬碟及其對應的控制裝置、控制系統和控制方法,本發明提供的技術方案主要是利用NCQ命令下發VendorSpecific指令代碼,在不支持Vendor Specific命令的主機環境上同樣實現VendorSpecific命令對應的功能,從而避免在某些主機環境上無法下發Vendor Specific命令的情況。同時本發明提供的技術方案可以將下發Vendor Specif ic命令對固態硬碟性能造成的影響降到最低程度,保證固態硬碟在各種環境下均可以按照設計目的獲得高的性能和良好的可靠性。
[0008]為解決上述技術問題,本發明提供一種固態硬碟控制方法,包括:
創建一條原生命令隊列NCQ,並將設定的Vendor Specif ic指令代碼寫入到NCQ命令的LBA Field 欄位;
向固態硬碟下發攜帶有所述Vendor Specific指令代碼的NCQ命令;
所述固態硬碟接收所述NCQ命令後,解析其LBA Field欄位,並判斷所述LBA Field欄位是否攜帶Vendor Specific指令代碼;
若所述判斷為是,則根據所述Vendor Specific指令代碼執行相應的操作,並反饋執行結果。
[0009]其中,所述判斷所述LBA Field欄位是否攜帶Vendor Specif ic指令代碼之後還包括:若所述判斷為否,則進一步判斷所述LBA Field欄位是否在所述固態硬碟的讀寫範圍內;
若判斷為是,則執行相應讀寫操作,包括:讀取固態硬碟上的相應數據和/或將相應數據寫入固態硬碟;若判斷為否,則反饋命令失敗。
[0010]其中,所述NCQ命令包括:READFPDMA QUEUED 命令和 / 或 WRITE FPDMA QUEUED 命令;
所述NCQ命令的LBA Field欄位的有效值為48Bit,並定義OxFFFFFFFFFOO-OxFFFFFFFFFFFF 的範圍為 Vendor Specific 指令代碼。
[0011]其中,所述固態硬碟接收所述NCQ命令後,解析其LBA Field欄位,並判斷所述LBAField欄位是否攜帶Vendor Specific指令代碼,包括
固態硬碟接收所述NCQ命令後,解析其LBA Field欄位,若所述LBA Field欄位在OxFFFFFFFFFOO-OxFFFFFFFFFFFF的範圍內,則判定其為Vendor Specific指令代碼;若所述LBA Field欄位在OxFFFFFFFFFOO-OxFFFFFFFFFFFF的範圍外,則進一步判斷其是否在所述固態硬碟的讀寫範圍內。
[0012]其中,所述根據所述Vendor Specific指令代碼執行相應的操作,並反饋執行結果,包括:
若所述Vendor Specific指令代碼被攜帶在READ FPDMA QUEUED命令中,則根據所述Vendor Specific指令代碼,在固態硬碟中查詢相應的數據並反饋給主機,並通知主機命令處理完成;
若所述Vendor Specific指令代碼被攜帶在WRITE FPDMA QUEUED命令中,則根據所述Vendor Specific指令代碼,在固態硬碟中執行相應的設置操作,並通知主機命令處理完成。
[0013]其中,所述若所述Vendor Specific指令代碼被攜帶在WRITE FPDMA QUEUED命令中,則根據所述Vendor Specific指令代碼,在固態硬碟中執行相應的設置操作,並通知主機命令處理完成中,還包括:
如果設置不成功,則通知主機命令處理失敗;並將錯誤的原因記錄在NCQ CommandError Log中,待主機讀取。
[0014]相應的,本發明還提供一種固態硬碟控制裝置,包括:
代碼植入模塊,用於創建原生命令隊列NCQ,並將設定的Vendor Specific指令代碼寫入到NCQ命令的LBA Field欄位;
命令下發模塊,用於向固態硬碟下發攜帶有所述Vendor Specific指令代碼的NCQ命令;使所述固態硬碟接收所述NCQ命令後,解析其LBA Field欄位,並判斷所述LBA Field欄位是否攜帶Vendor Specific指令代碼;若所述判斷為是,則根據所述Vendor Specific指令代碼執行相應的操作,並反饋執行結果。
[0015]其中,所述代碼植入模塊包括:
命令創建單元,用於創建所述NCQ命令,所述NCQ命令包括:READ FPDMA QUEUED命令和 / 或 WRITE FPDMA QUEUED 命令;
代碼植入單元,用於在命令創建單元所創建的NCQ命令的LBA Field欄位寫入Vendor Specif ic指令代碼;所述NCQ命令的LBA Field欄位的有效值為48Bit,並定義OxFFFFFFFFFOO-OxFFFFFFFFFFFF 的範圍為 Vendor Specific 指令代碼。
[0016]相應的,本發明還提供一種固態硬碟,包括:
命令解析模塊,用於在接收到NCQ命令後,解析其LBA Field欄位,並判斷所述LBAField欄位是否攜帶Vendor Specific指令代碼;所述NCQ命令是由主機創建,並將設定的Vendor Specif ic指令代碼寫入到NCQ命令的LBA Field欄位後向固態硬碟下發的;
命令執行模塊,用於在所述命令解析模塊判定所述NCQ命令的LBA Field欄位攜帶Vendor Specific指令代碼時,根據所述Vendor Specific指令代碼執行相應的操作,並反饋執行結果。
[0017]其中,所述命令解析模塊包括:
第一解析單元,用於在接收到NCQ命令後,解析其LBA Field欄位,並判斷所述LBAField欄位是否攜帶Vendor Specific指令代碼;
第二解析單元,用於在所述第一解析單元判定所述LBA Field欄位未攜帶VendorSpecific指令代碼時,進一步判斷所述LBA Field欄位是否在所述固態硬碟的讀寫範圍內;若判斷為是,則命令執行模塊執行相應讀寫操作,包括:讀取固態硬碟上的相應數據和/或將相應數據寫入固態硬碟;若判斷為否,則反饋命令失敗。
[0018]其中,所述第一解析單元用於在接收所述NCQ命令後,解析其LBA Field欄位,若所述LBA Field欄位在OxFFFFFFFFFOO-OxFFFFFFFFFFFF的範圍內,則判定其為VendorSpecific 指令代碼;若所述 LBA Field 欄位在 OxFFFFFFFFFOO-OxFFFFFFFFFFFF 的範圍外,則通知所述第二解析單元進一步判斷其是否在所述固態硬碟的讀寫範圍內。
[0019]其中,所述命令執行模塊包括:
第一執行單元,用於在所述Vendor Specific指令代碼被攜帶在READ FPDMA QUEUED命令中時,根據所述Vendor Specif ic指令代碼,在固態硬碟中查詢相應的數據並反饋給主機;
第二執行單元,用於在所述Vendor Specific指令代碼被攜帶在WRITE FPDMA QUEUED命令中時,根據所述Vendor Specif ic指令代碼,在固態硬碟中執行相應的設置操作;
執行反饋單元,用於在所述第一執行單元和/或第二執行單元執行相應的VendorSpecific指令代碼後,通知主機命令處理完成。
[0020]其中,所述執行反饋單元還用於在所述第二執行單元執行設置操作不成功時,通知主機命令處理失敗;並將錯誤的原因記錄在NCQ Command Error Log中,待主機讀取。
[0021]最後,本發明還提供一種固態硬碟控制系統,該系統包括上述固態硬碟控制裝置以及上述固態硬碟。
[0022]本發明提供的固態硬碟及其對應的控制裝置、控制系統和控制方法,利用NCQ命令下發Vendor Specif ic指令代碼的方式,在不支持Vendor Specif ic命令的主機環境上同樣實現Vendor Specific命令對應的功能,從而避免在某些主機環境上無法下發VendorSpecific命令的情況,同時可以將下發Vendor Specific命令對固態硬碟性能造成的影響降到最低程度。
[0023]進一步的,在本發明提供的技術方案中,由於NCQ命令具有並發和亂序執行的特性,在利用NCQ命令執行Vendor Specific指令的時候,不會對進行中的業務(即讀寫NCQCommand)產生影響,保持比較平穩的性能。
[0024]進一步的,在本發明提供的技術方案中,NCQ命令作為SATA協議中非常重要的一種傳輸協議,READ FPDMAQUEUED 和 WRITE FPDMA QUEUED 命令是 RAID 卡、HBA 卡及 SPS 晶片均需要支持的命令,使用該方案,保證了為提升固態硬碟性能和可靠性設計的VendorSpecific指令可以在不同平臺及主機上得以執行。
【專利附圖】

【附圖說明】
[0025]為了更清楚地說明本發明實施例或現有技術中的技術方案,下面將對實施例或現有技術描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發明的一些實施例,對於本領域普通技術人員來講,在不付出創造性勞動的前提下,還可以根據這些附圖獲得其他的附圖;
圖1為本發明提供的固態硬碟控制方法第一實施例流程示意圖;
圖2為本發明提供的固態硬碟控制方法第二實施例流程示意圖;
圖3為本發明提供的固態硬碟控制方法第三實施例流程示意圖;
圖4為本發明提供的固態硬碟控制裝置實施例結構示意圖;
圖5為本發明實施例提供的固態硬碟第一實施例結構示意圖。
[0026]
【具體實施方式】
[0027]本發明提供的固態硬碟及其對應的控制裝置、控制系統和控制方法,利用NCQ命令下發Vendor Specif ic指令代碼的方式,在不支持Vendor Specif ic命令的主機環境上同樣實現Vendor Specific命令對應的功能,從而避免在某些主機環境上無法下發VendorSpecific命令的情況,同時本發明提供的技術方案可以將下發Vendor Specific命令對固態硬碟性能造成的影響降到最低程度。
[0028]參見圖1為本發明提供的固態硬碟控制方法第一實施例流程示意圖。如圖1所示,該固態硬碟控制方法包括:
步驟S101,創建一條NCQ命令(Native Command Queuing,原生命令隊列),並將設定的Vendor Specif ic指令代碼寫入到NCQ命令的LBA Field欄位。更為具體的,NCQ技術是一種使硬碟內部優化工作負荷執行順序,通過對內部隊列中的命令進行重新排序實現智能數據管理,改善硬碟因機械部件而受到的各種性能制約。當用戶的應用程式發送多條指令到用戶的硬碟,NCQ硬碟可以優化完成這些指令的順序,從而降低機械負荷達到提升性能的目的。
[0029]步驟S102,向固態硬碟下發攜帶有所述Vendor Specif ic指令代碼的NCQ命令。[0030]步驟S103,所述固態硬碟接收所述NCQ命令後,解析其LBA Field欄位,並判斷所述LBA Field欄位是否攜帶Vendor Specific指令代碼。若所述判斷為是,則執行步驟S104;若判斷為否,則執行步驟S105。需要說明的是,步驟S105及其之後的步驟為本發明實施例提供優選實施步驟,本領域技術人員可以理解的是,步驟SlOl至S104已經構成完整的技術方案,可以解決本發明所希望解決的技術問題。
[0031]步驟S104,根據所述Vendor Specific指令代碼執行相應的操作,並反饋執行結
果O
[0032]優選的,該固態硬碟控制方法還進一步包括:
步驟S105,若在步驟S103中判定所述LBA Field欄位未攜帶Vendor Specific指令代碼,則進一步判斷所述LBA Field欄位是否在所述固態硬碟的讀寫範圍內;若判斷為是,則執行步驟S106,若判斷為否,則執行步驟S107
步驟S106,則執行相應讀寫操作,包括:讀取固態硬碟上的相應數據和/或將相應數據寫入固態硬碟。
[0033]步驟S107,反饋命令執行失敗。
[0034]在本實施例中,由於NCQ命令具有並發和亂序執行的特性,本發明提供的固態硬碟控制方法利用NCQ命令執行Vendor Specif ic指令的時候,不會對進行中的業務(即讀寫NCQ Command)產生影響,保持比較平穩的性能。同時,NCQ命令作為SATA協議中非常重要的一種傳輸協議,READ FPDMAQUEUED 和 WRITE FPDMA QUEUED 命令是 RAID 卡、HBA 卡及 SPS晶片均需要支持的命令,使用該方案,保證了為提升固態硬碟性能和可靠性設計的VendorSpecific指令可以在不同平臺及主機上得以執行。
[0035]更為具體的,在本實施例中,所述NCQ命令包括:READ FPDMA QUEUED (CommandCode 0x60)命令和 / 或 WRITE FPDMA QUEUED (Command Code 0x61)命令。
[0036]READ FPDMA QUEUED 主要用於查詢類的 Vendor Specific 指令。WRITE FPDMAQUEUED用於設置類的Vendor Specific指令。
[0037]READ FPDMA QUEUED 命令和 WRITE FPDMA QUEUED 命令的 LBA Field 欄位的有效值為 48Bit,在本發明中,定義 OxFFFFFFFFFOO-OxFFFFFFFFFFFF 的範圍為 Vendor Specific指令代碼,即利用這兩條命令的LBA Field用來存放相應的Vendor Specific指令,在此情況下,最多可支持256個Vendor Specific指令。
[0038]LBA Field在正常的業務中存放的是主機需要訪問的碟片地址,在一個LogicBlock為512Bytes的情況下,OxFFFFFFFFFFOO對應的容量是131071TB,而目前固態硬碟的單盤最大容量還不到1TB。在一定時間內,單盤的容量也不會到這麼大,故本發明提供的技術方案不會和正常的讀寫命令產生衝突。
[0039]本實施例提供的該固態硬碟控制方法利用NCQ命令下發Vendor Specific指令代碼的方式,在不支持Vendor Specif ic命令的主機環境上同樣實現Vendor Specific命令對應的功能,從而避免在某些主機環境上無法下發Vendor Specific命令的情況,同時可以將下發Vendor Specific命令對固態硬碟性能造成的影響降到最低程度。
[0040]在如圖2和圖3所示的兩個固態硬碟控制方法實施例中,將分別以NCQ命令為READ FPDMA QUEUED命令和NCQ命令為WRITE FPDMA QUEUED命令時的情況分別進行更加詳細的描述本發明提供的固態硬碟控制方法的流程步驟。[0041]需要說明的是READ FPDMA QUEUED命令和WRITE FPDMA QUEUED命令這兩條命令除了數據準備部分是按照本發明實施例提供的方案處理外,其他的傳輸過程,交互過程,錯誤處理過程均是按照SATA協議的規範進行。
[0042]參見圖2為本發明提供的固態硬碟控制方法第二實施例流程示意圖。如圖所示,該固態硬碟控制方法包括:
步驟S201,主機組建一條READ FPDMA QUEUED命令,並將設定好的Vendor Specific指令代碼寫入到LBA Field,然後將該命令下發給固態硬碟。
[0043]步驟S202,固態硬碟接收到該READ FPDMA QUEUED命令後,解析其LBAField 欄位。若所述 LBA Field 欄位在 OxFFFFFFFFFOO-OxFFFFFFFFFFFF 的範圍內,則判定其為Vendor Specific指令代碼,執行步驟S203 ;若所述LBA Field欄位在OxFFFFFFFFFOO-OxFFFFFFFFFFFF的範圍外,則進一步判斷其是否在所述固態硬碟的讀寫範圍(Disk Size)內,若在Disk Size的範圍內,則執行步驟S204。如果LBA Field的範圍不在上述兩種情況的範圍內,則返回主機命令執行錯誤。
[0044]步驟S203, LBA的數值是Vendor Specific指令的範圍,進入相應的VendorSpecific指令處理流程,將數據準備好。
[0045]步驟S204, LBA的數值不是在Vendor Specific指令的範圍,但是在Disk Size的範圍內,則讀取固態硬碟上的相應數據。
[0046]步驟S205,在步驟S203或步驟204將數據準備完成後,將數據返回給主機,然後通知主機命令處理完成。
[0047]參見圖3為本發明提供的固態硬碟控制方法第三實施例流程示意圖。如圖所示,該固態硬碟控制方法包括:
步驟S301,主機組建一條WRITE FPDMA QUEUED命令,並將設定好的Vendor Specific指令代碼寫入到LBA Field,然後將該命令下發給固態硬碟,且主機隨後將數據下發到該固態硬碟。
[0048]步驟S302,固態硬碟接收到該WRITE FPDMA QUEUED命令命令後,解析其LBAField 欄位。若所述 LBA Field 欄位在 OxFFFFFFFFFOO-OxFFFFFFFFFFFF 的範圍內,則判定其為Vendor Specific指令代碼,執行步驟S303 ;若所述LBA Field欄位在OxFFFFFFFFFOO-OxFFFFFFFFFFFF的範圍外,則進一步判斷其是否在所述固態硬碟的讀寫範圍(Disk Size)內,若在Disk Size的範圍內,則執行步驟S304。如果LBA Field的範圍不在上述兩種情況的範圍內,則返回主機命令執行錯誤。
[0049]步驟S303, LBA的數值是Vendor Specific指令的範圍,進入相應的VendorSpecific指令處理流程,在固態硬碟中執行相應的設置操作。
[0050]步驟S304, LBA的數值不是在Vendor Specific指令的範圍,但是在Disk Size的範圍內,則將主機下發的數據寫入固態硬碟。
[0051]步驟S305,在步驟S303或步驟304執行完成後,通知主機命令處理完成。優選的,若步驟S303執行設置操作不成功,則通知主機命令處理失敗;並將錯誤的原因記錄在NCQCommand Error Log中,待主機讀取。
[0052]本發明提供的固態硬碟控制方法,利用NCQ命令下發Vendor Specific指令代碼的方式,在不支持Vendor Specif ic命令的主機環境上同樣實現Vendor Specific命令對應的功能,從而避免在某些主機環境上無法下發Vendor Specific命令的情況,同時可以將下發Vendor Specific命令對固態硬碟性能造成的影響降到最低程度。
[0053]進一步的,由於NCQ命令具有並發和亂序執行的特性,在利用本發明提供的技術方案的NCQ命令執行Vendor Specific指令的時候,不會對進行中的業務(即讀寫NCQCommand)產生影響,保持比較平穩的性能。
[0054]進一步的,NCQ命令作為SATA協議中非常重要的一種傳輸協議,READFPDMAQUEUED和WRITE FPDMA QUEUED命令是RAID卡、HBA卡及SPS晶片均需要支持的命令,使用該方案,保證了為提升固態硬碟性能和可靠性設計的Vendor Specific指令可以在不同平臺及主機上得以執行。
[0055]參見圖4,為本發明提供的固態硬碟控制裝置實施例結構示意圖,如圖所示,該裝置包括:
代碼植入模塊1,用於創建原生命令隊列NCQ,並將設定的Vendor Specific指令代碼寫入到NCQ命令的LBA Field欄位。
[0056]命令下發模塊2,用於向固態硬碟下發攜帶有所述Vendor Specific指令代碼的NCQ命令;所述固態硬碟接收所述NCQ命令後,解析其LBA Field欄位,並判斷所述LBAField欄位是否攜帶Vendor Specific指令代碼;若所述判斷為是,則根據所述VendorSpecific指令代碼執行相應的操作,並反饋執行結果。
[0057]更為具體的,所述代碼植入模塊I包括:命令創建單元11和代碼植入單元12。
[0058]命令創建單元11,用於創建所述NCQ命令,所述NCQ命令包括:READ FPDMA QUEUED命令和/或WRITE FPDMA QUEUED命令。READ FPDMA QUEUED主要用於查詢類的VendorSpecific 指令。WRITE FPDMA QUEUED 用於設置類的 Vendor Specific 指令。
[0059]代碼植入單元12,用於在命令創建單元11所創建的NCQ命令的LBA Field欄位寫Λ Vendor Specific指令代碼。更為具體的,所述NCQ命令的LBA Field欄位的有效值為48Bit,在本發明中定義 OxFFFFFFFFFOO-OxFFFFFFFFFFFF 的範圍為 Vendor Specific 指令代碼。即利用這兩條命令的LBA Field用來存放相應的Vendor Specif ic指令,在此情況下,最多可支持256個Vendor Specific指令。
[0060]LBA Field在正常的業務中存放的是主機需要訪問的碟片地址,在一個LogicBlock為512Bytes的情況下,OxFFFFFFFFFFOO對應的容量是131071TB,而目前固態硬碟的單盤最大容量還不到1TB。在一定時間內,單盤的容量也不會到這麼大,該方案不會和正常的讀寫命令產生衝突。
[0061]本發明提供的固態硬碟控制裝置利用NCQ命令下發Vendor Specif ic指令代碼的方式,在不支持Vendor Specif ic命令的主機環境上同樣實現Vendor Specific命令對應的功能,從而避免在某些主機環境上無法下發Vendor Specific命令的情況,同時可以將下發Vendor Specific命令對固態硬碟性能造成的影響降到最低程度。
[0062]進一步的,由於NCQ命令具有並發和亂序執行的特性,在利用本發明提供的技術方案的NCQ命令執行Vendor Specific指令的時候,不會對進行中的業務(即讀寫NCQCommand)產生影響,保持比較平穩的性能。
[0063]進一步的,NCQ命令作為SATA協議中非常重要的一種傳輸協議,READFPDMAQUEUED和WRITE FPDMA QUEUED命令是RAID卡、HBA卡及SPS晶片均需要支持的命令,使用該方案,保證了為提升固態硬碟性能和可靠性設計的Vendor Specific指令可以在不同平臺及主機上得以執行。
[0064]參見圖5,為本發明實施例提供的固態硬碟第一實施例結構示意圖。本實施例提供的固態硬碟可以與上一實施例中的固態硬碟控制裝置配合,構成完整的固態硬碟控制系統,並實施本發明提供的固態硬碟控制方法實施例中的控制流程和步驟。如圖5所示,該固態硬碟包括:命令解析模塊3和命令執行模塊4。
[0065]命令解析模塊3,用於在接收到NCQ命令後,解析其LBA Field欄位,並判斷所述LBA Field欄位是否攜帶Vendor Specif ic指令代碼;所述NCQ命令是由主機(固態硬碟控制裝置)創建,並將設定的Vendor Specific指令代碼寫入到NCQ命令的LBA Field欄位後向固態硬碟下發的。
[0066]命令執行模塊4,用於在所述命令解析模塊3判定所述NCQ命令的LBA Field欄位攜帶Vendor Specific指令代碼時,根據所述Vendor Specific指令代碼執行相應的操作,並反饋執彳了結果。
[0067]進一步的,該命令解析模塊3包括:第一解析單元31和第二解析單元32。
[0068]第一解析單元31,用於在接收到NCQ命令後,解析其LBA Field欄位,並判斷所述LBA Field欄位是否攜帶Vendor Specific指令代碼。若LBA Field欄位中Vendor Specific指令代碼的設定方式與上一實施例相同,則在本實施例中,第一解析單元31在接收所述NCQ命令後解析其LBA Field欄位,若所述LBA Field欄位在OxFFFFFFFFFOO-OxFFFFFFFFFFFF的範圍內,則判定其為Vendor Specific指令代碼;若所述LBA Field欄位在OxFFFFFFFFFOO-OxFFFFFFFFFFFF的範圍外,則通知所述第二解析單元32進一步判斷其是否在所述固態硬碟的讀寫範圍內。
[0069]第二解析單元32,用於在所述第一解析單元31判定所述LBA Field欄位未攜帶Vendor Specif ic指令代碼時,進一步判斷所述LBA Field欄位是否在所述固態硬碟的讀寫範圍內;若判斷為是,則通知命令執行模塊4按照現有技術中的NCQ命令執行相應讀寫操作,包括:讀取固態硬碟上的相應數據和/或將相應數據寫入固態硬碟;若判斷為否,則反饋命令失敗。
[0070]進一步的,所述命令執行模塊4包括:第一執行單元41、第二執行單元42和執行反饋單元43。
[0071]第一執行單元41,用於在第一解析單元31判定所述Vendor Specific指令代碼被攜帶在NCQ命令的LBA Field欄位中,且該NCQ命令為READ FPDMA QUEUED時,根據所述Vendor Specific指令代碼,在固態硬碟中查詢相應的數據並反饋給主機(固態硬碟控制裝置)。
[0072]第二執行單元42,用於在用於在第一解析單元31判定所述Vendor Specific指令代碼被攜帶在NCQ命令的LBA Field欄位中,且該NCQ命令為WRITE FPDMA QUEUED時,根據所述Vendor Specific指令代碼,在固態硬碟中執行相應的設置操作。
[0073]執行反饋單元43,用於在所述第一執行單元41和/或第二執行單元42執行相應的Vendor Specif ic指令代碼後,通知主機命令處理完成。優選的,執行反饋單元43在所述第二執行單元42執行設置操作不成功時,通知主機命令處理失敗;並將錯誤的原因記錄在NCQ Command Error Log中,待主機讀取。[0074]需要說明的是,本實施例提供的固態硬碟對於READ FPDMA QUEUED命令和WRITEFPDMA QUEUED命令這兩條命令除了數據準備部分是按照本發明實施例提供的方案處理外,其他的傳輸過程,交互過程,錯誤處理過程均是按照SATA協議的規範進行。
[0075]本發明提供的固態硬碟,可以接收主機利用NCQ命令下發Vendor Specific指令代碼的方式,在不支持Vendor Specif ic命令的主機環境上同樣實現Vendor Specific命令對應的功能,從而避免在某些主機環境上無法下發Vendor Specific命令的情況,同時可以將下發Vendor Specific命令對固態硬碟性能造成的影響降到最低程度。
[0076]進一步的,由於NCQ命令具有並發和亂序執行的特性,在利用本發明提供的技術方案的NCQ命令執行Vendor Specific指令的時候,不會對進行中的業務(即讀寫NCQCommand)產生影響,保持比較平穩的性能。
[0077]進一步的,NCQ命令作為SATA協議中非常重要的一種傳輸協議,READFPDMAQUEUED和WRITE FPDMA QUEUED命令是RAID卡、HBA卡及SPS晶片均需要支持的命令,使用該方案,保證了為提升固態硬碟性能和可靠性設計的Vendor Specific指令可以在不同平臺及主機上得以執行。
[0078]本領域普通技術人員可以理解實現上述實施例方法中的全部或部分流程,是可以通過電腦程式來指令相關的硬體來完成,所述的程序可存儲於一計算機可讀取存儲介質中,該程序在執行時,可包括如上述各方法的實施例的流程。其中,所述的存儲介質可為磁碟、光碟、只讀存儲記憶體(Read-Only Memory, ROM)或隨機存儲記憶體(Random AccessMemory, RAM)等。
[0079]以上內容是結合具體的優選實施方式對本發明所作的進一步詳細說明,不能認定本發明的具體實施只局限於這些說明。對於本發明所屬【技術領域】的普通技術人員來說,在不脫離本發明構思的前提下,還可以做出若干簡單推演或替換,都應當視為屬於本發明的保護範圍。
【權利要求】
1.一種固態硬碟控制方法,其特徵在於,包括: 創建一條原生命令隊列NCQ,並將設定的Vendor Specif ic指令代碼寫入到NCQ命令的LBA Field 欄位; 向固態硬碟下發攜帶有所述Vendor Specif ic指令代碼的NCQ命令; 所述固態硬碟接收所述NCQ命令後,解析其LBA Field欄位,並判斷所述LBA Field欄位是否攜帶Vendor Specific指令代碼; 若所述判斷為是,則根據所述Vendor Specific指令代碼執行相應的操作,並反饋執行結果。
2.如權利要求1所述的固態硬碟控制方法,其特徵在於,所述判斷所述LBAField欄位是否攜帶Vendor Specific指令代碼之後還包括: 若所述判斷為否,則進一步判斷所述LBA Field欄位是否在所述固態硬碟的讀寫範圍內;若所述判斷為是,則執行相應讀寫操作,包括:讀取固態硬碟上的相應數據和/或將相應數據寫入固態硬碟;若判斷為否,則反饋命令失敗。
3.如權利要求1或2所述的固態硬碟控制方法,其特徵在於,所述NCQ命令包括:READFPDMA QUEUED 命令和 / 或 WRITE FPDMA QUEUED 命令; 所述NCQ命令的LBA Field欄位的有效值為48Bit,並定義OxFFFFFFFFFOO-OxFFF FFFFFFFFF 的範圍為 Vendor Specific 指令代碼。
4.如權利要求3所述的固態硬碟控制方法,其特徵在於,所述固態硬碟接收所述NCQ命令後,解析其LBA Field欄位,並判斷所述LBA Field欄位是否攜帶Vendor Specific指令代碼,包括 固態硬碟接收所述NCQ命令後,解析其LBA Field欄位,若所述LBA Field欄位在OxFFFFFFFFFOO-OxFFFFFFFFFFFF的範圍內,則判定其為Vendor Specific指令代碼;若所述LBA Field欄位在OxFFFFFFFFFOO-OxFFFFFFFFFFFF的範圍外,則進一步判斷其是否在所述固態硬碟的讀寫範圍內。
5.如權利要求3所述的固態硬碟控制方法,其特徵在於,所述根據所述VendorSpecific指令代碼執行相應的操作,並反饋執行結果,包括: 若所述Vendor Specific指令代碼被攜帶在READ FPDMA QUEUED命令中,則根據所述Vendor Specific指令代碼,在固態硬碟中查詢相應的數據並反饋給主機,並通知主機命令處理完成; 若所述Vendor Specific指令代碼被攜帶在WRITE FPDMA QUEUED命令中,則根據所述Vendor Specific指令代碼,在固態硬碟中執行相應的設置操作,並通知主機命令處理完成。
6.如權利要求5所述的固態硬碟控制方法,其特徵在於,所述若所述VendorSpecific指令代碼被攜帶在WRITE FPDMA QUEUED命令中,則根據所述Vendor Specific指令代碼,在固態硬碟中執行相應的設置操作,並通知主機命令處理完成中,還包括: 如果設置不成功,則通知主機命令處理失敗;並將錯誤的原因記錄在NCQ CommandError Log中,待主機讀取。
7.一種固態硬碟控制裝置,其特徵在於,包括: 代碼植入模塊,用於創建原生命令隊列NCQ,並將設定的Vendor Specific指令代碼寫入到NCQ命令的LBA Field欄位; 命令下發模塊,用於向固態硬碟下發攜帶有所述Vendor Specific指令代碼的NCQ命令;使所述固態硬碟接收所述NCQ命令後,解析其LBA Field欄位,並判斷所述LBA Field欄位是否攜帶Vendor Specific指令代碼;若所述判斷為是,則根據所述Vendor Specific指令代碼執行相應的操作,並反饋執行結果。
8.如權利要求7所述的固態硬碟控制裝置,其特徵在於,所述代碼植入模塊包括: 命令創建單元,用於創建所述NCQ命令,所述NCQ命令包括:READ FPDMA QUEUED命令和 / 或 WRITE FPDMA QUEUED 命令; 代碼植入單元,用於在命令創建單元所創建的NCQ命令的LBA Field欄位寫入Vendor Specific指令代碼;所述NCQ命令的LBA Field欄位的有效值為48Bit,並定義OxFFFFFFFFFOO-OxFFFFFFFFFFFF 的範圍為 Vendor Specific 指令代碼。
9.一種固態硬碟,其特徵在於,包括: 命令解析模塊,用於在接收到NCQ命令後,解析其LBA Field欄位,並判斷所述LBAField欄位是否攜帶Vendor Specific指令代碼;所述NCQ命令是由主機創建,並將設定的Vendor Specif ic指令代碼寫入到NCQ命令的LBA Field欄位後向固態硬碟下發的; 命令執行模塊,用於在所述命令解析模塊判定所述NCQ命令的LBA Field欄位攜帶Vendor Specific指令代碼時,根據所述Vendor Specific指令代碼執行相應的操作,並反饋執行結果。
10.如權利要求9所述的固態硬碟,其特徵在於,所述命令解析模塊包括: 第一解析單元,用於在接收到NCQ命令後,解析其LBA Field欄位,並判斷所述LBAField欄位是否攜帶Vendor Specific指令代碼; 第二解析單元,用於在所述第一解析單元判定所述LBA Field欄位未攜帶VendorSpecific指令代碼時,進一步判斷所述LBA Field欄位是否在所述固態硬碟的讀寫範圍內;若判斷為是,則命令執行模塊執行相應讀寫操作;若判斷為否,則反饋命令失敗。
11.如權利要求10所述的固態硬碟,其特徵在於,所述第一解析單元用於在接收所述NCQ命令後,解析其LBA Field欄位,若所述LBA Field欄位在OxFFFFFFFFFOO-OxFFFFFFFFFFFF的範圍內,則判定其為Vendor Specific指令代碼;若所述LBA Field欄位在OxFFFFFFFFFOO-OxFFFFFFFFFFFF的範圍外,則通知所述第二解析單元進一步判斷其是否在所述固態硬碟的讀寫範圍內。
12.如權利要求9所述的固態硬碟,其特徵在於,所述命令執行模塊包括: 第一執行單元,用於在所述Vendor Specific指令代碼被攜帶在READ FPDMA QUEUED命令中時,根據所述Vendor Specif ic指令代碼,在固態硬碟中查詢相應的數據並反饋給主機; 第二執行單元,用於在所述Vendor Specific指令代碼被攜帶在WRITE FPDMA QUEUED命令中時,根據所述Vendor Specif ic指令代碼,在固態硬碟中執行相應的設置操作; 執行反饋單元,用於在所述第一執行單元和/或第二執行單元執行相應的VendorSpecific指令代碼後,通知主機命令處理完成。
13.如權利要求12所述的固態硬碟,其特徵在於,所述執行反饋單元還用於在所述第二執行單元執行設置操作不成功時,通知主機命令處理失敗;並將錯誤的原因記錄在NCQCommand Error Log中,待主機讀取。
14.一種固態硬碟控制系統,其特徵在於,包括:如權利要求7或8所述的固態硬碟控制裝置;以及如權 利要求9至13中任一項所述的固態硬碟。
【文檔編號】G06F3/06GK103942005SQ201310022799
【公開日】2014年7月23日 申請日期:2013年1月22日 優先權日:2013年1月22日
【發明者】黎智, 李欣, 王燦, 楊繼濤, 張琴, 李程, 向志華 申請人:王燦, 黎智, 李欣, 楊繼濤, 李程, 張琴, 向志華

同类文章

一種新型多功能組合攝影箱的製作方法

一種新型多功能組合攝影箱的製作方法【專利摘要】本實用新型公開了一種新型多功能組合攝影箱,包括敞開式箱體和前攝影蓋,在箱體頂部設有移動式光源盒,在箱體底部設有LED脫影板,LED脫影板放置在底板上;移動式光源盒包括上蓋,上蓋內設有光源,上蓋部設有磨沙透光片,磨沙透光片將光源封閉在上蓋內;所述LED脫影

壓縮模式圖樣重疊檢測方法與裝置與流程

本發明涉及通信領域,特別涉及一種壓縮模式圖樣重疊檢測方法與裝置。背景技術:在寬帶碼分多址(WCDMA,WidebandCodeDivisionMultipleAccess)系統頻分復用(FDD,FrequencyDivisionDuplex)模式下,為了進行異頻硬切換、FDD到時分復用(TDD,Ti

個性化檯曆的製作方法

專利名稱::個性化檯曆的製作方法技術領域::本實用新型涉及一種檯曆,尤其涉及一種既顯示月曆、又能插入照片的個性化檯曆,屬於生活文化藝術用品領域。背景技術::公知的立式檯曆每頁皆由月曆和畫面兩部分構成,這兩部分都是事先印刷好,固定而不能更換的。畫面或為風景,或為模特、明星。功能單一局限性較大。特別是畫

一種實現縮放的視頻解碼方法

專利名稱:一種實現縮放的視頻解碼方法技術領域:本發明涉及視頻信號處理領域,特別是一種實現縮放的視頻解碼方法。背景技術: Mpeg標準是由運動圖像專家組(Moving Picture Expert Group,MPEG)開發的用於視頻和音頻壓縮的一系列演進的標準。按照Mpeg標準,視頻圖像壓縮編碼後包

基於加熱模壓的纖維增強PBT複合材料成型工藝的製作方法

本發明涉及一種基於加熱模壓的纖維增強pbt複合材料成型工藝。背景技術:熱塑性複合材料與傳統熱固性複合材料相比其具有較好的韌性和抗衝擊性能,此外其還具有可回收利用等優點。熱塑性塑料在液態時流動能力差,使得其與纖維結合浸潤困難。環狀對苯二甲酸丁二醇酯(cbt)是一種環狀預聚物,該材料力學性能差不適合做纖

一種pe滾塑儲槽的製作方法

專利名稱:一種pe滾塑儲槽的製作方法技術領域:一種PE滾塑儲槽一、 技術領域 本實用新型涉及一種PE滾塑儲槽,主要用於化工、染料、醫藥、農藥、冶金、稀土、機械、電子、電力、環保、紡織、釀造、釀造、食品、給水、排水等行業儲存液體使用。二、 背景技術 目前,化工液體耐腐蝕貯運設備,普遍使用傳統的玻璃鋼容

釘的製作方法

專利名稱:釘的製作方法技術領域:本實用新型涉及一種釘,尤其涉及一種可提供方便拔除的鐵(鋼)釘。背景技術:考慮到廢木材回收後再加工利用作業的方便性與安全性,根據環保規定,廢木材的回收是必須將釘於廢木材上的鐵(鋼)釘拔除。如圖1、圖2所示,目前用以釘入木材的鐵(鋼)釘10主要是在一釘體11的一端形成一尖

直流氧噴裝置的製作方法

專利名稱:直流氧噴裝置的製作方法技術領域:本實用新型涉及ー種醫療器械,具體地說是ー種直流氧噴裝置。背景技術:臨床上的放療過程極易造成患者的局部皮膚損傷和炎症,被稱為「放射性皮炎」。目前對於放射性皮炎的主要治療措施是塗抹藥膏,而放射性皮炎患者多伴有局部疼痛,對於止痛,多是通過ロ服或靜脈注射進行止痛治療

新型熱網閥門操作手輪的製作方法

專利名稱:新型熱網閥門操作手輪的製作方法技術領域:新型熱網閥門操作手輪技術領域:本實用新型涉及一種新型熱網閥門操作手輪,屬於機械領域。背景技術::閥門作為流體控制裝置應用廣泛,手輪傳動的閥門使用比例佔90%以上。國家標準中提及手輪所起作用為傳動功能,不作為閥門的運輸、起吊裝置,不承受軸向力。現有閥門

用來自動讀取管狀容器所載識別碼的裝置的製作方法

專利名稱:用來自動讀取管狀容器所載識別碼的裝置的製作方法背景技術:1-本發明所屬領域本發明涉及一種用來自動讀取管狀容器所載識別碼的裝置,其中的管狀容器被放在循環於配送鏈上的文檔匣或託架裝置中。本發明特別適用於,然而並非僅僅專用於,對引入自動分析系統的血液樣本試管之類的自動識別。本發明還涉及專為實現讀