用于機(jī)器視覺應(yīng)用的多核心分布式處理的制作方法
【專利摘要】設(shè)備的實(shí)施例包含:第一處理器核心,其上運(yùn)行有本地代理,所述代理包括本地進(jìn)程及委托代理;及第二處理器核心,其上運(yùn)行有遠(yuǎn)程代理,所述遠(yuǎn)程代理是所述本地代理的實(shí)例。共享存儲器耦合到所述第一處理器核心及所述第二處理器核心,其中所述本地代理及所述遠(yuǎn)程代理經(jīng)由所述共享存儲器來通信。揭示并主張其它實(shí)施例。
【專利說明】用于機(jī)器視覺應(yīng)用的多核心分布式處理
【技術(shù)領(lǐng)域】
[0001]本發(fā)明一般來說涉及數(shù)據(jù)處理,且明確地說(但非排他地),涉及用于機(jī)器視覺應(yīng)用的多核心分布式處理。
【背景技術(shù)】
[0002]使用多個核心的微處理器對于許多應(yīng)用具有改進(jìn)的計(jì)算速度,但并非所有應(yīng)用均顯著受益于多核心處理。對于的確受益于多核心實(shí)施方案的那些類型的應(yīng)用,由于需要在核心之間進(jìn)行通信及協(xié)調(diào),因此所需代碼可是復(fù)雜的且難以維持的。
[0003]多核心軟件的一個實(shí)施方案使用遠(yuǎn)程過程調(diào)用(RPC)來在核心當(dāng)中進(jìn)行通信及協(xié)調(diào),但此方法具有一些缺點(diǎn),明顯地,客戶端及服務(wù)器核心實(shí)施RPC所需的相關(guān)聯(lián)額外開銷及軟件復(fù)雜度。RPC層的實(shí)施方案涉及:將代碼分到兩個處理器或核心上,所述兩個處理器或核心中的一者稱為客戶端及另一者稱為服務(wù)器;及提供用以透明地連接客戶端與服務(wù)器之間的功能調(diào)用的層。此涉及兩個核心上的RPC模塊且不提供可易于維持或升級的架構(gòu)。此外,數(shù)據(jù)在核心之間的傳送可消耗處理時(shí)間及存儲器帶寬。最后,在大部分RPC實(shí)施方案中,不存在客戶端主動參與由服務(wù)器提供的處理的規(guī)定,此意味著處理完全授權(quán)給服務(wù)器或遠(yuǎn)程例程。
【發(fā)明內(nèi)容】
【專利附圖】
【附圖說明】
[0004]參照以下各圖描述本發(fā)明的非限制性及非窮盡性實(shí)施例,其中除非另有說明,否則各個視圖中的相似元件符號指代相似部件。
[0005]圖1是機(jī)器視覺系統(tǒng)的實(shí)施例的框圖。
[0006]圖2是多核心處理器的實(shí)施例的框圖。
[0007]圖3是多核心處理器的替代實(shí)施例的框圖。
[0008]圖4A到4B —起是用于多核心處理器的軟件架構(gòu)的實(shí)施例的框圖。
[0009]圖5是用于實(shí)施圖4中所展示的軟件架構(gòu)的方法的實(shí)施例的流程圖。
【具體實(shí)施方式】
[0010]描述用于機(jī)器視覺應(yīng)用的多核心分布式處理的系統(tǒng)及方法的實(shí)施例。描述眾多特定細(xì)節(jié)以提供對本發(fā)明的實(shí)施例的透徹理解,但所屬領(lǐng)域的技術(shù)人員將認(rèn)識到,可在不具有所述特定細(xì)節(jié)中的一者或一者以上的情況下或借助其它方法、組件、材料等實(shí)踐本發(fā)明。在一些例子中,未詳細(xì)展示或描述眾所周知的結(jié)構(gòu)、材料或操作,但盡管如此其仍囊括在本發(fā)明的范圍內(nèi)。
[0011]本說明書通篇所提及的“一個實(shí)施例”或“一實(shí)施例”意味著結(jié)合所述實(shí)施例一起所描述的特定特征、結(jié)構(gòu)或特性包含于至少一個所描述實(shí)施例中。因此,在本說明書中出現(xiàn)的短語“在一個實(shí)施例中”或“在一實(shí)施例中”未必全部指代同一實(shí)施例。此外,特定特征、結(jié)構(gòu)或特性可以任何適合方式組合于一個或一個以上實(shí)施例中。
[0012]圖1圖解說明機(jī)器視覺系統(tǒng)100的實(shí)施例。系統(tǒng)100包含計(jì)算機(jī)102,在一個實(shí)施例中,所述計(jì)算機(jī)可是經(jīng)由總線103耦合到多個機(jī)器視覺相機(jī)104、106及108的個人計(jì)算機(jī)(PC)。在一個實(shí)施例中,計(jì)算機(jī)102可另外(舉例來說)經(jīng)由網(wǎng)絡(luò)(例如以太網(wǎng)或因特網(wǎng))耦合到另一計(jì)算機(jī)110。在一個實(shí)施例中,機(jī)器視覺相機(jī)104、106及108可是相同種類的相機(jī),但在其它實(shí)施例中,并不需要全部是相同種類的相機(jī)。機(jī)器視覺相機(jī)104、106及108可是相機(jī)或智能相機(jī)的混合,其中區(qū)別在于:相機(jī)圖像的處理是在相機(jī)自身而非相機(jī)連接到的計(jì)算機(jī)上進(jìn)行。在仍其它實(shí)施例中,系統(tǒng)100可包含比所圖解說明的三個多或少的相機(jī)。
[0013]計(jì)算機(jī)102可包含存儲器、存儲裝置、顯示器及經(jīng)由其計(jì)算機(jī)102可與相機(jī)104到108或與計(jì)算機(jī)110通信的通信接口。計(jì)算機(jī)110可具有類似元件,包含經(jīng)由其計(jì)算機(jī)110可與計(jì)算機(jī)102通信的通信接口。計(jì)算機(jī)102及110各自包含處理器,所述計(jì)算機(jī)可使用所述處理器對數(shù)據(jù)執(zhí)行其與系統(tǒng)中的其它元件(例如機(jī)器視覺相機(jī)104到108)進(jìn)行交換的操作或可直接對相機(jī)圖像執(zhí)行圖像處理操作。在一個實(shí)施例中,計(jì)算機(jī)102及110各自具有擁有兩個或兩個以上處理器核心(參見,例如,圖2)的多核心處理器。在另一實(shí)施例中,計(jì)算機(jī)102及110可各自具有單核心處理器,但通過使用到計(jì)算機(jī)110的連接,可使計(jì)算機(jī)102及110中的單核心處理器一起工作,就好像其是單個多核心處理器(參見,例如,圖3) —樣。在仍其它實(shí)施例中,計(jì)算機(jī)102及110兩者不需要具有相同類型的處理器;舉例來說,一個可具有多核心處理器及另一個可具有單核心處理器。
[0014]在操作中,數(shù)據(jù)(例如圖像)由機(jī)器視覺相機(jī)104到108捕獲且經(jīng)由總線103傳送到計(jì)算機(jī)102及110中的一者或兩者以供處理??煞峙鋱D像數(shù)據(jù)(其在一個實(shí)施例中可是二維圖像)以取決于處理器在計(jì)算機(jī)102及110中的配置而以各種方式進(jìn)行處理。在其中計(jì)算機(jī)102具有多核心處理器且將被期望進(jìn)行所有圖像處理的實(shí)施例中,可分配個別圖像,其中一個核心處理圖像的一部分且另一個核心處理圖像的另一部分。在另一實(shí)施例中,每一核心可對完整圖像執(zhí)行不同處理任務(wù)。在其中計(jì)算機(jī)102及110經(jīng)耦合以形成多核心處理器(參見,例如,圖3)的實(shí)施例中,可類似地分配任務(wù)。
[0015]圖2圖解說明多核心處理器200的實(shí)施例。處理器200形成于單個襯底202上且包含兩個處理器核心:第一核心A及第二核心B。每一處理器核心包含存儲器高速緩沖存儲器(針對核心A為高速緩沖存儲器A,針對核心B為高速緩沖存儲器B),且兩個處理器經(jīng)由其相應(yīng)高速緩沖存儲器耦合到共享存儲器204,所述共享存儲器在所圖解說明實(shí)施例中是在板存儲器,但在其它實(shí)施例中可在處理器200外部。核心A及B可接著經(jīng)由其高速緩沖存儲器來讀取數(shù)據(jù)及將數(shù)據(jù)寫入到共享存儲器204。每一處理器核心還耦合到其自身核心內(nèi)總線-針對核心A為核心內(nèi)總線A及針對核心B為核心內(nèi)總線B。核心內(nèi)總線提供相同處理器核心內(nèi)的元件之間的通信。核心內(nèi)總線A及B進(jìn)而耦合到核心問總線206,所述核心問總線提供核心A與核心B之間以及與處理器200外側(cè)的其它元件的通信,例如,經(jīng)由其處理器200可接收及發(fā)射包含來自相機(jī)傳感器(舉例來說,來自機(jī)器視覺相機(jī))的圖像數(shù)據(jù)的數(shù)據(jù)的通信接口。在一個實(shí)施例中,處理器200可是同質(zhì)的,此意味著核心A及B兩者是相同類型的處理器,但在其它實(shí)施例中,處理器200可是異質(zhì)的,此意味著核心A及B是不同類型的核心。舉例來說,在一個異質(zhì)實(shí)施例中,核心A可是高級RISC機(jī)器(ARM)核心,而核心B可是數(shù)字信號處理器(DSP)核心。此外,處理器200的所圖解說明實(shí)施例具有兩個核心,但在其它實(shí)施例中,處理器200可具有兩個以上核心。
[0016]在處理器200的操作中,核心A及B各自執(zhí)行致使核心基于在處理器處所接收到的數(shù)據(jù)起作用的代碼(對象、進(jìn)程、線程等)。指派給每一核心的處理任務(wù)可取決于其中將使用處理器200的應(yīng)用的本質(zhì)及將處理的數(shù)據(jù)的本質(zhì)而變化。舉例來說,在其中機(jī)器視覺系統(tǒng)(例如系統(tǒng)100)中使用處理器200的實(shí)施例中,可分配從機(jī)器視覺相機(jī)所接收到的每一圖像且所述圖像的每一部分由不同核心處理?;蛘撸恳缓诵目蓪φ麄€圖像進(jìn)行不同處理任務(wù)或可將每一圖像發(fā)送到其自身核心以使得每一核心對圖像進(jìn)行完整處理。
[0017]在操作期間,核心A及B經(jīng)由其相應(yīng)高速緩沖存儲器而從共享存儲器204讀取及寫入到共享存儲器204。如果核心A及B上運(yùn)行的任務(wù)是獨(dú)立的,那么核心A及B可讀取及寫入到共享存儲器204的不同部分(即,不同地址塊),但如果所述任務(wù)不是獨(dú)立的,那么核心A及B可讀取及寫入到共享存儲器204的相同部分(即,相同存儲器地址塊)?;旧?,接著,當(dāng)兩個核心使用共享存儲器204的相同部分時(shí),共享存儲器可在核心之間提供直接通信通道。在操作期間,具有每一核心的元件可使用處理器核心內(nèi)的通信通道或使用每一核心的相應(yīng)處理器內(nèi)總線通信。如果在操作期間需要核心A與B之間的通信,那么核心還可經(jīng)由核心問總線206來通信。
[0018]圖3圖解說明多核心處理器300的替代實(shí)施例。與處理器200不同,處理器300不形成于單個襯底上,而是包含經(jīng)耦合以使得其一起形成多核心處理器的一對單獨(dú)單核心處理器。于是,在多核心處理器300中,每一單獨(dú)單核心處理器被視為一個處理器核心。在一個實(shí)施例中,處理器300可是同質(zhì)的,此意味著處理器A及B兩者是相同類型的處理器,但在其它實(shí)施例中,處理器A及B可是不同類型的處理器。舉例來說,在一個實(shí)施例中,處理器A可是高級RISC機(jī)器(ARM)核心,而處理器B可是數(shù)字信號處理器(DSP)核心。此外,處理器300的所圖解說明實(shí)施例具有兩個核心(處理器),但在其它實(shí)施例中,處理器300可具有兩個以上核心。在另外其它實(shí)施例中,處理器A及B兩者不需要具有相同數(shù)目個核心;舉例來說,一個可為多核心處理器及另一個可為單核心處理器。
[0019]多核心處理器300包含兩個處理器核心:第一處理器A為第一處理器核心及第二處理器B為第二處理器核心。每一處理器包含存儲器高速緩沖存儲器-針對處理器A為高速緩沖存儲器A及針對處理器B為高速緩沖存儲器B。處理器A經(jīng)由其相應(yīng)高速緩沖存儲器耦合到存儲器302,及處理器B經(jīng)由其相應(yīng)高速緩沖存儲器耦合到存儲器304。每一處理器還耦合到其自身核心內(nèi)總線-針對處理器A為核心內(nèi)總線A及針對處理器B為核心內(nèi)總線B。核心內(nèi)總線提供相同處理器內(nèi)的元件之間的通信。核心內(nèi)總線A及B進(jìn)而耦合到對應(yīng)通信接口 -針對處理器A為接口 306及針對處理器B為接口 308。通信接口使用某一種類的通信協(xié)議使得能夠經(jīng)由通信路徑301在處理器A與處理器B之間進(jìn)行通信。在一個實(shí)施例中,通信路徑301可是硬連線連接,但在其它實(shí)施例中,其可是無線連接且在另外其它實(shí)施例中,其可是硬連線與無線連接的某一組合。在不同實(shí)施例中,通信接口 306及308以及通信路徑301所使用的通信協(xié)議可是以太網(wǎng)、TCP / IP或某一其它通信協(xié)議。
[0020]在處理器300的操作中,處理器A及B各自執(zhí)行致使核心基于數(shù)據(jù)起作用的代碼(對象、進(jìn)程、線程等)。指派給每一核心的任務(wù)可取決于處理器A及B的類型、其中將使用處理器300的應(yīng)用的本質(zhì)及將處理的數(shù)據(jù)的本質(zhì)而變化。舉例來說,在其中機(jī)器視覺系統(tǒng)(例如系統(tǒng)100)中使用處理器300的實(shí)施例中,可分配從機(jī)器視覺相機(jī)所接收到的每一圖像且所述圖像的每一部分由不同處理器處理。或者,每一核心可對整個圖像進(jìn)行不同處理任務(wù)或可將每一圖像發(fā)送到其自身核心以使得每一核心對圖像進(jìn)行完整處理。
[0021]在操作期間,如果處理器A及B上運(yùn)行的任務(wù)是獨(dú)立的,那么核心A及B可讀取及寫入到其自身相應(yīng)存儲器302及304,但如果存在數(shù)據(jù)相關(guān)性,那么可設(shè)置處理器300,因此處理器A及B可讀取及寫入到共享存儲器。在一個實(shí)施例中,共享存儲器可是現(xiàn)有存儲器302或304中的一者,在此情形中,一個處理器讀取及寫入到其自身存儲器及另一個處理器經(jīng)由通信路徑301從所述相同存儲器讀取及寫入。在另一實(shí)施例中,第三存儲器(未展示)可用作共享存儲器,以使得核心A及B兩者將均經(jīng)由通信鏈路(例如通信鏈路301)從共享存儲器讀取及寫入。在操作期間,處理器A及B中的每一者內(nèi)的元件可使用處理器核心內(nèi)的通道或使用每一核心的相應(yīng)處理器內(nèi)總線來通信。
[0022]圖4A到4B —起圖解說明可用于多核心處理器(例如多核心處理器200及300)中的軟件架構(gòu)400的實(shí)施例。軟件架構(gòu)400實(shí)施于一對處理器核心上:核心A(圖4A中所展示),其將稱為本地或客戶端核心;及核心B (圖4B中所展示),其將稱為遠(yuǎn)程或服務(wù)器核心。所圖解說明實(shí)施例展示雙核心處理器(例如處理器200)的架構(gòu),但在其它實(shí)施例中,所述架構(gòu)可擴(kuò)展到任何數(shù)目個處理器且在仍其它實(shí)施例中,其可適合于在多核心處理器(例如處理器300)上起作用。
[0023]核心A包含核心內(nèi)通信總線402,而核心B包含核心內(nèi)通信總線406。所述核心內(nèi)通信總線可用于相同核心中的元件之間的通信。核心內(nèi)通信總線402及406兩者進(jìn)而耦合到核心問總線404,所述核心問總線可用于核心A與核心B之間的通信。在所圖解說明實(shí)施例中,用于核心內(nèi)通信總線402及406以及核心問通信總線404的傳輸協(xié)議是由美國加利福尼亞州阿拉米達(dá)市的風(fēng)河系統(tǒng)公司(Wind River Systems of Alameda,California,USA)開發(fā)的vxWorks操作系統(tǒng)的多操作系統(tǒng)進(jìn)程問通信(MIPC)協(xié)議。風(fēng)河系統(tǒng)公司現(xiàn)在是加利福尼亞州圣克拉拉市的英特爾公司(Intel Corporation of Santa Clara,California)的一部分。在其它實(shí)施例中,可使用其它通信協(xié)議。
[0024]每一核心內(nèi)通信總線包含完成核心之間的連接的N個端口。在不同實(shí)施例中,可針對特定任務(wù)指派不同端口。舉例來說,在機(jī)器視覺系統(tǒng)的實(shí)施例中,端口可經(jīng)指派如下:
[0025]端口功能
[0026]端口 O: 未使用。
[0027]端口 1: 主要(在處理器/核心B上運(yùn)行最高優(yōu)先權(quán)的線程)。
[0028]端口 2: 圖像獲取。
[0029]端口 3到η:視覺代理分布式處理。
[0030]一旦在核心之間建立MIPC端口連接,其將永遠(yuǎn)不會實(shí)際上斷開。而是,如果移除使用所述端口的任務(wù),那么所述端口將變得可由另一任務(wù)加以使用。在一個實(shí)施例中,所述端口狀態(tài)經(jīng)定義如下:
[0031]非作用: 尚未建立核心之間的端口連接。
[0032]經(jīng)連接: 已建立核心之間的端口連接,但所述端口是可用的。
[0033]作用:所建立的端口連接及端口當(dāng)前在使用中。[0034]在核心A內(nèi)正運(yùn)行各種進(jìn)程,包含本地代理408及本地?cái)?shù)據(jù)管理進(jìn)程418。在核心A內(nèi)還運(yùn)行主要傳輸代理414及客戶端傳輸代理416。本地代理408是處理數(shù)據(jù)的代理;在架構(gòu)400的機(jī)器視覺實(shí)施例中,本地代理408將是處理來自機(jī)器視覺相機(jī)的圖像數(shù)據(jù)的代碼。本地代理408包含本地進(jìn)程412及委托代理410。本地進(jìn)程412處置由核心A上的本地代理408實(shí)施的本地處理,而委托代理410將處理請求傳送到核心B上運(yùn)行的遠(yuǎn)程代理420。在一個實(shí)施例中,委托代理410可提供與遠(yuǎn)程代理420相同的接口且將把操作請求中的一些操作請求傳送到所述遠(yuǎn)程代理同時(shí)仍為自身保留一些操作請求。
[0035]本地?cái)?shù)據(jù)管理進(jìn)程418在架構(gòu)400的操作期間讀取及寫入到共享存儲器(參見圖
2)。在一個實(shí)施例中,數(shù)據(jù)管理進(jìn)程418使用數(shù)據(jù)類型類別,所述數(shù)據(jù)類型類別使用重定向的指針邏輯提供讀取及寫入到存儲器的能力,以使得其為核心提供用以重定向數(shù)據(jù)流以使得代理將寫入/更新用于適當(dāng)處理器核心的數(shù)據(jù)的方法。此允許本地代理408及遠(yuǎn)程代理420就好像其是步驟客戶端(step client)所觀看到的一個代理一樣起作用。此還允許兩個代理彼此透明地讀取及寫入數(shù)據(jù),就好像存在數(shù)據(jù)的單個副本一樣,對于單核心實(shí)施方案也將是此情形。此通過利用將用作本地及遠(yuǎn)程代理本機(jī)類型的基類的數(shù)據(jù)參考模板類別而實(shí)現(xiàn)。本地?cái)?shù)據(jù)管理進(jìn)程418還管理核心A上的高速緩沖存儲器的高速緩沖存儲器相干性,從而取決于數(shù)據(jù)流方向而提供高速緩沖存儲器失效指令及高速緩沖存儲器刷新指令。
[0036]在一個實(shí)施例中,本地?cái)?shù)據(jù)管理進(jìn)程418使用重定向的指針邏輯,其中委托代理410將參考到遠(yuǎn)程代理數(shù)據(jù)位置的點(diǎn)使輸入類型指針重定向且遠(yuǎn)程代理將參考本地代理數(shù)據(jù)位置使輸出類型指針重定向。借助重定向的指針邏輯,本地代理及遠(yuǎn)程代理兩者均寫入到共享存儲器中的與遠(yuǎn)程數(shù)據(jù)管理進(jìn)程428相同的存儲器地址框,以使得共享存儲器提供核心之間的運(yùn)行時(shí)通信且不需要在核心之間傳送數(shù)據(jù),從而允許簡化且快速進(jìn)程。
[0037]主要傳輸進(jìn)程414及客戶端傳輸進(jìn)程416處置核心A上運(yùn)行的進(jìn)程當(dāng)中的通信以及核心A上的進(jìn)程與核心B上或(總的來說)所述處理器外的特定進(jìn)程之間的通信。主要傳輸進(jìn)程414與核心內(nèi)總線402的主要端口且與客戶端傳輸進(jìn)程416進(jìn)行通信。客戶端傳輸進(jìn)程416進(jìn)而與主要傳輸進(jìn)程414、核心內(nèi)總線402的代理端口及委托代理410通信。
[0038]核心B運(yùn)行大致反映核心A中運(yùn)行的進(jìn)程的各種進(jìn)程。在一個實(shí)施例中,所有進(jìn)程可由任一核心執(zhí)行,因此存在可在任一核心上實(shí)例化或建構(gòu)的所有軟件對象及方法的兩個版本。核心B中運(yùn)行的進(jìn)程包含遠(yuǎn)程代理420及遠(yuǎn)程數(shù)據(jù)管理進(jìn)程428。核心B內(nèi)還運(yùn)行主要傳輸代理422及服務(wù)器傳輸代理424。遠(yuǎn)程代理420是處理數(shù)據(jù)的代理;在架構(gòu)400的機(jī)器視覺實(shí)施例中,遠(yuǎn)程代理420將是處理來自機(jī)器視覺相機(jī)的圖像數(shù)據(jù)的代碼。遠(yuǎn)程代理420包括與本地代理408大致相同的代碼,且在運(yùn)行時(shí),大致是本地代理408的另一實(shí)例,只不過遠(yuǎn)程代理420不引發(fā)像本地進(jìn)程412的本地進(jìn)程。
[0039]類似于核心A,核心B運(yùn)行遠(yuǎn)程數(shù)據(jù)管理進(jìn)程428。與遠(yuǎn)程代理420 —樣,遠(yuǎn)程數(shù)據(jù)管理進(jìn)程428包括與本地?cái)?shù)據(jù)管理進(jìn)程418大致相同的代碼,且在運(yùn)行時(shí),是本地?cái)?shù)據(jù)管理進(jìn)程418的大致另一實(shí)例。遠(yuǎn)程數(shù)據(jù)管理進(jìn)程428還管理核心B上的高速緩沖存儲器的高速緩沖存儲器相干性,從而取決于數(shù)據(jù)流方向而提供高速緩沖存儲器失效指令及高速緩沖存儲器清除指令。在一個實(shí)施例中,如上文所描述,遠(yuǎn)程數(shù)據(jù)管理進(jìn)程428使用重定向的指針邏輯且寫入到共享存儲器中的與本地?cái)?shù)據(jù)管理進(jìn)程418相同的存儲器地址塊,以使得共享存儲器提供核心之間的運(yùn)行時(shí)通信。[0040]主要傳輸進(jìn)程422及服務(wù)器傳輸進(jìn)程424可處置核心B上運(yùn)行的進(jìn)程之間的通信,以及核心B上的進(jìn)程與核心A上或其它地方的進(jìn)程之間的通信。主要傳輸進(jìn)程422與核心內(nèi)總線406的主要端口且與客戶端傳輸進(jìn)程424進(jìn)行通信。服務(wù)器傳輸進(jìn)程424進(jìn)而與主要傳輸進(jìn)程422、核心內(nèi)總線406的代理端口及遠(yuǎn)程代理420通信。在一個實(shí)施例中,所述傳輸進(jìn)程在如下期間使用:在于核心B上設(shè)置遠(yuǎn)程進(jìn)程期間以及在起始遠(yuǎn)程代理420處理及在完成后旋即將結(jié)束信號發(fā)射到委托代理410,使得共享存儲器作為核心之間的運(yùn)行時(shí)通信的主要構(gòu)件期間。
[0041]在架構(gòu)400的操作中,首先在核心A及B中設(shè)置相關(guān)進(jìn)程(參見圖5)。核心A經(jīng)由適當(dāng)進(jìn)程來接收相關(guān)數(shù)據(jù)(舉例來說,來自機(jī)器視覺相機(jī)的圖像數(shù)據(jù))并將所述數(shù)據(jù)儲存于共享存儲器(參見,例如,圖2)中。本地代理408開始其處理共享存儲器中的數(shù)據(jù)的部分且致使委托代理410將Go命令經(jīng)由核心內(nèi)總線及核心問總線發(fā)射到遠(yuǎn)程代理420,從而致使遠(yuǎn)程代理428也開始其處理共享存儲器中的數(shù)據(jù)的部分。在一個實(shí)施例中,在委托代理410發(fā)射Go命令之后,本地代理及遠(yuǎn)程代理在完成處理之前不具有經(jīng)由核心內(nèi)總線及核心問總線的進(jìn)一步通信,當(dāng)遠(yuǎn)程代理428將結(jié)束信號發(fā)送到委托代理410時(shí),替代地,使用本地?cái)?shù)據(jù)管理進(jìn)程418及遠(yuǎn)程數(shù)據(jù)管理進(jìn)程428主要地或排他地經(jīng)由共享存儲器來通信。如上文所論述,為實(shí)現(xiàn)此通信,本地及遠(yuǎn)程數(shù)據(jù)管理進(jìn)程從共享存儲器內(nèi)的相同存儲器地址框讀取及寫入,且在一個實(shí)施例中,其使用重定向的指針邏輯進(jìn)行此。
[0042]當(dāng)遠(yuǎn)程代理420已完成其任務(wù)時(shí),遠(yuǎn)程代理420通過經(jīng)由核心內(nèi)總線及核心問總線將結(jié)束信號發(fā)送到委托代理410而用信號通知完成。遠(yuǎn)程代理420接著進(jìn)入等待狀態(tài)且如果需要進(jìn)一步處理及在需要進(jìn)一步處理時(shí),等待來自委托代理的進(jìn)一步Go命令。當(dāng)遠(yuǎn)程代理420及本地代理408兩者已完成其處理時(shí),經(jīng)處理數(shù)據(jù)可從共享存儲器讀取且發(fā)射到其它地方以供顯示、存儲或進(jìn)一步處理。
[0043]圖5圖解說明用于實(shí)施圖4A到4B中所圖解說明的軟件架構(gòu)的方法的實(shí)施例。在框502處,所述方法開始。在框504處,所述方法利用委托代理410確定將創(chuàng)建的本地代理408是本地進(jìn)程412還是分布式進(jìn)程。如果將在本地執(zhí)行所述方法,那么使用核心A中的本地進(jìn)程412建構(gòu)或?qū)С霰镜卮?08。如果所述方法將是分布式的,那么使用核心A中的委托代理410建構(gòu)或?qū)С霰镜卮?08。在框508處,實(shí)例化本地?cái)?shù)據(jù)管理進(jìn)程418,且在框510處,實(shí)例化主要傳輸進(jìn)程414。
[0044]在框512中,所述方法核對是否將執(zhí)行多核心處理。如果將不執(zhí)行多核心處理,那么所述方法轉(zhuǎn)到框514,其中使用框514中運(yùn)行的進(jìn)程而發(fā)生所有處理。如果將發(fā)生多核心處理,那么在框516處,在核心A中實(shí)例化本地客戶端傳輸進(jìn)程416,且在框518處,客戶端傳輸進(jìn)程416使用核心內(nèi)總線402及406以及核心問總線404實(shí)例化核心B中的線程以接收連接請求。在框520處,客戶端傳輸進(jìn)程416將連接請求發(fā)送到核心B。
[0045]在框522處,所述方法在接收來自本地代理408的請求后旋即實(shí)例化核心B中的主要傳輸進(jìn)程422,及主要傳輸進(jìn)程422接著實(shí)例化服務(wù)器傳輸進(jìn)程424。在框524處,月艮務(wù)器傳輸進(jìn)程424引發(fā)任務(wù)線程426,且在框526中,建構(gòu)遠(yuǎn)程代理420。在框528處,建構(gòu)遠(yuǎn)程數(shù)據(jù)管理進(jìn)程428。
[0046]在框530處,在開始所有所需進(jìn)程之后,遠(yuǎn)程代理420將接收請求發(fā)射到本地委托代理410以告知委托代理其已準(zhǔn)備就緒。在框532處,遠(yuǎn)程代理420等待接收來自本地委托代理410的Go命令以告知其開始處理。在框534處,所述方法核對是否已接收Go命令。如果其不使所述方法返回到框532,那么否則所述方法轉(zhuǎn)到框536,其中多核心處理開始。
[0047]當(dāng)經(jīng)由提供重定向指針的能力的數(shù)據(jù)類型類別來管理數(shù)據(jù)流時(shí),所揭示的本發(fā)明的實(shí)施例提供軟件模型,所述軟件模型提供處理核心之間的最小數(shù)據(jù)傳送。另外,兩個核心均含有視覺處理軟件,其中一者具有委托實(shí)施方案及另一者具有遠(yuǎn)程實(shí)施方案。此允許兩個處理器使用相同代碼基及具有與遠(yuǎn)程過程調(diào)用(RPC)層相關(guān)聯(lián)的最小代碼額外開銷。與大部分RPC實(shí)施方案相反,本地及遠(yuǎn)程對象兩者主動參與處理,因此顯然地充當(dāng)?shù)狡渌鼘ο蟮目蛻舳思胺?wù)器兩者。由于可復(fù)制架構(gòu),因此添加新的分布式視覺處理任務(wù)是件簡單的事情。此外,此架構(gòu)可(舉例來說)經(jīng)由以太網(wǎng)網(wǎng)絡(luò)擴(kuò)展到不與客戶端共享相同的存儲器地址空間的遠(yuǎn)程架構(gòu)。
[0048]包含發(fā)明摘要中所描述的內(nèi)容的本發(fā)明的所圖解說明實(shí)施例的以上說明并非打算為窮盡性的或?qū)⒈景l(fā)明限于所揭示的確切形式。雖然出于說明性目的而在本文中描述本發(fā)明的特定實(shí)施例及實(shí)例,但如所屬領(lǐng)域的技術(shù)人員將認(rèn)識到,可在本發(fā)明的范圍內(nèi)做出各種等效修改??筛鶕?jù)以上詳細(xì)說明對本發(fā)明做出這些修改。
[0049]所附權(quán)利要求書中使用的術(shù)語不應(yīng)理解為將本發(fā)明限制于說明書及權(quán)利要求書中所揭示的特定實(shí)施例。而是,本發(fā)明的范圍將完全由所附權(quán)利要求書來確定,所附權(quán)利要求書將根據(jù)權(quán)利要求闡述的既定原則來加以理解。
【權(quán)利要求】
1.一種設(shè)備,其包括: 第一處理器核心,其上運(yùn)行有本地代理,所述本地代理包括本地進(jìn)程及委托代理; 第二處理器核心,其上運(yùn)行有遠(yuǎn)程代理,所述遠(yuǎn)程代理是所述本地代理的實(shí)例 '及共享存儲器,其耦合到所述第一處理器核心及所述第二處理器核心,其中本地處理代理及遠(yuǎn)程處理代理經(jīng)由所述共享存儲器來通信。
2.根據(jù)權(quán)利要求1所述的設(shè)備,其進(jìn)一步包括所述第一處理器核心與所述第二處理器核心之間的通信鏈路。
3.根據(jù)權(quán)利要求2所述的設(shè)備,其中所述通信鏈路是多操作系統(tǒng)進(jìn)程問通信MIPC傳輸。
4.根據(jù)權(quán)利要求2所述的設(shè)備,其中所述委托代理經(jīng)由所述通信鏈路來建構(gòu)所述遠(yuǎn)程代理。
5.根據(jù)權(quán)利要求1所述的設(shè)備,其中所述第一處理器核心不同于所述第二處理器核心。
6.根據(jù)權(quán)利要求5所述的設(shè)備,其中所述第一處理器核心是高級RISC機(jī)器ARM處理器,且所述第二處理器核心是數(shù)字信號處理器DSP。
7.根據(jù)權(quán)利要求1所述的設(shè)備,其中所述第一處理器核心上運(yùn)行有本地?cái)?shù)據(jù)管理進(jìn)程,所述第二處理器核心上運(yùn)行 有遠(yuǎn)程數(shù)據(jù)管理進(jìn)程,且所述本地及遠(yuǎn)程數(shù)據(jù)管理進(jìn)程經(jīng)由所述共享存儲器來管理數(shù)據(jù)交換。
8.根據(jù)權(quán)利要求7所述的設(shè)備,其中所述本地及遠(yuǎn)程數(shù)據(jù)管理進(jìn)程使用重定向的指針邏輯經(jīng)由所述共享存儲器來管理數(shù)據(jù)交換。
9.根據(jù)權(quán)利要求8所述的設(shè)備,其中第一及第二數(shù)據(jù)管理進(jìn)程從所述共享存儲器中的相同地址空間讀取且寫入到所述共享存儲器中的相同地址空間。
10.根據(jù)權(quán)利要求7所述的設(shè)備,其中所述第一處理器核心包含其高速緩沖存儲器相干性由所述本地?cái)?shù)據(jù)管理進(jìn)程管理的第一高速緩沖存儲器,且所述第二處理器核心包含其高速緩沖存儲器相干性由所述遠(yuǎn)程數(shù)據(jù)管理進(jìn)程管理的第二高速緩沖存儲器。
11.根據(jù)權(quán)利要求1所述的設(shè)備,其中所述共享存儲器是所述第一處理器核心與所述第二處理器核心之間的專用運(yùn)行時(shí)通信構(gòu)件。
12.—種方法,其包括: 在第一處理器核心上運(yùn)行本地代理,所述代理包括本地進(jìn)程及委托代理; 在第二處理器核心上建構(gòu)遠(yuǎn)程代理,所述遠(yuǎn)程代理是所述本地代理的實(shí)例;及經(jīng)由耦合到所述第一處理器核心及所述第二處理器核心的共享存儲器在所述本地代理與所述遠(yuǎn)程代理之間進(jìn)行通信。
13.根據(jù)權(quán)利要求12所述的方法,其進(jìn)一步包括使用所述第一處理器核心與所述第二處理器核心之間的通信鏈路進(jìn)行通信。
14.根據(jù)權(quán)利要求13所述的方法,其中所述通信鏈路是多操作系統(tǒng)進(jìn)程問通信MIPC傳輸。
15.根據(jù)權(quán)利要求13所述的方法,其中建構(gòu)所述遠(yuǎn)程代理包括使用所述委托代理經(jīng)由所述通信鏈路來建構(gòu)所述遠(yuǎn)程代理。
16.根據(jù)權(quán)利要求12所述的方法,其中所述第一處理器核心不同于所述第二處理器核心。
17.根據(jù)權(quán)利要求16所述的方法,其中所述第一處理器核心是高級RISC機(jī)器ARM處理器,且所述第二處理器核心是數(shù)字信號處理器DSP。
18.根據(jù)權(quán)利要求12所述的方法,其進(jìn)一步包括: 運(yùn)行在所述第一處理器核心上運(yùn)行的本地?cái)?shù)據(jù)管理進(jìn)程;及 在所述第二處理器核心上運(yùn)行遠(yuǎn)程數(shù)據(jù)管理進(jìn)程,其中所述本地及遠(yuǎn)程數(shù)據(jù)管理進(jìn)程經(jīng)由所述共享存儲器來管理通信。
19.根據(jù)權(quán)利要求18所述的方法,其中所述本地及遠(yuǎn)程數(shù)據(jù)管理進(jìn)程使用重定向的指針邏輯經(jīng)由所述共享存儲器來通信。
20.根據(jù)權(quán)利要求19所述的方法,其中第一及第二數(shù)據(jù)管理進(jìn)程從所述共享存儲器中的相同地址空間讀取且寫入到所述共享存儲器中的相同地址空間。
21.根據(jù)權(quán)利要求18所述的方法,其中所述第一處理器核心包含其高速緩沖存儲器相干性由所述本地?cái)?shù)據(jù)管理進(jìn)程管理的第一高速緩沖存儲器,且所述第二處理器核心包含其高速緩沖存儲器相干性由所述遠(yuǎn)程數(shù)據(jù)管理進(jìn)程管理的第二高速緩沖存儲器。
22.根據(jù)權(quán)利要求12所述的方法,其中所述共享存儲器是所述第一處理器核心與所述第二處理器核心之間的專用運(yùn)行時(shí)通信`構(gòu)件。
【文檔編號】G06F15/80GK103493037SQ201280020357
【公開日】2014年1月1日 申請日期:2012年2月29日 優(yōu)先權(quán)日:2011年3月16日
【發(fā)明者】丹尼·S·巴爾內(nèi)斯, 澤格·H·利蒙丹 申請人:邁思肯系統(tǒng)公司