亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

具有多個處理器、緩存電路和共享存儲器的數(shù)據(jù)處理系統(tǒng)的制作方法

文檔序號:6478716閱讀:135來源:國知局
專利名稱:具有多個處理器、緩存電路和共享存儲器的數(shù)據(jù)處理系統(tǒng)的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及用于使用緩存存儲器同時處理關(guān)于多個計(jì)算機(jī)程序的數(shù)據(jù)的多處理電路。
背景技術(shù)
在同時執(zhí)行的、使用共享數(shù)據(jù)的計(jì)算機(jī)程序的設(shè)計(jì)中,已知使用所謂的釋放一致 性模型。使用該模型以避免在對來自不同程序的共享數(shù)據(jù)的訪問上強(qiáng)加嚴(yán)格的計(jì)時關(guān)系。當(dāng)形成一個程序的指令從存儲位置讀取共享數(shù)據(jù)并且來自另一程序的指令向相 同位置寫入時,讀取指令的結(jié)果將根據(jù)執(zhí)行寫入指令的相關(guān)時間的不同而不同。如果必須 避免這種差異,則這可能使得同時執(zhí)行的程序和多處理電路的設(shè)計(jì)非常復(fù)雜。避免這種問題的一個方式是使用釋放一致性模型。釋放一致性模型需要在程序 中使用同步指令。這些指令典型地稱作獲取和釋放指令。當(dāng)程序必須向共享數(shù)據(jù)寫入時, 該程序必須首先包含針對該數(shù)據(jù)的獲取指令,之后是寫入指令,所述寫入指令之后必須是 針對該數(shù)據(jù)的釋放指令。另一方面,多處理電路的硬件實(shí)現(xiàn)必須被設(shè)計(jì)為(a)確保該多處 理電路不允許在接著前一獲取指令而執(zhí)行完整的釋放指令之前完成獲取指令的執(zhí)行,以及 (b)確保釋放指令僅在先前寫入的數(shù)據(jù)對所有程序可見之后完成。可以通過為共享數(shù)據(jù)對象提供信號旗(semaphore)(標(biāo)志數(shù)據(jù))來實(shí)現(xiàn)釋放一致 性模型,所述信號旗針對每個數(shù)據(jù)對象指示是否已經(jīng)針對該數(shù)據(jù)對象執(zhí)行了獲取指令并且 在該獲取指令之后尚未有相應(yīng)的釋放指令。當(dāng)執(zhí)行獲取指令時,讀取相關(guān)的信號旗并將該 信號旗設(shè)置為一個不可分割的讀取修改寫入操作,僅在發(fā)現(xiàn)信號旗先前并不處于置位狀態(tài) 的情況下完成獲取指令的執(zhí)行。否則,重復(fù)讀取修改寫入操作。當(dāng)執(zhí)行釋放指令時,清除信 號旗。除了共享存儲器之外,多處理器還可以包括針對相應(yīng)處理器的緩存存儲器,用于 存儲來自共享存儲器的數(shù)據(jù)的拷貝。在多處理器系統(tǒng)中,緩存存儲器可能引起一致性問題。典型地,在一個處理器寫入了數(shù)據(jù)之后,硬件必須確保檢驗(yàn)所寫入的數(shù)據(jù)的拷貝 是否存儲在任何其他處理器的緩存存儲器中。如果是,則必須在這些緩存存儲器中更新所 寫入的數(shù)據(jù),或者必須使這些緩存存儲器中具有舊數(shù)據(jù)的緩存線(cache line)無效。當(dāng)使用具有緩存存儲器的多處理器來執(zhí)行使用釋放一致性模型的程序時,必須確 保不能在不同的緩存存儲器中獨(dú)立地設(shè)置信號旗。否則,釋放一致性模型可能降低緩存一 致性需求,這是因?yàn)樵趫?zhí)行釋放指令之前會出現(xiàn)緩存更新。不幸地,對于維持緩存一致性的需要導(dǎo)致了大量的信號開銷。當(dāng)緩存的數(shù)目增大 時,這種開銷不均衡地提高。

發(fā)明內(nèi)容
本發(fā)明的目的是提供一種具有緩存存儲器的多處理器電路,該處理器電路需要更 小的開銷來確保一致性。
權(quán)利要求1中闡述了一種操作這種多處理電路的方法。在該方法中,每當(dāng)執(zhí)行針 對數(shù)據(jù)對象的釋放指令和/或獲取指令時,緩存電路中包含來自數(shù)據(jù)對象的數(shù)據(jù)的所有緩 存線都無效。從而,使用處理器的程序的釋放/獲取指令來避免緩存不一致性,而無需使用 監(jiān)聽或類似的開銷來維持緩存一致性。在實(shí)施例中,可以在執(zhí)行獲取與釋放指令之間使用 緩存管理,所述緩存管理并不對來自所獲取的數(shù)據(jù)對象的數(shù)據(jù)與其他數(shù)據(jù)進(jìn)行區(qū)分。因此, 例如,可以依賴于對共享存儲器地址的訪問,將具有來自所獲取的數(shù)據(jù)對象的數(shù)據(jù)的緩存 線加載或不加載到緩存中,正如具有其他數(shù)據(jù)的緩存線一樣。作為另一示例,當(dāng)需要讓出空 間時,可以將具有來自所獲取的數(shù)據(jù)對象的數(shù)據(jù)的緩存線從緩存中去除,正如具有其他數(shù) 據(jù)的緩存線一樣。然而,當(dāng)執(zhí)行釋放指令時,對數(shù)據(jù)加以區(qū)別,即,來自數(shù)據(jù)對象的數(shù)據(jù)如果 在緩存中則該數(shù)據(jù)無效。在實(shí)施例中,回寫(write back)緩沖器用于以先入先出順序從處理器向共享存儲器發(fā)送寫入操作。在該實(shí)施例中,可以通過檢測是否緩沖器中的所有寫入操作記錄都已經(jīng) 過處理,來控制釋放指令的完成。從而,可以利用很小的開銷來實(shí)現(xiàn)對釋放指令的執(zhí)行的控 制。在回寫緩沖器用于以先入先出順序從處理器向共享存儲器發(fā)送寫入操作的該實(shí) 施例或另一實(shí)施例中,可以根據(jù)緩存數(shù)據(jù)是否屬于所獲取的數(shù)據(jù)對象來針對緩存的數(shù)據(jù)使 用不同的回寫機(jī)制。可以經(jīng)由回寫緩沖器來寫入來自所獲取的數(shù)據(jù)對象的數(shù)據(jù),可以通過 在從緩存中去除臟緩存線時拷貝回該臟緩存線,來寫入其他數(shù)據(jù)。因此,每當(dāng)在數(shù)據(jù)處于所 獲取的數(shù)據(jù)對象之外的情況下寫入數(shù)據(jù)時,可以避免回寫該數(shù)據(jù)。


使用以下附圖,通過示例實(shí)施例的描述,這些和其他對象和優(yōu)點(diǎn)方面將變得顯而 易見,附圖中圖1示出了多處理器電路。圖2a、b示出了緩存電路。圖3-4示出了緩存電路。
具體實(shí)施例方式圖1示出了多處理器電路。多處理器電路包括多個處理單元11、共享存儲器12。 每個處理單元包括處理器10以及耦合在處理器10與共享存儲器12之間的緩存電路14。 共享存儲器12包括主存儲器120和標(biāo)志存儲器122。在操作中,處理器10彼此并行地執(zhí)行相應(yīng)的程序。處理器10所進(jìn)行的數(shù)據(jù)訪問 由它們的相關(guān)緩存電路14來管理。當(dāng)所存取的數(shù)據(jù)的地址對應(yīng)于數(shù)據(jù)拷貝在緩存電路14中的存儲地址時,在緩存 電路14中存取該數(shù)據(jù)。否則,在主存儲器120中訪問數(shù)據(jù)。可以在操作期間將主存儲器120中的地址的 數(shù)據(jù)拷貝加載到緩存電路14中。典型地,每次加載緩存線,包括多個鄰接地址的數(shù)據(jù)。例如,可以在程序?qū)碜跃?存線中的地址的數(shù)據(jù)進(jìn)行訪問時,或在預(yù)測到程序需要數(shù)據(jù)時,執(zhí)行該操作。
標(biāo)志存儲器122用于確保釋放一致性。標(biāo)志存儲器122存儲信號旗標(biāo)志,所述信號旗標(biāo)志針對主存儲器120中的相應(yīng)數(shù)據(jù)對象指示這些數(shù)據(jù)對象是否已被任何處理器10 獲取。盡管主存儲器120和標(biāo)志存儲器122被示為單獨(dú)的存儲器單元,然而應(yīng)當(dāng)意識到,實(shí) 際上主存儲器120和標(biāo)志存儲器122可以與單個存儲器電路中的不同地址區(qū)域相對應(yīng)。當(dāng) 處理器10執(zhí)行指定了數(shù)據(jù)對象的獲取指令時,處理器10針對標(biāo)志存儲器120中的該數(shù)據(jù) 對象來執(zhí)行讀取修改寫入動作。讀取修改寫入動作意味著在標(biāo)志讀取及其修改之間不允許 其它處理器10訪問標(biāo)志存儲器。一旦處理器10成功設(shè)置了標(biāo)志,則處理器10繼續(xù)進(jìn)行后續(xù)指令,所述后續(xù)指令可 以包括寫入指令,所述寫入指令的地址與對獲取指令所指示的數(shù)據(jù)對象的一部分加以存儲 的位置相對應(yīng)。在這些指令之后,處理器10執(zhí)行指定數(shù)據(jù)對象的釋放指令。響應(yīng)于該指令, 清除針對該數(shù)據(jù)對象的標(biāo)志,使得其他處理器可以成功設(shè)置標(biāo)志。在實(shí)施例中,處理器10 通過使處理器10的緩存電路14中的包含來自所釋放的數(shù)據(jù)對象的數(shù)據(jù)的拷貝的緩存線無 效,來對釋放指令作出響應(yīng)。應(yīng)注意,除了正常緩存管理之外還可以執(zhí)行這些操作。即,除 了獲取和釋放指令之外,緩存電路14還可以判定對來自緩存存儲器20中的數(shù)據(jù)對象的數(shù) 據(jù)進(jìn)行加載還是保留,而不考慮該數(shù)據(jù)是否屬于該數(shù)據(jù)對象。因此,來自數(shù)據(jù)對象的部分或 所有數(shù)據(jù)可以甚至不被加載到緩存存儲器中,或者可以出于緩存管理的原因而在釋放指令 之前被無效。然而,如果在執(zhí)行釋放指令時該數(shù)據(jù)仍然在緩存存儲器20中,則在本實(shí)施例 中可以選擇性地使包含該數(shù)據(jù)的任何緩存線無效。應(yīng)注意,這對來自所獲取和所釋放的數(shù)據(jù)對象的數(shù)據(jù)與其他數(shù)據(jù)進(jìn)行了區(qū)分。出 于緩存管理目的,并不需要對所述其他數(shù)據(jù)和來自所獲取的對象的數(shù)據(jù)進(jìn)行區(qū)分可以出 于管理原因隨意地將這兩者加載到緩存或從緩存中丟棄。然而,在本實(shí)施例中,來自所獲取 的數(shù)據(jù)對象的數(shù)據(jù)特殊之處在于,當(dāng)執(zhí)行針對數(shù)據(jù)對象的釋放指令時使該數(shù)據(jù)無效。應(yīng)意識到,在該實(shí)施例中,對于僅包含私有數(shù)據(jù)(即,沒有獲取的數(shù)據(jù))的緩存線 和包含所獲取的數(shù)據(jù)在內(nèi)的緩存線而言,緩存管理是不同的。僅具有私有數(shù)據(jù)的緩存線可 以在任何時間間隔內(nèi)保持在緩存中,直到緩存管理電路選擇去除該緩存線為止,例如,以便 為其他緩存數(shù)據(jù)讓出空間。相反,當(dāng)執(zhí)行釋放指令時,使具有來自所獲取的數(shù)據(jù)對象的數(shù)據(jù) 的緩存線無效。在備選實(shí)施例中,處理器10通過使處理器10的緩存電路14中的包含來自所獲取 的數(shù)據(jù)對象的數(shù)據(jù)的拷貝的緩存線無效,來對數(shù)據(jù)對象的獲取指令作出響應(yīng)。應(yīng)注意,除了 正常緩存管理之外還可以執(zhí)行這些操作。除了響應(yīng)于釋放指令使數(shù)據(jù)對象的緩存線無效之 夕卜,還可以實(shí)現(xiàn)響應(yīng)于針對數(shù)據(jù)對象的獲取指令使存儲數(shù)據(jù)對象的數(shù)據(jù)的緩存線無效;或 者可以實(shí)現(xiàn)響應(yīng)于針對數(shù)據(jù)對象的獲取指令使存儲數(shù)據(jù)對象的數(shù)據(jù)的緩存線無效,而不響 應(yīng)于釋放指令使數(shù)據(jù)對象的緩存線無效。在每一種情況下,確保另一處理器對數(shù)據(jù)對象的 修改不能影響緩存線中數(shù)據(jù)的有效性??梢钥紤]甚至在釋放調(diào)用之后在緩存中保留數(shù)據(jù)并在獲取調(diào)用之后使用該數(shù)據(jù) (如果該數(shù)據(jù)仍然在緩存中),然而在這種情況下有必要一旦任何其他處理器執(zhí)行獲取指 令就使數(shù)據(jù)無效或阻止該數(shù)據(jù)的使用。如果數(shù)據(jù)保留在緩存中,則必須在其他處理器的釋 放調(diào)用完成之前,根據(jù)其他處理器的寫入操作在每個緩存中更新該緩存中的數(shù)據(jù)。執(zhí)行這 一操作的現(xiàn)有方法包括總線監(jiān)聽(監(jiān)控存儲器總線以檢測緩存數(shù)據(jù)的更新)和基于目錄的緩存相干性,其中訪問目錄以確定具有緩存中的數(shù)據(jù)的處理器。通過響應(yīng)于釋放指令而進(jìn)行無效,使得既不需要總線監(jiān)聽也不需要目錄訪問。在實(shí)施例中,通過執(zhí)行指令以讀取修改寫入并清除在標(biāo)志存儲器處定向的標(biāo)志, 由處理器10來處理對信號旗標(biāo)志的訪問。然而,應(yīng)理解,備選地,緩存電路14可以被配置為執(zhí)行這些任務(wù)的一部分或全部。 在這種情況下,緩存電路14可以被配置為響應(yīng)于來自處理器10的指示執(zhí)行獲取指令的信 號來設(shè)置來自標(biāo)志存儲器122的信號旗標(biāo)志,以及被配置為至少在對所獲取的數(shù)據(jù)的寫入 指令下停止相關(guān)的處理器10,直到成功設(shè)置了標(biāo)志為止。類似地,緩存電路14可以被配置 為響應(yīng)于來自處理器10的指示執(zhí)行釋放指令的信號從標(biāo)志存儲器122中清除信號旗標(biāo)志。類似地,可以在處理器10或緩存電路14的控制下執(zhí)行包含來自數(shù)據(jù)對象的數(shù)據(jù) 的緩存線的無效。處理器硬件可以被配置為以如下方式來對數(shù)據(jù)對象(例如,地址值的范 圍)的釋放和/或獲取指令作出響應(yīng),即,通過信號通知緩存電路14該數(shù)據(jù)對象的緩存數(shù) 據(jù)(如果存在的話)必須被無效。相關(guān)硬件也可以是緩存電路14的一部份。備選地,可以使用單獨(dú)的指令由軟件來控制該操作,所述指令用于清除針對數(shù)據(jù) 對象的標(biāo)志以及用于使針對所選地址的緩存線無效。圖2a示出了緩存電路14的實(shí)施例。緩存電路14包括緩存存儲器20、FIF0(先入 先出)緩沖器22、緩存管理電路24以及回寫電路26。緩存存儲器20耦合至其相關(guān)處理器 (未示出)的地址連接21a和數(shù)據(jù)連接21b。地址和數(shù)據(jù)連接還耦合至FIFO緩沖器22。地 址連接耦合至緩存管理電路24。緩存管理電路24的輸出耦合至主共享存儲器(未示出) 以及耦合至緩存電路14的各個單元。為了清楚起見,圖中省略了這些連接中的大多數(shù)。在操作中,緩存存儲器20存儲數(shù)據(jù)以及與數(shù)據(jù)的共享存儲器地址有關(guān)的信息。當(dāng) 緩存電路24從相關(guān)處理器接收地址時,緩存存儲器20將接收到的地址與該信息進(jìn)行比較, 如果發(fā)現(xiàn)相關(guān)數(shù)據(jù)存儲在緩存存儲器中,則緩存存儲器20訪問該相關(guān)數(shù)據(jù)。否則,緩存管 理電路24從共享存儲器取相關(guān)數(shù)據(jù),以提供給處理器,可選地將數(shù)據(jù)的拷貝寫入緩存存儲 器20 ο緩存管理電路24確定數(shù)據(jù)將被寫入緩存存儲器20的共享存儲器地址以及數(shù)據(jù)將 不再存儲在緩存存儲器20中的共享存儲器地址。這些地址的確定可以基于緩存管理算法, 所述緩存管理算法并不對來自所獲取的數(shù)據(jù)對象的數(shù)據(jù)與其他數(shù)據(jù)進(jìn)行區(qū)分。當(dāng)處理器10執(zhí)行寫入指令時,如果針對寫入指令地址的數(shù)據(jù)是緩存存儲器20,則 將寫入數(shù)據(jù)存儲在緩存存儲器20中。與向緩存存儲器20的寫入(如果存在的話)并行地, 將寫入操作記錄輸入FIFO緩沖器22中,每個寫入操作記錄包括所寫入的數(shù)據(jù)值和寫入地 址。FIFO緩沖器22和回寫電路26提供了由處理器10來更新的數(shù)據(jù)的回寫?;貙戨娐?6 從FIFO緩沖器22得到寫入操作記錄,并按照將寫入操作記錄輸入FIFO緩沖器22的順序 對共享存儲器執(zhí)行相應(yīng)的寫入操作。圖2b示出了一個實(shí)施例,在該實(shí)施例中,如果將緩存線從緩存存儲器20去除,并 且更新了緩存線中的數(shù)據(jù)(在這種情況下將數(shù)據(jù)稱作是臟的),則緩存電路14將緩存線回 寫到共享存儲器。在該實(shí)施例中,數(shù)據(jù)是所獲取的數(shù)據(jù)對象的一部分,并且根據(jù)執(zhí)行回寫的 方式來以不同方式處理其他數(shù)據(jù)??梢詮纳衔目闯觯@取的數(shù)據(jù)對象表示與其他處理器 共享的數(shù)據(jù),而其他數(shù)據(jù)被看作是處理器的私有數(shù)據(jù)。
當(dāng)停止存儲私有數(shù)據(jù)并且在從共享存儲器復(fù)制了數(shù)據(jù)之后緩存存儲器20響應(yīng)于 來自處理器的寫入指令而更新了該數(shù)據(jù)時,緩存管理電路24使得將該數(shù)據(jù)從緩存存儲器 20提供給回寫電路26,以將數(shù)據(jù)回寫到共享存儲器??梢宰⒁獾?,如果沒有獲取的數(shù)據(jù)是 僅會由任何處理器讀取(不是寫入)的數(shù)據(jù),則數(shù)據(jù)可以是私有數(shù)據(jù),即使該數(shù)據(jù)可以由多 于一個處理器來讀取。因此,可以針對這種私有數(shù)據(jù)來省略獲取/釋放指令。應(yīng)注意,從FIFO緩沖器22提供給回寫電路26的數(shù)據(jù)的粒度典型地小于來自緩存 存儲器20的數(shù)據(jù)的粒度。緩存存儲器20每次提供數(shù)據(jù)的緩存線(例如,針對256個字地 址位置),而FIFO緩沖器22每次提供針對單個寫入訪問的數(shù)據(jù),如,單個字。在所示實(shí)施例中,回寫電路26用于以不同方式對程序的所獲取數(shù)據(jù)和私有數(shù)據(jù) 進(jìn)行處理?;貙戨娐?6確保了當(dāng)從緩存去除緩存線時僅從緩存存儲器20回寫私有數(shù)據(jù), 并且確保了僅通過FIFO緩沖器22回寫共享數(shù)據(jù)。在回寫電路26中,過濾器260對數(shù)據(jù)進(jìn) 行過濾。過濾器260確定數(shù)據(jù)的地址是否屬于第一預(yù)定的地址集合。第一預(yù)定的集合可以 與所獲取的數(shù)據(jù)對象的地址相對應(yīng)。僅將具有第一預(yù)定集合中的地址的寫入操作記錄從 FIFO緩沖器22傳送至寫入控制電路262。相反,僅從緩存存儲器20傳送具有第二預(yù)定集 合(是第一預(yù)定集合的補(bǔ)集)中的地址的數(shù)據(jù)。寫入控制電路262對已經(jīng)被過濾器傳送至 共享存儲器的數(shù)據(jù)進(jìn)行回寫。在簡單的實(shí)施例中,第一預(yù)定集合是由邊界地址來限定的,所述邊界地址將必須 存儲所獲取的對象的共享存儲器地址范圍與可以存儲私有數(shù)據(jù)的地址范圍分開。在該實(shí)施 例中,過濾器260可以包括比較器,所述比較器用于將數(shù)據(jù)的地址與邊界地址進(jìn)行比較。在 另一實(shí)施例中,地址的僅有限數(shù)目的比特、可能甚至僅單個比特用于比較。在實(shí)施例中,緩 存電路被配置為使得邊界地址是例如響應(yīng)于來自與緩存電路14相關(guān)聯(lián)的處理器的指令而 可編程的。以這種方式,處理器的程序可以控制針對不同地址的回寫類型。在其他實(shí)施例 中,第一預(yù)定集合可以是由存儲器映射來限定的,所述存儲器映射限定了不同的地址區(qū)域, 對于這些地址區(qū)域而言回寫類型是不同的。這種存儲器映射也可以是從相關(guān)存儲器可編程 的。使用邊界地址,例如通過測試單個比特,在動態(tài)分布的所獲取的數(shù)據(jù)對象(如,被鏈接 的列表)的情況下簡化了測試。應(yīng)注意,還可以利用緩存電路14的備選實(shí)施例來實(shí)現(xiàn)類似的選擇。圖3示出了多 個可能的變體,這些變體可以獨(dú)立地或以組合方式應(yīng)用于緩存電路。在處理器的地址和數(shù) 據(jù)連接21a、b與FIFO緩沖器22之間放置了第一過濾器30。第一過濾器30僅傳送與第一 預(yù)定集合中的地址相關(guān)的寫入訪問的數(shù)據(jù)和地址。示出了第二過濾器32被置于緩存管理 電路24與寫入控制電路262之間。當(dāng)緩存管理電路24以信號通知應(yīng)當(dāng)對緩存線進(jìn)行回寫 時激活第二過濾器32。僅當(dāng)緩存線的地址屬于第二預(yù)定集合時,第二過濾器32才傳送該信 號。應(yīng)意識到,該實(shí)施例基于以下觀察在從緩存存儲器去除具有私有數(shù)據(jù)的緩存線 之前,不需要從這些緩存線回寫數(shù)據(jù)。因此,如果先前更新了具有私有數(shù)據(jù)的緩存線,則當(dāng) 從該緩存存儲器去除該緩存線時,優(yōu)選地與該緩存線的回寫相結(jié)合,通過對寫入操作記錄 進(jìn)行過濾,可以減少回寫操作的數(shù)目。圖4示出了緩存電路的另一實(shí)施例,其中從寫入控制電路262向處理器10提供反 饋信號。在該實(shí)施例中,其中FIFO緩沖器22還用于緩沖釋放操作記錄,以清除標(biāo)志存儲器122中的信號旗。由于回寫電路按照在FIFO緩沖器22中輸入的順序來讀取釋放操作記錄 和寫入操作記錄,所以在實(shí)施了所有先前寫入之后將在共享存儲器12中實(shí)施釋放指令。在 另一實(shí)施例中,處理器10被配置為在釋放指令之后停止,直到緩存電路14的寫入控制電路 262產(chǎn)生已實(shí)施釋放指令的確認(rèn)信息。備選地,處理器10可以被配置為在釋放指令之后繼 續(xù)進(jìn)行,以及被配置為如果尚未接收到確認(rèn)信號,則僅當(dāng)執(zhí)行下一獲取指令或更具體地針 對相同數(shù)據(jù)的獲取指令時停止。在該實(shí)施例中,F(xiàn)IFO緩沖器22被配置為對指示哪些所緩存的操作記錄與寫入指 令相關(guān)以及哪些與釋放指令相關(guān)的信息進(jìn)行緩沖。寫入控制電路262被配置為根據(jù)如從 FIFO緩沖器22接收到的該信息來實(shí)施寫入,寫入數(shù)據(jù)并清除標(biāo) 志。寫入控制電路262被配 置為當(dāng)完成向處理器10回寫標(biāo)志時產(chǎn)生確認(rèn)信號。在備選實(shí)施例中,釋放指令可以用于設(shè)置緩存電路14中的標(biāo)志存儲器(未示出)。 在該實(shí)施例中,F(xiàn)IFO緩沖器22耦合至標(biāo)志存儲器的重置輸入,以當(dāng)FIFO緩沖器22為空時 重置標(biāo)志。相關(guān)的處理器10耦合至標(biāo)志存儲器,并且被配置為當(dāng)執(zhí)行釋放指令時停止,直 到清除標(biāo)志存儲器。備選地,相關(guān)的處理器10可以被配置為繼續(xù)進(jìn)行,如果仍設(shè)置了標(biāo)志 存儲器,則僅當(dāng)該處理器10執(zhí)行下一獲取指令或更具體地針對相同數(shù)據(jù)對象的獲取指令 時該處理器10停止。在實(shí)施例中,不同的處理器可以同時獲取不同的數(shù)據(jù)對象。在這種情況下,獲取和 釋放指令優(yōu)選地指定這些指令應(yīng)用到的數(shù)據(jù)對象(從而指定了它們的信號旗標(biāo)志)。由于 無效處理伴隨針對數(shù)據(jù)對象的釋放和/或獲取指令,所以避免了不同緩存之間的任何不一 致性??蛇x地,在這種情況下,可以在不同的并聯(lián)FIFO緩沖器22中緩沖針對不同數(shù)據(jù)對象 的寫入操作記錄,這是因?yàn)?,如果針對該?shù)據(jù)對象的先前寫入操作已經(jīng)完成,則可以完成針 對該數(shù)據(jù)對象的釋放指令,而不管向其他所獲取的數(shù)據(jù)對象的寫入操作的狀態(tài)。在這種情 況下,寫入控制電路262可以被配置為對于來自FIFO緩沖器22的寫入操作記錄的處理給 出優(yōu)先級,其中針對該寫入操作記錄接收到釋放指令。如果來自不同的所獲取的數(shù)據(jù)對象的數(shù)據(jù)可以存儲在相同的緩存線中,并且緩存 電路14被配置為當(dāng)執(zhí)行針對數(shù)據(jù)對象的獲取指令時使包含來自該對象的數(shù)據(jù)的緩存線無 效,則這在這種緩存線由于訪問另一先前獲取的數(shù)據(jù)對象而已經(jīng)在緩存存儲器中時防止了 不一致性。此外,除了使用多個數(shù)據(jù)對象以外,當(dāng)執(zhí)行針對數(shù)據(jù)對象的獲取指令時使針對該 數(shù)據(jù)對象的緩存線無效具有的優(yōu)點(diǎn)是對于非正常程序終止更具魯棒性,而不用釋放數(shù)據(jù) 對象或改變存儲對象的存儲器區(qū)域。當(dāng)執(zhí)行釋放指令時使數(shù)據(jù)對象的緩存線無效具有的優(yōu) 點(diǎn)是當(dāng)在處理的某一階段允許在不使用獲取指令的情況下使用數(shù)據(jù)對象時,可以避免不 一致性。通過研究附圖、本公開和所附權(quán)利要求,在實(shí)現(xiàn)要求保護(hù)的本發(fā)明的過程中,本領(lǐng) 域技術(shù)人員可以理解和實(shí)施所公開的實(shí)施例的其他變體。在權(quán)利要求中,詞語“包括”不排 除其他元件或步驟,不定冠詞“一個”或“一種”不排除多個。單個處理器或其他單元可以實(shí) 現(xiàn)權(quán)利要求中所闡述的若干項(xiàng)的功能。在互不相同的從屬權(quán)利要求中闡述特定措施并不表 示這些措施的組合不能得到有利使用。計(jì)算機(jī)程序可以存儲/分布在合適的介質(zhì)上(如,光 學(xué)存儲介質(zhì),或者與其他硬件一起提供或作為其他硬件的一部分而提供的固態(tài)介質(zhì)),然而 也可以以其他形式分發(fā)計(jì)算機(jī)程序,如經(jīng)由互聯(lián)網(wǎng)或其他有限或無線通信系統(tǒng)來分發(fā)。權(quán)利要求中的任何參考標(biāo)記不應(yīng)被解釋為限制范圍.
權(quán)利要求
一種利用多個處理單元(11)對來自共享存儲器(12)的數(shù)據(jù)進(jìn)行處理的方法,其中,通過執(zhí)行針對數(shù)據(jù)對象的獲取和釋放指令來控制對所述數(shù)據(jù)對象的訪問,每個處理單元(11)包括處理器(10)以及用于對來自共享存儲器(12)的數(shù)據(jù)進(jìn)行緩存的緩存電路(14),所述方法包括以下步驟-僅在每個處理器(10)中完成針對數(shù)據(jù)對象的獲取指令的執(zhí)行與執(zhí)行針對數(shù)據(jù)對象的釋放指令之間,在每個處理器(10)中執(zhí)行訪問數(shù)據(jù)對象的指令;-僅當(dāng)檢測到?jīng)]有處理器(10)先前執(zhí)行過針對數(shù)據(jù)對象的獲取指令而沒有隨后完成針對數(shù)據(jù)對象的釋放指令的執(zhí)行時,完成獲取指令;-對每個處理器(10)的釋放指令的完成進(jìn)行延遲,直到在先根據(jù)處理器(10)的在釋放指令之前并對數(shù)據(jù)對象中的數(shù)據(jù)進(jìn)行尋址的所有寫入指令,完成從針對該處理器的緩存電路(14)向共享存儲器(12)回寫數(shù)據(jù);-每當(dāng)執(zhí)行數(shù)據(jù)對象的釋放指令和/或請求指令時,選擇性地使緩存電路(14)的包含來自所述數(shù)據(jù)對象的數(shù)據(jù)的所有緩存線無效。
2.根據(jù)權(quán)利要求1所述的方法,包括-在每個處理單元(11)中,對在所述處理單元(11)中執(zhí)行的寫入指令的寫入操作記錄 進(jìn)行緩沖;-按照處理單元(11)已執(zhí)行寫入指令的順序,根據(jù)所緩沖的寫入操作記錄來執(zhí)行向共 享存儲器(12)的寫入操作;-檢測處理單元(11)在釋放指令之前執(zhí)行過的寫入指令的所有寫入操作記錄是否都 已被用于執(zhí)行向共享存儲器(12)的寫入操作,并僅在所述檢測之后完成釋放指令。
3.根據(jù)權(quán)利要求1所述的方法,包括-在每個處理單元(11)中,對在所述處理單元(11)中執(zhí)行的寫入指令的寫入操作記錄 進(jìn)行緩沖;-針對在處理單元(11)中向數(shù)據(jù)對象中的數(shù)據(jù)執(zhí)行的寫入指令,選擇性地根據(jù)所緩沖 的寫入操作記錄來執(zhí)行向共享存儲器的寫入操作;-選擇性地針對沒有存儲來自數(shù)據(jù)對象的數(shù)據(jù)的緩存線,當(dāng)從緩存電路(14)去除緩存 線時,根據(jù)緩存電路(14)的緩存線中存儲的數(shù)據(jù)來執(zhí)行向共享存儲器(12)的寫入操作。
4.根據(jù)權(quán)利要求1所述的方法,包括在獲取指令和釋放指令之間的處理器(10)的指 令執(zhí)行期間,對緩存的數(shù)據(jù)執(zhí)行緩存管理,而與緩存的數(shù)據(jù)是否屬于通過先前獲取指令所 獲取的數(shù)據(jù)對象無關(guān)。
5.一種數(shù)據(jù)處理系統(tǒng),包括-共享存儲器(12),包括標(biāo)志存儲器(122),被配置為存儲信號旗標(biāo)志,所述信號旗標(biāo) 志用于指示是否已獲取數(shù)據(jù)對象;-多個處理單元(11),每個處理單元(11)包括處理器(10),每個處理器(10)被配置 為僅在完成用于設(shè)置信號旗標(biāo)志的獲取指令的執(zhí)行和執(zhí)行用于清除信號旗標(biāo)志的釋放指 令前之間,訪問共享存儲器(12)中的數(shù)據(jù)對象;-每個處理單元(11)包括用于對來自共享存儲器(12)的數(shù)據(jù)進(jìn)行緩存的緩存電路 (14),其中至少一個處理單元(11)被配置為與針對數(shù)據(jù)對象的釋放指令和/或請求指令 的執(zhí)行相結(jié)合,使包含來自數(shù)據(jù)對象的數(shù)據(jù)的所有緩存線無效。
6.根據(jù)權(quán)利要求5所述的數(shù)據(jù)處理系統(tǒng),其中,所述至少一個處理單元(11)的緩存電 路(14)包括-可尋址的緩存存儲器(20),耦合至所述至少一個處理單元(11)的緩存電路(14)的 處理器(10);-緩沖器(22),耦合至所述至少一個處理單元(11)的處理器(10),用于對處理器(10) 所執(zhí)行的寫入指令的寫入操作記錄進(jìn)行緩沖;-寫入控制電路(26),用于按照所述緩沖器(22)接收寫入操作記錄的順序,根據(jù)寫入 操作記錄來實(shí)施向共享存儲器的寫入操作;-其中,所述至少一個處理單元(11)被配置為在釋放指令之后對信號旗標(biāo)志的清除 進(jìn)行延遲,直到確定在開始執(zhí)行釋放指令之前已發(fā)布的所有寫入操作記錄都已從緩沖器 (22)被傳送至共享存儲器(12)。
7.根據(jù)權(quán)利要求5所述的數(shù)據(jù)處理系統(tǒng),其中,緩沖器(22)被配置為對所述至少一個 處理單元(11)的處理器(10)所執(zhí)行的釋放指令的釋放操作記錄進(jìn)行緩沖,寫入控制電路 (26)被配置為按照已在所述緩沖器(22)中緩沖的寫入操作記錄和釋放操作記錄的順序 來讀取這些記錄,以及使處理器(10)能夠在根據(jù)在開始執(zhí)行釋放指令之前發(fā)布的寫入操 作記錄來實(shí)施寫入操作之后,當(dāng)讀取釋放操作記錄時,完成釋放指令的執(zhí)行。
8.根據(jù)權(quán)利要求7所述的數(shù)據(jù)處理系統(tǒng),其中,寫入控制電路(26)被配置為響應(yīng)于釋 放操作記錄來清除信號旗標(biāo)志。
9.根據(jù)權(quán)利要求5所述的數(shù)據(jù)處理系統(tǒng),其中,所述至少一個處理單元(11)的緩存電 路(14)包括-可尋址的緩存存儲器(20),耦合至包含緩存電路(14)的所述至少一個處理單元(11) 的處理器(10);-緩沖器(22),耦合至所述至少一個處理單元(11)的處理器(10),用于對從處理器 (10)發(fā)布的寫入指令的寫入操作記錄進(jìn)行緩沖;-寫入控制電路(26),用于按照在所述緩沖器(22)中緩沖寫入操作記錄的順序,根據(jù) 寫入操作記錄來向共享存儲器(12)實(shí)施寫入操作;-其中,寫入控制電路(26)被配置為針對在處理單元中執(zhí)行的對數(shù)據(jù)對象中的數(shù)據(jù) 的寫入指令,根據(jù)所緩沖的寫入操作記錄來選擇性地執(zhí)行向共享存儲器(12)的寫入操作; 以及當(dāng)從緩存電路(14)去除緩存線時,針對沒有存儲來自數(shù)據(jù)對象的數(shù)據(jù)的緩存線,選擇 性地根據(jù)緩存電路(14)的緩存線中存儲的數(shù)據(jù)來執(zhí)行向共享存儲器(12)的寫入操作。
10.根據(jù)權(quán)利要求9所述的數(shù)據(jù)處理系統(tǒng),其中,寫入控制電路(26)被配置為分別檢測 是否針對數(shù)據(jù)對象執(zhí)行了寫入操作以及緩存線是否沒有存儲來自數(shù)據(jù)對象的數(shù)據(jù),所述檢 測均基于寫入操作中的地址和緩存線中的數(shù)據(jù)的地址。
11.根據(jù)權(quán)利要求9所述的數(shù)據(jù)處理系統(tǒng),包括過濾器(30),所述過濾器(30)被配置 為針對沒有對數(shù)據(jù)對象中的數(shù)據(jù)進(jìn)行尋址的寫入指令,阻止將寫入操作記錄輸入緩沖器 (22)中。
全文摘要
利用多個處理單元(11)處理來自共享存儲器(12)的數(shù)據(jù)。通過執(zhí)行針對數(shù)據(jù)對象的獲取和釋放指令控制對數(shù)據(jù)對象的訪問,每個處理單元(11)包括處理器(10)和用于對來自共享存儲器(12)的數(shù)據(jù)進(jìn)行緩存的緩存電路(14)。僅在每個處理器(10)中完成針對數(shù)據(jù)對象的獲取指令的執(zhí)行與執(zhí)行針對數(shù)據(jù)對象的釋放指令之間,在每個處理器中執(zhí)行訪問數(shù)據(jù)對象的指令。僅當(dāng)檢測到?jīng)]有處理器(10)先前執(zhí)行過針對數(shù)據(jù)對象的獲取指令而沒有隨后完成針對數(shù)據(jù)對象的釋放指令的執(zhí)行時,完成獲取指令的執(zhí)行。對每個處理器(10)的釋放指令的完成進(jìn)行延遲,直到根據(jù)處理器(10)的在釋放指令之前并對數(shù)據(jù)對象中的數(shù)據(jù)加以尋址的所有寫入指令,完成先前從處理器的緩存電路(14)向共享存儲器(12)回寫數(shù)據(jù)。每當(dāng)執(zhí)行針對數(shù)據(jù)對象的釋放指令和/或請指令時,選擇性地使包含來自數(shù)據(jù)對象的數(shù)據(jù)的緩存電路(14)的所有緩存線無效。
文檔編號G06F9/46GK101828173SQ200880111762
公開日2010年9月8日 申請日期2008年10月14日 優(yōu)先權(quán)日2007年10月18日
發(fā)明者馬可·J·G·貝庫伊 申請人:Nxp股份有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1