專利名稱:數(shù)據(jù)處理裝置中的數(shù)據(jù)引擎的使用的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種數(shù)據(jù)處理裝置和方法,并且尤其涉及這種數(shù)據(jù)處理 裝置中的數(shù)據(jù)引擎的使用。
背景技術(shù):
在具有主處理單元的數(shù)據(jù)處理裝置中,公知的是提供可以用來代表 主處理單元處理特定數(shù)據(jù)處理任務(wù)的數(shù)據(jù)引擎,有時(shí)也稱作松散耦合的 協(xié)同處理器(在數(shù)據(jù)引擎駐留在主處理單元外部且數(shù)據(jù)引擎與主處理單 元之間的同步僅僅發(fā)生在過程或任務(wù)級別的意義上來講,是松散耦合 的)。這可能引起與其中所有任務(wù)都通過主處理單元來處理的數(shù)據(jù)處理裝 置相關(guān)的各種改善,這些改善例如是支持所需功能需要的總體硅面積減 少、給定任務(wù)集的功耗降低或者執(zhí)行速度的增加中的一個或多個。
這種數(shù)據(jù)引擎的一個實(shí)例是數(shù)字信號處理器(DSP),可以把數(shù)據(jù)信 號處理器看作是為處理特定處理任務(wù)而優(yōu)化的處理單元,并且通常具有 它自己的專用資源,例如它自己的中斷控制器、它自己的直接存儲器訪 問(DMA)邏輯等。雖然這種DSP的使用在改善數(shù)據(jù)處理裝置的性能方 面非常有效,但是在數(shù)據(jù)處理裝置中提供DSP是非常昂貴的,這是由于 需要為DSP提供所有需要的專用資源,以使得DSP能夠代表主處理單元 來執(zhí)行需要的處理任務(wù)。
對于這種DSP的一種備選方式是提供沒有專用于它的本地資源的數(shù) 據(jù)引擎,諸如擔(dān)當(dāng)主處理單元的純從屬設(shè)備的數(shù)據(jù)引擎。在這種實(shí)例中, 主處理單元為數(shù)據(jù)引擎分派特定任務(wù),連同為其分配數(shù)據(jù)引擎執(zhí)行該任 務(wù)所需的所有數(shù)據(jù),并當(dāng)已經(jīng)完成任務(wù)時(shí),隨后從數(shù)據(jù)引擎接收確認(rèn)信 號。當(dāng)接收到這種確認(rèn)信號時(shí),就可以從主處理單元為數(shù)據(jù)引擎分派另 一任務(wù)。雖然與早先提到的DSP相比這種數(shù)據(jù)引擎便宜很多,但是由于 不需要為數(shù)據(jù)引擎提供本地資源的事實(shí),所以在代表主處理單元來處理 對數(shù)據(jù)引擎的個別任務(wù)分配以及確保為數(shù)據(jù)引擎提供了執(zhí)行任務(wù)所需的 所有數(shù)據(jù)時(shí),存在相當(dāng)大的開銷,從而導(dǎo)致了相當(dāng)大的全局系統(tǒng)活動來
支持?jǐn)?shù)據(jù)引擎的活動。這不僅惡化了計(jì)算周期和功耗方面的性能,而且也導(dǎo)致需要相當(dāng)大地改寫現(xiàn)有軟件,以確保該軟件能夠運(yùn)行在包括這種 數(shù)據(jù)引擎的數(shù)據(jù)處理裝置上,而這明顯是不期望的。
在將DSP需要的所有資源都本地提供給DSP且為DSP所專用的上 述DSP方法與數(shù)據(jù)引擎沒有本地/專用資源的數(shù)據(jù)引擎方法之間,已經(jīng)研 發(fā)了一種中間立場的方法,該方法提供了可以訪問特定資源但那些資源 是與數(shù)據(jù)處理裝置中的其他元件共享的數(shù)據(jù)引擎。因此,雖然對于特定 會話(通常包含一組待執(zhí)行任務(wù)的會話),那些資源或那些資源中的一部 分可以為數(shù)據(jù)引擎所專用,但是在隨后的會話中還可以將那些資源重新 分配給數(shù)據(jù)處理裝置的其它元件。
當(dāng)提供了數(shù)據(jù)引擎對特定共享資源的訪問時(shí),可以在主處理單元與 數(shù)據(jù)引擎之間提供子系統(tǒng)層,進(jìn)而提供數(shù)據(jù)引擎從主處理器單元中的一 些去耦。然后主處理單元可以為數(shù)據(jù)引擎分配一組任務(wù),接著子系統(tǒng)進(jìn) 行處理將每個單獨(dú)任務(wù)分配到數(shù)據(jù)引擎以進(jìn)行處理。子系統(tǒng)還可以使得 由于或當(dāng)使數(shù)據(jù)引擎執(zhí)行所需任務(wù)需要時(shí)來訪問所分配的共享資源。在 這種方法中,子系統(tǒng)相對于數(shù)據(jù)引擎來講采用了主要角色,而數(shù)據(jù)引擎 再次擔(dān)當(dāng)純粹的從屬設(shè)備。這種方法允許主處理單元分配任務(wù)組給子系 統(tǒng)以供數(shù)據(jù)引擎進(jìn)行處理,雖然這種方法通過這種方式可以消除主處理 單元中一些任務(wù)管理的復(fù)雜度,但是通常仍然需要大量改寫現(xiàn)有軟件, 以使得該軟件能夠在數(shù)據(jù)處理裝置上執(zhí)行。尤其在寫入執(zhí)行特定任務(wù)的 軟件時(shí),可能已經(jīng)假設(shè)這種任務(wù)將由能夠展現(xiàn)一些主功能性的處理單元 來執(zhí)行,因此可能啟動特定事件。然而如上所述,當(dāng)由子系統(tǒng)將任務(wù)分 配給數(shù)據(jù)引擎時(shí),數(shù)據(jù)引擎本身擔(dān)當(dāng)純粹的從屬設(shè)備,并不能啟動任何 事件。
上述方法的另一問題在于,該方法在系統(tǒng)內(nèi)部提供了三種不同的編 程視點(diǎn)(program points of view )。尤其是除了需要對主處理單元和數(shù)據(jù) 引擎進(jìn)行編程之外,子系統(tǒng)也需要某種編程,這是由于子系統(tǒng)在其自身 的權(quán)限中作用就像是本地處理單元,其原因在于需要子系統(tǒng)來管理單個 任務(wù)到數(shù)據(jù)引擎的分配,并且要管理在需要時(shí)對共享資源的訪問,以確 保為數(shù)據(jù)引擎提供它執(zhí)行這種任務(wù)所需的所有數(shù)據(jù)。另外,由于使用共 享資源需要與主處理單元進(jìn)行大量通信,因此子系統(tǒng)對于降低全局系統(tǒng) 活動并沒有幫助。因此,非常希望提供一種用于在數(shù)據(jù)處理裝置中使用的改進(jìn)數(shù)據(jù)引
擎,所述數(shù)據(jù)處理裝置可以提供與DSP使用相關(guān)的大量成本節(jié)約,并且 可以降低必須改寫軟件以使得數(shù)據(jù)引擎能夠在包括該數(shù)據(jù)引擎的系統(tǒng)上 運(yùn)行的風(fēng)險(xiǎn)。
發(fā)明內(nèi)容
從第一方面考慮,本發(fā)明提供了一種數(shù)據(jù)處理裝置,所述數(shù)據(jù)處理 裝置包括主處理單元,可以操作以執(zhí)行多個數(shù)據(jù)處理任務(wù);數(shù)據(jù)引擎, 可以操作以代表所述主處理單元執(zhí)行大量所述數(shù)據(jù)處理任務(wù);至少一個 共享資源,可由主處理單元分配給所述數(shù)據(jù)引擎,以供所述數(shù)據(jù)引擎在 執(zhí)行所述大量數(shù)據(jù)處理任務(wù)時(shí)使用;所述數(shù)據(jù)引擎包括數(shù)據(jù)引擎核以及 數(shù)據(jù)引擎子系統(tǒng),所述數(shù)據(jù)引擎核可以操作以執(zhí)行所述大量數(shù)據(jù)處理任 務(wù),所述數(shù)據(jù)引擎子系統(tǒng)可由所述主處理單元進(jìn)^f亍配置并可以操作以管 理所述數(shù)據(jù)引擎核與所分配的共享資源之間的通信;所述數(shù)據(jù)引擎核包 括資源管理器單元,所述資源管理器單元可操作以相對于數(shù)據(jù)引擎子系 統(tǒng)擔(dān)當(dāng)主設(shè)備,進(jìn)而管理所分配的共享資源的使用。
根據(jù)本發(fā)明,數(shù)據(jù)引擎具有用于代表主處理單元執(zhí)行任務(wù)的數(shù)據(jù)引 擎核以及數(shù)據(jù)引擎子系統(tǒng),所述數(shù)據(jù)引擎子系統(tǒng)可由所述主處理單元進(jìn) 行配置,并布置成管理所述數(shù)據(jù)引擎核與所分配的共享資源之間的通 信,所分配的共享資源是主處理單元已經(jīng)分配給所述數(shù)據(jù)引擎以供數(shù)據(jù) 引擎在執(zhí)行任務(wù)時(shí)使用的資源。
對于某一時(shí)期,通常是一個會話,可以把共享資源的全部都分配給 數(shù)據(jù)引擎,或者相反僅分配資源的一部分,而另一部分分配給數(shù)據(jù)處理 裝置的其它元件。當(dāng)把資源的一部分分配給數(shù)據(jù)引擎時(shí),該部分可以是 物理部分,例如存儲器的區(qū)域、受到限制的DMA控制器通道號等,或者 可以是標(biāo)識了共享資源所支持功能性的特定子集的功能部分,例如允許 數(shù)據(jù)引擎讀取訪問但是不允許寫入訪問。因此對于一個時(shí)期,共享資源 可以專用于數(shù)據(jù)引擎,或者在該時(shí)期期間,可以在數(shù)據(jù)引擎和其它元件 (例如也可以是數(shù)據(jù)引擎)之間共享,但是在后者的情況下,通常僅僅 為數(shù)據(jù)引擎分配與分配給其它元件的物理或功能部分不相沖突的物理或 功能部分的訪問。
此外,#>據(jù)本發(fā)明,數(shù)據(jù)引擎核具有資源管理器單元,所述資源管理器單元相對于數(shù)據(jù)引擎子系統(tǒng)擔(dān)當(dāng)主設(shè)備,以便管理所分配的共享資 源的使用。通過這種方法,數(shù)據(jù)引擎核能夠執(zhí)行各種不同的動作,這些 各種不同的動作正是現(xiàn)有軟件可能期望執(zhí)行該軟件的處理單元具有能力 執(zhí)行的動作。這可以顯著地降低為了使現(xiàn)有軟件能夠在包括這種數(shù)據(jù)引 擎的數(shù)據(jù)處理裝置上執(zhí)行而需要改寫現(xiàn)有軟件的程度。此外,由于對共 享資源的訪問通過資源管理器單元緊密地集成在數(shù)據(jù)引擎中,所以這些 資源與必須在數(shù)據(jù)引擎自身上活動的資源相比,代價(jià)更低。
此外,通過在數(shù)據(jù)引擎核中提供資源管理器單元來相對于數(shù)據(jù)引擎 子系統(tǒng)擔(dān)當(dāng)主設(shè)備,就可以緩和分別對數(shù)據(jù)引擎子系統(tǒng)進(jìn)行編程的需 要,因此可以降低否則可能出現(xiàn)的編程視點(diǎn)的數(shù)量,從而顯著降低設(shè)計(jì) 的復(fù)雜度。資源管理器單元可以作為硬件單元來形成,或者備選地可以 形成為硬件和軟件元件的混合。
共享資源可以由數(shù)據(jù)處理裝置的任何其他元件所共享,例如主處理 單元或者提供在數(shù)據(jù)處理裝置內(nèi)的任何另外的數(shù)據(jù)引擎。在一個實(shí)施例 中,多個數(shù)據(jù)引擎可以使用相同的數(shù)據(jù)引擎子系統(tǒng),并且在這種情況下, 共享資源可以實(shí)際駐留在數(shù)據(jù)引擎子系統(tǒng)內(nèi)部。通常,將會把主處理單 元配布置成以逐個會話為基礎(chǔ)來配置數(shù)據(jù)引擎子系統(tǒng)和將任何所需的共 享資源分配給數(shù)據(jù)引擎,其中每個會話通常包括將在數(shù)據(jù)處理裝置上執(zhí) 行的多個任務(wù)。因此,對于會話期間而言,數(shù)據(jù)引擎子系統(tǒng)的配置將不 會改變,共享資源的分配也不會改變。然而,資源管理器單元可以用于 管理在該會話期間使用所分配的共享資源的方式。
在數(shù)據(jù)引擎中提供相對于數(shù)據(jù)引擎子系統(tǒng)擔(dān)當(dāng)主設(shè)備的資源管理器 單元,使得數(shù)據(jù)引擎可以在該會話期間訪問共享資源,而無需干擾主處 理單元/與主處理單元交互,從而減少了全局系統(tǒng)活動,因此引起了性能 改善并降低了能量損耗。例如,全局系統(tǒng)活動的減少可以增加主處理單 元能夠采用低功率模式更大比例時(shí)間的可能性。
主處理單元可以采用各種形式。例如,它可以是中央處理單元
(CPU)或者備選地可以是數(shù)據(jù)處理裝置中的某個其他簡化的控制元
件,例如僅僅控制啟動然后將所有其它任務(wù)委托給一個或更多數(shù)據(jù)引擎
的控制元件。
資源管理器單元可以擔(dān)當(dāng)主設(shè)備來管理所分配的共享資源使用的方式存在很多。在一個實(shí)施例中,將由數(shù)據(jù)引擎執(zhí)行的大量數(shù)據(jù)處理任務(wù) 包括指令序列,所迷指令序列包括可由數(shù)據(jù)引擎核執(zhí)行的指令集中的至 少一個指令,以使得所述資源管理器單元擔(dān)當(dāng)所述主設(shè)備,當(dāng)執(zhí)行所述 至少一個指令時(shí),所述資源管理單元可以操作以向數(shù)據(jù)引擎子系統(tǒng)發(fā)出 控制命令,從而管理所分配的共享資源的使用。因此,根據(jù)這種實(shí)施例, 通過從資源管理器單元向數(shù)據(jù)引擎子系統(tǒng)的發(fā)出控制命令,使得數(shù)據(jù)引 擎子系統(tǒng)以期望的方式來管理所分配的共享資源的使用。
在一個特定實(shí)施例中,數(shù)據(jù)引擎子系統(tǒng)包括有控制邏輯,所述控制 邏輯可以操作以從資源管理器單元接收控制命令,且#>據(jù)控制命令來控 制所分配的共享資源的使用。在一個實(shí)施例中,數(shù)據(jù)引擎子系統(tǒng)內(nèi)的控
制邏輯將包括三個接口第一接口為配置接口,通過該配置接口可以由 主處理單元來配置控制邏輯的操作;第二接口為控制接口,經(jīng)過該控制 接口可以發(fā)生數(shù)據(jù)引擎核的資源管理器單元與數(shù)據(jù)引擎子系統(tǒng)的控制邏 輯之間的通信;第三接口是控制邏輯與數(shù)據(jù)引擎外部的數(shù)據(jù)處理裝置的 部分之間的接口,通過該接口,控制邏輯可以實(shí)現(xiàn)所述資源管理器單元 授予的所分配的共享資源的管理。
可由數(shù)據(jù)引擎核執(zhí)行的指令集內(nèi)提供的指令可以采用各種形式。在 一個實(shí)施例中,可由數(shù)據(jù)引擎核執(zhí)行的指令包括至少一個傳輸啟動指 令,當(dāng)被執(zhí)行時(shí),該傳輸啟動指令使得資源管理器單元擔(dān)當(dāng)所述主設(shè)備。 因此,在這種實(shí)施例中,傳輸啟動指令的執(zhí)行將使得向數(shù)據(jù)引擎子系統(tǒng) 發(fā)出適當(dāng)?shù)目刂泼?,以啟動某種操作,例如某些數(shù)據(jù)的傳輸、向中斷 控制器發(fā)出中斷信號、對所分配的內(nèi)存區(qū)域進(jìn)行重新編程等。
在一個實(shí)施例中,所分配的共享資源和數(shù)據(jù)引擎核彼此并發(fā)操作, 并且可由數(shù)據(jù)引擎核執(zhí)行的指令集包括至少一個同步指令,當(dāng)被執(zhí)行 時(shí),該同步指令使得在所分配的共享資源和數(shù)據(jù)引擎核之間發(fā)生同步。 由于所分配的共享資源相對于數(shù)據(jù)引擎并發(fā)操作,因此在任意特定時(shí)間 點(diǎn),所分配的共享資源和數(shù)據(jù)引擎兩者可以彼此獨(dú)立地操作,但是卻不 需獲悉彼此的狀態(tài)。因此同步指令的使用允許到達(dá)所分配的資源與數(shù)據(jù) 引擎之間發(fā)生同步的同步點(diǎn)。這一點(diǎn)是有益的,因?yàn)檫@通常是將會在程 序代碼內(nèi)達(dá)到該點(diǎn)的情況,此處只有在這種同步就位后才能夠執(zhí)行下一 指令。如前所述,在特定的時(shí)間點(diǎn)處,通常在切換至新的會話時(shí),主處理 單元可以改變數(shù)據(jù)引擎子系統(tǒng)的配置。然而,任何對于配置的改變意味 著數(shù)據(jù)處理裝置的各個部分的重置,所述各個部分已經(jīng)依賴當(dāng)前設(shè)置進(jìn) 行操作。在通常的實(shí)施例中,將會很重要的是,確保仔細(xì)地處理這種過 程,尤其重要的是確保在發(fā)生這種改變之前使數(shù)據(jù)引擎核和所分配的共 享資源同步。因此,在一個實(shí)施例中,當(dāng)主處理單元指示了用于數(shù)據(jù)引 擎子系統(tǒng)的新配置時(shí),數(shù)據(jù)引擎核可以操作來執(zhí)行所述同步指令之一, 以便于到達(dá)使所分配的共享資源與數(shù)據(jù)引擎同步的同步點(diǎn),在到達(dá)同步 點(diǎn)后,新的配置才在數(shù)據(jù)引擎子系統(tǒng)中起作用。
可用以各種方式來布置數(shù)據(jù)引擎核。然而,在一個實(shí)施例中,數(shù)據(jù) 引擎核包括由多個功能單元構(gòu)成的數(shù)據(jù)通路邏輯,所述功能單元其中之 一是資源管理器單元,所述數(shù)據(jù)引擎核進(jìn)一步包括可以操作來對于序列 中的每個指令進(jìn)行控制的控制器,該功能單元依照該指令動作。因此, 根據(jù)這種實(shí)施例,可以在數(shù)據(jù)引擎中提供多個功能單元,使每個功能單 元用于依照特定類型的指令動作,以便提供那些指令的快速有效的處 理,控制器用來確保由適當(dāng)?shù)墓δ軉卧獊硪勒罩噶钚蛄兄械膫€別指令動 作。在一個實(shí)施例中,每個指令由控制器來執(zhí)行,以產(chǎn)生將被路由到適 當(dāng)?shù)墓δ軉卧目刂菩盘?,而在備選實(shí)施例中,控制器可以僅僅將每個 指令路由到適當(dāng)?shù)墓δ軉卧?,以供該功能單元?zhí)行。
在一個實(shí)施例中,提供有數(shù)據(jù)引擎編譯器,用于調(diào)度將由數(shù)據(jù)引擎 核執(zhí)行的指令序列。編譯器的目標(biāo)是在考慮了數(shù)據(jù)引擎核的結(jié)構(gòu)的情況 下,確保指令序列以盡可能有效的方式來執(zhí)行。根據(jù)本發(fā)明的一個實(shí)施 例,可由數(shù)據(jù)引擎核執(zhí)行的指令集包括用于標(biāo)識邊界條件的至少一個邊 界指令,當(dāng)遇到所述邊界指令其中一個時(shí),所述編譯器可以操作以在考 慮了邊界條件的情況下對序列中隨后指令的執(zhí)行進(jìn)行調(diào)度。舉例來講,
邊界指令可以標(biāo)識將經(jīng)歷DMA程序的地址組,當(dāng)有指令緊跟在該邊界指 令之后時(shí),編譯器可以操作以對不需要訪問那些地址組的指令進(jìn)行調(diào) 度。
應(yīng)當(dāng)注意的是,在一些實(shí)施例中,可以以不同的方式來使用邊界指 令所規(guī)定的邊界條件,以確保數(shù)據(jù)引擎核的有效處理。例如,在一個實(shí) 施例中,可以把邊界條件從資源管理器單元傳送到數(shù)據(jù)引擎子系統(tǒng)的控制邏輯,以便在倘若數(shù)據(jù)引擎核需要對邊界條件所規(guī)定的地址范圍內(nèi)的
地址進(jìn)行訪問時(shí),設(shè)置致使數(shù)據(jù)引擎核停止的信號量(semaphore)。當(dāng) 不再需要邊界條件時(shí),可以清空信號量,從而允許數(shù)據(jù)引擎核繼續(xù)使得 其停止的訪問。
可以以各種方式使用資源管理器單元。根據(jù)一個實(shí)施例,資源管理 器單元可以作為與數(shù)據(jù)引擎同步的數(shù)據(jù)傳輸控制器操作。因此,舉例來 講,當(dāng)擔(dān)當(dāng)主設(shè)備時(shí),資源管理器單元將擔(dān)當(dāng)數(shù)據(jù)傳輸啟動設(shè)備,并且 另外如果用作從屬設(shè)備,則資源管理器單元可以用作數(shù)據(jù)選通(data gate)設(shè)備。
在一個實(shí)施例中,所分配的共享資源包括DMA邏輯,并且資源管 理器單元可以操作以擔(dān)當(dāng)DMA主設(shè)備,進(jìn)而使用所述DMA邏輯來啟動 數(shù)據(jù)的傳輸。因此,在這種實(shí)施例中,由于或者當(dāng)因數(shù)據(jù)引擎代表主處 理單元執(zhí)行任務(wù)而需要這些數(shù)據(jù)傳輸時(shí),數(shù)據(jù)引擎核的資源管理器單元 能夠出于它自己的意志來啟動數(shù)據(jù)傳輸。這種數(shù)據(jù)傳輸可以涉及向數(shù)據(jù) 引擎中的數(shù)據(jù)傳輸或者向數(shù)據(jù)引擎外的數(shù)據(jù)傳輸。
在一個實(shí)施例中,所分配的共享資源包括中斷控制器,并且資源管 理器單元可以操作發(fā)出中斷,以經(jīng)由數(shù)據(jù)引擎子系統(tǒng)而路由到中斷控制 器。因此,這使得可以直接由數(shù)據(jù)引擎核來執(zhí)行基于中斷的處理,并因 此在數(shù)據(jù)引擎需要發(fā)送信號給另一設(shè)備時(shí),資源管理器單元可以使得發(fā) 出適當(dāng)?shù)闹袛嘈盘枴?br>
在一個實(shí)施例中,所分配的共享資源包括存儲器區(qū)域,并且資源管 理器單元可以操作發(fā)出控制信號,以啟動存儲器區(qū)域中一個或更多部分 的使用改變。因此在特定的會話中,這使得數(shù)據(jù)引擎可以在考慮了正在 執(zhí)行的任務(wù)的情況下最優(yōu)化所分配的存儲器資源的使用。
在所分配的共享資源包括存儲器區(qū)域的實(shí)施例中,可由數(shù)據(jù)引擎核 執(zhí)行的指令集可以包括至少一個管理指令,以使得能夠進(jìn)行存儲區(qū)域的 動態(tài)運(yùn)行時(shí)間管理。因此,舉例來講,存儲器區(qū)域的部分可以用來執(zhí)行 由頭指針和尾指針定義的軟件FIFO結(jié)構(gòu),并且例如通過查詢頭指針、設(shè) 置尾指針、配置軟件FIFO等,該管理指令可以執(zhí)行該軟件FIFO的動態(tài) 運(yùn)4亍時(shí)間管理。
在一個實(shí)施例中,可由數(shù)據(jù)引擎核執(zhí)行的指令集包括至少一個調(diào)度指令,當(dāng)被執(zhí)行時(shí),所述至少一個調(diào)度指令使得對任務(wù)進(jìn)行調(diào)度以供所 分配的共享資源執(zhí)行。例如如果執(zhí)行任務(wù)所需的資源并非可以立即獲 得,則這種處理是適當(dāng)?shù)模⑶以谶@種情況下可以使任務(wù)排隊(duì)等候在資 源變?yōu)榭捎脮r(shí)執(zhí)行。
在一個實(shí)施例中,可由數(shù)據(jù)引擎核執(zhí)行的指令集包括至少一個注冊 指令,當(dāng)在數(shù)據(jù)引擎核正在執(zhí)行第一數(shù)據(jù)處理任務(wù)的同時(shí)被執(zhí)行時(shí),該 至少一個注冊指令將注冊第二數(shù)據(jù)處理任務(wù)以供運(yùn)行。通過這種方法, 在一個實(shí)施例中的資源管理器單元提供了 一個接口 ,所述接口利用某個 調(diào)度例程允許一個任務(wù)來注冊隨后的任務(wù),例如利用操作系統(tǒng)的調(diào)度器 部分。
在一個實(shí)施例中,可由數(shù)據(jù)引擎核執(zhí)行的指令集包括至少 一個回調(diào) 指令,如果數(shù)據(jù)引擎核確定在執(zhí)行第 一數(shù)據(jù)處理任務(wù)的同時(shí)該任務(wù)的至 少一個執(zhí)行條件未被滿足,則數(shù)據(jù)引擎核可以操作來執(zhí)行回調(diào)指令,以 使得資源管理器單元向數(shù)據(jù)引擎系統(tǒng)標(biāo)識應(yīng)該在滿足所述至少一個條件 時(shí)再次調(diào)用第一數(shù)據(jù)處理任務(wù),從而允許數(shù)據(jù)引擎核終止第一處理任務(wù) 的執(zhí)行直至滿足所述至少一個條件。因此,通過這些種類的實(shí)施例,數(shù) 據(jù)引擎核就可以決定如果沒有滿足特定的條件,則利用資源管理器單元 來終止特定任務(wù)的執(zhí)行,然后提供一種用于建議數(shù)據(jù)引擎子系統(tǒng)將在條 件滿足時(shí)的某個稍后點(diǎn)再次調(diào)用該任務(wù)的機(jī)制。因此該方法支持在如何 通過數(shù)據(jù)引擎核執(zhí)行任務(wù)方面的靈活性,而無需增加數(shù)據(jù)引擎核本身的 任何調(diào)度的復(fù)雜性。
在一個實(shí)施例中,數(shù)據(jù)引擎包括存根層(stub layer),當(dāng)數(shù)據(jù)處理任 務(wù)將由數(shù)據(jù)引擎核執(zhí)行時(shí),該存根層可以操作以檢查在允許數(shù)據(jù)引擎核 執(zhí)行數(shù)據(jù)處理任務(wù)之前數(shù)據(jù)處理任務(wù)所需要的一個或更多先決條件。這 樣的先決條件例如可以是特定程序數(shù)據(jù)的可用性、常數(shù)表數(shù)據(jù)、狀態(tài)分 配等。通過使用這種存根層,可以在數(shù)據(jù)引擎上實(shí)現(xiàn)更加通用化的任務(wù) 模型,其中可以首先調(diào)用特定檢查過程,而不僅僅是執(zhí)行任務(wù)。
在一個這樣的實(shí)施例中,可由數(shù)據(jù)引擎核執(zhí)行的指令集包括至少一 個請求指令,并且當(dāng)存根層確定數(shù)據(jù)處理任務(wù)所需的至少一個先決條件 未滿足時(shí),則執(zhí)行該請求指令以使得資源管理器單元向數(shù)據(jù)引擎子系統(tǒng) 輸出請求命令,請求需要滿足的至少一個先決條件。通過這樣的方式,可以延遲數(shù)據(jù)引擎核對任務(wù)的實(shí)際執(zhí)行,直至滿足了所述至少一個先決 條件。
在一個實(shí)施例中,可由數(shù)據(jù)引擎核執(zhí)行的指令集包括至少一個錯誤 處理指令,當(dāng)不能滿足數(shù)據(jù)處理任務(wù)所需的至少一個先決條件時(shí),執(zhí)行 該錯誤處理指令,使得資源管理器單元輸出任何需要的錯誤條件,并退 出數(shù)據(jù)處理任務(wù)。在一個使用早先提及的存根層的實(shí)施例中,可以將錯 誤處理指令的執(zhí)行布置成使得從資源管理器單元向存根層發(fā)出退出命 令,從而執(zhí)行退出例程。
在上述討論中,已經(jīng)討論了包括各種不同類型指令的可由數(shù)據(jù)引擎 核執(zhí)行的指令集,特別已經(jīng)描述了包括傳輸啟動指令、同步指令、邊界 指令、調(diào)度指令、注冊指令、回調(diào)指令、請求指令和錯誤處理指令的指 令集。應(yīng)當(dāng)注意的是,任何特定指令可以屬于這些指令類型中一個以上
的類型。例如,傳輸啟動指令還可以是邊界指令。例如DMA開始指令還 可以限定將經(jīng)歷DMA操作的地址范圍。以另一實(shí)例為例,在實(shí)施由指令 所標(biāo)識的任務(wù)所需的資源當(dāng)前不可用的情形中,可以將傳輸啟動指令認(rèn) 為是調(diào)度指令。
從上面的描述中,應(yīng)當(dāng)理解的是,所分配的共享資源可以采用各種 形式。在一個實(shí)施例中,所分配的共享資源是促進(jìn)數(shù)據(jù)引擎和數(shù)據(jù)處理 裝置的處理單元之間通信的數(shù)據(jù)處理元件。所分配的共享資源利用處理 單元促進(jìn)了與數(shù)據(jù)引擎的通信,該數(shù)據(jù)單元可以采用各種形式,因此例 如可以是主處理單元或者數(shù)據(jù)處理裝置中的某個其他處理單元,諸如傳_ 另一數(shù)據(jù)引擎。
可由數(shù)據(jù)引擎核執(zhí)行的指令集中的指令可以采用各種形式。然而, 在一個實(shí)施例中,可由數(shù)據(jù)引擎核執(zhí)行的指令集中至少一個指令被布置 成使得返回指示所述指令是否成功執(zhí)行的標(biāo)志,藉此在缺少該標(biāo)志的情 況下,數(shù)據(jù)引擎核將停止并進(jìn)入功率節(jié)省模式。因此,根據(jù)這樣的實(shí)施 例,從數(shù)據(jù)引擎核的觀點(diǎn)來看,可以把該指令看作是無條件返回,以使 得數(shù)據(jù)引擎核在缺少返回標(biāo)志時(shí)停止。在缺少返回的標(biāo)志時(shí),通過使得 數(shù)據(jù)引擎核自動停止并進(jìn)入功率節(jié)省模式,提供了數(shù)據(jù)引擎內(nèi)特別具有 功率效率的實(shí)施。
在一個實(shí)施例中,某些指令將是阻塞性(blocking)的,并且將發(fā)出一個停止直到這些指令已經(jīng)完成,這些指令是將標(biāo)志返回的指令。其他 指令將是非阻塞性的,這種非阻塞指令要么執(zhí)行保證要在固定數(shù)目的周 期中完成的動作(例如當(dāng)請求狀態(tài)消息時(shí)),或者開始數(shù)據(jù)引擎核不需要 知道結(jié)果或該結(jié)果并非立刻需要(例如當(dāng)?shù)诙顚⒂糜趫?zhí)行同步時(shí)) 的動作。
從第二方面來考慮,本發(fā)明提供了一種操作數(shù)據(jù)處理裝置的方法, 所述數(shù)據(jù)處理裝置包括可以操作以執(zhí)行多個數(shù)據(jù)處理任務(wù)的主處理單 元,和可以操作以代表所述主處理單元執(zhí)行大量所述數(shù)據(jù)處理任務(wù)的數(shù)
據(jù)引擎,所述方法包括步驟為數(shù)據(jù)引擎分配至少一個共享資源,以供 數(shù)據(jù)引擎在執(zhí)行所述大量數(shù)據(jù)處理任務(wù)時(shí)使用;使用所述數(shù)據(jù)引擎的數(shù) 據(jù)引擎核來執(zhí)行所述大量數(shù)據(jù)處理任務(wù);配置用于管理數(shù)據(jù)引擎核與所 分配的資源之間通信的數(shù)據(jù)引擎子系統(tǒng);以及使用數(shù)據(jù)引擎核內(nèi)相對于 數(shù)據(jù)引擎子系統(tǒng)擔(dān)當(dāng)主設(shè)備的資源管理器單元來管理所分配的共享資源 的使用。
從第三方面來考慮,本發(fā)明提供了一種用于數(shù)據(jù)處理裝置的數(shù)據(jù)引 擎,所述數(shù)據(jù)處理裝置包括可以操作以執(zhí)行多個數(shù)據(jù)處理任務(wù)的主處理 單元,所述數(shù)據(jù)引擎可以操作以代表所述主處理單元執(zhí)行大量所述數(shù)據(jù) 處理任務(wù),并且為所述數(shù)據(jù)引擎分配數(shù)據(jù)處理裝置的至少一個共享資 源,以供在執(zhí)行所述大量數(shù)據(jù)處理任務(wù)時(shí)使用,所述數(shù)據(jù)引擎包括數(shù) 據(jù)引擎核,可以操作以執(zhí)行所述大量數(shù)據(jù)處理任務(wù);數(shù)據(jù)引擎子系統(tǒng), 可由所述主處理單元進(jìn)行配置并可以操作以管理所述數(shù)據(jù)引擎核和所分 配的共享資源之間的通信;以及所述數(shù)據(jù)引擎核內(nèi)的資源管理器單元,
可操作以相對于數(shù)據(jù)引擎子系統(tǒng)擔(dān)當(dāng)主設(shè)備,從而管理所分配的共享資 源的使用。
將參考附圖中示出的實(shí)施例通過實(shí)例來進(jìn)一步描述本發(fā)明,在附圖
中
圖1示出了根據(jù)本發(fā)明一個實(shí)施例的數(shù)據(jù)處理裝置的方框圖; 圖2示出了在根據(jù)本發(fā)明實(shí)施例的圖1中至少一個數(shù)據(jù)引擎內(nèi)提供 的更加詳細(xì)的元件的方框圖3示出了在根據(jù)本發(fā)明實(shí)施例的圖1中至少一個數(shù)據(jù)引擎內(nèi)提供的更加詳細(xì)的部件的方才匡圖4示出了當(dāng)啟動一個會話時(shí)數(shù)據(jù)處理裝置所執(zhí)行的步驟的流程 圖,以使得特定任務(wù)由本發(fā)明實(shí)施例的數(shù)據(jù)引擎來執(zhí)行;
圖5至圖9示出了在本發(fā)明特定實(shí)施例的主機(jī)處理器、數(shù)據(jù)引擎以 及共享資源之間發(fā)生的各種事務(wù)處理的事務(wù)處理圖10示出了根據(jù)本發(fā)明實(shí)施例可以在分配給數(shù)據(jù)S1擎的存儲區(qū)域內(nèi) 實(shí)施的改變的示意圖。
具體實(shí)施例方式
圖1是根據(jù)本發(fā)明實(shí)施例的數(shù)據(jù)處理裝置的方框圖。數(shù)據(jù)處理裝置 10具有主機(jī)處理器20,該主機(jī)處理器20可以經(jīng)由主機(jī)總線40 (實(shí)際上 主機(jī)總線40可以由分離的總線網(wǎng)絡(luò)構(gòu)成)與各種連接至主機(jī)總線的其他 設(shè)備通信。具體地,可以提供諸如SDRAM 30的存儲器裝置,用于存儲 主機(jī)處理器需要的數(shù)據(jù)。類似的,可以提供一個或更多數(shù)據(jù)引擎60、 70 , 用于代表主機(jī)處理器20來執(zhí)行特定任務(wù)。另外,可以提供一個或更多共 享資源50 ,所述一個或更多共享資源由主機(jī)處理器20分配給數(shù)據(jù)引擎 60、 70其中之一或者兩者,以供數(shù)據(jù)引擎在代表主機(jī)處理器20執(zhí)行任務(wù) 時(shí)使用。
共享資源50可以采用各種形式,并且可以構(gòu)成一個或更多分離資 源。這種共享資源的實(shí)例有,但并不限制于用于管理數(shù)據(jù)傳輸?shù)腄AM 邏輯單元、用于處理中斷請求的矢量中斷控制器(VIC)、存儲器區(qū)域、 用于促進(jìn)數(shù)據(jù)引擎60、 70與數(shù)據(jù)處理裝置10的某個其他元件(例如, 主機(jī)處理器20或另一數(shù)據(jù)引擎等)之間通信的通信交換元件。
根據(jù)本發(fā)明的實(shí)施例,數(shù)據(jù)引擎60、 70中至少一個是具有數(shù)據(jù)引擎 核和數(shù)據(jù)引擎子系統(tǒng)的數(shù)據(jù)引擎,所述數(shù)據(jù)引擎核用于執(zhí)行數(shù)據(jù)處理任 務(wù),所述數(shù)據(jù)引擎子系統(tǒng)可由主處理單元配置,并布置成管理數(shù)據(jù)引擎 核與所分配的共享資源之間的通信。運(yùn)行在數(shù)據(jù)處理裝置上的應(yīng)用程序 通常將包括大量分離的會話,并且對于每個會話,主機(jī)處理器20被布置 成用于配置數(shù)據(jù)引擎子系統(tǒng)并分配一個或更多共享資源以供數(shù)據(jù)引擎在 會話期間使用。在一個實(shí)施例中,將經(jīng)由數(shù)據(jù)引擎子系統(tǒng)內(nèi)的控制邏輯 來配置數(shù)據(jù)引擎核,或者備選地可以經(jīng)由提供在數(shù)據(jù)引擎內(nèi)的存根層來 配置,該存根層隨后參考圖9更加詳細(xì)地進(jìn)行描述。如果數(shù)據(jù)引擎60、 70兩者都是上述類型的數(shù)據(jù)引擎,那么每個數(shù)據(jù) 引擎將具有它自己的數(shù)據(jù)引擎核。在一個實(shí)施例中,每個數(shù)據(jù)引擎還將 具有它自己的數(shù)據(jù)引擎子系統(tǒng),但是應(yīng)當(dāng)注意的是,在備選的實(shí)施例中, 數(shù)據(jù)引擎60、 70可以共享數(shù)據(jù)引擎子系統(tǒng)。
圖2更加詳細(xì)地示出了在根據(jù)本發(fā)明實(shí)施例的數(shù)據(jù)引擎60、 70其中 至少一個內(nèi)提供的邏輯的方框圖。具體地,在一個實(shí)施例中,假設(shè)至少 一個數(shù)據(jù)引擎60是上述類型的數(shù)據(jù)引擎,因此包括數(shù)據(jù)引擎子系統(tǒng)100 和數(shù)據(jù)引擎核130。數(shù)據(jù)引擎核具有數(shù)據(jù)通路150,該數(shù)據(jù)通路通常包括 用于響應(yīng)于指令而動作的大量功能單元,所述指令構(gòu)成了由數(shù)據(jù)引擎處 理的任務(wù)。數(shù)據(jù)引擎核130中的控制器140負(fù)責(zé)確保通過數(shù)據(jù)通路150 內(nèi)的適當(dāng)?shù)墓δ軉卧鶕?jù)指令序列中的單獨(dú)指令動作。
數(shù)據(jù)引擎核130經(jīng)由數(shù)據(jù)引擎子系統(tǒng)100與外部環(huán)境通信,即與數(shù) 據(jù)引擎60外部的數(shù)據(jù)處理裝置10的那些部分通信,因而尤其包括共享 資源50。正如先前所提及的那樣,數(shù)據(jù)引擎子系統(tǒng)由主處理單元以逐個 會話為基礎(chǔ)進(jìn)行配置,并被布置成用于管理數(shù)據(jù)引擎核與所分配的共享 資源之間的通信。尤其是數(shù)據(jù)引擎子系統(tǒng)100包括粘合邏輯(glue logic) 120,該粘合邏輯被主機(jī)處理器20配置成允許在數(shù)據(jù)引擎核130與包括 共享資源50的外部環(huán)境之間進(jìn)行適當(dāng)?shù)耐ㄐ拧?br>
除粘合邏輯120之外,數(shù)據(jù)引擎子系統(tǒng)100可以包括一個或更多非 共享資源110,這些非共享資源可以是專用于連接至該數(shù)據(jù)引擎子系統(tǒng) IOO的數(shù)據(jù)引擎核的資源。這種非共享資源的實(shí)例可以是特別專用于數(shù)據(jù) 引擎60的存儲器部分。
圖3更加詳細(xì)地示出了在根據(jù)本發(fā)明實(shí)施例的數(shù)據(jù)引擎60以及可選 地?cái)?shù)據(jù)引擎70內(nèi)提供的元件的方框圖。如在圖3的實(shí)例中所示,在數(shù)據(jù) 引擎子系統(tǒng)100內(nèi)提供了緊密耦合存儲器(TCM) 形式的非共享資 源,該TCM230專用于數(shù)據(jù)引擎核130。
粘合邏輯120實(shí)際上包括大量元件。具體地,粘合邏輯120包括連 接至配置端口 202的解碼器200,通過該配置端口,解碼器從主機(jī)處理器 20接收配置設(shè)置信息。解碼器200將對該配置設(shè)置信息進(jìn)行解碼,以使 得適當(dāng)?shù)目刂菩盘柋话l(fā)送至數(shù)據(jù)引擎子系統(tǒng)100的其他元件,從而進(jìn)行 數(shù)據(jù)引擎子系統(tǒng)所需的配置。粘合邏輯120還包括控制邏輯210,控制邏輯210可以經(jīng)由數(shù)據(jù)引擎 子系統(tǒng)的通信端口 204向數(shù)據(jù)引擎子系統(tǒng)100內(nèi)的各種其他部件以及向 外部環(huán)境的元件發(fā)出控制信號。此外,根據(jù)發(fā)明的一個實(shí)施例,控制邏 輯210耦合到提供在數(shù)據(jù)引擎核l30的數(shù)據(jù)通路150內(nèi)的資源管理器單 元270,該資源管理器單元此處也稱為系統(tǒng)調(diào)用功能單元(SCFU)。 SCFU 270可以相對于數(shù)據(jù)引擎子系統(tǒng)100擔(dān)當(dāng)主設(shè)備,以便允許數(shù)據(jù)引擎核 130啟動同步、控制事務(wù)處理和數(shù)據(jù)引擎核130與包括任何所分配的共享 資源50的外部環(huán)境之間的數(shù)據(jù)傳輸。具體地,提供了由SCFU270根據(jù) 其進(jìn)行動作的指令集,以使得從SCFU270向數(shù)據(jù)引擎子系統(tǒng)100內(nèi)的控 制邏輯210發(fā)布相應(yīng)的控制命令,從而使得出現(xiàn)所需的功能。在數(shù)據(jù)通 路150內(nèi)提供了通信端口 282,經(jīng)過該通信端口 282, SCFU270能夠與 控制邏輯210通信,并且通過該通信端口 282,控制邏輯210還能夠與 SCFU 270通信。SCFU 270還可以具有輸入/輸出端口 274,經(jīng)過該輸入/ 輸出端口 274可以進(jìn)行控制器140與SCFU270之間的通信。
因此,可以把SCFU 270看作是接口,該接口允許數(shù)據(jù)引擎核130 通過向數(shù)據(jù)引擎子系統(tǒng)100發(fā)布消息而使其自己的意圖被得知。類似的, 主機(jī)處理器20也可以使得自己的意圖被得知(例如它想要改變會話)。 子系統(tǒng)控制邏輯210然后將該信息組合,并采取適當(dāng)?shù)膭幼?,這將在隨 后通過實(shí)例參考圖5至圖9的事務(wù)處理圖來詳細(xì)討論。
圖3的實(shí)例中的數(shù)據(jù)引擎子系統(tǒng)IOO還可以包括DMA接口 "0,該 DMA接口 220耦合至數(shù)據(jù)端口 208,經(jīng)過該DMA接口可以在數(shù)據(jù)引擎 子系統(tǒng)100與外部環(huán)境之間進(jìn)行DMA事務(wù)處理。
如圖3所示的TCM 230實(shí)際上將包括TCM本身以及與TCM關(guān)聯(lián) 提供的關(guān)聯(lián)控制邏輯,例如以便在要求對TCM訪問的多個請求之間進(jìn)行 仲裁??刂七壿?10可以發(fā)布控制信號到TCM控制邏輯,以根據(jù)需要來 配置TCM 230。
除SCFU 270之外,數(shù)據(jù)通路150還包括多個功能單元250、 260, 并且每個功能單元可以看作是分別具有兩個接口 252、 2M和262、 264。 這些接口從數(shù)據(jù)通路150都是可見的,因此這些接口的屬性對用于編譯 指令以供數(shù)據(jù)通路150進(jìn)行處理的數(shù)據(jù)引擎編譯器(未示出)來講是知 曉的。相反,應(yīng)當(dāng)注意的是,SCFU270具有一個從數(shù)據(jù)通路150可見的接口 274,因此該接口對于編譯器也是公知的,但是它的另一接口是從數(shù) 據(jù)引擎子系統(tǒng)100可見的通信端口 282,因此該接口對于編譯器是不可見 的。應(yīng)當(dāng)注意的是,SCFU270還可以可選地提供有通向外部環(huán)境的第三 接口 (未示出),通過該第三接口可以對指定給SCFU的功能性進(jìn)行配置。 該可選的第三接口例如可以是服務(wù)訪問協(xié)議(SAP)接口。
如圖3所示,可以在數(shù)據(jù)通路150內(nèi)提供大量數(shù)據(jù)端口 284、 286, 經(jīng)過所述數(shù)據(jù)端口 284、 286,功能單元250、 260可以經(jīng)由數(shù)據(jù)引擎子系 統(tǒng)100從數(shù)據(jù)處理裝置的其他元件接收數(shù)據(jù)或者向其輸出數(shù)據(jù)。在一個 實(shí)施例中,這些數(shù)據(jù)接口 284、 286中的每個均可由每個功能單元250、 260來使用。在圖3示出的特定實(shí)例中, 一個數(shù)據(jù)端口 耦合至TCM 230,使得數(shù)據(jù)可以在功能單元250、 260與TCM2:30之間進(jìn)行交換,而 另一數(shù)據(jù)端口 286經(jīng)過數(shù)據(jù)引擎子系統(tǒng)IOO耦合至數(shù)據(jù)引擎子系統(tǒng)的數(shù) 據(jù)端口 206,以允許數(shù)據(jù)在數(shù)據(jù)引擎核130與形成了外部環(huán)境內(nèi)共享資源 的存儲器之間進(jìn)行通信。
可以通過作為數(shù)據(jù)引擎架構(gòu)的組成部分的指令集(即,整個數(shù)據(jù)引 擎的能力/指令集)來操作SCFU270。在一個實(shí)施例中,對那些SCFU專 用指令進(jìn)行約束,使其被建模為標(biāo)準(zhǔn)OSI (開放式系統(tǒng)互聯(lián))層或者普 通的OS (操作系統(tǒng))調(diào)用。通過這種方式,可以顯著降低當(dāng)對軟件進(jìn)行 改變以使其運(yùn)行在包括這種數(shù)據(jù)引擎的數(shù)據(jù)處理裝置上時(shí)的軟件移植 (porting )工作量。
如早先所述,數(shù)據(jù)通路150內(nèi)的SCFU270可以相對于數(shù)據(jù)引擎子系 統(tǒng)100充當(dāng)主設(shè)備,以對由主機(jī)處理器20分配給數(shù)據(jù)引擎60的任何已 分配的共享資源50進(jìn)行管理。在這種用法的一個實(shí)例中,SCFU 270可 以充當(dāng)與數(shù)據(jù)引擎核心130同步的數(shù)據(jù)傳輸控制器。舉例來講,如果所 分配的共享資源包括DMA邏輯,SCFU 270可以充當(dāng)DMA主設(shè)備以啟 動使用DMA邏輯的數(shù)據(jù)傳輸。具體地,控制器140可以執(zhí)行指令,以經(jīng) 由端口 274在路徑147上向SCFU 270發(fā)出控制信號,以使得控制命令經(jīng) 過通信端口 282發(fā)出到控制邏輯210,從而設(shè)法運(yùn)4亍DMA傳輸過程。這 將引起控制邏輯210發(fā)送適當(dāng)?shù)目刂菩盘柦oDMA接口 220,以使得傳輸 請求通過DMA接口 220經(jīng)由數(shù)據(jù)端口 208輸出到提供在數(shù)據(jù)引擎60外 部的DMA邏輯。這將會啟動經(jīng)由DMA邏輯的DMA數(shù)據(jù)傳輸。在一個實(shí)例中,數(shù)據(jù)可以從一些外部存儲器傳輸?shù)綌?shù)據(jù)引擎子系統(tǒng)100內(nèi)的 TCM 230中,以致于可以通過數(shù)據(jù)引擎核130的數(shù)據(jù)通路150對數(shù)據(jù)進(jìn) 行快速訪問。在該實(shí)例中,數(shù)據(jù)將會從DMA邏輯經(jīng)由數(shù)據(jù)端口 208路由 至DMA接口 220中,從此處開始,數(shù)據(jù)然后將從DMA接口 220路由到 TCM230,以在其中進(jìn)行存儲。所存儲的數(shù)據(jù)然后就可以由數(shù)據(jù)通路150 通過將數(shù)據(jù)通路150與TCM 230耦合的數(shù)據(jù)端口 284來訪問。
作為可以經(jīng)過使用SCFU 270實(shí)現(xiàn)的另一功能的實(shí)例,控制器140 可以使得SCFU 270向控制邏輯210發(fā)布控制命令,以使得經(jīng)過通信端口 204向矢量中斷控制器(VIC)形式的共享資源輸出中斷請求。該機(jī)制因 此允許有效地通過數(shù)據(jù)引擎核130來有效實(shí)施中斷驅(qū)動處理,而前述那 樣的數(shù)據(jù)引擎核130將僅僅能夠擔(dān)當(dāng)從屬類型設(shè)備,并因此將不能夠發(fā) 出出于其自己意志的中斷。
在另一實(shí)例中,共享的資源可以采用在數(shù)據(jù)引擎核130與數(shù)據(jù)處理 裝置的某個其他元件之間共享的存儲器區(qū)域的形式。在這種實(shí)例中,盡 管已經(jīng)通過主機(jī)處理器10使分配給數(shù)據(jù)引擎60的特定存儲器區(qū)域?qū)τ?會話期間固定,但是SCFU 270可以用來改變在所討論的會話期間使用存 儲器區(qū)域的方式。具體地,可以執(zhí)行一種指令,所述指令使得SCFU 270 經(jīng)過控制邏輯210和通信端口 204將控制信號路由到所討論的存儲器區(qū) 域的存儲器控制器,從而實(shí)現(xiàn)所需要的該存儲器區(qū)域的使用改變。
應(yīng)當(dāng)注意的是,在數(shù)據(jù)引擎子系統(tǒng)IOO在多個數(shù)據(jù)引擎核l:30之間 共享的實(shí)施例中,可以將TCM230自身看作是共享資源,原因在于TCM 230可以在多個數(shù)據(jù)引擎核130之間共享。在這樣的情況下,可以使用同 樣的機(jī)制來改變TCM 230內(nèi)特定存儲器區(qū)域的使用,相關(guān)控制信號從 SCFU 270經(jīng)由控制邏輯210路由到TCM 230內(nèi)的存儲器控制邏輯。
在一個實(shí)施例中,當(dāng)所分配的共享資源包括存儲器區(qū)域時(shí),數(shù)據(jù)引 擎核130可以布置成執(zhí)行管理指令,該管理指令用于執(zhí)行該存儲器區(qū)域 的動態(tài)運(yùn)行時(shí)間管理。例如,在一個實(shí)施例中,可以在存儲器區(qū)域內(nèi)實(shí) 施軟件定義的FIFO,此處FIFO的范圍可以由頭指針和尾指針來定義。 SCFU 270可以布置成根據(jù)指令動作,以對該軟件FIFO進(jìn)行配置、使數(shù) 據(jù)被載入至該軟件FIFO、使數(shù)據(jù)從該軟件FIFO存儲至存儲器、查詢頭 指針、設(shè)置尾指針等。經(jīng)過使用數(shù)據(jù)引擎子系統(tǒng)100內(nèi)的SCFU 270和控制邏輯210,這種功能允許使得存儲器的動態(tài)運(yùn)行時(shí)間管理有效。
在一個實(shí)施例中,所分配的共享資源和數(shù)據(jù)引擎核130可以彼此并 發(fā)地操作,因此可以同時(shí)執(zhí)行各個操作,而不用知悉彼此的狀態(tài)。由數(shù) 據(jù)引擎執(zhí)行的指令序列可以是,在特定時(shí)間點(diǎn)需要確保在指令執(zhí)行之前 所分配的共享資源的活動已經(jīng)與數(shù)據(jù)引擎核的活動同步的指令序列。在 本發(fā)明的一個實(shí)施例中,這可以通過將SCFU 270布置成根據(jù)同步指令來 動作,以使得在所分配的共享資源和數(shù)據(jù)引擎核之間出現(xiàn)同步來實(shí)現(xiàn)。 這種同步指令可以是顯式或者隱式的。在跟隨在DMA開始指令之后使得 DMA引擎形式的共享資源來啟動DMA傳輸時(shí),顯式同步指令的一個實(shí) 例是執(zhí)行DMA完成指令。指令集中由SCFU 270根據(jù)指令而動作的該每 個指令使得標(biāo)志返回,該返回標(biāo)志指示了所述指令是否成功執(zhí)行,因此 從數(shù)據(jù)引擎核的觀點(diǎn)來看,這些指令可以看作是無條件地返回。對于 DMA完成指令,僅當(dāng)數(shù)據(jù)引擎子系統(tǒng)100內(nèi)的控制邏輯210已經(jīng)確定所 需的DMA傳輸已完成時(shí),才會返回標(biāo)志。在返回標(biāo)志的這種時(shí)刻之前, 數(shù)據(jù)引擎核130將停止,這將引起所分配的共享資源(在該實(shí)例為DMA 邏輯)與數(shù)據(jù)引擎核之間的同步,這是因?yàn)閮H當(dāng)DMA傳輸已經(jīng)完成時(shí), 數(shù)據(jù)引擎核130才會繼續(xù)執(zhí)行下一指令。
作為這種顯式同步指令的備選方式,同步指令可以是隱式的。再次 考慮由DMA邏輯形式的共享資源來執(zhí)行DMA傳輸?shù)膶?shí)例,被執(zhí)行用于 啟動DMA傳輸?shù)腄MA開始指令還可以指定/布置將經(jīng)歷該DMA傳輸?shù)?br>
地址范圍。該地址范圍可以看作是指定了邊界條件,在一個實(shí)施例中該 邊界條件將使得數(shù)據(jù)引擎子系統(tǒng)100內(nèi)的控制邏輯210來設(shè)置一信號
量。在數(shù)據(jù)引擎核130試圖執(zhí)行需要該范圍內(nèi)的數(shù)據(jù)地址其中之一的指 令時(shí),將會使得數(shù)據(jù)引擎核130停止。僅當(dāng)DMA傳輸已經(jīng)完成時(shí),才清 除相應(yīng)的信號量,然后數(shù)據(jù)引擎核130才能夠繼續(xù)該指令的執(zhí)行,從而 迫使出現(xiàn)同步。
這種同步指令還可以用于確保,在配置改變之前,使數(shù)據(jù)處理裝置 中依賴于數(shù)據(jù)引擎子系統(tǒng)100特定配置的各種元件的活動同步。正如前 面所提及的那樣,主處理單元20可以在會話之間改變數(shù)據(jù)引擎子系統(tǒng)的 配置。如果主處理單元指示了數(shù)據(jù)引擎子系統(tǒng)的新配置,則可以執(zhí)行同 步指令,使得達(dá)到所分配的共享資源與數(shù)據(jù)引擎60同步的同步點(diǎn),從而僅僅在已經(jīng)達(dá)到同步點(diǎn)之后才使新的配置在數(shù)據(jù)引擎子系統(tǒng)內(nèi)起作用。 這確保了當(dāng)在數(shù)據(jù)引擎子系統(tǒng)的一個配置與另 一配置之間進(jìn)行轉(zhuǎn)變時(shí)的 數(shù)據(jù)處理裝置的正確操作。
如果在會話改變期間,在數(shù)據(jù)引擎子系統(tǒng)內(nèi)并發(fā)過程仍然處于活動
狀態(tài)(在OSI分級中工作于較低層),那么就根據(jù)該會話改變的特定需要
僅放棄或者重置這些過程。例如在接受同步點(diǎn),不需要放棄有效繼續(xù)著 的輸出流,就可以改變編解碼相關(guān)參數(shù)。在另一改變時(shí),可以對輸入文 件進(jìn)行切換,這確實(shí)也需要放棄輸出流。因此,概括而言,僅在需要時(shí) 重置過程。
可由特定指令來指定的前述邊界條件還可以由數(shù)據(jù)引擎編譯器來使
用,目標(biāo)是改善數(shù)據(jù)引擎核130能夠執(zhí)行那些指令的效率,所述特定指 令可由SCFU 270根據(jù)其而動作,所述數(shù)據(jù)引擎編譯器用于調(diào)度供數(shù)據(jù)引 擎核130來執(zhí)行的指令序列。具體地,可以將編譯器布置成當(dāng)遇到設(shè)置 邊界條件的指令時(shí),對邊界條件進(jìn)行分析,并在所述序列中調(diào)度與邊界 條件相關(guān)的隨后指令的執(zhí)行。例如,如果邊界條件指定了將經(jīng)受由設(shè)定 該邊界條件的指令所指定一個或更多操作的存儲器地址范圍,那么編譯 器就可以布置成重新安排后面緊接著的指令,其目標(biāo)是找到后面緊接著 不需要訪問邊界條件所設(shè)置的任一地址的大量指令。這因此將降低當(dāng)執(zhí) 行指令序列時(shí)數(shù)據(jù)引擎核130需要停止的可能性,因而可以提高數(shù)據(jù)引
擎核的速度和效率。
在將要由數(shù)據(jù)引擎核UO來承擔(dān)特定任務(wù)時(shí),可能執(zhí)行該任務(wù)所需 的實(shí)際資源尚不可用。為了處理這種情形,可以將SCFU270布置成向控 制邏輯210發(fā)出控制信號,以執(zhí)行將被調(diào)度的任務(wù),而不是立即執(zhí)行。 因此,以DMA開始指令為例,如果所需資源可用,則可以直接執(zhí)行DMA 開始指令,或者在共享資源尚不可用的情況下,可以由控制邏輯210將 與DMA開始指令相關(guān)的任務(wù)添加到隊(duì)列中,以使得當(dāng)資源變得可用時(shí)開 始所需的任務(wù)。
在一些實(shí)施例中,共享資源其中之一可以是將數(shù)據(jù)引擎60與另一處 理裝置耦合的通信傳輸元件、另一數(shù)據(jù)引擎、主機(jī)處理器20等。在這種 實(shí)施例中,SCFU270可以用于使相關(guān)數(shù)據(jù)引擎核l:30與該其他處理單元 之間的通信和處理同步。因此該機(jī)制例如可以用于實(shí)現(xiàn)數(shù)據(jù)引擎核130與該其他處理單元之間的同步,因而例如提供用于執(zhí)行線程同步的機(jī) 制,該機(jī)制與可以作為操作系統(tǒng)功能來執(zhí)行的線程同步類型類似。
圖4示出了當(dāng)初始化會話時(shí)執(zhí)行的與數(shù)據(jù)引擎60相關(guān)的步驟流程 圖。在步驟300,由主機(jī)處理器20來對會話進(jìn)行初始化,此后,在步驟 310,主機(jī)處理器20被布置成通過向數(shù)據(jù)引擎子系統(tǒng)100的配置端口 202 發(fā)出適當(dāng)?shù)呐渲脭?shù)據(jù)來配置數(shù)據(jù)引擎子系統(tǒng)IOO。在該實(shí)施例中,然后顯 性地經(jīng)過數(shù)據(jù)引擎子系統(tǒng)來配置數(shù)據(jù)引擎核130。 一旦已經(jīng)進(jìn)行了配置, 就可以在步驟320起動數(shù)據(jù)引擎核130,以開始主處理器分配給數(shù)據(jù)引擎 核的任務(wù)序列的處理。當(dāng)隨后在步驟330確定所有分配的任務(wù)已經(jīng)由數(shù) 據(jù)引擎核完成時(shí),在步驟340就可以使數(shù)據(jù)引擎核停止。應(yīng)當(dāng)注意的是, 雖然在特定會話內(nèi)所有的分配任務(wù)均由數(shù)據(jù)引擎核來執(zhí)行,但是數(shù)據(jù)引 擎子系統(tǒng)的配置沒有改變。
圖5示出了當(dāng)數(shù)據(jù)引擎核啟動了 DMA傳輸任務(wù)時(shí),數(shù)據(jù)處理裝置的 各個元件之間發(fā)生的事務(wù)處理的事務(wù)處理圖。首先,在主機(jī)處理器加上 執(zhí)行的主機(jī)過程410使得會話開始,此后主機(jī)過程向DMA邏輯400 (圖 1的共享資源50之一)發(fā)布事務(wù)處理以對該DMA進(jìn)行配置,進(jìn)而供數(shù) 據(jù)引擎60使用。此外,主機(jī)過程啟動對數(shù)據(jù)引擎子系統(tǒng)100的事務(wù)處理, 以使得在其中對DMA接口 220進(jìn)行適當(dāng)?shù)嘏渲?,從而使?shù)據(jù)引擎核與 DMA邏輯400通信。在圖5中,該過程被稱作參數(shù)化,通常該過程涉及 對于所討論特定會話的數(shù)據(jù)引擎子系統(tǒng)100的配置。
一旦進(jìn)行了該配置,主機(jī)過程將經(jīng)由數(shù)據(jù)引擎核130的配置端口 142 訪問數(shù)據(jù)引擎核130的控制器140,以將與所需任務(wù)相關(guān)的指令序列載入 程序存儲器中,此后主機(jī)過程410就能經(jīng)由控制器140相關(guān)的控制端口 143,通過與控制器140通信來啟動所需的任務(wù)。這通常會引起通過相關(guān) 數(shù)據(jù)通路150來執(zhí)行大量的計(jì)算操作,并且在某點(diǎn)處,可以導(dǎo)致DMA開 始指令的執(zhí)行。在執(zhí)行該指令時(shí),控制器140與SCFU270聯(lián)系,使得經(jīng) 過控制邏輯210向數(shù)據(jù)引擎子系統(tǒng)內(nèi)的DMA接口 220傳輸DMA運(yùn)行命 令。應(yīng)當(dāng)注意的是,此時(shí)SCFU270還向控制器140返回DMA開始返回 標(biāo)志,以指示已經(jīng)對DMA開始指令動作??刂破?40需要返回該標(biāo)志, 以使得控制器140能夠繼續(xù)執(zhí)行另外的指令,并最終將控制信號路由至 數(shù)據(jù)通路150內(nèi)的適當(dāng)功能單元。當(dāng)DMA接口 220接收到DMA運(yùn)行命令時(shí),DMA接口 220將會發(fā) 布傳輸指示信號給DMA邏輯400,以指示DMA接口 220正在提供它期 望DMA傳輸?shù)臄?shù)據(jù)。與該傳輸指示信號相關(guān)聯(lián),實(shí)際數(shù)據(jù)將輸出至DMA 邏輯400。例如,參考圖3,該數(shù)據(jù)可以是從TCM 230正在路由到外部 環(huán)境中的某個存儲器設(shè)備的數(shù)據(jù)。當(dāng)DMA接受該數(shù)據(jù)塊時(shí),DMA將會 發(fā)出送回到DMA接口 220的傳輸響應(yīng)信號,該信號基本應(yīng)答數(shù)據(jù)已經(jīng)被 接受,并指示可利用DMA400來接收另外的數(shù)據(jù)塊。每個待傳輸?shù)臄?shù)據(jù) 塊將涉及在DMA接口 220和DMA邏輯400之間的傳輸指示信號與相關(guān) 傳輸響應(yīng)信號的交換。
在圖5的實(shí)例中,假設(shè)在該時(shí)間段期間控制器140繼續(xù)瀏覽指令序 列,并且在某個點(diǎn)處到達(dá)了 DMA完成指令,當(dāng)執(zhí)行時(shí),該DMA完成指 令將使SCFU 270與控制邏輯210通信,以確定DMA處理是否已經(jīng)完成。 然而,一旦DMA接口 220已經(jīng)向控制邏輯210和SCFU 270返回了 DMA 完成信號,才將會指示DMA處理的完成。因此在該時(shí)間段期間,還可能 返回DMA完成返回標(biāo)志給控制器140,因此控制器120停止,如圖5所 示。
僅當(dāng)DMA傳輸已經(jīng)完成,并且適當(dāng)?shù)腄MA完成信號已經(jīng)返回給 SCFU 270之后,SCFU 270才能發(fā)出DMA完成返回標(biāo)志給控制器140, 此后控制器140可以繼續(xù)其操作。在某個點(diǎn)處, 一旦所有的分配任務(wù)已 經(jīng)完成,控制器就發(fā)出"任務(wù)完成"信號給主機(jī)過程410。
上實(shí)施的另一處理實(shí)例的事務(wù)處理圖。在該實(shí)例中,適當(dāng)?shù)墓蚕碣Y源是 VIC 430。利用與前面參考圖5討論的方法相同的方式,當(dāng)主機(jī)處理"0 啟動會話時(shí),主機(jī)過程將對共享資源進(jìn)行配置,在這種情況下VIC 430 也會引起數(shù)據(jù)引擎子系統(tǒng)100的配置,在這種情況下相關(guān)部件是可以被 認(rèn)為駐留在控制邏輯210內(nèi)的中斷接口 "0。然后,當(dāng)開始將由數(shù)據(jù)引擎 核130運(yùn)行的任務(wù)時(shí),控制器140將開始執(zhí)行指令序列以及分發(fā)相應(yīng)的 控制信號給數(shù)據(jù)通路150的相關(guān)功能單元。當(dāng)控制器140到達(dá)需要中斷 的點(diǎn)時(shí),該控制器將執(zhí)行使得相應(yīng)控制信號路由到SCFU 270中的中斷信 號生成指令。然后SCFU將發(fā)送返回標(biāo)志給控制器140以允許控制器140 繼續(xù)執(zhí)行,并且還將發(fā)出中斷發(fā)送命令給數(shù)據(jù)引擎子系統(tǒng)100內(nèi)的中斷接口 420。這將會使得中斷信號從數(shù)據(jù)引擎子系統(tǒng)輸出到VIC 430,從而 致使中斷應(yīng)答響應(yīng)信號從VIC 430返回到中斷接口 420,以指示VIC對 中斷的接受。然后將中斷接收信號經(jīng)由控制邏輯210傳遞到SCFU 270, 以標(biāo)識中斷已經(jīng)被接受。
其間,控制器140繼續(xù)執(zhí)行,并且在某個隨后點(diǎn)處需要阻擋中斷的 生成,這種阻擋中斷用作同步類型指令,此處,控制器140將停止執(zhí)行 直至它知道VIC 430已經(jīng)接受了中斷。具體地,正如所示出的那樣,盡 管在阻擋中斷信號的接收之后從SCFU 270返回了標(biāo)志,這僅僅引起控制 器NO執(zhí)行另一指令(IRQ_waitfor_b ()),使得SCFU 270與控制邏輯 210進(jìn)行商議來檢查中斷是否已經(jīng)由VIC 430應(yīng)答。
其間,與源中斷信號阻擋指令相關(guān)聯(lián)的控制信號被SCFU 270接收, 將使得SCFU把中斷發(fā)送命令路由到中斷接口 420,而該操作將使得中斷 指示被路由至VIC 430。當(dāng)VIC 430隨后對該中斷的接收進(jìn)行了應(yīng)答時(shí), 將使得應(yīng)答響應(yīng)返回到中斷接口 420,接著就會使得中斷接收信號經(jīng)由控 制邏輯210返回至SCFU 270。僅當(dāng)接收了該接收信號時(shí),SCFU2 0才 能響應(yīng)于先前由控制器140執(zhí)行的IRQ—waitfor_b()指令而返回該標(biāo)志。 此外,僅當(dāng)已經(jīng)將該標(biāo)志返回至控制器140時(shí),控制器140才會退出停 止?fàn)顟B(tài),并繼續(xù)執(zhí)行。
在一個實(shí)施例中,包括有與圖6中發(fā)出的各種中斷信號相關(guān)的ID, 使得在任一時(shí)間點(diǎn),當(dāng)一個以上的中斷處于處理過程中時(shí),可以使單獨(dú) 信號與這些中斷中的特定中斷相關(guān)。
圖7是在使用SCFU 270的一個實(shí)施例的數(shù)據(jù)處理裝置10上可以執(zhí) 行的任務(wù)的另一實(shí)例。在這種情況下,共享的資源包括DMA邏輯400 以及由存儲器控制器440控制的某個共享存儲器。具體地,在所討論的 實(shí)例中,假定多個數(shù)據(jù)引擎核共享相同的數(shù)據(jù)引擎子系統(tǒng),并因此在多 個數(shù)據(jù)引擎核之間共享數(shù)據(jù)引擎子系統(tǒng)內(nèi)的存儲器資源,諸如TCM 230。因此在該實(shí)例中,存儲器控制器440可以認(rèn)為是駐留在圖3的TCM 230中。
當(dāng)會話開始時(shí),采用與先前參考圖5和圖6所討論的方式類似的方 式來配置DMA邏輯400和存儲器控制器440。在該實(shí)例中,假定數(shù)據(jù)要 從外部環(huán)境經(jīng)過DMA邏輯400傳輸至TCM存儲器230之中,尤其是維持在TCM 230內(nèi)的軟件FIFO之中。因此,啟動DMA 400,并隨后將任 務(wù)分派到控制器140。這將使得控制器140執(zhí)行設(shè)置FIFO指令,其結(jié)果 是將使得SCFIJ 270發(fā)布控制命令到存儲器控制器440,提供定義將在存 儲器中建立的FIFO的某些參數(shù)。同樣,設(shè)置FIFO返回標(biāo)志被返回給控 制器140,此后執(zhí)行開始FIFO指令,這將引起啟用FIFO命令從SCFU 270 發(fā)送到存儲器控制器440。再次把返回標(biāo)志返回到控制器140。
存儲器控制器440將周期性地向SCFU 270發(fā)送指示FIFO狀態(tài)(例 如它是否為空、非空或者全滿)的狀態(tài)消息。另外,在執(zhí)行指令序列期 間的某點(diǎn),控制器將執(zhí)行查詢FIFO指令,以使得查詢信號路由到SCFU 270, 一旦下一個狀態(tài)從存儲器控制器440提供到SCFU時(shí),就將返回標(biāo) 志返回到控制器140。在該插入時(shí)間段期間,控制器140將停止,如圖7 所示。
如圖7所示,當(dāng)DMA邏輯400已經(jīng)啟動且FIFO已經(jīng)啟動時(shí),數(shù)據(jù) 塊將會在DMA邏輯400和TCM 230之間進(jìn)行傳輸,相關(guān)控制信號在 DMA邏輯400和相關(guān)聯(lián)的存儲器控制器440之間進(jìn)行路由。因此來自 DMA邏輯400的傳輸請求信號可以由正在傳輸?shù)臄?shù)據(jù)所伴隨,當(dāng)存儲器 控制器440接收到數(shù)據(jù)時(shí),它將向DMA邏輯400發(fā)送回一個傳輸確i人信號。
在某個階段,經(jīng)由DMA邏輯400至提供在TCM 2:30內(nèi)的FIFO的 連續(xù)數(shù)據(jù)傳輸將使FIFO變滿,F(xiàn)IFO變滿將通過從存儲器控制器440向 SCFU 270發(fā)出全滿FIFO信號來向SCFU 270指示。在該點(diǎn),DMA邏輯 400正在設(shè)法傳輸?shù)娜魏瘟硗鈹?shù)據(jù)都不能被TCM所接收,正如圖7中示
出的保持環(huán)所指示的那樣。
其間,正在數(shù)據(jù)引擎核上執(zhí)行的指令將利用FIFO中的數(shù)據(jù),并且 在某點(diǎn)處,將不再需要FIFO中數(shù)據(jù)的特定部分。在該點(diǎn),控制器140 將執(zhí)行移動尾部FIFO指令,該指令將引起SCFU 270向存儲器控制器440 發(fā)出指示FIFO不再全滿的控制信號(即不再是充滿引擎核仍然需要的數(shù) 據(jù))。在該點(diǎn)處,存儲器控制器440可以接收數(shù)據(jù),即來自DMA邏輯400 的未決傳輸請求的主體,并相應(yīng)地返回需要的傳輸確認(rèn)信號,該信號因 此使正在DMA邏輯400上執(zhí)行的保持過程結(jié)束。
當(dāng)把控制信號從SCFU 270發(fā)出到存儲器控制器440,指示FIFO不再全滿時(shí),還將移動尾部FIFO返回標(biāo)志返回到控制器140,以使得控制 器繼續(xù)執(zhí)行。
在某點(diǎn)處,數(shù)據(jù)引擎核150將不再利用設(shè)置在TCM 230內(nèi)的軟件 FIFO,因此可以將控制器140布置成執(zhí)行釋放FIFO指令,接著該釋放 FIFO指令將使得禁用FIFO控制信號從SCFU 270路由到存儲器控制器 440。
圖8示出了在利用SCFU 270的本發(fā)明實(shí)施例的數(shù)據(jù)處理裝置上實(shí)施 的另一處理實(shí)例的事務(wù)處理圖。具體地,根據(jù)該實(shí)例,可將數(shù)據(jù)引擎核 130內(nèi)的控制器140布置成當(dāng)執(zhí)行當(dāng)前功能/任務(wù)時(shí)來調(diào)用原有功能/任 務(wù),在完成原有功能之后自動回調(diào)當(dāng)前功能。圖8中示出的配置管理器 450通常將會駐留在圖3所示數(shù)據(jù)引擎子系統(tǒng)100的控制邏輯210中,并 且將會在用于維持會話狀態(tài)的會話層提供一接口。同樣,圖8示出的協(xié) 作操作系統(tǒng)(OS)塊460可以看作是駐留在控制邏輯210內(nèi),并且用于
控制任務(wù)的調(diào)度。
如圖8所示,在主機(jī)處理器20上執(zhí)行的主機(jī)過程410使會話開始,
此后主機(jī)過程發(fā)出對配置管理器450的事務(wù)處理,以對配置管理器進(jìn)行 配置。此外,主機(jī)過程啟動對數(shù)據(jù)引擎子系統(tǒng)100的協(xié)作OS塊的事務(wù)處 理,以為所討論的特定會話配置該塊/使該塊參數(shù)化。
一旦已經(jīng)進(jìn)行了該配置,主機(jī)過程410就會發(fā)出運(yùn)行命令給協(xié)作OS 塊460,以指示數(shù)據(jù)引擎現(xiàn)在能夠開始處理任務(wù)。在該點(diǎn)處,協(xié)作OS塊 460將確定由數(shù)據(jù)引擎核執(zhí)行的第 一任務(wù),并且將輸出標(biāo)識該任務(wù)的任務(wù) 開始命令到控制器140。在圖8示出的實(shí)例中,該任務(wù)是輸出任務(wù),諸如 為了使得數(shù)據(jù)引擎核產(chǎn)生某些輸出數(shù)據(jù)而使用的任務(wù)。在該點(diǎn)處,控制 器140聯(lián)合適當(dāng)?shù)臄?shù)據(jù)通路邏輯150來確定數(shù)據(jù)引擎核是否具有使 其執(zhí)行輸出任務(wù)所需的輸入數(shù)據(jù)。
在圖8示出的實(shí)例中,確定所需的輸入數(shù)據(jù)目前不存在,并且在該 點(diǎn)處,控制器140執(zhí)行設(shè)置回調(diào)指令,以便把將自身標(biāo)識為回調(diào)指令參 數(shù)的設(shè)置回調(diào)控制信號發(fā)送到SCFU 270。此外,執(zhí)行設(shè)置標(biāo)記(token ) 指令,以把再次將自身標(biāo)識為該指令參數(shù)的設(shè)置標(biāo)記控制信號發(fā)出到 SCFU 270。該設(shè)置回調(diào)控制信號將致使SCFU 270將控制命令發(fā)出到數(shù) 據(jù)引擎子系統(tǒng),標(biāo)識當(dāng)輸出任務(wù)所需的數(shù)據(jù)可用時(shí)應(yīng)回調(diào)控制器140,并且該設(shè)置標(biāo)記控制信號使得SCFU發(fā)布信息,標(biāo)識如何與該特定控制器 140聯(lián)系,例如所使用的通道信息等。然而,在圖8所示的實(shí)例中,SCFU 270把該信息與作為控制器140執(zhí)行調(diào)用先前指令結(jié)果所需的其他信息捆 綁在一起。調(diào)用先前指令的執(zhí)行將會使得SCFU確定先前的任務(wù)(即, 輸出任務(wù)之前的任務(wù)),然后發(fā)布標(biāo)識該先前任務(wù)的注冊任務(wù)命令到數(shù)據(jù) 引擎子系統(tǒng)100內(nèi)的協(xié)作OS塊460?;卣{(diào)請求的出現(xiàn)以及相關(guān)標(biāo)記信息 將被捆綁至返回到協(xié)作OS塊460的該注冊任務(wù)命令中。
協(xié)作OS塊460接收到注冊任務(wù)命令將向協(xié)作OS塊來注冊先前的任 務(wù),連同完成該任務(wù)時(shí)控制器140需要調(diào)用操作的標(biāo)識。
如圖8所示,當(dāng)由SCFU 270根據(jù)該調(diào)用先前指令而動作時(shí),這將導(dǎo) 致調(diào)用先前返回標(biāo)志返回到控制器140,當(dāng)接收到該標(biāo)志時(shí),控制器140 能夠退出輸出任務(wù),并向協(xié)作OS塊460返回任務(wù)完成命令。
當(dāng)從控制器140接收到任務(wù)完成命令時(shí),協(xié)作OS塊460設(shè)法從它維 持的任務(wù)列表中得到下一任務(wù)。由于沒有已經(jīng)注冊的插入任務(wù),從列表
中得到的下一任務(wù)將是作為前面討論的注冊任務(wù)命令的結(jié)果而注冊的任 務(wù),即輸出任務(wù)之前的任務(wù)。然后協(xié)作OS塊460將發(fā)出獲取任務(wù)信息命 令到配置管理器450,以得到任務(wù)相關(guān)的信息,結(jié)果使得結(jié)合有必要信息 的發(fā)送任務(wù)信息命令從配置管理器450返回到協(xié)作OS塊460。
此后,協(xié)作OS塊460可以向控制器發(fā)出標(biāo)識該任務(wù)的任務(wù)開 始命令,在該情形中是輸入任務(wù)。這將會使得通過相關(guān)數(shù)據(jù)通路執(zhí)行大 量操作,以獲取所需的輸入數(shù)據(jù)。由于此時(shí)正在執(zhí)行的當(dāng)前任務(wù)已經(jīng)向 協(xié)作OS塊460進(jìn)行了注冊,因此調(diào)用請求已經(jīng)與那個任務(wù)相關(guān)聯(lián),那么 當(dāng)該任務(wù)要求必要的計(jì)算完成時(shí),控制器140被布置成執(zhí)行調(diào)用回調(diào)指 令,使得把將一個標(biāo)記標(biāo)識為參數(shù)的調(diào)用回調(diào)控制信號路由到SCFU , 該標(biāo)記將控制器140標(biāo)識為作為該回調(diào)操作的結(jié)果而分配的任務(wù)的接收 者。該調(diào)用回調(diào)控制信號將使SCFU發(fā)出標(biāo)識相關(guān)標(biāo)記的注冊任務(wù)命令 到協(xié)作OS塊460,這又會使得協(xié)作OS塊460注冊具有該相關(guān)標(biāo)記的任 務(wù)。同樣,當(dāng)發(fā)出該注冊任務(wù)命令時(shí),調(diào)用回調(diào)標(biāo)志將會從SCFU返回 到控制器140,此后控制器可發(fā)出任務(wù)完成命令到協(xié)作OS塊460。
當(dāng)接收到任務(wù)完成命令時(shí),協(xié)作OS塊460然后從列表中獲取下一任 務(wù),該任務(wù)是根據(jù)標(biāo)記信息將控制器140標(biāo)識為接收者的任務(wù),然后如前所述,協(xié)作OS塊460將與配置管理器450進(jìn)行通信,以獲取任務(wù)的必 要細(xì)節(jié)。所需的任務(wù)將是輸入任務(wù)之后的任務(wù),該任務(wù)將是早先提及的 輸出任務(wù)。因此,該輸出任務(wù)經(jīng)由任務(wù)開始命令被路由到控制器140,早 先提及的標(biāo)記標(biāo)識了該命令應(yīng)當(dāng)發(fā)送到該特定控制器。在該點(diǎn),控制器 檢查輸入,但是此時(shí)輸入是可用的,因此可以執(zhí)行輸出任務(wù)所需的必要 計(jì)算。當(dāng)完成輸出任務(wù)時(shí),然后將相應(yīng)的任務(wù)完成信號返回到協(xié)作OS 塊460,并且如果這是分配給協(xié)作OS塊的會話中的最后任務(wù),將使得任 務(wù)完成命令返回給主機(jī)過程410。
通過參考圖8示意示出的方法,SCFU2罰允許數(shù)據(jù)引擎核作為單個 上下文的最小開銷處理器來執(zhí)行(例如對于一個時(shí)刻,你不能中斷它來 執(zhí)行另一任務(wù)),這是因?yàn)镾CFU提供了允許一個任務(wù)向操作系統(tǒng)的調(diào)度 器部分注冊其他任務(wù)的應(yīng)用編程接口 (API)。由于該操作系統(tǒng)的調(diào)度器 部分(在一個實(shí)施例中,其駐留在數(shù)據(jù)引擎子系統(tǒng)100中)還響應(yīng)于使 得對系統(tǒng)請求任務(wù)進(jìn)行調(diào)度的系統(tǒng)事件,因此整個系統(tǒng)作為期望的標(biāo)準(zhǔn) 事件驅(qū)動軟件來工作,但是數(shù)據(jù)引擎核保留了 "一次一個功能"的任務(wù) 級加速器的簡單性。由SCFU所提供的能力允許在數(shù)據(jù)引擎核上執(zhí)行的 任務(wù)向操作系統(tǒng)的調(diào)度器部分注冊其他任務(wù),該能力在此稱作為"任務(wù) 鏈鎖"。
應(yīng)當(dāng)理解的是,在利用支持這種任務(wù)連鎖功能的實(shí)施例時(shí),可以將 系統(tǒng)編程接口布置成對稱的且面向?qū)ο蟮模渲锌梢詫θ蝿?wù)鏈序列進(jìn)行 配置,從該點(diǎn)開始任務(wù)鏈序列以動態(tài)自動方式來運(yùn)行。
當(dāng)采用了如圖8所示的實(shí)施例時(shí),其中協(xié)作OS塊460用來調(diào)度供數(shù)
據(jù)引擎核執(zhí)行的任務(wù),那么應(yīng)當(dāng)理解的是可以對先前描述的圖4的流程 圖進(jìn)行改變。特別地,圖4的步驟330將是用來確定當(dāng)前分配給數(shù)據(jù)引
擎核的所有任務(wù)是否已經(jīng)完成的判定塊。當(dāng)那些任務(wù)已經(jīng)完成時(shí),在一 個實(shí)施例中將把插入步驟放置在步驟330和340之間,此處,確定是否
存在任何未決的新任務(wù),這可由協(xié)作OS塊來確定。如果存在,那么那些 新任務(wù)將分配給數(shù)據(jù)引擎核,并且過程將進(jìn)行至步驟330。然而,如果確 定不存在未決的新任務(wù),則過程進(jìn)行到步驟340。
圖9示出了可在使用SCFU 270用途的一個實(shí)施例的數(shù)據(jù)處理裝置上 執(zhí)行的另一任務(wù)實(shí)例。在這樣的實(shí)施例中,在數(shù)據(jù)引擎中提供了存根層470。在一個實(shí)施例中,該存根層4"70可以作為在數(shù)據(jù)引擎核130的數(shù)據(jù) 通路l50中執(zhí)行的軟件來提供,而在另一實(shí)施例中,存根層可以通過混 合硬件和軟件的方法來實(shí)現(xiàn),其中除了在數(shù)據(jù)通路130上執(zhí)行的某些軟 件之外,存根層的一些功能性還提供在數(shù)據(jù)引擎子系統(tǒng)100的控制邏輯 210內(nèi)。與將任務(wù)開始命令發(fā)布到數(shù)據(jù)引擎核的控制器140的前述實(shí)例相 比,在該實(shí)施例中,將這種任務(wù)開始命令發(fā)布到存根層470中,然后存 根層470在確定是否把任務(wù)開始命令傳送到控制器140中之前執(zhí)行一些 起始步驟。
具體地,如圖9所示,當(dāng)開始會話時(shí),主機(jī)過程410對配置管理器 450進(jìn)行配置,并發(fā)布參數(shù)化命令到存根層470,以針對特定會話配置存 根層。此后,向存根層470發(fā)出任務(wù)開始啟動命令,存根層470響應(yīng)于 該命令的接收而檢查執(zhí)行該任務(wù)所需的特定資源是否可用,此處這種資 源也稱作先決條件。因此,舉例來講,存根層470可以檢驗(yàn)是否存在所 有需要的資源,諸如程序數(shù)據(jù)、常數(shù)表數(shù)據(jù)、狀態(tài)分配等。因此,以通 用的術(shù)語來講,可見存根層470被布置成檢查執(zhí)行該任務(wù)所需的所有事 物對執(zhí)行該任務(wù)的數(shù)據(jù)引擎核是否可用。
在圖9示出的實(shí)例中,存根層確定該程序存儲器尚未初始化,因此 發(fā)出請求信號到SCFU270,在該特定實(shí)例中,該請求信號是"編程存儲 器未初始化,,信號。該請求信號使得SCFU 270向配置管理器"0發(fā)出下 載程序指示,以使得配置管理器把所需的程序下載到所需的程序存儲器 中,此后將下載程序響應(yīng)信號返回到SCFU270。然后,這將使得返回標(biāo) 志從SCFU 270發(fā)送到存根層470。在該插入的時(shí)間段中,存根層4170進(jìn) 入到"等待"環(huán),等待接收返回標(biāo)志。當(dāng)接收到返回標(biāo)志時(shí),存根層470 于是知道該任務(wù)的所有所需資源是可用的,因此發(fā)出任務(wù)開始命令到控 制器140,使得任務(wù)被執(zhí)行。這將引起一系列的計(jì)算,并且完成該任務(wù)時(shí), 將任務(wù)完成命令從控制器140發(fā)送到主機(jī)過程410。
當(dāng)接收到任務(wù)完成命令時(shí),主機(jī)過程410然后向存根層470發(fā)布另 一任務(wù)開始命令。在圖9示出的實(shí)例中,在存根層470然后檢查資源時(shí), 它確定所有的資源都是可用的,并因此向控制器HO發(fā)出任務(wù)開始命令, 以使得執(zhí)行所需要的計(jì)算。在該計(jì)算期間的某點(diǎn)處,控制器"0可以發(fā) 出阻擋中斷,例如使得進(jìn)行同步步驟。正如先前參考圖6所討論的那樣,控制器140可以發(fā)出IRQ_waitfor_b()信號給SCFU 270,使得SCFU 270 與控制邏輯210協(xié)商來檢查先前發(fā)出的阻擋中斷是否已經(jīng)由處理該中斷 的中斷控制器應(yīng)答。在等待該確認(rèn)的同時(shí),SCFU2 0繼續(xù)檢驗(yàn)該中斷的 接收,并且控制器140停止。
在圖9示出的實(shí)例中,在等待阻擋中斷的接收時(shí),出現(xiàn)使得將任務(wù) 放棄命令從主機(jī)過程410發(fā)出到SCFU 270的某個事件。在這種情形中, 由于運(yùn)行在數(shù)據(jù)引擎上軟件包括存根層470都停下來等待來自阻擋中斷 的響應(yīng),所以將任務(wù)放棄指令直接發(fā)送到SCFU270。當(dāng)SCFU接收到任 務(wù)放棄命令時(shí),SCFU被布置成使得向控制器140發(fā)出放棄和退出命令, 這將使得控制器放棄并退出當(dāng)前過程,然后發(fā)送對于該效應(yīng)的應(yīng)答給 SCFU270。當(dāng)接收到應(yīng)答時(shí),SCFU270然后向存根層470發(fā)出運(yùn)行退出 命令,該存根層470不再停止,并因此可以通過向控制器140發(fā)送標(biāo)識 了退出例程的任務(wù)開始命令來啟動退出過程??刂破?40然后將與數(shù)據(jù) 通路150結(jié)合來執(zhí)行退出例程的期望計(jì)算,其后將把任務(wù)完成命令返回 到主機(jī)過程410。
從圖9的討論中,將會看出存根層4冗可以使得在數(shù)據(jù)引擎上執(zhí)行 通用化任務(wù)的模型。尤其是從主機(jī)過程分配到數(shù)據(jù)引擎的任務(wù)現(xiàn)在不再 只包含執(zhí)行部分。相反,現(xiàn)在執(zhí)行部分僅僅是合并在諸如啟動(構(gòu)造器)、 退出(析構(gòu)器)、save—state、 restore_state等任務(wù)中的若干方法其中之一。 存根層形成了軟件層,在一個實(shí)施例中,該軟件層采用了最小駐留程序 的形式。SCFU然后能夠響應(yīng)于存根層470發(fā)布的命令,正如先前關(guān)于圖 9的上半部分所討論的那樣。此外,當(dāng)SCFU 270指示存根層來執(zhí)行時(shí), 所述存根層可以處理異常和退出條件。
SCFU 270允許數(shù)據(jù)引擎核啟動許多資源上的任務(wù),并且那些任務(wù)將 潛在地并發(fā)運(yùn)行,依賴于共享資源系統(tǒng)的可用性和響應(yīng),且可以建模為 數(shù)據(jù)引擎?zhèn)壬系淖钃踔噶睢S捎谶@些因素,主機(jī)過程410自陷的錯誤條 件可以使得在等待阻擋功能的返回時(shí)數(shù)據(jù)引擎核停止,例如象關(guān)于圖9 的下半部分所討論的情況一樣。由于在圖9示出的實(shí)施例中SCFU 270 響應(yīng)于來自主機(jī)過程410的軟件重置復(fù)位信號的這種可能性,所述軟件 重置復(fù)位信號例如是圖9示出的任務(wù)放棄信號,該信號將使得數(shù)據(jù)引擎 核放棄其阻擋指令,并使得存根層執(zhí)行退出例程(正如關(guān)于圖9的下半部分所討論的那樣)。
圖io示意地示出了存儲器區(qū)域的圖示,并且尤其指示了與該存儲器
部分相關(guān)的可以發(fā)起的兩種類型的改變,在一個實(shí)施例中所述存儲器區(qū) 域形成了分配給數(shù)據(jù)引擎的共享資源。具體地,當(dāng)會話開始時(shí),主機(jī)處
理器20將定義該共享存儲器內(nèi)的特定存儲器區(qū)域之間的邊界,因此將定 義邊界602、 604和606,所述邊界存在于程序(P)存儲器、兩種不同數(shù) 據(jù)存儲器部分(稱作X和Y)和某個寄存存儲器(如圖10中的視圖600 所示)之間。該寄存存儲器由DMA邏輯使用,尤其是可使用DMA邏輯 的特定不同裝置在它們期望使用DMA邏輯時(shí)將在存儲器的DMA寄存器 區(qū)域中設(shè)置特定的寄存器,DMA邏輯將檢查該寄存器以確定何時(shí)需要執(zhí) 行DMA傳輸。
正如圖IO所示,如果將提供MP3解碼功能,那么SCFU 270可以 經(jīng)由控制邏輯210向存儲器管理器發(fā)出適當(dāng)控制信號,以使得MP3解碼 功能使用將被分配的存儲器的不同部分。尤其是,可以為MP3解碼程序 指令分配程序存儲器的特定部分,可以為諸如MP3因數(shù)和脈沖代碼調(diào)制 (PCM)數(shù)據(jù)的特定數(shù)據(jù)分配X數(shù)據(jù)存儲器內(nèi)的區(qū)域,并且可以為MP3 狀態(tài)數(shù)據(jù)分配Y數(shù)據(jù)存儲器內(nèi)的區(qū)域。
如果在某點(diǎn),需要MP3解碼器的第二示例,那么這就需要為另一 PCM數(shù)據(jù)分配X數(shù)據(jù)存儲器部分,并且同樣為與第二 MP3解碼器相關(guān) 的MP3狀態(tài)數(shù)據(jù)分配Y數(shù)據(jù)存儲器部分。然而,當(dāng)定義X數(shù)據(jù)存儲器 的現(xiàn)有邊界602、 604留有足夠?yàn)檫@樣的PCM數(shù)據(jù)分配的空間時(shí),這就 要求主機(jī)處理器的會話管理器來改變該會話,這將產(chǎn)生如圖10的視圖610 所示的新邊界612、 614、 616?,F(xiàn)在就可以定義Y數(shù)據(jù)存儲器內(nèi)的MP3 狀態(tài)區(qū)域和X數(shù)據(jù)存儲器內(nèi)的另外PCM數(shù)據(jù)區(qū)域。
如果隨后示例了混頻器功能,這就要求將程序存儲器的區(qū)域分配給 混頻器程序指令,并且還要將Y數(shù)據(jù)存儲器的部分分配給混頻器狀態(tài)。 因?yàn)镸P3解碼器的輸出通常在生產(chǎn)進(jìn)一步的輸出之前進(jìn)行混頻,所以就 不需要在X數(shù)據(jù)區(qū)域內(nèi)具有兩種PCM區(qū)域。如圖10中視圖"0所示, 視圖610和視圖620之間的使用改變通過使SCFU 270根據(jù)適當(dāng)?shù)墓芾碇?令動作來實(shí)現(xiàn),以啟用存儲器的動態(tài)運(yùn)行時(shí)間管理,尤其是隨同釋放X 數(shù)據(jù)存儲器中的第二PCM區(qū)域一起,在程序存儲器中建立混頻器區(qū)域和在Y數(shù)據(jù)存儲器中建立混頻器狀態(tài)區(qū)域。
盡管在本發(fā)明的上述討論中,已將主處理單元描述為連接至多個數(shù) 據(jù)引擎其中一個的單層,但是還可能以分層方式布置大量數(shù)據(jù)引擎。例 如,主處理單元可以將自己作為數(shù)據(jù)引擎而提供到更高分層級別。在這 種場合下,將會具有與連接更高級別主處理單元的子系統(tǒng)進(jìn)行交互的資 源管理器單元(SCFU)。頂級主處理單元更像通用CPU,但是任何中間 主處理單元可能是數(shù)據(jù)引擎。數(shù)據(jù)引擎也可以是通用CPU,或者僅僅是 那些CPU的內(nèi)核。關(guān)于這一點(diǎn),主處理單元及其數(shù)據(jù)引擎之間的不同在 于,主處理單元控制了啟動時(shí)的共享資源。數(shù)據(jù)引擎僅僅可以使用由主 處理單元分配給它們的共享資源。
根據(jù)本發(fā)明的實(shí)施例的上述描述,將可以看出的是,數(shù)據(jù)引擎通過 SCFU以下列各種方式其中之一來對經(jīng)過SCFU激活的動作進(jìn)行同步 數(shù)據(jù)引擎停止,直至所述動作已經(jīng)完成; 數(shù)據(jù)引擎發(fā)出將在第一動作完成之前停止的另 一命令; 數(shù)據(jù)引擎發(fā)出命令以請求先前命令的狀態(tài)(開始、完成、錯誤,…); 數(shù)據(jù)引擎將狀態(tài)位直接寫入到可由數(shù)據(jù)引擎核的控制器訪問的狀態(tài) 寄存器文件的特定位置,使得條件跳轉(zhuǎn)以立即根據(jù)所述狀態(tài)位而動作; 或者
當(dāng)任務(wù)結(jié)束時(shí)數(shù)據(jù)引擎停止,直至指定給該任務(wù)的動作已經(jīng)完成。 從本發(fā)明的實(shí)施例的上述描述中,將會理解的是,本發(fā)明的實(shí)施例
可以布置成展示下面的特征
數(shù)據(jù)引擎子系統(tǒng)可以在會話級別進(jìn)行管理,資源可以分配給該會話
級別上的DESS;
在以最小化系統(tǒng)活動為目標(biāo)的會話期間,該資源可以本地應(yīng)用,從 而提高性能,降低能量消耗;以及
系統(tǒng)編程接口可以是對稱的、面向?qū)ο蟮模诖颂幙梢詫θ蝿?wù)/功能 鏈的序列進(jìn)行配置,從該點(diǎn)起任務(wù)/功能鏈序列以動態(tài)自動方式運(yùn)行。
根據(jù)本發(fā)明的實(shí)施例的上述描述,將會理解的是,這種實(shí)施例提供 了特別有效的數(shù)據(jù)引擎的實(shí)現(xiàn),通過共享資源的使用,所述實(shí)現(xiàn)是特別 具有成本效益的,并且通過提供SCFU邏輯還會降低為了在包括這種數(shù) 據(jù)引擎的數(shù)據(jù)處理裝置上運(yùn)行而需要改寫軟件的可能性,所述SCFU邏輯將使得數(shù)據(jù)引擎核相對于數(shù)據(jù)引擎子系統(tǒng)充當(dāng)主設(shè)備,從而管理所分 配的共享資源的使用。
盡管在此處已經(jīng)描述了具體的實(shí)施例,但是應(yīng)當(dāng)理解的是,本發(fā)明 并不僅限于此,在本發(fā)明的范圍內(nèi)可以進(jìn)行許多改變和增加。例如,在 并不偏離本發(fā)明范圍的情況下,可以進(jìn)行獨(dú)立權(quán)利要求的特征與從屬權(quán)
利要求的特征的各種組合。
權(quán)利要求
1.一種數(shù)據(jù)處理裝置,包括主處理單元,可以操作以執(zhí)行多個數(shù)據(jù)處理任務(wù);數(shù)據(jù)引擎,可以操作以代表所述主處理單元執(zhí)行大量所述數(shù)據(jù)處理任務(wù);至少一個共享資源,可由主處理單元分配給所述數(shù)據(jù)引擎,以供所述數(shù)據(jù)引擎在執(zhí)行所述大量數(shù)據(jù)處理任務(wù)時(shí)使用;所述數(shù)據(jù)引擎包括數(shù)據(jù)引擎核以及數(shù)據(jù)引擎子系統(tǒng),所述數(shù)據(jù)引擎核可以操作以執(zhí)行所述大量數(shù)據(jù)處理任務(wù),所述數(shù)據(jù)引擎子系統(tǒng)可由所述主處理單元進(jìn)行配置并可以操作以管理所述數(shù)據(jù)引擎核與所分配的共享資源之間的通信;所述數(shù)據(jù)引擎核包括資源管理器單元,所述資源管理器單元可操作以相對于數(shù)據(jù)引擎子系統(tǒng)擔(dān)當(dāng)主設(shè)備,進(jìn)而管理所分配的共享資源的使用。
2. 根據(jù)權(quán)利要求1所述的數(shù)據(jù)處理裝置,其中將由數(shù)據(jù)引擎執(zhí)行的 大量數(shù)據(jù)處理任務(wù)包括指令序列,該指令序列包括可由數(shù)據(jù)引擎核執(zhí)行 的指令集的至少一個指令,以使得所述資源管理器單元充當(dāng)所述主設(shè)備,當(dāng)執(zhí)行所述至少一個指令時(shí),資源管理單元可以操作以向數(shù)據(jù)引擎 子系統(tǒng)發(fā)出控制命令,進(jìn)而管理所分配的共享資源的使用。
3. 根據(jù)權(quán)利要求2所述的數(shù)據(jù)處理裝置,其中所述數(shù)據(jù)引擎子系統(tǒng) 包括控制邏輯,所述控制邏輯可以操作以從資源管理器單元接收控制命 令,以及根據(jù)所述控制命令來控制所分配的共享資源的使用。
4. 根據(jù)權(quán)利要求2或3所述的數(shù)據(jù)處理裝置,其中可由數(shù)據(jù)引擎核 執(zhí)行的指令集包括至少一個傳輸啟動指令,當(dāng)被執(zhí)行時(shí),該至少一個傳輸啟動指令將使得資源管理器單元擔(dān)當(dāng)所述主設(shè)備。
5. 根據(jù)權(quán)利要求2至4任一項(xiàng)所述的數(shù)據(jù)處理裝置,其中所分配的共享資源和數(shù)據(jù)引擎核相互并發(fā)操作,并且可由數(shù)據(jù)引擎核執(zhí)行的指令 集包括至少一個同步指令,當(dāng)被執(zhí)行時(shí),該至少一個同步指令將使得在 所分配的共享資源與數(shù)據(jù)引擎核之間發(fā)生同步。
6. 根據(jù)權(quán)利要求5所述的數(shù)據(jù)處理裝置,其中當(dāng)主處理單元指示該 數(shù)據(jù)引擎子系統(tǒng)的新配置時(shí),所述數(shù)據(jù)引擎核可以操作以執(zhí)行所述同步指令的其中之一,以便到達(dá)使所分配的共享資源和數(shù)據(jù)引擎同步的同步 點(diǎn),并且新配置僅僅在達(dá)到同步點(diǎn)之后才在數(shù)據(jù)引擎子系統(tǒng)中起作用。
7. 根據(jù)權(quán)利要求2至6任一項(xiàng)所述的數(shù)據(jù)處理裝置,其中所述數(shù)據(jù) 引擎核包括由多個功能單元組成的數(shù)據(jù)通路邏輯,所述功能單元其中之 一是資源管理器單元,所述數(shù)據(jù)引擎核進(jìn)一步包括可以操作以控制序列 中的每個指令的控制器,該功能單元根據(jù)該指令動作。
8. 根據(jù)前述權(quán)利要求任一項(xiàng)所述的數(shù)據(jù)處理裝置,當(dāng)從屬于權(quán)利要 求2時(shí),進(jìn)一步包括可以操作以對供數(shù)據(jù)引擎核執(zhí)行的所述指令序列進(jìn) 行調(diào)度的數(shù)據(jù)引擎編譯器,其中可由數(shù)據(jù)引擎核執(zhí)行的指令集包括標(biāo)識 邊界條件的至少一個邊界指令,當(dāng)遇到所述邊界指令之一時(shí),所述編譯 器可以操作以在考慮了所述邊界條件的情況下對序列中隨后指令的執(zhí)行 進(jìn)行調(diào)度。
9. 根據(jù)前述權(quán)利要求任一項(xiàng)所述的數(shù)據(jù)處理裝置,其中所述資源管 理器單元可以作為與數(shù)據(jù)引擎同步的數(shù)據(jù)傳輸控制器來操作。
10. 根據(jù)權(quán)利要求9所述的數(shù)據(jù)處理裝置,其中所分配的共享資源包 括DMA邏輯,并且資源管理器單元可以操作以擔(dān)當(dāng)DMA主設(shè)備而啟動 使用所述DMA邏輯的數(shù)據(jù)傳輸。
11. 根據(jù)前述權(quán)利要求任一項(xiàng)所述的數(shù)據(jù)處理裝置,其中所分配的共 享資源包括中斷控制器,資源管理器單元可以操作發(fā)出中斷,以經(jīng)由數(shù) 據(jù)引擎子系統(tǒng)而路由到中斷控制器。
12. 根據(jù)前述權(quán)利要求任一項(xiàng)所述的數(shù)據(jù)處理裝置,其中所分配的共 享資源包括存儲器區(qū)域,并且資源管理器單元可以操作發(fā)出控制信號, 以啟動該存儲器區(qū)域的一個或更多部分的使用改變。
13. 根據(jù)前述權(quán)利要求任一項(xiàng)所述的數(shù)據(jù)處理裝置,當(dāng)從屬于權(quán)利要 求2時(shí),其中所分配的共享資源包括存儲器區(qū)域,并且可由數(shù)據(jù)引擎核 執(zhí)行的指令集包括至少一個管理指令,以使得能夠進(jìn)行存儲器區(qū)域的動 態(tài)運(yùn)4亍時(shí)間管理。
14. 根據(jù)前述權(quán)利要求任一項(xiàng)所述的數(shù)據(jù)處理裝置,當(dāng)從屬于權(quán)利要 求2時(shí),其中可由數(shù)據(jù)引擎核執(zhí)行的指令集包括至少一個調(diào)度指令,當(dāng) 被執(zhí)行時(shí),所述至少一個調(diào)度指令使得對任務(wù)進(jìn)行調(diào)度以供所分配的共 享資源執(zhí)行。
15. 根據(jù)前述權(quán)利要求任一項(xiàng)所述的數(shù)據(jù)處理裝置,當(dāng)從屬于權(quán)利要 求2時(shí),其中可由數(shù)據(jù)引擎核執(zhí)行的指令集包括至少一個注冊指令,當(dāng) 數(shù)據(jù)引擎核正在執(zhí)行第一數(shù)據(jù)處理任務(wù)的同時(shí)執(zhí)行該至少一個注冊指令 時(shí),使得注冊第二數(shù)據(jù)任務(wù),以供執(zhí)行。
16. 根據(jù)前述權(quán)利要求任一項(xiàng)所述的數(shù)據(jù)處理裝置,當(dāng)從屬于權(quán)利要 求2時(shí),其中可由數(shù)據(jù)引擎核執(zhí)行的指令集包括至少一個回調(diào)指令,如 果數(shù)據(jù)引擎核確定在執(zhí)行第一數(shù)據(jù)處理任務(wù)的同時(shí)該任務(wù)的至少一個執(zhí) 行條件并未滿足,數(shù)據(jù)引擎核就可以操作以執(zhí)行該回調(diào)指令,以使得資 源管理器單元來向數(shù)據(jù)引擎子系統(tǒng)標(biāo)識應(yīng)當(dāng)在滿足所述至少一個條件時(shí) 再次調(diào)用第一數(shù)據(jù)處理任務(wù),從而允許數(shù)據(jù)引擎核終止第一處理任務(wù)的 執(zhí)行直至滿足所述至少一個條件。
17. 根據(jù)前述權(quán)利要求任一項(xiàng)所述的數(shù)據(jù)處理裝置,其中所述數(shù)據(jù)引 擎包括存根層,當(dāng)將由數(shù)據(jù)引擎核來執(zhí)行數(shù)據(jù)處理任務(wù)時(shí),該存根層可 以操作來檢查在允許數(shù)據(jù)引擎核執(zhí)行該數(shù)據(jù)處理任務(wù)前該數(shù)據(jù)處理任務(wù)所需的一個或更多先決條件。
18. 根據(jù)權(quán)利要求17所述的數(shù)據(jù)處理裝置,當(dāng)從屬于權(quán)利要求2時(shí),其中可由數(shù)據(jù)引擎核執(zhí)行的指令集包括至少一個請求指令,當(dāng)存根層確 定數(shù)據(jù)處理任務(wù)所需的至少一個先決條件并未滿足時(shí),執(zhí)行該請求指令 以使得資源管理器單元向數(shù)據(jù)引擎子系統(tǒng)輸出請求命令,請求滿足該至 少一個先決條件。
19. 根據(jù)權(quán)利要求17或18所述的數(shù)據(jù)處理裝置,當(dāng)從屬于權(quán)利要求 2時(shí),其中可由數(shù)據(jù)引擎核執(zhí)行的指令集包括至少一個錯誤處理指令,當(dāng) 不能滿足數(shù)據(jù)處理任務(wù)需要的至少一個先決條件時(shí),執(zhí)行該錯誤處理指 令以使得資源管理器單元輸出任何請求錯誤條件,并使得退出數(shù)據(jù)處理 任務(wù)。
20. 根據(jù)前述權(quán)利要求任一項(xiàng)所述的數(shù)據(jù)處理裝置,其中所分配的共 享資源是數(shù)據(jù)處理裝置中用于促進(jìn)數(shù)據(jù)處理裝置的處理單元與數(shù)據(jù)引擎 之間通信的元件。
21. 根據(jù)前述權(quán)利要求任一項(xiàng)所述的數(shù)據(jù)處理裝置,當(dāng)從屬于權(quán)利要 求2時(shí),其中可由數(shù)據(jù)引擎核執(zhí)行的指令集中的至少一個指令被布置成 使得返回標(biāo)志,以指示該指令是否成功執(zhí)行,藉此在缺少該標(biāo)志時(shí),數(shù)據(jù)引擎核將會停止并進(jìn)入功率節(jié)省模式。
22. —種操作數(shù)據(jù)處理裝置的方法,所述數(shù)據(jù)處理裝置包括可以操作 以執(zhí)行多個數(shù)據(jù)處理任務(wù)的主處理單元,和可以操作以代表所述主處理 單元執(zhí)行大量所述數(shù)據(jù)處理任務(wù)的數(shù)據(jù)引擎,所述方法包括步驟為數(shù)據(jù)引擎分配至少一個共享資源,以供數(shù)據(jù)引擎在執(zhí)行所述大量數(shù)據(jù)處理任務(wù)時(shí)使用;使用所述數(shù)據(jù)引擎的數(shù)據(jù)引擎核來執(zhí)行所述大量數(shù)據(jù)處理任務(wù); 配置用于管理數(shù)據(jù)引擎核與所分配的共享資源之間通信的數(shù)據(jù)引擎子系統(tǒng);以及使用數(shù)據(jù)引擎核中相對于數(shù)據(jù)引擎子系統(tǒng)擔(dān)當(dāng)主設(shè)備的資源管理器 單元,來管理所分配的共享資源的使用。
23. —種用于數(shù)據(jù)處理裝置的數(shù)據(jù)引擎,所述數(shù)據(jù)處理裝置包括可以 操作以執(zhí)行多個數(shù)據(jù)處理任務(wù)的主處理單元,所述數(shù)據(jù)引擎可以操作以 代表所述主處理單元執(zhí)行大量所述數(shù)據(jù)處理任務(wù),并且為所述數(shù)據(jù)引擎 分配數(shù)據(jù)處理裝置的至少一個共享資源,以供在執(zhí)行所述大量數(shù)據(jù)處理 任務(wù)時(shí)使用,所述數(shù)據(jù)引擎包括數(shù)據(jù)引擎核,可以操作以執(zhí)行所述大量數(shù)據(jù)處理任務(wù); 數(shù)據(jù)引擎子系統(tǒng),可由所述主處理單元進(jìn)行配置并可以操作以管理所述數(shù)據(jù)引擎核與所分配的共享資源之間的通信;以及所述數(shù)據(jù)引擎核內(nèi)的資源管理器單元,可操作以相對于數(shù)據(jù)引擎子系統(tǒng)擔(dān)當(dāng)主設(shè)備,進(jìn)而管理所分配的共享資源的使用。
全文摘要
公開了一種數(shù)據(jù)處理裝置和這種數(shù)據(jù)處理裝置的操作方法。所述數(shù)據(jù)處理裝置具有可以操作以執(zhí)行多個數(shù)據(jù)處理任務(wù)的主處理單元,以及用于代表所述主處理單元執(zhí)行大量那些任務(wù)的數(shù)據(jù)引擎。可由主處理單元將至少一個共享資源分配給所述數(shù)據(jù)引擎,以供所述數(shù)據(jù)引擎在代表主處理單元執(zhí)行數(shù)據(jù)處理任務(wù)時(shí)使用。所述數(shù)據(jù)引擎包括用于執(zhí)行任務(wù)的數(shù)據(jù)引擎核,以及可由所述主處理單元進(jìn)行配置并布置成管理所述數(shù)據(jù)引擎核和所分配的共享資源之間通信的數(shù)據(jù)引擎子系統(tǒng)。所述數(shù)據(jù)引擎核包括用于相對于數(shù)據(jù)引擎子系系統(tǒng)擔(dān)當(dāng)主設(shè)備以管理所分配的共享資源使用的資源管理器單元。已經(jīng)發(fā)現(xiàn)這種方法在數(shù)據(jù)處理裝置內(nèi)提供了數(shù)據(jù)引擎的特別有效的實(shí)施,這降低了改寫現(xiàn)有代碼以使其能夠在這種數(shù)據(jù)處理裝置上執(zhí)行的需要。
文檔編號G06F9/38GK101288049SQ200680015133
公開日2008年10月15日 申請日期2006年4月13日 優(yōu)先權(quán)日2005年5月4日
發(fā)明者D·迪林克斯, J·馬特納, M·C·維策倫伯格, S·瓦姆貝克 申請人:Arm有限公司