[發明專利]一種檢測應用程序執行過程中冗余零的方法有效
| 申請號: | 202110085463.2 | 申請日: | 2021-01-22 |
| 公開(公告)號: | CN112765027B | 公開(公告)日: | 2022-05-17 |
| 發明(設計)人: | 楊海龍;游心;欒鐘治;錢德沛 | 申請(專利權)人: | 北京航空航天大學 |
| 主分類號: | G06F11/36 | 分類號: | G06F11/36 |
| 代理公司: | 北京科迪生專利代理有限責任公司 11251 | 代理人: | 顧煒;安麗 |
| 地址: | 100191*** | 國省代碼: | 北京;11 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 檢測 應用程序 執行 過程 冗余 方法 | ||
1.一種檢測應用程序執行過程中冗余零的方法,其特征在于,包括以下步驟:
步驟1:用戶在CPU集群上指定四種執行模式中的一種來啟動一個CPU應用,所述四種執行模式包括:代碼模式、數據對象模式、緩存級別模式以及內存頁級別模式;其中代碼模式會以代碼為中心對應用執行過程進行分析,從而得到指令級別的冗余零信息;數據對象模式會以應用執行過程中訪問的數據對象為中心進行分析,從而得到各個數據對象的冗余零信息;而緩存級別模式以及內存頁級別模式則分別對訪問的緩存行、內存頁級別進行分析,從而得到體系結構層面的冗余零信息;
步驟2:在應用運行時,對應用進行動態插樁,在每個內存讀操作前都插入分析函數,并將該內存讀操作的指令ins以及目標內存地址M作為參數傳入該分析函數中;
步驟3:判斷應用程序是否執行完,如果未執行完,則繼續判斷該操作是否是內存讀操作,如果是,則進入步驟4,否則回到步驟3;如果已經執行完,則進入步驟13;
步驟4:如果為代碼模式,則進入步驟5;如果為數據對象模式,則進入步驟8;如果為緩存級別模式,則進入步驟11;如果為內存頁級別模式,則進入步驟12;
步驟5:獲取該內存讀操作的調用上下文C,內存讀操作目標內存地址M中存儲的值V,如果該內存讀操作指令ins為整數指令,則進入步驟6,否則進入步驟7;
步驟6:將值V轉化為二進制表示的冗余映射redmap:b1b2...bn,記錄其中冗余零的個數Nzero,并將該冗余映射合并到該指令ins在該調用上下文C下的整數冗余映射RINT(ins,C)中,最后返回步驟2;
步驟7:按照IEEE 754浮點格式將值V轉化為尾數和指數兩組冗余映射b1b2...bk和bk+1bk+2...bn,記錄其中冗余零的個數Nzero,并將兩組冗余映射分別合并到該指令ins在該調用上下文C下的浮點冗余映射RFP(ins,C)的兩個分量Rman(ins,C)和Rexp(ins,C)中,最后返回步驟2;
步驟8:獲取該內存讀操作目標內存地址所在的數據對象D,內存讀操作目標內存地址M中存儲的值V,且如果數據對象D不是堆棧上的數據對象,則返回步驟2,否則僅在該內存讀操作指令ins為整數指令時進入步驟9,否則,如果該內存讀操作指令ins為非整數指令時進入步驟10;
步驟9:將值V轉化為二進制表示的冗余映射redmap:b1b2...bn,記錄其中冗余零的個數Nzero,并將該冗余映射合并到該內存地址M在該數據對象D下的整數冗余映射RINT(M,D)中,最后返回步驟2;
步驟10:判斷值V是否為0,并將結果合并到該內存地址M在該數據對象D下的浮點冗余映射RFP(M,D)中以及冗余零個數Nzero,最后返回步驟2;
步驟11:獲取該內存讀操作目標地址M的緩存編號Kcache(M),其存儲的值V,將其轉化為二進制表示的冗余映射b1b2...bn,以及其對應的冗余零的個數Nzero,并將b1b2...bn以及Nzero合并到Kcache(M)所對應的記錄,返回步驟2;
步驟12:獲取該內存讀操作目標地址M的內存頁編號Kpage(M),其存儲的值V,將其轉化為二進制表示的冗余映射b1b2...bn,以及其對應的冗余零的個數Nzero,并將b1b2...bn以及Nzero合并到Kpage(M)所對應的記錄,返回步驟2;
步驟13:統計并生成最終冗余零檢測報告。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于北京航空航天大學,未經北京航空航天大學許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/202110085463.2/1.html,轉載請聲明來源鉆瓜專利網。





