TW202349201A - 指令預測方法、裝置、系統及計算機可讀取儲存媒體 - Google Patents

指令預測方法、裝置、系統及計算機可讀取儲存媒體 Download PDF

Info

Publication number
TW202349201A
TW202349201A TW112116005A TW112116005A TW202349201A TW 202349201 A TW202349201 A TW 202349201A TW 112116005 A TW112116005 A TW 112116005A TW 112116005 A TW112116005 A TW 112116005A TW 202349201 A TW202349201 A TW 202349201A
Authority
TW
Taiwan
Prior art keywords
instruction
ibs
processor
execution path
candidate
Prior art date
Application number
TW112116005A
Other languages
English (en)
Inventor
韓冰
陳永瑜
李楠
田太徐
Original Assignee
大陸商華為技術有限公司
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from CN202210866647.7A external-priority patent/CN117075968A/zh
Application filed by 大陸商華為技術有限公司 filed Critical 大陸商華為技術有限公司
Publication of TW202349201A publication Critical patent/TW202349201A/zh

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • G06F9/30058Conditional branch instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3808Instruction prefetching for instruction reuse, e.g. trace cache, branch target cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution
    • G06F9/3844Speculative instruction execution using dynamic branch prediction, e.g. using branch history tables

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)

Abstract

本發明公開了一種指令預測方法、裝置、系統及電腦可讀取儲存媒體,涉及電腦技術領域。該方法包括:處理器獲取待執行的多個第一IB,任一個第一IB包括循序執行的至少一條指令,該至少一條指令包括一條分支指令;基於多個第一IB包括的分支指令,在至少一條候選執行路徑中查找與多個第一IB對應的候選執行路徑,任一條候選執行路徑指示多個第二IB之間的跳轉關係,該與多個第一IB對應的候選執行路徑指示的跳轉關係中包括多個第一IB之間的跳轉關係;基於多個第一IB之間的跳轉關係預測各個第一IB包括的分支指令對應的下一條指令。基於候選執行路徑指示的跳轉關係來確定分支指令對應的下一條指令,預測下一條指令的效率較高。

Description

指令預測方法、裝置、系統及計算機可讀取儲存媒體
本發明涉及電腦技術領域,尤其涉及一種指令預測方法、裝置、系統及電腦可讀取儲存媒體。 [相關申請案] 本發明要求於2022年5月10日提交的申請號為202210504984.1、發明名稱為“資料處理方法、裝置和網路系統”的中國專利申請以及於2022年7月22日提交的申請號為202210866647.7、發明名稱為“指令預測方法、裝置、系統及電腦可讀取儲存媒體”的中國專利申請的優先權,其全部內容通過引用結合在本發明實施例中。
指令管線是一種將指令的執行過程分解為多個相關聯的階段,各個階段由專門的電路完成的技術。指令管線至少包括:取指令階段和執行階段。取指令階段用於取出要執行的指令,執行階段用於執行取指令階段取出的指令,確定所要執行的下一條指令。若要執行的指令為條件分支指令,該條件分支指令之後通常具有兩路分支,不同分支對應的下一條指令不同。由於在執行階段才能夠確定所要執行的是哪個分支對應的下一條指令,因此需要一種指令預測方法,以在確定出所要執行的下一條指令之前,先預測出下一條指令是哪個分支對應的指令,從而能夠提前將該分支對應的指令送入取指令階段,提高指令的執行效率。
相關技術中,將條件分支指令的某一路分支對應的指令固定的作為所要執行的下一條指令。然而,由於一次僅能預測一條條件分支指令對應的下一條指令,相關技術的預測效率較低。並且,對於不同的條件分支指令,由於後續所要執行的下一條指令可能不同,相關技術的預測準確性較低。
本發明提出一種指令預測方法、裝置、系統及電腦可讀取儲存媒體,用於提高指令預測的效率以及準確性。
第一方面,提供了一種指令預測方法,該方法應用於處理器,該方法包括:處理器獲取待執行的多個第一指令塊(instruction block,IB),該多個第一IB中的任一個第一IB包括循序執行的至少一條指令,該至少一條指令包括一條分支指令;然後,基於多個第一IB包括的分支指令,在至少一條候選執行路徑中查找與多個第一IB對應的候選執行路徑,該至少一條候選執行路徑中的任一條候選執行路徑指示多個第二IB之間的跳轉關係,該與多個第一IB對應的候選執行路徑指示的跳轉關係中包括該多個第一IB之間的跳轉關係;最後,基於該多個第一IB之間的跳轉關係預測各個第一IB包括的分支指令對應的下一條指令。
該方法能夠適用於業務隨機性較高的網路處理器和CPU等處理器,適用範圍較廣。再有,該方法基於多個第一IB包括的分支指令,獲取與多個第一IB對應的候選執行路徑。由於該候選執行路徑指示的跳轉關係中包括該多個第一IB之間的跳轉關係,基於該多個第一IB之間的跳轉關係能夠直接對各個第一IB包括的分支指令對應的下一條指令進行預測,從而預測各個第一IB包括的分支指令對應的下一條指令的效率較高。由於多個第一IB之間的跳轉關係是通過該多個第一IB對應的候選執行路徑指示的,該多個第一IB之間的跳轉關係可以不同。與相關技術中將某一路分支對應的指令固定的作為所要執行的下一條指令的方式相比,該方法獲取到的多個第一IB之間的跳轉關係的準確性較高,從而預測各個第一IB包括的分支指令對應的下一條指令的準確性較高,指令的執行效率較高。
在一種可能的實現方式中,基於多個第一IB包括的分支指令,在至少一條候選執行路徑中查找與多個第一IB對應的候選執行路徑,包括:基於多個第一IB包括的分支指令獲取多個第一IB對應的關鍵字,不同關鍵字對應不同的候選執行路徑;在至少一條候選執行路徑中查找與該關鍵字對應的候選執行路徑,將與該關鍵字對應的候選執行路徑作為與該多個第一IB對應的候選執行路徑。由於關鍵字是基於多個第一IB包括的分支指令獲取的,該方法能夠降低查找與多個第一IB對應的候選執行路徑所需的資源,從而提高查找與多個第一IB對應的候選執行路徑的效率。
在一種可能的實現方式中,至少一條候選執行路徑以及與至少一條候選執行路徑各自對應的索引儲存在儲存器中,至少一條候選執行路徑各自對應的索引以及與各個索引對應的關鍵字儲存在記憶體中;在至少一條候選執行路徑中查找與關鍵字對應的候選執行路徑,包括:將關鍵字輸入記憶體,獲取記憶體輸出的與關鍵字對應的目標索引,在儲存器儲存的至少一條候選執行路徑中查找與目標索引對應的候選執行路徑,將與目標索引對應的候選執行路徑作為與關鍵字對應的候選執行路徑。該方法中查找與關鍵字對應的候選執行路徑的過程可以基於多級儲存實現,查找與關鍵字對應的候選執行路徑的方式較為靈活。由於記憶體的查找速度較快但儲存資源較為有限,儲存器的查找速度較慢但儲存資源較為充足,該方法通過以多級儲存的方式實現查找與關鍵字對應的候選執行路徑,能夠在保證有較為充足的儲存空間來儲存至少一條候選執行路徑的同時,提高查找與關鍵字對應的候選執行路徑的效率。
在一種可能的實現方式中,該方法更包括:基於在至少一條候選執行路徑中未查找到與多個第一IB對應的候選執行路徑,處理器確定多個第一IB之間的跳轉關係為參考跳轉關係;基於參考跳轉關係預測各個第一IB包括的分支指令對應的下一條指令。在未能查找到與多個第一IB對應的候選執行路徑的情況下,該方法也能夠對各個第一IB包括的分支指令對應的下一條指令進行預測,提高獲取各個第一IB包括的分支指令對應的下一條指令的效率,該方法能夠靈活適用於不同的情況。
在一種可能的實現方式中,處理器確定多個第一IB之間的跳轉關係為參考跳轉關係,包括:處理器在各個第一IB之間添加目標指令,目標指令用於指示各個第一IB之間的跳轉關係為該參考跳轉關係。通過在各個第一IB之間添加用於指示各個第一IB之間的跳轉關係為參考跳轉關係的目標指令,處理器通過執行目標指令即可完成各個第一IB之間的跳轉,該方法指示各個第一IB之間的跳轉關係的方式較為簡便。
在一種可能的實現方式中,處理器確定多個第一IB之間的跳轉關係之後,該方法更包括:處理器基於多個第一IB之間的跳轉關係,將多個第一IB的執行順序資訊和儲存位址資訊儲存在IB佇列中,執行順序資訊用於指示多個第一IB包括的指令的執行順序,儲存位址資訊用於指示多個第一IB包括的指令的儲存位址;從IB佇列中依次獲取多個第一IB的執行順序資訊和儲存位址資訊;按照獲取的執行順序資訊指示的執行順序,基於獲取的儲存位址資訊指示的儲存位址依次獲取指令,執行獲取到的指令。通過將多個第一IB的執行順序資訊和儲存位址資訊儲存在IB佇列中,處理器能夠按照IB佇列中多個第一IB的順序,依次獲取各個第一IB的執行順序資訊和儲存位址資訊,確定需要獲取執行順序資訊和儲存位址資訊的第一IB的效率較高,並且,獲取該第一IB的執行順序資訊和儲存位址資訊的效率也較高。
在一種可能的實現方式中,該方法更包括:對於獲取到的指令為分支指令,響應於預測的分支指令對應的下一條指令與所需執行的下一條指令不同,處理器基於所需執行的下一條指令獲取待執行的至少一個第三IB,預測至少一個第三IB包括的分支指令對應的下一條指令。如果預測的分支指令對應的下一條指令與所需執行的下一條指令不同,說明待執行的多條指令中的某些指令不是所需執行的指令。在該情況下,通過基於所需執行的下一條指令獲取待執行的至少一個第三IB,該方法能夠獲取正確的待執行的指令,保證待執行的指令的準確性。
在一種可能的實現方式中,該方法更包括:對於獲取到的指令為分支指令,響應於預測的分支指令對應的下一條指令與所需執行的下一條指令不同,處理器刪除IB佇列中儲存的多個第一IB的執行順序資訊和儲存位址資訊。通過刪除IB佇列中儲存的資訊,能夠避免錯誤的資訊佔用儲存空間,造成儲存空間的浪費。
在一種可能的實現方式中,處理器支援至少兩個執行緒,處理器在至少兩個執行緒中的任一個執行緒上,執行基於儲存位址獲取指令的操作。
在一種可能的實現方式中,處理器在至少兩個執行緒中的任一個執行緒上,執行基於儲存位址獲取指令的操作,包括:處理器在資源閒置時,在至少兩個執行緒中的任一個執行緒上,執行基於儲存位址獲取指令的操作。通過僅在資源閒置時執行基於儲存位址獲取指令的操作,能夠在獲取的指令不是所需執行的指令的情況下,避免在該執行緒上執行的獲取指令的操作對在其他執行緒上執行的獲取指令的操作造成影響,實現指令獲取錯誤零懲罰。該指令獲取錯誤零懲罰是指:在該執行緒上執行獲取錯誤的指令的操作時,未佔用在其他執行緒上執行獲取指令的操作所需的資源。
第二方面,提供了一種指令預測裝置,該裝置應用於處理器,該裝置包括: 獲取模組,用於獲取待執行的多個第一指令塊IB,任一個第一IB包括循序執行的至少一條指令,至少一條指令包括一條分支指令; 查找模組,用於基於多個第一IB包括的分支指令,在至少一條候選執行路徑中查找與多個第一IB對應的候選執行路徑,任一條候選執行路徑指示多個第二IB之間的跳轉關係,與多個第一IB對應的候選執行路徑指示的跳轉關係中包括多個第一IB之間的跳轉關係;
預測模組,用於基於多個第一IB之間的跳轉關係預測各個第一IB包括的分支指令對應的下一條指令。
在一種可能的實現方式中,查找模組,用於基於多個第一IB包括的分支指令獲取多個第一IB對應的關鍵字,不同關鍵字對應不同的候選執行路徑;在至少一條候選執行路徑中查找與關鍵字對應的候選執行路徑,將與關鍵字對應的候選執行路徑作為與多個第一IB對應的候選執行路徑。
在一種可能的實現方式中,至少一條候選執行路徑以及與至少一條候選執行路徑各自對應的索引儲存在儲存器中,至少一條候選執行路徑各自對應的索引以及與各個索引對應的關鍵字儲存在記憶體中;查找模組,用於將關鍵字輸入記憶體,獲取記憶體輸出的與關鍵字對應的目標索引,在儲存器儲存的至少一條候選執行路徑中查找與目標索引對應的候選執行路徑,將與目標索引對應的候選執行路徑作為與關鍵字對應的候選執行路徑。
在一種可能的實現方式中,查找模組,還用於基於在至少一條候選執行路徑中未查找到與多個第一IB對應的候選執行路徑,確定多個第一IB之間的跳轉關係為參考跳轉關係;基於參考跳轉關係預測各個第一IB包括的分支指令對應的下一條指令。
在一種可能的實現方式中,查找模組,用於在各個第一IB之間添加目標指令,目標指令用於指示各個第一IB之間的跳轉關係為該參考跳轉關係。
在一種可能的實現方式中,獲取模組,還用於基於多個第一IB之間的跳轉關係,將多個第一IB的執行順序資訊和儲存位址資訊儲存在IB佇列中,執行順序資訊用於指示多個第一IB包括的指令的執行順序,儲存位址資訊用於指示多個第一IB包括的指令的儲存位址;從IB佇列中依次獲取多個第一IB的執行順序資訊和儲存位址資訊;按照獲取的執行順序資訊指示的執行順序,基於獲取的儲存位址資訊指示的儲存位址依次獲取指令,執行獲取到的指令。
在一種可能的實現方式中,獲取模組,還用於對於獲取到的指令為分支指令,響應於預測的分支指令對應的下一條指令與所需執行的下一條指令不同,基於所需執行的下一條指令獲取待執行的至少一個第三IB,預測至少一個第三IB包括的分支指令對應的下一條指令。
在一種可能的實現方式中,獲取模組,還用於對於獲取到的指令為分支指令,響應於預測的分支指令對應的下一條指令與所需執行的下一條指令不同,刪除IB佇列中儲存的多個第一IB的執行順序資訊和儲存位址資訊。
在一種可能的實現方式中,處理器支援至少兩個執行緒,該獲取模組,用於在至少兩個執行緒中的任一個執行緒上,執行基於儲存位址獲取指令的操作。
在一種可能的實現方式中,該獲取模組,用於在資源閒置時,在至少兩個執行緒中的任一個執行緒上,執行基於儲存位址獲取指令的操作。
協力廠商面,提供了一種電腦系統,包括處理器,該處理器用於執行程式指令或代碼,以使所述電腦設備實現第一方面中任一的指令預測方法。可選地,該電腦系統更包括儲存器,所述儲存器用於儲存所述程式指令或代碼。
第四方面,提供了一種電腦可讀取儲存媒體,儲存媒體中儲存有至少一條程式指令或代碼,程式指令或代碼由電腦執行時以使電腦實現第一方面中任一的指令預測方法。
第五方面,提供了一種通訊裝置,該裝置包括:收發器、儲存器和處理器。其中,收發器、儲存器和處理器通過內部連接通路互相通訊,儲存器用於儲存指令,處理器用於執行儲存器儲存的指令,以控制收發器接收信號,並控制收發器發送信號,並且當處理器執行儲存器儲存的指令時,使得處理器執行第一方面中任一的指令預測方法。
示例性地,處理器為一個或多個,儲存器為一個或多個。
示例性地,儲存器可以與處理器集成在一起,或者儲存器與處理器分離設置。
在具體實現過程中,儲存器可以為非暫態性(non-transitory)儲存器,例如唯讀記憶體(read only memory,ROM),其可以與處理器集成在同一塊晶片上,也可以分別設置在不同的晶片上,本發明對儲存器的類型以及儲存器與處理器的設置方式不做限定。
第六方面,提供了一種電腦程式產品,該電腦程式產品包括:電腦程式指令或代碼,當該電腦程式指令或代碼被電腦運行時,使得電腦執行第一方面中任一的指令預測方法。
第七方面,提供了一種晶片,包括處理器,用於執行程式指令或代碼,使得包含該晶片的設備執行第一方面中任一的指令預測方法。
示例性地,該晶片更包括:輸入介面、輸出介面和儲存器,該輸入介面、該輸出介面、該處理器以及該儲存器之間通過內部連接通路相連,所述儲存器用於儲存所述程式指令或代碼。
應當理解的是,本發明實施例的第二方面至第七方面的技術方案及對應的可能的實現方式所取得的有益效果可以參見上述對第一方面及其對應的可能的實現方式的技術效果,此處不再贅述。
本發明的實施方式部分使用的術語僅用於對本發明的實施例進行解釋,而非旨在限定本發明。下面結合附圖,對本發明的實施例進行描述。
程式中通常包括多種類型的指令,分支指令(jump,JMP)便是其中的一種。示例性地,該分支指令可以為條件分支指令。該條件分支指令之後通常具有兩路後續執行分支,一路為不採取(not taken)跳轉分支,另一路為採取(taken)跳轉分支。在執行不採取跳轉分支的情況下,所需執行的下一條指令為在該程式中按照順序位於該條件分支指令之後的第一條指令。在執行採取跳轉分支的情況下,所需執行的下一條指令為與該條件分支指令不相鄰的其他指令,例如,跳轉執行其他程式記憶體中的指令。
處理器可以應用指令管線來完成指令的執行過程,指令管線至少包括:取指令階段(fetch stage)和執行階段(execution stage)。取指令階段用於取出所要執行的指令,執行階段用於執行取指令階段取出的指令,確定所要執行的下一條指令。如果處理器等待分支指令通過了執行階段,再將所要執行的下一條指令送入取指令階段,等待過程將導致管線暫停(pipeline stalled),造成時間浪費。因此,需要一種指令預測方法,以在確定出所要執行的下一條指令之前,先預測出所要執行的下一條指令,從而能夠提前將該指令送入取指令階段。
相關技術中,基於局部性原理提出了適用於中央處理器(central processing unit,CPU)等通用處理器的指令預測方法。局部性原理是指處理器在訪問資料時,存在短時間內重複訪問某些資料或者訪問位置的情況。對於CPU程式而言,由於其中存在大量迴圈結構、前一條條件分支指令對應的下一條指令與後一條條件分支指令對應的下一條指令相關、兩條類型相同且條件相反的條件分支指令對應的下一條指令相關,該CPU程式適用於局部性原理,從而CPU適用於基於局部性原理提供的指令預測方法。
然而,由於網路處理器的業務的隨機性遠大於CPU程式,相關技術中以CPU程式的特點設計的指令預測方法不適合網路處理器的業務。從微觀上看,CPU的單個處理核心長時間運行一個程式,具有典型的局部性。而網路處理器對於單個資料封包的轉發流程很短,一個處理核心會處理所有類型的資料封包,相鄰的兩個資料封包的轉發流程可能完全不同,使得前一個資料封包的處理結果對於處理後一個資料封包不具有參考價值,局部性原理不適用於網路處理器。從宏觀上看,對於存取網路/都會區網路的節點設備,由於節點設備存取的網路的類型較為多樣,不同介面的配置差異較大,報文的類型差異也較大。對於該節點設備而言,接收到的報文的類型較為平均,不會出現某一類的報文的轉發流程占絕大多數的情況。從而,對於該節點設備中用於執行轉發流程的網路處理器,也不會出現某一類的資料封包的轉發流程占絕大多數的情況,局部性原理不適用於網路處理器。
再有,基於圖1所示的本發明實施例提供的轉發程式包括的指令的示意圖,該圖1示出的指令僅為轉發程式包括的指令中的一部分,一個橢圓代表一條指令,箭頭用於指示指令的執行順序。由圖1可以看出轉發程式的流程是線性向下的,不具備CPU程式的特徵,以CPU程式的特點設計的指令預測方法不適用於網路處理器。
本發明實施例提供了一種指令預測方法,能夠適用於處理隨機性高的業務的網路處理器和CPU等處理器,適用範圍較廣。該網路處理器可以為即時通訊(real time communication,RTC)類網路處理器。為了便於理解,首先對本發明實施例中涉及的名詞進行解釋:
IB:也稱為基本塊(basic block),IB具有如下特點:(1)只有一個表項(entry),該IB中的各條指令均按照循序執行,其他IB的分支指令僅能跳轉執行該IB的第一條指令;(2)只有一個出口,只有IB中的最後一條指令執行完畢之後,程式才能夠開始在不同的IB中執行代碼。也就是說,對於一個IB而言,只要執行該IB中的第一條指令,該IB中的其餘指令就必須按照順序執行一次。IB的表項是其他一個或多個IB最後的分支指令跳轉的目標,IB的出口是一個去往其他IB的分支指令。
IB群組(IB group):是指存在前後繼關係的一段連續的IB,該前後繼關係也可稱為跳轉關係。示例性地,對於任意兩個IB,若前一個IB以執行不採取跳轉分支或執行採取跳轉分支的方式執行後一個IB,則稱該兩個IB存在跳轉關係。基於執行的分支的情況,該兩個IB之間的跳轉關係包括但不限於如下兩種情況:如果執行的分支為不採取跳轉分支,則前一個IB和後一個IB的跳轉關係為前一個IB執行不採取跳轉分支以執行後一個IB;如果執行的分支為採取跳轉分支,則前一個IB和後一個IB的跳轉關係為前一個IB執行採取跳轉分支以執行後一個IB。示例性地,若前一個IB以執行無條件跳轉的方式執行後一個IB,也即該前一個IB僅具有該後一個IB這一路分支,這兩個IB之間也存在跳轉關係。這兩個IB之間的跳轉關係即為前一個IB執行無條件跳轉以執行後一個IB。圖2為本發明實施例提供的一種IB群組的示意圖,圖2中示出了10個IB,分別為IB1、IB2、…、IB10。以IB1為例,若IB1執行不採取跳轉分支,則執行IB2,若IB1執行採取跳轉分支,則執行IB3,IB2和IB3均為IB1的後續分支,也即IB1分別與IB2和IB3存在跳轉關係。對於IB5,IB5執行無條件跳轉以執行IB9,該IB5和IB9存在跳轉關係。圖2中其他IB之間的跳轉關係原理相同,此處不再贅述。由此,圖2示出的10個IB共構成了5個IB群組。為便於說明,分別稱為IB群組1、IB群組2、…、IB群組5。其中,IB群組1為IB1→IB2→IB4→IB8,IB群組2為IB1→IB2→IB4→IB9,IB群組3為IB1→IB2→IB5→IB9,IB群組4為IB1→IB3→IB6→IB10,IB群組5為IB1→IB3→IB7→IB10。一個IB群組可以稱為一條執行路徑,例如,對於IB群組1,IB1→IB2→IB4→IB8稱為一條由IB1到IB8的執行路徑,各個IB之間的跳轉關係為:IB1執行不採取跳轉分支以執行IB2、IB2執行不採取跳轉分支以執行IB4、IB4執行不採取跳轉分支以執行IB8。其他IB群組與該IB群組1原理相同,此處不再贅述。
本發明實施例提供的指令預測方法可應用於圖3示出的實施環境。如圖3所示,該實施環境包括電腦系統,比如網路設備301,該網路設備301包括處理器3011和儲存器3012。處理器3011與儲存器3012連接,儲存器3012用於存放程式包括的指令,處理器3011用於調用並執行儲存器3012中的指令,以執行本發明實施例提供的指令預測方法。圖3示出的處理器3011和儲存器3012的數量僅為本發明實施例舉例說明的數量,本發明實施例對此不加以限定。
本發明實施例提供的指令預測方法可如圖4所示,接下來,結合圖3示出的實施場景,對本發明實施例提供的指令預測方法進行說明。如圖4所示,該方法包括但不限於S401至S403。
S401,處理器獲取待執行的多個第一IB,任一個第一IB包括循序執行的至少一條指令,該至少一條指令包括一條分支指令。
在一種可能的實現方式中,程式上下文中包括待執行的多條指令,該多條指令中包括分支指令。處理器從程式上下文中獲取待執行的多條指令,進而得到待執行的多個第一IB。例如,程式上下文可以與資料封包的類型相對應。該處理器接收到資料封包後,執行轉發程式以轉發該資料封包,轉發程式包括多條指令。對於不同類型的資料封包,處理器執行轉發程式的過程中可以得到不同的程式上下文,該程式上下文包括的多條指令為轉發程式包括的多條指令中的全部或者部分。
示例性地,在獲取待執行的多條指令之後,處理器基於該多條指令中的分支指令獲取多個第一IB。本發明實施例不對獲取多個第一IB的方式進行限定,例如,處理器識別多條指令中的分支指令,基於識別到的分支指令將多條指令劃分為多個第一IB。對於該多個第一IB中的任一個第一IB,該任一個第一IB包括的最後一條指令為分支指令。本發明不對各個第一IB包括的指令的數量加以限定,也即,對於該多個第一IB中的任一個第一IB,該任一個第一IB包括至少一條指令,該至少一條指令包括一條分支指令。
S402,處理器基於多個第一IB包括的分支指令,在至少一條候選執行路徑中查找與該多個第一IB對應的候選執行路徑,任一條候選執行路徑指示多個第二IB之間的跳轉關係,與該多個第一IB對應的候選執行路徑指示的跳轉關係中包括該多個第一IB之間的跳轉關係。
示例性地,對於至少一條候選執行路徑中的任一條候選執行路徑,該任一條候選執行路徑為一個IB群組。也就是說,對於該任一條候選執行路徑而言,該IB群組包括的多個IB為多個第二IB,該IB群組中各個IB之間的跳轉關係為該任一條候選執行路徑指示的多個第二IB之間的跳轉關係。例如,該至少一條候選執行路徑包括上述5個IB群組中的IB群組1、IB群組3和IB群組4,也即該至少一條候選執行路徑包括IB1→IB2→IB4→IB8,IB1→IB2→IB4→IB9和IB1→IB3→IB6→IB10。根據圖1示出的轉發程式包括的指令可以看出轉發程式非常複雜,該轉發程式包括的IB群組的數量極其龐大。由此,產品人員可以根據需求選擇需要保證性能的場景,將該選擇的場景對應的IB群組確定為該至少一條候選執行路徑。由於該至少一條候選執行路徑可以是產品人員確定出的,該至少一條候選執行路徑的準確性較高。該至少一條候選執行路徑可以儲存在儲存器中,從而處理器可以基於儲存器獲取與多個第一IB對應的候選執行路徑。
在一種可能的實現方式中,該儲存器中除至少一條候選執行路徑以外,還儲存有與至少一條候選執行路徑各自對應的關鍵字,則處理器可以基於該儲存器中儲存的與至少一條候選執行路徑各自對應的關鍵字,實現獲取與多個第一IB對應的候選執行路徑。示例性地,基於多個第一IB包括的分支指令,在至少一條候選執行路徑中查找與該多個第一IB包括的分支指令對應的候選執行路徑,包括:基於多個第一IB包括的分支指令獲取該多個第一IB對應的關鍵字(key),不同關鍵字對應不同的候選執行路徑;在至少一條候選執行路徑中查找與該關鍵字對應的候選執行路徑,將與該關鍵字對應的候選執行路徑作為與該多個第一IB對應的候選執行路徑。
示例性地,基於該多個第一IB包括的分支指令獲取該多個第一IB對應的關鍵字,包括:將該多個第一IB包括的分支指令進行組合,得到該多個第一IB對應的關鍵字。本發明實施例不對將分支指令進行組合得到關鍵字的方式進行限定。處理器可以直接將各個分支指令進行組合得到關鍵字,也可以先對各個分支指令進行處理,將處理得到的結果進行組合得到關鍵字。例如,處理器先對各個分支指令進行計算,獲得各個分支指令的標識值,將各個分支指令的標識值進行組合得到關鍵字。
本發明實施例對在至少一條候選執行路徑中查找與該關鍵字對應的候選執行路徑的方式也不加以限定。例如,處理器將關鍵字作為一個整體,在至少一條候選執行路徑中查找與該關鍵字對應的候選執行路徑;或者,處理器按照關鍵字的各個部分,分級查找至少一條候選執行路徑中與該關鍵字對應的候選執行路徑。分級查找是指通過逐步縮小查找範圍來查找與該關鍵字對應的候選執行路徑的方式。例如,該關鍵字包括三個部分,則處理器可以基於第一個部分,在至少一條候選執行路徑中查找與該第一個部分對應的候選執行路徑;再基於第二個部分,在第一個部分對應的候選執行路徑中查找與該第二個部分對應的候選執行路徑;再基於第三個部分,在該第二個部分對應的候選執行路徑中查找與該第三個部分對應的候選執行路徑,將與該第三個部分對應的候選執行路徑作為與該關鍵字對應的候選執行路徑。
圖5為本發明實施例提供的一種查找與關鍵字對應的候選執行路徑的過程示意圖,其中,關鍵字為各個分支指令直接組合得到的。圖5示出了三個關鍵字,該三個關鍵字對應於多個第一IB的三種情況。例如,按照從上到下的順序,分別對應於多個第一IB包括IB1、IB2和IB4的情況、多個第一IB包括IB1和IB2的情況以及多個第一IB包括IB1和IB3的情況。如圖5所示,按照從上到下的順序,第一個關鍵字為IB1的分支指令(jump,JMP)、IB2的JMP和IB4的JMP組成的關鍵字,第二個關鍵字為IB1的JMP和IB2的JMP組成的關鍵字,第三個關鍵字為IB1的JMP和IB3的JMP組成的關鍵字。以該第一個關鍵字為例,對該查找過程進行說明,處理器可以按照該關鍵字包括的IB1的JMP、IB2的JMP和IB4的JMP在至少一個候選執行路徑中查找與該關鍵字對應的候選執行路徑。如圖5所示,該至少一個候選執行路徑中,與該IB1的JMP、IB2的JMP、IB4的JMP對應的候選執行路徑為IB1→IB2→IB4→IB8,也即圖5示出的候選執行路徑中的IB群組1,該IB群組1指示的多個第一IB之間的跳轉關係包括:IB1執行不採取跳轉分支以執行IB2、IB2執行不採取跳轉分支以執行IB4和IB4執行不採取跳轉分支以執行IB8。圖5中其餘的關鍵字以及與關鍵字對應的候選執行路徑與該第一個關鍵字的相關內容原理相同,此處不再贅述。由圖5可以看出,與多個第一IB對應的候選執行路徑指示的跳轉關係中包括該多個第一IB之間的跳轉關係。例如,在多個第一IB包括IB1、IB2和IB4,與該多個第一IB對應的候選執行路徑為IB群組1的情況下,該IB群組1指示的跳轉關係包括IB1與IB2之間的跳轉關係以及IB2與IB4之間的跳轉關係。
在一種可能的實現方式中,至少一條候選執行路徑以及與至少一條候選執行路徑各自對應的關鍵字以多級儲存的方式實現。示例性地,該儲存有至少一條候選執行路徑的儲存器中還儲存有與至少一條候選執行路徑各自對應的索引,至少一條候選執行路徑各自對應的索引以及與各個索引對應的關鍵字儲存在該儲存器以外的其他記憶體中。則處理器可以基於該記憶體和該儲存器,執行在至少一條候選執行路徑中查找與該關鍵字對應的候選執行路徑的操作。
示例性地,在至少一條候選執行路徑中查找與該關鍵字對應的候選執行路徑,包括:將該關鍵字輸入該記憶體,獲取該記憶體輸出的與該關鍵字對應的目標索引;在該儲存器儲存的至少一條候選執行路徑中查找與該目標索引對應的候選執行路徑,將與該目標索引對應的候選執行路徑作為與該關鍵字對應的候選執行路徑。該記憶體可以為三元內容可定址記憶體(ternary content addressable memory,TCAM),從而基於該TCAM能夠快速獲取與該關鍵字對應的目標索引。
圖6為本發明實施例提供的一種獲取多個第一IB對應的候選執行路徑的過程示意圖,該圖6示出了處理器由獲取多個第一IB直到獲取多個第一IB對應的候選執行路徑的整體過程。如圖6所示,處理器從程式上下文中獲取多個第一IB,基於該多個第一IB包括的分支指令獲取該多個第一IB對應的關鍵字;將該關鍵字輸入TCAM,獲取TCAM輸出的與該關鍵字對應的目標索引,該TCAM中儲存有至少一條候選執行路徑各自對應的索引以及與各個索引對應的關鍵字;使用該目標索引訪問儲存有至少一條候選執行路徑以及與該至少一條候選執行路徑各自對應的索引的儲存器,在儲存器中查找與該目標索引對應的候選執行路徑,將與該目標索引對應的候選執行路徑作為與該關鍵字對應的候選執行路徑,從而將該候選執行路徑作為與該多個第一IB對應的候選執行路徑。
示例性地,該TCAM包括至少一個表項(entry),一個表項對應一個關鍵字。該儲存器包括至少一個表項,一個表項對應一條候選執行路徑,且該儲存器包括的表項與該TCAM包括的表項數量相同。該處理器獲取關鍵字的邏輯可以是由編譯器編譯轉發程式後生成的,TCAM的配置資料和該儲存器中儲存的內容也可以是由編譯器生成並分別預先載入在TCAM和該儲存器中的,本發明實施例對此不加以限定。
由於該至少一條候選執行路徑是基於需要保證性能的場景確定的,並且確定出的候選執行路徑並非基於實際確定出的所要執行的指令得到的,可能存在某些分支指令對應的下一條指令只有在實際執行之後才能得到的情況,因此,該至少一條候選執行路徑可以不需要包括該程式中的所有執行路徑。相應的,TCAM中也可以不需要儲存所有執行路徑各自對應的索引以及與各個索引對應的關鍵字,儲存器中也不需要儲存所有執行路徑各自對應的索引以及與各個索引對應的關鍵字。從而能夠避免過多的分支指令組合在一起導致關鍵字過長,減少對儲存資源的佔用,減少獲取多個第一IB對應的候選執行路徑的實現代價。再有,由於TCAM的成本較高,該儲存有至少一條候選執行路徑以及與至少一條候選執行路徑各自對應的索引的儲存器可以為除TCAM之外的其他儲存器,從而節約成本。
S403,處理器基於該多個第一IB之間的跳轉關係,預測各個第一IB包括的分支指令對應的下一條指令。
示例性地,對於任一第一IB,該任一第一IB包括的分支指令對應的下一條指令為下一個第一IB包括的第一條指令。例如,該多個第一IB包括IB1、IB2和IB4,該多個第一IB對應的候選執行路徑為IB1→IB2→IB4→IB8。則對於IB1,該IB1包括的分支指令對應的下一條指令為IB2包括的第一條指令。對於IB2,該IB2包括的分支指令對應的下一條指令為IB4包括的第一條指令。對於IB4,該IB4包括的分支指令對應的下一條指令為IB8包括的第一條指令。
對於在至少一條候選執行路徑中未查找到與多個第一IB對應的候選執行路徑的情況,本發明實施例提供的方法也能夠對各個第一IB包括的分支指令對應的下一條指令進行預測,以靈活適用於不同的情況。在一種可能的實現方式中,該方法更包括:基於在該至少一條候選執行路徑中未查找到與多個第一IB對應的候選執行路徑,處理器確定該多個第一IB之間的跳轉關係為參考跳轉關係;基於參考跳轉關係預測各個第一IB包括的分支指令對應的下一條指令。示例性地,該參考跳轉關係為不採取跳轉。
基於前文說明,對於條件分支指令來說,在執行不採取跳轉分支的情況下,處理器執行在程式中按照順序位於該條件分支指令之後的第一條指令,在執行採取跳轉分支的情況下,處理器執行其他程式記憶體中的指令。由於處理器由執行一個程式記憶體中的指令轉為執行其他程式記憶體中的指令時需要時間,例如,需要等待配置指令的執行環境,在配置完畢後才能執行其他程式記憶體中的指令,因此,在將參考跳轉關係為不採取跳轉的情況下,如果基於該不採取跳轉預測到的下一條指令為實際所需執行的下一條指令,處理器能夠減少轉為執行其他程式記憶體中的指令的次數,從而減少等待時間,提高指令的執行效率。
在一種可能的實現方式中,處理器確定該多個第一IB之間的跳轉關係為參考跳轉關係,包括:處理器在各個第一IB之間添加目標指令,該目標指令用於指示各個第一IB之間的跳轉關係為該參考跳轉關係。例如,在處理器獲取到的多個第一IB包括IB1、IB3和IB7的情況下,該處理器未在至少一條候選執行路徑中查找到與該IB1、IB3和IB7對應的候選執行路徑。則處理器在IB1和IB3之間添加一條目標指令,該條目標指令用於指示IB1和IB3之間的跳轉關係為參考跳轉關係;在IB3和IB7之間添加一條目標指令,該條目標指令用於指示IB3和IB7之間的跳轉關係為參考跳轉關係。本發明實施例不對處理器添加目標指令的方式進行限定,處理器可以在各個第一IB的開端或者末尾添加該目標指令。例如,上述情況中,處理器可以分別在IB1和IB3的第一條指令之前添加該目標指令,也可以分別在IB1和IB3的最後一條指令之後添加該目標指令。本發明實施例對目標指令的指令類型也不加以限定。
在一種可能的實現方式中,處理器確定該多個第一IB之間的跳轉關係之後,該方法更包括:處理器基於該多個第一IB之間的跳轉關係,將多個第一IB的執行順序資訊和儲存位址資訊儲存在IB佇列中,該執行順序資訊用於指示多個第一IB包括的指令的執行順序,該儲存位址資訊用於指示多個第一IB包括的指令的儲存位址;從該IB佇列中依次獲取多個第一IB的執行順序資訊和儲存位址資訊;按照獲取的執行順序資訊指示的執行順序,基於獲取的儲存位址資訊指示的儲存位址依次獲取指令,執行獲取到的指令。示例性地,對於執行順序相鄰的兩條指令,處理器執行獲取到的前一條指令之前的操作不早於基於後一條指令的儲存位址獲取後一條指令的操作。也就是說,處理器在基於前一條指令確定出所需執行的下一條指令之前,執行基於後一條指令的儲存位址獲取後一條指令的操作。
示例性地,對於IB佇列中儲存的多個第一IB的執行順序資訊和儲存位址資訊,處理器先從IB佇列中獲取一個第一IB的執行順序資訊和儲存位址資訊,按照獲取的執行順序資訊指示的執行順序,基於獲取的儲存位址資訊指示的儲存位址依次獲取指令,直到該第一IB包括的指令取完,再從IB佇列中獲取下一個第一IB的執行順序資訊和儲存位址資訊,執行與上一個第一IB類似的操作。
在一種可能的實現方式中,該多個第一IB的儲存位址資訊包括各個第一IB對應的起始程式計數器(start program counter,start PC)資訊和大小(size)資訊。對於任一個第一IB,該起始PC資訊用於指示該第一IB中的第一條指令的儲存位址,該大小資訊用於指示該第一IB包括的指令數量。由於該IB佇列中儲存有各個第一IB的起始PC資訊和大小資訊,該IB佇列也可以稱為多PC佇列(multiple PC queue,MPC queue)。
示例性地,執行順序資訊包括遞增取指令,對於獲取到執行順序資訊和儲存位址資訊的第一IB,處理器獲取指令的過程包括:處理器基於該第一IB的起始PC資訊指示的儲存位址開始遞增取指,直到該第一IB包括的指令取完。示例性地,基於起始PC資訊指示的儲存位址開始遞增取指,包括:基於起始PC資訊指示的儲存位址獲取第一條指令,將該起始PC資訊增加參考值,基於通過增加參考值得到的PC資訊指示的儲存位址獲取第二條指令,重複執行增加參考值,基於通過增加參考值得到的PC資訊指示的儲存位址獲取指令的操作。參考值可以根據經驗或實際需求確定,本發明實施例對此不加以限定。示例性地,指令的儲存位址儲存在程式計數器(program counter,PC)中,也即處理器從PC中獲取指令的儲存位址,進而基於該儲存位址獲取該指令。
在一種可能的實現方式中,處理器基於指令管線執行基於儲存位址依次獲取指令,執行獲取到的指令的操作。例如,對於執行順序相鄰的兩條指令,處理器在取指令階段執行基於前一條指令的儲存位址獲取該前一條指令的操作,再將獲取到的前一條指令送入執行階段。並且,處理器在將該前一條指令送入執行階段之前或者在將該前一條指令送入執行階段的同時,在取指令階段執行基於後一條指令的儲存位址獲取該後一條指令的操作。
圖7為本發明實施例提供的一種指令管線的示意圖。如圖7所示,該指令管線包括五個階段,分別為取指令(fetch)階段、解碼(decode)階段、執行(execute)階段、存取(access)階段和回寫(write-back)階段,一個階段均對應一個時鐘週期(cycle)。取指令階段用於從PC中獲取指令的儲存位址,基於該儲存位址獲取指令,將獲取的指令送入解碼階段。解碼階段用於將指令翻譯為具體的功能操作,將完成解碼的指令送入執行階段。執行階段用於執行該完成解碼的指令。存取階段用於訪問儲存器,例如,從儲存器中讀出資料。回寫階段用於將執行結果寫入暫存器或記憶體。結合圖7示出的指令管線,對處理器在各個週期(cycle)執行的操作進行說明。處理器在第一個週期從PC中獲取指令的儲存位址,基於該儲存位址獲取該指令,並預測所要執行的下一條指令。處理器在第二個週期將該獲取到的指令送入解碼階段,並且從PC中獲取下一條指令的儲存位址,基於該儲存位址獲取該下一條指令。依次類推,處理器在其他週期執行的階段原理相同,此處不再贅述。
在一種可能的實現方式中,對於獲取到的指令為分支指令的情況,響應於預測的分支指令對應的下一條指令與所需執行的下一條指令不同,該方法更包括:基於所需執行的下一條指令獲取待執行的至少一個第三IB,預測至少一個第三IB包括的分支指令對應的下一條指令。如果預測的分支指令對應的下一條指令與所需執行的下一條指令不同,說明多個第一IB中的某些指令不是需要執行的指令,則在該情況下,該方法能夠獲取新的待執行的多條指令。進而獲取待執行的至少一個第三IB,再預測至少一個第三IB包括的分支指令對應的下一條指令。
示例性地,處理器在獲取指令之後,為該指令添加屬性資訊,該屬性資訊用於指示該指令是為預測出的所需執行的指令,還是為實際確定出的所需執行的指令。在本發明實施例中,預測出的所需執行的指令的屬性資訊為預測的(predicted),實際確定出的所需執行的指令的屬性資訊為準確的(accurate)。從而,處理器能夠在執行階段基於接收到的指令的屬性資訊確定該指令為哪種指令,進而在確定接收的指令為預測出的所需執行的指令的情況下,確定該預測出的所需執行的指令與實際所需執行的指令是否相同。
示例性地,對於獲取到的指令為分支指令的情況,響應於預測的該分支指令對應的下一條指令與所需執行的下一條指令不同,處理器刪除IB佇列中儲存的多個第一IB的執行順序資訊和儲存位址資訊。該刪除的操作也可稱為沖刷(flush)。例如,在預測出的所需執行的指令與實際所需執行的指令不同的情況下,處理器中執行階段對應的電路將實際所需執行的指令的儲存位址回饋給處理器中取指令階段對應的電路,取指令階段對應的電路接收到該回饋後,沖刷IB佇列中儲存的多個第一IB的執行順序資訊和儲存位址資訊。進而取指令階段對應的電路能夠基於實際所需執行的指令的儲存位址獲取該實際所需執行的指令,執行獲取至少一個第三IB的操作。
示例性地,在預測出的所需執行的指令與實際所需執行的指令不同的情況下,處理器將預測出的所需執行的指令的執行結果標記為不回寫狀態,該不回寫狀態用於指示回寫階段對應的電路不回寫該指令的執行結果。對於後續送入執行階段的指令,處理器仍將該指令的執行結果標記為不回寫狀態,直到取指令階段對應的電路獲取的指令為實際所需執行的指令為止。相應的,該方法還可以包括:對於任一條指令,處理器基於該指令的執行結果的標記情況確定是否將該執行結果寫入暫存器或記憶體。例如,處理器的回寫階段對應的電路在接收到執行結果後,響應於該執行結果被標記為不回寫狀態,不將該執行結果寫入暫存器或記憶體;響應於該執行結果未被標記為不回寫狀態,將該執行結果寫入暫存器或記憶體。通過標記執行結果,處理器能夠實現不回寫該執行結果,從而避免該執行結果佔用暫存器或記憶體的儲存空間,造成儲存空間浪費。
在一種可能的實現方式中,處理器基於指令的執行結果更新程式上下文,從更新後的程式上下文中獲取待執行的至少一個第三IB。隨著處理器執行各條指令,處理器能夠基於各條指令的執行結果更新該程式的上下文,更新後的程式上下文中包括新的待執行的多條指令。進而,處理器能夠預測至少一個第三IB包括的分支指令對應的下一條指令。處理器獲取待執行的至少一個第三IB,預測至少一個第三IB包括的分支指令對應的下一條指令的方式與前文中處理器獲取多個第一IB,預測各個第一IB包括的分支指令對應的下一條指令的方式原理相同,此處不再贅述。
圖8為本發明實施例提供的一種獲取至少一個第三IB對應的執行路徑的過程示意圖。通過獲取至少一個第三IB對應的執行路徑,處理器能夠預測各個第三IB包括的分支指令對應的下一條指令。如圖8所示,該圖8左側為程式包括的多條指令,處理器獲取的待執行的多個第一IB包括IB1、IB2和IB4,獲取到的該多個第一IB對應的候選執行路徑為IB1→IB2→IB4→IB8→IB11,也即圖8右側示出的IB群組6。在一種可能的實現方式中,處理器執行IB2的分支指令時確定實際所需執行的下一條指令為IB5的第一條指令,在該情況下,處理器基於該IB5的第一條指令獲取待執行的至少一個第三IB,該至少一個第三IB包括IB5和IB9,獲取IB5和IB9對應的執行路徑,獲取到的執行路徑為圖8示出的IB群組7,也即為IB5→IB9。
在另一種可能的實現方式中,處理器執行IB1的分支指令時確定實際所需執行的下一條指令為IB3的第一條指令,在該情況下,處理器基於該IB3的第一條指令獲取待執行的至少一個第三IB,該至少一個第三IB包括IB3、IB6和IB10,獲取該IB3、IB6和IB10對應的執行路徑,獲取到的執行路徑為圖8示出的IB群組8,也即為IB3→IB6→IB10。
在又一種可能的實現方式中,處理器執行IB3的分支指令時確定實際所需執行的下一條指令為IB7的第一條指令,在該情況下,處理器基於該IB7的第一條指令獲取待執行的至少一個第三IB,該至少一個第三IB僅包括IB7。相應的,獲取到的執行路徑僅包括IB7,也即圖8示出的IB群組9。
在一種可能的實現方式中,該處理器能夠與多執行緒技術結合。也就是說,處理器支援至少兩個執行緒的調用。則處理器可以調用至少兩個執行緒中的任一個執行緒,在該任一個執行緒上,執行基於儲存位址獲取指令的操作。例如,在處理器支援調用2個執行緒的情況下,處理器可以在該2個執行緒中的任一個執行緒上,執行基於儲存位址獲取指令的操作。
對於該處理器中用於執行基於儲存位址獲取指令的操作的資源,可以採用可搶佔的執行緒調度。處理器僅在資源閒置時,在該至少兩個執行緒中的任一個執行緒上,執行基於儲存位址獲取指令的操作。圖9為本發明實施例提供的一種處理器的取指令階段獲取指令的過程示意圖。該處理器支援調用2個執行緒,分別為執行緒(thread,TH)0和TH1。該MPC佇列包括PC0至PCN,該PC0至PCN依次對應各個第一IB的儲存位址資訊,該儲存位址資訊包括起始PC資訊,N為整數。按照儲存位址資訊指示的儲存位址獲取的指令稱為預測指令,按照實際所需執行的指令的儲存位址獲取的指令稱為準確指令。
如圖9所示,該處理器在未在TH1上執行獲取準確指令的操作,該TH1的狀態(state)為閒置(idle)時,在TH0上執行獲取預測指令的操作。從而按照時間先後,該處理器的取指令階段先在TH0上執行獲取準確指令的操作,之後,在TH0上執行獲取預測指令的操作,再在TH1上執行獲取準確指令的操作,最後,在TH0上執行獲取預測指令的操作。通過僅在資源閒置時執行獲取預測指令的操作,能夠避免執行獲取預測指令的操作對執行獲取準確指令的操作造成影響,實現指令獲取錯誤零懲罰(penalty)。
示例性地,該處理器包括至少一個核心。本發明實施例提供的方法中,處理器的功能可以由該處理器中的核心實現。例如,該處理器中的任一個核心可以調用2個執行緒。
本發明實施例提供的方法中,通過在至少一個候選執行路徑中查找與多個第一IB對應的候選執行路徑,基於多個第一IB對應的候選執行路徑指示的多個第一IB之間的跳轉關係,能夠預測各個第一IB包括的分支指令對應的下一條指令,該方法能夠適用於業務隨機性較高的網路處理器和CPU等處理器,適用範圍較廣。
並且,該方法基於多個第一IB包括的分支指令,獲取與多個第一IB對應的候選執行路徑。由於該候選執行路徑指示的跳轉關係中包括該多個第一IB之間的跳轉關係,基於該多個第一IB之間的跳轉關係能夠直接對各個第一IB包括的分支指令對應的下一條指令進行預測,從而預測各個第一IB包括的分支指令對應的下一條指令的效率較高。
再有,由於多個第一IB之間的跳轉關係是通過該多個第一IB對應的候選執行路徑指示的,該多個第一IB之間的跳轉關係可以不同。與相關技術中將某一路分支對應的指令固定的作為所要執行的下一條指令的方式相比,該方法獲取到的多個第一IB之間的跳轉關係的準確性較高,從而預測各個第一IB包括的分支指令對應的下一條指令的準確性較高,指令的執行效率較高。
另外,在處理器的功能由該處理器中的核心實現,一個核心調用2執行緒的情況下,以該方法實現的指令預測能夠使得核心效率從55%提升到90%以上。從而對於所需達到的核心效率,處理器所需的核心數量較少,處理器所需的面積、實現代價、功耗和延時均較低。
圖10是本發明實施例提供的一種指令預測裝置的結構示意圖。示例性地,該裝置應用於上述圖4所示的處理器。基於圖10所示的如下多個模組,該圖10所示的指令預測裝置能夠執行該處理器所執行的全部或部分操作。應理解到,該裝置可以包括比所示模組更多的附加模組或者省略其中所示的一部分模組,本發明實施例對此不進行限制。如圖10所示,該裝置包括: 獲取模組1001,用於獲取待執行的多個第一指令塊IB,任一個第一IB包括循序執行的至少一條指令,該至少一條指令包括一條分支指令; 查找模組1002,用於基於多個第一IB包括的分支指令,在至少一條候選執行路徑中查找與多個第一IB對應的候選執行路徑,任一條候選執行路徑指示多個第二IB之間的跳轉關係,與多個第一IB對應的候選執行路徑指示的跳轉關係中包括多個第一IB之間的跳轉關係; 預測模組1003,用於基於多個第一IB之間的跳轉關係預測各個第一IB包括的分支指令對應的下一條指令。
在一種可能的實現方式中,查找模組1002,用於基於多個第一IB包括的分支指令獲取多個第一IB對應的關鍵字,不同關鍵字對應不同的候選執行路徑;在至少一條候選執行路徑中查找與關鍵字對應的候選執行路徑,將與關鍵字對應的候選執行路徑作為與多個第一IB對應的候選執行路徑。
在一種可能的實現方式中,至少一條候選執行路徑以及與至少一條候選執行路徑各自對應的索引儲存在儲存器中,至少一條候選執行路徑各自對應的索引以及與各個索引對應的關鍵字儲存在記憶體中;查找模組1002,用於將關鍵字輸入記憶體,獲取記憶體輸出的與關鍵字對應的目標索引,在儲存器儲存的至少一條候選執行路徑中查找與目標索引對應的候選執行路徑,將與目標索引對應的候選執行路徑作為與關鍵字對應的候選執行路徑。
在一種可能的實現方式中,查找模組1002,還用於基於在至少一條候選執行路徑中未查找到與多個第一IB對應的候選執行路徑,確定多個第一IB之間的跳轉關係為參考跳轉關係;基於參考跳轉關係預測各個第一IB包括的分支指令對應的下一條指令。
在一種可能的實現方式中,查找模組1002,用於在各個第一IB之間添加目標指令,目標指令用於指示各個第一IB之間的跳轉關係為該參考跳轉關係。
在一種可能的實現方式中,獲取模組1001,還用於基於多個第一IB之間的跳轉關係,將多個第一IB的執行順序資訊和儲存位址資訊儲存在IB佇列中,執行順序資訊用於指示多個第一IB包括的指令的執行順序,儲存位址資訊用於指示多個第一IB包括的指令的儲存位址;從IB佇列中依次獲取多個第一IB的執行順序資訊和儲存位址資訊;按照獲取的執行順序資訊指示的執行順序,基於獲取的儲存位址資訊指示的儲存位址依次獲取指令,執行獲取到的指令。
在一種可能的實現方式中,獲取模組1001,還用於對於獲取到的指令為分支指令,響應於預測的分支指令對應的下一條指令與所需執行的下一條指令不同,基於所需執行的下一條指令獲取待執行的至少一個第三IB,預測至少一個第三IB包括的分支指令對應的下一條指令。
在一種可能的實現方式中,獲取模組1001,還用於對於獲取到的指令為分支指令,響應於預測的分支指令對應的下一條指令與所需執行的下一條指令不同,刪除IB佇列中儲存的多個第一IB的執行順序資訊和儲存位址資訊。
在一種可能的實現方式中,處理器支援至少兩個執行緒,獲取模組1001,用於在至少兩個執行緒中的任一個執行緒上,執行基於儲存位址獲取指令的操作。
在一種可能的實現方式中,獲取模組1001,用於在資源閒置時,在至少兩個執行緒中的任一個執行緒上,執行基於儲存位址獲取指令的操作。
本發明實施例提供的裝置中,通過在至少一個候選執行路徑中查找與多個第一IB對應的候選執行路徑,基於多個第一IB對應的候選執行路徑指示的多個第一IB之間的跳轉關係,能夠預測各個第一IB包括的分支指令對應的下一條指令,該裝置能夠適用於業務隨機性較高的網路處理器和CPU等處理器,適用範圍較廣。
並且,該裝置基於多個第一IB包括的分支指令,獲取與多個第一IB對應的候選執行路徑。由於該候選執行路徑指示的跳轉關係中包括該多個第一IB之間的跳轉關係,基於該多個第一IB之間的跳轉關係能夠直接對各個第一IB包括的分支指令對應的下一條指令進行預測,從而預測各個第一IB包括的分支指令對應的下一條指令的效率較高。
再有,由於多個第一IB之間的跳轉關係是通過該多個第一IB對應的候選執行路徑指示的,該多個第一IB之間的跳轉關係可以不同。與相關技術中將某一路分支對應的指令固定的作為所要執行的下一條指令的方式相比,該方法獲取到的多個第一IB之間的跳轉關係的準確性較高,從而預測各個第一IB包括的分支指令對應的下一條指令的準確性較高,指令的執行效率較高。
應理解的是,上述圖10提供的裝置在實現其功能時,僅以上述各功能模組的劃分進行舉例說明,實際應用中,可以根據需要而將上述功能分配由不同的功能模組完成,即將設備的內部結構劃分成不同的功能模組,以完成以上描述的全部或者部分功能。另外,上述實施例提供的裝置與方法實施例屬於同一構思,其具體實現過程詳見方法實施例,這裡不再贅述。
上述實施例中的裝置的具體硬體結構如圖11所示的電腦系統,比如網路設備1500,包括收發器1501、處理器1502和儲存器1503。收發器1501、處理器1502和儲存器1503之間通過匯流排1504連接。其中,收發器1501用於發送資料和接收資料,儲存器1503用於存放指令或程式碼,處理器1502用於調用儲存器1503中的指令或程式碼使得設備執行上述方法實施例中處理器的相關處理步驟。在具體實施例中,本發明實施例的網路設備1500可對應於上述各個方法實施例中的處理器,網路設備1500中的處理器1502讀取儲存器1503中的指令或程式碼,使圖11所示的網路設備1500能夠執行處理器所執行的全部或部分操作。
網路設備1500還可以對應於上述圖10所示的裝置,例如,圖10中所涉及的獲取模組1001、查找模組1002和預測模組1003相當於處理器1502。
參見圖12,圖12示出了本發明一個示例性實施例提供的電腦系統,比如網路設備2000的結構示意圖。圖12所示的網路設備2000用於執行上述圖4所示的指令預測方法所涉及的操作。該網路設備2000例如是交換機、路由器等。
如圖12所示,網路設備2000包括至少一個處理器2001、儲存器2003以及至少一個通訊介面2004。
處理器2001例如是CPU、數位訊號處理器(digital signal processor,DSP)、網路處理器(network processer,NP)、圖形處理器(graphics processing unit,GPU)、神經網路處理器(neural-network processing units,NPU)、資料處理單元(data processing unit,DPU)、微處理器或者一個或多個用於實現本發明方案的積體電路。例如,處理器2001包括特定應用積體電路(application-specific integrated circuit,ASIC),可程式化邏輯元件(programmable logic device,PLD)或者其他可程式邏輯元件、電晶體邏輯元件、硬體部件或者其任意組合。PLD例如是複雜可程式化邏輯元件(complex programmable logic device,CPLD)、現場可程式化邏輯閘陣列(field-programmable gate array,FPGA)、同屬陣列邏輯(generic array logic,GAL)或其任意組合。其可以實現或執行結合本發明實施例公開內容所描述的各種邏輯區塊、模組和電路。所述處理器也可以是實現計算功能的組合,例如包括一個或多個微處理器組合,DSP和微處理器的組合等等。
可選的,網路設備2000更包括匯流排。匯流排用於在網路設備2000的各元件之間傳送資訊。匯流排可以是周邊組件互連標準(peripheral component interconnect,簡稱PCI)匯流排或延伸工業標準架構(extended industry standard architecture,簡稱EISA)匯流排等。匯流排可以分為位址匯流排、資料匯流排、控制匯流排等。為便於表示,圖12中僅用一條粗線表示,但並不表示僅有一根匯流排或一種類型的匯流排。圖12中網路設備2000的各元件之間除了採用匯流排連接,還可採用其他方式連接,本發明實施例不對各元件的連接方式進行限定。
儲存器2003例如是唯讀記憶體(read-only memory,ROM)或可儲存靜態資訊和指令的其它類型的靜態儲存設備,又如是隨機存取記憶體(random access memory,RAM)或者可儲存資訊和指令的其它類型的動態儲存設備,又如是電子可抹除可程式化唯讀記憶體(electrically erasable programmable read-only Memory,EEPROM)、唯讀記憶光碟(compact disc read-only memory,CD-ROM)或其它光盤儲存、光碟儲存(包括壓縮光碟、雷射磁碟、光碟、數位多功能光碟、藍光光碟等)、磁片儲存媒體或者其它磁儲存設備,或者是能夠用於攜帶或儲存具有指令或資料結構形式的期望的程式碼並能夠由電腦存取的任何其它媒體,但不限於此。儲存器2003例如是獨立存在,並通過匯流排與處理器2001相連接。儲存器2003也可以和處理器2001集成在一起。
通訊介面2004使用任何收發器一類的裝置,用於與其它設備或通訊網路通訊,通訊網路可以為乙太網路、無線存取網路(RAN)或無線區域網路(wireless local area networks,WLAN)等。通訊介面2004可以包括有線通訊介面,還可以包括無線通訊介面。具體的,通訊介面2004可以為乙太網路(ethernet)介面、快速乙太網路(fast ethernet,FE)介面、十億位元乙太網路(gigabit ethernet,GE)介面、非同步傳輸模式(asynchronous transfer mode,ATM)介面、無線區域網路(wireless local area networks,WLAN)介面、蜂窩網路通訊介面或其組合。乙太網路介面可以是光學介面,電氣介面或其組合。在本發明實施例中,通訊介面2004可以用於網路設備2000與其他設備進行通訊。
在具體實現中,作為一種實施例,處理器2001可以包括一個或多個CPU,如圖12中所示的CPU0和CPU1。這些處理器中的每一個可以是一個單核(single-CPU)處理器,也可以是一個多核(multi-CPU)處理器。這裡的處理器可以指一個或多個設備、電路、及/或用於處理資料(例如電腦程式指令)的處理核心。
在具體實現中,作為一種實施例,網路設備2000可以包括多個處理器,如圖12中所示的處理器2001和處理器2005。這些處理器中的每一個可以是一個單核處理器(single-CPU),也可以是一個多核處理器(multi-CPU)。這裡的處理器可以指一個或多個設備、電路、和/或用於處理資料(如電腦程式指令)的處理核心。
在具體實現中,作為一種實施例,網路設備2000還可以包括輸出設備和輸入裝置。輸出設備和處理器2001通訊,可以以多種方式來顯示資訊。例如,輸出設備可以是液晶顯示器(liquid crystal display,LCD)、發光二級體(light emitting diode,LED)顯示裝置、陰極射線管(cathode ray tube,CRT)顯示裝置或投影機(projector)等。輸入裝置和處理器2001通訊,可以以多種方式接收使用者的輸入。例如,輸入裝置可以是滑鼠、鍵盤、觸控式螢幕設備或感應設備等。
在一些實施例中,儲存器2003用於儲存執行本發明方案的程式碼2010,處理器2001可以執行儲存器2003中儲存的程式碼2010。也即是,網路設備2000可以通過處理器2001以及儲存器2003中的程式碼2010,來實現方法實施例提供的指令預測方法。程式碼2010中可以包括一個或多個軟體模組。可選地,處理器2001自身也可以儲存執行本發明方案的程式碼或指令。
在具體實施例中,本發明實施例的網路設備2000可對應於上述各個方法實施例中的處理器,網路設備2000中的處理器2001讀取儲存器2003中的程式碼2010或處理器2001自身儲存的程式碼或指令,使圖12所示的網路設備2000能夠執行處理器所執行的全部或部分操作。
網路設備2000還可以對應於上述圖10所示的裝置,圖10所示的裝置中的每個功能模組採用網路設備2000的軟體實現。換句話說,圖10所示的裝置包括的功能模組為網路設備2000的處理器2001讀取儲存器2003中儲存的程式碼2010後生成的。例如,圖10中所涉及的獲取模組1001、查找模組1002和預測模組1003相當於處理器2001和/或處理器2005。
其中,圖4所示的方法的各步驟通過網路設備2000的處理器中的硬體的集成邏輯電路或者軟體形式的指令完成。結合本發明實施例所公開的方法的步驟可以直接體現為硬體處理器執行完成,或者用處理器中的硬體及軟體模組組合執行完成。軟體模組可以位於隨機記憶體,快閃記憶體、唯讀記憶體,可程式化唯讀記憶體或者電子可抹除可程式化記憶體、暫存器等本領域成熟的儲存媒體中。該儲存媒體位於儲存器,處理器讀取儲存器中的資訊,結合其硬體完成上述方法的步驟,為避免重複,這裡不再詳細描述。
參見圖13,圖13示出了本發明另一個示例性實施例提供的電腦系統,比如網路設備2100的結構示意圖。圖13所示的網路設備2100用於執行上述圖4所示的指令預測方法所涉及的全部或部分操作。該網路設備2100例如是交換機、路由器等,該網路設備2100可以由一般性的匯流排體系結構來實現。如圖13所示,網路設備2100包括:主控板2110和介面板2130。
主控板也稱為主處理單元(main processing unit,MPU)或路由處理卡(route processor card),主控板2110用於對網路設備2100中各個元件的控制和管理,包括路由計算、設備管理、設備維護、協定處理功能。主控板2110包括:中央處理器2111和儲存器2112。
介面板2130也稱為線路介面單元卡(line processing unit,LPU)、線卡(line card)或業務板。介面板2130用於提供各種業務介面並實現資料封包的轉發。業務介面包括而不限於乙太網路介面、POS(packet over SONET/SDH)介面等,乙太網路介面例如是靈活乙太網業務介面(flexible ethernet clients,FlexE Clients)。介面板2130包括:中央處理器2131網路處理器2132、轉發表項儲存器2134和物理介面卡(physical interface card,PIC)2133。
介面板2130上的中央處理器2131用於對介面板2130進行控制管理並與主控板2110上的中央處理器2111進行通訊。
網路處理器2132用於實現報文的轉發處理。網路處理器2132的形態可以是轉發晶片。轉發晶片可以是網路處理器(network processor,NP)。在一些實施例中,轉發晶片可以通過特定應用積體電路(application-specific integrated circuit,ASIC)或現場可程式化邏輯閘陣列(field programmable gate array,FPGA)實現。具體而言,網路處理器2132用於基於轉發表項儲存器2134保存的轉發表轉發接收到的報文,如果報文的目的位址為報文處理設備2100的位址,則將該報文上送至CPU(如中央處理器2131)處理;如果報文的目的位址不是網路設備2100的位址,則根據該目的位址從轉發表中查找到該目的位址對應的下一跳和輸出介面,將該報文轉發到該目的位址對應的輸出介面。其中,上行報文的處理可以包括:報文傳入介面的處理,轉發表查找;下行報文的處理可以包括:轉發表查找等等。在一些實施例中,中央處理器也可執行轉發晶片的功能,比如基於通用CPU實現軟體轉發,從而介面板中不需要轉發晶片。
物理介面卡2133用於實現實體層的對接功能,原始的流量由此進入介面板2130,以及處理後的報文從該物理介面卡2133發出。物理介面卡2133也稱為子卡,可安裝在介面板2130上,負責將光電信號轉換為報文並對報文進行合法性檢查後轉發給網路處理器2132處理。在一些實施例中,中央處理器2131也可執行網路處理器2132的功能,比如基於通用CPU實現軟體轉發,從而物理介面卡2133中不需要網路處理器2132。
示例性地,網路設備2100包括多個介面板,例如網路設備2100更包括介面板2140,介面板2140包括:中央處理器2141、網路處理器2142、轉發表項儲存器2144和物理介面卡2143。介面板2140中各部件的功能和實現方式與介面板2130相同或相似,在此不再贅述。
示例性地,網路設備2100更包括交換網板2120。交換網板2120也可以稱為交換網板單元(switch fabric unit,SFU)。在網路設備有多個介面板的情況下,交換網板2120用於完成各介面板之間的資料交換。例如,介面板2130和介面板2140之間可以通過交換網板2120通訊。
主控板2110和介面板耦合。例如。主控板2110、介面板2130和介面板2140,以及交換網板2120之間通過系統匯流排與系統背板相連實現互通。在一種可能的實現方式中,主控板2110和介面板2130及介面板2140之間建立行程間通訊協定(inter-process communication,IPC)通道,主控板2110和介面板2130及介面板2140之間通過IPC通道進行通訊。
在邏輯上,網路設備2100包括控制面和轉發面,控制面包括主控板2110和中央處理器2111,轉發面包括執行轉發的各個元件,比如轉發表項儲存器2134、物理介面卡2133和網路處理器2132。控制面執行路由器、生成轉發表、處理信令和協定報文、配置與維護網路設備的狀態等功能,控制面將生成的轉發表下發給轉發面,在轉發面,網路處理器2132基於控制面下發的轉發表對物理介面卡2133收到的報文查表轉發。控制面下發的轉發表可以保存在轉發表項儲存器2134中。在有些實施例中,控制面和轉發面可以完全分離,不在同一網路設備上。
值得說明的是,主控板可能有一塊或多塊,有多塊的時候可以包括主用主控板和備用主控板。介面板可能有一塊或多塊,網路設備的資料處理能力越強,提供的介面板越多。介面板上的物理介面卡也可以有一塊或多塊。交換網板可能沒有,也可能有一塊或多塊,有多塊的時候可以共同實現負荷分擔冗餘備份。在集中式轉發架構下,網路設備可以不需要交換網板,介面板承擔整個系統的業務資料的處理功能。在分散式轉發架構下,網路設備可以有至少一塊交換網板,通過交換網板實現多塊介面板之間的資料交換,提供大容量的資料交換和處理能力。所以,分散式架構的報文處理設備的資料存取和處理能力要大於集中式架構的報文處理設備。示例性地,網路設備的形態也可以是只有一塊板卡,即沒有交換網板,介面板和主控板的功能集成在該一塊板卡上,此時介面板上的中央處理器和主控板上的中央處理器在該一塊板卡上可以合併為一個中央處理器,執行兩者疊加後的功能,這種形態的網路設備的資料交換和處理能力較低(例如,低端交換機或路由器等網路設備)。具體採用哪種架構,取決於具體的組網部署場景,此處不做任何限定。
在具體實施例中,網路設備2100對應於上述圖10所示的指令預測裝置。在一些實施例中,圖10所示的指令檢測裝置中的獲取模組1001、查找模組1002和預測模組1003相當於網路設備2100中的中央處理器2111或網路處理器2132。
應理解的是,上述處理器可以是中央處理器(central processing unit,CPU),還可以是其他通用處理器、數位訊號處理器(digital signal processing,DSP)、特定應用積體電路(application specific integrated circuit,ASIC)、現場可程式化邏輯閘陣列(field-programmable gate array,FPGA)或者其他可程式化邏輯元件、離散閘或者電晶體邏輯元件、離散硬體元件等。通用處理器可以是微處理器或者是任何常規的處理器等。值得說明的是,處理器可以是支援進階精簡指令集機器(advanced RISC machines,ARM)架構的處理器。
進一步地,在一種可選的實施例中,上述儲存器可以包括唯讀儲存器和隨機存取儲存器,並向處理器提供指令和資料。儲存器還可以包括非易失性隨機存取儲存器。例如,儲存器還可以存放裝置類型的資訊。
該儲存器可以是易失性儲存器或非易失性儲存器,或可包括易失性和非易失性儲存器兩者。其中,非易失性儲存器可以是唯讀記憶體(read-only memory,ROM)、可程式化唯讀記憶體(programmable ROM,PROM)、可抹除可程式化唯讀記憶體(erasable PROM,EPROM)、電子可抹除可程式化唯讀記憶體(electrically EPROM,EEPROM)或快閃記憶體。易失性儲存器可以是隨機存取記憶體(random access memory,RAM),其用作外部快取儲存器。通過示例性但不是限制性說明,許多形式的RAM可用。例如,靜態隨機存取記憶體(static RAM,SRAM)、動態隨機存取記憶體(dynamic random access memory,DRAM)、同步動態隨機存取記憶體(synchronous DRAM,SDRAM)、雙倍資料率同步動態隨機存取記憶體(double data date SDRAM,DDR SDRAM)、增強型同步動態隨機存取記憶體(enhanced SDRAM,ESDRAM)、同步連接動態隨機存取記憶體(synchlink DRAM,SLDRAM)和直接記憶體匯流排隨機存取記憶體(direct rambus RAM,DR RAM)。
還提供了一種電腦可讀取儲存媒體,儲存媒體中儲存有至少一條程式指令或代碼,所述程式指令或代碼由處理器載入並執行時以使電腦實現圖4中的指令預測方法。
本發明提供了一種電腦程式(產品),當電腦程式被電腦執行時,可以使得處理器或電腦執行上述方法實施例中對應的各個步驟和/或流程。
提供了一種晶片,包括處理器,用於從儲存器中調用並運行所述儲存器中儲存的指令,使得安裝有所述晶片的網路設備執行上述各方面中的方法。
示例性地,該晶片更包括:輸入介面、輸出介面和所述儲存器,所述輸入介面、輸出介面、所述處理器以及所述儲存器之間通過內部連接通路相連。
還提供了一種設備,該設備包括上述晶片。可選地,該設備為網路設備。示例性地,該設備為路由器或交換機或伺服器。
在上述實施例中,可以全部或部分地通過軟體、硬體、韌體或者其任意組合來實現。當使用軟體實現時,可以全部或部分地以電腦程式產品的形式實現。該電腦程式產品包括一個或多個電腦指令。在電腦上載入和執行該電腦程式指令時,全部或部分地產生按照本發明所述的流程或功能。該電腦可以是通用電腦、專用電腦、電腦網路、或者其他可程式化裝置。所述電腦指令可以儲存在電腦可讀取儲存媒體中,或者從一個電腦可讀取儲存媒體向另一個電腦可讀取儲存媒體傳輸,例如,所述電腦指令可以從一個網站站點、電腦、伺服器或資料中心通過有線(例如同軸電纜、光纖、數位用戶線路)或無線(例如紅外線、無線、微波等)方式向另一個網站站點、電腦、伺服器或資料中心進行傳輸。所述電腦可讀取儲存媒體可以是電腦能夠存取的任何可用媒體或者是包含一個或多個可用媒體集成的伺服器、資料中心等資料儲存設備。所述可用媒體可以是磁性媒體(例如,磁片、硬碟、磁帶)、光媒體(例如,DVD)、或者半導體媒體(例如固態硬碟(solid state disk,SSD))等。
以上所述的具體實施方式,對本發明的目的、技術方案和有益效果進行了進一步詳細說明,所應理解的是,以上所述僅為本發明的具體實施方式而已,並不用於限定本發明的保護範圍,凡在本發明的技術方案的基礎之上,所做的任何修改、等同替換、改進等,均應包括在本發明的保護範圍之內。
本領域普通技術人員可以意識到,結合本文中所公開的實施例中描述的各方法步驟和模組,能夠以軟體、硬體、韌體或者其任意組合來實現,為了清楚地說明硬體和軟體的可互換性,在上述說明中已經按照功能一般性地描述了各實施例的步驟及組成。這些功能究竟以硬體還是軟體方式來執行,取決於技術方案的特定應用和設計約束條件。本領域普通技術人員可以對每個特定的應用來使用不同方法來實現所描述的功能,但是這種實現不應認為超出本發明的範圍。
本領域普通技術人員可以理解實現上述實施例的全部或部分步驟可以通過硬體來完成,也可以通過程式來指令相關的硬體完成,該程式可以儲存於一種電腦可讀取儲存媒體中,上述提到的儲存媒體可以是唯讀儲存器,磁片或光碟等。
當使用軟體實現時,可以全部或部分地以電腦程式產品的形式實現。該電腦程式產品包括一個或多個電腦程式指令。作為示例,本申請實施例的方法可以在機器可執行指令的上下文中被描述,機器可執行指令諸如包括在目標的真實或者虛擬處理器上的元件中執行的程式模組中。一般而言,程式模組包括常式、程式、庫、物件、類別、元件、資料結構等,其執行特定的任務或者實現特定的抽象資料結構。在各實施例中,程式模組的功能可以在所描述的程式模組之間合併或者分割。用於程式模組的機器可執行指令可以在本地或者分散式設備內執行。在分散式設備中,程式模組可以位於本地和遠端儲存媒體二者中。
用於實現本發明實施例的方法的電腦程式碼可以用一種或多種程式設計語言編寫。這些電腦程式碼可以提供給通用電腦、專用電腦或其他可程式化的指令預測裝置的處理器,使得程式碼在被電腦或其他可程式設計的指令預測裝置執行的時候,引起在流程圖和/或方塊圖中規定的功能/操作被實施。程式碼可以完全在電腦上、部分在電腦上、作為獨立的套裝軟體、部分在電腦上且部分在遠端電腦上或完全在遠端電腦或伺服器上執行。
在本發明實施例的上下文中,電腦程式碼或者相關資料可以由任意適當載體承載,以使得設備、裝置或者處理器能夠執行上文描述的各種處理和操作。載體的示例包括信號、電腦可讀取媒體等等。
信號的示例可以包括電、光、無線電、聲音或其它形式的傳播信號,諸如載波、紅外信號等。
機器可讀媒體可以是包含或儲存用於或有關於指令執行系統、裝置或設備的程式的任何有形媒體。機器可讀媒體可以是機器可讀信號媒體或機器可讀取儲存媒體。機器可讀媒體可以包括但不限於電子的、磁的、光學的、電磁的、紅外線的或半導體系統、裝置或設備,或其任意合適的組合。機器可讀取儲存媒體的更詳細示例包括帶有一根或多根導線的電氣連接、可攜式電腦磁片、硬碟、隨機存取記憶體(RAM)、唯讀記憶體(ROM)、可抹除可程式化唯讀記憶體(EPROM或快閃記憶體)、光儲存設備、磁儲存設備,或其任意合適的組合。
所屬領域的技術人員可以清楚地瞭解到,為了描述的方便和簡潔,上述描述的系統、設備和模組的具體工作過程,可以參見前述方法實施例中的對應過程,在此不再贅述。
在本發明所提供的幾個實施例中,應該理解到,所揭露的系統、設備和方法,可以通過其它的方式實現。例如,以上所描述的設備實施例僅僅是示意性的,例如,該模組的劃分,僅僅為一種邏輯功能劃分,實際實現時可以有另外的劃分方式,例如多個模組或元件可以結合或者可以集成到另一個系統,或一些特徵可以忽略,或不執行。另外,所顯示或討論的相互之間的耦合或直接耦合或通訊連接可以是通過一些介面、設備或模組的間接耦合或通訊連接,也可以是電的,機械的或其它的形式連接。
該作為分離部件說明的模組可以是或者也可以不是物理上分開的,作為模組顯示的部件可以是或者也可以不是物理模組,即可以位於一個地方,或者也可以分佈到多個網路模組上。可以根據實際的需要選擇其中的部分或者全部模組來實現本發明實施例方案的目的。
另外,在本發明各個實施例中的各功能模組可以集成在一個處理模組中,也可以是各個模組單獨物理存在,也可以是兩個或兩個以上模組集成在一個模組中。上述集成的模組既可以採用硬體的形式實現,也可以採用軟體功能模組的形式實現。
該集成的模組如果以軟體功能模組的形式實現並作為獨立的產品銷售或使用時,可以儲存在一個電腦可讀取儲存媒體中。基於這樣的理解,本發明的技術方案本質上或者說對現有技術做出貢獻的部分,或者該技術方案的全部或部分可以以軟體產品的形式體現出來,該電腦軟體產品儲存在一個儲存媒體中,包括若干指令用以使得一台電腦設備(可以是個人電腦,伺服器,或者網路設備等)執行本發明各個實施例中方法的全部或部分步驟。而前述的儲存媒體包括:隨身碟、移動硬碟、唯讀記憶體(read-only memory,ROM)、隨機存取記憶體(random access memory,RAM)、磁碟或者光碟等各種可以儲存程式碼的媒體。
本發明中術語“第一”、“第二”等字樣用於對作用和功能基本相同的相同項或相似項進行區分,應理解,“第一”、“第二”、“第n”之間不具有邏輯或時序上的依賴關係,也不對數量和執行順序進行限定。還應理解,儘管以下描述使用術語第一、第二等來描述各種元素,但這些元素不應受術語的限制。這些術語只是用於將一元素與另一元素區別分開。例如,在不脫離各種所述示例的範圍的情況下,第一設備可以被稱為第二設備,並且類似地,第二設備可以被稱為第一設備。第一設備和第二設備都可以是任一類型的網路設備,並且在某些情況下,可以是單獨且不同的網路設備。
還應理解,在本發明的各個實施例中,各個過程的序號的大小並不意味著執行順序的先後,各過程的執行順序應以其功能和內在邏輯確定,而不應對本發明實施例的實施過程構成任何限定。
本發明中術語“至少一個”的含義是指一個或多個,本發明中術語“多個”的含義是指兩個或兩個以上,例如,多個第二報文是指兩個或兩個以上的第二報文。本文中術語“系統”和“網路”經常可互換使用。
應理解,在本文中對各種所述示例的描述中所使用的術語只是為了描述特定示例,而並非旨在進行限制。如在對各種所述示例的描述和所附權利要求書中所使用的那樣,單數形式“一個(“a”,“an”)”和“該”旨在也包括複數形式,除非上下文另外明確地指示。
還應理解,術語“包括”(也稱“includes”、“including”、“comprises”和/或“comprising”)當在本說明書中使用時指定存在所陳述的特徵、整數、步驟、操作、元素、和/或部件,但是並不排除存在或添加一個或多個其他特徵、整數、步驟、操作、元素、部件、和/或其分組。
還應理解,術語“若”和“如果”可被解釋為意指“當...時”(“when”或“upon”)或“響應於確定”或“響應於檢測到”。類似地,根據上下文,短語“若確定...”或“若檢測到[所陳述的條件或事件]”可被解釋為意指“在確定...時”或“響應於確定...”或“在檢測到[所陳述的條件或事件]時”或“響應於檢測到[所陳述的條件或事件]”。
應理解,根據A確定B並不意味著僅僅根據A確定B,還可以根據A和/或其它資訊確定B。
還應理解,說明書通篇中提到的“一個實施例”、“一實施例”、“一種可能的實現方式”意味著與實施例或實現方式有關的特定特徵、結構或特性包括在本發明的至少一個實施例中。因此,在整個說明書各處出現的“在一個實施例中”或“在一實施例中”、“一種可能的實現方式”未必一定指相同的實施例。此外,這些特定的特徵、結構或特性可以任意適合的方式結合在一個或多個實施例中。
301、1500、2000、2100:網路設備 1001:獲取模組 1002:查找模組 1003:預測模組 1501:收發器 1502、2001、2005、3011:處理器 1503、2003、2112、3012:儲存器 2004:通訊介面 2010:程式碼 2110:主控板 2111、2131、2141:中央處理器 2120:交換網板 2130、2140:介面板 2132、2142:網路處理器 2133、2143:物理介面卡 2134、2144:轉發表項儲存器 S401~S403:步驟
圖1是本發明實施例提供的一種轉發程式包括的指令的示意圖。 圖2是本發明實施例提供的一種IB群組的示意圖。 圖3是本發明實施例提供的一種指令預測方法的實施環境示意圖。 圖4是本發明實施例提供的一種指令預測方法的流程圖。 圖5是本發明實施例提供的一種查找與關鍵字對應的候選執行路徑的過程示意圖。 圖6是本發明實施例提供的一種獲取多個第一IB對應的候選執行路徑的過程示意圖。 圖7是本發明實施例提供的一種指令管線的示意圖。 圖8是本發明實施例提供的一種獲取至少一個第三IB對應的執行路徑的過程示意圖。 圖9是本發明實施例提供的一種處理器的取指令階段獲取指令的過程示意圖。 圖10是本發明實施例提供的一種指令預測裝置的結構示意圖。 圖11是本發明實施例提供的一種網路設備的結構示意圖。 圖12是本發明實施例提供的另一種網路設備的結構示意圖。 圖13是本發明實施例提供的另一種網路設備的結構示意圖。
S401~S403:步驟

Claims (26)

  1. 一種指令預測方法,其特徵在於,包括: 處理器獲取待執行的多個第一指令塊IB,任一個第一IB包括循序執行的至少一條指令,所述至少一條指令包括一條分支指令; 基於所述多個第一IB包括的分支指令,在至少一條候選執行路徑中查找與所述多個第一IB對應的候選執行路徑,任一條候選執行路徑指示多個第二IB之間的跳轉關係,所述與所述多個第一IB對應的候選執行路徑指示的跳轉關係中包括所述多個第一IB之間的跳轉關係; 基於所述多個第一IB之間的跳轉關係預測各個第一IB包括的分支指令對應的下一條指令。
  2. 如請求項1所述的方法,其特徵在於,所述基於所述多個第一IB包括的分支指令,在至少一條候選執行路徑中查找與所述多個第一IB對應的候選執行路徑,包括: 基於所述多個第一IB包括的分支指令獲取所述多個第一IB對應的關鍵字,不同關鍵字對應不同的候選執行路徑; 在所述至少一條候選執行路徑中查找與所述關鍵字對應的候選執行路徑,將與所述關鍵字對應的候選執行路徑作為所述與所述多個第一IB對應的候選執行路徑。
  3. 如請求項2所述的方法,其特徵在於,所述至少一條候選執行路徑以及與所述至少一條候選執行路徑各自對應的索引儲存在儲存器中,所述至少一條候選執行路徑各自對應的索引以及與各個索引對應的關鍵字儲存在記憶體中; 所述在所述至少一條候選執行路徑中查找與所述關鍵字對應的候選執行路徑,包括: 將所述關鍵字輸入所述記憶體,獲取所述記憶體輸出的與所述關鍵字對應的目標索引,在所述儲存器儲存的所述至少一條候選執行路徑中查找與所述目標索引對應的候選執行路徑,將與所述目標索引對應的候選執行路徑作為與所述關鍵字對應的候選執行路徑。
  4. 如請求項1至請求項3中任一項所述的方法,其特徵在於,所述方法更包括: 基於在所述至少一條候選執行路徑中未查找到與所述多個第一IB對應的候選執行路徑,所述處理器確定所述多個第一IB之間的跳轉關係為參考跳轉關係; 基於所述參考跳轉關係預測各個第一IB包括的分支指令對應的下一條指令。
  5. 如請求項4所述的方法,其特徵在於,所述處理器確定所述多個第一IB之間的跳轉關係為參考跳轉關係,包括: 處理器在各個第一IB之間添加目標指令,所述目標指令用於指示各個第一IB之間的跳轉關係為該參考跳轉關係。
  6. 如請求項1至請求項5中任一項所述的方法,其特徵在於,所述處理器確定所述多個第一IB之間的跳轉關係之後,所述方法更包括: 所述處理器基於所述多個第一IB之間的跳轉關係,將所述多個第一IB的執行順序資訊和儲存位址資訊儲存在IB佇列中,所述執行順序資訊用於指示所述多個第一IB包括的指令的執行順序,所述儲存位址資訊用於指示所述多個第一IB包括的指令的儲存位址; 從所述IB佇列中依次獲取所述多個第一IB的執行順序資訊和儲存位址資訊; 按照獲取的執行順序資訊指示的執行順序,基於獲取的儲存位址資訊指示的儲存位址依次獲取指令,執行獲取到的指令。
  7. 如請求項6所述的方法,其特徵在於,更包括: 對於所述獲取到的指令為分支指令,響應於預測的所述分支指令對應的下一條指令與所需執行的下一條指令不同,所述處理器基於所述所需執行的下一條指令獲取待執行的至少一個第三IB,預測所述至少一個第三IB包括的分支指令對應的下一條指令。
  8. 如請求項6或7所述的方法,其特徵在於,更包括: 對於所述獲取到的指令為分支指令,響應於預測的所述分支指令對應的下一條指令與所需執行的下一條指令不同,所述處理器刪除所述IB佇列中儲存的所述多個第一IB的執行順序資訊和儲存位址資訊。
  9. 如請求項6至請求項8中任一項所述的方法,其特徵在於,所述處理器支援至少兩個執行緒,所述處理器在所述至少兩個執行緒中的任一個執行緒上,執行基於儲存位址獲取指令的操作。
  10. 如請求項9所述的方法,其特徵在於,所述處理器在所述至少兩個執行緒中的任一個執行緒上,執行基於儲存位址獲取指令的操作,包括: 所述處理器在資源閒置時,在所述至少兩個執行緒中的任一個執行緒上,執行基於儲存位址獲取指令的操作。
  11. 一種指令預測裝置,其特徵在於,所述裝置應用於處理器,所述裝置包括: 獲取模組,用於獲取待執行的多個第一指令塊IB,任一個第一IB包括循序執行的至少一條指令,所述至少一條指令包括一條分支指令; 查找模組,用於基於所述多個第一IB包括的分支指令,在至少一條候選執行路徑中查找與所述多個第一IB對應的候選執行路徑,任一條候選執行路徑指示多個第二IB之間的跳轉關係,所述與所述多個第一IB對應的候選執行路徑指示的跳轉關係中包括所述多個第一IB之間的跳轉關係; 預測模組,用於基於所述多個第一IB之間的跳轉關係預測各個第一IB包括的分支指令對應的下一條指令。
  12. 如請求項11所述的裝置,其特徵在於,所述查找模組,用於基於所述多個第一IB包括的分支指令獲取所述多個第一IB對應的關鍵字,不同關鍵字對應不同的候選執行路徑;在所述至少一條候選執行路徑中查找與所述關鍵字對應的候選執行路徑,將與所述關鍵字對應的候選執行路徑作為所述與所述多個第一IB對應的候選執行路徑。
  13. 如請求項12所述的裝置,其特徵在於,所述至少一條候選執行路徑以及與所述至少一條候選執行路徑各自對應的索引儲存在儲存器中,所述至少一條候選執行路徑各自對應的索引以及與各個索引對應的關鍵字儲存在記憶體中;所述查找模組,用於將所述關鍵字輸入所述記憶體,獲取所述記憶體輸出的與所述關鍵字對應的目標索引,在所述儲存器儲存的所述至少一條候選執行路徑中查找與所述目標索引對應的候選執行路徑,將與所述目標索引對應的候選執行路徑作為與所述關鍵字對應的候選執行路徑。
  14. 如請求項11至請求項13中任一項所述的裝置,其特徵在於,所述查找模組,還用於基於在所述至少一條候選執行路徑中未查找到與所述多個第一IB對應的候選執行路徑,確定所述多個第一IB之間的跳轉關係為參考跳轉關係;基於所述參考跳轉關係預測各個第一IB包括的分支指令對應的下一條指令。
  15. 如請求項14所述的裝置,其特徵在於,所述查找模組,用於在各個第一IB之間添加目標指令,所述目標指令用於指示各個第一IB之間的跳轉關係為該參考跳轉關係。
  16. 如請求項11至請求項15中任一項所述的裝置,其特徵在於,所述獲取模組,還用於基於所述多個第一IB之間的跳轉關係,將所述多個第一IB的執行順序資訊和儲存位址資訊儲存在IB佇列中,所述執行順序資訊用於指示所述多個第一IB包括的指令的執行順序,所述儲存位址資訊用於指示所述多個第一IB包括的指令的儲存位址;從所述IB佇列中依次獲取所述多個第一IB的執行順序資訊和儲存位址資訊;按照獲取的執行順序資訊指示的執行順序,基於獲取的儲存位址資訊指示的儲存位址依次獲取指令,執行獲取到的指令。
  17. 如請求項16所述的裝置,其特徵在於,所述獲取模組,還用於對於所述獲取到的指令為分支指令,響應於預測的所述分支指令對應的下一條指令與所需執行的下一條指令不同,基於所述所需執行的下一條指令獲取待執行的至少一個第三IB,預測所述至少一個第三IB包括的分支指令對應的下一條指令。
  18. 如請求項16或17所述的裝置,其特徵在於,所述獲取模組,還用於對於所述獲取到的指令為分支指令,響應於預測的所述分支指令對應的下一條指令與所需執行的下一條指令不同,刪除所述IB佇列中儲存的所述多個第一IB的執行順序資訊和儲存位址資訊。
  19. 如請求項16至請求項18中任一項所述的裝置,其特徵在於,所述處理器支援至少兩個執行緒,所述獲取模組,用於在所述至少兩個執行緒中的任一個執行緒上,執行基於儲存位址獲取指令的操作。
  20. 如請求項19所述的裝置,其特徵在於,所述獲取模組,用於在資源閒置時,在所述至少兩個執行緒中的任一個執行緒上,執行基於儲存位址獲取指令的操作。
  21. 一種電腦系統,其特徵在於,包括:處理器,當所述處理器執行程式指令或代碼時,所述電腦系統實現如請求項1至請求項10中任一項所述的方法。
  22. 如請求項21所述的電腦系統,其特徵在於,更包括儲存器,所述儲存器用於儲存所述程式指令或代碼。
  23. 一種電腦可讀取儲存媒體,其特徵在於,所述電腦可讀取儲存媒體中儲存有至少一條程式指令或代碼,所述程式指令或代碼由電腦執行時以使所述電腦實現如請求項1至請求項10中任一項所述的方法。
  24. 一種電腦程式產品,其特徵在於,所述電腦程式產品包括電腦程式指令或代碼,當其被電腦運行時,使得所述電腦實現如請求項1至請求項10中任一項所述的方法。
  25. 一種晶片,其特徵在於,包括處理器,所述處理器用於運程式指令或代碼,使得包含所述晶片的設備執行如請求項1至請求項10中任一項所述的方法。
  26. 如請求項25所述的晶片,其特徵在於,更包括:輸入介面、輸出介面和儲存器,所述輸入介面、所述輸出介面、所述處理器以及所述儲存器之間通過內部連接通路相連,所述儲存器包含所述程式指令或代碼。
TW112116005A 2022-05-10 2023-04-28 指令預測方法、裝置、系統及計算機可讀取儲存媒體 TW202349201A (zh)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
CN202210504984 2022-05-10
CN202210504984.1 2022-05-10
CN202210866647.7A CN117075968A (zh) 2022-05-10 2022-07-22 指令预测方法、装置、系统及计算机可读存储介质
CN202210866647.7 2022-07-22

Publications (1)

Publication Number Publication Date
TW202349201A true TW202349201A (zh) 2023-12-16

Family

ID=86330877

Family Applications (1)

Application Number Title Priority Date Filing Date
TW112116005A TW202349201A (zh) 2022-05-10 2023-04-28 指令預測方法、裝置、系統及計算機可讀取儲存媒體

Country Status (3)

Country Link
US (1) US20230367596A1 (zh)
EP (1) EP4276611A1 (zh)
TW (1) TW202349201A (zh)

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5434985A (en) * 1992-08-11 1995-07-18 International Business Machines Corporation Simultaneous prediction of multiple branches for superscalar processing
EP3306466B1 (en) * 2010-10-12 2020-05-13 INTEL Corporation An instruction sequence buffer to store branches having reliably predictable instruction sequences

Also Published As

Publication number Publication date
EP4276611A1 (en) 2023-11-15
US20230367596A1 (en) 2023-11-16

Similar Documents

Publication Publication Date Title
US8341357B2 (en) Pre-fetching for a sibling cache
US9170954B2 (en) Translation management instructions for updating address translation data structures in remote processing nodes
EP1615138A2 (en) Multiprocessor chip having bidirectional ring interconnect
US20090125703A1 (en) Context Switching on a Network On Chip
US7802025B2 (en) DMA engine for repeating communication patterns
KR101830685B1 (ko) 온칩 메시 상호접속부
CN101154169A (zh) 多处理器系统
US9244734B2 (en) Mechanism of supporting sub-communicator collectives with o(64) counters as opposed to one counter for each sub-communicator
US10866902B2 (en) Memory aware reordered source
JP7150902B2 (ja) グラフデータベースのトラバース方法、装置、機器及び記憶媒体
US10331500B2 (en) Managing fairness for lock and unlock operations using operation prioritization
WO2017190266A1 (zh) 管理转址旁路缓存的方法和多核处理器
CN110958193A (zh) 用于软件虚拟交换机的数据平面语义
US10652353B2 (en) Technologies for automatic processor core association management and communication using direct data placement in private caches
CN107005492B (zh) 用于芯片上网络上的多播和缩减通信的系统
US8621167B2 (en) Using DMA for copying performance counter data to memory
WO2019019719A1 (zh) 分支预测方法及装置
US20130138930A1 (en) Computer systems and methods for register-based message passing
TW202349201A (zh) 指令預測方法、裝置、系統及計算機可讀取儲存媒體
US20230096015A1 (en) Method, electronic deviice, and computer program product for task scheduling
US8782164B2 (en) Implementing asyncronous collective operations in a multi-node processing system
Safaei et al. Dynamic routing of data stream tuples among parallel query plan running on multi-core processors
CN113076189B (zh) 具有多数据通路的数据处理系统及用多数据通路构建虚拟电子设备
CN117075968A (zh) 指令预测方法、装置、系统及计算机可读存储介质
US20220147393A1 (en) User timer directly programmed by application