亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

預(yù)取區(qū)段內(nèi)存以進(jìn)行儲(chǔ)存的裝置及方法

文檔序號(hào):6379760閱讀:191來(lái)源:國(guó)知局
專(zhuān)利名稱(chēng):預(yù)取區(qū)段內(nèi)存以進(jìn)行儲(chǔ)存的裝置及方法
技術(shù)領(lǐng)域
本發(fā)明有關(guān)微電子學(xué)的領(lǐng)域,尤指一種裝置及方法使程序員得以命令微處理器預(yù)取一區(qū)段的處于排他(exclusive)MESI狀態(tài)的高速緩存管線(xiàn)(cacheline)至其內(nèi)部高速緩存(internal cache)。
背景技術(shù)
本申請(qǐng)案與下列同在申請(qǐng)中的臺(tái)灣專(zhuān)利申請(qǐng)案有關(guān),其申請(qǐng)日與本案相同,且具有相同的申請(qǐng)人與發(fā)明人。

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

發(fā)明內(nèi)容
本發(fā)明如同前述其它申請(qǐng),是針對(duì)上述及其它現(xiàn)有技術(shù)的問(wèn)題與缺點(diǎn)加以克服。本發(fā)明提供一種更好的技術(shù)以預(yù)取一區(qū)段的數(shù)據(jù)至高速緩存中,而該高速緩存其狀態(tài)為使得一隨后的儲(chǔ)存運(yùn)算對(duì)該區(qū)段的數(shù)據(jù)可立刻被公告,而不會(huì)發(fā)生為取得該區(qū)段的數(shù)據(jù)的排他所有權(quán)所招致的內(nèi)存總線(xiàn)延遲。在一具體實(shí)施例中,提供一可從內(nèi)存排他的預(yù)取一該區(qū)段的數(shù)據(jù)的微處理器裝置。該裝置包括轉(zhuǎn)譯邏輯與執(zhí)行邏輯。轉(zhuǎn)譯邏輯將一延伸(extended)預(yù)取指令轉(zhuǎn)譯成一微指令序列,此微指令序列用以命令微處理器預(yù)取一指定數(shù)量的處于排他狀態(tài)的高速緩存管線(xiàn)。執(zhí)行邏輯耦接至轉(zhuǎn)譯邏輯。該執(zhí)行邏輯接收前述微指令序列,然后經(jīng)由內(nèi)存總線(xiàn)發(fā)出作業(yè),要求該指定數(shù)量的處于排他狀態(tài)的高速緩存管線(xiàn)。
本發(fā)明的一個(gè)目的在于提供一種微處理器裝置以執(zhí)行一區(qū)段數(shù)據(jù)的意圖進(jìn)行儲(chǔ)存運(yùn)算的預(yù)取。該微處理器擁有一延伸區(qū)段預(yù)取指令,該指令被組態(tài)成命令該微處理器預(yù)取一指定數(shù)量的處于排他狀態(tài)的高速緩存管線(xiàn)。該微處理器也包含一轉(zhuǎn)譯器,該轉(zhuǎn)譯器則是被組態(tài)成接收該延伸區(qū)段預(yù)取指令,并將此延伸區(qū)段預(yù)取指令轉(zhuǎn)譯成相關(guān)的微指令。此相關(guān)的微指令命令在微處理器內(nèi)的執(zhí)行邏輯經(jīng)由一內(nèi)存總線(xiàn)發(fā)出一總線(xiàn)作業(yè),以要求該指定數(shù)量的高速緩存管線(xiàn)的排他所有權(quán)。
本發(fā)明的另一目的在于提供一種預(yù)取一區(qū)段的處于排他狀態(tài)的的高速緩存管線(xiàn)的方法。此方法包括提取(retrieving)一延伸區(qū)段預(yù)取宏指令;轉(zhuǎn)譯該延伸區(qū)段預(yù)取宏指令成一微指令序列,此微指令序列用以命令一微處理器預(yù)取處于該區(qū)段的處于排他狀態(tài)的高速緩存管線(xiàn);而且,響應(yīng)此微指令序列,經(jīng)由內(nèi)存總線(xiàn)發(fā)出總線(xiàn)作業(yè)以讀取該區(qū)段的處于排他狀態(tài)的高速緩存管線(xiàn)。
本發(fā)明的技術(shù)方案是這樣實(shí)現(xiàn)的一種微處理器裝置,其特征在于,用以自?xún)?nèi)存排他地預(yù)取一區(qū)段的數(shù)據(jù),此裝置包含一轉(zhuǎn)譯邏輯,組態(tài)成將一延伸區(qū)段預(yù)取指令轉(zhuǎn)譯成一微指令序列,用以命令一微處理器預(yù)取一指定數(shù)量的處于排他狀態(tài)的高速緩存管線(xiàn);以及一執(zhí)行邏輯,耦接至該轉(zhuǎn)譯邏輯,組態(tài)成接收該微指令序列,并且組態(tài)成經(jīng)由一內(nèi)存總線(xiàn)發(fā)出作業(yè)至要求該指定數(shù)量的處于該排他狀態(tài)的高速緩存管線(xiàn)。
其中該指定數(shù)量的高速緩存管線(xiàn)包括一將被隨后的儲(chǔ)存運(yùn)算所修改的數(shù)據(jù)實(shí)體,并且其中預(yù)取該指定數(shù)量的處于該排他狀態(tài)的該高速緩存管線(xiàn)與程序指令中,早于命令該微處理器修改該數(shù)據(jù)實(shí)體的隨后的儲(chǔ)存運(yùn)算執(zhí)行平行。
其中預(yù)取該指定數(shù)量的處于該排他狀態(tài)的該高速緩存管線(xiàn)排除了對(duì)應(yīng)于執(zhí)行該隨后的儲(chǔ)存運(yùn)算的一程序延遲,并且其中該程序延遲導(dǎo)因于必須發(fā)出的總線(xiàn)作業(yè)以將該指定數(shù)量的高速緩存管線(xiàn)由一共享狀態(tài)由提升至該排他狀態(tài)。
其中該延伸區(qū)段預(yù)取指令包含對(duì)在一現(xiàn)存指令集內(nèi)的一現(xiàn)存預(yù)取指令的修改,并且其中該現(xiàn)存預(yù)取指令原本不提供預(yù)取該指定數(shù)量的處于該排他狀態(tài)的高速緩存管線(xiàn)。
其中該延伸區(qū)段預(yù)取指令包含存在于一延伸地址指定元實(shí)體內(nèi)的一重復(fù)前置碼與一預(yù)取運(yùn)算碼字段,其中該預(yù)取運(yùn)算碼字段的一指定數(shù)值命令該微處理器預(yù)取一處于該排他狀態(tài)的第一高速緩存管線(xiàn),并且其中該預(yù)取運(yùn)算碼字段的其它數(shù)值命令該微處理器依照該現(xiàn)存指令集執(zhí)行其它類(lèi)型的預(yù)取運(yùn)算。
其中該預(yù)取運(yùn)算碼字段包含在一x86預(yù)取指令的ModR/M字節(jié)內(nèi)的53位。
其中該重復(fù)前置碼字段命令該微處理器預(yù)取該指定數(shù)量的高速緩存管線(xiàn),并且其中該指定數(shù)量的高速緩存管線(xiàn)包含該第一高速緩存管線(xiàn)。
其中該指定數(shù)量是由該微處理器內(nèi)的一架構(gòu)緩存器的內(nèi)容所指定。
響應(yīng)于該微指令序列,該執(zhí)行邏輯命令一總線(xiàn)單元經(jīng)由該內(nèi)存總線(xiàn)發(fā)出該些作業(yè)。
其中該些作業(yè)包含復(fù)數(shù)個(gè)數(shù)據(jù)讀取與無(wú)效作業(yè),該些作業(yè)要求該指定數(shù)量的高速緩存管線(xiàn)的排他所有權(quán)。
其中該架構(gòu)緩存器的內(nèi)容包含該指定數(shù)量,該指定數(shù)量是透明的復(fù)制到一影像緩存器,并且此處該執(zhí)行邏輯應(yīng)用該影像緩存器來(lái)計(jì)數(shù)該些數(shù)據(jù)讀取與無(wú)效作業(yè)。
本發(fā)明還提供了一種微處理器裝置,其特征在于,用以執(zhí)行一意圖進(jìn)行儲(chǔ)存運(yùn)算的區(qū)段預(yù)取,此裝置包含一延伸預(yù)取指令,組態(tài)成命令微處理器預(yù)取一指定數(shù)量的處于排他狀態(tài)的高速緩存管線(xiàn);一轉(zhuǎn)譯器,組態(tài)成接收該延伸區(qū)段預(yù)取指令,并將該延伸區(qū)段預(yù)取指令轉(zhuǎn)譯成相關(guān)的微指令,其中該相關(guān)的微指令命令在微處理器內(nèi)的執(zhí)行邏輯經(jīng)由一內(nèi)存總線(xiàn)發(fā)出總線(xiàn)作業(yè),以要求該指定數(shù)量的高速緩存管線(xiàn)的排他所有權(quán)。
其中該指定數(shù)量的高速緩存管線(xiàn)包括一將被隨后的儲(chǔ)存運(yùn)算所修改的數(shù)據(jù)實(shí)體,并且其中預(yù)取該指定數(shù)量的處于該排他狀態(tài)的該高速緩存管線(xiàn)與程序指令中,早于命令該微處理器修改該數(shù)據(jù)實(shí)體的一隨后的儲(chǔ)存運(yùn)算執(zhí)行平行。
其中該延伸區(qū)段預(yù)取指令包含在一延伸地址指定元實(shí)體內(nèi)的一重復(fù)字段與一預(yù)取運(yùn)算碼字段,并且其中該預(yù)取運(yùn)算碼字段的一指定數(shù)值命令微處理器預(yù)取一處于該排他狀態(tài)的第一高速緩存管線(xiàn),并且其中該預(yù)取運(yùn)算碼字段的其它數(shù)值命令微處理器依照該現(xiàn)存指令集執(zhí)行其它類(lèi)型的預(yù)取運(yùn)算。
本發(fā)明還提供了一種預(yù)取區(qū)段的處于排他狀態(tài)的高速緩存管線(xiàn)的方法,其特征在于,此方法包含提取一延伸區(qū)段預(yù)取宏指令;將該延伸區(qū)段預(yù)取宏指令轉(zhuǎn)譯成微指令序列,該微指令序列用以命令一微處理器預(yù)取該區(qū)段的處于排他狀態(tài)的高速緩存管線(xiàn);以及響應(yīng)該微指令序列,經(jīng)由內(nèi)存總線(xiàn)發(fā)出總線(xiàn)作業(yè)以讀取該區(qū)段的處于排他狀態(tài)的高速緩存管線(xiàn)。
其中該發(fā)出動(dòng)作包含許可該微處理器平行地執(zhí)行該發(fā)出與隨后的指令。
其中該提取動(dòng)作包含提供該延伸預(yù)取指令作為對(duì)在一現(xiàn)存指令集內(nèi)的一現(xiàn)存預(yù)取指令的修改,其中該現(xiàn)存預(yù)取指令原本不提供預(yù)取該區(qū)段的處于該排他狀態(tài)的該高速緩存管線(xiàn)。
其中該提供動(dòng)作包含修改一x86預(yù)取指令以致能一意圖進(jìn)行儲(chǔ)存運(yùn)算的區(qū)段預(yù)取。
其中該延伸預(yù)取指令包含在一延伸地址指定元實(shí)體內(nèi)的一重復(fù)前置碼與一預(yù)取運(yùn)算碼字段,其中該預(yù)取運(yùn)算碼字段的一指定數(shù)值命令該微處理器預(yù)取一處于該排他狀態(tài)的第一高速緩存管線(xiàn),并且其中該預(yù)取運(yùn)算碼字段的其它數(shù)值命令該微處理器依照現(xiàn)存指令集執(zhí)行其它類(lèi)型的預(yù)取運(yùn)算。
其中該重復(fù)前置碼命令該微處理器預(yù)取一指定數(shù)量的高速緩存管線(xiàn),并且其中該指定數(shù)量等同于該區(qū)段的高速緩存管線(xiàn)內(nèi)的高速緩存管線(xiàn)數(shù)目,并且其中該第一高速緩存管線(xiàn)為該區(qū)段的高速緩存管線(xiàn)內(nèi)的該指定數(shù)量的高速緩存管線(xiàn)之一。
其中更包含依照一緩存器的內(nèi)容來(lái)設(shè)定在該區(qū)段的高速緩存管線(xiàn)內(nèi)的高速緩存管線(xiàn)數(shù)量。
其中更包含透明的復(fù)制該緩存器的內(nèi)容到一影像緩存器。
其中該發(fā)出動(dòng)作包含提供經(jīng)由內(nèi)存總線(xiàn)的復(fù)數(shù)個(gè)數(shù)據(jù)讀取與無(wú)效作業(yè),此作業(yè)要求該區(qū)段的高速緩存管線(xiàn)的排他所有權(quán)。
其中該提供動(dòng)作包含利用該影像緩存器以維持對(duì)該區(qū)段的高速緩存管線(xiàn)數(shù)目的計(jì)數(shù)。


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