一種中斷執行方法及裝置製造方法
2023-05-29 20:52:31
一種中斷執行方法及裝置製造方法
【專利摘要】本申請實施例提供了一種中斷執行方法及裝置,通過確定當前負載非最大的CPU核、以及負載非最大的時鐘源的方式,由當前負載非最大的CPU核、以負載非最大的時鐘為中斷定時器,執行第一中斷,所以,與現有技術相比,可以降低中斷被延時響應的可能性。
【專利說明】一種中斷執行方法及裝置
【技術領域】
[0001] 本申請涉及計算機領域,尤其涉及一種中斷執行方法及裝置。
【背景技術】
[0002] 基於對稱多處理結構(Symmetric Multi-Processing,SMP)多核CPU架構上廣泛 使用的通用作業系統如Linux、Windows、Vxworks等,對定時中斷的管理普遍採用固定中斷 源(HPET)的分配方式,即使用者在申請前必須確定本中斷所綁定的定時器中斷源,且用於 中斷響應的CPU核也是共享或隨機的。
[0003] 在這種機制下,在中斷被執行時,如果本中斷所綁定的定時器同時負責其它中斷 計時、或者執行此中斷的CPU核上的任務過多,使得定時器或者CPU無暇顧及本中斷,從而 導致本中斷響應延時的問題。
[0004] 申請內容
[0005] 本申請實施例提供了一種中斷執行方法及裝置,目的在於解決中斷響應延時的問 題。
[0006] 為了實現上述目的,本申請實施例提供了以下技術方案:
[0007] -種中斷執行方法,包括:
[0008] 從多個CPU核中,確定當前負載非最大的CPU核;
[0009] 從多個時鐘源中,選定當前負載非最大的第一時鐘源;
[0010] 由所述當前負載非最大的CPU核、以所述第一時鐘為中斷定時器,執行第一中斷。
[0011] 可選地,所述從多個CPU核中,確定當前負載非最大的CPU核包括:
[0012] 按照先掃描執行中斷任務的CPU核,後掃描執行非中斷任務的CPU核的順序:統計 (PU核i上的中斷源許可標識和任務節點,CPU核i的被佔用權值=中斷源許可標識的數量 *第一數值+任務節點的數量*第二數值,其中,所述第一數值和所述第二數值均大於1,i =1、2……N,N為大於1的整數,表示系統中CPU核的數量;
[0013] 確定所述N個CPU核中、被佔用權值最小的CPU核為當前負載最小的CPU核。
[0014] 可選地,所述從多個時鐘源中,選定第一時鐘源包括:
[0015] 按照先掃描獨佔時鐘源後掃描共享時鐘源的順序:統計時鐘源i的狀態標識,鍾 源i的空閒權值=未被使用狀態標識的數量*第三數值+未被共享狀態標識的數量*第四 數值,其中,所述第三數值和所述第四數值均大於1,i = 1、2……M,Μ為大於1的整數,表 示系統中CPU時鐘源的數量;
[0016] 從所述Μ個時鐘源中,選擇空閒權值最大的時鐘源為當前負載最小的第一時鐘 源。
[0017] 可選地,在所述由所述當前負載非最大的CPU核、以所述第一時鐘為中斷定時器, 執行第一中斷之前,還包括:
[0018] 將所述當前負載最小的CPU核註冊的非第一中斷過程的其它任務遷移到其它CPU 核上。
[0019] 可選地,所述從多個CPU核中,確定當前負載非最大的CPU核,從多個時鐘源中,選 定當前負載非最大的第一時鐘源包括:
[0020] 以預設周期,確定當前負載最小的CPU核,從多個時鐘源中,選定當前負載最小的 第一時鐘源。
[0021] 一種中斷執行裝置,包括:
[0022] CPU確定模塊,用於從多個CPU核中,確定當前負載非最大的CPU核;
[0023] 時鐘選定模塊,用於從多個時鐘源中,選定當前負載非最大的第一時鐘源;
[0024] 中斷執行模塊,用於由所述當前負載非最大的CPU核、以所述第一時鐘為中斷定 時器,執行第一中斷。
[0025] 可選地,所述CPU確定模塊包括:
[0026] 第一計算單元,用於按照先掃描執行中斷任務的CPU核,後掃描執行非中斷任務 的CPU核的順序:統計CPU核i上的中斷源許可標識和任務節點,CPU核i的被佔用權值= 中斷源許可標識的數量*第一數值+任務節點的數量*第二數值,其中,所述第一數值和所 述第二數值均大於1,i = 1、2……N,N為大於1的整數,表示系統中CPU核的數量;
[0027] 第一確定單元,用於確定所述N個CPU核中、被佔用權值最小的CPU核為當前負載 最小的CPU核。
[0028] 可選地,所述時鐘選定模塊包括:
[0029] 第二計算單元,用於按照先掃描獨佔時鐘源後掃描共享時鐘源的順序:統計時鐘 源i的狀態標識,鍾源i的空閒權值=未被使用狀態標識的數量*第三數值+未被共享狀 態標識的數量*第四數值,其中,所述第三數值和所述第四數值均大於1,i = 1、2……M,Μ 為大於1的整數,表示系統中CPU時鐘源的數量;
[0030] 第二確定單元,用於從所述Μ個時鐘源中,選擇空閒權值最大的時鐘源為當前負 載最小的第一時鐘源。
[0031] 可選地,還包括:
[0032] 遷移模塊,用於在所述由所述當前負載非最大的CPU核、以所述第一時鐘為中斷 定時器,執行第一中斷之前,將所述當前負載最小的CPU核註冊的非第一中斷過程的其它 任務遷移到其它CPU核上。
[0033] 可選地,所述CPU確定模塊,用於從多個CPU核中,確定當前負載非最大的CPU核 包括:
[0034] 所述CPU確定模塊具體用於,以預設周期、從多個CPU核中,確定當前負載最小的 (PU 核;
[0035] 所述時鐘選定模塊,用於從多個時鐘源中,選定當前負載非最大的第一時鐘源包 括:
[0036] 所述時鐘選定模塊具體用於,以預設周期、從多個時鐘源中,選定當前負載最小的 第一時鐘源。
[0037] 本申請實施例所述的中斷執行方法及裝置,通過確定當前負載非最大的CPU核、 以及負載非最大的時鐘源的方式,由當前負載非最大的CPU核、以負載非最大的時鐘為中 斷定時器,執行第一中斷,所以,與現有技術相比,可以降低中斷被延時響應的可能性。
【專利附圖】
【附圖說明】
[0038] 為了更清楚地說明本申請實施例或現有技術中的技術方案,下面將對實施例或現 有技術描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本 申請的一些實施例,對於本領域普通技術人員來講,在不付出創造性勞動的前提下,還可以 根據這些附圖獲得其他的附圖。
[0039] 圖1為本申請實施例公開的一種中斷執行方法的流程圖;
[0040] 圖2為本申請實施例公開的又一種中斷執行方法的流程圖;
[0041] 圖3為本申請實施例公開的又一種中斷執行方法的流程圖;
[0042] 圖4為本申請實施例公開的一種中斷執行裝置的結構示意圖。
【具體實施方式】
[0043] 本申請實施例公開了一種中斷執行方法及裝置,可以應用於基於對稱多處理結構 (Symmetric Multi-Processing, SMP)多核CPU架構上廣泛使用的通用作業系統如Linux、 Windows、Vxworks等,可以應用在大型複雜業務模型的多模型並發集群仿真或特殊定製平 臺的高精度實時仿真這兩種應用場景中,在通用平臺上實現〇. 〇5mS-lmS之間的系統仿真 周期。
[0044] 下面將結合本申請實施例中的附圖,對本申請實施例中的技術方案進行清楚、完 整地描述,顯然,所描述的實施例僅僅是本申請一部分實施例,而不是全部的實施例。基於 本申請中的實施例,本領域普通技術人員在沒有做出創造性勞動前提下所獲得的所有其他 實施例,都屬於本申請保護的範圍。
[0045] 本申請實施例公開的一種中斷執行方法,如圖1所示,包括以下步驟:
[0046] S101 :從多個CPU核中,確定當前負載非最大的CPU核;
[0047] S102 :從多個時鐘源中,選定負載非最大的第一時鐘源;
[0048] 本實施例中,所述時鐘可以為高精度時鐘。
[0049] S103 :由所述當前負載非最大的CPU核、以所述第一時鐘為中斷定時器,執行第一 中斷。
[0050] 在現有技術中,需要上層編程人員為中斷指定時鐘源,且執行中斷的CPU核為共 享或隨機分配的,因為系統中的時鐘源和CPU核通常情況下執行多線任務,所以,在時鐘源 或者CPU核負載過大的情況下,其剩餘資源不足以支撐中斷的執行,則會暫緩執行中斷,待 其被佔用的資源被釋放後,才能執行中斷,因此,中斷會被延遲執行,從而對終端響應的實 時性產生延遲時間漂移,給系統的響應速度帶來很大的不確定性。
[0051] 而本實施例所述方法,由當前負載非最大的CPU核、以負載非最大的時鐘為中斷 定時器,執行第一中斷,因此,能夠避免對負載最大的CPU和以及時鐘源的使用,從而有效 避免中斷被延時的情況。
[0052] 在上述實施例中,為了達到避免中斷被延時執行的最優效果,可以選擇負載最小 的CPU核及時鐘源,本申請實施例公開的又一種中斷執行方法,如圖2所示,包括步驟:
[0053] S201 :按照先掃描執行中斷任務的CPU核,後掃描執行非中斷任務的CPU核的順 序:統計CPU核i上的中斷源許可標識和任務節點;
[0054] 其中,i = 1、2......N,N為大於1的整數,表示系統中CPU核的數量。
[0055] S202 :計算CPU核i的被佔用權值=中斷源許可標識的數量*第一數值+任務節 點的數量*第二數值;
[0056] 其中,所述第一數值和所述第二數值均大於1,本實施例中,第一數值可以為10, 第二數值可以為5。從計算被佔用權值的公式可以看出,被佔用權值越大,CPU核的負載越 大。
[0057] S203 :確定所述N個CPU核中、被佔用權值最小的CPU核為當前負載最小的CPU 核;
[0058] S204 :按照先掃描獨佔時鐘源後掃描共享時鐘源的順序,統計時鐘源i的狀態標 識;
[0059] 其中,i = 1、2......M,Μ為大於1的整數,表示系統中CPU時鐘源的數量。
[0060] S205 :計算鍾源i的空閒權值=未被使用狀態標識的數量*第三數值+未被共享 狀態標識的數量*第四數值;
[0061] 其中,所述第三數值和所述第四數值均大於1,本實施例中,第三數值和第四數值 都可以為10。從上述計算空閒權值的公式可以看出,空閒權值越大,時鐘源的負載越小。
[0062] S206 :從所述Μ個時鐘源中,選擇空閒權值最大的時鐘源為負載最小的第一時鐘 源;
[0063] S207 :由當前負載最小的CPU核、以第一時鐘為中斷定時器,執行第一中斷。
[0064] 本實施例中,因為執行中斷的CPU核的負載在系統中所有的CPU核中最小,時鐘源 的負載同樣為系統中多個時鐘源中最小,因此,能夠最下限度提升中斷執行的實時控制精 度。
[0065] 並且,因為依據負載選用CPU核和時鐘源,所以,使得仿真模型編程人員可以從為 中斷分配時鐘源和CPU核的工作中解脫出來,對編程人員的作業系統平臺業務知識的要求 更低,從而使得仿真平臺的應用更為便捷。
[0066] 圖3為本申請實施例公開的又一種中斷執行方法,包括:
[0067] S301 :以預設周期,確定當前負載最小的CPU核,並從多個時鐘源中,選定第一時 鍾源;
[0068] 確定當前負載最小的CPU核以及選定第一時鐘源的方法可以參見上述實施例,這 裡不再贅述。
[0069] 本實施例中,以預設周期確定當前負載最小的CPU核以及選定第一時鐘源,可以 使得系統保持對CPU核以及時鐘源的負載的監控,在需要進行中斷時,可以更快地確定出 當前負載最小的CPU核以及第一時鐘源,從而更能夠保證中斷控制的實時性。
[0070] S302 :將所述當前負載最小的CPU核註冊的非第一中斷過程的其它任務遷移到其 它CPU核上;
[0071] 此步驟的優點在於,當前負載最小的CPU核上的其它任務啟動時,可能會造成此 (PU核的繁忙,從而增大此CPU核的負載,在此情況下,由此CPU核的執行的中斷可能還有被 延時或丟失,而將其中的其它任務遷出,則可以避免上述問題。
[0072] S303 :由所述當前負載最小的CPU核、以所述第一時鐘為中斷定時器,執行第一中 斷。
[0073] 本實施例所述的方法,對系統中的CPU核和時鐘源的負載情況進行周期性監控, 並且對負載最小的CPU核進行了進一步優化,更能保證中斷的實時控制。
[0074] 申請人:在研究的過程中通過仿真發現,本申請中實施例所述方法,實現方式靈活 高效,在不損害系統架構和兼容性的前提下,可以將系統仿真模型的實時調度時間控制在 uS級的水平。在大型通用平臺上實現了傳統的小型定製平臺才能達到的控制級別,且能凸 顯通用平臺的多模型並行仿真解算和與仿真軟體工具平臺保持最大程度的兼容性的優勢。
[0075] 與上述方法實施例相對應的,本申請實施例還公開了一種中斷執行裝置,如圖4 所示,包括:
[0076] CPU確定模塊401,用於從多個CPU核中,確定當前負載非最大的CPU核;
[0077] 時鐘選定模塊402,用於從多個時鐘源中,選定負載非最大的第一時鐘源;
[0078] 具體地,CPU確定模塊可以以預設周期、從多個CPU核中,確定當前負載最小的CPU 核,所述時鐘選定模塊也可以以預設周期、從多個時鐘源中,選定負載最小的第一時鐘源。
[0079] 中斷執行模塊403,用於由所述當前負載非最大的CPU核、以所述第一時鐘為中斷 定時器,執行第一中斷。
[0080] 其中,可選地,所述CPU確定模塊401可以具體包括:
[0081] 第一計算單元4011,用於按照先掃描執行中斷任務的CPU核,後掃描執行非中斷 任務的CPU核的順序:統計CPU核i上的中斷源許可標識和任務節點,CPU核i的被佔用權 值=中斷源許可標識的數量*第一數值+任務節點的數量*第二數值,其中,所述第一數值 和所述第二數值均大於1,i = 1、2……N,N為大於1的整數,表示系統中CPU核的數量;
[0082] 第一確定單元4012,用於確定所述N個CPU核中、被佔用權值最小的CPU核為當前 負載最小的CPU核。
[0083] 所述時鐘選定模塊402包括:
[0084] 第二計算單元4021,用於按照先掃描獨佔時鐘源後掃描共享時鐘源的順序:統計 時鐘源i的狀態標識,鍾源i的空閒權值=未被使用狀態標識的數量*第三數值+未被共 享狀態標識的數量*第四數值,其中,所述第三數值和所述第四數值均大於l,i = 1、2…… M,Μ為大於1的整數,表示系統中CPU時鐘源的數量;
[0085] 第二確定單元4022,用於從所述Μ個時鐘源中,選擇空閒權值最大的時鐘源為第 一時鐘源。
[0086] 進一步地,本實施例所述裝置,還可以包括:遷移模塊404,用於在所述由所述當 前負載非最大的CPU核、以所述第一時鐘為中斷定時器,執行第一中斷之前,將所述當前負 載最小的CPU核註冊的非第一中斷過程的其它任務遷移到其它CPU核上。
[0087] 本申請實施例所述的中斷執行裝置,通過確定當前負載非最大的CPU核、以及負 載非最大的時鐘源的方式,由當前負載非最大的CPU核、以負載非最大的時鐘為中斷定時 器,執行第一中斷,所以,與現有技術相比,可以降低中斷被延時響應的可能性。
[0088] 本申請實施例方法所述的功能如果以軟體功能單元的形式實現並作為獨立的產 品銷售或使用時,可以存儲在一個計算設備可讀取存儲介質中。基於這樣的理解,本申請實 施例對現有技術做出貢獻的部分或者該技術方案的部分可以以軟體產品的形式體現出來, 該軟體產品存儲在一個存儲介質中,包括若干指令用以使得一臺計算設備(可以是個人計 算機,伺服器,移動計算設備或者網絡設備等)執行本申請各個實施例所述方法的全部或 部分步驟。而前述的存儲介質包括:U盤、移動硬碟、只讀存儲器(ROM, Read-Only Memory)、 隨機存取存儲器(RAM,Random Access Memory)、磁碟或者光碟等各種可以存儲程序代碼的 介質。
[0089] 本說明書中各個實施例採用遞進的方式描述,每個實施例重點說明的都是與其它 實施例的不同之處,各個實施例之間相同或相似部分互相參見即可。
[0090] 對所公開的實施例的上述說明,使本領域專業技術人員能夠實現或使用本申請。 對這些實施例的多種修改對本領域的專業技術人員來說將是顯而易見的,本文中所定義的 一般原理可以在不脫離本申請的精神或範圍的情況下,在其它實施例中實現。因此,本申請 將不會被限制於本文所示的這些實施例,而是要符合與本文所公開的原理和新穎特點相一 致的最寬的範圍。
【權利要求】
1. 一種中斷執行方法,其特徵在於,包括: 從多個CPU核中,確定當前負載非最大的CPU核; 從多個時鐘源中,選定當前負載非最大的時鐘源為第一時鐘源; 由所述當前負載非最大的CPU核、以所述第一時鐘源為中斷定時器,執行第一中斷。
2. 根據權利要求1所述的方法,其特徵在於,所述從多個CPU核中,確定當前負載非最 大的CPU核包括: 按照先掃描執行中斷任務的CPU核,後掃描執行非中斷任務的CPU核的順序:統計CPU 核i上的中斷源許可標識和任務節點,CPU核i的被佔用權值=中斷源許可標識的數量* 第一數值+任務節點的數量*第二數值,其中,所述第一數值和所述第二數值均大於1,i = 1、2……N,N為大於1的整數,表示系統中CPU核的數量; 確定所述N個CPU核中、被佔用權值最小的CPU核為當前負載最小的CPU核。
3. 根據權利要求1或2所述的方法,其特徵在於,所述從多個時鐘源中,選定第一時鐘 源包括: 按照先掃描獨佔時鐘源後掃描共享時鐘源的順序:統計時鐘源i的狀態標識,鍾源i的 空閒權值=未被使用狀態標識的數量*第三數值+未被共享狀態標識的數量*第四數值, 其中,所述第三數值和所述第四數值均大於l,i = 1、2……M,M為大於1的整數,表示系統 中CPU時鐘源的數量; 從所述Μ個時鐘源中,選擇空閒權值最大的時鐘源為當前負載最小的第一時鐘源。
4. 根據權利要求3所述的方法,其特徵在於,在所述由所述當前負載非最大的CPU核、 以所述第一時鐘為中斷定時器,執行第一中斷之前,還包括: 將所述當前負載最小的CPU核註冊的非第一中斷過程的其它任務遷移到其它CPU核 上。
5. 根據權利要求4所述的方法,其特徵在於,所述從多個CPU核中,確定當前負載非最 大的CPU核,從多個時鐘源中,選定當前負載非最大的第一時鐘源包括 : 以預設周期,確定當前負載最小的CPU核,從多個時鐘源中,選定當前負載最小的第一 時鐘源。
6. -種中斷執行裝置,其特徵在於,包括: (PU確定模塊,用於從多個CPU核中,確定當前負載非最大的CPU核; 時鐘選定模塊,用於從多個時鐘源中,選定當前負載非最大的第一時鐘源; 中斷執行模塊,用於由所述當前負載非最大的CPU核、以所述第一時鐘為中斷定時器, 執行第一中斷。
7. 根據權利要求6所述的裝置,其特徵在於,所述CPU確定模塊包括: 第一計算單元,用於按照先掃描執行中斷任務的CPU核,後掃描執行非中斷任務的CPU 核的順序:統計CPU核i上的中斷源許可標識和任務節點,CPU核i的被佔用權值=中斷源 許可標識的數量*第一數值+任務節點的數量*第二數值,其中,所述第一數值和所述第二 數值均大於1,i = 1、2……N,N為大於1的整數,表示系統中CPU核的數量; 第一確定單元,用於確定所述N個CPU核中、被佔用權值最小的CPU核為當前負載最小 的CPU核。
8. 根據權利要求6或7所述的裝置,其特徵在於,所述時鐘選定模塊包括: 第二計算單元,用於按照先掃描獨佔時鐘源後掃描共享時鐘源的順序:統計時鐘源i 的狀態標識,鍾源i的空閒權值=未被使用狀態標識的數量*第三數值+未被共享狀態標 識的數量*第四數值,其中,所述第三數值和所述第四數值均大於l,i = 1、2……M,M為大 於1的整數,表示系統中CPU時鐘源的數量; 第二確定單元,用於從所述Μ個時鐘源中,選擇空閒權值最大的時鐘源為當前負載最 小的第一時鐘源。
9. 根據權利要求8所述的裝置,其特徵在於,還包括: 遷移模塊,用於在所述由所述當前負載非最大的CPU核、以所述第一時鐘為中斷定時 器,執行第一中斷之前,將所述當前負載最小的CPU核註冊的非第一中斷過程的其它任務 遷移到其它CPU核上。
10. 根據權利要求8所述的裝置,其特徵在於,所述CPU確定模塊,用於從多個CPU核 中,確定當前負載非最大的CPU核包括: 所述CPU確定模塊具體用於,以預設周期、從多個CPU核中,確定當前負載最小的CPU 核; 所述時鐘選定模塊,用於從多個時鐘源中,選定當前負載非最大的第一時鐘源包括: 所述時鐘選定模塊具體用於,以預設周期、從多個時鐘源中,選定當前負載最小的第一 時鐘源。
【文檔編號】G06F15/16GK104216779SQ201410508608
【公開日】2014年12月17日 申請日期:2014年9月28日 優先權日:2014年9月28日
【發明者】闞宏偉 申請人:北京經緯恆潤科技有限公司