專利名稱:有軟/硬件環(huán)壓縮的先進(jìn)先出寫/后進(jìn)先出讀跟蹤緩沖器的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及流水線處理器,更具體地涉及用于流水線處理器的跟蹤緩沖器。
背景技術(shù):
數(shù)字信號(hào)處理與以數(shù)字形式的信號(hào)表示和利用數(shù)字計(jì)算的這種信號(hào)的變換或處理有關(guān)。數(shù)字信號(hào)處理廣泛地應(yīng)用在諸如無線通信、組網(wǎng)、和多媒體之類的當(dāng)前的高技術(shù)領(lǐng)域。數(shù)字信號(hào)處理技術(shù)流行的一個(gè)原因是已開發(fā)了低成本、強(qiáng)大的數(shù)字信號(hào)處理器(DSP),這些處理器便宜和有效地提供實(shí)現(xiàn)這些產(chǎn)品的可靠計(jì)算能力。因?yàn)槭紫菵SP的發(fā)展,DSP結(jié)構(gòu)和設(shè)計(jì)已包含即使復(fù)雜的視頻速率序列的實(shí)時(shí)處理也能執(zhí)行的觀點(diǎn)。
DSP經(jīng)常用于諸如數(shù)字視頻、成像、和音頻之類的各種多媒體應(yīng)用。DSP可以控制數(shù)字信號(hào)的產(chǎn)生和打開多媒體文件。
MPEG-1(運(yùn)動(dòng)圖象專家組)、MPEG-2、MPEG-4和H.263是一些數(shù)字視頻壓縮標(biāo)準(zhǔn)和文件格式。這些標(biāo)準(zhǔn)利用存儲(chǔ)從一幀到另一幀的主要變化實(shí)現(xiàn)數(shù)字視頻信號(hào)的高壓縮率。然后視頻信息可以利用多種不同技術(shù)進(jìn)一步壓縮。
在壓縮期間DSP可以用于對(duì)視頻信息執(zhí)行各種操作。這些操作可以包括運(yùn)動(dòng)搜索和空間內(nèi)插算法。首要目的是測(cè)量相鄰幀內(nèi)的各塊之間的失真。這些操作要進(jìn)行高強(qiáng)度的計(jì)算并要求高數(shù)據(jù)吞吐量。
MPEG標(biāo)準(zhǔn)族正在發(fā)展為跟上多媒體應(yīng)用和文件的帶寬增長(zhǎng)要求。每個(gè)標(biāo)準(zhǔn)的新的版本提供更復(fù)雜的算法,這些算法在DSP上產(chǎn)生適應(yīng)所用MPEG視頻處理設(shè)備的更快的處理要求。
視頻處理器設(shè)備的制造商經(jīng)常靠定制的特殊應(yīng)用集成電路(ASIC)用于在MPEG和H.263標(biāo)準(zhǔn)下的視頻編碼。但與通用DSP比較ASIC在設(shè)計(jì)上復(fù)雜、使產(chǎn)品昂貴、并且在其應(yīng)用上缺少靈活性。
當(dāng)閱讀了參照附圖進(jìn)行的下面的詳細(xì)描述后,本發(fā)明的這些和其他的特點(diǎn)和優(yōu)點(diǎn)將變得更加清楚。
圖1是按照一個(gè)實(shí)施例的利用處理器的移動(dòng)視頻裝置的框圖;圖2是按照一個(gè)實(shí)施例的信號(hào)處理系統(tǒng)的框圖;圖3是按照一個(gè)實(shí)施例的另外一種信號(hào)處理系統(tǒng)的框圖;圖4表示按照一個(gè)實(shí)施例的圖1中的處理器示例性流水線級(jí);圖5是按照一個(gè)實(shí)施例的跟蹤緩沖器的框圖;圖6是按照一個(gè)實(shí)施例的在圖5中的跟蹤緩沖器的壓縮操作的流程圖;圖7是按照一個(gè)實(shí)施例的圖5中的跟蹤緩沖器的有效位緩沖器的框圖。
具體實(shí)施例方式
圖1表示按照一個(gè)實(shí)施例的包括跟蹤緩沖器102的移動(dòng)視頻裝置100。移動(dòng)視頻裝置100可以是顯示從天線105接收的編碼視頻信號(hào)或來自數(shù)字視頻存儲(chǔ)介質(zhì),例如數(shù)字視盤(DVD)或者存儲(chǔ)卡的視頻圖象的手持裝置。處理器110與可以存儲(chǔ)用于處理操作的指令和數(shù)據(jù)的高速緩沖存儲(chǔ)器115通信。處理器110可以是微處理器、數(shù)字信號(hào)處理器(DSP)、控制從DSP的微處理器。對(duì)于這種應(yīng)用的目的,在下面處理器110將稱為DSP 110。
DSP 110可以對(duì)編碼視頻信號(hào)執(zhí)行各種操作,包括例如模-數(shù)變換、解調(diào)、濾波、數(shù)據(jù)恢復(fù)、和解碼。DSP 110可以根據(jù)諸如MPEG族和H.263標(biāo)準(zhǔn)之類的各種數(shù)字視頻信號(hào)壓縮標(biāo)準(zhǔn)之一解碼壓縮的數(shù)字視頻信號(hào)。然后,解碼的視頻信號(hào)可以輸入到顯示驅(qū)動(dòng)器130,在顯示器125上產(chǎn)生視頻圖象。
手持裝置一般具有有限的電源。另外,視頻解碼操作是高強(qiáng)度的計(jì)算。因此,用在這種裝置中的處理器有利地的相對(duì)高速度、低功耗的裝置。
DSP 110可以具有深度流水線、負(fù)載/存儲(chǔ)結(jié)構(gòu)。通過使用流水線,DSP的性能可以比非流水線DSP增強(qiáng)。代替取第一指令、執(zhí)行第一指令、并然后取第二指令,流水線DSP 110可以在執(zhí)行第一指令的同時(shí)取第二指令,從而改善指令的吞吐量。另外,流水線DSP的時(shí)鐘周期可以短于非流水線DSP,其中指令的取出和執(zhí)行是在相同的時(shí)鐘周期中。
這種DSP 110是為用于視頻攝象機(jī)、電視會(huì)議、PC視頻卡、和高清晰度電視(HDTV)設(shè)計(jì)的。另外,DSP 110還是用于與其他利用數(shù)字信號(hào)處理器的技術(shù)相關(guān)連而設(shè)計(jì)的,例如用在移動(dòng)電話、語音識(shí)別、和其他應(yīng)用。
圖2表示包括按照所示的一個(gè)實(shí)施例的DSP 110的信號(hào)處理系統(tǒng)200的框圖??梢杂衫缣炀€105的外部源提供一個(gè)或多個(gè)模擬信號(hào)到信號(hào)校正器202。信號(hào)校正器202被安排為對(duì)模擬信號(hào)執(zhí)行某些預(yù)處理功能。示例性的預(yù)處理功能可以包括將若干個(gè)模擬信號(hào)混合在一起、濾波、放大等。
模-數(shù)變換器(ADC)204可以耦合接收來自信號(hào)校正器202的經(jīng)處理的模擬信號(hào)并且可以變換經(jīng)處理的模擬信號(hào)為由各個(gè)樣值形成的數(shù)字信號(hào),如上所述。根據(jù)由信號(hào)校正器202接收的模擬信號(hào)的特性確定的取樣速率提取各樣值。當(dāng)接收數(shù)字信號(hào)時(shí)DSP 110可以執(zhí)行希望的信號(hào)變換,產(chǎn)生一個(gè)或多個(gè)輸出數(shù)字信號(hào)。數(shù)-模變換器(DAC)206可以耦合從DSP 110接收數(shù)字信號(hào)。DAC 206變換輸出數(shù)字信號(hào)為輸出模擬信號(hào)。輸出模擬信號(hào)然后可以被傳送到另外的信號(hào)校正器208。當(dāng)輸出模擬信號(hào)時(shí)信號(hào)校正器208可以執(zhí)行后處理功能。示例性后處理功能類似于上述的預(yù)處理功能。這些裝置的任何合適的配置可以耦合到具有DSP 110的信號(hào)處理系統(tǒng)200。
圖3表示按照另外實(shí)施例的信號(hào)處理系統(tǒng)300。在這個(gè)實(shí)施例中,數(shù)字接收機(jī)302可以被安排為接收一個(gè)或多個(gè)數(shù)字信號(hào)并傳送接收的數(shù)字信號(hào)到DSP 110。如圖2所示的實(shí)施例,當(dāng)接收數(shù)字信號(hào)時(shí)DSP 110執(zhí)行希望的信號(hào)變換,產(chǎn)生一個(gè)或多個(gè)輸出數(shù)字信號(hào)。數(shù)字信號(hào)發(fā)送機(jī)可以耦合接收輸出數(shù)字信號(hào)。在一個(gè)示例性應(yīng)用中,信號(hào)處理系統(tǒng)300是數(shù)字音頻裝置,其中數(shù)字接收機(jī)302傳送信號(hào)到DSP 110,數(shù)字指示存儲(chǔ)在數(shù)字存儲(chǔ)裝置120中的數(shù)據(jù)。然后DSP 110可以處理數(shù)字信號(hào)并傳送產(chǎn)生的輸出數(shù)字信號(hào)到數(shù)字發(fā)送機(jī)304。數(shù)字發(fā)送機(jī)304然后可以產(chǎn)生要發(fā)送到顯示驅(qū)動(dòng)器130的輸出數(shù)字信號(hào)的各個(gè)值,在顯示器125上產(chǎn)生視頻圖像。
如圖4所示的流水線可以包括8級(jí),這些級(jí)可以包括指令取出402-403、解碼404、地址計(jì)算405、執(zhí)行406-408、和寫回409級(jí)。指令i可以在一個(gè)時(shí)鐘周期取出并然后在流水線中與取出新的指令例如i+1和i+2同時(shí)按連續(xù)時(shí)鐘周期進(jìn)行操作和執(zhí)行。
流水線可能引入附加協(xié)調(diào)問題并且冒處理器性能的風(fēng)險(xiǎn)。在程序流中轉(zhuǎn)移可能在流水線中產(chǎn)生空隙,或“氣泡”。產(chǎn)生提取、除外、或產(chǎn)生中斷的有條件分支的狀態(tài)可以改變指令流的序列。在這種情況發(fā)生后,新的指令必須從連續(xù)程序流的外部取出,使得流水線中的其余指令不相關(guān)。可以使用流水線中的諸如數(shù)據(jù)轉(zhuǎn)發(fā)、動(dòng)態(tài)轉(zhuǎn)移預(yù)測(cè)、和有效位與指令地址的方法處理這些復(fù)雜性問題。
跟蹤緩沖器可以存儲(chǔ)處理器的程序計(jì)數(shù)器(程序流)信息。跟蹤緩沖器可以用作調(diào)試工具,在執(zhí)行期間重建采取的程序路徑。當(dāng)執(zhí)行程序時(shí),某些指令可能產(chǎn)生無法預(yù)料的事件。這種無法預(yù)料的事件可能引起程序流的中斷。這些事件包括,例如根據(jù)一個(gè)結(jié)果的動(dòng)態(tài)分支或由系統(tǒng)中的其他裝置觸發(fā)中斷。從靜態(tài)分析碼預(yù)測(cè)這些事件可能是困難的。當(dāng)執(zhí)行碼和進(jìn)行觸發(fā)時(shí),在跟蹤緩沖器執(zhí)行的各個(gè)指令(跟蹤數(shù)據(jù))的記錄可以用于確定何時(shí)出現(xiàn)這種不希望事件。
跟蹤緩沖器150(圖1)可以通過寫總線152連接到DSP 110。跟蹤緩沖器150可以在串行互聯(lián)寄存器中存儲(chǔ)取指令的地址。存儲(chǔ)的地址可以從跟蹤緩沖器150中讀到讀總線156的跟蹤存儲(chǔ)器154。跟蹤存儲(chǔ)器154可以是DSP內(nèi)部的或外部的。
圖5表示按照一個(gè)實(shí)施例的跟蹤緩沖器500的結(jié)構(gòu)。跟蹤緩沖器500可以在串聯(lián)的32個(gè)32位跟蹤緩沖器寄存器中存儲(chǔ)指定為tbuf.0到tbuf.31的32位指令地址,每個(gè)具有一個(gè)相連的輸入復(fù)用器505。按照一個(gè)實(shí)施例,跟蹤緩沖器150可以有64位寫總線152(圖1)和32位讀總線156。
除非發(fā)生事件諸如發(fā)生分支或中斷,使程序計(jì)數(shù)器(pc)轉(zhuǎn)移到碼的另外的位置外,均順序地執(zhí)行程序碼。因?yàn)檫@種轉(zhuǎn)移事件之間的碼是連續(xù)的,可以從轉(zhuǎn)移事件的記錄重建程序流。為了減少對(duì)跟蹤緩沖器要求的存儲(chǔ)及其操作速度,跟蹤緩沖器可以僅存儲(chǔ)引起程序轉(zhuǎn)移或中斷的指令的地址,即轉(zhuǎn)移指令、除外、中斷、和轉(zhuǎn)移目標(biāo)的地址。
轉(zhuǎn)移可以是在程序流中的公共轉(zhuǎn)移事件。每個(gè)轉(zhuǎn)移可以利用一對(duì)地址進(jìn)行識(shí)別,轉(zhuǎn)移目標(biāo)地址和轉(zhuǎn)移源地址。轉(zhuǎn)移目標(biāo)地址可以是轉(zhuǎn)移指令集中的第一指令地址,并且轉(zhuǎn)移源地址可以是產(chǎn)生程序流中斷的指令或者最后完成的指令的地址。
跟蹤緩沖器150在寫操作中可以按先進(jìn)-先出(FIFO)寄存器操作。對(duì)于轉(zhuǎn)移而言轉(zhuǎn)移目標(biāo)地址和轉(zhuǎn)移源地址可以在64位寫總線152作為64位字同時(shí)寫入跟蹤緩沖器。轉(zhuǎn)移目標(biāo)地址可以存儲(chǔ)在連接到tbuf.0的指定為pc.com的寄存器510,并且轉(zhuǎn)移源地址可以存儲(chǔ)在連接到tbuf.1的指定為pc.hold的寄存器510。當(dāng)在pc.com的寄存器510中的轉(zhuǎn)移目標(biāo)地址被寫到tbuf.0時(shí),即使有,當(dāng)前存儲(chǔ)在tbuf.0的轉(zhuǎn)移目標(biāo)地址可以按寫路徑514被移位到tbuf.2。同樣,當(dāng)在pc.hold的寄存器512中的轉(zhuǎn)移目標(biāo)地址被寫到tbuf.1時(shí),即使有,當(dāng)前存儲(chǔ)在tbuf.1的轉(zhuǎn)移源地址可以按寫路徑516被移位到tbuf.3。在接下的寫操作中,在tbuf.0中的轉(zhuǎn)移目標(biāo)地址可以被移位到tbuf.2和在tbuf.2中的轉(zhuǎn)移目標(biāo)地址可以被移位到tbuf.4。同樣的移位發(fā)生在tbuf.1中的轉(zhuǎn)移源地址移位到tbuf.3,和tbuf.3中的轉(zhuǎn)移源地址移位到tbuf.5。同樣的移位可以發(fā)生在其他跟蹤緩沖器寄存器中,即,在跟蹤緩沖器寄存器中的每個(gè)指令地址每個(gè)寫周期可以向下游移位2個(gè)寄存器。
對(duì)于讀操作跟蹤緩沖器可以按后進(jìn)-先出(LIFO)寄存器進(jìn)行操作。因?yàn)樽x總線156是32位寬度,可以不按對(duì)地個(gè)別讀出32位轉(zhuǎn)移目標(biāo)地址和轉(zhuǎn)移源地址。當(dāng)讀出tbuf.0中的地址時(shí),tbuf.1中的地址可以按讀路徑520被左移(上游)到tbuf.0。同樣,在其他跟蹤緩沖器寄存器中的地址也向上游移位一個(gè)寄存器。同樣的移位可以發(fā)生在其他跟蹤緩沖器寄存器中,即,每個(gè)時(shí)鐘周期跟蹤緩沖器中的每個(gè)指令地址向上游移位一個(gè)寄存器。
當(dāng)跟蹤緩沖器150全滿時(shí),即,填充tbuf.30和tbuf.31,跟蹤緩沖器可以觸發(fā)一個(gè)全除外的跟蹤緩沖器。除外可以發(fā)送到一個(gè)除外處理器,該處理器可以確定要除外的跟蹤緩沖器并對(duì)跟蹤緩沖器的空置內(nèi)容初始化為跟蹤存儲(chǔ)器154的讀出操作。除外處理器在讀出跟蹤緩沖器150的同時(shí)還可以中止程序流,防止跟蹤信息的丟失。跟蹤緩沖器可以按存儲(chǔ)器映射讀出(MMR)操作進(jìn)行讀出,其中tbuf.0的每個(gè)讀出地址被存儲(chǔ)在存儲(chǔ)器的對(duì)跟蹤緩沖器150的內(nèi)容特別分配的一個(gè)區(qū)域。
按照另外的實(shí)施例,當(dāng)跟蹤緩沖器150充滿時(shí),跟蹤緩沖器可以不觸發(fā)全除外的跟蹤緩沖器。而是,按FIFO寄存器進(jìn)行操作的跟蹤緩沖器150可以取消跟蹤緩沖器底部的地址,即,這些地址可以移出tbuf.30和tbuf.31。
為了進(jìn)一步保存跟蹤緩沖器資源,并因此改善性能水平和跟蹤緩沖器150可以操作的速度,可以提供跟蹤碼壓縮的結(jié)構(gòu)。程序流可以包括可能迅速充滿跟蹤緩沖器的軟件和硬件環(huán),增加讀出操作的頻率,并因此減慢跟蹤集合。雖然n-周期的環(huán)路中,進(jìn)行存儲(chǔ)的轉(zhuǎn)移目標(biāo)/源地址對(duì)被重復(fù)n次并因此可以不提供關(guān)于程序流的重要信息。從而,對(duì)壓縮重復(fù)的目標(biāo)/源地址對(duì)是希望的。
跟蹤緩沖器150能夠?qū)е乱淮螇嚎s的級(jí)和兩次壓縮的級(jí),其中一次壓縮的級(jí)可以由任何環(huán)進(jìn)行觸發(fā),和兩次壓縮的級(jí)可以由含有嵌套的內(nèi)部環(huán)路進(jìn)行觸發(fā)。圖6表示描述包括一次壓縮和兩次壓縮操作600的流程圖。如下的描述僅為實(shí)現(xiàn)操作600的一個(gè)實(shí)施例。在其他實(shí)施例中,描述可以跳過或按不同的方式執(zhí)行。
當(dāng)提出新的轉(zhuǎn)移目標(biāo)時(shí),轉(zhuǎn)移目標(biāo)/源地址對(duì)可以分別存儲(chǔ)在pc.com和pc.hold寄存器中,并且操作600可以返回狀態(tài)602。如果在pc.com和pc.hold寄存器中的地址對(duì)是新的地址對(duì),在狀態(tài)604可以比較tbuf.0和tbuf.1中存儲(chǔ)的地址對(duì)與一個(gè)比較器550級(jí)。
按照一個(gè)實(shí)施例,指令地址可以具有16位邊界。因此,指令地址的最低有效位(LSB)可以是(0),并因此提供無用信息。因此,在新地址對(duì)與含在tbuf.0和tbuf.1中存儲(chǔ)的地址對(duì)之間的比較中,不考慮指令地址的LSB。
按照一個(gè)實(shí)施例,在tbuf.0中的轉(zhuǎn)移目標(biāo)地址的LSB可以用于指示一次壓縮級(jí)。如果地址對(duì)匹配,在狀態(tài)606在tbuf.0和tbuf.1中存儲(chǔ)的地址對(duì)可以通過設(shè)置一般為零(0)的tbuf.0中的轉(zhuǎn)移目標(biāo)地址LSB為一(1)進(jìn)行壓縮。在這種情況下,新的地址對(duì)不寫入跟蹤緩沖器。
如果在狀態(tài)608二級(jí)壓縮被確定為不能,并新的和存儲(chǔ)的地址對(duì)不匹配,則在狀態(tài)610新的地址對(duì)可以寫入tbuf.0和tbuf.1。
如果在狀態(tài)608二級(jí)壓縮被確定為能,并新的和存儲(chǔ)的地址對(duì)不匹配,則在狀態(tài)612在pc.com和pc.hold寄存器的新地址對(duì)可以通過兩個(gè)比較器552級(jí)與存儲(chǔ)在tbuf.2和tbuf.3的地址對(duì)進(jìn)行比較。如果新地址對(duì)和存儲(chǔ)在tbuf.2和tbuf.3的地址對(duì)匹配,在狀態(tài)614,tbuf.3中的轉(zhuǎn)移源地址的LSB可以設(shè)置為一(1)。在這種情況下,新的地址對(duì)不寫入跟蹤緩沖器。
如果新的地址對(duì)和存儲(chǔ)在tbuf.2和tbuf.3的地址對(duì)不匹配,在狀態(tài)610新的地址對(duì)可以寫入跟蹤緩沖器。
例1表示一個(gè)一次壓縮操作級(jí)的示例。
例1中的程序流包括一個(gè)遞歸環(huán),該環(huán)包含在指令地址0x200a到在指令地址0x2002的指令I(lǐng)2的轉(zhuǎn)移(轉(zhuǎn)移源地址),直到環(huán)期滿為止。一旦環(huán)期滿,PC則離開該環(huán)到指令地址0x200c的指令I(lǐng)5。
在該環(huán)的第一迭代后,tbuf.0含有指令地址0x2002(轉(zhuǎn)移目標(biāo)地址)和tbuf.1含有指令地址0x200a(轉(zhuǎn)移源地址)。在該環(huán)的第二迭代中,一個(gè)比較器550級(jí)比較新的目標(biāo)/源地址對(duì)(0x2002、0x200a)與在tbuf.0和tbuf.1存儲(chǔ)的地址對(duì),忽略各地址的LSB。因?yàn)樾碌暮痛鎯?chǔ)的地址對(duì)匹配,新的地址對(duì)不寫入tbuf.0和tbuf.1并tbuf.0中的轉(zhuǎn)移目標(biāo)地址的LSB被設(shè)置為一(1)。轉(zhuǎn)移目標(biāo)地址的LSB的設(shè)置從0x2002到0x200a改變其值。
在該環(huán)的第三迭代中,一個(gè)比較器550級(jí)比較新的地址對(duì)(0x2002、0x200a)與在tbuf.0和tbuf.1存儲(chǔ)的地址對(duì),忽略各地址的LSB。因?yàn)榈刂穼?duì)匹配,在pc.com和pc.hold寄存器中的新的地址對(duì)不寫入tbuf.0和tbuf.1,并且tbuf.0和tbuf.1的地址對(duì)仍然為(0x2003、0x200a)。
例2表示兩次壓縮操作級(jí)的例子。
例2的程序流包括一個(gè)遞歸外環(huán),該環(huán)包含在指令地址0x2010向在指令地址0x2000的指令I(lǐng)1的轉(zhuǎn)移,并且包括一個(gè)內(nèi)環(huán),該環(huán)包含在指令地址0x2008向在指令地址0x2002的指令I(lǐng)2的轉(zhuǎn)移。
42.在內(nèi)環(huán)的第一迭代后,tbuf.0含有指令地址0x2002(轉(zhuǎn)移目標(biāo)地址)和tbuf.1含有指令地址0x200a(轉(zhuǎn)移源地址)。在內(nèi)環(huán)的第二迭代中,如上參照例1所述產(chǎn)生一次壓縮級(jí)并且在tbuf.0中的轉(zhuǎn)移目標(biāo)地址,即,0x2002被設(shè)置為0x2003。
一旦內(nèi)環(huán)期滿,PC離開該環(huán)到在指令地址0x200a的指令I(lǐng)4,直至迂到在指令地址0x2010的轉(zhuǎn)移指令返回到指令I(lǐng)1。在外環(huán)的第一迭代中,外環(huán)的轉(zhuǎn)移目標(biāo)地址,即0x2000,被寫入tbuf.0,外環(huán)的轉(zhuǎn)移源地址,即0x2010,被寫入tbuf.1,并且tbuf.0和tbuf.1中的地址對(duì)(0x2003、0x2008)被移位到tbuf.2和tbuf.3。在外環(huán)的第二迭代中迂到內(nèi)環(huán)的第二時(shí)間,發(fā)生二級(jí)壓縮。在狀態(tài)604(圖6)一次比較器550級(jí)比較新的地址與存儲(chǔ)在tbuf.0和tbuf.1(0x2000、0x2010)中的地址對(duì)。因?yàn)檫@些對(duì)不匹配,在狀態(tài)612,兩個(gè)比較器552級(jí)比較新的地址對(duì)(0x2002、0x2008)與存儲(chǔ)在tbuf.0和tbuf.1(0x2003、0x2008)中的地址對(duì),忽略LSB。一切這些地址對(duì)匹配,新的地址對(duì)不寫入tbuf.0和tbuf.1。二級(jí)壓縮是通過設(shè)置tbuf.3中的源地址的LSB從零(0)到(1)指示的地址,改變存儲(chǔ)的指令地址值從0x2008到0x2009。
在外環(huán)第二迭代中,一次壓縮級(jí)發(fā)生在外環(huán)。一個(gè)比較器550的級(jí)比較新的地址對(duì)(0x2000、0x2010)與存儲(chǔ)在tbuf.0和tbuf.1(0x2000、0x2010)的地址對(duì),忽略各地址的LSB。因?yàn)樾碌暮痛鎯?chǔ)的地址對(duì)匹配,新的地址對(duì)不寫入tbuf.0和tbuf.1,并且在tbuf.0中的目標(biāo)地址LSB被從零(0)設(shè)置為一(1),從0x2000到0x2001改變存儲(chǔ)的指令地址值。
當(dāng)電源關(guān)閉后DSP 110重開,即電源導(dǎo)通重新設(shè)置時(shí),跟蹤緩沖器150可能仍含有DSP 110關(guān)機(jī)前正在執(zhí)行的程序流的無效指令地址。按照一個(gè)實(shí)施例,在跟蹤緩沖器中的每個(gè)指令地址具有一個(gè)相關(guān)的1-位有效位。有效位分別利用HIGH或LOW值指示在跟蹤緩沖器150中的指令地址對(duì)于當(dāng)前程序流是有效還是無效。如果指令地址是無效的,在讀操作中它可以不寫入跟蹤存儲(chǔ)器154。
圖7表示有效位緩沖器700,它可以跟蹤跟蹤緩沖器150中與指令地址相關(guān)的有效位。有效位緩沖器700可能具有跟蹤緩沖器150的并行結(jié)構(gòu),跟蹤緩沖器150包括指定給每個(gè)與輸入MUX 705相連的vbuf.0和vbuf.31的32個(gè)1位觸發(fā)器(FF)。每個(gè)有效位緩沖器的輸入MUX 705可以包括一個(gè)復(fù)位門710。在電源導(dǎo)通復(fù)位的情況下,在每個(gè)有效位緩沖器FF中的有效位可以設(shè)置為零(0),指示在跟蹤緩沖器150中的對(duì)應(yīng)的指令地址無效。
有效位緩沖器的操作還可以并行于跟蹤緩沖器的操作。在寫操作的情況下,對(duì)應(yīng)于在pc.com寄存器中的轉(zhuǎn)移目標(biāo)地址的有效位可以從FF 713轉(zhuǎn)移到vbuf.1。類似跟蹤緩沖器150,在寫操作情況下有效位可以沿寫路徑714移位兩個(gè)FF,并且在讀操作情況下沿讀路徑716移位一個(gè)FF。對(duì)于vbuf.0的每個(gè)有效位讀出,具有LOW值的1位有效位可以利用有效位發(fā)生器720寫入vbuf.31,代替移位到vbuf.30。
按照各種實(shí)施例的跟蹤緩沖器可以有益地產(chǎn)生精確的除外,同時(shí)捕獲程序流中的所有變化。另外,跟蹤緩沖器的FIFO/LIFO組織可以要求比僅FIFO或者僅LIFO結(jié)構(gòu)少的復(fù)用,因此減少芯片上跟蹤緩沖器150的空間和功耗要求。
已經(jīng)描述了本發(fā)明的一些實(shí)施例。但是,應(yīng)理解為在不超出本發(fā)明的精神和范圍的情況下可以作出各種修改。例如,雖然描述了具有32位寬度的指令地址,但是例如16位或64位寬度的指令地址利用相應(yīng)規(guī)模的跟蹤緩沖器寄存器和讀/寫總線的跟蹤緩沖器也可以進(jìn)行跟蹤。從而,其他各實(shí)施例都在如下權(quán)利要求書的范圍內(nèi)。
權(quán)利要求
1.一種跟蹤緩沖器電路,包括多個(gè)互聯(lián)的寄存器,包括輸入和輸出指令地址的第一終端寄存器、和第二終端寄存器、和連接在所述第一終端寄存器和所述第二終端寄存器之間的多個(gè)中間寄存器;和一個(gè)寫路徑,在寫操作情況下在所述多個(gè)互聯(lián)的寄存器之一將指令地址向第二終端寄存器移位兩個(gè)寄存器。
2.權(quán)利要求1的電路,還包括一個(gè)讀路徑,在讀操作情況下將指令地址向第一終端寄存器移位一個(gè)寄存器。
3.權(quán)利要求1的電路,其中,跟蹤緩沖器在寫操作情況下按先-進(jìn)先出(FIFO)寄存器操作和在讀操作情況下按后進(jìn)-先出(LIFO)寄存器操作。
4.權(quán)利要求1的電路,其中,指令地址包括32位字。
5.權(quán)利要求4的電路,其中,第一和第二終端寄存器和多個(gè)互聯(lián)寄存器的每個(gè)包括32位字。
6.權(quán)利要求5的電路,其中多個(gè)互聯(lián)寄存器包括32個(gè)寄存器。
7.權(quán)利要求5的電路,還包括64位寫總線,在寫操作情況下寫64位地址對(duì)到第一和第二終端寄存器和一個(gè)鄰近寄存器;和32位讀總線,在讀操作情況下從第一終端寄存器讀32位指令地址。
8.權(quán)利要求1的電路,還包括第一保持寄存器;第二保持寄存器;第一比較器,比較第一保持寄存器中新轉(zhuǎn)移目標(biāo)地址與第一終端寄存器中存儲(chǔ)的轉(zhuǎn)移目標(biāo)地址;第二比較器,比較第二保持寄存器中新轉(zhuǎn)移源地址與第一鄰近寄存器中存儲(chǔ)的轉(zhuǎn)移源地址,所述第一鄰近寄存器連接到讀路徑的第一終端寄存器;和壓縮指示電路,響應(yīng)于新轉(zhuǎn)移目標(biāo)地址匹配于存儲(chǔ)的轉(zhuǎn)移目標(biāo)地址和新轉(zhuǎn)移源地址匹配于存儲(chǔ)的轉(zhuǎn)移源地址而產(chǎn)生壓縮指示符。
9.權(quán)利要求8的電路,其中壓縮指示電路響應(yīng)于新轉(zhuǎn)移目標(biāo)地址匹配于存儲(chǔ)的轉(zhuǎn)移目標(biāo)地址和新轉(zhuǎn)移源地址匹配于存儲(chǔ)的轉(zhuǎn)移源地址,進(jìn)行操作設(shè)置存儲(chǔ)的轉(zhuǎn)移目標(biāo)地址的最低有效位。
10.權(quán)利要求8的電路,還包括在所述多個(gè)寄存器中的第二鄰近寄存器,所述第二鄰近寄存器在讀路徑中連接到第一鄰近寄存器;在所述多個(gè)寄存器中的第三鄰近寄存器,所述第三鄰近寄存器在讀路徑中連接到第二鄰近寄存器;第三比較器,比較第一保持寄存器中的新轉(zhuǎn)移目標(biāo)地址與第二鄰近寄存器中存儲(chǔ)的轉(zhuǎn)移目標(biāo)地址;和第四比較器,比較第二保持寄存器中的新轉(zhuǎn)移源地址與第三鄰近寄存器中存儲(chǔ)的轉(zhuǎn)移源地址;其中,壓縮指示電路響應(yīng)于新轉(zhuǎn)移目標(biāo)地址匹配于第二鄰近寄存器中存儲(chǔ)的轉(zhuǎn)移目標(biāo)地址和新轉(zhuǎn)移源地址匹配于第三鄰近寄存器中存儲(chǔ)的轉(zhuǎn)移源地址,進(jìn)行操作產(chǎn)生壓縮指示符。
11.權(quán)利要求10的電路,其中,壓縮指示電路響應(yīng)于新轉(zhuǎn)移目標(biāo)地址匹配于在第二鄰近寄存器中存儲(chǔ)的轉(zhuǎn)移目標(biāo)地址和新轉(zhuǎn)移源地址匹配于在第三鄰近寄存器中存儲(chǔ)的轉(zhuǎn)移源地址,進(jìn)行操作設(shè)置在第三鄰近寄存器存儲(chǔ)的轉(zhuǎn)移源地址的最低有效位。
12.權(quán)利要求1的電路,還包括有效位緩沖器,包括第一終端觸發(fā)器,從有效位緩沖器輸入和輸出有效位;第二終端觸發(fā)器;連接在所述第一終端觸發(fā)器和所述第二終端觸發(fā)器之間的多個(gè)互聯(lián)觸發(fā)器;一個(gè)寫路徑,在寫操作情況下將多個(gè)互聯(lián)觸發(fā)器之一中的一個(gè)有效位向下游觸發(fā)器移位兩個(gè)觸發(fā)器;和一個(gè)讀路徑,在讀操作情況下將該有效位向上游觸發(fā)器移位一個(gè)觸發(fā)器。
13.一種流水線處理器,包括一個(gè)跟蹤緩沖器電路,連接到流水線數(shù)字信號(hào)處理器,所述跟蹤緩沖器電路包括多個(gè)互聯(lián)的寄存器,包括輸入和輸出指令地址的第一終端寄存器,第二終端寄存器,和連接在所述第一終端寄存器和第二終端寄存器之間的多個(gè)中間寄存器;一個(gè)寫路徑,在寫操作情況下將所述多個(gè)互聯(lián)的寄存器之一中的指令地址向第二終端寄存器移位兩個(gè)寄存器;和一個(gè)讀路徑,在讀操作情況下將該指令地址向第一終端寄存器移位一個(gè)寄存器。
14.權(quán)利要求13的處理器,其中,在寫操作情況下跟蹤緩沖器按先-進(jìn)先出(FIFO)寄存器操作和在讀操作情況下按后進(jìn)-先出(LIFO)寄存器操作。
15.權(quán)利要求13的處理器,其中,指令地址包括32位字。
16.權(quán)利要求15的處理器,其中,每個(gè)第一和第二終端寄存器和多個(gè)互聯(lián)寄存器的每個(gè)包括32位寄存器。
17.權(quán)利要求16的處理器,還包括64位寫總線,在寫操作情況下寫64位地址對(duì)到第一終端寄存器和一個(gè)鄰近寄存器;和32位讀總線,在讀操作情況下從第一終端寄存器讀32位指令地址。
18.一種壓縮方法,包括響應(yīng)于新地址對(duì)匹配于存儲(chǔ)的地址對(duì),設(shè)置在存儲(chǔ)的地址對(duì)中的轉(zhuǎn)移目標(biāo)地址的最低有效位。
19.權(quán)利要求18的方法,還包括響應(yīng)于新地址對(duì)匹配于存儲(chǔ)的地址對(duì),忽略新地址對(duì)。
20.權(quán)利要求18的方法,還包括在第一對(duì)寄存器中存儲(chǔ)存儲(chǔ)的地址對(duì);和比較新地址對(duì)與存儲(chǔ)的地址對(duì)。
21.權(quán)利要求20的方法,還包括響應(yīng)于新地址對(duì)不匹配于存儲(chǔ)的對(duì),寫新地址對(duì)到第一對(duì)寄存器。
22.權(quán)利要求20的方法,還包括比較新地址對(duì)與在鄰近第一寄存器對(duì)的第二對(duì)寄存器中的第二存儲(chǔ)地址對(duì);響應(yīng)于新地址對(duì)匹配于第二存儲(chǔ)對(duì),設(shè)置在第二存儲(chǔ)地址對(duì)中的轉(zhuǎn)移源地址的最低有效位;和響應(yīng)于新地址對(duì)不匹配于第二存儲(chǔ)對(duì),寫新地址對(duì)到第一對(duì)寄存器。
23.權(quán)利要求22的方法,還包括響應(yīng)于新地址對(duì)匹配于第二存儲(chǔ)地址對(duì),忽略新地址對(duì)。
24.一種由處理器執(zhí)行的跟蹤指令的方法,包括按先進(jìn)-先出寫操作寫2n-位地址對(duì);和按后進(jìn)-先出讀操作讀n位地址。
25.權(quán)利要求24的方法,其中n是32。
26.權(quán)利要求24的方法,其中,地址對(duì)包括轉(zhuǎn)移目標(biāo)地址和轉(zhuǎn)移源地址。
27.一種設(shè)備,包括在機(jī)器可讀介質(zhì)上駐存的用于跟蹤緩沖器的指令,該指令使機(jī)器響應(yīng)于新地址對(duì)匹配于存儲(chǔ)的地址對(duì),設(shè)置存儲(chǔ)地址對(duì)中的轉(zhuǎn)移目標(biāo)地址的最低有效位。
28.權(quán)利要求27的設(shè)備,還包括使機(jī)器作以下操作的指令響應(yīng)于新地址對(duì)匹配于存儲(chǔ)的地址對(duì),忽略新地址對(duì)。
29.權(quán)利要求27的設(shè)備,還包括使機(jī)器作以下操作的指令在第一寄存器對(duì)中存儲(chǔ)存儲(chǔ)的地址對(duì);和比較新地址對(duì)與在第一寄存器對(duì)中存儲(chǔ)的地址對(duì)。
30.權(quán)利要求29的設(shè)備,還包括使機(jī)器作以下操作的指令響應(yīng)于新地址對(duì)不匹配于存儲(chǔ)的對(duì),寫新地址對(duì)到第一寄存器對(duì)。
31.權(quán)利要求29的設(shè)備,還包括使機(jī)器作以下操作的指令比較新地址對(duì)與在鄰近第一寄存器對(duì)的第二寄存器對(duì)中的第二存儲(chǔ)的地址對(duì);響應(yīng)于新地址對(duì)匹配于第二地址對(duì),設(shè)置第二存儲(chǔ)地址對(duì)中的轉(zhuǎn)移源地址的最低有效位;和響應(yīng)于新地址對(duì)不匹配于第二存儲(chǔ)的對(duì),寫新地址對(duì)到第一寄存器對(duì)。
32.權(quán)利要求31的設(shè)備,還包括使機(jī)器作以下操作的指令響應(yīng)于新地址對(duì)匹配于第二存儲(chǔ)的地址對(duì),忽略新地址對(duì)。
全文摘要
在一個(gè)實(shí)施例中,用于流水線處理器(DSP)的跟蹤緩沖器電路可以包括在寫操作時(shí)按先-進(jìn)先-出(FIFO)寄存器操作和在讀操作時(shí)按后進(jìn)-先出(LIFO)操作的互聯(lián)寄存器的串聯(lián)。在寫操作時(shí),轉(zhuǎn)移目標(biāo)/源地址對(duì)可以寫入跟蹤緩沖器寄存器的第一對(duì),并且每個(gè)寄存器的內(nèi)容可以向上游移位一個(gè)寄存器。跟蹤緩沖器還可以包括使用硬件和軟件環(huán)對(duì)程序流壓縮的結(jié)構(gòu)。有效位可以分配給跟蹤緩沖器中的每個(gè)指令地址并具有并行結(jié)構(gòu)的有效位緩沖器,跟蹤緩沖器可以提供有效位的跟蹤。
文檔編號(hào)G06F11/28GK1541356SQ01816465
公開日2004年10月27日 申請(qǐng)日期2001年9月26日 優(yōu)先權(quán)日2000年9月29日
發(fā)明者R·P·辛格, C·P·洛斯, G·A·奧弗坎普, R P 辛格, 奧弗坎普, 洛斯 申請(qǐng)人:英特爾公司, 模擬設(shè)備股份有限公司