• 
    <ul id="o6k0g"></ul>
    <ul id="o6k0g"></ul>

    一種基于自旋鎖的多核處理器共享數據訪問設計方法技術

    技術編號:37956890 閱讀:16 留言:0更新日期:2023-06-30 09:29
    本發明專利技術涉及基于自旋鎖的多核處理器共享數據訪問設計方法。本發明專利技術設計了兩個4N位抗輻射加固原子鎖寄存器,可以實現兩個寄存器原子鎖,每個寄存器可以分為高2N位和低2N位兩個部分,其中低2N位保存正在申請該寄存器原子鎖的處理器核的識別號COREn_ID,高2N位保存當前獲取該寄存器原子鎖的處理器核的識別號LOCKn_ID。本發明專利技術可以減少多核任務調度中訪問共享數據的原子操作對軟件算法的依賴性,進而減少由于針對原子操作軟件算法的惡意攻擊而造成的線程執行錯誤,是一種高安全、高可靠的多核調度原子鎖實現方法。度原子鎖實現方法。度原子鎖實現方法。

    【技術實現步驟摘要】
    一種基于自旋鎖的多核處理器共享數據訪問設計方法


    [0001]本專利技術屬于線程同步領域,涉及到一種基于高安全高可靠自旋鎖的多核處理器共享數據訪問設計方法。

    技術介紹

    [0002]常見的通用多核處理器系統(比如桌面級、服務器級、移動端高性能多核處理器等)根據應用場景對高性能、高實時性調度的需求,在需要訪問共享數據時采用查詢獲取原子鎖的方式來對系統共享資源進行保護,通過處理器執行原子鎖操作,能夠在DDR等外部存儲器中設置原子鎖,對某些多核共享資源的訪問進行加、解鎖保護操作,避免其他核或其他線程同時對共享數據進行訪問,造成訪問沖突。
    [0003]針對宇航領域應用場景研制的多核處理器,從高可靠設計考慮,存儲在DDR等外部存儲器中的原子鎖數據可能會受到宇宙環境輻射影響;從高安全設計考慮,現有操作系統多核調度主要依賴于軟件算法,可能受到針對原子操作的惡意攻擊而造成線程執行出錯,甚至導致多核系統崩潰。為了保證任務的可靠性,更安全的調度方法是根據應用程序需求實現相對固定的調度,減少對軟件算法的依賴。

    技術實現思路

    [0004]本專利技術的技術解決問題:針對航天領域中多核處理器的高可靠、高安全的應用要求,提出了一種滿足固定調度需求的寄存器原子鎖操作,是一種高安全、高可靠的多核調度原子鎖實現方法。
    [0005]本專利技術的技術方案是:一種基于自旋鎖的多核處理器共享數據訪問設計方法,通過向多核處理器提供寄存器原子鎖的方式,實現線程對共享數據訪問的調度;所述的寄存器原子鎖由4N位的原子鎖寄存器實現;N為處理器的核數;
    [0006]將原子鎖寄存器分為高2N位和低2N位兩個部分;
    [0007]設置原子鎖寄存器的低2N位為COREn_ID區域,保存正在申請該寄存器原子鎖的處理器核的識別號COREn_ID,其中COREn_ID區域中的低N位代表COREn_ID的值,高N位COREn_ID_WEN分別為低N位對應位的寫使能;
    [0008]設置原子鎖寄存器的高2N位為LOCKn_ID區域,保存當前嘗試獲取該寄存器原子鎖的處理器核的識別號LOCKn_ID,其中LOCKn_ID區域中的低N位代表LOCKn_ID的值,高N位LOCKn_ID_WEN分別為低N位對應位的寫使能;
    [0009]各個處理器核都有相同的機會獲取到寄存器原子鎖;
    [0010]在同一時刻,同一個寄存器原子鎖最多只能被一個處理器核所獲取。
    [0011]優選的,原子鎖寄存器的位數根據處理器的核數確定,每個原子鎖寄存器實現一個寄存器原子鎖,由單個4N位的原子鎖寄存器實現的寄存器原子鎖適用于最多N個處理器核對共享地址的訪問調度。
    [0012]優選的,所述原子鎖寄存器中保存當前嘗試獲取該寄存器原子鎖的處理器核識別
    號的LOCKn_ID區域,包括:
    [0013]該區域低N位LOCKn_ID只有在其對應使能位有效時才能夠寫入,對應使能位無效時LOCKn_ID只可讀,LOCKn_ID的值為0時代表寄存器原子鎖處于釋放狀態,LOCKn_ID的值不為0時,該值代表當前嘗試獲取該寄存器原子鎖的處理器核的識別號;
    [0014]該區域高N位LOCKn_ID_WEN為LOCKn_ID的使能位,分別對應低N位的寫使能,使能位為高時有效,使能位為低時無效,LOCKn_ID_WEN寫入后硬件會自動清零。
    [0015]優選的,所述原子鎖寄存器中保存正在申請該寄存器原子鎖的處理器核的識別號COREn_ID區域,包括:
    [0016]該區域低N位COREn_ID只有在其對應使能位有效時才能夠寫入,對應使能位無效時COREn_ID只可讀,COREn_ID保存當前正在申請該寄存器原子鎖的各個處理器核的識別號;
    [0017]該區域高N位COREn_ID_WEN為COREn_ID的使能位,分別對應低N位的寫使能,使能位為高時有效,使能位為低時無效,COREn_ID_WEN寫入后硬件會自動清零。
    [0018]優選的,處理器核獲取寄存器原子鎖包括:
    [0019]處理器核請求寄存器原子鎖,讀取該寄存器原子鎖對應的原子鎖寄存器中LOCKn_ID的值,判斷原子鎖寄存器是否處于釋放狀態,若處于,向該原子鎖寄存器中的COREn_ID區域寫入本處理器核的識別號,否則退出請求;
    [0020]從原子鎖寄存器中的COREn_ID區域讀出當前正在請求該原子鎖的處理器核識別號,并根據讀出的值進行優先級判斷,當本處理器核具有最高優先級時,向原子鎖寄存器的LOCKn_ID中寫入本處理器核的識別號,否則,清除COREn_ID區域中本處理器核的識別號;
    [0021]判斷原子鎖寄存器的LOCKn_ID中的處理器核是否唯一,若唯一,則本處理器核成功獲取寄存器原子鎖,否則清除清除原子鎖寄存器中LOCKn_ID區域和COREn_ID區域中本處理器核的識別號,釋放該寄存器原子鎖。
    [0022]優選的,各個處理器核請求寄存器原子鎖的優先級判斷方式為輪詢方式,在一次優先級判斷中,優先授權給與上次拿到該原子鎖的處理器核緊鄰的下一個處理器核,如果優先級授予到的處理器核輪空則優先權順延到下一個緊鄰的處理器核。
    [0023]優選的,通過設置原子鎖歷史寄存器保存上一次獲取寄存器原子鎖的處理核的識別號,用于優先級判斷。
    [0024]優選的,對于多核處理器的操作系統,通過全局變量鎖和寄存器原子鎖相結合來實現不限量原子鎖,以滿足操作系統中不同應用場景的調度需求。
    [0025]優選的,多核處理器的操作系統,用全局變量鎖來保存線程間調度所用的鎖,根據應用的數量需求設置保存在不同地址的全局變量鎖,以此來實現滿足應用需求的原子鎖數量。
    [0026]優選的,處理器核在對全局變量鎖執行訪問操作的前后,分別進行寄存器原子鎖的加鎖和解鎖來對訪問操作進行保護,處理器核對全局變量鎖的訪問操作包括:
    [0027]讀全局變量得到當前全局變量鎖的值;
    [0028]比較當前全局變量鎖的值與預期值是否一樣,判斷該鎖是否處于釋放狀態;
    [0029]如果該全局變量鎖未處于釋放狀態,則請求失敗;
    [0030]如果該全局變量鎖處于釋放狀態,則處理器核拿到該鎖,并向該全局變量寫入新
    的值以表明鎖被占用。
    [0031]優選的,進行寄存器原子鎖的加鎖操作包括:請求寄存器原子鎖,若判斷到原子鎖寄存器中LOCKn_ID的值為本處理器核識別號,則不會判定為請求失敗,并在進行原子鎖嵌套標記后繼續執行請求操作,確保不會出現因持有寄存器原子鎖的處理器核被中斷打斷后,再次請求同一個寄存器原子鎖而導致的死鎖情況。
    [0032]優選的,所述方法還包括:
    [0033]處理器核在寄存器原子鎖保護下執行全局變量鎖的訪問操作完成之后,進行寄存器原子鎖的解鎖操作包括:
    [0034]判斷是否有原子鎖嵌套標記以及請求全局變量鎖是否成功;
    [0035]如果請求全局變量鎖沒有成功,則釋放寄存器原子鎖,并重新請求寄存器原子鎖和全局變量鎖;<本文檔來自技高網
    ...

    【技術保護點】

    【技術特征摘要】
    1.一種基于自旋鎖的多核處理器共享數據訪問設計方法,其特征在于:通過向多核處理器提供寄存器原子鎖的方式,實現線程對共享數據訪問的調度;所述的寄存器原子鎖由4N位的原子鎖寄存器實現;N為處理器的核數;將原子鎖寄存器分為高2N位和低2N位兩個部分;設置原子鎖寄存器的低2N位為COREn_ID區域,保存正在申請該寄存器原子鎖的處理器核的識別號COREn_ID,其中COREn_ID區域中的低N位代表COREn_ID的值,高N位COREn_ID_WEN分別為低N位對應位的寫使能;設置原子鎖寄存器的高2N位為LOCKn_ID區域,保存當前嘗試獲取該寄存器原子鎖的處理器核的識別號LOCKn_ID,其中LOCKn_ID區域中的低N位代表LOCKn_ID的值,高N位LOCKn_ID_WEN分別為低N位對應位的寫使能;各個處理器核都有相同的機會獲取到寄存器原子鎖;在同一時刻,同一個寄存器原子鎖最多只能被一個處理器核所獲取。2.根據權利要求1所述的方法,其特征在于:原子鎖寄存器的位數根據處理器的核數確定,每個原子鎖寄存器實現一個寄存器原子鎖,由單個4N位的原子鎖寄存器實現的寄存器原子鎖適用于最多N個處理器核對共享地址的訪問調度。3.根據權利要求1所述的方法,其特征在于:所述原子鎖寄存器中保存當前嘗試獲取該寄存器原子鎖的處理器核識別號的LOCKn_ID區域,包括:該區域低N位LOCKn_ID只有在其對應使能位有效時才能夠寫入,對應使能位無效時LOCKn_ID只可讀,LOCKn_ID的值為0時代表寄存器原子鎖處于釋放狀態,LOCKn_ID的值不為0時,該值代表當前嘗試獲取該寄存器原子鎖的處理器核的識別號;該區域高N位LOCKn_ID_WEN為LOCKn_ID的使能位,分別對應低N位的寫使能,使能位為高時有效,使能位為低時無效,LOCKn_ID_WEN寫入后會自動清零。4.根據權利要求1所述的方法,其特征在于:所述原子鎖寄存器中保存正在申請該寄存器原子鎖的處理器核的識別號COREn_ID區域,包括:該區域低N位COREn_ID只有在其對應使能位有效時才能夠寫入,對應使能位無效時COREn_ID只可讀,COREn_ID保存當前正在申請該寄存器原子鎖的各個處理器核的識別號;該區域高N位COREn_ID_WEN為COREn_ID的使能位,分別對應低N位的寫使能,使能位為高時有效,使能位為低時無效,COREn_ID_WEN寫入后會自動清零。5.根據權利要求1所述的方法,其特征在于:處理器核獲取寄存器原子鎖包括:處理器核請求寄存器原子鎖,讀取該寄存器原子鎖對應的原子鎖寄存器中LOCKn_ID的值,判斷原子鎖寄存器是否處于釋放狀態,若處于,向該原子鎖寄存器中的COREn_ID區域寫入本處理器核的識別號,否則退出請求;從原子鎖寄存器中的COREn_ID區域讀出當前正在請求該原子鎖的處理器核識別號,并根據讀出的值進行優先級判斷,當本處理器核具有最高優先級時,向原子鎖寄存器的LOCKn_ID中寫入本處理器核的識別號,否則,清除COREn_ID區域中本處理器核的識別號;判斷原子鎖寄存器的LOCKn_ID中的處理器核是否唯一,若唯一,則本處理器核成功獲取寄存器原子鎖,否則清除清除原子鎖寄存器中LOCKn_ID區域和COREn_ID區域中本處理器核的識別號,釋放該寄存器原子鎖。6.根據權利要求5所述的方法,其特征在于:各個處理器核請求寄存器原子鎖的優先級
    判斷方式為輪詢方式,在一次優先級判斷中,優先授權給與上次拿到該原子鎖的處理器核緊鄰的下一個處理器核,如果優先級授予到的處理器核輪空則優先權順延到下一個緊鄰的處理器核。7.根據權利要求5或6所述的方法,其特征在于:通過設置原子鎖...

    【專利技術屬性】
    技術研發人員:陳雷王瀟瀟莊偉張世遠侯國偉楊雪郭嘉郝帥李欣趙晉禹瑩張麒
    申請(專利權)人:北京微電子技術研究所
    類型:發明
    國別省市:

    網友詢問留言 已有0條評論
    • 還沒有人留言評論。發表了對其他瀏覽者有用的留言會獲得科技券。

    1
    主站蜘蛛池模板: 蜜臀亚洲AV无码精品国产午夜.| 午夜麻豆国产精品无码| 熟妇人妻无码xxx视频| 久久AV无码精品人妻糸列| 国产成人无码AV片在线观看| 日韩综合无码一区二区| 亚洲无码一区二区三区| 中文有无人妻vs无码人妻激烈 | 无码午夜人妻一区二区三区不卡视频| 亚欧免费无码aⅴ在线观看| 亚洲成a∨人片在无码2023| 在线观看片免费人成视频无码 | yy111111少妇无码影院| 人妻无码视频一区二区三区| 亚洲一区精品无码| 国产裸模视频免费区无码| 人妻少妇精品无码专区二区| 国产自无码视频在线观看| 亚洲AV无码一区二区乱子仑| 无码夜色一区二区三区| 亚洲成无码人在线观看| 亚洲午夜无码久久| 亚洲va中文字幕无码久久不卡 | 少妇人妻偷人精品无码AV| 亚洲国产精品无码一线岛国| 精品无码国产一区二区三区麻豆| 精品多人p群无码| 亚洲AV无码国产精品色午友在线| 亚洲AV无码第一区二区三区 | 国产成人精品无码一区二区| 精品久久久久久无码人妻中文字幕| 色综合久久久无码网中文| 亚洲中文久久精品无码| 国产综合无码一区二区辣椒| 中出人妻中文字幕无码| 亚洲va无码专区国产乱码| 亚洲av永久无码精品表情包| 无码AV中文一区二区三区| 亚洲av无码不卡| 少妇人妻无码专区视频| 亚洲av专区无码观看精品天堂|