專利名稱:矩陣處理器及其指令集和嵌入式系統(tǒng)的制作方法
矩陣處理器及其指令集和嵌入式系統(tǒng)
技術(shù)領(lǐng)域:
本發(fā)明涉及處理器技術(shù)領(lǐng)域,特別涉及一種矩陣處理器及其指令集和嵌入式系統(tǒng)。
背景技術(shù):
矩陣運(yùn)算是科學(xué)與工程計(jì)算中的基本問題。它不僅是數(shù)學(xué)學(xué)科,也是許多理工學(xué)科的重要數(shù)學(xué)工具。矩陣運(yùn)算在物理、力學(xué)、計(jì)算機(jī)科學(xué)、航空航天等眾多學(xué)科中是不可替代的數(shù)學(xué)工具。特別的,在計(jì)算機(jī)科學(xué)技術(shù)中,很多領(lǐng)域都要使用到矩陣運(yùn)算,比如數(shù)字圖像處理、計(jì)算機(jī)圖形學(xué)、模式識(shí)別、機(jī)器視覺、人工智能、科學(xué)計(jì)算以及一般的算法設(shè)計(jì)和分析等。傳統(tǒng)矩陣運(yùn)算多用處理器串行計(jì)算來實(shí)現(xiàn),嚴(yán)重制約計(jì)算速度的提高。采用硬件實(shí)現(xiàn)矩陣運(yùn)算可以提高計(jì)算速度,但是已有矩陣運(yùn)算的硬件實(shí)現(xiàn)多是為某一具體矩陣運(yùn)算,例如矩陣求逆、矩陣乘法等設(shè)計(jì)的專用硬件結(jié)構(gòu),其硬件資源需求大、靈活性差。特別的,當(dāng)前的各種涉及矩陣運(yùn)算的完整算法都包含多種矩陣運(yùn)算以及其他非矩陣運(yùn)算,這時(shí), 將特定矩陣運(yùn)算的硬件電路加入計(jì)算系統(tǒng)時(shí),需要很長(zhǎng)的與系統(tǒng)其它部分的交互和等待時(shí)間,這樣,加入專用矩陣運(yùn)算的硬件模塊所提高的效率就非常有限了。所以,一種能夠獨(dú)立完成完整算法的矩陣運(yùn)算單元是有非常大需求的。
發(fā)明內(nèi)容本發(fā)明的目的在于提供一種矩陣處理器及其嵌入式系統(tǒng),其能夠獨(dú)立完成各種矩陣運(yùn)算和其他數(shù)學(xué)運(yùn)算。為了解決上述問題,本發(fā)明采用如下技術(shù)方案一種矩陣處理器,包括外部數(shù)據(jù)接口、I RAM, DRAM、矩陣處理器核心;所述外部數(shù)據(jù)接口,連接矩陣處理器的IRAM、DRAM與外部存儲(chǔ)器,完成矩陣處理器指令的寫入和與外部進(jìn)行數(shù)據(jù)交換;所述IRAM和DRAM,相當(dāng)于矩陣處理器的緩存;IRAM接收外部模塊寫入的指令序列;DRAM接收外部模塊寫入的矩陣或其他數(shù)據(jù)、接收矩陣處理器核心寫入的計(jì)算結(jié)果,供矩陣處理器使用或外部模塊讀出,完成矩陣處理器與外部模塊的數(shù)據(jù)交換;所述矩陣處理器核心,用于取指、譯碼、運(yùn)算、結(jié)果寫回和控制。本發(fā)明進(jìn)一步的改進(jìn)在于所述外部數(shù)據(jù)接口、IRAM、DRAM、矩陣處理器核心共同連接一個(gè)寄存器組,所述寄存器組存放外部數(shù)據(jù)接口、IRAM、DRAM、矩陣處理器核心的系統(tǒng)信息和交互信息。本發(fā)明進(jìn)一步的改進(jìn)在于所述外部數(shù)據(jù)接口、IRAM、DRAM、矩陣處理器核心共同連接一個(gè)中斷產(chǎn)生器,外部數(shù)據(jù)接口、IRAM、DRAM、矩陣處理器核心的中斷請(qǐng)求通過寄存器組和中斷產(chǎn)生器輸出給外部控制模塊(外部CPU)。本發(fā)明進(jìn)一步的改進(jìn)在于所述矩陣處理器核心包括取指單元、第一譯碼單元、第二譯碼單元、讀寫數(shù)據(jù)單元、通用寄存器組、浮點(diǎn)運(yùn)算單元和控制單元;IRAM、取指單元、第一譯碼單元、第二譯碼單元、浮點(diǎn)運(yùn)算單元依次連接;浮點(diǎn)運(yùn)算單元、通用寄存器組、讀寫數(shù)據(jù)單元、DRAM依次連接;第一譯碼單元連接所述讀寫數(shù)據(jù)單元。本發(fā)明進(jìn)一步的改進(jìn)在于取指單元接收控制單元發(fā)送的取指令使能信號(hào),從 IRAM中開始循環(huán)讀取指令,發(fā)送指令給第一譯碼單元,并完成跳轉(zhuǎn)指令;第一譯碼單元接收來自取指單元發(fā)送的指令,根據(jù)指令的類別進(jìn)行譯碼,將矩陣運(yùn)算和數(shù)學(xué)函數(shù)運(yùn)算指令轉(zhuǎn)換成SIMD或浮點(diǎn)操作指令寫入第二譯碼單元,將L/S和移動(dòng)指令送入讀寫數(shù)據(jù)單元; 讀寫數(shù)據(jù)單元接收第一譯碼單元發(fā)送的數(shù)據(jù)地址和使能信號(hào),完成從DRAM中讀取數(shù)據(jù)寫入通用寄存器組,將通用寄存器組中的數(shù)據(jù)寫入DRAM;通用寄存器組的寄存器間的數(shù)據(jù)轉(zhuǎn)移;第二譯碼單元接收第一譯碼單元發(fā)送的SIMD和浮點(diǎn)運(yùn)算指令,將指令解碼為浮點(diǎn)操作指令,送給浮點(diǎn)運(yùn)算單元;浮點(diǎn)運(yùn)算單元包括四個(gè)并聯(lián)的第一浮點(diǎn)運(yùn)算模塊和一個(gè)第二浮點(diǎn)運(yùn)算模塊,該四個(gè)并聯(lián)的第一浮點(diǎn)運(yùn)算模塊串聯(lián)到第二浮點(diǎn)運(yùn)算模塊;每個(gè)第一浮點(diǎn)運(yùn)算模塊的目的和源寄存器地址由第二譯碼單元控制;第一浮點(diǎn)運(yùn)算模塊完成擴(kuò)展單精度浮點(diǎn)運(yùn)算,第二浮點(diǎn)運(yùn)算模塊完成擴(kuò)展單精度的4輸入加法;控制單元控制矩陣處理器的運(yùn)行,當(dāng)計(jì)算完成或發(fā)生異常時(shí)發(fā)送中斷信號(hào)給外部CPU。本發(fā)明進(jìn)一步的改進(jìn)在于所述矩陣處理器還包括一個(gè)特殊寄存器,所述特殊寄存器在矩陣處理器執(zhí)行有實(shí)數(shù)參與的運(yùn)算指令時(shí),保存該實(shí)數(shù)。本發(fā)明進(jìn)一步的改進(jìn)在于該矩陣處理器使用的指令集包括L/S和移動(dòng)指令、跳轉(zhuǎn)指令、浮點(diǎn)運(yùn)算指令、數(shù)學(xué)函數(shù)指令、單指令多數(shù)據(jù)指令、矩陣運(yùn)算指令;所述L/S和移動(dòng)指令,完成矩陣處理器緩存和寄存器、寄存器間的數(shù)據(jù)讀取和寫入;所述跳轉(zhuǎn)指令,完成指令執(zhí)行順序的改變;所述浮點(diǎn)運(yùn)算指令,完成基本浮點(diǎn)數(shù)運(yùn)算,包括求絕對(duì)值、比較、加、減、乘、除、開方、乘加運(yùn)算;所述數(shù)學(xué)函數(shù)指令,完成初等數(shù)學(xué)函數(shù)的運(yùn)算,包括三角函數(shù)、反三角函數(shù)、對(duì)數(shù)函數(shù)、指數(shù)函數(shù);所述SIMD指令,完成不同浮點(diǎn)數(shù)的并行運(yùn)算,完成的運(yùn)算和浮點(diǎn)運(yùn)算指令中包括的運(yùn)算相同;所述矩陣運(yùn)算指令,完成矩陣的一些基本的和簡(jiǎn)單的運(yùn)算,包括矩陣生成、矩陣轉(zhuǎn)置、矩陣的行列提取、按矩陣行列進(jìn)行求和、矩陣與實(shí)數(shù)的加減乘除、矩陣的加減乘、矩陣的初等變換。一種嵌入式系統(tǒng),包括CPU、總線、SDRAM、矩陣處理器、寄存器組和中斷產(chǎn)生器; CPU、SDRAM、矩陣處理器的外部數(shù)據(jù)接口連接至總線;CPU通過兩條數(shù)據(jù)線分別連接寄存器組和中斷產(chǎn)生器,所述寄存器組連接中斷產(chǎn)生器和矩陣處理器。一種嵌入式系統(tǒng)的工作方法,包括以下步驟1)系統(tǒng)上電后,CPU復(fù)位,從Flash中讀取運(yùn)行boot指令,完成處理器的初始化; 將配置參數(shù)寫入寄存器組,對(duì)矩陣處理器進(jìn)行配置;最后,從SDRAM中加載操作系統(tǒng),準(zhǔn)備開始執(zhí)行應(yīng)用程序;2) CPU將矩陣處理器的指令序列和計(jì)算所需數(shù)據(jù)在SDRAM中的起始和終止地址,寫入寄存器組,并發(fā) 出開始工作信號(hào)給寄存器組,然后釋放總線;矩陣處理器接收到開始工作信號(hào)后,申請(qǐng)占用總線;3)當(dāng)矩陣處理器占用總線后,按照CPU寫入寄存器組中的指令序列和數(shù)據(jù)的起始和終止地址從SDRAM中讀取數(shù)據(jù),分別寫入IRAM和DRAM,然后釋放總線;4)指令序列和數(shù)據(jù)的寫入完成后,矩陣處理器核心開始工作;取指單元依次從 IRAM中讀取指令,發(fā)送給第一譯碼單元;如果接收到第一譯碼單元輸入的指令跳轉(zhuǎn)指令, 則完成相應(yīng)的指令跳轉(zhuǎn);譯第一譯碼單元將接收到的指令進(jìn)行如下處理L/S和移動(dòng)指令發(fā)送給讀寫數(shù)據(jù)單元;跳轉(zhuǎn)指令發(fā)送給取值單元;矩陣和數(shù)學(xué)函數(shù)指令解碼為SIMD或浮點(diǎn)操作指令輸出給第二譯碼單元;SIMD和浮點(diǎn)操作指令直通輸出給第二譯碼單元;讀寫數(shù)據(jù)單元根據(jù)Load指令,讀取DRAM中的數(shù)據(jù),寫入通用寄存器組;第二譯碼單元將第一譯碼單元發(fā)送的指令進(jìn)行解碼發(fā)送給浮點(diǎn)運(yùn)算單元;浮點(diǎn)運(yùn)算單元根據(jù)第二譯碼單元送入的浮點(diǎn)計(jì)算指令,從通用寄存器中讀取相應(yīng)浮點(diǎn)數(shù)據(jù),完成相應(yīng)浮點(diǎn)運(yùn)算,運(yùn)算結(jié)果寫回通用寄存器組;讀寫數(shù)據(jù)單元根據(jù)More指令,將矩陣處理器核心的通用寄存器組中的數(shù)據(jù)寫回 DRAM ;5) IRAM中的指令全部完成,矩陣處理器通過控制單元將相應(yīng)的參數(shù)寫入寄存器組,經(jīng)過中斷產(chǎn)生器產(chǎn)生相應(yīng)的中斷;CPU根據(jù)接收到的中斷和所完成的整體任務(wù)確定矩陣處理器是否繼續(xù)進(jìn)行其他運(yùn)算,若計(jì)算全部完成,控制矩陣處理器將DRAM中的計(jì)算結(jié)果寫入SDRAM的指定地址區(qū)域。指令集是處理器中用來計(jì)算和控制系統(tǒng)的一套指令的集合。每一種處理器在設(shè)計(jì)時(shí)就規(guī)定了一系列與其硬件電路相配合的指令系統(tǒng)。而指令集的先進(jìn)與否,也關(guān)系到處理器的性能,它不僅是提高處理器效率的最有效工具,也是處理器性能體現(xiàn)的一個(gè)重要標(biāo)志。矩陣處理器因所完成功能的原因,其指令集不同于通用CPU,但在指令集設(shè)計(jì)的過程中,仍遵從精簡(jiǎn)指令集計(jì)算機(jī)(RISC)的設(shè)計(jì)理念。(1)指令種類少,格式規(guī)范,指令長(zhǎng)度統(tǒng)一。(2)尋址方式簡(jiǎn)化。(3)大量利用寄存器間操作,只以特定的操作訪問RAM。(4)簡(jiǎn)化處理器結(jié)構(gòu)。(5)加強(qiáng)處理器的并行能力。為實(shí)現(xiàn)一個(gè)可完成各種矩陣運(yùn)算和其他數(shù)學(xué)運(yùn)算的矩陣處理器指令集,矩陣處理器的指令集應(yīng)具有六個(gè)部分L/S和移動(dòng)指令、跳轉(zhuǎn)指令、浮點(diǎn)運(yùn)算指令、數(shù)學(xué)函數(shù)指令、單指令多數(shù)據(jù)(SIMD)指令、矩陣運(yùn)算指令。(1) L (Load) /S (Store)和移動(dòng)指令,完成矩陣處理器緩存和寄存器、寄存器間的數(shù)據(jù)讀取和寫入。(2)跳轉(zhuǎn)指令,完成指令執(zhí)行順序的改變。(3)浮點(diǎn)運(yùn)算指令,完成基本浮點(diǎn)數(shù)運(yùn)算,包括求絕對(duì)值、比較、加、減、乘、除、開方、乘加等運(yùn)算。(4)數(shù)學(xué)函數(shù)指令,完成某些初等數(shù)學(xué)函數(shù)的運(yùn)算,包括三角函數(shù)、反三角函數(shù)、對(duì)數(shù)函數(shù)、指數(shù)函數(shù)等。(5) SIMD (單指令多數(shù)據(jù))指令,完成不同浮點(diǎn)數(shù)的并行運(yùn)算,完成的運(yùn)算和浮點(diǎn)運(yùn)算指令中包括的運(yùn)算相同。(6)矩陣運(yùn)算指令,完成矩陣的一些基本的和簡(jiǎn)單的運(yùn)算,包括矩陣生成、矩陣轉(zhuǎn)置、矩陣的行列提取、按矩陣行列進(jìn)行求和、矩陣與實(shí)數(shù)的加減乘除、矩陣的加減乘、矩陣的初等變換,通過組合這些不同的運(yùn)算,使矩陣處理器能完成復(fù)雜算法。本發(fā)明提出了一種根據(jù)矩陣處理器指令集設(shè)計(jì)矩陣處理器的方法和流程首先根據(jù)實(shí)際需要確定矩陣處理器需要完成哪些指令、矩陣處理器的計(jì)算精度、工作模式、支持的最大矩陣、IRAM和DRAM的大小、運(yùn)算單元的組成、通用寄存器的大小,根據(jù)上述條件設(shè)計(jì)完成指令集格式;然后設(shè)計(jì)完成矩陣處理器的結(jié)構(gòu)及工作流程及異常處理方式等。 本發(fā)明根據(jù)上述指令集和矩陣處理器設(shè)計(jì)方法,根據(jù)具體使用環(huán)境,實(shí)現(xiàn)了一種完成擴(kuò)展單精度的矩陣處理器及其工作機(jī)制需要實(shí)現(xiàn)的具體指令有(1)L/S和移動(dòng)指令,包括LM、SM、LMR、SMR、MOV ;⑵跳轉(zhuǎn)指令,包括 JMP、幾、B、BL ; (3)浮點(diǎn)運(yùn)算指令,包括FABV、FCMP, FCMPZ, FCPY, FNEG, FADD, FSUB, FMUL, FDIV、FSQRT, FNMUL, FMAC, FMSB, NOP ; (4)數(shù)學(xué)函數(shù)指令,包括FSINF、FCOSF, FTANF, FARCSINF、FARCCOSF、FARCTANF ; (5) SIMD 指令,包括SABV、SCMP, SCMPEZ, SCPY, SNEG, SADD, SSUB, SMUL, SDIV、SSQRT, SNMUL, SMAC, SMSB, NOP ; (6)矩陣運(yùn)算指令,包括 MG 匪、MGOM、MGIM、MTRN、MRE、MCE、MCPY、MMRA, MNCA, MRA、MCA、MARN、MSRN、MMRN、MDRN、MAM, MSM、MDMM、MDD、MMM, METRS, METRM、METRA, METCS, METCM、METCA。計(jì)算精度與外部進(jìn)行數(shù)據(jù)交換時(shí)浮點(diǎn)數(shù)精度為符合IEEE754標(biāo)準(zhǔn)的單精度浮點(diǎn)數(shù);內(nèi)部計(jì)算時(shí)使用符合IEEE標(biāo)準(zhǔn)的單精度擴(kuò)展浮點(diǎn)數(shù),其中符號(hào)位1位,指數(shù)位8位,底數(shù)位39位。兩種工作模式工作模式和調(diào)試模式。工作和調(diào)試模式主要通過總線接口改變。 總線接口為主設(shè)備接口時(shí)為工作模式;總線接口為從設(shè)備接口時(shí)為調(diào)試模式。支持最大為32X32的浮點(diǎn)數(shù)矩陣運(yùn)算。IRAM大小為32Kbits ;DRAM為192Kbits (最多可存放4個(gè)32 X 32的矩陣)。運(yùn)算單元由4個(gè)并聯(lián)的完成相同功能的浮點(diǎn)運(yùn)算模塊(FPUl)串聯(lián)到另外1個(gè)浮點(diǎn)運(yùn)算模塊(FPU2)實(shí)現(xiàn)。其中,F(xiàn)PUl完成取絕對(duì)值、浮點(diǎn)數(shù)比較、復(fù)制、取相反數(shù)、加、減、 乘、除、開方、乘積取負(fù)、乘加、乘減、空操作。FPU2完成4輸入浮點(diǎn)加法。通用寄存器組中每個(gè)寄存器為48bits,一共64個(gè),可作為一個(gè)整體使用,也可分組使用,共分四組,每組16個(gè),每組寄存器采用一寫三讀的寄存器文件方式。相對(duì)于現(xiàn)有技術(shù),本發(fā)明具有以下優(yōu)點(diǎn)本發(fā)明矩陣處理器能夠獨(dú)立完成各種矩陣運(yùn)算和其他數(shù)學(xué)運(yùn)算,通過組合這些不同的運(yùn)算,矩陣處理器能完成多種復(fù)雜算法。該處理器完成浮點(diǎn)運(yùn)算速度快,具有很強(qiáng)的靈活性,可以獨(dú)立完成整體算法的運(yùn)算。
圖1為矩陣處理器的基本設(shè)計(jì)圖;圖2為矩陣處理器的浮點(diǎn)數(shù)據(jù)格式;圖3為矩陣處理器與總線的連接方式;圖4為浮點(diǎn)運(yùn)算結(jié)構(gòu)圖;圖5為通用寄存器的結(jié)構(gòu);圖6為矩陣處理器指令集格式;圖7為矩陣處理器核心的結(jié)構(gòu)圖;圖8為矩陣處理器系統(tǒng)的結(jié)構(gòu)圖。
具體實(shí)施方式下面結(jié)合附圖和具體實(shí)施方式
對(duì)本發(fā)明做詳細(xì)說明。為了使矩陣處理器指令集能夠進(jìn)行矩陣計(jì)算,并且實(shí)現(xiàn)完整算法運(yùn)算和控制,矩陣處理器的指令集應(yīng)該具有六個(gè)部分L/S和移動(dòng)指令、跳轉(zhuǎn)指令、浮點(diǎn)操作指令、數(shù)學(xué)函數(shù)指令、單指令多數(shù)據(jù)(SIMD)指令、矩陣運(yùn)算指令。根據(jù)實(shí)際需要,實(shí)現(xiàn)的具體指令有(1)L/S和移動(dòng)指令,包括LM、SM、LMR、SMR、 MOV ; (2)跳轉(zhuǎn)指令,包括JMP、JL、B、BL ; (3)浮點(diǎn)運(yùn)算指令,包括FABV、FCMP、FCMPZ、FCPY、 FNEG, FADD, FSUB, FMUL, FDIV、FSQRT, FNMUL, FMAC, FMSB, NOP ; (4)數(shù)學(xué)函數(shù)指令,包括 FSINF, FCOSF, FTANF, FARCSINF、FARCCOSF、FARCTANF ; (5) SIMD 指令,包括SABV、SCMP, SCMPEZ、SCPY、SNEG、SADD、SSUB、SMUL、SDIV、SSQRT、SNMUL、SMAC、SMSB、NOP ; (6)矩陣運(yùn)算指令,包括MGW、MGOM、MGIM、MTRN、MRE、MCE、MCPY, MMRA, MNCA, MRA, MCA、MARN、MSRN、MMRN、 MDRN、MAM、MSM、MDMM、MDD, MMM、METRS, METRM, METRA, METCS, METCM、METCA。參照?qǐng)D1,為矩陣處理器的基本設(shè)計(jì)結(jié)構(gòu)圖。外部數(shù)據(jù)接口連接矩陣處理器的 IRAM和DRAM,完成矩陣處理器指令的寫入和與外部進(jìn)行數(shù)據(jù)交換的功能,連接方式可以為直接與CPU連接或連接到系統(tǒng)總線。IRAM和DRAM相當(dāng)于矩陣處理器的緩存,IRAM接收外部模塊寫入的指令序列;DRAM接收外部模塊寫入的矩陣或其他數(shù)據(jù)、接收矩陣處理器核心寫入的計(jì)算結(jié)果,供矩陣處理器使用或外部模塊讀出,完成矩陣處理器與外部模塊的數(shù)據(jù)交換。IRAM和DRAM的寬度和深度根據(jù)實(shí)際情況綜合確定。矩陣處理器核心部分完成取指、譯碼、運(yùn)算、寫回和控制功能。矩陣處理器計(jì)算數(shù)據(jù)的精度為與外部進(jìn)行數(shù)據(jù)交換時(shí)浮點(diǎn)數(shù)精度為符合 IEEE7M標(biāo)準(zhǔn)的單精度浮點(diǎn)數(shù);內(nèi)部計(jì)算時(shí)使用符合IEEE7M標(biāo)準(zhǔn)的單精度擴(kuò)展浮點(diǎn)數(shù),其中符號(hào)位1位,指數(shù)位8位,底數(shù)為39位,如圖2所示,其中,符號(hào)位(sign)表示浮點(diǎn)數(shù)的正負(fù);指數(shù)(exponent)為一個(gè)二進(jìn)制浮點(diǎn)數(shù)的指數(shù);尾數(shù)(fraction)為二進(jìn)制浮點(diǎn)數(shù)一部分。單精度擴(kuò)展浮點(diǎn)數(shù)的值表示為value = (-DsignXl. fX2exp_bias(f為尾數(shù),exp為指數(shù),bias為指數(shù)的偏移量,在單精度下bias為127)。工作模式工作模式和調(diào)試模式。確定外部模塊為嵌入式CPU,其與矩陣處理器通過總線連接,如圖3所示。工作和調(diào)試模式通過改變總線接口實(shí)現(xiàn)。通過總線主設(shè)備接口連接矩陣處理器的RAM和總線時(shí)為工作模式,這時(shí)CPU通過向控制寄存器寫入數(shù)據(jù),控制矩陣處理器何時(shí)開始工作,然后矩陣處理器自行從存儲(chǔ)器中讀取所需數(shù)據(jù)進(jìn)行運(yùn)算,運(yùn)算完成后發(fā)出中斷通知CPU計(jì)算完成,CPU不能對(duì)矩陣處理器的IRAM和DRAM進(jìn)行讀寫。通過總線從設(shè)備接口連接矩陣處理器的RAM和總線時(shí)為調(diào)試模式,這時(shí)CPU可以對(duì)矩陣處理器的IRAM和DRAM進(jìn)行讀寫。支持最大為32X32的浮點(diǎn)數(shù)矩陣運(yùn)算。IRAM 大小為 32Kbits(1024X32bits)。DRAM 為 192Kbits 0X 32 X 32 X 48bits,最多可存放4個(gè)32 X 32的矩陣),矩陣數(shù)據(jù)以矩陣起始地址開始按行依次連續(xù)寫入數(shù)據(jù)RAM。浮點(diǎn)運(yùn)算單元如圖4所示,由4個(gè)并聯(lián)的完成相同功能的浮點(diǎn)運(yùn)算模塊(FPUl)串聯(lián)到另外1個(gè)浮點(diǎn)運(yùn)算模塊(FPU》實(shí)現(xiàn)。其中,F(xiàn)PUl完成取絕對(duì)值、兩浮點(diǎn)數(shù)比較、浮點(diǎn)數(shù)與0比較、復(fù)制、取相反數(shù)、加、減、乘、除、開方、乘積取負(fù)、乘力口、乘減、空操作。FPUl的輸入有兩部分譯碼單元輸入的計(jì)算有效信號(hào);通用寄存器組和特殊寄存器輸入的操作數(shù)。其中,譯碼單元輸入的計(jì)算有效信號(hào)包括取絕對(duì)值、兩浮點(diǎn)數(shù)比較、浮點(diǎn)數(shù)與O比較、復(fù)制、取相反數(shù)、加、減、乘、除、開方、乘積取負(fù)、乘加、乘減、空操作和直接輸出的有效信號(hào)。操作數(shù)包括通用寄存器組和特殊寄存器輸入,通常情況下,通用寄存器組的3個(gè)讀出端口(讀出端口 1、讀出端口 2、讀出端口 3)分別對(duì)應(yīng)于FPUl的3個(gè)操作數(shù)輸入端口(操作數(shù)輸入端口 1、操作數(shù)輸入端口 2、操作數(shù)輸入端口 3);當(dāng)特殊寄存器輸入有效信號(hào)有效時(shí),操作數(shù)輸入端口 2的輸入為特殊寄存器輸出數(shù)據(jù)。FPU2完成4輸入浮點(diǎn)加法。輸出控制模塊接收4個(gè) FPUl的輸出和FPU2的輸出,選擇合適的運(yùn)算結(jié)果輸出。圖5所示為通用寄存器組的結(jié)構(gòu)圖。通用寄存器組中每個(gè)寄存器為48bits,一共 64個(gè),可作為一個(gè)整體使用,也可分組使用,共分四組,每組16個(gè),每組寄存器采用1寫3讀的寄存器文件方式,每一組對(duì)應(yīng)一個(gè)FPUl。通用寄存器組的地址為6bits,由兩部分組成 高4位為通用寄存器組分組組內(nèi)地址,低2位為分組編號(hào)。當(dāng)寄存器作為整體使用時(shí),地址從0-63 ;當(dāng)通用寄存器組作為4組分別使用時(shí),分組組內(nèi)地址從0-15,分組編號(hào)從0-3。圖 5 (a)所示為通用寄存器組一個(gè)分組的結(jié)構(gòu)圖,它由3個(gè)寄存器組組成,3個(gè)寄存器組結(jié)構(gòu)功能相同。通用寄存器組一個(gè)分組的輸入有寫數(shù)據(jù)信息,包括寫地址、寫有效和寫數(shù)據(jù);讀數(shù)據(jù)信息,包括讀地址;輸出包括3個(gè)寄存器組的讀出端口(讀出端口 1、讀出端口 2、讀出端口 3)。圖5(b)所示為通用寄存器組的結(jié)構(gòu)圖,它由4個(gè)通用寄存器組的分組、4個(gè)多路選擇器(MUX1、MUX2、MUX3、MUX4)和1個(gè)2_4譯碼器組成。MUXl根據(jù)控制信號(hào),從不同的寫地址輸入中,選擇正確輸入作為寫地址輸入給通用寄存器組。其中組內(nèi)地址同時(shí)輸入給通用寄存器組分組1-4 ;分組編號(hào)輸入給2-4譯碼器,輸出為寫有效信號(hào)(分組編號(hào)為00、01、 IOUl時(shí),輸出分別為通用寄存器 組分組1-4的寫有效信號(hào))。MUX2根據(jù)相同控制信號(hào),從不同的寫數(shù)據(jù)輸入中,選擇正確輸入作為寫入通用寄存器組分組的數(shù)據(jù)給通用寄存器組分組。MUX3根據(jù)控制信號(hào),從不同的讀地址輸入中,選擇正確輸入作為讀通用寄存器組分組的地址給通用寄存器組。MUX4根據(jù)控制信號(hào),從通用寄存器組不同分組的輸出數(shù)據(jù)中,選擇正確輸出作為通用寄存器組的輸出數(shù)據(jù)。根據(jù)以上條件,確定矩陣處理器指令的格式如圖6所示。矩陣處理器指令集分為六類(1)L/S和移動(dòng)指令,完成矩陣處理器數(shù)據(jù)RAM和通用寄存器組間的數(shù)據(jù)交換、移動(dòng)指令完成MPU通用寄存器組中各寄存器間的數(shù)據(jù)交換、通用寄存器組和特殊寄存器的數(shù)據(jù)交換;(2)跳轉(zhuǎn)指令,完成指令地址的跳轉(zhuǎn),包括條件和非條件跳轉(zhuǎn)指令;(3)浮點(diǎn)運(yùn)算指令, 完成浮點(diǎn)數(shù)的數(shù)學(xué)運(yùn)算,包括絕對(duì)值、比較、取反、加、減、乘、除、開方、乘累加等;(4)數(shù)據(jù)函數(shù)指令,完成數(shù)學(xué)函數(shù)運(yùn)算,包括三角函數(shù)、反三角函數(shù)運(yùn)算等;(5) SIMD指令,完成單指令多數(shù)據(jù)運(yùn)算,同時(shí)完成多組浮點(diǎn)運(yùn)算;(6)矩陣運(yùn)算指令,完成矩陣運(yùn)算,包括生成全 0矩陣、全1矩陣、單位陣、轉(zhuǎn)置、提取行、提取列、矩陣復(fù)制、求某行或某列和、按行求和、按列求和、矩陣加減乘除實(shí)數(shù)、矩陣加減、矩陣點(diǎn)乘、矩陣乘法、矩陣初等變換操作。指令類型在指令中通過Type表示,Type為每個(gè)指令的最高4bits,L/S和移動(dòng)指令、跳轉(zhuǎn)指令、浮點(diǎn)運(yùn)算指令、數(shù)學(xué)函數(shù)指令、SIMD指令、矩陣運(yùn)算指令的Type分別為 0001、0010、0011、0100、0101、0110。(1)L/S和移動(dòng)指令。指令的0-3位為0P_code,如表1所示。
表1L/S和移動(dòng)指令Type OP—code指令名
權(quán)利要求
1.一種矩陣處理器,其特征在于,包括外部數(shù)據(jù)接口、IRAM、DRAM、矩陣處理器核心;所述外部數(shù)據(jù)接口連接矩陣處理器的IRAM、DRAM與外部存儲(chǔ)器,完成矩陣處理器指令的寫入和與外部進(jìn)行數(shù)據(jù)交換;所述IRAM和DRAM,相當(dāng)于矩陣處理器的緩存;IRAM接收外部模塊寫入的指令序列; DRAM接收外部模塊寫入的矩陣或其他數(shù)據(jù)、接收矩陣處理器核心寫入的計(jì)算結(jié)果,供矩陣處理器使用或外部模塊讀出,完成矩陣處理器與外部模塊的數(shù)據(jù)交換;所述矩陣處理器核心,用于取指、譯碼、運(yùn)算、結(jié)果寫回和控制。
2.根據(jù)權(quán)利要求1所述的一種矩陣處理器,其特征在于,所述外部數(shù)據(jù)接口、IRAM、 DRAM、矩陣處理器核心共同連接一個(gè)寄存器組,所述寄存器組存放外部數(shù)據(jù)接口、IRAM、 DRAM、矩陣處理器核心的系統(tǒng)信息和交互信息。
3.根據(jù)權(quán)利要求2所述的一種矩陣處理器,其特征在于,所述外部數(shù)據(jù)接口、IRAM、 DRAM、矩陣處理器核心共同連接一個(gè)中斷產(chǎn)生器,外部數(shù)據(jù)接口、IRAM、DRAM、矩陣處理器核心的中斷請(qǐng)求通過寄存器組和中斷產(chǎn)生器輸出給外部CPU。
4.根據(jù)權(quán)利要求1所述的一種矩陣處理器,其特征在于,所述矩陣處理器核心包括取指單元、第一譯碼單元、第二譯碼單元、讀寫數(shù)據(jù)單元、通用寄存器組、浮點(diǎn)運(yùn)算單元和控制單元;IRAM、取指單元、第一譯碼單元、第二譯碼單元、浮點(diǎn)運(yùn)算單元依次連接;浮點(diǎn)運(yùn)算單元、通用寄存器組、讀寫數(shù)據(jù)單元、DRAM依次連接;第一譯碼單元連接所述讀寫數(shù)據(jù)單元。
5.根據(jù)權(quán)利要求4所述的一種矩陣處理器,其特征在于,該矩陣處理器使用的指令集包括L/S和移動(dòng)指令、跳轉(zhuǎn)指令、浮點(diǎn)運(yùn)算指令、數(shù)學(xué)函數(shù)指令、單指令多數(shù)據(jù)指令、矩陣運(yùn)算指令;所述L/S和移動(dòng)指令,完成矩陣處理器緩存和寄存器、寄存器間的數(shù)據(jù)讀取和寫入;所述跳轉(zhuǎn)指令,完成指令執(zhí)行順序的改變;所述浮點(diǎn)運(yùn)算指令,完成基本浮點(diǎn)數(shù)運(yùn)算,包括求絕對(duì)值、比較、加、減、乘、除、開方、乘加運(yùn)算;所述數(shù)學(xué)函數(shù)指令,完成初等數(shù)學(xué)函數(shù)的運(yùn)算,包括三角函數(shù)、反三角函數(shù)、對(duì)數(shù)函數(shù)、 指數(shù)函數(shù);所述SIMD指令,完成不同浮點(diǎn)數(shù)的并行運(yùn)算,完成的運(yùn)算和浮點(diǎn)運(yùn)算指令中包括的運(yùn)算相同;所述矩陣運(yùn)算指令,完成矩陣的一些基本的和簡(jiǎn)單的運(yùn)算,包括矩陣生成、矩陣轉(zhuǎn)置、 矩陣的行列提取、按矩陣行列進(jìn)行求和、矩陣與實(shí)數(shù)的加減乘除、矩陣的加減乘、矩陣的初等變換。
6.根據(jù)權(quán)利要求4或5所述的一種矩陣處理器,其特征在于,取指單元接收控制單元發(fā)送的取指令使能信號(hào),從IRAM中開始循環(huán)讀取指令,發(fā)送指令給第一譯碼單元,并完成跳轉(zhuǎn)指令;第一譯碼單元接收來自取指單元發(fā)送的指令,根據(jù)指令的類別進(jìn)行譯碼,將矩陣運(yùn)算和數(shù)學(xué)函數(shù)運(yùn)算指令轉(zhuǎn)換成SIMD或浮點(diǎn)操作指令寫入第二譯碼單元,將L/S和移動(dòng)指令送入讀寫數(shù)據(jù)單元;讀寫數(shù)據(jù)單元接收第一譯碼單元發(fā)送的數(shù)據(jù)地址和使能信號(hào),完成從DRAM中讀取數(shù)據(jù)寫入通用寄存器組,將通用寄存器組中的數(shù)據(jù)寫入DRAM ;通用寄存器組的寄存器間的數(shù)據(jù)轉(zhuǎn)移;第二譯碼單元接收第一譯碼單元發(fā)送的SIMD和浮點(diǎn)運(yùn)算指令,將指令解碼為浮點(diǎn)操作指令,送給浮點(diǎn)運(yùn)算單元;浮點(diǎn)運(yùn)算單元包括四個(gè)并聯(lián)的第一浮點(diǎn)運(yùn)算模塊和一個(gè)第二浮點(diǎn)運(yùn)算模塊,該四個(gè)并聯(lián)的第一浮點(diǎn)運(yùn)算模塊串聯(lián)到第二浮點(diǎn)運(yùn)算模塊;每個(gè)第一浮點(diǎn)運(yùn)算模塊的目的和源寄存器地址由第二譯碼單元控制;第一浮點(diǎn)運(yùn)算模塊完成擴(kuò)展單精度浮點(diǎn)運(yùn)算,第二浮點(diǎn)運(yùn)算模塊完成擴(kuò)展單精度的4輸入加法;控制單元控制矩陣處理器的運(yùn)行,當(dāng)計(jì)算完成或發(fā)生異常時(shí)發(fā)送中斷信號(hào)給外部CPU。
7.由權(quán)利要求6所述的一種矩陣處理器,其特征在于,所述矩陣處理器還包括一個(gè)特殊寄存器,所述特殊寄存器在矩陣處理器執(zhí)行有實(shí)數(shù)參與的運(yùn)算指令時(shí),保存該實(shí)數(shù)。
8.由權(quán)利要求4所述的一種矩陣處理器構(gòu)建的嵌入式系統(tǒng),其特征在于,包括CPU、總線、SDRAM、矩陣處理器、寄存器組和中斷產(chǎn)生器;CPU、SDRAM、矩陣處理器的外部數(shù)據(jù)接口連接至總線;CPU通過兩條數(shù)據(jù)線分別連接寄存器組和中斷產(chǎn)生器,所述寄存器組連接中斷產(chǎn)生器和矩陣處理器。
9.根據(jù)權(quán)利要求8所述的嵌入式系統(tǒng)的工作方法,其特征在于,包括以下步驟1)系統(tǒng)上電后,CPU復(fù)位,從Flash中讀取運(yùn)行boot指令,完成處理器的初始化;將配置參數(shù)寫入寄存器組,對(duì)矩陣處理器進(jìn)行配置;最后,從SDRAM中加載操作系統(tǒng),準(zhǔn)備開始執(zhí)行應(yīng)用程序;2)CPU將矩陣處理器的指令序列和計(jì)算所需數(shù)據(jù)在SDRAM中的起始和終止地址,寫入寄存器組,并發(fā)出開始工作信號(hào)給寄存器組,然后釋放總線;矩陣處理器接收到開始工作信號(hào)后,申請(qǐng)占用總線;3)當(dāng)矩陣處理器占用總線后,按照CPU寫入寄存器組中的指令序列和數(shù)據(jù)的起始和終止地址從SDRAM中讀取數(shù)據(jù),分別寫入IRAM和DRAM,然后釋放總線;4)指令序列和數(shù)據(jù)的寫入完成后,矩陣處理器核心開始工作;取指單元依次從IRAM中讀取指令,發(fā)送給第一譯碼單元;如果接收到第一譯碼單元輸入的指令跳轉(zhuǎn)指令,則完成相應(yīng)的指令跳轉(zhuǎn);譯第一譯碼單元將接收到的指令進(jìn)行如下處理L/S和移動(dòng)指令發(fā)送給讀寫數(shù)據(jù)單元;跳轉(zhuǎn)指令發(fā)送給取值單元;矩陣和數(shù)學(xué)函數(shù)指令解碼為SIMD或浮點(diǎn)操作指令輸出給第二譯碼單元;SIMD和浮點(diǎn)操作指令直通輸出給第二譯碼單元;讀寫數(shù)據(jù)單元根據(jù)Load指令,讀取DRAM中的數(shù)據(jù),寫入通用寄存器組;第二譯碼單元將第一譯碼單元發(fā)送的指令進(jìn)行解碼發(fā)送給浮點(diǎn)運(yùn)算單元;浮點(diǎn)運(yùn)算單元根據(jù)第二譯碼單元送入的浮點(diǎn)計(jì)算指令,從通用寄存器中讀取相應(yīng)浮點(diǎn)數(shù)據(jù),完成相應(yīng)浮點(diǎn)運(yùn)算,運(yùn)算結(jié)果寫回通用寄存器組; 讀寫數(shù)據(jù)單元根據(jù)Store指令,將矩陣處理器核心的通用寄存器組中的數(shù)據(jù)寫回DRAM ;5)IRAM中的指令全部完成,矩陣處理器通過控制單元將相應(yīng)的參數(shù)寫入寄存器組,經(jīng)過中斷產(chǎn)生器產(chǎn)生相應(yīng)的中斷;CPU根據(jù)接收到的中斷和所完成的整體任務(wù)確定矩陣處理器是否繼續(xù)進(jìn)行其他運(yùn)算,若計(jì)算全部完成,控制矩陣處理器將DRAM中的計(jì)算結(jié)果寫入 SDRAM的指定地址區(qū)域。
全文摘要
本發(fā)明提出一種矩陣處理器及其指令集和嵌入式系統(tǒng),該矩陣處理器包括外部數(shù)據(jù)接口、IRAM、DRAM、矩陣處理器核心;所述外部數(shù)據(jù)接口,連接矩陣處理器的IRAM、DRAM與外部存儲(chǔ)器,完成矩陣處理器指令的寫入和與外部進(jìn)行數(shù)據(jù)交換;所述IRAM和DRAM,相當(dāng)于矩陣處理器的緩存;IRAM接收外部模塊寫入的指令序列;DRAM接收外部模塊寫入的矩陣或其他數(shù)據(jù)、接收矩陣處理器核心寫入的計(jì)算結(jié)果,供矩陣處理器使用或外部模塊讀出,完成矩陣處理器與外部模塊的數(shù)據(jù)交換;所述矩陣處理器核心,用于取指、譯碼、運(yùn)算、結(jié)果寫回和控制。本發(fā)明矩陣處理器能夠獨(dú)立完成各種矩陣運(yùn)算和其他數(shù)學(xué)運(yùn)算。
文檔編號(hào)G06F15/78GK102360344SQ201110303919
公開日2012年2月22日 申請(qǐng)日期2011年10月10日 優(yōu)先權(quán)日2011年10月10日
發(fā)明者張書鋒, 張斌, 李宇海, 梅魁志, 殷浩, 董培祥, 趙晨, 鄭南寧 申請(qǐng)人:西安交通大學(xué)