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

存儲(chǔ)檢查的禁止裝置及方法

文檔序號(hào):6451770閱讀:209來(lái)源:國(guó)知局
專(zhuān)利名稱(chēng):存儲(chǔ)檢查的禁止裝置及方法
技術(shù)領(lǐng)域
本發(fā)明涉及微電子領(lǐng)域,特別涉及一種將可于指令層次選擇性地禁止存儲(chǔ)檢查(store checking)的特征納入現(xiàn)有微處理器指令集結(jié)構(gòu)的技術(shù)。
隨著使用上的爆炸性成長(zhǎng),在技術(shù)上也經(jīng)歷一相應(yīng)的提高,其特征在于對(duì)下列項(xiàng)有著日益升高的要求更快的速度、更強(qiáng)的尋址能力、更快的內(nèi)存存取、更大的操作數(shù)、更多種一般用途類(lèi)型的運(yùn)算(如浮點(diǎn)運(yùn)算、單一指令多重?cái)?shù)據(jù)(SIMD),條件移動(dòng)等)以及附加的特殊用途運(yùn)算(如數(shù)字信號(hào)處理功能及其它多媒體運(yùn)算)。如此造就了該領(lǐng)域中驚人的技術(shù)進(jìn)展,且都已應(yīng)用于微處理器的設(shè)計(jì),像擴(kuò)充管線(xiàn)化(extensive pipelining)、超純量結(jié)構(gòu)(super-scalar architecture)、高速緩存結(jié)構(gòu)、亂序處理(out-of-orderprocessing)、爆發(fā)式存取(burst access)機(jī)制、分支預(yù)測(cè)(branch predication)以及假想執(zhí)行(speculative execution)。直言之,比起30年前剛出現(xiàn)時(shí),現(xiàn)在的微處理器呈現(xiàn)出驚人的復(fù)雜度,且具備了強(qiáng)大的能力。
但與許多其它產(chǎn)品不同的是,有另一非常重要的因素已限制了,并持續(xù)限制著微處理器結(jié)構(gòu)的演進(jìn)?,F(xiàn)今微處理器會(huì)如此復(fù)雜,一大部分得歸因于這項(xiàng)因素,即舊有軟件的兼容性。在市場(chǎng)考慮下,所多制造商選擇將新的結(jié)構(gòu)特征納入最新的微處理器設(shè)計(jì)中,但同時(shí)在這些最新的產(chǎn)品中,又保留了所有為確保兼容于較舊的,即所謂(舊有)(legacy)應(yīng)用程序所必需的能力。
這種舊有軟件兼容性的負(fù)擔(dān),沒(méi)有其它地方,會(huì)比在x86,兼容的微處理器的發(fā)展史中更加顯而易見(jiàn)。大家都知道,現(xiàn)在的32/16位的虛擬模式(virmal-mode)x86微處理器,仍可執(zhí)行1980年代所撰寫(xiě)的8位真實(shí)模式(real-mode)的應(yīng)用程序。而熟悉此領(lǐng)域技術(shù)者也承認(rèn),有不少相關(guān)的結(jié)構(gòu)“包袱”堆在x86結(jié)構(gòu)中,只是為了支持與舊有應(yīng)用程序及工作模式的兼容性。雖然在過(guò)去,研發(fā)者可將新開(kāi)發(fā)的結(jié)構(gòu)特征加入現(xiàn)有的指令集結(jié)構(gòu),但如今使用這些特征所憑借的工具,即可程序化的指令,卻變得相當(dāng)稀少。更簡(jiǎn)單他說(shuō),在某些重要的指令集中,已沒(méi)有“多余”的指令,讓設(shè)計(jì)者可以將更新的特征納入一現(xiàn)有的結(jié)構(gòu)中。
例如,在x86指令集結(jié)構(gòu)中,已經(jīng)沒(méi)有任何一未定義的一字節(jié)大小的操作碼狀態(tài)尚未被使用的。在主要的一字節(jié)大小的x86操作碼圖中,全部256個(gè)操作碼狀態(tài)都已被現(xiàn)有的指令占用了。結(jié)果x86微處理器的設(shè)計(jì)者現(xiàn)在必須在提供新特征與保留舊有軟件兼容性?xún)烧唛g作抉擇。若要提供新的可程序化特征,則必須分派操作碼狀態(tài)給這些特征。若現(xiàn)有的指令集結(jié)構(gòu)沒(méi)有多余的操作碼狀態(tài);則某些已存在的操作碼狀態(tài)必須重新定義,以提供給新的特征。因此,為了提供新的特征,就得犧牲舊有軟件的兼容性了。
在現(xiàn)代的微處理器中,有些程序員希望納入的特征,但在此前都因上述理由而無(wú)法實(shí)現(xiàn)。其中一項(xiàng)特征為在指令層次控制是否要禁止存儲(chǔ)檢查。
既然幾乎所有的微處理器都使用了多階段的管線(xiàn)結(jié)構(gòu),那就有可能會(huì)發(fā)生(事實(shí)上可能性極高),一個(gè)被提取到管線(xiàn)的指令很可能是一等待(pending)存儲(chǔ)運(yùn)算的目標(biāo),而該存儲(chǔ)運(yùn)算是進(jìn)行至管線(xiàn)后面的階段,但尚未執(zhí)行完成。也就是,將要存儲(chǔ)到一目的位置的數(shù)據(jù)還未被寫(xiě)入內(nèi)存(即外部?jī)?nèi)存或內(nèi)部高速緩存)。這在許多不同情況下都會(huì)發(fā)生。例如,該存儲(chǔ)指令可能正進(jìn)行到一個(gè)未用來(lái)寫(xiě)入內(nèi)存的早期管線(xiàn)階段?;蛘?,數(shù)據(jù)可能被放在一等待存儲(chǔ)緩沖器中,而該存儲(chǔ)緩沖器正等待一適當(dāng)?shù)臅r(shí)間,以便寫(xiě)入內(nèi)存,但存儲(chǔ)指令卻被允許離開(kāi)管線(xiàn)。熟悉此領(lǐng)域技術(shù)者將察覺(jué),管線(xiàn)結(jié)構(gòu)對(duì)微處理器設(shè)計(jì)者提出各種挑戰(zhàn),其與循序執(zhí)行指令的同步化有關(guān),但這些指令有一部份卻是以管線(xiàn)方式平行地執(zhí)行。
存儲(chǔ)檢查是所有管線(xiàn)化微處理器的固有特征,其可確保在微處理器管線(xiàn)中的所有指令是應(yīng)用程序員所要執(zhí)行的指令。在這些微處理器管線(xiàn)內(nèi)有提供各種裝置與工具,以對(duì)照還未寫(xiě)入內(nèi)存的等待存儲(chǔ)事件,來(lái)檢查所有進(jìn)入管線(xiàn)的指令,并且當(dāng)存儲(chǔ)指令執(zhí)行時(shí),進(jìn)一步對(duì)照存儲(chǔ)指令的目的地址,來(lái)檢查所有在前面管線(xiàn)階段的指令。若檢測(cè)到一等待存儲(chǔ)事件,其目的地址對(duì)應(yīng)(一般與高速緩存線(xiàn)的大小相對(duì)應(yīng))到一進(jìn)入管線(xiàn)指令的位置,則管線(xiàn)會(huì)暫停工作,而該存儲(chǔ)事件即被允許寫(xiě)入內(nèi)存。當(dāng)管線(xiàn)暫停工作時(shí),管線(xiàn)內(nèi)各階段的指令便會(huì)停止前進(jìn),直到該停頓狀態(tài)解除為止。在數(shù)據(jù)寫(xiě)入后,便從原來(lái)位置再次提取進(jìn)入管線(xiàn)的指令,且被允許通過(guò)管線(xiàn)。在一存儲(chǔ)指令執(zhí)行時(shí),若一指令在一先前的管線(xiàn)階段被檢測(cè)到,且其位置(即其指令指針(instructionpointer,IP))對(duì)應(yīng)至該存儲(chǔ)指令的目的地址,則微處理器中的同步邏輯會(huì)將管線(xiàn)工作暫停,并清空先前管線(xiàn)階段之前的所有管線(xiàn)階段。在存儲(chǔ)指令寫(xiě)入其數(shù)據(jù)后,會(huì)重新填充管線(xiàn)。
存儲(chǔ)檢查是一項(xiàng)極為繁重的作業(yè),其所需的硬件與微處理器內(nèi)管線(xiàn)階段的數(shù)目成正比。這就是為何存儲(chǔ)目的與指令位置通常僅以高速緩存線(xiàn)的大小為單位來(lái)進(jìn)行檢查,如前所述。再者,由于虛擬地址轉(zhuǎn)換為實(shí)體地址在本質(zhì)上非常復(fù)雜,存儲(chǔ)檢查一般是使用虛擬地址而非實(shí)體地址來(lái)達(dá)成。
現(xiàn)在,程序員無(wú)法控制微處理器的存儲(chǔ)檢查特征。若程序員選用自我修正碼(self-modifying code)的技術(shù),則必須確定做為先前存儲(chǔ)運(yùn)算的存儲(chǔ)目標(biāo)的后續(xù)指令是對(duì)應(yīng)的應(yīng)用程序執(zhí)行的。在來(lái)源碼(source code)的層級(jí),這是可以達(dá)成的,雖然這樣一種程序技術(shù)并非理想。然而,微處理器并不執(zhí)行來(lái)源碼。自動(dòng)化編譯器從所提供的程序代碼產(chǎn)生微處理器所需的指令流。所產(chǎn)生的指令流極可能由于特定編譯器的排列(alignment)特性,而在同一高速緩存線(xiàn)內(nèi)包含交錯(cuò)的程序代碼與數(shù)據(jù)。因此,即使程序員提供了用來(lái)確保自我修正來(lái)源碼的一致性的工具,不利于管線(xiàn)同步化(pipelinesynchronization)事件仍可能因程序代碼的編譯而產(chǎn)生。
程序員基于各種改進(jìn)效果的考慮,可能想在一指令前安插一存儲(chǔ)運(yùn)算,用來(lái)修改指令的位置,但所要的執(zhí)行順序仍是執(zhí)行該位置修改前的內(nèi)容。這就是為什么現(xiàn)在存儲(chǔ)檢查不可能排除這樣一種執(zhí)行事件的順序的原因。
因此,我們需要一種可將禁止存儲(chǔ)檢查的特征納入一現(xiàn)有微處理器指令集結(jié)構(gòu)的裝置及方法,其中該指令集結(jié)構(gòu)是被已定義的操作碼完全占用,且納入禁止特征能讓一符合舊有規(guī)格的微處理器保留執(zhí)行舊有應(yīng)用程序的能力,同時(shí)對(duì)于任何特定指令,還提供應(yīng)用程序員及編譯器控制是否執(zhí)行存儲(chǔ)檢查的能力。

發(fā)明內(nèi)容
本發(fā)明是針對(duì)上述及其它公知技術(shù)的問(wèn)題與缺點(diǎn)提供一種更好的技術(shù),用來(lái)擴(kuò)充微處理器的指令集,使其超越現(xiàn)有的能力,提供指令層級(jí)的存儲(chǔ)檢查禁止特征。在一具體實(shí)施例中,提供了一種可在微處理器內(nèi)進(jìn)行指令層級(jí)的存儲(chǔ)檢查控制的裝置。該裝置包括一提取邏輯(fetch logic)與一轉(zhuǎn)譯邏輯(translation logic)。該提取邏輯接收一延伸指令。該延伸指令具一延伸前置碼(extended prefix)與一延伸前置碼標(biāo)記(extended prefix tag)。該延伸前置碼指定要禁止延伸指令的存儲(chǔ)檢查。該延伸前置碼標(biāo)記則是一現(xiàn)有指令集內(nèi)另一結(jié)構(gòu)操作碼。該提取邏輯對(duì)于延伸指令的相關(guān)等待存儲(chǔ)事件,排除其存儲(chǔ)檢查。該轉(zhuǎn)譯邏輯連接至提取邏輯,將延伸指令轉(zhuǎn)譯成一微指令序列(micro instruction sequence),以指示該微處理器于一指定運(yùn)算執(zhí)行時(shí),排除存儲(chǔ)檢查。
本發(fā)明的一個(gè)目的,是提出一種擴(kuò)充現(xiàn)有指令集在一微處理器管線(xiàn)內(nèi)選擇性地禁止存儲(chǔ)檢查的微處理器機(jī)制。該微處理器機(jī)制具有一延伸指令與一轉(zhuǎn)譯器(translator)。該延伸指令是指定其相關(guān)的存儲(chǔ)檢查要被禁止,其中延伸指令包含現(xiàn)有指令集其中一選取的操作碼,其后則接著一n位的延伸前置碼。該選取的操作碼指出延伸指令,而該n位的延伸前置碼則指示要禁止存儲(chǔ)檢查。該轉(zhuǎn)譯器接收延伸指令,并產(chǎn)生一微指令序列,指示微處理器執(zhí)行一指定運(yùn)算,并排除指定運(yùn)算執(zhí)行時(shí)的相關(guān)存儲(chǔ)檢查。
本發(fā)明的另一目的在于提出一種為現(xiàn)有指令集增添禁止指令的存儲(chǔ)檢查特征的模塊。該模塊包括一擴(kuò)展標(biāo)記(escape tag),一存儲(chǔ)檢查禁止指定位(store check suppression specifier)、一轉(zhuǎn)譯邏輯及一延伸執(zhí)行邏輯。該擴(kuò)展標(biāo)記由一提取邏輯接收,并指出一對(duì)應(yīng)指令的附隨部分是指定了所要執(zhí)行的運(yùn)算,其中該擴(kuò)展標(biāo)記為現(xiàn)有指令集內(nèi)的一第一操作碼。該存儲(chǔ)檢查禁止指定位連接至擴(kuò)展標(biāo)記,且為該附隨部分其中之一,其指定的運(yùn)算執(zhí)行時(shí)要禁止存儲(chǔ)檢查。該轉(zhuǎn)譯邏輯連接至提取邏輯,用于產(chǎn)生一微指令序列,以指示微處理器執(zhí)行該運(yùn)算,并在微指令序列內(nèi)指定要禁止存儲(chǔ)檢查。該延伸執(zhí)行邏輯連接至轉(zhuǎn)譯邏輯,接收微指令序列,以不進(jìn)行存儲(chǔ)檢查方式執(zhí)行該運(yùn)算。
本發(fā)明的另一目的,在于提供一種擴(kuò)充現(xiàn)有指令集結(jié)構(gòu)的方法,用于指令層級(jí)禁止存儲(chǔ)檢查。該方法包括提供一延伸指令,延伸指令包含一延伸標(biāo)記及一延伸前置碼,其中該延伸標(biāo)記是現(xiàn)有指令集結(jié)構(gòu)其中一第一操作碼項(xiàng);通過(guò)該延伸前置碼指定延伸指令執(zhí)行時(shí),禁止存儲(chǔ)檢查,其中該延伸指令的其余部分指定所要執(zhí)行的運(yùn)算;以及禁止該延伸指令的相關(guān)存儲(chǔ)檢查。
本發(fā)明的前述目的、特征及優(yōu)點(diǎn),在配合下列說(shuō)明及所附圖示后,將可獲得更好的理解
請(qǐng)參閱

圖1,其是一相關(guān)技術(shù)的微處理器指令格式100的方框圖。該相關(guān)技術(shù)的指令100具有數(shù)量可變的數(shù)據(jù)項(xiàng)101-103,每一項(xiàng)都設(shè)定成一特定值,合在一起便組成微處理器的一特定指令100,該特定指令100指示微處理器執(zhí)行一特定運(yùn)算,例如將兩操作數(shù)相加,或者是將一操作數(shù)從內(nèi)存移至一內(nèi)部緩存器,或從內(nèi)部緩存器移至內(nèi)存。一般而言,指令100內(nèi)的操作碼項(xiàng)102指定了所要執(zhí)行的特定運(yùn)算,而選用(optional)的地址指定位項(xiàng)103位于操作碼102之后,以指定關(guān)于特定運(yùn)算的附加信息,像是如何執(zhí)行運(yùn)算,操作數(shù)位于何處等等。指令格式100并允許程序員在一操作碼102前加上前置碼項(xiàng)101。在操作碼102所指定的特定運(yùn)算執(zhí)行時(shí),前置碼101用來(lái)指示是否使用特定的結(jié)構(gòu)特征。一般來(lái)說(shuō),這些結(jié)構(gòu)特征能應(yīng)用于指令集中任何操作碼102所指定運(yùn)算的大部分。例如,現(xiàn)今前置碼101存在于一些能使用不同大小操作數(shù)(如8位、16位、32位)執(zhí)行運(yùn)算的微處理器中。而當(dāng)許多此類(lèi)處理器被程序化為一預(yù)設(shè)的操作數(shù)大小時(shí)(比如32位),在其個(gè)別指令集中所提供的前置碼101,仍能使程序員依據(jù)各個(gè)指令,選擇性地取代(override)該預(yù)設(shè)的操作數(shù)大小(如為了產(chǎn)生16位的操作數(shù))??蛇x擇的操作數(shù)大小僅是結(jié)構(gòu)特征的一例,在許多現(xiàn)代的微處理器中,這些結(jié)構(gòu)特征能應(yīng)用于眾多可由操作碼102加以指定的運(yùn)算(如加、減、乘、布爾邏輯等)。
圖1所示的指令格式100,有一為業(yè)界所熟知的范例,此即x86指令格式100,其為所有現(xiàn)代的x86-兼容微處理器所采用。更具體他說(shuō),x86指令格式100(也稱(chēng)為x86指令集結(jié)構(gòu)100)使用了8位前置碼101、8位操作碼102以及8位地址指定位103。x86結(jié)構(gòu)100也具有數(shù)個(gè)前置碼101,其中兩個(gè)取代了x86微處理器所預(yù)設(shè)的地址/數(shù)據(jù)大小(如操作碼狀態(tài)66H與67H),另一個(gè)則指示微處理器依據(jù)不同的轉(zhuǎn)譯規(guī)則來(lái)解譯其后的操作碼字節(jié)102(即前置碼值0FH,其使得轉(zhuǎn)譯動(dòng)作是依據(jù)所謂的二字節(jié)操作碼規(guī)則來(lái)進(jìn)行),其它的前置碼101則使特殊運(yùn)算重復(fù)執(zhí)行,直至重復(fù)條件滿(mǎn)足為止(即REP操作碼F0H、F2H及F3H)。
現(xiàn)請(qǐng)參閱圖2,其顯示一表格200,用來(lái)描述一指令集結(jié)構(gòu)的指令201如何對(duì)應(yīng)至圖1指令格式內(nèi)一8位操作碼字節(jié)102的位值。表格200呈現(xiàn)了一8位操作碼圖200的范例,其將一8位操作碼項(xiàng)102所具有的最多256個(gè)值,關(guān)聯(lián)到對(duì)應(yīng)的微處理器操作碼指令201。表格200將操作碼項(xiàng)102的一特定值,譬如02H,映射至一對(duì)應(yīng)的操作碼指令201(即指令I(lǐng)02 201)。在x86操作碼圖的例子中,為此領(lǐng)域中人所熟知的;操作碼值14H是映射至x86的進(jìn)位累加(Add With Carry,ADC)指令,此指令將一8位的直接(immediate)操作數(shù)加至結(jié)構(gòu)緩存器AL的內(nèi)含值。熟悉此領(lǐng)域技術(shù)者也將發(fā)覺(jué),上文提及的x86前置碼101(即66H、67H、0FH、F0H、F2H及F3H)是實(shí)際的操作碼值201,其在不同情況下,指定要將特定的結(jié)構(gòu)延伸項(xiàng)應(yīng)用于隨后的操作碼項(xiàng)102所指定的運(yùn)算。例如,在操作碼14H(正常情況下,是前述的ADC操作碼)前加上前置碼0FH,會(huì)使得x86處理器執(zhí)行一“解壓縮與插入低壓縮的單精度浮點(diǎn)值”(Unpack and Interleave Low Packed Single,precisionFloating-point Values)運(yùn)算,而非原本的ADC運(yùn)算。諸如此x86例子所述的特征,在現(xiàn)代的微處理器中是允許實(shí)現(xiàn)的,這是因?yàn)槲⑻幚砥鲀?nèi)的指令轉(zhuǎn)譯邏輯是依序解譯一指令100的項(xiàng)101-103。所以在過(guò)去,在指令集結(jié)構(gòu)中使用特定操作碼值作為前置碼101,可允許微處理器設(shè)計(jì)者將不少先進(jìn)的結(jié)構(gòu)特征納入兼容舊有軟件的微處理器的設(shè)計(jì)中,而不會(huì)對(duì)未使用那些特定操作碼狀態(tài)的舊有程序,帶來(lái)執(zhí)行上的負(fù)面沖擊。例如,一未曾使用x86操作碼0FH的舊有程序,仍可在今日的x86微處理器上執(zhí)行。而一較新的應(yīng)用程序,借著運(yùn)用x86操作碼0FH作為前置碼101,就能使用許多新進(jìn)納入的x86結(jié)構(gòu)特征,如單一指令多重?cái)?shù)據(jù)(SIMD)運(yùn)算,條件移動(dòng)運(yùn)算等等。
盡管過(guò)去已通過(guò)指定可用的(即多余或未指派的)操作碼值201作為前置碼101(也稱(chēng)為結(jié)構(gòu)特征標(biāo)記/指針101或擴(kuò)展指令101),來(lái)提供結(jié)構(gòu)特征,但許多指令集結(jié)構(gòu)100已因?yàn)橐环浅V苯拥睦碛?,而無(wú)法提供功能上的強(qiáng)化所有可用/多余的操作碼值已被用完,也就是,操作碼圖200中的全部操作碼值已被結(jié)構(gòu)化地指定。當(dāng)所有可用的值被分派為操作碼項(xiàng)102或前置碼項(xiàng)101時(shí),就沒(méi)有剩余的操作碼值可作為納入新特征使用。這個(gè)嚴(yán)重的問(wèn)題存在于現(xiàn)在的許多微處理器結(jié)構(gòu)中,因而迫使設(shè)計(jì)者得在增添結(jié)構(gòu)特征與保留舊有程序的兼容性?xún)烧唛g作抉擇。
值得注意的是,圖2所示的指令201是以一般性的方式表示(即I24、I86),而非具體指定實(shí)際的運(yùn)算(如進(jìn)位累加、減、互斥或)。這是因?yàn)?,在一些不同的微處理器結(jié)構(gòu)中,完全占用的操作碼圖200在結(jié)構(gòu)上,已將納入較新進(jìn)展的可能性排除。雖然圖2例子所提到的,是8位的操作碼項(xiàng)102,熟悉此領(lǐng)域技術(shù)者仍將發(fā)覺(jué),操作碼102的特定大小,除了作為一特殊情況來(lái)討論完全占用的操作碼結(jié)構(gòu)200所造成的問(wèn)題外,其它方面與問(wèn)題本身并不相干。因此,一完全占用的6位操作碼圖將有64個(gè)可結(jié)構(gòu)化地指定的操作碼/前置碼201,并將無(wú)法提供可用/多余的操作碼值作為擴(kuò)充之用。
另一種替代做法,則并非將原有指令集完全廢棄,以一新的格式100與操作碼圖200取代,而是只針對(duì)一部份現(xiàn)有的操作碼201,以新的指令含意取代,如圖2的操作碼40H至4FH以這種混合的技術(shù),微處理器就可以單獨(dú)地以下列兩種模式的一工作其中舊有模式利用操作碼40V-4FH,是按舊有規(guī)則來(lái)解譯,或者以另一種改良模式(enhanced mode)工作,此時(shí)操作碼40H-4FH則按加強(qiáng)的結(jié)構(gòu)規(guī)則來(lái)解譯。此項(xiàng)技術(shù)能允許設(shè)計(jì)者將新特征納入設(shè)計(jì),然而,當(dāng)符合舊有規(guī)格的微處理器在加強(qiáng)模式工作時(shí),缺點(diǎn)仍舊存在,因?yàn)槲⑻幚砥鞑荒軋?zhí)行任何使用操作碼40H-4FH的應(yīng)用程序。因此,站在保留舊有軟件兼容性的立場(chǎng),兼容舊有軟件/加強(qiáng)模式的技術(shù)并非一最佳選擇。
然而,對(duì)于操作碼空間已完全占用的指令集200,且該空間涵蓋所有于符合舊有規(guī)格的微處理器上執(zhí)行應(yīng)用程序的情形,本案發(fā)明人已注意到其中操作碼201的使用狀況,雖然有些指令202是結(jié)構(gòu)化地指定,但未用于能被微處理器執(zhí)行的應(yīng)用程序中。圖2所述的指令I(lǐng)F1 202即為此現(xiàn)象的一例,事實(shí)上,相同的操作碼值202(即F1H)是映射至未用于x86指令集結(jié)構(gòu)的一有效指令202。雖然未使用的x86指令202是有效的x86指令202,其指示要在x86微處理器上執(zhí)行一結(jié)構(gòu)化地指定的運(yùn)算,但它卻未使用于任何能在現(xiàn)代x86微處理器上執(zhí)行的應(yīng)用程序。這個(gè)特殊的x86指令202被稱(chēng)為電路內(nèi)仿真斷點(diǎn)(In Circuit Emulation Breakpoint)(即ICE BKPT,操作碼值為F1H),之前都是專(zhuān)門(mén)使用于一種現(xiàn)在已不存在的微處理器仿真設(shè)備中。ICE BKPT 202從未用于電路內(nèi)仿真器之外的應(yīng)用程序中,并且先前使用ICEBKPT 202的電路內(nèi)仿真設(shè)備已不復(fù)存在。因此,在x86的情形下,本案發(fā)明人已在一完全占用的指令集結(jié)構(gòu)200內(nèi)發(fā)現(xiàn)一樣工具,通過(guò)利用一有效但未使用的操作碼202,以允許在微處理器的設(shè)計(jì)中納入先進(jìn)的結(jié)構(gòu)特征,而不需犧牲舊有軟件的兼容性。在一完全占用的指令集結(jié)構(gòu)200中,本發(fā)明利用一結(jié)構(gòu)化地指定但未使用的操作碼202,作為一指針標(biāo)記指出其后一n位前置碼,因此允許微處理器設(shè)計(jì)者可將最多2n個(gè)最新發(fā)展的結(jié)構(gòu)特征,納入微處理器的設(shè)計(jì)中,同時(shí)保留與所有舊有軟件完全,的兼容性。
本發(fā)明提供一n位的延伸存儲(chǔ)檢查禁止指定位前置碼,以使用前置碼標(biāo)記/延伸前置碼的概念,因而可允許程序員對(duì)于一延伸指令,從提取到執(zhí)行完畢的整個(gè)過(guò)程,指定要禁止其對(duì)應(yīng)的存儲(chǔ)檢查。本發(fā)明的另一實(shí)施例,則將該延伸指令與其后特定數(shù)量指令的執(zhí)行,排除在微處理器的存儲(chǔ)檢查機(jī)制外。本發(fā)明現(xiàn)將參照?qǐng)D3至圖10進(jìn)行討論。
現(xiàn)請(qǐng)參閱圖3,其為本發(fā)明的延伸指令格式300的方框圖。與圖1所討論的格式100非常近似,該延伸指令格式300具有數(shù)量可變的指令項(xiàng)301-305,每一項(xiàng)設(shè)定為一特定值,集合起來(lái)便組成微處理器的一特定指令300。該特定指令300指示微處理器執(zhí)行一特定運(yùn)算,像是將兩操作數(shù)相加,或是將一操作數(shù)從內(nèi)存搬移至微處理器的緩存器內(nèi)。一般而言,指令300的操作碼項(xiàng)302指定了所要執(zhí)行的特定運(yùn)算,而選用的地址指定位項(xiàng)303則位于操作碼302后,以指定該特定運(yùn)算的相關(guān)附加信息,像是如何執(zhí)行運(yùn)算、操作數(shù)所在的緩存器。用于計(jì)算來(lái)源/結(jié)果操作數(shù)的內(nèi)存地址的直接與間接數(shù)據(jù)等等。指令格式300也允許程序員在一操作碼302前加上前置碼項(xiàng)301。在操作碼30的所指定的特定運(yùn)算執(zhí)行時(shí),前置碼項(xiàng)301是用來(lái)指示是否要使用現(xiàn)有的結(jié)構(gòu)特征。
然而,本發(fā)明的延伸指令300是前述圖1指令格式100的一超集(superset),其具有兩個(gè)附加項(xiàng)304與305,可被選擇性作為指令延伸項(xiàng),并置于一格式化延伸指令300中所有其余項(xiàng)301-303之前。這兩個(gè)附加項(xiàng)304與305,其為延伸指令300的一部份,可讓程序員指定是否要禁止或排除延伸指令300的存儲(chǔ)檢查。選用項(xiàng)304與305是一延伸指令標(biāo)記304與一延伸存儲(chǔ)檢查禁止前置碼305。該延伸指令標(biāo)記304是一微處理器指令集內(nèi)另一依據(jù)結(jié)構(gòu)所指定的操作碼。在一x86的實(shí)施例中,該延伸指令標(biāo)記304,或稱(chēng)為擴(kuò)展標(biāo)記304,是用操作碼狀態(tài)F1H,其為早先使用的ICE BKPT指令。擴(kuò)展標(biāo)記304向微處理器邏輯指出,該延伸前置碼305,或稱(chēng)延伸特征指定位305,是跟隨在后,其中該延伸前置碼305指定要禁止延伸指令300的存儲(chǔ)檢查。在一具體實(shí)施例中,擴(kuò)展標(biāo)記304指出,一對(duì)應(yīng)延伸指令300的附隨部分301-303及305指定了微處理器所要執(zhí)行的運(yùn)算。存儲(chǔ)檢查禁止指定位305,或稱(chēng)延伸前置碼305,則指定執(zhí)行該運(yùn)算時(shí),不需進(jìn)行延伸指令300的存儲(chǔ)檢查。微處理器內(nèi)的延伸執(zhí)行邏輯執(zhí)行該運(yùn)算,但該運(yùn)算是在排除任何存儲(chǔ)檢查的情形下執(zhí)行。
此處將本發(fā)明的選擇性地禁止存儲(chǔ)檢查的技術(shù)作個(gè)概述。一延伸指令是組態(tài)為指定一依據(jù)現(xiàn)有微處理器指令集執(zhí)行的運(yùn)算,其中該延伸指令執(zhí)行時(shí)排除存儲(chǔ)檢查。該延伸指令包括該現(xiàn)有指令集的操作碼/指令304其中的一位以及n位的延伸前置碼305。所選取的操作碼/指令作為一指針304,以指出指令300是一延伸特征指令300(即,其指定了微處理器結(jié)構(gòu)的延伸項(xiàng)),而該n位的特征前置碼305則指出要禁止的存儲(chǔ)檢查。在一具體實(shí)施例中,延伸前置碼305具有八位的大小,可指定要禁止一指令及后續(xù)最多255個(gè)指令的存儲(chǔ)檢查,或是指定要禁止該指令與n個(gè)后續(xù)指令的存儲(chǔ)檢查,再加上八位延伸前置碼305的剩余位值所指定的其它延伸特征。n位前置碼的實(shí)施例,則最多可指定要禁止2n個(gè)存儲(chǔ)檢查,或是像前述禁止存儲(chǔ)檢查與其它延伸特征的各種組合。
現(xiàn)請(qǐng)參閱圖4,一表格400顯示依據(jù)本發(fā)明,禁止存儲(chǔ)檢查的指定如何映像至一8位延伸前置碼實(shí)施例的位邏輯狀態(tài)。類(lèi)似于圖2所討論的操作碼圖200,圖4的表格400呈現(xiàn)一8位的延伸前置碼圖400的范例,其將一8位延伸前置碼項(xiàng)305的最多256個(gè)值,關(guān)聯(lián)到一符合舊有規(guī)格微處理器中,一些指令所對(duì)應(yīng)的存儲(chǔ)檢查禁止401(如E34、E4D等)。在一x86的具體實(shí)施例中,本發(fā)明的8位延伸特征前置碼305是提供給存儲(chǔ)檢查禁止401(即E00-EFF)的指令層級(jí)控制用,這些存儲(chǔ)檢查禁止401乃現(xiàn)行x86指令集結(jié)構(gòu)未能另行指定的。
圖4所示的延伸特征401是以一般性的方式表示,而非具體指實(shí)際的特征,這是因?yàn)楸景l(fā)明的技術(shù)可應(yīng)用于各種不同的結(jié)構(gòu)延伸項(xiàng)401與特定的指令集結(jié)構(gòu)。熟悉此領(lǐng)域技術(shù)者將發(fā)覺(jué),許多不同的結(jié)構(gòu)特征401,其中一些已于上文提及,可按此處所述的擴(kuò)展標(biāo)記304/延伸前置碼305技術(shù)將其納入一現(xiàn)有的指令集小圖4的8位前置碼實(shí)施例提供了最多256個(gè)不同的特征401,而一n位前置碼實(shí)施例則具有最多2n個(gè)不同特征401的程序化選擇。
現(xiàn)請(qǐng)參閱圖5,其為解說(shuō)本發(fā)明用來(lái)執(zhí)行選擇性的存儲(chǔ)檢查禁止運(yùn)算的管線(xiàn)化微處理器500的方框圖。微處理器500具有三個(gè)明顯的階段類(lèi)型提取、轉(zhuǎn)譯及執(zhí)行。提取階段具有提取邏輯501,可從外部?jī)?nèi)存503提取指令。所提取的指令被送至延伸預(yù)取邏輯(extended pre-fetch logic)502。延伸預(yù)取邏輯502對(duì)送入的指令執(zhí)行存儲(chǔ)檢查,并組態(tài)為檢測(cè)其中是否具有如前述圖3與圖4的擴(kuò)展標(biāo)記與延伸前置碼的存儲(chǔ)檢查禁止序列。經(jīng)過(guò)存儲(chǔ)檢查的指令以前述方式加以同步化,且緩存于一指令高速緩存504中,并被送入一指令隊(duì)列(instruction queue)505,供一轉(zhuǎn)譯邏輯506存取。該轉(zhuǎn)譯邏輯506是連接至一微指令隊(duì)列508,其包含一延伸轉(zhuǎn)譯邏輯507。執(zhí)行階段則有一執(zhí)行邏輯509,其內(nèi)具有一延伸執(zhí)行邏輯510。
根據(jù)本發(fā)明在工作時(shí)提取邏輯501從外部?jī)?nèi)存503提取格式化指令,并將這些指令送入延伸預(yù)取邏輯502中。延伸預(yù)取邏輯502執(zhí)行存儲(chǔ)檢查,并于所送入指令受到管線(xiàn)后段的等待存儲(chǔ)事件的影響時(shí),起始其同步化動(dòng)作。若檢測(cè)到本發(fā)明的一延伸指令,則延伸預(yù)取邏輯502允許該延伸指令不需經(jīng)過(guò)存儲(chǔ)檢查,即送至指令高速緩存504與指令隊(duì)列505。所提取的指令是按執(zhí)行順序送至指令隊(duì)列505。接著從指令隊(duì)列505提取這些指令,送至轉(zhuǎn)譯邏輯506。轉(zhuǎn)譯邏輯506將每一送入的指令轉(zhuǎn)譯為一對(duì)應(yīng)的微指令序列,以指示微處理器500去執(zhí)行這些指令所指定的運(yùn)算。根據(jù)本發(fā)明,延伸轉(zhuǎn)譯邏輯507檢測(cè)那些具有延伸前置碼標(biāo)記的指令,以進(jìn)行對(duì)應(yīng)的延伸存儲(chǔ)檢查禁止前置碼的轉(zhuǎn)譯動(dòng)作。在一x86的實(shí)施例中,延伸轉(zhuǎn)譯邏輯507組態(tài)為檢測(cè)其值為F1H的延伸前置碼標(biāo)記,其是x86的ICE BKPT操作碼。延伸微指令字段則提供于微指令隊(duì)列506中,以指定要禁止由該指令附隨部分所指定的運(yùn)算的存儲(chǔ)檢查。其它延伸轉(zhuǎn)譯邏輯507的實(shí)施例,則可于延伸微指令字段中,指定要禁止本發(fā)明的一第一指令與后續(xù)一定數(shù)量指令的存儲(chǔ)檢查。
微指令從微指令隊(duì)列508被送至執(zhí)行邏輯509,其中延伸執(zhí)行邏輯510組態(tài)為執(zhí)行微指令所指定的特定運(yùn)算,并對(duì)照管線(xiàn)前段的所有指令的IP位置,來(lái)檢查等待存儲(chǔ)運(yùn)算的目的地址。若一等待存儲(chǔ)運(yùn)算的目的地址與一先前階段的IP位置相符,且該先前階段的指令的延伸微指令字段并未指定要禁止存儲(chǔ)檢查,則延伸執(zhí)行邏輯510將至該先前階段為止的管線(xiàn)清空,并允許該等待存儲(chǔ)運(yùn)算寫(xiě)入其數(shù)據(jù)。在該存儲(chǔ)事件完成后,再重新填充管線(xiàn)。然而,若該先前階段指令的延伸微指令字段指定要禁止存儲(chǔ)檢查,則延伸執(zhí)行邏輯510將排除管線(xiàn)的清空動(dòng)作。因此,標(biāo)記指令(tagged instruction)被允許通過(guò)管線(xiàn)執(zhí)行,并不會(huì)因?yàn)橐缓罄m(xù)階段的存儲(chǔ)事件另行引發(fā)管線(xiàn)的同步化清空與重新填充,而被清空。
熟悉此領(lǐng)域技術(shù)者將發(fā)現(xiàn),圖5所示的微處理器500是現(xiàn)代的管線(xiàn)化微處理器50經(jīng)過(guò)簡(jiǎn)化的結(jié)果。事實(shí)上,現(xiàn)代的管線(xiàn)化微處理器500最多可包含有20至30個(gè)不同的管線(xiàn)階段。然而,這些階段可概括地歸類(lèi)為方框圖所示的三個(gè)階段,因此,圖5的方框圖500可用來(lái)點(diǎn)明前述本發(fā)明實(shí)施例所需的必要組件。為了簡(jiǎn)明起見(jiàn),微處理器500中無(wú)關(guān)的組件并沒(méi)有顯示出來(lái),也未加以討論。
現(xiàn)請(qǐng)參閱圖6,其為本發(fā)明在一微處理器中,用來(lái)指定要禁止一延伸指令的相關(guān)存儲(chǔ)檢查的延伸前置碼600的一示范實(shí)施例方框圖。存儲(chǔ)檢查禁止前置碼600具8位大小,且包括一禁止字段601。在一具體實(shí)施例中,禁止字段601指定要排除該延伸指令的相關(guān)存儲(chǔ)檢查。另一具體實(shí)施例則包含可指定要排除該延伸指令與后續(xù)最多255個(gè)指令的存儲(chǔ)檢查的禁止字段。禁止檢查的指令的數(shù)量是由禁止字段來(lái)指示。
現(xiàn)請(qǐng)參閱圖7,其為圖5的微處理器內(nèi)提取階段邏輯700的方框圖。提取階段邏輯700包括一連接至外部?jī)?nèi)存705的預(yù)取緩沖器704,該預(yù)取緩沖器704提供預(yù)取指令至一延伸預(yù)取邏輯706。該延伸預(yù)取邏輯706具有一提取控制器709,后者是經(jīng)由一禁用信號(hào)(disable signal)708耦合至一禁止序列檢測(cè)器(suppress sequence detector)707。提取控制器709也連接至一具有延伸特征字段703的機(jī)器特定緩存器(machine specific register)702。禁止序列檢測(cè)器707提供一控制信號(hào)SUPP至一等待存儲(chǔ)評(píng)估邏輯(pending storeevaluation logic)710。該等待存儲(chǔ)評(píng)估邏輯710對(duì)包含等待存儲(chǔ)事件的目的地址的多個(gè)緩存器711進(jìn)行存取。在一實(shí)施例中,這些緩存器711被稱(chēng)為較低線(xiàn)性指令指針(linear instruction pointer,LIP)鏈。緩存器711是以管線(xiàn)中的存儲(chǔ)緩沖器(如復(fù)合寫(xiě)入緩沖器(write combine buffer)、因?qū)懢彌_器(write back buffer)等)通過(guò)總線(xiàn)715所提供的目的地址來(lái)進(jìn)行更新。等待存儲(chǔ)評(píng)估邏輯710經(jīng)由SMC HIT信號(hào)耦合至一管線(xiàn)同步邏輯(pipelinesynchronization logic)712。該管線(xiàn)同步邏輯712提供一控制信號(hào)STALL 713至管線(xiàn)控制邏輯(圖中未顯示)。延伸預(yù)取邏輯706將所提取的指令送入一填充緩沖器(fill buffer)714,后者則連接至一指令高速緩存716。
實(shí)際工作上,在從內(nèi)存705提取高速緩存線(xiàn)時(shí),其是被送至預(yù)取緩沖器704。延伸預(yù)取邏輯706提取出高速緩存線(xiàn)的內(nèi)容,并對(duì)照緩存器711的較低LIP鏈中,等待存儲(chǔ)運(yùn)算的目的地址,來(lái)檢查所送入指令的IP地址。若等待存儲(chǔ)評(píng)估邏輯710確定有一預(yù)取指令的IP地址與緩存器711內(nèi)一等待存儲(chǔ)目標(biāo)相符,則SMC HIT信號(hào)被設(shè)定為真,因而驅(qū)使管線(xiàn)同步邏輯712將STALL信號(hào)713設(shè)為真,而開(kāi)始一管線(xiàn)同步化事件。因此,管線(xiàn)暫停工作,直到該等待存儲(chǔ)運(yùn)算將其數(shù)據(jù)寫(xiě)入內(nèi)存為止,接著,該預(yù)取指令重新被提取,并允許進(jìn)入管線(xiàn)執(zhí)行。若該預(yù)取指令的IP地址并未與任何存儲(chǔ)目標(biāo)相符,則延伸預(yù)取邏輯706將該預(yù)取指令送至填充緩沖器714,最后再送至指令高速緩存716。
禁止序列檢測(cè)器707也對(duì)來(lái)自預(yù)取緩沖器704的高速緩存線(xiàn)內(nèi)容進(jìn)行評(píng)估,以檢測(cè)其是否含有一指示要禁止存儲(chǔ)檢查的擴(kuò)展標(biāo)記/延伸前置碼序列。若檢測(cè)到該序列,則SUPP信號(hào)被設(shè)為真,以指示等待存儲(chǔ)評(píng)估邏輯710不要對(duì)較低LIP鏈緩存器711進(jìn)行評(píng)估,并允許對(duì)應(yīng)的延伸指令送入填充緩沖器714。
在微處理器通電啟動(dòng)期間,機(jī)器特定緩存器702內(nèi)的延伸字段703的狀態(tài)是通過(guò)信號(hào)啟動(dòng)狀態(tài)(signal power-up state)701決定,以指出該特定微處理器是否能處理本發(fā)明的用來(lái)禁止微處理器的存儲(chǔ)檢查的延伸指令。在一具體實(shí)施例中,信號(hào)701從一特征控制緩存器(圖上未顯示)導(dǎo)出,該特征控制緩存器則讀取一于制造時(shí)即已組態(tài)的熔絲數(shù)組(fuse array)(未顯示)。機(jī)器特定緩存器702將延伸特征字段703的狀態(tài)送至提取控制器709及下述的其它邏輯。提取控制邏輯709則決定是否要對(duì)從預(yù)取緩沖器704所取得的高速緩存線(xiàn)數(shù)據(jù)進(jìn)行評(píng)估,以檢測(cè)存儲(chǔ)檢查禁止序列。提供這樣的控制特征,可允許監(jiān)督應(yīng)用程序(如SIOS)允許/禁用微處理器的延伸執(zhí)行特征。若延伸特征被禁用,則具有被選為延伸特征標(biāo)記的操作碼狀態(tài)的指令,將如同任何其它指令般,對(duì)照等待存儲(chǔ)事件來(lái)進(jìn)行檢查。提取控制器709則指示禁止序列檢測(cè)器707通過(guò)將禁用信號(hào)708設(shè)為真,來(lái)禁用延伸序列的檢測(cè)。
現(xiàn)請(qǐng)參閱圖8,其為圖5的微處理器內(nèi)轉(zhuǎn)譯階段邏輯800的方框圖。轉(zhuǎn)譯階段邏輯800具有一指令緩沖器804,按照本發(fā)明,其提供延伸指令至轉(zhuǎn)譯邏輯805。轉(zhuǎn)譯邏輯805是連接至一具有一延伸特征字段803的機(jī)器特定緩存器802,如前面圖7部分所述。轉(zhuǎn)譯邏輯805具一轉(zhuǎn)譯控制器806,其提供一禁用信號(hào)807至一擴(kuò)展指令檢測(cè)器808及一延伸前置碼轉(zhuǎn)譯器809。擴(kuò)展指令檢測(cè)器808連接至延伸轉(zhuǎn)譯器809及一指令轉(zhuǎn)譯器810。延伸轉(zhuǎn)譯邏輯809與指令轉(zhuǎn)譯邏輯810存取一控制只讀存儲(chǔ)器(ROM)811,其中存儲(chǔ)了對(duì)應(yīng)至某些延伸指令的模板(template)微指令序列。轉(zhuǎn)譯邏輯805也包含一微指令緩沖器812,其具有一操作碼延伸項(xiàng)字段813、一微操作碼字段814、一目的字段815、一來(lái)源字段816以及一位移字段817。
實(shí)際工作上,在微處理器通電啟動(dòng)期間,機(jī)器特定緩存器802內(nèi)的延伸字段803的狀態(tài)是通過(guò)信號(hào)啟動(dòng)狀態(tài)801決定,以指出該特定微處理器是否能轉(zhuǎn)譯與執(zhí)行本發(fā)明的延伸指令,如前面圖8部分所述。機(jī)器特定緩存器802將延伸特征字段803的狀態(tài)送至轉(zhuǎn)譯控制器806。轉(zhuǎn)譯控制邏輯806則決定從指令緩沖器804所取得的指令要依照延伸轉(zhuǎn)譯規(guī)則或是公用轉(zhuǎn)譯規(guī)則來(lái)進(jìn)行轉(zhuǎn)譯。若延伸特征被禁用,則具有被選為延伸特征標(biāo)記的操作碼狀態(tài)的指令,將依照公用轉(zhuǎn)譯規(guī)則來(lái)轉(zhuǎn)譯。在一x86的具體實(shí)施例中,選取操作碼狀態(tài)F1H作為標(biāo)記,則在公用的轉(zhuǎn)譯規(guī)則下,遇到F1H將造成不合法的指令異常(exception)。若延伸轉(zhuǎn)譯被禁用,指令轉(zhuǎn)譯器810將轉(zhuǎn)譯所有送入的指令,并對(duì)微指令812的所有字段813至817進(jìn)行組態(tài)。然而,在延伸轉(zhuǎn)譯規(guī)則下,若遇到標(biāo)記,則會(huì)被擴(kuò)展指令檢測(cè)器808檢測(cè)出來(lái)。擴(kuò)展指令檢測(cè)器808將指示延伸前置碼轉(zhuǎn)譯器809依據(jù)延伸轉(zhuǎn)譯規(guī)則,轉(zhuǎn)譯該延伸指令的延伸前置碼部分,并對(duì)操作碼延伸項(xiàng)字段813進(jìn)行組態(tài),以指示要禁止該延伸指令所對(duì)應(yīng)的微指令序列的存儲(chǔ)檢查。指令轉(zhuǎn)譯器810將轉(zhuǎn)譯該延伸指令的其余部分,并對(duì)微指令812的微操作碼字段814、來(lái)源字段816、目的字段815以及位移字段817進(jìn)行組態(tài)。某些特定指令將導(dǎo)致對(duì)控制ROM 811的存取,以獲取對(duì)應(yīng)的微指令序列模板。經(jīng)過(guò)組態(tài)的微指令812被送至一微指令隊(duì)列(未顯示于圖中),由處理器進(jìn)行后續(xù)執(zhí)行。
現(xiàn)請(qǐng)參閱圖9,其為圖5微處理器內(nèi)的執(zhí)行階段邏輯900的方框圖。該執(zhí)行階段邏輯900具一延伸存儲(chǔ)邏輯(extended store logic)908,其連接至一數(shù)據(jù)高速緩存911與一總線(xiàn)單元912??偩€(xiàn)單元912是用于指導(dǎo)一內(nèi)存總線(xiàn)(圖中未顯示)上的內(nèi)存存取作業(yè)(memory transaction)。依本發(fā)明,延伸存儲(chǔ)邏輯908從微處理器前一階段的一延伸微指令緩沖器901接收微指令,從數(shù)據(jù)緩沖器902接收一數(shù)據(jù)操作數(shù),并從地址緩沖器903接收一目的地址操作數(shù)。延伸存儲(chǔ)邏輯908包含一存儲(chǔ)檢查邏輯909,后者分別連接至多個(gè)線(xiàn)性IP緩存器905、一管線(xiàn)同步邏輯914(經(jīng)由IP HIT信號(hào))以及多個(gè)存儲(chǔ)緩沖器910。這些線(xiàn)性IP緩存器905也稱(chēng)為較高LIP鏈,且每一緩存器905具有一IP字段906與一存儲(chǔ)檢查禁止字段907。較高LIP鏈905的內(nèi)容包含位于前面管線(xiàn)階段的指令的虛擬地址,這些內(nèi)容是從前面管線(xiàn)階段經(jīng)由總線(xiàn)904依序送至較高LIP鏈905。
實(shí)際工作上,延伸存儲(chǔ)邏輯908根據(jù)延伸微指令緩沖器901中的微指令的指示,通過(guò)總線(xiàn)單元912將操作數(shù)寫(xiě)入高速緩存911或外部?jī)?nèi)存。就延伸微指令所指示的寫(xiě)入/存儲(chǔ)運(yùn)算而言,存儲(chǔ)檢查邏輯909從地址緩沖器903接收運(yùn)算所需的目的地址信息,并從緩沖器902接收所要存儲(chǔ)的操作數(shù)。存儲(chǔ)檢查邏輯909接著將地址與數(shù)據(jù)送入存儲(chǔ)緩沖器910,同時(shí)評(píng)估較高LIP鏈905的內(nèi)容,以判斷管線(xiàn)內(nèi)是否有一指令,其虛擬IP地址與等待存儲(chǔ)事件的目的地址相符。若在較高LIP鏈905中發(fā)現(xiàn)一相符的虛擬IP地址906,則存儲(chǔ)檢查邏輯909檢視相關(guān)的存儲(chǔ)檢查禁止字段907。若相關(guān)字段907的內(nèi)容指明要禁止存儲(chǔ)檢查,存儲(chǔ)檢查邏輯909便允許管線(xiàn)繼續(xù)工作,不被中斷。存儲(chǔ)緩沖器910的內(nèi)容則以符合該存儲(chǔ)事件被賦予的內(nèi)存特性,經(jīng)由總線(xiàn)單元912寫(xiě)入高速緩存911或外部?jī)?nèi)存,其中該內(nèi)存特性是按特定處理器(processor-specific)的結(jié)構(gòu)常規(guī)所指定。然而,若存儲(chǔ)檢查邏輯909決定不要禁止一相符虛擬地址906的存儲(chǔ)檢查,則IP HIT信號(hào)會(huì)被設(shè)為真,以通知管線(xiàn)同步邏輯914開(kāi)始一管線(xiàn)清空/重新填充的事件,該事件是進(jìn)行至檢測(cè)出該相符虛擬IP地址的管線(xiàn)階段為止。管線(xiàn)同步邏輯914于是通過(guò)FLUSH信號(hào)915開(kāi)始管線(xiàn)同步化事件。隨著指令被處理,延伸微指令則與一管線(xiàn)時(shí)鐘脈沖(未顯示)同步,被送至微指令緩存器913。
此處對(duì)本發(fā)明的重要技術(shù)特征(如圖3至圖9部分所述)做個(gè)整理。通過(guò)使用一已跟據(jù)結(jié)構(gòu)指定、但實(shí)際未使用的操作碼作為標(biāo)記,本發(fā)明可在一延伸指令中提供一種可程序化的標(biāo)記。前置碼組合。在一具體實(shí)施例中,前置碼是用來(lái)指示一符合舊有規(guī)格的微處理器只禁止延伸指令的存儲(chǔ)檢查。在另一不同的實(shí)施例中,前置碼則指示符合舊有規(guī)格的微處理器禁止延伸指令與后續(xù)一定數(shù)量指令的存儲(chǔ)檢查。當(dāng)延伸指令被提取時(shí),本發(fā)明的延伸預(yù)取邏輯檢測(cè)是否有標(biāo)記-前置碼組合,并允許延伸指令送入處理器的指令高速緩存,而不對(duì)照等待存儲(chǔ)事件進(jìn)行任何存儲(chǔ)檢查。延伸轉(zhuǎn)譯邏輯則通過(guò)本發(fā)明的延伸微指令內(nèi)的操作碼延伸項(xiàng)字段,指明要禁止延伸指令的對(duì)應(yīng)微指令序列的存儲(chǔ)檢查。操作碼延伸項(xiàng)字段的內(nèi)容是反映在較高LIP鏈中的存儲(chǔ)檢查禁止字段,如此當(dāng)延伸存儲(chǔ)邏輯處理一存儲(chǔ)事件時(shí),對(duì)于已指定要禁止存儲(chǔ)檢查的延伸指令而言,并不會(huì)啟動(dòng)同步化事件。
因此,本發(fā)明賦予程序員或自動(dòng)化程序代碼編譯裝置(automated codecompilation device)一種機(jī)制,可用來(lái)指示符合舊有規(guī)格的微處理器去禁止單一指令或指令群的存儲(chǔ)檢查,借以克服在相同高速緩存線(xiàn)內(nèi)程序代碼與數(shù)據(jù)的交錯(cuò)所造成的管線(xiàn)同步化清空問(wèn)題,并提供一種更具彈性的工具,來(lái)實(shí)作包含自我修正碼的算法(algorithm)。
現(xiàn)請(qǐng)參閱圖10,其為描述本發(fā)明對(duì)可使程序員在指令層級(jí)取代微處理器內(nèi)的存儲(chǔ)檢查過(guò)程的指令,進(jìn)行提取、轉(zhuǎn)譯與執(zhí)行的方法的工作流程圖1000。流程開(kāi)始于方框1002,其中一個(gè)組態(tài)有延伸特征指令的程序,被送至微處理器。流程接著進(jìn)行至方框1004。
在方框1004中,下一個(gè)指令被提取,以進(jìn)入微處理器的管線(xiàn)。流程接著進(jìn)行至判斷方框1008。
在判斷方框1008中,對(duì)方框1004中所提取的指令進(jìn)行評(píng)估,以判斷是否包含一延伸擴(kuò)展碼-延伸前置碼序列。在一x86的實(shí)施例中,該評(píng)估是用來(lái)檢測(cè)其后為一禁止存儲(chǔ)檢查指定位項(xiàng)的操作碼值F1(ICE BKPT)。若檢測(cè)到該延伸擴(kuò)展碼與后續(xù)項(xiàng),則流程進(jìn)行至方框1010。若未檢測(cè)到該延伸擴(kuò)展碼與延伸指定位,則流程進(jìn)行至方框1006。
在方框1006中,以等待存儲(chǔ)事件對(duì)方框1004中所提取的指令進(jìn)行同步化。其中,對(duì)等待存儲(chǔ)事件的目標(biāo)進(jìn)行評(píng)估,以判斷是否與該提取指令的虛擬地址相符。若相符,則管線(xiàn)暫停工作,并允許這些等待存儲(chǔ)事件完成動(dòng)作。接著,該提取指令從外部記憶體重新被提取,流程則進(jìn)行至方框1012。
在方框1010中,譯碼延伸指令的延伸前置碼部分,以指定在一對(duì)應(yīng)微指令序列通過(guò)管線(xiàn)時(shí),要禁止該微指令序列的存儲(chǔ)檢查。存儲(chǔ)檢查的禁止,是通過(guò)組態(tài)本發(fā)明的延伸微操作碼字段來(lái)指定。流程接著進(jìn)行到方框1012。
在方框1012中,該指令的所有其余部分被轉(zhuǎn)譯,以決定一指定運(yùn)算、緩存器操作數(shù)的位置、內(nèi)存地址指定位以及跟據(jù)現(xiàn)有微處理器指令集,由前置碼所指定的現(xiàn)有結(jié)構(gòu)特征的使用。流程接著進(jìn)行至方框1014。
在方框1014中,一延伸微指令序列被組態(tài)為指定運(yùn)算及其對(duì)應(yīng)的操作碼延伸項(xiàng)。流程接著進(jìn)行至方框1016。
在方框1016中,多個(gè)微指令序列,其中包含方框1014所組態(tài)的延伸微指令序列,按轉(zhuǎn)譯裝置的處理順序,送至一微指令隊(duì)列,由微處理器執(zhí)行。流程接著進(jìn)行至判斷方框1018。
在判斷方框1018中,下一個(gè)微指令序列由本發(fā)明的一延伸執(zhí)行邏輯進(jìn)行提取。該延伸執(zhí)行邏輯評(píng)估該下個(gè)微指令序列,以判斷是否有指定一存儲(chǔ)事件。若沒(méi)有,則流程進(jìn)行至方框1028。若有,則流程進(jìn)行至方框1020。
在方框1020中,由于已指定一存儲(chǔ)事件,存儲(chǔ)檢查邏輯便查詢(xún)本發(fā)明的一較高LIP鏈。流程接著進(jìn)行至判斷方框1022。
在判斷方框1022中進(jìn)行評(píng)估,以判斷該存儲(chǔ)事件的目的地址,是否與管線(xiàn)中位在該存儲(chǔ)事件后的指令的任何虛擬IP地址相符。若在該LIP鏈中發(fā)現(xiàn)一相符的虛擬IP地址,則流程進(jìn)行至判斷方框1024。若未發(fā)現(xiàn),則流程進(jìn)行至方框1028。
在判斷方框1024中,評(píng)估該相符虛擬IP地址的相關(guān)存儲(chǔ)檢查禁止字段,以判斷是否要禁止相關(guān)指令的存儲(chǔ)檢查。若是,則流程進(jìn)行至方框1028,若否,則流程進(jìn)行至方框1026。
在方框1026中,延伸執(zhí)行邏輯指出,該相關(guān)指令需要進(jìn)行一管線(xiàn)同步化事件。流程接著進(jìn)行至方框1028。
在方框1028中,執(zhí)行該下個(gè)微指令序列所指定的運(yùn)算。流程接著進(jìn)行至方框1030。
在方框1030中,本方法完成。
雖然本發(fā)明及其目的。特征與優(yōu)點(diǎn)已詳細(xì)敘述,其它實(shí)施例也可包含在本發(fā)明的范圍內(nèi)。例如,本發(fā)明已就如下的技術(shù)加以敘述利用已完全占用的指令集結(jié)構(gòu)內(nèi)一單一、未使用的操作碼狀態(tài)作為標(biāo)記,以指出其后的延伸特征前置碼。但本發(fā)明的范圍就任意一方面來(lái)看,并不限于已完全占用的指令集結(jié)構(gòu),或未使用的指令,或是單一標(biāo)記。相反地,本發(fā)明涵蓋了未完全映像的指令集、具已使用操作碼的實(shí)施例以及使用一個(gè)以上的指令標(biāo)記的實(shí)施例。例如,考慮一沒(méi)有未使用操作碼狀態(tài)的指令集結(jié)構(gòu)。本發(fā)明的一具體實(shí)施例包含了選取一作為擴(kuò)展標(biāo)記的操作碼狀態(tài),其中選取標(biāo)準(zhǔn)是按市場(chǎng)因素而決定。另一具體實(shí)施例則包含使用操作碼的一特殊組合作為標(biāo)記,如操作碼狀態(tài)7FH的連續(xù)出現(xiàn)。因此,本發(fā)明的本質(zhì)是在于使用一標(biāo)記序列,其后則為一n位的延伸前置碼,可允許程序員/編譯員于一現(xiàn)有的微處理器指令集中,指定要禁止個(gè)別指令或指令群的存儲(chǔ)檢查。
此外,雖然上文是利用微處理器為例來(lái)解說(shuō)本發(fā)明及其目的。特征和優(yōu)點(diǎn),熟悉此領(lǐng)域技術(shù)者仍可察覺(jué),本發(fā)明的范圍并不限于微處理器的結(jié)構(gòu),而可涵蓋所有形式的可程序化裝置,如信號(hào)處理器、工業(yè)用控制器(industrialcontroller)。陣列處理機(jī)及其它同類(lèi)裝置。
權(quán)利要求
1.一種可在一微處理器內(nèi)進(jìn)行指令層級(jí)的存儲(chǔ)檢查控制的裝置,其特征在于,它包含一提取邏輯,用來(lái)接收一延伸指令,其中該延伸指令包含一延伸前置碼,用于指定要禁止該延伸指令的存儲(chǔ)檢查;以及一延伸前置碼標(biāo)記,是一現(xiàn)有指令集內(nèi)另一結(jié)構(gòu)操作碼;其中該提取邏輯排除延伸指令的相關(guān)等待存儲(chǔ)事件的存儲(chǔ)檢查;以及一轉(zhuǎn)譯邏輯,連接至提取邏輯,用于將延伸指令轉(zhuǎn)譯成一微指令序列,以指示微處理器在一指定運(yùn)算執(zhí)行時(shí),排除存儲(chǔ)檢查。
2.如權(quán)利要求1所述的裝置,其特征在于所述的延伸指令還包含現(xiàn)有指令集的指令項(xiàng)。
3.如權(quán)利要求2所述的裝置,其特征在于所述的指令項(xiàng)指定微處理器所要執(zhí)行的指定運(yùn)算,且指定運(yùn)算執(zhí)行時(shí)將另行執(zhí)行存儲(chǔ)檢查。
4.如權(quán)利要求3所述的裝置,其特征在于若在一特定指令完成執(zhí)行前,檢測(cè)到一存儲(chǔ)事件,其中存儲(chǔ)事件的一目的地址與特定指令的位置相符,則一存儲(chǔ)檢查邏輯將另行從微處理器清除特定指令與所有后續(xù)提取的指令,并在存儲(chǔ)事件完成后,從特定指令的位置開(kāi)始重新提取指令。
5.如權(quán)利要求1所述的裝置,其特征在于所述的提取邏輯包含延伸預(yù)取邏輯,組態(tài)為檢測(cè)延伸前置碼與延伸前置碼標(biāo)記,并允許該延伸指令在不需檢查這些等待存儲(chǔ)事件的情形下,進(jìn)行至轉(zhuǎn)譯邏輯。
6.如權(quán)利要求5所述的裝置,其特征在于一等待存儲(chǔ)評(píng)估邏輯另行評(píng)估微處理器管線(xiàn)中前面的指令,以檢測(cè)這些等待存儲(chǔ)事件,若發(fā)現(xiàn)這些等待存儲(chǔ)事件的一目的地址與一所提取指令的位置相符,則該存儲(chǔ)檢查邏輯暫停提取指令的執(zhí)行,以允許更新目的地址。
7.如權(quán)利要求1所述的裝置,其特征在于所述的延伸前置碼包含一禁止字段,用來(lái)指定要禁止延伸指令的相關(guān)存儲(chǔ)檢查。
8.如權(quán)利要求1所述的裝置,其特征在于所述的延伸前置碼包含一禁止字段,用來(lái)指定要禁止延伸指令與一指定數(shù)量的后續(xù)指令的相關(guān)存儲(chǔ)檢查。
9.如權(quán)利要求1所述的裝置,其特征在于所述的轉(zhuǎn)譯邏輯包含一擴(kuò)展指令檢測(cè)邏輯,用于檢測(cè)該延伸前置碼標(biāo)記;一指令轉(zhuǎn)譯邏輯,用來(lái)決定該指定運(yùn)算,并在微指令序列內(nèi)指定該指定運(yùn)算;以及一延伸轉(zhuǎn)譯邏輯,連接至擴(kuò)展指令檢測(cè)邏輯與指令轉(zhuǎn)譯邏輯,用來(lái)在微指令序列內(nèi)指定,要在指定運(yùn)算執(zhí)行時(shí),排除存儲(chǔ)檢查。
10.一種擴(kuò)充一現(xiàn)有指令集以在一微處理器管線(xiàn)內(nèi)選擇性地禁止存儲(chǔ)檢查的微處理器機(jī)制,其特征在于,它包含一延伸指令,組態(tài)為指定延伸指令的相關(guān)存儲(chǔ)檢查要被禁止,其中該延伸指令包含現(xiàn)有指令集其中一選取的操作碼,其后則接著一n位的延伸前置碼,該選取的操作碼指出延伸指令,而該n位的延伸前置碼則指示要禁止存儲(chǔ)檢查;以及一轉(zhuǎn)譯器,組態(tài)為接收延伸指令,產(chǎn)生一微指令序列,以指示一微處理器執(zhí)行一指定運(yùn)算,并在指定運(yùn)算執(zhí)行時(shí),排除相關(guān)的存儲(chǔ)檢查。
11.如權(quán)利要求10所述的微處理器機(jī)制,其特征在于所述的延伸指令還包含其余指令項(xiàng),組態(tài)為指定該指定運(yùn)算。
12.如權(quán)利要求10所述的微處理器機(jī)制,其特征在于所述的n位前置碼包含一禁止字段,組態(tài)為指定要禁止延伸指令的存儲(chǔ)檢查。
13.如權(quán)利要求10所述的微處理器機(jī)制,其特征在于所述的n位前置碼包含一禁止字段,組態(tài)為指定要禁止該延伸指令與一指定數(shù)量的后續(xù)指令的存儲(chǔ)檢查。
14.如權(quán)利要求10所述的微處理器機(jī)制,其特征在于所述的轉(zhuǎn)譯器包含一擴(kuò)展指令檢測(cè)器,用來(lái)檢測(cè)該延伸指令內(nèi)的選取操作碼;一指令轉(zhuǎn)譯器,用來(lái)轉(zhuǎn)譯延伸指令的其余部分,以決定該指定運(yùn)算;以及一延伸前置碼轉(zhuǎn)譯器,連接至擴(kuò)展指令檢測(cè)器及指令轉(zhuǎn)譯器,用來(lái)轉(zhuǎn)譯n位的延伸前置碼,并在微指令序列內(nèi)指定要禁止存儲(chǔ)檢查。
15.如權(quán)利要求10所述的微處理器機(jī)制,其特征在于還包含一延伸預(yù)取邏輯,用來(lái)從內(nèi)存接收延伸指令,檢測(cè)選取的操作碼與n位的延伸前置碼,并在不檢查等待存儲(chǔ)事件是否與該延伸指令的位置相符的情形下,允許延伸指令送至轉(zhuǎn)譯器。
16.一種為一現(xiàn)有指令集增添禁止指令的存儲(chǔ)檢查特征的模塊,其特征在于,它包含一擴(kuò)展標(biāo)記,由一提取邏輯接收,并指出一對(duì)應(yīng)指令的附隨部分是指定了所要執(zhí)行的一運(yùn)算,其中擴(kuò)展標(biāo)記為現(xiàn)有指令集內(nèi)的一第一操作碼;一存儲(chǔ)檢查禁止指定位,連接至擴(kuò)展標(biāo)記,且為附隨部分其中之一,用來(lái)指定在運(yùn)算執(zhí)行時(shí)要禁止存儲(chǔ)檢查;一轉(zhuǎn)譯邏輯,連接至提取邏輯,用于產(chǎn)生一微指令序列,以指示一微處理器執(zhí)行該運(yùn)算,并在微指令序列內(nèi)指定要禁止存儲(chǔ)檢查;以及一延伸執(zhí)行邏輯,連接至轉(zhuǎn)譯邏輯,接收該微指令序列,并以不進(jìn)行存儲(chǔ)檢查的方式執(zhí)行運(yùn)算。
17.如權(quán)利要求16所述的模塊,其特征在于所述的轉(zhuǎn)譯邏輯包含一擴(kuò)展標(biāo)記檢測(cè)邏輯,用來(lái)檢測(cè)擴(kuò)展標(biāo)記,并指示該附隨部分的轉(zhuǎn)譯動(dòng)作需跟據(jù)延伸轉(zhuǎn)譯常規(guī)(conventions);以及一譯碼邏輯,連接至該擴(kuò)展標(biāo)記檢測(cè)邏輯,用來(lái)跟據(jù)現(xiàn)有指令集的常規(guī),執(zhí)行指令的轉(zhuǎn)譯動(dòng)作,并跟據(jù)延伸轉(zhuǎn)譯常規(guī)執(zhí)行對(duì)應(yīng)指令的轉(zhuǎn)譯,以允許該運(yùn)算以不進(jìn)行存儲(chǔ)檢查的方式執(zhí)行。
18.一種擴(kuò)充一現(xiàn)有指令集結(jié)構(gòu)的方法,以在指令層級(jí)禁止存儲(chǔ)檢查,該方法包含提供一延伸指令,該延伸指令包含一延伸標(biāo)記及一延伸前置碼,其中延伸標(biāo)記是現(xiàn)有指令集結(jié)構(gòu)其中一第一操作碼項(xiàng);通過(guò)該延伸前置碼指定在延伸指令執(zhí)行時(shí)禁止存儲(chǔ)檢查,其中該延伸指令的其余部分指定所要執(zhí)行的一運(yùn)算;以及禁止該延伸指令的相關(guān)存儲(chǔ)檢查。
19.如權(quán)利要求18所述的方法,其特征在于所述的指定動(dòng)作包含使用現(xiàn)有指令集結(jié)構(gòu)的一第二操作碼項(xiàng)來(lái)指定運(yùn)算。
20.如權(quán)利要求18所述的方法,其特征在于還包含將該延伸指令轉(zhuǎn)譯成一微指令序列,微指令序列是指示一延伸執(zhí)行邏輯以不進(jìn)行存儲(chǔ)檢查的方式執(zhí)行該運(yùn)算。
21.如權(quán)利要求20所述的方法,其特征在于所述的轉(zhuǎn)譯延伸指令的動(dòng)作包含在一轉(zhuǎn)譯邏輯內(nèi)檢測(cè)該延伸標(biāo)記;以及按照延伸轉(zhuǎn)譯規(guī)則譯碼延伸前置碼與延伸指令的其余部分,以產(chǎn)生微指令序列。
全文摘要
本發(fā)明提供一種裝置及方法,用于擴(kuò)充微處理器上指令集,以在指令層級(jí)選擇性地禁止存儲(chǔ)檢查。該裝置包括一提取邏輯與一轉(zhuǎn)譯邏輯。提取邏輯接收一延伸指令。該延伸指令具有一延伸前置碼與一延伸前置碼標(biāo)記。該延伸前置碼指定要禁止延伸指令的存儲(chǔ)檢查。該延伸前置碼標(biāo)記則為一現(xiàn)有指令集內(nèi)另一結(jié)構(gòu)操作碼。提取邏輯排除了延伸指令的相關(guān)等待存儲(chǔ)事件的存儲(chǔ)檢查。轉(zhuǎn)譯邏輯連接至提取邏輯,用來(lái)將延伸指令轉(zhuǎn)譯成一微指令序列,以指示微處理器在一指定運(yùn)算執(zhí)行時(shí),排除存儲(chǔ)檢查。
文檔編號(hào)G06F9/38GK1453702SQ03122280
公開(kāi)日2003年11月5日 申請(qǐng)日期2003年4月25日 優(yōu)先權(quán)日2002年10月29日
發(fā)明者G·葛蘭·亨利, 羅德·E·胡克 申請(qǐng)人:智慧第一公司
網(wǎng)友詢(xún)問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1