支持位置透明和動態部分重構的硬體通信設施的製作方法
2023-09-22 09:30:05 1
專利名稱:支持位置透明和動態部分重構的硬體通信設施的製作方法
技術領域:
本發明一般涉及實現通信網絡內的數字集成電路設備,更特別地,涉及實現數字 集成電路設備上的對象請求代理(Object Request Broker, ORB)模塊,使得能夠與分布式 系統內的其它計算設備通信。
背景技術:
分布式計算是一種並行處理,其中,應用的不同組件(即軟體程序或硬體模塊處 理邏輯)在通過網絡互相通信的兩個或更多計算設備上同時運行。應用組件可以調用運行 在不同計算設備上的另一組件,與該另一組件通信,或者喚起該另一組件,請求執行特定功 能或者返回特定數據。這些應用組件可以在不同的計算環境(例如,不同的硬體平臺、操作 系統和程式語言)中操作。例如,分布式應用中的兩個軟體程序可以以不同的程式語言編 寫並在運行在不同處理器上的不同作業系統上執行。如果兩個應用組件是在不同且不兼容 的計算環境中設計和操作的,則開發人員往往難以實現從一個這樣的應用組件直接喚起另 一個應用組件。因此,必須有公共的通信媒介,以允許這些應用組件彼此相互合作和相互作 用。 在處理分布式應用軟體的傳統分布式系統中,使用稱為對象請求代理(ORB)的中 間件部分,使得在不同計算環境中操作的軟體程序能夠通過網絡相互通信。0RB將來自一個 計算平臺的數據結構轉換成能夠通過網絡傳送並由另一個計算平臺接收的字節序列。在接 收計算平臺,ORB將該字節序列轉換成該接收計算平臺可理解的數據結構。0RB還為分布式 系統內運行的程序提供透明性,使得具有ORB的計算平臺上的程序能夠與位於遠端計算平 臺上的另一程序通信而無需知道該另一程序的位置、執行該另一程序的平臺的類型或者執 行該另一程序的作業系統。 ORB通過稱為通用ORB間協議(GI0P)的抽象協議相互通信。GI0P定義了通過網絡 傳輸的數據的格式和消息的語法。與GIOP相關的標準由對象管理組織(0MG)來維護。0MG 還定義了分布式系統的體系結構模型,稱為通用對象請求代理體系結構(C0RBA)。對於分 布式系統中的每個應用組件,CORBA創建關於內部邏輯的能力和如何調用該邏輯的捆綁包 含信息。C0RBA使用接口定義語言(IDL)來描述對象呈現給外界的接口。 IDL以語言無關 的方式描述接口,使得未共享共同的程式語言或編譯平臺的軟體組件能夠相互通信。CORBA 還定義了關於不同程式語言如Ada、 C、 C++或Java的映射,以與IDL通信。
下面參考圖1討論C0RBA系統的簡化模型。在該附圖中,網絡110將來自客戶端 計算機120的請求傳遞給伺服器計算機130。 0RB倉庫(未示出)存儲可供網絡110上的所有計算機執行的所有對象(例如,對象X)的列表。客戶端0RB 110可以訪問0RB倉庫, 並且向客戶端計算機120提供關於可通過該0RB執行的所有對象(例如,對象X)的信息。 在該示例中,對象X包括方法"開火"。儘管對象X存儲在伺服器計算機130中並由伺服器 計算機130執行,但是該代碼對於客戶端計算機120上的程序122是完全透明的。程序122 不需要知道程序132所使用的程式語言或者伺服器計算機130上運行的作業系統。因此, 從程序122的角度來看,程序122喚起對象X的方式與喚起任何本地對象的方式相同。
程序122可以通過將該請求發送給客戶端ORB 124來調用對象X來執行方法"開 火",其中,客戶端ORB 124為計算機120提供關於對象X的接口。客戶端0RB 124使用IDL存 根(IDL stub)126,IDL存根126是由IDL預編譯而來的,並且限定客戶端計算機120可以如 何調用伺服器計算機130上的對象X。關於客戶端計算機120使用的、網絡IIO上另一計算 機上的每一個接口,都具有IDL存根。客戶端ORB 124包括代碼來執行編組(marshalling), 意味著它把操作及其參數編碼成能夠通過網絡110發送給伺服器計算機130的扁平GIOP 消息格式。 在伺服器計算機130處,IDL框架134提供對於由伺服器輸出的每個服務的靜態 接口。與客戶端計算機120上的存根類似,這些框架也是使用IDL編譯器創建的。使用這 些框架,伺服器ORB 134將扁平的GIOP消息轉換成伺服器計算機130中的對象X可理解的 操作和參數。此後,對象X執行所期望的操作,並且在必要時將所請求的數據通過ORB返回 給客戶端計算機120。 傳統ORB模型已在分布式軟體系統中使用多年。在近些年,ORB軟體已發展到能 夠在微控制器或數位訊號處理器(DSP)上運行。但是,應用可以被直接開發成硬體部分,如 專用集成電路(ASIC)——被定製用於特定應用目的的集成電路。或者,應用可以在可編程 邏輯器件中實現,可編程邏輯器件不實現固定的功能,而是由能夠被配置成執行期望功能 的大量邏輯門和連接資源組成。 現今普遍使用的可編程半導體器件為現場可編程門陣列(FPGA) , FPGA是包含可 編程邏輯部分和可編程互連接的器件。FPGA的邏輯部分和互連接部分能夠由邏輯設計者編 程成執行期望的功能。FPGA比其ASIC對手慢,消耗更多功率,並且可能不適合很複雜的應 用。但是,FPGA相比ASIC具有特定的優勢,包括任意再編程的能力、在較短的時間內進入 市場、修復缺陷的能力,以及較低的非重複性工程(NRE)成本。 為了使硬體部分如ASIC、 PLD和FPGA被有效地集成到分布式系統中,這些硬體部 分需要配備能夠將軟體請求轉換成硬體部分可理解的信號的ORB接口。類似地,硬體必須 能夠生成軟體部分可理解的請求。將硬體設備與分布式系統連接的傳統方法是通過工作在 通用處理器(GPP)或數位訊號處理器(DSP)上的定製代理,該定製代理提供硬體設備與軟 件實現的ORB之間的接口 。該方法的極大缺點在於引起GPP代理的性能瓶頸。
或者,硬體設計者可以在硬體設備內實現定製專用ORB模塊。但是,該方法需要硬 件設計者理解CORBA以及面向對象編程——許多硬體設計者不熟悉的領域。而且,為特定 應用塊而定製設計的ORB模塊可能不易重用,原因是代碼映射必須被嵌入到用於特定應用 的該模塊。 Murotake等人的美國專利申請第2005/0108382號討論在可重構通信體系結構 (RCA)無線系統內在FPGA上實現ORB。但是,該申請沒有討論如何實現0RB。
由PrismTech有限公司開發的集成電路ORB(ICO)提供一種能夠被映射到FPGA上的以可移植VHDL編寫的嵌入式ORB。 ICO包括ICO引擎、IDL到VHDL代碼生成器、譜建模工具(Spectra Modeling Tool),以及SCA(軟體通信體系結構)部分。SCA是限定硬體元件和軟體元件如何在軟體無線電(SoftwareDefined Radio, SDR)內通信的體系結構框架。ICO引擎負責實現CORBA所使用的傳送語法。該引擎將輸入的GI0P消息拆解,並且從消息中提取頭部欄位和數據欄位。對於輸入的消息,該引擎執行操作名分解以確定GIOP消息中的數據被傳送給哪個對象。於是,消息數據由引擎提取以傳送給合適的FPGA邏輯塊。如果要求應答,則引擎將對對象執行讀操作以獲得應答所需的數據。引擎還填充頭部欄位並建立應答消息以符合GI0P標準。 儘管ICO允許FPGA應用通過ORB進行通信,但是還需要提供一種允許由硬體實現的應用以更加健壯的方式相互通信的更好的機制。 而且,對於FPGA開發者,ICO具有缺點。在ICO中,ICO引擎必須知道每個應用模塊的位置和功能,以從消息中提取合適的頭部,並且執行操作名分解以及將數據路由到合適的對象。ICO IDL到VHDL代碼生成器生成ICO引擎需要的配置參數。該代碼生成器還將這些參數添加到VHDL包文件中,所述VHDL包文件配置ICO接口和內部存儲元件的物理方面。因此,ICO的ORB核心的部分VHDL代碼是由代碼生成器在編譯時生成的。結果,如果FPGA設計者希望重構FPGA內的應用塊的功能,則也必須重構和生成整個ORB模塊。這對於許多FPGA設計者可能成問題,因為它不能夠部分重構FPGA而不影響ORB和其它FPGA模塊的操作。
發明內容
簡單而言,根據本發明的一方面的通信系統包括一個或多個集成電路。所述一個或多個集成電路包括本地集成電路與遠端集成電路中的至少一者。位於本地集成電路上的至少一個發送應用硬體模塊具有發送邏輯,該發送邏輯控制從發送應用硬體模塊發送消息。在本地集成電路和遠端集成電路中的至少一者上具有至少一個接收應用硬體模塊。發送應用硬體模塊在其發送邏輯無需被構造成已知接收應用硬體模塊的地址或去往接收應用硬體模塊的路徑的情況下將消息發送給所述接收應用硬體模塊。位於本地集成電路上的調度邏輯對以下消息中的至少一個或多個消息進行路由 A)從發送應用硬體模塊傳送到本地集成電路上的一個或多個接收應用硬體模塊的消息,或者 B)從所述發送應用硬體模塊傳送的、以被傳送到位於遠端集成電路上的一個或多個接收應用硬體模塊的消息。 根據本發明上述方面中一些更具體的特徵,所述通信系統還包括遠離所述本地集成電路的一個或多個處理器,所述處理器運行一個或多個接收應用軟體程序。本地集成電路中的發送應用硬體模塊在無需其發送邏輯被構造成已知所述接收應用軟體程序的地址或去往該接收應用軟體程序的路徑的情況下將消息發送給在遠端處理器上執行的接收應用軟體程序,並且,其中,所述調度邏輯對從所述發送應用硬體模塊傳送的、以被傳送到所述接收應用軟體程序的消息中的至少一個或多個消息進行路由。 根據本發明的另一方面,集成電路包括多個實現了中間件的應用塊。每個實現了
7中間件的應用塊包括一個或多個應用模塊,所述應用模塊包含一個或多個應用對象,並且
使用一個或多個專用接口指示符進行消息處理。每個中間件應用塊所關聯的發送操作適配
器發送一個或多個輸出操作名和對象指示符,並且每個中間件應用塊所關聯的接收操作適
配器接收輸入操作名和對象指示符。實現了中間件的應用塊的每個接收操作適配器基於輸
入對象指示符將至少一個輸入操作名轉換成對應的專用操作指示符以供由該對象指示符
指定的相應應用模塊的應用對象使用。實現了中間件的應用塊的每個發送操作適配器將由
相應應用模塊的應用對象指定的至少一個專用操作指示符轉換成對應的輸出操作名。來自
一個應用塊中的發送操作適配器的操作名基於來自所述發送操作適配器的對象指示符而
被傳遞給另一應用塊的接收操作適配器。本發明的該方面允許對實現應用塊的FPGA進行
部分重構,使得每個應用塊都能夠在不影響其它應用塊的情況下被進行重構。 根據本發明上一方面中一些更具體的特徵,消息路由器傳遞各自包含任選的操作
名、任選的對象指示符和來自所述多個實現了中間件的應用塊的其它數據的一個或多個消
息並引導一個或多個輸出操作名和對象指示符到所述多個實現了中間件的應用塊。耦合到
所述消息路由器的調度模塊根據規定的協議通過所述集成電路外部的通信傳輸來代理對
象服務請求消息和應答消息。所述對象服務請求消息包括具有一個或多個輸入操作名和對
象指示符的輸入數據消息以及具有一個或多個輸出操作名和對象指示符的輸出數據消息。
所述對象服務應答消息包括具有對象服務請求上下文信息的輸入數據消息、以及具有對象
服務請求上下文信息的輸出數據消息。所述路由器將來自應用模塊的輸出操作名通過傳送
而傳遞給調度模塊,以根據該協議傳送。 根據本發明的又一方面,可重構的現場可編程門陣列包括多個實現了中間件的應用塊。每個實現了中間件的應用塊包括包含一個或多個應用對象的一個或多個應用模塊,所述應用對象使用一個或多個專用接口指示符以進行消息處理。與一個應用塊的應用模塊相關的一個或多個專用接口指示符在與另一個應用塊的另一應用模塊相關的一個或多個專用接口指示符保持不變的情況下被重構。
圖1示出將客戶端計算機連接到網絡中的伺服器計算機的傳統0RB模型。 圖2(a)為從硬體實現的應用模塊發送的消息的透明傳遞的方框圖。 圖2(b)示出採用交叉開關的本發明實施例。 圖3示出採用內部總線的本發明實施例。 圖4示出採用直路由(direct routing)的本發明實施例。 圖5示出經過ORB和接收操作適配器處理的輸入請求消息的示例性格式。 圖6示出經過發送操作適配器和ORB處理的輸出請求消息的示例性格式。 圖7示出經過發送操作適配器和ORB處理的應答消息的示例性格式。 圖8 (a)和圖8 (b)示出圖6-7中所示的REQUEST_C0NTR0L和REPLY_C0NTR0L的示
例性格式。 圖9示出根據本發明實施例實現具有ORB的FPGA的方法的流程圖。 圖10示出根據本發明實施例的具有ORB的FPGA的示例。
具體實施例方式
下面參考附圖公開本發明的實施例。儘管本發明的實施例是參考FPGA來圖示和描述的,但是應當理解,本發明可以用於任何集成電路如可編程邏輯器件(PLD)、專用集成電路(ASIC),或者用於基於除半導體之外的技術(例如,光計算)的計算平臺。還應當理解,儘管本發明的實施例將調度器描述為實現C0RBA標準的ORB系統,但是,實現其它標準的通信中間件系統和調度器也可以與本發明的方法和系統一起使用。 本發明的一方面涉及通信系統,該通信系統在發送或傳送消息的一個或多個由硬體實現的應用模塊與接收所發送或傳送的消息的一個或多個由硬體實現的硬體模塊或由軟體實現的應用程式之間透明傳遞消息。 圖2(a)示出根據本發明上一方面在位於本地集成電路上的發送應用硬體模塊與接收應用硬體模塊或接收應用軟體程序之間提供消息傳送的系統。通過發送應用硬體模塊在無需此類應用硬體模塊的發送邏輯被構造成已知接收應用硬體模塊或應用軟體程序的地址或去往接收應用硬體模塊或應用軟體程序的路徑的情況下將消息發送給接收應用硬體模塊或接收應用軟體程序,提供消息傳送透明性。換句話說,發送邏輯被構造成無需知道接收應用硬體模塊或應用軟體程序的地址或者去往接收應用硬體模塊或應用軟體程序的路徑。因此,在最初構造時,在發送邏輯中未嵌入接收應用硬體模塊或應用軟體程序的地址或者去往接收應用硬體模塊或應用軟體程序的路徑。 在一個實施例中,通信系統提供晶片間、即集成電路內的一個應用硬體模塊與另一個應用硬體模塊之間的通信透明性。在該實施例中,通信透明性是在兩者都位於同一個本地集成電路上的發送應用硬體模塊與接收應用硬體模塊之間的。本發明的系統還能夠提供在本地集成電路中的發送應用硬體模塊與遠端集成電路中的接收應用硬體模塊之間的晶片內通信透明性。在又一實施例中,本發明的系統提供本地集成電路上的發送應用硬體模塊與在一個或多個遠端處理器上(例如,在客戶站或通信節點上)執行的接收應用軟體程序之間的消息傳遞透明性。不管在哪種情況下,本地集成電路上的發送應用硬體模塊的發送邏輯未事先知道接收應用硬體模塊或接收應用軟體程序的地址或者去往接收應用硬體模塊或接收應用軟體程序的路徑,並且透明地傳遞消息。 在本發明的通信系統中,硬體實現的調度模塊(例如,硬體實現的、符合0RB協議的中間件)代理消息的傳遞。調度邏輯位於將本地集成電路上的發送應用硬體模塊所發送或傳送的消息中的至少一個或多個消息路由到同一本地集成電路上的一個或多個接收應用硬體模塊的集成電路上。或者,調度邏輯將本地集成電路上的發送應用硬體模塊傳送的消息路由傳輸到位於遠端集成電路上的接收應用硬體模塊或者由遠端處理器運行的應用軟體程序。 現在,參考圖2(b),該圖中示出根據本發明的FPGA系統200的實施例。該FPGA包括多個應用塊240a、240b等等,每個應用塊具有相應的應用模塊。每個應用模塊包括通過使用相應的接口和操作指示符執行指定功能的一個或多個應用對象,其中,所述操作指示符可以是消息中包括的數值或字符串。如圖所示,例如應用塊240a包括應用模塊242、接收操作適配器(R0A) 250和傳送操作適配器(T0A) 252。 R0A 250和T0A 252與應用模塊242對接,並且作為應用模塊242與消息路由器(其路由輸入消息和輸出消息)之間的橋梁。在圖2 (b)的示例性FPGA中,消息路由器包括交叉開關230,該開關在FPGA內在應用塊240a、
9240b等之間本地傳遞消息。FPGA還通過藉助ORB進行的傳送將消息傳遞給FPGA外部的遠端目的地,其中該ORB包括ORB接收220和ORB發送222。 ORB接收220和ORB發送222分別通過接收傳送適配器(RTA)210和發送傳送適配器(TTA)212連接到外部網絡。接收傳送適配器(RTA) 210和發送傳送適配器(TTA) 212可以包括能夠將數據輸入和輸出ORB的任何類型的通信埠,例如PCI埠、USB埠、乙太網埠、串口等。輸入消息由RTA 210接收並傳遞給ORB接收220。輸出消息從0RB發送222通過TTA 212被發送到外界。如果FPGA有多個外部通信埠可用,則可以例示多個可共同操作的ORB以及它們的相關RTA和TTA模塊。 FPGA 200中的ORB接收220和ORB發送222是熟知的,並且可以被置於FPGA 200中設計者期望的任何地方。RTA 210和TTA 212通常由FPGA設計者根據應用塊240a、240b等的需求而定製設計。但是,用於RTA 210和TTA 212的埠設計的類型不影響ORB接收200模塊和ORB發送222模塊,因為ORB接收200和ORB發送222獨立於RTA 210和TTA212,並且與RTA 210和TTA212分離。 ORB發送222執行與前文參考圖1描述的客戶端ORB 124和IDL存根126類似的功能。類似地,ORB接收220執行與伺服器ORB 134和IDL框架136類似的功能。當FPGA200內的應用模塊生成請求或應答時,ORB發送222創建GIOP消息,所述GIOP消息然後通過TTA212被發送給遠端目的0RB,例如被發送給圖1中的遠端集成電路中的調度器。
當外部或遠端ORB發送請求(例如,來自圖1的遠端集成電路中的調度器的請求)給FPGA 200時,ORB接收220將GIOP報文轉換成在FPGA中能夠容易處理的緊湊型內部表示。如下文進一步所述,不管消息是從FPGA內的另一應用塊本地生成的還是從FPGA外部遠端生成的,FPGA內的所有應用塊240a、240b等等都以相同的方式處理消息。所述緊湊型內部表示包括基於字符串的"操作名"以及必要的參數,其中,"操作名"是請求FPGA 200上的應用模塊242來執行的操作。 除了 ORB接收220和ORB發送222之外,ORB功能還可以包括交叉開關230。或者,設計者可以選擇實現他們自己的交叉開關230。交叉開關230可以被設置在FPGA 200的任何部分,只要交叉開關230能夠將ORB接收220和ORB發送222連接到ORB需要進行通信的所有應用塊240a、240b等等。圖2的示例性實施例示出4埠交叉開關230,該4埠交叉開關230將ORB接收220和ORB發送222連接到多個應用塊240a、240b和240c。但是,可以使用多種其它開關,例如部分連接的交叉開關、全連接的交叉開關、Banyan開關、存儲器開關等。取決於FPGA上的應用塊的數量,在開關230上還可以包括任意數量的埠。而且,在FPGA中可以包括多於一個ORB,在這種情況下,每個ORB將被指定給開關230上的一個埠。在圖2中,0RB接收220和0RB發送222可以連接到埠"00",應用塊240a可以連接到埠 "Ol",應用塊240b可以連接到埠 "10",並且應用塊240c可以連接到埠"ll",等等。 如上所述,每個實現了中間件的應用塊,例如應用塊240a、接收操作適配器(ROA) 250、傳送操作適配器(TOA) 252等,被用作應用模塊242與交叉開關230之間的橋梁。與每個中間件應用塊相關的傳送操作適配器發送一個或多個輸出操作名和對象指示符。與每個中間件應用塊相關的接收操作適配器接收輸入操作名和對象指示符。實現了中間件的應用塊的每個接收操作適配器將基於輸入對象指示符的至少一個輸入操作名轉換成對應
10的專用操作指示符,供對象指示符所指定的相應應用模塊的應用對象使用。實現了中間件
的應用塊的每個傳送操作適配器將由相應應用模塊的應用對象所指定的至少一個專用操
作指示符轉換成對應的輸出操作名。來自一個應用塊中的傳送操作適配器的操作名基於來
自所述傳送操作適配器的對象指示符被傳遞到另一個應用塊的接收操作適配器。 在圖2(b)的示例性實施例中,R0A 250包括查找表,該查找表包含操作名和相應
的列舉的操作指示符值。操作名是一串字符,並且構成對於外界已知為命令的東西,該命令
能夠被應用模塊如應用模塊242執行。例如,操作名可以是"開火"、"重新裝入"或者"停
止"。應用模塊242被配置成將與所述操作名相關的列舉的操作指示符值識別為功能。例
如,"開火"的列舉的操作指示符值可以是0,"重新裝入"的列舉的操作指示符至可以是1,
並且"停止"的列舉的操作指示符值可以是2。列舉的操作指示符值對於特定的應用模塊及
其中包括的應用對象是唯一的。因此,儘管在應用塊240a中0可能與"開火"相關,但是在
應用塊240b中O可能與另一操作(例如"測量溫度")相關。由於查找表包括在ROA 250
中因而直接與應用塊242相關,所以能夠在不影響系統的其餘部分並且不需要額外的外部
配置工作的情況下,使應用被動態重構。 TOA 252包括一組表,該組表用於將操作名的列舉的操作指示符值以及對象鍵的列舉的對象指示符值分別轉換成完全擴展的字符串和八進位序列。同樣地,因為該數據包括在TOA 252中因而直接與應用模塊242相關,所以能夠在不影響系統的其餘部分的情況下使應用動態重構。 在實現FPGA 200的過程中,使用IDL至VHDL編譯器由IDL模型生成R0A250和TOA252。 IDL模型描述ROA 250和TOA 252的內容。在IDL模型內,關於應用模塊242的應用對象所支持的每個操作都存在多個條目,所述條目包括列舉的操作指示符值、操作名以及關於每個操作的參數列表。為了配置和創建應用塊240的IDL模型,系統設計師僅需要修改每個操作的操作名和參數。因此,創建IDL模型不需要設計者透徹理解IDL編程。因此,根據本發明的可重構FPGA具有擁有一個或多個應用對象的多個實現了中間件的應用塊,所述應用對象使用一個或多個專用接口指示符,例如值或字符串。專用接口指示符由硬體定義語言(例如VHDL)來描述,該硬體定義語言實現FPGA上的每個應用塊。根據本發明的這一方面,與一個應用塊相關的專用指示符能夠在不必對實現任何其他應用塊的硬體描述語言的任何其他描述進行修改的情況下進行修改、更新或動態重構。 除了生成用於R0A250和T0A252的VHDL代碼之外,IDL編譯器生成具體描述GIOP消息淨荷內的操作數據元素的格式和位置的文件。這不需要FPGA設計者熟悉GIOP消息格式和公共數據表示(CDR)編組/拆解規則,或者是需求降低。 IDL至VHDL編譯器將IDL模型編譯成VHDL代碼,該VHDL代碼將用於合成用於每個應用i央240a、240b和240c的ROA 250和TOA 252。由於ROA 250和TOA 252是與前述所有其它ORB模塊獨立地生成的,所以FPGA設計者可以在無需再編程或重構其它ORB模塊的情況下重構FPGA 200的任一應用塊240a、240b或240c。因此,例如,如果應用塊240a內的應用塊242需要更新或修改,則系統設計師僅需創建用於新的應用模塊242的新的IDL模型,並且運行IDL至VHDL編譯器來創建用於應用塊240的新ROA 250和TOA 252。但是,不需要修改0RB接收220、0RB發送222、RTA 210、 TTA 212以及交叉開關230。
在FPGA的操作期間,當RTA210接收到GIOP請求報文時,該報文被傳遞到ORB接收220。 ORB接收220對消息頭部進行處理和重定格式,以創建針對流處理進行了優化的緊湊型內部表示。除了其它信息之外,優化後的頭部還將包括字符串格式的操作名、消息數據(其包括用於期望操作的參數),以及對象鍵,這包括指定報文的目的地址。該目的地址對應於報文將要發送到的應用塊。數據包於是被發送到交叉開關230。 開關230將其從ORB接收220接收的報文路由到目的應用塊240a。輸入的報文在被發送到應用模塊242之前經過ROA 250處理。對象鍵的對象指示符比特[5:0]指示應用模塊中每個應用對象的適當接口。如上所述,R0A 250包含查找表,該查找表用於將適合於目標對象的接口的字符串操作名轉換成列舉的操作指示符值。如果在ROA 250接收到的消息源自0RB接收220,則該消息會包括字符串形式的操作名。在這種情況下,ROA 250查找操作名並將其轉換成對應的列舉的值。ROA 250於是將該報文繼續傳遞給應用塊240。但是,如果該報文是從另一應用塊240b被路由到應用塊240a的,則該報文會已包括該列舉的值。在這種情況下,ROA 250將該報文繼續傳遞給應用模塊242,但不進行修改。該行為將FPGA應用與關於消息的內部或外部來源隔離,提供位置透明性。 如果操作需要應答,則應用模塊242將生成應答消息並通過TOA 252將該應答消息發送給交叉開關230。該消息於是從交叉開關230被發送到ORB發送模塊222,該ORB發送模塊222生成完整的GIOP消息。該GIOP消息於是通過TTA 212被發送出去。由應用塊240發起的請求也是類似傳送的。 在本發明的另一實施例中,TOA 252的任務限於在引導時間時將信息發送給ORB接收220和ORB發送222。在該實施例中,由TOA 252在引導時間中發送給ORB發送222的數據包括關於如何將列舉的操作指示符值轉換回字符串操作名的信息。因此,在該實施例中,ORB發送必須包括存儲裝置,用於存儲與將被每個應用塊240a調用的每個操作有關的列舉的操作指示符值。在操作時間時,每次應用模塊242發起請求消息或者發送應答消息給ORB發送222, TOA 222使該消息通過,但不進行任何修改。因此,ORB發送222接收到的消息將包括列舉的操作指示符值,而非操作名。ORB發送222於是在創建GIOP消息之前將枚舉類型翻譯成操作名。 圖3示出本發明的可替選實施例,該實施例採用總線330形式的路由器而非開關。在該實施例中,ORB接收220將消息發送給總線330,該總線330利用消息頭部中的地址信息將消息傳遞到目的應用塊240a。 圖4示出本發明的又一實施例,其中,所有應用塊440之間的消息是串行路由的。在該實施例中,ORB接收210將消息發送通過一串應用塊,直到該消息所尋址的期望應用塊接收並處理該消息。之後,該應用塊可以發出應答,該應答在被ORB發送222接收之前也可能經過一串其它應用。為了增加吞吐量,可以使用管道430將所有的連接進行流水線化。因此,0RB接收210可以在每個時鐘周期向初始應用塊發出不同的請求,而不必在發出新的請求之前等待應答返回。或者,這串應用塊440可以在無需流水線化的情況下進行連接。
圖5示出經過ORB和ROA處理的輸入請求消息的示例性格式。傳送請求消息520是具有GIOP標準所要求的欄位的GIOP消息。由於大多數這些欄位對於內部FPGA應用的操作不是必需的,所以ORB將該消息520縮減為後ORB請求消息530。消息530包括操作名作為字符串,在前述示例中,所述操作名可以包括"開火"、"重新裝入"、"停止"或"測量溫度"。消息530還包括REQUEST_C0NTR0L (請求控制,其將在後面參考圖8a描述),以及request—id(請求ID) 、data—payloacLsize(數據淨荷大小)和消息數據。消息數據包括參數,所述參數被發送給應用以執行特定操作。 圖6示出經過操作發送適配器和ORB處理的輸出請求消息的示例性格式。應用請求消息610由操作發送適配器接收,該操作發送適配器查找關於期望的操作列舉的值的操作名(字符串),並且將該操作名加入消息620。消息620然後由0RB轉換成後0RB(到傳送)請求消息630,其符合GIOP標準。 圖7示出經過操作發送適配器和ORB處理的應答消息的示例性格式。應用應答消息710與圖6中所示的應用請求消息610類似,除了應用應答消息710包括REPLY_CONTROL而不是REQUESTJX)NTROL之外。類似地,後操作適配器應答消息(Post-Op Adapter R印lyMessage) 720類似於後操作適配器請求消息620,除了後操作適配器應答消息720包括REPLYJX)NTROL(應答控制)之外。 圖8 (a)和圖8 (b)示出圖6-7中所示的REQUEST_CONTROL和REPLY_C0NTR0L的示例性格式,它們二者都為32比特欄位。下面提供對REQUEST_CONTROL和REPLY_C0NTR0L的欄位描述。 REQUEST CONTROL欄位描沭
目的地對象地址 比特[10:6]表示消息的內部物理目的地。對於輸出請求消息,這些比特被設置給發送ORB適配器(全0)。對於輸入請求消息和本地請求消息,這些比特被設置給目標操作適配器。 比特[5:0]表示消息的物理目的地內的內部邏輯目的地。對於輸入請求消息、本地請求消息或輸出請求消息,這些比特被設置成適於表示關於被調用伺服(servant)的對象ID的值。
源對象地址 比特[10:6]表示消息的內部物理地址。對於輸入請求消息,這些比特被設置給接收ORB適配器(全0)。對於輸出請求消息和本地請求消息,這些比特被設置給源操作適配器。 比特[5:0]表示消息的物理源內的內部邏輯源。對於輸入請求消息、本地請求消
息或輸出請求消息,這些比特被設置成適合於表示用於調用伺服的對象ID的值。 字節順序——CORBA定義的布爾值,表示輸入消息的字節順序 1 =小端(Little Endian),O =大端(Big Endian) 消息類型(MT)——消息類型欄位指示符布爾值。 0=請求,1=應答 響應期望(RE)——CORBA定義的布爾值,表示是否期望響應該請求。0 =不期望響應,l =期望響應
列舉的操作 操作適配器將其解釋為列舉的操作指示符。
應答控制欄位描沭
目的地對象地址
比特[10:6]表示消息的內部物理地址。對於輸出應答消息,這些比特被設置給發 送0RB適配器(全0)。對於輸入請求消息和本地請求消息,這些比特被設置給目標操作適 配器。 比特[5:0]表示消息的物理目的地內的內部邏輯目的地。對於輸入請求消息、本 地請求消息或輸出請求消息,這些比特被設置成適合於表示用於調用客戶端伺服的對象ID 的值。 源對象地址 比特[10:6]表示消息的內部物理地址。對於輸入應答消息,這些比特被設置給接 收0RB適配器(全0)。對於輸出請求消息和本地請求消息,這些比特被設置給源操作適配 器。 比特[5:0]表示消息的物理源內的內部邏輯源。對於輸入請求消息、本地請求 消息或輸出請求消息,這些比特被設置成適合於表示被調用伺服的對象ID的值。字節順 序一一用於輸入消息的、C0RBA定義的字節順序
1=小端,0=大端 消息類型(MT)——消息類型欄位指示符布爾值。
0=請求,1=應答。 一定是應答(b〃 1") 應答狀態(RS)——C0RBA定義的。通常應當是N0_EXCEPTI0N(無異常) (b" 000") 圖9示出根據本發明實施例實現具有一個ORB或多個ORB的FPGA的方法的流程 圖。在塊914中,IDL接口910和IDL元數據912被提供給IDL至VHDL編譯器。在塊920 中,IDL至VHDL編譯器使用該數據生成VHDL形式的、每個應用所需的操作接口。之後,在 塊922中,所述操作接口與用戶應用合併以創建VHDL或Verilog形式的應用塊。在塊930 中,應用塊與FPGA 0RB 932(其為EDIF網表格式)與傳送適配器模型934 (其為VHDL、EDIF 或軟體格式)合併以完成FPGA的VHDL模塊。然後在塊940中,使用以VHDL形式提供的仿 真環境942來對VHDL模型進行仿真。在仿真成功後,在塊950中,合成FPGA的VHDL模型, 以創建EDIF網表,見塊952中。然後,EDIF網表能夠被置於FPGA上並通過FPGA路由,見 塊954。最後,在塊956中,創建比特文件,該文件在塊960中用於對FPGA進行編程。
圖10示出根據本發明的實施例實現的軟體無線電(SDR)的示例性方框圖。SDR被 實現在集成電路如FPGA上,具有多個實現了中間件的應用塊,例如擴展器(spreader)塊、 解擴器(despreader)塊、編碼器塊和DAC/ADC塊等等。每個實現了中間件的應用塊包括一 個或多個應用模塊,所述應用模塊包括執行所需SDR功能的一個或多個應用對象,所述SDR 功能包括信號擴展、解擴、編碼以及A/D和D/A轉換功能等等。這些應用對象使用相應的專 用接口指示符,用於如上所述在集成電路內在本地透明地處理消息以及在集成電路外通過 傳送而遠端透明地處理消息。 如圖所示,發送操作適配器和接收操作適配器與如上所述用於傳遞輸入消息和輸 出消息以及處理/轉換操作名和對象指示符的每個中間件應用塊相關。實現了中間件的應 用塊的每個接收操作適配器基於輸入對象指示符將至少一個輸入操作名轉換成對應的專 用操作指示符,以供由該對象指示符指定的相應應用模塊的應用對象使用。實現了中間件 的應用塊的每個發送操作適配器將由相應應用模塊的應用對象指定的至少一個專用操作指示符轉換成對應的輸出操作名。交叉開關形式的消息路由器在集成電路內在應用塊之間本地傳遞消息。包括ORB接收塊和ORB發送塊的調度模塊耦合到消息路由器,該消息路由器根據所規定的協議(例如CORBA)通過集成電路外部的通信傳遞來代理對象服務請求消息和應答消息。對象服務請求消息包括具有一個或多個輸入操作名和對象指示符的輸入數據消息以及具有一個或多個輸出操作名和對象指示符的輸出數據消息。對象服務應答消息包括具有對象服務請求上下文信息的輸入數據消息以及具有對象服務請求上下文信息的輸出數據消息。消息路由器將來自應用模塊的輸出操作名通過傳送而傳遞給調度模塊,以根據協議傳送該輸出操作名。 如上所述,本發明允許實現了 SDR應用塊的FPGA具有部分和動態重構性,使得每個應用塊能夠在不影響其他應用塊的情況下被重構。例如,能夠在不必重構任何其它SDR功能塊的情況下更新或修改擴展器塊接口 。因此,實現了 SDR的FPGA是可重構的現場可編程門陣列,其包括多個實現了中間件的應用塊,即擴展器塊、解擴器塊、編碼器塊和DAC/ADC塊等等。每個實現了中間件的應用塊具有執行SDR相關功能的一個或多個應用對象。它們使用一個或多個專用接口指示符用於處理消息。與一個應用塊相關的所述一個或多個專用接口指示符能夠在無需修改與另一個應用塊相關的所述一個或多個專用接口指示符的情況下被動態重構或修改。
權利要求
一種通信系統,包括一個或多個集成電路,所述集成電路包括本地集成電路和相對於所述本地集成電路的遠端集成電路中的至少一個;位於所述本地集成電路上的至少一個發送應用硬體模塊,每個發送應用硬體模塊具有發送邏輯,所述發送邏輯控制從所述發送應用硬體模塊發送消息;位於所述本地集成電路和所述遠端集成電路中的至少一個上的至少一個接收應用硬體模塊;其中,發送應用硬體模塊在無需其發送邏輯被構造成已知接收應用硬體模塊的地址或去往所述接收應用硬體模塊的路徑的情況下將消息發送給所述接收應用硬體模塊,以及位於所述本地集成電路上的調度邏輯,所述調度邏輯對以下消息中的至少一個或多個消息進行路由A)從所述發送應用硬體模塊傳送到所述本地集成電路上的一個或多個接收應用硬體模塊的消息,或者B)從所述發送應用硬體模塊傳送的、以被傳送到位於遠端集成電路上的一個或多個接收應用硬體模塊的消息。
2. 如權利要求1所述的通信系統,還包括運行一個或多個接收應用軟體程序的遠離所 述本地集成電路的一個或多個處理器,其中,在所述本地集成電路中的發送應用硬體模塊 在無需其發送邏輯被構造成已知所述接收應用軟體程序的地址或去往所述接收應用軟體 程序的路徑的情況下將消息發送給在遠端處理器上執行的接收應用軟體程序,並且,其中, 所述調度邏輯對從所述發送應用硬體模塊傳送的、以被傳送到所述接收應用軟體程序的消 息中的至少一個或多個消息進行路由。
3. —種通信系統,包括 一個或多個集成電路;遠離所述一個或多個集成電路的、運行一個或多個應用軟體程序的一個或多個處理器;集成電路中具有發送邏輯的至少一個發送應用硬體模塊,所述發送邏輯控制從所述發 送應用硬體模塊發送消息,其中,所述發送應用硬體模塊在無需其發送邏輯被構造成已知 在遠端處理器上執行的接收應用軟體程序的地址或去往所述接收應用軟體程序的路徑的 情況下將消息發送給所述接收應用軟體程序,以及位於所述集成電路上的調度邏輯,所述調度邏輯對從所述發送應用硬體模塊傳送的、 以被傳送到所述接收應用軟體程序的消息中的至少一個或多個消息進行路由。
4. 如權利要求3所述的通信系統,其中,所述調度邏輯對以下消息中的至少一個或多個消息進行路由A) 從所述發送應用硬體模塊傳送到同一集成電路上的一個或多個接收應用硬體模塊 的消息,或者B) 從所述發送應用硬體模塊傳送的、以被傳送到位於遠端集成電路上的一個或多個接 收應用硬體模塊的消息。
5. —種集成電路,包括多個實現了中間件的應用塊,每個實現了中間件的應用塊包括包含一個或多個應用對象的一個或多個應用模塊,所述應用對象使用一個或多個專用 接口指示符進行消息處理;發送操作適配器,所述適配器發送一個或多個輸出操作名和對象指示符;其中, 接收輸入操作名和對象指示符的接收操作適配器;其中,實現了中間件的應用塊的每 個接收操作適配器基於所述輸入對象指示符將至少一個輸入操作名轉換成對應的專用操 作指示符,以供由所述對象指示符指定的相應應用模塊的應用對象使用;並且,其中,實現 了中間件的應用塊的每個發送操作適配器將由應用模塊的應用對象指定的至少一個專用 操作指示符轉換成對應的輸出操作名,並且,其中,來自 一個應用塊中的發送操作適配器的 操作名基於來自所述發送操作適配器的對象指示符被傳遞給另一應用塊的接收操作適配 器。
6. 如權利要求5所述的集成電路,還包括消息路由器,該消息路由器傳遞各自包含任 選的操作名、任選的對象指示符和來自所述多個實現了中間件的應用塊的其它數據的一個 或多個消息並引導一個或多個輸出操作名和對象指示符到所述多個實現了中間件的應用 塊。
7. 如權利要求6所述的集成電路,還包括耦合到所述消息路由器的調度模塊,所述調 度模塊根據規定的協議通過所述集成電路外部的通信傳輸來代理對象服務請求消息和應 答消息,所述對象服務請求消息包括具有一個或多個輸入操作名和對象指示符的輸入數據 消息以及具有一個或多個輸出操作名和對象指示符的輸出數據消息,並且所述對象服務應 答消息包括具有對象服務請求上下文信息的輸入數據消息以及具有對象服務請求上下文 信息的輸出數據消息。
8. 如權利要求6所述的集成電路,其中,預定的協議包括0RB協議。
9. 如權利要求5所述的集成電路,其中,每個接收操作適配器包括查找表,所述查找表 用於將一個或多個輸入操作名映射到一個或多個專用接口值。
10. 如權利要求5所述的集成電路,其中,每個發送操作適配器包括查找表,所述查找 表用於將一個或多個專用接口值映射到一個或多個輸出操作名。
11. 如權利要求5所述的集成電路,其中,所述多個應用塊按照集成電路工藝被集成在 電路上,所述集成電路工藝包括FPGA、 PLD和ASIC中的至少一個。
12. 如權利要求7所述的集成電路,其中,輸入數據包將輸入操作名與服務請求相關聯。
13. 如權利要求7所述的集成電路,其中,輸出數據包將輸出操作名與服務請求或對服 務請求的應答相關聯。
14. 如權利要求6所述的集成電路,其中,所述消息路由器包括開關和總線中的至少一個。
15. 如權利要求14所述的集成電路,其中,所述開關包括部分連接的交叉開關、全連接 的交叉開關、Banyan開關、存儲器開關中的至少一個。
16. 如權利要求6所述的集成電路,其中,所述路由器將所述多個應用模塊相互串聯耦合。
17. 如權利要求16所述的集成電路,其中,所述路由器將輸入和輸出請求通過所述多 個串聯耦合的應用模塊而管線傳送到所述多個操作適配器之一。
18. 如權利要求8所述的集成電路,其中,所述ORB協議包括通用ORB間協議(GIOP)。
19. 一種可重構的現場可編程門陣列(FPGA),包括多個實現了中間件的應用塊,每個實現了中間件的應用塊包括使用一個或多個專用接 口指示符的一個或多個應用對象,所述一個或多個專用接口指示符由實現所述FPGA上的每個應用塊的硬體限定語言來描述,其中,與一個應用塊相關的專用指示符在無需修改實 現其他應用塊的硬體限定語言的描述的情況下被動態修改。
全文摘要
根據本發明的一方面的一種通信系統包括一個或多個集成電路。所述一個或多個集成電路包括本地集成電路和遠端集成電路中的至少一個。位於本地集成電路上的至少一個發送應用硬體模塊具有發送邏輯,該發送邏輯控制從所述發送應用硬體模塊發送消息。在所述本地集成電路和所述遠端集成電路中的至少一個上具有至少一個接收應用硬體模塊。發送應用硬體模塊在無需其發送邏輯被構造成已知接收應用硬體模塊的地址或去往所述接收應用硬體模塊的路徑的情況下將消息發送給所述接收應用硬體模塊。位於本地集成電路上的調度邏輯路由至少一個或多個。
文檔編號H04L12/28GK101711467SQ200880010167
公開日2010年5月19日 申請日期2008年1月28日 優先權日2007年1月26日
發明者喬·G·桑普森, 史蒂芬·戴勒, 威廉·貝克維斯 申請人:目標接口系統公司