專利名稱:高速緩沖存儲器及其控制方法
技術領域:
本發(fā)明涉及用于提高處理器內存存取速度的高速緩沖存儲器及其控制方法。
背景技術:
近年來,為了縮短對主存儲器的存取時間、提高處理器的處理能力,高速緩沖存儲器被廣泛應用。
當從處理器向高速緩沖存儲器寫入數據時,為了確保主存儲器與高速緩沖存儲器之間數據的一貫性,需要從高速緩沖存儲器向主存儲器寫回。該寫回的控制方式包括透寫(Write Through)方式及回寫(WriteBack)方式。
透寫方式中,當執(zhí)行從處理器向高速緩沖存儲器的寫入命令時,向高速緩沖存儲器和主存儲器兩者寫入。若采用該透寫方式時,每次向高速緩沖存儲器寫入數據時都會發(fā)生回寫損失,因此對存儲器寫入而言,縮短內存存取時間的效果不大。
另一方面,回寫方式是,在執(zhí)行寫入命令時只向高速緩沖存儲器寫入,在因為高速緩存缺失而將臟行(dirty line)馬上要重新置換為新的其它數據之前,從高速緩沖存儲器回寫到主存儲器。這種回寫方式,雖然不是在每次存儲器寫入時發(fā)生回寫損失,但在存儲器讀取及存儲器寫入時發(fā)生高速緩存缺失的情況下,除了加載損失以外,還會發(fā)生回寫損失,因此高速緩存缺失時的損失將增加。這里,加載損失是指從主存儲器向高速緩沖存儲器加載新數據而引起的損失。回寫損失是指,從高速緩沖存儲器向主存儲器寫回數據而引起的損失。
減少這樣的高速緩存缺失損失的已有技術,例如在專利文獻1等中被公開。
根據這種已有技術,在回寫方式的高速緩沖存儲器中,不同于從高速緩沖存儲器中將數據逐出的對主存儲器的通常的寫回處理,而是進行僅將高速緩沖存儲器的數據寫回到主存儲器的寫回處理。后一種處理,首先判定高速緩沖存儲器的一個項目的數據是否為臟,當該數據為臟時,則將該數據寫回主存儲器。然后,確認寫回正常結束,且高速緩沖存儲器上的數據沒有變化,使高速緩存狀態(tài)成為清潔。
這樣,已有技術中的高速緩沖存儲器就減少從高速緩沖存儲器向主存儲器的數據量,提高整體系統(tǒng)的性能。
專利文獻1日本特開平6-309231號公報但是,上述已有技術存在如下問題即使在發(fā)生高速緩存缺失前將臟項目的數據回寫到內存,然而,在剛回寫后向該項目寫入數據的情況下,反而會降低效率。
發(fā)明內容
鑒于上述問題,本發(fā)明的目的在于提供一種高速緩沖存儲器,能夠高效率地減少高速緩存缺失時的回寫損失。
為了達到上述目的,本發(fā)明的高速緩沖存儲器包括賦予單元,對保持行數據的每個高速緩存項目,賦予表示對該高速緩存項目是否可以結束高速緩存的高速緩存結束屬性;選擇單元,選擇被賦予表示可以結束高速緩存的高速緩存結束屬性、且被設置了表示已被寫入的臟標志的高速緩存項目;以及回寫單元,與高速緩存缺失的發(fā)生無關地,將被選擇的高速緩存項目的行數據回寫到內存。
根據該結構,由于在發(fā)生高速緩存缺失前對可以結束高速緩存的高速緩存項目進行回寫,所以在發(fā)生高速緩存缺失時,只發(fā)生加載損失,能減少回寫損失的發(fā)生。由此,能夠提高高速緩沖存儲器的效率,并能提高存取速度。
這里,上述賦予單元也可以采用如下結構,其包括保持單元,保持由處理器指定的地址范圍;搜索單元,搜索保持行數據的高速緩存項目,該行數據屬于由保持單元保持的地址范圍;以及設置單元,對被搜索到的高速緩存項目設置表示可以結束高速緩存的高速緩存結束屬性。
在此,上述搜索單元也可以采用如下結構,其包括第1轉換單元,當由保持單元保持的地址范圍的開頭地址指向行數據的中途時,則將該開頭地址轉換為指向被包含在上述地址范圍內的開頭行的起始行地址;第2轉換單元,當由保持單元保持的地址范圍的末尾地址指向行數據的中途時,則將該末尾地址轉換為指向被包含在上述地址范圍內的末尾行的結束行地址;以及判定單元,判定是否有保持與從上述起始行地址到結束行地址的各行地址相對應的數據的高速緩存項目。
根據該結構,處理器可以與高速緩沖存儲器的行大小、行邊界無關系地,指定任意地址作為應設置高速緩存結束屬性的地址范圍,該高速緩存結束屬性表示可以結束高速緩存。換句話說,由于編程人員和編譯程序就不必考慮行大小及行邊界,因而也無須進行用于回寫的行地址管理,更容易編制程序。
這里,上述高速緩沖存儲器也可以采用如下結構,上述高速緩沖存儲器還包括置換單元,該置換單元在發(fā)生高速緩存缺失時,將被賦予了表示可以結束高速緩存的高速緩存結束屬性的高速緩存項目,作為置換對象進行選擇。
根據該結構,由于在保持存取頻率低的數據的高速緩存項目中設置表示可以結束的高速緩存結束屬性,該高速緩存項目最先被設置,因此可以減少因存取頻率低的數據保留在高速緩沖存儲器而引發(fā)的高速緩存缺失。
在此,上述賦予單元也可以采用如下結構,其包括命令檢測單元,檢測在處理器中執(zhí)行了將表示可以結束高速緩存的高速緩存結束屬性的賦予、和數據的寫入作為命令內容的存儲命令;以及設置單元,在所檢測出的按照該命令進行了寫入的高速緩存項目設置高速緩存結束屬性。
根據該結構,可以利用命令高速緩存結束屬性的賦予和寫入數據的存儲命令,來簡便地設置表示可以結束高速緩存的高速緩存結束。
這里,上述回寫單元也可以采用如下結構當內存總線處于空周期時,上述回寫單元向內存回寫高速緩存項目的數據。
根據該結構,可以進行利用空周期的高效率回寫。
在此,上述高速緩存項目也可以采用如下結構,即上述高速緩存項目中,按構成1個行的多個子行的每個具有臟標志;對于由選擇單元選擇的高速緩存項目,上述回寫單元只回寫臟子行。
根據該結構,只回寫臟子行,因此能高效率地進行回寫。再者,對于本發(fā)明的高速緩沖存儲器的控制方法,也包括與上述相同的單元和作用。
發(fā)明效果如上所述,根據本發(fā)明的高速緩沖存儲器,對以后不會再被寫入的高速緩存項目賦予表示可以結束高速緩存的高速緩存結束屬性,并與高速緩存缺失的發(fā)生無關系,即在發(fā)生高速緩存缺失前,可以將該高速緩存項目回寫。其結果,在發(fā)生高速緩存缺失的情況下,只發(fā)生加載損失,而能減少回寫損失的發(fā)生。由此,能夠提高高速緩沖存儲器的效率,并能提高存取速度。
處理器無需管理用于回寫的行地址,并與高速緩沖存儲器的行大小、行邊界無關系,可以指定任意的地址范圍。
圖1是表示本發(fā)明的第一實施方式的包括處理器、高速緩沖存儲器、內存的系統(tǒng)大致結構的方框圖。
圖2是表示高速緩沖存儲器結構例的方框圖。
圖3是表示高速緩存項目的詳細的位結構的示意圖。
圖4是表示控制部結構的方框圖。
圖5是表示C標志設置部結構例的方框圖。
圖6A表示向起始地址寄存器寫入起始地址的命令的一個例子。
圖6B表示向大小寄存器寫入大小的命令的一個例子。
圖6C表示向指令寄存器寫入指令的命令的一個例子。
圖6D表示指令的一個例子。
圖7表示起始調整器及結束調整器的示意圖。
圖8是表示標志改寫部的C標志設置處理的一個例子的流程圖。
圖9是表示清潔處理部的清潔處理的一個例子的流程圖。
圖10是表示本發(fā)明的第二實施方式的高速緩沖存儲器結構的方框圖。
圖11是表示高速緩存項目的位結構的示意圖。
圖12是表示控制部結構的方框圖。
圖13表示由置換部更新使用標志的例子。
圖14A是表示在弱標志不存在的情況下高速緩存項目被置換的情形的示意圖。
圖14B是表示置換處理中的弱標志W的作用的示意圖。
圖15是表示W標志設置部的W標志設置處理的流程圖。
圖16是表示清潔處理部的清潔處理的流程圖。
圖17是表示置換部的U標志更新處理的流程圖。
圖18是表示置換部的置換處理的流程圖。
符號說明1 處理器2 內存3 高速緩沖存儲器20地址寄存器21內存I/F30解碼器
31a~31d 通路32a~32d 比較器33a~33d 與門電路34 或門電路35 選擇器36 選擇器37 多路分解器38 控制部39 清潔處理部40 C標志設置部41 置換部131b~131d 通路138控制部139清潔處理部140W標志設置部401指令寄存器402起始地址寄存器403大小寄存器404加法器405起始調整器406結束調整器407標志改寫部具體實施方式
(第一實施方式)<總體結構>
圖1是表示本發(fā)明的第一實施方式的包括處理器1、高速緩沖存儲器3、內存2的系統(tǒng)大致結構的方框圖。如圖1所示,本發(fā)明的高速緩沖存儲器3配備在具有處理器1及內存2的系統(tǒng)中。
高速緩沖存儲器3的結構是,按保持高速緩存的單位數據(稱為行數據)的各個高速緩存項目,在該高速緩存項目中保持表示是否可以結束高速緩存的高速緩存結束屬性,并且,與高速緩存缺失是否發(fā)生無關地選擇具有表示可以結束高速緩存的高速緩存結束屬性、且設置有臟標志的高速緩存項目,并將所選擇的高速緩存項目的數據回寫到內存,該臟標志表示從處理器寫入。這里,表示可以結束高速緩存的高速緩存結束屬性,被賦予給例如以后可能不進行寫入的高速緩存項目、和以后可能不被讀寫的高速緩存項目等。
<高速緩沖存儲器的結構>
下面,作為高速緩沖存儲器3的具體例子,說明在四路組聯方式的高速緩沖存儲器中使用了本發(fā)明時的結構。
圖2是表示高速緩沖存儲器3的結構例的方框圖。如該圖所示,高速緩沖存儲器3包括地址寄存器20、內存I/F21、解碼器30、4個通路31a~31d(以下簡稱為通路0~3)、4個比較器32a~32d、4個與門電路33a~33d、或門電路34、選擇器35、36、多路分解器37和控制部38。
地址寄存器20是保持對內存2的存取地址的寄存器。該存取地址是32位。如該圖所示,存取地址從最高位起,依次包括21位的標簽地址、4位的組索引(圖中的SI)、5位的字索引(圖中的WI)。這里,標簽地址指映射到通路的內存中區(qū)域(其大小為組數×塊)。該區(qū)域的大小是由比標簽地址低位的地址位(A10~A0)來規(guī)定的大小,即2k字節(jié),也是1個通路的大小。組索引(SI)指跨通路0~3的多個組的1個。由于組索引為4位,所以該組數是16組。由標簽地址及組索引確定的高速緩存登陸項是置換單位,被存放在高速緩沖存儲器時,被稱為行數據或行。行數據的大小是由比組索引低位的地址位規(guī)定的大小,即128字節(jié)。設1個字為4字節(jié),則1個行數據為32個字。字索引(WI)指構成行數據的多個字中的1個字。地址寄存器20中的最低兩位(A1、A0)在字存取時被忽略。
內存I/F21是用于從高速緩沖存儲器3向內存2回寫數據、或者從內存2向高速緩沖存儲器3加載數據等,從高速緩沖存儲器3對內存2進行存取的I/F解碼器30對組索引的4位進行解碼,從跨4個通路0~3的16個組中選擇1個組。
4個通路0~3是具有相同結構的4個通路,具有4×2k字節(jié)的容量。各通路具有16個高速緩存項目。
圖3表示一個高速緩存項目的詳細位結構。如該圖所示,1個高速緩存項目具有有效標志V0~V3、21位的標簽、128字節(jié)的行數據、高速緩存結束屬性(圖中的C標志)和臟標志D0~D3。
標簽是21位的標簽地址的復制。
行數據是由標簽地址及組索引確定的塊中的128字節(jié)數據的復制,由32字節(jié)的4個子行組成。
有效標志V0~V3對應于4個子行,表示子行是否有效。
高速緩存結束屬性(清潔標志C)表示是否可以結束高速緩存。例如,意味著以后對該高速緩存項目是否還進行寫入。C=0意味著以后可能進行寫入。C=1意味著以后不進行寫入,即意味著如果為臟則應該進行清潔(回寫)。
臟標志D0~D3對應于4個子行,表示是否從處理器向該子行有過寫入,即,雖然子行中存在被高速緩存的數據,但通過寫入該數據與內存中的數據不同,因此是否需要寫回到內存。
比較器32a比較地址寄存器20中的標簽地址和由組索引選擇的組中包含的4個標簽中的通路0的標簽是否一致。關于比較器32b~32c,除了對應于通路31b~31d這點以外,其它都相同。
與門電路33a比較有效標志與比較器32a的比較結果是否一致。設該比較結果為h0。比較結果h0為1時,意味著地址寄存器20中的標簽地址及對應于組索引的行數據存在,即在通路0中命中。比較結果h0為0時,意味著非命中。關于與門電路33b~33d,除了對應于通路31b~31d這點以外,其它都相同。其比較結果h1~h3表示在通路1~3是命中還是非命中。
或門電路34對比較結果h0~h3進行或運算。設該或運算的結果為hit。hit表示是否命中了高速緩沖存儲器。
選擇器35從被選擇的組中的通路0~3的行數據中,選擇命中的通路的行數據。
選擇器36從由選擇器35選擇的32字的行數據中,選擇字索引所表示的1個字。
多路分解器37在將數據寫入高速緩存項目時,向通路0~3中的1個輸出寫入數據。該寫入數據可以以字為單位。
控制部38進行高速緩沖存儲器3整體的控制。尤其是進行C標志的設置和按照C標志的清潔(回寫)。
<控制部的結構>
圖4是表示控制部38結構的方框圖。如該圖所示,控制部38包括清潔處理部39和C標志設置部40。
清潔處理部39搜索被設置為C=1的高速緩存項目,當該高速緩存項目為臟時,進行回寫。
C標志設置部40根據來自處理器1的指令,設置清潔標志C。處理器1向高速緩沖存儲器3發(fā)出指令,該指令指示對已不再進行寫入的高速緩存項目設置清潔標志。
<C標志設置部的構成>
圖5是表示C標志設置部40的結構例的方框圖。如該圖所示,C標志設置部40具有指令寄存器401、起始地址寄存器402、大小寄存器403、加法器404、起始調整器405、結束調整器406、標志改寫部407。
指令寄存器401是可以從處理器1直接存取的寄存器,保持由處理器1寫入的C標志設置指令。在圖6(c)示出向指令寄存器401寫入指令的命令的一個例子。該命令為通常的傳輸指令(mov命令),作為源操作數指定了指令,作為目的操作數指定了指令寄存器(CR)401。在圖6(d)示出指令的一個例子。該指令是表示C標志設置指令的特定代碼。C標志設置指令是,指示向保持與地址范圍對應的數據的高速緩存項目設置C標志的指令,該地址范圍是從被保持在起始地址寄存器402中的開始地址起的、被保持在大小寄存器403中的大小的地址范圍。
起始地址寄存器402是可以從處理器1直接存取的寄存器,保持由處理器1寫入的起始地址。該起始地址表示應設置C標志的地址范圍的起始位置。在圖6(a)示出向起始地址寄存器402寫入起始地址的命令的一個例子。該命令與圖6(c)一樣,也是通常的傳輸指令(mov命令)。
大小寄存器403是可以從處理器1直接存取的寄存器,保持由處理器1寫入的大小。該大小表示從起始地址起的地址范圍。在圖6(b)示出向大小寄存器403寫入大小的命令的一個例子。該命令也與圖6(c)一樣,是通常的傳輸指令(mov命令)。另外,大小的單位可以是字節(jié)數,也可以是行數(高速緩存項目數),只要是預先規(guī)定的單位即可。
加法器404對保持在起始地址寄存器402中的起始地址和保持在大小寄存器403中的大小進行加法運算。運算結果是指向地址范圍結束位置的結束地址。當大小指定為字節(jié)數時,加法器404可將其作為字節(jié)地址進行加法運算,大小指定為行數時,作為行地址進行加法運算即可。
起始調整器405將起始地址調整到行邊界的位置。通過該調整,處理器1可以與行大小及行邊界無關地,指定任意的地址作為起始地址。
結束調整器406將結束地址調整到行邊界的位置。通過該調整,處理器1可以與行大小及行邊界無關地,指定任意的大小作為上述大小。
在圖7示出起始調整器405及結束調整器406的說明圖。該圖中,由處理器1指定的起始地址指向行N的中間任意位置。起始調整器405進行調整,以便指向下一行(N+1)的開頭,并將調整后的地址作為調整起始地址輸出。調整起始地址所指的行稱為起始行。
再者,結束地址指向行M的中間任意位置。結束調整器406進行調整,以便指向上一行(M-1)的開頭,并將調整后的地址作為調整結束地址輸出。調整結束地址所指的行稱為結束行。
此時,從起始行(行(N+1))到結束行(行(M-1))的各行(高速緩存項目)中設置C標志。這樣,起始調整器405及結束調整器406調整到比由處理器1指定的起始地址到結束地址的地址范圍更靠內側,這是因為,在行N與行M的外側部分存在發(fā)生從處理器1寫入的可能。
從調整起始地址所指的行到調整結束地址所指的行(在圖7的例子中是行(N+1)到行(M-1)),如果被登錄到了高速緩沖存儲器3,則標志改寫部407將C標志設置為1。
<C標志設置處理>
圖8是表示標志改寫部407的C標志設置處理的一個例子的流程圖。在指令寄存器401中保持有C標志設置指令的情況下,標志改寫部407一邊依次輸出從起始行到結束行的各行地址,一邊進行循環(huán)1的處理(S82~S86)。標志改寫部407對各行進行相同的處理,因此這里只對1行的處理進行說明。
即,在高速緩沖存儲器3沒有被處理器1存取的期間,標志改寫部407向地址寄存器20輸出行地址(S83),并且使比較器32a~32d比較地址寄存器20的標簽地址與高速緩存項目的標簽,判定是否命中(S84)。進一步,在命中的情況下,標志改寫部407對命中的高速緩存項目把C標志設置為1(S85),在非命中的情況下,由于沒有被登錄到高速緩沖存儲器,不執(zhí)行任何工作。
由此,對于從起始行到結束行的各行,當被登錄到高速緩沖存儲器3的情況下,C標志被設置為1。
<清潔處理>
圖9是表示清潔處理部39的清潔處理的一個例子的流程圖。
如該圖所示,清潔處理部39在循環(huán)1的處理(S900~S913)中,通過依次指定組索引(SI)0~15(S901),對所有16個組進行循環(huán)2的處理。在循環(huán)2的處理(S900~S913)中,清潔處理部39通過讀取組內的通路0~3的C標志(S903),搜索C=1的高速緩存項目(S904)。在循環(huán)3的處理(S905~910)中,清潔處理部39對C=1的高速緩存項目讀取以子行為單位的臟標志(S906),如果是臟(S907),則將該子行的數據寫回內存2(S908),并將該臟標志復位為0(S909)。在該子行數據的寫回中,如循環(huán)4的處理(S920~S923),清潔處理部39在空周期中(S920)逐字寫回(S922)。
這樣,清潔處理部39依次檢驗所有高速緩存項目的C標志,搜索C=1的高速緩存項目,如果是臟,則從高速緩沖存儲器3寫回到內存2。
如上所述,根據本實施方式的高速緩沖存儲器,對屬于由處理器1指定的地址范圍內的高速緩存項目,賦予表示是否可以結束高速緩存的高速緩存結束屬性(C標志),并在發(fā)生高速緩存缺失之前,回寫不會再被寫入的高速緩存項目,因此在高速緩存缺失時,只發(fā)生加載損失,可以減少回寫損失的發(fā)生。由此可以提高高速緩沖存儲器的效率,提高存取速度。
而且,處理器1可以與高速緩沖存儲器的行大小及行邊界無關地指定任意的地址,作為應設置高速緩存結束屬性的地址范圍。由此,編程人員和編譯程序就不必考慮行大小及行邊界,因而也無須進行用于清潔的高速緩存地址管理,更容易編制程序。
而且,在清潔處理中,由于以子行為單位只回寫臟子行,所以與以行為單位回寫相比,可以提高回寫速度。
<變形例>
另外,本發(fā)明的高速緩沖存儲器不限于上述實施方式的結構,還可以有各種變形。下面,對幾個變形例進行說明。
(1)圖5中,C標志設置部40可以采用具有結束地址寄存器的結構,來取代大小寄存器403及加法器404。此時,結束地址寄存器保持由處理器1寫入的結束地址。
(2)也可以采用這樣結構,即處理器1一邊賦予高速緩存結束屬性,一邊執(zhí)行寫入數據的存儲命令;控制部38還具有命令檢測部,一邊賦予高速緩存結束屬性,一邊檢測寫入數據的存儲命令;和標志設置部,進行按照該存儲命令的寫入時,設置C=1。
(3)圖6(a)、6(b)、6(c)所示的各命令,可以通過編譯程序插入程序中。此時,編譯程序在不再進行寫入的程序位置插入上述各命令即可,例如數組的寫入、對壓縮動畫數據進行解碼時的塊數據的寫入等。
(4)也可以采用在高速緩存項目不保持C標志的結構。換句話說,可以采用同時進行圖8所示的C標志設置處理和圖9所示的清潔處理的結構。此時,采用執(zhí)行圖9中的循環(huán)3(S905~S910)的結構即可,來取代在圖8的S85中對高速緩存項目設置C標志的操作。
(5)上述實施方式中,以4路組聯的高速緩沖存儲器為例進行了說明,但通路數既可以是8路也可以是16路,無論幾路都可以。同時,上述實施方式以組數16為例進行了說明,但組數無論幾組都可以。
(6)上述實施方式中,以組相聯的高速緩沖存儲器為例進行了說明,但也可以是全組聯方式的高速緩沖存儲器。
(第二實施方式)第一實施方式說明了使用表示是否還進行寫入的C標志的結構。本實施方式中,說明取代C標志而采用表示是否還使用(是否進行寫入及讀出)的W(弱)標志的結構。
<高速緩沖存儲器的結構>
圖10是表示本發(fā)明的第二實施方式的高速緩沖存儲器結構的方框圖。該圖的高速緩沖存儲器與圖2的結構相比,不同之處在于具有通路131a~131d,取代了通路31a~31d;具有控制部138,取代了控制部38。下面,省略相同點的說明,以不同點為主進行說明。
通路131a與通路31a相比,不同之處在于,各高速緩存項目中刪除了C標志,增加了W標志和U標志。通路131b~131d也相同。
圖11表示高速緩存項目的位結構。1個高速緩存項目保持有效標志V0~V3、21位的標簽、128字節(jié)的行數據、弱標志W、使用標志U及臟標志D0~D3。
其中,弱標志W,對于來自處理器的存取,意味著是否還會使用,對于高速緩沖存儲器的置換控制,意味著可以比其他高速緩存項目更先逐出的最弱的置換對象。由于弱標志W有這兩種含義,在清潔處理和置換處理的兩個處理中都會被參照。
使用標志U表示對該高速緩存項目是否有過存取,在LRU方式的非命中引起的置換時,用于代替4個通路的高速緩存項目中的存取順序數據。更準確地說,使用標志U為1,意味著有過存??;為0,則意味著未有過存取。但1個組內的4個通路的使用標志全部變?yōu)?后,將復位為0。換句話說,使用標志U表示存取的時期是舊還是新的兩個相對的狀態(tài)。即,使用標志U為1的高速緩存項目,意味著與使用標志為0的高速緩存項目相比,它是新受到存取的。
控制部138與控制部38相比,不同之處在于設置W標志,而不是C標志;采用使用標志U,來取代LRU方式中的存取順序信息。
<控制部的構成>
圖12是表示控制部138的結構的方框圖。該圖的控制部138與控制部38相比,不同之處在于具有清潔處理部139和W標志設置部140,來取代清潔處理部39和C標志設置部40,以及增加了置換部41。
清潔處理部139與清潔處理部39相比,不同之處在于參照W標志,而不是參照C標志。其結果,將回寫W=1且臟的高速緩存行。
W標志設置部140根據來自處理器1的指令設置弱標志W。對于已不再進行使用(寫入及讀出)的高速緩存項目,處理器1向高速緩沖存儲器3發(fā)出要求設置弱標志的指令。如果W=1的高速緩存項目是臟,則成為清潔處理的對象,同時,高速緩存缺失時將最先成為置換對象。
置換部41采用以使用標志U為存取順序的偽LRU方式,在高速緩存缺失時進行置換處理,在高速緩沖存儲器被存取時進行使用標志U的更新處理。置換處理時,選擇W=1的高速緩存項目作為最先的置換對象<使用標志U的說明>
圖13表示置換部41的更新使用標志的例子。圖13的上段、中段、下段表示構成跨通路0~3的組N的4個高速緩存項目。4個高速緩存項目右端的1或0分別為使用標志的值。這4個使用標志U記為U0~U3。
在該圖的上段,(U0~U3)=(1、0、1、0),意味著通路0、2的高速緩存項目已被存取,通路1、3的高速緩存項目沒有被存取。
在此狀態(tài)下,在內存存取命中了組N內的通路1的高速緩存項目時,如該圖13的中段所示,被更新為(U0~U3)=(1、1、1、0)。即如實線所示,通路1的使用標志U1被從0更新為1。
而在該圖中段的狀態(tài)下,在內存存取命中了組N內的通路3的高速緩存項目時,如該圖下段所示,被更新為(U0~U3)=(0、0、0、1)。即如實線所示,通路3的使用標志U1被從0更新為1。再者,如虛線所示,除通路3以外的使用標志U0~U2從1更新為0。這樣,就意味著與通路0~2的各高速緩存項目相比,通路3的高速緩存項目是新被存取的。
在高速緩存缺失時不存在W=1的高速緩存項目的情況下,置換部41根據使用標志決定置換對象的高速緩存項目,進行置換。例如,在圖5的上段,置換部41決定以通路1和通路3中的某一個為置換對象,在圖5的中段,決定通路3為置換對象,在圖5的下段,決定通路0~2中的某一個為置換對象。
<弱標志W的說明>
圖14(a)是假定弱標志不存在時的比較例,是表示高速緩存項目被置換的情形的示意圖。在該圖中,與圖13同樣地給出了構成跨通路0~3的組N的4個高速緩存項目。4個高速緩存項目右端的1或0,分別為使用標志的值。同時,只有數據E為存取頻率低的數據,數據A、B、C、D為存取頻率高的數據。
在圖14(a)的第1段的狀態(tài)下,如果處理器1存取數據E,將發(fā)生高速緩存缺失。由于該高速緩存缺失,例如,U=0的高速緩存項目中存取頻率高的數據C的高速緩存項目被置換為存取頻率低的數據E,變?yōu)榈?段的狀態(tài)。
在第2段的狀態(tài)下,處理器1存取數據C時,將發(fā)生高速緩存缺失。由于該高速緩存缺失,U=0的高速緩存項目中存取頻率高的數據D的高速緩存項目被置換為存取頻率高的數據C,變?yōu)榈?段的狀態(tài)。
在第3段的狀態(tài)下,處理器1存取數據D時,將發(fā)生高速緩存缺失。由于該高速緩存缺失,例如,存取頻率高的數據C的高速緩存項目被置換為存取頻率高的數據D,變?yōu)榈?段的狀態(tài)。
同樣,在第4段的狀態(tài)下,使用頻率低的數據E不作為置換對象被選擇,而是保留在高速緩沖存儲器中。
在第5段的狀態(tài)下,使用頻率低的數據E是最舊的(U=0),因此被選擇為置換對象而被逐出。
這樣,在偽LRU方式下(通常的LRU方式也是這樣),根據存取頻率低的數據E,4通路時,最壞會引發(fā)4次高速緩存缺失。
圖14(b)是表示置換處理中的弱標志W的作用的示意圖。
在該圖(b)的第1段的狀態(tài)(與該圖(a)的第1段相同)下,處理器1存取數據E時,發(fā)生高速緩存缺失。由于該高速緩存缺失,例如,從U=0的高速緩存項目中,存取頻率高的數據C的高速緩存項目被置換為存取頻率低的數據E。此時,處理器1在數據E的高速緩存項目中將弱標志W設置為1。這樣,在下次高速緩存缺失時,數據E的高速緩存項目將最先被逐出,成為第2段的狀態(tài)。
在第2段的狀態(tài)下,如果處理器1存取數據C,發(fā)生高速緩存缺失。由于該高速緩存缺失,W=1的高速緩存項目、即存取頻率低的數據E的高速緩存項目被選擇為置換對象,被置換為存取頻率高的數據C,成為第3段的狀態(tài)。
這樣,通過配置弱標志W,可以減少存取頻率低的數據引發(fā)高速緩存缺失的情況。
<W標志設置處理>
圖15是表示W標志設置部140的W標志設置處理的流程圖。W標志設置部140的結構與圖5所示的C標志設置部相同,而且來自處理器1的W標志設置指令也與圖6(a)~6(d)相同。只是,處理器1在W標志設置指令的同時,還指定不再使用(既不寫入也不讀出)的數據的地址范圍。
圖15與圖8相比,不同之處在于具有步驟S 185,取代步驟S85。此外均與圖8的C標志設置處理相同,因此不再重復說明。
步驟S185中,W標志設置部140對S84中命中的高速緩存項目中設置W=1。
<清潔處理>
圖16是表示清潔處理部139的清潔處理的流程圖。該圖與圖9相比,不同之處在于具有S903a、S904a、S911a,取代S903、S904、S911。S903a、S904a、S911a都是只在用W標志替代C標志這一點上不同,除此以外的處理內容均相同,因此不再重復說明。
<U標志更新處理>
圖17是表示置換部41的U標志更新處理的流程圖。該圖中,有效標志為0(無效)的高速緩存項目的使用標志U被初始化為0。
圖17中,置換部41在高速緩存命中的情況下(步驟S61),將在由組索引選擇的組中命中的通路的使用標志U設置為1(步驟S62),讀取該組內的其他通路的使用標志U(步驟S63),并判定讀取的使用標志U是否均為1(步驟S64),如果都不是1則結束,均為1則將其他通路的所有使用標志U均重置為0(步驟S65)。
這樣,置換部41如圖13、圖14(a)(b)中的更新例子那樣地更新使用標志U。
<置換處理>
圖18是表示置換部41的置換處理的流程圖。該圖中,置換部41在內存存取不命中的情況下(步驟S91),讀取由組索引選擇的組中的4個通路的使用標志U及弱標志W(步驟S92),并判定是否存在W=1的通路(步驟S93)。當判定W=1的通路不存在時,則選擇1個U=0的通路(步驟S94)。此時,當有多個使用標志U為0的通路存在時,置換部41將隨機選擇1個。當判定W=1的通路存在時,與U標志的值無關地選擇1個W=1的通路(步驟S95)。此時,當有多個弱標志W為1的通路存在時,置換部41隨機選擇1個。
而且,置換部41以該組中被選擇的通路的高速緩存項目為對象進行置換(步驟S96),置換后將該高速緩存項目的使用標志U初始化為1,弱標志W初始化為0(步驟S97)。另外,此時有效標志V、臟標志D分別被初始化為1、0。
這樣,當W=1的通路不存在時,從使用標志U為0的高速緩存項目中選擇1個置換對象。
而且,當W=1的通路存在時,與使用標志U為0還是1無關地,從W=1的通路的高速緩存項目中選擇1個置換對象。這樣,如圖14(a)、14(b)所示,可以減少因存取頻率低的數據保留在高速緩沖存儲器而引發(fā)的高速緩存缺失。
如以上說明,根據本實施方式的高速緩沖存儲器,通過將弱標志W=1的行作為不再由處理器寫入的行進行清潔,可以減少高速緩存缺失時的回寫損失。
此外,在不再使用的高速緩存項目中設置W=1,W=1的高速緩存項目將被最先選擇為置換對象,因而可以減少因存取頻率低的數據保留在高速緩沖存儲器中而引發(fā)的高速緩存缺失的情況。
同時,由于采用使用1位使用標志的偽LRU方式,取代已有的LRU方式的表示存取順序的數據,作為存取順序數據只需1位標志,因此存取順序數據的數據量小、更新簡便,從而可以縮減硬件規(guī)模。
<變形例>
另外,本發(fā)明的高速緩沖存儲器不限于上述實施方式的結構形式,還可以有各種變形。下面,對幾個變形例進行說明。
(1)還可以采用這樣結構,即不采用使用了使用標志U的偽LRU,而是按每個高速緩存項目對表示4個通路的存取順序的順序數據進行保持及更新,按已有的LRU方式選擇置換對象。此時,與存取順序無關,將W=1的高速緩存項目作為置換對象最先選擇即可。
(2)也可以采用同時具備第一實施方式所示的C標志和本實施方式中的W標志兩者的結構。此時,C標志在清潔處理中使用,W標志則只用于置換對象的選擇即可。這樣,通過C標志,可以讓有可能被讀出且不再被寫入的高速緩存項目,在被清潔后仍保留在高速緩沖存儲器中。不再讀取也不再寫入的高速緩存項目將被清潔,且被選擇為最先的置換對象。通過同時使用C標志和W標志,可以進行更為細致的控制。
(3)上述實施方式中,假定子行的大小為行的大小的1/4,但也可以是1/2、1/8、1/16等其他大小。此時,各高速緩存項目分別保持與子行相同數量的有效標志及臟標志即可。
產業(yè)上利用的可能性本發(fā)明可適用于提高內存存取速度的高速緩沖存儲器及其控制方法,例如,可適用于片內高速緩沖存儲器、片外高速緩沖存儲器、數據高速緩沖存儲器、命令高速緩沖存儲器等。
權利要求
1.一種高速緩沖存儲器,其特征在于,包括賦予單元,對保持行數據的每個高速緩存項目,賦予表示對該高速緩存項目是否可以結束高速緩存的高速緩存結束屬性;選擇單元,選擇被賦予表示可以結束高速緩存的高速緩存結束屬性、且被設置了表示已被寫入的臟標志的高速緩存項目;以及回寫單元,與高速緩存缺失的發(fā)生無關地,將被選擇的高速緩存項目的行數據回寫到內存。
2.如權利要求1所述的高速緩沖存儲器,其特征在于,上述賦予單元包括保持單元,保持由處理器指定的地址范圍;搜索單元,搜索保持行數據的高速緩存項目,該行數據屬于由保持單元保持的地址范圍;以及設置單元,對被搜索到的高速緩存項目設置表示可以結束高速緩存的高速緩存結束屬性。
3.如權利要求2所述的高速緩沖存儲器,其特征在于,上述搜索單元包括第1轉換單元,當由保持單元保持的地址范圍的開頭地址指向行數據的中途時,將該開頭地址轉換為指向被包含在上述地址范圍內的開頭行的起始行地址;第2轉換單元,當由保持單元保持的地址范圍的末尾地址指向行數據的中途時,將該末尾地址轉換為指向被包含在上述地址范圍內的末尾行的結束行地址;以及判定單元,判定是否有保持與從上述起始行地址到結束行地址的各行地址相對應的數據的高速緩存項目。
4.如權利要求2所述的高速緩沖存儲器,其特征在于,上述高速緩沖存儲器還包括置換單元,該置換單元在發(fā)生高速緩存缺失時,將被賦予了表示可以結束高速緩存的高速緩存結束屬性的高速緩存項目,作為置換對象進行選擇。
5.如權利要求1所述的高速緩沖存儲器,其特征在于,上述賦予單元包括命令檢測單元,對在處理器中執(zhí)行了存儲命令的情況進行檢測,該存儲命令以表示可以結束高速緩存的高速緩存結束屬性的賦予、和數據的寫入作為命令內容;以及設置單元,在所檢測出的按照該命令進行了寫入的高速緩存項目設置高速緩存結束屬性。
6.如權利要求1所述的高速緩沖存儲器,其特征在于當內存總線處于空周期時,上述回寫單元向內存回寫高速緩存項目的數據。
7.如權利要求1所述的高速緩沖存儲器,其特征在于上述高速緩存項目中,構成1行的多個子行的每個具有臟標志;對于由選擇單元選擇的高速緩存項目,上述回寫單元只回寫臟子行。
8.一種高速緩沖存儲器的控制方法,其特征在于,包括賦予步驟,對保持行數據的各個高速緩存項目,賦予表示是否可以結束高速緩存的高速緩存結束屬性;選擇步驟,選擇被賦予表示可以結束高速緩存的高速緩存結束屬性、且被設置了表示已被寫入的臟標志的高速緩存項目;以及,回寫步驟,與高速緩存缺失的發(fā)生無關地,將被選擇的高速緩存項目的行數據回寫到內存。
全文摘要
本發(fā)明的高速緩沖存儲器包括C標志設置部(40),對保持行數據的各個高速緩存項目,賦予表示在該高速緩存項目中以后是否不進行寫入的清潔標志C;清潔處理部(39),將被賦予表示不進行寫入的清潔標志C、且設置有表示已被寫入的臟標志D的高速緩存項目的行數據回寫到內存。
文檔編號G06F12/12GK1882923SQ20048003410
公開日2006年12月20日 申請日期2004年11月2日 優(yōu)先權日2003年11月18日
發(fā)明者岡林葉月, 中西龍?zhí)? 田中哲也 申請人:松下電器產業(yè)株式會社