[發明專利]一種基于弱內存一致性的多線程確定性執行方法有效
| 申請號: | 201910320893.0 | 申請日: | 2019-04-21 |
| 公開(公告)號: | CN110083445B | 公開(公告)日: | 2023-04-25 |
| 發明(設計)人: | 王開宇;季振洲;周一豪;吳倩倩;張源悍 | 申請(專利權)人: | 哈爾濱工業大學 |
| 主分類號: | G06F9/48 | 分類號: | G06F9/48;G06F9/52 |
| 代理公司: | 北京匯捷知識產權代理事務所(普通合伙) 11531 | 代理人: | 馬金華 |
| 地址: | 150006 黑龍*** | 國省代碼: | 黑龍江;23 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 基于 內存 一致性 多線程 確定性 執行 方法 | ||
1.一種基于弱內存一致性的多線程確定性執行方法,其特征在于:采用弱內存一致性模型,在保證多線程確定性執行的基礎上,對線程實行內存隔離,延后線程向內存提交操作;
串行階段并行化模塊,用于提升串行階段線程并行度,讓獲取非互斥鎖資源兩組線程可以在串行階段并行執行;
性能指導標記模塊,用于通過提供一個性能指導標記,標記長并行距離的線程,在確定的位置開始,跳過指定個數的串行階段。
2.根據權利要求1所述的基于弱內存一致性的多線程確定性執行方法,其特征在于,所述弱內存一致性模型,
該模型負責隔離線程,保證線程順利執行并行、串行階段,所述方法包括如下步驟;
步驟1:在并行階段,將線程對內存的提交存儲到各個線程的棧內存;
步驟2:線程在并行階段并行執行;
步驟3:將線程向內存提交的操作推遲到同步點;
步驟4:在串行階段,線程按照事先確定的順序依次向內存提交修改;
步驟5:將內存備份提交給各個線程,為下次執行做準備。
3.根據權利要求1所述的基于弱內存一致性的多線程確定性執行方法,其特征在于,串行階段并行化模塊,用于為非互斥關系線程在串行階段并行運行提供環境;
通過將申請獲取同一個資源鎖的線程認定為具有互斥關系的線程,根據線程間的關系,為具有非互斥關系的線程劃分到一個線程組;
對于每一個互斥鎖,都設置一個對應的互斥鎖隊列;線程在并行階段執行到同步操作,等待進入串行階段時,確定性執行系統將其加入到對應隊列的隊尾位置;對于同步條件的嵌套規定,若一個線程申請本線程組之外的鎖資源,該線程就會被暫停執行,線程組內還未輪到執行的線程也將不會繼續執行,直到其他所有線程組內的線程均執行完同步操作或者同樣遇到互斥鎖嵌套的情況;此時,各個線程組按照確定的順序依次將線程組共享內存提交到全局共享內存,然后剩余的線程嚴格按照串行的方式執行同步操作,并且其中對共享內存的讀操作也不再做緩沖,而是直接作用在全局共享內存。
4.根據權利要求1所述的基于弱內存一致性的多線程確定性執行方法,其特征在于,性能指導標記模塊,該模塊定義一個性能指導標記Bypass函數,能夠指定一個線程需要跳過幾個串行階段;并行階段確定性執行系統遇到Bypass函數時,先獲取內部鎖,保證執行的原子性,然后將該線程放入一個Bypass隊列中,減少后續串行階段需要等待的線程數;再將該線程設置為Bypass狀態,并在線程實體中設置一個Bypass倒數計數器;當確定性執行系統將要從并行階段切換到串行階段時,需要維護Bypass隊列;首先依次檢查Bypass隊列中的線程,將Bypass倒數計數器的值減1;然后檢測其Bypass倒數計數器是否為零,若為零,則該線程需要加入當前即將要進入的串行階段,將該線程移出Bypass隊列,并且清除線程的Bypass狀態,增加串行階段等待線程數,最后等待該線程執行到同步操作;否則,該線程不需要加入當前即將要進入的串行階段,則該線程繼續并行執行。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于哈爾濱工業大學,未經哈爾濱工業大學許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201910320893.0/1.html,轉載請聲明來源鉆瓜專利網。





