專利名稱::用于保障多線程服務(wù)器應(yīng)用的系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
:本公開涉及將計(jì)算從系統(tǒng)中央處理單元(CPU)有效地轉(zhuǎn)卸(offload)到系統(tǒng)圖形處理單元(GPU)的數(shù)據(jù)處理系統(tǒng)。
背景技術(shù):
:性能在創(chuàng)建大規(guī)模應(yīng)用中是關(guān)鍵的挑戰(zhàn),因?yàn)轭A(yù)測這種應(yīng)用的行為本身是很困難的。將安全解決方案納入這些應(yīng)用架構(gòu)的結(jié)構(gòu)幾乎總會(huì)使結(jié)果系統(tǒng)的性能更差。當(dāng)保護(hù)所有應(yīng)用數(shù)據(jù)時(shí)性能下降可能大于90%,并且當(dāng)應(yīng)用其它安全機(jī)制時(shí)可能更差。為了有效,密碼算法有必要是計(jì)算密集型的,并且必需是數(shù)據(jù)保護(hù)協(xié)議的完整部分。使用密碼算法的代價(jià)是明顯的,因?yàn)樗鼈兊膱?zhí)行消耗許多CPU周期,這會(huì)對應(yīng)用的性能產(chǎn)生不利影響。例如,安全套接字層(SSL)協(xié)議中的密碼操作將從服務(wù)器下載文件的速度降低了大約10到IOO倍。SSL操作還將懲罰任何地方web服務(wù)器的性能,其因數(shù)大約從3.4到最多因數(shù)9。大體上,只要數(shù)據(jù)消息跨過安全邊界,該消息便會(huì)被加密并且隨后被解密。這些操作帶來了性能處罰。減輕使用密碼協(xié)議代價(jià)的一個(gè)現(xiàn)有技術(shù)的嘗試包括添加分離的專門化硬件以提供安全支持。額外的專用硬件允許應(yīng)用使用更多的CPU周期。然而,專用硬件是昂貴的并且使用它要求對現(xiàn)有系統(tǒng)進(jìn)行較大改動(dòng)。另外,將外部硬件設(shè)備用于密碼功能增加了編組與解組開銷(由封裝與解封裝數(shù)據(jù)引起的)以及設(shè)備延遲。減輕使用密碼協(xié)議代價(jià)的另一現(xiàn)有技術(shù)嘗試是增加CPU以處理加密操作。然而,附加的CPU最好是用于應(yīng)用的核心計(jì)算邏輯,以改進(jìn)其響應(yīng)時(shí)間和可用性。另外,多數(shù)計(jì)算機(jī)對其主板上可安裝的CPU的數(shù)量具有限制。而且,CPU趨向于變?yōu)榘嘿F資源,其是針對通用計(jì)算而設(shè)計(jì)的,而非針對用于密碼計(jì)算的特定應(yīng)用。這可能導(dǎo)致CPU的利用不足以及不利的成本收益結(jié)果。因此,需求解決上文描述以及其他之前經(jīng)歷的問題。
發(fā)明內(nèi)容—種用于保障多線程服務(wù)器應(yīng)用的系統(tǒng),改進(jìn)了用于執(zhí)行核心應(yīng)用的CPU的可用性。系統(tǒng)提供轉(zhuǎn)卸、批處理和調(diào)度機(jī)制,用于在GPU上有效地執(zhí)行應(yīng)用所需的處理任務(wù),從而改進(jìn)多線程服務(wù)器應(yīng)用的性能。由此,系統(tǒng)有助于降低CPU與GPU之間的協(xié)作處理的關(guān)聯(lián)開銷,從而使CPU可以花費(fèi)更多的周期用于執(zhí)行應(yīng)用邏輯。通過研究下文的附圖和詳細(xì)描述,其它系統(tǒng)、方法、特征和優(yōu)勢對于本領(lǐng)域技術(shù)人員而言將是或?qū)⒆優(yōu)橐滓姷?。意在將所有這種附加的系統(tǒng)、方法、特征和優(yōu)勢都包括在此描述中,包括在本發(fā)明的范圍中,并且由所付權(quán)利要求加以保護(hù)。參考以下的附圖和描述可以更好理解系統(tǒng)。圖中的分量未必是按比例繪制的,其重點(diǎn)在于說明本發(fā)明的原理。此外,貫穿不同視圖,附圖中相似的參考標(biāo)號(hào)指代相應(yīng)的部分。圖1示出了多線程應(yīng)用執(zhí)行環(huán)境中加密和解密操作的管理控制系統(tǒng),其中消息被批處理以便提交到GPU;圖2示出了多線程應(yīng)用執(zhí)行環(huán)境中加密和解密操作的管理控制系統(tǒng),其中來自接收自GPU的已處理消息的已處理消息分量被遞交給應(yīng)用的線程;圖3示出了可由加密管理邏輯實(shí)現(xiàn)以對消息進(jìn)行批處理從而提交到GPU的處理的流程圖;圖4示出了可由加密管理邏輯實(shí)現(xiàn)用以將由GPU處理的消息返回到應(yīng)用線程的處理的流程圖;圖5示出了可由加密管理調(diào)整邏輯實(shí)現(xiàn)的處理的流程圖;圖6示出了由系統(tǒng)中加密管理邏輯實(shí)現(xiàn)的批處理機(jī)制的實(shí)驗(yàn)結(jié)果;以及圖7示出了平均等待時(shí)間相對于最大復(fù)合消息容量的仿真結(jié)果的實(shí)例。具體實(shí)施例方式圖1示出了多線程應(yīng)用執(zhí)行環(huán)境中加密和解密操作的管理控制的系統(tǒng)100。系統(tǒng)100包括中央處理單元(CPU)102、存儲(chǔ)器104和圖形處理單元(GPU)106。GPU106可以是例如可從SantaClara的NVIDIA、CA或Marlborough的ATI研究公司、MA獲得的圖形處理單元。GPU106可以通過總線108與CPU102和存儲(chǔ)器104通信,如外部設(shè)備互連(PCI)總線、PCIE鄧ress總線、圖形加速端口(AGP)總線、工業(yè)標(biāo)準(zhǔn)結(jié)構(gòu)(ISA)總線或其它總線。正如下面將更詳細(xì)描述,CPU102執(zhí)行來自系統(tǒng)存儲(chǔ)器104的應(yīng)用。應(yīng)用可以是多線程應(yīng)用。CPU102和GPU106之間的一個(gè)區(qū)別是CPU102通常遵循單指令單數(shù)據(jù)(SISD)模型,而GPU106通常遵循單指令多數(shù)據(jù)(SMD)流模型。根據(jù)SISD模型,CPU102每次對執(zhí)行指令之前加載到存儲(chǔ)器中的單個(gè)(或最多幾個(gè))數(shù)據(jù)元素每次執(zhí)行一個(gè)(或最多幾個(gè))指令。相反,SMD處理單元包括多個(gè)處理單元(例如,16到32個(gè)像素著色器),其同時(shí)對多數(shù)據(jù)流執(zhí)行來自單個(gè)指令流的指令,每個(gè)處理單元一個(gè)數(shù)據(jù)流。換句話說,GPU106相對于CPU102的一個(gè)區(qū)別特征是GPU106實(shí)現(xiàn)比CPU更高的并行處理水平。GPU106還包括專門化存儲(chǔ)器部分,如紋理存儲(chǔ)器、幀緩沖區(qū)和用于圖形操作處理的只寫紋理存儲(chǔ)器。存儲(chǔ)器保存由CPU102執(zhí)行的應(yīng)用,如結(jié)算應(yīng)用110和結(jié)余應(yīng)用112。每個(gè)應(yīng)用可以加載多個(gè)執(zhí)行線程。如圖1中所示,結(jié)算應(yīng)用已經(jīng)加載了線程1到'n',標(biāo)示為114到116。每個(gè)線程可以處理結(jié)算應(yīng)用110的任何期望的程序邏輯片段。每個(gè)線程(如線程114)與線程標(biāo)識(shí)符(ID)118相關(guān)聯(lián)。線程ID可以在線程加載時(shí)由操作系統(tǒng)指派,或者由系統(tǒng)100上存在的其他管理機(jī)制指派,或者通過其他方式指派。線程ID可以唯一地指定線程,從而使該線程可以區(qū)別于系統(tǒng)100中執(zhí)行的其它線程。線程執(zhí)行針對其而被設(shè)計(jì)的處理。處理可以包括應(yīng)用編程接口(API)調(diào)用120以5支持處理。例如,API調(diào)用120可以對該線程傳遞給API調(diào)用的消息實(shí)現(xiàn)加密服務(wù)(例如,加密或解密)。然而,雖然下文將關(guān)于加密服務(wù)來進(jìn)行討論,但是API調(diào)用可以要求任何其它處理邏輯(例如,認(rèn)證或授權(quán)、壓縮、轉(zhuǎn)碼或其它邏輯)并且不限于加密服務(wù)。同樣地,管理邏輯154可以一般地可以為任何期望的處理執(zhí)行轉(zhuǎn)卸、調(diào)度和批處理,而不限于加密服務(wù)。GPU106包括只讀紋理存儲(chǔ)器136、多個(gè)并行像素著色器138和幀緩沖區(qū)140。紋理存儲(chǔ)器136存儲(chǔ)復(fù)合消息142,下面更詳細(xì)描述。多個(gè)并行像素著色器138響應(yīng)來自CPU102的執(zhí)行調(diào)用(例如,GPU繪圖調(diào)用)而處理復(fù)合消息142。多個(gè)并行像素著色器138執(zhí)行加密算法144,其可以提供應(yīng)用于復(fù)合消息142的加密或解密功能,如下更詳細(xì)解釋。GPU106還包括只寫紋理存儲(chǔ)器146。GPU106可以將處理結(jié)果寫入只寫紋理存儲(chǔ)器146以供CPU102獲取。CPU102將GPU106獲得的結(jié)果返回給導(dǎo)致復(fù)合消息142分量的個(gè)體線程。不同于紋理存儲(chǔ)器136和只寫紋理存儲(chǔ)器146或者除此以外,可以采用其它數(shù)據(jù)交換機(jī)制與GPU交換數(shù)據(jù)。像素著色器138的編程功能可以遵循API調(diào)用120的預(yù)期。像素著色器138可以高度并行該功能。然而,如上所述,像素著色器138不限于實(shí)現(xiàn)加密服務(wù)。當(dāng)每個(gè)線程進(jìn)行API調(diào)用120時(shí),其可以提供期望API調(diào)用對其進(jìn)行操作的源消息分量。圖l示出了由線程114提供的源消息分量148和由線程'n'116提供的源消息分量'n',其'n'是整數(shù)。例如,源消息分量可以是客戶結(jié)算數(shù)據(jù),去在發(fā)送到其他系統(tǒng)之前應(yīng)當(dāng)加密。然后,系統(tǒng)ioo可以與深度防護(hù)策略結(jié)合使用,通過該深度防護(hù)策略,消息例如在程序和/或系統(tǒng)之間的每個(gè)通信邊界處被加密和解密。系統(tǒng)100截獲API調(diào)用120,以提供由應(yīng)用的潛在的多個(gè)執(zhí)行線程所進(jìn)行的潛在的多個(gè)API調(diào)用的更為有效的處理。為此,系統(tǒng)100可以在存儲(chǔ)器中實(shí)現(xiàn)API調(diào)用包裝器(wrapper)152。API調(diào)用包裝器152接收API調(diào)用,并且利用加密管理邏輯154來替換普通API調(diào)用邏輯。換句話說,不同于API調(diào)用120導(dǎo)致對API調(diào)用邏輯的常規(guī)調(diào)用,而是將系統(tǒng)100配置用于通過API調(diào)用包裝器152來截獲API調(diào)用120,并且替代不同的功能。繼續(xù)關(guān)于加密服務(wù)的示例,API調(diào)用包裝器152將普通API調(diào)用邏輯替換為加密管理邏輯154。存儲(chǔ)器104還可以存儲(chǔ)支配加密管理邏輯154操作的加密管理參數(shù)156。而且,如下所論述的,系統(tǒng)100還可以執(zhí)行加密管理調(diào)整邏輯158來校準(zhǔn)或優(yōu)化加密管理參數(shù)156。為了支持對線程提供的源消息分量的加密和解密,加密管理邏輯154可以將請求批處理到復(fù)合消息142中。由此,例如,加密管理邏輯154可以維護(hù)從請求加密的線程收集源消息分量的復(fù)合消息以及從請求解密的線程收集源消息分量的復(fù)合消息。分離的加密管理參數(shù)可以操控源消息分量到任何數(shù)量的復(fù)合消息中的批處理。在接收每個(gè)源消息分量之后,加密管理邏輯154可以按照加密管理邏輯154所指定的線程ID來調(diào)用使線程休眠的操作系統(tǒng)功能,從而將每個(gè)線程置于休眠。休眠每個(gè)線程的一個(gè)好處在于其它活躍線程可以使用空閑的CPU周期,因?yàn)镃PU不再執(zhí)行進(jìn)入休眠的線程。因而,CPU保持忙碌執(zhí)行應(yīng)用邏輯。圖l所示的示例中,復(fù)合消息142保存來自請求對特定消息進(jìn)行加密的線程的源消息分量。更具體地,加密管理邏輯154從線程114、116獲得源消息分量148、150,并且基于每個(gè)源消息分量148、150來創(chuàng)建復(fù)合消息部分。在一個(gè)實(shí)現(xiàn)中,加密管理邏輯154將復(fù)合消息部分作為三個(gè)字段幀來創(chuàng)建,包括線程ID、源消息分量的消息長度(或包括源消息分量的復(fù)合消息部分)和源消息分量。加密管理邏輯154繼而將每個(gè)復(fù)合消息部分添加到復(fù)合消息142中,從而將每個(gè)復(fù)合消息部分批處理到復(fù)合消息142(在下文指出的限制內(nèi))。圖1示出,復(fù)合消息142包括標(biāo)示為162、164、166的'n'個(gè)復(fù)合消息部分。每個(gè)復(fù)合消息部分包括線程ID、消息長度和源消息分量。例如,復(fù)合消息部分162包括線程ID168(其可以對應(yīng)于線程ID118)、消息長度170和源消息分量172(其可以對應(yīng)于源消息分量148)。CPU102將復(fù)合消息142提交到GPU106進(jìn)行處理。在這一點(diǎn)上,CPU102可以將復(fù)合消息142寫入紋理存儲(chǔ)器136。CPU102例如還可以通過向GPU106發(fā)出繪制調(diào)用來開始GPU106對復(fù)合消息的處理。由系統(tǒng)100實(shí)現(xiàn)的批處理機(jī)制可以顯著地改進(jìn)處理性能。一個(gè)原因是系統(tǒng)100減少了將多個(gè)小消息發(fā)送到GPU106并從GPU106獲取多個(gè)小的已處理結(jié)果的數(shù)據(jù)傳送開銷。系統(tǒng)100將復(fù)合消息分量批處理到大復(fù)合消息142中并且從只寫紋理146讀回較大的已處理消息,由此來幫助改進(jìn)效率。得到了與GPU106更為有效的雙向數(shù)據(jù)傳送。改進(jìn)的另一個(gè)原因是對GPU106進(jìn)行較少的繪制調(diào)用。繪制調(diào)用時(shí)間和資源開銷因此顯著減少。轉(zhuǎn)到圖6,其示出了由加密管理邏輯154實(shí)現(xiàn)的批處理機(jī)制的實(shí)驗(yàn)結(jié)果600。實(shí)驗(yàn)結(jié)果600顯示當(dāng)復(fù)合消息大小增加時(shí)每字節(jié)處理的代價(jià)顯著減少。表1提供了實(shí)驗(yàn)數(shù)據(jù)點(diǎn)。例如,以2為對數(shù)底的消息大小16以2為對數(shù)底的消息大小10在效率上獲得了57倍的增加。表1-實(shí)驗(yàn)結(jié)果<table>tableseeoriginaldocumentpage8</column></row><table>圖2突出顯示加密管理邏輯154如何處理從GPU106返回的已處理消息202。一個(gè)實(shí)現(xiàn)中,GPU106完成復(fù)合消息142上的所請求處理,并且將得到的已處理消息202寫入只寫紋理存儲(chǔ)器146中。GPU106向CPU102通知在復(fù)合消息142上完成了處理。作為響應(yīng),CPU102從只寫紋理存儲(chǔ)器146中讀取已處理消息202。如圖2所示,已處理消息202包括標(biāo)示為204、206和208的多個(gè)已處理消息部分。通常,已處理消息部分是通過處理復(fù)合消息142中的復(fù)合消息部分而得到的。然而,在復(fù)合消息142中發(fā)送以進(jìn)行處理的內(nèi)容與GPU106在已處理消息202中返回的內(nèi)容之間無需——對應(yīng)。已處理消息部分可以包括多個(gè)字段。例如,已處理消息部分204包括線程ID208、消息長度210和已處理消息分量212。消息長度210可以表示已處理消息分量(或包括處理消息分量的已處理消息部分)的長度。線程ID208可以指明已處理消息分量應(yīng)當(dāng)遞交到哪個(gè)線程。加密管理邏輯154將已處理消息202分解成包括已處理消息分量的已處理消息部分204、206、208。根據(jù)哪些線程發(fā)起了引致已處理消息分量的源消息分量,加密管理邏輯154還有選擇地將已處理消息分量傳送給應(yīng)用的多個(gè)執(zhí)行線程中的選定線程。換句話說,提交消息進(jìn)行加密的線程接收經(jīng)過加密的消息。GPU106產(chǎn)生經(jīng)過加密消息,而CPU102根據(jù)經(jīng)過加密的已處理消息分量隨附的已處理消息部分中指定的線程ID,將經(jīng)過加密消息返回給線程。通常,已處理消息部分中指定的線程ID208記錄了引致已處理消息部分的復(fù)合消息部分中指定的線程ID168。在圖2所示的示例中,加密管理邏輯154將已處理消息分量212返回到結(jié)算應(yīng)用110的線程1。加密管理邏輯154還返回其它已處理消息分量,包括將來自已處理消息部分'n'208的已處理消息分量214返回給線程'n'116。在返回每個(gè)已處理消息分量之前,加密管理邏輯154可以通過調(diào)用通過線程ID喚醒線程的操作系統(tǒng)功能來喚醒每個(gè)線程。圖3示出了可由加密管理邏輯154實(shí)現(xiàn)用以將復(fù)合消息142提交到GPU106的處理的流程圖。加密管理邏輯154讀取加密管理參數(shù)156,包括批處理參數(shù)(302)。批處理參數(shù)可以包括復(fù)合消息142的最大或最小長度,以及在發(fā)送復(fù)合消息142之前等待新源消息分量的最長或最短等待時(shí)間(例如,批處理定時(shí)器)。批處理參數(shù)還可以包括復(fù)合消息142中允許的復(fù)合消息部分的最大或最小數(shù)量,從其接受源消息分量的不同線程的最大或最小數(shù)量,或影響上述處理的其它參數(shù)。加密管理邏輯154基于新源消息分量(304)的最大等待時(shí)間(如果有)來啟動(dòng)批處理定時(shí)器。當(dāng)源消息分量到達(dá)時(shí),加密管理邏輯154休眠提交該源消息分量的線程(306)。然后加密管理邏輯創(chuàng)建復(fù)合消息部分以添加到當(dāng)前復(fù)合消息142。為此,加密管理邏輯154可以創(chuàng)建將被添加到源消息分量中的長度字段(308),并創(chuàng)建線程ID字段(310),以獲得復(fù)合消息部分(312)。加密管理邏輯154將復(fù)合消息部分添加到復(fù)合消息(314)。如果批處理定時(shí)器沒有超時(shí),加密管理邏輯154繼續(xù)獲得源消息分量,直到復(fù)合消息142沒有到達(dá)其最大大小。然而,如果批處理定時(shí)器已經(jīng)超時(shí),或如果達(dá)到了最大復(fù)合消息大小,加密管理邏輯154重置批處理定時(shí)器(316),并且將復(fù)合消息寫入GPU106(318)。關(guān)于復(fù)合消息142中的批處理大小的另一個(gè)限制可以由GPU的最大處理容量來設(shè)定。例如,如果GPU具有K個(gè)單元的最大容量(例如,K是像素著色器或者其他處理單元的數(shù)目,或者是GPU上的容量),繼而系統(tǒng)100可以將最大復(fù)合消息大小設(shè)置為包括不多于K個(gè)復(fù)合消息部分。因而,不會(huì)強(qiáng)迫線程等待多于批處理定時(shí)器所指定的最大時(shí)間量,直到由線程提交的源消息分量發(fā)送到GPU106以進(jìn)行處理。批處理定時(shí)器的適當(dāng)值可以取決于特定的系統(tǒng)實(shí)現(xiàn),并且可以根據(jù)下面描述的統(tǒng)計(jì)分析、隨機(jī)地、根據(jù)預(yù)選默認(rèn)值或以許多其它方法來進(jìn)行選擇。一旦復(fù)合消息142被寫入GPU106,加密管理邏輯154便啟動(dòng)GPU106算法對復(fù)合消息142的執(zhí)行(320)。用于初始化執(zhí)行的一個(gè)機(jī)制是向GPU106發(fā)出繪制調(diào)用。加密管理邏輯154清除復(fù)合消息142,以便準(zhǔn)備裝配下一復(fù)合消息并將其提交給GPU106。GPU106上的算法實(shí)現(xiàn)負(fù)責(zé)關(guān)注給予復(fù)合消息142結(jié)構(gòu)的個(gè)體線程ID、消息長度和源消息分量。因而,例如,加密算法144負(fù)責(zé)執(zhí)行GPU中處理單元上的片段,以用于分離復(fù)合消息部分、處理源消息分量以及創(chuàng)建已處理的消息分量結(jié)果,該消息分量結(jié)果利用與復(fù)合消息部分最初提供的相同線程標(biāo)識(shí)符來標(biāo)記。換句話說,算法實(shí)現(xiàn)認(rèn)識(shí)到,復(fù)合消息142不一定是有待處理的一個(gè)單個(gè)消息,而是將在GPU上并行處理的較小的復(fù)合消息部分的復(fù)合,其中已處理結(jié)果被寫入已處理消息202。圖4示出了可由加密管理邏輯154實(shí)現(xiàn)用以將由GPU處理的消息返回應(yīng)用線程的處理的流程圖。加密管理邏輯154讀取已處理消息202(例如,從GPU106的只寫紋理存儲(chǔ)器146中)(402)。加密管理邏輯154從處理消息202中選擇下一個(gè)已處理消息部分(404)。如上所述,加密管理邏輯154喚醒已處理消息部分中的線程ID所標(biāo)識(shí)的線程(406)。一旦喚醒線程,加密管理邏輯154將已處理消息部分中的已處理消息分量發(fā)送到該線程(408)。然后線程繼續(xù)正常地處理。加密管理邏輯154可以將已處理消息202分解成已處理消息202中存在的那么多個(gè)已處理消息部分。圖5示出了可由加密管理調(diào)整邏輯158("調(diào)整邏輯158")實(shí)現(xiàn)的處理的流程圖。調(diào)整邏輯158可以仿真或監(jiān)控系統(tǒng)100中運(yùn)行應(yīng)用的執(zhí)行(502)。隨著應(yīng)用執(zhí)行,調(diào)整邏輯158收集關(guān)于應(yīng)用執(zhí)行的統(tǒng)計(jì),包括消息大小、API處理調(diào)用的數(shù)量、處理調(diào)用的時(shí)間分布和任何其它期望的執(zhí)行統(tǒng)計(jì)(504)。可以使用用于隊(duì)列分析和批處理服務(wù)的工具來進(jìn)行統(tǒng)計(jì)分析,以確定期望的消息到達(dá)率、消息大小、平均隊(duì)列長度、平均等待時(shí)間或等待處理的長期平均數(shù)量(例如,利用穩(wěn)定系統(tǒng)中消費(fèi)者的長期平均數(shù)量N等于長期平均到達(dá)率入乘以消費(fèi)者花費(fèi)在系統(tǒng)中的長期平均時(shí)間T的Little定律)和其它參數(shù)(506)。給定期望的到達(dá)率、消息大小和用于處理調(diào)用的其它統(tǒng)計(jì),調(diào)整邏輯158可以設(shè)置批處理定時(shí)器、最大復(fù)合消息大小、復(fù)合消息中的最大復(fù)合消息部分以及其他加密管理參數(shù)156,以便實(shí)現(xiàn)系統(tǒng)100的任何期望處理響應(yīng)。換句話說,可以調(diào)整加密管理參數(shù)156,以確保應(yīng)用的平均等待時(shí)間不會(huì)長于已處理結(jié)果的期望時(shí)間。圖7示出了最大復(fù)合消息容量的平均等待時(shí)間的仿真結(jié)果700的示例。利用這種統(tǒng)計(jì)分析結(jié)果,調(diào)整邏輯158可以設(shè)置最大復(fù)合消息長度以最小化平均等待時(shí)間,或者獲得相對于其它考慮(如圖6中示出的每字節(jié)處理的代價(jià))而平衡平均等待時(shí)間的平均等待時(shí)間結(jié)果。上面描述的系統(tǒng)優(yōu)化針對大規(guī)模多線程應(yīng)用的加密,其中每個(gè)線程執(zhí)行任何期望的處理邏輯。系統(tǒng)實(shí)現(xiàn)加密管理邏輯,其從CPU上執(zhí)行的不同線程中收集源消息分量,將源消息分量批處理到復(fù)合消息部分中的復(fù)合消息中。然后系統(tǒng)將復(fù)合消息發(fā)送到GPU。GPU本地執(zhí)行任何期望的處理算法,諸如在GPU上對復(fù)合消息部分中的源消息分量進(jìn)行加密或解密的加密算法。GPU將處理消息返回CPU。然后加密管理邏輯將已處理消息分解為已處理消息部分,并且將每個(gè)已處理消息部分傳回正確的執(zhí)行線程(例如,引起源消息分量的線程)。系統(tǒng)從而顯著地降低了在CPU和GPU之間傳遞多個(gè)小消息所關(guān)聯(lián)的開銷。系統(tǒng)100不僅是成本有效的,并且還可以將密碼算法的性能開銷減少到12%或更少,其響應(yīng)時(shí)間小于200msec,這顯著小于提供加密服務(wù)的其他現(xiàn)有技術(shù)嘗試。上面描述的邏輯可以用硬件和軟件的任何組合實(shí)現(xiàn)。例如,軟件庫中提供的程序可以提供收集源消息、將源消息批處理到復(fù)合消息、將復(fù)合消息發(fā)送到GPU、接收處理消息、將處理消息分解成處理消息分量和將處理消息分配到其目標(biāo)線程的功能。這種軟件庫可以包括動(dòng)態(tài)鏈接庫(DLL),或其它應(yīng)用程序接口(API)。上面描述的邏輯可以存儲(chǔ)到計(jì)算機(jī)可讀介質(zhì)上,如CDROM、硬盤驅(qū)動(dòng)器、軟盤驅(qū)動(dòng)器、閃存或其它計(jì)算機(jī)可讀介質(zhì)。邏輯還可以用具有邏輯的信號(hào)編碼作為從源傳播到目的地的信號(hào)。此外,注意系統(tǒng)實(shí)現(xiàn)可以表示底層物理對象的數(shù)據(jù)的電子轉(zhuǎn)換。例如,收集和批處理邏輯通過選擇地控制集合將離散源消息轉(zhuǎn)換成為復(fù)合消息。分解和分配邏輯通過選擇地控制處理復(fù)合消息的分離轉(zhuǎn)換處理復(fù)合消息。這些消息可以代表多種多樣的物理對象,包括僅作為例子,圖像、視頻、財(cái)務(wù)報(bào)表(例如,信用卡、銀行賬戶和抵押聲明)、電子郵件消息或任何其它物理對象。另外,系統(tǒng)可以作為特定機(jī)器來實(shí)現(xiàn)。例如,特定機(jī)器可以包括CPU、GPU和用于實(shí)現(xiàn)上面指出的加密(或其它API調(diào)用過程)管理邏輯的軟件庫。從而,特定機(jī)器可以包括10CPU、GPU和存儲(chǔ)上面描述的加密管理邏輯的存儲(chǔ)器。添加加密管理邏輯可以包括構(gòu)建功能調(diào)用到來自軟件庫的應(yīng)用其處理收集、批處理、發(fā)送、接收、分解和分配上面指出的邏輯或提供API調(diào)用包裝器和程序邏輯以處理上面指出的處理。然而,應(yīng)用或應(yīng)用的執(zhí)行環(huán)境可以用其它的方法延伸以促成與加密管理邏輯的交互。雖然已經(jīng)描述了本發(fā)明的各種實(shí)施方式,但是對于本領(lǐng)域技術(shù)人員而言易見的是,在本發(fā)明的范圍內(nèi)可以有多個(gè)其它的實(shí)施方式和實(shí)現(xiàn)。因此,除非根據(jù)所附權(quán)利要求書及其等價(jià)項(xiàng),否則不應(yīng)對本發(fā)明加以限制。權(quán)利要求一種用于多線程環(huán)境中的加密和解密操作的管理控制的機(jī)器,所述機(jī)器包括中央處理單元(CPU);圖形處理單元(GPU),其包括紋理存儲(chǔ)器和執(zhí)行加密算法的多個(gè)處理單元;以及耦合至所述CPU的存儲(chǔ)器,所述存儲(chǔ)器包括包含多個(gè)執(zhí)行線程的應(yīng)用;由所述應(yīng)用的所述多個(gè)執(zhí)行線程生成的源消息分量;以及加密管理邏輯,其可操作以用于將所述源消息分量批處理到復(fù)合消息中;以及將所述復(fù)合消息傳送至所述GPU,以便通過所述加密算法來進(jìn)行處理。2.根據(jù)權(quán)利要求1所述的機(jī)器,其中所述加密管理邏輯可操作以用于通過將所述復(fù)合消息寫入所述GPU的所述紋理存儲(chǔ)器來傳送所述復(fù)合消息。3.根據(jù)權(quán)利要求1所述的機(jī)器,其中所述加密管理邏輯進(jìn)一步可操作以用于通過將線程標(biāo)識(shí)符和消息長度添加到每個(gè)源消息分量來構(gòu)造復(fù)合消息部分。4.根據(jù)權(quán)利要求3所述的機(jī)器,其中所述加密管理邏輯可操作以用于通過如下操作來批處理所述源消息分量將每個(gè)所述復(fù)合消息部分添加至所述復(fù)合消息。5.根據(jù)權(quán)利要求1所述的機(jī)器,其中所述加密管理邏輯進(jìn)一步可操作以用于將所述源消息分量批處理到所述復(fù)合消息中,直到達(dá)到最大復(fù)合消息大小。6.根據(jù)權(quán)利要求1所述的機(jī)器,其中所述加密管理邏輯進(jìn)一步可操作以用于將所述源消息分量批處理到所述復(fù)合消息中,直到批處理定時(shí)器超時(shí),以及繼而將所述復(fù)合消息傳送至所述GPU。7.根據(jù)權(quán)利要求1所述的機(jī)器,其中所述存儲(chǔ)器進(jìn)一步包括API調(diào)用包裝器,其截獲所述多個(gè)執(zhí)行線程的消息加密功能調(diào)用,并且將所述消息加密功能調(diào)用重定向到所述加密管理邏輯。8.—種用于多線程環(huán)境中的加密和解密操作的管理控制的機(jī)器,所述機(jī)器包括中央處理單元(CPU);圖形處理單元(GPU),其包括只寫紋理存儲(chǔ)器和執(zhí)行加密算法的多個(gè)處理單元;以及耦合至所述CPU的存儲(chǔ)器,所述存儲(chǔ)器包括第一應(yīng)用,其包括多個(gè)執(zhí)行線程;以及加密管理邏輯,其可操作以用于從所述GPU接收已由所述加密算法處理過的已處理消息;將所述已處理消息分解為包括已處理消息分量的已處理消息部分;以及根據(jù)哪些線程發(fā)起了引致所述已處理消息分量的源消息分量,將所述已處理消息分量選擇性地傳送給應(yīng)用的多個(gè)執(zhí)行線程中的選定線程。9.根據(jù)權(quán)利要求8所述的機(jī)器,其中所述加密管理邏輯可操作以用于通過從所述GPU的所述只寫紋理存儲(chǔ)器讀取所述已處理消息來接收所述已處理消息。10.根據(jù)權(quán)利要求8所述的機(jī)器,其中所述加密管理邏輯進(jìn)一步可操作以用于將所述已處理消息分解為包括線程標(biāo)識(shí)符和已處理消息分量的已處理消息部分;以及將所述已處理消息分量傳送至所述線程標(biāo)識(shí)符所標(biāo)識(shí)的多個(gè)執(zhí)行線程。11.根據(jù)權(quán)利要求8所述的機(jī)器,其中所述加密管理邏輯進(jìn)一步可操作以用于對于將向其傳送所述已處理消息分量的每個(gè)線程啟動(dòng)喚醒命令。12.—種制品,包括計(jì)算機(jī)可讀存儲(chǔ)器;以及加密管理邏輯,其存儲(chǔ)在所述存儲(chǔ)器中,并且可操作以用于從應(yīng)用的多個(gè)執(zhí)行線程獲得源消息分量;將所述源消息分量批處理到復(fù)合消息中;以及將所述復(fù)合消息傳送至圖形處理單元(GPU),以便由所述GPU上執(zhí)行的加密算法來進(jìn)行處理。13.根據(jù)權(quán)利要求12所述的制品,其中所述加密管理邏輯可操作以用于通過將所述復(fù)合消息寫入所述GPU的紋理存儲(chǔ)器來傳送所述復(fù)合消息。14.根據(jù)權(quán)利要求12所述的制品,其中所述加密管理邏輯可進(jìn)一步操作以用于通過將線程標(biāo)識(shí)符和消息長度添加到每個(gè)源消息分量,來構(gòu)造復(fù)合消息部分。15.根據(jù)權(quán)利要求14所述的制品,其中所述加密管理邏輯可操作以用于通過如下操作來批處理所述源消息分量將每個(gè)所述復(fù)合消息部分添加到所述復(fù)合消息中。16.根據(jù)權(quán)利要求12所述的制品,其中所述加密管理邏輯進(jìn)一步可操作以用于將所述源消息分量批處理到所述復(fù)合消息中,直到達(dá)到最大復(fù)合消息大小。17.根據(jù)權(quán)利要求12所述的制品,其中所述加密管理邏輯進(jìn)一步可操作以用于將所述源消息分量批處理到所述復(fù)合消息中,直到批處理定時(shí)器超時(shí),以及繼而將所述復(fù)合消息傳送到所述GPU。18.根據(jù)權(quán)利要求12所述的制品,其中所述加密管理邏輯響應(yīng)于API調(diào)用包裝器,所述API調(diào)用包裝器截獲所述多個(gè)執(zhí)行線程的消息加密功能調(diào)用,并將所述消息加密功能調(diào)用重定向到所述加密管理邏輯。19.一種制品,包括計(jì)算機(jī)可讀存儲(chǔ)器;以及加密管理邏輯,其存儲(chǔ)在所述存儲(chǔ)器中,并且可操作以用于從圖形處理單元(GPU)接收已由所述GPU上執(zhí)行的加密算法處理過的已處理消息;將所述已處理消息分解為包括已處理消息分量的已處理消息部分;以及根據(jù)哪些線程發(fā)起了引致所述已處理消息分量的源消息分量,將所述已處理消息分量選擇性地傳送至應(yīng)用的多個(gè)執(zhí)行線程中的選定線程。20.根據(jù)權(quán)利要求19所述的制品,其中所述加密管理邏輯可操作以用于通過從所述GPU的所述只寫紋理存儲(chǔ)器讀取所述已處理消息來接收所述已處理消息。21.根據(jù)權(quán)利要求19所述的制品,其中所述加密管理邏輯進(jìn)一步可操作以用于將所述已處理消息分解為包括線程標(biāo)識(shí)符和已處理消息分量的已處理消息部分;以及將所述已處理消息分量傳送到所述線程標(biāo)識(shí)符所標(biāo)識(shí)的所述多個(gè)執(zhí)行線程。22.根據(jù)權(quán)利要求19所述的制品,其中所述加密管理邏輯進(jìn)一步可操作以用于對于將向其傳送所述已處理消息分量的每個(gè)線程啟動(dòng)喚醒命令。全文摘要本發(fā)明涉及一種用于保障多線程服務(wù)器應(yīng)用的系統(tǒng),其解決了改進(jìn)應(yīng)用性能的需求。該系統(tǒng)實(shí)現(xiàn)了轉(zhuǎn)卸、批處理和調(diào)度機(jī)制,以便更為有效地執(zhí)行多線程應(yīng)用。該系統(tǒng)顯著降低了中央處理單元與圖形處理單元進(jìn)行協(xié)作的關(guān)聯(lián)開銷,其例如可以處理用于在中央處理單元上執(zhí)行的線程的密碼處理。文檔編號(hào)G06T1/20GK101739290SQ200910221859公開日2010年6月16日申請日期2009年11月18日優(yōu)先權(quán)日2008年11月19日發(fā)明者M(jìn)·格里查尼克,傅忱,謝晴申請人:埃森哲環(huán)球服務(wù)有限公司