專利名稱:用于存儲和提供解碼信息的帶高速緩存器的裝置及其方法
技術領域:
本發(fā)明涉及提供解碼信息的裝置和方法,尤其是涉及具有用于存儲和向信息接收者提供解碼信息的高速緩存的裝置。
存在一種以編碼形式存儲指令的需要。這可以是因為想要使指令對于非計劃中的用戶不透明或通過某些去除冗余的方法節(jié)省存儲器或壓縮編碼或由于其它原因。
以編碼形式存儲指令導致幾個問題,其中一個是需要將從存儲器中取回的指令進行解碼。當需要重新取回已編碼指令時就需要再對其解碼,從而導致浪費時間和降低裝置性能。
在許多計算機裝置中,當信息流發(fā)生變化時這些問題更加尖銳。當信息流變化時,必須要在提供給計算機裝置的CPU之前從存儲器中取回指令并解碼。
信息流的變化可能出于各種原因,比如執(zhí)行條件或非條件分支指令時。分支目標指令是一種在執(zhí)行分支指令時被CPU取走的指令。分支目標指令的地址被稱為“分支目標地址”,且是任何分支指令的一部分。在一些指令,例如PowerPC微處理器的Isync指令中,分支目標地址是預先確定的,由操作碼單獨地驅動。
當分支預測錯誤時,這個問題也會發(fā)生。在這種情況下,需要重新取回跟隨分支指令的指令。
在假設支持處理非常頻繁變化的數(shù)據流的計算機裝置中,以上所提到的這種時間浪費和降低裝置性能的情況尤其尖銳。
另一個關于以編碼形式存儲指令的問題就是,指令的長度因編碼指令不對齊而不同。此外,單個編碼指令可能會存儲在存儲字一部分甚至是多于一個存儲字中。
存在一種需要,允許數(shù)據流頻繁變化而帶來的性能損失最小。進一步存在一種對能夠減小或消除所述和其他現(xiàn)有技術具有的公知限制的,可用于改進的計算機和計算機存儲器組織和操作方法的需要。
圖5是根據本發(fā)明的另一個優(yōu)選實施例,對
圖1-2的計算機裝置高速緩存的簡化原理描述;圖6是根據本發(fā)明的優(yōu)選實施例的簡化時序圖,示出圖1-5的高速緩存指令的儲存;圖7是根據本發(fā)明的優(yōu)選實施例,用于存儲和從高速緩存中或向其提供解碼指令的方法流程圖。
本發(fā)明提供了一種裝置和方法,所述裝置和方法用于提供解密信息,例如編碼指令,所述裝置包括用于存儲解碼指令的存儲模塊;與存儲模塊相連的解碼器,其用于取出和將已解碼指令進行解碼用以提供已解碼指令;以及與存儲模塊和解碼器和解碼指令接收者相連的高速緩存器,所述高速緩存器適用于存儲至少一組解碼指令,以在高速緩存檢查條件滿足且高速緩存選中發(fā)生后提供給指接收者。
方便地,指令被信息接收者執(zhí)行。所述指令以解碼形式存儲于高速緩存中,并以編碼形式存儲于存儲模塊中,同時指令接收者是適于執(zhí)行已解碼指令的處理單元。
方便地,當數(shù)據流發(fā)生改變時高速緩存檢查條件滿足(fulfill)??蛇x地,也可以在被解碼器解碼的指令不在預先確定的指令集中時高速緩存檢查條件滿足。優(yōu)選地,所述指令集包括具有預先確定的分支目標地址(例如Isync指令和/或)的分支指令。也可以在分支預測錯誤時執(zhí)行高速緩存檢查條件。
指令集的最大長度設計成應對不同情況,諸如最壞情況,其中以一種方式設計最大長度以允許在高速緩存提供指令集之后解碼器立即提供已解碼的指令。對應于典型情況,最大長度也可以較短,以便在大多數(shù)情況下解碼器可以在高速緩存器提供指令集之后立即提供已解碼的指令。
方便地,裝置具有用于補償解碼指令長度不同的地址轉換機制。優(yōu)選地,該機制適用于提供至少一個存儲字位置的存儲模塊,所述存儲字至少存儲由解碼器解碼的指令的第一部分。
方便地,高速緩存包括標記存儲器(tag memory);寄存器堆,用于存儲定義了至少一個解碼指令集狀態(tài)的變量;高速緩存存儲器,用于存儲至少一個解碼指令集,和與標記存儲器、高速緩存存儲器、寄存器堆相連的控制單元,用于控制儲存和向高速緩存發(fā)送或從中接收指令。優(yōu)選地,每個高速緩存存儲器中的指令都帶有下一指令的地址。標記存儲器存儲多個解碼指令,所述每個指令都是不在高速緩存存儲器中存儲的已解碼指令集中的第一個指令。
為了便于闡述,假設編碼指令是解碼的指令,并且數(shù)據流的改變是分支的結果。
圖1是使用本發(fā)明的與處理器/CPU 22相連的裝置20的簡化框圖。裝置19包括高速緩存器24,指令存儲器模塊26和通過控制總線111、指令總線112和地址總線113連接的解碼器28。正如根據圖2-6的進一步詳細描述,高速緩存器24存儲多個解碼的指令集,每個集以分支目標指令開始。這樣安排使得當解碼器28在高速緩存器24提供指令集之后解碼將要提供的編碼指令同時,允許數(shù)據流發(fā)生改變時提供解碼指令。高速緩存器24為指令存儲模塊26提供至少已編碼指令的第一個指令的地址,所述編碼指令在高速緩存器24中的指令集的上一個指令(the last instruction)后。那個指令的部分和其他連續(xù)部分和跟隨其后的指令被提供給解碼器28,以被解碼并將其提供給CPU 22。
當高速緩存發(fā)生丟失時,解碼器28從指令存儲模塊26中取出相關的編碼指令,將其解碼并將分支目標指令以及隨后的指令提供給CUP 22和高速緩存器24。高速緩存器24存儲分支目標指令和多個連續(xù)(consecutive)指令。
本發(fā)明的另一個實施例中,高速緩存器24還存儲至少一個指令集,所述指令集以跟隨分支指令后的指令開始,以便如果分支預測錯誤,高速緩存器24提供跟隨分支指令后的指令。當分支指令被解碼時,解碼器28通知高速緩存器24,高速緩存器24讀取跟隨分支指令后的指令。
方便地是,裝置19適用于處理提供長度不同的解碼指令的問題,正如根據圖2-6所要闡述的,裝置19具有一個地址轉換機制,可以在已解碼的指令提供給CPU 22之前,用將所有指令提供給解碼器28的方式將存儲字內容取給解碼器28。以解碼形式INST(j,1)存儲在高速緩存器24中的指令附帶下一條指令的地址ADD(j,2)。這個地址在解碼過程中由解碼器28產生并提供給CPU 22。方便地,CPU 22通過經總線21向高速緩存器24和解碼器28提供ADD(j)來開始讀周期。
每個指令集的深度設計成允許以將解碼的指令提供給CPU 24,同時在指令集中的上一個指令后的指令被從指令存儲模塊25中取出、被解碼器28解碼并以已解碼形式提供給CPU 22。這個長度可以設置成應對不同情況,如最壞情況或典型情況。例如,如果已解碼指令可在一到三個時鐘周期內從指令存儲模塊中取出并在隨后的時鐘周期內將已解碼的指令提供給CPU 22,指令集的長度可以適用于在四個時鐘周期內提供已解碼指令以應對最壞情況。
方便地,高速緩存器24相對較小而且是全互聯(lián)方式(fullyassociative),但這些特性并非必備,高速緩存器24可以更大和/或以直接映射高速緩存器或組互聯(lián)高速緩存器方式實現(xiàn)。
圖3示出指令存儲模塊26的261部分。261部分包括六個存儲字261_1至261_6,并存儲了八個已解碼指令C_INST(j,1)-C_INST(j,9)71_79,而圖4-5示出第j個已解碼指令集,以INST(j,1)開始存儲在高速緩存器24中。C_INST(j,2)具有兩個部分C_INST(j,2,1)78_1和C_INST(j,2,2)72_2。C_INST(j,8)具有三個部分C_INST(j,8,1)78_1,C_INST(j,8,2)78_2和C_INST(j,8,3)78_3。已解碼指令長度不同并存儲在一到三個存儲字中。
第一存儲字261_1存儲C_INST(j,1)71和C_INST(j,2,1)72_1。第二存儲字261_2存儲C_INST(j,2,2)72_2,C_INST(j,3)73和C_INST(j,4)74。第三存儲字261_3存儲C_INST(j,5)75和C_INST(j,6)76。第四存儲字261_4存儲C_INST(j,7)77和C_INST(j,3,1)73_1。第五存儲字261_5存儲C_INST(j,8,2)78_2。第六存儲字存儲C_INST(j,8,3)78_3和C_INST(j,9)72_9。
圖2是使用本發(fā)明的裝置20和CPU 22的簡化方框圖,裝置20包括高速緩存器24,第一多路復用器30,指令存儲模塊26,解碼器28,第二多路復用器32和第三多路復用器34。
CPU 22取出已解碼指令并執(zhí)行它們。指令以編碼形式在指令存儲模塊26中存儲,并在解碼后提供給CPU 22。已解碼指令可以由解碼器28或高速緩存器24提供給CPU 22。
CPU 22通過總線21與高速緩存器24相連,用于在當前時鐘周期CK(n)提供將要被取給CPU 22的當前指令INST(n)的當前地址ADD(n)。CPU 22通過連線49與高速緩存器24相連,用于提供顯示數(shù)據流發(fā)生改變的控制信號COF(n)。當數(shù)據流發(fā)生改變時執(zhí)行高速緩存檢查條件。高速緩存器監(jiān)聽總線并且當數(shù)據流發(fā)生改變時它比較ADD(n)和標記存儲器50的至少一部分以確定是否發(fā)生高速緩存選中(hit)。高速緩存未選中(miss)后,直至以下兩個事件的最早事件發(fā)生為止(a)導致高速緩存未選中的已解碼指令集已經存儲在高速緩存器24中,所述指令集以分支目標指令開始;(b)數(shù)據流發(fā)生另一改變,高速緩存24(snarfs)連線45和47以已解碼指令和地址。例如,圖4-5示出包含三個指令而非可能的四個指令的第(j+1)個指令集。這可能是由于在三個分離的時鐘周期中數(shù)據流發(fā)生了兩次改變,其中導致第一個數(shù)據流改變的INST(j+1,1)存儲在高速緩存器24中。
CPU 22通過總線21與第二多路復用器32相連,用于接收下一個地址ADD(n+1)-跟在地址ADD(n)后面的地址。這個下一地址可以由高速緩存器24或解碼器28提供。CPU 22通過總線25與第三多路復用器34相連以用于接收INST(n),ADD(n+1)和INST(n)可以由高速緩存器24或解碼器28提供。
當數(shù)據流發(fā)生改變并且CPU 22要求取指令INST(n)時,它在總線21上提供ADD(n)并且設置COF(n)以顯示數(shù)據流發(fā)生了改變。高速緩存器24檢查它是否存儲了有效的INST(n)。如在圖4-5中更詳細所見,這個檢查涉及檢查用于ADD(n)的標記存儲器50和檢查用于顯示所選指令集有效性的存儲器堆90。為便于闡述,假設ADD(n)=ADD(j+1),于是高速緩存發(fā)生選中,高速緩存器24設置HIT控制信號并將HIT通過總線37提供給第一到第三多路復用器30-34,導致他們選擇總線35,29和27。因此,高速緩存器24向CPU 22提供INST(j,1),ADD(j,2),并向指令存儲模塊29提供第j個指令集的上一個指令INST(j,4)的已解碼指令地址(其等于261_3)C_INST(j,5)。高速緩存器24向CPU 22提供I(j,4)后,HIT被復位。只要HIT處于復位解碼器28就向CPU 22和指令存儲模塊26提供指令和地址。
圖4-5是根據本發(fā)明的兩個優(yōu)選實施例的高速緩存器24的簡化原理圖。
高速緩存器24由標記存儲器50,控制單元56,寄存器堆100和高速緩存存儲器90組成。圖4-5示出標記存儲器50的一部分標記寄存器和比較器52及54,存儲器堆100的100_1部分和高速緩存存儲器90的90_1部分。
標記寄存器和比較器TAG(j)52和TAG(j+1)54與總線21相連,用于接收ADD(n),將其與ADD(j,1)和ADD(j+1,2)分別比較,并提供信號以指示是否匹配。信號通過總線53和55提供給控制單元56??刂茊卧?6通過總線61與寄存器堆120相連,通過總線62與高速緩存存儲器90相連,通過總線51,47和45與解碼器28相連,通過總線37與第一到第三多路復用器30-34相連,以及通過總線49與CPU 22相連。寄存器堆120通過總線29連到第二多路復用器32。高速緩存器24經過總線35與第一多路復用器30相連,并經過總線27與第三多路復用器34相連。
ADD(j,1)和ADD(j+1,1)與INST(j,1)和INST(j+1,1)關聯(lián)。90_1部分存儲第j和j+1個已解碼指令集。第j個指令集以INST(j,1)81開始而第j+1個指令集以INST(j+1,1)111開始。第j指令集包含分別存儲在存儲器的91_1,92_2,93_1,和94_1部分中的INST(j,1)81,INST(j,2)82,INST(j,3)83,和INST(j,4)84。INST(j,1)至INST(j,4)與地址ADD(j,2)-ADD(j,5)82直至85關聯(lián)。第(j+1)組指令包括分別存儲在存儲器的91_5,91_6,91_7部分中的INST(j+1,1)111,INST(j+1,2)112,INST(j+1,3)113。INST(j+1,1)-INST(j+1,1)與地址ADD(j+1,2)-ADD(j+1,4)112直至114關聯(lián)。ADD(j,2)82直至ADD(j,5)85存儲在存儲器的92_1至92_4部分中。
每組指令與三個變量有關有效頁變量,有效計數(shù)變量和下一地址變量。有效頁變量顯示一組指令中是否包含有效指令。有效計數(shù)變量顯示不在指令集中而又要提供給CPU 22的指令數(shù)目。例如,如果指令集有四個有效指令則在指令集的第一個指令提供給CPU 22后,有效計數(shù)變量被置為3。在第四個指令被提供給CPU 22后該變量被置為零。當信號HIT被置位時,該變量置為四,以顯示當這組指令被重新取出時可以提供四個指令。方便地,當發(fā)生高速緩存選中時HIT被置位,當所選指令集的有效計數(shù)變量等于零時,HIT被復位。
寄存器堆100的100_1部分由存儲字101和102組成。存儲字101存儲與第j個指令集關聯(lián)的三個變量ADDR(j,5)121_1,有效計數(shù)(j)121_2和有效頁(j)121_3。存儲字102存儲與第二個個指令集關聯(lián)的三個變量ADDR(j+1,4)122_1,有效計數(shù)(j+1)122_2和有效頁(j+1)122_3。
當以下所有條件滿足時HIT由控制單元56置位高速緩存檢查條件是否滿足,ADD(n)與標記存儲器50中存儲的其中一個地址匹配,和與所選指令級關聯(lián)的有效頁變量和有效計數(shù)變量顯示該集至少包括一個有效指令。
例如當ADD(j+1,1)=ADD(n),COF(n)被置位,有效頁(j+1)102_3被置位,并且有效計數(shù)(j+1)>0時,HIT被置位。當HIT被置位時,高速緩存器24通過總線27、第三多路復用器34和總線25,從高速緩存存儲器90的95_1部分向CPU 22提供INST(j+1,1)111。高速緩存器24向指令存儲模塊26提供ADDR(j+1,4)102_1,以便至少將編碼指令C_INST(j+1,4)的第一部分提供給解碼器28,允許在高速緩存器24向CPU 22提供INST(j+1,1)至INST(j+1,3)的同時開始對INST(j+1,5)進行解碼。ADD(j+1,2)通過總線29和21及第二多路復用器32提供給CPU22。優(yōu)選地,解碼器28在時鐘周期內向CPU 22提供INST(j+1,4),所述時鐘周期跟隨高速緩存器24向CPU 22提供INST(j+1,3)的時鐘周期之后。有效計數(shù)(j+1)開始等于3,并且只要向CPU 22提供了不在第(j+1)個指令集中的指令該值就減少。
圖5中的高速緩存器24具有額外的字段用于存儲第s個指令集INST(s,1)-INST(s,4)121-124和變量ADD(s,5)103_1,有效計數(shù)(s)103_2和有效頁(s)103_3。第s個指令集以跟隨在分支指令INST(s,0)后的指令INST(s,1)開始,便于當與INST(s,1)相關的分支預測錯誤時,由高速緩存器24向CPU 22提供指令INST(s,1)-INST(s,4),同時INST(s,5)和跟隨其后的指令被解碼,以便它們能夠在高速緩存器24提供INST(s,4)之后由解碼器28提供給CPU 22。
根據本發(fā)明的另一個優(yōu)選實施例,高速緩存器24還存儲以預定分支目標指令開始的指令集。
當高速緩存器檢查條件滿足但是發(fā)生了高速緩存不選中時,指令集被寫入高速緩存器中。發(fā)生這種情況時,組成指令集的分支目標指令和后面的指令在被解碼器28解碼后同時提供給高速緩存器24和CPU 22。向高速緩存器24中的寫過程可以由數(shù)據流的另一個變化終結。
方便地,每個指令都連同下一個指令的地址提供給高速緩存器24。例如,如果INST(j,1)導致高速緩存的不選中,則INST(j,1)至INST(j,4)以及地址ADD(j,2)至ADD(j,5)由解碼器28在跟隨高速緩存不選中后的時鐘周期期問提供給高速緩存器24。
根據本發(fā)明的另一個實施例,當解碼器51檢測到分支指令時,指令集寫入高速緩存器24,以便若分支預測錯誤時高速緩存器24能夠提供跟在分支指令后的已解碼的指令集。當解碼器28檢測到其解碼分支指令時,它通過總線51向控制單元56提供控制信號,這使得在分支指令之后被解碼的指令送往高速緩存器24。
通常,直到分支預測已確定或發(fā)現(xiàn)有錯前,會經過一些時鐘周期,這樣,在這些時鐘周期內已解碼的指令連同多個跟隨其后的指令地址寫入高速緩存器24中。新指令集的位置可以根據公知方法確定。普通的方法是將高速緩存器24當作先入先出隊列進行處理。
根據本發(fā)明的另一個實施例,當發(fā)生分支指令指到預定分支目標指令時,指令被寫入高速緩存器24。例如,當解碼器28檢測到其解碼一個與分支到連續(xù)指令的Isync指令時,它通過總線51發(fā)送控制信號引起高速緩存器24存儲多個已解碼指令。
圖6為簡化時序圖,示出根據本發(fā)明的優(yōu)選實施例由高速緩存器24提供指令的情況。圖6示出在八個時鐘周期內,從T1到T6出現(xiàn)在總線21,27,29,37和35上的信號。在T1處CPU 22置位COF并在總線21上提供ADD(j,1)。TAG(j)52發(fā)送信號給控制單元56顯示發(fā)生匹配??刂茊卧?6通過總線61訪問寄存器堆90并讀出存儲字100_1。有效頁(j)101_3顯示指令集(j)有效,有效計數(shù)(j)101_2為4。控制單元確定發(fā)生了高速緩存選中,置位HIT并將其提供給總線37??刂茊卧?6通過總線27、第三多路復用器34和總線25向CPU22提供INST(j,1),并將有效計數(shù)(j)101_2置為三。在下面的三個時鐘周期,開始于T2,T3,和T4處,高速緩存器24向CPU 22提供INST(j,2)、INST(j,3)和INST(j,4)。在所有四個指令INST(j,1)-INST(j,4)都提供給CPU 22后,控制單元56復位HIT。在T5和T6,解碼器在HIT置位時,將已解碼的指令INST(j,5)和INST(j,6)提供給CPU 22。
圖7為方法200的流程圖,用于向高速緩存器提供已解碼指令。優(yōu)選地,方法200包括步驟202,204,206,208,210,212,214,216和218,所有步驟都用方框闡述。實線302,303,304,306,308,310,312,318和320分別與步驟202和204,步驟204和206,步驟204和212,步驟206和214和216,步驟206、208和210,步驟208、210和218,步驟212、214、216和204,步驟218和204,步驟218、208和210相連。這些通路示出優(yōu)選方法流程。
方法以初始化高速緩存器24的步驟202開始。通常當高速緩存器24被初始化示,它不存儲有效指令,因此有效頁、有效計數(shù)和ADDR變量全都置為復位。步驟204在步驟202之后等待請求取指令ADDR(n)并檢查是否滿足高速緩存檢查條件。
步驟204期間高速緩存器24監(jiān)測(snarf)地址總線21并控制總線例如111,49和51。方便地,當數(shù)據流發(fā)生改變時,高速緩存檢查條件滿足。可選地,當預測指令,如Isyn被解碼器解碼時,高速緩存檢查條件滿足。在這種情況下,從解碼器28經過總線51提供的控制信號顯示這個預測指令已被解碼。
如果高速緩存檢查條件不滿足,步驟204后執(zhí)行步驟212,從解碼器28提供已解碼指令。步驟212后面執(zhí)行步驟204。
如果高速緩存檢查條件滿足,步驟204后執(zhí)行步驟206,檢查是否發(fā)生高速緩存選中。如果回答為“是”,步驟206后面執(zhí)行步驟208、210和218,其中高速緩存器24提供至少一部分已解碼指令集,同時提供給解碼器28已編碼部分的指令并解碼已編碼指令,所述指令跟隨在所述指令集之后。步驟208從高速緩存器提供已解碼指令并更新變量設置和“n”,步驟210取至少一部分指令給解碼器28并將所述指令解碼,跟著執(zhí)行步驟218,以保證在直至以下事件中的最早事件發(fā)生之時重復執(zhí)行步驟210和208(a)全部指令集已經由高速緩存器24提供;(b)新的高速緩存檢查條件已滿足。
如果回答為“否”,步驟206后執(zhí)行步驟214和216,由解碼器28向CPU 22和高速緩存器24提供已解碼指令。指令被寫入高速緩存器24中,直至全部指令都寫入高速緩存器24為止。
應當注意在本文中所使用得特定術語和表示,以及詳細描述和所附附圖中所公開的特定結構和操作細節(jié)僅為示例目的,而不對所附權利要求中描述的本發(fā)明范圍產生任何限制。
因此,在此已描述了實施例,其中包括至少一個裝置的優(yōu)選實施例,所述裝置具有用于向信息接收者及其裝置提供解密詳細的高速緩存器。明顯地,對本領域技術人員來說所公開的主題可以有多種方式的修改,并且除上文所專門描述和介紹的優(yōu)選實施形式以外,還可以采取許多實施方式。
因此,上述公開主題應認為是示例性而非限制性的,并應在法律允許下有最大擴展,應當認為所附權利要求覆蓋所有這樣的修改和其他落入本發(fā)明本質精神和范圍內的其它實施方法。本發(fā)明范圍應當由以下權利要求允許的最寬解釋及它們的等同替換而非上述詳細描述所確定。
權利要求
1.一種用于提供解碼信息的裝置,所述裝置包括用于存儲編碼信息的存儲模塊;與存儲模塊相連的解碼器,用于取指令和對解碼信息進行解碼,且提供已解碼信息;和與存儲模塊、解碼器和已解碼信息接收者相連的高速緩存器,所述高速緩存器適用于存儲至少一個已解碼信息集,所述信息在高速緩存檢查條件滿足并發(fā)生高速緩存選中時提供給信息接收者。
2.根據權利要求1的裝置,其中所述信息是由所述信息接收者執(zhí)行的指令。
3.根據權利要求2的裝置,其中所述指令以已解碼形式存儲在高速緩存器中,并以編碼形式存儲在存儲模塊中,并且所述信息接收者是適于執(zhí)行已解碼指令的處理器。
4.根據權利要求1的裝置,其中當數(shù)據流發(fā)生改變時所述高速緩存檢查條件滿足。
5.根據權利要求4的裝置,其中當所述解碼器對預定指令組之外的指令解碼時,所述高速緩存檢查條件也滿足。
6.根據權利要求5的裝置,其中所述指令組包括具有預定分支目標地址的分支指令。
7.根據權利要求1的裝置,其中分支預測錯誤時所述高速緩存檢查條件滿足。
8.根據權利要求1的裝置,其中所述信息集最大長度設計為在所述高速緩存器提供信息集之后所述解碼器立即提供解密的信息。
9.根據權利要求1的裝置,其中所述信息集最大長度設計為在所述高速緩存器提供信息集之后所述解碼器通常立即提供解密的信息。
10.根據權利要求1的裝置,其中所述裝置具備用于補償解碼信息長度不同的地址轉換機制。
11.根據權利要求10的裝置,所述地址轉換機制適用于為所述存儲模塊提供至少一個存儲字位置,所述存儲模字至少存儲要被所述解碼器解碼的信息的第一部分。
12.根據權利要求1的裝置,其中所述高速緩存器為全互聯(lián)。
13.根據權利要求1的裝置,其中所述高速緩存器包括標記存儲器;寄存器堆,用于存儲定義至少一個解密信息集的狀態(tài)的變量;高速緩存器存儲器,用于存儲至少一個解密信息集;和與所述標記存儲器、寄存器堆和高速緩存器存儲器相連的控制單元,用于控制向所述高速緩存器存儲提供信息以及從所述高速緩存器接收信息。
14.根據權利要求13的裝置,其中所述每個高速緩存器存儲器中的信息都帶有下一個信息的地址。
15.根據權利要求14的裝置,其中所述標記存儲器存儲多個解碼指令,每個解碼指令是存儲在所述高速緩存器存儲器中的已解碼指令集以外的第一個指令。
16.一種提供解碼信息的方法,所述方法包含步驟初始化高速緩存器;接收向信息接收者提供信息的請求并檢查高速緩存條件是否滿足;(a)從解碼器中提供給所述信息接收者已解碼信息,并跳轉到檢查高速緩存條件是否滿足、回答是否為“否”的步驟;(b)檢查是否發(fā)生高速緩存選中或不選中,回答是否為“是”;(1)更新高速緩存器,直至將以導致所述高速緩存器不選中的指令開始的全部指令集被存儲在高速緩存器中,如果發(fā)生高速緩存器不選中,從所述解碼器將已解碼信息提供給信息接收者;和跳轉到檢查是否發(fā)生高速緩存器不選中的步驟;(2)將來自高速緩存器的已解碼信息提供給信息接收者;向解碼器提供跟隨在存儲于高速緩存器中的已解碼信息的編碼信息;將所述編碼信息解碼;重復步驟(2),直至提供了全部指令集,所述全部指令集以引起高速緩存器選中的指令開始,或新的高速緩存器檢查條件滿足;跳轉至檢查高速緩存器是否發(fā)生選中的步驟;
17.根據權利要求16的方法,其中所述信息是將要被所述信息接收者執(zhí)行的指令。
18.根據權利要求17的方法,其中,所述指令以已解碼形式存儲在所述高速緩存器中,并以編碼形式存儲在與所述高速緩存器和所述解碼器相連的存儲模塊中;和其中,所述信息接收者是適于執(zhí)行已解碼指令的處理器;
19.根據權利要求16的方法,其中在數(shù)據流發(fā)生改變時所述高速緩存器檢查條件滿足。
20.根據權利要求19的方法,其中當在預定指令組之外的指令被所述解碼器解碼時,所述高速緩存器檢查條件也滿足。
21.根據權利要求20的方法,其中所述指令組包括具有預定分支目標地址的分支指令。
22.根據權利要求16的方法,其中當分支預測錯誤時,所述高速緩存器檢查條件滿足。
23.根據權利要求16的方法,其中所述信息集的最大長度設計成在所述高速緩存器提供所述信息集之后,所述解碼器立即提供已解密信息。
24.根據權利要求16的方法,其中所述信息集的最大長度設計成在所述高速緩存器提供所述信息集之后,所述解碼器通常立即提供已解密信息。
25.根據權利要求16的方法,其中所述步驟(b)包括用于補償解密信息長度不同的轉換地址。
全文摘要
一種用于提供解碼信息的裝置和方法,所述裝置包括用于存儲已編碼信息的存儲模塊;與存儲模塊相連的解碼器,用于取指令并將已解碼信息解碼,且用于提供已解碼信息;和與存儲模塊、解碼器和已解碼信息接收者相連的高速緩存器,所述高速緩存器適用于存儲至少一個以解碼信息集,所述信息集將在高速緩存器檢查條件滿足和發(fā)生高速緩存器選中后被提供給信息接收者。當數(shù)據流發(fā)生改變時高速緩存器檢查條件滿足。
文檔編號G06F21/24GK1430746SQ01810059
公開日2003年7月16日 申請日期2001年6月29日 優(yōu)先權日2000年6月29日
發(fā)明者亞歷山大·米列茨基, 維塔利·蘇科尼克, 阿米特·多爾 申請人:摩托羅拉公司