內(nèi)存物理地址查詢方法和裝置制造方法
【專利摘要】本發(fā)明提供一種內(nèi)存物理地址查詢方法和裝置。該方法包括:將備用緩存器中存儲(chǔ)的待尋址的第二線程的頁(yè)表項(xiàng)存儲(chǔ)至預(yù)取緩存器中,備用緩存器中存儲(chǔ)旁路轉(zhuǎn)換緩存器中設(shè)定時(shí)間內(nèi)未被查詢的頁(yè)表項(xiàng);接收第二線程發(fā)送的攜帶虛擬地址的內(nèi)存尋址請(qǐng)求消息;根據(jù)虛擬地址在旁路轉(zhuǎn)換緩存器和預(yù)取緩存器中查詢對(duì)應(yīng)的物理地址。本發(fā)明提供的內(nèi)存物理地址查詢方法和裝置,根據(jù)待尋址第二線程的虛擬地址在旁路轉(zhuǎn)換緩存器和預(yù)取緩存器中同時(shí)進(jìn)行查詢,且預(yù)取緩存器中存儲(chǔ)有旁路轉(zhuǎn)換緩存器中設(shè)定時(shí)間內(nèi)未被查詢的第二線程的頁(yè)表項(xiàng),從而提高對(duì)虛擬地址對(duì)應(yīng)的物理地址的查詢命中幾率,縮短尋址時(shí)間。
【專利說(shuō)明】?jī)?nèi)存物理地址查詢方法和裝置
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及信息【技術(shù)領(lǐng)域】,尤其涉及一種內(nèi)存物理地址查詢方法和裝置。
【背景技術(shù)】
[0002]目前,處理器大多采用虛擬地址(Virtual Address,簡(jiǎn)稱VA)來(lái)進(jìn)行內(nèi)存尋址,使用虛擬地址技術(shù)可以創(chuàng)建比實(shí)際物理地址(Physical Address,簡(jiǎn)稱PA)大得多的尋址空間。采用虛擬存儲(chǔ)器的處理器大多采用一種分頁(yè)(Paging)機(jī)制,虛擬地址空間以頁(yè)(Page)為單位進(jìn)行劃分,相應(yīng)的,物理地址空間也以頁(yè)(Page)為單位進(jìn)行劃分。在采用虛擬地址進(jìn)行內(nèi)存尋址的過(guò)程中,處理器中的內(nèi)存管理單元(Memory Management Unit,簡(jiǎn)稱MMU)需要將接收到的虛擬地址轉(zhuǎn)換為物理地址。目前處理器大多采用旁路轉(zhuǎn)換緩存器來(lái)緩存包含有處理器最近訪問(wèn)的內(nèi)存的虛擬地址和物理地址之間的映射關(guān)系的頁(yè)表緩存(Translat1nLookaside Buffer,簡(jiǎn)稱TLB),TLB中緩存的數(shù)據(jù)和內(nèi)存頁(yè)表區(qū)存儲(chǔ)的數(shù)據(jù)是一致的,在內(nèi)存頁(yè)表區(qū)中,每一條包含虛擬地址和物理地址映射關(guān)系的記錄稱為一個(gè)頁(yè)表項(xiàng)(PageTable Entry,簡(jiǎn)稱PTE),同樣的,在TLB中也緩存了部分甚至全部的頁(yè)表項(xiàng)PTE。
[0003]在采用虛擬地址進(jìn)行內(nèi)存尋址時(shí),內(nèi)存管理單元MMU接收到應(yīng)用程序發(fā)來(lái)的虛擬地址后,首先在旁路轉(zhuǎn)換緩存器的TLB中進(jìn)行搜索,如果TLB中緩存有與該虛擬地址對(duì)應(yīng)的頁(yè)表項(xiàng),即TLB命中(Hi t ),則通過(guò)該頁(yè)表項(xiàng)中的物理地址到一級(jí)緩存(Le ve 11 Cache )進(jìn)行數(shù)據(jù)存取,如果LevellCache中與該物理地址對(duì)應(yīng)的數(shù)據(jù)缺失,則到二級(jí)緩存(Level2Cache)進(jìn)行數(shù)據(jù)存取,如果Level2Cache中與該物理地址對(duì)應(yīng)的數(shù)據(jù)缺失,貝U至Il內(nèi)存中進(jìn)行數(shù)據(jù)存?。蝗绻鸗LB中不包含與該虛擬地址對(duì)應(yīng)的頁(yè)表項(xiàng),即TLB未命中(Miss),則需要軟件或操作系統(tǒng)(Operating System,簡(jiǎn)稱OS)搜索與該虛擬地址對(duì)應(yīng)的物理地址,并將該虛擬地址與該物理地址的映射關(guān)系作為一個(gè)頁(yè)表項(xiàng)存入TLB中,以供內(nèi)存管理單元MMU進(jìn)行后續(xù)搜索。
[0004]現(xiàn)有技術(shù)中,在內(nèi)存管理單元MMU中設(shè)置有預(yù)取緩存器(Prefetch Buffer,簡(jiǎn)稱PB),PB中存儲(chǔ)有多個(gè)頁(yè)表項(xiàng)。在進(jìn)行內(nèi)存物理地址尋址時(shí),首先在TLB中搜索對(duì)應(yīng)的物理地址,當(dāng)TLB未命中后,繼續(xù)在PB中搜索對(duì)應(yīng)的物理地址,若PB中存在對(duì)應(yīng)的物理地址,則通過(guò)該物理地址進(jìn)行數(shù)據(jù)存取并將命中的頁(yè)表項(xiàng)存儲(chǔ)至TLB中,若PB中不存在對(duì)應(yīng)的物理地址,則將內(nèi)存中的多個(gè)頁(yè)表項(xiàng)存儲(chǔ)至PB中,并覆蓋PB中的當(dāng)前存儲(chǔ)數(shù)據(jù)。
[0005]然而,對(duì)于多線程處理器,多個(gè)硬件線程共享一個(gè)TLB,由于TLB的容量有限,當(dāng)硬件線程數(shù)目較多時(shí),TLB中頁(yè)表項(xiàng)的數(shù)目無(wú)法滿足多線程需求,從而導(dǎo)致每個(gè)硬件線程在采用虛擬地址進(jìn)行內(nèi)存尋址時(shí),TLB未命中率很高,且TLB未命中后才去內(nèi)存獲取并緩存與該虛擬地址對(duì)應(yīng)的頁(yè)表項(xiàng),因此尋址時(shí)間較長(zhǎng)。
【發(fā)明內(nèi)容】
[0006]本發(fā)明提供一種內(nèi)存物理地址查詢方法和裝置,用以解決現(xiàn)有技術(shù)中存在的尋址時(shí)間較長(zhǎng)的問(wèn)題。
[0007]第一方面,本發(fā)明提供了一種內(nèi)存物理地址查詢方法,包括:
[0008]根據(jù)預(yù)設(shè)的線程切換策略,確定未來(lái)設(shè)定時(shí)間內(nèi)內(nèi)存尋址操作由第一線程變更為第二線程;
[0009]將備用緩存器中存儲(chǔ)的所述第二線程的頁(yè)表項(xiàng)存儲(chǔ)至預(yù)取緩存器中,所述備用緩存器中存儲(chǔ)旁路轉(zhuǎn)換緩存器存儲(chǔ)的頁(yè)表緩存TLB中設(shè)定時(shí)間內(nèi)未被查詢的頁(yè)表項(xiàng);
[0010]接收所述第二線程發(fā)送的內(nèi)存尋址請(qǐng)求消息,所述內(nèi)存尋址請(qǐng)求消息中攜帶虛擬地址;
[0011]根據(jù)所述虛擬地址在所述旁路轉(zhuǎn)換緩存器和所述預(yù)取緩存器存儲(chǔ)的頁(yè)表項(xiàng)中查詢所述虛擬地址對(duì)應(yīng)的物理地址。
[0012]在第一方面的第一種可能的實(shí)現(xiàn)方式中,所述根據(jù)所述虛擬地址在所述旁路轉(zhuǎn)換緩存器和所述預(yù)取緩存器存儲(chǔ)的頁(yè)表項(xiàng)中查詢所述虛擬地址對(duì)應(yīng)的物理地址,包括:
[0013]若所述旁路轉(zhuǎn)換緩存器中存在與所述虛擬地址對(duì)應(yīng)的第一物理地址,則通過(guò)所述第一物理地址訪問(wèn)內(nèi)存進(jìn)行數(shù)據(jù)存??;或者,
[0014]若所述旁路轉(zhuǎn)換緩存器中不存在與所述虛擬地址對(duì)應(yīng)的第一物理地址,且所述預(yù)取緩存器中存在與所述虛擬地址對(duì)應(yīng)的第二物理地址,則通過(guò)所述第二物理地址訪問(wèn)所述內(nèi)存進(jìn)行數(shù)據(jù)存取。
[0015]根據(jù)第一方面的第一種可能的實(shí)現(xiàn)方式,在第二種可能的實(shí)現(xiàn)方式中,所述方法還包括:
[0016]若所述旁路轉(zhuǎn)換緩存器中不存在與所述虛擬地址對(duì)應(yīng)的第一物理地址,且所述預(yù)取緩存器中不存在與所述虛擬地址對(duì)應(yīng)的第二物理地址,則在所述內(nèi)存中查找與所述虛擬地址對(duì)應(yīng)的第三物理地址。
[0017]根據(jù)第一方面的第一種可能的實(shí)現(xiàn)方式和第二種可能的實(shí)現(xiàn)方式,在第三種可能的實(shí)現(xiàn)方式中,若所述旁路轉(zhuǎn)換緩存器中不存在與所述虛擬地址對(duì)應(yīng)的第一物理地址,且所述預(yù)取緩存器中存在與所述虛擬地址對(duì)應(yīng)的第二物理地址,則所述方法還包括:
[0018]將所述預(yù)取緩存器中存儲(chǔ)的所述虛擬地址和所述第二物理地址對(duì)應(yīng)的頁(yè)表項(xiàng)存儲(chǔ)至所述旁路轉(zhuǎn)換緩存器中,并刪除所述預(yù)取緩存器中存儲(chǔ)的所述虛擬地址和所述第二物理地址對(duì)應(yīng)的頁(yè)表項(xiàng)。
[0019]根據(jù)第一方面的第二種可能的實(shí)現(xiàn)方式,在第四種可能的實(shí)現(xiàn)方式中,所述方法還包括:
[0020]將在內(nèi)存中查找到的與所述虛擬地址和所述第三物理地址對(duì)應(yīng)的頁(yè)表項(xiàng)存儲(chǔ)至所述旁路轉(zhuǎn)換緩存器中。
[0021]根據(jù)第一方面的第一種可能的實(shí)現(xiàn)方式、第二種可能的實(shí)現(xiàn)方式、第三種可能的實(shí)現(xiàn)方式和第四種可能的實(shí)現(xiàn)方式,在第五種可能的實(shí)現(xiàn)方式中,所述將備用緩存器中存儲(chǔ)的所述第二線程的頁(yè)表項(xiàng)存儲(chǔ)至預(yù)取緩存器中之前,所述方法還包括:
[0022]若所述旁路轉(zhuǎn)換緩存器中存儲(chǔ)的頁(yè)表項(xiàng)的數(shù)目超過(guò)自身的存儲(chǔ)容量,則將所述旁路轉(zhuǎn)換緩存器中所述設(shè)定時(shí)間內(nèi)未被查詢的頁(yè)表項(xiàng)存儲(chǔ)至所述備用緩存器中,并刪除所述旁路轉(zhuǎn)換緩存器中所述設(shè)定時(shí)間內(nèi)未被查詢的頁(yè)表項(xiàng)。
[0023]根據(jù)第一方面的第五種可能的實(shí)現(xiàn)方式,在第六種可能的實(shí)現(xiàn)方式中,所述將所述旁路轉(zhuǎn)換緩存器中所述設(shè)定時(shí)間內(nèi)未被查詢的頁(yè)表項(xiàng)存儲(chǔ)至所述備用緩存器中之后,所述方法還包括:
[0024]若所述備用緩存器中存儲(chǔ)的頁(yè)表項(xiàng)的數(shù)目超過(guò)自身的存儲(chǔ)容量,則刪除所述備用緩存器中存儲(chǔ)時(shí)間最長(zhǎng)的頁(yè)表項(xiàng)。
[0025]根據(jù)第一方面的第一種可能的實(shí)現(xiàn)方式、第二種可能的實(shí)現(xiàn)方式、第三種可能的實(shí)現(xiàn)方式、第四種可能的實(shí)現(xiàn)方式、第五種可能的實(shí)現(xiàn)方式和第六種可能的實(shí)現(xiàn)方式,在第七種可能的實(shí)現(xiàn)方式中,所述將備用緩存器中存儲(chǔ)的所述第二線程的頁(yè)表項(xiàng)存儲(chǔ)至預(yù)取緩存器中,包括:
[0026]若所述備用緩存器中存儲(chǔ)的所述第二線程的頁(yè)表項(xiàng)的數(shù)目小于或等于所述預(yù)取緩存器的存儲(chǔ)容量,則將所述備用緩存器中存儲(chǔ)的所有所述第二線程的頁(yè)表項(xiàng)存儲(chǔ)至所述預(yù)取緩存器中,并覆蓋所述預(yù)取緩存器的當(dāng)前存儲(chǔ)數(shù)據(jù);或者,
[0027]若所述備用緩存器中存儲(chǔ)的所述第二線程的頁(yè)表項(xiàng)的數(shù)目大于所述預(yù)取緩存器的存儲(chǔ)容量,則將所述備用緩存器中存儲(chǔ)的與所述預(yù)取緩存器的存儲(chǔ)容量相等數(shù)目的所述第二線程的頁(yè)表項(xiàng)存儲(chǔ)至所述預(yù)取緩存器中,并覆蓋所述預(yù)取緩存器的當(dāng)前存儲(chǔ)數(shù)據(jù)。
[0028]根據(jù)第一方面的第七種可能的實(shí)現(xiàn)方式,在第八種可能的實(shí)現(xiàn)方式中,若所述備用緩存器中存儲(chǔ)的所述第二線程的頁(yè)表項(xiàng)的數(shù)目大于所述預(yù)取緩存器的存儲(chǔ)容量,則所述方法還包括:
[0029]若所述旁路轉(zhuǎn)換緩存器中不存在與所述虛擬地址對(duì)應(yīng)的第一物理地址,且所述預(yù)取緩存器中存在與所述虛擬地址對(duì)應(yīng)的第二物理地址,則將所述備用緩存器中存儲(chǔ)的所述第二線程的頁(yè)表項(xiàng)中除所述預(yù)取緩存器中存儲(chǔ)的頁(yè)表項(xiàng)之外的一個(gè)頁(yè)表項(xiàng)存儲(chǔ)至所述預(yù)取緩存器中。
[0030]第二方面,本發(fā)明提供了一種內(nèi)存物理地址查詢裝置,包括:
[0031]確定模塊,用于根據(jù)預(yù)設(shè)的線程切換策略,確定未來(lái)設(shè)定時(shí)間內(nèi)內(nèi)存尋址操作由第一線程變更為第二線程;
[0032]執(zhí)行模塊,用于將備用緩存器中存儲(chǔ)的所述第二線程的頁(yè)表項(xiàng)存儲(chǔ)至預(yù)取緩存器中,所述備用緩存器中存儲(chǔ)旁路轉(zhuǎn)換緩存器存儲(chǔ)的頁(yè)表緩存TLB中設(shè)定時(shí)間內(nèi)未被查詢的頁(yè)表項(xiàng);
[0033]接收模塊,接收所述第二線程發(fā)送的內(nèi)存尋址請(qǐng)求消息,所述內(nèi)存尋址請(qǐng)求消息中攜帶虛擬地址;
[0034]查詢模塊,根據(jù)所述虛擬地址在所述旁路轉(zhuǎn)換緩存器和所述預(yù)取緩存器存儲(chǔ)的頁(yè)表項(xiàng)中查詢所述虛擬地址對(duì)應(yīng)的物理地址。
[0035]在第二方面的第一種可能的實(shí)現(xiàn)方式中,所述查詢模塊具體用于:
[0036]若所述旁路轉(zhuǎn)換緩存器中存在與所述虛擬地址對(duì)應(yīng)的第一物理地址,則通過(guò)所述第一物理地址訪問(wèn)內(nèi)存進(jìn)行數(shù)據(jù)存?。换蛘?,
[0037]若所述旁路轉(zhuǎn)換緩存器中不存在與所述虛擬地址對(duì)應(yīng)的第一物理地址,且所述預(yù)取緩存器中存在與所述虛擬地址對(duì)應(yīng)的第二物理地址,則通過(guò)所述第二物理地址訪問(wèn)所述內(nèi)存進(jìn)行數(shù)據(jù)存取。
[0038]根據(jù)第二方面的第一種可能的實(shí)現(xiàn)方式,在第二種可能的實(shí)現(xiàn)方式中,所述查詢模塊還用于:
[0039]若所述旁路轉(zhuǎn)換緩存器中不存在與所述虛擬地址對(duì)應(yīng)的第一物理地址,且所述預(yù)取緩存器中不存在與所述虛擬地址對(duì)應(yīng)的第二物理地址,則在所述內(nèi)存中查找與所述虛擬地址對(duì)應(yīng)的第三物理地址。
[0040]根據(jù)第二方面的第一種可能的實(shí)現(xiàn)方式和第二種可能的實(shí)現(xiàn)方式,在第三種可能的實(shí)現(xiàn)方式中,所述查詢模塊還用于:
[0041]若所述旁路轉(zhuǎn)換緩存器中不存在與所述虛擬地址對(duì)應(yīng)的第一物理地址,且所述預(yù)取緩存器中存在與所述虛擬地址對(duì)應(yīng)的第二物理地址,則將所述預(yù)取緩存器中存儲(chǔ)的所述虛擬地址和所述第二物理地址對(duì)應(yīng)的頁(yè)表項(xiàng)存儲(chǔ)至所述旁路轉(zhuǎn)換緩存器中,并刪除所述預(yù)取緩存器中存儲(chǔ)的所述虛擬地址和所述第二物理地址對(duì)應(yīng)的頁(yè)表項(xiàng)。
[0042]根據(jù)第二方面的第二種可能的實(shí)現(xiàn)方式,在第四種可能的實(shí)現(xiàn)方式中,所述查詢模塊還用于:
[0043]將在內(nèi)存中查找到的與所述虛擬地址和所述第三物理地址對(duì)應(yīng)的頁(yè)表項(xiàng)存儲(chǔ)至所述旁路轉(zhuǎn)換緩存器中。
[0044]根據(jù)第二方面的第一種可能的實(shí)現(xiàn)方式、第二種可能的實(shí)現(xiàn)方式、第三種可能的實(shí)現(xiàn)方式和第四種可能的實(shí)現(xiàn)方式,在第五種可能的實(shí)現(xiàn)方式中,所述執(zhí)行模塊還用于:
[0045]在所述將備用緩存器中存儲(chǔ)的所述第二線程的頁(yè)表項(xiàng)存儲(chǔ)至預(yù)取緩存器中之前,若所述旁路轉(zhuǎn)換緩存器中存儲(chǔ)的頁(yè)表項(xiàng)的數(shù)目超過(guò)自身的存儲(chǔ)容量,則將所述旁路轉(zhuǎn)換緩存器中所述設(shè)定時(shí)間內(nèi)未被查詢的頁(yè)表項(xiàng)存儲(chǔ)至所述備用緩存器中,并刪除所述旁路轉(zhuǎn)換緩存器中所述設(shè)定時(shí)間內(nèi)未被查詢的頁(yè)表項(xiàng)。
[0046]根據(jù)第一方面的第五種可能的實(shí)現(xiàn)方式,在第六種可能的實(shí)現(xiàn)方式中,所述執(zhí)行模塊還用于:
[0047]在所述將所述旁路轉(zhuǎn)換緩存器中所述設(shè)定時(shí)間內(nèi)未被查詢的頁(yè)表項(xiàng)存儲(chǔ)至所述備用緩存器中之后,若所述備用緩存器中存儲(chǔ)的頁(yè)表項(xiàng)的數(shù)目超過(guò)自身的存儲(chǔ)容量,則刪除所述備用緩存器中存儲(chǔ)時(shí)間最長(zhǎng)的頁(yè)表項(xiàng)。
[0048]根據(jù)第二方面的第一種可能的實(shí)現(xiàn)方式、第二種可能的實(shí)現(xiàn)方式、第三種可能的實(shí)現(xiàn)方式、第四種可能的實(shí)現(xiàn)方式、第五種可能的實(shí)現(xiàn)方式和第六種可能的實(shí)現(xiàn)方式,在第七種可能的實(shí)現(xiàn)方式中,所述執(zhí)行模塊具體用于:
[0049]若所述備用緩存器中存儲(chǔ)的所述第二線程的頁(yè)表項(xiàng)的數(shù)目小于或等于所述預(yù)取緩存器的存儲(chǔ)容量,則將所述備用緩存器中存儲(chǔ)的所有所述第二線程的頁(yè)表項(xiàng)存儲(chǔ)至所述預(yù)取緩存器中,并覆蓋所述預(yù)取緩存器的當(dāng)前存儲(chǔ)數(shù)據(jù);或者,
[0050]若所述備用緩存器中存儲(chǔ)的所述第二線程的頁(yè)表項(xiàng)的數(shù)目大于所述預(yù)取緩存器的存儲(chǔ)容量,則將所述備用緩存器中存儲(chǔ)的與所述預(yù)取緩存器的存儲(chǔ)容量相等數(shù)目的所述第二線程的頁(yè)表項(xiàng)存儲(chǔ)至所述預(yù)取緩存器中,并覆蓋所述預(yù)取緩存器的當(dāng)前存儲(chǔ)數(shù)據(jù)。
[0051]根據(jù)第二方面的第七種可能的實(shí)現(xiàn)方式,在第八種可能的實(shí)現(xiàn)方式中,所述執(zhí)行模塊還用于:
[0052]若所述備用緩存器中存儲(chǔ)的所述第二線程的頁(yè)表項(xiàng)的數(shù)目大于所述預(yù)取緩存器的存儲(chǔ)容量,且所述旁路轉(zhuǎn)換緩存器中不存在與所述虛擬地址對(duì)應(yīng)的第一物理地址,所述預(yù)取緩存器中存在與所述虛擬地址對(duì)應(yīng)的第二物理地址,則將所述備用緩存器中存儲(chǔ)的所述第二線程的頁(yè)表項(xiàng)中除所述預(yù)取緩存器中存儲(chǔ)的頁(yè)表項(xiàng)之外的一個(gè)頁(yè)表項(xiàng)存儲(chǔ)至所述預(yù)取緩存器中。
[0053]第三方面,本發(fā)明提供了一種內(nèi)存物理地址查詢裝置,包括:存儲(chǔ)器、旁路轉(zhuǎn)換緩存器、備用緩存器、預(yù)取緩存器和處理器;
[0054]所述存儲(chǔ)器,用于存儲(chǔ)指令;
[0055]所述旁路轉(zhuǎn)換緩存器,用于存儲(chǔ)頁(yè)表緩存TLB ;
[0056]所述備用緩存器,用于存儲(chǔ)所述旁路轉(zhuǎn)換緩存器存儲(chǔ)的所述TLB中設(shè)定時(shí)間內(nèi)未被查詢的頁(yè)表項(xiàng);
[0057]所述預(yù)取緩存器,用于存儲(chǔ)所述備用緩存器中存儲(chǔ)的對(duì)應(yīng)線程的頁(yè)表項(xiàng);
[0058]所述處理器,用于運(yùn)行所述存儲(chǔ)器中存儲(chǔ)的所述指令以執(zhí)行如第一方面所述的內(nèi)存物理地址查詢方法。
[0059]本發(fā)明提供的內(nèi)存物理地址查詢方法和裝置,根據(jù)待尋址第二線程的虛擬地址在旁路轉(zhuǎn)換緩存器和預(yù)取緩存器中同時(shí)進(jìn)行查詢,且預(yù)取緩存器中存儲(chǔ)有旁路轉(zhuǎn)換緩存器中設(shè)定時(shí)間內(nèi)未被查詢的第二線程的頁(yè)表項(xiàng),從而提高對(duì)虛擬地址對(duì)應(yīng)的物理地址的查詢命中幾率,縮短尋址時(shí)間。
【專利附圖】
【附圖說(shuō)明】
[0060]為了更清楚地說(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ù)這些附圖獲得其他的附圖。
[0061]圖1為本發(fā)明提供的內(nèi)存物理地址查詢方法一個(gè)實(shí)施例的流程示意圖;
[0062]圖2為本發(fā)明提供的內(nèi)存物理地址查詢方法又一個(gè)實(shí)施例的流程示意圖;
[0063]圖3為旁路轉(zhuǎn)換緩存器的緩存頁(yè)表TLB中設(shè)定時(shí)間內(nèi)未被查詢的頁(yè)表項(xiàng)存儲(chǔ)至對(duì)應(yīng)線程的備用緩存器中的示意圖;
[0064]圖4為對(duì)應(yīng)線程的備用緩存器中的頁(yè)表項(xiàng)存儲(chǔ)至預(yù)取緩存器PB中的示意圖;
[0065]圖5為根據(jù)虛擬地址VA進(jìn)行內(nèi)存物理地址尋址的示意圖;
[0066]圖6為本發(fā)明提供的內(nèi)存物理地址查詢裝置一個(gè)實(shí)施例的結(jié)構(gòu)示意圖;
[0067]圖7為本發(fā)明提供的內(nèi)存物理地址查詢裝置又一個(gè)實(shí)施例的結(jié)構(gòu)示意圖。
【具體實(shí)施方式】
[0068]為使本發(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ù)人員在沒(méi)有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
[0069]圖1為本發(fā)明提供的內(nèi)存物理地址查詢方法一個(gè)實(shí)施例的流程示意圖。如圖1所示,以下方法實(shí)施例提供的方法可以適用于各種類(lèi)型的終端設(shè)備,例如:PC機(jī),PAD,手機(jī)等。以下各步驟的執(zhí)行主體可以為上述各種終端設(shè)備中的中央處理器(CentralProcessing Unit,簡(jiǎn)稱CPU),具體可以為CPU中的內(nèi)存管理單元MMU等。該方法具體可以包括:
[0070]S101,根據(jù)預(yù)設(shè)的線程切換策略,確定未來(lái)設(shè)定時(shí)間內(nèi)內(nèi)存尋址操作由第一線程變更為第二線程。
[0071]具體的,線程切換策略中包括了在終端設(shè)備運(yùn)行的各時(shí)間段內(nèi),采用哪些線程來(lái)執(zhí)行內(nèi)存尋址操作。本發(fā)明實(shí)施例中,第一線程即為前一時(shí)間段內(nèi)執(zhí)行內(nèi)存尋址操作的線程,第二線程為在第一線程之后執(zhí)行內(nèi)存尋址操作的線程,即待尋址線程。
[0072]S102,將備用緩存器中存儲(chǔ)的第二線程的頁(yè)表項(xiàng)存儲(chǔ)至預(yù)取緩存器中,備用緩存器中存儲(chǔ)旁路轉(zhuǎn)換緩存器存儲(chǔ)的頁(yè)表緩存TLB中設(shè)定時(shí)間內(nèi)未被查詢的頁(yè)表項(xiàng)。
[0073]具體的,根據(jù)SlOl確定的待尋址的線程,即第二線程,將備用緩存器中存儲(chǔ)的第二線程的頁(yè)表項(xiàng)存儲(chǔ)至預(yù)取緩存器PB中,且該備用緩存器中存儲(chǔ)的是旁路轉(zhuǎn)換緩存器存儲(chǔ)的頁(yè)表緩存TLB中設(shè)定時(shí)間內(nèi)未被查詢的頁(yè)表項(xiàng)??蛇x的,備用緩存器中存儲(chǔ)的頁(yè)表項(xiàng)具體可以包括:虛擬地址和物理地址的對(duì)應(yīng)關(guān)系以及對(duì)應(yīng)的各線程的標(biāo)識(shí);類(lèi)似的,旁路轉(zhuǎn)換緩存器中存儲(chǔ)的頁(yè)表項(xiàng)具體也可以包括:虛擬地址和物理地址的對(duì)應(yīng)關(guān)系以及對(duì)應(yīng)的各線程的標(biāo)識(shí);預(yù)取緩存器PB中存儲(chǔ)的頁(yè)表項(xiàng)可以包括:虛擬地址和物理地址的對(duì)應(yīng)關(guān)系以及對(duì)應(yīng)的待尋址線程的標(biāo)識(shí)。
[0074]此處需要說(shuō)明的是,備用緩存器的數(shù)量可以是一個(gè)或多個(gè),例如:每個(gè)線程可以對(duì)應(yīng)一個(gè)備用緩存器,用于存儲(chǔ)緩存旁路轉(zhuǎn)換緩存器中該線程設(shè)定時(shí)間內(nèi)未被查詢的頁(yè)表項(xiàng)。類(lèi)似的,旁路轉(zhuǎn)換緩存器和預(yù)取緩存器的數(shù)量都可以是一個(gè)或多個(gè),例如:可以每個(gè)線程對(duì)應(yīng)一個(gè)旁路轉(zhuǎn)換緩存器和一個(gè)預(yù)取緩存器。
[0075]S103,接收第二線程發(fā)送的內(nèi)存尋址請(qǐng)求消息,內(nèi)存尋址請(qǐng)求消息中攜帶虛擬地址。
[0076]具體的,接收待尋址線程,即第二線程,發(fā)送的內(nèi)存尋址請(qǐng)求消息,該內(nèi)存尋址請(qǐng)求消息中攜帶待尋址的虛擬地址I
[0077]S104,根據(jù)虛擬地址在旁路轉(zhuǎn)換緩存器和預(yù)取緩存器存儲(chǔ)的頁(yè)表項(xiàng)中查詢虛擬地址對(duì)應(yīng)的物理地址。
[0078]具體的,根據(jù)虛擬地址VA,可以同時(shí)在旁路轉(zhuǎn)換緩存器和預(yù)取緩存器PB存儲(chǔ)的頁(yè)表項(xiàng)中進(jìn)行查詢,若旁路轉(zhuǎn)換緩存器和預(yù)取緩存器PB中存在與該虛擬地址VA對(duì)應(yīng)的物理地址,則采用該物理地址進(jìn)行數(shù)據(jù)存取,若旁路轉(zhuǎn)換緩存器和預(yù)取緩存器PB中均不存在與該虛擬地址VA對(duì)應(yīng)的物理地址,則到內(nèi)存中進(jìn)行查詢,以獲得與該虛擬地址VA對(duì)應(yīng)的物理地址。
[0079]本實(shí)施例提供的內(nèi)存物理地址查詢方法,根據(jù)待尋址第二線程的虛擬地址在旁路轉(zhuǎn)換緩存器和預(yù)取緩存器中同時(shí)進(jìn)行查詢,且預(yù)取緩存器中存儲(chǔ)有旁路轉(zhuǎn)換緩存器中設(shè)定時(shí)間內(nèi)未被查詢的第二線程的頁(yè)表項(xiàng),從而提高對(duì)虛擬地址對(duì)應(yīng)的物理地址的查詢命中幾率,縮短尋址時(shí)間。
[0080]圖2為本發(fā)明提供的內(nèi)存物理地址查詢方法又一個(gè)實(shí)施例的流程示意圖。如圖2所示,以下方法實(shí)施例提供的方法可以適用于各種類(lèi)型的終端設(shè)備,例如:PC機(jī),PAD,手機(jī)等。以下各步驟的執(zhí)行主體可以為中央處理器CPU,具體可以為CPU中的內(nèi)存管理單元MMU等。該方法具體可以包括:
[0081]S201,根據(jù)預(yù)設(shè)的線程切換策略,確定未來(lái)設(shè)定時(shí)間內(nèi)內(nèi)存尋址操作由第一線程變更為第二線程。
[0082]具體的,線程切換策略中包括了在終端設(shè)備運(yùn)行的各時(shí)間段內(nèi),采用哪些線程來(lái)執(zhí)行內(nèi)存尋址操作。本發(fā)明實(shí)施例中,第一線程即為前一時(shí)間段內(nèi)執(zhí)行內(nèi)存尋址操作的線程,第二線程為在第一線程之后執(zhí)行內(nèi)存尋址操作的線程,即待尋址線程。
[0083]S202,將備用緩存器中存儲(chǔ)的第二線程的頁(yè)表項(xiàng)存儲(chǔ)至預(yù)取緩存器中,備用緩存器中存儲(chǔ)旁路轉(zhuǎn)換緩存器存儲(chǔ)的頁(yè)表緩存TLB中設(shè)定時(shí)間內(nèi)未被查詢的頁(yè)表項(xiàng)。
[0084]這里根據(jù)備用緩存器中存儲(chǔ)的第二線程的頁(yè)表項(xiàng)的數(shù)目和預(yù)取緩存器PB的存儲(chǔ)容量之間的關(guān)系,可以選擇執(zhí)行以下步驟S203或S204。
[0085]S203,若備用緩存器中存儲(chǔ)的第二線程的頁(yè)表項(xiàng)的數(shù)目小于或等于預(yù)取緩存器的存儲(chǔ)容量,則將備用緩存器中存儲(chǔ)的所有第二線程的頁(yè)表項(xiàng)存儲(chǔ)至預(yù)取緩存器中,并覆蓋預(yù)取緩存器的當(dāng)前存儲(chǔ)數(shù)據(jù)。
[0086]S204:若備用緩存器中存儲(chǔ)的第二線程的頁(yè)表項(xiàng)的數(shù)目大于預(yù)取緩存器的存儲(chǔ)容量,則將備用緩存器中存儲(chǔ)的與預(yù)取緩存器的存儲(chǔ)容量相等數(shù)目的第二線程的頁(yè)表項(xiàng)存儲(chǔ)至預(yù)取緩存器中,并覆蓋預(yù)取緩存器的當(dāng)前存儲(chǔ)數(shù)據(jù)。
[0087]具體的,根據(jù)S201確定的待尋址的線程,即第二線程,將備用緩存器中存儲(chǔ)的部分或全部第二線程的頁(yè)表項(xiàng)存儲(chǔ)至預(yù)取緩存器PB中,并刪除PB中當(dāng)前存儲(chǔ)的數(shù)據(jù)。其中,該備用緩存器中存儲(chǔ)的是旁路轉(zhuǎn)換緩存器存儲(chǔ)的頁(yè)表緩存TLB中設(shè)定時(shí)間內(nèi)未被查詢的頁(yè)表項(xiàng)。
[0088]作為一種可選的實(shí)施方式,每個(gè)線程可以對(duì)應(yīng)一個(gè)備用緩存器,且每個(gè)備用緩存器中存儲(chǔ)的頁(yè)表項(xiàng)可以是TLB中設(shè)定時(shí)間內(nèi)未被查詢的對(duì)應(yīng)線程的頁(yè)表項(xiàng)。圖3為旁路轉(zhuǎn)換緩存器的緩存頁(yè)表TLB中設(shè)定時(shí)間內(nèi)未被查詢的頁(yè)表項(xiàng)存儲(chǔ)至對(duì)應(yīng)線程的備用緩存器中的示意圖,如圖3所示,旁路轉(zhuǎn)換緩存器的緩存頁(yè)表TLB中存儲(chǔ)的頁(yè)表項(xiàng)具體可以包括:虛擬地址和物理地址的對(duì)應(yīng)關(guān)系以及對(duì)應(yīng)的各線程的標(biāo)識(shí),每個(gè)線程對(duì)應(yīng)的備用緩存器中存儲(chǔ)的頁(yè)表項(xiàng)具體可以包括:虛擬地址和物理地址的對(duì)應(yīng)關(guān)系,備用緩存器選擇單元接收TLB中存儲(chǔ)的設(shè)定時(shí)間內(nèi)未被查詢的頁(yè)表項(xiàng)以及對(duì)應(yīng)的線程標(biāo)識(shí),并根據(jù)線程標(biāo)識(shí)將該頁(yè)表項(xiàng)存儲(chǔ)至對(duì)應(yīng)線程的備用緩存器中。
[0089]圖4為對(duì)應(yīng)線程的備用緩存器中的頁(yè)表項(xiàng)存儲(chǔ)至預(yù)取緩存器PB中的示意圖,如圖4所示,備用緩存器選擇單元根據(jù)確定的待尋址的線程,將待尋址線程的備用緩存器中的部分或全部頁(yè)表項(xiàng)以及對(duì)應(yīng)的線程標(biāo)識(shí)存儲(chǔ)至預(yù)取緩存器PB中,從而使預(yù)取緩存器PB中存儲(chǔ)有待尋址線程被替換出TLB的頁(yè)表項(xiàng)。這些被替換出TLB的頁(yè)表項(xiàng),大都不是因?yàn)椴恍枰惶鎿Q的,而是由于TLB存儲(chǔ)容量有限,而線程又多,使得一些線程的常用頁(yè)表項(xiàng)被替換出去。
[0090]這里假設(shè)32個(gè)線程共享一個(gè)存儲(chǔ)容量為128個(gè)頁(yè)表項(xiàng)的旁路轉(zhuǎn)換緩存器,則每個(gè)線程對(duì)應(yīng)的備用緩存器的存儲(chǔ)容量和預(yù)取緩存器PB的存儲(chǔ)容量可以設(shè)置為32個(gè)頁(yè)表項(xiàng),在待尋址線程進(jìn)行尋址之前,可將待尋址線程對(duì)應(yīng)的備用緩存器中的全部頁(yè)表項(xiàng)存儲(chǔ)至預(yù)取緩存器PB中,并刪除預(yù)取緩存器PB中當(dāng)前存儲(chǔ)的數(shù)據(jù)。其中,旁路轉(zhuǎn)換緩存器和預(yù)取緩存器PB可采用內(nèi)容可尋址的存儲(chǔ)器(Content Addressable Memory,簡(jiǎn)稱CAM)完成虛擬地址VA的比較,但由于增大預(yù)取緩存器PB的存儲(chǔ)容量會(huì)增大芯片功耗,因此可選擇存儲(chǔ)容量較小的預(yù)取緩存器PB,例如存儲(chǔ)容量為8個(gè)頁(yè)表項(xiàng)的預(yù)取緩存器PB,則在待尋址線程進(jìn)行尋址之前,可將待尋址線程對(duì)應(yīng)的備用緩存器中存儲(chǔ)時(shí)間最短的8個(gè)頁(yè)表項(xiàng)存儲(chǔ)至預(yù)取緩存器PB中,并刪除預(yù)取緩存器PB中當(dāng)前存儲(chǔ)的數(shù)據(jù)。
[0091]S205,接收第二線程發(fā)送的內(nèi)存尋址請(qǐng)求消息,內(nèi)存尋址請(qǐng)求消息中攜帶虛擬地址。
[0092]具體的,接收待尋址線程,即第二線程,發(fā)送的內(nèi)存尋址請(qǐng)求消息,該內(nèi)存尋址請(qǐng)求消息中攜帶待尋址的虛擬地址I
[0093]S206,根據(jù)虛擬地址在旁路轉(zhuǎn)換緩存器和預(yù)取緩存器存儲(chǔ)的頁(yè)表項(xiàng)中查詢虛擬地址對(duì)應(yīng)的物理地址。
[0094]這里根據(jù)在旁路轉(zhuǎn)換緩存器和預(yù)取緩存器PB中的尋址結(jié)果,可以選擇執(zhí)行以下步驟 S207、S208 或 S209。
[0095]S207:若旁路轉(zhuǎn)換緩存器中存在與虛擬地址對(duì)應(yīng)的第一物理地址,則通過(guò)第一物理地址訪問(wèn)內(nèi)存進(jìn)行數(shù)據(jù)存取。
[0096]S208:若旁路轉(zhuǎn)換緩存器中不存在與虛擬地址對(duì)應(yīng)的第一物理地址,且預(yù)取緩存器中存在與虛擬地址對(duì)應(yīng)的第二物理地址,則通過(guò)第二物理地址訪問(wèn)內(nèi)存進(jìn)行數(shù)據(jù)存取,并將預(yù)取緩存器中存儲(chǔ)的虛擬地址和第二物理地址對(duì)應(yīng)的頁(yè)表項(xiàng)存儲(chǔ)至旁路轉(zhuǎn)換緩存器中,并刪除預(yù)取緩存器中存儲(chǔ)的虛擬地址和第二物理地址對(duì)應(yīng)的頁(yè)表項(xiàng)。
[0097]其中,若備用緩存器中存儲(chǔ)的第二線程的頁(yè)表項(xiàng)的數(shù)目大于預(yù)取緩存器的存儲(chǔ)容量,則將備用緩存器中存儲(chǔ)的第二線程的頁(yè)表項(xiàng)中除預(yù)取緩存器中存儲(chǔ)的頁(yè)表項(xiàng)之外的一個(gè)頁(yè)表項(xiàng)存儲(chǔ)至預(yù)取緩存器中。
[0098]S209:若旁路轉(zhuǎn)換緩存器中不存在與虛擬地址對(duì)應(yīng)的第一物理地址,且預(yù)取緩存器中不存在與虛擬地址對(duì)應(yīng)的第二物理地址,則在內(nèi)存中查找與虛擬地址對(duì)應(yīng)的第三物理地址,并將在內(nèi)存中查找到的與虛擬地址和第三物理地址對(duì)應(yīng)的頁(yè)表項(xiàng)存儲(chǔ)至旁路轉(zhuǎn)換緩存器中。
[0099]具體的,圖5為根據(jù)虛擬地址VA進(jìn)行內(nèi)存物理地址尋址的示意圖,如圖5所示,根據(jù)虛擬地址VA,可以同時(shí)在旁路轉(zhuǎn)換緩存器和預(yù)取緩存器PB存儲(chǔ)的頁(yè)表項(xiàng)中進(jìn)行查詢。
[0100]當(dāng)旁路轉(zhuǎn)換緩存器中存在與該虛擬地址VA對(duì)應(yīng)的物理地址時(shí),即當(dāng)旁路轉(zhuǎn)換緩存器中的TLB命中(TLB-Hit)時(shí),不管預(yù)取緩存器PB中是否存在與該虛擬地址VA對(duì)應(yīng)的物理地址,即預(yù)取緩存器PB命中(PB-Hit)或未命中(PB-Miss),都根據(jù)在旁路轉(zhuǎn)換緩存器中查找到的物理地址,即第一物理地址PA1,進(jìn)行數(shù)據(jù)存取。
[0101]當(dāng)旁路轉(zhuǎn)換緩存器中不存在與該虛擬地址VA對(duì)應(yīng)的物理地址,即當(dāng)旁路轉(zhuǎn)換緩存器中的TLB未命中(TLB-Miss),但預(yù)取緩存器PB中存在與該虛擬地址VA對(duì)應(yīng)的物理地址時(shí),即預(yù)取緩存器PB命中(PB-Hit)時(shí),則根據(jù)在預(yù)取緩存器PB中查找到的物理地址,即第二物理地址PA2,進(jìn)行數(shù)據(jù)存取,并將查找到的頁(yè)表項(xiàng)即命中的頁(yè)表項(xiàng)存儲(chǔ)至旁路轉(zhuǎn)換緩存器的TLB中。其中,當(dāng)預(yù)取緩存器PB只存儲(chǔ)了備用緩存器中部分第二線程的頁(yè)表項(xiàng)時(shí),例如上面所述預(yù)取緩存器PB中只存儲(chǔ)了備用緩存器中存儲(chǔ)時(shí)間最短的8個(gè)第二線程的頁(yè)表項(xiàng),則在將預(yù)取緩存器PB中命中的頁(yè)表項(xiàng)存儲(chǔ)至TLB中后,可以從備用緩存器中取出下一個(gè)存儲(chǔ)時(shí)間較短的第二線程的頁(yè)表項(xiàng)存儲(chǔ)至預(yù)取緩存器PB中。
[0102]當(dāng)旁路轉(zhuǎn)換緩存器和預(yù)取緩存器PB中均不存在與虛擬地址VA對(duì)應(yīng)的物理地址時(shí),即均未命中(TLB-Miss且ΡΒ-Miss)時(shí),則根據(jù)該虛擬地址VA和對(duì)應(yīng)的線程標(biāo)識(shí)通過(guò)頁(yè)表掃描單元到內(nèi)存中查找與該虛擬地址VA對(duì)應(yīng)的物理地址,即第三物理地址PA3,并根據(jù)查找到的第三物理地址PA3進(jìn)行數(shù)據(jù)存取,同時(shí)將查找到的頁(yè)表項(xiàng)即命中的頁(yè)表項(xiàng)以及對(duì)應(yīng)的線程標(biāo)識(shí)存儲(chǔ)至旁路轉(zhuǎn)換緩存器的TLB中。
[0103]其中,對(duì)于步驟S208或S209:
[0104]若旁路轉(zhuǎn)換緩存器中存儲(chǔ)的頁(yè)表項(xiàng)的數(shù)目超過(guò)自身的存儲(chǔ)容量,則將旁路轉(zhuǎn)換緩存器中設(shè)定時(shí)間內(nèi)未被查詢的頁(yè)表項(xiàng)存儲(chǔ)至備用緩存器中,并刪除旁路轉(zhuǎn)換緩存器中設(shè)定時(shí)間內(nèi)未被查詢的頁(yè)表項(xiàng)。
[0105]具體的,當(dāng)旁路轉(zhuǎn)換緩存器中存儲(chǔ)的頁(yè)表項(xiàng)的數(shù)目超過(guò)自身的存儲(chǔ)容量時(shí),優(yōu)先將命中率最低的頁(yè)表項(xiàng),即設(shè)定時(shí)間內(nèi)未命中的頁(yè)表項(xiàng)存儲(chǔ)至備用緩存器中,并刪除該設(shè)定時(shí)間內(nèi)未命中的頁(yè)表項(xiàng)。
[0106]若備用緩存器中存儲(chǔ)的頁(yè)表項(xiàng)的數(shù)目超過(guò)自身的存儲(chǔ)容量,則刪除備用緩存器中存儲(chǔ)時(shí)間最長(zhǎng)的頁(yè)表項(xiàng)。
[0107]具體的,由于備用緩存器中的頁(yè)表項(xiàng)存儲(chǔ)時(shí)間越長(zhǎng),命中的幾率越小,因此對(duì)備用緩存器可以采取“先入先出(First Input First Output,簡(jiǎn)稱FIFO)”的存儲(chǔ)模式,即當(dāng)備用緩存器中存儲(chǔ)的頁(yè)表項(xiàng)的數(shù)目超過(guò)自身的存儲(chǔ)容量時(shí),優(yōu)先刪除存儲(chǔ)時(shí)間最長(zhǎng)的頁(yè)表項(xiàng)。
[0108]本實(shí)施例提供的內(nèi)存物理地址查詢方法,根據(jù)待尋址第二線程的虛擬地址在旁路轉(zhuǎn)換緩存器和預(yù)取緩存器中同時(shí)進(jìn)行查詢,且預(yù)取緩存器中存儲(chǔ)有旁路轉(zhuǎn)換緩存器中設(shè)定時(shí)間內(nèi)未被查詢的第二線程的頁(yè)表項(xiàng),從而提高對(duì)虛擬地址對(duì)應(yīng)的物理地址的查詢命中幾率,縮短尋址時(shí)間。
[0109]圖6為本發(fā)明提供的內(nèi)存物理地址查詢裝置一個(gè)實(shí)施例的結(jié)構(gòu)示意圖。如圖6所示,本實(shí)施例中的內(nèi)存物理地址查詢裝置60為執(zhí)行上述內(nèi)存物理地址查詢方法的特定主體,具體可以包括:確定模塊61、執(zhí)行模塊62接收模塊63和查詢模塊64,其中:
[0110]確定模塊61,用于根據(jù)預(yù)設(shè)的線程切換策略,確定未來(lái)設(shè)定時(shí)間內(nèi)內(nèi)存尋址操作由第一線程變更為第二線程。
[0111]具體的,線程切換策略中包括了在終端設(shè)備運(yùn)行的各時(shí)間段內(nèi),采用哪些線程來(lái)執(zhí)行內(nèi)存尋址操作。本發(fā)明實(shí)施例中,第一線程即為前一時(shí)間段內(nèi)執(zhí)行內(nèi)存尋址操作的線程,第二線程為在第一線程之后執(zhí)行內(nèi)存尋址操作的線程,即待尋址線程。
[0112]執(zhí)行模塊62,用于將備用緩存器中存儲(chǔ)的第二線程的頁(yè)表項(xiàng)存儲(chǔ)至預(yù)取緩存器中,備用緩存器中存儲(chǔ)旁路轉(zhuǎn)換緩存器存儲(chǔ)的頁(yè)表緩存TLB中設(shè)定時(shí)間內(nèi)未被查詢的頁(yè)表項(xiàng)。
[0113]具體的,這里根據(jù)備用緩存器中存儲(chǔ)的第二線程的頁(yè)表項(xiàng)的數(shù)目和預(yù)取緩存器PB的存儲(chǔ)容量之間的關(guān)系分為以下兩種情況:
[0114]情況一:若備用緩存器中存儲(chǔ)的第二線程的頁(yè)表項(xiàng)的數(shù)目小于或等于預(yù)取緩存器的存儲(chǔ)容量,則將備用緩存器中存儲(chǔ)的所有第二線程的頁(yè)表項(xiàng)存儲(chǔ)至預(yù)取緩存器中,并覆蓋預(yù)取緩存器的當(dāng)前存儲(chǔ)數(shù)據(jù);
[0115]情況二:若備用緩存器中存儲(chǔ)的第二線程的頁(yè)表項(xiàng)的數(shù)目大于預(yù)取緩存器的存儲(chǔ)容量,則將備用緩存器中存儲(chǔ)的與預(yù)取緩存器的存儲(chǔ)容量相等數(shù)目的第二線程的頁(yè)表項(xiàng)存儲(chǔ)至預(yù)取緩存器中,并覆蓋預(yù)取緩存器的當(dāng)前存儲(chǔ)數(shù)據(jù);
[0116]具體的,根據(jù)確定模塊61確定的待尋址的線程,即第二線程,將備用緩存器中存儲(chǔ)的第二線程的部分或全部頁(yè)表項(xiàng)存儲(chǔ)至預(yù)取緩存器PB中,且該備用緩存器中存儲(chǔ)的是旁路轉(zhuǎn)換緩存器存儲(chǔ)的頁(yè)表緩存TLB中設(shè)定時(shí)間內(nèi)未被查詢的頁(yè)表項(xiàng)??蛇x的,備用緩存器中存儲(chǔ)的頁(yè)表項(xiàng)具體可以包括:虛擬地址和物理地址的對(duì)應(yīng)關(guān)系以及對(duì)應(yīng)的各線程的標(biāo)識(shí);類(lèi)似的,旁路轉(zhuǎn)換緩存器中存儲(chǔ)的頁(yè)表項(xiàng)具體也可以包括:虛擬地址和物理地址的對(duì)應(yīng)關(guān)系以及對(duì)應(yīng)的各線程的標(biāo)識(shí);預(yù)取緩存器PB中存儲(chǔ)的頁(yè)表項(xiàng)具體可以包括:虛擬地址和物理地址的對(duì)應(yīng)關(guān)系以及對(duì)應(yīng)的待尋址線程的標(biāo)識(shí)。
[0117]此處需要說(shuō)明的是,備用緩存器的數(shù)量可以是一個(gè)或多個(gè),例如:每個(gè)線程可以對(duì)應(yīng)一個(gè)備用緩存器,用于存儲(chǔ)緩存旁路轉(zhuǎn)換緩存器中該線程設(shè)定時(shí)間內(nèi)未被查詢的頁(yè)表項(xiàng)。類(lèi)似的,旁路轉(zhuǎn)換緩存器和預(yù)取緩存器的數(shù)量都可以是一個(gè)或多個(gè),例如:可以每個(gè)線程對(duì)應(yīng)一個(gè)旁路轉(zhuǎn)換緩存器和一個(gè)預(yù)取緩存器。
[0118]接收模塊63,用于接收第二線程發(fā)送的內(nèi)存尋址請(qǐng)求消息,內(nèi)存尋址請(qǐng)求消息中攜帶虛擬地址。
[0119]具體的,接收待尋址線程,即第二線程,發(fā)送的內(nèi)存尋址請(qǐng)求消息,該內(nèi)存尋址請(qǐng)求消息中攜帶待尋址的虛擬地址I
[0120]查詢模塊64,用于根據(jù)虛擬地址在旁路轉(zhuǎn)換緩存器和預(yù)取緩存器存儲(chǔ)的頁(yè)表項(xiàng)中查詢虛擬地址對(duì)應(yīng)的物理地址。
[0121]具體的,根據(jù)虛擬地址VA,可以同時(shí)在旁路轉(zhuǎn)換緩存器和預(yù)取緩存器PB存儲(chǔ)的頁(yè)表項(xiàng)中進(jìn)行查詢,這里根據(jù)在旁路轉(zhuǎn)換緩存器和預(yù)取緩存器PB中的尋址結(jié)果可以分為以下三種情況:
[0122]情況一:若旁路轉(zhuǎn)換緩存器中存在與虛擬地址對(duì)應(yīng)的第一物理地址,則通過(guò)第一物理地址訪問(wèn)內(nèi)存進(jìn)行數(shù)據(jù)存取。
[0123]具體的,當(dāng)旁路轉(zhuǎn)換緩存器中存在與該虛擬地址VA對(duì)應(yīng)的物理地址時(shí),不管預(yù)取緩存器PB中是否存在與該虛擬地址VA對(duì)應(yīng)的物理地址,都根據(jù)在旁路轉(zhuǎn)換緩存器中查找到的物理地址,即第一物理地址,進(jìn)行數(shù)據(jù)存取。
[0124]情況二:若旁路轉(zhuǎn)換緩存器中不存在與虛擬地址對(duì)應(yīng)的第一物理地址,且預(yù)取緩存器中存在與虛擬地址對(duì)應(yīng)的第二物理地址,則通過(guò)第二物理地址訪問(wèn)內(nèi)存進(jìn)行數(shù)據(jù)存取,并將預(yù)取緩存器中存儲(chǔ)的虛擬地址和第二物理地址對(duì)應(yīng)的頁(yè)表項(xiàng)存儲(chǔ)至旁路轉(zhuǎn)換緩存器中,并刪除預(yù)取緩存器中存儲(chǔ)的虛擬地址和第二物理地址對(duì)應(yīng)的頁(yè)表項(xiàng)。
[0125]其中,若備用緩存器中存儲(chǔ)的第二線程的頁(yè)表項(xiàng)的數(shù)目大于預(yù)取緩存器的存儲(chǔ)容量,且旁路轉(zhuǎn)換緩存器中不存在與虛擬地址對(duì)應(yīng)的第一物理地址,預(yù)取緩存器中存在與虛擬地址對(duì)應(yīng)的第二物理地址,則將備用緩存器中存儲(chǔ)的第二線程的頁(yè)表項(xiàng)中除預(yù)取緩存器中存儲(chǔ)的頁(yè)表項(xiàng)之外的一個(gè)頁(yè)表項(xiàng)存儲(chǔ)至預(yù)取緩存器中。
[0126]具體的,當(dāng)旁路轉(zhuǎn)換緩存器中不存在與該虛擬地址VA對(duì)應(yīng)的物理地址,但預(yù)取緩存器PB中存在與該虛擬地址VA對(duì)應(yīng)的物理地址時(shí),則根據(jù)在預(yù)取緩存器PB中查找到的物理地址,即第二物理地址,進(jìn)行數(shù)據(jù)存取,并將查找到的頁(yè)表項(xiàng)即命中的頁(yè)表項(xiàng)存儲(chǔ)至旁路轉(zhuǎn)換緩存器的TLB中。當(dāng)預(yù)取緩存器PB只存儲(chǔ)了備用緩存器中部分第二線程的頁(yè)表項(xiàng)時(shí),在將預(yù)取緩存器PB中命中的頁(yè)表項(xiàng)存儲(chǔ)至TLB中后,可以從備用緩存器中取出一個(gè)頁(yè)表項(xiàng)存儲(chǔ)至預(yù)取緩存器PB中。
[0127]情況三:若旁路轉(zhuǎn)換緩存器中不存在與虛擬地址對(duì)應(yīng)的第一物理地址,且預(yù)取緩存器中不存在與虛擬地址對(duì)應(yīng)的第二物理地址,則在內(nèi)存中查找與虛擬地址對(duì)應(yīng)的第三物理地址,并將在內(nèi)存中查找到的與虛擬地址和第三物理地址對(duì)應(yīng)的頁(yè)表項(xiàng)存儲(chǔ)至旁路轉(zhuǎn)換緩存器中。
[0128]具體的,當(dāng)旁路轉(zhuǎn)換緩存器和預(yù)取緩存器PB中均不存在與虛擬地址VA對(duì)應(yīng)的物理地址時(shí),即均未命中時(shí),則需到內(nèi)存中查找與該虛擬地址VA對(duì)應(yīng)的物理地址,即第三物理地址,并將查找到的頁(yè)表項(xiàng)即命中的頁(yè)表項(xiàng)存儲(chǔ)至旁路轉(zhuǎn)換緩存器的TLB中。
[0129]進(jìn)一步的,執(zhí)行模塊62還可以用于:
[0130]在將備用緩存器中存儲(chǔ)的第二線程的頁(yè)表項(xiàng)存儲(chǔ)至預(yù)取緩存器中之前,若旁路轉(zhuǎn)換緩存器中存儲(chǔ)的頁(yè)表項(xiàng)的數(shù)目超過(guò)自身的存儲(chǔ)容量,則將旁路轉(zhuǎn)換緩存器中設(shè)定時(shí)間內(nèi)未被查詢的頁(yè)表項(xiàng)存儲(chǔ)至備用緩存器中,并刪除旁路轉(zhuǎn)換緩存器中設(shè)定時(shí)間內(nèi)未被查詢的頁(yè)表項(xiàng)。
[0131]具體的,當(dāng)旁路轉(zhuǎn)換緩存器中存儲(chǔ)的頁(yè)表項(xiàng)的數(shù)目超過(guò)自身的存儲(chǔ)容量時(shí),優(yōu)先將命中率最低的頁(yè)表項(xiàng),即設(shè)定時(shí)間內(nèi)未命中的頁(yè)表項(xiàng)存儲(chǔ)至備用緩存器中,并刪除該設(shè)定時(shí)間內(nèi)未命中的頁(yè)表項(xiàng)。
[0132]進(jìn)一步的,執(zhí)行模塊62還可以用于:
[0133]在將旁路轉(zhuǎn)換緩存器中設(shè)定時(shí)間內(nèi)未被查詢的頁(yè)表項(xiàng)存儲(chǔ)至備用緩存器中之后,若備用緩存器中存儲(chǔ)的頁(yè)表項(xiàng)的數(shù)目超過(guò)自身的存儲(chǔ)容量,則刪除備用緩存器中存儲(chǔ)時(shí)間最長(zhǎng)的頁(yè)表項(xiàng)。
[0134]具體的,由于備用緩存器中的頁(yè)表項(xiàng)存儲(chǔ)時(shí)間越長(zhǎng),命中的幾率越小,因此對(duì)備用緩存器可以采取“先入先出FIFO”的存儲(chǔ)模式,即當(dāng)備用緩存器中存儲(chǔ)的頁(yè)表項(xiàng)的數(shù)目超過(guò)自身的存儲(chǔ)容量時(shí),優(yōu)先刪除存儲(chǔ)時(shí)間最長(zhǎng)的頁(yè)表項(xiàng)。
[0135]本實(shí)施例提供的內(nèi)存物理地址查詢裝置,根據(jù)待尋址第二線程的虛擬地址在旁路轉(zhuǎn)換緩存器和預(yù)取緩存器中同時(shí)進(jìn)行查詢,且預(yù)取緩存器中存儲(chǔ)有旁路轉(zhuǎn)換緩存器中設(shè)定時(shí)間內(nèi)未被查詢的第二線程的頁(yè)表項(xiàng),從而提高對(duì)虛擬地址對(duì)應(yīng)的物理地址的查詢命中幾率,縮短尋址時(shí)間。
[0136]圖7為本發(fā)明提供的內(nèi)存物理地址查詢裝置又一個(gè)實(shí)施例的結(jié)構(gòu)示意圖。如圖7所示,本實(shí)施例的內(nèi)存物理地址查詢裝置包括:存儲(chǔ)器71、旁路轉(zhuǎn)換緩存器72、備用緩存器73、預(yù)取緩存器74和處理器75,其中:
[0137]存儲(chǔ)器71,用于存儲(chǔ)指令;
[0138]旁路轉(zhuǎn)換緩存器72,用于存儲(chǔ)頁(yè)表緩存TLB ;
[0139]備用緩存器73,用于存儲(chǔ)旁路轉(zhuǎn)換緩存器存儲(chǔ)的TLB中設(shè)定時(shí)間內(nèi)未被查詢的頁(yè)表項(xiàng);
[0140]預(yù)取緩存器74,用于存儲(chǔ)備用緩存器中存儲(chǔ)的對(duì)應(yīng)線程的頁(yè)表項(xiàng);
[0141]處理器75,用于運(yùn)行存儲(chǔ)器中存儲(chǔ)的指令以執(zhí)行如圖1或圖2所示的內(nèi)存物理地址查詢方法。
[0142]具體的,存儲(chǔ)器71可能包含高速RAM存儲(chǔ)器,也可能還包含非不穩(wěn)定的存儲(chǔ)器(non-volatile memory),例如至少一個(gè)磁盤(pán)存儲(chǔ)器。存儲(chǔ)器71可選的可以包含至少一個(gè)存儲(chǔ)裝置。存儲(chǔ)器71存儲(chǔ)了指令,當(dāng)內(nèi)存物理地址查詢裝置運(yùn)行時(shí),處理器75與存儲(chǔ)器71之間通信,處理器75執(zhí)行指令使得內(nèi)存物理地址查詢裝置可以執(zhí)行本發(fā)明各實(shí)施例所提供的內(nèi)存物理地址查詢方法。
[0143]備用緩存器73中可以存儲(chǔ)有包括虛擬地址和物理地址的對(duì)應(yīng)關(guān)系的頁(yè)表項(xiàng)以及對(duì)應(yīng)的各線程的標(biāo)識(shí),旁路轉(zhuǎn)換緩存器72中可以存儲(chǔ)有包括虛擬地址和物理地址的對(duì)應(yīng)關(guān)系的頁(yè)表項(xiàng)以及對(duì)應(yīng)的各線程的標(biāo)識(shí),預(yù)取緩存器74中可以存儲(chǔ)有包括虛擬地址和物理地址的對(duì)應(yīng)關(guān)系的頁(yè)表項(xiàng)以及對(duì)應(yīng)的待尋址線程的標(biāo)識(shí)。
[0144]此處需要說(shuō)明的是,備用緩存器73的數(shù)量可以是一個(gè)或多個(gè),例如:每個(gè)線程可以對(duì)應(yīng)一個(gè)備用緩存器,用于存儲(chǔ)緩存旁路轉(zhuǎn)換緩存器中該線程設(shè)定時(shí)間內(nèi)未被查詢的頁(yè)表項(xiàng)。類(lèi)似的,旁路轉(zhuǎn)換緩存器72和預(yù)取緩存器74的數(shù)量都可以是一個(gè)或多個(gè),例如:可以每個(gè)線程對(duì)應(yīng)一個(gè)旁路轉(zhuǎn)換緩存器和一個(gè)預(yù)取緩存器。
[0145]本實(shí)施例中的處理器可能是一種集成電路芯片,具有信號(hào)處理能力。在實(shí)現(xiàn)過(guò)程中,上述方法的各步驟可以通過(guò)處理器中的硬件的集成邏輯電路或者軟件形式的指令完成。上述的處理器可以是通用處理器、數(shù)字信號(hào)處理器(DSP)、專用集成電路(ASIC)、現(xiàn)成可編程門(mén)陣列(FPGA)或者其他可編程邏輯器件、分立門(mén)或者晶體管邏輯器件、分立硬件組件。可以實(shí)現(xiàn)或者執(zhí)行本發(fā)明實(shí)施例中的公開(kāi)的各方法、步驟及邏輯框圖。上述處理器可以是微處理器或者上述處理器也可以是任何常規(guī)的處理器等。結(jié)合本發(fā)明實(shí)施例所公開(kāi)的方法的步驟可以直接體現(xiàn)為硬件處理器執(zhí)行完成,或者用處理器中的硬件及軟件模塊組合執(zhí)行完成。軟件模塊可以位于隨機(jī)存儲(chǔ)器,閃存、只讀存儲(chǔ)器,可編程只讀存儲(chǔ)器或者電可擦寫(xiě)可編程存儲(chǔ)器、寄存器等本領(lǐng)域成熟的存儲(chǔ)介質(zhì)中。該存儲(chǔ)介質(zhì)位于存儲(chǔ)器,處理器讀取存儲(chǔ)器中的信息,結(jié)合其硬件完成上述方法的步驟。
[0146]本發(fā)明實(shí)施例還提供一種芯片,該芯片用于進(jìn)行內(nèi)存物理地址查詢,該芯片可以包括上述的處理器。
[0147]本實(shí)施例提供的內(nèi)存物理地址查詢裝置,通過(guò)處理器75執(zhí)行存儲(chǔ)器71存儲(chǔ)的指令,根據(jù)待尋址第二線程的虛擬地址在旁路轉(zhuǎn)換緩存器和預(yù)取緩存器中同時(shí)進(jìn)行查詢,且預(yù)取緩存器中存儲(chǔ)有旁路轉(zhuǎn)換緩存器中設(shè)定時(shí)間內(nèi)未被查詢的第二線程的頁(yè)表項(xiàng),從而提高對(duì)虛擬地址對(duì)應(yīng)的物理地址的查詢命中幾率,縮短尋址時(shí)間。
[0148]本領(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ì)。
[0149]最后應(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.一種內(nèi)存物理地址查詢方法,其特征在于,包括: 根據(jù)預(yù)設(shè)的線程切換策略,確定未來(lái)設(shè)定時(shí)間內(nèi)內(nèi)存尋址操作由第一線程變更為第二線程; 將備用緩存器中存儲(chǔ)的所述第二線程的頁(yè)表項(xiàng)存儲(chǔ)至預(yù)取緩存器中,所述備用緩存器中存儲(chǔ)旁路轉(zhuǎn)換緩存器存儲(chǔ)的頁(yè)表緩存TLB中設(shè)定時(shí)間內(nèi)未被查詢的頁(yè)表項(xiàng); 接收所述第二線程發(fā)送的內(nèi)存尋址請(qǐng)求消息,所述內(nèi)存尋址請(qǐng)求消息中攜帶虛擬地址; 根據(jù)所述虛擬地址在所述旁路轉(zhuǎn)換緩存器和所述預(yù)取緩存器存儲(chǔ)的頁(yè)表項(xiàng)中查詢所述虛擬地址對(duì)應(yīng)的物理地址。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述根據(jù)所述虛擬地址在所述旁路轉(zhuǎn)換緩存器和所述預(yù)取緩存器存儲(chǔ)的頁(yè)表項(xiàng)中查詢所述虛擬地址對(duì)應(yīng)的物理地址,包括: 若所述旁路轉(zhuǎn)換緩存器中存在與所述虛擬地址對(duì)應(yīng)的第一物理地址,則通過(guò)所述第一物理地址訪問(wèn)內(nèi)存進(jìn)行數(shù)據(jù)存??;或者, 若所述旁路轉(zhuǎn)換緩存器中不存在與所述虛擬地址對(duì)應(yīng)的第一物理地址,且所述預(yù)取緩存器中存在與所述虛擬地址對(duì)應(yīng)的第二物理地址,則通過(guò)所述第二物理地址訪問(wèn)所述內(nèi)存進(jìn)行數(shù)據(jù)存取。
3.根據(jù)權(quán)利要求2所述的方法,其特征在于,所述方法還包括: 若所述旁路轉(zhuǎn)換緩存器中不存在與所述虛擬地址對(duì)應(yīng)的第一物理地址,且所述預(yù)取緩存器中不存在與所述虛擬地址對(duì)應(yīng)的第二物理地址,則在所述內(nèi)存中查找與所述虛擬地址對(duì)應(yīng)的第三物理地址。
4.根據(jù)權(quán)利要求2或3所述的方法,其特征在于,若所述旁路轉(zhuǎn)換緩存器中不存在與所述虛擬地址對(duì)應(yīng)的第一物理地址,且所述預(yù)取緩存器中存在與所述虛擬地址對(duì)應(yīng)的第二物理地址,則所述方法還包括: 將所述預(yù)取緩存器中存儲(chǔ)的所述虛擬地址和所述第二物理地址對(duì)應(yīng)的頁(yè)表項(xiàng)存儲(chǔ)至所述旁路轉(zhuǎn)換緩存器中,并刪除所述預(yù)取緩存器中存儲(chǔ)的所述虛擬地址和所述第二物理地址對(duì)應(yīng)的頁(yè)表項(xiàng)。
5.根據(jù)權(quán)利要求3所述的方法,其特征在于,所述方法還包括: 將在內(nèi)存中查找到的與所述虛擬地址和所述第三物理地址對(duì)應(yīng)的頁(yè)表項(xiàng)存儲(chǔ)至所述旁路轉(zhuǎn)換緩存器中。
6.根據(jù)權(quán)利要求1-5任一項(xiàng)所述的方法,其特征在于,所述將備用緩存器中存儲(chǔ)的所述第二線程的頁(yè)表項(xiàng)存儲(chǔ)至預(yù)取緩存器中之前,所述方法還包括: 若所述旁路轉(zhuǎn)換緩存器中存儲(chǔ)的頁(yè)表項(xiàng)的數(shù)目超過(guò)自身的存儲(chǔ)容量,則將所述旁路轉(zhuǎn)換緩存器中所述設(shè)定時(shí)間內(nèi)未被查詢的頁(yè)表項(xiàng)存儲(chǔ)至所述備用緩存器中,并刪除所述旁路轉(zhuǎn)換緩存器中所述設(shè)定時(shí)間內(nèi)未被查詢的頁(yè)表項(xiàng)。
7.根據(jù)權(quán)利要求6所述的方法,其特征在于,所述將所述旁路轉(zhuǎn)換緩存器中所述設(shè)定時(shí)間內(nèi)未被查詢的頁(yè)表項(xiàng)存儲(chǔ)至所述備用緩存器中之后,所述方法還包括: 若所述備用緩存器中存儲(chǔ)的頁(yè)表項(xiàng)的數(shù)目超過(guò)自身的存儲(chǔ)容量,則刪除所述備用緩存器中存儲(chǔ)時(shí)間最長(zhǎng)的頁(yè)表項(xiàng)。
8.根據(jù)權(quán)利要求1-7任一項(xiàng)所述的方法,其特征在于,所述將備用緩存器中存儲(chǔ)的所述第二線程的頁(yè)表項(xiàng)存儲(chǔ)至預(yù)取緩存器中,包括: 若所述備用緩存器中存儲(chǔ)的所述第二線程的頁(yè)表項(xiàng)的數(shù)目小于或等于所述預(yù)取緩存器的存儲(chǔ)容量,則將所述備用緩存器中存儲(chǔ)的所有所述第二線程的頁(yè)表項(xiàng)存儲(chǔ)至所述預(yù)取緩存器中,并覆蓋所述預(yù)取緩存器的當(dāng)前存儲(chǔ)數(shù)據(jù);或者, 若所述備用緩存器中存儲(chǔ)的所述第二線程的頁(yè)表項(xiàng)的數(shù)目大于所述預(yù)取緩存器的存儲(chǔ)容量,則將所述備用緩存器中存儲(chǔ)的與所述預(yù)取緩存器的存儲(chǔ)容量相等數(shù)目的所述第二線程的頁(yè)表項(xiàng)存儲(chǔ)至所述預(yù)取緩存器中,并覆蓋所述預(yù)取緩存器的當(dāng)前存儲(chǔ)數(shù)據(jù)。
9.根據(jù)權(quán)利要求8所述的方法,其特征在于,若所述備用緩存器中存儲(chǔ)的所述第二線程的頁(yè)表項(xiàng)的數(shù)目大于所述預(yù)取緩存器的存儲(chǔ)容量,則所述方法還包括: 若所述旁路轉(zhuǎn)換緩存器中不存在與所述虛擬地址對(duì)應(yīng)的第一物理地址,且所述預(yù)取緩存器中存在與所述虛擬地址對(duì)應(yīng)的第二物理地址,則將所述備用緩存器中存儲(chǔ)的所述第二線程的頁(yè)表項(xiàng)中除所述預(yù)取緩存器中存儲(chǔ)的頁(yè)表項(xiàng)之外的一個(gè)頁(yè)表項(xiàng)存儲(chǔ)至所述預(yù)取緩存器中。
10.一種內(nèi)存物理地址查詢裝置,其特征在于,包括: 確定模塊,用于根據(jù)預(yù)設(shè)的線程切換策略,確定未來(lái)設(shè)定時(shí)間內(nèi)內(nèi)存尋址操作由第一線程變更為第二線程; 執(zhí)行模塊,用于將備用緩存器中存儲(chǔ)的所述第二線程的頁(yè)表項(xiàng)存儲(chǔ)至預(yù)取緩存器中,所述備用緩存器中存儲(chǔ)旁路轉(zhuǎn)換緩存器存儲(chǔ)的頁(yè)表緩存TLB中設(shè)定時(shí)間內(nèi)未被查詢的頁(yè)表項(xiàng); 接收模塊,接收所述第二線程發(fā)送的內(nèi)存尋址請(qǐng)求消息,所述內(nèi)存尋址請(qǐng)求消息中攜帶虛擬地址; 查詢模塊,根據(jù)所述虛擬地址在所述旁路轉(zhuǎn)換緩存器和所述預(yù)取緩存器存儲(chǔ)的頁(yè)表項(xiàng)中查詢所述虛擬地址對(duì)應(yīng)的物理地址。
11.根據(jù)權(quán)利要求10所述的裝置,其特征在于,所述查詢模塊具體用于: 若所述旁路轉(zhuǎn)換緩存器中存在與所述虛擬地址對(duì)應(yīng)的第一物理地址,則通過(guò)所述第一物理地址訪問(wèn)內(nèi)存進(jìn)行數(shù)據(jù)存??;或者, 若所述旁路轉(zhuǎn)換緩存器中不存在與所述虛擬地址對(duì)應(yīng)的第一物理地址,且所述預(yù)取緩存器中存在與所述虛擬地址對(duì)應(yīng)的第二物理地址,則通過(guò)所述第二物理地址訪問(wèn)所述內(nèi)存進(jìn)行數(shù)據(jù)存取。
12.根據(jù)權(quán)利要求11所述的裝置,其特征在于,所述查詢模塊還用于: 若所述旁路轉(zhuǎn)換緩存器中不存在與所述虛擬地址對(duì)應(yīng)的第一物理地址,且所述預(yù)取緩存器中不存在與所述虛擬地址對(duì)應(yīng)的第二物理地址,則在所述內(nèi)存中查找與所述虛擬地址對(duì)應(yīng)的第三物理地址。
13.根據(jù)權(quán)利要求11或12所述的裝置,其特征在于,所述查詢模塊還用于: 若所述旁路轉(zhuǎn)換緩存器中不存在與所述虛擬地址對(duì)應(yīng)的第一物理地址,且所述預(yù)取緩存器中存在與所述虛擬地址對(duì)應(yīng)的第二物理地址,則將所述預(yù)取緩存器中存儲(chǔ)的所述虛擬地址和所述第二物理地址對(duì)應(yīng)的頁(yè)表項(xiàng)存儲(chǔ)至所述旁路轉(zhuǎn)換緩存器中,并刪除所述預(yù)取緩存器中存儲(chǔ)的所述虛擬地址和所述第二物理地址對(duì)應(yīng)的頁(yè)表項(xiàng)。
14.根據(jù)權(quán)利要求12所述的裝置,其特征在于,所述查詢模塊還用于: 將在內(nèi)存中查找到的與所述虛擬地址和所述第三物理地址對(duì)應(yīng)的頁(yè)表項(xiàng)存儲(chǔ)至所述旁路轉(zhuǎn)換緩存器中。
15.根據(jù)權(quán)利要求10-14任一項(xiàng)所述的裝置,其特征在于,所述執(zhí)行模塊還用于: 在所述將備用緩存器中存儲(chǔ)的所述第二線程的頁(yè)表項(xiàng)存儲(chǔ)至預(yù)取緩存器中之前,若所述旁路轉(zhuǎn)換緩存器中存儲(chǔ)的頁(yè)表項(xiàng)的數(shù)目超過(guò)自身的存儲(chǔ)容量,則將所述旁路轉(zhuǎn)換緩存器中所述設(shè)定時(shí)間內(nèi)未被查詢的頁(yè)表項(xiàng)存儲(chǔ)至所述備用緩存器中,并刪除所述旁路轉(zhuǎn)換緩存器中所述設(shè)定時(shí)間內(nèi)未被查詢的頁(yè)表項(xiàng)。
16.根據(jù)權(quán)利要求15所述的裝置,其特征在于,所述執(zhí)行模塊還用于: 在所述將所述旁路轉(zhuǎn)換緩存器中所述設(shè)定時(shí)間內(nèi)未被查詢的頁(yè)表項(xiàng)存儲(chǔ)至所述備用緩存器中之后,若所述備用緩存器中存儲(chǔ)的頁(yè)表項(xiàng)的數(shù)目超過(guò)自身的存儲(chǔ)容量,則刪除所述備用緩存器中存儲(chǔ)時(shí)間最長(zhǎng)的頁(yè)表項(xiàng)。
17.根據(jù)權(quán)利要求10-16任一項(xiàng)所述的裝置,其特征在于,所述執(zhí)行模塊具體用于: 若所述備用緩存器中存儲(chǔ)的所述第二線程的頁(yè)表項(xiàng)的數(shù)目小于或等于所述預(yù)取緩存器的存儲(chǔ)容量,則將所述備用緩存器中存儲(chǔ)的所有所述第二線程的頁(yè)表項(xiàng)存儲(chǔ)至所述預(yù)取緩存器中,并覆蓋所述預(yù)取緩存器的當(dāng)前存儲(chǔ)數(shù)據(jù);或者, 若所述備用緩存器中存儲(chǔ)的所述第二線程的頁(yè)表項(xiàng)的數(shù)目大于所述預(yù)取緩存器的存儲(chǔ)容量,則將所述備用緩存器中存儲(chǔ)的與所述預(yù)取緩存器的存儲(chǔ)容量相等數(shù)目的所述第二線程的頁(yè)表項(xiàng)存儲(chǔ)至所述預(yù)取緩存器中,并覆蓋所述預(yù)取緩存器的當(dāng)前存儲(chǔ)數(shù)據(jù)。
18.根據(jù)權(quán)利要求17所述的裝置,其特征在于,所述執(zhí)行模塊還用于: 若所述備用緩存器中存儲(chǔ)的所述第二線程的頁(yè)表項(xiàng)的數(shù)目大于所述預(yù)取緩存器的存儲(chǔ)容量,且所述旁路轉(zhuǎn)換緩存器中不存在與所述虛擬地址對(duì)應(yīng)的第一物理地址,所述預(yù)取緩存器中存在與所述虛擬地址對(duì)應(yīng)的第二物理地址,則將所述備用緩存器中存儲(chǔ)的所述第二線程的頁(yè)表項(xiàng)中除所述預(yù)取緩存器中存儲(chǔ)的頁(yè)表項(xiàng)之外的一個(gè)頁(yè)表項(xiàng)存儲(chǔ)至所述預(yù)取緩存器中。
19.一種內(nèi)存物理地址查詢裝置,其特征在于,包括:存儲(chǔ)器、旁路轉(zhuǎn)換緩存器、備用緩存器、預(yù)取緩存器和處理器; 所述存儲(chǔ)器,用于存儲(chǔ)指令; 所述旁路轉(zhuǎn)換緩存器,用于存儲(chǔ)頁(yè)表緩存TLB ; 所述備用緩存器,用于存儲(chǔ)所述旁路轉(zhuǎn)換緩存器存儲(chǔ)的所述TLB中設(shè)定時(shí)間內(nèi)未被查詢的頁(yè)表項(xiàng); 所述預(yù)取緩存器,用于存儲(chǔ)所述備用緩存器中存儲(chǔ)的對(duì)應(yīng)線程的頁(yè)表項(xiàng); 所述處理器,用于運(yùn)行所述存儲(chǔ)器中存儲(chǔ)的所述指令以執(zhí)行如權(quán)利要求1至9任一項(xiàng)所述的內(nèi)存物理地址查詢方法。
【文檔編號(hào)】G06F12/08GK104424117SQ201310364417
【公開(kāi)日】2015年3月18日 申請(qǐng)日期:2013年8月20日 優(yōu)先權(quán)日:2013年8月20日
【發(fā)明者】郭旭斌, 侯銳, 馮煜晶, 蘇東鋒 申請(qǐng)人:華為技術(shù)有限公司, 中國(guó)科學(xué)院計(jì)算技術(shù)研究所