專利名稱:一種可重構計算陣列及構建方法
技術領域:
本發(fā)明涉計算機體系結構領域,尤其涉及一種可重構計算陣列及構建方法。
背景技術:
處理器是計算機系統(tǒng)的核心,隨著半導體工藝水平的進步,多核處理器已逐漸成為主流結構,并行處理技術正從傳統(tǒng)的并行計算機滲透到單芯片多核處理器,像CPU、數(shù)字信號處理器DSP和圖形處理器GPU等都可以支持不同程度的并行計算來應對應用中的密集
計算。 根據(jù)擴展的Flynn分類模型,在指令流計算模式下,通常利用通用片上多核處理器(Chip Multiprocessor,簡稱CMP), DSP、GPU、CELL、Imagine等多核處理器針對數(shù)據(jù)密集型、計算密集型應用。但是,基于指令的處理器的單核依然采用存儲程序的串行方式實現(xiàn)應用算法,其執(zhí)行過程必須經過“取指令——> 指令譯碼——> 地址生成一一> 取操作數(shù)——>執(zhí)行——> 存儲或寫回”6個步驟,需要消耗大量的控制邏輯,對芯片面積和功耗都有非常大的影響,因此,此類處理器在效率較低。而專硬件的缺點在于靈活性差,目前多采用現(xiàn)場可編程門陣列FPGA對計算做硬件加速。不同于上述處理器的指令執(zhí)行方式,F(xiàn)PGA實現(xiàn)算法到硬件的空間映射,且具備較好的通用性,但是,F(xiàn)PGA是細粒度的可重構器件,以查找表LUT為基本單元,基于靜態(tài)隨機存儲器SRAM的LUT單元同專用集成電路ASIC相比需要更多晶體管來執(zhí)行邏輯功能,再有FPGA的布線資源占據(jù)高達80 %的芯片面積,通常FPGA實現(xiàn)相同功能電路的面積是ASIC的23 55倍,功耗是6 26倍,可見FPGA同樣面臨嚴重的效率問題。當前粗粒度的可重構結構,大都采用算術邏輯單元ALU或乘加單元MAC作為基本功能單元,ALU的本質依然是時間上串行的控制流執(zhí)行方式,即按功能模式選擇的執(zhí)行方式,而MAC的靈活性不夠。綜上所述,現(xiàn)有的通用和專用器件的結構無法實現(xiàn)高效率和高靈活性的統(tǒng)一。
發(fā)明內容
有鑒于此,本發(fā)明提供一種可重構計算陣列及構建方法,其具體方案如下一種可重構計算陣列,包括預設個數(shù)的單核和互連模塊,其中任意一個單核包括可重構計算模塊、可重構存儲模塊、可重構控制邏輯模塊和配置模塊,單核內的可重構計算模塊、可重構存儲模塊和可重構控制邏輯模塊參照某一應用集合所包含的基礎算核集的硬件結構構建,所述預設個數(shù)的單核能夠支持所述應用集合所包含的全部基礎算核,所述基礎算核為,對某一應用集合的應用算法進行分析后獲得的基本操作的硬件實現(xiàn);所述互連模塊用于,參考所述應用集合內各應用基于基礎算核集的硬件實現(xiàn),對所述預設個數(shù)的單核進行互連。優(yōu)選的,當實現(xiàn)所述應用集合中的某一待處理應用時,與所述待處理應用對應的單核內的可重構計算模塊、可重構存儲模塊、可重構控制邏輯模塊根據(jù)所述待處理應用所包含的基礎算核進行配置;所述互連模塊參考所述待處理應用基于基礎算核集的硬件實現(xiàn),按照所述待處理應用將配置后的單核進行互連,以實現(xiàn)所述待處理應用。優(yōu)選的,所述陣列還包括輸入輸出I/O模塊,所述輸入輸出I/O模塊用于,所述可重構計算陣列與其他可重構計算陣列或其他片外資源進行通信。優(yōu)選的,所述預設個數(shù)的單核具有統(tǒng)一的接口,所述預設個數(shù)單核中的任意一個單核與其他單核為同構結構或異構結構。一種可重構計算陣列構建方法,包括對某一應用集合內的應用算法進行分析,獲得與該應用集合對應的基礎算核集合;
參照基礎算核集的硬件結構構建預設個數(shù)的單核內部的可重構計算模塊、可重構存儲模塊和可重構控制邏輯模塊,使所述預設個數(shù)的單核能夠支持所述應用集合所包含的全部基礎算核;參考所述應用集合內各應用基于基礎算核集的硬件實現(xiàn),將所述預設個數(shù)的單核通過互連模塊連接構成可重構計算陣列。優(yōu)選的,還包括當實現(xiàn)某一待處理應用時,確定待處理應用所包含的基礎算核;參考所述待處理應用基于基礎算核集的硬件實現(xiàn),將所述待處理應用所對應的單核配置成所述待處理應用對應的基礎算核,并經由互連模塊連接構成實現(xiàn)所述待處理應用的硬件結構。本發(fā)明實施例公開的可重構計算陣列中的單核依據(jù)待處理應用所對應的應用集合包含的基礎算核集進行配置,并且參考所述應用集合內各應用基于基礎算核集的硬件實現(xiàn),通過互連模塊連接。該可重構計算陣列實現(xiàn)了直接映射應用算法的硬件結構的目的,提高了應用的處理效率。并且,由于陣列自身的可重構性,使得硬件結構可以靈活的對應各個應用,提高了陣列的靈活性。
為了更清楚地說明本發(fā)明實施例或現(xiàn)有技術中的技術方案,下面將對實施例或現(xiàn)有技術描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實施例,對于本領域普通技術人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。圖I為本發(fā)明實施例公開的可重構計算陣列結構示意圖;圖2為本發(fā)明實施例公開的單核的結構示意圖;圖3為本發(fā)明實施例公開的互連模塊的結構示意圖;圖4為本發(fā)明實施例公開的應用算法在HRCA中的實現(xiàn)流程圖;圖5為本發(fā)明實施例公開的可重構計算陣列的構建方法流程圖;圖6為本發(fā)明實施例公開的又一可重構計算陣列的構建方法流程圖。
具體實施例方式下面將結合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發(fā)明一部分實施例,而不是全部的實施例。基于本發(fā)明中的實施例,本領域普通技術人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。本發(fā)明的出發(fā)點是根據(jù)應用的需求尋找多樣的計算單位,然后根據(jù)不同計算單位的特征發(fā)展新的體系結構,新的解決方法,即在靈活性與效率之間尋找一個平衡點。本發(fā)明實施例公開了一種可重構計算陣列(HybridReconfigurable Computing Array, HRCA),該陣列包括多個單核,具體的結構由當前處理的應用決定,即通過應用驅動,這里的應用驅動是指在設計可重構陣列結構之初,首先需要對該可重構陣列結構所對應的應用領域內的全部應用統(tǒng)一為應用集合,對該集合內的算法的分析,提取可共用的基本操作,對某一應用領域內的應用算法進行分析后獲得的基本操作可以通過基礎算核來進行硬件實現(xiàn),將實現(xiàn)全 部基本操作的硬件實現(xiàn)構成基礎算核集合。綜合基礎算核的硬件結構特點,構建一系列不同粒度的計算、存儲和控制邏輯單元來構成單核結構。同時,單核經由滿足應用硬件結構互連需求的互連模塊構成規(guī)??蓴U展的可重構陣列。由于陣列結構完全符合待處理應用的要求,因此能夠實現(xiàn)對應用處理效率的最大化。陣列中不同粒度的計算、存儲和控制邏輯單元以變化的組織形態(tài)來實現(xiàn)不同的應用,這種變化的組織形態(tài)是通過可重構來實現(xiàn)的。本發(fā)明實施例公開的可重構計算陣列結構如圖I所示,包括16個單核11和互連模塊12。其中任意一個單核的結構如圖2所示,包括可重構計算模塊21、可重構存儲模塊22、可重構控制邏輯模塊23、配置模塊24、數(shù)據(jù)通路交換開關25和控制信號交換開關26。本實施例中的16個單核對應一個應用集合。每一單核內的配置模塊依據(jù)該應用集合所包含的基礎算核集的硬件結構構建對該單核的可重構計算模塊、可重構存儲模塊和可重構控制邏輯模塊進行配置,使得每個單核能夠支持一個或多個應用集合所包含的基礎算核,圖中16個單核能夠支持該應用集合所包含的全部基礎算核?;ミB模塊12用于參考所述待處理應用集合內各應用基于基礎算核集的硬件實現(xiàn),按照所述待處理應用將配置后的單核連通,以實現(xiàn)整個待處理應用。在可重構陣列構建之處,需要對其對應的應用集合內的應用進行統(tǒng)一考慮,將每一個應用在硬件上的實現(xiàn)形式進行綜合,然后在硬件資源上將其能夠應用到的連接形式進行預先設置,也就是將應用基于基礎算核集的硬件上實現(xiàn)。當需要實現(xiàn)所述應用集合中的某一待處理應用時,將單核內的可重構計算模塊、可重構存儲模塊、可重構控制邏輯模塊根據(jù)待處理應用所包含的基礎算核進行配置,同時互連模塊按照所述待處理應用基于基礎算核的硬件實現(xiàn)將配置后的單核進行互連,以實現(xiàn)對該應用的硬件實現(xiàn)。本實施例并不限定單核的個數(shù)為16個,其可以為根據(jù)不同的應用進行相應的預先設定,以使得單核的個數(shù)能夠滿足對不同應用的實現(xiàn)??芍貥嬘嬎隳K21的主要功能是密集計算,由粗粒度計算單元構成,比如定/浮點計算單元、移位單元、寄存延遲單元和多路選擇單元等,這些單元根據(jù)應用需要,按特定比例和順序排列組成可重構陣列形式??芍貥嬘嬎隳K可以根據(jù)應用需要,實現(xiàn)不同位寬的定浮點加、減、乘、除、開方、對數(shù)和三角函數(shù)等功能,或者其他更大規(guī)模的組合計算功能。本實施例公開的可重構陣列的可重構功能,就是通過各個單核的可重構計算模塊根據(jù)不同的應用的需要而實現(xiàn)的,當其面臨一個應用時,根據(jù)該應用的基本操作進行配置,而當其面臨其他應用時,根據(jù)其他應用的基本操作進行配置??芍貥嫶鎯δK22主要功能是輸入/輸出數(shù)據(jù)緩沖和計算中間結果緩存,其基本單元是雙端口 SRAM塊,配合可重構細粒度邏輯單元陣列可實現(xiàn)可變寬度深度和可變存取方式,如隨機存取、單路數(shù)據(jù)緩存輸出FIFO、轉置等。該模塊實現(xiàn)在對應用的處理過程中,對運算的中間結果進行緩存,同時對需要進行計算的數(shù)據(jù)進行緩存??芍貥嬁刂七壿嬆K23主要功能是實現(xiàn)一些邏輯控制功能,如與、或、非、異或、地址產生函數(shù)和狀態(tài)機等。配置模塊24用于控制單核的行為和單核間通信等,包含一個狀態(tài)機用于初始化; 同時,為了降低功耗,該內核還支持多級時鐘頻率控制和多電壓的供電管理,可以根據(jù)應用映射情況(如單核內不同的負載情況)來調整單核內的時鐘頻率和工作電壓(甚至深度休眠)以達到節(jié)省功耗的目的。例如,當前的負載情況較小,無需用到全部的單核進行工作時,配置模塊24配置單核進入休眠狀態(tài),以節(jié)省功耗。配置模塊根據(jù)面臨的應用集合對單核內的各個模塊進行配置,使得可重構計算陣列的單核結構可以根據(jù)不同的應用進行變化,并且,單核間的連接關系通過核間通信的改變而改變,以適應不同的應用需求。當其需要順次處理一個應用集合中的多個應用時,首先根據(jù)第一個應用的特點配置單核的各個模塊,然后進行單核間的連接,當?shù)谝粋€應用處理完成后,通過狀態(tài)機對單核進行初始化,將單核恢復到初始狀態(tài),然后再依據(jù)下一個應用的特點進行配置。數(shù)據(jù)通路交換開關25和控制信號交換開關26將上述模塊組合成單核結構。進一步的,本實施例中的可重構陣列還包括輸入輸出I/O模塊13,即I/O接口,主要負責HRCA同其他可重構計算陣列和其他片外資源的通信,例如處理器、存儲器等。通過提供對片外的高通信帶寬來平衡芯片內部計算速度和對片外存儲的大數(shù)據(jù)量需求。為獲得高通信帶寬,I/O模塊內部可以集成高速的通信接口,如DDR3/QDR-SRAM/PCI-E控制器等。另外,HRCA芯片還可通過I/O模塊直連獲得更大規(guī)模的多核擴展。理論上HRCA可由單核經互連模塊和I/O模塊擴展成任意規(guī)模(核的數(shù)量)的多核陣列,這種擴展是通過一種支持多時鐘域數(shù)據(jù)交換的異步互連單元實現(xiàn)的。HRCA可以是同構結構,即每個單核都是完全相同的結構,也可以是異構結構,即陣列中的單核具有不同的結構。陣列中每個單核都具有一致的接口結構。互連模塊12主要功能是單核之間以及同I/O接口之間的通信。其結構如圖3所示,其中包括異步緩沖區(qū)31、輸入端口 32、輸出端口 33、輸入信號互聯(lián)網絡34和輸出信號互聯(lián)網絡35。多個單核間是異步工作方式,處于不同的時鐘域,因此,采用異步緩沖區(qū)31作為不同時鐘域之間的數(shù)據(jù)交換。輸入信號互連網絡34和輸出信號互連網絡35用于實現(xiàn)互連模塊12在多個方向上的數(shù)據(jù)交換和基于單核的任意擴展,輸入端口 32用于接收原始數(shù)據(jù),輸出端口 33用于輸出處理后的最終數(shù)據(jù)。本實施例公開的可重構計算陣列HRCA直接面對應用算法的實現(xiàn),不以傳統(tǒng)的指令為基礎,而是采用算法到結構的空間映射方式,直接將應用分解成基礎算核集合,該基礎算核集可以由陣列中的多個單核來支持。實現(xiàn)應用的各算核之間的連接關系嚴格遵守算法執(zhí)行過程中對數(shù)據(jù)的加工處理過程,而各單核間的連接也完全依照應用中數(shù)據(jù)流處理的投入產出關系來實現(xiàn),因此,對應用的支持可以獲得最高的效率。并且,由于其采用的單核的可重構特性,所以能夠根據(jù)不同的應用進行靈活的構建,實現(xiàn)了靈活性和高效性的統(tǒng)一。應用算法在HRCA中的實現(xiàn)可概括成圖4所示過程。應用算法對原始數(shù)據(jù)的處理可分解成多個算核組成的集合,這些算核可以是基礎算核也可以是更高階的算核。算核由HRCA中的單核實現(xiàn),而算核間的數(shù)據(jù)通信則由互連模塊實現(xiàn),原始數(shù)據(jù)的輸入和最終數(shù)據(jù)的輸出都是通過IO模塊實現(xiàn)的。本發(fā)明實施例同時公開了一種可重構計算陣列構建方法,其流程如圖5所示,包括步驟S51、對某一應用集合內的應用算法進行分析,獲得與該應用集合對應的基礎算核集合;所述基礎算核為對所述某一應用領域內的應用算法進行分析后得到的基本操作 的硬件實現(xiàn)。通過上述步驟,確定處理該應用所需要用到的基礎算核。步驟S52、參照基礎算核集的硬件結構構建預設個數(shù)的單核內部的可重構計算模塊、可重構存儲模塊和可重構控制邏輯模塊,使所述預設個數(shù)的單核能夠支持所述應用集合所包含的全部基礎算核;基礎算核為預先對各個應用算法進行分析,確定出基本操作,用于實現(xiàn)所述基本操作的算核,基礎算核的類型至少包括加基礎算核、減基礎算核、乘基礎算核、除基礎算核、開方基礎算核、對數(shù)基礎算核和三角函數(shù)基礎算核。當然,還可以包括實現(xiàn)其他較為復雜的基本操作算核,或者將基本操作進行結合后的操作對應的算核?;A算核為單核通過支持不同時鐘域數(shù)據(jù)交換的互連模塊相互連接構成。以及基礎算核集的硬件結構,將與該應用集合對應的單核內部的各個模塊進行構建,使得這些單核能夠支持該應用集合包含的全部基礎算核。步驟S53、參考所述應用集合內各應用基于基礎算核集的硬件實現(xiàn),將所述預設個數(shù)的單核通過互連模塊連接構成可重構計算陣列。在可重構陣列構建時,需要對其對應的應用集合內的應用進行統(tǒng)一考慮,將每一個應用在硬件上的實現(xiàn)形式進行綜合,對基礎算核集內的各個基礎算核都通過單核進行支持,然后在硬件資源上將其能夠應用到連接形式進行預先設置,也就是將待處理應用基于基礎算核集的硬件上實現(xiàn),當需要實現(xiàn)其中一個應用時,按照上述過程將單核進行配置后,根據(jù)該應用的特點,連通實現(xiàn)該應用的各個單核,以實現(xiàn)對該應用的硬件實現(xiàn)。通過上述步驟,實現(xiàn)利用單核構建可重構計算陣列的目的。圖6所示為按照圖5所述過程構建可重構陣列后,在該可重構陣列上構建一個待處理應用對應的硬件結構的過程,包括步驟S61、確定待處理應用所包含的基礎算核;步驟S62、參考所述待處理應用基于基礎算核集的硬件實現(xiàn),將所述待處理應用所對應的單核配置成所述待處理應用對應的基礎算核,并經由互連模塊連接構成實現(xiàn)所述待處理應用的硬件結構。以圖I所示結構為例,16個單核可以實現(xiàn)應用集合內的全部應用,而對應其中一個應用時,可能只需從中選取I個、5個或其他個數(shù)的單核。所以當確定待處理應用后,同時需要確定該待處理應用需要用到哪些單核,然后將這些單核配置成該待處理應用所對應的基礎算核,最后,根據(jù)該待處理應用的特點,將各個單核進行互連,最終構成與待處理應用對應的硬件結構,從而實現(xiàn)利用可重構陣列硬件實現(xiàn)應用算法的目的。本發(fā)明實施例公開的方法,采用算法到結構的空間映射的方式,直接構建與應用對應的可重構陣列結構,使得該結構能夠快速的對應用進行處理,提高了結構的處理效率。并且,該構建過程可以適應于任何一種應用的場景,使用方便靈活,其構建出的陣列結構同樣具有該特點。本說明書中各個實施例采用遞進的方式描述,每個實施例重點說明的都是與其他實施例的不同之處,各個實施例之間相同相似部分互相參見即可。對于實施例公開的裝置而言,由于其與實施例公開的方法相對應,所以描述的比較簡單,相關之處參見方法部分說明即可。對所公開的實施例的上述說明,使本領域專業(yè)技術人員能夠實現(xiàn)或使用本發(fā)明。對這些實施例的多種修改對本領域的專業(yè)技術人員來說將是顯而易見的,本文中所定義的 一般原理可以在不脫離本發(fā)明的精神或范圍的情況下,在其它實施例中實現(xiàn)。因此,本發(fā)明將不會被限制于本文所示的這些實施例,而是要符合與本文所公開的原理和新穎特點相一致的最寬的范圍。
權利要求
1.一種可重構計算陣列,其特征在于,包括 預設個數(shù)的單核和互連模塊,其中任意一個單核包括可重構計算模塊、可重構存儲模塊、可重構控制邏輯模塊和配置模塊,單核內的可重構計算模塊、可重構存儲模塊和可重構控制邏輯模塊參照某一應用集合所包含的基礎算核集的硬件結構構建,所述預設個數(shù)的單核能夠支持所述應用集合所包含的全部基礎算核,所述基礎算核為,對某一應用集合的應用算法進行分析后獲得的基本操作的硬件實現(xiàn); 所述互連模塊用于,參考所述應用集合內各應用基于基礎算核集的硬件實現(xiàn),對所述預設個數(shù)的單核進行互連。
2.根據(jù)權利要求I所述的陣列,其特征在于,當實現(xiàn)所述應用集合中的某一待處理應用時,與所述待處理應用對應的單核內的可重構計算模塊、可重構存儲模塊、可重構控制邏輯模塊根據(jù)所述待處理應用所包含的基礎算核進行配置; 所述互連模塊參考所述待處理應用基于基礎算核集的硬件實現(xiàn),按照所述待處理應用將配置后的單核進行互連,以實現(xiàn)所述待處理應用。
3.根據(jù)權利要求2所述的陣列,其特征在于,所述陣列還包括輸入輸出I/O模塊,所述輸入輸出I/O模塊用于,所述可重構計算陣列與其他可重構計算陣列或其他片外資源進行通信。
4.根據(jù)權利要求3所述的陣列,其特征在于,所述預設個數(shù)的單核具有統(tǒng)一的接口,所述預設個數(shù)單核中的任意一個單核與其他單核為同構結構或異構結構。
5.一種可重構計算陣列構建方法,其特征在于,包括 對某一應用集合內的應用算法進行分析,獲得與該應用集合對應的基礎算核集合; 參照基礎算核集的硬件結構構建預設個數(shù)的單核內部的可重構計算模塊、可重構存儲模塊和可重構控制邏輯模塊,使所述預設個數(shù)的單核能夠支持所述應用集合所包含的全部基礎算核; 參考所述應用集合內各應用基于基礎算核集的硬件實現(xiàn),將所述預設個數(shù)的單核通過互連模塊連接構成可重構計算陣列。
6.根據(jù)權利要求5所述的方法,其特征在于,還包括 當實現(xiàn)某一待處理應用時,確定待處理應用所包含的基礎算核;參考所述待處理應用基于基礎算核集的硬件實現(xiàn),將所述待處理應用所對應的單核配置成所述待處理應用對應的基礎算核,并經由互連模塊連接構成實現(xiàn)所述待處理應用的硬件結構。
全文摘要
本發(fā)明公開了一種可重構計算陣列及構建方法,包括預設個數(shù)的單核和互連模塊,其中任意一個單核包括可重構計算模塊、可重構存儲模塊、可重構控制邏輯模塊和配置模塊,可重構計算模塊、可重構存儲模塊和可重構控制邏輯模塊參照某一應用集合所包含的基礎算核集的硬件結構構建,預設個數(shù)的單核能夠支持應用集合所包含的全部基礎算核,互連模塊參考應用集合內各應用基于基礎算核集的硬件實現(xiàn),對預設個數(shù)的單核進行互連。本發(fā)明實施例公開的可重構計算陣列實現(xiàn)了直接映射應用算法的硬件結構的目的,提高了應用的處理效率。并且,由于陣列自身的可重構性,使得硬件結構可以靈活的對應各個應用,提高了陣列的靈活性。
文檔編號G06F15/80GK102799563SQ201110138138
公開日2012年11月28日 申請日期2011年5月26日 優(yōu)先權日2011年5月26日
發(fā)明者鄔江興, 羅興國, 曹偉, 斯雪明, 張興明, 祝永新, 龐建民, 雷詠梅, 張錚, 張帆, 祝衛(wèi)華, 劉超, 李弋, 陳韜, 齊寧, 倪明, 王伶俐, 謝光偉, 魏曉, 談滿堂 申請人:上海紅神信息技術有限公司, 中國人民解放軍信息工程大學