[發明專利]指針分析方法及裝置在審
| 申請號: | 201310589292.2 | 申請日: | 2013-11-20 |
| 公開(公告)號: | CN104657257A | 公開(公告)日: | 2015-05-27 |
| 發明(設計)人: | 陳聰明;霍瑋;李豐;馮曉兵 | 申請(專利權)人: | 華為技術有限公司;中國科學院計算技術研究所 |
| 主分類號: | G06F11/36 | 分類號: | G06F11/36 |
| 代理公司: | 北京同立鈞成知識產權代理有限公司 11205 | 代理人: | 劉芳 |
| 地址: | 518129 廣東*** | 國省代碼: | 廣東;44 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 指針 分析 方法 裝置 | ||
技術領域
本發明實施例涉及計算機技術,尤其涉及一種指針分析方法及裝置。
背景技術
隨著計算機的普及,計算機軟件越來越復雜,其中使用的程序語句類型也更加靈活和豐富,以通常使用的C和C++程序語句為例進行說明,程序語句中指針的使用愈加廣泛。指針語句的使用是決定程序被編譯優化后運行性能優良的重要因素,因此,對于程序的編譯優化基于對程序語句中指針的分析。
對指針的分析一般指對該指針變量性質和指向集的分析。目前,在進行指針分析時,通常使用精度較高的流敏感上下文敏感(Flow-Sensitive?and?Context-Sensitive,簡稱為:FSCS)的分析方法,但直接使用該類方法不適用于多線程程序。一種直觀的針對多線程程序的指針分析,可以通過對全局變量進行指針分析獲取全局共享量對程序的并行區域內不同線程間的交互影響;具體地,分析全局共享量在各程序點的指針指向集、線程間交互指向集和當前程序語句執行結束后在指向圖中新增的指向邊。
現有技術中對多線程程序的語句進行的指針分析方法,只考慮到全局共享量對程序的并行區域內線程間的交互影響,因此,進行指針分析的共享量僅局限于程序中的全局共享量,使得指針分析的對象,即程序中的共享量范圍縮小,降低了指針分析的精度。
發明內容
本發明實施例提供一種指針分析方法及裝置,以解決現有技術中對多線程程序的指針分析僅局限于程序中的全局共享量,分析結果不全面的問題。
第一方面,本發明實施例提供一種指針分析方法,包括:
讀取待分析的多線程程序中的語句信息;
根據所述程序的語句信息對所述程序進行指針分析,獲得所述程序的共享信息,所述共享信息包括共享量、指針指向集和訪存行為,其中,共享量包括全局共享量和局部共享量;
根據所述程序的共享信息對所述共享量進行補償分析。
在第一方面的第一種可能實現方式中,所述根據所述程序的語句信息對所述程序進行指針分析,獲得所述程序的共享信息,包括:
根據全局共享判斷規則對所述程序進行分析,獲得所述程序中的全局共享量;
對所述程序中每個線程進行指針分析,獲得每個線程中的指針指向集、局部共享量和與所述共享量對應的訪存行為。
根據第一方面的第一種可能的實現方式,在第二種可能的實現方式中,所述全局共享判斷規則包括:
若變量可以被程序中至少兩個線程同時訪問,則所述變量為全局共享量。
根據第一方面的第一種或第二種可能的實現方式,在第三種可能的實現方式中,所述對所述程序中每個線程進行指針分析,獲得每個線程中的指針指向集、局部共享量和與所述共享量對應的訪存行為,包括:
對所述程序中每個線程進行指針分析,獲得每個線程中的指針指向集;
根據所述全局共享量、所述指針指向集和局部共享判斷規則對每個線程進行分析,獲得每個線程中的局部共享量;
根據所述全局共享量、所述局部共享量和所述指針指向集對每個線程進行分析,獲得與所述共享量對應的訪存行為。
根據第一方面的第三種可能的實現方式,在第四種可能的實現方式中,所述局部共享判斷規則包括:
若給定線程中變量可以作為所述程序中某個線程的入口參數而被其他線程訪問,則所述變量為局部共享量;或者,
若給定線程中變量可以通過被全局共享量間接引用的方式而被其他線程訪問,則所述變量為局部共享量;或者,
若給定線程中變量可以通過全局共享量的賦值,使得所述變量的指向集包含所述全局共享量,則所述變量為局部共享量。
根據第一方面的第三種或第四種可能的實現方式,在第五種可能的實現方式中,所述根據所述全局共享量、所述指針指向集和局部共享判斷規則對每個線程進行分析,獲得每個線程中的局部共享量,包括:
根據所述全局共享量、所述指針指向集和局部共享識別規則,獲取每個線程中可能逃逸的局部變量;
根據所述可能逃逸的局部變量和共享傳播規則,確定從所述可能逃逸的局部變量中獲取的可能被其他線程使用的局部變量為局部共享量。
根據第一方面、第一方面的第一種到第五種可能的實現方式中任一種,在第六種可能的實現方式中,所述根據所述程序的共享信息對每個共享量分別進行補償分析之前,還包括:
根據所述程序的語句信息生成并行控制流圖;
根據所述并行控制流圖和所述共享信息生成針對所述程序的共享量訪存圖SAG;
所述根據所述程序的共享信息對所述共享量進行補償分析,包括:
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于華為技術有限公司;中國科學院計算技術研究所;,未經華為技術有限公司;中國科學院計算技術研究所;許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201310589292.2/2.html,轉載請聲明來源鉆瓜專利網。





