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

文件輸入/輸出調(diào)度器的制作方法

文檔序號(hào):2578633閱讀:248來(lái)源:國(guó)知局
專(zhuān)利名稱:文件輸入/輸出調(diào)度器的制作方法
技術(shù)領(lǐng)域
本發(fā)明實(shí)施例涉及計(jì)算機(jī)游戲以及有關(guān)的應(yīng)用,更具體地說(shuō),涉及計(jì)算游戲以及 有關(guān)應(yīng)用中的文件輸入/輸出(I/O)管理。
背景技術(shù)
很多軟件應(yīng)用(例如視頻游戲)包括文件輸入輸出(I/O)調(diào)度器,以使得應(yīng)用內(nèi)的 介質(zhì)存取更高效并且可靠。文件I/O調(diào)度器(“FI0S”)是中間件層,用于存取帶有若干部分 的文件,其包括調(diào)度器和可選I/O過(guò)濾器層。調(diào)度器典型地被設(shè)計(jì)為優(yōu)化地對(duì)I/O請(qǐng)求排 序,從而它們?cè)诜娜我庾罱K期限和優(yōu)先級(jí)約束的最短可能時(shí)間內(nèi)完成。過(guò)濾器層可以提 供額外服務(wù),例如解壓縮或緩存。很多不同游戲組件需要對(duì)存儲(chǔ)介質(zhì)中的文件的I/O存取。音頻組件加載音頻文 件;游戲玩樂(lè)引擎加載級(jí)別清晰度;圖形組件加載紋理地圖和模型;電影組件加載音頻視 頻文件;以及子系統(tǒng)加載大型WAD文件。介質(zhì)可以是游戲傳遞介質(zhì)(例如光盤(pán)(通用介質(zhì)盤(pán) (UMD)、致密盤(pán)(⑶)、數(shù)字視頻盤(pán)(DVD)、藍(lán)光盤(pán)(BD)等))、中間存儲(chǔ)介質(zhì)(例如硬盤(pán))、或隨著 平臺(tái)演進(jìn)的其它介質(zhì)類(lèi)型。單一應(yīng)用(例如視頻游戲)典型地具有多個(gè)組件,每一組件具有其自身的I/O需求。 某些需要對(duì)介質(zhì)的流式存取,其中,I/O系統(tǒng)將文件中的數(shù)據(jù)流送到組件,從而該組件可以 將流送來(lái)的數(shù)據(jù)連續(xù)呈現(xiàn)在游戲機(jī)上。例如,音頻組件典型地流送用于音軌回放的音頻文 件;電影組件流送音頻視頻內(nèi)容,用于播放器回放電影。其它組件僅需要非流送式存取,其 中,它們成塊地從文件檢索數(shù)據(jù),以供組件處理。這些組件不需要穩(wěn)固的數(shù)據(jù)流,但塊傳遞 時(shí)序一般是嚴(yán)格的。如果應(yīng)用未在需要時(shí)接收到數(shù)據(jù),則性能可能遭損。視頻游戲必須一般執(zhí)行相當(dāng)大量I/O。游戲事件一般是按時(shí)間驅(qū)動(dòng)的,具有必須被 滿足的最終期限。例如,如果玩家正從點(diǎn)A行進(jìn)到點(diǎn)B,則游戲需要具有用于在玩家達(dá)到點(diǎn) B之前加載的與點(diǎn)B關(guān)聯(lián)的數(shù)據(jù)的文件。游戲組件可以使用低級(jí)別I/O原語(yǔ)來(lái)從介質(zhì)檢索 數(shù)據(jù),但當(dāng)多個(gè)組件同時(shí)需要來(lái)自同一設(shè)備的數(shù)據(jù)時(shí),這些原語(yǔ)不處理設(shè)備競(jìng)爭(zhēng)。擁塞的I/ 0請(qǐng)求能夠中斷流送數(shù)據(jù)流,或者禁止關(guān)鍵數(shù)據(jù)塊在需要之時(shí)到達(dá)組件。較高級(jí)別系統(tǒng)(例 如989Soimd’S Streamsafe)至少提供對(duì)文件的可靠流存取,從而流送的數(shù)據(jù)不受中斷。遺 憾的是,這些系統(tǒng)僅分配單個(gè)數(shù)據(jù)流,而未很好地處理非流數(shù)據(jù)的競(jìng)爭(zhēng)。SCEA未提供對(duì)于正 常數(shù)據(jù)存取解決競(jìng)爭(zhēng)的標(biāo)準(zhǔn)層。因?yàn)閼?yīng)用的組件典型地不知道彼此的I/O活動(dòng),所以它們的I/O請(qǐng)求通常導(dǎo)致帶 有大量過(guò)度搜尋(對(duì)數(shù)據(jù)的前后搜索)的異常低效的I/O模式。隨著游戲增長(zhǎng)得較大,過(guò)度 搜尋和低效數(shù)據(jù)檢索增加。用于分布式介質(zhì)(例如⑶)的盤(pán)主控(disc mastering)可以通過(guò)各技術(shù)(例如頻繁復(fù)制所存取的數(shù)據(jù)塊,并且穿過(guò)盤(pán)來(lái)發(fā)布它們,從而拷貝將總是靠近,無(wú)論存儲(chǔ)設(shè)備的讀取頭在何處)幫助避免這種無(wú)效性中的某些。文件系統(tǒng)并非總是顯示數(shù) 據(jù)在物理上位于盤(pán)上的何處,盡管I/O系統(tǒng)不能總是最佳使用數(shù)據(jù)。在此情況下提出本發(fā)明實(shí)施例。

發(fā)明內(nèi)容
根據(jù)本發(fā)明實(shí)施例,一種用于處理去往或來(lái)自介質(zhì)設(shè)備的輸入或輸出(I/O)的方 法可以得以實(shí)現(xiàn)在具有處理器單元、存儲(chǔ)器和介質(zhì)設(shè)備的系統(tǒng)中??梢詮脑谒鎏幚砥魃?運(yùn)行的應(yīng)用接收輸入I/O請(qǐng)求,以將數(shù)據(jù)傳送到介質(zhì)設(shè)備或者傳送來(lái)自介質(zhì)設(shè)備的數(shù)據(jù)。 可以計(jì)算出用于完成輸入I/O請(qǐng)求的預(yù)測(cè)時(shí)間Tp。輸入I/O請(qǐng)求可以插入到在所述存儲(chǔ)器 中實(shí)施的調(diào)度表。所述調(diào)度表內(nèi)輸入I/O請(qǐng)求的位置可以至少部分地取決于預(yù)測(cè)時(shí)間τρ。 輸入I/O請(qǐng)求可以根據(jù)調(diào)度表而受服務(wù)。在某些實(shí)施例中,一組處理器可執(zhí)行指令可以實(shí)施在所述存儲(chǔ)器中。所述指令可 以被配置為當(dāng)執(zhí)行時(shí)實(shí)現(xiàn)上述方法。所述一組處理器可執(zhí)行指令可以包括一個(gè)或多個(gè)介質(zhì) 過(guò)濾器層。所述介質(zhì)過(guò)濾器層可以包括解存檔器層、RAM緩存層、調(diào)度器緩存(例如硬盤(pán)驅(qū) 動(dòng)器(HDD)緩存)層、覆蓋層、分類(lèi)緩存層、數(shù)據(jù)變換層、或仿真數(shù)據(jù)層。 在某些實(shí)施例中,所述預(yù)測(cè)時(shí)間Tp可以根據(jù)性能特征方程(PCE)而得以計(jì)算,所述 PCE涉及所述介質(zhì)設(shè)備的一個(gè)或多個(gè)參數(shù)以及根據(jù)所述輸入I/O請(qǐng)求而確定的一個(gè)或多個(gè) 系數(shù)。通過(guò)示例的方式,并且不失一般性,所述參數(shù)包括請(qǐng)求開(kāi)銷(xiāo)χ、頭移動(dòng)速率y和吞吐量 ζ.在該示例中,所述系數(shù)可以包括開(kāi)銷(xiāo)系數(shù)A、頭行進(jìn)距離B和傳送數(shù)據(jù)量C。所述性能特 征方程可以是這樣的形式TP = Ax+By+Cz。在某些實(shí)施例中,用于I/O請(qǐng)求的所述PCE系數(shù)可以是基于所述I/O請(qǐng)求以及初 始介質(zhì)狀態(tài)而確定的,其可以包含關(guān)于影響性能的設(shè)備的狀態(tài)的一條或多條信息。通過(guò)示 例的方式,并且不失一般性,所述一條或多條信息可以包括設(shè)備的準(zhǔn)備狀態(tài)、以及所存取的 最近邏輯塊地址(LBA)。在某些實(shí)施例中,根據(jù)I/O請(qǐng)求和初始介質(zhì)狀態(tài)計(jì)算所述PCE系數(shù) 可以返回更新后的介質(zhì)狀態(tài),其可以用作另一 PCE計(jì)算的初始介質(zhì)狀態(tài)。在某些實(shí)施例中,所述PCE系數(shù)可以與PCE中的未知量的值組合,以計(jì)算用于任何 給定的I/O請(qǐng)求的預(yù)測(cè)時(shí)間Tp。用于I/O請(qǐng)求的排序列表的總時(shí)間T可以隨后通過(guò)如下方 式得以計(jì)算,即對(duì)于所述列表中的每一 I/O請(qǐng)求迭代所述PCE和介質(zhì)狀態(tài),并且對(duì)所得時(shí) 間Tp求和。該過(guò)程可以對(duì)于I/O請(qǐng)求的所述排序列表的某些或所有排列而重復(fù)。所述列 表的優(yōu)選排序可以基于對(duì)于每一排序而計(jì)算出的時(shí)間T以及可能的另外準(zhǔn)則而選自所述 多個(gè)排列當(dāng)中。在某些實(shí)施例中,優(yōu)選排序可以是產(chǎn)生最小時(shí)間T的排列。可以影響排序 的額外準(zhǔn)則可以包括(但不限于)I/O請(qǐng)求優(yōu)先級(jí)、流緩沖器狀態(tài)、以及等待時(shí)間需求。在某些實(shí)施例中,對(duì)于任何I/O請(qǐng)求所花費(fèi)的實(shí)際時(shí)間Ta可以是結(jié)合PCE系數(shù)而 測(cè)量并且使用的,從而對(duì)于未知量迭代地求解PCE。這樣可以允許模型以實(shí)際驅(qū)動(dòng)器性能而 得以恒定地更新。在某些實(shí)施例中,實(shí)現(xiàn)所述I/O請(qǐng)求的操作還包括從壓縮后的嵌套式存檔提取 特定數(shù)據(jù)。在某些實(shí)施例中,所述處理單元可以包括主處理器、輔助處理器,所述輔助處理器具有關(guān)聯(lián)本地存儲(chǔ)器。在這些實(shí)施例中,實(shí)現(xiàn)所述I/O請(qǐng)求的步驟可以包括將數(shù)據(jù)從所述 介質(zhì)設(shè)備傳送到所述本地存儲(chǔ)器,并且使用所述輔助處理器對(duì)所述本地存儲(chǔ)器中的數(shù)據(jù)進(jìn) 行變換。在某些實(shí)施例中,所述系統(tǒng)可以還包括圖形處理器和關(guān)聯(lián)圖形存儲(chǔ)器。在這些實(shí)施例中,實(shí)現(xiàn)所述I/O請(qǐng)求的步驟可以包括將數(shù)據(jù)從所述介質(zhì)設(shè)備傳送到所述圖形存儲(chǔ) 器,將所述數(shù)據(jù)從所述圖形存儲(chǔ)器傳送到所述本地存儲(chǔ)器,使用所述輔助處理器對(duì)所述數(shù) 據(jù)執(zhí)行數(shù)據(jù)變換以產(chǎn)生變換后的數(shù)據(jù),將變換后的數(shù)據(jù)傳送回到所述圖形存儲(chǔ)器。在某些實(shí)施例中,實(shí)現(xiàn)所述I/O請(qǐng)求的操作可以包括實(shí)現(xiàn)數(shù)據(jù)覆蓋,其中,所述 介質(zhì)設(shè)備與所述存儲(chǔ)器之間傳送的一個(gè)或多個(gè)主數(shù)據(jù)單元被來(lái)自輔數(shù)據(jù)源的一個(gè)或多個(gè) 次要數(shù)據(jù)單元所代替。所述主數(shù)據(jù)單元的源和所述次要數(shù)據(jù)源可以位于相同介質(zhì)上或不同 介質(zhì)上。所述次要數(shù)據(jù)源可以是虛擬數(shù)據(jù)源。所述次要數(shù)據(jù)單元可以通過(guò)回調(diào)而得以指定。在某些實(shí)施例中,所述系統(tǒng)可以還包括快速存儲(chǔ)設(shè)備。在此情況下,實(shí)現(xiàn)所述I/O 請(qǐng)求的步驟可以包括將一個(gè)或多個(gè)數(shù)據(jù)單元從所述介質(zhì)設(shè)備預(yù)取到所述快速存儲(chǔ)設(shè)備, 隨后傳送來(lái)自所述快速存儲(chǔ)設(shè)備的數(shù)據(jù)單元。通過(guò)示例的方式,所述快速存儲(chǔ)設(shè)備可以是 硬盤(pán)驅(qū)動(dòng)器,介質(zhì)設(shè)備可以是高容量光盤(pán)驅(qū)動(dòng)器,例如藍(lán)光盤(pán)驅(qū)動(dòng)器。所述數(shù)據(jù)單元可以 在I/O另外空閑的時(shí)間段期間得以預(yù)取。在某些實(shí)施例中,所述預(yù)取步驟可以包括從所述 介質(zhì)設(shè)備預(yù)取一個(gè)或多個(gè)數(shù)據(jù)單元的第一組,檢查所述慢介質(zhì)設(shè)備的空閑性,并且如果I/O 空閑則從所述慢介質(zhì)設(shè)備預(yù)取一個(gè)或多個(gè)數(shù)據(jù)單元的第二組,或者如果I/O不空閑則延遲 預(yù)取所述第二組。在某些實(shí)施例中,計(jì)算所述預(yù)測(cè)時(shí)間Tp的步驟可以包括調(diào)整所述參數(shù),以仿真比 與所述系統(tǒng)關(guān)聯(lián)的實(shí)際介質(zhì)設(shè)備更慢的介質(zhì)設(shè)備的操作。根據(jù)本發(fā)明實(shí)施例,一種用于處理去往或來(lái)自介質(zhì)設(shè)備的輸入或輸出(I/O)的方 法可以得以實(shí)現(xiàn)在具有主處理器、帶有關(guān)聯(lián)本地存儲(chǔ)器的輔助處理器、主存儲(chǔ)器和介質(zhì)設(shè) 備的系統(tǒng)中。所述方法可以包括a)從在所述處理器上運(yùn)行的應(yīng)用接收輸入I/O請(qǐng)求,以 將數(shù)據(jù)傳送到所述介質(zhì)設(shè)備或者傳送來(lái)自所述介質(zhì)設(shè)備的數(shù)據(jù);b)將所述輸入I/O請(qǐng)求插 入到在所述主存儲(chǔ)器中實(shí)施的調(diào)度表;以及c)根據(jù)所述調(diào)度表和一個(gè)或多個(gè)過(guò)濾器實(shí)現(xiàn) 所述輸入I/O請(qǐng)求,其中,所述過(guò)濾器中的至少一個(gè)是由所述輔助處理器實(shí)現(xiàn)的。


通過(guò)結(jié)合附圖考慮以下詳細(xì)描述,可以容易地理解本發(fā)明的教導(dǎo)。圖1是根據(jù)本發(fā)明實(shí)施例的實(shí)現(xiàn)文件I/O系統(tǒng)(FIOS)的系統(tǒng)的框圖。圖2是根據(jù)本發(fā)明替換實(shí)施例的實(shí)現(xiàn)FIOS的替換系統(tǒng)的框圖。圖3是根據(jù)本發(fā)明實(shí)施例的文件輸入/輸出系統(tǒng)(FIOS)軟件的框圖。圖4是示出根據(jù)本發(fā)明實(shí)施例的在FIOS中的操作流程的數(shù)據(jù)流程圖。圖5是示出根據(jù)本發(fā)明實(shí)施例的在FIOS中使用的軟件調(diào)度器的示例的流程圖。圖6是示出根據(jù)本發(fā)明實(shí)施例的在FIOS中預(yù)取操作的示例的示意圖。圖7A是示出根據(jù)本發(fā)明實(shí)施例的使用帶有關(guān)聯(lián)本地存儲(chǔ)器的輔助處理器的I/O 緩沖的示例的流程圖。圖7B是示出根據(jù)本發(fā)明實(shí)施例的使用帶有關(guān)聯(lián)本地存儲(chǔ)器的輔助處理器的I/O緩沖和數(shù)據(jù)變換的 示例的流程圖。圖8是示出可以結(jié)合本發(fā)明實(shí)施例而使用的用于嵌套式存檔的數(shù)據(jù)結(jié)構(gòu)的框圖。圖9是示出根據(jù)本發(fā)明實(shí)施例的解存檔器的流程圖。
具體實(shí)施例方式雖然以下詳細(xì)描述為了說(shuō)明而包含很多特定細(xì)節(jié),但本領(lǐng)域技術(shù)人員應(yīng)理解,對(duì) 于以下細(xì)節(jié)的很多變形和改動(dòng)是在本發(fā)明范圍內(nèi)的。相應(yīng)地,以下描述的本發(fā)明實(shí)施例的 示例是在不失一般性的情況下闡述的,并且不將限制施加于本發(fā)明。本發(fā)明實(shí)施例可以圍繞文件I/O調(diào)度器(FIOS)而得以實(shí)現(xiàn),F(xiàn)IOS提供用于系統(tǒng)的 所有I/O穿過(guò)的中心層。FIOS可以包括調(diào)度器,其對(duì)I/O請(qǐng)求進(jìn)行排序,并且確定最有效地 服務(wù)于I/O請(qǐng)求的順序。通過(guò)示例的方式,以計(jì)算機(jī)實(shí)現(xiàn)的系統(tǒng)100可以被配置為實(shí)現(xiàn)圖1所示的根據(jù)本 發(fā)明實(shí)施例的文件I/O調(diào)度器(FI0S)。通過(guò)示例的方式,并且不失一般性,系統(tǒng)100可以 實(shí)現(xiàn)為個(gè)人計(jì)算機(jī)、視頻游戲控制臺(tái)、個(gè)人數(shù)字助理、或其它數(shù)字設(shè)備,適合于實(shí)踐本發(fā)明 實(shí)施例。系統(tǒng)100可以包括處理單元105和主存儲(chǔ)器106,主存儲(chǔ)器106耦合到處理105。 CPU 105被配置為運(yùn)行軟件應(yīng)用,并且可選地運(yùn)行操作系統(tǒng)。本發(fā)明某些實(shí)施例可以利 用特定類(lèi)型的處理器架構(gòu),其中,CPU 105包括主處理器105A和輔助處理器105B,輔助處 理器105B具有其自身的關(guān)聯(lián)本地存儲(chǔ)器106B。其中,這樣的處理器架構(gòu)的一個(gè)例子是單 元處理器(Cell Processor).單元處理器架構(gòu)的示例詳細(xì)描述于例如單元寬帶引擎架構(gòu) (Cell Broadband Engine Architecture)中,片反權(quán)歸屬 International Business Machines Corporation^ Sony Computer Entertainment Incorporated^ Toshiba Corporation,2005 年8月8日,其拷貝可以在http://cell.scei.co.jp/下載,其完整內(nèi)容在此引入以供參 考。主存儲(chǔ)器106可以存儲(chǔ)應(yīng)用和數(shù)據(jù),以供CPU 105使用。存儲(chǔ)器106可以是集成 電路的形式,例如RAM、DRAM、ROM等。計(jì)算機(jī)程序101可以存儲(chǔ)于存儲(chǔ)器106中,形式為可 以在處理器105上執(zhí)行的指令。程序101的指令可以被配置為其中實(shí)現(xiàn)具有以下所描述的 特定特征的文件輸入/輸出系統(tǒng)(FI0S)。存儲(chǔ)器106可以包含1/0隊(duì)列101Q,例如形式是 堆棧或隊(duì)列,用于輸入、調(diào)度、發(fā)出、完成以及釋放FIOS程序101所使用的1/0請(qǐng)求。這些 隊(duì)列的示例也描述如下。通過(guò)示例的方式,F(xiàn)IOS程序101可以包括各指令,用于a)從應(yīng)用103接收涉及介 質(zhì)設(shè)備118的輸入1/0請(qǐng)求,b)計(jì)算用于完成1/0請(qǐng)求的預(yù)測(cè)時(shí)間Tp,c)至少部分地基于 預(yù)測(cè)時(shí)間Tp將輸入1/0請(qǐng)求插入到存儲(chǔ)器106中的調(diào)度表的位置,d)根據(jù)調(diào)度表實(shí)現(xiàn)1/0 請(qǐng)求。FIOS程序101可以結(jié)合被配置為實(shí)現(xiàn)交互式環(huán)境的一條或多條指令而操作。通過(guò) 示例的方式,這些指令可以是主程序103 (例如視頻游戲程序)的子程序或可調(diào)用函數(shù)。替 換地,主程序103可以是用于與虛擬世界進(jìn)行接口的程序。主程序103可以被配置為將來(lái) 自相機(jī)POV的一部分仿真環(huán)境的場(chǎng)景顯示在視頻顯示器上,并且響應(yīng)于相機(jī)POV在用戶與 仿真環(huán)境的交互期間沿著相機(jī)路徑的移動(dòng)而隨著相機(jī)POV改變來(lái)改變場(chǎng)景。主程序可以包 括用于物理仿真104和相機(jī)管理107的指令。主程序103可以調(diào)用FIOS程序101、物理仿真指令104、相機(jī)管理指令107以及廣告印象報(bào)告指令109,例如作為函數(shù)或子程序。 客戶機(jī)系統(tǒng)100也可以包括公知的支持功能110,例如輸入/輸出(I/O)元件111、 電源(P/S)112、時(shí)鐘(CLK)113和緩存114。客戶機(jī)設(shè)備100可以還包括快速存儲(chǔ)設(shè)備115, 例如硬盤(pán)驅(qū)動(dòng)器,其為應(yīng)用和數(shù)據(jù)提供非易失性存儲(chǔ)。其中,快速存儲(chǔ)設(shè)備115可以用于臨 時(shí)或者長(zhǎng)期存儲(chǔ)從較慢介質(zhì)設(shè)備118檢索到的文件116。快速存儲(chǔ)設(shè)備115上的文件116 可以另外來(lái)自除了較慢介質(zhì)設(shè)備118之外的源。例如,文件116可以包括但不限于操作系 統(tǒng)文件、由應(yīng)用所創(chuàng)建的臨時(shí)文件、用戶數(shù)據(jù),例如相片/音頻/視頻、下載的內(nèi)容、以及更 多。通過(guò)示例的方式,存儲(chǔ)設(shè)備115可以是固定盤(pán)驅(qū)動(dòng)器,可拆卸盤(pán)驅(qū)動(dòng)器、閃速存儲(chǔ)器設(shè) 備、帶式驅(qū)動(dòng)器。較慢介質(zhì)設(shè)備118可以是高容量光盤(pán)驅(qū)動(dòng)器,例如⑶-ROM驅(qū)動(dòng)器、DVD-ROM 驅(qū)動(dòng)器、高清晰度數(shù)字多功能盤(pán)(HD-DVD)驅(qū)動(dòng)器、藍(lán)光盤(pán)驅(qū)動(dòng)器、UMD驅(qū)動(dòng)器、或其它光學(xué) 存儲(chǔ)設(shè)備。來(lái)自介質(zhì)設(shè)備118的預(yù)取出的文件116可以臨時(shí)存儲(chǔ)于硬件緩存中的存儲(chǔ)設(shè)備 115中,以便快速加載到存儲(chǔ)器106。一個(gè)或多個(gè)用戶輸入設(shè)備120可以用于將用戶輸入從一個(gè)或多個(gè)用戶傳遞到系 統(tǒng)100。通過(guò)示例的方式,用戶輸入設(shè)備120中的一個(gè)或多個(gè)可以經(jīng)由I/O元件111耦合到 客戶機(jī)設(shè)備100。合適的輸入設(shè)備120的示例包括鍵盤(pán)、鼠標(biāo)、操縱桿、觸摸板、觸摸屏、光 筆、相機(jī)或攝像機(jī)、和/或麥克風(fēng)??蛻魴C(jī)設(shè)備100可以包括網(wǎng)絡(luò)接口 125,用于促進(jìn)經(jīng)由電 子通信網(wǎng)絡(luò)127進(jìn)行的通信。網(wǎng)絡(luò)接口 125可以被配置為在局域網(wǎng)和廣域網(wǎng)(例如互聯(lián)網(wǎng)) 上實(shí)現(xiàn)有線通信或無(wú)線通信。系統(tǒng)100可以在網(wǎng)絡(luò)127上經(jīng)由一個(gè)或多個(gè)消息分組126來(lái) 發(fā)送并且接收數(shù)據(jù)和/或?qū)ξ募恼?qǐng)求。系統(tǒng)100可以還包括圖形子系統(tǒng)130,圖形子系統(tǒng)130可以包括圖形處理單元 (GPU) 135和圖形存儲(chǔ)器140。圖形存儲(chǔ)器140可以包括顯示存儲(chǔ)器(例如幀緩沖器),用于 存儲(chǔ)輸出圖像的每一像素的像素?cái)?shù)據(jù)。圖形存儲(chǔ)器140可以與GPU 135集成在同一設(shè)備中, 作為分離設(shè)備而與GPU 135連接,并且/或者實(shí)現(xiàn)在存儲(chǔ)器106內(nèi)。像素?cái)?shù)據(jù)可以直接從 CPU 105提供給圖形存儲(chǔ)器140。替換地,CPU 105可以向GPU 135提供定義期望輸出圖像 的數(shù)據(jù)和/或指令,GPU 135據(jù)此可以生成一個(gè)或多個(gè)輸出圖像的像素?cái)?shù)據(jù)。定義期望輸 出圖像的數(shù)據(jù)和/或指令可以存儲(chǔ)于存儲(chǔ)器106和/或圖形存儲(chǔ)器140中。在實(shí)施例中, GPU 135可以(例如通過(guò)合適的編程或硬件配置)配置有3D呈現(xiàn)能力,用于據(jù)定義場(chǎng)景的幾 何、光照、陰影、紋理、移動(dòng)和/或相機(jī)參數(shù)的指令和數(shù)據(jù)來(lái)生成輸出圖像的像素?cái)?shù)據(jù)。GPU 135可以還包括能夠執(zhí)行陰影化(shader)程序的一個(gè)或多個(gè)可編程執(zhí)行單元。圖形子系統(tǒng)130可以從圖形存儲(chǔ)器140周期性地輸出圖像的像素?cái)?shù)據(jù),以顯示在 視頻顯示設(shè)備150上。視頻顯示設(shè)備150可以是能夠響應(yīng)于來(lái)自系統(tǒng)100的信號(hào)而顯示可 視信息的任何設(shè)備,包括CRT顯示器、LCD顯示器、等離子體顯示器、以及OLED顯示器。計(jì) 算機(jī)系統(tǒng)100可以向顯示設(shè)備150提供模擬信號(hào)或數(shù)字信號(hào)。通過(guò)示例的方式,顯示器150 可以包括陰極射線管(CRT)或平板屏幕,其顯示文本、數(shù)字、圖形符號(hào)或圖像。此外,顯示器 150可以包括一個(gè)或多個(gè)音頻揚(yáng)聲器,其產(chǎn)生聽(tīng)覺(jué)聲音或另外可檢測(cè)到的聲音。為了促進(jìn)生 成這種聲音,客戶機(jī)設(shè)備100可以還包括音頻處理器155,其適用于據(jù)CPU 105、存儲(chǔ)器106 和/或存儲(chǔ)裝置115所提供的指令和/或數(shù)據(jù)而生成模擬音頻輸出或數(shù)字音頻輸出。包括CPU 105、存儲(chǔ)器106、支持功能110、數(shù)據(jù)存儲(chǔ)設(shè)備115、介質(zhì)設(shè)備118、用戶輸 入設(shè)備120、網(wǎng)絡(luò)接口 125和音頻處理器155的系統(tǒng)100的各組件可操作地經(jīng)由一條或多條數(shù)據(jù)總線160而彼此 連接。這些組件可以通過(guò)硬件、軟件或固件或它們中的兩個(gè)或更多個(gè) 的某種組合而得以實(shí)現(xiàn)。本發(fā)明某些實(shí)施例可以利用單元處理器架構(gòu)或相似的處理器架構(gòu)。圖2示出根據(jù) 本發(fā)明實(shí)施例的被配置為實(shí)現(xiàn)FIOS的單元處理器200的示例。單元處理器200包括主存 儲(chǔ)器202、單個(gè)功率處理器元件(PPE)204和八個(gè)協(xié)作處理器元件(SPE)206。通過(guò)示例的方 式,PPE 204可以包括帶有關(guān)聯(lián)緩存的64比特PowerPC處理器單元(PPU)。某些實(shí)現(xiàn)方式 (例如CBEA順從的系統(tǒng))可以包括將矢量多媒體擴(kuò)展單元包括在PPE 204中。PPE 204可 以是通用處理單元,其可以訪問(wèn)系統(tǒng)管理資源(例如存儲(chǔ)器保護(hù)表)。硬件資源可以明確映 射為PPE 204可見(jiàn)的真實(shí)地址空間。因此,PPE 204可以通過(guò)使用適當(dāng)?shù)挠行У刂分祦?lái)直 接對(duì)任何這些資源進(jìn)行尋址。PPE 204的主要功能是為不同的SPE 206管理并且分配任務(wù)。 PPU可以執(zhí)行FIOS程序205的編碼指令。SPE 206是比PPE 204不太復(fù)雜的計(jì)算單元,這是由于它們不需執(zhí)行任何系統(tǒng)管 理功能。每一 SPE 206包括處理器單元,有時(shí)稱為協(xié)作處理器單元(SPU)和關(guān)聯(lián)本地存儲(chǔ) (LS)。SPE 206可以通常具有單指令多數(shù)據(jù)(SIMD)能力,并且典型地處理數(shù)據(jù)并且發(fā)起任 何所需的數(shù)據(jù)傳送(服從PPE 204所設(shè)置的訪問(wèn)特性),以便執(zhí)行它們的所分配的任務(wù)。SPE 206可以在其本地存儲(chǔ)中存儲(chǔ)實(shí)現(xiàn)FIOS程序205的各部分的指令207。SPE 206的目的在 于啟用需要更高計(jì)算單元密度并且可以有效使用所提供的指令集的應(yīng)用。雖然該示例中示 出八個(gè)SPE,但單元處理器200可以配置有任何數(shù)量的SPE。關(guān)于圖2,存儲(chǔ)器202、PPE 204 和SPE 206可以在環(huán)形元件互連總線210上彼此進(jìn)行通信,并且與I/O設(shè)備208進(jìn)行通信。 存儲(chǔ)器202可以由PPE 204和SPE 206經(jīng)由存儲(chǔ)器接口控制器MIC來(lái)存取。存儲(chǔ)器202可以包含I/O隊(duì)列203,例如輸入、調(diào)度、發(fā)出、完成、釋放和預(yù)取隊(duì)列、 如下所述。存儲(chǔ)器202也可以包含具有與在此描述的FIOS程序101共同的特征的FIOS程 序209的各部分。SPE 206中的至少一個(gè)可以在其本地存儲(chǔ)中包括代碼207,其被配置為實(shí) 現(xiàn)如下所述的數(shù)據(jù)解壓縮。PPE 204可以包括內(nèi)部緩存Ll和外部緩存L2。PPE 204可以將 FIOS程序205的各部分存儲(chǔ)在其內(nèi)部緩存Ll中。FIOS程序205和以SPE實(shí)現(xiàn)的文件傳送 指令207或其各部分也可以存儲(chǔ)于存儲(chǔ)器202中,以便當(dāng)需要時(shí)由SPE 206和PPE 204來(lái) 存取。通過(guò)示例的方式,F(xiàn)IOS程序101/205可以包括介質(zhì)堆棧,用于促進(jìn)與硬件(例如存 儲(chǔ)設(shè)備115)的接口。介質(zhì)堆??梢詫?shí)現(xiàn)為圖3所描述的那樣。具體地說(shuō),介質(zhì)堆棧300可 以包括調(diào)度器302、一個(gè)或多個(gè)介質(zhì)過(guò)濾器層304、設(shè)備介質(zhì)層306、處理器文件系統(tǒng)(FS)讀 取層308和硬件層310。設(shè)備介質(zhì)層306 (有時(shí)稱為介質(zhì)存取層)可以被配置為響應(yīng)于從 上面介質(zhì)過(guò)濾器層304接收到的介質(zhì)請(qǐng)求,檢索所請(qǐng)求的數(shù)據(jù),然后將其應(yīng)答發(fā)送回至堆 棧。介質(zhì)過(guò)濾器層304可以包括解存檔器層301、RAM緩存層303、調(diào)度器緩存層305、覆蓋 層307、分類(lèi)緩存層309、一個(gè)或多個(gè)數(shù)據(jù)變換層311、以及仿真數(shù)據(jù)層313、還有速度仿真層 315。解存檔器301可以用于促進(jìn)從壓縮后的存檔提取特定資產(chǎn)文件。RAM緩存層303 可以用于實(shí)現(xiàn)將數(shù)據(jù)緩存在例如主存儲(chǔ)器106、202中。調(diào)度器緩存305可以是簡(jiǎn)單的盤(pán)對(duì) 盤(pán)緩存,用于臨時(shí)存儲(chǔ)來(lái)自較慢源(例如光盤(pán))的數(shù)據(jù)。如在此所使用的那樣,“調(diào)度器緩存” 指代在存儲(chǔ)介質(zhì)中的臨時(shí)數(shù)據(jù)存儲(chǔ),其比介質(zhì)設(shè)備118更快地進(jìn)行存取。并非需要預(yù)取調(diào)度器緩存305中的所有數(shù)據(jù);某些數(shù)據(jù)可以按需取得,并且拷貝到緩存。通過(guò)示例的方式,而非通過(guò)限制的方式,調(diào)度器緩存層305可以利用快速存儲(chǔ)介質(zhì)115來(lái)提供這種臨時(shí)存儲(chǔ)。在快速存儲(chǔ)介質(zhì)是硬盤(pán)驅(qū)動(dòng)器(HDD)的特定情況下,調(diào)度器 緩存305有時(shí)稱為HDD緩存。調(diào)度器緩存305可以作為單個(gè)文件或多個(gè)文件而得以保存。此外,調(diào)度器緩存305 的內(nèi)容無(wú)需是全部文件。多文件緩存可以通過(guò)刪除某些單獨(dú)文件而得以部分地清洗,從而 當(dāng)需要時(shí)智能地釋放盤(pán)空間,而不犧牲太多數(shù)據(jù)。通過(guò)對(duì)照,單文件緩存典型地可以僅被截 斷或者完全刪除。單文件緩存可以提供比多文件緩存更高的性能,因?yàn)槎辔募彺娴湫偷?需要另外的簿記工作(在主機(jī)文件系統(tǒng)自身內(nèi)部),這可能需要額外的I/O。覆蓋層307可以用于允許在文件系統(tǒng)級(jí)別任意覆蓋文件和目錄,如下所述。分類(lèi) 緩存層309可以用于對(duì)處理器單元105或單元處理器200的0/S可能未正確地緩存(例如 文件存在性、大小、以及位置)的數(shù)據(jù)進(jìn)行緩存。數(shù)據(jù)變換層311可以對(duì)讀自或?qū)懭虢橘|(zhì)設(shè) 備118的數(shù)據(jù)實(shí)現(xiàn)數(shù)據(jù)變換,例如加密、解密、壓縮或解壓縮。仿真數(shù)據(jù)層313可以例如用 于生成多個(gè)零或隨機(jī)數(shù),以用于需要這種仿真數(shù)據(jù)的I/O請(qǐng)求。速度仿真層315可以用在 例如軟件開(kāi)發(fā)期間,以對(duì)介質(zhì)設(shè)備的不同速度進(jìn)行仿真,如下所述??梢躁P(guān)于如下所述的圖4來(lái)理解調(diào)度器302的操作。從客戶機(jī)應(yīng)用的觀點(diǎn)來(lái)看, I/O請(qǐng)求403可以是以相對(duì)直接的方式而受服務(wù)的。例如,應(yīng)用401 (例如視頻游戲)內(nèi)的 線程402可以憑借調(diào)用函數(shù)(例如readFileO)通過(guò)FIOS 101/205來(lái)請(qǐng)求I/O。該函數(shù)可 以指定FIOS請(qǐng)求403的優(yōu)先級(jí)以及該請(qǐng)求應(yīng)完成的最終期限。該函數(shù)也可以將指針提供給 緩沖器405。這種實(shí)現(xiàn)方式可以按原子方式來(lái)分配用于I/O請(qǐng)求403的I/O操作結(jié)構(gòu),并且 將新分配的操作移動(dòng)到輸入隊(duì)列404。通過(guò)示例的方式,輸入隊(duì)列可以是先入先出(FIFO) 隊(duì)列,其中,隊(duì)列404中放入的最先I/O操作是由調(diào)度器302調(diào)度的最先操作。將請(qǐng)求403 插入到輸入隊(duì)列404的操作可以通過(guò)原子操作而得以實(shí)現(xiàn),以防止當(dāng)請(qǐng)求異步I/O時(shí)線程 受阻。在某些實(shí)施例中,輸入隊(duì)列404可以是原子堆棧的形式,其可以由輔助處理器105B 通過(guò)原子交換來(lái)填充。通過(guò)示例的方式,而非通過(guò)限制的方式,如果I/O請(qǐng)求403為讀取操作,則客戶機(jī) 應(yīng)用401可以提供緩沖器,以接收從介質(zhì)設(shè)備檢索到的數(shù)據(jù)。當(dāng)I/O請(qǐng)求完成時(shí),客戶機(jī)應(yīng) 用可以從其所提供的緩沖器讀取所檢索的數(shù)據(jù)。當(dāng)客戶機(jī)終結(jié)于操作結(jié)構(gòu)時(shí),客戶機(jī)可以 解除分配操作結(jié)構(gòu),從而,其資源可用于后來(lái)的I/O用途。I/O請(qǐng)求403可以在調(diào)度器尚未激活的情況下激活調(diào)度器302,并且可以將用戶可 見(jiàn)的句柄返回到結(jié)構(gòu),從而應(yīng)用401具有對(duì)操作的存取。應(yīng)用401于是可以等待I/O請(qǐng)求 403完成。例如,客戶機(jī)應(yīng)用可以使用原子方法(例如isDoneO)來(lái)周期性地進(jìn)行輪詢。替 換地,當(dāng)I/O請(qǐng)求完成時(shí),客戶機(jī)應(yīng)用可以等待調(diào)度器302調(diào)用的回調(diào)函數(shù)。在I/O請(qǐng)求已經(jīng)插入到輸入隊(duì)列404之后,F(xiàn)IOS程序101/205可以調(diào)用調(diào)度器302 來(lái)執(zhí)行調(diào)度表插入407??梢詤⒄?qǐng)D5來(lái)理解調(diào)度器所實(shí)現(xiàn)的各操作的序列。如果沒(méi)有I/ 0要處理,則調(diào)度器302可以休眠(即保持不激活),如在502所指示的那樣。當(dāng)新I/O操作 進(jìn)入到輸入隊(duì)列時(shí),調(diào)度器喚醒,以對(duì)其進(jìn)行處理。一旦調(diào)度器喚醒過(guò)來(lái)(或者已經(jīng)喚醒), 其就注意隊(duì)列中的新操作,并且將操作移動(dòng)到調(diào)度隊(duì)列406中的適當(dāng)位置。為了確定I/O請(qǐng)求403的隊(duì)列位置,調(diào)度器302可以可選地例如通過(guò)詢問(wèn)設(shè)備介質(zhì)層306或FIOS堆棧300中的另一層來(lái)確定介質(zhì)設(shè)備的當(dāng)前狀態(tài),如在503所指示的那樣。 狀態(tài)數(shù)據(jù)可以根據(jù)FIOS堆棧300所處理的介質(zhì)設(shè)備的類(lèi)型以及堆棧中出現(xiàn)的各種層而變 化。各示例包括最新近存取的邏輯塊地址(LBA)、RAM緩存之最近存取的路徑和偏移、當(dāng)前 盤(pán)層、頭位置、流送模式、以及非流送模式。根據(jù)本發(fā)明實(shí)施例,調(diào)度器302可以是基于介質(zhì)設(shè)備性能模型302A。不同于現(xiàn)有 I/O調(diào)度器的是,驅(qū)動(dòng)器模型可以在確定請(qǐng)求403的最佳調(diào)度中將關(guān)于介質(zhì)設(shè)備118之性能 的數(shù)據(jù)納入考慮。使用驅(qū)動(dòng)器模型來(lái)調(diào)度I/O請(qǐng)求可以與在生成CD的主控過(guò)程的逆過(guò)程 相比較。性能模型302A可以被配置為將諸如開(kāi)銷(xiāo)、盤(pán)移動(dòng)時(shí)間、讀取時(shí)間等之類(lèi)的因素納 入考慮。性能模型302A可以對(duì)介質(zhì)設(shè)備118的任意復(fù)雜特性(例如吞吐量、激光器擺動(dòng)、讀 取頭移動(dòng)、層改變以及請(qǐng)求開(kāi)銷(xiāo))進(jìn)行建模。性能模型302A也可以將I/O請(qǐng)求中所涉及的 介質(zhì)設(shè)備118所讀取或者寫(xiě)入的特定介質(zhì)的其它參數(shù)納入考慮。例如,性能模型302A可以 考慮設(shè)備是正從單層盤(pán)還是多層盤(pán)(例如雙層盤(pán),比如藍(lán)光DMD)進(jìn)行讀取。調(diào)度器302也可以可選地查看新I/O操作時(shí)序要求、優(yōu)先級(jí)、以及可能的效率,如 在504所指示的那樣。調(diào)度器可以被配置為計(jì)算預(yù)測(cè)時(shí)間Tp,以完成輸入I/O請(qǐng)求,如在 506所指示的那樣。根據(jù)優(yōu)選實(shí)施例,調(diào)度器302可以根據(jù)具有與介質(zhì)設(shè)備118有關(guān)的變量 參數(shù)以及與I/O請(qǐng)求403有關(guān)的系數(shù)的性能特征方程(PCE)來(lái)確定用于執(zhí)行I/O請(qǐng)求403 的預(yù)測(cè)時(shí)間Τρ。PCE可以具有一般形式
Tp = Af1 (X) + Bf2 (y) + Cf3(Z) + Df4(W) + Ef5(V) + ···,
其中,A、B、C、D以及E是系數(shù),χ、y、z、w和ν表示與介質(zhì)設(shè)備的性能特征有關(guān)的參數(shù), fi (χ)、f2 (y)、f3 (ζ)、f4 (w)、f5 (ν)…是χ、y、ζ、w和ν的函數(shù)。通過(guò)示例的方式,而非通過(guò)限 制的方式,PCE可以是線性方程,形式是一個(gè)或多個(gè)項(xiàng)之和,其中,每一項(xiàng)是系數(shù)(A、B、C等) 乘以表示參數(shù)值的變量(X,1、ζ等)。這種方程可以具有以下形式 Tp = Ax + By + Cz + Dw + Ev + ...
該方程可以具有任意數(shù)量的項(xiàng)。各變量可以對(duì)應(yīng)于影響用于執(zhí)行所要求的任務(wù)的時(shí) 間的介質(zhì)設(shè)備的任何參數(shù)。所述參數(shù)的示例包括但不限于開(kāi)銷(xiāo)、搜尋時(shí)間、以及數(shù)據(jù)傳送速 率。實(shí)際上,PCE可以使用遠(yuǎn)多于3個(gè)項(xiàng),例如10個(gè)或更多項(xiàng)。例如,單一讀取操作通常需 要6個(gè)有意義的項(xiàng)來(lái)描述它1.打開(kāi)文件,2.開(kāi)銷(xiāo),3.搜尋,4.傳送,5.解壓縮,6.關(guān)閉文 件。其它操作(打開(kāi)、關(guān)閉、解除鏈接、讀取目錄)典型地需要不同集合的項(xiàng)。作為對(duì)于線性方程的替換,PCE可以擴(kuò)展為一般多項(xiàng)式方程一個(gè)或多個(gè)項(xiàng)之和, 其中,每一項(xiàng)是系數(shù)(A)乘以提升到某次冪的對(duì)應(yīng)變量。例如,PCE可以具有以下形式
Tp = Ax + By + Cz2 + Dw10 + Ev-2. · ·
作為另一替換,PCE可以擴(kuò)展為任何普通方程,其可以表示為一個(gè)或多個(gè)項(xiàng)之和,其中, 每一項(xiàng)是系數(shù)(A)乘以對(duì)應(yīng)變量的任意函數(shù)。例如,PCE可以具有以下形式 Tp = Ax + Blog y + Cez + D (w2 + 2w + 1) + ...
作為簡(jiǎn)單示例,線性PCE可以具有形式TP = Ax+By+Cz,其中x是與請(qǐng)求403的開(kāi)銷(xiāo)有 關(guān)的參數(shù),y是與每移動(dòng)區(qū)段的頭移動(dòng)時(shí)間有關(guān)的參數(shù),ζ是與數(shù)據(jù)吞吐率有關(guān)的參數(shù)(例 如用于讀取或者寫(xiě)入指定量數(shù)據(jù)的時(shí)間)。系數(shù)A、B和C的值可以取決于調(diào)度隊(duì)列404中 請(qǐng)求403的位置。
通過(guò)示 例的方式,系數(shù)A、B、C可以根據(jù)狀態(tài)以及請(qǐng)求403中的信息而得以確定。 通過(guò)示例的方式,并且不失一般性,一條或多條信息可以包括設(shè)備的準(zhǔn)備狀態(tài)、以及所存取 的最近邏輯塊地址(LBA)。最近邏輯塊地址可以指示驅(qū)動(dòng)器的讀取頭的當(dāng)前位置,因此允許 計(jì)算搜尋距離(頭行進(jìn)距離)。在該示例中,系數(shù)A在此稱為開(kāi)銷(xiāo)系數(shù)。該系數(shù)將以下事實(shí)納入考慮開(kāi)銷(xiāo)可以 部分地取決于I/O請(qǐng)求403的屬性以及介質(zhì)設(shè)備118的特性。系數(shù)B可以與介質(zhì)設(shè)備118 中的讀取頭必須進(jìn)行以便達(dá)到將要從其中讀取數(shù)據(jù)的介質(zhì)上的位置的頭移動(dòng)量有關(guān)。通過(guò) 示例的方式,請(qǐng)求403可以調(diào)用介質(zhì)設(shè)備118來(lái)讀取始于區(qū)段1000的10個(gè)區(qū)段。在此情 況下,數(shù)據(jù)系數(shù)C可以是待讀取的區(qū)段之?dāng)?shù)量。移動(dòng)系數(shù)B可以根據(jù)狀態(tài)信息而得以確定, 狀態(tài)信息可以從設(shè)備介質(zhì)層306來(lái)獲得。狀態(tài)信息可以包括讀取頭在I/O請(qǐng)求的起始處的 初始位置。例如,如果讀取頭初始在區(qū)段500處,則移動(dòng)系數(shù)B可以根據(jù)讀取操作開(kāi)始的區(qū) 段(區(qū)段1000)與當(dāng)前區(qū)段(區(qū)段500)之間的差而得以確定,例如B=1000-500=500。調(diào)度 器302可以在I/O請(qǐng)求403已經(jīng)完成之后確定最終狀態(tài),例如,如果始于1000讀取10個(gè)區(qū) 段,則最終狀態(tài)可以指示讀取頭結(jié)束于區(qū)段1010。PCE也可以將用于填寫(xiě)I/O請(qǐng)求的不同可能情形納入考慮。例如,如果介質(zhì)設(shè)備 118使用多層介質(zhì),則PCE可以將對(duì)從一個(gè)層到另一層切換然后移動(dòng)讀取頭的預(yù)測(cè)時(shí)間Tp 的效果納入考慮。在某些實(shí)施例中,對(duì)于任何I/O請(qǐng)求所花費(fèi)的實(shí)際時(shí)間Ta可以被測(cè)量并且與PCE 系數(shù)一起使用從而對(duì)于未知變量的值迭代地求解PCE。這樣可以允許模型通過(guò)實(shí)際驅(qū)動(dòng)器 性能而得以恒定地更新。一旦計(jì)算出預(yù)測(cè)時(shí)間Tp,調(diào)度器302就可以通過(guò)相似方式確定用于調(diào)度隊(duì)列406 中其它請(qǐng)求的預(yù)測(cè)時(shí)間。該過(guò)程可以按不同隊(duì)列順序而迭代地重復(fù),直到用于請(qǐng)求403的 實(shí)際時(shí)間以及最佳調(diào)度隊(duì)列順序得以確定,如在507所指示的那樣。注意,請(qǐng)求403的初始 狀態(tài)可以根據(jù)調(diào)度順序中先前請(qǐng)求的結(jié)束狀態(tài)而得以確定,而調(diào)度順序中下一請(qǐng)求的初始 狀態(tài)可以根據(jù)請(qǐng)求403的最終狀態(tài)而得以確定。調(diào)度器302可以預(yù)排調(diào)度隊(duì)列中的各請(qǐng)求,對(duì)請(qǐng)求403的特性與已經(jīng)在隊(duì)列中的 其它操作的特性進(jìn)行比較。調(diào)度器302可以嘗試隊(duì)列中的每一可能位置處的請(qǐng)求403、找尋 優(yōu)先級(jí)覆蓋(priority override)、錯(cuò)過(guò)的最終期限、以及時(shí)序考慮。調(diào)度器302可以通過(guò) 找尋所請(qǐng)求的I/O操作不錯(cuò)過(guò)其最終期限的順序來(lái)確定最佳可能的新隊(duì)列順序。如果一個(gè) 或多個(gè)操作必須錯(cuò)過(guò)它們的最終期限,則調(diào)度器可以使用不同的準(zhǔn)則來(lái)確定隊(duì)列順序???以影響調(diào)度隊(duì)列406中的請(qǐng)求排序的額外準(zhǔn)則可以包括(但不限于)I/O請(qǐng)求優(yōu)先級(jí)、流緩 沖器狀態(tài)、以及等待時(shí)間需求。在某些實(shí)施例中,用于一個(gè)Tp計(jì)算的PCE系數(shù)可以用于返 回更新后的介質(zhì)狀態(tài),其可以用作用于另一 PCE計(jì)算的初始介質(zhì)狀態(tài)。根據(jù)一個(gè)示例,調(diào)度器302可以檢查不同插入排列,例如將操作4插入在包含操作 1、2、3的現(xiàn)有調(diào)度表中。每一排列可以產(chǎn)生不同的總時(shí)間T??赡艿呐帕泻蜁r(shí)間包括
4,1,2,3 — T1 1,4,2,3 — T2 1,2,4,3 — T3 1,2,3,4 — T4調(diào)度器302可以確定哪種排列產(chǎn)生最小的預(yù)測(cè)總時(shí)間T,并且使用該排列作為優(yōu)選排列。此外,例如,通過(guò)合計(jì)用于每一調(diào)度項(xiàng)的時(shí)間,調(diào)度器302可以檢查所預(yù)測(cè)的錯(cuò)過(guò)的最終期限并且查看這是否導(dǎo)致任何調(diào)度項(xiàng)錯(cuò)過(guò)其最終期限。這可以包括確定每一調(diào)度 操作的完成時(shí)間,并且對(duì)所述完成時(shí)間與該操作的最終期限進(jìn)行比較。如果將錯(cuò)過(guò)任何最 終期限,則可以將該操作重新調(diào)度到隊(duì)列中更早的地方。在某些實(shí)施例中,例如,如果不能求解所有最終期限,則可以使用優(yōu)先級(jí)。例如,如 果將不可避免地錯(cuò)過(guò)某些最終期限,則最佳隊(duì)列順序可以是其中最低可能優(yōu)先級(jí)操作錯(cuò)過(guò) 它們的最終期限的隊(duì)列順序。如果存在適于前述考慮的多個(gè)可能隊(duì)列順序,則具有最少數(shù) 量的同等優(yōu)先級(jí)最終期限錯(cuò)過(guò)操作的隊(duì)列順序可以是最佳順序。如果存在其中所有先前描 述的考慮皆相同的多個(gè)可能隊(duì)列順序,則具有用于執(zhí)行整個(gè)隊(duì)列的最低總估計(jì)時(shí)間的隊(duì)列 順序可以是最佳順序。在某些情況下,只要高優(yōu)先級(jí)操作可以滿足其最終期限,就可以在高 優(yōu)先級(jí)操作之前調(diào)度低優(yōu)先級(jí)操作。如果存在其中所有先前描述的考慮皆相同的多個(gè)可能隊(duì)列順序,則其中調(diào)度隊(duì)列 406中的最新操作去往隊(duì)列末尾的順序可以是最佳順序。如果調(diào)度器302必須估計(jì)用于將 新操作插入隊(duì)列中的總隊(duì)列執(zhí)行時(shí)間,則其可以考慮多種不同因素。例如,調(diào)度器可以考慮 調(diào)度器302恰在隊(duì)列順序估計(jì)之前檢索的設(shè)備驅(qū)動(dòng)器的當(dāng)前狀態(tài)。此外,調(diào)度器302可以 考慮FIOS堆棧300中介質(zhì)過(guò)濾器層和其它層所報(bào)告的性能系數(shù)。這些值可以包括例如頭 移動(dòng)、頭對(duì)準(zhǔn)、DMA設(shè)置、數(shù)據(jù)傳送率、對(duì)于存儲(chǔ)層的層改變等。這些值可以通過(guò)I/O性能的 運(yùn)行時(shí)間測(cè)量而得以饋送,從而估計(jì)可以是盡可能真實(shí)的。一旦調(diào)度器302已經(jīng)對(duì)于請(qǐng)求403的操作確定隊(duì)列406中的最佳位置,該操作就 可以插入在此,如圖4中的407和圖5中的508所指示的那樣。再次參照?qǐng)D4,如果存在可 用于執(zhí)行I/O請(qǐng)求的資源,則調(diào)度器302可以將調(diào)度隊(duì)列406中的第一操作移動(dòng)到發(fā)出隊(duì) 列408,如在409所指示的那樣。操作的關(guān)聯(lián)介質(zhì)請(qǐng)求可以是從發(fā)出隊(duì)列408執(zhí)行的。為了 執(zhí)行介質(zhì)請(qǐng)求,調(diào)度器302可以將請(qǐng)求傳遞下達(dá)FIOS堆棧300中的第一層。調(diào)度器302之下的每一層可以通過(guò)之上的層看到傳遞至其的介質(zhì)請(qǐng)求403。如果 適當(dāng),則層可以處理數(shù)據(jù)。例如,如果請(qǐng)求是讀取操作,則解存檔器層301可以針對(duì)開(kāi)放存 檔的內(nèi)容檢查所提供的路徑名稱,如果其找到文件,則可以將請(qǐng)求重新映射為讀取壓縮后 的數(shù)據(jù)。FIOS堆棧300中的每一層將處理過(guò)的或未處理的介質(zhì)請(qǐng)求傳遞給下一更低層,直 到請(qǐng)求最終到達(dá)硬件層310。當(dāng)硬件層310對(duì)請(qǐng)求進(jìn)行響應(yīng)時(shí),該響應(yīng)從下至上遍歷堆棧 300中的每一層,并且如果適當(dāng),則每一層可以處理檢索到的數(shù)據(jù)。例如,解存檔器層301可 以獲知所返回的數(shù)據(jù)必須被解壓縮,從而其對(duì)它進(jìn)行解壓縮,之后將響應(yīng)傳遞回至堆棧。該 響應(yīng)最終回到調(diào)度器302,得以完成。當(dāng)檢索到的數(shù)據(jù)回到堆棧時(shí),調(diào)度器302可以接收它,并且然后將I/O操作移動(dòng)到 完成的隊(duì)列,其可以觸發(fā)對(duì)于應(yīng)用401的回調(diào)函數(shù)411 (如果應(yīng)用設(shè)置了回調(diào))。替換地,應(yīng) 用401可以輪詢FIOS堆棧300,以確定是否已經(jīng)完成所請(qǐng)求的I/O操作。一旦已經(jīng)完成I/ 0操作,其將可以移動(dòng)到釋放操作池412。釋放操作池412可以包含未使用的一組I/O操作 結(jié)構(gòu)。這些操作可以包括已經(jīng)分配給客戶機(jī)應(yīng)用的操作或已經(jīng)為客戶機(jī)應(yīng)用所使用并且然 后再次為了使用而釋放的操作。當(dāng)客戶機(jī)應(yīng)用進(jìn)行I/O請(qǐng)求時(shí),調(diào)度器302可以從該池將I/O操作分配給客戶機(jī)。釋放I/O池412可以實(shí)現(xiàn)為堆棧。釋放I/O請(qǐng)求可以從釋放操作 池412彈出,并且推送到輸入隊(duì)列404。以此方式,釋放I/O請(qǐng)求可以被重新使用。根據(jù)本發(fā)明實(shí)施例,調(diào)度器302可以通過(guò)調(diào)度循環(huán)而操作,如下
1.檢查I/O完成
2.發(fā)出新I/O請(qǐng)求
3.發(fā)出I/O回調(diào)(若有的話)
4.插入到調(diào)度表(從輸入調(diào)度插入)
5.再次新發(fā)出
6.檢查預(yù)測(cè)出的錯(cuò)過(guò)的最終期限
7.返回到1。對(duì)于循環(huán)的每一迭代的調(diào)度插入的數(shù)量可以受限于某個(gè)最大數(shù),例如十六次插 入。在本發(fā)明某些實(shí)施例中,輔助處理器單元105B (例如SPE 206)可以通過(guò)關(guān)于主處理器105A或PPE 204為原子的交換而將對(duì)I/O的請(qǐng)求添加到輸入隊(duì)列404來(lái)請(qǐng)求其自身 的I/O。例如,在傳統(tǒng)單元處理器實(shí)現(xiàn)方式中,SPE 206可能沒(méi)有任何I/O設(shè)施。然而,如果 輸入隊(duì)列404是公共數(shù)據(jù)元素,則輔助處理器可以通過(guò)與主處理器105A的標(biāo)準(zhǔn)原子交換并 且發(fā)信號(hào)通知主處理器105A來(lái)將I/O請(qǐng)求添加到隊(duì)列。在很多現(xiàn)有技術(shù)實(shí)現(xiàn)方式中,如果輔助處理器需要用于即刻處理的數(shù)據(jù),則該數(shù) 據(jù)必須在主存儲(chǔ)器中。通過(guò)本發(fā)明實(shí)施例,通過(guò)對(duì)照,輔助處理器105B可以將FIOS堆棧 300觸發(fā)為去從硬介質(zhì)設(shè)備118或者甚至在網(wǎng)絡(luò)127上得到所需的數(shù)據(jù)。通過(guò)示例的方式,而非通過(guò)限制的方式,輸入隊(duì)列404、完成隊(duì)列410以及釋放池 412可以是原子堆棧。輔助處理器105B可以彈出來(lái)自釋放池412的操作,填充用于該操作 的路徑和偏移,將操作推送回到輸入隊(duì)列406,然后執(zhí)行同步,并且喚醒調(diào)度器302。輔助處 理器可以在為了完成I/O操作而進(jìn)行中斷式輪詢的同時(shí)進(jìn)行其它工作。通過(guò)示例的方式,在單元處理器系統(tǒng)200中,SPE 206可以使用以下類(lèi)型的指令的 序列來(lái)服務(wù)于I/O請(qǐng)求
Op = pop(FREE)
Op path .......
Offset .......
Push (op, incoming)。SPE 206所請(qǐng)求的數(shù)據(jù)可以發(fā)送到可由PPE 204尋址的任何地方。如果SPE 206 被鎖定,則FIOS 300可以將數(shù)據(jù)直接寫(xiě)入到SPE 206的本地存儲(chǔ)LS。在某些實(shí)施例中,一 個(gè)SPE 206可以請(qǐng)求解存檔器進(jìn)行與另一 SPE的解壓縮??梢岳缡褂酶魈幚砥髦g的遠(yuǎn) 程過(guò)程調(diào)用(RPC)來(lái)實(shí)現(xiàn)該操作。在此是示例,SPE 206要求PPE 204為其做事。在更傳統(tǒng) 的RPC中,這是大約另一種方式。預(yù)取
在某些實(shí)施例中,調(diào)度器緩存305 (例如HDD緩存)可以用于將文件從介質(zhì)設(shè)備預(yù)取到 存儲(chǔ)設(shè)備115上的緩存117,從而該文件可以稍后得以快速讀取。在此情況下,預(yù)取操作413 可以直接插入到發(fā)出隊(duì)列402。預(yù)取可以是很多類(lèi)型的緩存已經(jīng)實(shí)現(xiàn)了的標(biāo)準(zhǔn)手動(dòng)預(yù)取,例如在PowerPC CPU架構(gòu)中的“debt”指令。根據(jù)本發(fā)明實(shí)施例,預(yù)取可以排隊(duì)并且作為上述 調(diào)度器循環(huán)的一部分而得以執(zhí)行。預(yù)取可以在其它I/O請(qǐng)求得以履行的同時(shí)通過(guò)相對(duì)高的 等待時(shí)間以及必須存取的低吞吐量來(lái)促進(jìn)與相對(duì)慢的源介質(zhì)(例如藍(lán)光和UMD)的工作。

調(diào)度器302可以被配置為以相對(duì)低的優(yōu)先級(jí)實(shí)現(xiàn)這種預(yù)取,從而其將僅運(yùn)行在介 質(zhì)設(shè)備118將另外為空閑的未用時(shí)刻,并且將不干擾到其它I/O請(qǐng)求。例如,系統(tǒng)300可以 具有慢介質(zhì)設(shè)備118 (例如,比如藍(lán)光盤(pán)(BD)驅(qū)動(dòng)器的光盤(pán))和較快存儲(chǔ)設(shè)備115 (例如硬 盤(pán)驅(qū)動(dòng)器)。調(diào)度器緩存層305可以用于將文件從光盤(pán)驅(qū)動(dòng)器異步拷貝到硬盤(pán)。當(dāng)文件稍 后被存取時(shí),其將以更高的HDD速度(例如20MiB/s)而不是更慢的光盤(pán)速度(例如8MiB/s) 而得以讀取。雖然緩存預(yù)取通常是對(duì)于硬盤(pán)緩存而完成的,但預(yù)取也可以對(duì)于主存儲(chǔ)器106、 206而完成。預(yù)取操作可以按在調(diào)度完成之后它們被接收的順序而被包括在調(diào)度隊(duì)列406 的結(jié)束。在某些實(shí)施例中,預(yù)取操作可以根據(jù)需要而延遲。在某些實(shí)施例中,調(diào)度器302 所使用的性能特征方程可以包括關(guān)于什么存儲(chǔ)于緩存117中的信息,作為狀態(tài)信息的一部 分。預(yù)取操作并非是以與其它I/O操作相同的方式而調(diào)度的。預(yù)取操作保存在分離的預(yù)取 隊(duì)列413中,預(yù)取隊(duì)列413僅當(dāng)調(diào)度隊(duì)列406為空時(shí)受服務(wù)。預(yù)取操作可以根據(jù)需要而延 遲。另外,預(yù)取可以是按它們被接收到的順序而執(zhí)行的。調(diào)度器302可以保持預(yù)取請(qǐng)求排 隊(duì),并且僅當(dāng)I/O子系統(tǒng)已經(jīng)空閑指定的時(shí)間長(zhǎng)度時(shí)執(zhí)行它們。這樣防止預(yù)取干擾到正常 I/O請(qǐng)求。此外,預(yù)取也不限于單一緩存塊;它們可以是任何大小的,或者甚至傳遞告訴緩 存從開(kāi)始到結(jié)束加載整個(gè)文件的特殊“完整文件”值。進(jìn)而,雖然預(yù)取可以是任何大小的,但 預(yù)取可以被實(shí)現(xiàn)使得不多于一個(gè)的緩存塊被填充,之后返回到調(diào)度器302,以檢查FIOS堆 棧302繼續(xù)空閑。FIOS堆棧300可以被配置為以避免不必要的預(yù)取的方式來(lái)實(shí)現(xiàn)預(yù)取。例如,如圖 6所示,如果緩存601中沒(méi)有塊,則FIOS調(diào)度器緩存層305可以填充第一塊,然后返回以檢 查空閑狀態(tài)。如果塊1至N在存儲(chǔ)設(shè)備115上的緩存117中,則第(N+1)塊將填充有來(lái)自 介質(zhì)設(shè)備118的數(shù)據(jù)。調(diào)度器緩存層305可以返回,以檢查空閑狀態(tài)。該過(guò)程可以重復(fù),直 到新I/O到達(dá)輸入隊(duì)列。這些特征允許任意數(shù)量的預(yù)取排隊(duì),從而對(duì)于應(yīng)用而快速且高效 地將大量數(shù)據(jù)從介質(zhì)設(shè)備118預(yù)取到存儲(chǔ)設(shè)備115 (或主存儲(chǔ)器106),而不干擾到正常調(diào) 度的I/O請(qǐng)求。例如,在游戲應(yīng)用中,游戲數(shù)據(jù)一般存儲(chǔ)在由介質(zhì)設(shè)備118所讀取的介質(zhì)(例如 ⑶-ROM或HD-DVD盤(pán))上。游戲可以確定玩家正移動(dòng)朝向特定目的地,并且計(jì)算出玩家應(yīng)在 60秒內(nèi)到達(dá)那里。在該時(shí)間期間,F(xiàn)IOS堆棧300可以從介質(zhì)設(shè)備預(yù)取與目的地有關(guān)的。如 果玩家決定轉(zhuǎn)向并且前往不同的目的地,則應(yīng)用可以取消預(yù)取。在其它實(shí)施例中,應(yīng)用可以 使用高級(jí)通知來(lái)防止覆蓋緩存117中的所需數(shù)據(jù)。如上所述的緩存預(yù)取可以改進(jìn)以I/O驅(qū)動(dòng)的應(yīng)用(例如視頻游戲)以及具有特定 I/O需求的平臺(tái)(例如新潮視頻游戲控制臺(tái))方面的I/O性能。具體地說(shuō),游戲數(shù)據(jù)通常存 儲(chǔ)在慢介質(zhì)(例如光學(xué)介質(zhì)或網(wǎng)絡(luò)文件服務(wù)器)上,但游戲可以具有對(duì)快速本地存儲(chǔ)(比如 HDD)的存取。利用輔助處理器的數(shù)據(jù)變換
根據(jù)另一實(shí)施例,F(xiàn)IOS利用特定處理器架構(gòu),所述架構(gòu)利用主處理器和輔助處理器,所述輔助處理器具有關(guān)聯(lián)本地存儲(chǔ)器。這些實(shí)施例可以例如用于數(shù)據(jù)變換,例如解壓縮或解 密。通過(guò)比較的方式,特定先前解存檔系統(tǒng)已經(jīng)使用標(biāo)準(zhǔn)背景線程中運(yùn)行的簡(jiǎn)單解壓縮算 法(例如Zlib)。通過(guò)對(duì)照,本發(fā)明實(shí)施例可以包括抽象編解碼器接口,其允許標(biāo)準(zhǔn)解壓縮器 實(shí)現(xiàn)方式和非標(biāo)準(zhǔn)實(shí)現(xiàn)方式被配置為利用包括帶有關(guān)聯(lián)本地存儲(chǔ)器的輔助處理器的處理 器架構(gòu)(例如單元處理器架構(gòu))。這些實(shí)施例允許解壓縮器對(duì)象設(shè)置多個(gè)標(biāo)志和約束,解存 檔器301于是可以利用其來(lái)優(yōu)化存儲(chǔ)器使用 和速度。這些約束中的很多以及導(dǎo)致特殊處理 的情形對(duì)于游戲編程、文件系統(tǒng)I/O解壓縮、或系統(tǒng)100的架構(gòu)的情形是唯一的。特定應(yīng)用(例如視頻游戲應(yīng)用)具有受限量的可用存儲(chǔ)器,這使得期望使用盡可能 少的存儲(chǔ)器。一個(gè)通常表述是對(duì)于I/O解壓縮,僅具有三個(gè)I/O緩沖器由讀取占據(jù)的一 個(gè)緩沖器,由數(shù)據(jù)變換操作(例如解壓縮或解密)占據(jù)的多達(dá)兩個(gè)臨時(shí)緩沖器(一個(gè)用于輸 入,一個(gè)用于輸出)。通過(guò)示例的方式,而非限制,特定實(shí)施例可以通過(guò)對(duì)于數(shù)據(jù)變換使用帶 有關(guān)聯(lián)本地存儲(chǔ)器(例如單元處理器200中的SPE 206)的輔助處理器而完全避免使用臨時(shí) 緩沖器。例如,如果解壓縮是由主處理器(例如PPE 204)處理的,則典型地需要一個(gè)緩沖器 來(lái)臨時(shí)存儲(chǔ)壓縮后的數(shù)據(jù),并且需要另一緩沖器來(lái)臨時(shí)存儲(chǔ)解壓縮后的數(shù)據(jù)。如果帶有本 地存儲(chǔ)器106B的輔助處理器105B可用,則可以使用本地存儲(chǔ)器106B而非臨時(shí)緩沖器來(lái)完 成相同的解壓縮。壓縮后的數(shù)據(jù)與解壓縮后的數(shù)據(jù)皆可以存儲(chǔ)于本地存儲(chǔ)器106B中。通 過(guò)示例的方式,在特定單元處理器架構(gòu)中,SPE 206具有256K字節(jié)的本地存儲(chǔ)容量。這對(duì)于 壓縮后的輸入、解壓縮后的輸出以及用于解壓縮算法的代碼通常是足夠的存儲(chǔ)器空間。通 過(guò)比較,如果解壓縮是由主處理器105A (例如PPE 204)處理的,則壓縮后的數(shù)據(jù)讀取到第 一緩沖器,解壓縮,并且解壓縮后的數(shù)據(jù)寫(xiě)入到第二緩沖器。解壓縮后的數(shù)據(jù)于是從第二緩 沖器拷貝到其目的地。圖7A和圖7B示出其中利用輔助處理器實(shí)現(xiàn)特定數(shù)據(jù)變換的兩個(gè)示例。具體地說(shuō), 如圖7A所示,在履行I/O請(qǐng)求的過(guò)程期間,主處理器105A上運(yùn)行的FIOS 300可以例如經(jīng) 由數(shù)據(jù)變換層311調(diào)取數(shù)據(jù)變換。主處理器105A可以設(shè)置輔助處理器105B,如在702所指 示的那樣。具體地說(shuō),主處理器105A可以命令輔助處理器105B加載編碼后的指令701,用 于將數(shù)據(jù)變換置入到輔助處理器的本地存儲(chǔ)器106B。主處理器或輔助處理器于是可以通過(guò) FIOS堆棧300工作,以將數(shù)據(jù)703從介質(zhì)設(shè)備118傳送到主存儲(chǔ)器106,如在704所指示的 那樣。輔助處理器105B于是可以將數(shù)據(jù)703加載到本地存儲(chǔ)器106B,如在706所指示的那 樣。輔助處理器于是可以對(duì)數(shù)據(jù)703實(shí)現(xiàn)變換,如在708所指示的那樣,以產(chǎn)生變換后 的數(shù)據(jù)705,變換后的數(shù)據(jù)705可以存儲(chǔ)于本地存儲(chǔ)器106B中。通過(guò)示例的方式,編碼后的 指令701的執(zhí)行可以對(duì)數(shù)據(jù)703進(jìn)行解密或解壓縮。變換后的數(shù)據(jù)705可以傳送到主存儲(chǔ) 器106,如在710所指示的那樣。替換地,變換后的數(shù)據(jù)705可以傳遞到某個(gè)另外目的地,例 如存儲(chǔ)設(shè)備115。前述操作序列可以對(duì)于后續(xù)數(shù)據(jù)塊而重復(fù),直到已經(jīng)處理完I/O請(qǐng)求所指 定的所有數(shù)據(jù)。注意,一旦輸入數(shù)據(jù)703已經(jīng)傳送到本地存儲(chǔ)器106B,就可以通過(guò)新輸入數(shù) 據(jù)或變換后的數(shù)據(jù)705在主存儲(chǔ)器中對(duì)其進(jìn)行覆蓋。通過(guò)示例的方式,而非通過(guò)限制的方式,單元處理器架構(gòu)(例如圖2中所描述的架 構(gòu))可以用于實(shí)現(xiàn)根據(jù)圖7A的數(shù)據(jù)解壓縮。與文件系統(tǒng)I/O解壓縮的需求相結(jié)合的SPU編程的特性(其中,數(shù)據(jù)被 流送到SPE 206的本地存儲(chǔ)LS,然后一旦處理完成就流送回去)為 改進(jìn)的I/O性能提供了機(jī)會(huì)。例如,使用SPE 206來(lái)解壓縮可以提供從37Mbps到42Mbps 的性能改進(jìn),結(jié)果是釋放出額外的緩沖器??梢酝ㄟ^(guò)Sony Playstation 2中所使用的處理 器架構(gòu)來(lái)實(shí)現(xiàn)相似的解壓縮。在此情況下,主處理器稱為情緒引擎(EE),各輔助處理器之一 (稱為I/O處理器(IOP))具有關(guān)聯(lián)本地存儲(chǔ)器。在此情況下,沿著圖7A所示的線,解存檔器 301可以運(yùn)行在EE上,解壓縮可以實(shí)現(xiàn)在IOP上。替換地,圖7A所描述的技術(shù)可以用于分 布式計(jì)算架構(gòu),其包括兩個(gè)帶有分離可尋址存儲(chǔ)器的處理器。注意,雖然前述示例處理通過(guò)變換層所實(shí)現(xiàn)的數(shù)據(jù)變換,但關(guān)于圖7A而描述的方 法可以用于實(shí)現(xiàn)任何介質(zhì)過(guò)濾器層304。通過(guò)對(duì)照,現(xiàn)有技術(shù)文件I/O系統(tǒng)典型地通過(guò)主處 理器(例如單元處理器示例中的PPU)而實(shí)現(xiàn)。在替換實(shí)現(xiàn)方式中,如果從介質(zhì)設(shè)備118讀取的數(shù)據(jù)之目的地是慢存儲(chǔ)器(例如 圖形存儲(chǔ)器140,比如視頻隨機(jī)存取存儲(chǔ)器(VRAM)),并且編解碼器需要執(zhí)行對(duì)其輸出的隨 機(jī)存取,則FIOS解存檔器可能需要分配臨時(shí)輸出緩沖器。然而,如果編解碼器不需要隨機(jī) 存取(正如例如以SPU實(shí)現(xiàn)的解壓縮器的情況),則FIOS解存檔器301可以避免分配臨時(shí)輸 出緩沖器,并且數(shù)據(jù)703可以直接解壓縮到目的地。進(jìn)而,文件系統(tǒng)解壓縮可以要求“溢出” 或未用的字節(jié);即,當(dāng)恰需要一些字節(jié)時(shí)對(duì)整個(gè)64千字節(jié)塊進(jìn)行解壓縮。如果編解碼器指 示其可以輸出恰一部分壓縮后的塊(正如例如以SPU實(shí)現(xiàn)的解壓縮器的情況),則FIOS解存 檔器可以避免分配臨時(shí)輸出緩沖器。此外,帶有關(guān)聯(lián)本地存儲(chǔ)器106B的輔助處理器105B 可以用在上述各情形的任何以及所有組合中。圖7B示出結(jié)合慢圖形存儲(chǔ)器340使用輔助處理器105B和本地存儲(chǔ)器106B的示 例。FIOS 300可以將數(shù)據(jù)從介質(zhì)設(shè)備118讀取到圖形存儲(chǔ)器340 (例如VRAM)。使用緩沖 器將數(shù)據(jù)傳送到VRAM勢(shì)必緩慢。然而,將VRAM數(shù)據(jù)讀取到特定類(lèi)型的輔助處理器本地存 儲(chǔ)器(例如SPE 206的本地存儲(chǔ)LS)不成問(wèn)題。在圖7B描述的示例中,F(xiàn)IOS 300主要是在 主處理器105A上實(shí)現(xiàn)的。未被變換的數(shù)據(jù)703可以從圖形存儲(chǔ)器340傳送到與輔助處理 器105B關(guān)聯(lián)的本地存儲(chǔ)器106B。FIOS 301可以將變換指令701加載到本地存儲(chǔ)器106B, 以由輔助處理器105B執(zhí)行。輔助處理器105B可以通過(guò)執(zhí)行指令701而將數(shù)據(jù)703變換為 變換后的數(shù)據(jù),以生成變換后的數(shù)據(jù)705。變換后的數(shù)據(jù)于是可以傳送到圖形存儲(chǔ)器340。 在對(duì)該實(shí)施例的某些變形中,未被變換的(例如加密的或壓縮后的)數(shù)據(jù)703可以是從介質(zhì) 設(shè)備118讀取的,并且存儲(chǔ)于主存儲(chǔ)器106中的緩沖器中,之后其傳送到本地存儲(chǔ)器106B。嵌套式存檔
先前FIOS實(shí)現(xiàn)方式已經(jīng)包括了隨機(jī)存取解存檔系統(tǒng),其允許壓縮后的存檔的內(nèi)容實(shí) 際上出現(xiàn)于文件系統(tǒng)等級(jí)中,并且其通過(guò)覆蓋讀取和解壓縮而以優(yōu)化高效的方式從這些存 檔檢索數(shù)據(jù)。本發(fā)明實(shí)施例通過(guò)如下方式細(xì)化該系統(tǒng),即包括用于處理具有單一解存檔器 層301的嵌套式存檔的能力,并且沒(méi)有性能損失(penalty)。在此所使用的術(shù)語(yǔ)嵌套式存檔 指代存儲(chǔ)于其它存檔內(nèi)的存檔,其自身可以存儲(chǔ)于另一存檔中,到達(dá)嵌套的任意深度級(jí)別。對(duì)于滿足游戲I/O和數(shù)據(jù)布局的唯一需求而言,嵌套式存檔支持是特別有用的。 使用嵌套式存檔可以與調(diào)度器302所使用的驅(qū)動(dòng)器模型302A協(xié)作。具體地說(shuō),大型文件允 許更好的模型驅(qū)動(dòng)器頭移動(dòng)。如果壓縮后的存檔格式為隨機(jī)存取,則嵌套式存檔支持可以 大受促進(jìn)。通過(guò)對(duì)照,典型地,壓縮后的存檔并非隨機(jī)存取。例如,^ ^4 、72、壓縮格式等典型地要求從存檔的開(kāi)頭線性存取。在此所使用的術(shù)語(yǔ)“存檔”指代組合為單個(gè)較大文件的一組數(shù)據(jù)文件。源數(shù)據(jù)可 以不修改地被存儲(chǔ),或者一個(gè)或多個(gè)數(shù)據(jù)變換(例如壓縮或加密)可以應(yīng)用于數(shù)據(jù)的任何部 分。索引(有時(shí)稱為內(nèi)容表)可以通過(guò)描述源文件的至少某方面(例如存檔內(nèi)的路徑和偏 移)的存檔而得以保存,從而它們可以被查找并且單獨(dú)存取。術(shù)語(yǔ)“嵌套式存檔”指代其中 一個(gè)或多個(gè)源數(shù)據(jù)文件為另一存檔(或嵌套式存檔)的存檔。根據(jù)這種嵌套,任何給定源數(shù) 據(jù)塊可以具有應(yīng)用至其的零個(gè)或多個(gè)數(shù)據(jù)變換。例如,具有兩個(gè)級(jí)別(級(jí)別1和級(jí)別2)的 視頻游戲應(yīng)用可以使用題為“game.psarc”的嵌套式存檔,其包含題為“l(fā)evell.psarc”和 “l(fā)evel2. psarc”的兩個(gè)存檔。這可以為了除錯(cuò)以及測(cè)試的目的而通過(guò)允許游戲開(kāi)發(fā)者使用 單存檔(“1^611. 8虹(”、“1^612. 5^1^”等)來(lái)促進(jìn)開(kāi)發(fā),而非總是每次花費(fèi)時(shí)間來(lái)創(chuàng)建 更大的“game, psarc”存檔。

開(kāi)發(fā)者可以生成嵌套式存檔,但傳統(tǒng)I/O讀取器無(wú)法讀取或者無(wú)法高效地讀取多 級(jí)存檔。為了克服該問(wèn)題,存檔可以如圖8所示而被配置。具體地說(shuō),外部存檔800可以包 括內(nèi)部存檔801、802,其包含帶有用于單獨(dú)級(jí)別游戲的數(shù)據(jù)的文件。通過(guò)示例的方式,而非 通過(guò)限制的方式,內(nèi)部存檔801、802可以包含與特定游戲級(jí)別有關(guān)的數(shù)據(jù),例如地圖、在該 級(jí)別可用的武器以及在該級(jí)別遭遇的敵人。用于內(nèi)部存檔801、802的數(shù)據(jù)可以被單獨(dú)壓 縮,并且與公共數(shù)據(jù)803捆綁。外部存檔800內(nèi)的文件可以在一塊接一塊的基礎(chǔ)上被壓縮。 每一存檔可以包括允許解存檔器在外部存檔800內(nèi)的任何地方(包括內(nèi)部存檔801、802中 的任何地方)找尋任何給定數(shù)據(jù)塊的索引。該索引可以被看作用于存檔的內(nèi)容表的等同物。當(dāng)FIOS 300發(fā)出對(duì)來(lái)自存檔特定文件的請(qǐng)求時(shí),該請(qǐng)求可以看起來(lái)如此 Request /game/1 eve 12/map (1000, 10)。部分 “/game/level2/map” 稱為路徑,其用于提交 特定文件。部分“(1000,10)”標(biāo)識(shí)請(qǐng)求的偏移和長(zhǎng)度。當(dāng)將要讀取外部存檔800或其一部 分時(shí),解存檔器301可以考慮可用文件的列表。該列表可以根據(jù)哪些存檔打開(kāi)而不同。例 如,如果外部存檔800或內(nèi)部存檔801、802皆未打開(kāi),則列表可以看起來(lái)如此
/game, psarc
如果外部存檔800打開(kāi),則列表可以看起來(lái)如此 /game (folder) /game/Ieveil, psarc /game/level2. psarc /game/common, dat
如果內(nèi)部存檔打開(kāi),則列表可以看起來(lái)如下 /game/Ieveil /map /game/level1/weapons /game/Ieveil /enemies /game/1eve12/map /game/level2/weapons /game/level2/enemies /game/common, dat
每一存檔800、801、802可以具有內(nèi)容的路徑(或部分路徑)的散列的列表。散列列表可以用于生成用于存檔的內(nèi)容表(TOC)。例如,用于外部存檔800的內(nèi)容表可以被配置如下TOC: hash (/levell. psarc) hash (/level2. psarc) hash (/common, dat)
其中,hashO指代圓括號(hào)中的量的散列化??梢允褂萌魏魏线m的散列,例如MD5散列。相似地,用于級(jí)別1內(nèi)部存檔801的內(nèi)容表可以被配置如下 TOC: hash (/map)
hash(/weapons) hash(/enemies)
如果使用圖8所示的類(lèi)型的嵌套式存檔,則解存檔器311可以被配置為處理它們。通過(guò) 示例的方式,解存檔器311可以實(shí)現(xiàn)圖9所示的解存檔方法900。方法900可以開(kāi)始于存檔 中的初始查找,如在902所指示的那樣。通過(guò)示例的方式,而非通過(guò)限制的方式,初始查找 可以返回用于搜尋的數(shù)據(jù)的初始路徑、偏移、長(zhǎng)度、以及所需數(shù)據(jù)變換的排序后的列表。具 體地說(shuō),1/0請(qǐng)求可能是如下的
(/game/level2/weapons, offset 0, length 50000, none) 內(nèi)部存檔中的該文件的初始查找可以返回以下內(nèi)容
(/game/level2. psarc, offset 20000,length 30000,zlib decompress) 在初始查找之后,解存檔器311可以求解嵌套,如在904所指示的那樣。在求解嵌套中, 解存檔器311可以嘗試確定存檔器802是否存儲(chǔ)于另一存檔內(nèi)以及其是壓縮過(guò)還是未壓縮 而存儲(chǔ)的。在求解嵌套中,解存檔器311可以返回用于搜尋的數(shù)據(jù)的路徑、偏移、長(zhǎng)度、以及 所需數(shù)據(jù)變換的排序列表。通過(guò)示例的方式,路徑可以具有形式/game. psarc,offset 120000, length 30016, decrypt + zlib decompress。嵌套可以通過(guò)循環(huán)而不是遞歸而 求解,以避免堆棧極限。一旦已經(jīng)求解嵌套,就可以從介質(zhì)設(shè)備118傳送數(shù)據(jù)。通過(guò)示例的 方式,而非通過(guò)限制的方式,解存檔器311可以一塊接一塊地迭代地讀取并且變換數(shù)據(jù),如 在905所指示的那樣。具體地說(shuō),解存檔器可以讀取數(shù)據(jù)塊,如在906所指示的那樣,然后 將數(shù)據(jù)變換應(yīng)用于所讀取的塊,如在908所指示的那樣。多級(jí)嵌套存檔可以被求解,從最外 存檔下至單一交錯(cuò)讀取和變換循環(huán)讀取塊,以最高效地使用源介質(zhì)。在已經(jīng)讀取并且變換 了每一塊之后,可以將期望的部分拷貝去到合適的目的地,例如在主存儲(chǔ)器106、存儲(chǔ)設(shè)備 115或其它地方,如在910所指示的那樣。塊的期望部分可以是任何大小,例如與單個(gè)字節(jié) 同樣小,或者與整個(gè)塊同樣大。覆蓋層
如上所述,F(xiàn)IOS堆棧300中的介質(zhì)過(guò)濾器層304可以包括覆蓋層307。根據(jù)本發(fā)明實(shí) 施例,覆蓋層307可以被配置為允許在文件系統(tǒng)級(jí)別任意覆蓋文件和目錄。普通構(gòu)思可以 與Unix中的聯(lián)合安裝(union mount)比較,例外在于其遠(yuǎn)更靈活。典型的聯(lián)合安裝通過(guò)將 一個(gè)文件系統(tǒng)中的目錄與另一文件系統(tǒng)的整個(gè)內(nèi)容合并而工作。覆蓋層307進(jìn)行相似的事 情,但遠(yuǎn)更靈活并且全特征化。例如,覆蓋層307可以在目錄、文件或甚至文件中的字節(jié)范 圍的粒度上操作。目錄可以被隱藏,或者使用覆蓋層307來(lái)代替它們的內(nèi)容。此外,覆蓋層 307可以用于將從主要數(shù)據(jù)源所請(qǐng)求的文件替代為來(lái)自次要數(shù)據(jù)源的其它文件。次要數(shù)據(jù)源可以是文件或目錄,其可以在與主要數(shù)據(jù)源或另一介質(zhì)相同的介質(zhì)上。此外,第二數(shù)據(jù)源 可以甚至是虛擬數(shù)據(jù)源,從而數(shù)據(jù)可以通過(guò)回調(diào)而得以指定。在這種特定情境下,術(shù)語(yǔ)“回 調(diào)”指代作為對(duì)于其它代碼的變?cè)鴤魉偷目蓤?zhí)行代碼。進(jìn)而,創(chuàng)建覆蓋的應(yīng)用可以指定準(zhǔn)則,用于覆蓋層307應(yīng)該如何以及何時(shí)應(yīng)用覆 蓋。例如,如果應(yīng)用103正將目錄B覆蓋到目錄A,則所述準(zhǔn)則可以是“覆蓋”=首先查找B 中的文件,然后查找A中的文件;“未覆蓋”=首先查找A中的文件,然后查找B中的文件; “較新的”=如果文件存在于這兩個(gè)地方,則使用帶有更近修改日期的那個(gè);“較舊的”=如果 文件存在于這兩個(gè)地方,則使用帶有較早修改日期的那個(gè);諸如此類(lèi)。覆蓋層307可以被配置為允許將針對(duì)來(lái)自特定源的I/O讀取的請(qǐng)求任意映射到來(lái) 自另一源的讀取。例如,對(duì)于從介質(zhì)設(shè)備118讀取特定文件的請(qǐng)求可以映射到位于例如存 儲(chǔ)設(shè)備115上的對(duì)應(yīng)文件。使用這種范圍從文件內(nèi)的具體字節(jié)到整個(gè)目錄的特征數(shù)據(jù)可以 被隱藏并且四處交換。通過(guò)指定哪些目錄、文件或字節(jié)需要待替代,覆蓋層307可以使得 FIOS堆棧300必須進(jìn)行以處理特定I/O請(qǐng)求的工作量最小化。覆蓋層307可以用于例如實(shí)現(xiàn)對(duì)軟件和/或數(shù)據(jù)的更新。在很多現(xiàn)有技術(shù)更新系 統(tǒng)中,可執(zhí)行的可鏈接文件(ELF)從介質(zhì)設(shè)備118拷貝到存儲(chǔ)設(shè)備115,然后利用更新后的 代碼或數(shù)據(jù)打補(bǔ)丁。通過(guò)本發(fā)明實(shí)施例,通過(guò)對(duì)照,應(yīng)用103可以命令FIOS 101填充帶有 來(lái)自介質(zhì)設(shè)備118的數(shù)據(jù)的特定字節(jié)范圍以及來(lái)自某個(gè)另外位置(例如存儲(chǔ)設(shè)備115)的其 它字節(jié)范圍。因此,不是必須拷貝整個(gè)文件來(lái)對(duì)其打補(bǔ)丁。反之,打補(bǔ)丁操作可以實(shí)現(xiàn)在I/ 0系統(tǒng)級(jí)別。多數(shù)現(xiàn)有打補(bǔ)丁實(shí)現(xiàn)方式是基于替換整個(gè)文件的。這是最便于實(shí)現(xiàn)的,并且因此 至今是最常用的方法。通過(guò)對(duì)照,覆蓋層307可以實(shí)現(xiàn)的增強(qiáng)型打補(bǔ)丁操作允許遠(yuǎn)更復(fù)雜 且有用的模式,例如在壓縮后的并且加密后的存檔內(nèi)打補(bǔ)丁。速度仿真層
在本發(fā)明特定實(shí)施例中,速度仿真層315可以用于在開(kāi)發(fā)期間減慢較快存儲(chǔ)設(shè)備,以 仿真較慢I/O設(shè)備的性能。速度仿真層315可以利用搜尋時(shí)間、吞吐量以及較慢I/O設(shè)備 的其它性能特征的模型。例如,速度仿真層315可以減慢存儲(chǔ)設(shè)備115 (例如硬盤(pán)驅(qū)動(dòng)器) 來(lái)仿真介質(zhì)設(shè)備118 (例如HD-DVD,比如藍(lán)光驅(qū)動(dòng)器)的較慢搜尋時(shí)間和/或吞吐量。根據(jù)本發(fā)明實(shí)施例,速度仿真層315可以通過(guò)將先前會(huì)話期間收集到的驅(qū)動(dòng)器性 能數(shù)據(jù)饋送到后來(lái)會(huì)話而得以實(shí)現(xiàn)。如上所述,調(diào)度器302所使用的性能模型可以被配置 為對(duì)任意復(fù)雜驅(qū)動(dòng)器特性(比如吞吐量、激光器搖擺、讀取頭移動(dòng)、層改變、以及甚至請(qǐng)求開(kāi) 銷(xiāo))進(jìn)行建模。速度仿真層315可以使用該信息提供特定介質(zhì)設(shè)備的高精度仿真。由于這 種仿真是基于運(yùn)行時(shí)間性能的,因此其將遠(yuǎn)比在忽略更復(fù)雜細(xì)節(jié)(比如搜尋時(shí)間)的同時(shí)嘗 試簡(jiǎn)單地匹配吞吐量的簡(jiǎn)單質(zhì)樸仿真層更精確。本發(fā)明實(shí)施例提供了在利用大量I/O的應(yīng)用和系統(tǒng)中的改進(jìn)的I/O性能。如上所 述,本發(fā)明實(shí)施例在視頻游戲應(yīng)用和視頻游戲系統(tǒng)中尤其有用。然而,本發(fā)明實(shí)施例不限于 這些應(yīng)用和系統(tǒng)。 雖然以上是本發(fā)明優(yōu)選實(shí)施例的完整描述,但有可能使用各種替換、修改和等同 物。因此,本發(fā)明范圍不應(yīng)參照以上描述而得以確定,而應(yīng)反之參照所附權(quán)利要求連同其等 同物的全部范圍而得以確定。在此描述的任何特征,無(wú)論優(yōu)選與否,可以與在此描述的任何另外特征組合,也無(wú)論優(yōu)選與否。在所附權(quán)利要求中,不定冠詞“一”或“一個(gè)”指代不定冠 詞后的一個(gè)或多個(gè)項(xiàng)目的數(shù)量,除非另外明確聲明。所附權(quán)利要求不應(yīng)理解為包括裝置加 功能的限定, 除非這種限定使用短語(yǔ)“用于……的裝置”而明確陳述于給定權(quán)利要求中。
權(quán)利要求
1.在具有處理器單元、存儲(chǔ)器和介質(zhì)設(shè)備的系統(tǒng)中,其中,所述處理器單元包括主處 理器和輔助處理器,所述輔助處理器帶有關(guān)聯(lián)本地存儲(chǔ)器,一種用于處理進(jìn)入或來(lái)自所述 介質(zhì)設(shè)備的輸入或輸出(I/O)的方法,所述方法包括a)從在所述處理器上運(yùn)行的應(yīng)用接收輸入I/O請(qǐng)求,以將數(shù)據(jù)傳送到所述介質(zhì)設(shè)備或 者傳送來(lái)自所述介質(zhì)設(shè)備的數(shù)據(jù);b)計(jì)算用于完成所述輸入I/O請(qǐng)求的預(yù)測(cè)時(shí)間Tp;c)將所述輸入I/O請(qǐng)求插入到在所述存儲(chǔ)器中實(shí)施的調(diào)度表,其中,所述調(diào)度表內(nèi)輸 入I/O請(qǐng)求的位置至少部分地取決于所述預(yù)測(cè)時(shí)間Tp ;d)根據(jù)所述調(diào)度表通過(guò)將數(shù)據(jù)從所述介質(zhì)設(shè)備傳送到所述本地存儲(chǔ)器,并且使用所述 輔助處理器對(duì)所述本地存儲(chǔ)器中的數(shù)據(jù)進(jìn)行變換而服務(wù)于所述輸入I/O請(qǐng)求。
2.權(quán)利要求1所述的方法,其中,b)包括根據(jù)性能特征方程(PCE)來(lái)計(jì)算Tp,所述性 能特征方程涉及所述介質(zhì)設(shè)備的一個(gè)或多個(gè)參數(shù)以及據(jù)所述輸入I/O請(qǐng)求所確定的一個(gè) 或多個(gè)系數(shù)。
3.權(quán)利要求2所述的方法,其中,所述一個(gè)或多個(gè)參數(shù)包括請(qǐng)求開(kāi)銷(xiāo)χ、頭移動(dòng)速率y 和吞吐量ζ。
4.權(quán)利要求3所述的方法,其中,所述一個(gè)或多個(gè)系數(shù)包括開(kāi)銷(xiāo)系數(shù)A、頭行進(jìn)距離B 和傳送數(shù)據(jù)量C。
5.權(quán)利要求4所述的方法,其中,所述特征方程的形式是TP= Ax+By+Cz。
6.權(quán)利要求2所述的方法,其中,c)包括對(duì)于所述調(diào)度表中的多個(gè)不同I/O請(qǐng)求,以 不同系數(shù)迭代PCE,以確定用于服務(wù)于所述I/O請(qǐng)求的總時(shí)間T。
7.權(quán)利要求6所述的方法,其中,c)還包括對(duì)于所述多個(gè)I/O請(qǐng)求的兩個(gè)或更多個(gè) 不同順序,計(jì)算總時(shí)間T的兩個(gè)或更多個(gè)不同的值,并且基于所述總時(shí)間T的最優(yōu)值而將所 述輸入I/O請(qǐng)求插入到所述調(diào)度表。
8.權(quán)利要求7所述的方法,其中,所述總時(shí)間T的最優(yōu)值的值是用于所述多個(gè)I/O請(qǐng) 求的兩個(gè)或更多個(gè)不同順序的總時(shí)間T的最小值。
9.權(quán)利要求2所述的方法,其中,b)包括對(duì)于I/O請(qǐng)求測(cè)量所花費(fèi)的實(shí)際時(shí)間Ta,并 且結(jié)合所述一個(gè)或多個(gè)系數(shù)使用所述實(shí)際時(shí)間Ta來(lái)對(duì)于一個(gè)或多個(gè)未知參數(shù)的值以迭代 方式求解所述PCE。
10.權(quán)利要求1所述的方法,其中,d)還包括從壓縮后的嵌套式存檔提取特定數(shù)據(jù)。
11.權(quán)利要求1所述的方法,其中,所述系統(tǒng)還包括圖形處理器和關(guān)聯(lián)圖形存儲(chǔ)器,其 中,d)包括將數(shù)據(jù)從所述介質(zhì)設(shè)備讀入所述圖形存儲(chǔ)器,將所述數(shù)據(jù)從所述圖形存儲(chǔ)器 傳送到所述本地存儲(chǔ)器,使用所述輔助處理器對(duì)所述數(shù)據(jù)執(zhí)行數(shù)據(jù)變換以產(chǎn)生變換后的數(shù) 據(jù),并且將所述變換后的數(shù)據(jù)傳送回到所述圖形存儲(chǔ)器。
12.權(quán)利要求1所述的方法,其中,d)包括實(shí)現(xiàn)數(shù)據(jù)覆蓋,其中,所述介質(zhì)設(shè)備與所述 存儲(chǔ)器之間傳送的一個(gè)或多個(gè)主數(shù)據(jù)單元被來(lái)自次要數(shù)據(jù)源的一個(gè)或多個(gè)次要數(shù)據(jù)單元 所代替。
13.權(quán)利要求12所述的方法,其中,所述主數(shù)據(jù)單元的源和所述次要數(shù)據(jù)源位于相同 介質(zhì)上。
14.權(quán)利要求12所述的方法,其中,所述主數(shù)據(jù)單元的源和所述次要數(shù)據(jù)源位于不同介質(zhì)上。
15.權(quán)利要求12所述的方法,其中,所述次要數(shù)據(jù)源是虛擬數(shù)據(jù)源。
16.權(quán)利要求15所述的方法,其中,所述一個(gè)或多個(gè)次要數(shù)據(jù)單元是由回調(diào)所指定的。
17.權(quán)利要求1所述的方法,其中,所述系統(tǒng)還包括快速存儲(chǔ)設(shè)備,其中,d)包括將一 個(gè)或多個(gè)數(shù)據(jù)單元從所述介質(zhì)設(shè)備預(yù)取到所述快速存儲(chǔ)設(shè)備,隨后傳送來(lái)自所述快速存儲(chǔ) 設(shè)備的數(shù)據(jù)單元。
18.權(quán)利要求17所述的方法,其中,所述快速存儲(chǔ)設(shè)備是硬盤(pán)驅(qū)動(dòng)器。
19.權(quán)利要求18所述的方法,其中,所述介質(zhì)設(shè)備是高容量光盤(pán)驅(qū)動(dòng)器。
20.權(quán)利要求17所述的方法,其中,預(yù)取一個(gè)或多個(gè)數(shù)據(jù)單元的步驟包括在I/O另外 空閑的時(shí)間段期間預(yù)取所述一個(gè)或多個(gè)數(shù)據(jù)單元。
21.權(quán)利要求20的方法,其中,預(yù)取一個(gè)或多個(gè)數(shù)據(jù)單元的步驟包括從所述介質(zhì)設(shè) 備預(yù)取一個(gè)或多個(gè)數(shù)據(jù)單元的第一組,檢查所述介質(zhì)設(shè)備的空閑性,并且如果I/O空閑則 從所述介質(zhì)設(shè)備預(yù)取一個(gè)或多個(gè)數(shù)據(jù)單元的第二組,或者如果I/O不空閑則延遲預(yù)取所述 第二組。
22.權(quán)利要求1的方法,其中,b)包括調(diào)整所述一個(gè)或多個(gè)參數(shù),以仿真比與所述系 統(tǒng)關(guān)聯(lián)的所述介質(zhì)設(shè)備更慢的介質(zhì)設(shè)備的操作。
23.—種系統(tǒng),包括處理器單元;存儲(chǔ)器,耦合到所述處理器單元;介質(zhì)設(shè)備,耦合到所述處理器單元;以及一組處理器可執(zhí)行指令,實(shí)施在所述存儲(chǔ)器中,所述指令被配置為當(dāng)執(zhí)行時(shí)實(shí)現(xiàn)用于 處理進(jìn)入或來(lái)自所述介質(zhì)設(shè)備的輸入或輸出(I/O)的方法,所述方法包括a)從在所述處理器上運(yùn)行的應(yīng)用接收輸入I/O請(qǐng)求,以將數(shù)據(jù)傳送到所述介質(zhì)設(shè)備或 者傳送來(lái)自所述介質(zhì)設(shè)備的數(shù)據(jù);b)計(jì)算用于完成所述輸入I/O請(qǐng)求的預(yù)測(cè)時(shí)間Tp;c)將所述輸入I/O請(qǐng)求插入到在所述存儲(chǔ)器中實(shí)施的調(diào)度表,其中,所述調(diào)度表內(nèi)輸 入I/O請(qǐng)求的位置至少部分地取決于所述預(yù)測(cè)時(shí)間Tp ;以及d)根據(jù)所述調(diào)度表服務(wù)于所述輸入I/O請(qǐng)求,其中,所述一組處理器可執(zhí)行指令還包括一個(gè)或多個(gè)介質(zhì)過(guò)濾器層,所述一個(gè)或多個(gè) 介質(zhì)過(guò)濾器層包括解存檔器層、RAM緩存層、調(diào)度器緩存層、覆蓋層、分類(lèi)緩存層、數(shù)據(jù)變換 層、或仿真數(shù)據(jù)層。
24.在具有主處理器、帶有關(guān)聯(lián)本地存儲(chǔ)器的輔助處理器、主存儲(chǔ)器、以及介質(zhì)設(shè)備的 系統(tǒng)中,一種用于處理進(jìn)入或來(lái)自所述介質(zhì)設(shè)備的輸入或輸出(I/O)的方法,所述方法包 括a)從在所述主處理器上運(yùn)行的應(yīng)用接收輸入I/O請(qǐng)求,以將數(shù)據(jù)傳送到所述介質(zhì)設(shè)備 或者傳送來(lái)自所述介質(zhì)設(shè)備的數(shù)據(jù);將所述輸入I/O請(qǐng)求插入到在所述主存儲(chǔ)器中實(shí)施的調(diào)度表;以及c)根據(jù)所述調(diào)度表和一個(gè)或多個(gè)過(guò)濾器服務(wù)于所述輸入I/O請(qǐng)求,其中,所述一個(gè)或多個(gè)過(guò)濾器中的至少一個(gè)是由所述輔助處理器實(shí)現(xiàn)的。
25.在具有處理器單元、存儲(chǔ)器以及介質(zhì)設(shè)備的系統(tǒng)中,一種用于處理進(jìn)入或來(lái)自所 述介質(zhì)設(shè)備的輸入或輸出(I/O)的方法,所述方法包括a)從在所述處理器上運(yùn)行的應(yīng)用接收輸入I/O請(qǐng)求,以將數(shù)據(jù)傳送到所述介質(zhì)設(shè)備或 者傳送來(lái)自所述介質(zhì)設(shè)備的數(shù)據(jù);b)計(jì)算用于完成所述輸入I/O請(qǐng)求的預(yù)測(cè)時(shí)間Tp;c)將所述輸入I/O請(qǐng)求插入到在所述存儲(chǔ)器中實(shí)施的調(diào)度表,其中,所述調(diào)度表內(nèi)輸 入I/O請(qǐng)求的位置至少部分地取決于所述預(yù)測(cè)時(shí)間Tp ;以及d)根據(jù)所述調(diào)度表實(shí)現(xiàn)所述輸入I/O請(qǐng)求,其中,d)包括從壓縮后的嵌套式存檔提取特定數(shù)據(jù)。
26.在具有處理器單元、存儲(chǔ)器以及介質(zhì)設(shè)備的系統(tǒng)中,一種用于處理進(jìn)入或來(lái)自所 述介質(zhì)設(shè)備的輸入或輸出(I/O)的方法,所述方法包括a)從在所述處理器上運(yùn)行的應(yīng)用接收輸入I/O請(qǐng)求,以將數(shù)據(jù)傳送到所述介質(zhì)設(shè)備或 者傳送來(lái)自所述介質(zhì)設(shè)備的數(shù)據(jù);b)計(jì)算用于完成所述輸入I/O請(qǐng)求的預(yù)測(cè)時(shí)間Tp;c)將所述輸入I/O請(qǐng)求插入到在所述存儲(chǔ)器中實(shí)施的調(diào)度表,其中,所述調(diào)度表內(nèi)輸 入I/O請(qǐng)求的位置至少部分地取決于所述預(yù)測(cè)時(shí)間Tp ;以及d)根據(jù)所述調(diào)度表實(shí)現(xiàn)所述輸入I/O請(qǐng)求,其中,d)包括實(shí)現(xiàn)數(shù)據(jù)覆蓋,其中,在所述介質(zhì)設(shè)備與所述存儲(chǔ)器之間傳送的一個(gè)或多個(gè)主數(shù)據(jù)單元被來(lái)自次要數(shù) 據(jù)源的一個(gè)或多個(gè)次要數(shù)據(jù)單元所替代。
27.權(quán)利要求26所述的方法,其中,所述主數(shù)據(jù)單元的源和所述次要數(shù)據(jù)源位于相同 介質(zhì)上。
28.權(quán)利要求26所述的方法,其中,所述主數(shù)據(jù)單元的源和所述次要數(shù)據(jù)源位于不同 介質(zhì)上。
29.權(quán)利要求26所述的方法,其中,所述次要數(shù)據(jù)源是虛擬數(shù)據(jù)源。
30.權(quán)利要求29所述的方法,其中,所述一個(gè)或多個(gè)次要數(shù)據(jù)單元是由回調(diào)所指定的。
31.在具有處理器單元、存儲(chǔ)器、快速存儲(chǔ)設(shè)備、以及介質(zhì)設(shè)備的系統(tǒng)中,一種用于處 理進(jìn)入或來(lái)自所述介質(zhì)設(shè)備的輸入或輸出(I/O)的方法,所述方法包括a)從在所述處理器上運(yùn)行的應(yīng)用接收輸入I/O請(qǐng)求,以將數(shù)據(jù)傳送到所述介質(zhì)設(shè)備或 者傳送來(lái)自所述介質(zhì)設(shè)備的數(shù)據(jù);b)計(jì)算用于完成所述輸入I/O請(qǐng)求的預(yù)測(cè)時(shí)間Tp;c)將所述輸入I/O請(qǐng)求插入到在所述存儲(chǔ)器中實(shí)施的調(diào)度表,其中,所述調(diào)度表內(nèi)輸 入I/O請(qǐng)求的位置至少部分地取決于所述預(yù)測(cè)時(shí)間Tp ;以及d)根據(jù)所述調(diào)度表實(shí)現(xiàn)所述輸入I/O請(qǐng)求,其中,d)包括將一個(gè)或多個(gè)數(shù)據(jù)單元從所 述介質(zhì)設(shè)備預(yù)取到所述快速存儲(chǔ)設(shè)備,隨后傳送來(lái)自所述快速存儲(chǔ)設(shè)備的數(shù)據(jù)單元。
32.權(quán)利要求31所述的方法,其中,所述快速存儲(chǔ)設(shè)備是硬盤(pán)驅(qū)動(dòng)器。
33.權(quán)利要求32所述的方法,其中,所述介質(zhì)設(shè)備是高容量光盤(pán)驅(qū)動(dòng)器。
34.權(quán)利要求33所述的方法,其中,預(yù)取一個(gè)或多個(gè)數(shù)據(jù)單元的步驟包括在I/O另外空閑的時(shí)間段期間預(yù)取所述一個(gè)或多個(gè)數(shù)據(jù)單元。
35.權(quán)利要求33的方法,其中,預(yù)取一個(gè)或多個(gè)數(shù)據(jù)單元的步驟包括從所述介質(zhì)設(shè) 備預(yù)取一個(gè)或多個(gè)數(shù)據(jù)單元的第一組,檢查所述介質(zhì)設(shè)備的空閑性,并且如果I/O空閑則 從所述介質(zhì)設(shè)備預(yù)取一個(gè)或多個(gè)數(shù)據(jù)單元的第二組,或者如果I/O不空閑則延遲預(yù)取所述第二組。
36.在具有處理器單元、存儲(chǔ)器、快速存儲(chǔ)設(shè)備、以及介質(zhì)設(shè)備的系統(tǒng)中,一種用于處 理進(jìn)入或來(lái)自所述介質(zhì)設(shè)備的輸入或輸出(I/O)的方法,所述方法包括a)從在所述處理器上運(yùn)行的應(yīng)用接收輸入I/O請(qǐng)求,以將數(shù)據(jù)傳送到所述介質(zhì)設(shè)備或 者傳送來(lái)自所述介質(zhì)設(shè)備的數(shù)據(jù);b)計(jì)算用于完成所述輸入I/O請(qǐng)求的預(yù)測(cè)時(shí)間Tp;c)將所述輸入I/O請(qǐng)求插入到在所述存儲(chǔ)器中實(shí)施的調(diào)度表,其中,所述調(diào)度表內(nèi)輸 入I/O請(qǐng)求的位置至少部分地取決于所述預(yù)測(cè)時(shí)間Tp ;以及d)根據(jù)所述調(diào)度表實(shí)現(xiàn)所述輸入I/O請(qǐng)求,其中,b)包括調(diào)整所述一個(gè)或多個(gè)參數(shù), 以仿真比與所述系統(tǒng)關(guān)聯(lián)的所述介質(zhì)設(shè)備更慢的介質(zhì)設(shè)備的操作。
全文摘要
可以在系統(tǒng)中實(shí)現(xiàn)處理進(jìn)入或來(lái)自介質(zhì)設(shè)備的輸入或輸出(I/O),所述系統(tǒng)具有存儲(chǔ)器、處理器單元、以及介質(zhì)設(shè)備,所述處理器單元具有主處理器和輔助處理器,所述輔助處理器具有關(guān)聯(lián)本地存儲(chǔ)器。從在處理器單元上運(yùn)行的應(yīng)用接收到的輸入I/O請(qǐng)求可以根據(jù)調(diào)度表而受服務(wù)。被配置為實(shí)現(xiàn)I/O處理的一組處理器可執(zhí)行指令可以包括介質(zhì)過(guò)濾器層。I/O處理可以替換地包括從在主處理器上運(yùn)行的應(yīng)用接收輸入I/O請(qǐng)求;將所述請(qǐng)求插入到在所述主存儲(chǔ)器中實(shí)施的調(diào)度表;根據(jù)所述調(diào)度表以及一個(gè)或多個(gè)過(guò)濾器實(shí)現(xiàn)所述請(qǐng)求,所述一個(gè)或多個(gè)過(guò)濾器中的至少一個(gè)是由輔助處理器實(shí)現(xiàn)的。
文檔編號(hào)G09B3/00GK102047305SQ200980119736
公開(kāi)日2011年5月4日 申請(qǐng)日期2009年5月8日 優(yōu)先權(quán)日2008年5月30日
發(fā)明者R. 薩勒 A., A. 萊爾納 E., J. 米卡爾 R. 申請(qǐng)人:美國(guó)索尼電腦娛樂(lè)有限責(zé)任公司
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
和田县| 哈巴河县| 新兴县| 广灵县| 长武县| 永丰县| 民权县| 曲水县| 康马县| 布拖县| 福州市| 保德县| 长宁县| 乌拉特中旗| 汶上县| 白银市| 苏州市| 大理市| 古田县| 巴东县| 齐齐哈尔市| 湟中县| 榆林市| 华池县| 云和县| 车险| 中山市| 临澧县| 陕西省| 洱源县| 瓮安县| 福清市| 克什克腾旗| 刚察县| 龙口市| 桃江县| 延津县| 称多县| 封丘县| 莱西市| 望都县|