背景技術:
1.背景和相關技術
固態驅動器(ssd)制造商經常基于與非(nand)數據表中的最大電流規范設計電源電路。與非數據表可以包括用于與非的最大均方根(rms)電流。然而,與非數據表通常包括關于與非的功率特性的很少(若有的話)附加信息。
在運行期間,與非芯片的真實電流汲取頻繁展示接近3xrms電流的尖峰(甚至可能更高)。例如,跨ssd與非陣列中的若干管芯的電流尖峰可能同時出現。同時的電流尖峰可能破壞ssd的電源電路,使得ssd發生故障。僅基于與非數據表中的信息,電路設計者可能意識不到電流尖峰的潛在幅值。
標準測試技術可以用于獲得用于與非的一些附加功率特性信息。然而標準測試技術很少捕獲由于同時功率尖峰而引起的損壞功率情況,因為主機生成的工作負荷通常并不特別地一次影響多個(或所有)與非管芯。
技術實現要素:
本發明擴展到用于測試存儲設備電源電路的方法、系統以及計算機程序產品。存儲設備控制器包括控制器固件和控制器存儲裝置。測試程序嵌在存儲設備控制器中。在一個方面中,存儲設備控制器接收發起功率測試的命令。存儲設備控制器響應于接收命令執行測試程序。測試程序訪問測試矩陣。測試矩陣包括多個存儲設備組件命令模式(例如,與非命令模式)。
測試程序使用測試矩陣來測試由多個存儲設備組件共享(例如,由與非快閃存儲器設備的陣列共享)的共享電源電路的功率性能。從控制器向多個存儲設備組件發布多個命令模式中的每個命令模式。標識引起共享電源電路中的最大總電流汲取的命令模式。
在另一個方面中,存儲設備控制器接收發起所指定存儲設備組件命令模式(例如,所指定的與非命令模式)的命令。測試程序響應于接收命令,訪問所指定的存儲設備組件命令模式。測試程序通過從存儲設備控制器向一個或多個存儲設備組件發布所指定的存儲設備組件命令模式來測試一個或多個存儲設備組件的功率特性。所指定的存儲設備組件命令模式可以被發布多次。
本發明內容被提供為以簡化形式介紹下面在具體實施方式中進一步描述的概念的選擇。該發明內容不旨在標識所要求保護主題的關鍵特征或必要特征,也不旨在用于幫助確定所要求保護主題的范圍。
本發明的另外特征和優點將在下面的描述中闡述,并且部分將從描述變得明顯,或者可以通過實踐本發明來了解。本發明的特征和優點可以借助于在所附權利要求中特別指出的手段和組合來實現并獲得。本發明的這些和其他特征將從以下描述和所附權利要求變得更充分明顯,或者可以通過如下文中闡述的本發明的實踐來了解。
附圖說明
為了描述可以獲得本發明的上述和其他優點和特征的方式,將參照在附圖中圖示的本發明的具體實現來提出對上面簡略描述的本發明的更具體的描述。理解這些附圖僅描繪了本發明的一些實現且因此不被認為限制本發明范圍,將通過使用附圖來另外具體且詳細地描述并說明本發明,附圖中:
圖1圖示了促進測試存儲設備電源電路的示例計算機架構。
圖2圖示了用于測試存儲設備電源電路的示例方法的流程圖。
圖3圖示了用于測試存儲設備電源電路的示例方法的流程圖。
具體實施方式
本發明擴展到用于測試存儲設備電源電路的方法、系統以及計算機程序產品。在一個方面中,存儲設備控制器包括控制器固件和控制器存儲裝置。測試程序嵌在存儲設備控制器中。存儲設備控制器接收發起功率測試的命令。存儲設備控制器響應于接收命令而執行測試程序。測試程序訪問測試矩陣。測試矩陣包括多個存儲設備組件命令模式(例如,與非命令模式)。
測試程序使用測試矩陣來測試由多個存儲設備組件共享(例如,由與非快閃存儲器設備的陣列共享)的共享電源電路的功率性能。從控制器向多個存儲設備組件發布多個命令模式中的每個命令模式。標識引起共享電源電路中的最大總電流汲取的命令模式。
在另一個方面中,存儲設備控制器接收發起所指定存儲設備組件命令模式(例如,所指定的與非命令模式)的命令。測試程序響應于接收命令來訪問所指定的存儲設備組件命令模式。測試程序通過從存儲設備控制器向一個或多個存儲設備組件發布所指定的存儲設備組件命令模式來測試一個或多個存儲設備組件的功率特性。所指定的存儲設備組件命令模式可以被發布多次。
本發明的實現可以包括或使用專用或通用計算機,該計算機包括計算機硬件,諸如例如,一個或多個處理器和系統存儲器,如下面更詳細討論的。本發明范圍內的實現還包括用于承載或存儲計算機可執行指令和/或數據結構的物理和其他計算機可讀介質。這種計算機可讀介質可以是可以由通用或專用計算機系統訪問的任意可用介質。存儲計算機可執行指令的計算機可讀介質是計算機存儲介質(設備)。承載計算機可執行指令的計算機可讀介質是傳輸介質。由此,用示例的方式且不限制,本發明的實現可以包括至少兩個明顯不同種類的計算機可讀介質:計算機存儲介質(設備)和傳輸介質。
計算機存儲介質(設備)包括ram、rom、eeprom、cd-rom、固態驅動器(“ssd”)、快閃存儲器、相變存儲器(“pcm”)、其他類型的存儲器、其他光盤存儲器、磁盤存儲器或其他磁存儲設備或可以用于存儲計算機可執行指令或數據結構形式的期望程序代碼裝置且可以由通用或專用計算機訪問的任意其他介質。
“網絡”被定義為使得能夠在計算機系統和/或模塊和/或其他電子設備之間傳送電子數據的一個或多個數據鏈路。當通過網絡或另一通信連接(硬接線的、無線的或硬接線或無線的組合的)向計算機傳送或提供信息時,計算機將連接適當地視為傳輸介質。傳輸介質可以包括網絡和/或可以用于承載計算機可執行指令或數據結構形式的期望程序代碼裝置且可以由通用或專用計算機訪問的網絡和/或數據鏈路。上述的組合也應包括在計算機可讀介質的范圍內。
進一步地,在到達各種計算機系統組件時,計算機可執行指令或數據結構形式的程序代碼裝置可以從傳輸介質自動傳送到計算機存儲介質(設備)(或反之亦然)。例如,通過網絡或數據鏈路接收的計算機可執行指令或數據結構可以被緩沖在網絡接口模塊(例如,“nic”)內的ram中,然后最終被傳送到計算機系統ram和/或計算機系統處更不易失的計算機存儲介質(設備)。由此,應理解,計算機存儲介質(設備)可以被包括在也(或甚至主要)使用傳輸介質的計算機系統組件中。
計算機可執行指令例如包括當在處理器處執行時使得通用計算機、專用計算機或專用處理設備執行特定功能或特定功能組的指令和數據。計算機可執行指令例如可以是二進制、中間格式指令(諸如匯編語言甚至源代碼)。雖然已經用特定于結構特征和/或方法動作的語言描述了主題,但要理解,所附權利要求中定義的主題不是必須限于上面描述的所述特征或動作。相反,所述特征和動作被公開為實現權利要求的示例形式。
本領域技術人員將理解,本發明可以在具有許多類型的計算機系統配置(包括個人計算機、臺式計算機、膝上型計算機、消息處理器、手持設備、可穿戴設備、多處理器系統、基于微處理器或可編程消費電子產品、網絡pc、微計算機、大型計算機、移動電話、pda、平板電腦、尋呼機、手表、路由器、交換機等)的網絡計算環境中實踐。本發明還可以在分布式系統環境中實踐,在分布式系統環境中,借助網絡(由硬接線數據鏈路、無線數據鏈路或由硬接線和無線數據鏈路的組合)鏈接的本地和遠程計算機系統這兩者執行任務。在分布式系統環境中,程序模塊可以位于本地和遠程存儲器存儲設備兩者中。
本發明還可以實現在云計算環境中。在該描述和以下權利要求中,“云計算”被定義為用于使能對可配置計算資源的共享池的按需網絡訪問的模型。例如,可以在市場中采用云計算,以提供對可配置計算資源的共享池的普遍存在且方便的按需訪問。可配置計算資源的共享池可以經由虛擬化被快速供應,并被發布為具有低的管理努力或服務供應商交互,并然后被相應地縮放。
云計算模型可以包括各種特性,諸如例如,按需自助服務、廣泛的網絡訪問、資源池化、快速彈性、可計量服務等。云計算模型還可以顯露各種服務模型,諸如例如,軟件即服務(“saas”)、平臺即服務(“paas”)以及基礎設施即服務(“iaas”)。云計算模型還可以使用不同部署模型(諸如私有云、社區云、公共云、混合云等)來部署。在該描述且在權利要求中,“云計算環境”是采用云計算的環境。
在該說明書且在以下權利要求中,“快閃存儲器”被定義為可以電擦除且重編程的電子非易失性計算機存儲介質。
在該說明書和以下權利要求中,“或非(nor)快閃存儲器”被定義為個體快閃存儲器單元的內部特性呈現類似于或非門的特性的特性的快閃存儲器。
在該說明書和以下權利要求中,“與非(nand)快閃存儲器”被定義為獨立快閃存儲器單元的內部特性成像類似于與非門的特性的特性的快閃存儲器。
在該說明書中且在以下權利要求中,“固態驅動器”被定義為使用集成電路組件來永久存儲數據的數據存儲設備。固態驅動器(ssd)的集成電路組件可以包括用于存儲數據的“與非”或“或非”快閃存儲器設備。
在該說明書且在以下權利要求中,“通用串行總線”(usb)快閃存儲器被定義為使用具有集成usb接口的與非快閃存儲器設備的數據存儲設備。
圖1圖示了促進測試存儲設備電源電路的示例計算機架構100。參照圖1,計算機架構100包括固態驅動器(ssd)101和計算機系統112。ssd101和計算機系統112中的每一個可以通過網絡(或其一部分)(諸如例如,系統總線、局域網(“lan”)、廣域網(“wan”)以及甚至因特網)連接到彼此。因此,ssd101和計算機系統112中的每一個以及任意其他被連接的計算機系統及其組件可以通過網絡創建消息相關數據并交換消息相關數據(例如,系統總線消息、因特網協議(“ip”)數據電報以及使用ip數據電報的其他更高層協議(諸如傳輸控制協議(“tcp”)、超文本傳輸協議(“http”)、簡單郵件傳輸協議(“smtp”)等、其他非數據電報協議等))。
如所描繪的,固態驅動器(ssd)101還包括控制器102、與非陣列108以及共享電源電路113。控制器102包括固件103和存儲裝置106。與非陣列108包括多個與非快閃存儲器設備(包括與非設備108a、108b、108c等)。與非設備108a、108b、108c等可以用于在ssd101處永久地存儲數據。與非設備108a、108b、108c等均從共享電源電路113接收功率。
控制器102可以是處理器,該處理器執行固件級代碼以執行各種功能,諸如例如,糾錯、磨損均衡、壞塊映射、讀取擦洗、讀取和寫入緩存、垃圾收集等。
ssd101還包括輸入121、122、123以及124。
通常,其他設備可以通過輸入121向ssd101提交工作負荷。例如,計算機系統112可以通過輸入121向ssd101提交工作負荷119。工作負荷可以指示在與非陣列108內存儲、移動、復制、讀取、擦除、重寫等數據(例如,文件)。控制器102可以將工作負荷翻譯成對應的與非命令。例如,控制器102可以將工作負荷119翻譯成一個或多個與非命令。控制器102可以向與非陣列108發送與非命令,以實現在工作負荷119中表達的意圖。用于實現工作負荷的與非命令可以包括讀取、寫入以及擦除以及在控制器和與非陣列之間傳送數據的任意其他命令。
固件103包括測試程序104。測試程序104可以被執行為測試與非陣列108或內部所包括的一個或多個與非設備的功率特性。在一個方面中,測試程序104包括用于在執行期間生成測試矩陣的可執行代碼。在另一個方面中,測試程序104指代存儲裝置106中的測試矩陣,諸如例如,測試矩陣107。
測試矩陣可以包含可以向與非陣列108或內部包括的一個或多個與非設備發布的多個不同命令模式。每個不同命令模式可以包括要按指定順序和/或以指定時刻向與非陣列108或內部包括的一個或多個與非設備發布的與非命令(例如,寫入、讀取、擦除等)的不同組合。與非陣列108可以接收命令模式并跨一個或多個(并且有可能為全部)與非設備實現命令模式。
在一個方面中,在測試矩陣中的不同命令模式中,至少一個命令模式相對于測試矩陣中的其他命令模式引起與非陣列108和/或共享電源電路113中的更高電流汲取。引起更高電流汲取的命令模式可以在被標識并可能地單獨存儲在存儲裝置106中。在另一個方面中,在發布命令模式期間,命令模式可能引起使得與非陣列108和/或共享電源電路113發生故障或另外以不期望的方式運行的足夠高的電流汲取。引起故障或非期望運行的命令模式可以在被標識并可能地單獨存儲在存儲裝置106中(例如,存儲在日志109中)。
其他設備(諸如例如,計算機系統112)可以向輸入122提交瀏覽測試矩陣中的命令模式的請求。控制器102可以在輸入122處檢測請求,并且發起測試程序104,以瀏覽測試矩陣中的每個命令模式。其他設備(諸如例如,計算機系統112)可以向輸入123提交運行指定命令模式(或命令模式的指定子集)的請求。控制器102可以在輸入123處檢測請求,并且發起運行特定命令模式(或命令模式的特定子集)的測試程序10。在一個方面中,當在輸入123處檢測到請求時,控制器102發起測試程序104,以運行先前被標識為引起與非陣列108和/或共享電源電路113中更高的電流汲取的命令模式。在另一個方面中,當在輸入123處檢測到請求時,控制器102發起測試程序104,以運行先前被標識為引起與非陣列108和/或共享電源電路113處的故障或非期望操作的命令模式。
測試程序104可以用于合格性設置或生產設置中,以測試與非陣列108和/或共享電源電路113的功率特性。外部監測設備(諸如例如,儀表或鏡(scope))可以電連接到與非陣列108和/或共享電源電路113。當在與非陣列處實現不同命令模式時,外部監測設備可以監測與非陣列108和/或共享電源電路113的組件處的電特性。外部監測設備可以向輸入124提交反饋。控制器102可以在輸入124處從外部監測設備接收反饋。控制器102可以將反饋(或其部分)存儲在存儲裝置106中(諸如,例如,存儲在日志109中)。在一個方面中,命令模式連同在命令模式的實現期間監測的與非108的功率特性一起存儲。
圖2圖示了用于測試存儲設備電源電路的示例方法200的流程圖。將關于計算機架構100的組件和數據描述方法200。
方法200包括在控制器處接收發起功率測試的命令(201)。例如,計算機系統112可以向輸入122發送測試命令131。控制器102可以在輸入122處接收測試命令131。方法200包括響應于接收命令而執行嵌在控制器中的測試程序(202)。例如,控制器102可以響應于測試命令131執行測試程序104(該程序嵌在固件103中)。
方法200包括測試程序訪問測試矩陣,該測試矩陣包括多個快閃存儲器命令模式(203)。例如,在一個方面中,測試程序104從存儲裝置106訪問測試矩陣107。如所述的,測試矩陣107包括命令模式107a、107b、107c等。另選地,在另一個方面中,測試程序104執行可執行代碼的一部分,以生成測試矩陣107。
方法200包括測試程序使用測試矩陣來測試快閃存儲器設備的陣列的功率性能(204)。例如,測試程序104可以使用測試矩陣107來測試與非陣列108和/或共享電源電路113的功率性能。
測試快閃存儲器設備的陣列的功率性能包括對于在多個快閃存儲器命令模式中的每個快閃存儲器命令模式,從控制器向快閃存儲器設備的陣列發布快閃存儲器命令模式(205)。例如,測試程序104可以向與非陣列108發布命令模式107a、107b、107c等中的每一個。與非陣列108可以嘗試在接收命令模式107a、107b、107c等中的每一個時實現命令模式107a、107b、107c等。如所述的,命令模式可以包括與非命令(包括讀取、寫入、擦除以及在控制器和與非陣列之間傳送數據的任意其他命令)的時間序列。
監測設備141(諸如例如,儀表或鏡)可以電連接到共享電源電路113和/或個體與非設備108a、108b、108c等的電源電路。監測設備141可以在實現命令模式時監測共享電源電路113處和/或個體與非設備的電源電路處的功率特性。監測設備141可以向輸入124和/或另一個計算機系統(例如,計算機系統112)發送反饋142(例如,電源電路上的所測量電流汲取)。控制器102可以在輸入124處接收反饋142。測試程序124可以將命令模式和命令模式的對應反饋記錄在日志109中。
監測設備141可以被包括在計算機系統112中或與計算機設備112分離。
計算機系統112和/或另一個計算機系統還可以維持命令模式和對應的反饋142,以供隨后使用和分析。
測試快閃存儲器設備的陣列的功率性能包括標識引起快閃存儲器設備的陣列中的最大總電流汲取的快閃存儲器命令模式(206)。例如,基于各種不同命令模式的反饋142,測試程序104(或計算機系統112處或某一其他計算機系統處的模塊)可以將命令模式107c標識為引起與非陣列108和/或共享電源電路113中的最大總電流汲取的命令模式。
測試程序104可以將命令模式107c單獨地存儲在存儲裝置106中(和/或可以向計算機系統112或某一其他計算機系統發送命令模式107c的指示)。命令模式107c然后可以用于更嚴格地測試與非陣列108的功率性能。例如,可以在一時間段期間以指定時間間隔(例如,在微秒或毫秒的量級上)向與非陣列108(重復地)發布命令模式107c。
由此可見,測試程序104可以實質上搜索測試矩陣107,以標識引起與非陣列108和/或共享電源電路113中的更高電流汲取的命令模式。測試程序104還可以搜索測試矩陣107,以標識引起與非陣列108和/或共享電源電路113處故障或其他非期望操作的命令模式。例如,測試程序104可以系統地前進穿過最大數量的運行每種類型的操作(例如,讀取、寫入、擦除以及在控制器和與非陣列之間傳送數據的任意其他命令)的與非設備。
快閃存儲器設備的陣列(例如,與非陣列)在實現引起更高電流汲取的一個或多個命令模式中的任意一個時可以能夠如期望的運行。由此可見,測試程序104可以標識相對于其他命令模式引起快閃存儲器設備的陣列(例如,與非陣列)中的最高可能電流汲取的命令模式。另一方面,可以存在任意數目的命令模式,其在被實現時使得快閃存儲器設備的陣列(例如,與非陣列)和/或共享電源電路(例如,由于超過電組件的性能的電流汲取)發生故障或另外以非期望方式運行。測試程序104可以標識引起快閃存儲器設備的陣列和/或共享電源電路中的故障和/或其他非期望操作的任意命令模式。
在一個方面中,測試矩陣107被配置為實現如下情況,激活陣列(例如,與非陣列108)中的所有快閃存儲器設備,以便更完全地測試ssd101的電源電路設計。
圖3圖示了用于測試存儲設備電源電路的示例方法300的流程圖。將關于計算機架構100的組件和數據描述方法300。
方法300包括在控制器處接收發起功率測試的命令,功率測試先前從用于測試快閃存儲器設備的陣列的功率特性的多個功率測試中標識,功率測試定義快閃存儲器命令的模式(301)。例如,計算機系統112可以向輸入123發送特定模式命令132。控制器102可以在輸入123處接收特定模式命令132。特定模式命令132可以是發起先前從測試矩陣107標識的所指定命令模式的命令。
在一個方面中,特定模式命令132請求發布引起更高電流汲取的命令模式。例如,特定模式命令132可以是發起命令模式107c的命令。特定模式命令132具體可以標識命令模式107c。另選地,輸入123具體可以被配置用于當在輸入123處檢測到請求時觸發所標識更高電流汲取命令模式的發起。
在其他方面中,輸入123可以用于標識在測試矩陣107中包含的任意命令模式(不管測試矩陣107是單獨存儲還是由測試程序104在運行時生成)。
方法300包括響應于接收命令執行嵌在控制器中的測試程序(302)。例如,控制器102可以響應于接收特定模式命令132而執行測試程序104(該程序嵌在固件103中)。方法300包括測試程序訪問功率測試(303)。例如,測試程序104可以訪問命令模式107c(或某一其他指定的命令模式)。測試程序104可以從存儲器106訪問命令模式107c(或某一其他指定的命令模式)。另選地,測試程序104可以在運行時生成命令模式107c(或某一其他指定的命令模式)。
方法300包括測試程序通過從控制器向一個或多個快閃存儲器設備發布命令的模式來測試在快閃存儲器設備的陣列中包括的一個或多個快閃存儲器設備的功率特性(304)。例如,控制器102可以向與非陣列108或內部包括的一個或多個與非設備發布命令模式107c,以測試以下內容中的一個或多個:與非陣列108的功率特性、與非陣列中包括的一個或多個與非設備的功率特性以及共享電源電路113的功率特性。與非陣列108或內部包括的一個或多個與非設備可以實現命令序列107c。如所述的,命令模式可以包括與非命令(包括讀取、寫入、擦除以及在控制器和與非陣列之間傳送數據的任意其他命令)的時間序列。
在一個方面中,控制器102以指定的時間間隔(例如,在微秒或毫秒的量級上)向與非陣列108重復發布命令模式107c。當在與非陣列108處重復實現命令模式107c時,監測設備141可以監測與非陣列108和/或共享電源電路113隨著時間的功率特性。監測設備141可以向控制器102提供反饋。
本發明的方面還可以應用于測試通用串行總線(usb)閃盤驅動器中包括的與非陣列。測試程序可以嵌在usb控制器中。測試程序可以(可能從測試矩陣)向usb閃盤驅動器中的與非設備發布命令模式。可以記錄引起更高電流汲取、引起故障或引起其他非期望操作的命令模式。
本發明的方面還可以用于測試其他類型的存儲設備(諸如例如,磁驅動器、光驅動器、基于或非(nor)的快閃存儲器等)的電源組件。在一個方面中,測試程序被嵌在磁硬盤驅動器的控制器中的固件中。測試程序可以發布不同的命令模式,以使用在磁硬盤驅動器的多個組件之中共享的共享電源電路。測試程序還可以使用不同命令模式來跨一個或多個磁盤片使用讀/寫頭。可以記錄引起更高電流汲取、故障或其他非期望操作的命令模式。
本發明的方面可以被調整為解釋存儲設備處的限制。測試開發人員在設計測試程序和/或測試矩陣時可以考慮對飛行中(in-flight)操作的數量的限制。例如,可以是控制器的緩沖器空間可以容納指定數量的飛行中讀取。由此可見,測試程序可以被設計為限制關于一種類型的操作(例如,讀取操作)有效的指定數量的與非設備,但具有關于其他類型的操作有效的其他與非設備。測試程序還可以被設計為考慮數據傳送和快閃存儲器操作是否使用同一功率軌。
本發明可以在不偏離其精神或必要特性的情況下以其他指定形式來實現。所述實施方式要在所有方面僅被認為是說明性的而不是限制性的。因此,本發明的范圍由所附權利要求而不是由前述描述來指示。進入權利要求等同物的意義和范圍內的所有變化要包含在它們的范圍內。