本發(fā)明實施例涉及計算機(jī)領(lǐng)域,并且更具體地,涉及片上網(wǎng)絡(luò)中處理報文的方法和路由器。
背景技術(shù):
由于處理器廠商與內(nèi)存廠商相互分離的產(chǎn)業(yè)格局,導(dǎo)致了內(nèi)存技術(shù)與處理器技術(shù)發(fā)展的不同步。在過去的20多年中,處理器的性能以每年大約55%的速度快速提升,而內(nèi)存性能的提升速度則只有每年10%左右。長期累積下來,不均衡的發(fā)展速度造成了當(dāng)前內(nèi)存的存取速度嚴(yán)重滯后于處理器的計算速度,內(nèi)存瓶頸導(dǎo)致高性能處理器難以發(fā)揮出應(yīng)有的功效,這對日益增長的處理能力的需求形成了極大的制約,這種嚴(yán)重阻礙處理器性能發(fā)揮的內(nèi)存瓶頸稱為“內(nèi)存墻”(Memory Wall)。
為了解決內(nèi)存墻的問題,傳統(tǒng)的處理器設(shè)計中采用了多層次緩存(Cache)結(jié)構(gòu)來減緩處理器速度與內(nèi)存速度不匹配性所帶來的性能影響。例如Intel Xeon處理器設(shè)計中采用L1/L2/L3這樣層次化的Cache來構(gòu)建片上緩存系統(tǒng),目的是利用程序數(shù)據(jù)的空間局部性來減少內(nèi)存的訪問時延,在片上面積增加不多的情況下有效降低訪存時延,提升性能,這對傳統(tǒng)以計算為中心的計算機(jī)體系結(jié)構(gòu)來講是很有效的。
2007年云計算的概念首次被提出以后,亞馬遜、國際商業(yè)機(jī)器公司(International Business Machines Corporation,簡稱為“IBM”)、谷歌(Google)和微軟等大公司先后公布了各自的云計算系統(tǒng)或者計劃,使其在學(xué)術(shù)界和企業(yè)界迅速成為關(guān)注和研究的熱點,成為新的高速增長點。然而在大數(shù)據(jù)云計算應(yīng)用環(huán)境下,傳統(tǒng)架構(gòu)的處理器表現(xiàn)出許多的不適合性,體現(xiàn)在訪存這一方面的不適合性主要體現(xiàn)為大量的緩存缺失(Cache miss),導(dǎo)致系統(tǒng)性能較低。這主要是由于在云計算環(huán)境下,大量的網(wǎng)絡(luò)應(yīng)用開發(fā)者使用了腳本語言,追求開發(fā)效率和上線速度,對于軟件質(zhì)量的控制比較弱,很多應(yīng)用甚至采用邊跑邊測的策略,未經(jīng)過嚴(yán)格測試就上線運行。這樣的編程特點導(dǎo)致互聯(lián)網(wǎng) 應(yīng)用程序體量較大并且分支跳轉(zhuǎn)跨度長,多數(shù)會超過處理器L1甚至L2緩存的能力范圍,從而產(chǎn)生大量的指令緩存缺失,使得很多應(yīng)用的程序指令只能放在內(nèi)存和L3緩存中。處理器從這些距離核心較遠(yuǎn)的地方讀取指令,由于沒有特殊的直通通道,會產(chǎn)生很大的時延并直接影響性能。顯然,針對大數(shù)據(jù)云計算應(yīng)用,需要重新優(yōu)化設(shè)計處理器的緩存架構(gòu)設(shè)計。云計算應(yīng)用還有一個明顯特點是單個應(yīng)用分布在多個計算節(jié)點上,應(yīng)用中存在著大量不相關(guān)的并發(fā)線程,每個線程處理一段/片數(shù)據(jù),數(shù)據(jù)間相關(guān)度低,硬件核/線程上都跑著相同的應(yīng)用(指令序列),這也為重新設(shè)計緩存架構(gòu)提供了可能性。
處理器領(lǐng)域另外一個重要的發(fā)展趨勢為片上互連網(wǎng)絡(luò)(Networks-on-Chip)。未來的多核/眾核架構(gòu)中普遍采用片上互連網(wǎng)絡(luò)來替代原來的單級總線,從而突破總線的限制,實現(xiàn)多處理器之間的并行的傳輸。在采用片上互連網(wǎng)絡(luò)的眾核架構(gòu)中,各級Cache之間的數(shù)據(jù)傳輸都是通過片上互連網(wǎng)絡(luò)來實現(xiàn)的,這為Cache指令/數(shù)據(jù)的訪問時延優(yōu)化提供了空間。
綜上,從云計算應(yīng)用角度來看,如何進(jìn)一步降低訪存時延,提升處理器的整體性能是亟需解決的問題。
技術(shù)實現(xiàn)要素:
本發(fā)明提供了一種片上網(wǎng)絡(luò)中處理報文的方法和路由器,能夠進(jìn)一步降低訪存時延,提升處理器的整體性能。
第一方面,提供了一種片上網(wǎng)絡(luò)中處理報文的方法,包括:路由器接收第一處理器核發(fā)送的請求報文;該路由器確定緩存的響應(yīng)報文的地址與該請求報文的地址的關(guān)系,該緩存的響應(yīng)報文包括至少一個第二處理器核的響應(yīng)報文,該第二處理器核與該路由器不直接相連;該路由器根據(jù)該關(guān)系,確定對該請求報文的處理方式。
結(jié)合第一方面,在第一方面的第一種可能的實現(xiàn)方式中,該根據(jù)該關(guān)系,確定對該請求報文的處理方式,包括:在該緩存的響應(yīng)報文的地址中存在與該請求報文的地址相同的第一地址時,生成目標(biāo)報文,該目標(biāo)報文包括與該第一地址對應(yīng)的響應(yīng)報文中的數(shù)據(jù);向該第一處理器核發(fā)送該目標(biāo)報文;
結(jié)合第一方面,在第一方面的第二種可能的實現(xiàn)方式中,該根據(jù)該關(guān)系,確定對該請求報文的處理方式,包括:在該緩存的響應(yīng)報文的地址中不存在與該請求報文的地址相同的地址時,向下一跳路由器發(fā)送該請求報文。
結(jié)合第一方面的第一種可能的實現(xiàn)方式,在第一方面的第三種可能的實現(xiàn)方式中,在向該第一處理器核發(fā)送該目標(biāo)報文之前,該方法還包括:對該目標(biāo)報文進(jìn)行編號,得到帶編號目標(biāo)報文;緩存該帶編號目標(biāo)報文。
結(jié)合第一方面的第一種或第三種可能的實現(xiàn)方式,在第一方面的第四種可能的實現(xiàn)方式中,該方法還包括:將該請求報文標(biāo)識為已響應(yīng)請求報文;對該已響應(yīng)請求報文進(jìn)行編號,得到帶編號已響應(yīng)請求報文。
結(jié)合第一方面,第一方面的第一種至第四種可能的實現(xiàn)方式中任一可能的實現(xiàn)方式,在第一方面的第五種可能的實現(xiàn)方式中,該緩存的響應(yīng)報文的地址緩存在組關(guān)聯(lián)緩存中;
其中,該確定緩存的響應(yīng)報文的地址與該請求報文的地址的關(guān)系,包括:確定該組關(guān)聯(lián)緩存中與該請求報文的地址相對應(yīng)的組;確定該組中包括的響應(yīng)報文的地址與該請求報文的地址的關(guān)系。
結(jié)合第一方面,第一方面的第一種至第五種可能的實現(xiàn)方式中任一可能的實現(xiàn)方式,在第一方面的第六種可能的實現(xiàn)方式中,該請求報文為讀指令請求報文和/或讀數(shù)據(jù)請求報文。
第二方面,提供了一種片上網(wǎng)絡(luò)中的路由器,包括:請求虛通道、歷史響應(yīng)報文緩存單元、地址比較單元、新報文產(chǎn)生與標(biāo)識單元;該請求虛通道,用于接收第一處理器核發(fā)送的請求報文;該歷史響應(yīng)報文緩存單元,用于緩存響應(yīng)報文,該響應(yīng)報文包括至少一個第二處理器核的響應(yīng)報文,該第二處理器核與該路由器不直接相連;該地址比較單元,用于確定該歷史響應(yīng)報文緩存單元中緩存的該響應(yīng)報文的地址與該請求虛通道接收到的該請求報文的地址的關(guān)系;該新報文產(chǎn)生與標(biāo)識單元,用于根據(jù)該地址比較單元確定的該關(guān)系,確定對該請求虛通道接收到的該請求報文的處理方式。
結(jié)合第二方面,在第二方面的第一種可能的實現(xiàn)方式中,該路由器還包括發(fā)送單元;該新報文產(chǎn)生與標(biāo)識單元,具體用于在該地址比較單元確定該響應(yīng)報文的地址中存在與該請求報文的地址相同的第一地址時,生成目標(biāo)報文,該目標(biāo)報文包括與該第一地址對應(yīng)的響應(yīng)報文中的數(shù)據(jù);該發(fā)送單元,用于向該第一處理器核發(fā)送該新報文產(chǎn)生與標(biāo)識單元生成的該目標(biāo)報文。
結(jié)合第二方面,在第二方面的第二種可能的實現(xiàn)方式中,該新報文產(chǎn)生與標(biāo)識單元具體用于:在該地址比較單元確定該歷史響應(yīng)報文緩存單元緩存的該響應(yīng)報文的地址中不存在與該請求虛通道接收的該請求報文的地址相 同的地址時,確定向下一跳路由器發(fā)送該請求報文;該發(fā)送單元,用于向該下一跳路由器發(fā)送該請求報文。
結(jié)合第二方面的第一種可能的實現(xiàn)方式,在第二方面的第三種可能的實現(xiàn)方式中,該路由器還包括:新報文虛通道;在該發(fā)送單元向該第一處理器核發(fā)送該目標(biāo)報文之前,該新報文產(chǎn)生與標(biāo)識單元還用于:對該目標(biāo)報文進(jìn)行編號,得到帶編號目標(biāo)報文;該新報文虛通道,用于緩存該新報文產(chǎn)生與標(biāo)識單元得到的該帶編號目標(biāo)報文。
結(jié)合第二方面的第一種或第三種可能的實現(xiàn)方式,在第二方面的第四種可能的實現(xiàn)方式中,該新報文產(chǎn)生與標(biāo)識單元,還用于:將該請求報文標(biāo)識為已響應(yīng)請求報文;對該已響應(yīng)請求報文進(jìn)行編號,得到帶編號已響應(yīng)請求報文。
結(jié)合第二方面,第二方面的第一種至第四種可能的實現(xiàn)方式中任一可能的實現(xiàn)方式,在第二方面的第五種可能的實現(xiàn)方式中,該歷史響應(yīng)報文緩存單元具體用于:將該響應(yīng)報文的地址緩存在組關(guān)聯(lián)緩存中;
其中,該地址比較單元具體用于:確定該組關(guān)聯(lián)緩存中與該請求報文的地址相對應(yīng)的組;確定該組中包括的響應(yīng)報文的地址與該請求報文的地址的關(guān)系。
結(jié)合第二方面,第二方面的第一種至第五種可能的實現(xiàn)方式中任一可能的實現(xiàn)方式,在第二方面的第六種可能的實現(xiàn)方式中,該請求虛通道具體用于:接收該請求節(jié)點發(fā)送的讀指令請求報文和/或讀數(shù)據(jù)請求報文。
基于上述技術(shù)方案,本發(fā)明實施例提供的片上網(wǎng)絡(luò)中處理報文的方法和路由器,根據(jù)緩存的響應(yīng)報文的地址與請求報文的地址的關(guān)系,確定對請求報文的處理方式,并且緩存的響應(yīng)報文包括至少一個與該路由器不直接相連的處理器核的響應(yīng)報文。由此,能夠降低訪存時延,提升處理器的整體性能,并能夠利用不同處理器核的數(shù)據(jù)共享機(jī)會減少網(wǎng)絡(luò)訪問開銷。
附圖說明
為了更清楚地說明本發(fā)明實施例的技術(shù)方案,下面將對實施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動性的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
圖1是本發(fā)明實施例的片上網(wǎng)絡(luò)中處理報文的方法的示意性流程圖;
圖2是本發(fā)明實施例的片上網(wǎng)絡(luò)中處理報文的方法的另一示意性流程圖;
圖3是本發(fā)明實施例的片上網(wǎng)絡(luò)中處理報文的方法的再一示意性流程圖;
圖4是本發(fā)明實施例的片上網(wǎng)絡(luò)中處理報文的方法的再一示意性流程圖;
圖5是根據(jù)本發(fā)明實施例的片上網(wǎng)絡(luò)中處理報文的方法的再一示意性流程圖;
圖6是根據(jù)本發(fā)明實施例的片上網(wǎng)絡(luò)中處理報文的方法的再一示意性流程圖;
圖7是根據(jù)本發(fā)明實施例的組關(guān)聯(lián)緩存的示意圖;
圖8是根據(jù)本發(fā)明另一實施例的片上網(wǎng)絡(luò)中處理報文的方法的示意性流程圖;
圖9是根據(jù)本發(fā)明另一實施例的片上網(wǎng)絡(luò)中處理報文的方法的另一示意性流程圖;
圖10是根據(jù)本發(fā)明實施例的路由器的示意性框圖;
圖11是根據(jù)本發(fā)明實施例的路由器的另一示意性框圖;
圖12是根據(jù)本發(fā)明實施例的路由器的再一示意性框圖;
圖13是根據(jù)本發(fā)明另一實施例的路由器的示意性框圖。
具體實施方式
下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實施例是本發(fā)明一部分實施例,而不是全部的實施例?;诒景l(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有付出創(chuàng)造性勞動的前提下所獲得的所有其他實施例,都屬于本發(fā)明保護(hù)的范圍。
圖1示出了根據(jù)本發(fā)明實施例的片上網(wǎng)絡(luò)中處理報文的方法的示意性流程圖。該方法100可以由片上網(wǎng)絡(luò)中的路由器執(zhí)行,如圖1所示,該方法100包括:
S110,路由器接收第一處理器核發(fā)送的請求報文;
S120,該路由器確定緩存的響應(yīng)報文的地址與該請求報文的地址的關(guān) 系,該緩存的響應(yīng)報文包括至少一個第二處理器核的響應(yīng)報文,該第二處理器核與該路由器不直接相連;
S130,該路由器根據(jù)該關(guān)系,確定對該請求報文的處理方式。
具體而言,在路由器接收到第一處理器核發(fā)送的請求報文時,確定路由器中緩存的響應(yīng)報文的地址與該請求報文的地址的關(guān)系,路由器中緩存的響應(yīng)報文包括至少一個與該路由器不直接相連的第二處理器核的響應(yīng)報文,并根據(jù)確定的該關(guān)系,確定對該請求報文的處理方式。
因此,本發(fā)明實施例的片上網(wǎng)絡(luò)中處理報文的方法,路由器根據(jù)緩存的響應(yīng)報文的地址與請求報文的地址的關(guān)系,確定對請求報文的處理方式,并且該緩存的響應(yīng)報文包括至少一個與該路由器不直接相連的第二處理器核的響應(yīng)報文。由此,能夠降低訪存時延,提升處理器的整體性能,并能夠利用不同處理器核的數(shù)據(jù)共享機(jī)會減少網(wǎng)絡(luò)訪問開銷。
應(yīng)理解,在本發(fā)明實施例中,該第二處理核與該路由器不直接相連,也就是說,該第二處理器核與該路由器在同一個芯片上,但該第二處理器核不是該路由器的本地節(jié)點。
應(yīng)理解,在本發(fā)明實施例中,第一處理器核發(fā)送的請求報文可以為讀指令請求報文和/或讀數(shù)據(jù)請求報文,還可以為其他的請求報文,本發(fā)明對此不作限定。
還應(yīng)理解,在本發(fā)明實施例中,第一處理器核發(fā)送的請求報文的個數(shù)可以為一個或多個,本發(fā)明對此不作限定。
可選地,如圖2所示,S130包括以下步驟:
S131,在該緩存的響應(yīng)報文的地址中存在與該請求報文中的地址相同的第一地址時,生成目標(biāo)報文,該目標(biāo)報文包括該與第一地址對應(yīng)的響應(yīng)報文中的數(shù)據(jù);
S132,向該第一處理器核發(fā)送該目標(biāo)報文;
具體而言,在S131中,在緩存的響應(yīng)報文的地址中存在與請求報文的地址相同的地址時,路由器會對請求報文進(jìn)行響應(yīng),即路由器將與請求報文中的地址相同的地址對應(yīng)的緩存的響應(yīng)報文中的數(shù)據(jù)打包生成目標(biāo)報文,目標(biāo)報文的地址為第一處理器核的地址。并且,路由器將被響應(yīng)過的請求報文發(fā)送到末級緩存LLC,如果請求報文為讀數(shù)據(jù)請求報文,路由器改變LLC目錄中的向量狀態(tài),以表示共享被響應(yīng)過的請求報文請求讀的數(shù)據(jù)的處理器 核的數(shù)量。
可選地,如圖3所示,S130還包括以下步驟:
S133,在該緩存的響應(yīng)報文的地址中不存在與該請求報文的地址相同的地址時,向下一跳路由器發(fā)送該請求報文;
具體而言,在S133中,路由器比較緩存的響應(yīng)報文的地址與請求報文的地址,在響應(yīng)報文的地址中不存在與請求報文的地址相同的地址時,確定將請求報文發(fā)送給下一跳路由器,由于請求報文中攜帶下一跳路由器的具體信息,根據(jù)該具體信息可以確定下一跳路由器。
可選地,如圖4所示,在S132之前,S130還包括:
S134,對該目標(biāo)報文進(jìn)行編號,得到帶編號目標(biāo)報文;
S135,緩存該帶編號目標(biāo)報文。
相應(yīng)地,S132具體為:向該第一處理器核發(fā)送該帶編號目標(biāo)報文。
具體而言,路由器生成的目標(biāo)報文的個數(shù)可能有一個或多個,在目標(biāo)報文的個數(shù)有多個時,可以對該目標(biāo)報文進(jìn)行編號,得到帶編號目標(biāo)報文,并且將帶編號目標(biāo)報文進(jìn)行緩存,在發(fā)送該目標(biāo)報文時可以根據(jù)每個目標(biāo)報文對應(yīng)的編號的大小進(jìn)行發(fā)送,也可以根據(jù)每個帶編號目標(biāo)報文的優(yōu)先級順序發(fā)送每個帶編號目標(biāo)報文,本發(fā)明對此不作限定。
可選地,在該緩存的響應(yīng)報文的地址中存在與該請求報文的地址相同的第一地址時,如圖5所示,S130還包括:
S136,將該請求報文標(biāo)識為已響應(yīng)請求報文;
S137,對該已響應(yīng)請求報文進(jìn)行編號,得到帶編號已響應(yīng)請求報文。
具體而言,路由器可以將已經(jīng)響應(yīng)過的請求報文標(biāo)識為已響應(yīng)請求報文,并且對已響應(yīng)請求報文進(jìn)行編號,得到帶編號已響應(yīng)請求報文,LLC或者內(nèi)存可以根據(jù)編號確定已經(jīng)被響應(yīng)的請求報文的數(shù)量,并將剩余的未被響應(yīng)的請求報文對應(yīng)的數(shù)據(jù)或者指令發(fā)送給發(fā)送未被響應(yīng)的請求報文的處理器核。
應(yīng)理解,如果已經(jīng)響應(yīng)過的請求報文的讀數(shù)據(jù)請求報文,路由器將LLC目錄中與已響應(yīng)過的請求報文相對應(yīng)的向量狀態(tài)設(shè)置為共享,例如,在非共享狀態(tài)下,向量狀態(tài)可以用“0”表示,共享狀態(tài)下,向量狀態(tài)可以用“1”表示,但本發(fā)明并不限于此。
在本發(fā)明實施例中,可選地,該緩存的響應(yīng)報文的地址緩存在組關(guān)聯(lián)緩 存中,相應(yīng)地,如圖6所示,S120包括:
S121,確定該組關(guān)聯(lián)緩存中與該請求報文的地址相對應(yīng)的組;
S122,確定該組中包括的響應(yīng)報文的地址與該請求報文的地址的關(guān)系。
具體而言,路由器接收到響應(yīng)報文(該響應(yīng)報文包括至少一個該路由器的非本地節(jié)的響應(yīng)報文)后,對響應(yīng)報文進(jìn)行解析,并將解析得到的地址緩存在組關(guān)聯(lián)緩存(Set-Associative Buffer)中,同時將響應(yīng)報文中的數(shù)據(jù)保存在響應(yīng)虛通道(Response_VC)中,Set-Associative Buffer中的表象記錄了地址和對應(yīng)數(shù)據(jù)的映射關(guān)系。如圖7所示,Set-Associative Buffer可以將多個地址以組(set)的形式進(jìn)行組織,當(dāng)需要比較地址時,只需要比較與請求報文的地址相對應(yīng)的組中包括的響應(yīng)報文的地址與請求報文的地址的關(guān)系,而不需要比較所有響應(yīng)報文的地址與請求報文的地址的關(guān)系,由此能夠加速地址比較速度,降低地址比較過程的時延。
舉例來說,比如一個8位的地址,低4位相同的地址都放在同一行中,那么剩下的高4位就有16種組合,這16個組合對應(yīng)的值(地址的高4位)放在該行中;當(dāng)一個請求報文的地址進(jìn)來以后,首先找到該地址的低4位對應(yīng)的set行,讀到16個值,這16個值依次和該地址的高4位進(jìn)行比較,如果相同,則將對應(yīng)表項中指針(pointer)指向的數(shù)據(jù)讀出,并將數(shù)據(jù)發(fā)送給請求該數(shù)據(jù)的處理器核。所以不需要比較所有28=256個地址,加快比較速度。
應(yīng)理解,在響應(yīng)虛通道中緩存的數(shù)據(jù)達(dá)到一定容量時,路由器會按照一定的規(guī)則刪除掉某些數(shù)據(jù),例如,可以根據(jù)共享該數(shù)據(jù)的處理器核的數(shù)量刪除共享數(shù)量較少的數(shù)據(jù),或者根據(jù)數(shù)據(jù)被訪問的時間的先后,刪除較長時間未被訪問的數(shù)據(jù),但本發(fā)明并不限于此。
因此,本發(fā)明實施例的片上網(wǎng)絡(luò)中處理報文的方法,路由器根據(jù)緩存的響應(yīng)報文的地址與請求報文的地址的關(guān)系,確定對請求報文的處理方式,并且緩存的響應(yīng)報文包括至少一個與該路由器不直接相連的處理器核的響應(yīng)報文。由此,能夠降低訪存時延,提升處理器的整體性能,并能夠利用不同處理器核的數(shù)據(jù)共享機(jī)會減少網(wǎng)絡(luò)訪問開銷。
以上結(jié)合圖1至圖7詳細(xì)描述了根據(jù)本發(fā)明實施例的片上網(wǎng)絡(luò)中處理報文的方法,下面將結(jié)合具體的例子詳細(xì)描述本發(fā)明實施例,應(yīng)注意,這些例子只是為了幫助本領(lǐng)域技術(shù)人員更好地理解本發(fā)明實施例,而非限制本發(fā)明 實施例的范圍。
圖8是根據(jù)本發(fā)明另一實施例的片上網(wǎng)絡(luò)中處理報文的方法的示意性流程圖。如圖8所示,該方法200包括:
S201,接收讀指令請求報文和/或讀數(shù)據(jù)請求報文;
S202,比較緩存在請求虛通道(Request Virtual channel,簡稱為“Request_VC”)中的讀指令請求報文和/或讀數(shù)據(jù)請求報文攜帶的地址和響應(yīng)虛通道中的地址;
S203,在請求虛VC中讀指令請求報文和/或讀數(shù)據(jù)請求報文攜帶的地址與響應(yīng)VC中的地址匹配時,將響應(yīng)VC中的數(shù)據(jù)打包產(chǎn)生新的報文,新報文的目的地為請求節(jié)點,而且將新報文標(biāo)識為第n個指令/數(shù)據(jù)報文,之后存放到新報文(new_packet buffer)VC中。
S204,修改請求VC中的請求報文為響應(yīng)過的請求報文,同時標(biāo)識當(dāng)前的響應(yīng)過的請求報文為第n個讀指令請求報文/讀數(shù)據(jù)請求報文。
S205,LLC或者內(nèi)存根據(jù)當(dāng)前已經(jīng)響應(yīng)過的讀指令請求報文/讀數(shù)據(jù)請求報文個數(shù),向請求節(jié)點發(fā)送未被響應(yīng)過的讀指令請求報文/讀數(shù)據(jù)請求報文對應(yīng)的指令/數(shù)據(jù);如果為數(shù)據(jù)請求,將LLC目錄中向量狀態(tài)置為共享。
S206,轉(zhuǎn)發(fā)或向?qū)?yīng)的本地節(jié)點發(fā)送新的報文和其他報文。
可選地,在S201中,接收到的讀指令請求報文和/或讀數(shù)據(jù)請求報文的個數(shù)可以為一個或多個,本發(fā)明對此不作限定。
可選地,在S206中,可以同時轉(zhuǎn)發(fā)或向?qū)?yīng)的本地節(jié)點發(fā)送新的報文和未被響應(yīng)過的請求報文,可以先轉(zhuǎn)發(fā)或向?qū)?yīng)的本地節(jié)點發(fā)送新的報文,在轉(zhuǎn)發(fā)或向?qū)?yīng)的本地節(jié)點發(fā)送未被響應(yīng)過的請求報文。
圖9是根據(jù)本發(fā)明另一實施例的片上網(wǎng)絡(luò)中處理報文的方法的另一示意性流程圖。如圖9所示,該方法300包括:
S301,接收響應(yīng)報文,進(jìn)行報文解析,將響應(yīng)報文對應(yīng)的地址存放在組關(guān)聯(lián)緩存中(Set-Associative buffer);同時組關(guān)聯(lián)緩存中的表項記錄了該地址和對應(yīng)數(shù)據(jù)的映射關(guān)系;
S302,接收請求報文(Req_Pkt),進(jìn)行報文解析(decode),解析請求報文后得到的地址進(jìn)行組關(guān)聯(lián)緩存索引,尋找對應(yīng)的組(set)中是否有對應(yīng)的地址與之匹配,如果匹配,則通過指針(pointer)找到對應(yīng)的數(shù)據(jù),生成新的報文,目的地為請求節(jié)點;
S303,標(biāo)記該請求報文已經(jīng)被響應(yīng)過;
S304,LLC或內(nèi)存根據(jù)當(dāng)前已經(jīng)響應(yīng)的請求報文個數(shù),向請求節(jié)點發(fā)送未被響應(yīng)過的讀指令請求報文/讀數(shù)據(jù)請求報文對應(yīng)的指令/數(shù)據(jù);如果為讀數(shù)據(jù)請求,將LLC目錄中向量狀態(tài)置為共享;
S305,轉(zhuǎn)發(fā)或向?qū)?yīng)的本地節(jié)點發(fā)送新的報文。
因此,本發(fā)明實施例的片上網(wǎng)絡(luò)中處理報文的方法,路由器根據(jù)緩存的響應(yīng)報文的地址與請求報文的地址的關(guān)系,確定對請求報文的處理方式,并且緩存的響應(yīng)報文包括至少一個與該路由器不直接相連的處理器核的響應(yīng)報文。由此,能夠降低訪存時延,提升處理器的整體性能,并能夠利用不同處理器核的數(shù)據(jù)共享機(jī)會減少網(wǎng)絡(luò)訪問開銷。
以上結(jié)合圖1至圖9詳細(xì)描述了根據(jù)本發(fā)明實施例的片上網(wǎng)絡(luò)中處理報文的方法,下面將結(jié)合圖10至圖12詳細(xì)描述根據(jù)本發(fā)明實施例的片上網(wǎng)絡(luò)中的路由器。
如圖10所示,該路由器10包括:請求虛通道11、歷史響應(yīng)報文緩存單元12、地址比較單元13、新報文產(chǎn)生與標(biāo)識單元14;
該請求虛通道11,用于接收第一處理器核發(fā)送的請求報文;
該歷史響應(yīng)報文緩存單元12,用于緩存響應(yīng)報文,該響應(yīng)報文包括至少一個第二處理器核的響應(yīng)報文,該第二處理器核與該路由器不直接相連;
該地址比較單元13,用于確定該歷史響應(yīng)報文緩存單元12中緩存的該響應(yīng)報文的地址與該請求虛通道接收到的該請求報文的地址的關(guān)系;
該新報文產(chǎn)生與標(biāo)識單元14,用于根據(jù)該地址比較單元13確定的該關(guān)系,確定對該請求虛通道11接收到的該請求報文的處理方式。
具體而言,在路由器接收到第一處理器核發(fā)送的請求報文時,確定歷史響應(yīng)報文緩存單元中緩存的響應(yīng)報文的地址與該請求報文的地址的關(guān)系,該歷史響應(yīng)報文緩存單元中緩存的響應(yīng)報文包括至少一個與該路由器不直接相連的處理器核的響應(yīng)報文,并根據(jù)確定的該關(guān)系,確定對該請求報文的處理方式。
因此,本發(fā)明實施例的片上網(wǎng)絡(luò)中的路由器根據(jù)歷史響應(yīng)報文緩存單元中緩存的響應(yīng)報文的地址與請求報文的地址的關(guān)系,確定對請求報文的處理方式,并且歷史響應(yīng)報文緩存單元中緩存的響應(yīng)報文包括至少一個與該路由器不直接相連的處理器核的響應(yīng)報文。由此,能夠降低訪存時延,提升處理 器的整體性能,并能夠利用不同處理器核的數(shù)據(jù)共享機(jī)會減少網(wǎng)絡(luò)訪問開銷。
在本發(fā)明實施例中,可選地,如圖11所示,該路由器10還包括:發(fā)送單元15;
該新報文產(chǎn)生與標(biāo)識單元14,具體用于在該地址比較單元13確定該響應(yīng)報文的地址中存在與該請求報文中的地址相同的第一地址時,生成目標(biāo)報文,該目標(biāo)報文包括與該第一地址對應(yīng)的響應(yīng)報文中的數(shù)據(jù);
該發(fā)送單元15,用于向該第一處理器核發(fā)送該新報文產(chǎn)生與標(biāo)識單元14生成的該目標(biāo)報文。
在本發(fā)明實施例中,可選地,該新報文產(chǎn)生與標(biāo)識單元14具體用于:
在該地址比較單元14確定該歷史響應(yīng)報文緩存單元12緩存的該響應(yīng)報文的地址中不存在與該請求虛通道接收的該請求報文的地址相同的地址時,確定向下一跳路由器發(fā)送該請求報文;
該發(fā)送單元15,用于向該下一跳路由器發(fā)送該請求報文。
在本發(fā)明實施例中,可選地,如圖12所示,該路由器10還包括:新報文虛通道16;
在該發(fā)送單元15向該第一處理器核發(fā)送該目標(biāo)報文之前,該新報文產(chǎn)生與標(biāo)識單元14還用于:對該目標(biāo)報文進(jìn)行編號,得到帶編號目標(biāo)報文;
該新報文虛通道16,用于緩存該新報文產(chǎn)生與標(biāo)識單元14得到的該帶編號目標(biāo)報文。
在本發(fā)明實施例中,可選地,該新報文產(chǎn)生與標(biāo)識單元14,還用于:
將該第一請求報文標(biāo)識為已響應(yīng)請求報文;
對該已響應(yīng)請求報文進(jìn)行編號,得到帶編號已響應(yīng)請求報文。
在本發(fā)明實施例中,可選地,該歷史響應(yīng)報文緩存單元12具體用于:將該響應(yīng)報文的地址緩存在組關(guān)聯(lián)緩存中;
其中,該地址比較單元14具體用于:確定該該組關(guān)聯(lián)緩存中與該請求報文的地址相對應(yīng)的組;確定該該組中包括的響應(yīng)報文的地址與該請求報文的地址的關(guān)系。
在本發(fā)明實施例中,可選地,該請求虛通道11具體用于:接收該請求節(jié)點發(fā)送的讀指令請求報文和/或讀數(shù)據(jù)請求報文。
應(yīng)理解,根據(jù)本發(fā)明實施例的片上網(wǎng)絡(luò)中的路由器10可對應(yīng)于執(zhí)行本 發(fā)明實施例中的片上網(wǎng)絡(luò)中處理報文的方法100,并且路由器10中的各個模塊的上述和其它操作和/或功能分別為了實現(xiàn)圖1至圖6中的相應(yīng)流程,為了簡潔,在此不再贅述。
因此,本發(fā)明實施例的片上網(wǎng)絡(luò)中的路由器根據(jù)歷史響應(yīng)報文緩存單元中緩存的響應(yīng)報文的地址與請求報文的地址的關(guān)系,確定對請求報文的處理方式,歷史響應(yīng)報文緩存單元中緩存的響應(yīng)報文包括至少一個與該路由器不直接相連的處理器核的響應(yīng)報文。由此,能夠降低訪存時延,提升處理器的整體性能,并能夠利用不同處理器核的數(shù)據(jù)共享機(jī)會減少網(wǎng)絡(luò)訪問開銷。
以上結(jié)合圖10至圖12詳細(xì)描述了根據(jù)本發(fā)明實施例的片上網(wǎng)絡(luò)中的路由器,下面將結(jié)合具體的例子詳細(xì)描述本發(fā)明實施例,應(yīng)注意,這些例子只是為了幫助本領(lǐng)域技術(shù)人員更好地理解本發(fā)明實施例,而非限制本發(fā)明實施例的范圍。
圖13是根據(jù)本發(fā)明另一實施例的片上網(wǎng)絡(luò)中的路由器的示意性框圖。如圖13所示,該路由器20包括:
請求虛通道21,用于接收并緩存接收到的讀指令請求報文和/或讀數(shù)據(jù)請求報文;
響應(yīng)虛通道22,用于緩存接收到的響應(yīng)報文;
地址比較單元23,用于比較請求虛通道中21緩存的讀指令請求報文和/或讀數(shù)據(jù)請求報文的地址與響應(yīng)虛通道22中緩存的響應(yīng)報文的地址;
報文產(chǎn)生與標(biāo)識單元24,用于在地址比較單元23確定響應(yīng)虛通道22中緩存的響應(yīng)報文的地址與請求虛通道21中緩存的讀指令請求報文和/或讀數(shù)據(jù)請求報文的地址相同時,將響應(yīng)報文中的數(shù)據(jù)打包生成新報文,報文的目的地位為請求節(jié)點,并將新報文標(biāo)記為第n個新報文后,將新報文緩存到新報文虛通道25中;
新報文虛通道25,用于緩存被標(biāo)記的新報文;
該報文產(chǎn)生與標(biāo)識單元24,還用于修改請求虛通道21中的被響應(yīng)過的請求報文為響應(yīng)過的報文,同時標(biāo)識當(dāng)前響應(yīng)過的報文為第n的讀指令請求報文和/或讀數(shù)據(jù)請求報文;
發(fā)送單元26,用于將新報文和其他未被響應(yīng)的請求報文一起進(jìn)行轉(zhuǎn)發(fā)或者發(fā)送給路由器對應(yīng)的本地節(jié)點。
因此,本發(fā)明實施例的片上網(wǎng)絡(luò)中的路由器根據(jù)歷史響應(yīng)報文緩存單元 緩存的響應(yīng)報文的地址與請求報文的地址的關(guān)系,確定對請求報文的處理方式,歷史響應(yīng)報文緩存單元中緩存的響應(yīng)報文包括至少一個與該路由器不直接相連的處理器核的響應(yīng)報文。由此,能夠降低訪存時延,提升處理器的整體性能,并能夠利用不同處理器核的數(shù)據(jù)共享機(jī)會減少網(wǎng)絡(luò)訪問開銷。
應(yīng)理解,說明書通篇中提到的“一個實施例”或“一實施例”意味著與實施例有關(guān)的特定特征、結(jié)構(gòu)或特性包括在本發(fā)明的至少一個實施例中。因此,在整個說明書各處出現(xiàn)的“在一個實施例中”或“在一實施例中”未必一定指相同的實施例。此外,這些特定的特征、結(jié)構(gòu)或特性可以任意適合的方式結(jié)合在一個或多個實施例中。
在本發(fā)明的各種實施例中,應(yīng)理解,上述各過程的序號的大小并不意味著執(zhí)行順序的先后,各過程的執(zhí)行順序應(yīng)以其功能和內(nèi)在邏輯確定,而不應(yīng)對本發(fā)明實施例的實施過程構(gòu)成任何限定。
另外,本文中術(shù)語“系統(tǒng)”和“網(wǎng)絡(luò)”在本文中??苫Q使用。應(yīng)理解,本文中術(shù)語“和/或”,僅僅是一種描述關(guān)聯(lián)對象的關(guān)聯(lián)關(guān)系,表示可以存在三種關(guān)系,例如,A和/或B,可以表示:單獨存在A,同時存在A和B,單獨存在B這三種情況。另外,本文中字符“/”,一般表示前后關(guān)聯(lián)對象是一種“或”的關(guān)系。
在本申請所提供的實施例中,應(yīng)理解,“與A相應(yīng)的B”表示B與A相關(guān)聯(lián),根據(jù)A可以確定B。但還應(yīng)理解,根據(jù)A確定B并不意味著僅僅根據(jù)A確定B,還可以根據(jù)A和/或其它信息確定B。
本領(lǐng)域普通技術(shù)人員可以意識到,結(jié)合本文中所公開的實施例描述的各示例的單元及算法步驟,能夠以電子硬件、計算機(jī)軟件或者二者的結(jié)合來實現(xiàn),為了清楚地說明硬件和軟件的可互換性,在上述說明中已經(jīng)按照功能一般性地描述了各示例的組成及步驟。這些功能究竟以硬件還是軟件方式來執(zhí)行,取決于技術(shù)方案的特定應(yīng)用和設(shè)計約束條件。專業(yè)技術(shù)人員可以對每個特定的應(yīng)用來使用不同方法來實現(xiàn)所描述的功能,但是這種實現(xiàn)不應(yīng)認(rèn)為超出本發(fā)明的范圍。
所屬領(lǐng)域的技術(shù)人員可以清楚地了解到,為描述的方便和簡潔,上述描述的系統(tǒng)、裝置和單元的具體工作過程,可以參考前述方法實施例中的對應(yīng)過程,在此不再贅述。
在本申請所提供的幾個實施例中,應(yīng)該理解到,所揭露的系統(tǒng)、裝置和 方法,可以通過其它的方式實現(xiàn)。例如,以上所描述的裝置實施例僅僅是示意性的,例如,所述單元的劃分,僅僅為一種邏輯功能劃分,實際實現(xiàn)時可以有另外的劃分方式,例如多個單元或組件可以結(jié)合或者可以集成到另一個系統(tǒng),或一些特征可以忽略,或不執(zhí)行。另一點,所顯示或討論的相互之間的耦合或直接耦合或通信連接可以是通過一些接口,裝置或單元的間接耦合或通信連接,可以是電性,機(jī)械或其它的形式。
所述作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個地方,或者也可以分布到多個網(wǎng)絡(luò)單元上??梢愿鶕?jù)實際的需要選擇其中的部分或者全部單元來實現(xiàn)本實施例方案的目的。
另外,在本發(fā)明各個實施例中的各功能單元可以集成在一個處理單元中,也可以是各個單元單獨物理存在,也可以兩個或兩個以上單元集成在一個單元中。
集成的單元如果以軟件功能單元的形式實現(xiàn)并作為獨立的產(chǎn)品銷售或使用時,可以存儲在一個計算機(jī)可讀取存儲介質(zhì)中?;谶@樣的理解,本發(fā)明的技術(shù)方案本質(zhì)上或者說對現(xiàn)有技術(shù)做出貢獻(xiàn)的部分或者該技術(shù)方案的部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該計算機(jī)軟件產(chǎn)品存儲在一個存儲介質(zhì)中,包括若干指令用以使得一臺計算機(jī)設(shè)備(可以是個人計算機(jī),服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個實施例所述方法的全部或部分步驟。而前述的存儲介質(zhì)包括:U盤、移動硬盤、只讀存儲器(Read-Only Memory,簡稱為“ROM”)、隨機(jī)存取存儲器(Random Access Memory,簡稱為“RAM”)、磁碟或者光盤等各種可以存儲程序代碼的介質(zhì)。
以上所述,僅為本發(fā)明的具體實施方式,但本發(fā)明的保護(hù)范圍并不局限于此,任何熟悉本技術(shù)領(lǐng)域的技術(shù)人員在本發(fā)明揭露的技術(shù)范圍內(nèi),可輕易想到變化或替換,都應(yīng)涵蓋在本發(fā)明的保護(hù)范圍之內(nèi)。因此,本發(fā)明的保護(hù)范圍應(yīng)以所述權(quán)利要求的保護(hù)范圍為準(zhǔn)。