一種支持非阻塞缺失處理的緩沖方法
【專利摘要】本發(fā)明公開了一種支持非阻塞缺失處理的緩沖方法,所述方法在處理器遇到請求發(fā)生缺失的時候,通過緩沖將缺失的請求暫存在缺失指令隊列中,允許流水線繼續(xù)發(fā)送后續(xù)無關的請求,將缺失代價隱藏在不相關請求的正常處理中,通過降低緩沖缺失代價來降低存儲器的訪問延時。本發(fā)明針對多個缺失請求發(fā)生了重疊,通過缺失緩沖可以進行多重判斷,對多個缺失請求進行統(tǒng)一存儲,從而進一步降低實際的缺失代價。本發(fā)明具有廣泛適用性,可運用于各種多核芯片緩沖設計中,能夠提高流水處理的效率。
【專利說明】
一種支持非阻塞缺失處理的緩沖方法
技術領域
[0001]本發(fā)明涉及計算機存儲技術領域,具體涉及一種支持非阻塞缺失處理的緩沖方法。
【背景技術】
[0002]對于允許亂序執(zhí)行支持流水的處理器,為了維護數(shù)據(jù)的一致性,往往采用阻塞的緩沖的設計,即當有請求在緩沖中缺失時,停頓流水線,等待數(shù)據(jù)從下一級存儲體返回時,該請求才算處理完成,流水線才能繼續(xù)處理下一個請求,返回數(shù)據(jù)的時間決定了阻塞緩沖的效率。
[0003]但是,在緩沖缺失時停頓流水線是十分浪費資源的行為,如何提高處理器的處理效率,是亟需解決的一個問題。
【發(fā)明內(nèi)容】
[0004]本發(fā)明要解決的技術問題是:本發(fā)明提出了一種支持非阻塞缺失處理的緩沖方法,通過緩沖對流水線中缺失的請求進行緩存并進行管理,并對DDR返回的請求進行處理。
[0005]如果處理器能在等待返回數(shù)據(jù)的同時,繼續(xù)發(fā)送下一個請求,可以大大提高處理效率。而非阻塞緩沖的策略就是在處理器遇到長延遲訪存操作,即請求發(fā)生缺失的時候,通過緩沖的將缺失的請求暫存在缺失指令隊列中,允許流水線繼續(xù)發(fā)送后續(xù)無關的請求,將缺失代價隱藏在不相關請求的正常處理中,通過降低緩沖缺失代價來降低存儲器的訪問延時。同阻塞緩沖相比較,非阻塞緩沖技術雖然增加了專門用于放置缺失指令的存儲體,但是請求處理速度的大幅提升,面積的增加是微不足道的。
[0006]本發(fā)明所采用的技術方案為:
一種支持非阻塞缺失處理的緩沖方法,所述方法在處理器遇到請求發(fā)生缺失的時候,通過緩沖將缺失的請求暫存在缺失指令隊列中,允許流水線繼續(xù)發(fā)送后續(xù)無關的請求,將缺失代價隱藏在不相關請求的正常處理中,通過降低緩沖缺失代價來降低存儲器的訪問延時。
[0007]所述緩沖用來對流水線中缺失的請求進行緩存并進行管理,并對DDR返回的請求進行處理。
[0008]所述緩沖與主控流水線相連,存儲缺失請求,同時與DDR返回數(shù)據(jù)處理線關聯(lián),當DDR返回數(shù)據(jù)后,對缺失請求進行暫存后,連續(xù)處理返回缺失請求的同行請求。
[0009]所述緩沖整體由控制模塊與存儲體組成,多條流水線公用一個緩沖,不同的缺失請求經(jīng)過控制模塊選擇進入存儲體,當缺失請求從DDR返回時,經(jīng)過缺失請求返回處理模塊,再發(fā)往控制模塊,對相關的缺失請求進行統(tǒng)一處理。
[0010]所述緩沖的深度根據(jù)實際情況中的缺失請求數(shù)量靈活設定。
[0011]所述緩沖設置時,將緩沖存儲體平均分成四個區(qū)域,每個區(qū)域深度為4,每部分記錄一個第一次缺失請求數(shù)據(jù)及其最多3個相關缺失數(shù)據(jù),當流水線中有不同于前面四個缺失請求的缺失到來時,進行判斷,缺失存入相關缺失數(shù)目較少的區(qū)域,同時缺失地址存入寄存器中。
[0012]所有流水線公用一個缺失緩沖,多條流水線同時向缺失緩沖發(fā)送缺失請求,要實現(xiàn)非阻塞緩沖就需要考慮缺失請求集中發(fā)送的情況,為了增強缺失緩沖的多缺失請求處理能力,在缺失請求發(fā)送至缺失緩沖的控制模塊時,采用一種輪轉(zhuǎn)機制來實現(xiàn)缺失請求的順序與入緩沖中:
當缺失請求集中發(fā)送時同一拍最多有4個請求發(fā)往缺失緩沖,首先,通過與缺失地址寄存器比較,如果是不多于四個的新缺失請求或是之前請求的相關請求,我們將這些請求發(fā)往4個預存PreBUF,否則發(fā)送Busy信號至流水線暫停發(fā)送缺失請求;
然后按照默認順序,從PreBUFO至PreBUF3每拍寫一個缺失請求數(shù)據(jù)到存儲體;
當?shù)谝慌慕Y(jié)束后,PreBUFO中的缺失請求已經(jīng)寫入到存儲體,輪轉(zhuǎn)機制將PreBUFl設為高優(yōu)先級,第二拍時,將PreBUFl中的缺失請求寫入存儲體,同時,如果有新的流水線O的缺失請求,因為PreBUFO已經(jīng)清空,則可以同時存入新的缺失請求,這樣的好處在于如果流水線O有連續(xù)的缺失請求集中發(fā)送,此時不需要停頓流水線,新的缺失請求可以暫存在PreBUF中,體現(xiàn)了非阻塞傳輸?shù)膬?yōu)點;
同理,第三拍時,會優(yōu)先處理PreBUF2中的缺失請求,按照0_1_2_3的順序輪轉(zhuǎn)進行寫入存儲體操作,與只要出現(xiàn)缺失,流水線就產(chǎn)生停頓相比較,在缺失請求密集發(fā)送的時候,可以提高流水線非相關請求傳輸效率。
[0013]返回的緩沖能夠接收來自DDR返回的各種請求,包括缺失請求,不可緩沖請求,與輸出緩沖在結(jié)構(gòu)上類似,但功能相反,存儲體的結(jié)構(gòu)上采用了異步FIFO實現(xiàn)。
[0014]在功能上,返回緩沖需要對DDR返回的連續(xù)幾拍請求進行組合為一個請求放入存儲體,實際操作中,需要根據(jù)返回請求的信息位確定返回請求的實際位寬。
[0015]在缺失處理的實現(xiàn)中,需要明確相關處理的前后關系,通過狀態(tài)機維護處理的順序性,避免出現(xiàn)數(shù)據(jù)一致性問題。
[0016]本發(fā)明的有益效果為:
本發(fā)明針對多個缺失請求發(fā)生了重疊,通過缺失緩沖可以進行多重判斷,對多個缺失請求進行統(tǒng)一存儲,從而進一步降低實際的缺失代價。本發(fā)明具有廣泛適用性,可運用于各種多核芯片緩沖設計中,能夠提高流水處理的效率。
【附圖說明】
[0017]圖1為本發(fā)明缺失緩沖結(jié)構(gòu)示意圖;
圖2為返回緩沖結(jié)構(gòu)圖示意圖;
圖3為處理狀態(tài)機不意圖。
【具體實施方式】
[0018]下面結(jié)合說明書附圖,根據(jù)【具體實施方式】對本發(fā)明進一步說明:
實施例1:
一種支持非阻塞缺失處理的緩沖方法,所述方法在處理器遇到長延遲訪存操作,即請求發(fā)生缺失的時候,通過緩沖將缺失的請求暫存在缺失指令隊列中,允許流水線繼續(xù)發(fā)送后續(xù)無關的請求,將缺失代價隱藏在不相關請求的正常處理中,通過降低緩沖缺失代價來降低存儲器的訪問延時。同阻塞緩沖相比較,非阻塞緩沖技術雖然增加了專門用于放置缺失指令的存儲體,但是請求處理速度的大幅提升,面積的增加是微不足道的。
[0019]實施例2
在實施例1的基礎上,本實施例所述緩沖用來對流水線中缺失的請求進行緩存并進行管理,并對DDR返回的請求進行處理。
[0020]實施例3
如圖1所示,在實施例2的基礎上,本實施例所述緩沖與主控流水線相連,存儲缺失請求,同時與DDR返回數(shù)據(jù)處理線關聯(lián),當DDR返回數(shù)據(jù)后,對缺失請求進行暫存后,連續(xù)處理返回缺失請求的同行請求。
[0021 ] 實施例4
在實施例3的基礎上,本實施例所述緩沖整體由控制模塊與存儲體組成,多條流水線公用一個緩沖,不同的缺失請求經(jīng)過控制模塊選擇進入存儲體,當缺失請求從DDR返回時,經(jīng)過缺失請求返回處理模塊,再發(fā)往控制模塊,對相關的缺失請求進行統(tǒng)一處理。
[0022]實施例5
在實施例4的基礎上,本實施例所述緩沖的深度可以根據(jù)實際情況中的缺失請求數(shù)量靈活設定,舉例深度設為16,緩沖只用來存儲數(shù)據(jù),缺失請求的地址和其他信息使用缺失地址寄存器存儲。
[0023]實施例6
在實施例4或5的基礎上,本實施例6綜合效率與面積的考慮,所述緩沖設置時,將緩沖存儲體平均分成四個區(qū)域,每個區(qū)域深度為4,每部分記錄一個第一次缺失請求數(shù)據(jù)及其最多3個相關缺失數(shù)據(jù),當流水線中有不同于前面四個缺失請求的缺失(缺失5)到來時,進行判斷,缺失5可以存入相關缺失數(shù)目較少的區(qū)域,同時缺失地址存入寄存器中。在不增加存儲體面積的前提下能夠存儲更多的缺失請求。
[0024]實施例7
在實施例4的基礎上,本實施例所有流水線公用一個缺失緩沖,多條流水線可以同時向缺失緩沖發(fā)送缺失請求,要實現(xiàn)非阻塞緩沖就需要考慮缺失請求集中發(fā)送的情況,為了增強缺失緩沖的多缺失請求處理能力,在缺失請求發(fā)送至缺失緩沖的控制模塊時,采用一種輪轉(zhuǎn)機制來實現(xiàn)缺失請求的順序?qū)懭刖彌_中。
[0025]以多條流水線與缺失緩沖相連為例,當缺失請求集中發(fā)送時同一拍最多有4個請求發(fā)往缺失緩沖,
首先,通過與缺失地址寄存器比較,如果是不多于四個的新缺失請求或是之前請求的相關請求,我們將這些請求發(fā)往4個預存PreBUF,否則發(fā)送Busy信號至流水線暫停發(fā)送缺失請求;
然后按照默認順序,從PreBUFO至PreBUF3每拍寫一個缺失請求數(shù)據(jù)到存儲體;
當?shù)谝慌慕Y(jié)束后,PreBUFO中的缺失請求已經(jīng)寫入到存儲體,輪轉(zhuǎn)機制將PreBUFl設為高優(yōu)先級,第二拍時,將PreBUFl中的缺失請求寫入存儲體,同時,如果有新的流水線O的缺失請求,因為PreBUFO已經(jīng)清空,則可以同時存入新的缺失請求,這樣的好處在于如果流水線O有連續(xù)的缺失請求集中發(fā)送,此時不需要停頓流水線,新的缺失請求可以暫存在PreBUF中,體現(xiàn)了非阻塞傳輸?shù)膬?yōu)點;
同理,第三拍時,會優(yōu)先處理PreBUF2中的缺失請求,按照0_1_2_3的順序輪轉(zhuǎn)進行寫入存儲體操作,與只要出現(xiàn)缺失,流水線就產(chǎn)生停頓相比較,在缺失請求密集發(fā)送的時候,可以提高流水線非相關請求傳輸效率。
[0026]實施例8
在實施例7的基礎上,本實施例返回的緩沖能夠接收來自DDR返回的各種請求,包括缺失請求,不可緩沖請求等,與輸出緩沖在結(jié)構(gòu)上類似,但功能相反,因為具有全局緩沖與DDR的相關聯(lián)的接口,而兩者時鐘不同,在交互的過程中容易因為異步邏輯產(chǎn)生誤差,因此在存儲體的結(jié)構(gòu)上仍采用了異步FIFO實現(xiàn),在此不再詳述。
[0027]實施例9
在實施例7的基礎上,本實施例在功能上,由于DDR的位寬較小,返回緩沖需要對DDR返回的連續(xù)幾拍請求進行組合為一個請求放入存儲體,實際操作中,需要根據(jù)返回請求的信息位確定返回請求的實際位寬,返回緩沖結(jié)構(gòu)如圖2所示。
[0028]實施例10
在實施例7的基礎上,本實施例在缺失請求處理的過程中,存在兩部分相關,即缺失返回數(shù)據(jù)與缺失緩沖中數(shù)據(jù)的相關及流水線缺失的相關;缺失引起的行替換數(shù)據(jù)與流水線中相關數(shù)據(jù)相關。因此在缺失處理的實現(xiàn)中,需要明確相關處理的前后關系,通過狀態(tài)機維護處理的順序性,避免出現(xiàn)數(shù)據(jù)一致性問題,處理狀態(tài)機如圖3所示。
[0029]以上實施方式僅用于說明本發(fā)明,而并非對本發(fā)明的限制,有關技術領域的普通技術人員,在不脫離本發(fā)明的精神和范圍的情況下,還可以做出各種變化和變型,因此所有等同的技術方案也屬于本發(fā)明的范疇,本發(fā)明的專利保護范圍應由權(quán)利要求限定。
【主權(quán)項】
1.一種支持非阻塞缺失處理的緩沖方法,其特征在于:所述方法在處理器遇到請求發(fā)生缺失的時候,通過緩沖將缺失的請求暫存在缺失指令隊列中,允許流水線繼續(xù)發(fā)送后續(xù)無關的請求,將缺失代價隱藏在不相關請求的正常處理中,通過降低緩沖缺失代價來降低存儲器的訪問延時。2.根據(jù)權(quán)利要求1所述的一種支持非阻塞缺失處理的緩沖方法,其特征在于:所述緩沖用來對流水線中缺失的請求進行緩存并進行管理,并對DDR返回的請求進行處理。3.根據(jù)權(quán)利要求2所述的一種支持非阻塞缺失處理的緩沖方法,其特征在于:所述緩沖與主控流水線相連,存儲缺失請求,同時與DDR返回數(shù)據(jù)處理線關聯(lián),當DDR返回數(shù)據(jù)后,對缺失請求進行暫存后,連續(xù)處理返回缺失請求的同行請求。4.根據(jù)權(quán)利要求3所述的一種支持非阻塞缺失處理的緩沖方法,其特征在于:所述緩沖整體由控制模塊與存儲體組成,多條流水線公用一個緩沖,不同的缺失請求經(jīng)過控制模塊選擇進入存儲體,當缺失請求從DDR返回時,經(jīng)過缺失請求返回處理模塊,再發(fā)往控制模塊,對相關的缺失請求進行統(tǒng)一處理。5.根據(jù)權(quán)利要求4所述的一種支持非阻塞缺失處理的緩沖方法,其特征在于:所述緩沖的深度根據(jù)實際情況中的缺失請求數(shù)量靈活設定。6.根據(jù)權(quán)利要求4或5所述的一種支持非阻塞缺失處理的緩沖方法,其特征在于:所述緩沖設置時,將緩沖存儲體平均分成四個區(qū)域,每個區(qū)域深度為4,每部分記錄一個第一次缺失請求數(shù)據(jù)及其最多3個相關缺失數(shù)據(jù),當流水線中有不同于前面四個缺失請求的缺失到來時,進行判斷,缺失存入相關缺失數(shù)目較少的區(qū)域,同時缺失地址存入寄存器中。7.根據(jù)權(quán)利要求4所述的一種支持非阻塞缺失處理的緩沖方法,其特征在于:所有流水線公用一個缺失緩沖,多條流水線同時向缺失緩沖發(fā)送缺失請求,在缺失請求發(fā)送至缺失緩沖的控制模塊時,采用一種輪轉(zhuǎn)機制來實現(xiàn)缺失請求的順序?qū)懭刖彌_中: 當缺失請求集中發(fā)送時同一拍最多有4個請求發(fā)往缺失緩沖,首先,通過與缺失地址寄存器比較,如果是不多于四個的新缺失請求或是之前請求的相關請求,我們將這些請求發(fā)往4個預存PreBUF,否則發(fā)送Busy信號至流水線暫停發(fā)送缺失請求; 然后按照默認順序,從PreBUFO至PreBUF3每拍寫一個缺失請求數(shù)據(jù)到存儲體; 當?shù)谝慌慕Y(jié)束后,PreBUFO中的缺失請求已經(jīng)寫入到存儲體,輪轉(zhuǎn)機制將PreBUFl設為高優(yōu)先級,第二拍時,將PreBUFl中的缺失請求寫入存儲體,同時,如果有新的流水線O的缺失請求,因為PreBUFO已經(jīng)清空,則可以同時存入新的缺失請求,這樣的好處在于如果流水線O有連續(xù)的缺失請求集中發(fā)送,此時不需要停頓流水線,新的缺失請求可以暫存在PreBUF中,體現(xiàn)了非阻塞傳輸?shù)膬?yōu)點; 同理,第三拍時,優(yōu)先處理PreBUF2中的缺失請求,按照O-1 _2_3的順序輪轉(zhuǎn)進行寫入存儲體操作。8.根據(jù)權(quán)利要求7所述的一種支持非阻塞缺失處理的緩沖方法,其特征在于:返回的緩沖能夠接收來自DDR返回的各種請求,包括缺失請求,不可緩沖請求,與輸出緩沖在結(jié)構(gòu)上類似,但功能相反,存儲體的結(jié)構(gòu)上采用了異步FIFO實現(xiàn)。9.根據(jù)權(quán)利要求7所述的一種支持非阻塞缺失處理的緩沖方法,其特征在于:在功能上,返回緩沖需要對DDR返回的連續(xù)幾拍請求進行組合為一個請求放入存儲體,實際操作中,需要根據(jù)返回請求的信息位確定返回請求的實際位寬。10.根據(jù)權(quán)利要求7所述的一種支持非阻塞缺失處理的緩沖方法,其特征在于:在缺失處理的實現(xiàn)中,需要明確相關處理的前后關系,通過狀態(tài)機維護處理的順序性,避免出現(xiàn)數(shù)據(jù)一致性問題。
【文檔編號】G06F9/38GK105955711SQ201610258964
【公開日】2016年9月21日
【申請日】2016年4月25日
【發(fā)明人】馬志超, 李仁剛, 童元滿
【申請人】浪潮電子信息產(chǎn)業(yè)股份有限公司