專利名稱:應(yīng)用于數(shù)字信號處理器的指令緩存器的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種應(yīng)用于數(shù)字信號處理器的指令緩存器,屬數(shù)字信號處理器技術(shù)領(lǐng) 域。
背景技術(shù):
目前,數(shù)字信號處理器中的指令緩存器是存在于指令存儲器和執(zhí)行單元之間的一 個FIFO,其作用主要在于1.緩存取指單元流水的輸入(輸入到緩存器中的指令),保持取指單元與流水中 其他執(zhí)行單元的獨立性,保證取指操作在執(zhí)行單元停止工作時,在特定情況下仍然能夠緩 存指令,提高運行效率。2.引入緩存器可以不必要求指令存儲器中的指令對齊存儲,緩存器可以從不對齊 的指令行中自動提取完整的執(zhí)行行,從而節(jié)省存儲空間。目前市場上大量采用的高端通用數(shù)字信號處理器主要有AD公司的TS20X系列和 TI公司TMS320C64系列。AD公司的TS20X系列處理器的指令緩存器,包括5級流水,每級流 水最多包括4個指令槽。在處理器正常運行過程中,由于某種原因清除流水時,就指令緩存 而言,會有5級指令流水被清除,相對于含較少流水級的指令緩存器性能損失較大。TS20X 系列處理器的指令緩存器可以同時發(fā)射1到4條32位指令,對于更高的指令總線寬度,該 緩存器的結(jié)構(gòu)并不十分適合。因此,針對不同處理器的程序控制邏輯,需引入不同結(jié)構(gòu)的指令緩存器,以期最大 限度的提高指令的執(zhí)行效率。
發(fā)明內(nèi)容
本發(fā)明所要解決的技術(shù)問題是提供一種在處理器正常運行過程中,能夠有效減 少清除指令流水帶來的性能損失,有效提高信號處理器處理能力的應(yīng)用于數(shù)字信號處理器 的指令緩存器。其技術(shù)方案是一種應(yīng)用于數(shù)字信號處理器的指令緩存器,其特征在于所述指令緩沖器為三級 緩存結(jié)構(gòu),三級緩存依次相連,每級緩存包含16個指令槽,每個指令槽存儲一個32位指令 字;支持進(jìn)入緩存器的為一個包含16條32位指令字的指令行;在緩存的第一和第二級允 許擠除廢棄的氣泡行,在緩存的第三級完成指令執(zhí)行行的提取、拼接和發(fā)射。上述每個指令行至少需要包括一個行結(jié)束標(biāo)志。上述每條指令行包含若干個執(zhí)行行,執(zhí)行行之間利用指令字中攜帶的行結(jié)束標(biāo)志 分割。上述緩存器的第一和第二級存在無用氣泡行時,若其對應(yīng)的前一級被阻塞,允許 擠除氣泡行。上述緩存器在第三級殘存不足一個完整執(zhí)行行情況下,若第二級為中斷服務(wù)首指
3令則允許將第三級殘存指令作為廢指令清除。上述緩存器發(fā)射出去的為一個完整的執(zhí)行行,該執(zhí)行行可以從第三級緩存直接提 取,在第三級緩存不含完整執(zhí)行行的情況下,該執(zhí)行行由第三級的剩余指令和第二級的第 一個執(zhí)行行拼接獲得。其技術(shù)效果是本發(fā)明采用三級流水結(jié)構(gòu),可以有效減少清除指令流水帶來的性 能損失。在前一級流水被停頓的情況下,允許擠除第一和第二級緩存中的無用氣泡行,同時 接受新的指令行進(jìn)入指令緩存器替換原氣泡行的位置,這樣可以有效降低處理分支或中斷 等情況引入氣泡行所帶來的性能損失。每級指令緩存包含16個指令槽,每個指令槽存儲一 個32位指令字,通過行結(jié)束標(biāo)志進(jìn)行執(zhí)行行分割,可以從第三級直接提取或從第三和第二 級拼接執(zhí)行行發(fā)射到下級流水,執(zhí)行行包含的32位指令數(shù)從1至16條不等,有效提高信號 處理器的處理能力。
圖1是本發(fā)明的結(jié)構(gòu)框圖;圖2是指令行結(jié)構(gòu)示意圖;圖3是32位指令字的結(jié)構(gòu)示意圖;圖4指令的發(fā)射與拼接圖。
具體實施例方式如圖1所示,在指令緩存器所處的高性能數(shù)字信號處理器共分11級流水線,指令 緩存器占其中的三級。三級緩存IAB3、IAB2和IABl依次相連,指令行從第1級緩沖IAB3 進(jìn)入。如圖2所示,指令行是數(shù)字信號處理器一個取指操作所提取的全部指令,每個指 令行包括16條32位指令字,這16條指令分別用instructionO至instructionf表示。每 個指令行可以包括若干個執(zhí)行行,執(zhí)行行之間通過行結(jié)束標(biāo)志分割。每個指令行至少需要 包括一個行結(jié)束標(biāo)志,否則,指令緩存器將無法正常工作。本發(fā)明一次可以發(fā)射一個執(zhí)行行或者一個無用的氣泡行(氣泡使用全0表示)。 執(zhí)行行是數(shù)字信號處理器執(zhí)行單元一次接收的全部指令。一個指令執(zhí)行行可以包括1至 16個有效指令字,指令行中最末一條指令包含一個行結(jié)束標(biāo)志。單條指令的基本結(jié)構(gòu)如圖 3所示,行結(jié)束標(biāo)志位于指令字的最高位即第31位。如果行結(jié)束標(biāo)志為1,則表示該標(biāo)志所 處的指令為某一執(zhí)行行的最后一條指令,兩個行結(jié)束標(biāo)志位之間的指令構(gòu)成一個完整執(zhí)行 行。指令緩存器中指令的發(fā)射與拼接過程如圖4所示。指令緩存器具體工作方式如下所述步驟一判斷IABl中指令是否為氣泡行,如果是,則下一時鐘周期將IAB2和IAB3 中的指令分別轉(zhuǎn)移到IABl和IAB2中,同時允許IAB3接收新指令輸入。如果否,則檢測IABl 中的行結(jié)束標(biāo)志判斷IABl中是否至少含有一個完整的執(zhí)行行。如果有,則轉(zhuǎn)步驟二,如果 沒有,則轉(zhuǎn)步驟三;步驟二 提取完整的執(zhí)行行,準(zhǔn)備下一時鐘周期將其發(fā)射到下一級流水。同時判斷 提取完整的執(zhí)行行后IABl中是否還有剩余指令。
如果有剩余指令則1.產(chǎn)生IABl被阻塞標(biāo)志;2.判斷IAB2中緩存的是否為氣泡行,如果是氣泡行則允許在下一時鐘周期將 IAB3中的指令轉(zhuǎn)移到IAB2中,用于擠除該氣泡行,同時通知IAB3下一時鐘周期接收新的指 令輸入。如果IAB2中緩存的不是氣泡行則產(chǎn)生IAB2級阻塞標(biāo)志,維持IAB2中的緩存指令 不變;3.在IAB2級未被阻塞的情況下,允許IAB3下一周期接收新指令輸入。否則判斷 IAB3中緩存的是否為氣泡行,如果是,則允許下一時鐘接收新指令輸入用以擠除該氣泡行, 否則IAB3產(chǎn)生阻塞標(biāo)志;4.下一時鐘周期轉(zhuǎn)步驟一。如果沒有剩余指令,則在下一時鐘周期將IAB2和IAB3中的指令分別轉(zhuǎn)移到IABl 和IAB2中,同時允許IAB3接收新指令輸入。步驟三判斷IAB2中的指令是否為中斷服務(wù)程序首指令,如果是,則在下一時鐘 周期將IAB2和IAB3中的指令分別轉(zhuǎn)移到IABl和IAB2中,原IABl中剩余指令將作為廢指 令被清除。如果否,則轉(zhuǎn)步驟四;步驟四提取IABl中的剩余指令與IAB2中的第一個執(zhí)行行,依據(jù)圖4中cycle N 和cycle N+1所示方法拼接執(zhí)行行,在下時鐘周期發(fā)射出去。同時將IAB2和IAB3中的指 令分別轉(zhuǎn)移到IABl和IAB2中,再轉(zhuǎn)步驟一。
權(quán)利要求
一種應(yīng)用于數(shù)字信號處理器的指令緩存器,其特征在于所述指令緩沖器為三級緩存結(jié)構(gòu),三級緩存依次相連,每級緩存包含16個指令槽,每個指令槽存儲一個32位指令字,用于支持進(jìn)入緩存器的一個包含16條32位指令字的指令行;在緩存的第一和第二級允許擠除廢棄的氣泡行,在緩存的第三級完成指令執(zhí)行行的提取、拼接和發(fā)射。
2.根據(jù)權(quán)利要求1所述的應(yīng)用于數(shù)字信號處理器的指令緩存器,其特征在于所述每 個指令行至少需要包括一個行結(jié)束標(biāo)志。
3.根據(jù)權(quán)利要求1所述的應(yīng)用于數(shù)字信號處理器的指令緩存器,其特征在于所述每 條指令行包含若干個執(zhí)行行,執(zhí)行行之間利用指令字中攜帶的行結(jié)束標(biāo)志分割。
4.根據(jù)權(quán)利要求1所述的應(yīng)用于數(shù)字信號處理器的指令緩存器,其特征在于所述緩 存器的第一和第二級存在無用氣泡行時,若其對應(yīng)的前一級被阻塞,允許擠除氣泡行。
5.根據(jù)權(quán)利要求1所述的應(yīng)用于數(shù)字信號處理器的指令緩存器,其特征在于所述緩 存器在第三級殘存不足一個完整執(zhí)行行情況下,若第二級為中斷服務(wù)首指令則允許將第三 級殘存指令作為廢指令清除。
6.根據(jù)權(quán)利要求1所述的應(yīng)用于數(shù)字信號處理器的指令緩存器,其特征在于所述緩 存器發(fā)射出去的為一個完整的執(zhí)行行,該執(zhí)行行可以從第三級緩存直接提取,在第三級緩 存不含完整執(zhí)行行的情況下,該執(zhí)行行由第三級的剩余指令和第二級的第一個執(zhí)行行拼接 獲得。
全文摘要
本發(fā)明涉及一種應(yīng)用于數(shù)字信號處理器的指令緩存器,屬數(shù)字信號處理器技術(shù)領(lǐng)域。其目的是提供一種在處理器正常運行過程中,能夠有效減少清除指令流水帶來的性能損失,有效提高信號處理器處理能力的應(yīng)用于數(shù)字信號處理器的指令緩存器。指令緩沖器為三級緩存結(jié)構(gòu),三級緩存依次相連,每級緩存包含16個指令槽,每個指令槽存儲一個32位指令字,用于支持進(jìn)入緩存器的一個包含16條32位指令字的指令行;在緩存的第一和第二級允許擠除廢棄的氣泡行,在緩存的第三級完成指令執(zhí)行行的提取、拼接和發(fā)射。
文檔編號G06F9/38GK101968734SQ201010507928
公開日2011年2月9日 申請日期2010年10月12日 優(yōu)先權(quán)日2010年10月12日
發(fā)明者劉小明, 洪一, 耿銳, 郭二輝 申請人:中國電子科技集團(tuán)公司第三十八研究所