緩存控制裝置、處理器、信息處理系統(tǒng)和緩存控制方法
【專利摘要】本發(fā)明公開了緩存控制裝置、處理器、信息處理系統(tǒng)和緩存控制方法。所述緩存控制裝置包括:所述標簽存儲部被構(gòu)造用來為緩沖存儲器的各緩存線管理所述緩存線是否有效,并且管理是否被提供用于向共用存儲部回寫的回寫指令;和標簽控制部,所述標簽控制部被構(gòu)造用來:當提供預(yù)定指令時,不使已經(jīng)被提供所述回寫指令的緩存線無效化并且使沒有被提供所述回寫指令的緩存線無效化。所述處理器包括所述緩存控制裝置和指令處理部。所述信息處理系統(tǒng)包括所述緩存控制裝置、共用存儲部和指令處理部。根據(jù)本發(fā)明,能夠在動態(tài)線程調(diào)度環(huán)境下有效地保持緩沖存儲器中的數(shù)據(jù)的一致性。
【專利說明】緩存控制裝置、處理器、信息處理系統(tǒng)和緩存控制方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及緩存控制裝置。具體地,本發(fā)明涉及對共用存儲部的數(shù)據(jù)進行保持的本地緩沖存儲器(local cache memory)的緩存控制裝置。本發(fā)明還涉及含有該緩存控制裝置的處理器及信息處理系統(tǒng)以及緩存控制方法。
【背景技術(shù)】
[0002]在具有均包含本地緩存的多個處理器訪問共有的共用存儲器這樣的構(gòu)造的系統(tǒng)中,在處理器之間共用數(shù)據(jù)的同時,必須在整個系統(tǒng)中保持數(shù)據(jù)的一致性。因此,對每個處理器而言,需要對其自己的本地緩存上的數(shù)據(jù)適當?shù)剡M行回寫處理和無效化處理。換言之,對于更新共用數(shù)據(jù)的處理器而言,需要將更新之后的信息回寫至共用存儲器。另一方面,對于參照共用數(shù)據(jù)的處理器而言,需要使殘余在其自己的本地緩存上的更新前的數(shù)據(jù)無效化,以參照出現(xiàn)在共用存儲器上的更新后的數(shù)據(jù)。在那時,如果所有的緩存線都被無效化且在處理完成之后所有的緩存線都被回寫至共用存儲器,那么本地緩存將無法在線程間被有效地使用,此外,發(fā)生了回寫不必要的緩存線的無用處理。
[0003]相反地,已經(jīng)提出了如下的系統(tǒng):其中,在本地緩存的每個緩存線中保持有表明數(shù)據(jù)是否是共用數(shù)據(jù)的標記,且只有設(shè)置了標記的行被無效化(例如,參見日本待審查專利申請?zhí)亻_平02-100741號公報)。此外,已經(jīng)提出了如下的系統(tǒng):在該系統(tǒng)中,預(yù)先設(shè)定要被無效化的地址的范圍,且只有保持著包含在這個范圍內(nèi)的數(shù)據(jù)的緩存線被無效化(例如,參見日本待審查專利申請第2009-282920號公報)。
【發(fā)明內(nèi)容】
[0004]在上述的現(xiàn)有技術(shù)中,要被無效化的緩存線受到限制,且因此可以有效地利用本地緩存。然而,在利用表明共用數(shù)據(jù)的標記的情況下,當在多線程編程中動態(tài)地進行線程調(diào)度時,主要所需的共用數(shù)據(jù)可能是無效的。此外,在設(shè)定要被無效化的地址的范圍的情況下,存在著要被無效化的地址需要是連續(xù)的這樣的不靈活的缺點。
[0005]鑒于上述問題,期望在動態(tài)線程調(diào)度的環(huán)境下有效地保持緩沖存儲器中的數(shù)據(jù)的一致性。
[0006]本發(fā)明的實施例提供了一種緩存控制裝置,其包括:標簽存儲部,所述標簽存儲部被構(gòu)造用來為緩沖存儲器的各緩存線管理所述緩存線是否有效,并且管理是否被提供用于向共用存儲部回寫的回寫指令;和標簽控制部,所述標簽控制部被構(gòu)造用來:當提供預(yù)定指令時,不使已經(jīng)被提供所述回寫指令的緩存線無效化并且使沒有被提供所述回寫指令的緩存線無效化。這提供了這樣的功能:進行不使原本需要的共用數(shù)據(jù)無效化的控制。
[0007]有利地,所述標簽控制部可以被構(gòu)造用來在所述回寫指令被提供時使所述標簽存儲部存儲表明回寫指令被提供的內(nèi)容,且對于已經(jīng)被提供了所述回寫指令的緩存線,所述標簽控制部被構(gòu)造用來在所述預(yù)定指令被提供時使所述標簽存儲部存儲表明所述回寫指令沒有被提供的內(nèi)容。借此,在所述標簽存儲部中管理所述回寫指令的有/無。
[0008]有利地,所述預(yù)定指令可以是旨在使沒有被提供所述回寫指令的緩存線無效化的指令。借此,在無效化過程中,進行不使原本需要的共用數(shù)據(jù)無效化的控制。
[0009]有利地,可以在新執(zhí)行線程的處理之前提供所述預(yù)定指令且可以在進行線程的處理之后提供所述回寫指令。
[0010]有利地,所述標簽存儲部可以被構(gòu)造用來為各緩存線存儲表明所述緩存線是有效還是無效的有效性標志,以及表明與所述緩存線相對應(yīng)的數(shù)據(jù)是否被命令回寫至所述共用存儲部的回與標志。
[0011]本發(fā)明的實施例提供了一種處理器,其包括:指令處理部;標簽存儲部,所述標簽存儲部被構(gòu)造用來為緩沖存儲器的各緩存線管理所述緩存線是否有效,并且管理是否被提供用于向共用存儲部回寫的回寫指令;和標簽控制部,所述標簽控制部被構(gòu)造用來:當從所述指令處理部提供預(yù)定指令時,不使已經(jīng)被提供所述回寫指令的緩存線無效化并且使沒有被提供所述回寫指令的緩存線無效化。這提供了如下功能:當從所述指令處理部提供所述預(yù)定指令時,進行不使原本需要的共用數(shù)據(jù)無效化的控制。
[0012]根據(jù)本發(fā)明的實施例,提出了一種信息處理系統(tǒng),其包括:共用存儲部;指令處理部;標簽存儲部,所述標簽存儲部被構(gòu)造用來為緩沖存儲器的各緩存線管理所述緩存線是否有效,并且管理是否被提供用于向所述共用存儲部回寫的回寫指令;和標簽控制部,所述標簽控制部被構(gòu)造用來:當從所述指令處理部提供預(yù)定指令時,不使已經(jīng)被提供所述回寫指令的緩存線無效化并且使沒有被提供所述回寫指令的緩存線無效化。這提供了如下功能:當從所述指令處理部提供所述預(yù)定指令時,進行不使共用數(shù)據(jù)(所述共用數(shù)據(jù)提供用于向所述共用存儲部回寫的所述回寫指令)無效化的控制。
[0013]根據(jù)本發(fā)明的實施例,提出了一種緩存控制方法,其包括:接收旨在使沒有被提供用于從緩沖存儲器回寫至共用存儲部的回寫指令的緩存線無效化的無效化指令;并且當接收到所述無效化指令時,避免使已經(jīng)被提供所述回寫指令的緩存線無效化,并且使沒有被提供所述回寫指令的緩存線無效化。這提供了進行不使原本需要的共用數(shù)據(jù)無效化的控制的功能。
[0014]根據(jù)本發(fā)明的上述實施例,能夠在動態(tài)線程調(diào)度環(huán)境下有效地保持緩沖存儲器中的數(shù)據(jù)的一致性。
[0015]應(yīng)當理解,前面的一般性說明和下面的詳細說明都是示例性的,且都旨在對如權(quán)利要求所要求保護的技術(shù)提供進一步的說明。
【專利附圖】
【附圖說明】
[0016]這里所包括的附圖提供了對本發(fā)明的進一步理解,這些附圖被并入本說明書中且構(gòu)成本說明書的一部分。附圖圖示了實施例,并且與本說明書一起用來解釋本發(fā)明的原理。
[0017]圖1圖示了本發(fā)明實施例中的信息處理系統(tǒng)的整體構(gòu)造示例。
[0018]圖2圖示了本發(fā)明實施例中的本地緩存120的構(gòu)造示例。
[0019]圖3圖示了本發(fā)明實施例中的標簽存儲部130的構(gòu)造示例。
[0020]圖4圖示了本發(fā)明實施例中的標簽控制部140的功能構(gòu)造示例。
[0021]圖5圖示了在本發(fā)明的實施例中,當指令處理部110提供回寫指令時,標簽存儲部130的轉(zhuǎn)變示例。
[0022]圖6是在本發(fā)明的實施例中,當指令處理部110提供有條件的無效化指令時的呈現(xiàn)處理過程示例的流程圖。
[0023]圖7圖示了在本發(fā)明的實施例中,當指令處理部110提供有條件的無效化指令時,標簽存儲部130的轉(zhuǎn)變示例。
[0024]圖8是本發(fā)明的實施例中的呈現(xiàn)線程處理的處理過程示例的流程圖。
[0025]圖9圖示了多線程編程中的線程之間的關(guān)系的示例。
[0026]圖10圖示了在圖9的多線程編程示例中的緩存線的轉(zhuǎn)變。
【具體實施方式】
[0027]下面將參照附圖對本發(fā)明的實施例進行說明。將以下面的順序提供說明。
[0028]1.實施例(本地緩沖存儲器的標簽控制)
[0029]2.應(yīng)用示例(應(yīng)用至多線程編程的應(yīng)用示例)
[0030][1.實施例]
[0031][信息處理系統(tǒng)的構(gòu)造]
[0032]圖1圖示了本發(fā)明實施例中的信息處理系統(tǒng)的整體構(gòu)造示例。在這個信息處理系統(tǒng)中,多個處理器100連接至共用存儲器200。每個處理器100都包括指令處理部110和本地緩存120。
[0033]指令處理部110執(zhí)行程序中包含的各種指令。指令執(zhí)行所需的數(shù)據(jù)存儲在共用存儲器200中。指令處理部110響應(yīng)于讀取指令(加載指令)從共用存儲器200讀取數(shù)據(jù)。此時,當含有目標數(shù)據(jù)的緩存線被保持在本地緩存120中時,通過從本地緩存120中獲取數(shù)據(jù)來減少讀取時間。
[0034]本地緩存120是設(shè)置用來保持存儲在共用存儲器200中的數(shù)據(jù)的緩沖存儲器。在這個實施例的信息處理系統(tǒng)中,本地緩存120是與每個處理器100對應(yīng)設(shè)置的,且因此需要在保持相互一致性的同時進行處理。將在后面詳細說明與此相關(guān)的控制。
[0035]共用存儲器200是多個處理器100共用的存儲器。在這里,將在假設(shè)設(shè)置有包含共用存儲器和本地緩存的二級層次作為存儲層次結(jié)構(gòu)的前提下進行說明。然而,可以各種方式修改層次結(jié)構(gòu),諸如,進一步設(shè)置共用緩存并使用本地緩存作為二級緩存等。應(yīng)當注意,共用存儲器200是本發(fā)明一個實施例中的“共用存儲部”的特定示例而不是限制性示例。
[0036][本地緩存的構(gòu)造]
[0037]圖2圖示了本發(fā)明實施例中的本地緩存120的構(gòu)造示例。每個本地緩存120包括標簽存儲部130、標簽控制部140、數(shù)據(jù)存儲部150和數(shù)據(jù)控制部160。指令處理部110通過信號線118連接至標簽控制部140,且通過信號線119連接至數(shù)據(jù)控制部160。此外,共用存儲器200被信號線128連接至標簽控制部140,且被信號線129連接至數(shù)據(jù)控制部160。
[0038]數(shù)據(jù)存儲部150是為各緩存線設(shè)置用來存儲與共用存儲器200的一部分相對應(yīng)的數(shù)據(jù)的存儲器。標簽存儲部130是設(shè)置用來存儲與各緩存線相對應(yīng)的標簽地址和緩存線的管理所需的管理信息的存儲器。下面,將在假設(shè)采用直接映射法的前提下進行說明,盡管也可以米用組相聯(lián)法(set associative method)。
[0039]標簽控制部140設(shè)直用來根據(jù)來自指令處理部110的指令,參照和更新存儲在標簽存儲部130中的標簽地址和管理信息。數(shù)據(jù)控制部160設(shè)置用來管理存儲在數(shù)據(jù)存儲部150中的緩存線。
[0040]當從指令處理部110發(fā)出讀取指令時,標簽控制部140根據(jù)標簽地址和管理信息來判斷適用的數(shù)據(jù)是否保持在數(shù)據(jù)存儲部150中。當數(shù)據(jù)存儲在數(shù)據(jù)存儲部150中時,標簽控制部140將緩存命中(cache hit)通知數(shù)據(jù)控制部160。另一方面,當數(shù)據(jù)沒有存儲在數(shù)據(jù)存儲部150中時,標簽控制部140將緩存缺失(cache miss)通知數(shù)據(jù)控制部160。
[0041]當?shù)玫絹碜詷撕灴刂撇?40的緩存命中的通知時,數(shù)據(jù)控制部160從數(shù)據(jù)存儲部150中讀取適用的緩存線并將讀取的緩存線返回至指令處理部110。另一方面,當?shù)玫絹碜詷撕灴刂撇?40的緩存缺失的通知時,數(shù)據(jù)控制部160從共用存儲器200中讀取適用的緩存線,將讀取的緩存線返回至指令處理部110并且將讀取的緩存線分配為新的緩存線。
[0042]當從指令處理部110發(fā)出寫入指令時,標簽控制部140根據(jù)標簽地址和管理信息判斷適用的數(shù)據(jù)是否保持在數(shù)據(jù)存儲部150中。當數(shù)據(jù)保持在數(shù)據(jù)存儲部150中時,標簽控制部140更新緩存線并將這一事件記錄在管理信息中。在這個實施例中,在假設(shè)使用不立即將更新的緩存線回寫至共用存儲器的方法(回拷貝法)的前提下進行說明。然而,可以采用立即將更新的緩存線回寫的方法(直寫法)。應(yīng)當注意,在發(fā)出寫入指令時適用的數(shù)據(jù)沒有被保持在數(shù)據(jù)存儲部150中的情況下,通過確保新的緩存線使數(shù)據(jù)存儲部150存儲寫入數(shù)據(jù)。
[0043]除了請求數(shù)據(jù)的讀取和寫入,指令處理部110向本地緩存120發(fā)送用來改變緩存的狀態(tài)的顯式緩存操作指令(explicit cache operating instruct1n)。使緩存上的數(shù)據(jù)回寫至存儲器的回寫指令和使緩存上的數(shù)據(jù)無效化的無效化指令等通常被稱為這樣的顯式緩存操作指令。在這個實施例中,新引入有條件的無效化指令作為顯式緩存操作指令,所述有條件的無效化指令使未被提供有回寫指令的緩存線無效化。
[0044]圖3圖示了本發(fā)明實施例中的標簽存儲部130的構(gòu)造示例。標簽存儲部130存儲與數(shù)據(jù)存儲部150的各緩存線相對應(yīng)的標簽地址和緩存線的管理所需的管理信息。具體地,存儲有效標志(V) 131、臟標志(D ) 132和回寫(WB )標志133作為管理信息。此外,標簽地址存儲在標簽134中。
[0045]有效標志131是表示相應(yīng)的緩存線的有效性的標志。在下文中,例如,當緩存線有效時假設(shè)有效標志131表示為“1”,且當緩存線無效時假設(shè)有效標志131表示為“O”。當緩存線被無效化時,有效標志131被重置為“O”。應(yīng)當注意,有效標志131是本發(fā)明一個實施例中“有效性標志”的特定示例而非限制性示例。
[0046]臟標志132是表示相應(yīng)的緩存線是否與共用存儲器200的內(nèi)容相一致的標志。在下文中,例如,當一致的時候假設(shè)臟標志132表示為“0”,且當不一致的時候假設(shè)臟標志132表示為“I”。當保持在本地緩存120中的數(shù)據(jù)被校正(更新)時,臟標志132表示為“1”,直至數(shù)據(jù)被回寫至共用存儲器200。
[0047]回寫標志133是表示是否對相應(yīng)的緩存線提供向共用存儲器200的回寫指令的標志。在下文中,例如,當提供回寫指令時假設(shè)回寫標志133表示為“1”,且當不提供回寫指令時假設(shè)回寫標志133表示為“O”。在此情況下,當由指令處理部110提供回寫指令時,回寫標志133被斷言(assert)為“I”。隨后,當由指令處理部110提供有條件的無效化指令時,回寫標志133被重置為“O”。此外,當由于緩存缺失的發(fā)生導致數(shù)據(jù)被新分配在緩存上時,適用的緩存線的回寫標志133進入重置狀態(tài)。
[0048]標簽134存儲共用存儲器200中的地址的相應(yīng)緩存線的那部分地址存儲為標簽地址。
[0049][本地緩存的操作]
[0050]圖4圖示了本發(fā)明實施例中的標簽控制部140的功能構(gòu)造示例。這里,作為標簽控制部140的功能,分別設(shè)置有回寫處理部141和無效化處理部142。
[0051]回寫處理部141設(shè)置用來在指令處理部110提供回寫指令的時候進行處理。通過數(shù)據(jù)控制部160進行向共用存儲器200的數(shù)據(jù)回寫。在這個處理中,回寫處理部141對回寫標志133進行斷言。
[0052]無效化處理部142設(shè)置用來在指令處理部110提供有條件的無效化指令的時候進行處理。當提供有條件的無效化指令時,當回寫標志133表示為“I”時無效化處理部142不進行無效化,并且僅當回寫標志133表示為“O”時無效化處理部142進行無效化。當提供回寫指令時,假定將數(shù)據(jù)傳輸至其它處理器的意圖并借此來控制無效化。因此,當回寫標志133表示為“O”時,無效化處理部142將有效標志131重置為“0”,且當回寫標志133表示為“I”時,無效化處理部142在不改變有效標志131的情況下將回寫標志133重置為“O”。
[0053]圖5圖示了在本發(fā)明的實施例中,當由指令處理部110提供回寫指令時,標簽存儲部130的轉(zhuǎn)變示例。在圖5中,表示標志可以是“O”或“I”。
[0054]當對有效標志131表示為“I”的緩存線進行回寫時,回寫標志133被斷言為“I”。此外,由于回寫,緩存線與共用存儲器200的內(nèi)容相一致,且因此臟標志132被重置為“O”。
[0055]圖6是在本發(fā)明的實施例中,當由指令處理部110提供有條件的無效化指令時,呈現(xiàn)處理過程示例的流程圖。
[0056]首先,一旦收到來自指令處理部110的有條件的無效化指令(步驟S911:是),就檢查有效標志131 (步驟S912)。當有效標志131表示為“O”時(步驟S912:是),處理不進行任何操作而結(jié)束(步驟S913)。此時,有效標志131表示為“0”,且回寫標志133是“O”或“I”。
[0057]當有效標志131表示為“I”時(步驟S912:否),檢查回寫標志133 (步驟S914)。當回寫標志133表示為“O”時(步驟S914:是),將有效標志131重置為“0”,且因此使緩存線無效化(步驟S915)。當回寫標志133表示為“I”時(步驟S914:否),將有效標志131保持在“1”,且將回寫標志133重置為“O”(步驟S916)。
[0058]圖7圖示了在本發(fā)明的實施例中,當由指令處理部110提供有條件的無效化指令時,標簽存儲部130的轉(zhuǎn)變示例。在圖7中,表示標志可以是“O”或“I”。
[0059]根據(jù)有效標志131表示為“I”的緩存線的有條件的無效化指令,當回寫標志133表示為“O”時,進行無效化,但是當回寫標志133表示為“I”時,不進行無效化。此外,即使不進行無效化,臟標志132也沒有變化。
[0060][2.應(yīng)用示例]
[0061]下面將說明本發(fā)明的實施例應(yīng)用于多線程編程的示例。
[0062][線程中的處理]
[0063]圖8是本發(fā)明的實施例中的呈現(xiàn)線程處理的處理過程示例的流程圖。線程處理的主要部分是數(shù)據(jù)參照和更新(步驟S902)。然而,進行緩存線的無效化作為預(yù)處理(步驟S901)。作為這個階段的無效化,進行基于上述有條件的無效化指令的無效化處理。此外,在完成數(shù)據(jù)參照和更新之后,進行緩存線的回寫作為后處理(步驟S903)。
[0064]當在線程處理的最后提供回寫指令時(步驟S903),假定了這樣的意圖:為了其它新的線程處理需要傳輸數(shù)據(jù)。且因此,數(shù)據(jù)被主動地用于新線程。因此,當回寫標志133是“I”時,在不被無效化的情況下利用緩存線(步驟S901)。這使得能夠進行不使原本需要的共用數(shù)據(jù)無效化的控制。
[0065][具體示例]
[0066]圖9圖示了多線程編程中的線程之間的關(guān)系的示例。在這里,假設(shè)使用A、B、C和D四個線程。數(shù)據(jù)X和數(shù)據(jù)Y是在線程A中新定義的。數(shù)據(jù)X在線程B中被參照和更新為數(shù)據(jù)X’。數(shù)據(jù)Y在線程C中被參照和更新為數(shù)據(jù)Y’。此外,數(shù)據(jù)X’和數(shù)據(jù)Y’在線程D中被參照。
[0067]線程和處理器的分配如下??梢栽谔幚砥?i或處理器捫中進行線程A和線程B。在不進行線程B的處理器中進行線程C。在執(zhí)行線程B的處理器和執(zhí)行線程C的處理器中的后完成執(zhí)行的那個處理器中進行線程D。在這個示例中,假設(shè)在處理器#1中進行線程A、B和D,假設(shè)在處理器#j中進行線程C。
[0068]以下面的步驟進行線程A中的處理。
[0069]A-1:對于所有的緩存條目(cache entry),進行考慮了回寫標志133的緩存線的有條件的無效化。在這里,使所有的緩存線無效化。
[0070]A-2:定義和參照數(shù)據(jù)X和數(shù)據(jù)Y。含有數(shù)據(jù)X和數(shù)據(jù)Y的緩存線可能是臟的。
[0071]A-3:將含有數(shù)據(jù)X和數(shù)據(jù)Y的緩存線回寫到共用存儲器200。含有數(shù)據(jù)X和數(shù)據(jù)Y的緩存線是臟的這種可能性就不存在了。當含有數(shù)據(jù)X和數(shù)據(jù)Y的緩存線有效時,回寫標志133被斷言為“I”。
[0072]以下面的步驟進行線程B中的處理。
[0073]B-1:對于所有的緩存條目,進行考慮了回寫標志133的緩存線的有條件的無效化。當含有數(shù)據(jù)X和數(shù)據(jù)Y的緩存線有效時,在不進行無效化的情況下將回寫標志133重置為“O”。另一方面,因為回寫標志133是“0”,所以剩余的緩存線被無效化。
[0074]B-2:參照線程A中定義的數(shù)據(jù)X,然后將數(shù)據(jù)X更新為數(shù)據(jù)X’。含有數(shù)據(jù)X’的緩存線可能是臟的。
[0075]B-3:將含有數(shù)據(jù)X’的緩存線回寫至共用存儲器200。含有數(shù)據(jù)X’的緩存線是臟的這種可能性就不存在了。當含有數(shù)據(jù)X’的緩存線有效時,回寫標志133被斷言為“I”。
[0076]以下面的步驟進行線程C中的處理。
[0077]C-1:對于所有的緩存條目,進行考慮了回寫標志133的緩存線的有條件的無效化。所有的緩存線被無效化。
[0078]C-2:參照線程A中定義的數(shù)據(jù)Y,然后將數(shù)據(jù)Y更新為數(shù)據(jù)Y’。含有數(shù)據(jù)Y’的緩存線可能是臟的。
[0079]C-3:將含有數(shù)據(jù)Y’的緩存線回寫到共用存儲器200。含有數(shù)據(jù)Y’的緩存線是臟的這種可能性就不存在了。當含有數(shù)據(jù)Y’的緩存線有效時,回寫標志133被斷言為“I”。
[0080]以下面的步驟進行線程D中的處理。
[0081]D-1:對于所有的緩存條目,進行考慮了回寫標志133的緩存線的有條件的無效化。當含有數(shù)據(jù)X’的緩存線有效時,將回寫標志133重置為“O”。另一方面,因為回寫標志133是“O”,所以剩余的緩存線被無效化。
[0082]D-2:參照線程B和線程C中定義的數(shù)據(jù)X’和數(shù)據(jù)Y’。含有數(shù)據(jù)X’和數(shù)據(jù)Y’的緩存線是臟的這種可能性是不存在的。
[0083]D-3:將含有數(shù)據(jù)X’和數(shù)據(jù)Y’的緩存線回寫到共用存儲器。含有數(shù)據(jù)X’和數(shù)據(jù)Y’的緩存線是臟的這種可能性是不存在的。當含有數(shù)據(jù)X’和數(shù)據(jù)Y’的緩存線有效時,回寫標志133被斷言為“I”。
[0084]這里,在D-2中,關(guān)于數(shù)據(jù)X’,有效數(shù)據(jù)可以存在于本地緩存120,且因此,通過利用本地緩存120上的數(shù)據(jù),可以有望提高系統(tǒng)的處理性能。此外,關(guān)于數(shù)據(jù)Y’,可以肯定的是更新之前的數(shù)據(jù)Y不在緩存上,且因此通過進行從共用存儲器200中讀取能夠可靠地存取正確的數(shù)據(jù)。
[0085]以這樣的方式,對于不是共用數(shù)據(jù)的數(shù)據(jù),在每個線程處理的開始進行無效化,并因此能夠抑制不必要的回寫。
[0086]圖10圖示了圖9的多線程編程示例中的緩存線的轉(zhuǎn)變。
[0087]在圖10的“a”中,在線程A的開始時,處理器針的緩存線均處于無效狀態(tài)。圖10的“b”中表示的是這樣的狀態(tài):數(shù)據(jù)X、數(shù)據(jù)Y和數(shù)據(jù)Z在線程A的處理中被定義。圖10的“c”中表示的是這樣的狀態(tài):在線程A的最后為數(shù)據(jù)X和數(shù)據(jù)Y提供回寫指令。
[0088]圖10的“d”中表示的是在線程B的開始,在處理器#i的緩存線中,數(shù)據(jù)Z是無效的而數(shù)據(jù)X和數(shù)據(jù)Y不是無效的。圖10的“e”表示的是這樣的狀態(tài):數(shù)據(jù)X在線程B的處理中被更新為數(shù)據(jù)X’。圖10的“f”表示的是這樣的狀態(tài):在線程B的最后為數(shù)據(jù)X’提供回寫指令。
[0089]在圖10的“g”中,在線程C的開始,處理器#j的緩存線均處于無效狀態(tài)。圖10的“h”中表示的是這樣的狀態(tài):在線程C的處理中參照數(shù)據(jù)Y。圖10的“i”中表示的是這樣的狀態(tài):在線程C的處理中數(shù)據(jù)Y被更新為數(shù)據(jù)Y’。圖10的“ j”中表示的是這樣的狀態(tài):在線程C的最后為數(shù)據(jù)Y’提供回寫指令。
[0090]圖10的“k”中表示的是在線程D的開始,在處理器#i的緩存線中,數(shù)據(jù)Y是無效的而數(shù)據(jù)X’不是無效的。圖10的“I”表示的是這樣的狀態(tài):在線程D的處理中參照數(shù)據(jù)Y’。該數(shù)據(jù)Y’是從處理器#j回寫到共用存儲器200,然后被分配到處理器#i的數(shù)據(jù)。圖10的“m”表示的是這樣的狀態(tài):在線程D的最后為數(shù)據(jù)X’和數(shù)據(jù)Y’提供回寫指令。
[0091]這樣,根據(jù)本發(fā)明的實施例,在動態(tài)線程調(diào)度環(huán)境下保持緩沖存儲器中數(shù)據(jù)的一致性的過程中,能夠進行不使原本需要的共用數(shù)據(jù)無效化的控制。
[0092]應(yīng)當注意,上述實施例是用來實現(xiàn)本發(fā)明的示例,且上述實施例中的元件與本發(fā)明一個實施例中的元件相對應(yīng)。類似地,本發(fā)明一個實施例中的元件與設(shè)置有與上述實施例中相同設(shè)計的元件相對應(yīng)。然而,本發(fā)明不限于上述實施例,且可以在不脫離本發(fā)明主旨的范圍內(nèi)通過對上述實施例進行各種修改來實現(xiàn)。
[0093]從本發(fā)明的上述示例實施例可知,能夠?qū)崿F(xiàn)至少下面的構(gòu)造。
[0094](I) 一種緩存控制裝置,其包括:
[0095]標簽存儲部,所述標簽存儲部被構(gòu)造用來為緩沖存儲器的各緩存線管理所述緩存線是否有效,并且管理是否被提供用于向共用存儲部回寫的回寫指令;和
[0096]標簽控制部,所述標簽控制部被構(gòu)造用來:當提供預(yù)定指令時,不使已經(jīng)被提供所述回寫指令的緩存線無效化并且使沒有被提供所述回寫指令的緩存線無效化。
[0097](2)根據(jù)(I)所述的緩存控制裝置,其中,所述標簽控制部被構(gòu)造用來在所述回寫指令被提供時使所述標簽存儲部存儲表明回寫指令被提供的內(nèi)容,且對于已經(jīng)被提供了所述回寫指令的緩存線,所述標簽控制部被構(gòu)造用來在所述預(yù)定指令被提供時使所述標簽存儲部存儲表明所述回寫指令沒有被提供的內(nèi)容。
[0098](3)根據(jù)(I)或(2)所述的緩存控制裝置,其中,所述預(yù)定指令是旨在使未被提供所述回寫指令的緩存線無效化的指令。
[0099](4)根據(jù)(I )至(3)中任一項所述的緩存控制裝置,其中,在新執(zhí)行線程的處理之前提供所述預(yù)定指令。
[0100](5)根據(jù)(I)至(4)中任一項所述的緩存控制裝置,其中,在進行線程的處理之后提供所述回寫指令。
[0101](6)根據(jù)(I)至(5)中任一項所述的緩存控制裝置,其中,所述標簽存儲部被構(gòu)造用來為各緩存線存儲有效性標志和回寫標志,
[0102]所述有效性標志表明該緩存線是有效的還是無效的,
[0103]所述回寫標志表明與所述緩存線相對應(yīng)的數(shù)據(jù)是否被命令回寫至所述共用存儲部。
[0104](7)—種處理器,其包括:
[0105]指令處理部;
[0106]標簽存儲部,所述標簽存儲部被構(gòu)造用來為緩沖存儲器的各緩存線管理所述緩存線是否有效,并且管理是否被提供用于向共用存儲部回寫的回寫指令;和
[0107]標簽控制部,所述標簽控制部被構(gòu)造用來:當從所述指令處理部提供預(yù)定指令時,不使已經(jīng)被提供所述回寫指令的緩存線無效化并且使沒有被提供所述回寫指令的緩存線無效化。
[0108](8) 一種信息處理系統(tǒng),其包括:
[0109]共用存儲部;
[0110]指令處理部;
[0111]標簽存儲部,所述標簽存儲部被構(gòu)造用來為緩沖存儲器的各緩存線管理所述緩存線是否有效,并且管理是否被提供用于向所述共用存儲部回寫的回寫指令;和
[0112]標簽控制部,所述標簽控制部被構(gòu)造用來:當從所述指令處理部提供預(yù)定指令時,不使已經(jīng)被提供所述回寫指令的緩存線無效化并且使沒有被提供所述回寫指令的緩存線無效化。
[0113](9) 一種緩存控制方法,其包括:
[0114]接收旨在使沒有被提供用于從緩沖存儲器回寫至共用存儲部的回寫指令的緩存線無效化的無效化指令;并且
[0115]當接收到所述無效化指令時,避免使已經(jīng)被提供所述回寫指令的緩存線無效化,并且使沒有被提供所述回寫指令的緩存線無效化。
[0116]本領(lǐng)域技術(shù)人員應(yīng)當理解,依據(jù)設(shè)計要求和其他因素,可以在本發(fā)明隨附的權(quán)利要求或其等同物的范圍內(nèi)進行各種修改、組合、次組合以及改變。
[0117]相關(guān)申請的交叉參考
[0118]本申請主張享有于2013年3月14日提交的日本優(yōu)先權(quán)專利申請JP2013-51324的優(yōu)先權(quán),并將該日本優(yōu)先權(quán)申請的全部內(nèi)容以引用的方式并入本文。
【權(quán)利要求】
1.一種緩存控制裝置,其包括: 標簽存儲部,所述標簽存儲部被構(gòu)造用來為緩沖存儲器的各緩存線管理所述緩存線是否有效,并且管理是否被提供用于向共用存儲部回寫的回寫指令;和 標簽控制部,所述標簽控制部被構(gòu)造用來:當提供預(yù)定指令時,不使已經(jīng)被提供所述回寫指令的緩存線無效化并且使沒有被提供所述回寫指令的緩存線無效化。
2.根據(jù)權(quán)利要求1所述的緩存控制裝置,其中,所述標簽控制部被構(gòu)造用來在所述回寫指令被提供時使所述標簽存儲部存儲表明回寫指令被提供的內(nèi)容,且對于已經(jīng)被提供了所述回寫指令的緩存線,所述標簽控制部被構(gòu)造用來在所述預(yù)定指令被提供時使所述標簽存儲部存儲表明所述回寫指令沒有被提供的內(nèi)容。
3.根據(jù)權(quán)利要求1或2所述的緩存控制裝置,其中,所述預(yù)定指令是使未被提供所述回寫指令的緩存線無效化的指令。
4.根據(jù)權(quán)利要求1或2所述的緩存控制裝置,其中,在新執(zhí)行線程的處理之前提供所述預(yù)定指令。
5.根據(jù)權(quán)利要求1或2所述的緩存控制裝置,其中,在進行線程的處理之后提供所述回寫指令。
6.根據(jù)權(quán)利要求1或2所述的緩存控制裝置,其中,所述標簽存儲部被構(gòu)造用來為各緩存線存儲有效性標志和回寫標志, 所述有效性標志表明該緩存線是有效的還是無效的, 所述回寫標志表明與所述緩存線相對應(yīng)的數(shù)據(jù)是否被命令回寫至所述共用存儲部。
7.一種處理器,其包括: 緩存控制裝置,所述緩存控制裝置是如權(quán)利要求1至6中任一項所述的緩存控制裝置; 指令處理部,所述指令處理部用于提供所述預(yù)定指令。
8.—種信息處理系統(tǒng),其包括: 緩存控制裝置,所述緩存控制裝置是如權(quán)利要求1至6中任一項所述的緩存控制裝置; 所述共用存儲部; 指令處理部,所述指令處理部用于提供所述預(yù)定指令。
9.一種緩存控制方法,其包括如下步驟: 接收旨在使沒有被提供用于從緩沖存儲器回寫至共用存儲部的回寫指令的緩存線無效化的無效化指令;并且 當接收到所述無效化指令時,不使已經(jīng)被提供所述回寫指令的緩存線無效化,并且使沒有被提供所述回寫指令的緩存線無效化。
【文檔編號】G06F12/08GK104050095SQ201410080790
【公開日】2014年9月17日 申請日期:2014年3月6日 優(yōu)先權(quán)日:2013年3月14日
【發(fā)明者】三浦剛, 芳川洋 申請人:索尼公司