本發(fā)明涉及高性能數(shù)據(jù)緩存管理技術,具體地說是一種適用于多核處理器內部的通用型處理器的存儲管理單元及其工作方式。
背景技術:
:隨著緩存管理數(shù)據(jù)量的急劇增加,對于緩存管理實現(xiàn)的“存儲空間利用率”的要求也越來越高。傳統(tǒng)的數(shù)據(jù)包緩存管理技術(“順序讀寫”和“隨機讀順序寫”及“并行存儲”)雖然具有各自的優(yōu)點,但其存儲空間利用率低下的通病使它們在進行大量數(shù)據(jù)存儲時具有極大的成本開銷和性能開銷,成為制約系統(tǒng)整體性能的瓶頸。因此,在高性能數(shù)據(jù)緩存管理技術方面展開深入的研究,使數(shù)據(jù)緩存管理實現(xiàn)具有較高的“空間利用率”,同時兼顧“多種工作模式”、“實現(xiàn)成本”及“靈活性”等其它方面性能指標的要求顯得尤為重要。技術實現(xiàn)要素:本發(fā)明為克服現(xiàn)有發(fā)明的不足之處,提出了一種適用于通用浮點處理器的存儲管理單元及其工作方式,以期能提高存儲區(qū)的資源利用率,從而實現(xiàn)高性能的硬件緩存管理。本發(fā)明為達到上述目的所采用的技術方案是:本發(fā)明一種適用于通用浮點處理器的存儲管理單元的特點是應用于由主控制器單元mcu、數(shù)據(jù)接口單元ni和運算處理單元cau構成的運算處理系統(tǒng)中;所述存儲管理單元是由存儲模塊、交互端口模塊、運算端口模塊和功能配置模塊組成;所述主控制器單元mcu向所述功能配置模塊發(fā)送配置信息;所述配置信息包括:源數(shù)據(jù)a的起始地址、源數(shù)據(jù)b的起始地址、結果數(shù)據(jù)的起始地址、運算模式、地址跳轉模式、接受源數(shù)據(jù)時的起始地址和發(fā)送數(shù)據(jù)的起始地址;所述運算模式包括:存儲模式、流模式和脈動模式;若所述運算模式為存儲模式,則所述功能配置模塊根據(jù)所述存儲模式配置所述交互端口模塊和所述運算端口模塊;所述交互端口模塊開始接收所述數(shù)據(jù)接口單元ni傳輸?shù)脑磾?shù)據(jù)a和源數(shù)據(jù)b;所述交互端口模塊按照所述接受源數(shù)據(jù)時的起始地址將所述源數(shù)據(jù)a和源數(shù)據(jù)b存儲到所述存儲模塊中,直到源數(shù)據(jù)接收和存儲完畢后,所述運算端口模塊再根據(jù)所述源數(shù)據(jù)a的起始地址、源數(shù)據(jù)b的起始地址和地址跳轉模式從所述存儲模塊中取出所述源數(shù)據(jù)a和源數(shù)據(jù)b并傳輸至所述運算處理單元cau中;所述運算處理單元cau完成對所述源數(shù)據(jù)a和源數(shù)據(jù)b的運算處理后,得到結果數(shù)據(jù),并根據(jù)所述結果數(shù)據(jù)的起始地址通過所述運算端口模塊存儲到所述存儲模塊中,直到所述結果數(shù)據(jù)存儲完畢后,所述交互端口模塊根據(jù)所述發(fā)送數(shù)據(jù)的起始地址將所述結果數(shù)據(jù)傳輸至所述數(shù)據(jù)接口單元ni中,從而實現(xiàn)存儲模式的功能;若所述運算模式為流模式,則所述功能配置模塊根據(jù)所述流模式配置所述運算處理單元cau,使得所述運算處理單元cau確定運算類型;所述功能配置模塊根據(jù)所述流模式配置所述交互端口模塊和運算端口模塊同時工作,并與所述存儲模塊一起形成同步fifo緩沖區(qū);所述同步fifo緩沖區(qū)接收所述數(shù)據(jù)接口單元ni發(fā)送的源數(shù)據(jù)a和源數(shù)據(jù)b,并按照先進先出原則發(fā)送至所述運算處理單元cau中進行運算;所述運算處理單元cau將運算后的結果數(shù)據(jù)再通過所述同步fifo緩沖區(qū)發(fā)送至所述數(shù)據(jù)接口單元ni中,從而實現(xiàn)流模式的功能;若所述運算模式為脈動模式,則所述功能配置模塊根據(jù)所述脈動模式配置所述交互端口模塊和所述運算端口模塊;所述交互端口模塊開始接收所述數(shù)據(jù)接口單元ni傳輸?shù)脑磾?shù)據(jù)a和源數(shù)據(jù)b;所述交互端口模塊按照所述接受源數(shù)據(jù)時的起始地址將所述源數(shù)據(jù)a和源數(shù)據(jù)b依次存儲到所述存儲模塊中;同時所述運算端口模塊檢測到所述存儲模塊中存有源數(shù)據(jù)時,根據(jù)所述源數(shù)據(jù)a的起始地址、源數(shù)據(jù)b的起始地址和地址跳轉模式從所述存儲模塊中取出已經存儲的源數(shù)據(jù)a和源數(shù)據(jù)b并傳輸至所述運算處理單元cau中;所述運算處理單元cau對接收到的源數(shù)據(jù)a和源數(shù)據(jù)b進行運算處理后,得到結果數(shù)據(jù),并根據(jù)所述結果數(shù)據(jù)的起始地址通過所述運算端口模塊存儲到所述存儲模塊中;同時,所述交互端口模塊檢測到所述存儲模塊中存有結果數(shù)據(jù)時,根據(jù)所述發(fā)送數(shù)據(jù)的起始地址將所述結果數(shù)據(jù)傳輸至所述數(shù)據(jù)接口單元ni中,從而實現(xiàn)脈動模式的功能。本發(fā)明一種適用于通用浮點處理器的存儲管理單元的工作方式的特點是應用于由主控制器單元mcu、數(shù)據(jù)接口單元ni、存儲管理單元和運算處理單元cau構成的運算處理系統(tǒng)中,并按如下步驟進行:步驟1、所述主控制器單元mcu向所述存儲管理單元發(fā)送配置信息;所述配置信息包括:源數(shù)據(jù)a的起始地址、源數(shù)據(jù)b的起始地址、結果數(shù)據(jù)的起始地址、運算模式、地址跳轉模式、接受源數(shù)據(jù)時的起始地址和發(fā)送數(shù)據(jù)的起始地址;步驟2、所述存儲管理單元判斷所述運算模式是否為存儲模式,若是存儲模式,則執(zhí)行步驟3;否則,執(zhí)行步驟5;步驟3、所述存儲管理單元開始接收所述數(shù)據(jù)接口單元ni傳輸?shù)脑磾?shù)據(jù)a和源數(shù)據(jù)b;并根據(jù)所述接受源數(shù)據(jù)時的起始地址將所述源數(shù)據(jù)a和源數(shù)據(jù)b進行存儲,直到源數(shù)據(jù)接收和存儲完畢后,所述存儲管理單元再根據(jù)所述源數(shù)據(jù)a的起始地址、源數(shù)據(jù)b的起始地址和地址跳轉模式將所存儲的源數(shù)據(jù)a和源數(shù)據(jù)b傳輸至所述運算處理單元cau中;步驟4、所述運算處理單元cau完成對所述源數(shù)據(jù)a和源數(shù)據(jù)b的運算處理后,得到結果數(shù)據(jù),并根據(jù)所述結果數(shù)據(jù)的起始地址傳輸至所述存儲管理單元中進行存儲,直到所述結果數(shù)據(jù)存儲完畢后,所述存儲管理單元根據(jù)所述發(fā)送數(shù)據(jù)的起始地址將所述結果數(shù)據(jù)傳輸至所述數(shù)據(jù)接口單元ni中,從而實現(xiàn)存儲模式的功能;步驟5、所述存儲管理單元判斷所述運算模式是否為流模式,若是流模式,則執(zhí)行步驟6;否則,表示所述運算模式是脈動模式,并執(zhí)行步驟7;步驟6、所述運算處理單元cau確定運算類型;同時,所述存儲管理單元重構為同步fifo緩沖區(qū),所述同步fifo緩沖區(qū)接收所述數(shù)據(jù)接口單元ni發(fā)送的源數(shù)據(jù)a和源數(shù)據(jù)b,并按照先進先出原則發(fā)送至所述運算處理單元cau中進行運算;所述運算處理單元cau將運算后的結果數(shù)據(jù)再通過所述同步fifo緩沖區(qū)發(fā)送至所述數(shù)據(jù)接口單元ni中,從而實現(xiàn)流模式的功能;步驟7、所述存儲管理單元開始接收所述數(shù)據(jù)接口單元ni傳輸?shù)脑磾?shù)據(jù)a和源數(shù)據(jù)b,并按照所述接受源數(shù)據(jù)時的起始地址將所述源數(shù)據(jù)a和源數(shù)據(jù)b依次進行存儲;同時,根據(jù)所述源數(shù)據(jù)a的起始地址、源數(shù)據(jù)b的起始地址和地址跳轉模式將已存儲的源數(shù)據(jù)a和源數(shù)據(jù)b傳輸至所述運算處理單元cau中;步驟8、所述運算處理單元cau對接收到的源數(shù)據(jù)a和源數(shù)據(jù)b進行運算處理后,得到結果數(shù)據(jù),并根據(jù)所述結果數(shù)據(jù)的起始地址發(fā)送至所述存儲管理單元中進行存儲;同時,所述存儲管理單元根據(jù)所述發(fā)送數(shù)據(jù)的起始地址將已存儲的結果數(shù)據(jù)傳輸至所述數(shù)據(jù)接口單元ni中,從而實現(xiàn)脈動模式的功能。本發(fā)明所述的存儲管理單元的工作方式的特點也在于,在所述存儲模式下,若所述存儲管理單元中存儲的源數(shù)據(jù)a的起始地址、源數(shù)據(jù)b的起始地址和結果數(shù)據(jù)的起始地址存在地址沖突,則按如下步驟進行沖突化解:步驟1、判斷是否為源數(shù)據(jù)a的起始地址和源數(shù)據(jù)b的起始地址的地址沖突,若是,則按照所述存儲管理單元接收所述源數(shù)據(jù)a的起始地址和源數(shù)據(jù)b的起始地址的先后順序,在當前周期采納優(yōu)先的起始地址,在下一個周期采納另一個起始地址;否則,執(zhí)行步驟2;步驟2、判斷是否為源數(shù)據(jù)a的起始地址和結果數(shù)據(jù)的起始地址的地址沖突,若是,則所述存儲管理單元按照所述源數(shù)據(jù)a的起始地址和結果數(shù)據(jù)的起始地址的優(yōu)先級,在當前周期采納優(yōu)先級高的起始地址,在下一個周期采納優(yōu)先級低的起始地址;否則,執(zhí)行步驟3;步驟3、判斷是否為源數(shù)據(jù)b的起始地址和結果數(shù)據(jù)的起始地址的地址沖突,若是,則所述存儲管理單元按照所述源數(shù)據(jù)b的起始地址和結果數(shù)據(jù)的起始地址的優(yōu)先級,在當前周期采納優(yōu)先級高的起始地址,在下一個周期采納優(yōu)先級低的起始地址;否則,表示存在源數(shù)據(jù)a的起始地址、源數(shù)據(jù)b的起始地址和結果數(shù)據(jù)的起始地址的地址沖突,并執(zhí)行步驟4;步驟4、所述存儲管理單元按照所述源數(shù)據(jù)a的起始地址、源數(shù)據(jù)b的起始地址和結果數(shù)據(jù)的起始地址的優(yōu)先級,在當前周期采納優(yōu)先級高的起始地址,在下一個周期返回步驟1執(zhí)行。與現(xiàn)有技術相比,本發(fā)明的有益技術效果體現(xiàn)在:1、工作模式及機制:本發(fā)明可通過功能配置模塊實現(xiàn)存儲模式,脈動模式,流模式三種工作模式,編程人員可根據(jù)要求通過功能配置模塊對存儲器進行動態(tài)在線配置,從而有效的克服了現(xiàn)有存儲器模式單一,不可實時配置的缺點。2、流模式:本發(fā)明工作在流模式時,可通過端口讀寫控制模塊將部分ram重構成同步fifo,進行大批量的數(shù)據(jù)緩存,克服了多核系統(tǒng)中大批量數(shù)據(jù)到達本地節(jié)點時無法立即參與運算,或是運算結束時無法立即發(fā)送至目的節(jié)點的瓶頸,并且數(shù)據(jù)的搬運時間與計算時間基本重合,從而隱藏了數(shù)據(jù)搬運時間,提升了通用型處理器的運算效率。3、脈動模式:脈動運算模式兼顧了存儲模式和流模式的工作特點,實現(xiàn)了運算靈活性和運算效率的折中;在這種運算模式下,存儲管理單元仍然以流水的方式順序處理數(shù)據(jù),以隱藏數(shù)據(jù)搬運時間,其分片處理數(shù)據(jù)可以實現(xiàn)資源節(jié)點之間的路徑重構。4、存儲空間利用率:在數(shù)據(jù)處理量較大的情況下,本發(fā)明可以根據(jù)系統(tǒng)的要求選擇ram的數(shù)量,深度及位寬;同時在進行批量運算時,若源數(shù)據(jù)和結果數(shù)據(jù)發(fā)生地址沖突,利用優(yōu)先級進行依次選擇,使其能夠共享同一塊存儲區(qū),這樣結果數(shù)據(jù)隨時可以作為源數(shù)據(jù)進行下一次運算,從而提高了資源利用率。綜上所述,本發(fā)明通過對數(shù)據(jù)包緩存管理需求的比較,提出一種多種工作模式、可配置、靈活地址跳變、較高資源利用率的存儲管理單元設計,該存儲管理單元的讀寫控制邏輯具備可編程的能力,功能配置模塊內的配置寄存器支持在線配置;存儲器根據(jù)配置寄存器內容實時執(zhí)行為存儲模式,脈動模式,流模式三種工作模式中的一種和相應的地址跳變;存儲管理單元可將前y組ram重構成y組fifo,以適應流模式;同時在進行批量運算時,若源數(shù)據(jù)和結果數(shù)據(jù)發(fā)生地址沖突,利用優(yōu)先級進行依次選擇,使其能夠共享同一塊存儲區(qū),從而具有較高的存儲空間利用率,且兼具“多種工作模式”,“高存儲空間利用率”,“靈活性”等優(yōu)點。附圖說明圖1為本發(fā)明所面向的存儲管理單元的總體結構圖;圖2為本發(fā)明存儲器的結構圖;圖3為本發(fā)明交互端口模塊的結構圖;圖4為本發(fā)明運算端口模塊的結構圖;圖5為本發(fā)明遞增循環(huán)尋址模式示意圖;圖6為本發(fā)明步長折半尋址模式示意圖;圖7為本發(fā)明位反轉尋址模式示意圖;圖8為本發(fā)明所面向系統(tǒng)的工作流程圖。具體實施方式在本例實施中,如圖1所示,一種適用于通用浮點處理器的存儲管理單元,應用于由主控制器單元mcu、數(shù)據(jù)接口單元ni和運算處理單元cau構成的運算處理系統(tǒng)中;存儲管理單元是由存儲模塊、交互端口模塊、運算端口模塊和功能配置模塊組成;其中,功能配置模塊包含12個寄存器,外部與主控制器單元連接,內部與交互端口模塊和運算端口模塊連接。從而控制數(shù)據(jù)的讀寫地址和運算批量數(shù)等。交互端口模塊包含n個相同的控制模塊,n個控制模塊分別與存儲器中的n組ram連接來控制數(shù)據(jù)的讀寫。同時交互端口模塊在內部接受功能配置模塊的控制信號,外部與數(shù)據(jù)接口單元連接進行數(shù)據(jù)雙向傳輸。存儲模塊包含n組雙端口ram用來存儲數(shù)據(jù),每組ram的位寬為w,每塊ram的容量是m,n組ram統(tǒng)一編址,總共的存儲容量為nxmxwbits。雙端口ram兩端的讀寫使能端分別受交互端口模塊和運算端口模塊控制。運算端口模塊包含n個相同的控制模塊,n個控制模塊分別與存儲模塊中的n組ram連接來控制數(shù)據(jù)的讀寫。同時運算端口模塊在內部接受功能配置模塊的控制信號,外部與運算單元連接提供運算需要的源數(shù)據(jù)和存儲結果數(shù)據(jù)。存儲管理單元中ram的組合方式如圖2所示,存儲管理單元中的存儲模塊分為普通數(shù)據(jù)存儲器和常數(shù)存儲器兩類。普通數(shù)據(jù)存儲器用來提供運算單元計算時需要的源數(shù)據(jù)和存儲計算產生的結果數(shù)據(jù)。其中運算單元包括多種不同類型運算模塊,例如:例如通用數(shù)據(jù)批量運算器、通用協(xié)處理器等。普通數(shù)據(jù)存儲器包含n組ram,每組ram由2塊位寬為w,深度為m的ram組成,n組ram統(tǒng)一編址,地址范圍是0~nxm-1,組內的2塊ram地址相同,但不具有相同的讀寫使能端,因此可以分別存儲復數(shù)的實部和虛部。常數(shù)存儲器用來存儲計算過程中頻繁使用的一些常數(shù),由2塊分布式ram組成,位寬為w,深度為m,地址范圍是nxm~nxm+m,同樣,2塊分布式ram使用相同的地址和不相同的讀寫使能端,可分別用來存儲常數(shù)的實部和虛部,也可全部用來存儲實數(shù)。如圖2所示,當數(shù)據(jù)為復數(shù)時,r0r1r2....r7代表復數(shù)實部存儲器,i0i1i2....i7代表復數(shù)虛部存儲器,rcon,icon分別代表常數(shù)存儲器的實部和虛部,address表示地址分布。為了滿足數(shù)據(jù)接收源數(shù)據(jù)、發(fā)送源數(shù)據(jù)和存儲結果數(shù)據(jù)能夠并行的要求,普通數(shù)據(jù)存儲器中的ram采用雙端口。存儲管理單元中功能配置模塊如表1所示,功能配置模塊包含了12個寄存器,其中r3表示運算批量數(shù),r4用來表示運算模式,若運算數(shù)據(jù)為復數(shù),r9用來表示接收數(shù)據(jù)的實部和虛部是否有效。當一次數(shù)據(jù)鏈路建立之前,寄存器文件中的r5,r6寄存器被主控制器單元mcu寫入相應的數(shù)值,從而接收數(shù)據(jù)的起始地址和接收數(shù)據(jù)量被傳送到交互端口模塊。當一次運算開始之前,寄存器文件中的r0,r1,r2,r3被主控制器單元寫入相應的數(shù)值,從而計算數(shù)據(jù)的起始地址,結果數(shù)據(jù)的存入地址,運算批量數(shù)被寫入運算端口模塊。當一次運算結束后,寄存器文件中的r7,r8寄存器被主控制器單元寫入相應的數(shù)值,從而發(fā)送數(shù)據(jù)的起始地址和發(fā)送數(shù)據(jù)量被傳送到運算端口模塊。每進行上述一次運算,寄存器文件被更新一次。表1為本發(fā)明功能配置模塊中對部分寄存器的解釋說明寄存器位寬作用r013源數(shù)據(jù)a運算時的起始地址r113源數(shù)據(jù)b運算時的起始地址r213結果數(shù)據(jù)保存時的起始地址r324運算批量數(shù)r41運算模式r513接受數(shù)據(jù)時的起始地址r613接受數(shù)據(jù)的數(shù)據(jù)量r713發(fā)送數(shù)據(jù)的起始地址r813發(fā)送數(shù)據(jù)的數(shù)據(jù)量r92r9[1]=1接受數(shù)據(jù)的實部有效,r9[0]=1接受數(shù)據(jù)的虛部有效r104地址跳轉模式r1132源數(shù)據(jù)跳轉步長存儲管理單元中交互端口模塊如圖3所示,交互端口模塊由9個相同結構的port端口模塊構成和一個多路選擇器mux模塊。mux模塊會根據(jù)接受或發(fā)送數(shù)據(jù)的地址進行片選,從而拉高相應port端口模塊的使能端,并將接受或發(fā)射的數(shù)據(jù)量及r9的值送入該模塊。同時數(shù)據(jù)接口單元同時與每個port端口進行數(shù)據(jù)雙向傳輸,當接受和發(fā)射選擇同一個port端口模塊時,由于只能接受其中的一個地址,采用的策略是接受的優(yōu)先級大于發(fā)射。端口的另一端分別與9組ram相連,每個port端口都有兩個使能端,在數(shù)據(jù)為復數(shù)的情況下,可以分別控制實部和虛部ram的讀寫。存儲管理單元中運算端口模塊如圖4所示,運算端口同樣有n個相同結構的port端口模塊構成和一個多路選擇器mux模塊。mux模塊會根據(jù)源數(shù)據(jù)或結果數(shù)據(jù)地址進行片選,從而拉高相應port端口模塊的使能端,并將運算的批量數(shù)送入該模塊。同時運算單元同時與每個port端口進行數(shù)據(jù)雙向傳輸,當源數(shù)據(jù)a,源數(shù)據(jù)b和結果數(shù)據(jù)其中有兩個或三個選擇同一個port端口時,由于只能接受其中的一個地址,將會發(fā)生沖突,此時會暫停運算流水線,利用額外的周期來化解沖突,化解的優(yōu)先級是結果數(shù)據(jù)高于源數(shù)據(jù)a高于源數(shù)據(jù)b。端口的另一端分別與n組ram相連,每個port端口都有兩個使能端,當數(shù)據(jù)為復試時,可以分別控制實部和虛部ram的讀寫。主控制器單元mcu向功能配置模塊發(fā)送配置信息及控制信號;配置信息包括:源數(shù)據(jù)a的起始地址、源數(shù)據(jù)b的起始地址、結果數(shù)據(jù)的起始地址、運算模式、運算批量數(shù)、源數(shù)據(jù)跳轉步長、接收數(shù)據(jù)實部及虛部有效標志、接受數(shù)據(jù)的數(shù)據(jù)量、發(fā)送數(shù)據(jù)的數(shù)據(jù)量、地址跳轉模式、接受源數(shù)據(jù)時的起始地址和發(fā)送數(shù)據(jù)的起始地址;運算模式包括:存儲模式、流模式和脈動模式;若運算模式為存儲模式,在存儲運算模式中,運算過程被分為接受源數(shù)據(jù)、計算數(shù)據(jù)和發(fā)送結果數(shù)據(jù),三者串聯(lián)執(zhí)行,當數(shù)據(jù)接口單元進行數(shù)據(jù)鏈路建立開始時。功能配置模塊根據(jù)存儲模式配置交互端口模塊和運算端口模塊;此時只有交互端口模塊工作,運算端口模塊盡管配置完成,但不工作。數(shù)據(jù)鏈路建立成功后,交互端口模塊開始接收數(shù)據(jù)接口單元ni傳輸?shù)脑磾?shù)據(jù)a和源數(shù)據(jù)b;交互端口模塊按照接受源數(shù)據(jù)時的起始地址將源數(shù)據(jù)a和源數(shù)據(jù)b存儲到存儲模塊中,直到源數(shù)據(jù)接收和存儲完畢后,此時運算端口模塊開始工作,交互端口模塊停止工作,運算端口模塊再根據(jù)源數(shù)據(jù)a的起始地址、源數(shù)據(jù)b的起始地址和地址跳轉模式從存儲模塊中取出源數(shù)據(jù)a和源數(shù)據(jù)b并傳輸至運算處理單元cau中;運算處理單元cau完成對源數(shù)據(jù)a和源數(shù)據(jù)b的運算處理后,得到結果數(shù)據(jù),并根據(jù)結果數(shù)據(jù)的起始地址通過運算端口模塊存儲到存儲模塊中,直到結果數(shù)據(jù)存儲完畢后,此時運算端口模塊工作,交互端口不工作,運算端口模塊會根據(jù)之前配置好的結果數(shù)據(jù)地址將結果數(shù)據(jù)保存到存儲模塊中,直至所有結果數(shù)據(jù)均保存完畢。交互端口模塊根據(jù)發(fā)送數(shù)據(jù)的起始地址將結果數(shù)據(jù)傳輸至數(shù)據(jù)接口單元ni中,從而實現(xiàn)存儲模式的功能;該模式下,所有源數(shù)據(jù)在計算之前都已經進如到本地存儲模塊中,主控制器單元mcu可以根據(jù)算法特點選擇合適的地址跳變方式進行讀寫,最大程度地提高運算靈活性。若運算模式為流模式,數(shù)據(jù)以流水的方式進入存儲管理單元mmu并完成相應的運算,本地存儲模塊只能順序的提供源數(shù)據(jù),犧牲了一定的運算靈活性。流模式開始時,功能配置模塊根據(jù)流模式配置運算處理單元cau,使得運算處理單元cau確定運算類型;與此同時,功能配置模塊根據(jù)流模式配置交互端口模塊和運算端口模塊同時工作,并與存儲模塊一起形成同步fifo緩沖區(qū)。同步fifo緩沖區(qū)接收數(shù)據(jù)接口單元ni發(fā)送的源數(shù)據(jù)a和源數(shù)據(jù)b,并按照先進先出原則發(fā)送至運算處理單元cau中進行運算。同步fifo結構如圖2所示,將前三組ram0,ram1,ram2分別改造成三塊fifo緩沖區(qū),fifo的位寬為2w,大小為m。遵循fifo的先進先出原則。并設有空、即空、滿、即滿、有效、無效信號。當檢測到fifo0或fifo1中有數(shù)據(jù)時便開始運算,當檢測到fifo2中有結果數(shù)據(jù)時便開始發(fā)送。當檢測到fifo0或fifo1為空時便停止運算,當檢測到fifo0或fifo1滿時便停止接受數(shù)據(jù)。如圖所示fifo0、fifo1的輸入端分別與交互端口模塊連接,輸出端分別于運算端口模塊連接。fifo2的輸入端與運算端口模塊連接,輸出端與交互端口模塊連接。源數(shù)據(jù)a,源數(shù)據(jù)b,結果數(shù)據(jù)分別對應fifo0,fifo1,fifo2,此時不再受地址限制。運算處理單元cau將運算后的結果數(shù)據(jù)再通過同步fifo緩沖區(qū)發(fā)送至數(shù)據(jù)接口單元ni中,從而實現(xiàn)流模式的功能;若運算模式為脈動模式,則功能配置模塊根據(jù)脈動模式配置交互端口模塊和運算端口模塊;交互端口模塊開始接收數(shù)據(jù)接口單元ni傳輸?shù)脑磾?shù)據(jù)a和源數(shù)據(jù)b;交互端口模塊按照接受源數(shù)據(jù)時的起始地址將源數(shù)據(jù)a和源數(shù)據(jù)b依次存儲到存儲模塊中;同時運算端口模塊檢測到存儲模塊中存有源數(shù)據(jù)時,根據(jù)源數(shù)據(jù)a的起始地址、源數(shù)據(jù)b的起始地址和地址跳轉模式從存儲模塊中取出已經存儲的源數(shù)據(jù)a和源數(shù)據(jù)b并傳輸至運算處理單元cau中;運算處理單元cau對接收到的源數(shù)據(jù)a和源數(shù)據(jù)b進行運算處理后,得到結果數(shù)據(jù),并根據(jù)結果數(shù)據(jù)的起始地址通過運算端口模塊存儲到存儲模塊中;同時,交互端口模塊檢測到存儲模塊中存有結果數(shù)據(jù)時,根據(jù)發(fā)送數(shù)據(jù)的起始地址將結果數(shù)據(jù)傳輸至數(shù)據(jù)接口單元ni中,從而實現(xiàn)脈動模式的功能。本實施例中,一種適用于通用浮點處理器的存儲管理單元的工作方式,是應用于由主控制器單元mcu、數(shù)據(jù)接口單元ni、存儲管理單元和運算處理單元cau構成的運算處理系統(tǒng)中,并按如下步驟進行:步驟1、主控制器單元mcu向存儲管理單元發(fā)送配置信息;配置信息包括:源數(shù)據(jù)a的起始地址、源數(shù)據(jù)b的起始地址、結果數(shù)據(jù)的起始地址、運算模式、地址跳轉模式、接受源數(shù)據(jù)時的起始地址和發(fā)送數(shù)據(jù)的起始地址、運算批量數(shù)、源數(shù)據(jù)跳轉步長、接收數(shù)據(jù)實部及虛部有效標志、接受數(shù)據(jù)的數(shù)據(jù)量、發(fā)送數(shù)據(jù)的數(shù)據(jù)量;步驟2、存儲管理單元判斷運算模式是否為存儲模式,若是存儲模式,則執(zhí)行步驟3;否則,執(zhí)行步驟5;步驟3、存儲管理單元開始接收數(shù)據(jù)接口單元ni傳輸?shù)脑磾?shù)據(jù)a和源數(shù)據(jù)b;并根據(jù)接受源數(shù)據(jù)時的起始地址將源數(shù)據(jù)a和源數(shù)據(jù)b進行存儲,直到源數(shù)據(jù)接收和存儲完畢后,存儲管理單元再根據(jù)源數(shù)據(jù)a的起始地址、源數(shù)據(jù)b的起始地址和地址跳轉模式將所存儲的源數(shù)據(jù)a和源數(shù)據(jù)b傳輸至運算處理單元cau中;步驟4、運算處理單元cau完成對源數(shù)據(jù)a和源數(shù)據(jù)b的運算處理后,得到結果數(shù)據(jù),并根據(jù)結果數(shù)據(jù)的起始地址傳輸至存儲管理單元中進行存儲,直到結果數(shù)據(jù)存儲完畢后,存儲管理單元根據(jù)發(fā)送數(shù)據(jù)的起始地址將結果數(shù)據(jù)傳輸至數(shù)據(jù)接口單元ni中,從而實現(xiàn)存儲模式的功能;步驟5、存儲管理單元判斷運算模式是否為流模式,若是流模式,則執(zhí)行步驟6;否則,表示運算模式是脈動模式,并執(zhí)行步驟7;步驟6、運算處理單元cau確定運算類型;同時,存儲管理單元重構為同步fifo緩沖區(qū),同步fifo緩沖區(qū)接收數(shù)據(jù)接口單元ni發(fā)送的源數(shù)據(jù)a和源數(shù)據(jù)b,并按照先進先出原則發(fā)送至運算處理單元cau中進行運算;運算處理單元cau將運算后的結果數(shù)據(jù)再通過同步fifo緩沖區(qū)發(fā)送至數(shù)據(jù)接口單元ni中,從而實現(xiàn)流模式的功能;步驟7、存儲管理單元開始接收數(shù)據(jù)接口單元ni傳輸?shù)脑磾?shù)據(jù)a和源數(shù)據(jù)b,并按照接受源數(shù)據(jù)時的起始地址將源數(shù)據(jù)a和源數(shù)據(jù)b依次進行存儲;同時,根據(jù)源數(shù)據(jù)a的起始地址、源數(shù)據(jù)b的起始地址和地址跳轉模式將已存儲的源數(shù)據(jù)a和源數(shù)據(jù)b傳輸至運算處理單元cau中;步驟8、運算處理單元cau對接收到的源數(shù)據(jù)a和源數(shù)據(jù)b進行運算處理后,得到結果數(shù)據(jù),并根據(jù)結果數(shù)據(jù)的起始地址發(fā)送至存儲管理單元中進行存儲;同時,存儲管理單元根據(jù)發(fā)送數(shù)據(jù)的起始地址將已存儲的結果數(shù)據(jù)傳輸至數(shù)據(jù)接口單元ni中,從而實現(xiàn)脈動模式的功能。具體實施中,在存儲模式下,若存儲管理單元中存儲的源數(shù)據(jù)a的起始地址、源數(shù)據(jù)b的起始地址和結果數(shù)據(jù)的起始地址存在地址沖突,則按如下步驟進行沖突化解:步驟1、判斷是否為源數(shù)據(jù)a的起始地址和源數(shù)據(jù)b的起始地址的地址沖突,若是,則按照存儲管理單元接收源數(shù)據(jù)a的起始地址和源數(shù)據(jù)b的起始地址的先后順序,在當前周期采納優(yōu)先的起始地址,在下一個周期采納另一個起始地址;否則,執(zhí)行步驟2;步驟2、判斷是否為源數(shù)據(jù)a的起始地址和結果數(shù)據(jù)的起始地址的地址沖突,若是,則存儲管理單元按照源數(shù)據(jù)a的起始地址和結果數(shù)據(jù)的起始地址的優(yōu)先級,在當前周期采納優(yōu)先級高的起始地址,在下一個周期采納優(yōu)先級低的起始地址;否則,執(zhí)行步驟3;步驟3、判斷是否為源數(shù)據(jù)b的起始地址和結果數(shù)據(jù)的起始地址的地址沖突,若是,則存儲管理單元按照源數(shù)據(jù)b的起始地址和結果數(shù)據(jù)的起始地址的優(yōu)先級,在當前周期采納優(yōu)先級高的起始地址,在下一個周期采納優(yōu)先級低的起始地址;否則,表示存在源數(shù)據(jù)a的起始地址、源數(shù)據(jù)b的起始地址和結果數(shù)據(jù)的起始地址的地址沖突,并執(zhí)行步驟4;步驟4、存儲管理單元按照源數(shù)據(jù)a的起始地址、源數(shù)據(jù)b的起始地址和結果數(shù)據(jù)的起始地址的優(yōu)先級,在當前周期采納優(yōu)先級高的起始地址,在下一個周期返回步驟1執(zhí)行。當存儲管理單元執(zhí)行存儲模式時可有以下6種地址跳變模式:1)固定單一地址尋址模式:在運算過程中始終保持地址不變,在雜散運算時需要使用該模式。或在批量運算時需要始終訪問同一個數(shù)據(jù),此時地址為一固定值。2)順序遞增尋址模式:在地址生成過程中,地址從某一起始地址m順序遞增至某一設定的地址值n。3)遞增循環(huán)尋址模式:在地址生成過程中,地址在地址生成區(qū)間內順序遞增,并循環(huán)多次。如圖5所示,地址從0順序遞增至7,如此反復循環(huán)3次。4)跳變遞增尋址模式:地址從某一起始地址m到n,配置特殊寄存器r11每次變化步長為s。順序遞增模式是跳變遞增模式的特例(s=0)。5)步長折半遞增循環(huán)模式:在地址生成過程中,首先確定此次運算的批量數(shù),根據(jù)批量數(shù)來每次改變不同的步長進行循環(huán)跳轉。如圖6所示,批量數(shù)為8,第一次步長為4,第二次步長為2....依次類推。6)位反轉跳轉模式:在地址生成過程中,首先確定此次運算的批量數(shù),根據(jù)批量數(shù)確定每個地址的位寬,將其每一位的高位和低位進行對調。形成新的序列。如圖7所示,批量數(shù)為8,地址跳變的順序是04261537。多種靈活的地址跳變模式可以提高對不同算法的適應性,例如矩陣乘法、快速傅里葉變換(fft)以及其他的算法。當前第1頁12