国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      多芯架構(gòu)中的資源管理的制作方法

      文檔序號:6655476閱讀:276來源:國知局
      專利名稱:多芯架構(gòu)中的資源管理的制作方法
      技術(shù)領(lǐng)域
      本發(fā)明涉及用于多芯架構(gòu)中的資源管理的方法和裝置。
      背景技術(shù)
      現(xiàn)今,合并復(fù)雜異機(jī)種的多芯架構(gòu)的半導(dǎo)體裝置被用于寬泛的各種系統(tǒng)和裝置(從遍布的桌面計(jì)算機(jī)到最新近的現(xiàn)代電子裝置,如移動電話、個人數(shù)字助理以及高速電信或網(wǎng)絡(luò)切換裝備)中。
      無論打算使用何種計(jì)算機(jī)處理器,處理器制造商都持續(xù)努力增加當(dāng)前處理器的性能,同時(shí)保持或減小它們的單位“成本”。
      處理器的“成本”可以利用各種參數(shù)來度量。盡管在許多情況下,該成本將是純粹的金融成本,但是,在許多應(yīng)用中,尤其是在嵌入式處理器市場中,成本計(jì)算還包括諸如功耗、冷卻要求、功效以及面市時(shí)間的輔助考慮。
      任何處理器執(zhí)行有用功能的絕對能力可以根據(jù)可實(shí)現(xiàn)的MIPS(每秒百萬條指令)比加以描述,由此,任何處理器的“性價(jià)”比都可以根據(jù)例如MIPS/mm2、MIPS/$或MIPS/mW加以描述。
      然而,實(shí)際上,不是全部指令都完成相同量的有用工作,因此,“純粹的”MIPS額定值是不容易比較的。因而,雖然數(shù)字信號處理器(DSP)在移動電話的無線接口近旁可很好地適于解決數(shù)學(xué)運(yùn)算密集處理,但是在運(yùn)行在該移動電話的屏幕上運(yùn)行的網(wǎng)頁瀏覽器方面效率非常低下。有效的是,這意謂著處理器可以根據(jù)“應(yīng)用可獲”性價(jià)更有用地分類。
      而且,為實(shí)現(xiàn)具體應(yīng)用而必須使用以控制和定制處理器的編程(即軟件)工具的低效,可以造成有效性能的額外減小。由此,可以從針對具體應(yīng)用的處理器中提取的性能的最終等級可以看作為可用的或“可實(shí)現(xiàn)的應(yīng)用可獲”性價(jià)的等級。
      在半導(dǎo)體公司為改進(jìn)處理器應(yīng)用可獲性價(jià)的驅(qū)動下,已經(jīng)開發(fā)出一款新處理器,即,多芯裝置。多芯裝置是由各種單元(核心)構(gòu)建的高度集成的處理器,每個單元可以高度地專業(yè)化,以便為該處理器可以執(zhí)行的應(yīng)用的具體方面提供最大等級的有用性價(jià)。這種裝置可以是“異機(jī)種的”(即,包括多個相異的核心),或者是“同機(jī)種的”(即,包括多個相似的核心)。
      因?yàn)獒槍θ魏尉唧w產(chǎn)品,集成不但包括多個處理核心,而且包括處理大部分(否則全部)硬件需求所需的存儲器、IO以及其它系統(tǒng)“核心”,所以大部分多芯裝置也可以被分類為芯片上系統(tǒng)(SoC)裝置。盡管不是全部SoC裝置都具有多個處理核心,但是術(shù)語多芯和SoC經(jīng)常是可互換的。多芯SoC的一個良好的示例可以在許多移動電話中發(fā)現(xiàn),其中會發(fā)現(xiàn)為運(yùn)行無線接口而包括一個或更多個DSP的單個處理器,和在電話上運(yùn)行用戶應(yīng)用的通用處理器。
      摩爾定律使得能夠出現(xiàn)多芯裝置,摩爾定律聲明可以安裝到由硅制成的任何指定面積中的晶體管的數(shù)量因制造工藝的改進(jìn)每十八個月就會翻番。因此,摩爾定律允許把更多單個晶體管安裝到硅片上的任何指定面積中,使得在單片硅上制造更復(fù)雜的裝置在技術(shù)上和經(jīng)濟(jì)上都是可行的。同樣,由于縮減晶體管的尺寸,因而晶體管能夠按更高的速度開關(guān)。
      歷史上,摩爾定律用于制造更快或就使用的硅而言成本更有效的尺寸更小的新一代處理器,而不對基礎(chǔ)的架構(gòu)進(jìn)行任何大的改變(即,該改進(jìn)是在制造工藝和裝置的物理微觀架構(gòu)而不是裝置的邏輯宏觀架構(gòu)上的改進(jìn))。
      有效的是,趨向于多芯/SoC處理器可以被視為向更高等級的集成的宏觀架構(gòu)轉(zhuǎn)換,這首先是從把1O(通信)功能性引入到硅片自身上開始的;現(xiàn)在,IO、存儲器以及多個處理單元、DSP以及協(xié)處理器的功能性都可以集成到同一硅片上。這些處理器通過為特定類的應(yīng)用提供最低成本、最高性能的處理器而會減小最終產(chǎn)品的制造成本。而且,通過將大多數(shù)系統(tǒng)組件集成到單個處理器上,可以減小部件數(shù),因此,提高可靠性并降低功耗。
      關(guān)鍵問題是可以怎樣優(yōu)化底層硬件在這種多芯裝置中的使用,以便實(shí)現(xiàn)最高可能的“應(yīng)用可獲”性價(jià)。
      處理器和系統(tǒng)設(shè)計(jì)者可以按許多方式影響應(yīng)用軟件內(nèi)的并行(應(yīng)用級并行)和指令流內(nèi)的并行(指令級并行)。各種表現(xiàn)的不同之處在于,當(dāng)系統(tǒng)在執(zhí)行/處于“運(yùn)行時(shí)”(動態(tài)系統(tǒng))時(shí),或者當(dāng)應(yīng)用軟件被編譯/處于編譯時(shí)間(靜態(tài)系統(tǒng))時(shí),在何處管理并行和是否管理并行。實(shí)際上,動態(tài)和靜態(tài)系統(tǒng)與硬件加強(qiáng)和軟件加強(qiáng)解決方案之間的劃分不明顯,來自一個門類的技術(shù)通常由另一個門類借用。
      在單處理核心級方面,本領(lǐng)域很好地建立了多發(fā)處理器或并行操作來自單個流的許多指令的機(jī)器的概念。它們分為兩種基本類型超標(biāo)量處理器和超長指令字(VLIW)處理器。超標(biāo)量處理器以按運(yùn)行時(shí)(動態(tài)調(diào)度)或者按編譯時(shí)間(靜態(tài)調(diào)度)識別的時(shí)鐘周期發(fā)出可變數(shù)量個指令。VLIW處理器發(fā)出固定數(shù)量個指令,形成超長指令字,這由編譯器限定。典型的是,當(dāng)系統(tǒng)的編程模型是標(biāo)準(zhǔn)的單處理器抽象時(shí),編程者完全不知道這個過程。
      過線程(Super-threading)和超線程(Hyper-threading)是在多個虛擬處理器中通過復(fù)用多個執(zhí)行線程來仿真多個處理器的兩種技術(shù)。典型的是,這些虛擬處理器共享統(tǒng)計(jì)上不由單個線程在全部時(shí)間使用的某些資源。過線程和超線程架構(gòu)看起來像多個獨(dú)立處理器,因此需要提交應(yīng)用級并行,以便高效地工作。典型的是,處理器核心中的硬件限制把可以支持的線程的數(shù)量限制得大致小于100個線程。
      而且,針對許多應(yīng)用中的固有并行的開發(fā),存在幾種系統(tǒng)架構(gòu)選擇。多指令多數(shù)據(jù)(MIMD)機(jī)器(其中,各處理器執(zhí)行其自己的指令并且對其自己的數(shù)據(jù)集進(jìn)行操作,同時(shí)通過一些共享資源(例如存儲器和/或互連)與其對等體協(xié)作)因它們能夠解決寬泛的各種應(yīng)用而變得流行起來。
      隨著性能需求的增加,嵌入式系統(tǒng)日益利用多芯MIMD架構(gòu),利用多個相異或相似的處理資源,以提供所需等級的硅功效。典型的是,盡管通常還可以發(fā)現(xiàn)更多應(yīng)用型混合架構(gòu),但是,存在一類稱為集中共享存儲器架構(gòu)(即,在多個處理資源之間共享單個地址空間(或其比例))的MIMD機(jī)器。
      盡管MIMD陣列的各處理資源可以采用指令級并行(ILP),但是,MIMD機(jī)器也可以采用線程級并行(TLP),以實(shí)現(xiàn)底層硬件的潛在性能。相比于ILP(其按運(yùn)行時(shí)(通過特定硬件)或編譯時(shí)間(通過優(yōu)化編譯工具)識別),TLP是按應(yīng)用設(shè)計(jì)時(shí)間在高級編程軟件內(nèi)限定的。
      線程是已作為并行的高級表達(dá)在軟件界內(nèi)使用許多年的概念。線程限定工作的自主包,該自主包包括執(zhí)行狀態(tài)、指令流以及數(shù)據(jù)集,根據(jù)定義,其可以與其它線程同時(shí)執(zhí)行。指令流的復(fù)雜性是不重要的。線程可以描述從簡單的數(shù)據(jù)傳遞到復(fù)雜的數(shù)學(xué)變換的任何事情。
      傳統(tǒng)上,操作系統(tǒng)已經(jīng)參與系統(tǒng)管理的設(shè)置,包括線程分配功能,這使得應(yīng)用能夠在多芯架構(gòu)的特定配置上運(yùn)行,而不需要軟件工程師對底層設(shè)備架構(gòu)有詳細(xì)的理解。然而,針對單芯裝置內(nèi)的線程管理的現(xiàn)有軟件技術(shù)不能容易地以連貫的方式適于多芯架構(gòu)。迄今為止的解決方案需要逐設(shè)計(jì)地專門預(yù)定解決方案,并且通常已折衷處理了性能和可擴(kuò)展性。
      歷史上,對于異機(jī)種的多芯系統(tǒng)(即,具有廣泛相異處理資源的系統(tǒng))的情況來說,已經(jīng)采用了許多變化方法,以使得全異的處理資源能夠一起工作。然而,廣泛地說,這些可以分成兩類,“代理服務(wù)器主機(jī)”和“協(xié)作”(也稱為“端到端”)。對于前一情況來說,指定的通用主機(jī)處理器(其在基于總線的系統(tǒng)中通常被稱為CPU)全面控制系統(tǒng),代管系統(tǒng)上任務(wù),并同步對諸如存儲器和裝置的資源的訪問。這種系統(tǒng)監(jiān)管典型地在操作系統(tǒng)核心中操作,并且與主機(jī)處理器上的系統(tǒng)應(yīng)用和異步事件的處理競爭時(shí)間片。換句話說,這種通用處理器必須充任針對多芯裝置上的全部處理資源的中央代理服務(wù)器線程管理器,并充任關(guān)鍵應(yīng)用處理器。
      當(dāng)在這種配置中使用時(shí),在準(zhǔn)備好針對各處理資源執(zhí)行的線程的隊(duì)列可以自行開行執(zhí)行之前(即,等待和定時(shí)隊(duì)列),根據(jù)預(yù)定調(diào)度策略,即,它們的優(yōu)先級(即,分派或就緒隊(duì)列)和等待某一事件的線程的隊(duì)列,或者另一線程的結(jié)果返回,通用處理器必須保持所述準(zhǔn)備好針對各處理資源執(zhí)行的線程的隊(duì)列。這些在其它系統(tǒng)消耗(如在線程執(zhí)行之前的處理器配置)之外。
      無論何時(shí)例如,作為因線程完成而發(fā)出中斷(因此釋放已經(jīng)完成該線程的處理資源)的結(jié)果,通用處理器將其處理時(shí)間從其當(dāng)前執(zhí)行的線程轉(zhuǎn)向系統(tǒng)的管理(包括線程管理),通用處理器都必須進(jìn)行現(xiàn)場(context)改變。
      現(xiàn)場改變涉及將中止線程的當(dāng)前進(jìn)程存儲到存儲器中,取與為其它線程/處理資源進(jìn)行服務(wù)的管理例程有關(guān)的指令,接著執(zhí)行這些指令,包括任何配置要求。必須執(zhí)行進(jìn)一步的現(xiàn)場改變,以返回到原來的中止線程。這些現(xiàn)場改變典型地在接收到中斷時(shí)執(zhí)行,而在嵌入式系統(tǒng)中,這些中斷針對在通用存儲器上執(zhí)行的應(yīng)用代碼來說通常是頻繁且異步的。因此,系統(tǒng)整體上表現(xiàn)出顯著的性能劣化?,F(xiàn)場切換還對主機(jī)處理器高速緩存的功效具有負(fù)面影響(所謂的“冷高速緩存”效應(yīng))。
      對于協(xié)作系統(tǒng)的情況來說,各處理資源運(yùn)行操作系統(tǒng)的單獨(dú)例程,所述單獨(dú)例程的一部分使得能夠?qū)崿F(xiàn)資源間通信。因此,這種布置具有相對嚴(yán)格的架構(gòu)劃分,作為在對等體之間具體路由中斷的結(jié)果。盡管這種類型的系統(tǒng)提供生成應(yīng)用所需的原型(primitive),但是,實(shí)現(xiàn)的性能仍經(jīng)受與操作系統(tǒng)核心活動相關(guān)聯(lián)的頻繁現(xiàn)場切換。
      總之,針對在傳統(tǒng)架構(gòu)(通用處理器、軟件執(zhí)行程序等)中實(shí)現(xiàn)系統(tǒng)管理的當(dāng)前設(shè)計(jì)和方法,對于復(fù)雜異機(jī)種的多芯架構(gòu)的系統(tǒng)和線程管理來說是不合適的。的確,通用處理器在微觀(指令集)架構(gòu)級和宏觀(高速緩存、寄存器文件管理)架構(gòu)級方面都缺乏優(yōu)化。盡管多芯處理器的互連提供了用于分立處理資源間操作的物理介質(zhì),但是不存在能夠?qū)崿F(xiàn)針對系統(tǒng)管理的相干方法的在全部處理資源間共享的系統(tǒng)范圍的任務(wù)管理和通信層。在最糟的情況下,這可能導(dǎo)致與每個處理資源之間的每個可能通信通道相關(guān)聯(lián)的明顯不同的問題,其中的每個傳統(tǒng)上都必須特別地在軟件中單獨(dú)解決。
      因而,需要用于這些非常復(fù)雜的多芯架構(gòu)的高效系統(tǒng)管理方法。軟件抽象不能單獨(dú)地提供復(fù)雜多芯架構(gòu)的必需性能等級。

      發(fā)明內(nèi)容
      根據(jù)本發(fā)明第一方面,提供了一種根據(jù)權(quán)利要求1所述的用于多芯處理器的資源管理和任務(wù)分配控制器。
      在優(yōu)選實(shí)施例中,根據(jù)權(quán)利要求1所述的控制器專用于資源管理和任務(wù)分配,并且不提供進(jìn)一步的處理資源。
      在本發(fā)明的實(shí)施例中,“傳統(tǒng)的”主處理單元(即,在缺少本發(fā)明的資源管理和任務(wù)分配控制器的情況下執(zhí)行任務(wù)分配和用作一個可用處理資源的一般處理資源)可以在系統(tǒng)開啟時(shí)作為主控而開始,而在初始化序列期間資源管理和任務(wù)分配控制器采用來自MPU的主控狀態(tài)。
      本發(fā)明的實(shí)施例還提供針對異機(jī)種多芯處理器的功能性,該功能性使得能夠向會被忽略的處理資源分配任務(wù),以用于處理特定任務(wù)。這樣,本發(fā)明的控制器允許更有效地使用可用資源。
      通過提供一種單獨(dú)的資源管理和任務(wù)分配控制器,本發(fā)明提供了針對多芯處理器的改進(jìn)的任務(wù)分配和管理系統(tǒng),使得能夠在可用處理資源之間更有效地分配任務(wù)。該控制器把系統(tǒng)管理和異常處理的單元抽象成專用、高效、硬代碼化的實(shí)施例。
      本發(fā)明的實(shí)施例采用控制器客戶端以及控制器,而不是實(shí)現(xiàn)“代理服務(wù)器代理”的作用。該控制器客戶端可以采用硬件或軟件的形式實(shí)現(xiàn)。這種布置有效地控制了底層系統(tǒng)的“運(yùn)行時(shí)”活動。具體來說,該控制器基于預(yù)定分配參數(shù)的范圍持續(xù)地(“貪心地”)保持系統(tǒng)線程狀態(tài)和調(diào)度判決的正確性。
      因此,與復(fù)雜性無關(guān)地,就在構(gòu)成的組件之間劃分工作與單個處理資源的自主性而言,優(yōu)選實(shí)施例的架構(gòu)提供顯著的有益效果。全部處理資源變成從屬裝置,這些從屬裝置默認(rèn)是“懶惰的”,即,它們等待資源管理和任務(wù)分配控制器在優(yōu)先實(shí)施例中經(jīng)由專用中斷明確指示以執(zhí)行任務(wù)。同樣,在其它實(shí)施例中,在資源管理和任務(wù)分配控制器與處理資源之間可以使用基于輪詢的通信。
      在采用本發(fā)明的控制器的系統(tǒng)中,直接通過插針或者間接通過一個處理資源(即,IO裝置)的外部操縱從架構(gòu)外部發(fā)起的所有異步事件,都被優(yōu)先路由至該控制器,在該控制器處,利用在“引導(dǎo)時(shí)間”配置的一組調(diào)度策略來對它們與目標(biāo)處理資源上的當(dāng)前執(zhí)行任務(wù)進(jìn)行比較。處理資源僅在與外部事件相關(guān)聯(lián)的中斷服務(wù)線程(IST)負(fù)責(zé)當(dāng)前執(zhí)行事務(wù)(線程或任務(wù))時(shí)中斷,由此消除了作為現(xiàn)有技術(shù)中的問題的在任何處理資源中的不必要的現(xiàn)場切換。而且,優(yōu)選實(shí)施例的控制器客戶端使得具有任意復(fù)雜性的處理資源能夠?qū)蚕碣Y源和控制器自身執(zhí)行基本系統(tǒng)管理操作(生成線程、發(fā)出同步原型、刪除線程、存儲器復(fù)制等),避免基于指令集的機(jī)器通過代理服務(wù)器執(zhí)行這些任務(wù)的必要。
      在本發(fā)明的又一方面中,提供了一種包括這種控制器的多芯處理器。
      本發(fā)明還延伸至根據(jù)權(quán)利要求40所述的在多芯處理器中控制并分配資源的方法。
      此外,在所附加的從屬權(quán)利要求中限定了本發(fā)明的優(yōu)點(diǎn)和特征。


      本發(fā)明可以采用許多方式進(jìn)行實(shí)施,下面,參照附圖,僅通過示例,對一些實(shí)施例進(jìn)行描述,其中圖1示出了包括根據(jù)本發(fā)明實(shí)施例的資源管理和任務(wù)分配控制器的系統(tǒng)的邏輯布局的示意性框圖;圖2示出了圖1中的邏輯布局的一個示范實(shí)現(xiàn)的示意性框圖,其中,實(shí)現(xiàn)本發(fā)明的控制器連同專用存儲器裝置和控制器客戶端一起并入通用多芯處理器架構(gòu)內(nèi);圖3再次采用框圖的形式示出了包括有圖2中的單元的現(xiàn)代芯片上系統(tǒng)(SoC)總線型架構(gòu)的示例;圖4示出了與圖1、2以及3中的控制器的外部連接的更詳細(xì)的圖;圖5示出了圖2和3中的存儲器裝置的更詳細(xì)的圖;圖6示出了圖2、3以及4中的控制器的內(nèi)部構(gòu)成的更詳細(xì)的圖;圖7示出了如圖2和3中所示的控制器客戶端的示意性框圖;圖7b示出了在充任用于多個處理資源的代理服務(wù)器的單個控制器客戶端的情況下的系統(tǒng)的示意性框圖;圖8示出了硬件控制器客戶端的更詳細(xì)的示意性框圖;圖9a和9b示出了一般描述符及其相關(guān)聯(lián)的域;圖9c和9d示出了線程描述符及其相關(guān)聯(lián)的域;圖9e和9f示出了調(diào)度程序?qū)用枋龇捌湎嚓P(guān)聯(lián)的域;圖9g和9h示出了分派隊(duì)列描述符及其相關(guān)聯(lián)的域;圖9i和9j示出了等待隊(duì)列描述符及其相關(guān)聯(lián)的域;圖9k和9l示出了跳躍列表描述符及其相關(guān)聯(lián)的域;圖10示出了在線程描述符、系統(tǒng)管理控制器、處理資源與共享的系統(tǒng)存儲器之間的典型的關(guān)系;圖11例示了在圖10中的布置中的間接的原理,其中,呈現(xiàn)了兩個相異的處理資源;圖12示出了圖4中的控制器內(nèi)的線程管理的典型的全貌圖;圖13示出了典型的等待隊(duì)列結(jié)構(gòu);圖14示出了典型的等待隊(duì)列跳躍列表;圖15示出了典型的定時(shí)器隊(duì)列;圖16示出了針對兩個處理資源的典型的就緒隊(duì)列結(jié)構(gòu);圖17示出了典型的單個分派隊(duì)列結(jié)構(gòu)的示范實(shí)施例;圖18示出了包括線程包的兩層調(diào)度層級;以及圖19示出了通??梢栽谕ㄐ畔到y(tǒng)中發(fā)現(xiàn)的示范簡化隊(duì)列結(jié)構(gòu)。
      具體實(shí)施例方式
      圖1示出了包括有根據(jù)本發(fā)明實(shí)施例的特征的系統(tǒng)框架10的邏輯圖??蚣?0包括多個處理資源150,各處理資源相對于其它處理資源150可以是相似或相異的,并且各處理資源可以是任意復(fù)雜的。各處理資源共享經(jīng)由互連部160對存儲有共享數(shù)據(jù)的公共系統(tǒng)存儲器140的訪問。應(yīng)當(dāng)明白,當(dāng)然不是全部系統(tǒng)存儲器140都必需公用于全部處理資源150。
      該系統(tǒng)框架還包括根據(jù)本發(fā)明實(shí)施例的集中任務(wù)分配和管理系統(tǒng)20。集中任務(wù)分配和管理系統(tǒng)20包括系統(tǒng)管理控制器130和連接至專用緊密耦合存儲器190的專用緊密耦合存儲器接口180。各處理資源150能夠經(jīng)由互連部115訪問控制器130。要明白的是,在圖1中的布置的實(shí)現(xiàn)中不需要特殊的互連策略(即,控制器130與各處理資源150通信所采用的布置,和相反情況下各處理資源150與系統(tǒng)存儲器140通信所采用的布置);具體地,可以同等地采用點(diǎn)對點(diǎn)連接、中央系統(tǒng)總線以至管道傳送架構(gòu),僅僅除了各處理資源應(yīng)當(dāng)能夠與控制器130直接或間接地(即,經(jīng)由其它處理資源等)通信的情況之外。
      圖2再次僅通過示例示出了實(shí)現(xiàn)圖1中的邏輯布置的多芯處理器。圖2中的多芯處理器采用各經(jīng)由系統(tǒng)互連部160相連接的多個處理資源150。系統(tǒng)互連部160又經(jīng)由輸入接口100和輸出接口110而與系統(tǒng)管理控制器130通信。在圖2中的示例中,系統(tǒng)互連部160被設(shè)置為傳統(tǒng)的中央總線,其將各處理資源150相互連接并將各處理資源150與控制器130相連接,并且還將各處理資源150與諸如系統(tǒng)存儲器140的共享系統(tǒng)資源相連接。與存儲器140的連接可以通過多個當(dāng)前可用的接口技術(shù)中的任何一種來實(shí)現(xiàn)。該存儲器可以由當(dāng)前可用的中央計(jì)算機(jī)存儲器技術(shù)(例如,靜態(tài)隨機(jī)存取存儲器(SRAM),或雙倍數(shù)據(jù)速率隨機(jī)存取存儲器(DDR RAM))中的任何一種組成。
      參照圖2,所述多個處理資源150中的每個都具有被設(shè)置成接收來自中央控制器130的控制信息并且根據(jù)接收的控制信息來管理處理資源150的相關(guān)聯(lián)的系統(tǒng)管理控制器客戶端120。下面,結(jié)合圖7和8,對控制器客戶端120的功能和用途進(jìn)行更詳細(xì)的描述。各處理資源還具有相關(guān)聯(lián)的互連代理170,以經(jīng)由系統(tǒng)互連部160與控制器130通信?;ミB代理170向控制器客戶端120提供一般接口,該一般接口獨(dú)立于系統(tǒng)互連部160上使用的基礎(chǔ)互連協(xié)議,即,其提供在系統(tǒng)互連部160上使用的通信協(xié)議與控制器客戶端120使用的通信協(xié)議之間的協(xié)議轉(zhuǎn)換。由于互連代理170的使用,本發(fā)明實(shí)施例中的控制器客戶端120可以與當(dāng)前可用的任何系統(tǒng)互連協(xié)議一起使用。
      整體上,多芯處理器被設(shè)置成執(zhí)行目標(biāo)應(yīng)用,該目標(biāo)應(yīng)用可以分解為許多單個任務(wù),即,所謂的線程。根據(jù)參數(shù)(包括但不限于所關(guān)注的線程的優(yōu)先級、各處理資源150的可用性以及特定處理資源對于執(zhí)行特定線程的適合性)的數(shù)量,通過控制器130向各處理資源150分配一合適的線程。下面將再次對其進(jìn)行更詳細(xì)的描述。
      然而,要明白的是,系統(tǒng)管理控制器130及其專用存儲器190的增加并不另外要求重新設(shè)計(jì)處理器10的布局。
      圖3中示出了一種具體布置,其采用框圖的形式示出了典型的芯片上系統(tǒng)(SoC)架構(gòu),并且其例示了在具體應(yīng)用中可以受控制器130的資源管理的各種處理資源。應(yīng)當(dāng)注意到,處理資源可以具體具有諸如DSP的相對一般的性能,或者可以具有諸如外圍IO的相對受限的功能性。
      系統(tǒng)管理控制器接口組圖4示出了控制器130及設(shè)置在控制器130的外圍的與其相關(guān)聯(lián)的接口組200-250。
      系統(tǒng)控制組200包括為確保系統(tǒng)管理控制器130的正確操作所需的兩個系統(tǒng)輸入信號。這兩個系統(tǒng)輸入包括連接至系統(tǒng)時(shí)鐘的CLK輸入,和RST輸入。來自系統(tǒng)管理控制器130的全部輸入信號都與系統(tǒng)時(shí)鐘同步,并且針對系統(tǒng)管理控制器130的全部輸入信號都是利用該時(shí)鐘進(jìn)行采樣的。RST輸入是同步復(fù)位信號,用于對系統(tǒng)管理控制器130進(jìn)行復(fù)位。
      外部中斷組210由源自系統(tǒng)管理系統(tǒng)外部的一組同步外部中斷組成。這些信號在它們接合至系統(tǒng)管理控制器130外圍之前必須與CLK同步。在外部中斷組210中的信號可以從例如與外界的輸入接口來驅(qū)動,或者經(jīng)由插針直接從多芯處理器外部驅(qū)動。外部中斷輸入的數(shù)量在多芯處理器10設(shè)計(jì)階段限定。
      內(nèi)部控制組220由針對各控制器客戶端120的單個同步中斷及其關(guān)聯(lián)處理資源150組成。因此,信號組的數(shù)量典型地與系統(tǒng)內(nèi)的處理資源150的數(shù)量相對應(yīng),并且將在多芯處理器10設(shè)計(jì)階段限定。內(nèi)部中斷信號指示準(zhǔn)備執(zhí)行的線程,并且被指配給與控制器客戶端120相關(guān)聯(lián)的具體處理資源150。
      緊密耦合存儲器接口組180將系統(tǒng)管理控制器130連接至其自己的專用緊密耦合存儲器資源190。圖5示出了專用緊密耦合存儲器190的典型結(jié)構(gòu)。地址路徑和數(shù)據(jù)路徑的寬度在多芯處理器10設(shè)計(jì)階段限定。專用緊密耦合存儲器接口包括存儲器地址總線191、存儲器讀取數(shù)據(jù)總線192、存儲器寫入數(shù)據(jù)總線193以及寫入使能信號194和讀取使能信號196。
      假定安裝的存儲器是同步SRAM裝置。根據(jù)目標(biāo)應(yīng)用的需要,專用緊密耦合存儲器190包括整數(shù)數(shù)量個控制器存儲器單元195,這些是在多芯處理器10設(shè)計(jì)階段限定的。在當(dāng)前優(yōu)選實(shí)施例中,各控制器存儲器單元195消耗256比特存儲器空間。還是在當(dāng)前優(yōu)選實(shí)施例中,控制器支持最多65536個控制器存儲器單元(即,16Mb存儲器)。盡管如下面所述的隊(duì)列描述符消耗控制器存儲器單元195,但是,在典型的系統(tǒng)中,所需的控制器存儲器單元195的數(shù)量將由線程支持需求支配。例如,能夠在系統(tǒng)管理控制器130內(nèi)同時(shí)支持400個線程的系統(tǒng)將需要大約128Kb的安裝存儲器。
      圖4中的互連接口組230與多芯處理器10和互連代理170中使用的所選互連協(xié)議一致,這是在多芯處理器設(shè)計(jì)階段限定的。
      控制器子模塊描述和功能圖6示出了系統(tǒng)管理控制器130的主邏輯組件??刂破?30的功能性在四個主要的內(nèi)部并行處理子模塊中劃分,并執(zhí)行下列功能1、線程輸入管理器(TSIM)300,其被設(shè)置成,將空閑控制器存儲器單元195的列表保持在專用緊密耦合存儲器190內(nèi),并且監(jiān)控控制器存儲器單元195恢復(fù)。
      2、線程同步管理器(TSPM)310,其被設(shè)置成,將等待列表和定時(shí)器隊(duì)列保持在專用緊密耦合存儲器190內(nèi),并且在線程之間執(zhí)行同步,并且在需要時(shí),對專用緊密耦合存儲器190內(nèi)的就緒隊(duì)列結(jié)構(gòu)執(zhí)行線程的升級。線程同步管理器310通過在專用緊密耦合存儲器190內(nèi)插入和提取等待線程描述符來保持等待和定時(shí)器隊(duì)列結(jié)構(gòu)的完整性。
      3、線程輸出管理器(TSOM)320,其被設(shè)置成,將就緒隊(duì)列結(jié)構(gòu)保持在專用緊密耦合存儲器190內(nèi),并且分派在專用緊密耦合存儲器190內(nèi)的針對各處理資源150的隊(duì)列。線程輸出管理器(TSOM)320還被設(shè)置成,生成向控制器客戶端120發(fā)送的中斷220。在專用緊密耦合存儲器190內(nèi),通過對保持在控制器存儲器單元195中的線程描述符進(jìn)行插入和提取來執(zhí)行對就緒隊(duì)列結(jié)構(gòu)的完整性的保持。
      4、線程調(diào)度管理器(TSSM)330,其被設(shè)置成,在設(shè)置在專用緊密耦合存儲器190內(nèi)的就緒隊(duì)列結(jié)構(gòu)內(nèi)提供針對各處理資源150的調(diào)度判決。
      另外,多個輔助處理子模塊提供支持以下功能5、線程存儲器管理器(TSMM)340,其被設(shè)置成,提供對安裝的專用緊密耦合存儲器190的集中訪問,包括相互獨(dú)占和鎖定。
      6、中斷管理器(TSIC)350,其被設(shè)置成,將引入的外部系統(tǒng)中斷轉(zhuǎn)換成內(nèi)部同步原型。
      7、定時(shí)管理器(TSTC)360,其被設(shè)置成,提供針對各處理資源150的用于同步目的和監(jiān)控定時(shí)器功能性的定時(shí)器功能。
      8、系統(tǒng)接口(TSIF)380,其被設(shè)置成,提供對多芯處理資源150的互連接口連接和配置以及運(yùn)行時(shí)訪問。
      下面,對系統(tǒng)管理控制器130內(nèi)的上述主要和輔助處理子模塊的交互進(jìn)行詳細(xì)的描述。
      各子模塊呈現(xiàn)了針對其它子模塊的功能集,使得各子模塊能夠指示其對端對它們各自在專用緊密耦合存儲器190內(nèi)保持的結(jié)構(gòu)執(zhí)行操作。在控制器軟件應(yīng)用編程接口(API)處接收到類似命令時(shí),由具體的子模塊調(diào)用功能。
      線程輸入管理器功能線程輸入管理器300提供針對系統(tǒng)管理控制器130內(nèi)的其它子模塊的三個公共功能。
      空閑列表狀態(tài)(FreeListStatus)功能,其返回控制器存儲器單元195空閑列表內(nèi)的單元的頭指針和數(shù)量??臻e列表是當(dāng)前未使用的控制器存儲器單元195的列表。在控制器130軟件API處接收到類似的命令時(shí),僅可以由系統(tǒng)接口380調(diào)用這個功能。
      入??臻e索引(PushFreeIndex)功能,其用來將釋放的控制器存儲器單元195索引向后推入到空閑列表上。僅可以由線程調(diào)度管理器330調(diào)用這個功能。
      出??臻e索引(PopFreeIndex)功能,其用來將空閑控制器存儲器單元195索引從空閑列表彈出。典型地從系統(tǒng)接口380內(nèi)的API調(diào)用服務(wù)例程調(diào)用該功能。
      線程同步管理器功能線程同步管理器310提供七個針對系統(tǒng)管理控制器130內(nèi)的其它子模塊的公共功能。
      響應(yīng)于控制器130軟件API接收到的類似的命令,僅可以由系統(tǒng)接口380調(diào)用下列五個功能。
      入棧等待描述符(PushPendingDescriptor)功能,其被用來在引導(dǎo)過程期間向等待隊(duì)列描述符的列表添加等待隊(duì)列描述符。
      入棧線程(PushThread)功能,其被用來在運(yùn)行時(shí)期間向指定等待隊(duì)列增加附屬線程。
      設(shè)置定時(shí)器狀態(tài)(SetTimerStatus),其設(shè)置定時(shí)器隊(duì)列內(nèi)的單元的頭指針和數(shù)量。
      獲得定時(shí)器狀態(tài)(GetTimerStatus)功能,其返回定時(shí)器隊(duì)列內(nèi)的單元的頭指針和數(shù)量。
      設(shè)置等待狀態(tài)(SetPendingStatus)功能,其設(shè)置等待隊(duì)列描述符列表的狀態(tài)。
      獲得等待狀態(tài)(GetPendingStatus)功能,其返回等待描述符隊(duì)列內(nèi)的單元的頭指針和數(shù)量。
      同步事件(SyncEvent)功能,其被用來向指定等待隊(duì)列發(fā)出同步原型。由線程中斷管理器350和系統(tǒng)管理控制器380調(diào)用這個功能。
      時(shí)間事件(TimeEvent)功能,其被用來向定時(shí)器隊(duì)列發(fā)出基于定時(shí)器的同步原型。僅由時(shí)間管理器360調(diào)用這個功能。
      線程輸出管理器功能線程輸出管理器320提供五個針對系統(tǒng)管理控制器130內(nèi)的其它子模塊的公共功能。
      入棧功能在就緒隊(duì)列結(jié)構(gòu)內(nèi)設(shè)置線程描述符??梢砸约涌焯幚硭俣?例如,針對處理中斷)的高優(yōu)先級來調(diào)用該方法。如果線程是獨(dú)立(立即就緒)的,則調(diào)用將從系統(tǒng)接口380進(jìn)行,而如果線程描述符最初具有相關(guān)性,則調(diào)用從線程同步管理器310進(jìn)行。
      響應(yīng)于在控制器130軟件API處接收到類似的命令,可以僅由系統(tǒng)接口380調(diào)用下列三個功能。
      獲得分派隊(duì)列狀態(tài)(GetDispatchQueueStatus)功能,其返回分派隊(duì)列列表內(nèi)的單元的頭指針和數(shù)量。
      設(shè)置分派隊(duì)列狀態(tài)(SetDispatchQueueStatus)功能,其設(shè)置分派隊(duì)列列表內(nèi)的單元的頭指針和數(shù)量。
      分派隊(duì)列出棧(DispatchQueuePop)功能,其從分派隊(duì)列的頭部彈出線程描述符。
      分派工作隊(duì)列入棧(DispatchWorkQueuePush)功能,其將分派隊(duì)列推入到線程輸出管理器320工作隊(duì)列上??梢詢H由線程調(diào)度管理器330調(diào)用這個功能,線程調(diào)度管理器330使用這個功能來向輸出管理器320通知分派隊(duì)列內(nèi)作為調(diào)度更新的結(jié)果所需的改變。
      線程調(diào)度管理器功能線程調(diào)度管理器330提供針對設(shè)置在系統(tǒng)管理控制器130內(nèi)的線程輸出管理器320和系統(tǒng)接口(TSIF)380的三個公共功能。
      入棧推入工作事件(PushPushWorkEvent)功能,其在線程輸出管理器320將線程描述符增加到就緒隊(duì)列結(jié)構(gòu)之后立即由該線程輸出管理器320調(diào)用。
      入棧彈出工作事件(PushPopWorkEvent)功能,其在線程輸出管理器320從就緒隊(duì)列結(jié)構(gòu)中去除線程描述符之后立即由該線程輸出管理器320調(diào)用。
      空閑索引(FreeIndex)功能,其使得控制器存儲器單元195的釋放能夠與在線程調(diào)度管理器330內(nèi)進(jìn)行的調(diào)度活動恰當(dāng)?shù)赝?。在控制?30軟件API處接收到類似的命令時(shí),或者作為在線程輸出管理器320內(nèi)的出棧操作的結(jié)果,可以發(fā)出該調(diào)用。
      控制器客戶端如前所述,術(shù)語處理資源150應(yīng)用于可以執(zhí)行指令的任何資源,而與指令可以是如何初步的無關(guān)。因此,也包括具有諸如輸入/輸出模塊的固定功能的資源。根據(jù)處理資源150的類型,系統(tǒng)互連部160與處理資源150之間經(jīng)由系統(tǒng)管理核心客戶端120的連接可以是單向的,或者是雙向的。
      圖7示出了與系統(tǒng)管理控制器130一起使用的控制器客戶端120的示范示意性框圖。
      對于合適的處理資源150,例如,通用處理器或數(shù)字信號處理器,典型地采用軟件的形式實(shí)現(xiàn)控制器客戶端120。然而,如果處理資源150具有受限的功能,則控制器客戶端120可能需要硬件組件。
      當(dāng)在系統(tǒng)互連部160與處理資源150之間使用硬件組件時(shí),控制器客戶端120仍利用相同接口連接至處理資源150。也就是說,控制器客戶端向互連代理170呈現(xiàn)與處理資源150針對控制器客戶端的接口相同的接口。在一些情況下,例如,在輸入/輸出裝置的情況下,恰當(dāng)?shù)氖?,把進(jìn)入到處理資源內(nèi)的數(shù)據(jù)路徑處理為明顯與從處理資源出去的數(shù)據(jù)路徑不同。
      除了主接口之外,控制器客戶端120還提供出帶接口(out of bandinterface),以用作針對運(yùn)行時(shí)和調(diào)試事件的輸出。如果使用軟件控制器客戶端120,則可利用標(biāo)準(zhǔn)中斷來調(diào)用恰當(dāng)?shù)姆?wù)例程。
      操作的控制器客戶端模式各控制器客戶端120完全受中斷驅(qū)動。在接收到來自控制器130的內(nèi)部中斷的時(shí)候,控制器客戶端120從與特定處理資源150相關(guān)聯(lián)的分派隊(duì)列的頭部彈出線程描述符,該分派隊(duì)列保持在專用緊密耦合存儲器190中。接著,將線程描述符內(nèi)的唯一引用用于讀取來自主存儲器資源140的進(jìn)一步的線程控制信息、線程控制模塊(TCB)。在TCB內(nèi)包括的信息可以是下列任何一種1、控制器客戶端120配置內(nèi)容。這個信息可以用于配置控制器客戶端120系統(tǒng)資源使用策略、數(shù)據(jù)呈現(xiàn)模式等。
      2、處理資源150配置內(nèi)容。這是為準(zhǔn)備用于執(zhí)行具體線程的處理資源150所需的信息。這個信息可以包括從該線程的先前部分執(zhí)行起的恢復(fù)或諸如音頻編解碼器的專用程序硬件加速器的配置。
      3、指令內(nèi)容。在固定功能硬件加速器的情況下,“指令”將隱含在目標(biāo)化的硬件處理資源150中,例如,處理資源150是輸出模塊時(shí)的輸出指令,并且任何需要的專用程序或配置將容納在配置信息內(nèi)。在軟件控制器客戶端120的情況下,這將典型地作為針對與線程相關(guān)聯(lián)的功能代碼的指針。
      4、數(shù)據(jù)內(nèi)容。這個內(nèi)容可以限定在系統(tǒng)存儲器140中的開始地址或多個地址,和線程可以進(jìn)行操作的數(shù)據(jù)范圍。
      5、控制器客戶端120后處理內(nèi)容。這個內(nèi)容確定在完成線程執(zhí)行之后控制器客戶端120的動作。
      控制器客戶端120的操作存在三個明顯的階段1、配置階段,其中,針對特定線程的執(zhí)行而準(zhǔn)備處理資源150和控制器客戶端120。在最簡單情況下,配置階段為空值。
      2、執(zhí)行階段。其中,正在執(zhí)行線程,并且控制器客戶端120可以提供數(shù)據(jù)和/或監(jiān)控資源利用。
      3、完成階段。處理的完成可能導(dǎo)致沒有動作、另一線程的生成、同步原型的發(fā)出或線程生成和同步的組合。而且,控制器客戶端120還可能被要求設(shè)置或更新調(diào)度程序測度并終止線程。在線程的執(zhí)行期間需要進(jìn)一步的存儲器以存儲結(jié)果的情況下,控制器客戶端120還必須執(zhí)行這個方法。
      在單個硬件控制器客戶端120b在有效時(shí)段期間完全使用可用系統(tǒng)互連部160帶寬的情況下,最優(yōu)化的解決方案允許控制器客戶端120b作為針對多個硬件處理資源150的代理服務(wù)器操作。圖7b中示出了這種布置。如前述情況,代理服務(wù)器控制器客戶端120b受中斷驅(qū)動,然而,盡管在前述示例中,僅從控制器130發(fā)出單個中斷,但是在代理服務(wù)器控制器客戶端模型中,存在針對各處理資源150的中斷。根據(jù)從控制器130接收到的中斷的索引,代理服務(wù)器控制器客戶端120b在識別的處理資源150上執(zhí)行相同的步驟。在需要系統(tǒng)互連部160使用策略的代理服務(wù)器控制器客戶端模型中,硬件適配器120c保持在處理資源150與系統(tǒng)互連部160之間。
      如前所述,可以采用軟件的形式實(shí)現(xiàn)控制器客戶端120。在這種情況下,控制器客戶端120的一些功能性,例如,共享的資源使用策略,將典型地使用可能已經(jīng)呈現(xiàn)在處理資源150硬件中的現(xiàn)有硬件組件(例如,存儲器管理單元(MMU))。
      因此,軟件控制器客戶端120架構(gòu)和實(shí)現(xiàn)是針對處理資源150特定的。
      根據(jù)相關(guān)聯(lián)的處理資源150的特性,硬件控制器客戶端120還可以具有專用程序需求。下面的部分描述適于多數(shù)情況下的一般架構(gòu)。
      硬件控制器客戶端的一般示例圖8中示出了硬件控制器客戶端120的基本結(jié)構(gòu)??刂破骺蛻舳擞邢逘顟B(tài)機(jī)(FSM)500在設(shè)計(jì)的功能中心處。該有限狀態(tài)機(jī)(FSM)500可以在全部三個階段期間都是有效的。通過來自控制器120的中斷220激活控制器客戶端FSM 500。
      首先,控制器客戶端FSM 500控制系統(tǒng)互連部160,以從共享存儲器資源140讀取TCB,該TCB包括針對其自己的指令的引用。在配置階段期間,控制器客戶端120可以控制處理資源接口,解釋配置命令并且將它們轉(zhuǎn)換成向處理資源150發(fā)出的寫入周期。而且,控制器客戶端120配置其自己的資源策略。從配置狀態(tài)到執(zhí)行狀態(tài)的轉(zhuǎn)換的方式是針對處理資源150特定的,但可以通過顯式的執(zhí)行原型或僅通過進(jìn)入數(shù)據(jù)傳遞狀態(tài)來標(biāo)志。
      從控制器客戶端120的角度來看,最簡架構(gòu)在處理資源150與系統(tǒng)側(cè)具有相同的接口協(xié)議。在這種情況下,在執(zhí)行階段期間,將處理資源150讀取和寫入周期簡單地交叉映射到系統(tǒng)接口,而在合適情況下進(jìn)行校驗(yàn)。
      在系統(tǒng)到處理資源510和處理資源到系統(tǒng)520的路徑中,最簡單的控制器客戶端120實(shí)現(xiàn)需要FIFO型接口。在這種特性的控制器客戶端120的執(zhí)行階段期間,可以通過消息或流式傳輸模式向處理資源150提交數(shù)據(jù)。整個數(shù)據(jù)集在處理之前本地積聚在控制器客戶端120內(nèi)的消息模式,造成可能便于更復(fù)雜互連仲裁器的更粗模塊互連行為。數(shù)據(jù)直接從系統(tǒng)存儲器流式傳輸?shù)教幚碣Y源150中的流式傳輸模式呈現(xiàn)更加硅片有效的解決方案,該解決方案需要更仔細(xì)地考慮信號交換(hand-shaking)并且展示出細(xì)致的互連事務(wù)以及與互連性能的緊密耦合。
      通過對向處理資源150提交數(shù)據(jù)進(jìn)行測量,可以推斷從執(zhí)行階段到完成階段的轉(zhuǎn)換,或者可以由處理資源150自身明確地信令指示從執(zhí)行階段到完成階段的轉(zhuǎn)換。在完成階段期間,控制器客戶端120再次從最初的線程控制模塊提供的指令集起執(zhí)行。
      注意,在一些情況下,恰當(dāng)?shù)氖?,把進(jìn)入處理資源150的數(shù)據(jù)路徑(例如,輸入/輸出裝置)和從處理資源150出去的路徑處理成明顯不同的。相反,在一些情況下(舉例來說,如DSP的算術(shù)加速器),自然的是,把數(shù)據(jù)的消耗方和產(chǎn)生方耦合在同一控制器客戶端120框架內(nèi)。
      為了提供處理資源150與其它系統(tǒng)資源之間的去耦等級,也可以通過控制器客戶端120設(shè)置多個另外的措施a)通過利用比較器530和比較地址寄存器540,可以針對由基址和偏移限定所限定的期望行為校驗(yàn)處理資源150生成的地址。
      b)利用減法器550和偏移地址寄存器560,可以偏移處理資源150生成的地址,使得處理資源150能夠具有針對任何指定線程的地址映射的標(biāo)準(zhǔn)化視圖,典型的是,標(biāo)準(zhǔn)化的循環(huán)地址(arund address)0×0。
      對象在系統(tǒng)管理控制器130內(nèi)使用的數(shù)據(jù)類型的實(shí)例被分成公共可見性(從系統(tǒng)可見并由系統(tǒng)整體操縱)和私有可見性(僅在系統(tǒng)管理控制器130內(nèi)可見并僅由系統(tǒng)管理控制器130子模塊操縱)。為了確保設(shè)計(jì)在多個端應(yīng)用上的可移植性,將全部線程、隊(duì)列以及集中的隊(duì)列描述符存儲在利用公共基類的專用緊密耦合存儲器190、控制器存儲器單元195內(nèi)。
      控制器存儲器單元各控制器存儲器單元195可以表示下列7種描述符類型中的任一種1、空閑列表單元。這個單元針對任一其它描述符類型的使用都是空閑的。不需要用戶初始化或運(yùn)行時(shí)操縱。
      2、線程描述符(TD)。其是表示應(yīng)用/OS線程的數(shù)據(jù)結(jié)構(gòu)。這個描述符可以存在于專用緊密耦合存儲器190中的等待隊(duì)列、就緒隊(duì)列或分派隊(duì)列中。不需要用戶初始化,但是需要運(yùn)行時(shí)操縱。
      3、調(diào)度程序根描述符(SRD)。其是調(diào)度程序?qū)蛹壍捻斆枋龇?。需要用戶初始化,但是不需要運(yùn)行時(shí)操縱。該根描述符沒有父系,而子系可以是SSTD、DSTD或TD中的任一種。
      4、靜態(tài)調(diào)度程序?qū)用枋龇?SSTD)。其是靜態(tài)調(diào)度程序?qū)用枋龇?,其父系可以是SRD,或者是另一SSTD。SSTD的子系可以是另一SSTD、DSTD或TD中的任一種。
      5、動態(tài)調(diào)度程序?qū)用枋龇?DSTD)。其是動態(tài)調(diào)度程序?qū)用枋龇?。不需要用戶初始化,但是需要運(yùn)行時(shí)操縱。DSTD的父系可以是SRD,或者是SSTD,但是DSTD可以僅具有TD子系。
      6、分派隊(duì)列描述符。這種類型的描述符描述這樣的線程描述符的列表,即,其在等待來自相關(guān)聯(lián)的處理資源150的出棧操作。需要用戶初始化,但是不需要運(yùn)行時(shí)操縱。
      7、等待隊(duì)列描述符。這種類型的描述符描述這樣的線程描述符的列表,即,其在等待同步事件。需要用戶初始化,但是不需要運(yùn)行時(shí)操縱。
      在下列部分中更詳細(xì)地描述這些描述符。
      圖9a到91示出了控制器存儲器單元195的各種形式及它們自己。
      線程表示如果描述符需要初始化或運(yùn)行時(shí)操縱,則通過控制器130 API完成操作。集中的任務(wù)分配和管理系統(tǒng)被設(shè)計(jì)成確保實(shí)時(shí)交互對于硬件實(shí)現(xiàn)是足夠合適/簡單的。
      圖10示出了在線程描述符、系統(tǒng)管理控制器130、處理資源150與共享的系統(tǒng)存儲器140之間的典型關(guān)系。各線程原型包括唯一引用,pReference。這個引用不通過系統(tǒng)管理控制器130解釋或修改。pReference提供了針對系統(tǒng)存儲器140中限定待執(zhí)行任務(wù)的數(shù)據(jù)結(jié)構(gòu)的指針。典型地,其是控制器客戶端控制模塊125,并且至少包括下列元素函數(shù)指針(如圖10中所示的處理資源指令模塊145)、堆棧指針以及變元指針(如圖10同時(shí)示出的數(shù)據(jù)模塊135)。另外,可以限定提供遍及共享系統(tǒng)資源的帶內(nèi)配置或安全性的域。
      然而,根據(jù)應(yīng)用和/或目標(biāo)處理資源150,可以改變控制器客戶端控制模塊125的復(fù)雜性。具體地,注意,可以包括進(jìn)一步的間接等級,其在指定合適的“控制”指令代碼和相對應(yīng)的“數(shù)據(jù)路徑”代碼時(shí),可以使全異的處理資源150能夠在特定情況下對相同數(shù)據(jù)執(zhí)行相同的功能。
      圖11示出了調(diào)度層級負(fù)載對兩個相異的處理資源(圖11中的類型I和類型II)150a和150b上的任務(wù)進(jìn)行平衡的示例。除了在此具有與各類處理資源的相異的指令集所需的特定指令流相對應(yīng)的針對各類處理資源的指針之外,pReference域(在針對這個層級排隊(duì)的線程描述符內(nèi))如前引用控制器客戶端控制模塊125??刂破骺蛻舳?20根據(jù)控制器客戶端控制模塊125內(nèi)的標(biāo)志選擇恰當(dāng)?shù)闹噶盍?指令模塊145a或145b)。
      這個特征可以是例如結(jié)合特定處理資源的下電特征而有用的。在針對指定任務(wù)的最優(yōu)處理器下電的情況下,希望次優(yōu)處理器執(zhí)行任務(wù),而不是招致代價(jià)高的重新引導(dǎo)周期。而且,在例外的負(fù)載下,可以使得能夠?qū)崿F(xiàn)輕負(fù)載的通用處理器,以例如減輕重負(fù)載的DSP上的負(fù)擔(dān)。
      當(dāng)處理資源150準(zhǔn)備好處理線程時(shí),其從與所述處理資源150唯一地相關(guān)聯(lián)的合適分派隊(duì)列出棧。出棧操作返回以下對象,其包括pReference,其是導(dǎo)致調(diào)度事件的調(diào)度程序測度;和包括對線程是否因超時(shí)或同步原型而就緒的指示的一組標(biāo)志。用于線程描述符的控制器存儲器單元195自動地返回到由將來的線程描述符使用的空閑列表。
      公共對象這個部分描述系統(tǒng)通過控制器130 API可見的對象。典型地,這些對象由集中的任務(wù)分配和管理系統(tǒng)按運(yùn)行時(shí)操縱,該任務(wù)分配和管理系統(tǒng)包括控制器130和客戶端120以及它們的相關(guān)聯(lián)的處理資源150。
      運(yùn)行時(shí)控制器130 API使得應(yīng)用能夠引入新的線程、引入新的動態(tài)調(diào)度程序單元、發(fā)出同步原型、彈出調(diào)度的線程、推入被搶先的線程或去除線程。
      圖12示出了系統(tǒng)管理控制器130內(nèi)的線程管理的典型全貌圖。
      線程原型圖9c和9d中示出了線程原型的格式。根據(jù)其依賴性,可以將線程描述符設(shè)置在等待隊(duì)列結(jié)構(gòu)中或直接設(shè)置到就緒隊(duì)列結(jié)構(gòu)中。如果要把線程設(shè)置在等待隊(duì)列結(jié)構(gòu)中,則應(yīng)用必須限定線程的依賴性。對外部事件的依賴表明其自身為依賴性引用??刂破?30不解釋該依賴性引用;其被保持以與到來的同步原型比較,來確定何時(shí)將線程描述符轉(zhuǎn)到就緒隊(duì)列結(jié)構(gòu)中。
      對于從屬線程來說,可以結(jié)合空依賴性引用指定超時(shí),這個措施可以用作基于線程硬件的定時(shí)措施。與依賴性引用無關(guān)地,超時(shí)導(dǎo)致在特定時(shí)間調(diào)度線程。
      根據(jù)使線程進(jìn)到就緒隊(duì)列結(jié)構(gòu)的同步事件(定時(shí)器或原型),來標(biāo)識線程。
      同步原型同步原型與等待隊(duì)列連接,并且可以使一個或更多個線程描述符從等待隊(duì)列結(jié)構(gòu)轉(zhuǎn)至就緒隊(duì)列結(jié)構(gòu)。
      各同步原型包括唯一的引用,其被與存儲在標(biāo)識的等待隊(duì)列中的各線程描述符內(nèi)的依賴性引用比較。按線程原型標(biāo)識的優(yōu)先級的順序繼續(xù)比較。
      根據(jù)其類型,同步可以激發(fā)等待隊(duì)列內(nèi)的最高優(yōu)先級匹配線程描述符,或者全部匹配的線程描述符。而且,特殊廣播原型激發(fā)全部等待對列內(nèi)的全部匹配的線程描述符。
      中斷處理中斷服務(wù)線程(IST)方法提供使異步事件施加在處理資源150上的負(fù)載最小化的有價(jià)值方法。而且,在基于本發(fā)明的系統(tǒng)中的加速實(shí)時(shí)響應(yīng)使得能夠以較少的系統(tǒng)修改實(shí)現(xiàn)IST的更普遍的使用。
      控制器130從控制器外圍上的外部中斷輸入210自動生成同步原型。在接收到這些中斷同步原型的時(shí)候,將等待隊(duì)列內(nèi)的預(yù)配置中斷服務(wù)線程描述符推到就緒隊(duì)列結(jié)構(gòu)。
      應(yīng)用通常在系統(tǒng)初始化時(shí),并且也在與相關(guān)聯(lián)的中斷服務(wù)線程的各次執(zhí)行內(nèi),配置與外部中斷210相關(guān)聯(lián)的線程描述符。
      這個措施有效地消除了針對系統(tǒng)內(nèi)的任何其它專用中斷服務(wù)處理資源150的需要。而且,其通過相同的優(yōu)先級結(jié)構(gòu)并根據(jù)用于全部處理器任務(wù)的相同策略處理這些外部中斷210,從而消除了針對在已經(jīng)執(zhí)行更高優(yōu)先級任務(wù)的處理資源內(nèi)進(jìn)行現(xiàn)場(context)切換的需要。通過利用正常搶先例程將當(dāng)前執(zhí)行的線程推回到就緒隊(duì)列中的能力,來支持任意數(shù)量的嵌套中斷。
      采用類似的方式處理基于定時(shí)器的中斷(監(jiān)控和定期事件)。基于時(shí)間的任務(wù)(定期的或只有一次的)必須插入到定時(shí)器隊(duì)列中,并且按與針對具有超時(shí)依賴性的線程類似的方式來處理。根據(jù)設(shè)計(jì),這個方法排除了具有無用處理需求的基于時(shí)間的異常。
      中斷優(yōu)先級可以被設(shè)置成,使得中斷例程可以為獲得快速響應(yīng)時(shí)間而搶先當(dāng)前執(zhí)行的任務(wù)。
      私有對象典型地,在引導(dǎo)時(shí)間,即,在下電周期之后的系統(tǒng)初始化期間,配置私有對象。處理資源150在運(yùn)行時(shí)期間幾乎不與內(nèi)部對象直接交互。
      內(nèi)部對象是主隊(duì)列結(jié)構(gòu)。系統(tǒng)管理控制器130管理四個主隊(duì)列類型等待隊(duì)列、定時(shí)器隊(duì)列、就緒隊(duì)列以及分派隊(duì)列。
      在系統(tǒng)管理控制器130內(nèi)存在額外的輔隊(duì)列,以便于內(nèi)部操作。隊(duì)列之間的線程描述符移動僅以指針操作發(fā)生。從不復(fù)制線程描述符。
      等待隊(duì)列結(jié)構(gòu)可以通過同步事件或定時(shí)器事件將線程從等待隊(duì)列結(jié)構(gòu)升到就緒隊(duì)列結(jié)構(gòu)。線程可能對上述兩類事件都敏感,或者只對其中的一個敏感。在其中線程對兩者上述兩類事件都敏感的情況下,線程呈現(xiàn)在等待隊(duì)列和定時(shí)器隊(duì)列中。
      等待隊(duì)列保持等待同步事件的從屬線程。通過同步原型從這些結(jié)構(gòu)中去除線程,或者通過定時(shí)管理器360內(nèi)部生成的定時(shí)器事件從處理資源150去除線程??膳渲玫亩鄠€等待隊(duì)列可用于應(yīng)用編程器,以支持多個爭用范圍和中斷服務(wù)線程;必須根據(jù)各等待隊(duì)列內(nèi)的單元的優(yōu)先級處理它們。針對根據(jù)優(yōu)先級的處理,存在兩種另選例,插入排序和提取排序。插入排序限定這樣一過程,即,通過該過程按嚴(yán)格的優(yōu)先級順序存儲等待列表,并且根據(jù)新線程的優(yōu)先級將它們插入到該列表內(nèi)的一位置處。提取排序?qū)Σ迦胄戮€程的位置進(jìn)行任意的選擇,并且在同步之后對合格的線程描述符執(zhí)行基于的優(yōu)先級排序。本發(fā)明的優(yōu)選實(shí)施例采用插入排序技術(shù)。
      圖13示出了等待隊(duì)列的典型結(jié)構(gòu)。按嚴(yán)格的優(yōu)先級順序存儲條目??梢酝ㄟ^使用跳躍列表加速完成新線程插入的速度,并且圖14示出了典型的等待隊(duì)列跳躍列表。
      如前所述,線程可以被阻止,以等待同步或定時(shí)器事件。一些線程專門等待同步事件,而類似地,一些線程專門等待定時(shí)器事件。在各情況下,線程將僅呈現(xiàn)在單個隊(duì)列中。各線程包括名義上與等待隊(duì)列和定時(shí)器隊(duì)列相關(guān)聯(lián)的兩組指針。在這些情況下,設(shè)置的定時(shí)器隊(duì)列和等待隊(duì)列指針分別是備用的。跳躍列表可以利用這些備用指針,例如,如果線程沒有出現(xiàn)在定時(shí)器列表中,則這些指針可以再用于指示在等待隊(duì)列中可能的向前跳躍。這使得當(dāng)?shù)亟咏槍π聫膶倬€程的正確插入點(diǎn)時(shí),另外的順序搜索能夠跳過線程描述符塊。
      一個另選例是跳躍節(jié)點(diǎn)描述符,并且在圖9k中示出了其一個示例,以及其相關(guān)聯(lián)的域(圖9l)。跳躍節(jié)點(diǎn)描述符可以根據(jù)預(yù)定測度周期性地插入到等待和定時(shí)器隊(duì)列結(jié)構(gòu)中。根據(jù)在跳躍節(jié)點(diǎn)描述符之間或參與的線程描述符之間的限定最大觀察數(shù)量個線程描述符,插入跳躍節(jié)點(diǎn)描述符。跳躍節(jié)點(diǎn)描述符可以同時(shí)形成等待隊(duì)列和定時(shí)器隊(duì)列跳躍列表的一部分。
      必須根據(jù)各新的從屬線程的優(yōu)先級插入各新的從屬線程。這個過程典型地通過遍歷跳躍列表開始,直到新線程的優(yōu)先級高于跳躍列表節(jié)點(diǎn)的優(yōu)先級為止。此后,將按逐線程描述符的方式從該跳躍列表節(jié)點(diǎn)繼續(xù)搜索,直到發(fā)現(xiàn)正確的插入點(diǎn)為止。這使得另外的線性搜索在針對新從屬線程導(dǎo)向正確的插入點(diǎn)時(shí)能夠跳過等待線程塊。
      同步事件具有三個明顯不同的類型單播同步事件對在指定等待隊(duì)列中發(fā)現(xiàn)的第一(最高優(yōu)先級)合適的從屬線程觸發(fā)狀態(tài)轉(zhuǎn)換。
      多播同步事件對在指定等待隊(duì)列中全部合適的從屬線程觸發(fā)狀態(tài)轉(zhuǎn)換。
      廣播同步事件對在所有等待隊(duì)列中全部合適的從屬線程觸發(fā)狀態(tài)轉(zhuǎn)換。
      如圖9i和9j所示,等待隊(duì)列描述符限定等待隊(duì)列。等待隊(duì)列描述符在系統(tǒng)初始化期間被設(shè)置一次,并且消耗一個控制器存儲器單元195。等待隊(duì)列僅包括從屬線程描述符和跳躍列表節(jié)點(diǎn)。
      定時(shí)器隊(duì)列結(jié)構(gòu)設(shè)置單個系統(tǒng)寬定時(shí)器隊(duì)列,其存儲等待超時(shí)事件的線程描述符。
      圖15示出了定時(shí)器隊(duì)列的示范實(shí)施例。
      跳躍列表還被用于加速如上所述的將線程插入到定時(shí)器隊(duì)列結(jié)構(gòu)中。然而,在這種情況下,對于跳躍列表使用的是僅具有時(shí)間相關(guān)性(如果存在)的線程。
      定時(shí)器隊(duì)列描述符存儲在寄存器內(nèi),使得能夠在定時(shí)器隊(duì)列的頭部與當(dāng)前時(shí)間之間進(jìn)行同時(shí)比較。這極大地減小了定時(shí)器信號對存儲器帶寬的影響。
      就緒隊(duì)列結(jié)構(gòu)就緒隊(duì)列結(jié)構(gòu)保持準(zhǔn)備執(zhí)行的線程。這些線程利用獨(dú)立的線程原型生成,或者它們已經(jīng)接收到它們所依據(jù)的同步原型。已經(jīng)預(yù)先從等待隊(duì)列結(jié)構(gòu)轉(zhuǎn)換出同步的線程。
      就緒隊(duì)列結(jié)構(gòu)可以包括調(diào)度程序節(jié)點(diǎn)描述符和獨(dú)立且同步的線程描述符。盡管允許線程描述符和動態(tài)調(diào)度程序?qū)用枋龇麑?shí)時(shí)進(jìn)出,但是,這種結(jié)構(gòu)很大程度上是在系統(tǒng)初始化期間限定的。
      就緒隊(duì)列可以針對指定處理資源150或一組處理資源150調(diào)度線程。這使得在保持把特定任務(wù)定位于特定處理資源150(例如,硬件加速器或IO裝置)處的能力的同時(shí),能夠?qū)崿F(xiàn)橫跨多個處理資源150的負(fù)載平衡。
      圖16示出了針對兩個處理資源150的典型就緒隊(duì)列結(jié)構(gòu)。注意,動態(tài)調(diào)度程序?qū)?可用于兩個根調(diào)度程序?qū)印_@使得系統(tǒng)管理控制器130在與根層1和2相關(guān)聯(lián)的處理資源150之間的動態(tài)層2之下能夠負(fù)載平衡線程。
      調(diào)度程序?qū)诱{(diào)度程序?qū)酉薅檎{(diào)度線程描述符而使用的層級。各調(diào)度程序?qū)拥湫偷叵薅ㄕ{(diào)度算法、用于確定調(diào)度判決的一些測度和子單元的列表,這些子單元可以是進(jìn)一步的調(diào)度程序?qū)踊蚓€程描述符。存在三種類型的調(diào)度程序?qū)用枋龇?、靜態(tài)以及動態(tài)。圖9e和9f示出了調(diào)度程序?qū)哟鎯ζ鲉卧母袷健?br> 根調(diào)度程序描述符與分派隊(duì)列具有一對一映射的關(guān)系。它們表示就緒隊(duì)列結(jié)構(gòu)中的最后結(jié)點(diǎn)。調(diào)度程序根描述符在系統(tǒng)初始化期間被配置并且永遠(yuǎn)存在。
      靜態(tài)調(diào)度程序描述符存在于調(diào)度程序?qū)蛹壷械母?jié)點(diǎn)之下。靜態(tài)調(diào)度程序描述符的父系可以是其它靜態(tài)調(diào)度程序描述符或根描述符。它們根據(jù)它們的父系的限定調(diào)度程序算法和它們的調(diào)度程序測度與同胞節(jié)點(diǎn)競爭。靜態(tài)調(diào)度程序描述符在系統(tǒng)初始化期間被配置并且永遠(yuǎn)存在。在操作期間,系統(tǒng)管理控制器130根據(jù)選擇的調(diào)度算法(例如,循環(huán)調(diào)度)保持調(diào)度程序測度。
      動態(tài)調(diào)度程序描述符存在于調(diào)度層級中的根之下并且可能存在于靜態(tài)節(jié)點(diǎn)之下。動態(tài)調(diào)度程序描述符的父系可以是靜態(tài)調(diào)度程序描述符或根描述符。它們根據(jù)它們的父系的限定調(diào)度程序算法和它們自己的調(diào)度程序測度與同胞節(jié)點(diǎn)競爭。動態(tài)調(diào)度程序描述符可以在任何時(shí)間配置,并且可以在指定情況下退出。這使得系統(tǒng)與可能完全靜態(tài)設(shè)置相比能夠支持更多數(shù)量的調(diào)度層。系統(tǒng)管理控制器130通過利用似然性(盡管在全部時(shí)間使用了大量和各種線程和動態(tài)調(diào)度程序?qū)樱谟邢迺r(shí)段,暫態(tài)需求較小)來實(shí)現(xiàn)這個目標(biāo)。例如,在具有安裝的支持最多4000個動態(tài)單元(線程和動態(tài)調(diào)度程序描述符)的存儲器的聯(lián)網(wǎng)系統(tǒng)中,可以及時(shí)在任何時(shí)刻支持16000個連接,來自全部連接空間的僅一小部分的數(shù)據(jù)單元將駐留在控制器中。因?yàn)槿绻麆討B(tài)調(diào)度程序描述符沒有出現(xiàn),則其必須在添加子系線程描述符之前生成,所以以性能上的小損失為代價(jià)而實(shí)現(xiàn)了這種靈活性。
      在操作期間,系統(tǒng)管理控制器130根據(jù)選擇的調(diào)度算法保持調(diào)度程序測度。在特定情況下,動態(tài)調(diào)度程序描述符將被釋放回控制器存儲器單元195空閑列表。這可通過把要處理的最后線程的pReference存儲在動態(tài)調(diào)度程序?qū)用枋龇麅?nèi)的該層內(nèi)來實(shí)現(xiàn)??刂破?30 API支持控制器存儲器單元195的輪詢,以確定動態(tài)調(diào)度程序描述符在隨后的類似線程之間是否持續(xù)。
      分派隊(duì)列分派隊(duì)列將調(diào)度的線程描述符保持在等待來自相關(guān)聯(lián)的處理資源150的服務(wù)的先入先出(FIFO)隊(duì)列中。在當(dāng)前優(yōu)選實(shí)施例中,允許最多32個分派隊(duì)列。在圖9g和9h中示出,通過分派隊(duì)列描述符限定分派隊(duì)列。在系統(tǒng)初始化期間配置分派隊(duì)列描述符。
      將線程描述符從就緒隊(duì)列結(jié)構(gòu)轉(zhuǎn)至分派隊(duì)列結(jié)構(gòu)的過程是在硬件中執(zhí)行的,并且不需要控制器130 API交互。
      圖17示出具體實(shí)現(xiàn)本發(fā)明特征的典型單的一個分派隊(duì)列結(jié)構(gòu)的示范實(shí)施例。分派隊(duì)列描述符限定一全閾值。分派隊(duì)列長度僅被允許超過正在調(diào)度線程包或發(fā)生搶先線程入棧的全閾值。
      通過處理資源經(jīng)由控制器130 API調(diào)用的出棧操作,從分派隊(duì)列中去除單元。
      在分派隊(duì)列描述符中包括優(yōu)先級域。當(dāng)線程從分派隊(duì)列彈出時(shí),優(yōu)先級域填充有現(xiàn)在執(zhí)行的線程的優(yōu)先級。進(jìn)一步的API調(diào)用使得優(yōu)先級能夠被執(zhí)行處理器復(fù)位成另一值,以便避免優(yōu)先級倒置。優(yōu)先級倒置涉及不同優(yōu)先級的至少3個線程,描述了同步需求和調(diào)度需求之間的沖突。優(yōu)先級倒置允許低優(yōu)先級線程無限期地阻止高優(yōu)先級線程。例如,低優(yōu)先級線程鎖定共享的資源,接著被高優(yōu)先級線程搶先。接著,高優(yōu)先級線程阻止低優(yōu)先級線程鎖定的資源。因?yàn)楦邇?yōu)先級線程現(xiàn)被阻止,正常情況下,低優(yōu)先級線程將繼續(xù),要是沒有第三介質(zhì)線程(其獨(dú)立于鎖定的資源,并且現(xiàn)在可以運(yùn)行)的話。低優(yōu)先級線程從未獲得機(jī)會,以解鎖共享的資源,因此,無限期地阻止高優(yōu)先級線程?!皟?yōu)先級最高限度”協(xié)議意指,當(dāng)線程擁有共享的資源時(shí),其按指定的優(yōu)先級運(yùn)行。這確保了如上所述的“低”優(yōu)先級線程在擁有與高優(yōu)先級線程共享的資源時(shí),呈現(xiàn)“高”優(yōu)先級。
      線程包描述源于同一調(diào)度程序?qū)拥囊唤M線程描述符。在強(qiáng)制更新調(diào)度確定之前,參數(shù)出現(xiàn)在限定可以從就緒隊(duì)列的層轉(zhuǎn)換至分派隊(duì)列的線程的數(shù)量的各調(diào)度程序描述符中。通過利用這個能力,并且設(shè)置調(diào)度程序?qū)庸蚕砉操Y源,可以向處理資源150提交與其它情況下相比表現(xiàn)出顯著更高的高速緩存本地性的線程塊,由此減小高速緩存缺失并增加系統(tǒng)性能。
      圖18示出了根據(jù)本發(fā)明實(shí)施例的包括線程包的示范兩層調(diào)度層級。距離根層最遠(yuǎn)的層,即,子層,利用了FIFO調(diào)度算法。根層調(diào)度程序算法被設(shè)置為循環(huán)。在實(shí)施例中,各FIFO隊(duì)列內(nèi)的單元相對于同一隊(duì)列中的其它成員表現(xiàn)出高等級的高速緩存本地性。
      圖18中的(a)示出了這樣的調(diào)度結(jié)果,其中子層線程包限制被設(shè)置成1。該結(jié)果被理想地交錯。這個方案針對各隊(duì)列呈現(xiàn)最小等待時(shí)間;然而,它也是最少存儲器感覺的(即,最可能表現(xiàn)出差的高速緩存性能)。在各調(diào)度的線程之后必需進(jìn)行現(xiàn)場切換。如果根層與使用高速緩存的處理資源150相關(guān)聯(lián),則強(qiáng)制高速緩存缺失可能影響系統(tǒng)性能。
      圖18中的(b)示出了這樣的調(diào)度結(jié)果,其中子層線程包限制被設(shè)置成4。調(diào)度程序表現(xiàn)出更粗的更新特性,這表明其自己為按所述線程包限制設(shè)置的限制從同一隊(duì)列調(diào)度的線程塊。盡管這個突發(fā)(bursty)行為在一些情況下可能不夠理想,但是,其表現(xiàn)出更好的高速緩存性能,因?yàn)橄鄬Σ惶枰M(jìn)行現(xiàn)場切換。所得效果模擬了粗粒(coarse grain)多線程化的優(yōu)異的高速緩存性能,同時(shí)保持了細(xì)化方法的優(yōu)異的編程模型。
      如果系統(tǒng)與外界交互,則往往最不希望線程包的突發(fā)特性。然而,線程包僅是在目標(biāo)處理資源150使用高速緩存的情況下的有益效果,因此與外界交互的專用程序處理資源150(例如,IO裝置)往往不使用高速緩存技術(shù),因而不利用線程包。
      返回到圖17,通過處理資源150經(jīng)由控制器130 API調(diào)用的出棧操作,從分派隊(duì)列中去除單元。如果發(fā)生搶先,則可以將單元推回到就緒隊(duì)列中。
      在分派隊(duì)列描述符中包括優(yōu)先級域,其使得能夠?qū)崿F(xiàn)優(yōu)先級最高限度協(xié)議,防止針對共享數(shù)據(jù)的優(yōu)先級倒置。各處理資源150具有唯一分派隊(duì)列。
      調(diào)度針對應(yīng)用和系統(tǒng)的調(diào)度需求在寬范圍內(nèi)變化,并且實(shí)際上,僅可能在真實(shí)操作環(huán)境中測試之后才變得清楚。為適應(yīng)這種情況,系統(tǒng)管理控制器130在使用的調(diào)度策略和調(diào)度算法中提供靈活性,可以在整個多芯處理器設(shè)計(jì)階段對其進(jìn)行修改和調(diào)整。
      調(diào)度策略可以分成三類1、協(xié)作調(diào)度程序,其依賴于當(dāng)前執(zhí)行的任務(wù),以在調(diào)度新任務(wù)之前釋放處理資源150。盡管這個類型的系統(tǒng)與最小化冷高速緩存效應(yīng)(例如,如果針對處理資源150的本地高速緩存不包括所需指令,則因此必須從更慢的高等級存儲器加載缺失的指令)和固定功能硬件加速器一致,但它可能不適合更復(fù)雜的嵌入式應(yīng)用。
      2、靜態(tài)算法驅(qū)動調(diào)度程序,其可以搶先當(dāng)前執(zhí)行的任務(wù),以便執(zhí)行更合格的任務(wù)。根據(jù)預(yù)定調(diào)度參數(shù)和算法,最合格的線程總是在這些系統(tǒng)中執(zhí)行的線程。在系統(tǒng)開始執(zhí)行之前,任何指定的任務(wù)的合格性都是固定的。
      3、動態(tài)算法驅(qū)動調(diào)度程序,其可以按運(yùn)行時(shí)重定義合格性。如前所述,當(dāng)前運(yùn)行的過程仍具有最高合格性,但是,合格性測度自任務(wù)開始執(zhí)行起已經(jīng)改變。
      系統(tǒng)管理控制器130經(jīng)由恰當(dāng)?shù)呐渲煤团c目標(biāo)應(yīng)用的運(yùn)行時(shí)交互來滿足全部三個調(diào)度策略。
      系統(tǒng)管理控制器130支持建立在操作系統(tǒng)和通信組內(nèi)的許多調(diào)度算法。例如,在先入先出隊(duì)列中,優(yōu)先級排隊(duì)或加權(quán)公平排隊(duì)。調(diào)度算法的恰當(dāng)選擇表現(xiàn)出明顯的優(yōu)點(diǎn),特別是在涉及主觀質(zhì)量測度的情況下。
      在線程描述符內(nèi)設(shè)置了兩個調(diào)度程序測度,以支持系統(tǒng)管理控制器130內(nèi)的調(diào)度行為。第一個調(diào)度程序測度表示在所有情況下線程的優(yōu)先級,并且在等待隊(duì)列結(jié)構(gòu)、基于優(yōu)先級的調(diào)度程序和分派隊(duì)列結(jié)構(gòu)內(nèi)使用。必要情況下,使用第二個調(diào)度程序測度來在單個線程及其對等體之間進(jìn)行選擇。而且,任一測度都可以用于更新父系描述符內(nèi)的測度。在線程描述符的第二原型內(nèi)設(shè)置的值必須反映在其調(diào)度程序?qū)蛹壷薪?jīng)受的調(diào)度的類型。
      這兩個調(diào)度程序測度被用于調(diào)度程序描述符和線程描述符二者中。然而,盡管在處理資源150內(nèi)計(jì)算線程測度,但是,這對于調(diào)度程序?qū)邮遣豢赡艿?。從而,必須從指定的層的調(diào)度線程傳遞足夠的參數(shù),以使得調(diào)度程序?qū)幽軌蚋缕渥约旱臏y度。針對各調(diào)度程序?qū)酉薅ㄒ唤M指令,這一組指令限定測度怎樣從子系向父系傳播。
      對全部調(diào)度程序?qū)蛹夁M(jìn)行一定的關(guān)注,可以容易地生成調(diào)度程序算法的復(fù)雜組合,以在應(yīng)用系統(tǒng)中提供改進(jìn)的傳輸和任務(wù)管理能力。
      參數(shù)繼承示例圖19示出了通常可在通信系統(tǒng)中發(fā)現(xiàn)的簡化隊(duì)列結(jié)構(gòu)的示范實(shí)施例。該結(jié)構(gòu)表示針對IO裝置的輸出隊(duì)列。共享FIFO隊(duì)列的全部線程處在同一連接上,因此,這就是按連接(per connection)排隊(duì)結(jié)構(gòu)。在這個示例中,第二調(diào)度層使用加權(quán)公平排隊(duì)(WFQ)算法。這個算法基于指定任務(wù)的長度和加權(quán)因子計(jì)算該指定任務(wù)的完成時(shí)間。接著,它選擇具有最先完成時(shí)間的分組。盡管WFQ依賴于線程表示的分組長度的知識,但是,最初的FIFO隊(duì)列是獨(dú)立于這個信息的。在這種情況下,應(yīng)用編程者必須確保分組的長度出現(xiàn)在針對各線程的調(diào)度程序測度中。在層級中更高的調(diào)度程序?qū)俞槍λ鼈冏约旱恼{(diào)度算法繼承這種參數(shù)。
      對于WFQ來說,需要下列變量P分配給連接的管道(pipe)帶寬的分?jǐn)?shù)l分組的長度B總體管道帶寬c連接帶寬d調(diào)度程序?qū)幼罱K期限計(jì)算連接帶寬c的公式是
      P*B=c如果把信道標(biāo)準(zhǔn)化為帶寬l,則p變得等于c。
      接著,給出分組的處理完成時(shí)間t1p*l=t]]>這樣,需要的測度是1/p和l。因?yàn)閜最初是一分?jǐn)?shù),所以這些值(1/p和l)都是整數(shù)。調(diào)度分組的長度通過調(diào)度程序?qū)蛹壪蛏蟼鬟f,從而逐漸更新層的最終期限。整體上,在各次更新內(nèi)執(zhí)行的計(jì)算為d=d+[1p*l]]]>其中,在調(diào)度程序?qū)用枋龇麅?nèi)存儲d和1/p(權(quán)重),而在調(diào)度更新期間通過層級傳遞l。在調(diào)度程序管理器330內(nèi)執(zhí)行這個計(jì)算。
      雖然描述了本發(fā)明的具體實(shí)施例,但是,應(yīng)當(dāng)明白,這僅僅是示例而已,可以考慮對本發(fā)明進(jìn)行各種修改。而且,本發(fā)明是采用例如但不限于移動電話或因特網(wǎng)協(xié)議話音業(yè)務(wù)(VoIP)的多芯處理器的任何裝置或應(yīng)用中的一般應(yīng)用。因此,所述具體實(shí)施例不應(yīng)被視為對下列權(quán)利要求確定的保護(hù)范圍的限制。
      權(quán)利要求
      1.一種資源管理和任務(wù)分配控制器,該控制器用于安裝在具有多個互連處理器單元的多芯處理器中,所述處理器單元為處理可執(zhí)行事務(wù)提供資源,所述多個處理器單元中的至少一個是主處理單元;所述控制器適于在安裝時(shí)與包括所述主處理單元在內(nèi)的所述多個處理器單元中的每一個通信,并且包括控制邏輯,該控制邏輯用于根據(jù)預(yù)定分配參數(shù)將所述多芯處理器內(nèi)的可執(zhí)行事務(wù)分配給特定處理器單元。
      2.根據(jù)權(quán)利要求1所述的控制器,其中,在所述控制器的控制邏輯內(nèi)包括的預(yù)定分配參數(shù)的范圍包括多個事務(wù)調(diào)度規(guī)則,所述多個事務(wù)調(diào)度規(guī)則用于調(diào)度所述處理器單元執(zhí)行可執(zhí)行事務(wù)的定時(shí)和/或順序。
      3.根據(jù)權(quán)利要求1或權(quán)利要求2所述的控制器,其中,在所述控制器的控制邏輯內(nèi)包括的預(yù)定分配參數(shù)的范圍包括多個系統(tǒng)管理規(guī)則,所述多個系統(tǒng)管理規(guī)則用于控制所述處理器單元執(zhí)行可執(zhí)行事務(wù)的方式。
      4.根據(jù)權(quán)利要求2或權(quán)利要求3所述的控制器,所述控制器還被設(shè)置成生成向處理單元傳送的指令。
      5.根據(jù)權(quán)利要求4所述的控制器,所述控制器被設(shè)置成向一處理器單元發(fā)送處理器單元配置指令,該處理器單元配置指令使所述處理器單元又適于允許隨后執(zhí)行所述控制器分配給該處理單元的可執(zhí)行事務(wù)。
      6.根據(jù)權(quán)利要求4或權(quán)利要求5所述的控制器,所述控制器被設(shè)置成通過向所述處理器單元發(fā)送一個或更多個中斷來生成指令。
      7.根據(jù)權(quán)利要求4或權(quán)利要求5所述的控制器,所述控制器被設(shè)置成通過向所述處理器單元發(fā)送一個或更多個輪詢來生成指令。
      8.根據(jù)任一前述權(quán)利要求所述的控制器,其中,所述控制邏輯還包括可執(zhí)行事務(wù)管理器;和專用存儲器管理器;其中,所述專用存儲器管理器控制所述可執(zhí)行事務(wù)管理器對所述專用存儲器的訪問。
      9.根據(jù)權(quán)利要求8所述的控制器,其中,所述可執(zhí)行事務(wù)管理器還包括可執(zhí)行事務(wù)輸入管理器,該可執(zhí)行事務(wù)輸入管理器被設(shè)置成保持對所述專用存儲器內(nèi)的可用存儲的指示。
      10.根據(jù)權(quán)利要求9所述的控制器,其中,所述可執(zhí)行事務(wù)輸入管理器被設(shè)置成保持所述專用存儲器內(nèi)的可用存儲器位置的列表。
      11.根據(jù)權(quán)利要求10所述的控制器,其中,所述可執(zhí)行事務(wù)輸入管理器保持對可用存儲器的指示,作為來自所述專用存儲器管理器的更新指令的結(jié)果。
      12.根據(jù)任一前述權(quán)利要求所述的控制器,其中,要分配的所述可執(zhí)行事務(wù)包括多個線程,各線程形成在所述多芯處理器上執(zhí)行的應(yīng)用的一部分,其中,所述多個線程中的至少一些是能夠獨(dú)立于其它事件執(zhí)行的獨(dú)立線程,并且其中,所述多個線程中的至少一些是從屬線程,該從屬線程的執(zhí)行取決于預(yù)定事件的存在。
      13.根據(jù)權(quán)利要求12所述的控制器,其中,所述控制邏輯還包括時(shí)間管理器,該時(shí)間管理器被設(shè)置成向所述可執(zhí)行事務(wù)管理器提供定時(shí)器功能。
      14.根據(jù)權(quán)利要求13所述的控制器,其中,所述預(yù)定事件是定時(shí)事件。
      15.根據(jù)權(quán)利要求12所述的控制器,其中,所述預(yù)定事件是先前線程的執(zhí)行完成,或者是另一更合適線程的搶先。
      16.根據(jù)權(quán)利要求12所述的控制器,其中,所述可執(zhí)行事務(wù)管理器還包括可執(zhí)行事務(wù)同步管理器,該可執(zhí)行事務(wù)同步管理器被設(shè)置成,在所述專用存儲器內(nèi)保持表示等待預(yù)定事件發(fā)生的從屬線程的至少一個等待隊(duì)列列表,并在所述專用存儲器內(nèi)保持表示等待定時(shí)事件的線程的至少一個定時(shí)器隊(duì)列列表。
      17.根據(jù)權(quán)利要求12所述的控制器,其中,所述可執(zhí)行事務(wù)管理器還包括可執(zhí)行事務(wù)輸出管理器,該可執(zhí)行事務(wù)輸出管理器被設(shè)置成,在所述專用存儲器內(nèi)保持表示等待在所述多個處理器單元中的相關(guān)聯(lián)的一個上執(zhí)行的線程的多個分派隊(duì)列結(jié)構(gòu),并在所述專用存儲器內(nèi)保持表示等待向所述多個處理器單元中的一個分配以在此執(zhí)行的線程的多個就緒隊(duì)列結(jié)構(gòu)。
      18.根據(jù)權(quán)利要求17所述的控制器,其中,所述可執(zhí)行事務(wù)管理器還包括可執(zhí)行事務(wù)調(diào)度管理器,該可執(zhí)行事務(wù)調(diào)度管理器被設(shè)置成,提供并保持調(diào)度判決,該調(diào)度判決用于針對各處理器單元按序排列從所述就緒隊(duì)列內(nèi)到所述分派隊(duì)列對線程的分派。
      19.根據(jù)任一前述權(quán)利要求所述的控制器,其中,所述控制邏輯還包括系統(tǒng)接口管理器,該系統(tǒng)接口管理器與所述可執(zhí)行事務(wù)管理器通信,并且被設(shè)置成管理所述控制器對所述多芯處理器的訪問。
      20.根據(jù)權(quán)利要求19所述的控制器,其中,所述系統(tǒng)接口管理器被設(shè)置成,提供對所述可執(zhí)行事務(wù)管理器的互連連接和配置以及運(yùn)行時(shí)訪問。
      21.根據(jù)權(quán)利要求6所述的控制器,其中,所述控制邏輯還包括系統(tǒng)中斷管理器,該系統(tǒng)中斷管理器用于將在所述多芯處理器內(nèi)采用的第一格式的系統(tǒng)中斷轉(zhuǎn)換成不同的第二格式的控制器中斷,所述可執(zhí)行事務(wù)管理器可以理解該第二格式。
      22.一種多芯處理器,該多芯處理器包括根據(jù)任一前述權(quán)利要求所述的控制器,所述多芯處理器具有多個互連處理器單元,各處理器單元都具有相關(guān)聯(lián)的控制器客戶端,其中,各控制器客戶端被設(shè)置成,根據(jù)來自所述控制器的控制信號,控制在所述多芯處理器中的所述處理器單元與其余部分之間的通信。
      23.一種多芯處理器,該多芯處理器包括根據(jù)任一前述權(quán)利要求所述的控制器,所述多芯處理器具有多個互連處理器單元,和至少一個控制器客戶端,其中,所述控制器客戶端被設(shè)置成,根據(jù)來自所述控制器的控制信號,控制在所述多芯處理器中的所述處理器單元與其余部分之間的通信。
      24.根據(jù)權(quán)利要求22所述的多芯處理器,所述多芯處理器還包括所述控制器和所述多個互連處理器單元可訪問的共享系統(tǒng)互連部。
      25.根據(jù)權(quán)利要求24所述的多芯處理器,所述多芯處理器還包括外部接口,該外部接口用于將所述多芯處理器連接至一個或更多個外部裝置。
      26.根據(jù)權(quán)利要求22到25中的任一項(xiàng)所述的多芯處理器,所述多芯處理器還包括與所述控制器通信的專用存儲器。
      27.根據(jù)權(quán)利要求26所述的多芯處理器,其中,所述專用存儲器可由所述控制器專有訪問。
      28.根據(jù)權(quán)利要求22所述的多芯處理器,其中,所述專用存儲器可由所述控制器和所述多芯處理器中的至少一個其它組件訪問。
      29.根據(jù)權(quán)利要求22到27中的任一項(xiàng)所述的多芯處理器,其中,所述存儲器包括多個單獨(dú)存儲器單元。
      30.根據(jù)權(quán)利要求29所述的多芯處理器,其中,所述多個單獨(dú)存儲器單元的數(shù)量是可由用戶限定的。
      31.根據(jù)權(quán)利要求30所述的多芯處理器,其中,各存儲器單元具有相似的大小,并且可由用戶限定存儲器單元的數(shù)量導(dǎo)致可變的存儲器大小。
      32.根據(jù)權(quán)利要求22所述的多芯處理器,其中,所述控制器客戶端是運(yùn)行在相關(guān)聯(lián)的處理器單元上的軟件應(yīng)用。
      33.根據(jù)權(quán)利要求22所述的多芯處理器,其中,所述控制器客戶端是依賴于相關(guān)聯(lián)的處理器單元的功能性的硬件控制器客戶端。
      34.根據(jù)權(quán)利要求33所述的多芯處理器,其中,所述控制器客戶端還包括客戶端控制邏輯,該客戶端控制邏輯用于在被來自所述控制器的控制信號激活時(shí)控制相關(guān)聯(lián)的處理器單元。
      35.根據(jù)權(quán)利要求34所述的多芯處理器,其中,所述控制器客戶端還包括多個緩沖器,所述多個緩沖器用于暫時(shí)存儲在所述多芯處理器中的所述處理器單元與其余部分之間發(fā)送的通信消息。
      36.根據(jù)權(quán)利要求35所述的多芯處理器,其中,所述多個緩沖器是先進(jìn)先出緩沖器。
      37.根據(jù)權(quán)利要求35所述的多芯處理器,其中,所述控制器客戶端還包括多個存儲器單元,各存儲器單元被設(shè)置成存儲地址。
      38.根據(jù)權(quán)利要求37所述的多芯處理器,其中,所述控制器客戶端還包括多個比較器,各比較器被設(shè)置成比較相關(guān)聯(lián)的處理器單元生成的地址和在所述多個存儲器單元中的一個存儲器單元中存儲的地址。
      39.根據(jù)權(quán)利要求37所述的多芯處理器,其中,所述控制器客戶端還包括減法器,該減法器被設(shè)置成,從相關(guān)聯(lián)的處理器單元生成的地址減去在所述多個存儲器單元中的一個存儲器單元中存儲的地址。
      40.一種在多芯處理器內(nèi)控制并分配資源的方法,該多芯處理器具有多個處理器單元,所述多個處理器單元中的至少一個是主處理器單元,所述方法包括以下步驟在與所述主處理器單元分離的資源管理和任務(wù)分配控制器處接收可執(zhí)行事務(wù);和與中央處理單元控制無關(guān)地將所述可執(zhí)行事務(wù)分配給所述多個處理器單元中的一個處理器單元。
      41.根據(jù)權(quán)利要求40所述的方法,所述方法還包括以下步驟將所述可執(zhí)行事務(wù)經(jīng)由事務(wù)管理客戶端定向到所述多個處理器單元中的一個處理器單元。
      42.根據(jù)權(quán)利要求41所述的方法,其中,所述事務(wù)管理客戶端是硬件客戶端。
      43.根據(jù)權(quán)利要求41所述的方法,其中,所述事務(wù)管理客戶端是軟件客戶端。
      44.根據(jù)權(quán)利要求42所述的方法,所述方法還包括以下步驟在所述事務(wù)管理客戶端內(nèi)存儲預(yù)定地址。
      45.根據(jù)權(quán)利要求44所述的方法,所述方法還包括以下步驟在所述事務(wù)管理客戶端處,從相關(guān)聯(lián)的處理器單元生成的地址減去所述預(yù)定地址以生成標(biāo)準(zhǔn)化的地址。
      46.根據(jù)權(quán)利要求44所述的方法,所述方法還包括以下步驟在所述事務(wù)管理客戶端處,比較相關(guān)聯(lián)的處理器單元生成的地址和存儲的所述預(yù)定地址;和根據(jù)比較結(jié)果配置所述處理器單元。
      47.根據(jù)權(quán)利要求42所述的方法,所述方法還包括以下步驟在所述事務(wù)管理客戶端處,存儲從所述多芯處理器的其余部分到相關(guān)聯(lián)的處理器單元的整個通信消息;和隨后將所述整個消息傳遞到相關(guān)聯(lián)的處理器單元。
      48.根據(jù)權(quán)利要求42所述的方法,所述方法還包括以下步驟在所述事務(wù)管理客戶端處,從所述多芯處理器的其余部分向相關(guān)聯(lián)的處理器單元流式傳輸通信消息。
      49.根據(jù)權(quán)利要求41所述的方法,所述方法還包括以下步驟利用第二事務(wù)管理客戶端生成、執(zhí)行或刪除針對第一事務(wù)管理客戶端的可執(zhí)行事務(wù)。
      50.根據(jù)權(quán)利要求40到49中的任一項(xiàng)所述的方法,所述方法還包括以下步驟基于預(yù)定的一組調(diào)度參數(shù),將可執(zhí)行事務(wù)分配給所述多個處理器單元中的一個處理器單元。
      51.根據(jù)權(quán)利要求50所述的方法,其中,所述一組調(diào)度參數(shù)是可由用戶限定的。
      52.根據(jù)權(quán)利要求50或權(quán)利要求51所述的方法,所述方法還包括以下步驟監(jiān)控所述控制器使用的所述調(diào)度參數(shù)的列表。
      53.根據(jù)權(quán)利要求50到52中的任一項(xiàng)所述的方法,所述方法還包括以下步驟隨時(shí)間改變所述一組調(diào)度參數(shù)。
      54.根據(jù)權(quán)利要求52所述的方法,其中,所述保持所述調(diào)度參數(shù)的列表的步驟還包括以下步驟保持可以由所述多個處理器單元中的一個或更多個處理器單元執(zhí)行的就緒任務(wù)的列表。
      55.根據(jù)權(quán)利要求50到53中的任一項(xiàng)所述的方法,所述方法還包括以下步驟基于在所述多芯處理器內(nèi)平衡處理器資源的要求,將可執(zhí)行事務(wù)分配給所述多個處理器單元中的一個處理器單元。
      56.根據(jù)權(quán)利要求50到53中的任一項(xiàng)所述的方法,所述方法還包括以下步驟當(dāng)確定希望由所述多個處理器單元中的一個處理器單元執(zhí)行更高優(yōu)先級的任務(wù)時(shí),防止向該一個處理器單元分配可執(zhí)行事務(wù)。
      57.根據(jù)權(quán)利要求40到56中的任一項(xiàng)所述的方法,所述方法還包括以下步驟保持超過預(yù)定時(shí)間長度尚未被分配的可執(zhí)行事務(wù)的列表。
      58.根據(jù)權(quán)利要求52所述的方法,其中,所述監(jiān)控所述調(diào)度參數(shù)的列表的步驟還包括以下步驟保持等待預(yù)定事件的等待任務(wù)的列表。
      59.根據(jù)權(quán)利要求58所述的方法,其中,所述預(yù)定事件是定時(shí)器事件、同步事件或者全部兩個。
      60.根據(jù)權(quán)利要求58所述的方法,所述方法還包括以下步驟根據(jù)相互排斥的預(yù)定事件保持等待任務(wù)的多個列表。
      61.根據(jù)權(quán)利要求52所述的方法,其中,所述監(jiān)控所述調(diào)度參數(shù)的列表的步驟還包括以下步驟保持等待在特定處理資源上執(zhí)行的分派任務(wù)的列表。
      62.根據(jù)權(quán)利要求61所述的方法,所述方法還包括以下步驟在超時(shí)期滿時(shí)將等待預(yù)定事件的可執(zhí)行事務(wù)移向就緒隊(duì)列。
      63.根據(jù)權(quán)利要求40到62中的任一項(xiàng)所述的方法,其中,所述控制器專用于分配任務(wù)。
      64.一種實(shí)質(zhì)上上如在此參照附圖所述的用于多芯處理器的資源管理和任務(wù)分配控制器。
      65.一種實(shí)質(zhì)上如在此參照附圖所述的多芯處理器。
      66.一種實(shí)質(zhì)上如在此參照附圖所述的在多芯處理器中控制并分配資源的方法。
      全文摘要
      本發(fā)明提供了一種資源管理和任務(wù)分配控制器,該控制器用于安裝在具有多個互連處理器單元的多芯處理器中,所述處理器單元為處理可執(zhí)行事務(wù)提供資源,所述多個處理器單元中的至少一個是主處理單元,所述控制器適于在安裝時(shí)與包括所述主處理單元在內(nèi)的所述多個處理器單元中的每一個通信,并且包括控制邏輯,該控制邏輯用于根據(jù)預(yù)定分配參數(shù)將多芯處理器內(nèi)的可執(zhí)行事務(wù)分配給特定處理器單元。
      文檔編號G06F15/80GK1993674SQ200580010801
      公開日2007年7月4日 申請日期2005年3月30日 優(yōu)先權(quán)日2004年3月31日
      發(fā)明者馬克·大衛(wèi)·李佩特 申請人:科威爾公司, 富士通株式會社
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
      1