分案申請的相關(guān)信息
本申請是國際申請?zhí)枮閜ct/us2012/041088、申請日為2012年6月6日、發(fā)明名稱為“主機看到的設(shè)備固件更新效果的管理”的pct申請進(jìn)入中國國家階段后申請?zhí)枮?01280031049.2的中國發(fā)明專利申請的分案申請。
相關(guān)申請的交叉引用
在所附的申請書數(shù)據(jù)頁、請求書和傳送信(視情況,如果有的話)中列出了對該申請的優(yōu)先權(quán)權(quán)益要求。在即時申請的類型所允許的范圍內(nèi),在提出本發(fā)明時,為了所有目的,本申請通過引用并入在做出本發(fā)明時與本即時申請的共同擁有的下列申請:
于2011年6月7日提交的美國臨時申請(案號為sf至11至12,序列號為61/494,262),第一署名發(fā)明人為rossjohnstenfort,且題為“managementofdevicefirmwareupdateeffectsasseenbyahost”。
本發(fā)明涉及一種存儲設(shè)備,尤其涉及主機看到的設(shè)備固件更新效果的管理。
背景技術(shù):
存儲技術(shù)的進(jìn)步對于提供性能、效率和使用實用性的提高是必要的。
除非被明確認(rèn)定為被公開或眾所周知,否則為了上下文、定義或比較的目的而包括的本文所提到的技術(shù)和概念不應(yīng)被解釋為承認(rèn)這些技術(shù)和概念是以前公開為已知的或者是現(xiàn)有技術(shù)的一部分。為了所有目的,包括專利、專利申請和出版物的本文中所引用的所有參考文獻(xiàn)(如有的話)通過引用被整體并入,而無論是否指定并入。
技術(shù)實現(xiàn)要素:
本發(fā)明涉及一種設(shè)備,包括:非易失性存儲器;用于耦接至計算主機的構(gòu)件;用于管理所述非易失性存儲器以存儲第一固件、第一固件修訂標(biāo)識符、第二固件、以及第二固件修訂標(biāo)識符的構(gòu)件;用于從所述計算主機接收所述第一固件的構(gòu)件,所述第一固件與所述第一固件修訂標(biāo)識符相關(guān)聯(lián);用于從所述計算主機接收所述第二固件的構(gòu)件,該用于接收所述第二固件的構(gòu)件能夠在用于接收所述第一固件的構(gòu)件之后操作,所述第二固件與所述第二固件修訂標(biāo)識符相關(guān)聯(lián);用于將所述第一固件修訂標(biāo)識符返回所述計算主機的構(gòu)件,該用于返回的構(gòu)件對來自所述計算主機的特定命令類型進(jìn)行響應(yīng)并且能夠在所述設(shè)備正在執(zhí)行所述第二固件時且在發(fā)生特定事件之前操作,其中,所述特定事件是所述設(shè)備的電力循環(huán);并且其中,所述用于返回的構(gòu)件的操作使在計算主機上執(zhí)行的操作系統(tǒng)(os)能夠在所述設(shè)備執(zhí)行所述第一固件的整個過程中且在執(zhí)行所述第二固件直至所述特定事件期間,響應(yīng)于返回固件修訂標(biāo)識符的值的變化,繼續(xù)執(zhí)行而不檢測到錯誤。
本發(fā)明還涉及一種設(shè)備,包括:非易失性存儲器;用于管理所述非易失性存儲器以存儲第一固件、第一固件修訂標(biāo)識符、第二固件、以及第二固件修訂標(biāo)識符的構(gòu)件,所述設(shè)備能夠與計算主機耦接;用于從所述計算主機接收所述第一固件的構(gòu)件,所述第一固件與所述第一固件修訂標(biāo)識符相關(guān)聯(lián);用于從所述計算主機接收所述第二固件的構(gòu)件,該用于接收所述第二固件的構(gòu)件能夠在用于接收所述第一固件的構(gòu)件之后操作,所述第二固件與所述第二固件修訂標(biāo)識符相關(guān)聯(lián);用于將所述第一固件修訂標(biāo)識符返回所述計算主機的構(gòu)件,該用于返回所述第一固件修訂標(biāo)識符的構(gòu)件對來自所述計算主機的第一命令類型進(jìn)行響應(yīng)并且能夠在所述設(shè)備正在執(zhí)行所述第二固件時且在發(fā)生特定事件之前操作,其中,所述特定事件是所述設(shè)備的電力循環(huán);用于將所述第二固件修訂標(biāo)識符返回所述計算主機的構(gòu)件,該用于返回所述第二固件修訂標(biāo)識符的構(gòu)件對來自所述計算主機的第二命令類型進(jìn)行響應(yīng)并且能夠在所述設(shè)備正在執(zhí)行所述第二固件時操作;其中,所述第一命令類型是讀取身份命令類型;并且其中,所述第二命令類型是供應(yīng)商特定命令類型。
本發(fā)明還涉及一種存儲設(shè)備,包括:第一構(gòu)件,用于根據(jù)與當(dāng)前固件修訂標(biāo)識符相關(guān)聯(lián)的當(dāng)前固件來操作所述存儲設(shè)備,所述第一構(gòu)件包括用于將所述當(dāng)前固件修訂標(biāo)識符返回與所述存儲設(shè)備通信的計算主機的第二構(gòu)件;第三構(gòu)件,能夠在所述第一構(gòu)件之后操作,用于接收與不同于所述當(dāng)前固件修訂標(biāo)識符的新固件修訂標(biāo)識符相關(guān)聯(lián)的新固件;第四構(gòu)件,能夠在所述第三構(gòu)件之后操作,用于根據(jù)所述新固件來操作所述存儲設(shè)備,所述第四構(gòu)件包括用于將所述當(dāng)前固件修訂標(biāo)識符返回所述計算主機的第五構(gòu)件;第六構(gòu)件,能夠在所述第三構(gòu)件之后操作且響應(yīng)于電力循環(huán),用于根據(jù)所述新固件來操作所述存儲設(shè)備,所述第六構(gòu)件包括用于將所述新固件修訂標(biāo)識符返回所述計算主機的第七構(gòu)件;非易失性存儲器,能夠存儲所述新固件的至少一部分,并且其中,以上三個用于返回的構(gòu)件各自對來自所述計算主機的多個命令類型中的特定的一個的相應(yīng)實例進(jìn)行響應(yīng),所述特定命令類型使得:(a)當(dāng)?shù)谝幌鄳?yīng)固件修訂標(biāo)識符響應(yīng)于第一所述相應(yīng)實例返回至所述計算主機時,(b)當(dāng)?shù)诙鄳?yīng)固件修訂標(biāo)識符響應(yīng)于第二所述相應(yīng)實例返回至所述計算主機時,并且(c)在返回所述第一相應(yīng)固件修訂標(biāo)識符與返回所述第二相應(yīng)固件修訂標(biāo)識符之間不發(fā)生電力循環(huán)的情況下,則在所述計算主機上執(zhí)行的操作系統(tǒng)(os)響應(yīng)于所述第二相應(yīng)固件修訂標(biāo)識符的返回而遇到不可恢復(fù)的錯誤;其中用于將所述當(dāng)前固件修訂標(biāo)識符返回的所述第二構(gòu)件和所述第五構(gòu)件能夠在所述設(shè)備正在執(zhí)行所述新固件時且在發(fā)生特定事件之前操作,其中,所述特定事件是所述設(shè)備的電力循環(huán)。
本發(fā)明可以以多種方式實現(xiàn)為例如過程、制品、裝置、系統(tǒng)、物質(zhì)組分和計算機可讀介質(zhì)(比如計算機可讀存儲介質(zhì)(例如,光學(xué)和/或磁性大容量存儲設(shè)備中的介質(zhì)(比如磁盤),或具有比如閃存存儲器的非易失性存儲器的集成電路)或通過光學(xué)或電子通信鏈路發(fā)送程序指令的計算機網(wǎng)絡(luò)。具體實施方式提供了能實現(xiàn)在上文認(rèn)定的領(lǐng)域中的成本的改善、盈利、性能、效率和使用實用性的提高的本發(fā)明的一種或多種實施方式的論述。具體實施方式包括用于促進(jìn)對具體實施方式的其余部分的理解的緒論。該緒論包括根據(jù)本文描述的概念的系統(tǒng)、方法、制品和計算機可讀介質(zhì)中的一個或多個的示例性實施方式。如在結(jié)論中更詳細(xì)討論,本發(fā)明涵蓋所公布的權(quán)利要求的范圍內(nèi)的所有可能修改和變更。
附圖說明
圖1a示出了包括提供主機看到的設(shè)備固件更新效果的管理的固態(tài)磁盤(ssd)控制器的ssd的實施方式的所選細(xì)節(jié)。
圖1b示出了包括圖1a的ssd的系統(tǒng)的一個實施方式的所選細(xì)節(jié)。
圖1c示出了包括圖1a的ssd的系統(tǒng)的另一個實施方式的所選細(xì)節(jié)。
圖2示出了主機看到的設(shè)備固件更新效果的管理的一個實施方式的所選細(xì)節(jié)的流程圖。
圖3示出了主機看到的設(shè)備固件更新效果的管理的另一個實施方式的所選細(xì)節(jié)的流程圖。
附圖中的附圖標(biāo)記列表
具體實施方式
以下將伴隨示出本發(fā)明的所選細(xì)節(jié)的附圖一起提供對本發(fā)明的一個或多個實施方式的詳細(xì)描述。將結(jié)合實施方式來描述本發(fā)明。本文的實施方式應(yīng)被理解為僅是示例性的,本發(fā)明不明確限于本文的任何或所有實施方式或者受到其限制,且本發(fā)明涵蓋許多替代、修改和等同物。為避免闡述單調(diào),各種字標(biāo)簽(包括但不限于:第一、最后、某些、各種、進(jìn)一步、其他、特定的、選擇、一些和顯著的)可應(yīng)用于獨立的實施方式組;如本文所使用的,這些標(biāo)簽并不明確地意指傳送質(zhì)量或任何形式的偏愛或偏見,而只是為了方便在獨立組之間區(qū)分。所公開的過程的一些操作順序在本發(fā)明的范圍內(nèi)是可變的。無論在什么位置多個實施方式用于描述過程、方法和/或程序指令特征的變化,其他實施方式均被設(shè)想為根據(jù)預(yù)定的或動態(tài)確定的標(biāo)準(zhǔn)執(zhí)行分別對應(yīng)于多個實施方式的多個操作模式中的一個的靜態(tài)和/或動態(tài)選擇。許多具體細(xì)節(jié)列于以下描述中,以提供對本發(fā)明的透徹理解。為示例的目的而提供細(xì)節(jié),且本發(fā)明可根據(jù)未列出一些或所有細(xì)節(jié)的權(quán)利要求來實踐。為了清晰起見,與本發(fā)明相關(guān)的技術(shù)領(lǐng)域中已知的技術(shù)資料未被詳細(xì)描述,使得本發(fā)明未被不必要模糊。
緒論
該緒論僅包括以便于更迅速理解具體實施方式;本發(fā)明不限于在緒論中提出的概念(包括明確的示例,如有的話),因為任何緒論的段落均是整個主題的縮略,且不意味著是詳盡或限制的描述。例如,以下緒論僅對某些實施方式提供由空間和組織限定的概述信息。有許多其他實施方式,包括最終將針對其描繪權(quán)利要求的那些實施方式,在整個說明書的其余部分中討論。
縮略語
本文中定義的各種速記縮寫(例如,首字母縮寫詞)中的至少一些是指本文所使用的某些元件。
比如在os會遇到不可恢復(fù)的錯誤和崩潰而沒有可見性延遲的背景下,例如經(jīng)由顯示固件更新的效果的至少一部分的可見性,計算主機看到的設(shè)備固件更新效果的管理使得能夠在設(shè)備固件更新過程中在主機上繼續(xù)運行os。例如,設(shè)備(例如,sata兼容ssd)與運行未修改版windows的計算主機耦接。設(shè)備上的固件比如通過被啟動和/或通過使得可訪問以執(zhí)行固件的一個或多個庫和或/表來更新/激活。信息的否則會變得對os來說立即可見的一部分的可見性(在激活更新固件時)被延遲直至設(shè)備電力循環(huán)為止。如果該部分包括例如固件修訂標(biāo)識符,則延遲的可見性能夠在固件更新/激活過程中繼續(xù)運行os而不重新啟動os。
設(shè)備的固件被更新,并且固件更新的一個或多個效果被如計算主機所看到的任選進(jìn)行管理,比如經(jīng)由延遲對在主機上運行且訪問該設(shè)備的os的更新的效果的至少一部分的可見性。繼續(xù)延遲直至發(fā)生結(jié)束可見性延遲的特定事件。特定事件的示例為:設(shè)備被電力循環(huán)(例如,移除電力,然后再施加電力),設(shè)備的所有或任意部分從一種電力模式轉(zhuǎn)換至另一種電力模式(例如,退出休眠模式或phy電力管理模式),設(shè)備接收供應(yīng)商特定命令,設(shè)備接收特定參數(shù)和/或代碼作為固件更新的一部分,并且重置使設(shè)備與主機耦接的鏈路。(例如,經(jīng)由對設(shè)備的命令可通過主機訪問的)設(shè)備的模式信息任選可選擇地確定前述哪些示例事件對應(yīng)于結(jié)束可見性延遲的事件。
例如,設(shè)備是具有控制器的sata兼容ssd,該控制器具有更新的固件。更新的提供固件修訂標(biāo)識符的這部分的可見性被延遲直至ssd電力循環(huán)。因此,在設(shè)備電力循環(huán)之前,對于os來說,在更新(至少相對于固件修訂標(biāo)識符)之前ssd似乎利用固件進(jìn)行操作。如果os是某些版本的windows(例如,95、98、me、nt、xp、2000、server、vista和7)中的一個,則在某些實施方式和/或使用場景下,延遲更新固件修訂標(biāo)識符的可見性可防止os遇到讓os在不進(jìn)行重新啟動和/或電力循環(huán)的情況下不能繼續(xù)運行(例如,用戶應(yīng)用程序)的不可恢復(fù)的錯誤。固件修訂標(biāo)識符對os來說是可見的,例如響應(yīng)于返回設(shè)備的vpd數(shù)據(jù)的sata‘(識別(identify))’命令,或可替代地響應(yīng)于scsi/sas讀取vpd命令。例如,在sata的背景下,固件修訂標(biāo)識符包括在識別設(shè)備數(shù)據(jù)字中。再如,在scsi的背景下,固件修訂標(biāo)識符包括在設(shè)備組成vpd頁面中,比如包括在產(chǎn)品修訂級別條目中。
延遲固件更新的至少一部分的可見性例如對應(yīng)于延遲身份和/或識別信息的一個或多個變化的可見性。設(shè)備(例如,存儲設(shè)備)的固件被更新且被激活(例如,經(jīng)由啟動更新固件的存儲設(shè)備的控制器),并在固件更新之前將經(jīng)引用以將身份和/或識別信息返回計算主機(例如,運行os比如windows的計算機)的身份/識別數(shù)據(jù)結(jié)構(gòu)的所有或任意部分保存在與固件對應(yīng)的狀態(tài)下??刂破鲗⒅当A粼诒4鏍顟B(tài)下的所保存的身份/識別數(shù)據(jù)結(jié)構(gòu)中直至結(jié)束延遲可見性的事件由控制器檢測(或者其通知提供給控制器)。在此事件之后,控制器啟動更新固件但不再保存身份/識別數(shù)據(jù)結(jié)構(gòu),而是根據(jù)更新固件重新構(gòu)建身份/識別數(shù)據(jù)結(jié)構(gòu)。
身份和/或識別信息包括識別在固件、產(chǎn)品、產(chǎn)品線和其特定實例的版本之間改變的信息、操作參數(shù)和其他信息的所有或任意部分的任意組合。識別信息的示例是固件修訂標(biāo)識符、固件修訂號、以及特定ssd或采用該ssd的產(chǎn)品的識別。識別信息的額外示例是特定實例特有的參考(例如,序列號)、特定類型的實例特有的參考(例如,修訂標(biāo)識符/級別或產(chǎn)品id)、以及特定制造商/公司特有的參考(例如,供應(yīng)商id)。操作參數(shù)的示例包括進(jìn)行ssp的一個或多個參數(shù),比如在cominit/comreset命令、固件更新、鏈路重置、phy電力管理模式轉(zhuǎn)換和/或電力循環(huán)過程中未另外保存的ssp參數(shù)。
身份/識別數(shù)據(jù)結(jié)構(gòu)經(jīng)由幾項技術(shù)的一個或任意組合進(jìn)行保存。對于第一示例性技術(shù),控制器例如經(jīng)由在啟動期間直至結(jié)束延遲可見性的事件防止修改分配給數(shù)據(jù)結(jié)構(gòu)的存儲位置,或可替代地經(jīng)由只針對與結(jié)束延遲可見性的事件相關(guān)聯(lián)的啟動允許修改存儲位置來保護身份/識別數(shù)據(jù)結(jié)構(gòu)免受修改。任選地,將已經(jīng)存儲在身份/識別數(shù)據(jù)結(jié)構(gòu)中的信息存儲在例如與供應(yīng)商特定數(shù)據(jù)結(jié)構(gòu)(比如vpd區(qū)域中的一個或多個供應(yīng)商特定字段)對應(yīng)的其他數(shù)據(jù)結(jié)構(gòu)中。
對于第二示例性技術(shù),在下載、激活和/或啟動新固件之前,結(jié)合主機上的驅(qū)動程序操作的控制器將信息從身份/識別數(shù)據(jù)結(jié)構(gòu)提供至驅(qū)動程序。作為下載、激活和/或啟動(在不發(fā)生結(jié)束延遲可見性的事件的情況下)新固件的一部分,驅(qū)動程序?qū)⑹孪忍峁┑纳矸?識別數(shù)據(jù)結(jié)構(gòu)信息提供給控制器,并且該控制器用所提供的信息來填充分配給身份/識別數(shù)據(jù)結(jié)構(gòu)的存儲位置。
對于第三示例性技術(shù),主機上的驅(qū)動程序?qū)⑿畔⑻峁┙o設(shè)備以便設(shè)備用此來填充身份/識別數(shù)據(jù)結(jié)構(gòu)。驅(qū)動程序在固件更新之后且在設(shè)備響應(yīng)于來自主機的取決于填充的身份/識別數(shù)據(jù)結(jié)構(gòu)的任意命令之前提供信息。例如,信息對應(yīng)于進(jìn)行ssp的一個或多個參數(shù)。
任選地,結(jié)合任意前述技術(shù),設(shè)備經(jīng)啟用以向主機提供另外僅是為了在結(jié)束延遲可見性的事件之后在身份/識別數(shù)據(jù)結(jié)構(gòu)中變得可見的信息。作為具體示例,存儲設(shè)備的固件在主機的指導(dǎo)下進(jìn)行更新,并保存固件修訂標(biāo)識符。因此,相對于由在主機上執(zhí)行的os(例如,一個版本的windows)感知的識別幀,固件修訂標(biāo)識符在固件更新過程中保持不變,從而防止os由于新固件修訂標(biāo)識符在沒有重新啟動和/或電力循環(huán)的情況下變得可見而導(dǎo)致的不可恢復(fù)的錯誤(例如,“崩潰”)。在固件更新之后,在主機上執(zhí)行的代理程序(例如,應(yīng)用程序或驅(qū)動程序)進(jìn)行檢查以確定存儲設(shè)備上的固件是否是最新版本。代理程序?qū)⑻囟?例如,讀取供應(yīng)商特定身份/識別信息,該讀取不同于可返回識別幀的讀取)發(fā)送至存儲設(shè)備,并且作為響應(yīng),該存儲設(shè)備提供新固件修訂標(biāo)識符。代理程序然后對新固件修訂標(biāo)識符與最新固件修訂標(biāo)識符進(jìn)行比較以確定存儲設(shè)備是否具有最新固件。
響應(yīng)于代理程序所發(fā)送的以確定該設(shè)備正在運行哪個固件版本的特定命令,在固件啟動時,例如從更新有與在固件啟動時的固件版本對應(yīng)的固件修訂標(biāo)識符(無論固件是“新的”還是“舊的”,并且無論啟動是否與結(jié)束延遲可見性的事件相關(guān)聯(lián))的“陰影”vpd區(qū)域提供新固件修訂標(biāo)識符??商娲?,在固件啟動時,從寫入有與啟動版本的固件對應(yīng)的固件修訂標(biāo)識符的“日志”提供新固件修訂標(biāo)識符。
任選地,將先前固件版本標(biāo)識符存儲在陰影vpd區(qū)域中。進(jìn)一步任選地,設(shè)備中的模式信息(例如,該設(shè)備通過主機經(jīng)由命令可訪問的)可選地確定陰影vpd區(qū)域是否關(guān)于結(jié)束延遲可見性的事件來更新。例如,模式信息設(shè)置為防止關(guān)于電力循環(huán)對陰影vpd區(qū)域進(jìn)行更新,從而使固件修訂標(biāo)識符在系統(tǒng)中保持不變,這個變化在該系統(tǒng)中另外會導(dǎo)致錯誤。陰影vpd區(qū)域任選可經(jīng)由smart日志和/或供應(yīng)商特定機制比如供應(yīng)商特定命令訪問。
雖然前述特定實例是針對固件修訂標(biāo)識符的,但是其他實施方式也以類似的方式處理進(jìn)行ssp的參數(shù),以及保存的身份/識別信息,且更一般地對os進(jìn)行延遲可見性處理的固件更新的任意部分。
任選地,單獨地或與任意前述技術(shù)結(jié)合地,設(shè)備經(jīng)啟用以存儲并隨后向主機提供最新固件更新和/或一個或多個先前固件更新的結(jié)果。存儲和提供例如允許“回滾”至一個或多個先前版本的固件,以根據(jù)一個或多個先前版本的固件的執(zhí)行來訪問身份/識別信息,或以根據(jù)當(dāng)前版本的固件(比如固件標(biāo)識符和/或進(jìn)行ssp的另外進(jìn)行延遲可見性的一個或多個參數(shù))的執(zhí)行來訪問身份/識別信息。
固件更新的示例是當(dāng)設(shè)備使用的固件的所有或任意部分(比如通過利用設(shè)備的處理器執(zhí)行固件)用新固件替換時,該設(shè)備利用新固件起作用(比如通過啟動,然后執(zhí)行新固件,和/或通過可用于執(zhí)行固件的一個或多個庫和/或表)。該替換任選包括例如(重寫)寫入分配給剩余固件的非易失性(例如閃存)(例如用于存儲固件)。
在某些實施方式中,訪問nvm中不同大小量子的壓縮數(shù)據(jù)在某些使用場景下具有提高的存儲效率。例如,ssd控制器從計算主機接收(未壓縮)數(shù)據(jù)(例如,與磁盤寫入命令相關(guān)),壓縮該數(shù)據(jù),并將壓縮后的數(shù)據(jù)存儲到閃存中。響應(yīng)于來自計算主機的后續(xù)請求(例如,與磁盤讀取命令相關(guān)),ssd控制器從閃存中讀取壓縮數(shù)據(jù),對壓縮數(shù)據(jù)進(jìn)行解壓,并向計算主機提供未壓縮數(shù)據(jù)。根據(jù)不同大小量子將壓縮數(shù)據(jù)存儲在閃存中,量子大小由于壓縮算法、操作模式和各種數(shù)據(jù)的壓縮效率等而變化。ssd控制器通過查閱所包括的映射表對數(shù)據(jù)進(jìn)行部分解壓以確定報頭存儲在閃存中的位置。ssd控制器解析從閃存獲得的報頭以確定適當(dāng)?shù)?壓縮)數(shù)據(jù)存儲在閃存中的位置。ssd控制器對來自閃存的適當(dāng)?shù)臄?shù)據(jù)進(jìn)行解壓以產(chǎn)生未壓縮數(shù)據(jù)并將其提供給計算主機。在即時應(yīng)用中,解壓(及其變型)與減壓(及其變型)同義。
在各種實施方式中,ssd控制器包括與計算主機交互(interfacing)的主機接口、與nvm比如閃存交互的接口以及用于控制接口并進(jìn)行(和/或控制進(jìn)行的各方面)壓縮和解壓,以及較低級糾錯、較高級糾錯及利用獨立硅元件的動態(tài)較高級冗余模式管理的電路。
根據(jù)各種實施方式,某些主機接口與usb接口標(biāo)準(zhǔn)、cf接口標(biāo)準(zhǔn)、mmc接口標(biāo)準(zhǔn)、sd接口標(biāo)準(zhǔn)、記憶棒接口標(biāo)準(zhǔn)、xd圖片卡接口標(biāo)準(zhǔn)、ide接口標(biāo)準(zhǔn)、sata接口標(biāo)準(zhǔn)、scsi接口標(biāo)準(zhǔn)、sas接口標(biāo)準(zhǔn)和pcie接口標(biāo)準(zhǔn)中的一個或多個兼容。根據(jù)各種實施方式,計算主機是計算機、工作站計算機、服務(wù)器計算機、存儲服務(wù)器、pc、膝上電腦、筆記本電腦、上網(wǎng)本電腦、pda、媒體播放器、媒體記錄器、數(shù)碼相機、蜂窩手機、無繩電話手機和電子游戲機中的所有或任意部分。在某些實施方式中,接口主機(比如sas/sata橋接器)作為計算主機和/或作為計算主機的橋接器進(jìn)行操作。
根據(jù)各種實施方式,某些ssd與由磁性和/或光學(xué)非易失性存儲器(比如,hdd、cd驅(qū)動器及dvd驅(qū)動器)所使用的形狀因數(shù)、電接口和/或協(xié)議兼容。在各種實施方式中,ssd使用零個以上的奇偶碼、零個以上的rs碼、零個以上的bch碼、零個以上的維特比或其他格子碼及零個以上的ldpc碼。
示例性實施方式
在結(jié)束具體實施方式的緒論時,接下來是示例性實施方式的集合,包括明確列舉為“ec”(示例性組合)的至少一些實施方式,根據(jù)本文所述的概念提供對各種實施方式類型的額外描述;這些示例并不意味著是相互排斥的、詳盡無遺的或限制性的;且本發(fā)明并不限于這些示例性實施方式,而是涵蓋所公布的權(quán)利要求的范圍內(nèi)的所有可能的修改和變更。
ec1)一種方法,包括:
(a)根據(jù)與當(dāng)前選擇識別信息相關(guān)聯(lián)的當(dāng)前固件來操作設(shè)備,(a)的操作包括將當(dāng)前選擇識別信息返回與設(shè)備通信的計算主機;
(b)在(a)之后,在設(shè)備中,接收與新選擇識別信息相關(guān)聯(lián)的新固件,新選擇識別信息具有與當(dāng)前選擇識別信息的各元素對應(yīng)的一個或多個元素,新選擇識別信息的元素的至少一個的值不同于當(dāng)前選擇識別信息的對應(yīng)元素;
(c)在(b)之后,根據(jù)新固件來操作設(shè)備,(c)的操作包括將當(dāng)前選擇識別信息返回計算主機;以及
(d)在(b)之后并響應(yīng)于結(jié)束延遲新選擇識別信息的可見性的事件,根據(jù)新固件來操作設(shè)備,(d)的操作包括將新選擇識別信息返回計算主機。
ec2)如ec1所述的方法,其中三個返回的行為分別響應(yīng)于串行高級技術(shù)附件(sata)識別命令類型的相應(yīng)實例。
ec3)如ec1所述的方法,其中三個返回的行為分別響應(yīng)于小型計算機系統(tǒng)接口(scsi)讀取重要產(chǎn)品數(shù)據(jù)(vpd)命令類型的相應(yīng)實例。
ec4)如ec1所述的方法,其中三個返回的行為分別響應(yīng)于來自計算主機的一個或多個命令類型的特定命令類型的相應(yīng)實例,特定命令類型使得如果(c)中的返回返回新選擇識別信息,則在計算主機上執(zhí)行的操作系統(tǒng)(os)會遇到不可恢復(fù)的錯誤。
ec5)如ec4所述的方法,其中os包括一個版本的windowsos。
ec6)如ec4所述的方法,其中特定命令類型包括串行高級技術(shù)附件(sata)識別命令類型。
ec7)如ec4所述的方法,其中特定命令類型包括小型計算機系統(tǒng)接口(scsi)讀取重要產(chǎn)品數(shù)據(jù)(vpd)命令類型。
ec8)如ec4所述的方法,其中特定命令類型包括串行連接的小型計算機系統(tǒng)接口(串行scsi)(sas)讀取重要產(chǎn)品數(shù)據(jù)(vpd)命令類型。
ec9)如ec1所述的方法,其中:
新固件是第一新固件并且新選擇識別信息是第一新選擇識別信息;且進(jìn)一步包括:
(e)在(c)之后,接收與第二新選擇識別信息相關(guān)聯(lián)的第二新固件;以及
(f)在(e)之后,根據(jù)第二新固件來操作設(shè)備,(f)的操作包括將當(dāng)前選擇識別信息返回計算主機。
ec10)如ec9所述的方法,其中四個返回的行為分別響應(yīng)于來自計算主機的一個或多個命令類型的特定命令類型的相應(yīng)實例,特定命令類型使得如果(f)中的返回返回新選擇識別信息,則在計算主機上執(zhí)行的操作系統(tǒng)(os)會遇到不可恢復(fù)的錯誤。
ec11)如ec10所述的方法,其中特定命令類型包括串行高級技術(shù)附件(sata)識別命令類型。
ec12)如ec10所述的方法,其中特定命令類型包括小型計算機系統(tǒng)接口(scsi)讀取重要產(chǎn)品數(shù)據(jù)(vpd)命令類型。
ec13)如ec10所述的方法,其中特定命令類型包括串行連接的小型計算機系統(tǒng)接口(串行scsi)(sas)讀取重要產(chǎn)品數(shù)據(jù)(vpd)命令類型。
ec14)如ec1所述的方法,其中當(dāng)前識別信息是結(jié)合當(dāng)前其他識別信息的當(dāng)前選擇識別信息,并且(a)的返回返回結(jié)合當(dāng)前其他識別信息的當(dāng)前選擇識別信息。
ec15)如ec1所述的方法,其中新識別信息是結(jié)合新的其他識別信息的新選擇識別信息,并且(c)的返回經(jīng)由返回結(jié)合新的其他識別信息的新選擇識別信息來返回當(dāng)前選擇識別信息。
ec16)如ec1所述的方法,
其中當(dāng)前識別信息是結(jié)合當(dāng)前其他識別信息的當(dāng)前選擇識別信息,并且(a)的返回返回結(jié)合當(dāng)前其他識別信息的當(dāng)前選擇識別信息;并且
其中新識別信息是結(jié)合新的其他識別信息的新選擇識別信息,新識別信息具有與當(dāng)前識別信息的各元素對應(yīng)的一個或多個元素,新的其他識別信息具有與當(dāng)前其他識別信息的各元素對應(yīng)的一個或多個元素,并且(c)的返回經(jīng)由返回結(jié)合當(dāng)前其他識別信息的新選擇識別信息來返回當(dāng)前選擇識別信息。
ec17)如ec1所述的方法,進(jìn)一步包括:
執(zhí)行和/或下載當(dāng)前固件的至少一部分以在當(dāng)前固件與當(dāng)前選擇識別信息之間形成關(guān)聯(lián);以及
執(zhí)行和/或下載新固件的至少一部分以在新固件與新選擇識別信息之間形成關(guān)聯(lián)。
ec18)如ec1所述的方法,其中結(jié)束延遲新選擇識別信息的可見性的事件包括以下各項中的任意一項或多項:
設(shè)備電力循環(huán);
設(shè)備的所有或任意部分從一種電力模式轉(zhuǎn)換至另一種電力模式;
設(shè)備接收供應(yīng)商特定命令;
設(shè)備接收特定參數(shù)和/或代碼作為固件更新的一部分,并且
將設(shè)備耦接至主機的鏈路被重置。
ec19)如ec1所述的方法,其中:
當(dāng)前選擇識別信息是當(dāng)前固件修訂標(biāo)識符;
新選擇識別信息是新固件修訂標(biāo)識符;并且
三個返回的行為分別響應(yīng)于串行高級技術(shù)附件(sata)識別命令的實例。
ec20)如ec1所述的方法,其中:
當(dāng)前選擇識別信息是當(dāng)前固件修訂標(biāo)識符;
新選擇識別信息是新固件修訂標(biāo)識符;并且
三個返回的行為分別響應(yīng)于讀取重要產(chǎn)品數(shù)據(jù)(vpd)命令的實例。
ec21)如ec20所述的方法,其中讀取包括小型計算機系統(tǒng)接口(scsi)讀取。
ec22)如ec20所述的方法,其中讀取包括串行連接的小型計算機系統(tǒng)接口(串行scsi)(sas)讀取。
ec23)如ec1所述的方法,其中:
當(dāng)前選擇識別信息是協(xié)議兼容水平;并且
新選擇識別信息是協(xié)議兼容水平。
ec24)如ec1所述的方法,進(jìn)一步包括操作計算主機以從設(shè)備接收當(dāng)前選擇識別信息和/或向設(shè)備提供所接收的當(dāng)前選擇識別信息。
ec25)如ec1所述的方法,進(jìn)一步包括將當(dāng)前選擇識別信息的至少一部分存儲在一個或多個非易失性存儲器中。
ec26)如ec25所述的方法,其中ssd控制器包括與存儲接口標(biāo)準(zhǔn)兼容的存儲接口,并且計算主機與設(shè)備之間的通信經(jīng)由存儲接口進(jìn)行。
ec27)如ec1所述的方法,其中選擇識別信息包括固件修訂標(biāo)識符。
ec28)如ec1所述的方法,其中選擇識別信息包括進(jìn)行軟件設(shè)置保存(ssp)的一個或多個參數(shù)。
ec29)如ec1所述的方法,其中接收包括保存當(dāng)前選擇識別信息直至結(jié)束延遲新選擇識別信息的可見性的事件。
ec30)如ec1所述的方法,其中接收包括保護當(dāng)前選擇識別信息免受修改直至結(jié)束延遲新選擇識別信息的可見性的事件。
ec31)如ec1所述的方法,進(jìn)一步包括:響應(yīng)于結(jié)束延遲新選擇識別信息的可見性的事件,解除當(dāng)前選擇識別信息免受修改的保護。
ec32)如ec1所述的方法,其中接收包括向計算主機提供當(dāng)前選擇識別信息并從計算主機中恢復(fù)當(dāng)前選擇識別信息。
ec33)如ec1所述的方法,其中接收包括激活新固件。
ec34)如ec1所述的方法,其中設(shè)備包括存儲設(shè)備。
ec35)如ec1所述的方法,其中設(shè)備包括控制器,并且三個操作的行為以及接收的行為至少部分由控制器進(jìn)行。
ec36)如ec1所述的方法,其中計算主機與設(shè)備之間的通信經(jīng)由與存儲接口標(biāo)準(zhǔn)兼容的存儲接口進(jìn)行。
ec37)如ec1所述的方法,其中設(shè)備包括固態(tài)磁盤(ssd)。
ec38)如ec37所述的方法,其中ssd包括ssd控制器,并且三個操作的行為以及接收的行為至少部分由ssd控制器進(jìn)行。
ec39)如ec38所述的方法,其中ssd控制器包括非易失性存儲器接口,被存儲部分的存儲至少部分經(jīng)由非易失性存儲器接口進(jìn)行。
ec40)如ec38所述的方法,其中ssd控制器包括一個或多個非易失性存儲器。
ec41)如ec40所述的方法,其中ssd控制器包括與非易失性存儲器交互的非易失性存儲器接口。
ec42)一種方法,包括:
在設(shè)備中從計算主機接收第一固件;
在設(shè)備中從計算主機接收第二固件,第二固件的接收在第一固件的接收之后;
在執(zhí)行第二固件的同時,響應(yīng)于來自計算主機的特定命令類型,為計算主機提供對第一固件和第二固件的任意組合的訪問。
ec43)如ec42所述的方法,其中訪問包括將識別信息返回在計算主機上執(zhí)行的操作系統(tǒng)(os),識別信息包括通過執(zhí)行第一固件而確定的一些信息以及通過執(zhí)行第二固件而確定的一些信息,通過執(zhí)行第一固件而確定的信息使得如果相反返回通過執(zhí)行第二固件而確定的對應(yīng)信息,則os會遇到不可恢復(fù)的錯誤。
ec44)如ec43所述的方法,其中os包括一個版本的windowsos。
ec45)如ec44所述的方法,其中特定命令類型包括串行高級技術(shù)附件(sata)識別命令類型或小型計算機系統(tǒng)接口(scsi)讀取重要產(chǎn)品數(shù)據(jù)(vpd)命令類型。
ec46)如ec42所述的方法,其中訪問包括將識別信息返回在計算主機上執(zhí)行的操作系統(tǒng)(os),識別信息包括通過執(zhí)行第一固件而確定的一些信息以及通過執(zhí)行第二固件而確定的一些信息,特定命令類型包括串行高級技術(shù)附件(sata)識別命令類型或小型計算機系統(tǒng)接口(scsi)讀取重要產(chǎn)品數(shù)據(jù)(vpd)命令類型。
ec47)如ec46所述的方法,其中通過執(zhí)行第一固件而確定的信息使得如果相反返回通過執(zhí)行第二固件而確定的對應(yīng)信息,則os會遇到不可恢復(fù)的錯誤。
ec48)如ec47所述的方法,其中os包括一個版本的windowsos。
ec49)如ec42所述的方法,其中提供訪問包括使設(shè)備根據(jù)所訪問的固件啟動。
ec50)如ec42所述的方法,其中提供訪問包括讀取和/或?qū)懭胨L問的固件的固件圖像的所有或任意部分。
ec51)如ec42所述的方法,其中提供訪問包括讀取和/或?qū)懭雸?zhí)行所訪問的固件的所有或任意部分的一個或多個結(jié)果的所有或任意部分。
ec52)如ec51所述的方法,其中結(jié)果包括重要產(chǎn)品數(shù)據(jù)(vpd)的所有或任意部分的圖像。
ec53)如ec51所述的方法,其中結(jié)果包括固件修訂標(biāo)識符。
ec54)如ec51所述的方法,其中結(jié)果包括進(jìn)行軟件設(shè)置保存(ssp)的一個或多個參數(shù)。
ec55)如ec42所述的方法,其中提供訪問包括管理一個或多個非易失性存儲器中的一個或多個數(shù)據(jù)結(jié)構(gòu)。
ec56)一種方法,包括:
在設(shè)備中從計算主機接收第一固件,第一固件與第一固件識別信息相關(guān)聯(lián);
在設(shè)備中從計算主機接收第二固件,第二固件的接收在第一固件的接收之后,第二固件與第二固件識別信息相關(guān)聯(lián);以及
通過設(shè)備將第一固件識別信息返回計算主機,該返回響應(yīng)于來自計算主機的特定命令類型且是設(shè)備執(zhí)行第二固件的同時并且在發(fā)生特定事件之前。
ec57)如ec56所述的方法,其中返回第一固件識別信息使在計算主機上執(zhí)行的操作系統(tǒng)(os)能夠在不重新啟動的情況下在執(zhí)行第一固件的整個設(shè)備中且在執(zhí)行第二固件直至特定事件期間繼續(xù)執(zhí)行。
ec58)如ec57所述的方法,其中os包括一個版本的windowsos。
ec59)如ec57所述的方法,其中特定命令類型包括串行高級技術(shù)附件(sata)識別命令類型。
ec60)如ec57所述的方法,其中特定命令類型包括串行連接的小型計算機系統(tǒng)接口(串行scsi)(sas)讀取重要產(chǎn)品數(shù)據(jù)(vpd)命令類型。
ec61)如ec56所述的方法,其中返回第一固件識別信息使在計算主機上執(zhí)行的操作系統(tǒng)(os)能夠在不檢測錯誤的情況下響應(yīng)于返回固件修訂標(biāo)識符的值在執(zhí)行第一固件的整個設(shè)備中且在執(zhí)行第二固件直至特定事件期間的變化繼續(xù)執(zhí)行。
ec62)如ec61所述的方法,其中os包括一個版本的windowsos。
ec63)如ec61所述的方法,其中特定命令類型包括串行高級技術(shù)附件(sata)識別命令類型。
ec64)如ec61所述的方法,其中特定命令類型包括串行連接的小型計算機系統(tǒng)接口(串行scsi)(sas)讀取重要產(chǎn)品數(shù)據(jù)(vpd)命令類型。
ec65)如ec56所述的方法,其中設(shè)備包括固態(tài)磁盤(ssd),并且該ssd包括控制器,該控制器經(jīng)啟用以管理ssd的一個或多個非易失性存儲器以存儲第一固件、第一固件識別信息、第二固件和第二固件識別信息的所有或任意組合的所有或任意部分。
ec66)如ec56所述的方法,其中特定事件包括以下各項中的任意一項或多項:
設(shè)備電力循環(huán);
設(shè)備的所有或任意部分從一種電力模式轉(zhuǎn)換至另一種電力模式;
設(shè)備接收供應(yīng)商特定命令;
設(shè)備接收特定參數(shù)和/或代碼作為固件更新的一部分,并且
將設(shè)備耦接至主機的鏈路被重置。
ec67)如ec56所述的方法,其中:
第一固件識別信息包括第一固件修訂標(biāo)識符,并且
第二固件識別信息包括第二固件修訂標(biāo)識符。
ec68)如ec56所述的方法,其中:
第一固件識別信息包括第一協(xié)議兼容水平標(biāo)識符,并且
第二固件識別信息包括第二協(xié)議兼容水平標(biāo)識符。
ec69)如ec56所述的方法,其中:
第一固件識別信息包括與進(jìn)行軟件設(shè)置保存(ssp)的一個或多個參數(shù)對應(yīng)的第一套值,并且
第二固件識別信息包括與參數(shù)對應(yīng)的第二套值。
ec70)一種方法,包括:
在設(shè)備中從計算主機接收第一固件,第一固件與第一固件識別信息相關(guān)聯(lián);
在設(shè)備中從計算主機接收第二固件,第二固件的接收在第一固件的接收之后,第二固件與第二固件識別信息相關(guān)聯(lián);以及
通過設(shè)備將第一固件識別信息返回計算主機,該返回響應(yīng)于來自計算主機的第一命令類型且是設(shè)備執(zhí)行第二固件的同時;以及
通過設(shè)備將第二固件識別信息返回計算主機,該返回響應(yīng)于來自計算主機的第二命令類型且是設(shè)備執(zhí)行第二固件的同時。
ec71)如ec70所述的方法,其中:
第一命令類型是讀取身份命令類型;并且
第二命令類型是供應(yīng)商特定命令類型。
ec72)如ec71所述的方法,其中供應(yīng)商特定命令類型包括供應(yīng)商特定固件識別信息讀取命令類型。
ec73)如ec71所述的方法,其中讀取身份命令類型包括串行高級技術(shù)附件(sata)識別命令類型。
ec74)如ec71所述的方法,其中讀取身份命令類型包括串行連接的小型計算機系統(tǒng)接口(串行scsi)(sas)讀取重要產(chǎn)品數(shù)據(jù)(vpd)命令類型。
ec75)如ec71所述的方法,其中讀取身份命令類型包括在進(jìn)行處理時使得返回第二固件識別信息而不是第一固件識別信息,在計算主機上執(zhí)行的操作系統(tǒng)(os)遇到不可恢復(fù)的錯誤的命令類型。
ec76)如ec75所述的方法,其中os包括一個版本的windowsos。
ec77)如ec70所述的方法,其中返回第一固件識別信息使在計算主機上執(zhí)行的操作系統(tǒng)(os)能夠在不重新啟動的情況下在執(zhí)行第一固件和執(zhí)行第二固件的整個設(shè)備中繼續(xù)執(zhí)行。
ec78)如ec77所述的方法,其中os包括一個版本的windowsos。
ec79)如ec77所述的方法,其中特定命令類型包括串行高級技術(shù)附件(sata)識別命令類型。
ec80)如ec77所述的方法,其中特定命令類型包括串行連接的小型計算機系統(tǒng)接口(串行scsi)(sas)讀取重要產(chǎn)品數(shù)據(jù)(vpd)命令類型。
ec81)如ec70所述的方法,其中返回第一固件識別信息使在計算主機上執(zhí)行的操作系統(tǒng)(os)能夠在不檢測錯誤的情況下響應(yīng)于返回固件修訂標(biāo)識符的值在執(zhí)行第一固件和執(zhí)行第二固件的整個設(shè)備中的變化繼續(xù)執(zhí)行。
ec82)如ec81所述的方法,其中os包括一個版本的windowsos。
ec83)如ec81所述的方法,其中特定命令類型包括串行高級技術(shù)附件(sata)識別命令類型。
ec84)如ec81所述的方法,其中特定命令類型包括串行連接的小型計算機系統(tǒng)接口(串行scsi)(sas)讀取重要產(chǎn)品數(shù)據(jù)(vpd)命令類型。
ec85)如ec70所述的方法,其中設(shè)備包括固態(tài)磁盤(ssd),并且該ssd包括控制器,該控制器經(jīng)啟用以管理ssd的一個或多個非易失性存儲器以存儲第一固件、第一固件識別信息、第二固件和第二固件識別信息的所有或任意組合的所有或任意部分。
ec86)如ec70所述的方法,其中:
第一固件識別信息包括第一固件修訂標(biāo)識符,并且
第二固件識別信息包括第二固件修訂標(biāo)識符。
ec87)如ec70所述的方法,其中:
第一固件識別信息包括第一協(xié)議兼容水平標(biāo)識符,并且
第二固件識別信息包括第二協(xié)議兼容水平標(biāo)識符。
ec88)如ec70所述的方法,其中:
第一固件識別信息包括與進(jìn)行軟件設(shè)置保存(ssp)的一個或多個參數(shù)對應(yīng)的第一套值,并且
第二固件識別信息包括與參數(shù)對應(yīng)的第二套值。
ec89)一種方法,包括:
(a)根據(jù)與當(dāng)前固件修訂標(biāo)識符相關(guān)聯(lián)的當(dāng)前固件來操作存儲設(shè)備控制器,(a)的操作包括將當(dāng)前固件修訂標(biāo)識符返回與包括存儲設(shè)備控制器的存儲設(shè)備通信的計算主機;
(b)在(a)之后,至少部分經(jīng)由存儲設(shè)備控制器接收與新固件修訂標(biāo)識符相關(guān)聯(lián)的新固件,該新固件修訂標(biāo)識符不同于當(dāng)前固件修訂標(biāo)識符;
(c)在(b)之后,根據(jù)新固件來操作存儲設(shè)備控制器,(c)的操作包括將當(dāng)前固件修訂標(biāo)識符返回計算主機;
(d)在(b)之后并響應(yīng)于電力循環(huán),根據(jù)新固件來操作存儲設(shè)備控制器,(d)的操作包括將新固件修訂標(biāo)識符返回計算主機;
(f)其中存儲設(shè)備包括經(jīng)啟用以存儲新固件的至少一部分的非易失性存儲器(nvm);并且
(g)其中三個返回的行為分別響應(yīng)于來自計算主機的多個命令類型的特定命令類型的相應(yīng)實例,特定命令類型使得如果(c)的返回返回新固件修訂標(biāo)識符,則在計算主機上執(zhí)行的操作系統(tǒng)(os)會遇到不可恢復(fù)的錯誤。
ec90)如ec89所述的方法,其中nvm包括閃存。
ec91)如ec89所述的方法,其中存儲設(shè)備包括固態(tài)磁盤(ssd),該ssd包括nvm。
ec92)如ec91所述的方法,其中nvm包括閃存。
ec93)如ec89所述的方法,其中存儲設(shè)備包括硬盤驅(qū)動器(hdd),該hdd包括nvm。
ec94)如ec89所述的方法,其中os包括一個版本的windowsos。
ec95)如ec89所述的方法,其中特定命令類型包括串行高級技術(shù)附件(sata)識別命令類型。
ec96)如ec89所述的方法,其中特定命令類型包括小型計算機系統(tǒng)接口(scsi)讀取重要產(chǎn)品數(shù)據(jù)(vpd)命令類型。
ec97)如ec89所述的方法,其中特定命令類型包括串行連接的小型計算機系統(tǒng)接口(串行scsi)(sas)讀取重要產(chǎn)品數(shù)據(jù)(vpd)命令類型。
ec98)如ec89所述的方法,其中接收包括保存當(dāng)前固件修訂標(biāo)識符直至電力循環(huán)。
ec99)如ec89所述的方法,其中接收包括保護當(dāng)前固件修訂標(biāo)識符免受修改直至電力循環(huán)。
ec100)如ec89所述的方法,其中接收包括向計算主機提供當(dāng)前固件修訂標(biāo)識符并從計算主機中恢復(fù)當(dāng)前固件修訂標(biāo)識符。
ec101)一種方法,包括:
在經(jīng)啟用以與計算主機耦接的存儲設(shè)備中,管理存儲設(shè)備的非易失性存儲器(nvm)以存儲第一固件、第一固件修訂標(biāo)識符、第二固件、以及第二固件修訂標(biāo)識符;
在存儲設(shè)備中,從計算主機接收第一固件,第一固件與第一固件修訂標(biāo)識符相關(guān)聯(lián);
在存儲設(shè)備中,從計算主機接收第二固件,第二固件的接收在第一固件的接收之后,第二固件與第二固件修訂標(biāo)識符相關(guān)聯(lián);
通過存儲設(shè)備將第一固件修訂標(biāo)識符返回計算主機,該返回響應(yīng)于來自計算主機的特定命令類型且是存儲設(shè)備執(zhí)行第二固件的同時并且在發(fā)生特定事件之前,并且
其中返回第一固件修訂標(biāo)識符使在計算主機上執(zhí)行的操作系統(tǒng)(os)能夠在不檢測錯誤的情況下響應(yīng)于返回固件修訂標(biāo)識符的值在執(zhí)行第一固件的整個設(shè)備中且在執(zhí)行第二固件直至特定事件期間的變化繼續(xù)執(zhí)行。
ec102)如ec101所述的方法,其中nvm包括閃存。
ec103)如ec101所述的方法,其中存儲設(shè)備包括固態(tài)磁盤(ssd),該ssd包括nvm。
ec104)如ec103所述的方法,其中nvm包括閃存。
ec105)如ec101所述的方法,其中存儲設(shè)備包括硬盤驅(qū)動器(hdd),該hdd包括nvm。
ec106)如ec101所述的方法,其中特定事件是存儲設(shè)備的電力循環(huán)。
ec107)如ec101所述的方法,進(jìn)一步包括在執(zhí)行第二固件的同時并在發(fā)生特定事件之后,響應(yīng)于來自計算主機的特定命令類型,將第二固件修訂標(biāo)識符返回計算主機。
ec108)如ec101所述的方法,其中os包括一個版本的windowsos。
ec109)如ec101所述的方法,其中特定命令類型包括串行高級技術(shù)附件(sata)識別命令類型。
ec110)如ec101所述的方法,其中特定命令類型包括串行連接的小型計算機系統(tǒng)接口(串行scsi)(sas)讀取重要產(chǎn)品數(shù)據(jù)(vpd)命令類型。
ec111)一種方法,包括:
管理存儲設(shè)備的非易失性存儲器(nvm)以存儲第一固件、第一固件修訂標(biāo)識符、第二固件、以及第二固件修訂標(biāo)識符,存儲設(shè)備經(jīng)啟用以與計算主機耦接;
在存儲設(shè)備中,從計算主機接收第一固件,第一固件與第一固件修訂標(biāo)識符相關(guān)聯(lián);
在存儲設(shè)備中,從計算主機接收第二固件,第二固件的接收在第一固件的接收之后,第二固件與第二固件修訂標(biāo)識符相關(guān)聯(lián);
通過存儲設(shè)備將第一固件修訂標(biāo)識符返回計算主機,返回第一固件修訂標(biāo)識符響應(yīng)于來自計算主機的第一命令類型且是存儲設(shè)備執(zhí)行第二固件的同時;
通過存儲設(shè)備將第二固件修訂標(biāo)識符返回計算主機,返回第一固件修訂標(biāo)識符響應(yīng)于來自計算主機的第二命令類型且是存儲設(shè)備執(zhí)行第二固件的同時;
其中第一命令類型是讀取身份命令類型;并且
其中第二命令類型是供應(yīng)商特定命令類型。
ec112)如ec111所述的方法,其中nvm包括閃存。
ec113)如ec111所述的方法,其中存儲設(shè)備包括固態(tài)磁盤(ssd),該ssd包括nvm。
ec114)如ec113所述的方法,其中nvm包括閃存。
ec115)如ec111所述的方法,其中存儲設(shè)備包括硬盤驅(qū)動器(hdd),該hdd包括nvm。
ec116)如ec111所述的方法,其中供應(yīng)商特定命令類型包括供應(yīng)商特定固件識別信息讀取命令類型。
ec117)如ec111所述的方法,其中讀取身份命令類型包括串行高級技術(shù)附件(sata)識別命令類型。
ec118)如ec111所述的方法,其中讀取身份命令類型包括串行連接的小型計算機系統(tǒng)接口(串行scsi)(sas)讀取重要產(chǎn)品數(shù)據(jù)(vpd)命令類型。
ec119)如ec111所述的方法,其中讀取身份命令類型包括在進(jìn)行處理時使得返回第二固件修訂標(biāo)識符而不是第一固件修訂標(biāo)識符,在計算主機上執(zhí)行的操作系統(tǒng)(os)遇到不可恢復(fù)的錯誤的命令類型。
ec120)如ec119所述的方法,其中os包括一個版本的windowsos。
ec121)一種系統(tǒng),包括:
(a)構(gòu)件,用于根據(jù)多個固件圖像中的所選固件圖像執(zhí)行,固件圖像的每一個具有對應(yīng)標(biāo)識符,其中固件圖像包括各電流且新固件圖像具有各對應(yīng)的當(dāng)前標(biāo)識符和新標(biāo)識符;
(b)構(gòu)件,用于利用所選固件圖像(其是當(dāng)前固件圖像)來利用用于執(zhí)行的構(gòu)件并在這樣做的同時,響應(yīng)于來自計算主機的多個命令類型的特定命令類型的第一實例,返回當(dāng)前標(biāo)識符;
(c)構(gòu)件,其在(b)的構(gòu)件之后操作,用于接收具有新標(biāo)識符的新固件圖像;
(d)構(gòu)件,其在(c)的構(gòu)件之后操作,用于利用所選固件圖像(其是新固件圖像)來利用用于執(zhí)行的構(gòu)件并在這樣做的同時,響應(yīng)于特定命令類型的第二實例,返回當(dāng)前標(biāo)識符;
(e)構(gòu)件,其在(b)的構(gòu)件之后操作且響應(yīng)于電力循環(huán),用于利用所選固件圖像(其是新固件圖像)來利用用于執(zhí)行的構(gòu)件并在這樣做的同時,響應(yīng)于特定命令類型的第三實例,返回新標(biāo)識符;
經(jīng)啟用以存儲新固件的至少一部分的閃存,并且
其中特定命令類型使得:
(i)當(dāng)?shù)谝桓鳂?biāo)識符響應(yīng)于特定命令類型的第一相應(yīng)實例返回至計算主機時,
(ii)當(dāng)?shù)诙鳂?biāo)識符響應(yīng)于特定命令類型的第二相應(yīng)實例返回至計算主機時,并且
(iii)在返回的第一各標(biāo)識符與返回的第二各標(biāo)識符之間不發(fā)生電力循環(huán)的情況下,
在計算主機上執(zhí)行的操作系統(tǒng)(os)響應(yīng)于第二各標(biāo)識符的返回而遇到不可恢復(fù)的錯誤。
ec122)如ec121所述的系統(tǒng),其中,系統(tǒng)包括固態(tài)磁盤(ssd)的所有或任意部分。
ec123)如ec121所述的系統(tǒng),其中,os包括一個版本的windowsos且特定命令類型包括串行高級技術(shù)附件(sata)識別命令類型。
ec124)如ec121所述的系統(tǒng),其中,os包括一個版本的windowsos且特定命令類型包括串行連接的小型計算機系統(tǒng)接口(串行scsi)(sas)讀取重要產(chǎn)品數(shù)據(jù)(vpd)命令類型。
具有或參照ssd控制器的任意前述ec,其中ssd控制器在單個集成電路(ic)中實現(xiàn)。
具有或參照ssd控制器和一個或多個非易失性存儲器的任意前述ec,其中ssd控制器和非易失性存儲器包括在ssd中。
具有或參照一個或多個非易失性存儲器的任意前述ec,其中非易失性存儲器中的至少一個包括一個或多個閃存。
具有或參照ssd控制器和計算主機的任意前述ec,其中ssd控制器包括與存儲接口標(biāo)準(zhǔn)兼容且經(jīng)啟用以與計算主機耦接的存儲接口。
具有或參照ssd控制器的任意前述ec,其中ssd控制器包括非易失性存儲器接口。
具有或參照非易失性存儲器接口的任意前述ec,其中非易失性存儲器接口包括閃存接口。
具有或參照ssd控制器的任意前述ec,其中ssd控制器包括閃存接口。
具有或參照一個或多個閃存的任意前述ec,其中閃存中的至少一個包括以下各項中的一項或多項:
nand閃存技術(shù)存儲單元,以及
nor閃存技術(shù)存儲單元。
具有或參照一個或多個閃存的任意前述ec,其中閃存中的至少一個包括以下各項中的一項或多項:
單階存儲單元(slc)閃存技術(shù)存儲單元,以及
多階存儲單元(mlc)閃存技術(shù)存儲單元。
具有或參照閃存接口的任意前述ec,其中閃存接口與以下各項中的一項或多項兼容:
開放nand閃存接口(onfi),
切換模式接口,
雙倍數(shù)據(jù)速率(ddr)同步接口,
同步接口,以及
異步接口。
具有或參照存儲接口標(biāo)準(zhǔn)的任意前述ec,其中存儲接口標(biāo)準(zhǔn)包括以下各項中的一項或多項:
通用串行總線(usb)接口標(biāo)準(zhǔn),
緊湊式閃存(cf)接口標(biāo)準(zhǔn),
多媒體卡(mmc)接口標(biāo)準(zhǔn),
安全數(shù)字(sd)接口標(biāo)準(zhǔn),
記憶棒接口標(biāo)準(zhǔn),
xd圖片卡接口標(biāo)準(zhǔn),
集成驅(qū)動電子裝置(ide)接口標(biāo)準(zhǔn),
串行高級技術(shù)附件(sata)接口標(biāo)準(zhǔn),
外部sata(esata)接口標(biāo)準(zhǔn),
小型計算機系統(tǒng)接口(scsi)接口標(biāo)準(zhǔn),
串行連接的小型計算機系統(tǒng)接口(sas)接口標(biāo)準(zhǔn),
光纖通道接口標(biāo)準(zhǔn),
以太網(wǎng)接口標(biāo)準(zhǔn),以及
快速外圍組件互連(pcie)接口標(biāo)準(zhǔn)。
具有或參照計算主機的任意前述ec,其中計算主機包括以下各項中的一項或多項:
計算機,
工作站計算機,
服務(wù)器計算機,
存儲服務(wù)器,
個人計算機(pc),
膝上電腦,
筆記本電腦,
上網(wǎng)本電腦,
個人數(shù)字助理(pda),
媒體播放器,
媒體記錄器,
數(shù)碼相機,
蜂窩手機,
無繩電話手機,以及
電子游戲機。
可設(shè)想另外的ec,包括裝置、系統(tǒng)、方法、構(gòu)件加功能、以及計算機可讀介質(zhì)類似物和/或前述ec的所有或任意部分的變化。
系統(tǒng)
圖1a示出了包括提供管理主機看到的設(shè)備固件更新效果的ssd控制器100的ssd101的實施方式的所選細(xì)節(jié)。ssd控制器用于管理比如經(jīng)由nvm元件(例如,閃存)實現(xiàn)的非易失性存儲。ssd控制器100經(jīng)由一個或多個外部接口110與主機(未示出)通信耦接。根據(jù)各種實施方式,外部接口110是以下各項中的一項或多項:sata接口;sas接口;pcie接口;光纖通道接口;外部接口(比如10千兆以太網(wǎng));任意前述接口的非標(biāo)準(zhǔn)版本;定制接口;或用于將存儲和/或通信和/或計算設(shè)備互連的任何其他類型的接口。例如,在某些實施方式中,ssd控制器100包括sata接口和pcie接口。
ssd控制器100進(jìn)一步經(jīng)由一個或多個設(shè)備接口190與包括一個或多個存儲設(shè)備(比如,閃存設(shè)備192的一個或多個實例)的nvm199通信耦接。根據(jù)各種實施方式,設(shè)備接口190是用于連接至存儲設(shè)備的以下各項中的一項或多項:異步接口;同步接口;ddr同步接口;onfi兼容接口(比如,onfi2.2oronfi3.0兼容接口);切換模式兼容閃存接口;任意前述接口的非標(biāo)準(zhǔn)版本;定制接口;或任何其他類型的接口。
在某些實施方式中,每一個閃存設(shè)備192具有一個或多個個體閃存芯片194。根據(jù)閃存設(shè)備192的特定閃存設(shè)備的類型,特定閃存設(shè)備192中的多個閃存芯片194任選地和/或可選地并行訪問。閃存設(shè)備192只表示經(jīng)啟用以與ssd控制器100通信耦接的一種類型的存儲設(shè)備。在各種實施方式中,任何類型的存儲設(shè)備都是可使用的,比如slcnand閃存、mlcnand閃存、nor閃存、使用基于多晶硅或氮化硅技術(shù)的電荷存儲單元的閃存、基于二維或三維技術(shù)的閃存、只讀存儲器、靜態(tài)隨機存取存儲器、動態(tài)隨機存取存儲器、鐵磁性存儲器、相變存儲器、賽道存儲器、reram或任何其他類型的存儲器設(shè)備或存儲介質(zhì)。
根據(jù)各種實施方式,設(shè)備接口190被組織為:一條或多條總線,其中每條總線具有閃存設(shè)備192的一個或多個實例;一個或多個總線組,其中每條總線具有閃存設(shè)備192的一個或多個實例,其中一組中的總線通常被并行訪問;或閃存設(shè)備192的一個或多個實例至設(shè)備接口190的任何其他組織。
繼續(xù)圖1a,ssd控制器100具有一個或多個模塊,比如主機接口111、數(shù)據(jù)處理121、緩沖器131、映射141、回收站151、ecc161、設(shè)備接口邏輯191以及cpu171。圖1a中所示的具體模塊和互連僅僅表示一個實施方式,可以想到一些或所有模塊以及未示出的其他模塊的多種布置和互連。在第一示例中,在某些實施方式中,存在兩個或兩個以上主機接口111來提供雙通道。在第二示例中,在某些實施方式中,數(shù)據(jù)處理121和/或ecc161與緩沖器131組合。在第三示例中,在某些實施方式中,主機接口111直接與緩沖器131耦接,并且數(shù)據(jù)處理121任選地和/或可選地對于存儲在緩沖器131中的數(shù)據(jù)進(jìn)行操作。在第四示例中,在某些實施方式中,設(shè)備接口邏輯191直接與緩沖器131耦接,并且ecc161任選地和/或可選地對于存儲在緩沖器131中的數(shù)據(jù)進(jìn)行操作。
主機接口111經(jīng)由外部接口110發(fā)送和接收命令和/或數(shù)據(jù),并且,在某些實施方式中,經(jīng)由標(biāo)簽跟蹤113來跟蹤單獨命令的進(jìn)程。例如,命令包括指定要讀取的數(shù)據(jù)的地址(比如lba)和量(比如lba配量,例如扇區(qū)的數(shù)量)的讀取命令;作為響應(yīng),ssd提供讀取狀態(tài)和/或讀取數(shù)據(jù)。再如,命令包括指定要寫入的數(shù)據(jù)的地址(比如lba)和量(比如lba配量,例如扇區(qū)的數(shù)量)的寫入命令;作為響應(yīng),ssd提供寫入狀態(tài)和/或請求寫入數(shù)據(jù)且隨后任選提供寫入狀態(tài)。對于又一示例,命令包括指定不再需要分配的一個或多個地址(比如一個或多個lba)的解分配命令(例如,修整命令);作為響應(yīng),ssd相應(yīng)地修改映射且任選提供解分配狀態(tài)。在某些背景下,ata兼容trim命令是示例性解分配命令。對于又一示例,命令包括超級電容器測試命令或數(shù)據(jù)強化成功查詢;作為響應(yīng),ssd提供適當(dāng)狀態(tài)。在某些實施方式中,主機接口111與sata協(xié)議兼容,并且,使用ncq命令而啟用以具有最多32條待處理命令,每條命令有表示為數(shù)字0至31的唯一標(biāo)簽。在某些實施方式中,標(biāo)簽跟蹤113經(jīng)啟用以使經(jīng)由外部接口110接收的命令的外部標(biāo)簽與用于在ssd控制器100處理過程中跟蹤命令的內(nèi)部標(biāo)簽相關(guān)聯(lián)。
根據(jù)各種實施方式,揭示以下各項中的一個或多個:數(shù)據(jù)處理121任選地和/或可選地處理在緩沖器131與外部接口110之間發(fā)送的一些或所有數(shù)據(jù);以及數(shù)據(jù)處理121任選地和/或可選地處理存儲在緩沖器131中的數(shù)據(jù)。在某些實施方式中,數(shù)據(jù)處理121使用一個或多個引擎123來執(zhí)行以下各項中的一項或多項:格式化;重新格式化;轉(zhuǎn)碼;以及任何其他的數(shù)據(jù)處理和/或操控任務(wù)。
緩沖器131存儲自設(shè)備接口190發(fā)送至外部接口110/自外部接口110發(fā)送至設(shè)備接口190的數(shù)據(jù)。在某些實施方式中,緩沖器131另外存儲由ssd控制器100使用的系統(tǒng)數(shù)據(jù)(比如某些或全部映射表)以管理閃存設(shè)備192中的一個或多個。在各種實施方式中,緩沖器131具有以下各項中的一個或多個:用于臨時存儲數(shù)據(jù)的存儲器137;用于控制至和/或自緩沖器131的數(shù)據(jù)的移動的dma133;用于提供較高級錯誤校正和/或冗余功能的ecc至x135;和其他數(shù)據(jù)移動和/或操控功能。較高級冗余功能的示例為一種raid類能力(例如,rasie),其中冗余在閃存設(shè)備(例如閃存設(shè)備192的多個閃存設(shè)備)級和/或閃存芯片(比如閃存芯片194)級上而非在磁盤級上。
根據(jù)各種實施方式,揭示以下各項中的一個或多個:ecc161任選地和/或可選地處理在緩沖器131和設(shè)備接口190之間發(fā)送的一些或所有數(shù)據(jù);以及ecc161任選地和/或可選地處理存儲在緩沖器131內(nèi)的數(shù)據(jù)。在某些實施方式中,ecc161用于提供較低級錯誤校正和/或諸如根據(jù)一個或多個ecc計算的冗余功能。在某些實施方式中,ecc161實現(xiàn)以下各項中的一個或多個:crc碼;漢明碼;rs碼;bch碼;ldpc碼;維特比碼;格子碼;硬判決碼;軟判決碼;基于擦除的碼;任何錯誤檢測和/或糾正碼;以及上述的任意組合。在某些實施方式中,ecc161包括一個或多個解碼器(比如ldpc解碼器)。
設(shè)備接口邏輯191經(jīng)由設(shè)備接口190控制閃存設(shè)備192的實例。設(shè)備接口邏輯191經(jīng)啟用以根據(jù)閃存設(shè)備192的協(xié)議將數(shù)據(jù)發(fā)送到或從閃存設(shè)備192發(fā)送數(shù)據(jù)。設(shè)備接口邏輯191包括調(diào)度193,從而經(jīng)由設(shè)備接口190可選地順序控制閃存設(shè)備192的實例。例如,在某些實施方式中,調(diào)度193經(jīng)啟用以排隊對于閃存設(shè)備192的實例的操作,并且當(dāng)單獨的閃存設(shè)備192(或閃存芯片194)的實例可用時,可選地將操作發(fā)送至個體閃存設(shè)備192(或閃存芯片194)的實例。
映射141在用于外部接口110上的數(shù)據(jù)尋址與用于設(shè)備接口190上的數(shù)據(jù)尋址之間轉(zhuǎn)換,使用表143將外部數(shù)據(jù)地址映射至nvm199中的位置。例如,在某些實施方式中,映射141經(jīng)由由表143提供的映射將用于外部接口110上的lba轉(zhuǎn)換成瞄準(zhǔn)一個或多個閃存芯片192的區(qū)塊和/或頁地址。對于自驅(qū)動制造或解分配未曾被寫入的lba,該映射指向缺省值以傳回是否讀取lba。例如,在處理解分配命令時,修改該映射以使得對應(yīng)于解分配lba的條目指向缺省值中的一個。在各種實施方式中,存在各種缺省值,其各自具有對應(yīng)指針。多個缺省值使得能夠讀取某些解分配lba(比如在第一范圍中)作為一個缺省值,同時讀取其他解分配lba(比如在第二范圍中)作為另一個缺省值。在各種實施方式中,缺省值由閃存、硬件、固件、命令和/或基元引數(shù)和/或參數(shù)、可編程寄存器或其各種組合定義。
在某些實施方式中,回收站151執(zhí)行垃圾收集。例如,在某些實施方式中,閃存設(shè)備192的實例包含在可重寫入之前必須擦除的區(qū)塊?;厥照?51經(jīng)啟用以例如,通過掃描映射141保持的映射來確定閃存設(shè)備192的實例的哪些部分正在有效使用中(例如,被分配而非被解分配),然后通過對閃存設(shè)備192的實例的未使用(例如,解分配)的部分進(jìn)行擦除而使其可用于寫入。在進(jìn)一步實施方式中,回收站151經(jīng)啟用以移動存儲在閃存設(shè)備192的實例內(nèi)的數(shù)據(jù),以使閃存設(shè)備192的實例的較大連續(xù)部分可用于寫入。
cpu171控制ssd控制器100的各個部分。cpu171包括cpu內(nèi)核172。根據(jù)各種實施方式,cpu內(nèi)核172為一個或多個單核或多核處理器。在某些實施方式中,cpu內(nèi)核172中的各個處理器內(nèi)核是多線程的。cpu內(nèi)核172包括指令和/或數(shù)據(jù)緩存器和/或存儲器。例如,指令存儲器包括能使cpu內(nèi)核執(zhí)行軟件(有時稱為固件)以控制ssd控制器100的指令。在某些實施方式中,cpu內(nèi)核172執(zhí)行的一些或所有固件存儲在閃存設(shè)備192上(例如作為如圖1b和圖1c中所示的nvm199的固件106)。
在各種實施方式中,cpu171進(jìn)一步包括:在經(jīng)由外部接口110接收的命令在處理中時跟蹤和控制該命令的命令管理173;控制緩沖器131的分配和使用的緩沖器管理175;控制映射141的轉(zhuǎn)譯管理177;控制數(shù)據(jù)尋址的一致性并避免比如外部數(shù)據(jù)訪問和回收數(shù)據(jù)訪問之間沖突的一致性管理179;控制設(shè)備接口邏輯191的設(shè)備管理181;控制身份信息的修改和通信的身份管理182;以及任選其他管理單元。根據(jù)各種實施方式,cpu171執(zhí)行的任何或所有管理功能是由硬件、軟件(比如在cpu內(nèi)核172或經(jīng)由外部接口110連接的主機上執(zhí)行的固件)或其任何組合進(jìn)行控制和/或管理的。
在某些實施方式中,cpu171經(jīng)啟用以執(zhí)行其他管理任務(wù),例如,以下各項中的一個或多個:收集和/或報告性能統(tǒng)計;實現(xiàn)smart;控制電力排序、控制和/或監(jiān)測和/或調(diào)整電力消耗;對電力故障做出響應(yīng);控制和/或監(jiān)測和/或調(diào)整時鐘速率;以及其他管理任務(wù)。
各種實施方式包括與ssd控制器100類似并且比如經(jīng)由主機接口111和/或外部接口110適配與各種計算主機的操作兼容的計算主機閃存控制器。各種計算主機包括以下各項中的一個或其任何組合:計算機、工作站計算機、服務(wù)器計算機、存儲服務(wù)器、pc、膝上電腦、筆記本電腦、上網(wǎng)本電腦、pda、媒體播放器、媒體記錄器、數(shù)碼相機、蜂窩手機、無繩電話手機和電子游戲機。
在各種實施方式中,ssd控制器(或計算主機閃存控制器)的所有或任意部分在單個ic、多芯片ic的單芯片、多芯片ic的多個芯片或多個ic上實現(xiàn)。例如,緩沖器131與ssd控制器100的其他元件在同一芯片上實現(xiàn)。再如,緩沖器131與ssd控制器100的其他元件在不同的芯片上實現(xiàn)。
圖1b示出了包括圖1a的ssd的系統(tǒng)的一個實施方式的所選細(xì)節(jié)。ssd101包括經(jīng)由設(shè)備接口190與nvm199耦接的ssd控制器100。ssd經(jīng)由外部接口110與主機102耦接。在某些實施方式中,ssd101(或其變型)對應(yīng)于與作為主機102操作的發(fā)起器耦接的sas驅(qū)動器或sata驅(qū)動器。
主機102經(jīng)啟用以執(zhí)行os105,os包括和/或經(jīng)啟用以借助與ssd交互的驅(qū)動程序(未示出)操作。windows的各種版本(例如,95、98、me、nt、xp、2000、server、vista及7)、linux的各種版本(例如,redhat、debian及ubuntu)及macos的各種版本(例如,8、9及x)是os105的示例。
在某些實施方式中,nvm199的一個或多個部分用于固件存儲106和/或選擇id信息存儲107。固件存儲包括一個或多個固件圖像(或其部分)。例如,固件圖像具有(例如)通過ssd控制器100的cpu內(nèi)核172執(zhí)行的軟件的一個或多個圖像。再如,固件圖像具有(例如)在軟件執(zhí)行期間由cpu內(nèi)核參考的常數(shù)、參數(shù)值及nvm設(shè)備信息的一個或多個圖像。例如,固件的一個或多個圖像對應(yīng)于(例如)當(dāng)前固件圖像及零個以上的先前(相對于固件更新)固件圖像。
選擇id信息存儲107包括與ssd101、ssd控制器100的任意一個或多個相關(guān)聯(lián)的身份/識別信息的所有或任意部分、由cpu內(nèi)核當(dāng)前執(zhí)行的(或在下一電力循環(huán)之后要執(zhí)行的)的軟件、和體現(xiàn)ssd的特定產(chǎn)品的所有或任意部分的一個或多個圖像。一個或多個身份/識別信息圖像例如對應(yīng)于當(dāng)前固件圖像執(zhí)行的結(jié)果和固件圖像執(zhí)行的零個或多個先前結(jié)果。
在各種實施方式中,選擇id信息存儲107包括固件版本標(biāo)識符的所有或任意部分和/或進(jìn)行ssp的狀態(tài)和/或參數(shù)的所有或任意部分。更一般地,選擇id信息存儲包括本文其他地方所描述的身份和/或識別信息的所有或任意部分的一個或多個版本。這些版本對應(yīng)于固件的相應(yīng)版本和/或固件的啟動。
圖1c示出了包括圖1a的ssd的系統(tǒng)的另一個實施方式的所選細(xì)節(jié)。如圖1b所示,ssd101包括經(jīng)由設(shè)備接口190與nvm199耦接的ssd控制器100。ssd經(jīng)由外部接口110與主機102耦接,外部接口110又與中間控制器103耦接,然后經(jīng)由中間接口104與主機102耦接。在各種實施方式中,ssd控制器100經(jīng)由其他控制器,比如raid控制器的一個或多個中間級與主機耦接。在某些實施方式中,ssd101(或其變型)對應(yīng)于sas驅(qū)動器或sata驅(qū)動器,且中間控制器103對應(yīng)于擴展器,該擴展器又與發(fā)起器耦接,或可替代地,中間控制器103對應(yīng)于橋接器,該橋接器經(jīng)由擴展器間接與發(fā)起器耦接。
在各種實施方式中,ssd控制器和/或計算主機閃存控制器結(jié)合一個或多個nvm一起實現(xiàn)為非易失性存儲組件,比如usb存儲組件、cf存儲組件、mmc存儲組件、sd存儲組件、記憶棒存儲組件和xd圖片卡存儲組件。
在各種實施方式中,ssd控制器(或計算主機閃存控制器)的所有或任何部分或其功能在主機(例如,圖1c的主機102)中實現(xiàn),控制器要與該主機耦接。在各種實施方式中,ssd控制器(或計算主機閃存控制器)的所有或任何部分或其功能經(jīng)由硬件(例如,邏輯電路)、軟件和/或固件(例如,驅(qū)動程序軟件和/或ssd控制固件)或其任意組合來實現(xiàn)。例如,ecc單元(比如,類似于圖1a的ecc161和/或ecc至x135)的功能或與該ecc單元相關(guān)聯(lián)的功能經(jīng)由軟件在主機上實現(xiàn)且部分經(jīng)由固件和硬件的組合在ssd控制器中實現(xiàn)。再如,回收站單元(比如類似于圖1a的回收站151)的功能或與該回收站單元相關(guān)聯(lián)的功能部分地經(jīng)由軟件在主機上實現(xiàn)且部分地經(jīng)由硬件在計算主機閃存控制器中實現(xiàn)。
操作
圖2示出了管理主機看到的設(shè)備固件更新效果的一個實施方式的所選細(xì)節(jié)的流程圖200。該圖的實施方式的操作的示例性系統(tǒng)上下文包括與主機耦接的設(shè)備,其中os在主機上運行。該設(shè)備響應(yīng)于來自主機的命令且經(jīng)啟用以檢測并響應(yīng)于結(jié)束延遲可見性的事件(例如,電力循環(huán))。設(shè)備根據(jù)固件(比如執(zhí)行固件的控制器)進(jìn)行操作。設(shè)備還根據(jù)可經(jīng)由固件(比如經(jīng)由修改其一部分的控制器)可讀取且可寫入的選擇身份/識別信息進(jìn)行操作。選擇身份/識別信息(也稱為“id信息”)是本文其他地方描述的一個或多個子集的身份和/或識別信息,該子集根據(jù)實施方式、使用場景和/或設(shè)備的操作模式變化。該圖中所示的流程提供延遲固件更新效果的至少一部分的可見性,由此允許管理主機看到的設(shè)備固件更新效果。
id信息包括一個或多個元素(例如,參數(shù)、值和/或字段)。當(dāng)設(shè)備經(jīng)由固件啟動和/或至少部分經(jīng)由固件執(zhí)行所選功能時,參考(例如,讀取、寫入或讀取和寫入)該id信息。特定版本的固件具有與特定版本的id信息的對應(yīng)關(guān)系。例如,在啟動特定版本的固件期間,特定版本的固件填充id信息的一個或多個元素,因此所填充的id信息對應(yīng)于特定版本的固件。再如,在執(zhí)行特定版本的固件的特定功能的同時,寫入id信息的一個或多個元素,由此在特定版本的固件與所寫入id信息之間產(chǎn)生對應(yīng)關(guān)系。
具體地,如該圖所示,流程開始于設(shè)備根據(jù)“舊”版本的固件和根據(jù)與舊固件對應(yīng)的“舊”id信息進(jìn)行操作(操作(舊)固件(舊)id信息,201)。在流程停留在201中時,當(dāng)設(shè)備響應(yīng)于來自主機的取決于id信息的選擇命令時,該設(shè)備參考所填充的符合舊id信息的id信息。例如,如果設(shè)備是sata兼容ssd,則響應(yīng)于sata識別命令,該設(shè)備返回從舊id信息確定的vpd,該vpd例如包括固件修訂標(biāo)識符和/或進(jìn)行ssp的參數(shù)。
外部代理程序(例如,用戶或固件版本檢查工具)確定比如經(jīng)由下載并激活/啟動新固件來對設(shè)備進(jìn)行固件更新。固件更新開始于主機向設(shè)備發(fā)出命令以更新/下載固件(下載命令,201d),并且作為響應(yīng),設(shè)備任選結(jié)合主機獲取新固件(下載(新)固件,202)。然后,設(shè)備改變內(nèi)部狀態(tài)和/或功能以防止修改所填充的id信息直至電力循環(huán)(保護選擇id信息,203)。
固件更新繼續(xù)使主機向設(shè)備發(fā)出命令以利用新固件進(jìn)行操作(激活命令,203a),并且作為響應(yīng),設(shè)備激活新固件(激活(新)固件,204)并利用新固件啟動(設(shè)備啟動,205)。在啟動之后所填充的id信息符合舊id信息(對應(yīng)于舊固件),因為已經(jīng)保護所填充的id信息免受修改(203)。在啟動之后,該設(shè)備根據(jù)新版本的固件和根據(jù)與舊固件對應(yīng)的舊id信息進(jìn)行操作(操作(新)固件(舊)id信息,206)。在流程停留在201中時,當(dāng)設(shè)備響應(yīng)于來自主機的取決于id信息的選擇命令時,該設(shè)備參考所填充的符合舊id信息的id信息,如在201中時一樣。
因此,當(dāng)設(shè)備響應(yīng)于選擇命令(其取決于id信息)時,設(shè)備參考所填充的符合舊id信息的id信息,由此延遲固件更新效果的至少一部分的可見性。實際上,對于選擇命令,在固件更新前后參考相同的id信息。
例如,如果設(shè)備是sata兼容ssd,則響應(yīng)于sata識別命令,設(shè)備有效地參考舊id信息,從舊id信息確定固件修訂標(biāo)識符(所確定的與舊固件對應(yīng)的固件修訂標(biāo)識符),并返回包括舊固件修訂標(biāo)識符的vpd。因此,在固件更新前后提供相同的固件修訂標(biāo)識符。在固件更新前后提供相同的固件修訂標(biāo)識符使在主機上運行的某些版本的windowsos繼續(xù)在固件更新過程中運行,而不重新啟動os,比如在以下情況下,如果在更新前后提供的固件修訂標(biāo)識符不同,則該os會遇到不可恢復(fù)的錯誤和“崩潰”。
再如,如果設(shè)備是sata兼容ssd,則響應(yīng)于sata識別命令,設(shè)備有效地參考舊id信息,從舊id信息確定進(jìn)行ssp的參數(shù)(所確定的與舊固件對應(yīng)的進(jìn)行ssp的參數(shù)),并返回包括進(jìn)行ssp的舊參數(shù)的vpd。因此,在固件更新前后提供進(jìn)行ssp的相同參數(shù)。
流程直到允許用與新固件對應(yīng)的信息填充id信息的電力循環(huán)才完整。電力循環(huán)與循環(huán)設(shè)備和主機的電力對應(yīng),因此主機上的os被作為電力循環(huán)的一部分而重新啟動(注意,os尚未針對與201至206相關(guān)聯(lián)的任意處理專門重新啟動)。因此,當(dāng)存在電力循環(huán)時,該流程繼續(xù)進(jìn)行,并且響應(yīng)于電力被移除并重新施加(電力循環(huán),206p),設(shè)備改變內(nèi)部狀態(tài)和/或功能以允許修改所填充的id信息(解除選擇id信息的保護,207)。設(shè)備然后利用新固件啟動(設(shè)備啟動,208)。在啟動之后所填充的id信息是新id信息(對應(yīng)于新固件),因為所填充的id信息經(jīng)啟用以進(jìn)行修改(207)。在啟動之后,該設(shè)備根據(jù)新版本的固件和根據(jù)與新固件對應(yīng)的新id信息進(jìn)行操作(操作(新)固件(新)id信息,209)。在流程停留在209中時,當(dāng)設(shè)備響應(yīng)于來自主機的取決于id信息的選擇命令時,該設(shè)備參考所填充的符合新id信息的id信息。該流程現(xiàn)在是完整的,并且結(jié)束延遲固件更新效果的至少一部分的可見性。
從概念上講,209中的操作等效于201中的操作(該操作根據(jù)彼此對應(yīng)的固件和id信息)。因此,任選進(jìn)行另一個固件更新,好像209就是201一樣,等等。
在某些實施方式和/或使用場景下,在結(jié)束延遲可見性的事件跟隨第一固件更新之前,下載第二固件更新。延遲固件更新效果的至少一部分的可見性在第二固件更新過程中被延長。從概念上講,在下載第二固件更新的過程中進(jìn)一步保存id信息直至電力循環(huán)。
更具體地,在相對于圖2描述的實施方式中,考慮設(shè)備已經(jīng)收到第一固件更新(第一新固件),但尚未電力循環(huán),因此如與206中一樣進(jìn)行操作。主機然后向設(shè)備發(fā)出命令以更新/下載(第二新)固件,并且作為響應(yīng),設(shè)備獲得(第二新)固件,如與202中一樣。設(shè)備然后改變內(nèi)部狀態(tài)和/或功能以防止修改所填充的id信息直至電力循環(huán),如與203中一樣。所保護的填充id信息與下載第一固件更新之前的填充id信息相同。在激活并啟動之后,設(shè)備根據(jù)第二新固件并根據(jù)舊id信息(在第一固件更新之前其對應(yīng)于舊固件)進(jìn)行操作,類似于206中的操作。在某些使用場景下,一個或多個額外的固件更新發(fā)生在電力循環(huán)之前,每一個經(jīng)處理使得在相應(yīng)固件更新過程中保存填充id信息。
在某些實施方式和/或使用場景下,以與該圖中描述的順序不同的順序組合和/或進(jìn)行一個或多個操作202至205。例如,202和203經(jīng)組合使得下載固件的命令被設(shè)備解釋以包括防止修改填充id信息直至電力循環(huán)以及更新/下載固件。再如,響應(yīng)于下載固件的命令,在202之前進(jìn)行203。在某些實施方式中,204在203之后,而不接收利用新固件操作的命令。可設(shè)想其他變化。
圖3示出了管理主機看到的設(shè)備固件更新效果的另一個實施方式的所選細(xì)節(jié)的流程圖300。圖3的實施方式在某些方面類似于圖2進(jìn)行操作。圖2的實施方式的操作的示例性系統(tǒng)上下文適用于圖3的實施方式。該圖中所示的流程提供延遲固件更新效果的至少一部分的可見性,由此允許管理主機看到的設(shè)備固件更新效果。
如該圖所示,流程開始于設(shè)備根據(jù)“舊”版本的固件和根據(jù)與舊固件對應(yīng)的“舊”id信息進(jìn)行操作(操作(舊)固件(舊)id信息,301)。在流程停留在301中時,操作類似于圖2的201,使得當(dāng)設(shè)備響應(yīng)于來自主機的取決于id信息的選擇命令時,該設(shè)備參考所填充的符合舊id信息的id信息。
進(jìn)一步類似于圖2,外部代理程序確定對設(shè)備進(jìn)行固件更新。然而,不同于圖2的實施方式,在圖3的實施方式中,固件更新開始于主機向設(shè)備發(fā)出命令以將id信息從設(shè)備提供給主機(讀取id命令,301r)。作為響應(yīng),設(shè)備向主機發(fā)送填充id信息(提供選擇id信息,302)。固件更新繼續(xù)執(zhí)行主機向設(shè)備發(fā)出命令以更新/下載固件(下載命令,302d),并且作為響應(yīng),設(shè)備任選結(jié)合主機獲取新固件(下載(新)固件,303)。
固件更新繼續(xù)使主機向設(shè)備發(fā)出命令以利用新固件進(jìn)行操作(激活命令,303a)。作為響應(yīng),設(shè)備激活新固件(激活(新)固件,304)并利用新固件啟動(設(shè)備啟動,305)。然而,在設(shè)備利用新固件開始充分操作之前,主機向設(shè)備發(fā)送命令以從主機接收id信息(寫入id命令,305w)。作為響應(yīng),設(shè)備從主機接收id信息并將收到的id信息保存為填充id信息(接收選擇id信息,306)。主機提供在306中使用的id信息,這與設(shè)備在302中所提供的相同,因此,填充id信息符合舊id信息。設(shè)備然后根據(jù)新固件和舊id信息開始充分操作(操作(新)固件(舊)id信息,307)。在流程停留在307中時,當(dāng)設(shè)備響應(yīng)于來自主機的取決于id信息的選擇命令時,該設(shè)備參考所填充的符合舊id信息的id信息,如在301中時一樣。
因此,如圖2所示,當(dāng)設(shè)備響應(yīng)于選擇命令(其取決于id信息)時,設(shè)備有效地參考舊id信息,由此延遲固件更新效果的至少一部分的可見性并在固件更新前后有效地參考相同的id信息。例如,在固件更新前后提供相同的固件修訂標(biāo)識符,從而使在主機上運行的某些版本的windowsos繼續(xù)在固件更新過程中運行,而不重新啟動os,比如在以下情況下,如果在更新前后提供的固件修訂標(biāo)識符不同,則該os會遇到不可恢復(fù)的錯誤和“崩潰”。再如,在固件更新前后提供進(jìn)行ssp的相同參數(shù)。
如圖2所示,流程直到允許用與新固件對應(yīng)的信息填充id信息的電力循環(huán)才完整。電力循環(huán)與循環(huán)設(shè)備和主機的電力對應(yīng),因此主機上的os被作為電力循環(huán)的一部分而重新啟動(注意,os尚未針對與301至307相關(guān)聯(lián)的任意處理專門重新啟動)。因此,當(dāng)存在電力循環(huán)時,該流程繼續(xù)進(jìn)行,并且響應(yīng)于電力被移除并重新施加(電力循環(huán),307p),設(shè)備消除由306寫入的填充id信息的任何影響(丟棄選擇id信息,308)。設(shè)備然后利用新固件啟動(設(shè)備啟動,309)。在啟動之后所填充的id信息是新id信息(對應(yīng)于新固件),因為不存在來自主機的寫入id命令來提供舊id信息,并且在啟動期間填充id信息寫入有新id信息。在啟動之后,該設(shè)備根據(jù)新版本的固件和根據(jù)與新固件對應(yīng)的新id信息進(jìn)行操作(操作(新)固件(新)id信息,310)。在流程停留在310中時,當(dāng)設(shè)備響應(yīng)于來自主機的取決于id信息的選擇命令時,該設(shè)備參考所填充的符合新id信息的id信息。該流程現(xiàn)在是完整的,并且結(jié)束延遲固件更新效果的至少一部分的可見性。
從概念上講,310中的操作等效于301中的操作(該操作根據(jù)彼此對應(yīng)的固件和id信息)。因此,任選進(jìn)行另一個固件更新,好像310就是301一樣,等等。
如圖2所示,在與圖3有關(guān)的某些實施方式和/或使用場景下,在結(jié)束延遲可見性的事件遵循第一固件更新之前,下載第二固件更新。延遲固件更新效果的至少一部分的可見性在第二固件更新過程中被延長。從概念上講,在第二固件更新之后用舊id信息重新填充id信息。
更具體地,在相對于圖3描述的實施方式中,考慮設(shè)備已經(jīng)收到第一固件更新(第一新固件),但尚未電力循環(huán),因此如與307中一樣進(jìn)行操作。主機然后通過向設(shè)備發(fā)出命令以提供填充id信息來開始(第二新)固件更新,如與302中一樣,并且作為響應(yīng),設(shè)備也這樣做。固件更新繼續(xù)下載(第二新)固件、激活和啟動。然而,在設(shè)備利用(第二新)固件開始充分操作之前,主機向設(shè)備發(fā)送命令以接收id信息(如與305w中一樣)。主機提供供使用的id信息,這與設(shè)備早些時候響應(yīng)于從主機至所提供的填充id信息的命令所提供的相同。設(shè)備寫入所提供的id信息作為填充id信息,因此填充id信息符合舊id信息。設(shè)備然后根據(jù)第二新固件和舊id信息(在第一固件更新之前其對應(yīng)于舊固件)開始充分操作,類似于307中的操作。在某些使用場景下,一個或多個額外的固件更新發(fā)生在電力循環(huán)之前,每一個經(jīng)處理使得在相應(yīng)固件更新之后用舊id信息重新填充該填充id信息。
在從概念上講是圖3所示的實施方式的變型的實施方式中,id信息例如對應(yīng)于進(jìn)行ssp的一個或多個參數(shù)。在設(shè)備利用新固件充分操作之前,并且在不從設(shè)備讀取填充id信息的情況下,主機明確為設(shè)備提供id信息。作為響應(yīng),設(shè)備將所提供的id信息寫入為填充id信息。更具體地,在相對于圖3描述的實施方式中,認(rèn)為設(shè)備如與301中一樣操作。流程響應(yīng)于主機向設(shè)備提供下載命令直接從301進(jìn)入303。流程然后沿304、305和306進(jìn)行。相對于306,因為302已被省略,主機提供與從設(shè)備提供給主機的id信息無關(guān)的id信息。
在相對于圖2和圖3描述的前述實施方式中,結(jié)束延遲可見性的事件為設(shè)備電力循環(huán)(例如,圖2的206p和圖3的307p)。可設(shè)想其他實施方式,比如其中事件是設(shè)備的所有或任意部分的任意一個或多個從一種電力模式轉(zhuǎn)換至另一種電力模式(例如,退出休眠模式或phy電力管理模式),設(shè)備接收供應(yīng)商特定命令,設(shè)備接收特定參數(shù)和/或代碼作為固件更新的一部分,并且重置鏈路使設(shè)備與主機耦接。
在某些實施方式和/或使用場景下,以與該圖中描述的順序不同的順序組合和/或進(jìn)行一個或多個操作302至306。例如,302和303以與所描述的順序不同的順序組合和/或執(zhí)行使得下載固件的命令被設(shè)備解釋以包括向主機發(fā)送填充id信息以及更新/下載固件的設(shè)備,并且不使用將填充id信息從設(shè)備提供給主機的命令。再如,304與305組合,例如,設(shè)備響應(yīng)于利用新固件進(jìn)行操作的命令進(jìn)行啟動(沒有明確激活)。在某些實施方式和/或使用場景下,省略308,并且309經(jīng)由例如重寫先前存儲的id信息來填充id信息??稍O(shè)想其他變化。
在與圖2和/或圖3有關(guān)的各種實施方式中,設(shè)備任選地(例如,根據(jù)一個或多個模式位、供應(yīng)商特定命令、ssd控制器檢測的固件事件、或其任意組合)響應(yīng)于電力循環(huán)來進(jìn)行固件下載、激活和/或啟動中的任意一種或多種。例如,根據(jù)接收第一供應(yīng)商特定命令,設(shè)備利用當(dāng)前執(zhí)行的固件啟動,而不激活并啟動目前尚未執(zhí)行的新下載的固件。進(jìn)一步地,根據(jù)接收第二供應(yīng)商特定命令,設(shè)備利用新下載的固件啟動。
在與圖2和/或圖3有關(guān)的各種實施方式中,在固件更新之后且在電力循環(huán)之前,設(shè)備經(jīng)啟用以選擇性地向主機提供新id信息(例如,與新固件對應(yīng)的id信息)。來自主機的取決于id信息的選擇命令包括兩組命令。第一組選擇命令由設(shè)備根據(jù)填充id信息進(jìn)行處理,因此在固件更新之后且在電力循環(huán)之前,第一組命令接收符合舊id信息的id信息。第一組選擇命令對應(yīng)于來自主機的命令,使得如果設(shè)備要對新id信息作出響應(yīng),則在某些使用場景下,該os會遇到不可恢復(fù)的錯誤,比如作為響應(yīng)接收識別幀的命令。第二組選擇命令由設(shè)備根據(jù)與當(dāng)前執(zhí)行固件對應(yīng)的id信息進(jìn)行處理,無論在固件更新之后是否發(fā)生電力循環(huán)。例如,在206中(圖2)或307中(圖3)操作的同時,響應(yīng)于第二組的命令,設(shè)備向主機提供新id信息(對應(yīng)于新固件)。例如,無論電力循環(huán)是否發(fā)生在下載新固件與啟動之間,比如在設(shè)備利用新固件啟動時從寫入有新id信息的陰影vpd區(qū)域和/或日志提供新id信息,。
在與圖2和/或圖3有關(guān)的各種實施方式中,經(jīng)由一個或多個模式啟用(禁用)延遲固件更新效果的至少一部分的可見性。例如,在“延遲”模式下,第一模式啟用實施方式的操作根據(jù)圖2而定。在“非延遲”模式下,第一模式啟用實施方式的操作根據(jù)圖2而定,除了不存在防止修改填充id信息的情況之外(例如,跳過203,流程響應(yīng)于利用新固件操作的命令從202進(jìn)入204)。206中的操作然后符合新固件以及與該新固件對應(yīng)的填充id信息。再如,在“延遲”模式下,第二模式啟用實施方式的操作根據(jù)圖3而定。在“非延遲”模式下,第二模式啟用實施方式的操作根據(jù)圖3而定,除了不存在來自主機的接收id信息的命令之外(例如,跳過306,流程從305進(jìn)入307),從而留下通過啟動寫入的填充id信息。307中的操作然后符合新固件以及與該新固件對應(yīng)的填充id信息。
在與圖2和/或圖3有關(guān)的各種實施方式中,存儲最新固件更新和/或一個或多個先前固件更新的結(jié)果(例如,通過啟動/執(zhí)行更新固件產(chǎn)生的固件圖像和/或id信息)。存儲先前固件更新結(jié)果允許通過例如從先前固件圖像啟動來在固件更新范圍外“回滾”。存儲先前固件更新結(jié)果使設(shè)備能夠響應(yīng)于(供應(yīng)商特定)主機命令以提供先前id信息(例如,與先前固件更新有關(guān))。存儲最新固件更新結(jié)果使設(shè)備能夠響應(yīng)于(供應(yīng)商特定)主機命令以提供另外進(jìn)行延遲可見性處理的id信息。
相對于圖2和圖3的設(shè)備和主機的示例分別為圖1b和圖1c的ssd101和主機102。相對于圖2和圖3的固件存儲的示例為圖1b和圖1c的固件存儲106。相對于圖2和圖3的id信息的所有或任意部分的存儲的示例為圖1b和圖1c的選擇id信息存儲107的所有或任意部分?!芭f”固件的示例包括工廠安裝的固件、oem安裝的固件、以及用戶安裝的固件(例如,來自先前下載)。
在各種實施方式中,例如利用一個或多個狀態(tài)機來實現(xiàn)圖2和圖3描述的操作和/或功能的所有或任意部分。狀態(tài)機的示例性實現(xiàn)包括硬件(例如,邏輯門和/或電路、專用狀態(tài)機電路或硬連線控制電路)、軟件(例如,固件或微碼)或硬件和軟件的組合。在某些實施方式中,狀態(tài)機中的一個或多個至少部分經(jīng)由進(jìn)行更新的固件來實現(xiàn)。在各種實施方式中,狀態(tài)機中的一個或多個部分經(jīng)由圖1a的ssd控制器100、部分經(jīng)由cpu內(nèi)核172執(zhí)行的固件和/或部分經(jīng)由存儲在圖1b和圖1c的固件存儲106中的固件來實現(xiàn)。
在各種實施方式中,圖2和圖3描述的操作和/或功能的所有或任意部分例如通過圖1a的身份管理182或根據(jù)圖1a的身份管理182來實現(xiàn)。在某些實施方式中,電力移除和施加(比如相對于圖2的206p和圖3的307p)經(jīng)由設(shè)備的控制器的電路中包括的上電復(fù)位電路(例如,圖1a的ssd控制器100中包括的電路)來確定。
在各種實施方式中,相對于圖2和/或圖3中描述的id信息進(jìn)行的一個或多個操作(例如,保護、解除保護、提供、接收、讀取或?qū)懭?包括訪問固件存儲106的所有或任意部分。例如,在某些實施方式中,圖2的203和207包括寫入固件存儲106的至少一部分(比如設(shè)置并清除指示保護id信息免受修改的標(biāo)志)。再如,在某些實施方式中,圖3的302和306分別包括讀取并寫入固件存儲106的至少一部分。
在各種實施方式中,hba將主機的元件(例如,一個或多個處理器和一個或多個存儲器)耦接至設(shè)備,例如存儲設(shè)備比如sata驅(qū)動器。將hba耦接至處理器和/或存儲器至少部分經(jīng)由一個或多個設(shè)備通信接口、總線和/或信道(比如pcie接口)進(jìn)行。一些處理器執(zhí)行與設(shè)備通信的os和/或驅(qū)動軟件。在某些實施方式中,主機的元件與hba之間的傳輸與ahci兼容,并且t13兼容ata命令通過hba傳遞至設(shè)備的ssd的sata或pcie接口。在其他實施方式中,主機的元件與hba之間的傳輸與快速nvm兼容,并且具有至少一些屬性的類似于t13兼容ata命令的命令通過hba傳遞至設(shè)備的ssd的pcie接口。在某些實施方式中,hba包括在主機中,而在其他實施方式中,hba包括在設(shè)備中。在某些實施方式中,省略hba,并且設(shè)備耦接至(沒有明確的hba)一個或多個設(shè)備通信接口、總線和/或信道(比如pcie接口)。
例如,在圖1b的背景下,主機102包括允許在主機上運行的軟件(例如,os105和/或相關(guān)聯(lián)的驅(qū)動程序)與ssd101(具有主機接口111中包括的sata兼容主機接口)之間進(jìn)行通信的hba。通信包括將命令從軟件傳遞至ssd。傳送命令經(jīng)由ahci進(jìn)行,并將t13兼容ata命令提供給ssd的sata接口。因此,圖2的201d和203a以及圖3的301r、302d、303a和305w經(jīng)由ahci傳送進(jìn)行傳輸。
再如,在圖1c的背景下,主機102包括允許與中間控制器103通信的芯片組,并且中間接口104和外部接口110是pcie兼容的(例如,ssd101具有主機接口111中包括的pcie接口)。芯片組和中間控制器103允許在主機的os和/或驅(qū)動軟件與ssd101之間進(jìn)行通信,包括傳遞命令。傳送命令經(jīng)由快速nvm進(jìn)行,并將具有至少一些屬性的類似于t13兼容ata命令的命令提供給ssd的pcie接口。因此,圖2的201d和203a以及圖3的301r、302d、303a和305w經(jīng)由快速nvm傳送進(jìn)行傳輸。
描述了各種實施方式,比如與計算主機耦接的存儲設(shè)備的實施方式,其中存儲設(shè)備經(jīng)啟用以管理計算主機看到的固件更新效果。適用于存儲設(shè)備和計算主機的技術(shù)通常適用于與主機耦接的設(shè)備的各種實施方式,其中該設(shè)備經(jīng)啟用以管理主機看到的固件更新效果。以ssd作為示例性存儲設(shè)備描述了各種實施方式。適用于基于ssd的存儲設(shè)備的技術(shù)同樣適用于基于hdd的存儲設(shè)備,以及基于其他非易失性存儲技術(shù)的存儲設(shè)備的各種實施方式。
示例性實現(xiàn)技術(shù)
在某些實施方式中,由例如具有閃存的ssd控制器(比如,提供管理主機看到的設(shè)備固件更新效果的ssd)、計算主機閃存控制器和/或ssd控制器(比如圖1a的ssd控制器100)執(zhí)行的操作的所有或任意部分的各種組合,和處理器、微處理器、片上系統(tǒng)、專用集成電路、硬件加速器或提供上述操作中的所有或部分的其他電路的部分由與計算機系統(tǒng)進(jìn)行的處理兼容的規(guī)范來指定。該規(guī)范符合各種描述,例如,硬件描述語言、電路描述、網(wǎng)表描述、掩碼描述或布局描述。示例描述包括:verilog、vhdl、spice、spice變體比如pspice、ibis、lef、def、gds至ii、oasis或其描述。在各種實施方式中,處理包括解釋、編譯、模擬和合成的任何組合以生成、驗證或指定適于包括在一個或多個集成電路上的邏輯和/或電路。根據(jù)各種實施方式,每個集成電路可根據(jù)多種技術(shù)來設(shè)計和/或制造。該技術(shù)包括可編程技術(shù)(例如,場或掩碼可編程門陣列集成電路)、半定制技術(shù)(比如整體或部分基于單元的集成電路)和全定制技術(shù)(比如基本上專用的集成電路)及其任意組合,或與集成電路的設(shè)計和/或制造兼容的其他任何技術(shù)。
在某些實施方式中,通過執(zhí)行和/或解釋一個或多個程序指令,通過解釋和/或編譯一個或多個源和/或腳本語言語句,或通過執(zhí)行通過編譯、轉(zhuǎn)換和/或解釋以編程和/或腳本語言語句表達(dá)的信息生成的二進(jìn)制指令來進(jìn)行所有或部分如計算機可讀介質(zhì)所述的操作的各種組合,該計算機可讀介質(zhì)存儲有一組指令。語句與任何標(biāo)準(zhǔn)的編程或腳本語言(例如,c、c++、fortran、pascal、ada、java、vbscript和shell)兼容。一個或多個程序指令、語言語句或二進(jìn)制指令任選存儲在一個或多個計算機可讀存儲介質(zhì)元件上。在各種實施方式中,一些、所有或各個部分的程序指令實現(xiàn)為一種或多種功能、例程、子例程、線內(nèi)例程、過程、宏或其部分。
結(jié)論
在該說明書中作出的某些選擇僅僅是便于制備文本和附圖,除非有相反的指示,否則這些選擇本身不應(yīng)解釋為表達(dá)所述實施方式的結(jié)構(gòu)或操作相關(guān)的額外信息。選擇的示例包括:用于數(shù)字編號的設(shè)計的特定組織或分配以及用于識別和引用實施方式的特征和元件的元件標(biāo)識符(例如,插圖編號或數(shù)字標(biāo)志符)的特定組織或分配。
詞語“包括(includes)”或“包括(including)”具體意在被理解為對描述開放式范圍的邏輯組的抽象,且并不指傳達(dá)物理包含物,除非后面明確跟隨詞語“之內(nèi)”。
盡管為了描述和理解清晰的目的,已在一些細(xì)節(jié)中描述了上述實施方式,但本發(fā)明不限于所提供的細(xì)節(jié)。有許多本發(fā)明的實施方式。所公開的實施方式是示例性的,而不是限制性的。
應(yīng)理解,構(gòu)造、布置和使用的許多變化可能與說明書一致,且處于已公布的專利的權(quán)利要求的范圍內(nèi)。例如,互連和功能單位的位寬度、時鐘速率和所使用的技術(shù)的類型根據(jù)每個組件塊中的各種實施方式而可變。給于互連和邏輯的名稱僅是示例性的,且不應(yīng)被解釋為限制所描述的概念。流程圖和流程圖過程、動作和功能元件的順序和布置根據(jù)各種實施方式可變化。同樣地,除非特別說明與此相反,否則指定的值范圍、使用的最高值和最低值或其他特定的規(guī)范(比如閃存技術(shù)類型;以及寄存器和緩存器中的條目或級別的數(shù)量)僅是所描述那些實施方式,期望跟蹤實現(xiàn)技術(shù)的改進(jìn)和變化,且不應(yīng)被解釋為限制。
可采用本技術(shù)已知的功能等效的技術(shù),而不是用于實現(xiàn)各種組件、子系統(tǒng)、操作、功能、例程、子例程、在線例程、程序、宏或其部分的那些所述技術(shù)。還應(yīng)理解,實施方式中的許多功能方面可在硬件(即,一般專用電路)或軟件(例如,經(jīng)由編程的控制器或處理器的某些方式)中選擇性實現(xiàn),以作為取決于設(shè)計約束和更快處理的技術(shù)趨勢(促使先前在硬件中的功能遷移至軟件)和更高的集成密度(促使先前在軟件中的功能遷移至硬件)的實施方式的功能。各種實施方式中的具體變化包括但不限于:劃分的差異;不同的形狀因數(shù)和配置;使用不同的操作系統(tǒng)和其他系統(tǒng)軟件;使用不同接口標(biāo)準(zhǔn)、網(wǎng)絡(luò)協(xié)議或通信鏈路;以及當(dāng)根據(jù)特定應(yīng)用的獨特工程和商業(yè)限制實現(xiàn)在本文中描述的概念時預(yù)期的其他變化。
已通過超越需要用于所描述的實施方式的很多方面的最小實現(xiàn)的細(xì)節(jié)和環(huán)境背景描述了實施方式。本領(lǐng)域普通技術(shù)人員將認(rèn)識到,一些實施方式省略了公開的組件或特征,且無需改變剩余元件之間的基本合作。因此,應(yīng)理解大部分公開的細(xì)節(jié)不需要實現(xiàn)所描述的實施方式的各個方面。在剩余元件可與現(xiàn)有技術(shù)相區(qū)別的范圍內(nèi),被省略的組件和特征不限于本文中所描述的概念。
設(shè)計的所有這些變化是在由所描述的實施方式傳達(dá)的教學(xué)上的非實質(zhì)性變化。還應(yīng)理解,本文中描述的實施方式對其他的計算和網(wǎng)絡(luò)應(yīng)用具有廣泛的實用性,且并不僅限于所描述的實施方式的特定應(yīng)用或行業(yè)。因此,本發(fā)明將被解釋為包括涵蓋在所公布的專利的權(quán)利要求的范圍內(nèi)的所有可能的修改和變更。