專利名稱:高速緩存裝置與高速緩存數(shù)據(jù)存取方法
技術(shù)領(lǐng)域:
本發(fā)明關(guān)于一種高速緩存裝置與高速緩存數(shù)據(jù)存取方法,特別是指一種在一高速緩存中鎖定并存取一關(guān)鍵數(shù)據(jù)的裝置與方法。
背景技術(shù):
現(xiàn)今一高速緩存(Cache Memory)已經(jīng)被廣泛應(yīng)用于一處理單元(如一中央處理器(CPU))中,當(dāng)該處理單元欲取得一目標(biāo)數(shù)據(jù)時,若是該目標(biāo)數(shù)據(jù)已存放于該高速緩存中,則可以有效提升該處理單元的存取效率。參閱圖1,一處理單元11包括一處理器111與一高速緩存112。該處理器111由該高速緩存112中存取一目標(biāo)數(shù)據(jù),當(dāng)該處理器111可以從該高速緩存112中取得該目標(biāo)數(shù)據(jù)時,稱之為快取命中(Cache hit),反之,若無法從該高速緩存112中取得該目標(biāo)數(shù)據(jù)時,稱之為快取漏失(Cachemiss);當(dāng)發(fā)生快取漏失時,該高速緩存112會從一主存儲器(Mainmemory) 12中取得該目標(biāo)數(shù)據(jù)。在美國公告專利號7228386所提出的一現(xiàn)有技術(shù)(以下稱為第一現(xiàn)有技術(shù))中,其針對一對應(yīng)多個存取路徑(Way)的高速緩存,利用一路徑開啟緩存器(Way enableregister)以控制每一個存取路徑的開啟或關(guān)閉。舉例來說,參閱圖2,假設(shè)一高速緩存41具有分別對應(yīng)索引SI S8的八個儲存組,每一儲存組具有分別對應(yīng)四個存取路徑Wl W4的四個儲存組件,該四個存取路徑Wl W4分別稱為一第一存取路徑Wl、一第二存取路徑W2、一第三存取路徑W3,及一第四存取路徑W4。該路徑開啟緩存器42大小為四位,且每一位用以表示開啟或關(guān)閉一相對應(yīng)存取路徑,也就是說,假設(shè)該路徑開啟緩存器42的值為1110,且第O至第3位分別對應(yīng)到第一至第四存取路徑Wl W4,第O位為O代表該第一存取路徑Wl被關(guān)閉,因此不能再覆寫其它數(shù)據(jù)在該第一存取路徑Wl所對應(yīng)的這些儲存組件中。一般而言,這樣的目的在于當(dāng)有一關(guān)鍵數(shù)據(jù)(Critical data)被存放于該第一存取路徑Wl所對應(yīng)的一儲存組件中時,且該關(guān)鍵數(shù)據(jù)是一使用頻率較高的數(shù)據(jù),為避免該關(guān)鍵數(shù)據(jù)被覆寫造成下次需讀取時,必須重新由該主存儲器處取得,進(jìn)而導(dǎo)致處理單元讀取數(shù)據(jù)的效率下降,因而關(guān)閉該第一存取路徑Wl的寫入功能。然而,在該第一存取路徑Wl所對應(yīng)的這些儲存組件中不一定全部都已存放關(guān)鍵數(shù)據(jù),舉例來說,如圖2所示,假設(shè)索引S8所對應(yīng)的該儲存組中對應(yīng)于該第一存取路徑Wl的儲存組件(以下以儲存組件(Wl,S8)來表示,其余類推),以及儲存組件(Wl,S7)、(Wl,S5)、(Wl, S4)、(Wl, S3)皆各自儲存一關(guān)鍵數(shù)據(jù),因?yàn)樵撀窂介_啟緩存器42的第O位為0,因此,該第一存取路徑Wl所對應(yīng)的其它儲存組件,如(W1,S6)、(Wl,S2)、(Wl,SI),無法再存放其它數(shù)據(jù)。換句話說,將造成該第一存取路徑Wl的利用率下降形成浪費(fèi),同時,也可能會使得該高速緩存的快取命中率(Cache hit rate)下降,因此,該第一現(xiàn)有技術(shù)仍具有相當(dāng)大的改善空間。此外,在美國公告專利號6047358所提出的另一現(xiàn)有技術(shù)(以下稱為第二現(xiàn)有技術(shù))中,其利用多個緩存器設(shè)定一鎖定范圍(Lock range)的大小(L0CK_SIZE)、該鎖定范圍的對應(yīng)地址(LOCK_ADDRESS)等信息,進(jìn)而于該高速緩存裝置上設(shè)定出該鎖定范圍的空間以供儲存鎖定的數(shù)據(jù)使用。然而,該第二現(xiàn)有技術(shù)完成設(shè)定該鎖定范圍的空間之后,必需要執(zhí)行一初始化程序(Initialization procedure)以鎖定多個關(guān)鍵數(shù)據(jù)在其中;此外,若是這些關(guān)鍵數(shù)據(jù)的數(shù)據(jù)量大小大于該高速緩存裝置時,該第二現(xiàn)有技術(shù)無法設(shè)定一大于該高速緩存裝置的儲存空間大小的鎖定范圍,因此,其仍然存在著許多問題仍待進(jìn)一步改善。
發(fā)明內(nèi)容
因此,本發(fā)明的目的之一即在提供一種可以解決上述問題的高速緩存數(shù)據(jù)存取方法。于是,本發(fā)明高速緩存數(shù)據(jù)存取方法適用于與一處理器及一主存儲器電連接的高速緩存裝置。該高速緩存裝置包括具有多個儲存組的一數(shù)據(jù)儲存單元。每一儲存組具有分別對應(yīng)多個存取路徑的多個儲存組件。該高速緩存數(shù)據(jù)存取方法包含下列步驟接收由該處理器所傳送的一目標(biāo)地址;根據(jù)該目標(biāo)地址判斷該數(shù)據(jù)儲存單元中是否存有一目標(biāo)數(shù)據(jù);接收該目標(biāo)數(shù)據(jù);根據(jù)該目標(biāo)地址所對應(yīng)的該儲存組的這些儲存組件是否被標(biāo)示為有效的以及該目標(biāo)地址是否介于一鎖定范圍來選取一犧牲路徑;以及將該目標(biāo)數(shù)據(jù)寫入該犧牲路徑中。而本發(fā)明的目的之二在于提供一種可以解決上述問題的高速緩存裝置。于是,本發(fā)明高速緩存裝置耦接一處理器及一主存儲器,其包含一控制單元,用以界定在該主存儲器中的一鎖定范圍;一數(shù)據(jù)儲存單元,具有多個儲存組,每一儲存組具有分別對應(yīng)多個存取路徑的多個儲存組件 '及一關(guān)鍵旗標(biāo)單元,用于標(biāo)示每一儲存組件中的數(shù)據(jù)是否介于該鎖定范圍中;其中,該鎖定范圍大于該數(shù)據(jù)儲存單元的大小。
圖1是一現(xiàn)有技術(shù)的系統(tǒng)方塊圖;圖2是該現(xiàn)有技術(shù)控制存取路徑的示意圖;圖3是本發(fā)明的高速緩存裝置的較佳實(shí)施例的系統(tǒng)方塊圖;圖4是本發(fā)明的高速緩存裝置的較佳實(shí)施例的一說明范例;圖5是本發(fā)明的高速緩存數(shù)據(jù)存取方法的較佳實(shí)施例的流程圖;圖6是本發(fā)明的高速緩存數(shù)據(jù)存取方法的較佳實(shí)施例的犧牲路徑選擇程序的流程圖;圖7是本發(fā)明的高速緩存數(shù)據(jù)存取方法的較佳實(shí)施例的第一犧牲路徑選擇子程序的流程圖;圖8是本發(fā)明的高速緩存數(shù)據(jù)存取方法的較佳實(shí)施例的第二犧牲路徑選擇子程序的流程圖;圖9是本發(fā)明的高速緩存數(shù)據(jù)存取方法的較佳實(shí)施例的第三犧牲路徑選擇子程序的流程圖;圖10是本發(fā)明的高速緩存數(shù)據(jù)存取方法的較佳實(shí)施例的說明范例;圖11是本發(fā)明的高速緩存數(shù)據(jù)存取方法的較佳實(shí)施例的說明范例(續(xù));及圖12是本發(fā)明的高速緩存數(shù)據(jù)存取方法的另一實(shí)施例。主要組件符號說明11 處理單元111處理器 112高速緩存12 主存儲器41 高速緩存42 路徑開啟緩存器50 處理器51 主存儲器502 510步驟514 516子步驟518步驟8 高速緩存數(shù)據(jù)存取方法81 88 步驟831 833子步驟71 73 子步驟711 713子步驟721 723子步驟731 735子步驟9 高速緩存裝置91 有效旗標(biāo)單元92 寫回旗標(biāo)單元93 取代優(yōu)先權(quán)單元94 關(guān)鍵旗標(biāo)單元95標(biāo)簽地址儲存單元96 數(shù)據(jù)儲存單元97控制單元971鎖定范圍起始位置緩存器972鎖定范圍結(jié)束位置緩存器973關(guān)鍵路徑開啟緩存器974控制器
具體實(shí)施例方式有關(guān)本發(fā)明的前述及其它技術(shù)內(nèi)容、特點(diǎn)與功效,在以下配合參考附圖的較佳實(shí)施例的詳細(xì)說明中,將可清楚的呈現(xiàn)。高速緩存裝置參閱圖3,本發(fā)明高速緩存裝置9的一較佳實(shí)施例,適用于與一處理器50及一主存儲器51電連接,且接收一由該處理器50所傳送的具有一標(biāo)簽(Tag)字段及一索引(Index)字段的目標(biāo)地址,其包含一有效旗標(biāo)單元91、一寫回旗標(biāo)單元92、一取代優(yōu)先權(quán)單元93、一關(guān)鍵旗標(biāo)單元94、一標(biāo)簽地址儲存單元95、一數(shù)據(jù)儲存單元96,及一控制單元97。該控制單元97包括一鎖定范圍起始地址緩存器(Lock range top register)971、一鎖定范圍結(jié)束地址緩存器(Lock range base register)972、一關(guān)鍵路徑開啟緩存器(Critical way enable register) 973,及一控制器 974。該鎖定范圍起始地址緩存器971與鎖定范圍結(jié)束地址緩存器972用以界定在該主存儲器51中的一鎖定范圍,且與這些現(xiàn)有技術(shù)最大不同的是,該鎖定范圍可被設(shè)定成一大于該高速緩存裝置9的儲存空間的大小的范圍。該關(guān)鍵路徑開啟緩存器973用以標(biāo)示多個存取路徑中的每一者是否為鎖定的,也就是不能再覆寫其它數(shù)據(jù)。在本實(shí)施例中,該數(shù)據(jù)儲存單元96是一數(shù)據(jù)存儲器(Data memory),其用以儲存欲儲存在該高速緩存裝置9中的數(shù)據(jù),該數(shù)據(jù)儲存單元96具有多個儲存組,且每一儲存組具有分別對應(yīng)這些存取路徑的多個儲存組件。該有效旗標(biāo)單元91是一有效旗標(biāo)內(nèi)存(Valid bit memory),其每一位用以標(biāo)示一相對應(yīng)的儲存組件中的數(shù)據(jù)是否為有效的,一般而言,其值為I時代表相對應(yīng)的數(shù)據(jù)被標(biāo)示為有效的,也即有被使用,而其值為O時則代表相對應(yīng)的資料為無效的。該寫回旗標(biāo)單元92是一寫回內(nèi)存(Dirty bit memory),其每一位用以標(biāo)示一相對應(yīng)的儲存組件中的數(shù)據(jù)是否為寫回的,一般而言,其值為I時代表相對應(yīng)的數(shù)據(jù)被標(biāo)示為寫回的,也就是須寫回至主存儲器51中,其值為O時則代表相對應(yīng)的數(shù)據(jù)不須寫回至主存儲器51中。該取代優(yōu)先權(quán)單元93是一最近最少使用內(nèi)存(LRUmemory),用以標(biāo)示每一儲存組件中的數(shù)據(jù)的取代順位,其根據(jù)一最近最少使用算法(LRUalgorithm)進(jìn)行排序,也即,當(dāng)有新的數(shù)據(jù)要儲存時,被標(biāo)示為第一順位的數(shù)據(jù)將優(yōu)先被取代。該關(guān)鍵旗標(biāo)單元94是一關(guān)鍵旗標(biāo)內(nèi)存(Critical memory),其每一位用以表示一相對應(yīng)之儲存組件中的數(shù)據(jù)是否為關(guān)鍵的,一般而言,其值為I時代表相對應(yīng)的數(shù)據(jù)被標(biāo)示為關(guān)鍵的,也就是其為在鎖定范圍內(nèi)的關(guān)鍵數(shù)據(jù),其值為O時則代表相對應(yīng)的數(shù)據(jù)為非關(guān)鍵數(shù)據(jù)。該標(biāo)簽地址儲存單元95是一標(biāo)簽內(nèi)存(Tag memory),其用以標(biāo)示每一儲存組件中的數(shù)據(jù)在該主存儲器51中的地址。參閱圖4,假設(shè)該數(shù)據(jù)儲存單元96具有分別對應(yīng)索引SI S16的十六個儲存組,每一儲存組具有分別對應(yīng)四個存取路徑Wl W4的四個儲存組件,因此,該數(shù)據(jù)儲存單元96具有4X16個儲存組件。相似的,該有效旗標(biāo)單元91、該寫回旗標(biāo)單元92、該取代優(yōu)先權(quán)單元93、該關(guān)鍵旗標(biāo)單元94與該標(biāo)簽地址儲存單元95也各自具有分別對應(yīng)該4X 16個儲存組件的4X 16個儲存空間,因此,該4X 16個儲存空間也可通過索引SI S16及存取路徑Wl W4來尋址。如上所述的高速緩存裝置9,經(jīng)適當(dāng)組配后得以完成一高速緩存數(shù)據(jù)存取方法,現(xiàn)說明該高速緩存數(shù)據(jù)存取方法如下。高速緩存數(shù)據(jù)存取方法聯(lián)合參閱圖3與圖5,本發(fā)明的高速緩存數(shù)據(jù)存取方法8的一較佳實(shí)施例,適用于上述高速緩存裝置9,其包含下列步驟步驟81是該控制器974根據(jù)該目標(biāo)地址及該關(guān)鍵旗標(biāo)單元94,判斷該數(shù)據(jù)儲存單元96中是否存在一儲存組件存有一目標(biāo)數(shù)據(jù),也就是判斷是否快取命中,如果判斷結(jié)果為是,則流程前進(jìn)到步驟87,如果判斷結(jié)果為否,則流程前進(jìn)到步驟82。在本實(shí)施例中,該控制器974判斷該關(guān)鍵旗標(biāo)單元94對應(yīng)于該目標(biāo)地址的索引字段的這些儲存空間所標(biāo)示的地址中,是否存在一地址等于該目標(biāo)地址的標(biāo)簽字段,如果是,表示與該地址所對應(yīng)的該儲存組件存有該目標(biāo)數(shù)據(jù)。步驟82是該控制器974由該主存儲器51讀取該目標(biāo)地址所對應(yīng)的目標(biāo)數(shù)據(jù)。在本實(shí)施例中,該控制器974是根據(jù)該目標(biāo)地址的標(biāo)簽字段由該主存儲器51讀取該目標(biāo)數(shù)據(jù)。步驟83是該控制器974執(zhí)行一犧牲路徑選擇程序,以選擇這些存取路徑中的一者作為一犧牲路徑。
步驟84是該控制器974將步驟82所讀取的該目標(biāo)數(shù)據(jù)寫入該目標(biāo)地址的索引字段所對應(yīng)的該儲存組中對應(yīng)于該犧牲路徑的一儲存組件中。步驟85是該控制器974更新該取代優(yōu)先權(quán)單元93,以將該目標(biāo)地址的索引字段所對應(yīng)的該儲存組中對應(yīng)于該犧牲路徑的該儲存組件的取代順序后移。值得說明的是,在本實(shí)施例中,該取代優(yōu)先權(quán)單元93是根據(jù)一最近最少使用算法進(jìn)行排序的更新,且該最近最少使用算法為相關(guān)領(lǐng)域人士所熟知的技藝,因此在此不多作贅述,但在本發(fā)明中,該取代優(yōu)先權(quán)單元93之排序更新方式并不以此為限。步驟86是該控制器974更新該有效旗標(biāo)單元91及該寫回旗標(biāo)單元92,且在該目標(biāo)地址的標(biāo)簽字段介于該鎖定范圍中時,更新該關(guān)鍵旗標(biāo)單元94。流程結(jié)束。在本實(shí)施例中,更新該有效旗標(biāo)單元91、該寫回旗標(biāo)單元92及該關(guān)鍵旗標(biāo)單元94的方式是將該目標(biāo)地址的索引字段所對應(yīng)的該儲存組中對應(yīng)于該犧牲路徑的該儲存組件分別標(biāo)示為有效的、寫回的及關(guān)鍵的。步驟87是該控制器974由該數(shù)據(jù)儲存單元96讀取該目標(biāo)地址所對應(yīng)的該目標(biāo)數(shù)據(jù)。步驟88是該控制器974更新該取代優(yōu)先權(quán)單元93,以將該目標(biāo)地址所對應(yīng)的該儲存組件的取代順序后移。流程結(jié)束。需注意的是,在本實(shí)施例中,是先執(zhí)行步驟82,之后才執(zhí)行步驟83,但在其它實(shí)施例中,可以是先執(zhí)行步驟83,之后才執(zhí)行步驟82,但也可以是同時執(zhí)行步驟82、83。值得一提的是,在該高速緩存數(shù)據(jù)存取方法中,最重要的是如何有效選擇該犧牲路徑以儲存該目標(biāo)數(shù)據(jù),并進(jìn)一步提升該高速緩存裝置9的快取命中率,因此,在步驟83中如何選取該犧牲路徑將至為關(guān)鍵,現(xiàn)說明如下。聯(lián)合參閱圖3與圖6,該犧牲路徑選擇程序具有以下子步驟子步驟831是該控制器974根據(jù)該有效旗標(biāo)單元91,判斷該目標(biāo)地址的索引字段所對應(yīng)的該儲存組的多個儲存組件是否均被標(biāo)示為有效的,如果判斷結(jié)果為是,則流程前進(jìn)到子步驟832,如果判斷結(jié)果為否,則流程前進(jìn)到子步驟73。子步驟832是該控制器974判斷該目標(biāo)地址的標(biāo)簽字段是否介于該鎖定范圍中,如果判斷結(jié)果為是,則流程前進(jìn)到子步驟71,如果判斷結(jié)果為否,則流程前進(jìn)到子步驟72。子步驟71是該控制器974執(zhí)行一第一犧牲路徑選擇子程序,以選擇該犧牲路徑。接著流程前進(jìn)到子步驟833。子步驟72是該控制器974執(zhí)行一第二犧牲路徑選擇子程序,以選擇該犧牲路徑。接著流程前進(jìn)到子步驟833。子步驟73是該控制器974執(zhí)行一第三犧牲路徑選擇子程序,以選擇該犧牲路徑。該犧牲路徑選擇程序結(jié)束。子步驟833是該控制器974根據(jù)該寫回旗標(biāo)單元92,當(dāng)該目標(biāo)地址的索引字段所對應(yīng)的該儲存組中對應(yīng)于該犧牲路徑的該儲存組件被標(biāo)示為寫回的時,將該儲存組件中的數(shù)據(jù)寫回至該主存儲器51。該犧牲路徑選擇程序結(jié)束。聯(lián)合參閱圖3與圖7,該第一犧牲路徑選擇子程序包括以下子步驟子步驟711是該控制器974根據(jù)該關(guān)鍵旗標(biāo)單元94及該關(guān)鍵路徑開啟緩存器973,判斷該目標(biāo)地址的索引字段所對應(yīng)的該儲存組中對應(yīng)于被標(biāo)示為鎖定的所有存取路徑的所有儲存組件是否均被標(biāo)示為關(guān)鍵的,如果判斷結(jié)果為是,則流程前進(jìn)到子步驟712,如果判斷結(jié)果為否,則流程前進(jìn)到子步驟713。子步驟712是該控制器974選擇這些存取路徑中的一者作為該犧牲路徑,該犧牲路徑?jīng)]被標(biāo)示為鎖定的。該第一犧牲路徑選擇子程序結(jié)束。在本實(shí)施例中,當(dāng)這些存取路徑中有多個存取路徑可被選擇作為該犧牲路徑時,該控制器974會根據(jù)該取代優(yōu)先權(quán)單元93進(jìn)行選擇。子步驟713是該控制器974選擇這些存取路徑中的一者作為該犧牲路徑,該犧牲路徑被標(biāo)示為鎖定的,且對應(yīng)于該目標(biāo)地址的索引字段所對應(yīng)的該儲存組中沒被標(biāo)示為關(guān)鍵的一儲存組件。該第一犧牲路徑選擇子程序結(jié)束。聯(lián)合參閱圖3與圖8,該第二犧牲路徑選擇子程序包括以下子步驟子步驟721是該控制器974根據(jù)該關(guān)鍵旗標(biāo)單元94及該關(guān)鍵路徑開啟緩存器973,判斷該目標(biāo)地址的索引字段所對應(yīng)的該儲存組中對應(yīng)于被標(biāo)示為鎖定的所有存取路徑的所有儲存組件是否均被標(biāo)示為關(guān)鍵的,如果判斷結(jié)果為是,則流程前進(jìn)到子步驟722,如果判斷結(jié)果為否,則流程前進(jìn)到子步驟723。子步驟722是該控制器974選擇這些存取路徑中的一者作為該犧牲路徑,該犧牲路徑?jīng)]被標(biāo)示為鎖定的。該第二犧牲路徑選擇子程序結(jié)束。子步驟723是該控制器974選擇這些存取路徑中的一者作為該犧牲路徑,該犧牲路徑對應(yīng)于該目標(biāo)地址的索引字段所對應(yīng)的該儲存組中沒被標(biāo)示為關(guān)鍵的一儲存組件。該第二犧牲路徑選擇子程序結(jié)束。聯(lián)合參閱圖3與圖9,該第三犧牲路徑選擇子程序包括以下子步驟子步驟731是該控制器974判斷該目標(biāo)地址的標(biāo)簽字段是否介于該鎖定范圍中,如果判斷結(jié)果為是,則流程前進(jìn)到子步驟732,如果判斷結(jié)果為否,流程前進(jìn)到子步驟735。子步驟732是該控制器974根據(jù)該關(guān)鍵旗標(biāo)單元94及該關(guān)鍵路徑開啟緩存器973,判斷該目標(biāo)地址的索引字段所對應(yīng)的該儲存組中對應(yīng)于被標(biāo)示為鎖定的所有存取路徑的所有儲存組件是否均被標(biāo)示為關(guān)鍵的,如果判斷結(jié)果為是,則流程前進(jìn)到子步驟733,如果判斷結(jié)果為否,流程前進(jìn)到子步驟734。子步驟733是該控制器974選擇這些存取路徑中的一者作為該犧牲路徑,該犧牲路徑?jīng)]被標(biāo)示為鎖定的,且對應(yīng)于該目標(biāo)地址的索引字段所對應(yīng)的該儲存組中沒被標(biāo)示為有效的一儲存組件。該第三犧牲路徑選擇子程序結(jié)束。子步驟734是該控制器974選擇這些存取路徑中的一者作為該犧牲路徑,該犧牲路徑被標(biāo)示為鎖定的,且對應(yīng)于該目標(biāo)地址的索引字段所對應(yīng)的該儲存組中沒被標(biāo)示為有效的一儲存組件。該第三犧牲路徑選擇子程序結(jié)束。子步驟735是該控制器974選擇這些存取路徑中的一者作為該犧牲路徑,該犧牲路徑對應(yīng)于該目標(biāo)地址的索引字段所對應(yīng)的該儲存組中沒被標(biāo)示為有效的一儲存組件。該第三犧牲路徑選擇子程序結(jié)束。舉例來說,聯(lián)合參閱圖3與圖10,假設(shè)該控制器974根據(jù)該目標(biāo)地址的索引字段,選取該數(shù)據(jù)儲存單元96中相對應(yīng)的一儲存組(例如索引S15所對應(yīng)的儲存組),且假設(shè)該關(guān)鍵路徑開啟緩存器973中相對應(yīng)的值為0011,代表存取路徑Wl、W2被標(biāo)示為鎖定的,而存取路徑W3、W4沒被標(biāo)示為鎖定的,并假設(shè)該有效旗標(biāo)單元91中相對應(yīng)的值為0000,代表儲存組件(wi,S15)、(W2,S15)、(W3,S15)、(W4,S15)沒被標(biāo)示為有效的,且該關(guān)鍵旗標(biāo)單元94中相對應(yīng)的值為0000,代表儲存組件(Wl,S15)、(W2,S15)、(W3,S15)、(W4,S15)沒被標(biāo)示為關(guān)鍵的。假設(shè)現(xiàn)在要寫入一組目標(biāo)數(shù)據(jù)的順序如下C1、NC1、NC2、NC3、NC4、C2、NC5、C3及NC6,其中,C代表該目標(biāo)數(shù)據(jù)為一關(guān)鍵數(shù)據(jù),而NC代表該目標(biāo)數(shù)據(jù)為一非關(guān)鍵數(shù)據(jù)。當(dāng)該控制器974要寫入該目標(biāo)數(shù)據(jù)Cl時,根據(jù)子步驟831 (見圖6),由于儲存組件(Wl, S15)、(W2,S15)、(W3,S15)、(W4,S15)并非全部被標(biāo)示為有效的,因此流程前進(jìn)到子步驟73 (見圖6)。根據(jù)子步驟731 (見圖9),由于該目標(biāo)數(shù)據(jù)Cl是一關(guān)鍵數(shù)據(jù)(其目標(biāo)地址的標(biāo)簽字段介于鎖定范圍中),因此流程前進(jìn)到子步驟732 (見圖9)。根據(jù)子步驟732,由于儲存組件(Wl,S15)、(W2,S15)皆沒被標(biāo)示為關(guān)鍵的(其所儲存的數(shù)據(jù)未介于鎖定范圍中),因此流程前進(jìn)到子步驟734 (見圖9)。根據(jù)子步驟734,由于存取路徑Wl、W2被標(biāo)示為鎖定的,且儲存組件(Wl,S15)、(W2,S15)皆沒被標(biāo)示為有效的,因此存取路徑W1、W2中的任一者可被選擇作為該犧牲路徑,假設(shè)存取路徑Wl被選擇作為該犧牲路徑。接著,根據(jù)步驟84(見圖5),該目標(biāo)數(shù)據(jù)Cl被寫入儲存組件(W1,S15)中,如圖10(a)所示。接著,根據(jù)步驟86(見圖5),儲存組件(Wl,S15)被標(biāo)示為有效的、關(guān)鍵的。當(dāng)該控制器974要寫入該目標(biāo)數(shù)據(jù)NCl時,根據(jù)子步驟831 (見圖6),由于儲存組件(Wl,S15)、(W2,S15)、(W3,S15)、(W4,S15)并非全部被標(biāo)示為有效的,因此流程前進(jìn)到子步驟73 (見圖6)。根據(jù)子步驟731 (見圖9),由于該目標(biāo)數(shù)據(jù)NCl是一非關(guān)鍵數(shù)據(jù),因此流程前進(jìn)到子步驟735 (見圖9)。根據(jù)子步驟735,由于儲存組件(W2,S15)、(W3,S15)、(W4,S15)沒被標(biāo)示為有效的,因此存取路徑W2、W3、W4中的任一者可被選擇作為該犧牲路徑,假設(shè)存取路徑W2被選擇作為該犧牲路徑。接著,根據(jù)步驟84 (見圖5),該目標(biāo)數(shù)據(jù)NCl被寫入儲存組件(W2,S15)中,如圖10(b)所示。接著,根據(jù)步驟86(見圖5),儲存組件(W2,S15)被標(biāo)示為有效的。相似于存放該目標(biāo)數(shù)據(jù)NCl的過程,該目標(biāo)數(shù)據(jù)NC2被寫入儲存組件(W3,S15)中,如圖10(c)所示,且儲存組件(W3,S15)被標(biāo)示為有效的,該目標(biāo)數(shù)據(jù)NC3被寫入儲存組件(W4,S15)中,如圖10(c)所示,且儲存組件(W4, S15)被標(biāo)示為有效的。到目前為止,儲存組件(Wl,S15)、(W2, S15)、(W3, S15)、(W4, S15)皆被標(biāo)示為有效的。當(dāng)該控制器974要寫入該目標(biāo)數(shù)據(jù)NC4時,根據(jù)子步驟831 (見圖6),由于儲存組件(Wl,S15)、(W2,S15)、(W3,S15)、(W4,S15)皆被標(biāo)示為有效的,因此流程前進(jìn)到子步驟832 (見圖6)。根據(jù)子步驟832,由于該目標(biāo)數(shù)據(jù)NC4是一非關(guān)鍵數(shù)據(jù),因此流程前進(jìn)到子步驟72 (見圖6)。根據(jù)子步驟721 (見圖8),由于儲存組件(W1,S15)、(W2,S15)并非全部被標(biāo)示為關(guān)鍵的,因此流程前進(jìn)到子步驟723 (見圖8)。根據(jù)子步驟723,由于儲存組件(W2,S15)、(W3,S15)、(W4,S15)沒被標(biāo)示為關(guān)鍵的,因此存取路徑W2、W3、W4中的任一者可被選擇作為該犧牲路徑,假設(shè)存取路徑W2被選擇作為該犧牲路徑。接著,根據(jù)步驟84 (見圖5),該目標(biāo)數(shù)據(jù)NC4被寫入儲存組件(W2,S15)中,如圖10(d)所示。接著,根據(jù)步驟86(見圖5),儲存組件(W2,S15)被標(biāo)示為有效的。聯(lián)合參閱圖3與圖11,當(dāng)該控制器974要寫入該目標(biāo)數(shù)據(jù)C2時,根據(jù)子步驟
831(見圖6),由于儲存組件(ffl,S15)、(W2, S15)、(W3, S15)、(W4, S15)皆被標(biāo)示為有效的,因此流程前進(jìn)到子步驟832 (見圖6)。根據(jù)子步驟832,由于該目標(biāo)數(shù)據(jù)C2是一關(guān)鍵數(shù)據(jù),因此流程前進(jìn)到子步驟71 (見圖6)。根據(jù)子步驟711 (見圖7),由于儲存組件(Wl,S15)、(W2,S15)并非全部被標(biāo)示為關(guān)鍵的,因此流程前進(jìn)到子步驟713(見圖7)。根據(jù)子步驟713,由于存取路徑W1、W2被標(biāo)示為鎖定的,儲存組件(W2,S15)沒被標(biāo)示為關(guān)鍵的,因此存取路徑W2可被選擇作為該犧牲路徑。接著,根據(jù)步驟84 (見圖5),該目標(biāo)數(shù)據(jù)C2被寫入儲存組件(W2,S15)中,如圖11(a)所示。接著,根據(jù)步驟86(見圖5),儲存組件(W2,S15)被標(biāo)示為有效的、關(guān)鍵的。到目前為止,儲存單元(Wl,S15)、(W2,S15)皆被標(biāo)示為關(guān)鍵的。當(dāng)該控制器974要寫入該目標(biāo)數(shù)據(jù)NC5時,根據(jù)子步驟831 (見圖6),由于儲存組件(Wl,S15)、(W2,S15)、(W3,S15)、(W4,S15)皆被標(biāo)示為有效的,因此流程前進(jìn)到子步驟832 (見圖6)。根據(jù)子步驟832,由于該目標(biāo)數(shù)據(jù)NC5是一非關(guān)鍵數(shù)據(jù),因此,流程前進(jìn)到子步驟72 (見圖6)。根據(jù)子步驟721(見圖8),由于儲存組件(W1,S15)、(W2,S15)皆被標(biāo)示為關(guān)鍵的,因此流程前進(jìn)到子步驟722 (見圖8)。根據(jù)子步驟722,由于存取路徑W3、W4沒被標(biāo)示為鎖定的,因此存取路徑W3、W4中的任一者可被選擇作為該犧牲路徑,假設(shè)存取路徑W3被選擇作為該犧牲路徑。接著,根據(jù)步驟84 (見圖5),該目標(biāo)數(shù)據(jù)NC5被寫入儲存組件(W3,S15)中,如圖11(b)所示。接著,根據(jù)步驟86(見圖5),儲存組件(W3,S15)被標(biāo)示為有效的。當(dāng)該控制器974要寫入該目標(biāo)數(shù)據(jù)C3時,根據(jù)子步驟831 (見圖6),由于儲存組件(Wl,S15)、(W2,S15)、(W3,S15)、(W4,S15)皆被標(biāo)示為有效的,因此流程前進(jìn)到子步驟832 (見圖6)。根據(jù)子步驟832,由于該目標(biāo)數(shù)據(jù)C3是一關(guān)鍵數(shù)據(jù),因此流程前進(jìn)到子步驟71 (見圖6)。根據(jù)子步驟711 (見圖7),由于儲存組件(Wl,S15)、(W2,S15)皆被標(biāo)示為關(guān)鍵的,因此流程前進(jìn)到子步驟712 (見圖7)。根據(jù)子步驟712,由于存取路徑W3、W4沒被標(biāo)示為鎖定的,因此存取路徑W3、W4中的任一者可被選擇作為該犧牲路徑,假設(shè)存取路徑W4被選擇作為該犧牲路徑。接著,根據(jù)步驟84(見圖5),該目標(biāo)數(shù)據(jù)C3被寫入儲存組件(W4,S15)中,如圖11(c)所示。接著,根據(jù)步驟86(見圖5),儲存組件(W4,S15)被標(biāo)示為有效的、關(guān)鍵的。當(dāng)該控制器974要寫入該目標(biāo)數(shù)據(jù)NC6時,根據(jù)子步驟831 (見圖6),由于儲存組件(Wl,S15)、(W2,S15)、(W3,S15)、(W4,S15)皆被標(biāo)示為有效的,因此流程前進(jìn)到子步驟
832(見圖6)。根據(jù)子步驟832,由于該目標(biāo)數(shù)據(jù)NC6是一非關(guān)鍵數(shù)據(jù),因此流程前進(jìn)到子步驟72 (見圖6)。根據(jù)子步驟721(見圖8),由于儲存組件(W1,S15)、(W2,S15)皆被標(biāo)示為關(guān)鍵的,因此流程前進(jìn)到子步驟722 (見圖8)。根據(jù)子步驟722,由于存取路徑W3、W4沒被標(biāo)示為鎖定的,因此存取路徑W3、W4中的任一者可被選擇作為該犧牲路徑,假設(shè)存取路徑W3被選擇作為該犧牲路徑。接著,根據(jù)步驟84(見圖5),該目標(biāo)數(shù)據(jù)NC6被寫入儲存組件(W3, S15)中,如圖11(d)所示。接著,根據(jù)步驟86 (見圖5),儲存組件(W3,S15)被標(biāo)示為有效的。請參考圖3與圖12,其為根據(jù)本發(fā)明的另一實(shí)施例的一種高速緩存數(shù)據(jù)存取方法,其適用于與一處理器50及一主存儲器51電連接的高速緩存裝置9,該高速緩存裝置9包括一控制單元97、一關(guān)鍵旗標(biāo)單元94及具有多個儲存組的一數(shù)據(jù)儲存單元96,每一儲存組具有分別對應(yīng)多個存取路徑的多個儲存組件,該控制單元97用以界定在該主存儲器中的一鎖定范圍,該關(guān)鍵旗標(biāo)單元94用于標(biāo)示每一儲存組件中的數(shù)據(jù)是否介于該鎖定范圍中,該高速緩存數(shù)據(jù)存取方法包含下列步驟步驟502 :該控制單元97接收由該處理器50所傳送的一目標(biāo)地址;步驟504 :該控制單元97根據(jù)該目標(biāo)地址判斷該數(shù)據(jù)儲存單元96中是否存有一目標(biāo)數(shù)據(jù);步驟506 :該控制單元97接收該目標(biāo)數(shù)據(jù);步驟508 :該控制單元97根據(jù)該目標(biāo)地址所對應(yīng)的該儲存組的這些儲存組件是否被標(biāo)示為有效的以及該目標(biāo)地址是否介于一鎖定范圍來選取一犧牲路徑;以及步驟510 :該控制單元97將該目標(biāo)數(shù)據(jù)寫入該犧牲路徑中。較佳地,該鎖定范圍大于該數(shù)據(jù)儲存單元96的大小。較佳地,在步驟508中,該控制單元97還根據(jù)該目標(biāo)地址所對應(yīng)的該儲存組中對應(yīng)于被標(biāo)示為鎖定的存取路徑的所有儲存組件是否被標(biāo)示為關(guān)鍵的來選取該犧牲路徑。較佳地,步驟508包括以下子步驟子步驟514 :該控制單元97選擇一被標(biāo)示為鎖定的存取路徑作為該犧牲路徑,其中,該存取路徑對應(yīng)于該目標(biāo)地址所對應(yīng)的該儲存組中沒被標(biāo)示為關(guān)鍵的一儲存組件。較佳地,步驟508包括以下子步驟子步驟516 :該控制單元97選擇一被標(biāo)示為鎖定的存取路徑作為該犧牲路徑,其中該存取路徑對應(yīng)于該目標(biāo)地址所對應(yīng)的該儲存組中沒被標(biāo)示為有效的一儲存組件。較佳地,該高速緩存數(shù)據(jù)存取方法還包括以下步驟步驟518 :當(dāng)該目標(biāo)地址介于該鎖定范圍時,該控制單元97將該儲存組件標(biāo)示為關(guān)鍵的。綜上所述,上述實(shí)施例利用該關(guān)鍵旗標(biāo)單元94與該關(guān)鍵路徑開啟緩存器973配合,當(dāng)該關(guān)鍵路徑開啟緩存器973鎖定部分存取路徑時,通過該關(guān)鍵旗標(biāo)單元94的標(biāo)示,仍可以對鎖定存取路徑內(nèi)儲存非關(guān)鍵數(shù)據(jù)或尚未使用的儲存組件進(jìn)行存取,因此,可以大幅改善如第一現(xiàn)有技術(shù)中因鎖定部分存取路徑以保留這些關(guān)鍵數(shù)據(jù)后其間剩余的儲存組件皆無法再利用的問題,同時,上述實(shí)施例也可有效提升快取命中率;此外,由于沒被鎖定的存取路徑內(nèi)所儲存的關(guān)鍵資料可被覆寫,所以該鎖定范圍可以大于該高速緩存的儲存空間的大小,避免如第二現(xiàn)有技術(shù)那樣,當(dāng)該鎖定范圍超出該外取內(nèi)存的儲存范圍時,需重新設(shè)定這些相關(guān)緩存器,以及重設(shè)該鎖定范圍所造成使用上的困難,同時,上述實(shí)施例也不需要任何初始化程序,因此,可以有效提高使用效率。故確實(shí)能達(dá)成本發(fā)明的目的。以上所述者僅為本發(fā)明的較佳實(shí)施例而已,當(dāng)不能以此限定本發(fā)明實(shí)施的范圍,即但凡依本發(fā)明申請專利范圍及發(fā)明說明內(nèi)容所作的簡單的等效變化與修飾,皆仍屬本發(fā)明專利涵蓋的范圍內(nèi)。
權(quán)利要求
1.一種高速緩存數(shù)據(jù)存取方法,適用于與一處理器及一主存儲器電連接的一高速緩存裝置,所述高速緩存裝置包括具有多個儲存組的一數(shù)據(jù)儲存單元,每一儲存組具有分別對應(yīng)多個存取路徑的多個儲存組件,所述高速緩存數(shù)據(jù)存取方法包含下列步驟 接收由所述處理器所傳送的一目標(biāo)地址; 根據(jù)所述目標(biāo)地址判斷所述數(shù)據(jù)儲存單元中是否存有一目標(biāo)數(shù)據(jù); 接收所述目標(biāo)數(shù)據(jù); 根據(jù)所述目標(biāo)地址所對應(yīng)的所述儲存組的所述多個儲存組件是否被標(biāo)示為有效的以及所述目標(biāo)地址是否介于一鎖定范圍來選取一犧牲路徑;以及 將所述目標(biāo)數(shù)據(jù)寫入所述犧牲路徑中。
2.根據(jù)權(quán)利要求1所述的高速緩存數(shù)據(jù)存取方法,其中,所述鎖定范圍大于所述數(shù)據(jù)儲存單元的大小。
3.根據(jù)權(quán)利要求1所述的高速緩存數(shù)據(jù)存取方法,其中 還根據(jù)所述目標(biāo)地址所對應(yīng)的所述儲存組中對應(yīng)于被標(biāo)示為鎖定的存取路徑的所有儲存組件是否被標(biāo)示為關(guān)鍵的來選取所述犧牲路徑。
4.根據(jù)權(quán)利要求3所述的高速緩存數(shù)據(jù)存取方法,其中,選取所述犧牲路徑的步驟包括以下子步驟 選擇一被標(biāo)示為鎖定的存取路徑作為所述犧牲路徑,其中,所述存取路徑對應(yīng)于所述目標(biāo)地址所對應(yīng)的所述儲存組中沒被標(biāo)示為關(guān)鍵的一儲存組件。
5.根據(jù)權(quán)利要求4所述的高速緩存數(shù)據(jù)存取方法,還包括以下步驟 當(dāng)所述目標(biāo)地址介于所述鎖定范圍時,將所述儲存組件標(biāo)示為關(guān)鍵的。
6.根據(jù)權(quán)利要求3所述的高速緩存數(shù)據(jù)存取方法,其中,選取所述犧牲路徑的步驟包括以下子步驟 選擇一被標(biāo)示為鎖定的存取路徑作為所述犧牲路徑,其中,所述存取路徑對應(yīng)于所述目標(biāo)地址所對應(yīng)的所述儲存組中沒被標(biāo)示為有效的一儲存組件。
7.一種高速緩存裝置,耦接一處理器及一主存儲器,其包含 一控制單元,用以界定在所述主存儲器中的一鎖定范圍; 一數(shù)據(jù)儲存單元,具有多個儲存組,每一儲存組具有分別對應(yīng)多個存取路徑的多個儲存組件 '及 一關(guān)鍵旗標(biāo)單元,用于標(biāo)示每一儲存組件中的數(shù)據(jù)是否介于所述鎖定范圍中; 其中,所述鎖定范圍大于所述數(shù)據(jù)儲存單元的大小。
8.根據(jù)權(quán)利要求7所述的高速緩存裝置,其中,當(dāng)所述控制單元接收由所述處理器所傳送的一目標(biāo)地址,且所述數(shù)據(jù)儲存單元未儲存有對應(yīng)所述目標(biāo)地址的一目標(biāo)數(shù)據(jù)時,根據(jù)所述目標(biāo)地址所對應(yīng)的所述儲存組的所述多個儲存組件是否被標(biāo)示為有效的以及所述目標(biāo)地址是否介于所述鎖定范圍來從所述多個存取路徑選取一犧牲路徑,并將所述目標(biāo)數(shù)據(jù)寫入所述犧牲路徑。
9.根據(jù)權(quán)利要求8所述的高速緩存裝置,其中,所述控制單元還根據(jù)所述目標(biāo)地址所對應(yīng)的所述儲存組中對應(yīng)于被標(biāo)示為鎖定的存取路徑的所有儲存組件是否被標(biāo)示為關(guān)鍵的來選取所述犧牲路徑。
10.根據(jù)權(quán)利要求9所述的高速緩存裝置,其中,所述控制單元選擇一被標(biāo)示為鎖定的存取路徑作為所述犧牲路徑,所述存取路徑對應(yīng)于所述目標(biāo)地址所對應(yīng)的所述儲存組中沒被標(biāo)示為關(guān)鍵的所述儲存組件。
11.根據(jù)權(quán)利要求10所述的高速緩存裝置,其中,當(dāng)所述目標(biāo)地址介于所述鎖定范圍時,所述控制單元將所述儲存組件標(biāo)示為關(guān)鍵的。
12.根據(jù)權(quán)利要求9所述的高速緩存裝置,其中,所述控制單元選擇一被標(biāo)示為鎖定的存取路徑作為所述犧牲路徑,其中,所述存取路徑對應(yīng)于所述目標(biāo)地址所對應(yīng)的所述儲存組中沒被標(biāo)示為有效的所述儲存組件。
全文摘要
本發(fā)明提供了高速緩存裝置和高速緩存數(shù)據(jù)存取方法,該高速緩存數(shù)據(jù)存取方法適用于與一處理器及一主存儲器電連接的高速緩存裝置,該高速緩存裝置包括具有多個儲存組的一數(shù)據(jù)儲存單元,每一儲存組具有分別對應(yīng)多個存取路徑的多個儲存組件,該高速緩存數(shù)據(jù)存取方法包含下列步驟接收由該處理器所傳送的一目標(biāo)地址;根據(jù)該目標(biāo)地址判斷該數(shù)據(jù)儲存單元中是否存有一目標(biāo)數(shù)據(jù);接收該目標(biāo)數(shù)據(jù);根據(jù)該目標(biāo)地址所對應(yīng)的該儲存組的這些儲存組件是否被標(biāo)示為有效的以及該目標(biāo)地址是否介于一鎖定范圍來選取一犧牲路徑;以及將該目標(biāo)數(shù)據(jù)寫入該犧牲路徑中。
文檔編號G06F12/08GK103019954SQ20111028412
公開日2013年4月3日 申請日期2011年9月22日 優(yōu)先權(quán)日2011年9月22日
發(fā)明者盧彥儒, 黃朝瑋 申請人:瑞昱半導(dǎo)體股份有限公司