專利名稱:并行數(shù)字信號(hào)處理器的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種并行數(shù)字信號(hào)處理器,屬數(shù)字信號(hào)處理器技術(shù)領(lǐng)域。
背景技術(shù):
20世紀(jì)60年代以來,隨著計(jì)算技術(shù)和信息技術(shù)的迅速發(fā)展,數(shù)字信號(hào)處理作為一 個(gè)獨(dú)立學(xué)科迅速發(fā)展并在諸多領(lǐng)域得到廣泛應(yīng)用。隨著大規(guī)模集成電路技術(shù)和半導(dǎo)體技術(shù) 的快速發(fā)展以及各種實(shí)時(shí)處理需求的不斷提高,數(shù)字信號(hào)處理能力也以指數(shù)級(jí)的速度飛速 提升,并在科研、軍事以及民用等領(lǐng)域發(fā)揮著越來越重要的作用,數(shù)字信號(hào)處理器件已成為 支撐這些領(lǐng)域高速發(fā)展的重要條件。目前用于數(shù)字信號(hào)實(shí)時(shí)處理的器件有三種通用數(shù)字 信號(hào)處理器、現(xiàn)場(chǎng)可編程門陣列(FPGA)/大規(guī)??删幊踢壿嬈骷?CPLD)和專用集成電路 (ASIC)三種。一方面,三種器件各有局限,通用數(shù)字信號(hào)處理器的優(yōu)勢(shì)在于編程的靈活性和 普適性,但其運(yùn)算能力有限。大容量的FPGA/CPLD內(nèi)部硬件資源較多,但需要針對(duì)具體應(yīng)用 單獨(dú)開發(fā)固件邏輯,人力成本高,且大容量FPGA/CPLD價(jià)格昂貴。傳統(tǒng)的專用集成電路架構(gòu) 與硬線連接固定,功能較單一,其應(yīng)用范圍大受局限。另一方面,數(shù)字信號(hào)處理的技術(shù)要求 卻在不斷提高,隨著寬帶運(yùn)用場(chǎng)合不斷擴(kuò)大、陣列處理的數(shù)目不斷增大、合作及非合作數(shù)目 目標(biāo)處理涉及的運(yùn)算量不斷加大,對(duì)信號(hào)處理的速度要求在不斷加碼。如復(fù)數(shù)1024點(diǎn)FFT 運(yùn)算數(shù)據(jù)率要求在IGbps以上,有些場(chǎng)合需要為5Gbps以上。上述三種器件在功能、價(jià)格、 適應(yīng)性、易用性上越來越難滿足數(shù)字信號(hào)實(shí)時(shí)處理的要求。
發(fā)明內(nèi)容
本發(fā)明的目的在于克服現(xiàn)有通用數(shù)字信號(hào)處理器運(yùn)算能力有限,并行度不足的缺 陷,提供一種運(yùn)算量大、運(yùn)算能力強(qiáng)、應(yīng)用范圍大,且價(jià)格較低的并行數(shù)字信號(hào)處理器。其技術(shù)方案是一種并行數(shù)字信號(hào)處理器,包括_程序存儲(chǔ)器,寬度為16個(gè)字,用于存儲(chǔ)應(yīng)用程序;-取指緩沖單元,用于維護(hù)程序計(jì)數(shù)器并向所述程序存儲(chǔ)器提供地址,緩存來自程 序存儲(chǔ)器的指令,將指令拼接成一個(gè)并行執(zhí)行(xing)行(htog)發(fā)射到譯碼單元;-譯碼單元,用于對(duì)所述執(zhí)行行中的每條指令進(jìn)行譯碼,按照機(jī)器碼編排形式,指 令分為九類,即,三操作數(shù)運(yùn)算指令、兩操作數(shù)運(yùn)算指令、訪存指令、控制/標(biāo)志寄存器讀指 令、控制/標(biāo)志寄存器寫指令、程序流控制指令、核間傳輸指令、地址寄存器訪問指令以及 立即數(shù)賦值指令,譯碼單元將這九類指令翻譯為第一類、第二類、第三類和第四類控制信號(hào) 組;-執(zhí)行核,共有4個(gè),每個(gè)執(zhí)行核包括15個(gè)運(yùn)算單元、以及1個(gè)寄存器文件 (registerfile),用于執(zhí)行核接受所述譯碼單元產(chǎn)生的第一類、第二類控制信號(hào)組,并根據(jù) 控制信號(hào)組的狀態(tài)進(jìn)行指令的執(zhí)行處理;-地址產(chǎn)生單元,共3個(gè),用于接受所述譯碼單元產(chǎn)生的第三類控制信號(hào)組,并根 據(jù)控制信號(hào)組的狀態(tài)進(jìn)行存儲(chǔ)器訪問的處理;
-控制/標(biāo)志寄存器訪問單元,用于接受所述譯碼單元產(chǎn)生的第四類控制信號(hào)組, 并根據(jù)控制信號(hào)組的狀態(tài)進(jìn)行控制/標(biāo)志寄存器訪問指令的執(zhí)行處理;-數(shù)據(jù)存儲(chǔ)器,共3塊,每塊寬度為8個(gè)字,用于接受來自所述執(zhí)行核的16個(gè)字的 讀請(qǐng)求和8個(gè)字的寫請(qǐng)求;-數(shù)據(jù)總線為數(shù)據(jù)讀總線和數(shù)據(jù)寫總線,用于連接數(shù)據(jù)存儲(chǔ)器和執(zhí)行核。其技術(shù)效果是本發(fā)明的并行數(shù)字信號(hào)處理器,采用單指令流多數(shù)據(jù)流(SIMD)結(jié) 構(gòu),具有4個(gè)執(zhí)行核總共60個(gè)運(yùn)算單元,能夠并行執(zhí)行60個(gè)運(yùn)算操作,實(shí)現(xiàn)了專用大規(guī)模 集成電路的運(yùn)算能力和運(yùn)算的高度并行化,且采用軟件方式進(jìn)行應(yīng)用開發(fā),具有一般通用 數(shù)字信號(hào)處理器的靈活性和普適性,與傳統(tǒng)數(shù)字信號(hào)處理器相比,峰值運(yùn)算性能提高了 8 倍;同時(shí),為了配合執(zhí)行單元的高度并行而提供的多端口寄存器文件,具有31個(gè)寫端口、37 個(gè)讀端口,支持31個(gè)寫操作和37個(gè)讀操作并行執(zhí)行,保障了運(yùn)算單元的數(shù)據(jù)吞吐需求;另 外,為了配合4個(gè)執(zhí)行核的數(shù)據(jù)吞吐需求而提供的大帶寬、并行數(shù)據(jù)讀寫總線,保障了在同 一時(shí)刻,執(zhí)行核能夠從數(shù)據(jù)存儲(chǔ)器讀取16個(gè)字,同時(shí)向數(shù)據(jù)存儲(chǔ)器寫入8個(gè)字,滿足了執(zhí)行 核的數(shù)據(jù)吞吐需求。
圖1是本發(fā)明的硬件架構(gòu)圖;圖2是指令格式;圖3是本發(fā)明指令實(shí)例圖;圖4是取指緩沖單元原理示意圖;圖5是取指緩沖單元中的執(zhí)行行拼接實(shí)例圖表;圖6是譯碼單元原理示意圖;圖7是第一類控制信號(hào)組的產(chǎn)生原理示意圖;圖8是第二類控制信號(hào)組的產(chǎn)生原理示意圖;圖9是第三類控制信號(hào)組的產(chǎn)生原理示意圖;圖10是第四類控制信號(hào)組的產(chǎn)生原理示意圖;圖11是第一類控制信號(hào)組功能圖表;圖12是第二類控制信號(hào)組功能圖表;圖13是第三類控制信號(hào)組功能圖表;圖14是第四類控制信號(hào)組功能圖表;圖15是執(zhí)行核硬件架構(gòu)圖;圖16是寄存器文件輸入輸出端口示意圖;圖17是寄存器文件內(nèi)部結(jié)構(gòu)示意圖;
圖18是寄存器文件端口的互連關(guān)系圖表;圖19是執(zhí)行核之間的互連架構(gòu)圖;圖20是數(shù)據(jù)存儲(chǔ)器與數(shù)據(jù)讀總線架構(gòu)圖;圖21是數(shù)據(jù)存儲(chǔ)器與數(shù)據(jù)寫總線架構(gòu)圖;圖22是地址產(chǎn)生單元原理示意圖;圖23是本發(fā)明指令執(zhí)行流程圖24是運(yùn)行于并行數(shù)字信號(hào)處理器的匯編程序?qū)嵗龍D表。
具體實(shí)施例方式下面結(jié)合附圖對(duì)本發(fā)明作進(jìn)一步說明。如圖1所示,一種并行數(shù)字信號(hào)處理器,采用單指令流多數(shù)據(jù)流(SIMD)結(jié)構(gòu),包 括-程序存儲(chǔ)器,為單端口存儲(chǔ)器,寬度為16個(gè)字,每個(gè)字的寬度為32位,深度為 8192,用于存儲(chǔ)應(yīng)用程序;-取指緩沖單元,用于維護(hù)程序計(jì)數(shù)器并向所述程序存儲(chǔ)器提供地址,緩存來自程 序存儲(chǔ)器的指令,將指令拼接成一個(gè)并行執(zhí)行(xing)行(htog)發(fā)射到譯碼單元;-譯碼單元,用于對(duì)所述執(zhí)行行中的每條指令進(jìn)行譯碼,按照機(jī)器碼編排形式,指 令分為九類,即,三操作數(shù)運(yùn)算指令、兩操作數(shù)運(yùn)算指令、訪存指令、控制/標(biāo)志寄存器讀指 令、控制/標(biāo)志寄存器寫指令、程序流控制指令、核間傳輸指令、地址寄存器訪問指令以及 立即數(shù)賦值指令,譯碼單元將這九類指令翻譯為第一類、第二類、第三類和第四類控制信號(hào) 組;_執(zhí)行核,共有4個(gè),每個(gè)執(zhí)行核包括15個(gè)運(yùn)算單元、以及1個(gè)寄存器文件 (registerfile),用于執(zhí)行核接受所述譯碼單元產(chǎn)生的第一類、第二類控制信號(hào)組,并根據(jù) 控制信號(hào)組的狀態(tài)進(jìn)行指令的執(zhí)行處理;-地址產(chǎn)生單元,共3個(gè),用于接受所述譯碼單元產(chǎn)生的第三類控制信號(hào)組,并根 據(jù)控制信號(hào)組的狀態(tài)進(jìn)行存儲(chǔ)器訪問的處理;-控制/標(biāo)志寄存器訪問單元,用于接受所述譯碼單元產(chǎn)生的第四類控制信號(hào)組, 并根據(jù)控制信號(hào)組的狀態(tài)進(jìn)行控制/標(biāo)志寄存器訪問指令的執(zhí)行處理;-數(shù)據(jù)存儲(chǔ)器,為雙端口存儲(chǔ)器,共3塊,每塊寬度為8個(gè)字,每個(gè)字寬度為32位, 深度為32768,用于接受來自所述執(zhí)行核的16個(gè)字的讀請(qǐng)求和8個(gè)字的寫請(qǐng)求;-數(shù)據(jù)總線為數(shù)據(jù)讀總線和數(shù)據(jù)寫總線,用于連接數(shù)據(jù)存儲(chǔ)器和執(zhí)行核。如圖2所示,并行數(shù)字信號(hào)處理器的指令分為九類,S卩,三操作數(shù)運(yùn)算指令、兩操 作數(shù)運(yùn)算指令、訪存指令、控制/標(biāo)志寄存器寫指令、控制標(biāo)志寄存器讀指令、程序流控制 指令、核間傳輸指令、地址寄存器訪問指令、立即數(shù)賦值指令。除程序流控制指令之外,每條 指令之前帶有執(zhí)行核前綴,帶有χ前綴時(shí),表明該指令需要X執(zhí)行核配合執(zhí)行;帶有y前綴 時(shí),表明該指令需要Y執(zhí)行核配合執(zhí)行;帶有ζ前綴時(shí),表明該指令需要Z執(zhí)行核配合執(zhí)行; 帶有t前綴時(shí),表明該指令需要T執(zhí)行核配合執(zhí)行。執(zhí)行核前綴在指令機(jī)器碼中表現(xiàn)為指令的第[30:27]位的執(zhí)行核標(biāo)志,第[27]位 代表X核,第[28]位代表y核,第[29]位代表ζ核,第[30]位代表t核,在指令助記符中 出現(xiàn)哪個(gè)執(zhí)行核前綴,則對(duì)應(yīng)指令機(jī)器碼的執(zhí)行核標(biāo)志位就為1,否則為0。例如某條指令 帶有前綴xy,則對(duì)應(yīng)指令機(jī)器碼的第[30:27]位的值就是二進(jìn)制“0011”。如圖3所示,在指令的助記符中,用R表示寄存器文件中的通用寄存器,用下標(biāo)m、 n、s表示通用寄存器的序號(hào),例如Rm、Rn、RS (表示通用寄存器序號(hào)的m、n、s為整數(shù),范圍在 0至63之間);用兩個(gè)序號(hào)之間加冒號(hào)()的方式表示一個(gè)寄存器對(duì),如Rm+l:m、Rn+l:n、 Rs+1 s ;用寄存器對(duì)之前加前綴C表示一個(gè)復(fù)數(shù),如CRm+1 :m ;在寄存器或寄存器對(duì)之前F表示該寄存器或寄存器對(duì)之內(nèi)寄存的是浮點(diǎn)格式數(shù)據(jù),例如FRs。寄存器前綴C和F可以同 時(shí)出現(xiàn),例如CFRs+l:s表示一個(gè)浮點(diǎn)格式的復(fù)數(shù)Rs+1+jRs。三操作數(shù)運(yùn)算指令在操作數(shù)為實(shí)數(shù)的情況下,三操作數(shù)運(yùn)算指令有Rm、Rn兩個(gè)源操作數(shù)、Rs 一個(gè)目 的操作數(shù);在操作數(shù)為復(fù)數(shù)的情況下,三操作數(shù)運(yùn)算指令有Rm+1+jRm和Rn+1+jRn兩個(gè)復(fù) 數(shù)的源操作數(shù),一個(gè)Rs+1+jRs的復(fù)數(shù)目的操作數(shù),其中Rm+l、Rn+l、Rs+l代表復(fù)數(shù)的實(shí)部, Rm、Rn、Rs代表復(fù)數(shù)的虛部,并且在指令助記符中,上述三個(gè)復(fù)數(shù)分別用CRm+1 :m、CRn+1 :n、 CRs+1: s表示,并行數(shù)字信號(hào)處理器指令集中的所有其他操作數(shù)為復(fù)數(shù)的指令,都采用這 種復(fù)數(shù)表示方式。如指令xyztCRs+l:s = CRm+1 :m+CRn+l:n,表示在XYZT執(zhí)行核中全部執(zhí) 行一條復(fù)數(shù)加法指令,這個(gè)復(fù)數(shù)加法的被加數(shù)和加數(shù)分別為Rm+1+jRm和Rn+1+jRn,其和為 Rs+1+jRs。兩操作數(shù)運(yùn)算指令在操作數(shù)為實(shí)數(shù)的情況下,兩操作數(shù)運(yùn)算指令有Rm —個(gè)源操作數(shù)、Rs 一個(gè)目的 操作數(shù);在操作數(shù)為復(fù)數(shù)的情況下,兩操作數(shù)運(yùn)算指令有Rm+1+jRm —個(gè)復(fù)數(shù)的源操作數(shù)和 Rs+l:Rs—個(gè)目的操作數(shù)。例如xyztRs = Rm binv,表示在XYZT執(zhí)行核中全部執(zhí)行一條按 位取反指令,將源操作數(shù)Rm的每一位取反,結(jié)果放入目的操作數(shù)Rs。訪存指令訪存指令分為讀訪存和寫訪存兩種,讀訪存指令將數(shù)據(jù)存儲(chǔ)器中的數(shù)據(jù)通過讀總 線讀入執(zhí)行核中的寄存器文件;寫訪存指令將執(zhí)行核中的寄存器文件內(nèi)容寫入數(shù)據(jù)存儲(chǔ) 器。每條讀(寫)訪存指令可以讀(寫)2個(gè)、4個(gè)、6個(gè)或8個(gè)字的數(shù)據(jù),具體讀(寫)字的 個(gè)數(shù)根據(jù)指令的xyzt前綴來決定,當(dāng)指令只帶有1個(gè)執(zhí)行核前綴時(shí),訪存指令可讀(寫)2 個(gè)字,當(dāng)指令只帶有2個(gè)個(gè)執(zhí)行核前綴時(shí),訪存指令可讀(寫)4個(gè)字,當(dāng)指令帶有3個(gè)執(zhí)行 核前綴時(shí),訪存指令可讀(寫)6個(gè)字,當(dāng)指令帶有4個(gè)執(zhí)行核前綴時(shí),訪存指令可讀(寫)8 個(gè)字。例如指令xyztRs+Ι s = [Um+ = Un, Uk]就是同時(shí)將Um、Um+1地址的兩個(gè)字讀入執(zhí) 行核X的Rs和Rs+Ι寄存器、Um+Uk、Um+Uk+l地址的兩個(gè)字讀入執(zhí)行核Y的Rs和Rs+Ι寄存 器、Um+2Uk、Um+2Uk+l地址的兩個(gè)字讀入執(zhí)行核Z的Rs和Rs+Ι寄存器、Um+3Uk、Um+3Uk+l 地址的兩個(gè)字讀入執(zhí)行核T的Rs和Rs+Ι寄存器,同時(shí)基地址寄存器Um自增Un0控制/標(biāo)志寄存器讀指令控制/標(biāo)志寄存器讀指令用于將控制/標(biāo)志寄存器的內(nèi)容讀入各個(gè)執(zhí)行核的寄存 器文件。控制/標(biāo)志寄存器的位寬都是32位,包括中斷類控制/標(biāo)志寄存器、全局控制/ 標(biāo)志寄存器、執(zhí)行核的控制標(biāo)/志寄存器。這些控制/標(biāo)志寄存器每一個(gè)都對(duì)應(yīng)一個(gè)唯一 的編號(hào),控制/標(biāo)志寄存器讀指令的指令形式中引用的就是這個(gè)編號(hào)。例如XRs=
就是將編號(hào)為0x800的全局控制/標(biāo)志寄存器的內(nèi)容讀入執(zhí)行核X中的寄存器文件的Rs 寄存器。控制/標(biāo)志寄存器寫指令控制/標(biāo)志寄存器寫指令用于將各個(gè)執(zhí)行核的寄存器文件的內(nèi)容寫入控制/標(biāo)志 寄存器。與控制/標(biāo)志寄存器讀指令類似,控制/標(biāo)志寄存器寫指令也是通過引用對(duì)應(yīng)控 制/標(biāo)志寄存器的編號(hào)來對(duì)其進(jìn)行寫操作。例如Wx800] =yRm指令就是將執(zhí)行核Y中的 寄存器文件的Rm寄存器的內(nèi)容寫入編號(hào)為0x800的全局控制/標(biāo)志寄存器。
7
程序流控制指令程序流控制指令包括跳轉(zhuǎn)、子程序調(diào)用、子程序返回、中斷返回指令。跳轉(zhuǎn)指令使 程序流跳轉(zhuǎn)到標(biāo)號(hào)所指定的位置繼續(xù)執(zhí)行,例如B label指令,使得程序流在執(zhí)行到這條指 令時(shí),直接跳轉(zhuǎn)到標(biāo)號(hào)label所指示的位置。子程序調(diào)用指令通過引用子程序入口標(biāo)號(hào)來 調(diào)用子程序,例如call label指令,就是調(diào)用了標(biāo)號(hào)label所指示的入口地址的子程序。子 程序返回指令的指令形式為ret,在應(yīng)用程序中處于一個(gè)子程序的最后,作用是在子程序執(zhí) 行完畢之后返回調(diào)用該子程序的那一級(jí)程序。中斷返回指令與子程序返回指令類似,指令 形式為reti,作用是在中斷服務(wù)子程序執(zhí)行完畢之后返回被中斷的那一級(jí)程序。核間傳輸指令核間傳輸指令,將一個(gè)執(zhí)行核中的通用寄存器對(duì)Rm+1 :m的2個(gè)32位字,傳輸?shù)搅?一個(gè)或多個(gè)執(zhí)行核中的通用寄存器對(duì)Rs+Ι s。Rm+1 :m為源寄存器對(duì),Rs+1 s為目的寄存器 對(duì)。源寄存器對(duì)之前的執(zhí)行核前綴只能有1個(gè),目的寄存器對(duì)之前的執(zhí)行核前綴能夠有最 少1個(gè),最多3個(gè),且目的寄存器對(duì)的執(zhí)行核前綴不得與源寄存器之前的執(zhí)行核前綴相同。 例如指令xyzRs+Ι s = tRm+1 :m表示將執(zhí)行核T中的Rm+1和Rm兩個(gè)寄存器的內(nèi)容分別傳 入執(zhí)行核X、Y、Z的Rs+Ι和Rs兩個(gè)寄存器。地址寄存器訪問指令地址寄存器訪問指令有兩種,第一種是向地址寄存器賦值,第二種是將地址寄存 器的值讀入執(zhí)行核的寄存器文件。例如Us = xRm指令就是將執(zhí)行核X中的寄存器文件中 的Rm的值賦給U地址產(chǎn)生單元中的Us地址寄存器。再如指令xRs = Um就是將U地址產(chǎn) 生單元中的Um地址寄存器的內(nèi)容讀入到執(zhí)行核X中的Rs寄存器。立即數(shù)賦值指令立即數(shù)賦值指令是指通過指令,直接給執(zhí)行核的寄存器文件中的寄存器賦以32 位立即數(shù)。在機(jī)器碼表示中,因?yàn)榱⒓磾?shù)本身是32位,再加上操作碼、執(zhí)行核標(biāo)志、執(zhí)行行 結(jié)束標(biāo)志,必須以超過32位的位寬才能表達(dá)立即數(shù)賦值指令,因此一個(gè)立即數(shù)賦值指令被 定義為64位。指令形式直接就是對(duì)一個(gè)通用寄存器的賦值。例如,xyRs = Oxff指令,就 是將立即數(shù)Oxff賦給執(zhí)行核X和執(zhí)行核Y的Rs寄存器。如圖4所示,取指緩沖單元包含4級(jí)指令緩沖,即,第一級(jí)指令緩沖、第二級(jí)指令緩 沖、第三級(jí)指令緩沖、第四級(jí)指令緩沖,每一級(jí)指令緩沖的寬度為16個(gè)字。執(zhí)行行拼接邏輯 從第三級(jí)指令緩沖和第四級(jí)指令緩沖中按順序選擇指令拼接成執(zhí)行行,指令被選擇拼接為 執(zhí)行行之后,該指令在指令緩沖中對(duì)應(yīng)的位置被填充為氣泡(氣泡,即全零的數(shù)值)。取指緩沖單元每次從程序存儲(chǔ)器獲得16個(gè)字的指令,并對(duì)來自程序存儲(chǔ)器的指 令進(jìn)行分析,當(dāng)來自程序存儲(chǔ)器的指令中包含分支類型指令時(shí),用分支目標(biāo)地址更新程序 計(jì)數(shù)器(PC)以用于下一次的取指;反之,當(dāng)來自程序存儲(chǔ)器的指令中沒有分支類型指令 時(shí),程序計(jì)數(shù)器自增16個(gè)字以用于下一次取指。取指緩沖單元包含一個(gè)寬度為16個(gè)字、深度為4的指令緩沖,指令緩沖對(duì)來自程 序存儲(chǔ)器的指令進(jìn)行并行規(guī)則分析,將能夠并行執(zhí)行的指令拼接成執(zhí)行行,并將執(zhí)行行發(fā) 射到譯碼單元,根據(jù)應(yīng)用程序的不同,一個(gè)執(zhí)行行能夠包含最少1條、最多16條指令。指 令之間是否能夠并行執(zhí)行,由指令中的行結(jié)束位指定,行結(jié)束位總是位于32位指令的最高 位,即第31位(定義32位字的最高位為第31位,最低位為第0位,下同)。執(zhí)行行的最后一條指令,其行結(jié)束位為1 ;不是執(zhí)行行最后一條指令,其行結(jié)束位為0?;诖?,執(zhí)行行拼 接的規(guī)則是,檢查指令中的行結(jié)束位,將行結(jié)束位為1的指令及其之前的所有行結(jié)束位為0 的連續(xù)指令拼接為一個(gè)執(zhí)行行。根據(jù)指令的動(dòng)態(tài)分布情況,執(zhí)行行拼接分為三種情況,第一種情況下,在第四級(jí)指 令緩沖中存在完整的執(zhí)行行,并且該執(zhí)行行的最后一條指令不是處在第四級(jí)指令緩沖的 第16位置,此時(shí)直接從第四級(jí)指令緩沖中取出該執(zhí)行行,并把指令取出后的位置填充為氣 泡。第二種情況下,在第四級(jí)指令緩沖中存在完整的執(zhí)行行,并且該執(zhí)行行的最后一條指令 處在第四級(jí)指令緩沖的第16位置,此時(shí)直接從第四級(jí)指令緩沖中取出該執(zhí)行行,并用第三 級(jí)指令緩沖的內(nèi)容更新第四級(jí)指令緩沖,同時(shí)用第二級(jí)指令緩沖的內(nèi)容更新第三級(jí)指令緩 沖、用第一級(jí)指令緩沖的內(nèi)容更新第二級(jí)指令緩沖、用來自程序存儲(chǔ)器的內(nèi)容更新第一級(jí) 指令緩沖。第三種情況下,執(zhí)行行的一部分處于第四級(jí)指令緩沖,另一部分處于第三級(jí)指令 緩沖,此時(shí)分別從第四級(jí)指令緩沖和第三級(jí)指令緩沖中取出這兩部分,拼接成一個(gè)執(zhí)行行, 并用第三級(jí)指令緩沖中余下的指令與氣泡并置,組成16個(gè)字的內(nèi)容來更新第四級(jí)指令緩 沖,同時(shí)用第二級(jí)指令緩沖的內(nèi)容更新第三級(jí)指令緩沖、用第一級(jí)指令緩沖的內(nèi)容更新第 二級(jí)指令緩沖、用來自程序存儲(chǔ)器的內(nèi)容更新第一級(jí)指令緩沖。圖5所示為執(zhí)行行拼接的 第三種情況下,一個(gè)執(zhí)行行在取指緩沖單元中拼接的例子。每一級(jí)指令緩沖是否更新由緩沖更新邏輯來決定,緩沖更新邏輯檢測(cè)每一級(jí)指令 緩沖的狀態(tài),根據(jù)各級(jí)指令緩沖的狀態(tài)來決定每一級(jí)指令緩沖是否更新。指令緩沖的更新 原則是當(dāng)?shù)谒募?jí)指令緩沖中的所有指令都被用于執(zhí)行行拼接,則用第三級(jí)指令緩沖的內(nèi) 容更新第四級(jí)指令緩沖、用第二級(jí)指令緩沖的內(nèi)容更新第三級(jí)指令緩沖、用第一級(jí)指令緩 沖的內(nèi)容更新第二級(jí)指令緩沖、用來自程序存儲(chǔ)器的內(nèi)容更新第一級(jí)指令緩沖。如圖6所示,譯碼單元的功能分為兩級(jí),第一級(jí)將執(zhí)行行中的指令進(jìn)行分類譯碼, 第二級(jí)將第一級(jí)譯碼出的控制信號(hào)形成控制信號(hào)組。譯碼單元把來自取指緩沖單元的執(zhí)行行翻譯為控制信號(hào)組,分發(fā)給所述的4個(gè)執(zhí) 行核和控制/標(biāo)志寄存器訪問單元??刂菩盘?hào)組中的不同位域,是對(duì)不同執(zhí)行單元的控制 命令。所述第一類控制信號(hào)組,用于控制執(zhí)行核中的15個(gè)運(yùn)算單元,進(jìn)行運(yùn)算操作;所述第 二類控制信號(hào)組,用于控制所述執(zhí)行核中的寄存器文件的輸入/輸出選擇,執(zhí)行對(duì)寄存器 文件的訪問;所述第三類控制信號(hào)組,用于控制3個(gè)地址產(chǎn)生單元,進(jìn)行存儲(chǔ)器訪問操作; 所述第四類控制信號(hào)組,送給控制/標(biāo)志寄存器訪問單元,用于控制/標(biāo)志寄存器訪問。程序流控制類指令已經(jīng)在取指緩沖單元中被翻譯、并用于程序流控制,故在譯碼 單元中就只剩下8類指令需要翻譯。譯碼單元第一級(jí)用6種譯碼器對(duì)這8類指令進(jìn)行譯碼, 即,運(yùn)算類指令譯碼(對(duì)三操作數(shù)運(yùn)算指令和兩操作數(shù)運(yùn)算指令進(jìn)行譯碼)、訪存類指令譯 碼、控制/標(biāo)志寄存器訪問類指令譯碼(對(duì)控制/標(biāo)志寄存器讀指令和控制/標(biāo)志寄存器 寫指令進(jìn)行譯碼)、核間傳輸類指令譯碼、地址寄存器訪問類指令譯碼、立即數(shù)賦值類指令 譯碼。運(yùn)算類指令譯碼,由16個(gè)運(yùn)算類譯碼器并行完成;控制/標(biāo)志寄存器訪問類指令譯 碼,由4個(gè)控制/標(biāo)志寄存器訪問類指令譯碼器并行完成;核間傳輸類指令譯碼,由4個(gè)核 間傳輸類指令譯碼器并行完成;地址寄存器訪問類指令譯碼,由4個(gè)地址寄存器訪問類指 令譯碼器并行完成;立即數(shù)賦值類指令譯碼,由4個(gè)立即數(shù)賦值類指令譯碼器并行完成;訪 存類指令譯碼,由3個(gè)訪存類指令譯碼器并行完成。
上述6類譯碼分別產(chǎn)生的控制信號(hào)有運(yùn)算類指令譯碼產(chǎn)生第一類控制信號(hào)和第 二類控制信號(hào);訪存類指令譯碼產(chǎn)生第二類控制信號(hào)和第三類控制信號(hào);控制/標(biāo)志寄存 器訪問類指令譯碼產(chǎn)生第二類和四類控制信號(hào);核間傳輸類指令譯碼產(chǎn)生第二類控制信 號(hào);地址寄存器訪問類指令譯碼產(chǎn)生第二類和第三類控制信號(hào);立即數(shù)賦值類指令譯碼產(chǎn) 生第二類控制信號(hào)。上述控制信號(hào)中,第一類控制信號(hào)和第二類控制信號(hào)分別用于控制四 個(gè)執(zhí)行核中的運(yùn)算單元和寄存器文件,因此第一類控制信號(hào)和第二類控制信號(hào)中帶有執(zhí)行 核信息,即將指令中的執(zhí)行核標(biāo)志隨著第一類和第二類控制信號(hào)一起輸入到譯碼單元的第 二級(jí)。譯碼單元的第二級(jí),將上述六類指令譯碼產(chǎn)生的控制信號(hào)按照一定規(guī)則提取、組 合起來,就形成了四類控制信號(hào)組。如圖7所示,第一類控制信號(hào)組形成的過程是,提取運(yùn)算類指令譯碼產(chǎn)生的第一 類控制信號(hào),將伴隨第一類控制信號(hào)的執(zhí)行核標(biāo)志的最低位,即執(zhí)行核X標(biāo)志,和第一類控 制信號(hào)逐位進(jìn)行與運(yùn)算,就形成了送給執(zhí)行核X的第一類控制信號(hào)組。類似地,將執(zhí)行核標(biāo) 志的次低位,即執(zhí)行核Y標(biāo)志,和第一類控制信號(hào)逐位進(jìn)行與運(yùn)算,形成送給執(zhí)行核Y的第 一類控制信號(hào)組;將執(zhí)行核標(biāo)志的次高位,即執(zhí)行核Z標(biāo)志,和第一類控制信號(hào)逐位進(jìn)行與 運(yùn)算,形成送給執(zhí)行核Z的第一類控制信號(hào)組;將執(zhí)行核標(biāo)志的最高位,即執(zhí)行核T標(biāo)志,和 第一類控制信號(hào)逐位進(jìn)行與運(yùn)算,形成送給執(zhí)行核T的第一類控制信號(hào)組。第一類控制信 號(hào)組中各個(gè)信號(hào)的具體定義如圖11所示。如圖8所示,第二類控制信號(hào)組形成的過程是,分別提取運(yùn)算類指令譯碼、訪存類 指令譯碼、控制/標(biāo)志寄存器訪問類指令譯碼、核間傳輸類指令譯碼、地址寄存器訪問類指 令譯碼、立即數(shù)賦值類指令譯碼產(chǎn)生的第二類控制信號(hào),將伴隨第二類控制信號(hào)的執(zhí)行核 標(biāo)志的最低位,即執(zhí)行核X標(biāo)志,和第二類控制信號(hào)逐位進(jìn)行與運(yùn)算,形成針對(duì)執(zhí)行核X的 第二類控制信號(hào),將所有針對(duì)執(zhí)行核X的控制信號(hào)逐位進(jìn)行或運(yùn)算,就形成了送給執(zhí)行核X 的第二類控制信號(hào)組。類似地,將執(zhí)行核標(biāo)志的次低位,即執(zhí)行核Y標(biāo)志,和第二類控制信 號(hào)逐位進(jìn)行與運(yùn)算,形成針對(duì)執(zhí)行核Y的第二類控制信號(hào),將所有針對(duì)執(zhí)行核Y的控制信號(hào) 逐位進(jìn)行或運(yùn)算,就形成了送給執(zhí)行核Y的第二類控制信號(hào)組;將執(zhí)行核標(biāo)志的次高位,即 執(zhí)行核Z標(biāo)志,和第二類控制信號(hào)逐位進(jìn)行與運(yùn)算,形成針對(duì)執(zhí)行核Z的第二類控制信號(hào), 將所有針對(duì)執(zhí)行核Z的控制信號(hào)逐位進(jìn)行或運(yùn)算,就形成了送給執(zhí)行核Z的第二類控制信 號(hào)組;將執(zhí)行核標(biāo)志的最高位,即執(zhí)行核T標(biāo)志,和第二類控制信號(hào)逐位進(jìn)行與運(yùn)算,形成 針對(duì)執(zhí)行核T的第二類控制信號(hào),將所有針對(duì)執(zhí)行核T的控制信號(hào)逐位進(jìn)行或運(yùn)算,就形成 了送給執(zhí)行核T的第二類控制信號(hào)組。第二類控制信號(hào)組中各個(gè)信號(hào)的具體定義如圖12 所示。如圖9所示,第三類控制信號(hào)組的形成過程是,將3個(gè)訪存類指令譯碼器輸出的 控制信號(hào)逐位進(jìn)行或運(yùn)算,將4個(gè)地址寄存器訪問類指令譯碼器的輸出信號(hào)逐位進(jìn)行或運(yùn) 算,然后將上述兩個(gè)或運(yùn)算的結(jié)果并置,就得到了第三類控制信號(hào)組。第三類控制信號(hào)組中 各個(gè)信號(hào)的具體定義如圖13所示。如圖10所示,第四類控制信號(hào)組的形成過程是,將4個(gè)控制/標(biāo)志寄存器訪問類 指令譯碼器的輸出控制信號(hào)逐位進(jìn)行或運(yùn)算,就得到了第四類控制信號(hào)組。第四類控制信 號(hào)組中各個(gè)信號(hào)的具體定義如圖14所示。
如圖15所示,4個(gè)執(zhí)行核分別為執(zhí)行核X、執(zhí)行核Y、執(zhí)行核Z和執(zhí)行核,每個(gè)執(zhí) 行核包括15個(gè)運(yùn)算單元,其中8個(gè)算術(shù)邏輯單元(ALU),用于執(zhí)行實(shí)數(shù)和復(fù)數(shù)的加法、減法、 累加、累減操作;4個(gè)乘法器,用于執(zhí)行實(shí)數(shù)和復(fù)數(shù)的乘法、乘法累加操作;2個(gè)移位器,用于 執(zhí)行移位、位域操作;1個(gè)特定運(yùn)算單元,用于執(zhí)行超越函數(shù)運(yùn)算、定點(diǎn)數(shù)浮點(diǎn)數(shù)相互轉(zhuǎn)換 操作。根據(jù)譯碼單元送來的第一類控制信號(hào)組,決定15個(gè)運(yùn)算單元是否執(zhí)行運(yùn)算操作,以 及具體執(zhí)行哪些運(yùn)算操作。每個(gè)執(zhí)行核內(nèi)還包括一個(gè)寄存器文件,寄存器文件受第二類控制信號(hào)組控制。寄 存器文件的輸入輸出端口如圖16所示,共包括31個(gè)并行的寫端口和37個(gè)并行的讀端口, 支持31個(gè)寫操作和37個(gè)讀操作并行執(zhí)行。寄存器文件內(nèi)包含64個(gè)32位的寄存器,即RO R63,寄存器和讀、寫端口之間的互聯(lián)關(guān)系如圖17所示,每個(gè)寄存器的輸入端有一個(gè)31選1 的選擇器,能夠?qū)?1個(gè)寫端口的任意一個(gè)選擇為寄存器的輸入;37個(gè)輸出端口,每個(gè)輸出 端口之前連接一個(gè)64選1的選擇器,能夠?qū)⑷我庖粋€(gè)寄存器的內(nèi)容選擇輸出到對(duì)應(yīng)的寄存 器文件輸出端。寄存器文件在第二類控制信號(hào)組的控制之下工作,第二類控制信號(hào)組指定 了寄存器文件的每個(gè)寫端口是否需要寫操作,以及在需要寫操作時(shí),被寫入寄存器的索引; 同時(shí),第二類控制信號(hào)組指定了寄存器文件每個(gè)讀端口是否需要讀操作,以及在需要讀操 作時(shí),被讀出寄存器的索引。執(zhí)行核中的各個(gè)運(yùn)算單元的數(shù)據(jù)輸入端連接到寄存器文件的對(duì)應(yīng)讀端口,從寄存 器文件取得源操作數(shù);各個(gè)運(yùn)算單元的數(shù)據(jù)輸出端連接到寄存器文件的對(duì)應(yīng)寫端口,其運(yùn) 算結(jié)果寫入到寄存器文件。寄存器文件各個(gè)讀寫端口具體的互聯(lián)關(guān)系如圖18所示。如圖19所示,四個(gè)執(zhí)行核中的每一個(gè),都能夠向其他三個(gè)執(zhí)行核獨(dú)立地廣播兩個(gè) 字。S卩,每一個(gè)執(zhí)行核能夠同時(shí)接受來自其他三個(gè)執(zhí)行核各兩個(gè)32位數(shù)據(jù);同時(shí)能夠廣播 出兩個(gè)32位數(shù)據(jù),供給其他三個(gè)執(zhí)行核。數(shù)據(jù)總線采用讀寫分開的數(shù)據(jù)總線來連接數(shù)據(jù)存儲(chǔ)器和執(zhí)行核。其中數(shù)據(jù)讀總線512位, 能夠并行由數(shù)據(jù)存儲(chǔ)器向執(zhí)行核提供16個(gè)字;數(shù)據(jù)寫總線256位,能夠并行將8個(gè)字由執(zhí) 行核寫入數(shù)據(jù)存儲(chǔ)器。讀總線與寫總線的一端連接執(zhí)行核,一端連接數(shù)據(jù)存儲(chǔ)器,數(shù)據(jù)存儲(chǔ) 器共有3塊,每一塊都能夠與讀總線和寫總線連接,在總線與數(shù)據(jù)存儲(chǔ)器的連接處,采用交 叉開關(guān)結(jié)構(gòu)進(jìn)行切換。如圖20所示,數(shù)據(jù)讀總線的一端是三個(gè)數(shù)據(jù)存儲(chǔ)器,另一端是四個(gè)執(zhí)行核。每一 塊數(shù)據(jù)存儲(chǔ)器的輸出位寬是256位,因此將數(shù)據(jù)讀總線分為高256位和低256位,數(shù)據(jù)讀總 線的高、低256位能夠分別與三塊數(shù)據(jù)存儲(chǔ)器中的任意一個(gè)連接,滿足并行的兩條訪存指 令讀數(shù)據(jù)存儲(chǔ)器的帶寬需求。數(shù)據(jù)讀總線與4個(gè)執(zhí)行核之間的具體連接關(guān)系是,數(shù)據(jù)讀總 線的[63:0]連執(zhí)行核X的寄存器文件的讀通道0 ;數(shù)據(jù)讀總線的[127:64]連執(zhí)行核Y的寄 存器文件的讀通道0 ;數(shù)據(jù)讀總線的[191 128]連執(zhí)行核Z的寄存器文件的讀通道0 ;數(shù)據(jù) 讀總線的[255:192]連執(zhí)行核T的寄存器文件的讀通道0 ;數(shù)據(jù)讀總線的[319:256]連執(zhí)行 核X的寄存器文件的讀通道1 ;數(shù)據(jù)讀總線的[383:320]連執(zhí)行核Y的寄存器文件的讀通道 1 ;數(shù)據(jù)讀總線的[447:384]連執(zhí)行核Z的寄存器文件的讀通道1 ;數(shù)據(jù)讀總線的[511:448] 連執(zhí)行核T的寄存器文件的讀通道1。數(shù)據(jù)寫總線結(jié)構(gòu)如圖21所示。數(shù)據(jù)寫總線與4個(gè)執(zhí)行核的連接關(guān)系是,寫總線的
11[63:0]連執(zhí)行核X的寄存器文件的寫通道;寫總線的[127:64]連執(zhí)行核Y的寄存器文件 的寫通道;寫總線的[191:128]連執(zhí)行核Z的寄存器文件的寫通道;寫總線的[255:192]連 執(zhí)行核T的寄存器文件的寫通道。在另一端,數(shù)據(jù)寫總線通過選擇,能夠與3個(gè)數(shù)據(jù)存儲(chǔ)器 中的任意一個(gè)相連。地址產(chǎn)生單元如圖22所示,3個(gè)地址產(chǎn)生單元分別名為地址產(chǎn)生單元U、地址產(chǎn)生單元V、地址產(chǎn) 生單元W,用于產(chǎn)生數(shù)據(jù)存儲(chǔ)器訪問所需要的地址。每個(gè)地址產(chǎn)生單元包括16個(gè)32位的地 址寄存器,用于寄存基地址和偏移量。即,地址產(chǎn)生單元U內(nèi)包含UO U15共16個(gè)地址寄 存器;地址產(chǎn)生單元V內(nèi)包含VO V15共16個(gè)地址寄存器;地址產(chǎn)生單元W內(nèi)包含WO W15共16個(gè)地址寄存器。地址產(chǎn)生單元完成地址產(chǎn)生、地址寄存器更新、地址寄存器輸出操 作。地址寄存器的更新有兩個(gè)個(gè)途徑地址產(chǎn)生單元內(nèi)部運(yùn)算更新;來自執(zhí)行核中寄存器 文件的更新。地址寄存器之前有一個(gè)選擇陣列,該陣列就是用于選擇更新地址寄存器的來 源。地址產(chǎn)生單元接受來自譯碼器的第三類控制信號(hào)組,第三類控制信號(hào)組的說明如 圖13所示。在第三類控制信號(hào)組的控制下,每個(gè)地址產(chǎn)生單元能夠獨(dú)立產(chǎn)生8個(gè)地址,這 8個(gè)地址的數(shù)值以基地址開始,數(shù)值依次為基地址、基地址+1、基地址+字間偏移量、基地 址+字間偏移量+1、基地址+2倍字間偏移量、基地址+2倍字間偏移量+1、基地址+3倍字 間偏移量、基地址+3倍字間偏移量+1。根據(jù)第三類控制信號(hào)組中的地址產(chǎn)生單元的地址類 型信息,將這8個(gè)地址提交到對(duì)應(yīng)的數(shù)據(jù)存儲(chǔ)器讀寫端口。程序執(zhí)行如圖23所示,并行數(shù)字信號(hào)處理器執(zhí)行應(yīng)用程序的過程是,只要取指緩沖單元中 的第一級(jí)指令緩沖向第二級(jí)指令緩沖移動(dòng),取指緩沖單元就從程序存儲(chǔ)器取出16條指令 進(jìn)入指令緩沖,在第三級(jí)、第四級(jí)指令緩沖,將能夠并行執(zhí)行的指令拼接為一個(gè)執(zhí)行行,發(fā) 射到譯碼單元,譯碼單元將執(zhí)行行的指令翻譯為四大類控制信號(hào)組,分別送到執(zhí)行核、控制 /標(biāo)志寄存器訪問單元、地址產(chǎn)生單元進(jìn)行指令的具體執(zhí)行操作。圖24所示,為一段運(yùn)行于并行數(shù)字信號(hào)處理器的匯編程序?qū)嵗_@段程序?qū)嵗?實(shí)現(xiàn)了將16個(gè)浮點(diǎn)格式的復(fù)數(shù)求和并存儲(chǔ)的功能。程序中,指令之間的“ 11 ”符號(hào)代表并 行,用該符號(hào)連接的指令能夠并行執(zhí)行。該程序分六步實(shí)現(xiàn)了 16個(gè)浮點(diǎn)復(fù)數(shù)的求和存儲(chǔ) 功能,并在6步求和的過程中用指令并行初始化地址寄存器,在求和完成之后,將結(jié)果寫入 以0x600000地址開始的8個(gè)存儲(chǔ)單元。第一步,用4條并行的加指令對(duì)存儲(chǔ)于RO R15 的8個(gè)復(fù)數(shù)求和;第二步,用4條并行加指令對(duì)存儲(chǔ)于R16 R31的8個(gè)復(fù)數(shù)求和,同時(shí)用 立即數(shù)賦值指令初始化執(zhí)行核X中的R0,用于后續(xù)的地址寄存器賦值;第三步,將前兩步的 求和結(jié)果進(jìn)行第二重求和,同時(shí)用立即數(shù)賦值指令初始化執(zhí)行核X中的Rl和R2,用于后續(xù) 的地址寄存器賦值;第四步,將第三步的求和結(jié)果進(jìn)行第三重求和,同時(shí)初始化地址寄存器 UO和Ul ;第五步,將第四步的求和結(jié)果相加,得到最終的求和結(jié)果,同時(shí)初始化地址寄存器 U2 ;第六步,將第五步的求和結(jié)果寫入以0x600000地址開始的8個(gè)存儲(chǔ)單元。
權(quán)利要求
一種并行數(shù)字信號(hào)處理器,其特征在于包括 程序存儲(chǔ)器,寬度為16個(gè)字,用于存儲(chǔ)應(yīng)用程序; 取指緩沖單元,用于維護(hù)程序計(jì)數(shù)器并向所述程序存儲(chǔ)器提供地址,緩存來自程序存儲(chǔ)器的指令,將指令拼接成一個(gè)并行執(zhí)行(xīng)行(hāng)發(fā)射到譯碼單元; 譯碼單元,用于對(duì)所述執(zhí)行行中的每條指令進(jìn)行譯碼,按照機(jī)器碼編排形式,指令分為九類,即,三操作數(shù)運(yùn)算指令、兩操作數(shù)運(yùn)算指令、訪存指令、控制/標(biāo)志寄存器讀指令、控制/標(biāo)志寄存器寫指令、程序流控制指令、核間傳輸指令、地址寄存器訪問指令以及立即數(shù)賦值指令,譯碼單元將這九類指令翻譯為第一類、第二類、第三類和第四類控制信號(hào)組; 執(zhí)行核,共有4個(gè),每個(gè)執(zhí)行核包括15個(gè)運(yùn)算單元、以及1個(gè)寄存器文件(registerfile),用于執(zhí)行核接受所述譯碼單元產(chǎn)生的第一類、第二類控制信號(hào)組,并根據(jù)控制信號(hào)組的狀態(tài)進(jìn)行指令的執(zhí)行處理; 地址產(chǎn)生單元,共3個(gè),用于接受所述譯碼單元產(chǎn)生的第三類控制信號(hào)組,并根據(jù)控制信號(hào)組的狀態(tài)進(jìn)行存儲(chǔ)器訪問的處理; 控制/標(biāo)志寄存器訪問單元,用于接受所述譯碼單元產(chǎn)生的第四類控制信號(hào)組,并根據(jù)控制信號(hào)組的狀態(tài)進(jìn)行控制/標(biāo)志寄存器訪問指令的執(zhí)行處理; 數(shù)據(jù)存儲(chǔ)器,共3塊,每塊寬度為8個(gè)字,用于接受來自所述執(zhí)行核的16個(gè)字的讀請(qǐng)求和8個(gè)字的寫請(qǐng)求;數(shù)據(jù)存儲(chǔ)器為雙端口,每個(gè)字寬度為32位,深度為32768。 數(shù)據(jù)總線為數(shù)據(jù)讀總線和數(shù)據(jù)寫總線,用于連接數(shù)據(jù)存儲(chǔ)器和執(zhí)行核數(shù)據(jù);數(shù)據(jù)讀總線寬度為16個(gè)字,數(shù)據(jù)寫總線寬度為8個(gè)字。
2.根據(jù)權(quán)利要求1所述的并行數(shù)字信號(hào)處理器,其特征在于所述程序存儲(chǔ)器為單端 口,每個(gè)字的寬度為32位,深度為8192。
3.根據(jù)權(quán)利要求1所述的并行數(shù)字信號(hào)處理器,其特征在于取指緩沖單元包含4級(jí) 指令緩沖,即,第一級(jí)指令緩沖、第二級(jí)指令緩沖、第三級(jí)指令緩沖、第四級(jí)指令緩沖,每一 級(jí)指令緩沖的寬度為16個(gè)字。
4.根據(jù)權(quán)利要求1所述的并行數(shù)字信號(hào)處理器,其特征在于所述取指緩沖單元每次 從程序存儲(chǔ)器獲得16個(gè)字的指令,并對(duì)來自程序存儲(chǔ)器的指令進(jìn)行分析,當(dāng)來自程序存儲(chǔ) 器的指令中包含分支類型指令時(shí),用分支目標(biāo)地址更新程序計(jì)數(shù)器以用于下一次的取指, 反之,當(dāng)來自程序存儲(chǔ)器的指令中沒有分支類型指令時(shí),程序計(jì)數(shù)器自增16以用于下一次 取指。
5.根據(jù)權(quán)利要求1所述的并行數(shù)字信號(hào)處理器,其特征在于所述譯碼單元的功能為 兩級(jí),第一級(jí)將執(zhí)行行中的指令進(jìn)行分類譯碼,第二級(jí)將第一級(jí)譯碼出的控制信號(hào)形成控 制信號(hào)組。
6.根據(jù)權(quán)利要求1所述的并行數(shù)字信號(hào)處理器,其特征在于所述取指緩沖單元包含 一個(gè)寬度為16個(gè)字、深度為4的指令緩沖,所述指令緩沖對(duì)來自程序存儲(chǔ)器的指令進(jìn)行并 行規(guī)則分析,將能夠并行執(zhí)行的指令拼接成執(zhí)行行,并將執(zhí)行行發(fā)射到譯碼單元,根據(jù)應(yīng)用 程序的不同,一個(gè)執(zhí)行行能夠包含最少1條、最多16條指令。
7.根據(jù)權(quán)利要求1所述的并行數(shù)字信號(hào)處理器,其特征在于所述第一類控制信號(hào)組, 用于控制執(zhí)行核中的15個(gè)運(yùn)算單元,進(jìn)行運(yùn)算操作;所述第二類控制信號(hào)組,用于控制所 述執(zhí)行核中的寄存器文件的輸入/輸出選擇,執(zhí)行對(duì)寄存器文件的訪問;所述第三類控制2信號(hào)組,用于控制地址產(chǎn)生單元,進(jìn)行存儲(chǔ)器訪問操作;所述第四類控制信號(hào)組,送給控制 /標(biāo)志寄存器訪問單元,用于控制/標(biāo)志寄存器訪問。
8.根據(jù)權(quán)利要求1所述的并行數(shù)字信號(hào)處理器,其特征在于所述每個(gè)執(zhí)行核包括的 15個(gè)運(yùn)算單元,其中8個(gè)算術(shù)邏輯單元(ALU),用于執(zhí)行實(shí)數(shù)和復(fù)數(shù)的加法、減法、累加、累 減操作;4個(gè)乘法器,用于執(zhí)行實(shí)數(shù)和復(fù)數(shù)的乘法、乘法累加操作;2個(gè)移位器,用于執(zhí)行移 位、位域操作;1個(gè)特定運(yùn)算單元,用于執(zhí)行超越函數(shù)運(yùn)算、定點(diǎn)數(shù)浮點(diǎn)數(shù)相互轉(zhuǎn)換操作。
9.根據(jù)權(quán)利要求1所述的并行數(shù)字信號(hào)處理器,其特征在于所述執(zhí)行核包括1個(gè)寄 存器文件,該寄存器文件由64個(gè)32位的通用寄存器組成,共有31個(gè)寫端口、37個(gè)讀端口, 支持31個(gè)寫操作和37個(gè)讀操作并行執(zhí)行。
10.根據(jù)權(quán)利要求1所述的并行數(shù)字信號(hào)處理器,其特征在于所述3個(gè)地址產(chǎn)生單 元,分別名為地址產(chǎn)生單元U、地址產(chǎn)生單元V、地址產(chǎn)生單元W,用于產(chǎn)生數(shù)據(jù)存儲(chǔ)器訪問 所需要的地址;每個(gè)地址產(chǎn)生單元包括16個(gè)32位的地址寄存器,用于寄存基地址和偏移 量;地址產(chǎn)生單元完成地址產(chǎn)生、地址寄存器更新、地址寄存器輸出操作。
全文摘要
本發(fā)明公開了一種并行數(shù)字信號(hào)處理器,包括程序存儲(chǔ)器,用于向程序存儲(chǔ)器提供地址、緩存來自程序存儲(chǔ)器指令并將指令拼接成并行執(zhí)行行發(fā)射到譯碼單元的取指緩沖單元,用于對(duì)執(zhí)行行中的每條指令進(jìn)行譯碼的譯碼單元,用于接受譯碼單元產(chǎn)生的第一、二類控制信號(hào)組并根據(jù)控制信號(hào)組的狀態(tài)進(jìn)行指令執(zhí)行處理的執(zhí)行核,用于接受譯碼單元產(chǎn)生的第三類控制信號(hào)組并根據(jù)控制信號(hào)組的狀態(tài)進(jìn)行存儲(chǔ)器訪問處理的地址產(chǎn)生單元,用于接受譯碼單元產(chǎn)生的第四類控制信號(hào)組并根據(jù)控制信號(hào)組的狀態(tài)進(jìn)行控制/標(biāo)志寄存器訪問指令處理的控制/標(biāo)志寄存器訪問單元,用于接受來自執(zhí)行核讀、寫請(qǐng)求的數(shù)據(jù)存儲(chǔ)器及用于連接數(shù)據(jù)存儲(chǔ)器和執(zhí)行核的數(shù)據(jù)總線。
文檔編號(hào)G06F9/38GK101957743SQ20101050795
公開日2011年1月26日 申請(qǐng)日期2010年10月12日 優(yōu)先權(quán)日2010年10月12日
發(fā)明者劉小明, 孫立宏, 汪灝, 洪一, 耿銳, 趙斌, 郭二輝, 陸俊峰, 馬強(qiáng) 申請(qǐng)人:中國(guó)電子科技集團(tuán)公司第三十八研究所