多處理器嵌入式系統(tǒng)上應(yīng)用的動態(tài)重新配置的制作方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及多處理器系統(tǒng),并且更具體而言涉及在多處理器系統(tǒng)(MPS)上執(zhí)行的軟件應(yīng)用的動態(tài)重新配置。
【背景技術(shù)】
[0002]嵌入式系統(tǒng)可以被描述為為特定功能而設(shè)計的計算機系統(tǒng),常常具有實時計算約束。物理上,嵌入式系統(tǒng)的范圍從便攜式消費者電子設(shè)備,諸如視頻和/或音頻設(shè)備,到大的固定裝置,諸如交通燈、工廠控制器,以及在很大程度上復(fù)雜的系統(tǒng),諸如混合動力車輛和航空電子設(shè)備。嵌入式系統(tǒng)可以接收輸入信號并實時地處理信號,以執(zhí)行特定的實時操作。嵌入式系統(tǒng)可以替代地(或另外地)執(zhí)行實時處理并生成輸出信號。
[0003]由嵌入式系統(tǒng)執(zhí)行的處理可以以不同的方式實現(xiàn)。一些設(shè)備使用現(xiàn)場可編程門陣列(FPGA)或其它可編程邏輯設(shè)備。FPGA是在無需使用存儲的命令式軟件編程方法的情況下實現(xiàn)復(fù)雜系統(tǒng)的一種手段。相反,這些設(shè)備利用硬件描述語言,諸如VHDL或Verilog,來配置,這使得用戶能夠描述互連的電氣部件集合。通過在芯片被初始化時編程熔絲或設(shè)置配置存儲器位置,F(xiàn)PGA實現(xiàn)這種互連設(shè)計。
[0004]嵌入式系統(tǒng)還可以利用一個或多個處理器或數(shù)字信號處理(DSP)引擎來實現(xiàn)。例如,傳統(tǒng)的粗粒度可編程嵌入式系統(tǒng)可以有少量的處理器或DSP引擎,諸如兩個或四個處理器核心以及固定的或可編程的特定于應(yīng)用的邏輯功能。這些系統(tǒng)通常具有大的數(shù)據(jù)和指令存儲器或者利用虛擬存儲器方案來擴展可被尋址的數(shù)據(jù)和指令存儲器的范圍。
[0005]在一些情況下,可能期望在運行時重新編程嵌入式系統(tǒng),例如,重新編程在不停止系統(tǒng)的情況下發(fā)生。但是,基于FPGA的和傳統(tǒng)的基于處理器的嵌入式系統(tǒng)都有使這種重新編程成問題的缺點。例如,雖然一些FPGA設(shè)備可以具有用于在運行時重新配置FPGA的特定物理區(qū)域的有限能力,但是一般難以在運行時動態(tài)地重新編程FPGA來執(zhí)行不同的應(yīng)用。例如,F(xiàn)PGA重新配置能力可能不是以邏輯(或應(yīng)用)為基礎(chǔ),而是基于邏輯設(shè)計的哪一部分被映射到芯片的特定物理部分。要花費很大的努力在FPGA上對齊設(shè)計的邏輯和物理映射,但這可能會造成實現(xiàn)非常低效。
[0006]在傳統(tǒng)的基于處理器的系統(tǒng)中,處理能力可以通過眾所周知的多任務(wù)技術(shù)在不同的應(yīng)用之間共享。在這種方法中,兩個或更多個應(yīng)用可以以交織的方式同時在同一處理器上運行。處理器動態(tài)地管理多個應(yīng)用的狀態(tài)。但是,這會引起性能下降并且注入不確定的時間延遲,對于實時嵌入式系統(tǒng),這可能是無法接受的。
[0007]因此,可能期望提供一種實時嵌入式系統(tǒng),該系統(tǒng)提供,例如通過在不停止系統(tǒng)執(zhí)行的情況下動態(tài)地交換應(yīng)用,在運行時執(zhí)行系統(tǒng)的重新編程的改進能力。
【發(fā)明內(nèi)容】
[0008]公開了多處理器系統(tǒng)以及用于交換在該多處理器系統(tǒng)上執(zhí)行的應(yīng)用的相關(guān)聯(lián)方法的各種實施例。多處理器系統(tǒng)可以包括多個處理器和散置在處理器當中的多個存儲器。多個應(yīng)用可以在多處理器系統(tǒng)上加載。加載應(yīng)用可以包括在多個存儲器中的不同存儲器當中分布來自多個應(yīng)用的指令和數(shù)據(jù),以供由關(guān)聯(lián)的處理器執(zhí)行。所述多個應(yīng)用可以在多處理器系統(tǒng)上執(zhí)行。在一些實施例中,所述多個應(yīng)用可以一起執(zhí)行并且彼此通信,以執(zhí)行實時操作。例如,所述多個應(yīng)用可以處理實時數(shù)據(jù)。實時操作可以執(zhí)行關(guān)于實時數(shù)據(jù)的輸入或輸出當中至少其一。
[0009]所述多個應(yīng)用可以包括第一應(yīng)用和多個其它應(yīng)用。根據(jù)一些實施例,第一應(yīng)用可以用第二應(yīng)用交換,其中該第二應(yīng)用可以不是先前已被加載在多處理器系統(tǒng)上并執(zhí)行的多個應(yīng)用之一??梢栽诓煌V顾龆鄠€其它應(yīng)用的同時執(zhí)行交換。換句話說,所述多個其它應(yīng)用可以在交換期間繼續(xù)執(zhí)行,以執(zhí)行實時操作和處理實時數(shù)據(jù)。交換之后,所述多個其它應(yīng)用可以繼續(xù)與第二應(yīng)用一起執(zhí)行,并且所述多個其它應(yīng)用的至少一個子集可以與第二應(yīng)用通信,以執(zhí)行實時操作通信和處理實時數(shù)據(jù)。所述多個其應(yīng)用可以不知道交換正在發(fā)生。
[0010]在交換之前,第一應(yīng)用可以在多個處理器的第一子集上執(zhí)行。在一些實施例中,交換可以包括在多個處理器的第一子集上停止第一應(yīng)用,將第一應(yīng)用與在多處理器系統(tǒng)外部的一個或多個外部資源解耦,以及可選地保存第一應(yīng)用的狀態(tài)。交換還可以包括,在第二應(yīng)用中的交換之前,復(fù)位多個處理器的第一子集,以便將多個處理器的第一子集置于已知狀態(tài)。交換還可以包括解耦第一應(yīng)用與一個或多個其它應(yīng)用的通信。
[0011]然后,交換可以涉及將第二應(yīng)用加載到與多個處理器的第一子集相關(guān)聯(lián)的存儲器中。在加載第二應(yīng)用之后,第二應(yīng)用可以被耦合到一個或多個外部資源,這些外部資源可以是第一應(yīng)用之前耦合到的相同的一個或多個外部資源,或者可以是不同的外部資源。在第二應(yīng)用已被加載之后,交換還可以包括耦合第二應(yīng)用與一個或多個其它應(yīng)用的通信,這些其它應(yīng)用可以是第一應(yīng)用先前與其通信的相同的應(yīng)用,或者可以是不同的應(yīng)用。
[0012]在一些實施例中,一個或多個第一緩沖存儲器可以耦合在多個處理器的第一子集與多個處理器的其它子集之間。解耦第一應(yīng)用的通信可以包括控制一個或多個第一緩沖存儲器,以啟用解耦,例如,通過更改由第一緩沖存儲器執(zhí)行的、到和/或來自第一應(yīng)用的通
?目Ο
[0013]在一些實施例中,第一應(yīng)用可以在第一緩沖存儲器的下游側(cè),并且更改由第一緩沖存儲器執(zhí)行的通信可以包括在交換期間停止第一緩沖存儲器從發(fā)送應(yīng)用接受數(shù)據(jù)。在一些實施例中,發(fā)送應(yīng)用可以響應(yīng)于第一緩沖存儲器停止從發(fā)送應(yīng)用接收數(shù)據(jù)而暫停。在其它實施例中,更改可以包括配置第一緩沖存儲器在交換期間繼續(xù)從發(fā)送應(yīng)用接受數(shù)據(jù)并且重寫先前存儲且未發(fā)送的數(shù)據(jù)。
[0014]在其它實施例中,第一應(yīng)用可以在第一緩沖存儲器的上游側(cè),并且更改由第一緩沖存儲器執(zhí)行的通信可以包括在交換期間停止第一緩沖存儲器向接收應(yīng)用轉(zhuǎn)發(fā)數(shù)據(jù)。在一些實施例中,一旦沒有來自第一應(yīng)用的更多進入的數(shù)據(jù),第一緩沖存儲器就可以停止向接收應(yīng)用轉(zhuǎn)發(fā)數(shù)據(jù)。在其它實施例中,更改可以包括配置第一緩沖存儲器在交換期間重復(fù)地將其數(shù)據(jù),例如先前從第一應(yīng)用接收并存儲在第一緩沖存儲器中的數(shù)據(jù),發(fā)送到接收應(yīng)用兩次或更多次。因此,相同的數(shù)據(jù)可以在交換期間被重復(fù)地發(fā)送到接收應(yīng)用。
[0015]在一些實施例中,第一應(yīng)用可以經(jīng)由第一緩沖存儲器傳送結(jié)構(gòu)化數(shù)據(jù)元素。每個數(shù)據(jù)元素可以具有開始邊界和結(jié)束邊界。第一緩沖存儲器可以在第一數(shù)據(jù)元素的傳輸已被啟動之后接收停止數(shù)據(jù)通信的請求。在一些實施例中,第一緩沖存儲器可以繼續(xù)第一數(shù)據(jù)元素的傳輸,直到第一數(shù)據(jù)元素的結(jié)束邊界。
[0016]當?shù)诙?yīng)用被換入時,通過配置一個或多個緩沖存儲器,第二應(yīng)用可以被耦合到它與其通信的(一個或多個)應(yīng)用。例如,如果第二應(yīng)用和第一應(yīng)用與相同的(一個或多個)其它應(yīng)用通信,則通過控制參與解耦第一應(yīng)用與(一個或多個)其它應(yīng)用的相同的一個或多個第一緩沖存儲器,第二應(yīng)用可以耦合到這些(一個或多個)其它應(yīng)用。
[0017]例如,第一應(yīng)用可以已經(jīng)在給定緩沖存儲器的下游側(cè),并且該緩沖存儲器可以已經(jīng)在第一應(yīng)用被換出時被停止從發(fā)送應(yīng)用接受數(shù)據(jù)。當?shù)诙?yīng)用被換入時,緩沖存儲器可以被放回接受數(shù)據(jù)的模式。因此,當開始第二應(yīng)用的執(zhí)行時,由發(fā)送應(yīng)用發(fā)送的數(shù)據(jù)現(xiàn)在可以被發(fā)送到第二應(yīng)用,而不是先前從發(fā)送應(yīng)用接收數(shù)據(jù)的第一應(yīng)用。
[0018]作為另一個例子,第一應(yīng)用可以已經(jīng)在給定緩沖存儲器的上游側(cè),并且該緩沖存儲器可以已經(jīng)在第一應(yīng)用被換出時被停止向接收應(yīng)用轉(zhuǎn)發(fā)數(shù)據(jù)。當?shù)诙?yīng)用被換入時,緩沖存儲器可以被放回轉(zhuǎn)發(fā)數(shù)據(jù)的模式。因此,當開始第二應(yīng)用的執(zhí)行時,接收應(yīng)用現(xiàn)在可以從第二應(yīng)用,而不是先前將數(shù)據(jù)發(fā)送到接收應(yīng)用的第一應(yīng)用,接收數(shù)據(jù)。
[0019]第二應(yīng)用可以在先前被用來執(zhí)行第一應(yīng)用的多處理器系統(tǒng)的處理器的同一子集上執(zhí)行,或者可以在處理器的不同子集上執(zhí)行,或者在相同和不同處理器的組合上執(zhí)行。交換可以包括將第二應(yīng)用的程序指令和/或數(shù)據(jù)加載到與執(zhí)行第二應(yīng)用的處理器子集相關(guān)聯(lián)的一個或多個存儲器中。在一些實施例中,第二應(yīng)用可以從外部存儲器設(shè)備,諸如RAM設(shè)備、閃存存儲器設(shè)備或者在多處理器系統(tǒng)外部的其它存儲器設(shè)備,被加載到一個或多個存儲器中。在其它實施例中,第二應(yīng)用可以從由多處理器系統(tǒng)外部的外部處理器發(fā)送的指令流被加載到一個或多個存儲器中。
[0020]將第二應(yīng)用的程序指令和數(shù)據(jù)加載到一個或多個存儲器中可以包括沿兩條或更多條交換路線通過多處理器系統(tǒng)發(fā)送指令和數(shù)據(jù)(通信路線是物理地實現(xiàn)多處理器系統(tǒng)中的通信的一種手段)。每條交換路線可以與特定存儲器相關(guān)聯(lián)并且可以被用來將指令/數(shù)據(jù)加載到該存儲器中。在一些實施例中,這兩條或更多條交換路線可以共享共同的第一部分,被稱為交換路線的主干部分。該主干部分可以包括從多處理器系統(tǒng)的I/O端口到多處理器系統(tǒng)內(nèi)的端點的路線。交換路線的第二部分可以將主干路線的端點連接到被第二應(yīng)用使用的目標存儲設(shè)備。
[0021]在一些實施例中,第一應(yīng)用可以響應(yīng)于從在多處理器系統(tǒng)上執(zhí)行的其中一個其它應(yīng)用接收信息而用第二應(yīng)用交換,例如,其中該信息指示第一應(yīng)用應(yīng)當被換出。在其它實施例中,交換可以包括響應(yīng)于接收到指示第一應(yīng)用應(yīng)當被換出的外部信號而換出第一應(yīng)用。外部信號可以從多處理器系統(tǒng)的外部接收。例如,在一些實施例中,外部信號可以從在多處理器系統(tǒng)外部的處理器上執(zhí)行的系統(tǒng)控制器程序接收。
[0022]在一些實施例中,主任務(wù)或管理任務(wù)可以連同多個應(yīng)用一起在多處理器系統(tǒng)上執(zhí)行。管理任務(wù)可以在多處理器系統(tǒng)的一個或多個處理器上執(zhí)行,并且可以被配置為管理用第二應(yīng)用交換第一應(yīng)用。
[0023]在一些實施例,第二應(yīng)用可以包括多個可執(zhí)行任務(wù),并且用第二應(yīng)用交換第一應(yīng)用可以包括配置每個所述任務(wù)由多處理器系統(tǒng)的不同處理器執(zhí)行。
[0024]在一些實施例中,用第二應(yīng)用交換第一應(yīng)用可以包括同時從多處理器系統(tǒng)外部的兩個或更多個源存儲器設(shè)備向多處理器系統(tǒng)發(fā)送兩個或更多個指令流。每個指令流可以包括第二應(yīng)用的程序指令。
[0025]在一些實施例中,交換可以包括同時用多個第二應(yīng)用交換第一應(yīng)用。多個第二應(yīng)用可以同時從不同的源存儲設(shè)備被加載到多處理器系統(tǒng)中。
[0026]在進一步的實施例中,程序指令可以被存儲在計算機可讀存儲介質(zhì)上。程序指令可以由多處理器系統(tǒng)執(zhí)行,以便在多處理器系統(tǒng)上加載多個應(yīng)用。多處理器系統(tǒng)可以包括多個處理器和散置在處理器當中的多個存儲器。加載可以包括在多個存儲器中的不同存儲器當中分布來自多個應(yīng)用的指令和數(shù)據(jù)以供關(guān)聯(lián)的處理器執(zhí)行。
[0027]程序指令還可以由多處理器系統(tǒng)執(zhí)行,以啟動多個應(yīng)用在多處理器系統(tǒng)上的執(zhí)行。多個應(yīng)用可以一起執(zhí)行并且彼此通信,以執(zhí)行實時操作。實時操作可以執(zhí)行關(guān)于實時數(shù)據(jù)的輸入或輸出當中至少其一。多個應(yīng)用可以處理實時數(shù)據(jù)。
[0028]多個應(yīng)用可以包括第一應(yīng)用和多個其它應(yīng)用。程序指令還可以由多處理器系統(tǒng)執(zhí)行,以便用第二應(yīng)用交換第一應(yīng)用,其中第二應(yīng)用不是先前被加載在多處理器系統(tǒng)上并執(zhí)行的多個應(yīng)用之一??梢栽诓煌V顾龆鄠€其它應(yīng)用的情況下執(zhí)行交換。換句話說,所述多個其它應(yīng)用可以在交換期間繼續(xù)執(zhí)行,以執(zhí)行實時操作和處理實時數(shù)據(jù)。在交換之后,所述多個其它應(yīng)用可以繼續(xù)與第二應(yīng)用一起執(zhí)行。所述多個其它應(yīng)用的至少一個子集可以與第二應(yīng)用通信,以執(zhí)行實時操作和處理實時數(shù)據(jù)。
[0029]根據(jù)一些實施例,多處理器系統(tǒng)可以包括:多個處理器;散置在處理器當中的多個存儲器;以及互連多個處理器和散置在處理器當中的多個存儲器的通信架構(gòu)。通信架構(gòu)可以包括散置在多個處理器的至少一個子集當中的多個緩沖存儲器。多個緩沖存儲器可以可配置為在多處理器系統(tǒng)中執(zhí)行的應(yīng)用之間傳送數(shù)據(jù)。在多個應(yīng)用在多處理器系統(tǒng)上被執(zhí)行以便執(zhí)行包括實時數(shù)據(jù)的接收和/或發(fā)送以及實時數(shù)據(jù)的處理的實時操作的過程中,多個緩沖存儲器可以可配置為在用第二應(yīng)用交換第一應(yīng)用期間中斷和恢復(fù)活動應(yīng)用之間的連接。
[0030]在一些實施例中,多處理器系統(tǒng)還可以包括耦合在多個處理器之間的多個數(shù)據(jù)存儲器路由器(DMR)。DMR可以包括散置在處理器當中的多個存儲器。
【附圖說明】
[0031 ] 圖1A示出了示例攝像機;
[0032]圖1B示出了可被包括在攝像機中或耦合到其的嵌入式系統(tǒng),其中該嵌入式系統(tǒng)利用配置為具有可交換應(yīng)用的多處理器系統(tǒng)(MPS);
[0033]圖2A示出了示例性蜂窩電話;
[0034]圖2B和2C示出了用在電話中的MPS,其中該MPS配置為具有可交換應(yīng)用;
[0035]圖3A示出了無線發(fā)送器/接收機設(shè)備;
[0036]圖3B示出了可以由無線設(shè)備執(zhí)行的通信算法,其中該通信算法是利用在MPS上執(zhí)行的可交換應(yīng)用實現(xiàn)的;
[0037]圖4-6示出了根據(jù)一種實施例、用于MPS的HyperX?體系架構(gòu)的例子;
[0038]圖7-12示出了根據(jù)一種實施例、在MPS上執(zhí)行的算法的示例蹤跡;
[0039]圖13示出了多個應(yīng)用在其上執(zhí)行的MPS的例子;
[0040]圖14示出了在應(yīng)用被換出并且另一個應(yīng)用被換入以取代其之后的圖13的MPS ;
[0041]圖15示出了在三個應(yīng)用被其它兩個應(yīng)用取代之后的圖13的MPS ;
[0042]圖16示出了其中主任務(wù)被觸發(fā)以便通過在MPS內(nèi)部執(zhí)行的應(yīng)用來啟動應(yīng)用交換的實施例;
[0043]圖17示出了其中主任務(wù)被觸發(fā)以便通過在位于MPS外部的通用處理器(GPP)上執(zhí)行的系統(tǒng)控制器程序來啟動應(yīng)用交換的不同實施例;
[0044]圖18示出了其中主任務(wù)與系統(tǒng)控制器一起在外部GPP上執(zhí)行的實施例;
[0045]圖19示出了在從外部存儲器設(shè)備換入應(yīng)用時所涉及的資源;
[0046]圖20示出了備選實施例,其中,通過從外部處理器向MPS發(fā)送指令和數(shù)據(jù)流,應(yīng)用代碼被加載到MPS中;
[0047]圖21示出了其中兩個應(yīng)用同時從兩個不同的外部RAM設(shè)備被換入MPS的實施例;
[0048]圖22示出了換入和換出應(yīng)用的生命周期;
[0049]圖23示出了換入和換出簡單應(yīng)用的生命周期;
[0050]圖24示出了用于生成實現(xiàn)應(yīng)用交換所需的可執(zhí)行軟件代碼的一組軟件工具;
[0051]圖25示出了從MPS上的一個應(yīng)用配置到該MPS上的另一應(yīng)用配置的過渡;
[0052]圖26示出了可以在系統(tǒng)的開發(fā)階段被用來構(gòu)造互不干擾的應(yīng)用集的開發(fā)工作流;
[0053]圖27示出了其中多條交換路線被用來換入應(yīng)用的例子;及
[0054]圖28示出了其中可交換應(yīng)用與其它應(yīng)用通過經(jīng)由隔離器傳遞數(shù)據(jù)來通信的例子。
[0055]雖然本公開內(nèi)容容許各種修改和備選形式,但是其具體實施例作為例子在附圖中示出并且將在本文中詳細描述。但是,應(yīng)當理解,附圖和對其的詳細描述不是要將本公開內(nèi)容限定到所示出的特定形式,相反,其意圖是覆蓋所有屬于由所附權(quán)利要求所限定的本公開內(nèi)容的精神和范圍之內(nèi)的修改、等同物和備選方案。本文所使用的標題僅用于組織目的,并且不意味著被用來限制本描述的范圍。如貫穿本說明書所使用的,詞“可以”在許可的意義(即,意味著有可能)而不是強制的意義(即,意味著必須)上被使用。類似地,詞“包括”或“包含”的意思是包括,但不限于。
[0056]各種單元、電路或其它部件可以被描述為“被配置為”執(zhí)行一個或多個任務(wù)。在這種語境下,“被配置為”是一般地指“具有”在操作期間執(zhí)行一個或多個任務(wù)的“電路”的“結(jié)構(gòu)”的廣義闡述。照此,即使當單元/電路/部件當前不執(zhí)行任務(wù)時,單元/電路/部件也可以被配置為執(zhí)行該任務(wù)。一般而言,構(gòu)成對應(yīng)于“被配置為”的結(jié)構(gòu)