欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

基于跟蹤的指令高速緩沖存儲的制作方法

文檔序號:6419614閱讀:185來源:國知局
專利名稱:基于跟蹤的指令高速緩沖存儲的制作方法
1.發(fā)明領(lǐng)域本發(fā)明涉及計算機系統(tǒng)領(lǐng)域。更具體地說,本發(fā)明涉及指令高速緩存技術(shù)。
2.發(fā)明背景以前,高速緩存的指令是按照其空間關(guān)系被存儲和組織在一個指令高速緩沖存儲器中。典型地,每行高速緩存儲存的是在主存儲器中空間上彼此相鄰的指令。這種空間高速緩存指令的方法至少有一個缺點不論一個程序的執(zhí)行從一行高速緩存的中間轉(zhuǎn)移出來還是程序的執(zhí)行轉(zhuǎn)移到一行高速緩存的中,通常都需要訪問多行高速緩存。
在美國專利No.5,381,533中,波萊格(Peleg)和維瑟(weiser)揭示了另一組織高速緩存指令的方法以克服空間存儲方式中的上述的缺點以及其它一些缺點。按照波萊格和維瑟的方法,高速緩存指令按照預(yù)定的執(zhí)行順序被存儲和組織起來。那些預(yù)定要按序執(zhí)行的指令的基本塊被組織成跟蹤段并存儲在高速緩存行中,每個高速緩存行有一個跟蹤段。如果位于前驅(qū)基本塊末尾的分支指令被指示已占據(jù)的話,則存儲于高速緩存行中用以形成跟蹤段的相應(yīng)的后繼基本塊就是分支目標(biāo)基本塊;否則,后繼基本塊就是被跳過的基本塊。在高速緩存行內(nèi)的后繼基本塊,借助第一個基本塊的第一條指令的方式,按照定位到第一條指令,順序被檢索。
由于波萊格和維瑟的方法不支持跟蹤段跨越多條高速緩存行,所以為定位下一高速緩存行,地址匹配每次只能在存儲于某高速緩存行中的指令執(zhí)行后才能進行。結(jié)果,波萊格和維瑟的方法至少存在這樣一個缺點在一段時間內(nèi),它能提供給處理器執(zhí)行單元的指令數(shù)是有限的。這種限制對具有非常高的指令執(zhí)行速率的現(xiàn)代處理器來說,是特別不希望看到的。
麥爾文(Melvin)等人在一篇題為“在動態(tài)預(yù)定機中的大原子單元的硬件支持,微程序和微結(jié)構(gòu)第21屆年度專題研討會年報”一文中(1998年11月30日-12月2日,圣迭哥,加里佛尼亞),建議按執(zhí)行原子單元來儲存和組織高速緩存指令。每一個高速緩存入口(假定是一高速緩存行)是由一個執(zhí)行原子單元組成。一個執(zhí)行原子單元是一個最小的微操作碼組,處理器可視其為不可分單元來分發(fā)。微操作碼是由處理器使用的微指令用以實現(xiàn)宏指令。文章還建議用一個填充單元來構(gòu)造執(zhí)行原子單元。填充單元用來接收來自預(yù)取緩沖器和微操作碼發(fā)生器的微操作碼。至少在下述兩個條件下執(zhí)行原子單元的構(gòu)造才可終止第一個是當(dāng)檢測出流控制發(fā)生變化時,第二個是當(dāng)填充單元中不再有足夠的空的微操作碼存儲槽來供下一個宏指令使用時。
麥爾文的方法受到若干缺陷的困擾,至少包括以下缺點每一個原子執(zhí)行單元基本上只允許占據(jù)一個基本塊;而且必須高速緩存一個宏指令的所有被譯碼的微操作碼。如果當(dāng)宏指令組中包括一些譯碼后變成大量微操作碼的復(fù)雜的宏指令時,則所述后一個缺點是特別不希望看到的情況。
于是,人們希望有一種新方法來儲存和組織高速緩存指令,包括譯碼后的微操作碼,這種方法應(yīng)具有波萊格等人和麥爾文等人(的方法)的優(yōu)點,但又沒有他們的缺點。
發(fā)明概要一個高速緩存由一個數(shù)據(jù)陣列和控制邏輯組成。數(shù)據(jù)陣列包括許多數(shù)據(jù)線,而控制邏輯則把許多指令的跟蹤段儲存在數(shù)據(jù)線中,其中也包括那些跨越多條數(shù)據(jù)線的跟蹤段。
在一個具體實施例中,每個跟蹤段包括一個或多個具有一條或多條基本指令塊的跟蹤段成員,每一個跟蹤段成員占據(jù)一條數(shù)據(jù)線,多線跟蹤段的數(shù)據(jù)線被有序地組合起來(按邏輯組合)。多線跟蹤段的跟蹤段成員的檢索是這樣完成的先定位存有這個跟蹤段的第一跟蹤段成員的數(shù)據(jù)線,然后根據(jù)數(shù)據(jù)線的邏輯后繼關(guān)聯(lián)定位存有其余跟蹤段成員的其余的數(shù)據(jù)線。在一個具體實施例中,這些指令是宏指令的微操作碼。
在一個具體實施例中,為使每一條數(shù)據(jù)線存儲一個跟蹤段的第一跟蹤段成員需要保留一個存儲單元地址。存有一個跟蹤段的第一跟蹤段成員的數(shù)據(jù)線是通過與保留的定位地址和存取地址相匹配的地址來定位的。在一個具體實施例中,地址匹配是用地址位的子集來進行的,而且匹配的數(shù)據(jù)線要被驗證是否真的含有被搜尋的第一跟蹤段成員。在一個S集N路的具體實施例中,跟蹤段成員的存儲還需用一個標(biāo)準(zhǔn)來進一步驗證,此標(biāo)準(zhǔn)保證所保留的與某數(shù)據(jù)線集的各路有關(guān)的,匹配定位地址子集的地址,如果有,是唯一的。
在一個具體實施例中,在適當(dāng)?shù)牡胤剑瑢⒈A粼谶壿嫹绞街许樞蚪Y(jié)合某跟蹤段的每條數(shù)據(jù)線及其前驅(qū)和后繼數(shù)據(jù)線的至少部分控制信息。某個多線跟蹤段的后繼數(shù)據(jù)線至少部分依靠這些保留的局部順序聯(lián)合的控制信息來定位。在一個S集N路的具體實施例中,在適當(dāng)?shù)臅r候,為某個跟蹤段的每一條數(shù)據(jù)線都保留了指引其進入前驅(qū)數(shù)據(jù)線集的一條通路的道路索引,及指引其進入后繼數(shù)據(jù)線集的一條通路的道路索引。此外,還保留了多線跟蹤段的后繼數(shù)據(jù)線之間的預(yù)定集關(guān)系。
在一個具體實施例中,運用了大量數(shù)據(jù)線終止條件來終止一條數(shù)據(jù)線中的跟蹤段指令的高速緩沖存儲,同時繼續(xù)高速緩沖存儲另一條數(shù)據(jù)線中的跟蹤段指令。在一個具體實施例中,也運用了大量跟蹤段終止條件來終止作為一個跟蹤段的指令的高速緩沖存儲,同時繼續(xù)把指令作為一個新跟蹤段來高速緩沖存儲。
在一個具體實施例中,控制邏輯包括兩個狀態(tài)機使高速緩沖存儲器運行于執(zhí)行模式和跟蹤段建立模式。每一種模式都包括許多操作狀態(tài)。在跟蹤段建立模式下建立跟蹤段,隨后在執(zhí)行模式下定位和檢索其的成員。
附圖的簡要描述本發(fā)明將以示范具體實施例的方式(但不是限制),結(jié)合附圖加以描述,圖中相同的標(biāo)號表示相似的元素或部件,其中

圖1是一方框圖,示出了根據(jù)本發(fā)明的一個具體實施例的一個高速緩沖存儲器的構(gòu)成和運行;圖2是一方框圖,示出了根據(jù)一個具體實施例,高速緩存的指令被組織在數(shù)據(jù)陣列中的方式;圖3-5示出了根據(jù)一個具體實施例的標(biāo)簽條目、數(shù)據(jù)線和微操作碼的具體內(nèi)容;圖6-7是兩個狀態(tài)圖,示出了根據(jù)一個具體實施例的控制邏輯使高速緩沖存儲器運行的方法;圖8-9是一流水線圖示,示出了根據(jù)一個具體實施例的高速緩存進行讀操作的方法;圖10-11是一流水線圖示,示出了根據(jù)一個具體實施例的用微碼定序器進行協(xié)調(diào)的方法;圖12是一流水線圖示,示出了根據(jù)一個具體實施例的用下一指令指針(IP)發(fā)生電路進行協(xié)調(diào)的方法;圖13是一流水線圖示,示出了根據(jù)一個具體實施例的取微操作的方法;圖14是一流水線圖示,示出了根據(jù)一個具體實施例的高速緩存寫操作運作的方法;圖15是一方框圖,根據(jù)一個具體實施例,示出了當(dāng)一個跟蹤段被寫爆時,如何進行尾部維護;以及圖16是一方框圖,示出了根據(jù)一個具體實施例的適于本發(fā)明工作的計算機系統(tǒng)。
發(fā)明的詳細描述以下將描述本發(fā)明的各個方面。然而,對那些擅長此項技術(shù)的人來說,很明顯,本發(fā)明可以只取其某些方面或取其所有方面來使用。為了說明起見,列出了具體數(shù)字、材料和配置,以求對本發(fā)明的徹底理解。但是,對于本領(lǐng)域的技術(shù)人員來說,同樣明顯的是,本發(fā)明也可以在沒有具體細節(jié)的情況下被使用。在其他實例中,一些眾所周知的特征被省略或簡化了,為的是不使本發(fā)明模糊不清。
現(xiàn)在,參看圖1所示的方框圖,它示出了本發(fā)明的高速緩沖存儲器的一個具體實施例。如圖所示本發(fā)明的高速緩沖存儲器10由數(shù)據(jù)陣列14和控制邏輯26組成,如圖示,它們彼此耦合。對該所示的具體實施例來說,高速緩沖存儲器10還進一步包括標(biāo)簽了陣列12,直接抽取器18,以及填充緩沖器20,它們?nèi)鐖D所示相互耦合并與上面列舉的元素耦合。
象傳統(tǒng)的高速緩沖存儲器一樣,數(shù)據(jù)陣列14由許多數(shù)據(jù)線組成,而標(biāo)簽陣列12則由許多對應(yīng)于數(shù)據(jù)線的標(biāo)簽條目組成。標(biāo)簽條目和對應(yīng)的數(shù)據(jù)線一起形成高速緩沖存儲器10的高速緩存行。但是,與傳統(tǒng)的高速緩沖存儲器不同的是,控制邏輯26控制高速緩沖存儲器10來高速緩沖存儲數(shù)據(jù)陣列14中的指令,并通過跟蹤段,如28,其中也包括那些跨越多條數(shù)據(jù)線的跟蹤段來組織高速緩存的指令。每一個跟蹤段包含一個或多個跟蹤段成員,它們分屬于一個或多個指令的基本塊;每一個跟蹤段成員占據(jù)一條數(shù)據(jù)線,而且多線跟蹤段的各數(shù)據(jù)線被有序地組合(邏輯地組合)起來。多線跟蹤段的跟蹤段成員的檢索是通過先定位存有該多線跟蹤段的第一跟蹤段成員的數(shù)據(jù)線,然后再根據(jù)數(shù)據(jù)線的邏輯序列組合(下面將進行更全面的描述)相繼找到存有其余跟蹤段成員的其余的數(shù)據(jù)線來完成的。在一個具體實施例中,這些指令被譯碼成宏指令的微操作碼。
本領(lǐng)域的普通技術(shù)人員也會意識到通過跟蹤高速緩存指令或譯碼后的微操作碼這種方式,使得一個跟蹤段能跨越多條數(shù)據(jù)線,這樣,可以供給處理器的執(zhí)行單元的指令數(shù)將大于以前的技術(shù)方法所能承受的速率。而且,由于有了允許多數(shù)據(jù)線跟蹤高速緩沖存儲的優(yōu)點,能夠自動展開的程序循環(huán)長度將會更長,有效地免除了需要一個編輯器來進行循環(huán)展開優(yōu)化以最大限度的開發(fā)處理器的性能。結(jié)果,程序產(chǎn)生的代碼將更緊湊,從而又導(dǎo)致存儲空間和取指時間的節(jié)省。
圖2進一步詳細地示出了本發(fā)明的跟蹤段28,其在一個典型的4路256集數(shù)據(jù)陣列14的具體實施例的環(huán)境中,數(shù)據(jù)陣列14存有被譯碼的宏指令的微操作碼的指令。根據(jù)下面的描述,本領(lǐng)域的普通技術(shù)人員會意識到其它集的長度組合的高速緩存以及其它非集組合的組織結(jié)構(gòu)也可以用來實施本發(fā)明。而且,這些指令可以是任何一種指令。近而,為了便于說明,把一個跟蹤段的第一跟蹤成員稱為跟蹤段頭;把跟蹤段的最后一個跟蹤段成員稱為跟蹤段尾;而把中間跟蹤段成員稱為跟蹤段體。在一個只有兩個跟蹤段成員的簡化情況下,第二個跟蹤段成員既是跟蹤段體,也是跟蹤段尾;在只有一個跟蹤段成員的情況下,這個唯一的跟蹤段成員同時既是跟蹤段頭,也是跟蹤段體,還是跟蹤段尾。
對這個被示出的具體實施例來說,對于存有一個跟蹤段的第一跟蹤段成員的數(shù)據(jù)線來說,將保留一個定位地址。存有跟蹤段的第一跟蹤段成員的數(shù)據(jù)線將通過與保留的定位地址和訪問地址相匹配地址來定位的。而且,地址匹配是用一個地址位的子集來實現(xiàn)的。匹配數(shù)據(jù)線還要被驗證是否該數(shù)據(jù)線真的含有被搜尋的第一跟蹤段成員。此外,跟蹤段成員的存儲還需用一個標(biāo)準(zhǔn)來進一步驗證,此標(biāo)準(zhǔn)保證所保留的與某數(shù)據(jù)線集的各路有關(guān)的,匹配定位地址子集的地址,如果有,是唯一的。
在一個替代的具體實施例中,其它的跟蹤段成員也與存儲器地址有關(guān)。在另一個替代的具體實施例中,地址匹配使用所有地址位來實現(xiàn)。
對該所示具體實施例來說,保留了有序地聯(lián)合每一條存有跟蹤段體或尾的數(shù)據(jù)線與其邏輯方式下前驅(qū)數(shù)據(jù)線的部分控制信息,同樣,也保留了有序地聯(lián)合存有跟蹤段頭或體的數(shù)據(jù)線與其邏輯方式下后繼數(shù)據(jù)線的部分控制信息。多線跟蹤段的后繼數(shù)據(jù)線部分地依賴于被保留的部分有序聯(lián)系控制信息來定位。更具體地說,對每一條存有跟蹤段體或尾的數(shù)據(jù)線來說,都保留了一個引導(dǎo)進入前驅(qū)數(shù)據(jù)線集的通路的道路索引;而對每一條存有跟蹤段頭或體的數(shù)據(jù)線來說,都保留了一個引導(dǎo)進入后繼數(shù)據(jù)線集的通路的道路索引。此外,還保留了多線跟蹤段的后繼數(shù)據(jù)線之間的預(yù)定集關(guān)系。
對該所示具體實施例來說,用若干數(shù)據(jù)線終止條件來終止高速緩沖存儲一條數(shù)據(jù)線中的跟蹤段的指令,并繼續(xù)高速緩沖儲存另一條數(shù)據(jù)線中的跟蹤段的指令。而且,還用若干跟蹤段終止條件來終止高速緩沖儲存作為一個跟蹤段的指令,并繼續(xù)高速緩沖儲存作為一個新的跟蹤段的指令。
對該所示具體實施例來說,數(shù)據(jù)線終止條件包括遇到譯碼后變成“大量”微操作碼的“復(fù)雜的”宏指令。只有所遇到的復(fù)雜宏指令的預(yù)定數(shù)量的微操作碼被存于當(dāng)前數(shù)據(jù)線中,下一個宏指令的微操作碼將被高速緩沖存儲在一條新數(shù)據(jù)線中。構(gòu)成“復(fù)雜”宏指令的構(gòu)成取決于應(yīng)用情況。本領(lǐng)域的普通技術(shù)人員會明白,本發(fā)明可以用被高速緩沖存儲的宏指令的非譯碼的或全譯碼的微操作碼來實現(xiàn)。
對該所示具體實施例來說,數(shù)據(jù)線終止條件還包括在每個跟蹤段允許的分支微操作碼的最大預(yù)定界限達到后又遇到一個分支微操作碼情況。該分支微操作碼將被高速緩沖存儲在一條新數(shù)據(jù)線中。在一個具體實施例中,這個預(yù)定界限是2。然而,本領(lǐng)域的普通技術(shù)人員會明白本發(fā)明可以用、也可以不用每個跟蹤段所允許的分支指令或分支微操作碼的最大界限來實現(xiàn);如果用了,這個界限可以小于或大于2。
對該所示具體實施例來說,數(shù)據(jù)線終止條件還包括對一個“新的”宏指令的所有微操作碼沒有足夠空間的情況。這個“新的”宏指令的微操作碼將被高速緩存在一條替代的新數(shù)據(jù)線中。換而言之,在該所示具體實施例中,一條宏指令的所有微操作碼被高速緩存于同一條數(shù)據(jù)線中。然而,本領(lǐng)域的普通技術(shù)人員會明白本發(fā)明可以由高速緩存在多于一條數(shù)據(jù)線內(nèi)的一條宏指令的微操作碼來實現(xiàn)。
對該所示具體實施例來說,數(shù)據(jù)線終止條件還包括填充緩沖器20滿了的情況。然而,本領(lǐng)域的普通技術(shù)人員會明白本發(fā)明可以用可從填充緩沖器取出的多個填充的數(shù)據(jù)線來實現(xiàn)。
對改所示具體實施例來說,跟蹤段終止條件包括遇到一條間接分支宏指令,或一個調(diào)用,或一個返回的情況。但是,本領(lǐng)域的普通技術(shù)人員會明白用一個附加跟蹤,本發(fā)明可以在每個跟蹤段具有一個以上間接分支宏指令、一個調(diào)用、和/或一個調(diào)用返回情況下實現(xiàn)。
對該所示具體實施例來說,跟蹤段終止條件還包括遇到一個轉(zhuǎn)移條件預(yù)測失效通告,以及一個中斷/異常的情況。
對該所示具體實施例來說,跟蹤段終止條件還包括遇到含有大量微操作碼的“長運行”跟蹤段,其微操作碼數(shù)超過了預(yù)定的所允許的跟蹤段最大長度即每個跟蹤段的微操作碼數(shù)。在一個具體實施例中,預(yù)定的最大值是64集。但是,正如本領(lǐng)域的普通技術(shù)人員將會明白的那樣,本發(fā)明可以有,也可以沒有預(yù)定的最大值;如果用了最大值,則這個最大值可以小于或大于64集。
圖3進一步詳細示出了,根據(jù)本發(fā)明的標(biāo)簽陣列12中的一個標(biāo)簽條的具體實施例。對該所示具體實施例來說,標(biāo)簽條30含有位36(頭)和位38(尾),為的是表明這條相應(yīng)的數(shù)據(jù)線是否是一個跟蹤段頭和/或一個跟蹤段尾。如果以上兩位都未設(shè)置,那么,相應(yīng)的數(shù)據(jù)線為跟蹤段體。如果以上兩位都被設(shè)置,則相應(yīng)的數(shù)據(jù)線既是跟蹤段體,也是跟蹤段頭和尾,即以前描述過的“單成員”的退化情況。對該所示具體實施例來說,標(biāo)簽條30還含有位34(LA),在相應(yīng)的數(shù)據(jù)線是一個跟蹤段頭時,它用來儲存一個線性地址;還含有位32(有效),用來表示位34是否有效。
對該所示具體實施例來說,標(biāo)簽條30還含有位40(下一路)和位42(前一路),以便對直接后繼跟蹤段成員進行有序檢索。更具體地說,位40和42規(guī)定了后繼數(shù)據(jù)線和前驅(qū)數(shù)據(jù)線的“路”存儲單元。對該所示具體實施例來說,檢簽條30不包括任何表示對后繼數(shù)據(jù)線和前驅(qū)數(shù)據(jù)線進行集識別的位。對該所示具體實施例來說,后繼數(shù)據(jù)線和前驅(qū)數(shù)據(jù)線的集識別總是分別為x+1模S和x-1模S,這里,x是當(dāng)前數(shù)據(jù)線的集識別,而S是數(shù)據(jù)陣列14的集數(shù)。在另一個具體實施例中,可能用一些附加位來規(guī)定后繼和前驅(qū)數(shù)據(jù)線的集識別;換而言之,后繼和前驅(qū)數(shù)據(jù)線可以定位于任何集中。
對該所示具體實施例來說,標(biāo)簽條30還含有位48(UIP),位50(NLIP),和位56(UIP有效MS PTR),用來識別下一個微操作碼指令指針(UIP),下一個宏指令線性指令指針(NLIP)和UIP是否有效(MS PTR)。UIP也被用作當(dāng)遇到復(fù)雜宏指令的微操作碼時進入只讀存儲器(ROM)的入口指令指針,當(dāng)設(shè)置此位時,UIP有效地意味著這一事實高速緩沖儲存在相應(yīng)數(shù)據(jù)線中的指令由于遇到了一個復(fù)雜宏指令而被終止了。在一個具體實施例中,NLIP只為一個跟蹤段尾而被保留。在另一個具體實施例中,NLIP為一個跟蹤段的頭、體、尾而被保留。保留含有各個跟蹤段成員的NLIP具有下述優(yōu)點當(dāng)訪問這些跟蹤段成員時如果需要它時,例如剩余的跟蹤段寫爆了,不用實時計算它(下面將會更全面的說明)。
每個標(biāo)簽條在相應(yīng)的數(shù)據(jù)線放在一起時被建立起來。更具體地說,對在圖1中示出的高速緩沖存儲器10的具體實施例來說,在相應(yīng)數(shù)據(jù)線被建立的同時,填充緩沖器20中的各標(biāo)簽條也被建立了。下面,將更詳細地描述各標(biāo)簽條建立的方法和這些域的用法。
圖4和圖5進一步詳細地示出數(shù)據(jù)陣14中的一條數(shù)據(jù)線的一個具體實施例。如所示,對所示的具體實施例來說,每一條數(shù)據(jù)線52含有6個微操作碼(uOPs)54。每一個UOP 54又含有表示這個UOP是否有效的位58(UOP有效)和分別表示源寄存器、目的寄存器以及UOP碼的位70-76(sre0,sre1,dest,和UOP碼)。對所示的具體實施例來說,每一個UOP 54還含有表示宏指令的指令指針的delta(數(shù)值)增量的位60(delta IP);表示位60所表示的delta指令指針是否有效的位62(delta IP valid);如果UOP是一個分支微操作碼,則規(guī)定分支目標(biāo)地址的位64(Br Tgt);以及當(dāng)UOP是一個浮點運行時,表示浮點操作碼的位68(FOP code)。對所示的具體實施例來說,這些信息由一個宏指令譯碼器來提供。這些域的目的和用法在此項技術(shù)中是眾所周知的。因此不再對它們進行進一步描述。
應(yīng)當(dāng)注意的是,一些被描述為存儲在標(biāo)簽條30中的信息可以存儲在相應(yīng)的數(shù)據(jù)線52中;反過來也一樣。還應(yīng)當(dāng)注意的是,根據(jù)不同的設(shè)計考慮,每個域的具體位數(shù)可以選擇,這里規(guī)定的位數(shù)只是為了易于理解本發(fā)明。
現(xiàn)在,返回參看圖1,如先前描述的那樣,對所示的具體實施例來說,高速緩存10包括直接抽取器18和填充緩沖器20。在UOP 54從數(shù)據(jù)陣14中被讀出時,直接抽取器18用來為轉(zhuǎn)移地址計算電路計算分支地址而從UOP 54中抽取分支目標(biāo)線性指令指針(Br Tgt)64。此外,跟蹤段頭的1個線性指令指針(LA)34(存在對應(yīng)的標(biāo)簽條30中)也按規(guī)定程序發(fā)送到這個轉(zhuǎn)移地址計算電路去計算轉(zhuǎn)移地址。除頭LA 34外,NLIP 50被發(fā)送到下一個指令指針計算電路去計算下一個指令指針,其輸入包括轉(zhuǎn)移地址計算電路的輸出。微操作指令指針(UIP)48和Msptr 56分別發(fā)送到一個微碼定序器中來提取復(fù)雜宏指令的其余的微操作碼uOPs,及一個多路轉(zhuǎn)接器用于在數(shù)據(jù)陣14和微碼定序器輸出的uOPs之間進行選擇。
當(dāng)從存儲器到譯碼器、以及從譯碼器到填充緩沖器20的數(shù)據(jù)通道的數(shù)據(jù)寬度小于數(shù)據(jù)線大小時,填充緩沖器20在數(shù)據(jù)線發(fā)往標(biāo)簽陣12和數(shù)據(jù)陣14之前,用來按預(yù)測執(zhí)行方向組建數(shù)據(jù)線。對所示的具體實施例來說,填充緩沖器20包含多個緩沖器以便在同一時間建立多條數(shù)據(jù)線。填充緩沖器20收集地址、控制信息以及分別存儲進標(biāo)簽陣12的標(biāo)簽條中和相應(yīng)的數(shù)據(jù)陣14的數(shù)據(jù)線中的經(jīng)過譯碼的微操作碼uOPs。
控制邏輯26除了控制標(biāo)簽陣12和數(shù)據(jù)陣14外,還控制填充緩沖器20的操作。圖6和圖7示出控制邏輯26操作圖1所示高速緩沖存儲器的具體實施例的方式??刂七壿?6基本上按兩個互補模式中的一個來操作高速緩沖存儲器10,一個是圖6所示的執(zhí)行模式,一個是圖7中所示的跟蹤段建立模式。在一個具體實施例中,兩種互補模式相互排斥運行,而在另一個具體實施例中,由于具有用于共享資源的仲裁電路的保障,兩種互補模式可以同時運行。在一個具體實施例中,這兩種互補模式受兩個對應(yīng)的狀態(tài)機的控制,一個是執(zhí)行模式狀態(tài)機,另一個是跟蹤段建立模式狀態(tài)機。當(dāng)然,本發(fā)明可以用更多或更少的狀態(tài)機來實現(xiàn)。
執(zhí)行模式狀態(tài)機在7種狀態(tài)中的一種狀態(tài)下運行閑置狀態(tài)78,頭查找狀態(tài)80,體查找狀態(tài)82,尾狀態(tài)84,微碼定序器(MS)狀態(tài)86,體缺失狀態(tài)88和跟蹤建立狀態(tài)90。如圖所示,在復(fù)位或是執(zhí)行單元檢測到一個uOP轉(zhuǎn)移條件預(yù)測失效情況下,執(zhí)行模式狀態(tài)機從閑置狀態(tài)78開始。當(dāng)控制邏輯26收到宏轉(zhuǎn)移條件預(yù)測失效的執(zhí)行單元發(fā)來的通知,或者當(dāng)它本身檢測到取到了一個線性指令指針(LIP)或跟蹤段建立條件結(jié)束時,執(zhí)行模式狀態(tài)機便從閑置狀態(tài)78轉(zhuǎn)換到頭查找狀態(tài)80。
在頭查找狀態(tài)80,執(zhí)行模式狀態(tài)機引起了用與下一個指令指針I(yè)P對應(yīng)的地址查找一個跟蹤段頭的過程,下一個指令指針I(yè)P是由下一個IP計算電路根據(jù)為這些跟蹤段頭維護的存儲器地址來提供的。如果在現(xiàn)行查找完成之前,執(zhí)行單元檢測到一個宏轉(zhuǎn)移條件預(yù)測失效,那么執(zhí)行模式狀態(tài)機將會用一個“新的”下一個IP來重新啟動跟蹤段查找過程。如果頭查找過程進行完畢,那么這個過程將導(dǎo)致高速緩存命中或失效。
如果頭查找過程導(dǎo)致高速緩存命中,而且這個跟蹤段頭不同時是跟蹤段尾,而且這個跟蹤段頭數(shù)據(jù)線不是以一個復(fù)雜宏指令來結(jié)尾,那么執(zhí)行模式狀態(tài)機會讓這個跟蹤段頭的微操作碼被輸出到執(zhí)行單元,并且轉(zhuǎn)換到體查找狀態(tài)82。如果頭查找過程導(dǎo)致高速緩存命中,而跟蹤段頭又同時是跟蹤段尾,而且這個跟蹤段的頭/尾數(shù)據(jù)線不是以一個復(fù)雜宏指令結(jié)尾,那么執(zhí)行模式狀態(tài)機會讓這個跟蹤段頭/尾的微操作碼被輸出到執(zhí)行單元,并且將狀態(tài)機轉(zhuǎn)換到尾狀態(tài)84。如果頭查找過程導(dǎo)致高速緩存命中,而這條跟蹤段頭數(shù)據(jù)線以一個復(fù)雜宏指令結(jié)尾,那么執(zhí)行模式狀態(tài)機會讓這個跟蹤段頭的微操作碼被輸出到執(zhí)行單元,并且狀態(tài)機轉(zhuǎn)換到MS狀態(tài)86。如果查找過程導(dǎo)致高速緩存失效,則高速緩存10將狀態(tài)機轉(zhuǎn)換到跟蹤建立狀態(tài)90。
在體查找狀態(tài)82,執(zhí)行模式狀態(tài)機使下一個跟蹤段體被查找。對所示具體實施例來說,如先前所描述的那樣,下一個跟蹤段體位于路W中集x+1模S的數(shù)據(jù)線處,其中路W由當(dāng)前標(biāo)簽條的路位40檢索,這里x是現(xiàn)行集,S是數(shù)據(jù)陣列14的集數(shù),W是被檢索的路。在另一個具體實施例中,下一個跟蹤段體位于路W中的集Y(由集的標(biāo)識符位表示)的數(shù)據(jù)線處,路W由當(dāng)前標(biāo)簽條的下一個路位40檢索。一旦被查找到,執(zhí)行模式狀態(tài)機就使跟蹤段體的uOPs被輸出到執(zhí)行單元。執(zhí)行模式狀態(tài)機保持這一狀態(tài)并繼續(xù)使下一個跟蹤段體被查找、當(dāng)找到時使它們的uOPs被輸出。只要高速緩存命中,又沒有達到跟蹤段尾,且沒有遇到一條以復(fù)雜宏指令結(jié)尾的數(shù)據(jù)線,又沒有收到執(zhí)行單元之一的宏/微轉(zhuǎn)移條件預(yù)測失效的通知,上述過程就會繼續(xù)下去。對所示的具體實施例來說,一條經(jīng)過譯碼宏指令的微操作碼可能包括一個或多個轉(zhuǎn)移微操作碼。
當(dāng)處理體查找狀態(tài)82時,如果控制邏輯26被某個執(zhí)行單元告知檢測到一個宏轉(zhuǎn)移條件預(yù)測失效時,則執(zhí)行模式狀態(tài)機就會中止體查找過程,并轉(zhuǎn)回到頭查找狀態(tài)80。如果體查找過程導(dǎo)致高速緩存命中,而且這條數(shù)據(jù)線不是以一個復(fù)雜宏指令結(jié)尾,但是這條數(shù)據(jù)線是一個跟蹤段尾,那么執(zhí)行模式狀態(tài)機在這個跟蹤段尾的uOPs被輸出后轉(zhuǎn)換到尾狀態(tài)84。如果體查找過程導(dǎo)致高速緩存命中,而且這條數(shù)據(jù)線以一個復(fù)雜宏指令結(jié)尾,那么執(zhí)行模式狀態(tài)機在這條數(shù)據(jù)線的uOPs被輸出后,轉(zhuǎn)換到微碼定序器(MS)狀態(tài)86。如果體查找過程導(dǎo)致高速緩存失效,則執(zhí)行模式狀態(tài)機轉(zhuǎn)換到體“缺失”狀態(tài)88。
在尾狀態(tài)84,執(zhí)行模式狀態(tài)機無條件地返回頭查找狀態(tài)80。同樣,在體“缺失”狀態(tài)88,執(zhí)行模式狀態(tài)機也無條件的返回查找狀態(tài)80。對所示的具體實施例來說,由于替換數(shù)據(jù)線目標(biāo)是被選擇的(路徑預(yù)測,最近最少使用(LRU),及類似算法)這種方式,跟蹤段體可能被另一個跟蹤段寫爆,所以當(dāng)查找一個跟蹤段體時,有可能得到高速緩存失效的結(jié)果。
在MS狀態(tài)86,執(zhí)行模式狀態(tài)機允許微碼定序器輸出剩余的以復(fù)雜宏指令結(jié)尾的數(shù)據(jù)線的uOPs。只要執(zhí)行模式狀態(tài)機沒有收到某個執(zhí)行單元檢測到了一個宏/微轉(zhuǎn)移條件預(yù)測失效的通知,那么它就允許微碼定序器這樣下去直到所有剩余的uOPs被輸出完為止。如果執(zhí)行模式狀態(tài)機收到某個執(zhí)行單元檢測到一個宏/微轉(zhuǎn)移條件預(yù)測失效的通知,則它就中止這種允許。如果執(zhí)行模式狀態(tài)機收到檢測到一個宏轉(zhuǎn)移條件預(yù)測失效的通知,那么它就轉(zhuǎn)回到頭查找狀態(tài)80。如果執(zhí)行模式狀態(tài)機收到檢測到一個微轉(zhuǎn)移條件預(yù)測失效的通知,那么它就轉(zhuǎn)換回閑置狀態(tài)78。
然而,如果控制邏輯26收到微碼定序器已經(jīng)完成輸出剩余的以復(fù)雜宏指令結(jié)尾的數(shù)據(jù)線的uOPs的通知,則如果這條數(shù)據(jù)線不是一個跟蹤段尾的話,那么執(zhí)行模式狀態(tài)機就會轉(zhuǎn)換到體查找狀態(tài)82;如果這條數(shù)據(jù)線是一個跟蹤段尾,則轉(zhuǎn)換到尾狀態(tài)84。
在跟蹤建立狀態(tài)90,執(zhí)行模式狀態(tài)機在檢測到一個跟蹤段結(jié)束條件(由互補的跟蹤段建立模式狀態(tài)機指示)時,則無條件地轉(zhuǎn)換到閑置狀態(tài)78。[換句話說,執(zhí)行模式的跟蹤建立狀態(tài)90本質(zhì)上是一個等待狀態(tài)。]跟蹤段建立模式狀態(tài)機在以下7種狀態(tài)中的一種狀態(tài)下運行閑置狀態(tài)92,取請求狀態(tài)94,等待uOPs狀態(tài)96,旁路uOPs狀態(tài)98,填充緩沖器寫入陣列狀態(tài)100,MS和填充緩沖器寫入陣列狀態(tài)102以及頭查找狀態(tài)104。如圖所示,在復(fù)位或是執(zhí)行單元檢測到一個宏/微轉(zhuǎn)移條件預(yù)測失效情況下,跟蹤段建立狀態(tài)機從閑置狀態(tài)92開始。當(dāng)控制邏輯26檢測到需要發(fā)出一條取指令請求時,即對高速緩存10的訪問已導(dǎo)致高速緩存失效時,跟蹤段建立模式狀態(tài)機就從閑置狀態(tài)92轉(zhuǎn)換到取請求狀態(tài)94。
在取請求狀態(tài)94,跟蹤段建立模式狀態(tài)機讓一個取指令請求發(fā)到一個取指單元,而且它自已轉(zhuǎn)換到等待uOPs狀態(tài)96。在等待uOPs狀態(tài)96,跟蹤段建立模式狀態(tài)機保持此狀態(tài),直到有效的uOPs被提供給填充緩沖器20。此時,跟蹤段建立模式狀態(tài)機轉(zhuǎn)換到旁路uOPs狀態(tài)98。在旁路uOPs狀態(tài)98,跟蹤段建立模式狀態(tài)機將來自填充緩沖器20的有效的uOPs前遞到執(zhí)行單元,并繼續(xù)這樣做下去,直到遇到一個數(shù)據(jù)線終止條件。如果數(shù)據(jù)線終止條件是遇到一個復(fù)雜宏指令,那么跟蹤段建立模式狀態(tài)機就轉(zhuǎn)換到微碼定序器(MS)和填充緩沖器寫入標(biāo)簽和數(shù)據(jù)陣列狀態(tài)102。對其它的數(shù)據(jù)線終止條件,如果在填充緩沖器20中建立起來的旁路uOPs不可高速緩沖儲存,那么跟蹤段建立模式狀態(tài)機就返回等待uOPs狀態(tài)96,否則,跟蹤段建立模式狀態(tài)機就從旁路uOPs狀態(tài)98轉(zhuǎn)換到填充緩沖器寫入陣列狀態(tài)100。
在填充緩沖器寫入陣列狀態(tài)100,完成的數(shù)據(jù)線被發(fā)送到標(biāo)簽和數(shù)據(jù)陣列12和14中相應(yīng)的地址。在所示具體實施例中要檢索它的話,在數(shù)據(jù)陣列14中的地址是集x+1模S的各路中的一種的地址。在另一個具體實施例中要檢索它的話,在數(shù)據(jù)陣列14中的地址是一個索引集的各路中的一路的地址。在一個具體實施例中,路通過路預(yù)測來選擇。或者,可以使用LRU(最近最少使用)法。進一步說,當(dāng)與尋找跟蹤段頭的方法匹配的部分地址一起使用時,在保證與集x+1模S(或者一個索引集)的標(biāo)簽地址的子集相匹配的標(biāo)簽是唯一的條件下,LRU方法更為有效。換句話說,如果一個非LRU路具有一個與繼任的數(shù)據(jù)線的標(biāo)簽地址的子集匹配的對應(yīng)標(biāo)簽,其標(biāo)簽與繼任數(shù)據(jù)線的標(biāo)簽地址的子集相匹配的標(biāo)簽相同,那么就選擇非LRU路,而不選LRU路。
當(dāng)把數(shù)據(jù)線寫進標(biāo)簽和數(shù)據(jù)陣列12和14時,如果剛被寫進數(shù)據(jù)陣列14的數(shù)據(jù)線不是跟蹤段尾(即未遇到跟蹤結(jié)束條件),則跟蹤段建立模式狀態(tài)機轉(zhuǎn)換回等待uOPs狀態(tài)96。如果被寫的數(shù)據(jù)線是跟蹤段尾,如果下一個線性指令指針(NLIP)未知,則跟蹤段建立模式狀態(tài)機就轉(zhuǎn)換回閑置狀態(tài)92,否則,跟蹤段建立模式狀態(tài)機就轉(zhuǎn)換到頭查找狀態(tài)104。
在MS和填充緩沖器寫入標(biāo)簽和數(shù)據(jù)陣列狀態(tài)102,完成的數(shù)據(jù)線如先前對狀態(tài)100的描述那樣被寫進標(biāo)簽和數(shù)據(jù)陣12和14。但是,跟蹤段建立模式狀態(tài)機并不離開這個狀態(tài),直到它接到MS的信號說復(fù)雜宏指令的剩余的微操作碼已經(jīng)全部被輸出到執(zhí)行單元為止。當(dāng)MS完成輸出時,如果被寫的數(shù)據(jù)線不是跟蹤段尾(即未遇到跟蹤結(jié)束條件),那么,象在狀態(tài)100一樣,跟蹤段建立模式狀態(tài)機轉(zhuǎn)換到等待uOPs狀態(tài)96。如果被寫的數(shù)據(jù)線是跟蹤段尾,當(dāng)NLIP未知時,跟蹤段建立模式狀態(tài)機轉(zhuǎn)換到閑置狀態(tài)92;當(dāng)NLIP已知時,就轉(zhuǎn)換到頭查找狀態(tài)104。此外,如果控制邏輯26接到通知說某個執(zhí)行單元已測到一個微操作碼轉(zhuǎn)移預(yù)測失效,則跟蹤段建立模式狀態(tài)機就轉(zhuǎn)換到閑置狀態(tài)。
在頭查找到狀態(tài)104,跟蹤段建立模式狀態(tài)機使跟蹤段頭根據(jù)已知的NLIP被查找(通過互補執(zhí)行模式狀態(tài)機)。如果查找導(dǎo)致命中(當(dāng)?shù)玫交パa執(zhí)行模式狀態(tài)機通知時),則跟蹤段建立模式狀態(tài)機就轉(zhuǎn)換到閑置狀態(tài)92;否則,跟蹤段建立模式狀態(tài)機金剛石以取請求狀態(tài)94。如先前描述過的一樣,跟蹤段建立模式狀態(tài)機再從取請求狀態(tài)94轉(zhuǎn)換到其它狀態(tài)。
現(xiàn)在參看圖8-15,此處所示8張流水線圖說明一個具體實施例中先前描述的各種操作的流水的各個流水線階段。這些圖將作為參考幫助描述一個具體實施例的先前描述的各項操作的流水線過程。這些操作本身將不再重復(fù)描述??蓞⒖枷惹暗拿枋隽私饧毠?jié)。在各圖中,用垂直實線表示的時間周期代表一個時鐘周期。用垂直虛線表示的時間周期代表一個時鐘周期內(nèi)的一部分。內(nèi)行人會明白其它的時間分割或流水線方式,甚至包括非流水線方式、也可以用來完成上面描述的操作。
圖8示出一個跟蹤段頭查找操作的流水線的流水階段的一個具體實施例。如圖所示,當(dāng)查找一個跟蹤段頭時,在一個時鐘周期的前半段,標(biāo)簽陣列12被訪問。內(nèi)容地址匹配(CAM)查找在這個時鐘周期的第一個四分之一時間內(nèi)執(zhí)行。對被說明的具體實施例來說,在CAM查找期間,只使用了標(biāo)簽地址位的預(yù)定的子集。接著,在時鐘周期的第二和第三個四分之一時間內(nèi),使用在這個時鐘周期的第一個四分之一時間內(nèi)CAM查找獲得的結(jié)果,對數(shù)據(jù)陣列14進行訪問。在時鐘周期的第三個四分之一時間內(nèi),執(zhí)行對潛在的命中標(biāo)簽條的全標(biāo)簽匹配。然后,根據(jù)全標(biāo)簽匹配的結(jié)果,在時鐘周期的第四個四分之一時間內(nèi)或者允許被檢索的數(shù)據(jù)輸出,或者令其失效。
圖9示出非跟蹤段頭查找,即跟蹤段體/尾查找的流水線的流水階段的一個具體實施例。如所示,當(dāng)查找一個跟蹤段體/尾時,在時鐘周期的前半段,標(biāo)簽陣列12被訪問。同時,在時鐘周期的第一個四分之一時間內(nèi),得到了從前趨跟蹤段頭/體檢索出的路信息。接著,在時鐘周期的第2和第3個四分之一時間內(nèi),使用得到的路信息和預(yù)定的集關(guān)系,對數(shù)據(jù)陣列14進行訪問。然后,在時鐘周期的第三個四分之一時間內(nèi),執(zhí)行全標(biāo)簽匹配。檢索那些可能被寫“爆”的跟蹤段體/尾。然后,根據(jù)全標(biāo)簽匹配結(jié)果,在時鐘周期的第四個四分之一時間內(nèi),或者允許被檢索的數(shù)據(jù)輸出,或者令其失效。
圖10示出將轉(zhuǎn)換到微碼定序器的uOPs輸出的流水線的流水階段的一個具體實施例。在第一個時鐘周期的前半段期間,標(biāo)簽陣列12被訪問。在第一個時鐘周期的后半段,執(zhí)行對微碼定序器轉(zhuǎn)換條件的檢測,即檢測當(dāng)前數(shù)據(jù)線是否被一個復(fù)雜宏指令終斷。如果檢測到這種情況,則輸出uOP的指令指針和一個用來選擇被微碼定序器輸出的uOPs的選擇信號。在第二個時鐘周期的前半段,微碼定序器的只讀存儲器(ROM)被訪問,而且在第二個時鐘周期的后半段,執(zhí)行微碼定序器的任何附加處理請求。然后,輸出的uOPs被送到第三個時鐘周期中的下一個流水階段。
圖11示出微碼定序器轉(zhuǎn)換的uOP輸出的流水線的流水階段的一個具體實施例。在第一個時鐘周期的前半段,微碼定序器的只讀存儲器(ROM)被訪問。在第一個時鐘周期的后半段,執(zhí)行微碼定序器的附加處理請求,包括檢測轉(zhuǎn)換回去的條件,即以復(fù)雜宏指令終止的數(shù)據(jù)線的剩余uOPs已被輸出。如果轉(zhuǎn)換回去的條件被測到,則微碼定序器向高速緩存10輸出一個“轉(zhuǎn)回”信號。然后,在第二個時鐘周期的前半段,訪問標(biāo)簽陣列12,而在第二個時鐘周期的后半段,如先前參照圖8和圖9描述的那樣,操作繼續(xù)進行。
圖12示出一個把NLIP輸出到下一個指令指針(IP)計算電路去的流水線的流水階段的具體實施例。如先前描述的那樣,在第一個時鐘周期的前半段,標(biāo)簽陣列12被訪問。在第一個時鐘周期的后半段,執(zhí)行標(biāo)簽匹配等工作,包括檢測跟蹤結(jié)束條件。當(dāng)檢測到跟蹤結(jié)束條件時,從標(biāo)簽陣列12中檢索出的當(dāng)前標(biāo)簽條的NLIP被輸出到下一個指令指針I(yè)P計算電路。在第二個時鐘周期,“新的”NLIP被返回(如果沒有預(yù)測轉(zhuǎn)移目標(biāo))。
圖13示出一個響應(yīng)高速緩存失效的取請求的流水線的各個流水階段的具體實施例。如所示,在跟蹤頭查找致使高速緩存失效的下一個時鐘周期中,取請求(稱為需求型)被發(fā)出。對所示具體實施例來說,在這下一個時鐘周期內(nèi),一個指令翻譯旁視緩沖區(qū)(iTLB)被訪問。
圖14示出將一個完成的數(shù)據(jù)線寫入數(shù)據(jù)陣列14的流水線的各流水階段的一個具體實施例。如所示,在第一個時鐘周期,當(dāng)前集x的LRU路被確定。如先前描述的那樣,在一個具體實施例中,LRU路符合一個標(biāo)準(zhǔn),即確保對一個集中的所有路有唯一的部分標(biāo)簽地址。同時,在第一時鐘周期內(nèi),當(dāng)前集x的被選路的集x-1模S的前一路被確定。(注意如果當(dāng)前集x的被選路的集x-1模S的前一路非空,它意味著集x的被選路當(dāng)前正被其它跟蹤段使用,它將要被寫爆。)如所示,在第二和第三時鐘周期內(nèi),uOPs被前遞并寫入數(shù)據(jù)陣列14。同時,在第二時鐘周期內(nèi),集x的LRU信息被更新。最后,在第三時鐘周期中,集x-1模S中的前一個尾信息被更新。如果對集x的被選路的集x-1模S的下一路非空,那么,對應(yīng)于集x-1模S的下一集的數(shù)據(jù)線就被設(shè)立為另一個跟蹤段的跟蹤段尾。在另一個具體實施例中,在第二時鐘周期中,一個跟蹤段成員被無條件地標(biāo)定為跟蹤段尾,并且在需要時,在第三時鐘周期中再改正過來。
圖15示出尾維護,并更詳細說明“寫爆”的情況。圖中所示的是兩個典型的跟蹤段TS1和TS2。為了便于說明,TS1包括跟蹤段體102和跟蹤段尾104,它們分別儲存在集x-2模S,0路以及集x-1模S,0路中;其中TS2則包括跟蹤段體106和108、及跟蹤段尾110,它們分別儲存在集x-2模S,1路、集x-1模S,1路以及集x,1路中。集x、1路被選來儲存TS1的一個新的跟蹤段尾112。為了將集x、1路與TS1適當(dāng)?shù)芈?lián)系起來,如所示,集x和1路的前一路域被修改為索引到0路。集x和1路的尾信息已經(jīng)設(shè)置,所以不需再作改動。如果集x和1路以前未用來儲存跟蹤段尾,那么就要設(shè)置尾信息。
此外,為了正確地將集x和1路的數(shù)據(jù)線設(shè)立為TS1的跟蹤段尾,下一路域及儲存在集x-1,0路中的TS1的前一個尾的尾信息必須要更新。如圖所示,集x-1模S,0路的下一路域被更新為索引1路,而尾信息則被清除。而且,在一個具體實施例中,TS2的控制信息也需更新。如圖所示寫爆的跟蹤段尾110的直接前趨、即TS2的前一個跟蹤段體108被轉(zhuǎn)變成TS2的跟蹤段尾108。設(shè)置集x-1模S,1路的尾位來完成這一轉(zhuǎn)變。
圖16示出一個適于實現(xiàn)本發(fā)明的計算機系統(tǒng)的具體實施例。如圖所示,典型的計算機系統(tǒng)100中包括本發(fā)明中高速緩沖存儲器10’的一個具體實施例。此外,這個典型的計算機系統(tǒng)100還包括一個跟轉(zhuǎn)移預(yù)測單元102(它包括轉(zhuǎn)移目標(biāo)地址計算電路以及下一個指令指針(IP)計算電路),微碼定序器104,多路轉(zhuǎn)接器106,執(zhí)行單元108,指令轉(zhuǎn)移預(yù)測單元110,指令表旁視緩沖區(qū)(iTLB)112,和譯碼器114。這些組件如圖所示相互耦合。
高速緩沖存儲器10’的構(gòu)成和操作如前所述。其余的組件102-104意在代表技術(shù)中已有的這些組件的廣泛的類型。在一個具體實施例中,10’和102-104的所有這些組件都被布置在同一個處理器集成電路(芯片)中。在另一些具體實施例中,這些組件可分屬于不同的(處理器)芯片。
雖然本發(fā)明的方法和裝置已用以上列舉的具體實施例進行了描述,但內(nèi)行人會認(rèn)識到本發(fā)明并不局限于所描述的具體實施例。在附加的權(quán)利要求書的精神和范圍內(nèi)的修改和替換也可用于實現(xiàn)本發(fā)明。這些描述應(yīng)被看作是對本說明而不是限制。
至此,跟蹤基本指令高速緩沖存儲的方法和裝置已描述完畢。
權(quán)利要求
1.一個裝置,它包括a)具有多條數(shù)據(jù)線的一個數(shù)據(jù)陣列;和b)耦合在所述數(shù)據(jù)陣列上的控制邏輯,它把許多指令的跟蹤段存入數(shù)據(jù)線,其中包括跨越多條數(shù)據(jù)線的跟蹤段。
2.如權(quán)利要求1所述的裝置,其中,所述控制邏輯用具有一個或多個基本塊指令的跟蹤段成員構(gòu)成每個跟蹤段,并把每個跟蹤段成員存儲在數(shù)據(jù)線中;控制邏輯進一步以邏輯方式把多線跟蹤段的各數(shù)據(jù)線順序地聯(lián)系起來。
3.如權(quán)利要求1所述的裝置,其中,所述控制邏輯這樣來檢索一個多線跟蹤段的跟蹤段成員它先找到存有多線跟蹤段的第一跟蹤段成員的數(shù)據(jù)線,并檢索出這個第一跟蹤段成員,然后根據(jù)這些數(shù)據(jù)線的邏輯順序關(guān)系,相繼找到存儲著其余跟蹤段成員的其余數(shù)據(jù)線,并且當(dāng)這些跟蹤段成員所擁有的數(shù)據(jù)線被找到時,檢索出這些剩余的跟蹤段成員。
4.如權(quán)利要求3所述的裝置,其中,所述控制邏輯維護著與存有跟蹤段的第一跟蹤段成員的數(shù)據(jù)線有關(guān)的地址,以便進行所述的尋找跟蹤段的第一跟蹤段成員。
5.如權(quán)利要求4所述的裝置,其中,該裝置還包括至少部分內(nèi)容地址匹配電路,而且,也被耦合到所述至少部分內(nèi)容地址匹配電路上的控制邏輯,使“至少部分內(nèi)容地址”與某個與訪問地址相聯(lián)系的維護地址相匹配,以便找到存有跟蹤段的第一跟蹤段成員的數(shù)據(jù)線。
6.如權(quán)利要求5所述的裝置,其中,所述控制邏輯使部分內(nèi)容地址與聯(lián)系訪問地址的維護地址相匹配,以便找到存有某個跟蹤段的第一跟蹤段成員的數(shù)據(jù)線;并且該控制邏輯還進一步證實存在某條部分匹配數(shù)據(jù)線中的這個第一跟蹤段成員就是要找的那個第一跟蹤段成員。
7.如權(quán)利要求1所述的裝置,其中,在適當(dāng)?shù)牡胤?,所述控制邏輯維護每個多線跟蹤段的各條數(shù)據(jù)線的“至少部分控制信息”,用邏輯的方法有序地將這條數(shù)據(jù)線與它邏輯上的后繼數(shù)據(jù)線聯(lián)系起來。
8.如權(quán)利要求7所述的裝置,其中,所述數(shù)據(jù)線被組織在S個集的N條路中;并且,所述控制邏輯維護多線跟蹤段的各條數(shù)據(jù)線的下一路的索引,最后一條數(shù)據(jù)線除外,以檢索直接后繼數(shù)據(jù)線的一條路的位置。
9.如權(quán)利要求7所述的裝置,其中,所述數(shù)據(jù)線被組織在S個集的N條路中;并且,所述控制邏輯將以個多線跟蹤段的后繼跟蹤段成員存儲在后繼數(shù)據(jù)線內(nèi),在后繼數(shù)據(jù)線之間維持一種預(yù)定的集關(guān)系。
10.如權(quán)利要求7所述的裝置,其中,所述數(shù)據(jù)線被組織在S個集的N條路中;而且,所述控制邏輯維護著多線跟蹤段的各個數(shù)據(jù)線的下一集索引,最后一根數(shù)據(jù)線除外,以檢索直接后繼數(shù)據(jù)線的一個集的位置。
11.如權(quán)利要求11所述的裝置,其中,在適當(dāng)?shù)牡胤剑隹刂七壿嬀S護一個多線跟蹤段的各數(shù)據(jù)線的“至少部分控制信息”,用邏輯的方法將數(shù)據(jù)線與它邏輯上的前趨數(shù)據(jù)線有序的聯(lián)系起來。
12.如權(quán)利要求11所述的裝置,其中,所述數(shù)據(jù)線被組織在S個集的N條路中;而且,所述控制邏輯維護著多線跟蹤段的的各條數(shù)據(jù)線的前一路索引,第一數(shù)據(jù)線除外,以檢索直接前趨數(shù)據(jù)線的一路的位置。
13.如權(quán)利要求1所述的裝置,其中,所述控制邏輯還進一步維護著與所有所述數(shù)據(jù)線或其中選出的若干條數(shù)據(jù)線有關(guān)的一個或多個控制信息,用以優(yōu)化所述裝置的性能。
14.如權(quán)利要求13所闡的裝置,其中,所述控制邏輯還進一步維護存儲有一個跟蹤段的最后跟蹤段成員的數(shù)據(jù)線的下一個指令指針。
15.如權(quán)利要求13所述的裝置,其中,所述控制邏輯還進一步維護每一條存儲著跟蹤段成員的數(shù)據(jù)線的下一個指令指針。
16.如權(quán)利要求13所述的裝置,其中,所述控制邏輯還進一步維護存儲有某個跟蹤段的第一跟蹤段成員的各條數(shù)據(jù)線的第一跟蹤段成員的指示符。
17.如權(quán)利要求13所述的裝置,其中,所述控制邏輯還進一步維護存儲有某個跟蹤段的最后跟蹤段成員的各條數(shù)據(jù)線的最后跟蹤段成員的指示符。
18.如權(quán)利要求13所述的裝置,其中,所述控制邏輯還進一步維護存儲有跟蹤段成員的各數(shù)據(jù)線的微操作碼指令指針。
19.如權(quán)利要求13所述的裝置,其中,所述控制邏輯還進一步在適當(dāng)?shù)牡胤骄S護某條數(shù)據(jù)線的一個轉(zhuǎn)移目標(biāo)地址。
20.如權(quán)利要求1所述的裝置,其中,所述控制邏輯能按照多數(shù)據(jù)線終止條件,終止一個跟蹤段的指令在一條數(shù)據(jù)線中的存儲,并且繼續(xù)該跟蹤段的指令在另一條數(shù)據(jù)線中的存儲。
21.如權(quán)利要求20所述的裝置,其中,所述數(shù)據(jù)線終止條件包括遇到一個復(fù)雜宏指令,其譯碼后至少有M個微操作碼。此處的M等于或大于預(yù)定的最大值。
22.如權(quán)利要求20所述的裝置,其中,所述數(shù)據(jù)線終止條件包括在預(yù)定的每個跟蹤段的條件轉(zhuǎn)移微操作碼的最大限已達到后,又遇到一個條件轉(zhuǎn)移操作碼的情況。
23.如權(quán)利要求1所述的裝置,其中,所述控制邏輯按照多跟蹤段終止條件,終止作為當(dāng)前跟蹤段成員的指令儲存,并且繼續(xù)作為一個新跟蹤段成員的指令儲存。
24.如權(quán)利要求23所述的裝置,其中,所述跟蹤段終止條件包括遇到一個間接轉(zhuǎn)移宏指令。
25.如權(quán)利要求23所述的裝置,其中,所述數(shù)據(jù)線終止條件包括在預(yù)定的每個跟蹤段的指令的最大限已達到后,又遇到一條指令的情況。
26.如權(quán)利要求1所述的裝置,其中,所述裝置還進一步包括許多緩沖器,用來在將跟蹤段成員存入數(shù)據(jù)線以前,沿預(yù)測的執(zhí)行方向創(chuàng)建跟蹤段成員。
27.如權(quán)利要求1所述的裝置,其中,所述裝置還進一步包括一個耦合到數(shù)據(jù)陣列上的直接提取器,用以提取與其內(nèi)容正由數(shù)據(jù)陣列輸出的數(shù)據(jù)線相關(guān)聯(lián)的轉(zhuǎn)移指令指針。
28.如權(quán)利要求1所述的裝置,其中,所述裝置進一步包括一個擁有許多對應(yīng)于數(shù)據(jù)線的標(biāo)簽條的標(biāo)簽陣列,而且耦合在所述控制邏輯上;并且,所述控制邏輯把信息存入標(biāo)簽條,以便儲存和檢索這些跟蹤段的跟蹤段成員。
29.一種高速緩存指令的方法包括a)把第一個或多個基本指令塊存入第一數(shù)據(jù)線作為一個跟蹤段的第一跟蹤段成員;b)把第二個或多個指令塊存入第二數(shù)據(jù)線作為該跟蹤段的第二跟蹤段成員;而且c)存儲所述第一數(shù)據(jù)線和第二數(shù)據(jù)線相關(guān)的“至少部分控制信息”,以便在找到第一跟蹤段成員時,就能找到第二數(shù)據(jù)線并檢索第二跟蹤段成員。
30.如權(quán)利要求29所述的方法,其中所述方法還進一步包括d)把第三個或多個基本指令塊存入第三數(shù)據(jù)線,作為所述跟蹤段的第三跟蹤段成員;并且e)存儲所述第二數(shù)據(jù)線與第三數(shù)據(jù)線相關(guān)的“至少部分控制信息”,以便在檢索所述第二跟蹤段成員時,就能找到第三數(shù)據(jù)線并檢索第三跟蹤段成員。
31.如權(quán)利要求30所述的方法,其中(a),(b)和(d)每項均按照多數(shù)據(jù)線終止條件被終止。
32.如權(quán)利要求30所述的方法,其中(a),(b)和(d)每項均包括在一個緩沖器中建立所述第一/第二/第三數(shù)據(jù)線,以沿著預(yù)測的執(zhí)行方向創(chuàng)建跟蹤段成員。
33.一種高速緩存指令的方法包括a)通過與訪問地址匹配的地址來找到存有跟蹤段第一跟蹤段成員的第一數(shù)據(jù)線,其中訪問地址又依賴于被維護的與跟蹤段的第一跟蹤段成員相關(guān)的存儲地址。b)檢索第一跟蹤段成員以及關(guān)于存有該跟蹤段的第二跟蹤段成員的第二數(shù)據(jù)線的第一個“至少部分控制信息”,該“至少部分控制信息”被維護與第一數(shù)據(jù)線相關(guān);而且c)找到第二數(shù)據(jù)線,并至少部分的依賴于被檢索的關(guān)于第二數(shù)據(jù)線的第一個“至少部分控制信息”,檢索第二跟蹤段成員。
34.如權(quán)利要求33所述的方法,其中,(c)進一步包括檢索關(guān)于存有所述跟蹤段的第三跟蹤段成員的第三數(shù)據(jù)線的第二個“至少部分控制信息”,被維護與第二數(shù)據(jù)線相關(guān)的第二個“至少部分控制信息”;而且,該方法進一步包括d)找到第三數(shù)據(jù)線,并至少部分的依賴于被檢索的關(guān)于第三數(shù)據(jù)線的第二個“至少部分控制信息”,檢索第三跟蹤段成員。
35.如權(quán)利要求34所述的方法,其中,(b),(c)和(d)中的一項或幾項進一步包括檢索來自微碼定序器的宏指令的微操作碼。
36.如權(quán)利要求33所述的方法,其中(c)包括訪問數(shù)據(jù)陣列中的數(shù)據(jù)線的某一集的某一路,此處該集的該路是由被檢索的關(guān)于所述第二數(shù)據(jù)線的第一個“至少部分控制信息”中的一個路索引進行索引的,而且該集是由預(yù)定的第一和第二數(shù)據(jù)線之間的集關(guān)系管理的。
37.如權(quán)利要求33所述的方法,其中步驟(c)包括訪問數(shù)據(jù)陣列中的數(shù)據(jù)線的某一集的某一路,此處該路和該集分別是由被檢索的關(guān)于所述第二數(shù)據(jù)線的第一個“至少部分控制信息”的一個路索引和一個集索引進行索引。
38.如權(quán)利要求33所述的方法,其中,(a)項所述地址匹配使用所維護的訪問地址和位置地址的相應(yīng)的地址位子集來執(zhí)行,而且(a)進一步包括驗證匹配的數(shù)據(jù)線是否的確含有正在尋找的第一跟蹤段成員。
39.一個裝置包括a)使該裝置運行于執(zhí)行模式的第一狀態(tài)機,其中,存于許多數(shù)據(jù)線中的指令的跟蹤段的跟蹤段成員被查找并輸出;而且b)使該裝置運行于跟蹤段建立模式的第二狀態(tài)機,其中,指令的跟蹤段的跟蹤段成員被建立并存儲在數(shù)據(jù)線中。
40.如權(quán)利要求39所述的裝置,其中,當(dāng)執(zhí)行模式操作時,該裝置運行于包括跟蹤段頭查找查狀、跟蹤段體查找狀態(tài)和跟蹤段尾查找狀態(tài)等多種狀態(tài)中的一種狀態(tài),來分別查找跟蹤段頭、跟蹤段體和跟蹤段尾。
41.如權(quán)利要求40所述的裝置,其中,諸多狀態(tài)中進一步包括用來檢索來自微碼定序器的宏指令的微操作碼的微碼定序器查找狀態(tài)。
42.如權(quán)利要求39所述的裝置,其中,當(dāng)運行于所述跟蹤段建立模式時,該裝置運行于包括將一個跟蹤段成員從一個填充緩沖器發(fā)送到數(shù)據(jù)陣列的填充緩沖器發(fā)送狀態(tài)的諸多狀態(tài)中的一個狀態(tài),(在此狀態(tài)下)第一跟蹤段成員沿預(yù)測的執(zhí)行方向被建立。
43.一個處理器包括a)一個執(zhí)行單元;b)一個耦合語執(zhí)行單元的高速緩沖存儲器,該高速緩沖存儲器包括一個擁有許多數(shù)據(jù)線的數(shù)據(jù)陣列;和控制邏輯,它把包括跨越多條數(shù)據(jù)線的跟蹤段在內(nèi)的許多指令的跟蹤段存入數(shù)據(jù)線。
44.一個計算機系統(tǒng)包括a)一個處理器,它包括一個具有許多數(shù)據(jù)線的數(shù)據(jù)陣列的高速緩沖存儲器,以及控制邏輯,它把包括跨越多條數(shù)據(jù)線的跟蹤段在內(nèi)的許多指令的跟蹤段存入數(shù)據(jù)線;以及b)一個耦合到該處理器的輸入/輸出組件。
45.一個處理器包括a)一個執(zhí)行單元;和b)一個耦合到該執(zhí)行單元的高速緩沖存儲器,該高速緩沖存儲器具使其運行于執(zhí)行模式的第一狀態(tài)機,其中,存儲在許多數(shù)據(jù)線中的指令的跟蹤段的跟蹤段成員被查找到并輸出;還有一個用于使高速緩沖存儲器運行于跟蹤段建立模式的第二狀態(tài)機,其中,指令的跟蹤段的跟蹤段成員被建立并被儲存到數(shù)據(jù)線中。
46.一個計算機系統(tǒng)包括a)一個處理器,它包括一個高速緩存,該高速緩沖存儲器具使其運行于執(zhí)行模式的第一狀態(tài)機,其中,存儲在許多數(shù)據(jù)線中的指令的跟蹤段的跟蹤段成員被查找并被輸出;還有一個用于使高速緩沖存儲器運行于跟蹤段建立模式的第二狀態(tài)機,其中,指令的跟蹤段的跟蹤段成員被建立并被存到數(shù)據(jù)線中;并且還有b)一個耦合到該處理器上的輸入/輸出組件。
全文摘要
一個由數(shù)據(jù)陣列(14)和控制邏輯(26)組成的高速緩存。數(shù)據(jù)陣列(14)含有若干數(shù)據(jù)線;控制邏輯(26)則用來存儲數(shù)據(jù)線中的許多指令跟蹤段,其中包括跨越多個數(shù)據(jù)線的跟蹤段。在一個具體實施例中,每個跟蹤段含有一個或多個具有一條或多條基本指令塊的跟蹤段成員;每個跟蹤段成員擁有一條數(shù)據(jù)線;多線跟蹤段的數(shù)據(jù)線是有序組合的(邏輯組合的)。檢索多線跟蹤段的跟蹤段成員時,先確定存有跟蹤段的第一跟蹤段成員的數(shù)據(jù)線,然后再根據(jù)數(shù)據(jù)線的邏輯序列組合依次確定存有其余跟蹤段成員的其余的數(shù)據(jù)線。
文檔編號G06F9/32GK1354852SQ99816486
公開日2002年6月19日 申請日期1999年1月15日 優(yōu)先權(quán)日1997年10月23日
發(fā)明者R·F·克里克, G·J·欣頓, M·D·烏普頓, D·J·薩格, C·W·李 申請人:英特爾公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
克拉玛依市| 敖汉旗| 平安县| 普洱| 荥阳市| 定远县| 洛南县| 慈利县| 鞍山市| 沙湾县| 清丰县| 登封市| 临漳县| 格尔木市| 岐山县| 土默特右旗| 城固县| 门源| 通榆县| 丰台区| 精河县| 鹿邑县| 资源县| 时尚| 繁昌县| 建始县| 泸水县| 石家庄市| 长沙市| 翼城县| 长阳| 彰化县| 金乡县| 嫩江县| 平乡县| 宝丰县| 莎车县| 密山市| 贺州市| 庆元县| 沙坪坝区|