本發(fā)明涉及數(shù)據(jù)存儲(chǔ)
技術(shù)領(lǐng)域:
,更具體地說,涉及一種數(shù)據(jù)請(qǐng)求處理方法及裝置。
背景技術(shù):
:在多處理器系統(tǒng)中,除了系統(tǒng)具有的內(nèi)存之外,每個(gè)處理器還具有自己私有的緩存,而不同處理器緩存對(duì)于內(nèi)存數(shù)據(jù)的修改及獲取等操作,需要遵循緩存一致性協(xié)議?,F(xiàn)代計(jì)算機(jī)中緩存一致性協(xié)議一般包括窺探協(xié)議與目錄協(xié)議兩種。由于目錄協(xié)議會(huì)占用較大的存儲(chǔ)開銷,因而在小規(guī)模的多處理器系統(tǒng)中,通常是基于窺探協(xié)議實(shí)現(xiàn)的。具體來說,在窺探協(xié)議中,對(duì)于內(nèi)存的訪問需要經(jīng)過仲裁,在一個(gè)指令周期中只有一個(gè)處理器可以寫內(nèi)存。當(dāng)某個(gè)處理器需要修改內(nèi)存的數(shù)據(jù)時(shí),需要首先獲得總線控制權(quán),然后再實(shí)現(xiàn)對(duì)應(yīng)的寫操作,從而能夠保證先發(fā)出的寫請(qǐng)求可以優(yōu)先實(shí)現(xiàn)。但是,如果寫請(qǐng)求對(duì)應(yīng)的寫操作出現(xiàn)寫延遲,可能出現(xiàn)當(dāng)另一處理器需要對(duì)寫請(qǐng)求對(duì)應(yīng)數(shù)據(jù)進(jìn)行訪問時(shí),寫請(qǐng)求對(duì)應(yīng)寫操作還未完成,此時(shí),另一處理器讀取到的數(shù)據(jù)實(shí)際為無效數(shù)據(jù)。綜上所述,現(xiàn)有技術(shù)的多處理器系統(tǒng)中存在因?qū)懷舆t導(dǎo)致處理器讀取到無效數(shù)據(jù)的問題。技術(shù)實(shí)現(xiàn)要素:本發(fā)明的目的是提供一種數(shù)據(jù)請(qǐng)求處理方法及裝置,以解決現(xiàn)有技術(shù)的多處理器系統(tǒng)中存在的因?qū)懷舆t導(dǎo)致處理器讀取到無效數(shù)據(jù)的問題。為了實(shí)現(xiàn)上述目的,本發(fā)明提供如下技術(shù)方案:一種數(shù)據(jù)請(qǐng)求處理方法,包括:當(dāng)檢測(cè)到任一處理器對(duì)內(nèi)存發(fā)出寫請(qǐng)求時(shí),確定該寫請(qǐng)求對(duì)應(yīng)的內(nèi)存區(qū)域?yàn)轱L(fēng)險(xiǎn)內(nèi)存;當(dāng)檢測(cè)到除發(fā)出所述寫請(qǐng)求的處理器之外的其他處理器向所述內(nèi)存發(fā)出數(shù)據(jù)訪問請(qǐng)求且該數(shù)據(jù)訪問請(qǐng)求對(duì)應(yīng)所述風(fēng)險(xiǎn)內(nèi)存時(shí),判斷所述寫請(qǐng)求對(duì)應(yīng)的寫操作是否完成,如果是,則允許所述數(shù)據(jù)訪問請(qǐng)求,如果否,則待所述寫請(qǐng)求對(duì)應(yīng)的寫操作完成之后再允許所述數(shù)據(jù)訪問請(qǐng)求。優(yōu)選的,還包括:當(dāng)檢測(cè)到任一處理器對(duì)所述內(nèi)存發(fā)出寫請(qǐng)求時(shí),將發(fā)出所述寫請(qǐng)求的處理器的標(biāo)識(shí)及所述風(fēng)險(xiǎn)內(nèi)存的地址存儲(chǔ)至預(yù)先設(shè)置的沖突目錄中;當(dāng)檢測(cè)到除發(fā)出所述寫請(qǐng)求的處理器之外的其他處理器向所述內(nèi)存發(fā)出數(shù)據(jù)訪問請(qǐng)求且該數(shù)據(jù)訪問請(qǐng)求對(duì)應(yīng)所述風(fēng)險(xiǎn)內(nèi)存時(shí),將所述數(shù)據(jù)訪問請(qǐng)求存儲(chǔ)至所述沖突目錄中與所述寫請(qǐng)求對(duì)應(yīng)的位置;待所述寫請(qǐng)求對(duì)應(yīng)的寫操作完成之后再允許所述數(shù)據(jù)訪問請(qǐng)求,包括:待所述寫請(qǐng)求對(duì)應(yīng)的寫操作完成之后,由所述沖突目錄中查找并獲取存儲(chǔ)在與所述寫請(qǐng)求對(duì)應(yīng)的位置的數(shù)據(jù)訪問請(qǐng)求,并允許所述數(shù)據(jù)訪問請(qǐng)求。優(yōu)選的,允許所述數(shù)據(jù)訪問請(qǐng)求之后,還包括:將所述沖突目錄中所述數(shù)據(jù)訪問請(qǐng)求、所述寫請(qǐng)求及發(fā)出所述寫請(qǐng)求的處理器的標(biāo)識(shí)刪除。優(yōu)選的,還包括:當(dāng)檢測(cè)到任一處理器對(duì)內(nèi)存發(fā)出寫請(qǐng)求時(shí),將所述寫請(qǐng)求對(duì)應(yīng)的風(fēng)險(xiǎn)內(nèi)存的地址進(jìn)行廣播,以通知其他處理器將包含的與所述風(fēng)險(xiǎn)內(nèi)存的地址對(duì)應(yīng)地址的數(shù)據(jù)置為無效。一種數(shù)據(jù)請(qǐng)求處理裝置,包括:檢測(cè)模塊,用于當(dāng)檢測(cè)到任一處理器對(duì)內(nèi)存發(fā)出寫請(qǐng)求時(shí),確定該寫請(qǐng)求對(duì)應(yīng)的內(nèi)存區(qū)域?yàn)轱L(fēng)險(xiǎn)內(nèi)存,以及用于當(dāng)檢測(cè)到除發(fā)出所述寫請(qǐng)求的處理器之外的其他處理器向所述內(nèi)存發(fā)出數(shù)據(jù)訪問請(qǐng)求且該數(shù)據(jù)訪問請(qǐng)求對(duì)應(yīng)所述風(fēng)險(xiǎn)內(nèi)存時(shí),指示判斷模塊工作;判斷模塊,用于判斷所述寫請(qǐng)求對(duì)應(yīng)的寫操作是否完成,如果是,則允許所述數(shù)據(jù)訪問請(qǐng)求,如果否,則待所述寫請(qǐng)求對(duì)應(yīng)的寫操作完成之后再允許所述數(shù)據(jù)訪問請(qǐng)求。優(yōu)選的,還包括:目錄管理模塊,用于當(dāng)檢測(cè)到任一處理器對(duì)所述內(nèi)存發(fā)出寫請(qǐng)求時(shí),將發(fā)出所述寫請(qǐng)求的處理器的標(biāo)識(shí)及所述風(fēng)險(xiǎn)內(nèi)存的地址存儲(chǔ)至預(yù)先設(shè)置的沖突目錄中,以及用于當(dāng)檢測(cè)到除發(fā)出所述寫請(qǐng)求的處理器之外的其他處理器向所述內(nèi)存發(fā)出數(shù)據(jù)訪問請(qǐng)求且該數(shù)據(jù)訪問請(qǐng)求對(duì)應(yīng)所述風(fēng)險(xiǎn)內(nèi)存時(shí),將所述數(shù)據(jù)訪問請(qǐng)求存儲(chǔ)至所述沖突目錄中與所述寫請(qǐng)求對(duì)應(yīng)的位置;所述判斷模塊包括:處理單元,用于待所述寫請(qǐng)求對(duì)應(yīng)的寫操作完成之后,由所述沖突目錄中查找并獲取存儲(chǔ)在與所述寫請(qǐng)求對(duì)應(yīng)的位置的數(shù)據(jù)訪問請(qǐng)求,并允許所述數(shù)據(jù)訪問請(qǐng)求。優(yōu)選的,還包括:刪除模塊,用于所述判斷模塊允許所述數(shù)據(jù)訪問請(qǐng)求之后,將所述沖突目錄中所述數(shù)據(jù)訪問請(qǐng)求、所述寫請(qǐng)求及發(fā)出所述寫請(qǐng)求的處理器的標(biāo)識(shí)刪除。優(yōu)選的,還包括:廣播模塊,用于當(dāng)檢測(cè)到任一處理器對(duì)內(nèi)存發(fā)出寫請(qǐng)求時(shí),將所述寫請(qǐng)求對(duì)應(yīng)的風(fēng)險(xiǎn)內(nèi)存的地址進(jìn)行廣播,以通知其他處理器將包含的與所述風(fēng)險(xiǎn)內(nèi)存的地址對(duì)應(yīng)地址的數(shù)據(jù)置為無效。本發(fā)明提供了一種數(shù)據(jù)請(qǐng)求處理方法及裝置,其中該方法包括:當(dāng)檢測(cè)到任一處理器對(duì)內(nèi)存發(fā)出寫請(qǐng)求時(shí),確定該寫請(qǐng)求對(duì)應(yīng)的內(nèi)存區(qū)域?yàn)轱L(fēng)險(xiǎn)內(nèi)存;當(dāng)檢測(cè)到除發(fā)出所述寫請(qǐng)求的處理器之外的其他處理器向所述內(nèi)存發(fā)出數(shù)據(jù)訪問請(qǐng)求且該數(shù)據(jù)訪問請(qǐng)求對(duì)應(yīng)所述風(fēng)險(xiǎn)內(nèi)存時(shí),判斷所述寫請(qǐng)求對(duì)應(yīng)的寫操作是否完成,如果是,則允許所述數(shù)據(jù)訪問請(qǐng)求,如果否,則待所述寫請(qǐng)求對(duì)應(yīng)的寫操作完成之后再允許所述數(shù)據(jù)訪問請(qǐng)求。本申請(qǐng)公開的技術(shù)特征中,當(dāng)檢測(cè)到任一處理器發(fā)出的寫請(qǐng)求后又檢測(cè)到其他處理器發(fā)出的數(shù)據(jù)訪問請(qǐng)求,且數(shù)據(jù)訪問請(qǐng)求與寫請(qǐng)求對(duì)應(yīng)相同的內(nèi)存區(qū)域時(shí),則判斷寫請(qǐng)求對(duì)應(yīng)的寫操作是否完成,如果是,則直接允許數(shù)據(jù)訪問請(qǐng)求,否則,則待寫請(qǐng)求對(duì)應(yīng)的寫操作完成后再允許數(shù)據(jù)訪問請(qǐng)求。由此,能夠保證發(fā)出數(shù)據(jù)訪問請(qǐng)求對(duì)應(yīng)的處理器進(jìn)行訪問的數(shù)據(jù)為完成寫請(qǐng)求對(duì)應(yīng)寫操作之后的有效數(shù)據(jù),從而有效解決了現(xiàn)有技術(shù)的多處理器系統(tǒng)中存在的因?qū)懷舆t導(dǎo)致處理器讀取到無效數(shù)據(jù)的問題。附圖說明為了更清楚地說明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡(jiǎn)單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)提供的附圖獲得其他的附圖。圖1為本發(fā)明實(shí)施例提供的一種數(shù)據(jù)請(qǐng)求處理方法的流程圖;圖2為本發(fā)明實(shí)施例提供的一種數(shù)據(jù)請(qǐng)求處理裝置的結(jié)構(gòu)示意圖。具體實(shí)施方式下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。請(qǐng)參閱圖1,其示出了本發(fā)明實(shí)施例提供的一種數(shù)據(jù)請(qǐng)求處理方法的流程圖,本發(fā)明可以適用于小規(guī)模的多處理器系統(tǒng),且在該多處理器系統(tǒng)中可以基于窺探協(xié)議實(shí)現(xiàn)處理器(本發(fā)明中每個(gè)處理器均具有自己的私有的緩存,而實(shí)現(xiàn)對(duì)于內(nèi)存的讀寫的主體為處理器時(shí),處理器也可以理解為其私有的緩存,在此不做具體區(qū)分)對(duì)于內(nèi)存的讀寫,即本發(fā)明可以實(shí)現(xiàn)于基于窺探協(xié)議的多處理器系統(tǒng)中。具體來說,本發(fā)明實(shí)施例提供的一種數(shù)據(jù)請(qǐng)求處理方法可以包括以下步驟:S11:當(dāng)檢測(cè)到任一處理器對(duì)內(nèi)存發(fā)出寫請(qǐng)求時(shí),確定該寫請(qǐng)求對(duì)應(yīng)的內(nèi)存區(qū)域?yàn)轱L(fēng)險(xiǎn)內(nèi)存。其中,與寫請(qǐng)求對(duì)應(yīng)的內(nèi)存區(qū)域即寫請(qǐng)求需要寫入數(shù)據(jù)的內(nèi)存地址,該地址可以包括寫請(qǐng)求對(duì)應(yīng)的起始地址及終止地址,以基于該地址確定出對(duì)應(yīng)的區(qū)域。具體來說,當(dāng)本發(fā)明實(shí)施例提供的一種數(shù)據(jù)請(qǐng)求處理方法應(yīng)用于基于窺探協(xié)議的多處理器系統(tǒng)時(shí),可以通過在總線上檢測(cè)得到處理器發(fā)出的寫請(qǐng)求或者讀請(qǐng)求,如果檢測(cè)到寫請(qǐng)求且如果當(dāng)前沒有執(zhí)行其他寫請(qǐng)求對(duì)應(yīng)的寫操作,則檢測(cè)到的該寫請(qǐng)求獲得總線控制權(quán),否則,則等待其他先于該寫請(qǐng)求發(fā)出的其他寫請(qǐng)求對(duì)應(yīng)寫操作實(shí)現(xiàn)后獲取總線控制權(quán),并在獲取總線控制權(quán)后實(shí)現(xiàn)其對(duì)應(yīng)的寫操作。S12:當(dāng)檢測(cè)到除發(fā)出寫請(qǐng)求的處理器之外的其他處理器向內(nèi)存發(fā)出數(shù)據(jù)訪問請(qǐng)求且該數(shù)據(jù)訪問請(qǐng)求對(duì)應(yīng)風(fēng)險(xiǎn)內(nèi)存時(shí),判斷寫請(qǐng)求對(duì)應(yīng)的寫操作是否完成,如果是,則執(zhí)行步驟S13,如果否,則執(zhí)行步驟S14。其中數(shù)據(jù)訪問請(qǐng)求可以包括讀請(qǐng)求及寫請(qǐng)求,當(dāng)檢測(cè)到任一處理器發(fā)出的寫請(qǐng)求后又檢測(cè)到其他處理器發(fā)送的數(shù)據(jù)訪問請(qǐng)求時(shí),則需要判斷寫請(qǐng)求對(duì)應(yīng)的寫操作是否完成,即是否將寫請(qǐng)求中包含的數(shù)據(jù)寫入至內(nèi)存的對(duì)應(yīng)位置中,如果是,則說明內(nèi)存中與寫請(qǐng)求對(duì)應(yīng)的數(shù)據(jù)為最新的數(shù)據(jù),此時(shí)可以允許數(shù)據(jù)訪問請(qǐng)求,即允許其他處理器對(duì)該最新的數(shù)據(jù)的寫或者讀,如果否,則說明內(nèi)存中與寫請(qǐng)求對(duì)應(yīng)的數(shù)據(jù)為舊的數(shù)據(jù),也即無效數(shù)據(jù),此時(shí)則不對(duì)數(shù)據(jù)訪問請(qǐng)求進(jìn)行處理,而是等待寫請(qǐng)求對(duì)應(yīng)的寫操作完成之后再允許數(shù)據(jù)訪問請(qǐng)求。另外,如果檢測(cè)到數(shù)據(jù)訪問請(qǐng)求時(shí)寫請(qǐng)求對(duì)應(yīng)的寫操作還未實(shí)現(xiàn),可以向發(fā)出數(shù)據(jù)訪問請(qǐng)求的處理器發(fā)送等待通知,以告知其需要等待寫請(qǐng)求對(duì)應(yīng)的寫操作完成后才可實(shí)現(xiàn)其需實(shí)現(xiàn)的數(shù)據(jù)訪問。S13:允許數(shù)據(jù)訪問請(qǐng)求。S14:待寫請(qǐng)求對(duì)應(yīng)的寫操作完成之后再允許數(shù)據(jù)訪問請(qǐng)求。本申請(qǐng)公開的技術(shù)特征中,當(dāng)檢測(cè)到任一處理器發(fā)出的寫請(qǐng)求后又檢測(cè)到其他處理器發(fā)出的數(shù)據(jù)訪問請(qǐng)求,且數(shù)據(jù)訪問請(qǐng)求與寫請(qǐng)求對(duì)應(yīng)相同的內(nèi)存區(qū)域時(shí),則判斷寫請(qǐng)求對(duì)應(yīng)的寫操作是否完成,如果是,則直接允許數(shù)據(jù)訪問請(qǐng)求,否則,則待寫請(qǐng)求對(duì)應(yīng)的寫操作完成后再允許數(shù)據(jù)訪問請(qǐng)求。由此,能夠保證發(fā)出數(shù)據(jù)訪問請(qǐng)求對(duì)應(yīng)的處理器進(jìn)行訪問的數(shù)據(jù)為完成寫請(qǐng)求對(duì)應(yīng)寫操作之后的有效數(shù)據(jù),從而有效解決了現(xiàn)有技術(shù)的多處理器系統(tǒng)中存在的因?qū)懷舆t導(dǎo)致處理器讀取到無效數(shù)據(jù)的問題。另外,通過本申請(qǐng)公開的上述技術(shù)特征,大大減少了讀寫內(nèi)存的錯(cuò)誤概率,從而有效保證了各處理器均能讀取到最新的數(shù)據(jù),進(jìn)而保證了各處理器保存讀取到的數(shù)據(jù)的緩存的一致性。本發(fā)明實(shí)施例提供的一種數(shù)據(jù)請(qǐng)求處理方法,還可以包括:當(dāng)檢測(cè)到任一處理器對(duì)內(nèi)存發(fā)出寫請(qǐng)求時(shí),將發(fā)出寫請(qǐng)求的處理器的標(biāo)識(shí)及風(fēng)險(xiǎn)內(nèi)存的地址存儲(chǔ)至預(yù)先設(shè)置的沖突目錄中;當(dāng)檢測(cè)到除發(fā)出寫請(qǐng)求的處理器之外的其他處理器向內(nèi)存發(fā)出數(shù)據(jù)訪問請(qǐng)求且該數(shù)據(jù)訪問請(qǐng)求對(duì)應(yīng)風(fēng)險(xiǎn)內(nèi)存時(shí),將數(shù)據(jù)訪問請(qǐng)求存儲(chǔ)至沖突目錄中與寫請(qǐng)求對(duì)應(yīng)的位置。其中,可以預(yù)先設(shè)置沖突目錄,該目錄主要用于存儲(chǔ)寫請(qǐng)求與其他數(shù)據(jù)訪問請(qǐng)求發(fā)生沖突的情況,也即寫請(qǐng)求對(duì)應(yīng)寫操作未完成時(shí)檢測(cè)到其他數(shù)據(jù)訪問請(qǐng)求,且該數(shù)據(jù)訪問請(qǐng)求與寫操作對(duì)應(yīng)內(nèi)存中相同的內(nèi)存區(qū)域的情況。另外,處理器的標(biāo)識(shí)可以為預(yù)先為其設(shè)定的,還可以在沖突目錄中存儲(chǔ)其他信息,如寫請(qǐng)求開始執(zhí)行的指令周期及寫請(qǐng)求執(zhí)行完畢的指令周期等,當(dāng)然還可以根據(jù)實(shí)際需要進(jìn)行其他設(shè)定,均在本發(fā)明的保護(hù)范圍之內(nèi);且,本發(fā)明中的沖突目錄僅需維護(hù)有上述沖突情況的請(qǐng)求信息,占用存儲(chǔ)空間較小,同時(shí)能夠利用沖突目錄方便快捷的實(shí)現(xiàn)對(duì)其所存儲(chǔ)信息管理及查詢等。待寫請(qǐng)求對(duì)應(yīng)的寫操作完成之后再允許數(shù)據(jù)訪問請(qǐng)求,可以包括:待寫請(qǐng)求對(duì)應(yīng)的寫操作完成之后,由沖突目錄中查找并獲取存儲(chǔ)在與寫請(qǐng)求對(duì)應(yīng)的位置的數(shù)據(jù)訪問請(qǐng)求,并允許數(shù)據(jù)訪問請(qǐng)求。當(dāng)寫請(qǐng)求對(duì)應(yīng)的寫操作完成后,可以由沖突目錄中快速準(zhǔn)確的確定與之對(duì)應(yīng)的數(shù)據(jù)訪問請(qǐng)求,進(jìn)而允許該數(shù)據(jù)訪問請(qǐng)求,提高了執(zhí)行效率。本發(fā)明實(shí)施例提供的一種數(shù)據(jù)請(qǐng)求處理方法,允許數(shù)據(jù)訪問請(qǐng)求之后,還可以包括:將沖突目錄中數(shù)據(jù)訪問請(qǐng)求、寫請(qǐng)求及發(fā)出寫請(qǐng)求的處理器的標(biāo)識(shí)刪除。由于時(shí)時(shí)刻刻都可能有大量的讀寫請(qǐng)求,因此,為了節(jié)約存儲(chǔ)空間,在寫請(qǐng)求對(duì)應(yīng)寫操作完成并允許數(shù)據(jù)訪問請(qǐng)求的訪問后可以將其在沖突目錄中對(duì)應(yīng)的信息進(jìn)行刪除。本發(fā)明實(shí)施例提供的一種數(shù)據(jù)請(qǐng)求處理方法,還可以包括:當(dāng)檢測(cè)到任一處理器對(duì)內(nèi)存發(fā)出寫請(qǐng)求時(shí),將寫請(qǐng)求對(duì)應(yīng)的風(fēng)險(xiǎn)內(nèi)存的地址進(jìn)行廣播,以通知其他處理器將包含的與風(fēng)險(xiǎn)內(nèi)存的地址對(duì)應(yīng)地址的數(shù)據(jù)置為無效。需要說明的是,當(dāng)檢測(cè)到任一處理器發(fā)出寫請(qǐng)求,將對(duì)應(yīng)風(fēng)險(xiǎn)內(nèi)存的地址在總線進(jìn)行廣播,可以使得處理器獲知風(fēng)險(xiǎn)內(nèi)存的地址,進(jìn)而確定自身是否包含由風(fēng)險(xiǎn)內(nèi)存的地址獲取的數(shù)據(jù),即是否存在與風(fēng)險(xiǎn)內(nèi)存的地址對(duì)應(yīng)的地址,如果是,則將這些數(shù)據(jù)置為無效,以進(jìn)一步保證緩存一致性。為了使得本發(fā)明提供的上述技術(shù)方案更加清楚,下面結(jié)合具體實(shí)例對(duì)其進(jìn)行詳細(xì)說明:如表1所示,在指令周期1內(nèi),處理器A發(fā)出寫請(qǐng)求,此時(shí)A迅速地獲取總線控制權(quán),并在指令周期3內(nèi)完成寫請(qǐng)求對(duì)應(yīng)寫操作,風(fēng)險(xiǎn)內(nèi)存同時(shí)由初值成為新值A(chǔ);在指令周期4內(nèi),處理器B發(fā)出讀請(qǐng)求,此時(shí)由于處理器A的寫請(qǐng)求已完成,B讀取到正確值,即新值A(chǔ)。在指令周期101內(nèi)處理器B發(fā)出寫請(qǐng)求,但由于此時(shí)總線繁忙,B不得不等待總線控制權(quán);在指令周期103內(nèi),處理器A發(fā)出讀請(qǐng)求,B仍處于等待狀態(tài);而A請(qǐng)求位于B請(qǐng)求的兩個(gè)指令周期之后,默認(rèn)應(yīng)立即完成的的B請(qǐng)求卻由于總線繁忙而不能立即得到處理,而A卻認(rèn)為以這種正確的順序能得到正確的結(jié)果,但其實(shí)際上卻讀到錯(cuò)誤的新值A(chǔ),這就出現(xiàn)了寫競(jìng)賽。表1為防止寫競(jìng)賽的發(fā)生,本申請(qǐng)公開的技術(shù)方案如表2所示。在指令周期101內(nèi)處理器B發(fā)出寫請(qǐng)求的時(shí)候,立即記錄這個(gè)寫請(qǐng)求,包括發(fā)出寫請(qǐng)求的處理器的標(biāo)識(shí)以及寫請(qǐng)求對(duì)應(yīng)的內(nèi)存地址,并將這些信息維護(hù)在沖突列表里,如表3所示,其中,請(qǐng)求源即為發(fā)起讀寫請(qǐng)求的處理器。跟蹤其他處理器對(duì)該內(nèi)存地址的訪問,無論是讀請(qǐng)求還是寫請(qǐng)求,只要檢測(cè)到有對(duì)該內(nèi)存地址的請(qǐng)求,則告知發(fā)出數(shù)據(jù)訪問請(qǐng)求的處理器其所請(qǐng)求的數(shù)據(jù)需要推遲訪問。表2中在指令周期103內(nèi),檢測(cè)到處理器A發(fā)出讀請(qǐng)求,但處理器B的寫請(qǐng)求尚未完成,因此通知處理器A讀請(qǐng)求需要推遲;在指令周期105內(nèi)寫請(qǐng)求完成,通知處理器A可以讀取內(nèi)存了,也即允許處理器A發(fā)送的讀請(qǐng)求。表2指令周期總線操作通知106101記錄B寫請(qǐng)求開始102處理器B等待控制權(quán)檢測(cè)A的讀/寫請(qǐng)求103處理器B等待控制權(quán)檢測(cè)到A的寫請(qǐng)求通知A推遲訪問104處理器B獲得控制權(quán)105記錄B寫請(qǐng)求結(jié)束通知A可以訪問106表3本發(fā)明實(shí)施例還提供了一種數(shù)據(jù)請(qǐng)求處理裝置,如圖2所示,可以包括:檢測(cè)模塊11,用于當(dāng)檢測(cè)到任一處理器對(duì)內(nèi)存發(fā)出寫請(qǐng)求時(shí),確定該寫請(qǐng)求對(duì)應(yīng)的內(nèi)存區(qū)域?yàn)轱L(fēng)險(xiǎn)內(nèi)存,以及用于當(dāng)檢測(cè)到除發(fā)出寫請(qǐng)求的處理器之外的其他處理器向內(nèi)存發(fā)出數(shù)據(jù)訪問請(qǐng)求且該數(shù)據(jù)訪問請(qǐng)求對(duì)應(yīng)風(fēng)險(xiǎn)內(nèi)存時(shí),指示判斷模塊工作;判斷模塊12,用于判斷寫請(qǐng)求對(duì)應(yīng)的寫操作是否完成,如果是,則允許數(shù)據(jù)訪問請(qǐng)求,如果否,則待寫請(qǐng)求對(duì)應(yīng)的寫操作完成之后再允許數(shù)據(jù)訪問請(qǐng)求。本發(fā)明實(shí)施例提供的一種數(shù)據(jù)請(qǐng)求處理裝置,還可以包括:目錄管理模塊,用于當(dāng)檢測(cè)到任一處理器對(duì)內(nèi)存發(fā)出寫請(qǐng)求時(shí),將發(fā)出寫請(qǐng)求的處理器的標(biāo)識(shí)及風(fēng)險(xiǎn)內(nèi)存的地址存儲(chǔ)至預(yù)先設(shè)置的沖突目錄中,以及用于當(dāng)檢測(cè)到除發(fā)出寫請(qǐng)求的處理器之外的其他處理器向內(nèi)存發(fā)出數(shù)據(jù)訪問請(qǐng)求且該數(shù)據(jù)訪問請(qǐng)求對(duì)應(yīng)風(fēng)險(xiǎn)內(nèi)存時(shí),將數(shù)據(jù)訪問請(qǐng)求存儲(chǔ)至沖突目錄中與寫請(qǐng)求對(duì)應(yīng)的位置;判斷模塊包括:處理單元,用于待寫請(qǐng)求對(duì)應(yīng)的寫操作完成之后,由沖突目錄中查找并獲取存儲(chǔ)在與寫請(qǐng)求對(duì)應(yīng)的位置的數(shù)據(jù)訪問請(qǐng)求,并允許數(shù)據(jù)訪問請(qǐng)求。本發(fā)明實(shí)施例提供的一種數(shù)據(jù)請(qǐng)求處理裝置,還可以包括:刪除模塊,用于判斷模塊允許數(shù)據(jù)訪問請(qǐng)求之后,將沖突目錄中數(shù)據(jù)訪問請(qǐng)求、寫請(qǐng)求及發(fā)出寫請(qǐng)求的處理器的標(biāo)識(shí)刪除。本發(fā)明實(shí)施例提供的一種數(shù)據(jù)請(qǐng)求處理裝置,還可以包括:廣播模塊,用于當(dāng)檢測(cè)到任一處理器對(duì)內(nèi)存發(fā)出寫請(qǐng)求時(shí),將寫請(qǐng)求對(duì)應(yīng)的風(fēng)險(xiǎn)內(nèi)存的地址進(jìn)行廣播,以通知其他處理器將包含的與風(fēng)險(xiǎn)內(nèi)存的地址對(duì)應(yīng)地址的數(shù)據(jù)置為無效。本發(fā)明實(shí)施例提供的一種數(shù)據(jù)請(qǐng)求處理裝置中相關(guān)部分的說明請(qǐng)參見本發(fā)明實(shí)施例提供的一種數(shù)據(jù)請(qǐng)求處理方法中對(duì)應(yīng)部分的詳細(xì)說明,在此不再贅述。對(duì)所公開的實(shí)施例的上述說明,使本領(lǐng)域技術(shù)人員能夠?qū)崿F(xiàn)或使用本發(fā)明。對(duì)這些實(shí)施例的多種修改對(duì)本領(lǐng)域技術(shù)人員來說將是顯而易見的,本文中所定義的一般原理可以在不脫離本發(fā)明的精神或范圍的情況下,在其它實(shí)施例中實(shí)現(xiàn)。因此,本發(fā)明將不會(huì)被限制于本文所示的這些實(shí)施例,而是要符合與本文所公開的原理和新穎特點(diǎn)相一致的最寬的范圍。當(dāng)前第1頁1 2 3