欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

高速緩沖存儲器及其控制方法

文檔序號:6655382閱讀:191來源:國知局
專利名稱:高速緩沖存儲器及其控制方法
技術領域
本發(fā)明涉及用于提高處理器內(nèi)存訪問速度的高速緩沖存儲器及其控制方法。
背景技術
近幾年,在微處理器領域,例如有由SRAM(靜態(tài)隨機存儲器StaticRandom Access Memory)所構(gòu)成的小容量的、高速的、高速緩沖存儲器,將這樣的高速緩沖存儲器設置在微處理器內(nèi)部,或設置在其周邊,通過將數(shù)據(jù)的一部分存儲到高速緩沖存儲器,從而提高微處理器的內(nèi)存訪問速度。
為了提高高速緩存的效率(提高命中率、減少高速緩存谷值延誤時間),在高速緩存故障(未命中)發(fā)生之前,有預加載(pre-load)(或預取(pre-fetch))技術,該技術是把將要使用的數(shù)據(jù)預先填充到高速緩存內(nèi)的技術(例如,專利文獻1)。
在以往的預取技術中,將含有地址的線加載到高速緩存中,該地址是由預取命令指定的。據(jù)此,試圖降低高速緩存故障。
專利文獻1日本特開平7-295882號公報然而,通過上述以往的技術,例如,通過軟件在循環(huán)的外側(cè)進行一次性的預取的情況下,由于預先在高速緩存中確保了在循環(huán)中所必要的所有的數(shù)據(jù)區(qū)域,當高速緩存的容量小時,除此之外所必要的數(shù)據(jù)被逐出高速緩存,從而發(fā)生高速緩存故障。并且,數(shù)據(jù)的高速緩存結(jié)束后,在循環(huán)的外側(cè)進行一次性的無效化等情況下,由于到循環(huán)處理結(jié)束為止,通過這些動作不能使高速緩存為空,而導致高速緩存的容量不足,發(fā)生高速緩存故障。
而且,將由軟件所進行高速緩存操作的命令插入到循環(huán)中的情況下,進行高速緩存操作的地址需要在循環(huán)中由軟件來管理。即,由于進行高速緩存操作的命令需要在循環(huán)中描述,因此發(fā)生性能的低下。
再者,向存儲器的訪問狀況由硬件來監(jiān)視,在由硬件自動地進行高速緩存操作的情況下,若不進行正確的預測則將發(fā)生徒勞的轉(zhuǎn)送,或者,若沒有來自軟件的正確的信息,則將失去高速緩存上的數(shù)據(jù)和外部存儲器上的數(shù)據(jù)的匹配性,因此,通過硬件的預測來進行上述的操作是困難的。

發(fā)明內(nèi)容
本發(fā)明的目的是提供一種高速緩沖存儲器系統(tǒng),根據(jù)由處理器預先設定的信息,硬件對處理器的程序動作的狀況進行監(jiān)視,并同步以適當?shù)亩〞r對高速緩存進行操作。
為了達到上述目的,本發(fā)明的高速緩沖存儲器系統(tǒng),其特征在于,包括條件生成單元,生成條件,該條件與處理器的狀態(tài)有關;判斷單元,判斷當前的處理器的狀態(tài)是否滿足上述條件;地址生成單元,生成成為操作對象的地址;以及操作單元,在上述判斷單元判斷為滿足條件的情況下,利用由上述地址生成單元所生成的地址,對高速緩沖存儲器進行操作。
在此,可以是上述條件生成單元在上述判斷單元判斷為滿足上述條件的情況下,生成新的條件。
據(jù)此構(gòu)成,由于當處理器的動作狀態(tài)成為滿足條件時對高速緩存進行操作,因此,可以與處理器的動作的進行狀況同步,對高速緩沖存儲器進行操作。并且,由于未涉及到軟件,因此,對處理器不產(chǎn)生負荷,從而可以高效率地使高速緩存動作,且不會招致性能的劣化。
在此,也可以是上述條件生成單元生成條件,該條件與處理器內(nèi)的特定的寄存器的值有關。也可以是上述特定寄存器為程序計數(shù)器。
據(jù)此構(gòu)成,可以將存儲器訪問地址或程序讀取地址作為上述條件,從而能夠監(jiān)視處理器的狀態(tài)。
在此,也可以是上述條件生成單元,將向特定的地址范圍內(nèi)的存儲器訪問以及向特定的地址范圍外的存儲器訪問中的某一個作為上述條件來生成。
并且,也可以是上述條件生成單元,將處理器執(zhí)行特定命令作為上述條件來生成。
在此,也可以是上述條件生成單元,通過對當前的條件實施特定的運算,來生成上述新的條件。
并且,也可以是上述條件生成單元將存儲器訪問地址作為條件來生成;在上述判斷單元判斷為滿足條件的情況下,通過對當前的條件加上常數(shù),來生成上述新的條件。
在此,也可以是上述常數(shù)為增量值或減量值以及地址的差分值中的某一個,該增量值或減量值為由處理器所執(zhí)行的附有后增量的加載/存儲命令中的增量值或減量值,該地址的差分值為由處理器所執(zhí)行的2次的加載/存儲命令中的差分值。
在此,也可以是上述條件生成單元生成多個條件;上述判斷單元,判斷是否滿足所有的多個條件。
并且,也可以是上述條件生成單元生成多個條件;上述判斷單元,判斷是否滿足多個條件中的某一個。
在此,也可以是上述操作單元包括數(shù)據(jù)判斷單元,在上述判斷單元判斷為滿足條件時,判斷數(shù)據(jù)是否被保存在高速緩沖存儲器中,該數(shù)據(jù)是與由上述地址生成單元所生成的地址相對應的數(shù)據(jù);選擇單元,在判斷為未被保存的情況下,選擇高速緩沖存儲器中的線;回寫單元,當上述所選擇的線有效且為臟,則進行回寫;轉(zhuǎn)送單元,將與上述地址對應的數(shù)據(jù)從存儲器中轉(zhuǎn)送到回寫后所選擇的線上;以及注冊單元,將上述地址作為標簽,注冊到上述所選擇的線上。
據(jù)此構(gòu)成,可以與監(jiān)視處理器的動作狀況同步,以適當?shù)亩〞r進行高速緩沖存儲器的預取。
在此,也可以是上述操作單元包括數(shù)據(jù)判斷單元,在上述判斷單元判斷為滿足條件時,判斷數(shù)據(jù)是否被保存在高速緩沖存儲器中,該數(shù)據(jù)是與由上述地址生成單元所生成的地址相對應的數(shù)據(jù);選擇單元,在判斷為未被保存的情況下,選擇高速緩沖存儲器中的線;回寫單元,當上述被選擇的線有效且為臟,則進行回寫;注冊單元,從存儲器中不將數(shù)據(jù)轉(zhuǎn)送到所選擇的線上,而將上述生成的地址作為標簽,注冊到所選擇的線上。
據(jù)此構(gòu)成,可以不必將數(shù)據(jù)轉(zhuǎn)送到高速緩沖存儲器的線上,而對數(shù)據(jù)進行確保(在此稱為觸摸),且該確保是可以與監(jiān)視處理器的動作狀況同步,且以適當?shù)亩〞r進行的。
在此,也可以是上述操作單元包括數(shù)據(jù)判斷單元,在上述判斷單元判斷為滿足條件時,判斷數(shù)據(jù)是否被保存在高速緩沖存儲器中,該數(shù)據(jù)是與由上述地址生成單元所生成的地址相對應的數(shù)據(jù);選擇單元,在判斷為被保存的情況下,選擇高速緩沖存儲器中保存了數(shù)據(jù)的線;以及回寫單元,當所選擇的線有效且為臟,則進行回寫。
據(jù)此構(gòu)成,可以與監(jiān)視處理器的動作狀況同步,以適當?shù)亩〞r進行高速緩沖存儲器的線數(shù)據(jù)的回寫(高速緩存結(jié)束)。
在此,也可以是上述操作單元包括數(shù)據(jù)判斷單元,在上述判斷單元判斷為滿足條件時,判斷數(shù) 否被保存在高速緩沖存儲器中,該數(shù)據(jù)是與由上述地址生成單元所生成的地址相對應的數(shù)據(jù);選擇單元,在判斷為被保存的情況下,選擇高速緩沖存儲器中保存了數(shù)據(jù)的線;以及無效化單元,對所選擇的線進行無效化。
據(jù)此構(gòu)成,可以與監(jiān)視處理器的動作狀況同步,以適當?shù)亩〞r進行高速緩沖存儲器的線的無效化。
在此,也可以是上述操作單元包括數(shù)據(jù)判斷單元,在上述判斷單元判斷為滿足條件時,判斷數(shù)據(jù)是否被保存在高速緩沖存儲器中,該數(shù)據(jù)是與由上述地址生成單元所生成的地址相對應的數(shù)據(jù);選擇單元,在判斷為被保存的情況下,選擇高速緩沖存儲器中保存了數(shù)據(jù)的線;以及變更單元,對于表示線的訪問順序的順序信息,變更所選擇的線的訪問順序。
據(jù)此構(gòu)成,可以與監(jiān)視處理器的動作狀況同步,以適當?shù)亩〞r進行高速緩沖存儲器的線的訪問順序信息的變更。據(jù)此,或換而言之根據(jù)LRU,可以使高速緩存的置換順序提早或延遲。
在此,也可以是由上述條件生成單元生成作為上述條件的存儲器地址;上述操作單元還包括調(diào)整單元,在由上述條件生成單元所生成的存儲器地址示出線的中途的情況下,通過進行調(diào)整以便示出該線的開頭、下一個線的開頭、以及上一個線的開頭的某一個,來生成地址。
據(jù)此構(gòu)成,處理器不論在地址升順訪問的情況下,還是在地址降順訪問的情況下,均可以適當?shù)厮愠鱿乱粋€所需要的線的地址。
并且,有關本發(fā)明的高速緩沖存儲器的控制方法,具有與上述同樣的單元及作用。
根據(jù)本發(fā)明的高速緩沖存儲器,可以與處理器的動作的進行狀況同步,對高速緩沖存儲器進行操作。并且,由于沒有涉及到軟件,因此不對處理器產(chǎn)生負荷,從而高效率地使高速緩沖存儲器動作,且不會招致性能的劣化。
例如,處理器根據(jù)付有后增量的加載命令在順序地進行存儲器訪問的情況下,可以高效率地進行預取。并且,處理器根據(jù)付有后增量的存儲命令在順序地寫入數(shù)據(jù)的情況下,可以刪除從存儲器將數(shù)據(jù)加載到高速緩沖存儲器的懲罰,從而可以進一步高效率地觸摸(確保)高速緩存項。
并且,處理器根據(jù)付有后增量的存儲命令在順序地寫入數(shù)據(jù)的情況下,由于按照處理器的存儲命令的進行狀況,預測存儲結(jié)束的線,并在預測后的線上設定高速緩存操作結(jié)束屬性或無效化屬性,因此,在處理器無需識別高速緩沖存儲器的線大小或線邊界,也可以在高速緩沖存儲器中預測應該回寫的線,從而可以高效率地進行清理(回寫)或進行緩存項的解除(無效化)。
而且,處理器根據(jù)付有后增量的加載命令在順序地讀出數(shù)據(jù)的情況下,在保持讀出結(jié)束的線數(shù)據(jù)的高速緩存項中設定置換屬性,由于作為馬上將要選擇的置換對象,因此可以降低由訪問次數(shù)低的數(shù)據(jù)殘留在高速緩沖存儲器中所導致的緩存故障。
發(fā)明效果根據(jù)本發(fā)明的高速緩沖存儲器,可以與處理器的動作的進行狀況同步,操作高速緩沖存儲器。并且,由于未涉及軟件,因此不會對處理器產(chǎn)生負荷,從而可以高效率地使高速緩沖存儲器動作,且不會招致性能的劣化。并且,可以將存儲器訪問地址或程序讀取地址作為上述條件來監(jiān)視處理器的狀態(tài)。
例如,不將數(shù)據(jù)轉(zhuǎn)送到高速緩沖存儲器的線上,而是進行確保(在此稱為觸摸),且該確??梢耘c監(jiān)視處理器的動作狀況同步,以適當?shù)亩〞r來進行。
并且,高速緩沖存儲器的線數(shù)據(jù)的回寫(高速緩存結(jié)束),可以與監(jiān)視處理器的動作狀況同步,以適當?shù)亩〞r來進行。高速緩沖存儲器的線的無效化也可以在監(jiān)視處理器的動作狀況的同時以適當?shù)亩〞r來進行。
而且,高速緩沖存儲器的線的訪問順序信息也可以與監(jiān)視處理器的動作狀況同步,以適當?shù)亩〞r來變更。據(jù)此,也就是說根據(jù)LRU,可以使高速緩存的置換順序提早或延遲。
并且,不論處理器在地址升順進行訪問的情況下,還是在地址降順進行訪問的情況下,均可以適當?shù)厮愠鱿乱粋€必要的線的地址。


圖1是示出在本發(fā)明的實施方式1中,包括處理器、高速緩沖存儲器、存儲器的系統(tǒng)的簡要構(gòu)成的方框圖。
圖2是示出高速緩沖存儲器的構(gòu)成例的方框圖。
圖3是示出預測處理部的構(gòu)成例的方框圖。
圖4(a)是示出在開始地址寄存器中寫入開始地址的命令的一示例圖。
圖4(b)是示出在大小寄存器中寫入大小的命令的一示例圖。
圖4(c)是示出在指令寄存器中寫入指令的命令的一示例圖。
圖4(d)是示出指令的一示例圖。
圖5是示出開始調(diào)整器及結(jié)束調(diào)整器的說明圖。
圖6(a)是示出根據(jù)預取部進行預測預取的說明圖。
圖6(b)是示出根據(jù)觸摸部進行預測觸摸的說明圖。
圖7是示出在預取部進行預測預取處理一例的流程圖。
圖8是示出在觸摸部進行預測觸摸處理一例的流程圖。
圖9是示出在本發(fā)明的實施方式2中高速緩沖存儲器的構(gòu)成的方框圖。
圖10是示出高速緩存項的位構(gòu)成的圖。
圖11是示出由控制部所使用標志的更新例的圖。
圖12(a)是示出在弱標志不存在的情況下,高速緩存項被替換的樣子的圖。
圖12(b)是示出在替換處理中弱標志W(wǎng)的作用的說明圖。
圖13是示出預測處理部的構(gòu)成的方框圖。
圖14(a)是示出根據(jù)C設定部進行C標志設定處理的說明圖。
圖14(b)是示出根據(jù)W設定部進行W標志設定處理的說明圖。
圖15是示出在C標志設定部進行C標志設定處理一例的流程圖。
圖16是示出在W標志設定部進行W標志設定處理一例的流程圖。
圖17是示出在控制部進行清理處理的一例的流程圖。
圖18是示出在控制部進行U標志更新處理的流程圖。
圖19是示出在控制部進行替換處理的流程圖。
符號說明1處理器2存儲器3高速緩沖存儲器20地址寄存器21存儲器I/F30解碼器31a~31d通路32a~32d比較器33a~33d AND電路(與電路)34OR電路(或電路)35選擇器36選擇器37分路器38控制部39預測處理部131a通路131a~131d通路131b~131d通路138控制部139預測處理部401指令寄存器402開始地址寄存器403大小寄存器404加法器405a、405b開始調(diào)整器406a、406b結(jié)束調(diào)整器
407訪問地址寄存器408預測值寄存器409常數(shù)寄存器410選擇器411加法器412比較器413執(zhí)行部413a執(zhí)行部414預取部415觸摸部416C設定部417W設定部具體實施方式
(實施方式1)<整體構(gòu)成>
圖1是示出本發(fā)明的實施方式1中的包括處理器1、高速緩沖存儲器2、存儲器3的系統(tǒng)的簡要構(gòu)成的方框圖。如此圖所示,本發(fā)明的高速緩沖存儲器3被具備在具有處理器1和存儲器2的系統(tǒng)中。
高速緩沖存儲器3的構(gòu)成是,按照由處理器1所指定的條件,進行預測預取。所謂預測預取是指根據(jù)由處理器1所進行的內(nèi)存訪問的進行狀況,預測下一個應該預取的線地址,將預測的線地址的數(shù)據(jù)在高速緩沖存儲器中進行預取。并且,由處理器1所指定的條件是指地址范圍、在進行順序存取時的地址的增量值或減量值、或者訪問方向(地址的升順或降順)等。預測預取適于處理器順序地進行內(nèi)存訪問的情況。
而且,高速緩沖存儲器3的構(gòu)成是,按照由處理器1所指定的條件,進行預測觸摸。所謂預測觸摸是指根據(jù)由處理器1所進行的內(nèi)存訪問的進行狀況,預測下一個應該觸摸的線地址,對預測的線地址的數(shù)據(jù)不進行加載而是通過在高速緩存項中設定有效標志和標簽,從而進行確保。預測觸摸適于將排列數(shù)據(jù)等的運算結(jié)果,順序地存儲在存儲器的情況等。
<高速緩沖存儲器的構(gòu)成>
以下,將高速緩沖存儲器3作為具體例子,對本發(fā)明適用于4路集聯(lián)方式的高速緩沖存儲器的情況下的構(gòu)成進行說明。
圖2是示出高速緩沖存儲器3的構(gòu)成例的方框圖。如此圖所示,高速緩沖存儲器3包括地址寄存器20、存儲器I/F21、解碼器30、4個通路31a~31d(以下略稱為通路0~3)、4個比較器32a~32d、4個AND電路(與電路)33a~33d、OR電路(或電路)34、選擇器35、36、分路器37、以及控制部38。
地址寄存器20是保持訪問存儲器2的訪問地址的寄存器。此訪問地址為32位。如該圖所示,訪問地址從最上位的位開始,依次包括21位的標簽地址、4位的組索引(set index)(圖中的SI)、5位的字索引(word index)(圖中的WI)。在此,標簽地址是指存儲器中的區(qū)域(其大小為組數(shù)×塊數(shù)),該存儲器的區(qū)域被通路所變換。此區(qū)域的大小是以標簽地址的下位的地址位(A10~A0)所定的大小,即,2k字節(jié),也是1個通路的大小。組索引(SI)是指跨過通路0~3的多個組中的1個。因組索引為4位,故此組數(shù)為16組。以標簽地址及組索引所確定的高速緩存項是替換單位,在被存儲在高速緩沖存儲器的情況下,又被稱為線數(shù)據(jù)或線。線數(shù)據(jù)的大小是以組索引的下位的地址位所定的大小,即128字節(jié)。若1個字為4字節(jié),則1個線數(shù)據(jù)為32個字。字索引(WI)是指構(gòu)成線數(shù)據(jù)的多個字中的1個字。地址寄存器20中的最下位的2位(A1、A0),在字訪問時被忽視。
存儲器I/F21用于從高速緩沖存儲器3向存儲器2的數(shù)據(jù)回寫、或從存儲器2向高速緩沖存儲器3的數(shù)據(jù)加載等,是為了從高速緩沖存儲器3訪問存儲器2的I/F。
解碼器30對組索引的4位進行解碼,從跨過4個通路0~3的16組中選擇1個。
4個通路0~3是具有相同構(gòu)成的4個通路,具有4×2k字節(jié)的容量。各通路具有16個高速緩存項。1個高速緩存項具有有效標志V、21位的標簽、128字節(jié)的線數(shù)據(jù),及臟標志(dirty flag)D。標簽是21位的標簽地址的復制。線數(shù)據(jù)是由標簽地址及組索引確定的塊中128字節(jié)數(shù)據(jù)的復制。有效標志V表示該高速緩存項的數(shù)據(jù)是否有效。臟標志D表示該高速緩存項中是否有來自處理器的寫入,即由于在輔助線中存在的被高速緩存的數(shù)據(jù),與寫入到存儲器中的數(shù)據(jù)不同,因此表示是否有必要寫入到高速緩沖存儲器。
比較器32a比較地址寄存器20中的標簽地址和通路0的標簽是否一致,該通路0在由組索引所選擇的組中所包含的4個標簽中。對于比較器32b~32c而言,除與通路31b~31d相對應之外,其余相同。
AND電路33a比較有效標志和比較器32a的比較結(jié)果是否一致。將此比較結(jié)果作為h0。在比較結(jié)果h0為1的情況下,意味著存在與地址寄存器20中的標簽地址及組索引相對應的線數(shù)據(jù),即,意味著在通路0中被命中。在比較結(jié)果h0為0的情況下,意味著未命中。對于AND電路33b~33d而言,除與通路31b~31d相對應之外,其余相同。其比較結(jié)果為h1~h3,意味著在通路1~3是命中還是未命中。
OR電路34取得比較結(jié)果h0~h3的OR。將此OR的結(jié)果作為hit(命中)。hit表示在高速緩沖存儲器中是否命中。
選擇器35在被選擇的組中的通路0~3的線數(shù)據(jù)中,選擇命中的通路中的線數(shù)據(jù)。
選擇器36在由選擇器35所選擇的32個字中的線數(shù)據(jù)中,選擇由字索引所表示的1個字。
分路器37在將數(shù)據(jù)寫入高速緩沖存儲器中時,將寫入數(shù)據(jù)輸出到通路0~3中的一個。該寫入數(shù)據(jù)可以以字為單位。
控制部38包括預測處理部39,對高速緩沖存儲器3的整體進行控制。預測處理部39主要進行預取的控制。
<預測處理部的構(gòu)成>
圖3是示出預測處理部39的構(gòu)成例的方框圖。如此圖所示,預測處理部39包括指令寄存器401、開始地址寄存器402、大小寄存器403、加法器404、開始調(diào)整器405a、405b、結(jié)束調(diào)整器406a、406b、訪問地址寄存器407、預測值寄存器408、常數(shù)寄存器409、選擇器410、加法器411、比較器412、及執(zhí)行部413。
指令寄存器401是由處理器1能夠直接訪問的寄存器,保持由處理器1所寫入的指令。圖4(c)是示出在指令寄存器401中寫入指令的命令的一示例圖。該命令是通常的轉(zhuǎn)送命令(mov命令),指定作為源操作數(shù)的指令、以及指定作為目的操作數(shù)的指令寄存器(CR)401。圖4(d)是示出指令格式的一示例圖。該指令格式包括指令內(nèi)容和常數(shù)。在此,指令內(nèi)容表示預測預取指令和預測觸摸指令中的某一個。常數(shù)表示增量值或減量值,例如是+4、+8、-4、-8等,該增量值或減量值是處理器1順序地進行存儲器訪問情況下的存儲器訪問地址的值。另外,也可以包括訪問方向(地址是升順還是降順)和絕對值(連續(xù)訪問情況下的地址的差分),來代替指令中的常數(shù)。
開始地址寄存器402是可以由處理器1直接訪問的寄存器,保持由處理器1所寫入的開始地址。此開始地址示出設定C標志(示出是否結(jié)束高速緩存的清理標志)所應該的地址范圍的開始位置。圖4(a)是示出在開始地址寄存器402中寫入開始地址的命令的一示例圖。此命令與圖4(c)同樣,是通常的轉(zhuǎn)送命令(mov命令)。
大小寄存器403是可以由處理器1直接訪問的寄存器,保持由處理器1所寫入的大小。此大小示出來自開始地址的地址范圍。圖4(b)是示出在大小寄存器403中寫入大小的命令的一示例圖。此命令與圖4(c)同樣,是通常的轉(zhuǎn)送命令(mov命令)。另外,大小的單位可以是字節(jié)數(shù),也可以是線數(shù)(高速緩存項數(shù)),只要是預先預定的單位即可。
加法器404對開始地址和大小進行加法運算,上述開始地址被保持在開始地址寄存器402中,上述大小被保持在大小寄存器403中。加法運算的結(jié)果是指出地址范圍的結(jié)束位置的結(jié)束地址。加法器404進行加法運算,當大小的單位被指定為字節(jié)數(shù)的情況下,將大小作為字節(jié)地址進行加法運算即可,當大小的單位被指定為線數(shù)的情況下,將大小作為線地址進行加法運算即可。
開始調(diào)整器405a、405b將開始地址調(diào)整到線邊界的位置。開始調(diào)整器405a向結(jié)束地址的方向調(diào)整,405b向與結(jié)束方向相反的方向調(diào)整。據(jù)此調(diào)整,處理器1可以不受線大小及線邊界的任何影響,將任意的地址作為開始地址來指定。
結(jié)束調(diào)整器406a及406b將結(jié)束地址調(diào)整到線邊界的位置。結(jié)束調(diào)整器406a向開始地址的方向調(diào)整,406b向與開始地址相反的方向調(diào)整。據(jù)此調(diào)整,處理器1可以不受線大小及線邊界的任何影響,將任意的大小作為上述大小來指定。
圖5是示出開始調(diào)整器405a、405b及結(jié)束調(diào)整器406a、406b的說明圖。在此圖中,由處理器1所指定的開始地址是指線N途中的任意的位置。開始調(diào)整器405a進行調(diào)整,使其指向下一個線(N+1)的開頭,并將調(diào)整后的地址作為調(diào)整開始地址a輸出。開始調(diào)整器405b進行調(diào)整,使其指向含有開始地址的數(shù)據(jù)的線N的開頭,并將調(diào)整后的地址作為調(diào)整開始地址b輸出。將調(diào)整開始地址指出的線稱為開始線。
并且,結(jié)束地址是指線M途中的任意的位置。開始調(diào)整器406a進行調(diào)整,使其指向當前的線(M-1)的開頭,并將調(diào)整后的地址作為調(diào)整開始地址a輸出。結(jié)束調(diào)整器406b進行調(diào)整,使其指向含有結(jié)束地址的數(shù)據(jù)的線M的開頭,并將調(diào)整后的地址作為調(diào)整結(jié)束地址b輸出。將調(diào)整結(jié)束地址指出的線稱為結(jié)束線。
如此圖所示,開始調(diào)整器405a及結(jié)束調(diào)整器406a以線為單位進行內(nèi)側(cè)匹配。開始調(diào)整器405b及結(jié)束調(diào)整器406b以線為單位進行外側(cè)匹配。而且,線單位的外側(cè)匹配后,還可以以輔助線為單位進行外側(cè)匹配和內(nèi)側(cè)匹配。
訪問地址寄存器407保持來自處理器1的存儲器訪問地址。
預測值寄存器408將對作為初期值的訪問地址寄存器407的存儲器訪問地址和常數(shù)寄存器409的常數(shù)進行加法運算后的值作為預測值來保持,之后,處理器1在執(zhí)行存儲器訪問時,若訪問地址寄存器407的存儲器訪問地址和預測值一致,則將預測值和常數(shù)寄存器409的常數(shù)相加,將相加后的值作為新的預測值進行更新,若不一致,則更新為新的初期值。
常數(shù)寄存器409保持來自處理器1的存儲器訪問地址的增量值或減量值。此增量值(或減量值)是指在處理器1順序地訪問存儲器的情況下的、附有后增量(post-increment)的加載/存儲命令的增量值(或減量值),例如,作為圖4(d)所示的指令中的常數(shù)被指定。
選擇器410進行選擇,若訪問地址寄存器407的存儲器訪問地址和預測值寄存器408的預測值一致,則選擇預測值寄存器408,若不一致,則選擇訪問地址寄存器407。
加法器411,對選擇器410所選擇的預測值或存儲器訪問地址和常數(shù)寄存器409的常數(shù)進行加法運算。加法運算后的值作為新的預測值或新的初期值,被保持在預測值寄存器408內(nèi)。
比較器412,判斷訪問地址寄存器407的存儲器訪問地址和預測值寄存器408的預測值是否一致。
執(zhí)行部413包括預取部414和觸摸部415。
預取部414按照處理器的加載命令的進行狀況,推定下一個被加載的線,進行預取推定的線的預測預取。
觸摸部415按照處理器的存儲命令的進行狀況,推定下一個被存儲的線,對用于保持推定的線的高速緩存項進行確保,而不是從存儲器加載數(shù)據(jù)(進行V=1的設定和標簽的設定)。
<預測預取>
圖6(a)是由預取部414進行預測預取的說明圖。在此圖(a)中,線N、N+1、…、N+n,表示地址連續(xù)的線。開始線及結(jié)束線分別作為線N、N+1、…、N+n,該開始線及結(jié)束線是由開始地址寄存器402及大小寄存器403所規(guī)定的。并且,LD(1)、LD(2)…通過加載命令,表示訪問位置。
預取部414在最初的加載命令LD(1)執(zhí)行時,其存儲器訪問地址與常數(shù)進行加法運算,將加法運算后的值作為初期值保持在預測值寄存器408中。第2次的加載命令LD(2)執(zhí)行時,在其存儲器訪問地址和預測值寄存器408的預測值一致的情況下,預取部414推定為附有后增量的加載命令的順序存取,并預取下一個線N+1。如果下一個線被存儲在高速緩沖存儲器內(nèi)的情況下,則什么也不進行。
由處理器1根據(jù)附有后增量的加載命令進行順序存取的情況下,預測值將與每個存儲器訪問一致。
這樣,預測值寄存器408的預測值從線N更新到線N+1,與存儲器訪問地址一致時,預取部414對線N+2進行預取。預取部414從開始線到結(jié)束線執(zhí)行此預測預取,當結(jié)束了結(jié)束線的預取時,結(jié)束預測預取。
<預測觸摸>
圖6(b)是由觸摸部415進行預測觸摸的說明圖。與圖6(a)相比較而言,在處理器1根據(jù)存儲命令順序地訪問的情況下,當其存儲器訪問地址和預測值寄存器408的預測值一致時,推定為附有后增量的存儲命令的順序存取,確保與下一個線N+1相對應的高速緩存項,這一點與圖6(a)不同。即,不同之處為,取代預取的是,不將內(nèi)存數(shù)據(jù)加載到高速緩存項,而將標簽及有效標志設定為1。除此之外因為與預取相同,在此省略說明。
<預測預取處理>
圖7是示出預取部414中的預測預取處理的一例的流程圖。
在此圖中,預取部414將預測預取指令保持到指令寄存器401(S41),在處理器執(zhí)行加載命令時(S42),相加該存儲器訪問地址和常數(shù),將相加后的值作為初期值,設定到預測值寄存器408中(S43)。此最初的加載命令的存儲器訪問地址和預測值寄存器的預測值,自然是不一致的。因為預測值寄存器408或是被清理或是保持了隨機的值。
并且,處理器執(zhí)行加載命令(S44),而且在存儲器訪問地址和預測值寄存器的預測值一致的情況下(S45),預取部414算出下一個線的線地址(S46),算出的線地址屬于從開始線到結(jié)束線的地址范圍(S47),若下一個線未被存儲到高速緩存項(S48),則對下一個線進行預取(S49)。
在此預取中,預取部414以LRU方式選擇替換對象的通路(S401),若該通路的高速緩存項為臟(dirty),則進行回寫(S402,S403),將下一個線的數(shù)據(jù)再填充(預取)到該高速緩存項中(S404)。
而且,若預取后的線是結(jié)束線的情況下(S50),則預取部414結(jié)束預測預取處理。
并且,在上述S45中,在存儲器訪問地址和預測值寄存器的預測值不一致的情況下,在存儲器訪問地址上相加了常數(shù)的值,則作為新的預測值被設定在預測值寄存器408中。另外,在不一致的情況下,什么也不進行(等待存儲器訪問的狀態(tài))。
這樣,預取部414在預測預取中,按照處理器的加載命令的進行狀況推定下一個線,由于是要預取推定的線,所以在處理器1中沒有必要識別高速緩沖存儲器的線大小或線邊界,即,在處理器1中沒有必要管理預取所用的地址。在高速緩沖存儲器中,可以根據(jù)推定來進行高效率的預取。
<預測觸摸處理>
圖8是示出觸摸部415的預測觸摸處理的一例的流程圖。此圖與圖7的預測預取處理相比較,不同點是代替S41、S42、S44、S49以及S404各步驟的是,S41a、S42a、S44a、S49a以及S404a。除此之外為相同點,在此對不同點進行說明。
觸摸部415在S41a中判斷,預測觸摸指令是否保持在指令寄存器401中,在S42a和S44a中判斷存儲命令是否被執(zhí)行。并且,觸摸部415在S49a中代替預取而進行觸摸。即,在S404a中,在替換對象的高速緩存項中不加載存儲器數(shù)據(jù),而將標簽及有效標志設定為1。
這樣,觸摸部415按照處理器的存儲命令的進行狀況,推定下一個線,由于是對推定的線進行觸摸(確保),所以沒有必要識別高速緩沖存儲器的線大小或線邊界,即,在處理器1中沒有必要管理預取所用的地址。在高速緩沖存儲器中,可以根據(jù)推定來進行高效率的觸摸。
<變形例>
另外,本發(fā)明的高速緩沖存儲器不受上述實施方式的構(gòu)成所制限,可以有各種各樣的變形。以下,對幾個變形例進行說明。
(1)雖然示出了常數(shù)寄存器409的構(gòu)成是由指令所設定的,也可以是以下幾種構(gòu)成,即(a)將增量值或減量值作為默認值來保持,(b)算出在多次加載/存儲命令中的2個存儲器訪問地址的差分,作為增量值或減量值來保持,(c)按照由處理器所指定的地址方向(升順地址或降順地址),算出上述(b)并保持。
(2)也可以在預取部414預取下一個線的再下一個線等多個線。同樣,觸摸部415也可以觸摸多個線。
(3)預取部414也可以在比較器412多次一致的情況下,使預取開始。觸摸部415也是同樣。
(4)在上述的實施方式,雖然以4路集聯(lián)的高速緩沖存儲器為例進行了說明,在此,通路數(shù)量可以是不受制限的。并且,在上述實施方式,雖然對組數(shù)為16進行了舉例說明,在此,組數(shù)也可以是不受制限的。
(5)在上述實施方式,雖然對組相聯(lián)的高速緩沖存儲器進行了舉例說明,也可以是全相聯(lián)方式或直接映射方式的高速緩沖存儲器。
(6)在上述實施方式中,雖然將輔助線的大小作為線的大小的1/4,也可以是1/2、1/8、1/16等其它的大小。此時,各高速緩存項也可以分別保持與輔助線數(shù)量相同的有效標志及臟標志。
(7)在上述實施方式中的大小寄存器403也可以是這樣的構(gòu)成,即代替保持大小而保持應該預取的次數(shù)。在這樣的情況下,也可以是這樣的構(gòu)成,即預測處理部39計數(shù)實際上預取的次數(shù),當計數(shù)值達到應該預取的次數(shù)時,停止預取。這樣,通過計數(shù)預取的次數(shù),可以監(jiān)視在處理器中的程序進行狀態(tài)。
(實施方式2)在實施方式1對推定線的情況的構(gòu)成進行了說明,該線是指在說明了預測預取及預測觸摸中今后將要訪問的線。在本實施方式,將要對以下的構(gòu)成進行說明,即對已經(jīng)訪問的線進行推定,并進行預測清理(回寫)或預測弱化(地址順序的最弱化),或預測無效化。
<高速緩沖存儲器的構(gòu)成>
圖9是示出在本實施方式2中,高速緩沖存儲器的構(gòu)成的方框圖。此圖的高速緩沖存儲器的構(gòu)成與圖2所示的構(gòu)成相比較,不同點是,具備通路131a~131d,用來代替通路31a~31d;以及,具備控制部138,用來代替控制部38。以下,以不同點為中心進行說明,對于相同點省略說明。
通路131a與通路31a相比,不同點是在各高速緩存項中,被追加了C標志、W標志及U標志;具有各輔助線的有效標志V0~V3,用來代替以線為單位的有效標志V;具有各輔助線的臟標志D0~D3,用來代替以線為單位的臟標志D。通路131b~131d也同樣。
圖10是示出高速緩存項的位構(gòu)成的圖。1個高速緩存項中保持有有效標志V0~V3、21位的標簽、128字節(jié)的線數(shù)據(jù)、弱標志W(wǎng)、使用標志U及臟標志D0~D3。
標簽是21比特的標簽地址的復制。
線數(shù)據(jù)是塊中的128字節(jié)數(shù)據(jù)的復制,包括32字節(jié)的4個輔助線,上述塊是由標簽地址及組索引所確定的。
有效標志V0~V3與4個輔助線相對應,表示輔助線是否有效。
C標志(清理標志)表示高速緩存操作結(jié)束屬性,該高速緩存操作結(jié)束屬性表示是否可以結(jié)束高速緩存操作。C=0表示,以后有被寫入的可能性。C=1表示,以后沒有被寫入的可能性,也表示若是臟的情況下,應該通過清理(回寫)來結(jié)束高速緩存操作。
弱標志W(wǎng),對于來自處理器的訪問,表示是否要進一步使用;對于在高速緩沖存儲器中的替換控制,表示最弱的替換對象,該最弱的替換對象可以比其它的高速緩存項先被逐出。
使用標志U,表示是否有向該高速緩存項的訪問,在LRU方式中替代高速緩存項之間的訪問順序數(shù)據(jù)來使用。更準確而言,使用標志U為1表示有訪問,0表示沒有訪問。但是,當1個組內(nèi)4個通路的使用標志均為1時,復位為0。換而言之,使用標志U表示,被訪問的時期是舊還是新的2個相對的狀態(tài)。即使用標志U為1的高速緩存項表示,比起使用標志為0的高速緩存項而言為最新被訪問的。
臟標志D0~D3表示,與4個輔助線相對應,是否有從處理器寫入該輔助線的必要,即表示,由于輔助線中存在的被緩存的數(shù)據(jù)與寫入到存儲器中的數(shù)據(jù)不同,是否有回寫存儲器的必要。
控制部138與控制部38相比,不同點是具有預測處理部139,用來替代預測處理部39;通過預測設定C標志;通過預測設定W標志;以及利用使用標志U,用來替代在LRU方式中的訪問順序信息。
<使用標志U的說明>
圖11示出控制部138更新使用標志的例子。此圖的上層、中層、下層表示,構(gòu)成跨過通路0~3的組N的4個高速緩存項。4個高速緩存項的右端的1或0是各自的使用標志的值。將此4個使用標志U記作U0~U3。
因為在此圖的上層(U0~U3)=(1、0、1、0),所以,表示通路0、2的高速緩存項有訪問,通路1、3的高速緩存項無訪問。
在此狀態(tài),存儲器訪問命中組N內(nèi)的通路1的高速緩存項的情況下,如此圖中層所示,被更新為(U0~U3)=(1、1、1、0)。即,如實線所示,通路1的使用標志U1從0被更新為1。
另外,在此圖中層的狀態(tài),存儲器訪問命中組N內(nèi)的通路3的高速緩存項的情況下,如此圖下層所示,被更新為(U0~U3)=(0、0、0、1)。
即,如實線所示,通路3的使用標志U1從0被更新為1。另外,如虛線所示,通路3以外的使用標志U0~U2從1被更新為0。據(jù)此,通路3的高速緩存項表示,比起通路0~2的各高速緩存項而言,是最新被訪問的。
若緩存故障時W=1的高速緩存項不存在,控制部138根據(jù)使用標志,決定替換對象的高速緩存項,并進行替換。例如,控制部138在圖5上層,決定通路1和通路3的某1個為替換對象,在圖5中層決定通路3為替換對象,在圖5下層決定通路0~2的某1個為替換對象。
<弱標志W(wǎng)的說明>
圖12(a)示出假定弱標志不存在的情況下的比較例,是表示高速緩存項被替換的樣子的圖。在此圖中與圖11同樣,表示構(gòu)成跨過通路0~3的組N的4個高速緩存項。4個高速緩存項的右端的1或0是各自的使用標志的值。并且,僅將數(shù)據(jù)E作為訪問頻度低的數(shù)據(jù),將數(shù)據(jù)A、B、C、D作為訪問頻度高的數(shù)據(jù)。
在此圖(a)的第1層的狀態(tài),當處理器1訪問數(shù)據(jù)E時,發(fā)生緩存故障。由于此緩存故障,例如,作為U=0的高速緩存項中的、訪問頻度高的數(shù)據(jù)C的高速緩存項,被替換為訪問頻度低的數(shù)據(jù)E,成為第2層的狀態(tài)。
在第2層的狀態(tài),當處理器1訪問數(shù)據(jù)C時,發(fā)生緩存故障。由于此緩存故障,例如,作為U=0的高速緩存項的、訪問頻度高的數(shù)據(jù)D的高速緩存項,被替換為訪問頻度低的數(shù)據(jù)C,成為第3層的狀態(tài)。
在第3層的狀態(tài),當處理器1訪問數(shù)據(jù)D時,發(fā)生緩存故障。由于此緩存故障,例如,訪問頻度高的數(shù)據(jù)C的高速緩存項,被替換為訪問頻度高的數(shù)據(jù)D,成為第3層的狀態(tài)。
同樣,第4層也是,作為替換對象不選擇使用頻度低的數(shù)據(jù)E,而殘留在高速緩沖存儲器中。
在第5層的狀態(tài),因為使用頻度低的數(shù)據(jù)E最舊(U=0),作為替換對象被選擇并被逐出。
這樣,在偽LRU方式(通常的LRU方式同樣)中,通過訪問頻度低的數(shù)據(jù)E,在4通路的情況下,至少會有4次導致緩存故障的情況。
圖12(b)是示出替換處理中弱標志W(wǎng)的作用的說明圖。
在此圖(b)的第1層的狀態(tài)(與此圖(a)的第1層相同),當處理器1訪問數(shù)據(jù)E時,發(fā)生緩存故障。由于此緩存故障,例如,來自U=0的高速緩存項中的、訪問頻度高的數(shù)據(jù)C的高速緩存項,被替換為訪問頻度低的數(shù)據(jù)E。此時,處理器1在數(shù)據(jù)E的高速緩存項將弱標志W(wǎng)設定為1。據(jù)此,下一個緩存故障時,數(shù)據(jù)E的高速緩存項被最先逐出,成為第2層的狀態(tài)。
在第2層的狀態(tài),當處理器1訪問數(shù)據(jù)C時,發(fā)生緩存故障。由于此緩存故障,例如,作為W=1的高速緩存項的、訪問頻度低的數(shù)據(jù)E的高速緩存項,作為替換對象被選擇,并被替換為訪問頻度高的數(shù)據(jù)C,成為第3層的狀態(tài)。
這樣,通過設置弱標志W(wǎng),可以降低由訪問頻度低的數(shù)據(jù)所導致的緩存故障。
<預測處理部的構(gòu)成>
圖13是示出預測處理部139的構(gòu)成的方框圖。此圖的預測處理部139與圖3所示的預測處理部39不同點是,具備執(zhí)行部413a,用來替代執(zhí)行部413。執(zhí)行部413a與執(zhí)行部413相比,追加了C設定部416及W設定部417。
C設定部416按照處理器的存儲命令的進行狀況,對剛剛結(jié)束存儲的線進行推定,并將推定的線的C標志設定為1。
W設定部417按照處理器的存儲命令的進行狀況,對剛剛結(jié)束存儲的線進行推定,并將推定的線的W標志設定為1。
<C標志設定處理的說明圖>
圖14(a)是示出根據(jù)C設定部416進行C標志設定處理的說明圖。在此圖(a)中,線N、N+1、…、N+n、開始線、及結(jié)束線,與圖6(a)相同。
在處理器1對線N、N+1…順序地存儲數(shù)據(jù)的情況下,例如,對線N+1執(zhí)行存儲命令ST(1)、ST(2),當ST(2)的存儲器訪問地址和預測值一致時,通過對線N順序地訪問,C設定部416推定存儲已結(jié)束,此時將線N的C標志設定為1。C標志被設定為1的線N,不等緩存故障的發(fā)生即由清理處理來回寫。
同樣,在對線N+2執(zhí)行存儲命令時與預測值一致的情況下,通過對線N+1順序地訪問來推定存儲已結(jié)束,此時將線N+1的C標志設定為1。
這樣,C設定部416在從開始線到結(jié)束線的范圍內(nèi)執(zhí)行C標志的設定。
<W標志設定處理的說明圖>
圖14(b)是通過W設定部417進行W標志設定處理的說明圖。與此圖(a)相比,不同點是,不是對C標志進行設定,而是對W標志進行設定,除此以外是相同的,省略其說明。
W標志被設定為1的線,在緩存故障臨要發(fā)生之前,作為替換對象被選擇,被逐出高速緩沖存儲器。
<C標志設定處理流程>
圖15是示出C設定部416中進行C標志設定處理一例的流程圖。
在此圖中,C設定部416將C標志設定指令保持在指令寄存器401中(S41b),當處理器執(zhí)行存儲命令時(S42b),將該存儲器訪問地址與常數(shù)相加后的值作為初期值,設定到預測值寄存器408中(S43)。此最初的存儲命令的存儲器訪問地址和預測值寄存器的預測值自然是不一致的。因為預測值寄存器408或是被清理或是保持了隨機的值。
進一步,處理器執(zhí)行存儲命令(S44b),且在存儲器訪問地址和預測值寄存器的預測值一致的情況下(S45),C設定部416算出正前的線的線地址(S46b),算出的線地址屬于從開始線到結(jié)束線的地址范圍(S47),若正前的線被輸入到高速緩沖存儲器(S48b),則將正前的線的C標志設定為1(S49b)。
進一步,若正前的線為結(jié)束線時(S50),則C設定部416結(jié)束C標志設定處理。
這樣,C設定部416按照處理器的存儲命令的進行狀況,推定存儲即將結(jié)束的線,由于推定的線的C標志被設定為1,所以在處理器1中沒有識別高速緩沖存儲器的線大小或線邊界的必要,即,在處理器1中沒有將可以清理的線作為線地址來管理的必要。在高速緩沖存儲器中根據(jù)推定,可以高效率地進行清理。
<W標志設定處理流程>
圖16是示出W設定部417中進行W標志設定處理的一例的流程圖。此圖的流程與圖15的C標志設定處理相比,不同點是設定W標志,而不是設定C標志,除此以外是相同的,省略其說明。
這樣,W設定部417按照處理器的存儲命令的進行狀況,推定剛剛存儲結(jié)束的線,由于推定的線的W標志被設定為1,因此,可以在高速緩沖存儲器中根據(jù)推定,將剛剛存儲結(jié)束的線高效率地作為替換對象。此時,在處理器1沒有識別高速緩沖存儲器的線大小或線邊界的必要,即,在處理器1中沒有將可以替換的線作為線地址來管理的必要。
<清理處理>
圖17是示出控制部138中的清理處理的一例的流程圖。
如此圖所示,控制部138在循環(huán)1的處理(S900~S913),通過順序地對組索引(SI)0~15進行指定(S901),對全部16個組進行循環(huán)2的處理。在循環(huán)2的處理(S900~S913),控制部138通過讀出組內(nèi)的通路0~3的C標志(S903),搜索C=1的高速緩存項(S904)。在循環(huán)3的處理(S905~S910),控制部138對C=1的高速緩存項讀出輔助線單位的臟標志(S906),若為臟(S907),則將該輔助線的數(shù)據(jù)回寫到存儲器2(S908),將該臟標志復位為0(S909)。在此輔助線數(shù)據(jù)的回寫中,控制部138如循環(huán)4的處理(S920~S923),在空周期(S920)中各回寫1個字(S922)。
這樣,控制部138對全部的高速緩存項的C標志順序地進行檢查,并搜索C=1的高速緩存項,若為臟,則從高速緩沖存儲器3回寫到存儲器2。
這樣,在清理處理中,將持有C標志的高速緩存項在緩存故障發(fā)生之前進行回寫,緩存故障時只要發(fā)生加載懲罰(load penalty),就可以降低回寫懲罰(write back penalty)的發(fā)生,上述C標志表示在此之上不能再寫入。據(jù)此,可以提高高速緩沖存儲器的效率,從而訪問速度得到提高。
<U標志的更新處理>
圖18是示出在控制部138進行U標志更新處理的流程圖。在此圖中,將有效標志為0(無效)的高速緩存項的使用標志U初期化為0。
在此圖中,控制部138在高速緩存命中時(步驟S61),將由組索引所選擇的組中命中的通路的使用標志U設定為1(步驟S62),讀出該組中的其它的通路的使用標志U(步驟S63),判斷讀出的使用標志U是否全部為1(步驟S64),若全部不為1則結(jié)束,若全部為1時,則將其它的通路的所有的使用標志U復位到0(步驟S65)。
這樣,控制部138如圖11、圖12(a)(b)所示的更新例那樣,更新使用標志U。
<替換處理>
圖19是示出在控制部138中進行替換處理的流程圖。在此圖中控制部138在存儲器訪問失敗時(步驟S91),讀出由組索引所選擇的組中的、4個通路的使用標志U及弱標志W(wǎng)(步驟S92),判斷W=1的通路是否存在(步驟S93)。當判斷為W=1的通路不存在的情況下,選擇1個U=0的通路(步驟S94)。此時,當使用標志U為0的通路存在多個的情況下,控制部138隨機地選擇1個。另外,當判斷為W=1的通路存在的情況下,不考慮U標志的值而選擇1個W=1的通路(步驟S95)。此時,弱標志W(wǎng)為1的通路存在多個的情況下,控制部138隨機地選擇1個。
并且,控制部138將在該組中所選擇的通路的高速緩存項替換為對象(步驟S96),替換后,將該高速緩存項的使用標志U初期化為1,將弱標志W(wǎng)初期化為0(步驟S97)。并且,此時有效標志V被初期化為1,臟標志D被初期化為0。
這樣,當W=1的通路不存在的情況下,替換對象從使用標志U為0的高速緩存項中選擇1個。
另外,當W=1的通路存在的情況下,替換對象不管使用標志為0還是為1,從W=1的通路的高速緩存項中選擇1個。據(jù)此,如圖14(a)(b)所示,由于訪問頻度低的數(shù)據(jù)殘留在高速緩沖存儲器中,從而可以降低緩存故障的誘發(fā)。
如以上說明,在本實施方式中根據(jù)高速緩沖存儲器,按照處理器1的存儲命令的進行狀態(tài),結(jié)束存儲并推定線,由于對推定的線設定C標志或W標志,所以可以將剛剛結(jié)束存儲的線高效率地作為替換對象進行指定。此時,高速緩沖存儲器的線邊界或線大小沒有由處理器1管理的必要,從而可以減少由高速緩存管理所帶來的負荷。
并且,將弱標志W(wǎng)=1且臟標志D=1的線作為從處理器在此之上不能再寫入的線,通過清理處理,可以降低緩存故障時的回寫懲罰。
并且,在此之上未被使用的高速緩存項上設定W=1,由于W=1的高速緩存項作為最先被選擇的替換對象,因此訪問頻度低的數(shù)據(jù)殘留在高速緩沖存儲器中,據(jù)此,可以降低高速緩存故障的誘發(fā)。
另外,代替在以往的LRU方式中表示訪問順序的數(shù)據(jù)而采用偽LRU方式,該偽LRU方式利用1位的使用標志,據(jù)此,作為訪問順序數(shù)據(jù)可以是1位的標志,從而可以使訪問順序數(shù)據(jù)的數(shù)據(jù)量減少,并可以使更新簡單,據(jù)此,可以縮小硬件規(guī)模。
<變形例>
(1)、圖4(a)(b)(c)中所示的各命令,也可以通過編譯程序插入到程序中。此時,編譯程序例如是排列數(shù)據(jù)的寫入、或是解碼壓縮動化數(shù)據(jù)時的塊數(shù)據(jù)的寫入等,可以在在此之上不寫入程序的位置中插入上述各命令。
(2)、在上述清理處理中也可以是進行無效化處理的構(gòu)成。即,在圖17中所示的流程圖中,在S907中判斷不為臟的情況下,可以進一步追加對該高速緩存項進行無效化(復位V標志)的步驟。而且,也可以在清理處理中的回寫之后追加無效化的步驟。
產(chǎn)業(yè)上的可利用性本發(fā)明適用于使存儲器訪問高速化的高速緩沖存儲器,例如適用于,片內(nèi)高速緩沖存儲器(on-chip cache)、片外高速緩沖存儲器(off-chipcache)、數(shù)據(jù)高速緩沖存儲器、以及命令高速緩沖存儲器等。
權(quán)利要求
1.一種高速緩沖存儲器系統(tǒng),其特征在于,包括條件生成單元,生成條件,該條件與處理器的狀態(tài)有關;判斷單元,判斷當前的處理器的狀態(tài)是否滿足上述條件;地址生成單元,生成成為操作對象的地址;以及操作單元,在上述判斷單元判斷為滿足條件的情況下,利用由上述地址生成單元所生成的地址,對高速緩沖存儲器進行操作。
2.根據(jù)權(quán)利要求1所述的高速緩沖存儲器系統(tǒng),其特征在于,在上述判斷單元判斷為滿足條件的情況下,上述條件生成單元生成新的條件。
3.根據(jù)權(quán)利要求2所述的高速緩沖存儲器系統(tǒng),其特征在于,上述條件生成單元生成條件,該條件與處理器內(nèi)的特定寄存器的值有關。
4.根據(jù)權(quán)利要求3所述的高速緩沖存儲器系統(tǒng),其特征在于,上述特定寄存器為程序計數(shù)器。
5.根據(jù)權(quán)利要求2所述的高速緩沖存儲器系統(tǒng),其特征在于,上述條件生成單元,將向特定的地址范圍內(nèi)的存儲器訪問以及向特定的地址范圍外的存儲器訪問中的某一個作為上述條件來生成。
6.根據(jù)權(quán)利要求1所述的高速緩沖存儲器系統(tǒng),其特征在于,上述條件生成單元,將處理器執(zhí)行特定命令作為上述條件來生成。
7.根據(jù)權(quán)利要求2所述的高速緩沖存儲器系統(tǒng),其特征在于,上述條件生成單元,通過對當前的條件實施特定的運算,來生成上述新的條件。
8.根據(jù)權(quán)利要求7所述的高速緩沖存儲器系統(tǒng),其特征在于,上述條件生成單元將存儲器訪問地址作為條件來生成;在上述判斷單元判斷為滿足條件的情況下,通過對當前的條件加上常數(shù),來生成上述新的條件。
9.根據(jù)權(quán)利要求8所述的高速緩沖存儲器系統(tǒng),其特征在于,上述常數(shù)為增量值或減量值以及地址的差分值中的某一個,該增量值或減量值為由處理器所執(zhí)行的附有后增量的加載/存儲命令中的增量值或減量值,該地址的差分值為由處理器所執(zhí)行的2次的加載/存儲命令中的差分值。
10.根據(jù)權(quán)利要求1所述的高速緩沖存儲器系統(tǒng),其特征在于,上述條件生成單元生成多個條件;上述判斷單元,判斷是否滿足所有的多個條件。
11.根據(jù)權(quán)利要求1所述的高速緩沖存儲器系統(tǒng),其特征在于,上述條件生成單元生成多個條件;上述判斷單元,判斷是否滿足多個條件中的某一個。
12.根據(jù)權(quán)利要求1到權(quán)利要求3中的任一項所述的高速緩沖存儲器系統(tǒng),其特征在于,上述操作單元包括數(shù)據(jù)判斷單元,在上述判斷單元判斷為滿足條件時,判斷數(shù)據(jù)是否被保存在高速緩沖存儲器中,該數(shù)據(jù)是與由上述地址生成單元所生成的地址相對應的數(shù)據(jù);選擇單元,在判斷為未被保存的情況下,選擇高速緩沖存儲器中的線;回寫單元,當上述所選擇的線有效且為臟,則進行回寫;轉(zhuǎn)送單元,將與上述地址對應的數(shù)據(jù)從存儲器中轉(zhuǎn)送到回寫后所選擇的線上;以及注冊單元,將上述地址作為標簽,注冊到上述所選擇的線上。
13.根據(jù)權(quán)利要求1到權(quán)利要求3中的任一項所述的高速緩沖存儲器系統(tǒng),其特征在于,上述操作單元包括數(shù)據(jù)判斷單元,在上述判斷單元判斷為滿足條件時,判斷數(shù)據(jù)是否被保存在高速緩沖存儲器中,該數(shù)據(jù)是與由上述地址生成單元所生成的地址相對應的數(shù)據(jù);選擇單元,在判斷為未被保存的情況下,選擇高速緩沖存儲器中的線;回寫單元,當上述被選擇的線有效且為臟,則進行回寫;注冊單元,從存儲器中不將數(shù)據(jù)轉(zhuǎn)送到所選擇的線上,而將上述生成的地址作為標簽,注冊到所選擇的線上。
14.根據(jù)權(quán)利要求1到權(quán)利要求3中的任一項所述的高速緩沖存儲器系統(tǒng),其特征在于,上述操作單元包括數(shù)據(jù)判斷單元,在上述判斷單元判斷為滿足條件時,判斷數(shù)據(jù)是否被保存在高速緩沖存儲器中,該數(shù)據(jù)是與由上述地址生成單元所生成的地址相對應的數(shù)據(jù);選擇單元,在判斷為被保存的情況下,選擇高速緩沖存儲器中保存了數(shù)據(jù)的線;以及回寫單元,當所選擇的線有效且為臟,則進行回寫。
15.根據(jù)權(quán)利要求1到權(quán)利要求3中的任一項所述的高速緩沖存儲器系統(tǒng),其特征在于,上述操作單元包括數(shù)據(jù)判斷單元,在上述判斷單元判斷為滿足條件時,判斷數(shù)據(jù)是否被保存在高速緩沖存儲器中,該數(shù)據(jù)是與由上述地址生成單元所生成的地址相對應的數(shù)據(jù);選擇單元,在判斷為被保存的情況下,選擇高速緩沖存儲器中保存了數(shù)據(jù)的線;以及無效化單元,對所選擇的線進行無效化。
16.根據(jù)權(quán)利要求1到權(quán)利要求3中的任一項所述的高速緩沖存儲器系統(tǒng),其特征在于,上述操作單元包括數(shù)據(jù)判斷單元,在上述判斷單元判斷為滿足條件時,判斷數(shù)據(jù)是否被保存在高速緩沖存儲器中,該數(shù)據(jù)是與由上述地址生成單元所生成的地址相對應的數(shù)據(jù);選擇單元,在判斷為被保存的情況下,選擇高速緩沖存儲器中保存了數(shù)據(jù)的線;以及變更單元,對于表示線的訪問順序的順序信息,變更所選擇的線的訪問順序。
17.根據(jù)權(quán)利要求12到權(quán)利要求16中的任一項所述的的高速緩沖存儲器系統(tǒng),其特征在于,由上述條件生成單元生成作為上述條件的存儲器地址;上述操作單元還包括調(diào)整單元,在由上述條件生成單元所生成的存儲器地址示出線的中途的情況下,通過進行調(diào)整以便示出該線的開頭、下一個線的開頭、以及上一個線的開頭的某一個,來生成地址。
18.一種控制方法,其是高速緩沖存儲器的控制方法,其特征在于,包括條件生成步驟,生成條件,該條件與處理器的狀態(tài)有關;判斷步驟,判斷當前的處理器的狀態(tài)是否滿足上述條件;地址生成步驟,生成成為操作對象的地址;以及操作步驟,在上述判斷步驟判斷為滿足條件的情況下,利用在上述地址生成步驟中所生成的地址,對高速緩沖存儲器進行操作。
全文摘要
本發(fā)明的高速緩沖存儲器具有預測處理部(39),該預測處理部(39)根據(jù)由處理器所輸出的存儲器的訪問的進行狀況來預測下一個應該預取的線地址;預測處理部(39)具有預取部(414)和觸摸部(415),該預取部(414)從存儲器中將所預測的線地址的數(shù)據(jù)預取到高速緩沖存儲器中,該觸摸部(415)不將數(shù)據(jù)從存儲器中加載到高速緩沖存儲器上,而是將所預測的線地址作為標簽設定到高速緩存項,并使有效標志有效。
文檔編號G06F12/08GK1934543SQ20058000922
公開日2007年3月21日 申請日期2005年3月16日 優(yōu)先權(quán)日2004年3月24日
發(fā)明者中西龍?zhí)? 岡林葉月, 田中哲也, 清原督三 申請人:松下電器產(chǎn)業(yè)株式會社
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
武川县| 长兴县| 英吉沙县| 阿拉善左旗| 玛多县| 霍山县| 江川县| 淳安县| 万州区| 来安县| 大竹县| 信丰县| 含山县| 阳东县| 安庆市| 小金县| 焉耆| 广德县| 万山特区| 游戏| 汕头市| 称多县| 陕西省| 静海县| 伊吾县| 日照市| 长沙市| 潮安县| 庐江县| 五常市| 藁城市| 长治市| 孟连| 北安市| 红安县| 沅江市| 巫山县| 高阳县| 平顺县| 汶川县| 临猗县|