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

用于在處理器中執(zhí)行寫拷貝的方法和設(shè)備的制作方法

文檔序號(hào):6461823閱讀:240來源:國知局
專利名稱:用于在處理器中執(zhí)行寫拷貝的方法和設(shè)備的制作方法
技術(shù)領(lǐng)域
本發(fā)明一般涉及數(shù)據(jù)處理領(lǐng)域,以及更具體地,本發(fā)明涉及一 種用于在處理器中執(zhí)行寫拷貝的方法和設(shè)備。
背景技術(shù)
有些計(jì)算機(jī)程序在運(yùn)行時(shí)需要將修改的數(shù)據(jù)撤銷,也就是將數(shù)據(jù)恢復(fù)到修改之前的狀態(tài),通常將這種恢復(fù)操作稱為回滾操作(roll back)。為了在執(zhí)行回滾時(shí)可以將數(shù)據(jù)恢復(fù)到變化之前的狀態(tài),需要在 應(yīng)用進(jìn)程運(yùn)行期間保存兩份數(shù)據(jù),即, 一份是修改數(shù)據(jù)之前的舊數(shù) 據(jù),而另一份是修改數(shù)據(jù)之后的新數(shù)據(jù)。當(dāng)執(zhí)行回滾時(shí),則丟棄修 改后的新數(shù)據(jù)并恢復(fù)至舊數(shù)據(jù)。在應(yīng)用進(jìn)程運(yùn)行期間保存新舊兩份 數(shù)據(jù),不但需要占用更多的存儲(chǔ)空間,而且應(yīng)用進(jìn)程還需要用于保 存和恢復(fù)數(shù)據(jù)的特定操作,因而整體的運(yùn)行效率大大降低。為了解決上述問題,已經(jīng)開發(fā)出用于數(shù)據(jù)記錄的"寫拷貝(Copy on Write: COW)"技術(shù)。寫拷貝技術(shù)將拷貝和恢復(fù)數(shù)據(jù)的任務(wù)交給 了底層軟硬件,程序員無需在應(yīng)用程序中插入用于拷貝和恢復(fù)的代 碼,減少了應(yīng)用程序的開發(fā)難度。長期以來,在商業(yè)化的處理器中都是通過基于軟件的方法來實(shí) 現(xiàn)寫拷貝,還沒有出現(xiàn)基于硬件的寫拷貝(Hardware-based Copy on Write HCOW)。原因在于,基于軟件的方法可以滿足大多數(shù)傳統(tǒng)應(yīng) 用的要求。然而,隨著計(jì)算機(jī)技術(shù)的發(fā)展,諸如事務(wù)存儲(chǔ)器的某些 新的應(yīng)用提出了快速精細(xì)顆粒度拷貝等的新要求,這使得開發(fā)人員 開始考慮基于硬件的寫拷貝。近年來,為了實(shí)現(xiàn)事務(wù)存儲(chǔ)器,提出了多種支持基于硬件的寫拷貝方法。然而,這些方法運(yùn)行效率較低并且硬件復(fù)雜性較高。因而,本領(lǐng)域需要一種具有精細(xì)拷貝粒度以及高效率的基于硬件的寫拷貝方法。 發(fā)明內(nèi)容為此,本發(fā)明提出了一種用于在處理器中執(zhí)行寫拷貝方法和設(shè)備,用于在處理器的高速緩存(cache)中以高速緩存線為單位來進(jìn) 行高效的數(shù)據(jù)拷貝。根據(jù)本發(fā)明的一方面,提供一種用于在處理器中執(zhí)行寫拷貝的方 法。該處理器可以包括處理器核、在邏輯上劃分為第一L1高速緩存 和第二 Ll高速緩存的Ll高速緩存、以及L2高速緩存。第一L1高 速緩存用于保存新數(shù)據(jù)以及第二L1高速緩存用于保存舊數(shù)據(jù)。該方 法可以包括步驟響應(yīng)于來自所述處理器核的存儲(chǔ)操作,判斷是否 所述L2高速緩存中相應(yīng)的高速緩存線(cache line)已經(jīng)被修改;當(dāng) 確定所述L2高速緩存中相應(yīng)的L2高速緩存線未被修改時(shí),將該相 應(yīng)的L2高速緩存線中的舊數(shù)據(jù)拷貝到所述第二 Ll高速緩存,并且 然后將新數(shù)據(jù)寫入該相應(yīng)的L2高速緩存線;以及當(dāng)確定所迷L2高 速緩存中相應(yīng)的L2高速緩存線被修改時(shí),直接將新數(shù)據(jù)寫入該相應(yīng) 的L2高速緩存線。根據(jù)本發(fā)明的另一方面,提供一種用于在處理器中執(zhí)行寫拷貝的 設(shè)備。該處理器可以包括處理器核、在邏輯上劃分為第一L1高速緩 存和第二 Ll高速緩存的Ll高速緩存、以及L2高速緩存。第一L1 高速緩存用于保存新數(shù)據(jù)以及第二L1高速緩存用于保存舊數(shù)據(jù)。該 設(shè)備可以包括判斷裝置,用于響應(yīng)于來自所述處理器核的存儲(chǔ)操 作,判斷是否L2高速緩存中相應(yīng)的高速緩存線已經(jīng)被修改;以及拷 貝和寫入裝置,用于當(dāng)確定L2高速緩存中相應(yīng)的L2高速緩存線未 被修改時(shí),將該相應(yīng)的L2高速緩存線中的舊數(shù)據(jù)拷貝到第二 Ll高 速緩存,并且然后將新數(shù)據(jù)寫入該相應(yīng)的L2高速緩存線;以及當(dāng)確 定L2高速緩存中相應(yīng)的L2高速緩存線被修改時(shí),直接將新數(shù)據(jù)寫入該相應(yīng)的L2高速緩存線。根據(jù)本發(fā)明的另 一方面,提供一種處理器系統(tǒng)。該系統(tǒng)可以包括 處理器核;在邏輯上劃分為第一L1高速緩存和第二L1高速緩存的 Ll高速緩存,耦合到所述處理器核,其中所述第一L1高速緩存用 于保存新數(shù)據(jù)以及第二L1高速緩存用于保存舊數(shù)據(jù);L2高速緩存, 耦合到L1高速緩存;以及控制器。該控制器被配置為響應(yīng)于來自 所述處理器核的存儲(chǔ)操作,判斷是否L2高速緩存中相應(yīng)的高速緩存 線已經(jīng)被修改;當(dāng)確定L2高速緩存中相應(yīng)的L2高速緩存線未被修 改時(shí),將該相應(yīng)的L2高速緩存線中的舊數(shù)據(jù)拷貝到第二 Ll高速緩 存,并且然后將新數(shù)據(jù)寫入該相應(yīng)的L2高速緩存線;以及當(dāng)確定 L2高速緩存中相應(yīng)的L2高速緩存線被修改時(shí),直接將新數(shù)據(jù)寫入 該相應(yīng)的L2高速緩存線。


結(jié)合附圖并參考以下的詳細(xì)說明,本發(fā)明的特征、優(yōu)點(diǎn)以及其他方面將變得更加明顯,在附圖中圖1是示出了其中可以應(yīng)用本發(fā)明的計(jì)算機(jī)系統(tǒng)架構(gòu)的示意圖; 圖2是示出了其中可以應(yīng)用本發(fā)明的處理器中的高速緩存層次結(jié)構(gòu)的示意圖;圖3是示出了其中可以應(yīng)用本發(fā)明的多核處理器系統(tǒng)的示意圖; 圖4是示出了根據(jù)本發(fā)明的一個(gè)實(shí)施例的處理器系統(tǒng)的結(jié)構(gòu)示 意圖;圖5是示出了根據(jù)本發(fā)明的一個(gè)實(shí)施例的用于執(zhí)行寫拷貝的方法的基本原理的示意圖;圖6是示出了根據(jù)本發(fā)明的一個(gè)實(shí)施例的用于執(zhí)行寫拷貝的方法的流程圖;以及圖7是示出了根據(jù)本發(fā)明的另一個(gè)實(shí)施例的從總線讀取(Read) 消息的流程圖。應(yīng)當(dāng)理解,在全部附圖中,相同的參考標(biāo)記表示相同的部件。具體實(shí)施例本發(fā)明的基本原理在于將L1高速緩存劃分成為兩部分,即L1 高速緩存A,用于保存修改之后的新數(shù)據(jù);以及L1高速緩存B,用 于保存修改之前的舊數(shù)據(jù)。當(dāng)進(jìn)程需要執(zhí)行回滾操作時(shí),將L1高速 緩存B中的舊數(shù)據(jù)恢復(fù)到L2高速緩存中相應(yīng)的Ll高速緩存線。另外,在本發(fā)明中,為了實(shí)現(xiàn)以高速緩存線為單位來進(jìn)行高效 的數(shù)據(jù)拷貝,針對(duì)L2高速緩存中的每條L2高速緩存線設(shè)置一個(gè)標(biāo) 識(shí)位T,用于表示是否對(duì)L2高速緩存線進(jìn)行了修改。這樣,本發(fā)明 提出了一種以高速緩存線為拷貝單位并且在靠近處理器核的Ll高 速緩存和L2高速緩存中進(jìn)行寫拷貝的方法,用以實(shí)現(xiàn)精細(xì)粒度以及 高效的基于硬件的寫拷貝。下面參考附圖詳細(xì)說明根據(jù)本發(fā)明的實(shí)施例。應(yīng)該理解,這些 實(shí)施例僅僅是說明書性的,而并非對(duì)本發(fā)明范圍的限制。下面,首先參考附圖描述本發(fā)明的應(yīng)用環(huán)境。首先參考圖1,圖1示出了其中可以應(yīng)用本發(fā)明的具有單處理器 核的計(jì)算機(jī)系統(tǒng)架構(gòu)100。該架構(gòu)IOO可以包括處理器101、內(nèi)存140、 以及外部存儲(chǔ)設(shè)備150 (例如硬盤、.光盤、閃存等)。處理器101可以包括處理器核110、 Ll高速緩存120和L2高 速緩存130等。眾所周知,處理器核IIO對(duì)以上Ll高速緩存120、 L2高速緩存130、內(nèi)存140和外部存儲(chǔ)設(shè)備150的訪問速度依次降 低。通常,在處理器101內(nèi)部,L1高速緩存120用于在處理器核110 處理數(shù)據(jù)過程期間暫時(shí)存儲(chǔ)數(shù)據(jù)。由于緩存指令和數(shù)據(jù)與處理器在 相同頻率下工作,Ll高速緩存120的存在可減少處理器101與內(nèi)存 140之間的數(shù)據(jù)交換次數(shù),從而提高處理器101的運(yùn)算效率。由于 Ll高速緩存120的容量有限,為了再次提高處理器核的運(yùn)算速度, 設(shè)置了 L2高速緩存130。處理器核IIO在讀取數(shù)據(jù)時(shí),順序依次為Ll高速緩存120、 L2高速緩存130、內(nèi)存140、以及外部存儲(chǔ)設(shè)備150。在設(shè)計(jì)上述多級(jí) 存儲(chǔ)結(jié)構(gòu)的過程中,采用"包含性,,原則。即,Ll高速緩存120中 的所有數(shù)據(jù)均包含在L2高速緩存130之中,L2高速緩存130中的 所有數(shù)據(jù)均包含在內(nèi)存140和外部存儲(chǔ)設(shè)備150之中,依次類推。 即,Ll高速緩存120 c L2高速緩存130 c內(nèi)存140 c外部存 儲(chǔ)"i殳備150。按照本發(fā)明的一個(gè)實(shí)施例,該架構(gòu)100還可以包括用于分別控 制Ll高速緩存120、 L2高速緩存.130、內(nèi)存140以及外部存儲(chǔ)設(shè) 備150的操作的相應(yīng)存儲(chǔ)控制器(沒有示出)。當(dāng)然,也可以通過 單個(gè)存儲(chǔ)控制器來實(shí)現(xiàn)上述多級(jí)存儲(chǔ)結(jié)構(gòu)的控制。圖2示出了其中可以應(yīng)用本發(fā)明的處理器200中的高速緩存層 次結(jié)構(gòu)。在處理器200中,處理器核110可以耦合到Ll高速緩存 120,并且L1高速緩存120可以耦合到L2高速緩存130。當(dāng)處理器核IIO進(jìn)行裝載操作時(shí),處理器核110首先在L1高速 緩存120中進(jìn)行查找,如果命中,則直接從L1高速緩存120中返 回?cái)?shù)據(jù);否則,將嘗試從L2高速緩存130中裝載數(shù)據(jù)。如果命中 L2高速緩存130,則從L2高速緩存130中返回?cái)?shù)據(jù)。已知的是, 處理器核110對(duì)L1高速緩存120以及L2高速緩存130進(jìn)行操作時(shí), 所占用的時(shí)鐘周期數(shù)目存在顯著差異,即對(duì)Ll高速緩存120以及 L2高速緩存130兩者的操作效率顯著不同。對(duì)L1高速緩存120的 訪問通常只需要幾個(gè)時(shí)鐘周期,但是對(duì)于L2高速緩存130的訪問 通常需要幾十個(gè)時(shí)鐘周期。當(dāng)處理器核110進(jìn)行存儲(chǔ)操作時(shí),如果L1高速緩存120未命中, 則直接將數(shù)據(jù)發(fā)送至L2高速緩存130,而并不通過Ll高速緩存 120。如果L1高速緩存120命中,則同時(shí)將數(shù)據(jù)發(fā)送至L1高速緩 存120和L2高速緩存130兩者。這是因?yàn)?,正如上面所述的,?設(shè)計(jì)L1、 L2兩級(jí)高速緩存結(jié)構(gòu)時(shí),采用"包含性"的方法,即,Ll 高速緩存120中的所有數(shù)據(jù)均包含在L2高速緩存130之中。正如 下面將描述的,本發(fā)明對(duì)處理器核的存儲(chǔ)操作過程中做出了改進(jìn)。同樣地,處理器200也可以包括可用于分別控制Ll高速緩存 120和L2高速緩存130的各種操作的高速緩存控制器(沒有示出)。 應(yīng)該理解,也可以通過單個(gè)高速緩存控制器來實(shí)現(xiàn)對(duì)Ll高速緩存 120和L2高速緩存130的控制。
下面描述其中可以應(yīng)用本發(fā)明的多核處理器系統(tǒng)。在多核處理 器中,處理器中的存儲(chǔ)器層次結(jié)構(gòu)設(shè)計(jì)與圖2中類似,不同之處在 于需要在多個(gè)處理器核之間維護(hù)數(shù)據(jù)的 一 致性。
參考圖3,圖3示出了其中可以應(yīng)用本發(fā)明的多核處理器系統(tǒng) 300的示意圖。
如圖3所示,處理器核1 IIO可以耦合到Ll高速緩存120, Ll 高速緩存120可以耦合到L2高速緩存130,以及L2高速緩存130 可以進(jìn)一步耦合到總線340。同樣,.處理器核2 310可以耦合到Ll 高速緩存320, Ll高速緩存320可以耦合到L2高速緩存330,以 及L2高速緩存330可以進(jìn)一步耦合到總線340。
當(dāng)在計(jì)算機(jī)系統(tǒng)中存在兩個(gè)或者多個(gè)處理器核時(shí),可以通過總 線340來在各個(gè)處理器核之間傳送表示多個(gè)處理器核的高速緩存一 致性的消息。所述的高速緩存一致性消息是指,當(dāng)多個(gè)處理器核中 的 一 個(gè)對(duì)由多個(gè)處理器核共享的高速緩存中的數(shù)據(jù)進(jìn)行修改之后, 為保證該數(shù)據(jù)在多個(gè)高速緩存中的副本的數(shù)據(jù)的一致性而在總線上 傳送的消息。如圖3所示,例如處理器核1 110和處理器核2 310將 同一數(shù)據(jù)分別裝載到L1高速緩存120以及L1高速緩存320之中, 如果其中某個(gè)處理器核(例如,處理器核2310)修改了所述數(shù)據(jù), 則其將通過總線340來向其他的處理器核發(fā)送高速緩存一致性消息, 告知所述數(shù)據(jù)已經(jīng)被修改并且進(jìn)行后續(xù)的高速緩存 一 致性處理操 作。通常,通過高速緩存一致性協(xié)議來維護(hù)存儲(chǔ)器中數(shù)據(jù)的一致性。
從以上描述可知,通常以下情況可能改變高速緩存線的狀態(tài) (1)在處理器核中裝載/存儲(chǔ)操作;(2)來自總線的高速緩存一致 性消息。以上具體描述了可以應(yīng)用本發(fā)明的環(huán)境。下面將具體描述根據(jù)
從上面的描述中可知,處理器核對(duì)Ll高速緩存120的操作速度 遠(yuǎn)遠(yuǎn)大于對(duì)L2高速緩存130的操作速度。因此本發(fā)明在實(shí)現(xiàn)寫拷 貝時(shí),針對(duì)Ll高速援存120提出了一種雙高速緩存的方法來實(shí)現(xiàn) 高效的寫拷貝。在L1高速緩存中實(shí)現(xiàn)寫拷貝的另一優(yōu)點(diǎn)在于,可以 提供精細(xì)粒度的寫拷貝,即,以每條高速緩存線為單位來進(jìn)行寫拷
位(4 k)來進(jìn)行的寫拷貝。另外,由于每次進(jìn)行寫拷貝時(shí)顆粒度較 小而需要更短的時(shí)間,由此更進(jìn)一步提高了寫拷貝的效率。
下面參考圖4來詳細(xì)說明根據(jù)本發(fā)明的實(shí)施例的包括雙L1高速 緩存的處理器系統(tǒng)400。
如圖4所示,處理器系統(tǒng)400可以包括處理器核110。處理器核 110可以耦合至Ll高速緩存120,以及L1高速緩存120可以耦合 至L2高速緩存130, L2高速緩存130接著可以通過總線耦合到內(nèi) 部存儲(chǔ)器或者其他處理器。
另外,系統(tǒng)400還可以包括可用于分別控制Ll高速緩存120 和L2高速緩存130的各種操作的Ll高速緩存控制器和L2高速緩 存控制器(沒有示出)。應(yīng)該理解,也可以通過單個(gè)高速緩存控制 器來實(shí)現(xiàn)對(duì)L1高速緩存120和L2高速緩存130的控制。
根據(jù)本發(fā)明,Ll高速緩存120可以在邏輯上分成Ll高速緩存 A122和L1高速緩存B124兩部分。當(dāng)處理器核IIO在非HCOW上 下文中執(zhí)行處理時(shí),L1高速緩存A122和L1高速緩存B124兩者均 用作Ll高速緩存。
另夕卜,根據(jù)本發(fā)明的實(shí)施例,對(duì)于處于L2高速緩存130中的每 條高速緩存線,設(shè)置一標(biāo)識(shí)位T 532,用于指示所述高速緩存線中數(shù) 據(jù)的狀態(tài),例如,當(dāng)高速緩存線沒有被修改時(shí),對(duì)應(yīng)于該高速緩存 線的標(biāo)識(shí)位祐:設(shè)置為0,而當(dāng)該高速i爰存線纟皮1資改時(shí),該標(biāo)識(shí)位;故置 位為1。例如,當(dāng)由HCOW存儲(chǔ)指令(在HCOW上下文中的存儲(chǔ)指令)修改某高速緩存線中數(shù)據(jù)時(shí),對(duì)應(yīng)于該高速緩存線的標(biāo)識(shí)位置 位為1。
可替換地,也可以將標(biāo)識(shí)位T設(shè)置為當(dāng)高速緩存線沒有被修 改時(shí),對(duì)應(yīng)于該高速緩存線的標(biāo)識(shí)位被設(shè)置為1,而當(dāng)該高速緩存線 ^d'多改時(shí),該標(biāo)識(shí)位^皮置位為0。
可替換地,也可以通過表的形式來分別記錄各個(gè)L1高速緩存線 的狀態(tài)。應(yīng)當(dāng)理解,在本發(fā)明中,只要能夠?qū)崿F(xiàn)L1高速緩存中的每 條L1高速緩存線的狀態(tài)的記錄即可,并不限于上述形式。
在本發(fā)明的實(shí)施例中,當(dāng)處理器核110在HCOW上下文中執(zhí)行 操作時(shí),Ll高速緩存A 122的操作與常規(guī)的高速緩存相同,但是在 Ll高速緩存B24之中僅保存數(shù)據(jù)的舊值。此時(shí),通過HCOW存儲(chǔ) 指令存儲(chǔ)的每個(gè)數(shù)據(jù)都具有兩個(gè)拷貝,分別處于Ll高速緩存A 122 和L1高速緩存B 124之中,并且L1高速緩存A 122中保存新值, 而在Ll高速緩存B 124中保存舊值。 一旦需要執(zhí)行回滾操作時(shí),則 利用Ll高速緩存B 124中保存的舊數(shù)值進(jìn)行恢復(fù),并丟棄在L1高 速緩存A 122中保存的值。
現(xiàn)在參考圖5,其中示出了本發(fā)明的一個(gè)實(shí)施例的用于執(zhí)行寫拷 貝方法的基本原理。
在圖5的處理器系統(tǒng)500中,處理器核110可以耦合至Ll高速 緩存120,以及L1高速緩存120可以耦合至L2高速緩存130。正 如以上所述的,可以將L1高速緩存120在邏輯上劃分成為Ll高速 緩存A 122以及Ll高速緩存B 124兩部分。
如圖5所示,當(dāng)處理器核110向高速緩存存儲(chǔ)數(shù)據(jù)(存儲(chǔ)操作) 時(shí),如圖5中的箭頭A所示,如果處理器核100命中Ll高速緩存A 112中高速緩存線532,則處理器核IIO將新數(shù)據(jù)保存在高速緩存線 532處,接著如箭頭B所示從高速緩存A122返回。
然后,在L2高速緩存130中查找與高速緩存線532相對(duì)應(yīng)的 L2高速緩存線,并且找到L2高速緩存線536 (如箭頭C所示)。
根據(jù)本發(fā)明的實(shí)施例,如果與L2高速緩存線536對(duì)應(yīng)的標(biāo)識(shí)位T 532的值為0,表示該Ll高速緩存536沒有被修改過,這時(shí),將 L2高速緩存線536中的數(shù)據(jù)拷貝到Ll高速緩存B 124之中相應(yīng)的 Ll高速緩存線534處(如箭頭D所示)。然后將新數(shù)據(jù)寫入L2高 速緩存線536,并且將L2高速緩存線536的標(biāo)識(shí)位的值設(shè)置為1, 表示L2高速緩存線536已經(jīng)被修改過
另一方面,如果與L2高速緩存線536相應(yīng)的標(biāo)識(shí)位T532的值 為l,表示L2高速緩存線536中的數(shù)據(jù)之前已經(jīng)由HCOW存儲(chǔ)指令 修改過。這種情況下,不必將L2高速緩存線536中的數(shù)據(jù)拷貝到 Ll高速緩存B 124之中的Ll高速緩存線534處(因?yàn)樵摳咚倬彺?線保存的是修改的數(shù)據(jù))。
本發(fā)明 一 個(gè)實(shí)施例的特點(diǎn)包括
首先,將L1高速緩存120在邏輯上劃分成為Ll高速緩存A 122 和L1高速緩存B124兩部分,分別用于保存修改之后的新數(shù)據(jù)以及 修改之前的舊數(shù)據(jù)。
其次,針對(duì)Ll高速緩存中的每條高速緩存線設(shè)置標(biāo)識(shí)位T,用 于表示在該高速緩存線中的數(shù)據(jù)是否被修改,并根據(jù)標(biāo)識(shí)位T的值 來確定是否將L2中的高速緩存線拷貝到Ll高速緩存B 124中相應(yīng) 的高速緩存線。
經(jīng)過上述操作之后,在Ll高速緩存A 122中存儲(chǔ)最新版本的新 數(shù)據(jù),而在L1高速緩存B 124中存儲(chǔ)相應(yīng)的舊版本的舊數(shù)據(jù)。當(dāng)需 要執(zhí)行回滾操作時(shí),只須用Ll高速緩存B 124中的數(shù)據(jù)作為當(dāng)前數(shù) 據(jù)拷貝到L2高速緩存中相應(yīng)高速緩存線,并且將了 Ll高速緩存A 122中的數(shù)據(jù)無效。如果不需要執(zhí)行回滾操作,則僅須將L1高速緩 存B 124中的數(shù)據(jù)無效。
下面,參考圖6并結(jié)合圖5,詳細(xì)描述根據(jù)本發(fā)明實(shí)施例的用于 在處理器中執(zhí)行寫拷貝的方法。
通常,在步驟602處,當(dāng)處理器核執(zhí)行存儲(chǔ)操作時(shí),啟動(dòng)根據(jù)
在步驟S604處,判斷是否Ll高速緩存A 122命中并且在L2高速緩存130中相應(yīng)的高速緩存線的標(biāo)識(shí)位的值為0。如果是,處理 前進(jìn)至步驟S606。如果否,則處理直接前進(jìn)至步驟S608。
在步驟S606處,將L2高速緩存130中相應(yīng)的高速緩存線中的 數(shù)據(jù)讀入L1高速緩存B 124,并且然后將新數(shù)據(jù)寫入L1高速緩存A 122和L2高速緩存130,同時(shí)設(shè)置相應(yīng)的L2高速緩存線的標(biāo)識(shí)位T -1。然后處理前進(jìn)至步驟620結(jié)束。
在步驟S608中,判斷是否Ll高速緩存A 122命中并且在L2高 速緩存130中相應(yīng)的高速緩存線的標(biāo)識(shí)位的值為1,如果是,則處 理前進(jìn)至步驟S610。如果否,則處理直接前進(jìn)至步驟S612。
在步驟S610中,直接向Ll高速緩存A 122和L2高速緩存130 寫入新數(shù)據(jù)值。然后,處理前進(jìn)至步驟S620結(jié)束。
在步驟S612中,判斷是否Ll高速緩存A 122未命中但L2高 速緩存130命中并且相應(yīng)的L2高速緩存線中的標(biāo)識(shí)位為0。如果是, 則處理前進(jìn)至步驟S614。如果否,則處理直接前進(jìn)至步驟S616。
在步驟S614中,將L2高速緩存130中相應(yīng)的高速緩存線中的 數(shù)據(jù)讀入L高速緩存B 124,并將新數(shù)據(jù)寫入L2高速緩存130,同 時(shí)將L2高速緩存130中相應(yīng)的高速緩存線的標(biāo)識(shí)位的值設(shè)置為1。 然后,處理前進(jìn)至步驟S620結(jié)束。
在步驟S616中,判斷是否Ll高速緩存A 122未命中但L2高速 緩存130命中并且相應(yīng)L2高速緩存線中的標(biāo)識(shí)位為1。如果是,則 處理前進(jìn)至步驟S618。如果否,則處理直接前進(jìn)至步驟S620結(jié)束。
在步驟S618中,直接將新值寫入L2高速緩存130。然后,處 理前進(jìn)至步驟S620結(jié)束。
應(yīng)該理解,圖1中的各個(gè)步驟并非必須嚴(yán)格按照所示的順序, 它們順序上的變化也可以在本發(fā)明的范圍之內(nèi)。
另外,應(yīng)該理解,在L1高速緩存命中的情況下,可以先將新數(shù) 據(jù)寫入L1高速緩存,然后再判斷相應(yīng)的L2高速緩存線是否曾經(jīng)被 修改。
進(jìn)一步,應(yīng)該理解,在本發(fā)明的實(shí)施例中,Ll高速緩存A 122和L1高速緩存B 124之間的比例可以動(dòng)態(tài)調(diào)整。由于L1高速緩存 B 124中保存的是L1高速緩存A 122中數(shù)據(jù)的舊值,因而Ll高速緩 存B 124中高速緩存線數(shù)目的最大值是與Ll高速緩存A 122中的高 速緩存線的數(shù)據(jù)相等。
根據(jù)本發(fā)明的實(shí)施例,在L1高速緩存A122總是保存新數(shù)據(jù), 而L1高速緩存B 124總是保存就數(shù)據(jù)。在進(jìn)程需要執(zhí)行回滾操作時(shí), 只需要將L1高速緩存B 124中的舊數(shù)據(jù)回滾至L2高速援存130中 的相應(yīng)高速緩存線即可。這樣,根據(jù)本發(fā)明第一實(shí)施例,可以實(shí)現(xiàn) 精細(xì)拷貝粒度以及高效率的基于硬件的寫拷貝方法。
進(jìn) 一 步,本申請(qǐng)也提出了針對(duì)多核處理器系統(tǒng)中來自總線的高 速緩存一致性消息的方案。該方案中,利用上述針對(duì)每個(gè)L2高速緩 存線設(shè)置的標(biāo)識(shí)位T。
具體地,參考圖7,其中示出了來自總線的讀取消息的流程圖。 在步驟S702中開始流程。在步驟S704中,如果命中L2并且在相應(yīng) L2高速緩存線中的標(biāo)識(shí)位T = 0,則L2在處理此消息時(shí)步驟與常規(guī) 情況相同。否則,如果在相應(yīng)L2高速緩存線中的標(biāo)識(shí)位T=l,則 表示出現(xiàn)沖突。接著,觸發(fā)中斷來通知出現(xiàn)沖突事件。
另外在處理來自總線的刪除(kill)消息時(shí),操作步驟與上文中 處理來自總線的讀取消息相同,其處理流程圖同樣如圖7所示,在 此不再贅述。
應(yīng)該理解,在實(shí)際環(huán)境中,可以對(duì)上述實(shí)施例及其變型中的各 個(gè)特征和步驟進(jìn)行任意組合。
另外,應(yīng)該理解,本發(fā)明可以以硬件、軟件、固件以及它們的組 合來實(shí)現(xiàn)。本領(lǐng)域技術(shù)人員應(yīng)該認(rèn)識(shí)到,也可以在供任何合適數(shù)據(jù)處理 系統(tǒng)使用的信號(hào)承栽介質(zhì)上所設(shè)置的計(jì)算機(jī)程序產(chǎn)品中體現(xiàn)本發(fā)明。這
種信號(hào)承載介質(zhì)可以是傳輸介質(zhì)或用于機(jī)器可讀信息的可記錄介質(zhì),包 括磁介質(zhì)、光介質(zhì)或其他合適介質(zhì)??捎涗浗橘|(zhì)的例子包括硬盤驅(qū)動(dòng)器中的磁盤或軟盤、用于光驅(qū)的光盤、磁帶,以及本領(lǐng)域技術(shù)人員所能 想到的其他介質(zhì)。本領(lǐng)域技術(shù)人員應(yīng)該認(rèn)識(shí)到,具有合適編程裝置的任 何通信終端都將能夠執(zhí)行如程序產(chǎn)品.中體現(xiàn)的本發(fā)明方法的步驟。
從上述描述應(yīng)該理解,在不脫離本發(fā)明精神的情況下,可以對(duì) 本發(fā)明各實(shí)施例進(jìn)行修改和變更。本說明書中的描述僅僅是用于說 明性的,而不應(yīng)被認(rèn)為是限制性的。本發(fā)明的范圍僅受權(quán)利要求書 的限制。
權(quán)利要求
1. 一種用于在處理器中執(zhí)行寫拷貝的方法,其中該處理器包括處理器核、在邏輯上劃分為第一L1高速緩存和第二L1高速緩存的L1高速緩存、以及L2高速緩存,第一L1高速緩存用于保存新數(shù)據(jù)以及第二L1高速緩存用于保存舊數(shù)據(jù),該方法包括步驟響應(yīng)于來自所述處理器核的存儲(chǔ)操作,判斷是否所述L2高速緩存中相應(yīng)的高速緩存線已經(jīng)被修改;當(dāng)確定所述L2高速緩存中相應(yīng)的L2高速緩存線未被修改時(shí),將該相應(yīng)的L2高速緩存線中的舊數(shù)據(jù)拷貝到所述第二L1高速緩存,并且然后將新數(shù)據(jù)寫入該相應(yīng)的L2高速緩存線;以及當(dāng)確定所述L2高速緩存中相應(yīng)的L2高速緩存線被修改時(shí),直接將新數(shù)據(jù)寫入該相應(yīng)的L2高速緩存線。
2. 根據(jù)權(quán)利要求1所述的方法,其中所述判斷步驟還包括判斷 是否所述第一L1高速緩存命中,以及當(dāng)確定所述第一 Ll高速緩存命中時(shí),將新數(shù)據(jù)寫入所述第一 Ll 高速緩存。
3. 根據(jù)權(quán)利要求1所述的方法,其中,針對(duì)L2高速緩存中的 每條高速緩存線設(shè)置 一 標(biāo)識(shí)位,用于表示該高速緩存線的狀態(tài)。
4. 根據(jù)權(quán)利要求3所述的方法,其中,該標(biāo)識(shí)位的初始值為0, 以及如果該高速緩存線被修改,則將標(biāo)識(shí)位的值設(shè)置為1。
5. 根據(jù)權(quán)利要求3所述的方法,其中,該標(biāo)識(shí)位的初始值為1, 以及如果該高速緩存線被修改,則將標(biāo)識(shí)位的值設(shè)置為0。
6. 根據(jù)權(quán)利要求l的方法,還包括步驟當(dāng)需要執(zhí)行回滾操作 時(shí),將第二L1高速緩存中的舊數(shù)據(jù)恢復(fù)至L2高速緩存中相應(yīng)的L2高速緩存線。
7. 根據(jù)權(quán)利要求l的方法,其中,第一 Ll高速緩存和第二 Ll 高速緩存的比例可動(dòng)態(tài)調(diào)整。
8. —種用于在處理器中執(zhí)行寫拷貝的設(shè)備,其中該處理器包括處理器核、在邏輯上劃分為第一L1高速緩存和第二L1高速緩存的 Ll高速緩存、以及L2高速緩存,第一L1高速緩存用于保存新數(shù)據(jù) 以及第二L1高速緩存用于保存舊數(shù)據(jù),該設(shè)備包括判斷裝置,用于響應(yīng)于來自所迷處理器核的存儲(chǔ)操作,判斷是否 L2高速緩存中相應(yīng)的高速緩存線已經(jīng)被修改;以及拷貝和寫入裝置,用于當(dāng)確定L2高速緩存中相應(yīng)的L2高速緩 存線未被修改時(shí),將該相應(yīng)的L2高速緩存線中的舊數(shù)據(jù)拷貝到第二 Ll高速緩存,并且然后將新數(shù)據(jù)寫入該相應(yīng)的L2高速緩存線;以 及當(dāng)確定L2高速緩存中相應(yīng)的L2高速緩存線被修改時(shí),直接將新 數(shù)據(jù)寫入該相應(yīng)的L2高速緩存線。
9. 根據(jù)權(quán)利要求8所述的設(shè)備,其中所述判斷裝置還判斷是否 第一L1高速緩存命中,以及當(dāng)所述判斷裝置確定第一L1高速緩存命中時(shí),所述拷貝和寫入 裝置將新數(shù)據(jù)寫入第一L1高速緩存。
10. 根據(jù)權(quán)利要求8所述的設(shè)備,其中,針對(duì)L2高速緩存中的 每條高速緩存線設(shè)置 一 標(biāo)識(shí)位,用于表示該高速緩存線的狀態(tài)。
11. 才艮據(jù)權(quán)利要求10所述的設(shè)備,其中,該標(biāo)識(shí)位的初始值為 0,以及如果該高速緩存線被修改,則將標(biāo)識(shí)位的值置位為1。
12. 根據(jù)權(quán)利要求10所述的設(shè)備,其中,該標(biāo)識(shí)位的初始值為 1,以及如果該高速緩存線被修改,則將標(biāo)識(shí)位的值置位為0。
13. 根據(jù)權(quán)利要求8的設(shè)備,還包括回滾裝置,用于當(dāng)需要執(zhí)行 回滾操作時(shí),將第二L1高速緩存中的舊數(shù)據(jù)恢復(fù)至L2高速緩存中 相應(yīng)的L2高速緩存線。
14. 根據(jù)權(quán)利要求8的設(shè)備,其中,第一L1高速緩存和第二L1 高速緩存的比例可動(dòng)態(tài)調(diào)整。
15. —種處理器系統(tǒng),包括 處理器核;在邏輯上劃分為第一L1高速緩存和第二L1高速緩存的Ll高速 緩存,耦合到所述處理器核,其中所述第一L1高速緩存用于保存新數(shù)據(jù)以及第二L1高速緩存用于保存舊數(shù)據(jù); L2高速緩存,耦合到Ll高速緩存;以及 控制器,被配置為響應(yīng)于來自所述處理器核的存儲(chǔ)操作,判斷是否L2高速緩 存中相應(yīng)的高速緩存線已經(jīng)被修改;當(dāng)確定L2高速緩存中相應(yīng)的L2高速緩存線未被修改時(shí), 將該相應(yīng)的L2高速緩存線中的舊數(shù)據(jù)拷貝到第二 Ll高速緩存,并 且然后將新數(shù)據(jù)寫入該相應(yīng)的L2高速緩存線;以及當(dāng)確定L2高速緩存中相應(yīng)的L2高速緩存線被修改時(shí),直 接將新數(shù)據(jù)寫入該相應(yīng)的L2高速緩存線。
全文摘要
公開了一種用于在處理器中執(zhí)行寫拷貝的方法和設(shè)備。該處理器包括處理器核、在邏輯上劃分為第一L1高速緩存和第二L1高速緩存的L1高速緩存、和L2高速緩存,第一L1高速緩存用于保存新數(shù)據(jù)以及第二L1高速緩存用于保存舊數(shù)據(jù)。該方法可以包括步驟響應(yīng)于來自處理器核的存儲(chǔ)操作,判斷是否L2高速緩存中相應(yīng)的高速緩存線已經(jīng)被修改。當(dāng)確定L2高速緩存中相應(yīng)的L2高速緩存線未被修改時(shí),將該相應(yīng)的L2高速緩存線中的舊數(shù)據(jù)拷貝到第二L1高速緩存,并且然后將新數(shù)據(jù)寫入該相應(yīng)的L2高速緩存線。當(dāng)確定L2高速緩存中相應(yīng)的L2高速緩存線被修改時(shí),直接將新數(shù)據(jù)寫入該相應(yīng)的L2高速緩存線。
文檔編號(hào)G06F12/08GK101546282SQ20081008695
公開日2009年9月30日 申請(qǐng)日期2008年3月28日 優(yōu)先權(quán)日2008年3月28日
發(fā)明者沈文博, 沈曉偉, 王華勇, 鵬 邵 申請(qǐng)人:國際商業(yè)機(jī)器公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
鸡西市| 安图县| 绥滨县| 黄陵县| 于都县| 个旧市| 思茅市| 那曲县| 平舆县| 收藏| 东莞市| 寻乌县| 资兴市| 巴马| 体育| 砚山县| 石家庄市| 广汉市| 米林县| 渭源县| 淮滨县| 台州市| 邵阳县| 福清市| 瑞丽市| 乌审旗| 桓台县| 聂拉木县| 金寨县| 马山县| 衡阳县| 阿拉善左旗| 永吉县| 阿尔山市| 连云港市| 宜春市| 云霄县| 滦南县| 宜君县| 邳州市| 山丹县|