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

指令塊處理方法及裝置與流程

文檔序號:12362726閱讀:201來源:國知局
指令塊處理方法及裝置與流程

本發(fā)明涉及計(jì)算機(jī)技術(shù)領(lǐng)域,尤其涉及指令塊處理方法及裝置。



背景技術(shù):

中央處理單元(central processing unit,CPU)可以通過超大規(guī)模集成電路(very-large-scale integration,VLSI)實(shí)現(xiàn)。CPU在計(jì)算機(jī)中可以執(zhí)行運(yùn)算和控制功能。CPU可以用于解析計(jì)算機(jī)指令以及處理計(jì)算機(jī)中的數(shù)據(jù)。為了提高CPU的處理性能,通常采用高速緩存(cache)機(jī)制。包含cache的CPU通過總線與存儲器耦合。CPU需要獲取數(shù)據(jù)時,CPU的處理核可以先查找高速緩存。當(dāng)高速緩存沒有命中(cache miss)時CPU的處理核再查找存儲器。在cache miss出現(xiàn)的頻率較低的情況下,cache機(jī)制可以為CPU提供較高的處理性能。然而,有的場景中,例如網(wǎng)絡(luò)通信場景,cache miss出現(xiàn)的頻率較高。上述場景中,CPU的處理性能較低。

舉例來說,對于網(wǎng)絡(luò)裝置(例如,路由器,交換機(jī),存儲設(shè)備、服務(wù)器或者無線設(shè)備),要求使用高性能的處理器。例如使用網(wǎng)絡(luò)處理器。網(wǎng)絡(luò)處理器可以采用眾核架構(gòu)。每個核可以支持多硬件線程。例如,使用網(wǎng)絡(luò)裝置實(shí)現(xiàn)報文轉(zhuǎn)發(fā)業(yè)務(wù)。所述報文轉(zhuǎn)發(fā)業(yè)務(wù)可能需要用到多個指令塊(instruction block)。每個指令塊可以是實(shí)現(xiàn)功能的指令序列。例如,指令塊可以是微碼函數(shù)或者C語言函數(shù)。指令塊存儲在存儲器中。處理器可以通過訪問存儲器獲得指令塊。具體實(shí)現(xiàn)時,所述多個指令塊可以存儲在一個存儲器中。所述處理器可以通過串行的方式訪問所述存儲器從而獲取所述多個指令塊。為提高處理器的處理性能,也可以將所述多個指令塊保存在多個存儲器中。每個存儲器都保存所述多個指令塊。所述處理器可以通過并行的方式訪問所述多個存儲器從而獲取所述 多個指令塊。

上述技術(shù)方案存在以下問題:為了使得處理器能夠?qū)崿F(xiàn)一定的處理性能,增加了指令對存儲空間的占用。



技術(shù)實(shí)現(xiàn)要素:

有鑒于此,本發(fā)明實(shí)施例提供了一種指令塊處理方法及裝置,在處理器能夠?qū)崿F(xiàn)一定的處理性能的情況下,減少了指令對存儲空間的占用。

本發(fā)明實(shí)施例提供的技術(shù)方案如下。

第一方面,提供了一種指令塊處理方法,包括:

處理器確定X個指令塊中的第一指令塊,所述第一指令塊被執(zhí)行讀操作的頻率大于所述X個指令塊中其他指令塊中的每個指令塊被執(zhí)行讀操作的頻率,所述X個指令塊被保存在第一存儲器集合中的N個存儲器的每個存儲器中,N是正整數(shù),X是大于1的整數(shù);以及

所述處理器將所述第一指令塊保存在第二存儲器集合中的M個存儲器的每個存儲器中,M是正整數(shù),所述第一存儲器集合和所述第二存儲器集合的交集為空集合,其中,所述M個存儲器的帶寬大于所述N個存儲器的帶寬。

在第一方面的第一種可能的實(shí)現(xiàn)方式中,所述方法還包括:

所述處理器將所述第一指令塊保存在所述第二存儲器集合中的所述M個存儲器的每個存儲器中具體包括:

所述處理器在所述N個存儲器中所述第一存儲器的使用情況大于或等于第一閾值時,將所述第一指令塊保存在所述第二存儲器集合中的所述M個存儲器的每個存儲器中,所述第一閾值大于0。

結(jié)合第一方面的第一種可能的實(shí)現(xiàn)方式,第一方面的第二種可能的實(shí) 現(xiàn)方式中,所述方法還包括:

所述處理器在所述N個存儲器中所述第一存儲器的使用情況大于或等于第一閾值時,將所述第一指令塊保存在所述第二存儲器集合中的所述M個存儲器的每個存儲器中具體包括:

所述處理器在所述N個存儲器中所述第一存儲器的使用情況大于或等于所述第一閾值以及所述M個存儲器中第二存儲器的使用情況小于第二閾值時,將所述第一指令塊保存在所述第二存儲器集合中的所述M個存儲器的每個存儲器中,所述第二閾值大于0。

結(jié)合第一方面的第一種可能的實(shí)現(xiàn)方式,第一方面的第三種可能的實(shí)現(xiàn)方式中,在所述處理器將所述第一指令塊保存在所述第二存儲器集合中的所述M個存儲器的每個存儲器中之前,所述方法還包括:

所述處理器確定Y個指令塊中的第二指令塊,所述第二指令塊被執(zhí)行讀操作的頻率小于所述Y個指令塊中其他指令塊中的每個指令塊被執(zhí)行讀操作的頻率,所述Y個指令塊被保存在所述第二存儲器集合中的所述M個存儲器的每個存儲器中,Y為大于1的整數(shù);以及

所述處理器在所述M個存儲器中第二存儲器的使用情況大于或等于第二閾值時,將所述第二指令塊保存在所述第一存儲器集合中的所述N個存儲器的每個存儲器中,所述第二閾值大于0。

結(jié)合第一方面,或第一方面的上述任意一種可能的實(shí)現(xiàn)方式,第一方面的第四種可能的實(shí)現(xiàn)方式中,在所述處理器將所述第一指令塊保存在所述第二存儲器集合中的所述M個存儲器的每個存儲器中之后,所述方法還包括:

所述處理器刪除所述N個存儲器中每個存儲器保存的所述第一指令 塊。

結(jié)合上述第一方面的第三種可能的實(shí)現(xiàn)方式,第一方面的第五種可能的實(shí)現(xiàn)方式中,在所述處理器將所述第二指令塊保存在所述第一存儲器集合中的所述N個存儲器的每個存儲器中之后,所述方法還包括:

所述處理器刪除所述M個存儲器中每個存儲器保存的所述第二指令塊。

結(jié)合第一方面,或第一方面的上述任意一種可能的實(shí)現(xiàn)方式,第一方面的第六種可能的實(shí)現(xiàn)方式中,所述X個指令塊中每個指令塊包含計(jì)數(shù)指令,所述處理器確定所述X個指令塊中的所述第一指令塊之前,所述方法還包括:

所述處理器通過執(zhí)行所述X個指令塊中每個指令塊中包含的所述計(jì)數(shù)指令確定所述X個指令塊中每個指令塊被執(zhí)行讀操作的數(shù)量;以及

所述處理器根據(jù)所述X個指令塊中每個指令塊被執(zhí)行讀操作的數(shù)量確定所述X個指令塊中每個指令塊被執(zhí)行讀操作的頻率。

第二方面,提供了一種處理器,包括:

第一確定單元,用于確定X個指令塊中的第一指令塊,所述第一指令塊被執(zhí)行讀操作的頻率大于所述X個指令塊中其他指令塊中的每個指令塊被執(zhí)行讀操作的頻率,所述X個指令塊被保存在第一存儲器集合中的N個存儲器的每個存儲器中,N是正整數(shù),X是大于1的整數(shù);以及

執(zhí)行單元,用于將所述第一確定單元確定的所述第一指令塊保存在第二存儲器集合中的M個存儲器的每個存儲器中,M是正整數(shù),所述第一存儲器集合和所述第二存儲器集合的交集為空集合,其中,所述M個存儲器的帶寬大于所述N個存儲器的帶寬。

在第二方面的第一種可能的實(shí)現(xiàn)方式中,所述執(zhí)行單元具體用于:

在所述N個存儲器中所述第一存儲器的使用情況大于或等于第一閾值時,將所述第一指令塊保存在所述第二存儲器集合中的所述M個存儲器的每個存儲器中,所述第一閾值大于0。

結(jié)合第二方面的第一種可能的實(shí)現(xiàn)方式,第二方面的第二種可能的實(shí)現(xiàn)方式中,所述執(zhí)行單元具體用于:

在所述N個存儲器中所述第一存儲器的使用情況大于或等于所述第一閾值以及所述M個存儲器中第二存儲器的使用情況小于第二閾值時,將所述第一指令塊保存在所述第二存儲器集合中的所述M個存儲器的每個存儲器中,所述第二閾值大于0。

結(jié)合第二方面的第一種可能的實(shí)現(xiàn)方式,第二方面的第三種可能的實(shí)現(xiàn)方式中,所述處理器還包括:

第二確定單元,用于在所述執(zhí)行單元將所述第一指令塊保存在所述第二存儲器集合中的所述M個存儲器的每個存儲器中之前,確定Y個指令塊中的第二指令塊,所述第二指令塊被執(zhí)行讀操作的頻率小于所述Y個指令塊中其他指令塊中的每個指令塊被執(zhí)行讀操作的頻率,所述Y個指令塊被保存在所述第二存儲器集合中的所述M個存儲器的每個存儲器中,Y為大于1的整數(shù);

所述執(zhí)行單元,還用于在所述M個存儲器中第二存儲器的使用情況大于或等于第二閾值時,將所述第二確定單元確定的所述第二指令塊保存在所述第一存儲器集合中的所述N個存儲器的每個存儲器中,所述第二閾值大于0。

結(jié)合第二方面,或第二方面的上述任意一種可能的實(shí)現(xiàn)方式,第二方 面的第四種可能的實(shí)現(xiàn)方式中,所述處理器還包括刪除單元,所述刪除單元用于在所述執(zhí)行單元將所述第一指令塊保存在所述第二存儲器集合中的所述M個存儲器的每個存儲器中之后,刪除所述N個存儲器中每個存儲器保存的所述第一指令塊。

結(jié)合第二方面的第三種可能的實(shí)現(xiàn)方式,第二方面的第五種可能的實(shí)現(xiàn)方式中,所述處理器還包括刪除單元,所述刪除單元用于在所述執(zhí)行單元將所述第二指令塊保存在所述第一存儲器集合中的所述N個存儲器的每個存儲器中之后,刪除所述M個存儲器中每個存儲器保存的所述第二指令塊。

結(jié)合第二方面,或第二方面的上述任意一種可能的實(shí)現(xiàn)方式,第二方面的第六種可能的實(shí)現(xiàn)方式中,所述X個指令塊中每個指令塊包含計(jì)數(shù)指令,所述處理器還包括第三確定單元,所述第三確定單元用于在所述第一確定單元確定所述X個指令塊中的所述第一指令塊之前,通過執(zhí)行所述X個指令塊中每個指令塊中包含的所述計(jì)數(shù)指令確定所述X個指令塊中每個指令塊被執(zhí)行讀操作的數(shù)量;以及

根據(jù)所述X個指令塊中每個指令塊被執(zhí)行讀操作的數(shù)量確定所述X個指令塊中每個指令塊被執(zhí)行讀操作的頻率。

上述技術(shù)方案中,處理器將第一存儲器集合的存儲器中被執(zhí)行讀操作的頻率最高的指令塊保存到比所述第一存儲器集合中的N個存儲器具有更高帶寬的第二存儲器集合的M個存儲器中。從而,在處理器能夠?qū)崿F(xiàn)一定的處理性能的情況下,減少了指令對存儲空間的占用。

附圖說明

為了更清楚地說明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的方案,下面將對實(shí)施例中 所需要使用的附圖作一簡單地介紹。顯而易見地,下面描述中的附圖是本發(fā)明的一些實(shí)施例。對于本領(lǐng)域普通技術(shù)人員而言,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。

圖1為本發(fā)明實(shí)施例提供的指令塊處理方法的流程示意圖;

圖2為本發(fā)明實(shí)施例中搬移指令塊的示意圖;

圖3為本發(fā)明實(shí)施例提供的處理器的結(jié)構(gòu)示意圖;

圖4為本發(fā)明實(shí)施例提供的處理器的硬件結(jié)構(gòu)示意圖;

圖5為本發(fā)明實(shí)施例的處理器內(nèi)部的功能模塊的交互示意圖。

具體實(shí)施方式

本發(fā)明實(shí)施例提供了指令塊處理方法及裝置,用于減少指令對存儲空間的占用。

下面通過具體實(shí)施例,分別進(jìn)行詳細(xì)的說明。

為使得本發(fā)明的目的、特征、優(yōu)點(diǎn)能更加的明顯和易懂,下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚地描述。顯然下面所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而非全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動的前提下可以獲得其他實(shí)施例。

本申請的說明書和權(quán)利要求書及附圖中的術(shù)語“第一”、“第二”、“第三”和“第四”等是用于區(qū)別不同對象,而不是用于限定特定順序。此外,術(shù)語“包括”和“具有”不是排他的。例如,包括了已提及的步驟的方法,還可以包括沒有提及的步驟。包含了已提及的單元的裝置,還可以包括沒有提及的單元。

本申請中的存儲器的帶寬是指處理器能夠從所述存儲器讀出的數(shù)據(jù)的速率。所述數(shù)據(jù)可以是指令塊。當(dāng)所述存儲器是只有一個存儲器時,所述存儲器 的帶寬等于所述只有一個存儲器的帶寬。當(dāng)所述存儲器是多個存儲器時,所述存儲器的帶寬等于所述多個存儲器分別對應(yīng)的多個帶寬的和。

圖1為本發(fā)明實(shí)施例提供的指令塊處理方法的流程示意圖。如圖1所示,該方法包括如下步驟。

S102,處理器確定X個指令塊中的第一指令塊,所述第一指令塊被執(zhí)行讀操作的頻率大于所述X個指令塊中其他指令塊中的每個指令塊被執(zhí)行讀操作的頻率,所述X個指令塊被保存在第一存儲器集合中的N個存儲器的每個存儲器中,N是正整數(shù),X是大于1的整數(shù)。

舉例說明,所述處理器通過數(shù)據(jù)總線連接所述存儲器。所述存儲器存儲有指令塊。所述處理器可以通過訪問所述存儲器獲得所述指令塊。所述處理器基于獲得的所述指令塊對業(yè)務(wù)數(shù)據(jù)進(jìn)行處理。所述處理器連接第一存儲器集合。所述第一存儲器集合包括N個存儲器,N是正整數(shù)。也就是說,所述第一存儲器集合可以包括只有一個存儲器或者多于一個的存儲器。其中,當(dāng)所述第一存儲器集合包括所述只有一個存儲器時,所述X個指令塊保存在所述只有一個存儲器中。X是大于1的整數(shù)。所述處理器可以通過串行的方式訪問所述只有一個存儲器從而獲取所述多個指令塊。當(dāng)所述第一存儲器集合包括所述多于一個的存儲器時,所述X個指令塊保存在所述多于一個的存儲器中的每個存儲器中。也就是說,每個存儲器都保存所述X個指令塊。所述處理器可以通過并行的方式訪問所述多于一個存儲器從而獲取所述多個指令塊。由于所述處理器采用并行的方式訪問所述多于一個存儲器,在每個存儲器具有相等帶寬的情況下,采用所述多于一個存儲器方式所述處理器獲得的帶寬大于采用所述只有一個存儲器方式所述處理器獲得的帶寬。因此,所述處理器可以獲得更高的處理性能。

舉例來說,所述X個指令塊可以是用于執(zhí)行轉(zhuǎn)發(fā)業(yè)務(wù)的計(jì)算機(jī)程序。所述轉(zhuǎn)發(fā)業(yè)務(wù)可以是二層轉(zhuǎn)發(fā)業(yè)務(wù)、三層轉(zhuǎn)發(fā)業(yè)務(wù)、四層轉(zhuǎn)發(fā)業(yè)務(wù)、多協(xié)議標(biāo)簽交換(multiprotocol label switching,MPLS)轉(zhuǎn)發(fā)業(yè)務(wù)或者虛擬專用網(wǎng)(virtual private network,VPN)轉(zhuǎn)發(fā)業(yè)務(wù)。所述二層轉(zhuǎn)發(fā)業(yè)務(wù)可以是媒體接入控制(media access control,MAC)協(xié)議轉(zhuǎn)發(fā)業(yè)務(wù)。所述三層轉(zhuǎn)發(fā)業(yè)務(wù)可以是網(wǎng)際協(xié)議(internet protocol,IP)轉(zhuǎn)發(fā)業(yè)務(wù)。所述四層轉(zhuǎn)發(fā)業(yè)務(wù)可以是傳輸控制協(xié)議(transmission control protocol,TCP)轉(zhuǎn)發(fā)業(yè)務(wù)或者用戶數(shù)據(jù)報協(xié)議(user datagram protocol,UDP)轉(zhuǎn)發(fā)業(yè)務(wù)。所述VPN轉(zhuǎn)發(fā)業(yè)務(wù)可以是二層虛擬專用網(wǎng)(layer 2 virtual private network,L2VPN)轉(zhuǎn)發(fā)業(yè)務(wù)或者三層虛擬專用網(wǎng)(layer 3 virtual private network,L3VPN)轉(zhuǎn)發(fā)業(yè)務(wù)。所述轉(zhuǎn)發(fā)業(yè)務(wù)可以對一個協(xié)議的報文進(jìn)行處理。例如MAC協(xié)議轉(zhuǎn)發(fā)業(yè)務(wù)可以對MAC協(xié)議報文進(jìn)行處理。IP轉(zhuǎn)發(fā)業(yè)務(wù)可以對IP報文進(jìn)行處理。TCP轉(zhuǎn)發(fā)業(yè)務(wù)可以對TCP報文進(jìn)行處理。UDP轉(zhuǎn)發(fā)業(yè)務(wù)可以對UDP報文進(jìn)行處理。

舉例說明,所述處理器可以采用單處理核的結(jié)構(gòu),也可以采用多處理核的結(jié)構(gòu)。在采用所述多處理核的結(jié)構(gòu)時,每個處理核可以連接一個或多個存儲器。

以網(wǎng)絡(luò)裝置對報文執(zhí)行轉(zhuǎn)發(fā)業(yè)務(wù)為例進(jìn)行說明。網(wǎng)絡(luò)處理器是所述網(wǎng)絡(luò)裝置的部件。所述網(wǎng)絡(luò)處理器通常采用眾核架構(gòu)。也就是說,所述網(wǎng)絡(luò)處理器具有多個處理核。所述多個處理核中一部分處理核用于處理轉(zhuǎn)發(fā)業(yè)務(wù),另一部分處理核用于執(zhí)行管理。或者,所述多個處理核中全部處理核可以都處理轉(zhuǎn)發(fā)業(yè)務(wù)。當(dāng)所述全部處理核都處理轉(zhuǎn)發(fā)業(yè)務(wù)時,所述網(wǎng)絡(luò)處理器可以集成至少一個管理CPU。所述至少一個管理CPU用于對所述轉(zhuǎn)發(fā)業(yè)務(wù)進(jìn)行管理和控制?;蛘?,所述網(wǎng)絡(luò)處理器可以與處理器芯片耦合。所述處理器芯片用于對轉(zhuǎn)發(fā)業(yè)務(wù)進(jìn)行管理和控制。所述網(wǎng)絡(luò)處理器可以連接所述第一存儲器集合。所述第一 存儲器集合包括多個存儲器。每個存儲器都保存所述X個指令塊。也就是說,可以將多個存儲器看作是一個存儲器的多個鏡像。因?yàn)?,每個存儲器保存了相同的指令塊。所述網(wǎng)絡(luò)處理器在執(zhí)行轉(zhuǎn)發(fā)業(yè)務(wù)時,可以將多個待轉(zhuǎn)發(fā)的報文負(fù)載分擔(dān)到多個處理核中。每個處理核通過訪問與其連接的存儲器獲取相應(yīng)的指令塊執(zhí)行報文轉(zhuǎn)發(fā)業(yè)務(wù)。從而,所述網(wǎng)絡(luò)處理器實(shí)現(xiàn)了通過并行的方式訪問所述多個存儲器。舉例來說,網(wǎng)絡(luò)處理器包括10個處理核,每個處理核連接1個存儲器。待轉(zhuǎn)發(fā)的報文為100個。對一個報文進(jìn)行轉(zhuǎn)發(fā)需要5個指令塊。這樣,網(wǎng)絡(luò)處理器100個待轉(zhuǎn)發(fā)的報文被負(fù)載分擔(dān)到10個處理核中。每個處理核被分配10個待轉(zhuǎn)發(fā)的報文。每個處理核分別處理被分配的10個待轉(zhuǎn)發(fā)的報文。從而實(shí)現(xiàn)10個處理核并行的處理待轉(zhuǎn)發(fā)的報文。相應(yīng)的,所述網(wǎng)絡(luò)處理器并行的訪問所述多個存儲器從而獲取多個指令塊。

舉例說明,每個存儲器中存儲有所述X個指令塊。所述處理器通過訪問所述N個存儲器獲取多個指令塊。因此,在一個周期內(nèi),所述X個指令塊中不同的指令塊被讀取次數(shù)可能不同。例如,一個周期內(nèi),所述X個指令塊中的指令塊1被讀取5次,所述X個指令塊中的指令塊2被讀取8次。如此這樣,可以根據(jù)所述X個指令塊中每個指令塊被執(zhí)行讀操作的次數(shù),確定所述X個指令塊中每個指令塊被執(zhí)行讀操作的頻率。另外,可以確定所述第一指令塊。所述第一指令塊被執(zhí)行讀操作的頻率大于所述X個指令塊中其他指令塊中的每個指令塊被執(zhí)行讀操作的頻率。所述其他指令塊是指所述X個指令塊中除所述第一指令塊的所有指令塊。例如,當(dāng)X=2時,其他指令塊數(shù)量為1。又例如,當(dāng)X=5時,其他指令塊數(shù)量為4。也就是說,所述第一指令塊是所述X個指令塊中被執(zhí)行讀操作的頻率最高的指令塊。需要說明的是,所述第一指令塊可能為一個,也可能為多個。

以使用網(wǎng)絡(luò)裝置對報文執(zhí)行轉(zhuǎn)發(fā)業(yè)務(wù)為例進(jìn)行說明。為支持多種轉(zhuǎn)發(fā)業(yè)務(wù),每個存儲器中可能存儲有一千個指令塊。但是,在現(xiàn)網(wǎng)場景下,一個網(wǎng)絡(luò)裝置在一個周期內(nèi)可能只執(zhí)行一種或幾種轉(zhuǎn)發(fā)業(yè)務(wù)。也就是說,現(xiàn)網(wǎng)場景下,不同的指令塊被執(zhí)行讀操作的頻率是不同的。一個周期內(nèi)可能只有少數(shù)的指令塊被執(zhí)行的讀操作的頻率較高,大多數(shù)指令塊被執(zhí)行讀操作的頻率較低甚至為0。如此這樣,可以確定出所述第一指令塊,所述第一指令塊被執(zhí)行讀操作的頻率大于所述X個指令塊中其他指令塊中的每個指令塊被執(zhí)行讀操作的頻率。

S104,所述處理器將所述第一指令塊保存在第二存儲器集合中的M個存儲器的每個存儲器中,M是正整數(shù),所述第一存儲器集合和所述第二存儲器集合的交集為空集合,其中,所述M個存儲器的帶寬大于所述N個存儲器的帶寬。

舉例說明,所述處理器還可以連接所述第二存儲器集合。所述第二存儲器集合包括所述M個存儲器。M是正整數(shù)。所述第一存儲器集合和所述第二存儲器集合的交集為空集合。也就是說,所述M個存儲器不包含所述N個存儲器中的任意一個存儲器。所述N個存儲器不包含所述M個存儲器中的任意一個存儲器。所述M個存儲器的帶寬大于所述N個存儲器的帶寬。也就是說,所述M個存儲器的所有存儲器的帶寬的總和大于所述N個存儲器的所有存儲器的帶寬的總和。本申請對于M和N的數(shù)值關(guān)系不作限定。M可以大于N、或M可以等于N、或M可以小于N。

舉例來說,圖1所示的方法涉及到的所有存儲器都具有相同的帶寬。具體來說,所述M個存儲器中每個存儲器的帶寬等于所述N個存儲器中每個存儲器的帶寬。M大于N。上述方案中,所有存儲器可以采用統(tǒng)一的架 構(gòu),有助于降低實(shí)現(xiàn)成本。

舉例說明,根據(jù)S102的解釋,所述處理器可以通過并行的方式訪問所述多于一個存儲器從而獲取所述多個指令塊。

S104中將所述第一指令塊保存在所述第二存儲器集合中的所述M個存儲器的每個存儲器中具體實(shí)現(xiàn)時可以有多種實(shí)現(xiàn)方式。圖2示出了一種實(shí)現(xiàn)方式。圖2為本發(fā)明實(shí)施例中搬移指令塊的示意圖。如圖2所示,存儲器1包括指令塊0、指令塊1和指令塊2。存儲器1可以是圖1所示的方法涉及的N個存儲器中的一個存儲器。存儲器2可以是圖1所示的方法涉及的M個存儲器中的一個存儲器?,F(xiàn)在需要將存儲器1中的指令塊2保存到存儲器2中。首先,將指令塊2寫入存儲器2中;然后,修改所有需要跳轉(zhuǎn)到指令塊2的跳轉(zhuǎn)指令的跳轉(zhuǎn)地址。其中,圖2中的符號“×”表示存儲器1中的指令塊可以被刪除。本申請對于是否刪除存儲器1中的指令塊2不作限定。因?yàn)?,即使不刪除存儲器1中的指令塊2,也不會影響對業(yè)務(wù)進(jìn)行處理。

舉例說明,S102和S104可以按照預(yù)定條件重復(fù)執(zhí)行。例如,每隔一個周期,執(zhí)行一次S102和S104,從而將每個周期結(jié)束時被執(zhí)行讀操作的頻率最高的指令塊保存在所述第二存儲器集合中的所述M個存儲器的每個存儲器中。如此這樣,實(shí)現(xiàn)把被執(zhí)行讀操作的頻率最高的指令塊存儲在所述M個存儲器的每個存儲器中。

以使用網(wǎng)絡(luò)裝置對業(yè)務(wù)報文執(zhí)行轉(zhuǎn)發(fā)業(yè)務(wù)為例進(jìn)行說明。根據(jù)S102的解釋,現(xiàn)網(wǎng)場景下,一個周期內(nèi)可能只有少數(shù)的指令塊被執(zhí)行讀操作的頻率較高,大多數(shù)指令塊被執(zhí)行讀操作的頻率很低甚至為0。所述網(wǎng)絡(luò)處理器連接所述第一存儲器集合,所述第一存儲器集合中所述N個存儲器的每個存儲器均保存所述X個指令塊。確定出所述第一指令塊。所述第一指令塊是所述X個 指令塊中被執(zhí)行讀操作的頻率最高的指令塊。需要說明的是,由于N個存儲器的每個存儲器都保存相同的指令塊。而且,待轉(zhuǎn)發(fā)的報文可以通過負(fù)載分擔(dān)的方式分配到多個存儲器。例如,待轉(zhuǎn)發(fā)的報文數(shù)量為20個,存儲器有5個,那么每個存儲器分配的報文數(shù)量為4個。也就是說,所述存儲器需要通過對每個存儲器執(zhí)行讀操作獲取指令,并根據(jù)獲取的指令對4個報文進(jìn)行處理。所述處理器確定所述X個指令塊中的所述第一指令塊具體實(shí)現(xiàn)時,可以只對一個時間單元內(nèi)所述N個存儲器的一個存儲器中的所述X個指令塊中每個指令塊被執(zhí)行讀操作的數(shù)量進(jìn)行統(tǒng)計(jì)即可。不需要對一個時間單元(time unit)內(nèi)所述N個存儲器的每個存儲器中的指令塊被執(zhí)行讀操作的數(shù)量進(jìn)行統(tǒng)計(jì)??梢岳斫?,一個時間單元內(nèi)所述N個存儲器的N個所述第一指令塊被執(zhí)行讀操作的數(shù)量是所述一個時間單元內(nèi)所述N個存儲器的一個存儲器中的所述第一指令塊被執(zhí)行讀操作的數(shù)量的N倍。

現(xiàn)有技術(shù)中,網(wǎng)絡(luò)處理器只連接一個存儲器集合。存儲器集合中的每個存儲器存儲了多個指令?,F(xiàn)有技術(shù)中,所述網(wǎng)絡(luò)處理器也不會確定所述多個指令塊中被執(zhí)行讀操作的頻率最高的指令塊。當(dāng)網(wǎng)絡(luò)處理器連接的所述存儲器集合的多個存儲器無法支持所述網(wǎng)絡(luò)處理器需要達(dá)到的處理性能時,現(xiàn)有技術(shù)采用的手段是,增加所述網(wǎng)絡(luò)處理器連接的存儲器的數(shù)量。新增的存儲器中也保存了所述多個指令塊。由于存儲器的數(shù)量增加了,存儲器的帶寬也增加了。因此,更多的存儲器能夠支持所述網(wǎng)絡(luò)處理器需要達(dá)到的處理性能。也就是說,現(xiàn)有技術(shù)中,網(wǎng)絡(luò)處理器需要連接更多的存儲器。更多的存儲器能夠提供更高的帶寬。例如,現(xiàn)有技術(shù)中,網(wǎng)絡(luò)處理器連接10個存儲器。每個存儲器中保存指令塊集合(例如1000個指令塊)。當(dāng)10個存儲器中每個存儲器的帶寬占用率都大于或者等于95%時,所述網(wǎng)絡(luò)處理器的處理性能為10千兆比特每秒 (gigabit per second,gbps)。為了使得網(wǎng)絡(luò)處理器的處理性能為15gbps,需要將網(wǎng)絡(luò)處理器連接到15個存儲器(即新增了5個存儲器)。每個存儲器中保存所述指令塊集合。也就是說,現(xiàn)有技術(shù)中,網(wǎng)絡(luò)處理器需要占用更多的存儲空間。具體來說,所述指令塊集合需要被復(fù)制到更多的存儲器中。這樣,連接到網(wǎng)絡(luò)處理器的存儲器的數(shù)量增加了。更多的存儲器能夠?yàn)榫W(wǎng)絡(luò)處理器提供更多的帶寬,從而支持網(wǎng)絡(luò)處理器達(dá)到更高的處理性能。但實(shí)際上,所述多個指令塊僅有少數(shù)指令塊是被頻繁訪問的,大多數(shù)指令塊被執(zhí)行讀操作的頻率很低或處于空閑狀態(tài)?,F(xiàn)有技術(shù)中,不對多個指令塊進(jìn)行區(qū)分,而是將多個指令塊都進(jìn)行相同次數(shù)的復(fù)制,從而增加了指令對存儲空間的占用。

本實(shí)施例提供的指令塊處理方法,處理器將第一存儲器集合的存儲器中被執(zhí)行讀操作的頻率最高的指令塊保存到比所述第一存儲器集合中的N個存儲器具有更高帶寬的第二存儲器集合的M個存儲器中。從而,在存儲器能夠?qū)崿F(xiàn)一定的處理性能的情況下,減少指令對存儲空間的占用。

可選的,所述處理器將所述第一指令塊保存在所述第二存儲器集合中的所述M個存儲器的每個存儲器中具體包括:所述處理器在所述N個存儲器中所述第一存儲器的使用情況大于或等于第一閾值時,將所述第一指令塊保存在所述第二存儲器集合中的所述M個存儲器的每個存儲器中,所述第一閾值大于0。

舉例說明,當(dāng)使用所述處理器對數(shù)據(jù)進(jìn)行處理時,存儲器的使用情況可能會隨著所述處理器處理的業(yè)務(wù)的類型或者處理的業(yè)務(wù)的數(shù)量改變而變化。例如,增加新業(yè)務(wù)可能導(dǎo)致所述存儲器的使用情況的增加。當(dāng)所述處理器的使用情況處于較高水平時,改變所述處理器處理的業(yè)務(wù)的類型或者處理的業(yè)務(wù)的數(shù)量,可能會導(dǎo)致所述存儲器的使用情況達(dá)到最大值。也就 是說,所述存儲器可能處于滿負(fù)荷運(yùn)行的狀態(tài)。這種情況下所述處理器的處理性能將無法得到進(jìn)一步的提升。因此,本實(shí)施例設(shè)定了第一閾值。當(dāng)所述N個存儲器中所述第一存儲器的使用情況大于或等于所述第一閾值時,執(zhí)行將所述X個指令塊中被執(zhí)行讀操作的頻率最高的所述第一指令塊保存在所述第二存儲器集合中的所述M個存儲器的每個存儲器中。其中,本申請不限定所述第一閾值的取值。所述第一閾值可以根據(jù)所述處理器的使用的場景、所述處理器處理的業(yè)務(wù)的類型或者所述處理器處理的業(yè)務(wù)需要具備的性能確定。其中,對于所述第一存儲器的使用情況不作限定??梢杂靡粋€指標(biāo)標(biāo)識所述第一存儲器的使用情況。例如,可以用所述第一存儲器的帶寬的占用率標(biāo)識所述第一存儲器的使用情況?;蛘撸梢杂靡粋€周期內(nèi)所述存儲器對所述第一存儲器執(zhí)行讀操作的次數(shù)標(biāo)識所述第一存儲器的使用情況。或者,可以用所述第一存儲器的存儲空間的占用率標(biāo)識所述第一存儲器的使用情況。也可以用多個指標(biāo)標(biāo)識所述第一存儲器的使用情況。所述多個指標(biāo)可以是上文提及的三個指標(biāo)中的至少兩個指標(biāo)。其中,所述第一存儲器可能為一個存儲器,也可能為多個存儲器。也就是說,當(dāng)至少有一個存儲器的使用情況大于或等于所述第一閾值時,就會觸發(fā)將所述第一指令塊保存在所述第二存儲器集合中的所述M個存儲器的每個存儲器中的動作。

舉例說明,在確定所述第一指令塊后,當(dāng)所述N個存儲器中所述第一存儲器的使用情況大于或等于所述第一閾值時,執(zhí)行將所述X個指令塊中被執(zhí)行讀操作的頻率最高的所述第一指令塊保存在所述第二存儲器集合中的所述M個存儲器的每個存儲器中。例如,用所述第一存儲器的帶寬的占用率標(biāo)識所述第一存儲器的使用情況的場景中。所述第一閾值可以是 85%-100%。所述第一閾值也可以是85%,90%,95%,或者100%。當(dāng)所述N個存儲器的所述第一存儲器的帶寬占用率大于或等于85%,90%,95%,或者100%時,執(zhí)行將所述X個指令塊中被執(zhí)行讀操作的頻率最高的所述第一指令塊保存在所述第二存儲器集合中的所述M個存儲器的每個存儲器中的操作。

舉例來說,所述N個存儲器中所述第一存儲器的使用情況大于或等于所述第一閾值是由于S102涉及的所述X個指令塊中的每個指令塊被執(zhí)行讀操作導(dǎo)致的。例如,所述第一存儲器的帶寬占用率為85%。所述第一閾值是80%。所述第一存儲器的帶寬占用率為85%可能是由于如下原因引起:對所述第一存儲器中的所述X個指令塊執(zhí)行的讀操作占用了所述第一存儲器的帶寬的85%?;蛘?,所述第一存儲器的帶寬占用率為85%可能是由于如下原因引起:對所述第一存儲器中的所述X個指令塊執(zhí)行的讀操作占用了所述第一存儲器的帶寬的50%。對所述第一存儲器中的其他數(shù)據(jù)執(zhí)行的讀操作占用了所述第一存儲器的帶寬的35%。所述其他數(shù)據(jù)可以是路由表。

可選的,所述處理器在所述N個存儲器中所述第一存儲器的使用情況大于或等于第一閾值時,將所述第一指令塊保存在所述第二存儲器集合中的所述M個存儲器的每個存儲器中具體包括:所述處理器在所述N個存儲器中所述第一存儲器的使用情況大于或等于所述第一閾值以及所述M個存儲器中第二存儲器的使用情況小于第二閾值時,將所述第一指令塊保存在所述第二存儲器集合中的所述M個存儲器的每個存儲器中,所述第二閾值大于0。

舉例說明,執(zhí)行將X個指令塊中被執(zhí)行讀操作的頻率最高的所述第一指令塊保存在第二存儲器集合中的M個存儲器的每個存儲器中的操作過程 中,除去考慮所述N個存儲器中所述第一存儲器的使用情況大于或等于所述第一閾值,可選的,還可以同時考慮所述M個存儲器中第二存儲器的使用情況小于第二閾值。也就是說,在保證M個存儲器的使用情況良好的情況下才進(jìn)行相應(yīng)的操作,例如,在保證M個存儲器有足夠的帶寬接收所述第一指令塊。如此這樣,進(jìn)一步保證了被執(zhí)行讀操作的頻率最高的所述第一指令塊在保存到M個存儲器的每個存儲器中后,獲得更加充足的帶寬。其中,第二閾值的具體取值不作限定,可以根據(jù)所述處理器的使用的場景、所述處理器處理的業(yè)務(wù)的類型或者所述處理器處理的業(yè)務(wù)需要具備的性能確定。例如,用所述第二存儲器的帶寬的占用率標(biāo)識所述第二存儲器的使用情況的場景中,所述第二閾值可以是75%-95%。所述第二閾值也可以是75%,80%,85%,90%,或者95%。當(dāng)所述M個存儲器的所述第二存儲器的帶寬占用率低于75%,80%,85%,90%,或者95%時,執(zhí)行將所述X個指令塊中被執(zhí)行讀操作的頻率最高的所述第一指令塊保存在所述第二存儲器集合中的所述M個存儲器的每個存儲器中的操作。

可選的,在所述處理器將所述第一指令塊保存在所述第二存儲器集合中的所述M個存儲器的每個存儲器中之前,所述方法還包括:所述處理器確定Y個指令塊中的第二指令塊,所述第二指令塊被執(zhí)行讀操作的頻率小于所述Y個指令塊中其他指令塊中的每個指令塊被執(zhí)行讀操作的頻率,所述Y個指令塊被保存在所述第二存儲器集合中的所述M個存儲器的每個存儲器中,Y為大于1的整數(shù);以及,所述處理器在所述M個存儲器中第二存儲器的使用情況大于或等于第二閾值時,將所述第二指令塊保存在所述第一存儲器集合中的所述N個存儲器的每個存儲器中,所述第二閾值大于0。

舉例說明,在所述處理器將所述第一指令塊保存在所述第二存儲器集合中的所述M個存儲器的每個存儲器中之前,可選的,可以由處理器確定出Y個指令塊中的第二指令塊,所述第二指令塊被執(zhí)行讀操作的頻率小于所述Y個指令塊中其他指令塊中的每個指令塊被執(zhí)行讀操作的頻率,也就是說,所述第二指令塊是Y個指令塊中被執(zhí)行讀操作的頻率最低的指令塊。需要說明的是,所述第二指令塊可能為一個,也可能為多個。具體確定所述第二指令塊方式與S102中的解釋類似,此處不再贅述。所述Y個指令塊被保存在所述第二存儲器集合中的所述M個存儲器的每個存儲器中,Y為大于1的整數(shù)。也就是說,可以將多個存儲器看作由一個存儲器鏡像得到的,因?yàn)?,每個存儲器保存了相同種類和數(shù)量的指令塊。

舉例說明,所述處理器在所述M個存儲器中第二存儲器的使用情況大于或等于第二閾值時,將所述第二指令塊保存在所述第一存儲器集合中的所述N個存儲器的每個存儲器中,所述第二閾值大于0。在將所述第一指令塊保存在所述第二存儲器集合中的所述M個存儲器的每個存儲器中之前,如果M個存儲器中的一個存儲器的使用情況已經(jīng)大于或等于第二閾值,此時,再將所述第一指令塊保存在所述第二存儲器集合中的所述M個存儲器的每個存儲器中可能會造成M個存儲器的性能無法匹配處理器的處理性能。如此這樣,可以先將所述第二指令塊保存在所述第一存儲器集合中的所述N個存儲器的每個存儲器中,然后在執(zhí)行將所述第一指令塊保存在所述第二存儲器集合中的所述M個存儲器的每個存儲器中的步驟。其中,第二閾值的具體取值不作限定,可以根據(jù)所述處理器的使用的場景、所述處理器處理的業(yè)務(wù)的類型或者所述處理器處理的業(yè)務(wù)需要具備的性能確定。其中,對于第二存儲器的使用情況的表現(xiàn)形式不作限定,例如,可以使用 存儲器的帶寬占用率標(biāo)識所述使用情況、或可以使用一段周期內(nèi)對存儲器的訪問次數(shù)標(biāo)識所述使用情況等。其中,所述第二存儲器可能為一個,也可能為多個,也就是說,當(dāng)至少有一個存儲器的使用情況大于或等于第二閾值時,就會觸發(fā)將所述第二指令塊保存在所述第一存儲器集合中的所述N個存儲器的每個存儲器中的動作。例如,用所述第二存儲器的帶寬的占用率標(biāo)識所述第二存儲器的使用情況的場景中。例如,所述第二閾值可以是75%-95%。例如,所述第二閾值可以是75%,80%,85%,90%或者95%。當(dāng)在所述M個存儲器的所述第二存儲器的帶寬占用率大于或等于75%,80%,85%,90%或者95%時,執(zhí)行將所述Y個指令塊中被執(zhí)行讀操作的頻率最低的所述第二指令塊保存在所述第一存儲器集合中的所述N個存儲器的每個存儲器中。

可選的,在所述處理器將所述第一指令塊保存在所述第二存儲器集合中的所述M個存儲器的每個存儲器中之后,所述方法還包括:所述處理器刪除所述N個存儲器中每個存儲器保存的所述第一指令塊。

舉例說明,參見圖2,當(dāng)指令塊2完成保存到存儲器2,并且跳轉(zhuǎn)地址修改完成后,存儲器1中的原指令塊2將不再參與處理器的數(shù)據(jù)處理業(yè)務(wù),可選的,可以將存儲器1中的原指令塊2刪除,釋放存儲空間。因此,在所述處理器將所述第一指令塊保存在所述第二存儲器集合中的所述M個存儲器的每個存儲器中之后,所述處理器刪除所述N個存儲器中每個存儲器保存的所述第一指令塊。

可選的,在所述處理器將所述第二指令塊保存在所述第一存儲器集合中的所述N個存儲器的每個存儲器中之后,所述方法還包括:所述處理器刪除所述M個存儲器中每個存儲器保存的所述第二指令塊。

舉例說明,可參見上述刪除所述N個存儲器中每個存儲器保存的所述第一指令塊的解釋,此處不再贅述。

可選的,所述X個指令塊中每個指令塊包含計(jì)數(shù)指令,所述處理器確定所述X個指令塊中的所述第一指令塊之前,所述方法還包括:所述處理器通過執(zhí)行所述X個指令塊中每個指令塊中包含的所述計(jì)數(shù)指令確定所述X個指令塊中每個指令塊被執(zhí)行讀操作的數(shù)量;以及,所述處理器根據(jù)所述X個指令塊中每個指令塊被執(zhí)行讀操作的數(shù)量確定所述X個指令塊中每個指令塊被執(zhí)行讀操作的頻率。

舉例說明,所述X個指令塊中每個指令塊中包括計(jì)數(shù)指令,所述計(jì)數(shù)指令可以通過人工編譯的方式插入到每個指令塊中,也可以通過自動編譯器,由處理器為每個指令塊自動添加計(jì)數(shù)指令。當(dāng)處理器訪問存儲器通過讀操作獲取指令塊時,可以通過讀取計(jì)數(shù)指令對指令塊被執(zhí)行的讀操作進(jìn)行計(jì)數(shù),確定X個指令塊中每個指令塊被執(zhí)行讀操作的數(shù)量。相應(yīng)的,處理器根據(jù)所述X個指令塊中每個指令塊被執(zhí)行讀操作的數(shù)量確定所述X個指令塊中每個指令塊被執(zhí)行讀操作的頻率。

現(xiàn)有技術(shù)中,處理器只連接一個存儲器集合,存儲器集合中的每個存儲器存儲了多個指令。現(xiàn)有技術(shù)中,所述處理器也不會確定所述多個指令塊中被執(zhí)行讀操作的頻率最高的指令塊。當(dāng)所述處理器連接的所述存儲器集合的多個存儲器無法支持所述處理器需要達(dá)到的處理性能時,現(xiàn)有技術(shù)采用的技術(shù)手段是,增加所述處理器連接的存儲器的數(shù)量。新增的存儲器中也保存了所述多個指令塊。由于存儲器的數(shù)量增加了,存儲器的帶寬也增加了。因此,更多的存儲器能夠支持所述處理器需要達(dá)到的處理性能。也就是說,現(xiàn)有技術(shù)中,處理器需要連接更多的存儲器。更多的存儲器能夠提供更高的帶寬。例如, 處理器在處理數(shù)據(jù)過程中,使用了5個存儲器,所述5個存儲器的每個存儲器都保存了X個指令塊。當(dāng)需要提高處理器的處理性能時,5個存儲器提供的帶寬可能無法滿足處理器的需求。因此,需要將處理器連接到更多的存儲器。例如,8個存儲器(即新增了3個存儲器)。同時將所述X個指令塊保存到所述新增的3個存儲器的每個存儲器中。如此這樣,8個存儲器提供的帶寬將會滿足處理器的需求。但實(shí)際上,所述X個指令塊僅有部分的指令塊是被頻繁訪問的,其他指令塊被執(zhí)行讀操作的頻率很低或處于空閑狀態(tài)。對所述X個指令塊不做區(qū)分,將所述X個指令塊都復(fù)制到所述新增的3個存儲器中,增加了對指令空間的占用。

本發(fā)明實(shí)施例提供的技術(shù)方案中,處理器確定X個指令塊中被執(zhí)行讀操作的頻率最高的指令塊,即第一指令塊。將第一存儲器集合的存儲器中保存的所述第一指令塊,保存到提供更高帶寬的第二存儲器集合的存儲器中。從而,在使得處理器實(shí)現(xiàn)一定的處理性能的情況下,減少指令對存儲空間的占用。也就是說,即使出現(xiàn)例如業(yè)務(wù)變更或數(shù)據(jù)處理量增加而導(dǎo)致存儲器的帶寬無法支持處理器需要達(dá)到的處理性能,只需要將所述第一指令塊保存到提供更高帶寬的第二存儲器集合的存儲器。由于只是將所述X個指令塊中被執(zhí)行讀操作的頻率最高的指令塊保存到第二存儲器集合的存儲器,并沒有將所述X個指令塊都保存到所述第二存儲器集合的存儲器。因此,上述技術(shù)方案在處理器能夠?qū)崿F(xiàn)一定的處理性能的情況下,減少了指令對存儲空間的占用。

圖3為本發(fā)明實(shí)施例提供的處理器的結(jié)構(gòu)示意圖。如圖3所示,處理器300包括第一確定單元302以及執(zhí)行單元304。處理器300可以用于執(zhí)行圖1所示的方法。

第一確定單元302用于確定X個指令塊中的第一指令塊。所述第一指令塊被執(zhí)行讀操作的頻率大于所述X個指令塊中其他指令塊中的每個指令塊被執(zhí)行讀操作的頻率,所述X個指令塊被保存在第一存儲器集合中的N個存儲器的每個存儲器中,N是正整數(shù),X是大于1的整數(shù)。

執(zhí)行單元304用于將第一確定單元302確定的所述第一指令塊保存在第二存儲器集合中的M個存儲器的每個存儲器中。M是正整數(shù),所述第一存儲器集合和所述第二存儲器集合的交集為空集合。其中,所述M個存儲器的帶寬大于所述N個存儲器的帶寬。

可選的,執(zhí)行單元304具體用于在所述N個存儲器中所述第一存儲器的使用情況大于或等于第一閾值時,將所述第一指令塊保存在所述第二存儲器集合中的所述M個存儲器的每個存儲器中。所述第一閾值大于0。

可選的,執(zhí)行單元304具體用于在所述N個存儲器中所述第一存儲器的使用情況大于或等于所述第一閾值以及所述M個存儲器中第二存儲器的使用情況小于第二閾值時,將所述第一指令塊保存在所述第二存儲器集合中的所述M個存儲器的每個存儲器中。所述第二閾值大于0。

可選的,處理器300還包括第二確定單元。所述第二確定單元用于在執(zhí)行單元304將所述第一指令塊保存在所述第二存儲器集合中的所述M個存儲器的每個存儲器中之前,確定Y個指令塊中的第二指令塊。所述第二指令塊被執(zhí)行讀操作的頻率小于所述Y個指令塊中其他指令塊中的每個指令塊被執(zhí)行讀操作的頻率,所述Y個指令塊被保存在所述第二存儲器集合中的所述M個存儲器的每個存儲器中,Y為大于1的整數(shù)。

執(zhí)行單元304還用于在所述M個存儲器中第二存儲器的使用情況大于或等于第二閾值時,將所述第二確定單元確定的所述第二指令塊保存在所 述第一存儲器集合中的所述N個存儲器的每個存儲器中,所述第二閾值大于0。

可選的,處理器300還包括刪除單元。所述刪除單元用于在執(zhí)行單元304將所述第一指令塊保存在所述第二存儲器集合中的所述M個存儲器的每個存儲器中之后,刪除所述N個存儲器中每個存儲器保存的所述第一指令塊。

可選的,處理器300還包括刪除單元。所述刪除單元用于在所述執(zhí)行單元將所述第二指令塊保存在所述第一存儲器集合中的所述N個存儲器的每個存儲器中之后,刪除所述M個存儲器中每個存儲器保存的所述第二指令塊。

可選的,所述X個指令塊中每個指令塊包含計(jì)數(shù)指令,處理器300還包括第三確定單元。所述第三確定單元用于在第一確定單元302確定所述X個指令塊中的所述第一指令塊之前,通過執(zhí)行所述X個指令塊中每個指令塊中包含的所述計(jì)數(shù)指令確定所述X個指令塊中每個指令塊被執(zhí)行讀操作的數(shù)量;根據(jù)所述X個指令塊中每個指令塊被執(zhí)行讀操作的數(shù)量確定所述X個指令塊中每個指令塊被執(zhí)行讀操作的頻率。

第一確定單元302可以用于執(zhí)行圖1所示的S102。執(zhí)行單元304可以用于執(zhí)行圖1所示的S104。關(guān)于圖3中的單元的功能以及工作原理請參見圖1所示的方法對應(yīng)的實(shí)施例中的相應(yīng)描述。圖3所示的技術(shù)方案中,處理器將第一存儲器集合的存儲器中被執(zhí)行讀操作的頻率最高的指令塊,保存到比所述第一存儲器集合中的N個存儲器提供更高帶寬的第二存儲器集合中的M個存儲器中。從而,在保證處理性能的情況下,減少指令內(nèi)存空間的占用。

圖4為本發(fā)明實(shí)施例提供的處理器的硬件結(jié)構(gòu)示意圖。如圖4所示,所述處理器包括多個處理核、第0級指令存儲器(instruction memory,IMEM)、第1級IMEM、第2級IMEM以及管理CPU單元(圖中未示出)。所述處理器可以用于執(zhí)行圖1所示的方法。其中,第1級IMEM可以用于實(shí)現(xiàn)圖1所示的方法涉及的第一存儲器集合。第0級IMEM可以用于實(shí)現(xiàn)圖1所示的方法涉及的第二存儲器集合。管理CPU單元和處理核可以用于實(shí)現(xiàn)圖1所示的方法涉及的S102和S104。圖4所示的處理器可用于實(shí)現(xiàn)圖3所示的處理器。需要說明的是,圖4所示的多個處理核僅是一種實(shí)施方式。應(yīng)當(dāng)理解,圖4所示的處理器可以采用多處理核結(jié)構(gòu)或單處理核結(jié)構(gòu)。應(yīng)當(dāng)理解,管理CPU單元可以和多個處理核集成在同一芯片內(nèi),也可以分別位于不同的芯片。所述管理CPU可以為一個,也可以為多個。所述管理CPU可以由處理核實(shí)現(xiàn)。圖4顯示了3層IMEM結(jié)構(gòu)。應(yīng)當(dāng)理解,本申請對于IMEM結(jié)構(gòu)的層數(shù)不作限定。例如,可以采用4層結(jié)構(gòu),也可以為了減少用于與IMEM連接的處理核的接口采用2層結(jié)構(gòu)。圖4所示的處理核與各層IMEM的連接方式僅是一種實(shí)施方式。處理核與各層IMEM可以采用其他連接方式。

舉例說明,所述處理器通過以下方式實(shí)現(xiàn)對第0級IMEM和第1級IMEM的操作。

所述處理器,用于確定X個指令塊中的第一指令塊。所述第一指令塊被執(zhí)行讀操作的頻率大于所述X個指令塊中其他指令塊中的每個指令塊被執(zhí)行讀操作的頻率。所述X個指令塊被保存在第1級IMEM中的N個IMEM的每個IMEM中。N是正整數(shù)。X是大于1的整數(shù)。

所述處理器,還用于將所述第一指令塊保存在第0級IMEM中的M個IMEM的每個IMEM中。M是正整數(shù)。所述第1級IMEM和所述第0級IMEM 的交集為空集合。其中,所述M個IMEM的帶寬大于所述N個IMEM的帶寬。

可選的,所述處理器還用于在所述N個IMEM中第一IMEM的使用情況大于或等于第一閾值時,將所述第一指令塊保存在第0級IMEM中的M個IMEM的每個IMEM中。所述第一閾值大于0。

可選的,所述處理器具體用于在所述N個IMEM中所述第一IMEM的使用情況大于或等于所述第一閾值以及所述M個IMEM中第二IMEM的使用情況小于第二閾值時,將所述第一指令塊保存在所述第0級IMEM中中的所述M個IMEM的每個IMEM中,所述第二閾值大于0。

可選的,所述處理器還用于在將所述第一指令塊保存在所述第0級IMEM中的所述M個IMEM的每個IMEM中之前,確定Y個指令塊中的第二指令塊,所述第二指令塊被執(zhí)行讀操作的頻率小于所述Y個指令塊中其他指令塊中的每個指令塊被執(zhí)行讀操作的頻率,所述Y個指令塊被保存在所述第0級IMEM中的所述M個IMEM的每個IMEM中,Y為大于1的整數(shù)。

所述處理器,還用于在所述M個IMEM中第二IMEM的使用情況大于或等于第二閾值時,將所述第二指令塊保存在所述第1級IMEM中的所述N個IMEM的每個IMEM中,所述第二閾值大于0。

可選的,所述處理器用于在將所述第一指令塊保存在所述第0級IMEM中的所述M個IMEM的每個IMEM中之后,刪除所述N個IMEM中每個IMEM保存的所述第一指令塊。

可選的,所述處理器用于在將所述第二指令塊保存在所述第1級IMEM中的所述N個IMEM的每個IMEM中之后,刪除所述M個IMEM中每個 IMEM保存的所述第二指令塊。

可選的,所述X個指令塊中每個指令塊包含計(jì)數(shù)指令,所述處理器用于在確定所述X個指令塊中的所述第一指令塊之前,通過執(zhí)行所述X個指令塊中每個指令塊中包含的所述計(jì)數(shù)指令確定所述X個指令塊中每個指令塊被執(zhí)行讀操作的數(shù)量。根據(jù)所述X個指令塊中每個指令塊被執(zhí)行讀操作的數(shù)量確定所述X個指令塊中每個指令塊被執(zhí)行讀操作的頻率。

舉例說明,第1級IMEM和第2級IMEM之間的操作的實(shí)現(xiàn)方式與上述第0級IMEM和第1級IMEM之間的操作的實(shí)現(xiàn)方式相類似,此處不進(jìn)行贅述。

舉例說明,第0級IMEM、第1級IMEM和第2級IMEM中的每個IMEM可以使用獨(dú)立的物理存儲器。物理存儲器的類型可以是但不限于:靜態(tài)隨機(jī)存取存儲器(static random access memory,SRAM)、同步靜態(tài)隨機(jī)存儲器(synchronous static random access memory,SSRAM)、動態(tài)隨機(jī)存取存儲器(dynamic random access memory,DRAM)或者同步動態(tài)隨機(jī)存取存儲器(synchronous dynamic random access memory,SDRAM)。所述IMEM可以設(shè)置于處理器芯片的內(nèi)部,也可以設(shè)置于處理器芯片的外部。第0級IMEM、第1級IMEM和第2級IMEM采用統(tǒng)一編址。

處理器通過執(zhí)行讀操作確定指令塊的被訪問頻率,將第一存儲器集合的存儲器中被執(zhí)行讀操作的頻率最高的指令塊,保存到比所述第一存儲器集合中的N個存儲器具有更高帶寬的第二存儲器集合的M個存儲器中。從而,在保證處理性能的情況下,減少指令內(nèi)存空間的占用。

圖5為本發(fā)明實(shí)施例的處理器內(nèi)部的功能模塊的交互示意圖。如圖5所示,所述處理器包括,指令存儲器管理單元、處理核、第0級IMEM、第1 級IMEM和第2級IMEM。指令存儲器管理單元連接處理核,所述處理核分別連接各級IMEM。需要說明的是,圖中僅示出了一個處理核,但應(yīng)當(dāng)理解,處理器可以采用多處理核架構(gòu)。圖中第0級IMEM、第1級IMEM和第2級IMEM分別只示出一個存儲器,應(yīng)當(dāng)理解為,每級IMEM均可以包括一個或多個存儲器。圖中的指令存儲器管理單元在處理器中實(shí)現(xiàn)管理和控制。指令存儲器管理單元可以和至少一個處理核集成在同一處理器芯片上。也可以使用獨(dú)立的處理器芯片作為指令存儲器管理單元。

舉例說明,IMEM中保存的多個指令塊中每個指令塊包含計(jì)數(shù)指令。圖5中右下部分的虛線框表示第一級IMEM中保存的某個指令塊的放大示意圖。可見,指令塊包含計(jì)數(shù)指令。當(dāng)該指令塊被執(zhí)行讀操作時,所述計(jì)數(shù)指令將被讀入高性能統(tǒng)計(jì)單元,高性能統(tǒng)計(jì)單元設(shè)置于處理核中。高性能統(tǒng)計(jì)單元通過執(zhí)行指令塊中包含的所述計(jì)數(shù)指令確定所述指令塊被執(zhí)行讀操作的數(shù)量。高性能統(tǒng)計(jì)單元將所述指令塊被執(zhí)行讀操作的數(shù)量發(fā)送到指令存儲器管理單元?;蛘咧噶畲鎯ζ鞴芾韱卧部梢灾鲃幼x取述指令塊被執(zhí)行讀操作的數(shù)量。指令存儲器管理單元根據(jù)所述指令塊被執(zhí)行讀操作的數(shù)量確定所述指令塊被執(zhí)行讀操作的頻率。

舉例說明,處理核獲取IMEM的使用情況,將所述使用情況數(shù)據(jù)發(fā)送至指令存儲器管理單元。一方面,指令存儲器管理單元按照被執(zhí)行讀操作的頻率確定被執(zhí)行讀操作的頻率最高的指令塊或被執(zhí)行讀操作的頻率最低的指令塊;另一方面,指令存儲器管理單元根據(jù)獲取的IMEM的使用情況,與預(yù)設(shè)閾值的進(jìn)行比較,從而對被執(zhí)行讀操作的頻率最高的指令塊或被執(zhí)行讀操作的頻率最低的指令塊進(jìn)行保存以及刪除。具體實(shí)施過程可以參照上述實(shí)施例,此處不進(jìn)行贅述。

舉例說明,例如,將第一級IMEM中的指令塊A保存到第0級IMEM中的過程。指令存儲器管理單元從指令塊備份數(shù)據(jù)庫讀取指令塊A,將指令塊A保存到第0級IMEM中,然后指令存儲器管理單元控制處理核將第一級IMEM中的原指令塊A刪除。其中,所述指令塊備份數(shù)據(jù)庫可以設(shè)置于指令存儲器管理單元內(nèi)部,也可以設(shè)置于指令存儲器管理單元外部。

本領(lǐng)域普通技術(shù)人員將會理解,本發(fā)明的各個方面、或各個方面的可能實(shí)現(xiàn)方式可以被具體實(shí)施為系統(tǒng)、方法或者計(jì)算機(jī)程序產(chǎn)品。因此,本發(fā)明的各方面、或各個方面的可能實(shí)現(xiàn)方式可以采用硬件實(shí)現(xiàn)實(shí)施例,或者組合軟件和硬件的方式實(shí)現(xiàn),在這里都統(tǒng)稱為“電路”、“模塊”或者“系統(tǒng)”。此外,本發(fā)明的各方面、或各個方面的可能實(shí)現(xiàn)方式可以采用計(jì)算機(jī)程序產(chǎn)品的形式,計(jì)算機(jī)程序產(chǎn)品是指存儲在計(jì)算機(jī)可讀介質(zhì)中的計(jì)算機(jī)可讀程序代碼。

計(jì)算機(jī)可讀介質(zhì)可以是計(jì)算機(jī)可讀信號介質(zhì)或者計(jì)算機(jī)可讀存儲介質(zhì)。計(jì)算機(jī)可讀存儲介質(zhì)包含但不限于電子、磁性、光學(xué)、電磁、紅外或半導(dǎo)體系統(tǒng)、設(shè)備或者裝置,或者前述的任意適當(dāng)組合。例如,計(jì)算機(jī)可讀存儲介質(zhì)可以是隨機(jī)存取存儲器(random access memory,RAM)、只讀存儲器(read-only memory,ROM)、可擦除可編程只讀存儲器(erasable programmable read only memory,EPROM)、光纖或者便攜式只讀存儲器(compact disc read-only memory,CD-ROM)。

計(jì)算機(jī)中的處理器讀取存儲在計(jì)算機(jī)可讀介質(zhì)中的計(jì)算機(jī)可讀程序代碼,使得處理器能夠執(zhí)行在流程圖中每個步驟、或各步驟的組合中規(guī)定的功能動作;生成實(shí)施在框圖的每一塊、或各塊的組合中規(guī)定的功能動作的裝置。

計(jì)算機(jī)可讀程序代碼可以完全在用戶的本地計(jì)算機(jī)上執(zhí)行、部分在用戶的本地計(jì)算機(jī)上執(zhí)行、作為單獨(dú)的軟件包、部分在用戶的本地計(jì)算機(jī)上并且部分在遠(yuǎn)程計(jì)算機(jī)上,或者完全在遠(yuǎn)程計(jì)算機(jī)或者服務(wù)器上執(zhí)行。也應(yīng)該注意,在某些替代實(shí)施方案中,在流程圖中各步驟、或框圖中各塊所注明的功能可能不按圖中注明的順序發(fā)生。例如,依賴于所涉及的功能,接連示出的兩個步驟、或兩個塊實(shí)際上可能被大致同時執(zhí)行,或者這些塊有時候可能被以相反順序執(zhí)行。

顯然,本領(lǐng)域的技術(shù)人員可以對本發(fā)明進(jìn)行各種改動和變型。這樣,倘若這些修改和變型屬于本發(fā)明權(quán)利要求及其等同技術(shù)的范圍之內(nèi),這些修改和變型也屬于本申請的保護(hù)范圍。

當(dāng)前第1頁1 2 3 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1