本技術(shù)涉及輪詢,特別是涉及一種多單元輪詢方法、裝置、計算機設(shè)備和存儲介質(zhì)。
背景技術(shù):
1、隨著現(xiàn)代電子系統(tǒng)的復(fù)雜性不斷增加,尤其是在嵌入式系統(tǒng)和多核處理器架構(gòu)中,實時監(jiān)測和數(shù)據(jù)采集的需求顯著提升。這些系統(tǒng)需要處理大量并發(fā)數(shù)據(jù)流,并在毫秒級別內(nèi)做出響應(yīng),以滿足應(yīng)用如智能家居、自動駕駛、工業(yè)控制等領(lǐng)域的要求。現(xiàn)有技術(shù)的輪詢方法通常依賴中央處理單元依次查詢多個數(shù)據(jù)源,這不僅導(dǎo)致了響應(yīng)時間的顯著延遲,每個數(shù)據(jù)源的輪詢都可能因網(wǎng)絡(luò)延遲或處理瓶頸而被阻塞,從而增加整體的等待時間,使得處理效率低下。并且會增加性能損耗和系統(tǒng)能耗,單處理單元的設(shè)計在面對大量并發(fā)請求時,難以有效分配資源,造成系統(tǒng)負載過重。
技術(shù)實現(xiàn)思路
1、基于此,有必要針對上述技術(shù)問題,提供一種能夠減輕中央處理單元的輪詢負擔(dān),提高系統(tǒng)性能和響應(yīng)速度的多單元輪詢方法、裝置、計算機設(shè)備和存儲介質(zhì)。
2、一方面,提供一種多單元輪詢方法,所述方法包括:
3、每個輪詢單元根據(jù)預(yù)先配置的參數(shù)進行輪詢,讀取目標地址數(shù)據(jù),其中,所述輪詢單元的參數(shù)包括以下至少一項:預(yù)期數(shù)據(jù)、輪詢間隔、輪詢最大次數(shù);
4、所述每個輪詢單元將所述目標地址數(shù)據(jù)與預(yù)期數(shù)據(jù)進行對比,得到輪詢結(jié)果;
5、所述輪詢單元將所述輪詢結(jié)果記錄至完成寄存器并提交匯報請求至總引擎;
6、響應(yīng)于收到所述匯報請求,所述總引擎將所述匯報請求加入請求隊列;
7、響應(yīng)于所處請求隊列非空且中央處理單元開啟中斷使能,所述總引擎通過中斷方式向所述中央處理單元發(fā)送輪詢完成通知;
8、所述中央處理單元根據(jù)所述輪詢完成通知,從所述完成寄存器中讀取所述輪詢結(jié)果。
9、在其中一個實施例中,包括:所述輪詢單元根據(jù)所述輪詢單元的參數(shù)讀取目標地址數(shù)據(jù),包括:
10、所述輪詢單元根據(jù)所述輪詢單元的參數(shù)讀取第一目標地址,
11、將所述第一目標地址狀態(tài)比特位置1,與狀態(tài)位無關(guān)的比特位置0,用以過濾與狀態(tài)不相關(guān)的比特位,得到第二目標地址;
12、將所述第二目標地址與輪詢單元內(nèi)設(shè)置的對應(yīng)屏蔽寄存器的值進行按位與操作,得到所述目標地址數(shù)據(jù)。
13、在其中一個實施例中,包括:所述每個輪詢單元將所述目標地址數(shù)據(jù)與預(yù)期數(shù)據(jù)進行對比,得到輪詢結(jié)果,包括:
14、若所述目標地址數(shù)據(jù)與預(yù)期數(shù)據(jù)相同,則輪詢結(jié)果記為成功,
15、若所述目標地址數(shù)據(jù)與預(yù)期數(shù)據(jù)不同,則判斷輪詢次數(shù)是否大于所述輪詢最大次數(shù);
16、若輪詢次數(shù)小于或等于所述輪詢最大次數(shù),則再次進入輪詢,直至輪詢結(jié)果記為成功和/或所述輪詢次數(shù)達到所述輪詢最大次數(shù),
17、若輪詢次數(shù)大于所述輪詢最大次數(shù),則輪詢結(jié)果記為失??;
18、其中,所述輪詢單元每完成一次輪詢,所述輪詢次數(shù)遞增;所述再次進入輪詢前,需要等待一次輪詢間隔時間。
19、在其中一個實施例中,還包括:所述總引擎通過中斷方式向所述中央處理單元發(fā)送輪詢完成通知,包括獲取輪詢單元標識符:
20、所述中央處理單元收到中斷信號后,預(yù)設(shè)時刻中斷當(dāng)前任務(wù)執(zhí)行并讀取匯報寄存器;
21、根據(jù)所述匯報寄存器獲取提交匯報請求的輪詢單元標識符。
22、在其中一個實施例中,還包括:所述中斷方式包括單次中斷,
23、響應(yīng)于每當(dāng)有新的匯報請求加入請求隊列,則所述總引擎觸發(fā)一次中斷,
24、所述中央處理單元收到輪詢完成通知,預(yù)設(shè)時刻中斷當(dāng)前任務(wù)執(zhí)行,并根據(jù)中斷讀取和/或處理請求隊列中的一個匯報請求;
25、所述中斷方式還包括批量中斷,
26、響應(yīng)于有多個待處理匯報請求加入請求隊列,則所述總引擎判斷當(dāng)前多個待處理匯報請求數(shù)量是否超過設(shè)定的閾值,
27、若多個待處理匯報請求數(shù)量超過設(shè)定的閾值,則所述總引擎觸發(fā)一次中斷,
28、所述中央處理單元收到輪詢完成通知,預(yù)設(shè)時刻中斷當(dāng)前任務(wù)執(zhí)行,并根據(jù)中斷讀取和/或處理請求隊列中兩個及兩個以上匯報請求;
29、若多個待處理匯報請求數(shù)量未超過設(shè)定的閾值,則所述總引擎繼續(xù)等待新的匯報請求。
30、在其中一個實施例中,還包括:所述請求隊列包括主隊列與優(yōu)先隊列,
31、響應(yīng)于輪詢單元帶有高優(yōu)先級輪詢單元標識符,則所述總引擎將帶有高優(yōu)先級輪詢單元標識符的輪詢單元請求放入所述優(yōu)先隊列,
32、所述中央處理單元優(yōu)先處理所述優(yōu)先隊列中的請求;
33、響應(yīng)于輪詢單元不帶有高優(yōu)先級輪詢單元標識符,則所述總引擎將不帶有高優(yōu)先級輪詢單元標識符的輪詢單元請求放入所述主隊列,
34、所述中央處理單元按照放入順序處理所述主隊列的請求。
35、在其中一個實施例中,還包括:所述中央處理單元從所述完成寄存器中讀取所述輪詢結(jié)果,包括:
36、所述中央處理單元根據(jù)所述輪詢單元標識符定位輪詢完成的輪詢單元;
37、讀取所述輪詢完成的輪詢單元的完成寄存器信息,獲取所述輪詢結(jié)果;
38、所述完成寄存器信息被所述中央處理單元讀取后自動清除;
39、其中,所述完成寄存器信息包括輪詢單元標識符、輪詢結(jié)果、輪詢次數(shù)、等待是否超時、目標地址數(shù)據(jù)。
40、另一方面,提供了一種多單元輪詢裝置,所述裝置包括:
41、輪詢模塊,用于每個輪詢單元根據(jù)預(yù)先配置的參數(shù)進行輪詢,讀取目標地址數(shù)據(jù),其中,所述輪詢單元的參數(shù)包括以下至少一項:預(yù)期數(shù)據(jù)、輪詢間隔、輪詢最大次數(shù);
42、比對模塊,用于所述每個輪詢單元將所述目標地址數(shù)據(jù)與預(yù)期數(shù)據(jù)進行對比,得到輪詢結(jié)果;
43、匯報模塊,用于所述輪詢單元將所述輪詢結(jié)果記錄至完成寄存器并提交匯報請求至總引擎;
44、中斷通知模塊,用于響應(yīng)于收到所述匯報請求,所述總引擎將所述匯報請求加入請求隊列;響應(yīng)于所處請求隊列非空且中央處理單元開啟中斷使能,所述總引擎通過中斷方式向所述中央處理單元發(fā)送輪詢完成通知;
45、讀取模塊,用于所述中央處理單元根據(jù)所述輪詢完成通知,從所述完成寄存器中讀取所述輪詢結(jié)果。
46、再一方面,提供了一種計算機設(shè)備,包括存儲器、處理器及存儲在存儲器上并可在處理器上運行的計算機程序,所述處理器執(zhí)行所述計算機程序時實現(xiàn)以下步驟:
47、每個輪詢單元根據(jù)預(yù)先配置的參數(shù)進行輪詢,讀取目標地址數(shù)據(jù),其中,所述輪詢單元的參數(shù)包括以下至少一項:預(yù)期數(shù)據(jù)、輪詢間隔、輪詢最大次數(shù);
48、所述每個輪詢單元將所述目標地址數(shù)據(jù)與預(yù)期數(shù)據(jù)進行對比,得到輪詢結(jié)果;
49、所述輪詢單元將所述輪詢結(jié)果記錄至完成寄存器并提交匯報請求至總引擎;
50、響應(yīng)于收到所述匯報請求,所述總引擎將所述匯報請求加入請求隊列;
51、響應(yīng)于所處請求隊列非空且中央處理單元開啟中斷使能,所述總引擎通過中斷方式向所述中央處理單元發(fā)送輪詢完成通知;
52、所述中央處理單元根據(jù)所述輪詢完成通知,從所述完成寄存器中讀取所述輪詢結(jié)果。
53、又一方面,提供了一種計算機可讀存儲介質(zhì),其上存儲有計算機程序,所述計算機程序被處理器執(zhí)行時實現(xiàn)以下步驟:
54、每個輪詢單元根據(jù)預(yù)先配置的參數(shù)進行輪詢,讀取目標地址數(shù)據(jù),其中,所述輪詢單元的參數(shù)包括以下至少一項:預(yù)期數(shù)據(jù)、輪詢間隔、輪詢最大次數(shù);
55、所述每個輪詢單元將所述目標地址數(shù)據(jù)與預(yù)期數(shù)據(jù)進行對比,得到輪詢結(jié)果;
56、所述輪詢單元將所述輪詢結(jié)果記錄至完成寄存器并提交匯報請求至總引擎;
57、響應(yīng)于收到所述匯報請求,所述總引擎將所述匯報請求加入請求隊列;
58、響應(yīng)于所處請求隊列非空且中央處理單元開啟中斷使能,所述總引擎通過中斷方式向所述中央處理單元發(fā)送輪詢完成通知;
59、所述中央處理單元根據(jù)所述輪詢完成通知,從所述完成寄存器中讀取所述輪詢結(jié)果。
60、上述多單元輪詢方法中,通過將輪詢?nèi)蝿?wù)分配給多個獨立的輪詢單元,實現(xiàn)了并行處理。這種設(shè)計使得每個輪詢單元能夠根據(jù)預(yù)設(shè)的參數(shù)(如預(yù)期數(shù)據(jù)、輪詢間隔和輪詢最大次數(shù))獨立執(zhí)行狀態(tài)查詢,提升了數(shù)據(jù)獲取的速度與效率。輪詢單元在獲取目標地址數(shù)據(jù)后,輪詢單元與預(yù)期數(shù)據(jù)進行比對,快速得出輪詢結(jié)果,并將其記錄至完成寄存器。一旦輪詢結(jié)果生成,輪詢單元會立即向總引擎提交匯報請求。總引擎在接收到這些請求后,及時將其加入請求隊列。當(dāng)請求隊列非空時,系統(tǒng)通過開啟中斷使能的方式通知中央處理單元,確保中央處理單元可以立即處理這些輪詢結(jié)果,而不必在輪詢?nèi)蝿?wù)完成前等待,顯著減少了響應(yīng)時間。這種機制有效地減輕了中央處理單元在輪詢過程中的負擔(dān),使其可以專注于其他任務(wù),從而提高了系統(tǒng)的整體性能和穩(wěn)定性。通過上述方法,系統(tǒng)的實時性得以提升,能夠更快響應(yīng)狀態(tài)變化,為應(yīng)用程序提供了更高的可靠性和靈活性,通過精確的配置和高效的工作流,該方法不僅優(yōu)化了資源利用,還為復(fù)雜系統(tǒng)的設(shè)計與調(diào)試提供了便利。