專利名稱:用于連接到主機的存儲設備的優化的提示模型和用于存儲設備的寫優化方案的制作方法
用于連接到主機的存儲設備的優化的提示模型和用于存儲設備的寫優化方案本發明專利申請是國際申請號為PCT/US2008/058482,國際申請日為2008年3月27日,進入中國國家階段的申請號為200880013143. 9,名稱為“用于連接到主機的存儲設備的優化的提示模型和用于存儲設備的寫優化方案”的發明專利申請的分案申請。
背景技術:
大容量存儲設備的容量和內部操作速度正呈指數地增長,從而使得這些存儲設備更加復雜。因此,制造商在這些設備上包括強大的嵌入式微處理器。此外,對于數據能夠并且需要在應用層中以其進行處理的較快的速度而言,對存儲設備的讀/寫訪問可能變成通信管道中的瓶頸,從而影響用戶體驗和總體機器操作。用于操作這些設備的傳統模型仍然還是在使用面向塊的設備協議來與存儲設備 通信的主機上運行的文件系統。有了有能力的處理器固件,存儲設備可取決于主機軟件在發起高級邏輯操作時所具有的確切意圖來優化內部操作。然而,可用于固件的唯一常規協議是塊協議,其造成了對于提供適應并優化數據和設備操作的能力的重大障礙。因此,固件設計者求助于諸如監聽來自主機的分組并嘗試猜測較高級OS軟件數據管理的意圖等技術。這一方法是脆弱且非最優的。此外,與固態驅動器(SSD)相關聯的快速進步和相關聯的成本下降正迫使設計者重新審視優化主機系統中的數據流的方式。
發明內容
以下提出了簡化概述以便提供對在此描述的某些新穎實施例的基本理解。本概述不是詳盡的概覽,并且它不旨在標識關鍵/重要的元素,也不旨在描繪其范圍。其唯一的目的是以簡化的形式來介紹一些概念,作為稍后提出的更為詳細的描述的序言。所公開的體系結構包括一種通信方法,該方法基于能夠基于生成“意圖”或“提示”并將其傳遞給存儲設備來優化數據通信的較高級操作系統(OS)層。然后可對預定存儲在存儲設備(能夠進行提示處理)上的數據進行分類(bracket)(或標記)以利用與該提示處理相關聯的提升的性能。數據能夠以例如塊格式傳遞以使得能夠發生一系列單獨的塊交換。提示處理在存儲設備處是可任選的。當確定設備中存在該能力時,傳遞給存儲設備固件的信息方便優化內部數據流和設備操作。該體系結構提供一種工作流模型,其中設備和OS進行通信(例如,基于存儲設備固件報告能力)以檢測提示處理能力。該提示模型包括可擴展并且可被分層在塊通信之上的語言。另外,基于該可擴展性,主機棧的自定義部分可以發起用于專有事務的到存儲設備(例如,固件)的提示通信。該體系結構還包括用于諸如固態存儲設備等存儲設備的寫優化方案。例如,在多種類型的數據存儲(例如,單層單元(SLC)閃存、多層單元(MLC)閃存)可用的情況下,頻繁修改的數據可被存儲在較快的存儲器中以提供至少相對于文件系統數據存儲而言的更高效的總體應用程序數據處理。類似地,在數據是只讀或較不頻繁修改的情況下,這種數據可被處理進出較低成本(或較慢)的存儲器。這一選擇性提供了更優的資源使用以及組件成本。在涉及固態驅動器大容量存儲技術的情況下,存儲器成本的差別在區域中銷售和市場份額中可以是顯著的優勢,這在消費者市場中肯定是非常有競爭力的。為實現上述及相關目的,本文結合下面的描述和附圖描述某些說明性方面。然而,這些方面僅指示了可利用此處公開的原理的各種方法中的少數幾種,且旨在包括所有這些方面及其等效方面。結合附圖閱讀下面的詳細描述,則其它優點和新穎特征將變得顯而易見。
圖I示出用于生成并傳遞用于優化數據存儲操作的提示信息的系統。圖2示出表示提示模型的可擴展性的系統。圖3示出進一步表示所公開的提示模型的可擴展性的系統。 圖4示出其中向具有擁有不同提示能力的存儲設備的存儲子系統發送提示信息的系統。圖5示出用于提示數據處理的主機系統的更詳細實現。圖6示出對可以使用的提示信息的更詳細描述。圖7示出使用SSD數據存儲子系統來優化數據存儲的系統。圖8示出用于優化數據存儲的存儲系統。圖9示出管理數據存儲的方法。圖10示出打包基于提示的數據以供傳輸的方法。圖11示出優化存儲設備中的數據利用的方法。圖12示出基于數據修改的頻率來管理固態設備上的數據存儲的方法。圖13示出可用于執行根據所公開的體系結構的提示和寫優化的計算系統的框圖。圖14示出用于提示和寫優化處理的示例性計算環境的示意性框圖。
具體實施例方式所公開的體系結構包括基于向存儲設備傳遞“意圖”或“提示”的較高級應用層(例如,操作系統(OS))的通信方法,該存儲設備能夠處理這些提示數據。提示數據隨后可用數字(例如,用提示標識符)來分類或標記以利用存儲設備和提示應用程序之間的提升性能的提示處理。現在參考附圖,附圖中相同的附圖標記用于指代在全文中相同的元素。在以下描述中,為解釋起見,描繪了眾多具體細節以提供對本發明的全面理解。然而,顯然,這些新穎實施例可以在沒有這些具體細節的情況下實現。在其它情況下,以框圖形式示出了公知的結構和設備以便于描述它們。最初參考附圖,圖I示出用于生成并傳遞用于優化數據存儲操作的提示信息的系統100。主機系統102運行用于包括應用層處的高級應用程序106在內的主機系統進程的操作系統(OS) 104。OS 104接口到用于存儲數據(例如,塊)的數據存儲子系統108(例如,機械驅動器、固態驅動器等)。OS 104和子系統108接口到提示組件110,該組件使用提示協議來方便0S104和子系統108之間的正式通信管道。如果子系統108是有提示能力的,則該功能可在例如系統啟動和/或子系統啟動后傳遞給OS 104。因此,可顯者改進OS104和子系統108之間的數據操作。提示協議可被認為是可由較高級的層(例如,OS、應用程序)用來向存儲子系統108(例如,子系統固件)傳遞“意圖”或提示的副業(sideline)正式通信方法。在一個實現中,提示協議對數據塊的各個塊交換組進行封裝(或分類)。例如,如果基于閃存的設備(例如,固態驅動器(SSD))接收一系列塊寫入,則實現目錄移除可以大大優化內部閃存頁移動,從而避免讀/寫循環(取決于特定控制器技術)。類似地,如果有提示能力的數字照相機向與存儲相關的有提示能力的固件指示該照相機能夠持續流傳輸各個位(其表示數字圖像或視頻剪輯),則該固件可以更高效地將即將到來的數據流定向到存儲扇區。另一示例包括從閃存設備流傳輸數據,其中除主機系統102被用數據緩沖來進行優化之外,存儲相關的有提示能力的固件可以利用控制器命令來更多地 優化數據傳輸和存儲。圖2示出表示提示模型的可擴展性的系統200。在此,提示組件110擴展到應用層中以使得有提示能力的應用程序202能夠經由提示協議向0S104發送提示數據塊。OS104隨后處理提示數據塊以轉發到子系統108以便優化應用程序202、0S 104和子系統108之間的數據操縱和處理。在多個有提示能力的應用程序202發送提示數據塊的情況下,OS104可以過濾出重復塊處理和/或區分轉發到子系統108的提示數據和信息的優先次序。提示模型是基于報告理解提示協議的能力的存儲子系統固件的。提示協議(或語言)被分層在塊通信之上,并且如所例示的是可擴展的。可擴展性還包括主機棧中的發起用于專有事務的到固件的提示通信的自定義部分。在一替換實現中,應用程序202 (和/或OS 104)和數據存儲子系統108的固件(此處未示出,但在圖4中示出)早先在能力協商階段(例如,在子系統108的安裝期間)進行交互,以解決應用程序202與應用程序202的提示能力的提示兼容性。因此,應用程序202能包括超過子系統108的“基本”提示能力的“擴展”提示能力是可能的。在這種情況下,用戶可以根據基本兼容性來運行系統102,或將該擴展能力安裝到存儲子系統固件中以使得應用程序和子系統108現在可以根據擴展提示協議來完全兼容地操作。應用程序202的擴展提示能力能以例如用戶安裝在系統102上的自定義模塊的形式來實現。兼容性協商過程可以利用將常見的硬件標識符匹配到應用程序或自定義模塊中的兼容存儲子系統標識符的庫的匹配算法。操作隨后基于該匹配過程的成功或失敗。對提示協議的利用是可任選的。然而,在各層和存儲子系統被認為能夠進行提示通信時,優化內部數據流和設備操作。圖3示出進一步表示所公開的提示模型的可擴展性的系統300。在此,客戶機/服務器環境包括具有對應的有提示能力的客戶機應用程序的客戶機302 (示為客戶機I……客戶機N)。第一客戶機304包括第一有提示能力的應用程序306,而第N客戶機308包括相應的有提示能力的應用程序310。客戶機302可以根據主機系統102(現在被稱為服務器系統102)所請求的服務來讀/寫。在服務器數據存儲子系統108向服務器OS 104報告有提示能力的功能的情況下,OS 104也可以向客戶機302報告服務器是有提示能力的。因此,客戶機應用程序(306和310)可以根據提示協議來執行到服務器102的數據塊通信。
如上所示,OS 104隨后可以過濾來自客戶機302或服務器應用程序202的提示通信和/或區分其優先次序,以用于到服務器子系統108的塊通信。在客戶機中的一個沒有提示能力的情況下,該客戶機的到子系統108的塊事務將按照常規塊通信技術。在另一實施例中,在初始化存儲設備時,設備固件報告解釋特定版本的提示語言的能力。例如,由于協議是可擴展的,所以可以使用不同的提示協議版本。因此,提示組件110可以適應可在存儲設備固件中使用的不同的協議版本,以及在可能的情況下方便對該固件的更新。在一替換實現中,應用程序202 (和/或OS 104)和數據存儲子系統108的固件(此處未示出,但在圖4中示出)早先在能力協商階段(例如,在子系統108的安裝期間)進行交互,以解決應用程序202與應用程序202的提示版本能力的提示版本兼容性。因此,應用程序202能包括超過較老協議版本中的子系統108的“基本”提示能力的較新協議版本中的“擴展”提示能力是可能的。
在這種情況下,用戶可以根據基本版本兼容性來運行系統102,或將擴展能力的更新版本安裝到存儲子系統固件中,以使得應用程序和子系統108現在可以根據同一版本的擴展提示協議來完全兼容地操作。兼容性協商過程可以利用在硬件和應用程序之間進行提示協議版本匹配的匹配算法。操作隨后基于得自協議版本的交集的能力。可以使提示操作是可任選的,因為雖然提示模型可用但不要求使用它。在一個實現中,在源應用程序(例如,OS或其它應用程序)發起提示協議以便進行塊處理時,主機OS將關閉數據序列。在一替換實施例中,該序列將由主機的源應用程序來關閉。提示協議語言可以表示具有用數字代碼標識的提示的開放語法。此外,存儲子系統固件不必回復提示信息,雖然該子系統可以在提示數據無效的情況下拒絕該數據。圖4示出其中向具有擁有不同的提示能力的存儲設備406的存儲子系統404發送提示信息402的系統400。為支持通常使用多個存儲設備的計算系統(例如,個人計算機、服務器),存儲子系統404可包括管理來自數據源410的數據的路由的存儲管理組件408,數據源410可以向適當的有提示能力的存儲設備提供提示信息402和/或向傳統存儲設備414提供非提示信息412。在設備406初始化時,設備406的提示能力經由設備固件中的提示算法來報告給主機OS。此后,可以適當地路由提示信息402 (例如,所標記的數據塊)。例如,提示數據塊的第一序列由管理組件408接收、處理并被路由到第一有提示能力的存儲設備416。一組非提示數據塊由管理組件408接收,并可被路由到設備406中的任意一個或多個,因為有提示能力的設備也可以存儲非提示數據塊。提示數據塊的第二序列隨后被從數據源410接收,其在由管理組件408接收時可被路由到第一有提示能力的設備416或第二有提示能力的設備418。管理組件408可被適當地設計成記住數據塊被路由到哪里以供存儲。另選地,除此之外,管理組件408可以將存儲信息向上傳遞給數據源410,以使提示數據塊用存儲位置信息來標記,該信息用于路由后續的相同或相似數據塊。或者,數據源410可以訪問管理組件408中的管理信息以確定向哪里發送提示數據塊。例如,如果第一有提示能力的設備416不能容納提示數據塊的第二序列以供鄰接存儲,則管理組件408可以使用用于優化塊處理和存儲的提示協議來將該第二序列路由到第二有提示能力的存儲設備418。提示信息可包括與用于更高效的處理和存儲的塊數據操作相關的硬件能力、存儲設備的類型、供使用的存儲設備上的存儲器的類型、軟件版本等。此外,該信息可以包括主機和存儲設備之間的通信的帶寬能力,其可被用來確定這些實體之間的數據處理。例如,較大總線(例如,位寬)可以指示可使用較大塊。同樣,如果數據通路較窄,則這還可以指示可為優化數據處理和存儲而調用的替換數據處理操作。使用軟提示信息還允許用對硬件和軟件的更改來修改和/或更新提示處理。一旦接收到,在存儲子系統上執行的提示算法就將提示信息從數據中剝離,并更高效地處理和存儲該數據。圖5示出用于提示數據處理的主機系統500的更詳細實現。主機系統500包括經由OS 104發送提示信息402的提示組件110、用于定義與提示處理相關的策略的策略組件502、以及用于執行與提示生成和處理相關的規則的規則組件504,這些組件是獨立的(例如,插件)或是OS的一部分。主機系統500還可包括諸如應用程序、模塊等數據生成器506和用于根據提示協議來格式化主機數據以供通信和存儲的數據格式化器508(例如,文件系統驅動程序、棧等)。 如果給定存儲設備能夠解釋提示,則文件系統驅動程序(或分層在文件系統之上的自定義過濾器驅動程序)開始用“開始提示”/ “結束提示”序列來對復雜操作進行分類。在一個示例性格式中,提示數據(例如,數據I、數據2……)可被分類為塊,例如數據I塊、其后是數據2塊等。還構想了所公開的體系結構可以處理流數據,其中該流數據能以提示頭部(例如,開始提示)開始并以提示尾部(例如,結束提示)結束。在又一示例中,數據塊用提示信息而非使用頭部/尾部消息來標記。在有提示能力的存儲設備(例如,SSD)處,設備固件包括用于接收、剝離提示頭部/尾部消息、存儲數據(例如,數據I、數據2……)的提示算法。在SSD驅動器中,可能包括多組固態存儲器,其各自以不同的速度操作以便更高效地利用。例如,在SSD子系統的多類型存儲器的上下文中,數據存儲可以按照較快存儲器中的較頻繁使用的數據和較慢存儲器中的較不頻繁使用的數據。盡管較少優化,但在使用了旋轉磁性存儲子系統(例如,硬盤驅動器)的情況下,沒有快或慢存儲器可用。然而,在一個相對于這種機械磁性存儲系統的示例性優化中,較頻繁使用的數據可以存儲在訪問較快的盤片區域(例如,外周區域)而非盤片內部。圖6示出對可以使用的提示信息402的更詳細描述。提示組件110提供用于向存儲子系統108給出來自提示數據源600 (例如,OS)的、關于該數據源600將如何使用子系統108所存儲的數據的信息的機制。基本上,可以認為在數據源600和子系統108之間建立了低級約定,其指示子系統108以優化數據源600的使用的方式來執行數據存儲。這通過主存提示算法604的子系統固件602 (作為提示組件110的一部分)來促進。在一個示例中,提示信息402可包括用于標識彼此相關聯的各組塊的原子訪問信息。這與其中數據塊被存儲在其它類似數據塊的附近(例如,鄰接)的常規碎片整理類似但不相同。常規碎片整理完全取決于以下假設通過從存儲介質中一起讀取所有塊并隨后使用LBA(邏輯塊編址)來將這些塊順序地寫回,將這些塊彼此靠近地放置以供較快的訪問。然而,在許多設備上情況不是這樣的。提示協議中的原子訪問信息向子系統108提供一定范圍的塊,以便向該子系統108指示在訪問該范圍信息中的任一個塊時,也將訪問其它相關聯的塊。另外的情況可以是請求子系統108確保對該范圍中的所有塊的訪問能夠以最少量的努力來訪問。換言之,所公開的提示模型向存儲子系統108給出足夠信息以做出智能決定。如果子系統108不能使用該信息,則這只是機會損失,而不存在數據丟失或數據破壞。設備繼續正確地工作。可能存在當子系統108接收到該信息時,由于其當前狀態而仍然不能操作它的情況。目標是提供0S(或提示數據源600)可以告訴存儲設備該OS如何工作的方式。這還提供了提示組件、協議、和算法中的可擴展性,該可擴展性用于適應不斷變化的情況而不必進行修訂、不必改變核心假設、或可能不需要做出關于是否應針對各種常規操作系統來優化存儲的決定。提示信息402還可處理數據的移除和刪除。常規上,如果文件系統刪除了數據,則該數據仍然能夠存在,而指向該數據的指針已被擦除。在數據被保留在存儲介質上的情況下,存儲設備實際上可基于不知道該數據是無用的來維護該數據。該原子訪問方便告訴設備已刪除但仍然保留的數據不再重要。因此,該設備可以決定對該信息做點事情。。基本上,這是指示這些塊將在被再次讀取之前被寫入的約定。
提示信息402可包括頻率信息。一旦指定各組塊將以特定方式訪問,訪問頻率就還可在提示信息402中傳遞。可以用信號通知存儲子系統108 (或設備)主機將基于預定準則來頻繁或不頻繁地訪問塊。例如,如果在每次系統引導時都知道塊將在特定時間量內被訪問,則可以推斷塊在每次會話將被訪問至少一次。這可以與可以是在幾個月內未打開的臨時文件或文字處理文檔的、將被不頻繁地訪問的另一組塊形成對比。另一示例是經常經歷讀/寫處理并且因而被非常頻繁地訪問的頁文件。提示信息402可包括等待時間信息。因為數據塊可被非常頻繁地讀取和寫入不意味著該數據是緊急的。可能存在被極少讀取和寫入但非常緊急的數據因此,緊急性不能與頻率相關聯。例如,位于盤上且系統將要執行的可執行程序將被延遲。此外,因為在該可執行程序之前可能存在系統進程,所以即使一個月只使用一次,當該系統進程使用該可執行程序時,該進程也立即想要它。這與諸如日志等可能頻繁但不緊急的后臺進程形成對比。提示信息402可包括分配和解除分配信息,其允許高速緩存對于存儲子系統的信息并隨后在不再需要時清空高速緩存。可以知道,數據源準備進行大量即將發生的塊寫入并且知道扇區。文件系統可以向存儲子系統提供關于即將發生的寫入和扇區的信息以使的該子系統能夠有所準備。因此,基于提前預測的即將發生的大規模寫入,可以命令子系統分配用于處理大量數據的空間和扇區。圖7示出使用SSD數據存儲子系統702來優化數據存儲的系統700。系統700包括文件系統704,該系統用于準備數據和使用存儲驅動程序棧706來向數據子系統702傳遞供存儲的數據。在SSD子系統702包括至少兩種類型的存儲器(例如,閃存),即較快存儲器和較慢存儲器的情況下,可利用該硬件特性來優化數據存儲和處理。在計算機的日常使用期間頻繁修改的系統數據的量對于給定OS而言幾乎是常量。在一個示例中,對客戶機而言,該數據量可接近8GB。因此,文件系統704可被配置成標識頻繁修改的數據并將該頻繁修改的數據存儲在較優化的存儲器區域中以便較快訪問。例如,在多種類型的數據存儲(例如,單層單元(SLC)閃存、多層單元(MLC)閃存)可用的情況下,頻繁修改的數據可被存儲在較快存儲器中以提供至少相對于文件系統數據存儲而言的更高效的總體應用程序數據處理。類似地,在數據是只讀或較不頻繁修改的情況下,這種數據可被處理進出較低成本(或較慢)的存儲器。這一選擇性提供了更優的資源使用以及組件成本。在涉及SSD大容量存儲技術的情況下,存儲器成本的差別在消費者市場的銷售和市場份額中可以是顯著的優勢。另外,頻繁修改的數據展示諸如局部性等特征。換言之,諸如$log、$MFT和$Bitmap等文件是往往被較頻繁地使用并且因此更適于較快存儲器存儲的數據的一些示例。例如,在SSD存儲子系統702的上下文中,為針對寫操作來優化SSD,從安裝OS開始,本地化數據文件就應被置于優化(或較快)的存儲器區域。文件系統704隨后可以按需從存儲器位置中取得數據并操縱該數據。文件系統702還使用來自SSD設備的、關于優化的存儲器地址和存儲大小的知識,并能夠在整個操作時間期間使用同一策略來將數據存儲在正確的位置中。使用固定文件名來標記頻繁修改的數據提供了用于標識該數據的簡單手段,并且需要較少開銷。然而,文件系統可能并非將知道所有數據文件,尤其是用戶應用程序數據。 因此,文件系統702可以使用監控對數據的寫入頻率的自適應算法708來有效地實現該方案。在優化的存儲器已滿的情況下,數據可溢出到常規存儲器空間。因為通過設計,溢出的數據量將很小,所以溢出將不影響SSD對OS的總體性能。圖8示出用于優化數據存儲的存儲系統800。例如,系統800可包括例如,利用閃存的SSD。系統800可包括存儲固件802,其存儲用于管理存儲系統800上的數據的一個或多個軟件算法(例如可任選地,提示算法604)。在一個雙存儲器實現中,系統800包括供如上所述地使用的較快SLC閃存804和較慢MLC閃存806。固件802向OS文件系統報告SLC存儲器804和MLC存儲器806的地址,以將較頻繁修改的數據存儲在SLC存儲器804中并將較不頻繁修改的數據存儲在MLC存儲器806中。在主機存儲系統中存在多個(即,第一和第二)系統800的情況下,用于較頻繁修改的數據的數據存儲可以在跨多個驅動器的SLC存儲器804中,只要存儲器804中有足夠空間可用。此外,第一系統的SLC存儲器的溢出數據可被存儲在第二系統的SLC存儲器中。以下是表示用于執行所公開的體系結構的各新穎方面的示例性方法的一系列流程圖。盡管出于解釋簡明的目的,此處例如以流圖或流程圖形式示出的一個或多個方法被示出并描述為一系列動作,但是可以理解和明白,這些方法不受動作的次序的限制,因為根據本發明,某些動作可以按與此處所示并描述的不同的次序和/或與其它動作同時發生。例如,本領域技術人員將會明白并理解,方法可被替換地表示為一系列相互關聯的狀態或事件,諸如以狀態圖的形式。此外,并非一方法中所示的所有動作都是對于新穎實現所必需的。圖9示出管理數據存儲的方法。在900處,從數據存儲設備接收提示模式數據。提示模式數據向應用程序(例如,OS)指示設備可以根據提示協議來操作以優化通信和數據處理。在902處,應用程序根據提示協議來打包數據以傳遞給設備。在904處,將打包的數據從應用程序發送到設備。在906處,設備包括根據提示信息來解包數據并存儲該數據的提不算法。圖10示出打包基于提示的數據以便傳輸的方法。在1000處,開始存儲設備的初始化。在1002處,存儲設備向主機OS報告該設備包括提示能力。在1004處,主機文件系統包括用提示信息來對數據進行分類的驅動程序。在1006處,存儲設備處理經分類的提示數據以便存儲。在1008處,主機在數據流停止時終止對數據的提示分類操作。換言之,在初始化存儲設備時,設備固件報告解釋特定版本的提示語言的設備能力。如果給定存儲設備能夠解釋提示,則文件系統驅動程序(或分層在文件系統之上的自定義過濾器驅動程序),即主機文件系統開始用例如提示頭部/尾部信息(例如,“開始提示”/ “結束提示”)序列來對復雜數據操作進行分類。用于標識提示數據的其它技術包括例如用提示標簽來標記該數據。可以理解,雖然存儲設備可包括提示能力,但該存儲設備可任選地使用提示操作。在經分類的序列開始時,其可由主機終止。提示語言表示具有可用數字代碼標識的提示的開放語法。設備固件不需要回復來自主機的提示操作,但如果發起,則存儲設備可以在提示無效的情況下拒絕該提示。圖11示出優化存儲設備中的數據利用的方法。在1100處,向主機傳遞存儲設備能力。在1102處,將數據存儲在存儲設備上。在1104處,標識較頻繁修改的數據。在1106處,標識較不頻繁修改的數據。在1108處,主機通過文件系統驅動程序處理提示數據以將 較頻繁使用的數據定向到存儲設備存儲器的較快部分。在1110處,主機通過文件系統驅動程序處理提示數據以將較不頻繁使用的數據定向到設備存儲器的較慢部分。在1112處,將較快存儲器和/或較慢存儲器的溢出定向到常規存儲器空間。提示信息可以與即將來自主機的數據是否是壓縮的、文本、視頻、音頻、流傳輸等有關。因此,該數據不必基于塊,但基于展示諸如文件、文件大小等數據的元數據。另外,提示可包括關于數據是應被動態處理還是應被臨時高速緩存在主機中以便對存儲子系統的進行大批量數據處理(即,批存儲)的信息。此外,具有多個驅動器是常見的,其中從多個驅動器接收到的提示信息可由主機來一起處理以決定如何格式化數據以便對存儲設備的全部或部分進行存儲處理。在這樣的SSD存儲系統的大型實現中,基于提示信息和多驅動器系統的可用的較快/較慢存儲器來使某些驅動器斷電(或休眠、待機)也成為可能。SSD存儲子系統適用于ATA (高級技術附件,例如串行、并行等),即用于連接存儲設備的標準接口、和IDE (集成驅動器電子產品)技術、以及PCI (外圍組件接口)、PCIe (PCIexpress)、SCSI (小型計算機系統接口)、以及其它類似存儲設備接口技術。圖12示出基于數據修改的頻率來管理固態設備上的數據存儲的方法。在1200處,設備接收數據并將其存儲在該設備的慢存儲器的一部分中。在1202處,設備固件監控慢存儲器中的數據的數據活動。在1204處,設備固件基于數據的數據修改頻率來將該數據從慢存儲器移動到該設備的快存儲器。在1206處,設備固件監控數據并基于該數據的數據修改頻率來在慢和快存儲器之間移動數據。如在本申請中所使用的,術語“組件”和“系統”旨在表示計算機相關的實體,其可以是硬件、硬件和軟件的組合、軟件、或者執行中的軟件。例如,組件可以是但不限于,在處理器上運行的進程、處理器、硬盤驅動器、多個(光和/或磁存儲介質的)存儲驅動器、對象、可執行代碼、執行的線程、程序、和/或計算機。作為說明,運行在服務器上的應用程序和服務器都可以是組件。一個或多個組件可以駐留在進程和/或執行的線程內,且組件可以位于一臺計算機內上/或分布在兩臺或更多的計算機之間。現在參考圖13,示出了可用于執行根據所公開的體系結構的提示和寫優化的計算系統1300的框圖。為了提供用于其各方面的附加上下文,圖13及以下討論旨在提供對其中可實現該各方面的合適的計算系統1300的簡要概括描述。盡管以上描述是在可在一個或多個計算機上運行的計算機可執行指令的一般上下文中進行的,但是本領域的技術人員將認識到,新穎實施例也可結合其它程序模塊和/或作為硬件和軟件的組合來實現。一般而言,程序模塊包括執行特定任務或實現特定抽象數據類型的例程、程序、組件、數據結構等等。此外,本領域的技術人員可以理解,本發明的方法可用其它計算機系統配置來實施,包括單處理器或多處理器計算機系統、小型計算機、大型計算機、以及個人計算機、手持式計算設備、基于微處理器的或可編程消費電子產品等,其每一個都可操作上耦合到一個或多個相關聯的設備。所示各方面也可以在其中某些任務由通過通信網絡鏈接的遠程處理設備來執行的分布式計算環境中實施。在分布式計算環境中,程序模塊可以位于本地和遠程存儲器存儲設備中。
計算機通常包括各種計算機可讀介質。計算機可讀介質可以是可由計算機訪問的任何可用介質,且包括易失性和非易失性介質、可移動和不可移動介質。作為示例而非限制,計算機可讀介質可以包括計算機存儲介質和通信介質。計算機存儲介質包括以存儲如計算機可讀指令、數據結構、程序模塊或其它數據等信息的任何方法或技術實現的易失性和非易失性、可移動和不可移動介質。計算機存儲介質包括但不限于RAM、ROM、EEPR0M、閃存或者其它存儲器技術、CD-ROM、數字視頻盤(DVD)或其它光盤存儲、磁帶盒、磁帶、磁盤存儲或其它磁存儲設備、或可以用于存儲所需信息并且可以由計算機訪問的任何其它介質。再次參考圖13,用于實現各方面的示例性計算系統1300包括具有處理單元1304、系統存儲器1306和系統總線1308的計算機1302。系統總線1308向包括但不限于系統存儲器1306的各系統組件提供到處理單元1304的接口。處理單元1304可以是市場上可購買到的各種處理器中的任意一種。雙微處理器和其它多處理器體系結構也可用作處理單元1304。系統總線1308可以是若干種總線結構中的任一種,這些總線結構還可互連到存儲器總線(帶有或沒有存儲器控制器)、外圍總線、以及使用各類市場上可購買到的總線體系結構中的任一種的局部總線。系統存儲器1306可包括非易失性存儲器(NON-VOL) 1310和/或易失性存儲器1312(例如隨機存取存儲器(RAM))。基本輸入/輸出系統(BIOS)可被儲存在非易失性存儲器1310(例如ROM、EPROM、EEPROM等)中,其中BIOS包含幫助諸如在啟動期間在計算機1302內的元件之間傳輸信息的基本例程。易失性存儲器1312還可包括諸如靜態RAM等高速RAM來用于高速緩存數據。計算機1302還包括內置硬盤驅動器(HDD) 1314(例如,EIDE、SATA),該內置HDD1314還可被配置成在合適的機殼中外部使用;磁軟盤驅動器(FDD) 1316(例如,從可移動磁盤1318中讀取或向其寫入);以及光盤驅動器1320(例如,從⑶-ROM盤1322中讀取,或從諸如DVD等其它高容量光學介質中讀取或向其寫入)。HDD 1314可用從所公開的提示和優化體系結構中受益的閃存的固態驅動器來替換。作為SSD,驅動器1314包括固件(未示出),該固件可進一步包括提示算法604。HDD 1314,FDD 1316、以及光盤驅動器 1320 可分別由 HDD 接口 1324、FDD 接口 1326和光盤驅動器接口 1328來連接到系統總線1308。用于外置驅動器實現的HDD接口 1324可包括通用串行總線(USB)和IEEE 1394接口技術中的至少一種或兩者。驅動器及相關聯的計算機可讀介質提供了對數據、數據結構、計算機可執行指令等的非易失性存儲。對于計算機1302,驅動器和介質容納適當的數字格式的任何數據的存儲。盡管以上對計算機可讀介質的描述涉及HDD、可移動磁盤(例如FDD)以及諸如CD或DVD等可移動光學介質,但是本領域的技術人員應當理解,示例性操作環境中也可使用可由計算機讀取的任何其它類型的介質,諸如zip驅動器、磁帶盒、閃存卡、盒式磁帶等等,并且任何這樣的介質可包含用于執行所公開的體系結構的新穎方法的計算機可執行指令。多個程序模塊可存儲在驅動器和RAM 1312中,包括操作系統1330、一個或多個應用程序1332、其它程序模塊1334和程序數據1336。操作系統1330可采用提示組件110來與合適的存儲設備(例如,驅動器1334)進行提示協議通信。應用程序1332還可包括用于接口到提示組件110并提供數據打包以便于到存儲設備的提示通信的模塊。操作系統、應用程序、模塊和/或數據的全部或部分也可被高速緩存在易失性存 儲器1312中。應該明白,所公開的體系結構可以用市場上可購得的各種操作系統或操作系統的組合來實施。用戶可以通過一個或多個有線/無線輸入設備,例如鍵盤1338和諸如鼠標1340等定點設備將命令和信息輸入到計算機1302中。其它輸入設備(未示出)可包括話筒、IR遙控器、操縱桿、游戲墊、指示筆、觸摸屏等等。這些和其它輸入設備通常通過耦合到系統總線1308的輸入設備接口 1342連接到處理單元1304,但也可通過其它接口連接,如并行端口、IEEE1394串行端口、游戲端口、USB端口、IR接口等等。監視器1344或其它類型的顯示設備也經由接口,諸如視頻適配器1346連接至系統總線1308。除了監視器1344之外,計算機通常包括諸如揚聲器、打印機等其它外圍輸出設備(未不出)。計算機1302可使用經由有線和/或無線通信至一個或多個遠程計算機,諸如遠程計算機1348的邏輯連接在網絡化環境中操作。遠程計算機1348可以是工作站、服務器計算機、路由器、個人計算機、便攜式計算機、基于微處理器的娛樂設備、對等設備或其它常見的網絡節點,并且通常包括相對于計算機1302描述的許多或所有元件,盡管為簡明起見僅示出了存儲器/存儲設備1350。所描繪的邏輯連接包括到局域網(LAN) 1352和/或例如廣域網(WAN) 1354等更大的網絡的有線/無線連接。這一 LAN和WAN連網環境常見于辦公室和公司,并且方便了諸如內聯網等企業范圍計算機網絡,所有這些都可連接到例如因特網等全球通信網絡。當在LAN連網環境中使用時,計算機1302通過有線和/或無線通信網絡接口或適配器1356連接到LAN 1352。適配器1356可以方便到LAN 1352的有線和/或無線通信,并且還可包括其上設置的用于使用適配器1356的無線功能進行通信的無線接入點。當在WAN連網環境中使用時,計算機1302可包括調制解調器1358,或連接到WAN1354上的通信服務器,或具有用于通過WAN 1354,諸如通過因特網建立通信的其它裝置。或為內置或為外置以及有線和/或無線設備的調制解調器1358經由串行端口接口 1342連接到系統總線1308。在網絡化環境中,相對于計算機1302所描述的程序模塊或其部分可以存儲在遠程存儲器/存儲設備1350中。應該理解,所示網絡連接是示例性的,并且可以使用在計算機之間建立通信鏈路的其它手段。
計算機1302可用于與操作上設置在無線通信中的任何無線設備或實體通信,這些設備或實體例如有打印機、掃描儀、臺式和/或便攜式計算機、便攜式數據助理、通信衛星、與無線可檢測標簽相關聯的任何一個設備或位置(例如,公用電話亭、報亭、休息室)以及電話機。這至少包括Wi-Fi和藍牙TM無線技術。由此,通信可以如對于常規網絡那樣是預定義結構,或者僅僅是至少兩個設備之間的自組織(ad hoc)通信。現在參考圖14,示出了用于提示和寫優化處理的示例性計算環境1400的示意性框圖。系統1400包括一個或多個客戶機1402。客戶機1402可以是硬件和/或軟件(例如,線程、進程、計算設備)。例如,客戶機1402可容納cookie和/或相關聯的上下文信息。系統1400還包括一個或多個服務器1404。服務器1404也可以是硬件和/或軟件(例如,線程、進程、計算設備)。服務器1404可以例如通過使用本體系結構來容納線程以執行變換。在客戶機1402和服務器1404之間的一種可能的通信能夠以適合在兩個或多個計算機進程之間傳輸的數據分組的形式進行。數據分組可包括例如cookie和/或相關聯 的上下文信息。系統1400包括可以用來使客戶機1402和服務器1404之間通信更容易的通信框架1406(例如,諸如因特網等全球通信網絡)。通信可經由有線(包括光纖)和/或無線技術來促進。客戶機1402操作上被連接到可以用來存儲對客戶機1402本地的信息(例如,cookie和/或相關聯的上下文信息)的一個或多個客戶機數據存儲1408。同樣地,服務器1404可在操作上連接到可以用來存儲對服務器1404本地的信息的一個或多個服務器數據存儲1410。客戶機1402可包括與服務器1404的有提示能力的數據存儲1410進行通信的有提示能力的應用程序。在該特定實現中,例如服務器操作系統可以過濾(例如,復制)對例如服務器數據存儲1410的提示協議寫入并區分其優先次序。以上所描述的包括所公開的體系結構的各示例。當然,描述每一個可以想到的組件和/或方法的組合是不可能的,但本領域內的普通技術人員應該認識到,許多其它組合和排列都是可能的。因此,本新穎體系結構旨在涵蓋所有這些落入所附權利要求書的精神和范圍內的更改、修改和變化。此外,就在說明書或權利要求書中使用術語“包括”而言,這一術語旨在以與術語“包含”在被用作權利要求書中的過渡此時所解釋的相似的方式為包含性的。
權利要求
1.一種計算機實現的存儲器管理系統,包括 主機系統的用于存儲數據的數據存儲子系統,所述子系統向所述主機系統的操作系統報告用于處理所述數據的子系統操作模式;以及 提示組件,其使用用于從所述主機系統的操作系統或應用程序向所述子系統傳遞提示的提示協議,以基于所述操作模式來從所述子系統接收數據。
2.如權利要求I所述的系統,其特征在于,所述提示協議適用于所述主機系統中的至少一個中或到網絡連接的塊存儲設備的數據塊通信,并標記一系列塊交換以便傳遞。
3.如權利要求I所述的系統,其特征在于,所述數據存儲子系統包括作為所述提示組件一部分的子系統固件中的、用于優化所述子系統中的數據處理的提示算法。
4.如權利要求I所述的系統,其特征在于,所述子系統包括用于根據塊寫入來存儲所 述數據的固態設備。
5.如權利要求I所述的系統,其特征在于,所述提示協議包括定義需要訪問的一組塊的塊范圍信息,并響應于接收到該組塊,所述子系統將其以鄰接的方式來存儲該組塊。
6.如權利要求I所述的系統,其特征在于,所述子系統包括各自以不同的速度操作的各組固態存儲器,所述子系統將頻繁訪問的數據存儲在較快的固態存儲器中。
7.如權利要求6所述的系統,其特征在于,所述提示組件用信號通知所述子系統將所述數據的塊存儲在所述各組固態存儲器中的一組特定固態存儲器中。
8.如權利要求I所述的系統,其特征在于,所述主機系統使用自適應算法來監控存儲在所述子系統中的數據的寫活動,其中子系統包括固態驅動器,以使得頻繁修改的數據被存儲在所述固態驅動器中。
9.如權利要求8所述的系統,其特征在于,所述固態驅動器包括快存儲器和慢存儲器以使得所述頻繁修改的數據被存儲在所述快存儲器中而較不頻繁修改的數據被存儲在所述慢存儲器中。
10.如權利要求I所述的系統,其特征在于,所述提示協議包括定義所述子系統應在讀取之前對其進行寫入的存儲器位置的數據維護信息。
11.如權利要求I所述的系統,其特征在于,所述提示協議包括基于預定準則來定義所述數據將被頻繁地還是不頻繁地更新的頻率信息。
12.如權利要求I所述的系統,其特征在于,所述提示協議包括定義其中相對于被訪問的其它數據期望訪問所述數據的緊急性的等待時間信息。
13.如權利要求I所述的系統,其特征在于,所述提示協議包括定義數據到所述子系統的預期傳遞的分配信息,響應于所述分配信息,所述子系統為該數據傳遞準備存儲器位置。
14.如權利要求I所述的系統,其特征在于,所述軟件層是操作系統,所述操作系統支持用于在將從較高級應用程序接收到的提示信息發送到所述子系統之前區分該提示信息的優先次序或對其進行過濾的一個或多個輸入/輸出過濾器。
15.一種管理存儲器的計算機實現的方法,所述方法包括以下動作 從主機的存儲設備接收與用于處理數據塊的操作模式相關的提示模式數據,所述提示模式數據向應用程序指示所述設備能根據提示協議來操作以優化通信和數據處理; 根據所述提示協議打包所述應用程序的數據以傳遞給所述設備; 將所打包的數據從所述應用程序發送到所述設備;以及根據提示信息將所述應用程序的數據存儲在所述設備上。
16.如權利要求15所述的方法,其特征在于,所述應用程序是主機操作系統、主機應用程序、或遠程系統的應用程序中的一個。
17.如權利要求15所述的方法,其特征在于,還包括 將所述應用程序的數據打包成數據塊序列以便進行塊通信并存儲在所述設備上;以及 基于所述提示信息來分配和解除分配存儲器位置。
18.如權利要求15所述的方法,其特征在于,還包括基于所述應用程序的數據的修改頻率來在所述設備中的快存儲器和慢存儲器之間移動所述應用程序的數據。
19.如權利要求15所述的方法,其特征在于,所打包的數據以塊寫入序列傳遞至所述設備中的鄰接存儲器位置。
20.如權利要求15所述的方法,其特征在于,進一步包括解包所打包的數據。
21.—種管理存儲器的計算機實現的系統,包括 用于從主機的存儲設備接收與用于處理數據塊的操作模式相關的提示模式數據的裝置,所述提示模式數據向應用程序指示所述設備能根據提示協議來操作以優化通信和數據處理; 用于根據提示協議打包應用程序的數據以傳遞給所述設備的裝置; 用于將所打包的數據從所述應用程序發送到所述設備的裝置;以及 用于根據提示信息將所述應用程序的數據存儲在所述設備上的裝置。
22.如權利要求21所述的系統,其特征在于,進一步包括用于解包所打包的數據的裝置。
全文摘要
用于連接到主機的存儲設備的優化的提示模型和用于存儲設備的寫優化方案。一種用于基于生成“意圖”或“提示”并將其傳遞給存儲設備來進行數據通信優化和/或較快/較慢固態存儲器優化的體系結構。對預定存儲在存儲設備(能夠進行提示處理)上的數據進行分類以利用與該提示處理相關聯的提升的性能。數據能以塊格式傳遞以使得能夠發生一系列單獨的塊交換。提示處理在存儲設備處是可任選的。在被傳遞給存儲設備時,固件方便優化內部數據流和設備操作。向諸如固態存儲設備等存儲系統提供一種寫優化方案。例如,頻繁修改的數據被存儲在較快的存儲器中以提供更高效的總體應用程序數據處理,而較不頻繁修改的數據被處理進出較低成本(或較慢)的存儲器。
文檔編號G06F13/10GK102750238SQ20121011132
公開日2012年10月24日 申請日期2008年3月27日 優先權日2007年4月23日
發明者F·舒, N·奧布, R·亞歷山大, V·薩多弗斯基 申請人:微軟公司