基于TR600芯片的過程調(diào)用設(shè)計(jì)與硬件實(shí)現(xiàn)
隨著大規(guī)模集成電路的不斷發(fā)展,軟硬件界面的劃分也發(fā)生了變化,VKSI設(shè)計(jì)方法的改進(jìn)、IP技術(shù)的標(biāo)準(zhǔn)化以及系統(tǒng)在片(SOC)設(shè)計(jì)的日漸成熟,為軟件功能邏輯硬件化實(shí)現(xiàn)提供了技術(shù)條件和實(shí)現(xiàn)手段。作為軟件程序設(shè)計(jì)的重要部分,過程調(diào)用功能使用頻度相當(dāng)高,尤其在結(jié)構(gòu)化設(shè)計(jì)中起到重要作用,因此,其硬件實(shí)現(xiàn)方法的優(yōu)劣對(duì)于軟件能否很好地移植到邏輯電路中起到了非常重要的作用。
本文引用地址:http://m.butianyuan.cn/article/173368.htmTR600語音編解碼芯片設(shè)計(jì)是基于MELP、SELP2(Sine Excitation Linear Prediction)等多種語音算法,采用可重構(gòu)體系結(jié)構(gòu)…和變長(zhǎng)指令技術(shù),實(shí)現(xiàn)了多種語音算法可在片配置的SOC設(shè)計(jì)。這款語音芯片結(jié)合了邏輯電路的快速性和用戶指令編程靈活性的特點(diǎn),通過分析多種語音算法,并提取資源共集,建立了資源、運(yùn)算、網(wǎng)絡(luò)可重構(gòu)的邏輯電路,同時(shí)提取資源的可控節(jié)點(diǎn),形成用戶指令界面,以指令流形式控制邏輯電路,實(shí)現(xiàn)算法級(jí)應(yīng)用功能。過程調(diào)用功能就是以指令形式提供給使用者,并通過指令譯碼器控制邏輯電路動(dòng)作,實(shí)現(xiàn)具體功能。因此,過程調(diào)用功能的硬件實(shí)現(xiàn)效率和靈活度直接影響芯片整體的速度、規(guī)模以及用戶指令編程的復(fù)雜度。
過程調(diào)用模型可簡(jiǎn)單描述為主調(diào)過程將被調(diào)過程置于某一位置,然后把控制權(quán)交給被調(diào)過程,執(zhí)行完畢,再取回控制權(quán),并返回運(yùn)行結(jié)果,主調(diào)過程繼續(xù)執(zhí)行。因此過程調(diào)用需要2個(gè)步驟:調(diào)用過程和返回過程。過程調(diào)用需要處理的信息有:程序計(jì)數(shù)器(PC)值的保存與恢復(fù)、現(xiàn)場(chǎng)保護(hù)和參數(shù)傳遞。過程調(diào)用是一種典型的后入先出堆棧寄存器結(jié)構(gòu),這種實(shí)現(xiàn)方式雖已相當(dāng)普遍,但也存在不足:(1)堆棧寄存器使用效率低,存儲(chǔ)時(shí)間和空間浪費(fèi)嚴(yán)重。因?yàn)閰?shù)傳遞的個(gè)數(shù)和規(guī)格因調(diào)用過程的不同會(huì)有所不同,而主調(diào)過程需要對(duì)所有可能被破壞的數(shù)據(jù)堆棧進(jìn)行保護(hù),而堆棧的寬度和深度會(huì)因滿足過程調(diào)用最壞情況而設(shè)計(jì)得最大,而且嵌套調(diào)用會(huì)增加堆棧寄存器的開銷。(2)堆棧寄存器結(jié)構(gòu)無法解決調(diào)用過程存取算子對(duì)存儲(chǔ)體交叉訪問的問題。為了給用戶指令編程提供一個(gè)清晰的指令界面,在指令體系設(shè)計(jì)時(shí),將LS存取算子設(shè)計(jì)成與SDRAM存儲(chǔ)體一一對(duì)應(yīng)的關(guān)系。單塊存儲(chǔ)體采用獨(dú)立編址。而對(duì)于過程調(diào)用,主調(diào)過程傳遞實(shí)參可來源于任意存儲(chǔ)體,被調(diào)過程的LS存取算子只能指向某一個(gè)存儲(chǔ)體,這就產(chǎn)生了過程調(diào)用中參數(shù)傳遞的全局性與存取算子訪問局部性之間的矛盾。
為了解決堆棧寄存器結(jié)構(gòu)實(shí)現(xiàn)方式的不足,TR600語音編解碼芯片采用了重疊寄存器窗口技術(shù)和存取算子對(duì)存儲(chǔ)體的交叉訪問技術(shù)來實(shí)現(xiàn)過程調(diào)用功能。
1 重疊寄存器窗口技術(shù)
重疊寄存器窗口技術(shù)是一種寄存器堆設(shè)計(jì)方法,它將寄存器堆分成若干個(gè)寄存器子堆,相鄰寄存器子堆有重疊部分并共同可見,作為子堆之間信息交互的窗口,稱為窗口寄存器。寄存器子堆與其他子堆不重疊的部分只有自身可見,獨(dú)立于其他子堆,稱為局部通用寄存器。在外部控制電路作用下,同一時(shí)刻只有一個(gè)子堆對(duì)用戶是可見的.可以進(jìn)行讀寫操作。存儲(chǔ)于局部通用寄存器的數(shù)據(jù)不會(huì)影響相鄰子堆的操作,而存儲(chǔ)于窗口寄存器的數(shù)據(jù)可以被相鄰子堆直接使用。過程調(diào)用操作利用了局部通用寄存器的局部性和窗口寄存器的共用性的特點(diǎn).將過程調(diào)用中的相關(guān)數(shù)據(jù)存人局部通用寄存器,避免了數(shù)據(jù)相關(guān);將傳遞參數(shù)寫入窗口寄存器,可以供被調(diào)過程直接使用,避免了寄存器之間的數(shù)據(jù)轉(zhuǎn)移。因此,重疊寄存器窗口技術(shù)可以解決過程調(diào)用中的現(xiàn)場(chǎng)保護(hù)和參數(shù)傳遞的問題。
TR600芯片體系結(jié)構(gòu)采用可重組思想設(shè)計(jì)了二組總線寄存器堆,每組寄存器堆有19個(gè)寄存器單元,每個(gè)單元由2組16位寄存器拼接而成,因此,單指令周期可以存取64位、32位、16位規(guī)格的數(shù)據(jù)。為了實(shí)現(xiàn)語音算法中多重嵌套過程調(diào)用,每組寄存器堆分為三層寄存器子堆.如圖1所示。每層最多可以使用9個(gè)寄存器單元,調(diào)用操作可以在寄存器子堆內(nèi)部,也可以在相鄰子堆之間完成。總線寄存器堆控制信號(hào)由過程調(diào)用指令和寄存器讀寫控制指令經(jīng)指令譯碼器譯碼產(chǎn)生。過程調(diào)用指令控制層計(jì)數(shù)器,產(chǎn)生層譯碼器使能,控制寄存器子堆換層操作。同時(shí),控制輸出選通器選擇寄存器子堆輸出;寄存器讀指令產(chǎn)生當(dāng)前子堆內(nèi)寄存器單元輸出選擇信號(hào),寄存器寫指令控制產(chǎn)生數(shù)據(jù)通路選擇和寄存器寫使能信號(hào)。
評(píng)論