本發(fā)明涉及計算機,尤其涉及一種指令分派方法、裝置、電子設(shè)備及可讀存儲介質(zhì)。
背景技術(shù):
1、目前,隨著指令集的不斷發(fā)展,執(zhí)行階段所需的功能單元類別和功能單元數(shù)量均不斷增加,導(dǎo)致服務(wù)功能單元的發(fā)射隊列數(shù)量也在不斷擴張。
2、相關(guān)技術(shù)中,通常的做法是在發(fā)射隊列前增設(shè)發(fā)射隊列緩存,通過一個發(fā)射隊列緩存管理少量的發(fā)射隊列,并通過兩個周期完成分派操作,在第一個周期將各待分派指令分發(fā)到多個發(fā)射隊列緩存,第二個周期將發(fā)射隊列緩存中的待分派指令分派到各自管理的具體發(fā)射隊列中。
3、但是,上述指令分派方式需要在處理器中設(shè)置發(fā)射隊列緩存且增加了處理器流水級數(shù),導(dǎo)致指令分派均衡程度較差,容易影響處理器的指令處理性能。
技術(shù)實現(xiàn)思路
1、本發(fā)明實施例提供一種指令分派方法、裝置、電子設(shè)備及可讀存儲介質(zhì),可以解決相關(guān)技術(shù)中問題。
2、為了解決上述問題,本發(fā)明實施例公開了一種指令分派方法,所述方法包括:
3、獲取各第一發(fā)射隊列中相同指令類型的目標指令數(shù)量;其中,所述第一發(fā)射隊列用于向所述指令類型對應(yīng)的功能單元發(fā)射指令;
4、基于所述目標指令數(shù)量,確定各第一發(fā)射隊列針對所述指令類型的負載順序;
5、基于所述負載順序和所述第一發(fā)射隊列的隊列入口之間的優(yōu)先級,確定各待分派指令對應(yīng)的第一發(fā)射隊列的隊列入口,以將各待分派指令通過對應(yīng)的隊列入口進行分派;其中,所述待分派指令對應(yīng)于所述指令類型。
6、可選的,所述基于所述負載順序和所述第一發(fā)射隊列的隊列入口之間的優(yōu)先級,確定各待分派指令對應(yīng)的第一發(fā)射隊列的隊列入口,包括:
7、基于所述負載順序確定各分派次序?qū)?yīng)的獨熱編碼;其中,所述獨熱編碼的有效位用于指示相應(yīng)分派次序?qū)?yīng)的第一發(fā)射隊列;
8、按照所述獨熱編碼對應(yīng)的分派次序,確定各待分派指令對應(yīng)的獨熱編碼,基于各待分派指令對應(yīng)的獨熱編碼,生成用于作為指令分派依據(jù)的第一編碼矩陣;
9、根據(jù)所述第一編碼矩陣中各有效位對應(yīng)的矩陣行數(shù)和矩陣列數(shù),確定各待分派指令對應(yīng)的第一發(fā)射隊列的隊列入口。
10、可選的,所述根據(jù)所述第一編碼矩陣中各有效位對應(yīng)的矩陣行數(shù)和矩陣列數(shù),確定各待分派指令對應(yīng)的第一發(fā)射隊列的隊列入口,包括:
11、將所述第一編碼矩陣中各矩陣行與前序所有矩陣行進行對位相加,得到相應(yīng)矩陣行對應(yīng)的目標矩陣行,各目標矩陣行構(gòu)成第二編碼矩陣;
12、根據(jù)所述第二編碼矩陣中各有效位對應(yīng)的矩陣行數(shù)、矩陣列數(shù)和有效位數(shù)值,確定各待分派指令對應(yīng)的第一發(fā)射隊列的隊列入口;其中,所述有效位表示所述第二編碼矩陣中每一列中首個與目標值匹配的元素位,所述目標值與所述優(yōu)先級存在對應(yīng)關(guān)系。
13、可選的,所述按照所述獨熱編碼對應(yīng)的分派次序,確定各待分派指令對應(yīng)的獨熱編碼,基于各待分派指令對應(yīng)的獨熱編碼,生成用于作為指令分派依據(jù)的第一編碼矩陣,包括:
14、基于各待分派指令的前序指令數(shù)量,確定各待分派指令對應(yīng)的指令索引;
15、基于所述指令索引和所述分派次序,確定各待分派指令對應(yīng)的獨熱編碼;
16、根據(jù)所述指令索引排列各待分派指令對應(yīng)的獨熱編碼,得到所述第一編碼矩陣。
17、可選的,所述基于所述指令索引和所述分派次序,確定各待分派指令對應(yīng)的獨熱編碼,包括:
18、在所述待分派指令集合的指令數(shù)量大于所述第一發(fā)射隊列的隊列總量的情況下,根據(jù)所述待分派指令集合的指令數(shù)量,擴展所述獨熱編碼構(gòu)成的獨熱編碼序列,得到目標獨熱編碼序列;其中,所述目標獨熱編碼序列的編碼數(shù)量與所述指令數(shù)量相等,所述獨熱編碼序列中的獨熱編碼基于相應(yīng)分派次序排列;
19、基于所述指令索引,從所述目標獨熱編碼序列中順序選取各待分派指令對應(yīng)的獨熱編碼。
20、可選的,所述基于各待分派指令對應(yīng)的獨熱編碼,生成用于作為指令分派依據(jù)的第一編碼矩陣,包括:
21、基于全量發(fā)射隊列序列中,除各第一發(fā)射隊列之外的發(fā)射隊列對應(yīng)的隊列索引,在各待分派指令對應(yīng)的獨熱編碼中增加零位,得到各待分派指令對應(yīng)的目標獨熱編碼;其中,所述目標獨熱編碼的編碼位數(shù)量與所述全量發(fā)射隊列序列的隊列數(shù)量相等;
22、按照所述目標獨熱編碼對應(yīng)的分派次序,確定各待分派指令對應(yīng)的目標獨熱編碼,基于各待分派指令對應(yīng)的目標獨熱編碼,生成用于作為指令分派依據(jù)的第一編碼矩陣,以通過第一編碼矩陣的矩陣列數(shù)從所述全量發(fā)射隊列序列中確定各分派指令對應(yīng)的發(fā)射隊列。
23、可選的,所述基于所述目標指令數(shù)量,確定各第一發(fā)射隊列針對所述指令類型的負載順序,包括:
24、對各第一發(fā)射隊列的目標指令數(shù)量進行兩兩比較,得到各第一發(fā)射隊列分別對應(yīng)的比較結(jié)果;
25、基于所述比較結(jié)果確定目標指令數(shù)量小于所述第一發(fā)射隊列的隊列數(shù)量;
26、根據(jù)各第一發(fā)射隊列對應(yīng)的隊列數(shù)量,確定各第一發(fā)射隊列針對所述指令類型的負載順序。
27、可選的,所述方法還包括:
28、在所述第一發(fā)射隊列的隊列狀態(tài)為就緒狀態(tài)的情況下,按照各待分派指令的指令次序,從所述第一發(fā)射隊列對應(yīng)的待分派指令中,選取目標待分派指令分派至所述第一發(fā)射隊列,并阻塞所述目標待分派指令之后的待分派指令,以在后續(xù)時鐘周期對被阻塞的待分派指令進行分派;其中,所述目標分派指令的指令數(shù)量與所述第一發(fā)射隊列的隊列入口數(shù)量相同;
29、在所述第一發(fā)射隊列的隊列狀態(tài)為滿狀態(tài)的情況下,阻塞各待分派指令以及后續(xù)的待分派指令,以在后續(xù)時鐘周期對被阻塞的待分派指令進行分派。
30、另一方面,本發(fā)明實施例公開了一種指令分派裝置,所述裝置包括:
31、獲取模塊,用于獲取各第一發(fā)射隊列中相同指令類型的目標指令數(shù)量;其中,所述第一發(fā)射隊列用于向所述指令類型對應(yīng)的功能單元發(fā)射指令;
32、負載順序模塊,用于基于所述目標指令數(shù)量,確定各第一發(fā)射隊列針對所述指令類型的負載順序;
33、分派模塊,用于基于所述負載順序和所述第一發(fā)射隊列的隊列入口之間的優(yōu)先級,確定各待分派指令對應(yīng)的第一發(fā)射隊列的隊列入口,以將各待分派指令通過對應(yīng)的隊列入口進行分派;其中,所述待分派指令對應(yīng)于所述指令類型。
34、再一方面,本發(fā)明實施例還公開了一種電子設(shè)備,所述電子設(shè)備包括處理器、存儲器、通信接口和通信總線,所述處理器、所述存儲器和所述通信接口通過所述通信總線完成相互間的通信;所述存儲器用于存放可執(zhí)行指令,所述可執(zhí)行指令使所述處理器執(zhí)行前述的指令分派方法。
35、本發(fā)明實施例還公開了一種可讀存儲介質(zhì),當(dāng)所述可讀存儲介質(zhì)中的指令由電子設(shè)備的處理器執(zhí)行時,使得電子設(shè)備能夠執(zhí)行前述的指令分派方法。
36、本發(fā)明實施例包括以下優(yōu)點:本發(fā)明實施例提供的一種指令分派方法中,獲取各第一發(fā)射隊列中相同指令類型的目標指令數(shù)量;其中,第一發(fā)射隊列用于向指令類型對應(yīng)的功能單元發(fā)射指令;基于目標指令數(shù)量,確定各第一發(fā)射隊列針對指令類型的負載順序;基于負載順序和第一發(fā)射隊列的隊列入口之間的優(yōu)先級,確定各待分派指令對應(yīng)的第一發(fā)射隊列的隊列入口,以將各待分派指令通過對應(yīng)的隊列入口進行分派;其中,待分派指令對應(yīng)于指令類型。本發(fā)明實施例中,通過確定各第一發(fā)射隊列針對相同指令類型的負載順序,并根據(jù)第一發(fā)射隊列的負載順序和隊列入口的優(yōu)先級,為各第一發(fā)射隊列的隊列入口分派相應(yīng)指令類型的待分派指令。這樣,不僅能夠?qū)崿F(xiàn)將各指令類型的待分派指令均衡分派至相應(yīng)指令類型的發(fā)射隊列,還能使發(fā)射隊列通過不同的隊列入口均衡分派待分派指令,有助于提升指令分派的均衡程度,從而可以在一定程度上提升處理器處理指令的效率。
37、且本發(fā)明實施例中,避免了在處理器中設(shè)置發(fā)射隊列緩存進行指令分派,可以節(jié)省處理器設(shè)置發(fā)射隊列緩存的電路面積,同時能夠減少處理器流水線級數(shù),有助于進一步提升處理器的指令處理性能。