用于便攜式設(shè)備中的同步任務(wù)分發(fā)的系統(tǒng)和方法
【專利摘要】便攜式計算設(shè)備同步地將任務(wù)從第一處理資源卸載到替代處理資源。卸載請求被集中化并被傳送至分發(fā)控制器。該請求規(guī)定替代處理資源和在共用或共享存儲器中的與期望從主處理資源轉(zhuǎn)移或分發(fā)到所標(biāo)識的替代處理資源的線程相關(guān)的條目的位置。分發(fā)控制器響應(yīng)于該請求來創(chuàng)建任務(wù)分發(fā)分組,其中該任務(wù)分發(fā)分組提供將先前在主處理資源上執(zhí)行的線程的上下文切換到該替代處理資源所需要的信息。利用共用或共享存儲器空間來提供期望的性能。一旦返回主處理資源,在共享存儲器空間中可獲得由該替代處理資源生成的結(jié)果。
【專利說明】
用于便攜式設(shè)備中的同步任務(wù)分發(fā)的系統(tǒng)和方法
【背景技術(shù)】
[0001]計算設(shè)備是普遍存在的。一些計算設(shè)備是便攜式的,例如智能電話、平板設(shè)備或膝上型計算機。除了這些設(shè)備的主要功能之外,許多設(shè)備包括支持外設(shè)功能的單元。例如,蜂窩電話可以包括:實現(xiàn)和支持蜂窩電話呼叫的主要功能,以及靜物照相機、攝像機、全球定位系統(tǒng)(GPS)導(dǎo)航、網(wǎng)頁瀏覽、發(fā)送和接收電子郵件、發(fā)送和接收文本消息、按鍵通話(push-to-talk)能力等的外設(shè)功能。隨著這些便攜式計算設(shè)備的功能增加,所需的計算或處理功率以及通常用于支持這種功能的數(shù)據(jù)存儲容量也增加。
[0002]用于手持的便攜式計算設(shè)備的一些傳統(tǒng)設(shè)計包括多個處理器和/或具有多個內(nèi)核的處理器以支持期望用于特定計算設(shè)備的各種主要功能和外設(shè)功能。這些設(shè)計通常將模擬、數(shù)字和射頻電路或功能單元集成在單個襯底上并且通常被稱為片上系統(tǒng)(SoC)。消費者想獲得其膝上型計算機、平板設(shè)備和智能電話的改善的電池壽命、大小和重量。用于將處理工作轉(zhuǎn)移至SoC內(nèi)的組件的能力是功率管理和用戶體驗兩者所考慮的。當(dāng)用戶需求不要求在SoC上可用的整個處理資源時,用于從某些資源移除功率的能力可以提供顯著的功率節(jié)省。用于將某些任務(wù)轉(zhuǎn)移到在處理所請求的任務(wù)上更有效的處理資源的能力可以既節(jié)省功率又提供性能增益。
[0003]然而,管理任務(wù)從一個處理資源向另一個處理資源的轉(zhuǎn)移的代價可能阻止了任務(wù)被完全卸載,這是因為可能沒有足夠的工作來彌補與管理該轉(zhuǎn)移相關(guān)聯(lián)的延遲。此外,可以僅在時間容許管理該轉(zhuǎn)移、完成任務(wù)并將結(jié)果返回給請求方時執(zhí)行這種轉(zhuǎn)移。也就是說,傳統(tǒng)計算模型中的這種轉(zhuǎn)移是被異步地管理的。盡管用戶模式排隊提供了用于顯著地減少與管理從一個處理資源向另一個處理資源的任務(wù)轉(zhuǎn)移相關(guān)聯(lián)的延遲的潛在解決方案,但是所提出的模型依賴于以下的前提:所有這些轉(zhuǎn)移是異步的。
[0004]因此,需要可應(yīng)用于要求除了異步解決方案之外的解決方案的情形的、用于管理處理資源之間的任務(wù)轉(zhuǎn)移的改進的機制。
【發(fā)明內(nèi)容】
[0005]公開了系統(tǒng)和方法的示例實施例,所述系統(tǒng)和方法將便攜式計算設(shè)備配置為將處理任務(wù)從第一處理資源同步地卸載到替代處理資源。任務(wù)卸載請求集中化來自主機或主處理資源(在一個示例布置中其是SoC的中央處理單元)。所公開的系統(tǒng)和方法使得諸如圖形處理單元或數(shù)字信號處理器之類的設(shè)備能夠保持自主。因此,允許這些元件保持與SoC的中央處理單元分離。
[0006]主機或主處理資源生成被傳送至分發(fā)控制器的任務(wù)卸載請求或請求。該請求規(guī)定替代處理資源和在共用或共享存儲器中的與期望從主處理資源轉(zhuǎn)移或分發(fā)到所標(biāo)識的替代處理資源的線程相關(guān)的條目的位置。存儲在共享存儲器中的條目或線程相關(guān)的條目可以包括代碼、數(shù)據(jù)、或代碼和數(shù)據(jù)兩者。分發(fā)控制器響應(yīng)于該請求來創(chuàng)建任務(wù)分發(fā)分組,其中該任務(wù)分發(fā)分組提供將先前在主處理資源上執(zhí)行的線程的上下文切換到該替代處理資源所需要的信息。利用共用或共享存儲器空間來提供期望的性能。在恢復(fù)線程的執(zhí)行之前,主機或主處理資源等待來自分發(fā)控制器的關(guān)于任務(wù)完成的指示。在返回主處理資源時,在共用或共享存儲器空間中可容易獲得在替代處理資源中執(zhí)行線程時所生成的結(jié)果。替代地,當(dāng)沒有進一步指令要被處理時,主處理資源向操作系統(tǒng)傳送關(guān)于線程完成的通知。
[0007]計算設(shè)備的示例實施例包括:主處理資源、輔助或替代處理資源,輔助或替代處理資源被配置為與設(shè)備執(zhí)行環(huán)境中的分發(fā)控制器通信。分發(fā)控制器同步地管理從主處理資源接收的功能調(diào)用。共用或共享器空間可被主處理資源和輔助處理資源兩者訪問。主處理資源和輔助處理資源被配置為根據(jù)信號/等待接口來生成相應(yīng)信號并對相應(yīng)信號進行響應(yīng)。
[0008]用于便攜式計算設(shè)備中的同步任務(wù)分發(fā)的方法的示例實施例包括以下步驟:將該便攜式計算設(shè)備配置為具有主處理資源、輔助處理資源和共享存儲器空間,其中共享存儲器空間可被主處理資源和輔助處理資源訪問;檢測任務(wù)卸載條件;掛起在主處理資源中執(zhí)行的線程的執(zhí)行;響應(yīng)于任務(wù)卸載條件,生成來自該便攜式計算設(shè)備的請求;以及向分發(fā)控制器傳送該請求,該請求標(biāo)識用于該線程的執(zhí)行的輔助處理資源。
[0009]計算設(shè)備的另一個示例實施例包括多個處理資源或用于處理線程的單元,用于處理線程的第一單元包括用于檢測便攜式計算設(shè)備上的任務(wù)卸載條件的機制。用于同步地分發(fā)該線程的機制或單元是響應(yīng)于任務(wù)卸載條件。用于執(zhí)行該線程的第二或替代處理單元是響應(yīng)于用于同步地分發(fā)該線程的單元。
[0010]另一個示例實施例是非暫時性處理器可讀介質(zhì),其具有存儲在其中的處理器指令和數(shù)據(jù),所述處理器指令和數(shù)據(jù)指導(dǎo)處理器執(zhí)行包括以下操作的各種功能:檢測任務(wù)卸載條件;掛起在主處理資源中執(zhí)行的線程的執(zhí)行;響應(yīng)于任務(wù)卸載條件來生成請求;以及向分發(fā)控制器傳送該請求,該請求標(biāo)識用于該線程的執(zhí)行的、與主處理資源不同的輔助處理資源。
【附圖說明】
[0011]在附圖中,除非另外指示,否則相似的附圖標(biāo)記貫穿各個視圖指代相似的部件。對于具有諸如“102A”或“102B”之類的字母字符標(biāo)號的附圖標(biāo)記,字母字符標(biāo)號可以區(qū)分在同一幅圖中存在的兩個相似部件或元件。當(dāng)意圖是附圖標(biāo)記涵蓋所有圖中具有相同附圖標(biāo)記的所有部件時,可以省略附圖標(biāo)記的字母字符標(biāo)號。
[0012]圖1是示出了被配置成SoC的計算設(shè)備的示例實施例的示意圖。
[0013]圖2是用于在圖1的SoC中對任務(wù)從主處理資源到輔助處理資源的分發(fā)進行同步地管理的子系統(tǒng)的示例實施例的示意圖。
[0014]圖3是示出了在圖1的SoC中對任務(wù)的分發(fā)進行管理的計算環(huán)境的示例實施例的示意圖。
[0015]圖4是示出了在圖1的SoC中對任務(wù)的分發(fā)進行管理的計算環(huán)境的另一個示例實施例的示意圖。
[0016]圖5是示出了在圖1的SoC中對任務(wù)的分發(fā)進行管理的計算環(huán)境的第三示例實施例的示意圖。
[0017]圖6是示出了用戶模式調(diào)度的任務(wù)與圖3中介紹的計算環(huán)境的示例實施例的示意圖。
[0018]圖7是示出了協(xié)調(diào)器管理的任務(wù)與圖4中介紹的計算環(huán)境的示意圖。
[0019]圖8是示出了使用寄存器集合來規(guī)定分發(fā)分組的示意圖。
[0020]圖9是用于SoC中的同步任務(wù)分發(fā)的方法的示例實施例的流程圖。
【具體實施方式】
[0021]本文使用詞語“示例性”來意指“充當(dāng)示例、實例或說明”。本文描述為“示例性”的任何方面不必被認(rèn)為比其它方面優(yōu)選或具優(yōu)勢。
[0022]在本說明書中,術(shù)語“應(yīng)用”也可以包括具有諸如以下各項之類的可執(zhí)行內(nèi)容的文件:目標(biāo)代碼、腳本、字節(jié)代碼、標(biāo)記語言文件、以及補丁。此外,本文提及的“應(yīng)用”也可以包括本質(zhì)上不可執(zhí)行的文件,諸如可能需要打開的文檔或需要存取的其它數(shù)據(jù)文件或數(shù)據(jù)值。
[0023]術(shù)語“內(nèi)容”也可以包括具有諸如以下各項之類的可執(zhí)行內(nèi)容的文件:目標(biāo)代碼、腳本、字節(jié)代碼、標(biāo)記語言文件、以及補丁。此外,本文提及的“內(nèi)容”也可以包括本質(zhì)上不可執(zhí)行的文件,諸如可能需要打開的文檔或需要存取的其它數(shù)據(jù)文件或數(shù)據(jù)值。
[0024]如在本說明書中所使用的,術(shù)語“組件”、“模塊”、“系統(tǒng)”等旨在指代計算機相關(guān)的實體,不是硬件、固件、硬件和軟件的組合、軟件就是執(zhí)行中的軟件。例如,組件可以是但不限于:在處理器上運行的過程、處理器、對象、可執(zhí)行程序、執(zhí)行線程、程序和/或計算機。通過說明的方式,在計算設(shè)備上運行的應(yīng)用和計算設(shè)備兩者可以是組件。一個或多個組件可以駐留在過程和/或執(zhí)行線程內(nèi),并且組件可以集中在一個計算機上和/或分布在兩個或多個計算機之間。此外,這些組件可以通過在其上存儲有各種數(shù)據(jù)結(jié)構(gòu)的各種計算機可讀介質(zhì)執(zhí)行。組件可以通過本地的和/或遠(yuǎn)程的過程的方式,例如根據(jù)具有一個或多個數(shù)據(jù)分組的信號(例如,來自與本地系統(tǒng)、分布式系統(tǒng)中另一個組件進行交互的一個組件的數(shù)據(jù),和/或通過信號的方式越過諸如互聯(lián)網(wǎng)之類的網(wǎng)絡(luò)與其它系統(tǒng)進行交互的一個組件的數(shù)據(jù))來進行通信。
[0025]在本說明書中,術(shù)語“便攜式計算設(shè)備”(“PCD”)用于描述在有限容量的可充電電源(例如,電池和/或電容器)上操作的任何設(shè)備。雖然具有可充電電源的PCD已經(jīng)使用了幾十年,但與第三代(“3G”)和第四代(“4G”)無線技術(shù)的出現(xiàn)伴隨發(fā)生的可充電電池的技術(shù)進步,實現(xiàn)了具有多種能力的眾多PCD。因此,PCD可以是蜂窩電話、衛(wèi)星電話、尋呼機、PDA#能電話、導(dǎo)航設(shè)備、智能本或閱讀器、媒體播放器、前述設(shè)備的組合、具有無線連接的膝上型計算機或平板計算機等等。
[0026]雖然具體參照PCD內(nèi)的操作來進行描述,但所描述的系統(tǒng)和方法可以適用于具有多個處理資源的任何計算設(shè)備,其中將任務(wù)從一個處理系統(tǒng)自主地和同步地卸載到替代處理系統(tǒng)可能是有用的。換句話說,本文所公開的計算系統(tǒng)和方法適用于臺式計算機、服務(wù)器計算機或具有多個處理資源的任何電子設(shè)備。
[0027]現(xiàn)在將參考指向所示示例。示出了SoC所支持的便攜式計算設(shè)備(PCD)的非限制性方面的示例實施例,并且通常將其標(biāo)記為1013P⑶100包括片上系統(tǒng)120,片上系統(tǒng)120包括多內(nèi)核CPU 210。多內(nèi)核CPU 210包括第O內(nèi)核215、第I或第一內(nèi)核216以及第N內(nèi)核217A個內(nèi)核中的每一個彼此獨立并且被配置為處理諸如添加、移動數(shù)據(jù)、分支等之類的指令。多內(nèi)核CPU 210執(zhí)行軟件,該軟件對如調(diào)度器214所指示的調(diào)度安排進行管理。替代地,多內(nèi)核CPU 210或SoC 120的另一部分被布置有硬件(S卩,電路)單元或一組硬件元件,該硬件元件或一組硬件元件被配置為實現(xiàn)任務(wù)調(diào)度器。
[0028]如圖1中所示出的,顯示控制器128和觸摸屏控制器130耦合到多內(nèi)核CPU210。轉(zhuǎn)而,在片上系統(tǒng)120外部的顯示器/觸摸屏132耦合到顯示控制器128和觸摸屏控制器130。視頻編碼器134(例如,逐行倒相(PAL)編碼器、順序傳送彩色與存儲(SECAM)編碼器或者國家電視系統(tǒng)委員會(NTSC)編碼器)耦合到多內(nèi)核CPU 210。此外,視頻放大器136耦合到視頻編碼器134和顯示器/觸摸屏132。此外,視頻端口 138耦合到視頻放大器136。如圖1中所描繪的,通用串行總線(USB)控制器140耦合到多內(nèi)核CPU 210。USB存儲設(shè)備142耦合到USB控制器140。系統(tǒng)存儲器230和用戶身份模塊(SM)卡接口 146還可以利用多內(nèi)核CPU210與系統(tǒng)存儲器230之間的連接219耦合到多內(nèi)核CPU 210,該連接219由用于在片上系統(tǒng)這些元件之間傳輸數(shù)據(jù)的兩個或更多個物理通道或通路構(gòu)成。此外,如圖1中所示出的,數(shù)碼照相機148可以耦合到多內(nèi)核CPU 210。在一個示例性方面中,數(shù)碼照相機148是電荷耦合器件(CCD)照相機或互補金屬氧化物半導(dǎo)體(CMOS)照相機。
[0029]如圖1中所示出的,立體聲音頻編解碼器150可以耦合到多內(nèi)核CPU210。此外,音頻放大器152可以耦合到立體聲音頻編解碼器150。在一個示例性方面中,第一立體聲揚聲器154和第二立體聲揚聲器156耦合到音頻放大器152。圖1示出了麥克風(fēng)放大器158還可以耦合到立體聲音頻編解碼器150。此外,麥克風(fēng)116可以耦合到麥克風(fēng)放大器158。在特定的方面中,頻率調(diào)制(FM)無線電調(diào)諧器162可以耦合到立體聲音頻編解碼器150。此外,F(xiàn)M天線164耦合到FM無線電調(diào)諧器162。此外,立體聲端口 166可以耦合到立體聲音頻編解碼器150。
[0030]圖1還指示:射頻(RF)收發(fā)機168耦合到多內(nèi)核CPU210 JF開關(guān)170可以耦合到RF收發(fā)機168和RF天線172。如圖1中所示出的,鍵盤174耦合到多內(nèi)核CPU 210。此外,具有麥克風(fēng)的單聲道耳機176可以耦合到多內(nèi)核CPU 210。此外,振動設(shè)備178可以耦合到多內(nèi)核CPU210。圖1還示出了電源180可以經(jīng)由USB控制器140耦合到片上系統(tǒng)120。在特定的方面中,電源180是直流(DC)電源,其將電力提供給PCD 100的需要電力的各個組件。此外,在特定的方面中,電源180是可充電DC電池或DC電源,其中該DC電源是從連接到AC電源(未示出)的交流(AC)至DC變壓器而得到的。
[0031]圖1還指示:P⑶100還可以包括網(wǎng)卡188,網(wǎng)卡188可以用于接入數(shù)據(jù)網(wǎng)絡(luò),例如,局域網(wǎng)、個域網(wǎng)、任何其它網(wǎng)絡(luò)。網(wǎng)卡188可以是藍(lán)牙網(wǎng)卡、WiFi網(wǎng)卡、個域網(wǎng)(PAN)卡、或本領(lǐng)域公知的任何其它網(wǎng)卡。此外,可以將網(wǎng)卡188并入集成電路。也就是說,網(wǎng)卡188可以是芯片中的完整解決方案,并且可以不是單獨的網(wǎng)卡188。
[0032]SoC 120還被布置有隨機存取存儲器(RAM)216、分發(fā)控制器(DC)212、數(shù)字信號處理器(DSP)220和圖形處理單元(GPU)225。在所示實施例中,將這些元件中的每一個表示成單個硬件元件或單元。然而,應(yīng)當(dāng)理解,與多內(nèi)核CPU 210—樣,RAM 216,DC 212,DSP 220和GPU 225可以包括電路組件的多個實例或副本,諸如針對特定任務(wù)所設(shè)計的算術(shù)邏輯單元或其它計算元件(例如,用于像素著色、幾何著色、向量處理的電路等),如可以期望的。此夕卜,應(yīng)當(dāng)理解,與這些元件中的任何元件(包括DC 212)相關(guān)聯(lián)的一個或多個功能的第一集合可以用硬件或硬件和固件的組合來實現(xiàn),而與各個元件相關(guān)聯(lián)的一個或多個功能的第二或剩余集合可以用軟件來實現(xiàn),其中軟件由適當(dāng)?shù)奶幚砥鱽韴?zhí)行以便執(zhí)行存儲在軟件中的指令。
[0033]如圖1所描繪的,顯示器/觸摸屏132、視頻端口 138、USB端口 142、照相機148、第一立體聲揚聲器154、第二立體聲揚聲器156、麥克風(fēng)116、FM天線164、立體聲端口 166、RF開關(guān)170、RF天線172、鍵盤174、單聲道耳機176、振動器178、電源180位于片上系統(tǒng)120外部。
[0034]RF收發(fā)機168(其可以包括一個或多個調(diào)制解調(diào)器)支持以下各項中的一項或多項:全球移動通信系統(tǒng)(“GSM” )、碼分多址(uCDMA")、寬帶碼分多址(“W-CDMA”)、時分同步碼分多址(“TDSCDMA”)、長期演進(“LTE”)以及LTE的變型(諸如但不限于,F(xiàn)DB/LTE和PDD/LTE無線協(xié)議)。
[0035]在所示實施例中,描繪了多內(nèi)核CPU210的單個實例。然而,應(yīng)當(dāng)理解,可以包括任意數(shù)量個類似地配置的多內(nèi)核CPU以支持與PCD 100相關(guān)聯(lián)的各種外圍設(shè)備和功能。替代地,可以將單個處理器或多個處理器(每個處理器均具有單個算術(shù)邏輯單元或內(nèi)核)部署在PCD 100或其它計算設(shè)備中,以支持與PCD 100相關(guān)聯(lián)的各種外圍設(shè)備和功能,如可期望的。
[0036]所示實施例示出了被布置在完全集成的片上系統(tǒng)120內(nèi)的系統(tǒng)存儲器230。然而,應(yīng)當(dāng)理解,可以在片上系統(tǒng)120外部布置具有M字節(jié)的相應(yīng)數(shù)據(jù)存儲容量的兩個或更多個供應(yīng)商提供的存儲器模塊。當(dāng)布置在片上系統(tǒng)120外部時,支持系統(tǒng)存儲器230的各個存儲器模塊通過修改的多通道存儲器總線(未示出)(其包括用于向存儲器模塊傳輸數(shù)據(jù)和電力的適當(dāng)電連接)的方式耦合到CPU 210。
[0037]在特定的方面中,本文所描述的方法步驟中的一個或多個可以經(jīng)由如存儲在系統(tǒng)存儲器230中的數(shù)據(jù)和處理器指令所支持的硬件元件的組合(例如,多內(nèi)核CPU 210,DSP220,GPU 225)來實現(xiàn),其中這些數(shù)據(jù)和處理器指令如所期望的由多內(nèi)核CPU 210中的一個或多個內(nèi)核或其它硬件元件獲取并被緩存在RAM 216、內(nèi)部高速緩存(未示出)、或多內(nèi)核CPU 210內(nèi)的各種寄存器(未示出)中。對CPU、DSP和GPU進行設(shè)計的所屬領(lǐng)域技術(shù)人員熟悉許多種用于管理和操作數(shù)據(jù)并處理指令以支持在PCD上執(zhí)行的各種應(yīng)用的技術(shù)。
[0038]圖2是示出用于在圖1中介紹的SoC120中對任務(wù)從主處理資源到輔助處理資源的分發(fā)進行同步地管理的子系統(tǒng)的示例實施例的示意圖。如所示出的,子系統(tǒng)200包括通過總線228耦合到主處理資源202和輔助處理資源的易失性和非易失性存儲器元件(例如RAM216和系統(tǒng)存儲器230)。主處理資源或主機202包括圖1中所介紹的多內(nèi)核CPU 210并且執(zhí)行諸如0/S 211之類的操作系統(tǒng)。如所公知的,0/S 211充當(dāng)在應(yīng)用或程序與P⑶100中的硬件之間的中間方。雖然應(yīng)用代碼由諸如CPU 210之類的硬件執(zhí)行,但應(yīng)用代碼將頻繁地與0/S211交互或者被0/S 211中斷,因為0/S 211管理P⑶資源并且為PCD 100上的其它應(yīng)用或程序提供公共的服務(wù)。
[0039]在默認(rèn)操作模式中,使用主處理資源202來執(zhí)行PCD100上的應(yīng)用或程序。在替代操作模式中,主處理資源202執(zhí)行運行時間(run-time)接口,該接口動態(tài)地確定用于將具有任務(wù)或線程形式的工作在主處理資源202與可用的輔助處理資源204中的一個或多個輔助處理資源之間進行劃分的最優(yōu)解決方案。替代地,每個程序或應(yīng)用可以這樣的方式來編譯:指導(dǎo)主處理資源202何時向輔助處理資源204轉(zhuǎn)發(fā)某些線程或任務(wù)。然而,這樣布置的話,主處理資源或主機202通過生成和轉(zhuǎn)發(fā)用于將任務(wù)卸載到輔助處理資源204的請求來對檢測到卸載條件進行響應(yīng),輔助處理資源204在所示示例中可以是DSP 220或GPU 225的一個或多個實例或副本。在其它布置中(未示出),可以使用現(xiàn)場可編程門陣列(FPGA)、算術(shù)邏輯單元(ALU)或其它設(shè)備來處理一些線程的部分。如圖2所指示的,將卸載請求間接地傳送給輔助處理資源204。第一通路或分支使用調(diào)度器214,而第二分支或通路使用分發(fā)控制器212,來與輔助處理資源204通信。
[0040]異步的分發(fā)請求由主處理資源202生成并被傳送給調(diào)度器214。調(diào)度器214包括協(xié)調(diào)器元件250,協(xié)調(diào)器元件250用于管理優(yōu)先級和一個或多個另外的輸入以確定何時向分發(fā)控制器212轉(zhuǎn)發(fā)請求。將同步的分發(fā)請求傳送給分發(fā)控制器212。無論是從調(diào)度器214間接地和異步地接收請求還是從主處理資源202直接地和同步地接收請求,分發(fā)控制器212生成分發(fā)分組,分發(fā)分組提供了用于在分發(fā)分組信息中所規(guī)定的輔助處理資源204執(zhí)行卸載的線程所需要的所有信息。利用RAM 216內(nèi)的共享虛擬存儲器空間240來向輔助處理資源204提供線程的上下文,并且一旦線程完成,該共享虛擬存儲器空間240可用于由主處理資源202進行的繼續(xù)處理。
[0041 ]響應(yīng)于主處理資源202所接收的一個或多個輸入信號和/或一個或多個內(nèi)部識別的條件(諸如在主處理資源202內(nèi)執(zhí)行的一個或多個應(yīng)用程序或操作系統(tǒng)內(nèi)生成的那些條件),生成任務(wù)卸載條件。當(dāng)任務(wù)卸載條件被主處理資源202識別時,任務(wù)卸載條件指導(dǎo)主處理資源202掛起期望轉(zhuǎn)移到輔助處理資源204的執(zhí)行線程并且生成低延遲(例如,近似Ins或更少)信號/等待指示符。示例信令構(gòu)造不需要包括數(shù)據(jù)并且可以包括一組指令,諸如sigresourcealloc_signal ()、signal (sigresource);以及wait(sigresource)。不例信令構(gòu)造被暴露給和/或擴展到PCD 100中的處理資源和用于支持處理資源的其它元件。
[0042]主處理資源202優(yōu)選地在生成并傳送用于將線程卸載到輔助處理資源204的請求之前掛起執(zhí)行線程。該掛起阻止線程在主處理資源202上重新開始,直到任務(wù)完成信號被返回給主處理資源202為止。主處理資源202所發(fā)出的請求類似于功能調(diào)用并且包括標(biāo)識要用于執(zhí)行線程的卸載部分的輔助處理資源204的特定實例和類型的信息。
[0043]對卸載線程的分發(fā)是間接的,因為主處理資源202經(jīng)由分發(fā)控制器212耦合到輔助處理資源204。雖然示出為單個元件,但是應(yīng)當(dāng)理解,分發(fā)控制器實例用于被從主處理資源202卸載或轉(zhuǎn)移到輔助處理資源204的每個線程。例如,如果多內(nèi)核CPU 210包括四個處理內(nèi)核并且處理內(nèi)核中的兩個處理內(nèi)核已單獨地識別了任務(wù)卸載條件,則分發(fā)控制器212的至少兩個實例將用于生成分發(fā)分組并向諸如DSP 220和GPU 225之類的單獨識別的輔助處理資源轉(zhuǎn)發(fā)各個分發(fā)分組。分發(fā)控制器212可以實現(xiàn)為硬件元件或以在主處理資源202或主機上執(zhí)行的軟件來實現(xiàn)。此外,分發(fā)控制器212可以利用以諸如加法器、寄存器以及其它設(shè)備之類的硬件元件實現(xiàn)的一些功能和由耦合到寄存器或其它存儲元件的處理資源以軟件實現(xiàn)的其它功能來實現(xiàn)。
[0044]分發(fā)分組提供無依賴性的控制。也就是說,提交至分發(fā)控制控制器212并由其轉(zhuǎn)發(fā)的一切東西是準(zhǔn)備好供執(zhí)行的。分發(fā)控制器212生成分發(fā)分組,該分發(fā)分組不僅標(biāo)識輔助處理資源204,而且向所標(biāo)識的輔助處理資源提供單個工作條目空間(例如,NDRange),該空間可以是一維、二維或三維的。例如,如果期望向960x640圖像中的每個像素應(yīng)用濾波器,則線程將標(biāo)識960x640個工作條目,每一工作條目向圖像中的像素應(yīng)用濾波器,即工作條目(X,y)向像素(x,y)應(yīng)用濾波器。在完成時,輔助處理資源204向發(fā)出分發(fā)分組的分發(fā)控制器212提供任務(wù)/線程完成信號。轉(zhuǎn)而,分發(fā)控制器212將同樣的指示轉(zhuǎn)發(fā)至主處理資源202。主處理資源202可以將同樣的內(nèi)容傳送給在多內(nèi)核CPU210的剩余內(nèi)核中的一個或多個內(nèi)核上執(zhí)行的0/S 211。如所布置的,分發(fā)控制器212保證分發(fā)請求被發(fā)給可用于執(zhí)行線程的輔助處理資源204并由輔助處理資源204來服務(wù)該請求。此外,分發(fā)控制器212可以保持請求的集合與分發(fā)分組之間的關(guān)系,其進一步規(guī)定特定線程與PCD 100上的處理資源之間的一對一關(guān)系。
[0045]如圖2中進一步所示出的,提供了全局協(xié)調(diào)器或調(diào)度器214以接收卸載請求并異步地生成至分發(fā)控制器212的分發(fā)命令。全局協(xié)調(diào)器或調(diào)度器214提供了用于對由主處理資源202卸載的任務(wù)進行調(diào)度的單元或機制。全局協(xié)調(diào)器或調(diào)度器適用于指導(dǎo)與在PCD 100上執(zhí)行的應(yīng)用相關(guān)聯(lián)的任務(wù)的完成。全局協(xié)調(diào)器214或調(diào)度器被布置有協(xié)調(diào)器250的一個或多個實例或副本,其中協(xié)調(diào)器250響應(yīng)于從主處理資源202接收的一個或多個請求來生成并發(fā)出分發(fā)命令。每個協(xié)調(diào)器250可以執(zhí)行或包括微調(diào)度器,該微調(diào)度器被配置為向分發(fā)控制器212發(fā)起分發(fā)命令。
[0046]在可選的或替代的布置中,DSP 220被布置有實時操作系統(tǒng)(RT0S)221以響應(yīng)于任務(wù)卸載條件來處理分發(fā)分組。RTOS 221以最小的緩存延遲對所接收的實時請求進行服務(wù)。調(diào)度器222為PCD 100內(nèi)的嵌入式系統(tǒng)提供了可預(yù)測的執(zhí)行模式。調(diào)度器222還提供了用于對由主處理資源202卸載的任務(wù)進行調(diào)度的替代單元或機制。RTOS 221在嚴(yán)格規(guī)定的時間或最后期限內(nèi)進行響應(yīng)。在該替代的布置中,DSP 220借助于分發(fā)控制器212的實例或副本向諸如GPU 225之類的其它處理資源發(fā)出用于卸載任務(wù)的請求。
[0047]如所描述的,用于處理線程的第一單元或機制包括主處理資源或主機202。用于處理線程的輔助或替代的單元或機制包括DSP 220,GPU 225、ALU(未示出)或其它電路或處理器中的一個或多個。用于同步地分發(fā)先前在主處理資源或主機202內(nèi)執(zhí)行的線程的單元或機制包括分發(fā)控制器212。用于處理線程的第一單元可以被布置為向分發(fā)控制器212直接傳送卸載請求或通過調(diào)度器214間接傳送卸載請求。對此,調(diào)度器214和在調(diào)度器214的指導(dǎo)下起作用的一個或多個協(xié)調(diào)器250提供了用于從用于處理線程的第一單元異步地接收請求的單元。調(diào)度器214也可以被認(rèn)為是用于在計算機環(huán)境中調(diào)度任務(wù)的執(zhí)行的全局協(xié)調(diào)器或單元或機制。如進一步所描述的,GPU 225提供了用于處理圖形命令的單元或機制。
[0048]圖3是示出了在圖1的SoC120中對任務(wù)或線程從主處理資源到輔助處理資源的分發(fā)進行管理的計算環(huán)境300的示例實施例的示意圖。計算環(huán)境300包括主處理資源或主機202、替代處理環(huán)境324和共享虛擬存儲器240。主處理資源202包括多個CPU、計算元件或內(nèi)核。在所示出的實施例中,主處理資源202包括0?1](0)320、0?1](1)321、0?1](2)322和0?1](3)323。然而,應(yīng)當(dāng)理解,可以在P⑶100內(nèi)的主機或主處理資源202中包括更少的計算元件、更多的計算元件或各種不同計算元件的混合。
[0049]處理環(huán)境324包括與主處理資源(S卩,0?1](0)320、0?1](1)321、0?1](2)322和0?1](3)323)具有一對一關(guān)系的一組分發(fā)控制器(S卩,0以0)330、00(1)331、0(:(2)332和0(:(3)333)。工作組調(diào)度器325從各個分發(fā)控制器接收一個或多個分發(fā)分組并且將其中所提供的信息轉(zhuǎn)發(fā)至所標(biāo)識的輔助處理資源204的執(zhí)行單元。在所示出的實施例中,輔助處理資源204被配置有執(zhí)行單元(0)340至執(zhí)行單元(N)348,其中N是整數(shù)。注意,執(zhí)行單元340-348可以是相似地布置的并且與單個DSP或GPU相關(guān)聯(lián),或者執(zhí)行單元可以是不同類型的特定于DSP^fDSP、GPU或數(shù)個GPU中的一個或兩者和/或這些元件的組合的執(zhí)行。整數(shù)N指示任何期望數(shù)量的執(zhí)行單元可以包括在輔助或替代處理資源204中。
[0050]在所示出的實施例中,輔助處理資源204的執(zhí)行單元340-348是DSP 220和GPU 225的子元件。然而,輔助處理資源204并不限于如此。執(zhí)行單元可以是諸如專用集成電路(ASIC)或甚至跨SoC 120分布的獨立的算術(shù)邏輯單元之類的其它器件之類的子元件。
[0051]如圖3中進一步所示出的,通過計算環(huán)境300的總體處理流由具有封閉在圓圈內(nèi)的序列標(biāo)識符的箭頭來指示。例如,CPU(2)322響應(yīng)于所檢測到的卸載條件來生成請求(由箭頭I所描繪的),該請求被傳送至分發(fā)控制器DC(2)332。作為響應(yīng),DC(2)332生成分發(fā)分組(由箭頭2所描繪的),該分發(fā)分組被轉(zhuǎn)發(fā)至工作組調(diào)度器325。轉(zhuǎn)而,工作組調(diào)度器325將分發(fā)分組中所包括的信息轉(zhuǎn)發(fā)至該分發(fā)分組中所標(biāo)識的執(zhí)行單元,如由箭頭3所示出的。如在分發(fā)分組中還標(biāo)識的,執(zhí)行單元(0)340被指導(dǎo)為使用在共享虛擬存儲器240的規(guī)定的范圍245中所存儲的信息。虛擬存儲器240的該規(guī)定的范圍245包括所卸載或分發(fā)的線程的上下文。在完成規(guī)定的工作(如在分發(fā)分組中還規(guī)定的)時,執(zhí)行單元(O) 340在共享虛擬存儲器240的該規(guī)定的范圍245中留下修改版本的信息以用于由主處理資源202進行的另外的處理。此外,執(zhí)行單元(0)340向工作調(diào)度器325發(fā)送關(guān)于線程或任務(wù)已完成的指示,如由箭頭4所指示的。工作組調(diào)度器325記錄任務(wù)/線程完成并將相同的指示發(fā)送至分發(fā)控制器DC(2)322,如由箭頭5所指示的。轉(zhuǎn)而,如由箭頭6所示出的,DC(2)322向CPU(2)322轉(zhuǎn)發(fā)關(guān)于任務(wù)/線程已完成的指示。主或主機處理資源202等待來自分發(fā)控制器的任務(wù)完成信號,并且在接收到任務(wù)完成信號時,就恢復(fù)對所掛起的線程的執(zhí)行。
[0052]圖6是示出了用戶模式調(diào)度的任務(wù)與圖3中介紹的計算環(huán)境300的示例實施例的示意圖。如圖6的計算環(huán)境300’中所示出的,請求375(其用于將從CPU(2)322傳送的線程卸載至|JDC(2)332)呈現(xiàn)為功能調(diào)用,其包括規(guī)定的應(yīng)用二進制接口(ABI)和被傳遞至規(guī)定的分發(fā)控制器(即,DC(2)332)的自變量。在所示出的用戶模式調(diào)度的任務(wù)中,請求375(其在圖3中用箭頭I描繪)被箭頭I和箭頭2替代。其后的處理序列與圖3中通過處理環(huán)境324相同,其中DC(2)332與工作組調(diào)度器325交互并且工作組調(diào)度器325還指導(dǎo)執(zhí)行單元(0)340。類似地,除了來自DC(2)332的任務(wù)或線程完成指示由箭頭7和箭頭8描繪之外,以與圖3中相同的方式來以信號形式發(fā)送任務(wù)完成,其中箭頭7和箭頭8—起指示來自DC(2)332的任務(wù)完成信號終止請求375中所表示的功能調(diào)用的“While邏輯部分”,該終止向CPU(2)322通知所卸載的任務(wù)/線程已完成。如簡要描述的,CPU(2)322可以使用如由執(zhí)行單元(0)340所修改的、共享虛擬存儲器240的該規(guī)定的范圍245中的信息來繼續(xù)執(zhí)行線程。
[0053]圖4是示出了在圖1的SoC120中對任務(wù)或線程的分發(fā)進行管理的計算環(huán)境400的另一個示例實施例的示意圖。計算環(huán)境400包括主處理資源或主機202、替代處理環(huán)境420和共享虛擬存儲器240。主處理資源202包括多個CPU、計算元件或內(nèi)核。在所示出的實施例中,主處理資源202包括0?1](0)320、0?1](1)321、0?1](2)322和0?1](3)323。然而,應(yīng)當(dāng)理解,可以在PCD 100內(nèi)的主機或主處理資源202中包括更少的計算元件、更多的計算元件或各種不同計算元件的混合。
[0054]處理環(huán)境420包括一組分發(fā)控制器(S卩,DC(0)430、DC(1)431、DC(2)432、DC(3)433和0以4)434)。因此,主處理資源202的0?1]不再與分發(fā)控制器(8卩,0(:(0)430、00(1)431、0〇(2)432和DC(4)433)具有一對一關(guān)系。工作組調(diào)度器325從各個分發(fā)控制器接收一個或多個分發(fā)分組并且將其中所提供的信息轉(zhuǎn)發(fā)至所標(biāo)識的輔助處理資源204的執(zhí)行單元。在所示出的實施例中,輔助處理資源204被配置有執(zhí)行單元(0)340至執(zhí)行單元(N)348,其中N是整數(shù)。注意,執(zhí)行單元340-348可以是相似地布置的并且與單個DSP或GPU相關(guān)聯(lián),或者執(zhí)行單元可以是不同類型的特定于DSP、數(shù)個DSP、GPU或數(shù)個GPU中的一個或兩者和/或這些元件的組合的執(zhí)行。整數(shù)N指示任何期望數(shù)量的執(zhí)行單元可以包括在輔助或替代處理資源204中。
[0055]在圖4中所示出的計算環(huán)境400中,調(diào)度器410從主處理資源202異步地接收卸載請求。調(diào)度器410包括諸如協(xié)調(diào)器(0)412和協(xié)調(diào)器(M)418之類的協(xié)調(diào)器的多個實例或副本。協(xié)調(diào)器412-418(其可以用硬件和/或軟件來實現(xiàn))向分發(fā)控制器(S卩,DC(0)430、DC(1)431、DC
(2)432和DC(4)433)的一個或多個實例或副本同步地卸載線程請求。因此,在該布置中,分發(fā)控制器與協(xié)調(diào)器具有一對一的關(guān)系。
[0056]如圖4中進一步所示出的,通過計算環(huán)境300的總體處理流由具有封閉在圓圈內(nèi)的序列標(biāo)識符的箭頭來指示。例如,CPU(1)321響應(yīng)于所檢測到的卸載條件來生成請求(由箭頭I所描繪的),該請求被傳送至調(diào)度器410。調(diào)度器410響應(yīng)于P⑶100上的當(dāng)前條件和一個或多個執(zhí)行算法將卸載請求轉(zhuǎn)發(fā)至協(xié)調(diào)器(M)418,協(xié)調(diào)器(M)418轉(zhuǎn)而(如由箭頭2所示出的)向分發(fā)控制器DC(4)434傳送該卸載請求。作為響應(yīng),DC(4)434生成卸載分組(由箭頭3所描繪的),該分發(fā)分組被轉(zhuǎn)發(fā)至工作組調(diào)度器325。轉(zhuǎn)而,工作組調(diào)度器325將分發(fā)分組中所包括的信息轉(zhuǎn)發(fā)至該分發(fā)分組中所標(biāo)識的執(zhí)行單元,如由箭頭4所示出的。如在分發(fā)分組中所標(biāo)識的,執(zhí)行單元(N)348被指導(dǎo)為使用在共享虛擬存儲器240的規(guī)定的范圍445中所存儲的信息。虛擬存儲器240的該規(guī)定的范圍445包括所卸載或分發(fā)的線程的上下文。在完成了規(guī)定的工作(如在分發(fā)分組中還規(guī)定的)時,執(zhí)行單元(M) 348在共享虛擬存儲器240的規(guī)定的范圍445中留下修改版本的信息以用于由主處理資源202進行的另外的處理。此外,執(zhí)行單元(M)348向工作調(diào)度器325發(fā)送關(guān)于線程或任務(wù)已完成的指示,如由箭頭5所指示的。工作組調(diào)度器325記錄任務(wù)/線程完成并將相同的指示發(fā)送至分發(fā)控制器DC(4)434,如由箭頭6所指示的。轉(zhuǎn)而,如由箭頭7所示出的,DC(4)434向CPU(1)321轉(zhuǎn)發(fā)線程/任務(wù)完成的指示。
[0057]協(xié)調(diào)器412-418對于處理環(huán)境來說是全局的并且可以與如可能被期望的將任務(wù)或線程從主處理資源卸載到第二或替代處理資源的分發(fā)控制器430-434通信。協(xié)調(diào)器412-418可以由諸如調(diào)度器410之類的微調(diào)度器直接執(zhí)行以及可以經(jīng)由一個或多個特定于域的語言而暴露給開發(fā)者和編程者。協(xié)調(diào)器412-418在與所描述的CPU 320-323—起被部署時提供了用于在PCD 100內(nèi)構(gòu)建和管理兩級或?qū)拥恼{(diào)度的能力。
[0058]圖7是示出了用戶模式調(diào)度的協(xié)調(diào)器實現(xiàn)的任務(wù)與圖4中介紹的計算環(huán)境400的示意圖。除了圖4中所示出的元件之外,計算環(huán)境400’,更具體地說替代處理環(huán)境720包括RTOS349,其中RTOS 349經(jīng)由連接405與調(diào)度器410通信。連接405是雙向通信路徑,其使得RTOS349和調(diào)度器410能夠可控制地執(zhí)行卸載的任務(wù)或線程。如圖7中的計算環(huán)境400’所示出的,協(xié)調(diào)器請求475(其用于將從CPU(1)321傳送的線程卸載到DC(4)434)呈現(xiàn)為功能調(diào)用,其包括規(guī)定的應(yīng)用二進制接口(ABI)和被傳遞至規(guī)定的分發(fā)控制器(S卩,DC(4)434)的自變量。在所示出的用戶模式調(diào)度的協(xié)調(diào)器實現(xiàn)的任務(wù)中,協(xié)調(diào)器請求475(其在圖3中用箭頭2描繪)被箭頭2和箭頭3替代。其后的處理序列與圖4中所示出的相同,其中DC(4)434與工作組調(diào)度器325交互并且工作組調(diào)度器325還指導(dǎo)執(zhí)行單元(N)348。類似地,除了來自DC(4)434的任務(wù)或線程完成指示由箭頭9和箭頭10描繪之外,以與圖4中相同的方式來以信號形式發(fā)送任務(wù)或線程完成,其中箭頭9和箭頭1—起指不來自DC(4)434的任務(wù)完成彳目號終止協(xié)調(diào)器請求475中所表示的功能調(diào)用的“While邏輯部分”,該終止向CPU(1)321通知所卸載的任務(wù)/線程已完成。其后,CPU(1)321可以使用如由執(zhí)行單元(M)348所修改的、共享虛擬存儲器240的該規(guī)定的范圍245中的信息來繼續(xù)執(zhí)行線程和/或以信號形式向0/S發(fā)送線程已完成。
[0059]圖5是示出了在圖1的SoC120中對任務(wù)或線程的分發(fā)進行管理的計算環(huán)境500的第三示例實施例的示意圖。在該布置中,處理環(huán)境520被配置有特定于圖形處理單元的控制器534以代替DC(X)的實例。這種布置允許工作組調(diào)度器325利用非圖形類型線程來獨立地或同時地處理圖形命令。此外,這種布置允許工作組調(diào)度器325使一種類型的線程(例如,圖形線程)比其它線程優(yōu)先級高。注意,雖然示出了一個特定于圖形處理單元的控制器534,但是處理環(huán)境520不限于此并且可以包括任何期望數(shù)量的特定于圖形處理單元的控制器。
[0060]如在其它示出的實施例中,特定于圖形處理單元的控制器534的每個實例或副本可用于從主處理資源202接收用于卸載任務(wù)或線程的請求。由主處理資源202響應(yīng)于一個或多個信號或條件來發(fā)出或以信號形式發(fā)送該請求。特定于圖形處理單元的控制器534執(zhí)行能夠發(fā)起響應(yīng)于該請求的分發(fā)命令的調(diào)度器(未示出)。
[0061]如圖5中進一步所指示的,通過計算環(huán)境500的總體處理流由具有封閉在圓圈內(nèi)的序列標(biāo)識符的箭頭來指示。例如,CPU(3)323響應(yīng)于所檢測到的卸載條件來生成請求(由箭頭I所描繪的),該請求被傳送至特定于圖形處理單元的控制器534。作為響應(yīng),特定于圖形處理單元的控制器534生成分發(fā)分組(由箭頭2所描繪的),該分發(fā)分組被轉(zhuǎn)發(fā)至工作組調(diào)度器325。轉(zhuǎn)而,工作組調(diào)度器325將分發(fā)分組中所包括的信息轉(zhuǎn)發(fā)至該分發(fā)分組中所標(biāo)識的執(zhí)行單元,如由箭頭3所示出的。如在分發(fā)分組中還標(biāo)識的,執(zhí)行單元(0)540被指導(dǎo)為使用在共享虛擬存儲器240的規(guī)定的范圍545中所存儲的信息。虛擬存儲器240的該規(guī)定的范圍545包括所卸載或分發(fā)的線程的上下文。在完成了規(guī)定的工作(如在分發(fā)分組中還規(guī)定的)時,執(zhí)行單元(0)540在共享虛擬存儲器240的該規(guī)定的范圍545中留下修改版本的信息以用于由主處理資源202進行的另外的處理。此外,執(zhí)行單元(0)540向工作調(diào)度器325發(fā)送關(guān)于線程或任務(wù)已完成的指示,如由箭頭4所指示的。工作組調(diào)度器325記錄任務(wù)/線程完成并將相同的指示發(fā)送至特定于圖形處理單元的控制器534,如由箭頭5所指示的。轉(zhuǎn)而,如由箭頭6所示出的,特定于圖形處理單元的控制器534向CPU(3)323轉(zhuǎn)發(fā)關(guān)于任務(wù)/線程已完成的指示。如所描述的,特定于圖形處理單元的控制器提供了用于調(diào)度由GPU 225進行的圖形命令處理的單元或機制。
[0062]圖8是示出了使用寄存器集合來規(guī)定分發(fā)分組的示意圖。分發(fā)分組規(guī)定了用于與輔助處理資源通信的應(yīng)用二進制接口(ABI)800。如圖8中所指示的,ABI 800是以特定方式布置的寄存器集合。例如,ABI可以包括具有期望數(shù)量的寄存器的集合。也就是說,ABI可以由用于存儲輔助處理資源所使用的信息的整數(shù)數(shù)量個寄存器來規(guī)定。例如,寄存器801包括內(nèi)核地址。寄存器802包括用于標(biāo)識工作空間的維數(shù)的2個比特、多個保留比特以及工作空間的X維的大小。寄存器803包括標(biāo)識工作空間的y維和z維的大小的比特。寄存器804標(biāo)識用于X維和7維的工作組大小。寄存器805標(biāo)識用于z維的工作大小以及工作組分段大小。寄存器806包括完成值地址,而寄存器807和寄存器808規(guī)定可以被傳送至輔助處理資源的各個自變量。有可能的是,可以使用替代的寄存器來優(yōu)化自變量傳輸并且可以實現(xiàn)各種編碼技術(shù)和/或處理規(guī)則以阻止至分發(fā)控制器212的調(diào)用。
[0063]圖9是用于SoC120中的同步任務(wù)分發(fā)的方法900的示例實施例的流程圖。如所示出的,方法900開始于框902,其中在框902中,便攜式計算設(shè)備100被配置有主處理資源和輔助處理資源,主處理資源和輔助處理資源共享存儲器空間240。在框904中,主處理資源202或布置在PCD 100上的其它檢測器或傳感器檢測卸載條件。響應(yīng)于卸載條件,掛起在主處理資源202中執(zhí)行的線程,如在框906中所指示的。主處理資源202響應(yīng)于卸載條件和/或確認(rèn)對執(zhí)行線程的掛起來生成請求,如在框908中所指示的。如在框910中進一步所示出的,將請求傳送至分發(fā)控制器212。將請求傳送至分發(fā)控制器212的步驟包括傳送可被主處理資源202和輔助處理資源204訪問的共享存儲器空間(S卩,SVM 240)中的至少一個位置,其中與線程相關(guān)聯(lián)的信息正存儲于此。如所描述的,該請求標(biāo)識適用于繼續(xù)執(zhí)行先前掛起的線程的輔助處理資源。如還描述的,利用共享存儲器空間,以使得輔助或替代處理資源可以容易使用與所掛起的線程相關(guān)聯(lián)的上下文信息,并且當(dāng)要求或期望由主處理資源進行的進一步處理時,可以在完成之時簡單地傳遞回到主處理資源。
[0064]當(dāng)所卸載的線程或任務(wù)仍然在進行處理時,如標(biāo)記的箭頭所指示的,“否”退出判決框912,并且在完成等待命令時,退出框914,重復(fù)查詢。否則,如在框916中所指示的,使用分發(fā)控制器212以指示主處理資源:任務(wù)或線程完成。其后,如在框918中所指示的,主處理資源202恢復(fù)線程,并且如所期望的重復(fù)框904至918的功能。
[0065]如所示出和描述的,主處理資源或主機202提供了用于處理線程的機制。線程是可以由Ο/S或控制器獨立地管理的最小的指令序列。如進一步所描述的,一個或多個分發(fā)控制器212或一個或多個特定于圖形處理的控制器334提供了用于同步地卸載或分發(fā)標(biāo)識的線程(如在從主處理資源202發(fā)出或傳送的請求中所指示的)的機制。如還示出和描述的,諸如DSP、GPU、FPGA、ALU等之類的輔助或替代處理資源提供了用于執(zhí)行如分發(fā)分組所指導(dǎo)的卸載線程的機制。
[0066]如所描述的,一個或多個非暫時性處理器或計算機可讀介質(zhì)或媒體可以具有存儲在其上的處理器指令,所述處理器指令在被執(zhí)行時指導(dǎo)處理器執(zhí)行以下操作的期望功能:檢測任務(wù)卸載條件;掛起在主處理資源中執(zhí)行的線程的執(zhí)行;響應(yīng)于任務(wù)卸載條件來生成請求;向分發(fā)控制器傳送該請求,該請求標(biāo)識用于線程的執(zhí)行的、與主處理資源不同的輔助處理資源。向分發(fā)控制器傳送該請求的功能可以包括:規(guī)定應(yīng)用二進制接口,該應(yīng)用二進制接口指導(dǎo)輔助處理資源在何處定位當(dāng)前存儲在共享存儲器空間中的、與線程相關(guān)的條目。
[0067]在本說明書中描述的過程或過程流中的某些步驟自然地先于其它步驟,以使本發(fā)明如所描述的運作。但是,本發(fā)明的系統(tǒng)和方法不限于所描述的步驟的次序,如果這樣的次序或順序不改變上述系統(tǒng)和方法的功能的話。也就是說,認(rèn)識到的是,一些步驟可以在其它步驟之前、之后或與其它步驟并行地(基本上同時地)執(zhí)行。在一些實例中,可以在不脫離上述系統(tǒng)和方法的情況下省略或不執(zhí)行某些步驟。此外,諸如“其后”、“然后”、“接下來”、“隨后”等之類的詞語不旨在限制步驟的次序。這些詞語僅用于引導(dǎo)讀者完成示例性方法的描述。
[0068]另外,編程領(lǐng)域的普通技術(shù)人員能夠基于例如在本說明書中的流程圖和相關(guān)聯(lián)的示例,在沒有困難的情況下編寫計算機代碼或識別適當(dāng)?shù)挠布?或電路以實現(xiàn)所公開的元件或功能。因此,對程序代碼指令的特定集合或詳細(xì)的硬件設(shè)備的公開不被認(rèn)為是獲得對如何實現(xiàn)以及使用本發(fā)明的系統(tǒng)和方法的足夠的理解所必須的。在上文描述中并且結(jié)合附圖更加詳細(xì)地解釋了所要求保護的處理器實現(xiàn)的過程的功能,所述附圖可以說明各個過程流。
[0069]在如上文所指示的一個或多個示例性的方面中,所描述的功能可以用硬件、軟件、固件或其任意組合來實現(xiàn)。如果用軟件來實現(xiàn),則所述功能可以作為一個或多個指令或代碼存儲在計算機可讀介質(zhì)(例如,非暫時性處理器可讀介質(zhì))上。計算機可讀介質(zhì)包括數(shù)據(jù)存儲介質(zhì)。
[0070]存儲介質(zhì)可以是可由計算機或處理器存取的任何可用介質(zhì)。通過舉例而非限制性的方式,這種計算機可讀介質(zhì)可以包括RAM、R0M、EEPR0M、閃存、CD-ROM或其它光盤存儲、磁盤存儲或其它磁存儲設(shè)備,或者可用于攜帶或存儲具有指令或數(shù)據(jù)結(jié)構(gòu)形式的期望的程序代碼并且可以由計算機存取的任何其它介質(zhì)。如本文所使用的,磁盤和光盤包括壓縮光盤(“CD” )、激光光盤、光盤、數(shù)字多功能光盤(“DVD”)、軟盤和藍(lán)光光盤,其中磁盤通常磁性地復(fù)制數(shù)據(jù),而光盤則利用激光來光學(xué)地復(fù)制數(shù)據(jù)。上述的組合也應(yīng)當(dāng)被包括在非暫時性計算機可讀介質(zhì)的范圍內(nèi)。
[0071]因此,雖然詳細(xì)地說明和描述了所選擇的方面,但是將理解的是,如下面的權(quán)利要求書所限定的,可以在不脫離本發(fā)明的系統(tǒng)和方法的情況下在本文中做出各種替代和改變。
【主權(quán)項】
1.一種計算設(shè)備,包括: 主處理資源; 輔助處理資源,其被配置為與設(shè)備執(zhí)行環(huán)境中的分發(fā)控制器通信,所述分發(fā)控制器被配置為同步地管理來自所述主處理資源的功能調(diào)用;以及 共享存儲器空間,其耦合至所述主處理資源和所述輔助處理資源并能夠被所述主處理資源和所述輔助處理資源訪問,其中,所述主處理資源和所述輔助處理資源被配置為生成信號/等待接口并對所述信號/等待接口進行響應(yīng)。2.根據(jù)權(quán)利要求1所述的計算設(shè)備,其中,所述主處理資源響應(yīng)于任務(wù)卸載條件來生成用于規(guī)定所述輔助處理資源的請求。3.根據(jù)權(quán)利要求2所述的計算設(shè)備,其中,所述主處理資源在生成所述請求之前掛起線程的執(zhí)行。4.根據(jù)權(quán)利要求3所述的計算設(shè)備,其中,所述主處理資源等待來自所述分發(fā)控制器的任務(wù)完成信號,并且在接收到所述任務(wù)完成信號時,所述主處理資源恢復(fù)所述線程的執(zhí)行。5.根據(jù)權(quán)利要求4所述的計算設(shè)備,其中,所述請求指導(dǎo)所述分發(fā)控制器提供使得所述輔助處理資源能夠執(zhí)行所述線程的信息。6.根據(jù)權(quán)利要求4所述的計算設(shè)備,其中,來自所述分發(fā)控制器的所述任務(wù)完成信號被傳送到操作系統(tǒng)。7.根據(jù)權(quán)利要求1所述的計算設(shè)備,還包括: 全局協(xié)調(diào)器,其耦合到所述主處理資源,并且被配置為接收請求和響應(yīng)于任務(wù)卸載條件來異步地生成規(guī)定所述輔助處理資源的分發(fā)命令。8.根據(jù)權(quán)利要求7所述的計算設(shè)備,其中,所述全局協(xié)調(diào)器執(zhí)行能夠響應(yīng)于所述請求來發(fā)起所述分發(fā)命令的微調(diào)度器。9.根據(jù)權(quán)利要求1所述的計算設(shè)備,還包括: 特定于圖形處理單元的控制器,其耦合到所述主處理資源,并且被配置為異步地接收響應(yīng)于任務(wù)卸載條件的請求。10.根據(jù)權(quán)利要求9所述的計算設(shè)備,其中,所述特定于圖形處理單元的控制器執(zhí)行能夠響應(yīng)于所述請求來發(fā)起分發(fā)命令的調(diào)度器。11.根據(jù)權(quán)利要求1所述的計算設(shè)備,還包括: 數(shù)字信號處理器,其配置有實時操作系統(tǒng),以異步地接收響應(yīng)于任務(wù)卸載條件的請求。12.根據(jù)權(quán)利要求1所述的計算設(shè)備,其中,所述分發(fā)控制器是硬件元件。13.根據(jù)權(quán)利要求1所述的計算設(shè)備,其中,所述分發(fā)控制器是用軟件來實現(xiàn)的。14.根據(jù)權(quán)利要求1所述的計算設(shè)備,其中,所述分發(fā)控制器的一個或多個功能的第一集合是用硬件元件來實現(xiàn)的,并且所述分發(fā)控制器的剩余功能是用軟件來實現(xiàn)的。15.—種用于便攜式計算設(shè)備中的同步任務(wù)分發(fā)的方法,包括: 將所述便攜式計算設(shè)備配置為具有主處理資源、輔助處理資源和共享存儲器空間,其中所述共享存儲器空間是所述主處理資源和所述輔助處理資源可訪問的; 檢測任務(wù)卸載條件; 掛起在所述主處理資源中執(zhí)行的線程的執(zhí)行; 響應(yīng)于所述任務(wù)卸載條件,生成來自所述便攜式計算設(shè)備的請求; 向分發(fā)控制器傳送所述請求,所述請求標(biāo)識用于所述線程的執(zhí)行的所述輔助處理資源。16.根據(jù)權(quán)利要求15所述的方法,其中,所述主處理資源和所述輔助處理資源被配置為生成信號/等待接口并對所述信號/等待接口進行響應(yīng)。17.根據(jù)權(quán)利要求15所述的方法,其中,所述主處理資源等待來自所述分發(fā)控制器的任務(wù)完成信號,并且在接收到所述任務(wù)完成信號時,所述主處理資源恢復(fù)所述線程的執(zhí)行。18.根據(jù)權(quán)利要求15所述的方法,其中,在以信號形式向操作系統(tǒng)發(fā)送所述線程完成了之前,所述主處理資源等待來自所述分發(fā)控制器的任務(wù)完成信號。19.根據(jù)權(quán)利要求15所述的方法,其中,向所述分發(fā)控制器傳送所述請求包括:傳送所述主處理資源和所述輔助處理資源可訪問的所述共享存儲器空間中的至少一個位置,其中與所述線程相關(guān)聯(lián)的信息目前存儲在所述至少一個位置。20.根據(jù)權(quán)利要求15所述的方法,其中,向所述分發(fā)控制器傳送所述請求包括:使用特定于圖形處理單元的控制器,所述特定于圖形處理單元的控制器耦合到所述主處理資源并且被配置為異步地接收響應(yīng)于任務(wù)卸載條件的所述請求。21.根據(jù)權(quán)利要求20所述的方法,其中,所述特定于圖形處理單元的控制器執(zhí)行能夠發(fā)起針對于所述輔助處理資源的分發(fā)命令的調(diào)度器。22.根據(jù)權(quán)利要求15所述的方法,其中,向所述分發(fā)控制器傳送所述請求包括:使用被配置有實時操作系統(tǒng)的數(shù)字信號處理器來異步地接收響應(yīng)于所述任務(wù)卸載條件的、來自所述主處理資源的所述請求。23.—種計算設(shè)備,包括: 用于處理線程的第一單元,所述第一單元包括用于檢測任務(wù)卸載條件的機制; 用于響應(yīng)于所述任務(wù)卸載條件來同步地分發(fā)所述線程的單元;以及 用于響應(yīng)于所述用于同步地分發(fā)所述線程的單元來處理所述線程的第二單元。24.根據(jù)權(quán)利要求23所述的計算設(shè)備,其中,用于處理所述線程的所述第一單元向用于同步地分發(fā)所述線程的所述單元標(biāo)識用于處理所述線程的所述第二單元。25.根據(jù)權(quán)利要求24所述的計算設(shè)備,其中,用于處理所述線程的所述第一單元在向用于同步地分發(fā)所述線程的所述單元傳送請求之前掛起所述線程的執(zhí)行。26.根據(jù)權(quán)利要求24所述的計算設(shè)備,其中,用于處理所述線程的所述第一單元在恢復(fù)所述線程的執(zhí)行之前等待來自用于同步地分發(fā)所述線程的所述單元的任務(wù)完成信號。27.根據(jù)權(quán)利要求26所述的計算設(shè)備,其中,用于處理所述線程的所述第一單元向操作系統(tǒng)轉(zhuǎn)發(fā)關(guān)于收到所述任務(wù)完成信號的指示。28.一種非暫時性處理器可讀介質(zhì),其具有存儲在其上的處理器指令,所述處理器指令在被執(zhí)行時指導(dǎo)所述處理器執(zhí)行包括以下各項的功能: 檢測任務(wù)卸載條件; 掛起在主處理資源中執(zhí)行的線程的執(zhí)行; 響應(yīng)于所述任務(wù)卸載條件來生成請求; 向分發(fā)控制器傳送所述請求,所述請求標(biāo)識用于所述線程的執(zhí)行的、與所述主處理資源不同的輔助處理資源。29.根據(jù)權(quán)利要求28所述的非暫時性處理器可讀介質(zhì),其中,向所述分發(fā)控制器傳送所述請求包括:規(guī)定應(yīng)用二進制接口,所述應(yīng)用二進制接口指導(dǎo)所述輔助處理資源在何處定位共享存儲器空間中的與線程相關(guān)的條目。30.根據(jù)權(quán)利要求29所述的非暫時性處理器可讀介質(zhì),其中,所述應(yīng)用二進制接口包括具有N個寄存器的集合,其中N是整數(shù)。
【文檔編號】G06F9/54GK105917311SQ201580005016
【公開日】2016年8月31日
【申請日】2015年1月21日
【發(fā)明人】B·R·加斯特
【申請人】高通股份有限公司