32位DSP設(shè)計(jì)中的流水線數(shù)據(jù)相關(guān)問(wèn)題及解決辦法
發(fā)布時(shí)間:2008/5/26 0:00:00 訪問(wèn)次數(shù):420
    
     西安通信學(xué)院 余江
    
    引言
    在航空微電子中心的某預(yù)研項(xiàng)目中,需要開(kāi)發(fā)設(shè)計(jì)某32位浮點(diǎn)通用數(shù)字信號(hào)處理器(dsp)。本系統(tǒng)控制通路部分的設(shè)計(jì)采用超級(jí)哈佛及五級(jí)流水線結(jié)構(gòu)。本文分析了該流水線的設(shè)計(jì)過(guò)程,并對(duì)遇到的數(shù)據(jù)相關(guān)問(wèn)題提出了一種新的解決方法。
    
    1 流水線結(jié)構(gòu)
    
    流水線處理器一般把一條指令的執(zhí)行分成幾個(gè)步驟,或稱(chēng)為級(jí)(stages)。每一級(jí)在一個(gè)時(shí)鐘周期內(nèi)完成,也就是說(shuō)在每個(gè)時(shí)鐘周期,處理器啟動(dòng)并執(zhí)行一條指令。如果處理器的流水線有m級(jí),則同時(shí)可重疊執(zhí)行的指令總條數(shù)為m。由于每條指令處在不同的執(zhí)行階段,因此,如果分級(jí)分得好,每一級(jí)都沒(méi)有時(shí)間上的浪費(fèi),這就是最理想的情況。流水線處理器在理想情況下與非流水線處理器的性能加速比為:
    
    
    式中,i為一個(gè)程序被執(zhí)行的總的指令條數(shù),它在流水線處理器和非流水線處理器中是相等的。cpinp是每條指令總體平均所需的時(shí)鐘周期數(shù)。因?yàn)榱魉處理器把一條指令的執(zhí)行時(shí)間理想地分成了m級(jí),故有m條指令在同時(shí)(重疊)執(zhí)行。t是每個(gè)時(shí)鐘周期的時(shí)間長(zhǎng)度,本例可假設(shè)它在兩種處理器中也是相同的,那么,最后總的加速比為m(即等于流水線的級(jí)數(shù))。并不是說(shuō)把流水線級(jí)數(shù)分得越多,處理器的性能就越好。流水線處理器性能提高的關(guān)鍵在于每個(gè)時(shí)鐘周期處理器都應(yīng)當(dāng)能啟動(dòng)一條指令的執(zhí)行。
    
    2 數(shù)據(jù)相關(guān)問(wèn)題
    
    下面來(lái)討論數(shù)據(jù)相關(guān)(data dependence)問(wèn)題及解決方法,先來(lái)看看下面的程序例子:
    
    
    在上述程序段中,i1指令把寄存器r2和r3的內(nèi)容相加,并將結(jié)果存人寄存器r1,這樣,它下面的4條指令均與i1相關(guān),其使用i1的結(jié)果如圖1給出的數(shù)據(jù)相關(guān)關(guān)系圖。從圖中可見(jiàn),當(dāng)每個(gè)周期結(jié)束時(shí),在時(shí)鐘上升沿應(yīng)把數(shù)據(jù)打入寄存器。在數(shù)據(jù)沒(méi)被打入之前,任何從該寄存器讀出的數(shù)據(jù)都是過(guò)時(shí)的。圖1中的i2到i4的3條指令就屬于這種情況。它們從r1寄存器讀出的數(shù)據(jù)都是過(guò)時(shí)的,是不能使用的。i5則沒(méi)關(guān)系,當(dāng)它讀r1寄存器時(shí),i1已將結(jié)果寫(xiě)入。
    
    
    i1下面有3條指令不能從寄存器r1讀出正確的數(shù)據(jù)。為了減少數(shù)據(jù)相關(guān)指令的條數(shù),設(shè)計(jì)時(shí)可以讓寫(xiě)寄存器堆的操作提前半個(gè)周期,即由時(shí)鐘的下降沿打入。實(shí)踐證明這樣做是可行的,因?yàn)榧俣ㄒ粋(gè)時(shí)鐘周期是10 ns,寄存器堆的訪問(wèn)只需要5 ns。這樣,數(shù)據(jù)相關(guān)的指令條數(shù)就減至兩條,其操作示意圖如圖2所示。
    
    
    3 數(shù)據(jù)相關(guān)問(wèn)題的解決
    
    在流水線處理器中處理數(shù)據(jù)相關(guān)問(wèn)題有兩種方法:一種是暫停相關(guān)指令的執(zhí)行,即暫停流水線,直到能夠正確讀出寄存器操作數(shù)為止;另一種是采用專(zhuān)門(mén)的數(shù)據(jù)通路,直接把結(jié)果送到alu的輸入端,也就是把內(nèi)部數(shù)據(jù)前推。描述這兩種方法可參考圖2所示的方案,即把寫(xiě)寄存器堆提前半個(gè)周期,這時(shí),只需考慮兩條相關(guān)指令。下面以alu指令為例對(duì)暫停流水線的執(zhí)行方法加以分析。
    
    3.1 暫停數(shù)據(jù)相關(guān)流水線
    
    暫停數(shù)據(jù)相關(guān)流水線指令是當(dāng)數(shù)據(jù)相關(guān)出現(xiàn)時(shí),暫時(shí)停止相關(guān)指令的執(zhí)行,等劍相關(guān)數(shù)據(jù)能從寄存器讀出再恢復(fù)執(zhí)行。這里涉及到兩個(gè)問(wèn)題,一個(gè)是如何檢測(cè)數(shù)據(jù)相關(guān),另一個(gè)是如何暫停流水線。下面對(duì)這兩個(gè)問(wèn)題分別加以描述。
    
    首先考慮數(shù)據(jù)相關(guān)如何用硬件電路檢測(cè)出來(lái)。由于i1與目的寄存器rd、i2和i3的源操作數(shù)是寄存器rs1或rs2中的數(shù)據(jù),且只有當(dāng)它們的rs1或rs2與i1的目的寄存器號(hào)rd相等時(shí)才有可能發(fā)生數(shù)據(jù)相關(guān),因此,硬件電路中要有比較器。由于指令格式中的源寄存器號(hào)rs2與立即數(shù)部分重疊,而立即數(shù)是不會(huì)出現(xiàn)相關(guān)的,因此,指令操作碼必須要參與檢測(cè),以區(qū)分是寄存器操作數(shù)還是立即數(shù)。另外,如i1指令的rd一定作為目的寄存器號(hào)使用,也就是當(dāng)結(jié)果要被寫(xiě)入目的奇仔器時(shí),后面的指令才有可能與之相關(guān)。上述規(guī)則用表達(dá)式表述如下(它們是在id級(jí)檢測(cè)數(shù)據(jù)相關(guān)的表達(dá)式):
    
    
 &nbs
    
     西安通信學(xué)院 余江
    
    引言
    在航空微電子中心的某預(yù)研項(xiàng)目中,需要開(kāi)發(fā)設(shè)計(jì)某32位浮點(diǎn)通用數(shù)字信號(hào)處理器(dsp)。本系統(tǒng)控制通路部分的設(shè)計(jì)采用超級(jí)哈佛及五級(jí)流水線結(jié)構(gòu)。本文分析了該流水線的設(shè)計(jì)過(guò)程,并對(duì)遇到的數(shù)據(jù)相關(guān)問(wèn)題提出了一種新的解決方法。
    
    1 流水線結(jié)構(gòu)
    
    流水線處理器一般把一條指令的執(zhí)行分成幾個(gè)步驟,或稱(chēng)為級(jí)(stages)。每一級(jí)在一個(gè)時(shí)鐘周期內(nèi)完成,也就是說(shuō)在每個(gè)時(shí)鐘周期,處理器啟動(dòng)并執(zhí)行一條指令。如果處理器的流水線有m級(jí),則同時(shí)可重疊執(zhí)行的指令總條數(shù)為m。由于每條指令處在不同的執(zhí)行階段,因此,如果分級(jí)分得好,每一級(jí)都沒(méi)有時(shí)間上的浪費(fèi),這就是最理想的情況。流水線處理器在理想情況下與非流水線處理器的性能加速比為:
    
    
    式中,i為一個(gè)程序被執(zhí)行的總的指令條數(shù),它在流水線處理器和非流水線處理器中是相等的。cpinp是每條指令總體平均所需的時(shí)鐘周期數(shù)。因?yàn)榱魉處理器把一條指令的執(zhí)行時(shí)間理想地分成了m級(jí),故有m條指令在同時(shí)(重疊)執(zhí)行。t是每個(gè)時(shí)鐘周期的時(shí)間長(zhǎng)度,本例可假設(shè)它在兩種處理器中也是相同的,那么,最后總的加速比為m(即等于流水線的級(jí)數(shù))。并不是說(shuō)把流水線級(jí)數(shù)分得越多,處理器的性能就越好。流水線處理器性能提高的關(guān)鍵在于每個(gè)時(shí)鐘周期處理器都應(yīng)當(dāng)能啟動(dòng)一條指令的執(zhí)行。
    
    2 數(shù)據(jù)相關(guān)問(wèn)題
    
    下面來(lái)討論數(shù)據(jù)相關(guān)(data dependence)問(wèn)題及解決方法,先來(lái)看看下面的程序例子:
    
    
    在上述程序段中,i1指令把寄存器r2和r3的內(nèi)容相加,并將結(jié)果存人寄存器r1,這樣,它下面的4條指令均與i1相關(guān),其使用i1的結(jié)果如圖1給出的數(shù)據(jù)相關(guān)關(guān)系圖。從圖中可見(jiàn),當(dāng)每個(gè)周期結(jié)束時(shí),在時(shí)鐘上升沿應(yīng)把數(shù)據(jù)打入寄存器。在數(shù)據(jù)沒(méi)被打入之前,任何從該寄存器讀出的數(shù)據(jù)都是過(guò)時(shí)的。圖1中的i2到i4的3條指令就屬于這種情況。它們從r1寄存器讀出的數(shù)據(jù)都是過(guò)時(shí)的,是不能使用的。i5則沒(méi)關(guān)系,當(dāng)它讀r1寄存器時(shí),i1已將結(jié)果寫(xiě)入。
    
    
    i1下面有3條指令不能從寄存器r1讀出正確的數(shù)據(jù)。為了減少數(shù)據(jù)相關(guān)指令的條數(shù),設(shè)計(jì)時(shí)可以讓寫(xiě)寄存器堆的操作提前半個(gè)周期,即由時(shí)鐘的下降沿打入。實(shí)踐證明這樣做是可行的,因?yàn)榧俣ㄒ粋(gè)時(shí)鐘周期是10 ns,寄存器堆的訪問(wèn)只需要5 ns。這樣,數(shù)據(jù)相關(guān)的指令條數(shù)就減至兩條,其操作示意圖如圖2所示。
    
    
    3 數(shù)據(jù)相關(guān)問(wèn)題的解決
    
    在流水線處理器中處理數(shù)據(jù)相關(guān)問(wèn)題有兩種方法:一種是暫停相關(guān)指令的執(zhí)行,即暫停流水線,直到能夠正確讀出寄存器操作數(shù)為止;另一種是采用專(zhuān)門(mén)的數(shù)據(jù)通路,直接把結(jié)果送到alu的輸入端,也就是把內(nèi)部數(shù)據(jù)前推。描述這兩種方法可參考圖2所示的方案,即把寫(xiě)寄存器堆提前半個(gè)周期,這時(shí),只需考慮兩條相關(guān)指令。下面以alu指令為例對(duì)暫停流水線的執(zhí)行方法加以分析。
    
    3.1 暫停數(shù)據(jù)相關(guān)流水線
    
    暫停數(shù)據(jù)相關(guān)流水線指令是當(dāng)數(shù)據(jù)相關(guān)出現(xiàn)時(shí),暫時(shí)停止相關(guān)指令的執(zhí)行,等劍相關(guān)數(shù)據(jù)能從寄存器讀出再恢復(fù)執(zhí)行。這里涉及到兩個(gè)問(wèn)題,一個(gè)是如何檢測(cè)數(shù)據(jù)相關(guān),另一個(gè)是如何暫停流水線。下面對(duì)這兩個(gè)問(wèn)題分別加以描述。
    
    首先考慮數(shù)據(jù)相關(guān)如何用硬件電路檢測(cè)出來(lái)。由于i1與目的寄存器rd、i2和i3的源操作數(shù)是寄存器rs1或rs2中的數(shù)據(jù),且只有當(dāng)它們的rs1或rs2與i1的目的寄存器號(hào)rd相等時(shí)才有可能發(fā)生數(shù)據(jù)相關(guān),因此,硬件電路中要有比較器。由于指令格式中的源寄存器號(hào)rs2與立即數(shù)部分重疊,而立即數(shù)是不會(huì)出現(xiàn)相關(guān)的,因此,指令操作碼必須要參與檢測(cè),以區(qū)分是寄存器操作數(shù)還是立即數(shù)。另外,如i1指令的rd一定作為目的寄存器號(hào)使用,也就是當(dāng)結(jié)果要被寫(xiě)入目的奇仔器時(shí),后面的指令才有可能與之相關(guān)。上述規(guī)則用表達(dá)式表述如下(它們是在id級(jí)檢測(cè)數(shù)據(jù)相關(guān)的表達(dá)式):
    
    
 &nbs
熱門(mén)點(diǎn)擊
- 基于IDL的SAR圖像處理及質(zhì)量評(píng)估系統(tǒng)
- DDS芯片AD9850的工作原理及其與單片機(jī)
- ADSP-TSl01的DMA在紅外圖像處理系
- 采用DSP內(nèi)核技術(shù)進(jìn)行語(yǔ)音壓縮開(kāi)發(fā)
- TMS320C55x DSP并行處理技術(shù)分析
- TMS320C54X DSP混合編程的方法研
- DSP常用的外圍芯片清單
- 一種基于KEELOQ的改進(jìn)加密算法及其在單片
- IMS A121型圖像信息壓縮專(zhuān)用IC
- GMS97C2051與ISD2560組成的小
推薦技術(shù)資料
- AMOLED顯示驅(qū)動(dòng)芯片關(guān)鍵技
- CMOS圖像傳感器技術(shù)參數(shù)設(shè)計(jì)
- GB300 超級(jí)芯片應(yīng)用需求分
- 4NP 工藝NVIDIA Bl
- GB300 芯片、NVL72
- 首個(gè)最新高端芯片人工智能服務(wù)器
- 多媒體協(xié)處理器SM501在嵌入式系統(tǒng)中的應(yīng)用
- 基于IEEE802.11b的EPA溫度變送器
- QUICCEngine新引擎推動(dòng)IP網(wǎng)絡(luò)革新
- SoC面世八年后的產(chǎn)業(yè)機(jī)遇
- MPC8xx系列處理器的嵌入式系統(tǒng)電源設(shè)計(jì)
- dsPIC及其在交流變頻調(diào)速中的應(yīng)用研究