《電子技術應用》
您所在的位置:首頁 > 其他 > 業(yè)界動態(tài) > 基于TR600語音編解碼芯片的過程調用設計與硬件實現(xiàn)

基于TR600語音編解碼芯片的過程調用設計與硬件實現(xiàn)

2008-06-17
作者:王 沁, 趙鳳海, 江山剛

  摘 要: 介紹了TR600語音編解碼芯片中過程調用的設計及實現(xiàn)方法,并與堆棧寄存器結構實現(xiàn)方式做了簡要的比較,重點闡述了重疊寄存器窗口技術" title="窗口技術">窗口技術和存取算子對存儲體交叉訪問技術的原理、技術特點及其在TR600芯片體系中的具體實現(xiàn)。
  關鍵詞: 可重構體系 過程調用 重疊寄存器窗口 交叉訪問


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


  TR600芯片體系結構采取2種過程調用方式:同層調用和換層調用。當一層寄存器子堆滿足主調過程和被調過程的寄存器資源使用時,采用同層調用;當換層調用時,被調過程位于主調過程的下一層寄存器子堆,主調過程和被調過程分別控制所在層的寄存器單元,主調過程將傳遞參數(shù)寫入窗口寄存器,被調過程則從窗口寄存器取入參數(shù),以當前寄存器子堆為存儲空間進行運算,并將需要傳遞的運算結果寫入窗口寄存器,返回主調過程。如果被調過程內還含有調用,可以根據寄存器使用情況確定是同層調用還是換層調用,從而決定傳遞參數(shù)寫入局部通用寄存器或是窗口寄存器。多重過程調用同樣遵循這個過程。TR600體系中采用的語音編解碼算法的過程調用最多涉及到17個子函數(shù)過程和5重嵌套調用,而重疊寄存器窗口技術都可以很好地解決這些問題。
2 存取算子對存儲體交叉訪問技術
  存取算子對存儲體交叉訪問機制解決了存取算子訪問局部性與過程調用中參數(shù)傳遞的全局性之間的矛盾。由于在指令體系設計時,將LS存取算子設計成與SDRAM存儲體一一對應的關系,這就使得存取算子只能固定訪問單塊存儲體。而對于過程調用,主調過程實參傳遞可來自于任意存儲體,被調過程的形參卻只能指向某一個存儲體,這就要求主調過程要將實參轉移到形參指定的存儲體內,才能正確執(zhí)行調用;而在數(shù)據轉移過程中,可能引起數(shù)據相關,并且浪費數(shù)據轉移時間。本設計的解決方法是對LS存取算子做變換,使其能夠訪問所有存儲體,避免數(shù)據轉移,并稱其為存取算子對存儲體的交叉訪問。
  為了在過程調用時使存取算子能夠訪問任意存儲體,使被調過程形參可以指向任意存儲體,采用在體系中添加段寄存器配置,標識存取算子訪問存儲體的信息的方法。因此用戶可以通過設置段寄存器的值來動態(tài)改變LS存取算子對SDRAM存儲體的訪問關系。在初始化狀態(tài),段寄存器中的值表示LS存取算子與存儲體訪問是一一對應的,如圖2所示。在存儲體交叉訪問時,過程調用指令通過重置段寄存器值,改變存取算子與存儲體的對應關系,并在執(zhí)行調用過程中保持不變,如圖3所示。段寄存器值由過程調用指令來動態(tài)配置,用戶在使用過程中調用指令時,要參照指令格式的要求,在具體指令域裝載段寄存器的配置信息。段寄存器值經過譯碼器譯碼產生存儲體控制信息,再經過邏輯運算產生每個存儲體的控制信號,包括:輸入輸出數(shù)據通路選擇信號以及存儲體的使能、讀寫、地址控制信號。


  在TR600芯片體系結構中包含5塊獨立編址的SDRAM存儲體,指令體系提供5個LS存取控制算子,分別為LS1控制讀寫RAM1、LS2控制讀寫RAM2……LS5控制讀寫RAM5。相應地,體系中提供5個3位段寄存器,標識過程調用時存取算子與存儲體的對應關系??紤]到語音算法存在多重嵌套過程調用,每次過程調用時都可能發(fā)生存儲體交叉訪問的情況,因此設計了6層段寄存器陣列分別標識每次調用時存取算子與存儲體的對應關系,如圖4所示。執(zhí)行過程調用指令時,段寄存器被重新配置,同時將過程調用的嵌套次數(shù)保存在層計數(shù)器。通過對層計數(shù)器輸出的譯碼,產生段寄存器的層控制信息,包括段寄存器使能和段寄存器輸出選擇控制。通過段寄存器陣列的變換,實現(xiàn)每個存取算子對存儲體訪問的控制轉換,再經過段譯碼器譯碼及邏輯運算產生存儲體控制信號。例如,存儲體RAM1使能信號(RAM1_E)可由5個段譯碼器譯碼產生的RAM1控制信號做邏輯“或”運算產生,變換邏輯運算即可以產生存儲體的讀寫信號、地址控制信號和輸入輸出選擇控制信號(本文不做詳細論述)。


3 技術特點
  (1)TR600芯片體系結構中重疊寄存器窗口技術采用可重組思想設計寄存器堆結構,提高了存儲靈活性,適應了語音算法在過程調用中數(shù)據規(guī)格多樣性的特點;多層窗口寄存器結構和寄存器堆局部可見的特點,解決了過程調用時的現(xiàn)場保護和參數(shù)傳遞問題,不需要設計現(xiàn)場保護參數(shù)的專用部件,減少了系統(tǒng)的時空開銷。
  (2)存儲體交叉訪問機制采用段寄存器標識存取算子與存儲體的對應關系,由過程調用指令配置段寄存器,避免了因為參數(shù)傳遞而進行的存儲體之間的數(shù)據轉移;同時提供了清晰易讀、編程靈活的指令界面,屏蔽了邏輯設計的復雜性,方便了用戶指令編程。但過程調用功能的硬件實現(xiàn)與應用環(huán)境及體系結構是密不可分的,設計者應依據具體情況調整實現(xiàn)方案,如窗口寄存器堆的分層數(shù)目及段寄存器的層數(shù),要根據具體算法中過程調用的最大嵌套層數(shù)而定,存取算子對存儲體的交叉訪問要依據體系結構提供的指令界面而定等,因為這些設計都具有靈活性和多樣性。
  本文論述的過程調用功能硬件實現(xiàn)方法也可以為其他應用設計借鑒,例如,在網絡體系結構中,對多種通信協(xié)議的硬件實現(xiàn)以及RPC遠程過程調用的實現(xiàn)都具有一定的參考價值。
參考文獻
1 曲英杰. 可重構體系結構的特征及應用. 計算機工程與應用, 2001;(9)
2 Hennessy J L. Computer architecture: a quantitative approach. China Machine Press, 2002
3 David L. Weaver the SPARC architecture manual(Version 9). PTR Prentice Hall, 1994

本站內容除特別聲明的原創(chuàng)文章之外,轉載內容只為傳遞更多信息,并不代表本網站贊同其觀點。轉載的所有的文章、圖片、音/視頻文件等資料的版權歸版權所有權人所有。本站采用的非本站原創(chuàng)文章及圖片等內容無法一一聯(lián)系確認版權者。如涉及作品內容、版權和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當措施,避免給雙方造成不必要的經濟損失。聯(lián)系電話:010-82306118;郵箱:aet@chinaaet.com。