棄,要么已作為有顯著降低的能力的固態存儲介質被銷售。在任一情況下,該每存儲容量成本相比于當前描述的機制所提供的每存儲容量成本將顯著更高,當前描述的機制可通過寫扼制來允許不僅利用固態存儲單元241,還利用固態存儲單元242、245和246。由此,示例性寫策略表250可指定正被寫入固態存儲單元241的數據可以以高速率被寫入,同時正被寫入固態存儲單元242、245和246中的任何一個或多個的數據可被扼制到較低速率。
[0050]在一個實施例中,諸如通過圖2的示例性系統200所示出的,寫策略表250可被寫扼制引擎139構建,如箭頭240所示出的。在這樣的實施例中,如所指示的可能已測試了包括示例性固態存儲單元241、242、243、244、245和246的固態存儲介質的固件141可將從這樣的測試中獲得的結果230提供給寫扼制引擎139,該寫扼制引擎139可隨后進而構建寫策略表250,如箭頭240所示出的。如先前所指示的,在這樣的實施例中,寫扼制引擎139可以是在包括示例性固態存儲單元241、242、243、244、245和246的基于固態的存儲設備可能已通信地耦合到的計算設備上執行的操作系統或其他類似的軟件的一部分。。
[0051]在這樣的實施例中,寫扼制引擎139或操作系統的其他方面可控制以上描述的對固態存儲介質的的初始化測試以及后續的對寫策略表250的構建或修改兩者。更具體地,在這樣的實施例中,固件141可展示寫扼制引擎139可訪問并且可指令固件141執行以上描述的對固態存儲介質的初始化測試的接口。這樣的測試的結果230可隨后通過那些相同的接口之一被返回給寫扼制引擎139,并且寫扼制引擎139可利用那些結果230來構建或修改寫策略表250,如箭頭240所示出的。
[0052]如先前所指示的,作為寫策略表250的這樣的構建或修改的一部分,閾值法可被執行以標識固態存儲介質的其性能或其他屬性低于閾值水平的部分(諸如示例性固態存儲單元244),以及哪些部分應由此不應被利用。雖然這樣的閾值法先前已被描述為由相當的基于磁的存儲介質的性能以及更具體地寫性能來通知,但這樣的閾值僅僅是目標描述的機制的一個實施例。在其他實施例中,寫扼制引擎139或操作系統的其他方面或在固態存儲介質通信地耦合到的計算設備上執行的其他過程可選擇更合適的閾值。例如,較高的性能閾值可被建立為使得例如在圖2中示出的示例性解說固態存儲單元中,僅固態存儲單元241可能超過這樣的較高的性能閾值并可被選擇以供后續利用。在這樣的示例中,寫策略表250可指定除固態存儲單元241以外,圖2中示出的的所有其他示例性固態存儲單元可能都沒有通過這樣的閾值法,并且不被利用。然而,在這樣的示例中,這樣的越高性能閾值可導致固態存儲介質中的越少部分可被利用,并且因此導致越高的每存儲容量成本。然而,通過允許在固態存儲介質通信地耦合到的計算設備上執行的過程選擇能力閾值,本文中描述的機制使得這樣的固態存儲介質的用戶能夠確定并強制使用其自己的成本/能力度量。
[0053]在其他實施例中,寫策略表(諸如,示例性寫策略表250)的生成或修改可能已由固件141直接執行,或者替換地,以上描述的測試和后續的寫策略表的生成或修改兩者都可能已由寫扼制引擎139或在基于固態的存儲設備通信地耦合到的計算設備上執行的其他類似軟件執行。
[0054]轉至圖3,本文中示出的系統300示出了諸如寫扼制引擎139對寫策略表250的示例性利用以通知利用包括固態存儲單元241、242、243、244、245和246的固態存儲介質的方式。以下為了提供這些描述的上下文,在圖3的系統300中示出了應用310。應用310旨在表示包括在固態存儲介質通信地耦合到的計算設備上執行的計算機可執行指令的一個或多個應用程序,其中這樣的應用程序試圖將數據存儲在固態存儲介質上。初始地,如本領域的技術人員將認識到的,應用310試圖存儲在存儲介質上的數據可被提供給操作系統,操作系統可與合適的驅動器、控制器和其他類似的組件通信以實現將數據存儲在存儲介質上。在一個實施例中,這樣的操作系統可包括寫扼制引擎139,寫扼制引擎139可從應用310接收數據311。根據由這樣的寫扼制引擎139實現的策略并根據包含在寫策略表250中的信息,寫扼制引擎139通過引用320寫策略表250可實現將數據存儲在存儲介質上。
[0055]例如,如果數據311將被存儲在固態存儲單元241上,則寫扼制引擎139可允許操作系統、驅動器、控制器和其他類似的組件以高速率將這樣的數據311寫到固態存儲單元241,如圖3的示例性系統300中的箭頭330所示出的。相反,如果數據311將被存儲在固態存儲單元242和245中的一個或多個中,則寫扼制引擎139可扼制操作系統、驅動器、控制器和其他類似的組件寫這樣的數據311的速率。例如,寫扼制引擎139可僅以每秒200兆字節的速率將該數據提供到操作系統、驅動器、控制器和其他類似的組件的相關部分。作為另一示例,寫扼制引擎139可在預定時間單元期間控制并限制數據被寫到固態存儲介質的特定部分的頻率。例如,寫扼制引擎139可能不允許不同的數據被寫到固態存儲單元達每24小時周期100次以上或每月2000次以上。通過這樣的方式,如果例如固態存儲單元具有為五萬次寫-刪除循環的推測的耐久性,則這樣的固態存儲單元可被利用達至少兩年。
[0056]扼制數據被寫到固態存儲單元的速率可基于包含在寫策略表250中的信息,如以上描述的。通過扼制數據被寫到固態存儲介質的一些部分(諸如例如固態存儲單元242和245)的速率,同時允許數據被寫到固態存儲介質的其他部分(諸如例如固態存儲單元241),寫扼制引擎139可提供對其固態存儲介質無法完全適應同質寫速度的固態存儲設備的利用。類似地,通過扼制數據被寫到固態存儲介質的一些部分的速度,寫扼制引擎139可提供對其固態存儲介質展現出非均值的耐久性相關數學的固態存儲設備的利用。更具體地,由于如以上所描述的寫扼制可包括限制新數據到特定單元的重復寫入,寫扼制引擎139可提供對可具有其預期耐久性顯著地小于其他單元的預期耐久性的單元的固態存儲介質的利用。通過這樣的方式,更廉價的固態存儲介質(諸如以上詳述的固態存儲介質)可被利用,由此允許存儲設備提供固態存儲介質許多益處,諸如快速讀速度、耐久性、低功耗和機械可靠性以及與基于磁的存儲介質相當的成本。
[0057]在一個實施例中,寫扼制引擎139還可應用關于利用固態存儲介質的哪個部分來存儲特定類型的數據的策略。例如,如果沒有應用策略,則數據311可被寫入寫策略表250中的固態存儲單元中的任何一個中。由于像固態存儲單元241之類的單元相比于諸如固態存儲單元242和245之類的單元可更快地接受數據,可能更大量的數據311可被定向到像固態存儲單元241之類的單元。類似地,如果沒有應用策略,則數據311可被同等地寫到具有高預期耐久性的固態存儲單元(諸如例如示例性固態存儲單元241)和具有低預期耐久性的固態存儲單元(諸如例如示例性固態存儲單元246)。
[0058]寫扼制引擎139可應用的一個策略可以是可試圖盡可能多的延長固態存儲介質的壽命策略。利用這樣的策略,相比于寫扼制引擎139可定向到固態存儲介質的具有較低預期耐久性的部分(諸如例如示例性固態存儲單元246)的數據而言,寫扼制引擎139可將更多的數據定向到固態存儲介質的具有較高預期耐久性的部分(諸如例如示例性固態存儲單元241、242和245)。利用這樣的策略,寫扼制引擎139可增加固態存儲介質的最大部分保持可如在其預期耐久性內可用的持續時間。實質上,寫扼制引擎139可執行某種形式的耗損平衡,只是不像傳統的耗損平衡,寫扼制引擎139可考慮不同的初始預期耐久性。
[0059]寫扼制引擎139可應用的另一策略可以是試圖更快地用盡固態存儲介質的具有低預期耐久性的那些部分的策略。利用這樣的策略,相比于寫扼制引擎139可定向到固態存儲介質的其他部分的數據而言,寫扼制引擎139可將更多的數據定向到固態存儲介質的具有較低預期耐久性的部分。結果,寫扼制引擎139可增加固態存儲介質的至少各部分可被利用的時間長度,但是隨著這樣的固態存儲介質的具有低于預期耐久性的部分被用盡,并隨后被標記為不再將在寫策略表(諸如示例性寫策略表250)中使用的部分時,這樣的部分可表示減少的容量。
[0060]在一個實施例中,寫扼制引擎139可引用元數據312,元數據312可任選地與數據311—起被提供,并可提供關于數據311的信息。基于這樣的元數據312,寫扼制引擎139可選擇固態存儲介質上用于存儲數據311的合適位置。例如,如果元數據312指示數據311僅僅是暫存數據或臨時數據,則寫扼制引擎139可選擇將這樣的數據存儲在固態存儲介質上可能接近耐久性限制并可由此更易于有故障的各部分。作為另一示例,如果元數據312指示數據311需要被盡可能快的寫,則寫扼制引擎139可選擇將這樣的數據存儲在固態存儲介質的可提供最高速的數據存儲的部分(諸如例如,示例性固態存儲單元241)上。作為又一示例,寫扼制引擎139可考慮各種策略(諸如以上詳述的那些策略)以及元數據312。例如,如果元數據312指示數據311將被頻繁地重寫或改變,則寫扼制引擎139基于策略(諸如以上詳述的那些策略)可選擇將這樣的數據311存儲在固態存儲介質的具有例如低預期耐久性的各部分中以用盡那些部分,或者替換地根據固態存儲介質的各部分的預期耐久性跨這些部