專利名稱:保持分離隊(duì)列功能單元之間的狀態(tài)一致性的方法及裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及管線化微處理器的領(lǐng)域,特別涉及具有多個(gè)功能單元的管線化微處理器,即保持分離隊(duì)列功能單元之間的狀態(tài)一致性的方法及裝置。
背景技術(shù):
現(xiàn)代的微處理器通常具有多個(gè)功能單元,如分別用以執(zhí)行整數(shù)、浮點(diǎn)及多媒體指令的整數(shù)單元(integer unit,簡(jiǎn)稱IU)、浮點(diǎn)單元(floating-point unit,簡(jiǎn)稱FPU)及向量算術(shù)單元,如MMX單元(MXU)。每一功能單元為一具有多重階段的管線,當(dāng)一個(gè)指令或運(yùn)算經(jīng)過管線時(shí),每個(gè)階段都會(huì)執(zhí)行此指令或運(yùn)算的一部份。
因?yàn)楦↑c(diǎn)及多媒體指令通常涉及較長(zhǎng)的算術(shù)計(jì)算,所以FPU及MXU通常會(huì)比IU需要更多的時(shí)鐘來執(zhí)行指令。這在某些情況下,會(huì)造成IU管線的運(yùn)作停頓,例如FPU或MXU尚未準(zhǔn)備好接收另一個(gè)指令或運(yùn)算的時(shí)候。此外,由于數(shù)據(jù)高速緩存會(huì)在FPU或MXU未準(zhǔn)備好接收其所要送出的數(shù)據(jù)而產(chǎn)生停頓,所以FPU及MXU需要更多時(shí)鐘來執(zhí)行的這個(gè)事實(shí),會(huì)造成數(shù)據(jù)高速緩存的運(yùn)作缺乏效率。為了解決這些問題,可加入一個(gè)指令及數(shù)據(jù)隊(duì)列至FPU或MXU,以接收指令及其相關(guān)的數(shù)據(jù),以使IU及數(shù)據(jù)高速緩存能持續(xù)運(yùn)作。
微處理器納入微處理器的用戶可見(user-visible)狀態(tài)的概念。例如,在x86結(jié)構(gòu)的微處理器中,用戶可見狀態(tài)包括用戶可見緩存器檔案,其包括一般用途緩存器(如EAX緩存器)、功能單元的相關(guān)緩存器(如浮點(diǎn)緩存器)以及如標(biāo)志緩存器的其它緩存器。
一個(gè)指令必須已到達(dá)處理器結(jié)構(gòu)所定義的完成時(shí)刻,才可更新用戶可見狀態(tài),例如修改緩存器檔案。這是因?yàn)槟承┦录驐l件會(huì)發(fā)生,而將指令無效化。也即,某些事件或條件會(huì)發(fā)生,以致于處理器應(yīng)該停止執(zhí)行指令,特別是不應(yīng)該更新處理器的用戶可見狀態(tài)。例如,指令會(huì)依據(jù)分支指令預(yù)測(cè),被假想地提取,以進(jìn)入執(zhí)行流中。若處理器后來判斷此分支預(yù)測(cè)為錯(cuò)誤,即被假想地提取,以進(jìn)入執(zhí)行流中。若處理器后來判斷此分支預(yù)測(cè)為錯(cuò)誤,即使指令已在功能單元管線的各個(gè)階段完成部份執(zhí)行,也必須將此分支后所假想執(zhí)行的指令無效化,且不允許其更新處理器的用戶可見狀態(tài)。另外一種無效化事件的例子為異常(exception),如分頁錯(cuò)誤異常、一般保護(hù)異常或無效運(yùn)算碼異常。此外,指令可能在初進(jìn)入管線時(shí)就無效。這種情況最常見的原因,是由于未命中指令高速緩存而造成管線階段未填入有效指令,而產(chǎn)生運(yùn)作停頓或泡沫(bubble)。
當(dāng)一功能單元如FPU準(zhǔn)備要完成指令的執(zhí)行時(shí),F(xiàn)PU需依據(jù)所執(zhí)行的特定指令,來更新處理器的用戶可見狀態(tài)。為了更新用戶可見狀態(tài),F(xiàn)PU必須知道此指令仍是有效的,也即,準(zhǔn)許此指令更新處理器的用戶可見狀態(tài)。為了確定此指令仍是有效的,常用的處理器會(huì)在執(zhí)行指令有效化功能的功能單元的末端,設(shè)置一隊(duì)列。
例如,在圖1的微處理器100中,整數(shù)管線104為執(zhí)行指令有效化功能的功能單元。也即,會(huì)將無效化條件(如分支預(yù)測(cè)錯(cuò)誤或異常)告知整數(shù)管線104,其會(huì)依據(jù)所告知的條件,來記錄指令或運(yùn)算是否有效。圖1的常用微處理器100會(huì)在整數(shù)管線104的末端,設(shè)置隊(duì)列106。因此,指令102必須在置入FPU隊(duì)列106之前,經(jīng)過整數(shù)管線104。通過將隊(duì)列106置于整數(shù)管線104的末端,一旦指令或運(yùn)算到達(dá)整數(shù)管線104的末端,就能確保不會(huì)發(fā)生使指令或運(yùn)算無效化的事件或條件。因此,一旦指令到達(dá)管線104的末端,且進(jìn)入FPU隊(duì)列106,即可確保指令為有效。
然而,將隊(duì)列置于執(zhí)行有效化功能的功能單元末端會(huì)有缺點(diǎn)。要求指令在進(jìn)入隊(duì)列之前,需進(jìn)行至有效化功能單元管線的末端,會(huì)使指令在進(jìn)入隊(duì)列前,必須先通過有效化功能單元管線的底部階段,這些階段原本可能不需要經(jīng)過,卻因此而造成額外的延遲。也即,功能單元原本可能在離有效化功能單元管線末端還很遠(yuǎn)的一個(gè)階段,即可接收指令并開始執(zhí)行。例如,在有效化功能單元管線的中間階段,數(shù)據(jù)高速緩存可能已提供其它功能單元如FPU所需的數(shù)據(jù)。因此,指令通過其余的有效功能單元管線階段所需的時(shí)鐘周期,就會(huì)造成不必要的延遲。
額外延遲會(huì)造成問題的一個(gè)例子是,MXU提供整數(shù)乘法功能給整數(shù)單元的情形。因?yàn)镸XU具有用以執(zhí)行MXU乘法指令的整數(shù)乘法器,整數(shù)單元中的整數(shù)乘法器便可以拿掉,以降低微處理器電路晶粒的尺寸,而整數(shù)乘法指令就能另以MXU整數(shù)乘法器來執(zhí)行。然而,由于在程序指令序列中,整數(shù)乘法指令是相當(dāng)常用的,所以在進(jìn)行整數(shù)乘法時(shí),將MXU隊(duì)列置于整數(shù)單元管線末端所帶來的額外延遲,可能會(huì)令人無法接受。
然而,若在結(jié)構(gòu)上,將MXU隊(duì)列置于某個(gè)其后指令可能會(huì)被無效化的階段,則一旦指令進(jìn)入MXU隊(duì)列,MXU就無法確定指令仍是有效的。也即,因?yàn)镸XU隊(duì)列位于整數(shù)管線的末端之前,所以當(dāng)指令位于MXU隊(duì)列中,或當(dāng)MXU已從隊(duì)列接收到指令而正執(zhí)行時(shí),可能會(huì)發(fā)生無效化條件。而當(dāng)指令經(jīng)過IU及MXU管線時(shí),就不再是密集連鎖地進(jìn)行。因此,由于整數(shù)單元可能會(huì)在MXU隊(duì)列的任何延遲期間使指令無效化,所以MXU不知道其是否可更新用戶可見狀態(tài)。
因此,需要一種機(jī)制,其可在功能單元隊(duì)列未對(duì)準(zhǔn)的情況下,維持功能單元之間的指令狀態(tài)一致性。
發(fā)明內(nèi)容
本發(fā)明提供一種裝置,用以追蹤一功能單元指令隊(duì)列中的指令或運(yùn)算的年齡(age),不管指令或運(yùn)算在隊(duì)列中的位置是什么。也即,此功能單元會(huì)隨時(shí)記錄指令所處的對(duì)應(yīng)IU管線階段。此外,對(duì)于隊(duì)列中的每個(gè)指令,功能單元會(huì)記錄一有效位。若IU通知功能單元有一指令已被無效化,則功能單元會(huì)相應(yīng)地更新有效位。若指令在功能單元中完成,并且其年齡顯示其已通過IU管線的末端且仍然有效,則功能單元可更新機(jī)器的用戶可見狀態(tài)。另外,若在功能單元中,指令尚未完成,并且其年齡顯示其已通過IU管線的末端且仍然有效,則功能單元知道其必須完成指令。
因此,為了達(dá)到上述目的,本發(fā)明的一項(xiàng)特征是,提供一種微處理器中的指令隊(duì)列裝置。此指令隊(duì)列裝置包括多個(gè)第一儲(chǔ)存組件,每個(gè)儲(chǔ)存組件儲(chǔ)存一個(gè)由第一功能單元所執(zhí)行的指令,該指令也儲(chǔ)存于第二功能單元的多個(gè)管線階段的其中一個(gè)。此指令隊(duì)列裝置還包括多個(gè)第二儲(chǔ)存組件,耦接至第一多個(gè)儲(chǔ)存組件,其每個(gè)儲(chǔ)存組件儲(chǔ)存第一多個(gè)儲(chǔ)存組件的對(duì)應(yīng)的一個(gè)中所存的指令的一年齡,此年齡用以指出指令儲(chǔ)存于第二功能單元的多個(gè)管線階段的哪一個(gè)之中。此指令隊(duì)列裝置還包括多個(gè)第三儲(chǔ)存組件,耦接至第一多個(gè)儲(chǔ)存組件,其每個(gè)儲(chǔ)存組件儲(chǔ)存第一多個(gè)儲(chǔ)存組件的該對(duì)應(yīng)的一個(gè)中所存的指令的一有效位。此有效位用以指出指令是否有效。
如上所述的指令隊(duì)列裝置,其中該第一功能單元使用該年齡及該有效位,以判斷是否要以該指令的結(jié)果更新該微處理器的一用戶可見狀態(tài)。
如上所述的指令隊(duì)列裝置,其中該指令隊(duì)列裝置從該第二功能單元的這些管線階段中的一預(yù)定階段接收該指令,其中在該指令被存入該預(yù)定階段之后,使該指令無效化的一條件可能會(huì)發(fā)生。
如上所述的指令隊(duì)列裝置,其中在該第二功能單元的這些管線階段中的一指令丟棄階段之前,該指令隊(duì)列裝置從該第二功能單元的這些管線階段中的一階段接收該指令。
如上所述的指令隊(duì)列裝置,還包括一控制邏輯,耦接至這些第二及第三儲(chǔ)存組件,用以更新該年齡及該有效位。
如上所述的指令隊(duì)列裝置,還包括一輸入端,耦接至該控制邏輯,用以從該第二功能單元接收一信號(hào),該信號(hào)指出該第二功能單元是否停頓或正使該指令沿這些管線階段移動(dòng),其中該控制邏輯會(huì)響應(yīng)該信號(hào),而更新該年齡及該有效位。
如上所述的指令隊(duì)列裝置,還包括多個(gè)輸入端,耦接至該控制邏輯,每個(gè)輸入端用以從該第二功能單元接收一信號(hào),該信號(hào)指出也存于該第二功能單元的這些管線階段的該一個(gè)中的該指令是否有效,其中該控制邏輯會(huì)依據(jù)該信號(hào),更新該有效位。
如上所述的指令隊(duì)列裝置,其中該控制邏輯會(huì)依據(jù)該指令隊(duì)列裝置是否正將該指令從這些第一儲(chǔ)存組件中的一個(gè)移至這些第一儲(chǔ)存組件中的另一個(gè),而更新該年齡及該有效位。
如上所述的指令隊(duì)列裝置,其中若該指令正被加載該指令隊(duì)列裝置,則該控制邏輯將該年齡更新為一初始年齡值。
如上所述的指令隊(duì)列裝置,還包括一輸入端,耦接至該控制邏輯,用以從該第二功能單元接收一信號(hào),該信號(hào)指出當(dāng)該指令被存入該第二功能單元的這些管線階段中一預(yù)定管線階段時(shí),一無效化條件是否已發(fā)生,其中當(dāng)該指令被存入該預(yù)定管線階段時(shí),若該無效化條件發(fā)生,則該控制邏輯將該有效位更新為一無效值。
如上所述的指令隊(duì)列裝置,其中該微處理器依據(jù)該年齡及該有效位,判斷是否要以該指令的結(jié)果更新該微處理器的一用戶可見狀態(tài)。
另一方面,本發(fā)明的一項(xiàng)特征是提出一種微處理器中的裝置,用以維持二個(gè)指令管線間的指令狀態(tài)一致性,此二個(gè)指令管線由于一指令隊(duì)列將其分離而異步地運(yùn)作。此指令隊(duì)列具有N個(gè)項(xiàng)目,用以儲(chǔ)存N個(gè)指令。此裝置具有對(duì)應(yīng)于該N個(gè)指令隊(duì)列項(xiàng)目的N個(gè)邏輯組件。每個(gè)邏輯組件包括一年齡緩存器,以儲(chǔ)存該N個(gè)指令其中一個(gè)的年齡,此年齡從一年齡信號(hào)所接收,并指出該指令還儲(chǔ)存于該二個(gè)管線的第一個(gè)管線中的哪一階段。每個(gè)邏輯組件還包括一有效緩存器,以儲(chǔ)存該N個(gè)指令其中一個(gè)的一有效位。每個(gè)邏輯組件還包括一多任務(wù)器,其依據(jù)該年齡信號(hào)選取多個(gè)有效位信號(hào)中的一個(gè),提供至該有效緩存器。這些有效位信號(hào)指出第一管線的對(duì)應(yīng)多個(gè)階段中所儲(chǔ)存的指令是否有效。
如上所述微處理器中的裝置,其中該N個(gè)邏輯組件耦接在一起形成一隊(duì)列,以對(duì)應(yīng)于該指令隊(duì)列的該N個(gè)項(xiàng)目。
如上所述微處理器中的裝置,每一該N個(gè)邏輯組件還包括一更新邏輯,耦接至該年齡緩存器,用以依據(jù)該第一管線是否產(chǎn)生停頓,而更新該年齡。
如上所述微處理器中的裝置,其中該多任務(wù)器也接收選擇性地從該有效緩存器的一輸出所耦接的一有效輸入。
如上所述微處理器中的裝置,每一該N個(gè)邏輯組件還包括一無效化邏輯,耦接至該有效緩存器,用以響應(yīng)于一異常信號(hào),而將該指令無效化,該異常信號(hào)表示當(dāng)該指令儲(chǔ)存于該第一管線的一預(yù)定階段中時(shí),發(fā)生一將該指令無效化的異常。
另一方面,本發(fā)明的一項(xiàng)特征是提出一種微處理器。此微處理器包括第一指令管線,其包括多個(gè)階段,用以儲(chǔ)存指令。此微處理器還包括第二指令管線,耦接至第一指令管線,以從第一指令管線接收這些指令的第一部份,并加以執(zhí)行。此微處理器還包括一指令隊(duì)列,用以儲(chǔ)存該第一部份指令的一第二部份,直到第二指令管線準(zhǔn)備好執(zhí)行該第二部份。此微處理器還包括一控制邏輯,耦接至該指令隊(duì)列,用以儲(chǔ)存該第二部份的每個(gè)指令的一目前狀態(tài)及一有效位。此目前狀態(tài)指出,該第二部份的指令系儲(chǔ)存于這些第一指令管線階段中的哪個(gè)階段。
如上所述的微處理器,其中該指令隊(duì)列及該第二指令管線的運(yùn)作,與該第一指令管線的運(yùn)作為異步。
如上所述的微處理器,還包括一多任務(wù)器,耦接至該指令隊(duì)列及該第二指令管線,用以選擇性地繞過該第二指令管線中的該指令隊(duì)列。
如上所述的微處理器,還包括一數(shù)據(jù)高速緩存,耦接至該第一指令管線,用以提供這些指令所指定的數(shù)據(jù);以及一數(shù)據(jù)隊(duì)列,耦接至該數(shù)據(jù)高速緩存,用以儲(chǔ)存該第二部份指令所指定的數(shù)據(jù)。
如上所述的微處理器,其中該目前狀態(tài)也指出該指令是否已從這些第一指令管線階段丟棄。
另一方面,本發(fā)明的一項(xiàng)特征是提出一種維持微處理器中功能單元間的指令狀態(tài)一致性的方法,此微處理器的階段由于一隊(duì)列的存在而未對(duì)準(zhǔn)。此方法包括將一指令儲(chǔ)存于第一功能單元的一管線階段中,將該指令的第一有效位儲(chǔ)存于此管線階段中,以及將該指令儲(chǔ)存于第二功能單元的一隊(duì)列,直到第二功能單元準(zhǔn)備好執(zhí)行該指令。此方法還包括將該指令的第二有效位儲(chǔ)存于該隊(duì)列中,以及將該指令的年齡儲(chǔ)存于該隊(duì)列中。此年齡指出該指令儲(chǔ)存于第一功能單元的哪個(gè)管線階段。此方法還包括接收一信號(hào),其顯示第一功能單元管線是否產(chǎn)生停頓,以及依據(jù)第一有效位及該信號(hào)的接收,更新此年齡及第二有效位。
如上所述的方法,還包括接收一信號(hào),其表示是否已產(chǎn)生一個(gè)使該指令無效的條件;以及若該信號(hào)表示已產(chǎn)生使該指令無效的該條件,則將一值存于該第二有效位,以顯示該指令為無效。
如上所述的方法,還包括依據(jù)該第二有效位及該年齡,判斷是否要更新該微處理器的一用戶可見狀態(tài)。
如上所述的方法,其中該年齡也指出該指令是否已從該第一功能單元丟棄。
另一方面,本發(fā)明的一項(xiàng)特征是提出微處理器中另一種指令隊(duì)列裝置。此指令隊(duì)列裝置包括第一多個(gè)儲(chǔ)存組件,每個(gè)組件儲(chǔ)存一指令,由第一功能單元執(zhí)行。該指令也儲(chǔ)存于第二功能單元的多個(gè)管線階段其中之一。此指令隊(duì)列裝置還包括第二多個(gè)儲(chǔ)存組件,耦接至該第一多個(gè)儲(chǔ)存組件,每一該第二多個(gè)儲(chǔ)存組件儲(chǔ)存第一多個(gè)儲(chǔ)存組件中一對(duì)應(yīng)組件所存的指令的年齡。此年齡指定第二功能單元的這些管線階段其中之一。所指定的第二功能單元管線階段則儲(chǔ)存該指令的目前狀態(tài)。
如上所述的另一種指令隊(duì)列裝置,其中該目前狀態(tài)指出該指令是否有效。
本發(fā)明的一項(xiàng)優(yōu)點(diǎn)是,可避免常用做法中,將指令隊(duì)列置于執(zhí)行指令有效化功能的功能單元的管線末端所造成的延遲。取而代之的是,本發(fā)明允許將隊(duì)列置于較早的管線階段,同時(shí)確保指令能正確地執(zhí)行。
本發(fā)明的其它特征及優(yōu)點(diǎn),在配合下列說明及附圖后,將更能突顯出來。
圖1顯示一公知技術(shù)的微處理器,其在整數(shù)管線末端具有一功能單元隊(duì)列。
圖2是本發(fā)明的微處理器的方塊圖。
圖3是本發(fā)明控制圖2的MXU指令隊(duì)列的邏輯的方塊圖。
圖4是本發(fā)明圖3的邏輯產(chǎn)生下個(gè)狀態(tài)值的真值表。
圖5是本發(fā)明圖2的微處理器的運(yùn)作圖例。
圖中100,200微處理器102,276指令104,202整數(shù)管線106FPU隊(duì)列204數(shù)據(jù)高速緩存206MXU管線208MXU數(shù)據(jù)高速緩存212MXU指令隊(duì)列214多任務(wù)器221,261R-階段222,263A-階段223,264D-階段224,265G-階段
225,266E-階段226,267S-階段227,268W-階段262R2-階段269M-階段274數(shù)據(jù)總線300,322邏輯302多任務(wù)器1304多任務(wù)器2306多任務(wù)器3308有效緩存器312年齡緩存器314與門316多任務(wù)器4318比較器332MmxValNxt_G334MmxValNxt_E336MmxValNxt_S338Except_W信號(hào)342Val(X+1)344Val(X)352PS(X+1)354PS(X)362NS(X+1)364NS(X)372HldX374重置信號(hào)376LdX_P378Gate_A信號(hào)382信號(hào)age_update
384年齡輸出部份386Val輸出392輸出信號(hào)NS394輸出信號(hào)PS396輸出信號(hào)Val具體實(shí)施方式
現(xiàn)請(qǐng)參照?qǐng)D2,其為本發(fā)明的微處理器200的方塊圖。微處理器200包括一整數(shù)管線202、一數(shù)據(jù)高速緩存204、一MXU管線206、一MXU數(shù)據(jù)隊(duì)列208以及一MXU指令隊(duì)列212。
整數(shù)管線202包括連在一起的多個(gè)階段,包括R-階段221、A-階段222、D-階段223、G-階段224、E-階段225、S-階段226以及W-階段227。R-階段221包括用以儲(chǔ)存數(shù)據(jù)的緩存器檔案,這些數(shù)據(jù)如指令操作數(shù)、地址產(chǎn)生操作數(shù)、處理器的控制與狀態(tài)信息、標(biāo)志、堆棧指針、區(qū)段緩存器以及指令指針或程序計(jì)數(shù)。A-階段222包括用以產(chǎn)生內(nèi)存地址的地址產(chǎn)生器。D-階段223及G-階段224為數(shù)據(jù)階段,用以從內(nèi)存及數(shù)據(jù)高速緩存204加載數(shù)據(jù)。數(shù)據(jù)由數(shù)據(jù)高速緩存204送到G-階段224。E-階段225包括執(zhí)行單元,如執(zhí)行整數(shù)算術(shù)或邏輯運(yùn)算的算術(shù)邏輯單元。S-階段226包括用以將指令結(jié)果儲(chǔ)存至內(nèi)存及數(shù)據(jù)高速緩存204的邏輯。W-階段227包括用以將指令結(jié)果寫回R-階段221的邏輯。也即,W-階段227用以更新微處理器200的用戶可見狀態(tài)。W-階段227也會(huì)丟棄指令,且為整數(shù)管線202的最后階段。此外,W-階段227會(huì)提供操作數(shù)轉(zhuǎn)送功能,用以將結(jié)果轉(zhuǎn)送至整數(shù)管線202中的G-階段224、E-階段225及S-階段226。
R-階段221會(huì)從圖上未顯示的其它整數(shù)管線202的階段(如指令提取與譯碼階段)接收指令276。指令276會(huì)沿著整數(shù)管線202的各個(gè)階段而下,直到抵達(dá)整數(shù)管線202的最后階段,即W-階段227。在將指令譯碼時(shí),也會(huì)依據(jù)所譯碼指令的類型,將其送至其它適當(dāng)?shù)墓δ軉卧L貏e是,MMX指令會(huì)被送到MXU管線206。在一實(shí)施例中,浮點(diǎn)指令會(huì)被送到浮點(diǎn)功能單元。
MXU管線206包括連在一起的多個(gè)階段,類似于且大部分對(duì)應(yīng)于整數(shù)管線202。MXU管線206包括R-階段261、R2-階段262、A-階段263、D-階段264、G-階段265、E-階段266、S-階段267、W-階段268以及M-階段269。在一實(shí)施例中,具有對(duì)應(yīng)于整數(shù)管線202階段的名稱的MXU管線206階段會(huì)執(zhí)行相似的功能。特別是,E-階段266包括執(zhí)行單元,如算術(shù)邏輯單元,用以執(zhí)行多媒體指令。
R2-階段262為額外的緩存器階段,其提供一個(gè)時(shí)鐘周期的延遲給數(shù)據(jù)高速緩存204,以將數(shù)據(jù)送到MXU管線206。由于有R2-階段262,所以MXU管線206相對(duì)于整數(shù)管線202,會(huì)向下多移一個(gè)階段。因此,MXU管線206的D-階段264會(huì)對(duì)應(yīng)于整數(shù)管線202的G-階段224。M-階段269會(huì)執(zhí)行結(jié)果回寫功能,以更新微處理器200的用戶可見狀態(tài),與整數(shù)管線202的W-階段227相似。此外,M-階段269會(huì)提供操作數(shù)轉(zhuǎn)送功能,以將結(jié)果轉(zhuǎn)送至MXU管線206的G-階段265、E-階段266或S-階段267。當(dāng)指令到達(dá)M-階段269時(shí),M-階段269依據(jù)指令是否有效及指令已到達(dá)整數(shù)管線202的哪個(gè)階段,或指令是否已從整數(shù)管線202丟棄,來判斷是否要更新微處理器200的用戶可見狀態(tài)或轉(zhuǎn)送操作數(shù)。該有效性及所到達(dá)的階段由MXU指令來記錄,如下文配合其余附圖所做的詳細(xì)說明。
整數(shù)管線202的R-階段221至D-階段223的相同停頓條件,也適用于MXU管線206的R-階段261至A-階段263。因此,已到達(dá)MXU管線206的D-階段264的指令也同步到達(dá)整數(shù)管線202的G-階段224。然而,對(duì)于指令在MXU指令隊(duì)列212及MXU管線206的D-階段264至M-階段269內(nèi)的停頓或移動(dòng),則由另一組條件控制,與整數(shù)管線202階段的G-階段224至W-階段227的控制條件不同。也即,MXU指令隊(duì)列212及MXU管線206階段的D-階段264至M-階段269,與整數(shù)管線202的G-階段224至W-階段227的運(yùn)作為異步。
MXU管線206的R-階段261也會(huì)從整數(shù)管線202的指令提取及譯碼階段中,選擇性地接收指令276。因此,若指令276為MMX指令,當(dāng)其被提取及譯碼時(shí),會(huì)經(jīng)過整數(shù)管線202,且會(huì)沿著MXU管線206的各個(gè)階段而下,直到抵達(dá)MXU管線206的最后階段(M-階段269)及整數(shù)管線202的最后階段。取決于某些條件是否存在(如配合圖3部分的說明),指令276也會(huì)在通往MXU管線206末端的路徑上,通過MXU指令隊(duì)列212。
MXU數(shù)據(jù)隊(duì)列208由一數(shù)據(jù)總線274耦接至數(shù)據(jù)高速緩存204。MXU數(shù)據(jù)隊(duì)列208包括多個(gè)儲(chǔ)存組件(稱為隊(duì)列項(xiàng)目),用以儲(chǔ)存從數(shù)據(jù)總線274上的數(shù)據(jù)高速緩存204所接收的數(shù)據(jù)。在圖2的實(shí)施例中,MXU數(shù)據(jù)隊(duì)列208包括五個(gè)隊(duì)列項(xiàng)目。MXU數(shù)據(jù)隊(duì)列208會(huì)將數(shù)據(jù)從其底部項(xiàng)目送到MXU管線206的G-階段265。
結(jié)構(gòu)上,MXU指令隊(duì)列212位于MXU管線206的D-階段264中。MXU指令隊(duì)列212包括多個(gè)儲(chǔ)存組件(稱為隊(duì)列項(xiàng)目),用以儲(chǔ)存從D-階段264所接收的指令。在圖2的實(shí)施例中,MXU指令隊(duì)列212包括五個(gè)隊(duì)列項(xiàng)目,標(biāo)示為QD0 240、QD1 241、QD2 242、QD3 243以及QD4 244。QD0 240為MXU指令隊(duì)列212的底部項(xiàng)目,而QD4 244為MXU指令隊(duì)列212的頂端項(xiàng)目。也即,當(dāng)MXU指令隊(duì)列212已滿時(shí),QD0 240位于MXU指令隊(duì)列212的頭端且保有最舊的指令,而QD4 244則位于MXU指令隊(duì)列212的尾端且保有最新的指令。當(dāng)指令進(jìn)入MXU指令隊(duì)列212時(shí),其會(huì)進(jìn)入最接近MXU指令隊(duì)列212的底部或頭部的第一個(gè)空項(xiàng)目。例如,若指令正占據(jù)QD0240及QD1 241,且QD2 242為下個(gè)空項(xiàng)目,則進(jìn)來的指令將會(huì)儲(chǔ)存于QD2242中。若MXU指令隊(duì)列212完全為空,則指令將會(huì)儲(chǔ)存于QD0 240中。
MXU管線206的D-階段264還包括一個(gè)具有兩個(gè)輸入端的多任務(wù)器214。多任務(wù)器214的第一輸入端直接從D-階段264接收指令。多任務(wù)器214的第二輸入端則從QD0 240,也即MXU指令隊(duì)列212的底部項(xiàng)目接收指令。多任務(wù)器214的輸出端會(huì)從二個(gè)輸入端選取指令,以送至MXU管線206的G-階段265。當(dāng)一指令到達(dá)D-階段264,若此指令有效且MXU指令隊(duì)列212為空,并且MXU管線206正在移動(dòng)(也即未停頓),則多任務(wù)器214會(huì)選擇第一輸入端,以將指令直接送到G-階段265,由此繞過MXU指令隊(duì)列212。然而,若MXU指令隊(duì)列212不為空或MXU管線206有停頓,則多任務(wù)器214會(huì)選擇第二輸入端,以將QD0 240中的指令送到G-階段265,直到MXU指令隊(duì)列212變成無指令的時(shí)候。
現(xiàn)請(qǐng)參照?qǐng)D3,其為本發(fā)明控制圖2的MXU指令隊(duì)列212的邏輯300的方塊圖。控制邏輯300包括四個(gè)多任務(wù)器(標(biāo)示為多任務(wù)器1 302、多任務(wù)器2 304、多任務(wù)器3 306及多任務(wù)器4 316)、一年齡緩存器312、一有效緩存器308及其它相關(guān)邏輯。對(duì)于MXU指令隊(duì)列212的項(xiàng)目所儲(chǔ)存的每個(gè)指令,控制邏輯300會(huì)記錄其年齡及有效狀態(tài)位。此年齡及有效位分別儲(chǔ)存于年齡緩存器312及有效緩存器308中。在圖3的實(shí)施例中,年齡緩存器312包括二個(gè)位,而有效緩存器308包括一個(gè)位。
在圖3中,指令的年齡標(biāo)示為“PS”,即目前狀態(tài)(present state)。指令的年齡指出其目前在整數(shù)管線202中所處的階段。也即,年齡值與指令在整數(shù)管線202的階段位置的對(duì)應(yīng)關(guān)系如下00=整數(shù)管線202的E-階段22501=整數(shù)管線202的S-階段22610=整數(shù)管線202的W-階段22711=超越整數(shù)管線202的W-階段227因此,一旦指令到達(dá)11的年齡,若其有效位仍處于設(shè)定狀態(tài),則MXU知道指令將完成,且MXU可更新用戶可見的處理器狀態(tài)。在圖3中,“NS”表示整數(shù)管線202的下一個(gè)階段。
每個(gè)MXU指令隊(duì)列212的項(xiàng)目都配有如圖3的控制邏輯300。也即,對(duì)于圖2的五項(xiàng)目隊(duì)列而言,會(huì)搭配五組圖3的控制邏輯300。在隊(duì)列的配置中,五組控制邏輯300耦接在一起,以使得在MXU指令隊(duì)列212中,一項(xiàng)目的相關(guān)控制邏輯300的輸出會(huì)變成下個(gè)項(xiàng)目的控制邏輯300的輸入。圖3中,“X”系表示MXU指令隊(duì)列212中一已知項(xiàng)目,“X+1”則表示在項(xiàng)目X之后,MXU指令隊(duì)列212中下個(gè)最高或最新的項(xiàng)目。因此,PS(0)為隊(duì)列中最舊或最低項(xiàng)目(即圖2的QD0 240)的年齡。
控制邏輯300包括一個(gè)2∶1多任務(wù)器302,標(biāo)示為多任務(wù)器1 302。多任務(wù)器1 302包括三對(duì)輸入。第一對(duì)輸入為Val(X)344及Val(X+1)342。第二對(duì)輸入為PS(X)354及PS(X+1)352。第三對(duì)輸入為NS(X)364及NS(X+1)362。
信號(hào)Val(X)344為多任務(wù)器4 316的輸出,其表示MXU指令隊(duì)列212的項(xiàng)目X所儲(chǔ)存的指令目前是否有效。信號(hào)Val(X+1)342為MXU指令隊(duì)列212的項(xiàng)目X+1的多任務(wù)器4 316的輸出,其表示項(xiàng)目X+1所儲(chǔ)存的指令目前是否有效。
信號(hào)PS(X)354表示MXU指令隊(duì)列212的項(xiàng)目X所儲(chǔ)存指令的目前年齡,其儲(chǔ)存于該指令的年齡緩存器312中。也即,PS(X)354表示整數(shù)管線202的哪一個(gè)階段保有也儲(chǔ)存在MXU指令隊(duì)列212的項(xiàng)目X中的指令。信號(hào)PS(X+1)352表示MXU指令隊(duì)列212的項(xiàng)目X+1所儲(chǔ)存指令的目前年齡,其儲(chǔ)存于該指令的年齡緩存器312中。
控制邏輯300還包括邏輯322,其依據(jù)PS(X)354及信號(hào)LdX_P 376產(chǎn)生信號(hào)NS(X)364,如圖4的真值表所示。若指令最初被加載于MXU指令隊(duì)列212的項(xiàng)目X中,則LdX_P為真或致能(active)。對(duì)于保有MXU指令隊(duì)列212的項(xiàng)目X所存指令的整數(shù)管線202階段,信號(hào)NS(X)364指出其后的下個(gè)整數(shù)管線202階段。而對(duì)于保有MXU指令隊(duì)列212的項(xiàng)目X+1所存指令的整數(shù)管線202階段,信號(hào)NS(X+1)362則顯示其后的下個(gè)整數(shù)管線202階段。如圖4的真值表所顯示,若指令最初被加載MXU指令隊(duì)列212中,則NS(X)364為00,其對(duì)應(yīng)于整數(shù)管線202的E-階段225。否則,NS(X)364由PS(X)354及HldX_P 372中決定,如圖4的真值表所示。
請(qǐng)?jiān)賲⒄請(qǐng)D3,多任務(wù)器1 302會(huì)依據(jù)一選擇輸入HldX_P 372,從三對(duì)輸入的每一對(duì)中,選取其中一個(gè)輸入。HldX_P 372表示MXU指令隊(duì)列212中的項(xiàng)目是否向下移位。當(dāng)一指令要在MXU指令隊(duì)列212中向下移位時(shí),如由于某個(gè)指令要從MXU指令隊(duì)列212移除,HldX_P 372會(huì)變?yōu)槌?inactive)。除能的HldX_P 372會(huì)使多任務(wù)器1 302從MXU指令隊(duì)列212的下個(gè)較高項(xiàng)目中,選取Val(X+1)342、PS(X+1)352及NS(X+1)362。致能的HldX_P 372則會(huì)使多任務(wù)器1 302維持來自于MXU指令隊(duì)列212的目前項(xiàng)目中Val(X)344、PS(X)354及NS(X)364的值。多任務(wù)器1 302會(huì)于輸出信號(hào)NS 392中提供所選取的下個(gè)階段值、于輸出信號(hào)PS 394中提供所選取的目前狀態(tài)值,并于輸出信號(hào)Val 396中提供所選取的有效位值。
控制邏輯300還包括一個(gè)耦接至多任務(wù)器1 302的3∶1多任務(wù)器,標(biāo)示為多任務(wù)器2 304。多任務(wù)器2 304用以將項(xiàng)目X中的指令的年齡更新至其適當(dāng)值。多任務(wù)器2 304會(huì)接收三個(gè)指令狀態(tài)值,也即三組包含一有效位及二個(gè)年齡位的值,并且選取其中一個(gè)狀態(tài)值來輸出。第一指令狀態(tài)值包括多任務(wù)器1 302的PS輸出394及Val輸出396。也即,第一指令狀態(tài)包括由多任務(wù)器1 302從PS(X)354與PS(X+1)352中所選取的年齡,以及由多任務(wù)器1 302從Val(X)344與Val(X+1)342中所選取的有效位。第二指令狀態(tài)值包括多任務(wù)器1 302的NS輸出392及Val輸出396。也即,第二指令狀態(tài)包括由多任務(wù)器1 302從NS(X)364與NS(X+1)362中所選取的年齡,以及由多任務(wù)器1 302從Val(X)344與Val(X+1)342的中所選取的有效位。第三指令狀態(tài)值包括000的值,也即有效位為0、年齡為00,其指定了整數(shù)管線202的E-階段225。
多任務(wù)器2 304會(huì)依據(jù)一個(gè)兩位的選擇輸入age_update 382,選取三個(gè)指令狀態(tài)值其中之一。邏輯322會(huì)根據(jù)下面所示的等式(1)和(2),依信號(hào)PS 394、重置信號(hào)374、信號(hào)LdX_P 376及Gate A信號(hào)378,來產(chǎn)生信號(hào)age_update 382。在等式(1)和(2)中,PS
及PS[1]位為多任務(wù)器1 302的輸出信號(hào)PS 394的二個(gè)位。
age_update[1]=LdX_P|重置……(1)age_update
=Gate_A|PS
|PS[1]……(2)真值的LdX_P 376表示MXU指令隊(duì)列212的項(xiàng)目X所加載的是來自于D-階段264的指令,而非已經(jīng)位于MXU指令隊(duì)列212中的指令。真值的重置信號(hào)374表示MXU指令隊(duì)列212正在重置。真值的Gate_A 378表示整數(shù)管線202未產(chǎn)生停頓。在圖3的實(shí)施例中,Gate_A 378僅表示在整數(shù)管線202的S-階段226的上的階段未產(chǎn)生停頓。也即,在圖3的實(shí)施例中,S-階段226及W-階段227不會(huì)停頓,以致于一旦指令到達(dá)S-階段226,就可確保在下個(gè)時(shí)鐘周期,指令將會(huì)變老,也即指令將繼續(xù)進(jìn)行至整數(shù)管線202的W-階段227。同樣地,一旦指令到達(dá)W-階段227,就可確保其會(huì)丟棄。雖然控制信號(hào)可從Gate_A 378取得,但MXU管線206的停頓或移動(dòng)由其自己的控制信號(hào)而非Gate_A 378來控制。
若重置發(fā)生,或指令從MXU管線206的D-階段264被加載MXU指令隊(duì)列212的項(xiàng)目X,則上述等式(1)和(2)指定多任務(wù)器2 304要選取第三指令狀態(tài)輸入。若指令正移動(dòng)至下個(gè)整數(shù)管線202階段(也即,若整數(shù)管線202未停頓,如真值的Gate_A 378所顯示的,或若指令至少已到達(dá)整數(shù)管線202的S-階段226,如01、10或11這些值的PS 394所顯示),則多任務(wù)器2304將選取第二指令狀態(tài)輸入(包括NS 392及Val 396)。否則,指令會(huì)在整數(shù)管線202中停頓,也即不會(huì)沿整數(shù)管線202繼續(xù)向下移動(dòng);因此,多任務(wù)器2 304將會(huì)選取第一指令狀態(tài)(包括PS 394及Val 396)。
多任務(wù)器2 304的輸出的年齡輸出部份384用來作為年齡緩存器312的輸入。年齡緩存器312的輸出,即信號(hào)PS(X)354,則用來當(dāng)作邏輯322的輸入。信號(hào)PS(X)354也被送到MXU指令隊(duì)列212的下個(gè)較低項(xiàng)目,而變成項(xiàng)目X-1的PS(X+1)352。同樣地,信號(hào)NS(X)364會(huì)被送到MXU指令隊(duì)列212的下個(gè)較低項(xiàng)目,而變成項(xiàng)目X-1的NS(X+1)362。同樣地,信號(hào)Val(X)344會(huì)被送到MXU指令隊(duì)列212的下個(gè)較低項(xiàng)目,而變成項(xiàng)目X-1的Val(X+1)342。此外,MXU指令隊(duì)列212的最低項(xiàng)目(即項(xiàng)目QD0240)的信號(hào)Val(0)344及PS(0)354會(huì)被送到圖2的G-階段265,并且往下通過MXU管線206的其余階段。當(dāng)指令到達(dá)MXU管線206的M-階段269時(shí),M-階段269會(huì)檢查相關(guān)的狀態(tài)值,以判斷指令是否有效,以及指令位于整數(shù)管線202的哪個(gè)階段中,由此判斷是否要更新微處理器200的用戶可見狀態(tài)。
控制邏輯300還包括一個(gè)耦接至多任務(wù)器2 304的4∶1多任務(wù)器,標(biāo)示為多任務(wù)器3 306。多任務(wù)器3 306用以將項(xiàng)目X中的指令的有效位更新至其適當(dāng)值。多任務(wù)器3 306接收四個(gè)有效位輸入。第一有效位輸入為Val輸出386,其為多任務(wù)器2 304的輸出的有效位部份。其它的三個(gè)有效位輸入為來自于整數(shù)管線202的G-階段224、E-階段225及S-階段226的有效位,分別標(biāo)示為MmxValNxt_G 336、MmxValNxt_E 334及MmxValNxt_S 332。多任務(wù)器3 306的輸出用來當(dāng)作有效位緩存器308的輸入。
多任務(wù)器3 306會(huì)依據(jù)一選擇輸入,即多任務(wù)器2 304的輸出的年齡輸出部份384,來選取四個(gè)有效位輸入中的一個(gè)。因此,若指令的年齡384為00,則多任務(wù)器3 306會(huì)從整數(shù)管線202的G階段224選取有效位336。這是因?yàn)橹噶顣?huì)從MXU管線206的D階段264加載至MXU指令隊(duì)列212,其等效于將指令從整數(shù)管線202的G階段224加載,也即,由于R2-階段262的存在,MXU管線206相對(duì)于整數(shù)管線202會(huì)向下移位一個(gè)階段,所以MXU管線206的D階段264會(huì)與整數(shù)管線202的G階段224相鄰;因此,整數(shù)管線202的G階段224的指令的有效位,即為要加載有效位緩存器308的更正有效位。
若指令的年齡384為01,則多任務(wù)器3 306會(huì)從整數(shù)管線202的E階段225選取有效位334。若指令的年齡384為10,則多任務(wù)器3 306會(huì)從整數(shù)管線202的S階段226選取有效位332。最后,若指令的年齡384為11,則多任務(wù)器3 306會(huì)從多任務(wù)器2 304的輸出選取有效位Val 386。也即,會(huì)保持目前的有效位值。因此,一旦指令通過整數(shù)管線202的W-階段227(也即,被W-階段227丟棄),有效位值會(huì)被保留著,因?yàn)樵谶@個(gè)將指令無效化的時(shí)刻之后,不會(huì)有條件或事件發(fā)生。
控制邏輯300還包括一個(gè)耦接至多任務(wù)器3 306的2∶1多任務(wù)器,標(biāo)示為多任務(wù)器4 316。若當(dāng)指令位于整數(shù)管線202的W-階段227時(shí),產(chǎn)生一無效化條件或事件,則多任務(wù)器4 316會(huì)用來更新有效位。多任務(wù)器4 316會(huì)接收二個(gè)有效位輸入。第一輸入來自于有效位緩存器308的輸出。第二輸入為與門314的輸出。與門314為具有二個(gè)輸入的與門。與門314的第一輸入為有效位緩存器308的輸出。與門314的第二輸入為Except_W信號(hào)338的反相信號(hào),其標(biāo)示為圖3的“!Except_W 338”。真值的Except_W信號(hào)338表示當(dāng)指令位于整數(shù)管線202的W-階段227時(shí),發(fā)生一異常而將指令無效化。因此,若指令先前為無效,或是當(dāng)指令位于整數(shù)管線202的W-階段227時(shí),發(fā)生一無效化的異常,則與門314會(huì)產(chǎn)生偽值的輸出。
多任務(wù)器4 316會(huì)依據(jù)一選擇輸入,其為比較器318的輸出,來選擇其中一個(gè)有效位輸入。比較器318會(huì)從年齡緩存器312的輸出,接收指令的年齡,并將此年齡與二進(jìn)制值10做比較,后者指定整數(shù)管線202的W-階段227,如前所述。若年齡為10,則比較器318會(huì)輸出真值,而使多任務(wù)器4 316選取與門314的輸出。否則,比較器318會(huì)輸出偽值,而使多任務(wù)器4 316選取有效位緩存器308的輸出。多任務(wù)器4 316的輸出為Val(X)信號(hào)344,其顯示MXU指令隊(duì)列212的項(xiàng)目X中指令目前的有效位值。
以剛才所述的方式,多任務(wù)器3 306及多任務(wù)器4 316可確實(shí)保有指令的最新有效位值。這可由從整數(shù)管線202取得有效位332、334及336來達(dá)到,因?yàn)槿粼谥噶钕蛳陆?jīng)過整數(shù)管線202時(shí),發(fā)生任何無效化的條件或事件,則微處理器200會(huì)更新整數(shù)管線202中的指令的有效位;或者若指令在整數(shù)管線202的W-階段227時(shí)發(fā)生異常,則由將指令無效化來達(dá)到;或一旦指令已通過整數(shù)管線202的W-階段227,則由保留有效位值來達(dá)到。
現(xiàn)請(qǐng)參照?qǐng)D5,其為本發(fā)明的圖2微處理器200的運(yùn)作圖例。圖5顯示在第一時(shí)鐘周期(稱為時(shí)鐘1)期間,MXU指令隊(duì)列212的初始狀態(tài)。圖5更進(jìn)一步顯示當(dāng)指令基于前述的初始條件及其它事件,而向下經(jīng)過圖2的整數(shù)管線202及MXU指令隊(duì)列212時(shí),在下個(gè)時(shí)鐘周期(稱為時(shí)鐘2)期間,MXU指令隊(duì)列212的運(yùn)作情形。
在時(shí)鐘1期間,圖5顯示了MXU指令隊(duì)列212的項(xiàng)目3(即QD3 243)中標(biāo)示為“instr A”的指令。在時(shí)鐘1期間,instr A位于整數(shù)管線202的W-階段227。因此,儲(chǔ)存于項(xiàng)目3的圖3年齡緩存器312中的instr A的年齡為10。也即,圖3的PS(3)信號(hào)354具有10的值,如圖5所示。因此,圖3的邏輯322會(huì)產(chǎn)生11的NS(3)值,如圖5所示。另外,在時(shí)鐘1期間,instrA是有效的。因此,有效緩存器308所儲(chǔ)存的值為真,且Val(3)信號(hào)344也為真,如圖5所示。
在時(shí)鐘2期間,由于instr A未被加載MXU指令隊(duì)列212,也即instr A已存在于MXU指令隊(duì)列212中,所以Ld2 P信號(hào)376的值為偽,如圖所示。另外,在時(shí)鐘2期間,因?yàn)閕nstr A正向下經(jīng)過整數(shù)管線202,也即整數(shù)管線202未產(chǎn)生停頓,所以Gate_A信號(hào)378的值為真,如圖所示。另外,在時(shí)鐘2期間,Hld2_P信號(hào)372的值為偽(如圖所示),表示由于MXU指令隊(duì)列212的底部項(xiàng)目已移出,所以儲(chǔ)存于MXU指令隊(duì)列212項(xiàng)目3中的指令將會(huì)向下移位至項(xiàng)目2。另外,在時(shí)鐘2期間,Except_W信號(hào)338的值為真(如圖所示),表示發(fā)生一個(gè)使instr A無效的事件。
已知有這些初始條件及事件,則在時(shí)鐘2期間,與MXU指令隊(duì)列212的項(xiàng)目2及3相關(guān)的圖3控制邏輯300將運(yùn)作如下。因?yàn)镻S(3)354具有10的值,所以比較器318將會(huì)產(chǎn)生真值的輸出,而使項(xiàng)目3的多任務(wù)器4 316選擇與門314的輸出(其值為0,此因instr A位于W-階段227時(shí),發(fā)生一無效化的異常)。因此,在時(shí)鐘2期間,將會(huì)產(chǎn)生偽值的Val(3)信號(hào)344,以表示instrA為無效。
因?yàn)镠ld2_P 372為偽(表示MXU指令隊(duì)列212正向下移位),所以MXU指令隊(duì)列212項(xiàng)目2的多任務(wù)器1 302將選取“X+1”的值,也即選取PS(3)354、NS(3)364及Val(3)344的值,其分別為10、11及0。由于instr A會(huì)向下經(jīng)過整數(shù)管線202,此由真值的Gate_A 378來表示,所以項(xiàng)目2的多任務(wù)器2 304將選取多任務(wù)器1 302的NS輸出392。因此,在時(shí)鐘2結(jié)束時(shí),項(xiàng)目2的年齡緩存器312中所儲(chǔ)存的instr A的新年齡將為11,此是顯示instr A已通過整數(shù)管線202的W-階段227。因?yàn)轫?xiàng)目2的多任務(wù)器2 304的年齡輸出部份384為11,如前所述,所以項(xiàng)目2的多任務(wù)器3 306將選取多任務(wù)器2 304的Val輸出386。由于Val(3)342為0(如前述),所以輸入至項(xiàng)目2的多任務(wù)器3 306的Val 386的值為0,并且,項(xiàng)目2的多任務(wù)器1 302及多任務(wù)器2 304會(huì)選取Val(3)342,作為輸入至多任務(wù)器3 306的Val 386。因此,在時(shí)鐘2結(jié)束時(shí),有效緩存器308所儲(chǔ)存的新有效位將為0(表示instr A現(xiàn)在是無效的),以通知MXU管線206,不可更新微處理器200對(duì)應(yīng)于instr A的用戶可見的程序狀態(tài)。
雖然本發(fā)明及其目的、特征與優(yōu)點(diǎn)已詳細(xì)敘述,其它實(shí)施例也可包含在本發(fā)明的范圍內(nèi)。例如,雖然本發(fā)明已敘述作為MXU一部份的指令與數(shù)據(jù)隊(duì)列,但本發(fā)明仍可適用于各種其它類型的功能單元,如串流SIMD延伸(SSE)單元。另外,雖然本發(fā)明已配合x86處理器的用戶可見狀態(tài)加以說明,但本發(fā)明仍適用于各種處理器。此外,雖然本發(fā)明所敘述的處理器,以整數(shù)管線為一般執(zhí)行指令或運(yùn)算有效化功能的功能單元,但本發(fā)明仍適用于以其它及/或額外功能單元執(zhí)行有效化功能的處理器。最后,雖然本發(fā)明已述及維持整數(shù)管線與MMX管線的間的狀態(tài)一致性,以獲知MMX管線是否及何時(shí)可更新處理器的用戶可見狀態(tài)的目的,但本發(fā)明一般而言仍可應(yīng)用于任何與分離隊(duì)列功能單元有關(guān)的狀態(tài)一致性問題。也即,對(duì)于不同功能單元間由于存在一異步隊(duì)列,而使其狀態(tài)偏掉的問題,本發(fā)明可用來維持其狀態(tài)一致。
總之,以上所述僅為本發(fā)明的較佳實(shí)施例而已,不能以其限定本發(fā)明所實(shí)施的范圍。凡依本發(fā)明權(quán)利要求所作的均等變化與修飾,都應(yīng)仍屬于本發(fā)明專利涵蓋的范圍內(nèi)。
權(quán)利要求
1.一種微處理器中的指令隊(duì)列裝置,包括多個(gè)第一儲(chǔ)存組件,每個(gè)第一儲(chǔ)存組件儲(chǔ)存一個(gè)由一第一功能單元所執(zhí)行的指令,該指令也儲(chǔ)存于一第二功能單元的多個(gè)管線階段的其中一個(gè);多個(gè)第二儲(chǔ)存組件,耦接至這些第一儲(chǔ)存組件,每個(gè)第二儲(chǔ)存組件儲(chǔ)存這些第一儲(chǔ)存組件的對(duì)應(yīng)的一個(gè)中所存的該指令的一年齡,該年齡用以指出該指令系儲(chǔ)存于該第二功能單元的多個(gè)管線階段的哪一個(gè)之中;以及多個(gè)第三儲(chǔ)存組件,耦接至這些第一儲(chǔ)存組件,每個(gè)第三儲(chǔ)存組件儲(chǔ)存這些第一儲(chǔ)存組件的該對(duì)應(yīng)的一個(gè)中所存的該指令的一有效位,該有效位用以指出該指令是否有效。
2.如權(quán)利要求1所述的指令隊(duì)列裝置,其中該第一功能單元使用該年齡及該有效位,以判斷是否要以該指令的結(jié)果更新該微處理器的一用戶可見狀態(tài)。
3.如權(quán)利要求1所述的指令隊(duì)列裝置,其中該指令隊(duì)列裝置從該第二功能單元的這些管線階段中的一預(yù)定階段接收該指令,其中在該指令被存入該預(yù)定階段之后,使該指令無效化的一條件可能會(huì)發(fā)生。
4.如權(quán)利要求1所述的指令隊(duì)列裝置,其中在該第二功能單元的這些管線階段中的一指令丟棄階段之前,該指令隊(duì)列裝置從該第二功能單元的這些管線階段中的一階段接收該指令。
5.如權(quán)利要求1所述的指令隊(duì)列裝置,還包括一控制邏輯,耦接至這些第二及第三儲(chǔ)存組件,用以更新該年齡及該有效位。
6.如權(quán)利要求5所述的指令隊(duì)列裝置,還包括一輸入端,耦接至該控制邏輯,用以從該第二功能單元接收一信號(hào),該信號(hào)指出該第二功能單元是否停頓或正使該指令沿這些管線階段移動(dòng),其中該控制邏輯會(huì)響應(yīng)該信號(hào),而更新該年齡及該有效位。
7.如權(quán)利要求5所述的指令隊(duì)列裝置,還包括多個(gè)輸入端,耦接至該控制邏輯,每個(gè)輸入端用以從該第二功能單元接收一信號(hào),該信號(hào)指出也存于該第二功能單元的這些管線階段的該一個(gè)中的該指令是否有效,其中該控制邏輯會(huì)依據(jù)該信號(hào),更新該有效位。
8.如權(quán)利要求5所述的指令隊(duì)列裝置,其中該控制邏輯會(huì)依據(jù)該指令隊(duì)列裝置是否正將該指令從這些第一儲(chǔ)存組件中的一個(gè)移至這些第一儲(chǔ)存組件中的另一個(gè),而更新該年齡及該有效位。
9.如權(quán)利要求5所述的指令隊(duì)列裝置,其中若該指令正被加載該指令隊(duì)列裝置,則該控制邏輯將該年齡更新為一初始年齡值。
10.如權(quán)利要求5所述的指令隊(duì)列裝置,還包括一輸入端,耦接至該控制邏輯,用以從該第二功能單元接收一信號(hào),該信號(hào)指出當(dāng)該指令被存入該第二功能單元的這些管線階段中一預(yù)定管線階段時(shí),一無效化條件是否已發(fā)生,其中當(dāng)該指令被存入該預(yù)定管線階段時(shí),若該無效化條件發(fā)生,則該控制邏輯將該有效位更新為一無效值。
11.如權(quán)利要求1所述的指令隊(duì)列裝置,其中該微處理器依據(jù)該年齡及該有效位,判斷是否要以該指令的結(jié)果更新該微處理器的一用戶可見狀態(tài)。
12.一種在一微處理器中用以維持二個(gè)指令管線間的指令狀態(tài)一致性的裝置,該二個(gè)指令管線由于一指令隊(duì)列將其分離而異步地運(yùn)作,該指令隊(duì)列具有N個(gè)項(xiàng)目,用以儲(chǔ)存N個(gè)指令,該裝置具有對(duì)應(yīng)于該N個(gè)指令隊(duì)列項(xiàng)目的N個(gè)邏輯組件,每個(gè)邏輯組件包括一年齡緩存器,用以儲(chǔ)存該N個(gè)指令其中一個(gè)的一年齡,該年齡從一年齡信號(hào)接收,并指出該指令還儲(chǔ)存于該二個(gè)管線的一第一管線中的哪一階段;一有效緩存器,用以儲(chǔ)存該N個(gè)指令其中一個(gè)的一有效位以及一多任務(wù)器,依據(jù)該年齡信號(hào)選取多個(gè)有效位信號(hào)中的一個(gè),以提供至該有效緩存器,這些有效位信號(hào)指出該第一管線的對(duì)應(yīng)多個(gè)階段中所儲(chǔ)存的指令是否有效。
13.如權(quán)利要求12所述的裝置,其中該N個(gè)邏輯組件耦接在一起形成一隊(duì)列,以對(duì)應(yīng)于該指令隊(duì)列的該N個(gè)項(xiàng)目。
14.如權(quán)利要求12所述的裝置,每一該N個(gè)邏輯組件還包括一更新邏輯,耦接至該年齡緩存器,用以依據(jù)該第一管線是否產(chǎn)生停頓,而更新該年齡。
15.如權(quán)利要求12所述的裝置,其中該多任務(wù)器也接收選擇性地從該有效緩存器的一輸出所耦接的一有效輸入。
16.如權(quán)利要求12所述的裝置,每一該N個(gè)邏輯組件還包括一無效化邏輯,耦接至該有效緩存器,用以響應(yīng)于一異常信號(hào),而將該指令無效化,該異常信號(hào)表示當(dāng)該指令儲(chǔ)存于該第一管線的一預(yù)定階段中時(shí),發(fā)生一將該指令無效化的異常。
17.一種微處理器,包括一第一指令管線,包括多個(gè)階段,用以儲(chǔ)存指令;一第二指令管線,耦接至該第一指令管線,用以從該第一指令管線接收這些指令的一第一部份,并加以執(zhí)行;一指令隊(duì)列,用以儲(chǔ)存該第一部份指令的一第二部份,直到該第二指令管線準(zhǔn)備好執(zhí)行該第二部份;以及一控制邏輯,耦接至該指令隊(duì)列,用以儲(chǔ)存該第二部份的每個(gè)指令的一目前狀態(tài)及一有效位,該目前狀態(tài)指出,該第二部份的該指令儲(chǔ)存于這些第一指令管線階段中的哪個(gè)階段。
18.如權(quán)利要求17所述的微處理器,其中該指令隊(duì)列及該第二指令管線的運(yùn)作,與該第一指令管線的運(yùn)作為異步。
19.如權(quán)利要求17所述的微處理器,還包括一多任務(wù)器,耦接至該指令隊(duì)列及該第二指令管線,用以選擇性地繞過該第二指令管線中的該指令隊(duì)列。
20.如權(quán)利要求17所述的微處理器,還包括一數(shù)據(jù)高速緩存,耦接至該第一指令管線,用以提供這些指令所指定的數(shù)據(jù);以及一數(shù)據(jù)隊(duì)列,耦接至該數(shù)據(jù)高速緩存,用以儲(chǔ)存該第二部份指令所指定的數(shù)據(jù)。
21.如權(quán)利要求17所述的微處理器,其中該目前狀態(tài)也指出該指令是否已從這些第一指令管線階段丟棄。
22.一種維持一微處理器中功能單元間的指令狀態(tài)一致性的方法,該微處理器的階段由于一隊(duì)列的存在而未對(duì)準(zhǔn),該方法包括將一指令儲(chǔ)存于一第一功能單元的一管線階段中;將該指令的一第一有效位儲(chǔ)存于該管線階段中;將該指令儲(chǔ)存于一第二功能單元的一隊(duì)列,直到該第二功能單元準(zhǔn)備好執(zhí)行該指令;將該指令的一第二有效位儲(chǔ)存于該隊(duì)列中;將該指令的一年齡儲(chǔ)存于該隊(duì)列中,其中該年齡指出該指令儲(chǔ)存于該第一功能單元的哪個(gè)管線階段;接收一信號(hào),其顯示該第一功能單元管線是否產(chǎn)生停頓;以及依據(jù)該第一有效位及該信號(hào)的接收,更新該年齡及第二有效位。
23.如權(quán)利要求22所述的方法,還包括接收一信號(hào),其表示是否已產(chǎn)生一個(gè)使該指令無效的條件;以及若該信號(hào)表示已產(chǎn)生使該指令無效的該條件,則將一值存于該第二有效位,以顯示該指令為無效。
24.如權(quán)利要求22所述的方法,還包括依據(jù)該第二有效位及該年齡,判斷是否要更新該微處理器的一用戶可見狀態(tài)。
25.如權(quán)利要求22所述的方法,其中該年齡也指出該指令是否已從該第一功能單元丟棄。
26.一種用于一微處理器中的指令隊(duì)列裝置,包括多個(gè)第一儲(chǔ)存組件,每個(gè)第一組件儲(chǔ)存一指令,由一第一功能單元執(zhí)行,該指令也儲(chǔ)存于一第二功能單元的多個(gè)管線階段其中之一;以及多個(gè)第二儲(chǔ)存組件,耦接至這些第一儲(chǔ)存組件,每一這些第二儲(chǔ)存組件用以儲(chǔ)存這些第一儲(chǔ)存組件其中一對(duì)應(yīng)者所存的該指令的一年齡,該年齡指出該第二功能單元的這些管線階段其中之一,其中所指定的該第二功能單元管線階段儲(chǔ)存該指令的一目前狀態(tài)。
27.如權(quán)利要求26所述的指令隊(duì)列裝置,其中該目前狀態(tài)指出該指令是否有效。
全文摘要
本發(fā)明提供用于具有二個(gè)未對(duì)準(zhǔn)的功能單元管線的微處理器的裝置及方法,即保持分離隊(duì)列功能單元之間的狀態(tài)一致性的方法及裝置,可將第二管線的指令隊(duì)列置于第一管線的中間階段,而非置于丟棄指令的階段之后。對(duì)于隊(duì)列中的每個(gè)指令,此裝置可維持其狀態(tài)與其在第一管線的相對(duì)狀態(tài)間的一致性。此狀態(tài)包括指令的年齡及一有效位。此年齡指出指令位于第一管線的哪個(gè)階段。此裝置包括邏輯,以依據(jù)第一管線是否停頓、來自第一管線的有效位以及隊(duì)列是否向下移位,來更新年齡及有效位。微處理器則依據(jù)指令年齡及有效位,以來自第二功能單元的指令執(zhí)行結(jié)果,選擇性地更新其用戶可見狀態(tài)。
文檔編號(hào)G06F9/38GK1558324SQ200410001569
公開日2004年12月29日 申請(qǐng)日期2004年1月13日 優(yōu)先權(quán)日2004年1月13日
發(fā)明者艾爾瑪·湯姆, 艾爾瑪 湯姆 申請(qǐng)人:智慧第一公司