两个人的电影免费视频_国产精品久久久久久久久成人_97视频在线观看播放_久久这里只有精品777_亚洲熟女少妇二三区_4438x8成人网亚洲av_内谢国产内射夫妻免费视频_人妻精品久久久久中国字幕

意圖進(jìn)行存儲的預(yù)取機(jī)制的制作方法

文檔序號:6380062閱讀:413來源:國知局
專利名稱:意圖進(jìn)行存儲的預(yù)取機(jī)制的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及微電子學(xué)的領(lǐng)域,尤其指一種裝置及方法使程序員得以命令微處理器預(yù)取一處于獨(dú)占(exclusive)MESI(修改,獨(dú)占,共享,無效)狀態(tài)的高速緩存管線(cache line)至其內(nèi)部高速緩存(internal cache)。
背景技術(shù)
如今的微處理器,其內(nèi)部邏輯區(qū)段(logic block)間的數(shù)據(jù)傳輸速度遠(yuǎn)超過其與外部內(nèi)存的存取速度。在一個(gè)x86桌上型計(jì)算機(jī)配置中,其總線(bus)與系統(tǒng)內(nèi)存之間的接口運(yùn)行速率是以兆赫(megahertz)的百倍計(jì),但是其內(nèi)部微處理器時(shí)鐘速率卻已接近千兆赫(gigahertz)。因此,近年來已發(fā)展出一個(gè)高速緩存結(jié)構(gòu)的層級體,此體使得高效能微處理器不必在每次讀取(read)或?qū)懭?write)數(shù)據(jù)時(shí),必須在一個(gè)緩慢的內(nèi)存總線(memory bus)上執(zhí)行操作(transaction),而更能發(fā)揮其效能。
一個(gè)機(jī)載(on-board),或區(qū)域(local),高速緩存在一個(gè)管線化(pipeline)微處理器中是一個(gè)獨(dú)立的單位,在本質(zhì)上,其運(yùn)行方式對于在管線化微處理器中指令流而言是透明(transparent)的,此方式確保一個(gè)應(yīng)用程序(applicationprogram)中的指令所需要的數(shù)據(jù)已經(jīng)常駐在其高速緩存內(nèi),而可以用管線速率存取,而不是以內(nèi)存總線速率。不同的技術(shù)使用不同的高速緩存架構(gòu),有些由多層(multiple levels)高速緩存所組成第一層高速緩存非常接近處理器的執(zhí)行邏輯(execution logic),第二層高速緩存可以是芯片上(on-chip)或非芯片上,用來存儲較不常存取的數(shù)據(jù),第三層高速緩存則可能是在存儲卡(memory card)上,以此類推。不論應(yīng)用哪一種架構(gòu),熟悉此領(lǐng)域技術(shù)人員將發(fā)現(xiàn)使用高速緩存的目的在于排除當(dāng)總線操作由一個(gè)緩慢的內(nèi)存總線所發(fā)出時(shí)的微處理器管線中指令的停滯(stalled),此總線操作為了取得一待決的(pending)讀取或?qū)懭脒\(yùn)算所需的數(shù)據(jù)。當(dāng)此狀況發(fā)生,程序的執(zhí)行將產(chǎn)生令人難以忍受的中斷(halt),直到得到所需數(shù)據(jù)為止。
如今計(jì)算機(jī)系統(tǒng)組件間共享內(nèi)存區(qū)域的現(xiàn)象使得情況更為復(fù)雜。舉例說,主微處理器與通訊微處理器之間的通訊是由在一指定內(nèi)存區(qū)域上的讀取及寫入數(shù)據(jù)。視頻組件(video device)上顯示數(shù)據(jù)給操作員的視頻卡的微處理器與主微處理器共享一些稱為視頻緩沖器(video buffers)的內(nèi)存區(qū)域,也是很常見的情況。
在共享內(nèi)存系統(tǒng)中,可能發(fā)生來自一個(gè)共享區(qū)域的數(shù)據(jù)存在于兩個(gè)不同微處理器的區(qū)域高速緩存中,或是存在于連接到同一個(gè)內(nèi)存總線的不同組件上。若所有組件只是單純的讀取數(shù)據(jù),則允許它們將數(shù)據(jù)常駐于其區(qū)域高速緩存結(jié)構(gòu),并不會造成任何傷害。但是當(dāng)它們均被允許改動(modify)存在于其區(qū)域高速緩存的數(shù)據(jù)時(shí),即會造成不可預(yù)期的后果。
為防止此情況發(fā)生,系統(tǒng)設(shè)計(jì)者開發(fā)了高速緩存一致性協(xié)議以標(biāo)示高速緩存中數(shù)據(jù)的狀態(tài)。MESI是最普遍使用的協(xié)議。依照MESI來維護(hù)區(qū)域高速緩存可以確保同一數(shù)據(jù)的兩個(gè)副本不會在同一時(shí)間被改動。MESI共享狀態(tài)告知區(qū)域高速緩存一特定區(qū)段的數(shù)據(jù)是否為共享(shared)。如是共享,則區(qū)域處理器在由一較慢的內(nèi)存總線上執(zhí)行操作以取得獨(dú)占許可(exclusivepermission)之前,不得改動數(shù)據(jù)。若要改動數(shù)據(jù),處理器需先取得數(shù)據(jù)的獨(dú)占所有權(quán)。
本發(fā)明在此強(qiáng)調(diào)的問題是關(guān)于要將數(shù)據(jù)寫入內(nèi)存時(shí)所導(dǎo)致的發(fā)生在程序內(nèi)的延遲。熟悉此領(lǐng)域技術(shù)人員將發(fā)現(xiàn)高速緩存并無合理的方法以得知何時(shí)一特定內(nèi)存區(qū)域會最先被需要,因此當(dāng)該特定內(nèi)存區(qū)域第一次被加載到區(qū)域高速緩存時(shí),總是會引起內(nèi)存總線延遲。所以,設(shè)計(jì)者開發(fā)了一可在微處理器上執(zhí)行的預(yù)取指令。但是預(yù)取指令并不能在程序流程的操作數(shù)上運(yùn)行。確切的說,預(yù)取指令命令區(qū)域高速緩存從內(nèi)存上加載操作數(shù)到該高速緩存以備用。而且因?yàn)楦咚倬彺鎲卧c內(nèi)存間的運(yùn)行方式,對一微處理器管線內(nèi)的指令流程而言,是透明的,因此穩(wěn)妥的方式是在需用數(shù)據(jù)之前先發(fā)出預(yù)取指令,使得高速緩存可以在需用數(shù)據(jù)之前,從內(nèi)存提取數(shù)據(jù)與在主程序流程中其它指令的執(zhí)行平行處理。然后當(dāng)隨后的指令(subsequence instruction)出現(xiàn),并且需要存取已預(yù)取的數(shù)據(jù)時(shí),此數(shù)據(jù)已經(jīng)在高速緩存中立即可存取,所以程序的執(zhí)行不會因?yàn)榈却龔膬?nèi)存提取數(shù)據(jù)而停滯。已預(yù)取的數(shù)據(jù)在高速緩存中立即可存取僅指其將要被讀取而已。如果此預(yù)取的數(shù)據(jù)會被隨后的指令所改動,則程序的執(zhí)行將必須延遲以等待高速緩存單元到總線去請求共享數(shù)據(jù)的獨(dú)占所有權(quán),而后區(qū)域處理器才可改動此數(shù)據(jù)。
因此,需要一種裝置及方法使得程序員得以命令微處理器執(zhí)行預(yù)取數(shù)據(jù),此數(shù)據(jù)處于不需求助于總線操作以取得數(shù)據(jù)的獨(dú)占所有權(quán),而可被隨后的運(yùn)算所改動的狀態(tài)。

發(fā)明內(nèi)容
為克服上述及其它公知技術(shù)的問題與缺點(diǎn),本發(fā)明提供一種更好的技術(shù)以預(yù)取一高速緩存數(shù)據(jù),其狀態(tài)為使得一隨后的存儲運(yùn)算可立刻被公布,而不會發(fā)生為取得該高速緩存數(shù)據(jù)的獨(dú)占所有權(quán)所導(dǎo)致的內(nèi)存總線延遲。在一具體實(shí)施例中,提供一可從內(nèi)存獨(dú)占的預(yù)取一高速緩存管線的微處理器裝置。該裝置包括轉(zhuǎn)譯邏輯與執(zhí)行邏輯。轉(zhuǎn)譯邏輯將一擴(kuò)展(extended)預(yù)取指令轉(zhuǎn)譯成一微指令序列,此微指令序列用以命令微處理器預(yù)取一處于獨(dú)占狀態(tài)的的高速緩存管線。執(zhí)行邏輯連接至轉(zhuǎn)譯邏輯。該執(zhí)行邏輯接收前述微指令。序列,然后由內(nèi)存總線發(fā)出操作,請求該處于獨(dú)占狀態(tài)的高速緩存管線。
本發(fā)明的主要目的,在于提供一種微處理器以執(zhí)行一意圖進(jìn)行存儲運(yùn)算的預(yù)取。該微處理器擁有一擴(kuò)展預(yù)取指令,該指令被配置成命令該微處理器預(yù)取一處于獨(dú)占狀態(tài)的的高速緩存管線。該微處理器也包含一轉(zhuǎn)譯器,該轉(zhuǎn)譯器則是被配置成接收該擴(kuò)展預(yù)取指令,并將此擴(kuò)展預(yù)取指令轉(zhuǎn)譯成相關(guān)的微指令。此相關(guān)的微指令命令在微處理器內(nèi)的執(zhí)行邏輯由一內(nèi)存總線發(fā)出一總線操作,以請求此高速緩存管線的獨(dú)占所有權(quán)。
本發(fā)明的另一目的,在于提供一種預(yù)取一處于獨(dú)占狀態(tài)的的高速緩存管線的方法。此方法包括提取(retrieving)一擴(kuò)展預(yù)取宏指令;轉(zhuǎn)譯該擴(kuò)展預(yù)取宏指令成一微指令序列,此微指令序列用以命令一微處理器預(yù)取該處于獨(dú)占狀態(tài)的高速緩存管線;而且,響應(yīng)此微指令序列,由內(nèi)存總線發(fā)出總線操作以讀取該處于獨(dú)占狀態(tài)的高速緩存管線。
為了更好地理解本發(fā)明的目的、特征及優(yōu)點(diǎn),下面結(jié)合附圖進(jìn)一步說明本發(fā)明的具體實(shí)施例。


圖1是現(xiàn)有技術(shù)中微處理器的有效管線化階段(stages)的方框圖;圖2是一方框圖,其描述在如圖1所述的微處理器內(nèi)執(zhí)行一預(yù)取運(yùn)算的一接口至內(nèi)存的高速緩存單元;圖3A、3B是一時(shí)序圖,其說明由如圖1及圖2所述的微處理器所發(fā)出,由內(nèi)存總線執(zhí)行的預(yù)取運(yùn)算的兩種可能操作集;圖4是本發(fā)明的擴(kuò)展預(yù)取指令的方框圖;圖5是一表格,其說明如何將如圖4所示的擴(kuò)展預(yù)取指令的擴(kuò)展地址定位字段,用以命令微處理器執(zhí)行預(yù)取一處于獨(dú)占MESI狀態(tài)的高速緩存管線;圖6是一方框圖,其詳述本發(fā)明執(zhí)行意圖進(jìn)行存儲運(yùn)算的預(yù)取的一種微處理器;圖7是一方框圖,其描述在如圖6所述的微處理器內(nèi)執(zhí)行一意圖進(jìn)行存儲運(yùn)算的預(yù)取的一接口至內(nèi)存的高速緩存單元;圖8是一時(shí)序圖,其說明本發(fā)明由如圖6及圖7所述的微處理器所發(fā)出,由內(nèi)存總線以執(zhí)行意圖進(jìn)行存儲運(yùn)算預(yù)取的總線操作;圖9是本發(fā)明的擴(kuò)展區(qū)段預(yù)取指令的方框圖;圖10是一方框圖,其描述在如圖6所述的微處理器內(nèi)執(zhí)行一區(qū)段預(yù)取及存儲運(yùn)算的一接口至內(nèi)存的高速緩存單元;圖11是一時(shí)序圖,為說明本發(fā)明由如圖6及圖10所述的微處理器所發(fā)出,由內(nèi)存總線來執(zhí)行一區(qū)段預(yù)取及存儲運(yùn)算的總線操作;圖12是本發(fā)明用以執(zhí)行意圖進(jìn)行存儲運(yùn)算的預(yù)取方法流程圖;圖13是本發(fā)明用以執(zhí)行意圖進(jìn)行存儲運(yùn)算的區(qū)段預(yù)取方法流程圖。
圖中100管線化微處理器 101提取階段102轉(zhuǎn)譯階段 103暫存階段104尋址階段 105執(zhí)行階段106執(zhí)行邏輯 107數(shù)據(jù)高速緩存108內(nèi)存 109高速緩存總線110內(nèi)存總線 120程序流程121~123宏指令
200高速緩存單元接口 201微處理器202宏指令210轉(zhuǎn)譯器211微指令220高速緩存單元221記錄邏輯 222數(shù)據(jù)高速緩存223停滯信號 230總線單元240系統(tǒng)內(nèi)存總線 241總線組件301~302操作指令集 303~304總線操作400擴(kuò)展預(yù)取指令 401前置碼402預(yù)取運(yùn)算碼403擴(kuò)展地址指定元600微處理器 601提取邏輯602指令高速緩存 603指令內(nèi)存604指令隊(duì)列 606轉(zhuǎn)譯邏輯607擴(kuò)展轉(zhuǎn)譯邏輯 608微指令隊(duì)列609執(zhí)行邏輯 610擴(kuò)展高速緩存單元611數(shù)據(jù)高速緩存 612擴(kuò)展記錄邏輯613總線單元 614數(shù)據(jù)存儲器615內(nèi)存總線700方框圖701微處理器702宏指令710擴(kuò)展轉(zhuǎn)譯器711微指令720擴(kuò)展高速緩存單元721擴(kuò)展記錄邏輯 722數(shù)據(jù)高速緩存723停滯信號 730總線單元740總線 741總線組件800時(shí)序圖801~802總線操作900擴(kuò)展區(qū)段預(yù)取指令 901前置碼902預(yù)取運(yùn)算碼903擴(kuò)展地址指定元1000方框圖 1001微處理器1002宏指令 1010擴(kuò)展轉(zhuǎn)譯器1011微指令序列 1012架構(gòu)寄存器1013映像計(jì)數(shù)寄存器 1020擴(kuò)展高速緩存單元
1021擴(kuò)展區(qū)段記錄邏輯1022數(shù)據(jù)高速緩存1023停滯信號1030總線單元1040內(nèi)存總線1041總線組件1042數(shù)據(jù)存儲器 1100時(shí)序圖1101~1102總線操作1200~1220意圖進(jìn)行存儲運(yùn)算的預(yù)取的方法的流程具體實(shí)施方式
前文已針對現(xiàn)有的管線化微處理器如何執(zhí)行預(yù)取運(yùn)算,作了背景的討論,有鑒于此,在圖1至3,將呈現(xiàn)一強(qiáng)調(diào)現(xiàn)有預(yù)取技術(shù)的限制的例子。緊接著,在圖4至13,將呈現(xiàn)本發(fā)明的討論。本發(fā)明使得程序員得以命令微處理器預(yù)取處于獨(dú)占MESI狀態(tài)的數(shù)據(jù)至其高速緩存,因此,得以避免因?yàn)橐浑S后的儲存運(yùn)算執(zhí)行該數(shù)據(jù)的修改(modify)所造成的任何程序延遲。
如圖1,一方框圖用以說明當(dāng)今管線化微處理器100內(nèi)的重要管線階段101-105。此微處理器有一個(gè)提取階段101,一個(gè)轉(zhuǎn)譯階段102,一個(gè)暫存階段103,一個(gè)尋址階段104及一個(gè)執(zhí)行階段105。
在運(yùn)行時(shí),該提取階段101從系統(tǒng)內(nèi)存的一指令范圍120中提取宏指令121-123以供微處理器100執(zhí)行。該宏指令121-123接著被送至轉(zhuǎn)譯階段102。該轉(zhuǎn)譯階段102將宏指令121-123轉(zhuǎn)譯成對應(yīng)的微指令(或稱原生指令)序列(未顯示),此微指令序列命令微處理器100執(zhí)行宏指令121-123指定的運(yùn)算。非常類似于工廠產(chǎn)品在裝配在流水線站的方式,該微指令也同步于管線時(shí)鐘信號(未顯示)的流經(jīng)在管線中隨后的階段103-105。根據(jù)前述方式,微指令被送至?xí)捍骐A段103。如果有一特定微指令指定一操作數(shù)被存儲在暫存階段103的寄存器內(nèi),則邏輯在那一點(diǎn)上可存取該寄存器以提取該操作數(shù),并且將之隨同該特定微指令一起送至尋址階段104。尋址階段104包含用以產(chǎn)生地址以存取存儲在數(shù)據(jù)存儲器108內(nèi)的操作數(shù)的邏輯。相似于暫存階段103,該尋址階段104也將所產(chǎn)生的地址,隨著相應(yīng)的微指令,傳送至執(zhí)行階段105。
執(zhí)行階段105執(zhí)行該微指令所指定的運(yùn)算。在當(dāng)今的微處理器100,運(yùn)算的型式是由指令集架構(gòu)所決定,但是熟悉此項(xiàng)技術(shù)的人將發(fā)現(xiàn)這些運(yùn)算不會超出一般的計(jì)算范疇,例如邏輯運(yùn)算,算術(shù)運(yùn)算,及內(nèi)存存取運(yùn)算(換言之,數(shù)據(jù)讀取與數(shù)據(jù)寫入運(yùn)算)。由執(zhí)行指定的運(yùn)算所產(chǎn)生的結(jié)果,若不是存儲在暫存階段103的寄存器內(nèi),即是被寫入到數(shù)據(jù)存儲器108內(nèi)的存儲位置。
熟悉此項(xiàng)技術(shù)的人將發(fā)現(xiàn)當(dāng)今的管線化微處理器100也許會有比圖1中101-105更多的階段,因?yàn)椋煞纸夤芫€中的主函數(shù)以增加管線中階段的數(shù)目是種經(jīng)證實(shí)可增加管線中指令121-123的產(chǎn)出量的技術(shù)。為了簡明起見,如圖1所示的當(dāng)今微處理器100的管線化階段101-105已經(jīng)足以說明現(xiàn)有技術(shù)的缺點(diǎn)。
值得注意的是在現(xiàn)有的微處理器100中,其執(zhí)行階段105除了有一數(shù)據(jù)高速緩存107之外,還有執(zhí)行邏輯106。該數(shù)據(jù)高速緩存107的運(yùn)行與在管線化階段101-105中指令的執(zhí)行平行,此運(yùn)行方式確保那些有很大可能性被一應(yīng)用程序指令121-123所存取的數(shù)據(jù)已經(jīng)存在于高速緩存107,因此當(dāng)數(shù)據(jù)存取微指令(換言之,加載內(nèi)存或存儲內(nèi)存微指令)進(jìn)行到執(zhí)行階段105時(shí),該執(zhí)行邏輯106能夠在一或兩個(gè)管線時(shí)鐘周期之內(nèi)執(zhí)行該數(shù)據(jù)的存取,而不是造成可能數(shù)以百計(jì)的時(shí)鐘周期的程序延遲,只因?yàn)榈却蓛?nèi)存總線110到數(shù)據(jù)存儲器108以執(zhí)行該數(shù)據(jù)的存取。在一有效率的高速緩存系統(tǒng)配置中,數(shù)據(jù)的加載與存儲絕大部份發(fā)生在由高速緩存總線109的執(zhí)行邏輯106與數(shù)據(jù)高速緩存107之間,并且數(shù)據(jù)高速緩存107的運(yùn)行方式是相對的透明于流經(jīng)管線化階段102-105的微指令流程,此運(yùn)行方式確保數(shù)據(jù)實(shí)體的快取副本與系統(tǒng)內(nèi)存108是同步且一致的。
MESI(修改,獨(dú)占,共享,無效)(modified,exclusive,shared,invalid)是個(gè)普遍使用的協(xié)議,此協(xié)議用以在一系統(tǒng)配置的內(nèi)存108的共享區(qū)域內(nèi)確保其高速緩存項(xiàng)目的一致性。雖然并未在圖1中描述,但是為了使用同一數(shù)據(jù)運(yùn)算的目的,在一計(jì)算機(jī)系統(tǒng)配置中的其它組件(未顯示)是可以共享內(nèi)存108的一些區(qū)域。舉例說,視頻卡可以與微處理器100共享內(nèi)存108的一個(gè)區(qū)域,以便在存取微處理器100所產(chǎn)生的監(jiān)視器顯示數(shù)據(jù)。另一例子則是在系統(tǒng)總線110上的多重組件可以由從數(shù)據(jù)存儲器108中的共享區(qū)域的數(shù)據(jù)讀取及數(shù)據(jù)寫入來彼此聯(lián)絡(luò)。架構(gòu)性研究的詳細(xì)敘述以提供使用MESI協(xié)議的動機(jī)并不在本發(fā)明的應(yīng)用領(lǐng)域,此處只需了解MESI在確定系統(tǒng)內(nèi)存108與區(qū)域(local)高速緩存結(jié)構(gòu)107之間數(shù)據(jù)的一致性的普遍應(yīng)用。
因?yàn)橛蓛?nèi)存總線110的操作需要數(shù)以百計(jì)的時(shí)鐘周期才能完成,所以數(shù)據(jù)被以包含數(shù)個(gè)字節(jié)的區(qū)段形態(tài)在數(shù)據(jù)高速緩存107中移進(jìn)及移出。這些區(qū)段稱為高速緩存管線。雖然高速緩存管線行寬(換言之,高速緩存管線的字節(jié)大小)會因不同的架構(gòu)而改變,現(xiàn)在的系統(tǒng)架構(gòu)非常常見的有32-字節(jié)行,或64-字節(jié)行,或甚至128-字節(jié)行。
即使是最有效率的高速緩存結(jié)構(gòu)107也會發(fā)生延遲,在從內(nèi)存108,由內(nèi)存總線110,到高速緩存107的進(jìn)行數(shù)據(jù)轉(zhuǎn)移,不可避免的會有所延遲。但是在提供一高速緩存管線給高速緩存107之后,其隨后的對該高速緩存管線內(nèi)的數(shù)據(jù)實(shí)體的存取即不會發(fā)生重大的延遲,因?yàn)楦咚倬彺?07及其高速緩存總線109的速度是與微處理器100內(nèi)其它邏輯的速度(例如執(zhí)行邏輯106)相近的。
依照MESI協(xié)議,在區(qū)域數(shù)據(jù)高速緩存107內(nèi)的高速緩存管線可處于下述任意一狀態(tài)修改,獨(dú)占,共享及無效。一修改狀態(tài)的高速緩存管線指在該高速緩存在線執(zhí)行一區(qū)域存儲運(yùn)算后,但是尚未與主存儲器108同步化的高速緩存管線。監(jiān)測來自其它組件(也稱為總線組件)的由其內(nèi)存總線110的內(nèi)存操作是區(qū)域高速緩存107的責(zé)任,因此如果總線組件從一修改狀態(tài)的高速緩存管線請求數(shù)據(jù),則區(qū)域高速緩存107會將該修改過的數(shù)據(jù)送至該請求數(shù)據(jù)的總線組件。此種對總線110的監(jiān)測稱為總線窺視模式(bus snooping)。一獨(dú)占狀態(tài)的高速緩存管線指其區(qū)域高速緩存107可以在該高速緩存在線執(zhí)行存儲運(yùn)算的高速緩存管線。獨(dú)占狀態(tài)暗示其區(qū)域高速緩存107擁有對該高速緩存管線的獨(dú)占所有權(quán);微處理器100因此被許可修改其內(nèi)容。一共享狀態(tài)的高速緩存管線指存在于兩個(gè)或數(shù)個(gè)在總線110上組件的區(qū)域高速緩存107內(nèi)的高速緩存管線。因此,任意一組件均可從共享的高速緩存管線讀取數(shù)據(jù),但均不被許可去修改其內(nèi)容。為能在共享的高速緩存在線修改數(shù)據(jù)(換言之,執(zhí)行存儲運(yùn)算),在修改其內(nèi)容之前,組件100需先由內(nèi)存總線110實(shí)施適當(dāng)?shù)牟僮饕匀〉迷摳咚倬彺婀芫€的獨(dú)占所有權(quán)(換言之,讀取處于獨(dú)占MESI狀態(tài)的高速緩存管線到其區(qū)域高速緩存107)。一旦取得該高速緩存管線的獨(dú)占所有權(quán),即可執(zhí)行存儲運(yùn)算,并且將該高速緩存管線狀態(tài)變更為修改狀態(tài)。在公布存儲運(yùn)算之前,首先請求高速緩存管線的獨(dú)占所有權(quán)可以保證數(shù)據(jù)的一致性,因?yàn)樵谌我庖粫r(shí)間點(diǎn),均只有一個(gè)組件100可以修改其高速緩存管線的內(nèi)容。當(dāng)區(qū)域高速緩存107檢測到(由窺視模式)由內(nèi)存總線110至其高速緩存管線的寫入操作,或是當(dāng)另一組件由內(nèi)存總線110發(fā)出總線操作以取得該高速緩存管線的獨(dú)占所有權(quán)時(shí),該高速緩存管線狀態(tài)即變更為無效狀態(tài)。將一高速緩存管線標(biāo)示為無效表示其內(nèi)的數(shù)據(jù)與內(nèi)存108不一致而無法被讀取或?qū)懭搿?br> 因?yàn)橐桓咚倬彺?07的運(yùn)行與微處理器管線中的指令流程平行,在程序流程120中,設(shè)計(jì)者需在數(shù)據(jù)的存取被請求之前,先提供預(yù)取宏指令122加載該數(shù)據(jù)到一高速緩存107,因此可以克服數(shù)據(jù)必須起始的從內(nèi)存108提取至高速緩存107所導(dǎo)致的延遲的缺點(diǎn)。在程序流程120中通常有一預(yù)取指令122命令其區(qū)域高速緩存107從內(nèi)存108加載一高速緩存管線,而此預(yù)取指令122與隨后指令的執(zhí)行是平行的,因此當(dāng)程序流程120的指令123要從該高速緩存管線存取數(shù)據(jù)的時(shí)候,該高速緩存管線已經(jīng)存儲在其高速緩存107中。在圖1的例子中,一預(yù)取指令122,PREFETCHTO[EAX],命令由寄存器EAX的內(nèi)容所定位的高速緩存管線被加載到高速緩存107,使得其內(nèi)容可被隨后的數(shù)據(jù)存取指令123,MOV EBX,[EAX],在數(shù)據(jù)流120中被執(zhí)行時(shí)所使用,此數(shù)據(jù)存取指令123命令微處理器100從由寄存器EAX指定的地址讀取數(shù)據(jù),并且將其移至寄存器EBX。因?yàn)閤86指令已被廣泛的認(rèn)知,傳統(tǒng)的前述數(shù)據(jù)流120內(nèi)的預(yù)取指令122及數(shù)據(jù)存取指令123的描述是根據(jù)x86的指令集架構(gòu)。但是熟悉此項(xiàng)技術(shù)人將發(fā)現(xiàn),在許多其它的指令集架構(gòu)也提供預(yù)取指令122以命令微處理器100從內(nèi)存108讀取一高速緩存管線至一區(qū)域高速緩存107,使得隨后的指令123從該高速緩存管線執(zhí)行一指定的數(shù)據(jù)讀取運(yùn)算不會發(fā)生延遲。如果預(yù)取指令是很明智的置于數(shù)據(jù)流120內(nèi),則可以有效率的克服因?yàn)樵诟咚倬彺?07的起始存取數(shù)據(jù)所造成的延遲,因此顯著的改進(jìn)程序的執(zhí)行速度。當(dāng)完成預(yù)取運(yùn)算的一由內(nèi)存總線110的操作后,其所請求的高速緩存管線不是獨(dú)占狀態(tài)(若是該區(qū)域高速緩存107擁有該高速緩存管線的唯一高速緩存副本時(shí)),即是以共存狀態(tài)(若是其它組件也擁有該高速緩存管線的高速緩存副本時(shí))存在于高速緩存107內(nèi)。不論其在那一狀態(tài),在該高速緩存管線內(nèi)的數(shù)據(jù)實(shí)體是可被立即讀取存取的。但是如前述所指明,為將數(shù)據(jù)寫入到一高速緩存管線(換言之,執(zhí)行一存儲運(yùn)算),需要擁有該高速緩存管線的獨(dú)占所有權(quán)。因此,如果該預(yù)取運(yùn)算導(dǎo)致高速緩存管線處于獨(dú)占狀態(tài),則一待決存儲即可立刻對此高速緩存管線公布。但是若該來自總線110的高速緩存管線是共享狀態(tài),則一待決的存儲必須被暫停,以等待該高速緩存單元107由總線110發(fā)出操作以取得該高速緩存管線的獨(dú)占所有權(quán)。在該高速緩存管線在獨(dú)占狀態(tài)下被送至高速緩存107之后,則該待決的存儲即可被公布。
圖2為一方框圖200,用以描述在圖1的微處理器內(nèi)執(zhí)行預(yù)取運(yùn)算的一接口至內(nèi)存的高速緩存單元。該方框圖200顯示在微處理器201內(nèi)被應(yīng)用為執(zhí)行預(yù)取運(yùn)算的邏輯。該微處理器201內(nèi)有一轉(zhuǎn)譯器210以接受一宏指令流程202并將其轉(zhuǎn)譯成對應(yīng)的微指令211。用以命令對內(nèi)存242作數(shù)據(jù)加載及存儲運(yùn)算的微指令211隨后即被送到一高速緩存單元220。該高速緩存單元220包括記錄邏輯221及一數(shù)據(jù)高速緩存222。該記錄邏輯221連接至一總線單元230。該總線單元230連接到一系統(tǒng)內(nèi)存總線240,該系統(tǒng)內(nèi)存總線并且與系統(tǒng)內(nèi)存242及其它總線組件241連接。
宏指令的示范流程202說明如何指定一預(yù)取運(yùn)算及如何可在此預(yù)取的數(shù)據(jù)上執(zhí)行隨后的讀取與存儲運(yùn)算。一關(guān)于此運(yùn)算序列在桌上型計(jì)算機(jī)上的常見實(shí)例是內(nèi)存內(nèi)計(jì)數(shù)器的讀取及增加。一序列的預(yù)取,讀取,及存儲運(yùn)算需要既可以在高速緩存管線內(nèi)讀取數(shù)據(jù),也可以在高速緩存管線內(nèi)修改數(shù)據(jù)。因此,示范流程的第一個(gè)宏指令202,PREFETCH[EAX],命令微處理器201去預(yù)取一地址對應(yīng)于寄存器EAX內(nèi)容的高速緩存管線。第二個(gè)宏指令202,MOV EBX,[EAX],命令微處理器201去讀取一地址為寄存器EAX所指定的內(nèi)存位置的內(nèi)容,并將該內(nèi)容寫入寄存器EBX。第三個(gè)宏指令202,INC EBX,命令微處理器201增加寄存器EBX的內(nèi)容。第四個(gè)宏指令202,MOV[EAX],EBX,命令微處理器201在對應(yīng)于寄存器EAX內(nèi)容的內(nèi)存位置上存儲該寄存器EBX的內(nèi)容。上述詳細(xì)的預(yù)取,讀取,及存儲運(yùn)算僅僅是增加一個(gè)數(shù)值到地址由寄存器EAX所指定的內(nèi)存。值得注意的是為了要有效率的利用該預(yù)取指令202,必須在第二個(gè)宏指令202,MOV EBX,[EAX]之前提供充分的該預(yù)取指令202,使得因?yàn)榧虞d由EAX的內(nèi)容所指定的高速緩存管線所造成的延遲,可以被中介的宏指令202的平行執(zhí)行所吸收。但是,為了簡明起見,該中介的宏指令202并未在方框圖200中敘述。
轉(zhuǎn)譯器210將該預(yù)取宏指令202轉(zhuǎn)譯成一對應(yīng)的預(yù)取微指令211,PREFETCH[EAX],然后送到高速緩存單元220。記錄邏輯221詢問數(shù)據(jù)高速緩存222以決定所請求的高速緩存管線是否已存在并且有效(換言之,即非處于無效狀態(tài))在數(shù)據(jù)高速緩存222內(nèi)。若答案為否,則該記錄邏輯221命令其總線單元230,由系統(tǒng)內(nèi)存總線240,發(fā)出一操作請求以從內(nèi)存242取得所請求的高速緩存管線。若其它的總線組件241均無該被請求的高速緩存管線的副本時(shí),則該記錄邏輯221將被請求的高速緩存管線以獨(dú)占狀態(tài)送到數(shù)據(jù)高速緩存222。若一或數(shù)個(gè)總線組件241擁有該被請求的高速緩存管線的區(qū)域副本時(shí),則該記錄邏輯221即將該高速緩存管線以共享狀態(tài)寫入到數(shù)據(jù)高速緩存222。在前述任意一狀態(tài),該被請求的高速緩存管線均存儲在高速緩存222內(nèi)以備隨后的存取運(yùn)算使用。
轉(zhuǎn)譯器210將第二個(gè)宏指令202轉(zhuǎn)譯成一加載微指令211,LDEBX,[EAX],命令微處理器加載地址為寄存器EAX所指定的內(nèi)存的內(nèi)容到寄存器EBX。如圖1所述的,微處理器內(nèi)的執(zhí)行邏輯(未顯示)從高速緩存單元220請求該內(nèi)存地址的內(nèi)容。因?yàn)樵摳咚倬彺婀芫€所有的內(nèi)容,由于預(yù)取運(yùn)算的結(jié)果已經(jīng)存在于該數(shù)據(jù)高速緩存222中,所以是立即可用并且加載微指令211的執(zhí)行不會有任何延遲。
第三個(gè)宏指令202被轉(zhuǎn)譯成一對應(yīng)的增加微指令211,INC EBX,此指令命令執(zhí)行邏輯將寄存器EBX的內(nèi)容增加。因?yàn)椴恍枰碌臄?shù)據(jù),所以該加載微指令211不會被送到高速緩存單元220。
最后,在流程中的第四個(gè)宏指令202被轉(zhuǎn)譯成一存儲微指令211,ST[EAX],EBX,此指令命令執(zhí)行邏輯去執(zhí)行一數(shù)據(jù)存儲運(yùn)算,以將寄存器EBX的內(nèi)容寫入到地址由寄存器EAX內(nèi)容所指定的內(nèi)存位置。該存儲微指令211從而以待決的存儲運(yùn)算形式被送到其高速緩存單元220。于是,記錄邏輯221檢測到以待決的存儲運(yùn)算為目標(biāo)的高速緩存管線存在于該數(shù)據(jù)高速緩存222。若該高速緩存管線是處于獨(dú)占狀態(tài),則此待決的存儲可立刻被公布并將該高速緩存管線的狀態(tài)變更為修改狀態(tài)。另一方面,若該高速緩存管線是處于共享狀態(tài),則該高速緩存單元220確定一停滯信號223以中斷該微指令211在微處理器201的管線階段中的進(jìn)行,同時(shí)該記錄邏輯221則命令其總線單元230,由其內(nèi)存總線240,執(zhí)行操作以取得該高速緩存管線的獨(dú)占所有權(quán)。一旦取得獨(dú)占所有權(quán),則可準(zhǔn)許待決的存儲對該高速緩存管線公布其數(shù)據(jù),并且終止停滯信號,從而繼續(xù)程序的執(zhí)行。
現(xiàn)在考慮一種運(yùn)算形式只是單純的寫入數(shù)據(jù)到內(nèi)存中而不需先讀取數(shù)據(jù),或是一種運(yùn)算形式是會先讀取數(shù)據(jù),但是此形式確定預(yù)期有一存儲運(yùn)算會隨后被公布。在這些案例中,只有對那些必須先讀取數(shù)據(jù)的情況執(zhí)行的預(yù)取指令才可以將程序延遲減到最小。并且在這種案例中,若預(yù)取的結(jié)果使所請求的高速緩存管線處于獨(dú)占狀態(tài),則可排除因存儲運(yùn)算所導(dǎo)致的程序延遲。但是若預(yù)取的結(jié)果使所請求的高速緩存管線處于共享狀態(tài),則因存儲運(yùn)算所導(dǎo)致的程序延遲將不可避免。這是個(gè)問題,因?yàn)楫?dāng)今的指令集架構(gòu)并未提供一方法以命令微處理器201去獨(dú)占的預(yù)取一高速緩存管線到數(shù)據(jù)高速緩存222。雖然響應(yīng)一預(yù)取運(yùn)算的高速緩存管線可以是獨(dú)占的,但是此狀態(tài)并不能保證。這是因?yàn)轭A(yù)取宏指令架構(gòu)化的推定其預(yù)取的數(shù)據(jù)是會被讀取,并且其結(jié)果的由系統(tǒng)總線的操作請求該高速緩存管線被提取,不論其是否處于共享狀態(tài)。舉例來說,在x86架構(gòu)中,一x86預(yù)取指令的執(zhí)行結(jié)果的由總線240發(fā)出的操作是一數(shù)據(jù)讀取運(yùn)算。該數(shù)據(jù)讀取運(yùn)算請求一高速緩存管線的副本,并不管其是處于何種狀態(tài)。
圖3A、3B顯示一時(shí)序圖,用以描述由圖1及圖2所示的微處理器201所發(fā)出的兩個(gè)可能的總線操作集301,302,此總線操作由內(nèi)存總線240發(fā)出以執(zhí)行一預(yù)取與隨后的存儲運(yùn)算。此兩操作集301,302包括在微處理器201內(nèi)的從總線單元230到內(nèi)存總線240的請求操作303,與同樣在微處理器201內(nèi)從內(nèi)存總線240回到總線單元230的響應(yīng)操作304。操作集301描述那些當(dāng)回應(yīng)一預(yù)取運(yùn)算的高速緩存管線是獨(dú)占狀態(tài)時(shí)所執(zhí)行的操作303-304。操作集302描述那些當(dāng)回應(yīng)一預(yù)取運(yùn)算的高速緩存管線是共享狀態(tài)時(shí)所執(zhí)行的操作303-304。如同圖2所述,當(dāng)執(zhí)行一預(yù)取指令時(shí),記錄邏輯221命令其總線單元230對其內(nèi)存總線240發(fā)出一數(shù)據(jù)讀取請求303,DATA READ[EAX],請求被寄存器EAX所指定的高速緩存管線被送到其區(qū)域高速緩存222。該數(shù)據(jù)讀取請求303在操作集301是在時(shí)間點(diǎn)A發(fā)出,在操作集302則是在時(shí)間點(diǎn)D發(fā)出。該內(nèi)存總線240于是響應(yīng)發(fā)出一包括該所請求的高速緩存管線的數(shù)據(jù)響應(yīng)請求304回到總線單元230。若該高速緩存管線是在獨(dú)占狀態(tài),則在操作集301的數(shù)據(jù)響應(yīng)請求304,DATA RESP[EAX].E,在時(shí)間點(diǎn)B被送回到總線單元230。若該高速緩存管線是在共享狀態(tài),則在操作集302的數(shù)據(jù)響應(yīng)請求304,DATA RESP[EAX].S,在時(shí)間點(diǎn)E被送回到總線單元230。在這時(shí),數(shù)據(jù)可從高速緩存222讀取而不會導(dǎo)致總線操作延遲。
當(dāng)一隨后的存儲運(yùn)算面對上述操作提供的高速緩存管線時(shí),操作集302的情形說明為了能公布該存儲運(yùn)算所必然發(fā)生的操作303,304。在操作集301中,因?yàn)楦咚倬彺婀芫€起始即是獨(dú)占狀態(tài),要公布該存儲運(yùn)算只須在時(shí)間點(diǎn)C發(fā)出一數(shù)據(jù)寫入操作303,DATA WRITE[EAX],由總線240將數(shù)據(jù)寫入到內(nèi)存242。但是如操作集302所示,在時(shí)間點(diǎn)H的數(shù)據(jù)寫入操作303可以被發(fā)出之前,必須先執(zhí)行時(shí)間點(diǎn)F及G的操作303及304,以便能將高速緩存管線的所有權(quán)狀態(tài)由共享提升到獨(dú)占。在時(shí)間點(diǎn)F,總線單元230發(fā)出一數(shù)據(jù)讀取與無效請求303,DATA READ/INV[EAX],用以請求該共享狀態(tài)高速緩存管線的獨(dú)占所有權(quán)。在數(shù)百時(shí)鐘之后的時(shí)間點(diǎn)G,從總線240接收到一響應(yīng)請求304,DATA RESP[EAX].E,以將該高速緩存管線的狀態(tài)升級到獨(dú)占狀態(tài)。在時(shí)間點(diǎn)G接收到響應(yīng)請求304之后,然后在時(shí)間點(diǎn)H該數(shù)據(jù)寫入操作303始可對總線240公布。
值得注意的是圖3中的操作集301,302以一般性的方式表示,因?yàn)椴煌奈⑻幚砥骷軜?gòu)應(yīng)用不同的語義來說明總線操作303,304。除此之外,值得注意為了簡明起見,在圖3的時(shí)序圖中已經(jīng)省略了先取得對數(shù)據(jù)總線240存取(例如BUS REQUEST,BUS GRANT等等)的所有的操作。
當(dāng)今的數(shù)據(jù)預(yù)取指令受限于其并不支持確定預(yù)期的存儲運(yùn)算,因此無法因?yàn)槊鞔_意圖進(jìn)行對該高速緩存管線執(zhí)行一存儲運(yùn)算而有利的預(yù)取一高速緩存管線到高速緩存222。一意圖進(jìn)行存儲運(yùn)算的預(yù)取,不論該高速緩存管線內(nèi)容的讀取是否先于對該高速緩存管線公布一存儲運(yùn)算。若觀察操作集302中的操作303,304,很明顯的預(yù)取一處于共享狀態(tài)的高速緩存管線,只有在該高速緩存管線的讀取會早于對其公布一存儲運(yùn)算的情況下才有幫助。若是一存儲運(yùn)算將對該共享的高速緩存管線公布,則程序的執(zhí)行必須被延遲以便將該高速緩存管線的狀態(tài)從共享提升到獨(dú)占。
程序員雖然了解當(dāng)今預(yù)取指令的限制,然而仍應(yīng)用它們?yōu)樽饕鈭D進(jìn)行存儲情況下的預(yù)取,因?yàn)榇祟A(yù)取指令可能(有時(shí)而非時(shí)常)在響應(yīng)一數(shù)據(jù)讀取請求時(shí),可取得一高速緩存管線的獨(dú)占所有權(quán),僅只因?yàn)闊o其它總線組件擁有該請求的高速緩存管線的副本。但是,更理想的情況則是避免預(yù)取一處于共享狀態(tài)的高速緩存管線,而是命令一微處理器201去預(yù)取一處于獨(dú)占狀態(tài)的高速緩存管線。本發(fā)明指向一種裝置與方法,用以預(yù)取一處于獨(dú)占MESI狀態(tài)的一單一高速緩存管線與一多重高速緩存管線,并且隨意的初始化該預(yù)取的高速緩存管線成一指定數(shù)值。本發(fā)明現(xiàn)將參照圖4至圖13進(jìn)行討論。
圖4為依據(jù)本發(fā)明以顯示一擴(kuò)展預(yù)取指令400的方框圖。該擴(kuò)展預(yù)取指令包括一選用的多重前置碼實(shí)體401,其后為一預(yù)取運(yùn)算碼402,其后則為一擴(kuò)展地址指定元403。在一具體實(shí)施例中,每一個(gè)前置碼及擴(kuò)展地址實(shí)體401,403都是8位大小,而預(yù)取運(yùn)算碼實(shí)體402則為一或二個(gè)字節(jié)大小,除非本文中另行修訂,所有的實(shí)體401-403均與x86的指令集架構(gòu)一致。
在運(yùn)行上,該預(yù)取運(yùn)算碼402為一指定運(yùn)算碼數(shù)值,用以命令一相符的微處理器執(zhí)行一預(yù)取運(yùn)算。在一x86的具體實(shí)施例中,其運(yùn)算碼實(shí)體401的指定數(shù)值為OF18H。一個(gè)或數(shù)個(gè)選用的前置碼實(shí)體401可用來命令一相符的微處理器執(zhí)行某些類型的附加運(yùn)算,例如由一計(jì)數(shù)器界定次數(shù)的重復(fù)運(yùn)算(例如在x86架構(gòu)中的REP前置碼),迫使執(zhí)行一原子運(yùn)算(例如在x86架構(gòu)中的LOCK前置碼)等等。擴(kuò)展地址指定元403是用以指定該特定類型的預(yù)取運(yùn)算的執(zhí)行。在一x86的具體實(shí)施例中,所熟知的擴(kuò)展地址指定元403是ModR/M字節(jié)403。
依據(jù)本發(fā)明,當(dāng)微處理器檢測到一預(yù)取宏指令400時(shí),依照由擴(kuò)展地址指定元403內(nèi)容所指定的指示數(shù)值,該微處理器被命令去執(zhí)行從內(nèi)存預(yù)取數(shù)據(jù)到高速緩存,其實(shí)例將在圖五中進(jìn)行討論。
圖5一表格500,其為圖4的擴(kuò)展預(yù)取指令內(nèi)的擴(kuò)展地址指定元字段403的一具體實(shí)施例,解說依據(jù)本發(fā)明該擴(kuò)展地址指定元字段403如何編碼以命令微處理器執(zhí)行預(yù)取一處于獨(dú)占MESI狀態(tài)的高速緩存管線。為了說明本發(fā)明,此處使用符合x86架構(gòu)的ModR/M位字段,但是,可以預(yù)期的是本發(fā)明包含任何提供將一預(yù)取-獨(dú)占指示編碼到指令400的工具的架構(gòu)。雖然圖5的例子指向?qū)㈩A(yù)取-獨(dú)占(或是意圖進(jìn)行存儲的預(yù)取)指示編碼到一擴(kuò)展地址指定元403,熟悉此項(xiàng)技術(shù)人員將發(fā)現(xiàn)該預(yù)取指示也可以被編碼成一在運(yùn)算碼字段401內(nèi)的一指定運(yùn)算碼數(shù)值。
在此編碼實(shí)例中,一x86 ModR/M字節(jié)用該MModR/M字節(jié)的53位編碼一由預(yù)取運(yùn)算碼402所指定形式的預(yù)取運(yùn)算。當(dāng)今,該x86預(yù)取指令使用數(shù)值000,001,010,及011以規(guī)定意圖進(jìn)行讀取運(yùn)算的預(yù)取指示。所有這四個(gè)數(shù)值000-011為命令一x86微處理器,在不同程度的接近度下,預(yù)取數(shù)據(jù)到其高速緩存。舉例來說,一個(gè)TO指示(換言之,數(shù)值001),命令微處理器預(yù)取一高速緩存管線到高速緩存層級體的所有層級,而一NTA指示命令微處理器預(yù)取一高速緩存管線到一非暫時(shí)性高速緩存結(jié)構(gòu),并且進(jìn)入一接近處理器的位置,同時(shí)將高速緩存污染減至最低程度。但是x86預(yù)取指示000-011編碼的普遍特征是一由總線發(fā)出的數(shù)據(jù)讀取請求以請求一高速緩存管線的副本,并不會在乎該高速緩存管線是處于何種MESI狀態(tài)。本發(fā)明的一具體實(shí)施例將一額外的指示編碼進(jìn)擴(kuò)展地址指定元中,用以命令微處理器依據(jù)本發(fā)明利用一獨(dú)占(.S)指示去預(yù)取一指定的高速緩存管線。圖5顯示一用x86 ModR/M字節(jié)的53位編碼成數(shù)值100的預(yù)取-獨(dú)占指示。當(dāng)該prefetch.s指示依據(jù)本發(fā)明編碼到一預(yù)取指令時(shí),則一相符的微處理器會被檢測到由一內(nèi)存總線發(fā)出操作以預(yù)取處于獨(dú)占MESI狀態(tài)的數(shù)據(jù)。在一x86的具體實(shí)施例中,如前述圖3B所示,其響應(yīng)于預(yù)取指令400的prefetch.s指示而發(fā)出的特定操作是一數(shù)據(jù)讀取與無效操作。在圖3B的例子中,該數(shù)據(jù)讀取與無效操作是用以將高速緩存管線從共享狀態(tài)提升至獨(dú)占狀態(tài)。
在x86指令集架構(gòu)中,將53位編碼為100,在此之前是被宣告為非法的,就如同表格500中5.3位編碼為101-111所示。一非法的ModR/M字節(jié)編碼造成一異常。但是依據(jù)本發(fā)明,在一x86的具體實(shí)施例中,該改善一預(yù)取-獨(dú)占指示的額外編碼是合法的,并且將導(dǎo)致前述的總線操作預(yù)取一處于獨(dú)占狀態(tài)的高速緩存管線。
眾所周知,因?yàn)楦咚倬彺娼Y(jié)構(gòu)與內(nèi)存間的互動是已被從于微處理器管線的指令流程中移除,所以預(yù)取指令400只能請求的預(yù)取依據(jù)所提供的指示來執(zhí)行。若一高速緩存管線現(xiàn)在并不被內(nèi)存存取所占用時(shí),則可執(zhí)行預(yù)取運(yùn)算。但若一高速緩存管線正被占用,則預(yù)取運(yùn)算須被延遲。
如圖6為方框圖,詳述依據(jù)本發(fā)明的執(zhí)行一意圖進(jìn)行存儲運(yùn)算的預(yù)取的微處理器600。該微處理器600有三個(gè)值得注意的階段范疇提取,轉(zhuǎn)譯,及執(zhí)行。在提取階段的提取邏輯601用以從一指令內(nèi)存603中提取宏指令到一指令高速緩存602。該被提取的宏指令然后由一指令隊(duì)列604被送到轉(zhuǎn)譯階段。該轉(zhuǎn)譯階段的轉(zhuǎn)譯邏輯606連接至一微指令隊(duì)列608。該轉(zhuǎn)譯邏輯606包括擴(kuò)展轉(zhuǎn)譯邏輯607。執(zhí)行階段的執(zhí)行邏輯609包括一擴(kuò)展高速緩存單元610。該擴(kuò)展高速緩存單元610有一數(shù)據(jù)高速緩存611,此數(shù)據(jù)高速緩存611連接至擴(kuò)展記錄邏輯612。該擴(kuò)展記錄邏輯612連接至一總線單元613。該總線單元613連接至一數(shù)據(jù)存儲器614。
在運(yùn)行上,提取邏輯601依據(jù)本發(fā)明從指令內(nèi)存603中提取格式化的指令到指令高速緩存602,然后將此宏指令依執(zhí)行順序送到指令隊(duì)列604。該宏指令被從指令隊(duì)列604依序的提取后,被送到轉(zhuǎn)譯邏輯606。該轉(zhuǎn)譯邏輯606將每一送到此處的宏指令轉(zhuǎn)譯成對應(yīng)的微指令序列,該微指令序列用以命令微處理器600執(zhí)行由該宏指令所指定的運(yùn)算。擴(kuò)展轉(zhuǎn)譯邏輯607則依據(jù)本發(fā)明去檢測擴(kuò)展預(yù)取宏指令,并且為將其轉(zhuǎn)譯成對應(yīng)的擴(kuò)展前置碼及地址指定元實(shí)體作準(zhǔn)備。在一x86的具體實(shí)施例中,該擴(kuò)展轉(zhuǎn)譯邏輯607被配置成檢測一x86預(yù)取指令,并且依據(jù)圖4及圖5所述的常規(guī)將該x86預(yù)取指令的ModR/M字節(jié)轉(zhuǎn)譯成一預(yù)取微指令序列,該序列用以命令微處理器600去獨(dú)占的預(yù)取一高速緩存管線到數(shù)據(jù)高速緩存611。
該微指令然后從微指令隊(duì)列608傳送到其執(zhí)行邏輯609,在該執(zhí)行邏輯中的擴(kuò)展高速緩存單元610則依據(jù)本發(fā)明被配置為執(zhí)行一獨(dú)占的預(yù)取運(yùn)算。當(dāng)該執(zhí)行邏輯609執(zhí)行一預(yù)取微指令序列時(shí),其擴(kuò)展記錄邏輯612命令總線單元613,由內(nèi)存總線615,發(fā)出操作到內(nèi)存614請求在獨(dú)占的MESI狀態(tài)下預(yù)取一指定的高速緩存管線到數(shù)據(jù)高速緩存611內(nèi)。
熟悉此項(xiàng)技術(shù)人員將發(fā)現(xiàn)圖6所描述的微處理器600只是一個(gè)依據(jù)本發(fā)明所簡化的后的一管線化微處理器600的代表。事實(shí)上,如前所述,當(dāng)今的管線化微處理器包含許多管線階段。但是這些階段均可被概括的歸納成如圖6方框圖所示的三個(gè)階段群組(stage groups),因此圖6方框圖可視為實(shí)現(xiàn)上述本發(fā)明的具體化所需的必要成分的說明。為了簡明起見,凡微處理器600中無關(guān)于本發(fā)明的成分均不在此描述。
圖7為一方框圖700,用以描述在圖6的微處理器內(nèi)執(zhí)行一預(yù)取與存儲運(yùn)算的一接口至內(nèi)存的高速緩存單元。該方框圖700顯示在微處理器600內(nèi)被應(yīng)用為執(zhí)行預(yù)取運(yùn)算的邏輯。微處理器701的擴(kuò)展轉(zhuǎn)譯器710接收宏指令流702,并將該宏指令流702轉(zhuǎn)譯成對應(yīng)的微指令711。微指令711在命令對內(nèi)存742做數(shù)據(jù)加載與存儲運(yùn)算之后,隨后即被送到一擴(kuò)展高速緩存單元720。該擴(kuò)展高速緩存單元720包括擴(kuò)展記錄邏輯721及一數(shù)據(jù)高速緩存722。該擴(kuò)展記錄邏輯721連接至一總線單元730。該總線單元730接口至一統(tǒng)內(nèi)存總線740,此系統(tǒng)內(nèi)存總線740又與數(shù)據(jù)存儲器742及其它總線組件741連接。
宏指令的示范流程702說明如何指定一預(yù)取指令及如何可在此預(yù)取的數(shù)據(jù)上執(zhí)行隨后的讀取與存儲運(yùn)算。如同圖2敘述,一有關(guān)于此運(yùn)算序列的桌上型計(jì)算機(jī)的常見實(shí)例是內(nèi)存內(nèi)計(jì)數(shù)器的讀取及增加。但是與圖1及圖2的微處理器201不同的是,當(dāng)依據(jù)本發(fā)明的一微處理器701被命令去獨(dú)占的預(yù)取一高速緩存管線時(shí),不論此預(yù)取的數(shù)據(jù)是否會被中介的指令讀取,均可有效率的消除會關(guān)連到隨后的存儲運(yùn)算的總線操作延遲。在圖7的宏指令的示范流702中預(yù)期一數(shù)據(jù)讀取運(yùn)算發(fā)生早于在預(yù)取的數(shù)據(jù)上執(zhí)行一存儲運(yùn)算,但是熟悉此項(xiàng)技術(shù)人員將發(fā)現(xiàn),沒有此一中介的數(shù)據(jù)讀取運(yùn)算,數(shù)據(jù)也可以被獨(dú)占的預(yù)取且隨后的被寫入。
因此,示范流程的一擴(kuò)展預(yù)取指令702,PREFETCH.S[EAX],命令微處理器701去獨(dú)占的預(yù)取其地址對應(yīng)于寄存器EAX內(nèi)容的高速緩存管線。第二個(gè)宏指令702,MOV EBX,[EAX],命令微處理器701去讀取一地址為寄存器EAX所指定的內(nèi)存位置的內(nèi)容,并將該內(nèi)容寫入寄存器EBX。第三個(gè)宏指令,INC EBX,命令微處理器701增加寄存器EBX的內(nèi)容。第四個(gè)宏指令,MOV EAX,[EBX],命令微處理器701在對應(yīng)于寄存器EAX內(nèi)容的內(nèi)存位置上存儲寄存器EBX的內(nèi)容。值得注意的是為了要有效率的利用獨(dú)占預(yù)取指令702,PREFETCH.S[EAX],必須在第二個(gè)宏指令702,MOVEBX,[EAX]之前充分執(zhí)行獨(dú)占預(yù)取指令702,使得因?yàn)榧虞d由EAX的內(nèi)容所指定的高速緩存管線所造成的延遲,可以被中介的宏指令702的平行執(zhí)行所吸收。但是,為了簡明起見,該中介的宏指令202的執(zhí)行并未在方框圖700中敘述。
轉(zhuǎn)譯器710將該擴(kuò)展預(yù)取宏指令702轉(zhuǎn)譯成對應(yīng)的獨(dú)占預(yù)取微指令711,PREFETCH.S[EAX],然后將此微指令送到擴(kuò)展高速緩存單元720。該擴(kuò)展記錄邏輯721詢問數(shù)據(jù)高速緩存722以決定所請求的高速緩存管線是否已存在并且有效(換言之,即非處于無效狀態(tài))在其數(shù)據(jù)高速緩存722內(nèi)。若答案為否,則該擴(kuò)展記錄邏輯721命令總線單元730,由系統(tǒng)內(nèi)存總線740,發(fā)出操作以從內(nèi)存742取得該所請求的高速緩存管線。若其它的總線組件741均無該所請求的存高速緩存管線的副本,則擴(kuò)展記錄邏輯721即將所請求的高速緩存管線以獨(dú)占狀態(tài)送到其數(shù)據(jù)高速緩存722。若有一總線組件741擁有該請求的處于獨(dú)占狀態(tài)的高速緩存管線的區(qū)域副本時(shí),則依照所應(yīng)用的特定總線操作協(xié)議,此協(xié)議窺視在總線740上的操作以請求該高速緩存管線并將其區(qū)域副本變更成無效。若該區(qū)域副本已被修改,則其總線組件將修改的數(shù)據(jù)寫入到其總線740,使得微處理器701可以取得該高速緩存管線的獨(dú)占所有權(quán)。若有數(shù)個(gè)總線組件共享此高速緩存管線,則這些總線組件均將其區(qū)域副本變更成無效,使得該高速緩存高速緩存管線可以在獨(dú)占狀態(tài)下被送到微處理器701。在上述任意一情況,該所請求的高速緩存管線均可在在獨(dú)占狀態(tài)下被送到高速緩存722,并且可被隨后的存儲運(yùn)算所使用。
轉(zhuǎn)譯器710將第二個(gè)宏指令702轉(zhuǎn)譯成一加載微指令711,LDEBX,[EAX],此微指令命令微處理器加載地址為寄存器EAX所指定的內(nèi)存的內(nèi)容到寄存器EBX。因?yàn)橐鈭D進(jìn)行存儲運(yùn)算的預(yù)取的結(jié)果,該高速緩存管線所有的內(nèi)容已經(jīng)存在于該數(shù)據(jù)高速緩存722中,所以該高速緩存管線立即可用,并且使得該加載微指令711的執(zhí)行無任何延遲。
第三個(gè)宏指令702被轉(zhuǎn)譯成一對應(yīng)的增加微指令711,INC EBX,此指令命令執(zhí)行邏輯將寄存器EBX內(nèi)容增加。因?yàn)椴恍枰碌臄?shù)據(jù),所以該加載微指令711不會被送到其擴(kuò)展高速緩存單元720。
最后,在流程中的第四個(gè)宏指令702被轉(zhuǎn)譯成一存儲微指令711,ST[EAX],EBX,此指令命令執(zhí)行邏輯去執(zhí)行一數(shù)據(jù)存儲運(yùn)算,以將寄存器EBX的內(nèi)容寫入到地址由寄存器EAX內(nèi)容所指定的內(nèi)存位置。該存儲微指令711從而以待決的存儲運(yùn)算形式被送到其高速緩存單元720。于是,記錄邏輯721檢測到以待決的存儲運(yùn)算為目標(biāo)的高速緩存管線存在于其數(shù)據(jù)高速緩存722,并且由于獨(dú)占的預(yù)取的結(jié)果,該高速緩存管線是處于獨(dú)占狀態(tài)。因此該存儲可不被延遲的立刻被公布。與圖2的微處理器201不同的是,依據(jù)本發(fā)明的擴(kuò)展高速緩存單元720不需發(fā)出一停滯信號723以公布該待決的存儲,因?yàn)樵撃繕?biāo)高速緩存管線已被獨(dú)占的預(yù)取。
圖8顯示一時(shí)序圖800,用以描述依據(jù)本發(fā)明由圖6及圖7所示的微處理器所發(fā)出的總線操作集801,802,此總線操作由內(nèi)存總線740以執(zhí)行意圖進(jìn)行預(yù)取的存儲運(yùn)算。此二操作集801,802包括在微處理器701內(nèi)的從總線單元730到內(nèi)存總線740的請求操作801,與同樣在在微處理器701內(nèi)的從內(nèi)存總線740回到總線單元730的響應(yīng)操作802。時(shí)序圖800描述當(dāng)一被請求且處于獨(dú)占狀態(tài)的高速緩存管線,為依據(jù)本發(fā)明的預(yù)取-獨(dú)占宏指令所指定的意圖進(jìn)行存儲運(yùn)算的預(yù)取的響應(yīng)時(shí),所執(zhí)行的操作集801,802。根據(jù)上面的敘述,當(dāng)執(zhí)行一預(yù)取-獨(dú)占指令時(shí),擴(kuò)展記錄邏輯721命令其總線單元730對其內(nèi)存總線740發(fā)出一數(shù)據(jù)讀取與無效請求801,DATA READ/INV[EAX],請求將被寄存器EAX所指定的高速緩存管線以獨(dú)占的MESI狀態(tài)送到其區(qū)域高速緩存722。該數(shù)據(jù)讀取與無效請求801是在時(shí)間點(diǎn)A發(fā)出。若所請求的高速緩存管線是處于獨(dú)占的MESI狀態(tài),則在時(shí)間點(diǎn)B,該內(nèi)存總線740響應(yīng)發(fā)出數(shù)據(jù)響應(yīng)請求802,DATA RESP[EAX].E,回到總線單元730。在這時(shí),一存儲運(yùn)算的數(shù)據(jù)可從該高速緩存722讀取或?qū)懭氲皆摳咚倬彺?,而不會?dǎo)致總線操作延遲。
同圖3所示,圖8中的操作集801,802以一般性的方式表示,因?yàn)椴煌奈⑻幚砥骷軜?gòu)應(yīng)用不同的語義來說明總線操作801,802。圖8中描述的操作集801,802大體上依照x86的慣例,但此描述只是意圖進(jìn)行說明本發(fā)明。此慣例并不會限定本發(fā)明只適用于此特定指令集架構(gòu)。除此之外,值得注意的是,為了簡明起見,在時(shí)序圖800中已經(jīng)省略了為先取得對數(shù)據(jù)總線740的存取(例如BUS REQUEST,BUS GRANT等等)的所有的操作。
本發(fā)明不只是考慮獨(dú)占的預(yù)取一單一高速緩存管線,同時(shí)也包含需修改一個(gè)區(qū)段的數(shù)據(jù)的情況。因此,圖9至圖11將具體指向獨(dú)占的預(yù)取一個(gè)區(qū)段的數(shù)據(jù)的討論。
圖9為依據(jù)本發(fā)明用以顯示一擴(kuò)展區(qū)段預(yù)取指令900的方框圖。該擴(kuò)展區(qū)段預(yù)取指令900包括一選用的多重前置碼實(shí)體901,其一為一重復(fù)前置碼901。該前置碼實(shí)體901之后為一預(yù)取運(yùn)算碼902,其后則為一擴(kuò)展地址指定元903。在一具體實(shí)施例中,每一個(gè)前置碼及擴(kuò)展地址實(shí)體901,903都是8位大小,而預(yù)取運(yùn)算碼實(shí)體902則為一或二個(gè)字節(jié)大小,除非本文中另行修訂,所有的實(shí)體901-903均與x86的指令集架構(gòu)一致。在此具體實(shí)施例中,該x86的重復(fù)前置碼(REP)901被用來標(biāo)示一區(qū)段預(yù)取運(yùn)算。
在運(yùn)行上,該預(yù)取運(yùn)算碼902為一特定運(yùn)算碼數(shù)值,此特定運(yùn)算碼數(shù)值用以命令一相符的微處理器執(zhí)行一預(yù)取運(yùn)算。在一x86的具體實(shí)施例中,運(yùn)算碼實(shí)體901的特定數(shù)值為OF18H。擴(kuò)展地址指定元903是用以指定執(zhí)行該特定類型的預(yù)取運(yùn)算的執(zhí)行。在一x86的具體實(shí)施例中,該擴(kuò)展地址指定元903是ModR/M字節(jié)903。
如同圖4所示,依據(jù)本發(fā)明,當(dāng)微處理器檢測到一預(yù)取宏指令900時(shí),該微處理器被命令依據(jù)由擴(kuò)展地址指定元403內(nèi)容所指定的指示數(shù)值,去執(zhí)行從內(nèi)存預(yù)取數(shù)據(jù)到高速緩存。圖5的編碼實(shí)例也適用于描述在區(qū)段擴(kuò)展地址指定元903的前置碼指示的編碼。但是若微處理器在該擴(kuò)展預(yù)取指令內(nèi)檢測到一重復(fù)前置碼901,則微處理器會試圖預(yù)取一指定數(shù)量在獨(dú)占狀態(tài)下的高速緩存管線到其區(qū)域高速緩存內(nèi),而此高速緩存管線的數(shù)量是由微處理器內(nèi)的一架構(gòu)寄存器指定。在一具體實(shí)施例中,高速緩存管線的數(shù)量是由x86兼容的微處理器內(nèi)的寄存器ECX所指定。
如圖10,其為一方框圖1000,用以描述在圖6的微處理器600內(nèi)執(zhí)行區(qū)段預(yù)取與存儲運(yùn)算的一接口至內(nèi)存的高速緩存單元。圖10的微處理器1001內(nèi)的組件的認(rèn)證與運(yùn)算類似于圖7的微處理器701內(nèi)的相似組件,只要將圖7的百位數(shù)圖號7用10來取代即可。為依據(jù)本發(fā)明以改進(jìn)此區(qū)段預(yù)取運(yùn)算,本發(fā)明使用一擴(kuò)展轉(zhuǎn)譯器1010將有一重復(fù)前置碼1002的擴(kuò)展預(yù)取運(yùn)算轉(zhuǎn)譯成微指令序列1011,用以命令執(zhí)行一獨(dú)占區(qū)段預(yù)取運(yùn)算。除此之外,也使用一映像計(jì)數(shù)寄存器1013以加載自架構(gòu)寄存器內(nèi)的1012被預(yù)取的高速緩存管線的數(shù)量計(jì)數(shù)。并且使用擴(kuò)展區(qū)段記錄邏輯(extended block fill logic)1021以命令其總線單元1030請求獨(dú)占的預(yù)取該指定區(qū)段的高速緩存管線,并將之送到其數(shù)據(jù)高速緩存1022。
為初始一獨(dú)占的區(qū)段預(yù)取運(yùn)算,第一個(gè)宏指令1002,MOV ECX,COUNT,用以將架構(gòu)寄存器ECX內(nèi)被獨(dú)占的預(yù)取的區(qū)段內(nèi)的高速緩存管線的數(shù)量計(jì)數(shù)初始化。擴(kuò)展轉(zhuǎn)譯器1010將該第一個(gè)宏指令轉(zhuǎn)譯成加載微指令1011,LDECX,COUNT,此微指令命令微處理器將計(jì)數(shù)(count)加載ECX。當(dāng)該計(jì)數(shù)被加載到ECX后,此計(jì)數(shù)也被透明的復(fù)制到映像計(jì)數(shù)寄存器1013,SHECX。同時(shí),其它的指令1002則可在不干擾到預(yù)取運(yùn)算的計(jì)數(shù)的情況下,修改其架構(gòu)寄存器1012。
在計(jì)數(shù)被初始化之后,該擴(kuò)展轉(zhuǎn)譯器1010轉(zhuǎn)譯一擴(kuò)展區(qū)段預(yù)取指令1002,REP.PREF.S[EAX],此指令命令微處理器1001預(yù)取被ECX所指定數(shù)量的獨(dú)占狀態(tài)的高速緩存管線到其區(qū)域高速緩存,而該被預(yù)取的第一高速緩存管線的地址是由寄存器EAX所指定。以響應(yīng)一命令該獨(dú)占預(yù)取運(yùn)算的微指令序列1011,該擴(kuò)展區(qū)段記錄邏輯1021命令其總線單元1030由其內(nèi)存總線1040發(fā)出總線以請求該地址是由寄存器EAX所指定的處于獨(dú)占狀態(tài)的高速緩存管線。該記錄邏輯1021在接收到這些高速緩存管線后,即將其配置到其數(shù)據(jù)高速緩存1022。一但以獨(dú)占狀態(tài)進(jìn)入到該高速緩存,任意一或是全部的被預(yù)取的高速緩存管線均可被修改而不會造成額外的延遲。
如圖11顯示一時(shí)序圖1100,用以描述依據(jù)本發(fā)明由圖6及圖10所示的微處理器1001所發(fā)出的總線操作集1101,1102,此總線操作由內(nèi)存總線1040以執(zhí)行區(qū)段預(yù)取與存儲運(yùn)算。為解說方便起見,圖11實(shí)例的系統(tǒng)配置使用32字節(jié)高速緩存管線。但是,熟悉此領(lǐng)域技術(shù)人員將從下述的例證中發(fā)現(xiàn)本發(fā)明的應(yīng)用包括所有可預(yù)期的系統(tǒng)配置的高速緩存管線行寬。此二操作集1101,1102包括在微處理器1001內(nèi)的從總線單元1030到內(nèi)存總線1040的請求操作1101,與同樣在在微處理器1001內(nèi)的從內(nèi)存總線1040回到總線單元1030的響應(yīng)操作。時(shí)序圖1000描述當(dāng)一被請求且處于獨(dú)占狀態(tài)的一區(qū)段的高速緩存管線,為依據(jù)本發(fā)明的包括一重復(fù)前置碼的預(yù)取-獨(dú)占宏指令所指定的意圖進(jìn)行存儲運(yùn)算的一區(qū)段預(yù)取的響應(yīng)時(shí),所執(zhí)行的操作集1001,1002。根據(jù)上面的敘述,當(dāng)執(zhí)行一區(qū)段預(yù)取-獨(dú)占指令時(shí),該擴(kuò)展記錄邏輯1021命令其總線單元1030發(fā)出一多重的數(shù)據(jù)讀取與無效請求1101,此請求并且對應(yīng)于架構(gòu)寄存器內(nèi)所指定數(shù)量的高速緩存管線。該多重的請求包括該高速緩存管線區(qū)段內(nèi)的所有高速緩存管線的地址,其地址為架構(gòu)寄存器EAX的內(nèi)容所起始指定。雖然該總線請求1101使用遞增的地址次序,值得注意的是考慮到傳統(tǒng)上不同的內(nèi)存總線協(xié)議,本發(fā)明也包括遞減的排序,隨機(jī)的排序,及參差的排序。第一個(gè)數(shù)據(jù)讀取與無效請求1101是在時(shí)間點(diǎn)A發(fā)出,第二個(gè)請求1101是在時(shí)間點(diǎn)B發(fā)出,以此類推,直到最后的請求在時(shí)間點(diǎn)D發(fā)出。在許多種架構(gòu)中,總線請求1102是被標(biāo)記的,以致于該請求開始在時(shí)間點(diǎn)C早于其最后的請求的完成。在時(shí)間點(diǎn)C,至少有在該區(qū)段內(nèi)的一高速緩存管線是可被一待決的存儲所使用。但是,為確保將延遲減到最小,最好是將該區(qū)段的速緩存管線的存儲運(yùn)算推延至?xí)r間點(diǎn)E,此時(shí)所有的響應(yīng)1102均已到達(dá)且處于獨(dú)占狀態(tài)。
若所請求的高速緩存管線是處于獨(dú)占的MESI狀態(tài),則在時(shí)間點(diǎn)B,該內(nèi)存總線740響應(yīng)發(fā)出一數(shù)據(jù)響應(yīng)請求1102,DATA RESP[EAX].E,回到其總線單元1030。在這時(shí),一存儲運(yùn)算的數(shù)據(jù)可從其高速緩存1022讀取或?qū)懭氲狡涓咚倬彺?022,而不會導(dǎo)致總線操作延遲。
圖12為描述依據(jù)本發(fā)明執(zhí)行一意圖進(jìn)行存儲運(yùn)算的預(yù)取方法的流程圖1200。
流程開始于方框1202,在此處,依據(jù)本發(fā)明,一連串的宏指令被送到一指令隊(duì)列。流程接著進(jìn)行到方框1204。
在方框1204中,一個(gè)隨后的宏指令被從該指令隊(duì)列中提取,并將之送到一擴(kuò)展轉(zhuǎn)譯器。流程接著進(jìn)行到判斷方框1206。
在判斷方框1206中,將進(jìn)行一項(xiàng)檢查用以判斷該隨后的宏指令是否為一擴(kuò)展預(yù)取指令。若答案為是,則流程進(jìn)行到方框1208。若答案為否,則流程進(jìn)行到方框1210。
在方框1208中,一被檢測到的擴(kuò)展預(yù)取指令被轉(zhuǎn)譯成一意圖進(jìn)行存儲運(yùn)算的預(yù)取的微指令序列,此微指令序列用以命令微處理器去預(yù)取處于獨(dú)占狀態(tài)的一指定的高速緩存管線。流程接著進(jìn)行到方框1212。
在方框1210中,該宏指令被轉(zhuǎn)譯成一對應(yīng)的微指令序列,此微指令序列用以命令微處理器去執(zhí)行一指定的運(yùn)算。流程接著進(jìn)行到方框1212。
在方框1212中,一個(gè)隨后的微指令序列被送到微處理器內(nèi)的執(zhí)行邏輯。流程接著進(jìn)行到判斷方框1214。
在判斷方框1214中,將進(jìn)行一項(xiàng)檢查用以判斷隨后的微指令序列是否為一意圖進(jìn)行存儲運(yùn)算的預(yù)取的微指令序列。若答案為是,則流程進(jìn)行到方框1216。若答案為否,則流程進(jìn)行到方框1218。
在方框1216中,響應(yīng)意圖進(jìn)行存儲運(yùn)算的預(yù)取的微指令序列,總線操作請求被發(fā)出到一內(nèi)存總線以請求一指定高速緩存管線的獨(dú)占所有權(quán)。隨后該高速緩存管線以獨(dú)占MESI狀態(tài)被送到微處理器,因此可為存儲運(yùn)算所使用而不會發(fā)生因?yàn)樘嵘摳咚倬彺婀芫€至可被修改的狀態(tài)所導(dǎo)致的延遲。流程接著進(jìn)行到方框1220。
在方框1218中,執(zhí)行該隨后的微指令序列。流程接著進(jìn)行到方框1220。
在方框1220中,本方法完成。
圖13為描述依據(jù)本發(fā)明執(zhí)行一意圖進(jìn)行存儲運(yùn)算之區(qū)段預(yù)取方法的流程圖1300。
流程開始于方框1302,在此處,依據(jù)本發(fā)明,一連串的宏指令被送到一指令隊(duì)列。流程接著進(jìn)行到方框1304。
在方框1304中,一個(gè)隨后的宏指令被從該指令隊(duì)列中提取,并將之送到一擴(kuò)展轉(zhuǎn)譯器。流程接著進(jìn)行到判斷方框1306。
在判斷方框1306中,將進(jìn)行一項(xiàng)檢查用以判斷該隨后的宏指令是否為一擴(kuò)展區(qū)段預(yù)取指令。若答案為是,則流程進(jìn)行到方框1310。若答案為否,則流程進(jìn)行到方框1308。
在方框1310中,一被檢測到的擴(kuò)展區(qū)段預(yù)取指令被轉(zhuǎn)譯成一意圖進(jìn)行存儲運(yùn)算的區(qū)段預(yù)取的微指令序列,此微指令序列用以命令微處理器去預(yù)取處于獨(dú)占狀態(tài)一指定數(shù)量的高速緩存管線。流程接著進(jìn)行到方框1312。
在方框1308中,宏指令被轉(zhuǎn)譯成一對應(yīng)的微指令序列,此微指令序列用以命令微處理器去執(zhí)行一指定的運(yùn)算。流程接著進(jìn)行到方框1312。
在方框1312中,一個(gè)隨后的微指令序列被送到微處理器內(nèi)的執(zhí)行邏輯。流程接著進(jìn)行到判斷方框1314。
在判斷方框1314中,將進(jìn)行一項(xiàng)檢查用以判斷隨后的微指令序列是否為一意圖進(jìn)行存儲運(yùn)算的預(yù)取的微指令序列。若答案為是,則流程進(jìn)行到方框1318。若答案為否,則流程進(jìn)行到方框1316。
在方框1316中,執(zhí)行該隨后的微指令序列。流程接著進(jìn)行到方框1328。
在方框1318中,響應(yīng)意圖進(jìn)行存儲運(yùn)算的該區(qū)段預(yù)取的微指令序列,初始一暫時(shí)的計(jì)數(shù)器為數(shù)值0以監(jiān)控將被發(fā)出的總線操作的數(shù)量,此總線操作請求一區(qū)段的高速緩存管線的獨(dú)占所有權(quán)。流程接著進(jìn)行到方框1320。
在方框1320中,第一高速緩存管線地址被指定給第一個(gè)數(shù)據(jù)讀取與無效總線操作。該第一高速緩存管線地址來自于由該擴(kuò)展區(qū)段預(yù)取指令所指定的地址,然后再加上一乘以方框1318的計(jì)數(shù)的高速緩存管線行寬。由于該計(jì)數(shù)初始為零,所以該第一高速緩存管線地址等同于該擴(kuò)展區(qū)段預(yù)取指令所指定的地址。流程接著進(jìn)行到方框1322。
在方框1322中,發(fā)出一由內(nèi)存總線的數(shù)據(jù)讀取與無效操作以預(yù)取該處于獨(dú)占MESI狀態(tài)的該第一高速緩存管線。流程接著進(jìn)行到方框1324。
在方框1324中,將該計(jì)數(shù)增加后,流程接著進(jìn)行到方框1326。
在判斷方框1326中,將進(jìn)行一項(xiàng)檢查用以判斷該增加的計(jì)數(shù)是否等同于被預(yù)取的高速緩存管線的數(shù)量,該高速緩存管線線的數(shù)量存儲于一映像寄存器中。若答案為否,則流程進(jìn)行到方框1320,于其中執(zhí)行另一個(gè)重復(fù)以提取一下一高速緩存管線。若計(jì)數(shù)等同于該映像寄存器的內(nèi)容,則發(fā)出所有總線操作,同時(shí)流程進(jìn)行到方框1328。
在方框1328中,本方法完成。
雖然本發(fā)明及其目的、特征與優(yōu)點(diǎn)已詳細(xì)敘述,其它具體實(shí)施例仍涵蓋在本發(fā)明的范圍內(nèi)。例如,在此描述了依照MESI協(xié)議時(shí),本發(fā)明對于待決的存儲運(yùn)算所具有的優(yōu)點(diǎn)。選擇MESI作為本發(fā)明的例子是因?yàn)槠湓诒炯夹g(shù)領(lǐng)域中的廣泛應(yīng)用。但是,值得注意的是本發(fā)明提供預(yù)取的數(shù)據(jù)到一區(qū)域高速緩存,該數(shù)據(jù)的形式或狀態(tài)使得該數(shù)據(jù)可立即被一待決的存儲運(yùn)算所修改,而不需發(fā)出操作到一內(nèi)存總線。該形式或狀態(tài)是否依照MESI并不重要。
如前所述,不同的架構(gòu)使用不同的高速緩存管線行寬。在桌上型計(jì)算機(jī)系統(tǒng)中,當(dāng)今普遍使用32-字節(jié)的高速緩存管線。但是在本發(fā)明中使用的敘述并不限制本發(fā)明不能應(yīng)用于32-,64-,128-,或甚至于256-字節(jié)的高速緩存管線。相反的,本發(fā)明預(yù)期可應(yīng)用在任何限制其區(qū)域高速緩存管線的修改且不提供直接預(yù)取這些高速緩存管線的系統(tǒng)架構(gòu),以至于該高速緩存管線可立即被修改而不必需依靠總線操作以取得修改許可。
此外,本發(fā)明使用相符于x86架構(gòu)的具體實(shí)施例作為例證。無疑的,x86-兼容的微處理器可以從應(yīng)用本發(fā)明得到好處,但值得注意的是本發(fā)明的應(yīng)用范疇并不只限于x86-兼容的環(huán)境,因?yàn)槿杂性S多不同的架構(gòu)所應(yīng)用的預(yù)取指令也不能保證其結(jié)果為獨(dú)占的數(shù)據(jù)。
雖然在此處應(yīng)用一地址指定元以指定被預(yù)取的高速緩存管線的地址,此種指定方式并不需是顯示的。一個(gè)依據(jù)本發(fā)明的預(yù)取指令的具體實(shí)施例可以隱含的指定一包含該地址的架構(gòu)寄存器,此處由一先前執(zhí)行的指令將該地址加載到該架構(gòu)寄存器。
以上所述為本發(fā)明的較佳實(shí)施例,并非用以限定本發(fā)明的實(shí)施范圍,凡依本發(fā)明所做的均等變化與修飾,皆應(yīng)屬于本發(fā)明專利的涵蓋范圍。
權(quán)利要求
1.一種微處理器裝置,用以自內(nèi)存獨(dú)占的預(yù)取一高速緩存管線,此裝置的特征在于包含一轉(zhuǎn)譯邏輯,配置成將一擴(kuò)展預(yù)取指令轉(zhuǎn)譯成一微指令序列,用以命令一微處理器預(yù)取處于獨(dú)占狀態(tài)的一高速緩存管線;以及一執(zhí)行邏輯,連接至該轉(zhuǎn)譯邏輯,配置成接收該微指令序列,并由一內(nèi)存總線發(fā)出操作請求處于該獨(dú)占狀態(tài)高速緩存管線。
2.如權(quán)利要求第1項(xiàng)所述的微處理器裝置,其特征在于該高速緩存管線包括一將被隨后的存儲運(yùn)算所修改的數(shù)據(jù)實(shí)體,且該預(yù)取處于該獨(dú)占狀態(tài)的該高速緩存管線與程序指令的執(zhí)行平行,并早于隨后命令該微處理器修改該數(shù)據(jù)實(shí)體的一的存儲運(yùn)算。
3.如權(quán)利要求第2項(xiàng)所述的微處理器裝置,其特征在于,預(yù)取處于該獨(dú)占狀態(tài)的該高速緩存管線排除了對應(yīng)于執(zhí)行該隨后的存儲運(yùn)算的一程序延遲,并且該程序延遲導(dǎo)因于必須發(fā)出的總線操作將該高速緩存管線由一共享狀態(tài)由提升至該獨(dú)占狀態(tài)。
4.如權(quán)利要求第1項(xiàng)所述的微處理器裝置,其特征在于,該擴(kuò)展預(yù)取指令包含對在一現(xiàn)存指令集內(nèi)的一現(xiàn)存預(yù)取指令的修改,且該現(xiàn)存預(yù)取指令原本不提供預(yù)取處于該獨(dú)占狀態(tài)的該高速緩存管線。
5.如權(quán)利要求第4項(xiàng)所述的微處理器裝置,其特征在于,該擴(kuò)展預(yù)取指令包含存在于一擴(kuò)展地址指定元實(shí)體內(nèi)的一預(yù)取運(yùn)算碼字段,其中該預(yù)取運(yùn)算碼字段的一指定數(shù)值命令該微處理器預(yù)取處于該獨(dú)占狀態(tài)的該高速緩存管線,并且其中該預(yù)取運(yùn)算碼字段的其它數(shù)值命令該微處理器依照該現(xiàn)存指令集執(zhí)行其它類型的預(yù)取運(yùn)算。
6.如權(quán)利要求第1項(xiàng)所述的微處理器裝置,其特征在于,響應(yīng)于該微指令序列,該執(zhí)行邏輯命令一總線單元由該內(nèi)存總線發(fā)出這些操作。
7.如權(quán)利要求第6項(xiàng)所述的微處理器裝置,其特征在于,這些操作包含一數(shù)據(jù)讀取與無效操作,這些操作請求該高速緩存管線的獨(dú)占所有權(quán)。
8.一種微處理器裝置,用以執(zhí)行一意圖進(jìn)行存儲運(yùn)算的預(yù)取,此裝置的特征在于包含一擴(kuò)展預(yù)取指令,配置成命令微處理器預(yù)取一處于獨(dú)占狀態(tài)的高速緩存管線;以及一轉(zhuǎn)譯器,配置成接收該擴(kuò)展預(yù)取指令,并將該擴(kuò)展預(yù)取指令轉(zhuǎn)譯成相關(guān)的微指令,在其中該相關(guān)的微指令命令在微處理器內(nèi)的執(zhí)行邏輯由一內(nèi)存總線發(fā)出總線操作,用以請求該高速緩存管線的獨(dú)占所有權(quán)。
9.如權(quán)利要求第8項(xiàng)所述的微處理器,其特征在于,該高速緩存管線包括一將被隨后的存儲運(yùn)算所修改的數(shù)據(jù)實(shí)體,且該預(yù)取處于該獨(dú)占狀態(tài)的該高速緩存管線與程序指令的執(zhí)行平行,并早于隨后命令該微處理器修改該數(shù)據(jù)實(shí)體的一的存儲運(yùn)算。
10.如權(quán)利要求第9項(xiàng)所述的微處理器裝置,其特征在于,該擴(kuò)展預(yù)取指令包含對在一現(xiàn)存指令集內(nèi)的一現(xiàn)存預(yù)取指令的修改,且該現(xiàn)存預(yù)取指令原本不提供預(yù)取處于該獨(dú)占狀態(tài)的該高速緩存管線。
11.如權(quán)利要求第10項(xiàng)所述的微處理器,其特征在于,該擴(kuò)展預(yù)取指令包含存在于一擴(kuò)展地址指定元實(shí)體內(nèi)的一預(yù)取運(yùn)算碼字段,其中該預(yù)取運(yùn)算碼字段的一指定數(shù)值命令該微處理器預(yù)取處于該獨(dú)占狀態(tài)的該存高速緩存管線,并且其中該預(yù)取運(yùn)算碼字段的其它數(shù)值命令該微處理器依照該現(xiàn)存指令集執(zhí)行其它類型的預(yù)取運(yùn)算。
12.如權(quán)利要求第8項(xiàng)所述的微處理器裝置,其特征在于,響應(yīng)于該對應(yīng)的微指令,該執(zhí)行邏輯命令一總線單元由該內(nèi)存總線發(fā)出這些操作。
13.如權(quán)利要求第12項(xiàng)所述的微處理器裝置,其特征在于,這些總線操作一數(shù)據(jù)讀取與無效操作,這些操作請求該高速緩存管線的獨(dú)占所有權(quán)。
14.一種預(yù)取處于一獨(dú)占狀態(tài)的一高速緩存管線的方法,此方法的特征在于包含提取一擴(kuò)展預(yù)取宏指令;將該擴(kuò)展預(yù)取宏指令轉(zhuǎn)譯成微指令序列,該微指令序列用以命令一微處理器預(yù)取處于獨(dú)占狀態(tài)的該區(qū)段的高速緩存管線;以及響應(yīng)該微指令序列,由內(nèi)存總線發(fā)出總線操作以讀取該處于獨(dú)占狀態(tài)的高速緩存管線。
15.如權(quán)利要求14項(xiàng)所述的方法,其特征在于,該發(fā)出動作包含許可該微處理器平行的執(zhí)行該發(fā)出與隨后的指令。
16.如權(quán)利要求14項(xiàng)所述的方法,其特征在于,該提取動作包含提供該擴(kuò)展預(yù)取指令作為對在一現(xiàn)存指令集內(nèi)的一現(xiàn)存預(yù)取指令的修改,其中該現(xiàn)存預(yù)取指令原本不提供預(yù)取處于該獨(dú)占狀態(tài)的該高速緩存管線。
17.如權(quán)利要求14項(xiàng)所述的方法,其特征在于,該發(fā)出動作包含提供由內(nèi)存總線的一數(shù)據(jù)讀取與無效操作,此操作請求該高速緩存管線的獨(dú)占所有權(quán)。
全文摘要
本發(fā)明公開了一種對內(nèi)存內(nèi)一高速緩存管線執(zhí)行獨(dú)占預(yù)取的微處理器裝置。該裝置包含轉(zhuǎn)譯邏輯與執(zhí)行邏輯。該轉(zhuǎn)譯邏輯將一擴(kuò)展預(yù)取指令轉(zhuǎn)譯成一微指令序列,用以命令微處理器預(yù)取處于獨(dú)占狀態(tài)的一高速緩存管線。該執(zhí)行邏輯連接至該轉(zhuǎn)譯邏輯。該執(zhí)行邏輯接收該微指令序列,然后由一內(nèi)存總線發(fā)出操作,用以請求處于該獨(dú)占狀態(tài)的高速緩存管線。本發(fā)明還公開了一種預(yù)取處于一獨(dú)占狀態(tài)的一高速緩存管線的方法。
文檔編號G06F9/30GK1514349SQ03158568
公開日2004年7月21日 申請日期2003年9月19日 優(yōu)先權(quán)日2003年2月11日
發(fā)明者羅德尼·胡克, 羅德尼 胡克 申請人:智慧第一公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1
舟曲县| 河曲县| 阿克| 天等县| 华坪县| 吴忠市| 新河县| 东明县| 长宁县| 永昌县| 屏边| 乳源| 阿拉尔市| 彰武县| 肇源县| 应用必备| 鄂托克前旗| 徐闻县| 青铜峡市| 襄汾县| 澄江县| 涞水县| 阳谷县| 襄城县| 施甸县| 柏乡县| 东兴市| 辽中县| 南川市| 牙克石市| 玛多县| 屯昌县| 武山县| 睢宁县| 甘孜| 健康| 开远市| 历史| 运城市| 宜丰县| 璧山县|