本公開涉及處理器領域,特別涉及一種數據訪存方法、裝置、電子設備、存儲介質和程序產品。
背景技術:
1、在現代圖形處理器(graphics?processing?unit,gpu)或其他支持統一地址模型的并行處理器中,通用地址(generic?address)被廣泛用于屏蔽不同存儲空間之間的差異,使軟件能夠以統一的方式生成和傳遞地址。
2、通用地址的生命周期管理主要依賴軟件插樁或運行時檢查,帶來額外開銷,且難以覆蓋所有路徑。
技術實現思路
1、本公開提供一種數據訪存方法、裝置、電子設備、存儲介質和程序產品。
2、第一方面,本公開提供了一種數據訪存方法,應用于處理器,該方法包括:響應于處理器中當前執行的第一處理任務的訪存請求,從處理器的通用地址寄存器中獲取與訪存請求對應的通用虛擬地址;第一處理任務對應第一生成標識;從通用虛擬地址中獲取第二生成標識;第二生成標識用于指示通用虛擬地址在第二處理任務執行期間有效;在第一生成標識與第二生成標識相同的情況下,執行訪存請求的訪存操作。
3、在一種可能得實現方式中,該方法還包括:在啟動第二處理任務時,根據第二處理任務的標識生成第二生成標識,并將第二生成標識保存在第二處理任務的元數據中;在第二處理任務執行期間,響應于生成通用虛擬地址的操作,基于所述第二處理任務對應的基地址和偏移地址生成初始虛擬地址,并從第二處理任務的元數據中獲取第二生成標識;根據初始虛擬地址和第二生成標識生成通用虛擬地址;將通用虛擬地址保存在通用地址寄存器中。
4、在一種可能得實現方式中,根據初始虛擬地址和第二生成標識生成通用虛擬地址,包括:將第二生成標識寫入初始虛擬地址的地址窗口中,得到通用虛擬地址。
5、在一種可能得實現方式中,根據初始虛擬地址和第二生成標識生成通用虛擬地址,包括:將通用地址寄存器的位寬確定為通用虛擬地址的位寬,初始虛擬地址的位寬小于通用虛擬地址的位寬;將初始虛擬地址寫入通用虛擬地址的低位地址區,并將第二生成標識寫入通用虛擬地址中除低位地址區以外的地址區域,得到通用虛擬地址,低位地址區的位寬與初始虛擬地址的位寬相同。
6、在一種可能得實現方式中,該方法還包括:響應于訪存請求,從第一處理任務的元數據中獲取第一生成標識。
7、在一種可能得實現方式中,該方法還包括:在第一生成標識和第二生成標識不同的情況下,執行異常操作;其中,異常操作包括下述至少一項:阻止訪存請求;生成異常信號;返回預設的錯誤結果。
8、在一種可能得實現方式中,該方法還包括下述至少一項:在第一處理任務執行結束的情況下,從第一處理任務的元數據中刪除第一生成標識;在第一處理任務發生上下文切換的情況下,將第一處理任務的元數據中的第一生成標識設置為無效;在處理器的存儲空間重新分配或者初始化的情況下,更新第一處理任務的元數據中的第一生成標識。
9、第二方面,本公開提供了一種數據訪存裝置,應用于處理器,該裝置包括:第一獲取模塊,用于響應于處理器中當前執行的第一處理任務的訪存請求,從處理器的通用地址寄存器中獲取與訪存請求對應的通用虛擬地址,第一處理任務對應第一生成標識;第二獲取模塊,用于從通用虛擬地址中獲取第二生成標識,第二生成標識用于指示通用虛擬地址在第二處理任務執行期間有效;第一執行模塊,用于在第一生成標識與第二生成標識相同的情況下,執行訪存請求的訪存操作。
10、在一種可能的實現方式中,該裝置還包括:第一生成模塊,用于在啟動第二處理任務時,根據第二處理任務的標識生成第二生成標識,并將第二生成標識保存在第二處理任務的元數據中;第二生成模塊,用于在第二處理任務執行期間,響應于生成通用虛擬地址的操作,基于基地址和偏移地址生成初始虛擬地址,并從第二處理任務的元數據中獲取第二生成標識;第三生成模塊,用于根據初始虛擬地址和第二生成標識生成通用虛擬地址;保存模塊,用于將通用虛擬地址保存在通用地址寄存器中。
11、在一種可能的實現方式中,第三生成模塊具體用于:將第二生成標識寫入初始虛擬地址的地址窗口中,得到通用虛擬地址。
12、在一種可能的實現方式中,第三生成模塊具體用于:將通用地址寄存器的位寬確定為通用虛擬地址的位寬,初始虛擬地址的位寬小于通用虛擬地址的位寬;將初始虛擬地址寫入通用虛擬地址的低位地址區,并將第二生成標識寫入通用虛擬地址中除低位地址區以外的地址區域,得到通用虛擬地址,低位地址區的位寬與初始虛擬地址的位寬相同。
13、在一種可能的實現方式中,該裝置還包括:第三獲取模塊,用于響應于訪存請求,從第一處理任務的元數據中獲取第一生成標識。
14、在一種可能的實現方式中,該裝置還包括:第二執行模塊,用于在第一生成標識和第二生成標識不同的情況下,執行異常操作;其中,異常操作包括以下一者或多者:阻止訪存請求;生成異常信號;返回預設的錯誤結果。
15、在一種可能的實現方式中,該裝置還包括:刪除模塊,用于在第一處理任務執行結束的情況下,從第一處理任務的元數據中刪除第一生成標識;和/或,設置模塊,用于在第一處理任務發生上下文切換的情況下,將第一處理任務的元數據中的第一生成標識設置為無效;和/或,更新模塊,用于在處理器的存儲空間重新分配或者初始化的情況下,更新第一處理任務的元數據中的第一生成標識。
16、第三方面,本公開提供了一種電子設備,該電子設備包括:至少一個處理器;以及與至少一個處理器通信連接的存儲器;其中,存儲器存儲有可被至少一個處理器執行的一個或多個計算機程序,一個或多個計算機程序被至少一個處理器執行,以使至少一個處理器能夠執行上述的數據訪存方法。
17、第四方面,本公開提供了一種計算機可讀存儲介質,其上存儲有計算機程序,其中,計算機程序在被處理器執行時實現上述的數據訪存方法。
18、本公開所提供的實施例,響應于處理器中當前執行的第一處理任務的訪存請求,從處理器的通用地址寄存器中獲取與訪存請求對應的通用虛擬地址,并從通用虛擬地址中第二生成標識,該第二生成標識用于指示通用虛擬地址在第二處理任務執行期間有效;在當前執行的第一處理任務對應的第一生成標識與通用虛擬地址中的第二生成標識相同的情況下,執行訪存請求的訪存操作。這樣,在通用地址中引入指示其有效性的生成標識,可以在訪問階段實現硬件自動判斷通用虛擬地址是否有效,防止通用虛擬地址被錯誤使用,同時由硬件直接從通用地址寄存器中讀取通用虛擬地址,并從通用虛擬地址中獲取生成標識進行比對的過程,無需軟件插樁或者運行時檢測,校驗邏輯簡單、延遲低,并覆蓋所有需要使用通用虛擬地址的場景。
19、應當理解,本部分所描述的內容并非旨在標識本公開的實施例的關鍵或重要特征,也不用于限制本公開的范圍。本公開的其它特征將通過以下的說明書而變得容易理解。
1.一種數據訪存方法,其特征在于,應用于處理器,所述方法包括:
2.根據權利要求1所述的方法,其特征在于,所述方法還包括:
3.根據權利要求2所述的方法,其特征在于,所述根據所述初始虛擬地址和所述第二生成標識生成所述通用虛擬地址,包括:
4.根據權利要求2所述的方法,其特征在于,所述根據所述初始虛擬地址和所述第二生成標識生成所述通用虛擬地址,包括:
5.根據權利要求1所述的方法,其特征在于,所述方法還包括:
6.根據權利要求1-5中任一項所述的方法,其特征在于,所述方法還包括:
7.根據權利要求1-5中任一項所述的方法,其特征在于,所述方法還包括下述至少一項:
8.一種數據訪存裝置,其特征在于,應用于處理器,所述裝置包括:
9.一種電子設備,其特征在于,包括:
10.一種計算機可讀存儲介質,其上存儲有計算機程序,其特征在于,所述計算機程序在被處理器執行時實現如權利要求1-7中任一項所述的數據訪存方法。
11.一種計算機程序產品,其特征在于,包括計算機可讀代碼,或者承載有計算機可讀代碼的非易失性計算機可讀存儲介質,當所述計算機可讀代碼在電子設備的處理器中運行時,所述電子設備中的處理器執行如權利要求1-7中任一項所述的數據訪存方法。