System.ArgumentOutOfRangeException: 索引和長度必須引用該字符串內的位置。 參數名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技術實現步驟摘要】
本專利技術涉及計算機,特別是涉及一種代碼優化方法、優化裝置、計算機設備和存儲介質。
技術介紹
1、目前,影響代碼運算速度的一個原因是處理器核從緩存中讀寫數據導致的,尤其是處理器核從不同級別緩存中讀寫數據的時間不同,越靠近處理器核的緩存讀寫速度越快,越遠離處理器核的緩存讀寫速度越慢。
2、因此,針對處理器核在不同級別緩存的讀寫速度,如何改善代碼中的讀寫邏輯,降低重復的冗余讀寫操作,成為本領域技術人員進行代碼優化所亟待解決的問題。
技術實現思路
1、為了解決上述問題至少之一,本專利技術第一方面提供一種代碼優化方法,包括:
2、根據預設置的搬移指令集合遍歷待優化代碼,獲取所述待優化代碼中與所述搬移指令集合中的指令匹配的目標搬移指令,其中,所述搬移指令集合包括在不同級別緩存間搬移數據的搬移指令,所述目標搬移指令位于至少兩層循環中;
3、查找所述目標搬移指令在其位于的所述至少兩層循環中的關聯循環變量;
4、根據所述關聯循環變量在所述至少兩層循環中的位置,確定所述目標搬移指令的優化位置,并將所述目標搬移指令移至所述優化位置。
5、在本實施例中,通過遍歷待優化代碼找出待優化代碼中所有位于循環中的目標搬移指令,查找每一個目標搬移指令在所述至少兩層循環中的關聯循環變量,并利用關聯循環變量在循環中的位置判斷各目標搬移指令的優化位置并移至優化位置。本實施例通過將至少兩層循環中的目標搬移指令搬移至優化位置,減少目標搬移指令的執行次數,從而有效提高
6、進一步的,所述查找所述目標搬移指令在其位于的所述至少兩層循環中的關聯循環變量包括:
7、根據所述目標搬移指令的指令參數獲取所述目標搬移指令的起始地址值和搬移長度;
8、查找所述至少兩層循環中各層循環的循環變量與所述起始地址值和搬移長度相關的循環變量,確定為所述目標搬移指令在所述至少兩層循環中的關聯循環變量。
9、在本實施例中,根據至少兩層循環,判斷各目標搬移指令的起始地址值和搬移長度、與每一層循環的循環變量是否相關,從而準確地獲取與目標搬移指令關聯的關聯循環變量,以便于后續根據關聯循環變量確定目標搬移指令的優化位置。
10、進一步的,所述根據所述關聯循環變量在所述至少兩層循環中的位置,確定所述目標搬移指令的優化位置包括:
11、將所述關聯循環變量中最靠近所述目標搬移指令的循環變量所在的循環層設置為所述目標搬移指令的優化位置。
12、在本實施例中,根據與目標搬移指令相關聯的關聯循環變量,在至少兩層循環從內向外的方向上,確定目標搬移指令的優化位置,即關聯循環變量中位于最內側的循環變量對應的循環層為優化位置。本實施例通過獲取各目標搬移指令的優化位置,能夠避免因目標搬移指令設置在至少兩層循環中相對于優化位置的內側循環層、而導致各目標搬移指令進行冗余的數據搬移,從而有效提高代碼的執行效率,加快代碼的運行速度。
13、進一步的,所述方法還包括:確定所述目標搬移指令在其位于的所述至少兩層循環中沒有與所述目標搬移指令相關的關聯循環變量,
14、所述根據所述關聯循環變量在所述至少兩層循環中的位置,確定所述目標搬移指令的優化位置包括:將所述至少兩層循環的外部確定為所述目標搬移指令的優化位置。
15、在本實施例中,針對目標搬移指令不具有與至少兩層循環相關聯的關聯循環變量,即目標搬移指令的起始地址值和搬移長度與至少兩層循環無關,則將各目標搬移指令的優化位置設置為至少兩層循環的外部,能夠避免因目標搬移指令設置在至少兩層循環中而導致存在冗余的數據搬移,從而有效提高代碼的執行效率,加快代碼的運行速度。
16、進一步的,所述查找所述目標搬移指令在其位于的所述至少兩層循環中的關聯循環變量包括:
17、按照從內向外的方向查找所述至少兩層循環中各層循環的循環變量與所述起始地址值和搬移長度相關的循環變量。
18、在本實施例中,在遍歷目標搬移指令在至少兩層循環中各循環層的關聯循環變量時,按照從內向外的方向順序查找,找到的第一個與目標搬移指令相關的關聯循環變量所在的循環層即為目標搬移指令的優化位置。
19、進一步的,所述不同級別緩存為所述待優化代碼運行的處理器核的所屬芯片的板卡上的緩存,包括:距離所述處理器核由近及遠方向的核內緩存、核間緩存和片外緩存。在本實施例中,針對板卡上的緩存架構,按照緩存架構的緩存分布確定目標搬移指令,從而根據待優化代碼所運行的環境進行針對性優化。
20、進一步的,所述目標搬移指令為pld指令或dma指令。
21、本專利技術第二方面提供一種代碼優化裝置,包括:
22、指令獲取單元,被配置為根據預設置的搬移指令集合遍歷待優化代碼,獲取所述待優化代碼中與所述搬移指令集合中的指令匹配的目標搬移指令,其中,所述搬移指令集合包括在不同級別緩存間搬移數據的搬移指令,所述目標搬移指令位于至少兩層循環中;
23、查找單元,被配置為查找所述目標搬移指令在其位于的所述至少兩層循環中的關聯循環變量;
24、優化單元,被配置為根據所述關聯循環變量在所述至少兩層循環中的位置,確定所述目標搬移指令的優化位置,并將所述目標搬移指令移至所述優化位置。
25、在本實施例中,通過指令獲取單元遍歷待優化代碼找出待優化代碼中所有位于循環中的目標搬移指令,通過查找單元查找每一個目標搬移指令在所述至少兩層循環中的關聯循環變量,并通過優化單元利用關聯循環變量在循環中的位置判斷各目標搬移指令的優化位置并移至優化位置。本實施例通過將至少兩層循環中的目標搬移指令搬移至優化位置,減少目標搬移指令的執行次數,從而有效提高代碼的執行效率,加快代碼的運行速度。
26、本專利技術第三方面提供一種計算機可讀存儲介質,其上存儲有計算機程序,該程序被處理器執行時實現如第一方面所述的方法。
27、本專利技術第四方面提供一種計算機設備,包括存儲器、處理器及存儲在存儲器上并可在處理器上運行的計算機程序,所述處理器執行所述程序時實現如第一方面所述的方法。
本文檔來自技高網...【技術保護點】
1.一種代碼優化方法,其特征在于,包括:
2.根據權利要求1所述的代碼優化方法,其特征在于,所述查找所述目標搬移指令在其位于的所述至少兩層循環中的關聯循環變量包括:
3.根據權利要求1或2所述的代碼優化方法,其特征在于,所述根據所述關聯循環變量在所述至少兩層循環中的位置,確定所述目標搬移指令的優化位置包括:
4.根據權利要求1或2所述的代碼優化方法,其特征在于,所述方法還包括:確定所述目標搬移指令在其位于的所述至少兩層循環中沒有與所述目標搬移指令相關的關聯循環變量,
5.根據權利要求2所述的代碼優化方法,其特征在于,所述查找所述目標搬移指令在其位于的所述至少兩層循環中的關聯循環變量包括:
6.根據權利要求1-5中任一項所述的代碼優化方法,其特征在于,所述不同級別緩存為所述待優化代碼運行的處理器核的所屬芯片的板卡上的緩存,包括:距離所述處理器核由近及遠方向的核內緩存、核間緩存和片外緩存。
7.根據權利要求1-6中任一項所述的代碼優化方法,其特征在于,所述目標搬移指令為PLD指令或DMA指令。
8.一
9.一種計算機可讀存儲介質,其上存儲有計算機程序,其特征在于,該程序被處理器執行時實現如權利要求1-7中任一項所述的方法。
10.一種計算機設備,包括存儲器、處理器及存儲在存儲器上并可在處理器上運行的計算機程序,其特征在于,所述處理器執行所述程序時實現如權利要求1-7中任一項所述的方法。
...【技術特征摘要】
1.一種代碼優化方法,其特征在于,包括:
2.根據權利要求1所述的代碼優化方法,其特征在于,所述查找所述目標搬移指令在其位于的所述至少兩層循環中的關聯循環變量包括:
3.根據權利要求1或2所述的代碼優化方法,其特征在于,所述根據所述關聯循環變量在所述至少兩層循環中的位置,確定所述目標搬移指令的優化位置包括:
4.根據權利要求1或2所述的代碼優化方法,其特征在于,所述方法還包括:確定所述目標搬移指令在其位于的所述至少兩層循環中沒有與所述目標搬移指令相關的關聯循環變量,
5.根據權利要求2所述的代碼優化方法,其特征在于,所述查找所述目標搬移指令在其位于的所述至少兩層循環中的關聯循環變量包括:
6.根據權利要求...
【專利技術屬性】
技術研發人員:顧思義,
申請(專利權)人:廣州希姆半導體科技有限公司,
類型:發明
國別省市:
還沒有人留言評論。發表了對其他瀏覽者有用的留言會獲得科技券。