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

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

文檔序號(hào):6504333閱讀:208來源:國知局
旁路轉(zhuǎn)換緩沖缺失的處理方法及旁路轉(zhuǎn)換緩沖的制作方法
【專利摘要】本發(fā)明實(shí)施例提供一種旁路轉(zhuǎn)換緩沖缺失的處理方法及旁路轉(zhuǎn)換緩沖,該方法包括:當(dāng)當(dāng)前訪存操作發(fā)生TLB缺失異常時(shí),TLB查詢歷史信息庫以確定當(dāng)前訪存操作所使用的VA是否曾被使用,若在歷史信息庫中查找到該VA,則無需等到指令提取階段再處理該TLB缺失異常,而是直接從內(nèi)存中獲取與當(dāng)前VA對(duì)應(yīng)的物理地址PA并進(jìn)行相應(yīng)的處理,實(shí)現(xiàn)對(duì)TLB缺失異常的快速處理,從而提升處理器的性能。
【專利說明】旁路轉(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ù)讀寫等訪存操作時(shí),利用TLB將虛擬地址(Virtual Address, VA)轉(zhuǎn)換為物理地址(Physical Address, PA),使用PA直接對(duì)存儲(chǔ)器進(jìn)行訪問。具體的,TLB中保存至少一個(gè)VA的虛擬頁號(hào)(Virtual PageNumber, VPN)和PA的物理頁號(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)的物理頁號(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ā)生到處理有較長的延遲,從而影響處理器的性能。


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

【專利附圖】

【附圖說明】
[0037]為了更清楚地說明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來講,在不付出創(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í)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
[0045]圖1為本發(fā)明旁路轉(zhuǎn)換緩沖缺失的處理方法實(shí)施例一的流程圖。本實(shí)施例的執(zhí)行主體為TLB,適用于發(fā)生TLB缺失異常的場景。具體的,本實(shí)施例包括以下步驟:
[0046]101、若當(dāng)前訪存操作發(fā)生旁路轉(zhuǎn)換緩存TLB缺失異常,則在歷史信息庫中查找當(dāng)前訪存操作使用的當(dāng)前虛擬地址V A,歷史信息庫中保存有歷史訪存操作過程中使用過的V A,歷史訪存操作為發(fā)生在當(dāng)前訪存操作之前的訪存操作。
[0047]具體的,訪存操作給出的地址范圍往往是范圍很大的VA,而該數(shù)據(jù)或指令真正在內(nèi)存中對(duì)應(yīng)的地址是范圍較小的PA,這就需要做一次VA到PA的轉(zhuǎn)換。地址轉(zhuǎn)換過程中,通常以頁(page)為單位進(jìn)行地址轉(zhuǎn)換,由于TLB容量有限,TLB通常保存部分表項(xiàng),每個(gè)表項(xiàng)對(duì)應(yīng)一個(gè)頁的VA和PA的映射關(guān)系。一般的,VA包含頁內(nèi)偏移(page offset)與虛擬頁號(hào),PA包含頁內(nèi)偏移和物理頁號(hào),一個(gè)頁面內(nèi)的VA與PA的頁內(nèi)偏移是一樣的。例如,假設(shè),頁的大小為(Page Size)為4KB,則VA與PA的低12位是一樣的,均為頁內(nèi)偏移。
[0048]本步驟中,若當(dāng)前訪存操作發(fā)生TLB缺失異常,即進(jìn)行當(dāng)前訪存操作過程中,TLB根據(jù)當(dāng)前訪存操作所使用的VA,未能在自身已保存的表項(xiàng)中找到相同的VA或者該VA對(duì)應(yīng)的VPN時(shí),TLB判斷該VA是否曾被替換出。具體的,TLB從保存有歷史訪存操作過程中使用的VA的歷史信息庫中查找該VA,若查找到該VA,說明該VA近期被使用過,曾被替換出,被使用的幾率比較大;否則,若未查找到該VA,則說明該VA未被替換出,需要在指令提交階段對(duì)該TLB確實(shí)進(jìn)行處理。
[0049]需要說明的是,上述TLB缺失異常包括ITLB確實(shí)異常、DTLB缺失異常等,本發(fā)明并不以此為限。
[0050]102、若在歷史信息庫中查找到當(dāng)前VA,則從內(nèi)存中獲取與當(dāng)前VA對(duì)應(yīng)的物理地址PA。
[0051]若TLB從歷史信息庫中查找到當(dāng)前訪存操作所使用的當(dāng)前VA,則從內(nèi)存中獲取與該當(dāng)前VA對(duì)應(yīng)的PA。例如,TLB直接通知存儲(chǔ)器管理單元(Memory Management Unit,MMU)啟動(dòng)硬件頁表查詢(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ù)測誤差或者其他異常,此時(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查詢歷史信息庫以確定當(dāng)前訪存操作所使用的VA是否曾被使用,若在歷史信息庫中查找到該VA,則無需等到指令提取階段再處理該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缺失異常,則在歷史信息庫中查找當(dāng)前訪存操作使用的當(dāng)前虛擬地址VA之前,包括:執(zhí)行歷史訪存操作時(shí),在歷史信息庫中記錄歷史訪存操作過程中使用的VA。
[0055]具體的,每次進(jìn)行訪存操作時(shí),TLB都可以將該次訪存操作過程中所使用的VA記錄到歷史信息庫中,例如,可利用布隆過濾器、環(huán)形緩存等在歷史信息庫中記錄歷史訪存操作過程中使用的VA,以供訪存操作過程中,若發(fā)生TLB缺失異常,則可從該歷史信息庫中查找相關(guān)信息。
[0056]圖2A為本發(fā)明旁路轉(zhuǎn)換緩沖缺失的處理方法實(shí)施例二的流程圖。本實(shí)施例利用布隆過濾器在歷史信息庫中記錄歷史訪存操作過程中使用的VA。具體的,本實(shí)施例包括以下步驟:
[0057]201、發(fā)生TLB缺失異常。
[0058]當(dāng)前訪存操作發(fā)生TLB缺失異常。例如,在流水線的指令取值階段,發(fā)生ITLB ;或者,在流水線的訪存階段,發(fā)生DTLB。
[0059]202、TLB在歷史信息庫中是否查找到當(dāng)前VA。
[0060]歷史信息庫中保存有TLB利用布隆過濾器(Bloom Filter)記錄的歷史訪存操作過程中使用過的VA,以及該VA所屬的頁包含的所有表項(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為曾被使用過,即曾被替換出。下面,以VA共49位、Page Size為4KB為例詳細(xì)說明Bloom Filter如何記錄歷史訪存操作過程中使用過的VA。
[0061]假設(shè)VA共49位,Page Size為4KB,頁內(nèi)偏移的最大偏移量就是4KB,即212,因此,可以用12個(gè)比特位來記錄頁內(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]具體的,可參見圖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可能曾被使用過,即曾被替換出,執(zhí)行步驟203 ;否則,若其中任意一個(gè)表的相應(yīng)位置未被標(biāo)識(shí)為1,則說明該VA未被使用過,歷史信息庫中無該VA的相關(guān)信息,執(zhí)行步驟207。
[0070]203、TLB通知MMU啟動(dòng)Hardware Tablewalk以獲取與當(dāng)前VA對(duì)應(yīng)的PA。
[0071]可選的,TLB也可通過其他方式獲取與當(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ì)于在歷史信息庫中查找不到的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]需要說明的是,如圖中虛線所示,上述步驟201?203均發(fā)生在指令取值階段或訪存階段,步驟204?209發(fā)生在指令提取階段,即寫回階段。
[0082]另外,還需要說明的是,由于利用布隆過濾器在歷史信息庫中記錄歷史訪存操作過程中使用的VA的過程中,犧牲了正確率換取時(shí)間和空間,為了保證TLB確實(shí)異常處理的精確性,若構(gòu)建出的某個(gè)索引表的所有位,或者超過預(yù)設(shè)閥門的位均被標(biāo)識(shí)為1,此時(shí)可考慮將所有的索引表清零或重建索引表。
[0083]可選的,TLB也可利用環(huán)形緩存等在歷史信息庫中記錄歷史訪存操作過程中使用的VA,以供訪存操作過程中,若發(fā)生TLB缺失異常,則可從該歷史信息庫中查找相關(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,若找到,則無需等到指令提取階段再處理該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)過程在此不再贅述。具體的,本實(shí)施例提供的旁路轉(zhuǎn)換緩沖100具體包括:
[0087]查找模塊11,用于若當(dāng)前訪存操作發(fā)生旁路轉(zhuǎn)換緩存TLB缺失異常,則在歷史信息庫中查找當(dāng)前訪存操作使用的當(dāng)前虛擬地址VA,歷史信息庫中保存有歷史訪存操作過程中使用過的VA,歷史訪存操作為發(fā)生在當(dāng)前訪存操作之前的訪存操作;
[0088]獲取模塊12,用于若查找模塊在歷史信息庫中查找到當(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查詢歷史信息庫以確定當(dāng)前訪存操作所使用的VA是否曾被使用,若在歷史信息庫中查找到該VA,則無需等到指令提取階段再處理該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í),在歷史信息庫中記錄歷史訪存操作過程中使用的VA。
[0092]再請參照圖4,進(jìn)一步的,記錄模塊13包括:
[0093]第一記錄單元131,用于利用布隆過濾器在歷史信息庫中記錄歷史訪存操作過程中使用的VA。
[0094]第二記錄單元132,用于利用環(huán)形緩存在歷史信息庫中記錄歷史訪存操作過程中使用的VA。
[0095]再請參照圖4,進(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具體用于若在歷史信息庫中查找到當(dāng)前VA,則通知存儲(chǔ)器管理單元MMU啟動(dòng)硬件頁表查詢,以從內(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)換緩沖的工作原理及性能,請參見上述有關(guān)旁路轉(zhuǎn)換緩沖缺失的處理方法的說明,此處不再贅述。
[0102]在本申請所提供的幾個(gè)實(shí)施例中,應(yīng)該理解到,所揭露的系統(tǒng),裝置和方法,可以通過其它的方式實(shí)現(xiàn)。例如,以上所描述的裝置實(shí)施例僅僅是示意性的,例如,所述單元的劃分,僅僅為一種邏輯功能劃分,實(shí)際實(shí)現(xiàn)時(shí)可以有另外的劃分方式,例如多個(gè)單元或組件可以結(jié)合或者可以集成到另一個(gè)系統(tǒng),或一些特征可以忽略,或不執(zhí)行。另一點(diǎn),所顯示或討論的相互之間的耦合或直接耦合或通信連接可以是通過一些接口,裝置或單元的間接耦合或通信連接,可以是電性,機(jī)械或其它的形式。
[0103]所述作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個(gè)地方,或者也可以分布到多個(gè)網(wǎng)絡(luò)單元上??梢愿鶕?jù)實(shí)際的需要選擇其中的部分或者全部單元來實(shí)現(xiàn)本實(shí)施例方案的目的。
[0104]本領(lǐng)域普通技術(shù)人員可以理解:實(shí)現(xiàn)上述各方法實(shí)施例的全部或部分步驟可以通過程序指令相關(guān)的硬件來完成。前述的程序可以存儲(chǔ)于一計(jì)算機(jī)可讀取存儲(chǔ)介質(zhì)中。該程序在執(zhí)行時(shí),執(zhí)行包括上述各方法實(shí)施例的步驟;而前述的存儲(chǔ)介質(zhì)包括:R0M、RAM、磁碟或者光盤等各種可以存儲(chǔ)程序代碼的介質(zhì)。
[0105]最后應(yīng)說明的是:以上各實(shí)施例僅用以說明本發(fā)明的技術(shù)方案,而非對(duì)其限制;盡管參照前述各實(shí)施例對(duì)本發(fā)明進(jìn)行了詳細(xì)的說明,本領(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缺失異常,則在歷史信息庫中查找所述當(dāng)前訪存操作使用的當(dāng)前虛擬地址VA,所述歷史信息庫中保存有歷史訪存操作過程中使用過的VA,所述歷史訪存操作為發(fā)生在所述當(dāng)前訪存操作之前的訪存操作; 若在所述歷史信息庫中查找到所述當(dāng)前VA,則從內(nèi)存中獲取與所述當(dāng)前VA對(duì)應(yīng)的物理地址PA。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述若當(dāng)前訪存操作發(fā)生旁路轉(zhuǎn)換緩存TLB缺失異常,則在歷史信息庫中查找所述當(dāng)前訪存操作使用的當(dāng)前虛擬地址VA之前,包括: 執(zhí)行所述歷史訪存操作時(shí),在所述歷史信息庫中記錄所述歷史訪存操作過程中使用的VA。
3.根據(jù)權(quán)利要求2所述的方法,其特征在于,所述在所述歷史信息庫中記錄所述歷史訪存操作過程中使用的VA,包括: 利用布隆過濾器在所述歷史信息庫中記錄所述歷史訪存操作過程中使用的VA。
4.根據(jù)權(quán)利要求2所述的方法,其特征在于,所述在所述歷史信息庫中記錄所述歷史訪存操作過程中使用的VA,包括: 利用環(huán)形緩存在所述歷史信息庫中記錄所述歷史訪存操作過程中使用的VA。
5.根據(jù)權(quán)利要求1?4任一項(xiàng)所述的方法,其特征在于,所述若在所述歷史信息庫中查找到所述當(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)所述的方法,其特征在于,所述若在所述歷史信息庫中查找到所述當(dāng)前VA,則從內(nèi)存中獲取與所述當(dāng)前VA對(duì)應(yīng)的物理地址PA,包括: 若在所述歷史信息庫中查找到所述當(dāng)前VA,則通知存儲(chǔ)器管理單元MMU啟動(dòng)硬件頁表查詢,以從內(nèi)存中獲取與所述當(dāng)前VA對(duì)應(yīng)的PA。
7.一種旁路轉(zhuǎn)換緩沖,其特征在于,包括: 查找模塊,用于若當(dāng)前訪存操作發(fā)生旁路轉(zhuǎn)換緩存TLB缺失異常,則在歷史信息庫中查找所述當(dāng)前訪存操作使用的當(dāng)前虛擬地址VA,所述歷史信息庫中保存有歷史訪存操作過程中使用過的VA,所述歷史訪存操作為發(fā)生在所述當(dāng)前訪存操作之前的訪存操作; 獲取模塊,用于若所述查找模塊在所述歷史信息庫中查找到所述當(dāng)前VA,則從內(nèi)存中獲取與所述當(dāng)前VA對(duì)應(yīng)的物理地址PA。
8.根據(jù)權(quán)利要求7所述的旁路轉(zhuǎn)換緩沖,其特征在于,還包括: 記錄模塊,用于在執(zhí)行所述歷史訪存操作時(shí),在所述歷史信息庫中記錄所述歷史訪存操作過程中使用的VA。
9.根據(jù)權(quán)利要求8所述的旁路轉(zhuǎn)換緩沖,其特征在于,所述記錄模塊包括: 第一記錄單元,用于利用布隆過濾器在所述歷史信息庫中記錄所述歷史訪存操作過程中使用的VA。
10.根據(jù)權(quán)利要求8所述的旁路轉(zhuǎn)換緩沖,其特征在于,所述記錄模塊包括: 第二記錄單元,用于利用環(huán)形緩存在所述歷史信息庫中記錄所述歷史訪存操作過程中使用的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)換緩沖,其特征在于,所述獲取模塊具體用于: 若在所述歷史信息庫中查找到所述當(dāng)前VA,則通知存儲(chǔ)器管理單元MMU啟動(dòng)硬件頁表查詢,以從內(nèi)存中獲取與所述當(dāng)前VA對(duì)應(yīng)的PA。
13.—種處理器,其特征在于,包括如權(quán)利要求7?12任一項(xiàng)所述的旁路轉(zhuǎn)換緩沖。
【文檔編號(hào)】G06F12/10GK104239236SQ201310239646
【公開日】2014年12月24日 申請日期:2013年6月17日 優(yōu)先權(quán)日:2013年6月17日
【發(fā)明者】侯銳, 郭旭斌, 馮煜晶, 張科 申請人:華為技術(shù)有限公司, 中國科學(xué)院計(jì)算技術(shù)研究所
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1