專利名稱:基于流式傳輸提示的預(yù)取的制作方法
技術(shù)領(lǐng)域:
一般來說,本7〉開涉及信息處理系統(tǒng),更具體地說,涉及應(yīng)用程 序軟件的有效NVM緩存。
背景技術(shù):
10 如今正涌現(xiàn)出減少硬盤驅(qū)動器I/O等待時間和帶寬瓶頸的多種能
力。 一種能力是利用更快響應(yīng)的NVM (非易失性存儲器)存儲,如 閃存技術(shù),它們沒有驅(qū)動頭尋找和行進時間的機械延遲。這些NVM 機制可便于比磁盤驅(qū)動器更快速地執(zhí)行應(yīng)用程序。本文所用的術(shù)語 "NVM"和"非易失性"用于涵蓋執(zhí)行時間比磁盤存儲裝置快的更快 15速、更敏感的非易失性存儲裝置類型,如閃存。
而且,可以利用緩存算法來定義將什么樣的文件存儲(有時稱為 "扣住(pin)")在諸如閃存的NVM存儲器中。目前的解決方法允 許跟蹤文件的特定使用才莫式并試圖將經(jīng)常使用的文件保留在NVM存 儲器中以實現(xiàn)更快速的訪問和應(yīng)用程序加載時間??圩≡贜VM存儲 20 器中的文件于是提供比只利用HDD、 CPU和系統(tǒng)存儲器的情形更好 的性能。除了傳統(tǒng)的CPU和系統(tǒng)存儲器高速緩存外,這在緩存架構(gòu)中 增加了額外一層。
一組獨立的新興軟件技術(shù)正圍繞應(yīng)用程序流式傳輸或"軟件即服 務(wù)(SaaS)"展開。本文所用的SaaS是指從本地磁盤運行從中央位 25 置流式傳輸給客戶機的應(yīng)用程序的能力。也可以纟爰存應(yīng)用程序(保留 在客戶機上),這樣用戶就不必在下次執(zhí)行應(yīng)用程序時等待從網(wǎng)絡(luò)重 新加載應(yīng)用程序,或者在用戶完成后可以從系統(tǒng)自動移除應(yīng)用程序。 流式傳輸?shù)膽?yīng)用程序的關(guān)鍵目的之一是采用在流式傳輸完整個應(yīng)用
程序之前客戶機就可以開始執(zhí)行應(yīng)用程序的方式來流式傳輸應(yīng)用程
序。為此,SaaS應(yīng)用程序識別將如何加載可執(zhí)行文件和數(shù)據(jù)文件,并 以最佳方式將它們發(fā)送給客戶機。另外,參與SaaS的客戶機通常緩 存流式傳輸?shù)膽?yīng)用程序數(shù)據(jù),以使得在內(nèi)容沒有變化時不必在隨后運 行時重新發(fā)送數(shù)據(jù)。即,每次用戶想要運行應(yīng)用程序時,SaaS應(yīng)用程 序可以進行檢查,以便查看是否存在應(yīng)用程序的新版本。如果存在, 則用戶可以下載整個新版本,或者只下載差別部分。否則,用戶可以 運行應(yīng)用程序的之前存儲的副本。
發(fā)明內(nèi)容
一種計算機實施的方法,包括 在客戶機計算機系統(tǒng)上從服務(wù)器接收流式傳輸?shù)膽?yīng)用程序的至 少一個組件;
將所述至少一個組件存儲在所述計算機系統(tǒng)的磁盤中; 在完成剩余應(yīng)用程序組件的流式傳輸之前啟動所述應(yīng)用程序在
所述客戶機計算機系統(tǒng)上的執(zhí)行;
利用提示來確定將要預(yù)取到所述計算機系統(tǒng)的非易失性存儲裝 置中的所述應(yīng)用程序組件的下一個應(yīng)用程序組件;以及
將所述下一個應(yīng)用程序組件從所述磁盤預(yù)取到所述非易失性存儲裝置中;
其中,所述提示是包括以下提示的集合中的一種或多種類型的提 示由所述服務(wù)器生成的流式傳輸加載次序提示,以及由所述客戶機 計算機系統(tǒng)生成的基于運行時概況數(shù)據(jù)的客戶機生成的提示。 一種產(chǎn)品,包括 具有多個機器可訪問指令的有形存儲介質(zhì);
其中,當處理器執(zhí)行所述指令時,所述指令提供以下操作
在客戶機計算機系統(tǒng)上從服務(wù)器接收流式傳輸?shù)膽?yīng)用程序 的至少一個組件;
將所述至少一個組件存儲在所述計算機系統(tǒng)的存儲器中;
在完成剩余應(yīng)用程序組件的流式傳輸之前啟動所述應(yīng)用程
序在所述客戶機計算機系統(tǒng)上的執(zhí)行;
利用提示來確定將要預(yù)取到所述計算機系統(tǒng)的非易失性存 5 儲裝置中的所述應(yīng)用程序組件的下一個應(yīng)用程序組件;以及
將所述下一個應(yīng)用程序組件從所述存儲器預(yù)取到所述非易 失性存儲裝置中;
其中,所述提示是包括以下提示的集合中的一種或多種類型 的提示由所述服務(wù)器生成的流式傳輸加載次序提示,以及由所i4^ 10 戶機計算機系統(tǒng)生成的基于運行時概況數(shù)據(jù)的客戶機生成的提示。 一種系統(tǒng),包括 處理器;
耦合到所述處理器的非易失性存儲器;
耦合到所述處理器和所述非易失性存儲器的DRAM存儲器;以
15 及
利用提示來確定應(yīng)用程序的下一個組件的NV管理器;
所述NV管理器從所述非易失性存儲器中逐出具有比所述下一個 應(yīng)用程序組件^f氐的扭無率的應(yīng)用程序組件;并且
所述NV管理器還將所述下一個應(yīng)用程序組件從所述DRAM存儲 20 器預(yù)取到所述非易失性存儲器中;
其中,所述提示是包括以下提示的集合中的一種或多種類型的提 示基于運行時概況數(shù)據(jù)的提示,以及經(jīng)由應(yīng)用程序編程-接口 (API) 由所述應(yīng)用程序提供到所述NV管理器的動態(tài)運行時提示。
25
參照附圖,可以理解本發(fā)明的實施例,附圖中,類似的元件由類 似的數(shù)字表示。這些圖不是用來限制,而是用來說明利用提示來在客 戶機端有效地纟爰存應(yīng)用程序軟件的系統(tǒng)、方法和機制的選定實施例。圖1是示出利用提示來優(yōu)化流式傳輸?shù)膽?yīng)用程序組件在客戶機上 的非易失性存儲裝置中的存儲的方法的至少 一個實施例的數(shù)據(jù)和控 制流程圖。
圖2是示出如圖1所示的一般方法100的兩個不同的特定備選實 5 施例的流程圖。
圖3是根據(jù)本發(fā)明的一個實施例、包括多分支總線通信路徑的多 處理器系統(tǒng)的框圖。
圖4是根據(jù)本發(fā)明的一個實施例、包括點對點互連的多處理器系 統(tǒng)的框圖。
10
具體實施例方式
以下論述描述了利用提示來優(yōu)化流式傳輸?shù)膽?yīng)用程序組件在客 戶機上的非易失性存儲裝置中的存儲的方法、系統(tǒng)和機制的選定實施 例。本文所述的設(shè)備、系統(tǒng)和方法實施例可以與單核、多核
15 ( many-core/multi-core )系統(tǒng)一起使用。在以下描述中,闡述了諸如 系統(tǒng)配置、方法處理的特定操作次序以及通用方法處理的特定備選實 施例的眾多具體細節(jié),以便更充分地了解本發(fā)明的實施例。但是,本 領(lǐng)域的技術(shù)人員將明白,即使沒有這些具體細節(jié),也可以實現(xiàn)本發(fā)明。 另外,沒有詳細示出一些熟知的結(jié)構(gòu)、電路等,以便不必要地使本發(fā)
20 明晦澀難懂。
本文介紹用于優(yōu)化流式傳輸?shù)膽?yīng)用程序組件在非易失性存儲高 速緩存中的存儲的方法和系統(tǒng)的實施例。這些實施例可以4是供對諸如 扣住最近用過的或頻繁使用的文件的當前技術(shù)的性能改進。具體來 說,這些實施例執(zhí)行以最佳方式將流式傳輸?shù)膽?yīng)用程序組件(例如,
25 包括可執(zhí)行(DLL/EXE)文件和數(shù)據(jù)文件)預(yù)取到非易失性存儲裝置 中。
傳統(tǒng)的應(yīng)用程序流式傳輸方法通常沒有將注意力集中在在客戶 機端上有效地存儲應(yīng)用程序。 一些應(yīng)用程序廠商致力于有效地流式傳
輸(streaming)應(yīng)用程序的方法,并且可以在收集概況(profile)數(shù)據(jù)以便 確定最有效的方式來進行流式傳輸數(shù)據(jù)的同時運行應(yīng)用程序,從而使 得在整個下載完成之前就可以在客戶機端上運行應(yīng)用程序??梢岳?概況數(shù)據(jù)來確定將應(yīng)用程序組件流式傳輸給客戶機的次序,即確定首
5先要下載哪些片段?;诟艣r數(shù)據(jù)的次序確定可以由包裝器邏輯(例 如,參見圖1中的121 )來執(zhí)行。
因此,軟件廠商可以嘗試對流進行優(yōu)化。如果較早需要的應(yīng)用程 序組件在稍后還沒有置于包(package)中,則客戶機端上的應(yīng)用程序通 常必須停止,直到所需的組件到達那里為止。為了試圖避免這種停止,
10包裝器將這些片段排序后流式傳輸?shù)?包"中。
圖1是示出利用流式傳輸提示來優(yōu)化流式傳輸?shù)膽?yīng)用程序組件在 客戶機上的非易失性存儲裝置中的存儲的方法100的至少一個實施例 的數(shù)據(jù)和控制流程圖。根據(jù)方法100存儲在客戶機的非易失性存儲裝 置中的流式傳輸?shù)膽?yīng)用程序組件可以從諸如磁盤的客戶機的較緩慢
15的存儲介質(zhì)中檢索到。因此,方法100利用流式傳輸提示來優(yōu)化/人車交 緩慢的存儲介質(zhì)到非易失性高速緩存中的預(yù)取。
一般來說,方法100用經(jīng)確定在應(yīng)用程序執(zhí)行期間客戶機接下來 最有可能請求的應(yīng)用程序組件(可執(zhí)行、動態(tài)鏈接庫、數(shù)據(jù)等)填充 NVM高速緩存。在將高概率數(shù)據(jù)請求到較低級高速緩存中之后,接
20 著可以將它從非易失性高速緩存中逐出(evict),并且可以預(yù)取進下一 個最高概率的組件。
圖l示出,方法100在方框102開始,并且進行到方框103。在 方框103,響應(yīng)用戶動作而啟動應(yīng)用程序。當在方框103啟動應(yīng)用程 序時,確定是否應(yīng)當將一個或多個應(yīng)用程序組件乂人服務(wù)器120流式傳
25輸給客戶機磁盤存儲裝置130。如果是,則處理進行到方框104。否 則,處理進行到方框110。
在啟動時,有可能客戶機之前已經(jīng)執(zhí)行過應(yīng)用程序,這樣應(yīng)用程 序的至少 一些組件之前已經(jīng)流式傳輸給客戶機,并且已經(jīng)存儲到磁盤
130。如果不需要服務(wù)器拉取(pull)(例如,之前已經(jīng)將所有的必需組 件流式傳輸給客戶機磁盤存儲裝置130),那么處理從方框103進行 到方框110。
在其它情況下,之前沒有將應(yīng)用程序流式傳輸給客戶機;因此需 5 要服務(wù)器拉取。對于這些情況,圖1示出,處理從方框103進行到方 框104。
對于之前已經(jīng)流式傳輸應(yīng)用程序的情形,仍可能需要將至少一些 應(yīng)用程序組件從服務(wù)器重新流式傳輸給客戶機。例如,后一情形可以 包括客戶機不具有經(jīng)過修改的應(yīng)用程序組件的最新版本的情形。在這
10些情況下,處理從方框103進行到方框110。
在方框104,客戶機開始從流式傳輸服務(wù)器120接收一個或多個 流式傳輸?shù)膽?yīng)用程序組件。為了說明的目的,示出一組示范性流式傳 輸?shù)膽?yīng)用程序組件160。但是,無論如何不應(yīng)將該圖示160視為是對 可以在方框104流式傳輸給客戶機的應(yīng)用程序組件的數(shù)量、種類或次
15 序方面進行限制。
對于至少一個實施例,在方框104以最佳方式將應(yīng)用程序的組件 160流式傳輸給客戶才幾。因此,在方框104,以允許在流式傳輸完所 有應(yīng)用程序組件之前就開始在客戶機上執(zhí)行應(yīng)用程序的方式將應(yīng)用 程序組件流式傳輸給客戶機并由客戶機接收。在方框104,客戶機將
20所接收的應(yīng)用程序組件保存到磁盤存儲裝置130。
從方框104,處理可以視情況進行到方框106 (將在下文進一步 詳細論述)。對于其它實施例,跳過方框106,處理^見情況可以改為 進行到方框110 (將在下文進一步詳細論述)。對于其它實施例,跳 過方框IIO,處理改為進行到方框112。
25 關(guān)于可選方框106和110,應(yīng)當了解,可以采用各種方式確定供
方法100用來得出將應(yīng)用程序組件從磁盤130預(yù)取到非易失性存儲裝 置140中的次序的提示。本文所論述的實施例規(guī)定,加載提示可以由 流式傳輸端、客戶才幾端或兩端確定。即,特定系統(tǒng)可以才丸行106、 110 或兩者。
對于那些利用由流式傳輸實體提供的提示的實施例(例如,參見
方框106),客戶機得出的提示生成110是可選的。客戶機得出的提 示生成110的可選性由圖1中的虛線表示。
5 類似地,對于那些利用客戶機生成的提示的實施例(例如,參見
方框110),利用由流式傳輸實體提供的提示是可選的。利用由流式 傳輸實體提供的提示106的可選性由圖1中的虛線表示。
關(guān)于方框106,加載提示可以從流式傳輸實體120的包裝器邏輯 121得出。通常,在傳送了應(yīng)用程序且本地存儲了應(yīng)用程序之后,就
10 丟棄用于優(yōu)化網(wǎng)絡(luò)流的所有認知。但是,圖l示出,除了在方框104 將流式傳輸?shù)膽?yīng)用程序組件存儲到磁盤之外,方法100的實施例還可 以4W青況在方框106將加載次序或概況存儲到磁盤130。
對于至少一個實施例,在方框106存儲的提示可以是包中各項的 十分簡單的次序。即,這些提示可以只是加載次序本身。對于至少一
15 個實施例,加載次序由流式傳輸應(yīng)用程序包裝器邏輯(它可以將它的 加載次序確定建立在由流式傳輸實體得出的概況數(shù)據(jù)上)確定。包裝 器邏輯121可以向客戶機提供加載序列映射(又稱為指示優(yōu)化的加載 次序的"清單(manifest)")。
在方框106,可以將該清單與流式傳輸?shù)膽?yīng)用程序組件一起存儲
20 到磁盤130。如下文將進一步詳細解釋,可以在方框112查閱所存4諸 的清單以便確定將要預(yù)取到非易失性存儲裝置中的下一個應(yīng)用程序 組件。以此方式,在方框106,從流式傳輸應(yīng)用程序包裝器邏輯得出 加載提示,并在方框112,利用這些加載提示來告知預(yù)取次序。
對于至少一個其它實施例,提示(另外稱為概況)還可以包括基
25 于概況數(shù)據(jù)確定的在不久的將來才莫塊將被調(diào)用的概率。有效流式傳輸 的應(yīng)用程序的復(fù)雜性的一個顯著部分是以最佳方式將應(yīng)用程序打包 以便網(wǎng)絡(luò)流更像加載相關(guān)性的序列。因此,可以在方框106存儲概況 數(shù)據(jù)或有關(guān)加載次序概率的其它指示。 本領(lǐng)域的技術(shù)人員將了解,提供如圖l所示的操作方框的次序只 是為了說明的目的,不應(yīng)將它視為是限制性的。例如,方法100的備
選實施例可以在開始將流式傳輸?shù)膽?yīng)用程序組件存儲到磁盤(104 ) 之前存儲加載提示(106)。 5 對于至少一個其它實施例,可以在方框110通過客戶機得出加載
提示,而不是通過流式傳輸實體提供加載提示。例如,應(yīng)用程序本身 可以利用 一種系統(tǒng),該系統(tǒng)允許軟件廠商定義用于執(zhí)行它們的應(yīng)用程 序的文件的扣住優(yōu)先權(quán)層級。該實施例允許,如果應(yīng)用程序知道不久 將需要一個文件(或其它任意的數(shù)據(jù)塊),那么可以在方框112直接 10 提供提示,以指示應(yīng)當將該文件從磁盤傳送給非易失性存儲裝置。其 一個實例可以是在多級游戲中,在RAM外進行當前一級的同時,游 戲指示將下一級從磁盤預(yù)先加載到閃存中。當當前一級完成時,即使
用戶之前從不曾玩過這一級,也可以經(jīng)由這種預(yù)取方案大大改進加載 時間。
15 由應(yīng)用程序本身生成的預(yù)取提示可以比傳統(tǒng)的預(yù)取方案提供顯 著的性能優(yōu)點。例如,如果客戶機執(zhí)行不常使用的應(yīng)用程序,那么應(yīng)
高速緩存中。因此,不常執(zhí)行的應(yīng)用程序可以在快速執(zhí)行方面得益于 非易失性緩存(而通常只有經(jīng)常執(zhí)行的或最近執(zhí)行的文件才會得益于
20 非易失性存儲高速緩存加速)。
對于至少一個其它實施例,在方框110,客戶機基于應(yīng)用程序的 本地執(zhí)行利用對加載模式的本地概況分析(profiling)和檢測來得出提 示。對于該實施例,專欠件能力跟蹤應(yīng)用程序的加載才莫式,并在應(yīng)用程 序運行時建立關(guān)聯(lián)的"加載映射(loadmap)"。該加載映射可以存儲在
25 客戶機的存儲器存儲單元(例如,參見磁盤存儲裝置130)中。
此后,在方框112,接著可以利用所存儲的加載映射將來自加載 映射的高優(yōu)先級文件永久地存儲在NV存儲裝置中,或者在隨后執(zhí)行 應(yīng)用程序期間,利用所存儲的加載映射來確定將文件從磁盤130移到
NV存儲裝置140中的次序。
應(yīng)注意,盡管在方框110執(zhí)行概況分析并收集概況數(shù)據(jù),但基于 概況的加載提示可能尚不能確定。對于這些實例,如果基于客戶機端 概況的提示尚未生成,則可能需要在概況分析期間利用預(yù)取提示的清
5單加載次序。以此方式,甚至可以在第一次;敗況分析運行時就可以優(yōu) 化到非易失性存儲裝置140中的預(yù)取。
或者,不是在客戶機端上執(zhí)行應(yīng)用程序時創(chuàng)建概況數(shù)據(jù),而是可 以改為在流式傳輸期間確定客戶機得出的加載提示。即,可以在流式 傳輸應(yīng)用程序時在客戶機端上創(chuàng)建加載次序的清單。
10 對于上述每個備選實施例,可以通過不同的方式(服務(wù)器提供的
清單、應(yīng)用程序提供的提示、客戶機生成的概況或其任意組合)生成 方框112處所用的加載提示。對于這些實施例中的任何一個實施例, 可以將提示信息提供給非易失性高速緩存的預(yù)取控制邏輯(本文稱為 "NV預(yù)取管理器,,;例如,參見圖3中的355 )。
15 應(yīng)注意,對于至少一個實施例,方框112的處理可以包括在確定
哪一個應(yīng)用程序組件應(yīng)當是將要預(yù)取的下 一個應(yīng)用程序組件之后的 額外處理。例如,對于一個實施例,在方框112確定這"下一個"組 件是否已經(jīng)駐留在NV存儲高速緩存140中。如果是,那么方框112
20 NV預(yù)取管理器可以在方框114利用提示來優(yōu)化將磁盤緩存的應(yīng)
用程序預(yù)取到更快速的非易失性存儲高速纟爰存140中。在方框114, 將下一個應(yīng)用程序組件或其一部分取到非易失性存儲裝置140中。如 果需要,可以通過NV預(yù)取管理器逐出非易失性存儲裝置140的當前 內(nèi)容的一部分,以便為新取的內(nèi)容留出空間。
25 在方框116,確定應(yīng)用程序是否完成執(zhí)行。如果沒有,則處理向
后進行到方框110 (可選)或112。如果相反,應(yīng)用程序已經(jīng)完成執(zhí) 行,則處理在方框118結(jié)束。
總而言之,圖1示出利用關(guān)于加載執(zhí)行次序的提示來確定將要預(yù)
取到諸如快閃高速緩存(例如,參見140)的非易失性存儲裝置中的
下一個應(yīng)用程序組件的方法100。加載執(zhí)行次序可以通過各種方式(流
式傳輸清單、從應(yīng)用程序本身直接輸入和引導(dǎo)、和/或客戶機端監(jiān)視和 /或概況分析)中的任何一種或多種方式得出。以此方式,提供優(yōu)于當
5前技術(shù)的優(yōu)點,在當前技術(shù)下,即使在執(zhí)行特定應(yīng)用程序時有很大可
能需要文件,它們通常也不會預(yù)取不常使用的這些文件。結(jié)果導(dǎo)致
NV緩存的流式傳輸?shù)膽?yīng)用程序可以比標準的本地應(yīng)用程序更快速地 加載和執(zhí)行的最終用戶體驗。
圖2是示出如圖1所示的一般方法100的兩個不同的特定備選實 10 施例200、 250的流程圖。實施例200是利用服務(wù)器提供的清單來得 出對將應(yīng)用程序組件預(yù)取到非易失性存儲裝置中的次序的提示的方 法。實施例250是利用應(yīng)用程序提供的API請求在應(yīng)用程序處理期間 為將應(yīng)用程序組件預(yù)取到非易失性存儲裝置中的次序動態(tài)地得出提 示的方法。
15 對于至少一個實施例,如圖2所示的方法250可以實施為圖1的
備選實施例,其中不一定從服務(wù)器流式傳輸應(yīng)用程序組件。即,對于 方法250的至少一個實施例,不執(zhí)行如圖1中的方框104所示的流式 傳輸操作,并且在系統(tǒng)中不存在流式傳輸服務(wù)器120。對于該備選實 施例,如下文所論述,可以按傳統(tǒng)方法將應(yīng)用程序組件安裝到系統(tǒng)上,
20而不必進4于流式傳車lr 。
圖2中提供這些具體實施例是為了進一步說明的目的。但是,為 簡單起見,只示出兩個具體實施例200、 250,這兩個實施例是從如圖 1所示的方法100的眾多備選實施例中任意選出的。而圖2中沒有具 體示出的其它實施例由隨附權(quán)利要求以及如圖1所示的方法100的處
25理所涵蓋。因此,盡管圖2中沒有明確示出某些特定實施例,如利用 客戶機端概況分析來生成加載次序提示的方法100以及諸如各種混合 方法,但是無論如何不應(yīng)將該事實視為是對隨附權(quán)利要求的范圍的限 制。
圖2示出,方法200在方框202開始,并進行到方框204。方框 204的處理沿如上所述的圖1中的方框104的處理的線路進行。 一般 來說,在方框204,將應(yīng)用程序組件流式傳輸給客戶機,并由客戶機 接收。在方框204,客戶機將所接收的應(yīng)用程序組件保存到磁盤存儲 5裝置(例如,參見圖1中的130)。
處理從方框204進行到方框206。在方框206,同樣將加載次序 清單存儲到磁盤。接著,處理進行到方框208。在方框208,啟動應(yīng) 用程序,并進行檢查以便確定是否應(yīng)當從服務(wù)器拉取任何新的或經(jīng)修 改的應(yīng)用程序組件。如果是,則處理向后進行到方框204 (接收額外 10 的或經(jīng)修改的組件,并且可以在方框206接收更新后的清單)。否則, 處理接著進行到方框212。
在方框212, NV預(yù)取管理器(例如,參見圖3中的355 )利用流 式傳輸?shù)膽?yīng)用程序的清單提示來確定將要從磁盤取到非易失性存儲 裝置中的下一個應(yīng)用程序組件(或其一部分)。在方框214,將該內(nèi) 15容取到非易失性存儲裝置中。如上文關(guān)于圖1中的方框114所論述, 該取步驟214可能需要逐出非易失性存儲裝置中的某些當前內(nèi)容。
在方框216,確定應(yīng)用程序是否已經(jīng)完成執(zhí)行。如果沒有,則處 理向后進行到方框212。如果相反,應(yīng)用程序已經(jīng)完成執(zhí)行,則處理 在方框218結(jié)束。
20 圖2示出,方法250在方框252開始,并進行到方框254。在方
框254,客戶機將應(yīng)用程序組件存儲到磁盤(例如,參見圖1中的130)。 應(yīng)用程序組件可能已經(jīng)經(jīng)由流式傳輸而祐j妄收,或者它們可以用傳統(tǒng) 方法加載到客戶機。不管如何將組件引入到客戶機,在方框254,客 戶機將所接收的應(yīng)用程序組件保存到磁盤存儲裝置(例如,參見圖1
25中的130)。
處理從方框254進行到方框258。方框258沿方框208的線路(如 上文關(guān)于圖2所論述)進行。 一般來說,在方框258,啟動應(yīng)用程序, 并且如果需要,則執(zhí)行服務(wù)器拉取,以便接收額外的或經(jīng)更新的應(yīng)用
程序組件。接著,處理進行到方框260。
在方框260,在應(yīng)用程序執(zhí)行期間做出應(yīng)用程序提供的API請求, 以便向NV預(yù)取管理器(例如,參見圖3中的355 )提供加載次序提 示。在方框262, NV預(yù)取管理器(例如,參見圖3中的355 )利用這 5些提示來確定將要從磁盤取到非易失性存儲裝置中的下一個應(yīng)用程 序組件(或其一部分)。
在方框264,將該內(nèi)容取到非易失性存儲裝置中。如上文關(guān)于圖 1中的方框114所論述,該取步驟264可能需要逐出非易失性存儲裝 置中的某些當前內(nèi)容。 10 在方框266,確定應(yīng)用程序是否已經(jīng)完成執(zhí)行。如果沒有,則處
理向后進行到方框260。如果相反,應(yīng)用程序已經(jīng)完成執(zhí)行,則處理 在方框268結(jié)束。
圖3是能夠執(zhí)行所公開的技術(shù)的系統(tǒng)300的第一實施例的框圖。 系統(tǒng)300可以包括耦合到北橋390的一個或多個處理器370、 380。額 15外處理器380的可選性在圖3中用虛線表示。
北橋390可以是芯片組或芯片組的一部分。北橋390可以與處理 器370、 380通信,并控制處理器370、 380與存儲器332之間的交互。 北橋390還可以控制處理器370、 380與加速圖形端口 (AGP)活動 之間的交互。對于至少一個實施例,北橋390經(jīng)由諸如前端總線(FSB ) 20395的多分支總線與處理器370、 380通信。
圖3示出,北橋390可以耦合到稱為南橋318的另一個芯片組或 芯片組的一部分。對于至少一個實施例,南橋318處理系統(tǒng)300的輸 入/輸出(I/O)功能,從而控制與輸入/輸出組件的交互。各種裝置可 以耦合到南橋318,包括例如鍵盤和/或鼠標322、通信裝置326以及 25音頻I/O和其它I/O裝置314。
圖3示出,非易失性存儲器140可以耦合到南橋318。對于至少 一個實施例,非易失性存儲器140可以包括NV預(yù)取管理器355。對 于至少一個實施例,NV預(yù)取管理器355可以是如圖3所示的^5更件組 件(355 )的組合,但也可以包括軟件組件(未示出)?;蛘?,NV預(yù) 取管理器355可以實施為純硬件或純軟件組件,或者可以在固件中實 施。與具體實施無關(guān),NV管理器355可以沿上文關(guān)于圖1中的方框 112和144以及圖2中的方框212、 214、 262和264所論述的線路進 5 4于處理。
非易失性存儲器140可以是任何類型的非易失性存儲器,包括 NOR閃存和NAND閃存。對于至少一個備選實施例,非易失性存儲 器可以直接耦合到一個或多個處理器370、 380,而不是耦合到南橋。 實施例可以用許多不同的系統(tǒng)類型來實施?,F(xiàn)在參照圖4,示出
10 根據(jù)本發(fā)明的一個實施例的多處理器系統(tǒng)的框圖。如圖4所示,該多 處理器系統(tǒng)是一個點對點互連系統(tǒng),它包括經(jīng)由點對點互連450耦合 的第一處理器470和第二處理器480。如圖4所示,每個處理器470、 480都可以是包括第 一和第二處理器核心(即,處理器核心474a和474b 以及處理器核心484a和484b )的多核處理器。盡管為了便于說明沒
15 有示出,但第一處理器470和第二處理器480 (更具體地說,是其中 的核心)可以包括根據(jù)本發(fā)明的一個實施例的補片(patch)預(yù)防邏輯(見 圖2中的200)。
不是如上文關(guān)于圖3所示的那樣具有北橋和南橋,如圖4所示的 系統(tǒng)400改為具有集線器架構(gòu)。該集線器架構(gòu)可以包括集成到每個處 20理器470、 480中的集成式存儲器控制器集線器(MCH) 472、 482。 芯片組490 (有時又稱為接口控制器集線器"IHC")可以提供對圖 形和AGP的控制。
因此,第一處理器470還包括存儲器控制器集線器(MCH) 472 和點對點(P-P)接口 476和478。類似地,第二處理器480包括MCH 25482以及P-P接口 486和488。如圖4所示,MCH 472和482將處理 器耦合到相應(yīng)的存儲器,即存儲器432和存儲器434,它們可以^ 部附著到相應(yīng)處理器的主存儲器的部分。
盡管在圖4中示為集成到處理器470、 480中,但存儲器控制器 集線器472、 482不一定要這樣集成。對于至少一個備選實施例,MCH 472和482的邏輯可以分別位于處理器470、 480的外部。對于該實施 例,包含MCH 472和482的邏輯的一個或多個存儲器控制器可以分 別耦合在處理器470、 480與存儲器432、 434之間。例如,對于該實 5 施例,存儲器控制器可以是獨立邏輯,或者可以并入到芯片組490中。 第一處理器470和第二處理器480可以分別經(jīng)由P-P互連452和 454耦合到芯片組或ICH490。如圖4所示,芯片組490包括P-P^妄口 494和498。此外,芯片組490還包括用于將芯片組490與高性能圖 形引擎438耦合的接口 492。對于至少一個實施例,可以利用高級圖
10 形端口 (AGP)總線439來將圖形引擎438耦合到芯片組490。 AGP 總線439可以符合由加利福尼亞州圣塔克拉拉的英特爾公司(Intel Corporation, Santa Clara, California)在1998年5月4日乂>布的 v4cce/era^<i Grap/2/cy Port /"fe/^ce S/ ecz//a^z'ow (力口速圖形端口 口夫見 范)2.0版?;蛘?,點對點互連439可以耦合這些組件。
15 芯片組490又可以經(jīng)由接口 496耦合到第一總線416。對于至少
一個實施例,第一總線416可以是如1995年6月公布的PC7丄oca/Sws 5^ec7yk^/077, Pradwc"cw reraz'o/ , i ev/i7.ow 2.7(PCI本地總線^見范,產(chǎn)品 版本,修訂版2.1)所定義的外圍組件互連(PCI)總線。或者,笫一總 線416可以是諸如PCI Express總線或另 一種第三代輸入/輸出(I/O )
20互連總線的總線,但本發(fā)明的范圍不受此限制。
如圖4所示,各種I/O裝置414可以與諸如閃存的非易失性高速 緩存140 —起耦合到第一總線416。非易失性高速緩存140可以包括 如上文參照圖1和圖2所論述的用于確定應(yīng)用程序信息的預(yù)取次序的 NV預(yù)取管理器355。
25 總線橋418可以將第一總線416耦合到第二總線420。對于至少
一個實施例,第二總線420可以是低管腳數(shù)(LPC)總線。
各種裝置可以耦合到笫二總線420,包括例如鍵盤/鼠標422、通 信裝置426和在一個實施例中包括代碼430的數(shù)據(jù)存儲單元428。此
夕卜,音頻1/0 424也可以耦合到第二總線420。注意,其它架構(gòu)也是可 以的。例如,取代圖4中的點對點架構(gòu),系統(tǒng)可以實施多分支總線或 另一種這樣的架構(gòu)。
本文公開的機制的實施例可以在硬件、軟件、固件或這些實施方 5法的組合中實施。本發(fā)明的實施例可以實施為在可編程系統(tǒng)上^l行的 計算機程序,這些可編程系統(tǒng)包括至少一個處理器、數(shù)據(jù)存儲系統(tǒng)(包 括易失性和非易失性存儲器和/或存儲元件)、至少一個輸入裝置以及 至少一個輸出裝置。
可以對輸入數(shù)據(jù)應(yīng)用程序代碼以便執(zhí)行本文所述的功能并生成 10 輸出信息。因此,本發(fā)明的備選實施例還包括機器可訪問介質(zhì),機器 可訪問介質(zhì)包含用于執(zhí)行本發(fā)明的操作的指令或包含定義本文所述 的結(jié)構(gòu)、電路、設(shè)備、處理器和/或系統(tǒng)特征的諸如HDL的設(shè)計數(shù)據(jù)。 這些實施例又可稱為程序產(chǎn)品。
這些機器可訪問存儲介質(zhì)可以包括但不限于由機器或裝置制造 15或形成的有形粒子裝置,包括諸如下列的存儲介質(zhì)硬盤;包括軟盤、 光盤、緊密盤只讀存儲器(CD-ROM)、可復(fù)寫緊密盤(CD-RW)及 磁-光盤在內(nèi)的任何其它類型的盤;半導(dǎo)體裝置,如只讀存儲器 (ROM),諸如動態(tài)隨機存取存儲器(DRAM)、靜態(tài)隨機存取存儲 器(SRAM)的隨機存取存儲器(RAM),可擦除可編程只讀存儲器 20 (EPROM),閃存,電可擦除可編程只讀存儲器(EEPROM),磁 或光卡;或適于存儲電子指令的任何其它類型的介質(zhì)。
可以用已知方式對一個或多個輸出裝置應(yīng)用輸出信息。為了該應(yīng) 用,處理系統(tǒng)包括具有諸如數(shù)字信號處理器(DSP)、微控制器、專 用集成電路(ASIC)或微處理器的處理器的任何系統(tǒng)。 25 可以用高級程序語言或面向?qū)ο缶幊陶Z言來實現(xiàn)程序以便與處
理系統(tǒng)通信。如果需要,也可以用匯編或機器語言來實現(xiàn)程序。實際 上,本文所述的機制的范圍不限于任何特定的編程語言。在任何情況 下,語言可以是編譯或解釋語言。
盡管示出并描述了本發(fā)明的特定實施例,但—對于本領(lǐng)域的技術(shù)人 員顯而易見的是,在不偏離隨附權(quán)利要求的范圍的情況下,可以做出 改變和修改。例如,盡管圖2中沒有具體示出,但如圖l所示的方法
5 示。對于該實施例,應(yīng)用程序初始運行(在此期間收集積克況數(shù)據(jù))可 以利用、也可以不利用任何加載次序提示。例如,對于至少一個實施 例。應(yīng)用程序的初始運行可以利用服務(wù)器提供的清單提示,并且之后 的運行可以利用基于概況數(shù)據(jù)的客戶機生成的提示。
對于至少一個其它備選實施例,上文所述的任何加載次序提示都 10 可用作起始點(例如,加載提示可以來自服務(wù)器端或客戶機端)。此 后,可以在運行時基于客戶機端跟蹤的行為來調(diào)整加載次序。該實施 例產(chǎn)生關(guān)于如何處理隨后更新的問題。
流式傳輸?shù)膽?yīng)用程序在有新的更新之前都可保留在磁盤上。如果 軟件廠商不認為新更新會明顯地改變概率(例如,微型工具或宏),
更新。相反,如果更新是應(yīng)用程序的一個經(jīng)常執(zhí)行的主可執(zhí)行文件, 那么廠商也可以提供概況更新。如果客戶機已經(jīng)在運行時修改了原始 提示,那么該概況更新可能不準確。在此情況下,廠商提供的提示可 能會不當?shù)馗矊懣蛻魴C的專門提示。因此,對于本段中論述的備選實 20 施例,可以采用機制來防止對客戶機增強的概況數(shù)據(jù)的不當服務(wù)器覆 寫。 一個這樣的機制是在做出更新時由客戶機將它對經(jīng)過修訂的應(yīng)用 程序組件的更新的概況數(shù)據(jù)發(fā)送給服務(wù)器,并且服務(wù)器可以據(jù)此調(diào)整 概況信息,以便考慮客戶機得出的信息。
而且,例如,備選實施例可以采用如上所述的NAND和NOR閃 25 存以外的其它類型的非易失性存儲器。
而且,例如,采用如隨附權(quán)利要求所述的技術(shù)的系統(tǒng)可以包括一
個或多個包含集成式圖形控制器的處理器(例如,參見圖4中的470、 480)。對于這些實施例,系統(tǒng)可以不包括獨立的圖形控制器438,或
者如果系統(tǒng)中存在這樣的控制器,那么它的功能可以比如圖4所示的
圖形控制器438更有限。
因此,本領(lǐng)域的技術(shù)人員將明白,在不偏離本發(fā)明的更廣泛的方 面的情況下,可以做出改變和修改。隨附權(quán)利要求將在它們的范圍內(nèi) 5涵蓋落在本發(fā)明的真實范圍內(nèi)的所有這些改變和修改。
權(quán)利要求
1.一種計算機實施的方法,包括在客戶機計算機系統(tǒng)上從服務(wù)器接收流式傳輸?shù)膽?yīng)用程序的至少一個組件;將所述至少一個組件存儲在所述計算機系統(tǒng)的磁盤中;在完成剩余應(yīng)用程序組件的流式傳輸之前啟動所述應(yīng)用程序在所述客戶機計算機系統(tǒng)上的執(zhí)行;利用提示來確定將要預(yù)取到所述計算機系統(tǒng)的非易失性存儲裝置中的所述應(yīng)用程序組件的下一個應(yīng)用程序組件;以及將所述下一個應(yīng)用程序組件從所述磁盤預(yù)取到所述非易失性存儲裝置中;其中,所述提示是包括以下提示的集合中的一種或多種類型的提示由所述服務(wù)器生成的流式傳輸加載次序提示,以及由所述客戶機計算機系統(tǒng)生成的基于運行時概況數(shù)據(jù)的客戶機生成的提示。
2. 如權(quán)利要求l所述的方法,還包括從所述非易失性存儲裝置中逐出信息,以便為所述下一個應(yīng)用程 序組件留出空間。
3. 如權(quán)利要求l所述的方法,其特征在于20 所述集合還包括由所述應(yīng)用程序提供的運行時提示。
4. 如權(quán)利要求3所述的方法,其特征在于 所述提示還包括所述集合中的至少兩種類型的提示。
5. 如權(quán)利要求4所述的方法,其特征在于,所述提示是以下類型 的提示25 由所述服務(wù)器生成的流式傳輸加載次序提示;以及由所述客戶機計算機系統(tǒng)生成的基于概況數(shù)據(jù)的客戶機生成的 提示。
6. 如權(quán)利要求3所述的方法,還包括 利用API (應(yīng)用程序編程接口 )將運行時提示從所述應(yīng)用程序提供到預(yù)取管理器。
7. 如權(quán)利要求l所述的方法,還包括 從所述服務(wù)器接收至少一個流式傳輸加載次序提示;以及 將所述流式傳輸加載次序提示存儲在所述存儲器中。
8. 如權(quán)利要求1所述的方法,還包括 生成運行時概況數(shù)據(jù);提示。
9.如權(quán)利要求l所述的方法,其特征在于,利用提示來確定將要預(yù)取到所述計算機系統(tǒng)的非易失性存儲裝置中的所述應(yīng)用程序組件的下一個應(yīng)用程序組件還包括確定所述應(yīng)用程序組件的一個特定應(yīng)用程序組件在不久的將來 >^執(zhí)行的概率高于所述應(yīng)用程序組件的其它應(yīng)用程序組件;以及 15 將所述應(yīng)用程序組件的所述一個特定應(yīng)用程序組件指定為將要 預(yù)取到所述非易失性存儲裝置中的下一個應(yīng)用程序組件。
10.如權(quán)利要求9所述的方法,還包括從所述非易失性存儲裝置中逐出具有比所述下一個應(yīng)用程序組 件低的概率的應(yīng)用程序組件。
11. —種產(chǎn)品,包括具有多個機器可訪問指令的有形存儲介質(zhì);其中,當處理器執(zhí)行所述指令時,所述指令提供以下操作在客戶機計算機系統(tǒng)上從服務(wù)器接收流式傳輸?shù)膽?yīng)用程序 的至少一個纟J/f牛; 將所述至少一個組件存儲在所述計算機系統(tǒng)的存儲器中;在完成剩余應(yīng)用程序組件的流式傳輸之前啟動所述應(yīng)用程 序在所述客戶機計算機系統(tǒng)上的執(zhí)行;利用提示來確定將要預(yù)取到所述計算機系統(tǒng)的非易失性存 儲裝置中的所述應(yīng)用程序組件的下一個應(yīng)用程序組件;以及將所述下一個應(yīng)用程序組件從所述存儲器預(yù)取到所述非易失性存儲裝置中;其中,所述提示是包括以下提示的集合中的一種或多種類型的提示由所述服務(wù)器生成的流式傳輸加載次序提示,以及由所述客戶機計算機系統(tǒng)生成的基于運行時概況數(shù)據(jù)的客戶機生成的提示。
12. 如權(quán)利要求11所述的產(chǎn)品,其特征在于,所述指令還提供以 下操作從所述非易失性存儲裝置中逐出信息,以便為所述下一個應(yīng)用程序組件留出空間。
13. 如權(quán)利要求11所述的產(chǎn)品,其特征在于 所述集合還包括由所述應(yīng)用程序提供的運行時提示。
14. 如權(quán)利要求13所述的產(chǎn)品,其特征在于 所述提示還包括所述集合中的至少兩種類型的提示。
15.如權(quán)利要求14所述的產(chǎn)品,其特征在于,所述提示是以下類型的提示由所述服務(wù)器生成的流式傳輸加載次序提示;以及 由所述客戶機計算機系統(tǒng)生成的基于概況數(shù)據(jù)的客戶機生成的 提示。
16.如權(quán)利要求13所述的產(chǎn)品,其特征在于,所述指令還提供以下操作利用API (應(yīng)用程序編程接口 )將運行時提示從所述應(yīng)用程序提 供到預(yù)取管理器。
17. 如權(quán)利要求11所述的產(chǎn)品,其特征在于,所述指令還提供以下操作從所述服務(wù)器接收至少一個流式傳輸加載次序提示;以及 將所述流式傳輸加載次序提示存儲在所述存儲器中。
18. 如權(quán)利要求11所述的產(chǎn)品,其特征在于,所述指令還提供以下操作生成運行時^fc況數(shù)據(jù);其中所述提示還包括基于所述運行時概況數(shù)據(jù)的客戶機生成的 提示。
19.如權(quán)利要求11所述的產(chǎn)品,其特征在于,提供利用提示來確定將要預(yù)取到所述計算機系統(tǒng)的非易失性存儲裝置中的所述應(yīng)用程 序組件的下 一個應(yīng)用程序組件的操作的所述指令還提供以下操作確定所述應(yīng)用程序組件的一個特定應(yīng)用程序組件在不久的將來 被執(zhí)行的概率高于所述應(yīng)用程序組件的其它應(yīng)用程序組件;以及 10 將所述應(yīng)用程序組件的所述一個特定應(yīng)用程序組件指定為將要 預(yù)取到所述非易失性存儲裝置中的下 一個應(yīng)用程序組件。
20. 如權(quán)利要求19所述的產(chǎn)品,其特征在于,所述指令還提供以 下操作從所述非易失性存儲裝置中逐出具有比所述下一個應(yīng)用程序組 15 件低的可能性的應(yīng)用程序組件。
21. —種系統(tǒng),包括 處理器;耦合到所述處理器的非易失性存儲器;耦合到所述處理器和所述非易失性存儲器的DRAM存儲器;以20 及利用提示來確定應(yīng)用程序的下一個組件的NV管理器;所述NV管理器從所述非易失性存儲器中逐出具有比所述下一個 應(yīng)用程序組件低的概率的應(yīng)用程序組件;并且所述NV管理器還將所述下一個應(yīng)用程序組件從所述DRAM存儲 25器預(yù)取到所述非易失性存儲器中;其中,所述提示是包括以下提示的集合中的一種或多種類型的提 示基于運行時積無況數(shù)據(jù)的提示,以及經(jīng)由應(yīng)用程序編程^接口 (API) 由所述應(yīng)用程序提供到所述NV管理器的動態(tài)運行時提示。
22. 如權(quán)利要求21所述的系統(tǒng),其特征在于所述NV管理器還從所述非易失性存儲器中逐出信息以^^為所述 下一個組件留出空間。
23. 如權(quán)利要求21所述的產(chǎn)品,其特征在于式的。
24. 如權(quán)利要求1所述的方法,其特征在于 所述非易失性存儲裝置是高速緩存存儲器。
全文摘要
本發(fā)明涉及基于流式傳輸提示的預(yù)取。一種處理器包括非易失性存儲器,可以將流式傳輸?shù)膽?yīng)用程序組件從較緩慢的存儲介質(zhì)預(yù)取到該非易失性存儲器中,以便減少應(yīng)用程序執(zhí)行期間的停止時間?;蛘?,預(yù)取到非易失性存儲器中的應(yīng)用程序組件可以來自以傳統(tǒng)方法加載的應(yīng)用程序而不是來自流式傳輸?shù)膽?yīng)用程序。將應(yīng)用程序的組件預(yù)取到非易失性存儲器中的次序可以基于加載次序提示。對于至少一個實施例,加載次序提示是從服務(wù)器端的加載排序邏輯得出的。對于至少一個其它實施例,加載次序提示由應(yīng)用程序本身通過諸如應(yīng)用程序編程接口的機制提供。對于至少一個其它實施例,加載次序提示由客戶機利用概況數(shù)據(jù)生成?;蛘撸梢允褂眠@些方法的組合。還描述和主張了其它實施例。
文檔編號G06F12/08GK101339514SQ20081009093
公開日2009年1月7日 申請日期2008年3月28日 優(yōu)先權(quán)日2007年3月29日
發(fā)明者S·格羅布曼, T·H·詹姆斯 申請人:英特爾公司