用于將數(shù)據(jù)綁定到存儲器命名空間的存儲器系統(tǒng)
1.相關(guān)申請
2.本技術(shù)請求2019年9月17日提交且標題為“用于將數(shù)據(jù)綁定到存儲器命名空間的存儲器系統(tǒng)(memory system for binding data to a memory namespace)”的美國專利申請第16/573,535號的優(yōu)先權(quán),所述申請的全部公開內(nèi)容特此以引用的方式并入本文中。
技術(shù)領(lǐng)域
3.本文中所公開的至少一些實施例大體而言涉及存儲器系統(tǒng),且尤其涉及但不限于用于將數(shù)據(jù)綁定到命名空間的存儲器系統(tǒng)。
背景技術(shù):4.各種類型的存儲器裝置可用于將數(shù)據(jù)存儲在計算機系統(tǒng)的主存儲器中。一種類型的易失性存儲器裝置為動態(tài)隨機存取存儲器(dram)裝置。各種類型的非易失性存儲器裝置可包含nand閃存存儲器裝置或非易失性隨機存取存儲器(nvram)裝置。
5.在操作系統(tǒng)中,存儲器管理負責管理計算機系統(tǒng)的主存儲器。存儲器管理跟蹤主存儲器中的存儲器位置的狀態(tài)(例如已分配或空閑的存儲器狀態(tài))。存儲器管理進一步確定在操作系統(tǒng)上運行的各種程序當中的存儲器的分配。當將存儲器分配給程序時,操作系統(tǒng)確定將指配給程序的存儲器位置。
6.在一種做法中,操作系統(tǒng)使用分頁分配將主存儲器劃分成稱為頁框的固定大小的單元。將軟件程序的虛擬地址空間劃分成具有相同大小的頁。硬件存儲器管理單元將頁映射到物理存儲器中的框。在分頁存儲器管理做法中,每個程序通常在其自身地址空間中運行。
7.在一些情況下,存儲器管理單元(mmu)稱為分頁存儲器管理單元(pmmu)。mmu管理由操作系統(tǒng)使用的所有存儲器參考且進行虛擬存儲器地址到物理地址的轉(zhuǎn)換。mmu通常將虛擬地址空間(其為由處理器使用的地址的范圍)劃分成頁。
8.在一些做法中,mmu使用含有頁表項的頁表將虛擬頁號映射到主存儲器中的物理頁號。在一些情況下,使用稱為轉(zhuǎn)換后備緩沖器(translation lookaside buffer;tlb)的頁表項的高速緩存以避免在映射虛擬地址時存取存儲在主存儲器中的頁表的需要。當使用虛擬存儲器時,可將虛擬地址的相連范圍映射到物理存儲器的若干非相連塊。
9.在一些情況下,頁表項可包含關(guān)于頁使用的信息。各種實例包含關(guān)于數(shù)據(jù)是否已寫入到頁、最后使用頁的時間、可讀取及寫入頁的處理程序的類型(例如用戶模式或監(jiān)督員模式)及是否應(yīng)對頁進行高速緩存的信息。
10.在一種做法中,tlb實施為內(nèi)容可定址存儲器(cam)。搜索密鑰為虛擬地址,且搜索結(jié)果為物理地址。如果所請求地址在tlb中,那么使用從搜索檢索的物理地址存取物理存儲器裝置。如果所請求地址不在tlb中,那么在主存儲器中存取頁表。
11.在一些情況下,虛擬存儲器管理系統(tǒng)使用處理程序識別符使每一頁與處理程序相關(guān)聯(lián)。處理程序識別符與虛擬頁的關(guān)聯(lián)可有助于選擇用于頁出的頁。舉例來說,如果處理程
序的主代碼頁已頁出,那么立即需要屬于彼處理程序的其它頁的可能性降低。
12.更大體而言,計算機系統(tǒng)可具有一或多個存儲器子系統(tǒng)。存儲器子系統(tǒng)可為存儲器模塊,例如雙列直插式存儲器模塊(dimm)、小外形dimm(so-dimm),或非易失性雙列直插式存儲器模塊(nvdimm)。存儲器子系統(tǒng)可包含存儲數(shù)據(jù)的一或多個存儲器組件。存儲器組件可為例如非易失性存儲器組件及易失性存儲器組件。存儲器組件的實例包含存儲器集成電路。一些存儲器集成電路為易失性的且需要電力來維持存儲的數(shù)據(jù)。一些存儲器集成電路為非易失性的,且即使在未供電時也可保留存儲的數(shù)據(jù)。非易失性存儲器的實例包含閃存存儲器、只讀存儲器(rom)、可編程只讀存儲器(prom)、可擦除可編程只讀存儲器(eprom)及電可擦除可編程只讀存儲器(eeprom)存儲器等。易失性存儲器的實例包含動態(tài)隨機存取存儲器(dram)及靜態(tài)隨機存取存儲器(sram)。大體而言,計算機系統(tǒng)可利用存儲器子系統(tǒng)在存儲器組件處存儲數(shù)據(jù)且從存儲器組件檢索數(shù)據(jù)。
13.舉例來說,計算機系統(tǒng)可包含附接到所述計算機系統(tǒng)的一或多個存儲器子系統(tǒng)。計算機系統(tǒng)可具有與一或多個存儲器子系統(tǒng)通信以存儲及/或檢索數(shù)據(jù)及指令的中央處理單元(cpu)。用于計算機的指令可包含操作系統(tǒng)、裝置驅(qū)動器及應(yīng)用程序。操作系統(tǒng)管理計算機中的資源且為應(yīng)用程序提供公用服務(wù),例如資源的存儲器分配及時間共享。裝置驅(qū)動器操作或控制計算機中的特定類型的裝置;且操作系統(tǒng)使用裝置驅(qū)動器來提供由所述類型的裝置提供的資源及/或服務(wù)。計算機系統(tǒng)的中央處理單元(cpu)可運行操作系統(tǒng)及裝置驅(qū)動器以將服務(wù)及/或資源提供到應(yīng)用程序。中央處理單元(cpu)可運行使用服務(wù)及/或資源的應(yīng)用程序。舉例來說,實施某應(yīng)用程序類型的應(yīng)用程序可指示中央處理單元(cpu)將數(shù)據(jù)存儲在存儲器子系統(tǒng)的存儲器組件中及從存儲器組件檢索數(shù)據(jù)。
14.計算機系統(tǒng)的操作系統(tǒng)可允許應(yīng)用程序使用存儲器的虛擬地址將數(shù)據(jù)存儲在計算機系統(tǒng)的一或多個存儲器子系統(tǒng)的存儲器組件中,或從所述存儲器組件檢索數(shù)據(jù)。操作系統(tǒng)將虛擬地址映射到連接到計算機系統(tǒng)的中央處理單元(cpu)的一或多個存儲器子系統(tǒng)的物理地址。操作系統(tǒng)將在虛擬地址處指定的存儲器存取轉(zhuǎn)換為存儲器子系統(tǒng)的物理地址。
15.可將虛擬地址空間劃分成頁??蓪⑻摂M存儲器的頁映射到存儲器子系統(tǒng)中的物理存儲器的頁。操作系統(tǒng)可使用分頁技術(shù)經(jīng)由存儲器模塊中的存儲器的頁存取存儲裝置中的存儲器的頁。在不同時間個例下,可將存儲器模塊中的存儲器的相同虛擬頁用作代理以存取計算機系統(tǒng)中的存儲裝置或另一存儲裝置中的存儲器的不同物理頁。
16.計算機系統(tǒng)可包含超管理器(或虛擬機監(jiān)視器)以創(chuàng)建或提供虛擬機。虛擬機為使用可用于計算機系統(tǒng)中的資源及服務(wù)來虛擬地實施的計算裝置。超管理器將虛擬機呈現(xiàn)給操作系統(tǒng),如同虛擬機的組件為專用物理組件一般。客操作系統(tǒng)以類似于在計算機系統(tǒng)中運行的主機操作系統(tǒng)的方式在虛擬機中運行以管理可用于虛擬機中的資源及服務(wù)。超管理器允許多個虛擬機共享計算機系統(tǒng)的資源,且允許虛擬機在計算機上大體上彼此獨立地作業(yè)。
附圖說明
17.在附圖的各圖中借助于實例(且非限制)來說明實施例,在所述圖中,類似編號指示類似元件。
18.圖1說明根據(jù)一些實施例的具有存儲器子系統(tǒng)的實例計算機系統(tǒng)。
19.圖2展示根據(jù)一些實施例的使用存儲器總線存取存儲器模塊中的不同類型的存儲器的移動裝置。
20.圖3說明根據(jù)一些實施例的存儲用以存取存儲器子系統(tǒng)中的存儲器裝置的元數(shù)據(jù)的實例計算機系統(tǒng)。
21.圖4展示根據(jù)一些實施例的經(jīng)配置用于由主機計算機系統(tǒng)對存儲器模塊的易失性及非易失性存儲器進行的存儲器總線存取的存儲器模塊。
22.圖5展示根據(jù)至少一些實施例的使用存儲器總線存取來存取存儲器模塊的主機操作系統(tǒng)。
23.圖6展示根據(jù)一些實施例的用于基于所存儲元數(shù)據(jù)來管理用于計算機系統(tǒng)的地址空間中的處理程序的存儲器的方法,所述所存儲元數(shù)據(jù)使用于地址空間中的處理程序的虛擬地址范圍與用于計算機系統(tǒng)中的存儲器裝置的物理地址相關(guān)聯(lián)。
24.圖7為可操作本發(fā)明的實施例的實例計算機系統(tǒng)的框圖。
25.圖8說明根據(jù)一些實施例的使用一或多個頁表來存取存儲器總線上的存儲器裝置的實例計算機系統(tǒng)。
26.圖9說明根據(jù)一些實施例的具有頁表項的實例頁表。
27.圖10展示根據(jù)一些實施例的用于生成頁表項以將虛擬頁的虛擬地址映射到不同存儲器類型的存儲器裝置中的物理地址的方法。
28.圖11說明根據(jù)一些實施例的使用命名空間表將命名空間映射到計算機系統(tǒng)中的物理存儲器的不同存儲器類型的實例計算機系統(tǒng)。
29.圖12說明根據(jù)一些實施例的具有將命名空間映射到計算機系統(tǒng)的不同類型的存儲器的記錄的實例命名空間表。
30.圖13展示根據(jù)一些實施例的用于將數(shù)據(jù)綁定到具有不同存儲器類型的物理存儲器的存儲器系統(tǒng)中的命名空間的方法。
具體實施方式
31.本文的至少一些實施例涉及存取所存儲元數(shù)據(jù)以識別存儲器系統(tǒng)的存儲數(shù)據(jù)的存儲器裝置。在如本文中所論述的各種實施例中,元數(shù)據(jù)可由各種類型的計算機系統(tǒng)存儲及存取。在一個實例中,計算機系統(tǒng)為片上系統(tǒng)(soc)裝置,其存儲用于管理在soc裝置上運行的一或多個處理程序的存儲器使用的元數(shù)據(jù)。在一個實例中,移動裝置使用soc裝置來管理向在移動裝置上運行的一或多個應(yīng)用程序分配主存儲器。
32.其它實施例涉及將虛擬頁的虛擬地址映射到不同存儲器類型的存儲器裝置中的物理地址的頁表項。這些實施例描述于以下標題為“與存儲器類型相關(guān)的頁表”的章節(jié)中。
33.其它實施例涉及將數(shù)據(jù)綁定到具有不同存儲器類型的物理存儲器的存儲器系統(tǒng)中的命名空間。這些實施例描述于以下標題為“將數(shù)據(jù)綁定到命名空間”的章節(jié)中。
34.先前計算機系統(tǒng)常常使用不同類型的存儲器裝置來存儲數(shù)據(jù)。通常使用的一種類型的存儲器裝置為dram,其通常視為提供快速讀取及寫入存取。dram通常用于將數(shù)據(jù)存儲在計算機系統(tǒng)的主存儲器中。
35.其它存儲器裝置(例如閃存存儲器)通常視為慢于dram。舉例來說,dram的讀取或
寫入存取時延通常明顯小于閃存存儲器的讀取或?qū)懭氪嫒r延。作為特定實例,一些存儲器裝置的寫入存取時延可比dram裝置大數(shù)十或甚至數(shù)百倍。
36.在使用不同類型的物理存儲器裝置以將數(shù)據(jù)存儲在主存儲器中的先前計算機系統(tǒng)中,存在處理器無法察覺用于各種處理程序的存儲器如何實際上映射到存儲器裝置的技術(shù)問題。舉例來說,處理器可將虛擬地址范圍分配給處理程序。然而,處理器未察覺如何將虛擬地址范圍映射到不同存儲器裝置。
37.在一個實例中,如果將用于某一處理程序的虛擬地址范圍映射到明顯慢于其它存儲器裝置(例如dram)的物理存儲器裝置(例如閃存存儲器),那么所述處理程序可因不能從主存儲器快速存取繼續(xù)執(zhí)行所述處理程序所需的數(shù)據(jù)而被迫緩慢運行。舉例來說,所述處理程序可能需要來自主存儲器的響應(yīng)以便繼續(xù)數(shù)據(jù)計算或其它處理(例如包含用于處理器對主存儲器的讀取存取請求的數(shù)據(jù)以獲得在由所述處理程序執(zhí)行期間所需的數(shù)據(jù)的響應(yīng))。如果來自主存儲器的所需數(shù)據(jù)實際上存儲在緩慢物理存儲器裝置中,那么處理在等待響應(yīng)時明顯延遲。
38.本發(fā)明的各種實施例提供對以上技術(shù)問題中的一或多者的技術(shù)解決方案。在一些實施例中,計算機系統(tǒng)存儲關(guān)于由計算機系統(tǒng)使用的存儲器裝置(例如用以提供主存儲器的存儲器裝置)的時延的數(shù)據(jù)。在一個實例中,已知對計算機系統(tǒng)的處理器可見的各種存儲器區(qū)的時延(例如由在所存儲元數(shù)據(jù)中收集及/或聚合的信息表示,如下文所論述)。
39.在一些實施例中,處理器、操作系統(tǒng)及/或應(yīng)用程序(如由軟件設(shè)計者編程)可由計算機系統(tǒng)啟動及/或進行動作以避免歸因于緩慢存儲器存取的明顯處理程序延遲。舉例來說,需要快速存儲器響應(yīng)的高優(yōu)先級處理程序可經(jīng)配置以在dram中運行。
40.在另一實例中,可監(jiān)視在移動裝置上執(zhí)行的應(yīng)用程序的優(yōu)先級。當應(yīng)用程序的優(yōu)先級增加(例如從低變高)時,處理器及/或操作系統(tǒng)可將應(yīng)用程序自動傳送出主存儲器的對應(yīng)于緩慢存儲器裝置的地址范圍,且將所述應(yīng)用程序移動到對應(yīng)于快速存儲器裝置的新地址范圍。
41.在一個實例中,存儲器裝置類型包含dram、nvram及nand閃存。處理程序的優(yōu)先級由處理器(例如基于所述處理程序的數(shù)據(jù)使用模式)確定?;陉P(guān)于映射到這些存儲器裝置類型的地址范圍的所存儲元數(shù)據(jù),處理器將處理程序分配給具有適當存儲器時延的地址范圍。舉例來說,處理器可確定處理程序具有低、中還是高優(yōu)先級。基于確定處理程序具有中優(yōu)先級,將與所述處理程序相關(guān)聯(lián)的軟件及/或數(shù)據(jù)存儲在對應(yīng)于nvram存儲器裝置類型中的物理存儲的地址范圍中,其具有中等時延。
42.在一個實例中,nvram裝置類型為3d xpoint存儲器。在一個實例中,nvram裝置類型可為電阻式隨機存取存儲器、磁阻式ram、相變ram及/或鐵電ram。在一個實例中,將nvram芯片用作計算機系統(tǒng)的主存儲器(例如nvdimm-p)。在一個實例中,使用dimm封裝中的非易失性3d xpoint存儲器來實施nvram裝置。
43.在另一實例中,如果處理器及/或操作系統(tǒng)未經(jīng)配置以響應(yīng)于優(yōu)先級改變而將應(yīng)用程序自動傳送到不同地址范圍,那么應(yīng)用程序的軟件代碼自身可經(jīng)配置以從所存儲元數(shù)據(jù)讀取一或多個值?;谧x取值,應(yīng)用程序自身可管理數(shù)據(jù)存儲,使得將數(shù)據(jù)優(yōu)先存儲在對應(yīng)于更快存儲器裝置的地址范圍中。在一個實例中,應(yīng)用程序可基于讀取或以其它方式提供有對所存儲元數(shù)據(jù)的存取來確定計算機系統(tǒng)中的可用存儲器裝置的相對時延。在一個實
例中,所存儲元數(shù)據(jù)指定哪一數(shù)據(jù)在具有不同時延的各種不同存儲器裝置中的哪一存儲器裝置上。通過以這種方式指定存儲器裝置,應(yīng)用程序可取決于正用以存儲數(shù)據(jù)的存儲器裝置確定對特定數(shù)據(jù)的存取的時延。
44.在一個實例中,移動裝置上的應(yīng)用程序在由(例如在片上系統(tǒng)裝置上執(zhí)行的)操作系統(tǒng)請求主存儲器的分配時讀取所存儲元數(shù)據(jù)。在一個實例中,應(yīng)用程序提出對主存儲器中的對應(yīng)于特定類型的存儲器裝置及/或與存儲器讀取或?qū)懭氪嫒∠嚓P(guān)聯(lián)的特定時延的地址范圍的請求。
45.在一個實例中,應(yīng)用程序讀取或以其它方式存取所存儲元數(shù)據(jù)以確定哪一存儲器為快速的,以及哪一存儲器為緩慢的。在移動裝置的第一上下文中,應(yīng)用程序提出對快速存儲器的分配的請求。在移動裝置的第二上下文中,應(yīng)用程序提出對緩慢存儲器的分配的請求。在一個實例中,響應(yīng)于預(yù)定上下文的檢測,應(yīng)用程序啟動或提出對存儲器的分配的改變的請求。在一個實例中,應(yīng)用程序基于(例如由處理器)對所存儲元數(shù)據(jù)的經(jīng)更新查詢及/或由計算機系統(tǒng)的處理器提供到應(yīng)用程序的數(shù)據(jù)(例如移動裝置的操作特性)確定上下文的改變。
46.在一個實施例中,計算機系統(tǒng)包含第一存儲器裝置(例如dram)及第二存儲器裝置(例如nvram或nand閃存),及一或多個處理裝置(例如cpu或片上系統(tǒng)(soc))。計算機系統(tǒng)進一步包含含有指令的存儲器,所述指令經(jīng)配置以指示一或多個處理裝置:存取由操作系統(tǒng)維護的地址空間中的存儲器,所述存取包含使用所述地址空間中的地址來存取所述第一存儲器裝置及所述第二存儲器裝置;存儲使所述地址空間的第一地址范圍與所述第一存儲器裝置相關(guān)聯(lián)且使所述地址空間的第二地址范圍與所述第二存儲器裝置相關(guān)聯(lián)的元數(shù)據(jù);及由所述操作系統(tǒng)基于所存儲元數(shù)據(jù)管理包含第一處理程序及第二處理程序的處理程序,其中將用于所述第一處理程序的數(shù)據(jù)存儲在所述第一存儲器裝置中,且將用于所述第二處理程序的數(shù)據(jù)存儲在所述第二存儲器裝置中。
47.在一個實施例中,計算機系統(tǒng)使用包含dram、nvram及nand閃存的存儲器裝置類型。在一個實例中,dram快于nvram,nvram快于nand閃存。計算機系統(tǒng)經(jīng)配置以使得可由計算機系統(tǒng)的處理器使用虛擬存儲器地址直接存取所有三種不同類型的存儲器。在一個實例中,處理器與存儲器管理單元通信以實施虛擬至物理地址映射系統(tǒng)。
48.在一個實施例中,應(yīng)用程序未經(jīng)預(yù)編程或未以其它方式經(jīng)配置以基于不同類型的存儲器裝置管理或處置存儲器分配的優(yōu)化。舉例來說,這可針對遺留軟件程序發(fā)生。在這個類型的情況下,操作系統(tǒng)可經(jīng)配置以管理針對應(yīng)用程序的存儲器分配的優(yōu)化。
49.在一個實例中,操作系統(tǒng)檢測或以其它方式確定應(yīng)用程序的一或多個特性。基于特性,操作系統(tǒng)使用所存儲元數(shù)據(jù)將主存儲器中的一或多個地址范圍指配給應(yīng)用程序。在一個實例中,基于由應(yīng)用程序自身(例如當應(yīng)用程序在移動裝置上啟動時)提供的信息來確定特性。在另一實例中,除其上執(zhí)行應(yīng)用程序的計算機系統(tǒng)以外,由計算裝置提供特性。在一個實例中,使用中央存儲庫來存儲及更新應(yīng)用程序的特性的數(shù)據(jù)庫或表。在一個實例中,中央服務(wù)器將關(guān)于待使用的類型的物理存儲器的指示提供到操作系統(tǒng)。
50.在一個實施例中,操作系統(tǒng)確定與計算機系統(tǒng)及/或應(yīng)用程序的執(zhí)行相關(guān)聯(lián)的上下文?;诖松舷挛模僮飨到y(tǒng)使用所存儲元數(shù)據(jù)將主存儲器中的一或多個地址范圍指配給應(yīng)用程序。
51.在一個實施例中,所存儲元數(shù)據(jù)用于識別存儲數(shù)據(jù)的裝置。存儲器子系統(tǒng)具有可由存儲器地址空間中的處理器(例如soc)定址的多個物理存儲器裝置(例如dram、nvram及nand閃存)。元數(shù)據(jù)用以指定將哪些存儲器地址區(qū)映射到哪些物理存儲器裝置。元數(shù)據(jù)可載入到dram及/或處理器中(例如載入到處理器的高速緩存中)以確定哪一數(shù)據(jù)在哪一裝置上,及/或用以估計對相應(yīng)數(shù)據(jù)的存取的時延。
52.在一個實施例中,應(yīng)用程序在具有使用主存儲器的處理器的移動裝置上執(zhí)行。應(yīng)用程序請求移動裝置的操作系統(tǒng)分配主存儲器的一部分以供應(yīng)用程序使用。所分配存儲器在邏輯/虛擬存儲器空間中(例如由程序設(shè)計師及由處理器的執(zhí)行單元所見的存儲器地址為虛擬的)。在一個實施例中,通過頁表將虛擬存儲器地址映射到真實/物理存儲器。將頁表中的映射數(shù)據(jù)的一部分高速緩存于處理器的緩沖器中。在一個實例中,緩沖器為轉(zhuǎn)換后備緩沖器(tlb)。
53.在一個實施例中,計算機系統(tǒng)包含dram、nvram及nand閃存存儲器裝置。計算機系統(tǒng)的處理器按地址隨機存取主存儲器。主存儲器內(nèi)的地址對應(yīng)于這三種類型的存儲器裝置上的數(shù)據(jù)存儲的物理位置。在一個實例中,裝置中的每一者由處理器使用同步存儲器總線存取。在一個實例中,dram為同步動態(tài)隨機存取存儲器(sdram),其具有與在cpu與存儲器控制器集線器之間承載數(shù)據(jù)的系統(tǒng)總線同步的接口。
54.圖1說明根據(jù)一些實施例的具有存儲器子系統(tǒng)110的實例計算環(huán)境100。存儲器子系統(tǒng)110可包含媒體,例如存儲器組件109a至109n。存儲器組件109a至109n可為易失性存儲器組件、非易失性存儲器組件,或其組合。在一些實施例中,存儲器子系統(tǒng)110為存儲器模塊。存儲器模塊的實例包含dimm及nvdimm。在一些實施例中,存儲器子系統(tǒng)110為混合式存儲器/存儲子系統(tǒng)。大體而言,計算環(huán)境100可包含使用存儲器子系統(tǒng)110的計算機系統(tǒng)120。舉例來說,計算機系統(tǒng)120可將數(shù)據(jù)寫入到存儲器子系統(tǒng)110且從存儲器子系統(tǒng)110讀取數(shù)據(jù)。
55.計算機系統(tǒng)120可為計算裝置,例如移動裝置、iot裝置、臺式計算機、膝上型計算機、網(wǎng)絡(luò)服務(wù)器,或包含存儲器及處理裝置的這類計算裝置。計算機系統(tǒng)120可包含或耦合到存儲器子系統(tǒng)110,使得計算機系統(tǒng)120可從存儲器子系統(tǒng)110讀取數(shù)據(jù)或?qū)?shù)據(jù)寫入到存儲器子系統(tǒng)110。計算機系統(tǒng)120可經(jīng)由物理主機接口耦合到存儲器子系統(tǒng)110。如本文中所使用,“耦合到”通常是指組件之間的連接,其可為間接通信連接或直接通信連接(例如無中介組件)、有線或無線、包含例如電、光學、磁性的連接等。物理主機接口的實例包含但不限于串行高級技術(shù)附件(sata)接口、快速外設(shè)組件互連(pcie)接口、通用串行總線(usb)接口、光纖信道、串行附接scsi(sas)、雙數(shù)據(jù)速率(ddr)存儲器總線等。物理主機接口可用于在計算機系統(tǒng)120與存儲器子系統(tǒng)110之間傳輸數(shù)據(jù)。當存儲器子系統(tǒng)110通過pcie接口與計算機系統(tǒng)120耦合時,計算機系統(tǒng)120可進一步利用nvm快速(nvme)接口存取存儲器組件109a至109n。物理主機接口可提供用于在存儲器子系統(tǒng)110與計算機系統(tǒng)120之間傳遞控制、地址、數(shù)據(jù)及其它信號的接口。
56.圖1說明存儲器子系統(tǒng)110作為實例。大體而言,計算機系統(tǒng)120可經(jīng)由共享通信連接、多個單獨通信連接及/或通信連接的組合存取多個存儲器子系統(tǒng)。在一個實例中,每一存儲器子系統(tǒng)110可為由處理裝置118經(jīng)由存儲器總線隨機存取的不同類型的存儲器裝置。
57.計算機系統(tǒng)120包含處理裝置118及控制器116。處理裝置118可為例如微處理器、
中央處理單元(cpu)、處理器的處理核心、執(zhí)行單元等。在一些情況下,控制器116可稱為存儲器控制器、存儲器管理單元及/或啟動器。在一個實例中,控制器116控制經(jīng)由耦合在計算機系統(tǒng)120與一或多個存儲器子系統(tǒng)110之間的總線的通信。
58.大體而言,控制器116可將命令或請求發(fā)送到存儲器子系統(tǒng)110以用于對存儲器組件109a至109n的所要存取。控制器116可進一步包含接口電路系統(tǒng)以與存儲器子系統(tǒng)110通信。接口電路系統(tǒng)可將從存儲器子系統(tǒng)110接收到的響應(yīng)轉(zhuǎn)換成用于計算機系統(tǒng)120的信息。
59.計算機系統(tǒng)120的控制器116可與存儲器子系統(tǒng)110的控制器115通信以進行操作,例如在存儲器組件109a至109n處讀取數(shù)據(jù)、寫入數(shù)據(jù)或擦除數(shù)據(jù),及其它這類操作。在一些情況下,控制器116集成于處理裝置118的同一封裝內(nèi)。在其它情況下,控制器116與處理裝置118的封裝分開??刂破?16及/或處理裝置118可包含硬件,例如一或多個集成電路及/或離散組件、緩沖器存儲器、高速緩存存儲器或其組合??刂破?16及/或處理裝置118可為微控制器、專用邏輯電路系統(tǒng)(例如現(xiàn)場可編程門陣列(fpga)、專用集成電路(asic)等),或另一合適的處理器。
60.存儲器組件109a至109n可包含各種不同類型的非易失性存儲器組件及/或易失性存儲器組件的任何組合。非易失性存儲器組件的實例包含與非(nand)類型閃存存儲器。在一個實例中,存儲器組件109a至109n中的每一者可包含一或多個存儲器單元陣列,例如單階單元(slc)或多階單元(mlc)(例如三階單元(tlc)或四階單元(qlc))。在一些實施例中,特定存儲器組件可包含存儲器單元的slc部分及mlc部分兩者。存儲器單元中的每一者可存儲由計算機系統(tǒng)120使用的一或多個數(shù)據(jù)位(例如數(shù)據(jù)塊)。
61.盡管例如nand類型閃存存儲器的非易失性存儲器組件為一個實例,但存儲器組件109a至109n可基于任何其它類型的存儲器,例如易失性存儲器。在一些實施例中,存儲器組件109a至109n可為(但不限于)隨機存取存儲器(ram)、只讀存儲器(rom)、動態(tài)隨機存取存儲器(dram)、同步動態(tài)隨機存取存儲器(sdram)、相變存儲器(pcm)、磁性隨機存取存儲器(mram)、自旋轉(zhuǎn)移力矩(stt)-mram、鐵電晶體管隨機存取存儲器(fetram)、鐵電ram(feram)、導(dǎo)電橋接ram(cbram)、電阻式隨機存取存儲器(rram)、氧化物類rram(oxram)、或非(nor)閃存存儲器、電可擦除可編程只讀存儲器(eeprom)、納米線類非易失性存儲器、并入有憶阻器技術(shù)的存儲器,及非易失性存儲器單元的3d xpoint陣列。非易失性存儲器的交叉點陣列可基于體電阻的改變結(jié)合可堆疊交叉柵格數(shù)據(jù)存取陣列進行位存儲。另外,與許多基于閃存的存儲器相比,交叉點非易失性存儲器可進行原地寫入操作,其中可在先前未擦除非易失性存儲器單元的情況下對所述非易失性存儲器單元進行編程。另外,存儲器組件109a至109n的存儲器單元可分組為存儲器頁或數(shù)據(jù)塊,其可指代用以存儲數(shù)據(jù)的存儲器組件單元。
62.存儲器子系統(tǒng)110的控制器115可與存儲器組件109a至109n通信以進行操作,例如在存儲器組件109a至109n處讀取數(shù)據(jù)、寫入數(shù)據(jù)或擦除數(shù)據(jù),及其它這類操作(例如響應(yīng)于由控制器116在命令總線上調(diào)度的命令)??刂破?15可包含硬件,例如一或多個集成電路及/或離散組件、緩沖器存儲器或其組合。控制器115可為微控制器、專用邏輯電路系統(tǒng)(例如現(xiàn)場可編程門陣列(fpga)、專用集成電路(asic)等),或另一合適的處理器??刂破?15可包含經(jīng)配置以執(zhí)行存儲在本地存儲器119中的指令的處理裝置117(處理器)。在所說明實例
中,控制器115的本地存儲器119包含嵌入式存儲器,其經(jīng)配置以存儲用于進行控制存儲器子系統(tǒng)110的操作的各種處理程序、操作、邏輯流程及例程的指令,包含處置存儲器子系統(tǒng)110與計算機系統(tǒng)120之間的通信。在一些實施例中,本地存儲器119可包含存儲存儲器指標、所提取數(shù)據(jù)等的存儲器寄存器。本地存儲器119還可包含用于存儲微碼的只讀存儲器(rom)。盡管圖1中的實例存儲器子系統(tǒng)110已說明為包含控制器115,但在本發(fā)明的另一實施例中,存儲器子系統(tǒng)110可不包含控制器115,且可改為依賴于外部控制(例如由外部主機或由與存儲器子系統(tǒng)分開的處理器或控制器提供)。
63.大體而言,控制器115可從計算機系統(tǒng)120接收命令或操作,且可將所述命令或操作轉(zhuǎn)換成指令或適當?shù)拿钜詫崿F(xiàn)對存儲器組件109a至109n的所要存取??刂破?15可負責其它操作,例如耗損調(diào)平操作、碎片收集操作、錯誤檢測及錯誤校正代碼(ecc)操作、加密操作、高速緩存操作,及與存儲器組件109a至109n相關(guān)聯(lián)的邏輯塊地址與物理塊地址之間的地址轉(zhuǎn)換。控制器115可進一步包含主機接口電路系統(tǒng)以經(jīng)由物理主機接口與計算機系統(tǒng)120通信。主機接口電路系統(tǒng)可將從計算機系統(tǒng)接收到的命令轉(zhuǎn)換成用以存取存儲器組件109a至109n的命令指令,以及將與存儲器組件109a至109n相關(guān)聯(lián)的響應(yīng)轉(zhuǎn)換成用于計算機系統(tǒng)120的信息。
64.存儲器子系統(tǒng)110還可包含未說明的額外電路系統(tǒng)或組件。在一些實施例中,存儲器子系統(tǒng)110可包含高速緩存或緩沖器121(例如dram或sram),及可從控制器115接收地址且解碼地址以存取存儲器組件109a至109n的地址電路系統(tǒng)(例如行解碼器及列解碼器)。
65.計算環(huán)境100包含計算機系統(tǒng)120中的元數(shù)據(jù)組件113,其存儲用以識別存儲數(shù)據(jù)的存儲器裝置的元數(shù)據(jù)(例如上文的各種實施例中所論述)。元數(shù)據(jù)組件113的一部分可駐存在計算機系統(tǒng)120及/或存儲器子系統(tǒng)110上。在一個實例中,將元數(shù)據(jù)的一部分存儲在本地存儲器119及/或緩沖器121中。在一個實例中,將元數(shù)據(jù)的一部分替代地及/或另外存儲在控制器116的高速緩存中(例如存儲在轉(zhuǎn)換后備緩沖器中)。
66.在一個實例中,存儲器子系統(tǒng)110可經(jīng)由ddr或其它類型的同步存儲器總線為計算機系統(tǒng)120提供對不同類型的存儲器裝置中的數(shù)據(jù)的存取。在一個實施例中,將存取提供到dimm上的nvram中的數(shù)據(jù)及dram中的數(shù)據(jù)。在一個實例中,使數(shù)據(jù)在計算機系統(tǒng)120的隨機存取存儲器地址空間中可存取,以用于經(jīng)由ddr存儲器總線在主機讀取/寫入請求期間進行存取。
67.在一個實例中,計算機系統(tǒng)120將頁入請求(用于對一頁的存取)發(fā)送到控制器115。響應(yīng)于接收到頁入請求,控制器115將一頁從緩慢媒體(例如非易失性存儲器裝置)移動到易失性存儲器裝置(例如存儲器子系統(tǒng)110上的dram)。
68.在一個實例中,計算機系統(tǒng)120將頁出請求發(fā)送到控制器115。響應(yīng)于接收到頁出請求,控制器115經(jīng)由緩沖器121將數(shù)據(jù)從易失性存儲器(例如存儲器子系統(tǒng)110上的dram)移出至非易失性存儲器。
69.在一些實施例中,計算機系統(tǒng)120中的控制器116及/或處理裝置118包含元數(shù)據(jù)組件113的至少一部分。舉例來說,控制器116及/或處理裝置118可包含實施元數(shù)據(jù)組件113的邏輯電路系統(tǒng)。舉例來說,計算機系統(tǒng)120的處理裝置118(處理器)可經(jīng)配置以執(zhí)行存儲在存儲器中的指令,以用于進行識別用于元數(shù)據(jù)組件113的數(shù)據(jù)存儲在哪些裝置中的操作,如本文中所描述。在一些實施例中,元數(shù)據(jù)組件113為計算機系統(tǒng)120的操作系統(tǒng)的部分、裝置
驅(qū)動器或應(yīng)用程序(例如在計算機系統(tǒng)120上執(zhí)行的應(yīng)用程序)。
70.在一些實施例中,存儲器子系統(tǒng)110中的控制器115及/或處理裝置117包含元數(shù)據(jù)組件113的至少一部分。舉例來說,控制器115及/或處理裝置117可包含實施元數(shù)據(jù)組件113的邏輯電路系統(tǒng)。
71.在一個實例中,中央處理單元(cpu)可存取連接到cpu的存儲器系統(tǒng)中的存儲器。舉例來說,中央處理單元(cpu)可經(jīng)配置以基于對元數(shù)據(jù)組件113的所存儲元數(shù)據(jù)的查詢來存取存儲器。
72.圖2展示根據(jù)一些實施例的使用存儲器總線203存取存儲器模塊205中的不同類型的存儲器的移動裝置200。圖2展示具有不同類型的存儲器的計算機系統(tǒng)。圖2的計算機系統(tǒng)包含移動裝置200,及經(jīng)由存儲器總線203連接到移動裝置200的存儲器模塊205。存儲器模塊205為圖1中所說明的存儲器子系統(tǒng)110的實例。
73.移動裝置200包含處理裝置118,其可為中央處理單元或具有一或多個處理核心的微處理器。移動裝置200可具有高速緩存存儲器211。高速緩存存儲器211的至少一部分可任選地集成于處理裝置118的同一集成電路封裝內(nèi)。
74.圖2中所說明的存儲器模塊205具有多種類型的存儲器(例如221及223)。舉例來說,a型存儲器221(例如dram)快于b型存儲器223(例如nvram)。舉例來說,存儲器總線203可為雙數(shù)據(jù)速率總線。大體而言,若干存儲器模塊(例如205)可耦合到存儲器總線203。
75.處理裝置118經(jīng)由指令(例如操作系統(tǒng)及/或一或多個裝置驅(qū)動器)經(jīng)配置以使用元數(shù)據(jù)組件113存取計算機系統(tǒng)中的存儲器的一部分。舉例來說,可存取存儲器模塊205的b型存儲器223(例如nvram)或可存取存儲器模塊205的a型存儲器221(例如dram)。在一個實施例中,存儲器模塊205的b型存儲器223僅可經(jīng)由對存儲器模塊205的a型存儲器221進行定址來存取。
76.控制器227可設(shè)置于存儲器模塊205中以管理對a型存儲器221及b型存儲器223的數(shù)據(jù)存取。在一個實施例中,當將數(shù)據(jù)傳送到緩沖器121或從緩沖器121傳送數(shù)據(jù)時,控制器227復(fù)用由移動裝置200及存儲器模塊205對dram或nvram的存取。在一個實例中,存儲器總線203提供主機ddr信道作為移動裝置200與存儲器模塊205之間的ddr接口。在一個實例中,一旦將一頁從nvram存儲器檢索到緩沖器121中,即可經(jīng)由常規(guī)ddr4槽(例如主機ddr信道)載入所述頁以供移動裝置存取。
77.大體而言,存儲器子系統(tǒng)(例如205)可包含媒體,例如存儲器(例如221、
……
、223)。存儲器(例如221、
……
、223)可包含易失性存儲器、非易失性存儲器(nvm)及/或其組合。處理裝置118可直接或間接地將數(shù)據(jù)寫入到存儲器子系統(tǒng)(例如存儲器模塊205)中的每一者且從存儲器子系統(tǒng)(例如存儲器模塊205)讀取數(shù)據(jù)。
78.在一個實施例中,存儲器模塊205通過使用緩沖器121提供對非易失性存儲器或易失性存儲器的存儲器總線存取。在一個實例中,存儲器模塊205為經(jīng)由ddr總線耦合到移動裝置200的dimm。存儲媒體為例如交叉點存儲器。
79.在一個實施例中,移動裝置經(jīng)由用于讀取/寫入操作的通信信道(例如使用ddr4總線)與存儲器模塊通信。移動裝置可具有可經(jīng)由互連件與例如存儲器模塊的計算機周邊裝置附接的一或多個中央處理單元(cpu),所述互連件例如計算機總線(例如串行at附件(sata)、外圍組件互連(pci)、擴展pci(pci-x)、快速pci(pcie))、通信部分及/或計算機網(wǎng)
絡(luò)。
80.在一個實施例中,存儲器模塊可用于存儲用于非易失性或易失性存儲媒體中的處理器的數(shù)據(jù)。存儲器模塊具有使用通信信道實施與移動裝置的通信的主機接口。在一個實施例中,存儲器模塊205具有響應(yīng)于來自處理裝置118的通信而運行例如固件以進行操作的控制器227。在一個實例中,存儲器模塊包含易失性動態(tài)隨機存取存儲器(dram)及nvram。dram及nvram將可由處理裝置118存取的數(shù)據(jù)存儲在存儲器地址空間中。
81.如所說明,圖2的計算機系統(tǒng)用以實施移動裝置。處理裝置118可從存儲器子系統(tǒng)(例如205)讀取數(shù)據(jù)或?qū)?shù)據(jù)寫入到所述存儲器子系統(tǒng)。
82.物理主機接口可用于在處理裝置118與存儲器子系統(tǒng)(例如205)之間傳輸數(shù)據(jù)。物理主機接口可提供用于在存儲器子系統(tǒng)(例如205)與處理裝置118之間傳遞控制、地址、數(shù)據(jù)及其它信號的接口。
83.大體而言,存儲器子系統(tǒng)(例如存儲器模塊205)包含連接提供存儲器(例如221、
……
、223)的存儲器裝置集合(例如存儲器集成電路)的印刷電路板。存儲器子系統(tǒng)(例如205)上的存儲器(例如221、
……
、223)可包含不同類型的非易失性存儲器裝置及/或易失性存儲器裝置的任何組合。
84.在一些實施中,存儲器(例如221、
……
、223)可包含但不限于隨機存取存儲器(ram)、只讀存儲器(rom)、動態(tài)隨機存取存儲器(dram)、靜態(tài)隨機存取存儲器(sram)、同步動態(tài)隨機存取存儲器(sdram)、相變存儲器(pcm)、磁性隨機存取存儲器(mram)、或非(nor)閃存存儲器、電可擦除可編程只讀存儲器(eeprom),及/或非易失性存儲器單元的交叉點陣列。
85.存儲器子系統(tǒng)(例如存儲器模塊205)可具有響應(yīng)于來自處理裝置118的請求、命令或指令而與存儲器(例如221、
……
、223)通信以進行操作的控制器(例如227),所述操作例如讀取數(shù)據(jù)、寫入數(shù)據(jù)或擦除存儲器(例如221、
……
、223)中的數(shù)據(jù)及其它這類操作??刂破?例如227)可包含硬件,例如一或多個集成電路及/或離散組件、緩沖存儲器或其組合??刂破?例如227)可為微控制器、專用邏輯電路系統(tǒng)(例如現(xiàn)場可編程門陣列(fpga)、專用集成電路(asic)等),或另一合適的處理器。控制器(例如227)可包含經(jīng)配置以執(zhí)行存儲在本地存儲器中的指令的一或多個處理器(處理裝置)。
86.控制器(例如227)的本地存儲器可包含嵌入式存儲器,其經(jīng)配置以存儲用于進行控制存儲器子系統(tǒng)(例如205)的操作的各種處理程序、操作、邏輯流程及例程的指令,包含處置存儲器子系統(tǒng)(例如205)與處理裝置118之間的通信,及在下文更詳細地描述的其它功能??刂破?例如227)的本地存儲器可包含用于存儲微碼的只讀存儲器(rom)及/或存儲例如存儲器指標、所提取數(shù)據(jù)等的存儲器寄存器。
87.盡管圖2中的實例存儲器子系統(tǒng)205已說明為包含控制器227,但在本發(fā)明的另一實施例中,存儲器子系統(tǒng)(例如205)可不包含控制器(例如227),且可改為依賴于外部控制(例如由與存儲器子系統(tǒng)(例如205)分開的處理器或控制器提供)。
88.大體而言,控制器(例如227)可根據(jù)用于通信信道(例如203)的標準通信協(xié)議從處理裝置118接收命令、請求或指令,且可將遵從標準協(xié)議的命令、請求或指令轉(zhuǎn)換成存儲器子系統(tǒng)(例如205)內(nèi)的詳細指令或適當?shù)拿睿詫崿F(xiàn)對存儲器(例如221、
……
、223)的所要存取。舉例來說,控制器(例如227)可負責操作,例如與存儲器(例如221、
……
、223)相關(guān)
聯(lián)的邏輯地址與物理地址之間的地址轉(zhuǎn)換??刂破?例如227)可進一步包含主機接口電路系統(tǒng)以經(jīng)由物理主機接口與處理裝置118通信。主機接口電路系統(tǒng)可將從處理裝置118接收到的命令轉(zhuǎn)換成命令指令以存取存儲器裝置(例如221、
……
、223),以及將與存儲器裝置(例如221、
……
、223)相關(guān)聯(lián)的響應(yīng)轉(zhuǎn)換成用于處理裝置118的信息。
89.存儲器子系統(tǒng)(例如205)還可包含未說明的額外電路系統(tǒng)或組件。在一些實施中,存儲器子系統(tǒng)(例如205)可包含高速緩存或緩沖器(例如dram),及可從控制器(例如227)接收地址且解碼地址以存取存儲器(例如221、
……
、223)的地址電路系統(tǒng)(例如行解碼器及列解碼器)。
90.在一個實例中,存儲器總線203具有一或多個連接器以向存儲器子系統(tǒng)(例如205)提供電力及/或經(jīng)由預(yù)定協(xié)議與存儲器子系統(tǒng)(例如205)通信;且存儲器子系統(tǒng)(例如205)具有一或多個連接器以從處理裝置118接收電力、數(shù)據(jù)及命令。在一個實例中,處理裝置118可執(zhí)行一或多個操作系統(tǒng)以提供服務(wù),包含存儲器存取,其中使用同步存儲器存取來存取計算機系統(tǒng)中的存儲器的一部分(例如存儲在nvram中的一頁)。
91.圖3說明根據(jù)一些實施例的存儲用以存取存儲器子系統(tǒng)302中的存儲器裝置的元數(shù)據(jù)320的實例計算機系統(tǒng)300。在存儲器子系統(tǒng)302中存取的存儲器裝置包含dram304、nvram 306及nand閃存308。在一個實施例中,計算機系統(tǒng)300替代地及/或另外將元數(shù)據(jù)322存儲在用以存取存儲器裝置的dram 304中。
92.在一個實施例中,計算機系統(tǒng)300的處理裝置310存取地址空間中的存儲器。在一個實例中,當執(zhí)行一或多個應(yīng)用程序時,存儲器為由處理裝置310使用的主存儲器。處理裝置310使用地址空間中的地址存取不同存儲器裝置。
93.在一個實施例中,元數(shù)據(jù)320、322使地址空間的第一地址范圍與存儲器裝置(例如dram 304)相關(guān)聯(lián),且使地址空間的第二地址范圍與不同存儲器裝置(例如nvram 306或nand閃存308)相關(guān)聯(lián)。在一個實例中,dram 304的時延小于nvram 306及nand閃存308的時延。
94.在處理裝置310上執(zhí)行的應(yīng)用程序包含應(yīng)用程序312,其經(jīng)配置以包含存儲器類型314。當應(yīng)用程序312初始啟動時,應(yīng)用程序312將存儲器類型314連同對計算機系統(tǒng)300的主存儲器中的存儲器的分配的請求一起提供到處理裝置310。
95.響應(yīng)于對存儲器的分配的請求,處理裝置310對元數(shù)據(jù)320進行查詢及/或?qū)⒉樵儼l(fā)送到元數(shù)據(jù)322?;趤碜赃@些查詢中的一或兩者的結(jié)果,處理裝置310將地址空間中的地址范圍分配給應(yīng)用程序312。
96.在一個實施例中,應(yīng)用程序312向處理裝置310提出對與存儲器裝置相關(guān)聯(lián)的時延的指示的請求。處理裝置310存取元數(shù)據(jù)320、322以獲得結(jié)果,且基于這個結(jié)果將時延的指示提供到應(yīng)用程序312。響應(yīng)于接收到時延的指示,應(yīng)用程序312提出對對應(yīng)于存儲器裝置中的特定一者(對應(yīng)于存儲器類型314的存儲器裝置)的存儲器的分配的請求,或?qū)哂蟹现辽僖换蚨鄠€預(yù)定閾值及/或要求的性能特性的存儲器的分配的請求。
97.在一個實施例中,元數(shù)據(jù)322存儲使虛擬地址空間中的地址范圍與存儲器子系統(tǒng)302的存儲器裝置中的物理地址相關(guān)聯(lián)的數(shù)據(jù)。在一個實例中,元數(shù)據(jù)322存儲用于nvram的地址范圍324,及用于nand閃存的地址范圍326。在一個實例中,地址范圍324將處理裝置310的虛擬或邏輯地址映射到nvram 306的物理地址。在一個實例中,地址范圍326將處理裝置
310的虛擬或邏輯地址映射到nand閃存308的物理地址。在一個實施例中,元數(shù)據(jù)320或322存儲映射用于存儲在dram 304中的數(shù)據(jù)的處理裝置310的地址的一或多個地址范圍。
98.在一個實施例中,將元數(shù)據(jù)322存儲為頁表328的部分,所述頁表328為計算機系統(tǒng)300的存儲器管理單元316提供虛擬地址到物理地址的映射。處理裝置310將虛擬地址提供到存儲器管理單元316,其存取轉(zhuǎn)換后備緩沖器318以獲得存儲器子系統(tǒng)302的存儲器裝置中的一者中的物理地址。
99.在一個實施例中,轉(zhuǎn)換后備緩沖器318為存儲來自頁表328的數(shù)據(jù)的一部分的高速緩存。在一個實例中,緩沖器318存儲元數(shù)據(jù)322的一部分。在一個實施例中,當存取存儲器子系統(tǒng)302中的存儲器裝置時,將存儲在計算機系統(tǒng)300上的元數(shù)據(jù)320的一部分復(fù)制到轉(zhuǎn)換后備緩沖器318以供存儲器管理單元316存取。
100.在一個實施例中,處理裝置310將不同存儲器裝置的存儲器特性提供到應(yīng)用程序312。應(yīng)用程序312基于所提供存儲器特性提出對存儲器的分配的請求。
101.在一個實施例中,處理裝置310從應(yīng)用程序312接收所請求時延。基于所請求時延將地址范圍分配給應(yīng)用程序312。
102.在一個實施例中,處理裝置310確定與應(yīng)用程序312相關(guān)聯(lián)的優(yōu)先級?;诮?jīng)確定優(yōu)先級將地址范圍分配給應(yīng)用程序312。在一個實例中,選擇更快存儲器裝置類型以與經(jīng)確定優(yōu)先級一起使用。處理裝置310使用元數(shù)據(jù)320、322來選擇將數(shù)據(jù)物理地存儲在選定更快存儲器裝置類型的存儲器裝置中的地址范圍。
103.在一個實施例中,處理裝置310確定應(yīng)用程序312的優(yōu)先級的改變。在一個實例中,基于應(yīng)用程序312的優(yōu)先級的增加,處理裝置310改變用于地址空間中的應(yīng)用程序312的存儲器分配。在一個實例中,響應(yīng)于優(yōu)先級的增加,處理裝置310存取元數(shù)據(jù)320、322以確定對應(yīng)于更快物理存儲器裝置的地址范圍。
104.在一個實施例中,處理裝置310基于與地址空間中的應(yīng)用程序312的數(shù)據(jù)存取相關(guān)聯(lián)的觀察特性來確定應(yīng)用程序312的優(yōu)先級。觀察到的特性可用于為應(yīng)用程序312分配存儲器使用。在一個實施例中,處理裝置310確定與物理存儲器裝置相關(guān)聯(lián)的一或多個時延。元數(shù)據(jù)320、322存儲關(guān)于經(jīng)確定的一或多個時延的數(shù)據(jù),其可在初始分配主存儲器及/或改變主存儲器的分配時由處理裝置310使用。
105.圖4展示根據(jù)一些實施例的經(jīng)配置用于主機計算機系統(tǒng)(未展示)對易失性存儲器402及非易失性存儲器404的存儲器總線存取的存儲器模塊401。存儲器模塊401為存儲器子系統(tǒng)302或存儲器模塊205的實例。在一個實例中,存儲器模塊401為混合式dimm。易失性存儲器402為例如dram。
106.存儲器模塊401使用多路復(fù)用器408來提供存儲器控制器416對易失性存儲器402及非易失性存儲器404的存取。存儲器控制器416耦合到主機接口406以供主機系統(tǒng)處置讀取/寫入存取。在一個實施例中,響應(yīng)于經(jīng)由主機接口406從主機系統(tǒng)接收到讀取或?qū)懭朊疃趶拇鎯ζ骺刂破?16接收到的信號來控制多路復(fù)用器408。
107.在一個實例中,主機系統(tǒng)存取存儲器模塊401(例如dimm)上的存儲器空間(例如dram存儲器地址空間)。dimm將自身暴露于主機作為dram的信道。在一個實施例中,主機系統(tǒng)的超管理器控制dimm上的數(shù)據(jù)移動。舉例來說,提出對將存儲器塊移入及移出dram地址空間且將dram頁暴露于在主機上運行的軟件的請求。軟件例如在虛擬機(vm)中執(zhí)行。
108.在一個實例中,為驅(qū)動器提供頁入/頁出控制路徑以請求當前在dram中或nvram中的頁。在一個實例中,nvram具有比dram大得多的容量。
109.在一個實例中,存儲器模塊401實施為dimm。非易失性存儲器404由3d xpoint存儲器封裝提供。在一個實例中,將從3d xpoint存儲器獲得的數(shù)據(jù)的頁復(fù)制入及復(fù)制出緩沖器(頁入/頁出)。
110.在一個實例中,主機系統(tǒng)可使用正常ddr4時序?qū)θ魏蝑ram或nvram地址進行讀取/寫入存取。舉例來說,主機可在那些時間期間根據(jù)ddr4規(guī)則生成任意業(yè)務(wù)。
111.在一個實例中,非易失性存儲器404的完整ddr地址空間暴露于主機系統(tǒng)。根據(jù)各種實施例,計算機系統(tǒng)120的控制器(例如控制器116)可以與其存取常規(guī)dram相同的方式(例如相同讀取/寫入及刷新時序循環(huán))操作。
112.圖5展示根據(jù)至少一些實施例的使用存儲器總線存取來存取存儲器模塊502的主機操作系統(tǒng)241。存儲器模塊502包含緩沖器410。緩沖器410為緩沖器121的實例。在一個實例中,緩沖器410存儲元數(shù)據(jù)322及/或頁表328的至少一部分。經(jīng)由主機接口406從主機操作系統(tǒng)241接收到命令及數(shù)據(jù)。在一個實例中,主機操作系統(tǒng)241在計算機系統(tǒng)120或300上執(zhí)行。
113.在一個實施例中,裝置驅(qū)動器247(例如后端驅(qū)動器)經(jīng)配置以用于經(jīng)由超管理器245的存儲器存取。在一個實例中,圖5的系統(tǒng)實施于圖1至3的計算機系統(tǒng)中。
114.在一個實例中,主機操作系統(tǒng)241在圖1或2的計算機系統(tǒng)的處理裝置118或圖3的處理裝置310上運行。主機操作系統(tǒng)241包含使用存儲器子系統(tǒng)(例如存儲器模塊205或存儲器子系統(tǒng)302)的存儲器(例如221、
……
、223)提供存儲器服務(wù)的一或多個裝置驅(qū)動器(例如247)。
115.在一個實施例中,后端驅(qū)動器247維護映射表246。舉例來說,驅(qū)動器247維護映射表246以包含存儲在dram 304、nvram 306及nand閃存308中的數(shù)據(jù)的頁的映射。
116.在一個實施例中,主機操作系統(tǒng)241包含布建虛擬機249的超管理器245。虛擬機249具有經(jīng)由主機操作系統(tǒng)241使用圖1至3的計算系統(tǒng)的硬件提供的資源及服務(wù)實施的虛擬硬件。舉例來說,超管理器245可使用存儲器子系統(tǒng)(例如存儲器模塊205)的存儲器(例如221、
……
、223)的一部分布建虛擬存儲器作為虛擬機249的部分。
117.虛擬機249允許客操作系統(tǒng)243以如在物理計算機器上運行的操作系統(tǒng)243的方式將資源及/或服務(wù)提供到在客操作系統(tǒng)243中運行的應(yīng)用程序(例如251、
……
、253),所述物理計算機器具有與虛擬機中的布建相同或類似的硬件集合。超管理器245管理布建于虛擬機中的虛擬硬件與由主機操作系統(tǒng)241管理的計算系統(tǒng)中的硬件的服務(wù)之間的映射。
118.裝置驅(qū)動器248(例如前端驅(qū)動器)與后端驅(qū)動器247通信。當額外ddr容量(例如dram或nvram中的容量)可用時,驅(qū)動器247及驅(qū)動器248可通信以用于內(nèi)存膨脹(memory ballooning)。
119.圖5說明由超管理器245布建虛擬機249的情況。大體而言,超管理器245可布建可運行相同客操作系統(tǒng)243或不同客操作系統(tǒng)的若干虛擬機(例如249)??芍概洳煌脩艏?或應(yīng)用程序集合以使用不同虛擬機。
120.在一些情況下,主機操作系統(tǒng)241專用于為虛擬機的布建提供服務(wù)且不運行其它應(yīng)用程序。替代地,主機操作系統(tǒng)241可提供額外服務(wù)以支持其它應(yīng)用程序,例如應(yīng)用程序
(例如251、
……
、253)。
121.在一個實施例中,裝置驅(qū)動器247可經(jīng)配置以請求一頁從較慢存儲器(例如nvram)到較快存儲器(例如dram)的頁入以供虛擬機249使用。這個請求可響應(yīng)于來自應(yīng)用程序(例如圖3的應(yīng)用程序312)的請求而提出。在請求所述頁之后,通過載入數(shù)據(jù)的頁及/或?qū)⑵鋸妮^慢存儲器傳送到較快存儲器使所述頁在較快存儲器中可用。在一個實例中,處理裝置310基于存儲為元數(shù)據(jù)320、322的地址范圍信息將頁從較慢存儲器移動到較快存儲器。在一個實例中,較慢存儲器可為存儲器模塊401中的非易失性存儲器404,且較快存儲器為同一存儲器模塊401中的易失性存儲器402。
122.在一個實施例中,數(shù)據(jù)的傳送(例如響應(yīng)于主機操作系統(tǒng)241的頁入請求而進行)是在同一存儲器子系統(tǒng)內(nèi)(例如同一存儲器模塊401內(nèi))進行,以避免或減少連接到處理裝置118的通信信道(例如存儲器總線203)中的擁塞。舉例來說,在存儲器模塊205中的控制器227的控制下,可響應(yīng)于來自裝置驅(qū)動器247的一或多個命令、請求及/或指令,將數(shù)據(jù)從存儲器模塊205中的較慢存儲器223(例如nvram或nand閃存)復(fù)制到存儲器模塊205中的較快存儲器221(例如dram)。
123.在一個實施例中,超管理器245不僅請求裝置驅(qū)動器247存取存儲器子系統(tǒng)(例如存儲器模塊205)中的存儲器(例如221、
……
、223),且還向裝置驅(qū)動器247提供可用于管理待使用的存儲器(例如221、
……
、223、
……
、或225)中的頁的信息。在一個實例中,所提供信息包含所存儲元數(shù)據(jù)320或322。
124.在一個實例中,驅(qū)動器247為用以存取存儲器模塊502(例如dimm)中的存儲器地址空間的存儲器模式驅(qū)動器。驅(qū)動器247控制在任一時間哪些頁在dimm的易失性存儲器中。在一種做法中,例如,存儲器地址空間暴露于客操作系統(tǒng)243。在這個超管理器環(huán)境中,客操作系統(tǒng)243查看dimm中的非易失性存儲器(例如nvram及dram)的完整存儲容量。
125.在一個實例中,經(jīng)由主機操作系統(tǒng)241主動地對ddr dram中的僅數(shù)個頁進行頁入。如果對不存在的頁進行訪客(guest)存取,那么主機系統(tǒng)的存儲器管理單元(mmu)中的尋頁缺失路徑觸發(fā)驅(qū)動器247以引起頁的載入(頁入)。在一個實例中,所述頁經(jīng)由控制寄存器載入。一旦所述頁實際上存在于ddr dram中,那么驅(qū)動器247可設(shè)置mmu映射(經(jīng)由映射表246),使得客應(yīng)用程序可直接讀取及寫入所述數(shù)據(jù)。
126.在一個實例中,客戶機的前端驅(qū)動器及主機的后端驅(qū)動器關(guān)于對存儲器地址空間的存取而通信。在一個實例中,當確定頁陳舊(例如基于預(yù)定閾值未頻繁使用)時,提出將當前映射于ddr存儲器地址空間中的數(shù)據(jù)的一部分(例如經(jīng)由sram緩沖器)推出到nvram存儲器以使dram存儲器中的空間可用于待頁入的其它頁的請求。后端驅(qū)動器247傳達頁出請求以將數(shù)據(jù)從ddr dram移動到nvram存儲器。
127.在一個實施例中,后端驅(qū)動器247作為存儲器模式驅(qū)動器操作。直至驅(qū)動器247載入之前,不存在對存儲器模塊502的nvram存儲器容量的存取。在作為存儲器模式驅(qū)動器的這個操作期間,客操作系統(tǒng)243將存儲器視為正常,且驅(qū)動器247保留存儲器模塊上的dram頁以用于頁入及頁出操作。
128.驅(qū)動器247將nvram存儲器暴露于客操作系統(tǒng)243且維護頁映射(例如在映射表246中)。舉例來說,驅(qū)動器247維護當前在dram中的頁與在nvram存儲器上的頁之間的映射。
129.在一個實例中,驅(qū)動器247在主機系統(tǒng)處設(shè)置存儲器管理單元映射表以映射當前
存儲在dram中的任何頁。如果在映射頁外部存在存取以觸發(fā)頁入請求,那么可使用來自客戶機的尋頁缺失路徑。可進行頁出請求以維護dram中的一些存儲器空間。
130.在一個實施例中,操作不受限于存儲器模式。驅(qū)動器247也可作為塊模式驅(qū)動器操作,針對所述塊模式驅(qū)動器,nvram存儲器暴露作為塊模式存儲。
131.在一個實施例中,存儲器模塊502維護其自身的映射表,包含在sram緩沖器(未展示)中的頁的列表。存儲器模塊502可返回頁入完成。這準許減少主機系統(tǒng)存取那些特定頁的時延。驅(qū)動器247確保直至設(shè)置其映射之前,主機不會存取所述頁,直至頁入請求完成為止。
132.在一個實施例中,驅(qū)動器247實施頁出操作。在一個實例中,觸發(fā)這個操作作為線程。這個操作將空閑頁交換出dram存儲器且改變有效頁的映射。
133.圖6展示根據(jù)一些實施例的用于基于所存儲元數(shù)據(jù)來管理用于計算機系統(tǒng)的地址空間中的處理程序的存儲器的方法,所述所存儲元數(shù)據(jù)使用于地址空間中的處理程序的虛擬地址范圍與用于計算機系統(tǒng)中的存儲器裝置的物理地址相關(guān)聯(lián)。舉例來說,圖6的方法可實施于圖1至3的系統(tǒng)中。
134.圖6的方法可由處理邏輯進行,所述處理邏輯可包含硬件(例如處理裝置、電路系統(tǒng)、專用邏輯、可編程邏輯、微碼、裝置的硬件、集成電路等)、軟件(例如在處理裝置上運行或執(zhí)行的指令),或其組合。在一些實施例中,圖6的方法至少部分地由一或多個處理裝置(例如圖3的處理裝置310)進行。
135.盡管以特定順序或次序展示,但除非另有規(guī)定,否則可修改所述處理程序的次序。因此,所說明實施例應(yīng)僅理解為實例,且所說明處理程序可以不同次序進行,且一些處理程序可并行進行。另外,可在各種實施例中省略一或多個處理程序。因此,在每一實施例中并非所有處理程序都是必需的。其它處理程序流程是可能的。
136.在框601處,操作系統(tǒng)維護地址空間中的存儲器。存取存儲器包含使用地址空間中的地址存取第一存儲器裝置及第二存儲器裝置。在一個實例中,操作系統(tǒng)在圖3的處理裝置310上執(zhí)行。在一個實例中,第一存儲器裝置為dram 304,且第二存儲器裝置為nvram 306。在一個實例中,第一存儲器裝置為nvram 306,且第二存儲器裝置為nand閃存308。
137.在框603處,存儲使地址空間的第一地址范圍與第一存儲器裝置相關(guān)聯(lián)的元數(shù)據(jù)。元數(shù)據(jù)還使地址空間的第二地址范圍與第二存儲器裝置相關(guān)聯(lián)。在一個實例中,所存儲元數(shù)據(jù)為圖3的元數(shù)據(jù)320及/或322。在一個實例中,第一地址范圍為地址范圍324,且第二地址范圍為地址范圍326。
138.在框605處,基于所存儲元數(shù)據(jù)來管理在計算機系統(tǒng)中運行的處理程序。處理程序包含第一處理程序及第二處理程序。將用于第一處理程序的數(shù)據(jù)存儲在第一存儲器裝置中,且將用于第二處理程序的數(shù)據(jù)存儲在第二存儲器裝置中。在一個實例中,將用于第一處理程序的數(shù)據(jù)存儲在地址范圍324中,且將用于第二處理程序的數(shù)據(jù)存儲在地址范圍326中。在一個實例中,將用于第一處理程序的數(shù)據(jù)存儲在對應(yīng)于dram 304中的物理存儲器所存儲元數(shù)據(jù)320、322的地址范圍中。在一個實例中,計算機系統(tǒng)為計算機系統(tǒng)120或300。
139.在一個實施例中,一種方法包括:由計算機系統(tǒng)的處理裝置(例如圖3的處理裝置310)存取地址空間中的存儲器,其中所述計算機系統(tǒng)的存儲器裝置由所述處理裝置使用所述地址空間中的地址存??;存儲使所述地址空間的第一地址范圍與第一存儲器裝置(例如
dram 304)相關(guān)聯(lián)且使所述地址空間的第二地址范圍與第二存儲器裝置(例如nvram 306)相關(guān)聯(lián)的元數(shù)據(jù)(例如元數(shù)據(jù)320及/或322),其中所述第一存儲器裝置的第一時延不同于所述第二存儲器裝置的第二時延;及基于所存儲元數(shù)據(jù)將所述第一地址范圍分配給在所述計算機系統(tǒng)上執(zhí)行的應(yīng)用程序(例如應(yīng)用程序312)。
140.在一個實施例中,將所述第一地址范圍分配給所述應(yīng)用程序是響應(yīng)于所述應(yīng)用程序的請求而進行。
141.在一個實施例中,所述方法進一步包括:響應(yīng)于所述應(yīng)用程序的第一請求,提供所述第一時延大于所述第二時延的指示;基于所述指示接收由所述應(yīng)用程序提出的第二請求;及響應(yīng)于接收到所述第二請求,將所述第二地址范圍分配給所述應(yīng)用程序。
142.在一個實施例中,所述第一時延小于所述第二時延,且將所述元數(shù)據(jù)存儲在所述第一存儲器裝置中。
143.在一個實施例中,所述計算機系統(tǒng)使用存儲器總線來存取所述第一存儲器裝置及所述第二存儲器裝置,且其中將所述元數(shù)據(jù)存儲在所述第二存儲器裝置中。
144.在一個實施例中,將所述元數(shù)據(jù)存儲在所述第一存儲器裝置中,且所述方法進一步包括將所述元數(shù)據(jù)的至少一部分載入到緩沖器(例如轉(zhuǎn)換后備緩沖器318)中,其中所述處理裝置查詢所述緩沖器以確定對應(yīng)于所述第一地址范圍中的虛擬地址的物理地址。
145.在一個實施例中,所述計算機系統(tǒng)為片上系統(tǒng)裝置,且所述緩沖器為轉(zhuǎn)換后備緩沖器。
146.在一個實施例中,所述方法進一步包括:將所述第一存儲器裝置及所述第二存儲器裝置的存儲器特性提供到所述應(yīng)用程序;其中將所述第一地址范圍分配給所述應(yīng)用程序是響應(yīng)于由所述應(yīng)用程序基于所提供存儲器特性提出的請求。
147.在一個實施例中,所述方法進一步包括從所述應(yīng)用程序接收所請求時延,其中將所述第一地址范圍分配給所述應(yīng)用程序是進一步基于所述所請求時延。
148.在一個實施例中,所述方法進一步包括確定與所述應(yīng)用程序相關(guān)聯(lián)的優(yōu)先級,其中將所述第一地址范圍分配給所述應(yīng)用程序是進一步基于所述優(yōu)先級。
149.在一個實施例中,所述第一時延小于所述第二時延;在將所述第一地址范圍分配給所述應(yīng)用程序之前,將所述第二地址范圍分配給所述應(yīng)用程序;且將所述第一地址范圍分配給所述應(yīng)用程序是響應(yīng)于確定與所述應(yīng)用程序相關(guān)聯(lián)的優(yōu)先級的增加而進行。
150.在一個實施例中,確定與所述應(yīng)用程序相關(guān)聯(lián)的所述優(yōu)先級的所述增加是基于關(guān)于所述地址空間中的所述應(yīng)用程序的數(shù)據(jù)存取的一或多個觀察。
151.在一個實施例中,所述方法進一步包括由所述處理裝置確定與所述存儲器裝置相關(guān)聯(lián)的時延,其中存儲所述元數(shù)據(jù)進一步包括存儲經(jīng)確定時延。
152.在一個實施例中,一種系統(tǒng)包括:第一存儲器裝置;第二存儲器裝置;至少一個處理裝置;及存儲器,其含有指令,所述指令經(jīng)配置以指示所述至少一個處理裝置:存取由操作系統(tǒng)維護的地址空間中的存儲器,所述存取包含使用所述地址空間中的地址來存取所述第一存儲器裝置及所述第二存儲器裝置;存儲使所述地址空間的第一地址范圍與所述第一存儲器裝置相關(guān)聯(lián)且使所述地址空間的第二地址范圍與所述第二存儲器裝置相關(guān)聯(lián)的元數(shù)據(jù);及由所述操作系統(tǒng)基于所存儲元數(shù)據(jù)管理包含第一處理程序及第二處理程序的處理程序,其中將用于所述第一處理程序的數(shù)據(jù)存儲在所述第一存儲器裝置中,且將用于所述
第二處理程序的數(shù)據(jù)存儲在所述第二存儲器裝置中。
153.在一個實施例中,所述第一處理程序具有第一優(yōu)先級,所述第二處理程序具有第二優(yōu)先級,且響應(yīng)于確定所述第一優(yōu)先級高于所述第二優(yōu)先級而選擇所述第一存儲器裝置以存儲用于所述第一處理程序的所述數(shù)據(jù)。
154.在一個實施例中,所述第一處理程序?qū)?yīng)于第一應(yīng)用程序;所述指令經(jīng)進一步配置以指示所述至少一個處理裝置從所述第一應(yīng)用程序接收指示待用于存儲數(shù)據(jù)的存儲器類型的請求;且基于所指示類型的存儲器選擇所述第一存儲器裝置以存儲用于所述第一處理程序的所述數(shù)據(jù)。
155.在一個實施例中,所述系統(tǒng)進一步包括緩沖器以存儲所述元數(shù)據(jù),其中所述操作系統(tǒng)從所述第一處理程序接收所述第一地址范圍中的虛擬地址,且存取所述緩沖器以確定所述第一存儲器裝置的對應(yīng)于所述虛擬地址的物理地址。
156.在一個實施例中,所述第一存儲器裝置的讀取時延小于所述第二存儲器裝置的讀取時延,且所述指令經(jīng)進一步配置以指示所述至少一個處理裝置將所述元數(shù)據(jù)存儲在所述第一存儲器裝置中。
157.在一個實施例中,所述系統(tǒng)進一步包括存儲器管理單元(例如存儲器管理單元316),其經(jīng)配置以在存取用于所述第一處理程序的存儲的數(shù)據(jù)時將所述第一地址范圍中的虛擬地址映射到所述第一存儲器裝置中的物理地址。
158.在一個實施例中,一種非暫時性機器可讀存儲媒體存儲指令,所述指令在至少一個處理裝置上執(zhí)行時使得所述至少一個處理裝置至少:存取地址空間中的存儲器,其中由所述至少一個處理裝置使用所述地址空間中的地址來存取計算機系統(tǒng)的存儲器裝置;存儲使所述地址空間的第一地址范圍與第一存儲器裝置相關(guān)聯(lián)且使所述地址空間的第二地址范圍與第二存儲器裝置相關(guān)聯(lián)的元數(shù)據(jù);將第一數(shù)據(jù)提供到在所述計算機系統(tǒng)上執(zhí)行的應(yīng)用程序,所述第一數(shù)據(jù)指示所述第一存儲器裝置的第一時延小于所述第二存儲器裝置的第二時延;響應(yīng)于將所述第一數(shù)據(jù)提供到所述應(yīng)用程序,從所述應(yīng)用程序接收將與所述應(yīng)用程序相關(guān)聯(lián)的第二數(shù)據(jù)存儲在所述第一存儲器裝置中的請求;響應(yīng)于所述應(yīng)用程序的存儲所述第二數(shù)據(jù)的請求,查詢所存儲元數(shù)據(jù)以提供結(jié)果;及基于所述結(jié)果將所述第二數(shù)據(jù)存儲在所述第一存儲器裝置中。
159.圖7為可操作本發(fā)明的實施例的實例計算機系統(tǒng)的框圖。圖7說明計算機系統(tǒng)600的實例機器,其內(nèi)可執(zhí)行用于使得機器進行本文中所論述的方法中的任何一或多者的指令集。在一些實施例中,計算機系統(tǒng)600可對應(yīng)于主機系統(tǒng)(例如圖1的計算機系統(tǒng)120),所述主機系統(tǒng)包含、耦合到或利用存儲器子系統(tǒng)(例如圖1的存儲器子系統(tǒng)110),或可用于進行元數(shù)據(jù)組件113的操作(例如執(zhí)行指令以進行對應(yīng)于參考圖1至6所描述的元數(shù)據(jù)組件113的操作)。在替代性實施例中,機器可連接(例如網(wǎng)絡(luò)連接)到lan、企業(yè)內(nèi)部網(wǎng)絡(luò)、企業(yè)間網(wǎng)絡(luò)及/或因特網(wǎng)中的其它機器。機器可操作于主從式網(wǎng)絡(luò)環(huán)境中的服務(wù)器或客戶端機器的容量中、操作為同級間(或分布式)網(wǎng)絡(luò)環(huán)境中的同級機器,或操作為云端計算基礎(chǔ)設(shè)施或環(huán)境中的服務(wù)器或客戶端機器。
160.機器可為個人計算機(pc)、平板pc、機頂盒(stb)、個人數(shù)字助理(pda)、蜂窩式電話、網(wǎng)絡(luò)設(shè)備、服務(wù)器、網(wǎng)絡(luò)路由器、開關(guān)或橋、物聯(lián)網(wǎng)(iot)裝置,或能夠執(zhí)行指定待由機器采取的動作的指令集(依序或以其它方式)的任何機器。另外,盡管說明單一機器,但術(shù)語“機器”還應(yīng)視為包含個別地或聯(lián)合地執(zhí)行指令集(或多個集)以進行本文中所論述的方法中的任何一或多者的機器的任何集合。
161.實例計算機系統(tǒng)600包含處理裝置602、主存儲器604(例如只讀存儲器(rom)、閃存存儲器、動態(tài)隨機存取存儲器(dram)(例如同步dram(sdram)或rambus dram(rdram))、靜態(tài)隨機存取存儲器(sram)等)及數(shù)據(jù)存儲系統(tǒng)618,其經(jīng)由總線630(其可包含多個總線)彼此通信。
162.處理裝置602表示一或多個通用處理裝置,例如微處理器、中央處理單元或其類似者。更特定而言,處理裝置可為復(fù)雜指令集計算(cisc)微處理器、精簡指令集計算(risc)微處理器、超長指令字(vliw)微處理器,或?qū)嵤┢渌噶罴奶幚砥?,或?qū)嵤┲噶罴慕M合的處理器。處理裝置602也可為一或多個專用處理裝置,例如專用集成電路(asic)、現(xiàn)場可編程門陣列(fpga)、數(shù)字信號處理器(dsp)、網(wǎng)絡(luò)處理器或其類似者。處理裝置602經(jīng)配置以執(zhí)行用于進行本文中所論述的操作及步驟的指令626。計算機系統(tǒng)600可進一步包含網(wǎng)絡(luò)接口裝置608以經(jīng)由網(wǎng)絡(luò)620通信。
163.數(shù)據(jù)存儲系統(tǒng)618可包含機器可讀存儲媒體624(也稱為計算機可讀媒體),其上存儲有體現(xiàn)本文中所描述的方法或功能中的任何一或多者的一或多個指令626集或軟件。在其由計算機系統(tǒng)600執(zhí)行期間,指令626還可完全或至少部分地駐存在主存儲器604內(nèi)及/或處理裝置602內(nèi),主存儲器604及處理裝置602也構(gòu)成機器可讀存儲媒體。機器可讀存儲媒體624、數(shù)據(jù)存儲系統(tǒng)618及/或主存儲器604可對應(yīng)于圖1的存儲器子系統(tǒng)110。
164.在一個實施例中,指令626包含實施對應(yīng)于元數(shù)據(jù)組件113(例如參考圖1至6所描述的元數(shù)據(jù)組件113)的功能性的指令。盡管在實例實施例中將機器可讀存儲媒體624展示為單一媒體,但術(shù)語“機器可讀存儲媒體”應(yīng)視為包含存儲一或多個指令集的單一媒體或多個媒體。
165.與存儲器類型相關(guān)的頁表
166.現(xiàn)在下文描述與將虛擬頁的虛擬地址映射到不同存儲器類型的存儲器裝置中的物理地址的頁表項相關(guān)的各種實施例。以下描述的一般性不受上文所描述的各種實施例限制。
167.在使用不同類型的物理存儲器裝置以用于存儲數(shù)據(jù)的計算機系統(tǒng)的先前存儲器管理單元中,存在mmu未察覺如何將用于各種虛擬頁的存儲器物理地映射到不同類型的存儲器裝置(例如將虛擬頁映射到dram還是nvram或是閃存存儲器中的物理地址)的技術(shù)問題。舉例來說,mmu未存儲關(guān)于如何將每一虛擬頁映射到不同類型的存儲器裝置的數(shù)據(jù)。此外,存儲器類型不了解僅為一個限制。即使在均勻存儲器系統(tǒng)中(例如在numa架構(gòu)中),不同物理地址也可具有存取特性的差異(mmu未察覺所述差異)。
168.在一個實例中,如果用于處理程序的虛擬頁比其它存儲器裝置(例如dram)明顯更慢地映射到物理存儲器裝置(例如閃存存儲器),那么所述處理程序可能因不能快速存取數(shù)據(jù)而被迫緩慢運行。舉例來說,所述處理程序可能需要來自主存儲器的虛擬頁以便繼續(xù)處理。如果所需虛擬頁實際上存儲在緩慢物理存儲器裝置中,那么處理程序在等待對虛擬頁進行存取時明顯延遲。
169.下文所描述的各種實施例提供對以上技術(shù)問題中的一或多者的技術(shù)解決方案。在一個實施例中,一種方法包含:由至少一個處理裝置(例如cpu及/或mmu)使虛擬頁與第一存
儲器類型相關(guān)聯(lián);生成頁表項以將所述虛擬頁的虛擬地址映射到所述第一存儲器類型的第一存儲器裝置中的物理地址;及使用所述頁表項將所述虛擬頁存儲在所述第一存儲器裝置中的所述物理地址處。在一個實例中,已將頁表項復(fù)制到存儲器管理單元及/或微處理器的高速緩存。在一個實例中,已將頁表項復(fù)制到由存儲器管理單元在將虛擬頁存儲在中央處理單元的主存儲器中時使用的轉(zhuǎn)換后備緩沖器(tlb)。
170.在一個實施例中,移動裝置的操作系統(tǒng)管理與存儲器類型相關(guān)聯(lián)的虛擬頁的位置。舉例來說,存儲器類型可為dram、nvram或nand閃存。當虛擬頁與特定存儲器類型相關(guān)聯(lián)時,操作系統(tǒng)生成頁表項以將虛擬頁的邏輯地址映射到對應(yīng)存儲器類型。處理器可請求通過改變其存儲器類型將存儲器頁傳送到不同類型的存儲器。
171.在一個實例中,在計算裝置上執(zhí)行的應(yīng)用程序或其它軟件已將識別應(yīng)用程序或其它軟件需要用于處理的存儲器類型的信息提供到操作系統(tǒng)。作為響應(yīng),操作系統(tǒng)使應(yīng)用程序或軟件的一或多個虛擬頁與對應(yīng)于由所述應(yīng)用程序或軟件所請求的所識別存儲器類型的物理存儲器裝置相關(guān)聯(lián)。舉例來說,響應(yīng)于由應(yīng)用程序提出的對nvram存儲器類型的請求,將虛擬頁分配給應(yīng)用程序。對應(yīng)于所分配虛擬頁的物理地址用于將數(shù)據(jù)存儲在nvram裝置(例如交叉點存儲器裝置)中。
172.圖8說明根據(jù)一些實施例的使用一或多個頁表804、806來存取存儲器總線812上的存儲器裝置的實例計算機系統(tǒng)800。存儲器裝置可包含存儲器子系統(tǒng)802的dram 304、nvram 306及nand閃存308。
173.計算機系統(tǒng)800為圖3的計算機系統(tǒng)300的實例。存儲器子系統(tǒng)802為圖3的存儲器子系統(tǒng)302的實例。存儲器總線812為圖2的存儲器總線203的實例。
174.操作系統(tǒng)808在處理裝置310上運行。操作系統(tǒng)808將處理裝置310的主存儲器分配給各種應(yīng)用程序。這些應(yīng)用程序包含應(yīng)用程序312,其具有存儲器類型314。在一個實例中,存儲器類型314嵌入于應(yīng)用程序312的代碼中。在一個實例中,由不同計算裝置(未展示)將存儲器類型314提供到處理裝置310。在一個實例中,不同計算裝置為提供與由應(yīng)用程序312提出的對存儲器分配的請求相關(guān)聯(lián)的存儲器類型314的服務(wù)器。
175.操作系統(tǒng)808使用存儲器管理單元(mmu)316管理計算機系統(tǒng)800的存儲器。在一個實施例中,將與包含應(yīng)用程序312的應(yīng)用程序相關(guān)聯(lián)的虛擬頁映射到駐存于存儲器子系統(tǒng)802中的物理存儲器。mmu 316存取頁表項以確定存儲器中的對應(yīng)于應(yīng)用程序需要存取的虛擬頁的物理地址。
176.可將頁表項存儲在頁表804及/或頁表806中。在一個實例中,mmu 316通過提供對應(yīng)于虛擬頁的虛擬地址來查詢頁表804、806。來自查詢的結(jié)果為存儲器裝置(例如dram 304)的物理地址。
177.在一個實施例中,將頁表804存儲在dram 304中。在一個實施例中,將頁表806存儲在計算機系統(tǒng)800的存儲器中。在一個實例中,當頁表項未存在于計算機系統(tǒng)800中時,mmu 316存取頁表804。在一個實例中,頁表項在頁表804與頁表806之間分裂。在一個實例中,頁表806中的頁表項對應(yīng)于具有較高優(yōu)先級的處理程序。在一個實例中,處理裝置310基于由處理裝置310接收到的對應(yīng)于應(yīng)用程序的存儲器類型為對應(yīng)于應(yīng)用程序的處理程序指配優(yōu)先級。
178.在一個實施例中,mmu 316使用頁表804及元數(shù)據(jù)322兩者以用于存儲器管理。在一
個實例中,mmu 316使用元數(shù)據(jù)322來選擇用于存儲對應(yīng)于虛擬頁的數(shù)據(jù)的存儲器裝置。選定存儲器裝置可對應(yīng)于所請求存儲器類型(例如存儲器類型314)。在另一實施例中,mmu 316使用頁表806及元數(shù)據(jù)320兩者以用于存儲器管理。
179.在一個實施例中,將來自頁表804、806的頁表項中的一些復(fù)制到轉(zhuǎn)換后備緩沖器(tlb)810。當將虛擬地址映射到物理地址時,mmu 316首先檢查用于對應(yīng)于虛擬地址的頁表項的tlb 810。tlb 810中的頁表項還可包含從元數(shù)據(jù)320、322復(fù)制的數(shù)據(jù)。
180.在一個實施例中,應(yīng)用程序312請求由處理裝置310進行存儲器的分配。作為響應(yīng),操作系統(tǒng)808使用mmu 316來生成將應(yīng)用程序312的虛擬頁的虛擬地址映射到存儲器裝置中的物理地址的頁表項。存儲器裝置經(jīng)選擇具有存儲器類型314。在一個實施例中,使用元數(shù)據(jù)322來選擇存儲器裝置。在一個實施例中,在生成頁表項之后,將頁表項的復(fù)本存儲在tlb 810中及/或更新元數(shù)據(jù)320、322。
181.在一個實施例中,處理裝置310確定與應(yīng)用程序312相關(guān)聯(lián)的改變。在一個實例中,所述改變?yōu)橛蓱?yīng)用程序312進行的一或多個功能的優(yōu)先級的改變。在一個實例中,所述改變?yōu)榕c應(yīng)用程序312相關(guān)聯(lián)的上下文(例如安全性上下文等)的改變。
182.響應(yīng)于確定改變,操作系統(tǒng)808使應(yīng)用程序312的一或多個虛擬頁與新存儲器類型相關(guān)聯(lián)。舉例來說,應(yīng)用程序312的存儲器類型可響應(yīng)于確定應(yīng)用程序312的較高優(yōu)先級而由nvram改變?yōu)閐ram。響應(yīng)于對新存儲器類型的改變,更新頁表項以將虛擬頁的虛擬地址映射到新存儲器類型的新存儲器裝置中的物理地址。接著,mmu 316使用經(jīng)更新頁表項將虛擬頁從當前使用的存儲器裝置傳送到新存儲器裝置。
183.在一個實施例中,計算機系統(tǒng)800及/或處理裝置310為片上系統(tǒng)(soc)。在一個實例中,soc可為或包含集成計算裝置的任何兩個或更多個組件的集成電路或芯片。兩個或更多個組件可包含中央處理單元(cpu)、圖形處理單元(gpu)、存儲器、輸入/輸出端口及輔助存儲件中的至少一或多者。舉例來說,soc可包含單一電路裸片上的cpu、gpu、圖形及存儲器接口、硬盤、usb連接件、隨機存取存儲器、只讀存儲器、輔助存儲件或其任何組合。此外,在處理器芯片為soc的情況下,soc可至少包含cpu及/或gpu。
184.在soc的一個實例中,兩個或更多個組件可嵌入于單一襯底或微芯片(芯片)上。大體而言,soc不同于常規(guī)的基于母板的架構(gòu),不同之處在于soc將所有其組件集成到單一集成電路中;而母板容納及連接可拆卸或可更換組件。由于將兩個或更多個組件集成于單一襯底或芯片上,因此soc比具有等效功能性的多芯片設(shè)計消耗更少功率且占據(jù)小得多的面積。在一些實施例中,本文中所描述的存儲器系統(tǒng)或子系統(tǒng)可與移動計算裝置中(例如智能型電話中)、嵌入式系統(tǒng)中及物聯(lián)網(wǎng)(iot)裝置中的soc連接或為所述soc的一部分。在一個實施例中,存儲器子系統(tǒng)802可為soc或包含于soc中。此外,在存儲器子系統(tǒng)802為soc的情況下,soc可至少包含數(shù)據(jù)處理單元。
185.圖9說明根據(jù)一些實施例的具有頁表項902、904的實例頁表900。每一頁表項902、904包含虛擬地址、對應(yīng)物理地址及存儲器類型。在一個實例中,存儲器類型為存儲器類型314。在一個實例中,存儲器類型314用以響應(yīng)于對處理程序的主存儲器的新分配或分配改變而更新頁表項。在各種實施例中,每一項902、904可進一步包含處理程序識別符、使用數(shù)據(jù)及/或存儲器裝置識別符。頁表900為頁表804或806的實例。
186.在一個實施例中,對于每一頁表項,虛擬地址對應(yīng)于例如應(yīng)用程序312的應(yīng)用程序
的虛擬頁。物理地址對應(yīng)于存儲器子系統(tǒng)802的存儲器裝置中的位置。存儲器類型對應(yīng)于物理地址處的存儲器裝置的類型。
187.在一個實施例中,每一頁表項的處理程序識別符用以識別在正使用虛擬地址處的虛擬頁的處理裝置310上執(zhí)行的處理程序。舉例來說,處理程序識別符為在計算機系統(tǒng)800中運行的每一處理程序的獨特識別符。
188.在一個實施例中,每一頁表項的使用數(shù)據(jù)可對應(yīng)于關(guān)于與存儲在頁表項的虛擬地址處的虛擬頁中的數(shù)據(jù)相關(guān)聯(lián)的存取或其它使用的數(shù)據(jù)。在一個實例中,使用數(shù)據(jù)涉及虛擬頁的使用模式。在一個實例中,使用模式為存取虛擬頁中的數(shù)據(jù)的頻率。在一個實例中,存取的頻率可為讀取及/或?qū)懭氪嫒〉念l率。在一個實例中,使用數(shù)據(jù)涉及虛擬頁中的數(shù)據(jù)的最后使用時間。
189.在一個實施例中,每一頁表項可包含存儲器裝置識別符。在一個實例中,存儲器裝置識別符獨特地識別存儲對應(yīng)于虛擬地址的數(shù)據(jù)的物理存儲器裝置。在一個實例中,存儲器裝置識別符獨特地對應(yīng)于dram 304或nvram 306。
190.在一個實施例中,每一頁表項可進一步包含元數(shù)據(jù)320及/或322的至少一部分。在一個實例中,所包含元數(shù)據(jù)可為物理存儲器裝置的地址范圍。
191.圖10展示根據(jù)一些實施例的用于生成頁表項以將虛擬頁的虛擬地址映射到不同存儲器類型的存儲器裝置中的物理地址的方法。舉例來說,圖10的方法可實施于圖8的系統(tǒng)或圖7的計算機系統(tǒng)600中。
192.圖10的方法可由處理邏輯進行,所述處理邏輯可包含硬件(例如處理裝置、電路系統(tǒng)、專用邏輯、可編程邏輯、微碼、裝置的硬件、集成電路等)、軟件(例如在處理裝置上運行或執(zhí)行的指令),或其組合。在一些實施例中,圖10的方法至少部分地由一或多個處理裝置(例如圖8的處理裝置310)進行。
193.盡管以特定順序或次序展示,但除非另有規(guī)定,否則可修改所述處理程序的次序。因此,所說明實施例應(yīng)僅理解為實例,且所說明處理程序可以不同次序進行,且一些處理程序可并行進行。另外,可在各種實施例中省略一或多個處理程序。因此,在每一實施例中并非所有處理程序都是必需的。其它處理程序流程是可能的。
194.在框1001處,使虛擬頁與第一存儲器類型相關(guān)聯(lián)。在一個實例中,第一存儲器類型為dram、nvram或閃存存儲器。在一個實例中,虛擬頁對應(yīng)于應(yīng)用程序312。在一個實例中,虛擬頁對應(yīng)于響應(yīng)于對由處理裝置310使用的主存儲器的分配的請求而分配給應(yīng)用程序312的存儲器。
195.在框1003處,生成頁表項。頁表項將虛擬頁的虛擬地址映射到第一存儲器類型的存儲器裝置中的物理地址。在一個實例中,頁表項駐存于頁表804或806中。在一個實例中,存儲器裝置為dram 304、nvram 306或nand閃存308。
196.在框1005處,使用頁表項,將虛擬頁存儲在存儲器裝置中的物理地址處。在一個實例中,存儲器管理單元316使用在轉(zhuǎn)換后備緩沖器810中高速緩存的頁表項存儲虛擬頁。
197.在一個實施例中,一種方法包括:由至少一個處理裝置(例如處理裝置310及/或存儲器管理單元316)使一虛擬頁與第一存儲器類型相關(guān)聯(lián);生成頁表項(例如頁表項902)以將所述虛擬頁的虛擬地址映射到所述第一存儲器類型的第一存儲器裝置(例如dram304)中的物理地址;及使用所述頁表項將所述虛擬頁存儲在所述第一存儲器裝置中的所述物理地
址處。
198.在一個實施例中,所述方法進一步包括:由至少一個處理裝置使所述虛擬頁與第二存儲器類型相關(guān)聯(lián);更新所述頁表項以將所述虛擬頁的所述虛擬地址映射到所述第二存儲器類型的第二存儲器裝置(例如nvram 306)中的物理地址;及使用經(jīng)更新頁表項將所述虛擬頁從所述第一存儲器裝置傳送到所述第二存儲器裝置。
199.在一個實施例中,操作系統(tǒng)(例如操作系統(tǒng)808)在所述至少一個處理裝置上運行,且生成所述頁表項是由所述操作系統(tǒng)響應(yīng)于使所述虛擬頁與所述第一存儲器類型相關(guān)聯(lián)而進行。
200.在一個實施例中,使所述虛擬頁與所述第一存儲器類型相關(guān)聯(lián)是響應(yīng)于由操作系統(tǒng)從應(yīng)用程序(例如應(yīng)用程序312)接收到的請求而進行。
201.在一個實施例中,向所述第一存儲器類型(例如存儲器類型314)提供來自所述應(yīng)用程序的所述請求。
202.在一個實施例中,所述方法進一步包括由計算裝置的操作系統(tǒng)管理存儲在存儲器裝置中的虛擬頁的物理位置,其中所述存儲器裝置包含所述第一存儲器裝置及第二存儲器類型的第二存儲器裝置,且其中所述第一存儲器裝置的時延小于所述第二存儲器裝置的時延。
203.在一個實施例中,并非時延及/或除時延之外的差異可存在于第一存儲器裝置與第二存儲器裝置之間。在一個實例中,第一存儲器裝置的功率及/或性能特性不同于第二存儲器裝置,所述第二存儲器裝置具有低功率存儲器及/或更持久存儲器。不同存儲器裝置或類型或存儲器之間的存儲器特性的差異的實例可包含性能、功率、耐久性、錯誤率及/或其組合。在一些情況下,例如,這些差異可存在于相同存儲器類型的裝置之間(例如錯誤率針對用于存儲處理程序數(shù)據(jù)的相同存儲器類型的不同芯片而改變)。
204.在一個實施例中,所述第一存儲器類型為動態(tài)隨機存取存儲器,且所述第二存儲器類型為非易失性隨機存取存儲器或閃存存儲器。
205.在一個實施例中,所述方法進一步包括:由操作系統(tǒng)監(jiān)視在所述至少一個處理裝置上運行的應(yīng)用程序;及基于所述監(jiān)視更新所述頁表項以將所述虛擬頁的所述虛擬地址映射到第二存儲器類型的第二存儲器裝置中的物理地址。
206.在一個實施例中,所述方法進一步包括:確定與所述至少一個處理裝置相關(guān)聯(lián)的操作的上下文;基于經(jīng)確定上下文選擇第二存儲器類型;及響應(yīng)于選擇所述第二存儲器類型,更新所述頁表項以將所述虛擬頁的所述虛擬地址映射到所述第二存儲器類型的第二存儲器裝置中的物理地址。
207.在一個實施例中,所述方法進一步包括:由所述至少一個處理裝置使所述虛擬頁與第二存儲器類型相關(guān)聯(lián);響應(yīng)于使所述虛擬頁與所述第二存儲器類型相關(guān)聯(lián),更新轉(zhuǎn)換后備緩沖器(例如tlb 810)中的映射數(shù)據(jù);及由存儲器管理單元基于存取所述轉(zhuǎn)換后備緩沖器中的經(jīng)更新映射數(shù)據(jù)將所述虛擬頁從所述第一存儲器裝置傳送到第二存儲器裝置。
208.在一個實施例中,處理程序正在所述至少一個處理裝置上執(zhí)行,且所述頁表項包括使用所述虛擬頁的第一處理程序的處理程序識別符。
209.在一個實施例中,所述頁表項包括關(guān)于在所述至少一個處理裝置上運行的一或多個應(yīng)用程序的使用模式的數(shù)據(jù)。
210.在一個實施例中,關(guān)于所述使用模式的所述數(shù)據(jù)為使用頻率或最后使用時間中的至少一者。
211.在一個實施例中,一種系統(tǒng)包括:第一存儲器裝置;頁表,其存儲將虛擬地址映射到不同存儲器類型的存儲器裝置中的物理地址的頁表項,所述存儲器裝置包含所述第一存儲器裝置;至少一個處理裝置;及存儲器,其含有指令,所述指令經(jīng)配置以指示所述至少一個處理裝置:確定虛擬頁與第一存儲器類型的關(guān)聯(lián);確定所述第一存儲器裝置對應(yīng)于所述第一存儲器類型;及生成頁表項以將所述虛擬頁的虛擬地址映射到所述第一存儲器裝置的第一物理地址。
212.在一個實施例中,所述至少一個處理裝置使用具有存儲在所述存儲器裝置上的數(shù)據(jù)的主存儲器,且其中確定所述虛擬頁與所述第一存儲器類型的所述關(guān)聯(lián)是響應(yīng)于由應(yīng)用程序提出的對所述主存儲器的分配的請求而進行。
213.在一個實施例中,所述指令經(jīng)進一步配置以指示所述至少一個處理裝置:存儲使主存儲器中的地址范圍與所述存儲器裝置中的物理地址相關(guān)聯(lián)的元數(shù)據(jù)(例如元數(shù)據(jù)320、322);其中確定所述第一存儲器裝置對應(yīng)于所述第一存儲器類型是基于所存儲元數(shù)據(jù)。
214.在一個實施例中,所述指令經(jīng)進一步配置以指示所述至少一個處理裝置使用所述頁表項將所述虛擬頁存儲在所述第一存儲器裝置中的所述第一物理地址處。
215.在一個實施例中,所述系統(tǒng)進一步包括存儲器管理單元(例如存儲器管理單元316)及轉(zhuǎn)換后備緩沖器,其中所述指令經(jīng)進一步配置以指示所述至少一個處理裝置:基于與所述虛擬頁相關(guān)聯(lián)的存儲器類型從所述第一存儲器類型到第二存儲器類型的改變來更新所述轉(zhuǎn)換后備緩沖器中的映射數(shù)據(jù);及由所述存儲器管理單元基于經(jīng)更新映射數(shù)據(jù)將所述虛擬頁從所述第一存儲器裝置傳送到所述第二存儲器類型的第二存儲器裝置。
216.在一個實施例中,存儲器類型的所述改變是響應(yīng)于由在所述至少一個處理裝置上執(zhí)行的應(yīng)用程序提出的請求而進行,或響應(yīng)于由所述至少一個處理裝置提出的處理程序或應(yīng)用程序的優(yōu)先級已改變的確定而進行。
217.在一個實施例中,一種非暫時性機器可讀存儲媒體存儲指令,所述指令在至少一個處理裝置上執(zhí)行時使得所述至少一個處理裝置至少:使虛擬頁與第一存儲器類型相關(guān)聯(lián);生成頁表項以將所述虛擬頁的虛擬地址映射到所述第一存儲器類型的第一存儲器裝置中的物理地址;及使用所述頁表項將所述虛擬頁存儲在所述第一存儲器裝置中的所述物理地址處。
218.將數(shù)據(jù)綁定到命名空間
219.現(xiàn)在下文描述與將數(shù)據(jù)綁定到具有不同存儲器類型的物理存儲器的存儲器系統(tǒng)中的命名空間相關(guān)的各種實施例。以下描述的一般性不受上文所描述的各種實施例限制。
220.在先前存儲器系統(tǒng)中,由操作系統(tǒng)使得應(yīng)用程序可存取主存儲器,且主存儲器是從單一邏輯地址空間(例如從地址空間中的虛擬地址)分配。特定而言,操作系統(tǒng)未使得可由應(yīng)用程序存取任何映射控制,且因此應(yīng)用程序無法控制使用哪一類型的存儲器來存儲數(shù)據(jù)。實情為,操作系統(tǒng)及/或處理器經(jīng)由頁表及轉(zhuǎn)換后備緩沖器控制映射。頁表定義邏輯地址的頁到計算機系統(tǒng)的存儲器裝置中的物理存儲器單元的頁之間的映射。頁表的總大小相對較大。因此,將大部分頁表存儲在存儲器(例如主存儲器的dram)中。在處理器/存儲器控制器的轉(zhuǎn)換后備緩沖器中高速緩存來自頁表的當前正用以尋找物理存儲器地址的數(shù)據(jù)的
一部分。
221.先前存儲器系統(tǒng)的前述情形產(chǎn)生某一數(shù)據(jù)由于存儲數(shù)據(jù)的實際物理存儲器裝置的時延較大而不可由應(yīng)用程序及時存取的技術(shù)問題。因此,可長時間保持應(yīng)用程序的執(zhí)行。在一些情況下,這種延遲可導(dǎo)致需要及時響應(yīng)或其它動作的系統(tǒng)故障。舉例來說,實時控制系統(tǒng)可因來自主存儲器的緩慢數(shù)據(jù)存取而發(fā)生故障。在一個實例中,針對自主車輛的導(dǎo)航的控制可因主存儲器的存儲關(guān)鍵數(shù)據(jù)的部分的過度時延而發(fā)生故障。
222.應(yīng)用程序不能控制主存儲器使用到某些物理存儲器裝置的映射還阻止了應(yīng)用程序選擇具有較高可靠性的存儲器。這形成關(guān)鍵數(shù)據(jù)可因存儲器的功能性故障(例如來自具有較高故障率的物理存儲器裝置的數(shù)據(jù)存取的故障)而丟失的技術(shù)問題。
223.下文所描述的各種實施例提供對以上技術(shù)問題中的一或多者的技術(shù)解決方案。在一個實施例中,應(yīng)用程序通過指定待存儲數(shù)據(jù)的存儲器類型來管理到由操作系統(tǒng)用于隨機存儲器存取的物理存儲器裝置的映射。應(yīng)用程序使用操作系統(tǒng)來分配存儲器的一部分(例如基于由應(yīng)用程序?qū)Σ僮飨到y(tǒng)提出的請求),且基于存儲器單元的存儲器地址來使用所指定存儲器類型的存儲器單元。在一個實例中,操作系統(tǒng)告知應(yīng)用程序?qū)?yīng)于所指定存儲器類型的虛擬存儲器地址范圍。
224.在一個實施例中,由操作系統(tǒng)經(jīng)由所述操作系統(tǒng)管理的命名空間表進行存取數(shù)據(jù)。在一個實施例中,命名空間表將名稱指配給主存儲器中的存儲器地址。在一個實施例中,將名稱指配給由應(yīng)用程序使用的主存儲器的地址空間中的一系列虛擬地址。在一個實施例中,通過命名空間識別符識別命名空間(例如使用任意識別符命名空間a、命名空間b及命名空間c,其中每一識別符與不同類型的存儲器相關(guān)聯(lián))。
225.在一個實施例中,將命名空間用于存儲器存取。每一命名空間為對其中定義存儲器地址的存儲器單元集合的命名邏輯參考。應(yīng)用程序從命名空間分配存儲器。操作系統(tǒng)提供可由應(yīng)用程序調(diào)用以將命名空間綁定及/或重新綁定到特定類型的存儲器(例如dram、nvram、nand閃存)的服務(wù)。當將命名空間綁定到一個類型的存儲器時,操作系統(tǒng)調(diào)整一或多個頁表以將命名空間中的邏輯存儲器地址映射到計算機系統(tǒng)中的特定存儲器類型的物理存儲器單元。當經(jīng)由命名空間中的邏輯地址存取存儲器單元時,在處理器/存儲器控制器的轉(zhuǎn)換后備緩沖器中載入及高速緩存來自一或多個頁表的數(shù)據(jù)以用于轉(zhuǎn)換為物理存儲器地址。
226.在一個實施例中,命名空間創(chuàng)建于不同類型的存儲器裝置(例如dram、nvram及nand閃存)中。應(yīng)用程序可動態(tài)地改變數(shù)據(jù)集與命名空間之間的綁定以將數(shù)據(jù)移動到所要存儲器裝置。在一個實施例中,操作系統(tǒng)檢測綁定的改變且使得數(shù)據(jù)移動。在一個實施例中,操作系統(tǒng)使得存儲器管理單元更新頁表,使得將數(shù)據(jù)從當前使用的存儲器裝置移動到所要存儲器裝置。
227.在一個實施例中,存儲用于隨機存取作為主存儲器的數(shù)據(jù)是由各種虛擬地址范圍組織。虛擬地址范圍集合可與命名空間識別符相關(guān)聯(lián)。
228.在一個實施例中,操作系統(tǒng)的核心在固件及裝置驅(qū)動器的輔助下控制計算機系統(tǒng)中的所有硬件裝置。核心管理對隨機存取存儲器(ram)中的程序的存儲器存取,且確定哪些程序獲得對某些硬件資源的存取。
229.操作系統(tǒng)提供應(yīng)用程序與計算機系統(tǒng)的計算機硬件之間的接口。應(yīng)用程序基于由
操作系統(tǒng)管理的程序與硬件交互。操作系統(tǒng)還向應(yīng)用程序提供服務(wù)。當應(yīng)用程序執(zhí)行時,操作系統(tǒng)的核心創(chuàng)建處理程序。核心為處理程序指配存儲器空間及優(yōu)先級,將程序二進制碼載入到存儲器中,且啟動應(yīng)用程序的執(zhí)行。
230.在一個實施例中,由核心指配存儲器空間是至少部分基于從應(yīng)用程序提供的命名空間數(shù)據(jù)。在一個實例中,應(yīng)用程序提供對應(yīng)于存儲器類型的命名空間。作為響應(yīng),核心指配對應(yīng)于所述存儲器類型的物理存儲器裝置的存儲器空間。在一個實例中,核心使用虛擬存儲器定址(例如分頁或分段)來確定每一程序在任何給定時間可存取的存儲器。
231.圖11說明根據(jù)一些實施例的使用命名空間表1104將命名空間映射到計算機系統(tǒng)中的物理存儲器的不同存儲器類型的實例計算機系統(tǒng)。使用物理存儲器來提供可由計算機系統(tǒng)1100經(jīng)由存儲器總線812存取的隨機存取存儲器。存儲器子系統(tǒng)1102提供用作隨機存取存儲器且由處理裝置310使用存儲器管理單元316存取的物理存儲器。在一個實例中,計算機系統(tǒng)1100及存儲器子系統(tǒng)1102在相同集成電路(ic)芯片上或不同ic芯片上。在一個實例中,計算機系統(tǒng)1100及存儲器子系統(tǒng)1102各自為相同片上系統(tǒng)(soc)的部分。
232.計算機系統(tǒng)1100為圖8的計算機系統(tǒng)800的實例。存儲器子系統(tǒng)1102為圖8的存儲器子系統(tǒng)802的實例。
233.物理存儲器由不同存儲器類型的存儲器裝置(包含dram 304、nvram 306及nand閃存308)提供。在其它實施例中,可使用各種其它類型的存儲器及/或存儲器類型的其它組合。
234.每一存儲器裝置對應(yīng)于命名空間識別符。舉例來說,dram 304對應(yīng)于識別符“命名空間a”。nvram 306對應(yīng)于識別符“命名空間b”。nand閃存308對應(yīng)于識別符“命名空間c”。
235.在一個實施例中,每一存儲器裝置可存儲與其所指配命名空間相關(guān)聯(lián)的各種數(shù)據(jù)。相應(yīng)命名空間數(shù)據(jù)在圖11中指示為“命名空間a數(shù)據(jù)”、“命名空間b數(shù)據(jù)”及“命名空間c數(shù)據(jù)”。在一個實例中,命名空間數(shù)據(jù)包含命名空間識別符。在一個實例中,命名空間數(shù)據(jù)包含對應(yīng)于dram 304的物理地址范圍。在一個實例中,命名空間數(shù)據(jù)包含來自元數(shù)據(jù)320、322的數(shù)據(jù)的一部分。在一個實例中,命名空間數(shù)據(jù)包含來自頁表804的數(shù)據(jù)的一部分。
236.在一個實施例中,將命名空間表1104存儲在計算機系統(tǒng)1100的存儲器中。命名空間表1104提供命名空間識別符與存儲器類型之間的映射。舉例來說,命名空間識別符“命名空間a”映射到dram的存儲器類型。
237.在一個實施例中,當應(yīng)用程序312向處理裝置310提出對隨機存取存儲器的分配的請求時,操作系統(tǒng)808創(chuàng)建命名空間識別符,且使存儲器類型與命名空間識別符相關(guān)聯(lián)。更新命名空間表1104以存儲這種關(guān)聯(lián)。在一個實例中,存儲器類型為如由應(yīng)用程序312所提供的存儲器類型314。在一個實例中,操作系統(tǒng)808基于與應(yīng)用程序312相關(guān)聯(lián)的特性來確定存儲器類型。在一個實例中,操作系統(tǒng)808基于應(yīng)用程序312的優(yōu)先級確定存儲器類型。
238.在一個實施例中,應(yīng)用程序312將請求提供到與存儲器管理相關(guān)的操作系統(tǒng)808。所述請求包含與所識別數(shù)據(jù)相關(guān)聯(lián)或與所識別數(shù)據(jù)相關(guān)的命名空間識別符。響應(yīng)于接收到請求,操作系統(tǒng)808存取命名空間表1104以用于進行與所識別數(shù)據(jù)相關(guān)聯(lián)的一或多個各種動作或操作。在一個實例中,操作系統(tǒng)808將所識別數(shù)據(jù)從一個存儲器類型的現(xiàn)有存儲器裝置移動到對應(yīng)于接收到的命名空間識別符的另一存儲器類型的新存儲器裝置。在一個實例中,操作系統(tǒng)808對所識別數(shù)據(jù)進行一或多個操作,且將操作的結(jié)果存儲在與隨請求提供的
命名空間相關(guān)聯(lián)的存儲器類型中。在一個實例中,操作系統(tǒng)808將完成動作的確認提供到應(yīng)用程序312。
239.在一個實施例中,分配存儲器以供應(yīng)用程序312使用。從命名空間分配存儲器。在一個實例中,命名空間已存在于命名空間表1104中。在另一實例中,命名空間是響應(yīng)于對存儲器分配的請求而創(chuàng)建。將所創(chuàng)建命名空間存儲在命名空間表1104中。
240.將現(xiàn)有或新創(chuàng)建的命名空間綁定到存儲器類型。響應(yīng)于將命名空間綁定到存儲器類型,調(diào)整一或多個頁表以將邏輯存儲器地址及命名空間映射到所述存儲器類型的存儲器裝置。在一個實例中,響應(yīng)于將命名空間綁定到存儲器類型而更新頁表806及/或頁表804。
241.在一個實施例中,操作系統(tǒng)808創(chuàng)建用于存儲器裝置的命名空間。將數(shù)據(jù)綁定到命名空間。在一個實例中,通過虛擬地址范圍識別數(shù)據(jù)。響應(yīng)于將數(shù)據(jù)綁定到命名空間,將數(shù)據(jù)存儲在與所創(chuàng)建命名空間相關(guān)聯(lián)的存儲器裝置中。在一個實例中,將數(shù)據(jù)綁定到命名空間包含存儲命名空間的虛擬地址與存儲器裝置的物理地址之間的映射。
242.在一個實施例中,命名空間的一或多個虛擬地址對應(yīng)于由操作系統(tǒng)808使用頁表804管理的處理程序的虛擬頁。在一個實例中,頁表804包含將命名空間的虛擬地址映射到存儲器裝置的物理地址的頁表項。
243.圖12說明根據(jù)一些實施例的具有將命名空間映射到計算機系統(tǒng)的不同類型的存儲器的記錄1202、1204、1206的實例命名空間表1200。在一個實例中,計算機系統(tǒng)為計算機系統(tǒng)1100。命名空間表1200為命名空間表1104的實例。
244.每一記錄包含與存儲器類型(例如dram或nvram)相關(guān)聯(lián)的命名空間識別符(例如命名空間a)。在一個實例中,記錄1202的存儲器類型的改變使得頁表900經(jīng)更新,使得頁表項902具有匹配存儲器類型。
245.每一記錄可進一步包含虛擬地址、物理地址及/或數(shù)據(jù)識別符。在一個實例中,虛擬地址可為對應(yīng)于記錄的存儲器類型的虛擬地址范圍。在一個實例中,物理地址可為對應(yīng)于記錄的存儲器類型的一或多個存儲器裝置的物理地址范圍。
246.在一個實例中,數(shù)據(jù)識別符識別與命名空間識別符相關(guān)聯(lián)的數(shù)據(jù)。在一個實例中,數(shù)據(jù)識別符為處理裝置310的地址空間中的地址范圍。在一個實例中,數(shù)據(jù)識別符為存儲在記錄的存儲器類型的一或多個存儲器裝置中的數(shù)據(jù)的物理地址范圍。
247.在一個實施例中,將來自所存儲元數(shù)據(jù)320、322的數(shù)據(jù)的一部分復(fù)制到命名空間表1200中的記錄。在一個實例中,數(shù)據(jù)的所述部分是響應(yīng)于與記錄的命名空間識別符相關(guān)聯(lián)的存儲器類型的改變而復(fù)制。在一個實例中,數(shù)據(jù)的所述部分是響應(yīng)于與記錄相關(guān)聯(lián)的虛擬地址、物理地址及/或數(shù)據(jù)識別符的改變而復(fù)制。
248.圖13展示根據(jù)一些實施例的用于將數(shù)據(jù)綁定到具有不同存儲器類型的物理存儲器的存儲器系統(tǒng)中的命名空間的方法。舉例來說,圖13的方法可實施于圖11的系統(tǒng)中。
249.圖13的方法可由處理邏輯進行,所述處理邏輯可包含硬件(例如處理裝置、電路系統(tǒng)、專用邏輯、可編程邏輯、微碼、裝置的硬件、集成電路等)、軟件(例如在處理裝置上運行或執(zhí)行的指令),或其組合。在一些實施例中,圖13的方法至少部分地由一或多個處理裝置(例如圖11的處理裝置310)進行。
250.盡管以特定順序或次序展示,但除非另有規(guī)定,否則可修改所述處理程序的次序。因此,所說明實施例應(yīng)僅理解為實例,且所說明處理程序可以不同次序進行,且一些處理程
序可并行進行。另外,可在各種實施例中省略一或多個處理程序。因此,在每一實施例中并非所有處理程序都是必需的。其它處理程序流程是可能的。
251.在框1301處,從命名空間分配存儲器以供應(yīng)用程序使用。所述命名空間為對其中定義物理地址的一或多個物理存儲器裝置的邏輯參考。在一個實例中,物理地址由操作系統(tǒng)808定義。在一個實例中,應(yīng)用程序為應(yīng)用程序312。
252.在框1303處,將命名空間綁定到存儲器類型。在一個實例中,將命名空間綁定到存儲器類型314。在一個實例中,將命名空間至存儲器類型的綁定存儲在命名空間表1104中。
253.在框1305處,響應(yīng)于將命名空間綁定到存儲器類型,調(diào)整頁表以將命名空間中的邏輯存儲器地址映射到所述存儲器類型的存儲器裝置。在一個實例中,調(diào)整頁表804及/或頁表806。在一個實例中,邏輯存儲器地址為應(yīng)用程序312的虛擬頁的虛擬地址。在一個實例中,存儲器裝置為dram 304。
254.在一個實施例中,一種方法包括:由至少一個處理裝置(例如處理裝置310及/或存儲器管理單元316)創(chuàng)建用于不同存儲器類型的存儲器裝置(例如dram 304、nvram 306及nand閃存308)的命名空間,所述命名空間包含用于第一存儲器類型的第一存儲器裝置的第一命名空間(例如“命名空間a”),及用于第二存儲器類型的第二存儲器裝置的第二命名空間(例如“命名空間b”);將數(shù)據(jù)綁定到所述第一命名空間(例如將綁定存儲在命名空間表1104中);及響應(yīng)于將所述數(shù)據(jù)綁定到所述第一命名空間,將所述數(shù)據(jù)存儲在所述第一存儲器裝置中。
255.在一個實施例中,將所述數(shù)據(jù)存儲在所述第一存儲器裝置中包括將所述數(shù)據(jù)從所述第二存儲器裝置移動到所述第一存儲器裝置。
256.在一個實施例中,將所述數(shù)據(jù)綁定到所述第一命名空間包括所述數(shù)據(jù)從所述第二命名空間到所述第一命名空間的綁定的改變。
257.在一個實施例中,操作系統(tǒng)(例如操作系統(tǒng)808)在所述至少一個處理裝置上運行,且將所述數(shù)據(jù)綁定到所述第一命名空間是由所述操作系統(tǒng)響應(yīng)于由應(yīng)用程序(例如應(yīng)用程序312)提出的請求而進行。
258.在一個實施例中,所述第一命名空間是由所述操作系統(tǒng)響應(yīng)于由所述應(yīng)用程序提出的請求而創(chuàng)建。
259.在一個實施例中,創(chuàng)建所述命名空間包括使相應(yīng)虛擬地址(例如頁表804、806中的虛擬地址;元數(shù)據(jù)320、322中的虛擬地址)與每一命名空間相關(guān)聯(lián)。
260.在一個實施例中,將所述數(shù)據(jù)綁定到所述第一命名空間包括存儲所述第一命名空間的虛擬地址(例如頁表804、806中的虛擬地址;元數(shù)據(jù)320、322中的虛擬地址)與所述第一存儲器裝置的第一物理地址之間的映射。
261.在一個實施例中,所述第一命名空間的所述虛擬地址在所述至少一個處理裝置的地址空間的第一地址范圍中,且其中存儲所述映射包括存儲使所述第一地址范圍與所述第一存儲器裝置相關(guān)聯(lián)的元數(shù)據(jù)(例如元數(shù)據(jù)320、322)。
262.在一個實施例中,所述第一命名空間的所述虛擬地址對應(yīng)于由操作系統(tǒng)使用頁表(例如頁表804、806)來管理的處理程序的虛擬頁,且其中存儲所述映射包括在所述頁表中生成將所述第一命名空間的所述虛擬地址映射到所述第一物理地址的頁表項。
263.在一個實施例中,所述方法進一步包括由操作系統(tǒng)將命名空間與綁定到所述命名
空間的數(shù)據(jù)集之間的關(guān)聯(lián)(例如針對命名空間表1104中的記錄的綁定)存儲在存儲器中。
264.在一個實施例中,所述方法進一步包括:確定在所述至少一個處理裝置上執(zhí)行的應(yīng)用程序的優(yōu)先級的增加;其中將所述數(shù)據(jù)綁定到所述第一命名空間是響應(yīng)于確定所述優(yōu)先級的所述增加而進行,其中將所述數(shù)據(jù)綁定到所述第一命名空間包括從所述第二命名空間到所述第一命名空間的綁定的改變,且其中所述第一存儲器裝置(例如dram 304)的時延小于所述第二存儲器裝置(例如nvram 306或nand閃存308)的時延。
265.在一個實施例中,如果將處理程序確定為在很大程度上是寫入密集型的(例如超過寫入的預(yù)定數(shù)量及/或頻率),那么系統(tǒng)可將數(shù)據(jù)綁定到由例如更持久存儲器支持的命名空間,而非確定使得將數(shù)據(jù)綁定到第一命名空間(其中第一存儲器裝置的時延較小)的優(yōu)先級的增加。在另一實例中,如果將處理程序確定為任務(wù)關(guān)鍵的,那么系統(tǒng)可將數(shù)據(jù)綁定到由更具彈性的存儲器支持的命名空間(或如果將處理程序確定為不太重要或無關(guān)緊要的,那么系統(tǒng)可將數(shù)據(jù)綁定到由不太彈性的存儲器支持的命名空間)。
266.在一個實施例中,處理程序可經(jīng)確定為具有一或多個特定特性(例如優(yōu)先級、結(jié)果(consequence)、交互性、帶寬/功率消耗等)?;谶@種確定,將與處理程序相關(guān)聯(lián)的數(shù)據(jù)綁定到由具有互補特性的存儲器支持的命名空間,所述特性對應(yīng)于及/或更優(yōu)選地適合于經(jīng)確定一或多個特性。
267.在一個實施例中,創(chuàng)建所述第一命名空間包括將對所述第一命名空間的識別存儲在所述第一存儲器裝置的存儲器中(例如將命名空間識別符及/或另一識別存儲為圖11的“命名空間a數(shù)據(jù)”的部分)。
268.在一個實施例中,所述方法進一步包括從應(yīng)用程序接收對存儲器的分配的請求,其中所述請求指定將數(shù)據(jù)存儲在所述第一存儲器類型的物理存儲器(例如dram)中。
269.在一個實施例中,一種系統(tǒng)包括:第一存儲器類型的第一存儲器裝置;至少一個處理裝置;及存儲器,其含有指令,所述指令經(jīng)配置以指示所述至少一個處理裝置:由操作系統(tǒng)從命名空間分配存儲器以供應(yīng)用程序使用,其中所述命名空間為對其中定義物理地址的一或多個物理存儲器裝置的邏輯參考;將所述命名空間綁定到所述第一存儲器類型;及響應(yīng)于將所述命名空間綁定到所述第一存儲器類型,由所述操作系統(tǒng)調(diào)整一頁表以將所述命名空間中的邏輯存儲器地址映射到所述第一存儲器裝置。
270.在一個實施例中,所述指令經(jīng)進一步配置以指示所述至少一個處理裝置:使用來自所述頁表的數(shù)據(jù)存取所述第一存儲器裝置中的對應(yīng)于所述命名空間中的所述邏輯存儲器地址的第一物理地址處的數(shù)據(jù)。
271.在一個實施例中,在轉(zhuǎn)換后備緩沖器(例如tlb 810)中高速緩存來自所述頁表的所述數(shù)據(jù),且存儲器管理單元(例如mmu 316)存取所述轉(zhuǎn)換后備緩沖器以將所述邏輯存儲器地址轉(zhuǎn)換為所述第一物理地址。
272.在一個實施例中,所述系統(tǒng)進一步包括第二存儲器類型的第二存儲器裝置,其中所述指令經(jīng)進一步配置以指示所述至少一個處理裝置:使用來自所述頁表的數(shù)據(jù)通過將所述數(shù)據(jù)從第二存儲器類型的第二存儲器裝置移動到所述第一存儲器裝置將數(shù)據(jù)存儲在所述第一存儲器裝置中。
273.在一個實施例中,一種非暫時性機器可讀存儲媒體存儲指令,所述指令在至少一個處理裝置上執(zhí)行時使得所述至少一個處理裝置至少:創(chuàng)建用于不同存儲器類型的存儲器
裝置的命名空間,所述命名空間包含用于第一存儲器類型的第一存儲器裝置的第一命名空間,及用于第二存儲器類型的第二存儲器裝置的第二命名空間;將數(shù)據(jù)綁定到所述第一命名空間;及響應(yīng)于將所述數(shù)據(jù)綁定到所述第一命名空間,將所述數(shù)據(jù)存儲在所述第一存儲器裝置中。
274.在一個實施例中,將所述數(shù)據(jù)綁定到所述第一命名空間是響應(yīng)于從應(yīng)用程序接收到對所述第一存儲器類型(例如存儲器類型314)的請求而進行;將所述數(shù)據(jù)綁定到所述第一命名空間包括所述數(shù)據(jù)從所述第二命名空間到所述第一命名空間的綁定的改變;且所述第一存儲器裝置的時延小于所述第二存儲器裝置的時延。
275.在一個實施例中,將所述數(shù)據(jù)綁定到所述第一命名空間包括存儲所述第一命名空間的虛擬地址范圍與所述第一存儲器裝置的第一物理地址之間的映射;且存儲所述映射包括存儲使所述虛擬地址范圍與所述第一存儲器裝置相關(guān)聯(lián)的元數(shù)據(jù)(例如元數(shù)據(jù)320、322)。
276.結(jié)語
277.本發(fā)明包含進行上文所描述的方法及實施上文所描述的系統(tǒng)的各種裝置,包含進行這些方法的數(shù)據(jù)處理系統(tǒng),及含有在數(shù)據(jù)處理系統(tǒng)上執(zhí)行時使得系統(tǒng)進行這些方法的指令的計算機可讀媒體。
278.描述及圖式為說明性的且不應(yīng)視為限制性的。描述眾多特定細節(jié)以提供透徹理解。然而,在某些情況下,并不描述熟知或常規(guī)細節(jié)以便避免混淆描述。對本發(fā)明中的一個或一實施例的參考未必為對同一實施例的參考;且這類參考意味著至少一個。
279.在本說明書中,對“一個實施例”或“一實施例”的參考意味著結(jié)合實施例所描述的特定特征、結(jié)構(gòu)或特性是包含于本發(fā)明的至少一個實施例中。說明書中各處的短語“在一個實施例中”的表達形式未必均是指同一實施例,也不均是指其它實施例的彼此排他性的單獨或替代性實施例。此外,描述各種特征,所述特征可通過一些實施例而不通過其它實施例來呈現(xiàn)。類似地,描述各種要求,所述要求可為對于一些實施例的要求但并非對于其它實施例的要求。
280.在本說明書中,各種功能及操作可描述為由軟件代碼進行或由軟件代碼引起以簡化描述。然而,本領(lǐng)域技術(shù)人員將認識到這類表述意味著功能由一或多個處理器對代碼的執(zhí)行產(chǎn)生,所述一或多個處理器例如微處理器、專用集成電路(asic)、圖形處理器及/或現(xiàn)場可編程門陣列(fpga)。替代地,或組合地,可在具有或不具有軟件指令的情況下使用專用電路系統(tǒng)(例如邏輯電路系統(tǒng))實施功能及操作。實施例可使用硬連線電路系統(tǒng)在不具有軟件指令的情況下實施,或結(jié)合軟件指令實施。因此,技術(shù)不限于硬件電路系統(tǒng)與軟件的任何特定組合,也不限于由計算裝置執(zhí)行的指令的任何特定來源。
281.盡管一些實施例可實施于完全起作用的計算機及計算機系統(tǒng)中,但各種實施例能夠以各種形式作為計算產(chǎn)品分布,且能夠加以應(yīng)用,無論用以實際上影響分布的機器或計算機可讀媒體的特定類型如何。
282.所公開的至少一些方面可至少部分地體現(xiàn)于軟件中。即,技術(shù)可響應(yīng)于其處理器(例如微處理器)執(zhí)行含于存儲器(例如rom、易失性ram、非易失性存儲器、高速緩存或遠程存儲裝置)中的指令序列而在計算裝置或其它系統(tǒng)中進行。
283.執(zhí)行以實施實施例的例程可實施為操作系統(tǒng)、中間軟件、服務(wù)遞送平臺、軟件開發(fā)
套件(sdk)組件、網(wǎng)頁服務(wù)或稱為“計算機程序”的其它特定應(yīng)用程序、組件、程序、對象、模塊或指令序列的部分。對這些例程的調(diào)用接口可暴露于軟件開發(fā)社群作為應(yīng)用程序編程接口(api)。計算機程序通常包括在各種時間在計算機中的各種存儲器及存儲裝置中設(shè)定的一或多個指令,且當由計算機中的一或多個處理器讀取及執(zhí)行時,使得計算機進行執(zhí)行涉及各種方面的元件所必需的操作。
284.機器可讀媒體可用于存儲在由計算裝置執(zhí)行時使得所述裝置進行各種方法的軟件及數(shù)據(jù)。可執(zhí)行軟件及數(shù)據(jù)可存儲在各處,包含例如rom、易失性ram、非易失性存儲器及/或高速緩存。所述軟件及/或數(shù)據(jù)的部分可存儲在這些存儲裝置中的任一者中。另外,數(shù)據(jù)及指令可從集中式服務(wù)器或同級間網(wǎng)絡(luò)獲得。數(shù)據(jù)及指令的不同部分可在不同時間且在不同通信會話或相同通信會話中從不同集中式服務(wù)器及/或同級間網(wǎng)絡(luò)獲得??稍趹?yīng)用程序的執(zhí)行之前獲得全部數(shù)據(jù)及指令。替代地,可在需要執(zhí)行時動態(tài)地(實時)獲得數(shù)據(jù)及指令的部分。因此,并不需要數(shù)據(jù)及指令在特定時刻全部處于機器可讀媒體上。
285.計算機可讀媒體的實例包含但不限于可記錄及不可記錄類型媒體,例如易失性及非易失性存儲器裝置、只讀存儲器(rom)、隨機存取存儲器(ram)、閃存存儲器裝置、固態(tài)驅(qū)動機存儲媒體、可卸除磁盤、磁盤存儲媒體、光學存儲媒體(例如光盤只讀存儲器(cd rom)、數(shù)字多功能光盤(dvd)等),以及其它。計算機可讀媒體可存儲指令。
286.大體而言,有形或非暫時性機器可讀媒體包含提供(例如存儲)信息的任何機構(gòu),所述信息呈可由機器(例如計算機、移動裝置、網(wǎng)絡(luò)裝置、個人數(shù)字助理、制造工具、具有一或多個處理器集合的任何裝置等)存取的形式。
287.在各種實施例中,硬連線電路系統(tǒng)可與軟件及固件指令組合使用以實施技術(shù)。因此,技術(shù)既不限于硬件電路系統(tǒng)與軟件的任何特定組合,也不限于由計算裝置執(zhí)行的指令的任何特定來源。
288.盡管圖式中的一些以特定次序說明數(shù)個操作,但不依賴次序的操作可重新排序且可組合或拆解其它操作。盡管具體地提及一些重新排序或其它分組,但其它者將對所屬領(lǐng)域的一般技術(shù)人員顯而易見,且因此并不存在替代例的窮盡性列表。此外,應(yīng)認識到,階段可實施于硬件、固件、軟件或其任何組合中。
289.在前述說明書中,已參考本發(fā)明的特定示范性實施例描述本發(fā)明。顯而易見,在不脫離如以下權(quán)利要求書中所闡述的較寬廣的精神及范圍的情況下,可對其進行各種修改。因此,應(yīng)在說明性意義上而非限制性意義上看待說明書及圖式。
290.本文中所闡述的各種實施例可使用廣泛多種不同類型的計算裝置實施。如本文中所使用,“計算裝置”的實例包含但不限于服務(wù)器、集中式計算平臺、多個計算處理器及/或組件的系統(tǒng)、移動裝置、用戶終端機、載具、個人通信裝置、穿戴式數(shù)字裝置、電子信息站、通用計算機、電子文件閱讀器、平板、膝上型計算機、智能型手機、數(shù)碼相機、住宅家用器具、電視或數(shù)字音樂播放器。計算裝置的額外實例包含作為稱為“物聯(lián)網(wǎng)”(iot)的部分的裝置。這類“物聯(lián)”可與其所有者或管理員(其可監(jiān)視所述物聯(lián)或修改這些物聯(lián)的設(shè)定)具有偶然交互。在一些情況下,這類所有者或管理員相對于“物聯(lián)”裝置扮演用戶的角色。在一些實例中,用戶的主要移動裝置(例如蘋果iphone)可為相對于由用戶穿戴的“物聯(lián)”裝置(例如蘋果手表)的管理員服務(wù)器。
291.在一些實施例中,計算裝置可為計算機或主機系統(tǒng),其實施為例如臺式計算機、膝
上型計算機、網(wǎng)絡(luò)服務(wù)器、移動裝置或包含存儲器及處理裝置的另一計算裝置。主機系統(tǒng)可包含或耦合到存儲器子系統(tǒng),使得主機系統(tǒng)可從存儲器子系統(tǒng)讀取數(shù)據(jù)或?qū)?shù)據(jù)寫入到存儲器子系統(tǒng)。主機系統(tǒng)可經(jīng)由物理主機接口耦合到存儲器子系統(tǒng)。大體而言,主機系統(tǒng)可經(jīng)由同一通信連接、多個單獨通信連接及/或通信連接的組合存取多個存儲器子系統(tǒng)。