亚洲狠狠干,亚洲国产福利精品一区二区,国产八区,激情文学亚洲色图

旁路轉(zhuǎn)換緩沖缺失的處理方法及旁路轉(zhuǎn)換緩沖的制作方法

文檔序號(hào):6504333閱讀:200來(lái)源:國(guó)知局
旁路轉(zhuǎn)換緩沖缺失的處理方法及旁路轉(zhuǎn)換緩沖的制作方法
【專利摘要】本發(fā)明實(shí)施例提供一種旁路轉(zhuǎn)換緩沖缺失的處理方法及旁路轉(zhuǎn)換緩沖,該方法包括:當(dāng)當(dāng)前訪存操作發(fā)生TLB缺失異常時(shí),TLB查詢歷史信息庫(kù)以確定當(dāng)前訪存操作所使用的VA是否曾被使用,若在歷史信息庫(kù)中查找到該VA,則無(wú)需等到指令提取階段再處理該TLB缺失異常,而是直接從內(nèi)存中獲取與當(dāng)前VA對(duì)應(yīng)的物理地址PA并進(jìn)行相應(yīng)的處理,實(shí)現(xiàn)對(duì)TLB缺失異常的快速處理,從而提升處理器的性能。
【專利說(shuō)明】旁路轉(zhuǎn)換緩沖缺失的處理方法及旁路轉(zhuǎn)換緩沖

【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及計(jì)算機(jī)存儲(chǔ)技術(shù),尤其涉及一種旁路轉(zhuǎn)換緩沖缺失的處理方法及旁路轉(zhuǎn)換緩沖。

【背景技術(shù)】
[0002]目前,通常在中央處理器(Central Processing Unit, CPU)內(nèi)設(shè)置旁路轉(zhuǎn)換緩沖(Translat1n Lookaside Buffer, TLB),在進(jìn)行指令取出或數(shù)據(jù)讀寫(xiě)等訪存操作時(shí),利用TLB將虛擬地址(Virtual Address, VA)轉(zhuǎn)換為物理地址(Physical Address, PA),使用PA直接對(duì)存儲(chǔ)器進(jìn)行訪問(wèn)。具體的,TLB中保存至少一個(gè)VA的虛擬頁(yè)號(hào)(Virtual PageNumber, VPN)和PA的物理頁(yè)號(hào)(Physical Page Number, PPN)的對(duì)應(yīng)關(guān)系,該對(duì)應(yīng)關(guān)系稱之為表項(xiàng),TLB根據(jù)訪存操作使用的VPN,在表項(xiàng)中查找對(duì)應(yīng)的物理頁(yè)號(hào)(Physical PageNumber, PPN),如果查找到VPN,則輸出對(duì)應(yīng)的PPN,從而確定出PA ;否則,表示發(fā)生一次TLB缺失異常。
[0003]現(xiàn)有技術(shù)中,若發(fā)生TLB缺失異常,則在該TLB缺失異常結(jié)束后,處理器恢復(fù)到缺失異常發(fā)生之前的狀態(tài)重新執(zhí)行訪存操作以保證對(duì)異常的精確處理。
[0004]然而,大多數(shù)TLB缺失異常的處理都發(fā)生在指令提交階段,例如,指令旁路轉(zhuǎn)換緩沖(Instruct1n Translat1n Lookaside Buffer, ITLB)缺失異常發(fā)生在流水線的指令讀取階段,數(shù)據(jù)旁路轉(zhuǎn)換緩沖(Data Translat1n Lookaside Buffer, DTLB)缺失異常發(fā)生在流水線的訪存階段,但都是在指令提交階段對(duì)它們進(jìn)行處理,導(dǎo)致TLB缺失異常從發(fā)生到處理有較長(zhǎng)的延遲,從而影響處理器的性能。


【發(fā)明內(nèi)容】

[0005]本發(fā)明實(shí)施例提供一種旁路轉(zhuǎn)換緩沖缺失的處理方法及旁路轉(zhuǎn)換緩沖,以實(shí)現(xiàn)對(duì)TLB缺失異常的快速處理,從而提升處理器的性能。
[0006]第一個(gè)方面,本發(fā)明實(shí)施例提供一種旁路轉(zhuǎn)換緩沖缺失的處理方法,包括:
[0007]若當(dāng)前訪存操作發(fā)生旁路轉(zhuǎn)換緩存TLB缺失異常,則在歷史信息庫(kù)中查找所述當(dāng)前訪存操作使用的當(dāng)前虛擬地址VA,所述歷史信息庫(kù)中保存有歷史訪存操作過(guò)程中使用過(guò)的VA,所述歷史訪存操作為發(fā)生在所述當(dāng)前訪存操作之前的訪存操作;
[0008]若在所述歷史信息庫(kù)中查找到所述當(dāng)前VA,則從內(nèi)存中獲取與所述當(dāng)前VA對(duì)應(yīng)的物理地址PA。
[0009]在第一個(gè)方面的第一種可能的實(shí)現(xiàn)方式中,所述若當(dāng)前訪存操作發(fā)生旁路轉(zhuǎn)換緩存TLB缺失異常,則在歷史信息庫(kù)中查找所述當(dāng)前訪存操作使用的當(dāng)前虛擬地址VA之前,包括:
[0010]執(zhí)行所述歷史訪存操作時(shí),在所述歷史信息庫(kù)中記錄所述歷史訪存操作過(guò)程中使用的VA。
[0011 ] 結(jié)合第一個(gè)方面的第一種可能的實(shí)現(xiàn)方式,在第一個(gè)方面的第二種可能的實(shí)現(xiàn)方式中,所述在所述歷史信息庫(kù)中記錄所述歷史訪存操作過(guò)程中使用的VA,包括:
[0012]利用布隆過(guò)濾器在所述歷史信息庫(kù)中記錄所述歷史訪存操作過(guò)程中使用的VA。
[0013]結(jié)合第一個(gè)方面的第一種可能的實(shí)現(xiàn)方式,在第一個(gè)方面的第三種可能的實(shí)現(xiàn)方式中,所述在所述歷史信息庫(kù)中記錄所述歷史訪存操作過(guò)程中使用的VA,包括:
[0014]利用環(huán)形緩存在所述歷史信息庫(kù)中記錄所述歷史訪存操作過(guò)程中使用的VA。
[0015]結(jié)合第一個(gè)方面、第一方面的第一種、第二種或第三種可能的實(shí)現(xiàn),在第一個(gè)方面的第四種可能的實(shí)現(xiàn)方式中,所述若在所述歷史信息庫(kù)中查找到所述當(dāng)前VA,則從內(nèi)存中獲取與所述當(dāng)前VA對(duì)應(yīng)的物理地址PA之后,包括:
[0016]判斷所述TLB缺失異常是否需要處理,若所述TLB缺失異常需要處理,則記錄所述當(dāng)前VA與所述PA的對(duì)應(yīng)關(guān)系;
[0017]否則,若所述TLB缺失異常不需要處理,則丟棄所述PA。
[0018]結(jié)合第一個(gè)方面、第一方面的第一種、第二種、第三種或第四種可能的實(shí)現(xiàn),在第一個(gè)方面的第五種可能的實(shí)現(xiàn)方式中,所述若在所述歷史信息庫(kù)中查找到所述當(dāng)前VA,則從內(nèi)存中獲取與所述當(dāng)前VA對(duì)應(yīng)的物理地址PA,包括:
[0019]若在所述歷史信息庫(kù)中查找到所述當(dāng)前VA,則通知存儲(chǔ)器管理單元MMU啟動(dòng)硬件頁(yè)表查詢,以從內(nèi)存中獲取與所述當(dāng)前VA對(duì)應(yīng)的PA。
[0020]第二個(gè)方面,本發(fā)明實(shí)施例提供一種旁路轉(zhuǎn)換緩沖,包括:
[0021]查找模塊,用于若當(dāng)前訪存操作發(fā)生旁路轉(zhuǎn)換緩存TLB缺失異常,則在歷史信息庫(kù)中查找所述當(dāng)前訪存操作使用的當(dāng)前虛擬地址VA,所述歷史信息庫(kù)中保存有歷史訪存操作過(guò)程中使用過(guò)的VA,所述歷史訪存操作為發(fā)生在所述當(dāng)前訪存操作之前的訪存操作;
[0022]獲取模塊,用于若所述查找模塊在所述歷史信息庫(kù)中查找到所述當(dāng)前VA,則從內(nèi)存中獲取與所述當(dāng)前VA對(duì)應(yīng)的物理地址PA。
[0023]在第二個(gè)方面的第一種可能的實(shí)現(xiàn)方式中,旁路轉(zhuǎn)換緩沖還包括:
[0024]記錄模塊,用于在執(zhí)行所述歷史訪存操作時(shí),在所述歷史信息庫(kù)中記錄所述歷史訪存操作過(guò)程中使用的VA。
[0025]結(jié)合第二個(gè)方面的第一種可能的實(shí)現(xiàn)方式,在第二個(gè)方面的第二種可能的實(shí)現(xiàn)方式中,所述記錄模塊包括:
[0026]第一記錄單元,用于利用布隆過(guò)濾器在所述歷史信息庫(kù)中記錄所述歷史訪存操作過(guò)程中使用的VA。
[0027]結(jié)合第二個(gè)方面的第一種可能的實(shí)現(xiàn)方式,在第二個(gè)方面的第三種可能的實(shí)現(xiàn)方式中,所述記錄模塊包括:
[0028]第二記錄單元,用于利用環(huán)形緩存在所述歷史信息庫(kù)中記錄所述歷史訪存操作過(guò)程中使用的VA。
[0029]結(jié)合第二個(gè)方面、第二方面的第一種、第二種或第三種可能的實(shí)現(xiàn),在第二個(gè)方面的第四種可能的實(shí)現(xiàn)方式中,旁路轉(zhuǎn)換緩沖還包括:
[0030]判斷模塊,用于判斷所述TLB缺失異常是否需要處理;
[0031]處理模塊,用于若所述判斷模塊判斷出所述TLB缺失異常需要處理,則記錄所述當(dāng)前VA與所述PA的對(duì)應(yīng)關(guān)系;
[0032]丟棄模塊,用于若所述判斷模塊判斷出所述TLB缺失異常不需要處理,則丟棄所述PA。
[0033]結(jié)合第二個(gè)方面、第二方面的第一種、第二種、第三種或第四種可能的實(shí)現(xiàn),在第二個(gè)方面的第五種可能的實(shí)現(xiàn)方式中,所述獲取模塊具體用于:
[0034]若在所述歷史信息庫(kù)中查找到所述當(dāng)前VA,則通知存儲(chǔ)器管理單元MMU啟動(dòng)硬件頁(yè)表查詢,以從內(nèi)存中獲取與所述當(dāng)前VA對(duì)應(yīng)的PA。
[0035]第三個(gè)方面,本發(fā)明實(shí)施例提供一種處理器,包括如上第二個(gè)方面、第二個(gè)方面的第一種至第五種可能的實(shí)現(xiàn)方式中的任一種旁路轉(zhuǎn)換緩沖。
[0036]本發(fā)明實(shí)施例提供的旁路轉(zhuǎn)換緩沖缺失的處理方法及旁路轉(zhuǎn)換緩沖,當(dāng)當(dāng)前訪存操作發(fā)生TLB缺失異常時(shí),TLB查詢歷史信息庫(kù)以確定當(dāng)前訪存操作所使用的VA是否曾被使用,若在歷史信息庫(kù)中查找到該VA,則無(wú)需等到指令提取階段再處理該TLB缺失異常,而是直接從內(nèi)存中獲取與所述當(dāng)前VA對(duì)應(yīng)的物理地址PA并進(jìn)行相應(yīng)的處理,實(shí)現(xiàn)對(duì)TLB缺失異常的快速處理,從而提升處理器的性能。

【專利附圖】

【附圖說(shuō)明】
[0037]為了更清楚地說(shuō)明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡(jiǎn)單地介紹,顯而易見(jiàn)地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來(lái)講,在不付出創(chuàng)造性勞動(dòng)性的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
[0038]圖1為本發(fā)明旁路轉(zhuǎn)換緩沖缺失的處理方法實(shí)施例一的流程圖;
[0039]圖2A為本發(fā)明旁路轉(zhuǎn)換緩沖缺失的處理方法實(shí)施例二的流程圖;
[0040]圖2B為圖2A中5個(gè)索引表的不意圖;
[0041]圖3為本發(fā)明旁路轉(zhuǎn)換緩沖實(shí)施例一的結(jié)構(gòu)示意圖;
[0042]圖4為本發(fā)明旁路轉(zhuǎn)換緩沖實(shí)施例二的結(jié)構(gòu)示意圖;
[0043]圖5為本發(fā)明旁路轉(zhuǎn)換緩沖實(shí)施例三的結(jié)構(gòu)示意圖。

【具體實(shí)施方式】
[0044]為使本發(fā)明實(shí)施例的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例。基于本發(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒(méi)有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
[0045]圖1為本發(fā)明旁路轉(zhuǎn)換緩沖缺失的處理方法實(shí)施例一的流程圖。本實(shí)施例的執(zhí)行主體為T(mén)LB,適用于發(fā)生TLB缺失異常的場(chǎng)景。具體的,本實(shí)施例包括以下步驟:
[0046]101、若當(dāng)前訪存操作發(fā)生旁路轉(zhuǎn)換緩存TLB缺失異常,則在歷史信息庫(kù)中查找當(dāng)前訪存操作使用的當(dāng)前虛擬地址V A,歷史信息庫(kù)中保存有歷史訪存操作過(guò)程中使用過(guò)的V A,歷史訪存操作為發(fā)生在當(dāng)前訪存操作之前的訪存操作。
[0047]具體的,訪存操作給出的地址范圍往往是范圍很大的VA,而該數(shù)據(jù)或指令真正在內(nèi)存中對(duì)應(yīng)的地址是范圍較小的PA,這就需要做一次VA到PA的轉(zhuǎn)換。地址轉(zhuǎn)換過(guò)程中,通常以頁(yè)(page)為單位進(jìn)行地址轉(zhuǎn)換,由于TLB容量有限,TLB通常保存部分表項(xiàng),每個(gè)表項(xiàng)對(duì)應(yīng)一個(gè)頁(yè)的VA和PA的映射關(guān)系。一般的,VA包含頁(yè)內(nèi)偏移(page offset)與虛擬頁(yè)號(hào),PA包含頁(yè)內(nèi)偏移和物理頁(yè)號(hào),一個(gè)頁(yè)面內(nèi)的VA與PA的頁(yè)內(nèi)偏移是一樣的。例如,假設(shè),頁(yè)的大小為(Page Size)為4KB,則VA與PA的低12位是一樣的,均為頁(yè)內(nèi)偏移。
[0048]本步驟中,若當(dāng)前訪存操作發(fā)生TLB缺失異常,即進(jìn)行當(dāng)前訪存操作過(guò)程中,TLB根據(jù)當(dāng)前訪存操作所使用的VA,未能在自身已保存的表項(xiàng)中找到相同的VA或者該VA對(duì)應(yīng)的VPN時(shí),TLB判斷該VA是否曾被替換出。具體的,TLB從保存有歷史訪存操作過(guò)程中使用的VA的歷史信息庫(kù)中查找該VA,若查找到該VA,說(shuō)明該VA近期被使用過(guò),曾被替換出,被使用的幾率比較大;否則,若未查找到該VA,則說(shuō)明該VA未被替換出,需要在指令提交階段對(duì)該TLB確實(shí)進(jìn)行處理。
[0049]需要說(shuō)明的是,上述TLB缺失異常包括ITLB確實(shí)異常、DTLB缺失異常等,本發(fā)明并不以此為限。
[0050]102、若在歷史信息庫(kù)中查找到當(dāng)前VA,則從內(nèi)存中獲取與當(dāng)前VA對(duì)應(yīng)的物理地址PA。
[0051]若TLB從歷史信息庫(kù)中查找到當(dāng)前訪存操作所使用的當(dāng)前VA,則從內(nèi)存中獲取與該當(dāng)前VA對(duì)應(yīng)的PA。例如,TLB直接通知存儲(chǔ)器管理單元(Memory Management Unit,MMU)啟動(dòng)硬件頁(yè)表查詢(Hardware Tablewalk),以從內(nèi)存中查詢并獲取與當(dāng)前VA對(duì)應(yīng)的PA ;或者,采用軟件的方式從內(nèi)存中查詢并獲取與當(dāng)前VA對(duì)應(yīng)的PA ;或者,以其他方式查詢并獲取與當(dāng)前VA對(duì)應(yīng)的PA,本發(fā)明并不以此為限制。
[0052]發(fā)生TLB缺失異常時(shí),TLB在查找到當(dāng)前訪存操作的VA對(duì)應(yīng)的PA后,可根據(jù)預(yù)設(shè)的規(guī)則進(jìn)行相應(yīng)的處理。例如,若該TLB缺失異常為ITLB缺失異常,則執(zhí)行指令的取出;若該TLB缺失異常為DTLB缺失異常,則自動(dòng)發(fā)生中斷。另外,由于是否需要對(duì)該次TLB缺失異常進(jìn)行處理,在指令提交階段才可以判斷出,例如,如果發(fā)送TLB缺失異常的指令之前,已有指令發(fā)生了跳轉(zhuǎn)預(yù)測(cè)誤差或者其他異常,此時(shí)就不需要處理該TLB缺失異常。因此,可以在指令提交階段,TLB判斷該TLB缺失異常是否需要處理,若需要處理,則記錄當(dāng)前VA與PA的對(duì)應(yīng)關(guān)系,即在本地添加新的表項(xiàng);否則,若不需要處理,則丟棄PA。
[0053]本發(fā)明實(shí)施例提供的旁路轉(zhuǎn)換緩沖缺失的處理方法,當(dāng)當(dāng)前訪存操作發(fā)生TLB缺失異常時(shí),TLB查詢歷史信息庫(kù)以確定當(dāng)前訪存操作所使用的VA是否曾被使用,若在歷史信息庫(kù)中查找到該VA,則無(wú)需等到指令提取階段再處理該TLB缺失異常,而是直接從內(nèi)存中獲取與所述當(dāng)前VA對(duì)應(yīng)的物理地址PA并進(jìn)行相應(yīng)的處理,實(shí)現(xiàn)對(duì)TLB缺失異常的快速處理,從而提升處理器的性能。
[0054]進(jìn)一步的,上述實(shí)施例一中,若當(dāng)前訪存操作發(fā)生旁路轉(zhuǎn)換緩存TLB缺失異常,則在歷史信息庫(kù)中查找當(dāng)前訪存操作使用的當(dāng)前虛擬地址VA之前,包括:執(zhí)行歷史訪存操作時(shí),在歷史信息庫(kù)中記錄歷史訪存操作過(guò)程中使用的VA。
[0055]具體的,每次進(jìn)行訪存操作時(shí),TLB都可以將該次訪存操作過(guò)程中所使用的VA記錄到歷史信息庫(kù)中,例如,可利用布隆過(guò)濾器、環(huán)形緩存等在歷史信息庫(kù)中記錄歷史訪存操作過(guò)程中使用的VA,以供訪存操作過(guò)程中,若發(fā)生TLB缺失異常,則可從該歷史信息庫(kù)中查找相關(guān)信息。
[0056]圖2A為本發(fā)明旁路轉(zhuǎn)換緩沖缺失的處理方法實(shí)施例二的流程圖。本實(shí)施例利用布隆過(guò)濾器在歷史信息庫(kù)中記錄歷史訪存操作過(guò)程中使用的VA。具體的,本實(shí)施例包括以下步驟:
[0057]201、發(fā)生TLB缺失異常。
[0058]當(dāng)前訪存操作發(fā)生TLB缺失異常。例如,在流水線的指令取值階段,發(fā)生ITLB ;或者,在流水線的訪存階段,發(fā)生DTLB。
[0059]202、TLB在歷史信息庫(kù)中是否查找到當(dāng)前VA。
[0060]歷史信息庫(kù)中保存有TLB利用布隆過(guò)濾器(Bloom Filter)記錄的歷史訪存操作過(guò)程中使用過(guò)的VA,以及該VA所屬的頁(yè)包含的所有表項(xiàng)或部分表項(xiàng)構(gòu)成的VA使用表。具體的,未發(fā)生TLB缺失異常時(shí),TLB根據(jù)訪存操作所使用的VA對(duì)應(yīng)的VPN去查找該VA使用表,若在VA使用表中找到該VA對(duì)應(yīng)的VPN,則繼續(xù)正常流程,如在TLB自身存儲(chǔ)的表項(xiàng)中查找并獲取與該VA對(duì)應(yīng)的PA ;若未找到,則在該VA使用表中標(biāo)識(shí)該VA為曾被使用過(guò),即曾被替換出。下面,以VA共49位、Page Size為4KB為例詳細(xì)說(shuō)明Bloom Filter如何記錄歷史訪存操作過(guò)程中使用過(guò)的VA。
[0061]假設(shè)VA共49位,Page Size為4KB,頁(yè)內(nèi)偏移的最大偏移量就是4KB,即212,因此,可以用12個(gè)比特位來(lái)記錄頁(yè)內(nèi)偏移,則VPN為37位,即VA[48:12]。建立兩個(gè)位寬為I比特、深度為256比特的表和三個(gè)位寬I比特、深度為256比特的表,則5個(gè)表的索引以以下方式構(gòu)成:
[0062]INDEXO= {VA [47],VA [42],VA [37],VA [32],VA [27],VA [22],VA [ 17],VA [ 12]};
[0063]INDEX1={VA[46], VA[41], VA[36], VA[31], VA[26], VA[21], VA[16], VA[11]};
[0064]INDEX2= {VA [45],VA [40],VA [35],VA [30],VA [25],VA [20],VA [ 15]};
[0065]INDEX3= {VA [44],VA [39],VA [34],VA [29],VA [24],VA [ 19],VA [ 14]};
[0066]INDEX4= {VA [43],VA [38],VA [33],VA [28],VA [23],VA [ 18],VA [ 13]}。
[0067]具體的,可參見(jiàn)圖2B,圖2B為圖2A中5個(gè)索引表的示意圖。
[0068]未發(fā)生TLB缺失異常時(shí),TLB根據(jù)訪存操作所使用的VA對(duì)應(yīng)的VPN的相應(yīng)的位去索引該5個(gè)表,將索引到的5個(gè)表中的對(duì)應(yīng)位置標(biāo)識(shí)為I (如圖中箭頭所示),后續(xù)再使用其他VA或同樣的VA時(shí),繼續(xù)根據(jù)所使用的VA對(duì)應(yīng)的VPN的相應(yīng)的位去索引該5個(gè)表。
[0069]當(dāng)發(fā)送TLB缺失異常時(shí),用發(fā)生TLB缺失異常時(shí)采用的VA的VPN的相應(yīng)位去索引這5個(gè)表,若查到的每個(gè)表的相應(yīng)位置均為1,則表明該VA可能曾被使用過(guò),即曾被替換出,執(zhí)行步驟203 ;否則,若其中任意一個(gè)表的相應(yīng)位置未被標(biāo)識(shí)為1,則說(shuō)明該VA未被使用過(guò),歷史信息庫(kù)中無(wú)該VA的相關(guān)信息,執(zhí)行步驟207。
[0070]203、TLB通知MMU啟動(dòng)Hardware Tablewalk以獲取與當(dāng)前VA對(duì)應(yīng)的PA。
[0071]可選的,TLB也可通過(guò)其他方式獲取與當(dāng)前VA對(duì)應(yīng)的PA。
[0072]204、判斷TLB缺失異常是否需要處理。
[0073]具體的,在指令提交階段,TLB判斷該TLB缺失異常是否需要處理,若需要處理,則將VA與PA的對(duì)應(yīng)關(guān)系存儲(chǔ)到TLB自身中,即執(zhí)行步驟206 ;否則,若不需要處理,則丟棄獲取到的PA,即執(zhí)行步驟205。
[0074]205、丟棄獲取到的PA。
[0075]206、記錄當(dāng)前VA與PA的對(duì)應(yīng)關(guān)系。
[0076]207、判斷TLB缺失異常是否需要處理。
[0077]對(duì)于在歷史信息庫(kù)中查找不到的VA,則與現(xiàn)有技術(shù)一樣,TLB在指令提交階段判斷該TLB缺失異常是否需要處理。若需要,則在內(nèi)存中查找與該VA對(duì)應(yīng)的PA,即執(zhí)行步驟208 ;否則,若不需要處理,則不對(duì)該TLB缺失異常進(jìn)行處理,即執(zhí)行步驟209。
[0078]208、TLB通知MMU啟動(dòng)Hardware Tablewalk以獲取與當(dāng)前VA對(duì)應(yīng)的PA。
[0079]在獲取到與當(dāng)前VA對(duì)應(yīng)的PA后,執(zhí)行步驟206,將VA與PA的對(duì)應(yīng)關(guān)系存儲(chǔ)到TLB自身中。
[0080]209、不對(duì)該TLB缺失異常進(jìn)行處理。
[0081]需要說(shuō)明的是,如圖中虛線所示,上述步驟201?203均發(fā)生在指令取值階段或訪存階段,步驟204?209發(fā)生在指令提取階段,即寫(xiě)回階段。
[0082]另外,還需要說(shuō)明的是,由于利用布隆過(guò)濾器在歷史信息庫(kù)中記錄歷史訪存操作過(guò)程中使用的VA的過(guò)程中,犧牲了正確率換取時(shí)間和空間,為了保證TLB確實(shí)異常處理的精確性,若構(gòu)建出的某個(gè)索引表的所有位,或者超過(guò)預(yù)設(shè)閥門(mén)的位均被標(biāo)識(shí)為1,此時(shí)可考慮將所有的索引表清零或重建索引表。
[0083]可選的,TLB也可利用環(huán)形緩存等在歷史信息庫(kù)中記錄歷史訪存操作過(guò)程中使用的VA,以供訪存操作過(guò)程中,若發(fā)生TLB缺失異常,則可從該歷史信息庫(kù)中查找相關(guān)信息。
[0084]具體的,可在TLB旁邊設(shè)置一個(gè)容量為10項(xiàng)的環(huán)形Buffer。未發(fā)生TLB缺失異常時(shí),將每次使用的VA都存儲(chǔ)在這個(gè)環(huán)形Buffer中,當(dāng)Buffer填滿后,新填入的VA就覆蓋最早填入的VA,從而實(shí)現(xiàn)對(duì)最近10次訪存操作中使用的VA的記錄。
[0085]當(dāng)發(fā)生一次TLB缺失異常時(shí)首先在環(huán)形Buffer中查找該VA,若找到,則無(wú)需等到指令提取階段再處理該TLB缺失異常,而是直接從內(nèi)存中獲取與當(dāng)前VA對(duì)應(yīng)的物理地址PA并進(jìn)行相應(yīng)的處理;否則,如同現(xiàn)有技術(shù)中,TLB在指令提交階段判斷該TLB缺失異常是否需要處理。
[0086]圖3為本發(fā)明旁路轉(zhuǎn)換緩沖實(shí)施例一的結(jié)構(gòu)示意圖。本實(shí)施例提供的旁路轉(zhuǎn)換緩沖是與本發(fā)明圖1實(shí)施例對(duì)應(yīng)的裝置實(shí)施例,具體實(shí)現(xiàn)過(guò)程在此不再贅述。具體的,本實(shí)施例提供的旁路轉(zhuǎn)換緩沖100具體包括:
[0087]查找模塊11,用于若當(dāng)前訪存操作發(fā)生旁路轉(zhuǎn)換緩存TLB缺失異常,則在歷史信息庫(kù)中查找當(dāng)前訪存操作使用的當(dāng)前虛擬地址VA,歷史信息庫(kù)中保存有歷史訪存操作過(guò)程中使用過(guò)的VA,歷史訪存操作為發(fā)生在當(dāng)前訪存操作之前的訪存操作;
[0088]獲取模塊12,用于若查找模塊在歷史信息庫(kù)中查找到當(dāng)前VA,則從內(nèi)存中獲取與當(dāng)前VA對(duì)應(yīng)的物理地址PA。
[0089]本發(fā)明實(shí)施例提供的旁路轉(zhuǎn)換緩沖,當(dāng)當(dāng)前訪存操作發(fā)生TLB缺失異常時(shí),TLB查詢歷史信息庫(kù)以確定當(dāng)前訪存操作所使用的VA是否曾被使用,若在歷史信息庫(kù)中查找到該VA,則無(wú)需等到指令提取階段再處理該TLB缺失異常,而是直接從內(nèi)存中獲取與當(dāng)前VA對(duì)應(yīng)的物理地址PA并進(jìn)行相應(yīng)的處理,實(shí)現(xiàn)對(duì)TLB缺失異常的快速處理,從而提升處理器的性能。
[0090]圖4為本發(fā)明旁路轉(zhuǎn)換緩沖實(shí)施例二的結(jié)構(gòu)示意圖。如圖4所示,本實(shí)施例的旁路轉(zhuǎn)換緩沖200在圖3裝置結(jié)構(gòu)的基礎(chǔ)上,進(jìn)一步的,還包括:
[0091]記錄模塊13,用于在執(zhí)行歷史訪存操作時(shí),在歷史信息庫(kù)中記錄歷史訪存操作過(guò)程中使用的VA。
[0092]再請(qǐng)參照?qǐng)D4,進(jìn)一步的,記錄模塊13包括:
[0093]第一記錄單元131,用于利用布隆過(guò)濾器在歷史信息庫(kù)中記錄歷史訪存操作過(guò)程中使用的VA。
[0094]第二記錄單元132,用于利用環(huán)形緩存在歷史信息庫(kù)中記錄歷史訪存操作過(guò)程中使用的VA。
[0095]再請(qǐng)參照?qǐng)D4,進(jìn)一步的,旁路轉(zhuǎn)換緩沖200還包括:
[0096]判斷模塊14,用于判斷TLB缺失異常是否需要處理;
[0097]處理模塊15,用于若判斷模塊判斷出TLB缺失異常需要處理,則記錄當(dāng)前VA與PA的對(duì)應(yīng)關(guān)系;
[0098]丟棄模塊16,用于若判斷模塊判斷出TLB缺失異常不需要處理,則丟棄PA。
[0099]進(jìn)一步的,獲取模塊12具體用于若在歷史信息庫(kù)中查找到當(dāng)前VA,則通知存儲(chǔ)器管理單元MMU啟動(dòng)硬件頁(yè)表查詢,以從內(nèi)存中獲取與當(dāng)前VA對(duì)應(yīng)的PA。
[0100]圖5為本發(fā)明旁路轉(zhuǎn)換緩沖實(shí)施例三的結(jié)構(gòu)示意圖。如圖5所示,本實(shí)施例提供的旁路轉(zhuǎn)換緩沖300包括處理器31和存儲(chǔ)器32。旁路轉(zhuǎn)換緩沖300還可以包括發(fā)射器33、接收器34。發(fā)射器33和接收器34可以和處理器31相連。其中,存儲(chǔ)器32存儲(chǔ)執(zhí)行指令,當(dāng)旁路轉(zhuǎn)換緩沖300運(yùn)行時(shí),處理器31與存儲(chǔ)器32之間通信,處理器31調(diào)用存儲(chǔ)器32中的執(zhí)行指令,用于執(zhí)行圖1所示方法實(shí)施例,其實(shí)現(xiàn)原理和技術(shù)效果類似,此處不再贅述。
[0101]另外,基于上述方法和裝置的實(shí)施例,本發(fā)明還提供一種處理器,其包括如圖3、圖4或圖5所示的任一種旁路轉(zhuǎn)換緩沖,具體的,旁路轉(zhuǎn)換緩沖的工作原理及性能,請(qǐng)參見(jiàn)上述有關(guān)旁路轉(zhuǎn)換緩沖缺失的處理方法的說(shuō)明,此處不再贅述。
[0102]在本申請(qǐng)所提供的幾個(gè)實(shí)施例中,應(yīng)該理解到,所揭露的系統(tǒng),裝置和方法,可以通過(guò)其它的方式實(shí)現(xiàn)。例如,以上所描述的裝置實(shí)施例僅僅是示意性的,例如,所述單元的劃分,僅僅為一種邏輯功能劃分,實(shí)際實(shí)現(xiàn)時(shí)可以有另外的劃分方式,例如多個(gè)單元或組件可以結(jié)合或者可以集成到另一個(gè)系統(tǒng),或一些特征可以忽略,或不執(zhí)行。另一點(diǎn),所顯示或討論的相互之間的耦合或直接耦合或通信連接可以是通過(guò)一些接口,裝置或單元的間接耦合或通信連接,可以是電性,機(jī)械或其它的形式。
[0103]所述作為分離部件說(shuō)明的單元可以是或者也可以不是物理上分開(kāi)的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個(gè)地方,或者也可以分布到多個(gè)網(wǎng)絡(luò)單元上??梢愿鶕?jù)實(shí)際的需要選擇其中的部分或者全部單元來(lái)實(shí)現(xiàn)本實(shí)施例方案的目的。
[0104]本領(lǐng)域普通技術(shù)人員可以理解:實(shí)現(xiàn)上述各方法實(shí)施例的全部或部分步驟可以通過(guò)程序指令相關(guān)的硬件來(lái)完成。前述的程序可以存儲(chǔ)于一計(jì)算機(jī)可讀取存儲(chǔ)介質(zhì)中。該程序在執(zhí)行時(shí),執(zhí)行包括上述各方法實(shí)施例的步驟;而前述的存儲(chǔ)介質(zhì)包括:R0M、RAM、磁碟或者光盤(pán)等各種可以存儲(chǔ)程序代碼的介質(zhì)。
[0105]最后應(yīng)說(shuō)明的是:以上各實(shí)施例僅用以說(shuō)明本發(fā)明的技術(shù)方案,而非對(duì)其限制;盡管參照前述各實(shí)施例對(duì)本發(fā)明進(jìn)行了詳細(xì)的說(shuō)明,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解:其依然可以對(duì)前述各實(shí)施例所記載的技術(shù)方案進(jìn)行修改,或者對(duì)其中部分或者全部技術(shù)特征進(jìn)行等同替換;而這些修改或者替換,并不使相應(yīng)技術(shù)方案的本質(zhì)脫離本發(fā)明各實(shí)施例技術(shù)方案的范圍。
【權(quán)利要求】
1.一種旁路轉(zhuǎn)換緩沖缺失的處理方法,其特征在于,包括: 若當(dāng)前訪存操作發(fā)生旁路轉(zhuǎn)換緩存TLB缺失異常,則在歷史信息庫(kù)中查找所述當(dāng)前訪存操作使用的當(dāng)前虛擬地址VA,所述歷史信息庫(kù)中保存有歷史訪存操作過(guò)程中使用過(guò)的VA,所述歷史訪存操作為發(fā)生在所述當(dāng)前訪存操作之前的訪存操作; 若在所述歷史信息庫(kù)中查找到所述當(dāng)前VA,則從內(nèi)存中獲取與所述當(dāng)前VA對(duì)應(yīng)的物理地址PA。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述若當(dāng)前訪存操作發(fā)生旁路轉(zhuǎn)換緩存TLB缺失異常,則在歷史信息庫(kù)中查找所述當(dāng)前訪存操作使用的當(dāng)前虛擬地址VA之前,包括: 執(zhí)行所述歷史訪存操作時(shí),在所述歷史信息庫(kù)中記錄所述歷史訪存操作過(guò)程中使用的VA。
3.根據(jù)權(quán)利要求2所述的方法,其特征在于,所述在所述歷史信息庫(kù)中記錄所述歷史訪存操作過(guò)程中使用的VA,包括: 利用布隆過(guò)濾器在所述歷史信息庫(kù)中記錄所述歷史訪存操作過(guò)程中使用的VA。
4.根據(jù)權(quán)利要求2所述的方法,其特征在于,所述在所述歷史信息庫(kù)中記錄所述歷史訪存操作過(guò)程中使用的VA,包括: 利用環(huán)形緩存在所述歷史信息庫(kù)中記錄所述歷史訪存操作過(guò)程中使用的VA。
5.根據(jù)權(quán)利要求1?4任一項(xiàng)所述的方法,其特征在于,所述若在所述歷史信息庫(kù)中查找到所述當(dāng)前VA,則從內(nèi)存中獲取與所述當(dāng)前VA對(duì)應(yīng)的物理地址PA之后,包括: 判斷所述TLB缺失異常是否需要處理,若所述TLB缺失異常需要處理,則記錄所述當(dāng)前VA與所述PA的對(duì)應(yīng)關(guān)系; 否則,若所述TLB缺失異常不需要處理,則丟棄所述PA。
6.根據(jù)權(quán)利要求1?5任一項(xiàng)所述的方法,其特征在于,所述若在所述歷史信息庫(kù)中查找到所述當(dāng)前VA,則從內(nèi)存中獲取與所述當(dāng)前VA對(duì)應(yīng)的物理地址PA,包括: 若在所述歷史信息庫(kù)中查找到所述當(dāng)前VA,則通知存儲(chǔ)器管理單元MMU啟動(dòng)硬件頁(yè)表查詢,以從內(nèi)存中獲取與所述當(dāng)前VA對(duì)應(yīng)的PA。
7.一種旁路轉(zhuǎn)換緩沖,其特征在于,包括: 查找模塊,用于若當(dāng)前訪存操作發(fā)生旁路轉(zhuǎn)換緩存TLB缺失異常,則在歷史信息庫(kù)中查找所述當(dāng)前訪存操作使用的當(dāng)前虛擬地址VA,所述歷史信息庫(kù)中保存有歷史訪存操作過(guò)程中使用過(guò)的VA,所述歷史訪存操作為發(fā)生在所述當(dāng)前訪存操作之前的訪存操作; 獲取模塊,用于若所述查找模塊在所述歷史信息庫(kù)中查找到所述當(dāng)前VA,則從內(nèi)存中獲取與所述當(dāng)前VA對(duì)應(yīng)的物理地址PA。
8.根據(jù)權(quán)利要求7所述的旁路轉(zhuǎn)換緩沖,其特征在于,還包括: 記錄模塊,用于在執(zhí)行所述歷史訪存操作時(shí),在所述歷史信息庫(kù)中記錄所述歷史訪存操作過(guò)程中使用的VA。
9.根據(jù)權(quán)利要求8所述的旁路轉(zhuǎn)換緩沖,其特征在于,所述記錄模塊包括: 第一記錄單元,用于利用布隆過(guò)濾器在所述歷史信息庫(kù)中記錄所述歷史訪存操作過(guò)程中使用的VA。
10.根據(jù)權(quán)利要求8所述的旁路轉(zhuǎn)換緩沖,其特征在于,所述記錄模塊包括: 第二記錄單元,用于利用環(huán)形緩存在所述歷史信息庫(kù)中記錄所述歷史訪存操作過(guò)程中使用的VA。
11.根據(jù)權(quán)利要求7?10任一項(xiàng)所述的旁路轉(zhuǎn)換緩沖,其特征在于,還包括: 判斷模塊,用于判斷所述TLB缺失異常是否需要處理; 處理模塊,用于若所述判斷模塊判斷出所述TLB缺失異常需要處理,則記錄所述當(dāng)前VA與所述PA的對(duì)應(yīng)關(guān)系; 丟棄模塊,用于若所述判斷模塊判斷出所述TLB缺失異常不需要處理,則丟棄所述PA。
12.根據(jù)權(quán)利要求7?11任一項(xiàng)所述的旁路轉(zhuǎn)換緩沖,其特征在于,所述獲取模塊具體用于: 若在所述歷史信息庫(kù)中查找到所述當(dāng)前VA,則通知存儲(chǔ)器管理單元MMU啟動(dòng)硬件頁(yè)表查詢,以從內(nèi)存中獲取與所述當(dāng)前VA對(duì)應(yīng)的PA。
13.—種處理器,其特征在于,包括如權(quán)利要求7?12任一項(xiàng)所述的旁路轉(zhuǎn)換緩沖。
【文檔編號(hào)】G06F12/10GK104239236SQ201310239646
【公開(kāi)日】2014年12月24日 申請(qǐng)日期:2013年6月17日 優(yōu)先權(quán)日:2013年6月17日
【發(fā)明者】侯銳, 郭旭斌, 馮煜晶, 張科 申請(qǐng)人:華為技術(shù)有限公司, 中國(guó)科學(xué)院計(jì)算技術(shù)研究所
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1