<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 嵌入式DSP處理器μDSP的體系結(jié)構(gòu)設(shè)計(jì)

          嵌入式DSP處理器μDSP的體系結(jié)構(gòu)設(shè)計(jì)

          作者: 時(shí)間:2010-08-12 來源:網(wǎng)絡(luò) 收藏

          近年來,我國(guó)電子信息產(chǎn)業(yè)和市場(chǎng)高速增長(zhǎng),DSP芯片產(chǎn)品需求量持續(xù)增大,雖然有一些集成電路設(shè)計(jì)企業(yè)從事DSP系統(tǒng)及相關(guān)產(chǎn)品的開發(fā)與應(yīng)用,但在DSP芯片的研發(fā)上,只在某些大學(xué)、科研院所做過預(yù)研性課題,還沒有形成自己的獨(dú)立知識(shí)產(chǎn)權(quán)的技術(shù),因此對(duì)DSP處理器的設(shè)計(jì)有不可估量的作用,而體系結(jié)構(gòu)的設(shè)計(jì)是處理器設(shè)計(jì)的靈魂,處理器的設(shè)計(jì)首先從體系結(jié)構(gòu)的設(shè)計(jì)開始,DSP處理器的體系結(jié)構(gòu)一直緊緊圍繞著DSP算法和各種應(yīng)用的不斷發(fā)展而改進(jìn)和優(yōu)化,隨著各種并行處理技術(shù)(VLIW,SIMD,超標(biāo)量,多處理機(jī)等)、可重構(gòu)技術(shù)和低功耗體系結(jié)構(gòu)技術(shù)的出現(xiàn),使各種新的DSP處理器體系結(jié)構(gòu)不斷涌現(xiàn),使得如今的DSP處理器性能不斷提高,并使它們?cè)谕ㄐ?、自?dòng)控制、雷達(dá)、氣象、導(dǎo)航、機(jī)器人等許多嵌入式實(shí)時(shí)領(lǐng)域得到了廣泛應(yīng)用。而這些領(lǐng)域都要求處理器是高速、低功耗的。因此我們?cè)趯?duì)當(dāng)前DSP體系結(jié)構(gòu)的最新發(fā)展的全面考察的基礎(chǔ)上,考慮到低功耗、低成本、高性能等要求,設(shè)計(jì)了一個(gè)16位嵌入式定點(diǎn)DSP處理器μDSP的體系結(jié)構(gòu),如圖1。

          下面就μDSP的總線結(jié)構(gòu)、流水線設(shè)計(jì)、特殊的指令系統(tǒng)、尋址方式、強(qiáng)大的控制部件和高速的運(yùn)算單元等幾個(gè)方面對(duì)μDSP的進(jìn)行了詳細(xì)的闡述。

          1.改進(jìn)型哈佛總線結(jié)構(gòu)

          由于DSP處理器主要應(yīng)用于各類數(shù)據(jù)運(yùn)算,數(shù)據(jù)吞吐率都非常大。特別是進(jìn)行乘累加運(yùn)算時(shí),需要2個(gè)甚至3個(gè)數(shù)據(jù)同時(shí)參與運(yùn)算,傳統(tǒng)的馮?諾曼結(jié)構(gòu)無法滿足數(shù)據(jù)和指令存取的需求,所以,DSP處理器普遍采用哈佛總線結(jié)構(gòu)。雖然哈佛結(jié)構(gòu)使用采取分開的程序存儲(chǔ)器和數(shù)據(jù)存儲(chǔ)器,以滿足同時(shí)存取數(shù)據(jù)和取指令的需求,但是這種結(jié)構(gòu)由于缺乏指令和數(shù)據(jù)存儲(chǔ)空間的靈活性,使得存儲(chǔ)器空間不能得到靈活、充分的使用。

          為進(jìn)一步提高性能,μDSP采用了改進(jìn)的哈佛結(jié)構(gòu),在采用分開的程序存儲(chǔ)器和數(shù)據(jù)存儲(chǔ)器的同時(shí),允許數(shù)據(jù)存儲(chǔ)在程序存儲(chǔ)器中,數(shù)據(jù)存儲(chǔ)器和程序存儲(chǔ)器統(tǒng)一編址。程序存儲(chǔ)器的大小為32K*24bit(指令為24位寬),數(shù)據(jù)存儲(chǔ)器大小為32K*16bit(數(shù)據(jù)位寬為16)。

          采用4總線結(jié)構(gòu),這4條總線分別是程序地址總線(PMA)、程序數(shù)據(jù)總線(PMD),數(shù)據(jù)地址總線(DMA)、數(shù)據(jù)數(shù)據(jù)總線(DMD)。存儲(chǔ)器采用同步SRAM,并采用流水線方式存取數(shù)據(jù)和指令,完成一次訪問需經(jīng)過兩級(jí)流水線。為進(jìn)一步提高存取靈活性,程序總線既可以取指令,又可以存取數(shù)據(jù),既可訪問程序存儲(chǔ)器,又可以訪問數(shù)據(jù)存儲(chǔ)器。另外,為了減少存儲(chǔ)器的訪問周期,增加了一個(gè)片內(nèi)指令Cache,用來存放常用的指令,Cache的大小為64*43bit,可存儲(chǔ)64個(gè)指令-地址對(duì)。指令Cache采用組相聯(lián)映射方式,并采取最近最少使用(Least Recently Used)替換策略。

          這種改進(jìn)的哈佛結(jié)構(gòu)不僅提高了指令和數(shù)據(jù)存取的效率,還提高了存儲(chǔ)器的利用率,是一種比較好的結(jié)構(gòu)。

          2.六級(jí)流水線設(shè)計(jì)

          流水線設(shè)計(jì)是現(xiàn)代處理器設(shè)計(jì)的核心。流水線的設(shè)計(jì)要考慮諸多的因素,比如流水線各級(jí)的平衡、流水線的吞吐率以及流水線的結(jié)構(gòu)復(fù)雜度等方面,我們采用六級(jí)流水線設(shè)計(jì),每一級(jí)的名稱及需要完成的如下功能:

          (1)Look-Ahead Address (LA):這一階段程序控制器從各個(gè)地址來源中選出本時(shí)鐘進(jìn)入流水線的指令的地址,把指令地址放在PMA總線上,它也用于解決總線沖突問題。因?yàn)镻MA總線可能同時(shí)被LA和AD兩個(gè)階段使用,這時(shí)總線發(fā)生沖突,程序控制器就查找這條指令是否在Cache里。如果命中(Hit),指令就從Cache中提前取出,使得AD可以使用總線;如果不命中(Miss),就讓AD優(yōu)先使用總線,程序控制器在下一個(gè)周期得到PMA總線。

          (2)Prefetch Address (PA):這一階段把指令地址送到存儲(chǔ)器,開始取指令。由于使用的是同步兩級(jí)流水SRAM,這一階段指令并沒有馬上被取出,要到下一周期結(jié)束時(shí)才完成取指過程。

          (3)Fetch Address (FA):這一階段指令通過PMD總線從存儲(chǔ)器取出。因?yàn)榇鎯?chǔ)器需要兩個(gè)周期的時(shí)間完成訪問,即從地址放在總線上到得到數(shù)據(jù)需要兩個(gè)周期,所以上一周期開始的取指令到這個(gè)周期結(jié)束。

          (4)Address Decode (AD):指令的某些部分被譯碼,比如DAG操作。如果指令需要存儲(chǔ)器數(shù)據(jù),這個(gè)數(shù)據(jù)的地址就放在適當(dāng)?shù)牡刂房偩€上。同時(shí)將沒有解碼的部分送到下一級(jí)。

          (5)Instruction Decode (ID):這個(gè)階段對(duì)指令的其余部分譯碼。同時(shí)也用于等待存儲(chǔ)器訪問,由于取數(shù)據(jù)同樣要兩個(gè)周期。

          (6)Execute (PC):這一階段執(zhí)行指令,設(shè)置各狀態(tài)標(biāo)志位,并把結(jié)果寫到適當(dāng)?shù)募拇嫫髦小?BR>
          3.特殊的指令系統(tǒng)

          處理器的設(shè)計(jì)首先從指令系統(tǒng)設(shè)計(jì)開始,不同的指令系統(tǒng)也決定了不同的處理器結(jié)構(gòu)設(shè)計(jì),μDSP的指令系統(tǒng)非常豐富,可以完成各種DSP算法所要求的功能,大體來說,需要設(shè)計(jì)以下4大類指令:程序流控制指令,數(shù)據(jù)移動(dòng)指令,運(yùn)算指令和多功能指令。必須滿足以下要求:

          (1)24位指令寬度;
          (2)高密度指令編碼;
          (3)提供多功能指令,使得一條指令可完成多個(gè)操作;
          (4)支持雙字指令;
          (5)提供零開銷循環(huán)指令;
          (6)與主流DSP(ADI公司的ADSP219x系列)兼容。

          4.靈活的尋址方式

          由于DSP算法的獨(dú)特性,一般通用處理器的普通尋址方式不能滿足要求,所以DSP處理器一般采用許多特殊的、靈活的尋址方式。μDSP中主要有6種尋址方式:直接尋址、前變址尋址、后變址尋址、循環(huán)尋址、位反尋址、分頁尋址。要實(shí)現(xiàn)這些尋址方式,設(shè)計(jì)了一個(gè)數(shù)據(jù)地址發(fā)生器(DAG),如下圖2,考慮到μDSP可以同時(shí)對(duì)程序存儲(chǔ)器和數(shù)據(jù)存儲(chǔ)器進(jìn)行訪問,設(shè)計(jì)了兩個(gè)DAG,它們的不同之處在于:DAG1只能產(chǎn)生數(shù)據(jù)存儲(chǔ)器地址,但有位反功能;DAG2可以產(chǎn)生數(shù)據(jù)存儲(chǔ)器地址也可以產(chǎn)生程序存儲(chǔ)器的地址,但是沒有位反功能。它有4個(gè)寄存器組:索引寄存器組(I Registers)、修改寄存器組(M Registers),長(zhǎng)度寄存器組(L Registers)和基址寄存器組(B Registers)。每個(gè)寄存器組有4個(gè)16位的寄存器,可以通過DMD總線進(jìn)行讀寫。I寄存器組存放訪問存儲(chǔ)器的實(shí)際地址,M寄存器組用于保存地址偏移量,L寄存器組和B寄存器組則是專門用于循環(huán)尋址的,前者保存循環(huán)尋址中數(shù)據(jù)塊的長(zhǎng)度,后者保存循環(huán)尋址的首地址。圖中虛線框中部分為DAG1所獨(dú)有。

          5.強(qiáng)大的控制部件

          控制部件是完成整個(gè)DSP處理器各個(gè)部分之間協(xié)調(diào)工作的重要部件。控制部件主要負(fù)責(zé)指令地址的產(chǎn)生、流水線的控制以及處理各種相關(guān)、異常、中斷等工作,以保證數(shù)據(jù)通路的正常工作??刂撇考娜蝿?wù)是非常艱巨的,沒有一個(gè)功能強(qiáng)大的控制部件,整個(gè)DSP處理器將無法正常工作。μDSP的控制部件按照功能可以大致分為指令地址選擇邏輯、流水線控制邏輯、循環(huán)控制邏輯和中斷控制器等幾部分。

          6.高速的運(yùn)算單元

          運(yùn)算單元是DSP處理器的執(zhí)行部件,是實(shí)現(xiàn)各種DSP算法的核心部分。所有算法的實(shí)現(xiàn)都是由運(yùn)算單元的基本功能組合而成,所有的其他部件如控制部件、數(shù)據(jù)通路都是為運(yùn)算單元服務(wù)的,為運(yùn)算單元提供各種控制和充分的數(shù)據(jù)。μDSP有3個(gè)功能強(qiáng)大的高速運(yùn)算單元:算術(shù)邏輯單元(ALU),乘法累加單元(MAC),移位器(Shifter)。

          處理器的設(shè)計(jì)是一個(gè)非常復(fù)雜的工作,體系結(jié)構(gòu)的設(shè)計(jì)是處理器設(shè)計(jì)的靈魂,設(shè)計(jì)者面臨的任務(wù)非常復(fù)雜,要確定處理器的應(yīng)用目標(biāo),針對(duì)應(yīng)用目標(biāo)需求判斷哪些特征是最重要的,然后在不超出成本的范圍內(nèi)力求性能最高。

          本文的創(chuàng)新點(diǎn):主要對(duì)μDSP的進(jìn)行了詳細(xì)的闡述,對(duì)哈佛總線結(jié)構(gòu)進(jìn)行了改進(jìn),定義了六級(jí)流水線的名稱和功能,指出了特殊的指令系統(tǒng)應(yīng)達(dá)到的要求,給出了μDSP的體系結(jié)構(gòu)的結(jié)構(gòu)圖,并詳細(xì)介紹了一個(gè)數(shù)據(jù)地址發(fā)生器的設(shè)計(jì)等。



          評(píng)論


          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();