基于循環流水計算的片上陣列系統的制作方法
【專利摘要】本發明提供了一種基于循環流水計算的片上陣列系統,包括片上總線協議接口接收并解釋高級精簡指令集處理器的命令流,翻譯成相應的控制代碼后,對內嵌式直接存儲器訪問單元、內部存儲器、陣列控制單元進行配置和協調;處理單元陣列為4乘4的處理單元組成的陣列,每行處理單元之間由一級路由器連接,處理單元陣列在陣列控制單元的控制下進行循環流水運算,每個處理單元接收路由器發送的配置指令來完成相應的計算;內部存儲器分成并行工作的兩個存儲體;整個處理單元陣列通過內嵌式直接存儲器訪問單元與外部存儲器進行數據的交換。本發明能夠實現明顯的性能增益,并在實現復雜度、運行效率與通用性中達到了一個權衡。
【專利說明】基于循環流水計算的片上陣列系統
【技術領域】
[0001]本發明涉及一種基于循環流水計算的片上陣列系統。
【背景技術】
[0002]基于循環流水計算的片上陣列架構旨在將多重循環程序直接通過粗粒度的處理單元陣列形成硬件流水線執行,程序以流水化的方式實現。這樣,循環可以很自然地映射到陣列上,同時循環被分解成各個部分,循環控制條件由陣列控制單元完成,循環體固定在處理單元組成的運算陣列上進行流水運算。
[0003]可重構計算平臺的適用性來自其數據驅動的陣列自然地支持了空間局部計算,把計算結構有效地映射到數據驅動的體系結構上是近年來研究的熱點,硬件資源的增加需要有效的映射算法的支持,與傳統的資源約束問題相比,怎樣利用大量的硬件資源成為一個新的問題。映射循環最有效的優化方式是循環流水化,循環流水化對于提高性能起著非常重要的作用。因為在大部分可重構體系結構中實現流水化的存儲單元已經在片上,可以充分利用這些資源。就數據流計算而言,通過數據流軟件流水化可以有效地實現循環執行方式,但要達到最大的吞吐率需要依靠有效的平衡技術。對于數據驅動體系結構,我們可以利用這種結構的本質特性在控制流和數據流的基礎上來調度操作。
[0004]編譯上一般使用數據流軟件流水化技術和其它的軟件流水化方法實現循環流水化,其中一種稱之為自循環流水化的技術,這種技術能夠實現動態的循環流水化,與數據流軟件流水化相比可以降低平衡需求。在數據驅動的體系結構上循環流水化不需要操作的調度,只需建立一種結構把循環體中的操作和執行循環迭代的硬件結構連接在一起。自循環流水化技術相對于傳統數據流軟件流水化,最大的區別就是最初控制循環的計數器可以分為兩個計數器,這兩個計數器根據數據流的流動形成同步。這樣就有兩條獨立的索引值來訪問操作數,這種技術適用于各類循環和各個嵌套的循環結構。
[0005]循環自動流水化技術與自循環流水化相近,但它比自循環流水化與硬件聯系得更緊密,直接為應用提供了高效的執行模型。基于循環流水計算的片上陣列架構在硬件上就保證了從高級語言到體系結構的直接映射,循環中的每一個操作可以用基于循環流水計算的片上陣列架構中的處理單元處理單元實現(這種實現稱為操作綁定)。一種算法的核心循環所表示的數據流圖,通過操作綁定的過程映射到基于循環流水計算的片上陣列架構硬件上,利用數據驅動的方式自主完成循環的計算任務,這種技術便稱為循環自動流水化。循環自動流水化技術為應用提供了高效的流水化執行方式,并為編譯減輕了負擔。
[0006]基于循環流水計算的片上陣列架構在實現循環自動流水化的時候,就是采用了循環自動流水化技術。針對一個作加法運算的循環,陣列控制單元根據指針狀態控制操作數的提取以及配置指令的轉發,這樣處理單元就可以在相應指針所對應的配置指令下作加法運算。隨后陣列控制單元源源不斷根據指針狀態控制操作綁定,實現循環自動流水化。
[0007]在傳統可重構計算系統中,一般都是對同行或者同列處理單元進行配置,以獲得操作數以及操作方式。這種配置方法不利于實現循環自動流水化計算,因為陣列中每一次的計算都需要提供不同的配置指令協同完成。在基于循環流水計算的片上陣列架構中,處理單元本身不直接獲得配置指令,它是由一個成為陣列控制單元的模塊進行配置,根據循環的深度以及各級陣列的指針,來決定向每一級處理單元提供什么樣的配置方式。這種配置方式無疑簡化了處理單元的工作,讓它專注于計算而無需參與控制流,同時也讓循環自動流水化計算更加易于實現。
[0008]基于循環流水計算的片上陣列架構適合處理順序執行的循環運算,這就需要該循環算法是無循環迭代相關的循環,要適用于循環迭代相關的循環還需要進一步的研究。
【發明內容】
[0009]本發明的目的在于提供一種基于循環流水計算的片上陣列系統,能夠實現明顯的性能增益,并在實現復雜度、運行效率與通用性中達到了一個權衡。
[0010]為解決上述問題,本發明提供一種基于循環流水計算的片上陣列系統,包括高級精簡指令集處理器、片上總線協議接口、處理單元陣列、路由器、內部存儲器、內嵌式直接存儲器訪問單元、外部存儲器、陣列控制單元,其中,
[0011]所述片上總線協議接口,用于接收并解釋高級精簡指令集處理器的命令流,翻譯成相應的控制代碼后,對所述內嵌式直接存儲器訪問單元、內部存儲器、陣列控制單元進行配置,并協調其進行工作;
[0012]所述處理單元陣列為4乘4的處理單元組成的陣列,每行處理單元之間由一級路由器連接,處理單元陣列用于在陣列控制單元的控制下進行循環流水運算,數據流采取順序執行方式,逐行傳遞下去直至完成運算,每個處理單元,用于接收路由器發送的配置指令來完成相應的計算,每個處理單元都具有乘、加等基本運算功能;
[0013]每一級的路由器具有互聯預測功能以及配置指令再生功能,用于對原始配置指令進行處理再轉發到處理單元中;
[0014]所述內部存儲器分成并行工作的兩個存儲體,一個存儲體用于存儲處理單元陣列的原始配置指令以及待處理的操作數;另一個存儲體用于存儲處理單元陣列的運算結果;
[0015]所述內嵌式直接存儲器訪問單元是高級精簡指令集處理器的內嵌式直接存儲器訪問控制器件,整個處理單元陣列通過內嵌式直接存儲器訪問單元與外部存儲器進行數據的交換;
[0016]所述陣列控制單元,用于在片上總線協議接口的作用下,通過對四級路由器的控制實現對整個處理單元陣列的數據流的操作。
[0017]進一步的,在上述系統中,所述片上總線協議接口用于與高級精簡指令集處理器進行多周期指令的交互;配置內嵌式直接存儲器訪問模塊,實現外部同步動態隨機存取外部存儲器與內部存儲器的交互,包括配置指令和操作數的讀取以及已處理數據的寫回;配置陣列控制單元,使陣列控制單元能通過路由器控制處理單元陣列的數據流,正確完成循環流水運算,并且最高效率地使用處理單元;及配置內部存儲器,使內部存儲器完成將處理單元陣列的處理結果寫回內部緩存。
[0018]進一步的,在上述系統中,所述內嵌式直接存儲器訪問單元,用于實現外部存儲器與內部存儲器之間配置指令和數據的雙向傳輸。
[0019]進一步的,在上述系統中,每個處理單元的三個輸入均來源于路由器,所述輸入包括I個配置指令以及2個操作數,每個處理單元包括I個乘法器、I個移位器、配置指令寄存器、輸出結果寄存器以及處理單元狀態寄存器。
[0020]進一步的,在上述系統中,所述配置指令用于指示I個乘法器、I個移位器、配置指令寄存器、輸出結果寄存器以及處理單元狀態寄存器的工作模式。
[0021]進一步的,在上述系統中,所述工作模式包括源操作數的選取、目的操作數的選取、算術邏輯單元計算的方式。
[0022]進一步的,在上述系統中,所述路由器,用于預測處理單元陣列中哪個處理單元工作,以及操作數如何分配。
[0023]進一步的,在上述系統中,每一級的路由器用于獲取下一行處理單元返回的工作狀態,路由器根據下一行處理單元的工作狀態選擇自左邊開始的第一個空閑的處理單元;一旦選中一個空閑的處理單元,路由器將來自上一行的處理單元輸出的兩個中間結果送給下一行的處理單元進行計算,其中,如果上一行的處理單元有多個中間結果送入下一行處理單元進行計算,優先選擇相鄰兩個中間結果到下一行的處理單元中進行運算,路由器每次配置的處理單元做相同的運算。
[0024]進一步的,在上述系統中,所述陣列控制單元,用于向路由器發送處理單元需要的控制信號以及配置指令,陣列控制單元內部有四個指向配置指令的指針變量,分別代表四級路由器的配置狀態,其中,路由器向處理單元發送完成配置指令及操作數后,表示路由器完成了一次對處理單元的配置,此時該路由器對應的指針變量自動加1,從而表示陣列控制單元將向該路由器發送第二次配置指令,在陣列控制單元初始工作時,四個指針變量均清空為零,表明陣列控制單元只對四級路由器發送相同的第一次的原始配置指令,由每一級的路由器截取原始配置指令相應位,生成一個新的配置指令送給該路由器控制的處理單元中去,路由器一旦完成對處理單元的配置,并不需要等待處理單元完成工作,陣列控制單元就會對該路由器發出下一次的配置指令。
[0025]與現有技術相比,本發明通過所述片上總線協議接口,用于接收并解釋高級精簡指令集處理器的命令流,翻譯成相應的控制代碼后,對所述內嵌式直接存儲器訪問單元、內部存儲器、陣列控制單元進行配置,并協調其進行工作;所述處理單元陣列為4乘4的處理單元組成的陣列,每行處理單元之間由一級路由器連接,處理單元陣列用于在陣列控制單元的控制下進行循環流水運算,數據流采取順序執行方式,逐行傳遞下去直至完成運算,每個處理單元,用于接收路由器發送的配置指令來完成相應的計算,每個處理單元都具有乘、加等基本運算功能;每一級的路由器具有互聯預測功能以及配置指令再生功能,用于對原始配置指令進行處理再轉發到處理單元中;所述內部存儲器分成并行工作的兩個存儲體,一個存儲體用于存儲處理單元陣列的原始配置指令以及待處理的操作數;另一個存儲體用于存儲處理單元陣列的運算結果;所述內嵌式直接存儲器訪問單元是高級精簡指令集處理器的內嵌式直接存儲器訪問控制器件,整個處理單元陣列通過內嵌式直接存儲器訪問單元與外部存儲器進行數據的交換;所述陣列控制單元,用于在片上總線協議接口的作用下,通過對四級路由器的控制實現對整個處理單元陣列的數據流的操作,能夠實現明顯的性能增益,并在實現復雜度、運行效率與通用性中達到了一個權衡。
【專利附圖】
【附圖說明】[0026]圖1是本發明一實施例的基于循環流水計算的片上陣列系統的結構圖;
[0027]圖2是本發明一實施例的處理單元的結構圖;
[0028]圖3是本發明一實施例的基于循環流水計算的內部指令格式;
[0029]圖4是本發明一實施例的16乘16乘法器結構圖;
[0030]圖5是本發明一實施例的8乘8乘法器結構圖;
[0031]圖6是本發明一實施例的處理單元陣列的結構圖;
[0032]圖7是本發明一實施例的路由器的結構圖;
[0033]圖8是本發明一實施例的陣列控制單元的基本工作原理圖;
[0034]圖9是本發明一實施例的內部存儲器的結構圖。
【具體實施方式】
[0035]為使本發明的上述目的、特征和優點能夠更加明顯易懂,下面結合附圖和【具體實施方式】對本發明作進一步詳細的說明。
[0036]如圖1?9所示,本發明提供一種基于循環流水計算的片上陣列系統,包括高級精簡指令集處理器2、片上總線協議接口 1、處理單元陣列6、路由器62、內部存儲器5、內嵌式直接存儲器訪問單元4、外部存儲器7、陣列控制單元3,其中,
[0037]所述片上總線協議接口 1,用于接收并解釋高級精簡指令集處理器的命令流,翻譯成相應的控制代碼即控制信號后,對所述內嵌式直接存儲器訪問單元4、內部存儲器5、陣列控制單元3進行配置,并協調其進行工作;
[0038]如圖6所示,所述處理單元陣列6為4乘4的處理單元61組成的陣列,每行處理單元61之間由一級路由器62連接,處理單元陣列6用于在陣列控制單元3的控制下進行循環流水運算,數據流采取順序執行方式,逐行傳遞下去直至完成運算,每個處理單元61,用于接收路由器62發送的配置指令來完成相應的計算,每個處理單元61都具有乘、加等基本運算功能;具體的,所述處理單元陣列6為核心計算模塊,處理單元形成陣列后能通過并行計算大規模地提高運算效率。具體的,圖1中,為簡單起見,處理單元陣列中省略了部分單元模塊。
[0039]每一級的路由器62具有互聯預測功能以及配置指令再生功能,用于對原始配置指令進行處理再轉發到處理單元61中;具體的,如圖7所示,在設計的時候,第一級路由器和其余三級路由器是有所區別的,第一級路由器有8個數據輸入口,操作數來源內部存儲器;而其余三級路由器有4個數據輸入口,操作數來源上級的四個處理單元。因為基于循環流水計算的片上陣列架構每行只有4個處理單元,所以除第一級路由器外其余三級路由器只需要4個數據輸入口。但是每級路由器的數據輸出口都是8個,這是因為每個處理單元需要2個操作數,一行4個處理單元總共最多可以完成8個操作數的運算。路由器除數據輸入輸出口外,還有其余以下幾個端口:內容-輸入,配置指令輸入,源自陣列控制單元,四輸入;處理單元-狀態,處理單元狀態輸入,源自路由器所控制的四個處理單元,四輸入;內容-輸出,配置指令輸出,目的地為工作處理單元,四輸出;指針-輸出,路由器狀態指針,輸出至陣列控制單元。
[0040]如圖9所示,所述內部存儲器5分成并行工作的兩個存儲體,一個存儲體用于存儲處理單元陣列6的原始配置指令以及待處理的操作數,用來解決處理單元陣列6與外部存儲器速率不匹配的問題;另一個存儲體用于存儲處理單元陣列的運算結果即已處理的數據,再經由直接存儲器訪問寫回外部存儲器,這樣可以緩解外部存儲器的速度瓶頸,使得處理單元陣列有較高的利用率。這兩個存儲體可以并行工作:即一個在存儲的同時另一塊在進行輸出,這樣可以降低陣列等待數據的時間,提高了處理單元陣列的效率。圖9中,輸入接口:組-控制,輸入自片上總線接口控制器,組的選擇信號,O選擇組0,1選擇組I ;控制-存儲體O,輸入自片上總線接口控制器,包含有讀寫控制的地址信號,存儲體O ;控制-存儲體1,輸入自片上總線接口控制器,包含有讀寫控制的地址信號,存儲體I ;控制-結果,輸入自片上總線接口控制器,包含有讀寫控制的地址信號,結果;控制-直接存儲器訪問,輸入自直接存儲器訪問,包含有讀寫控制的地址信號,直接存儲器訪問;輸入-直接存儲器訪問,輸入自直接存儲器訪問,直接存儲器訪問向內部存儲器寫數據的接口;輸入-結果,輸入自可重構計算陣列,從陣列發過來的結果數據;內部存儲器-控制器,輸入自陣列控制單元,決定如何輸出數據。輸出接口:輸出-存儲體O,輸出至處理單元陣列的第一級路由器,數據為處理單元陣列所需的操作數,從根據存儲體O的控制信號,產生的存儲體O輸出;輸出-存儲體1,輸出至處理單元陣列的陣列控制單元,數據為處理單元陣列所需的配置指令,從根據存儲體I的控制信號,產生的存儲體I輸出;輸出-接存儲器訪問,輸出至直接存儲器訪問,向直接存儲器訪問輸出數據的接口。
[0041]所述內嵌式直接存儲器訪問單元4是高級精簡指令集處理器2的內嵌式直接存儲器訪問控制器件,整個處理單元陣列6通過內嵌式直接存儲器訪問單元4與外部存儲器7進行數據的交換,而不是通過與高級精簡指令集處理器2的接口來傳送,能更多地利用到處理單元陣列6的硬件加速功能而不占用高級精簡指令集處理器2的運算時間。
[0042]所述陣列控制單元3,用于在片上總線協議接口 I的作用下,通過對四級路由器62的控制實現對整個處理單元陣列6的數據流的操作。具體的,處理單元在陣列控制單元的控制下進行循環流水運算,數據流采取順序執行方式,逐級傳遞下去直至完成運算。仿真結果顯示,本發明的基于循環流水計算的片上陣列架構與通用處理器比較可以達到較明顯的性能增益,并在實現復雜度、運行效率與通用性中達到了一個權衡。
[0043]優選的,所述片上總線協議接口 I用于與高級精簡指令集處理器2進行多周期指令的交互;配置內嵌式直接存儲器訪問模塊4,實現外部同步動態隨機存取外部存儲器7與內部存儲器5的交互,包括配置指令和操作數的讀取以及已處理數據的寫回;配置陣列控制單元3,使陣列控制單元3能通過路由器62控制處理單元陣列6的數據流,正確完成循環流水運算,并且最高效率地使用處理單元;及配置內部存儲器5,使內部存儲器5完成將處理單元陣列6的處理結果寫回內部緩存。
[0044]優選的,所述內嵌式直接存儲器訪問單元4,用于實現外部存儲器7與內部存儲器5之間配置指令和數據的雙向傳輸。考慮一次基于循環流水計算的片上陣列系統的運行:陣列控制單元3通過路由器62對處理單元陣列6進行配置,處理單元陣列6取到位于內部存儲器5中的數據進行操作,如果這些配置指令與數據完全由高級精簡指令集處理器2來提供,則會造成數據傳輸效率的下降,所以這里通過內嵌式直接存儲器訪問單元4進行外部存儲器與內部存儲器之間的控制字及數據傳輸,減少處理器工作拖延,高級精簡指令集處理器2可以重新排程去處理其他事務,系統的整體效率提高。
[0045]優選的,每個處理單元61的三個輸入均來源于路由器62,所述輸入包括I個配置指令以及2個操作數,如圖2所示,每個處理單元61包括I個乘法器、I個移位器、配置指令寄存器、輸出結果寄存器以及處理單元狀態寄存器以及結果的保存。所述配置指令用于指示I個乘法器、I個移位器、配置指令寄存器、輸出結果寄存器以及處理單元狀態寄存器的工作模式。所述工作模式包括源操作數的選取、目的操作數的選取、算術邏輯單元計算的方式。可以看出,處理單元是在配置指令的作用下,完成源操作數和目的操作數的選取,算術邏輯單元計算以及結果的保存。處理單元的操作數來源有兩種方式,第一種就是路由器轉發的操作數,第二種就是來自配置指令定義的立即數,這一方式更加增強了處理單元計算的靈活性。具體的,這里內部寄存器包括配置指令寄存器、輸出結果寄存器以及處理單元狀態寄存器。一條配置指令可控制處理單元在一個周期內完成復雜的操作,如獲取上一周期相鄰的處理單元產生的兩個中間值并相乘,將結果輸出到下一級的路由器中去。處理單元根據算術邏輯單元中操作數狀態,把當前的工作狀態返回給上級路由器,因此路由器只會把操作數送往空閑的處理單元中去。相比其它可重構處理單元而言,本實施例的處理單元更加簡化一些,主要得益于互連方式的簡化,就省去了多路選擇器的設計,讓處理單元專門作運算。在基于循環流水計算的片上陣列架構中,處理單元之間互連是由路由器來決定的,它會根據每個處理單元的狀態寄存器來決定是否由該處理單元來完成運算操作。狀態的標志位是根據處理單元的操作數狀態來決定的,當兩個操作數就位時,處理單元就發出一個 忙碌信號給路由器,這就顯示該處理單元處于工作中,路由器在選取處理單元進行運算的時候就不會考慮狀態為工作中的處理單元單元。這種設計一是可以簡化互連設計,更大優點是能夠智能的選擇空閑處理單元作運算,大大提高陣列單元利用率,也更有利于加快流水化運算。如圖3所示,在配置指令的設計上,由于定義每個處理單元的配置寄存器的寬度為32位,因此基于循環流水計算的片上陣列架構的配置指令也設計為32位。從圖3中的格式2上可以看出,目前實際使用了 25位,其余保留位可以待后續功能拓展加以修改。其中,復數/實數:復數和實數模式的選擇,主要應用于快速傅里葉變換運算;變換-方向:移位的方向;變換-位數:移位的位數;算術邏輯單元-指令,減法-指令:處理單元中的算術邏輯單元所作操作數的編號,乘法、加法等;常數:存放常數;保留:保留位。圖3中的格式I為帶立即數和算術邏輯單元的配置指令格式,配置指令低16位是立即數,支持立即數的操作;而圖3中的格式2中為不帶立即數的配置指令格式,它的第15-12位配合第19-16位指示算數邏輯運算單元的操作。除此之外,兩者的高16位各部分定義相同。對算術邏輯單元操作段的配置指令來說,共有四類功能配置,以下是它涵蓋的各種操作:立即數操作:常數裝載,常數與……;算術類指令:加、減、逆減、常數乘、乘;邏輯類指令:與、或、異或;其他類指令:與結果累加、裝載O、回合結束、通過、保持。本實施例吸取了莫菲西斯結構中可重構處理單元的所有優點,能夠完成莫菲西斯結構中所擅長的各種運算操作。同時由于互連方式得到了簡化,可以看出處理單元本身得到了簡化,基于處理單元的配置指令也有了更多可拓展配置指令使用。
[0046]詳細的,圖4為本實施例的16乘16乘法器結構圖,為了加快乘法的執行速度,在每個處理單元中設計硬件乘法器,處理單元單元的核心部件就是乘法器和移位器部分。因此在處理單元的設計中,硬件乘法器的設計是考慮的重點。所設計的乘法器應該既能支持一般的實數乘法,又要滿足復數乘法。由于基于循環流水計算的片上陣列架構的粒度是16位,所設計的16乘16的乘法器可以用4個8乘8的乘法器實現,這樣可以以較少的代價靈活實現不同的乘法運算。和實數乘法一樣,本實施例能夠提供兩種類型的復數乘法,即操作數與立即數相乘,操作數與操作數相乘。這一設計增大了復數乘法的靈活性,而且配置指令中的立即數也為16位,與莫菲西斯結構中12位相比,和算術邏輯單元更加兼容,有利于配置指令的設計。圖4中為4個8乘8乘法器的組織結構圖,包括數據輸入單元,乘法器單元,輸出控制單元。當算術邏輯單元執行復數乘法時,二元操作數各自拆分為8位實部和8位虛部,按照特定次序送入8乘8乘法器,結果輸出直接傳入加法器3,得到實部和虛部;當算術邏輯單元執行實數乘法時,二元操作數各自拆分為高8位和低8位,按照圖中所示次序送入8乘8乘法器,結果輸出給加法器2、加法器1,分別得到乘積結果的第31-24位和第23_8位,低8位由二元操作數低位乘法結果的第7-0位直接輸出。輸出選擇單元是通過配置指令來控制的。可見8乘8的定點乘法器是算術邏輯單元的核心部件,它完成一次乘法操作的周期直接影響整個處理器的運算性能。
[0047]圖5表示8乘8乘法器結構圖,采用了改進的布斯乘法算法,它可以減少一半的乘法乘積項,大大提高運算速度。如圖所示,主要由4個模塊組成:布斯乘法編碼器,部分積生成電路,部分積規約電路,16位加法器。
[0048]為了加快乘法的處理速度,要求減少部分積的數目。這種技術實際上是對乘數進行再編碼來加快部分積的形成,最典型的就是布斯乘法算法。布斯乘法算法經過改進以后又形成了多位掃描的改進布斯乘法算法。這些算法實際上是對乘數進行重新編碼,即通過冗余的帶符號數產生新的乘數表示形式,再按照一般的乘法步驟進行操作。
[0049]改進的布斯乘法算法能夠將部分積的個數減少一半,即由8個減少為4個。具體編碼過程是:乘數按三位一組進行劃分,相互重疊一位。每一組的三位進行編碼,并形成一個部分積。所形成的部分積的數目等于乘數寬度的一半。編碼過程由最高有效位至最低有效位進行,進入編碼的輸入位是兩個當前的位和一個來自相鄰低位組的最高位。
[0050]優選的,所述路由器62,用于預測處理單元陣列中哪個處理單元61工作,以及操作數如何分配。每個處理單元返回一個狀態給上一級路由器,每一級的路由器62用于獲取下一行處理單元61返回的工作狀態,路由器62根據下一行處理單元61的工作狀態選擇自左邊開始的第一個空閑的處理單元61進行運算;一旦選中一個空閑的處理單元61,路由器62將來自上一行的處理單元61輸出的兩個中間結果送給下一行的處理單元61進行計算,其中,如果上一行的處理單元61有多個中間結果送入下一行處理單元61進行計算,優先選擇相鄰兩個中間結果到下一行的處理單元61中進行運算,路由器62。具體的,所述處理單元陣列中的處理單元用于做運算處理,而操作數由路由器指定。每一級路由器根據下一行處理單元的空閑狀態來決定把操作數送往哪個處理單元,這樣就能使得互聯更加智能簡單,同時提高了處理單元的利用率。片上總線協議接口 I并不直接控制處理單元陣列6操作,而是通過陣列控制單元3控制四級路由器62的配置指令,當做順序循環流水運算時,這四級配置指令完全一致,由各級路由器截取原始配置指令有效位,重新生成新的配置指令給路由器控制的下行的處理單元中去。同時為了增加通用性,可以通過改變配置指令,給各級路由器發送不同配置指令以實現處理單元作不同的運算操作。處理單元陣列中每次路由器配置的處理單元是做相同運算的,但是路由器可以多次配置不同處理單元,以使得同行處理單元分別完成不同運算,提高處理單元陣列的利用率,比如路由器對于下一行中的兩個處理單元進行配置作一個需要4個周期完成的運算操作,當這兩個處理單元在運算的時候,陣列控制單元會對路由器發送下一個配置指令,假定為I個周期的運算操作,這時候路由器可以選擇這行處理單元中空閑的另外兩個處理單元工作,這樣就實現了同行處理單元同時工作,但做不同的運算。
[0051]優選的,如圖8所示,所述陣列控制單元3,用于向路由器62 (路由器0、1、2、3)發送處理單元61需要的控制信號以及配置指令,陣列控制單元3內部有四個指向配置指令的指針變量,分別代表四級路由器62的配置狀態,其中,路由器62向處理單元61發送完成配置指令及操作數后,表示路由器62完成了一次對處理單元的配置,此時該路由器62對應的指針變量自動加I,從而表示陣列控制單元3將向該路由器62發送第二次配置指令,在陣列控制單元3初始工作時,四個指針變量均清空為零,表明陣列控制單元3只對四級路由器62發送相同的第一次的原始配置指令,由每一級的路由器62截取原始配置指令相應位,生成一個新的配置指令送給該路由器62控制的處理單元61中去,路由器62—旦完成對處理單元61的配置,并不需要等待處理單元61完成工作,陣列控制單元3就會對該路由器62發出下一次的配置指令。具體的,因為處理單元的操作數來源由路由器決定,而不是傳統可重構處理單元陣列中那樣由配置指令決定,所以原始配置指令完全可以有足夠位來決定運算操作順序,通過上述方法把多次運算操作方式傳遞下去,這也是拓展配置指令可以實現的功能。如6所述陣列控制單元控制了四級路由器的配置指令,進行順序循環流水運算時,這四級配置指令完全一致,由各級路由器截取原始配置指令有效位,重新生成新的配置指令給路由器控制的下一行的處理單元中。為了增加處理單元陣列的通用性,并不只滿足用于循環運算,可以通過改變配置指令,給各級路由器發送不同配置指令以實現處理單元作不同的運算操作。從整個陣列的角度看,除了路由器控制下的各行處理單元之間的數據流之夕卜,在陣列控制單元與路由器之間同時存在著控制流。數據流和控制流協同工作,完成陣列運算。圖8中,輸入接口:使能信號,陣列控制單元使能信號,源自片上總線接口控制器;指針,路由器指針信號,源自四級路由器,四輸入;內容輸入,配置指令,源自內部存儲器,四輸入。輸出接口:內部存儲器-控制,內部存儲器控制信號,決定如何向路由器發送操作數以及如何取配置指令到陣列控制單元;內容至路由器,輸出配置指令,目標為四級路由器,四輸出。
[0052]詳細的,二維離散余弦變換算法在所述基于循環流水計算的片上陣列系統上的的步驟包括:
[0053]步驟1,加載I組共8個數據到路由器,同時陣列控制單元廣播原始配置指令到4個路由器上,此時為第I個周期;
[0054]步驟2,按照行列法,路由器轉發8個操作數至4個處理單元,進行第一次乘法運算;同時因為流水化的運算,第2組數據此時已經加載到第一級路由器上了,此時為第2個周期;
[0055]步驟3,上一行處理單元運算得到的4個結果經第二級路由器轉至第二行處理單元中的兩個,進行加法運算;同時因為流水化的運算,第2組數據在做步驟2中第I組數據所執行的乘法運算,此時為第3個周期;
[0056]步驟4,上一行處理單元運算得到的2個結果經第三級路由器轉至第三行的一個處理單元中,進行加法運算,結果存至第四級路由器中;同時因為流水化的運算,第2組數據在做步驟3中第I組數據所執行的加法運算,此時為第4個周期;[0057]步驟5,第2組數據執行步驟4中第I組數據的加法運算方式,結果轉至第四級路由器中,此時為第5個周期;
[0058]步驟6,將第四級路由器中的兩個操作數轉至第四行一個處理單元中,進行加法運算得到結果,此時為第6個周期;
[0059]步驟7,8乘8塊的數據不斷進行流水運算,重復上述步驟,直至完成所描述所有運算;
[0060]步驟8,計算完成后便得到了最終的結果,此時將結果輸出即可。
[0061]本實施例的基于循環流水計算的片上陣列系統工作在片上總線協議接口 I上,通過與高級精簡指令集處理器2指令通信,達到輔助高級精簡指令集處理器進行大規模密集計算的目的;提出陣列控制單元的設計思想,區別于由接口控制器來完成陣列控制,這一思想使得對于陣列控制更加自動化,有利于算法映射及編譯器的設計;并提出由一個路由選擇器來決定處理單元之間的互連關系,采用自上而下的流水化運算方式,同行處理單元61在路由器62的控制下完成運算,并且添加了陣列控制單元3邏輯,讓陣列控制單元3負責循環控制,提高陣列單元使用率,提高了快速傅里葉變換、離散余弦變換的計算效率,并減少了算法映射的復雜度,直接有助于實現循環流水化運算、簡化處理單元及互連網絡。
[0062]本說明書中各個實施例采用遞進的方式描述,每個實施例重點說明的都是與其他實施例的不同之處,各個實施例之間相同相似部分互相參見即可。對于實施例公開的系統而言,由于與實施例公開的方法相對應,所以描述的比較簡單,相關之處參見方法部分說明即可。
[0063]專業人員還可以進一步意識到,結合本文中所公開的實施例描述的各示例的單元及算法步驟,能夠以電子硬件、計算機軟件或者二者的結合來實現,為了清楚地說明硬件和軟件的可互換性,在上述說明中已經按照功能一般性地描述了各示例的組成及步驟。這些功能究竟以硬件還是軟件方式來執行,取決于技術方案的特定應用和設計約束條件。專業技術人員可以對每個特定的應用來使用不同方法來實現所描述的功能,但是這種實現不應認為超出本發明的范圍。
[0064]顯然,本領域的技術人員可以對發明進行各種改動和變型而不脫離本發明的精神和范圍。這樣,倘若本發明的這些修改和變型屬于本發明權利要求及其等同技術的范圍之內,則本發明也意圖包括這些改動和變型在內。
【權利要求】
1.一種基于循環流水計算的片上陣列系統,其特征在于,包括高級精簡指令集處理器、片上總線協議接口、處理單元陣列、路由器、內部存儲器、內嵌式直接存儲器訪問單元、外部存儲器、陣列控制單元,其中, 所述片上總線協議接口,用于接收并解釋高級精簡指令集處理器的命令流,翻譯成相應的控制代碼后,對所述內嵌式直接存儲器訪問單元、內部存儲器、陣列控制單元進行配置,并協調其進行工作; 所述處理單元陣列為4乘4的處理單元組成的陣列,每行處理單元之間由一級路由器連接,處理單元陣列用于在陣列控制單元的控制下進行循環流水運算,數據流采取順序執行方式,逐行傳遞下去直至完成運算,每個處理單元,用于接收路由器發送的配置指令來完成相應的計算,每個處理單元都具有乘、加等基本運算功能; 每一級的路由器具有互聯預測功能以及配置指令再生功能,用于對原始配置指令進行處理再轉發到處理單元中; 所述內部存儲器分成并行工作的兩個存儲體,一個存儲體用于存儲處理單元陣列的原始配置指令以及待處理的操作數;另一個存儲體用于存儲處理單元陣列的運算結果; 所述內嵌式直接存儲器訪問單元是高級精簡指令集處理器的內嵌式直接存儲器訪問控制器件,整個處理單元陣列通過內嵌式直接存儲器訪問單元與外部存儲器進行數據的交換; 所述陣列控制單元,用于在片上總線協議接口的作用下,通過對四級路由器的控制實現對整個處理單元陣列的數據流的操作。
2.如權利要求1所述的基于循環流水計算的片上陣列系統,其特征在于,所述片上總線協議接口用于與高級精簡指令集處理器進行多周期指令的交互;配置內嵌式直接存儲器訪問模塊,實現外部同步動態隨機存取外部存儲器與內部存儲器的交互,包括配置指令和操作數的讀取以及已處理數據的寫回;配置陣列控制單元,使陣列控制單元能通過路由器控制處理單元陣列的數據流,正確完`成循環流水運算,并且最高效率地使用處理單元;及配置內部存儲器,使內部存儲器完成將處理單元陣列的處理結果寫回內部緩存。
3.如權利要求1所述的基于循環流水計算的片上陣列系統,其特征在于,所述內嵌式直接存儲器訪問單元,用于實現外部存儲器與內部存儲器之間配置指令和數據的雙向傳輸。
4.如權利要求1所述的基于循環流水計算的片上陣列系統,其特征在于,每個處理單元的三個輸入均來源于路由器,所述輸入包括I個配置指令以及2個操作數,每個處理單元包括I個乘法器、I個移位器、配置指令寄存器、輸出結果寄存器以及處理單元狀態寄存器。
5.如權利要求4所述的基于循環流水計算的片上陣列系統,其特征在于,所述配置指令用于指示I個乘法器、I個移位器、配置指令寄存器、輸出結果寄存器以及處理單元狀態寄存器的工作模式。
6.如權利要求5所述的基于循環流水計算的片上陣列系統,其特征在于,所述工作模式包括源操作數的選取、目的操作數的選取、算術邏輯單元計算的方式。
7.如權利要求6所述的基于循環流水計算的片上陣列系統,其特征在于,所述路由器,用于預測處理單元陣列中哪個處理單元工作,以及操作數如何分配。
8.如權利要求7所述的基于循環流水計算的片上陣列系統,其特征在于,每一級的路由器用于獲取下一行處理單元返回的工作狀態,路由器根據下一行處理單元的工作狀態選擇自左邊開始的第一個空閑的處理單元;一旦選中一個空閑的處理單元,路由器將來自上一行的處理單元輸出的兩個中間結果送給下一行的處理單元進行計算,其中,如果上一行的處理單元有多個中間結果送入下一行處理單元進行計算,優先選擇相鄰兩個中間結果到下一行的處理單元中進行運算,路由器每次配置的處理單元做相同的運算。
9.如權利要求8所述的基于循環流水計算的片上陣列系統,其特征在于,所述陣列控制單元,用于向路由器發送處理單元需要的控制信號以及配置指令,陣列控制單元內部有四個指向配置指令的指針變量,分別代表四級路由器的配置狀態,其中,路由器向處理單元發送完成配置指令及操作數后,表示路由器完成了一次對處理單元的配置,此時該路由器對應的指針變量自動加1,從而表示陣列控制單元將向該路由器發送第二次配置指令,在陣列控制單元初始工作時,四個指針變量均清空為零,表明陣列控制單元只對四級路由器發送相同的第一次的原始配置指令,由每一級的路由器截取原始配置指令相應位,生成一個新的配置指令送給該路由器控制的處理單元中去,路由器一旦完成對處理單元的配置,并不需要等待處理 單元完成工作,陣列控制單元就會對該路由器發出下一次的配置指令。
【文檔編號】G06F15/76GK103761213SQ201410052187
【公開日】2014年4月30日 申請日期:2014年2月14日 優先權日:2014年2月14日
【發明者】謝憬, 王琴, 郭箏, 唐正, 毛志剛 申請人:上海交通大學