。狀態(tài)機的示例性實現(xiàn)包括硬件(例如,邏輯門和/或電路、專 用狀態(tài)機電路或硬連線控制電路)、軟件(例如,固件或微碼)或硬件和軟件的組合。在某 些實施方式中,狀態(tài)機中的一個或多個至少部分經(jīng)由進行更新的固件來實現(xiàn)。在各種實施 方式中,狀態(tài)機中的一個或多個部分經(jīng)由圖IA的SSD控制器100、部分經(jīng)由CPU內核172執(zhí) 行的固件和/或部分經(jīng)由存儲在圖IB和圖IC的固件存儲106中的固件來實現(xiàn)。
[0358] 在各種實施方式中,圖2和圖3描述的操作和/或功能的所有或任意部分例如通 過圖IA的身份管理182或根據(jù)圖IA的身份管理182來實現(xiàn)。在某些實施方式中,電力移 除和施加(比如相對于圖2的206P和圖3的307P)經(jīng)由設備的控制器的電路中包括的上 電復位電路(例如,圖IA的SSD控制器100中包括的電路)來確定。
[0359] 在各種實施方式中,相對于圖2和/或圖3中描述的ID信息進行的一個或多個操 作(例如,保護、解除保護、提供、接收、讀取或寫入)包括訪問固件存儲106的所有或任意 部分。例如,在某些實施方式中,圖2的203和207包括寫入固件存儲106的至少一部分 (比如設置并清除指示保護ID信息免受修改的標志)。再如,在某些實施方式中,圖3的 302和306分別包括讀取并寫入固件存儲106的至少一部分。
[0360] 在各種實施方式中,HBA將主機的元件(例如,一個或多個處理器和一個或多個存 儲器)耦接至設備,例如存儲設備比如SATA驅動器。將HBA耦接至處理器和/或存儲器至 少部分經(jīng)由一個或多個設備通信接口、總線和/或信道(比如PCIe接口)進行。一些處理 器執(zhí)行與設備通信的OS和/或驅動軟件。在某些實施方式中,主機的元件與HBA之間的傳 輸與AHCI兼容,并且T13兼容ATA命令通過HBA傳遞至設備的SSD的SATA或PCIe接口。 在其他實施方式中,主機的元件與HBA之間的傳輸與快速NVM兼容,并且具有至少一些屬性 的類似于T13兼容ATA命令的命令通過HBA傳遞至設備的SSD的PCIe接口。在某些實施 方式中,HBA包括在主機中,而在其他實施方式中,HBA包括在設備中。在某些實施方式中, 省略HBA,并且設備耦接至(沒有明確的HBA) -個或多個設備通信接口、總線和/或信道 (比如PCIe接口)。
[0361] 例如,在圖IB的背景下,主機102包括允許在主機上運行的軟件(例如,0S105和 /或相關聯(lián)的驅動程序)與SSDlOl (具有主機接口 111中包括的SATA兼容主機接口)之間 進行通信的HBA。通信包括將命令從軟件傳遞至SSD。傳送命令經(jīng)由AHCI進行,并將T13 兼容ATA命令提供給SSD的SATA接口。因此,圖2的201D和203A以及圖3的301R、302D、 303A和305W經(jīng)由AHCI傳送進行傳輸。
[0362] 再如,在圖IC的背景下,主機102包括允許與中間控制器103通信的芯片組,并且 中間接口 104和外部接口 110是PCIe兼容的(例如,SSDlOl具有主機接口 111中包括的 PCIe接口)。芯片組和中間控制器103允許在主機的OS和/或驅動軟件與SSDlOl之間進 行通信,包括傳遞命令。傳送命令經(jīng)由快速NVM進行,并將具有至少一些屬性的類似于T13 兼容ATA命令的命令提供給SSD的PCIe接口。因此,圖2的20ID和203A以及圖3的301R、 302D、303A和305W經(jīng)由快速NVM傳送進行傳輸。
[0363] 描述了各種實施方式,比如與計算主機耦接的存儲設備的實施方式,其中存儲設 備經(jīng)啟用以管理計算主機看到的固件更新效果。適用于存儲設備和計算主機的技術通常適 用于與主機耦接的設備的各種實施方式,其中該設備經(jīng)啟用以管理主機看到的固件更新效 果。以SSD作為示例性存儲設備描述了各種實施方式。適用于基于SSD的存儲設備的技術 同樣適用于基于HDD的存儲設備,以及基于其他非易失性存儲技術的存儲設備的各種實施 方式。
[0364] 示例性實現(xiàn)技術
[0365] 在某些實施方式中,由例如具有閃存的SSD控制器(比如,提供管理主機看到的設 備固件更新效果的SSD)、計算主機閃存控制器和/或SSD控制器(比如圖IA的SSD控制 器100)執(zhí)行的操作的所有或任意部分的各種組合,和處理器、微處理器、片上系統(tǒng)、專用集 成電路、硬件加速器或提供上述操作中的所有或部分的其他電路的部分由與計算機系統(tǒng)進 行的處理兼容的規(guī)范來指定。該規(guī)范符合各種描述,例如,硬件描述語言、電路描述、網(wǎng)表描 述、掩碼描述或布局描述。示例描述包括:Verilog、VHDL、SPICE、SPICE變體比如PSpice、 IBIS、LEF、DEF、⑶S至II、OASIS或其描述。在各種實施方式中,處理包括解釋、編譯、模擬 和合成的任何組合以生成、驗證或指定適于包括在一個或多個集成電路上的邏輯和/或電 路。根據(jù)各種實施方式,每個集成電路可根據(jù)多種技術來設計和/或制造。該技術包括可 編程技術(例如,場或掩碼可編程門陣列集成電路)、半定制技術(比如整體或部分基于單 元的集成電路)和全定制技術(比如基本上專用的集成電路)及其任意組合,或與集成電 路的設計和/或制造兼容的其他任何技術。
[0366] 在某些實施方式中,通過執(zhí)行和/或解釋一個或多個程序指令,通過解釋和/或編 譯一個或多個源和/或腳本語言語句,或通過執(zhí)行通過編譯、轉換和/或解釋以編程和/或 腳本語言語句表達的信息生成的二進制指令來進行所有或部分如計算機可讀介質所述的 操作的各種組合,該計算機可讀介質存儲有一組指令。語句與任何標準的編程或腳本語言 (例如,C、C++、Fortran、Pascal、Ada、Java、VBscript 和 Shell)兼容。一個或多個程序指 令、語言語句或二進制指令任選存儲在一個或多個計算機可讀存儲介質元件上。在各種實 施方式中,一些、所有或各個部分的程序指令實現(xiàn)為一種或多種功能、例程、子例程、線內例 程、過程、宏或其部分。
[0367] 結論
[0368] 在該說明書中作出的某些選擇僅僅是便于制備文本和附圖,除非有相反的指示, 否則這些選擇本身不應解釋為表達所述實施方式的結構或操作相關的額外信息。選擇的示 例包括:用于數(shù)字編號的設計的特定組織或分配以及用于識別和引用實施方式的特征和元 件的元件標識符(例如,插圖編號或數(shù)字標志符)的特定組織或分配。
[0369] 詞語"包括(includes) "或"包括(including) "具體意在被理解為對描述開放式 范圍的邏輯組的抽象,且并不指傳達物理包含物,除非后面明確跟隨詞語"之內"。
[0370] 盡管為了描述和理解清晰的目的,已在一些細節(jié)中描述了上述實施方式,但本發(fā) 明不限于所提供的細節(jié)。有許多本發(fā)明的實施方式。所公開的實施方式是示例性的,而不 是限制性的。
[0371] 應理解,構造、布置和使用的許多變化可能與說明書一致,且處于已公布的專利的 權利要求的范圍內。例如,互連和功能單位的位寬度、時鐘速率和所使用的技術的類型根據(jù) 每個組件塊中的各種實施方式而可變。給于互連和邏輯的名稱僅是示例性的,且不應被解 釋為限制所描述的概念。流程圖和流程圖過程、動作和功能元件的順序和布置根據(jù)各種實 施方式可變化。同樣地,除非特別說明與此相反,否則指定的值范圍、使用的最高值和最低 值或其他特定的規(guī)范(比如閃存技術類型;以及寄存器和緩存器中的條目或級別的數(shù)量) 僅是所描述那些實施方式,期望跟蹤實現(xiàn)技術的改進和變化,且不應被解釋為限制。
[0372] 可采用本技術已知的功能等效的技術,而不是用于實現(xiàn)各種組件、子系統(tǒng)、操作、 功能、例程、子例程、在線例程、程序、宏或其部分的那些所述技術。還應理解,實施方式中的 許多功能方面可在硬件(即,一般專用電路)或軟件(例如,經(jīng)由編程的控制器或處理器的 某些方式)中選擇性實現(xiàn),以作為取決于設計約束和更快處理的技術趨勢(促使先前在硬 件中的功能迀移至軟件)和更高的集成密度(促使先前在軟件中的功能迀移至硬件)的實 施方式的功能。各種實施方式中的具體變化包括但不限于:劃分的差異;不同的形狀因數(shù) 和配置;使用不同的操作系統(tǒng)和其他系統(tǒng)軟件;使用不同接口標準、網(wǎng)絡協(xié)議或通信鏈路; 以及當根據(jù)特定應用的獨特工程和商業(yè)限制實現(xiàn)在本文中描述的概念時預期的其他變化。
[0373] 已通過超越需要用于所描述的實施方式的很多方面的最小實現(xiàn)的細節(jié)和環(huán)境背 景描述了實施方式。本領域普通技術人員將認識到,一些實施方式省略了公開的組件或特 征,且無需改變剩余元件之間的基本合作。因此,應理解大部分公開的細節(jié)不需要實現(xiàn)所描 述的實施方式的各個方面。在剩余元件可與現(xiàn)有技術相區(qū)別的范圍內,被省略的組件和特 征不限于本文中所描述的概念。
[0374] 設計的所有這些變化是在由所描述的實施方式傳達的教學上的非實質性變化。還 應理解,本文中描述的實施方式對其他的計算和網(wǎng)絡應用具有廣泛的實用性,且并不僅限 于所描述的實施方式的特定應用或行業(yè)。因此,本發(fā)明將被解釋為包括涵蓋在所公布的專 利的權利要求的范圍內的所有可能的修改和變更。
【主權項】
1. 一種設備,包括: 非易失性存儲器; 用于耦接至計算主機的構件; 用于管理所述非易失性存儲器以存儲第一固件、第一固件修訂標識符、第二固件、以及 第二固件修訂標識符的構件; 用于從所述計算主機接收所述第一固件的構件,所述第一固件與所述第一固件修訂標 識符相關聯(lián); 用于從所述計算主機接收所述第二固件的構件,該用于接收所述第二固件的構件能夠 在用于接收所述第一固件的構件之后操作,所述第二固件與所述第二固件修訂標識符相關 聯(lián); 用于將所述第一固件修訂標識符返回所述計算主機的構件,該用于返回的構件對來自 所述計算主機的特定命令類型進行響應并且能夠在所述設備正在執(zhí)行所述第二固件時且 在發(fā)生特定事件之前操作,并且 其中,所述用于返回的構件的操作使在計算主機上執(zhí)行的操作系統(tǒng)(OS)能夠在所述 設備執(zhí)行所述第一固件的整個過程中且在執(zhí)行所述第二固件直至所述特定事件期間,響應 于返回固件修訂標識符的值的變化,繼續(xù)執(zhí)行而不檢測到錯誤。2. 根據(jù)權利要求1所述的設備,其中,所述特定事件是所述設備的電力循環(huán)。3. 根據(jù)權利要求1所述的設備,進一步包括用于將所述第二固件修訂標識符返回所述 計算主機的構件,該用于返回所述第二固件修訂標識符的構件能夠在所述設備正在執(zhí)行所 述第二固件時且在發(fā)生所述特定事件之后操作,并對來自所述計算主機的所述特定命令類 型進行響應。4. 根據(jù)權利要求1所述的設備,其中,所述OS包括Windows OS的版本。5. 根據(jù)權利要求1所述的設備,其中,所述特定命令類型包括串行高級技術附件 (SATA)識別命令類型。6. 根據(jù)權利要求1所述的設備,其中,所述特定命令類型包括串行連接的小型計算機 系統(tǒng)接口(串行SCSI) (SAS)讀取的重要產品數(shù)據(jù)(VPD)命令類型。7. -種設備,包括: 非易失性存儲器; 用于管理所述非易失性存儲器以存儲第一固件、第一固件修訂標識符、第二固件、以及 第二固件修訂標識符的構件,所述設備能夠與計算主機耦接; 用于從所述計算主機接收所述第一固件的構件,所述第一固件與所述第一固件修訂標 識符相關聯(lián); 用于從所述計算主機接收所述第二固件的構件,該用于接收所述第二固件的構件能夠 在用于接收所述第一固件的構件之后操作,所述第二固件與所述第二固件修訂標識符相關 聯(lián); 用于將所述第一固件修訂標識符返回所述計算主機的構件,該用于返回所述第一固件 修訂標識符的構件對來自所述計算主機的第一命令類型進行響應并且能夠在所述設備正 在執(zhí)行所述第二固件時操作; 用于將所述第二固件修訂標識符返回所述計算主機的構件,該用于返回所述第二固件 修訂標識符的構件對來自所述計算主機的第二命令類型進行響應并且能夠在所述設備正 在執(zhí)行所述第二固件時操作; 其中,所述第一命令類型是讀取身份命令類型;并且 其中,所述第二命令類型是供應商特定命令類型。8. 根據(jù)權利要求7所述的設備,其中,所述供應商特定命令類型包括供應商特定固件 識別信息讀取命令類型。9. 根據(jù)權利要求7所述的設備,其中,所述讀取身份命令類型包括串行高級技術附件 (SATA)識別命令類型。10. 根據(jù)權利要求7所述的設備,其中,所述讀取身份命令類型包括串行連接的小型計 算機系統(tǒng)接口(串行SCSI) (SAS)讀取的重要產品數(shù)據(jù)(VPD)命令類型。11. 根據(jù)權利要求7所述的設備,其中,所述讀取身份命令類型包括在被處理使得返回 所述第二固件修訂標識符而不是所述第一固件修訂標識符時,在計算主機上執(zhí)行的操作系 統(tǒng)(OS)遇到不可恢復的錯誤的命令類型。12. 根據(jù)權利要求11所述的設備,其中,所述OS包括Windows OS的版本。13. -種存儲設備,包括: 第一構件,用于根據(jù)與當前固件修訂標識符相關聯(lián)的當前固件來操作所述存儲設備, 所述第一構件包括用于將所述當前固件修訂標識符返回與所述存儲設備通信的計算主機 的第二構件; 第三構件,能夠在所述第一構件之后操作,用于接收與不同于所述當前固件修訂標識 符的新固件修訂標識符相關聯(lián)的新固件; 第四構件,能夠在所述第三構件之后操作,用于根據(jù)所述新固件來操作所述存儲設備, 所述第四構件包括用于將所述當前固件修訂標識符返回所述計算主機的第五構件; 第六構件,能夠在所述第三構件之后操作且響應于電力循環(huán),用于根據(jù)所述新固件來 操作所述存儲設備,所述第六構件包括用于將所述新固件修訂標識符返回所述計算主機的 第七構件; 非易失性存儲器,能夠存儲所述新固件的至少一部分,并且 其中,以上三個用于返回的構件各自對來自所述計算主機的多個命令類型中的特定的 一個的相應實例進行響應,所述特定命令類型使得: (a) 當?shù)谝幌鄳碳抻啒俗R符響應于第一所述相應實例返回至所述計算主機時, (b) 當?shù)诙鄳碳抻啒俗R符響應于第二所述相應實例返回至所述計算主機時,并 且 (c) 在返回所述第一相應固件修訂標識符與返回所述第二相應固件修訂標識符之間不 發(fā)生電力循環(huán)的情況下, 則在所述計算主機上執(zhí)行的操作系統(tǒng)(OS)響應于所述第二相應固件修訂標識符的返 回而遇到不可恢復的錯誤。14. 根據(jù)權利要求13所述的系統(tǒng),其中,所述OS包括Windows OS的版本。15. 根據(jù)權利要求13所述的系統(tǒng),其中,所述特定命令類型包括串行高級技術附件 (SATA)識別命令類型。16. 根據(jù)權利要求13所述的系統(tǒng),其中,所述特定命令類型包括小型計算機系統(tǒng)接口 (SCSI)讀取的重要產品數(shù)據(jù)(VPD)命令類型。17. 根據(jù)權利要求13所述的系統(tǒng),其中,特定命令類型包括串行連接的小型計算機系 統(tǒng)接口(串行SCSI) (SAS)讀取的重要產品數(shù)據(jù)(VPD)命令類型。18. 根據(jù)權利要求13所述的系統(tǒng),其中,用于接收的構件包括用于保存所述當前固件 修訂標識符直至所述電力循環(huán)的構件。19. 根據(jù)權利要求13所述的系統(tǒng),其中,用于接收的構件包括用于保護所述當前固件 修訂標識符免受修改直至所述電力循環(huán)的構件。20. 根據(jù)權利要求13所述的系統(tǒng),其中,用于接收的構件包括用于向所述計算主機提 供所述當前固件修訂標識符的構件以及用于從所述計算主機恢復所述當前固件修訂標識 符的構件。
【專利摘要】本發(fā)明涉及主機看到的設備固件更新效果的管理。比如在OS會遇到不可恢復的錯誤和崩潰而沒有可見性延遲的背景下,例如經(jīng)由顯示固件更新的效果的至少一部分的可見性,計算主機看到的設備固件更新效果的管理使得能夠在設備固件更新過程中在主機上繼續(xù)運行OS。例如,設備(例如,SSD)與運行未修改版Windows的計算主機耦接。設備上的固件比如通過被啟動來更新/激活。信息的否則會變得對OS來說立即可見的一部分的可見性(在激活更新固件時)被延遲直至設備電力循環(huán)為止。如果該部分包括例如固件修訂標識符,則延遲的可見性能夠在固件更新/激活過程中繼續(xù)運行OS而不重新啟動OS。
【IPC分類】G06F9/445
【公開號】CN105159699
【申請?zhí)枴緾N201510419234
【發(fā)明人】羅斯·斯藤福特, 基思·麥凱
【申請人】Lsi公司
【公開日】2015年12月16日
【申請日】2012年6月6日
【公告號】CN103620567A, EP2718828A2, EP2718828A4, US20140189673, WO2012170521A2, WO2012170521A3