本技術(shù)涉及數(shù)據(jù)同步領(lǐng)域,特別涉及一種數(shù)據(jù)同步方法、裝置、處理器、顯卡及計算機設(shè)備。
背景技術(shù):
1、在計算機系統(tǒng)中,處理器通常需要借助外部的硬件執(zhí)行一些數(shù)據(jù)處理,比如處理器借助顯卡中的多媒體編解碼器進行多媒體數(shù)據(jù)編解碼。硬件完成數(shù)據(jù)處理后,需要將數(shù)據(jù)處理結(jié)果同步至處理器,這個過程即被稱為數(shù)據(jù)同步。
2、相關(guān)技術(shù)中,硬件完成數(shù)據(jù)處理后,固件(firmware)上報中斷。驅(qū)動(driver)接收到該中斷后,進一步從固件處獲取中間信息,并通過分析該中間信息確定數(shù)據(jù)處理結(jié)果的存儲地址,從而基于該存儲地址讀取數(shù)據(jù)處理結(jié)果。以多媒體編解碼數(shù)據(jù)同步為例,硬件完成一幀圖像的編解碼后,固件上報中斷;驅(qū)動接收到中斷后,從固件處獲取該幀的幀信息,并分析該幀信息確定編解碼數(shù)據(jù)在顯存中的存儲地址,進而從顯存中讀取該編解碼數(shù)據(jù)。
3、上述數(shù)據(jù)同步過程中,驅(qū)動每次接收到中斷后,都需要與固件進行交互以獲取中間信息,而驅(qū)動與固件之間的頻繁交互會影響數(shù)據(jù)同步效率。
技術(shù)實現(xiàn)思路
1、本技術(shù)提供了一種數(shù)據(jù)同步方法、裝置、處理器、顯卡及計算機設(shè)備,所述技術(shù)方案如下:
2、一方面,本技術(shù)實施例提供了一種數(shù)據(jù)同步方法,所述方法包括:
3、在第一處理器的硬件完成數(shù)據(jù)處理的情況下,所述第一處理器通過固件將目標(biāo)地址寫入地址寄存器,并觸發(fā)中斷,所述目標(biāo)地址為數(shù)據(jù)處理結(jié)果在存儲單元中的存儲地址;
4、在第二處理器接收到所述中斷的情況下,所述第二處理器通過驅(qū)動從所述地址寄存器中讀取所述固件寫入的所述目標(biāo)地址;
5、所述第二處理器通過所述驅(qū)動基于所述目標(biāo)地址從所述存儲單元中讀取所述數(shù)據(jù)處理結(jié)果。
6、另一方面,本技術(shù)實施例提供了一種數(shù)據(jù)同步方法,所述方法由運行驅(qū)動的第二處理器執(zhí)行,所述方法包括:
7、在接收到固件觸發(fā)的中斷的情況下,從地址寄存器中讀取所述固件寫入的目標(biāo)地址;
8、基于所述目標(biāo)地址從存儲單元中讀取數(shù)據(jù)處理結(jié)果,所述數(shù)據(jù)處理結(jié)果由硬件執(zhí)行數(shù)據(jù)處理得到。
9、可選的,所述方法還包括:
10、在讀取到所述數(shù)據(jù)處理結(jié)果的情況下,更新同步列表中所述目標(biāo)地址對應(yīng)的同步狀態(tài),所述同步列表包括各個同步地址以及所述同步地址對應(yīng)的所述同步狀態(tài),所述同步狀態(tài)包括未同步、同步中以及已同步;
11、其中,未同步是所述同步列表中各個同步地址的初始同步狀態(tài),同步中表示所述同步地址對應(yīng)的數(shù)據(jù)等待同步,已同步表示所述同步地址對應(yīng)的數(shù)據(jù)已完成同步。
12、可選的,所述在讀取到所述數(shù)據(jù)處理結(jié)果的情況下,更新同步列表中所述目標(biāo)地址對應(yīng)的同步狀態(tài),包括:
13、在讀取到所述數(shù)據(jù)處理結(jié)果的情況下,確定所述同步列表中與所述目標(biāo)地址一致的目標(biāo)同步地址;
14、將所述目標(biāo)同步地址對應(yīng)的所述同步狀態(tài)由同步中更新為已同步。
15、可選的,所述同步列表中的所述同步地址被循環(huán)使用;
16、所述方法還包括:
17、確定所述同步列表中與所述目標(biāo)地址一致的目標(biāo)同步地址;
18、基于所述目標(biāo)同步地址對應(yīng)的所述同步狀態(tài),向所述固件發(fā)送數(shù)據(jù)處理指令,所述數(shù)據(jù)處理指令用于指示執(zhí)行數(shù)據(jù)處理,并基于所述目標(biāo)地址將所述數(shù)據(jù)處理結(jié)果寫入所述存儲單元;
19、在向所述固件發(fā)送數(shù)據(jù)處理指令后,將所述目標(biāo)同步地址對應(yīng)的所述同步狀態(tài)由更新為同步中。
20、可選的,所述基于所述目標(biāo)同步地址對應(yīng)的所述同步狀態(tài),向所述固件發(fā)送數(shù)據(jù)處理指令,包括:
21、在所述目標(biāo)同步地址對應(yīng)的所述同步狀態(tài)為未同步的情況下,向所述固件發(fā)送所述數(shù)據(jù)處理指令;
22、或,
23、在所述目標(biāo)同步地址對應(yīng)的所述同步狀態(tài)為已同步的情況下,向所述固件發(fā)送所述數(shù)據(jù)處理指令。
24、可選的,所述基于所述目標(biāo)同步地址對應(yīng)的所述同步狀態(tài),向所述固件發(fā)送數(shù)據(jù)處理指令,還包括:
25、在所述目標(biāo)同步地址對應(yīng)的所述同步狀態(tài)為同步中的情況下,等待同步狀態(tài)更新;
26、在所述目標(biāo)同步地址對應(yīng)的所述同步狀態(tài)由同步中更新為已同步的情況下,向所述固件發(fā)送所述數(shù)據(jù)處理指令。
27、可選的,所述同步列表中的所述同步地址被循環(huán)使用;
28、所述方法還包括:
29、接收所述固件發(fā)送的列表配置指令,所述列表配置指令中包含循環(huán)使用的所述同步地址;
30、基于所述列表配置指令配置所述同步列表,并初始化所述同步列表中各個所述同步地址對應(yīng)的所述同步狀態(tài)。
31、可選的,所述方法還包括:
32、接收所述固件發(fā)送的寄存器配置指令,所述寄存器配置指令用于配置所述地址寄存器的寄存器索引;
33、存儲所述寄存器配置指令中的所述寄存器索引;
34、所述從地址寄存器中讀取所述固件寫入的目標(biāo)地址,包括:
35、從所述寄存器索引所指示的所述地址寄存器中讀取所述固件寫入的所述目標(biāo)地址。
36、可選的,所述硬件為多媒體編解碼器,所述數(shù)據(jù)處理結(jié)果為多媒體編解碼數(shù)據(jù),所述目標(biāo)地址為所述多媒體編解碼數(shù)據(jù)在顯存中的存儲地址。
37、另一方面,本技術(shù)實施例提供了一種數(shù)據(jù)同步方法,所述方法由運行固件的第一處理器執(zhí)行,所述方法包括:
38、在完成數(shù)據(jù)處理的情況下,將目標(biāo)地址寫入地址寄存器,并觸發(fā)中斷,所述目標(biāo)地址為數(shù)據(jù)處理結(jié)果在存儲單元中的存儲地址,所述中斷用于觸發(fā)中斷讀取所述數(shù)據(jù)處理結(jié)果。
39、可選的,所述方法還包括:
40、接收所述驅(qū)動發(fā)送的數(shù)據(jù)處理指令,所述數(shù)據(jù)處理指令用于指示執(zhí)行數(shù)據(jù)處理,并基于所述目標(biāo)地址將所述數(shù)據(jù)處理結(jié)果寫入所述存儲單元。
41、可選的,所述驅(qū)動維護有同步列表,所述同步列表包括各個同步地址以及所述同步地址對應(yīng)的同步狀態(tài),所述同步狀態(tài)包括未同步、同步中以及已同步;所述同步列表中的所述同步地址被循環(huán)使用;
42、所述方法還包括:
43、向所述驅(qū)動發(fā)送列表配置指令,所述列表配置指令中包含循環(huán)使用的所述同步地址。
44、可選的,所述方法還包括:
45、向所述驅(qū)動發(fā)送寄存器配置指令,所述寄存器配置指令用于配置所述地址寄存器的寄存器索引;
46、所述在完成數(shù)據(jù)處理的情況下,將目標(biāo)地址寫入地址寄存器,包括:
47、在完成數(shù)據(jù)處理的情況下,將所述目標(biāo)地址寫入所述寄存器索引所指示的所述地址寄存器。
48、可選的,所述硬件為多媒體編解碼器,所述數(shù)據(jù)處理結(jié)果為多媒體編解碼數(shù)據(jù),所述目標(biāo)地址為所述多媒體編解碼數(shù)據(jù)在顯存中的存儲地址。
49、另一方面,本技術(shù)實施例提供了一種數(shù)據(jù)同步裝置,所述裝置包括:
50、第一讀取模塊,用于在接收到固件觸發(fā)的中斷的情況下,從地址寄存器中讀取所述固件寫入的目標(biāo)地址;
51、第二讀取模塊,用于基于所述目標(biāo)地址從存儲單元中讀取數(shù)據(jù)處理結(jié)果,所述數(shù)據(jù)處理結(jié)果由硬件執(zhí)行數(shù)據(jù)處理得到。
52、另一方面,本技術(shù)實施例提供了一種數(shù)據(jù)同步裝置,所述裝置包括:
53、寫入模塊,用于在完成數(shù)據(jù)處理的情況下,將目標(biāo)地址寫入地址寄存器,所述目標(biāo)地址為數(shù)據(jù)處理結(jié)果在存儲單元中的存儲地址;
54、中斷模塊,用于觸發(fā)中斷,所述中斷用于觸發(fā)中斷讀取所述數(shù)據(jù)處理結(jié)果。
55、另一方面,本技術(shù)實施例提供了一種處理器,所述處理器用于執(zhí)行如上述方面所述的數(shù)據(jù)同步方法。
56、另一方面,本技術(shù)實施例提供了一種顯卡,所述顯卡用于執(zhí)行如上述方面所述的數(shù)據(jù)同步方法。
57、另一方面,本技術(shù)實施例提供了一種計算機可讀存儲介質(zhì),所述計算機可讀存儲介質(zhì)中存儲有至少一條計算機指令,所述至少一條計算機指令被加載并執(zhí)行以實現(xiàn)如上述方面所述的數(shù)據(jù)同步方法。
58、另一方面,本技術(shù)實施例提供了一種計算機程序產(chǎn)品,所述計算機程序產(chǎn)品包括計算機指令,所述計算機指令存儲在計算機可讀存儲介質(zhì)中,處理器從所述計算機可讀存儲介質(zhì)中獲取所述計算機指令,所述處理器執(zhí)行所述計算機指令以實現(xiàn)如上述方面所述的數(shù)據(jù)同步方法。
59、本技術(shù)提供的技術(shù)方案帶來的有益效果至少包括:
60、本技術(shù)實施例中,新增用于記錄數(shù)據(jù)處理結(jié)果在存儲單元中的存儲地址的地址寄存器。第一處理器通過固件在硬件完成數(shù)據(jù)處理的情況下,將數(shù)據(jù)處理結(jié)果在存儲單元中的存儲地址寫入該地址寄存器并觸發(fā)中斷。由于驅(qū)動同樣具有訪問該地址寄存器的權(quán)限,因此接收到中斷后,第二處理器可以通過驅(qū)動直接從地址寄存器中讀取該存儲地址,無需與固件進行額外交互,簡化了驅(qū)動與固件之間的交互流程,提高了驅(qū)動從存儲單元中獲取數(shù)據(jù)處理結(jié)果的效率,從而提高了數(shù)據(jù)同步效率。