專利名稱:計算系統(tǒng)的制作方法
技術領域:
本發(fā)明涉及一種硬件可根據(jù)程序直接執(zhí)行計算的計算系統(tǒng),更具體的,本發(fā)明涉及一種適合于根據(jù)大型程序執(zhí)行計算的計算系統(tǒng)。
背景技術:
在目前的通用計算機中,進行計算的同時,CPU(中央處理單元)順序地解釋存儲于存儲器的程序中的指令。CPU借助于軟件來執(zhí)行作為執(zhí)行目標的計算。這樣,CPU的硬件結(jié)構不一定最適合用于作為執(zhí)行目標的計算。結(jié)果是,在獲得最終的計算結(jié)果之前會招致很多額外開銷。
相反,作為直接利用硬件執(zhí)行用程序來表示的計算的一種技術,使用可現(xiàn)場編程門陣列(FPGA)的計算系統(tǒng)已經(jīng)廣為人知。日本專利公開No.H8-504285(國際公開No.WO94/10627)和日本專利公開No.2000-516418(國際公開No.WO98/08306)公開了使用FPGA的計算系統(tǒng)。
FPGA的硬件結(jié)構可通過邏輯數(shù)據(jù)而改變。通過使用這樣的FPGA,硬件可以直接執(zhí)行由程序表示的計算。因此,就能夠以比CPU執(zhí)行計算的情況下更快的速度獲得計算結(jié)果。
另一方面,由目前的通用計算機執(zhí)行的大型程序由多個程序模塊組成。在進行由大型程序表示的計算的同時,一個程序模塊調(diào)用另一個程序模塊。
但是,上述常規(guī)的使用FPGA的計算系統(tǒng)只能執(zhí)行由實質(zhì)上只包含一個程序模塊的程序所表示的計算。換句話說,常規(guī)的使用FPGA的計算系統(tǒng)無法執(zhí)行由包含多個程序模塊的大型程序所表示的大型計算。因此,就存在著這樣一個問題,即使用FPGA的常規(guī)計算系統(tǒng)不能在不同方式下應用。
日本專利公開No.H8-504285(國際公開No.WO94/10627)和日本專利公開No.2000-516418(國際公開No.WO98/08306)在此并入作為參考。
發(fā)明內(nèi)容
本發(fā)明旨在克服上述現(xiàn)有技術的問題,本發(fā)明的目的是提供一種硬件能夠直接執(zhí)行由包含多個程序模塊的大型程序所表示的計算的計算系統(tǒng)。
為實現(xiàn)上述目的,根據(jù)本發(fā)明第一方面的一種計算系統(tǒng)包括一計算單元(42),具有與作為執(zhí)行目標的計算相對應的硬件結(jié)構,并執(zhí)行作為執(zhí)行目標的計算;一狀態(tài)存儲器(44),存儲所述計算單元的內(nèi)部狀態(tài);和一控制器(46、46),控制所述計算單元的內(nèi)部狀態(tài),其中所述計算單元(42)在一第一計算的中間執(zhí)行一第二計算;以及當將由所述計算單元(42)執(zhí)行的計算從第一計算切換至第二計算時,所述控制器(46、46)存儲所述狀態(tài)存儲器(44)中的內(nèi)部狀態(tài),并且當將由所述計算單元(42)執(zhí)行的計算從第二計算返回至第一計算時,所述控制器(46、46)通過將存儲在所述狀態(tài)存儲器(44)中的內(nèi)部狀態(tài)返回給所述計算單元(42),來控制所述計算單元(42)再開始執(zhí)行第一計算。
根據(jù)這一發(fā)明,由包含多個程序模塊的大型程序所表示的計算可以直接被硬件執(zhí)行,而無須使用通用CPU。
所述狀態(tài)存儲器(44)可以按照先進后出的方法存儲所述內(nèi)部狀態(tài)。
所述計算單元(42)可以包括多個門電路。
所述多個門電路之間的連接可以根據(jù)作為執(zhí)行目標的計算而被切換。
根據(jù)本發(fā)明第二方面的一種計算系統(tǒng)包括一載入器(3),逐各模塊地(by each module)載入多個數(shù)據(jù)模塊,所述多個數(shù)據(jù)模塊中的每一個表示適合于執(zhí)行一預定計算的硬件結(jié)構;一計算單元(42),具有可根據(jù)由被載入的數(shù)據(jù)模塊所表示的硬件結(jié)構而被改變的硬件結(jié)構,并執(zhí)行一預定的計算;和一結(jié)果保存單元(44),其在所述計算單元(42)的硬件結(jié)構改變時保存由所述計算單元(42)執(zhí)行的計算的中間結(jié)果,并在所述計算單元(42)的硬件結(jié)構返回初始狀態(tài)時將該保存的中間結(jié)果返回給所述計算單元(42)。
所述多個數(shù)據(jù)模塊可以包括第一數(shù)據(jù)模塊和第二數(shù)據(jù)模塊,其中第一數(shù)據(jù)模塊表示用于執(zhí)行第一計算的第一硬件結(jié)構,第二數(shù)據(jù)模塊表示用于執(zhí)行第二計算的第二硬件結(jié)構,第二計算在第一計算期間被執(zhí)行。
第一數(shù)據(jù)模塊可以包含調(diào)用數(shù)據(jù),該調(diào)用數(shù)據(jù)用于在第一計算的中間調(diào)用第二數(shù)據(jù)模塊。
該計算系統(tǒng)可以進一步包括一檢測單元(43),檢測包含在被載入的第一數(shù)據(jù)模塊中的所述調(diào)用數(shù)據(jù);和一控制器(46),將所述計算單元(42)執(zhí)行的第一計算的中間結(jié)果存儲在所述結(jié)果保存單元(44)中,并在所述檢測單元(43)檢測到調(diào)用數(shù)據(jù)時控制所述載入器(3)載入第二數(shù)據(jù)模塊。
在所述計算單元(42)完成第二計算的情況下,所述控制器(46)可以控制所述載入器(3)載入第一數(shù)據(jù)模塊,并可以通過將存儲在所述結(jié)果保存單元(44)中的所述中間結(jié)果返回給所述計算單元(42),來控制所述計算單元(42)再開始第一計算。
該計算系統(tǒng)可以進一步包括一變元提供單元(45),其向所述計算單元(42)提供一部分第一計算的中間結(jié)果作為用于執(zhí)行第二計算的變元,并向所述計算單元(42)提供第二計算的執(zhí)行結(jié)果作為用于再開始第一計算的變元。
所述結(jié)果保存單元(44)可以包括一存儲器,該存儲器按照先進后出的方法存儲中間結(jié)果。
所述計算單元(42)可以包括多個門電路。
所述多個門電路之間的連接可以根據(jù)載入的數(shù)據(jù)模塊而被切換。
該計算系統(tǒng)可以被連接至另一個計算系統(tǒng),該另一個計算系統(tǒng)具有可根據(jù)由被提供的數(shù)據(jù)模塊所表示的硬件結(jié)構而被改變的硬件結(jié)構,并執(zhí)行一預定的計算。
該計算系統(tǒng)可以進一步包括一結(jié)果獲得單元(7),該結(jié)果獲得單元在該計算系統(tǒng)與另一計算系統(tǒng)連接時,向另一計算系統(tǒng)提供被載入的第二數(shù)據(jù)模塊,以便控制另一計算系統(tǒng)執(zhí)行第二計算,并從另一計算系統(tǒng)獲得第二計算的結(jié)果。
所述計算單元(42)在所述計算系統(tǒng)連接至另一計算系統(tǒng)時可以提供被載入的第二數(shù)據(jù)模塊給所述結(jié)果獲得單元(7),并停止執(zhí)行第一計算。
所述結(jié)果獲得單元(7)可以通過為所述計算單元提供所獲得的第二計算的執(zhí)行結(jié)果作為再開始第一計算的變元,控制所述計算單元(42)再開始第一計算。
根據(jù)本發(fā)明第三方面的一種計算系統(tǒng)包括一載入器(3),逐各模塊地載入多個程序模塊,所述多個程序模塊中的每一個表示一預定計算;
一解釋器(47),解釋包括在載入的程序模塊中的指令,并根據(jù)解釋結(jié)果輸出至少一個用于實現(xiàn)與載入的程序模塊所表示的計算相對應的硬件結(jié)構的信號;一計算單元(42),具有可根據(jù)由所述解釋器(47)輸出的所述至少一個信號而被改變的硬件結(jié)構,并執(zhí)行一預定的計算;和一結(jié)果保存單元(44),其在所述計算單元(42)的硬件結(jié)構改變時保存由所述計算單元(42)執(zhí)行的計算的中間結(jié)果,并在所述硬件結(jié)構返回初始狀態(tài)時,通過將該保存的中間結(jié)果返回給所述計算單元(42),將所述計算單元恢復至和計算單元(42)硬件結(jié)構改變之前相同。
所述多個程序模塊可以包括第一程序模塊和第二程序模塊,其中第一程序模塊表示一第一計算,第二程序模塊表示在該第一計算期間被執(zhí)行的一第二計算。
第一程序模塊可以包含調(diào)用指令,該調(diào)用指令用于在第一計算的中間調(diào)用第二程序模塊。
該計算系統(tǒng)可以進一步包括一控制器(46),該控制器在所述解釋單元(47)解釋所述調(diào)用指令的情況下,將所述計算單元(42)執(zhí)行的第一計算的中間結(jié)果存儲在所述結(jié)果保存單元(44)中,并控制所述載入器(3)載入第二程序模塊。
在所述計算單元(42)完成第二計算的情況下,所述控制器(46)可以控制所述載入器(3)載入第一數(shù)據(jù)模塊,并可以通過將存儲在所述結(jié)果保存單元(44)中的所述中間結(jié)果返回給所述計算單元(42),來控制所述計算單元(42)再開始第一計算。
該計算系統(tǒng)可以進一步包括一變元提供單元(45),其向所述計算單元(42)提供第一計算的一部分中間結(jié)果作為用于執(zhí)行第二計算的變元,并向所述計算單元(42)提供第二計算的執(zhí)行結(jié)果作為用于再開始第一計算的變元。
所述結(jié)果保存單元(44)可以包括一存儲器,該存儲器按照先進后出的方法存儲中間結(jié)果。
所述計算單元(42)可以包括多個門電路。
所述多個門電路之間的連接可以根據(jù)由所述解釋器提供的至少一個信號而被切換。
該計算系統(tǒng)可以被連接至另一個計算系統(tǒng),該另一個計算系統(tǒng)具有可根據(jù)由被提供的程序模塊所表示的計算而被改變的硬件結(jié)構,并執(zhí)行所述由被提供的程序模塊表示的計算。
該計算系統(tǒng)可以進一步包括一結(jié)果獲得單元(7),該結(jié)果獲得單元(7)在該計算系統(tǒng)與另一計算系統(tǒng)連接時,向另一計算系統(tǒng)提供所述被載入的第二程序模塊,以便控制另一計算系統(tǒng)執(zhí)行第二計算,并從另一計算系統(tǒng)獲得第二計算的結(jié)果。
所述解釋器(47)在該計算系統(tǒng)與另一計算系統(tǒng)連接時,可以向所述結(jié)果獲得單元(7)提供所述被載入的第二程序模塊。
所述結(jié)果獲得單元(7)可以通過為所述計算單元(42)提供所獲得的第二計算的執(zhí)行結(jié)果作為再開始第一計算的變元,控制計算單元繼續(xù)第一計算。
圖1是顯示根據(jù)第一實施例的計算系統(tǒng)的結(jié)構的示意圖。
圖2是顯示由圖1所示計算系統(tǒng)執(zhí)行的計算的示例的圖。
圖3是顯示根據(jù)第二實施例的計算系統(tǒng)的結(jié)構示意圖。
圖4是顯示計算系統(tǒng)的結(jié)構的另一示例的圖。
圖5是顯示圖4所述計算系統(tǒng)連接至另一計算系統(tǒng)的示例的圖。
圖6是顯示計算系統(tǒng)結(jié)構的另一示例的圖。
具體實施例方式
第一實施例下面參照
根據(jù)本發(fā)明第一實施例的計算系統(tǒng)。
如圖1所示,根據(jù)第一實施例的計算系統(tǒng)1包括FPGA數(shù)據(jù)存儲單元2、載入器3和FPGA裝置4。
FPGA數(shù)據(jù)存儲單元2存儲了多個數(shù)據(jù)模塊(FPGA數(shù)據(jù)21至2N)。
編譯器6編譯多個程序模塊(源程序51至5N),并由此產(chǎn)生FPGA數(shù)據(jù)21至2N。源程序51至5N中的每一個用可表達硬件結(jié)構的程序語言來描述,并代表將被計算系統(tǒng)1所執(zhí)行的計算。FPGA數(shù)據(jù)21至2N表示最適于執(zhí)行由源程序51至5N所代表的計算的硬件結(jié)構。
源程序51至5N中的至少一個包含用于調(diào)用其它程序模塊的函數(shù)。也就是說,F(xiàn)PGA數(shù)據(jù)21至2N中的至少一個包含用于調(diào)用其它數(shù)據(jù)模塊的調(diào)用數(shù)據(jù)。
載入器3包括邏輯電路等,并在正確的定時以模塊為單位將存儲在FPGA數(shù)據(jù)存儲單元2中的FPGA數(shù)據(jù)21至2N載入FPGA裝置4中。具體地,載入器3將由一程序模塊產(chǎn)生的數(shù)據(jù)模塊載入FPGA裝置4中,該程序模塊則表示作為執(zhí)行目標的計算,即,該程序模塊對應于作為執(zhí)行目標的計算。在計算開始時,從外界給出載入數(shù)據(jù)模塊的指令,除此之外,這一指令也可根據(jù)由FPGA裝置4對計算的執(zhí)行而給出。
FPGA裝置4具有由載入器3載入的數(shù)據(jù)模塊所表示的硬件結(jié)構,并將與載入的數(shù)據(jù)模塊相對應的計算應用于外界所提供的輸入數(shù)據(jù)。然后,F(xiàn)PGA裝置4向外界輸出計算結(jié)果作為輸出數(shù)據(jù)。
具體地,F(xiàn)PGA裝置4包括FPGA數(shù)據(jù)存儲器41、門陣列42、調(diào)用檢測單元43、保存堆棧44、變元傳遞單元45和控制單元46。調(diào)用檢測單元43、保存堆棧44、變元傳遞單元45和控制單元46由邏輯電路或類似裝置構成。
FPGA數(shù)據(jù)存儲器41由RAM(隨機存取存儲器)構成,并存儲由載入器3所載入的數(shù)據(jù)模塊。
門陣列42包括由多個門電路(例如AND、OR和NOT)構成的計算單元42A和由多個觸發(fā)電路(FF)構成的狀態(tài)保存單元42B。
計算單元42A具有由載入的數(shù)據(jù)模塊所表示的硬件結(jié)構,即,最適合于執(zhí)行作為執(zhí)行目標的計算的硬件結(jié)構。具體地,構成計算單元42A的這些門電路之間的連接可根據(jù)載入的數(shù)據(jù)模塊而被切換。因此,計算單元42A的硬件結(jié)構就變成了由載入的數(shù)據(jù)模塊所指定的結(jié)構。而通過具有這種由載入的數(shù)據(jù)模塊所指定的硬件結(jié)構,計算單元42A就能夠以高速執(zhí)行與載入的數(shù)據(jù)模塊相對應的計算。
狀態(tài)保存單元42B保存由計算單元42A所執(zhí)行的計算的中間結(jié)果(內(nèi)部狀態(tài))。構成狀態(tài)保存單元42B的每個觸發(fā)器能夠接受從外界寫入的數(shù)據(jù)。
調(diào)用檢測單元43檢測包含在載入的數(shù)據(jù)模塊中的、用于調(diào)用另一數(shù)據(jù)模塊的調(diào)用數(shù)據(jù)。
保存堆棧44用于在調(diào)用檢測單元43檢測到調(diào)用數(shù)據(jù)的情況下,根據(jù)先進后出(FILOFirst-In-Last-Out)的方法保存由狀態(tài)保存單元42B所保存的數(shù)據(jù)(中間結(jié)果),以及用于識別調(diào)用另一數(shù)據(jù)模塊的那個數(shù)據(jù)模塊(即,包含調(diào)用數(shù)據(jù)的數(shù)據(jù)模塊)的識別數(shù)據(jù)。
當將被調(diào)用的數(shù)據(jù)模塊被實際調(diào)用時,以及當調(diào)用另一數(shù)據(jù)模塊的數(shù)據(jù)模塊(稱為調(diào)用器(caller)數(shù)據(jù)模塊)返回FPGA數(shù)據(jù)存儲器41時,變元傳遞單元45在調(diào)用器數(shù)據(jù)模塊和被調(diào)用的數(shù)據(jù)模塊之間傳遞變元。
具體地,當一數(shù)據(jù)模塊被調(diào)用時,在由狀態(tài)保存單元42B的多個觸發(fā)器所保存的數(shù)據(jù)當中,變元傳遞單元45保存用于執(zhí)行與該被調(diào)用的數(shù)據(jù)模塊相對應的計算的數(shù)據(jù)。然后,變元傳遞單元45將該保存的數(shù)據(jù)傳送給門陣列42作為對應被調(diào)用的數(shù)據(jù)模塊的計算的輸入值(變元)。而當調(diào)用器數(shù)據(jù)模塊再次被載入時,變元傳遞單元45保存由狀態(tài)保存單元42B的多個觸發(fā)器所保存的數(shù)據(jù),即,與被調(diào)用的數(shù)據(jù)模塊相對應的計算的結(jié)果(返回值)。然后,變元傳遞單元45將被保存的結(jié)果寫入至構成狀態(tài)保存單元42B的一預定的觸發(fā)器。
當一數(shù)據(jù)模塊被調(diào)用器數(shù)據(jù)模塊調(diào)用時,控制單元46控制在保存堆棧44中保存的對應于一調(diào)用器數(shù)據(jù)模塊的計算的中間結(jié)果以及該調(diào)用器數(shù)據(jù)模塊的識別信息。同時,控制單元46臨時地將狀態(tài)保存單元42B所保存的數(shù)據(jù)中在執(zhí)行對應于被調(diào)用的數(shù)據(jù)模塊的計算時所使用的數(shù)據(jù),存儲在變元傳遞單元45中。然后,控制單元46控制載入器3將被調(diào)用的數(shù)據(jù)模塊載入FPGA數(shù)據(jù)存儲器41中。隨后,控制單元46將存儲在變元傳遞單元45中的數(shù)據(jù)傳送給門陣列42作為輸入數(shù)據(jù)。
當對應于被調(diào)用數(shù)據(jù)模塊的計算被完成時,控制單元46將計算的結(jié)果(輸出數(shù)據(jù))存儲在變元傳遞單元45中。然后,控制單元46控制載入器3將由保存堆棧44中保存的識別信息所識別的調(diào)用器數(shù)據(jù)模塊載入FPGA數(shù)據(jù)存儲器41中。隨后,控制單元46控制已被保存在保存堆棧44中的數(shù)據(jù)(中間結(jié)果)返回至狀態(tài)保存單元42B,并將臨時存儲在變元傳遞單元45中的結(jié)果(輸出數(shù)據(jù))寫入至構成狀態(tài)保存單元42B的一預定觸發(fā)器。
從外界輸入至FPGA裝置4的輸入數(shù)據(jù)可以是通過輸入裝置例如鍵盤輸入的數(shù)據(jù),也可以是從外部存儲裝置例如磁盤裝置讀出的數(shù)據(jù)。從FPGA裝置4輸出給外界的輸出數(shù)據(jù)可以通過諸如顯示裝置等輸出裝置輸出,也可以被寫入到外部存儲裝置中,其還可以是用于控制外圍設備的控制數(shù)據(jù)。
下面解釋根據(jù)第一實施例的該計算系統(tǒng)1的操作。
下面將以該計算系統(tǒng)1執(zhí)行如圖2所示的計算作為示例進行說明。
如圖2所示,首先載入FPGA數(shù)據(jù)21,然后,F(xiàn)PGA數(shù)據(jù)21調(diào)用FPGA數(shù)據(jù)2N,隨后,F(xiàn)PGA數(shù)據(jù)21返回。
如圖2所示,整個計算過程由計算A、計算B和計算C組成。計算A對應于FPGA數(shù)據(jù)21,并構成了計算B成為必須之前的一部分,而計算B則對應于FPGA數(shù)據(jù)2N。計算C對應于FPGA數(shù)據(jù)21,其構成了利用計算B的結(jié)果來執(zhí)行的一部分。
首先,載入器3根據(jù)由外界提供的載入指令將FPGA數(shù)據(jù)21載入到FPGA數(shù)據(jù)存儲器41中。由此,具有與FPGA數(shù)據(jù)21相對應的電平(level)的信號被輸入給計算單元42A。
構成計算單元42A的門電路之間的連接根據(jù)這些輸入信號被切換,使得計算單元42A的硬件結(jié)構變?yōu)橛蒄PGA數(shù)據(jù)21所指定的結(jié)構。由此,計算單元42A變?yōu)榭梢詧?zhí)行對應于FPGA數(shù)據(jù)21的計算A。
當輸入數(shù)據(jù)被從外界提供給門陣列42時,計算單元42A將計算A應用至提供的輸入數(shù)據(jù)。
調(diào)用檢測單元43檢測在被載入的FPGA數(shù)據(jù)21中包含的調(diào)用數(shù)據(jù),并將表示檢測到調(diào)用數(shù)據(jù)的檢測信號輸出給控制單元46。
控制單元46響應于由調(diào)用檢測單元43提供的檢測信號,控制被保存在保存堆棧44中的在計算A完成時所獲得的計算結(jié)果(中間結(jié)果)。具體地,控制單元46控制待被保存堆棧44的最上層中的由狀態(tài)保存單元42B所保存的數(shù)據(jù)(門陣列42的內(nèi)部狀態(tài)),以及作為調(diào)用器數(shù)據(jù)模塊的FPGA數(shù)據(jù)21的識別數(shù)據(jù)。
而且,控制單元46臨時地將狀態(tài)保存單元42B所保存的數(shù)據(jù)當中的在計算B中使用的數(shù)據(jù)存儲在變元傳遞單元45中。
此后,控制單元46控制載入器3將作為被調(diào)用的數(shù)據(jù)模塊的FPGA數(shù)據(jù)2N載入到FPGA數(shù)據(jù)存儲器41中。這樣,具有與FPGA數(shù)據(jù)2N相對應的電平的信號被輸入給計算單元42A。
構成計算單元42A的門電路之間的連接根據(jù)輸入信號被切換,使得計算單元42A的硬件結(jié)構變?yōu)橛蒄PGA數(shù)據(jù)2N所指定的結(jié)構。由此,計算單元42A變?yōu)榭梢詧?zhí)行對應于FPGA數(shù)據(jù)2N的計算B。
控制單元46將臨時保存在變元傳遞單元45中的數(shù)據(jù)輸入給門陣列42作為輸入數(shù)據(jù)。這樣,計算單元42A執(zhí)行計算B。
當計算B完成時,控制單元46臨時地將來自門陣列42的輸出數(shù)據(jù)存儲在變元傳遞單元45中,作為將被傳遞給調(diào)用器FPGA數(shù)據(jù)21的變元。
然后,控制單元46參照在保存堆棧44的最上層中保存的識別信息,并識別出作為調(diào)用器數(shù)據(jù)的FPGA數(shù)據(jù)21。
控制單元46控制載入器3將FPGA數(shù)據(jù)21重新載入至FPGA數(shù)據(jù)存儲器41。這樣,計算單元42A的硬件結(jié)構以如上所述類似的方式,從由FPGA數(shù)據(jù)2N所指定的結(jié)構,切換為由FPGA數(shù)據(jù)21所指定的結(jié)構。
當調(diào)用器FPGA數(shù)據(jù)21被重新載入時,控制單元46將位于保存堆棧44的最上層中的數(shù)據(jù)(內(nèi)部狀態(tài))寫回至狀態(tài)保存單元42B的每個觸發(fā)器。這樣,門陣列42的內(nèi)部狀態(tài)就返回初始狀態(tài)。
進一步,控制單元46將臨時保存在變元傳遞單元45中的數(shù)據(jù)寫入至構成狀態(tài)保存單元42B的一預定觸發(fā)器。
在這種狀態(tài)下,計算單元42A開始對應于FPGA數(shù)據(jù)21的計算C,并將最終計算結(jié)果輸出作為輸出數(shù)據(jù)。
被FPGA數(shù)據(jù)21所調(diào)用的FPGA數(shù)據(jù)2N可以調(diào)用其它的數(shù)據(jù)模塊。這時,調(diào)用檢測單元43可以檢測包含在FPGA數(shù)據(jù)2N中包含的調(diào)用數(shù)據(jù),并以與上述類似的方式輸出表示檢測到調(diào)用數(shù)據(jù)的檢測信號至控制單元46。然后,控制單元46可以根據(jù)所提供的檢測信號執(zhí)行如上所述相同的控制。通過該操作,可以執(zhí)行由三個或更多程序模塊表示的大型計算。
如前面所解釋的,計算單元42A的硬件結(jié)構切換為由載入的數(shù)據(jù)模塊所指定的結(jié)構,即最適合于執(zhí)行作為執(zhí)行目標的計算的結(jié)構。由此,與CPU讀取程序并執(zhí)行計算的情形相比,可以在更高的速度下執(zhí)行計算。
而且,通過在保存堆棧種保存對應于調(diào)用器數(shù)據(jù)模塊的計算的中間結(jié)果,即使在與被調(diào)用的數(shù)據(jù)模塊相對應的計算完成之后也可以再開始對應于調(diào)用器數(shù)據(jù)模塊的計算。由此,可以執(zhí)行由多個程序模塊所表示的大型計算。
計算系統(tǒng)1能夠執(zhí)行由多個程序模塊構成的大型程序所表示的計算。因此,可將程序分為多個程序模塊,以便按每個程序模塊創(chuàng)建一程序,或者每個程序模塊也可以被用作為創(chuàng)建其它程序時的一部分。其結(jié)果是,程序的創(chuàng)建可以在較短時間內(nèi)實現(xiàn)。
第二實施例下面將參照
根據(jù)本發(fā)明第二實施例的計算系統(tǒng)。
圖3顯示了根據(jù)第二實施例的計算系統(tǒng)的結(jié)構。
根據(jù)第二實施例的計算系統(tǒng)并不編譯多個程序模塊(源程序51至5N),但可將這些程序模塊直接載入FPGA裝置4。
如圖3所示,根據(jù)第二實施例的計算系統(tǒng)包括載入器3、FPGA裝置4和程序儲存單元5。
載入器3根據(jù)控制單元46的指令,在預定的時序逐各模塊地存儲在程序儲存單元5中的源程序51至5N載入至FPGA裝置4中。
如圖3所示,F(xiàn)PGA裝置4包括存儲器41、門陣列42、保存堆棧44、變元傳遞單元45、控制單元46和解釋器47。
存儲器41由RAM構成,并存儲了由載入器3載入的一程序模塊。
解釋器47一個一個地順序解釋被載入存儲器41中的程序模塊中所包含的指令。然后,解釋器47根據(jù)解釋結(jié)果,向門陣列42的計算單元42A輸出用于實現(xiàn)一最適合于執(zhí)行由載入的程序模塊所指定的計算的硬件結(jié)構的信號。
構成計算單元42A的門電路之間的連接根據(jù)解釋器47提供的信號被切換。由此,計算單元42A的硬件結(jié)構變?yōu)樽钸m合于執(zhí)行由載入的程序模塊所指定的計算的結(jié)構,即,與作為執(zhí)行目標的計算相對應的結(jié)構。
而在被解釋的指令為用于調(diào)用另一程序模塊的指令的情況下,解釋器47向控制單元46輸出表示另一程序模塊應該被調(diào)用的調(diào)用信號。
當解釋器47提供了一調(diào)用信號時,控制單元46控制待在保存堆棧44中保存的門陣列42的內(nèi)部狀態(tài)以及用于識別調(diào)用器程序模塊的識別數(shù)據(jù)。
然后,控制單元46臨時地將狀態(tài)保存單元42B的觸發(fā)器所存儲的數(shù)據(jù)當中,在執(zhí)行由被調(diào)用的程序模塊所表示的計算時使用的數(shù)據(jù)存儲在變元傳遞單元45中。
隨后,控制單元46控制載入器3載入被調(diào)用的程序模塊。
然后,控制單元46將臨時存儲在變元傳遞單元45中的數(shù)據(jù)傳送給門陣列42作為輸入數(shù)據(jù)。
當與被調(diào)用的程序模塊相對應的計算完成時,控制單元46臨時地將計算結(jié)果(輸出數(shù)據(jù))保存在變元傳遞單元45中。
然后,控制單元46控制載入器3將由保存在保存堆棧44中的識別數(shù)據(jù)所識別的調(diào)用器程序模塊載入存儲器41中。
隨后,控制單元46將保存在保存堆棧44中的內(nèi)部狀態(tài)返回狀態(tài)保存單元42B,并將臨時存儲在變元傳遞單元45中的輸出數(shù)據(jù)(變元),寫入至構成狀態(tài)保存單元42B的一預定觸發(fā)器。這樣,由調(diào)用器程序模塊所表示的計算再開始。
解釋器47可以由多個門電路構成。通過這樣的結(jié)構,解釋器47能夠高速輸出具有與載入的程序模塊的解釋結(jié)果相對應電平的信號。結(jié)果是,計算單元42A的硬件結(jié)構的切換可以在高速下進行,幾乎不會影響執(zhí)行計算的速度。
由于FPGA裝置4包括上述解釋器47,因此源程序51至5N能夠以每個模塊為單位載入FPGA裝置4之中。由此,即使沒有適合于FPGA裝置4結(jié)構的編譯器,也可以在高速下執(zhí)行由多個程序模塊表示的大型計算。
執(zhí)行由一個程序模塊表示的計算可能需要多個硬件結(jié)構。這時,如上文所述,控制單元46控制待在保存堆棧44中保存的在硬件結(jié)構被切換之前的一刻所獲得的數(shù)據(jù)(中間結(jié)果)。此后,解釋器47向計算單元42A輸入具有預定電平的信號,而計算單元42A的硬件結(jié)構借此能夠在計算過程中間被切換。
如圖4所示,例如,在第一實施例中所示的計算系統(tǒng)的結(jié)構中可以加入由邏輯電路等構成的輔助計算控制單元。具有這樣一個結(jié)構的計算系統(tǒng)1A可以與另一個計算系統(tǒng)連接。
例如,在具有如圖1或圖4所示結(jié)構的另一個計算系統(tǒng)被連接至計算系統(tǒng)1A的情況下,該輔助計算控制單元7可拆地(detachably)連接至另一個計算系統(tǒng)的載入器3、門陣列42和變元傳遞單元45。
進一步,例如圖5中所示,兩個計算系統(tǒng)1B和1C可以連接至計算系統(tǒng)1A。計算系統(tǒng)1B和1C具有例如與圖1所示結(jié)構實質(zhì)上相同的結(jié)構。這時,計算系統(tǒng)1A的輔助計算控制單元7分別連接至計算系統(tǒng)1B和1C的載入器3、門陣列42和變元傳遞單元45。但是,計算系統(tǒng)1B和1C不一定需要FPGA數(shù)據(jù)存儲單元2。
下面,說明計算系統(tǒng)1A控制計算系統(tǒng)1B和1C以執(zhí)行并行操作時所執(zhí)行的操作。
假設首先載入FPGA數(shù)據(jù)21,且FPGA數(shù)據(jù)21調(diào)用FPGA數(shù)據(jù)2X。并假設計算系統(tǒng)1A控制計算系統(tǒng)1B和1C載入FPGA數(shù)據(jù)2X。
首先,計算系統(tǒng)1A的載入器3將FPGA數(shù)據(jù)21載入FPGA數(shù)據(jù)存儲器41。這樣,計算單元42A的硬件結(jié)構就以在第一實施例中所述的相同方式變?yōu)橛蒄PGA數(shù)據(jù)21所指定的結(jié)構。
然后,當從外界向計算系統(tǒng)1A的門陣列42輸入輸入數(shù)據(jù),計算系統(tǒng)1A的計算單元42A執(zhí)行對應于FPGA數(shù)據(jù)21的計算。
計算系統(tǒng)1A的調(diào)用檢測單元43檢測包含在載入的FPGA數(shù)據(jù)21中、指示調(diào)用FPGA數(shù)據(jù)2X的調(diào)用數(shù)據(jù)。隨后,調(diào)用檢測單元43向控制單元46輸出表示檢測到調(diào)用數(shù)據(jù)的檢測信號。
在調(diào)用檢測單元43提供了檢測信號時,計算系統(tǒng)1A的控制單元46控制計算系統(tǒng)1A的載入器3將作為被調(diào)用數(shù)據(jù)模塊的FPGA數(shù)據(jù)2X載入至FPGA數(shù)據(jù)存儲器41中。
當載入FPGA數(shù)據(jù)2X時,計算系統(tǒng)1A的門陣列42獲得被載入的FPGA數(shù)據(jù)2X,作為對應于FPGA數(shù)據(jù)21的部分處理(計算)。
然后,門陣列42向輔助計算控制單元7提供所獲得的FPGA數(shù)據(jù)2X,并停止執(zhí)行與FPGA數(shù)據(jù)21相對應的計算。
計算系統(tǒng)1A的控制單元46將計算系統(tǒng)1A的狀態(tài)保存單元42B所保存的數(shù)據(jù)當中,執(zhí)行與FPGA數(shù)據(jù)2X相對應的計算所必須的數(shù)據(jù)(變元)提供給輔助計算控制單元7。
輔助計算控制單元7控制計算系統(tǒng)1B和1C的載入器3將所提供的FPGA數(shù)據(jù)2X載入計算系統(tǒng)1B和1C的FPGA數(shù)據(jù)存儲器41中。其結(jié)果是,計算系統(tǒng)1B和1C的計算單元42A的硬件結(jié)構變?yōu)橛蒄PGA數(shù)據(jù)2X指定的結(jié)構。
然后,計算系統(tǒng)1A的輔助計算控制單元7將所提供的變元當中,要提供給計算系統(tǒng)1B的變元,輸入至計算系統(tǒng)1B的門陣列42作為輸入數(shù)據(jù),并將要提供給計算系統(tǒng)1C的變元輸入至計算系統(tǒng)1C的門陣列42作為輸入數(shù)據(jù)。其結(jié)果是,計算系統(tǒng)1B和1C的門陣列42分別執(zhí)行對應于FPGA數(shù)據(jù)2X的計算。
當對應于FPGA數(shù)據(jù)2X的計算完成時,計算系統(tǒng)1B(或1C)的控制單元46臨時地將來自計算系統(tǒng)1B(或1C)的門陣列42的輸出數(shù)據(jù)存儲在計算系統(tǒng)1B(或1C)的變元傳遞單元45中,作為將用于再開始對應作為調(diào)用器數(shù)據(jù)模塊的FPGA數(shù)據(jù)21的計算的變元。
計算系統(tǒng)1A的輔助計算控制單元7控制計算系統(tǒng)1B和1C的變元傳遞單元45,且當檢測到輸出數(shù)據(jù)被臨時存儲在這些變元傳遞單元45中時,從上述變元傳遞單元45中獲得存儲的輸出數(shù)據(jù)。
接著,計算系統(tǒng)1A的輔助計算控制單元7將所獲得的輸出數(shù)據(jù)寫入至構成計算系統(tǒng)1A的狀態(tài)保存單元42B的預定觸發(fā)器中。
在這一狀態(tài)下,計算系統(tǒng)1A的門陣列42再開始對應于FPGA數(shù)據(jù)21的計算。其結(jié)果是,最終的計算結(jié)果作為輸出數(shù)據(jù)被輸出。
如上所述,如果計算系統(tǒng)具有如圖4所示的結(jié)構,則必要時可以增加另一個計算系統(tǒng)。由此,通過單獨一個計算系統(tǒng)在短時間內(nèi)無法完成的復雜計算和需要并行操作的計算就能夠在短時間內(nèi)完成。
而在具有如圖4所示的結(jié)構的計算系統(tǒng)連接至另一個計算系統(tǒng)的情況下,該“另一個”計算系統(tǒng)可以連接又一個計算系統(tǒng)。由此,該“另一個”計算系統(tǒng)可以再如上所述相同的方式下,控制與其相聯(lián)的該“又一個”計算系統(tǒng)執(zhí)行計算,并能夠獲得計算結(jié)果。
進一步,例如圖6所示的,上述輔助計算控制單元7可以被添加至圖3所示的計算系統(tǒng)。然后,圖6所示的計算系統(tǒng)1D可以控制另一個連接至該計算系統(tǒng)1D的計算系統(tǒng)來執(zhí)行由載入的程序模塊所表示的計算。
這時,如果計算系統(tǒng)1D的解釋器47所解釋的指令為用于調(diào)用另一個程序模塊的指令,則解釋器47可以向輔助計算控制單元7提供所載入的被調(diào)用的程序模塊。輔助計算控制單元7可將該被提供的程序模塊提供給另一計算系統(tǒng),并可控制另一計算系統(tǒng)執(zhí)行一計算。然后,輔助計算控制單元7可以從另一個計算系統(tǒng)獲得計算結(jié)果,并可以將該計算結(jié)果提供給門陣列42,使得由調(diào)用器程序模塊所表示的計算能夠開始。
但是,在這種情況下,連接到計算系統(tǒng)1D的另一個計算系統(tǒng)應該具有例如圖3所示的結(jié)構。
在上述實施例中,載入器3將FPGA數(shù)據(jù)存儲單元2中存儲的FPGA數(shù)據(jù)21至2N中的一個直接載入FPGA數(shù)據(jù)存儲器41。相反,F(xiàn)PGA數(shù)據(jù)21至2N可以包括一宏數(shù)據(jù)(macro)。FPGA數(shù)據(jù)存儲單元2可以存儲宏數(shù)據(jù),且載入器3可以在將FPGA數(shù)據(jù)21至2N載入FPGA數(shù)據(jù)存儲器41中時,在FPGA數(shù)據(jù)21至2N之上執(zhí)行宏調(diào)用。
在不背離本發(fā)明的精神和范圍的情況下可以做出各種實施例和改變。上述實施例用于說明本發(fā)明,而并未限定本發(fā)明的范圍。本發(fā)明的范圍由權利要求書而非實施例來表示。在本發(fā)明的權利要求的等效意義之內(nèi)做出的各種變型應被認為是處于本發(fā)明的范圍之內(nèi)。
本申請包括說明書、權利要求書、附圖和說明書摘要,是基于2001年5月10日提交的日本專利申請No.2001-139951和2002年3月6日提交的日本專利申請No.2002-60515。上述日本專利申請在此全部并入作為參考。
權利要求
1.一種計算系統(tǒng),包括一計算單元(42),具有與作為執(zhí)行目標的計算相對應的硬件結(jié)構,并執(zhí)行作為執(zhí)行目標的計算;一狀態(tài)存儲器(44),存儲所述計算單元的內(nèi)部狀態(tài);和一控制器(46、46),控制所述計算單元的內(nèi)部狀態(tài),其中所述計算單元(42)在一第一計算的中間執(zhí)行一第二計算;以及當將由所述計算單元(42)執(zhí)行的計算從第一計算切換至第二計算時,所述控制器(46、46)存儲所述狀態(tài)存儲器(44)中的內(nèi)部狀態(tài),并且當將由所述計算單元(42)執(zhí)行的計算從第二計算返回至第一計算時,所述控制器(46、46)通過將存儲在所述狀態(tài)存儲器(44)中的內(nèi)部狀態(tài)返回給所述計算單元(42)來控制所述計算單元(42)以再開始執(zhí)行第一計算。
2.根據(jù)權利要求1所述的計算系統(tǒng),其中所述狀態(tài)存儲器(44)按照先進后出的方法存儲內(nèi)部狀態(tài)。
3.根據(jù)權利要求1所述的計算系統(tǒng),其中所述計算單元(42)包括多個門電路;以及所述多個門電路之間的連接根據(jù)作為執(zhí)行目標的計算而被切換。
4.一種計算系統(tǒng),包括一載入器(3),逐各模塊地載入多個數(shù)據(jù)模塊,該多個數(shù)據(jù)模塊中的每一個表示適合于執(zhí)行一預定計算的硬件結(jié)構;一計算單元(42),具有可根據(jù)被載入的數(shù)據(jù)模塊所表示的硬件結(jié)構而被改變的硬件結(jié)構,并執(zhí)行一預定的計算;和一結(jié)果保存單元(44),其在所述計算單元(42)的硬件結(jié)構改變時保存由所述計算單元(42)執(zhí)行的計算的中間結(jié)果,并在所述計算單元(42)的硬件結(jié)構返回初始狀態(tài)時將該保存的中間結(jié)果返回給所述計算單元(42)。
5.根據(jù)權利要求4所述的計算系統(tǒng),其中多個數(shù)據(jù)模塊包括第一數(shù)據(jù)模塊和第二數(shù)據(jù)模塊,其中第一數(shù)據(jù)模塊表示用于執(zhí)行第一計算的第一硬件結(jié)構,第二數(shù)據(jù)模塊表示用于執(zhí)行第二計算的第二硬件結(jié)構,第二計算在第一計算期間被執(zhí)行。第一數(shù)據(jù)模塊包含調(diào)用數(shù)據(jù),該調(diào)用數(shù)據(jù)用于在第一計算的中間調(diào)用第二數(shù)據(jù)模塊。所述計算系統(tǒng)進一步包括一檢測單元(43),檢測包含在被載入的第一模塊中的調(diào)用數(shù)據(jù);和一控制器(46),在所述檢測單元(43)檢測到調(diào)用數(shù)據(jù)時,將所述計算單元(42)執(zhí)行的第一計算的中間結(jié)果存儲在所述結(jié)果保存單元(44)中,并控制所述載入器(3)載入第二數(shù)據(jù)模塊。
6.根據(jù)權利要求5所述的計算系統(tǒng),其中在所述計算單元(42)完成第二計算的情況下,所述控制器(46)控制所述載入器(3)載入第一數(shù)據(jù)模塊,并通過將存儲在所述結(jié)果保存單元(44)中的中間結(jié)果返回給所述計算單元(42),控制所述計算單元(42)再開始第一計算。
7.根據(jù)權利要求6所述的計算系統(tǒng),進一步包括一變元提供單元(45),其向所述計算單元(42)提供一部分第一計算的中間結(jié)果作為用于執(zhí)行第二計算的變元,并向所述計算單元(42)提供第二計算的執(zhí)行結(jié)果作為用于再開始第一計算的變元。
8.根據(jù)權利要求7所述的計算系統(tǒng),其中所述結(jié)果保存單元(44)包括一存儲器,該存儲器按照先進后出的方法存儲中間結(jié)果。
9.根據(jù)權利要求7所述的計算系統(tǒng),其中所述計算單元(42)包括多個門電路;以及所述多個門電路之間的連接根據(jù)載入的數(shù)據(jù)模塊而被切換。
10.根據(jù)權利要求5所述的計算系統(tǒng),其中所述計算系統(tǒng)可以被連接至另一個計算系統(tǒng),該另一個計算系統(tǒng)具有可根據(jù)由被提供的數(shù)據(jù)模塊所表示的硬件結(jié)構而改變的硬件結(jié)構,并執(zhí)行一預定的計算;所述計算系統(tǒng)進一步包括一結(jié)果獲得單元(7),該結(jié)果獲得單元在所述計算系統(tǒng)與另一個計算系統(tǒng)連接的情況下,向另一個計算系統(tǒng)提供被載入的第二數(shù)據(jù)模塊,以控制另一個計算系統(tǒng)執(zhí)行第二計算,并從另一個計算系統(tǒng)獲得第二計算的執(zhí)行結(jié)果。
11.根據(jù)權利要求10所述的計算系統(tǒng),其中所述計算單元(42)在所述計算系統(tǒng)連接至另一計算系統(tǒng)的情況下,向所述結(jié)果獲得單元(7)提供被載入的第二數(shù)據(jù)模塊,并停止執(zhí)行第一計算;以及所述結(jié)果獲得單元(7)通過為所述計算單元提供所獲得的第二計算的執(zhí)行結(jié)果作為再開始第一計算的變元,控制所述計算單元(42)再開始第一計算。
12.一種計算系統(tǒng),包括一載入器(3),以每一模塊為單位載入多個數(shù)據(jù)模塊,該多個數(shù)據(jù)模塊中的每一個表示一預定計算;一解釋器(47),解釋包括在載入的程序模塊中的指令,并根據(jù)解釋結(jié)果輸出至少一個用于實現(xiàn)與載入的程序模塊所表示的計算相對應的硬件結(jié)構的信號;一計算單元(42),具有可根據(jù)由所述解釋器(47)輸出的至少一個信號而改變的硬件結(jié)構,并執(zhí)行一預定的計算;和一結(jié)果保存單元(44),其在所述計算單元(42)的硬件結(jié)構改變時保存由所述計算單元(42)執(zhí)行的計算的中間結(jié)果,并在該硬件結(jié)構返回初始狀態(tài)時,通過將該保存的中間結(jié)果返回給所述計算單元(42),將所述計算單元恢復至和所述計算單元(42)硬件結(jié)構改變之前相同。
13.根據(jù)權利要求12所述的計算系統(tǒng),其中多個程序模塊包括第一程序模塊和第二程序模塊,其中第一程序模塊表示一第一計算,第二程序模塊表示在第一計算期間被執(zhí)行的一第二計算。第一程序模塊包含調(diào)用指令,該調(diào)用指令用于在第一計算的中間調(diào)用第二程序模塊。所述計算系統(tǒng)進一步包括一控制器(46),該控制器在所述解釋單元(47)解釋調(diào)用指令的情況下,將所述計算單元(42)執(zhí)行的第一計算的中間結(jié)果存儲在所述結(jié)果保存單元(44)中,并控制所述載入器(3)載入第二程序模塊。
14.根據(jù)權利要求13所述的計算系統(tǒng),其中在所述計算單元(42)完成第二計算的情況下,所述控制器(46)控制所述載入器(3)載入第一程序模塊,并通過將存儲在所述結(jié)果保存單元(44)中的中間結(jié)果返回給所述計算單元(42),控制所述計算單元(42)再開始第一計算。
15.根據(jù)權利要求14所述的計算系統(tǒng),進一步包括一變元提供單元(45),其向所述計算單元(42)提供第一計算的一部分中間結(jié)果作為用于執(zhí)行第二計算的變元,并向所述計算單元(42)提供第二計算的執(zhí)行結(jié)果作為用于再開始第一計算的變元。
16.根據(jù)權利要求15所述的計算系統(tǒng),其中所述結(jié)果保存單元(44)包括一存儲器,該存儲器按照先進后出的方法存儲中間結(jié)果。
17.根據(jù)權利要求15所述的計算系統(tǒng),其中所述計算單元(42)包括多個門電路;以及所述多個門電路之間的連接根據(jù)由所述解釋器提供的至少一個信號而被切換。
18.根據(jù)權利要求13所述的計算系統(tǒng),其中所述計算系統(tǒng)可以被連接至另一個計算系統(tǒng),該另一個計算系統(tǒng)具有可根據(jù)由被提供的程序模塊所表示的計算而改變的硬件結(jié)構,并執(zhí)行由被提供的程序模塊所表示的計算。所述計算系統(tǒng)進一步包括一結(jié)果獲得單元(7),該結(jié)果獲得單元在所述計算系統(tǒng)與另一個計算系統(tǒng)連接時,向另一個計算系統(tǒng)提供被載入的第二程序模塊,以控制另一個計算系統(tǒng)執(zhí)行第二計算,并從另一個計算系統(tǒng)獲得第二計算的結(jié)果。
19.根據(jù)權利要求18所述的計算系統(tǒng),其中所述解釋器(47)在所述計算系統(tǒng)與另一個計算系統(tǒng)連接時,向所述結(jié)果獲得單元(7)提供被載入的第二程序模塊;以及所述結(jié)果獲得單元(7)通過為所述計算單元(42)提供所獲得的第二計算的執(zhí)行結(jié)果作為再開始第一計算的變元,控制所述計算單元繼續(xù)第一計算。
全文摘要
計算單元(42)在第一計算的中間執(zhí)行第二計算。此時,計算單元(42)的硬件結(jié)構根據(jù)作為執(zhí)行目標的計算而被切換。控制器(46)在對第二計算進行計算時將計算單元(42)的內(nèi)部狀態(tài)存儲在存儲器(44)中。而且當將被計算單元(42)執(zhí)行的計算從第二計算返回第一計算時,控制器(46)通過將存儲在存儲器(44)中的內(nèi)部狀態(tài)返回給計算單元(42)控制將繼續(xù)進行第一計算。
文檔編號G06F9/42GK1529858SQ0280964
公開日2004年9月15日 申請日期2002年5月8日 優(yōu)先權日2001年5月10日
發(fā)明者西原明法, 長谷部鐵也, 林博昭, 三田高司, 司, 鐵也 申請人:東京威力科創(chuàng)迪拜思股份有限公司