緩存替換的方法、緩存控制器和處理器的制造方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明實(shí)施例涉及通信技術(shù),尤其涉及一種緩存替換的方法、緩存控制器和處理器。
【背景技術(shù)】
[0002]隨著大數(shù)據(jù)應(yīng)用的發(fā)展,對(duì)內(nèi)存的容量和訪問速度有了越來越高的要求,常用的動(dòng)態(tài)隨機(jī)訪問存儲(chǔ)器(Dynamic Random-Access Memory,簡稱DRAM)已不能滿足要求。隨之誕生的新型的非易失性存儲(chǔ)器(Non-Volatile Memory,簡稱NVM)以其大容量、低功耗等優(yōu)勢有望取代DRAM成為計(jì)算機(jī)系統(tǒng)中的內(nèi)存系統(tǒng)。然而,現(xiàn)有NVM的讀寫延遲較DRAM高,且寫次數(shù)有限。
[0003]NVM內(nèi)部的讀寫機(jī)制與DRAM類似,NVM有一個(gè)行緩沖區(qū)(Row buffer)用來保存最近一次訪問的內(nèi)存行中的數(shù)據(jù),NVM訪問的延遲依賴于行緩沖區(qū)是否命中。若連續(xù)的兩個(gè)內(nèi)存訪問請求的地址屬于同一內(nèi)存行,則行緩沖區(qū)命中,當(dāng)行緩沖區(qū)命中時(shí),后一次的內(nèi)存訪問請求不需要從內(nèi)存陣列中讀取數(shù)據(jù),而是直接從行緩沖區(qū)中讀取數(shù)據(jù),減少了內(nèi)存訪問的延遲。由于NVM的讀寫延遲較高,若行緩沖區(qū)不命中,則需要從NVM陣列中讀取數(shù)據(jù),對(duì)NVM陣列的訪問延遲大于對(duì)DRAM陣列的訪問延遲,但二者對(duì)行緩沖區(qū)的讀寫延遲基本相同,因此,對(duì)于NVM來說提高行緩沖區(qū)的命中率更能顯著提高內(nèi)存訪問效率。現(xiàn)有機(jī)制中,受緩存(cache)替換策略的影響,導(dǎo)致發(fā)往內(nèi)存的請求地址較為隨機(jī),因此,行緩沖區(qū)命中率較差,影響內(nèi)存訪問性能。
【發(fā)明內(nèi)容】
[0004]本發(fā)明實(shí)施例提供一種緩存替換的方法、緩存控制器和處理器,能夠提高行緩存區(qū)的命中率,從而提聞內(nèi)存訪問性能,并且能夠減少內(nèi)存的與次數(shù),提聞內(nèi)存的使用壽命。
[0005]本發(fā)明第一方面提供一種緩存替換的方法,包括:
[0006]緩存控制器接收內(nèi)存訪問請求,根據(jù)所述內(nèi)存訪問請求的地址查找緩存,若在所述緩存中沒有查找到所述內(nèi)存訪問請求的地址,則從所述緩存中確定待替換緩存行;
[0007]若所述待替換緩存行為臟緩存行,則所述緩存控制器根據(jù)所述待替換緩存行的地址確定關(guān)聯(lián)緩存池,所述關(guān)聯(lián)緩存池包括至少一個(gè)關(guān)聯(lián)緩存行,所述關(guān)聯(lián)緩存行與所述待替換緩存行屬于同一內(nèi)存行,所述關(guān)聯(lián)緩存行位于所述緩存中,所述關(guān)聯(lián)緩存行為臟緩存行,所述臟緩存行的數(shù)據(jù)被修改過;
[0008]所述緩存控制器根據(jù)所述關(guān)聯(lián)緩存行的訪問信息從所述關(guān)聯(lián)緩存池中確定待寫回緩存行;
[0009]所述緩存控制器將所述待替換緩存行以及所述待寫回緩存行的地址和數(shù)據(jù)發(fā)送給內(nèi)存控制器,以使所述內(nèi)存控制器根據(jù)所述待替換緩存行以及所述待寫回緩存行的地址將所述待替換緩存行以及所述待寫回緩存行的數(shù)據(jù)寫入內(nèi)存,并將所述內(nèi)存訪問請求所需的數(shù)據(jù)從所述內(nèi)存中讀入所述待替換緩存行的位置。
[0010]結(jié)合本發(fā)明第一方面,在本發(fā)明第一方面的第一種可能的實(shí)現(xiàn)方式中,所述緩存控制器根據(jù)所述關(guān)聯(lián)緩存行的訪問信息從所述關(guān)聯(lián)緩存池中確定待寫回緩存行,包括:
[0011]所述緩存控制器根據(jù)所述關(guān)聯(lián)緩存行的訪問次數(shù)和/或?qū)懟貥?biāo)示從所述關(guān)聯(lián)緩存池中確定待寫回緩存行,所述寫回標(biāo)示用于表示所述關(guān)聯(lián)緩存行是否需要寫回內(nèi)存。
[0012]結(jié)合本發(fā)明第一方面的第一種可能的實(shí)現(xiàn)方式,在本發(fā)明第一方面的第二種可能的實(shí)現(xiàn)方式中,所述緩存控制器根據(jù)所述關(guān)聯(lián)緩存行的訪問次數(shù)從所述關(guān)聯(lián)緩存池中確定待寫回緩存行,包括:
[0013]所述緩存控制器確定所述關(guān)聯(lián)緩存行是否屬于最近最少訪問緩存鏈表的最后M個(gè)緩存行,所述最近最少訪問緩存鏈表用于根據(jù)各緩存行在預(yù)設(shè)時(shí)間內(nèi)的訪問次數(shù)進(jìn)行排序,所述最近最少訪問緩存鏈表的最后M個(gè)緩存行為所述預(yù)設(shè)時(shí)間內(nèi)訪問次數(shù)最少的緩存行,M為正整數(shù);
[0014]若所述關(guān)聯(lián)緩存行屬于所述最近最少訪問緩存鏈表的最后M個(gè)緩存行,則所述緩存控制器確定所述關(guān)聯(lián)緩存行為所述待寫回緩存行。
[0015]結(jié)合本發(fā)明第一方面的第一種可能的實(shí)現(xiàn)方式,在本發(fā)明第一方面的第三種可能的實(shí)現(xiàn)方式中,所述緩存控制器根據(jù)所述關(guān)聯(lián)緩存行的寫回標(biāo)示從所述關(guān)聯(lián)緩存池中確定待寫回緩存行,包括:
[0016]若所述關(guān)聯(lián)緩存行的寫回標(biāo)示表示所述關(guān)聯(lián)緩存行需要寫回內(nèi)存,則所述緩存控制器確定所述關(guān)聯(lián)緩存行為待寫回緩存行。
[0017]結(jié)合本發(fā)明第一方面的第一種可能的實(shí)現(xiàn)方式,在本發(fā)明第一方面的第四種可能的實(shí)現(xiàn)方式中,所述緩存控制器根據(jù)所述關(guān)聯(lián)緩存行的訪問次數(shù)和寫回標(biāo)示從所述關(guān)聯(lián)緩存池中確定待寫回緩存行,包括:
[0018]所述緩存控制器根據(jù)所述關(guān)聯(lián)緩存行的訪問次數(shù)判斷所述關(guān)聯(lián)緩存行是否屬于最近最少訪問緩存鏈表的最后M個(gè)緩存行,所述最近最少訪問緩存鏈表用于根據(jù)各緩存行在預(yù)設(shè)時(shí)間內(nèi)的訪問次數(shù)進(jìn)行排序,所述最近最少訪問緩存鏈表的最后M個(gè)緩存行為所述預(yù)設(shè)時(shí)間內(nèi)訪問次數(shù)最少的緩存行,M為正整數(shù);
[0019]若所述關(guān)聯(lián)緩存行屬于所述最近最少訪問緩存鏈表的最后M個(gè)緩存行,并且所述關(guān)聯(lián)緩存行的寫回標(biāo)示表示所述關(guān)聯(lián)緩存行需要寫回內(nèi)存,則所述緩存控制器確定所述關(guān)聯(lián)緩存行為待寫回緩存行。
[0020]結(jié)合本發(fā)明第一方面的第一種至第四種可能的實(shí)現(xiàn)方式,在本發(fā)明第一方面的第五種可能的實(shí)現(xiàn)方式中,在所述緩存控制器將所述待寫回緩存行對(duì)應(yīng)的數(shù)據(jù)寫回所述內(nèi)存后,所述方法還包括:
[0021]所述緩存控制器將所述待寫回緩存行的寫回標(biāo)示的值置為表示不需要寫回內(nèi)存。
[0022]結(jié)合本發(fā)明第一方面的第一種至第五種可能的實(shí)現(xiàn)方式,在本發(fā)明第一方面的第六種可能的實(shí)現(xiàn)方式中,所述方法還包括:
[0023]所述緩存控制器將每個(gè)緩存行的寫回標(biāo)示的值周期性的置為表示需要寫回內(nèi)存。
[0024]結(jié)合本發(fā)明第一方面的第一種至第五種可能的實(shí)現(xiàn)方式,在本發(fā)明第一方面的第七種可能的實(shí)現(xiàn)方式中,所述寫回標(biāo)示為計(jì)數(shù)器的值,若所述計(jì)數(shù)器的值不小于寫回閾值,則所述寫回標(biāo)示用于表示所述關(guān)聯(lián)緩存行需要寫入內(nèi)存;
[0025]若所述計(jì)數(shù)器的值小于所述寫回閾值,則所述寫回標(biāo)示用于表示所述關(guān)聯(lián)緩存行不需要寫入內(nèi)存。
[0026]結(jié)合本發(fā)明第一方面的第七種可能的實(shí)現(xiàn)方式,在本發(fā)明第一方面的第八種可能的實(shí)現(xiàn)方式中,當(dāng)所述寫回標(biāo)示為計(jì)數(shù)器的值時(shí),所述緩存控制器將所述待寫回緩存行的寫回標(biāo)示的值置為表示不需要寫回內(nèi)存,包括:
[0027]所述緩存控制器將所述計(jì)數(shù)器的值置為零。
[0028]結(jié)合本發(fā)明第一方面的第七種可能的實(shí)現(xiàn)方式,在本發(fā)明第一方面的第九種可能的實(shí)現(xiàn)方式中,若所述計(jì)數(shù)器的值小于所述寫回閾值,所述方法還包括:
[0029]所述緩存控制器將所述計(jì)數(shù)器的值加一。
[0030]結(jié)合本發(fā)明第一方面的第一種至第九種可能的實(shí)現(xiàn)方式,在本發(fā)明第一方面的第十種可能的實(shí)現(xiàn)方式中,所述緩存控制器根據(jù)所述待替換緩存行的地址確定關(guān)聯(lián)緩存池,包括:
[0031]所述緩存控制器根據(jù)所述待替換緩存行的地址確定備用緩存行,所述備用緩存行與所述待替換緩存行屬于同一內(nèi)存行;
[0032]所述緩存控制器判斷所述備用緩存行是否位于所述緩存中;
[0033]若所述備用緩存行位于所述緩存中,則所述緩存控制器判斷所述備用緩存行是否為臟緩存行;
[0034]若所述備用緩存行為臟緩存行,則所述緩存控制器確定所述備用緩存行為關(guān)聯(lián)緩存行。
[0035]結(jié)合本發(fā)明第一方面的第十種可能的實(shí)現(xiàn)方式,在本發(fā)明第一方面的第i^一種可能的實(shí)現(xiàn)方式中,所述緩存控制器根據(jù)所述待替換緩存行的地址確定備用緩存行,包括:
[0036]所述緩存控制器將所述待替換緩存行的地址與第一掩碼相與得到所述待替換緩存行的行地址;
[0037]所述緩存控制器將所述行地址與第二掩碼相與得到所述備用緩存行,所述第二掩碼的初始值為零,每次將所述行地址與所述第二掩碼相與后,對(duì)所述第二掩碼的值加一個(gè)緩存行的大小,直到得到所有的備用緩存行。
[0038]本發(fā)明第二方面提供一種緩存控制器,包括:
[0039]接收模塊,用戶接收內(nèi)存訪問請求;
[0040]查找模塊,用于根據(jù)所述內(nèi)存訪問請求的地址查找緩存;
[0041]第一確定模塊,用于若所述查找模塊在所述緩存中沒有查找到所述內(nèi)存訪問請求的地址,則從所述緩存中確定待替換緩存行;
[0042]第二確定模塊,用于若所述待替換緩存行為臟緩存行,則根據(jù)所述待替換緩存行的地址確定關(guān)聯(lián)緩存池,所述關(guān)聯(lián)緩存池包括至少一個(gè)關(guān)聯(lián)緩存行,所述關(guān)聯(lián)緩存行與所述待替換緩存行屬于同一內(nèi)存行,所述關(guān)聯(lián)緩存行位于所述緩存中,所述關(guān)聯(lián)緩存行為臟緩存行,所述臟緩存行的數(shù)據(jù)被修改過;
[0043]第三確定模塊,用于根據(jù)所述關(guān)聯(lián)緩存行的訪問信息從所述關(guān)聯(lián)緩存池中確定待寫回緩存行;
[0044]讀寫模塊,用于將所述待替換緩存行以及所述待寫回緩存行的地址和數(shù)據(jù)發(fā)送給內(nèi)存控制器,以使所述內(nèi)存控制器根據(jù)所述待替換緩存行以及所述待寫回緩存行的地址將所述待替換緩存行以及所述待寫回緩存行的數(shù)據(jù)寫入內(nèi)存,并將所述內(nèi)存訪問請求所需的數(shù)據(jù)從所述內(nèi)存中讀入所述待替換緩存行的位置。
[0045]結(jié)合本發(fā)明第二方面,在本發(fā)明第二方面的第一種可能的實(shí)現(xiàn)方式中,所述第三確定模塊具體用于:
[0046]根據(jù)所述關(guān)聯(lián)緩存行的訪問次數(shù)和/或?qū)懟貥?biāo)示從所述關(guān)聯(lián)緩存池中確定待寫回緩存行,所述寫回標(biāo)示用于表示所述關(guān)聯(lián)緩存行是否需要寫回內(nèi)存。
[0047]結(jié)合本發(fā)明第二方面的第一種可能的實(shí)現(xiàn)方式,在本發(fā)明第二方面的第二種可能的實(shí)現(xiàn)方式中,所述第三確定模塊在根據(jù)所述關(guān)聯(lián)緩存行的訪問次數(shù)從所述關(guān)聯(lián)緩存池中確定待寫回緩存行時(shí),具體用于:
[0048]確定所述關(guān)聯(lián)緩存行是否屬于最近最少訪問緩存鏈表的最后M個(gè)緩存行,所述最近最少訪問緩存鏈表用于根據(jù)各緩存行在預(yù)設(shè)時(shí)間內(nèi)的訪問次數(shù)進(jìn)行排序,所述最近最少訪問緩存鏈表的最后M個(gè)緩存行為所述預(yù)設(shè)時(shí)間內(nèi)訪問次數(shù)最少的緩存行,M為正整數(shù);
[0049]若所述關(guān)聯(lián)緩存行屬于所述最近最少訪問緩存鏈表的最后M個(gè)緩存行,則確定所述關(guān)聯(lián)緩存行為所述待寫回緩存行。
[0050]結(jié)合本發(fā)明第二方面的第一種可能的實(shí)現(xiàn)方式,