欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

用于多級存儲器系統(tǒng)中的存儲器分配的系統(tǒng)和方法與流程

文檔序號:11890527閱讀:272來源:國知局
用于多級存儲器系統(tǒng)中的存儲器分配的系統(tǒng)和方法與流程

本公開的領(lǐng)域

本公開大體上涉及存儲器系統(tǒng),且更特定來說,涉及采用多個存儲器的存儲器系統(tǒng)。

相關(guān)技術(shù)的描述

處理系統(tǒng)可實施多個類型或?qū)蛹壍拇鎯ζ?例如,易失性和非易失性存儲器架構(gòu)或封裝內(nèi)和外部存儲器的組合)來滿足多種設(shè)計需求。舉例來說,可使用多層級存儲器來通過組合提供增加的帶寬、容量和可擴展性中的一者或多者的存儲器而利用這些特征。在具有統(tǒng)一存儲器地址空間的多層級存儲器系統(tǒng)的存儲器之間分配數(shù)據(jù)結(jié)構(gòu)會影響系統(tǒng)性能。常規(guī)上,操作系統(tǒng)或所述系統(tǒng)的硬件基于靜態(tài)預定義條件或基于表面上任意的分配來確定如何在多層級存儲器系統(tǒng)的存儲器之間分配數(shù)據(jù)結(jié)構(gòu)。這常常會導致對多層級存儲器系統(tǒng)的不同存儲器的低效或無效利用。

附圖簡述

通過參考附圖,可更好地理解本公開,且使其眾多特征和優(yōu)勢對于本領(lǐng)域技術(shù)人員來說顯而易見。在不同圖式中使用相同的參考符號會指示類似或等同的項目。

圖1是根據(jù)一些實施方案的采用多級存儲器系統(tǒng)的處理系統(tǒng)的框圖。

圖2是說明根據(jù)一些實施方案的用于鏈表數(shù)據(jù)結(jié)構(gòu)的示例性存儲器分配的圖。

圖3是說明根據(jù)一些實施方案的用于映射數(shù)據(jù)結(jié)構(gòu)的示例性存儲器分配的圖。

圖4是說明根據(jù)一些實施方案的用于二叉樹數(shù)據(jù)結(jié)構(gòu)的示例性存儲器分配的圖。

圖5是說明根據(jù)一些實施方案的用于在多級存儲器系統(tǒng)的存儲器之間的數(shù)據(jù)結(jié)構(gòu)的存儲器分配的方法的流程圖。

圖6是根據(jù)一些實施方案的采用多級存儲器系統(tǒng)的處理系統(tǒng)的框圖。

圖7是說明根據(jù)一些實施方案的用于在多級存儲器系統(tǒng)的存儲器之間的數(shù)據(jù)結(jié)構(gòu)的存儲器分配的方法的流程圖。

詳細描述

圖1到7示出用于在采用多級存儲器系統(tǒng)的處理系統(tǒng)中為軟件程序的數(shù)據(jù)結(jié)構(gòu)分配存儲器的示例性系統(tǒng)和技術(shù)。在一些實施方案中,所述處理系統(tǒng)包括多級存儲器系統(tǒng)和處理器,所述處理器具有處理核心和存儲器控制器。所述多級存儲器系統(tǒng)包括共享統(tǒng)一的存儲器地址空間的至少兩種不同存儲器級別的多個存儲器(每個級別界定層級和類型中的一者或兩者)。響應于處理器執(zhí)行對庫的存儲器分配函數(shù)調(diào)用(例如,malloc)以將存儲器分配給數(shù)據(jù)結(jié)構(gòu),所述庫識別數(shù)據(jù)結(jié)構(gòu)的類型,且基于數(shù)據(jù)結(jié)構(gòu)的類型,操作系統(tǒng)在多級存儲器系統(tǒng)的多個存儲器之間分配數(shù)據(jù)結(jié)構(gòu)的多個部分。舉例來說,在一些實施方案中,操作系統(tǒng)在存儲器之間分配數(shù)據(jù)結(jié)構(gòu)的多個部分,使得將數(shù)據(jù)結(jié)構(gòu)的更頻繁搜索或存取的部分分配給具有較快存取時間的存儲器,而將數(shù)據(jù)結(jié)構(gòu)的較不頻繁搜索或存取的部分分配給包括較慢存取時間的存儲器。在一些實施方案中,所述函數(shù)調(diào)用包括多個參數(shù),使得當處理器執(zhí)行所述函數(shù)調(diào)用時,操作系統(tǒng)基于所述參數(shù)而分配數(shù)據(jù)結(jié)構(gòu)的多個部分。在另一實施方案中,所述函數(shù)調(diào)用包括多級存儲器系統(tǒng)的存儲器層級的指示符,使得當處理器執(zhí)行包括所述指示符的函數(shù)調(diào)用時,所述操作系統(tǒng)將數(shù)據(jù)結(jié)構(gòu)的所識別的部分分配給所指示的存儲器層級。所描述的技術(shù)允許基于處理核心有多可能搜索或存取數(shù)據(jù)結(jié)構(gòu)的多個部分對數(shù)據(jù)結(jié)構(gòu)的多個部分的更有效分配,從而提高性能且減少電力消耗。

圖1示出根據(jù)一些實施方案的采用多級存儲器系統(tǒng)101的處理系統(tǒng)100的框圖。處理系統(tǒng)100包括處理器102和存儲器層次104,其包括屬于兩個或更多不同級別的多個存儲器,每個級別界定層級和類型中的一者或兩者。存儲器層級是基于存儲器的位置上的存取速度。舉例來說,在封裝內(nèi)存儲器與封裝外存儲器(或“芯片上”與“芯片外”存儲器)之間,封裝內(nèi)存儲器的存取速度將一般更快。在至少一個實施方案中,多級存儲器系統(tǒng)101是多層級存儲器系統(tǒng)。存儲器類型是基于存儲器的特定架構(gòu),且每個存儲器可包括多種存儲器類型中的任一者,例如,更低粒度劃分,例如易失性存儲器對非易失性存儲器,或動態(tài)隨機存取存儲器(DRAM)對靜態(tài)隨機存取存儲器(SRAM)對相變存儲器對憶阻器存儲器;或較高粒度劃分,例如在同一類型的通用存儲器架構(gòu)內(nèi)的不同架構(gòu),例如雙倍數(shù)據(jù)速率類型三同步動態(tài)隨機存取存儲器(DDR3SDRAM)、圖形雙倍數(shù)據(jù)速率版本五同步動態(tài)隨機存取存儲器(GDDR5SDRAM),以及低功率雙倍數(shù)據(jù)速率同步動態(tài)隨機存取存儲器(LPDDR SDRAM)。

在統(tǒng)一的存儲器地址空間116內(nèi)的存儲器106、107、108、109中的每一者基于其層級、類型或以上兩者而被分類為其相應的存儲器級別(標示為級別“I”和“II”)。因此,在一些實施方案中,存儲器106、107、108、109可被分類成使得同一級別內(nèi)的存儲器共享相同層級、相同類型以及其它操作特性(例如存取時間、帶寬、數(shù)據(jù)傳遞速率和類似者)中的一者或多者。為了示出,存儲器106、107可在它們兩者處于同一層級時(例如,封裝內(nèi))被分類為級別I,且存儲器108、109可在它們兩者處于同一層級時(例如,封裝外)被分類為級別II,或者存儲器106、107可在它們兩者實施(例如)DRAM架構(gòu)時被分類為級別I,而存儲器108、109可在它們兩者實施(例如)SRAM架構(gòu)時被分類為級別II,和類似者。

雖然存儲器層次104在圖1的實施方案中示出為兩個封裝內(nèi)存儲器106、107和兩個封裝外存儲器108、109,但其它實施方案可采用橫跨至少兩個級別的任何數(shù)目的存儲器。另外,在一些實施方案中,存儲器層次104可包括封裝內(nèi)和封裝外存儲器的任何組合,包括全部都是封裝外存儲器和全部都是封裝內(nèi)存儲器。存儲器層次104的一些實施方案可實施片疊式存儲器以增加容量或另外利用多個存儲器,同時維持較小的總覆蓋面積。片疊式存儲器可使用穿硅通孔(TSV)或其它垂直互連技術(shù)在垂直堆疊布置中實施,或在水平布置中實施,借此存儲器裸片相對于處理器或彼此水平地“堆疊”,使得它們經(jīng)由中介層進行連接。在圖1的實施方案中,封裝內(nèi)存儲器106、107被示出為具有同一級別(標示為級別“I”),且封裝外存儲器108、109被示出為具有同一級別(標示為級別“II”)。此外,其它實施方案的多級存儲器系統(tǒng)101可包括不同層級、不同類型的存儲器,或其組合。舉例來說,在至少一個實施方案中,多級存儲器系統(tǒng)101包括全部是同一層級但是不同類型的存儲器。

處理器102包括處理器核心110、111,以及存儲器控制器112。雖然所示出的實施方案描繪在處理器102處實施的存儲器控制器112,但在其它實施方案中,可在其它地方(例如,在實施存儲器108、109中的一者或多者的堆疊式存儲器裝置的存儲器接口處)實施存儲器控制器112。此外,在一些實施方案中,處理器102包括多于一個存儲器控制器112。存儲器控制器112基于地址空間分配響應于存儲器地址請求而從存儲器106、107、108、109檢索數(shù)據(jù)。因此,在所示出的實施方案中,存儲器控制器112和處理系統(tǒng)100將存儲器106、107、108、109看作單個、單層、統(tǒng)一的存儲器地址空間116。因此,不同級別(I、II)的存儲器在邏輯上仍是傳統(tǒng)存儲器層次的同一層級的部分,原因在于它們?nèi)慷际峭恢鞔鎯ζ骰蛳到y(tǒng)存儲器的部分,且因此全部可通過同一、統(tǒng)一、單層的物理存儲器地址空間進行存取。

常規(guī)上,操作系統(tǒng)或所述系統(tǒng)的硬件基于靜態(tài)預定義條件或基于表面上任意的分配來確定如何在多級存儲器系統(tǒng)的存儲器之間分配數(shù)據(jù)結(jié)構(gòu)。由于這些常規(guī)方法無法利用將如何存取數(shù)據(jù)的較高層級(例如,軟件、數(shù)據(jù)結(jié)構(gòu)、算法等)語義或域?qū)S兄R,所以常常將數(shù)據(jù)結(jié)構(gòu)的頻繁存取的部分分配給較低性能存儲器,從而導致降低的效率和整體降級的性能。

相比而言,在所示出的實施方案中,庫存儲裝置包括庫120,其通過應用編程接口(API)122向程序員或其他用戶提供數(shù)據(jù)結(jié)構(gòu)、算法,以及其它服務(wù),使得庫120的后端實施動態(tài)地處置存儲器分配決策。這允許基于將如何存取數(shù)據(jù)的較高層級語義或域?qū)S械闹R作出分配決策。舉例來說,在一些實施方案中,庫120可使用多層級存儲器知曉的軟件接口選擇性地將數(shù)據(jù)結(jié)構(gòu)分配給多級存儲器系統(tǒng)101的存儲器106、107、108 109,或其可維持來自不同存儲器層級的存儲器頁的其自身的池,且在其認為適合時明確地處置數(shù)據(jù)結(jié)構(gòu)向這些頁的分配。庫120可為透明地管理存儲器分配的任何庫,例如,C++標準模板庫(STL)、Java標準庫、C#和.NET框架、自定義庫、域?qū)S袔?,和類似者?;趲?20的存儲器分配決策,處理系統(tǒng)100的操作系統(tǒng)121將統(tǒng)一、單層地址空間分配給存儲器106、107、108、109。

在所示出的實施方案中,處理器核心111執(zhí)行軟件程序124,其包括對庫120的存儲器分配函數(shù)調(diào)用126以將存儲器分配給數(shù)據(jù)結(jié)構(gòu)128。軟件程序124經(jīng)由API 122存取庫120。在至少一個實施方案中,庫120參考數(shù)據(jù)結(jié)構(gòu)類型表130以基于待分配的數(shù)據(jù)結(jié)構(gòu)128的類型而確定如何在多級存儲器系統(tǒng)101的存儲器106、107、108、109之間分配數(shù)據(jù)結(jié)構(gòu)128。數(shù)據(jù)結(jié)構(gòu)類型表130可包括靜態(tài)分配規(guī)則、可維持基于存儲器地址歷史或其它信息而更新的探試程序,或類似者。數(shù)據(jù)結(jié)構(gòu)128可為多種數(shù)據(jù)結(jié)構(gòu)中的任一者,例如,鏈表、映射結(jié)構(gòu)、二叉樹、圖表結(jié)構(gòu)、陣列、多元組,和類似者?;跀?shù)據(jù)結(jié)構(gòu)128的類型,庫120可決定操作系統(tǒng)121將把數(shù)據(jù)結(jié)構(gòu)128的不同部分分配給多級存儲器系統(tǒng)101的不同存儲器,以努力維持處理器102的有效性能。

舉例來說,在所示出的實施方案中,庫120指示操作系統(tǒng)121將把數(shù)據(jù)結(jié)構(gòu)128的第一部分132分配給存儲器106,且將數(shù)據(jù)結(jié)構(gòu)128的第二部分134分配給存儲器109。庫120可基于數(shù)據(jù)結(jié)構(gòu)的類型的動態(tài)存取模式(例如,應將更頻繁使用的部分分配給具有更快存取時間的存儲器)、每個存儲器106、107、108、109或級別中可用的存儲器的量(例如,只要它們具有可用的存儲器空間,應將盡可能多的數(shù)據(jù)結(jié)構(gòu)128分配給具有較快存取時間的存儲器)、這些的組合和類似者來作出此決策。在至少一個實施方案中,部分132、134分別表示數(shù)據(jù)結(jié)構(gòu)128的元數(shù)據(jù)和數(shù)據(jù),使得將元數(shù)據(jù)部分132分配給多個存儲器106、107、108、109中的第一組存儲器106,且將數(shù)據(jù)部分134分配給多個存儲器106、107、108、109中的第二組存儲器109。在所示出的實例中,將第一部分132(例如,數(shù)據(jù)結(jié)構(gòu)128的元數(shù)據(jù))分配給級別I的存儲器106,所述存儲器比第二部分134(例如,數(shù)據(jù)結(jié)構(gòu)128的數(shù)據(jù))被分配到的存儲器109提供更快的存取。可進行此分配來提高處理器102的性能,這是因為數(shù)據(jù)結(jié)構(gòu)128的元數(shù)據(jù)小于數(shù)據(jù)、因為元數(shù)據(jù)比數(shù)據(jù)被更頻繁地存取、這些原因的組合,和類似者。

雖然所示出的實施方案描繪了庫120將數(shù)據(jù)結(jié)構(gòu)128劃分為兩個部分132、134以分別分配在兩個存儲器106、109之間,但其它實施方案可將數(shù)據(jù)結(jié)構(gòu)128劃分為更多部分、將數(shù)據(jù)結(jié)構(gòu)分配在更多存儲器之間,或在不將數(shù)據(jù)結(jié)構(gòu)128劃分為多個部分的情況下對其進行分配。此外,在一些實施方案中,庫120將數(shù)據(jù)結(jié)構(gòu)128的部分132、134分配給特定存儲器級別(I、II)以供操作系統(tǒng)121均勻地、任意地或基于一個或多個探試程序?qū)⑺霾糠值淖訁^(qū)段分布在特定級別的存儲器之間(例如,如果將部分132分配給級別I,那么操作系統(tǒng)121將部分132的子區(qū)段分布在級別I的存儲器106、107之間)。此外,部分和子區(qū)段可表示數(shù)據(jù)結(jié)構(gòu)128的任何部分或子區(qū)段,且不需要是鄰接的。

在一些實施方案中,庫120可提供多種接口或掛鉤中的任一者(這可為任選的),以允許程序員提供關(guān)于將如何在多級存儲器系統(tǒng)101的存儲器106、107、108、109之間分配數(shù)據(jù)結(jié)構(gòu)128的輸入或方向。舉例來說,在至少一個實施方案中,庫120允許程序員或其他用戶向參數(shù)136提供存儲器分配函數(shù)調(diào)用126,使得操作系統(tǒng)121基于參數(shù)136(或多個參數(shù))在多級存儲器系統(tǒng)101的多個存儲器106、109之間分配數(shù)據(jù)結(jié)構(gòu)128的部分132、134。參數(shù)136可指示(例如)數(shù)據(jù)結(jié)構(gòu)128的類型、如何將數(shù)據(jù)結(jié)構(gòu)128劃分為其部分132、134、將使用多少存儲器106、107、108、109、將使用哪些存儲器106、107、108、109、將使用哪些級別(I、II)、一個或多個限制(例如,僅對于前n行與數(shù)據(jù)分開地分配元數(shù)據(jù)),或類似者。

在至少一個實施方案中,庫120包括域?qū)S袔?。域?qū)S袔斓囊恍嵗菍iT用于基本線性代數(shù)的例程,例如基本線性代數(shù)子程序(BLAS)、自動調(diào)諧線性代數(shù)軟件(ATLAS)、用于科學計算的便攜式可擴展工具包(PETSc),以及應用標記語言(APPML)。例如,ATLAS是搜索優(yōu)化參數(shù)空間(組塊因子,展開)的自由化庫,和用以產(chǎn)生高度優(yōu)化的硬件專有線性代數(shù)例程的實施算法。此類庫的實例是使用組塊用于矩陣-矩陣相乘。一個實施方案包括將庫120配置成針對存儲器層次104的每個層級采取不同的組塊機制,且將數(shù)據(jù)從下部層級移動到上部層級,所述上部層級還對應于最內(nèi)層循環(huán)。此類例程假設(shè)對DRAM的存取是固定成本,但在包括多個級別的存儲器的系統(tǒng)中,將必須對算法進行重構(gòu)以用于更快的存儲器。稀疏矩陣向量相乘(SpMV)是在許多高性能計算(HPC)應用的性能方面較重要的算法的另一實例。一般使用壓縮行格式(CSR)來表示SpMV。在CSR中,非零行元素存儲在值陣列中,列索引存儲在列陣列中,且每個行的開始到列陣列中的索引存儲在行索引陣列中。在一個實施方案中,庫120在較快的存儲器(例如,級別I)中分配索引陣列的存儲,且在較慢的存儲器(例如,級別II)中分配大值陣列的存儲,從而允許更快的搜索。除了多級存儲器系統(tǒng)101的靜態(tài)優(yōu)化之外,這些庫可插入簡檔導引的動態(tài)優(yōu)化,以在執(zhí)行期間在不同的存儲器層級之間移動數(shù)據(jù)結(jié)構(gòu)的多個組件。

圖2是示出根據(jù)一些實施方案的由圖1的處理系統(tǒng)100用于鏈表數(shù)據(jù)結(jié)構(gòu)200的示例性存儲器分配的圖。鏈表數(shù)據(jù)結(jié)構(gòu)200包括節(jié)點204到215,所述節(jié)點經(jīng)鏈接以使得節(jié)點204包括到節(jié)點205的鏈接或其它參考,節(jié)點205包括到節(jié)點206的鏈接,節(jié)點206包括到節(jié)點207的鏈接,且依此類推,直到最后的節(jié)點215。用以從一個或多個節(jié)點檢索數(shù)據(jù)的存儲器存取需要穿越鏈表數(shù)據(jù)結(jié)構(gòu)200的從第一節(jié)點204直到所需的節(jié)點的每個節(jié)點。舉例來說,對節(jié)點207的存儲器存取將需要處理器102開始于第一節(jié)點204、跟隨節(jié)點204到節(jié)點205的鏈接、跟隨節(jié)點205到節(jié)點206的鏈接,且最后跟隨節(jié)點206到節(jié)點207的鏈接。常規(guī)的存儲器分配在多級存儲器系統(tǒng)101的存儲器106、107、108、109之間任意地分配各個節(jié)點204到215,使得節(jié)點204、205、206、207可存儲在單獨的存儲器106、107、108、109中,且對節(jié)點207的存儲器存取將需要在處理器102穿越鏈表的節(jié)點204、205、206、207時存取單獨的存儲器106、107、108、109中的每一者。這些常規(guī)方法引入了低效,因為需要對多個存儲器存取多次以到達節(jié)點,且頻繁存取的數(shù)據(jù)可能被存儲在具有較慢的存取時間的存儲器處。相比而言,在所示出的實例中,操作系統(tǒng)121基于節(jié)點204到215的存取次序而分配鏈表數(shù)據(jù)結(jié)構(gòu)200的多個部分,使得將具有在鏈表數(shù)據(jù)結(jié)構(gòu)200的存取次序中較早的節(jié)點的片段分配給具有較快存取時間的存儲器,而將具有在鏈表數(shù)據(jù)結(jié)構(gòu)200的存取次序中較晚的節(jié)點的片段分配給具有較慢存取時間的存儲器。

響應于經(jīng)由API 122對庫120的存儲器分配函數(shù)調(diào)用126以將存儲器分配給數(shù)據(jù)結(jié)構(gòu)128,庫120將數(shù)據(jù)結(jié)構(gòu)128識別為鏈表數(shù)據(jù)結(jié)構(gòu)200?;陬愋捅?30、由程序124提供的一個或多個參數(shù)136,或數(shù)據(jù)結(jié)構(gòu)128自身,庫120確定如何將鏈表數(shù)據(jù)結(jié)構(gòu)200劃分為多個部分且在多級存儲器系統(tǒng)101之間分配。在所示出的實施方案中,描繪兩個部分,第一部分表示鏈表數(shù)據(jù)結(jié)構(gòu)200的初始片段250,且第二部分表示鏈表數(shù)據(jù)結(jié)構(gòu)200的最后片段252。由于將至少比最后片段252的節(jié)點209到215頻繁地(且可能更頻繁地)存取初始片段250的節(jié)點204到208,所以操作系統(tǒng)121將初始片段250分配給包括具有相對較快的存取時間的存儲器106、107的存儲器級別I,且將最后片段252分配給包括具有相對較慢的存取時間的存儲器108、109的存儲器級別II。因此,對節(jié)點207的存儲器存取將僅需要存取級別I的一個或多個存儲器106、107,而對節(jié)點213的存儲器存取將需要存取用于節(jié)點204到208的級別I的一個或多個存儲器106、107,以及用于節(jié)點209到213的級別II的一個或多個存儲器108、109。由于從具有相對較快的存取時間的存儲器106、107存取節(jié)點204到208,所以處理器102能夠相對快速地穿越列表的初始片段250,從而允許對鏈表數(shù)據(jù)結(jié)構(gòu)200的更有效的存儲器存取。可將此鏈表存儲器分配技術(shù)應用于任何類型的鏈表,例如,單向鏈表、雙向鏈表,和類似者。鏈表數(shù)據(jù)結(jié)構(gòu)200可在或可不在給定存儲器內(nèi)鄰接地分配。

雖然所示出的實例描繪被劃分為兩個部分的鏈表數(shù)據(jù)結(jié)構(gòu)200,所述兩個部分表示分配給兩個不同存儲器級別(I、II)的初始片段250和最后片段252,但庫120可確定鏈表數(shù)據(jù)結(jié)構(gòu)200的任何數(shù)目的部分,且可將所述部分分配給任何數(shù)目的存儲器級別或個別存儲器。此外,在一些實施方案中,庫120可基于由程序124提供的一個或多個參數(shù)136而作出其分配決策。舉例來說,參數(shù)136可指示如何將鏈表數(shù)據(jù)結(jié)構(gòu)200劃分為多個部分、應創(chuàng)建多少部分、要使用哪些存儲器級別(I、II)、要使用哪些存儲器106、107、108、109、應將鏈表數(shù)據(jù)結(jié)構(gòu)200的多個部分分配給哪些存儲器106、107、108、109或哪些級別(I、II)、鏈表數(shù)據(jù)結(jié)構(gòu)200的初始節(jié)點204,或類似者。

圖3是示出根據(jù)一些實施方案的由圖1的處理系統(tǒng)100用于映射數(shù)據(jù)結(jié)構(gòu)300的示例性存儲器分配的圖。映射數(shù)據(jù)結(jié)構(gòu)300包括綁定到多個值312到321的多個鍵302到311,使得存儲器存取需要鍵305的查找操作來檢索對應值315。常規(guī)的存儲器分配在多級存儲器系統(tǒng)101的存儲器106、107、108、109之間任意地分配各個鍵302到311和值312到321。這些常規(guī)方法引入了低效,因為需要對多個存儲器存取多次以到達一值(例如,歸因于線性鏈或其它散列沖突處置技術(shù)),且頻繁存取的數(shù)據(jù)可能被存儲在具有較慢存取時間的存儲器處。相比而言,在所示出的實例中,操作系統(tǒng)121分配映射數(shù)據(jù)結(jié)構(gòu)300的多個部分,使得將映射數(shù)據(jù)結(jié)構(gòu)300的鍵302到311分配給具有較快存取時間的存儲器,而將映射數(shù)據(jù)結(jié)構(gòu)300的對應值312到321分配給具有較慢存取時間的存儲器。

響應于經(jīng)由API 122對庫120的存儲器分配函數(shù)調(diào)用126以將存儲器分配給數(shù)據(jù)結(jié)構(gòu)128,庫120將數(shù)據(jù)結(jié)構(gòu)128識別為映射數(shù)據(jù)結(jié)構(gòu)300?;陬愋捅?30、由程序124提供的一個或多個參數(shù)136,或數(shù)據(jù)結(jié)構(gòu)128自身,庫120確定如何將映射數(shù)據(jù)結(jié)構(gòu)300劃分為多個部分且在多級存儲器系統(tǒng)101之間分配。在所示出的實施方案中,描繪兩個部分,第一部分表示映射數(shù)據(jù)結(jié)構(gòu)300的鍵部分350,且第二部分表示映射數(shù)據(jù)結(jié)構(gòu)300的值部分352。操作系統(tǒng)121將鍵部分350分配給包括具有相對較快存取時間的存儲器106、107的存儲器級別I,且將值部分352分配給包括具有相對較慢存取時間的存儲器108、109的存儲器級別II。因此,鍵查找操作可快速地進行,且隨后存儲器控制器112可從具有較慢存取時間的存儲器檢索對應值。處理系統(tǒng)100將在涉及多個查找的情形中進一步實現(xiàn)此存儲器分配的效率。此外,如果映射數(shù)據(jù)結(jié)構(gòu)300包括相對大的大小的一個或多個值312到321,那么分配給具有較慢存取時間但具有增加的容量的存儲器可為有益的??蓪⒋擞成鋽?shù)據(jù)結(jié)構(gòu)存儲器分配技術(shù)應用于任何類型的映射或其它關(guān)聯(lián)陣列數(shù)據(jù)。映射數(shù)據(jù)結(jié)構(gòu)300的鍵302到311和值312到321可在或可不在給定存儲器內(nèi)鄰接地分配。

雖然所示出的實例描繪被劃分為兩個部分的映射數(shù)據(jù)結(jié)構(gòu)300,所述兩個部分表示分配給兩個不同存儲器級別(I、II)的鍵部分350和值部分352,但庫120可確定映射數(shù)據(jù)結(jié)構(gòu)300的任何數(shù)目的部分,且可將所述部分分配給任何數(shù)目的存儲器級別或個別存儲器。此外,在一些實施方案中,庫120可基于由程序124提供的一個或多個參數(shù)136而作出其分配決策。舉例來說,參數(shù)136可指示如何將映射數(shù)據(jù)結(jié)構(gòu)300劃分為多個部分、應創(chuàng)建多少部分、要使用哪些存儲器級別(I、II)、要使用哪些存儲器106、107、108、109、應將映射數(shù)據(jù)結(jié)構(gòu)300的多個部分分配給哪些存儲器106、107、108、109或哪些級別(I、II),或類似者。

圖4是示出根據(jù)一些實施方案的由圖1的處理系統(tǒng)100用于二叉樹數(shù)據(jù)結(jié)構(gòu)400的示例性存儲器分配的圖。二叉樹數(shù)據(jù)結(jié)構(gòu)400包括多個節(jié)點,其中每個節(jié)點存儲節(jié)點元數(shù)據(jù)402到412(例如,關(guān)于節(jié)點ID、鍵、指針,或到其它節(jié)點的鏈接的信息)和節(jié)點數(shù)據(jù)422到432。根據(jù)多種穿越方案中的任一者,用以檢索節(jié)點數(shù)據(jù)(例如,節(jié)點數(shù)據(jù)426)的存儲器存取通常需要穿越二叉樹數(shù)據(jù)結(jié)構(gòu)400的多個節(jié)點。舉例來說,在按序穿越方案的情況下,用以檢索節(jié)點數(shù)據(jù)426的存儲器存取將需要處理器102穿越二叉樹400,開始于節(jié)點元數(shù)據(jù)409,隨后是節(jié)點元數(shù)據(jù)405、節(jié)點元數(shù)據(jù)403且最后是節(jié)點元數(shù)據(jù)406,以檢索節(jié)點數(shù)據(jù)426。在層級次序穿越方案的情況下,用以檢索節(jié)點數(shù)據(jù)426的存儲器存取將需要處理器102穿越二叉樹400,開始于根節(jié)點元數(shù)據(jù)402,隨后是節(jié)點元數(shù)據(jù)403、節(jié)點元數(shù)據(jù)404、節(jié)點元數(shù)據(jù)405且最后是節(jié)點元數(shù)據(jù)406,以檢索節(jié)點數(shù)據(jù)426。

常規(guī)的存儲器分配在多級存儲器系統(tǒng)101的存儲器106、107、108、109之間任意地分配節(jié)點元數(shù)據(jù)402到412和節(jié)點數(shù)據(jù)422到432,使得根據(jù)穿越方案將被連續(xù)地穿越的節(jié)點可被分配給單獨的存儲器,使得對二叉樹數(shù)據(jù)結(jié)構(gòu)400的穿越可需要存取單獨的存儲器106、107、108、109中的每一者。這些常規(guī)方法引入了低效,因為需要對多個存儲器存取多次以到達所請求的節(jié)點,且二叉樹數(shù)據(jù)結(jié)構(gòu)400的頻繁存取的部分可能被存儲在具有較慢存取時間的存儲器處。相比而言,在所示出的實例中,操作系統(tǒng)121分配二叉樹數(shù)據(jù)結(jié)構(gòu)400的多個部分,使得將二叉樹數(shù)據(jù)結(jié)構(gòu)400的節(jié)點元數(shù)據(jù)402到412分配給具有較快存取時間的存儲器,而將二叉樹數(shù)據(jù)結(jié)構(gòu)400的對應節(jié)點數(shù)據(jù)422到432分配給具有較慢存取時間的存儲器。

響應于經(jīng)由API 122對庫120的存儲器分配函數(shù)調(diào)用126以將存儲器分配給數(shù)據(jù)結(jié)構(gòu)128,庫120將數(shù)據(jù)結(jié)構(gòu)128識別為二叉樹數(shù)據(jù)結(jié)構(gòu)400?;陬愋捅?30、由程序124提供的一個或多個參數(shù)136,或數(shù)據(jù)結(jié)構(gòu)128自身,庫120確定如何將二叉樹數(shù)據(jù)結(jié)構(gòu)400劃分為多個部分且在多級存儲器系統(tǒng)101之間分配。在所示出的實施方案中,描繪兩個部分,第一部分表示二叉樹數(shù)據(jù)結(jié)構(gòu)400的節(jié)點元數(shù)據(jù)部分450,且第二部分表示二叉樹數(shù)據(jù)結(jié)構(gòu)400的節(jié)點數(shù)據(jù)部分452。為了易于示出,節(jié)點元數(shù)據(jù)部分450和節(jié)點數(shù)據(jù)部分452僅指示二叉樹數(shù)據(jù)結(jié)構(gòu)400的選擇節(jié)點,然而,節(jié)點元數(shù)據(jù)部分450表示全部節(jié)點元數(shù)據(jù)402到412,且節(jié)點數(shù)據(jù)部分452表示全部節(jié)點數(shù)據(jù)422到432。

操作系統(tǒng)121將節(jié)點元數(shù)據(jù)部分450分配給包括具有相對較快存取時間的存儲器106、107的存儲器級別I,且將節(jié)點數(shù)據(jù)部分452分配給包括具有相對較慢存取時間的存儲器108、109的存儲器級別II。因此,對二叉樹數(shù)據(jù)結(jié)構(gòu)400的穿越可快速地進行,這是因為將從具有較快存取時間的一個或多個存儲器106、107存取節(jié)點元數(shù)據(jù)402到412,且隨后存儲器控制器112可從具有較慢存取時間的存儲器檢索所請求的節(jié)點數(shù)據(jù)。此外,分配給具有較慢存取時間但具有增加的容量的存儲器對于包括相對大的大小的節(jié)點數(shù)據(jù)422到432的二叉樹數(shù)據(jù)結(jié)構(gòu)400的節(jié)點可為有益的。

在另一實施方案中,操作系統(tǒng)121基于節(jié)點的穿越次序而分配二叉樹數(shù)據(jù)結(jié)構(gòu)400的多個部分,使得將具有根據(jù)二叉樹數(shù)據(jù)結(jié)構(gòu)400的穿越方案的穿越次序中較早的節(jié)點的片段分配給具有較快存取時間的存儲器,而將具有根據(jù)二叉樹數(shù)據(jù)結(jié)構(gòu)400的穿越方案的穿越次序中較晚的節(jié)點的片段分配給具有較慢存取時間的存儲器。舉例來說,在層級次序穿越方案的上下文中,由于將至少比較低層級(即,更靠近分支)的節(jié)點元數(shù)據(jù)頻繁地(且可能更頻繁地)存取較高層級(即,更靠近根節(jié)點)的節(jié)點元數(shù)據(jù),所以操作系統(tǒng)121可將前三個層級(包括節(jié)點元數(shù)據(jù)402到408)分配給包括具有相對較快存取時間的存儲器106、107的存儲器級別I,且將分支層級(包括元數(shù)據(jù)409到412)分配給包括具有相對較慢存取時間的存儲器108、109的存儲器級別II。因此,對節(jié)點數(shù)據(jù)427的存儲器存取將僅需要存取級別I的一個或多個存儲器106、107,而對節(jié)點數(shù)據(jù)430的存儲器存取將需要存取用于節(jié)點元數(shù)據(jù)402到408的級別I的一個或多個存儲器106、107,以及用于節(jié)點元數(shù)據(jù)409、410的級別II的一個或多個存儲器108、109。由于從具有相對較快存取時間的存儲器106、107存取節(jié)點元數(shù)據(jù)402到408,所以處理器102能夠相對快速地穿越前三個層級,從而允許對二叉樹數(shù)據(jù)結(jié)構(gòu)400的更有效的存儲器存取。

可將這些二叉樹數(shù)據(jù)結(jié)構(gòu)存儲器分配技術(shù)應用于任何類型的圖表數(shù)據(jù)結(jié)構(gòu),例如,三叉樹結(jié)構(gòu)、B+樹結(jié)構(gòu)、有向無環(huán)圖(DAG),或類似者。此外,節(jié)點元數(shù)據(jù)402到412和節(jié)點數(shù)據(jù)422到432可在或可不在給定存儲器內(nèi)鄰接地分配。雖然所示出的實例描繪被劃分為兩個部分的二叉樹數(shù)據(jù)結(jié)構(gòu)400,所述兩個部分表示分配給兩個不同存儲器級別(I、II)的節(jié)點元數(shù)據(jù)部分450和節(jié)點數(shù)據(jù)部分452,但庫120可確定二叉樹數(shù)據(jù)結(jié)構(gòu)400的任何數(shù)目的部分,且可將所述部分分配給任何數(shù)目的存儲器級別或個別存儲器。此外,在一些實施方案中,庫120可基于由程序124提供的一個或多個參數(shù)136而作出其分配決策。舉例來說,參數(shù)136可指示如何將二叉樹數(shù)據(jù)結(jié)構(gòu)400劃分為多個部分、應創(chuàng)建多少部分、要使用哪些存儲器級別(I、II)、要使用哪些存儲器106、107、108、109、應將二叉樹數(shù)據(jù)結(jié)構(gòu)400的多個部分分配給哪些存儲器106、107、108、109或哪些級別(I、II)、穿越方案,或類似者。

圖5是示出根據(jù)一些實施方案的用于在多級存儲器系統(tǒng)的存儲器之間的數(shù)據(jù)結(jié)構(gòu)的存儲器分配的示例性方法500的流程圖。為了易于參考,下文在圖1的多級存儲器系統(tǒng)101的示例性上下文中描述了方法500。方法500在框502處起始,借此當處理器核心111執(zhí)行包括對庫120的存儲器分配函數(shù)調(diào)用126的軟件程序124以將存儲器分配給數(shù)據(jù)結(jié)構(gòu)128時,處理系統(tǒng)100接收存儲器分配函數(shù)調(diào)用126。

在框504處,處理系統(tǒng)100經(jīng)由API 122存取庫120。庫120通過API 122向程序員或其他用戶提供數(shù)據(jù)結(jié)構(gòu)、算法,以及其它服務(wù),使得庫120的后端實施動態(tài)地處置存儲器分配決策。這允許基于將如何存取數(shù)據(jù)的較高層級語義或域?qū)S械闹R作出分配決策。舉例來說,在一些實施方案中,庫120可使用多層級存儲器知曉的軟件接口選擇性地將數(shù)據(jù)結(jié)構(gòu)分配給多級存儲器系統(tǒng)101的存儲器106、107、108 109,或其可維持來自不同存儲器層級的存儲器頁的其自身的池,且在其認為適合時明確地處置數(shù)據(jù)結(jié)構(gòu)向這些頁的分配。庫120可為透明地管理存儲器分配的任何庫,例如,C++標準模板庫(STL)、Java標準庫、C#和.NET框架、自定義庫、域?qū)S袔欤皖愃普摺?/p>

在框506處,庫120基于(例如)與存儲器分配函數(shù)調(diào)用、探試程序或類似者一起包括的一個或多個參數(shù)136而識別數(shù)據(jù)結(jié)構(gòu)128的類型。在至少一個實施方案中,庫120參考數(shù)據(jù)結(jié)構(gòu)類型表130以確定與在多級存儲器系統(tǒng)101的存儲器106、107、108、109之間分配數(shù)據(jù)結(jié)構(gòu)128相關(guān)的信息。舉例來說,根據(jù)框508,庫120可使用類型表130來識別數(shù)據(jù)結(jié)構(gòu)128的多個部分。庫120基于數(shù)據(jù)結(jié)構(gòu)類型而識別數(shù)據(jù)結(jié)構(gòu)128的部分132、132。在一些實施方案中,庫120基于由程序124提供的一個或多個參數(shù)136而識別數(shù)據(jù)結(jié)構(gòu)128的部分132、134??苫诖嫒☆l率、數(shù)據(jù)大小或類似者來確定所述部分。庫120向操作系統(tǒng)121指示將如何基于部分132、134來分配數(shù)據(jù)結(jié)構(gòu)128。

在框510處,操作系統(tǒng)121在多級存儲器系統(tǒng)101的多個存儲器106、109之間分配數(shù)據(jù)結(jié)構(gòu)的部分132、134。所述分配可基于數(shù)據(jù)結(jié)構(gòu)的類型的動態(tài)存取模式(例如,應將更頻繁使用的部分分配給具有較快存取時間的存儲器)、每個存儲器106、107、108、109或級別中可用的存儲器的量(例如,只要它們具有可用的存儲器空間,應將盡可能多的數(shù)據(jù)結(jié)構(gòu)128分配給具有較快存取時間的存儲器)、這些的組合,和類似者。在至少一個實施方案中,部分132、134分別表示數(shù)據(jù)結(jié)構(gòu)128的元數(shù)據(jù)和數(shù)據(jù),使得將元數(shù)據(jù)部分132分配給多個存儲器106、107、108、109中的第一組存儲器106,且將數(shù)據(jù)部分134分配給多個存儲器106、107、108、109中的第二組存儲器109??勺鞒龃朔峙鋪硖岣咛幚砥?02的性能,這是因為數(shù)據(jù)結(jié)構(gòu)128的元數(shù)據(jù)小于數(shù)據(jù)、因為元數(shù)據(jù)比數(shù)據(jù)被更頻繁地存取、這些原因的組合,和類似者。

圖6是根據(jù)一些實施方案的圖1的處理系統(tǒng)100執(zhí)行用于在多級存儲器系統(tǒng)101的存儲器106、107、108、109之間分配數(shù)據(jù)結(jié)構(gòu)128的存儲器分配的框圖。在所示出的實施方案中,庫620提供用于軟件624的接口以將存儲器位置信息、偏好和類似者傳送到基礎(chǔ)系統(tǒng)軟件(例如,操作軟件(OS)、管理程序等)。也就是說,所述庫通過API 622提供數(shù)據(jù)結(jié)構(gòu)、算法和其它服務(wù),使得程序員或其他用戶可使用函數(shù)調(diào)用602、604來指示操作系統(tǒng)621將如何在多級存儲器系統(tǒng)101的存儲器106、107、108、109之間分配數(shù)據(jù)結(jié)構(gòu)128。舉例來說,在至少一個實施方案中,API 622包括對每個存儲器106、107、108、109、每個存儲器級別(I、II)、每個存儲器層級,或每個存儲器類型的函數(shù)調(diào)用602。函數(shù)調(diào)用602包括存儲器指示符(描繪為“I-1”)以向存儲器106指示存儲器分配。函數(shù)調(diào)用602可進一步包括參數(shù)以指示將把數(shù)據(jù)結(jié)構(gòu)或其它存儲器對象分配給此存儲器106、數(shù)據(jù)大小準則、哪一存儲器(如果函數(shù)調(diào)用存儲器指示符指示除特定存儲器之外的存儲器級別、層級或類型),或類似者。

在一些實施方案中,API 622包括接受參數(shù)的通用存儲器分配函數(shù)調(diào)用604,包括將被分配的數(shù)據(jù)結(jié)構(gòu)128(在函數(shù)調(diào)用604中描繪為“DS”)和用以指示將把數(shù)據(jù)結(jié)構(gòu)128分配給哪一存儲器106的存儲器指示符(“I-1”)。在一些實施方案中,存儲器指示符(“I-1”)可指示存儲器級別(I、II)、多個存儲器、多個存儲器級別,或類似者。此外,不同的實施方案可允許或需要若干參數(shù)中的任一者,例如,數(shù)據(jù)結(jié)構(gòu)類型、數(shù)據(jù)結(jié)構(gòu)部分、分配大小限制,和類似者。如所示出,當處理器核心111執(zhí)行包括經(jīng)由API 622對庫620的存儲器分配函數(shù)調(diào)用602、604、606中的任一者的軟件程序624時,庫620指示操作系統(tǒng)621將把數(shù)據(jù)結(jié)構(gòu)128分配給由存儲器指示符(“I-1”)識別的存儲器106。雖然所示出的實施方案針對存儲器分配函數(shù)調(diào)用602、604使用標準C庫“malloc”,但還可容易將這些技術(shù)應用于其它編程語言及其相應的存儲器分配接口。在一些實施方案中,使用指令606或其它注釋類語法以通過經(jīng)由存儲器指示符直接向編譯器指定特定存儲器或存儲器級別而指定存儲器分配。舉例來說,在一些實施方案中,指令606由編譯器處理,且將信息傳遞到庫620或操作系統(tǒng)621。

不同的實施方案可采用不同的約定來處置分配。舉例來說,在一些實施方案中,由函數(shù)調(diào)用602、604或指令606的存儲器指示符指定的存儲器分配是嚴格要求,使得如果所指示的存儲器106不具有足夠的可用存儲器空間來滿足存儲器分配請求,那么分配將失敗(例如,函數(shù)調(diào)用602、604可使“空”指針與“I-1”存儲器指示符一起返回)。在其它實施方案中,由函數(shù)調(diào)用602、604或指令606指定的存儲器分配更多地被看作建議,使得如果所指示的存儲器106不具有足夠的可用存儲器空間來滿足存儲器分配請求,那么操作系統(tǒng)621分配除了(例如)根據(jù)其它探試程序、任意地或類似者所指定的數(shù)據(jù)結(jié)構(gòu)之外的數(shù)據(jù)結(jié)構(gòu)128。至少一個實施方案中,如果不遵循由函數(shù)調(diào)用或指令指定的存儲器分配,那么處理系統(tǒng)100向程序員或其他用戶返回關(guān)于實際分配的額外信息。

庫620的一些實施方案提供“realloc”或“remap”函數(shù)調(diào)用,其命令(或建議)OS應將現(xiàn)有的分配重新分配給新的存儲器層級(任選地同時重新設(shè)定分配的大小)。變體可包括用以允許重新映射現(xiàn)有的存儲器分配的子集或區(qū)的接口。此外,庫620的一些實施方案提供額外的接口功能以幫助區(qū)分分配來自哪里。舉例來說,在一個實施方案中,如果“ptr”與存儲器106中的物理存儲器位置相關(guān)聯(lián),那么函數(shù)調(diào)用“類型whichMemory(ptr)”返回“I-1”。在一些實施方案中,這些存儲器分配技術(shù)與基于不一致存儲器地址(NUMA)的存儲器分配方案組合使用。

圖7是示出根據(jù)一些實施方案的用于在多級存儲器系統(tǒng)的存儲器之間的數(shù)據(jù)結(jié)構(gòu)的存儲器分配的示例性方法700的流程圖。為了易于參考,下文在圖6的多級存儲器系統(tǒng)101的示例性上下文中描述了方法700。方法700在框702處起始,借此當處理器核心111執(zhí)行包括對庫620的存儲器分配函數(shù)調(diào)用602、604的軟件程序624以將存儲器分配給數(shù)據(jù)結(jié)構(gòu)128時,處理系統(tǒng)100接收存儲器分配函數(shù)調(diào)用602、604。

在框704處,處理系統(tǒng)100經(jīng)由API 622存取庫620。庫620通過API 622向程序員或其他用戶提供數(shù)據(jù)結(jié)構(gòu)、算法,以及其它服務(wù),使得其充當用于軟件624的接口以將存儲器位置信息、偏好和類似者傳送到基礎(chǔ)系統(tǒng)軟件。因此,庫620有助于程序員或其他用戶經(jīng)由函數(shù)調(diào)用來指定存儲器分配。

在框706處,處理系統(tǒng)100識別函數(shù)調(diào)用602、604的存儲器指示符(在圖6中描繪為“I-1”)以確定分配的指定位置。舉例來說,存儲器指示符(“I-1”)可指定一個或多個存儲器106、107、108、109、一個或多個級別(I、II)、一個或多個存儲器層級、一個或多個存儲器類型,或類似者。存儲器指示符(“I-1”)可包括經(jīng)由函數(shù)調(diào)用傳遞的參數(shù)、與函數(shù)調(diào)用分開的語法指示符,或函數(shù)調(diào)用自身。

在框708處,處理系統(tǒng)100基于函數(shù)調(diào)用126的參數(shù)而識別數(shù)據(jù)結(jié)構(gòu)128的多個部分。在一些實施方案中,所述參數(shù)可通過識別以下各者來指定數(shù)據(jù)結(jié)構(gòu)128的所述部分:數(shù)據(jù)結(jié)構(gòu)128的類型、所述部分的邊界、所述部分的數(shù)據(jù)大小、所述部分的數(shù)據(jù)類型,或類似者??蓪?shù)據(jù)結(jié)構(gòu)128劃分為任何數(shù)目的任何大小的數(shù)據(jù)部分,包括表示整個數(shù)據(jù)結(jié)構(gòu)128的單個部分。

在框710處,操作系統(tǒng)621基于存儲器指示符(“I-1”)而在多級存儲器系統(tǒng)101的多個存儲器106、107、108、109之間分配數(shù)據(jù)結(jié)構(gòu)128的多個部分。舉例來說,響應于函數(shù)調(diào)用604包括存儲器指示符“I-1”和參數(shù)“DS”,操作系統(tǒng)621將整個數(shù)據(jù)結(jié)構(gòu)128分配給級別I的第一存儲器106。在一些實施方案中,處理系統(tǒng)100可將函數(shù)調(diào)用602、604及其指定的存儲器指示符“I-1”和參數(shù)看作建議而不是要求。一般來說,方法700通過以下操作而促進對多級存儲器系統(tǒng)的有效利用:允許程序員或其他用戶(包括應用軟件)使用包括存儲器指示符的函數(shù)調(diào)用或指令來管理數(shù)據(jù)結(jié)構(gòu)在多級存儲器系統(tǒng)的多個存儲器之間的分配。

在一些實施方案中,上文所描述的技術(shù)的某些方面可由執(zhí)行軟件的處理系統(tǒng)的一個或多個處理器實施。所述軟件包括存儲在或另外有形地體現(xiàn)在非暫時性計算機可讀存儲媒體上的一或多組可執(zhí)行命令。所述軟件可包括命令和某些數(shù)據(jù),其當由一個或多個處理器執(zhí)行時會操縱所述一個或多個處理器執(zhí)行上文所描述的技術(shù)的一個或多個方面。所述非暫時性計算機可讀存儲媒體可包括(例如)磁盤或光盤存儲裝置、固態(tài)存儲裝置,例如快閃存儲器、高速緩沖存儲器、隨機存取存儲器(RAM),或其它非易失性存儲器裝置,和類似者。存儲在非暫時性計算機可讀存儲媒體上的可執(zhí)行命令可呈由一個或多個處理器解譯或可以其它方式執(zhí)行的源代碼、匯編語言代碼、目標代碼,或其它命令格式。

應注意,不需要上文在一般描述中所描述的所有活動或要素,可能不需要特定活動或裝置的一部分,且可執(zhí)行一個或多個其它活動,或包括除了所描述的要素之外的要素。此外,列舉活動的次序不一定是執(zhí)行活動的次序。而且,已經(jīng)參考特定實施方案描述了概念。然而,本領(lǐng)域技術(shù)人員應了解,可在不脫離所附權(quán)利要求書中所陳述的本公開的范圍的情況下作出各種修改和改變。因此,可在說明性意義而不是限制性意義上對待說明書和圖,且希望所有此類修改包括在本公開的范圍內(nèi)。

上文已關(guān)于特定實施方案描述了益處、其它優(yōu)勢和問題的解決方案。然而,這些益處、優(yōu)勢、問題的解決方案以及可導致任何益處、優(yōu)勢或解決方案發(fā)生或變得更加突出的任何特征不應被解釋為任何或所有權(quán)利要求的關(guān)鍵、所需或?qū)嵸|(zhì)特征。另外,上文公開的特定實施方案僅是說明性的,因為所公開的標的可以按受益于本文教導的本領(lǐng)域技術(shù)人員顯而易見的不同但等效的方式加以修改和實踐。除了所附權(quán)利要求書中所描述的內(nèi)容之外,不希望對本文示出的構(gòu)造或設(shè)計的細節(jié)進行限制。因此顯然的是,可更改或修改上文所公開的特定實施方案,且所有此類變化都被視為在所公開的標的的范圍內(nèi)。因此,本文尋求的保護在所附權(quán)利要求書中予以陳述。

當前第1頁1 2 3 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
平塘县| 卓资县| 杭锦旗| 古田县| 灵台县| 新沂市| 广宁县| 盐城市| 阿合奇县| 巴彦淖尔市| 陆河县| 东城区| 开化县| 棋牌| 苍南县| 改则县| 北宁市| 肃北| 嵊州市| 麻栗坡县| 志丹县| 柳河县| 闽侯县| 新津县| 黄平县| 介休市| 宜良县| 兴义市| 靖宇县| 乌鲁木齐县| 汉阴县| 南江县| 青冈县| 无极县| 郓城县| 南华县| 雅江县| 株洲市| 永修县| 涞源县| 达尔|