專(zhuān)利名稱(chēng):使用即時(shí)數(shù)據(jù)分塊的文件輸入/輸出調(diào)度的制作方法
技術(shù)領(lǐng)域:
本發(fā)明的實(shí)施例涉及計(jì)算機(jī)游戲及相關(guān)應(yīng)用程序,更特別地,涉及計(jì)算機(jī)游戲及相關(guān)應(yīng)用程序中的文件輸入/輸出(I/O)管理。
背景技術(shù):
諸如視頻游戲之類(lèi)的許多軟件應(yīng)用程序包括文件輸入/輸出(I/O)調(diào)度器以使得應(yīng)用程序內(nèi)的媒體訪(fǎng)問(wèn)更高效且可靠。文件I/O系統(tǒng)(FIOS)是具有包括調(diào)度器和可選I/ 0過(guò)濾器層的多個(gè)部分的用于訪(fǎng)問(wèn)文件的中間件(middleware)層。所述調(diào)度器通常被設(shè)計(jì)為將I/O請(qǐng)求最優(yōu)地排序,以便其在受到任意最后期限和優(yōu)先級(jí)約束的最短可能時(shí)間內(nèi)完成。所述過(guò)濾器層可以提供諸如解壓縮或高速緩存之類(lèi)的附加服務(wù)。許多不同的游戲組件要求對(duì)存儲(chǔ)媒體中的文件進(jìn)行I/O訪(fǎng)問(wèn)。音頻組件加載音頻文件;游戲播放引擎加載層級(jí)定義;圖形組件加載紋理圖和模型;電影組件加載視聽(tīng)文件;并且子系統(tǒng)加載大型WAD文件。所述媒體可以是游戲遞送媒體,諸如光盤(pán)(通用媒體盤(pán) (UMD)、壓縮盤(pán)(CD)、數(shù)字視頻盤(pán)(DVD)、藍(lán)光盤(pán)等)、諸如硬盤(pán)之類(lèi)的中間存儲(chǔ)媒體、或隨著平臺(tái)演進(jìn)的其它媒體類(lèi)型。諸如視頻游戲之類(lèi)的單個(gè)應(yīng)用程序通常具有多個(gè)組件,每個(gè)組件具有其自己的I/ 0要求。某些要求對(duì)媒體的流式訪(fǎng)問(wèn),其中,I/O系統(tǒng)將文件中的數(shù)據(jù)流式傳輸?shù)浇M件,因此組件可以接連地向游戲機(jī)呈現(xiàn)流式傳輸數(shù)據(jù)。例如,音頻組件通常流式傳輸用于聲音軌重放的音頻文件;電影組件流式傳輸視聽(tīng)內(nèi)容以重放用于播放器的電影。其它組件僅需要非流式訪(fǎng)問(wèn),其中,其按照在本文中稱(chēng)為組塊(chunk)的部分從文件獲取(retrieve)數(shù)據(jù)以供組件處理。雖然這些組件不要求穩(wěn)定的數(shù)據(jù)流以便處理,但組塊的遞送定時(shí)常常是關(guān)鍵的。如果應(yīng)用程序在其需要時(shí)未接收到數(shù)據(jù),則性能可能受損失。當(dāng)前,分塊(chunking)(即,將用于I/O請(qǐng)求的數(shù)據(jù)分成部分/組塊)在I/O請(qǐng)求的執(zhí)行期間發(fā)生。在執(zhí)行之前不確定塊之間的數(shù)據(jù)依賴(lài)性,并且這導(dǎo)致I/O請(qǐng)求的處理時(shí)的低效。例如,給定I/O請(qǐng)求可能要求在傳送之前需要被解密和解壓縮的數(shù)據(jù)。I/O系統(tǒng)可能要求給定塊的解密在解壓縮之前發(fā)生,但不同組塊大小可以與解密和解壓縮相關(guān)聯(lián)。例如,與解密相關(guān)聯(lián)的組塊大小可以具有諸如64千字節(jié)的固定值,而與解壓縮相關(guān)聯(lián)的組塊大小可以是可變的。因此,在沒(méi)有確定被解密的組塊和被解壓縮的組塊之間的數(shù)據(jù)依賴(lài)性的情況下,必須在能夠?qū)⑽募鈮嚎s之前將整個(gè)文件解密,而不是一旦已處理了必要的解密組塊就發(fā)起給定組塊的解壓縮。同樣地,給定I/O請(qǐng)求要求可以在執(zhí)行期間用當(dāng)前的分塊形式低效地處理從多個(gè)媒體源獲取的數(shù)據(jù)。在執(zhí)行之前沒(méi)有確定組塊之間的數(shù)據(jù)依賴(lài)性的情況下,當(dāng)同時(shí)處理來(lái)自?xún)蓚€(gè)媒體設(shè)備的數(shù)據(jù)在理論上可能時(shí),媒體設(shè)備可以在來(lái)自另一媒體設(shè)備的數(shù)據(jù)正被處理的同時(shí)是空閑的。這最終使視頻游戲或其它應(yīng)用程序的功能減慢。此外,視頻游戲常常執(zhí)行大量的I/O。游戲事件常常是用必須滿(mǎn)足的最后期限進(jìn)行時(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ù)的文件。游戲組件可以使用低水平I/O基元來(lái)從媒體獲取數(shù)據(jù),但這些基元(primitive)不處理在多個(gè)組件同時(shí)要求來(lái)自相同設(shè)備的數(shù)據(jù)時(shí)的設(shè)備競(jìng)爭(zhēng)。堵塞的(jammed up) I/O請(qǐng)求可能中斷流式傳輸數(shù)據(jù)流或阻止關(guān)鍵數(shù)據(jù)組塊在需要時(shí)到達(dá)組件。由于應(yīng)用程序的組件通常不知道彼此的I/O活動(dòng),所以其I/O請(qǐng)求常常導(dǎo)致具有相當(dāng)大的找尋(overseeking)量的非常低效的I/O模式(來(lái)回搜索數(shù)據(jù))。隨著游戲變大, 找尋和低效數(shù)據(jù)獲取增加。本發(fā)明的實(shí)施例在這種背景下出現(xiàn)。
通過(guò)結(jié)合附圖來(lái)考慮以下詳細(xì)說(shuō)明,可以很容易理解本發(fā)明的講授內(nèi)容,在附圖中
圖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是舉例說(shuō)明根據(jù)本發(fā)明的實(shí)施例的FIOS的操作流程的數(shù)據(jù)流程圖。圖5是舉例說(shuō)明根據(jù)本發(fā)明的實(shí)施例的在FIOS中使用的軟件調(diào)度器的示例的流程圖。
具體實(shí)施例方式雖然以下詳細(xì)說(shuō)明出于說(shuō)明的目的包含許多特定細(xì)節(jié),但本領(lǐng)域的普通技術(shù)人員應(yīng)認(rèn)識(shí)到以下細(xì)節(jié)的許多變更和修改在本發(fā)明的范圍內(nèi)。因此,在不失一般性并且不對(duì)所要求保護(hù)的發(fā)明的施加限制的情況下闡述下述本發(fā)明的實(shí)施例??梢栽谔峁┘袑拥奈募蘒/O系統(tǒng)(FIOS)周?chē)鷮?shí)現(xiàn)本發(fā)明的實(shí)施例,其中用于系統(tǒng)的所有I/O通過(guò)所述集中層。FIOS可以包括創(chuàng)建用于每個(gè)單獨(dú)I/O請(qǐng)求的最優(yōu)處理的樹(shù)形結(jié)構(gòu)的指令,和調(diào)度I/O請(qǐng)求并確定最高效地服務(wù)于(service) I/O請(qǐng)求的次序的指令。舉例來(lái)說(shuō),可以將計(jì)算機(jī)實(shí)現(xiàn)的系統(tǒng)100配置為實(shí)現(xiàn)如同1所示的根據(jù)本發(fā)明的實(shí)施例的文件I/O系統(tǒng)(FI0S)。舉例來(lái)說(shuō),但不失一般性地,可以將系統(tǒng)100實(shí)現(xiàn)為個(gè)人計(jì)算機(jī)、視頻游戲機(jī)、手持式游戲設(shè)備、蜂窩電話(huà)、個(gè)人數(shù)字助理、或適合于實(shí)施本發(fā)明的實(shí)施例的其它數(shù)字設(shè)備。系統(tǒng)100可以包括處理單元105和耦合到處理單元105的主存儲(chǔ)器 106。可以將CPU 105配置為運(yùn)行軟件應(yīng)用程序并可選地運(yùn)行操作系統(tǒng)。本發(fā)明的某些實(shí)施例可以利用某些類(lèi)型的處理器架構(gòu),其中,CPU 105包括主處理器105A和具有其自己的相關(guān)聯(lián)本地存儲(chǔ)器106B的輔助處理器105B。特別地,此類(lèi)處理器架構(gòu)的一個(gè)示例是單元處理器(cell processor)。在例如版權(quán)屬于國(guó)際商業(yè)機(jī)器公司、索尼計(jì)算機(jī)娛樂(lè)公司、東芝公司2005年8月8日的Cell Broadband Engine Architecture中詳細(xì)地描述了單元處理器架構(gòu)的示例,其拷貝可以在http://cell.scei.co.jp/處下載,其全部?jī)?nèi)容通過(guò)引用結(jié)合到本文中。 主存儲(chǔ)器106可以存儲(chǔ)供CPU 105使用的應(yīng)用程序和數(shù)據(jù)。主存儲(chǔ)器106可以采取例如RAM、DRAM、ROM等集成電路的形式??梢砸阅軌蛟谔幚砥?05上執(zhí)行的指令的形式將計(jì)算機(jī)程序101存儲(chǔ)在存儲(chǔ)器106中。可以將程序101的指令配置為特別地實(shí)現(xiàn)具有下述某些特征的文件輸入/輸出系統(tǒng)(FI0S)。存儲(chǔ)器106可以包含I/O隊(duì)列101Q,例如,采取用于FIOS程序101所使用的傳入(incoming),已調(diào)度、已發(fā)布、已完成、和自由1/0請(qǐng)求的?;蜿?duì)列的形式。下面還描述了此類(lèi)隊(duì)列的示例。舉例來(lái)說(shuō),F(xiàn)IOS程序101可以包括指令a)從應(yīng)用程序103接收涉及媒體設(shè)備118 的傳入1/0請(qǐng)求,b)通過(guò)確定要傳送的數(shù)據(jù)的組塊(即部分)的位置和數(shù)據(jù)依賴(lài)性來(lái)創(chuàng)建被配置為形成用于1/0請(qǐng)求的最優(yōu)處理次序的樹(shù)形結(jié)構(gòu),C)將傳入1/0請(qǐng)求插入在存儲(chǔ)器 106中包含的調(diào)度表(schedule)中,其中,傳入1/0請(qǐng)求在調(diào)度表內(nèi)的位置至少部分地取決于樹(shù)形結(jié)構(gòu)的處理次序和d)根據(jù)所述調(diào)度表和樹(shù)形結(jié)構(gòu)來(lái)實(shí)施1/0請(qǐng)求。客戶(hù)端系統(tǒng)100還包括眾所周知的支持功能110,諸如輸入/輸出(1/0)元件111、 電源(P/S) 112、時(shí)鐘(CLK) 113、以及高速緩存(cache) 114??蛻?hù)端設(shè)備100還可以包括快速存儲(chǔ)設(shè)備115,諸如提供用于應(yīng)用程序和數(shù)據(jù)的非易失性存儲(chǔ)的硬盤(pán)驅(qū)動(dòng)器。特別地,可以將快速存儲(chǔ)設(shè)備115用于對(duì)從較慢媒體設(shè)備118獲取的文件116的臨時(shí)或長(zhǎng)期存儲(chǔ)??焖俅鎯?chǔ)設(shè)備115上的文件116另外可以來(lái)自除較慢媒體設(shè)備118之外的源。例如,文件116 可以包括但不限于操作系統(tǒng)文件、由應(yīng)用程序創(chuàng)建的臨時(shí)文件、諸如照片/音頻/視頻之類(lèi)的用戶(hù)數(shù)據(jù)、下載內(nèi)容等等。舉例來(lái)說(shuō),存儲(chǔ)設(shè)備115可以是固定磁盤(pán)驅(qū)動(dòng)器、可移動(dòng)磁盤(pán)驅(qū)動(dòng)器、閃速存儲(chǔ)器設(shè)備、或磁帶驅(qū)動(dòng)器。較慢媒體設(shè)備118可以是大容量光盤(pán)驅(qū)動(dòng)器,例如CD-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è)備。可以將從媒體設(shè)備118預(yù)取的文件116臨時(shí)存儲(chǔ)在硬件高速緩存中的儲(chǔ)存器115中以便快速加載到存儲(chǔ)器106中??梢允褂靡粋€(gè)或多個(gè)用戶(hù)輸入設(shè)備120將來(lái)自一個(gè)或多個(gè)用戶(hù)的用戶(hù)輸入傳達(dá)到系統(tǒng)100。舉例來(lái)說(shuō),可以經(jīng)由1/0元件111將用戶(hù)輸入設(shè)備120中的一個(gè)或多個(gè)耦合到客戶(hù)端設(shè)備100。適當(dāng)輸入設(shè)備120的示例包括鍵盤(pán)、鼠標(biāo)、操縱桿、觸控板、觸摸屏、光筆、 靜物照相機(jī)或視頻攝像機(jī)、和/或麥克風(fēng)。客戶(hù)端設(shè)備100可以包括網(wǎng)絡(luò)接口 125以促進(jìn)經(jīng)由電子通信網(wǎng)絡(luò)127的通信。網(wǎng)絡(luò)接口 125可以被配置為通過(guò)局域網(wǎng)和廣域網(wǎng)(例如因特網(wǎng))來(lái)實(shí)現(xiàn)有線(xiàn)或無(wú)線(xiàn)通信。系統(tǒng)100可以通過(guò)網(wǎng)絡(luò)127經(jīng)由一個(gè)或多個(gè)消息分組126 來(lái)發(fā)送和接收數(shù)據(jù)和/或文件請(qǐng)求。系統(tǒng)還可以包括圖形子系統(tǒng)130,其可以包括圖形處理單元(GPU) 135和圖形存儲(chǔ)器140。圖形存儲(chǔ)器140可以包括用于存儲(chǔ)用于輸出圖像的每個(gè)像素的像素?cái)?shù)據(jù)的顯示存儲(chǔ)器(例如,幀緩沖器)。圖形存儲(chǔ)器140可以被集成在與GPU 135相同的設(shè)備中、作為單獨(dú)的設(shè)備與GPU 135相連、和/或在存儲(chǔ)器106內(nèi)實(shí)現(xiàn)??梢灾苯訌腃PU 105向圖形存儲(chǔ)器140提供像素?cái)?shù)據(jù)??商鎿Q地,CPU 105可以為GPU 135提供定義期望輸出圖像的數(shù)據(jù)和/ 或指令,由此,GPU 135可以生成一個(gè)或多個(gè)輸出圖像的像素?cái)?shù)據(jù)。定義期望輸出圖像的數(shù)據(jù)和/或指令可以被存儲(chǔ)在存儲(chǔ)器106和/或圖形存儲(chǔ)器140中。在實(shí)施例中,GPU 135可以被配置具有由用于由定義用于場(chǎng)景的幾何結(jié)構(gòu)、照明、陰影、紋理、運(yùn)動(dòng)、和/或攝像機(jī)參數(shù)的指令和數(shù)據(jù)生成用于輸出圖像的像素?cái)?shù)據(jù)的3D再現(xiàn)能力。GPU 135還可以包括能夠執(zhí)行著色器程序的一個(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)而顯示視覺(jué)信息的任何設(shè)備,包括CRT、IXD、等離子體、和OLED顯示器。計(jì)算機(jī)系統(tǒng)100可以為顯示設(shè)備150提供模擬或數(shù)字信號(hào)。舉例來(lái)說(shuō),顯示器150可以包括顯示文本、數(shù)字、圖形符號(hào)或圖像的陰極射線(xiàn)管(CRT)或平板屏幕。另外,顯示器150可以包括產(chǎn)生可聽(tīng)或其他可檢測(cè)聲音的一個(gè)或多個(gè)音頻揚(yáng)聲器。為了促進(jìn)此類(lèi)聲音的生成,客戶(hù)端設(shè)備100還可以包括適合于根據(jù)由CPU 105、存儲(chǔ)器106、和/或儲(chǔ)存器115提供的指令和/或數(shù)據(jù)來(lái)生成模擬或數(shù)字音頻輸出的音頻處理器155。包括CPU 105、存儲(chǔ)器106、支持功能110、數(shù)據(jù)存儲(chǔ)設(shè)備115、媒體設(shè)備118、用戶(hù)輸入設(shè)備120、網(wǎng)絡(luò)接口 125、和音頻處理器155的系統(tǒng)100的組件可以經(jīng)由一個(gè)或多個(gè)數(shù)據(jù)總線(xiàn)160在操作上相互連接。這些組件可以以硬件、軟件、固件、或這些中的兩個(gè)或更多的某些組合來(lái)實(shí)現(xiàn)。本發(fā)明的某些實(shí)施例可以利用單元處理器架構(gòu)或類(lèi)似處理器架構(gòu)。圖2舉例說(shuō)明根據(jù)本發(fā)明的實(shí)施例的被配置為實(shí)現(xiàn)FIOS的單元處理器200。單元處理器200包括主存儲(chǔ)器202、單個(gè)Power處理器元件(PPE) 204、以及八個(gè)協(xié)同處理器元件(SPE) 206。舉例來(lái)說(shuō),PPE 204可以包括具有相關(guān)聯(lián)高速緩存的64位Power PC處理器單元(PPU)。例如服從 CBEA系統(tǒng)的某些實(shí)現(xiàn)可以在PPE 204中包括向量多媒體擴(kuò)展單元。PPE 204可以是能夠訪(fǎng)問(wèn)系統(tǒng)管理資源(諸如存儲(chǔ)器保護(hù)表)的通用處理單元。硬件資源可以被明確地映射到被 PPE 204看到的實(shí)地址空間。因此,PPE 204可以直接通過(guò)使用適當(dāng)?shù)挠行У刂分祦?lái)對(duì)這些資 源中的任何一個(gè)進(jìn)行尋址。PPE 204的主要功能是用于不同SPE 206的任務(wù)的管理和分配。PPU可以執(zhí)行FIOS程序101的編碼指令。SPE 206是與PPE 240相比不那么復(fù)雜的計(jì)算單元,因?yàn)槠洳恍枰獔?zhí)行任何系統(tǒng)管理功能。每個(gè)SPE 206包括有時(shí)稱(chēng)為協(xié)同處理器單元(SPU)的處理器單元和相關(guān)聯(lián)的本地存儲(chǔ)裝置(LS)。SPE 206通??梢跃哂袉沃噶疃鄶?shù)據(jù)(SIMD)能力且通常處理數(shù)據(jù)并發(fā)起任何所需數(shù)據(jù)傳送(根據(jù)由PPE 204設(shè)置的訪(fǎng)問(wèn)性質(zhì))以便執(zhí)行其分配的任務(wù)。SPE 206可以在其本地存儲(chǔ)裝置中存儲(chǔ)實(shí)現(xiàn)FIOS程序101的部分的指令207。SPE 206的目的是實(shí)現(xiàn)要求較高計(jì)算單元密度并能夠有效地使用所提供的指令集的應(yīng)用。雖然在本示例中示出8 個(gè)SPE,但單元處理器200可以被配置具有任何數(shù)目的SPE。根據(jù)圖2,存儲(chǔ)器202、PPE 204、 和SPE 206可以相互通信并通過(guò)環(huán)形元件互連總線(xiàn)210與I/O設(shè)備208通信??梢杂蒔PE 204和SPE 206經(jīng)由存儲(chǔ)器接口控制器(MIC)來(lái)訪(fǎng)問(wèn)存儲(chǔ)器202。存儲(chǔ)器202可以包含I/O隊(duì)列203,例如,如下所述的傳入、調(diào)度、發(fā)布、完成、自由、 和預(yù)取隊(duì)列。存儲(chǔ)器202還可以包含具有與本文所述的FIOS程序101共有的特征的FIOS 程序101的部分。PPE 204可以包括內(nèi)部高速緩存(Li)和外部高速緩存(L2)。PPE可以將FIOS程序101的部分存儲(chǔ)在其內(nèi)部高速緩存(Li)中。FIOS程序101和SPE實(shí)現(xiàn)的文件傳送指令207或其部分也可以被存儲(chǔ)在存儲(chǔ)器202以便在需要時(shí)供SPE 206和PPE 204訪(fǎng)問(wèn)。舉例來(lái)說(shuō) ,如圖3所示,F(xiàn)IOS程序101可以包括媒體棧300以促進(jìn)與諸如存儲(chǔ)設(shè)備115或媒體設(shè)備118之類(lèi)的硬件的對(duì)接。媒體棧300可以包括樹(shù)形結(jié)構(gòu)層301、調(diào)度器 303、一個(gè)或多個(gè)媒體過(guò)濾器層305、設(shè)備媒體層307、處理器文件系統(tǒng)(FS)讀取層309、以及硬件層311。樹(shù)形結(jié)構(gòu)層301創(chuàng)建映射表(map)以促進(jìn)與要傳送的單獨(dú)I/O請(qǐng)求相關(guān)聯(lián)的數(shù)據(jù)的最優(yōu)處理。最初,創(chuàng)建限定了與給定I/O請(qǐng)求相關(guān)聯(lián)的一個(gè)或多個(gè)處理層306 (例如,解密、解壓縮、去存檔(de-archiving)等)的樹(shù)形結(jié)構(gòu)313。在樹(shù)形結(jié)構(gòu)313的每個(gè)層306處處理對(duì)于每個(gè)I/O請(qǐng)求所傳送或接收到的數(shù)據(jù),并且樹(shù)形結(jié)構(gòu)313被配置為在已經(jīng)處理前一層中的足夠數(shù)據(jù)之前不開(kāi)始后續(xù)處理層。然后,樹(shù)形結(jié)構(gòu)313在一個(gè)或多個(gè)處理層306 中的每一個(gè)處處將要傳送或接收的數(shù)據(jù)分成一個(gè)或多個(gè)組塊302。與特定處理層306相關(guān)聯(lián)的塊302具有對(duì)應(yīng)于該特定處理層306的一個(gè)或多個(gè)大小。用于不同層的組塊大小可以是不同的。樹(shù)形結(jié)構(gòu)313通過(guò)確定每個(gè)塊302的位置和不同處理層306的組塊302之間的數(shù)據(jù)依賴(lài)性304來(lái)形成用于不同層的塊的最優(yōu)處理次序。舉例來(lái)說(shuō),但非限制性地,I/O請(qǐng)求可以包括接收被加密且壓縮的數(shù)據(jù)。最初,樹(shù)形結(jié)構(gòu)創(chuàng)建兩個(gè)處理層(包括解密層和解壓縮層)以便滿(mǎn)足I/O請(qǐng)求。在本示例中,要傳送的數(shù)據(jù)需要在其可以被應(yīng)用程序接收到之前被解壓縮且要傳送的數(shù)據(jù)需要在其可以被解壓縮之前被解密。樹(shù)形結(jié)構(gòu)層301根據(jù)處理層將要傳送的數(shù)據(jù)分成組塊(即數(shù)據(jù)的部分)。 特別地,樹(shù)形結(jié)構(gòu)301生成將數(shù)據(jù)分成組塊的指令,所述組塊具有的大小被選擇為使得可以同時(shí)處理數(shù)據(jù)的各部分而不必等待整個(gè)數(shù)據(jù)片在下一層級(jí)的處理可以開(kāi)始之前完成一個(gè)層級(jí)的處理。用于給定組塊的每個(gè)指令可以用路徑名、偏移、和長(zhǎng)度來(lái)定義組塊。例如,可以在固定的64K組塊大小下實(shí)現(xiàn)解密,因此樹(shù)形結(jié)構(gòu)層301可以將數(shù)據(jù)分成64K塊以進(jìn)行解密。然而,可以在可變大小的組塊中處理解壓縮,因此,樹(shù)形結(jié)構(gòu)層可以將數(shù)據(jù)分成可變大小的組塊以進(jìn)行解壓縮。解壓縮(去存檔器(de-archiver)變換)過(guò)程可以接受可變大小的已壓縮和解密的組塊并將其解壓縮成固定大小的未壓縮塊。樹(shù)形結(jié)構(gòu)層301或媒體過(guò)濾器層305可以被配置為確定已壓縮和解密的數(shù)據(jù)的哪些可變大小組塊解壓縮成固定大小的組塊而不必首先將其解壓縮。為了促進(jìn)加密組塊的可變長(zhǎng)度的確定,在分塊時(shí),媒體過(guò)濾器層305 (最終確定哪些組塊被創(chuàng)建)可以在RAM中存儲(chǔ)其需要用來(lái)計(jì)算給定組塊的大小和位置的任何信息。 例如,對(duì)于FIOS psarc文件而言,去存檔器層可以將psarc文件的目錄表(TOC)保持在RAM 中。TOC可以包含列出文件中的每個(gè)壓縮塊的大小的表格,并且去存檔器媒體層可以由此得到塊的位置。因此,有效地,去存檔器能夠?qū)?duì)未壓縮數(shù)據(jù)塊的傳入請(qǐng)求轉(zhuǎn)換成對(duì)相應(yīng)壓縮數(shù)據(jù)塊的請(qǐng)求。去存檔器為進(jìn)行此變換需要的唯一信息是T0C,其已在RAM中。去存檔器不需要實(shí)際讀取任何數(shù)據(jù)或?qū)⑵浣鈮嚎s以創(chuàng)建樹(shù)節(jié)點(diǎn)。由于解密層的組塊大小和解壓縮層的組塊大小不對(duì)齊,所以給定解密組塊可能不是總是被立刻解壓縮。作為替代,在可以開(kāi)始將解壓縮層組塊解壓縮之前,多于一個(gè)解密層組塊可能需要被解密。然后,通過(guò)確定與每個(gè)層相關(guān)聯(lián)的組塊的位置并確定不同層的組塊之間的數(shù)據(jù)依賴(lài)性來(lái)建立最優(yōu)處理次序。這樣,不是在后續(xù)處理層可以開(kāi)始之前等待整個(gè)處理層完成,而是后續(xù)處理層可以在已處理了前一層中的必要數(shù)據(jù)組塊時(shí)立即開(kāi)始(例如, 一旦必要的解密層組塊已完成被解密,給定組塊的解壓縮就可以開(kāi)始)。 有時(shí)候,I/O請(qǐng)求可能要求從多于一個(gè)的媒體/存儲(chǔ)設(shè)備獲取數(shù)據(jù)。因此,通過(guò)在執(zhí)行之前確定數(shù)據(jù)依賴(lài)性,可以同時(shí)進(jìn)行與來(lái)自多個(gè)媒體/存儲(chǔ)設(shè)備的數(shù)據(jù)一起處理I/O 請(qǐng)求,而不是使一個(gè)媒體/存儲(chǔ)設(shè)備空閑、同時(shí)另一媒體/存儲(chǔ)設(shè)備處理其I/O請(qǐng)求的一部分。舉例來(lái)說(shuō),但不是以限制的方式,給定I/O請(qǐng)求可以要求從硬盤(pán)(HD)和藍(lán)光媒體設(shè)備兩者進(jìn)行數(shù)據(jù)獲取。通過(guò)略述用于給定I/O請(qǐng)求的數(shù)據(jù)依賴(lài)性,可以確定從HD確切地需要什么和從藍(lán)光確切地需要什么。這樣,當(dāng)樹(shù)形結(jié)構(gòu)確定其可容許時(shí),可以同時(shí)處理來(lái)自?xún)蓚€(gè)設(shè)備的數(shù)據(jù),而不是在正在處理來(lái)自另一設(shè)備的數(shù)據(jù)的同時(shí)使一個(gè)設(shè)備空閑。一旦已經(jīng)創(chuàng)建樹(shù)形結(jié)構(gòu)313,則調(diào)度器303就可以將構(gòu)成傳入I/O請(qǐng)求的樹(shù)形結(jié)構(gòu)的指令插入包含于存儲(chǔ)器中的調(diào)度表中。該調(diào)度表內(nèi)的給定指令的位置至少部分地取決于與樹(shù)形結(jié)構(gòu)313相關(guān)聯(lián)的處理次序。如果調(diào)度表中的兩個(gè)或更多不同的I/O請(qǐng)求包含類(lèi)似的樹(shù)形結(jié)構(gòu)313,則可以使這些I/O請(qǐng)求交錯(cuò),使得可以同時(shí)處理多于一個(gè)的請(qǐng)求。這可以改善滿(mǎn)足I/O請(qǐng)求的效率, 因?yàn)榭梢酝瑫r(shí)地或以重疊的時(shí)間完成相關(guān)I/O請(qǐng)求,而不是等待每個(gè)I/O請(qǐng)求在下一個(gè)開(kāi)始處理之前完成處理。例如,在某些實(shí)施例中,可以與樹(shù)形結(jié)構(gòu)313的指令執(zhí)行并行地執(zhí)行來(lái)自已與樹(shù)形結(jié)構(gòu)313的指令交錯(cuò)的其它I/O請(qǐng)求的一個(gè)或多個(gè)指令。舉例來(lái)說(shuō),但不以限制的方式,如果調(diào)度器303確定如果請(qǐng)求被交錯(cuò)則將更快地服務(wù)于該I/O請(qǐng)求,則I/O請(qǐng)求可以被交錯(cuò)。這可以用以下兩個(gè)示例來(lái)舉例說(shuō)明。根據(jù)第一示例,假設(shè)同時(shí)執(zhí)行兩次補(bǔ)丁(patch)讀取。文件A需要五個(gè)組塊(Al) (A2) (Pl) (A3) (P2)。文件B需要四個(gè)組塊(Bi) (P3) (B2) (B3)。在這種情況下,“P” 代表補(bǔ)丁文件,并且“A”和“B”是原始數(shù)據(jù)文件。磁盤(pán)上布局可以看起來(lái)像這樣
· · (Al) (A2) (A3) · · · (Bi) (B2) (B3) ............. (Pl) (P2) · · ·
請(qǐng)注意,由于磁盤(pán)上的文件接近,所以調(diào)度器303可以確定以最小的查找完成兩次讀取的最快方式是通過(guò)首先讀取Al A3、然后是Bl B3、然后是Pl P3來(lái)使請(qǐng)求交錯(cuò)。根據(jù)第二示例,假設(shè)調(diào)度器303已經(jīng)調(diào)度第一讀取請(qǐng)求并調(diào)度第二高優(yōu)先級(jí)低等待時(shí)間讀取請(qǐng)求(例如,音頻請(qǐng)求)。如下表I所描繪的,F(xiàn)IOS 101可以從第一讀取開(kāi)始對(duì)組塊進(jìn)行操作。在表I中,組塊隨著時(shí)間的推移向左移動(dòng);其始于隊(duì)列,移動(dòng)至執(zhí)行,并最后完全完成。表 I
dο e 丨 eecUt Jig 丨 s η c|eue
\I ;Λ 1 .■ -I AΓ) ·< A J ;· A ·31 i h 5 ! i A丨 (A1 . ; AB >
在已開(kāi)始A3的執(zhí)行之后,隊(duì)列看起來(lái)如下表II所描繪的 表II
ο··Π t!?; e τ: u “ χ η q" 二 ι; □ ii e eA1 ; A, ; Ij \i 5 A i ; [At:) ; Λ·; · ‘ AH :ι
現(xiàn)在假設(shè)音頻線(xiàn)程進(jìn)入并突然想要加載負(fù)載(Bi)和(B2)。如果音頻讀取器請(qǐng)求即時(shí)服務(wù),則調(diào)度器303可以將(Bi)和(B2)的讀取放在隊(duì)列的前面?,F(xiàn)在,隊(duì)列可以看起來(lái)如下表III所示最后,當(dāng)隊(duì)列的此部分完成執(zhí)行時(shí),可以看到如表IV所示,I/O已被交錯(cuò)以用于兩個(gè)讀取請(qǐng)求。表 IV
-ζ·} ;tri ( λ e 二 ; U. ι ng ! ι q v.t u r
.·. ιτ .., 、; -m ...r- ! t- γ- -γ .'■%.·'·it :· 、- w ” .-" -··-. ·ι %
! .-i 丄- ;Λ... ; i 尸.3 - i. Γ-丄、 h .:. ,- /r'.-t - '. . ; i Α , ‘ χ-. - '- ; ,'■%.<, i II
設(shè)備媒體層307 (有時(shí)稱(chēng)為媒體訪(fǎng)問(wèn)層)可以被配置為對(duì)從上述媒體過(guò)濾器層305接收到的媒體請(qǐng)求進(jìn)行響應(yīng),獲取所請(qǐng)求的數(shù)據(jù),然后向棧300返回其答復(fù)。媒體過(guò)濾器層305可以包括補(bǔ)丁器(patcher)322、去存檔器層308、RAM高速緩存層310、調(diào)度器高速緩存層312、覆蓋層314、目錄高速緩存層316、加密/解密層318、以及壓縮/解壓縮層320。這些媒體過(guò)濾器層305對(duì)應(yīng)于與樹(shù)形結(jié)構(gòu)313相關(guān)聯(lián)的處理層306。與 I/O請(qǐng)求相關(guān)聯(lián)的給定數(shù)據(jù)片可以根據(jù)與數(shù)據(jù)相關(guān)聯(lián)的媒體過(guò)濾器層的數(shù)目而具有多個(gè)處理層。去存檔器308可以用來(lái)促進(jìn)從壓縮檔案提取特定資產(chǎn)文件。RAM高速緩存層310可以用來(lái)實(shí)現(xiàn)數(shù)據(jù)例如在主存儲(chǔ)器中的高速緩存。調(diào)度器高速緩存312可以是簡(jiǎn)單的磁盤(pán)至磁盤(pán)高速緩存以用于臨時(shí)存儲(chǔ)來(lái)自諸如光盤(pán)之類(lèi)的較慢源的數(shù)據(jù)。本文所使用的術(shù)語(yǔ)“調(diào)度器高度緩存”指的是更快訪(fǎng)問(wèn)媒體設(shè)備的存儲(chǔ)媒體中的臨時(shí)數(shù)據(jù)存儲(chǔ)器。不需要預(yù)取調(diào)度器高速緩存312中的所有數(shù)據(jù);某些可以按需取得并將其拷貝到高速緩存。舉例來(lái)說(shuō),而非限制性地,調(diào)度器高速緩存層312可以利用快速存儲(chǔ)媒體來(lái)提供此類(lèi)臨時(shí)存儲(chǔ)。在其中快速存儲(chǔ)媒體是硬盤(pán)驅(qū)動(dòng)器(HDD)的特殊情況下,調(diào)度器高速緩存312有時(shí)稱(chēng)為HDD高速緩存??梢詫⒄{(diào)度器高速緩存312保持為單個(gè)文件或多個(gè)文件。另外,調(diào)度器高速緩存 312的內(nèi)容不必是完整文件??梢酝ㄟ^(guò)刪除某些單獨(dú)文件以在不犧牲過(guò)多數(shù)據(jù)的情況下在需要時(shí)智能地釋放磁盤(pán)空間來(lái)部分地刷新多文件高速緩存。相反,單文件高速緩存通常只能被截取(truncate)或完全刪除。單文件高速緩存可以提供比多文件高速緩存更高的性能,因?yàn)槎辔募咚倬彺嫱ǔR蟾郊拥牟居浌ぷ?在主機(jī)文件系統(tǒng)本身內(nèi)部),這可能要求額外的I/O。如下文所討論的,覆蓋層314可以用來(lái)允許文件系統(tǒng)層級(jí)處的文件和目錄的任意覆蓋。目錄高速緩存層316可以用來(lái)高速緩存用于處理器單元或單元處理器的0/S可能不適當(dāng)?shù)馗咚倬彺?例如文件存在、大小、和位置)的數(shù)據(jù)。加密/解密層318可以用來(lái)促進(jìn)用于傳送的數(shù)據(jù)的加密或解密。壓縮/解壓縮層320可以用來(lái)促進(jìn)用于傳送的數(shù)據(jù)的壓縮或解壓縮。參照下文描述的圖4,可以理解FIOS程序101的樹(shù)形結(jié)構(gòu)層301和調(diào)度器303的操作。從客戶(hù)端的角度出發(fā),可以以相對(duì)簡(jiǎn)單的方式服務(wù)于I/O請(qǐng)求403。例如,諸如視頻游戲之類(lèi)的應(yīng)用程序401內(nèi)的線(xiàn)程402可以通過(guò)調(diào)用函數(shù)(例如readFileO )經(jīng)由FIOS程序101來(lái)請(qǐng)求I/O。該函數(shù)可以指定用于I/O請(qǐng)求403的優(yōu)先級(jí)和應(yīng)完成請(qǐng)求403的最后期限。然后,F(xiàn)IOS媒體棧300使用樹(shù)形結(jié)構(gòu)層301來(lái)創(chuàng)建用于I/O請(qǐng)求403的樹(shù)形結(jié)構(gòu) 313,其形成定義用于該I/O請(qǐng)求403的最優(yōu)處理次序的映射表。樹(shù)形結(jié)構(gòu)最初定義與給定I/O請(qǐng)求403相關(guān)聯(lián)的處理層級(jí)306。例如,給定I/O請(qǐng)求403可以要求從處理器向媒體設(shè)備傳送數(shù)據(jù),其中,需要對(duì)數(shù)據(jù)進(jìn)行壓縮、加密、和存檔。 在這種情況下,樹(shù)形結(jié)構(gòu)313將定義用于與I/O請(qǐng)求403相關(guān)聯(lián)的數(shù)據(jù)的壓縮、加密、和存檔的處理的三個(gè)層級(jí)306。給定數(shù)據(jù)片必須在其被加密之前被壓縮,在其被存檔之前被加密,并在其最后被傳送到媒體設(shè)備之前被存檔。然后,樹(shù)形結(jié)構(gòu)313根據(jù)處理層級(jí)306將要傳送的數(shù)據(jù)分成組塊302 (例如,在壓縮層級(jí)處將數(shù)據(jù)分成64K組塊,在加密層級(jí)處將數(shù)據(jù)分成可變大小組塊,并在存檔層級(jí)處將數(shù)據(jù)分成64K組塊)。數(shù)據(jù)被分成組塊302,因此可以同時(shí)處理任何給定層級(jí)或不同層級(jí)處的數(shù)據(jù)部分,而不是必須在可以開(kāi)始下一處理層級(jí)306之前等待請(qǐng)求中的所述數(shù)據(jù)完成一個(gè)處理層級(jí)306。由于一個(gè)處理層級(jí)306的組塊302不一定與另一處理層級(jí)306的組塊 302對(duì)齊,所以必須映射與不同處理層級(jí)306相對(duì)應(yīng)的組塊302的數(shù)據(jù)依賴(lài)性304以便使 I/O請(qǐng)求403的處理成流線(xiàn)型。例如,給定壓縮層級(jí)組塊可能不是總是在壓縮已完成時(shí)立即開(kāi)始加密。由于在可變大小下處理加密層級(jí),所以可能在加密層級(jí)組塊可以開(kāi)始加密之前必須對(duì)兩個(gè)或更多壓縮層級(jí)組塊進(jìn)行壓縮。因此,樹(shù)形結(jié)構(gòu)313有必要確定這些數(shù)據(jù)依賴(lài)性304以?xún)?yōu)化給定I/O請(qǐng)求403的處理。此外,當(dāng)I/O請(qǐng)求要求從多個(gè)媒體/存儲(chǔ)設(shè)備獲取數(shù)據(jù)時(shí),在樹(shù)形結(jié)構(gòu)313中概述的數(shù)據(jù)依賴(lài)性304可以允許來(lái)自不同媒體/存儲(chǔ)設(shè)備的數(shù)據(jù)的同時(shí)處理,而不是在另一媒體/存儲(chǔ)設(shè)備空閑的同時(shí)使來(lái)自一個(gè)媒體/存儲(chǔ)設(shè)備的數(shù)據(jù)被處理。與樹(shù)形結(jié)構(gòu)313相關(guān)聯(lián)的最終產(chǎn)物是定義用于給定I/O請(qǐng)求403的最優(yōu)處理次序的映射表。與I/O請(qǐng)求的調(diào)度表的優(yōu)化無(wú)關(guān),每個(gè)I/O請(qǐng)求403被樹(shù)形結(jié)構(gòu)313單獨(dú)地優(yōu)化,以便其可以在可能的最短時(shí)間量?jī)?nèi)完成。此I/O請(qǐng)求403及其相關(guān)聯(lián)樹(shù)形結(jié)構(gòu)313然后被饋送給調(diào)度器303以進(jìn)行高效調(diào)度。 重要的是應(yīng)注意與I/O請(qǐng)求相關(guān)聯(lián)的數(shù)據(jù)可以具有比上述的兩個(gè)更多的處理層。 樹(shù)形結(jié)構(gòu)實(shí)際上不服務(wù)于I/O請(qǐng)求,而是僅創(chuàng)建如何可以最優(yōu)地服務(wù)于單獨(dú)I/O請(qǐng)求的映
射表。 舉例來(lái)說(shuō),但非限制性地,可以將I/O請(qǐng)求分成樹(shù)形結(jié)構(gòu),其中,由相應(yīng)的指令來(lái)處理在處理該請(qǐng)求時(shí)的每個(gè)層處的每個(gè)數(shù)據(jù)組塊。樹(shù)形結(jié)構(gòu)的一個(gè)層內(nèi)的給定指令可以具有相關(guān)聯(lián)的數(shù)據(jù)依賴(lài)性,其指示在該給定指令可以開(kāi)始執(zhí)行之前必須完成的來(lái)自前一層的一個(gè)或多個(gè)指令。表V提供用于I/O請(qǐng)求的樹(shù)形結(jié)構(gòu)的示例。在表I中,每個(gè)指令使用由路徑名、偏移和以千字節(jié)(KiB)為單位的長(zhǎng)度標(biāo)識(shí)的數(shù)據(jù)。在本示例中,樹(shù)形結(jié)構(gòu)內(nèi)的層的處理次序是從下至上。然而,可以并行地執(zhí)行樹(shù)形結(jié)構(gòu)內(nèi)的指令,從而滿(mǎn)足數(shù)據(jù)依賴(lài)性。在表V中,用于給定指令的依賴(lài)性指示在給定指令可以開(kāi)始執(zhí)行之前必須從下面的層完成哪個(gè)(哪些) 其它指令。在本示例中,以/dev_開(kāi)頭的路徑名指的是媒體設(shè)備。具體而言,/dev_hdd0和 /dev_hddl指的是硬盤(pán)驅(qū)動(dòng)器且/dev_bdvd0指的是高清晰度數(shù)字視頻驅(qū)動(dòng)器(DVD)。不以 /(1^_開(kāi)頭的路徑名指的是由其它指令所獲取的數(shù)據(jù)組成的虛擬文件。表V
權(quán)利要求
1.在具有處理器單元、存儲(chǔ)器、和一個(gè)或多個(gè)媒體/存儲(chǔ)設(shè)備的系統(tǒng)中,一種用于處理到或來(lái)自所述一個(gè)或多個(gè)媒體/存儲(chǔ)設(shè)備的輸入或輸出(I/O)的方法,包括a)從在所述處理器上運(yùn)行的應(yīng)用程序接收傳入I/O請(qǐng)求以向所述一個(gè)或多個(gè)媒體/ 存儲(chǔ)設(shè)備傳送數(shù)據(jù)或從所述一個(gè)或多個(gè)媒體/存儲(chǔ)設(shè)備接收數(shù)據(jù);b)創(chuàng)建包括能被所述處理器執(zhí)行且包含于存儲(chǔ)器中的指令的樹(shù)形結(jié)構(gòu),該樹(shù)形結(jié)構(gòu)定義與所述I/O請(qǐng)求相關(guān)聯(lián)的一個(gè)或多個(gè)處理層,其中,所述指令在所述一個(gè)或多個(gè)處理層中的每一個(gè)處將所述I/O請(qǐng)求中的數(shù)據(jù)劃分成一個(gè)或多個(gè)組塊,其中,所述一個(gè)或多個(gè)層處的每個(gè)指令具有對(duì)前一層中的一個(gè)或多個(gè)相應(yīng)指令的相關(guān)聯(lián)數(shù)據(jù)依賴(lài)性,其中,對(duì)給定指令的數(shù)據(jù)依賴(lài)性允許所述給定指令僅在所述前一層中的相應(yīng)一個(gè)或多個(gè)依賴(lài)的指令的執(zhí)行之后執(zhí)行;c)通過(guò)確定每個(gè)組塊的位置和不同處理層的組塊之間的數(shù)據(jù)依賴(lài)性將所述樹(shù)形結(jié)構(gòu)中的指令排序成處理次序;d)將一個(gè)或多個(gè)指令插入包含于所述存儲(chǔ)器中的調(diào)度表中,其中,所述一個(gè)或多個(gè)指令在所述調(diào)度表內(nèi)的位置至少部分地取決于所述處理次序;以及e)通過(guò)用所述處理器根據(jù)所述調(diào)度表來(lái)執(zhí)行所述指令而服務(wù)于I/O請(qǐng)求,其中,由所述處理器根據(jù)與包含于所述存儲(chǔ)器中的樹(shù)形結(jié)構(gòu)相關(guān)聯(lián)的所述處理次序來(lái)執(zhí)行所述指令。
2.權(quán)利要求1的方法,其中,與特定處理層相關(guān)聯(lián)的組塊具有不同于與另一處理層相關(guān)聯(lián)的組塊的大小。
3.權(quán)利要求1的方法,其中,e)包括在執(zhí)行具有數(shù)據(jù)依賴(lài)性的給定指令之前確定依賴(lài)的指令的執(zhí)行是否完成。
4.權(quán)利要求1的方法,其中,所述樹(shù)形結(jié)構(gòu)包括最低層,其中,所述最低層的一個(gè)或多個(gè)指令具有對(duì)所述最低層中的不同指令的相關(guān)聯(lián)數(shù)據(jù)依賴(lài)性,其中,對(duì)最低層中的給定指令的數(shù)據(jù)依賴(lài)性允許所述給定指令僅在執(zhí)行最低層中的相應(yīng)一個(gè)或多個(gè)依賴(lài)的指令之后執(zhí)行。
5.權(quán)利要求1的方法,其中,e)包括并行地執(zhí)行來(lái)自公共處理層的兩個(gè)或更多指令。
6.權(quán)利要求1的方法,其中,e)包括并行地執(zhí)行來(lái)自?xún)蓚€(gè)或更多不同處理層的兩個(gè)或更多指令。
7.權(quán)利要求1的方法,其中,e)包括在所述樹(shù)形結(jié)構(gòu)的指令的執(zhí)行中使由所述處理器進(jìn)行的對(duì)來(lái)自一個(gè)或多個(gè)其它I/O請(qǐng)求的一個(gè)或多個(gè)指令的執(zhí)行交錯(cuò)。
8.權(quán)利要求7的方法,其中,e)包括與所述樹(shù)形結(jié)構(gòu)的一個(gè)或多個(gè)指令的執(zhí)行并行地執(zhí)行來(lái)自所述一個(gè)或多個(gè)其它I/O請(qǐng)求的一個(gè)或多個(gè)指令。
9.權(quán)利要求1的方法,其中,所述一個(gè)或多個(gè)處理層包括去存檔或存檔層。
10.權(quán)利要求1的方法,其中,所述一個(gè)或多個(gè)處理層包括解密或加密層。
11.權(quán)利要求1的方法,其中,所述一個(gè)或多個(gè)處理層包括解壓縮或壓縮層。
12.權(quán)利要求1的方法,其中,在d)中將傳入I/O請(qǐng)求插入所述調(diào)度表內(nèi)還取決于與 I/O請(qǐng)求相關(guān)聯(lián)的優(yōu)先級(jí)約束。
13.權(quán)利要求1的方法,其中,在d)中將傳入I/O請(qǐng)求插入所述調(diào)度表內(nèi)還取決于與 I/O請(qǐng)求相關(guān)聯(lián)的最后期限約束。
14.權(quán)利要求1的方法,其中,e)包括在插入到所述調(diào)度表之前、當(dāng)與兩個(gè)或更多I/O請(qǐng)求相關(guān)聯(lián)的所述樹(shù)形結(jié)構(gòu)滿(mǎn)足閾值重疊值時(shí)使兩個(gè)或更多I/O請(qǐng)求交錯(cuò)。
15.權(quán)利要求1的方法,其中,e)包括在運(yùn)行時(shí)間向一個(gè)或多個(gè)文件應(yīng)用差別補(bǔ)丁。
16.一種用于處理輸入/輸出(I/O)的系統(tǒng),包括處理器單元;存儲(chǔ)器,其被耦合到所述處理器單元;一個(gè)或多個(gè)媒體/存儲(chǔ)設(shè)備,其耦合到所述處理器單元;以及包含于所述存儲(chǔ)器中的一組處理器可執(zhí)行指令,所述指令被配置為在被執(zhí)行時(shí)實(shí)現(xiàn)用于處理到或來(lái)自所述一個(gè)或多個(gè)媒體/存儲(chǔ)設(shè)備的輸入或輸出(I/O)的方法,該方法包括a)從在所述處理器上運(yùn)行的應(yīng)用程序接收傳入I/O請(qǐng)求以向所述一個(gè)或多個(gè)媒體/ 存儲(chǔ)設(shè)備傳送數(shù)據(jù)或從所述一個(gè)或多個(gè)媒體/存儲(chǔ)設(shè)備接收數(shù)據(jù);b)創(chuàng)建包括能被所述處理器執(zhí)行且包含于存儲(chǔ)器中的指令的樹(shù)形結(jié)構(gòu),該樹(shù)形結(jié)構(gòu)定義與所述I/O請(qǐng)求相關(guān)聯(lián)的一個(gè)或多個(gè)處理層,其中,所述指令在所述一個(gè)或多個(gè)處理層中的每一個(gè)處將所述I/O請(qǐng)求中的數(shù)據(jù)劃分成一個(gè)或多個(gè)組塊,其中,所述一個(gè)或多個(gè)層處的每個(gè)指令具有對(duì)前一層中的一個(gè)或多個(gè)相應(yīng)指令的相關(guān)聯(lián)數(shù)據(jù)依賴(lài)性,其中,對(duì)給定指令的數(shù)據(jù)依賴(lài)性允許所述給定指令僅在所述前一層中的相應(yīng)一個(gè)或多個(gè)依賴(lài)的指令的執(zhí)行之后執(zhí)行;c)通過(guò)確定每個(gè)組塊的位置和不同處理層的組塊之間的數(shù)據(jù)依賴(lài)性將所述樹(shù)形結(jié)構(gòu)中的指令排序成處理次序;d)將一個(gè)或多個(gè)指令插入包含于所述存儲(chǔ)器中的調(diào)度表中,其中,所述一個(gè)或多個(gè)指令在所述調(diào)度表內(nèi)的位置至少部分地取決于所述處理次序;以及e)通過(guò)用所述處理器根據(jù)所述調(diào)度表來(lái)執(zhí)行所述指令而服務(wù)于I/O請(qǐng)求,其中,由所述處理器根據(jù)與包含于所述存儲(chǔ)器中的樹(shù)形結(jié)構(gòu)相關(guān)聯(lián)的所述處理次序來(lái)執(zhí)行所述指令。
17.權(quán)利要求16的系統(tǒng),其中,與特定處理層相關(guān)聯(lián)的組塊具有不同于與另一處理層相關(guān)聯(lián)的組塊的大小。
18.權(quán)利要求16的系統(tǒng),其中,e)包括在執(zhí)行具有數(shù)據(jù)依賴(lài)性的給定指令之前確定依賴(lài)的指令的執(zhí)行是否完成。
19.權(quán)利要求16的系統(tǒng),其中,所述樹(shù)形結(jié)構(gòu)包括最低層,其中,所述最低層的一個(gè)或多個(gè)指令具有對(duì)所述最低層中的不同指令的相關(guān)聯(lián)數(shù)據(jù)依賴(lài)性,其中,對(duì)最低層中的給定指令的數(shù)據(jù)依賴(lài)性允許所述給定指令僅在執(zhí)行最低層中的相應(yīng)一個(gè)或多個(gè)依賴(lài)的指令之后執(zhí)行。
20.權(quán)利要求16的系統(tǒng),其中,e)包括并行地執(zhí)行來(lái)自公共處理層的兩個(gè)或更多指令。
21.權(quán)利要求16的系統(tǒng),其中,e)包括并行地執(zhí)行來(lái)自?xún)蓚€(gè)或更多不同處理層的兩個(gè)或更多指令。
22.權(quán)利要求16的系統(tǒng),其中,e)包括在所述樹(shù)形結(jié)構(gòu)的指令的執(zhí)行中使由所述處理器進(jìn)行的對(duì)來(lái)自一個(gè)或多個(gè)其它I/O請(qǐng)求的一個(gè)或多個(gè)指令的執(zhí)行交錯(cuò)。
23.權(quán)利要求22的系統(tǒng),其中,e)包括與所述樹(shù)形結(jié)構(gòu)的一個(gè)或多個(gè)指令的執(zhí)行并行地執(zhí)行來(lái)自所述一個(gè)或多個(gè)其它I/O請(qǐng)求的一個(gè)或多個(gè)指令。
24.權(quán)利要求16的系統(tǒng),其中,所述一個(gè)或多個(gè)處理層包括去存檔/存檔層。
25.權(quán)利要求16的系統(tǒng),其中,所述一個(gè)或多個(gè)處理層包括解密/加密層。
26.權(quán)利要求16的系統(tǒng),其中,所述一個(gè)或多個(gè)處理層包括解壓縮/壓縮層。
27.權(quán)利要求16的系統(tǒng),其中,在d)中將傳入I/O請(qǐng)求插入所述調(diào)度表內(nèi)還取決于與 I/O請(qǐng)求相關(guān)聯(lián)的優(yōu)先級(jí)約束。
28.權(quán)利要求16的系統(tǒng),其中,在d)中將傳入I/O請(qǐng)求插入所述調(diào)度表內(nèi)還取決于與 I/O請(qǐng)求相關(guān)聯(lián)的最后期限約束。
29.權(quán)利要求16的系統(tǒng),其中,e)包括在插入到所述調(diào)度表之前、當(dāng)與一個(gè)或多個(gè)I/O 請(qǐng)求相關(guān)聯(lián)的所述樹(shù)形結(jié)構(gòu)滿(mǎn)足閾值重疊值時(shí)使一個(gè)或多個(gè)I/O請(qǐng)求交錯(cuò)。
30.權(quán)利要求16的系統(tǒng),其中,e)包括在運(yùn)行時(shí)間向一個(gè)或多個(gè)文件應(yīng)用差別補(bǔ)丁。
31.一種計(jì)算機(jī)程序產(chǎn)品,包括計(jì)算機(jī)可讀媒體,其具有在所述媒體中包含的計(jì)算機(jī)可讀程序代碼,所述計(jì)算機(jī)可讀程序代碼包括在被執(zhí)行時(shí)處理到或來(lái)自一個(gè)或多個(gè)媒體/存儲(chǔ)設(shè)備的輸入或輸出(I/O)的計(jì)算機(jī)可執(zhí)行指令,所述計(jì)算機(jī)程序產(chǎn)品具有a)用于從在所述處理器上運(yùn)行的應(yīng)用程序接收傳入I/O請(qǐng)求以向所述一個(gè)或多個(gè)媒體/存儲(chǔ)設(shè)備傳送數(shù)據(jù)或從所述一個(gè)或多個(gè)媒體/存儲(chǔ)設(shè)備接收數(shù)據(jù)的計(jì)算機(jī)可執(zhí)行程序代碼裝置;b)用于創(chuàng)建包括能被所述處理器執(zhí)行且包含于存儲(chǔ)器中的指令的樹(shù)形結(jié)構(gòu)的計(jì)算機(jī)可執(zhí)行程序代碼裝置,該樹(shù)形結(jié)構(gòu)定義與所述I/O請(qǐng)求相關(guān)聯(lián)的一個(gè)或多個(gè)處理層,其中, 所述指令在所述一個(gè)或多個(gè)處理層中的每一個(gè)處將所述I/O請(qǐng)求中的數(shù)據(jù)劃分成一個(gè)或多個(gè)組塊,其中,所述一個(gè)或多個(gè)層處的每個(gè)指令具有對(duì)前一層中的一個(gè)或多個(gè)相應(yīng)指令的相關(guān)聯(lián)數(shù)據(jù)依賴(lài)性,其中,對(duì)給定指令的數(shù)據(jù)依賴(lài)性允許所述給定指令僅在所述前一層中的相應(yīng)一個(gè)或多個(gè)依賴(lài)的指令的執(zhí)行之后執(zhí)行;c)用于通過(guò)確定每個(gè)組塊的位置和不同處理層的組塊之間的數(shù)據(jù)依賴(lài)性將所述樹(shù)形結(jié)構(gòu)中的指令排序成處理次序的計(jì)算機(jī)可讀程序代碼裝置;d)用于將一個(gè)或多個(gè)指令插入包含于所述存儲(chǔ)器中的調(diào)度表中的計(jì)算機(jī)可讀程序代碼裝置,其中,所述一個(gè)或多個(gè)指令在所述調(diào)度表內(nèi)的位置至少部分地取決于所述處理次序;以及e)用于通過(guò)用所述處理器根據(jù)所述調(diào)度表來(lái)執(zhí)行所述指令而服務(wù)于I/O請(qǐng)求的計(jì)算機(jī)可讀程序代碼裝置,其中,由所述處理器根據(jù)與包含于所述存儲(chǔ)器中的樹(shù)形結(jié)構(gòu)相關(guān)聯(lián)的所述處理次序來(lái)執(zhí)行所述指令。
32.權(quán)利要求31的計(jì)算機(jī)程序產(chǎn)品,其中,與特定處理層相關(guān)聯(lián)的組塊具有不同于與另一處理層相關(guān)聯(lián)的組塊的大小。
33.權(quán)利要求31的計(jì)算機(jī)程序產(chǎn)品,其中,e)包括用于在執(zhí)行具有數(shù)據(jù)依賴(lài)性的給定指令之前確定依賴(lài)的指令的執(zhí)行是否完成的計(jì)算機(jī)可讀程序代碼裝置。
34.權(quán)利要求31的計(jì)算機(jī)程序產(chǎn)品,其中,所述樹(shù)形結(jié)構(gòu)包括最低層,其中,所述最低層的一個(gè)或多個(gè)指令具有對(duì)所述最低層中的不同指令的相關(guān)聯(lián)數(shù)據(jù)依賴(lài)性,其中,對(duì)最低層中的給定指令的數(shù)據(jù)依賴(lài)性允許所述給定指令僅在執(zhí)行最低層中的相應(yīng)一個(gè)或多個(gè)依賴(lài)的指令之后執(zhí)行。
35.權(quán)利要求31的計(jì)算機(jī)程序產(chǎn)品,其中,e)包括用于并行地執(zhí)行來(lái)自公共處理層的兩個(gè)或更多指令的計(jì)算機(jī)可讀程序代碼裝置。
36.權(quán)利要求31的計(jì)算機(jī)程序產(chǎn)品,其中,e)包括用于并行地執(zhí)行來(lái)自?xún)蓚€(gè)或更多不同處理層的兩個(gè)或更多指令的計(jì)算機(jī)可讀程序代碼裝置。
37.權(quán)利要求31的計(jì)算機(jī)程序產(chǎn)品,其中,e)包括用于在所述樹(shù)形結(jié)構(gòu)的指令的執(zhí)行中使由所述處理器進(jìn)行的對(duì)來(lái)自一個(gè)或多個(gè)其它I/O請(qǐng)求的一個(gè)或多個(gè)指令的執(zhí)行交錯(cuò)的計(jì)算機(jī)可讀程序代碼裝置。
38.權(quán)利要求37的計(jì)算機(jī)程序產(chǎn)品,其中,e)包括用于與所述樹(shù)形結(jié)構(gòu)的一個(gè)或多個(gè)指令的執(zhí)行并行地執(zhí)行來(lái)自所述一個(gè)或多個(gè)其它I/O請(qǐng)求的一個(gè)或多個(gè)指令的計(jì)算機(jī)可讀程序代碼裝置。
39.權(quán)利要求31的計(jì)算機(jī)程序產(chǎn)品,其中,所述一個(gè)或多個(gè)處理層包括去存檔或存檔層。
40.權(quán)利要求31的計(jì)算機(jī)程序產(chǎn)品,其中,所述一個(gè)或多個(gè)處理層包括解密或加密層。
41.權(quán)利要求31的計(jì)算機(jī)程序產(chǎn)品,其中,所述一個(gè)或多個(gè)處理層包括解壓縮或壓縮層。
42.權(quán)利要求31的計(jì)算機(jī)程序產(chǎn)品,其中,在e)中將傳入I/O請(qǐng)求插入所述調(diào)度表內(nèi)還取決于與I/O請(qǐng)求相關(guān)聯(lián)的優(yōu)先級(jí)約束。
43.權(quán)利要求31的計(jì)算機(jī)程序產(chǎn)品,其中,在e)中將傳入I/O請(qǐng)求插入所述調(diào)度表內(nèi)還取決于與I/O請(qǐng)求相關(guān)聯(lián)的最后期限約束。
44.權(quán)利要求31的計(jì)算機(jī)程序產(chǎn)品,其中,e)包括用于在插入到所述調(diào)度表之前、當(dāng)與一個(gè)或多個(gè)I/O請(qǐng)求相關(guān)聯(lián)的所述樹(shù)形結(jié)構(gòu)滿(mǎn)足閾值重疊值時(shí)使一個(gè)或多個(gè)I/O請(qǐng)求交錯(cuò)的計(jì)算機(jī)可讀程序代碼裝置。
45.權(quán)利要求31的計(jì)算機(jī)程序產(chǎn)品,其中,e)包括用于在運(yùn)行時(shí)間向一個(gè)或多個(gè)文件應(yīng)用差別補(bǔ)丁的計(jì)算機(jī)可讀程序代碼裝置。
全文摘要
從在處理器上運(yùn)行的應(yīng)用程序接收傳入I/O請(qǐng)求。包括處理器可執(zhí)行指令的樹(shù)形結(jié)構(gòu)定義與I/O請(qǐng)求相關(guān)聯(lián)的一個(gè)或多個(gè)處理層。所述指令在所述一個(gè)或多個(gè)處理層中的每一個(gè)處將I/O請(qǐng)求中的數(shù)據(jù)劃分成一個(gè)或多個(gè)組塊。每個(gè)指令具有對(duì)前一層中的一個(gè)或多個(gè)相應(yīng)指令的相關(guān)聯(lián)數(shù)據(jù)依賴(lài)性。通過(guò)確定每個(gè)組塊的位置和不同處理層的組塊之間的數(shù)據(jù)依賴(lài)性將所述指令排序成處理次序。將一個(gè)或多個(gè)指令插入至少部分地取決于所述處理次序的調(diào)度表。根據(jù)所述處理次序,通過(guò)用處理器根據(jù)調(diào)度表來(lái)執(zhí)行指令而服務(wù)于I/O請(qǐng)求。
文檔編號(hào)G06F7/00GK102171647SQ201080001671
公開(kāi)日2011年8月31日 申請(qǐng)日期2010年10月14日 優(yōu)先權(quán)日2009年10月26日
發(fā)明者R. 薩勒 A. 申請(qǐng)人:美國(guó)索尼電腦娛樂(lè)有限責(zé)任公司