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