一種容忍cache缺失快速清空流水線的異常處理方法及其處理結(jié)構(gòu)的制作方法
【專利摘要】一種容忍cache缺失快速清空流水線的異常處理方法及其處理結(jié)構(gòu),處理方法包括:首先定義“假命中”狀態(tài),標(biāo)識(shí)被流水線清空的無(wú)效指令對(duì)cache的訪問(wèn)結(jié)果;在“假命中”狀態(tài)下cache不保證指令碼或數(shù)據(jù)字正確,直接將訪問(wèn)地址對(duì)應(yīng)的緩存信息輸出;“假命中”狀態(tài)取指操作中將流水線清空信號(hào)直接作用于指令cache,使無(wú)效指令訪問(wèn)cache時(shí)選擇“假命中”狀態(tài);在異常處理開(kāi)始時(shí),使用流水線清空信號(hào)與存儲(chǔ)器訪問(wèn)級(jí)無(wú)效標(biāo)識(shí)信號(hào)的“或”邏輯選擇控制數(shù)據(jù)cache;異常發(fā)生時(shí),cache進(jìn)入“假命中”狀態(tài),使流水線繼續(xù)推進(jìn)。本發(fā)明同時(shí)公開(kāi)了應(yīng)用該異常處理方法的結(jié)構(gòu)。本發(fā)明能夠加快異常處理速度,提高系統(tǒng)的實(shí)時(shí)性。
【專利說(shuō)明】一種容忍cache缺失快速清空流水線的異常處理方法及其處理結(jié)構(gòu)
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及哈佛結(jié)構(gòu)的RISC處理器在進(jìn)行異常處理時(shí)能夠快速清空流水線的結(jié)構(gòu)及方法,具體為一種容忍cache缺失快速清空流水線的異常處理方法及其處理結(jié)構(gòu)。
【背景技術(shù)】
[0002]目前高性能微處理器普遍使用層次化的多級(jí)cache來(lái)作為數(shù)據(jù)和指令的緩沖,以減小處理器和存儲(chǔ)器之間的速率差異。其中,第一級(jí)cache具有很小的訪問(wèn)延遲,基本上與處理器的速率保持一致,為了獲得指令和數(shù)據(jù)的并行訪問(wèn),它通常會(huì)分成獨(dú)立的指令cache和數(shù)據(jù)cache,即所謂的哈佛結(jié)構(gòu);第二級(jí)cache —般將指令和數(shù)據(jù)統(tǒng)一存放在一起,它可以在片內(nèi)也可以在片外;在未來(lái)的高端設(shè)計(jì)中,將大容量的第三級(jí)cache集成在片內(nèi)也很有可能成為一種普遍的技術(shù)手段。但無(wú)論怎樣,一級(jí)cache的缺失始終是影響處理器性能的重要因素,這種影響不僅表現(xiàn)在處理器執(zhí)行正常功能的過(guò)程中,而且還表現(xiàn)在它處理異常情況的方式上。對(duì)于當(dāng)前絕大多數(shù)主流的RISC微處理器而言,它們一般都采用精確異常的處理方式,即在發(fā)生異常時(shí),要保證異常指令之前的所有指令都已經(jīng)成功執(zhí)行,而異常指令之后所有進(jìn)入流水線的指令都不能執(zhí)行,必須被清空掉;此后處理器才從異常入口地址處取新指令并開(kāi)始執(zhí)行異常處理子程序。在流水線清空過(guò)程中,由于潛在的cache缺失,就可能導(dǎo)致整個(gè)流水線被阻塞,使得異常處理也停滯不前,最終影響計(jì)算機(jī)系統(tǒng)處理異常事件的實(shí)時(shí)性。
[0003]為了降低cache缺失所導(dǎo)致的性能損失,目前從體系結(jié)構(gòu)的層面上已經(jīng)提出了兩種技術(shù)手段:(I)非阻塞cache技術(shù),即發(fā)生cache缺失時(shí),流水線不被阻塞,可以繼續(xù)執(zhí)行其后續(xù)無(wú)關(guān)的指令,以此來(lái)隱藏cache缺失的開(kāi)銷。它通過(guò)一個(gè)專門的“缺失隊(duì)列”來(lái)存儲(chǔ)缺失指令,直到缺失的數(shù)據(jù)塊從主存中讀回,因此cache缺失能夠被隱藏的周期數(shù)取決于缺失指令后續(xù)的無(wú)關(guān)指令的條數(shù)。顯然,這種結(jié)構(gòu)在處理器執(zhí)行正常功能時(shí)是有助于性能提升的,但在異常處理中卻無(wú)濟(jì)于事,因?yàn)槿笔е噶畹暮罄m(xù)指令都要被流水線清空掉,它們本身并不占用有效的執(zhí)行時(shí)間,也就無(wú)法隱藏缺失的開(kāi)銷;另一方面,非阻塞本質(zhì)上是一種亂序執(zhí)行的思想,對(duì)于嚴(yán)格保證指令順序性的精確異常來(lái)說(shuō),只會(huì)增加控制的復(fù)雜度。(2)預(yù)取cache技術(shù),它通過(guò)提前激發(fā)將來(lái)可能產(chǎn)生的cache缺失行為,使缺失處理與缺失指令之前的其它指令并行執(zhí)行,從而隱藏cache缺失的開(kāi)銷。為了實(shí)現(xiàn)預(yù)取功能,它需要“存儲(chǔ)器參考預(yù)測(cè)表”和“預(yù)取隊(duì)列”兩個(gè)硬件邏輯。每次使用分支預(yù)測(cè)器產(chǎn)生的取指地址去訪問(wèn)存儲(chǔ)器參考預(yù)測(cè)表,如果有匹配項(xiàng),則說(shuō)明其對(duì)應(yīng)指令是將要執(zhí)行的,于是將該指令放入預(yù)取隊(duì)列中,以提前觸發(fā)潛在的cache缺失。遺憾的是,該技術(shù)也只適用于處理器執(zhí)行正常功能的情況,在進(jìn)行異常處理時(shí)并不湊效,這是因?yàn)楫惓J录巧儆械碾S機(jī)事件,不具有統(tǒng)計(jì)特性,那么分支預(yù)測(cè)器產(chǎn)生的取指地址在訪問(wèn)存儲(chǔ)器參考預(yù)測(cè)表時(shí),很可能沒(méi)有匹配項(xiàng),而不能預(yù)測(cè)到將要執(zhí)行哪條指令,最終也就無(wú)法提前觸發(fā)潛在的cache缺失行為。
[0004]如何有效的減少cache缺失開(kāi)銷、快速的進(jìn)行異常處理,是實(shí)時(shí)計(jì)算機(jī)系統(tǒng)的必然要求。然而,以上兩種技術(shù)針對(duì)異常事件的處理,仍然無(wú)法避免cache缺失導(dǎo)致的流水線停頓,經(jīng)檢索相關(guān)文獻(xiàn),目前也沒(méi)有能很好解決該問(wèn)題的方法。
【發(fā)明內(nèi)容】
[0005]針對(duì)現(xiàn)有技術(shù)中存在的問(wèn)題,本發(fā)明提供一種通過(guò)在常規(guī)的阻塞式cache中設(shè)置“假命中”狀態(tài)來(lái)消除因無(wú)效指令的cache訪問(wèn)缺失所導(dǎo)致的流水線停頓,不增加額外復(fù)雜的硬件邏輯即能夠在偶發(fā)的異常事件中快速的清空流水線,從而加快異常處理的速度,提高計(jì)算機(jī)系統(tǒng)實(shí)時(shí)性的容忍cache缺失快速清空流水線的異常處理方法及其處理結(jié)構(gòu)。
[0006]本發(fā)明容忍cache缺失快速清空流水線的異常處理方法通過(guò)以下技術(shù)方案來(lái)實(shí)現(xiàn):
[0007]首先,修改cache的命中判斷邏輯:定義“假命中”狀態(tài),標(biāo)識(shí)被流水線清空的無(wú)效指令對(duì)cache的訪問(wèn)結(jié)果;
[0008]然后,定義“假命中”狀態(tài)下cache的行為:cache無(wú)需給流水線提供正確的指令碼或數(shù)據(jù)字,直接將訪問(wèn)地址對(duì)應(yīng)的緩存信息進(jìn)行輸出;
[0009]其次,實(shí)現(xiàn)指令cache “假命中”狀態(tài)的流水線控制:取指操作中將處理器生成的流水線清空信號(hào)直接作用于指令cache,使當(dāng)前周期無(wú)效指令在訪問(wèn)cache時(shí)能夠選擇“假命中”狀態(tài);
[0010]再次,實(shí)現(xiàn)數(shù)據(jù)cache “假命中”狀態(tài)的流水線控制:在異常處理開(kāi)始時(shí),使用處理器生成的流水線清空信號(hào)與存儲(chǔ)器訪問(wèn)級(jí)無(wú)效標(biāo)識(shí)信號(hào)的“或”邏輯作為數(shù)據(jù)cache “假命中”狀態(tài)的選擇控制;
[0011]最后,在發(fā)生異常的情況下,cache進(jìn)入“假命中”狀態(tài),直接將數(shù)據(jù)返回給流水線,既不保證數(shù)據(jù)的正確性也不發(fā)送訪存請(qǐng)求,進(jìn)而使得流水線繼續(xù)推進(jìn)。
[0012]所述的異常處理的指令包括正在訪問(wèn)數(shù)據(jù)cache的指令以及后續(xù)周期訪問(wèn)數(shù)據(jù)cache的指令。
[0013]處理器生成的流水線清空信號(hào)作用于當(dāng)前所有指令的流水級(jí)后,將前一個(gè)流水級(jí)的無(wú)效標(biāo)識(shí)信號(hào)向后一個(gè)流水級(jí)傳遞。
[0014]所述的異常處理前首先進(jìn)行保存現(xiàn)場(chǎng)操作,然后通過(guò)流水線清空控制信號(hào)對(duì)異常指令之后的所有指令進(jìn)行標(biāo)識(shí);所述的異常指令之后的所有指令包括從取指級(jí)到存儲(chǔ)器訪問(wèn)級(jí)的指令。
[0015]所述的無(wú)效指令包括對(duì)應(yīng)譯碼級(jí)、寄存器訪問(wèn)級(jí)以及執(zhí)行級(jí)的指令。
[0016]本發(fā)明容忍cache缺失快速清空流水線的異常處理結(jié)構(gòu)通過(guò)以下技術(shù)方案來(lái)實(shí)現(xiàn):包括能夠標(biāo)識(shí)被流水線清空的無(wú)效指令對(duì)cache的訪問(wèn)結(jié)果的命中判斷邏輯單元,流水線取指操作中能夠?qū)⑻幚砥魃傻牧魉€清空信號(hào)直接作用于指令cache的指令控制單元,以及流水線異常處理開(kāi)始時(shí)能夠?qū)⑻幚砥魃傻牧魉€清空信號(hào)與存儲(chǔ)器訪問(wèn)級(jí)無(wú)效標(biāo)識(shí)信號(hào)的“或”邏輯作為數(shù)據(jù)cache選擇控制的數(shù)據(jù)控制單元,所述的命中判斷邏輯單元標(biāo)識(shí)的無(wú)效指令能夠通過(guò)cache將緩存信息直接進(jìn)行輸出。
[0017]所述的能夠標(biāo)識(shí)被流水線清空的無(wú)效指令對(duì)cache的訪問(wèn)結(jié)果的命中判斷邏輯單元包括多路選擇器及其選擇邏輯單元。
[0018]與現(xiàn)有技術(shù)相比,本發(fā)明完全消除了由于無(wú)效指令潛在的cache訪問(wèn)缺失導(dǎo)致的流水線停頓現(xiàn)象,加快了異常處理的速度,有益的技術(shù)效果如下:
[0019](I) “假命中”機(jī)制造就了無(wú)效指令在流水線中的零等待。對(duì)于當(dāng)今的高頻處理器而言,cache缺失至少需要幾十上百個(gè)時(shí)鐘周期,但“假命中”使無(wú)效指令對(duì)cache的訪問(wèn)不產(chǎn)生缺失行為,從而避免了流水線的等待。
[0020](2)降低了系統(tǒng)功耗?!凹倜小辈话l(fā)訪存請(qǐng)求,避免無(wú)效指令對(duì)存儲(chǔ)器進(jìn)行不必要的訪問(wèn)操作,從而降低了整個(gè)系統(tǒng)的功耗開(kāi)銷。
[0021](3)提高了計(jì)算機(jī)系統(tǒng)的實(shí)時(shí)處理能力。當(dāng)外部中斷或者內(nèi)部異常事件發(fā)生時(shí),指令流水線能夠被快速清空并立即響應(yīng)異常處理,有效增強(qiáng)了計(jì)算機(jī)系統(tǒng)的實(shí)時(shí)性。
[0022](4)本發(fā)明更適用于深度流水的微處理器設(shè)計(jì)。處理器的流水級(jí)數(shù)越多,異常發(fā)生時(shí)需要清空的指令就越多,其中訪存指令由于cache缺失導(dǎo)致流水線停頓的開(kāi)銷就會(huì)越大,針對(duì)深流水線中不斷增多的無(wú)效訪存指令,“假命中”策略零開(kāi)銷特性的效果將更加明顯。
[0023](5)本發(fā)明的控制結(jié)構(gòu)簡(jiǎn)單,除了增加“假命中”狀態(tài)的多路選擇器及其選擇邏輯之外無(wú)需其它的硬件資源。
【專利附圖】
【附圖說(shuō)明】
[0024]圖1為本發(fā)明實(shí)現(xiàn)快速異常處理的控制結(jié)構(gòu)框圖;
[0025]圖2為常規(guī)RISC處理器在進(jìn)行異常處理時(shí)流水線清空的時(shí)序圖;
[0026]圖3為本發(fā)明在進(jìn)行異常處理時(shí)流水線清空的時(shí)序圖。
【具體實(shí)施方式】
[0027]下面結(jié)合具體的實(shí)施例對(duì)本發(fā)明做進(jìn)一步的詳細(xì)說(shuō)明,所述是對(duì)本發(fā)明的解釋而不是限定。
[0028]本發(fā)明在異常處理過(guò)程中主要包括如下方面:
[0029]首先,修改cache的命中判斷邏輯。一般情況下,cache的訪問(wèn)結(jié)果只會(huì)處于互斥的兩種狀態(tài),即“命中”狀態(tài)或者“缺失”狀態(tài),我們針對(duì)異常處理時(shí)流水線的清空過(guò)程,再專門定義一種“假命中”狀態(tài),用以標(biāo)識(shí)那些被流水線清空的無(wú)效指令對(duì)cache的訪問(wèn)結(jié)果。
[0030]第二,定義“假命中”狀態(tài)下cache的行為。由于流水線中的無(wú)效指令最終不能更新處理器的任何狀態(tài)信息,因此它們?cè)L問(wèn)cache所得到的指令不會(huì)被流水線譯碼,所得到的數(shù)據(jù)也不會(huì)被處理或?qū)懟氐郊拇嫫魑募?;也就是說(shuō),針對(duì)這些無(wú)效指令,cache無(wú)需給流水線提供正確的指令碼或數(shù)據(jù)字。于是,“假命中”狀態(tài)完全可以與“命中”狀態(tài)一樣來(lái)實(shí)現(xiàn),此時(shí)cache直接將訪問(wèn)地址對(duì)應(yīng)的緩存信息進(jìn)行輸出,由于不發(fā)訪存請(qǐng)求,所以就不會(huì)停頓流水線;唯一不同的是,在“假命中”狀態(tài)下,cache并不用保證輸出給流水線的指令或數(shù)據(jù)的正確性。
[0031]第三,實(shí)現(xiàn)指令cache “假命中”狀態(tài)的流水線控制。每次發(fā)生意外事件并進(jìn)行異常處理時(shí),處理器都會(huì)生成一個(gè)流水線清空信號(hào),用來(lái)控制取消異常指令之后已經(jīng)進(jìn)入流水線的所有指令的執(zhí)行;同時(shí)生成異常處理的入口地址,并在下個(gè)周期給取指級(jí)進(jìn)行取指。由于當(dāng)前周期在取指級(jí)已有一個(gè)正在訪問(wèn)指令cache的取指操作,并且該指令是被流水線取消執(zhí)行的無(wú)效指令,然而,下一個(gè)周期進(jìn)行異常處理入口地址的取指操作,該指令卻是有效的,因此,生成的流水線清空信號(hào)只維持一個(gè)周期,該信號(hào)將直接作用于指令cache,使當(dāng)前周期無(wú)效指令在訪問(wèn)cache時(shí)能選擇“假命中”狀態(tài)。
[0032]第四,實(shí)現(xiàn)數(shù)據(jù)cache“假命中”狀態(tài)的流水線控制。發(fā)生異常事件時(shí),當(dāng)前周期某條指令很可能正在訪問(wèn)數(shù)據(jù)cache,通過(guò)流水線清空信號(hào)可以取消該無(wú)效指令的無(wú)效訪問(wèn),并選擇“假命中”狀態(tài);然而流水線中還可能存在某條指令當(dāng)前未訪問(wèn)數(shù)據(jù)cache,后續(xù)周期它才開(kāi)始訪問(wèn)數(shù)據(jù)cache的情況,那么只維持當(dāng)前一個(gè)周期的流水線清空信號(hào)將無(wú)法對(duì)該指令進(jìn)行無(wú)效標(biāo)識(shí)。為此,在異常處理開(kāi)始時(shí),生成的流水線清空信號(hào)一旦作用于當(dāng)前所有指令的流水級(jí)之后,我們還必須讓前一個(gè)流水級(jí)的無(wú)效標(biāo)識(shí)信號(hào)向后一個(gè)流水級(jí)傳遞,那么當(dāng)指令推進(jìn)到存儲(chǔ)器訪問(wèn)級(jí)并開(kāi)始訪問(wèn)數(shù)據(jù)cache時(shí),傳遞到存儲(chǔ)器訪問(wèn)級(jí)的無(wú)效標(biāo)識(shí)信號(hào)則恰好可以控制該指令對(duì)數(shù)據(jù)cache的訪問(wèn)處于“假命中”狀態(tài)。所以,使用流水線清空信號(hào)與存儲(chǔ)器訪問(wèn)級(jí)的無(wú)效標(biāo)識(shí)信號(hào)的或邏輯作為數(shù)據(jù)cache “假命中”狀態(tài)的選擇控制。
[0033]參見(jiàn)圖1,針對(duì)一級(jí)指令cache和數(shù)據(jù)cache而言,它們的標(biāo)志陣列和數(shù)據(jù)陣列被并行的訪問(wèn),從標(biāo)志陣列讀出的tag值用于命中判斷,如果命中,則從數(shù)據(jù)陣列讀出的data值可直接作為命中字返回給流水線進(jìn)行處理;否則如果發(fā)生缺失,則向二級(jí)cache或者外部存儲(chǔ)器發(fā)出訪存請(qǐng)求,此時(shí)整個(gè)流水線被停頓下來(lái)。當(dāng)訪存完成時(shí),將訪存結(jié)果memdata返回給流水線,同時(shí)放開(kāi)流水線使其正常推進(jìn)。作為示例,圖中展示了一個(gè)七級(jí)流水結(jié)構(gòu),其中的異常處理級(jí)專門對(duì)內(nèi)部意外事件或者外部中斷事件進(jìn)行處理。當(dāng)出現(xiàn)異常事件時(shí),首先是保存現(xiàn)場(chǎng)操作,然后生成清空流水線的控制信號(hào)All_flush,用來(lái)對(duì)異常指令之后的所有指令(包括從取指級(jí)到存儲(chǔ)器訪問(wèn)級(jí)的指令)進(jìn)行標(biāo)識(shí),表明它們從此刻起已變?yōu)闊o(wú)效,而且每一級(jí)指令的無(wú)效標(biāo)識(shí)也將向下一流水級(jí)傳遞;與此同時(shí),生成異常處理入口地址給取指級(jí),以指導(dǎo)它在下個(gè)周期進(jìn)行新指令的取指。由于當(dāng)前周期取指級(jí)和存儲(chǔ)器訪問(wèn)級(jí)的無(wú)效指令正在訪問(wèn)cache,并且其它無(wú)效指令(對(duì)應(yīng)譯碼級(jí)、寄存器訪問(wèn)級(jí)和執(zhí)行級(jí)的指令)在后續(xù)周期也可能需要進(jìn)行存儲(chǔ)器的訪問(wèn),為了避免潛在的cache缺失而導(dǎo)致流水線的停頓,本發(fā)明為cache的命中判斷邏輯增加了一個(gè)“假命中”的狀態(tài)mhit。在處理器執(zhí)行正常功能時(shí),cache要么處于命中狀態(tài)hit、要么處于缺失狀態(tài)miss,而只有在發(fā)生異常的情況下,cache才會(huì)進(jìn)入“假命中”狀態(tài)mhit,此時(shí)cache直接將數(shù)據(jù)陣列的data值返回給流水線,而無(wú)需保證該值的正確性,它也不會(huì)發(fā)出訪存請(qǐng)求,因此流水線可以順利推進(jìn)。對(duì)于指令cache而言,控制mhit狀態(tài)的信號(hào)ici_inull直接來(lái)自于流水線清空信號(hào)All_flush ;對(duì)于數(shù)據(jù)cache而言,控制mhit狀態(tài)的信號(hào)dci_inull則來(lái)自于All_flush信號(hào)與存儲(chǔ)器訪問(wèn)級(jí)的無(wú)效標(biāo)識(shí)信號(hào)M_flush的或邏輯。
[0034]參見(jiàn)圖2,圖中右上角的數(shù)字代表指令序號(hào),inst表示icache返回給流水線的指令,data表示dcache返回給流水線的數(shù)據(jù),F(xiàn)、D、A、E、M、X、W分別表示七個(gè)流水級(jí)。在指令I(lǐng)的X級(jí)(即異常處理級(jí))檢測(cè)到異常并開(kāi)始處理,產(chǎn)生清空流水線的信號(hào)All_flush,標(biāo)識(shí)流水線中所有指令的無(wú)效性。此時(shí)指令6和指令2分別在訪問(wèn)icache和dcache,并且都發(fā)生了缺失,需要進(jìn)行訪存請(qǐng)求,于是整個(gè)流水線都停頓下來(lái)。等到缺失的指令和數(shù)據(jù)都返回時(shí),流水線才推進(jìn),假設(shè)指令2、指令3和指令100都是load指令,此時(shí)異常處理入口地址(指令100)開(kāi)始在F級(jí)進(jìn)行取指;然而由于指令3在M級(jí)訪問(wèn)dcache并且又發(fā)生了缺失行為,于是整個(gè)流水線再次停頓下來(lái)。指令上的箭頭表示流水線清空時(shí)傳遞到相應(yīng)流水級(jí)中的指令被標(biāo)記為無(wú)效,然而正是這種無(wú)效指令的cache缺失行為導(dǎo)致了不必要的流水線停頓,影響了異常處理的速度。
[0035]參見(jiàn)圖3,在指令I(lǐng)的X級(jí)進(jìn)行異常處理時(shí),流水線清空信號(hào)All_flush促使此時(shí)的指令6和指令2的cache訪問(wèn)都進(jìn)入“假命中”狀態(tài),而后續(xù)指令3在訪問(wèn)數(shù)據(jù)cache時(shí)則由向后傳遞的流水級(jí)標(biāo)識(shí)信號(hào)M_f lush控制并進(jìn)入“假命中”狀態(tài)。Cache在“假命中”狀態(tài)下直接向流水線返回其數(shù)據(jù)陣列中的緩存值,而不用保證這些值的正確性,因?yàn)榱魉€已經(jīng)標(biāo)識(shí)了這些無(wú)效指令,不會(huì)對(duì)cache返回的指令或數(shù)據(jù)進(jìn)行譯碼和寫回?!凹倜小辈划a(chǎn)生訪存請(qǐng)求,無(wú)需停頓流水線,明顯加快了異常處理過(guò)程。
[0036]本發(fā)明已經(jīng)成功應(yīng)用于一種兼容SPARC V8架構(gòu)的具有七級(jí)流水的RISC微處理器中,并且已經(jīng)實(shí)現(xiàn)了多款SOC產(chǎn)品。本發(fā)明的cache “假命中”控制策略,只需增加“假命中”狀態(tài)的多路選擇器以及相應(yīng)的選擇控制邏輯,設(shè)計(jì)結(jié)構(gòu)簡(jiǎn)單,易于實(shí)施。在處理器進(jìn)行異常處理時(shí),該結(jié)構(gòu)可以完全避免流水線清空過(guò)程中由于無(wú)效指令的cache訪問(wèn)缺失而導(dǎo)致的流水線停頓,無(wú)需進(jìn)行訪存請(qǐng)求而實(shí)現(xiàn)流水線的零等待,明顯加快了異常處理的速度,有利于提高整個(gè)系統(tǒng)的實(shí)時(shí)性。
【權(quán)利要求】
1.一種容忍cache缺失快速清空流水線的異常處理方法,其特征在于: 首先,修改cache的命中判斷邏輯:定義“假命中”狀態(tài),標(biāo)識(shí)被流水線清空的無(wú)效指令對(duì)cache的訪問(wèn)結(jié)果; 然后,定義“假命中”狀態(tài)下cache的行為:cache無(wú)需給流水線提供正確的指令碼或數(shù)據(jù)字,直接將訪問(wèn)地址對(duì)應(yīng)的緩存信息進(jìn)行輸出; 其次,實(shí)現(xiàn)指令cache“假命中”狀態(tài)的流水線控制:取指操作中將處理器生成的流水線清空信號(hào)直接作用于指令cache,使當(dāng)前周期無(wú)效指令在訪問(wèn)cache時(shí)能夠選擇“假命中”狀態(tài); 再次,實(shí)現(xiàn)數(shù)據(jù)cache “假命中”狀態(tài)的流水線控制:在異常處理開(kāi)始時(shí),使用處理器生成的流水線清空信號(hào)與存儲(chǔ)器訪問(wèn)級(jí)無(wú)效標(biāo)識(shí)信號(hào)的“或”邏輯作為數(shù)據(jù)cache “假命中”狀態(tài)的選擇控制; 最后,在發(fā)生異常的情況下,cache進(jìn)入“假命中”狀態(tài),直接將數(shù)據(jù)返回給流水線,既不保證數(shù)據(jù)的正確性也不發(fā)送訪存請(qǐng)求,進(jìn)而使得流水線繼續(xù)推進(jìn)。
2.根據(jù)權(quán)利要求1所述的容忍cache缺失快速清空流水線的異常處理方法,其特征在于:所述的異常處理的指令包括正在訪問(wèn)數(shù)據(jù)cache的指令以及后續(xù)周期訪問(wèn)數(shù)據(jù)cache的指令。
3.根據(jù)權(quán)利要求1或2所述的容忍cache缺失快速清空流水線的異常處理方法,其特征在于:處理器生成的流水線清空信號(hào)作用于當(dāng)前所有指令的流水級(jí)后,將前一個(gè)流水級(jí)的無(wú)效標(biāo)識(shí)信號(hào)向后一個(gè)流水級(jí)傳遞。
4.根據(jù)權(quán)利要求1所述的容忍cache缺失快速清空流水線的異常處理方法,其特征在于:所述的異常處理前首先進(jìn)行保存現(xiàn)場(chǎng)操作,然后通過(guò)流水線清空控制信號(hào)對(duì)異常指令之后的所有指令進(jìn)行標(biāo)識(shí);所述的異常指令之后的所有指令包括從取指級(jí)到存儲(chǔ)器訪問(wèn)級(jí)的指令。
5.根據(jù)權(quán)利要求1所述的容忍cache缺失快速清空流水線的異常處理方法,其特征在于:所述的無(wú)效指令包括對(duì)應(yīng)譯碼級(jí)、寄存器訪問(wèn)級(jí)以及執(zhí)行級(jí)的指令。
6.一種容忍cache缺失快速清空流水線的異常處理結(jié)構(gòu),其特征在于:包括能夠標(biāo)識(shí)被流水線清空的無(wú)效指令對(duì)cache的訪問(wèn)結(jié)果的命中判斷邏輯單元,流水線取指操作中能夠?qū)⑻幚砥魃傻牧魉€清空信號(hào)直接作用于指令cache的指令控制單元,以及流水線異常處理開(kāi)始時(shí)能夠?qū)⑻幚砥魃傻牧魉€清空信號(hào)與存儲(chǔ)器訪問(wèn)級(jí)無(wú)效標(biāo)識(shí)信號(hào)的“或”邏輯作為數(shù)據(jù)cache選擇控制的數(shù)據(jù)控制單元,所述的命中判斷邏輯單元標(biāo)識(shí)的無(wú)效指令能夠通過(guò)cache將緩存信息直接進(jìn)行輸出。
7.根據(jù)權(quán)利要求6所述的容忍cache缺失快速清空流水線的異常處理結(jié)構(gòu),其特征在于:所述的能夠標(biāo)識(shí)被流水線清空的無(wú)效指令對(duì)cache的訪問(wèn)結(jié)果的命中判斷邏輯單元包括多路選擇器及其選擇邏輯單元。
【文檔編號(hào)】G06F11/07GK104461758SQ201410628863
【公開(kāi)日】2015年3月25日 申請(qǐng)日期:2014年11月10日 優(yōu)先權(quán)日:2014年11月10日
【發(fā)明者】肖建青, 裴茹霞, 李紅橋, 張洵穎, 婁冕 申請(qǐng)人:中國(guó)航天科技集團(tuán)公司第九研究院第七七一研究所